freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2] master 28eee36: [type42] Fix auto-hinting.


From: Werner Lemberg
Subject: [freetype2] master 28eee36: [type42] Fix auto-hinting.
Date: Thu, 27 May 2021 11:40:42 -0400 (EDT)

branch: master
commit 28eee3636caa8b933aaaccf47102bd2e698f29f6
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>

    [type42] Fix auto-hinting.
    
    The autohinter could not access the base (unscaled) outline in the
    child TrueType glyph slot. We now share the internal parts between
    the parent and child glyph slots. Fixes #1057.
    
    * src/type42/t42objs.c (T42_GlyphSlot_Init): Remove the internal parts
    of `T42_GlyphSlot' and replace it with the child TrueType structure.
    (T42_GlyphSlot_Done): Updated accordingly.
---
 ChangeLog            | 12 ++++++++++++
 src/type42/t42objs.c |  7 +++++++
 2 files changed, 19 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 01c4d70..cecb207 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2021-05-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+       [type42] Fix auto-hinting.
+
+       The autohinter could not access the base (unscaled) outline in the
+       child TrueType glyph slot. We now share the internal parts between
+       the parent and child glyph slots. Fixes #1057.
+
+       * src/type42/t42objs.c (T42_GlyphSlot_Init): Remove the internal parts
+       of `T42_GlyphSlot' and replace it with the child TrueType structure.
+       (T42_GlyphSlot_Done): Updated accordingly.
+
 2021-05-25  Werner Lemberg  <wl@gnu.org>
 
        [psaux] Guard and trace AFM kern data allocation.
diff --git a/src/type42/t42objs.c b/src/type42/t42objs.c
index 59b6540..dd23e73 100644
--- a/src/type42/t42objs.c
+++ b/src/type42/t42objs.c
@@ -583,6 +583,7 @@
     FT_Face        face    = t42slot->face;
     T42_Face       t42face = (T42_Face)face;
     FT_GlyphSlot   ttslot;
+    FT_Memory      memory  = face->memory;
     FT_Error       error   = FT_Err_Ok;
 
 
@@ -598,6 +599,11 @@
         slot->ttslot = ttslot;
     }
 
+    /* share the loader so that the autohinter can see it */
+    FT_GlyphLoader_Done( t42slot->internal->loader );
+    FT_FREE( t42slot->internal );
+    t42slot->internal = slot->ttslot->internal;
+
     return error;
   }
 
@@ -609,6 +615,7 @@
 
 
     FT_Done_GlyphSlot( slot->ttslot );
+    t42slot->internal = NULL;
   }
 
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]