234 |
FT_UNUSED( glyphOffset ); |
FT_UNUSED( glyphOffset ); |
235 |
|
|
236 |
|
|
237 |
push = (FT_UShort)( (flags >> 15) & 1 ); |
push = (FT_UShort)( ( flags >> 15 ) & 1 ); |
238 |
dontAdvance = (FT_UShort)( (flags >> 14) & 1 ); |
dontAdvance = (FT_UShort)( ( flags >> 14 ) & 1 ); |
239 |
valueOffset = (FT_UShort)( flags & 0x3FFF ); |
valueOffset = (FT_UShort)( flags & 0x3FFF ); |
240 |
|
|
241 |
{ |
{ |
242 |
GXV_kern_fmt1_StateOptRecData vt_rec = |
GXV_kern_fmt1_StateOptRecData vt_rec = |
341 |
tag, firstGlyph, nGlyphs )); |
tag, firstGlyph, nGlyphs )); |
342 |
|
|
343 |
gxv_glyphid_validate( firstGlyph, valid ); |
gxv_glyphid_validate( firstGlyph, valid ); |
344 |
gxv_glyphid_validate( (FT_UShort)(firstGlyph + nGlyphs - 1), valid ); |
gxv_glyphid_validate( (FT_UShort)( firstGlyph + nGlyphs - 1 ), valid ); |
345 |
|
|
346 |
gxv_array_getlimits_ushort( p, p + ( 2 * nGlyphs ), |
gxv_array_getlimits_ushort( p, p + ( 2 * nGlyphs ), |
347 |
&( GXV_KERN_FMT2_DATA( offset_min[spec] ) ), |
&( GXV_KERN_FMT2_DATA( offset_min[spec] ) ), |
512 |
FT_Bool kernCrossStream; |
FT_Bool kernCrossStream; |
513 |
FT_Bool kernVariation; |
FT_Bool kernVariation; |
514 |
|
|
515 |
|
FT_UNUSED( valid ); |
516 |
|
|
517 |
|
|
518 |
/* reserved bits = 0 */ |
/* reserved bits = 0 */ |
519 |
if ( coverage & 0x1FFC ) |
if ( coverage & 0x1FFC ) |
520 |
return 0; |
return 0; |
521 |
|
|
522 |
kernVertical = FT_BOOL(( coverage >> 15 ) & 1); |
kernVertical = FT_BOOL( ( coverage >> 15 ) & 1 ); |
523 |
kernCrossStream = FT_BOOL(( coverage >> 14 ) & 1); |
kernCrossStream = FT_BOOL( ( coverage >> 14 ) & 1 ); |
524 |
kernVariation = FT_BOOL(( coverage >> 13 ) & 1); |
kernVariation = FT_BOOL( ( coverage >> 13 ) & 1 ); |
525 |
*format = (FT_UShort)( coverage & 0x0003 ); |
|
526 |
|
*format = (FT_UShort)( coverage & 0x0003 ); |
527 |
|
|
528 |
GXV_TRACE(( "new Apple-dialect: " |
GXV_TRACE(( "new Apple-dialect: " |
529 |
"horizontal=%d, cross-stream=%d, variation=%d, format=%d\n", |
"horizontal=%d, cross-stream=%d, variation=%d, format=%d\n", |
531 |
|
|
532 |
GXV_TRACE(( "kerning values in Apple format subtable are ignored\n" )); |
GXV_TRACE(( "kerning values in Apple format subtable are ignored\n" )); |
533 |
|
|
|
FT_UNUSED( valid ); |
|
|
|
|
534 |
return 1; |
return 1; |
535 |
} |
} |
536 |
|
|
553 |
if ( coverage & 0x02FC ) |
if ( coverage & 0x02FC ) |
554 |
return 0; |
return 0; |
555 |
|
|
556 |
horizontal = FT_BOOL(( coverage >> 15 ) & 1); |
horizontal = FT_BOOL( ( coverage >> 15 ) & 1 ); |
557 |
cross_stream = FT_BOOL(( coverage >> 13 ) & 1); |
cross_stream = FT_BOOL( ( coverage >> 13 ) & 1 ); |
558 |
*format = (FT_UShort)( coverage & 0x0003 ); |
|
559 |
|
*format = (FT_UShort)( coverage & 0x0003 ); |
560 |
|
|
561 |
GXV_TRACE(( "classic Apple-dialect: " |
GXV_TRACE(( "classic Apple-dialect: " |
562 |
"horizontal=%d, cross-stream=%d, format=%d\n", |
"horizontal=%d, cross-stream=%d, format=%d\n", |
585 |
|
|
586 |
FT_UNUSED( valid ); |
FT_UNUSED( valid ); |
587 |
|
|
588 |
|
|
589 |
/* reserved bits = 0 */ |
/* reserved bits = 0 */ |
590 |
if ( coverage & 0xFDF0 ) |
if ( coverage & 0xFDF0 ) |
591 |
return 0; |
return 0; |
592 |
|
|
593 |
horizontal = FT_BOOL( coverage & 1 ); |
horizontal = FT_BOOL( coverage & 1 ); |
594 |
minimum = FT_BOOL(( coverage >> 1 ) & 1); |
minimum = FT_BOOL( ( coverage >> 1 ) & 1 ); |
595 |
cross_stream = FT_BOOL(( coverage >> 2 ) & 1); |
cross_stream = FT_BOOL( ( coverage >> 2 ) & 1 ); |
596 |
override = FT_BOOL(( coverage >> 3 ) & 1); |
override = FT_BOOL( ( coverage >> 3 ) & 1 ); |
597 |
*format = (FT_UShort)(( coverage >> 8 ) & 0x0003); |
|
598 |
|
*format = (FT_UShort)( ( coverage >> 8 ) & 0x0003 ); |
599 |
|
|
600 |
GXV_TRACE(( "classic Microsoft-dialect: " |
GXV_TRACE(( "classic Microsoft-dialect: " |
601 |
"horizontal=%d, minimum=%d, cross-stream=%d, " |
"horizontal=%d, minimum=%d, cross-stream=%d, " |