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 )
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 )
378 return FT_THROW( Invalid_Argument );
393 if (
m >= num_coords )
401 if ( (
n & ( 1 <<
m ) ) == 0 )
409 else if (
factor >= 0x10000L )
442 face->root.face_flags &= ~FT_FACE_FLAG_VARIATION;
460 return FT_THROW( Invalid_Argument );
469 FT_TRACE2((
"T1_Get_MM_Blend: only using first %d of %d coordinates\n",
474 for (
i = 0;
i < nc;
i++ )
476 for ( ;
i < num_coords;
i++ )
493 return FT_THROW( Invalid_Argument );
495 if ( !
len && !weightvector )
503 return FT_THROW( Invalid_Argument );
507 for (
i = 0;
i <
n;
i++ )
516 face->root.face_flags &= ~FT_FACE_FLAG_VARIATION;
533 return FT_THROW( Invalid_Argument );
535 if ( *len < blend->num_designs )
538 return FT_THROW( Invalid_Argument );
564 return FT_THROW( Invalid_Argument );
582 if (
n < num_coords )
585 design = ( designs[
map->num_points - 1] - designs[0] ) / 2;
593 if ( design == p_design )
595 the_blend = blends[
p];
599 if ( design < p_design )
610 the_blend = blends[0];
612 else if (
after < 0 )
613 the_blend = blends[
map->num_points - 1];
621 final_blends[
n] = the_blend;
631 face->root.face_flags &= ~FT_FACE_FLAG_VARIATION;
666 for (
i = 0;
i < num_coords;
i++ )
685 return FT_THROW( Invalid_Argument );
695 " only using first %d of %d coordinates\n",
700 for (
i = 0;
i < nc;
i++ )
702 for ( ;
i < num_coords;
i++ )
725 for (
n = 1;
n < num_designs;
n++ )
733 for (
n = 0;
n < num_designs;
n++ )
745 for (
n = 0;
n < num_axis;
n++ )
749 for (
n = 0;
n < num_axis;
n++ )
784 FT_ERROR((
"parse_blend_axis_types: incorrect number of axes: %d\n",
801 for (
n = 0;
n < num_axis;
n++ )
809 if (
token->start[0] ==
'/' )
825 " overwriting axis name `%s' with `%.*s'\n",
841 loader->parser.root.error =
error;
861 if ( num_designs < 0 )
868 FT_ERROR((
"parse_blend_design_positions:"
869 " incorrect number of designs: %d\n",
886 for (
n = 0;
n < num_designs;
n++ )
894 token = design_tokens +
n;
903 FT_ERROR((
"parse_blend_design_positions:"
904 " invalid number of axes: %d\n",
918 else if ( n_axis != num_axis )
920 FT_ERROR((
"parse_blend_design_positions: incorrect table\n" ));
927 for ( axis = 0; axis < n_axis; axis++ )
929 T1_Token token2 = axis_tokens + axis;
942 loader->parser.root.cursor = old_cursor;
943 loader->parser.root.limit = old_limit;
947 loader->parser.root.error =
error;
974 FT_ERROR((
"parse_blend_design_map: incorrect number of axes: %d\n",
980 old_cursor =
parser->root.cursor;
981 old_limit =
parser->root.limit;
991 for (
n = 0;
n < num_axis;
n++ )
999 axis_token = axis_tokens +
n;
1010 FT_ERROR((
"parse_blend_design_map: incorrect table\n" ));
1015 if (
map->design_points )
1017 FT_ERROR((
"parse_blend_design_map: duplicate table\n" ));
1025 map->blend_points =
map->design_points + num_points;
1028 for (
p = 0;
p < num_points;
p++ )
1033 point_token = point_tokens +
p;
1043 map->design_points[
p],
1044 (
double)
map->blend_points[
p] / 65536 ));
1052 parser->root.cursor = old_cursor;
1053 parser->root.limit = old_limit;
1077 if ( num_designs < 0 )
1085 " incorrect number of designs: %d\n",
1096 blend =
face->blend;
1101 " /BlendDesignPosition and /WeightVector have\n"
1103 " different number of elements\n" ));
1108 old_cursor =
parser->root.cursor;
1109 old_limit =
parser->root.limit;
1113 for (
n = 0;
n < num_designs;
n++ )
1115 token = design_tokens +
n;
1127 parser->root.cursor = old_cursor;
1128 parser->root.limit = old_limit;
1144#ifdef FT_DEBUG_LEVEL_TRACE
1150 for (
i = 0;
i <
face->len_buildchar;
i++ )
1195 error = loader->parser.root.error;
1201 switch (
field->location )
1204 dummy_object = &
face->type1.font_info;
1216 dummy_object = &
face->type1.font_extra;
1222 dummy_object = &
face->type1.private_dict;
1234 dummy_object = &
face->type1.font_bbox;
1246 dummy_object = loader;
1252 dummy_object =
face;
1257#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
1259 dummy_object =
face->blend;
1266 dummy_object = &
face->type1;
1285 FT_TRACE1((
"t1_load_keyword: ignoring keyword `%s'"
1286 " which is not valid at this point\n"
1287 " (probably due to missing keywords)\n",
1354 FT_ERROR((
"read_binary_data: invalid size field\n" ));
1388 (
double)
temp[0] / 65536 / 1000,
1389 (
double)
temp[1] / 65536 / 1000,
1390 (
double)
temp[2] / 65536 / 1000,
1391 (
double)
temp[3] / 65536 / 1000,
1392 (
double)
temp[4] / 65536 / 1000,
1393 (
double)
temp[5] / 65536 / 1000 ));
1397 if ( temp_scale == 0 )
1399 FT_ERROR((
"t1_parse_font_matrix: invalid font matrix\n" ));
1405 if ( temp_scale != 0x10000L )
1415 temp[3] =
temp[3] < 0 ? -0x10000L : 0x10000L;
1424 FT_ERROR((
"t1_parse_font_matrix: invalid font matrix\n" ));
1450 FT_ERROR((
"parse_encoding: out of bounds\n" ));
1461 PS_Table char_table = &loader->encoding_table;
1471 only_immediates = 1;
1481 " only using first 256 encoding array entries\n" ));
1490 if ( encode->char_index )
1492 FT_FREE( encode->char_index );
1498 loader->num_chars = encode->num_chars =
array_size;
1511 char* notdef = (
char *)
".notdef";
1547 if (
cur[1] ==
'e' &&
1569 if ( only_immediates )
1613 else if ( only_immediates )
1637#ifdef FT_DEBUG_LEVEL_TRACE
1655 ft_strncmp( (
const char*)
cur,
"StandardEncoding", 16 ) == 0 )
1669 ft_strncmp( (
const char*)
cur,
"ISOLatin1Encoding", 17 ) == 0 )
1702 *
parser->root.cursor ==
'[' )
1707 *
parser->root.cursor !=
']' )
1713 if ( num_subrs < 0 )
1721 num_subrs > (
parser->root.limit -
parser->root.cursor ) >> 3 )
1738 FT_TRACE0((
"parse_subrs: adjusting number of subroutines"
1739 " (from %d to %d)\n",
1742 num_subrs = (
parser->root.limit -
parser->root.cursor ) >> 3;
1744 if ( !loader->subrs_hash )
1746 if (
FT_NEW( loader->subrs_hash ) )
1763 if ( !loader->num_subrs )
1812 if ( loader->subrs_hash )
1819 if ( loader->num_subrs )
1827 if (
face->type1.private_dict.lenIV >= 0 )
1857 if ( !loader->num_subrs )
1858 loader->num_subrs = num_subrs;
1860#ifdef FT_DEBUG_LEVEL_TRACE
1864 FT_TRACE4((
"%d elements", num_subrs ));
1876#define TABLE_EXTEND 5
1884 PS_Table code_table = &loader->charstrings;
1885 PS_Table name_table = &loader->glyph_names;
1886 PS_Table swap_table = &loader->swap_table;
1900 if ( num_glyphs < 0 )
1907 if ( num_glyphs > (
limit -
cur ) >> 3 )
1909 FT_TRACE0((
"parse_charstrings: adjusting number of glyphs"
1910 " (from %d to %d)\n",
1911 num_glyphs, (
limit -
cur ) >> 3 ));
1927 if ( !loader->num_glyphs )
1967 if (
cur[0] ==
'd' &&
1985 if (
cur[0] ==
'e' &&
2020 if ( loader->num_glyphs )
2033 (
const char*)(name_table->
elements[
n]) ) == 0 )
2039 if (
face->type1.private_dict.lenIV >= 0 &&
2076 loader->num_glyphs =
n;
2079 if ( notdef_found &&
2104 name_table->
elements[notdef_index],
2105 name_table->
lengths [notdef_index] );
2111 code_table->
elements[notdef_index],
2112 code_table->
lengths [notdef_index] );
2141 else if ( !notdef_found )
2149 FT_Byte notdef_glyph[] = { 0x8B, 0xF7, 0xE1, 0x0D, 0x0E };
2150 char* notdef_name = (
char *)
".notdef";
2187 loader->num_glyphs += 1;
2190#ifdef FT_DEBUG_LEVEL_TRACE
2194 FT_TRACE4((
"%d elements", loader->num_glyphs ));
2232#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
2287 if ( loader->keywords_encountered &
T1_PRIVATE )
2288 loader->keywords_encountered |=
2290 parser->root.cursor += 13;
2313 parser->root.cursor = start_binary;
2315 return FT_THROW( Invalid_File_Format );
2326 parser->root.cursor = start_binary;
2328 return FT_THROW( Invalid_File_Format );
2347 if (
len > 0 && len < 22 && parser->
root.cursor <
limit )
2394 ( loader->keywords_encountered &
T1_PRIVATE )
2399 if ( !( dict &
keyword->dict ) )
2401 FT_TRACE1((
"parse_dict: found `%s' but ignoring it"
2402 " since it is in the wrong dictionary\n",
2407 if ( !( loader->keywords_encountered &
2473 FT_FREE( loader->subrs_hash );
2497 face->len_buildchar = 0;
2523 FT_TRACE4((
" private dictionary:\n" ));
2532#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
2537 face->blend->num_designs != ( 1U <<
face->blend->num_axis ) )
2540 " number-of-designs != 2 ^^ number-of-axes\n" ));
2545 face->blend->num_default_design_vector != 0 &&
2546 face->blend->num_default_design_vector !=
face->blend->num_axis )
2549 FT_ERROR((
"T1_Open_Face(): /DesignVector contains %u entries "
2550 "while there are %u axes.\n",
2551 face->blend->num_default_design_vector,
2552 face->blend->num_axis ));
2554 face->blend->num_default_design_vector = 0;
2560 ( !
face->blend->num_designs || !
face->blend->num_axis ) )
2569 for (
i = 0;
i <
face->blend->num_axis;
i++ )
2570 if ( !
face->blend->design_map[
i].num_points )
2579 if (
face->len_buildchar > 0 )
2586 FT_ERROR((
"T1_Open_Face: cannot allocate BuildCharArray\n" ));
2587 face->len_buildchar = 0;
2593 face->len_buildchar = 0;
2601 if ( loader.subrs.init )
2605 type1->
subrs = loader.subrs.elements;
2606 type1->
subrs_len = loader.subrs.lengths;
2610 loader.subrs.init = 0;
2611 loader.subrs_hash =
NULL;
2615 if ( !loader.charstrings.init )
2617 FT_ERROR((
"T1_Open_Face: no `/CharStrings' array in face\n" ));
2621 loader.charstrings.init = 0;
2630 loader.glyph_names.block =
NULL;
2631 loader.glyph_names.elements =
NULL;
2636 FT_Int charcode,
idx, min_char, max_char;
2649 for ( ; charcode < loader.encoding_table.max_elems; charcode++ )
2654 type1->
encoding.char_index[charcode] = 0;
2655 type1->
encoding.char_name [charcode] = (
char *)
".notdef";
2657 char_name = loader.encoding_table.elements[charcode];
2663 (
const char*)glyph_name ) == 0 )
2666 type1->
encoding.char_name [charcode] = (
char*)glyph_name;
2671 (
const char*)glyph_name ) != 0 )
2673 if ( charcode < min_char )
2674 min_char = charcode;
2675 if ( charcode >= max_char )
2676 max_char = charcode + 1;
2683 type1->
encoding.code_first = min_char;
2684 type1->
encoding.code_last = max_char;
2685 type1->
encoding.num_chars = loader.num_chars;
2693 " setting unlikely BlueShift value %d to default (7)\n",
2701 " 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
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