Added FT_FRAME_SKIP_xxx to skip fields.
More use of READ_Fields() in ttsbit.c Other minor fixes.
This commit is contained in:
parent
1c0d4acb25
commit
61bd4b9dd1
|
@ -83,6 +83,11 @@ typedef struct FT_Frame_Field_
|
|||
#define FT_FRAME_SHORT_LE(s,f) FT_FRAME_FIELD( ft_frame_short_le, s, f )
|
||||
#define FT_FRAME_USHORT_LE(s,f) FT_FRAME_FIELD( ft_frame_ushort_le, s, f )
|
||||
|
||||
#define FT_FRAME_SKIP_LONG { ft_frame_long_be, 0, 0 }
|
||||
#define FT_FRAME_SKIP_SHORT { ft_frame_short_be, 0, 0 }
|
||||
#define FT_FRAME_SKIP_BYTE { ft_frame_byte, 0, 0 }
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* integer extraction macros - the `buffer' parameter must ALWAYS be of */
|
||||
|
|
|
@ -373,7 +373,7 @@
|
|||
else
|
||||
a = 0x7FFFFFFFL;
|
||||
|
||||
return ( s < 0 ) ? -a : a;
|
||||
return ( s < 0 ? -a : a );
|
||||
}
|
||||
|
||||
|
||||
|
@ -648,14 +648,14 @@
|
|||
else
|
||||
q = 0x7FFFFFFFL;
|
||||
|
||||
return ( s < 0 ) ? -(FT_Int32)q : (FT_Int32)q;
|
||||
return ( s < 0 ? -(FT_Int32)q : (FT_Int32)q );
|
||||
}
|
||||
|
||||
r = x->hi;
|
||||
lo = x->lo;
|
||||
|
||||
if ( r >= (FT_Word32)y ) /* we know y is to be treated as unsigned here */
|
||||
return ( s < 0 ) ? 0x80000001UL : 0x7FFFFFFFUL;
|
||||
return ( s < 0 ? 0x80000001UL : 0x7FFFFFFFUL );
|
||||
/* Return Max/Min Int32 if division overflow. */
|
||||
/* This includes division by zero! */
|
||||
q = 0;
|
||||
|
@ -673,7 +673,7 @@
|
|||
lo <<= 1;
|
||||
}
|
||||
|
||||
return ( s < 0 ) ? -(FT_Int32)q : (FT_Int32)q;
|
||||
return ( s < 0 ? -(FT_Int32)q : (FT_Int32)q );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1371,7 +1371,7 @@
|
|||
{
|
||||
/* the arc is y-monotonous, either ascending or descending */
|
||||
/* detect a change of direction */
|
||||
state_bez = y1 < y3 ? Ascending : Descending;
|
||||
state_bez = y1 < y3 ? Ascending : Descending;
|
||||
if ( ras.state != state_bez )
|
||||
{
|
||||
/* finalize current profile if any */
|
||||
|
@ -1498,7 +1498,7 @@
|
|||
}
|
||||
else
|
||||
{
|
||||
state_bez = ( y1 <= y4 ) ? Ascending : Descending;
|
||||
state_bez = y1 <= y4 ? Ascending : Descending;
|
||||
|
||||
/* detect a change of direction */
|
||||
if ( ras.state != state_bez )
|
||||
|
|
|
@ -531,38 +531,35 @@
|
|||
switch ( fields->value )
|
||||
{
|
||||
case ft_frame_start: /* access a new frame */
|
||||
{
|
||||
error = FT_Access_Frame( stream, fields->offset );
|
||||
if ( error )
|
||||
goto Exit;
|
||||
error = FT_Access_Frame( stream, fields->offset );
|
||||
if ( error )
|
||||
goto Exit;
|
||||
|
||||
frame_accessed = 1;
|
||||
fields++;
|
||||
continue; /* loop! */
|
||||
}
|
||||
frame_accessed = 1;
|
||||
fields++;
|
||||
continue; /* loop! */
|
||||
|
||||
case ft_frame_byte:
|
||||
case ft_frame_schar: /* read a single byte */
|
||||
{
|
||||
value = GET_Byte();
|
||||
sign_shift = 24;
|
||||
break;
|
||||
}
|
||||
value = GET_Byte();
|
||||
sign_shift = 24;
|
||||
break;
|
||||
|
||||
case ft_frame_short_be:
|
||||
case ft_frame_ushort_be: /* read a 2-byte big-endian short */
|
||||
{
|
||||
value = GET_UShort();
|
||||
sign_shift = 16;
|
||||
break;
|
||||
}
|
||||
value = GET_UShort();
|
||||
sign_shift = 16;
|
||||
break;
|
||||
|
||||
case ft_frame_short_le:
|
||||
case ft_frame_ushort_le: /* read a 2-byte little-endian short */
|
||||
{
|
||||
char* p;
|
||||
|
||||
|
||||
value = 0;
|
||||
p = stream->cursor;
|
||||
|
||||
if ( p + 1 < stream->limit )
|
||||
{
|
||||
value = ( FT_UShort)p[0] | ((FT_UShort)p[1] << 8 );
|
||||
|
@ -574,11 +571,9 @@
|
|||
|
||||
case ft_frame_long_be:
|
||||
case ft_frame_ulong_be: /* read a 4-byte big-endian long */
|
||||
{
|
||||
value = GET_ULong();
|
||||
sign_shift = 0;
|
||||
break;
|
||||
}
|
||||
value = GET_ULong();
|
||||
sign_shift = 0;
|
||||
break;
|
||||
|
||||
case ft_frame_long_le:
|
||||
case ft_frame_ulong_le: /* read a 4-byte little-endian long */
|
||||
|
@ -588,12 +583,13 @@
|
|||
|
||||
value = 0;
|
||||
p = stream->cursor;
|
||||
|
||||
if ( p + 3 < stream->limit )
|
||||
{
|
||||
value = (FT_ULong)p[0] |
|
||||
( (FT_ULong)p[1] << 8 ) |
|
||||
( (FT_ULong)p[2] << 16 ) |
|
||||
( (FT_ULong)p[3] << 24 );
|
||||
value = (FT_ULong)p[0] |
|
||||
( (FT_ULong)p[1] << 8 ) |
|
||||
( (FT_ULong)p[2] << 16 ) |
|
||||
( (FT_ULong)p[3] << 24 );
|
||||
stream->cursor += 4;
|
||||
}
|
||||
sign_shift = 0;
|
||||
|
@ -602,11 +598,9 @@
|
|||
|
||||
case ft_frame_off3_be:
|
||||
case ft_frame_uoff3_be: /* read a 3-byte big-endian long */
|
||||
{
|
||||
value = GET_UOffset();
|
||||
sign_shift = 8;
|
||||
break;
|
||||
}
|
||||
value = GET_UOffset();
|
||||
sign_shift = 8;
|
||||
break;
|
||||
|
||||
case ft_frame_off3_le:
|
||||
case ft_frame_uoff3_le: /* read a 3-byte little-endian long */
|
||||
|
@ -616,12 +610,13 @@
|
|||
|
||||
value = 0;
|
||||
p = stream->cursor;
|
||||
|
||||
if ( p + 3 < stream->limit )
|
||||
{
|
||||
value = (FT_ULong)p[0] |
|
||||
( (FT_ULong)p[1] << 8 ) |
|
||||
( (FT_ULong)p[2] << 16 ) |
|
||||
( (FT_ULong)p[3] << 24 );
|
||||
value = (FT_ULong)p[0] |
|
||||
( (FT_ULong)p[1] << 8 ) |
|
||||
( (FT_ULong)p[2] << 16 ) |
|
||||
( (FT_ULong)p[3] << 24 );
|
||||
stream->cursor += 4;
|
||||
}
|
||||
sign_shift = 8;
|
||||
|
|
|
@ -130,7 +130,7 @@
|
|||
/* load subheaders */
|
||||
|
||||
cmap2->numGlyphId = l =
|
||||
( ( cmap->length - 2L * ( 256 + 3 ) - num_SH * 8L ) & 0xffff ) / 2;
|
||||
( ( cmap->length - 2L * ( 256 + 3 ) - num_SH * 8L ) & 0xFFFF ) / 2;
|
||||
|
||||
if ( ALLOC_ARRAY( cmap2->subHeaders,
|
||||
num_SH + 1,
|
||||
|
|
|
@ -403,6 +403,28 @@
|
|||
FT_FRAME_END
|
||||
};
|
||||
|
||||
const FT_Frame_Field strike_start_fields[] =
|
||||
{
|
||||
/* no FT_FRAME_START */
|
||||
FT_FRAME_ULONG( TT_SBit_Strike, ranges_offset ),
|
||||
FT_FRAME_SKIP_LONG,
|
||||
FT_FRAME_ULONG( TT_SBit_Strike, num_ranges ),
|
||||
FT_FRAME_ULONG( TT_SBit_Strike, color_ref ),
|
||||
FT_FRAME_END
|
||||
};
|
||||
|
||||
const FT_Frame_Field strike_end_fields[] =
|
||||
{
|
||||
/* no FT_FRAME_START */
|
||||
FT_FRAME_USHORT( TT_SBit_Strike, start_glyph ),
|
||||
FT_FRAME_USHORT( TT_SBit_Strike, end_glyph ),
|
||||
FT_FRAME_BYTE ( TT_SBit_Strike, x_ppem ),
|
||||
FT_FRAME_BYTE ( TT_SBit_Strike, y_ppem ),
|
||||
FT_FRAME_BYTE ( TT_SBit_Strike, bit_depth ),
|
||||
FT_FRAME_CHAR ( TT_SBit_Strike, flags ),
|
||||
FT_FRAME_END
|
||||
};
|
||||
|
||||
|
||||
face->num_sbit_strikes = 0;
|
||||
|
||||
|
@ -450,24 +472,12 @@
|
|||
|
||||
while ( count > 0 )
|
||||
{
|
||||
TT_ULong indexTablesSize;
|
||||
|
||||
|
||||
strike->ranges_offset = GET_ULong();
|
||||
indexTablesSize = GET_ULong(); /* don't save */
|
||||
|
||||
strike->num_ranges = GET_ULong();
|
||||
strike->color_ref = GET_ULong();
|
||||
(void)READ_Fields( strike_start_fields, strike );
|
||||
|
||||
(void)READ_Fields( sbit_line_metrics_fields, &strike->hori );
|
||||
(void)READ_Fields( sbit_line_metrics_fields, &strike->vert );
|
||||
|
||||
strike->start_glyph = GET_UShort();
|
||||
strike->end_glyph = GET_UShort();
|
||||
strike->x_ppem = GET_Byte();
|
||||
strike->y_ppem = GET_Byte();
|
||||
strike->bit_depth = GET_Byte();
|
||||
strike->flags = GET_Char();
|
||||
(void)READ_Fields( strike_end_fields, strike );
|
||||
|
||||
count--;
|
||||
strike++;
|
||||
|
|
Loading…
Reference in New Issue