65#include FT_CONFIG_CONFIG_H
75#ifdef FT_CONFIG_OPTION_INCREMENTAL
76#define IS_INCREMENTAL FT_BOOL( face->root.internal->incremental_interface )
78#define IS_INCREMENTAL 0
89#define FT_COMPONENT 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 )
329#define ALIGN_SIZE( n ) \
330 ( ( (n) + sizeof (void*) - 1 ) & ~( sizeof (void*) - 1 ) )
349 axis_flags = (
FT_UShort*)( (
char*)mmvar + mmvar_size );
402 return FT_THROW( Invalid_Argument );
417 if (
m >= num_coords )
425 if ( (
n & ( 1 <<
m ) ) == 0 )
433 else if (
factor >= 0x10000L )
466 face->root.face_flags &= ~FT_FACE_FLAG_VARIATION;
484 return FT_THROW( Invalid_Argument );
493 FT_TRACE2((
"T1_Get_MM_Blend: only using first %d of %d coordinates\n",
498 for (
i = 0;
i < nc;
i++ )
500 for ( ;
i < num_coords;
i++ )
517 return FT_THROW( Invalid_Argument );
519 if ( !
len && !weightvector )
527 return FT_THROW( Invalid_Argument );
531 for (
i = 0;
i <
n;
i++ )
540 face->root.face_flags &= ~FT_FACE_FLAG_VARIATION;
557 return FT_THROW( Invalid_Argument );
559 if ( *len < blend->num_designs )
562 return FT_THROW( Invalid_Argument );
588 return FT_THROW( Invalid_Argument );
606 if (
n < num_coords )
609 design = ( designs[
map->num_points - 1] - designs[0] ) / 2;
617 if ( design == p_design )
619 the_blend = blends[
p];
623 if ( design < p_design )
634 the_blend = blends[0];
636 else if (
after < 0 )
637 the_blend = blends[
map->num_points - 1];
645 final_blends[
n] = the_blend;
655 face->root.face_flags &= ~FT_FACE_FLAG_VARIATION;
690 for (
i = 0;
i < num_coords;
i++ )
709 return FT_THROW( Invalid_Argument );
719 " only using first %d of %d coordinates\n",
724 for (
i = 0;
i < nc;
i++ )
726 for ( ;
i < num_coords;
i++ )
749 for (
n = 1;
n < num_designs;
n++ )
757 for (
n = 0;
n < num_designs;
n++ )
769 for (
n = 0;
n < num_axis;
n++ )
773 for (
n = 0;
n < num_axis;
n++ )
808 FT_ERROR((
"parse_blend_axis_types: incorrect number of axes: %d\n",
825 for (
n = 0;
n < num_axis;
n++ )
833 if (
token->start[0] ==
'/' )
849 " overwriting axis name `%s' with `%.*s'\n",
865 loader->parser.root.error =
error;
885 if ( num_designs < 0 )
892 FT_ERROR((
"parse_blend_design_positions:"
893 " incorrect number of designs: %d\n",
910 for (
n = 0;
n < num_designs;
n++ )
918 token = design_tokens +
n;
927 FT_ERROR((
"parse_blend_design_positions:"
928 " invalid number of axes: %d\n",
942 else if ( n_axis != num_axis )
944 FT_ERROR((
"parse_blend_design_positions: incorrect table\n" ));
951 for ( axis = 0; axis < n_axis; axis++ )
953 T1_Token token2 = axis_tokens + axis;
966 loader->parser.root.cursor = old_cursor;
967 loader->parser.root.limit = old_limit;
971 loader->parser.root.error =
error;
998 FT_ERROR((
"parse_blend_design_map: incorrect number of axes: %d\n",
1004 old_cursor =
parser->root.cursor;
1005 old_limit =
parser->root.limit;
1010 blend =
face->blend;
1015 for (
n = 0;
n < num_axis;
n++ )
1023 axis_token = axis_tokens +
n;
1034 FT_ERROR((
"parse_blend_design_map: incorrect table\n" ));
1039 if (
map->design_points )
1041 FT_ERROR((
"parse_blend_design_map: duplicate table\n" ));
1049 map->blend_points =
map->design_points + num_points;
1052 for (
p = 0;
p < num_points;
p++ )
1057 point_token = point_tokens +
p;
1067 map->design_points[
p],
1068 (
double)
map->blend_points[
p] / 65536 ));
1076 parser->root.cursor = old_cursor;
1077 parser->root.limit = old_limit;
1101 if ( num_designs < 0 )
1109 " incorrect number of designs: %d\n",
1120 blend =
face->blend;
1125 " /BlendDesignPosition and /WeightVector have\n"
1127 " different number of elements\n" ));
1132 old_cursor =
parser->root.cursor;
1133 old_limit =
parser->root.limit;
1137 for (
n = 0;
n < num_designs;
n++ )
1139 token = design_tokens +
n;
1151 parser->root.cursor = old_cursor;
1152 parser->root.limit = old_limit;
1168#ifdef FT_DEBUG_LEVEL_TRACE
1174 for (
i = 0;
i <
face->len_buildchar;
i++ )
1219 error = loader->parser.root.error;
1225 switch (
field->location )
1228 dummy_object = &
face->type1.font_info;
1240 dummy_object = &
face->type1.font_extra;
1246 dummy_object = &
face->type1.private_dict;
1258 dummy_object = &
face->type1.font_bbox;
1270 dummy_object = loader;
1276 dummy_object =
face;
1281#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
1283 dummy_object =
face->blend;
1290 dummy_object = &
face->type1;
1309 FT_TRACE1((
"t1_load_keyword: ignoring keyword `%s'"
1310 " which is not valid at this point\n"
1311 " (probably due to missing keywords)\n",
1378 FT_ERROR((
"read_binary_data: invalid size field\n" ));
1412 (
double)
temp[0] / 65536 / 1000,
1413 (
double)
temp[1] / 65536 / 1000,
1414 (
double)
temp[2] / 65536 / 1000,
1415 (
double)
temp[3] / 65536 / 1000,
1416 (
double)
temp[4] / 65536 / 1000,
1417 (
double)
temp[5] / 65536 / 1000 ));
1421 if ( temp_scale == 0 )
1423 FT_ERROR((
"t1_parse_font_matrix: invalid font matrix\n" ));
1429 if ( temp_scale != 0x10000L )
1439 temp[3] =
temp[3] < 0 ? -0x10000L : 0x10000L;
1448 FT_ERROR((
"t1_parse_font_matrix: invalid font matrix\n" ));
1474 FT_ERROR((
"parse_encoding: out of bounds\n" ));
1485 PS_Table char_table = &loader->encoding_table;
1495 only_immediates = 1;
1505 " only using first 256 encoding array entries\n" ));
1514 if ( encode->char_index )
1516 FT_FREE( encode->char_index );
1522 loader->num_chars = encode->num_chars =
array_size;
1566 if (
cur[1] ==
'e' &&
1588 if ( only_immediates )
1632 else if ( only_immediates )
1656#ifdef FT_DEBUG_LEVEL_TRACE
1674 ft_strncmp( (
const char*)
cur,
"StandardEncoding", 16 ) == 0 )
1688 ft_strncmp( (
const char*)
cur,
"ISOLatin1Encoding", 17 ) == 0 )
1721 *
parser->root.cursor ==
'[' )
1726 *
parser->root.cursor !=
']' )
1732 if ( num_subrs < 0 )
1740 num_subrs > (
parser->root.limit -
parser->root.cursor ) >> 3 )
1757 FT_TRACE0((
"parse_subrs: adjusting number of subroutines"
1758 " (from %d to %ld)\n",
1761 num_subrs = (
parser->root.limit -
parser->root.cursor ) >> 3;
1763 if ( !loader->subrs_hash )
1765 if (
FT_NEW( loader->subrs_hash ) )
1782 if ( !loader->num_subrs )
1831 if ( loader->subrs_hash )
1838 if ( loader->num_subrs )
1846 if (
face->type1.private_dict.lenIV >= 0 )
1876 if ( !loader->num_subrs )
1877 loader->num_subrs = num_subrs;
1879#ifdef FT_DEBUG_LEVEL_TRACE
1883 FT_TRACE4((
"%d elements", num_subrs ));
1895#define TABLE_EXTEND 5
1903 PS_Table code_table = &loader->charstrings;
1904 PS_Table name_table = &loader->glyph_names;
1905 PS_Table swap_table = &loader->swap_table;
1919 if ( num_glyphs < 0 )
1926 if ( num_glyphs > (
limit -
cur ) >> 3 )
1928 FT_TRACE0((
"parse_charstrings: adjusting number of glyphs"
1929 " (from %d to %ld)\n",
1930 num_glyphs, (
limit -
cur ) >> 3 ));
1946 if ( !loader->num_glyphs )
1986 if (
cur[0] ==
'd' &&
2004 if (
cur[0] ==
'e' &&
2039 if ( loader->num_glyphs )
2052 (
const char*)(name_table->
elements[
n]) ) == 0 )
2058 if (
face->type1.private_dict.lenIV >= 0 &&
2095 loader->num_glyphs =
n;
2098 if ( notdef_found &&
2123 name_table->
elements[notdef_index],
2124 name_table->
lengths [notdef_index] );
2130 code_table->
elements[notdef_index],
2131 code_table->
lengths [notdef_index] );
2160 else if ( !notdef_found )
2168 FT_Byte notdef_glyph[] = { 0x8B, 0xF7, 0xE1, 0x0D, 0x0E };
2205 loader->num_glyphs += 1;
2208#ifdef FT_DEBUG_LEVEL_TRACE
2212 FT_TRACE4((
"%d elements", loader->num_glyphs ));
2250#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
2305 if ( loader->keywords_encountered &
T1_PRIVATE )
2306 loader->keywords_encountered |=
2308 parser->root.cursor += 13;
2331 parser->root.cursor = start_binary;
2333 return FT_THROW( Invalid_File_Format );
2344 parser->root.cursor = start_binary;
2346 return FT_THROW( Invalid_File_Format );
2365 if (
len > 0 && len < 22 && parser->
root.cursor <
limit )
2412 ( loader->keywords_encountered &
T1_PRIVATE )
2417 if ( !( dict &
keyword->dict ) )
2419 FT_TRACE1((
"parse_dict: found `%s' but ignoring it"
2420 " since it is in the wrong dictionary\n",
2425 if ( !( loader->keywords_encountered &
2491 FT_FREE( loader->subrs_hash );
2515 face->len_buildchar = 0;
2541 FT_TRACE4((
" private dictionary:\n" ));
2550#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
2555 face->blend->num_designs != ( 1U <<
face->blend->num_axis ) )
2558 " number-of-designs != 2 ^^ number-of-axes\n" ));
2563 face->blend->num_default_design_vector != 0 &&
2564 face->blend->num_default_design_vector !=
face->blend->num_axis )
2567 FT_ERROR((
"T1_Open_Face(): /DesignVector contains %u entries "
2568 "while there are %u axes.\n",
2569 face->blend->num_default_design_vector,
2570 face->blend->num_axis ));
2572 face->blend->num_default_design_vector = 0;
2578 ( !
face->blend->num_designs || !
face->blend->num_axis ) )
2587 for (
i = 0;
i <
face->blend->num_axis;
i++ )
2588 if ( !
face->blend->design_map[
i].num_points )
2597 if (
face->len_buildchar > 0 )
2604 FT_ERROR((
"T1_Open_Face: cannot allocate BuildCharArray\n" ));
2605 face->len_buildchar = 0;
2611 face->len_buildchar = 0;
2619 if ( loader.subrs.init )
2623 type1->
subrs = loader.subrs.elements;
2624 type1->
subrs_len = loader.subrs.lengths;
2628 loader.subrs.init = 0;
2629 loader.subrs_hash =
NULL;
2633 if ( !loader.charstrings.init )
2635 FT_ERROR((
"T1_Open_Face: no `/CharStrings' array in face\n" ));
2639 loader.charstrings.init = 0;
2648 loader.glyph_names.block =
NULL;
2649 loader.glyph_names.elements =
NULL;
2654 FT_Int charcode,
idx, min_char, max_char;
2666 for ( ; charcode < loader.encoding_table.max_elems; charcode++ )
2669 (
const FT_String*)loader.encoding_table.elements[charcode];
2672 type1->
encoding.char_index[charcode] = 0;
2673 type1->
encoding.char_name [charcode] =
".notdef";
2681 if (
ft_strcmp( char_name, glyph_name ) == 0 )
2684 type1->
encoding.char_name [charcode] = glyph_name;
2688 if (
ft_strcmp(
".notdef", glyph_name ) != 0 )
2690 if ( charcode < min_char )
2691 min_char = charcode;
2692 if ( charcode >= max_char )
2693 max_char = charcode + 1;
2700 type1->
encoding.code_first = min_char;
2701 type1->
encoding.code_last = max_char;
2702 type1->
encoding.num_chars = loader.num_chars;
2710 " setting unlikely BlueShift value %d to default (7)\n",
2718 " setting unlikely BlueFuzz value %d to default (1)\n",
FT_DivFix(FT_Long a, FT_Long b)
struct FT_FaceRec_ * FT_Face
#define FT_FACE_FLAG_VARIATION
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
FT_MulFix(FT_Long a, FT_Long b)
FT_Matrix_Check(const FT_Matrix *matrix)
#define FT_ASSERT(condition)
#define FT_TRACE0(varformat)
#define FT_ERROR(varformat)
#define FT_TRACE6(varformat)
#define FT_TRACE2(varformat)
#define FT_TRACE1(varformat)
#define FT_TRACE4(varformat)
FT_Error ft_hash_num_init(FT_Hash hash, FT_Memory memory)
FT_Error ft_hash_num_insert(FT_Int num, size_t data, FT_Hash hash, FT_Memory memory)
#define FT_NEW_ARRAY(ptr, count)
#define FT_SET_ERROR(expression)
#define FT_ALLOC(ptr, size)
#define FT_MEM_COPY(dest, source, count)
FT_BEGIN_HEADER struct FT_MM_Axis_ FT_MM_Axis
struct FT_Var_Axis_ FT_Var_Axis
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
FT_BEGIN_HEADER typedef unsigned char FT_Bool
#define FT_MAKE_TAG(_x1, _x2, _x3, _x4)
GLuint GLuint GLsizei count
GLenum GLuint GLint GLenum face
GLboolean GLboolean GLboolean b
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
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 token
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 const CLSID * objects[]
static char memory[1024 *256]
#define T1_FIELD_DICT_FONTDICT
#define T1_FIELD_DICT_PRIVATE
struct PSAux_ServiceRec_ * PSAux_Service
@ T1_FIELD_TYPE_INTEGER_ARRAY
@ T1_FIELD_TYPE_FIXED_ARRAY
#define T1_FIELD_CALLBACK(_ident, _name, _dict)
#define IS_PS_TOKEN(cur, limit, token)
@ T1_FIELD_LOCATION_FONT_EXTRA
@ T1_FIELD_LOCATION_BLEND
@ T1_FIELD_LOCATION_CID_INFO
@ T1_FIELD_LOCATION_PRIVATE
@ T1_FIELD_LOCATION_LOADER
@ T1_FIELD_LOCATION_FONT_INFO
struct T1_FieldRec_ * T1_Field
FT_Var_Named_Style * namedstyle
FT_MM_Axis axis[T1_MAX_MM_AXIS]
void(* t1_decrypt)(FT_Byte *buffer, FT_Offset length, FT_UShort seed)
const PS_Table_FuncsRec * ps_table_funcs
PS_DesignMapRec design_map[T1_MAX_MM_AXIS]
FT_Fixed * default_weight_vector
PS_Private privates[T1_MAX_MM_DESIGNS+1]
FT_BBox * bboxes[T1_MAX_MM_DESIGNS+1]
PS_FontInfo font_infos[T1_MAX_MM_DESIGNS+1]
FT_Fixed * design_pos[T1_MAX_MM_DESIGNS]
FT_UInt num_default_design_vector
FT_String * axis_names[T1_MAX_MM_AXIS]
FT_Fixed expansion_factor
FT_Error(* init)(PS_Table table, FT_Int count, FT_Memory memory)
PS_PrivateRec private_dict
T1_EncodingType encoding_type
FT_UInt * charstrings_len
FT_Byte * charstrings_block
FT_Byte * glyph_names_block
T1_Get_MM_WeightVector(T1_Face face, FT_UInt *len, FT_Fixed *weightvector)
static void parse_private(T1_Face face, T1_Loader loader)
static FT_Error t1_load_keyword(T1_Face face, T1_Loader loader, const T1_Field field)
static void t1_init_loader(T1_Loader loader, T1_Face face)
static FT_Error t1_allocate_blend(T1_Face face, FT_UInt num_designs, FT_UInt num_axis)
T1_Reset_MM_Blend(T1_Face face, FT_UInt instance_index)
static void parse_weight_vector(T1_Face face, T1_Loader loader)
T1_Get_Var_Design(T1_Face face, FT_UInt num_coords, FT_Fixed *coords)
static void t1_parse_font_matrix(T1_Face face, T1_Loader loader)
T1_Get_MM_Blend(T1_Face face, FT_UInt num_coords, FT_Fixed *coords)
static void parse_blend_design_positions(T1_Face face, T1_Loader loader)
static FT_Fixed mm_axis_unmap(PS_DesignMap axismap, FT_Fixed ncv)
T1_Set_Var_Design(T1_Face face, FT_UInt num_coords, FT_Fixed *coords)
T1_Set_MM_Blend(T1_Face face, FT_UInt num_coords, FT_Fixed *coords)
static void parse_subrs(T1_Face face, T1_Loader loader)
static FT_Error t1_set_mm_blend(T1_Face face, FT_UInt num_coords, FT_Fixed *coords)
static void mm_weights_unmap(FT_Fixed *weights, FT_Fixed *axiscoords, FT_UInt axis_count)
static void parse_blend_design_map(T1_Face face, T1_Loader loader)
T1_Done_Blend(T1_Face face)
T1_Open_Face(T1_Face face)
T1_Set_MM_Design(T1_Face face, FT_UInt num_coords, FT_Long *coords)
static void t1_done_loader(T1_Loader loader)
static const T1_FieldRec t1_keywords[]
static void parse_encoding(T1_Face face, T1_Loader loader)
T1_Get_MM_Var(T1_Face face, FT_MM_Var **master)
static FT_Error parse_dict(T1_Face face, T1_Loader loader, FT_Byte *base, FT_ULong size)
T1_Get_Multi_Master(T1_Face face, FT_Multi_Master *master)
T1_Set_MM_WeightVector(T1_Face face, FT_UInt len, FT_Fixed *weightvector)
static void parse_blend_axis_types(T1_Face face, T1_Loader loader)
static void parse_buildchar(T1_Face face, T1_Loader loader)
static int read_binary_data(T1_Parser parser, FT_ULong *size, FT_Byte **base, FT_Bool incremental)
static void parse_charstrings(T1_Face face, T1_Loader loader)
FT_BEGIN_HEADER struct T1_Loader_ * T1_Loader
#define T1_FONTDIR_AFTER_PRIVATE
FT_BEGIN_HEADER struct T1_Loader_ T1_LoaderRec
T1_Finalize_Parser(T1_Parser parser)
T1_New_Parser(T1_Parser parser, FT_Stream stream, FT_Memory memory, PSAux_Service psaux)
T1_Get_Private_Dict(T1_Parser parser, PSAux_Service psaux)
#define T1_ToFixedArray(p, m, f, t)
FT_BEGIN_HEADER struct T1_ParserRec_ * T1_Parser
#define T1_Add_Table(p, i, o, l)
#define T1_Release_Table(p)
#define T1_Skip_Spaces(p)
#define T1_Skip_PS_Token(p)
#define T1_ToTokenArray(p, t, m, c)
#define T1_Load_Field(p, f, o, m, pf)
#define T1_Load_Field_Table(p, f, o, m, pf)
@ T1_ENCODING_TYPE_ISOLATIN1
@ T1_ENCODING_TYPE_STANDARD
@ T1_ENCODING_TYPE_EXPERT
#define T1_MAX_MM_MAP_POINTS
#define T1_MAX_MM_DESIGNS
FT_BEGIN_HEADER struct T1_EncodingRecRec_ * T1_Encoding
__inline int before(__u32 seq1, __u32 seq2)
__inline int after(__u32 seq1, __u32 seq2)
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList