PageRenderTime 7ms CodeModel.GetById 2ms app.highlight 1ms RepoModel.GetById 2ms app.codeStats 0ms

/contrib/groff/src/roff/troff/TODO

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