< prev index next >
src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.c
Print this page
*** 652,678 ****
const FT_Byte Pop_Push_Count[256] =
{
/* opcodes are gathered in groups of 16 */
/* please keep the spaces as they are */
! /* SVTCA y */ PACK( 0, 0 ),
! /* SVTCA x */ PACK( 0, 0 ),
! /* SPvTCA y */ PACK( 0, 0 ),
! /* SPvTCA x */ PACK( 0, 0 ),
! /* SFvTCA y */ PACK( 0, 0 ),
! /* SFvTCA x */ PACK( 0, 0 ),
! /* SPvTL // */ PACK( 2, 0 ),
! /* SPvTL + */ PACK( 2, 0 ),
! /* SFvTL // */ PACK( 2, 0 ),
! /* SFvTL + */ PACK( 2, 0 ),
! /* SPvFS */ PACK( 2, 0 ),
! /* SFvFS */ PACK( 2, 0 ),
! /* GPv */ PACK( 0, 2 ),
! /* GFv */ PACK( 0, 2 ),
! /* SFvTPv */ PACK( 0, 0 ),
/* ISECT */ PACK( 5, 0 ),
/* SRP0 */ PACK( 1, 0 ),
/* SRP1 */ PACK( 1, 0 ),
/* SRP2 */ PACK( 1, 0 ),
/* SZP0 */ PACK( 1, 0 ),
/* SZP1 */ PACK( 1, 0 ),
--- 652,680 ----
const FT_Byte Pop_Push_Count[256] =
{
/* opcodes are gathered in groups of 16 */
/* please keep the spaces as they are */
! /* 0x00 */
! /* SVTCA[0] */ PACK( 0, 0 ),
! /* SVTCA[1] */ PACK( 0, 0 ),
! /* SPVTCA[0] */ PACK( 0, 0 ),
! /* SPVTCA[1] */ PACK( 0, 0 ),
! /* SFVTCA[0] */ PACK( 0, 0 ),
! /* SFVTCA[1] */ PACK( 0, 0 ),
! /* SPVTL[0] */ PACK( 2, 0 ),
! /* SPVTL[1] */ PACK( 2, 0 ),
! /* SFVTL[0] */ PACK( 2, 0 ),
! /* SFVTL[1] */ PACK( 2, 0 ),
! /* SPVFS */ PACK( 2, 0 ),
! /* SFVFS */ PACK( 2, 0 ),
! /* GPV */ PACK( 0, 2 ),
! /* GFV */ PACK( 0, 2 ),
! /* SFVTPV */ PACK( 0, 0 ),
/* ISECT */ PACK( 5, 0 ),
+ /* 0x10 */
/* SRP0 */ PACK( 1, 0 ),
/* SRP1 */ PACK( 1, 0 ),
/* SRP2 */ PACK( 1, 0 ),
/* SZP0 */ PACK( 1, 0 ),
/* SZP1 */ PACK( 1, 0 ),
*** 682,712 ****
/* RTG */ PACK( 0, 0 ),
/* RTHG */ PACK( 0, 0 ),
/* SMD */ PACK( 1, 0 ),
/* ELSE */ PACK( 0, 0 ),
/* JMPR */ PACK( 1, 0 ),
! /* SCvTCi */ PACK( 1, 0 ),
! /* SSwCi */ PACK( 1, 0 ),
/* SSW */ PACK( 1, 0 ),
/* DUP */ PACK( 1, 2 ),
/* POP */ PACK( 1, 0 ),
/* CLEAR */ PACK( 0, 0 ),
/* SWAP */ PACK( 2, 2 ),
/* DEPTH */ PACK( 0, 1 ),
/* CINDEX */ PACK( 1, 1 ),
/* MINDEX */ PACK( 1, 0 ),
! /* AlignPTS */ PACK( 2, 0 ),
/* INS_$28 */ PACK( 0, 0 ),
/* UTP */ PACK( 1, 0 ),
/* LOOPCALL */ PACK( 2, 0 ),
/* CALL */ PACK( 1, 0 ),
/* FDEF */ PACK( 1, 0 ),
/* ENDF */ PACK( 0, 0 ),
/* MDAP[0] */ PACK( 1, 0 ),
/* MDAP[1] */ PACK( 1, 0 ),
/* IUP[0] */ PACK( 0, 0 ),
/* IUP[1] */ PACK( 0, 0 ),
/* SHP[0] */ PACK( 0, 0 ), /* loops */
/* SHP[1] */ PACK( 0, 0 ), /* loops */
/* SHC[0] */ PACK( 1, 0 ),
--- 684,716 ----
/* RTG */ PACK( 0, 0 ),
/* RTHG */ PACK( 0, 0 ),
/* SMD */ PACK( 1, 0 ),
/* ELSE */ PACK( 0, 0 ),
/* JMPR */ PACK( 1, 0 ),
! /* SCVTCI */ PACK( 1, 0 ),
! /* SSWCI */ PACK( 1, 0 ),
/* SSW */ PACK( 1, 0 ),
+ /* 0x20 */
/* DUP */ PACK( 1, 2 ),
/* POP */ PACK( 1, 0 ),
/* CLEAR */ PACK( 0, 0 ),
/* SWAP */ PACK( 2, 2 ),
/* DEPTH */ PACK( 0, 1 ),
/* CINDEX */ PACK( 1, 1 ),
/* MINDEX */ PACK( 1, 0 ),
! /* ALIGNPTS */ PACK( 2, 0 ),
/* INS_$28 */ PACK( 0, 0 ),
/* UTP */ PACK( 1, 0 ),
/* LOOPCALL */ PACK( 2, 0 ),
/* CALL */ PACK( 1, 0 ),
/* FDEF */ PACK( 1, 0 ),
/* ENDF */ PACK( 0, 0 ),
/* MDAP[0] */ PACK( 1, 0 ),
/* MDAP[1] */ PACK( 1, 0 ),
+ /* 0x30 */
/* IUP[0] */ PACK( 0, 0 ),
/* IUP[1] */ PACK( 0, 0 ),
/* SHP[0] */ PACK( 0, 0 ), /* loops */
/* SHP[1] */ PACK( 0, 0 ), /* loops */
/* SHC[0] */ PACK( 1, 0 ),
*** 715,746 ****
/* SHZ[1] */ PACK( 1, 0 ),
/* SHPIX */ PACK( 1, 0 ), /* loops */
/* IP */ PACK( 0, 0 ), /* loops */
/* MSIRP[0] */ PACK( 2, 0 ),
/* MSIRP[1] */ PACK( 2, 0 ),
! /* AlignRP */ PACK( 0, 0 ), /* loops */
/* RTDG */ PACK( 0, 0 ),
/* MIAP[0] */ PACK( 2, 0 ),
/* MIAP[1] */ PACK( 2, 0 ),
! /* NPushB */ PACK( 0, 0 ),
! /* NPushW */ PACK( 0, 0 ),
/* WS */ PACK( 2, 0 ),
/* RS */ PACK( 1, 1 ),
! /* WCvtP */ PACK( 2, 0 ),
! /* RCvt */ PACK( 1, 1 ),
/* GC[0] */ PACK( 1, 1 ),
/* GC[1] */ PACK( 1, 1 ),
/* SCFS */ PACK( 2, 0 ),
/* MD[0] */ PACK( 2, 1 ),
/* MD[1] */ PACK( 2, 1 ),
/* MPPEM */ PACK( 0, 1 ),
/* MPS */ PACK( 0, 1 ),
! /* FlipON */ PACK( 0, 0 ),
! /* FlipOFF */ PACK( 0, 0 ),
/* DEBUG */ PACK( 1, 0 ),
/* LT */ PACK( 2, 1 ),
/* LTEQ */ PACK( 2, 1 ),
/* GT */ PACK( 2, 1 ),
/* GTEQ */ PACK( 2, 1 ),
/* EQ */ PACK( 2, 1 ),
--- 719,752 ----
/* SHZ[1] */ PACK( 1, 0 ),
/* SHPIX */ PACK( 1, 0 ), /* loops */
/* IP */ PACK( 0, 0 ), /* loops */
/* MSIRP[0] */ PACK( 2, 0 ),
/* MSIRP[1] */ PACK( 2, 0 ),
! /* ALIGNRP */ PACK( 0, 0 ), /* loops */
/* RTDG */ PACK( 0, 0 ),
/* MIAP[0] */ PACK( 2, 0 ),
/* MIAP[1] */ PACK( 2, 0 ),
! /* 0x40 */
! /* NPUSHB */ PACK( 0, 0 ),
! /* NPUSHW */ PACK( 0, 0 ),
/* WS */ PACK( 2, 0 ),
/* RS */ PACK( 1, 1 ),
! /* WCVTP */ PACK( 2, 0 ),
! /* RCVT */ PACK( 1, 1 ),
/* GC[0] */ PACK( 1, 1 ),
/* GC[1] */ PACK( 1, 1 ),
/* SCFS */ PACK( 2, 0 ),
/* MD[0] */ PACK( 2, 1 ),
/* MD[1] */ PACK( 2, 1 ),
/* MPPEM */ PACK( 0, 1 ),
/* MPS */ PACK( 0, 1 ),
! /* FLIPON */ PACK( 0, 0 ),
! /* FLIPOFF */ PACK( 0, 0 ),
/* DEBUG */ PACK( 1, 0 ),
+ /* 0x50 */
/* LT */ PACK( 2, 1 ),
/* LTEQ */ PACK( 2, 1 ),
/* GT */ PACK( 2, 1 ),
/* GTEQ */ PACK( 2, 1 ),
/* EQ */ PACK( 2, 1 ),
*** 750,763 ****
/* IF */ PACK( 1, 0 ),
/* EIF */ PACK( 0, 0 ),
/* AND */ PACK( 2, 1 ),
/* OR */ PACK( 2, 1 ),
/* NOT */ PACK( 1, 1 ),
! /* DeltaP1 */ PACK( 1, 0 ),
/* SDB */ PACK( 1, 0 ),
/* SDS */ PACK( 1, 0 ),
/* ADD */ PACK( 2, 1 ),
/* SUB */ PACK( 2, 1 ),
/* DIV */ PACK( 2, 1 ),
/* MUL */ PACK( 2, 1 ),
/* ABS */ PACK( 1, 1 ),
--- 756,770 ----
/* IF */ PACK( 1, 0 ),
/* EIF */ PACK( 0, 0 ),
/* AND */ PACK( 2, 1 ),
/* OR */ PACK( 2, 1 ),
/* NOT */ PACK( 1, 1 ),
! /* DELTAP1 */ PACK( 1, 0 ),
/* SDB */ PACK( 1, 0 ),
/* SDS */ PACK( 1, 0 ),
+ /* 0x60 */
/* ADD */ PACK( 2, 1 ),
/* SUB */ PACK( 2, 1 ),
/* DIV */ PACK( 2, 1 ),
/* MUL */ PACK( 2, 1 ),
/* ABS */ PACK( 1, 1 ),
*** 771,814 ****
/* NROUND[0] */ PACK( 1, 1 ),
/* NROUND[1] */ PACK( 1, 1 ),
/* NROUND[2] */ PACK( 1, 1 ),
/* NROUND[3] */ PACK( 1, 1 ),
! /* WCvtF */ PACK( 2, 0 ),
! /* DeltaP2 */ PACK( 1, 0 ),
! /* DeltaP3 */ PACK( 1, 0 ),
! /* DeltaCn[0] */ PACK( 1, 0 ),
! /* DeltaCn[1] */ PACK( 1, 0 ),
! /* DeltaCn[2] */ PACK( 1, 0 ),
/* SROUND */ PACK( 1, 0 ),
! /* S45Round */ PACK( 1, 0 ),
/* JROT */ PACK( 2, 0 ),
/* JROF */ PACK( 2, 0 ),
/* ROFF */ PACK( 0, 0 ),
/* INS_$7B */ PACK( 0, 0 ),
/* RUTG */ PACK( 0, 0 ),
/* RDTG */ PACK( 0, 0 ),
/* SANGW */ PACK( 1, 0 ),
/* AA */ PACK( 1, 0 ),
! /* FlipPT */ PACK( 0, 0 ), /* loops */
! /* FlipRgON */ PACK( 2, 0 ),
! /* FlipRgOFF */ PACK( 2, 0 ),
/* INS_$83 */ PACK( 0, 0 ),
/* INS_$84 */ PACK( 0, 0 ),
! /* ScanCTRL */ PACK( 1, 0 ),
! /* SDPvTL[0] */ PACK( 2, 0 ),
! /* SDPvTL[1] */ PACK( 2, 0 ),
! /* GetINFO */ PACK( 1, 1 ),
/* IDEF */ PACK( 1, 0 ),
/* ROLL */ PACK( 3, 3 ),
/* MAX */ PACK( 2, 1 ),
/* MIN */ PACK( 2, 1 ),
! /* ScanTYPE */ PACK( 1, 0 ),
! /* InstCTRL */ PACK( 2, 0 ),
/* INS_$8F */ PACK( 0, 0 ),
/* INS_$90 */ PACK( 0, 0 ),
/* GETVAR */ PACK( 0, 0 ), /* will be handled specially */
/* GETDATA */ PACK( 0, 1 ),
/* INS_$93 */ PACK( 0, 0 ),
/* INS_$94 */ PACK( 0, 0 ),
--- 778,824 ----
/* NROUND[0] */ PACK( 1, 1 ),
/* NROUND[1] */ PACK( 1, 1 ),
/* NROUND[2] */ PACK( 1, 1 ),
/* NROUND[3] */ PACK( 1, 1 ),
! /* 0x70 */
! /* WCVTF */ PACK( 2, 0 ),
! /* DELTAP2 */ PACK( 1, 0 ),
! /* DELTAP3 */ PACK( 1, 0 ),
! /* DELTAC1 */ PACK( 1, 0 ),
! /* DELTAC2 */ PACK( 1, 0 ),
! /* DELTAC3 */ PACK( 1, 0 ),
/* SROUND */ PACK( 1, 0 ),
! /* S45ROUND */ PACK( 1, 0 ),
/* JROT */ PACK( 2, 0 ),
/* JROF */ PACK( 2, 0 ),
/* ROFF */ PACK( 0, 0 ),
/* INS_$7B */ PACK( 0, 0 ),
/* RUTG */ PACK( 0, 0 ),
/* RDTG */ PACK( 0, 0 ),
/* SANGW */ PACK( 1, 0 ),
/* AA */ PACK( 1, 0 ),
! /* 0x80 */
! /* FLIPPT */ PACK( 0, 0 ), /* loops */
! /* FLIPRGON */ PACK( 2, 0 ),
! /* FLIPRGOFF */ PACK( 2, 0 ),
/* INS_$83 */ PACK( 0, 0 ),
/* INS_$84 */ PACK( 0, 0 ),
! /* SCANCTRL */ PACK( 1, 0 ),
! /* SDPVTL[0] */ PACK( 2, 0 ),
! /* SDPVTL[1] */ PACK( 2, 0 ),
! /* GETINFO */ PACK( 1, 1 ),
/* IDEF */ PACK( 1, 0 ),
/* ROLL */ PACK( 3, 3 ),
/* MAX */ PACK( 2, 1 ),
/* MIN */ PACK( 2, 1 ),
! /* SCANTYPE */ PACK( 1, 0 ),
! /* INSTCTRL */ PACK( 2, 0 ),
/* INS_$8F */ PACK( 0, 0 ),
+ /* 0x90 */
/* INS_$90 */ PACK( 0, 0 ),
/* GETVAR */ PACK( 0, 0 ), /* will be handled specially */
/* GETDATA */ PACK( 0, 1 ),
/* INS_$93 */ PACK( 0, 0 ),
/* INS_$94 */ PACK( 0, 0 ),
*** 822,831 ****
--- 832,842 ----
/* INS_$9C */ PACK( 0, 0 ),
/* INS_$9D */ PACK( 0, 0 ),
/* INS_$9E */ PACK( 0, 0 ),
/* INS_$9F */ PACK( 0, 0 ),
+ /* 0xA0 */
/* INS_$A0 */ PACK( 0, 0 ),
/* INS_$A1 */ PACK( 0, 0 ),
/* INS_$A2 */ PACK( 0, 0 ),
/* INS_$A3 */ PACK( 0, 0 ),
/* INS_$A4 */ PACK( 0, 0 ),
*** 839,865 ****
/* INS_$AC */ PACK( 0, 0 ),
/* INS_$AD */ PACK( 0, 0 ),
/* INS_$AE */ PACK( 0, 0 ),
/* INS_$AF */ PACK( 0, 0 ),
! /* PushB[0] */ PACK( 0, 1 ),
! /* PushB[1] */ PACK( 0, 2 ),
! /* PushB[2] */ PACK( 0, 3 ),
! /* PushB[3] */ PACK( 0, 4 ),
! /* PushB[4] */ PACK( 0, 5 ),
! /* PushB[5] */ PACK( 0, 6 ),
! /* PushB[6] */ PACK( 0, 7 ),
! /* PushB[7] */ PACK( 0, 8 ),
! /* PushW[0] */ PACK( 0, 1 ),
! /* PushW[1] */ PACK( 0, 2 ),
! /* PushW[2] */ PACK( 0, 3 ),
! /* PushW[3] */ PACK( 0, 4 ),
! /* PushW[4] */ PACK( 0, 5 ),
! /* PushW[5] */ PACK( 0, 6 ),
! /* PushW[6] */ PACK( 0, 7 ),
! /* PushW[7] */ PACK( 0, 8 ),
/* MDRP[00] */ PACK( 1, 0 ),
/* MDRP[01] */ PACK( 1, 0 ),
/* MDRP[02] */ PACK( 1, 0 ),
/* MDRP[03] */ PACK( 1, 0 ),
/* MDRP[04] */ PACK( 1, 0 ),
--- 850,878 ----
/* INS_$AC */ PACK( 0, 0 ),
/* INS_$AD */ PACK( 0, 0 ),
/* INS_$AE */ PACK( 0, 0 ),
/* INS_$AF */ PACK( 0, 0 ),
! /* 0xB0 */
! /* PUSHB[0] */ PACK( 0, 1 ),
! /* PUSHB[1] */ PACK( 0, 2 ),
! /* PUSHB[2] */ PACK( 0, 3 ),
! /* PUSHB[3] */ PACK( 0, 4 ),
! /* PUSHB[4] */ PACK( 0, 5 ),
! /* PUSHB[5] */ PACK( 0, 6 ),
! /* PUSHB[6] */ PACK( 0, 7 ),
! /* PUSHB[7] */ PACK( 0, 8 ),
! /* PUSHW[0] */ PACK( 0, 1 ),
! /* PUSHW[1] */ PACK( 0, 2 ),
! /* PUSHW[2] */ PACK( 0, 3 ),
! /* PUSHW[3] */ PACK( 0, 4 ),
! /* PUSHW[4] */ PACK( 0, 5 ),
! /* PUSHW[5] */ PACK( 0, 6 ),
! /* PUSHW[6] */ PACK( 0, 7 ),
! /* PUSHW[7] */ PACK( 0, 8 ),
+ /* 0xC0 */
/* MDRP[00] */ PACK( 1, 0 ),
/* MDRP[01] */ PACK( 1, 0 ),
/* MDRP[02] */ PACK( 1, 0 ),
/* MDRP[03] */ PACK( 1, 0 ),
/* MDRP[04] */ PACK( 1, 0 ),
*** 873,882 ****
--- 886,896 ----
/* MDRP[12] */ PACK( 1, 0 ),
/* MDRP[13] */ PACK( 1, 0 ),
/* MDRP[14] */ PACK( 1, 0 ),
/* MDRP[15] */ PACK( 1, 0 ),
+ /* 0xD0 */
/* MDRP[16] */ PACK( 1, 0 ),
/* MDRP[17] */ PACK( 1, 0 ),
/* MDRP[18] */ PACK( 1, 0 ),
/* MDRP[19] */ PACK( 1, 0 ),
/* MDRP[20] */ PACK( 1, 0 ),
*** 890,899 ****
--- 904,914 ----
/* MDRP[28] */ PACK( 1, 0 ),
/* MDRP[29] */ PACK( 1, 0 ),
/* MDRP[30] */ PACK( 1, 0 ),
/* MDRP[31] */ PACK( 1, 0 ),
+ /* 0xE0 */
/* MIRP[00] */ PACK( 2, 0 ),
/* MIRP[01] */ PACK( 2, 0 ),
/* MIRP[02] */ PACK( 2, 0 ),
/* MIRP[03] */ PACK( 2, 0 ),
/* MIRP[04] */ PACK( 2, 0 ),
*** 907,916 ****
--- 922,932 ----
/* MIRP[12] */ PACK( 2, 0 ),
/* MIRP[13] */ PACK( 2, 0 ),
/* MIRP[14] */ PACK( 2, 0 ),
/* MIRP[15] */ PACK( 2, 0 ),
+ /* 0xF0 */
/* MIRP[16] */ PACK( 2, 0 ),
/* MIRP[17] */ PACK( 2, 0 ),
/* MIRP[18] */ PACK( 2, 0 ),
/* MIRP[19] */ PACK( 2, 0 ),
/* MIRP[20] */ PACK( 2, 0 ),
*** 935,961 ****
/* code */
static
const char* const opcode_name[256] =
{
! "7 SVTCA y",
! "7 SVTCA x",
! "8 SPvTCA y",
! "8 SPvTCA x",
! "8 SFvTCA y",
! "8 SFvTCA x",
! "8 SPvTL ||",
! "7 SPvTL +",
! "8 SFvTL ||",
! "7 SFvTL +",
! "5 SPvFS",
! "5 SFvFS",
! "3 GPv",
! "3 GFv",
! "6 SFvTPv",
"5 ISECT",
"4 SRP0",
"4 SRP1",
"4 SRP2",
"4 SZP0",
"4 SZP1",
--- 951,979 ----
/* code */
static
const char* const opcode_name[256] =
{
! /* 0x00 */
! "8 SVTCA[y]",
! "8 SVTCA[x]",
! "9 SPVTCA[y]",
! "9 SPVTCA[x]",
! "9 SFVTCA[y]",
! "9 SFVTCA[x]",
! "9 SPVTL[||]",
! "8 SPVTL[+]",
! "9 SFVTL[||]",
! "8 SFVTL[+]",
! "5 SPVFS",
! "5 SFVFS",
! "3 GPV",
! "3 GFV",
! "6 SFVTPV",
"5 ISECT",
+ /* 0x10 */
"4 SRP0",
"4 SRP1",
"4 SRP2",
"4 SZP0",
"4 SZP1",
*** 965,1029 ****
"3 RTG",
"4 RTHG",
"3 SMD",
"4 ELSE",
"4 JMPR",
! "6 SCvTCi",
! "5 SSwCi",
"3 SSW",
"3 DUP",
"3 POP",
"5 CLEAR",
"4 SWAP",
"5 DEPTH",
"6 CINDEX",
"6 MINDEX",
! "8 AlignPTS",
"7 INS_$28",
"3 UTP",
"8 LOOPCALL",
"4 CALL",
"4 FDEF",
"4 ENDF",
! "7 MDAP[0]",
! "7 MDAP[1]",
! "6 IUP[0]",
! "6 IUP[1]",
! "6 SHP[0]",
! "6 SHP[1]",
! "6 SHC[0]",
! "6 SHC[1]",
! "6 SHZ[0]",
! "6 SHZ[1]",
"5 SHPIX",
"2 IP",
! "8 MSIRP[0]",
! "8 MSIRP[1]",
! "7 AlignRP",
"4 RTDG",
! "7 MIAP[0]",
! "7 MIAP[1]",
! "6 NPushB",
! "6 NPushW",
"2 WS",
"2 RS",
! "5 WCvtP",
! "4 RCvt",
! "5 GC[0]",
! "5 GC[1]",
"4 SCFS",
! "5 MD[0]",
! "5 MD[1]",
"5 MPPEM",
"3 MPS",
! "6 FlipON",
! "7 FlipOFF",
"5 DEBUG",
"2 LT",
"4 LTEQ",
"2 GT",
"4 GTEQ",
"2 EQ",
--- 983,1051 ----
"3 RTG",
"4 RTHG",
"3 SMD",
"4 ELSE",
"4 JMPR",
! "6 SCVTCI",
! "5 SSWCI",
"3 SSW",
+ /* 0x20 */
"3 DUP",
"3 POP",
"5 CLEAR",
"4 SWAP",
"5 DEPTH",
"6 CINDEX",
"6 MINDEX",
! "8 ALIGNPTS",
"7 INS_$28",
"3 UTP",
"8 LOOPCALL",
"4 CALL",
"4 FDEF",
"4 ENDF",
! "6 MDAP[]",
! "9 MDAP[rnd]",
! /* 0x30 */
! "6 IUP[y]",
! "6 IUP[x]",
! "8 SHP[rp2]",
! "8 SHP[rp1]",
! "8 SHC[rp2]",
! "8 SHC[rp1]",
! "8 SHZ[rp2]",
! "8 SHZ[rp1]",
"5 SHPIX",
"2 IP",
! "7 MSIRP[]",
! "A MSIRP[rp0]",
! "7 ALIGNRP",
"4 RTDG",
! "6 MIAP[]",
! "9 MIAP[rnd]",
! /* 0x40 */
! "6 NPUSHB",
! "6 NPUSHW",
"2 WS",
"2 RS",
! "5 WCVTP",
! "4 RCVT",
! "8 GC[curr]",
! "8 GC[orig]",
"4 SCFS",
! "8 MD[curr]",
! "8 MD[orig]",
"5 MPPEM",
"3 MPS",
! "6 FLIPON",
! "7 FLIPOFF",
"5 DEBUG",
+ /* 0x50 */
"2 LT",
"4 LTEQ",
"2 GT",
"4 GTEQ",
"2 EQ",
*** 1033,1100 ****
"2 IF",
"3 EIF",
"3 AND",
"2 OR",
"3 NOT",
! "7 DeltaP1",
"3 SDB",
"3 SDS",
"3 ADD",
"3 SUB",
"3 DIV",
"3 MUL",
"3 ABS",
"3 NEG",
"5 FLOOR",
"7 CEILING",
! "8 ROUND[0]",
! "8 ROUND[1]",
! "8 ROUND[2]",
! "8 ROUND[3]",
! "9 NROUND[0]",
! "9 NROUND[1]",
! "9 NROUND[2]",
! "9 NROUND[3]",
!
! "5 WCvtF",
! "7 DeltaP2",
! "7 DeltaP3",
! "A DeltaCn[0]",
! "A DeltaCn[1]",
! "A DeltaCn[2]",
"6 SROUND",
! "8 S45Round",
"4 JROT",
"4 JROF",
"4 ROFF",
"7 INS_$7B",
"4 RUTG",
"4 RDTG",
"5 SANGW",
"2 AA",
! "6 FlipPT",
! "8 FlipRgON",
! "9 FlipRgOFF",
"7 INS_$83",
"7 INS_$84",
! "8 ScanCTRL",
! "9 SDPvTL[0]",
! "9 SDPvTL[1]",
! "7 GetINFO",
"4 IDEF",
"4 ROLL",
"3 MAX",
"3 MIN",
! "8 ScanTYPE",
! "8 InstCTRL",
"7 INS_$8F",
"7 INS_$90",
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
! "6 GETVAR",
"7 GETDATA",
#else
"7 INS_$91",
"7 INS_$92",
#endif
--- 1055,1126 ----
"2 IF",
"3 EIF",
"3 AND",
"2 OR",
"3 NOT",
! "7 DELTAP1",
"3 SDB",
"3 SDS",
+ /* 0x60 */
"3 ADD",
"3 SUB",
"3 DIV",
"3 MUL",
"3 ABS",
"3 NEG",
"5 FLOOR",
"7 CEILING",
! "8 ROUND[G]",
! "8 ROUND[B]",
! "8 ROUND[W]",
! "7 ROUND[]",
! "9 NROUND[G]",
! "9 NROUND[B]",
! "9 NROUND[W]",
! "8 NROUND[]",
!
! /* 0x70 */
! "5 WCVTF",
! "7 DELTAP2",
! "7 DELTAP3",
! "7 DELTAC1",
! "7 DELTAC2",
! "7 DELTAC3",
"6 SROUND",
! "8 S45ROUND",
"4 JROT",
"4 JROF",
"4 ROFF",
"7 INS_$7B",
"4 RUTG",
"4 RDTG",
"5 SANGW",
"2 AA",
! /* 0x80 */
! "6 FLIPPT",
! "8 FLIPRGON",
! "9 FLIPRGOFF",
"7 INS_$83",
"7 INS_$84",
! "8 SCANCTRL",
! "A SDPVTL[||]",
! "9 SDPVTL[+]",
! "7 GETINFO",
"4 IDEF",
"4 ROLL",
"3 MAX",
"3 MIN",
! "8 SCANTYPE",
! "8 INSTCTRL",
"7 INS_$8F",
+ /* 0x90 */
"7 INS_$90",
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
! "C GETVARIATION",
"7 GETDATA",
#else
"7 INS_$91",
"7 INS_$92",
#endif
*** 1110,1119 ****
--- 1136,1146 ----
"7 INS_$9C",
"7 INS_$9D",
"7 INS_$9E",
"7 INS_$9F",
+ /* 0xA0 */
"7 INS_$A0",
"7 INS_$A1",
"7 INS_$A2",
"7 INS_$A3",
"7 INS_$A4",
*** 1127,1220 ****
"7 INS_$AC",
"7 INS_$AD",
"7 INS_$AE",
"7 INS_$AF",
! "8 PushB[0]",
! "8 PushB[1]",
! "8 PushB[2]",
! "8 PushB[3]",
! "8 PushB[4]",
! "8 PushB[5]",
! "8 PushB[6]",
! "8 PushB[7]",
! "8 PushW[0]",
! "8 PushW[1]",
! "8 PushW[2]",
! "8 PushW[3]",
! "8 PushW[4]",
! "8 PushW[5]",
! "8 PushW[6]",
! "8 PushW[7]",
"7 MDRP[G]",
"7 MDRP[B]",
"7 MDRP[W]",
! "7 MDRP[?]",
"8 MDRP[rG]",
"8 MDRP[rB]",
"8 MDRP[rW]",
! "8 MDRP[r?]",
"8 MDRP[mG]",
"8 MDRP[mB]",
"8 MDRP[mW]",
! "8 MDRP[m?]",
"9 MDRP[mrG]",
"9 MDRP[mrB]",
"9 MDRP[mrW]",
! "9 MDRP[mr?]",
"8 MDRP[pG]",
"8 MDRP[pB]",
"8 MDRP[pW]",
! "8 MDRP[p?]",
"9 MDRP[prG]",
"9 MDRP[prB]",
"9 MDRP[prW]",
! "9 MDRP[pr?]",
"9 MDRP[pmG]",
"9 MDRP[pmB]",
"9 MDRP[pmW]",
! "9 MDRP[pm?]",
"A MDRP[pmrG]",
"A MDRP[pmrB]",
"A MDRP[pmrW]",
! "A MDRP[pmr?]",
"7 MIRP[G]",
"7 MIRP[B]",
"7 MIRP[W]",
! "7 MIRP[?]",
"8 MIRP[rG]",
"8 MIRP[rB]",
"8 MIRP[rW]",
! "8 MIRP[r?]",
"8 MIRP[mG]",
"8 MIRP[mB]",
"8 MIRP[mW]",
! "8 MIRP[m?]",
"9 MIRP[mrG]",
"9 MIRP[mrB]",
"9 MIRP[mrW]",
! "9 MIRP[mr?]",
"8 MIRP[pG]",
"8 MIRP[pB]",
"8 MIRP[pW]",
! "8 MIRP[p?]",
"9 MIRP[prG]",
"9 MIRP[prB]",
"9 MIRP[prW]",
! "9 MIRP[pr?]",
"9 MIRP[pmG]",
"9 MIRP[pmB]",
"9 MIRP[pmW]",
! "9 MIRP[pm?]",
"A MIRP[pmrG]",
"A MIRP[pmrB]",
"A MIRP[pmrW]",
! "A MIRP[pmr?]"
};
#endif /* FT_DEBUG_LEVEL_TRACE */
--- 1154,1252 ----
"7 INS_$AC",
"7 INS_$AD",
"7 INS_$AE",
"7 INS_$AF",
! /* 0xB0 */
! "8 PUSHB[0]",
! "8 PUSHB[1]",
! "8 PUSHB[2]",
! "8 PUSHB[3]",
! "8 PUSHB[4]",
! "8 PUSHB[5]",
! "8 PUSHB[6]",
! "8 PUSHB[7]",
! "8 PUSHW[0]",
! "8 PUSHW[1]",
! "8 PUSHW[2]",
! "8 PUSHW[3]",
! "8 PUSHW[4]",
! "8 PUSHW[5]",
! "8 PUSHW[6]",
! "8 PUSHW[7]",
+ /* 0xC0 */
"7 MDRP[G]",
"7 MDRP[B]",
"7 MDRP[W]",
! "6 MDRP[]",
"8 MDRP[rG]",
"8 MDRP[rB]",
"8 MDRP[rW]",
! "7 MDRP[r]",
"8 MDRP[mG]",
"8 MDRP[mB]",
"8 MDRP[mW]",
! "7 MDRP[m]",
"9 MDRP[mrG]",
"9 MDRP[mrB]",
"9 MDRP[mrW]",
! "8 MDRP[mr]",
+ /* 0xD0 */
"8 MDRP[pG]",
"8 MDRP[pB]",
"8 MDRP[pW]",
! "7 MDRP[p]",
"9 MDRP[prG]",
"9 MDRP[prB]",
"9 MDRP[prW]",
! "8 MDRP[pr]",
"9 MDRP[pmG]",
"9 MDRP[pmB]",
"9 MDRP[pmW]",
! "8 MDRP[pm]",
"A MDRP[pmrG]",
"A MDRP[pmrB]",
"A MDRP[pmrW]",
! "9 MDRP[pmr]",
+ /* 0xE0 */
"7 MIRP[G]",
"7 MIRP[B]",
"7 MIRP[W]",
! "6 MIRP[]",
"8 MIRP[rG]",
"8 MIRP[rB]",
"8 MIRP[rW]",
! "7 MIRP[r]",
"8 MIRP[mG]",
"8 MIRP[mB]",
"8 MIRP[mW]",
! "7 MIRP[m]",
"9 MIRP[mrG]",
"9 MIRP[mrB]",
"9 MIRP[mrW]",
! "8 MIRP[mr]",
+ /* 0xF0 */
"8 MIRP[pG]",
"8 MIRP[pB]",
"8 MIRP[pW]",
! "7 MIRP[p]",
"9 MIRP[prG]",
"9 MIRP[prB]",
"9 MIRP[prW]",
! "8 MIRP[pr]",
"9 MIRP[pmG]",
"9 MIRP[pmB]",
"9 MIRP[pmW]",
! "8 MIRP[pm]",
"A MIRP[pmrG]",
"A MIRP[pmrB]",
"A MIRP[pmrW]",
! "9 MIRP[pmr]"
};
#endif /* FT_DEBUG_LEVEL_TRACE */
*** 1660,1669 ****
--- 1692,1727 ----
return SUCCESS;
}
+ /*
+ *
+ * Apple's TrueType specification at
+ *
+ * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM02/Chap2.html#order
+ *
+ * gives the following order of operations in instructions that move
+ * points.
+ *
+ * - check single width cut-in (MIRP, MDRP)
+ *
+ * - check control value cut-in (MIRP, MIAP)
+ *
+ * - apply engine compensation (MIRP, MDRP)
+ *
+ * - round distance (MIRP, MDRP) or value (MIAP, MDAP)
+ *
+ * - check minimum distance (MIRP,MDRP)
+ *
+ * - move point (MIRP, MDRP, MIAP, MSIRP, MDAP)
+ *
+ * For rounding instructions, engine compensation happens before rounding.
+ *
+ */
+
+
/**************************************************************************
*
* @Function:
* Direct_Move
*
*** 1884,1894 ****
FT_UNUSED( exc );
zone->org[point].y = ADD_LONG( zone->org[point].y, distance );
}
-
/**************************************************************************
*
* @Function:
* Round_None
*
--- 1942,1951 ----
*** 1902,1917 ****
* compensation ::
* The engine compensation.
*
* @Return:
* The compensated distance.
- *
- * @Note:
- * The TrueType specification says very few about the relationship
- * between rounding and engine compensation. However, it seems from
- * the description of super round that we should add the compensation
- * before rounding.
*/
static FT_F26Dot6
Round_None( TT_ExecContext exc,
FT_F26Dot6 distance,
FT_F26Dot6 compensation )
--- 1959,1968 ----
< prev index next >