I proudly announce that the first part of the reorganization of
FreeType's auto-hinter has been finished. It is now just a matter of
few, almost trivial lines to add support for a new script, provided
that one of the auto-hinter submodules is capable to handle it.
Consequently, I've added Hebrew support.
There is now a central file, `afblue.dat', which contains blue zone
character strings of all scripts. To make it easier to read and
maintain the data, I've written a Perl script which converts the UTF-8
data in this file to `afblue.c' and `afblue.h' (encoded in ASCII),
using the template files `afblue.cin' and `afblue.hin', respectively.
Enumerations are used to access the data; the enumeration values
simply correspond to offsets into the array `af_blue_strings'.
However, a script (as understood by the auto-hinter) doesn't access
these strings directly. Instead, blue strings are grouped into blue
stringsets, together with some string properties. This makes it
possible to re-use strings, if necessary. Script names are listed in
file `afscript.h'. Again, enumeration values correspond to offsets
into the array `af_blue_stringsets'.
To complete the hierarchy, an auto-hinter submodule corresponds to a
`writing system'. Obviously, a script can belong only to a single
writing system. Writing system names are listed in file `afwrtsys.h'.
Scripts themselves are defined in the auto-hinter submodule they
belong to. For example, the definition of Hebrew can be found at the
end of file `aflatin.c':
AF_DEFINE_SCRIPT_CLASS(
af_hebr_script_class,
AF_SCRIPT_HEBR,
AF_BLUE_STRINGSET_HEBR,
AF_WRITING_SYSTEM_LATIN,
af_hebr_uniranges,
0x5DD /* ם (the Hebrew character used */
/* to derive standard stem widths) */
)
Please note that Hebrew support is not optimal yet; I have to think
how to better make the auto-hinter properly ignore the `vertical
serifs' used at the top of many glyphs while computing blue zones.
Werner
_______________________________________________
Freetype-devel mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/freetype-devel