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

This commit is contained in:
David Turner 2007-05-15 10:54:10 +00:00
parent 607dec79bb
commit 0a24bd259a
3 changed files with 28 additions and 9 deletions

View File

@ -1,3 +1,11 @@
2007-05-15 David Turner <david@freetype.org>
* 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 <graham.asher@btinternet.com>
* src/autofit/afcjk.c (af_cjk_hints_compute_edges): Remove unused

View File

@ -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

View File

@ -89,6 +89,26 @@ FT_BEGIN_HEADER
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) )
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/