mirror of https://github.com/freetype/freetype
Some changes. The SFNT driver is able to return
Postscript glyph names even when the "psnames" module is not used..
This commit is contained in:
parent
c3122c98ce
commit
7433655cbd
|
@ -31,319 +31,105 @@
|
|||
#include <ttload.h>
|
||||
#include <tttags.h>
|
||||
|
||||
/* When this configuration macro is defined, we rely on the "psnames" */
|
||||
/* module to grab the glyph names.. */
|
||||
#ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
|
||||
|
||||
#include <psnames.h>
|
||||
#define MAC_NAME(x) ((TT_String*)psnames->macintosh_name(x))
|
||||
|
||||
#else
|
||||
|
||||
/* Otherwise, we ignore the "psnames" module, then provide our own */
|
||||
/* table of Mac names.. Thus, it is possible to build a version of */
|
||||
/* FreeType without the Type 1 driver & PSNames module */
|
||||
|
||||
#define MAC_NAME(x) TT_Post_Default_Names[x]
|
||||
|
||||
/* the 258 default Mac PS glyph names */
|
||||
|
||||
const TT_String* TT_Mac_Postscript_Names[258] =
|
||||
String* TT_Post_Default_Names[258] =
|
||||
{
|
||||
/* 0 */
|
||||
".notdef",
|
||||
".null",
|
||||
"CR",
|
||||
"space",
|
||||
"exclam",
|
||||
"quotedbl",
|
||||
"numbersign",
|
||||
"dollar",
|
||||
"percent",
|
||||
"ampersand",
|
||||
|
||||
".notdef", ".null", "CR", "space", "exclam",
|
||||
"quotedbl", "numbersign", "dollar", "percent", "ampersand",
|
||||
/* 10 */
|
||||
"quotesingle",
|
||||
"parenleft",
|
||||
"parenright",
|
||||
"asterisk",
|
||||
"plus",
|
||||
"comma",
|
||||
"hyphen",
|
||||
"period",
|
||||
"slash",
|
||||
"zero",
|
||||
|
||||
"quotesingle", "parenleft", "parenright", "asterisk", "plus",
|
||||
"comma", "hyphen", "period", "slash", "zero",
|
||||
/* 20 */
|
||||
"one",
|
||||
"two",
|
||||
"three",
|
||||
"four",
|
||||
"five",
|
||||
"six",
|
||||
"seven",
|
||||
"eight",
|
||||
"nine",
|
||||
"colon",
|
||||
|
||||
"one", "two", "three", "four", "five",
|
||||
"six", "seven", "eight", "nine", "colon",
|
||||
/* 30 */
|
||||
"semicolon",
|
||||
"less",
|
||||
"equal",
|
||||
"greater", "question",
|
||||
"at",
|
||||
"A",
|
||||
"B",
|
||||
"C",
|
||||
"D",
|
||||
|
||||
"semicolon", "less", "equal", "greater", "question",
|
||||
"at", "A", "B", "C", "D",
|
||||
/* 40 */
|
||||
"E",
|
||||
"F",
|
||||
"G",
|
||||
"H",
|
||||
"I",
|
||||
"J",
|
||||
"K",
|
||||
"L",
|
||||
"M",
|
||||
"N",
|
||||
|
||||
"E", "F", "G", "H", "I",
|
||||
"J", "K", "L", "M", "N",
|
||||
/* 50 */
|
||||
"O",
|
||||
"P",
|
||||
"Q",
|
||||
"R",
|
||||
"S",
|
||||
"T",
|
||||
"U",
|
||||
"V",
|
||||
"W",
|
||||
"X",
|
||||
|
||||
"O", "P", "Q", "R", "S",
|
||||
"T", "U", "V", "W", "X",
|
||||
/* 60 */
|
||||
"Y",
|
||||
"Z",
|
||||
"bracketleft",
|
||||
"backslash",
|
||||
"bracketright",
|
||||
"asciicircum",
|
||||
"underscore",
|
||||
"grave",
|
||||
"a",
|
||||
"b",
|
||||
|
||||
"Y", "Z", "bracketleft", "backslash", "bracketright",
|
||||
"asciicircum", "underscore", "grave", "a", "b",
|
||||
/* 70 */
|
||||
"c",
|
||||
"d",
|
||||
"e",
|
||||
"f",
|
||||
"g",
|
||||
"h",
|
||||
"i",
|
||||
"j",
|
||||
"k",
|
||||
"l",
|
||||
|
||||
"c", "d", "e", "f", "g",
|
||||
"h", "i", "j", "k", "l",
|
||||
/* 80 */
|
||||
"m",
|
||||
"n",
|
||||
"o",
|
||||
"p",
|
||||
"q",
|
||||
"r",
|
||||
"s",
|
||||
"t",
|
||||
"u",
|
||||
"v",
|
||||
|
||||
"m", "n", "o", "p", "q",
|
||||
"r", "s", "t", "u", "v",
|
||||
/* 90 */
|
||||
"w",
|
||||
"x",
|
||||
"y",
|
||||
"z",
|
||||
"braceleft",
|
||||
"bar",
|
||||
"braceright",
|
||||
"asciitilde",
|
||||
"Adieresis",
|
||||
"Aring",
|
||||
|
||||
"w", "x", "y", "z", "braceleft",
|
||||
"bar", "braceright", "asciitilde", "Adieresis", "Aring",
|
||||
/* 100 */
|
||||
"Ccedilla",
|
||||
"Eacute",
|
||||
"Ntilde",
|
||||
"Odieresis",
|
||||
"Udieresis",
|
||||
"aacute",
|
||||
"agrave",
|
||||
"acircumflex",
|
||||
"adieresis",
|
||||
"atilde",
|
||||
|
||||
"Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis",
|
||||
"aacute", "agrave", "acircumflex", "adieresis", "atilde",
|
||||
/* 110 */
|
||||
"aring",
|
||||
"ccedilla",
|
||||
"eacute",
|
||||
"egrave",
|
||||
"ecircumflex",
|
||||
"edieresis",
|
||||
"iacute",
|
||||
"igrave",
|
||||
"icircumflex",
|
||||
"idieresis",
|
||||
|
||||
"aring", "ccedilla", "eacute", "egrave", "ecircumflex",
|
||||
"edieresis", "iacute", "igrave", "icircumflex", "idieresis",
|
||||
/* 120 */
|
||||
"ntilde",
|
||||
"oacute",
|
||||
"ograve",
|
||||
"ocircumflex",
|
||||
"odieresis",
|
||||
"otilde",
|
||||
"uacute",
|
||||
"ugrave",
|
||||
"ucircumflex",
|
||||
"udieresis",
|
||||
|
||||
"ntilde", "oacute", "ograve", "ocircumflex", "odieresis",
|
||||
"otilde", "uacute", "ugrave", "ucircumflex", "udieresis",
|
||||
/* 130 */
|
||||
"dagger",
|
||||
"degree",
|
||||
"cent",
|
||||
"sterling",
|
||||
"section",
|
||||
"bullet",
|
||||
"paragraph",
|
||||
"germandbls",
|
||||
"registered",
|
||||
"copyright",
|
||||
|
||||
"dagger", "degree", "cent", "sterling", "section",
|
||||
"bullet", "paragraph", "germandbls", "registered", "copyright",
|
||||
/* 140 */
|
||||
"trademark",
|
||||
"acute",
|
||||
"dieresis",
|
||||
"notequal",
|
||||
"AE",
|
||||
"Oslash",
|
||||
"infinity",
|
||||
"plusminus",
|
||||
"lessequal",
|
||||
"greaterequal",
|
||||
|
||||
"trademark", "acute", "dieresis", "notequal", "AE",
|
||||
"Oslash", "infinity", "plusminus", "lessequal", "greaterequal",
|
||||
/* 150 */
|
||||
"yen",
|
||||
"mu",
|
||||
"partialdiff",
|
||||
"summation",
|
||||
"product",
|
||||
"pi",
|
||||
"integral",
|
||||
"ordfeminine",
|
||||
"ordmasculine",
|
||||
"Omega",
|
||||
|
||||
"yen", "mu", "partialdiff", "summation", "product",
|
||||
"pi", "integral", "ordfeminine", "ordmasculine", "Omega",
|
||||
/* 160 */
|
||||
"ae",
|
||||
"oslash",
|
||||
"questiondown",
|
||||
"exclamdown",
|
||||
"logicalnot",
|
||||
"radical",
|
||||
"florin",
|
||||
"approxequal",
|
||||
"Delta",
|
||||
"guillemotleft",
|
||||
|
||||
"ae", "oslash", "questiondown", "exclamdown", "logicalnot",
|
||||
"radical", "florin", "approxequal", "Delta", "guillemotleft",
|
||||
/* 170 */
|
||||
"guillemotright",
|
||||
"ellipsis",
|
||||
"nbspace",
|
||||
"Agrave",
|
||||
"Atilde",
|
||||
"Otilde",
|
||||
"OE",
|
||||
"oe",
|
||||
"endash",
|
||||
"emdash",
|
||||
|
||||
"guillemotright", "ellipsis", "nbspace", "Agrave", "Atilde",
|
||||
"Otilde", "OE", "oe", "endash", "emdash",
|
||||
/* 180 */
|
||||
"quotedblleft",
|
||||
"quotedblright",
|
||||
"quoteleft",
|
||||
"quoteright",
|
||||
"divide",
|
||||
"lozenge",
|
||||
"ydieresis",
|
||||
"Ydieresis",
|
||||
"fraction",
|
||||
"currency",
|
||||
|
||||
"quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide",
|
||||
"lozenge", "ydieresis", "Ydieresis", "fraction", "currency",
|
||||
/* 190 */
|
||||
"guilsinglleft",
|
||||
"guilsinglright",
|
||||
"fi",
|
||||
"fl",
|
||||
"daggerdbl",
|
||||
"periodcentered",
|
||||
"quotesinglbase",
|
||||
"quotedblbase",
|
||||
"perthousand",
|
||||
"Acircumflex",
|
||||
|
||||
"guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl",
|
||||
"periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex",
|
||||
/* 200 */
|
||||
"Ecircumflex",
|
||||
"Aacute",
|
||||
"Edieresis",
|
||||
"Egrave",
|
||||
"Iacute",
|
||||
"Icircumflex",
|
||||
"Idieresis",
|
||||
"Igrave",
|
||||
"Oacute",
|
||||
"Ocircumflex",
|
||||
|
||||
"Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute",
|
||||
"Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex",
|
||||
/* 210 */
|
||||
"apple",
|
||||
"Ograve",
|
||||
"Uacute",
|
||||
"Ucircumflex",
|
||||
"Ugrave",
|
||||
"dotlessi",
|
||||
"circumflex",
|
||||
"tilde",
|
||||
"macron",
|
||||
"breve",
|
||||
|
||||
"apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave",
|
||||
"dotlessi", "circumflex", "tilde", "macron", "breve",
|
||||
/* 220 */
|
||||
"dotaccent",
|
||||
"ring",
|
||||
"cedilla",
|
||||
"hungarumlaut",
|
||||
"ogonek",
|
||||
"caron",
|
||||
"Lslash",
|
||||
"lslash",
|
||||
"Scaron",
|
||||
"scaron",
|
||||
|
||||
"dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek",
|
||||
"caron", "Lslash", "lslash", "Scaron", "scaron",
|
||||
/* 230 */
|
||||
"Zcaron",
|
||||
"zcaron",
|
||||
"brokenbar",
|
||||
"Eth",
|
||||
"eth",
|
||||
"Yacute",
|
||||
"yacute",
|
||||
"Thorn",
|
||||
"thorn",
|
||||
"minus",
|
||||
|
||||
"Zcaron", "zcaron", "brokenbar", "Eth", "eth",
|
||||
"Yacute", "yacute", "Thorn", "thorn", "minus",
|
||||
/* 240 */
|
||||
"multiply",
|
||||
"onesuperior",
|
||||
"twosuperior",
|
||||
"threesuperior",
|
||||
"onehalf",
|
||||
"onequarter",
|
||||
"threequarters",
|
||||
"franc",
|
||||
"Gbreve",
|
||||
"gbreve",
|
||||
|
||||
"multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf",
|
||||
"onequarter", "threequarters", "franc", "Gbreve", "gbreve",
|
||||
/* 250 */
|
||||
"Idot",
|
||||
"Scedilla",
|
||||
"scedilla",
|
||||
"Cacute",
|
||||
"cacute",
|
||||
"Ccaron",
|
||||
"ccaron",
|
||||
"dmacron",
|
||||
"Idot", "Scedilla", "scedilla", "Cacute", "cacute",
|
||||
"Ccaron", "ccaron", "dmacron",
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
static
|
||||
|
@ -623,8 +409,9 @@
|
|||
TT_UInt index,
|
||||
TT_String** PSname )
|
||||
{
|
||||
TT_Error error;
|
||||
TT_Post_Names* names;
|
||||
TT_Error error;
|
||||
TT_Post_Names* names;
|
||||
PSNames_Interface* psnames;
|
||||
|
||||
if ( !face )
|
||||
return TT_Err_Invalid_Face_Handle;
|
||||
|
@ -632,16 +419,20 @@
|
|||
if ( index >= (TT_UInt)face->root.num_glyphs )
|
||||
return TT_Err_Invalid_Glyph_Index;
|
||||
|
||||
psnames = (PSNames_Interface*)face->psnames;
|
||||
if (!psnames)
|
||||
return TT_Err_Unimplemented_Feature;
|
||||
|
||||
names = &face->postscript_names;
|
||||
|
||||
/* `.notdef' by default */
|
||||
*PSname = (TT_String*)TT_Mac_Postscript_Names[0];
|
||||
*PSname = MAC_NAME(0);
|
||||
|
||||
switch ( face->postscript.FormatType )
|
||||
{
|
||||
case 0x00010000:
|
||||
if ( index < 258 ) /* paranoid checking */
|
||||
*PSname = (TT_String*)TT_Mac_Postscript_Names[index];
|
||||
*PSname = MAC_NAME(index);
|
||||
break;
|
||||
|
||||
case 0x00020000:
|
||||
|
@ -662,7 +453,7 @@
|
|||
|
||||
|
||||
if ( name_index < 258 )
|
||||
*PSname = (TT_String*)TT_Mac_Postscript_Names[name_index];
|
||||
*PSname = MAC_NAME(name_index);
|
||||
else
|
||||
*PSname = (TT_String*)table->glyph_names[name_index - 258];
|
||||
}
|
||||
|
@ -684,7 +475,7 @@
|
|||
if ( index < table->num_glyphs ) /* paranoid checking */
|
||||
{
|
||||
index += table->offsets[index];
|
||||
*PSname = (TT_String*)TT_Mac_Postscript_Names[index];
|
||||
*PSname = MAC_NAME(index);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue