freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master bd75a51: [type42] Fix glyph access.


From: Werner LEMBERG
Subject: [freetype2] master bd75a51: [type42] Fix glyph access.
Date: Sat, 08 Aug 2015 06:40:10 +0000

branch: master
commit bd75a517dcf87b620e8dd7fcd07992b881f0e234
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>

    [type42] Fix glyph access.
    
    This is a severe bug: We've missed one level of indirection, as
    described in the Type 42 specification.  As a result, ftview
    sometimes showed incorrect glyphs for given glyph names, and even
    displayed `error 0x0006' (invalid argument!) in case the number of
    glyph indices differed between the Type 42 font and the embedded
    TTF.
    
    Apparently, noone ever noticed it; this shows how much Type 42 fonts
    are in use...
    
    * src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index
    to embedded TTF's glyph index.
---
 ChangeLog            |   17 +++++++++++++++++
 docs/CHANGES         |   13 +++++++++++++
 src/type42/t42objs.c |    5 +++++
 3 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d7e6951..0e70767 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,22 @@
 2015-08-08  Werner Lemberg  <address@hidden>
 
+       [type42] Fix glyph access.
+
+       This is a severe bug: We've missed one level of indirection, as
+       described in the Type 42 specification.  As a result, ftview
+       sometimes showed incorrect glyphs for given glyph names, and even
+       displayed `error 0x0006' (invalid argument!) in case the number of
+       glyph indices differed between the Type 42 font and the embedded
+       TTF.
+
+       Apparently, noone ever noticed it; this shows how much Type 42 fonts
+       are in use...
+
+       * src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index
+       to embedded TTF's glyph index.
+
+2015-08-08  Werner Lemberg  <address@hidden>
+
        [type42] Minor clean-up.
 
        * src/type42/t42parse.c (t42_parse_font_matrix): Remove unused
diff --git a/docs/CHANGES b/docs/CHANGES
index 113fbdf..022e6b4 100644
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -8,6 +8,10 @@ CHANGES BETWEEN 2.6 and 2.6.1
       you are  using CFFs; otherwise  you get cropped glyphs  with GUI
       interfaces like GTK or Qt.
 
+    - Accessing Type 42 fonts returned  incorrect results if the glyph
+      order of the embedded TrueType font differs from the glyph order
+      of the Type 42 charstrings table.
+
 
   II. IMPORTANT CHANGES
 
@@ -30,6 +34,15 @@ CHANGES BETWEEN 2.6 and 2.6.1
       don't need any change to the source code.
 
 
+  III. MISCELLANEOUS
+
+    - The auto-hinter's Arabic script support has been enhanced.
+
+    - The TrueType bytecode interpreter now runs slightly faster.
+
+    - Improved support for builds with cmake.
+
+
 ======================================================================
 
 CHANGES BETWEEN 2.5.5 and 2.6
diff --git a/src/type42/t42objs.c b/src/type42/t42objs.c
index 2756adf..01b271f 100644
--- a/src/type42/t42objs.c
+++ b/src/type42/t42objs.c
@@ -652,11 +652,16 @@
     FT_Error         error;
     T42_GlyphSlot    t42slot = (T42_GlyphSlot)glyph;
     T42_Size         t42size = (T42_Size)size;
+    T42_Face         t42face = (T42_Face)size->face;
     FT_Driver_Class  ttclazz = ((T42_Driver)glyph->face->driver)->ttclazz;
 
 
     FT_TRACE1(( "T42_GlyphSlot_Load: glyph index %d\n", glyph_index ));
 
+    /* map T42 glyph index to embedded TTF's glyph index */
+    glyph_index = (FT_UInt)ft_atol(
+                    (const char *)t42face->type1.charstrings[glyph_index] );
+
     t42_glyphslot_clear( t42slot->ttslot );
     error = ttclazz->load_glyph( t42slot->ttslot,
                                  t42size->ttsize,



reply via email to

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