Hey list,
so I recently tested GNOME's Cantarell with the autohinter and was
disappointed that at the default UI size (11pt @ 96 dpi), it snapped the
x-height 1 pixel lower than the native hinter. The native hinter does
the same thing actually unless you set BlueScale to e.g. 3 / (4 *
LargestBlueZoneHeight) as noted in Miguel Sousa's Robothon 2012
presentation on Postscript hinting. I thought about changing around the
autohinter code somewhat to emulate this when I had the following idea:
What if the autohinter was reworked to be a front-end for the CFF
grid-fitting machinery?
The autohinter already works conceptually similar to Type1/Postscript
hinting and can provide BlueValues, OtherBlues (maybe Family*Blues with
some extending?), StdH/VW and StemSnapH/V with minor extensions,
BlueFuzz and BlueShift can be left at the defaults or something else
after analysis, BlueScale can use the above formula. Tadaa, a perfectly
usable per-script "PS Private" dictionary. What's left would be
inserting H/V/DStems (and Flex-hints?) at FT_Load_Glyph() time, but I
have no idea how much work this would be and how much performance it
would drain (it would only be done once per glyph I think?)
Adobe's CFF engine brought an advanced piece of grid-fitting code into
the code base, I think it would be a shame not to use it. The autohinter
could be truer to its' name and focus on script analysis and glyph
hinting while the CFF grid-fitter would potentially improve the quality
of hinted output. Maybe this can even solve my problem with the
autohinter stem-darkening code that has to scale emboldened glyphs down
so that they stay inside their blue zone, losing some emboldening. The
CFF grid-fitter has to handle this somehow already.
I have not looked closely at the source yet, but what would probably be
necessary is first separating the CFF grid-fitter (along with stem
darkening?) code into its' own module and rewiring the CFF module (and
maybe the Type1 module?). Reworking the autohinter is probably the
biggest piece of work depending on how compatible the workflow of the
autohinter and CFF engine is and how hard it is to add H/V/DStems at
runtime and at what cost.
Is this reasonable?
PS: Would Arabic scripts require diagonal blue zones?
_______________________________________________
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel