[cairo] cairo_hint_style_t and FreeType
freddie at witherden.org
Tue Dec 22 13:19:06 PST 2009
While reading the release notes for a 1.7.x release some months back I noticed
that support was added for configuring the LCD filter used for filtering sub-
pixel rendered text. This was later removed on account that the API and
associated enum was FreeType specific -- a decision which I agree with.
I am hence wondering if it is also worth, in a future release, deprecating the
current constants in the cairo_hint_style_t enum. These are equally FreeType
specific and have no counterparts in either the Windows or Mac OS X font
engines. (Although, if you poke it hard enough, Mac OS X does allow you to
control the degree of anti-aliasing.)
From an application standpoint most which are concerned about hinting are so
because they require freely scalable text. If text is freely scalable depends
on what direction(s), if any, hinting is applied in. For Western text
disabling X-axis hinting is sufficient to ensure freely scalable text. Y-axis
hinting, however, is harmless and actually beneficial. These semantics are not
conveyed by the current constants.
Hence, I am proposing that rather than the arbitrary, FreeType specific
constants SLIGHT (y-axis), MEDIUM (x- & y-axes) and FULL (more aggressive x-
& y-axes, often the same as MEDIUM) that a series of new constants are added
to the enum, being CAIRO_HINT_STYLE_Y, CAIRO_HINT_STYLE_X_AND_Y. This will be
clearer for developers (who often are unsure about the meanings of SLIGHT,
MEDIUM and FULL) and have a physical significance.
While the constants I am proposing do not allow for one to differentiate
between MEDIUM and FULL hinting the few applications which care about this
distinction are probably better served by a FreeType-specific API rather than a
general cross-engine one.
I'd be really interested to get others take on the issue (or if it is even an
issue at all).
More information about the cairo