* src/tools/glnames.py: Formatted.

Format output to be in sync with other FreeType code.
Import `re' and `os.path'.
(StringTable) <__init__>: Add parameter to initialize master table
name.
(StringTable) <dump>: Don't pass master table name.
(StringTable) <dump_sublist>: Emit explanatory comment.
Simplify and make output more human readable.
(t1_bias, glyph_list, adobe_glyph_names): Removed.  Unused.
(main): Use `basename' for file name in header.

* src/psnames/pstables.h: Regenerated.

Other formatting.
This commit is contained in:
Werner Lemberg 2005-03-10 06:28:07 +00:00
parent 705620beeb
commit 56ef6bc4d6
5 changed files with 4523 additions and 4303 deletions

View File

@ -1,16 +1,33 @@
2005-03-10 Werner Lemberg <wl@gnu.org>
* src/tools/glnames.py: Formatted.
Format output to be in sync with other FreeType code.
Import `re' and `os.path'.
(StringTable) <__init__>: Add parameter to initialize master table
name.
(StringTable) <dump>: Don't pass master table name.
(StringTable) <dump_sublist>: Emit explanatory comment.
Simplify and make output more human readable.
(t1_bias, glyph_list, adobe_glyph_names): Removed. Unused.
(main): Use `basename' for file name in header.
* src/psnames/pstables.h: Regenerated.
2005-03-09 David Turner <david@freetype.org>
* src/tools/glnames.py: rewrote the generator for the 'pstables.h'
header, which contains various constant tables related to glyph
names. It now uses a different storage scheme that saves about 20
Kb and closes bug #12262
* src/tools/glnames.py: Rewrite the generator for the `pstables.h'
header file which contains various constant tables related to glyph
names. It now uses a different, more compact storage scheme that
saves about 20KB. This also closes Savannah bug #12262.
* src/psnames/pstables.h: re-generated header file
* src/psnames/pstables.h: Regenerated.
* src/psnames/psmodule.c: rewrote some parts to comply with recent
changes in 'pstables.h'
* src/psnames/psmodule.c (ps_unicode_value): Use
`ft_get_adobe_glyph_index', a new function defined in `pstables.h'.
(ps_get_macintosh_name, ps_get_standard_strings): Updated.
* src/base/ftobjs.c (FT_Set_Char_Sizes): fix for bug #12263
* src/base/ftobjs.c (FT_Set_Char_Sizes): Handle fractional sizes
more carefully. This fixes Savannah bug #12263.
2005-03-06 David Turner <david@freetype.org>

View File

@ -2011,11 +2011,16 @@
FT_UShort x_ppem = (FT_UShort)( ( dim_x + 32 ) >> 6 );
FT_UShort y_ppem = (FT_UShort)( ( dim_y + 32 ) >> 6 );
/* this code is disabled, for an explanation, see bug#12263 */
/* Don't take, say, 12.5x12.5 equal to 13x13. If working with */
/* fractional font sizes this would hide slightly different */
/* font metrics. Consequently, the next two lines are */
/* disabled. */
#if 0
if ( x_ppem == metrics->x_ppem && y_ppem == metrics->y_ppem )
return FT_Err_Ok;
#endif
metrics->x_ppem = x_ppem;
metrics->y_ppem = y_ppem;
}

View File

@ -4,7 +4,7 @@
/* */
/* PSNames module implementation (body). */
/* */
/* Copyright 1996-2001, 2002, 2003 by */
/* Copyright 1996-2001, 2002, 2003, 2005 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@ -32,9 +32,9 @@
#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
/* return the Unicode value corresponding to a given glyph. Note that */
/* Return the Unicode value corresponding to a given glyph. Note that */
/* we do deal with glyph variants by detecting a non-initial dot in */
/* the name, as in `A.swash' or `e.final', etc. */
/* the name, as in `A.swash' or `e.final'. */
/* */
static FT_UInt32
ps_unicode_value( const char* glyph_name )

View File

@ -1,6 +1,6 @@
/***************************************************************************/
/* */
/* ../psnames/pstables.h */
/* pstables.h */
/* */
/* PostScript glyph names. */
/* */
@ -16,247 +16,440 @@
/***************************************************************************/
/* ALL of this file has been generated automatically -- do not edit! */
/* This file has been generated automatically -- do not edit! */
static const char ft_standard_glyph_names[3696] =
{
'.','n','u','l','l', 0 ,'n','o','n','m','a','r','k','i','n','g',
'r','e','t','u','r','n', 0 ,'n','o','t','e','q','u','a','l', 0 ,
'i','n','f','i','n','i','t','y', 0 ,'l','e','s','s','e','q','u',
'a','l', 0 ,'g','r','e','a','t','e','r','e','q','u','a','l', 0 ,
'p','a','r','t','i','a','l','d','i','f','f', 0 ,'s','u','m','m',
'a','t','i','o','n', 0 ,'p','r','o','d','u','c','t', 0 ,'p','i',
0 ,'i','n','t','e','g','r','a','l', 0 ,'O','m','e','g','a', 0 ,
'r','a','d','i','c','a','l', 0 ,'a','p','p','r','o','x','e','q',
'u','a','l', 0 ,'D','e','l','t','a', 0 ,'n','o','n','b','r','e',
'a','k','i','n','g','s','p','a','c','e', 0 ,'l','o','z','e','n',
'g','e', 0 ,'a','p','p','l','e', 0 ,'f','r','a','n','c', 0 ,'G',
'b','r','e','v','e', 0 ,'g','b','r','e','v','e', 0 ,'I','d','o',
't','a','c','c','e','n','t', 0 ,'S','c','e','d','i','l','l','a',
0 ,'s','c','e','d','i','l','l','a', 0 ,'C','a','c','u','t','e',
0 ,'c','a','c','u','t','e', 0 ,'C','c','a','r','o','n', 0 ,'c',
'c','a','r','o','n', 0 ,'d','c','r','o','a','t', 0 ,'.','n','o',
't','d','e','f', 0 ,'s','p','a','c','e', 0 ,'e','x','c','l','a',
'm', 0 ,'q','u','o','t','e','d','b','l', 0 ,'n','u','m','b','e',
'r','s','i','g','n', 0 ,'d','o','l','l','a','r', 0 ,'p','e','r',
'c','e','n','t', 0 ,'a','m','p','e','r','s','a','n','d', 0 ,'q',
'u','o','t','e','r','i','g','h','t', 0 ,'p','a','r','e','n','l',
'e','f','t', 0 ,'p','a','r','e','n','r','i','g','h','t', 0 ,'a',
's','t','e','r','i','s','k', 0 ,'p','l','u','s', 0 ,'c','o','m',
'm','a', 0 ,'h','y','p','h','e','n', 0 ,'p','e','r','i','o','d',
0 ,'s','l','a','s','h', 0 ,'z','e','r','o', 0 ,'o','n','e', 0 ,
't','w','o', 0 ,'t','h','r','e','e', 0 ,'f','o','u','r', 0 ,'f',
'i','v','e', 0 ,'s','i','x', 0 ,'s','e','v','e','n', 0 ,'e','i',
'g','h','t', 0 ,'n','i','n','e', 0 ,'c','o','l','o','n', 0 ,'s',
'e','m','i','c','o','l','o','n', 0 ,'l','e','s','s', 0 ,'e','q',
'u','a','l', 0 ,'g','r','e','a','t','e','r', 0 ,'q','u','e','s',
't','i','o','n', 0 ,'a','t', 0 ,'A', 0 ,'B', 0 ,'C', 0 ,'D', 0 ,
'E', 0 ,'F', 0 ,'G', 0 ,'H', 0 ,'I', 0 ,'J', 0 ,'K', 0 ,'L', 0 ,
'M', 0 ,'N', 0 ,'O', 0 ,'P', 0 ,'Q', 0 ,'R', 0 ,'S', 0 ,'T', 0 ,
'U', 0 ,'V', 0 ,'W', 0 ,'X', 0 ,'Y', 0 ,'Z', 0 ,'b','r','a','c',
'k','e','t','l','e','f','t', 0 ,'b','a','c','k','s','l','a','s',
'h', 0 ,'b','r','a','c','k','e','t','r','i','g','h','t', 0 ,'a',
's','c','i','i','c','i','r','c','u','m', 0 ,'u','n','d','e','r',
's','c','o','r','e', 0 ,'q','u','o','t','e','l','e','f','t', 0 ,
'a', 0 ,'b', 0 ,'c', 0 ,'d', 0 ,'e', 0 ,'f', 0 ,'g', 0 ,'h', 0 ,
'i', 0 ,'j', 0 ,'k', 0 ,'l', 0 ,'m', 0 ,'n', 0 ,'o', 0 ,'p', 0 ,
'q', 0 ,'r', 0 ,'s', 0 ,'t', 0 ,'u', 0 ,'v', 0 ,'w', 0 ,'x', 0 ,
'y', 0 ,'z', 0 ,'b','r','a','c','e','l','e','f','t', 0 ,'b','a',
'r', 0 ,'b','r','a','c','e','r','i','g','h','t', 0 ,'a','s','c',
'i','i','t','i','l','d','e', 0 ,'e','x','c','l','a','m','d','o',
'w','n', 0 ,'c','e','n','t', 0 ,'s','t','e','r','l','i','n','g',
0 ,'f','r','a','c','t','i','o','n', 0 ,'y','e','n', 0 ,'f','l',
'o','r','i','n', 0 ,'s','e','c','t','i','o','n', 0 ,'c','u','r',
'r','e','n','c','y', 0 ,'q','u','o','t','e','s','i','n','g','l',
'e', 0 ,'q','u','o','t','e','d','b','l','l','e','f','t', 0 ,'g',
'u','i','l','l','e','m','o','t','l','e','f','t', 0 ,'g','u','i',
'l','s','i','n','g','l','l','e','f','t', 0 ,'g','u','i','l','s',
'i','n','g','l','r','i','g','h','t', 0 ,'f','i', 0 ,'f','l', 0 ,
'e','n','d','a','s','h', 0 ,'d','a','g','g','e','r', 0 ,'d','a',
'g','g','e','r','d','b','l', 0 ,'p','e','r','i','o','d','c','e',
'n','t','e','r','e','d', 0 ,'p','a','r','a','g','r','a','p','h',
0 ,'b','u','l','l','e','t', 0 ,'q','u','o','t','e','s','i','n',
'g','l','b','a','s','e', 0 ,'q','u','o','t','e','d','b','l','b',
'a','s','e', 0 ,'q','u','o','t','e','d','b','l','r','i','g','h',
't', 0 ,'g','u','i','l','l','e','m','o','t','r','i','g','h','t',
0 ,'e','l','l','i','p','s','i','s', 0 ,'p','e','r','t','h','o',
'u','s','a','n','d', 0 ,'q','u','e','s','t','i','o','n','d','o',
'w','n', 0 ,'g','r','a','v','e', 0 ,'a','c','u','t','e', 0 ,'c',
'i','r','c','u','m','f','l','e','x', 0 ,'t','i','l','d','e', 0 ,
'm','a','c','r','o','n', 0 ,'b','r','e','v','e', 0 ,'d','o','t',
'a','c','c','e','n','t', 0 ,'d','i','e','r','e','s','i','s', 0 ,
'r','i','n','g', 0 ,'c','e','d','i','l','l','a', 0 ,'h','u','n',
'g','a','r','u','m','l','a','u','t', 0 ,'o','g','o','n','e','k',
0 ,'c','a','r','o','n', 0 ,'e','m','d','a','s','h', 0 ,'A','E',
0 ,'o','r','d','f','e','m','i','n','i','n','e', 0 ,'L','s','l',
'a','s','h', 0 ,'O','s','l','a','s','h', 0 ,'O','E', 0 ,'o','r',
'd','m','a','s','c','u','l','i','n','e', 0 ,'a','e', 0 ,'d','o',
't','l','e','s','s','i', 0 ,'l','s','l','a','s','h', 0 ,'o','s',
'l','a','s','h', 0 ,'o','e', 0 ,'g','e','r','m','a','n','d','b',
'l','s', 0 ,'o','n','e','s','u','p','e','r','i','o','r', 0 ,'l',
'o','g','i','c','a','l','n','o','t', 0 ,'m','u', 0 ,'t','r','a',
'd','e','m','a','r','k', 0 ,'E','t','h', 0 ,'o','n','e','h','a',
'l','f', 0 ,'p','l','u','s','m','i','n','u','s', 0 ,'T','h','o',
'r','n', 0 ,'o','n','e','q','u','a','r','t','e','r', 0 ,'d','i',
'v','i','d','e', 0 ,'b','r','o','k','e','n','b','a','r', 0 ,'d',
'e','g','r','e','e', 0 ,'t','h','o','r','n', 0 ,'t','h','r','e',
'e','q','u','a','r','t','e','r','s', 0 ,'t','w','o','s','u','p',
'e','r','i','o','r', 0 ,'r','e','g','i','s','t','e','r','e','d',
0 ,'m','i','n','u','s', 0 ,'e','t','h', 0 ,'m','u','l','t','i',
'p','l','y', 0 ,'t','h','r','e','e','s','u','p','e','r','i','o',
'r', 0 ,'c','o','p','y','r','i','g','h','t', 0 ,'A','a','c','u',
't','e', 0 ,'A','c','i','r','c','u','m','f','l','e','x', 0 ,'A',
'd','i','e','r','e','s','i','s', 0 ,'A','g','r','a','v','e', 0 ,
'A','r','i','n','g', 0 ,'A','t','i','l','d','e', 0 ,'C','c','e',
'd','i','l','l','a', 0 ,'E','a','c','u','t','e', 0 ,'E','c','i',
'r','c','u','m','f','l','e','x', 0 ,'E','d','i','e','r','e','s',
'i','s', 0 ,'E','g','r','a','v','e', 0 ,'I','a','c','u','t','e',
0 ,'I','c','i','r','c','u','m','f','l','e','x', 0 ,'I','d','i',
'e','r','e','s','i','s', 0 ,'I','g','r','a','v','e', 0 ,'N','t',
'i','l','d','e', 0 ,'O','a','c','u','t','e', 0 ,'O','c','i','r',
'c','u','m','f','l','e','x', 0 ,'O','d','i','e','r','e','s','i',
's', 0 ,'O','g','r','a','v','e', 0 ,'O','t','i','l','d','e', 0 ,
'S','c','a','r','o','n', 0 ,'U','a','c','u','t','e', 0 ,'U','c',
'i','r','c','u','m','f','l','e','x', 0 ,'U','d','i','e','r','e',
's','i','s', 0 ,'U','g','r','a','v','e', 0 ,'Y','a','c','u','t',
'e', 0 ,'Y','d','i','e','r','e','s','i','s', 0 ,'Z','c','a','r',
'o','n', 0 ,'a','a','c','u','t','e', 0 ,'a','c','i','r','c','u',
'm','f','l','e','x', 0 ,'a','d','i','e','r','e','s','i','s', 0 ,
'a','g','r','a','v','e', 0 ,'a','r','i','n','g', 0 ,'a','t','i',
'l','d','e', 0 ,'c','c','e','d','i','l','l','a', 0 ,'e','a','c',
'u','t','e', 0 ,'e','c','i','r','c','u','m','f','l','e','x', 0 ,
'e','d','i','e','r','e','s','i','s', 0 ,'e','g','r','a','v','e',
0 ,'i','a','c','u','t','e', 0 ,'i','c','i','r','c','u','m','f',
'l','e','x', 0 ,'i','d','i','e','r','e','s','i','s', 0 ,'i','g',
'r','a','v','e', 0 ,'n','t','i','l','d','e', 0 ,'o','a','c','u',
't','e', 0 ,'o','c','i','r','c','u','m','f','l','e','x', 0 ,'o',
'd','i','e','r','e','s','i','s', 0 ,'o','g','r','a','v','e', 0 ,
'o','t','i','l','d','e', 0 ,'s','c','a','r','o','n', 0 ,'u','a',
'c','u','t','e', 0 ,'u','c','i','r','c','u','m','f','l','e','x',
0 ,'u','d','i','e','r','e','s','i','s', 0 ,'u','g','r','a','v',
'e', 0 ,'y','a','c','u','t','e', 0 ,'y','d','i','e','r','e','s',
'i','s', 0 ,'z','c','a','r','o','n', 0 ,'e','x','c','l','a','m',
's','m','a','l','l', 0 ,'H','u','n','g','a','r','u','m','l','a',
'u','t','s','m','a','l','l', 0 ,'d','o','l','l','a','r','o','l',
'd','s','t','y','l','e', 0 ,'d','o','l','l','a','r','s','u','p',
'e','r','i','o','r', 0 ,'a','m','p','e','r','s','a','n','d','s',
'm','a','l','l', 0 ,'A','c','u','t','e','s','m','a','l','l', 0 ,
'p','a','r','e','n','l','e','f','t','s','u','p','e','r','i','o',
'r', 0 ,'p','a','r','e','n','r','i','g','h','t','s','u','p','e',
'r','i','o','r', 0 ,'t','w','o','d','o','t','e','n','l','e','a',
'd','e','r', 0 ,'o','n','e','d','o','t','e','n','l','e','a','d',
'e','r', 0 ,'z','e','r','o','o','l','d','s','t','y','l','e', 0 ,
'o','n','e','o','l','d','s','t','y','l','e', 0 ,'t','w','o','o',
'l','d','s','t','y','l','e', 0 ,'t','h','r','e','e','o','l','d',
's','t','y','l','e', 0 ,'f','o','u','r','o','l','d','s','t','y',
'l','e', 0 ,'f','i','v','e','o','l','d','s','t','y','l','e', 0 ,
's','i','x','o','l','d','s','t','y','l','e', 0 ,'s','e','v','e',
'n','o','l','d','s','t','y','l','e', 0 ,'e','i','g','h','t','o',
'l','d','s','t','y','l','e', 0 ,'n','i','n','e','o','l','d','s',
't','y','l','e', 0 ,'c','o','m','m','a','s','u','p','e','r','i',
'o','r', 0 ,'t','h','r','e','e','q','u','a','r','t','e','r','s',
'e','m','d','a','s','h', 0 ,'p','e','r','i','o','d','s','u','p',
'e','r','i','o','r', 0 ,'q','u','e','s','t','i','o','n','s','m',
'a','l','l', 0 ,'a','s','u','p','e','r','i','o','r', 0 ,'b','s',
'u','p','e','r','i','o','r', 0 ,'c','e','n','t','s','u','p','e',
'r','i','o','r', 0 ,'d','s','u','p','e','r','i','o','r', 0 ,'e',
's','u','p','e','r','i','o','r', 0 ,'i','s','u','p','e','r','i',
'o','r', 0 ,'l','s','u','p','e','r','i','o','r', 0 ,'m','s','u',
'p','e','r','i','o','r', 0 ,'n','s','u','p','e','r','i','o','r',
0 ,'o','s','u','p','e','r','i','o','r', 0 ,'r','s','u','p','e',
'r','i','o','r', 0 ,'s','s','u','p','e','r','i','o','r', 0 ,'t',
's','u','p','e','r','i','o','r', 0 ,'f','f', 0 ,'f','f','i', 0 ,
'f','f','l', 0 ,'p','a','r','e','n','l','e','f','t','i','n','f',
'e','r','i','o','r', 0 ,'p','a','r','e','n','r','i','g','h','t',
'i','n','f','e','r','i','o','r', 0 ,'C','i','r','c','u','m','f',
'l','e','x','s','m','a','l','l', 0 ,'h','y','p','h','e','n','s',
'u','p','e','r','i','o','r', 0 ,'G','r','a','v','e','s','m','a',
'l','l', 0 ,'A','s','m','a','l','l', 0 ,'B','s','m','a','l','l',
0 ,'C','s','m','a','l','l', 0 ,'D','s','m','a','l','l', 0 ,'E',
's','m','a','l','l', 0 ,'F','s','m','a','l','l', 0 ,'G','s','m',
'a','l','l', 0 ,'H','s','m','a','l','l', 0 ,'I','s','m','a','l',
'l', 0 ,'J','s','m','a','l','l', 0 ,'K','s','m','a','l','l', 0 ,
'L','s','m','a','l','l', 0 ,'M','s','m','a','l','l', 0 ,'N','s',
'm','a','l','l', 0 ,'O','s','m','a','l','l', 0 ,'P','s','m','a',
'l','l', 0 ,'Q','s','m','a','l','l', 0 ,'R','s','m','a','l','l',
0 ,'S','s','m','a','l','l', 0 ,'T','s','m','a','l','l', 0 ,'U',
's','m','a','l','l', 0 ,'V','s','m','a','l','l', 0 ,'W','s','m',
'a','l','l', 0 ,'X','s','m','a','l','l', 0 ,'Y','s','m','a','l',
'l', 0 ,'Z','s','m','a','l','l', 0 ,'c','o','l','o','n','m','o',
'n','e','t','a','r','y', 0 ,'o','n','e','f','i','t','t','e','d',
0 ,'r','u','p','i','a','h', 0 ,'T','i','l','d','e','s','m','a',
'l','l', 0 ,'e','x','c','l','a','m','d','o','w','n','s','m','a',
'l','l', 0 ,'c','e','n','t','o','l','d','s','t','y','l','e', 0 ,
'L','s','l','a','s','h','s','m','a','l','l', 0 ,'S','c','a','r',
'o','n','s','m','a','l','l', 0 ,'Z','c','a','r','o','n','s','m',
'a','l','l', 0 ,'D','i','e','r','e','s','i','s','s','m','a','l',
'l', 0 ,'B','r','e','v','e','s','m','a','l','l', 0 ,'C','a','r',
'o','n','s','m','a','l','l', 0 ,'D','o','t','a','c','c','e','n',
't','s','m','a','l','l', 0 ,'M','a','c','r','o','n','s','m','a',
'l','l', 0 ,'f','i','g','u','r','e','d','a','s','h', 0 ,'h','y',
'p','h','e','n','i','n','f','e','r','i','o','r', 0 ,'O','g','o',
'n','e','k','s','m','a','l','l', 0 ,'R','i','n','g','s','m','a',
'l','l', 0 ,'C','e','d','i','l','l','a','s','m','a','l','l', 0 ,
'q','u','e','s','t','i','o','n','d','o','w','n','s','m','a','l',
'l', 0 ,'o','n','e','e','i','g','h','t','h', 0 ,'t','h','r','e',
'e','e','i','g','h','t','h','s', 0 ,'f','i','v','e','e','i','g',
'h','t','h','s', 0 ,'s','e','v','e','n','e','i','g','h','t','h',
's', 0 ,'o','n','e','t','h','i','r','d', 0 ,'t','w','o','t','h',
'i','r','d','s', 0 ,'z','e','r','o','s','u','p','e','r','i','o',
'r', 0 ,'f','o','u','r','s','u','p','e','r','i','o','r', 0 ,'f',
'i','v','e','s','u','p','e','r','i','o','r', 0 ,'s','i','x','s',
'u','p','e','r','i','o','r', 0 ,'s','e','v','e','n','s','u','p',
'e','r','i','o','r', 0 ,'e','i','g','h','t','s','u','p','e','r',
'i','o','r', 0 ,'n','i','n','e','s','u','p','e','r','i','o','r',
0 ,'z','e','r','o','i','n','f','e','r','i','o','r', 0 ,'o','n',
'e','i','n','f','e','r','i','o','r', 0 ,'t','w','o','i','n','f',
'e','r','i','o','r', 0 ,'t','h','r','e','e','i','n','f','e','r',
'i','o','r', 0 ,'f','o','u','r','i','n','f','e','r','i','o','r',
0 ,'f','i','v','e','i','n','f','e','r','i','o','r', 0 ,'s','i',
'x','i','n','f','e','r','i','o','r', 0 ,'s','e','v','e','n','i',
'n','f','e','r','i','o','r', 0 ,'e','i','g','h','t','i','n','f',
'e','r','i','o','r', 0 ,'n','i','n','e','i','n','f','e','r','i',
'o','r', 0 ,'c','e','n','t','i','n','f','e','r','i','o','r', 0 ,
'd','o','l','l','a','r','i','n','f','e','r','i','o','r', 0 ,'p',
'e','r','i','o','d','i','n','f','e','r','i','o','r', 0 ,'c','o',
'm','m','a','i','n','f','e','r','i','o','r', 0 ,'A','g','r','a',
'v','e','s','m','a','l','l', 0 ,'A','a','c','u','t','e','s','m',
'a','l','l', 0 ,'A','c','i','r','c','u','m','f','l','e','x','s',
'm','a','l','l', 0 ,'A','t','i','l','d','e','s','m','a','l','l',
0 ,'A','d','i','e','r','e','s','i','s','s','m','a','l','l', 0 ,
'A','r','i','n','g','s','m','a','l','l', 0 ,'A','E','s','m','a',
'l','l', 0 ,'C','c','e','d','i','l','l','a','s','m','a','l','l',
0 ,'E','g','r','a','v','e','s','m','a','l','l', 0 ,'E','a','c',
'u','t','e','s','m','a','l','l', 0 ,'E','c','i','r','c','u','m',
'f','l','e','x','s','m','a','l','l', 0 ,'E','d','i','e','r','e',
's','i','s','s','m','a','l','l', 0 ,'I','g','r','a','v','e','s',
'm','a','l','l', 0 ,'I','a','c','u','t','e','s','m','a','l','l',
0 ,'I','c','i','r','c','u','m','f','l','e','x','s','m','a','l',
'l', 0 ,'I','d','i','e','r','e','s','i','s','s','m','a','l','l',
0 ,'E','t','h','s','m','a','l','l', 0 ,'N','t','i','l','d','e',
's','m','a','l','l', 0 ,'O','g','r','a','v','e','s','m','a','l',
'l', 0 ,'O','a','c','u','t','e','s','m','a','l','l', 0 ,'O','c',
'i','r','c','u','m','f','l','e','x','s','m','a','l','l', 0 ,'O',
't','i','l','d','e','s','m','a','l','l', 0 ,'O','d','i','e','r',
'e','s','i','s','s','m','a','l','l', 0 ,'O','E','s','m','a','l',
'l', 0 ,'O','s','l','a','s','h','s','m','a','l','l', 0 ,'U','g',
'r','a','v','e','s','m','a','l','l', 0 ,'U','a','c','u','t','e',
's','m','a','l','l', 0 ,'U','c','i','r','c','u','m','f','l','e',
'x','s','m','a','l','l', 0 ,'U','d','i','e','r','e','s','i','s',
's','m','a','l','l', 0 ,'Y','a','c','u','t','e','s','m','a','l',
'l', 0 ,'T','h','o','r','n','s','m','a','l','l', 0 ,'Y','d','i',
'e','r','e','s','i','s','s','m','a','l','l', 0 ,'0','0','1','.',
'0','0','0', 0 ,'0','0','1','.','0','0','1', 0 ,'0','0','1','.',
'0','0','2', 0 ,'0','0','1','.','0','0','3', 0 ,'B','l','a','c',
'k', 0 ,'B','o','l','d', 0 ,'B','o','o','k', 0 ,'L','i','g','h',
't', 0 ,'M','e','d','i','u','m', 0 ,'R','e','g','u','l','a','r',
0 ,'R','o','m','a','n', 0 ,'S','e','m','i','b','o','l','d', 0 };
static const char ft_standard_glyph_names[3696] =
{
'.','n','u','l','l', 0,
'n','o','n','m','a','r','k','i','n','g','r','e','t','u','r','n', 0,
'n','o','t','e','q','u','a','l', 0,
'i','n','f','i','n','i','t','y', 0,
'l','e','s','s','e','q','u','a','l', 0,
'g','r','e','a','t','e','r','e','q','u','a','l', 0,
'p','a','r','t','i','a','l','d','i','f','f', 0,
's','u','m','m','a','t','i','o','n', 0,
'p','r','o','d','u','c','t', 0,
'p','i', 0,
'i','n','t','e','g','r','a','l', 0,
'O','m','e','g','a', 0,
'r','a','d','i','c','a','l', 0,
'a','p','p','r','o','x','e','q','u','a','l', 0,
'D','e','l','t','a', 0,
'n','o','n','b','r','e','a','k','i','n','g','s','p','a','c','e', 0,
'l','o','z','e','n','g','e', 0,
'a','p','p','l','e', 0,
'f','r','a','n','c', 0,
'G','b','r','e','v','e', 0,
'g','b','r','e','v','e', 0,
'I','d','o','t','a','c','c','e','n','t', 0,
'S','c','e','d','i','l','l','a', 0,
's','c','e','d','i','l','l','a', 0,
'C','a','c','u','t','e', 0,
'c','a','c','u','t','e', 0,
'C','c','a','r','o','n', 0,
'c','c','a','r','o','n', 0,
'd','c','r','o','a','t', 0,
'.','n','o','t','d','e','f', 0,
's','p','a','c','e', 0,
'e','x','c','l','a','m', 0,
'q','u','o','t','e','d','b','l', 0,
'n','u','m','b','e','r','s','i','g','n', 0,
'd','o','l','l','a','r', 0,
'p','e','r','c','e','n','t', 0,
'a','m','p','e','r','s','a','n','d', 0,
'q','u','o','t','e','r','i','g','h','t', 0,
'p','a','r','e','n','l','e','f','t', 0,
'p','a','r','e','n','r','i','g','h','t', 0,
'a','s','t','e','r','i','s','k', 0,
'p','l','u','s', 0,
'c','o','m','m','a', 0,
'h','y','p','h','e','n', 0,
'p','e','r','i','o','d', 0,
's','l','a','s','h', 0,
'z','e','r','o', 0,
'o','n','e', 0,
't','w','o', 0,
't','h','r','e','e', 0,
'f','o','u','r', 0,
'f','i','v','e', 0,
's','i','x', 0,
's','e','v','e','n', 0,
'e','i','g','h','t', 0,
'n','i','n','e', 0,
'c','o','l','o','n', 0,
's','e','m','i','c','o','l','o','n', 0,
'l','e','s','s', 0,
'e','q','u','a','l', 0,
'g','r','e','a','t','e','r', 0,
'q','u','e','s','t','i','o','n', 0,
'a','t', 0,
'A', 0,
'B', 0,
'C', 0,
'D', 0,
'E', 0,
'F', 0,
'G', 0,
'H', 0,
'I', 0,
'J', 0,
'K', 0,
'L', 0,
'M', 0,
'N', 0,
'O', 0,
'P', 0,
'Q', 0,
'R', 0,
'S', 0,
'T', 0,
'U', 0,
'V', 0,
'W', 0,
'X', 0,
'Y', 0,
'Z', 0,
'b','r','a','c','k','e','t','l','e','f','t', 0,
'b','a','c','k','s','l','a','s','h', 0,
'b','r','a','c','k','e','t','r','i','g','h','t', 0,
'a','s','c','i','i','c','i','r','c','u','m', 0,
'u','n','d','e','r','s','c','o','r','e', 0,
'q','u','o','t','e','l','e','f','t', 0,
'a', 0,
'b', 0,
'c', 0,
'd', 0,
'e', 0,
'f', 0,
'g', 0,
'h', 0,
'i', 0,
'j', 0,
'k', 0,
'l', 0,
'm', 0,
'n', 0,
'o', 0,
'p', 0,
'q', 0,
'r', 0,
's', 0,
't', 0,
'u', 0,
'v', 0,
'w', 0,
'x', 0,
'y', 0,
'z', 0,
'b','r','a','c','e','l','e','f','t', 0,
'b','a','r', 0,
'b','r','a','c','e','r','i','g','h','t', 0,
'a','s','c','i','i','t','i','l','d','e', 0,
'e','x','c','l','a','m','d','o','w','n', 0,
'c','e','n','t', 0,
's','t','e','r','l','i','n','g', 0,
'f','r','a','c','t','i','o','n', 0,
'y','e','n', 0,
'f','l','o','r','i','n', 0,
's','e','c','t','i','o','n', 0,
'c','u','r','r','e','n','c','y', 0,
'q','u','o','t','e','s','i','n','g','l','e', 0,
'q','u','o','t','e','d','b','l','l','e','f','t', 0,
'g','u','i','l','l','e','m','o','t','l','e','f','t', 0,
'g','u','i','l','s','i','n','g','l','l','e','f','t', 0,
'g','u','i','l','s','i','n','g','l','r','i','g','h','t', 0,
'f','i', 0,
'f','l', 0,
'e','n','d','a','s','h', 0,
'd','a','g','g','e','r', 0,
'd','a','g','g','e','r','d','b','l', 0,
'p','e','r','i','o','d','c','e','n','t','e','r','e','d', 0,
'p','a','r','a','g','r','a','p','h', 0,
'b','u','l','l','e','t', 0,
'q','u','o','t','e','s','i','n','g','l','b','a','s','e', 0,
'q','u','o','t','e','d','b','l','b','a','s','e', 0,
'q','u','o','t','e','d','b','l','r','i','g','h','t', 0,
'g','u','i','l','l','e','m','o','t','r','i','g','h','t', 0,
'e','l','l','i','p','s','i','s', 0,
'p','e','r','t','h','o','u','s','a','n','d', 0,
'q','u','e','s','t','i','o','n','d','o','w','n', 0,
'g','r','a','v','e', 0,
'a','c','u','t','e', 0,
'c','i','r','c','u','m','f','l','e','x', 0,
't','i','l','d','e', 0,
'm','a','c','r','o','n', 0,
'b','r','e','v','e', 0,
'd','o','t','a','c','c','e','n','t', 0,
'd','i','e','r','e','s','i','s', 0,
'r','i','n','g', 0,
'c','e','d','i','l','l','a', 0,
'h','u','n','g','a','r','u','m','l','a','u','t', 0,
'o','g','o','n','e','k', 0,
'c','a','r','o','n', 0,
'e','m','d','a','s','h', 0,
'A','E', 0,
'o','r','d','f','e','m','i','n','i','n','e', 0,
'L','s','l','a','s','h', 0,
'O','s','l','a','s','h', 0,
'O','E', 0,
'o','r','d','m','a','s','c','u','l','i','n','e', 0,
'a','e', 0,
'd','o','t','l','e','s','s','i', 0,
'l','s','l','a','s','h', 0,
'o','s','l','a','s','h', 0,
'o','e', 0,
'g','e','r','m','a','n','d','b','l','s', 0,
'o','n','e','s','u','p','e','r','i','o','r', 0,
'l','o','g','i','c','a','l','n','o','t', 0,
'm','u', 0,
't','r','a','d','e','m','a','r','k', 0,
'E','t','h', 0,
'o','n','e','h','a','l','f', 0,
'p','l','u','s','m','i','n','u','s', 0,
'T','h','o','r','n', 0,
'o','n','e','q','u','a','r','t','e','r', 0,
'd','i','v','i','d','e', 0,
'b','r','o','k','e','n','b','a','r', 0,
'd','e','g','r','e','e', 0,
't','h','o','r','n', 0,
't','h','r','e','e','q','u','a','r','t','e','r','s', 0,
't','w','o','s','u','p','e','r','i','o','r', 0,
'r','e','g','i','s','t','e','r','e','d', 0,
'm','i','n','u','s', 0,
'e','t','h', 0,
'm','u','l','t','i','p','l','y', 0,
't','h','r','e','e','s','u','p','e','r','i','o','r', 0,
'c','o','p','y','r','i','g','h','t', 0,
'A','a','c','u','t','e', 0,
'A','c','i','r','c','u','m','f','l','e','x', 0,
'A','d','i','e','r','e','s','i','s', 0,
'A','g','r','a','v','e', 0,
'A','r','i','n','g', 0,
'A','t','i','l','d','e', 0,
'C','c','e','d','i','l','l','a', 0,
'E','a','c','u','t','e', 0,
'E','c','i','r','c','u','m','f','l','e','x', 0,
'E','d','i','e','r','e','s','i','s', 0,
'E','g','r','a','v','e', 0,
'I','a','c','u','t','e', 0,
'I','c','i','r','c','u','m','f','l','e','x', 0,
'I','d','i','e','r','e','s','i','s', 0,
'I','g','r','a','v','e', 0,
'N','t','i','l','d','e', 0,
'O','a','c','u','t','e', 0,
'O','c','i','r','c','u','m','f','l','e','x', 0,
'O','d','i','e','r','e','s','i','s', 0,
'O','g','r','a','v','e', 0,
'O','t','i','l','d','e', 0,
'S','c','a','r','o','n', 0,
'U','a','c','u','t','e', 0,
'U','c','i','r','c','u','m','f','l','e','x', 0,
'U','d','i','e','r','e','s','i','s', 0,
'U','g','r','a','v','e', 0,
'Y','a','c','u','t','e', 0,
'Y','d','i','e','r','e','s','i','s', 0,
'Z','c','a','r','o','n', 0,
'a','a','c','u','t','e', 0,
'a','c','i','r','c','u','m','f','l','e','x', 0,
'a','d','i','e','r','e','s','i','s', 0,
'a','g','r','a','v','e', 0,
'a','r','i','n','g', 0,
'a','t','i','l','d','e', 0,
'c','c','e','d','i','l','l','a', 0,
'e','a','c','u','t','e', 0,
'e','c','i','r','c','u','m','f','l','e','x', 0,
'e','d','i','e','r','e','s','i','s', 0,
'e','g','r','a','v','e', 0,
'i','a','c','u','t','e', 0,
'i','c','i','r','c','u','m','f','l','e','x', 0,
'i','d','i','e','r','e','s','i','s', 0,
'i','g','r','a','v','e', 0,
'n','t','i','l','d','e', 0,
'o','a','c','u','t','e', 0,
'o','c','i','r','c','u','m','f','l','e','x', 0,
'o','d','i','e','r','e','s','i','s', 0,
'o','g','r','a','v','e', 0,
'o','t','i','l','d','e', 0,
's','c','a','r','o','n', 0,
'u','a','c','u','t','e', 0,
'u','c','i','r','c','u','m','f','l','e','x', 0,
'u','d','i','e','r','e','s','i','s', 0,
'u','g','r','a','v','e', 0,
'y','a','c','u','t','e', 0,
'y','d','i','e','r','e','s','i','s', 0,
'z','c','a','r','o','n', 0,
'e','x','c','l','a','m','s','m','a','l','l', 0,
'H','u','n','g','a','r','u','m','l','a','u','t','s','m','a','l','l', 0,
'd','o','l','l','a','r','o','l','d','s','t','y','l','e', 0,
'd','o','l','l','a','r','s','u','p','e','r','i','o','r', 0,
'a','m','p','e','r','s','a','n','d','s','m','a','l','l', 0,
'A','c','u','t','e','s','m','a','l','l', 0,
'p','a','r','e','n','l','e','f','t','s','u','p','e','r','i','o','r', 0,
'p','a','r','e','n','r','i','g','h','t','s','u','p','e','r','i','o','r', 0,
't','w','o','d','o','t','e','n','l','e','a','d','e','r', 0,
'o','n','e','d','o','t','e','n','l','e','a','d','e','r', 0,
'z','e','r','o','o','l','d','s','t','y','l','e', 0,
'o','n','e','o','l','d','s','t','y','l','e', 0,
't','w','o','o','l','d','s','t','y','l','e', 0,
't','h','r','e','e','o','l','d','s','t','y','l','e', 0,
'f','o','u','r','o','l','d','s','t','y','l','e', 0,
'f','i','v','e','o','l','d','s','t','y','l','e', 0,
's','i','x','o','l','d','s','t','y','l','e', 0,
's','e','v','e','n','o','l','d','s','t','y','l','e', 0,
'e','i','g','h','t','o','l','d','s','t','y','l','e', 0,
'n','i','n','e','o','l','d','s','t','y','l','e', 0,
'c','o','m','m','a','s','u','p','e','r','i','o','r', 0,
't','h','r','e','e','q','u','a','r','t','e','r','s','e','m','d','a','s','h', 0,
'p','e','r','i','o','d','s','u','p','e','r','i','o','r', 0,
'q','u','e','s','t','i','o','n','s','m','a','l','l', 0,
'a','s','u','p','e','r','i','o','r', 0,
'b','s','u','p','e','r','i','o','r', 0,
'c','e','n','t','s','u','p','e','r','i','o','r', 0,
'd','s','u','p','e','r','i','o','r', 0,
'e','s','u','p','e','r','i','o','r', 0,
'i','s','u','p','e','r','i','o','r', 0,
'l','s','u','p','e','r','i','o','r', 0,
'm','s','u','p','e','r','i','o','r', 0,
'n','s','u','p','e','r','i','o','r', 0,
'o','s','u','p','e','r','i','o','r', 0,
'r','s','u','p','e','r','i','o','r', 0,
's','s','u','p','e','r','i','o','r', 0,
't','s','u','p','e','r','i','o','r', 0,
'f','f', 0,
'f','f','i', 0,
'f','f','l', 0,
'p','a','r','e','n','l','e','f','t','i','n','f','e','r','i','o','r', 0,
'p','a','r','e','n','r','i','g','h','t','i','n','f','e','r','i','o','r', 0,
'C','i','r','c','u','m','f','l','e','x','s','m','a','l','l', 0,
'h','y','p','h','e','n','s','u','p','e','r','i','o','r', 0,
'G','r','a','v','e','s','m','a','l','l', 0,
'A','s','m','a','l','l', 0,
'B','s','m','a','l','l', 0,
'C','s','m','a','l','l', 0,
'D','s','m','a','l','l', 0,
'E','s','m','a','l','l', 0,
'F','s','m','a','l','l', 0,
'G','s','m','a','l','l', 0,
'H','s','m','a','l','l', 0,
'I','s','m','a','l','l', 0,
'J','s','m','a','l','l', 0,
'K','s','m','a','l','l', 0,
'L','s','m','a','l','l', 0,
'M','s','m','a','l','l', 0,
'N','s','m','a','l','l', 0,
'O','s','m','a','l','l', 0,
'P','s','m','a','l','l', 0,
'Q','s','m','a','l','l', 0,
'R','s','m','a','l','l', 0,
'S','s','m','a','l','l', 0,
'T','s','m','a','l','l', 0,
'U','s','m','a','l','l', 0,
'V','s','m','a','l','l', 0,
'W','s','m','a','l','l', 0,
'X','s','m','a','l','l', 0,
'Y','s','m','a','l','l', 0,
'Z','s','m','a','l','l', 0,
'c','o','l','o','n','m','o','n','e','t','a','r','y', 0,
'o','n','e','f','i','t','t','e','d', 0,
'r','u','p','i','a','h', 0,
'T','i','l','d','e','s','m','a','l','l', 0,
'e','x','c','l','a','m','d','o','w','n','s','m','a','l','l', 0,
'c','e','n','t','o','l','d','s','t','y','l','e', 0,
'L','s','l','a','s','h','s','m','a','l','l', 0,
'S','c','a','r','o','n','s','m','a','l','l', 0,
'Z','c','a','r','o','n','s','m','a','l','l', 0,
'D','i','e','r','e','s','i','s','s','m','a','l','l', 0,
'B','r','e','v','e','s','m','a','l','l', 0,
'C','a','r','o','n','s','m','a','l','l', 0,
'D','o','t','a','c','c','e','n','t','s','m','a','l','l', 0,
'M','a','c','r','o','n','s','m','a','l','l', 0,
'f','i','g','u','r','e','d','a','s','h', 0,
'h','y','p','h','e','n','i','n','f','e','r','i','o','r', 0,
'O','g','o','n','e','k','s','m','a','l','l', 0,
'R','i','n','g','s','m','a','l','l', 0,
'C','e','d','i','l','l','a','s','m','a','l','l', 0,
'q','u','e','s','t','i','o','n','d','o','w','n','s','m','a','l','l', 0,
'o','n','e','e','i','g','h','t','h', 0,
't','h','r','e','e','e','i','g','h','t','h','s', 0,
'f','i','v','e','e','i','g','h','t','h','s', 0,
's','e','v','e','n','e','i','g','h','t','h','s', 0,
'o','n','e','t','h','i','r','d', 0,
't','w','o','t','h','i','r','d','s', 0,
'z','e','r','o','s','u','p','e','r','i','o','r', 0,
'f','o','u','r','s','u','p','e','r','i','o','r', 0,
'f','i','v','e','s','u','p','e','r','i','o','r', 0,
's','i','x','s','u','p','e','r','i','o','r', 0,
's','e','v','e','n','s','u','p','e','r','i','o','r', 0,
'e','i','g','h','t','s','u','p','e','r','i','o','r', 0,
'n','i','n','e','s','u','p','e','r','i','o','r', 0,
'z','e','r','o','i','n','f','e','r','i','o','r', 0,
'o','n','e','i','n','f','e','r','i','o','r', 0,
't','w','o','i','n','f','e','r','i','o','r', 0,
't','h','r','e','e','i','n','f','e','r','i','o','r', 0,
'f','o','u','r','i','n','f','e','r','i','o','r', 0,
'f','i','v','e','i','n','f','e','r','i','o','r', 0,
's','i','x','i','n','f','e','r','i','o','r', 0,
's','e','v','e','n','i','n','f','e','r','i','o','r', 0,
'e','i','g','h','t','i','n','f','e','r','i','o','r', 0,
'n','i','n','e','i','n','f','e','r','i','o','r', 0,
'c','e','n','t','i','n','f','e','r','i','o','r', 0,
'd','o','l','l','a','r','i','n','f','e','r','i','o','r', 0,
'p','e','r','i','o','d','i','n','f','e','r','i','o','r', 0,
'c','o','m','m','a','i','n','f','e','r','i','o','r', 0,
'A','g','r','a','v','e','s','m','a','l','l', 0,
'A','a','c','u','t','e','s','m','a','l','l', 0,
'A','c','i','r','c','u','m','f','l','e','x','s','m','a','l','l', 0,
'A','t','i','l','d','e','s','m','a','l','l', 0,
'A','d','i','e','r','e','s','i','s','s','m','a','l','l', 0,
'A','r','i','n','g','s','m','a','l','l', 0,
'A','E','s','m','a','l','l', 0,
'C','c','e','d','i','l','l','a','s','m','a','l','l', 0,
'E','g','r','a','v','e','s','m','a','l','l', 0,
'E','a','c','u','t','e','s','m','a','l','l', 0,
'E','c','i','r','c','u','m','f','l','e','x','s','m','a','l','l', 0,
'E','d','i','e','r','e','s','i','s','s','m','a','l','l', 0,
'I','g','r','a','v','e','s','m','a','l','l', 0,
'I','a','c','u','t','e','s','m','a','l','l', 0,
'I','c','i','r','c','u','m','f','l','e','x','s','m','a','l','l', 0,
'I','d','i','e','r','e','s','i','s','s','m','a','l','l', 0,
'E','t','h','s','m','a','l','l', 0,
'N','t','i','l','d','e','s','m','a','l','l', 0,
'O','g','r','a','v','e','s','m','a','l','l', 0,
'O','a','c','u','t','e','s','m','a','l','l', 0,
'O','c','i','r','c','u','m','f','l','e','x','s','m','a','l','l', 0,
'O','t','i','l','d','e','s','m','a','l','l', 0,
'O','d','i','e','r','e','s','i','s','s','m','a','l','l', 0,
'O','E','s','m','a','l','l', 0,
'O','s','l','a','s','h','s','m','a','l','l', 0,
'U','g','r','a','v','e','s','m','a','l','l', 0,
'U','a','c','u','t','e','s','m','a','l','l', 0,
'U','c','i','r','c','u','m','f','l','e','x','s','m','a','l','l', 0,
'U','d','i','e','r','e','s','i','s','s','m','a','l','l', 0,
'Y','a','c','u','t','e','s','m','a','l','l', 0,
'T','h','o','r','n','s','m','a','l','l', 0,
'Y','d','i','e','r','e','s','i','s','s','m','a','l','l', 0,
'0','0','1','.','0','0','0', 0,
'0','0','1','.','0','0','1', 0,
'0','0','1','.','0','0','2', 0,
'0','0','1','.','0','0','3', 0,
'B','l','a','c','k', 0,
'B','o','l','d', 0,
'B','o','o','k', 0,
'L','i','g','h','t', 0,
'M','e','d','i','u','m', 0,
'R','e','g','u','l','a','r', 0,
'R','o','m','a','n', 0,
'S','e','m','i','b','o','l','d', 0,
};
#define FT_NUM_MAC_NAMES 258
static const short ft_mac_names[258] =
{
/* Values are offsets into the `ft_standard_glyph_names' table */
static const short ft_mac_names[FT_NUM_MAC_NAMES] =
{
253, 0, 6, 261, 267, 274, 283, 294, 301, 309, 758, 330, 340, 351,
360, 365, 371, 378, 385, 391, 396, 400, 404, 410, 415, 420, 424, 430,
436, 441, 447, 457, 462, 468, 476, 485, 488, 490, 492, 494, 496, 498,
@ -276,12 +469,15 @@ static const short ft_mac_names[258] =
1066,1073,1101,1143,1536,1783,1596,1843,1253,1207,1319,1579,1826,1229,
1270,1313,1323,1171,1290,1332,1211,1235,1276, 169, 175, 182, 189, 200,
209, 218, 225, 232, 239, 246
};
};
#define FT_NUM_SID_NAMES 391
static const short ft_sid_names[391] =
{
/* Values are offsets into the `ft_standard_glyph_names' table */
static const short ft_sid_names[FT_NUM_SID_NAMES] =
{
253, 261, 267, 274, 283, 294, 301, 309, 319, 330, 340, 351, 360, 365,
371, 378, 385, 391, 396, 400, 404, 410, 415, 420, 424, 430, 436, 441,
447, 457, 462, 468, 476, 485, 488, 490, 492, 494, 496, 498, 500, 502,
@ -310,11 +506,12 @@ static const short ft_sid_names[391] =
3237,3249,3264,3275,3283,3297,3309,3321,3338,3353,3365,3377,3394,3409,
3418,3430,3442,3454,3471,3483,3498,3506,3518,3530,3542,3559,3574,3586,
3597,3612,3620,3628,3636,3644,3650,3655,3660,3666,3673,3681,3687
};
};
/* the following are indices into the SID name table */
static const unsigned short t1_standard_encoding[256] =
{
/* the following are indices into the SID name table */
static const unsigned short t1_standard_encoding[256] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
@ -331,11 +528,12 @@ static const unsigned short t1_standard_encoding[256] =
137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,138, 0,139, 0, 0, 0, 0,140,141,142,143, 0, 0, 0, 0,
0,144, 0, 0, 0,145, 0, 0,146,147,148,149, 0, 0, 0, 0
};
};
/* the following are indices into the SID name table */
static const unsigned short t1_expert_encoding[256] =
{
/* the following are indices into the SID name table */
static const unsigned short t1_expert_encoding[256] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1,229,230, 0,231,232,233,234,235,236,237,238, 13, 14, 15, 99,
@ -352,19 +550,19 @@ static const unsigned short t1_expert_encoding[256] =
331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,
347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,
363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378
};
};
/* this table is a compressed version of the Adobe Glyph List
* which has been optimized for efficient searching. It has
* been generated by the 'glnames.py' python script located
* in the 'src/tools' directory.
/*
* This table is a compressed version of the Adobe Glyph List (AGL),
* optimized for efficient searching. It has been generated by the
* `glnames.py' python script located in the `src/tools' directory.
*
* the corresponding lookup function is defined just below
* the table (several pages down this text :-)
* The lookup function to get the Unicode value for a given string
* is defined below the table.
*/
static const unsigned char ft_adobe_glyph_list[54791] =
{
static const unsigned char ft_adobe_glyph_list[54791] =
{
0, 52, 0,106, 2,167, 3, 63, 4,220, 6,125, 9,143, 10, 23,
11,137, 12,199, 14,246, 15, 87, 16,233, 17,219, 18,104, 19, 88,
22,110, 23, 32, 23, 71, 24, 77, 27,156, 29, 73, 31,247, 32,107,
@ -3790,11 +3988,11 @@ static const unsigned char ft_adobe_glyph_list[54791] =
2,144,243,244,242,239,235,101,128, 1,182,117, 2,213,241,213,
252,232,233,242,225,231,225,238, 97,128, 48, 90,235,225,244,225,
235,225,238, 97,128, 48,186
};
};
/* this is the wicked routine used to search our compressed
* table efficiently
/*
* This function searches the compressed table efficiently.
*/
static unsigned long
ft_get_adobe_glyph_index( const char* name,
@ -3804,6 +4002,7 @@ static const unsigned char ft_adobe_glyph_list[54791] =
int count, min, max;
const unsigned char* p = ft_adobe_glyph_list;
if ( name == 0 || name >= limit )
goto NotFound;
@ -3816,11 +4015,12 @@ static const unsigned char ft_adobe_glyph_list[54791] =
while ( min < max )
{
int mid = (min+max) >> 1;
const unsigned char* q = p + mid*2;
int mid = ( min + max ) >> 1;
const unsigned char* q = p + mid * 2;
int c2;
q = ft_adobe_glyph_list + (((int)q[0] << 8) | q[1]);
q = ft_adobe_glyph_list + ( ( (int)q[0] << 8 ) | q[1] );
c2 = q[0] & 127;
if ( c2 == c )
@ -3829,7 +4029,7 @@ static const unsigned char ft_adobe_glyph_list[54791] =
goto Found;
}
if ( c2 < c )
min = mid+1;
min = mid + 1;
else
max = mid;
}
@ -3844,7 +4044,7 @@ static const unsigned char ft_adobe_glyph_list[54791] =
{
if ( (p[0] & 128) == 0 &&
(p[1] & 128) != 0 )
return (unsigned long)(((int)p[2] << 8) | p[3]);
return (unsigned long)( ( (int)p[2] << 8 ) | p[3] );
goto NotFound;
}
@ -3867,10 +4067,10 @@ static const unsigned char ft_adobe_glyph_list[54791] =
for ( ; count > 0; count--, p += 2 )
{
int offset = ((int)p[0] << 8) | p[1];
int offset = ( (int)p[0] << 8 ) | p[1];
const unsigned char* q = ft_adobe_glyph_list + offset;
if ( c == (q[0] & 127) )
if ( c == ( q[0] & 127 ) )
{
p = q;
goto NextIter;
@ -3886,4 +4086,5 @@ static const unsigned char ft_adobe_glyph_list[54791] =
return 0;
}
/* END */

View File

@ -6,7 +6,7 @@
#
# Copyright 1996-2000, 2003 by
# Copyright 1996-2000, 2003, 2005 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@ -20,20 +20,23 @@
usage: %s <output-file>
This very simple python script is used to generate the glyph names
tables defined in the PSNames module.
This python script generates the glyph names tables defined in the
PSNames module.
Its single argument is the name of the header file to be created.
"""
import sys, string, struct
import sys, string, struct, re, os.path
# This table is used to name the glyphs according to the Macintosh
# specification. It is used by the TrueType Postscript names table.
# This table lists the glyphs according to the Macintosh specification.
# It is used by the TrueType Postscript names table.
#
# See
#
# http://fonts.apple.com/TTRefMan/RM06/Chap6post.html
#
# See http://fonts.apple.com/TTRefMan/RM06/Chap6post.html
# for the official list.
#
mac_standard_names = \
@ -145,8 +148,9 @@ mac_standard_names = \
]
# The list of standard "SID" glyph names. For the official list,
# The list of standard `SID' glyph names. For the official list,
# see Annex A of document at
#
# http://partners.adobe.com/asn/developer/pdfs/tn/5176.CFF.pdf.
#
sid_standard_names = \
@ -4702,54 +4706,46 @@ zukatakana;30BA
# string table management
#
class StringTable:
def __init__(self,name_list):
def __init__( self, name_list, master_table_name ):
self.names = name_list
self.master_table = master_table_name
self.indices = {}
index = 0
for name in name_list:
self.indices[name] = index
index += len(name) + 1
index += len( name ) + 1
self.total = index
def dump(self,file,table_name):
def dump( self, file ):
write = file.write
write( "static const char " + table_name + "["+repr(self.total)+"] =\n" )
write( "{\n" )
column = 0
line = " "
comma = ""
write( " static const char " + self.master_table +
"[" + repr( self.total ) + "] =\n" )
write( " {\n" )
line = ""
for name in self.names:
for n in range(len(name)):
line += comma
line += "'%c'" % name[n]
comma = ","
column += 1
if column == 16:
column = 0
comma = ",\n "
line += comma
line += " 0 "
comma = ","
column += 1
if column == 16:
column = 0
comma = ",\n "
line += " '"
line += string.join( ( re.findall( ".", name ) ), "','" )
line += "', 0,\n"
if column != 0:
line += "\n"
write( line + " };\n\n\n" )
write( line + "};\n\n" )
def dump_sublist(self,file,table_name,macro_name,sublist):
def dump_sublist( self, file, table_name, macro_name, sublist ):
write = file.write
write( "#define "+macro_name+" "+repr(len(sublist))+"\n\n" )
write( "static const short " + table_name + "["+repr(len(sublist))+"] =\n" )
write( "{\n" )
write( "#define " + macro_name + " " + repr( len( sublist ) ) + "\n\n" )
write( " /* Values are offsets into the `" +
self.master_table + "' table */\n\n" )
write( " static const short " + table_name +
"[" + macro_name + "] =\n" )
write( " {\n" )
line = " "
comma = ""
col = 0
for name in sublist:
line += comma
line += "%4d" % self.indices[name]
@ -4759,71 +4755,78 @@ class StringTable:
col = 0
comma = ",\n "
write( line + "\n};\n\n" )
write( line + "\n };\n\n\n" )
class StringNode:
def __init__(self,letter,value):
def __init__( self, letter, value ):
self.letter = letter
self.value = value
self.children = {}
def __cmp__(self,other):
return ord(self.letter[0]) - ord(other.letter[0])
def __cmp__( self, other ):
return ord( self.letter[0] ) - ord( other.letter[0] )
def add(self,word,value):
if len(word) == 0:
def add( self, word, value ):
if len( word ) == 0:
self.value = value
return
letter = word[0]
word = word[1:]
if self.children.has_key(letter):
if self.children.has_key( letter ):
child = self.children[letter]
else:
child = StringNode(letter,0)
child = StringNode( letter, 0 )
self.children[letter] = child
child.add(word,value)
def optimize(self):
child.add( word, value )
def optimize( self ):
# optimize all children first
children = self.children.values()
self.children = {}
for child in children:
self.children[child.letter[0]] = child.optimize()
# don't optimize if there's a value,
# if we don't have any child or if we
# have more than one child
if (self.value != 0) or (not children) or len(children) > 1:
if ( self.value != 0 ) or ( not children ) or len( children ) > 1:
return self
child = children[0]
self.letter += child.letter
self.value = child.value
self.children = child.children
return self
def dump_debug(self,write,margin):
def dump_debug( self, write, margin ):
# this is used during debugging
line = margin + "+-"
if len(self.letter) == 0:
if len( self.letter ) == 0:
line += "<NOLETTER>"
else:
line += self.letter
if self.value:
line += " => " + repr(self.value)
line += " => " + repr( self.value )
write( line + "\n" )
write( line+"\n" )
if self.children:
margin += "| "
for child in self.children.values():
child.dump_debug(write,margin)
child.dump_debug( write, margin )
def locate(self,index):
def locate( self, index ):
self.index = index
if len(self.letter) > 0:
index += len(self.letter)+1
if len( self.letter ) > 0:
index += len( self.letter ) + 1
else:
index += 2
@ -4832,30 +4835,33 @@ class StringNode:
children = self.children.values()
children.sort()
index += 2*len(children)
index += 2 * len( children )
for child in children:
index = child.locate(index)
index = child.locate( index )
return index
def store(self,storage):
def store( self, storage ):
# write the letters
l = len(self.letter)
l = len( self.letter )
if l == 0:
storage += struct.pack("B",0)
storage += struct.pack( "B", 0 )
else:
for n in range(l):
val = ord(self.letter[n])
if n < l-1:
for n in range( l ):
val = ord( self.letter[n] )
if n < l - 1:
val += 128
storage += struct.pack("B",val)
storage += struct.pack( "B", val )
# write the count
children = self.children.values()
children.sort()
count = len(children)
count = len( children )
if self.value != 0:
storage += struct.pack( "!BH", count+128, self.value )
storage += struct.pack( "!BH", count + 128, self.value )
else:
storage += struct.pack( "B", count )
@ -4863,28 +4869,10 @@ class StringNode:
storage += struct.pack( "!H", child.index )
for child in children:
storage = child.store(storage)
storage = child.store( storage )
return storage
t1_bias = 0
glyph_list = []
def adobe_glyph_names():
"""return the list of glyph names from the adobe list"""
lines = string.split( adobe_glyph_list, '\n' )
glyphs = []
for line in lines:
if line:
fields = string.split( line, ';' )
# print fields[1] + ' - ' + fields[0]
glyphs.append( fields[0] )
return glyphs
def adobe_glyph_values():
"""return the list of glyph names and their unicode values"""
@ -4906,7 +4894,7 @@ def adobe_glyph_values():
def filter_glyph_names( alist, filter ):
"""filter 'alist' by taking _out_ all glyph names that are in 'filter'"""
"""filter `alist' by taking _out_ all glyph names that are in `filter'"""
count = 0
extras = []
@ -4920,15 +4908,14 @@ def filter_glyph_names( alist, filter ):
return extras
def dump_encoding( file, encoding_name, encoding_list ):
"""dumps a given encoding"""
"""dump a given encoding"""
write = file.write
write( "/* the following are indices into the SID name table */\n" )
write( "static const unsigned short " + encoding_name + "[" + \
repr( len( encoding_list ) ) + "] =\n" )
write( "{\n" )
write( " /* the following are indices into the SID name table */\n" )
write( " static const unsigned short " + encoding_name +
"[" + repr( len( encoding_list ) ) + "] =\n" )
write( " {\n" )
line = " "
comma = ""
@ -4942,33 +4929,35 @@ def dump_encoding( file, encoding_name, encoding_list ):
col = 0
comma = ",\n "
write( line + "\n};\n\n" )
write( line + "\n };\n\n\n" )
def dump_array( the_array, write, array_name ):
"""dumps a given encoding"""
write( "static const unsigned char " + array_name + "[" + \
repr(len(the_array)) + "] =\n" )
write( "{\n" )
write( " static const unsigned char " + array_name +
"[" + repr( len( the_array ) ) + "] =\n" )
write( " {\n" )
line = ""
comma = " "
col = 0
for value in the_array:
line += comma
line += "%3d" % ord(value)
line += "%3d" % ord( value )
comma = ","
col += 1
if col == 16:
col = 0
comma = ",\n "
if len(line) > 1024:
if len( line ) > 1024:
write( line )
line = ""
write( line + "\n};\n\n" )
write( line + "\n };\n\n\n" )
def main():
@ -4983,23 +4972,22 @@ def main():
count_sid = len( sid_standard_names )
# 'mac_extras' contains the list of glyph names in the Macintosh standard
# `mac_extras' contains the list of glyph names in the Macintosh standard
# encoding which are not in the SID Standard Names.
#
mac_extras = filter_glyph_names( mac_standard_names, sid_standard_names )
# 'base_list' contains the names of our final glyph names table.
# It consists of the 'mac_extras' glyph names, followed by the SID
# Standard names.
# `base_list' contains the names of our final glyph names table.
# It consists of the `mac_extras' glyph names, followed by the SID
# standard names.
#
mac_extras_count = len( mac_extras )
t1_bias = mac_extras_count
base_list = mac_extras + sid_standard_names
write( "/***************************************************************************/\n" )
write( "/* */\n" )
write( "/* %-71s*/\n" % sys.argv[1] )
write( "/* %-71s*/\n" % os.path.basename( sys.argv[1] ) )
write( "/* */\n" )
write( "/* PostScript glyph names. */\n" )
@ -5016,17 +5004,19 @@ def main():
write( "/***************************************************************************/\n" )
write( "\n" )
write( "\n" )
write( " /* ALL of this file has been generated automatically -- do not edit! */\n" )
write( " /* This file has been generated automatically -- do not edit! */\n" )
write( "\n" )
write( "\n" )
# dump final glyph list (mac extras + sid standard names)
#
st = StringTable(base_list)
st = StringTable( base_list, "ft_standard_glyph_names" )
st.dump(file,"ft_standard_glyph_names")
st.dump_sublist(file,"ft_mac_names","FT_NUM_MAC_NAMES",mac_standard_names)
st.dump_sublist(file,"ft_sid_names","FT_NUM_SID_NAMES",sid_standard_names)
st.dump( file )
st.dump_sublist( file, "ft_mac_names",
"FT_NUM_MAC_NAMES", mac_standard_names )
st.dump_sublist( file, "ft_sid_names",
"FT_NUM_SID_NAMES", sid_standard_names )
dump_encoding( file, "t1_standard_encoding", t1_standard_encoding )
dump_encoding( file, "t1_expert_encoding", t1_expert_encoding )
@ -5035,31 +5025,32 @@ def main():
#
agl_glyphs, agl_values = adobe_glyph_values()
dict = StringNode( "", 0 )
for g in range(len(agl_glyphs)):
dict.add(agl_glyphs[g],eval("0x"+agl_values[g]))
for g in range( len( agl_glyphs ) ):
dict.add( agl_glyphs[g], eval( "0x" + agl_values[g] ) )
dict = dict.optimize()
dict_len = dict.locate(0)
dict_array = dict.store("")
dict_len = dict.locate( 0 )
dict_array = dict.store( "" )
write( """
/* this table is a compressed version of the Adobe Glyph List
* which has been optimized for efficient searching. It has
* been generated by the 'glnames.py' python script located
* in the 'src/tools' directory.
write( """\
/*
* This table is a compressed version of the Adobe Glyph List (AGL),
* optimized for efficient searching. It has been generated by the
* `glnames.py' python script located in the `src/tools' directory.
*
* the corresponding lookup function is defined just below
* the table (several pages down this text :-)
* The lookup function to get the Unicode value for a given string
* is defined below the table.
*/
""" )
dump_array(dict_array,write,"ft_adobe_glyph_list")
dump_array( dict_array, write, "ft_adobe_glyph_list" )
# write the lookup routine now
#
write( """
/* this is the wicked routine used to search our compressed
* table efficiently
write( """\
/*
* This function searches the compressed table efficiently.
*/
static unsigned long
ft_get_adobe_glyph_index( const char* name,
@ -5069,6 +5060,7 @@ def main():
int count, min, max;
const unsigned char* p = ft_adobe_glyph_list;
if ( name == 0 || name >= limit )
goto NotFound;
@ -5081,11 +5073,12 @@ def main():
while ( min < max )
{
int mid = (min+max) >> 1;
const unsigned char* q = p + mid*2;
int mid = ( min + max ) >> 1;
const unsigned char* q = p + mid * 2;
int c2;
q = ft_adobe_glyph_list + (((int)q[0] << 8) | q[1]);
q = ft_adobe_glyph_list + ( ( (int)q[0] << 8 ) | q[1] );
c2 = q[0] & 127;
if ( c2 == c )
@ -5094,7 +5087,7 @@ def main():
goto Found;
}
if ( c2 < c )
min = mid+1;
min = mid + 1;
else
max = mid;
}
@ -5109,7 +5102,7 @@ def main():
{
if ( (p[0] & 128) == 0 &&
(p[1] & 128) != 0 )
return (unsigned long)(((int)p[2] << 8) | p[3]);
return (unsigned long)( ( (int)p[2] << 8 ) | p[3] );
goto NotFound;
}
@ -5132,10 +5125,10 @@ def main():
for ( ; count > 0; count--, p += 2 )
{
int offset = ((int)p[0] << 8) | p[1];
int offset = ( (int)p[0] << 8 ) | p[1];
const unsigned char* q = ft_adobe_glyph_list + offset;
if ( c == (q[0] & 127) )
if ( c == ( q[0] & 127 ) )
{
p = q;
goto NextIter;
@ -5161,31 +5154,34 @@ def main():
write( "static const char* const the_names[] = {\n" )
for name in agl_glyphs:
write( ' "'+name+'",\n' )
write( ' "' + name + '",\n' )
write( " 0\n};\n" )
write( "static const unsigned long the_values[] = {\n" )
for val in agl_values:
write( ' 0x'+val+',\n' )
write( ' 0x' + val + ',\n' )
write( " 0\n};\n" )
write( """
#include <stdlib.h>
#include <stdio.h>
int main( void )
int
main( void )
{
int result = 0;
const char* const* names = the_names;
const unsigned long* values = the_values;
for ( ; *names; names++, values++ )
{
const char* name = *names;
unsigned long reference = *values;
unsigned long value;
value = ft_get_adobe_glyph_index( name, name + strlen(name) );
value = ft_get_adobe_glyph_index( name, name + strlen( name ) );
if ( value != reference )
{
result = 1;
@ -5197,9 +5193,10 @@ def main():
return result;
}
""" )
write( "#endif /* TEST */\n" )
write("/* END */\n")
write("\n/* END */\n")
# Now run the main routine