* src/cff/cffobjs.c (cff_size_done, cff_size_init, cff_size_reset,
cff_slot_done, cff_slot_init, cff_face_init, cff_face_done): Access root fields directly. * src/cff/cffdrivr.c (Load_Glyph): Access root fields directly. * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Save current frame before calling TT_Vary_Get_Glyph_Deltas. * src/pcf/pcfdrivr.c (PCF_CMapRec): Rename `cmap' to `root' for consistency. (pcf_cmap_init, pcf_cmap_done, pcf_cmap_char_index, pcf_cmap_char_next): Don't use PCF_XXX but FT_XXX arguments which are typecast to the proper PCF_XXX types within the function. Update code accordingly. (pcf_cmap_class): Remove casts. (PCF_Face_Done, PCF_Face_Init, PCF_Set_Pixel_Size): Don't use PCF_XXX but FT_XXX arguments which are typecast to the proper PCF_XXX types within the function. Update code accordingly. Use FT_CALLBACK_DEF throughout. (PCF_Set_Point_Size): New wrapper function. (PCF_Glyph_Load, pcf_driver_requester): Use FT_CALLBACK_DEF. (pcf_driver_class): Remove casts.
This commit is contained in:
parent
3bcad43998
commit
2b54eba36b
26
ChangeLog
26
ChangeLog
@ -1,3 +1,29 @@
|
||||
2004-05-06 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
* src/cff/cffobjs.c (cff_size_done, cff_size_init, cff_size_reset,
|
||||
cff_slot_done, cff_slot_init, cff_face_init, cff_face_done): Access
|
||||
root fields directly.
|
||||
* src/cff/cffdrivr.c (Load_Glyph): Access root fields directly.
|
||||
|
||||
* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Save current
|
||||
frame before calling TT_Vary_Get_Glyph_Deltas.
|
||||
|
||||
* src/pcf/pcfdrivr.c (PCF_CMapRec): Rename `cmap' to `root' for
|
||||
consistency.
|
||||
(pcf_cmap_init, pcf_cmap_done, pcf_cmap_char_index,
|
||||
pcf_cmap_char_next): Don't use PCF_XXX but FT_XXX arguments which
|
||||
are typecast to the proper PCF_XXX types within the function.
|
||||
Update code accordingly.
|
||||
(pcf_cmap_class): Remove casts.
|
||||
(PCF_Face_Done, PCF_Face_Init, PCF_Set_Pixel_Size): Don't use
|
||||
PCF_XXX but FT_XXX arguments which are typecast to the proper
|
||||
PCF_XXX types within the function.
|
||||
Update code accordingly.
|
||||
Use FT_CALLBACK_DEF throughout.
|
||||
(PCF_Set_Point_Size): New wrapper function.
|
||||
(PCF_Glyph_Load, pcf_driver_requester): Use FT_CALLBACK_DEF.
|
||||
(pcf_driver_class): Remove casts.
|
||||
|
||||
2004-05-04 Steve Hartwell <shspamsink@comcast.net>
|
||||
|
||||
* src/truetype/ttobjs.c (tt_driver_done): Fix typo.
|
||||
|
@ -203,8 +203,8 @@
|
||||
/* reset the size object if necessary */
|
||||
if ( size )
|
||||
{
|
||||
/* these two object must have the same parent */
|
||||
if ( size->root.face != slot->root.face )
|
||||
/* these two objects must have the same parent */
|
||||
if ( cffsize->face != cffslot->face )
|
||||
return CFF_Err_Invalid_Face_Handle;
|
||||
}
|
||||
|
||||
|
@ -46,7 +46,7 @@
|
||||
/* */
|
||||
/* SIZE FUNCTIONS */
|
||||
/* */
|
||||
/* Note that we store the global hints in the size's "internal" root */
|
||||
/* Note that we store the global hints in the size's `internal' root */
|
||||
/* field. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
@ -140,16 +140,16 @@
|
||||
CFF_Size size = (CFF_Size)cffsize;
|
||||
|
||||
|
||||
if ( size->root.internal )
|
||||
if ( cffsize->internal )
|
||||
{
|
||||
PSH_Globals_Funcs funcs;
|
||||
|
||||
|
||||
funcs = cff_size_get_globals_funcs( size );
|
||||
if ( funcs )
|
||||
funcs->destroy( (PSH_Globals)size->root.internal );
|
||||
funcs->destroy( (PSH_Globals)cffsize->internal );
|
||||
|
||||
size->root.internal = 0;
|
||||
cffsize->internal = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -165,7 +165,7 @@
|
||||
if ( funcs )
|
||||
{
|
||||
PSH_Globals globals;
|
||||
CFF_Face face = (CFF_Face)size->root.face;
|
||||
CFF_Face face = (CFF_Face)cffsize->face;
|
||||
CFF_Font font = (CFF_FontRec *)face->extra.data;
|
||||
CFF_SubFont subfont = &font->top_font;
|
||||
|
||||
@ -219,9 +219,9 @@
|
||||
priv.lenIV = cpriv->lenIV;
|
||||
}
|
||||
|
||||
error = funcs->create( size->root.face->memory, &priv, &globals );
|
||||
error = funcs->create( cffsize->face->memory, &priv, &globals );
|
||||
if ( !error )
|
||||
size->root.internal = (FT_Size_Internal)(void*)globals;
|
||||
cffsize->internal = (FT_Size_Internal)(void*)globals;
|
||||
}
|
||||
|
||||
return error;
|
||||
@ -236,16 +236,16 @@
|
||||
CFF_Size size = (CFF_Size)cffsize;
|
||||
PSH_Globals_Funcs funcs = cff_size_get_globals_funcs( size );
|
||||
FT_Error error = CFF_Err_Ok;
|
||||
FT_Face face = size->root.face;
|
||||
FT_Face face = cffsize->face;
|
||||
|
||||
FT_UNUSED( char_width );
|
||||
FT_UNUSED( char_height );
|
||||
|
||||
|
||||
if ( funcs )
|
||||
error = funcs->set_scale( (PSH_Globals)size->root.internal,
|
||||
size->root.metrics.x_scale,
|
||||
size->root.metrics.y_scale,
|
||||
error = funcs->set_scale( (PSH_Globals)cffsize->internal,
|
||||
cffsize->metrics.x_scale,
|
||||
cffsize->metrics.y_scale,
|
||||
0, 0 );
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
|
||||
@ -255,7 +255,7 @@
|
||||
error = sbit_size_reset( size );
|
||||
|
||||
if ( !error && !( face->face_flags & FT_FACE_FLAG_SCALABLE ) )
|
||||
size->root.metrics = size->strike_metrics;
|
||||
cffsize->metrics = size->strike_metrics;
|
||||
}
|
||||
|
||||
#endif
|
||||
@ -290,19 +290,16 @@
|
||||
/*************************************************************************/
|
||||
|
||||
FT_LOCAL_DEF( void )
|
||||
cff_slot_done( FT_GlyphSlot cffslot ) /* CFF_GlyphSlot */
|
||||
cff_slot_done( FT_GlyphSlot slot )
|
||||
{
|
||||
CFF_GlyphSlot slot = (CFF_GlyphSlot)cffslot;
|
||||
|
||||
slot->root.internal->glyph_hints = 0;
|
||||
slot->internal->glyph_hints = 0;
|
||||
}
|
||||
|
||||
|
||||
FT_LOCAL_DEF( FT_Error )
|
||||
cff_slot_init( FT_GlyphSlot cffslot ) /* CFF_GlyphSlot */
|
||||
cff_slot_init( FT_GlyphSlot slot )
|
||||
{
|
||||
CFF_GlyphSlot slot = (CFF_GlyphSlot)cffslot;
|
||||
CFF_Face face = (CFF_Face)slot->root.face;
|
||||
CFF_Face face = (CFF_Face)slot->face;
|
||||
CFF_Font font = (CFF_FontRec *)face->extra.data;
|
||||
PSHinter_Service pshinter = (PSHinter_Service)font->pshinter;
|
||||
|
||||
@ -312,7 +309,7 @@
|
||||
FT_Module module;
|
||||
|
||||
|
||||
module = FT_Get_Module( slot->root.face->driver->root.library,
|
||||
module = FT_Get_Module( slot->face->driver->root.library,
|
||||
"pshinter" );
|
||||
if ( module )
|
||||
{
|
||||
@ -320,7 +317,7 @@
|
||||
|
||||
|
||||
funcs = pshinter->get_t2_funcs( module );
|
||||
slot->root.internal->glyph_hints = (void*)funcs;
|
||||
slot->internal->glyph_hints = (void*)funcs;
|
||||
}
|
||||
}
|
||||
|
||||
@ -379,14 +376,14 @@
|
||||
goto Bad_Format;
|
||||
#else
|
||||
sfnt = (SFNT_Service)FT_Get_Module_Interface(
|
||||
face->root.driver->root.library, "sfnt" );
|
||||
cffface->driver->root.library, "sfnt" );
|
||||
if ( !sfnt )
|
||||
goto Bad_Format;
|
||||
|
||||
FT_FACE_FIND_GLOBAL_SERVICE( face, psnames, POSTSCRIPT_CMAPS );
|
||||
|
||||
pshinter = (PSHinter_Service)FT_Get_Module_Interface(
|
||||
face->root.driver->root.library, "pshinter" );
|
||||
cffface->driver->root.library, "pshinter" );
|
||||
#endif
|
||||
|
||||
/* create input stream from resource */
|
||||
@ -451,8 +448,7 @@
|
||||
{
|
||||
CFF_Font cff;
|
||||
CFF_FontRecDict dict;
|
||||
FT_Memory memory = face->root.memory;
|
||||
FT_Face root;
|
||||
FT_Memory memory = cffface->memory;
|
||||
FT_Int32 flags;
|
||||
|
||||
|
||||
@ -470,8 +466,7 @@
|
||||
/* Complement the root flags with some interesting information. */
|
||||
/* Note that this is only necessary for pure CFF and CEF fonts. */
|
||||
|
||||
root = &face->root;
|
||||
root->num_glyphs = cff->num_glyphs;
|
||||
cffface->num_glyphs = cff->num_glyphs;
|
||||
|
||||
dict = &cff->top_font.font_dict;
|
||||
|
||||
@ -492,46 +487,46 @@
|
||||
|
||||
|
||||
/* Set up num_faces. */
|
||||
root->num_faces = cff->num_faces;
|
||||
cffface->num_faces = cff->num_faces;
|
||||
|
||||
/* compute number of glyphs */
|
||||
if ( dict->cid_registry != 0xFFFFU )
|
||||
root->num_glyphs = dict->cid_count;
|
||||
cffface->num_glyphs = dict->cid_count;
|
||||
else
|
||||
root->num_glyphs = cff->charstrings_index.count;
|
||||
cffface->num_glyphs = cff->charstrings_index.count;
|
||||
|
||||
/* set global bbox, as well as EM size */
|
||||
root->bbox.xMin = dict->font_bbox.xMin >> 16;
|
||||
root->bbox.yMin = dict->font_bbox.yMin >> 16;
|
||||
root->bbox.xMax = ( dict->font_bbox.xMax + 0xFFFFU ) >> 16;
|
||||
root->bbox.yMax = ( dict->font_bbox.yMax + 0xFFFFU ) >> 16;
|
||||
cffface->bbox.xMin = dict->font_bbox.xMin >> 16;
|
||||
cffface->bbox.yMin = dict->font_bbox.yMin >> 16;
|
||||
cffface->bbox.xMax = ( dict->font_bbox.xMax + 0xFFFFU ) >> 16;
|
||||
cffface->bbox.yMax = ( dict->font_bbox.yMax + 0xFFFFU ) >> 16;
|
||||
|
||||
root->ascender = (FT_Short)( root->bbox.yMax );
|
||||
root->descender = (FT_Short)( root->bbox.yMin );
|
||||
root->height = (FT_Short)(
|
||||
( ( root->ascender - root->descender ) * 12 ) / 10 );
|
||||
cffface->ascender = (FT_Short)( cffface->bbox.yMax );
|
||||
cffface->descender = (FT_Short)( cffface->bbox.yMin );
|
||||
cffface->height = (FT_Short)(
|
||||
( ( cffface->ascender - cffface->descender ) * 12 ) / 10 );
|
||||
|
||||
if ( dict->units_per_em )
|
||||
root->units_per_EM = dict->units_per_em;
|
||||
cffface->units_per_EM = dict->units_per_em;
|
||||
else
|
||||
root->units_per_EM = 1000;
|
||||
cffface->units_per_EM = 1000;
|
||||
|
||||
root->underline_position =
|
||||
cffface->underline_position =
|
||||
(FT_Short)( dict->underline_position >> 16 );
|
||||
root->underline_thickness =
|
||||
cffface->underline_thickness =
|
||||
(FT_Short)( dict->underline_thickness >> 16 );
|
||||
|
||||
/* retrieve font family & style name */
|
||||
root->family_name = cff_index_get_name( &cff->name_index,
|
||||
face_index );
|
||||
cffface->family_name = cff_index_get_name( &cff->name_index,
|
||||
face_index );
|
||||
|
||||
if ( root->family_name )
|
||||
if ( cffface->family_name )
|
||||
{
|
||||
char* full = cff_index_get_sid_string( &cff->string_index,
|
||||
dict->full_name,
|
||||
psnames );
|
||||
char* fullp = full;
|
||||
char* family = root->family_name;
|
||||
char* family = cffface->family_name;
|
||||
|
||||
/* We try to extract the style name from the full name. */
|
||||
/* We need to ignore spaces and dashes during the search. */
|
||||
@ -584,14 +579,14 @@
|
||||
|
||||
/* do we have a `/FontName' for a CID-keyed font? */
|
||||
if ( cid_font_name )
|
||||
root->family_name = cid_font_name;
|
||||
cffface->family_name = cid_font_name;
|
||||
}
|
||||
|
||||
if ( style_name )
|
||||
root->style_name = style_name;
|
||||
cffface->style_name = style_name;
|
||||
else
|
||||
/* assume "Regular" style if we don't know better */
|
||||
root->style_name = cff_strcpy( memory, (char *)"Regular" );
|
||||
cffface->style_name = cff_strcpy( memory, (char *)"Regular" );
|
||||
|
||||
/*******************************************************************/
|
||||
/* */
|
||||
@ -614,7 +609,7 @@
|
||||
flags |= FT_FACE_FLAG_KERNING;
|
||||
#endif
|
||||
|
||||
root->face_flags = flags;
|
||||
cffface->face_flags = flags;
|
||||
|
||||
/*******************************************************************/
|
||||
/* */
|
||||
@ -638,14 +633,14 @@
|
||||
FT_FREE( weight );
|
||||
}
|
||||
|
||||
root->style_flags = flags;
|
||||
cffface->style_flags = flags;
|
||||
}
|
||||
|
||||
#ifndef FT_CONFIG_OPTION_NO_GLYPH_NAMES
|
||||
/* CID-keyed CFF fonts don't have glyph names -- the SFNT loader */
|
||||
/* has unset this flag because of the 3.0 `post' table */
|
||||
if ( dict->cid_registry == 0xFFFFU )
|
||||
root->face_flags |= FT_FACE_FLAG_GLYPH_NAMES;
|
||||
cffface->face_flags |= FT_FACE_FLAG_GLYPH_NAMES;
|
||||
#endif
|
||||
|
||||
/*******************************************************************/
|
||||
@ -663,9 +658,9 @@
|
||||
CFF_Encoding encoding = &cff->encoding;
|
||||
|
||||
|
||||
for ( nn = 0; nn < (FT_UInt)root->num_charmaps; nn++ )
|
||||
for ( nn = 0; nn < (FT_UInt)cffface->num_charmaps; nn++ )
|
||||
{
|
||||
cmap = root->charmaps[nn];
|
||||
cmap = cffface->charmaps[nn];
|
||||
|
||||
/* Windows Unicode (3,1)? */
|
||||
if ( cmap->platform_id == 3 && cmap->encoding_id == 1 )
|
||||
@ -682,18 +677,18 @@
|
||||
goto Exit;
|
||||
|
||||
/* we didn't find a Unicode charmap -- synthetize one */
|
||||
cmaprec.face = root;
|
||||
cmaprec.face = cffface;
|
||||
cmaprec.platform_id = 3;
|
||||
cmaprec.encoding_id = 1;
|
||||
cmaprec.encoding = FT_ENCODING_UNICODE;
|
||||
|
||||
nn = (FT_UInt)root->num_charmaps;
|
||||
nn = (FT_UInt)cffface->num_charmaps;
|
||||
|
||||
FT_CMap_New( &cff_cmap_unicode_class_rec, NULL, &cmaprec, NULL );
|
||||
|
||||
/* if no Unicode charmap was previously selected, select this one */
|
||||
if ( root->charmap == NULL && nn != (FT_UInt)root->num_charmaps )
|
||||
root->charmap = root->charmaps[nn];
|
||||
if ( cffface->charmap == NULL && nn != (FT_UInt)cffface->num_charmaps )
|
||||
cffface->charmap = cffface->charmaps[nn];
|
||||
|
||||
Skip_Unicode:
|
||||
if ( encoding->count > 0 )
|
||||
@ -701,7 +696,7 @@
|
||||
FT_CMap_Class clazz;
|
||||
|
||||
|
||||
cmaprec.face = root;
|
||||
cmaprec.face = cffface;
|
||||
cmaprec.platform_id = 7; /* Adobe platform id */
|
||||
|
||||
if ( encoding->offset == 0 )
|
||||
@ -741,7 +736,7 @@
|
||||
cff_face_done( FT_Face cffface ) /* CFF_Face */
|
||||
{
|
||||
CFF_Face face = (CFF_Face)cffface;
|
||||
FT_Memory memory = face->root.memory;
|
||||
FT_Memory memory = cffface->memory;
|
||||
SFNT_Service sfnt = (SFNT_Service)face->sfnt;
|
||||
|
||||
|
||||
|
@ -131,10 +131,10 @@ FT_BEGIN_HEADER
|
||||
FT_UInt vert_resolution );
|
||||
|
||||
FT_LOCAL( void )
|
||||
cff_slot_done( FT_GlyphSlot slot ); /* CFF_GlyphSlot */
|
||||
cff_slot_done( FT_GlyphSlot slot );
|
||||
|
||||
FT_LOCAL( FT_Error )
|
||||
cff_slot_init( FT_GlyphSlot slot ); /* CFF_GlyphSlot */
|
||||
cff_slot_init( FT_GlyphSlot slot );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
@ -48,9 +48,10 @@ THE SOFTWARE.
|
||||
#include FT_SERVICE_BDF_H
|
||||
#include FT_SERVICE_XFREE86_NAME_H
|
||||
|
||||
|
||||
typedef struct PCF_CMapRec_
|
||||
{
|
||||
FT_CMapRec cmap;
|
||||
FT_CMapRec root;
|
||||
FT_UInt num_encodings;
|
||||
PCF_Encoding encodings;
|
||||
|
||||
@ -58,9 +59,13 @@ THE SOFTWARE.
|
||||
|
||||
|
||||
FT_CALLBACK_DEF( FT_Error )
|
||||
pcf_cmap_init( PCF_CMap cmap )
|
||||
pcf_cmap_init( FT_CMap pcfcmap, /* PCF_CMap */
|
||||
FT_Pointer init_data )
|
||||
{
|
||||
PCF_Face face = (PCF_Face)FT_CMAP_FACE( cmap );
|
||||
PCF_CMap cmap = (PCF_CMap)pcfcmap;
|
||||
PCF_Face face = (PCF_Face)FT_CMAP_FACE( pcfcmap );
|
||||
|
||||
FT_UNUSED( init_data );
|
||||
|
||||
|
||||
cmap->num_encodings = (FT_UInt)face->nencodings;
|
||||
@ -71,20 +76,24 @@ THE SOFTWARE.
|
||||
|
||||
|
||||
FT_CALLBACK_DEF( void )
|
||||
pcf_cmap_done( PCF_CMap cmap )
|
||||
pcf_cmap_done( FT_CMap pcfcmap ) /* PCF_CMap */
|
||||
{
|
||||
PCF_CMap cmap = (PCF_CMap)pcfcmap;
|
||||
|
||||
|
||||
cmap->encodings = NULL;
|
||||
cmap->num_encodings = 0;
|
||||
}
|
||||
|
||||
|
||||
FT_CALLBACK_DEF( FT_UInt )
|
||||
pcf_cmap_char_index( PCF_CMap cmap,
|
||||
pcf_cmap_char_index( FT_CMap pcfcmap, /* PCF_CMap */
|
||||
FT_UInt32 charcode )
|
||||
{
|
||||
PCF_CMap cmap = (PCF_CMap)pcfcmap;
|
||||
PCF_Encoding encodings = cmap->encodings;
|
||||
FT_UInt min, max, mid;
|
||||
FT_UInt result = 0;
|
||||
FT_UInt result = 0;
|
||||
|
||||
|
||||
min = 0;
|
||||
@ -115,13 +124,14 @@ THE SOFTWARE.
|
||||
|
||||
|
||||
FT_CALLBACK_DEF( FT_UInt )
|
||||
pcf_cmap_char_next( PCF_CMap cmap,
|
||||
pcf_cmap_char_next( FT_CMap pcfcmap, /* PCF_CMap */
|
||||
FT_UInt32 *acharcode )
|
||||
{
|
||||
PCF_CMap cmap = (PCF_CMap)pcfcmap;
|
||||
PCF_Encoding encodings = cmap->encodings;
|
||||
FT_UInt min, max, mid;
|
||||
FT_UInt32 charcode = *acharcode + 1;
|
||||
FT_UInt result = 0;
|
||||
FT_UInt32 charcode = *acharcode + 1;
|
||||
FT_UInt result = 0;
|
||||
|
||||
|
||||
min = 0;
|
||||
@ -163,10 +173,10 @@ THE SOFTWARE.
|
||||
FT_CALLBACK_TABLE_DEF const FT_CMap_ClassRec pcf_cmap_class =
|
||||
{
|
||||
sizeof( PCF_CMapRec ),
|
||||
(FT_CMap_InitFunc) pcf_cmap_init,
|
||||
(FT_CMap_DoneFunc) pcf_cmap_done,
|
||||
(FT_CMap_CharIndexFunc)pcf_cmap_char_index,
|
||||
(FT_CMap_CharNextFunc) pcf_cmap_char_next
|
||||
pcf_cmap_init,
|
||||
pcf_cmap_done,
|
||||
pcf_cmap_char_index,
|
||||
pcf_cmap_char_next
|
||||
};
|
||||
|
||||
|
||||
@ -180,9 +190,10 @@ THE SOFTWARE.
|
||||
#define FT_COMPONENT trace_pcfdriver
|
||||
|
||||
|
||||
FT_CALLBACK_DEF( FT_Error )
|
||||
PCF_Face_Done( PCF_Face face )
|
||||
FT_CALLBACK_DEF( void )
|
||||
PCF_Face_Done( FT_Face pcfface ) /* PCF_Face */
|
||||
{
|
||||
PCF_Face face = (PCF_Face)pcfface;
|
||||
FT_Memory memory = FT_FACE_MEMORY( face );
|
||||
|
||||
|
||||
@ -208,31 +219,30 @@ THE SOFTWARE.
|
||||
}
|
||||
|
||||
FT_FREE( face->toc.tables );
|
||||
FT_FREE( face->root.family_name );
|
||||
FT_FREE( face->root.available_sizes );
|
||||
FT_FREE( pcfface->family_name );
|
||||
FT_FREE( pcfface->available_sizes );
|
||||
FT_FREE( face->charset_encoding );
|
||||
FT_FREE( face->charset_registry );
|
||||
|
||||
FT_TRACE4(( "PCF_Face_Done: done face\n" ));
|
||||
|
||||
/* close gzip/LZW stream if any */
|
||||
if ( face->root.stream == &face->gzip_stream )
|
||||
if ( pcfface->stream == &face->gzip_stream )
|
||||
{
|
||||
FT_Stream_Close( &face->gzip_stream );
|
||||
face->root.stream = face->gzip_source;
|
||||
pcfface->stream = face->gzip_source;
|
||||
}
|
||||
|
||||
return PCF_Err_Ok;
|
||||
}
|
||||
|
||||
|
||||
FT_CALLBACK_DEF( FT_Error )
|
||||
PCF_Face_Init( FT_Stream stream,
|
||||
PCF_Face face,
|
||||
FT_Face pcfface, /* PCF_Face */
|
||||
FT_Int face_index,
|
||||
FT_Int num_params,
|
||||
FT_Parameter* params )
|
||||
{
|
||||
PCF_Face face = (PCF_Face)pcfface;
|
||||
FT_Error error = PCF_Err_Ok;
|
||||
|
||||
FT_UNUSED( num_params );
|
||||
@ -267,9 +277,9 @@ THE SOFTWARE.
|
||||
goto Fail;
|
||||
|
||||
face->gzip_source = stream;
|
||||
face->root.stream = &face->gzip_stream;
|
||||
pcfface->stream = &face->gzip_stream;
|
||||
|
||||
stream = face->root.stream;
|
||||
stream = pcfface->stream;
|
||||
|
||||
error = pcf_load_font( stream, face );
|
||||
if ( error )
|
||||
@ -278,9 +288,9 @@ THE SOFTWARE.
|
||||
else
|
||||
{
|
||||
face->gzip_source = stream;
|
||||
face->root.stream = &face->gzip_stream;
|
||||
pcfface->stream = &face->gzip_stream;
|
||||
|
||||
stream = face->root.stream;
|
||||
stream = pcfface->stream;
|
||||
|
||||
error = pcf_load_font( stream, face );
|
||||
if ( error )
|
||||
@ -337,8 +347,8 @@ THE SOFTWARE.
|
||||
|
||||
#if 0
|
||||
/* Select default charmap */
|
||||
if (face->root.num_charmaps)
|
||||
face->root.charmap = face->root.charmaps[0];
|
||||
if ( pcfface->num_charmaps )
|
||||
pcfface->charmap = pcfface->charmaps[0];
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -353,10 +363,15 @@ THE SOFTWARE.
|
||||
}
|
||||
|
||||
|
||||
static FT_Error
|
||||
PCF_Set_Pixel_Size( FT_Size size )
|
||||
FT_CALLBACK_DEF( FT_Error )
|
||||
PCF_Set_Pixel_Size( FT_Size size,
|
||||
FT_UInt pixel_width,
|
||||
FT_UInt pixel_height )
|
||||
{
|
||||
PCF_Face face = (PCF_Face)FT_SIZE_FACE( size );
|
||||
PCF_Face face = (PCF_Face)FT_SIZE_FACE( size );
|
||||
|
||||
FT_UNUSED( pixel_width );
|
||||
FT_UNUSED( pixel_height );
|
||||
|
||||
|
||||
FT_TRACE4(( "rec %d - pres %d\n", size->metrics.y_ppem,
|
||||
@ -384,7 +399,23 @@ THE SOFTWARE.
|
||||
}
|
||||
|
||||
|
||||
static FT_Error
|
||||
FT_CALLBACK_DEF( FT_Error )
|
||||
PCF_Set_Point_Size( FT_Size size,
|
||||
FT_F26Dot6 char_width,
|
||||
FT_F26Dot6 char_height,
|
||||
FT_UInt horz_resolution,
|
||||
FT_UInt vert_resolution )
|
||||
{
|
||||
FT_UNUSED( char_width );
|
||||
FT_UNUSED( char_height );
|
||||
FT_UNUSED( horz_resolution );
|
||||
FT_UNUSED( vert_resolution );
|
||||
|
||||
return PCF_Set_Pixel_Size( size, 0, 0 );
|
||||
}
|
||||
|
||||
|
||||
FT_CALLBACK_DEF( FT_Error )
|
||||
PCF_Glyph_Load( FT_GlyphSlot slot,
|
||||
FT_Size size,
|
||||
FT_UInt glyph_index,
|
||||
@ -568,7 +599,7 @@ THE SOFTWARE.
|
||||
};
|
||||
|
||||
|
||||
static FT_Module_Interface
|
||||
FT_CALLBACK_DEF( FT_Module_Interface )
|
||||
pcf_driver_requester( FT_Module module,
|
||||
const char* name )
|
||||
{
|
||||
@ -592,30 +623,30 @@ THE SOFTWARE.
|
||||
|
||||
0,
|
||||
|
||||
(FT_Module_Constructor)0,
|
||||
(FT_Module_Destructor) 0,
|
||||
(FT_Module_Requester) pcf_driver_requester
|
||||
0,
|
||||
0,
|
||||
pcf_driver_requester
|
||||
},
|
||||
|
||||
sizeof( PCF_FaceRec ),
|
||||
sizeof( FT_SizeRec ),
|
||||
sizeof( FT_GlyphSlotRec ),
|
||||
sizeof ( PCF_FaceRec ),
|
||||
sizeof ( FT_SizeRec ),
|
||||
sizeof ( FT_GlyphSlotRec ),
|
||||
|
||||
(FT_Face_InitFunc) PCF_Face_Init,
|
||||
(FT_Face_DoneFunc) PCF_Face_Done,
|
||||
(FT_Size_InitFunc) 0,
|
||||
(FT_Size_DoneFunc) 0,
|
||||
(FT_Slot_InitFunc) 0,
|
||||
(FT_Slot_DoneFunc) 0,
|
||||
PCF_Face_Init,
|
||||
PCF_Face_Done,
|
||||
0, /* FT_Size_InitFunc */
|
||||
0, /* FT_Size_DoneFunc */
|
||||
0, /* FT_Slot_InitFunc */
|
||||
0, /* FT_Slot_DoneFunc */
|
||||
|
||||
(FT_Size_ResetPointsFunc) PCF_Set_Pixel_Size,
|
||||
(FT_Size_ResetPixelsFunc) PCF_Set_Pixel_Size,
|
||||
PCF_Set_Point_Size,
|
||||
PCF_Set_Pixel_Size,
|
||||
|
||||
(FT_Slot_LoadFunc) PCF_Glyph_Load,
|
||||
PCF_Glyph_Load,
|
||||
|
||||
(FT_Face_GetKerningFunc) 0,
|
||||
(FT_Face_AttachFunc) 0,
|
||||
(FT_Face_GetAdvancesFunc) 0
|
||||
0, /* FT_Face_GetKerningFunc */
|
||||
0, /* FT_Face_AttachFunc */
|
||||
0 /* FT_Face_GetAdvancesFunc */
|
||||
};
|
||||
|
||||
|
||||
|
@ -738,15 +738,25 @@
|
||||
if ( ((TT_Face)load->face)->doblend )
|
||||
{
|
||||
/* Deltas apply to the unscaled data. */
|
||||
FT_Vector* deltas;
|
||||
FT_Memory memory = load->face->memory;
|
||||
FT_UInt i;
|
||||
FT_Vector* deltas;
|
||||
FT_Memory memory = load->face->memory;
|
||||
FT_StreamRec saved_stream = *(load->stream);
|
||||
FT_UInt i;
|
||||
|
||||
|
||||
if ( ( error = TT_Vary_Get_Glyph_Deltas( (TT_Face)(load->face),
|
||||
load->glyph_index,
|
||||
&deltas,
|
||||
n_points ) ) )
|
||||
/* TT_Vary_Get_Glyph_Deltas uses a frame, thus we have to save */
|
||||
/* (and restore) the current one */
|
||||
load->stream->cursor = 0;
|
||||
load->stream->limit = 0;
|
||||
|
||||
error = TT_Vary_Get_Glyph_Deltas( (TT_Face)(load->face),
|
||||
load->glyph_index,
|
||||
&deltas,
|
||||
n_points );
|
||||
|
||||
*(load->stream) = saved_stream;
|
||||
|
||||
if ( error )
|
||||
goto Exit;
|
||||
|
||||
for ( i = 0; i < n_points; ++i )
|
||||
@ -863,7 +873,7 @@
|
||||
#endif
|
||||
|
||||
FT_Error error;
|
||||
TT_Face face = (TT_Face)loader->face;
|
||||
TT_Face face = (TT_Face)loader->face;
|
||||
FT_ULong offset;
|
||||
FT_Int contours_count;
|
||||
FT_UInt num_points, count;
|
||||
@ -872,9 +882,9 @@
|
||||
FT_Bool opened_frame = 0;
|
||||
|
||||
#ifdef FT_CONFIG_OPTION_INCREMENTAL
|
||||
struct FT_StreamRec_ inc_stream;
|
||||
FT_Data glyph_data;
|
||||
FT_Bool glyph_data_loaded = 0;
|
||||
FT_StreamRec inc_stream;
|
||||
FT_Data glyph_data;
|
||||
FT_Bool glyph_data_loaded = 0;
|
||||
#endif
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
||||
|
Loading…
Reference in New Issue
Block a user