22#include FT_FONT_FORMATS_H
24#include FT_INTERNAL_VALIDATE_H
25#include FT_INTERNAL_OBJECTS_H
26#include FT_INTERNAL_DEBUG_H
27#include FT_INTERNAL_RFORK_H
28#include FT_INTERNAL_STREAM_H
29#include FT_INTERNAL_SFNT_H
30#include FT_INTERNAL_POSTSCRIPT_AUX_H
32#include FT_TRUETYPE_TABLES_H
33#include FT_TRUETYPE_TAGS_H
34#include FT_TRUETYPE_IDS_H
36#include FT_SERVICE_PROPERTIES_H
37#include FT_SERVICE_SFNT_H
38#include FT_SERVICE_POSTSCRIPT_NAME_H
39#include FT_SERVICE_GLYPH_DICT_H
40#include FT_SERVICE_TT_CMAP_H
41#include FT_SERVICE_KERNING_H
42#include FT_SERVICE_TRUETYPE_ENGINE_H
46#ifdef FT_CONFIG_OPTION_MAC_FONTS
51#ifdef FT_DEBUG_LEVEL_TRACE
55#if defined( _MSC_VER )
60#pragma warning( push )
61#pragma warning( disable : 4244 )
68#define MD5_u32plus FT_MD5_u32plus
69#define MD5_CTX FT_MD5_CTX
70#define MD5_Init FT_MD5_Init
71#define MD5_Update FT_MD5_Update
72#define MD5_Final FT_MD5_Final
78#if defined( _MSC_VER )
82 static const char*
const pixel_modes[] =
90 "vertical LCD 8-bit bitmap",
91 "BGRA 32-bit color image bitmap"
97#define GRID_FIT_METRICS
111 const char* service_id )
117 if (
desc && service_id )
202 return FT_THROW( Invalid_Library_Handle );
205 return FT_THROW( Invalid_Argument );
222#ifndef FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT
281#define FT_COMPONENT objs
334 slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP;
378 pbox.
xMin = ( cbox.
xMin >> 6 ) + ( x_shift >> 6 );
379 pbox.
yMin = ( cbox.
yMin >> 6 ) + ( y_shift >> 6 );
380 pbox.
xMax = ( cbox.
xMax >> 6 ) + ( x_shift >> 6 );
381 pbox.
yMax = ( cbox.
yMax >> 6 ) + ( y_shift >> 6 );
384 cbox.
xMin = ( cbox.
xMin & 63 ) + ( x_shift & 63 );
385 cbox.
yMin = ( cbox.
yMin & 63 ) + ( y_shift & 63 );
386 cbox.
xMax = ( cbox.
xMax & 63 ) + ( x_shift & 63 );
387 cbox.
yMax = ( cbox.
yMax & 63 ) + ( y_shift & 63 );
400 pbox.
xMin += ( cbox.
xMin + 31 ) >> 6;
401 pbox.
xMax += ( cbox.
xMax + 32 ) >> 6;
408 if ( ( ( cbox.
xMin + 31 ) & 63 ) - 31 +
409 ( ( cbox.
xMax + 32 ) & 63 ) - 32 < 0 )
417 pbox.
yMin += ( cbox.
yMin + 31 ) >> 6;
418 pbox.
yMax += ( cbox.
yMax + 32 ) >> 6;
422 if ( ( ( cbox.
yMin + 31 ) & 63 ) - 31 +
423 ( ( cbox.
yMax + 32 ) & 63 ) - 32 < 0 )
451 pbox.
xMax += ( cbox.
xMax + 63 ) >> 6;
452 pbox.
yMax += ( cbox.
yMax + 63 ) >> 6;
461 switch ( pixel_mode )
464 pitch = ( (
width + 15 ) >> 4 ) << 1;
484 bitmap->pixel_mode = (
unsigned char)pixel_mode;
490 if ( pbox.
xMin < -0x8000 || pbox.
xMax > 0x7FFF ||
491 pbox.
yMin < -0x8000 || pbox.
yMax > 0x7FFF )
493 FT_TRACE3((
"ft_glyphslot_preset_bitmap: [%ld %ld %ld %ld]\n",
542 slot->bitmap.width = 0;
543 slot->bitmap.rows = 0;
544 slot->bitmap.pitch = 0;
545 slot->bitmap.pixel_mode = 0;
548 slot->bitmap_left = 0;
549 slot->bitmap_top = 0;
550 slot->num_subglyphs = 0;
553 slot->control_len = 0;
555 slot->format = FT_GLYPH_FORMAT_NONE;
557 slot->linearHoriAdvance = 0;
558 slot->linearVertAdvance = 0;
579 if (
slot->internal )
607 return FT_THROW( Invalid_Face_Handle );
610 return FT_THROW( Invalid_Argument );
616 FT_TRACE4((
"FT_New_GlyphSlot: Creating new slot object\n" ));
673 if (
slot->generic.finalizer )
706 internal->transform_matrix.xx = 0x10000L;
709 internal->transform_matrix.yy = 0x10000L;
733 if ( delta->x | delta->y )
742#ifdef GRID_FIT_METRICS
799 FT_Int32 load_flags )
811 return FT_THROW( Invalid_Face_Handle );
834 load_flags &= ~FT_LOAD_RENDER;
838 load_flags &= ~FT_LOAD_RENDER;
868 (
face->internal->transform_matrix.yx == 0 &&
869 face->internal->transform_matrix.xx != 0 ) ||
870 (
face->internal->transform_matrix.xx == 0 &&
871 face->internal->transform_matrix.yx != 0 ) ) )
897 !is_light_type1 ) ) ||
924 if ( !
error &&
slot->format == FT_GLYPH_FORMAT_BITMAP )
942 glyph_index, load_flags );
944 internal->transform_flags = transform_flags;
963#ifdef GRID_FIT_METRICS
977 slot->advance.y =
slot->metrics.vertAdvance;
981 slot->advance.x =
slot->metrics.horiAdvance;
1020 if (
internal->transform_flags & 1 )
1024 if (
internal->transform_flags & 2 )
1035 slot->glyph_index = glyph_index;
1036 slot->internal->load_flags = load_flags;
1041 slot->format != FT_GLYPH_FORMAT_BITMAP &&
1042 slot->format != FT_GLYPH_FORMAT_COMPOSITE )
1057#ifdef FT_DEBUG_LEVEL_TRACE
1058 FT_TRACE5((
"FT_Load_Glyph: index %d, flags 0x%x\n",
1059 glyph_index, load_flags ));
1063 slot->linearHoriAdvance / 65536.0 ));
1065 slot->linearVertAdvance / 65536.0 ));
1066 FT_TRACE5((
" bitmap %dx%d, %s (mode %d)\n",
1069 pixel_modes[
slot->bitmap.pixel_mode],
1070 slot->bitmap.pixel_mode ));
1083 FT_Int32 load_flags )
1089 return FT_THROW( Invalid_Face_Handle );
1091 glyph_index = (
FT_UInt)char_code;
1092 if (
face->charmap )
1106 if (
size->generic.finalizer )
1110 if (
driver->clazz->done_size )
1132 for (
n = 0;
n <
face->num_charmaps;
n++ )
1143 face->num_charmaps = 0;
1157 if (
face->autohint.finalizer )
1158 face->autohint.finalizer(
face->autohint.data );
1162 while (
face->glyph )
1173 if (
face->generic.finalizer )
1191 if (
face->internal )
1236 return FT_THROW( Invalid_CharMap_Handle );
1298 return FT_THROW( Invalid_CharMap_Handle );
1375 face->stream = *astream;
1378 if ( external_stream )
1386#ifdef FT_CONFIG_OPTION_INCREMENTAL
1391 face->internal->incremental_interface =
NULL;
1392 for (
i = 0;
i < num_params && !
face->internal->incremental_interface;
1395 face->internal->incremental_interface =
1400 face->internal->random_seed = -1;
1408 *astream =
face->stream;
1460 return FT_THROW( Invalid_Argument );
1486 return FT_THROW( Invalid_Argument );
1489 args.memory_base = file_base;
1497#ifdef FT_CONFIG_OPTION_MAC_FONTS
1558 return FT_THROW( Invalid_Library_Handle );
1561 return FT_THROW( Invalid_Argument );
1586 const char* driver_name,
1598 memory_stream_close,
1620 if ( face_index > 0 )
1621 face_index &= 0x7FFF0000L;
1627 (*aface)->face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM;
1667 *is_sfnt_cid =
FALSE;
1675 return FT_THROW( Unknown_File_Format );
1683 *is_sfnt_cid =
FALSE;
1685 for (
i = 0;
i < numTables;
i++ )
1696 *is_sfnt_cid =
TRUE;
1697 if ( face_index < 0 )
1705 *is_sfnt_cid =
FALSE;
1706 if ( face_index < 0 )
1709 if ( face_index >= 0 && pstable_index == face_index )
1737 if ( face_index > 0 )
1738 face_index &= 0xFFFFL;
1752 FT_TRACE2((
"open_face_PS_from_sfnt_stream: invalid table offset\n" ));
1758 FT_TRACE2((
"open_face_PS_from_sfnt_stream: invalid table length\n" ));
1781 is_sfnt_cid ?
"cid" :
"type1",
1822 FT_ULong pfb_len, pfb_pos, pfb_lenpos;
1826 if ( face_index == -1 )
1828 if ( face_index != 0 )
1834 for (
i = 0;
i < resource_cnt;
i++ )
1845 FT_TRACE4((
" POST fragment #%d: length=0x%08x"
1846 " total pfb_len=0x%08x\n",
1849 if ( FT_MAC_RFORK_MAX_LEN <
temp ||
1850 FT_MAC_RFORK_MAX_LEN -
temp < pfb_len + 6 )
1852 FT_TRACE2((
" MacOS resource length cannot exceed"
1854 FT_MAC_RFORK_MAX_LEN ));
1860 pfb_len +=
temp + 6;
1863 FT_TRACE2((
" total buffer size to concatenate"
1864 " %d POST fragments: 0x%08x\n",
1865 resource_cnt, pfb_len + 2 ));
1867 if ( pfb_len + 2 < 6 )
1869 FT_TRACE2((
" too long fragment length makes"
1870 " pfb_len confused: pfb_len=0x%08x\n",
1892 for (
i = 0;
i < resource_cnt;
i++ )
1903 if ( 0x7FFFFFFFUL < rlen )
1913 " offsets=0x%08x, rlen=0x%08x, flags=0x%04x\n",
1921 if ( (
flags >> 8 ) == 0 )
1923 FT_TRACE3((
" Skip POST fragment #%d because it is a comment\n",
1939 FT_TRACE3((
" Write POST fragment #%d header (4-byte) to buffer"
1941 i, pfb_data, pfb_lenpos ));
1943 if ( pfb_lenpos + 3 > pfb_len + 2 )
1947 pfb_data[pfb_lenpos + 1] = (
FT_Byte)(
len >> 8 );
1948 pfb_data[pfb_lenpos + 2] = (
FT_Byte)(
len >> 16 );
1949 pfb_data[pfb_lenpos + 3] = (
FT_Byte)(
len >> 24 );
1951 if ( (
flags >> 8 ) == 5 )
1954 FT_TRACE3((
" Write POST fragment #%d header (6-byte) to buffer"
1956 i, pfb_data, pfb_pos ));
1958 if ( pfb_pos + 6 > pfb_len + 2 )
1961 pfb_data[pfb_pos++] = 0x80;
1967 pfb_lenpos = pfb_pos;
1968 pfb_data[pfb_pos++] = 0;
1969 pfb_data[pfb_pos++] = 0;
1970 pfb_data[pfb_pos++] = 0;
1971 pfb_data[pfb_pos++] = 0;
1974 if ( pfb_pos > pfb_len || pfb_pos + rlen > pfb_len )
1977 FT_TRACE3((
" Load POST fragment #%d (%d byte) to buffer"
1979 i, rlen, pfb_data, pfb_pos ));
1990 if ( pfb_pos + 2 > pfb_len + 2 )
1992 pfb_data[pfb_pos++] = 0x80;
1993 pfb_data[pfb_pos++] = 3;
1995 if ( pfb_lenpos + 3 > pfb_len + 2 )
1998 pfb_data[pfb_lenpos + 1] = (
FT_Byte)(
len >> 8 );
1999 pfb_data[pfb_lenpos + 2] = (
FT_Byte)(
len >> 16 );
2000 pfb_data[pfb_lenpos + 3] = (
FT_Byte)(
len >> 24 );
2002 return open_face_from_buffer(
library,
2011 FT_TRACE2((
" Abort due to too-short buffer to store"
2012 " all POST fragments\n" ));
2014 FT_TRACE2((
" Abort due to invalid offset in a POST fragment\n" ));
2044 FT_Long face_index_in_resource = 0;
2047 if ( face_index < 0 )
2048 face_index = -face_index - 1;
2049 if ( face_index >= resource_cnt )
2050 return FT_THROW( Cannot_Open_Resource );
2060 return FT_THROW( Cannot_Open_Resource );
2061 if ( (
FT_ULong)rlen > FT_MAC_RFORK_MAX_LEN )
2085 is_cff = rlen > 4 && !
ft_memcmp( sfnt_data,
"OTTO", 4 );
2089 face_index_in_resource,
2090 is_cff ?
"cff" :
"truetype",
2112 FT_Long map_offset, rdata_pos;
2118 &map_offset, &rdata_pos );
2124 map_offset, rdata_pos,
2126 &data_offsets, &
count );
2130 face_index, aface );
2134 (*aface)->num_faces = 1;
2141 map_offset, rdata_pos,
2143 &data_offsets, &
count );
2150 face_index_internal, aface );
2153 (*aface)->num_faces =
count;
2169 unsigned char header[128];
2175 return FT_THROW( Invalid_Stream_Operation );
2193 return FT_THROW( Unknown_File_Format );
2195 dlen = (
header[0x53] << 24 ) |
2200 rlen = (
header[0x57] << 24 ) |
2205 offset = 128 + ( ( dlen + 127 ) & ~127 );
2223#define FT_COMPONENT raccess
2243 is_darwin_vfs = ft_raccess_rule_by_darwin_vfs(
library,
i );
2244 if ( is_darwin_vfs && vfs_rfork_has_no_font )
2246 FT_TRACE3((
"Skip rule %d: darwin vfs resource fork"
2247 " is already checked and"
2248 " no font is found\n",
2255 FT_TRACE3((
"Error 0x%x has occurred in rule %d\n",
2263 FT_TRACE3((
"Try rule %d: %s (offset=%d) ...",
2268 vfs_rfork_has_no_font =
TRUE;
2277 face_index, aface );
2284 else if ( is_darwin_vfs )
2285 vfs_rfork_has_no_font =
TRUE;
2290 if ( file_names[
i] )
2301#define FT_COMPONENT objs
2329#define FT_COMPONENT raccess
2331#ifdef FT_DEBUG_LEVEL_TRACE
2342#define FT_COMPONENT objs
2350 face_index, aface,
args );
2387#ifndef FT_CONFIG_OPTION_MAC_FONTS
2392#ifdef FT_DEBUG_LEVEL_TRACE
2394 if ( face_index < 0 )
2395 FT_TRACE3((
"Requesting number of faces and named instances\n"));
2398 FT_TRACE3((
"Requesting face %ld", face_index & 0xFFFFL ));
2399 if ( face_index & 0x7FFF0000L )
2400 FT_TRACE3((
", named instance %ld", face_index >> 16 ));
2407 if ( ( !aface && face_index >= 0 ) || !
args )
2408 return FT_THROW( Invalid_Argument );
2435 num_params =
args->num_params;
2471 num_params =
args->num_params;
2480#ifdef FT_CONFIG_OPTION_MAC_FONTS
2481 if ( test_mac_fonts &&
2482 ft_strcmp(
cur[0]->clazz->module_name,
"truetype" ) == 0 &&
2518#if !defined( FT_MACINTOSH ) && defined( FT_CONFIG_OPTION_MAC_FONTS )
2519 if ( test_mac_fonts )
2548 FT_TRACE4((
"FT_Open_Face: New face object, adding to list\n" ));
2560 FT_TRACE4((
"FT_Open_Face: Creating glyph slot\n" ));
2562 if ( face_index >= 0 )
2573 FT_TRACE4((
"FT_Open_Face: Creating size object\n" ));
2587 if (
face->height < 0 )
2599 for (
i = 0;
i <
face->num_fixed_sizes;
i++ )
2615 " Invalid bitmap dimensions for strike %d,"
2616 " now disabled\n",
i ));
2631 internal->transform_matrix.xx = 0x10000L;
2634 internal->transform_matrix.yy = 0x10000L;
2643#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
2663#ifdef FT_DEBUG_LEVEL_TRACE
2664 if ( !
error && face_index < 0 )
2666 FT_TRACE3((
"FT_Open_Face: The font has %ld face%s\n"
2667 " and %ld named instance%s for face %ld\n",
2669 face->num_faces == 1 ?
"" :
"s",
2670 face->style_flags >> 16,
2671 (
face->style_flags >> 16 ) == 1 ?
"" :
"s",
2686 const char* filepathname )
2693 if ( !filepathname )
2694 return FT_THROW( Invalid_Argument );
2698 open.pathname = (
char*)filepathname;
2720 return FT_THROW( Invalid_Face_Handle );
2724 return FT_THROW( Invalid_Driver_Handle );
2740 FT_BOOL( parameters->stream &&
2754 return FT_THROW( Invalid_Face_Handle );
2756 face->internal->refcount++;
2776 face->internal->refcount--;
2777 if (
face->internal->refcount > 0 )
2821 return FT_THROW( Invalid_Face_Handle );
2824 return FT_THROW( Invalid_Argument );
2826 if ( !
face->driver )
2827 return FT_THROW( Invalid_Driver_Handle );
2881 return FT_THROW( Invalid_Size_Handle );
2885 return FT_THROW( Invalid_Face_Handle );
2889 return FT_THROW( Invalid_Driver_Handle );
2903 if (
face->sizes_list.head )
2929 return FT_THROW( Invalid_Face_Handle );
2933 return FT_THROW( Unimplemented_Feature );
2938 if ( req->width && !req->height )
2940 else if ( !req->width && req->height )
2947 return FT_THROW( Invalid_Pixel_Size );
2949 for (
i = 0;
i <
face->num_fixed_sizes;
i++ )
2959 FT_TRACE3((
"FT_Match_Size: bitmap strike %d matches\n",
i ));
2968 FT_TRACE3((
"FT_Match_Size: no matching bitmap strike\n" ));
2970 return FT_THROW( Invalid_Pixel_Size );
2984 if (
metrics->horiBearingY < 0 )
2986 if ( height < metrics->horiBearingY )
2989 else if (
metrics->horiBearingY > 0 )
3008#ifdef GRID_FIT_METRICS
3045 bsize =
face->available_sizes + strike_index;
3053 face->units_per_EM );
3055 face->units_per_EM );
3082 FT_Long w = 0,
h = 0, scaled_w = 0, scaled_h = 0;
3085 switch ( req->type )
3088 w =
h =
face->units_per_EM;
3101 w =
face->max_advance_width;
3112 goto Calculate_Ppem;
3190 return FT_THROW( Invalid_Face_Handle );
3192 if ( strike_index < 0 || strike_index >=
face->num_fixed_sizes )
3193 return FT_THROW( Invalid_Argument );
3195 clazz =
face->driver->clazz;
3201 FT_TRACE5((
"FT_Select_Size (%s driver):\n",
3202 face->driver->root.clazz->module_name ));
3211#ifdef FT_DEBUG_LEVEL_TRACE
3245 return FT_THROW( Invalid_Face_Handle );
3247 if ( !req || req->width < 0 || req->height < 0 ||
3249 return FT_THROW( Invalid_Argument );
3253 face->size->internal->autohint_metrics.x_scale = 0;
3255 clazz =
face->driver->clazz;
3261 FT_TRACE5((
"FT_Request_Size (%s driver):\n",
3262 face->driver->root.clazz->module_name ));
3286#ifdef FT_DEBUG_LEVEL_TRACE
3323 char_width = char_height;
3324 else if ( !char_height )
3325 char_height = char_width;
3327 if ( !horz_resolution )
3328 horz_resolution = vert_resolution;
3329 else if ( !vert_resolution )
3330 vert_resolution = horz_resolution;
3332 if ( char_width < 1 * 64 )
3333 char_width = 1 * 64;
3334 if ( char_height < 1 * 64 )
3335 char_height = 1 * 64;
3337 if ( !horz_resolution )
3338 horz_resolution = vert_resolution = 72;
3341 req.
width = char_width;
3342 req.
height = char_height;
3362 if ( pixel_width == 0 )
3363 pixel_width = pixel_height;
3364 else if ( pixel_height == 0 )
3365 pixel_height = pixel_width;
3367 if ( pixel_width < 1 )
3369 if ( pixel_height < 1 )
3373 if ( pixel_width >= 0xFFFFU )
3374 pixel_width = 0xFFFFU;
3375 if ( pixel_height >= 0xFFFFU )
3376 pixel_height = 0xFFFFU;
3402 return FT_THROW( Invalid_Face_Handle );
3405 return FT_THROW( Invalid_Argument );
3412 if (
driver->clazz->get_kerning )
3422 akerning->x =
FT_MulFix( akerning->x,
face->size->metrics.x_scale );
3423 akerning->y =
FT_MulFix( akerning->y,
face->size->metrics.y_scale );
3427 FT_Pos orig_x = akerning->x;
3428 FT_Pos orig_y = akerning->y;
3434 if (
face->size->metrics.x_ppem < 25 )
3436 face->size->metrics.x_ppem, 25 );
3437 if (
face->size->metrics.y_ppem < 25 )
3439 face->size->metrics.y_ppem, 25 );
3444#ifdef FT_DEBUG_LEVEL_TRACE
3450 if ( akerning->x != orig_x_rounded ||
3451 akerning->y != orig_y_rounded )
3452 FT_TRACE5((
"FT_Get_Kerning: horizontal kerning"
3453 " (%d, %d) scaled down to (%d, %d) pixels\n",
3454 orig_x_rounded / 64, orig_y_rounded / 64,
3455 akerning->x / 64, akerning->y / 64 ));
3475 FT_Service_Kerning service;
3480 return FT_THROW( Invalid_Face_Handle );
3483 return FT_THROW( Invalid_Argument );
3487 return FT_THROW( Unimplemented_Feature );
3509 return FT_THROW( Invalid_Face_Handle );
3512 if (
encoding == FT_ENCODING_NONE && !
face->num_charmaps )
3513 return FT_THROW( Invalid_Argument );
3519 if (
encoding == FT_ENCODING_UNICODE )
3524 return FT_THROW( Invalid_CharMap_Handle );
3537 return FT_THROW( Invalid_Argument );
3552 return FT_THROW( Invalid_Face_Handle );
3555 if ( !
cur || !charmap )
3556 return FT_THROW( Invalid_CharMap_Handle );
3562 if (
cur[0] == charmap &&
3570 return FT_THROW( Invalid_Argument );
3582 if ( !charmap || !charmap->face )
3585 for (
i = 0;
i < charmap->face->num_charmaps;
i++ )
3586 if ( charmap->face->charmaps[
i] == charmap )
3604 clazz->
done( cmap );
3621 for (
i = 0;
i <
face->num_charmaps;
i++ )
3630 face->num_charmaps - 1 ) )
3634 for (
j =
i + 1;
j <
face->num_charmaps;
j++ )
3636 if (
j ==
face->num_charmaps - 1 )
3637 face->charmaps[
j - 1] = last_charmap;
3642 face->num_charmaps--;
3668 if ( !clazz || !charmap || !charmap->face )
3669 return FT_THROW( Invalid_Argument );
3671 face = charmap->face;
3674 if ( !
FT_ALLOC( cmap, clazz->size ) )
3677 cmap->
clazz = clazz;
3681 error = clazz->init( cmap, init_data );
3689 face->num_charmaps + 1 ) )
3722 if ( charcode > 0xFFFFFFFFUL )
3724 FT_TRACE1((
"FT_Get_Char_Index: too large charcode" ));
3725 FT_TRACE1((
" 0x%x is truncated\n", charcode ));
3775 FT_UInt32
code = (FT_UInt32)charcode;
3805 if ( num_properties > 0 && !properties )
3811 for ( ; num_properties > 0; num_properties-- )
3815 if ( properties->data )
3818 face->internal->no_stem_darkening =
FALSE;
3820 face->internal->no_stem_darkening =
TRUE;
3825 face->internal->no_stem_darkening = -1;
3830#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
3831 if ( properties->data )
3836 face->internal->lcd_filter_func = ft_lcd_filter_fir;
3845 if ( properties->data )
3847 face->internal->random_seed = *( (FT_Int32*)properties->data );
3848 if (
face->internal->random_seed < 0 )
3849 face->internal->random_seed = 0;
3854 face->internal->random_seed = -1;
3886 face->charmap->encoding == FT_ENCODING_UNICODE )
3897 if ( charcode > 0xFFFFFFFFUL )
3899 FT_TRACE1((
"FT_Face_GetCharVariantIndex:"
3900 " too large charcode" ));
3901 FT_TRACE1((
" 0x%x is truncated\n", charcode ));
3903 if ( variantSelector > 0xFFFFFFFFUL )
3905 FT_TRACE1((
"FT_Face_GetCharVariantIndex:"
3906 " too large variantSelector" ));
3907 FT_TRACE1((
" 0x%x is truncated\n", variantSelector ));
3911 (FT_UInt32)charcode,
3912 (FT_UInt32)variantSelector );
3940 if ( charcode > 0xFFFFFFFFUL )
3942 FT_TRACE1((
"FT_Face_GetCharVariantIsDefault:"
3943 " too large charcode" ));
3944 FT_TRACE1((
" 0x%x is truncated\n", charcode ));
3946 if ( variantSelector > 0xFFFFFFFFUL )
3948 FT_TRACE1((
"FT_Face_GetCharVariantIsDefault:"
3949 " too large variantSelector" ));
3950 FT_TRACE1((
" 0x%x is truncated\n", variantSelector ));
3954 (FT_UInt32)charcode,
3955 (FT_UInt32)variantSelector );
4010 if ( charcode > 0xFFFFFFFFUL )
4012 FT_TRACE1((
"FT_Face_GetVariantsOfChar: too large charcode" ));
4013 FT_TRACE1((
" 0x%x is truncated\n", charcode ));
4017 (FT_UInt32)charcode );
4044 if ( variantSelector > 0xFFFFFFFFUL )
4046 FT_TRACE1((
"FT_Get_Char_Index: too large variantSelector" ));
4047 FT_TRACE1((
" 0x%x is truncated\n", variantSelector ));
4051 (FT_UInt32)variantSelector );
4072 FT_Service_GlyphDict service;
4079 if ( service && service->name_index )
4080 result = service->name_index(
face, glyph_name );
4096 FT_Service_GlyphDict service;
4100 return FT_THROW( Invalid_Face_Handle );
4102 if ( !
buffer || buffer_max == 0 )
4103 return FT_THROW( Invalid_Argument );
4109 return FT_THROW( Invalid_Glyph_Index );
4112 return FT_THROW( Invalid_Argument );
4115 if ( service && service->get_name )
4137 FT_Service_PsFontName service;
4142 POSTSCRIPT_FONT_NAME );
4144 if ( service && service->get_ps_font_name )
4160 FT_Service_SFNT_Table service;
4183 FT_Service_SFNT_Table service;
4187 return FT_THROW( Invalid_Face_Handle );
4191 return FT_THROW( Unimplemented_Feature );
4205 FT_Service_SFNT_Table service;
4212 return FT_THROW( Invalid_Face_Handle );
4216 return FT_THROW( Unimplemented_Feature );
4227 FT_Service_TTCMaps service;
4232 if ( !charmap || !charmap->face )
4235 face = charmap->face;
4239 if ( service->get_cmap_info( charmap, &
cmap_info ))
4251 FT_Service_TTCMaps service;
4256 if ( !charmap || !charmap->face )
4259 face = charmap->face;
4263 if ( service->get_cmap_info( charmap, &
cmap_info ))
4279 return FT_THROW( Invalid_Size_Handle );
4283 return FT_THROW( Invalid_Face_Handle );
4323 cur = (*node)->next;
4445 render->clazz->raster_class->raster_done(
render->raster );
4494 if ( num_params > 0 && !parameters )
4514 for ( ; num_params > 0; num_params-- )
4516 error = set_mode( renderer, parameters->tag, parameters->data );
4537 switch (
slot->format )
4539 case FT_GLYPH_FORMAT_BITMAP:
4572 FT_Int32 load_flags =
slot->internal->load_flags;
4602 slot->format = FT_GLYPH_FORMAT_BITMAP;
4648#ifdef FT_DEBUG_LEVEL_TRACE
4651#define FT_COMPONENT checksum
4662 ft_trace_levels[trace_checksum] >= 3 &&
4663 slot->bitmap.buffer )
4677 unsigned char md5[16];
4678 unsigned long coverage = 0;
4681 int pitch =
bitmap.pitch;
4684 FT_TRACE3((
"FT_Render_Glyph: bitmap %dx%d, %s (mode %d)\n",
4687 pixel_modes[
slot->bitmap.pixel_mode],
4688 slot->bitmap.pixel_mode ));
4690 for (
i = 0;
i < rows;
i++ )
4691 for (
j = 0;
j < pitch;
j++ )
4692 coverage +=
bitmap.buffer[
i * pitch +
j];
4694 FT_TRACE3((
" Total coverage: %lu\n", coverage ));
4699 (
unsigned long)rows * (
unsigned long)pitch );
4703 for (
i = 0;
i < 16;
i++ )
4717 ft_trace_levels[trace_checksum] >= 7 )
4719 if (
slot->bitmap.rows < 128U &&
4720 slot->bitmap.width < 128U &&
4721 slot->bitmap.buffer )
4723 int rows = (
int)
slot->bitmap.rows;
4725 int pitch =
slot->bitmap.pitch;
4728 unsigned char* topleft =
slot->bitmap.buffer;
4732 topleft -= pitch * ( rows - 1 );
4735 switch (
slot->bitmap.pixel_mode )
4739 for (
i = 0;
i < rows;
i++ )
4742 for (
m = 128;
m > 0 && j < width; m >>= 1,
j++ )
4744 ( topleft[
i * pitch +
j / 8] &
m ) != 0 ));
4751 for (
i = 0;
i < rows;
i++ )
4761 FT_TRACE7((
"Netpbm image: too large, omitted\n" ));
4765#define FT_COMPONENT objs
4783 return FT_THROW( Invalid_Argument );
4860#define FREETYPE_VER_FIXED ( ( (FT_Long)FREETYPE_MAJOR << 16 ) | \
4864 return FT_THROW( Invalid_Library_Handle );
4867 return FT_THROW( Invalid_Argument );
4871 return FT_THROW( Invalid_Version );
4877 if (
ft_strcmp(
module->clazz->module_name, clazz->module_name ) == 0 )
4880 if ( clazz->module_version <=
module->clazz->module_version )
4881 return FT_THROW( Lower_Module_Version );
4931 if ( clazz->module_init )
4950 if ( renderer->
clazz &&
4993 const char* mod_name )
5008 const char* service_id,
5019 if (
module->clazz->get_interface )
5036 if (
cur[0]->clazz->get_interface )
5038 result =
cur[0]->clazz->get_interface(
cur[0], service_id );
5060 return FT_THROW( Invalid_Library_Handle );
5089 return FT_THROW( Invalid_Driver_Handle );
5105 FT_Service_Properties service;
5107#ifdef FT_DEBUG_LEVEL_ERROR
5117 return FT_THROW( Invalid_Library_Handle );
5120 return FT_THROW( Invalid_Argument );
5132 FT_ERROR((
"%s: can't find module `%s'\n",
5138 if ( !
cur[0]->clazz->get_interface )
5140 FT_ERROR((
"%s: module `%s' doesn't support properties\n",
5142 return FT_THROW( Unimplemented_Feature );
5146 interface =
cur[0]->clazz->get_interface(
cur[0],
5150 FT_ERROR((
"%s: module `%s' doesn't support properties\n",
5152 return FT_THROW( Unimplemented_Feature );
5155 service = (FT_Service_Properties)
interface;
5158 missing_func =
FT_BOOL( !service->set_property );
5160 missing_func =
FT_BOOL( !service->get_property );
5164 FT_ERROR((
"%s: property service of module `%s' is broken\n",
5166 return FT_THROW( Unimplemented_Feature );
5169 return set ? service->set_property(
cur[0],
5173 : service->get_property(
cur[0],
5213#ifdef FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES
5254 return FT_THROW( Invalid_Library_Handle );
5272 if ( !
memory || !alibrary )
5273 return FT_THROW( Invalid_Argument );
5275#ifdef FT_DEBUG_LEVEL_ERROR
5339 return FT_THROW( Invalid_Library_Handle );
5365 const char* driver_name[] = {
"type42",
NULL };
5369 m <
sizeof ( driver_name ) /
sizeof ( driver_name[0] );
5379 if ( driver_name[
m] &&
5389 while ( faces->
head )
5393 FT_TRACE0((
"FT_Done_Library: failed to free some faces\n" ));
5462 FT_Service_TrueTypeEngine service;
5465 service = (FT_Service_TrueTypeEngine)
5470 result = service->engine_type;
5494 glyph->format == FT_GLYPH_FORMAT_COMPOSITE &&
5495 sub_index < glyph->num_subglyphs )
5500 *p_index = subg->
index;
5501 *p_flags = subg->
flags;
5502 *p_arg1 = subg->
arg1;
5503 *p_arg2 = subg->
arg2;
ios_base &_STLP_CALL internal(ios_base &__s)
_STLP_MOVE_TO_STD_NAMESPACE void _STLP_CALL advance(_InputIterator &__i, _Distance __n)
struct FT_AutoHinter_InterfaceRec_ * FT_AutoHinter_Interface
typedefFT_BEGIN_HEADER struct FT_AutoHinterRec_ * FT_AutoHinter
int get_name(unsigned char **pos, uint32_t *remaining, const char **out_name)
static LPCWSTR LPCWSTR module_name
#define TT_PLATFORM_MICROSOFT
#define TT_PLATFORM_APPLE_UNICODE
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
#define FT_LOAD_VERTICAL_LAYOUT
#define FT_LOAD_TARGET_MODE(x)
FT_BEGIN_HEADER struct FT_Glyph_Metrics_ FT_Glyph_Metrics
#define FT_LOAD_SBITS_ONLY
#define FT_LOAD_NO_BITMAP
#define FT_LOAD_IGNORE_TRANSFORM
@ FT_SIZE_REQUEST_TYPE_BBOX
@ FT_SIZE_REQUEST_TYPE_NOMINAL
@ FT_SIZE_REQUEST_TYPE_REAL_DIM
@ FT_SIZE_REQUEST_TYPE_SCALES
@ FT_SIZE_REQUEST_TYPE_MAX
@ FT_SIZE_REQUEST_TYPE_CELL
#define FT_LOAD_NO_RECURSE
#define FT_LOAD_BITMAP_METRICS_ONLY
enum FT_Render_Mode_ FT_Render_Mode
#define FT_LOAD_NO_HINTING
FT_DivFix(FT_Long a, FT_Long b)
#define FT_HAS_FIXED_SIZES(face)
#define FT_LOAD_FORCE_AUTOHINT
#define FT_IS_SCALABLE(face)
#define FT_LOAD_MONOCHROME
#define FT_HAS_VERTICAL(face)
struct FT_SizeRec_ * FT_Size
#define FT_FACE_FLAG_EXTERNAL_STREAM
enum FT_Encoding_ FT_Encoding
FT_Vector_Transform(FT_Vector *vector, const FT_Matrix *matrix)
#define FT_HAS_GLYPH_NAMES(face)
#define FT_LOAD_NO_AUTOHINT
#define FT_IS_TRICKY(face)
#define FT_LOAD_LINEAR_DESIGN
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
FT_MulFix(FT_Long a, FT_Long b)
struct FT_CharMapRec_ * FT_CharMap
FT_Bitmap_Convert(FT_Library library, const FT_Bitmap *source, FT_Bitmap *target, FT_Int alignment)
FT_BEGIN_HEADER FT_Bitmap_Init(FT_Bitmap *abitmap)
FT_Bitmap_Done(FT_Library library, FT_Bitmap *bitmap)
#define FT_ASSERT(condition)
#define FT_TRACE0(varformat)
#define FT_ERROR(varformat)
#define FT_TRACE5(varformat)
#define FT_TRACE7(varformat)
#define FT_TRACE3(varformat)
#define FT_TRACE2(varformat)
#define FT_TRACE1(varformat)
#define FT_TRACE4(varformat)
struct FT_Driver_ClassRec_ * FT_Driver_Class
FT_BEGIN_HEADER FT_Get_Font_Format(FT_Face face)
FT_GlyphLoader_Done(FT_GlyphLoader loader)
FT_GlyphLoader_New(FT_Memory memory, FT_GlyphLoader *aloader)
enum FT_Glyph_Format_ FT_Glyph_Format
enum FT_Pixel_Mode_ FT_Pixel_Mode
FT_BEGIN_HEADER typedef signed long FT_Pos
FT_Incremental_InterfaceRec * FT_Incremental_Interface
#define FT_LCD_FILTER_FIVE_TAPS
FT_List_Up(FT_List list, FT_ListNode node)
void(* FT_List_Destructor)(FT_Memory memory, void *data, void *user)
FT_List_Finalize(FT_List list, FT_List_Destructor destroy, FT_Memory memory, void *user)
FT_List_Remove(FT_List list, FT_ListNode node)
FT_BEGIN_HEADER FT_List_Find(FT_List list, void *data)
FT_List_Add(FT_List list, FT_ListNode node)
#define FT_ALLOC(ptr, size)
#define FT_RENEW_ARRAY(ptr, curcnt, newcnt)
#define FT_MODULE_FONT_DRIVER
@ FT_TRUETYPE_ENGINE_TYPE_NONE
enum FT_TrueTypeEngineType_ FT_TrueTypeEngineType
void(* FT_DebugHook_Func)(void *arg)
FT_Load_Glyph(FT_Face face, FT_UInt glyph_index, FT_Int32 load_flags)
static void destroy_charmaps(FT_Face face, FT_Memory memory)
FT_Remove_Module(FT_Library library, FT_Module module)
static FT_Error ft_add_renderer(FT_Module module)
FT_Get_Next_Char(FT_Face face, FT_ULong charcode, FT_UInt *agindex)
FT_Get_Sfnt_Table(FT_Face face, FT_Sfnt_Tag tag)
static FT_CharMap find_variant_selector_charmap(FT_Face face)
FT_Set_Transform(FT_Face face, FT_Matrix *matrix, FT_Vector *delta)
static void destroy_face(FT_Memory memory, FT_Face face, FT_Driver driver)
FT_Match_Size(FT_Face face, FT_Size_Request req, FT_Bool ignore_width, FT_ULong *size_index)
FT_Face_GetVariantSelectors(FT_Face face)
static void destroy_size(FT_Memory memory, FT_Size size, FT_Driver driver)
FT_Library_Version(FT_Library library, FT_Int *amajor, FT_Int *aminor, FT_Int *apatch)
FT_Property_Get(FT_Library library, const FT_String *module_name, const FT_String *property_name, void *value)
FT_Set_Pixel_Sizes(FT_Face face, FT_UInt pixel_width, FT_UInt pixel_height)
static FT_Error open_face(FT_Driver driver, FT_Stream *astream, FT_Bool external_stream, FT_Long face_index, FT_Int num_params, FT_Parameter *params, FT_Face *aface)
static void ft_glyphslot_clear(FT_GlyphSlot slot)
static void ft_cmap_done_internal(FT_CMap cmap)
static FT_Error ft_open_face_internal(FT_Library library, const FT_Open_Args *args, FT_Long face_index, FT_Face *aface, FT_Bool test_mac_fonts)
FT_Set_Renderer(FT_Library library, FT_Renderer renderer, FT_UInt num_params, FT_Parameter *parameters)
ft_synthesize_vertical_metrics(FT_Glyph_Metrics *metrics, FT_Pos advance)
FT_Done_Face(FT_Face face)
FT_Get_First_Char(FT_Face face, FT_UInt *agindex)
FT_Get_CMap_Language_ID(FT_CharMap charmap)
FT_Face_GetVariantsOfChar(FT_Face face, FT_ULong charcode)
FT_Select_Metrics(FT_Face face, FT_ULong strike_index)
FT_Open_Face(FT_Library library, const FT_Open_Args *args, FT_Long face_index, FT_Face *aface)
static void Destroy_Module(FT_Module module)
FT_Done_Size(FT_Size size)
ft_validator_run(FT_Validator valid)
static FT_Renderer ft_lookup_glyph_renderer(FT_GlyphSlot slot)
ft_glyphslot_preset_bitmap(FT_GlyphSlot slot, FT_Render_Mode mode, const FT_Vector *origin)
FT_Load_Sfnt_Table(FT_Face face, FT_ULong tag, FT_Long offset, FT_Byte *buffer, FT_ULong *length)
FT_Get_Char_Index(FT_Face face, FT_ULong charcode)
ft_glyphslot_free_bitmap(FT_GlyphSlot slot)
FT_Add_Module(FT_Library library, const FT_Module_Class *clazz)
FT_New_Face(FT_Library library, const char *pathname, FT_Long face_index, FT_Face *aface)
static void Destroy_Driver(FT_Driver driver)
FT_Select_Charmap(FT_Face face, FT_Encoding encoding)
ft_validator_init(FT_Validator valid, const FT_Byte *base, const FT_Byte *limit, FT_ValidationLevel level)
static FT_Error ft_property_do(FT_Library library, const FT_String *module_name, const FT_String *property_name, void *value, FT_Bool set, FT_Bool value_is_string)
static void ft_glyphslot_done(FT_GlyphSlot slot)
FT_Activate_Size(FT_Size size)
static FT_Error find_unicode_charmap(FT_Face face)
FT_Done_Library(FT_Library library)
FT_Select_Size(FT_Face face, FT_Int strike_index)
FT_CMap_Done(FT_CMap cmap)
FT_New_GlyphSlot(FT_Face face, FT_GlyphSlot *aslot)
FT_Set_Debug_Hook(FT_Library library, FT_UInt hook_index, FT_DebugHook_Func debug_hook)
FT_Request_Size(FT_Face face, FT_Size_Request req)
FT_Request_Metrics(FT_Face face, FT_Size_Request req)
FT_Get_Postscript_Name(FT_Face face)
FT_New_Library(FT_Memory memory, FT_Library *alibrary)
#define FREETYPE_VER_FIXED
ft_module_get_service(FT_Module module, const char *service_id, FT_Bool global)
FT_Face_GetCharVariantIndex(FT_Face face, FT_ULong charcode, FT_ULong variantSelector)
FT_Get_Renderer(FT_Library library, FT_Glyph_Format format)
FT_Get_Charmap_Index(FT_CharMap charmap)
FT_Set_Charmap(FT_Face face, FT_CharMap charmap)
ft_validator_error(FT_Validator valid, FT_Error error)
FT_CMap_New(FT_CMap_Class clazz, FT_Pointer init_data, FT_CharMap charmap, FT_CMap *acmap)
FT_Render_Glyph_Internal(FT_Library library, FT_GlyphSlot slot, FT_Render_Mode render_mode)
FT_Get_CMap_Format(FT_CharMap charmap)
static FT_Error ft_glyphslot_init(FT_GlyphSlot slot)
FT_Get_Module(FT_Library library, const char *module_name)
FT_New_Size(FT_Face face, FT_Size *asize)
FT_Get_TrueType_Engine_Type(FT_Library library)
FT_Get_Glyph_Name(FT_Face face, FT_UInt glyph_index, FT_Pointer buffer, FT_UInt buffer_max)
FT_Reference_Library(FT_Library library)
static void ft_glyphslot_grid_fit_metrics(FT_GlyphSlot slot, FT_Bool vertical)
FT_Stream_New(FT_Library library, const FT_Open_Args *args, FT_Stream *astream)
FT_Render_Glyph(FT_GlyphSlot slot, FT_Render_Mode render_mode)
FT_Get_Module_Interface(FT_Library library, const char *mod_name)
FT_Get_Track_Kerning(FT_Face face, FT_Fixed point_size, FT_Int degree, FT_Fixed *akerning)
FT_Get_Name_Index(FT_Face face, FT_String *glyph_name)
FT_Stream_Free(FT_Stream stream, FT_Int external)
FT_Get_Color_Glyph_Layer(FT_Face face, FT_UInt base_glyph, FT_UInt *aglyph_index, FT_UInt *acolor_index, FT_LayerIterator *iterator)
FT_Get_Kerning(FT_Face face, FT_UInt left_glyph, FT_UInt right_glyph, FT_UInt kern_mode, FT_Vector *akerning)
static void ft_set_current_renderer(FT_Library library)
FT_Attach_Stream(FT_Face face, FT_Open_Args *parameters)
FT_Done_GlyphSlot(FT_GlyphSlot slot)
FT_Property_Set(FT_Library library, const FT_String *module_name, const FT_String *property_name, const void *value)
FT_Get_SubGlyph_Info(FT_GlyphSlot glyph, FT_UInt sub_index, FT_Int *p_index, FT_UInt *p_flags, FT_Int *p_arg1, FT_Int *p_arg2, FT_Matrix *p_transform)
FT_Face_GetCharVariantIsDefault(FT_Face face, FT_ULong charcode, FT_ULong variantSelector)
FT_Face_GetCharsOfVariant(FT_Face face, FT_ULong variantSelector)
FT_Set_Char_Size(FT_Face face, FT_F26Dot6 char_width, FT_F26Dot6 char_height, FT_UInt horz_resolution, FT_UInt vert_resolution)
FT_Sfnt_Table_Info(FT_Face face, FT_UInt table_index, FT_ULong *tag, FT_ULong *length)
FT_Lookup_Renderer(FT_Library library, FT_Glyph_Format format, FT_ListNode *node)
ft_glyphslot_alloc_bitmap(FT_GlyphSlot slot, FT_ULong size)
FT_Face_Properties(FT_Face face, FT_UInt num_properties, FT_Parameter *properties)
FT_Reference_Face(FT_Face face)
FT_Attach_File(FT_Face face, const char *filepathname)
FT_New_Memory_Face(FT_Library library, const FT_Byte *file_base, FT_Long file_size, FT_Long face_index, FT_Face *aface)
ft_service_list_lookup(FT_ServiceDesc service_descriptors, const char *service_id)
static void ft_recompute_scaled_metrics(FT_Face face, FT_Size_Metrics *metrics)
FT_Load_Char(FT_Face face, FT_ULong char_code, FT_Int32 load_flags)
static void ft_remove_renderer(FT_Module module)
ft_glyphslot_set_bitmap(FT_GlyphSlot slot, FT_Byte *buffer)
#define FT_FACE_LIBRARY(x)
#define FT_DRIVER_HAS_HINTER(x)
#define FT_MODULE_IS_RENDERER(x)
#define FT_DRIVER_USES_OUTLINES(x)
#define FT_REQUEST_WIDTH(req)
#define FT_REQUEST_HEIGHT(req)
#define FT_FACE_MEMORY(x)
#define FT_PIX_ROUND_LONG(x)
ft_lcd_padding(FT_BBox *cbox, FT_GlyphSlot slot, FT_Render_Mode mode)
#define FT_DRIVER_HINTS_LIGHTLY(x)
#define FT_GLYPH_OWN_BITMAP
#define FT_MODULE_IS_DRIVER(x)
#define FT_PIX_CEIL_LONG(x)
#define FT_MODULE_IS_HINTER(x)
#define FT_PAD_CEIL(x, n)
FT_Outline_Check(FT_Outline *outline)
FT_Outline_Translate(const FT_Outline *outline, FT_Pos xOffset, FT_Pos yOffset)
FT_Outline_Transform(const FT_Outline *outline, const FT_Matrix *matrix)
FT_Outline_Get_CBox(const FT_Outline *outline, FT_BBox *acbox)
#define FT_PARAM_TAG_INCREMENTAL
#define FT_PARAM_TAG_RANDOM_SEED
#define FT_PARAM_TAG_LCD_FILTER_WEIGHTS
#define FT_PARAM_TAG_STEM_DARKENING
FT_Error(* FT_Renderer_SetModeFunc)(FT_Renderer renderer, FT_ULong mode_tag, FT_Pointer mode_ptr)
FT_Raccess_Guess(FT_Library library, FT_Stream stream, char *base_name, char **new_names, FT_Long *offsets, FT_Error *errors)
FT_Raccess_Get_HeaderInfo(FT_Library library, FT_Stream stream, FT_Long rfork_offset, FT_Long *map_offset, FT_Long *rdata_pos)
#define FT_RACCESS_N_RULES
FT_Raccess_Get_DataOffsets(FT_Library library, FT_Stream stream, FT_Long map_offset, FT_Long rdata_pos, FT_Long tag, FT_Bool sort_by_res_id, FT_Long **offsets, FT_Long *count)
#define FT_FACE_LOOKUP_SERVICE(face, ptr, id)
#define FT_FACE_FIND_SERVICE(face, ptr, id)
smooth FT_Module_Constructor FT_Module_Destructor FT_Module_Requester FT_GLYPH_FORMAT_OUTLINE
#define FT_READ_USHORT(var)
#define FT_READ_ULONG(var)
#define FT_READ_LONG(var)
FT_Stream_Close(FT_Stream stream)
FT_Stream_Open(FT_Stream stream, const char *filepathname)
#define FT_STREAM_SKIP(distance)
FT_Stream_Read(FT_Stream stream, FT_Byte *buffer, FT_ULong count)
FT_Stream_Seek(FT_Stream stream, FT_ULong pos)
FT_Stream_OpenMemory(FT_Stream stream, const FT_Byte *base, FT_ULong size)
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
void(* FT_Stream_CloseFunc)(FT_Stream stream)
FT_BEGIN_HEADER typedef unsigned char FT_Bool
enum FT_ValidationLevel_ FT_ValidationLevel
typedefFT_BEGIN_HEADER struct FT_ValidatorRec_ volatile * FT_Validator
static const FxOffsetAndName offsets[]
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLenum GLuint GLint GLenum face
GLsizei GLenum const GLvoid GLuint GLsizei GLfloat * metrics
GLenum const GLfloat * params
GLuint GLsizei GLsizei * length
GLubyte GLubyte GLubyte GLubyte w
GLfloat GLfloat GLfloat GLfloat h
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 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 WCHAR desc[]
static char memory[1024 *256]
struct @1709::@1710 driver
FT_BEGIN_HEADER struct PS_DriverRec_ * PS_Driver
static unsigned int file_size
void MD5_Init(MD5_CTX *ctx)
void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size)
void MD5_Final(unsigned char *result, MD5_CTX *ctx)
static LONGLONG Adjust(LONGLONG value, const LONGLONG *pModifier, DWORD dwFlags)
SFNT_Interface * SFNT_Service
FT_AutoHinter_GlyphLoadFunc load_glyph
FT_CMap_CharNextFunc char_next
FT_CMap_CharVariantListFunc charvariant_list
FT_CMap_CharVarIndexFunc char_var_index
FT_CMap_VariantCharListFunc variantchar_list
FT_CMap_CharVarIsDefaultFunc char_var_default
FT_CMap_CharIndexFunc char_index
FT_CMap_VariantListFunc variant_list
FT_Size_RequestFunc request_size
FT_Size_InitFunc init_size
FT_Size_SelectFunc select_size
FT_Slot_DoneFunc done_slot
FT_Face_InitFunc init_face
FT_Face_DoneFunc done_face
FT_Face_AttachFunc attach_file
FT_Slot_InitFunc init_slot
FT_DebugHook_Func debug_hooks[4]
FT_Module modules[FT_MAX_MODULES]
const void * module_interface
FT_Module_Destructor module_done
FT_Raster_NewFunc raster_new
FT_Raster_RenderFunc raster_render
FT_Raster_DoneFunc raster_done
FT_Renderer_RenderFunc render
FT_Renderer_Class * clazz
FT_Glyph_Format glyph_format
FT_Renderer_TransformFunc transform_glyph
FT_Glyph_Format glyph_format
FT_Raster_Funcs * raster_class
FT_Renderer_RenderFunc render_glyph
FT_Renderer_SetModeFunc set_mode
FT_Size_Request_Type type
TT_Get_Colr_Layer_Func get_colr_layer
TT_Blend_Colr_Func colr_blend
TT_MaxProfile max_profile
FT_ULong font_program_size
FT_ULong cvt_program_size
FT_UShort maxSizeOfInstructions
#define FT_SERVICE_ID_PROPERTIES
#define FT_SERVICE_ID_TRUETYPE_ENGINE
FT_UInt FT_UInt right_glyph
#define TT_APPLE_ID_UNICODE_32
#define TT_APPLE_ID_VARIANT_SELECTOR
enum FT_Sfnt_Tag_ FT_Sfnt_Tag
struct TT_FaceRec_ * TT_Face
static void set_name(msft_typelib_t *typelib)
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList