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
|
/*
* texenc.c
*
* This file is part of the ttf2pk package.
*
* Copyright 1997-1999, 2000 by
* Frederic Loyer <loyer@ensta.fr>
* Werner Lemberg <wl@gnu.org>
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdlib.h> /* for definition of NULL */
#include "ttf2tfm.h"
#include "texenc.h"
encoding staticencoding =
{
"TeX text",
{"Gamma", "Delta", "Theta", "Lambda",
"Xi", "Pi", "Sigma", "Upsilon",
"Phi", "Psi", "Omega", "arrowup",
"arrowdown", "quotesingle", "exclamdown", "questiondown",
"dotlessi", "dotlessj", "grave", "acute",
"caron", "breve", "macron", "ring",
"cedilla", "germandbls", "ae", "oe",
"oslash", "AE", "OE", "Oslash",
"space", "exclam", "quotedbl", "numbersign",
"dollar", "percent", "ampersand", "quoteright",
"parenleft", "parenright", "asterisk", "plus",
"comma", "hyphen", "period", "slash",
"zero", "one", "two", "three",
"four", "five", "six", "seven",
"eight", "nine", "colon", "semicolon",
"less", "equal", "greater", "question",
"at", "A", "B", "C",
"D", "E", "F", "G",
"H", "I", "J", "K",
"L", "M", "N", "O",
"P", "Q", "R", "S",
"T", "U", "V", "W",
"X", "Y", "Z", "bracketleft",
"backslash", "bracketright", "circumflex", "underscore",
"quoteleft", "a", "b", "c",
"d", "e", "f", "g",
"h", "i", "j", "k",
"l", "m", "n", "o",
"p", "q", "r", "s",
"t", "u", "v", "w",
"x", "y", "z", "braceleft",
"bar", "braceright", "tilde", "dieresis",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
".notdef", ".notdef", ".notdef", ".notdef",
}
};
/*
* It's easier to put this in static storage and parse it as we go
* than to build the structures ourselves.
*
* The semicolons in the LIGKERN lines must be left isolated.
*/
const char *staticligkern[] =
{
"% LIGKERN space l =: lslash ; space L =: Lslash ;",
"% LIGKERN question quoteleft =: questiondown ;",
"% LIGKERN exclam quoteleft =: exclamdown ;",
"% LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ;",
"% LIGKERN quoteleft quoteleft =: quotedblleft ;",
"% LIGKERN quoteright quoteright =: quotedblright ;",
"% LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ;",
"% LIGKERN one {} * ; * {} one ; two {} * ; * {} two ;",
"% LIGKERN three {} * ; * {} three ; four {} * ; * {} four ;",
"% LIGKERN five {} * ; * {} five ; six {} * ; * {} six ;",
"% LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ;",
"% LIGKERN nine {} * ; * {} nine ;",
/*
* Kern accented characters the same way as their base.
*/
"% LIGKERN Aacute <> A ; aacute <> a ;",
"% LIGKERN Acircumflex <> A ; acircumflex <> a ;",
"% LIGKERN Adieresis <> A ; adieresis <> a ;",
"% LIGKERN Agrave <> A ; agrave <> a ;",
"% LIGKERN Aring <> A ; aring <> a ;",
"% LIGKERN Atilde <> A ; atilde <> a ;",
"% LIGKERN Ccedilla <> C ; ccedilla <> c ;",
"% LIGKERN Eacute <> E ; eacute <> e ;",
"% LIGKERN Ecircumflex <> E ; ecircumflex <> e ;",
"% LIGKERN Edieresis <> E ; edieresis <> e ;",
"% LIGKERN Egrave <> E ; egrave <> e ;",
"% LIGKERN Iacute <> I ; iacute <> i ;",
"% LIGKERN Icircumflex <> I ; icircumflex <> i ;",
"% LIGKERN Idieresis <> I ; idieresis <> i ;",
"% LIGKERN Igrave <> I ; igrave <> i ;",
"% LIGKERN Ntilde <> N ; ntilde <> n ;",
"% LIGKERN Oacute <> O ; oacute <> o ;",
"% LIGKERN Ocircumflex <> O ; ocircumflex <> o ;",
"% LIGKERN Odieresis <> O ; odieresis <> o ;",
"% LIGKERN Ograve <> O ; ograve <> o ;",
"% LIGKERN Oslash <> O ; oslash <> o ;",
"% LIGKERN Otilde <> O ; otilde <> o ;",
"% LIGKERN Scaron <> S ; scaron <> s ;",
"% LIGKERN Uacute <> U ; uacute <> u ;",
"% LIGKERN Ucircumflex <> U ; ucircumflex <> u ;",
"% LIGKERN Udieresis <> U ; udieresis <> u ;",
"% LIGKERN Ugrave <> U ; ugrave <> u ;",
"% LIGKERN Yacute <> Y ; yacute <> y ;",
"% LIGKERN Ydieresis <> Y ; ydieresis <> y ;",
"% LIGKERN Zcaron <> Z ; zcaron <> z ;",
/* lig commands for default ligatures */
"% LIGKERN f i =: fi ; f l =: fl ; f f =: ff ; ff i =: ffi ;",
"% LIGKERN ff l =: ffl ;",
NULL
};
/*
* The above layout corresponds to TeX Typewriter Type and is compatible
* with TeX Text because the position of ligatures is immaterial.
*/
/*
* These are the eight ligature ops, in VPL terms and in METAFONT terms.
*/
const char *vplligops[] =
{
"LIG", "/LIG", "/LIG>", "LIG/", "LIG/>", "/LIG/", "/LIG/>", "/LIG/>>", 0
};
const char *encligops[] =
{
"=:", "|=:", "|=:>", "=:|", "=:|>", "|=:|", "|=:|>", "|=:|>>", 0
};
/*
* For TeX we want to compute a character height that works properly
* with accents. The following list of accents doesn't need to be
* complete.
*/
/*
* We only do this if the xheight has a reasonable value (>50).
*/
const char *accents[] = {"acute", "tilde", "caron", "dieresis", NULL};
char default_codingscheme[] = "Unspecified";
/* end */
|