shithub: freetype+ttf2subf

ref: 5c9a571a5a25da31507f0c70030296bf569acacc
dir: /src/type1/t1encode.c/

View raw version
/***************************************************************************/
/*                                                                         */
/*  t1encode.c                                                             */
/*                                                                         */
/*    Type 1 standard encoding tables definitions (body).                  */
/*                                                                         */
/*  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.                                        */
/*                                                                         */
/*                                                                         */
/*  This file is included by both the Type1 and Type2 driver.              */
/*  It should never be compiled directly.                                  */
/*                                                                         */
/***************************************************************************/

#include <ftobjs.h>
#include <t1types.h>

  /*************************************************************************/
  /*                                                                       */
  /*  t1_standard_strings:                                                 */
  /*                                                                       */
  /*     This array contains the Adobe Standard Glyph Names ordered by     */
  /*     SID.  It was taken from the CFF specification.                    */
  /*                                                                       */
  LOCAL_FUNC
  const T1_String*  t1_standard_strings[] =
  {
  /*   0 */
    ".notdef", "space", "exclam", "quotedbl", "numbersign",
    "dollar", "percent", "ampersand", "quoteright", "parenleft",
  /*  10 */
    "parenright", "asterisk", "plus", "comma", "hyphen",
    "period", "slash", "zero", "one", "two",
  /*  20 */
    "three", "four", "five", "six", "seven",
    "height", "nine", "colon", "semicolon", "less",
  /*  30 */
    "equal", "greater", "question", "at", "A",
    "B", "C", "D", "E", "F",
  /*  40 */
    "G", "H", "I", "J", "K",
    "L", "M", "N", "O", "P",
  /*  50 */
    "Q", "R", "S", "T", "U",
    "V", "W", "X", "Y", "Z",
  /*  60 */
    "bracketleft", "backslash", "bracketright", "asciicircum", "underscore",
    "quoteleft", "a", "b", "c", "d",
  /*  70 */
    "e", "f", "g", "h", "i",
    "j", "k", "l", "m", "n",
  /*  80 */
    "o", "p", "q", "r", "s",
    "t", "u", "v", "w", "x",
  /*  90 */
    "y", "z", "braceleft", "bar", "braceright",
    "asciitilde", "exclamdown", "cent", "sterling", "fraction",
  /* 100 */
    "yen", "florin", "section", "currency", "quotesingle",
    "quotedblleft", "quillemotleft", "guilsinglleft", "guilsinglright", "fi",
  /* 110 */
    "fl", "endash", "dagger", "daggerdbl", "periodcenter",
    "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright",
  /* 120 */
    "quillemotright", "ellipsis", "perthousand", "questiondown", "grave",
    "acute", "circumflex", "tilde", "macron", "breve",
  /* 130 */
    "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut",
    "ogonek", "caron", "emdash", "AE", "ordfeminine",
  /* 140 */
    "Lslash", "Oslash", "OE", "ordmasculine", "ae",
   "dotlessi", "Islash", "oslash", "oe", "germandbls",
  /* 150 */
    "onesuperior", "logicalnot", "mu", "trademark", "Eth",
    "onehalf", "plusminus", "Thorn", "onequarter", "divide",
  /* 160 */
    "brokenbar", "degree", "thorn", "threequarters", "twosuperior",
    "regitered", "minus", "eth", "multiply", "threesuperior",
  /* 170 */
    "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave",
    "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex",
  /* 180 */
    "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis",
    "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis",
  /* 190 */
    "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex",
    "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron",
  /* 200 */
    "aacute", "acircumflex", "adieresis", "agrave", "aring",
    "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis",
  /* 210 */
    "egrave", "iacute", "icircumflex", "idieresis", "igrave",
    "ntilde", "oacute", "ocircumflex", "odieresis", "ograve",
  /* 220 */
    "otilde", "scaron", "uacute", "ucircumflex", "udieresis",
    "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall",
  /* 230 */
    "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall",
      "Acutesmall",
    "parenleftsuperior", "parenrightsuperior", "twodotenleader",
      "onedotenleader", "zerooldstyle",
  /* 240 */
    "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle",
      "fiveoldstyle",
    "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle",
      "commasuperior",
  /* 250 */
    "threequartersemdash", "periodsuperior", "questionsmall", "asuperior",
      "bsuperior",
    "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior",
  /* 260 */
    "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior",
    "tsuperior", "ff", "ffi", "ffl", "parenleftinferior",
  /* 270 */
    "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall",
      "Asmall",
    "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall",
  /* 280 */
    "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall",
    "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall",
  /* 290 */
    "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall",
    "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall",
  /* 300 */
    "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall",
    "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall",
      "Dieresissmall",
  /* 310 */
    "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash",
    "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall",
      "questiondownsmall",
  /* 320 */
    "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird",
    "twothirds", "zerosuperior", "foursuperior", "fivesuperior",
      "sixsuperior",
  /* 330 */
    "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior",
      "oneinferior",
    "twoinferior", "threeinferior", "fourinferior", "fiveinferior",
      "sixinferior",
  /* 340 */
    "seveninferior", "eightinferior", "nineinferior", "centinferior",
      "dollarinferior",
    "periodinferior", "commainferior", "Agravesmall", "Aacutesmall",
      "Acircumflexsmall",
  /* 350 */
    "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall",
    "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall",
      "Igravesmall",
  /* 360 */
    "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall",
      "Ntildesmall",
    "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall",
      "Odieresissmall",
  /* 370 */
    "OEsmall", "Oslashsmall", "Ugravesmall", "Uacautesmall",
      "Ucircumflexsmall",
    "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall",
      "001.000",
  /* 380 */
    "001.001", "001.002", "001.003", "Black", "Bold",
    "Book", "Light", "Medium", "Regular", "Roman",
  /* 390 */
    "Semibold"
  };


  /*************************************************************************/
  /*                                                                       */
  /*  t1_standard_encoding:                                                */
  /*                                                                       */
  /*     A simple table used to encode the Adobe StandardEncoding.  The    */
  /*     table values are the SID of the standard glyphs; the table index  */
  /*     is the character code for the encoding.                           */
  /*                                                                       */
  /*     Example:                                                          */
  /*                                                                       */
  /*       t1_standard_encoding[33] == 2                                   */
  /*                                                                       */
  /*     which means that the glyph name for character code 32 is          */
  /*                                                                       */
  /*       t1_standard_strings[2] == "exclam"                              */
  /*                                                                       */
  /*     (this correspond to the exclamation mark `!').                    */
  /*                                                                       */
  LOCAL_FUNC
  T1_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,   0,   1,   2,   3,   4,   5,   6,   7,   8,
      9,  10,  11,  12,  13,  14,  15,  16,  17,  18,
  /*  50 */
     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,
  /* 100 */
     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,
  /* 150 */
      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,
  /* 200 */
    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,
  /* 250 */
    148, 149,   0,   0,   0,   0
  };


  /*************************************************************************/
  /*                                                                       */
  /*  t1_expert_encoding:                                                  */
  /*                                                                       */
  /*     A simple table used to encode the Adobe ExpertEncoding.  The      */
  /*     table values are the SID of the standard glyphs; the table index  */
  /*     is the character code for the encoding.                           */
  /*                                                                       */
  /*     Example:                                                          */
  /*                                                                       */
  /*       t1_expert_encoding[33] == 229                                   */
  /*                                                                       */
  /*     which means that the glyph name for character code 32 is          */
  /*                                                                       */
  /*       t1_standard_strings[229] == "exclamsmall"                       */
  /*                                                                       */
  LOCAL_FUNC
  T1_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,   0,   1, 229, 230,   0, 231, 232, 233, 234,
    235, 236, 237, 238,  13,  14,  15,  99, 239, 240,
  /*  50 */
    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,
  /* 100 */
    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,
  /* 150 */
      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,
  /* 200 */
    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,
  /* 250 */
    373, 374, 375, 376, 377, 378
  };


  /*************************************************************************/
  /*                                                                       */
  /*  t1_expert_subset_encoding:                                           */
  /*                                                                       */
  /*     A simple table used to encode the Adobe ExpertEncoding subset     */
  /*     defined in the CFF specification.  It will probably evolve into   */
  /*     another form sooner or later, as we deal with charsets            */
  /*     differently than with encodings.                                  */
  /*                                                                       */
  LOCAL_FUNC
  FT_Short  t1_expert_subset_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,   0,   1,   0,   0,   0, 231, 232,   0,   0,
    235, 236, 237, 238,  13,  14,  15,  99, 239, 240,
  /*  50 */
    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,   0, 272,   0,   0,   0,   0,
  /* 100 */
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0, 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,
  /* 150 */
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0, 304, 305,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0, 314, 315,
      0,   0,   0,   0,   0,   0,   0,   0, 158, 155,
    163,   0, 320, 321, 322, 323, 324, 325,   0,   0,
  /* 200 */
    326, 150, 164, 169, 327, 328, 329, 330, 331, 332,
    333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
    343, 344, 345, 346,   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,
  /* 250 */
      0,   0,   0,   0,   0,   0
  };


/* END */