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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
|
%
% These macros make it possible to read *.map files as either
% \TeX{} or METAFONT input
% See the $TEXMFROOT/tex/languages/greek/ibygrk directory for
% use of this file as TeX input
%
% A well-known conditional test in METAFONT;
% It creates mismatch of character tokens 'k' and 'n' in TeX
\if known cmbase: % Interpret as a METAFONT file
let re_catcode=relax; let let_=gobble; let no_let=gobble;
else:
message "Must have cmbase loaded for this, or else some macros from it" ;
%
% END OF METAFONT INTERPRETATION---TeX INTERPRETATION FOLLOWS
%
\else % Interpret as a TeX file
\catcode`\_11 % allow underscore in csnames as in METAFONT
\def\re_catcode{\catcode`\=12 \catcode`\;12 \catcode`\_8}%
\def\ignore_to_comment#1#2{}%
% Now activate all the characters from ^^80 to ^^ff
\count255=`\^^80
\loop \ifnum\count255 < `\^^ff
\catcode\count255\active \advance\count255 by 1 \repeat
% \catcode`\^^ff\active % If you want it, I don't in this case.
\expandafter\input\the\digraphs % Filename in a \toks register
\catcode`\;0 % treat the first ; (required by METAFONT) as an escape
\catcode`\=14 % treat the = in the METAFONT part as a comment character
\let\let_\let \let\no_let\ignore_to_comment
\fi
%
% This is a rather specialized version of the map file,
% developed for Greek only. There are certain restrictions
% in this case, because we do not want to alter Silvio Levy's
% source code---only the mappings.
% The upper level codes (^^80---^^ff) are based on a version of
% Greek Keys (a word-processor package for Macintosh, distributed
% through the American Philological Association), but the mapping
% is worked out by experience not from any documentation, and
% local customization often alters even this mapping.
% Consistency is provided by the ASCII digraphs
% and trigraphs to which all word-processor codes are remapped
% before they are used in TeX. These digraphs and trigraphs
% (even tetragraphs in the case of iota subscript) are very close
% to Ibycus/TLG betacode, except for the unfortunate uppercasing
% of betacode.
%
% a known set of word-processor Some "hidden" characters
% equivalents is "let_" for TeX Only METAFONT needs to know
% \no_let is used where there what is in this column
% seems to be no certain mapping
%
\let_ ^^80;quotesnglright = ASCII"'"; endash = oct"046";
\let_ ^^81;quotesnglleft = ASCII"`"; emdash = oct"177";
\let_ ^^82;peri_spomenon = ASCII"="; null_space = ASCII" ";
\let_ ^^83;sp_lenis = ASCII")"; dieresis = oct"053"; % use plus sign
\let_ ^^84;sp_asper = ASCII"("; minute = ASCII"&"; % prime for numbers
\let_ ^^85;lenis_oxy = oct"136"; asper_glyph = oct"303";
\let_ ^^86;lenis_bary = oct"137"; lenis_glyph = oct"307";
\let_ ^^87;lenis_peri = oct"134"; guillemotleft = ASCII"{"; %two small
\let_ ^^88;asper_oxy = oct"207"; guillemotright = ASCII"}"; % awks
\let_ ^^89;asper_bary = oct"203"; iotasubscript = ASCII"|";
\let_ ^^8a;asper_peri = oct"100"; dubious = ASCII"!";
\no_let \dmy;bary_tone = oct"275"; quotedblleft = oct"253";
\no_let \dmy;oxy_tone = oct"276"; quotedblright = oct"257";
\no_let \dmy;diaeroxy = oct"043"; bracketleftbt = oct"363";
\no_let \dmy;diaerbary = oct"044"; bracketrightbt = oct"367";
%
% alpha with accents
%
\let_ ^^8b;a_oxy = oct"210"; Digamma = ASCII"V";
\let_ ^^8c;a_bary = oct"200"; digamma = ASCII"v";
\let_ ^^8d;a_peri = oct"220"; boundarychar := oct"377"; % N.B. :=
\let_ ^^8e;a_len = oct"202";
\let_ ^^8f;a_aspr = oct"201";
\let_ ^^90;a_lenoxy = oct"212";
\let_ ^^91;a_asproxy = oct"211"; cigmalunate=ASCII"J";
\let_ ^^92;a_lenbary = oct"223"; % "J" is all that's available
\let_ ^^93;a_asprbary = oct"213"; sigmafinal=ASCII"j";
\let_ ^^94;a_lenperi = oct"222"; r_aspr = oct"373"; % GreekKeys "="!!
\let_ ^^95;a_asprperi = oct"221"; r_len = oct"374";
%
% alpha with accents and iota subscript
%
\let_ ^^fb;a_isub = oct"370"; % Kerned back iotasubscript only
\let_ ^^96;a_oxyisub = oct"214"; e_peri = oct"214";
\let_ ^^97;a_baryisub = oct"204"; e_asprperi = oct"204";
\let_ ^^98;a_periisub = oct"224"; e_lenperi = oct"224";
\let_ ^^99;a_lenisub = oct"206"; Koppa = oct"206";
\let_ ^^9a;a_asprisub = oct"205"; o_asprperi = oct"205";
\let_ ^^9b;a_lenoxyisub = oct"216"; koppa = oct"216";
\let_ ^^9c;a_asproxyisub = oct"215"; o_peri = oct"215";
\let_ ^^9d;a_lenbaryisub = oct"227";
\let_ ^^9e;a_asprbaryisub = oct"217"; sampi = oct"217";
\let_ ^^9f;a_lenperiisub = oct"226"; Cigmalunate=oct"226";
\let_ ^^a0;a_asprperiisub = oct"225"; o_lenperi = oct"225";
%
% epsilon with accents
%
\let_ ^^a1;e_oxy = oct"350"; angleleft = ASCII"<";
\let_ ^^a2;e_bary = oct"340"; angleright = ASCII">";
\let_ ^^a4;e_len = oct"342"; braceleft = oct"333";
\let_ ^^a5;e_aspr = oct"341"; braceright = oct"337";
\let_ ^^a6;e_lenoxy = oct"352"; dagger = oct"375";
\let_ ^^a7;e_asproxy = oct"351"; daggerdbl = oct"376";
\let_ ^^a8;e_lenbary = oct"343"; aspirate = oct"377";
\let_ ^^a9;e_asprbary = oct"353";
%
% eta with accents
%
\let_ ^^ae;h_oxy = oct"240";
\let_ ^^af;h_bary = oct"230";
\let_ ^^b0;h_peri = oct"250";
\let_ ^^b1;h_len = oct"232";
\let_ ^^b2;h_aspr = oct"231";
\let_ ^^b3;h_lenoxy = oct"242";
\let_ ^^b4;h_asproxy = oct"241";
\let_ ^^b5;h_lenbary = oct"243";
\let_ ^^b6;h_asprbary = oct"233";
\let_ ^^b7;h_lenperi = oct"252";
\let_ ^^b8;h_asprperi = oct"251";
%
% eta with accents and iota subscript
%
% In this section and in the "omega with accents and iota subscript"
% section at the end, the octal values are assigned twice. The coding
% originally followed the pattern of GreekKeys fonts in giving a map
% position to every iota subscript composite. But this is wasteful, since
% there are only three correct positions for iota subscript. Current
% coding follows the practice seen in the Linotype Times Ten Greek of
% kerning one of three iotasubscripts under the appropriate a, h, or w.
% This does, unfortunately mean that the current mapping cannot be used
% directly with GreekKeys input, but nobody seems ever to do that
% anyway.
%
\let_ ^^fa;h_isub = oct"371"; % The redundancy below here is
\let_ ^^b9;h_oxyisub = oct"244"; doti = oct"244"; % unavoidable
\let_ ^^ba;h_baryisub = oct"234"; dotI = oct"234" % It derives in
\let_ ^^bb;h_periisub = oct"254"; dote = oct"254"; % part from the
\let_ ^^bc;h_lenisub = oct"236"; dotbt = oct"236"; % older coding
\let_ ^^bd;h_asprisub = oct"235"; dotJdlmnpqu = oct"235"; % Now the
\let_ ^^be;h_lenoxyisub = oct"246"; dotkos = oct"246"; % only
\let_ ^^bf;h_asproxyisub = oct"245"; dotGZ = oct"245"; % isub
\let_ ^^c0;h_lenbaryisub = oct"247"; dotCEVaw = oct"247"; % code
\let_ ^^c1;h_asprbaryisub = oct"237"; dotchjz = oct"237"; % in MF
\let_ ^^c2;h_lenperiisub = oct"256"; dotBFLNPRSTW = oct"256"; % is the
\let_ ^^c3;h_asprperiisub = oct"255"; dotH = oct"255"; % first
%
%iota with accents
%
\let_ ^^db;i_oxy = oct"320";
\let_ ^^dc;i_bary = oct"310";
\let_ ^^dd;i_peri = oct"330";
\let_ ^^de;i_len = oct"312";
\let_ ^^df;i_aspr = oct"311";
\let_ ^^e0;i_lenoxy = oct"322";
\let_ ^^e1;i_asproxy = oct"321";
\let_ ^^e2;i_lenbary = oct"323";
\let_ ^^e3;i_asprbary = oct"313";
\let_ ^^e4;i_lenperi = oct"332";
\let_ ^^e5;i_asprperi = oct"331";
\let_ ^^f3;i_diaer = oct"360";
\let_ ^^fd;i_diaeroxy = oct"362";
\let_ ^^fe;i_diaerbary = oct"361";
%
% omicron with accents
%
\let_ ^^f1;o_oxy = oct"354";
\let_ ^^f2;o_bary = oct"344";
\let_ ^^f4;o_len = oct"346";
\let_ ^^f5;o_aspr = oct"345";
\let_ ^^f6;o_lenoxy = oct"356";
\let_ ^^f7;o_asproxy = oct"355";
\let_ ^^f8;o_lenbary = oct"357";
\let_ ^^f9;o_asprbary = oct"347";
%
% upsilon with accents
%
\let_ ^^e6;u_oxy = oct"324";
\let_ ^^e7;u_bary = oct"314";
\let_ ^^e8;u_peri = oct"334";
\let_ ^^e9;u_len = oct"316";
\let_ ^^ea;u_aspr = oct"315";
\let_ ^^eb;u_lenoxy = oct"326";
\let_ ^^ec;u_asproxy = oct"325";
\let_ ^^ed;u_lenbary = oct"327";
\let_ ^^ee;u_asprbary = oct"317";
\let_ ^^ef;u_lenperi = oct"336";
\let_ ^^f0;u_asprperi = oct"335";
\no_let \dmy;u_diaer = oct"364"; % ^^23, but it's not worth the effort
\no_let \dmy;u_diaeroxy = oct"366"; % ^^40, ditto
\let_ ^^a3;u_diaerbary = oct"365";
%
% omega with accents
%
\let_ ^^c5;w_oxy = oct"270";
\let_ ^^c6;w_bary = oct"260";
\let_ ^^c7;w_peri = oct"300";
\let_ ^^c8;w_len = oct"262";
\let_ ^^c9;w_aspr = oct"261";
\let_ ^^ca;w_lenoxy = oct"272";
\let_ ^^cb;w_asproxy = oct"271";
\let_ ^^cc;w_lenbary = oct"273";
\let_ ^^cd;w_asprbary = oct"263";
\let_ ^^ce;w_lenperi = oct"302";
\let_ ^^cf;w_asprperi = oct"301";
%
% omega with accents and iota subscript
%
\let_ ^^c4;w_isub = oct"372"; % Kerned back iotasubscript only
\let_ ^^d0;w_oxyisub = oct"274"; dotAOQUXY = oct"274";
\let_ ^^d1;w_baryisub = oct"264"; dotDK = oct"264";
\let_ ^^d2;w_periisub = oct"304"; dotM = oct"304";
\let_ ^^d3;w_lenisub = oct"266"; dotgx = oct"266";
\let_ ^^d4;w_asprisub = oct"265"; dotfy = oct"265";
\let_ ^^d5;w_lenoxyisub = oct"276"; % oxy_tone
\let_ ^^d6;w_asproxyisub = oct"275"; % bary_tone
\let_ ^^d7;w_lenbaryisub = oct"277"; dotr = oct"277"
\let_ ^^d8;w_asprbaryisub = oct"267"; dotkoppa = oct"267";
\let_ ^^d9;w_lenperiisub = oct"306"; longum = oct"306";
\let_ ^^da;w_asprperiisub = oct"305"; breve = oct"305";
\re_catcode
|