# 指令集摘要

下表简要概述了 TrueType 指令集的名称、操作码、指令流和堆栈交互。

第一个表列出了从指令流中获取数据并将其放入解释器堆栈的指令。第二个表列出了从堆栈中获取参数的其余 TrueType 指令。

表 1 从指令流中获取数据的指令

指令 操作码 来自指令流 推送
NPUSHB[ ] 0x40 n, b1, b2,...bn b1,b2...bn
NPUSHW[ ] 0x41 n, w1, w2,...w w1,w2...wn
PUSHB[abc] 0xB0 - 0xB7 b0, b1,..bn b0, b1, ...,bn
PUSHW[abc] 0xB8 - 0xBF w0,w1,..wn w0 ,w1, ...wn

表 2 从解释器堆栈获取数据的指令

指令

操作码

弹出

推送

AA[ ] 0x7F p -
ABS[ ] 0x64 n |n|
ADD[ ] 0x60 n2, n1 (n1 + n2)
ALIGNPTS[ ] 0x27 p2, p1 -
ALIGNRP[ ] 0x3C p1, p2, ... , ploopvalue -
AND[ ] 0x5A e2, e1 b
CALL[ ] 0x2B f -
CEILING[ ] 0x67 n Èn
CINDEX[ ] 0x25 k ek
CLEAR[ ] 0x22 all items on the stack -
DEBUG[ ] 0x4F n -
DELTAC1[ ], 0x73 argn, cn, argn-1,cn-1, , arg1, c1 -
DELTAC2[ ] 0x74 argn, cn, argn-1,cn-1, , arg1, c1 -
DELTAC3[ ] 0x75 argn, cn, argn-1,cn-1, , arg1, c1 -
DELTAP1[ ] 0x5D argn, pn, argn-1, pn-1, , arg1, p1 -
DELTAP2[ ] 0x71 argn, pn, argn-1, pn-1, , arg1, p1 -
DELTAP3[ ] 0x72 argn, pn, argn-1, pn-1, , arg1, p1 -
DEPTH[ ] 0x24 - n
DIV[ ] 0x62 n2, n1 (n1 * 64)/ n2
DUP[ ] 0x20 e e, e
EIF[ ] 0x59 - -
ELSE 0x1B - -
ENDF[ ] 0x2D - -
EQ[ ] 0x54 e2, e1 b
EVEN[ ] 0x57 e b
FDEF[ ] 0x2C f -
FLIPOFF[ ] 0x4E - -
FLIPON[ ] 0x4D - -
FLIPPT[ ] 0x80 p1, p2, ..., ploopvalue -
FLIPRGOFF[ ] 0x82 h, l -
FLIPRGON[ ] 0x81 h, l -
FLOOR[ ] 0x66 n În°
GC[a] 0x46 - 0x47 p c
GETINFO[ ] 0x88 selector result
GFV[ ] 0x0D - px, py
GPV[ ] 0x0C - px, py
GT[ ] 0x52 e2, e1 b
GTEQ[ ] 0x53 e2, e1 b
IDEF[ ] 0x89 f -
IF[ ] 0x58 e -
INSTCTRL 0x8E s, v -
IP[ ] 0x39 p1, p2, ... , ploopvalue -
ISECT[ ] 0x0F a1, a0, b1, b0, p -
IUP[a] 0x30 - 0x31 - -
JMPR 0x1C offset -
JROF[ ] 0x79 e, offset -
JROT[ ] 0x78 e, offset -
LOOPCALL[ ] 0x2A f, count -
LT[ ] 0x50 e2, e1 b
LTEQ[ ] 0x51 e2, e1 b
MAX[ ] 0X8B e2, e1 max(e1, e2)
MD[a] 0x49 - 0x4A p2,p1 d
MDAP[ a ] 0x2E - 0x2F p -
MDRP[abcde] 0xC0 - 0xDF p -
MIAP[a] 0x3E - 0x3F n, p -
MIN[ ] 0X8C e2, e1 min(e1, e2)
MINDEX[ ] 0x26 k ek
MIRP[abcde] 0xE0 - 0xFF n, p -
MPPEM[ ] 0x4B - ppem
MPS[ ] 0x4C - pointSize
MSIRP[a] 0x3A - 0x3B d, p -
MUL[ ] 0x63 n2, n1 (n1 * n2)/64
NEG[ ] 0x65 n -n
NEQ[ ] 0x55 e2, e1 b
NOT[ ] 0x5C e ( not e )
NROUND[ab] 0x6C - 0x6F n1 n2
ODD[ ] 0x56 e b
OR[ ] 0x5B e2, e1 b
POP[ ] 0x21 e -
RCVT[ ] 0x45 location value
RDTG[ ] 0x7D - -
ROFF[ ] 0x7A - -
ROLL 0x8a a,b,c b,a,c
ROUND[ab] 0x68 - 0x6B n1 n2
RS[ ] 0x43 n v
RTDG[ ] 0x3D - -
RTG[ ] 0x18 - -
RTHG[ ] 0x19 - -
RUTG[ ] 0x7C - -
S45ROUND[ ] 0x77 n -
SANGW[ ] 0x7E weight -
SCANCTRL[ ] 0x85 n -
SCANTYPE[ ] 0x8D n -
SCFS[ ] 0x48 c, p -
SCVTCI[ ] 0x1D n -
SDB[ ] 0x5E n -
SDPVTL[a] 0x86 - 0x87 p2, p1 -
SDS[ ] 0x5F n -
SFVFS[ ] 0x0B y, x -
SFVTCA[a] 0x04 - 0x05 - -
SFVTL[a] 0x08 - 0x09 p2, p1 -
SFVTPV[ ] 0x0E - -
SHC[a] 0x34 - 0x35 c -
SHP[a] 0x32 - 0x33 p1, p2, ..., ploopvalue -
SHPIX[ ] 0x38 d, p1, p2, ..., ploopvalue -
SHZ[a] 0x36 - 0x37 e -
SLOOP[ ] 0x17 n -
SMD[ ] 0x1A distance -
SPVFS[ ] 0x0A y, x -
SPVTCA[a] 0x02 - 0x03 - -
SPVTL[a] 0x06 - 0x07 p2, p1 -
SROUND[ ] 0x76 n -
SRP0[ ] 0x10 p -
SRP1[ ] 0x11 p -
SRP2[ ] 0x12 p -
SSW[ ] 0x1F n -
SSWCI[ ] 0x1E n -
SUB[ ] 0x61 n2, n1 (n1 - n2)
SVTCA[a] 0x00 - 0x01 - -
SWAP[ ] 0x23 e2, e1 e1, e2
SZP0[ ] 0x13 n -
SZP1[ ] 0x14 n -
SZP2[ ] 0x15 n -
SZPS[ ] 0x16 n -
UTP[ ] 0x29 p -
WCVTF[ ] 0x70 n, l -
WCVTP[ ] 0x44 v, l -
WS[ ] 0x42 v, l -