Enable autohinting for glyphs rotated by multiples of 90°.
* src/base/ftobjs.c (FT_Load_Glyph): Alter check for permitted matrices to allow rotations by multiples of 90°, not only unrotated, possibly slanted matrices.
This commit is contained in:
parent
b4df875196
commit
15e8e237e6
|
@ -1,3 +1,11 @@
|
|||
2009-05-29 James Cloos <cloos@jhcloos.com>
|
||||
|
||||
Enable autohinting for glyphs rotated by multiples of 90°.
|
||||
|
||||
* src/base/ftobjs.c (FT_Load_Glyph): Alter check for permitted
|
||||
matrices to allow rotations by multiples of 90°, not only unrotated,
|
||||
possibly slanted matrices.
|
||||
|
||||
2009-05-28 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Remove compiler warning.
|
||||
|
|
|
@ -588,27 +588,29 @@
|
|||
* Determine whether we need to auto-hint or not.
|
||||
* The general rules are:
|
||||
*
|
||||
* - Do only auto-hinting if we have a hinter module,
|
||||
* a scalable font format dealing with outlines,
|
||||
* and no transforms except simple slants.
|
||||
* - Do only auto-hinting if we have a hinter module, a scalable font
|
||||
* format dealing with outlines, and no transforms except simple
|
||||
* slants and/or rotations by integer multiples of 90 degrees.
|
||||
*
|
||||
* - Then, autohint if FT_LOAD_FORCE_AUTOHINT is set
|
||||
* or if we don't have a native font hinter.
|
||||
* - Then, auto-hint if FT_LOAD_FORCE_AUTOHINT is set or if we don't
|
||||
* have a native font hinter.
|
||||
*
|
||||
* - Otherwise, auto-hint for LIGHT hinting mode.
|
||||
*
|
||||
* - Exception: The font is `tricky' and requires
|
||||
* the native hinter to load properly.
|
||||
* - Exception: The font is `tricky' and requires the native hinter to
|
||||
* load properly.
|
||||
*/
|
||||
|
||||
if ( hinter &&
|
||||
!( load_flags & FT_LOAD_NO_HINTING ) &&
|
||||
!( load_flags & FT_LOAD_NO_AUTOHINT ) &&
|
||||
FT_DRIVER_IS_SCALABLE( driver ) &&
|
||||
FT_DRIVER_USES_OUTLINES( driver ) &&
|
||||
!FT_IS_TRICKY( face ) &&
|
||||
face->internal->transform_matrix.yy > 0 &&
|
||||
face->internal->transform_matrix.yx == 0 )
|
||||
if ( hinter &&
|
||||
!( load_flags & FT_LOAD_NO_HINTING ) &&
|
||||
!( load_flags & FT_LOAD_NO_AUTOHINT ) &&
|
||||
FT_DRIVER_IS_SCALABLE( driver ) &&
|
||||
FT_DRIVER_USES_OUTLINES( driver ) &&
|
||||
!FT_IS_TRICKY( face ) &&
|
||||
( ( face->internal->transform_matrix.yx == 0 &&
|
||||
face->internal->transform_matrix.xx != 0 ) ||
|
||||
( face->internal->transform_matrix.xx == 0 &&
|
||||
face->internal->transform_matrix.yx != 0 ) ) )
|
||||
{
|
||||
if ( ( load_flags & FT_LOAD_FORCE_AUTOHINT ) ||
|
||||
!FT_DRIVER_HAS_HINTER( driver ) )
|
||||
|
|
Loading…
Reference in New Issue