OpenType BE
Behdad’s “OpenType 2.0” wishlist/agenda!
Behdad Esfahbod
behdad@google.com
October 2015
https://goo.gl/J1O2OX
Cubic curves for president
Glyf table encoding is simple and well-understood. CFF table on the other hand is complicated and hard to parse. Use one of the two free flag bits in glyf table encoding to add cubic curve support to glyf table. Implicit-point optimization can be extended to cubics trivially. In fact, it can even be extended for an implicit point to exist between a control point of a cubic and the control point of a quadratic.
Layout improvements
Integrate 'morx'/'kerx' into GSUB/GPOS such that a font can mix and match the state-machine approach of AAT with the existing lookups of OTL.
Adopt AAT 'trak' table and other small tables that can usefully be applied to OpenType fonts.
Add new GPOS lookup type optimized for very fast and compact kerning implementation.
Next-gen layout: Add on top of GPOS new 2D-capable positioning using boxes and glues, capable of handling Nastaliq, as well as optical kerning, etc.
GX variation in GSUB? Eg. "font-feature-settings: ss01 0.5".
Run-time interpolation
Adopt Truetype GX, improve it, and extend it to GSUB/GPOS. See OpenType GX [XXX Link to OpenType GX proposal when ready.].
Glyphs-style "smart components".
Smart matras? Interaction with GSUB/GPOS. Ie. "stch" feature done right.
Architecture: separation of concerns
To some extent this has been happening. Formalize it and extend it more. For example, the following is a valid OpenType font: CFF outlines, with MS layered color glyphs, with GX glyph variations, GSUB/GPOS for layout; it’s a valid Frankenstein of a font, though perhaps not the most widely supported!
Adobe auto-hinter
Everyone should integrate Adobe's autohinter that is freely available as part of AFDKO into their run-time stack. Then, we can add a table to encode just the stem widths and blue-zone info that are needed for driving the auto-hinter. This, with the cubic curves in the 'glyf' table, paves the path for removing the need for CFF table.
Low-hanging fruit
Drop glyph bounding-box from glyf table.
Drop lsb/tsb from hmtx/vmtx tables.
[VORG will be used for vertical positioning of TrueType fonts as well as CFF.]
Janitorial
Make non-mandatory what is not truly needed ('post' table for example).
Mark ‘maxp’ version 0.5 valid with non-CFF fonts.
Deprecate unused and legacy tables (eg. DSIG), and subtables (eg. cmap formats 2, 6, 10).