Created
May 23, 2019 08:17
-
-
Save jenskutilek/1ca0ad24e63eaab27540ea1d139fe036 to your computer and use it in GitHub Desktop.
HTIC assembly instructions example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
flags { | |
# As seen on VTT | |
X 1 # X X axis | |
Y 0 # Y Y axis | |
O 1 # O Use original outline | |
N 0 # N Use gridfitted outline | |
R 1 # R Round distance; or perpendicular to line | |
r 0 # r Do not round distance; or parallel to line | |
M 1 # M Set rp0 to point number on the stack | |
m 0 # m Do not set rp0 | |
1 1 # 1 Use rp1 | |
2 0 # 2 Use rp2 | |
> 1 # > Obey minimum distance | |
< 0 # < Do not obey minimum distance | |
Gr 00 # Gr Gray | |
Bl 01 # Bl Black | |
Wh 10 # Wh White | |
# Combined flags | |
M<rGr 10000 | |
M<RGr 10100 | |
M>RGr 11100 | |
} | |
gasp { | |
6 doGray symSmoothing # 10 | |
20 doGridfit doGray symGridfit # 7 | |
120 doGridfit doGray symGridfit symSmoothing # 15 | |
65535 doGray symSmoothing # 10 | |
} | |
# head { | |
# flags instructionsMayAlterAdvanceWidth | |
# 7 lowestRecPPEM | |
# } | |
maxp { | |
512 maxStackElements | |
11 maxFunctionDefs | |
0 maxStorage | |
1 maxZones | |
0 maxTwilightPoints | |
} | |
cvt { | |
19 zones_off # value to decide whether zones are off | |
# y distances for stems | |
78 1 # Fatest | |
60 2 # Round_Fat | |
49 3 # Serif_Med | |
50 4 # Straight_Thin | |
56 5 # dbpq | |
# bottom zones | |
0 6 # b: 0 | |
19 7 | |
-206 8 # b: 1 | |
18 9 | |
# top zones | |
440 10 # t: 0 | |
16 11 | |
466 12 # t: 1 | |
16 13 | |
540 14 # t: 2 | |
17 15 | |
644 16 # t: 3 | |
16 17 | |
661 18 # t: 4 | |
9 19 | |
632 20 # t: LF | |
10 21 | |
508 22 # t: OsF | |
18 23 | |
} | |
fpgm { | |
void 0 check_gridfit | |
IF ((MPPEM) < 9) | |
push 1 1 | |
INSTCTRL | |
EIF | |
SCANCTRL 511 # dropout ppm | |
SCVTCI 68 # stem snap in 1/64 pixel | |
push 9 3 | |
SDS # FL delta shift is always 3 | |
SDB # FL delta base is always 9 | |
ENDF | |
void 1 round_cvt cvt | |
DUP | |
DUP | |
RCVT | |
ROUND[Bl] | |
WCVTP | |
push 1 | |
ADD | |
ENDF | |
void 2 round_stems cvt_first_stem val_num_stems | |
push 1 | |
LOOPCALL | |
POP | |
ENDF | |
void 3 doublelink pt1 pt2 | |
DUP | |
GC[N] | |
push 3 | |
CINDEX | |
GC[N] | |
GT | |
IF | |
SWAP | |
EIF | |
DUP | |
ROLL | |
DUP | |
ROLL | |
MD[N] | |
ABS | |
ROLL | |
DUP | |
GC[N] | |
DUP | |
ROUND[Gr] | |
SUB | |
ABS | |
push 4 | |
CINDEX | |
GC[N] | |
DUP | |
ROUND[Gr] | |
SUB | |
ABS | |
GT | |
IF | |
SWAP | |
NEG | |
ROLL | |
EIF | |
MDAP[R] | |
DUP | |
push 0 | |
GTEQ | |
IF | |
ROUND[Bl] | |
DUP | |
push 0 | |
EQ | |
IF | |
POP | |
push 64 | |
EIF | |
ELSE | |
ROUND[Bl] | |
DUP | |
push 0 | |
EQ | |
IF | |
POP | |
push 64 | |
NEG | |
EIF | |
EIF | |
MSIRP[m] | |
ENDF | |
void 4 doublelink_stem pt1 cvt_stem pt2 | |
DUP | |
GC[N] | |
push 4 | |
CINDEX | |
GC[N] | |
GT | |
IF | |
SWAP | |
ROLL | |
EIF | |
DUP | |
GC[N] | |
DUP | |
ROUND[Wh] | |
SUB | |
ABS | |
push 4 | |
CINDEX | |
GC[N] | |
DUP | |
ROUND[Wh] | |
SUB | |
ABS | |
GT | |
IF | |
SWAP | |
ROLL | |
EIF | |
MDAP[R] | |
MIRP[11101] | |
ENDF | |
void 5 function_5 | |
MPPEM | |
DUP | |
push 3 | |
MINDEX | |
LT | |
IF | |
LTEQ | |
IF | |
push 128 | |
WCVTP | |
ELSE | |
push 64 | |
WCVTP | |
EIF | |
ELSE | |
POP | |
POP | |
DUP | |
RCVT | |
push 192 | |
LT | |
IF | |
push 192 | |
WCVTP | |
ELSE | |
POP | |
EIF | |
EIF | |
ENDF | |
void 6 round_zone cvt_pos cvt_size | |
DUP | |
DUP | |
RCVT | |
ROUND[Bl] | |
WCVTP | |
push 1 | |
ADD | |
DUP | |
DUP | |
RCVT | |
RDTG | |
ROUND[Bl] | |
RTG | |
WCVTP | |
push 1 | |
ADD | |
ENDF | |
void 7 round_zones cvt_first_zone val_num_zones | |
push 6 | |
LOOPCALL | |
ENDF | |
void 8 set_stem cvt_stem val_ppm6 val_ppm5 val_ppm4 val_ppm3 val_ppm2 val_ppm1 | |
MPPEM | |
DUP | |
push 3 | |
MINDEX | |
GTEQ | |
IF | |
push 64 | |
ELSE | |
push 0 | |
EIF | |
ROLL | |
ROLL | |
DUP | |
push 3 | |
MINDEX | |
GTEQ | |
IF | |
SWAP | |
POP | |
push 128 | |
ROLL | |
ROLL | |
ELSE | |
ROLL | |
SWAP | |
EIF | |
DUP | |
push 3 | |
MINDEX | |
GTEQ | |
IF | |
SWAP | |
POP | |
push 192 | |
ROLL | |
ROLL | |
ELSE | |
ROLL | |
SWAP | |
EIF | |
DUP | |
push 3 | |
MINDEX | |
GTEQ | |
IF | |
SWAP | |
POP | |
push 256 | |
ROLL | |
ROLL | |
ELSE | |
ROLL | |
SWAP | |
EIF | |
DUP | |
push 3 | |
MINDEX | |
GTEQ | |
IF | |
SWAP | |
POP | |
push 320 | |
ROLL | |
ROLL | |
ELSE | |
ROLL | |
SWAP | |
EIF | |
DUP | |
push 3 | |
MINDEX | |
GTEQ | |
IF | |
push 3 | |
CINDEX | |
RCVT | |
push 384 | |
LT | |
IF | |
SWAP | |
POP | |
push 384 | |
SWAP | |
POP | |
ELSE | |
push 3 | |
CINDEX | |
RCVT | |
SWAP | |
POP | |
SWAP | |
POP | |
EIF | |
ELSE | |
POP | |
EIF | |
WCVTP | |
ENDF | |
void 9 function_9 | |
MPPEM | |
GTEQ | |
IF | |
RCVT | |
WCVTP | |
ELSE | |
POP | |
POP | |
EIF | |
ENDF | |
void 10 zone_align pt cvt_zone | |
RCVT zones_off | |
IF | |
POP | |
MDAP[R] | |
ELSE | |
MIAP[r] | |
EIF | |
ENDF | |
} | |
prep { | |
CALL check_gridfit | |
# vertical distances | |
SVTCA[Y] | |
CALL round_stems 1 5 | |
# vdist ppms | |
CALL set_stem 1 68 58 41 32 19 0 | |
CALL set_stem 2 92 72 57 43 29 0 | |
CALL set_stem 3 110 90 70 48 30 0 | |
CALL set_stem 4 110 90 70 48 30 0 | |
CALL set_stem 5 100 82 62 48 30 0 | |
# zones | |
CALL round_zones 6 9 | |
push 0 | |
DUP | |
RCVT | |
RDTG | |
ROUND[Bl] | |
RTG | |
WCVTP | |
deltac 12 12-8 14-8 | |
IF ((MPPEM) > 120) | |
push 1 | |
ELSE | |
push 0 | |
EIF | |
push 1 | |
INSTCTRL | |
} | |
.notdef { | |
SVTCA[Y] | |
CALL zone_align 0 20 | |
CALL zone_align 1 6 | |
SRP0 0 | |
MIRP[M<RGr] 4 4 | |
SRP0 1 | |
MIRP[M<RGr] 6 4 | |
IUP[Y] | |
IUP[X] | |
} | |
E { | |
SVTCA[Y] | |
CALL zone_align 3 16 | |
CALL zone_align 39 6 | |
MIRP[M<RGr] 0 3 | |
SRP0 3 | |
MIRP[M<RGr] 1 3 | |
SRP0 3 | |
MIRP[M<RGr] 13 4 | |
SRP1 39 | |
SRP2 13 | |
IP 28 | |
MDAP[R] 28 | |
MIRP[M<RGr] 15 4 | |
SRP0 39 | |
MIRP[M<RGr] 30 4 | |
IUP[Y] | |
IUP[X] | |
} | |
O { | |
SVTCA[Y] | |
CALL zone_align 5 16 | |
CALL zone_align 15 6 | |
SRP0 5 | |
MIRP[M<RGr] 25 4 | |
SRP0 15 | |
MIRP[M<RGr] 35 4 | |
IUP[Y] | |
IUP[X] | |
} | |
a { | |
SVTCA[Y] | |
CALL zone_align 27 10 | |
CALL zone_align 39 6 | |
CALL zone_align 48 6 | |
SRP0 27 | |
MIRP[M<RGr] 12 4 | |
SRP1 12 | |
SRP2 48 | |
IP 51 | |
MDAP[R] 51 | |
MIRP[M<RGr] 6 4 | |
SRP1 27 | |
SRP2 48 | |
IP 19 | |
MDAP[R] 19 | |
deltap 19 11+8 | |
SRP0 39 | |
MIRP[M<RGr] 36 3 | |
SRP0 48 | |
MIRP[M<RGr] 59 2 | |
IUP[Y] | |
IUP[X] | |
} | |
e { | |
SVTCA[Y] | |
CALL zone_align 5 10 | |
CALL zone_align 25 6 | |
SRP1 25 | |
SRP2 5 | |
IP 12 | |
MDAP[R] 12 | |
SRP0 25 | |
MIRP[M<RGr] 17 2 | |
SRP1 25 | |
SRP2 12 | |
IP 21 | |
MDAP[R] 21 | |
SRP0 12 | |
MIRP[M<RGr] 28 4 | |
SRP0 5 | |
MIRP[M<RGr] 33 4 | |
IUP[Y] | |
IUP[X] | |
} | |
h { | |
SVTCA[Y] | |
CALL zone_align 4 18 | |
CALL zone_align 11 10 | |
CALL zone_align 16 6 | |
CALL zone_align 31 6 | |
MIRP[M<RGr] 0 3 | |
SRP0 4 | |
MIRP[M<RGr] 1 3 | |
SRP0 0 | |
MDRP[M<rGr] 29 | |
MDRP[M<rGr] 19 | |
MDRP[M<rGr] 14 | |
SRP0 11 | |
MIRP[M<RGr] 23 2 | |
IUP[Y] | |
IUP[X] | |
} | |
o { | |
SVTCA[X] | |
MDAP[R] 40 | |
MDAP[R] 20 | |
SRP0 40 | |
MDRP[M>RGr] 0 | |
SRP0 20 | |
MDRP[M>RGr] 10 | |
SRP0 0 | |
MDRP[M>RGr] 30 | |
SRP0 10 | |
MDRP[M>RGr] 41 | |
SVTCA[Y] | |
CALL zone_align 5 10 | |
CALL zone_align 15 6 | |
SRP0 5 | |
MIRP[M<RGr] 25 4 | |
SRP0 15 | |
MIRP[M<RGr] 35 4 | |
IUP[Y] | |
IUP[X] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment