26#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
37#define FT_FIXED_ONE ( (FT_Fixed)0x10000 )
44 0, 1, 2, 3, 4, 5, 6, 7,
45 8, 9, 10, 11, 12, 13, 14, 15,
46 16, 17, 18, 19, 20, 21, 22, 23,
47 24, 25, 26, 27, 28, 29, 30, 31,
48 32, 33, 34, 35, 36, 37, 38, 39,
49 40, 41, 42, 43, 44, 45, 46, 47,
50 48, 49, 50, 51, 52, 53, 54, 55,
51 56, 57, 58, 59, 60, 61, 62, 63,
52 64, 65, 66, 67, 68, 69, 70, 71,
53 72, 73, 74, 75, 76, 77, 78, 79,
54 80, 81, 82, 83, 84, 85, 86, 87,
55 88, 89, 90, 91, 92, 93, 94, 95,
56 96, 97, 98, 99, 100, 101, 102, 103,
57 104, 105, 106, 107, 108, 109, 110, 111,
58 112, 113, 114, 115, 116, 117, 118, 119,
59 120, 121, 122, 123, 124, 125, 126, 127,
60 128, 129, 130, 131, 132, 133, 134, 135,
61 136, 137, 138, 139, 140, 141, 142, 143,
62 144, 145, 146, 147, 148, 149, 150, 151,
63 152, 153, 154, 155, 156, 157, 158, 159,
64 160, 161, 162, 163, 164, 165, 166, 167,
65 168, 169, 170, 171, 172, 173, 174, 175,
66 176, 177, 178, 179, 180, 181, 182, 183,
67 184, 185, 186, 187, 188, 189, 190, 191,
68 192, 193, 194, 195, 196, 197, 198, 199,
69 200, 201, 202, 203, 204, 205, 206, 207,
70 208, 209, 210, 211, 212, 213, 214, 215,
71 216, 217, 218, 219, 220, 221, 222, 223,
72 224, 225, 226, 227, 228
77 0, 1, 229, 230, 231, 232, 233, 234,
78 235, 236, 237, 238, 13, 14, 15, 99,
79 239, 240, 241, 242, 243, 244, 245, 246,
80 247, 248, 27, 28, 249, 250, 251, 252,
81 253, 254, 255, 256, 257, 258, 259, 260,
82 261, 262, 263, 264, 265, 266, 109, 110,
83 267, 268, 269, 270, 271, 272, 273, 274,
84 275, 276, 277, 278, 279, 280, 281, 282,
85 283, 284, 285, 286, 287, 288, 289, 290,
86 291, 292, 293, 294, 295, 296, 297, 298,
87 299, 300, 301, 302, 303, 304, 305, 306,
88 307, 308, 309, 310, 311, 312, 313, 314,
89 315, 316, 317, 318, 158, 155, 163, 319,
90 320, 321, 322, 323, 324, 325, 326, 150,
91 164, 169, 327, 328, 329, 330, 331, 332,
92 333, 334, 335, 336, 337, 338, 339, 340,
93 341, 342, 343, 344, 345, 346, 347, 348,
94 349, 350, 351, 352, 353, 354, 355, 356,
95 357, 358, 359, 360, 361, 362, 363, 364,
96 365, 366, 367, 368, 369, 370, 371, 372,
97 373, 374, 375, 376, 377, 378
102 0, 1, 231, 232, 235, 236, 237, 238,
103 13, 14, 15, 99, 239, 240, 241, 242,
104 243, 244, 245, 246, 247, 248, 27, 28,
105 249, 250, 251, 253, 254, 255, 256, 257,
106 258, 259, 260, 261, 262, 263, 264, 265,
107 266, 109, 110, 267, 268, 269, 270, 272,
108 300, 301, 302, 305, 314, 315, 158, 155,
109 163, 320, 321, 322, 323, 324, 325, 326,
110 150, 164, 169, 327, 328, 329, 330, 331,
111 332, 333, 334, 335, 336, 337, 338, 339,
112 340, 341, 342, 343, 344, 345, 346
117 0, 0, 0, 0, 0, 0, 0, 0,
118 0, 0, 0, 0, 0, 0, 0, 0,
119 0, 0, 0, 0, 0, 0, 0, 0,
120 0, 0, 0, 0, 0, 0, 0, 0,
121 1, 2, 3, 4, 5, 6, 7, 8,
122 9, 10, 11, 12, 13, 14, 15, 16,
123 17, 18, 19, 20, 21, 22, 23, 24,
124 25, 26, 27, 28, 29, 30, 31, 32,
125 33, 34, 35, 36, 37, 38, 39, 40,
126 41, 42, 43, 44, 45, 46, 47, 48,
127 49, 50, 51, 52, 53, 54, 55, 56,
128 57, 58, 59, 60, 61, 62, 63, 64,
129 65, 66, 67, 68, 69, 70, 71, 72,
130 73, 74, 75, 76, 77, 78, 79, 80,
131 81, 82, 83, 84, 85, 86, 87, 88,
132 89, 90, 91, 92, 93, 94, 95, 0,
133 0, 0, 0, 0, 0, 0, 0, 0,
134 0, 0, 0, 0, 0, 0, 0, 0,
135 0, 0, 0, 0, 0, 0, 0, 0,
136 0, 0, 0, 0, 0, 0, 0, 0,
137 0, 96, 97, 98, 99, 100, 101, 102,
138 103, 104, 105, 106, 107, 108, 109, 110,
139 0, 111, 112, 113, 114, 0, 115, 116,
140 117, 118, 119, 120, 121, 122, 0, 123,
141 0, 124, 125, 126, 127, 128, 129, 130,
142 131, 0, 132, 133, 0, 134, 135, 136,
143 137, 0, 0, 0, 0, 0, 0, 0,
144 0, 0, 0, 0, 0, 0, 0, 0,
145 0, 138, 0, 139, 0, 0, 0, 0,
146 140, 141, 142, 143, 0, 0, 0, 0,
147 0, 144, 0, 0, 0, 145, 0, 0,
148 146, 147, 148, 149, 0, 0, 0, 0
153 0, 0, 0, 0, 0, 0, 0, 0,
154 0, 0, 0, 0, 0, 0, 0, 0,
155 0, 0, 0, 0, 0, 0, 0, 0,
156 0, 0, 0, 0, 0, 0, 0, 0,
157 1, 229, 230, 0, 231, 232, 233, 234,
158 235, 236, 237, 238, 13, 14, 15, 99,
159 239, 240, 241, 242, 243, 244, 245, 246,
160 247, 248, 27, 28, 249, 250, 251, 252,
161 0, 253, 254, 255, 256, 257, 0, 0,
162 0, 258, 0, 0, 259, 260, 261, 262,
163 0, 0, 263, 264, 265, 0, 266, 109,
164 110, 267, 268, 269, 0, 270, 271, 272,
165 273, 274, 275, 276, 277, 278, 279, 280,
166 281, 282, 283, 284, 285, 286, 287, 288,
167 289, 290, 291, 292, 293, 294, 295, 296,
168 297, 298, 299, 300, 301, 302, 303, 0,
169 0, 0, 0, 0, 0, 0, 0, 0,
170 0, 0, 0, 0, 0, 0, 0, 0,
171 0, 0, 0, 0, 0, 0, 0, 0,
172 0, 0, 0, 0, 0, 0, 0, 0,
173 0, 304, 305, 306, 0, 0, 307, 308,
174 309, 310, 311, 0, 312, 0, 0, 312,
175 0, 0, 314, 315, 0, 0, 316, 317,
176 318, 0, 0, 0, 158, 155, 163, 319,
177 320, 321, 322, 323, 324, 325, 0, 0,
178 326, 150, 164, 169, 327, 328, 329, 330,
179 331, 332, 333, 334, 335, 336, 337, 338,
180 339, 340, 341, 342, 343, 344, 345, 346,
181 347, 348, 349, 350, 351, 352, 353, 354,
182 355, 356, 357, 358, 359, 360, 361, 362,
183 363, 364, 365, 366, 367, 368, 369, 370,
184 371, 372, 373, 374, 375, 376, 377, 378
205#define FT_COMPONENT cffload
224 for ( nn = 0; nn <
idx->off_size; nn++ )
273 if ( offsize < 1 || offsize > 4 )
280 idx->off_size = offsize;
348 if (
idx->count > 0 && !
idx->offsets )
357 data_size = (
FT_ULong)(
idx->count + 1 ) * offsize;
366 p_end =
p + data_size;
371 for ( ;
p < p_end;
p++, poff++ )
376 for ( ;
p < p_end;
p += 2, poff++ )
381 for ( ;
p < p_end;
p += 3, poff++ )
386 for ( ;
p < p_end;
p += 4, poff++ )
429 if (
idx->count > 0 &&
439 cur_offset =
idx->offsets[0] - 1;
442 if ( cur_offset != 0 )
445 " invalid first offset value %ld set to zero\n",
451 tbl[0] = org_bytes + cur_offset;
453 tbl[0] = new_bytes + cur_offset;
455 for (
n = 1;
n <=
idx->count;
n++ )
461 if ( next_offset < cur_offset )
462 next_offset = cur_offset;
463 else if ( next_offset >
idx->data_size )
464 next_offset =
idx->data_size;
467 tbl[
n] = org_bytes + next_offset;
470 tbl[
n] = new_bytes + next_offset +
extra;
472 if ( next_offset != cur_offset )
475 org_bytes + cur_offset,
476 tbl[
n] - tbl[
n - 1] );
483 cur_offset = next_offset;
494 if (
error && new_bytes )
539 }
while ( off2 == 0 && element < idx->
count );
552 }
while ( off2 == 0 && element < idx->
count );
561 FT_ERROR((
"cff_index_access_element:"
562 " offset to next entry (%ld)"
563 " exceeds the end of stream (%ld)\n",
569 if ( off1 && off2 > off1 )
571 *pbyte_len = off2 - off1;
576 *pbytes =
idx->bytes + off1 - 1;
605 if (
idx->bytes == 0 )
655 return ( element < font->num_strings )
666 if (
sid == 0xFFFFU )
674 if ( !
font->psnames )
695 if ( fdselect->
data )
734 FT_TRACE0((
"CFF_Load_FD_Select: empty FDSelect array\n" ));
739 fdselect->
data_size = num_ranges * 3 + 2;
764 if ( !fdselect->data )
767 switch ( fdselect->format )
770 fd = fdselect->data[glyph_index];
775 if ( (
FT_UInt)( glyph_index - fdselect->cache_first ) <
776 fdselect->cache_count )
778 fd = fdselect->cache_fd;
785 FT_Byte* p_limit =
p + fdselect->data_size;
793 if ( glyph_index <
first )
799 if ( glyph_index <
limit )
804 fdselect->cache_first =
first;
806 fdselect->cache_fd = fd2;
811 }
while (
p < p_limit );
846 for (
i = 0;
i < num_glyphs;
i++ )
858 for (
j = (
FT_Long)num_glyphs - 1;
j >= 0;
j-- )
876 if ( cid <= charset->max_cid )
944 if ( num_glyphs > 0 )
949 for (
j = 1;
j < num_glyphs;
j++ )
965 while (
j < num_glyphs )
984 if ( glyph_sid > 0xFFFFL - nleft )
986 FT_ERROR((
"cff_charset_load: invalid SID range trimmed"
987 " nleft=%d -> %ld\n", nleft, 0xFFFFL - glyph_sid ));
988 nleft = (
FT_UInt )( 0xFFFFL - glyph_sid );
992 for (
i = 0;
j < num_glyphs &&
i <= nleft;
i++,
j++, glyph_sid++ )
999 FT_ERROR((
"cff_charset_load: invalid table format\n" ));
1019 if ( num_glyphs > 229 )
1021 FT_ERROR((
"cff_charset_load: implicit charset larger than\n"
1022 "predefined charset (Adobe ISO-Latin)\n" ));
1037 if ( num_glyphs > 166 )
1039 FT_ERROR((
"cff_charset_load: implicit charset larger than\n"
1040 "predefined charset (Adobe Expert)\n" ));
1055 if ( num_glyphs > 87 )
1057 FT_ERROR((
"cff_charset_load: implicit charset larger than\n"
1058 "predefined charset (Adobe Expert Subset)\n" ));
1123 #define FT_fdot14ToFixed( x ) ( (FT_Fixed)( (FT_ULong)(x) << 2 ) )
1242 for (
j = 0;
j <
data->regionIdxCount;
j++ )
1270 subFont->blend_top = subFont->blend_stack;
1271 subFont->blend_used = 0;
1305 if ( numOperands >
count )
1307 FT_TRACE4((
" cff_blend_doBlend: Stack underflow %d argument%s\n",
1309 count == 1 ?
"" :
"s" ));
1316 size = 5 * numBlends;
1317 if ( subFont->blend_used +
size > subFont->blend_alloc )
1319 FT_Byte* blend_stack_old = subFont->blend_stack;
1320 FT_Byte* blend_top_old = subFont->blend_top;
1326 subFont->blend_alloc,
1327 subFont->blend_alloc +
size ) )
1330 subFont->blend_top = subFont->blend_stack + subFont->blend_used;
1331 subFont->blend_alloc +=
size;
1335 if ( blend_stack_old &&
1336 subFont->blend_stack != blend_stack_old )
1344 if ( *
p >= blend_stack_old && *
p < blend_top_old )
1349 subFont->blend_used +=
size;
1352 delta =
base + numBlends;
1354 for (
i = 0;
i < numBlends;
i++ )
1356 const FT_Int32*
weight = &blend->
BV[1];
1363 for (
j = 1;
j < blend->
lenBV;
j++ )
1373 *subFont->blend_top++ = 255;
1374 *subFont->blend_top++ = (
FT_Byte)(
sum >> 24 );
1375 *subFont->blend_top++ = (
FT_Byte)(
sum >> 16 );
1376 *subFont->blend_top++ = (
FT_Byte)(
sum >> 8 );
1408 if ( !( lenNDV == 0 || NDV ) )
1411 " Malformed Normalize Design Vector data\n" ));
1416 blend->builtBV =
FALSE;
1418 vs = &blend->font->vstore;
1421 if ( lenNDV != 0 && lenNDV !=
vs->axisCount )
1423 FT_TRACE4((
" cff_blend_build_vector: Axis count mismatch\n" ));
1428 if ( vsindex >=
vs->dataCount )
1430 FT_TRACE4((
" cff_blend_build_vector: vsindex out of range\n" ));
1436 varData = &
vs->varData[vsindex];
1441 blend->lenBV *
sizeof( *blend->BV ),
1442 len *
sizeof( *blend->BV ) ) )
1448 for ( master = 0; master <
len; master++ )
1459 FT_TRACE4((
" build blend vector len %d\n"
1462 blend->BV[master] / 65536.0 ));
1468 varRegion = &
vs->varRegionList[
idx];
1470 if (
idx >=
vs->regionCount )
1473 " region index out of range\n" ));
1482 blend->BV[master] = 0;
1491 for (
j = 0;
j < lenNDV;
j++ )
1531 blend->BV[master] =
FT_MulFix( blend->BV[master], axisScalar );
1535 blend->BV[master] / 65536.0 ));
1541 blend->lastVsindex = vsindex;
1547 blend->lenNDV *
sizeof ( *NDV ),
1548 lenNDV *
sizeof ( *NDV ) ) )
1553 lenNDV *
sizeof ( *NDV ) );
1556 blend->lenNDV = lenNDV;
1557 blend->builtBV =
TRUE;
1572 if ( !blend->builtBV ||
1573 blend->lastVsindex != vsindex ||
1574 blend->lenNDV != lenNDV ||
1578 lenNDV *
sizeof ( *NDV ) ) != 0 ) )
1588#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
1597 FT_Service_MultiMasters mm = (FT_Service_MultiMasters)
face->mm;
1611 FT_Service_MultiMasters mm = (FT_Service_MultiMasters)
face->mm;
1626 encoding->
count = 0;
1653 for (
j = 0;
j < 256;
j++ )
1655 encoding->
sids [
j] = 0;
1681 switch ( encoding->
format & 0x7F )
1704 if (
j < num_glyphs )
1725 encoding->
count = 0;
1728 for (
j = 0;
j <
count;
j++,
i += nleft )
1743 encoding->
count = nleft;
1746 for (
k =
i;
k < nleft +
i;
k++, glyph_code++ )
1749 if (
k < num_glyphs && glyph_code < 256 )
1761 if ( encoding->
count > 256 )
1762 encoding->
count = 256;
1767 FT_ERROR((
"cff_encoding_load: invalid table format\n" ));
1773 if ( encoding->
format & 0x80 )
1793 encoding->
sids[glyph_code] = glyph_sid;
1797 for ( gindex = 0; gindex < num_glyphs; gindex++ )
1830 encoding->
count = 0;
1837 for (
j = 0;
j < 256;
j++ )
1854 encoding->
sids [
j] = 0;
1860 FT_ERROR((
"cff_encoding_load: invalid table format\n" ));
1893 subfont->blend.font =
font;
1894 subfont->blend.usedBV =
FALSE;
1896 if ( !
top->private_offset || !
top->private_size )
1910 subfont->
lenNDV = lenNDV;
1914 stackSize =
font->cff2 ?
font->top_font.font_dict.maxstack + 1
1930 FT_TRACE4((
" private dictionary:\n" ));
1954 " setting unlikely BlueShift value %ld to default (7)\n",
1962 " setting unlikely BlueFuzz value %ld to default (1)\n",
2024 top->underline_position = -( 100L << 16 );
2025 top->underline_thickness = 50L << 16;
2026 top->charstring_type = 2;
2027 top->font_matrix.xx = 0x10000L;
2028 top->font_matrix.yy = 0x10000L;
2029 top->cid_count = 8720;
2033 top->version = 0xFFFFU;
2034 top->notice = 0xFFFFU;
2035 top->copyright = 0xFFFFU;
2036 top->full_name = 0xFFFFU;
2037 top->family_name = 0xFFFFU;
2038 top->weight = 0xFFFFU;
2039 top->embedded_postscript = 0xFFFFU;
2041 top->cid_registry = 0xFFFFU;
2042 top->cid_ordering = 0xFFFFU;
2043 top->cid_font_name = 0xFFFFU;
2060 dict_len =
idx->data_size;
2079 if (
top->cid_registry != 0xFFFFU )
2106 if (
face->root.internal->random_seed == -1 )
2119 }
while (
driver->random_seed < 0 );
2124 subfont->
random = (FT_UInt32)
face->root.internal->random_seed;
2125 if (
face->root.internal->random_seed )
2129 face->root.internal->random_seed =
2131 (FT_UInt32)
face->root.internal->random_seed );
2133 }
while (
face->root.internal->random_seed < 0 );
2193#define FT_STRUCTURE CFF_FontRec
2213 dict = &
font->top_font.font_dict;
2220 font->base_offset = base_offset;
2228 if (
font->version_major != 2 ||
2229 font->header_size < 5 )
2231 FT_TRACE2((
" not a CFF2 font header\n" ));
2247 if (
font->version_major != 1 ||
2248 font->header_size < 4 ||
2249 absolute_offset > 4 )
2251 FT_TRACE2((
" not a CFF font header\n" ));
2282 font->font_dict_index.data_size =
font->top_dict_length;
2309 if (
font->name_index.count > 1 &&
2310 font->name_index.data_size <
font->name_index.count )
2328 &
font->string_pool_size ) ) )
2332 if (
font->name_index.count >
font->font_dict_index.count )
2335 " not enough entries in Top DICT index\n" ));
2346 subfont_index = (
FT_UInt)( face_index & 0xFFFF );
2348 if ( face_index > 0 && subfont_index >=
font->name_index.count )
2351 " invalid subfont index for pure CFF font (%d)\n",
2357 font->num_faces =
font->name_index.count;
2363 if (
font->name_index.count > 1 )
2366 " invalid CFF font with multiple subfonts\n"
2368 " in SFNT wrapper\n" ));
2375 if ( face_index < 0 )
2381 &
font->font_dict_index,
2429 FT_TRACE0((
"cff_font_load: FD array too large in CID font\n" ));
2434 font->num_subfonts = fd_index.count;
2439 for (
idx = 0;
idx < fd_index.count;
idx++ )
2462 if ( !cff2 || fd_index.count > 1 )
2464 font->charstrings_index.count,
2475 font->num_subfonts = 0;
2480 FT_ERROR((
"cff_font_load: no charstrings offset\n" ));
2485 font->num_glyphs =
font->charstrings_index.count;
2494 if ( !cff2 &&
font->num_glyphs > 0 )
2543 if (
font->num_subfonts > 0 )
2567 if (
font->cf2_instance.finalizer )
2569 font->cf2_instance.finalizer(
font->cf2_instance.data );
static unsigned char bytes[4]
static FT_ULong cff_index_read_offset(CFF_Index idx, FT_Error *errorp)
static FT_Error cff_index_load_offsets(CFF_Index idx)
static FT_Error cff_charset_load(CFF_Charset charset, FT_UInt num_glyphs, FT_Stream stream, FT_ULong base_offset, FT_ULong offset, FT_Bool invert)
cff_get_standard_encoding(FT_UInt charcode)
static void cff_subfont_done(FT_Memory memory, CFF_SubFont subfont)
cff_blend_clear(CFF_SubFont subFont)
cff_blend_build_vector(CFF_Blend blend, FT_UInt vsindex, FT_UInt lenNDV, FT_Fixed *NDV)
static void cff_charset_free_cids(CFF_Charset charset, FT_Memory memory)
static FT_Error cff_encoding_load(CFF_Encoding encoding, CFF_Charset charset, FT_UInt num_glyphs, FT_Stream stream, FT_ULong base_offset, FT_ULong offset)
cff_charset_cid_to_gindex(CFF_Charset charset, FT_UInt cid)
cff_index_forget_element(CFF_Index idx, FT_Byte **pbytes)
static void cff_index_done(CFF_Index idx)
cff_font_done(CFF_Font font)
static const FT_UShort cff_expertsubset_charset[87]
static const FT_UShort cff_expert_encoding[256]
#define FT_fdot14ToFixed(x)
static void CFF_Done_FD_Select(CFF_FDSelect fdselect, FT_Stream stream)
static FT_Error cff_subfont_load(CFF_SubFont subfont, CFF_Index idx, FT_UInt font_index, FT_Stream stream, FT_ULong base_offset, FT_UInt code, CFF_Font font, CFF_Face face)
cff_fd_select_get(CFF_FDSelect fdselect, FT_UInt glyph_index)
static FT_Error cff_charset_compute_cids(CFF_Charset charset, FT_UInt num_glyphs, FT_Memory memory)
static const FT_UShort cff_expert_charset[166]
cff_blend_doBlend(CFF_SubFont subFont, CFF_Parser parser, FT_UInt numBlends)
static void cff_vstore_done(CFF_VStoreRec *vstore, FT_Memory memory)
static FT_Error cff_index_init(CFF_Index idx, FT_Stream stream, FT_Bool load, FT_Bool cff2)
static const FT_UShort cff_standard_encoding[256]
cff_index_access_element(CFF_Index idx, FT_UInt element, FT_Byte **pbytes, FT_ULong *pbyte_len)
cff_index_get_string(CFF_Font font, FT_UInt element)
cff_font_load(FT_Library library, FT_Stream stream, FT_Int face_index, CFF_Font font, CFF_Face face, FT_Bool pure_cff, FT_Bool cff2)
cff_load_private_dict(CFF_Font font, CFF_SubFont subfont, FT_UInt lenNDV, FT_Fixed *NDV)
cff_index_get_sid_string(CFF_Font font, FT_UInt sid)
static void cff_encoding_done(CFF_Encoding encoding)
cff_blend_check_vector(CFF_Blend blend, FT_UInt vsindex, FT_UInt lenNDV, FT_Fixed *NDV)
static const FT_UShort cff_isoadobe_charset[229]
static FT_Error CFF_Load_FD_Select(CFF_FDSelect fdselect, FT_UInt num_glyphs, FT_Stream stream, FT_ULong offset)
static FT_Error cff_vstore_load(CFF_VStoreRec *vstore, FT_Stream stream, FT_ULong base_offset, FT_ULong offset)
static void cff_charset_done(CFF_Charset charset, FT_Stream stream)
cff_index_get_name(CFF_Font font, FT_UInt element)
static FT_Error cff_index_get_pointers(CFF_Index idx, FT_Byte ***table, FT_Byte **pool, FT_ULong *pool_size)
FT_BEGIN_HEADER typedef TT_Face CFF_Face
cff_parser_init(CFF_Parser parser, FT_UInt code, void *object, FT_Library library, FT_UInt stackSize, FT_UShort num_designs, FT_UShort num_axes)
cff_parse_num(CFF_Parser parser, FT_Byte **d)
cff_parser_done(CFF_Parser parser)
cff_parser_run(CFF_Parser parser, FT_Byte *start, FT_Byte *limit)
#define CFF2_DEFAULT_STACK
#define CFF2_CODE_PRIVATE
#define CFF2_CODE_FONTDICT
#define CFF_MAX_STACK_DEPTH
#define CFF2_CODE_TOPDICT
FT_BEGIN_HEADER struct CFF_IndexRec_ * CFF_Index
FT_BEGIN_HEADER struct CFF_IndexRec_ CFF_IndexRec
#define CFF_MAX_CID_FONTS
FT_DivFix(FT_Long a, FT_Long b)
FT_MulFix(FT_Long a, FT_Long b)
#define FT_TRACE0(varformat)
#define FT_ERROR(varformat)
#define FT_TRACE2(varformat)
#define FT_TRACE4(varformat)
#define FT_REALLOC(ptr, cursz, newsz)
#define FT_NEW_ARRAY(ptr, count)
#define FT_SET_ERROR(expression)
#define FT_ALLOC(ptr, size)
#define FT_OFFSET(base, count)
#define FT_ARRAY_COPY(dest, source, count)
#define FT_MEM_COPY(dest, source, count)
#define FT_FACE_DRIVER(x)
#define FT_FRAME_ENTER(size)
#define FT_READ_USHORT(var)
#define FT_FRAME_RELEASE(bytes)
#define FT_STREAM_SEEK(position)
#define FT_READ_ULONG(var)
#define FT_NEXT_USHORT(buffer)
#define FT_PEEK_USHORT(p)
#define FT_READ_BYTE(var)
#define FT_FRAME_EXTRACT(size, bytes)
#define FT_STREAM_READ_FIELDS(fields, object)
#define FT_STREAM_SKIP(distance)
#define FT_STREAM_READ(buffer, count)
#define FT_FRAME_START(size)
#define FT_READ_SHORT(var)
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
FT_BEGIN_HEADER typedef unsigned char FT_Bool
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble GLdouble top
GLenum GLuint GLint GLenum face
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static char memory[1024 *256]
struct @1789::@1790 driver
FT_BEGIN_HEADER struct PS_DriverRec_ * PS_Driver
struct PSAux_ServiceRec_ * PSAux_Service
static int sum(int x_, int y_)
FT_ULong cid_fd_array_offset
FT_ULong cid_fd_select_offset
FT_ULong charstrings_offset
FT_Long initial_random_seed
FT_Fixed expansion_factor
FT_ULong local_subrs_offset
CFF_IndexRec local_subrs_index
CFF_PrivateRec private_dict
CFF_FontRecDictRec font_dict
CFF_VarRegion * varRegionList
CFF_AxisCoords * axisList
FT_UInt32(* cff_random)(FT_UInt32 r)
enum parser_state stack[4]
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList