TODO: More on composite glyphs.
[ttfautohint.git] / TODO
blob5ef926d3b862041c85409701651e9a0e833d92cc
1 essential fixes
2 ---------------
4 write a platform-independent GUI
5   -> direct control over `actions'
6   -> preview similar to ftgrid
9 important improvements
10 ----------------------
12 improve handling of GDI ClearType by snapping to the pixel grid (this is,
13 integer coordinates of horizontal segments)
15 handle OT features
16   -> use HarfBuzz?
18 control `gasp' table; Adam Twardoch suggest the following:
20   1. Calculate "gaspstem", i.e. the most common thickness of horizontal
21      stems (y direction distances) for lowercase Latin letters.
22   2. If gaspstem <= 0.03 * upm, apply gasp symmetric smoothing across the
23      entire range (rangeMaxPPEM 0xFFFF, value 15)
24   3. Else, calculate gaspthreshold as follows:
25        ceil(1.33 * upm / gaspstem) - 1
26   4. Apply no symmetric smoothing up to the gaspthreshold ppem (rangeMaxPPEM
27      gaspthreshold, value 7), and apply symmetric smoothing above.
29   In addition, ttfautohint should provide a commandline parameter that
30   allows the user to override the automatic logic.  If that parameter = 0,
31   then gasp value 15 should be applied across the entire range.  If the
32   parameter > 0, then up to that parameter value the gasp value 7 should be
33   applied, and gasp value 15 should be applied above.
35 disable hinting at large ppem values (> ~2000) to avoid numeric overflows
37 control dropout mode
39 control activation threshold of blue zone widths
41 control the width of blue zones
43 handle normal and bold fonts differently; cf. Infinality patches
45 control the minimum stem width
47 try to `embolden' fonts at small sizes to avoid drop-outs; cf. Infinality
48   patches
50 implement `x-height-snapping-exceptions' and `pre-hinting'
52 allow hinting of single glyphs, using a config file which holds the global
53   settings
55 better handling of `incomplete' fonts (this is, fonts which lack the minimum
56   set of glyphs necessary to determine the blue zones)
59 minor improvements
60 ------------------
62 correctly set `lowestRecPPEM' field in `head'
64 set dropout mode et al.
66 apply hinting in x direction also?
67   -> warper: shifting with and without scaling
68   -> `standard' autofit hinting
70 try to reduce size of hints by handling strong points separately
72 add a config and/or command file for batch handling
74 warn against overwrite of output file?
76 improve rendering of composite glyphs
78   1. scan font to mark all glyphs used as composite elements and collect its
79      nesting depths
80   2. for glyphs found in 1.: use CVS register to pass nesting level to
81      bytecode; if > 0, don't apply it
82   3. don't pass FT_LOAD_NO_RECURSE to autohinter
84   more on issue 2:
86   a. prepend a composite element (with a single point) to all composite
87      glyphs so that we can apply bytecoode to increase the nesting level; it
88      gets decreased in the composite's bytecode instructions
89   b. for glyphs found in 1.: adjust all AnchorFormat2 tables in the GPOS
90      table to fit the changed point indices
91     
92 reduce output size of option -p:
93   1. compare outline rendered at EM value with unhinted outline
94   2. pre-hint only if 1. differs more than given threshold (default 0.5%?)
97 later enhancements
98 ------------------
100 add CJK autohinting module
101 add Hebrew autohinting module
103 instead of emitting bytecode, write the hints as a VTT or FontLab script
105 Windows/Mac installer
108 various
109 -------
111 testing with Windows font checker
113 man page for ttfautohint library
114 install library