37#include FT_INTERNAL_DEBUG_H
38#include FT_INTERNAL_STREAM_H
39#include FT_INTERNAL_OBJECTS_H
52#define FT_COMPONENT bdflib
82 { (
char *)
"ADD_STYLE_NAME",
BDF_ATOM, 1, { 0 } },
84 { (
char *)
"AVG_CAPITAL_WIDTH",
BDF_INTEGER, 1, { 0 } },
85 { (
char *)
"AVG_LOWERCASE_WIDTH",
BDF_INTEGER, 1, { 0 } },
87 { (
char *)
"CHARSET_COLLECTIONS",
BDF_ATOM, 1, { 0 } },
88 { (
char *)
"CHARSET_ENCODING",
BDF_ATOM, 1, { 0 } },
89 { (
char *)
"CHARSET_REGISTRY",
BDF_ATOM, 1, { 0 } },
90 { (
char *)
"COMMENT",
BDF_ATOM, 1, { 0 } },
91 { (
char *)
"COPYRIGHT",
BDF_ATOM, 1, { 0 } },
94 { (
char *)
"DEVICE_FONT_NAME",
BDF_ATOM, 1, { 0 } },
96 { (
char *)
"FACE_NAME",
BDF_ATOM, 1, { 0 } },
97 { (
char *)
"FAMILY_NAME",
BDF_ATOM, 1, { 0 } },
99 { (
char *)
"FONT",
BDF_ATOM, 1, { 0 } },
100 { (
char *)
"FONTNAME_REGISTRY",
BDF_ATOM, 1, { 0 } },
103 { (
char *)
"FOUNDRY",
BDF_ATOM, 1, { 0 } },
104 { (
char *)
"FULL_NAME",
BDF_ATOM, 1, { 0 } },
109 { (
char *)
"NOTICE",
BDF_ATOM, 1, { 0 } },
114 { (
char *)
"RAW_AVERAGE_WIDTH",
BDF_INTEGER, 1, { 0 } },
115 { (
char *)
"RAW_AVG_CAPITAL_WIDTH",
BDF_INTEGER, 1, { 0 } },
116 { (
char *)
"RAW_AVG_LOWERCASE_WIDTH",
BDF_INTEGER, 1, { 0 } },
117 { (
char *)
"RAW_CAP_HEIGHT",
BDF_INTEGER, 1, { 0 } },
119 { (
char *)
"RAW_END_SPACE",
BDF_INTEGER, 1, { 0 } },
120 { (
char *)
"RAW_FIGURE_WIDTH",
BDF_INTEGER, 1, { 0 } },
121 { (
char *)
"RAW_MAX_SPACE",
BDF_INTEGER, 1, { 0 } },
122 { (
char *)
"RAW_MIN_SPACE",
BDF_INTEGER, 1, { 0 } },
123 { (
char *)
"RAW_NORM_SPACE",
BDF_INTEGER, 1, { 0 } },
124 { (
char *)
"RAW_PIXEL_SIZE",
BDF_INTEGER, 1, { 0 } },
125 { (
char *)
"RAW_POINT_SIZE",
BDF_INTEGER, 1, { 0 } },
126 { (
char *)
"RAW_PIXELSIZE",
BDF_INTEGER, 1, { 0 } },
127 { (
char *)
"RAW_POINTSIZE",
BDF_INTEGER, 1, { 0 } },
128 { (
char *)
"RAW_QUAD_WIDTH",
BDF_INTEGER, 1, { 0 } },
129 { (
char *)
"RAW_SMALL_CAP_SIZE",
BDF_INTEGER, 1, { 0 } },
130 { (
char *)
"RAW_STRIKEOUT_ASCENT",
BDF_INTEGER, 1, { 0 } },
131 { (
char *)
"RAW_STRIKEOUT_DESCENT",
BDF_INTEGER, 1, { 0 } },
132 { (
char *)
"RAW_SUBSCRIPT_SIZE",
BDF_INTEGER, 1, { 0 } },
133 { (
char *)
"RAW_SUBSCRIPT_X",
BDF_INTEGER, 1, { 0 } },
134 { (
char *)
"RAW_SUBSCRIPT_Y",
BDF_INTEGER, 1, { 0 } },
135 { (
char *)
"RAW_SUPERSCRIPT_SIZE",
BDF_INTEGER, 1, { 0 } },
136 { (
char *)
"RAW_SUPERSCRIPT_X",
BDF_INTEGER, 1, { 0 } },
137 { (
char *)
"RAW_SUPERSCRIPT_Y",
BDF_INTEGER, 1, { 0 } },
138 { (
char *)
"RAW_UNDERLINE_POSITION",
BDF_INTEGER, 1, { 0 } },
139 { (
char *)
"RAW_UNDERLINE_THICKNESS",
BDF_INTEGER, 1, { 0 } },
141 { (
char *)
"RELATIVE_SETWIDTH",
BDF_CARDINAL, 1, { 0 } },
146 { (
char *)
"SETWIDTH_NAME",
BDF_ATOM, 1, { 0 } },
147 { (
char *)
"SLANT",
BDF_ATOM, 1, { 0 } },
148 { (
char *)
"SMALL_CAP_SIZE",
BDF_INTEGER, 1, { 0 } },
149 { (
char *)
"SPACING",
BDF_ATOM, 1, { 0 } },
150 { (
char *)
"STRIKEOUT_ASCENT",
BDF_INTEGER, 1, { 0 } },
151 { (
char *)
"STRIKEOUT_DESCENT",
BDF_INTEGER, 1, { 0 } },
152 { (
char *)
"SUBSCRIPT_SIZE",
BDF_INTEGER, 1, { 0 } },
155 { (
char *)
"SUPERSCRIPT_SIZE",
BDF_INTEGER, 1, { 0 } },
156 { (
char *)
"SUPERSCRIPT_X",
BDF_INTEGER, 1, { 0 } },
157 { (
char *)
"SUPERSCRIPT_Y",
BDF_INTEGER, 1, { 0 } },
158 { (
char *)
"UNDERLINE_POSITION",
BDF_INTEGER, 1, { 0 } },
159 { (
char *)
"UNDERLINE_THICKNESS",
BDF_INTEGER, 1, { 0 } },
161 { (
char *)
"WEIGHT_NAME",
BDF_ATOM, 1, { 0 } },
163 { (
char *)
"_MULE_BASELINE_OFFSET",
BDF_INTEGER, 1, { 0 } },
164 { (
char *)
"_MULE_RELATIVE_COMPOSE",
BDF_INTEGER, 1, { 0 } },
167 static const unsigned long
176#define _bdf_strncmp( name, property, n ) \
177 ( ft_strncmp( name, property, n ) || \
178 !( name[n] == ' ' || \
185#define ACMSG1 "FONT_ASCENT property missing. " \
186 "Added `FONT_ASCENT %hd'.\n"
187#define ACMSG2 "FONT_DESCENT property missing. " \
188 "Added `FONT_DESCENT %hd'.\n"
189#define ACMSG3 "Font width != actual width. Old: %hd New: %hd.\n"
190#define ACMSG4 "Font left bearing != actual left bearing. " \
191 "Old: %hd New: %hd.\n"
192#define ACMSG5 "Font ascent != actual ascent. Old: %hd New: %hd.\n"
193#define ACMSG6 "Font descent != actual descent. Old: %hd New: %hd.\n"
194#define ACMSG7 "Font height != actual height. Old: %hd New: %hd.\n"
195#define ACMSG8 "Glyph scalable width (SWIDTH) adjustments made.\n"
196#define ACMSG9 "SWIDTH field missing at line %ld. Set automatically.\n"
197#define ACMSG10 "DWIDTH field missing at line %ld. Set to glyph width.\n"
198#define ACMSG11 "SIZE bits per pixel field adjusted to %hd.\n"
199#define ACMSG13 "Glyph %lu extra rows removed.\n"
200#define ACMSG14 "Glyph %lu extra columns removed.\n"
201#define ACMSG15 "Incorrect glyph count: %ld indicated but %ld found.\n"
202#define ACMSG16 "Glyph %lu missing columns padded with zero bits.\n"
203#define ACMSG17 "Adjusting number of glyphs to %ld.\n"
206#define ERRMSG1 "[line %ld] Missing `%s' line.\n"
207#define ERRMSG2 "[line %ld] Font header corrupted or missing fields.\n"
208#define ERRMSG3 "[line %ld] Font glyphs corrupted or missing fields.\n"
209#define ERRMSG4 "[line %ld] BBX too big.\n"
210#define ERRMSG5 "[line %ld] `%s' value too big.\n"
211#define ERRMSG6 "[line %ld] Input line too long.\n"
212#define ERRMSG7 "[line %ld] Font name too long.\n"
213#define ERRMSG8 "[line %ld] Invalid `%s' value.\n"
214#define ERRMSG9 "[line %ld] Invalid keyword.\n"
217#define DBGMSG1 " [%6ld] %s"
218#define DBGMSG2 " (0x%lX)\n"
232 unsigned long linelen,
233 unsigned long lineno,
280#define setsbit( m, cc ) \
281 ( m[(FT_Byte)(cc) >> 3] |= (FT_Byte)( 1 << ( (cc) & 7 ) ) )
282#define sbitset( m, cc ) \
283 ( m[(FT_Byte)(cc) >> 3] & ( 1 << ( (cc) & 7 ) ) )
311 unsigned long num_items )
319 unsigned long newsize = oldsize + ( oldsize >> 1 ) + 5;
320 unsigned long bigsize = (
unsigned long)(
FT_INT_MAX /
sizeof (
char* ) );
324 if ( oldsize == bigsize )
329 else if ( newsize < oldsize || newsize > bigsize )
350 if (
list == 0 ||
list->used == 0 ||
n == 0 )
353 if (
n >=
list->used )
359 for (
u =
n,
i = 0;
u <
list->used;
i++,
u++ )
373 unsigned long *alen )
385 for (
i =
j = 0;
i <
list->used;
i++ )
387 char* fp =
list->field[
i];
393 if (
i + 1 <
list->used )
412 unsigned long linelen )
414 unsigned long final_empty;
433 if ( linelen == 0 ||
line[0] == 0 )
439 if ( separators == 0 || *separators == 0 )
451 for ( mult = 0,
sp = separators;
sp && *
sp;
sp++ )
453 if ( *
sp ==
'+' && *(
sp + 1 ) == 0 )
460 for ( final_empty = 0,
sp = ep =
line,
end =
sp + linelen;
464 for ( ; *ep && !
sbitset( seps, *ep ); ep++ )
484 for ( ; *ep &&
sbitset( seps, *ep ); ep++ )
492 final_empty = ( ep >
sp && *ep == 0 );
524 unsigned long lineno, buf_size;
525 int refill, hold, to_skip;
594 if ( buf_size >= 65536UL )
630 (
void*)&
cb, client_data );
634 (
void*)&
cb, client_data );
645 else if ( hold ==
'\r' )
661 static const unsigned char a2i[128] =
663 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
664 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
665 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
666 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
667 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x00,
668 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x00,
669 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
670 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
671 0x00, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
672 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
673 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
678 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
679 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
680 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
681 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
686 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
687 0x7E, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00,
688 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
689 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
700 if (
s == 0 || *
s == 0 )
706 v =
v * 10 +
a2i[(
int)*
s];
725 if (
s == 0 || *
s == 0 )
739 v =
v * 10 +
a2i[(
int)*
s];
747 return ( !neg ) ?
v : -
v;
752 static unsigned short
758 if (
s == 0 || *
s == 0 )
764 v = (
unsigned short)(
v * 10 +
a2i[(
int)*
s] );
783 if (
s == 0 || *
s == 0 )
805 return (
short)( ( !neg ) ?
v : -
v );
849 font->nuser_props + 1 ) )
852 p =
font->user_props +
font->nuser_props;
857 return FT_THROW( Invalid_Argument );
909#define BDF_START_ 0x0001U
910#define BDF_FONT_NAME_ 0x0002U
911#define BDF_SIZE_ 0x0004U
912#define BDF_FONT_BBX_ 0x0008U
913#define BDF_PROPS_ 0x0010U
914#define BDF_GLYPHS_ 0x0020U
915#define BDF_GLYPH_ 0x0040U
916#define BDF_ENCODING_ 0x0080U
917#define BDF_SWIDTH_ 0x0100U
918#define BDF_DWIDTH_ 0x0200U
919#define BDF_BBX_ 0x0400U
920#define BDF_BITMAP_ 0x0800U
922#define BDF_SWIDTH_ADJ_ 0x1000U
924#define BDF_GLYPH_BITS_ ( BDF_GLYPH_ | \
931#define BDF_GLYPH_WIDTH_CHECK_ 0x40000000UL
932#define BDF_GLYPH_HEIGHT_CHECK_ 0x80000000UL
947 font->comments_len +
len + 1 ) )
967 unsigned long lineno )
978 if (
font == 0 ||
font->name == 0 ||
font->name[0] == 0 )
1005 if (
list.used == 15 )
1007 switch (
list.field[11][0] )
1036 unsigned long linelen,
1048 while ( *ep && *ep !=
' ' && *ep !=
'\t' )
1071 ep =
line + linelen;
1077 ( *
sp ==
' ' || *
sp ==
'\t' ) )
1087 ( *( ep - 1 ) ==
' ' || *( ep - 1 ) ==
'\t' ) )
1091 if ( ep >
sp && *( ep - 1 ) ==
'"' )
1102 unsigned long lineno )
1118 fp =
font->props + *propid;
1160 if (
font->props_used ==
font->props_size )
1162 if (
font->props_size == 0 )
1171 font->props_size + 1 ) )
1175 fp =
font->props +
font->props_size;
1185 fp =
font->props +
font->props_used;
1261 0xFF, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE
1267 unsigned long linelen,
1268 unsigned long lineno,
1287 unsigned long linelen,
1288 unsigned long lineno,
1295 unsigned long i, slen, nibbles;
1345 if (
p->cnt >
p->size / 20 )
1347 p->cnt =
font->glyphs_size =
p->size / 20;
1353 font->glyphs_size = 64;
1357 if (
p->cnt >= 0x110000UL )
1389 p->flags &= ~BDF_START_;
1399 p->flags &= ~BDF_GLYPH_BITS_;
1407 p->glyph_enc == -1 &&
1408 p->opts->keep_unencoded == 0 )
1472 if (
p->glyph_enc < -1 )
1476 if (
p->glyph_enc == -1 &&
p->list.used > 2 )
1479 if (
p->glyph_enc < -1 ||
p->glyph_enc >= 0x110000L )
1484 if (
p->glyph_enc >= 0 )
1488 if (
font->glyphs_used ==
font->glyphs_size )
1492 font->glyphs_size + 64 ) )
1495 font->glyphs_size += 64;
1498 glyph =
font->glyphs +
font->glyphs_used++;
1499 glyph->
name =
p->glyph_name;
1503 p->glyph_name =
NULL;
1509 if (
p->opts->keep_unencoded != 0 )
1512 if (
font->unencoded_used ==
font->unencoded_size )
1515 font->unencoded_size,
1516 font->unencoded_size + 4 ) )
1519 font->unencoded_size += 4;
1522 glyph =
font->unencoded +
font->unencoded_used;
1523 glyph->
name =
p->glyph_name;
1527 p->glyph_name =
NULL;
1536 p->glyph_name =
NULL;
1549 goto Missing_Encoding;
1552 if (
p->glyph_enc == -1 )
1553 glyph =
font->unencoded + (
font->unencoded_used - 1 );
1555 glyph =
font->glyphs + (
font->glyphs_used - 1 );
1562 if (
p->row >= (
unsigned long)glyph->
bbx.
height )
1575 nibbles = glyph->
bpr << 1;
1578 for (
i = 0;
i < nibbles;
i++ )
1584 if (
i + 1 < nibbles && (
i & 1 ) )
1598 mask_index = ( glyph->
bbx.
width *
p->font->bpp ) & 7;
1603 if (
i == nibbles &&
1646 font->resolution_x ) );
1690 if (
p->opts->correct_metrics != 0 )
1696 font->resolution_x ) );
1699 if ( sw != glyph->
swidth )
1714 unsigned long bitmap_size;
1726 glyph->
bpr = ( glyph->
bbx.
width *
p->font->bpp + 7 ) >> 3;
1729 if ( glyph->
bpr > 0xFFFFU || bitmap_size > 0xFFFFU )
1767 unsigned long linelen,
1768 unsigned long lineno,
1797 p->font->font_ascent =
p->font->bbx.ascent;
1809 p->font->font_descent =
p->font->bbx.descent;
1819 p->flags &= ~BDF_PROPS_;
1852 name =
p->list.field[0];
1870 unsigned long linelen,
1871 unsigned long lineno,
1897 if (
p->opts->keep_comments != 0 &&
p->font != 0 )
1936 font->memory =
p->memory;
1962 p->font->spacing =
p->opts->font_spacing;
1963 p->font->default_char = ~0
UL;
1974 FT_ERROR((
"_bdf_parse_start: " ERRMSG1, lineno,
"FONTBOUNDINGBOX" ));
1984 p->cnt =
p->font->props_size =
_bdf_atoul(
p->list.field[1] );
1986 if (
p->cnt >
p->size / 4 )
1988 p->font->props_size = 0;
1990 FT_ERROR((
"_bdf_parse_glyphs: " ERRMSG5, lineno,
"STARTPROPERTIES" ));
1997 p->font->props_size = 0;
2025 p->font->bbx.x_offset =
_bdf_atos(
p->list.field[3] );
2026 p->font->bbx.y_offset =
_bdf_atos(
p->list.field[4] );
2028 p->font->bbx.ascent = (
short)(
p->font->bbx.height +
2029 p->font->bbx.y_offset );
2031 p->font->bbx.descent = (
short)( -
p->font->bbx.y_offset );
2089 p->font->resolution_x =
_bdf_atoul(
p->list.field[2] );
2090 p->font->resolution_y =
_bdf_atoul(
p->list.field[3] );
2093 if (
p->list.used == 5 )
2110 if (
p->font->bpp !=
bpp )
2130 FT_ERROR((
"_bdf_parse_start: " ERRMSG1, lineno,
"FONTBOUNDINGBOX" ));
2137 p->font->font_ascent =
p->font->bbx.ascent;
2145 p->font->font_descent =
p->font->bbx.descent;
2181 unsigned long lineno = 0;
2195 p->memory = extmemory;
2200 (
void *)
p, &lineno );
2210 p->font->monowidth =
p->font->bbx.width;
2214 if (
p->cnt !=
p->font->glyphs_used +
p->font->unencoded_used )
2217 p->font->glyphs_used +
p->font->unencoded_used ));
2222 if (
p->opts->correct_metrics != 0 &&
2223 (
p->font->glyphs_used > 0 ||
p->font->unencoded_used > 0 ) )
2225 if (
p->maxrb -
p->minlb !=
p->font->bbx.width )
2228 p->font->bbx.width,
p->maxrb -
p->minlb ));
2229 p->font->bbx.width = (
unsigned short)(
p->maxrb -
p->minlb );
2232 if (
p->font->bbx.x_offset !=
p->minlb )
2235 p->font->bbx.x_offset,
p->minlb ));
2236 p->font->bbx.x_offset =
p->minlb;
2239 if (
p->font->bbx.ascent !=
p->maxas )
2242 p->font->bbx.ascent,
p->maxas ));
2243 p->font->bbx.ascent =
p->maxas;
2246 if (
p->font->bbx.descent !=
p->maxds )
2249 p->font->bbx.descent,
p->maxds ));
2250 p->font->bbx.descent =
p->maxds;
2251 p->font->bbx.y_offset = (
short)( -
p->maxds );
2254 if (
p->maxas +
p->maxds !=
p->font->bbx.height )
2257 p->font->bbx.height,
p->maxas +
p->maxds ));
2258 p->font->bbx.height = (
unsigned short)(
p->maxas +
p->maxds );
2290 if (
p->font->comments_len > 0 )
2293 p->font->comments_len,
2294 p->font->comments_len + 1 ) )
2297 p->font->comments[
p->font->comments_len] = 0;
2346 if (
font->internal )
2356 for (
i = 0;
i <
font->props_size;
i++ )
2366 i < font->glyphs_used;
i++,
glyphs++ )
2372 for (
i = 0,
glyphs =
font->unencoded; i < font->unencoded_used;
2386 for ( prop =
font->user_props,
i = 0;
2387 i < font->nuser_props;
i++, prop++ )
2412 return propid ? (
font->props + *propid ) : 0;
static unsigned char bytes[4]
static FT_Error _bdf_set_default_spacing(bdf_font_t *font, bdf_options_t *opts, unsigned long lineno)
static void _bdf_list_init(_bdf_list_t *list, FT_Memory memory)
bdf_get_property(char *name, bdf_font_t *font)
static const bdf_options_t _bdf_opts
struct _bdf_parse_t_ _bdf_parse_t
static FT_Error _bdf_parse_glyphs(char *line, unsigned long linelen, unsigned long lineno, void *call_data, void *client_data)
static const unsigned char a2i[128]
static int _bdf_is_atom(char *line, unsigned long linelen, char **name, char **value, bdf_font_t *font)
static FT_Error _bdf_parse_properties(char *line, unsigned long linelen, unsigned long lineno, void *call_data, void *client_data)
static FT_Error _bdf_list_split(_bdf_list_t *list, char *separators, char *line, unsigned long linelen)
static const bdf_property_t _bdf_properties[]
static const unsigned char ddigits[32]
static const unsigned char nibble_mask[8]
static FT_Error _bdf_parse_end(char *line, unsigned long linelen, unsigned long lineno, void *call_data, void *client_data)
static short _bdf_atos(char *s)
#define _bdf_strncmp(name, property, n)
static const unsigned long _num_bdf_properties
FT_Error(* _bdf_line_func_t)(char *line, unsigned long linelen, unsigned long lineno, void *call_data, void *client_data)
static FT_Error bdf_create_property(char *name, int format, bdf_font_t *font)
bdf_get_font_property(bdf_font_t *font, const char *name)
static FT_Error _bdf_add_property(bdf_font_t *font, char *name, char *value, unsigned long lineno)
#define BDF_GLYPH_HEIGHT_CHECK_
static char * _bdf_list_join(_bdf_list_t *list, int c, unsigned long *alen)
struct _bdf_list_t_ _bdf_list_t
static void _bdf_list_shift(_bdf_list_t *list, unsigned long n)
bdf_load_font(FT_Stream stream, FT_Memory extmemory, bdf_options_t *opts, bdf_font_t **font)
static const unsigned char hdigits[32]
static unsigned long _bdf_atoul(char *s)
static unsigned short _bdf_atous(char *s)
#define BDF_GLYPH_WIDTH_CHECK_
static FT_Error _bdf_add_comment(bdf_font_t *font, char *comment, unsigned long len)
static long _bdf_atol(char *s)
static const char empty[1]
static int by_encoding(const void *a, const void *b)
static FT_Error _bdf_list_ensure(_bdf_list_t *list, unsigned long num_items)
static FT_Error _bdf_readstream(FT_Stream stream, _bdf_line_func_t callback, void *client_data, unsigned long *lno)
static FT_Error _bdf_parse_start(char *line, unsigned long linelen, unsigned long lineno, void *call_data, void *client_data)
static void _bdf_list_done(_bdf_list_t *list)
bdf_free_font(bdf_font_t *font)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
__kernel_ptrdiff_t ptrdiff_t
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
#define FT_ERROR(varformat)
#define FT_TRACE2(varformat)
#define FT_TRACE4(varformat)
void ft_hash_str_free(FT_Hash hash, FT_Memory memory)
size_t * ft_hash_str_lookup(const char *key, FT_Hash hash)
FT_Error ft_hash_str_init(FT_Hash hash, FT_Memory memory)
FT_Error ft_hash_str_insert(const char *key, size_t data, FT_Hash hash, FT_Memory memory)
#define FT_NEW_ARRAY(ptr, count)
#define FT_STRDUP(dst, str)
#define FT_ALLOC(ptr, size)
#define FT_RENEW_ARRAY(ptr, curcnt, newcnt)
#define FT_MEM_COPY(dest, source, count)
#define FT_MEM_ZERO(dest, count)
#define FT_MEM_MOVE(dest, source, count)
FT_Stream_TryRead(FT_Stream stream, FT_Byte *buffer, FT_ULong count)
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
GLboolean GLboolean GLboolean b
GLenum GLuint GLenum GLsizei const GLchar * buf
GLboolean GLboolean GLboolean GLboolean a
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 * u
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
#define comment(fmt, arg1)
static IPrintDialogCallback callback
static UINT UINT LPWORD glyphs
static HMODULE MODULEINFO DWORD cb
static char memory[1024 *256]
static unsigned __int64 next
union bdf_property_t_::@4365 value
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList