Minor update of TODO.
[ttfautohint.git] / TODO
blobb599381b0127a8a1382e5ed681e70f0d39125b28
2 important improvements
3 ----------------------
5 add features to the GUI
6   -> direct control over `actions'
7   -> preview similar to ftgrid
9 handle OT features
10   -> use HarfBuzz?
12 control `gasp' table; Adam Twardoch suggest the following:
14   1. Calculate "gaspstem", i.e. the most common thickness of horizontal
15      stems (y direction distances) for lowercase Latin letters.
16   2. If gaspstem <= 0.03 * upm, apply gasp symmetric smoothing across the
17      entire range (rangeMaxPPEM 0xFFFF, value 15)
18   3. Else, calculate gaspthreshold as follows:
19        ceil(1.33 * upm / gaspstem) - 1
20   4. Apply no symmetric smoothing up to the gaspthreshold ppem (rangeMaxPPEM
21      gaspthreshold, value 7), and apply symmetric smoothing above.
23   In addition, ttfautohint should provide a commandline parameter that
24   allows the user to override the automatic logic.  If that parameter = 0,
25   then gasp value 15 should be applied across the entire range.  If the
26   parameter > 0, then up to that parameter value the gasp value 7 should be
27   applied, and gasp value 15 should be applied above.
29 create a separate blue zone class for `i' and `j':
30   . if the values differ more than a given threshold, handle them
31     separately
32   . otherwise, unify them with `f' and friends.
34 control the characters used for blue zones
35   -> non-latin scripts
37 user-defined blue zones?
38   -> old-style digits
40 control the width of blue zones
42 add control over character ranges which define a script; in particular, add
43   support for the PUA
45 handle normal and bold fonts differently; cf. Infinality patches;
46   this should help avoid filling of bowls (like in `e') for bold shapes.
48 control the minimum stem width
50 try to `embolden' fonts at small sizes to avoid drop-outs; cf. Infinality
51   patches
53 implement `x-height-snapping-exceptions'
55 improve `pre-hinting' by making the used PPEM value configurable
57 allow hinting of single glyphs, using a config file which holds the global
58   settings
60 better handling of `incomplete' fonts (this is, fonts which lack the minimum
61   set of glyphs necessary to determine the blue zones)
64 minor improvements
65 ------------------
67 reject fonts which are `hopeless' (for example, `Lipstick')
69 reduce memory consumption by using 16bit data types in large arrays if 32bit
70   are not necessary
72 correctly set `lowestRecPPEM' field in `head'
74 control dropout mode
76 apply hinting in x direction also?
77   -> warper: shifting with and without scaling
78   -> `standard' autofit hinting
80 add a config and/or command file for batch handling
82 warn against overwrite of output file?
84 reduce output size of option -p:
85   1. compare outline rendered at EM value with unhinted outline
86   2. pre-hint only if 1. differs more than given threshold (default 0.5%?)
88 make it possible to hint fonts which aren't alphabetic at all, for example,
89   icons; to do so, provide means to skip the global feature analysis
91 better control -i output
93 allow processing of multiple files by using globs as in the Midnight
94   Commander
96 allow composite fonts already processed by ttfautohint to be processed
97   again
99 allow disabling of handling composite glyphs
102 later enhancements
103 ------------------
105 add CJK autohinting module
106 add Hebrew autohinting module
108 instead of emitting bytecode, write the hints as a VTT or FontLab script
110 Windows/Mac installer
113 various
114 -------
116 testing with Windows and Apple font checkers
118 man page for ttfautohint library
120 install library
122 add help2man script so that parallel builds always work