home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / usr.bin / groff / troff / TODO < prev    next >
Encoding:
Text File  |  1991-04-30  |  4.3 KB  |  122 lines

  1. Tracing. This is a pain to implement because requests are responsible
  2. for reading their own arguments.
  3.  
  4. Possibly implement -s option (stop every N pages). This functionality
  5. would be more appropriate in a postprocessor.
  6.  
  7. Make it possible to have multilingual documents, by having a ``current
  8. language'' with which hyphenation information (the pattern trie and
  9. exception dictionary) is associated; the current language should be
  10. associated with the environment.  Get some pattern tries for other
  11. languages (assuming ISO Latin-1).
  12.  
  13. Line breaking should be smarter.  In particular, it should be possible
  14. to shrink spaces.  Also avoid having a line that's been shrunk a lot
  15. next to a line that's been stretched a lot.  The difficulty is to
  16. design a mechanism that allows the user complete control over the
  17. decision of where to break the line.
  18.  
  19. Provide a mechanism to control the shape of the rag in non-justified
  20. text.
  21.  
  22. Add a discretionary break escape sequence. \B'...'...'...' like TeX.
  23.  
  24. Think about kerning between characters and spaces. (Need to implement
  25. get_breakpoints and split methods for kern_pair_node class.)
  26.  
  27. In troff, if .L > 1 when a diversion is reread in no-fill mode, then
  28. extra line-spacing is added on. Groff at the moment treats line-spacing
  29. like vertical spacing and doesn't do this. 
  30.  
  31. Suppose \(ch comes from a special font S, and that the current font is
  32. R. Suppose that R contains a hyphen character and that S does not.
  33. Suppose that the current font is R. Suppose that \(ch is in a word
  34. and has a non-zero hyphen-type. Then we ought to be able to hyphenate,
  35. but we won't be able to because we will look for the hyphen only in
  36. font S and not in font R.
  37.  
  38. Variant of tm which doesn't write a newline.
  39.  
  40. Perhaps the current input level should be accessible in a number register.
  41.  
  42. Should \w deal with a newline like \X?
  43.  
  44. Have another look at uses of token::delimiter.  Perhaps we need to
  45. distinguish the case where we want to see if a token could start a
  46. number, from the case where we want to see if it could occur somewhere
  47. in a number expression.
  48.  
  49. Provide a facility like copy thru in pic.
  50.  
  51. Fancier implementation of font families which doesn't group fonts into
  52. families purely on the basis of their names.
  53.  
  54. In the DESC file make the number of fonts optional if they are all on
  55. one line.
  56.  
  57. Number register to give the diversion level.
  58.  
  59. Time various alternative implementations of scale (both in font.c and
  60. number.c). On a sparc it's faster to always do it in floating point.
  61.  
  62. Devise a more compact representation for the hyphenation patterns trie.
  63.  
  64. Have a per-environment parameter to increase letter-spacing.
  65.  
  66. Number register to return character height.
  67.  
  68. Number register to return character slant.
  69.  
  70. Request to set character height.
  71.  
  72. Request to set character slant.
  73.  
  74. Provide some way to upcase or downcase strings.
  75.  
  76. Support non-uniformly scaleable fonts. Perhaps associate a suffix with
  77. a particular range of sizes.  eg
  78.   sizesuffix .display 14-512
  79. Then is you ask for R at pointsize 16, groff will first look for
  80. R.display and then R.  Probably necessary to be able to specify a
  81. separate unitwidth for each sizesuffix (eg. for X).
  82.  
  83. Request to copy an environment into the current environment.
  84.  
  85. Variant of `.it' for which a line interrupted with \c counts as one
  86. input line.
  87.  
  88. Make it possible to suppress hyphenation on a word-by-word basis.
  89. (Perhaps store hyphenation flags in tfont.)
  90.  
  91. Possibly allow multiple simultaneous input line traps.
  92.  
  93. Paddable, unbreakable space escape sequence.
  94.  
  95. Unpaddable, breakable space escape sequence.
  96.  
  97. Support hanging punctuation.
  98.  
  99. In justified text, if the last line of a paragraph is only a little
  100. bit short it might be desirable to justify the line.  Allow the user
  101. control over this.
  102.  
  103. Have a blank line macro like the end macro.  When a blank line macro
  104. has been set, then a blank line causes the blank line macro to be
  105. called rather than doing the equivalent of .sp.
  106.  
  107. The pm request could print where the macro was defined.  Also could
  108. optionally print the contents of a macro.
  109.  
  110. Provide some way to round numbers to multiples of the current
  111. horizontal or vertical resolution.
  112.  
  113. Better string-processing support (substring, length, search).
  114.  
  115. Generalized ligatures.
  116.  
  117. Provide some way for a macro to tell whether it was called with `'' or
  118. `.'.  This would be useful for implementing a tracing macro packge.
  119.  
  120. Request to remove an environment. (Need to check it's not on the
  121. environment stack).
  122.