]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/groff/src/roff/troff/TODO
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / groff / src / roff / troff / TODO
1 A line prefix request to make e.g. French quotation possible:
2
3   He said: >> blablablabla
4   >> blablabla blabla  bla
5   >> blabla blabla bla bla
6   >> bla bla bla blablabla
7   >> blabla. <<
8
9 Give a more helpful error message when the indent is set to a value
10 greater than the line-length.
11
12 Tracing. This is a pain to implement because requests are responsible
13 for reading their own arguments.
14
15 Possibly implement -s option (stop every N pages). This functionality
16 would be more appropriate in a postprocessor.
17
18 Line breaking should be smarter.  In particular, it should be possible
19 to shrink spaces.  Also avoid having a line that's been shrunk a lot
20 next to a line that's been stretched a lot.  The difficulty is to
21 design a mechanism that allows the user complete control over the
22 decision of where to break the line.
23
24 Provide a mechanism to control the shape of the rag in non-justified
25 text.
26
27 Add a discretionary break escape sequence. \='...'...'...' like TeX.
28
29 Think about kerning between characters and spaces. (Need to implement
30 get_breakpoints and split methods for kern_pair_node class.)
31
32 In troff, if .L > 1 when a diversion is reread in no-fill mode, then
33 extra line-spacing is added on. Groff at the moment treats line-spacing
34 like vertical spacing and doesn't do this. 
35
36 Suppose \(ch comes from a special font S, and that the current font is
37 R. Suppose that R contains a hyphen character and that S does not.
38 Suppose that the current font is R. Suppose that \(ch is in a word
39 and has a non-zero hyphen-type. Then we ought to be able to hyphenate,
40 but we won't be able to because we will look for the hyphen only in
41 font S and not in font R.
42
43 Perhaps the current input level should be accessible in a number register.
44
45 Should \w deal with a newline like \X?
46
47 Have another look at uses of token::delimiter.  Perhaps we need to
48 distinguish the case where we want to see if a token could start a
49 number, from the case where we want to see if it could occur somewhere
50 in a number expression.
51
52 Provide a facility like copy thru in pic.
53
54 Fancier implementation of font families which doesn't group fonts into
55 families purely on the basis of their names.
56
57 In the DESC file make the number of fonts optional if they are all on
58 one line.
59
60 Number register to give the diversion level.
61
62 Time various alternative implementations of scale (both in font.c and
63 number.c). On a sparc it's faster to always do it in floating point.
64
65 Devise a more compact representation for the hyphenation patterns trie.
66
67 Have a per-environment parameter to increase letter-spacing.
68
69 Number register to return character height.
70
71 Number register to return character slant.
72
73 Request to set character height.
74
75 Request to set character slant.
76
77 Provide some way to upcase or downcase strings.
78
79 Support non-uniformly scalable fonts. Perhaps associate a suffix with
80 a particular range of sizes.  eg
81   sizesuffix .display 14-512
82 Then is you ask for R at pointsize 16, groff will first look for
83 R.display and then R.  Probably necessary to be able to specify a
84 separate unitwidth for each sizesuffix (eg. for X).
85
86 Make it possible to suppress hyphenation on a word-by-word basis.
87 (Perhaps store hyphenation flags in tfont.)
88
89 Possibly allow multiple simultaneous input line traps.
90
91 Unpaddable, breakable space escape sequence.
92
93 Support hanging punctuation.
94
95 In justified text, if the last line of a paragraph is only a little
96 bit short it might be desirable to justify the line.  Allow the user
97 control over this.
98
99 The pm request could print where the macro was defined.  Also could
100 optionally print the contents of a macro.
101
102 Provide some way to round numbers to multiples of the current
103 horizontal or vertical resolution.
104
105 Better string-processing support (search).
106
107 Generalized ligatures.
108
109 Provide some way for a macro to tell whether it was called with `'' or
110 `.'.  This would be useful for implementing a tracing macro package.
111
112 Request to remove an environment. (Maintain a count of the references
113 to the environment from the environment table, environment dictionary
114 or environment stack.)
115
116 Perhaps in the nr request a leading `-' should only be recognized as a
117 decrement when it's at the same input level as the request.
118
119 Don't ever change a charinfo.  Create new variants instead and chain
120 them together.
121
122 Unix troff appears to read the first character of a request name in
123 copy mode.  Should we do the same?
124
125 Number register giving name of end macro.
126
127 More thorough range checking.
128
129 Provide syntax for octal and hexadecimal numeric constants.  Perhaps
130 o#100 and x#7f as per Scheme.  Or perhaps PostScript 16#7f.  Ambiguity
131 between whether `c' is treated as digit or scaling indicator.