29#include FT_INTERNAL_DEBUG_H
30#include FT_INTERNAL_STREAM_H
31#include FT_INTERNAL_OBJECTS_H
33#include FT_TRUETYPE_IDS_H
35#include FT_SERVICE_BDF_H
36#include FT_SERVICE_FONT_FORMAT_H
51#define FT_COMPONENT bdfdriver
109 if ( mid >
max || mid <
min )
112 code = encodings[mid].enc;
114 if ( charcode ==
code )
118 result = encodings[mid].glyph + 1;
122 if ( charcode <
code )
128 mid += charcode -
code;
137 FT_UInt32 *acharcode )
155 if ( mid >
max || mid <
min )
158 code = encodings[mid].enc;
160 if ( charcode ==
code )
164 result = encodings[mid].glyph + 1;
168 if ( charcode <
code )
174 mid += charcode -
code;
178 if ( min < cmap->num_encodings )
180 charcode = encodings[
min].enc;
185 if ( charcode > 0xFFFFFFFFUL )
187 FT_TRACE1((
"bdf_cmap_char_next: charcode 0x%x > 32bit API" ));
192 *acharcode = (FT_UInt32)charcode;
223 face->style_flags = 0;
258 for (
len = 0, nn = 0; nn < 4; nn++ )
270 strings[0] = (
char *)
"Regular";
282 s =
face->style_name;
284 for ( nn = 0; nn < 4; nn++ )
295 if (
s !=
face->style_name )
302 if ( nn == 0 || nn == 3 )
307 for ( mm = 0; mm <
len; mm++ )
339 FT_FREE( bdfface->family_name );
340 FT_FREE( bdfface->style_name );
342 FT_FREE( bdfface->available_sizes );
394 if ( face_index > 0 && ( face_index & 0xFFFF ) > 0 )
396 FT_ERROR((
"BDF_Face_Init: invalid face index\n" ));
398 return FT_THROW( Invalid_Argument );
405 FT_TRACE4((
" number of glyphs: allocated %d (used %d)\n",
407 font->glyphs_used ));
408 FT_TRACE4((
" number of unencoded glyphs: allocated %d (used %d)\n",
409 font->unencoded_size,
410 font->unencoded_used ));
412 bdfface->num_faces = 1;
413 bdfface->face_index = 0;
435 bdfface->family_name =
NULL;
442 bdfface->num_glyphs = (
FT_Long)(
font->glyphs_size + 1 );
444 bdfface->num_fixed_sizes = 1;
450 FT_Short resolution_x = 0, resolution_y = 0;
457 if (
font->font_ascent > 0x7FFF ||
font->font_ascent < -0x7FFF )
459 font->font_ascent =
font->font_ascent < 0 ? -0x7FFF : 0x7FFF;
460 FT_TRACE0((
"BDF_Face_Init: clamping font ascent to value %d\n",
461 font->font_ascent ));
463 if (
font->font_descent > 0x7FFF ||
font->font_descent < -0x7FFF )
465 font->font_descent =
font->font_descent < 0 ? -0x7FFF : 0x7FFF;
466 FT_TRACE0((
"BDF_Face_Init: clamping font descent to value %d\n",
467 font->font_descent ));
475#ifdef FT_DEBUG_LEVEL_TRACE
477 FT_TRACE0((
"BDF_Face_Init: negative average width\n" ));
479 if ( prop->
value.
l > 0x7FFFL * 10 - 5 ||
480 prop->
value.
l < -( 0x7FFFL * 10 - 5 ) )
482 bsize->
width = 0x7FFF;
483 FT_TRACE0((
"BDF_Face_Init: clamping average width to value %d\n",
498#ifdef FT_DEBUG_LEVEL_TRACE
500 FT_TRACE0((
"BDF_Face_Init: negative point size\n" ));
503 if ( prop->
value.
l > 0x504C2L ||
504 prop->
value.
l < -0x504C2L )
506 bsize->
size = 0x7FFF;
507 FT_TRACE0((
"BDF_Face_Init: clamping point size to value %d\n",
515 else if (
font->point_size )
517 if (
font->point_size > 0x7FFF )
519 bsize->
size = 0x7FFF;
520 FT_TRACE0((
"BDF_Face_Init: clamping point size to value %d\n",
535#ifdef FT_DEBUG_LEVEL_TRACE
537 FT_TRACE0((
"BDF_Face_Init: negative pixel size\n" ));
539 if ( prop->
value.
l > 0x7FFF || prop->
value.
l < -0x7FFF )
541 bsize->
y_ppem = 0x7FFF << 6;
542 FT_TRACE0((
"BDF_Face_Init: clamping pixel size to value %d\n",
556#ifdef FT_DEBUG_LEVEL_TRACE
558 FT_TRACE0((
"BDF_Face_Init: negative X resolution\n" ));
562 resolution_x = 0x7FFF;
563 FT_TRACE0((
"BDF_Face_Init: clamping X resolution to value %d\n",
577#ifdef FT_DEBUG_LEVEL_TRACE
579 FT_TRACE0((
"BDF_Face_Init: negative Y resolution\n" ));
583 resolution_y = 0x7FFF;
584 FT_TRACE0((
"BDF_Face_Init: clamping Y resolution to value %d\n",
597 if ( resolution_x && resolution_y )
614 face->default_glyph = 0;
615 for (
n = 0;
n <
font->glyphs_size;
n++ )
627 " idx %d is too large for this system\n",
n ));
642 if ( charset_registry && charset_encoding )
660 s =
face->charset_registry;
661 if ( (
s[0] ==
'i' ||
s[0] ==
'I' ) &&
662 (
s[1] ==
's' ||
s[1] ==
'S' ) &&
663 (
s[2] ==
'o' ||
s[2] ==
'O' ) )
681 charmap.
encoding = FT_ENCODING_NONE;
686 if ( unicode_charmap )
688 charmap.
encoding = FT_ENCODING_UNICODE;
707 charmap.
encoding = FT_ENCODING_ADOBE_STANDARD;
714 if ( bdfface->num_charmaps )
715 bdfface->charmap = bdfface->charmaps[0];
725 return FT_THROW( Unknown_File_Format );
790 FT_Int32 load_flags )
814 FT_TRACE1((
"BDF_Glyph_Load: glyph index %d\n", glyph_index ));
817 if ( glyph_index == 0 )
828 FT_TRACE1((
"BDF_Glyph_Load: too large pitch %d is truncated\n",
853 slot->format = FT_GLYPH_FORMAT_BITMAP;
883 const char* prop_name,
902 if ( prop->
value.
l > 0x7FFFFFFFL || prop->
value.
l < ( -1 - 0x7FFFFFFFL ) )
905 " too large integer 0x%x is truncated\n" ));
915 " too large cardinal 0x%x is truncated\n" ));
928 return FT_THROW( Invalid_Argument );
934 const char* *acharset_encoding,
935 const char* *acharset_registry )
937 *acharset_encoding =
face->charset_encoding;
938 *acharset_registry =
face->charset_registry;
bdf_get_font_property(bdf_font_t *font, const char *name)
bdf_free_font(bdf_font_t *font)
bdf_load_font(FT_Stream stream, FT_Memory memory, bdf_options_t *opts, bdf_font_t **font)
BDF_Face_Init(FT_Stream stream, FT_Face bdfface, FT_Int face_index, FT_Int num_params, FT_Parameter *params)
bdf_cmap_char_index(FT_CMap bdfcmap, FT_UInt32 charcode)
bdf_cmap_init(FT_CMap bdfcmap, FT_Pointer init_data)
BDF_Face_Done(FT_Face bdfface)
bdf_driver_requester(FT_Module module, const char *name)
BDF_Size_Request(FT_Size size, FT_Size_Request req)
static FT_Error bdf_interpret_style(BDF_Face bdf)
FT_CALLBACK_TABLE_DEF const FT_Driver_ClassRec bdf_driver_class
static const FT_ServiceDescRec bdf_services[]
bdf_cmap_done(FT_CMap bdfcmap)
BDF_Glyph_Load(FT_GlyphSlot slot, FT_Size size, FT_UInt glyph_index, FT_Int32 load_flags)
static const FT_CMap_ClassRec bdf_cmap_class
struct BDF_CMapRec_ * BDF_CMap
BDF_Size_Select(FT_Size size, FT_ULong strike_index)
static FT_Error bdf_get_bdf_property(BDF_Face face, const char *prop_name, BDF_PropertyRec *aproperty)
static FT_Error bdf_get_charset_id(BDF_Face face, const char **acharset_encoding, const char **acharset_registry)
bdf_cmap_char_next(FT_CMap bdfcmap, FT_UInt32 *acharcode)
struct BDF_CMapRec_ BDF_CMapRec
static const FT_Service_BDFRec bdf_service_bdf
struct BDF_FaceRec_ BDF_FaceRec
struct BDF_FaceRec_ * BDF_Face
FT_BEGIN_HEADER struct BDF_encoding_el_ BDF_encoding_el
#define TT_MS_ID_UNICODE_CS
#define TT_PLATFORM_MICROSOFT
#define TT_APPLE_ID_DEFAULT
#define TT_PLATFORM_APPLE_UNICODE
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
#define FT_STYLE_FLAG_ITALIC
#define FT_FACE_FLAG_FIXED_SIZES
@ FT_SIZE_REQUEST_TYPE_NOMINAL
@ FT_SIZE_REQUEST_TYPE_REAL_DIM
#define FT_FACE_FLAG_FIXED_WIDTH
struct FT_GlyphSlotRec_ FT_GlyphSlotRec
#define FT_STYLE_FLAG_BOLD
#define FT_FACE_FLAG_HORIZONTAL
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
@ BDF_PROPERTY_TYPE_CARDINAL
@ BDF_PROPERTY_TYPE_INTEGER
#define FT_CALLBACK_DEF(x)
#define FT_CALLBACK_TABLE_DEF
#define FT_ASSERT(condition)
#define FT_TRACE0(varformat)
#define FT_ERROR(varformat)
#define FT_TRACE2(varformat)
#define FT_TRACE1(varformat)
#define FT_TRACE4(varformat)
FT_BEGIN_HEADER typedef signed long FT_Pos
#define FT_NEW_ARRAY(ptr, count)
#define FT_STRDUP(dst, str)
#define FT_SET_ERROR(expression)
#define FT_ALLOC(ptr, size)
#define FT_MODULE_FONT_DRIVER
#define FT_MODULE_DRIVER_NO_OUTLINES
ft_synthesize_vertical_metrics(FT_Glyph_Metrics *metrics, FT_Pos advance)
FT_Select_Metrics(FT_Face face, FT_ULong strike_index)
struct FT_DriverRec_ FT_DriverRec
#define FT_REQUEST_HEIGHT(req)
#define FT_FACE_MEMORY(x)
FT_CMap_New(FT_CMap_Class clazz, FT_Pointer init_data, FT_CharMap charmap, FT_CMap *acmap)
ft_glyphslot_set_bitmap(FT_GlyphSlot slot, FT_Byte *buffer)
ft_service_list_lookup(FT_ServiceDesc service_descriptors, const char *service_id)
#define FT_STREAM_SEEK(position)
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
FT_BEGIN_HEADER typedef unsigned char FT_Bool
GLint GLint GLsizei GLsizei height
GLsizei const GLchar *const * strings
GLenum GLuint GLint GLenum face
GLsizei GLenum GLenum GLuint GLenum GLsizei * lengths
GLenum const GLfloat * params
static char memory[1024 *256]
BDF_encoding_el * encodings
union BDF_PropertyRec_::@4361 u
union bdf_property_t_::@4365 value
#define FT_SERVICE_ID_BDF
FT_Error(* FT_BDF_GetPropertyFunc)(FT_Face face, const char *prop_name, BDF_PropertyRec *aproperty)
FT_Error(* FT_BDF_GetCharsetIdFunc)(FT_Face face, const char **acharset_encoding, const char **acharset_registry)
#define FT_SERVICE_ID_FONT_FORMAT
#define FT_FONT_FORMAT_BDF
#define TT_ADOBE_ID_STANDARD
#define TT_PLATFORM_ADOBE