337 {
342
344 {
345#undef FT_STRUCTURE
346#define FT_STRUCTURE SFNT_HeaderRec
347
354 };
355
356
358
359
360
362
366
367
368#if 0
369 if (
sfnt.search_range != 1 << (
sfnt.entry_selector + 4 ) ||
370 sfnt.search_range +
sfnt.range_shift !=
sfnt.num_tables << 4 )
371 return FT_THROW( Unknown_File_Format );
372#endif
373
374
375
376 FT_TRACE2((
"-- Number of tables: %10u\n",
sfnt.num_tables ));
377 FT_TRACE2((
"-- Format version: 0x%08lx\n",
sfnt.format_tag ));
378
380 {
381
384 {
386 " invalid table directory for TrueType\n" ));
388 }
389 }
390 else
391 valid_entries =
sfnt.num_tables;
392
393 face->num_tables = valid_entries;
395
398
402
404 " tag offset length checksum\n"
405 " ----------------------------------\n" ));
406
407 valid_entries = 0;
408 for ( nn = 0; nn <
sfnt.num_tables; nn++ )
409 {
413
414
419
420
421
423 continue;
425 {
428 {
429#ifdef FT_DEBUG_LEVEL_TRACE
431#endif
432
433
434
436
437 FT_TRACE2((
" %c%c%c%c %08lx %08lx %08lx"
438 " (sanitized; original length %08lx)",
446 old_length ));
447 }
448 else
449 continue;
450 }
451#ifdef FT_DEBUG_LEVEL_TRACE
452 else
453 FT_TRACE2((
" %c%c%c%c %08lx %08lx %08lx",
461#endif
462
463
464 duplicate = 0;
465 for (
i = 0;
i < valid_entries;
i++ )
466 {
468 {
469 duplicate = 1;
470 break;
471 }
472 }
473 if ( duplicate )
474 {
475 FT_TRACE2((
" (duplicate, ignored)\n" ));
476 continue;
477 }
478 else
479 {
481
482
483 face->dir_tables[valid_entries++] =
entry;
484 }
485 }
486
487
488 face->num_tables = valid_entries;
489
491
492 FT_TRACE2((
"table directory loaded\n\n" ));
493
496 }
#define FT_TRACE2(varformat)
#define FT_QNEW_ARRAY(ptr, count)
#define FT_FRAME_ENTER(size)
#define FT_READ_ULONG(var)
#define FT_STREAM_READ_FIELDS(fields, object)
#define FT_FRAME_START(size)
#define FT_FRAME_USHORT(f)
FT_BEGIN_HEADER typedef unsigned char FT_Bool
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
static FT_Error check_table_dir(SFNT_Header sfnt, FT_Stream stream, FT_UShort *valid)