forked from minhngoc25a/freetype2
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:
parent
c6fa4aff2e
commit
4b68007b4f
|
@ -280,7 +280,9 @@
|
|||
their relationships</p>
|
||||
|
||||
<center>
|
||||
<img src="simple-model.png" width=453 height=378>
|
||||
<img src="simple-model.png"
|
||||
width=453 height=378
|
||||
alt="Simple library model">
|
||||
</center>
|
||||
|
||||
<p>Note that this picture will be updated at the end of the next
|
||||
|
|
|
@ -291,7 +291,9 @@
|
|||
graph of FreeType 2's base design:</p>
|
||||
|
||||
<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>
|
||||
|
||||
</td></tr>
|
||||
|
|
|
@ -297,8 +297,8 @@
|
|||
#define FT_FACE_SIZE( x ) FT_FACE( x )->size
|
||||
|
||||
|
||||
/* this must be kept exported -- it is used by the cache manager */
|
||||
/* even though it shouldn't be considered public for now.. */
|
||||
/* this must be kept exported -- it is used by the cache manager */
|
||||
/* even though it shouldn't be considered public for now */
|
||||
FT_EXPORT( FT_Error ) FT_New_Size( FT_Face face,
|
||||
FT_Size* size );
|
||||
|
||||
|
|
|
@ -243,7 +243,7 @@
|
|||
FT_Error (*TT_Load_Any_Func)( TT_Face face,
|
||||
FT_ULong tag,
|
||||
FT_Long offset,
|
||||
FT_Byte* buffer,
|
||||
FT_Byte *buffer,
|
||||
FT_ULong* length );
|
||||
|
||||
|
||||
|
@ -268,9 +268,9 @@
|
|||
/* stream :: The input stream. */
|
||||
/* */
|
||||
/* <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> */
|
||||
/* FreeType error code. 0 means success. Returns an error if no */
|
||||
|
@ -281,18 +281,43 @@
|
|||
/* */
|
||||
typedef
|
||||
FT_Error (*TT_Load_SBit_Image_Func)( TT_Face face,
|
||||
FT_ULong strike_index,
|
||||
FT_ULong strike_index,
|
||||
FT_UInt glyph_index,
|
||||
FT_UInt load_flags,
|
||||
FT_Stream stream,
|
||||
FT_Bitmap* map,
|
||||
TT_SBit_Metrics* metrics );
|
||||
FT_Bitmap *amap,
|
||||
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
|
||||
FT_Error (*TT_Set_SBit_Strike_Func)( TT_Face face,
|
||||
FT_Int x_ppem,
|
||||
FT_Int y_ppem,
|
||||
FT_ULong* astrike_index );
|
||||
FT_Error (*TT_Set_SBit_Strike_Func)( TT_Face face,
|
||||
FT_Int x_ppem,
|
||||
FT_Int y_ppem,
|
||||
FT_ULong *astrike_index );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
|
@ -479,9 +504,11 @@
|
|||
TT_Load_Table_Func load_gasp;
|
||||
TT_Load_Table_Func load_pclt;
|
||||
|
||||
/* see `ttload.h' */
|
||||
TT_Load_Table_Func load_bitmap_header;
|
||||
TT_Set_SBit_Strike_Func set_sbit_strike;
|
||||
|
||||
/* see `ttsbit.h' */
|
||||
TT_Set_SBit_Strike_Func set_sbit_strike;
|
||||
TT_Load_Table_Func load_sbits;
|
||||
TT_Load_SBit_Image_Func load_sbit_image;
|
||||
TT_Free_Table_Func free_sbits;
|
||||
|
|
|
@ -700,11 +700,13 @@
|
|||
/* */
|
||||
/* 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 */
|
||||
/* in use by other platforms (e.g. Newton). */
|
||||
/* in use by other platforms (e.g. Newton). */
|
||||
/* 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. */
|
||||
/* */
|
||||
|
@ -721,9 +723,11 @@
|
|||
/* bit_depth :: The bit depth. Valid values are 1, 2, 4, */
|
||||
/* and 8. */
|
||||
/* */
|
||||
/* flags :: Is this a vertical or horizontal strike? */
|
||||
/* For details, please see */
|
||||
/* http://fonts.apple.com/TTRefMan/RM06/Chap6bloc.html */
|
||||
/* flags :: Is this a vertical or horizontal strike? For */
|
||||
/* details, please see */
|
||||
/* */
|
||||
/* http://fonts.apple.com/ */
|
||||
/* TTRefMan/RM06/Chap6bloc.html */
|
||||
/* */
|
||||
typedef struct TT_SBit_Strike_
|
||||
{
|
||||
|
|
|
@ -357,7 +357,7 @@
|
|||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
FT_EXPORT_DEF( FT_Error ) FT_Outline_Get_BBox( FT_Outline* outline,
|
||||
FT_BBox* abbox )
|
||||
FT_BBox *abbox )
|
||||
{
|
||||
FT_BBox cbox;
|
||||
FT_BBox bbox;
|
||||
|
|
|
@ -532,7 +532,7 @@
|
|||
/* */
|
||||
FT_EXPORT_DEF( void ) FT_Add64( FT_Int64* x,
|
||||
FT_Int64* y,
|
||||
FT_Int64* z )
|
||||
FT_Int64 *z )
|
||||
{
|
||||
register FT_UInt32 lo, hi;
|
||||
|
||||
|
@ -565,7 +565,7 @@
|
|||
/* */
|
||||
FT_EXPORT_DEF( void ) FT_MulTo64( FT_Int32 x,
|
||||
FT_Int32 y,
|
||||
FT_Int64* z )
|
||||
FT_Int64 *z )
|
||||
{
|
||||
FT_Int32 s;
|
||||
|
||||
|
|
|
@ -424,7 +424,7 @@
|
|||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
FT_EXPORT_DEF( FT_Error ) FT_Glyph_Copy( FT_Glyph source,
|
||||
FT_Glyph* target )
|
||||
FT_Glyph *target )
|
||||
{
|
||||
FT_Glyph copy;
|
||||
FT_Error error;
|
||||
|
@ -476,7 +476,7 @@
|
|||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
FT_EXPORT_DEF( FT_Error ) FT_Get_Glyph( FT_GlyphSlot slot,
|
||||
FT_Glyph* aglyph )
|
||||
FT_Glyph *aglyph )
|
||||
{
|
||||
FT_Library library = slot->library;
|
||||
FT_Error error;
|
||||
|
@ -646,13 +646,13 @@
|
|||
/* */
|
||||
FT_EXPORT_DEF( void ) FT_Glyph_Get_CBox( FT_Glyph glyph,
|
||||
FT_UInt bbox_mode,
|
||||
FT_BBox* cbox )
|
||||
FT_BBox *acbox )
|
||||
{
|
||||
const FT_Glyph_Class* clazz;
|
||||
FT_Error error = FT_Err_Ok;
|
||||
|
||||
|
||||
if ( !cbox || !glyph || !glyph->clazz )
|
||||
if ( !acbox || !glyph || !glyph->clazz )
|
||||
error = FT_Err_Invalid_Argument;
|
||||
else
|
||||
{
|
||||
|
@ -662,24 +662,24 @@
|
|||
else
|
||||
{
|
||||
/* retrieve bbox in 26.6 coordinates */
|
||||
clazz->glyph_bbox( glyph, cbox );
|
||||
clazz->glyph_bbox( glyph, acbox );
|
||||
|
||||
/* perform grid fitting if needed */
|
||||
if ( bbox_mode & ft_glyph_bbox_gridfit )
|
||||
{
|
||||
cbox->xMin &= -64;
|
||||
cbox->yMin &= -64;
|
||||
cbox->xMax = ( cbox->xMax + 63 ) & -64;
|
||||
cbox->yMax = ( cbox->yMax + 63 ) & -64;
|
||||
acbox->xMin &= -64;
|
||||
acbox->yMin &= -64;
|
||||
acbox->xMax = ( acbox->xMax + 63 ) & -64;
|
||||
acbox->yMax = ( acbox->yMax + 63 ) & -64;
|
||||
}
|
||||
|
||||
/* convert to integer pixels if needed */
|
||||
if ( bbox_mode & ft_glyph_bbox_truncate )
|
||||
{
|
||||
cbox->xMin >>= 6;
|
||||
cbox->yMin >>= 6;
|
||||
cbox->xMax >>= 6;
|
||||
cbox->yMax >>= 6;
|
||||
acbox->xMin >>= 6;
|
||||
acbox->yMin >>= 6;
|
||||
acbox->xMax >>= 6;
|
||||
acbox->yMax >>= 6;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -123,7 +123,7 @@ const FT_Module_Class* const ft_default_modules[] =
|
|||
/* <Return> */
|
||||
/* 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_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 */
|
||||
/* default drivers. */
|
||||
|
||||
error = FT_New_Library( memory, library );
|
||||
error = FT_New_Library( memory, alibrary );
|
||||
if ( !error )
|
||||
FT_Add_Default_Modules( *library );
|
||||
FT_Add_Default_Modules( *alibrary );
|
||||
|
||||
return error;
|
||||
}
|
||||
|
|
|
@ -638,7 +638,7 @@
|
|||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
/* <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: */
|
||||
/* */
|
||||
/* fond = GetResource( 'FOND', fontName ); */
|
||||
|
@ -647,7 +647,7 @@
|
|||
FT_EXPORT_DEF( FT_Error ) FT_New_Face_From_FOND( FT_Library library,
|
||||
Handle fond,
|
||||
FT_Long face_index,
|
||||
FT_Face* aface )
|
||||
FT_Face *aface )
|
||||
{
|
||||
short sfnt_id, have_sfnt, have_lwfn = 0;
|
||||
Str255 lwfn_file_name;
|
||||
|
@ -703,7 +703,7 @@
|
|||
FT_EXPORT_DEF( FT_Error ) FT_New_Face( FT_Library library,
|
||||
const char* pathname,
|
||||
FT_Long face_index,
|
||||
FT_Face* aface )
|
||||
FT_Face *aface )
|
||||
{
|
||||
FT_Open_Args args;
|
||||
FSSpec spec;
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
FT_EXPORT_DEF( FT_Error ) FT_Get_Multi_Master( FT_Face face,
|
||||
FT_Multi_Master* master )
|
||||
FT_Multi_Master *amaster )
|
||||
{
|
||||
FT_Error error;
|
||||
|
||||
|
@ -67,7 +67,7 @@
|
|||
func = (FT_Get_MM_Func)driver->root.clazz->get_interface(
|
||||
FT_MODULE( driver ), "get_mm" );
|
||||
if ( func )
|
||||
error = func( face, master );
|
||||
error = func( face, amaster );
|
||||
}
|
||||
|
||||
return error;
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
/* */
|
||||
FT_EXPORT_DEF( FT_Error ) FT_Get_Sfnt_Name( FT_Face face,
|
||||
FT_UInt index,
|
||||
FT_SfntName* aname )
|
||||
FT_SfntName *aname )
|
||||
{
|
||||
FT_Error error = FT_Err_Invalid_Argument;
|
||||
|
||||
|
|
|
@ -1337,7 +1337,7 @@
|
|||
FT_EXPORT_DEF( FT_Error ) FT_New_Face( FT_Library library,
|
||||
const char* pathname,
|
||||
FT_Long face_index,
|
||||
FT_Face* aface )
|
||||
FT_Face *aface )
|
||||
{
|
||||
FT_Open_Args args;
|
||||
|
||||
|
@ -1399,7 +1399,7 @@
|
|||
FT_Byte* file_base,
|
||||
FT_Long file_size,
|
||||
FT_Long face_index,
|
||||
FT_Face* face )
|
||||
FT_Face *aface )
|
||||
{
|
||||
FT_Open_Args args;
|
||||
|
||||
|
@ -1412,7 +1412,7 @@
|
|||
args.memory_base = file_base;
|
||||
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_Open_Args* args,
|
||||
FT_Long face_index,
|
||||
FT_Face* aface )
|
||||
FT_Face *aface )
|
||||
{
|
||||
FT_Error error;
|
||||
FT_Driver driver;
|
||||
|
@ -1810,7 +1810,7 @@
|
|||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
FT_EXPORT_DEF( FT_Error ) FT_New_Size( FT_Face face,
|
||||
FT_Size* asize )
|
||||
FT_Size *asize )
|
||||
{
|
||||
FT_Error error;
|
||||
FT_Memory memory;
|
||||
|
@ -2178,7 +2178,7 @@
|
|||
FT_UInt left_glyph,
|
||||
FT_UInt right_glyph,
|
||||
FT_UInt kern_mode,
|
||||
FT_Vector* kerning )
|
||||
FT_Vector *akerning )
|
||||
{
|
||||
FT_Error error = FT_Err_Ok;
|
||||
FT_Driver driver;
|
||||
|
@ -2188,32 +2188,32 @@
|
|||
if ( !face )
|
||||
return FT_Err_Invalid_Face_Handle;
|
||||
|
||||
if ( !kerning )
|
||||
if ( !akerning )
|
||||
return FT_Err_Invalid_Argument;
|
||||
|
||||
driver = face->driver;
|
||||
memory = driver->root.memory;
|
||||
|
||||
kerning->x = 0;
|
||||
kerning->y = 0;
|
||||
akerning->x = 0;
|
||||
akerning->y = 0;
|
||||
|
||||
if ( driver->clazz->get_kerning )
|
||||
{
|
||||
error = driver->clazz->get_kerning( face,
|
||||
left_glyph,
|
||||
right_glyph,
|
||||
kerning );
|
||||
akerning );
|
||||
if ( !error )
|
||||
{
|
||||
if ( kern_mode != ft_kerning_unscaled )
|
||||
{
|
||||
kerning->x = FT_MulFix( kerning->x, face->size->metrics.x_scale );
|
||||
kerning->y = FT_MulFix( kerning->y, face->size->metrics.y_scale );
|
||||
akerning->x = FT_MulFix( akerning->x, face->size->metrics.x_scale );
|
||||
akerning->y = FT_MulFix( akerning->y, face->size->metrics.y_scale );
|
||||
|
||||
if ( kern_mode != ft_kerning_unfitted )
|
||||
{
|
||||
kerning->x = ( kerning->x + 32 ) & -64;
|
||||
kerning->y = ( kerning->y + 32 ) & -64;
|
||||
akerning->x = ( akerning->x + 32 ) & -64;
|
||||
akerning->y = ( akerning->y + 32 ) & -64;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3203,7 +3203,7 @@
|
|||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
FT_EXPORT_DEF( FT_Error ) FT_New_Library( FT_Memory memory,
|
||||
FT_Library* alibrary )
|
||||
FT_Library *alibrary )
|
||||
{
|
||||
FT_Library library = 0;
|
||||
FT_Error error;
|
||||
|
|
|
@ -274,30 +274,30 @@
|
|||
FT_Memory memory,
|
||||
FT_UInt numPoints,
|
||||
FT_Int numContours,
|
||||
FT_Outline* outline )
|
||||
FT_Outline *anoutline )
|
||||
{
|
||||
FT_Error error;
|
||||
|
||||
|
||||
if ( !outline || !memory )
|
||||
if ( !anoutline || !memory )
|
||||
return FT_Err_Invalid_Argument;
|
||||
|
||||
*outline = null_outline;
|
||||
*anoutline = null_outline;
|
||||
|
||||
if ( ALLOC_ARRAY( outline->points, numPoints * 2L, FT_Pos ) ||
|
||||
ALLOC_ARRAY( outline->tags, numPoints, FT_Byte ) ||
|
||||
ALLOC_ARRAY( outline->contours, numContours, FT_UShort ) )
|
||||
if ( ALLOC_ARRAY( anoutline->points, numPoints * 2L, FT_Pos ) ||
|
||||
ALLOC_ARRAY( anoutline->tags, numPoints, FT_Byte ) ||
|
||||
ALLOC_ARRAY( anoutline->contours, numContours, FT_UShort ) )
|
||||
goto Fail;
|
||||
|
||||
outline->n_points = (FT_UShort)numPoints;
|
||||
outline->n_contours = (FT_Short)numContours;
|
||||
outline->flags |= ft_outline_owner;
|
||||
anoutline->n_points = (FT_UShort)numPoints;
|
||||
anoutline->n_contours = (FT_Short)numContours;
|
||||
anoutline->flags |= ft_outline_owner;
|
||||
|
||||
return FT_Err_Ok;
|
||||
|
||||
Fail:
|
||||
outline->flags |= ft_outline_owner;
|
||||
FT_Outline_Done_Internal( memory, outline );
|
||||
anoutline->flags |= ft_outline_owner;
|
||||
FT_Outline_Done_Internal( memory, anoutline );
|
||||
|
||||
return error;
|
||||
}
|
||||
|
@ -338,13 +338,13 @@
|
|||
FT_EXPORT_DEF( FT_Error ) FT_Outline_New( FT_Library library,
|
||||
FT_UInt numPoints,
|
||||
FT_Int numContours,
|
||||
FT_Outline* outline )
|
||||
FT_Outline *anoutline )
|
||||
{
|
||||
if ( !library )
|
||||
return FT_Err_Invalid_Library_Handle;
|
||||
|
||||
return FT_Outline_New_Internal( library->memory, numPoints,
|
||||
numContours, outline );
|
||||
numContours, anoutline );
|
||||
}
|
||||
|
||||
|
||||
|
@ -368,7 +368,7 @@
|
|||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
FT_EXPORT_DEF( FT_Error ) FT_Outline_Copy( FT_Outline* source,
|
||||
FT_Outline* target )
|
||||
FT_Outline *target )
|
||||
{
|
||||
FT_Int is_owner;
|
||||
|
||||
|
@ -484,12 +484,12 @@
|
|||
/* Yes. */
|
||||
/* */
|
||||
FT_EXPORT_DEF( void ) FT_Outline_Get_CBox( FT_Outline* outline,
|
||||
FT_BBox* cbox )
|
||||
FT_BBox *acbox )
|
||||
{
|
||||
FT_Pos xMin, yMin, xMax, yMax;
|
||||
|
||||
|
||||
if ( outline && cbox )
|
||||
if ( outline && acbox )
|
||||
{
|
||||
if ( outline->n_points == 0 )
|
||||
{
|
||||
|
@ -522,10 +522,10 @@
|
|||
if ( y > yMax ) yMax = y;
|
||||
}
|
||||
}
|
||||
cbox->xMin = xMin;
|
||||
cbox->xMax = xMax;
|
||||
cbox->yMin = yMin;
|
||||
cbox->yMax = yMax;
|
||||
acbox->xMin = xMin;
|
||||
acbox->xMax = xMax;
|
||||
acbox->yMin = yMin;
|
||||
acbox->yMax = yMax;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -747,20 +747,20 @@
|
|||
/* */
|
||||
FT_EXPORT_DEF( FT_Error ) FT_Outline_Get_Bitmap( FT_Library library,
|
||||
FT_Outline* outline,
|
||||
FT_Bitmap* bitmap )
|
||||
FT_Bitmap *abitmap )
|
||||
{
|
||||
FT_Raster_Params params;
|
||||
|
||||
|
||||
if ( !bitmap )
|
||||
if ( !abitmap )
|
||||
return FT_Err_Invalid_Argument;
|
||||
|
||||
/* other checks are delayed to FT_Outline_Render() */
|
||||
|
||||
params.target = bitmap;
|
||||
params.target = abitmap;
|
||||
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;
|
||||
|
||||
return FT_Outline_Render( library, outline, ¶ms );
|
||||
|
|
|
@ -231,12 +231,12 @@
|
|||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
FT_EXPORT_DEF( FT_Error ) FT_New_Stream( const char* filepathname,
|
||||
FT_Stream stream )
|
||||
FT_Stream astream )
|
||||
{
|
||||
FILE* file;
|
||||
|
||||
|
||||
if ( !stream )
|
||||
if ( !astream )
|
||||
return FT_Err_Invalid_Stream_Handle;
|
||||
|
||||
file = fopen( filepathname, "rb" );
|
||||
|
@ -249,19 +249,19 @@
|
|||
}
|
||||
|
||||
fseek( file, 0, SEEK_END );
|
||||
stream->size = ftell( file );
|
||||
astream->size = ftell( file );
|
||||
fseek( file, 0, SEEK_SET );
|
||||
|
||||
stream->descriptor.pointer = file;
|
||||
stream->pathname.pointer = (char*)filepathname;
|
||||
stream->pos = 0;
|
||||
astream->descriptor.pointer = file;
|
||||
astream->pathname.pointer = (char*)filepathname;
|
||||
astream->pos = 0;
|
||||
|
||||
stream->read = ft_io_stream;
|
||||
stream->close = ft_close_stream;
|
||||
astream->read = ft_io_stream;
|
||||
astream->close = ft_close_stream;
|
||||
|
||||
FT_TRACE1(( "FT_New_Stream:" ));
|
||||
FT_TRACE1(( " opened `%s' (%d bytes) successfully\n",
|
||||
filepathname, stream->size ));
|
||||
filepathname, astream->size ));
|
||||
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
|
|
@ -106,7 +106,7 @@
|
|||
|
||||
FT_EXPORT_DEF( FT_Error ) FTC_ChunkSet_New( FTC_Chunk_Cache cache,
|
||||
FT_Pointer type,
|
||||
FTC_ChunkSet* aset )
|
||||
FTC_ChunkSet *aset )
|
||||
{
|
||||
FT_Error error;
|
||||
FT_Memory memory = cache->root.memory;
|
||||
|
@ -206,8 +206,8 @@
|
|||
FT_EXPORT_DEF( FT_Error ) FTC_ChunkSet_Lookup_Node(
|
||||
FTC_ChunkSet cset,
|
||||
FT_UInt glyph_index,
|
||||
FTC_ChunkNode* anode,
|
||||
FT_UInt* aindex )
|
||||
FTC_ChunkNode *anode,
|
||||
FT_UInt *anindex )
|
||||
{
|
||||
FTC_Chunk_Cache cache = cset->cache;
|
||||
FTC_Manager manager = cache->root.manager;
|
||||
|
@ -252,8 +252,8 @@
|
|||
}
|
||||
}
|
||||
|
||||
*anode = node;
|
||||
*aindex = glyph_index - chunk_index * chunk_size;
|
||||
*anode = node;
|
||||
*anindex = glyph_index - chunk_index * chunk_size;
|
||||
}
|
||||
|
||||
Exit:
|
||||
|
|
|
@ -131,7 +131,7 @@
|
|||
|
||||
FT_EXPORT_DEF( FT_Error ) FTC_GlyphSet_New( FTC_Glyph_Cache cache,
|
||||
FT_Pointer type,
|
||||
FTC_GlyphSet* aset )
|
||||
FTC_GlyphSet *aset )
|
||||
{
|
||||
FT_Error error;
|
||||
FT_Memory memory = cache->root.memory;
|
||||
|
@ -228,7 +228,7 @@
|
|||
FT_EXPORT_DEF( FT_Error ) FTC_GlyphSet_Lookup_Node(
|
||||
FTC_GlyphSet gset,
|
||||
FT_UInt glyph_index,
|
||||
FTC_GlyphNode* anode )
|
||||
FTC_GlyphNode *anode )
|
||||
{
|
||||
FTC_Glyph_Cache cache = gset->cache;
|
||||
FTC_Manager manager = cache->root.manager;
|
||||
|
|
|
@ -262,7 +262,7 @@
|
|||
|
||||
|
||||
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(
|
||||
manager,
|
||||
|
|
|
@ -213,7 +213,7 @@
|
|||
FT_ULong max_bytes,
|
||||
FTC_Face_Requester requester,
|
||||
FT_Pointer req_data,
|
||||
FTC_Manager* amanager )
|
||||
FTC_Manager *amanager )
|
||||
{
|
||||
FT_Error error;
|
||||
FT_Memory memory;
|
||||
|
@ -319,7 +319,7 @@
|
|||
|
||||
FT_EXPORT( FT_Error ) FTC_Manager_Lookup_Face( FTC_Manager manager,
|
||||
FTC_FaceID face_id,
|
||||
FT_Face* aface )
|
||||
FT_Face *aface )
|
||||
{
|
||||
if ( !manager )
|
||||
return FT_Err_Invalid_Cache_Handle;
|
||||
|
@ -332,8 +332,8 @@
|
|||
|
||||
FT_EXPORT( FT_Error ) FTC_Manager_Lookup_Size( FTC_Manager manager,
|
||||
FTC_Font font,
|
||||
FT_Face* aface,
|
||||
FT_Size* asize )
|
||||
FT_Face *aface,
|
||||
FT_Size *asize )
|
||||
{
|
||||
FTC_FontRequest req;
|
||||
FT_Error error;
|
||||
|
@ -428,7 +428,7 @@
|
|||
FT_EXPORT( FT_Error ) FTC_Manager_Register_Cache(
|
||||
FTC_Manager manager,
|
||||
FTC_Cache_Class* clazz,
|
||||
FTC_Cache* acache )
|
||||
FTC_Cache *acache )
|
||||
{
|
||||
FT_Error error = FT_Err_Invalid_Argument;
|
||||
|
||||
|
|
|
@ -355,7 +355,7 @@
|
|||
|
||||
|
||||
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(
|
||||
manager,
|
||||
|
@ -367,21 +367,21 @@
|
|||
FT_EXPORT( FT_Error ) FTC_SBit_Cache_Lookup( FTC_SBit_Cache cache,
|
||||
FTC_Image_Desc* desc,
|
||||
FT_UInt gindex,
|
||||
FTC_SBit* asbit )
|
||||
FTC_SBit *ansbit )
|
||||
{
|
||||
FT_Error error;
|
||||
FTC_ChunkNode node;
|
||||
FT_UInt cindex;
|
||||
|
||||
/* argument checks delayed to FTC_Chunk_Cache_Lookup */
|
||||
if (!asbit)
|
||||
if (!ansbit)
|
||||
return FT_Err_Invalid_Argument;
|
||||
|
||||
*asbit = 0;
|
||||
error = FTC_Chunk_Cache_Lookup( &cache->root, desc, gindex,
|
||||
&node, &cindex );
|
||||
*ansbit = 0;
|
||||
error = FTC_Chunk_Cache_Lookup( &cache->root, desc, gindex,
|
||||
&node, &cindex );
|
||||
if (!error)
|
||||
*asbit = (FTC_SBit)node->elements + cindex;
|
||||
*ansbit = (FTC_SBit)node->elements + cindex;
|
||||
|
||||
return error;
|
||||
}
|
||||
|
|
|
@ -41,16 +41,16 @@
|
|||
FT_Pointer user_data,
|
||||
FT_Memory memory,
|
||||
FT_Bool pre_alloc,
|
||||
FT_Lru* alru )
|
||||
FT_Lru *anlru )
|
||||
{
|
||||
FT_Error error;
|
||||
FT_Lru lru;
|
||||
|
||||
|
||||
if ( !alru )
|
||||
if ( !anlru )
|
||||
return FT_Err_Invalid_Argument;
|
||||
|
||||
*alru = 0;
|
||||
*anlru = 0;
|
||||
if ( !ALLOC( lru, sizeof ( *lru ) ) )
|
||||
{
|
||||
if ( pre_alloc )
|
||||
|
@ -72,7 +72,7 @@
|
|||
lru->memory = memory;
|
||||
lru->user_data = user_data;
|
||||
|
||||
*alru = lru;
|
||||
*anlru = lru;
|
||||
}
|
||||
|
||||
Exit:
|
||||
|
@ -132,7 +132,7 @@
|
|||
|
||||
FT_EXPORT_DEF( FT_Error ) FT_Lru_Lookup_Node( FT_Lru lru,
|
||||
FT_LruKey key,
|
||||
FT_LruNode* anode )
|
||||
FT_LruNode *anode )
|
||||
{
|
||||
FT_Error error = 0;
|
||||
FT_ListNode node;
|
||||
|
@ -258,7 +258,7 @@
|
|||
|
||||
FT_EXPORT_DEF( FT_Error ) FT_Lru_Lookup( FT_Lru lru,
|
||||
FT_LruKey key,
|
||||
FT_Pointer* aobject )
|
||||
FT_Pointer *anobject )
|
||||
{
|
||||
FT_Error error;
|
||||
FT_LruNode node;
|
||||
|
@ -266,13 +266,13 @@
|
|||
|
||||
/* check for valid `lru' and `key' delayed to FT_Lru_Lookup_Node() */
|
||||
|
||||
if ( !aobject )
|
||||
if ( !anobject )
|
||||
return FT_Err_Invalid_Argument;
|
||||
|
||||
*aobject = 0;
|
||||
*anobject = 0;
|
||||
error = FT_Lru_Lookup_Node( lru, key, &node );
|
||||
if ( !error )
|
||||
*aobject = node->root.data;
|
||||
*anobject = node->root.data;
|
||||
|
||||
return error;
|
||||
}
|
||||
|
|
|
@ -172,7 +172,7 @@
|
|||
|
||||
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
|
||||
|
||||
/* see `ttload.h` */
|
||||
/* see `ttload.h' */
|
||||
TT_Load_Bitmap_Header,
|
||||
|
||||
/* see `ttsbit.h' */
|
||||
|
|
|
@ -267,38 +267,37 @@
|
|||
|
||||
/* Load tables */
|
||||
|
||||
/* we now support two SFNT-based bitmapped font formats. */
|
||||
/* they are recognized easily as they do not include a "glyf" */
|
||||
/* table.. */
|
||||
/* We now support two SFNT-based bitmapped font formats. They */
|
||||
/* are recognized easily as they do not include a `glyf' */
|
||||
/* table. */
|
||||
/* */
|
||||
/* the first format comes from Apple, and uses a table named */
|
||||
/* "bhed" instead of "head" to store the font header (using */
|
||||
/* the same format). it also doesn't include horizontal and */
|
||||
/* vertical metrics tables (i.e. "hhea" and "vhea" tables) */
|
||||
/* The first format comes from Apple, and uses a table named */
|
||||
/* `bhed' instead of `head' to store the font header (using */
|
||||
/* the same format). It also doesn't include horizontal and */
|
||||
/* vertical metrics tables (i.e. `hhea' and `vhea' tables are */
|
||||
/* missing). */
|
||||
/* */
|
||||
/* the other format comes from Microsoft, and is used with */
|
||||
/* WinCE / PocketPC. It's standard, except that it doesn't */
|
||||
/* contain outlines.. */
|
||||
/* The other format comes from Microsoft, and is used with */
|
||||
/* WinCE/PocketPC. It looks like a standard TTF, except that */
|
||||
/* it doesn't contain outlines. */
|
||||
/* */
|
||||
|
||||
/* do we have outlines in there ?? */
|
||||
has_outline = (TT_LookUp_Table( face, TTAG_glyf ) != 0);
|
||||
/* do we have outlines in there? */
|
||||
has_outline = ( TT_LookUp_Table( face, TTAG_glyf ) != 0 );
|
||||
is_apple_sbit = 0;
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
|
||||
|
||||
/*
|
||||
* if this font doesn't contain outlines, we'll try to load
|
||||
* a "bhed" table in it..
|
||||
*/
|
||||
/* if this font doesn't contain outlines, we try to load */
|
||||
/* a `bhed' table */
|
||||
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 */
|
||||
/* sbit font file.. */
|
||||
if ( !is_apple_sbit && LOAD_(header) )
|
||||
/* load the font header (`head' table) if this isn't an Apple */
|
||||
/* sbit font file */
|
||||
if ( !is_apple_sbit && LOAD_( header ) )
|
||||
goto Exit;
|
||||
|
||||
/* load other tables */
|
||||
|
@ -309,20 +308,20 @@
|
|||
goto Exit;
|
||||
|
||||
/* do not load the metrics headers and tables if this is an Apple */
|
||||
/* sbit font file.. */
|
||||
/* sbit font file */
|
||||
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 );
|
||||
if (error)
|
||||
if ( error )
|
||||
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 );
|
||||
if (error)
|
||||
if ( error )
|
||||
goto Exit;
|
||||
|
||||
if ( LOAD_(os2) )
|
||||
if ( LOAD_( os2 ) )
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
|
|
|
@ -517,21 +517,26 @@
|
|||
return error;
|
||||
}
|
||||
|
||||
|
||||
FT_LOCAL_DEF
|
||||
FT_Error TT_Load_Header( TT_Face face,
|
||||
FT_Stream stream )
|
||||
FT_Stream stream )
|
||||
{
|
||||
return TT_Load_Generic_Header( face, stream, TTAG_head );
|
||||
}
|
||||
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
|
||||
|
||||
FT_LOCAL_DEF
|
||||
FT_Error TT_Load_Bitmap_Header( TT_Face face,
|
||||
FT_Stream stream )
|
||||
FT_Stream stream )
|
||||
{
|
||||
return TT_Load_Generic_Header( face, stream, TTAG_bhed );
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
|
|
|
@ -121,10 +121,13 @@
|
|||
FT_Stream stream );
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
|
||||
|
||||
FT_LOCAL
|
||||
FT_Error TT_Load_Bitmap_Header( TT_Face face,
|
||||
FT_Stream stream );
|
||||
#endif
|
||||
FT_Stream stream );
|
||||
|
||||
#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -629,27 +629,29 @@
|
|||
|
||||
|
||||
FT_LOCAL_DEF
|
||||
FT_Error TT_Set_SBit_Strike( TT_Face face,
|
||||
FT_Int x_ppem,
|
||||
FT_Int y_ppem,
|
||||
FT_ULong* astrike_index )
|
||||
FT_Error TT_Set_SBit_Strike( TT_Face face,
|
||||
FT_Int x_ppem,
|
||||
FT_Int y_ppem,
|
||||
FT_ULong *astrike_index )
|
||||
{
|
||||
FT_Int i;
|
||||
FT_Int i;
|
||||
|
||||
|
||||
if ( x_ppem < 0 || x_ppem > 255 ||
|
||||
y_ppem < 1 || y_ppem > 255 )
|
||||
y_ppem < 1 || y_ppem > 255 )
|
||||
return TT_Err_Invalid_PPem;
|
||||
|
||||
for ( i = 0; i < face->num_sbit_strikes; i++ )
|
||||
{
|
||||
if ( ( face->sbit_strikes[i].y_ppem == y_ppem ) &&
|
||||
( ( x_ppem == 0 ) ||
|
||||
( face->sbit_strikes[i].x_ppem == x_ppem )))
|
||||
if ( ( face->sbit_strikes[i].y_ppem == y_ppem ) &&
|
||||
( ( x_ppem == 0 ) ||
|
||||
( face->sbit_strikes[i].x_ppem == x_ppem ) ) )
|
||||
{
|
||||
*astrike_index = i;
|
||||
return TT_Err_Ok;
|
||||
*astrike_index = i;
|
||||
return TT_Err_Ok;
|
||||
}
|
||||
}
|
||||
|
||||
return TT_Err_Invalid_PPem;
|
||||
}
|
||||
|
||||
|
@ -665,10 +667,12 @@
|
|||
/* */
|
||||
/* <Input> */
|
||||
/* glyph_index :: The glyph index. */
|
||||
/* */
|
||||
/* strike :: The source/current sbit strike. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* arange :: The sbit range containing the glyph index. */
|
||||
/* */
|
||||
/* aglyph_offset :: The offset of the glyph data in `EBDT' table. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
|
@ -766,12 +770,16 @@
|
|||
/* */
|
||||
/* <Input> */
|
||||
/* face :: The target face object. */
|
||||
/* */
|
||||
/* glyph_index :: The glyph index. */
|
||||
/* strike_index :: The current strike index. */
|
||||
/* */
|
||||
/* strike_index :: The current strike index. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* arange :: The SBit range containing the glyph index. */
|
||||
/* */
|
||||
/* astrike :: The SBit strike containing the glyph index. */
|
||||
/* */
|
||||
/* aglyph_offset :: The offset of the glyph data in `EBDT' table. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
|
@ -781,21 +789,23 @@
|
|||
static
|
||||
FT_Error Find_SBit_Image( TT_Face face,
|
||||
FT_UInt glyph_index,
|
||||
FT_ULong strike_index,
|
||||
TT_SBit_Range** arange,
|
||||
TT_SBit_Strike** astrike,
|
||||
FT_ULong* aglyph_offset )
|
||||
FT_ULong strike_index,
|
||||
TT_SBit_Range* *arange,
|
||||
TT_SBit_Strike* *astrike,
|
||||
FT_ULong *aglyph_offset )
|
||||
{
|
||||
FT_Error error;
|
||||
FT_Error error;
|
||||
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;
|
||||
|
||||
strike = &face->sbit_strikes[strike_index];
|
||||
|
||||
error = Find_SBit_Range( glyph_index, strike,
|
||||
arange, aglyph_offset );
|
||||
arange, aglyph_offset );
|
||||
if ( error )
|
||||
goto Fail;
|
||||
|
||||
|
@ -921,8 +931,8 @@
|
|||
/* Crops a bitmap to its tightest bounding box, and adjusts its */
|
||||
/* metrics. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* image :: The input glyph slot. */
|
||||
/* <InOut> */
|
||||
/* map :: The bitmap. */
|
||||
/* */
|
||||
/* metrics :: The corresponding metrics structure. */
|
||||
/* */
|
||||
|
@ -1366,21 +1376,21 @@
|
|||
/* returns its metrics. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: The target face object. */
|
||||
/* face :: The target face object. */
|
||||
/* */
|
||||
/* 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 */
|
||||
/* FT_LOAD_CROP_BITMAP */
|
||||
/* load_flags :: The glyph load flags (the code checks for the flag */
|
||||
/* FT_LOAD_CROP_BITMAP). */
|
||||
/* */
|
||||
/* stream :: The input stream. */
|
||||
/* stream :: The input stream. */
|
||||
/* */
|
||||
/* <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> */
|
||||
/* FreeType error code. 0 means success. Returns an error if no */
|
||||
|
@ -1391,12 +1401,12 @@
|
|||
/* */
|
||||
FT_LOCAL_DEF
|
||||
FT_Error TT_Load_SBit_Image( TT_Face face,
|
||||
FT_ULong strike_index,
|
||||
FT_ULong strike_index,
|
||||
FT_UInt glyph_index,
|
||||
FT_UInt load_flags,
|
||||
FT_Stream stream,
|
||||
FT_Bitmap* map,
|
||||
TT_SBit_Metrics* metrics )
|
||||
FT_Bitmap *map,
|
||||
TT_SBit_Metrics *metrics )
|
||||
{
|
||||
FT_Error error;
|
||||
FT_Memory memory = stream->memory;
|
||||
|
|
|
@ -45,10 +45,10 @@
|
|||
|
||||
|
||||
FT_LOCAL
|
||||
FT_Error TT_Set_SBit_Strike( TT_Face face,
|
||||
FT_Int x_ppem,
|
||||
FT_Int y_ppem,
|
||||
FT_ULong *astrike_index );
|
||||
FT_Error TT_Set_SBit_Strike( TT_Face face,
|
||||
FT_Int x_ppem,
|
||||
FT_Int y_ppem,
|
||||
FT_ULong *astrike_index );
|
||||
|
||||
FT_LOCAL
|
||||
FT_Error TT_Load_SBit_Image( TT_Face face,
|
||||
|
@ -60,7 +60,6 @@
|
|||
TT_SBit_Metrics *metrics );
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1345,15 +1345,13 @@
|
|||
glyph->num_subglyphs = 0;
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
|
||||
/*
|
||||
* try to load embedded bitmap if any
|
||||
*
|
||||
* XXX: The convention should be emphasized in
|
||||
* the documents. Because some application
|
||||
* developpers confuse.
|
||||
*/
|
||||
|
||||
/* try to load embedded bitmap if any */
|
||||
/* */
|
||||
/* XXX: The convention should be emphasized in */
|
||||
/* the documents because it can be confusing. */
|
||||
if ( size &&
|
||||
size->strike_index != 0xFFFF &&
|
||||
size->strike_index != 0xFFFF &&
|
||||
sfnt->load_sbits &&
|
||||
( load_flags & FT_LOAD_NO_BITMAP ) == 0 )
|
||||
|
||||
|
|
|
@ -453,7 +453,8 @@
|
|||
size->ttmetrics.valid = FALSE;
|
||||
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:
|
||||
if ( !size->debug )
|
||||
|
@ -526,11 +527,11 @@
|
|||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* TT_Reset_Size */
|
||||
/* Reset_Outline_Size */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Resets a TrueType size when resolutions and character dimensions */
|
||||
/* have been changed. */
|
||||
/* Resets a TrueType outline size when resolutions and character */
|
||||
/* dimensions have been changed. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* size :: A handle to the target size object. */
|
||||
|
@ -575,21 +576,19 @@
|
|||
}
|
||||
|
||||
/* Compute root ascender, descender, test height, and max_advance */
|
||||
{
|
||||
metrics->ascender = ( FT_MulFix( face->root.ascender,
|
||||
metrics->y_scale ) + 32 ) & -64;
|
||||
metrics->descender = ( FT_MulFix( face->root.descender,
|
||||
metrics->y_scale ) + 32 ) & -64;
|
||||
metrics->height = ( FT_MulFix( face->root.height,
|
||||
metrics->y_scale ) + 32 ) & -64;
|
||||
metrics->max_advance = ( FT_MulFix( face->root.max_advance_width,
|
||||
metrics->x_scale ) + 32 ) & -64;
|
||||
}
|
||||
metrics->ascender = ( FT_MulFix( face->root.ascender,
|
||||
metrics->y_scale ) + 32 ) & -64;
|
||||
metrics->descender = ( FT_MulFix( face->root.descender,
|
||||
metrics->y_scale ) + 32 ) & -64;
|
||||
metrics->height = ( FT_MulFix( face->root.height,
|
||||
metrics->y_scale ) + 32 ) & -64;
|
||||
metrics->max_advance = ( FT_MulFix( face->root.max_advance_width,
|
||||
metrics->x_scale ) + 32 ) & -64;
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
|
||||
/* set to "invalid" by default */
|
||||
/* set to `invalid' by default */
|
||||
size->strike_index = 0xFFFF;
|
||||
#endif
|
||||
|
||||
|
@ -673,7 +672,21 @@
|
|||
return error;
|
||||
}
|
||||
|
||||
|
||||
#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
|
||||
FT_Error Reset_SBit_Size( TT_Size size )
|
||||
{
|
||||
|
@ -685,9 +698,10 @@
|
|||
FT_Size_Metrics* sbit_metrics;
|
||||
SFNT_Interface* sfnt;
|
||||
|
||||
|
||||
metrics = &size->root.metrics;
|
||||
|
||||
if (size->strike_index != 0xFFFF)
|
||||
if ( size->strike_index != 0xFFFF )
|
||||
return TT_Err_Ok;
|
||||
|
||||
face = (TT_Face)size->root.face;
|
||||
|
@ -696,31 +710,31 @@
|
|||
sbit_metrics = &size->strike_metrics;
|
||||
|
||||
error = sfnt->set_sbit_strike(face,
|
||||
metrics->x_ppem, metrics->y_ppem,
|
||||
&strike_index);
|
||||
metrics->x_ppem, metrics->y_ppem,
|
||||
&strike_index);
|
||||
|
||||
if (!error)
|
||||
if ( !error )
|
||||
{
|
||||
TT_SBit_Strike* strike = face->sbit_strikes + strike_index;
|
||||
|
||||
|
||||
sbit_metrics->x_ppem = metrics->x_ppem;
|
||||
sbit_metrics->y_ppem = metrics->y_ppem;
|
||||
sbit_metrics->x_ppem = metrics->x_ppem;
|
||||
sbit_metrics->y_ppem = metrics->y_ppem;
|
||||
#if 0
|
||||
/*
|
||||
* sbit_metrics->?_scale
|
||||
* are not used now.
|
||||
*/
|
||||
sbit_metrics->x_scale = 1 << 16;
|
||||
sbit_metrics->y_scale = 1 << 16;
|
||||
sbit_metrics->x_scale = 1 << 16;
|
||||
sbit_metrics->y_scale = 1 << 16;
|
||||
#endif
|
||||
|
||||
sbit_metrics->ascender = strike->hori.ascender << 6;
|
||||
sbit_metrics->descender = strike->hori.descender << 6;
|
||||
sbit_metrics->ascender = strike->hori.ascender << 6;
|
||||
sbit_metrics->descender = strike->hori.descender << 6;
|
||||
|
||||
/* XXX: Is this correct? */
|
||||
sbit_metrics->height = sbit_metrics->ascender -
|
||||
sbit_metrics->descender;
|
||||
sbit_metrics->height = sbit_metrics->ascender -
|
||||
sbit_metrics->descender;
|
||||
|
||||
/* XXX: Is this correct? */
|
||||
sbit_metrics->max_advance = ( strike->hori.min_origin_SB +
|
||||
|
@ -743,8 +757,10 @@
|
|||
|
||||
return error;
|
||||
}
|
||||
|
||||
#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
|
@ -760,40 +776,46 @@
|
|||
FT_LOCAL_DEF
|
||||
FT_Error TT_Reset_Size( TT_Size size )
|
||||
{
|
||||
FT_Face face;
|
||||
FT_Face face;
|
||||
FT_Error error = TT_Err_Ok;
|
||||
|
||||
|
||||
face = size->root.face;
|
||||
|
||||
if ( face->face_flags & FT_FACE_FLAG_SCALABLE )
|
||||
{
|
||||
if ( !size->ttmetrics.valid )
|
||||
error = Reset_Outline_Size( size );
|
||||
error = Reset_Outline_Size( size );
|
||||
|
||||
if ( error )
|
||||
return error;
|
||||
return error;
|
||||
}
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
|
||||
|
||||
if ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES )
|
||||
{
|
||||
FT_Size_Metrics* sbit_metrics;
|
||||
|
||||
|
||||
if ( size->strike_index == 0xFFFF )
|
||||
error = Reset_SBit_Size( size );
|
||||
|
||||
sbit_metrics = &size->strike_metrics;
|
||||
|
||||
if ((!error) && !( face->face_flags & FT_FACE_FLAG_SCALABLE ))
|
||||
size->root.metrics = *sbit_metrics;
|
||||
if ( !error && !( face->face_flags & FT_FACE_FLAG_SCALABLE ) )
|
||||
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;
|
||||
else
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
|
|
|
@ -305,7 +305,6 @@
|
|||
} TT_Size_Metrics;
|
||||
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* TrueType size class. */
|
||||
|
@ -317,8 +316,10 @@
|
|||
TT_Size_Metrics ttmetrics;
|
||||
|
||||
#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
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
||||
|
|
Loading…
Reference in New Issue