forgotten fixes.

This commit is contained in:
Werner Lemberg 2000-06-25 07:43:15 +00:00
parent a929ba9b20
commit dcd2e14c58
5 changed files with 50 additions and 36 deletions

View File

@ -2360,7 +2360,7 @@
/* */
/* To add a new renderer, simply use FT_Add_Module(). To retrieve a */
/* renderer by its name, use FT_Get_Module(). */
/*
/* */
FT_EXPORT_FUNC( FT_Renderer ) FT_Get_Renderer( FT_Library library,
FT_Glyph_Format format )
{
@ -2587,7 +2587,7 @@
FT_UInt nn;
#define FREETYPE_VER_FIXED ( ( (FT_Long)FREETYPE_MAJOR << 16 ) |
#define FREETYPE_VER_FIXED ( ( (FT_Long)FREETYPE_MAJOR << 16 ) | \
FREETYPE_MINOR )
if ( !library || !clazz )
@ -2786,7 +2786,7 @@
/* */
/* <Note> */
/* The module object is destroyed by the function in case of success. */
/*
/* */
FT_EXPORT_FUNC( FT_Error ) FT_Remove_Module( FT_Library library,
FT_Module module )
{

View File

@ -36,7 +36,7 @@
#define FT_COMPONENT trace_cidafm
#if 0
#if 1
LOCAL_FUNC
void CID_Done_AFM( FT_Memory memory,
@ -281,7 +281,7 @@
kerning->y = 0;
}
#endif /* 0 */
#endif /* 1 */
/* END */

View File

@ -38,7 +38,7 @@
} T1_AFM;
#if 0
#if 1
LOCAL_DEF
FT_Error CID_Read_AFM( FT_Face t1_face,
@ -54,7 +54,7 @@
FT_UInt glyph2,
FT_Vector* kerning );
#endif /* 0 */
#endif /* 1 */
#endif /* CIDAFM_H */

View File

@ -24,7 +24,7 @@
#include <cidriver.c>
#include <cidgload.c>
#if 0
#if 1
#include <cidafm.c>
#endif

View File

@ -108,9 +108,9 @@
/*************************************************************************/
/* */
/* Returns the horizontal metrics in font units for a given glyph. */
/* If `check' is true, take care of monospaced fonts by returning the */
/* advance width maximum. */
/* Returns the horizontal metrics in font units for a given glyph. If */
/* `check' is true, take care of monospaced fonts by returning the */
/* advance width maximum. */
/* */
static
void Get_HMetrics( TT_Face face,
@ -415,8 +415,8 @@
FT_Error TT_Load_Composite_Glyph( TT_Loader* loader )
{
FT_Error error;
FT_Stream stream = loader->stream;
FT_GlyphLoader* gloader = loader->gloader;
FT_Stream stream = loader->stream;
FT_GlyphLoader* gloader = loader->gloader;
FT_SubGlyph* subglyph;
FT_UInt num_subglyphs;
@ -429,7 +429,7 @@
/* check that we can load a new subglyph */
error = FT_GlyphLoader_Check_Subglyphs( gloader, num_subglyphs+1 );
error = FT_GlyphLoader_Check_Subglyphs( gloader, num_subglyphs + 1 );
if ( error )
goto Fail;
@ -480,8 +480,7 @@
subglyph->transform.yy = yy;
num_subglyphs++;
}
while (subglyph->flags & MORE_COMPONENTS);
} while ( subglyph->flags & MORE_COMPONENTS );
gloader->current.num_subglyphs = num_subglyphs;
@ -562,7 +561,7 @@
/* Note that we return two more points that are not */
/* part of the glyph outline. */
n_points += 2;
n_points += 2;
/* set up zone for hinting */
tt_prepare_zone( zone, &gloader->current, 0, 0 );
@ -691,7 +690,7 @@
Get_HMetrics( face, index,
(FT_Bool)!(loader->load_flags &
FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH),
FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH),
&left_bearing,
&advance_width );
@ -721,8 +720,10 @@
loader->pp2.x = FT_MulFix( loader->pp2.x, x_scale );
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
if ( loader->exec )
loader->exec->glyphSize = 0;
#endif
error = FT_Err_Ok;
goto Exit;
@ -777,13 +778,20 @@
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
{
TT_Size size = (TT_Size)loader->size;
error = TT_Process_Simple_Glyph( loader,
(FT_Bool)( size && size->debug ) );
}
#else
error = Process_Simple_Glyph( loader, 0 );
#endif
if ( error ) goto Fail;
if ( error )
goto Fail;
FT_GlyphLoader_Add( gloader );
@ -830,15 +838,14 @@
}
/***********************************************************************/
/***********************************************************************/
/***********************************************************************/
/*********************************************************************/
/* Now, read each subglyph independently.. */
/*********************************************************************/
/*********************************************************************/
/* Now, read each subglyph independently. */
{
FT_Int n, num_base_points, num_new_points;
FT_SubGlyph* subglyph;
FT_SubGlyph* subglyph = 0;
FT_UInt num_subglyphs = gloader->current.num_subglyphs;
FT_UInt num_base_subgs = gloader->base.num_subglyphs;
@ -851,6 +858,7 @@
FT_Vector pp1, pp2;
FT_Pos x, y;
/* Each time we call load_truetype_glyph in this loop, the */
/* value of `gloader.base.subglyphs' can change due to table */
/* reallocations. We thus need to recompute the subglyph */
@ -879,7 +887,7 @@
loader->pp2 = pp2;
}
num_points = gloader->base.outline.n_points;
num_points = gloader->base.outline.n_points;
num_new_points = num_points - num_base_points;
@ -895,6 +903,7 @@
num_base_points;
FT_Vector* limit = cur + num_new_points;
for ( ; cur < limit; cur++, org++ )
{
FT_Vector_Transform( cur, &subglyph->transform );
@ -949,9 +958,9 @@
cur_to_org( num_new_points, &loader->zone );
}
/***********************************************************************/
/***********************************************************************/
/***********************************************************************/
/*******************************************************************/
/*******************************************************************/
/*******************************************************************/
/* we have finished loading all sub-glyphs, now, look for */
/* instructions for this composite! */
@ -1036,11 +1045,11 @@
cur_to_org( n_points, pts );
/* now consider hinting */
if ( IS_HINTED(loader->load_flags) && n_ins > 0 )
if ( IS_HINTED( loader->load_flags ) && n_ins > 0 )
{
exec->is_composite = TRUE;
exec->pedantic_hinting =
(FT_Bool)(loader->load_flags & FT_LOAD_PEDANTIC);
(FT_Bool)( loader->load_flags & FT_LOAD_PEDANTIC );
error = TT_Run_Context( exec, ((TT_Size)loader->size)->debug );
if ( error && exec->pedantic_hinting )
@ -1051,7 +1060,9 @@
loader->pp1 = pp1[0];
loader->pp2 = pp1[1];
}
#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
}
/* end of composite loading */
}
@ -1059,7 +1070,6 @@
/***********************************************************************/
/***********************************************************************/
/***********************************************************************/
/***********************************************************************/
Fail:
if ( opened_frame )
@ -1080,6 +1090,7 @@
TT_GlyphSlot glyph = loader->glyph;
TT_Size size = (TT_Size)loader->size;
x_scale = 0x10000L;
y_scale = 0x10000L;
if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 )
@ -1234,12 +1245,14 @@
glyph->metrics.vertAdvance = advance;
}
/* Adjust advance width to the value contained in the hdmx table. */
/* adjust advance width to the value contained in the hdmx table */
if ( !face->postscript.isFixedPitch && size &&
IS_HINTED( loader->load_flags ) )
{
FT_Byte* widths = Get_Advance_Widths( face,
size->root.metrics.x_ppem );
if ( widths )
glyph->metrics.horiAdvance = widths[glyph_index] << 6;
}
@ -1247,7 +1260,6 @@
/* set glyph dimensions */
glyph->metrics.width = bbox.xMax - bbox.xMin;
glyph->metrics.height = bbox.yMax - bbox.yMin;
}
@ -1367,7 +1379,7 @@
error = face->goto_table( face, TTAG_glyf, stream, 0 );
if ( error )
{
FT_ERROR(( "TT_Load_Glyph: Could not access glyph table\n" ));
FT_ERROR(( "TT_Load_Glyph: could not access glyph table\n" ));
goto Exit;
}
@ -1439,9 +1451,11 @@
compute_glyph_metrics( &loader, glyph_index );
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
if ( !size || !size->debug )
TT_Done_Context( loader.exec );
#endif
#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
Exit:
return error;