64 #include FT_INTERNAL_DEBUG_H 65 #include FT_CONFIG_CONFIG_H 66 #include FT_MULTIPLE_MASTERS_H 67 #include FT_INTERNAL_TYPE1_TYPES_H 68 #include FT_INTERNAL_CALC_H 69 #include FT_INTERNAL_HASH_H 75 #ifdef FT_CONFIG_OPTION_INCREMENTAL 76 #define IS_INCREMENTAL (FT_Bool)( face->root.internal->incremental_interface != 0 ) 78 #define IS_INCREMENTAL 0 89 #define FT_COMPONENT trace_t1load 92 #ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT 125 if ( num_designs > 0 )
145 for ( nn = 2; nn <= num_designs; nn++ )
170 if ( num_designs && num_axis && blend->
design_pos[0] == 0 )
178 for (
n = 1;
n < num_designs;
n++ )
214 axis->minimum =
map->design_points[0];
215 axis->maximum =
map->design_points[
map->num_points - 1];
237 if ( ncv <= axismap->blend_points[0] )
242 if ( ncv <= axismap->blend_points[
j] )
266 if ( axis_count == 1 )
269 else if ( axis_count == 2 )
275 else if ( axis_count == 3 )
381 return FT_THROW( Invalid_Argument );
405 if ( (
n & ( 1 <<
m ) ) == 0 )
456 return FT_THROW( Invalid_Argument );
465 FT_TRACE2((
"T1_Get_MM_Blend: only using first %d of %d coordinates\n",
470 for (
i = 0;
i < nc;
i++ )
472 for ( ;
i < num_coords;
i++ )
491 return FT_THROW( Invalid_Argument );
509 if (
n < num_coords )
512 design = ( designs[
map->num_points - 1] - designs[0] ) / 2;
520 if ( design == p_design )
522 the_blend = blends[
p];
526 if ( design < p_design )
537 the_blend = blends[0];
539 else if (
after < 0 )
540 the_blend = blends[
map->num_points - 1];
548 final_blends[
n] = the_blend;
593 for (
i = 0;
i < num_coords;
i++ )
612 return FT_THROW( Invalid_Argument );
622 " only using first %d of %d coordinates\n",
627 for (
i = 0;
i < nc;
i++ )
629 for ( ;
i < num_coords;
i++ )
652 for (
n = 1;
n < num_designs;
n++ )
660 for (
n = 0;
n < num_designs;
n++ )
672 for (
n = 0;
n < num_axis;
n++ )
676 for (
n = 0;
n < num_axis;
n++ )
711 FT_ERROR((
"parse_blend_axis_types: incorrect number of axes: %d\n",
726 for (
n = 0;
n < num_axis;
n++ )
734 if (
token->start[0] ==
'/' )
748 " overwriting axis name `%s' with `%*.s'\n",
762 loader->parser.root.error =
error;
782 if ( num_designs < 0 )
789 FT_ERROR((
"parse_blend_design_positions:" 790 " incorrect number of designs: %d\n",
805 for (
n = 0;
n < num_designs;
n++ )
813 token = design_tokens +
n;
822 FT_ERROR((
"parse_blend_design_positions:" 823 " invalid number of axes: %d\n",
837 else if ( n_axis != num_axis )
839 FT_ERROR((
"parse_blend_design_positions: incorrect table\n" ));
845 for ( axis = 0; axis < n_axis; axis++ )
847 T1_Token token2 = axis_tokens + axis;
856 loader->parser.root.cursor = old_cursor;
857 loader->parser.root.limit = old_limit;
861 loader->parser.root.error =
error;
888 FT_ERROR((
"parse_blend_design_map: incorrect number of axes: %d\n",
894 old_cursor =
parser->root.cursor;
895 old_limit =
parser->root.limit;
903 for (
n = 0;
n < num_axis;
n++ )
911 axis_token = axis_tokens +
n;
920 FT_ERROR((
"parse_blend_design_map: incorrect table\n" ));
925 if (
map->design_points )
927 FT_ERROR((
"parse_blend_design_map: duplicate table\n" ));
935 map->blend_points =
map->design_points + num_points;
938 for (
p = 0;
p < num_points;
p++ )
943 point_token = point_tokens +
p;
954 parser->root.cursor = old_cursor;
955 parser->root.limit = old_limit;
979 if ( num_designs < 0 )
987 " incorrect number of designs: %d\n",
1003 " /BlendDesignPosition and /WeightVector have\n" 1005 " different number of elements\n" ));
1010 old_cursor =
parser->root.cursor;
1011 old_limit =
parser->root.limit;
1013 for (
n = 0;
n < num_designs;
n++ )
1015 token = design_tokens +
n;
1023 parser->root.cursor = old_cursor;
1024 parser->root.limit = old_limit;
1075 error = loader->parser.root.error;
1081 switch (
field->location )
1084 dummy_object = &
face->type1.font_info;
1096 dummy_object = &
face->type1.font_extra;
1102 dummy_object = &
face->type1.private_dict;
1114 dummy_object = &
face->type1.font_bbox;
1126 dummy_object = loader;
1132 dummy_object =
face;
1137 #ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT 1139 dummy_object =
face->blend;
1146 dummy_object = &
face->type1;
1163 FT_TRACE1((
"t1_load_keyword: ignoring keyword `%s'" 1164 " which is not valid at this point\n" 1165 " (probably due to missing keywords)\n",
1228 FT_ERROR((
"read_binary_data: invalid size field\n" ));
1263 if ( temp_scale == 0 )
1265 FT_ERROR((
"t1_parse_font_matrix: invalid font matrix\n" ));
1271 if ( temp_scale != 0x10000L )
1281 temp[3] =
temp[3] < 0 ? -0x10000
L : 0x10000
L;
1310 FT_ERROR((
"parse_encoding: out of bounds\n" ));
1321 PS_Table char_table = &loader->encoding_table;
1331 only_immediates = 1;
1341 " only using first 256 encoding array entries\n" ));
1350 if ( encode->char_index )
1352 FT_FREE( encode->char_index );
1358 loader->num_chars = encode->num_chars =
array_size;
1371 char* notdef = (
char *)
".notdef";
1407 if (
cur[1] ==
'e' &&
1429 if ( only_immediates )
1473 else if ( only_immediates )
1506 ft_strncmp( (
const char*)
cur,
"StandardEncoding", 16 ) == 0 )
1514 ft_strncmp( (
const char*)
cur,
"ISOLatin1Encoding", 17 ) == 0 )
1541 *
parser->root.cursor ==
'[' )
1546 *
parser->root.cursor !=
']' )
1552 if ( num_subrs < 0 )
1560 num_subrs > (
parser->root.limit -
parser->root.cursor ) >> 3 )
1577 FT_TRACE0((
"parse_subrs: adjusting number of subroutines" 1578 " (from %d to %d)\n",
1581 num_subrs = (
parser->root.limit -
parser->root.cursor ) >> 3;
1583 if ( !loader->subrs_hash )
1585 if (
FT_NEW( loader->subrs_hash ) )
1602 if ( !loader->num_subrs )
1651 if ( loader->subrs_hash )
1658 if ( loader->num_subrs )
1666 if (
face->type1.private_dict.lenIV >= 0 )
1696 if ( !loader->num_subrs )
1697 loader->num_subrs = num_subrs;
1706 #define TABLE_EXTEND 5 1714 PS_Table code_table = &loader->charstrings;
1715 PS_Table name_table = &loader->glyph_names;
1716 PS_Table swap_table = &loader->swap_table;
1730 if ( num_glyphs < 0 )
1737 if ( num_glyphs > (
limit -
cur ) >> 3 )
1739 FT_TRACE0((
"parse_charstrings: adjusting number of glyphs" 1740 " (from %d to %d)\n",
1741 num_glyphs, (
limit -
cur ) >> 3 ));
1757 if ( !loader->num_glyphs )
1797 if (
cur[0] ==
'd' &&
1815 if (
cur[0] ==
'e' &&
1850 if ( loader->num_glyphs )
1863 (
const char*)(name_table->
elements[
n]) ) == 0 )
1869 if (
face->type1.private_dict.lenIV >= 0 &&
1906 loader->num_glyphs =
n;
1909 if ( notdef_found &&
1934 name_table->
elements[notdef_index],
1935 name_table->
lengths [notdef_index] );
1941 code_table->
elements[notdef_index],
1942 code_table->
lengths [notdef_index] );
1971 else if ( !notdef_found )
1979 FT_Byte notdef_glyph[] = { 0x8B, 0xF7, 0xE1, 0x0D, 0x0E };
1980 char* notdef_name = (
char *)
".notdef";
2017 loader->num_glyphs += 1;
2053 #ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT 2108 if ( loader->keywords_encountered &
T1_PRIVATE )
2109 loader->keywords_encountered |=
2111 parser->root.cursor += 13;
2134 parser->root.cursor = start_binary;
2136 return FT_THROW( Invalid_File_Format );
2147 parser->root.cursor = start_binary;
2149 return FT_THROW( Invalid_File_Format );
2215 ( loader->keywords_encountered &
T1_PRIVATE )
2219 if ( !( dict &
keyword->dict ) )
2221 FT_TRACE1((
"parse_dict: found `%s' but ignoring it" 2222 " since it is in the wrong dictionary\n",
2227 if ( !( loader->keywords_encountered &
2293 FT_FREE( loader->subrs_hash );
2317 face->len_buildchar = 0;
2350 #ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT 2353 face->blend->num_default_design_vector != 0 &&
2354 face->blend->num_default_design_vector !=
face->blend->num_axis )
2357 FT_ERROR((
"T1_Open_Face(): /DesignVector contains %u entries " 2358 "while there are %u axes.\n",
2359 face->blend->num_default_design_vector,
2360 face->blend->num_axis ));
2362 face->blend->num_default_design_vector = 0;
2368 ( !
face->blend->num_designs || !
face->blend->num_axis ) )
2377 for (
i = 0;
i <
face->blend->num_axis;
i++ )
2378 if ( !
face->blend->design_map[
i].num_points )
2387 if (
face->len_buildchar > 0 )
2394 FT_ERROR((
"T1_Open_Face: cannot allocate BuildCharArray\n" ));
2395 face->len_buildchar = 0;
2401 face->len_buildchar = 0;
2409 if ( loader.subrs.init )
2413 type1->
subrs = loader.subrs.elements;
2414 type1->
subrs_len = loader.subrs.lengths;
2418 loader.subrs.init = 0;
2419 loader.subrs_hash =
NULL;
2423 if ( !loader.charstrings.init )
2425 FT_ERROR((
"T1_Open_Face: no `/CharStrings' array in face\n" ));
2429 loader.charstrings.init = 0;
2438 loader.glyph_names.block =
NULL;
2439 loader.glyph_names.elements =
NULL;
2444 FT_Int charcode,
idx, min_char, max_char;
2457 for ( ; charcode < loader.encoding_table.max_elems; charcode++ )
2462 type1->
encoding.char_index[charcode] = 0;
2463 type1->
encoding.char_name [charcode] = (
char *)
".notdef";
2465 char_name = loader.encoding_table.elements[charcode];
2471 (
const char*)glyph_name ) == 0 )
2474 type1->
encoding.char_name [charcode] = (
char*)glyph_name;
2479 (
const char*)glyph_name ) != 0 )
2481 if ( charcode < min_char )
2482 min_char = charcode;
2483 if ( charcode >= max_char )
2484 max_char = charcode + 1;
2491 type1->
encoding.code_first = min_char;
2492 type1->
encoding.code_last = max_char;
2493 type1->
encoding.num_chars = loader.num_chars;
#define FT_ALLOC(ptr, size)
T1_Finalize_Parser(T1_Parser parser)
FT_DivFix(FT_Long a, FT_Long b)
static void mm_weights_unmap(FT_Fixed *weights, FT_Fixed *axiscoords, FT_UInt axis_count)
PS_PrivateRec private_dict
T1_EncodingType encoding_type
#define T1_Add_Table(p, i, o, l)
#define T1_MAX_MM_MAP_POINTS
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
#define FT_FACE_FLAG_VARIATION
T1_New_Parser(T1_Parser parser, FT_Stream stream, FT_Memory memory, PSAux_Service psaux)
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 factor
#define T1_Skip_Spaces(p)
GLuint GLuint GLsizei count
static void t1_parse_font_matrix(T1_Face face, T1_Loader loader)
static void t1_done_loader(T1_Loader loader)
T1_Set_MM_Blend(T1_Face face, FT_UInt num_coords, FT_Fixed *coords)
#define T1_Release_Table(p)
static FT_Error t1_set_mm_blend(T1_Face face, FT_UInt num_coords, FT_Fixed *coords)
__inline int before(__u32 seq1, __u32 seq2)
FT_BEGIN_HEADER struct T1_EncodingRecRec_ * T1_Encoding
FT_String * axis_names[T1_MAX_MM_AXIS]
FT_BEGIN_HEADER struct FT_MM_Axis_ FT_MM_Axis
FT_Fixed expansion_factor
FT_BBox * bboxes[T1_MAX_MM_DESIGNS+1]
FT_Byte * glyph_names_block
static char memory[1024 *256]
static FT_Error t1_load_keyword(T1_Face face, T1_Loader loader, const T1_Field field)
T1_Set_Var_Design(T1_Face face, FT_UInt num_coords, FT_Fixed *coords)
FT_UInt * charstrings_len
#define T1_ToTokenArray(p, t, m, c)
FT_BEGIN_HEADER typedef unsigned char FT_Bool
#define FT_TRACE1(varformat)
T1_Get_MM_Blend(T1_Face face, FT_UInt num_coords, FT_Fixed *coords)
static const CLSID * objects[]
PS_Private privates[T1_MAX_MM_DESIGNS+1]
#define FT_ERROR(varformat)
#define FT_ASSERT(condition)
T1_Set_MM_Design(T1_Face face, FT_UInt num_coords, FT_Long *coords)
#define T1_MAX_MM_DESIGNS
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 token
#define T1_ToFixedArray(p, m, f, t)
FT_Byte * charstrings_block
static void parse_weight_vector(T1_Face face, T1_Loader loader)
static void parse_subrs(T1_Face face, T1_Loader loader)
static void parse_buildchar(T1_Face face, T1_Loader loader)
#define T1_Load_Field_Table(p, f, o, m, pf)
struct T1_FieldRec_ * T1_Field
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
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
static int read_binary_data(T1_Parser parser, FT_ULong *size, FT_Byte **base, FT_Bool incremental)
#define FT_TRACE0(varformat)
GLboolean GLboolean GLboolean b
#define IS_PS_TOKEN(cur, limit, token)
FT_Var_Named_Style * namedstyle
#define T1_Skip_PS_Token(p)
FT_BEGIN_HEADER struct T1_Loader_ * T1_Loader
static FT_Error parse_dict(T1_Face face, T1_Loader loader, FT_Byte *base, FT_ULong size)
#define T1_FIELD_CALLBACK(_ident, _name, _dict)
struct PSAux_ServiceRec_ * PSAux_Service
static void parse_blend_design_map(T1_Face face, T1_Loader loader)
#define FT_TRACE2(varformat)
static FT_Error t1_allocate_blend(T1_Face face, FT_UInt num_designs, FT_UInt num_axis)
FT_BEGIN_HEADER struct T1_Loader_ T1_LoaderRec
static void parse_blend_axis_types(T1_Face face, T1_Loader loader)
struct FT_FaceRec_ * FT_Face
FT_Error ft_hash_num_insert(FT_Int num, size_t data, FT_Hash hash, FT_Memory memory)
const PS_Table_FuncsRec * ps_table_funcs
static void parse_blend_design_positions(T1_Face face, T1_Loader loader)
FT_Error ft_hash_num_init(FT_Hash hash, FT_Memory memory)
FT_Fixed * default_weight_vector
static FT_Fixed mm_axis_unmap(PS_DesignMap axismap, FT_Fixed ncv)
static void t1_init_loader(T1_Loader loader, T1_Face face)
T1_Done_Blend(T1_Face face)
T1_Get_Private_Dict(T1_Parser parser, PSAux_Service psaux)
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
FT_UInt num_default_design_vector
__inline int after(__u32 seq1, __u32 seq2)
static void parse_private(T1_Face face, T1_Loader loader)
#define FT_NEW_ARRAY(ptr, count)
FT_MulFix(FT_Long a, FT_Long b)
#define FT_TRACE6(varformat)
static void parse_charstrings(T1_Face face, T1_Loader loader)
#define T1_Load_Field(p, f, o, m, pf)
T1_Reset_MM_Blend(T1_Face face, FT_UInt instance_index)
#define FT_SET_ERROR(expression)
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
T1_Get_MM_Var(T1_Face face, FT_MM_Var **master)
T1_Open_Face(T1_Face face)
void(* t1_decrypt)(FT_Byte *buffer, FT_Offset length, FT_UShort seed)
FT_MM_Axis axis[T1_MAX_MM_AXIS]
FT_Fixed * design_pos[T1_MAX_MM_DESIGNS]
#define FT_MAKE_TAG(_x1, _x2, _x3, _x4)
FT_BEGIN_HEADER struct T1_ParserRec_ * T1_Parser
#define FT_MEM_COPY(dest, source, count)
T1_Get_Var_Design(T1_Face face, FT_UInt num_coords, FT_Fixed *coords)
FT_Error(* init)(PS_Table table, FT_Int count, FT_Memory memory)
T1_Get_Multi_Master(T1_Face face, FT_Multi_Master *master)
static void parse_encoding(T1_Face face, T1_Loader loader)
#define T1_FONTDIR_AFTER_PRIVATE
PS_FontInfo font_infos[T1_MAX_MM_DESIGNS+1]
GLenum GLuint GLint GLenum face
static const T1_FieldRec t1_keywords[]
PS_DesignMapRec design_map[T1_MAX_MM_AXIS]
#define T1_FIELD_DICT_PRIVATE
#define T1_FIELD_DICT_FONTDICT
GLuint const GLchar * name