22 #include FT_INTERNAL_DEBUG_H
23 #include FT_INTERNAL_STREAM_H
24 #include FT_TRUETYPE_TAGS_H
37 #define FT_COMPONENT trace_ttload
62 #ifdef FT_DEBUG_LEVEL_TRACE
67 FT_TRACE4((
"tt_face_lookup_table: %08p, `%c%c%c%c' -- ",
74 entry = face->dir_tables;
75 limit = entry + face->num_tables;
77 for ( ; entry <
limit; entry++ )
81 if ( entry->
Tag == tag )
88 #ifdef FT_DEBUG_LEVEL_TRACE
94 #ifdef FT_DEBUG_LEVEL_TRACE
146 error = SFNT_Err_Table_Missing;
175 FT_UInt has_head = 0, has_sing = 0, has_meta = 0;
181 #define FT_STRUCTURE TT_TableRec
204 " can read only %d table%s in font (instead of %d)\n",
213 FT_TRACE2((
"check_table_dir: table entry %d invalid\n", nn ));
224 #ifndef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
238 if ( table.
Length < 0x36 )
240 FT_TRACE2((
"check_table_dir: `head' table too small\n" ));
241 error = SFNT_Err_Table_Missing;
249 if ( magic != 0x5F0F3CF5UL )
252 " no magic number found in `head' table\n"));
253 error = SFNT_Err_Table_Missing;
270 FT_TRACE2((
"check_table_dir: no tables found\n" ));
271 error = SFNT_Err_Unknown_File_Format;
276 if ( has_head || ( has_sing && has_meta ) )
284 #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
285 FT_TRACE2((
" neither `head', `bhed', nor `sing' table found\n" ));
287 FT_TRACE2((
" neither `head' nor `sing' table found\n" ));
289 error = SFNT_Err_Table_Missing;
332 #define FT_STRUCTURE SFNT_HeaderRec
343 FT_TRACE2((
"tt_face_load_font_dir: %08p\n", face ));
357 return SFNT_Err_Unknown_File_Format;
370 " invalid table directory for TrueType\n" ));
385 entry = face->dir_tables;
388 " tag offset length checksum\n"
389 " ----------------------------------\n" ));
403 FT_TRACE2((
" %c%c%c%c %08lx %08lx %08lx\n",
417 FT_TRACE2((
"table directory loaded\n\n" ));
483 error = SFNT_Err_Table_Missing;
492 size = face->root.stream->size;
494 if ( length && *length == 0 )
504 stream = face->root.stream;
541 #define FT_STRUCTURE TT_Header
567 error = face->
goto_table( face, tag, stream, 0 );
576 FT_TRACE3((
"Units per EM: %4u\n", header->Units_Per_EM ));
577 FT_TRACE3((
"IndexToLoc: %4d\n", header->Index_To_Loc_Format ));
592 #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
630 #define FT_STRUCTURE TT_MaxProfile
658 error = face->goto_table( face,
TTAG_maxp, stream, 0 );
679 if ( maxProfile->
version >= 0x10000L )
697 " too much twilight points in `maxp' table;\n"
699 " some glyphs might be rendered incorrectly\n" ));
708 " abnormally large component depth (%d) set to 100\n",
744 FT_ULong storage_start, storage_limit;
751 #define FT_STRUCTURE TT_NameTableRec
763 #define FT_STRUCTURE TT_NameEntryRec
776 table = &face->name_table;
779 error = face->goto_table( face,
TTAG_name, stream, &table_len );
797 storage_limit = table_pos + table_len;
799 if ( storage_start > storage_limit )
801 FT_ERROR((
"tt_face_load_name: invalid `name' table\n" ));
802 error = SFNT_Err_Name_Table_Missing;
820 for ( ; count > 0; count-- )
870 FT_Memory memory = face->root.driver->root.memory;
878 for ( ; count > 0; count--, entry++ )
919 error = face->goto_table( face,
TTAG_cmap, stream, &face->cmap_size );
958 #define FT_STRUCTURE TT_OS2
1030 error = face->goto_table( face,
TTAG_OS2, stream, 0 );
1098 #define FT_STRUCTURE TT_Postscript
1114 error = face->goto_table( face,
TTAG_post, stream, 0 );
1126 ?
" yes" :
" no" ));
1155 #define FT_STRUCTURE TT_PCLT
1180 error = face->goto_table( face,
TTAG_PCLT, stream, 0 );
1220 error = face->goto_table( face,
TTAG_gasp, stream, 0 );
1233 if ( face->gasp.version >= 2 )
1235 face->gasp.numRanges = 0;
1236 error = SFNT_Err_Invalid_Table;
1240 num_ranges = face->gasp.numRanges;
1241 FT_TRACE3((
"numRanges: %u\n", num_ranges ));
1247 face->gasp.gaspRanges = gaspranges;
1249 for ( j = 0; j < num_ranges; j++ )
1254 FT_TRACE3((
"gaspRange %d: rangeMaxPPEM %5d, rangeGaspBehavior 0x%x\n",
1256 gaspranges[j].maxPPEM,
1257 gaspranges[j].gaspFlag ));
GLenum GLsizei GLenum GLenum const GLvoid * table
tt_face_load_head(TT_Face face, FT_Stream stream)
FT_BEGIN_HEADER struct TT_Header_ TT_Header
cannot open resource broken file module version is too low unimplemented feature broken offset within table missing module invalid character code cannot render this glyph format invalid composite glyph invalid pixel size invalid library handle invalid face handle invalid glyph slot handle invalid cache manager handle too many modules out of memory cannot open stream invalid stream skip invalid stream operation nested frame access raster uninitialized raster overflow too many registered caches too few arguments code overflow division by zero found debug opcode nested DEFS execution context too long too many instruction definitions horizontal header(hhea) table missing" ) FT_ERRORDEF_( Locations_Missing
FT_UShort maxComponentDepth
tt_face_load_font_dir(TT_Face face, FT_Stream stream)
tt_face_load_pclt(TT_Face face, FT_Stream stream)
#define FT_QNEW_ARRAY(ptr, count)
tt_face_load_gasp(TT_Face face, FT_Stream stream)
tt_face_free_name(TT_Face face)
#define FT_FRAME_BYTES(field, count)
FT_UShort maxInstructionDefs
FT_ULong ulCodePageRange1
TT_Loader_GotoTableFunc goto_table
FT_BEGIN_HEADER typedef unsigned char FT_Bool
tt_face_load_any(TT_Face face, FT_ULong tag, FT_Long offset, FT_Byte *buffer, FT_ULong *length)
#define FT_ERROR(varformat)
FT_UShort maxComponentElements
FT_UShort maxFunctionDefs
#define FT_TRACE4(varformat)
tt_face_load_cmap(TT_Face face, FT_Stream stream)
EGLContext EGLenum EGLClientBuffer buffer
#define FT_STREAM_READ_FIELDS(fields, object)
static FT_Error check_table_dir(SFNT_Header sfnt, FT_Stream stream)
tt_face_load_maxp(TT_Face face, FT_Stream stream)
static FT_Error tt_face_load_generic_header(TT_Face face, FT_Stream stream, FT_ULong tag)
#define FT_FRAME_USHORT(f)
#define FT_STREAM_READ_AT(position, buffer, count)
#define FT_READ_ULONG(var)
#define FT_TRACE0(varformat)
FT_UShort maxStackElements
#define FT_TRACE2(varformat)
FT_UShort maxSizeOfInstructions
FT_UShort maxCompositePoints
FT_ULong ulCodePageRange2
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum format
GLenum const void GLbitfield GLuint GLsizei numGlyphs
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
#define FT_NEW_ARRAY(ptr, count)
#define FT_STREAM_SEEK(position)
#define FT_TRACE3(varformat)
#define FT_FRAME_ULONG(f)
tt_face_load_os2(TT_Face face, FT_Stream stream)
#define FT_FRAME_EXTRACT(size, bytes)
tt_face_lookup_table(TT_Face face, FT_ULong tag)
FT_UShort maxCompositeContours
#define FT_FRAME_ENTER(size)
tt_face_load_name(TT_Face face, FT_Stream stream)
FT_UShort maxTwilightPoints
tt_face_load_post(TT_Face face, FT_Stream stream)
#define FT_FRAME_SHORT(f)
tt_face_goto_table(TT_Face face, FT_ULong tag, FT_Stream stream, FT_ULong *length)
#define FT_FRAME_START(size)