@ -311,9 +311,9 @@ THE SOFTWARE.
FT_CALLBACK_DEF ( void )
BDF_Face_Done ( FT_Face bdf face ) /* BDF_Face */
BDF_Face_Done ( FT_Face face ) /* BDF_Face */
{
BDF_Face face = ( BDF_Face ) bdf face;
BDF_Face bdf face = ( BDF_Face ) face ;
FT_Memory memory ;
@ -322,31 +322,31 @@ THE SOFTWARE.
memory = FT_FACE_MEMORY ( face ) ;
bdf_free_font ( face - > bdffont ) ;
bdf_free_font ( bdf face- > bdffont ) ;
FT_FREE ( face - > en_table ) ;
FT_FREE ( bdf face- > en_table ) ;
FT_FREE ( face - > charset_encoding ) ;
FT_FREE ( face - > charset_registry ) ;
FT_FREE ( bdf face- > family_name ) ;
FT_FREE ( bdf face- > style_name ) ;
FT_FREE ( bdf face- > charset_encoding ) ;
FT_FREE ( bdf face- > charset_registry ) ;
FT_FREE ( face - > family_name ) ;
FT_FREE ( face - > style_name ) ;
FT_FREE ( bdf face- > available_sizes ) ;
FT_FREE ( face - > available_sizes ) ;
FT_FREE ( face - > bdffont ) ;
FT_FREE ( bdf face- > bdffont ) ;
}
FT_CALLBACK_DEF ( FT_Error )
BDF_Face_Init ( FT_Stream stream ,
FT_Face bdf face, /* BDF_Face */
FT_Face face , /* BDF_Face */
FT_Int face_index ,
FT_Int num_params ,
FT_Parameter * params )
{
FT_Error error = FT_Err_Ok ;
BDF_Face face = ( BDF_Face ) bdf face;
FT_Memory memory = FT_FACE_MEMORY ( face ) ;
FT_Error error = FT_Err_Ok ;
BDF_Face bdf face = ( BDF_Face ) face ;
FT_Memory memory = FT_FACE_MEMORY ( face ) ;
bdf_font_t * font = NULL ;
bdf_options_t options ;
@ -375,7 +375,7 @@ THE SOFTWARE.
goto Exit ;
/* we have a bdf font: let's construct the face object */
face - > bdffont = font ;
bdf face- > bdffont = font ;
/* BDF cannot have multiple faces in a single font file.
* XXX : non - zero face_index is already invalid argument , but
@ -386,7 +386,7 @@ THE SOFTWARE.
if ( face_index > 0 & & ( face_index & 0xFFFF ) > 0 )
{
FT_ERROR ( ( " BDF_Face_Init: invalid face index \n " ) ) ;
BDF_Face_Done ( bdf face ) ;
BDF_Face_Done ( face ) ;
return FT_THROW ( Invalid_Argument ) ;
}
@ -401,18 +401,18 @@ THE SOFTWARE.
font - > unencoded_size ,
font - > unencoded_used ) ) ;
bdf face- > num_faces = 1 ;
bdf face- > face_index = 0 ;
face - > num_faces = 1 ;
face - > face_index = 0 ;
bdf face- > face_flags | = FT_FACE_FLAG_FIXED_SIZES |
FT_FACE_FLAG_HORIZONTAL ;
face - > face_flags | = FT_FACE_FLAG_FIXED_SIZES |
FT_FACE_FLAG_HORIZONTAL ;
prop = bdf_get_font_property ( font , " SPACING " ) ;
if ( prop & & prop - > format = = BDF_ATOM & &
prop - > value . atom & &
( * ( prop - > value . atom ) = = ' M ' | | * ( prop - > value . atom ) = = ' m ' | |
* ( prop - > value . atom ) = = ' C ' | | * ( prop - > value . atom ) = = ' c ' ) )
bdf face- > face_flags | = FT_FACE_FLAG_FIXED_WIDTH ;
face - > face_flags | = FT_FACE_FLAG_FIXED_WIDTH ;
/* FZ XXX: TO DO: FT_FACE_FLAGS_VERTICAL */
/* FZ XXX: I need a font to implement this */
@ -420,26 +420,27 @@ THE SOFTWARE.
prop = bdf_get_font_property ( font , " FAMILY_NAME " ) ;
if ( prop & & prop - > value . atom )
{
if ( FT_STRDUP ( bdf face- > family_name , prop - > value . atom ) )
if ( FT_STRDUP ( face - > family_name , prop - > value . atom ) )
goto Exit ;
}
else
bdf face- > family_name = NULL ;
face - > family_name = NULL ;
if ( FT_SET_ERROR ( bdf_interpret_style ( face ) ) )
if ( FT_SET_ERROR ( bdf_interpret_style ( bdf face ) ) )
goto Exit ;
/* the number of glyphs (with one slot for the undefined glyph */
/* at position 0 and all unencoded glyphs) */
bdf face- > num_glyphs = ( FT_Long ) ( font - > glyphs_size + 1 ) ;
face - > num_glyphs = ( FT_Long ) ( font - > glyphs_size + 1 ) ;
bdf face- > num_fixed_sizes = 1 ;
if ( FT_NEW ( bdf face- > available_sizes ) )
face - > num_fixed_sizes = 1 ;
if ( FT_NEW ( face - > available_sizes ) )
goto Exit ;
{
FT_Bitmap_Size * bsize = bdfface - > available_sizes ;
FT_Short resolution_x = 0 , resolution_y = 0 ;
FT_Bitmap_Size * bsize = face - > available_sizes ;
FT_Short resolution_x = 0 ;
FT_Short resolution_y = 0 ;
long value ;
@ -598,20 +599,20 @@ THE SOFTWARE.
unsigned long n ;
if ( FT_QNEW_ARRAY ( face - > en_table , font - > glyphs_size ) )
if ( FT_QNEW_ARRAY ( bdf face- > en_table , font - > glyphs_size ) )
goto Exit ;
face - > default_glyph = 0 ;
bdf face- > default_glyph = 0 ;
for ( n = 0 ; n < font - > glyphs_size ; n + + )
{
( face - > en_table [ n ] ) . enc = cur [ n ] . encoding ;
( bdf face- > en_table [ n ] ) . enc = cur [ n ] . encoding ;
FT_TRACE4 ( ( " idx %ld, val 0x%lX \n " , n , cur [ n ] . encoding ) ) ;
( face - > en_table [ n ] ) . glyph = ( FT_UShort ) n ;
( bdf face- > en_table [ n ] ) . glyph = ( FT_UShort ) n ;
if ( cur [ n ] . encoding = = font - > default_char )
{
if ( n < FT_UINT_MAX )
face - > default_glyph = ( FT_UInt ) n ;
bdf face- > default_glyph = ( FT_UInt ) n ;
else
FT_TRACE1 ( ( " BDF_Face_Init: "
" idx %ld is too large for this system \n " , n ) ) ;
@ -639,27 +640,27 @@ THE SOFTWARE.
const char * s ;
if ( FT_STRDUP ( face - > charset_encoding ,
if ( FT_STRDUP ( bdf face- > charset_encoding ,
charset_encoding - > value . atom ) | |
FT_STRDUP ( face - > charset_registry ,
FT_STRDUP ( bdf face- > charset_registry ,
charset_registry - > value . atom ) )
goto Exit ;
/* Uh, oh, compare first letters manually to avoid dependency */
/* on locales. */
s = face - > charset_registry ;
s = bdf face- > charset_registry ;
if ( ( s [ 0 ] = = ' i ' | | s [ 0 ] = = ' I ' ) & &
( s [ 1 ] = = ' s ' | | s [ 1 ] = = ' S ' ) & &
( s [ 2 ] = = ' o ' | | s [ 2 ] = = ' O ' ) )
{
s + = 3 ;
if ( ! ft_strcmp ( s , " 10646 " ) | |
( ! ft_strcmp ( s , " 8859 " ) & &
! ft_strcmp ( face - > charset_encoding , " 1 " ) ) )
if ( ! ft_strcmp ( s , " 10646 " ) | |
( ! ft_strcmp ( s , " 8859 " ) & &
! ft_strcmp ( bdf face- > charset_encoding , " 1 " ) ) )
unicode_charmap = 1 ;
/* another name for ASCII */
else if ( ! ft_strcmp ( s , " 646.1991 " ) & &
! ft_strcmp ( face - > charset_encoding , " IRV " ) )
else if ( ! ft_strcmp ( s , " 646.1991 " ) & &
! ft_strcmp ( bdf face- > charset_encoding , " IRV " ) )
unicode_charmap = 1 ;
}
@ -667,7 +668,7 @@ THE SOFTWARE.
FT_CharMapRec charmap ;
charmap . face = FT_FACE ( face ) ;
charmap . face = face ;
charmap . encoding = FT_ENCODING_NONE ;
/* initial platform/encoding should indicate unset status? */
charmap . platform_id = TT_PLATFORM_APPLE_UNICODE ;
@ -693,7 +694,7 @@ THE SOFTWARE.
FT_CharMapRec charmap ;
charmap . face = FT_FACE ( face ) ;
charmap . face = face ;
charmap . encoding = FT_ENCODING_ADOBE_STANDARD ;
charmap . platform_id = TT_PLATFORM_ADOBE ;
charmap . encoding_id = TT_ADOBE_ID_STANDARD ;
@ -701,8 +702,8 @@ THE SOFTWARE.
error = FT_CMap_New ( & bdf_cmap_class , NULL , & charmap , NULL ) ;
/* Select default charmap */
if ( bdf face- > num_charmaps )
bdf face- > charmap = bdf face- > charmaps [ 0 ] ;
if ( face - > num_charmaps )
face - > charmap = face - > charmaps [ 0 ] ;
}
}
}
@ -711,7 +712,7 @@ THE SOFTWARE.
return error ;
Fail :
BDF_Face_Done ( bdf face ) ;
BDF_Face_Done ( face ) ;
return FT_THROW ( Unknown_File_Format ) ;
}
@ -868,17 +869,18 @@ THE SOFTWARE.
*
*/
static FT_Error
bdf_get_bdf_property ( BD F_Face face ,
FT_CALLBACK_DEF ( FT_Error )
bdf_get_bdf_property ( FT _Face face , /* BDF_Face */
const char * prop_name ,
BDF_PropertyRec * aproperty )
{
BDF_Face bdfface = ( BDF_Face ) face ;
bdf_property_t * prop ;
FT_ASSERT ( face & & face - > bdffont ) ;
FT_ASSERT ( bdf face & & bdf face- > bdffont ) ;
prop = bdf_get_font_property ( face - > bdffont , prop_name ) ;
prop = bdf_get_font_property ( bdf face- > bdffont , prop_name ) ;
if ( prop )
{
switch ( prop - > format )
@ -921,13 +923,16 @@ THE SOFTWARE.
}
static FT_Error
bdf_get_charset_id ( BD F_Face face ,
FT_CALLBACK_DEF ( FT_Error )
bdf_get_charset_id ( FT _Face face , /* BDF_Face */
const char * * acharset_encoding ,
const char * * acharset_registry )
{
* acharset_encoding = face - > charset_encoding ;
* acharset_registry = face - > charset_registry ;
BDF_Face bdfface = ( BDF_Face ) face ;
* acharset_encoding = bdfface - > charset_encoding ;
* acharset_registry = bdfface - > charset_registry ;
return 0 ;
}
@ -964,7 +969,6 @@ THE SOFTWARE.
}
FT_CALLBACK_TABLE_DEF
const FT_Driver_ClassRec bdf_driver_class =
{