shithub: freetype+ttf2subf

Download patch

ref: cb23a62880203a19de2b41d4d80372bb5458dba2
parent: 294ce11b00f66a981007e43f0e6bc5c108ee2995
author: Dave Arnold <[email protected]>
date: Thu Jun 13 03:46:32 EDT 2013

[cff] Add code to Adobe's engine to handle ppem > 2000.

* src/cff/cffgload.c (cff_slot_load): If we get
FT_Err_Glyph_Too_Big, retry unhinted and scale up later on.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2013-06-06  Dave Arnold  <[email protected]>
+	    Werner Lemberg  <[email protected]>
+
+	[cff] Add code to Adobe's engine to handle ppem > 2000.
+
+	* src/cff/cffgload.c (cff_slot_load): If we get
+	FT_Err_Glyph_Too_Big, retry unhinted and scale up later on.
+
 2013-06-12  Werner Lemberg  <[email protected]>.
 
 	Another try on pragmas.
@@ -8,7 +16,7 @@
 	* include/freetype/internal/ftserv.h: Remove pragma which has no
 	effect.
 
-2013-06-12  Werner Lemberg  <[email protected]>.
+2013-06-12  Werner Lemberg  <[email protected]>
 
 	* include/freetype/internal/ftdebug.h: Disable MSVC warning C4127.
 
--- a/src/cff/cffgload.c
+++ b/src/cff/cffgload.c
@@ -2849,7 +2849,16 @@
         /* as a consequence, glyphs larger than 2000ppem get rejected */
         if ( FT_ERR_EQ( error, Glyph_Too_Big ) )
         {
-          /* XXX to be implemented */
+          /* this time, we retry unhinted and scale up the glyph later on */
+          /* (the engine uses and sets the hardcoded value 0x10000 / 64 = */
+          /* 0x400 for both `x_scale' and `y_scale' in this case)         */
+          hinting       = FALSE;
+          force_scaling = TRUE;
+          glyph->hint   = hinting;
+
+          error = cf2_decoder_parse_charstrings( &decoder,
+                                                 charstring,
+                                                 charstring_len );
         }
       }