Complementing David's changes with formatting, adding documentation, etc.

More `*'-convention formatting, adding the `a' resp. `an' prefix to
variables.
This commit is contained in:
Werner Lemberg 2000-11-07 06:30:29 +00:00
parent c6fa4aff2e
commit 4b68007b4f
30 changed files with 309 additions and 237 deletions

View File

@ -280,7 +280,9 @@
their relationships</p> their relationships</p>
<center> <center>
<img src="simple-model.png" width=453 height=378> <img src="simple-model.png"
width=453 height=378
alt="Simple library model">
</center> </center>
<p>Note that this picture will be updated at the end of the next <p>Note that this picture will be updated at the end of the next

View File

@ -291,7 +291,9 @@
graph of FreeType&nbsp;2's base design:</p> graph of FreeType&nbsp;2's base design:</p>
<center> <center>
<img alt="Library Model" src="library-model.png" width=411 height=405> <img src="library-model.png"
width=411 height=405
alt="Complete library model">
</center> </center>
</td></tr> </td></tr>

View File

@ -297,8 +297,8 @@
#define FT_FACE_SIZE( x ) FT_FACE( x )->size #define FT_FACE_SIZE( x ) FT_FACE( x )->size
/* this must be kept exported -- it is used by the cache manager */ /* this must be kept exported -- it is used by the cache manager */
/* even though it shouldn't be considered public for now.. */ /* even though it shouldn't be considered public for now */
FT_EXPORT( FT_Error ) FT_New_Size( FT_Face face, FT_EXPORT( FT_Error ) FT_New_Size( FT_Face face,
FT_Size* size ); FT_Size* size );

View File

@ -243,7 +243,7 @@
FT_Error (*TT_Load_Any_Func)( TT_Face face, FT_Error (*TT_Load_Any_Func)( TT_Face face,
FT_ULong tag, FT_ULong tag,
FT_Long offset, FT_Long offset,
FT_Byte* buffer, FT_Byte *buffer,
FT_ULong* length ); FT_ULong* length );
@ -268,9 +268,9 @@
/* stream :: The input stream. */ /* stream :: The input stream. */
/* */ /* */
/* <Output> */ /* <Output> */
/* map :: The target pixmap. */ /* amap :: The target pixmap. */
/* */ /* */
/* metrics :: A big sbit metrics structure for the glyph image. */ /* ametrics :: A big sbit metrics structure for the glyph image. */
/* */ /* */
/* <Return> */ /* <Return> */
/* FreeType error code. 0 means success. Returns an error if no */ /* FreeType error code. 0 means success. Returns an error if no */
@ -281,18 +281,43 @@
/* */ /* */
typedef typedef
FT_Error (*TT_Load_SBit_Image_Func)( TT_Face face, FT_Error (*TT_Load_SBit_Image_Func)( TT_Face face,
FT_ULong strike_index, FT_ULong strike_index,
FT_UInt glyph_index, FT_UInt glyph_index,
FT_UInt load_flags, FT_UInt load_flags,
FT_Stream stream, FT_Stream stream,
FT_Bitmap* map, FT_Bitmap *amap,
TT_SBit_Metrics* metrics ); TT_SBit_Metrics *ametrics );
/*************************************************************************/
/* */
/* <FuncType> */
/* TT_Set_SBit_Strike_Func */
/* */
/* <Description> */
/* Selects an sbit strike for given horizontal and vertical ppem */
/* values. */
/* */
/* <Input> */
/* face :: The target face object. */
/* */
/* x_ppem :: The horizontal resolution in points per EM. */
/* */
/* y_ppem :: The vertical resolution in points per EM. */
/* */
/* <Output> */
/* astrike_index :: The index of the sbit strike. */
/* */
/* <Return> */
/* FreeType error code. 0 means success. Returns an error if no */
/* sbit strike exists for the selected ppem values. */
/* */
typedef typedef
FT_Error (*TT_Set_SBit_Strike_Func)( TT_Face face, FT_Error (*TT_Set_SBit_Strike_Func)( TT_Face face,
FT_Int x_ppem, FT_Int x_ppem,
FT_Int y_ppem, FT_Int y_ppem,
FT_ULong* astrike_index ); FT_ULong *astrike_index );
/*************************************************************************/ /*************************************************************************/
/* */ /* */
@ -479,9 +504,11 @@
TT_Load_Table_Func load_gasp; TT_Load_Table_Func load_gasp;
TT_Load_Table_Func load_pclt; TT_Load_Table_Func load_pclt;
/* see `ttload.h' */
TT_Load_Table_Func load_bitmap_header; TT_Load_Table_Func load_bitmap_header;
TT_Set_SBit_Strike_Func set_sbit_strike;
/* see `ttsbit.h' */ /* see `ttsbit.h' */
TT_Set_SBit_Strike_Func set_sbit_strike;
TT_Load_Table_Func load_sbits; TT_Load_Table_Func load_sbits;
TT_Load_SBit_Image_Func load_sbit_image; TT_Load_SBit_Image_Func load_sbit_image;
TT_Free_Table_Func free_sbits; TT_Free_Table_Func free_sbits;

View File

@ -700,11 +700,13 @@
/* */ /* */
/* index_ranges :: An array of glyph index ranges. */ /* index_ranges :: An array of glyph index ranges. */
/* */ /* */
/* color_ref :: Unused. color_ref is put in for future */ /* color_ref :: Unused. `color_ref' is put in for future */
/* enhancements, but these fields are already */ /* enhancements, but these fields are already */
/* in use by other platforms (e.g. Newton). */ /* in use by other platforms (e.g. Newton). */
/* For details, please see */ /* For details, please see */
/* http://fonts.apple.com/TTRefMan/RM06/Chap6bloc.html */ /* */
/* http://fonts.apple.com/ */
/* TTRefMan/RM06/Chap6bloc.html */
/* */ /* */
/* hori :: The line metrics for horizontal layouts. */ /* hori :: The line metrics for horizontal layouts. */
/* */ /* */
@ -721,9 +723,11 @@
/* bit_depth :: The bit depth. Valid values are 1, 2, 4, */ /* bit_depth :: The bit depth. Valid values are 1, 2, 4, */
/* and 8. */ /* and 8. */
/* */ /* */
/* flags :: Is this a vertical or horizontal strike? */ /* flags :: Is this a vertical or horizontal strike? For */
/* For details, please see */ /* details, please see */
/* http://fonts.apple.com/TTRefMan/RM06/Chap6bloc.html */ /* */
/* http://fonts.apple.com/ */
/* TTRefMan/RM06/Chap6bloc.html */
/* */ /* */
typedef struct TT_SBit_Strike_ typedef struct TT_SBit_Strike_
{ {

View File

@ -357,7 +357,7 @@
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
FT_EXPORT_DEF( FT_Error ) FT_Outline_Get_BBox( FT_Outline* outline, FT_EXPORT_DEF( FT_Error ) FT_Outline_Get_BBox( FT_Outline* outline,
FT_BBox* abbox ) FT_BBox *abbox )
{ {
FT_BBox cbox; FT_BBox cbox;
FT_BBox bbox; FT_BBox bbox;

View File

@ -532,7 +532,7 @@
/* */ /* */
FT_EXPORT_DEF( void ) FT_Add64( FT_Int64* x, FT_EXPORT_DEF( void ) FT_Add64( FT_Int64* x,
FT_Int64* y, FT_Int64* y,
FT_Int64* z ) FT_Int64 *z )
{ {
register FT_UInt32 lo, hi; register FT_UInt32 lo, hi;
@ -565,7 +565,7 @@
/* */ /* */
FT_EXPORT_DEF( void ) FT_MulTo64( FT_Int32 x, FT_EXPORT_DEF( void ) FT_MulTo64( FT_Int32 x,
FT_Int32 y, FT_Int32 y,
FT_Int64* z ) FT_Int64 *z )
{ {
FT_Int32 s; FT_Int32 s;

View File

@ -424,7 +424,7 @@
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
FT_EXPORT_DEF( FT_Error ) FT_Glyph_Copy( FT_Glyph source, FT_EXPORT_DEF( FT_Error ) FT_Glyph_Copy( FT_Glyph source,
FT_Glyph* target ) FT_Glyph *target )
{ {
FT_Glyph copy; FT_Glyph copy;
FT_Error error; FT_Error error;
@ -476,7 +476,7 @@
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
FT_EXPORT_DEF( FT_Error ) FT_Get_Glyph( FT_GlyphSlot slot, FT_EXPORT_DEF( FT_Error ) FT_Get_Glyph( FT_GlyphSlot slot,
FT_Glyph* aglyph ) FT_Glyph *aglyph )
{ {
FT_Library library = slot->library; FT_Library library = slot->library;
FT_Error error; FT_Error error;
@ -646,13 +646,13 @@
/* */ /* */
FT_EXPORT_DEF( void ) FT_Glyph_Get_CBox( FT_Glyph glyph, FT_EXPORT_DEF( void ) FT_Glyph_Get_CBox( FT_Glyph glyph,
FT_UInt bbox_mode, FT_UInt bbox_mode,
FT_BBox* cbox ) FT_BBox *acbox )
{ {
const FT_Glyph_Class* clazz; const FT_Glyph_Class* clazz;
FT_Error error = FT_Err_Ok; FT_Error error = FT_Err_Ok;
if ( !cbox || !glyph || !glyph->clazz ) if ( !acbox || !glyph || !glyph->clazz )
error = FT_Err_Invalid_Argument; error = FT_Err_Invalid_Argument;
else else
{ {
@ -662,24 +662,24 @@
else else
{ {
/* retrieve bbox in 26.6 coordinates */ /* retrieve bbox in 26.6 coordinates */
clazz->glyph_bbox( glyph, cbox ); clazz->glyph_bbox( glyph, acbox );
/* perform grid fitting if needed */ /* perform grid fitting if needed */
if ( bbox_mode & ft_glyph_bbox_gridfit ) if ( bbox_mode & ft_glyph_bbox_gridfit )
{ {
cbox->xMin &= -64; acbox->xMin &= -64;
cbox->yMin &= -64; acbox->yMin &= -64;
cbox->xMax = ( cbox->xMax + 63 ) & -64; acbox->xMax = ( acbox->xMax + 63 ) & -64;
cbox->yMax = ( cbox->yMax + 63 ) & -64; acbox->yMax = ( acbox->yMax + 63 ) & -64;
} }
/* convert to integer pixels if needed */ /* convert to integer pixels if needed */
if ( bbox_mode & ft_glyph_bbox_truncate ) if ( bbox_mode & ft_glyph_bbox_truncate )
{ {
cbox->xMin >>= 6; acbox->xMin >>= 6;
cbox->yMin >>= 6; acbox->yMin >>= 6;
cbox->xMax >>= 6; acbox->xMax >>= 6;
cbox->yMax >>= 6; acbox->yMax >>= 6;
} }
} }
} }

View File

@ -123,7 +123,7 @@ const FT_Module_Class* const ft_default_modules[] =
/* <Return> */ /* <Return> */
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
FT_EXPORT_DEF( FT_Error ) FT_Init_FreeType( FT_Library* library ) FT_EXPORT_DEF( FT_Error ) FT_Init_FreeType( FT_Library *alibrary )
{ {
FT_Error error; FT_Error error;
FT_Memory memory; FT_Memory memory;
@ -142,9 +142,9 @@ const FT_Module_Class* const ft_default_modules[] =
/* build a library out of it, then fill it with the set of */ /* build a library out of it, then fill it with the set of */
/* default drivers. */ /* default drivers. */
error = FT_New_Library( memory, library ); error = FT_New_Library( memory, alibrary );
if ( !error ) if ( !error )
FT_Add_Default_Modules( *library ); FT_Add_Default_Modules( *alibrary );
return error; return error;
} }

View File

@ -638,7 +638,7 @@
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
/* <Notes> */ /* <Notes> */
/* This function can be used to create FT_Face abjects from fonts */ /* This function can be used to create FT_Face objects from fonts */
/* that are installed in the system like so: */ /* that are installed in the system like so: */
/* */ /* */
/* fond = GetResource( 'FOND', fontName ); */ /* fond = GetResource( 'FOND', fontName ); */
@ -647,7 +647,7 @@
FT_EXPORT_DEF( FT_Error ) FT_New_Face_From_FOND( FT_Library library, FT_EXPORT_DEF( FT_Error ) FT_New_Face_From_FOND( FT_Library library,
Handle fond, Handle fond,
FT_Long face_index, FT_Long face_index,
FT_Face* aface ) FT_Face *aface )
{ {
short sfnt_id, have_sfnt, have_lwfn = 0; short sfnt_id, have_sfnt, have_lwfn = 0;
Str255 lwfn_file_name; Str255 lwfn_file_name;
@ -703,7 +703,7 @@
FT_EXPORT_DEF( FT_Error ) FT_New_Face( FT_Library library, FT_EXPORT_DEF( FT_Error ) FT_New_Face( FT_Library library,
const char* pathname, const char* pathname,
FT_Long face_index, FT_Long face_index,
FT_Face* aface ) FT_Face *aface )
{ {
FT_Open_Args args; FT_Open_Args args;
FSSpec spec; FSSpec spec;

View File

@ -48,7 +48,7 @@
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
FT_EXPORT_DEF( FT_Error ) FT_Get_Multi_Master( FT_Face face, FT_EXPORT_DEF( FT_Error ) FT_Get_Multi_Master( FT_Face face,
FT_Multi_Master* master ) FT_Multi_Master *amaster )
{ {
FT_Error error; FT_Error error;
@ -67,7 +67,7 @@
func = (FT_Get_MM_Func)driver->root.clazz->get_interface( func = (FT_Get_MM_Func)driver->root.clazz->get_interface(
FT_MODULE( driver ), "get_mm" ); FT_MODULE( driver ), "get_mm" );
if ( func ) if ( func )
error = func( face, master ); error = func( face, amaster );
} }
return error; return error;

View File

@ -75,7 +75,7 @@
/* */ /* */
FT_EXPORT_DEF( FT_Error ) FT_Get_Sfnt_Name( FT_Face face, FT_EXPORT_DEF( FT_Error ) FT_Get_Sfnt_Name( FT_Face face,
FT_UInt index, FT_UInt index,
FT_SfntName* aname ) FT_SfntName *aname )
{ {
FT_Error error = FT_Err_Invalid_Argument; FT_Error error = FT_Err_Invalid_Argument;

View File

@ -1337,7 +1337,7 @@
FT_EXPORT_DEF( FT_Error ) FT_New_Face( FT_Library library, FT_EXPORT_DEF( FT_Error ) FT_New_Face( FT_Library library,
const char* pathname, const char* pathname,
FT_Long face_index, FT_Long face_index,
FT_Face* aface ) FT_Face *aface )
{ {
FT_Open_Args args; FT_Open_Args args;
@ -1399,7 +1399,7 @@
FT_Byte* file_base, FT_Byte* file_base,
FT_Long file_size, FT_Long file_size,
FT_Long face_index, FT_Long face_index,
FT_Face* face ) FT_Face *aface )
{ {
FT_Open_Args args; FT_Open_Args args;
@ -1412,7 +1412,7 @@
args.memory_base = file_base; args.memory_base = file_base;
args.memory_size = file_size; args.memory_size = file_size;
return FT_Open_Face( library, &args, face_index, face ); return FT_Open_Face( library, &args, face_index, aface );
} }
@ -1459,7 +1459,7 @@
FT_EXPORT_DEF( FT_Error ) FT_Open_Face( FT_Library library, FT_EXPORT_DEF( FT_Error ) FT_Open_Face( FT_Library library,
FT_Open_Args* args, FT_Open_Args* args,
FT_Long face_index, FT_Long face_index,
FT_Face* aface ) FT_Face *aface )
{ {
FT_Error error; FT_Error error;
FT_Driver driver; FT_Driver driver;
@ -1810,7 +1810,7 @@
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
FT_EXPORT_DEF( FT_Error ) FT_New_Size( FT_Face face, FT_EXPORT_DEF( FT_Error ) FT_New_Size( FT_Face face,
FT_Size* asize ) FT_Size *asize )
{ {
FT_Error error; FT_Error error;
FT_Memory memory; FT_Memory memory;
@ -2178,7 +2178,7 @@
FT_UInt left_glyph, FT_UInt left_glyph,
FT_UInt right_glyph, FT_UInt right_glyph,
FT_UInt kern_mode, FT_UInt kern_mode,
FT_Vector* kerning ) FT_Vector *akerning )
{ {
FT_Error error = FT_Err_Ok; FT_Error error = FT_Err_Ok;
FT_Driver driver; FT_Driver driver;
@ -2188,32 +2188,32 @@
if ( !face ) if ( !face )
return FT_Err_Invalid_Face_Handle; return FT_Err_Invalid_Face_Handle;
if ( !kerning ) if ( !akerning )
return FT_Err_Invalid_Argument; return FT_Err_Invalid_Argument;
driver = face->driver; driver = face->driver;
memory = driver->root.memory; memory = driver->root.memory;
kerning->x = 0; akerning->x = 0;
kerning->y = 0; akerning->y = 0;
if ( driver->clazz->get_kerning ) if ( driver->clazz->get_kerning )
{ {
error = driver->clazz->get_kerning( face, error = driver->clazz->get_kerning( face,
left_glyph, left_glyph,
right_glyph, right_glyph,
kerning ); akerning );
if ( !error ) if ( !error )
{ {
if ( kern_mode != ft_kerning_unscaled ) if ( kern_mode != ft_kerning_unscaled )
{ {
kerning->x = FT_MulFix( kerning->x, face->size->metrics.x_scale ); akerning->x = FT_MulFix( akerning->x, face->size->metrics.x_scale );
kerning->y = FT_MulFix( kerning->y, face->size->metrics.y_scale ); akerning->y = FT_MulFix( akerning->y, face->size->metrics.y_scale );
if ( kern_mode != ft_kerning_unfitted ) if ( kern_mode != ft_kerning_unfitted )
{ {
kerning->x = ( kerning->x + 32 ) & -64; akerning->x = ( akerning->x + 32 ) & -64;
kerning->y = ( kerning->y + 32 ) & -64; akerning->y = ( akerning->y + 32 ) & -64;
} }
} }
} }
@ -3203,7 +3203,7 @@
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
FT_EXPORT_DEF( FT_Error ) FT_New_Library( FT_Memory memory, FT_EXPORT_DEF( FT_Error ) FT_New_Library( FT_Memory memory,
FT_Library* alibrary ) FT_Library *alibrary )
{ {
FT_Library library = 0; FT_Library library = 0;
FT_Error error; FT_Error error;

View File

@ -274,30 +274,30 @@
FT_Memory memory, FT_Memory memory,
FT_UInt numPoints, FT_UInt numPoints,
FT_Int numContours, FT_Int numContours,
FT_Outline* outline ) FT_Outline *anoutline )
{ {
FT_Error error; FT_Error error;
if ( !outline || !memory ) if ( !anoutline || !memory )
return FT_Err_Invalid_Argument; return FT_Err_Invalid_Argument;
*outline = null_outline; *anoutline = null_outline;
if ( ALLOC_ARRAY( outline->points, numPoints * 2L, FT_Pos ) || if ( ALLOC_ARRAY( anoutline->points, numPoints * 2L, FT_Pos ) ||
ALLOC_ARRAY( outline->tags, numPoints, FT_Byte ) || ALLOC_ARRAY( anoutline->tags, numPoints, FT_Byte ) ||
ALLOC_ARRAY( outline->contours, numContours, FT_UShort ) ) ALLOC_ARRAY( anoutline->contours, numContours, FT_UShort ) )
goto Fail; goto Fail;
outline->n_points = (FT_UShort)numPoints; anoutline->n_points = (FT_UShort)numPoints;
outline->n_contours = (FT_Short)numContours; anoutline->n_contours = (FT_Short)numContours;
outline->flags |= ft_outline_owner; anoutline->flags |= ft_outline_owner;
return FT_Err_Ok; return FT_Err_Ok;
Fail: Fail:
outline->flags |= ft_outline_owner; anoutline->flags |= ft_outline_owner;
FT_Outline_Done_Internal( memory, outline ); FT_Outline_Done_Internal( memory, anoutline );
return error; return error;
} }
@ -338,13 +338,13 @@
FT_EXPORT_DEF( FT_Error ) FT_Outline_New( FT_Library library, FT_EXPORT_DEF( FT_Error ) FT_Outline_New( FT_Library library,
FT_UInt numPoints, FT_UInt numPoints,
FT_Int numContours, FT_Int numContours,
FT_Outline* outline ) FT_Outline *anoutline )
{ {
if ( !library ) if ( !library )
return FT_Err_Invalid_Library_Handle; return FT_Err_Invalid_Library_Handle;
return FT_Outline_New_Internal( library->memory, numPoints, return FT_Outline_New_Internal( library->memory, numPoints,
numContours, outline ); numContours, anoutline );
} }
@ -368,7 +368,7 @@
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
FT_EXPORT_DEF( FT_Error ) FT_Outline_Copy( FT_Outline* source, FT_EXPORT_DEF( FT_Error ) FT_Outline_Copy( FT_Outline* source,
FT_Outline* target ) FT_Outline *target )
{ {
FT_Int is_owner; FT_Int is_owner;
@ -484,12 +484,12 @@
/* Yes. */ /* Yes. */
/* */ /* */
FT_EXPORT_DEF( void ) FT_Outline_Get_CBox( FT_Outline* outline, FT_EXPORT_DEF( void ) FT_Outline_Get_CBox( FT_Outline* outline,
FT_BBox* cbox ) FT_BBox *acbox )
{ {
FT_Pos xMin, yMin, xMax, yMax; FT_Pos xMin, yMin, xMax, yMax;
if ( outline && cbox ) if ( outline && acbox )
{ {
if ( outline->n_points == 0 ) if ( outline->n_points == 0 )
{ {
@ -522,10 +522,10 @@
if ( y > yMax ) yMax = y; if ( y > yMax ) yMax = y;
} }
} }
cbox->xMin = xMin; acbox->xMin = xMin;
cbox->xMax = xMax; acbox->xMax = xMax;
cbox->yMin = yMin; acbox->yMin = yMin;
cbox->yMax = yMax; acbox->yMax = yMax;
} }
} }
@ -747,20 +747,20 @@
/* */ /* */
FT_EXPORT_DEF( FT_Error ) FT_Outline_Get_Bitmap( FT_Library library, FT_EXPORT_DEF( FT_Error ) FT_Outline_Get_Bitmap( FT_Library library,
FT_Outline* outline, FT_Outline* outline,
FT_Bitmap* bitmap ) FT_Bitmap *abitmap )
{ {
FT_Raster_Params params; FT_Raster_Params params;
if ( !bitmap ) if ( !abitmap )
return FT_Err_Invalid_Argument; return FT_Err_Invalid_Argument;
/* other checks are delayed to FT_Outline_Render() */ /* other checks are delayed to FT_Outline_Render() */
params.target = bitmap; params.target = abitmap;
params.flags = 0; params.flags = 0;
if ( bitmap->pixel_mode == ft_pixel_mode_grays ) if ( abitmap->pixel_mode == ft_pixel_mode_grays )
params.flags |= ft_raster_flag_aa; params.flags |= ft_raster_flag_aa;
return FT_Outline_Render( library, outline, &params ); return FT_Outline_Render( library, outline, &params );

View File

@ -231,12 +231,12 @@
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
FT_EXPORT_DEF( FT_Error ) FT_New_Stream( const char* filepathname, FT_EXPORT_DEF( FT_Error ) FT_New_Stream( const char* filepathname,
FT_Stream stream ) FT_Stream astream )
{ {
FILE* file; FILE* file;
if ( !stream ) if ( !astream )
return FT_Err_Invalid_Stream_Handle; return FT_Err_Invalid_Stream_Handle;
file = fopen( filepathname, "rb" ); file = fopen( filepathname, "rb" );
@ -249,19 +249,19 @@
} }
fseek( file, 0, SEEK_END ); fseek( file, 0, SEEK_END );
stream->size = ftell( file ); astream->size = ftell( file );
fseek( file, 0, SEEK_SET ); fseek( file, 0, SEEK_SET );
stream->descriptor.pointer = file; astream->descriptor.pointer = file;
stream->pathname.pointer = (char*)filepathname; astream->pathname.pointer = (char*)filepathname;
stream->pos = 0; astream->pos = 0;
stream->read = ft_io_stream; astream->read = ft_io_stream;
stream->close = ft_close_stream; astream->close = ft_close_stream;
FT_TRACE1(( "FT_New_Stream:" )); FT_TRACE1(( "FT_New_Stream:" ));
FT_TRACE1(( " opened `%s' (%d bytes) successfully\n", FT_TRACE1(( " opened `%s' (%d bytes) successfully\n",
filepathname, stream->size )); filepathname, astream->size ));
return FT_Err_Ok; return FT_Err_Ok;
} }

10
src/cache/ftcchunk.c vendored
View File

@ -106,7 +106,7 @@
FT_EXPORT_DEF( FT_Error ) FTC_ChunkSet_New( FTC_Chunk_Cache cache, FT_EXPORT_DEF( FT_Error ) FTC_ChunkSet_New( FTC_Chunk_Cache cache,
FT_Pointer type, FT_Pointer type,
FTC_ChunkSet* aset ) FTC_ChunkSet *aset )
{ {
FT_Error error; FT_Error error;
FT_Memory memory = cache->root.memory; FT_Memory memory = cache->root.memory;
@ -206,8 +206,8 @@
FT_EXPORT_DEF( FT_Error ) FTC_ChunkSet_Lookup_Node( FT_EXPORT_DEF( FT_Error ) FTC_ChunkSet_Lookup_Node(
FTC_ChunkSet cset, FTC_ChunkSet cset,
FT_UInt glyph_index, FT_UInt glyph_index,
FTC_ChunkNode* anode, FTC_ChunkNode *anode,
FT_UInt* aindex ) FT_UInt *anindex )
{ {
FTC_Chunk_Cache cache = cset->cache; FTC_Chunk_Cache cache = cset->cache;
FTC_Manager manager = cache->root.manager; FTC_Manager manager = cache->root.manager;
@ -252,8 +252,8 @@
} }
} }
*anode = node; *anode = node;
*aindex = glyph_index - chunk_index * chunk_size; *anindex = glyph_index - chunk_index * chunk_size;
} }
Exit: Exit:

View File

@ -131,7 +131,7 @@
FT_EXPORT_DEF( FT_Error ) FTC_GlyphSet_New( FTC_Glyph_Cache cache, FT_EXPORT_DEF( FT_Error ) FTC_GlyphSet_New( FTC_Glyph_Cache cache,
FT_Pointer type, FT_Pointer type,
FTC_GlyphSet* aset ) FTC_GlyphSet *aset )
{ {
FT_Error error; FT_Error error;
FT_Memory memory = cache->root.memory; FT_Memory memory = cache->root.memory;
@ -228,7 +228,7 @@
FT_EXPORT_DEF( FT_Error ) FTC_GlyphSet_Lookup_Node( FT_EXPORT_DEF( FT_Error ) FTC_GlyphSet_Lookup_Node(
FTC_GlyphSet gset, FTC_GlyphSet gset,
FT_UInt glyph_index, FT_UInt glyph_index,
FTC_GlyphNode* anode ) FTC_GlyphNode *anode )
{ {
FTC_Glyph_Cache cache = gset->cache; FTC_Glyph_Cache cache = gset->cache;
FTC_Manager manager = cache->root.manager; FTC_Manager manager = cache->root.manager;

View File

@ -262,7 +262,7 @@
FT_EXPORT_DEF( FT_Error ) FTC_Image_Cache_New( FTC_Manager manager, FT_EXPORT_DEF( FT_Error ) FTC_Image_Cache_New( FTC_Manager manager,
FTC_Image_Cache* acache ) FTC_Image_Cache *acache )
{ {
return FTC_Manager_Register_Cache( return FTC_Manager_Register_Cache(
manager, manager,

10
src/cache/ftcmanag.c vendored
View File

@ -213,7 +213,7 @@
FT_ULong max_bytes, FT_ULong max_bytes,
FTC_Face_Requester requester, FTC_Face_Requester requester,
FT_Pointer req_data, FT_Pointer req_data,
FTC_Manager* amanager ) FTC_Manager *amanager )
{ {
FT_Error error; FT_Error error;
FT_Memory memory; FT_Memory memory;
@ -319,7 +319,7 @@
FT_EXPORT( FT_Error ) FTC_Manager_Lookup_Face( FTC_Manager manager, FT_EXPORT( FT_Error ) FTC_Manager_Lookup_Face( FTC_Manager manager,
FTC_FaceID face_id, FTC_FaceID face_id,
FT_Face* aface ) FT_Face *aface )
{ {
if ( !manager ) if ( !manager )
return FT_Err_Invalid_Cache_Handle; return FT_Err_Invalid_Cache_Handle;
@ -332,8 +332,8 @@
FT_EXPORT( FT_Error ) FTC_Manager_Lookup_Size( FTC_Manager manager, FT_EXPORT( FT_Error ) FTC_Manager_Lookup_Size( FTC_Manager manager,
FTC_Font font, FTC_Font font,
FT_Face* aface, FT_Face *aface,
FT_Size* asize ) FT_Size *asize )
{ {
FTC_FontRequest req; FTC_FontRequest req;
FT_Error error; FT_Error error;
@ -428,7 +428,7 @@
FT_EXPORT( FT_Error ) FTC_Manager_Register_Cache( FT_EXPORT( FT_Error ) FTC_Manager_Register_Cache(
FTC_Manager manager, FTC_Manager manager,
FTC_Cache_Class* clazz, FTC_Cache_Class* clazz,
FTC_Cache* acache ) FTC_Cache *acache )
{ {
FT_Error error = FT_Err_Invalid_Argument; FT_Error error = FT_Err_Invalid_Argument;

14
src/cache/ftcsbits.c vendored
View File

@ -355,7 +355,7 @@
FT_EXPORT_DEF( FT_Error ) FTC_SBit_Cache_New( FTC_Manager manager, FT_EXPORT_DEF( FT_Error ) FTC_SBit_Cache_New( FTC_Manager manager,
FTC_SBit_Cache* acache ) FTC_SBit_Cache *acache )
{ {
return FTC_Manager_Register_Cache( return FTC_Manager_Register_Cache(
manager, manager,
@ -367,21 +367,21 @@
FT_EXPORT( FT_Error ) FTC_SBit_Cache_Lookup( FTC_SBit_Cache cache, FT_EXPORT( FT_Error ) FTC_SBit_Cache_Lookup( FTC_SBit_Cache cache,
FTC_Image_Desc* desc, FTC_Image_Desc* desc,
FT_UInt gindex, FT_UInt gindex,
FTC_SBit* asbit ) FTC_SBit *ansbit )
{ {
FT_Error error; FT_Error error;
FTC_ChunkNode node; FTC_ChunkNode node;
FT_UInt cindex; FT_UInt cindex;
/* argument checks delayed to FTC_Chunk_Cache_Lookup */ /* argument checks delayed to FTC_Chunk_Cache_Lookup */
if (!asbit) if (!ansbit)
return FT_Err_Invalid_Argument; return FT_Err_Invalid_Argument;
*asbit = 0; *ansbit = 0;
error = FTC_Chunk_Cache_Lookup( &cache->root, desc, gindex, error = FTC_Chunk_Cache_Lookup( &cache->root, desc, gindex,
&node, &cindex ); &node, &cindex );
if (!error) if (!error)
*asbit = (FTC_SBit)node->elements + cindex; *ansbit = (FTC_SBit)node->elements + cindex;
return error; return error;
} }

18
src/cache/ftlru.c vendored
View File

@ -41,16 +41,16 @@
FT_Pointer user_data, FT_Pointer user_data,
FT_Memory memory, FT_Memory memory,
FT_Bool pre_alloc, FT_Bool pre_alloc,
FT_Lru* alru ) FT_Lru *anlru )
{ {
FT_Error error; FT_Error error;
FT_Lru lru; FT_Lru lru;
if ( !alru ) if ( !anlru )
return FT_Err_Invalid_Argument; return FT_Err_Invalid_Argument;
*alru = 0; *anlru = 0;
if ( !ALLOC( lru, sizeof ( *lru ) ) ) if ( !ALLOC( lru, sizeof ( *lru ) ) )
{ {
if ( pre_alloc ) if ( pre_alloc )
@ -72,7 +72,7 @@
lru->memory = memory; lru->memory = memory;
lru->user_data = user_data; lru->user_data = user_data;
*alru = lru; *anlru = lru;
} }
Exit: Exit:
@ -132,7 +132,7 @@
FT_EXPORT_DEF( FT_Error ) FT_Lru_Lookup_Node( FT_Lru lru, FT_EXPORT_DEF( FT_Error ) FT_Lru_Lookup_Node( FT_Lru lru,
FT_LruKey key, FT_LruKey key,
FT_LruNode* anode ) FT_LruNode *anode )
{ {
FT_Error error = 0; FT_Error error = 0;
FT_ListNode node; FT_ListNode node;
@ -258,7 +258,7 @@
FT_EXPORT_DEF( FT_Error ) FT_Lru_Lookup( FT_Lru lru, FT_EXPORT_DEF( FT_Error ) FT_Lru_Lookup( FT_Lru lru,
FT_LruKey key, FT_LruKey key,
FT_Pointer* aobject ) FT_Pointer *anobject )
{ {
FT_Error error; FT_Error error;
FT_LruNode node; FT_LruNode node;
@ -266,13 +266,13 @@
/* check for valid `lru' and `key' delayed to FT_Lru_Lookup_Node() */ /* check for valid `lru' and `key' delayed to FT_Lru_Lookup_Node() */
if ( !aobject ) if ( !anobject )
return FT_Err_Invalid_Argument; return FT_Err_Invalid_Argument;
*aobject = 0; *anobject = 0;
error = FT_Lru_Lookup_Node( lru, key, &node ); error = FT_Lru_Lookup_Node( lru, key, &node );
if ( !error ) if ( !error )
*aobject = node->root.data; *anobject = node->root.data;
return error; return error;
} }

View File

@ -172,7 +172,7 @@
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
/* see `ttload.h` */ /* see `ttload.h' */
TT_Load_Bitmap_Header, TT_Load_Bitmap_Header,
/* see `ttsbit.h' */ /* see `ttsbit.h' */

View File

@ -267,38 +267,37 @@
/* Load tables */ /* Load tables */
/* we now support two SFNT-based bitmapped font formats. */ /* We now support two SFNT-based bitmapped font formats. They */
/* they are recognized easily as they do not include a "glyf" */ /* are recognized easily as they do not include a `glyf' */
/* table.. */ /* table. */
/* */ /* */
/* the first format comes from Apple, and uses a table named */ /* The first format comes from Apple, and uses a table named */
/* "bhed" instead of "head" to store the font header (using */ /* `bhed' instead of `head' to store the font header (using */
/* the same format). it also doesn't include horizontal and */ /* the same format). It also doesn't include horizontal and */
/* vertical metrics tables (i.e. "hhea" and "vhea" tables) */ /* vertical metrics tables (i.e. `hhea' and `vhea' tables are */
/* missing). */
/* */ /* */
/* the other format comes from Microsoft, and is used with */ /* The other format comes from Microsoft, and is used with */
/* WinCE / PocketPC. It's standard, except that it doesn't */ /* WinCE/PocketPC. It looks like a standard TTF, except that */
/* contain outlines.. */ /* it doesn't contain outlines. */
/* */ /* */
/* do we have outlines in there ?? */ /* do we have outlines in there? */
has_outline = (TT_LookUp_Table( face, TTAG_glyf ) != 0); has_outline = ( TT_LookUp_Table( face, TTAG_glyf ) != 0 );
is_apple_sbit = 0; is_apple_sbit = 0;
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
/* /* if this font doesn't contain outlines, we try to load */
* if this font doesn't contain outlines, we'll try to load /* a `bhed' table */
* a "bhed" table in it..
*/
if ( !has_outline ) if ( !has_outline )
is_apple_sbit = !LOAD_(bitmap_header); is_apple_sbit = !LOAD_( bitmap_header );
#endif #endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
/* load the font header ("head" table) if this isn't an Apple */ /* load the font header (`head' table) if this isn't an Apple */
/* sbit font file.. */ /* sbit font file */
if ( !is_apple_sbit && LOAD_(header) ) if ( !is_apple_sbit && LOAD_( header ) )
goto Exit; goto Exit;
/* load other tables */ /* load other tables */
@ -309,20 +308,20 @@
goto Exit; goto Exit;
/* do not load the metrics headers and tables if this is an Apple */ /* do not load the metrics headers and tables if this is an Apple */
/* sbit font file.. */ /* sbit font file */
if ( !is_apple_sbit ) if ( !is_apple_sbit )
{ {
/* load the "hhea" and "hmtx" tables at once */ /* load the `hhea' and `hmtx' tables at once */
error = sfnt->load_metrics( face, stream, 0 ); error = sfnt->load_metrics( face, stream, 0 );
if (error) if ( error )
goto Exit; goto Exit;
/* try to load the "vhea" and "vmtx" tables at once */ /* try to load the `vhea' and `vmtx' tables at once */
error = sfnt->load_metrics( face, stream, 1 ); error = sfnt->load_metrics( face, stream, 1 );
if (error) if ( error )
goto Exit; goto Exit;
if ( LOAD_(os2) ) if ( LOAD_( os2 ) )
goto Exit; goto Exit;
} }

View File

@ -517,21 +517,26 @@
return error; return error;
} }
FT_LOCAL_DEF FT_LOCAL_DEF
FT_Error TT_Load_Header( TT_Face face, FT_Error TT_Load_Header( TT_Face face,
FT_Stream stream ) FT_Stream stream )
{ {
return TT_Load_Generic_Header( face, stream, TTAG_head ); return TT_Load_Generic_Header( face, stream, TTAG_head );
} }
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
FT_LOCAL_DEF FT_LOCAL_DEF
FT_Error TT_Load_Bitmap_Header( TT_Face face, FT_Error TT_Load_Bitmap_Header( TT_Face face,
FT_Stream stream ) FT_Stream stream )
{ {
return TT_Load_Generic_Header( face, stream, TTAG_bhed ); return TT_Load_Generic_Header( face, stream, TTAG_bhed );
} }
#endif
#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
/*************************************************************************/ /*************************************************************************/
/* */ /* */

View File

@ -121,10 +121,13 @@
FT_Stream stream ); FT_Stream stream );
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
FT_LOCAL FT_LOCAL
FT_Error TT_Load_Bitmap_Header( TT_Face face, FT_Error TT_Load_Bitmap_Header( TT_Face face,
FT_Stream stream ); FT_Stream stream );
#endif
#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -629,27 +629,29 @@
FT_LOCAL_DEF FT_LOCAL_DEF
FT_Error TT_Set_SBit_Strike( TT_Face face, FT_Error TT_Set_SBit_Strike( TT_Face face,
FT_Int x_ppem, FT_Int x_ppem,
FT_Int y_ppem, FT_Int y_ppem,
FT_ULong* astrike_index ) FT_ULong *astrike_index )
{ {
FT_Int i; FT_Int i;
if ( x_ppem < 0 || x_ppem > 255 || if ( x_ppem < 0 || x_ppem > 255 ||
y_ppem < 1 || y_ppem > 255 ) y_ppem < 1 || y_ppem > 255 )
return TT_Err_Invalid_PPem; return TT_Err_Invalid_PPem;
for ( i = 0; i < face->num_sbit_strikes; i++ ) for ( i = 0; i < face->num_sbit_strikes; i++ )
{ {
if ( ( face->sbit_strikes[i].y_ppem == y_ppem ) && if ( ( face->sbit_strikes[i].y_ppem == y_ppem ) &&
( ( x_ppem == 0 ) || ( ( x_ppem == 0 ) ||
( face->sbit_strikes[i].x_ppem == x_ppem ))) ( face->sbit_strikes[i].x_ppem == x_ppem ) ) )
{ {
*astrike_index = i; *astrike_index = i;
return TT_Err_Ok; return TT_Err_Ok;
} }
} }
return TT_Err_Invalid_PPem; return TT_Err_Invalid_PPem;
} }
@ -665,10 +667,12 @@
/* */ /* */
/* <Input> */ /* <Input> */
/* glyph_index :: The glyph index. */ /* glyph_index :: The glyph index. */
/* */
/* strike :: The source/current sbit strike. */ /* strike :: The source/current sbit strike. */
/* */ /* */
/* <Output> */ /* <Output> */
/* arange :: The sbit range containing the glyph index. */ /* arange :: The sbit range containing the glyph index. */
/* */
/* aglyph_offset :: The offset of the glyph data in `EBDT' table. */ /* aglyph_offset :: The offset of the glyph data in `EBDT' table. */
/* */ /* */
/* <Return> */ /* <Return> */
@ -766,12 +770,16 @@
/* */ /* */
/* <Input> */ /* <Input> */
/* face :: The target face object. */ /* face :: The target face object. */
/* */
/* glyph_index :: The glyph index. */ /* glyph_index :: The glyph index. */
/* strike_index :: The current strike index. */ /* */
/* strike_index :: The current strike index. */
/* */ /* */
/* <Output> */ /* <Output> */
/* arange :: The SBit range containing the glyph index. */ /* arange :: The SBit range containing the glyph index. */
/* */
/* astrike :: The SBit strike containing the glyph index. */ /* astrike :: The SBit strike containing the glyph index. */
/* */
/* aglyph_offset :: The offset of the glyph data in `EBDT' table. */ /* aglyph_offset :: The offset of the glyph data in `EBDT' table. */
/* */ /* */
/* <Return> */ /* <Return> */
@ -781,21 +789,23 @@
static static
FT_Error Find_SBit_Image( TT_Face face, FT_Error Find_SBit_Image( TT_Face face,
FT_UInt glyph_index, FT_UInt glyph_index,
FT_ULong strike_index, FT_ULong strike_index,
TT_SBit_Range** arange, TT_SBit_Range* *arange,
TT_SBit_Strike** astrike, TT_SBit_Strike* *astrike,
FT_ULong* aglyph_offset ) FT_ULong *aglyph_offset )
{ {
FT_Error error; FT_Error error;
TT_SBit_Strike* strike; TT_SBit_Strike* strike;
if ( !face->sbit_strikes || ( face->num_sbit_strikes <= (FT_Int)strike_index ) )
if ( !face->sbit_strikes ||
( face->num_sbit_strikes <= (FT_Int)strike_index ) )
goto Fail; goto Fail;
strike = &face->sbit_strikes[strike_index]; strike = &face->sbit_strikes[strike_index];
error = Find_SBit_Range( glyph_index, strike, error = Find_SBit_Range( glyph_index, strike,
arange, aglyph_offset ); arange, aglyph_offset );
if ( error ) if ( error )
goto Fail; goto Fail;
@ -921,8 +931,8 @@
/* Crops a bitmap to its tightest bounding box, and adjusts its */ /* Crops a bitmap to its tightest bounding box, and adjusts its */
/* metrics. */ /* metrics. */
/* */ /* */
/* <Input> */ /* <InOut> */
/* image :: The input glyph slot. */ /* map :: The bitmap. */
/* */ /* */
/* metrics :: The corresponding metrics structure. */ /* metrics :: The corresponding metrics structure. */
/* */ /* */
@ -1366,21 +1376,21 @@
/* returns its metrics. */ /* returns its metrics. */
/* */ /* */
/* <Input> */ /* <Input> */
/* face :: The target face object. */ /* face :: The target face object. */
/* */ /* */
/* strike_index :: The current strike index. */ /* strike_index :: The current strike index. */
/* */ /* */
/* glyph_index :: The current glyph index. */ /* glyph_index :: The current glyph index. */
/* */ /* */
/* load_flags :: The glyph load flags (the code checks for the flag */ /* load_flags :: The glyph load flags (the code checks for the flag */
/* FT_LOAD_CROP_BITMAP */ /* FT_LOAD_CROP_BITMAP). */
/* */ /* */
/* stream :: The input stream. */ /* stream :: The input stream. */
/* */ /* */
/* <Output> */ /* <Output> */
/* map :: The target pixmap. */ /* map :: The target pixmap. */
/* */ /* */
/* metrics :: A big sbit metrics structure for the glyph image. */ /* metrics :: A big sbit metrics structure for the glyph image. */
/* */ /* */
/* <Return> */ /* <Return> */
/* FreeType error code. 0 means success. Returns an error if no */ /* FreeType error code. 0 means success. Returns an error if no */
@ -1391,12 +1401,12 @@
/* */ /* */
FT_LOCAL_DEF FT_LOCAL_DEF
FT_Error TT_Load_SBit_Image( TT_Face face, FT_Error TT_Load_SBit_Image( TT_Face face,
FT_ULong strike_index, FT_ULong strike_index,
FT_UInt glyph_index, FT_UInt glyph_index,
FT_UInt load_flags, FT_UInt load_flags,
FT_Stream stream, FT_Stream stream,
FT_Bitmap* map, FT_Bitmap *map,
TT_SBit_Metrics* metrics ) TT_SBit_Metrics *metrics )
{ {
FT_Error error; FT_Error error;
FT_Memory memory = stream->memory; FT_Memory memory = stream->memory;

View File

@ -45,10 +45,10 @@
FT_LOCAL FT_LOCAL
FT_Error TT_Set_SBit_Strike( TT_Face face, FT_Error TT_Set_SBit_Strike( TT_Face face,
FT_Int x_ppem, FT_Int x_ppem,
FT_Int y_ppem, FT_Int y_ppem,
FT_ULong *astrike_index ); FT_ULong *astrike_index );
FT_LOCAL FT_LOCAL
FT_Error TT_Load_SBit_Image( TT_Face face, FT_Error TT_Load_SBit_Image( TT_Face face,
@ -60,7 +60,6 @@
TT_SBit_Metrics *metrics ); TT_SBit_Metrics *metrics );
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -1345,15 +1345,13 @@
glyph->num_subglyphs = 0; glyph->num_subglyphs = 0;
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
/*
* try to load embedded bitmap if any /* try to load embedded bitmap if any */
* /* */
* XXX: The convention should be emphasized in /* XXX: The convention should be emphasized in */
* the documents. Because some application /* the documents because it can be confusing. */
* developpers confuse.
*/
if ( size && if ( size &&
size->strike_index != 0xFFFF && size->strike_index != 0xFFFF &&
sfnt->load_sbits && sfnt->load_sbits &&
( load_flags & FT_LOAD_NO_BITMAP ) == 0 ) ( load_flags & FT_LOAD_NO_BITMAP ) == 0 )

View File

@ -453,7 +453,8 @@
size->ttmetrics.valid = FALSE; size->ttmetrics.valid = FALSE;
return error; return error;
#if defined(TT_CONFIG_OPTION_BYTECODE_INTERPRETER) || defined(TT_CONFIG_OPTION_EMBEDDED_BITMAPS) #if defined( TT_CONFIG_OPTION_BYTECODE_INTERPRETER ) || \
defined( TT_CONFIG_OPTION_EMBEDDED_BITMAPS )
Fail_Exec: Fail_Exec:
if ( !size->debug ) if ( !size->debug )
@ -526,11 +527,11 @@
/*************************************************************************/ /*************************************************************************/
/* */ /* */
/* <Function> */ /* <Function> */
/* TT_Reset_Size */ /* Reset_Outline_Size */
/* */ /* */
/* <Description> */ /* <Description> */
/* Resets a TrueType size when resolutions and character dimensions */ /* Resets a TrueType outline size when resolutions and character */
/* have been changed. */ /* dimensions have been changed. */
/* */ /* */
/* <Input> */ /* <Input> */
/* size :: A handle to the target size object. */ /* size :: A handle to the target size object. */
@ -575,21 +576,19 @@
} }
/* Compute root ascender, descender, test height, and max_advance */ /* Compute root ascender, descender, test height, and max_advance */
{ metrics->ascender = ( FT_MulFix( face->root.ascender,
metrics->ascender = ( FT_MulFix( face->root.ascender, metrics->y_scale ) + 32 ) & -64;
metrics->y_scale ) + 32 ) & -64; metrics->descender = ( FT_MulFix( face->root.descender,
metrics->descender = ( FT_MulFix( face->root.descender, metrics->y_scale ) + 32 ) & -64;
metrics->y_scale ) + 32 ) & -64; metrics->height = ( FT_MulFix( face->root.height,
metrics->height = ( FT_MulFix( face->root.height, metrics->y_scale ) + 32 ) & -64;
metrics->y_scale ) + 32 ) & -64; metrics->max_advance = ( FT_MulFix( face->root.max_advance_width,
metrics->max_advance = ( FT_MulFix( face->root.max_advance_width, metrics->x_scale ) + 32 ) & -64;
metrics->x_scale ) + 32 ) & -64;
}
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
/* set to "invalid" by default */ /* set to `invalid' by default */
size->strike_index = 0xFFFF; size->strike_index = 0xFFFF;
#endif #endif
@ -673,7 +672,21 @@
return error; return error;
} }
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
/*************************************************************************/
/* */
/* <Function> */
/* Reset_SBit_Size */
/* */
/* <Description> */
/* Resets a TrueType sbit size when resolutions and character */
/* dimensions have been changed. */
/* */
/* <Input> */
/* size :: A handle to the target size object. */
/* */
static static
FT_Error Reset_SBit_Size( TT_Size size ) FT_Error Reset_SBit_Size( TT_Size size )
{ {
@ -685,9 +698,10 @@
FT_Size_Metrics* sbit_metrics; FT_Size_Metrics* sbit_metrics;
SFNT_Interface* sfnt; SFNT_Interface* sfnt;
metrics = &size->root.metrics; metrics = &size->root.metrics;
if (size->strike_index != 0xFFFF) if ( size->strike_index != 0xFFFF )
return TT_Err_Ok; return TT_Err_Ok;
face = (TT_Face)size->root.face; face = (TT_Face)size->root.face;
@ -696,31 +710,31 @@
sbit_metrics = &size->strike_metrics; sbit_metrics = &size->strike_metrics;
error = sfnt->set_sbit_strike(face, error = sfnt->set_sbit_strike(face,
metrics->x_ppem, metrics->y_ppem, metrics->x_ppem, metrics->y_ppem,
&strike_index); &strike_index);
if (!error) if ( !error )
{ {
TT_SBit_Strike* strike = face->sbit_strikes + strike_index; TT_SBit_Strike* strike = face->sbit_strikes + strike_index;
sbit_metrics->x_ppem = metrics->x_ppem; sbit_metrics->x_ppem = metrics->x_ppem;
sbit_metrics->y_ppem = metrics->y_ppem; sbit_metrics->y_ppem = metrics->y_ppem;
#if 0 #if 0
/* /*
* sbit_metrics->?_scale * sbit_metrics->?_scale
* are not used now. * are not used now.
*/ */
sbit_metrics->x_scale = 1 << 16; sbit_metrics->x_scale = 1 << 16;
sbit_metrics->y_scale = 1 << 16; sbit_metrics->y_scale = 1 << 16;
#endif #endif
sbit_metrics->ascender = strike->hori.ascender << 6; sbit_metrics->ascender = strike->hori.ascender << 6;
sbit_metrics->descender = strike->hori.descender << 6; sbit_metrics->descender = strike->hori.descender << 6;
/* XXX: Is this correct? */ /* XXX: Is this correct? */
sbit_metrics->height = sbit_metrics->ascender - sbit_metrics->height = sbit_metrics->ascender -
sbit_metrics->descender; sbit_metrics->descender;
/* XXX: Is this correct? */ /* XXX: Is this correct? */
sbit_metrics->max_advance = ( strike->hori.min_origin_SB + sbit_metrics->max_advance = ( strike->hori.min_origin_SB +
@ -743,8 +757,10 @@
return error; return error;
} }
#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ #endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
/*************************************************************************/ /*************************************************************************/
/* */ /* */
/* <Function> */ /* <Function> */
@ -760,40 +776,46 @@
FT_LOCAL_DEF FT_LOCAL_DEF
FT_Error TT_Reset_Size( TT_Size size ) FT_Error TT_Reset_Size( TT_Size size )
{ {
FT_Face face; FT_Face face;
FT_Error error = TT_Err_Ok; FT_Error error = TT_Err_Ok;
face = size->root.face; face = size->root.face;
if ( face->face_flags & FT_FACE_FLAG_SCALABLE ) if ( face->face_flags & FT_FACE_FLAG_SCALABLE )
{ {
if ( !size->ttmetrics.valid ) if ( !size->ttmetrics.valid )
error = Reset_Outline_Size( size ); error = Reset_Outline_Size( size );
if ( error ) if ( error )
return error; return error;
} }
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
if ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) if ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES )
{ {
FT_Size_Metrics* sbit_metrics; FT_Size_Metrics* sbit_metrics;
if ( size->strike_index == 0xFFFF ) if ( size->strike_index == 0xFFFF )
error = Reset_SBit_Size( size ); error = Reset_SBit_Size( size );
sbit_metrics = &size->strike_metrics; sbit_metrics = &size->strike_metrics;
if ((!error) && !( face->face_flags & FT_FACE_FLAG_SCALABLE )) if ( !error && !( face->face_flags & FT_FACE_FLAG_SCALABLE ) )
size->root.metrics = *sbit_metrics; size->root.metrics = *sbit_metrics;
} }
#endif
if (face->face_flags & FT_FACE_FLAG_SCALABLE) #endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
if ( face->face_flags & FT_FACE_FLAG_SCALABLE )
return TT_Err_Ok; return TT_Err_Ok;
else else
return error; return error;
} }
/*************************************************************************/ /*************************************************************************/
/* */ /* */
/* <Function> */ /* <Function> */

View File

@ -305,7 +305,6 @@
} TT_Size_Metrics; } TT_Size_Metrics;
/*************************************************************************/ /*************************************************************************/
/* */ /* */
/* TrueType size class. */ /* TrueType size class. */
@ -317,8 +316,10 @@
TT_Size_Metrics ttmetrics; TT_Size_Metrics ttmetrics;
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
FT_UInt strike_index; /* 0xFFFF to indicate invalid */
FT_Size_Metrics strike_metrics; /* current strike's metrics */ FT_UInt strike_index; /* 0xFFFF to indicate invalid */
FT_Size_Metrics strike_metrics; /* current strike's metrics */
#endif #endif
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER