22 #include FT_INTERNAL_VALIDATE_H 23 #include FT_INTERNAL_OBJECTS_H 24 #include FT_INTERNAL_DEBUG_H 25 #include FT_INTERNAL_RFORK_H 26 #include FT_INTERNAL_STREAM_H 27 #include FT_INTERNAL_SFNT_H 28 #include FT_TRUETYPE_TABLES_H 29 #include FT_TRUETYPE_TAGS_H 30 #include FT_TRUETYPE_IDS_H 32 #include FT_SERVICE_PROPERTIES_H 33 #include FT_SERVICE_SFNT_H 34 #include FT_SERVICE_POSTSCRIPT_NAME_H 35 #include FT_SERVICE_GLYPH_DICT_H 36 #include FT_SERVICE_TT_CMAP_H 37 #include FT_SERVICE_KERNING_H 38 #include FT_SERVICE_TRUETYPE_ENGINE_H 40 #ifdef FT_CONFIG_OPTION_MAC_FONTS 45 #ifdef FT_DEBUG_LEVEL_TRACE 54 #define GRID_FIT_METRICS 59 const char* service_id )
65 if ( desc && service_id )
111 volatile ft_jmp_buf* jump_buffer = &valid->jump_buffer;
114 valid->error =
error;
150 return FT_THROW( Invalid_Library_Handle );
153 return FT_THROW( Invalid_Argument );
166 (
const FT_Byte*)args->memory_base,
170 #ifndef FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT 185 stream = args->stream;
229 #define FT_COMPONENT trace_objs 281 FT_FREE( slot->bitmap.buffer );
288 slot->bitmap.buffer =
NULL;
299 slot->bitmap.buffer =
buffer;
314 FT_FREE( slot->bitmap.buffer );
346 slot->
format = FT_GLYPH_FORMAT_NONE;
398 return FT_THROW( Invalid_Argument );
400 driver =
face->driver;
401 clazz = driver->
clazz;
404 FT_TRACE4((
"FT_New_GlyphSlot: Creating new slot object\n" ));
409 error = ft_glyphslot_init( slot );
412 ft_glyphslot_done( slot );
463 ft_glyphslot_done( slot );
487 internal =
face->internal;
493 internal->transform_matrix.xx = 0x10000L;
494 internal->transform_matrix.xy = 0;
495 internal->transform_matrix.yx = 0;
496 internal->transform_matrix.yy = 0x10000L;
497 matrix = &
internal->transform_matrix;
500 internal->transform_matrix = *
matrix;
506 internal->transform_flags |= 1;
510 internal->transform_delta.x = 0;
511 internal->transform_delta.y = 0;
512 delta = &
internal->transform_delta;
515 internal->transform_delta = *delta;
518 if ( delta->x | delta->y )
519 internal->transform_flags |= 2;
527 #ifdef GRID_FIT_METRICS 538 metrics->horiBearingX =
FT_PIX_FLOOR( metrics->horiBearingX );
539 metrics->horiBearingY =
FT_PIX_CEIL ( metrics->horiBearingY );
541 right =
FT_PIX_CEIL( metrics->vertBearingX + metrics->width );
542 bottom =
FT_PIX_CEIL( metrics->vertBearingY + metrics->height );
544 metrics->vertBearingX =
FT_PIX_FLOOR( metrics->vertBearingX );
545 metrics->vertBearingY =
FT_PIX_FLOOR( metrics->vertBearingY );
547 metrics->width = right - metrics->vertBearingX;
548 metrics->height = bottom - metrics->vertBearingY;
552 metrics->vertBearingX =
FT_PIX_FLOOR( metrics->vertBearingX );
553 metrics->vertBearingY =
FT_PIX_FLOOR( metrics->vertBearingY );
555 right =
FT_PIX_CEIL ( metrics->horiBearingX + metrics->width );
556 bottom =
FT_PIX_FLOOR( metrics->horiBearingY - metrics->height );
558 metrics->horiBearingX =
FT_PIX_FLOOR( metrics->horiBearingX );
559 metrics->horiBearingY =
FT_PIX_CEIL ( metrics->horiBearingY );
561 metrics->width = right - metrics->horiBearingX;
562 metrics->height = metrics->horiBearingY -
bottom;
565 metrics->horiAdvance =
FT_PIX_ROUND( metrics->horiAdvance );
566 metrics->vertAdvance =
FT_PIX_ROUND( metrics->vertAdvance );
588 return FT_THROW( Invalid_Face_Handle );
594 ft_glyphslot_clear( slot );
596 driver =
face->driver;
639 (
face->internal->transform_matrix.yx == 0 &&
640 face->internal->transform_matrix.xx != 0 ) ||
641 (
face->internal->transform_matrix.xx == 0 &&
642 face->internal->transform_matrix.yx != 0 ) ) )
655 face->internal->ignore_unpatented_hinter ||
680 if ( !
error && slot->
format == FT_GLYPH_FORMAT_BITMAP )
691 internal->transform_flags = 0;
698 glyph_index, load_flags );
700 internal->transform_flags = transform_flags;
719 #ifdef GRID_FIT_METRICS 721 ft_glyphslot_grid_fit_metrics( slot,
761 if ( internal->transform_flags )
764 FT_Renderer renderer = ft_lookup_glyph_renderer( slot );
770 &internal->transform_matrix,
771 &internal->transform_delta );
775 if ( internal->transform_flags & 1 )
777 &internal->transform_matrix );
779 if ( internal->transform_flags & 2 )
781 internal->transform_delta.x,
782 internal->transform_delta.y );
798 slot->
format != FT_GLYPH_FORMAT_BITMAP &&
799 slot->
format != FT_GLYPH_FORMAT_COMPOSITE &&
828 return FT_THROW( Invalid_Face_Handle );
830 glyph_index = (
FT_UInt)char_code;
858 ft_cmap_done_internal(
FT_CMap cmap );
876 ft_cmap_done_internal( cmap );
901 while ( face->
glyph )
916 destroy_charmaps( face, memory );
967 find_unicode_charmap(
FT_Face face )
979 return FT_THROW( Invalid_CharMap_Handle );
1011 for ( ; --cur >=
first; )
1013 if ( cur[0]->encoding == FT_ENCODING_UNICODE )
1022 #ifdef FT_MAX_CHARMAP_CACHEABLE 1023 if ( cur - first > FT_MAX_CHARMAP_CACHEABLE )
1025 FT_ERROR((
"find_unicode_charmap: UCS-4 cmap is found " 1026 "at too late position (%d)\n", cur - first ));
1040 for ( ; --cur >=
first; )
1042 if ( cur[0]->encoding == FT_ENCODING_UNICODE )
1044 #ifdef FT_MAX_CHARMAP_CACHEABLE 1045 if ( cur - first > FT_MAX_CHARMAP_CACHEABLE )
1047 FT_ERROR((
"find_unicode_charmap: UCS-2 cmap is found " 1048 "at too late position (%d)\n", cur - first ));
1057 return FT_THROW( Invalid_CharMap_Handle );
1071 find_variant_selector_charmap(
FT_Face face )
1088 for ( cur = first; cur <
end; ++cur )
1094 #ifdef FT_MAX_CHARMAP_CACHEABLE 1095 if ( cur - first > FT_MAX_CHARMAP_CACHEABLE )
1097 FT_ERROR((
"find_unicode_charmap: UVS cmap is found " 1098 "at too late position (%d)\n", cur - first ));
1133 clazz = driver->
clazz;
1140 if (
FT_NEW(
internal ) )
1149 #ifdef FT_CONFIG_OPTION_INCREMENTAL 1154 face->
internal->incremental_interface = 0;
1155 for ( i = 0; i < num_params && !face->
internal->incremental_interface;
1158 face->
internal->incremental_interface =
1173 error2 = find_unicode_charmap( face );
1179 if ( error2 &&
FT_ERR_NEQ( error2, Invalid_CharMap_Handle ) )
1190 destroy_charmaps( face, memory );
1205 #ifndef FT_MACINTOSH 1211 const char* pathname,
1220 return FT_THROW( Invalid_Argument );
1226 return FT_Open_Face( library, &args, face_index, aface );
1246 return FT_THROW( Invalid_Argument );
1253 return FT_Open_Face( library, &args, face_index, aface );
1257 #ifdef FT_CONFIG_OPTION_MAC_FONTS 1318 return FT_THROW( Invalid_Library_Handle );
1321 return FT_THROW( Invalid_Argument );
1324 memory = library->
memory;
1346 const char* driver_name,
1355 error = new_memory_stream( library,
1358 memory_stream_close,
1380 if ( face_index > 0 )
1384 error =
FT_Open_Face( library, &args, face_index, aface );
1412 ft_lookup_PS_in_sfnt_stream(
FT_Stream stream,
1427 *is_sfnt_cid =
FALSE;
1435 return FT_THROW( Unknown_File_Format );
1443 *is_sfnt_cid =
FALSE;
1445 for ( i = 0; i < numTables; i++ )
1456 *is_sfnt_cid =
TRUE;
1457 if ( face_index < 0 )
1465 *is_sfnt_cid =
FALSE;
1466 if ( face_index < 0 )
1469 if ( face_index >= 0 && pstable_index == face_index )
1497 error = ft_lookup_PS_in_sfnt_stream( stream,
1519 is_sfnt_cid ?
"cid" :
"type1",
1526 if (
FT_ERR_EQ( error, Unknown_File_Format ) )
1538 #ifndef FT_MACINTOSH 1559 FT_Long pfb_len, pfb_pos, pfb_lenpos;
1563 if ( face_index == -1 )
1565 if ( face_index != 0 )
1571 for ( i = 0; i < resource_cnt; ++
i )
1578 pfb_len += temp + 6;
1595 for ( i = 0; i < resource_cnt; ++
i )
1604 FT_TRACE3((
"POST fragment[%d]: offsets=0x%08x, rlen=0x%08x, flags=0x%04x\n",
1605 i, offsets[i], rlen, flags ));
1608 if ( ( flags >> 8 ) == 0 )
1618 if ( ( flags >> 8 ) == type )
1622 if ( pfb_lenpos + 3 > pfb_len + 2 )
1624 pfb_data[pfb_lenpos ] = (
FT_Byte)( len );
1625 pfb_data[pfb_lenpos + 1] = (
FT_Byte)( len >> 8 );
1626 pfb_data[pfb_lenpos + 2] = (
FT_Byte)( len >> 16 );
1627 pfb_data[pfb_lenpos + 3] = (
FT_Byte)( len >> 24 );
1629 if ( ( flags >> 8 ) == 5 )
1632 if ( pfb_pos + 6 > pfb_len + 2 )
1634 pfb_data[pfb_pos++] = 0x80;
1639 pfb_data[pfb_pos++] = (
FT_Byte)type;
1640 pfb_lenpos = pfb_pos;
1641 pfb_data[pfb_pos++] = 0;
1642 pfb_data[pfb_pos++] = 0;
1643 pfb_data[pfb_pos++] = 0;
1644 pfb_data[pfb_pos++] = 0;
1647 error =
FT_ERR( Cannot_Open_Resource );
1648 if ( pfb_pos > pfb_len || pfb_pos + rlen > pfb_len )
1657 if ( pfb_pos + 2 > pfb_len + 2 )
1659 pfb_data[pfb_pos++] = 0x80;
1660 pfb_data[pfb_pos++] = 3;
1662 if ( pfb_lenpos + 3 > pfb_len + 2 )
1664 pfb_data[pfb_lenpos ] = (
FT_Byte)( len );
1665 pfb_data[pfb_lenpos + 1] = (
FT_Byte)( len >> 8 );
1666 pfb_data[pfb_lenpos + 2] = (
FT_Byte)( len >> 16 );
1667 pfb_data[pfb_lenpos + 3] = (
FT_Byte)( len >> 24 );
1703 FT_Long face_index_in_resource = 0;
1706 if ( face_index == -1 )
1708 if ( face_index >= resource_cnt )
1709 return FT_THROW( Cannot_Open_Resource );
1711 flag_offset = offsets[face_index];
1719 return FT_THROW( Cannot_Open_Resource );
1739 is_cff = rlen > 4 && !
ft_memcmp( sfnt_data,
"OTTO", 4 );
1743 face_index_in_resource,
1744 is_cff ?
"cff" :
"truetype",
1766 FT_Long map_offset, rdara_pos;
1772 &map_offset, &rdara_pos );
1777 map_offset, rdara_pos,
1779 &data_offsets, &count );
1782 error = Mac_Read_POST_Resource( library, stream, data_offsets, count,
1783 face_index, aface );
1787 (*aface)->num_faces = 1;
1792 map_offset, rdara_pos,
1794 &data_offsets, &count );
1800 error = Mac_Read_sfnt_Resource( library, stream, data_offsets, count,
1801 face_index_internal, aface );
1804 (*aface)->num_faces =
count;
1820 unsigned char header[128];
1825 if (
NULL == stream )
1826 return FT_THROW( Invalid_Stream_Operation );
1836 if ( header[ 0] != 0 ||
1842 header[2 + header[1]] != 0 )
1843 return FT_THROW( Unknown_File_Format );
1845 dlen = ( header[0x53] << 24 ) |
1846 ( header[0x54] << 16 ) |
1847 ( header[0x55] << 8 ) |
1850 rlen = ( header[0x57] << 24 ) |
1851 ( header[0x58] << 16 ) |
1852 ( header[0x59] << 8 ) |
1855 offset = 128 + ( ( dlen + 127 ) & ~127 );
1857 return IsMacResource( library, stream, offset, face_index, aface );
1865 load_face_in_embedded_rfork(
FT_Library library,
1873 #define FT_COMPONENT trace_raccess 1889 args->
pathname, file_names, offsets, errors );
1893 is_darwin_vfs = ft_raccess_rule_by_darwin_vfs( library, i );
1894 if ( is_darwin_vfs && vfs_rfork_has_no_font )
1896 FT_TRACE3((
"Skip rule %d: darwin vfs resource fork" 1897 " is already checked and" 1898 " no font is found\n", i ));
1904 FT_TRACE3((
"Error[%d] has occurred in rule %d\n", errors[i], i ));
1911 FT_TRACE3((
"Try rule %d: %s (offset=%d) ...",
1915 if ( is_darwin_vfs &&
FT_ERR_EQ( error, Cannot_Open_Stream ) )
1916 vfs_rfork_has_no_font =
TRUE;
1924 error = IsMacResource( library, stream2, offsets[i],
1925 face_index, aface );
1928 FT_TRACE3((
"%s\n", error ?
"failed":
"successful" ));
1932 else if ( is_darwin_vfs )
1933 vfs_rfork_has_no_font =
TRUE;
1938 if ( file_names[i] )
1944 error =
FT_ERR( Unknown_File_Format );
1949 #define FT_COMPONENT trace_objs 1972 error = IsMacBinary( library, stream, face_index, aface );
1973 if (
FT_ERR_EQ( error, Unknown_File_Format ) )
1977 #define FT_COMPONENT trace_raccess 1981 error = IsMacResource( library, stream, 0, face_index, aface );
1983 FT_TRACE3((
"%s\n", error ?
"failed" :
"successful" ));
1986 #define FT_COMPONENT trace_objs 1990 if ( (
FT_ERR_EQ( error, Unknown_File_Format ) ||
1991 FT_ERR_EQ( error, Invalid_Stream_Operation ) ) &&
1993 error = load_face_in_embedded_rfork( library, stream,
1994 face_index, aface, args );
2024 if ( ( !aface && face_index >= 0 ) || !args )
2025 return FT_THROW( Invalid_Argument );
2035 memory = library->
memory;
2056 error = open_face( driver, stream, face_index,
2057 num_params, params, &face );
2075 for ( ; cur <
limit; cur++ )
2092 error = open_face( driver, stream, face_index,
2093 num_params, params, &face );
2097 #ifdef FT_CONFIG_OPTION_MAC_FONTS 2098 if (
ft_strcmp( cur[0]->clazz->module_name,
"truetype" ) == 0 &&
2133 #if !defined( FT_MACINTOSH ) && defined( FT_CONFIG_OPTION_MAC_FONTS ) 2134 error = load_mac_face( library, stream, face_index, aface, args );
2159 FT_TRACE4((
"FT_Open_Face: New face object, adding to list\n" ));
2162 if ( external_stream )
2175 FT_TRACE4((
"FT_Open_Face: Creating glyph slot\n" ));
2177 if ( face_index >= 0 )
2188 FT_TRACE4((
"FT_Open_Face: Creating size object\n" ));
2234 internal->transform_matrix.xy = 0;
2235 internal->transform_matrix.yx = 0;
2236 internal->transform_matrix.yy = 0x10000L;
2238 internal->transform_delta.x = 0;
2239 internal->transform_delta.y = 0;
2241 internal->refcount = 1;
2265 const char* filepathname )
2272 if ( !filepathname )
2273 return FT_THROW( Invalid_Argument );
2277 open.
pathname = (
char*)filepathname;
2299 return FT_THROW( Invalid_Face_Handle );
2303 return FT_THROW( Invalid_Driver_Handle );
2313 clazz = driver->
clazz;
2319 (
FT_Bool)( parameters->stream &&
2350 if ( face && face->
driver )
2369 destroy_face( memory, face, driver );
2395 return FT_THROW( Invalid_Face_Handle );
2398 return FT_THROW( Invalid_Size_Handle );
2401 return FT_THROW( Invalid_Driver_Handle );
2406 clazz = driver->
clazz;
2453 return FT_THROW( Invalid_Size_Handle );
2457 return FT_THROW( Invalid_Face_Handle );
2461 return FT_THROW( Invalid_Driver_Handle );
2472 if ( face->
size == size )
2479 destroy_size( memory, size, driver );
2501 return FT_THROW( Invalid_Face_Handle );
2505 return FT_THROW( Unimplemented_Feature );
2510 if ( req->width && !req->height )
2512 else if ( !req->width && req->height )
2535 return FT_THROW( Invalid_Pixel_Size );
2549 if (
metrics->horiBearingY < 0 )
2554 else if (
metrics->horiBearingY > 0 )
2559 advance =
height * 12 / 10;
2563 metrics->vertAdvance = advance;
2568 ft_recompute_scaled_metrics(
FT_Face face,
2573 #ifdef GRID_FIT_METRICS 2622 ft_recompute_scaled_metrics( face, metrics );
2659 FT_Long w = 0,
h = 0, scaled_w = 0, scaled_h = 0;
2662 switch ( req->type )
2689 goto Calculate_Ppem;
2745 ft_recompute_scaled_metrics( face, metrics );
2778 return FT_THROW( Invalid_Face_Handle );
2781 return FT_THROW( Invalid_Argument );
2792 #ifdef FT_DEBUG_LEVEL_TRACE 2797 FT_TRACE5((
"FT_Select_Size (font driver's `select_size'):\n" ));
2831 return FT_THROW( Invalid_Face_Handle );
2833 if ( !req || req->width < 0 || req->height < 0 ||
2835 return FT_THROW( Invalid_Argument );
2846 #ifdef FT_DEBUG_LEVEL_TRACE 2851 FT_TRACE5((
"FT_Request_Size (font driver's `request_size'):\n" ));
2884 FT_TRACE3((
"FT_Request_Size: bitmap strike %lu matched\n",
2909 char_width = char_height;
2910 else if ( !char_height )
2911 char_height = char_width;
2913 if ( !horz_resolution )
2914 horz_resolution = vert_resolution;
2915 else if ( !vert_resolution )
2916 vert_resolution = horz_resolution;
2918 if ( char_width < 1 * 64 )
2919 char_width = 1 * 64;
2920 if ( char_height < 1 * 64 )
2921 char_height = 1 * 64;
2923 if ( !horz_resolution )
2924 horz_resolution = vert_resolution = 72;
2927 req.
width = char_width;
2928 req.
height = char_height;
2946 if ( pixel_width == 0 )
2947 pixel_width = pixel_height;
2948 else if ( pixel_height == 0 )
2949 pixel_height = pixel_width;
2951 if ( pixel_width < 1 )
2953 if ( pixel_height < 1 )
2957 if ( pixel_width >= 0xFFFFU )
2958 pixel_width = 0xFFFFU;
2959 if ( pixel_height >= 0xFFFFU )
2960 pixel_height = 0xFFFFU;
2963 req.
width = pixel_width << 6;
2964 req.
height = pixel_height << 6;
2986 return FT_THROW( Invalid_Face_Handle );
2989 return FT_THROW( Invalid_Argument );
3040 FT_Service_Kerning service;
3045 return FT_THROW( Invalid_Face_Handle );
3048 return FT_THROW( Invalid_Argument );
3052 return FT_THROW( Unimplemented_Feature );
3054 error = service->get_track( face,
3074 return FT_THROW( Invalid_Face_Handle );
3076 if ( encoding == FT_ENCODING_NONE )
3077 return FT_THROW( Invalid_Argument );
3083 if ( encoding == FT_ENCODING_UNICODE )
3084 return find_unicode_charmap( face );
3088 return FT_THROW( Invalid_CharMap_Handle );
3092 for ( ; cur <
limit; cur++ )
3094 if ( cur[0]->encoding == encoding )
3096 #ifdef FT_MAX_CHARMAP_CACHEABLE 3097 if ( cur - face->
charmaps > FT_MAX_CHARMAP_CACHEABLE )
3099 FT_ERROR((
"FT_Select_Charmap: requested charmap is found (%d), " 3100 "but in too late position to cache\n",
3110 return FT_THROW( Invalid_Argument );
3125 return FT_THROW( Invalid_Face_Handle );
3129 return FT_THROW( Invalid_CharMap_Handle );
3131 return FT_THROW( Invalid_Argument );
3135 for ( ; cur <
limit; cur++ )
3137 if ( cur[0] == charmap )
3139 #ifdef FT_MAX_CHARMAP_CACHEABLE 3140 if ( cur - face->
charmaps > FT_MAX_CHARMAP_CACHEABLE )
3142 FT_ERROR((
"FT_Set_Charmap: requested charmap is found (%d), " 3143 "but in too late position to cache\n",
3152 return FT_THROW( Invalid_Argument );
3164 if ( !charmap || !charmap->face )
3167 for (
i = 0;
i < charmap->face->num_charmaps;
i++ )
3168 if ( charmap->face->charmaps[
i] == charmap )
3173 #ifdef FT_MAX_CHARMAP_CACHEABLE 3174 if (
i > FT_MAX_CHARMAP_CACHEABLE )
3176 FT_ERROR((
"FT_Get_Charmap_Index: requested charmap is found (%d), " 3177 "but in too late position to cache\n",
3187 ft_cmap_done_internal(
FT_CMap cmap )
3195 clazz->
done( cmap );
3228 face->
charmaps[j - 1] = last_charmap;
3238 ft_cmap_done_internal( cmap );
3259 if ( clazz ==
NULL || charmap ==
NULL || charmap->face ==
NULL )
3260 return FT_THROW( Invalid_Argument );
3262 face = charmap->face;
3265 if ( !
FT_ALLOC( cmap, clazz->size ) )
3268 cmap->
clazz = clazz;
3272 error = clazz->init( cmap, init_data );
3293 ft_cmap_done_internal( cmap );
3313 if ( charcode > 0xFFFFFFFFUL )
3315 FT_TRACE1((
"FT_Get_Char_Index: too large charcode" ));
3316 FT_TRACE1((
" 0x%x is truncated\n", charcode ));
3369 result = ( gindex == 0 ) ? 0 : code;
3392 FT_CharMap charmap = find_variant_selector_charmap( face );
3396 if ( charmap !=
NULL )
3401 if ( charcode > 0xFFFFFFFFUL )
3403 FT_TRACE1((
"FT_Get_Char_Index: too large charcode" ));
3404 FT_TRACE1((
" 0x%x is truncated\n", charcode ));
3406 if ( variantSelector > 0xFFFFFFFFUL )
3408 FT_TRACE1((
"FT_Get_Char_Index: too large variantSelector" ));
3409 FT_TRACE1((
" 0x%x is truncated\n", variantSelector ));
3434 FT_CharMap charmap = find_variant_selector_charmap( face );
3437 if ( charmap !=
NULL )
3442 if ( charcode > 0xFFFFFFFFUL )
3444 FT_TRACE1((
"FT_Get_Char_Index: too large charcode" ));
3445 FT_TRACE1((
" 0x%x is truncated\n", charcode ));
3447 if ( variantSelector > 0xFFFFFFFFUL )
3449 FT_TRACE1((
"FT_Get_Char_Index: too large variantSelector" ));
3450 FT_TRACE1((
" 0x%x is truncated\n", variantSelector ));
3473 FT_CharMap charmap = find_variant_selector_charmap( face );
3476 if ( charmap !=
NULL )
3501 FT_CharMap charmap = find_variant_selector_charmap( face );
3504 if ( charmap !=
NULL )
3510 if ( charcode > 0xFFFFFFFFUL )
3512 FT_TRACE1((
"FT_Get_Char_Index: too large charcode" ));
3513 FT_TRACE1((
" 0x%x is truncated\n", charcode ));
3535 FT_CharMap charmap = find_variant_selector_charmap( face );
3538 if ( charmap !=
NULL )
3544 if ( variantSelector > 0xFFFFFFFFUL )
3546 FT_TRACE1((
"FT_Get_Char_Index: too large variantSelector" ));
3547 FT_TRACE1((
" 0x%x is truncated\n", variantSelector ));
3570 FT_Service_GlyphDict service;
3577 if ( service && service->name_index )
3578 result = service->name_index( face, glyph_name );
3597 if (
buffer && buffer_max > 0 )
3604 FT_Service_GlyphDict service;
3611 if ( service && service->get_name )
3612 error = service->get_name( face, glyph_index,
buffer, buffer_max );
3632 FT_Service_PsFontName service;
3637 POSTSCRIPT_FONT_NAME );
3639 if ( service && service->get_ps_font_name )
3640 result = service->get_ps_font_name( face );
3655 FT_Service_SFNT_Table service;
3661 if ( service !=
NULL )
3662 table = service->get_table( face, tag );
3678 FT_Service_SFNT_Table service;
3682 return FT_THROW( Invalid_Face_Handle );
3685 if ( service ==
NULL )
3686 return FT_THROW( Unimplemented_Feature );
3700 FT_Service_SFNT_Table service;
3705 return FT_THROW( Invalid_Face_Handle );
3708 if ( service ==
NULL )
3709 return FT_THROW( Unimplemented_Feature );
3711 return service->table_info( face, table_index, tag, &
offset,
length );
3720 FT_Service_TTCMaps service;
3725 if ( !charmap || !charmap->face )
3728 face = charmap->face;
3730 if ( service ==
NULL )
3732 if ( service->get_cmap_info( charmap, &cmap_info ))
3744 FT_Service_TTCMaps service;
3749 if ( !charmap || !charmap->face )
3752 face = charmap->face;
3754 if ( service ==
NULL )
3756 if ( service->get_cmap_info( charmap, &cmap_info ))
3772 return FT_THROW( Invalid_Argument );
3776 return FT_THROW( Invalid_Argument );
3816 cur = (*node)->
next;
3857 ft_set_current_renderer(
FT_Library library )
3884 render->
clazz = clazz;
3900 node->
data = module;
3903 ft_set_current_renderer( library );
3938 ft_set_current_renderer( library );
3968 return FT_THROW( Invalid_Library_Handle );
3971 return FT_THROW( Invalid_Argument );
3985 if ( num_params > 0 )
3990 for ( ; num_params > 0; num_params-- )
3992 error = set_mode( renderer, parameters->tag, parameters->data );
4016 case FT_GLYPH_FORMAT_BITMAP:
4054 if ( !
error && update && renderer )
4059 #ifdef FT_DEBUG_LEVEL_TRACE 4062 #define FT_COMPONENT trace_bitmap 4076 unsigned char md5[16];
4084 FT_TRACE3((
"MD5 checksum for %dx%d bitmap:\n" 4087 for ( i = 0; i < 16; i++ )
4096 #define FT_COMPONENT trace_objs 4113 if ( !slot || !slot->
face )
4114 return FT_THROW( Invalid_Argument );
4163 ft_remove_renderer( module );
4190 #define FREETYPE_VER_FIXED ( ( (FT_Long)FREETYPE_MAJOR << 16 ) | \ 4194 return FT_THROW( Invalid_Library_Handle );
4197 return FT_THROW( Invalid_Argument );
4201 return FT_THROW( Invalid_Version );
4206 module = library->
modules[nn];
4211 return FT_THROW( Lower_Module_Version );
4220 memory = library->
memory;
4230 if (
FT_ALLOC( module, clazz->module_size ) )
4243 error = ft_add_renderer( module );
4268 if ( clazz->module_init )
4270 error = clazz->module_init( module );
4310 const char* module_name )
4317 if ( !library || !module_name )
4323 for ( ; cur <
limit; cur++ )
4324 if (
ft_strcmp( cur[0]->clazz->module_name, module_name ) == 0 )
4338 const char* mod_name )
4353 const char* service_id )
4366 if ( result ==
NULL )
4374 for ( ; cur <
limit; cur++ )
4376 if ( cur[0] != module )
4380 if ( cur[0]->clazz->get_interface )
4383 if ( result !=
NULL )
4404 return FT_THROW( Invalid_Library_Handle );
4412 for ( ; cur <
limit; cur++ )
4414 if ( cur[0] == module )
4419 while ( cur < limit )
4427 Destroy_Module( module );
4433 return FT_THROW( Invalid_Driver_Handle );
4448 FT_Service_Properties service;
4450 #ifdef FT_DEBUG_LEVEL_ERROR 4451 const FT_String* set_name =
"FT_Property_Set";
4452 const FT_String* get_name =
"FT_Property_Get";
4453 const FT_String* func_name =
set ? set_name : get_name;
4460 return FT_THROW( Invalid_Library_Handle );
4462 if ( !module_name || !property_name || !value )
4463 return FT_THROW( Invalid_Argument );
4469 for ( ; cur <
limit; cur++ )
4470 if ( !
ft_strcmp( cur[0]->clazz->module_name, module_name ) )
4475 FT_ERROR((
"%s: can't find module `%s'\n",
4476 func_name, module_name ));
4481 if ( !cur[0]->clazz->get_interface )
4483 FT_ERROR((
"%s: module `%s' doesn't support properties\n",
4484 func_name, module_name ));
4485 return FT_THROW( Unimplemented_Feature );
4489 interface = cur[0]->clazz->get_interface( cur[0],
4490 FT_SERVICE_ID_PROPERTIES );
4493 FT_ERROR((
"%s: module `%s' doesn't support properties\n",
4494 func_name, module_name ));
4495 return FT_THROW( Unimplemented_Feature );
4498 service = (FT_Service_Properties)interface;
4501 missing_func = !service->set_property;
4503 missing_func = !service->get_property;
4507 FT_ERROR((
"%s: property service of module `%s' is broken\n",
4508 func_name, module_name ));
4509 return FT_THROW( Unimplemented_Feature );
4512 return set ? service->set_property( cur[0], property_name, value )
4513 : service->get_property( cur[0], property_name, value );
4584 return FT_THROW( Invalid_Argument );
4586 #ifdef FT_DEBUG_LEVEL_ERROR 4595 library->
memory = memory;
4597 #ifdef FT_CONFIG_OPTION_PIC 4599 error = ft_pic_container_init( library );
4606 #if FT_RENDER_POOL_SIZE > 0 4623 #ifdef FT_CONFIG_OPTION_PIC 4624 ft_pic_container_destroy( library );
4671 return FT_THROW( Invalid_Library_Handle );
4677 memory = library->
memory;
4697 const char* driver_name[] = {
"type42",
NULL };
4701 m <
sizeof ( driver_name ) /
sizeof ( driver_name[0] );
4711 if ( driver_name[m] &&
4712 ft_strcmp( module_name, driver_name[m] ) != 0 )
4718 FT_TRACE7((
"FT_Done_Library: close faces for %s\n", module_name ));
4720 faces = &
FT_DRIVER( module )->faces_list;
4721 while ( faces->
head )
4725 FT_TRACE0((
"FT_Done_Library: failed to free some faces\n" ));
4751 Destroy_Module( module );
4762 #ifdef FT_CONFIG_OPTION_PIC 4764 ft_pic_container_destroy( library );
4781 if ( library && debug_hook &&
4803 FT_Service_TrueTypeEngine service;
4806 service = (FT_Service_TrueTypeEngine)
4810 result = service->engine_type;
4818 #ifdef FT_CONFIG_OPTION_OLD_INTERNALS 4821 ft_stub_set_char_sizes(
FT_Size size,
4837 if ( horz_res == 0 )
4838 horz_res = vert_res;
4840 if ( vert_res == 0 )
4841 vert_res = horz_res;
4843 if ( horz_res == 0 )
4844 horz_res = vert_res = 72;
4857 ft_stub_set_pixel_sizes(
FT_Size size,
4869 req.
height = height << 6;
4898 glyph->format == FT_GLYPH_FORMAT_COMPOSITE &&
4899 sub_index < glyph->num_subglyphs )
4904 *p_index = subg->
index;
4905 *p_flags = subg->
flags;
4906 *p_arg1 = subg->
arg1;
4907 *p_arg2 = subg->
arg2;
GLenum GLuint GLenum GLsizei length
void(* FT_DebugHook_Func)(void *arg)
const FT_Byte * memory_base
#define FT_ALLOC(ptr, size)
GLint GLint GLsizei GLsizei height
ft_validator_init(FT_Validator valid, const FT_Byte *base, const FT_Byte *limit, FT_ValidationLevel level)
#define FREETYPE_VER_FIXED
FT_Module_Destructor module_done
#define FT_LOAD_VERTICAL_LAYOUT
FT_DivFix(FT_Long a, FT_Long b)
FT_ULong raster_pool_size
FT_Raster_Render_Func raster_render
FT_Raccess_Get_DataOffsets(FT_Library library, FT_Stream stream, FT_Long map_offset, FT_Long rdata_pos, FT_Long tag, FT_Long **offsets, FT_Long *count)
FT_BEGIN_HEADER FT_Bitmap_New(FT_Bitmap *abitmap)
ft_validator_run(FT_Validator valid)
FT_Stream_Seek(FT_Stream stream, FT_ULong pos)
#define FT_LOAD_SBITS_ONLY
FT_Size_InitFunc init_size
FT_BEGIN_HEADER typedef signed long FT_Pos
FT_Renderer_RenderFunc render
FT_Set_Char_Size(FT_Face face, FT_F26Dot6 char_width, FT_F26Dot6 char_height, FT_UInt horz_resolution, FT_UInt vert_resolution)
FT_Lookup_Renderer(FT_Library library, FT_Glyph_Format format, FT_ListNode *node)
FT_CMap_CharVarIndexFunc char_var_index
FT_Done_Library(FT_Library library)
FT_Generic_Finalizer finalizer
ft_glyphslot_alloc_bitmap(FT_GlyphSlot slot, FT_ULong size)
FT_Get_Next_Char(FT_Face face, FT_ULong charcode, FT_UInt *agindex)
FT_SERVICE_ID_TRUETYPE_ENGINE
FT_Face_GetCharsOfVariant(FT_Face face, FT_ULong variantSelector)
FT_Glyph_Format glyph_format
FT_Error FT_Property_Get(FT_Library library, const FT_String *module_name, const FT_String *property_name, void *value)
FT_Attach_Stream(FT_Face face, FT_Open_Args *parameters)
#define FT_REQUEST_HEIGHT(req)
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_Slot_DoneFunc done_slot
enum FT_Render_Mode_ FT_Render_Mode
enum FT_ValidationLevel_ FT_ValidationLevel
FT_New_GlyphSlot(FT_Face face, FT_GlyphSlot *aslot)
void MD5_Update(MD5_CTX *ctx, void *data, unsigned long size)
GLfloat GLfloat GLfloat GLfloat h
#define FT_LOAD_NO_HINTING
FT_List_Finalize(FT_List list, FT_List_Destructor destroy, FT_Memory memory, void *user)
return FT_THROW(Missing_Property)
FT_Get_Charmap_Index(FT_CharMap charmap)
void MD5_Init(MD5_CTX *ctx)
void(* FT_Stream_CloseFunc)(FT_Stream stream)
void(* FT_List_Destructor)(FT_Memory memory, void *data, void *user)
FT_Select_Size(FT_Face face, FT_Int strike_index)
#define FT_DRIVER_HAS_HINTER(x)
FT_List_Remove(FT_List list, FT_ListNode node)
FT_Get_Renderer(FT_Library library, FT_Glyph_Format format)
#define FT_LOAD_NO_RECURSE
FT_Load_Sfnt_Table(FT_Face face, FT_ULong tag, FT_Long offset, FT_Byte *buffer, FT_ULong *length)
FT_Bitmap_Size * available_sizes
GLint GLint GLsizei width
FT_Render_Glyph_Internal(FT_Library library, FT_GlyphSlot slot, FT_Render_Mode render_mode)
FT_Stream_Pos(FT_Stream stream)
FT_Bitmap_Done(FT_Library library, FT_Bitmap *bitmap)
FT_Fixed linearHoriAdvance
FT_GlyphLoader_New(FT_Memory memory, FT_GlyphLoader *aloader)
FT_New_Library(FT_Memory memory, FT_Library *alibrary)
FT_Done_Face(FT_Face face)
#define FT_PARAM_TAG_INCREMENTAL
#define FT_READ_USHORT(var)
FT_Stream_Close(FT_Stream stream)
typedef void(APIENTRY *GLDEBUGPROCARB)(GLenum source
#define TT_PLATFORM_MICROSOFT
FT_Set_Pixel_Sizes(FT_Face face, FT_UInt pixel_width, FT_UInt pixel_height)
#define FT_DRIVER_USES_OUTLINES(x)
#define FT_GLYPH_OWN_BITMAP
FT_BEGIN_HEADER open_face_PS_from_sfnt_stream(FT_Library library, FT_Stream stream, FT_Long face_index, FT_Int num_params, FT_Parameter *params, FT_Face *aface)
ft_module_get_service(FT_Module module, const char *service_id)
FT_Get_First_Char(FT_Face face, FT_UInt *agindex)
FT_BEGIN_HEADER typedef unsigned char FT_Bool
#define FT_LOAD_LINEAR_DESIGN
FT_Face_Internal internal
FT_Short max_advance_height
#define FT_TRACE1(varformat)
GLenum GLuint GLint GLenum face
open_face_from_buffer(FT_Library library, FT_Byte *base, FT_ULong size, FT_Long face_index, const char *driver_name, FT_Face *aface)
FT_Reference_Face(FT_Face face)
FT_Select_Metrics(FT_Face face, FT_ULong strike_index)
FT_Size_SelectFunc select_size
FT_Get_Glyph_Name(FT_Face face, FT_UInt glyph_index, FT_Pointer buffer, FT_UInt buffer_max)
#define FT_ERROR(varformat)
FT_Renderer_RenderFunc render_glyph
#define FT_ASSERT(condition)
FT_CMap_CharIndexFunc char_index
enum FT_Sfnt_Tag_ FT_Sfnt_Tag
FT_Get_Name_Index(FT_Face face, FT_String *glyph_name)
FT_Error FT_Property_Set(FT_Library library, const FT_String *module_name, const FT_String *property_name, const void *value)
FT_CMap_VariantListFunc variant_list
FT_Size_Internal internal
#define FT_TRACE4(varformat)
ft_service_list_lookup(FT_ServiceDesc service_descriptors, const char *service_id)
#define FT_RACCESS_N_RULES
FT_Slot_InitFunc init_slot
FT_Stream_Open(FT_Stream stream, const char *filepathname)
FT_Bitmap_Convert(FT_Library library, const FT_Bitmap *source, FT_Bitmap *target, FT_Int alignment)
FT_CMap_CharVariantListFunc charvariant_list
#define FT_FACE_LOOKUP_SERVICE(face, ptr, id)
ft_validator_error(FT_Validator valid, FT_Error error)
FT_Face_GetVariantSelectors(FT_Face face)
#define FT_LOAD_FORCE_AUTOHINT
#define FT_MODULE_IS_DRIVER(x)
#define TT_APPLE_ID_VARIANT_SELECTOR
#define FT_REQUEST_WIDTH(req)
FT_Outline_Transform(const FT_Outline *outline, const FT_Matrix *matrix)
#define FT_STREAM_SKIP(distance)
FT_List_Up(FT_List list, FT_ListNode node)
FT_Raster_Funcs * raster_class
FT_GlyphLoader_Done(FT_GlyphLoader loader)
FT_Render_Glyph(FT_GlyphSlot slot, FT_Render_Mode render_mode)
struct TT_FaceRec_ * TT_Face
FT_Stream_Read(FT_Stream stream, FT_Byte *buffer, FT_ULong count)
FT_Face_GetVariantsOfChar(FT_Face face, FT_ULong charcode)
TT_MaxProfile max_profile
FT_Raster_DoneFunc raster_done
#define FT_DRIVER_IS_SCALABLE(x)
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
FT_CMap_New(FT_CMap_Class clazz, FT_Pointer init_data, FT_CharMap charmap, FT_CMap *acmap)
FT_Incremental_InterfaceRec * FT_Incremental_Interface
FT_New_Size(FT_Face face, FT_Size *asize)
#define FT_READ_ULONG(var)
GLsizei GLsizei GLenum GLenum const GLvoid * data
FT_Renderer_TransformFunc transform_glyph
#define FT_HAS_FIXED_SIZES(face)
FT_BEGIN_HEADER FT_List_Find(FT_List list, void *data)
FT_GlyphLoader glyph_loader
#define FT_IS_TRICKY(face)
FT_Face_GetKerningFunc get_kerning
FT_Pointer FT_Module_Interface
typedefFT_BEGIN_HEADER struct FT_ValidatorRec_ volatile * FT_Validator
FT_Size_DoneFunc done_size
FT_Error ft_property_do(FT_Library library, const FT_String *module_name, const FT_String *property_name, void *value, FT_Bool set)
FT_UShort maxSizeOfInstructions
const void * module_interface
FT_Stream_CloseFunc close
struct FT_AutoHinter_InterfaceRec_ * FT_AutoHinter_Interface
#define FT_TRACE7(varformat)
FT_Get_Kerning(FT_Face face, FT_UInt left_glyph, FT_UInt right_glyph, FT_UInt kern_mode, FT_Vector *akerning)
FT_Get_Track_Kerning(FT_Face face, FT_Fixed point_size, FT_Int degree, FT_Fixed *akerning)
#define FT_RENEW_ARRAY(ptr, curcnt, newcnt)
#define FT_FACE_FLAG_EXTERNAL_STREAM
FT_Set_Transform(FT_Face face, FT_Matrix *matrix, FT_Vector *delta)
FT_DebugHook_Func debug_hooks[4]
#define FT_READ_LONG(var)
#define FT_MODULE_FONT_DRIVER
#define TT_APPLE_ID_UNICODE_32
enum FT_TrueTypeEngineType_ FT_TrueTypeEngineType
enum FT_Encoding_ FT_Encoding
FT_Load_Char(FT_Face face, FT_ULong char_code, FT_Int32 load_flags)
#define FT_LOAD_MONOCHROME
GLsizei const GLfloat * value
FT_Slot_LoadFunc load_glyph
FT_Done_Size(FT_Size size)
ft_glyphslot_free_bitmap(FT_GlyphSlot slot)
FT_Face_GetCharVariantIsDefault(FT_Face face, FT_ULong charcode, FT_ULong variantSelector)
#define FT_HAS_GLYPH_NAMES(face)
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
FT_List_Add(FT_List list, FT_ListNode node)
FT_Glyph_Format glyph_format
FT_Select_Charmap(FT_Face face, FT_Encoding encoding)
FT_Size_RequestFunc request_size
FT_Done_GlyphSlot(FT_GlyphSlot slot)
ft_synthesize_vertical_metrics(FT_Glyph_Metrics *metrics, FT_Pos advance)
FT_Face_DoneFunc done_face
FT_Size_Request_Type type
FT_MulFix(FT_Long a, FT_Long b)
FT_Outline_Check(FT_Outline *outline)
#define FT_HAS_VERTICAL(face)
if(!abbox) return FT_THROW(Invalid_Argument)
#define FT_TRACE3(varformat)
FT_Request_Size(FT_Face face, FT_Size_Request req)
#define FT_RENDER_POOL_SIZE
#define FT_FACE_MEMORY(x)
FT_Get_TrueType_Engine_Type(FT_Library library)
void MD5_Final(unsigned char *result, MD5_CTX *ctx)
FT_Open_Face(FT_Library library, const FT_Open_Args *args, FT_Long face_index, FT_Face *aface)
FT_Get_Module_Interface(FT_Library library, const char *mod_name)
GLenum const GLfloat * params
FT_Stream_Free(FT_Stream stream, FT_Int external)
const FT_String * module_name
FT_Set_Debug_Hook(FT_Library library, FT_UInt hook_index, FT_DebugHook_Func debug_hook)
FT_AutoHinter_GlyphLoadFunc load_glyph
FT_Error(* FT_Renderer_SetModeFunc)(FT_Renderer renderer, FT_ULong mode_tag, FT_Pointer mode_ptr)
GLubyte GLubyte GLubyte GLubyte w
FT_Vector_Transform(FT_Vector *vec, const FT_Matrix *matrix)
FT_BEGIN_HEADER struct FT_Glyph_Metrics_ FT_Glyph_Metrics
FT_Face_AttachFunc attach_file
FT_Get_CMap_Language_ID(FT_CharMap charmap)
FT_Reference_Library(FT_Library library)
int open(const char *name, int flags, int mode)
FT_Set_Renderer(FT_Library library, FT_Renderer renderer, FT_UInt num_params, FT_Parameter *parameters)
struct FT_SizeRec_ * FT_Size
#define FT_MODULE_IS_RENDERER(x)
enum FT_Glyph_Format_ FT_Glyph_Format
FT_Slot_Internal internal
FT_Activate_Size(FT_Size size)
struct FT_Driver_ClassRec_ * FT_Driver_Class
FT_Raster_RenderFunc raster_render
#define FT_TRACE5(varformat)
typedefFT_BEGIN_HEADER struct FT_AutoHinterRec_ * FT_AutoHinter
#define FT_LOAD_NO_AUTOHINT
FT_Get_CMap_Format(FT_CharMap charmap)
FT_Load_Glyph(FT_Face face, FT_UInt glyph_index, FT_Int32 load_flags)
#define FT_MODULE_IS_HINTER(x)
FT_Fixed linearVertAdvance
FT_Face_GetCharVariantIndex(FT_Face face, FT_ULong charcode, FT_ULong variantSelector)
FT_Match_Size(FT_Face face, FT_Size_Request req, FT_Bool ignore_width, FT_ULong *size_index)
FT_Face_InitFunc init_face
FT_Outline_Translate(const FT_Outline *outline, FT_Pos xOffset, FT_Pos yOffset)
FT_Stream_OpenMemory(FT_Stream stream, const FT_Byte *base, FT_ULong size)
#define TT_PLATFORM_APPLE_UNICODE
GLuint GLuint GLsizei count
FT_Get_Postscript_Name(FT_Face face)
FT_CMap_Done(FT_CMap cmap)
FT_Get_Sfnt_Table(FT_Face face, FT_Sfnt_Tag tag)
FT_Add_Module(FT_Library library, const FT_Module_Class *clazz)
FT_Raster_NewFunc raster_new
FT_Sfnt_Table_Info(FT_Face face, FT_UInt table_index, FT_ULong *tag, FT_ULong *length)
FT_Matrix transform_matrix
FT_Request_Metrics(FT_Face face, FT_Size_Request req)
const char * property_name
FT_Library_Version(FT_Library library, FT_Int *amajor, FT_Int *aminor, FT_Int *apatch)
FT_TRACE0(("cff_property_set: missing property `%s'\, property_name))
ft_glyphslot_set_bitmap(FT_GlyphSlot slot, FT_Byte *buffer)
GLsizei GLenum const GLvoid GLuint GLsizei GLfloat * metrics
FT_Renderer_Class * clazz
#define FT_LOAD_NO_BITMAP
FT_CMap_CharNextFunc char_next
FT_Get_Char_Index(FT_Face face, FT_ULong charcode)
#define FT_FACE_FIND_SERVICE(face, ptr, id)
#define FT_LOAD_IGNORE_TRANSFORM
#define FT_FACE_LIBRARY(x)
GLenum GLsizei GLenum GLenum const GLvoid * table
FT_New_Memory_Face(FT_Library library, const FT_Byte *file_base, FT_Long file_size, FT_Long face_index, FT_Face *aface)
FT_Get_Module(FT_Library library, const char *module_name)
FT_CMap_VariantCharListFunc variantchar_list
struct FT_CharMapRec_ * FT_CharMap
#define FT_IS_SCALABLE(face)
FT_Stream_New(FT_Library library, const FT_Open_Args *args, FT_Stream *astream)
FT_Module_Requester get_interface
FT_Set_Charmap(FT_Face face, FT_CharMap charmap)
FT_Short max_advance_width
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
FT_Attach_File(FT_Face face, const char *filepathname)
FT_Module_Constructor FT_GLYPH_FORMAT_OUTLINE
FT_Module modules[FT_MAX_MODULES]
FT_CMap_CharVarIsDefaultFunc char_var_default
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)
FT_New_Face(FT_Library library, const char *pathname, FT_Long face_index, FT_Face *aface)
#define FT_LOAD_TARGET_MODE(x)
FT_Remove_Module(FT_Library library, FT_Module module)