shithub: freetype+ttf2subf

Download patch

ref: 5c9a571a5a25da31507f0c70030296bf569acacc
parent: a9369f2dc96eec2f8cdb00c4bde5b452e5b462b8
author: David Turner <[email protected]>
date: Thu Feb 10 08:10:32 EST 2000

new psnames module

git/fs: mount .git/fs: mount/attach disallowed
--- /dev/null
+++ b/src/psnames/module.mk
@@ -1,0 +1,6 @@
+make_module_list: add_psnames_driver
+
+add_psnames_driver:
+	$(OPEN_DRIVER)psnames_driver_interface$(CLOSE_DRIVER)
+	$(ECHO_DRIVER)psnames   $(ECHO_DRIVER_DESC) Postscript & Unicode Glyph name handling $(ECHO_DRIVER_DONE)
+
--- /dev/null
+++ b/src/psnames/psdriver.c
@@ -1,0 +1,258 @@
+#include <psdriver.h>
+#include <psnames.h>
+#include <ftobjs.h>
+#include <stdlib.h>
+
+#ifndef FT_CONFIG_OPTION_NO_POSTSCRIPT_NAMES
+
+/* see the python script "freetype2/docs/glnames.py" which is used */
+/* to generate the following tables...                             */
+#include <pstables.h>
+
+#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
+ /* 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..                   */
+ /*                                                                    */
+  static
+  FT_ULong  PS_Unicode_Value( const char* glyph_name )
+  {
+    FT_Int  n;
+    char    first = glyph_name[0];
+    char    temp[64];
+    
+    /* if the name begins with "uni", then the glyph name may be a */
+    /* hard-coded unicode character code..                         */
+    if ( glyph_name[0] == 'u' &&
+         glyph_name[1] == 'n' &&
+         glyph_name[2] == 'i' )
+    {
+      /* determine wether the following characters are hexadecimal */
+      FT_Int      count;
+      FT_ULong    value = 0;
+      const char* p     = glyph_name + 4;
+
+      for ( count = 4;count > 0; count--, p++ )
+      {
+        char           c = *p;
+        unsigned char  d;
+        
+        d = (unsigned char)c-'0';
+        if (d >= 10)
+        {
+          d = (unsigned char)c - 'A';
+          if ( d >= 6 )
+            d = 16;
+          else
+            d += 10;
+        }
+        /* exit if one non-uppercase-hexadecimal character was found */
+        if (d >= 16)
+          break;
+          
+        value = (value << 4) + d;
+        if (count == 0)
+          return value;
+      }
+    }
+
+    /* look for a non-initial dot in the glyph name in order to */
+    /* sort-out variants like "A.swash", "e.final", etc..       */
+    {
+      const char*  p;
+      int          len;
+      
+      p = glyph_name;
+      while ( *p && *p != '.' ) p++;
+      len = p-glyph_name;
+      
+      if ( *p && len < 64 )
+      {
+        strncpy( temp, glyph_name, len );
+        temp[len]  = 0;
+        glyph_name = temp;
+      }
+    }
+        
+    /* now, lookup the glyph in the Adobe Glyph List */
+    for ( n = 0; n < NUM_ADOBE_GLYPHS; n++ )
+    {
+      const char*  name = t1_standard_glyphs[n];
+      
+      if ( first == name[0] && strcmp( glyph_name, name ) == 0 )
+        return names_to_unicode[n];
+    }
+    /* not found, there is probably no Unicode value for this glyph name */
+    return 0;
+  }
+
+  
+ /* qsort callback to sort the unicode map */
+  static
+  int  compare_uni_maps( const void* a, const void* b )
+  {
+    PS_UniMap*  map1 = (PS_UniMap*)a;
+    PS_UniMap*  map2 = (PS_UniMap*)b;
+    
+    return ( map1->unicode < map2->unicode ? -1 :
+             map1->unicode > map2->unicode ?  1 : 0 );
+  }
+
+
+ /* Builds a table that maps Unicode values to glyph indices */
+  static
+  FT_Error  PS_Build_Unicode_Table( FT_Memory     memory,
+                                    FT_UInt       num_glyphs,
+                                    const char**  glyph_names,
+                                    PS_Unicodes  *table )
+  {
+    FT_Error  error;
+    
+    /* we first allocate the table */
+    table->num_maps = 0;
+    table->maps     = 0;
+    
+    if ( !ALLOC_ARRAY( table->maps, num_glyphs, PS_UniMap ) )
+    {
+      FT_UInt     n;
+      FT_UInt     count;
+      PS_UniMap*  map;
+      FT_ULong    uni_char;
+      
+      map = table->maps;
+      for ( n = 0; n < num_glyphs; n++ )
+      {
+        const char*  gname = glyph_names[n];
+        if (gname)
+        {
+          uni_char = PS_Unicode_Value(gname);
+          if (uni_char && uni_char != 0xFFFF)
+          {
+            map->unicode     = uni_char;
+            map->glyph_index = n;
+            map++;
+          }
+        }
+      }
+
+      /* now, compress the table a bit */
+      count = map - table->maps;
+      if ( count > 0 && REALLOC( table->maps,
+                                 num_glyphs*sizeof(PS_UniMap),
+                                 count*sizeof(PS_UniMap) ) )
+      {
+        count = 0;
+      }
+      
+      if (count == 0)
+      {
+        FREE( table->maps );
+        if (!error)
+          error = FT_Err_Invalid_Argument;  /* no unicode chars here !! */
+      }
+      else
+        /* sort the table in increasing order of unicode values */
+        qsort( table->maps, count, sizeof(PS_UniMap), compare_uni_maps );
+
+      table->num_maps = count;
+    }
+    return error;
+  }
+
+  static
+  FT_UInt  PS_Lookup_Unicode( PS_Unicodes*  table,
+                              FT_ULong      unicode )
+  {
+    PS_UniMap  *min, *max, *mid;
+    /* perform a binary search on the table */
+    min = table->maps;
+    max = min + table->num_maps - 1;
+    
+    while (min <= max)
+    {
+      mid = min + (max-min)/2;
+      if ( mid->unicode == unicode )
+        return mid->glyph_index;
+        
+      if (min == max)
+        break;
+        
+      if ( mid->unicode < unicode ) min = mid+1;
+                               else max = mid-1;
+    }
+
+    return 0xFFFF;
+  }
+  
+#endif
+
+  static
+  const char*  PS_Macintosh_Name( FT_UInt  name_index )
+  {
+    if (name_index >= 258)
+      name_index = 0;
+      
+    return standard_glyph_names[ mac_standard_names[name_index] ];
+  }
+
+  
+  static
+  const char*  PS_Standard_Strings( FT_UInt  sid )
+  {
+    return (sid < NUM_STD_GLYPHS ? t1_standard_glyphs[sid] : 0);
+  }
+  
+  static const  PSNames_Interface  psnames_interface =
+  {
+#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
+    (PS_Unicode_Value_Func)     PS_Unicode_Value,
+    (PS_Build_Unicodes_Func)    PS_Build_Unicode_Table,
+    (PS_Lookup_Unicode_Func)    PS_Lookup_Unicode,
+#else
+    0,
+    0,
+    0,
+#endif
+
+    (PS_Macintosh_Name_Func)    PS_Macintosh_Name,
+    (PS_Adobe_Std_Strings_Func) PS_Standard_Strings,
+    
+    t1_standard_encoding,
+    t1_expert_encoding
+  };
+  
+
+  EXPORT_FUNC
+  const FT_DriverInterface  psnames_driver_interface =
+  {
+    sizeof(FT_DriverRec),
+    0,
+    0,
+    0,
+
+    "psnames",  /* driver name                         */
+    100,        /* driver version                      */
+    200,        /* driver requires FreeType 2 or above */
+
+    (void*)&psnames_interface
+  };
+
+#else
+
+  EXPORT_FUNC
+  const FT_DriverInterface  psnames_driver_interface =
+  {
+    0,
+    0,
+    0,
+    0,
+
+    0,
+    100,        /* driver version                      */
+    200,        /* driver requires FreeType 2 or above */
+
+    0,
+  };
+
+#endif  /* !FT_CONFIG_OPTION_NO_POSTSCRIPT_NAMES */
+
--- /dev/null
+++ b/src/psnames/psdriver.h
@@ -1,0 +1,31 @@
+/***************************************************************************/
+/*                                                                         */
+/*  psdriver.h                                                             */
+/*                                                                         */
+/*    High-level PSNames driver interface (specification).                 */
+/*                                                                         */
+/*  Copyright 1996-1999 by                                                 */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used,       */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+
+#ifndef PSDRIVER_H
+#define PSDRIVER_H
+
+#include <freetype.h>
+#include <ftdriver.h>
+
+  EXPORT_DEF
+  const FT_DriverInterface  psnames_driver_interface;
+
+#endif /* PSDRIVER_H */
+
+
+/* END */
--- /dev/null
+++ b/src/psnames/psnames.c
@@ -1,0 +1,1 @@
+#include <psdriver.c>
--- /dev/null
+++ b/src/psnames/pstables.h
@@ -1,0 +1,2259 @@
+/* the following tables are generated automatically - do not edit */
+
+static const char*  standard_glyph_names[] = {
+  ".null",
+  "CR",
+  "registered",
+  "notequal",
+  "infinity",
+  "lessequal",
+  "greaterequal",
+  "partialdiff",
+  "summation",
+  "product",
+  "pi",
+  "integral",
+  "Omega",
+  "radical",
+  "approxequal",
+  "Delta",
+  "guillemotleft",
+  "guillemotright",
+  "nbspace",
+  "lozenge",
+  "periodcentered",
+  "apple",
+  "lslash",
+  "franc",
+  "Gbreve",
+  "gbreve",
+  "Idot",
+  "Scedilla",
+  "scedilla",
+  "Cacute",
+  "cacute",
+  "Ccaron",
+  "ccaron",
+  "dmacron",
+  ".notdef",
+  "space",
+  "exclam",
+  "quotedbl",
+  "numbersign",
+  "dollar",
+  "percent",
+  "ampersand",
+  "quoteright",
+  "parenleft",
+  "parenright",
+  "asterisk",
+  "plus",
+  "comma",
+  "hyphen",
+  "period",
+  "slash",
+  "zero",
+  "one",
+  "two",
+  "three",
+  "four",
+  "five",
+  "six",
+  "seven",
+  "eight",
+  "nine",
+  "colon",
+  "semicolon",
+  "less",
+  "equal",
+  "greater",
+  "question",
+  "at",
+  "A",
+  "B",
+  "C",
+  "D",
+  "E",
+  "F",
+  "G",
+  "H",
+  "I",
+  "J",
+  "K",
+  "L",
+  "M",
+  "N",
+  "O",
+  "P",
+  "Q",
+  "R",
+  "S",
+  "T",
+  "U",
+  "V",
+  "W",
+  "X",
+  "Y",
+  "Z",
+  "bracketleft",
+  "backslash",
+  "bracketright",
+  "asciicircum",
+  "underscore",
+  "quoteleft",
+  "a",
+  "b",
+  "c",
+  "d",
+  "e",
+  "f",
+  "g",
+  "h",
+  "i",
+  "j",
+  "k",
+  "l",
+  "m",
+  "n",
+  "o",
+  "p",
+  "q",
+  "r",
+  "s",
+  "t",
+  "u",
+  "v",
+  "w",
+  "x",
+  "y",
+  "z",
+  "braceleft",
+  "bar",
+  "braceright",
+  "asciitilde",
+  "exclamdown",
+  "cent",
+  "sterling",
+  "fraction",
+  "yen",
+  "florin",
+  "section",
+  "currency",
+  "quotesingle",
+  "quotedblleft",
+  "quillemotleft",
+  "guilsinglleft",
+  "guilsinglright",
+  "fi",
+  "fl",
+  "endash",
+  "dagger",
+  "daggerdbl",
+  "periodcenter",
+  "paragraph",
+  "bullet",
+  "quotesinglbase",
+  "quotedblbase",
+  "quotedblright",
+  "quillemotright",
+  "ellipsis",
+  "perthousand",
+  "questiondown",
+  "grave",
+  "acute",
+  "circumflex",
+  "tilde",
+  "macron",
+  "breve",
+  "dotaccent",
+  "dieresis",
+  "ring",
+  "cedilla",
+  "hungarumlaut",
+  "ogonek",
+  "caron",
+  "emdash",
+  "AE",
+  "ordfeminine",
+  "Lslash",
+  "Oslash",
+  "OE",
+  "ordmasculine",
+  "ae",
+  "dotlessi",
+  "Islash",
+  "oslash",
+  "oe",
+  "germandbls",
+  "onesuperior",
+  "logicalnot",
+  "mu",
+  "trademark",
+  "Eth",
+  "onehalf",
+  "plusminus",
+  "Thorn",
+  "onequarter",
+  "divide",
+  "brokenbar",
+  "degree",
+  "thorn",
+  "threequarters",
+  "twosuperior",
+  "regitered",
+  "minus",
+  "eth",
+  "multiply",
+  "threesuperior",
+  "copyright",
+  "Aacute",
+  "Acircumflex",
+  "Adieresis",
+  "Agrave",
+  "Aring",
+  "Atilde",
+  "Ccedilla",
+  "Eacute",
+  "Ecircumflex",
+  "Edieresis",
+  "Egrave",
+  "Iacute",
+  "Icircumflex",
+  "Idieresis",
+  "Igrave",
+  "Ntilde",
+  "Oacute",
+  "Ocircumflex",
+  "Odieresis",
+  "Ograve",
+  "Otilde",
+  "Scaron",
+  "Uacute",
+  "Ucircumflex",
+  "Udieresis",
+  "Ugrave",
+  "Yacute",
+  "Ydieresis",
+  "Zcaron",
+  "aacute",
+  "acircumflex",
+  "adieresis",
+  "agrave",
+  "aring",
+  "atilde",
+  "ccedilla",
+  "eacute",
+  "ecircumflex",
+  "edieresis",
+  "egrave",
+  "iacute",
+  "icircumflex",
+  "idieresis",
+  "igrave",
+  "ntilde",
+  "oacute",
+  "ocircumflex",
+  "odieresis",
+  "ograve",
+  "otilde",
+  "scaron",
+  "uacute",
+  "ucircumflex",
+  "udieresis",
+  "ugrave",
+  "yacute",
+  "ydieresis",
+  "zcaron",
+  "exclamsmall",
+  "Hungarumlautsmall",
+  "dollaroldstyle",
+  "dollarsuperior",
+  "ampersandsmall",
+  "Acutesmall",
+  "parenleftsuperior",
+  "parenrightsuperior",
+  "twodotenleader",
+  "onedotenleader",
+  "zerooldstyle",
+  "oneoldstyle",
+  "twooldstyle",
+  "threeoldstyle",
+  "fouroldstyle",
+  "fiveoldstyle",
+  "sixoldstyle",
+  "sevenoldstyle",
+  "eightoldstyle",
+  "nineoldstyle",
+  "commasuperior",
+  "threequartersemdash",
+  "periodsuperior",
+  "questionsmall",
+  "asuperior",
+  "bsuperior",
+  "centsuperior",
+  "dsuperior",
+  "esuperior",
+  "isuperior",
+  "lsuperior",
+  "msuperior",
+  "nsuperior",
+  "osuperior",
+  "rsuperior",
+  "ssuperior",
+  "tsuperior",
+  "ff",
+  "ffi",
+  "ffl",
+  "parenleftinferior",
+  "parenrightinferior",
+  "Circumflexsmall",
+  "hyphensuperior",
+  "Gravesmall",
+  "Asmall",
+  "Bsmall",
+  "Csmall",
+  "Dsmall",
+  "Esmall",
+  "Fsmall",
+  "Gsmall",
+  "Hsmall",
+  "Ismall",
+  "Jsmall",
+  "Ksmall",
+  "Lsmall",
+  "Msmall",
+  "Nsmall",
+  "Osmall",
+  "Psmall",
+  "Qsmall",
+  "Rsmall",
+  "Ssmall",
+  "Tsmall",
+  "Usmall",
+  "Vsmall",
+  "Wsmall",
+  "Xsmall",
+  "Ysmall",
+  "Zsmall",
+  "colonmonetary",
+  "onefitted",
+  "rupiah",
+  "Tildesmall",
+  "exclamdownsmall",
+  "centoldstyle",
+  "Lslashsmall",
+  "Scaronsmall",
+  "Zcaronsmall",
+  "Dieresissmall",
+  "Brevesmall",
+  "Caronsmall",
+  "Dotaccentsmall",
+  "Macronsmall",
+  "figuredash",
+  "hypheninferior",
+  "Ogoneksmall",
+  "Ringsmall",
+  "Cedillasmall",
+  "questiondownsmall",
+  "oneeighth",
+  "threeeighths",
+  "fiveeighths",
+  "seveneighths",
+  "onethird",
+  "twothirds",
+  "zerosuperior",
+  "foursuperior",
+  "fivesuperior",
+  "sixsuperior",
+  "sevensuperior",
+  "eightsuperior",
+  "ninesuperior",
+  "zeroinferior",
+  "oneinferior",
+  "twoinferior",
+  "threeinferior",
+  "fourinferior",
+  "fiveinferior",
+  "sixinferior",
+  "seveninferior",
+  "eightinferior",
+  "nineinferior",
+  "centinferior",
+  "dollarinferior",
+  "periodinferior",
+  "commainferior",
+  "Agravesmall",
+  "Aacutesmall",
+  "Acircumflexsmall",
+  "Atildesmall",
+  "Adieresissmall",
+  "Aringsmall",
+  "AEsmall",
+  "Ccedillasmall",
+  "Egravesmall",
+  "Eacutesmall",
+  "Ecircumflexsmall",
+  "Edieresissmall",
+  "Igravesmall",
+  "Iacutesmall",
+  "Icircumflexsmall",
+  "Idieresissmall",
+  "Ethsmall",
+  "Ntildesmall",
+  "Ogravesmall",
+  "Oacutesmall",
+  "Ocircumflexsmall",
+  "Otildesmall",
+  "Odieresissmall",
+  "OEsmall",
+  "Oslashsmall",
+  "Ugravesmall",
+  "Uacautesmall",
+  "Ucircumflexsmall",
+  "Udieresissmall",
+  "Yacutesmall",
+  "Thornsmall",
+  "Ydieresissmall",
+  "001.000",
+  "001.001",
+  "001.002",
+  "001.003",
+  "Black",
+  "Bold",
+  "Book",
+  "Light",
+  "Medium",
+  "Regular",
+  "Roman",
+  "Semibold",
+#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
+  "AEacute",
+  "Abreve",
+  "Acute",
+  "Alpha",
+  "Alphatonos",
+  "Amacron",
+  "Aogonek",
+  "Aringacute",
+  "Beta",
+  "Caron",
+  "Ccircumflex",
+  "Cdotaccent",
+  "Chi",
+  "Dcaron",
+  "Dcroat",
+  "Dieresis",
+  "DieresisAcute",
+  "DieresisGrave",
+  "Ebreve",
+  "Ecaron",
+  "Edotaccent",
+  "Emacron",
+  "Eng",
+  "Eogonek",
+  "Epsilon",
+  "Epsilontonos",
+  "Eta",
+  "Etatonos",
+  "Euro",
+  "Gamma",
+  "Gcaron",
+  "Gcircumflex",
+  "Gcommaaccent",
+  "Gdotaccent",
+  "Grave",
+  "H18533",
+  "H18543",
+  "H18551",
+  "H22073",
+  "Hbar",
+  "Hcircumflex",
+  "Hungarumlaut",
+  "IJ",
+  "Ibreve",
+  "Idotaccent",
+  "Ifraktur",
+  "Imacron",
+  "Iogonek",
+  "Iota",
+  "Iotadieresis",
+  "Iotatonos",
+  "Itilde",
+  "Jcircumflex",
+  "Kappa",
+  "Kcommaaccent",
+  "LL",
+  "Lacute",
+  "Lambda",
+  "Lcaron",
+  "Lcommaaccent",
+  "Ldot",
+  "Macron",
+  "Mu",
+  "Nacute",
+  "Ncaron",
+  "Ncommaaccent",
+  "Nu",
+  "Obreve",
+  "Ohorn",
+  "Ohungarumlaut",
+  "Omacron",
+  "Omegatonos",
+  "Omicron",
+  "Omicrontonos",
+  "Oslashacute",
+  "Phi",
+  "Pi",
+  "Psi",
+  "Racute",
+  "Rcaron",
+  "Rcommaaccent",
+  "Rfraktur",
+  "Rho",
+  "SF010000",
+  "SF020000",
+  "SF030000",
+  "SF040000",
+  "SF050000",
+  "SF060000",
+  "SF070000",
+  "SF080000",
+  "SF090000",
+  "SF100000",
+  "SF110000",
+  "SF190000",
+  "SF200000",
+  "SF210000",
+  "SF220000",
+  "SF230000",
+  "SF240000",
+  "SF250000",
+  "SF260000",
+  "SF270000",
+  "SF280000",
+  "SF360000",
+  "SF370000",
+  "SF380000",
+  "SF390000",
+  "SF400000",
+  "SF410000",
+  "SF420000",
+  "SF430000",
+  "SF440000",
+  "SF450000",
+  "SF460000",
+  "SF470000",
+  "SF480000",
+  "SF490000",
+  "SF500000",
+  "SF510000",
+  "SF520000",
+  "SF530000",
+  "SF540000",
+  "Sacute",
+  "Scircumflex",
+  "Scommaaccent",
+  "Sigma",
+  "Tau",
+  "Tbar",
+  "Tcaron",
+  "Tcommaaccent",
+  "Tcommaaccent",
+  "Theta",
+  "Uacutesmall",
+  "Ubreve",
+  "Uhorn",
+  "Uhungarumlaut",
+  "Umacron",
+  "Uogonek",
+  "Upsilon",
+  "Upsilon1",
+  "Upsilondieresis",
+  "Upsilontonos",
+  "Uring",
+  "Utilde",
+  "Wacute",
+  "Wcircumflex",
+  "Wdieresis",
+  "Wgrave",
+  "Xi",
+  "Ycircumflex",
+  "Ygrave",
+  "Zacute",
+  "Zdotaccent",
+  "Zeta",
+  "abreve",
+  "acutecomb",
+  "aeacute",
+  "afii00208",
+  "afii10017",
+  "afii10018",
+  "afii10019",
+  "afii10020",
+  "afii10021",
+  "afii10022",
+  "afii10023",
+  "afii10024",
+  "afii10025",
+  "afii10026",
+  "afii10027",
+  "afii10028",
+  "afii10029",
+  "afii10030",
+  "afii10031",
+  "afii10032",
+  "afii10033",
+  "afii10034",
+  "afii10035",
+  "afii10036",
+  "afii10037",
+  "afii10038",
+  "afii10039",
+  "afii10040",
+  "afii10041",
+  "afii10042",
+  "afii10043",
+  "afii10044",
+  "afii10045",
+  "afii10046",
+  "afii10047",
+  "afii10048",
+  "afii10049",
+  "afii10050",
+  "afii10051",
+  "afii10052",
+  "afii10053",
+  "afii10054",
+  "afii10055",
+  "afii10056",
+  "afii10057",
+  "afii10058",
+  "afii10059",
+  "afii10060",
+  "afii10061",
+  "afii10062",
+  "afii10063",
+  "afii10064",
+  "afii10065",
+  "afii10066",
+  "afii10067",
+  "afii10068",
+  "afii10069",
+  "afii10070",
+  "afii10071",
+  "afii10072",
+  "afii10073",
+  "afii10074",
+  "afii10075",
+  "afii10076",
+  "afii10077",
+  "afii10078",
+  "afii10079",
+  "afii10080",
+  "afii10081",
+  "afii10082",
+  "afii10083",
+  "afii10084",
+  "afii10085",
+  "afii10086",
+  "afii10087",
+  "afii10088",
+  "afii10089",
+  "afii10090",
+  "afii10091",
+  "afii10092",
+  "afii10093",
+  "afii10094",
+  "afii10095",
+  "afii10096",
+  "afii10097",
+  "afii10098",
+  "afii10099",
+  "afii10100",
+  "afii10101",
+  "afii10102",
+  "afii10103",
+  "afii10104",
+  "afii10105",
+  "afii10106",
+  "afii10107",
+  "afii10108",
+  "afii10109",
+  "afii10110",
+  "afii10145",
+  "afii10146",
+  "afii10147",
+  "afii10148",
+  "afii10192",
+  "afii10193",
+  "afii10194",
+  "afii10195",
+  "afii10196",
+  "afii10831",
+  "afii10832",
+  "afii10846",
+  "afii299",
+  "afii300",
+  "afii301",
+  "afii57381",
+  "afii57388",
+  "afii57392",
+  "afii57393",
+  "afii57394",
+  "afii57395",
+  "afii57396",
+  "afii57397",
+  "afii57398",
+  "afii57399",
+  "afii57400",
+  "afii57401",
+  "afii57403",
+  "afii57407",
+  "afii57409",
+  "afii57410",
+  "afii57411",
+  "afii57412",
+  "afii57413",
+  "afii57414",
+  "afii57415",
+  "afii57416",
+  "afii57417",
+  "afii57418",
+  "afii57419",
+  "afii57420",
+  "afii57421",
+  "afii57422",
+  "afii57423",
+  "afii57424",
+  "afii57425",
+  "afii57426",
+  "afii57427",
+  "afii57428",
+  "afii57429",
+  "afii57430",
+  "afii57431",
+  "afii57432",
+  "afii57433",
+  "afii57434",
+  "afii57440",
+  "afii57441",
+  "afii57442",
+  "afii57443",
+  "afii57444",
+  "afii57445",
+  "afii57446",
+  "afii57448",
+  "afii57449",
+  "afii57450",
+  "afii57451",
+  "afii57452",
+  "afii57453",
+  "afii57454",
+  "afii57455",
+  "afii57456",
+  "afii57457",
+  "afii57458",
+  "afii57470",
+  "afii57505",
+  "afii57506",
+  "afii57507",
+  "afii57508",
+  "afii57509",
+  "afii57511",
+  "afii57512",
+  "afii57513",
+  "afii57514",
+  "afii57519",
+  "afii57534",
+  "afii57636",
+  "afii57645",
+  "afii57658",
+  "afii57664",
+  "afii57665",
+  "afii57666",
+  "afii57667",
+  "afii57668",
+  "afii57669",
+  "afii57670",
+  "afii57671",
+  "afii57672",
+  "afii57673",
+  "afii57674",
+  "afii57675",
+  "afii57676",
+  "afii57677",
+  "afii57678",
+  "afii57679",
+  "afii57680",
+  "afii57681",
+  "afii57682",
+  "afii57683",
+  "afii57684",
+  "afii57685",
+  "afii57686",
+  "afii57687",
+  "afii57688",
+  "afii57689",
+  "afii57690",
+  "afii57694",
+  "afii57695",
+  "afii57700",
+  "afii57705",
+  "afii57716",
+  "afii57717",
+  "afii57718",
+  "afii57723",
+  "afii57793",
+  "afii57794",
+  "afii57795",
+  "afii57796",
+  "afii57797",
+  "afii57798",
+  "afii57799",
+  "afii57800",
+  "afii57801",
+  "afii57802",
+  "afii57803",
+  "afii57804",
+  "afii57806",
+  "afii57807",
+  "afii57839",
+  "afii57841",
+  "afii57842",
+  "afii57929",
+  "afii61248",
+  "afii61289",
+  "afii61352",
+  "afii61573",
+  "afii61574",
+  "afii61575",
+  "afii61664",
+  "afii63167",
+  "afii64937",
+  "aleph",
+  "alpha",
+  "alphatonos",
+  "amacron",
+  "angle",
+  "angleleft",
+  "angleright",
+  "anoteleia",
+  "aogonek",
+  "aringacute",
+  "arrowboth",
+  "arrowdblboth",
+  "arrowdbldown",
+  "arrowdblleft",
+  "arrowdblright",
+  "arrowdblup",
+  "arrowdown",
+  "arrowhorizex",
+  "arrowleft",
+  "arrowright",
+  "arrowup",
+  "arrowupdn",
+  "arrowupdnbse",
+  "arrowvertex",
+  "asteriskmath",
+  "beta",
+  "block",
+  "braceex",
+  "braceleftbt",
+  "braceleftmid",
+  "bracelefttp",
+  "bracerightbt",
+  "bracerightmid",
+  "bracerighttp",
+  "bracketleftbt",
+  "bracketleftex",
+  "bracketlefttp",
+  "bracketrightbt",
+  "bracketrightex",
+  "bracketrighttp",
+  "carriagereturn",
+  "ccircumflex",
+  "cdotaccent",
+  "chi",
+  "circle",
+  "circlemultiply",
+  "circleplus",
+  "club",
+  "commaaccent",
+  "congruent",
+  "copyrightsans",
+  "copyrightserif",
+  "cyrBreve",
+  "cyrFlex",
+  "cyrbreve",
+  "cyrflex",
+  "dblGrave",
+  "dblgrave",
+  "dcaron",
+  "dcroat",
+  "delta",
+  "diamond",
+  "dieresisacute",
+  "dieresisgrave",
+  "dieresistonos",
+  "dkshade",
+  "dnblock",
+  "dong",
+  "dotbelowcomb",
+  "dotlessj",
+  "dotmath",
+  "ebreve",
+  "ecaron",
+  "edotaccent",
+  "element",
+  "emacron",
+  "emptyset",
+  "eng",
+  "eogonek",
+  "epsilon",
+  "epsilontonos",
+  "equivalence",
+  "estimated",
+  "eta",
+  "etatonos",
+  "exclamdbl",
+  "existential",
+  "female",
+  "filledbox",
+  "filledrect",
+  "gamma",
+  "gcaron",
+  "gcircumflex",
+  "gcommaaccent",
+  "gdotaccent",
+  "gradient",
+  "gravecomb",
+  "hbar",
+  "hcircumflex",
+  "heart",
+  "hookabovecomb",
+  "house",
+  "ibreve",
+  "ij",
+  "imacron",
+  "integralbt",
+  "integralex",
+  "integraltp",
+  "intersection",
+  "invbullet",
+  "invcircle",
+  "invsmileface",
+  "iogonek",
+  "iota",
+  "iotadieresis",
+  "iotadieresistonos",
+  "iotatonos",
+  "itilde",
+  "jcircumflex",
+  "kappa",
+  "kcommaaccent",
+  "kgreenlandic",
+  "lacute",
+  "lambda",
+  "lcaron",
+  "lcommaaccent",
+  "ldot",
+  "lfblock",
+  "lira",
+  "ll",
+  "logicaland",
+  "logicalor",
+  "longs",
+  "ltshade",
+  "male",
+  "minute",
+  "musicalnote",
+  "musicalnotedbl",
+  "nacute",
+  "napostrophe",
+  "ncaron",
+  "ncommaaccent",
+  "notelement",
+  "notsubset",
+  "nu",
+  "obreve",
+  "ohorn",
+  "ohungarumlaut",
+  "omacron",
+  "omega",
+  "omega1",
+  "omegatonos",
+  "omicron",
+  "omicrontonos",
+  "openbullet",
+  "orthogonal",
+  "oslashacute",
+  "parenleftbt",
+  "parenleftex",
+  "parenlefttp",
+  "parenrightbt",
+  "parenrightex",
+  "parenrighttp",
+  "perpendicular",
+  "peseta",
+  "phi",
+  "phi1",
+  "prescription",
+  "propersubset",
+  "propersuperset",
+  "proportional",
+  "psi",
+  "quotereversed",
+  "racute",
+  "radicalex",
+  "rcaron",
+  "rcommaaccent",
+  "reflexsubset",
+  "reflexsuperset",
+  "registersans",
+  "registerserif",
+  "revlogicalnot",
+  "rho",
+  "rtblock",
+  "sacute",
+  "scircumflex",
+  "scommaaccent",
+  "second",
+  "shade",
+  "sigma",
+  "sigma1",
+  "similar",
+  "smileface",
+  "spade",
+  "suchthat",
+  "sun",
+  "tau",
+  "tbar",
+  "tcaron",
+  "tcommaaccent",
+  "tcommaaccent",
+  "therefore",
+  "theta",
+  "theta1",
+  "tildecomb",
+  "tonos",
+  "trademarksans",
+  "trademarkserif",
+  "triagdn",
+  "triaglf",
+  "triagrt",
+  "triagup",
+  "ubreve",
+  "uhorn",
+  "uhungarumlaut",
+  "umacron",
+  "underscoredbl",
+  "union",
+  "universal",
+  "uogonek",
+  "upblock",
+  "upsilon",
+  "upsilondieresis",
+  "upsilondieresistonos",
+  "upsilontonos",
+  "uring",
+  "utilde",
+  "wacute",
+  "wcircumflex",
+  "wdieresis",
+  "weierstrass",
+  "wgrave",
+  "xi",
+  "ycircumflex",
+  "ygrave",
+  "zacute",
+  "zdotaccent",
+  "zeta",
+#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */
+  0 };
+
+static const char**  t1_standard_glyphs = standard_glyph_names + 34;
+
+#define NUM_STD_GLYPHS 391
+
+#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
+#define NUM_ADOBE_GLYPHS 1032
+#else
+#define NUM_ADOBE_GLYPHS 391
+#endif
+
+static const unsigned short mac_standard_names[259] = {
+    0,
+    0,
+    1,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    104,
+    9,
+    10,
+    11,
+    12,
+    13,
+    14,
+    15,
+    16,
+    17,
+    18,
+    19,
+    20,
+    21,
+    22,
+    23,
+    24,
+    25,
+    26,
+    27,
+    28,
+    29,
+    30,
+    31,
+    32,
+    33,
+    34,
+    35,
+    36,
+    37,
+    38,
+    39,
+    40,
+    41,
+    42,
+    43,
+    44,
+    45,
+    46,
+    47,
+    48,
+    49,
+    50,
+    51,
+    52,
+    53,
+    54,
+    55,
+    56,
+    57,
+    58,
+    59,
+    60,
+    61,
+    62,
+    63,
+    64,
+    124,
+    66,
+    67,
+    68,
+    69,
+    70,
+    71,
+    72,
+    73,
+    74,
+    75,
+    76,
+    77,
+    78,
+    79,
+    80,
+    81,
+    82,
+    83,
+    84,
+    85,
+    86,
+    87,
+    88,
+    89,
+    90,
+    91,
+    92,
+    93,
+    94,
+    95,
+    173,
+    175,
+    177,
+    178,
+    186,
+    189,
+    195,
+    200,
+    203,
+    201,
+    202,
+    205,
+    204,
+    206,
+    207,
+    210,
+    208,
+    209,
+    211,
+    214,
+    212,
+    213,
+    215,
+    216,
+    219,
+    217,
+    218,
+    220,
+    222,
+    225,
+    223,
+    224,
+    112,
+    161,
+    97,
+    98,
+    102,
+    116,
+    115,
+    149,
+    2,
+    170,
+    153,
+    125,
+    131,
+    3,
+    138,
+    141,
+    4,
+    156,
+    5,
+    6,
+    100,
+    152,
+    7,
+    8,
+    9,
+    10,
+    11,
+    139,
+    143,
+    12,
+    144,
+    147,
+    123,
+    96,
+    151,
+    13,
+    101,
+    14,
+    15,
+    16,
+    17,
+    121,
+    18,
+    174,
+    176,
+    191,
+    142,
+    148,
+    111,
+    137,
+    105,
+    119,
+    65,
+    8,
+    159,
+    19,
+    227,
+    198,
+    99,
+    103,
+    107,
+    108,
+    109,
+    110,
+    113,
+    20,
+    117,
+    118,
+    122,
+    172,
+    179,
+    171,
+    180,
+    181,
+    182,
+    183,
+    184,
+    185,
+    187,
+    188,
+    21,
+    190,
+    193,
+    194,
+    196,
+    145,
+    126,
+    127,
+    128,
+    129,
+    130,
+    132,
+    133,
+    134,
+    135,
+    136,
+    140,
+    22,
+    192,
+    221,
+    199,
+    228,
+    160,
+    154,
+    167,
+    197,
+    226,
+    157,
+    162,
+    166,
+    168,
+    150,
+    164,
+    169,
+    155,
+    158,
+    163,
+    23,
+    24,
+    25,
+    26,
+    27,
+    28,
+    29,
+    30,
+    31,
+    32,
+    33,
+ 0 };
+
+#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
+static const unsigned short  names_to_unicode[392] = {
+  0,
+  0x0020,
+  0x0021,
+  0x0022,
+  0x0023,
+  0x0024,
+  0x0025,
+  0x0026,
+  0x2019,
+  0x0028,
+  0x0029,
+  0x002A,
+  0x002B,
+  0x002C,
+  0x002D,
+  0x002E,
+  0x002F,
+  0x0030,
+  0x0031,
+  0x0032,
+  0x0033,
+  0x0034,
+  0x0035,
+  0x0036,
+  0x0037,
+  0x0038,
+  0x0039,
+  0x003A,
+  0x003B,
+  0x003C,
+  0x003D,
+  0x003E,
+  0x003F,
+  0x0040,
+  0x0041,
+  0x0042,
+  0x0043,
+  0x0044,
+  0x0045,
+  0x0046,
+  0x0047,
+  0x0048,
+  0x0049,
+  0x004A,
+  0x004B,
+  0x004C,
+  0x004D,
+  0x004E,
+  0x004F,
+  0x0050,
+  0x0051,
+  0x0052,
+  0x0053,
+  0x0054,
+  0x0055,
+  0x0056,
+  0x0057,
+  0x0058,
+  0x0059,
+  0x005A,
+  0x005B,
+  0x005C,
+  0x005D,
+  0x005E,
+  0x005F,
+  0x2018,
+  0x0061,
+  0x0062,
+  0x0063,
+  0x0064,
+  0x0065,
+  0x0066,
+  0x0067,
+  0x0068,
+  0x0069,
+  0x006A,
+  0x006B,
+  0x006C,
+  0x006D,
+  0x006E,
+  0x006F,
+  0x0070,
+  0x0071,
+  0x0072,
+  0x0073,
+  0x0074,
+  0x0075,
+  0x0076,
+  0x0077,
+  0x0078,
+  0x0079,
+  0x007A,
+  0x007B,
+  0x007C,
+  0x007D,
+  0x007E,
+  0x00A1,
+  0x00A2,
+  0x00A3,
+  0x2044,
+  0x00A5,
+  0x0192,
+  0x00A7,
+  0x00A4,
+  0x0027,
+  0x201C,
+  0,
+  0x2039,
+  0x203A,
+  0xFB01,
+  0xFB02,
+  0x2013,
+  0x2020,
+  0x2021,
+  0,
+  0x00B6,
+  0x2022,
+  0x201A,
+  0x201E,
+  0x201D,
+  0,
+  0x2026,
+  0x2030,
+  0x00BF,
+  0x0060,
+  0x00B4,
+  0x02C6,
+  0x02DC,
+  0x00AF,
+  0x02D8,
+  0x02D9,
+  0x00A8,
+  0x02DA,
+  0x00B8,
+  0x02DD,
+  0x02DB,
+  0x02C7,
+  0x2014,
+  0x00C6,
+  0x00AA,
+  0x0141,
+  0x00D8,
+  0x0152,
+  0x00BA,
+  0x00E6,
+  0x0131,
+  0,
+  0x00F8,
+  0x0153,
+  0x00DF,
+  0x00B9,
+  0x00AC,
+  0x00B5,
+  0x2122,
+  0x00D0,
+  0x00BD,
+  0x00B1,
+  0x00DE,
+  0x00BC,
+  0x00F7,
+  0x00A6,
+  0x00B0,
+  0x00FE,
+  0x00BE,
+  0x00B2,
+  0,
+  0x2212,
+  0x00F0,
+  0x00D7,
+  0x00B3,
+  0x00A9,
+  0x00C1,
+  0x00C2,
+  0x00C4,
+  0x00C0,
+  0x00C5,
+  0x00C3,
+  0x00C7,
+  0x00C9,
+  0x00CA,
+  0x00CB,
+  0x00C8,
+  0x00CD,
+  0x00CE,
+  0x00CF,
+  0x00CC,
+  0x00D1,
+  0x00D3,
+  0x00D4,
+  0x00D6,
+  0x00D2,
+  0x00D5,
+  0x0160,
+  0x00DA,
+  0x00DB,
+  0x00DC,
+  0x00D9,
+  0x00DD,
+  0x0178,
+  0x017D,
+  0x00E1,
+  0x00E2,
+  0x00E4,
+  0x00E0,
+  0x00E5,
+  0x00E3,
+  0x00E7,
+  0x00E9,
+  0x00EA,
+  0x00EB,
+  0x00E8,
+  0x00ED,
+  0x00EE,
+  0x00EF,
+  0x00EC,
+  0x00F1,
+  0x00F3,
+  0x00F4,
+  0x00F6,
+  0x00F2,
+  0x00F5,
+  0x0161,
+  0x00FA,
+  0x00FB,
+  0x00FC,
+  0x00F9,
+  0x00FD,
+  0x00FF,
+  0x017E,
+  0xF721,
+  0xF6F8,
+  0xF724,
+  0xF6E4,
+  0xF726,
+  0xF7B4,
+  0x207D,
+  0x207E,
+  0x2025,
+  0x2024,
+  0xF730,
+  0xF731,
+  0xF732,
+  0xF733,
+  0xF734,
+  0xF735,
+  0xF736,
+  0xF737,
+  0xF738,
+  0xF739,
+  0xF6E2,
+  0xF6DE,
+  0xF6E8,
+  0xF73F,
+  0xF6E9,
+  0xF6EA,
+  0xF6E0,
+  0xF6EB,
+  0xF6EC,
+  0xF6ED,
+  0xF6EE,
+  0xF6EF,
+  0x207F,
+  0xF6F0,
+  0xF6F1,
+  0xF6F2,
+  0xF6F3,
+  0xFB00,
+  0xFB03,
+  0xFB04,
+  0x208D,
+  0x208E,
+  0xF6F6,
+  0xF6E6,
+  0xF760,
+  0xF761,
+  0xF762,
+  0xF763,
+  0xF764,
+  0xF765,
+  0xF766,
+  0xF767,
+  0xF768,
+  0xF769,
+  0xF76A,
+  0xF76B,
+  0xF76C,
+  0xF76D,
+  0xF76E,
+  0xF76F,
+  0xF770,
+  0xF771,
+  0xF772,
+  0xF773,
+  0xF774,
+  0xF775,
+  0xF776,
+  0xF777,
+  0xF778,
+  0xF779,
+  0xF77A,
+  0x20A1,
+  0xF6DC,
+  0xF6DD,
+  0xF6FE,
+  0xF7A1,
+  0xF7A2,
+  0xF6F9,
+  0xF6FD,
+  0xF6FF,
+  0xF7A8,
+  0xF6F4,
+  0xF6F5,
+  0xF6F7,
+  0xF7AF,
+  0x2012,
+  0xF6E5,
+  0xF6FB,
+  0xF6FC,
+  0xF7B8,
+  0xF7BF,
+  0x215B,
+  0x215C,
+  0x215D,
+  0x215E,
+  0x2153,
+  0x2154,
+  0x2070,
+  0x2074,
+  0x2075,
+  0x2076,
+  0x2077,
+  0x2078,
+  0x2079,
+  0x2080,
+  0x2081,
+  0x2082,
+  0x2083,
+  0x2084,
+  0x2085,
+  0x2086,
+  0x2087,
+  0x2088,
+  0x2089,
+  0xF6DF,
+  0xF6E3,
+  0xF6E7,
+  0xF6E1,
+  0xF7E0,
+  0xF7E1,
+  0xF7E2,
+  0xF7E3,
+  0xF7E4,
+  0xF7E5,
+  0xF7E6,
+  0xF7E7,
+  0xF7E8,
+  0xF7E9,
+  0xF7EA,
+  0xF7EB,
+  0xF7EC,
+  0xF7ED,
+  0xF7EE,
+  0xF7EF,
+  0xF7F0,
+  0xF7F1,
+  0xF7F2,
+  0xF7F3,
+  0xF7F4,
+  0xF7F5,
+  0xF7F6,
+  0xF6FA,
+  0xF7F8,
+  0xF7F9,
+  0,
+  0xF7FB,
+  0xF7FC,
+  0xF7FD,
+  0xF7FE,
+  0xF7FF,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0 };
+#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */
+
+static const unsigned short  t1_standard_encoding[257] = {
+  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,
+  17,
+  18,
+  19,
+  20,
+  21,
+  22,
+  23,
+  24,
+  25,
+  26,
+  27,
+  28,
+  29,
+  30,
+  31,
+  32,
+  33,
+  34,
+  35,
+  36,
+  37,
+  38,
+  39,
+  40,
+  41,
+  42,
+  43,
+  44,
+  45,
+  46,
+  47,
+  48,
+  49,
+  50,
+  51,
+  52,
+  53,
+  54,
+  55,
+  56,
+  57,
+  58,
+  59,
+  60,
+  61,
+  62,
+  63,
+  64,
+  65,
+  66,
+  67,
+  68,
+  69,
+  70,
+  71,
+  72,
+  73,
+  74,
+  75,
+  76,
+  77,
+  78,
+  79,
+  80,
+  81,
+  82,
+  83,
+  84,
+  85,
+  86,
+  87,
+  88,
+  89,
+  90,
+  91,
+  92,
+  93,
+  94,
+  95,
+  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,
+  0,
+  0,
+  96,
+  97,
+  98,
+  99,
+  100,
+  101,
+  102,
+  103,
+  104,
+  105,
+  106,
+  107,
+  108,
+  109,
+  110,
+  0,
+  111,
+  112,
+  113,
+  114,
+  0,
+  115,
+  116,
+  117,
+  118,
+  119,
+  120,
+  121,
+  122,
+  0,
+  123,
+  0,
+  124,
+  125,
+  126,
+  127,
+  128,
+  129,
+  130,
+  131,
+  0,
+  132,
+  133,
+  0,
+  134,
+  135,
+  136,
+  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,
+  0 };
+
+static const unsigned short  t1_expert_encoding[257] = {
+  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,
+  239,
+  240,
+  241,
+  242,
+  243,
+  244,
+  245,
+  246,
+  247,
+  248,
+  27,
+  28,
+  249,
+  250,
+  251,
+  252,
+  0,
+  253,
+  254,
+  255,
+  256,
+  257,
+  0,
+  0,
+  0,
+  258,
+  0,
+  0,
+  259,
+  260,
+  261,
+  262,
+  0,
+  0,
+  263,
+  264,
+  265,
+  0,
+  266,
+  109,
+  110,
+  267,
+  268,
+  269,
+  0,
+  270,
+  271,
+  272,
+  273,
+  274,
+  275,
+  276,
+  277,
+  278,
+  279,
+  280,
+  281,
+  282,
+  283,
+  284,
+  285,
+  286,
+  287,
+  288,
+  289,
+  290,
+  291,
+  292,
+  293,
+  294,
+  295,
+  296,
+  297,
+  298,
+  299,
+  300,
+  301,
+  302,
+  303,
+  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,
+  0,
+  0,
+  304,
+  305,
+  306,
+  0,
+  0,
+  307,
+  308,
+  309,
+  310,
+  311,
+  0,
+  312,
+  0,
+  0,
+  312,
+  0,
+  0,
+  314,
+  315,
+  0,
+  0,
+  316,
+  317,
+  318,
+  0,
+  0,
+  0,
+  158,
+  155,
+  163,
+  319,
+  320,
+  321,
+  322,
+  323,
+  324,
+  325,
+  0,
+  0,
+  326,
+  150,
+  164,
+  169,
+  327,
+  328,
+  329,
+  330,
+  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,
+  0 };
+
+/* end of automatically-generated tables */
--- /dev/null
+++ b/src/psnames/rules.mk
@@ -1,0 +1,91 @@
+#****************************************************************************
+#*                                                                          *
+#*  PSNames driver Makefile                                                 *
+#*                                                                          *
+#*  Copyright 1996-2000 by                                                  *
+#*  David Turner, Robert Wilhelm, and Werner Lemberg.                       *
+#*                                                                          *
+#*  This file is part of the FreeType project, and may only be used         *
+#*  modified and distributed under the terms of the FreeType project        *
+#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute      *
+#*  this file you indicate that you have read the license and               *
+#*  understand and accept it fully.                                         *
+#*                                                                          *
+#****************************************************************************
+
+
+ifndef PSNAMES_INCLUDE
+PSNAMES_INCLUDED := 1
+
+include $(SRC_)shared/rules.mk
+
+# PSNAMES driver directory
+#
+PSNAMES_DIR  := $(SRC_)psnames
+PSNAMES_DIR_ := $(PSNAMES_DIR)$(SEP)
+
+# additional include flags used when compiling the driver
+#
+PSNAMES_INCLUDE := $(SHARED) $(PSNAMES_DIR)
+
+
+# compilation flags for the driver
+#
+PSNAMES_CFLAGS  := $(PSNAMES_INCLUDE:%=$I%)
+PSNAMES_COMPILE := $(FT_COMPILE) $(PSNAMES_CFLAGS) 
+
+
+# TrueType driver sources (i.e., C files)
+#
+PSNAMES_DRV_SRC := $(PSNAMES_DIR_)psdriver.c
+
+
+# TrueType driver headers
+#
+PSNAMES_DRV_H := $(SHARED_H)                  \
+                 $(PSNAMES_DIR_)psdriver.h    \
+                 $(PSNAMES_DIR_)pstables.h
+
+
+# driver object(s)
+#
+#   PSNAMES_DRV_OBJ_M is used during `debug' builds
+#   PSNAMES_DRV_OBJ_S is used during `release' builds
+#
+PSNAMES_DRV_OBJ_M := $(PSNAMES_DRV_SRC:$(PSNAMES_DIR_)%.c=$(OBJ_)%.$O)
+PSNAMES_DRV_OBJ_S := $(OBJ_)psnames.$O
+
+
+# driver root source file(s)
+#
+PSNAMES_DRV_SRC_M := $(PSNAMES_DRV_SRC)
+PSNAMES_DRV_SRC_S := $(PSNAMES_DIR_)psdriver.c
+
+
+# driver - single object
+#
+#  the driver is recompiled if any of the header or source files is changed
+#  as well as any of the shared source files found in `shared/sfnt'
+#
+$(PSNAMES_DRV_OBJ_S): $(BASE_H) $(SHARED_H) $(PSNAMES_DRV_H) $(PSNAMES_DRV_SRC) $(PSNAMES_DRV_SRC_S)
+	$(PSNAMES_COMPILE) $T$@ $(PSNAMES_DRV_SRC_S)
+
+
+
+# driver - multiple objects
+#
+#   All objects are recompiled if any of the header files is changed
+#
+$(OBJ_)tt%.$O: $(PSNAMES_DIR_)tt%.c $(BASE_H) $(SHARED_H) $(PSNAMES_DRV_H)
+	$(PSNAMES_COMPILE) $T$@ $<
+
+$(OBJ_)sf%.$O: $(PSNAMES_DIR_)sf%.c $(BASE_H) $(SHARED_H) $(PSNAMES_DRV_H)
+	$(PSNAMES_COMPILE) $T$@ $<
+
+# update main driver object lists
+#
+DRV_OBJS_S += $(PSNAMES_DRV_OBJ_S)
+DRV_OBJS_M += $(PSNAMES_DRV_OBJ_M)
+
+endif
+# END