* src/truetype/ttgload.c (load_truetype_glyph): Fix compiler
warnings. Formatting.
This commit is contained in:
parent
6ec747f1ac
commit
ff5dc5fd30
60
ChangeLog
60
ChangeLog
@ -1,3 +1,8 @@
|
||||
2005-08-19 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
* src/truetype/ttgload.c (load_truetype_glyph): Fix compiler
|
||||
warnings.
|
||||
|
||||
2005-08-16 Chia I Wu <b90201047@ntu.edu.tw>
|
||||
|
||||
* src/truetype/ttinterp.c, src/truetype/ttinterp.h: Update copyright
|
||||
@ -6,37 +11,48 @@
|
||||
2005-08-16 Chia I Wu <b90201047@ntu.edu.tw>
|
||||
|
||||
* src/truetype/ttinterp.c, src/truetype/ttinterp.h: Remove original
|
||||
TT_Done_Context and rename TT_Destroy_Context to TT_Done_Context with
|
||||
slight changes.
|
||||
TT_Done_Context and rename TT_Destroy_Context to TT_Done_Context
|
||||
with slight changes.
|
||||
Update all callers.
|
||||
(TT_New_Context): Now takes TT_Driver argument directly.
|
||||
Update all callers.
|
||||
|
||||
* src/truetype/ttobjs.h (tt_slot_init): New function.
|
||||
|
||||
* src/truetype/ttobjs.c (tt_driver_init): Initialize execution context
|
||||
here.
|
||||
* src/truetype/ttobjs.c (tt_driver_init): Initialize execution
|
||||
context here.
|
||||
(tt_slot_init): New function to create extra points for the internal
|
||||
glyph loader. We then use it directly, instead of face's glyph loader,
|
||||
when loading glyph.
|
||||
glyph loader. We then use it directly, instead of face's glyph
|
||||
loader, when loading glyph.
|
||||
|
||||
* src/truetype/ttdriver.c: Use tt_slot_init for glyph slot
|
||||
initialization.
|
||||
(TT_Load_Glyph): Load flag dependencies are handled here.
|
||||
Return error if size is NULL.
|
||||
* src/truetype/ttdriver.c (tt_driver_class): Use tt_slot_init for
|
||||
glyph slot initialization.
|
||||
(Load_Glyph): Load flag dependencies are handled here. Return error
|
||||
if size is NULL.
|
||||
|
||||
* src/truetype/ttgload.c: Heavy cleanup and refactor.
|
||||
* src/truetype/ttgload.c: Heavy cleanup and refactoring.
|
||||
(org_to_cur): Removed.
|
||||
(TT_Load_Simple_Glyph): Call FT_GlyphLoader_CheckPoints.
|
||||
(TT_Hint_Glyph): New funcion to hint a zone, prepared by caller.
|
||||
(TT_Process_Simple_Glyph): Use loader->pp's instead of recalculating.
|
||||
(TT_Process_Simple_Glyph): s/load/loader/.
|
||||
Use loader->pp values instead of recalculation.
|
||||
Use TT_Hint_Glyph.
|
||||
No need to save/restore loader->stream before/after
|
||||
No need to save/restore loader->stream before and after
|
||||
TT_Vary_Get_Glyph_Deltas now.
|
||||
(TT_LOADER_SET_PP): New macro to calculate and set the four phantom points.
|
||||
(TT_Process_Composite_Component, TT_Process_Composite_Glyph,
|
||||
load_truetype_glyph): Refactor load_truetype_glyph into these three functions.
|
||||
Never set exec->glyphSize to 0. (close #13107)
|
||||
(TT_LOADER_SET_PP): New macro to calculate and set the four phantom
|
||||
points.
|
||||
(load_truetype_glyph): Never set exec->glyphSize to 0. This closes
|
||||
Savannah bug #13107.
|
||||
Forget glyph frame before calling TT_Process_Simple_Glyph.
|
||||
(TT_Load_Glyph, load_sbit_image, tt_loader_init): Refactor TT_Load_Glyph into
|
||||
these three functions.
|
||||
Set various fields of `glyph' here, instead of in load_truetype_glyph
|
||||
and compute_glyph_metrics.
|
||||
Use TT_LOADER_SET_PP.
|
||||
Scale all four phantom points.
|
||||
Split off some functionality to ...
|
||||
(TT_Process_Composite_Component, TT_Process_Composite_Glyph): These
|
||||
new functions.
|
||||
(TT_Load_Glyph): Set various fields of `glyph' here, not in
|
||||
load_truetype_glyph and compute_glyph_metrics.
|
||||
Split off some functionality to ...
|
||||
(load_sbit_image, tt_loader_init): These new functions.
|
||||
(compute_glyph_metrics): Call FT_Outline_Get_CBox.
|
||||
|
||||
2005-08-08 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
|
@ -955,14 +955,14 @@
|
||||
FT_Pos x, y;
|
||||
|
||||
|
||||
have_scale = ( subglyph->flags & ( WE_HAVE_A_SCALE |
|
||||
WE_HAVE_AN_XY_SCALE |
|
||||
WE_HAVE_A_2X2 ) );
|
||||
have_scale = subglyph->flags & ( WE_HAVE_A_SCALE |
|
||||
WE_HAVE_AN_XY_SCALE |
|
||||
WE_HAVE_A_2X2 );
|
||||
|
||||
/* perform the transform required for this subglyph */
|
||||
if ( have_scale )
|
||||
{
|
||||
FT_UInt i;
|
||||
FT_UInt i;
|
||||
|
||||
|
||||
for ( i = num_base_points; i < num_points; i++ )
|
||||
@ -978,17 +978,15 @@
|
||||
FT_Vector* p2;
|
||||
|
||||
|
||||
/* match l-th point of the newly loaded component to the k-th point of */
|
||||
/* the previously loaded components. */
|
||||
/* match l-th point of the newly loaded component to the k-th point */
|
||||
/* of the previously loaded components. */
|
||||
|
||||
/* change to the point numbers used by our outline */
|
||||
k += start_point;
|
||||
l += num_base_points;
|
||||
if ( k >= (FT_UInt)num_base_points ||
|
||||
l >= (FT_UInt)num_points )
|
||||
{
|
||||
if ( k >= num_base_points ||
|
||||
l >= num_points )
|
||||
return TT_Err_Invalid_Composite;
|
||||
}
|
||||
|
||||
p1 = gloader->base.outline.points + k;
|
||||
p2 = gloader->base.outline.points + l;
|
||||
@ -1004,9 +1002,9 @@
|
||||
if ( !x && !y )
|
||||
return TT_Err_Ok;
|
||||
|
||||
/* Use a default value dependent on */
|
||||
/* TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED. This is useful for old TT */
|
||||
/* fonts which don't set the xxx_COMPONENT_OFFSET bit. */
|
||||
/* Use a default value dependent on */
|
||||
/* TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED. This is useful for old TT */
|
||||
/* fonts which don't set the xxx_COMPONENT_OFFSET bit. */
|
||||
|
||||
if ( have_scale &&
|
||||
#ifdef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED
|
||||
@ -1017,10 +1015,10 @@
|
||||
{
|
||||
#if 0
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* This algorithm is what Apple documents. But it doesn't work. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* This algorithm is what Apple documents. But it doesn't work. */
|
||||
/* */
|
||||
int a = subglyph->transform.xx > 0 ? subglyph->transform.xx
|
||||
: -subglyph->transform.xx;
|
||||
int b = subglyph->transform.yx > 0 ? subglyph->transform.yx
|
||||
@ -1042,10 +1040,10 @@
|
||||
|
||||
#else /* 0 */
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* This algorithm is a guess and works much better than the above. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* This algorithm is a guess and works much better than the above. */
|
||||
/* */
|
||||
FT_Fixed mac_xscale = FT_SqrtFixed(
|
||||
FT_MulFix( subglyph->transform.xx,
|
||||
subglyph->transform.xx ) +
|
||||
@ -1067,8 +1065,8 @@
|
||||
|
||||
if ( !( loader->load_flags & FT_LOAD_NO_SCALE ) )
|
||||
{
|
||||
FT_Fixed x_scale = ((TT_Size)loader->size)->metrics.x_scale;
|
||||
FT_Fixed y_scale = ((TT_Size)loader->size)->metrics.y_scale;
|
||||
FT_Fixed x_scale = ((TT_Size)loader->size)->metrics.x_scale;
|
||||
FT_Fixed y_scale = ((TT_Size)loader->size)->metrics.y_scale;
|
||||
|
||||
|
||||
x = FT_MulFix( x, x_scale );
|
||||
@ -1113,7 +1111,9 @@
|
||||
outline = &loader->gloader->base.outline;
|
||||
|
||||
/* make room for phantom points */
|
||||
error = FT_GlyphLoader_CheckPoints( loader->gloader, outline->n_points + 4, 0 );
|
||||
error = FT_GlyphLoader_CheckPoints( loader->gloader,
|
||||
outline->n_points + 4,
|
||||
0 );
|
||||
if ( error )
|
||||
return error;
|
||||
|
||||
@ -1137,7 +1137,7 @@
|
||||
/* TT_Load_Composite_Glyph only gives us the offset of instructions */
|
||||
/* so we read them here */
|
||||
if ( FT_STREAM_SEEK( loader->ins_pos ) ||
|
||||
FT_READ_USHORT( n_ins ) )
|
||||
FT_READ_USHORT( n_ins ) )
|
||||
return error;
|
||||
|
||||
FT_TRACE5(( " Instructions size = %d\n", n_ins ));
|
||||
@ -1161,7 +1161,8 @@
|
||||
|
||||
#endif
|
||||
|
||||
tt_prepare_zone( &loader->zone, &loader->gloader->base, start_point, start_contour );
|
||||
tt_prepare_zone( &loader->zone, &loader->gloader->base,
|
||||
start_point, start_contour );
|
||||
loader->zone.n_points += 4;
|
||||
|
||||
return TT_Hint_Glyph( loader, 1 );
|
||||
@ -1283,9 +1284,10 @@
|
||||
goto Exit;
|
||||
left_bearing = (FT_Short)metrics.bearing_x;
|
||||
advance_width = (FT_UShort)metrics.advance;
|
||||
|
||||
# if 0
|
||||
|
||||
/* GWW: Do I do the same for vertical metrics ??? */
|
||||
/* GWW: Do I do the same for vertical metrics ??? */
|
||||
metrics.bearing_x = 0;
|
||||
metrics.bearing_y = top_bearing;
|
||||
metrics.advance = advance_height;
|
||||
@ -1316,7 +1318,7 @@
|
||||
}
|
||||
|
||||
/* Set `offset' to the start of the glyph relative to the start of */
|
||||
/* the 'glyf' table, and `byte_len' to the length of the glyph in */
|
||||
/* the `glyf' table, and `byte_len' to the length of the glyph in */
|
||||
/* bytes. */
|
||||
|
||||
#ifdef FT_CONFIG_OPTION_INCREMENTAL
|
||||
@ -1346,7 +1348,8 @@
|
||||
|
||||
#endif /* FT_CONFIG_OPTION_INCREMENTAL */
|
||||
|
||||
offset = tt_face_get_location( face, glyph_index, (FT_UInt*)&loader->byte_len );
|
||||
offset = tt_face_get_location( face, glyph_index,
|
||||
(FT_UInt*)&loader->byte_len );
|
||||
|
||||
if ( loader->byte_len == 0 )
|
||||
{
|
||||
@ -1525,7 +1528,7 @@
|
||||
/*********************************************************************/
|
||||
|
||||
{
|
||||
FT_Int n, num_base_points;
|
||||
FT_UInt n, num_base_points;
|
||||
FT_SubGlyph subglyph = 0;
|
||||
|
||||
FT_UInt num_points = start_point;
|
||||
@ -1536,7 +1539,7 @@
|
||||
FT_GlyphLoader_Add( gloader );
|
||||
|
||||
/* read each subglyph independently */
|
||||
for ( n = 0; n < (FT_Int)num_subglyphs; n++ )
|
||||
for ( n = 0; n < num_subglyphs; n++ )
|
||||
{
|
||||
FT_Vector pp[4];
|
||||
|
||||
@ -1815,6 +1818,7 @@
|
||||
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
|
||||
|
||||
static FT_Error
|
||||
load_sbit_image( TT_Size size,
|
||||
TT_GlyphSlot glyph,
|
||||
@ -1827,6 +1831,7 @@
|
||||
FT_Error error;
|
||||
TT_SBit_MetricsRec metrics;
|
||||
|
||||
|
||||
face = (TT_Face)glyph->face;
|
||||
sfnt = (SFNT_Service)face->sfnt;
|
||||
stream = face->root.stream;
|
||||
@ -1869,7 +1874,8 @@
|
||||
|
||||
return error;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
|
||||
|
||||
|
||||
static FT_Error
|
||||
@ -1878,11 +1884,11 @@
|
||||
TT_GlyphSlot glyph,
|
||||
FT_Int32 load_flags )
|
||||
{
|
||||
TT_Face face;
|
||||
FT_Stream stream;
|
||||
TT_Face face;
|
||||
FT_Stream stream;
|
||||
|
||||
|
||||
face = (TT_Face)glyph->face;
|
||||
face = (TT_Face)glyph->face;
|
||||
stream = face->root.stream;
|
||||
|
||||
FT_MEM_ZERO( loader, sizeof ( TT_LoaderRec ) );
|
||||
@ -1934,6 +1940,8 @@
|
||||
|
||||
{
|
||||
FT_Error error = face->goto_table( face, TTAG_glyf, stream, 0 );
|
||||
|
||||
|
||||
if ( error )
|
||||
{
|
||||
FT_ERROR(( "TT_Load_Glyph: could not access glyph table\n" ));
|
||||
@ -1946,6 +1954,7 @@
|
||||
{
|
||||
FT_GlyphLoader gloader = glyph->internal->loader;
|
||||
|
||||
|
||||
FT_GlyphLoader_Rewind( gloader );
|
||||
loader->gloader = gloader;
|
||||
}
|
||||
@ -2010,7 +2019,7 @@
|
||||
/* */
|
||||
/* XXX: The convention should be emphasized in */
|
||||
/* the documents because it can be confusing. */
|
||||
if ( size->strike_index != 0xFFFFU &&
|
||||
if ( size->strike_index != 0xFFFFU &&
|
||||
( load_flags & FT_LOAD_NO_BITMAP ) == 0 )
|
||||
{
|
||||
error = load_sbit_image( size, glyph, glyph_index, load_flags );
|
||||
@ -2042,7 +2051,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
glyph->outline = loader.gloader->base.outline;
|
||||
glyph->outline = loader.gloader->base.outline;
|
||||
glyph->outline.flags &= ~FT_OUTLINE_SINGLE_PASS;
|
||||
|
||||
/* translate array so that (0,0) is the glyph's origin */
|
||||
|
@ -444,7 +444,7 @@ FT_BEGIN_HEADER
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Slot functions */
|
||||
/* Slot functions */
|
||||
/* */
|
||||
FT_LOCAL( FT_Error )
|
||||
tt_slot_init( FT_GlyphSlot slot );
|
||||
|
Loading…
Reference in New Issue
Block a user