freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master d1db57c: * src/sfnt/ttsbit.c (tt_face_load_sbit): All


From: Werner LEMBERG
Subject: [freetype2] master d1db57c: * src/sfnt/ttsbit.c (tt_face_load_sbit): Allow more version values.
Date: Sat, 24 Dec 2016 08:05:30 +0000 (UTC)

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

    * src/sfnt/ttsbit.c (tt_face_load_sbit): Allow more version values.
    
    Some fonts seem to have the `version' field in the wrong byte order.
    
    Problem reported by 張俊芝 <address@hidden>.
---
 ChangeLog         |    8 ++++++++
 src/sfnt/ttsbit.c |    6 +++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index c126f7f..775201a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2016-12-24  Werner Lemberg  <address@hidden>
 
+       * src/sfnt/ttsbit.c (tt_face_load_sbit): Allow more version values.
+
+       Some fonts seem to have the `version' field in the wrong byte order.
+
+       Problem reported by 張俊芝 <address@hidden>.
+
+2016-12-24  Werner Lemberg  <address@hidden>
+
        * src/truetype/ttpload.c (tt_face_load_loca): Sanitize table length.
 
        This trivial fix allows us to accept more fonts.
diff --git a/src/sfnt/ttsbit.c b/src/sfnt/ttsbit.c
index bc51304..bf6ecca 100644
--- a/src/sfnt/ttsbit.c
+++ b/src/sfnt/ttsbit.c
@@ -107,8 +107,12 @@
         version     = FT_NEXT_LONG( p );
         num_strikes = FT_NEXT_ULONG( p );
 
+        /* there's at least one font (FZShuSong-Z01, version 3)   */
+        /* that uses the wrong byte order for the `version' field */
         if ( ( (FT_ULong)version & 0xFFFF0000UL ) != 0x00020000UL &&
-             ( (FT_ULong)version & 0xFFFF0000UL ) != 0x00030000UL )
+             ( (FT_ULong)version & 0x0000FFFFUL ) != 0x00000200UL &&
+             ( (FT_ULong)version & 0xFFFF0000UL ) != 0x00030000UL &&
+             ( (FT_ULong)version & 0x0000FFFFUL ) != 0x00000300UL )
         {
           error = FT_THROW( Unknown_File_Format );
           goto Exit;



reply via email to

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