shithub: freetype+ttf2subf

Download patch

ref: b624868b8e9355ad5a4ff07d67aa6188499e3334
parent: df11628b76513490ffd14669a9791b7236bcf924
author: Ewald Hew <[email protected]>
date: Sun Sep 24 18:32:40 EDT 2017

Move `cff_random' into `psaux' service.

NOTE: Does not compile!

Minor fix to allow both `cff' and `psaux' to use `cff_random'.

* src/cff/cffload.c (cff_random): Move to...
* src/psaux/psobjs.c: Here.
* src/cff/cffload.h: Move corresponding declaration to
`src/psaux/psobjs.h'.

* include/freetype/internal/psaux.h (PSAux_ServiceRec): Register the
function here...
* src/psaux/psauxmod.c: And here.

* src/cff/cffload.c, src/psaux/cf2intrp.c: Update code.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,24 @@
 2017-09-24  Ewald Hew  <[email protected]>
 
+	[psaux, cff] Move `cff_random' into `psaux' service.
+
+	NOTE: Does not compile!
+
+	Minor fix to allow both `cff' and `psaux' to use `cff_random'.
+
+	* src/cff/cffload.c (cff_random): Move to...
+	* src/psaux/psobjs.c: Here.
+	* src/cff/cffload.h: Move corresponding declaration to
+	`src/psaux/psobjs.h'.
+
+	* include/freetype/internal/psaux.h (PSAux_ServiceRec): Register the
+	function here...
+	* src/psaux/psauxmod.c: And here.
+
+	* src/cff/cffload.c, src/psaux/cf2intrp.c: Update code.
+
+2017-09-24  Ewald Hew  <[email protected]>
+
 	[cff] Move struct declarations to `freetype/internal'.
 
 	NOTE: Does not compile!
--- a/include/freetype/internal/psaux.h
+++ b/include/freetype/internal/psaux.h
@@ -1067,6 +1067,10 @@
                    FT_Offset  length,
                    FT_UShort  seed );
 
+    FT_UInt32
+    (*cff_random)( FT_UInt32  r );
+
+
     T1_CMap_Classes  t1_cmap_classes;
 
     /* fields after this comment line were added after version 2.1.10 */
--- a/src/cff/cffload.c
+++ b/src/cff/cffload.c
@@ -1945,18 +1945,6 @@
   }
 
 
-  FT_LOCAL_DEF( FT_UInt32 )
-  cff_random( FT_UInt32  r )
-  {
-    /* a 32bit version of the `xorshift' algorithm */
-    r ^= r << 13;
-    r ^= r >> 17;
-    r ^= r << 5;
-
-    return r;
-  }
-
-
   /* There are 3 ways to call this function, distinguished by code.  */
   /*                                                                 */
   /* . CFF_CODE_TOPDICT for either a CFF Top DICT or a CFF Font DICT */
@@ -1980,6 +1968,8 @@
     CFF_FontRecDict  top  = &subfont->font_dict;
     CFF_Private      priv = &subfont->private_dict;
 
+    PSAux_Service  psaux = (PSAux_Service)face->psaux;
+
     FT_Bool  cff2      = FT_BOOL( code == CFF2_CODE_TOPDICT  ||
                                   code == CFF2_CODE_FONTDICT );
     FT_UInt  stackSize = cff2 ? CFF2_DEFAULT_STACK
@@ -2094,7 +2084,7 @@
           do
           {
             driver->random_seed =
-              (FT_Int32)cff_random( (FT_UInt32)driver->random_seed );
+              (FT_Int32)psaux->cff_random( (FT_UInt32)driver->random_seed );
 
           } while ( driver->random_seed < 0 );
         }
@@ -2107,7 +2097,7 @@
           do
           {
             face->root.internal->random_seed =
-              (FT_Int32)cff_random( (FT_UInt32)face->root.internal->random_seed );
+              (FT_Int32)psaux->cff_random( (FT_UInt32)face->root.internal->random_seed );
 
           } while ( face->root.internal->random_seed < 0 );
         }
--- a/src/cff/cffload.h
+++ b/src/cff/cffload.h
@@ -61,9 +61,6 @@
                              FT_UInt      cid );
 
 
-  FT_LOCAL( FT_UInt32 )
-  cff_random( FT_UInt32  r );
-
   FT_LOCAL( FT_Error )
   cff_font_load( FT_Library  library,
                  FT_Stream   stream,
--- a/src/psaux/cf2intrp.c
+++ b/src/psaux/cf2intrp.c
@@ -47,6 +47,7 @@
 #include "cf2intrp.h"
 
 #include "cf2error.h"
+#include "psobjs.h"  /* for cff_random */
 
 
   /*************************************************************************/
--- a/src/psaux/psauxmod.c
+++ b/src/psaux/psauxmod.c
@@ -143,6 +143,7 @@
     &t1_builder_funcs,
     &t1_decoder_funcs,
     t1_decrypt,
+    cff_random,
 
     (const T1_CMap_ClassesRec*) &t1_cmap_classes,
 
--- a/src/psaux/psobjs.c
+++ b/src/psaux/psobjs.c
@@ -2044,4 +2044,16 @@
   }
 
 
+  FT_LOCAL_DEF( FT_UInt32 )
+  cff_random( FT_UInt32  r )
+  {
+    /* a 32bit version of the `xorshift' algorithm */
+    r ^= r << 13;
+    r ^= r >> 17;
+    r ^= r << 5;
+
+    return r;
+  }
+
+
 /* END */
--- a/src/psaux/psobjs.h
+++ b/src/psaux/psobjs.h
@@ -247,6 +247,10 @@
               FT_UShort  seed );
 
 
+  FT_LOCAL( FT_UInt32 )
+  cff_random( FT_UInt32  r );
+
+
 FT_END_HEADER
 
 #endif /* PSOBJS_H_ */