にせねこメモ

はてなダイアリーがUTF-8じゃないので移ってきました。

逆引きTrueType instruction set

TrueType instruction setについて、バイナリからmnemonicが引けるようなものが見つからなかったので作った。

Code range Mnemonic Description
0x00 - 0x01 SVTCA[a] Set freedom and projection Vectors To Coordinate Axis
0x02 - 0x03 SPVTCA[a] Set Projection_Vector To Coordinate Axis
0x04 - 0x05 SFVTCA[a] Set Freedom_Vector to Coordinate Axis
0x06 - 0x07 SPVTL[a] Set Projection_Vector To Line
0x08 - 0x09 SFVTL[a] Set Freedom_Vector To Line
0x0A SPVFS[ ] Set Projection_Vector From Stack
0x0B SFVFS[ ] Set Freedom_Vector From Stack
0x0C GPV[ ] Get Projection_Vector
0x0D GFV[ ] Get Freedom_Vector
0x0E SFVTPV[ ] Set Freedom_Vector To Projection Vector
0x0F ISECT[] moves point p to the InterSECTion of two lines
0x10 SRP0[ ] Set Reference Point 0
0x11 SRP1[ ] Set Reference Point 1
0x12 SRP2[ ] Set Reference Point 2
0x13 SZP0[ ] Set Zone Pointer 0
0x14 SZP1[ ] Set Zone Pointer 1
0x15 SZP2[ ] Set Zone Pointer 2
0x16 SZPS[ ] Set Zone PointerS
0x17 SLOOP[ ] Set LOOP variable
0x18 RTG[ ] Round To Grid
0x19 RTHG[ ] Round To Half Grid
0x1A SMD[ ] Set Minimum_ Distance
0x1B ELSE[] ELSE clause
0x1C JMPR[] JuMP Relative
0x1D SCVTCI[ ] Set Control Value Table Cut In
0x1E SSWCI[ ] Set Single_Width_Cut_In
0x1F SSW[ ] Set Single-width
0x20 DUP[] DUPlicate top stack element
0x21 POP[] POP top stack element
0x22 CLEAR[] CLEAR the stack
0x23 SWAP[] SWAP the top two elements on the stack
0x24 DEPTH[] DEPTH of the stack
0x25 CINDEX[] Copy the INDEXed element to the top of the stack
0x26 MINDEX[] Move the INDEXed element to the top of the stack
0x27 ALIGNPTS[] ALIGN Points
0x28
0x29 UTP[] UnTouch Point
0x2A LOOPCALL[] LOOP and CALL function
0x2B CALL[] CALL function
0x2C FDEF[] Function DEFinition
0x2D ENDF[] END Function definition
0x2E - 0x2F MDAP[a] Move Direct Absolute Point
0x30 - 0x31 IUP[a] Interpolate Untouched Points through the outline
0x32 - 0x33 SHP[a] SHift Point using reference point
0x34 - 0x35 SHC[a] SHift Contour using reference point
0x36 - 0x37 SHZ[a] SHift Zone using reference point
0x38 SHPIX[] SHift point by a PIXel amount
0x39 IP[] Interpolate Point
0x3A - 0x3B MSIRP[a] Move Stack Indirect Relative Point
0x3C ALIGNRP[] ALIGN to Reference Point
0x3D RTDG[ ] Round To Double Grid
0x3E - 0x3F MIAP[a] Move Indirect Absolute Point
0x40 NPUSHB[ ] PUSH N Bytes
0x41 NPUSHW[ ] PUSH N Words
0x42 WS[ ] Write Store
0x43 RS[ ] Read Store
0x44 WCVTP[ ] Write Control Value Table in Pixel units
0x45 RCVT[ ] Read Control Value Table
0x46 - 0x47 GC[a] Get Coordinate projected onto the projection_vector
0x48 SCFS[ ] Sets Coordinate From the Stack using projection_vector and freedom_vector
0x49 - 0x4A MD[a] Measure Distance
0x4B MPPEM[ ] Measure Pixels Per EM
0x4C MPS[ ] Measure Point Size
0x4D FLIPON[ ] Set the auto_flip Boolean to ON
0x4E FLIPOFF[ ] Set the auto_flip Boolean to OFF
0x4F DEBUG[] DEBUG call
0x50 LT[] Less Than
0x51 LTEQ[] Less Than or EQual
0x52 GT[] Greater Than
0x53 GTEQ[] Greater Than or Equal
0x54 EQ[] Equal
0x55 NEQ[] Not EQual
0x56 ODD[] ODD
0x57 EVEN[] EVEN
0x58 IF[] IF test
0x59 EIF[] End IF
0x5A AND[] logical AND
0x5B OR[] logical OR
0x5C NOT[] logical NOT
0x5D DELTAP1[] DELTA exception P1
0x5E SDB[ ] Set Delta_Base in the graphics state
0x5F SDS[ ] Set Delta_Shift in the graphics state
0x60 ADD[] ADD
0x61 SUB[] SUBtract
0x62 DIV[] DIVide
0x63 MUL[] MULtiply
0x64 ABS[] ABSolute value
0x65 NEG[] NEGate
0x66 FLOOR[] FLOOR
0x67 CEILING[] CEILING
0x68 - 0x6B ROUND[ab] ROUND value
0x6C - 0x6F NROUND[ab] No ROUNDing of value
0x70 WCVTF[ ] Write Control Value Table in Funits
0x71 DELTAP2[] DELTA exception P2
0x72 DELTAP3[] DELTA exception P3
0x73 DELTAC1[] DELTA exception C1
0x74 DELTAC2[] DELTA exception C2
0x75 DELTAC3[] DELTA exception C3
0x76 SROUND[ ] Super ROUND
0x77 S45ROUND[ ] Super ROUND 45 degrees
0x78 JROT[] Jump Relative On True
0x79 JROF[] Jump Relative On False
0x7A ROFF[ ] Round OFF
0x7B
0x7C RUTG[ ] Round Up To Grid
0x7D RDTG[ ] Round Down To Grid
0x7E SANGW[ ] Set Angle _Weight
0x7F AA[] Adjust Angle
0x80 FLIPPT[] FLIP PoinT
0x81 FLIPRGON[] FLIP RanGe ON
0x82 FLIPRGOFF[] FLIP RanGe OFF
0x83 - 0x84
0x85 SCANCTRL[ ] SCAN conversion ConTRoL
0x86 - 0x87 SDPVTL[a] Set Dual Projection_Vector To Line
0x88 GETINFO[] GET INFOrmation
0x89 IDEF[] Instruction DEFinition
0x8A ROLL[] ROLL the top three stack elements
0x8B MAX[] MAXimum of top two stack elements
0x8C MIN[] MINimum of top two stack elements
0x8D SCANTYPE[ ] SCANTYPE
0x8E INSTCTRL[] INSTRuction execution ConTRoL
0x8F - 0x90
0x91 GETVARIATION[ ] GET VARIATION
0x92 - 0xAF
0xB0 - 0xB7 PUSHB[abc] PUSH Bytes
0xB8 - 0xBF PUSHW[abc] PUSH Words
0xC0 - 0xDF MDRP[abcde] Move Direct Relative Point
0xE0 - 0xFF MIRP[abcde] Move Indirect Relative Point

0x28, 0x7B, 0x83 - 0x84, 0x8F - 0xAF には何が当てられているのだろうか?

(2016-09-20 追記)


(追記終)