Update TODO.
[ttfautohint.git] / TODO
blob2658eb24489d3cda7b383c09917f11ecc828a0d5
2 important improvements
3 ----------------------
5 try to reduce size of hints even more
7 add features to the GUI
8   -> direct control over `actions'
9   -> preview similar to ftgrid
11 improve handling of GDI ClearType by snapping to the pixel grid (this is,
12   integer coordinates of horizontal segments)
14 handle OT features
15   -> use HarfBuzz?
17 control `gasp' table; Adam Twardoch suggest the following:
19   1. Calculate "gaspstem", i.e. the most common thickness of horizontal
20      stems (y direction distances) for lowercase Latin letters.
21   2. If gaspstem <= 0.03 * upm, apply gasp symmetric smoothing across the
22      entire range (rangeMaxPPEM 0xFFFF, value 15)
23   3. Else, calculate gaspthreshold as follows:
24        ceil(1.33 * upm / gaspstem) - 1
25   4. Apply no symmetric smoothing up to the gaspthreshold ppem (rangeMaxPPEM
26      gaspthreshold, value 7), and apply symmetric smoothing above.
28   In addition, ttfautohint should provide a commandline parameter that
29   allows the user to override the automatic logic.  If that parameter = 0,
30   then gasp value 15 should be applied across the entire range.  If the
31   parameter > 0, then up to that parameter value the gasp value 7 should be
32   applied, and gasp value 15 should be applied above.
34 control activation threshold of blue zone widths; handle fonts with large
35   serifs like `Palatino' or `Quattrocento' (cf. this bug report:
36   https://savannah.nongnu.org/bugs/?36091)
38 create a separate blue zone class for `i' and `j':
39   . if the values differ more than a given threshold, handle them
40     separately
41   . otherwise, unify them with `f' and friends.
43 control the characters used for blue zones
44   -> non-latin scripts
46 user-defined blue zones?
47   -> old-style digits
49 control the width of blue zones
51 handle normal and bold fonts differently; cf. Infinality patches;
52   this should help avoid filling of bowls (like in `e') for bold shapes.
54 control the minimum stem width
56 try to `embolden' fonts at small sizes to avoid drop-outs; cf. Infinality
57   patches
59 implement `x-height-snapping-exceptions'
61 improve `pre-hinting' by making the used PPEM value configurable
63 allow hinting of single glyphs, using a config file which holds the global
64   settings
66 better handling of `incomplete' fonts (this is, fonts which lack the minimum
67   set of glyphs necessary to determine the blue zones)
70 minor improvements
71 ------------------
73 reject fonts which are `hopeless' (for example, `Lipstick')
75 reduce memory consumption by using 16bit data types in large arrays if 32bit
76   are not necessary
78 correctly set `lowestRecPPEM' field in `head'
80 control dropout mode
82 apply hinting in x direction also?
83   -> warper: shifting with and without scaling
84   -> `standard' autofit hinting
86 add a config and/or command file for batch handling
88 warn against overwrite of output file?
90 reduce output size of option -p:
91   1. compare outline rendered at EM value with unhinted outline
92   2. pre-hint only if 1. differs more than given threshold (default 0.5%?)
94 make it possible to hint fonts which aren't alphabetic at all, for example,
95   icons; to do so, provide means to skip the global feature analysis
97 better control -i output
99 allow processing of multiple files by using globs as in the Midnight
100   Commander
103 later enhancements
104 ------------------
106 add CJK autohinting module
107 add Hebrew autohinting module
109 instead of emitting bytecode, write the hints as a VTT or FontLab script
111 Windows/Mac installer
114 various
115 -------
117 testing with Windows and Apple font checkers
119 man page for ttfautohint library
121 install library
123 add help2man script so that parallel builds always work