1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
%
% local.mf
%
%
% Define modes
%
mode_def hplaser = % HP LaserJet+
proofing:=0; % no, we're not making proofs
fontmaking:=1; % yes, we are making a font
tracingtitles:=0; % no, don't show titles in the log
pixels_per_inch:=300;
blacker:=0; % The LaserJet is black enough
fillin:=.2; % and it tends to fill in diagonals
o_correction:=.6; %
enddef;
mode_def kyocera = % Kyocera F-1010
proofing:=0; % no, we're not making proofs
fontmaking:=1; % yes, we are making a font
tracingtitles:=0; % no, don't show titles in the log
pixels_per_inch:=300;
blacker:=0; % The Kyocera is black enough
fillin:=.2; % and it tends to fill in diagonals
o_correction:=.6; %
enddef;
mode_def epsonfx = % Epson FX-80
proofing:=0; % no, we're not making proofs
fontmaking:=1; % yes, we are making a font
tracingtitles:=0; % no, don't show titles in the log
pixels_per_inch:=240;
blacker:=0; % don't make the pens any blacker
fillin:=0; % and don't compensate for fillin
o_correction:=.2; % but suppress most overshoots
aspect_ratio:=9/10; % 216 dots/inch vertical
enddef;
mode_def epsonmx = % Epson MX-80
proofing:=0; % no, we're not making proofs
fontmaking:=1; % yes, we are making a font
tracingtitles:=0; % no, don't show titles in the log
pixels_per_inch:=120;
blacker:=0; % don't make the pens any blacker
fillin:=0; % and don't compensate for fillin
o_correction:=.2; % but suppress most overshoots
aspect_ratio:=9/5; % 216 dots/inch vertical
enddef;
mode_def lqhires = % NEC-P6 high resolution (360x360)
proofing:=0; % no, we're not making proofs
fontmaking:=1; % yes, we are making a font
tracingtitles:=0; % no, don't show titles in the log
pixels_per_inch:=360;
blacker:=0; % don't make the pens any blacker
fillin:=0; % and don't compensate for fillin
o_correction:=.4; % but suppress most overshoots
enddef;
mode_def lqmedres = % LQ-1500, NEC-P6 medium resolution (360x180)
proofing:=0; % no, we're not making proofs
fontmaking:=1; % yes, we are making a font
tracingtitles:=0; % no, don't show titles in the log
pixels_per_inch:=360;
blacker:=0; % 0.3 avoids `holes'
fillin:=0; % and don't compensate for fillin
o_correction:=.1; % but suppress most overshoots
aspect_ratio:=1/2; % 180 dots/inch vertical
enddef;
mode_def lqmedresl = % LQ-1500, NEC-P6 medium resolution (180x360)
proofing:=0; % no, we're not making proofs
fontmaking:=1; % yes, we are making a font
tracingtitles:=0; % no, don't show titles in the log
pixels_per_inch:=180;
blacker:=0; % 0.3 avoids `holes'
fillin:=0; % and don't compensate for fillin
o_correction:=.1; % but suppress most overshoots
aspect_ratio:=2; % 360 dots/inch vertical
enddef;
mode_def lqlores = % LQ-1500, NEC-P6 low resolution (180x180)
proofing:=0; % no, we're not making proofs
fontmaking:=1; % yes, we are making a font
tracingtitles:=0; % no, don't show titles in the log
pixels_per_inch:=180;
blacker:=0; % don't make the pens any blacker
fillin:=0; % and don't compensate for fillin
o_correction:=.1; % but suppress most overshoots
enddef;
mode_def itoh = % C.ITOH 8510A (160x144)
proofing:=0; % no, we're not making proofs
fontmaking:=1; % yes, we are making a font
tracingtitles:=0; % no, don't show titles in the log
pixels_per_inch:=160;
blacker:=0; % don't make the pens any blacker
fillin:=0; % and don't compensate for fillin
o_correction:=.1; % but suppress most overshoots
aspect_ratio:=9/10; % 144 dots/inch vertical
enddef;
%
% Select default mode
%
localfont:=hplaser;
%
% Here are macros for Xerox-world font info:
%
def font_family expr s = % string s names the font family, e.g., "CMR"
headerbyte 49: BCPL_string(s,20);
special "identifier "&s enddef;
def coding_scheme expr s = % string s names the scheme, e.g. "TEX TEXT"
headerbyte 9: BCPL_string(s,40);
special "codingscheme "&s enddef;
def font_face_byte expr x = % integer x gives the family member number,
headerbyte 72: x; % which should be between 0 and 255
special "fontfacebyte"; numspecial x enddef;
def BCPL_string(expr s,n)= % string s becomes an n-byte BCPL string
for l:=if length(s)>=n: n-1 else: length(s) fi: l
for k:=1 upto l: , substring (k-1,k) of s endfor
for k:=l+2 upto n: , 0 endfor endfor enddef;
Xerox_world:=1; % users can say `if known Xerox_world:...fi'
inner end;
def bye=
if fontmaking>0: font_family font_identifier_;
coding_scheme font_coding_scheme_;
font_face_byte max(0,254-round 2designsize); fi
tracingstats:=1; % at least for now we want this
end
enddef;
outer bye,end;
%
% Patch plain base (kill bugs)
%
def drawdot expr z = if unknown currentpen_path: def_pen_path_ fi
addto_currentpicture contour
currentpen_path shifted (z.t_) withpen penspeck enddef;
%
% This has been fixed in plain 1.7
%
%vardef cutoff(expr z,theta) =
% interim autorounding := 0; interim smoothing := 0;
% addto pic_ doublepath z.t_ withpen currentpen;
% addto pic_ contour
% (cut_ scaled (1+max(pen_lft,pen_rt,pen_top/aspect_ratio,pen_bot/aspect_ratio))
% rotated theta shifted z.t_);
% cull pic_ keeping (2,2) withweight -default_wt_;
% addto currentpicture also pic_;
% pic_:=nullpicture enddef;
|