Formatting...
Fixing incorrect scaling of vertical advance width.
This commit is contained in:
parent
cc9fc49c90
commit
ac39ecdca8
@ -1659,7 +1659,7 @@
|
||||
T2_Forget_Element( &cff->charstrings_index, &charstring );
|
||||
}
|
||||
|
||||
/* ignore the error if one has occured - skip to next glyph */
|
||||
/* ignore the error if one has occurred -- skip to next glyph */
|
||||
error = 0;
|
||||
}
|
||||
|
||||
@ -1800,10 +1800,10 @@
|
||||
|
||||
/* Then scale the metrics */
|
||||
metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale );
|
||||
metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale );
|
||||
|
||||
metrics->vertBearingX = FT_MulFix( metrics->vertBearingX, x_scale );
|
||||
metrics->vertBearingY = FT_MulFix( metrics->vertBearingY, y_scale );
|
||||
metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, x_scale );
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
@ -36,8 +36,6 @@
|
||||
#define FT_COMPONENT trace_cidafm
|
||||
|
||||
|
||||
#if 1
|
||||
|
||||
LOCAL_FUNC
|
||||
void CID_Done_AFM( FT_Memory memory,
|
||||
CID_AFM* afm )
|
||||
@ -120,7 +118,7 @@
|
||||
while ( p < limit && !isdigit( *p ) )
|
||||
{
|
||||
sign = 1;
|
||||
if (*p == '-')
|
||||
if ( *p == '-' )
|
||||
sign = -1;
|
||||
|
||||
p++;
|
||||
@ -138,7 +136,7 @@
|
||||
|
||||
|
||||
#undef KERN_INDEX
|
||||
#define KERN_INDEX( g1, g2 ) ( ( (FT_ULong)g1 << 16 ) | g2 )
|
||||
#define KERN_INDEX( g1, g2 ) ( ( (FT_ULong)g1 << 16 ) | g2 )
|
||||
|
||||
|
||||
/* compare two kerning pairs */
|
||||
@ -157,7 +155,7 @@
|
||||
}
|
||||
|
||||
|
||||
/* parse an AFM file - for now, only read the kerning pairs */
|
||||
/* parse an AFM file -- for now, only read the kerning pairs */
|
||||
LOCAL_FUNC
|
||||
FT_Error CID_Read_AFM( FT_Face cid_face,
|
||||
FT_Stream stream )
|
||||
@ -180,8 +178,8 @@
|
||||
limit = (FT_Byte*)stream->limit;
|
||||
p = start;
|
||||
|
||||
/* we are now going to count the occurences of `KP' or `KPX' in */
|
||||
/* the AFM file. */
|
||||
/* we are now going to count the occurrences of `KP' or `KPX' in */
|
||||
/* the AFM file. */
|
||||
count = 0;
|
||||
for ( p = start; p < limit - 3; p++ )
|
||||
{
|
||||
@ -212,7 +210,7 @@
|
||||
FT_Byte* q;
|
||||
|
||||
|
||||
/* skip keyword (KP or KPX) */
|
||||
/* skip keyword (`KP' or `KPX') */
|
||||
q = p + 2;
|
||||
if ( *q == 'X' )
|
||||
q++;
|
||||
@ -281,7 +279,5 @@
|
||||
kerning->y = 0;
|
||||
}
|
||||
|
||||
#endif /* 1 */
|
||||
|
||||
|
||||
/* END */
|
||||
|
@ -38,8 +38,6 @@
|
||||
} CID_AFM;
|
||||
|
||||
|
||||
#if 1
|
||||
|
||||
LOCAL_DEF
|
||||
FT_Error CID_Read_AFM( FT_Face cid_face,
|
||||
FT_Stream stream );
|
||||
@ -54,8 +52,6 @@
|
||||
FT_UInt glyph2,
|
||||
FT_Vector* kerning );
|
||||
|
||||
#endif /* 1 */
|
||||
|
||||
|
||||
#endif /* CIDAFM_H */
|
||||
|
||||
|
@ -76,7 +76,8 @@
|
||||
|
||||
} CID_Operator;
|
||||
|
||||
static const FT_Int t1_args_count[op_max] =
|
||||
static
|
||||
const FT_Int t1_args_count[op_max] =
|
||||
{
|
||||
0, /* none */
|
||||
0, /* endchar */
|
||||
@ -220,7 +221,7 @@
|
||||
/* decoder :: A pointer to the glyph builder to initialize. */
|
||||
/* */
|
||||
LOCAL_FUNC
|
||||
void CID_Init_Decoder( CID_Decoder* decoder )
|
||||
void CID_Init_Decoder( CID_Decoder* decoder )
|
||||
{
|
||||
MEM_Set( decoder, 0, sizeof ( *decoder ) );
|
||||
|
||||
@ -229,7 +230,7 @@
|
||||
}
|
||||
|
||||
|
||||
/* check that there is enough room for `count' more points */
|
||||
/* check that there is enough space for `count' more points */
|
||||
static
|
||||
FT_Error check_points( CID_Builder* builder,
|
||||
FT_Int count )
|
||||
@ -238,7 +239,7 @@
|
||||
}
|
||||
|
||||
|
||||
/* add a new point, do not check space */
|
||||
/* add a new point, but do not check space */
|
||||
static
|
||||
void add_point( CID_Builder* builder,
|
||||
FT_Pos x,
|
||||
@ -265,7 +266,7 @@
|
||||
}
|
||||
|
||||
|
||||
/* check room for a new on-curve point, then add it */
|
||||
/* check space for a new on-curve point, then add it */
|
||||
static
|
||||
FT_Error add_point1( CID_Builder* builder,
|
||||
FT_Pos x,
|
||||
@ -273,6 +274,7 @@
|
||||
{
|
||||
FT_Error error;
|
||||
|
||||
|
||||
error = check_points( builder, 1 );
|
||||
if ( !error )
|
||||
add_point( builder, x, y, 1 );
|
||||
@ -307,7 +309,7 @@
|
||||
}
|
||||
|
||||
|
||||
/* if a path was begun, add its first on-curve point */
|
||||
/* if a path has been started, add its first on-curve point */
|
||||
static
|
||||
FT_Error start_point( CID_Builder* builder,
|
||||
FT_Pos x,
|
||||
@ -335,8 +337,9 @@
|
||||
{
|
||||
FT_Outline* outline = builder->current;
|
||||
|
||||
/* XXXX: We must not include the last point in the path if it */
|
||||
/* is located on the first point. */
|
||||
|
||||
/* XXX: We must not include the last point in the path if it */
|
||||
/* is located on the first point. */
|
||||
if ( outline->n_points > 1 )
|
||||
{
|
||||
FT_Int first = 0;
|
||||
@ -456,7 +459,8 @@
|
||||
|
||||
if ( bchar_index < 0 || achar_index < 0 )
|
||||
{
|
||||
FT_ERROR(( "t1operator_seac: invalid seac character code arguments\n" ));
|
||||
FT_ERROR(( "t1operator_seac: ));
|
||||
FT_ERROR(( " invalid seac character code arguments\n" ));
|
||||
return T1_Err_Syntax_Error;
|
||||
}
|
||||
|
||||
@ -542,14 +546,18 @@
|
||||
FT_Outline_Translate( &dummy, adx - asb, ady );
|
||||
}
|
||||
}
|
||||
|
||||
Exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
#define USE_ARGS( n ) top -= n; \
|
||||
if ( top < decoder->stack ) \
|
||||
goto Stack_Underflow
|
||||
#define USE_ARGS( n ) do \
|
||||
{ \
|
||||
top -= n; \
|
||||
if ( top < decoder->stack ) \
|
||||
goto Stack_Underflow; \
|
||||
} while ( 0 )
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
@ -561,12 +569,12 @@
|
||||
/* Parses a given CID charstrings program. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* decoder :: The current CID decoder. */
|
||||
/* decoder :: The current CID decoder. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* charstring_base :: The base of the charstring stream. */
|
||||
/* charstring_base :: The base of the charstring stream. */
|
||||
/* */
|
||||
/* charstring_len :: The length in bytes of the charstring stream. */
|
||||
/* charstring_len :: The length in bytes of the charstring stream. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
@ -738,7 +746,8 @@
|
||||
{
|
||||
if ( ++ip > limit )
|
||||
{
|
||||
FT_ERROR(( "CID_Parse_CharStrings: unexpected EOF in integer\n" ));
|
||||
FT_ERROR(( "CID_Parse_CharStrings:" ));
|
||||
FT_ERROR(( " unexpected EOF in integer\n" ));
|
||||
goto Syntax_Error;
|
||||
}
|
||||
|
||||
@ -775,6 +784,7 @@
|
||||
else if ( op == op_callothersubr ) /* callothersubr */
|
||||
{
|
||||
FT_TRACE4(( " callothersubr" ));
|
||||
|
||||
if ( top - decoder->stack < 2 )
|
||||
goto Stack_Underflow;
|
||||
|
||||
@ -819,7 +829,7 @@
|
||||
if ( decoder->flex_state == 0 ||
|
||||
decoder->num_flex_vectors != 7 )
|
||||
{
|
||||
FT_ERROR(( "CID)Parse_CharStrings: unexpected flex end\n" ));
|
||||
FT_ERROR(( "CID_Parse_CharStrings: unexpected flex end\n" ));
|
||||
goto Syntax_Error;
|
||||
}
|
||||
|
||||
@ -851,7 +861,8 @@
|
||||
|
||||
if ( ip[0] != 12 || ip[1] != 17 )
|
||||
{
|
||||
FT_ERROR(( "CID_Parse_CharStrings: `pop' expected, found (%d %d)\n",
|
||||
FT_ERROR(( "CID_Parse_CharStrings:" ));
|
||||
FT_ERROR(( " `pop' expected, found (%d %d)\n",
|
||||
ip[0], ip[1] ));
|
||||
goto Syntax_Error;
|
||||
}
|
||||
@ -877,16 +888,19 @@
|
||||
FT_Int* delta;
|
||||
FT_Int* values;
|
||||
|
||||
|
||||
if ( !blend )
|
||||
{
|
||||
FT_ERROR(( "CID_Parse_CharStrings: unexpected multiple masters operator!\n" ));
|
||||
FT_ERROR(( "CID_Parse_CharStrings:" ));
|
||||
FT_ERROR(( " unexpected multiple masters operator!\n" ));
|
||||
goto Syntax_Error;
|
||||
}
|
||||
|
||||
num_points = top[1] - 13 + ( top[1] == 18 );
|
||||
if ( top[0] != num_points * blend->num_designs )
|
||||
{
|
||||
FT_ERROR(( "CID_Parse_CharStrings: incorrect number of mm arguments\n" ));
|
||||
FT_ERROR(( "CID_Parse_CharStrings:" ));
|
||||
FT_ERROR(( " incorrect number of mm arguments\n" ));
|
||||
goto Syntax_Error;
|
||||
}
|
||||
|
||||
@ -894,12 +908,12 @@
|
||||
if ( top < decoder->stack )
|
||||
goto Stack_Underflow;
|
||||
|
||||
/* we want to compute: */
|
||||
/* We want to compute: */
|
||||
/* */
|
||||
/* a0*w0 + a1*w1 + ... + ak*wk */
|
||||
/* */
|
||||
/* but we only have the a0, a1-a0, a2-a0, .. ak-a0 */
|
||||
/* however, given that w0 + w1 + ... + wk == 1, we can */
|
||||
/* but we only have the a0, a1-a0, a2-a0, .. ak-a0. */
|
||||
/* However, given that w0 + w1 + ... + wk == 1, we can */
|
||||
/* rewrite it easily as: */
|
||||
/* */
|
||||
/* a0 + (a1-a0)*w1 + (a2-a0)*w2 + .. + (ak-a0)*wk */
|
||||
@ -909,7 +923,6 @@
|
||||
/* I guess that's why it's written in this `compact' */
|
||||
/* form... */
|
||||
/* */
|
||||
/* */
|
||||
delta = top + num_points;
|
||||
values = top;
|
||||
for ( nn = 0; nn < num_points; nn++ )
|
||||
@ -970,7 +983,7 @@
|
||||
builder->last.x = x = top[0];
|
||||
builder->last.y = y = 0;
|
||||
|
||||
/* the `metrics_only' indicates that we only want to compute */
|
||||
/* The `metrics_only' indicates that we only want to compute */
|
||||
/* the glyph's metrics (lsb + advance width), not load the */
|
||||
/* rest of it. So exit immediately. */
|
||||
if ( builder->metrics_only )
|
||||
@ -979,7 +992,7 @@
|
||||
break;
|
||||
|
||||
case op_seac:
|
||||
/* return immediately after the processing */
|
||||
/* return immediately after processing */
|
||||
return t1operator_seac( decoder, top[0], top[1],
|
||||
top[2], top[3], top[4] );
|
||||
|
||||
@ -994,7 +1007,7 @@
|
||||
builder->last.x = x = top[0];
|
||||
builder->last.y = y = top[1];
|
||||
|
||||
/* the `metrics_only' indicates that we only want to compute */
|
||||
/* The `metrics_only' indicates that we only want to compute */
|
||||
/* the glyph's metrics (lsb + advance width), not load the */
|
||||
/* rest of it. So exit immediately. */
|
||||
if ( builder->metrics_only )
|
||||
@ -1087,6 +1100,7 @@
|
||||
|
||||
case op_vhcurveto:
|
||||
FT_TRACE4(( " vhcurveto" ));
|
||||
|
||||
if ( start_point( builder, x, y ) ||
|
||||
check_points( builder, 3 ) )
|
||||
goto Memory_Error;
|
||||
@ -1175,7 +1189,7 @@
|
||||
case op_pop:
|
||||
FT_TRACE4(( " pop" ));
|
||||
|
||||
/* theorically, the arguments are already on the stack */
|
||||
/* theoretically, the arguments are already on the stack */
|
||||
top++;
|
||||
break;
|
||||
|
||||
@ -1223,7 +1237,8 @@
|
||||
case op_setcurrentpoint:
|
||||
FT_TRACE4(( " setcurrentpoint" ));
|
||||
|
||||
FT_ERROR(( "CID_Parse_CharStrings: unexpected `setcurrentpoint'\n" ));
|
||||
FT_ERROR(( "CID_Parse_CharStrings:" ));
|
||||
FT_ERROR(( " unexpected `setcurrentpoint'\n" ));
|
||||
goto Syntax_Error;
|
||||
|
||||
default:
|
||||
@ -1252,6 +1267,9 @@
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
@ -1270,9 +1288,6 @@
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
#if 0
|
||||
|
||||
|
||||
LOCAL_FUNC
|
||||
FT_Error CID_Compute_Max_Advance( CID_Face face,
|
||||
FT_Int* max_advance )
|
||||
@ -1291,14 +1306,14 @@
|
||||
decoder.builder.metrics_only = 1;
|
||||
decoder.builder.load_points = 0;
|
||||
|
||||
/* For each glyph, parse the glyph charstring and extract */
|
||||
/* the advance width. */
|
||||
/* for each glyph, parse the glyph charstring and extract */
|
||||
/* the advance width */
|
||||
for ( glyph_index = 0; glyph_index < face->root.num_glyphs;
|
||||
glyph_index++ )
|
||||
{
|
||||
/* now get load the unscaled outline */
|
||||
error = cid_load_glyph( &decoder, glyph_index );
|
||||
/* ignore the error if one occured - skip to next glyph */
|
||||
/* ignore the error if one occurred - skip to next glyph */
|
||||
}
|
||||
|
||||
*max_advance = decoder.builder.advance.x;
|
||||
@ -1395,7 +1410,6 @@
|
||||
}
|
||||
|
||||
|
||||
|
||||
LOCAL_FUNC
|
||||
FT_Error CID_Load_Glyph( CID_GlyphSlot glyph,
|
||||
CID_Size size,
|
||||
@ -1442,7 +1456,7 @@
|
||||
if ( !error )
|
||||
{
|
||||
/* for composite glyphs, return only the left side bearing and the */
|
||||
/* advance width.. */
|
||||
/* advance width */
|
||||
if ( load_flags & FT_LOAD_NO_RECURSE )
|
||||
{
|
||||
glyph->root.metrics.horiBearingX = decoder.builder.left_bearing.x;
|
||||
@ -1455,7 +1469,7 @@
|
||||
|
||||
|
||||
/* copy the _unscaled_ advance width */
|
||||
metrics->horiAdvance = decoder.builder.advance.x;
|
||||
metrics->horiAdvance = decoder.builder.advance.x;
|
||||
|
||||
/* make up vertical metrics */
|
||||
metrics->vertBearingX = 0;
|
||||
@ -1497,10 +1511,10 @@
|
||||
|
||||
/* Then scale the metrics */
|
||||
metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale );
|
||||
metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale );
|
||||
|
||||
metrics->vertBearingX = FT_MulFix( metrics->vertBearingX, x_scale );
|
||||
metrics->vertBearingY = FT_MulFix( metrics->vertBearingY, y_scale );
|
||||
metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, x_scale );
|
||||
}
|
||||
|
||||
/* apply the font matrix */
|
||||
@ -1514,8 +1528,8 @@
|
||||
{
|
||||
cbox.xMin &= -64;
|
||||
cbox.yMin &= -64;
|
||||
cbox.xMax = ( cbox.xMax + 63 ) & -64;
|
||||
cbox.yMax = ( cbox.yMax + 63 ) & -64;
|
||||
cbox.xMax = ( cbox.xMax + 63 ) & -64;
|
||||
cbox.yMax = ( cbox.yMax + 63 ) & -64;
|
||||
}
|
||||
|
||||
metrics->width = cbox.xMax - cbox.xMin;
|
||||
|
@ -38,7 +38,7 @@
|
||||
#define FT_COMPONENT trace_cidload
|
||||
|
||||
|
||||
/* read a single offset */
|
||||
/* read a single offset */
|
||||
LOCAL_FUNC
|
||||
FT_Long cid_get_offset( FT_Byte** start,
|
||||
FT_Byte offsize )
|
||||
@ -48,7 +48,10 @@
|
||||
|
||||
|
||||
for ( result = 0; offsize > 0; offsize-- )
|
||||
result = ( result << 8 ) | *p++;
|
||||
{
|
||||
result <<= 8;
|
||||
result |= *p++;
|
||||
}
|
||||
|
||||
*start = p;
|
||||
return result;
|
||||
@ -87,10 +90,10 @@
|
||||
CID_Loader* loader,
|
||||
const CID_Field_Rec* keyword )
|
||||
{
|
||||
FT_Error error;
|
||||
CID_Parser* parser = &loader->parser;
|
||||
FT_Byte* object;
|
||||
CID_Info* cid = &face->cid;
|
||||
FT_Error error;
|
||||
CID_Parser* parser = &loader->parser;
|
||||
FT_Byte* object;
|
||||
CID_Info* cid = &face->cid;
|
||||
|
||||
|
||||
/* if the keyword has a dedicated callback, call it */
|
||||
@ -309,7 +312,7 @@
|
||||
len = cur2 - cur;
|
||||
if ( len > 0 && len < 22 )
|
||||
{
|
||||
/* now, compare the immediate name to the keyword table */
|
||||
/* now compare the immediate name to the keyword table */
|
||||
const CID_Field_Rec* keyword = t1_field_records;
|
||||
|
||||
|
||||
@ -408,8 +411,8 @@
|
||||
/* allocate, and read them */
|
||||
data_len = offsets[num_subrs] - offsets[0];
|
||||
|
||||
if ( ALLOC_ARRAY( subr->code, num_subrs+1, FT_Byte* ) ||
|
||||
ALLOC( subr->code[0], data_len ) )
|
||||
if ( ALLOC_ARRAY( subr->code, num_subrs + 1, FT_Byte* ) ||
|
||||
ALLOC( subr->code[0], data_len ) )
|
||||
goto Fail;
|
||||
|
||||
if ( FILE_Seek( cid->data_offset + offsets[0] ) ||
|
||||
@ -463,7 +466,7 @@
|
||||
void t1_init_loader( CID_Loader* loader,
|
||||
CID_Face face )
|
||||
{
|
||||
UNUSED(face);
|
||||
UNUSED( face );
|
||||
|
||||
MEM_Set( loader, 0, sizeof ( *loader ) );
|
||||
}
|
||||
|
@ -177,10 +177,10 @@
|
||||
if ( face->cid.font_info.is_fixed_pitch )
|
||||
root->face_flags |= FT_FACE_FLAG_FIXED_WIDTH;
|
||||
|
||||
/* XXX: TO DO - add kerning with .afm support */
|
||||
/* XXX: TODO: add kerning with .afm support */
|
||||
|
||||
/* get style name - be careful, some broken fonts only */
|
||||
/* have a /FontName dictionary entry! */
|
||||
/* get style name -- be careful, some broken fonts only */
|
||||
/* have a /FontName dictionary entry! */
|
||||
root->family_name = face->cid.font_info.family_name;
|
||||
if ( root->family_name )
|
||||
{
|
||||
@ -259,7 +259,7 @@
|
||||
FT_CharMap charmap = face->charmaprecs;
|
||||
|
||||
|
||||
/* synthesize a Unicode charmap if there is support in the "psnames" */
|
||||
/* synthesize a Unicode charmap if there is support in the `psnames' */
|
||||
/* module */
|
||||
if ( face->psnames )
|
||||
{
|
||||
|
@ -86,20 +86,20 @@
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* HERE BEGINS THE TYPE1 SPECIFIC STUFF */
|
||||
/* HERE BEGINS THE TYPE 1 SPECIFIC STUFF */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
typedef struct CID_SizeRec_
|
||||
typedef struct CID_SizeRec_
|
||||
{
|
||||
FT_SizeRec root;
|
||||
FT_Bool valid;
|
||||
FT_SizeRec root;
|
||||
FT_Bool valid;
|
||||
|
||||
} CID_SizeRec;
|
||||
|
||||
|
||||
typedef struct CID_GlyphSlotRec_
|
||||
typedef struct CID_GlyphSlotRec_
|
||||
{
|
||||
FT_GlyphSlotRec root;
|
||||
|
||||
@ -113,11 +113,11 @@
|
||||
|
||||
|
||||
LOCAL_DEF
|
||||
FT_Error CID_Init_Face( FT_Stream stream,
|
||||
CID_Face face,
|
||||
FT_Int face_index,
|
||||
FT_Int num_params,
|
||||
FT_Parameter* params );
|
||||
FT_Error CID_Init_Face( FT_Stream stream,
|
||||
CID_Face face,
|
||||
FT_Int face_index,
|
||||
FT_Int num_params,
|
||||
FT_Parameter* params );
|
||||
|
||||
LOCAL_DEF
|
||||
void CID_Done_Face( CID_Face face );
|
||||
|
@ -354,7 +354,7 @@
|
||||
}
|
||||
break;
|
||||
|
||||
/* **************** otherwise, it's any token **********/
|
||||
/* **************** otherwise, it is any token **********/
|
||||
default:
|
||||
token->start = cur++;
|
||||
token->type = t1_token_any;
|
||||
@ -504,7 +504,8 @@
|
||||
for (;;)
|
||||
{
|
||||
d = (FT_Byte)( *cur - '0' );
|
||||
if ( d >= 10 ) break;
|
||||
if ( d >= 10 )
|
||||
break;
|
||||
|
||||
if ( divider < 10000000L )
|
||||
{
|
||||
@ -706,7 +707,6 @@
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Loads a simple field (i.e. non-table) into the current */
|
||||
/* list of objects */
|
||||
LOCAL_FUNC
|
||||
@ -761,6 +761,12 @@
|
||||
*(FT_UShort*)q = (FT_UShort)val;
|
||||
break;
|
||||
|
||||
#if SIZEOF_INT == 4
|
||||
case 4:
|
||||
*(FT_Int*)q = (FT_Int)val;
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
*(FT_Long*)q = val;
|
||||
}
|
||||
@ -783,7 +789,7 @@
|
||||
break;
|
||||
|
||||
default:
|
||||
/* an error occured */
|
||||
/* an error occurred */
|
||||
goto Fail;
|
||||
}
|
||||
}
|
||||
@ -958,12 +964,12 @@
|
||||
|
||||
buff_len = 256 + 10;
|
||||
|
||||
/* look for "StartData" */
|
||||
/* look for `StartData' */
|
||||
for ( p = buffer; p < limit; p++ )
|
||||
{
|
||||
if ( p[0] == 'S' && strncmp( (char*)p, "StartData", 9 ) == 0 )
|
||||
{
|
||||
/* save offset of binary data after "StartData" */
|
||||
/* save offset of binary data after `StartData' */
|
||||
offset = FILE_Pos() - ( limit - p ) + 10;
|
||||
goto Found;
|
||||
}
|
||||
@ -971,7 +977,7 @@
|
||||
}
|
||||
|
||||
Found:
|
||||
/* all right, we found the start of the binary data. We will now */
|
||||
/* we have found the start of the binary data. We will now */
|
||||
/* rewind and extract the frame of corresponding to the Postscript */
|
||||
/* section */
|
||||
|
||||
|
@ -1783,11 +1783,12 @@
|
||||
|
||||
metrics->horiBearingX = FT_MulFix( metrics->horiBearingX, x_scale );
|
||||
metrics->horiBearingY = FT_MulFix( metrics->horiBearingY, y_scale );
|
||||
metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale );
|
||||
|
||||
metrics->vertBearingX = FT_MulFix( metrics->vertBearingX, x_scale );
|
||||
metrics->vertBearingY = FT_MulFix( metrics->vertBearingY, y_scale );
|
||||
metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, x_scale );
|
||||
|
||||
metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale );
|
||||
metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1368,10 +1368,10 @@
|
||||
|
||||
/* Then scale the metrics */
|
||||
metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale );
|
||||
metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale );
|
||||
|
||||
metrics->vertBearingX = FT_MulFix( metrics->vertBearingX, x_scale );
|
||||
metrics->vertBearingY = FT_MulFix( metrics->vertBearingY, y_scale );
|
||||
metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, x_scale );
|
||||
}
|
||||
|
||||
/* apply the font matrix */
|
||||
|
Loading…
Reference in New Issue
Block a user