shithub: freetype+ttf2subf

Download patch

ref: 0a24bd259aad26d1191fca26a34890a68e8c088c
parent: 607dec79bb6ad524a9d2e7f93b836b795fe234cf
author: David Turner <[email protected]>
date: Tue May 15 06:54:10 EDT 2007

do not use functions from <ctypes.h>, they are locale-dependent (and slower)

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2007-05-15  David Turner  <[email protected]>
+
+	* include/freetype/config/ftstdlib.h,
+	include/freetype/internal/ftobjs.h: as suggested by Graham Asher,
+	ensure that ft_isalnum, ft_isdigit, etc... use hard-coded values
+	instead on relying on the locale-dependent functions provided by
+	<ctypes.h>
+
 2007-05-15  Graham Asher  <[email protected]>
 
 	* src/autofit/afcjk.c (af_cjk_hints_compute_edges): Remove unused
--- a/include/freetype/config/ftstdlib.h
+++ b/include/freetype/config/ftstdlib.h
@@ -78,15 +78,6 @@
   /**********************************************************************/
 
 
-#include <ctype.h>
-
-#define ft_isalnum   isalnum
-#define ft_isdigit   isdigit
-#define ft_islower   islower
-#define ft_isupper   isupper
-#define ft_isxdigit  isxdigit
-
-
 #include <string.h>
 
 #define ft_memchr   memchr
--- a/include/freetype/internal/ftobjs.h
+++ b/include/freetype/internal/ftobjs.h
@@ -89,6 +89,26 @@
   ft_highpow2( FT_UInt32  value );
 
 
+ /*
+  *  character classification functions. Since these are used to parse font
+  *  files, we must not use those in <ctypes.h> which are locale-dependent !!
+  */
+#define  ft_isdigit(x)   (((unsigned)(x) - '0') < 10U)
+
+#define  ft_isxdigit(x)  ( ((unsigned)(x) - '0') < 10U ||  \
+                           ((unsigned)(x) - 'a') < 6U  ||  \
+                           ((unsigned)(x) - 'A') < 6U  )
+
+#define  ft_isupper(x)   ( ((unsigned)(x) - 'A') < 26U )
+
+#define  ft_islower(x)   ( ((unsigned)(x) - 'a') < 26U )
+
+#define  ft_isalpha(x)   ( ft_is_upper(x) || ft_is_lower(x) )
+
+#define  ft_isalnum(x)   ( ft_isdigit(x) || ft_isalpha(x) )
+
+
+
   /*************************************************************************/
   /*************************************************************************/
   /*************************************************************************/