1
//========================================================================
5
// Copyright 2001-2003 Glyph & Cog, LLC
7
//========================================================================
9
static UnicodeMapRange latin1UnicodeMapRanges[] = {
10
{ 0x000a, 0x000a, 0x0a, 1 },
11
{ 0x000c, 0x000d, 0x0c, 1 },
12
{ 0x0020, 0x007e, 0x20, 1 },
13
{ 0x00a0, 0x00a0, 0x20, 1 },
14
{ 0x00a1, 0x00ac, 0xa1, 1 },
15
{ 0x00ae, 0x00ff, 0xae, 1 },
16
{ 0x010c, 0x010c, 0x43, 1 },
17
{ 0x010d, 0x010d, 0x63, 1 },
18
{ 0x0131, 0x0131, 0x69, 1 },
19
{ 0x0141, 0x0141, 0x4c, 1 },
20
{ 0x0142, 0x0142, 0x6c, 1 },
21
{ 0x0152, 0x0152, 0x4f45, 2 },
22
{ 0x0153, 0x0153, 0x6f65, 2 },
23
{ 0x0160, 0x0160, 0x53, 1 },
24
{ 0x0161, 0x0161, 0x73, 1 },
25
{ 0x0178, 0x0178, 0x59, 1 },
26
{ 0x017d, 0x017d, 0x5a, 1 },
27
{ 0x017e, 0x017e, 0x7a, 1 },
28
{ 0x02c6, 0x02c6, 0x5e, 1 },
29
{ 0x02da, 0x02da, 0xb0, 1 },
30
{ 0x02dc, 0x02dc, 0x7e, 1 },
31
{ 0x2013, 0x2013, 0xad, 1 },
32
{ 0x2014, 0x2014, 0x2d2d, 2 },
33
{ 0x2018, 0x2018, 0x60, 1 },
34
{ 0x2019, 0x2019, 0x27, 1 },
35
{ 0x201a, 0x201a, 0x2c, 1 },
36
{ 0x201c, 0x201c, 0x22, 1 },
37
{ 0x201d, 0x201d, 0x22, 1 },
38
{ 0x201e, 0x201e, 0x2c2c, 2 },
39
{ 0x2022, 0x2022, 0xb7, 1 },
40
{ 0x2026, 0x2026, 0x2e2e2e, 3 },
41
{ 0x2039, 0x2039, 0x3c, 1 },
42
{ 0x203a, 0x203a, 0x3e, 1 },
43
{ 0x2044, 0x2044, 0x2f, 1 },
44
{ 0x2122, 0x2122, 0x544d, 2 },
45
{ 0x2212, 0x2212, 0x2d, 1 },
46
{ 0xf6f9, 0xf6f9, 0x4c, 1 },
47
{ 0xf6fa, 0xf6fa, 0x4f45, 2 },
48
{ 0xf6fc, 0xf6fc, 0xb0, 1 },
49
{ 0xf6fd, 0xf6fd, 0x53, 1 },
50
{ 0xf6fe, 0xf6fe, 0x7e, 1 },
51
{ 0xf6ff, 0xf6ff, 0x5a, 1 },
52
{ 0xf721, 0xf721, 0x21, 1 },
53
{ 0xf724, 0xf724, 0x24, 1 },
54
{ 0xf726, 0xf726, 0x26, 1 },
55
{ 0xf730, 0xf739, 0x30, 1 },
56
{ 0xf73f, 0xf73f, 0x3f, 1 },
57
{ 0xf761, 0xf77a, 0x41, 1 },
58
{ 0xf7a1, 0xf7a2, 0xa1, 1 },
59
{ 0xf7bf, 0xf7bf, 0xbf, 1 },
60
{ 0xf7e0, 0xf7f6, 0xc0, 1 },
61
{ 0xf7f8, 0xf7fe, 0xd8, 1 },
62
{ 0xf7ff, 0xf7ff, 0x59, 1 },
63
{ 0xfb00, 0xfb00, 0x6666, 2 },
64
{ 0xfb01, 0xfb01, 0x6669, 2 },
65
{ 0xfb02, 0xfb02, 0x666c, 2 },
66
{ 0xfb03, 0xfb03, 0x666669, 3 },
67
{ 0xfb04, 0xfb04, 0x66666c, 3 }
69
#define latin1UnicodeMapLen (sizeof(latin1UnicodeMapRanges) / sizeof(UnicodeMapRange))
71
static UnicodeMapRange ascii7UnicodeMapRanges[] = {
72
{ 0x000a, 0x000a, 0x0a, 1 },
73
{ 0x000c, 0x000d, 0x0c, 1 },
74
{ 0x0020, 0x005f, 0x20, 1 },
75
{ 0x0061, 0x007e, 0x61, 1 },
76
{ 0x00a6, 0x00a6, 0x7c, 1 },
77
{ 0x00a9, 0x00a9, 0x286329, 3 },
78
{ 0x00ae, 0x00ae, 0x285229, 3 },
79
{ 0x00b7, 0x00b7, 0x2a, 1 },
80
{ 0x00bc, 0x00bc, 0x312f34, 3 },
81
{ 0x00bd, 0x00bd, 0x312f32, 3 },
82
{ 0x00be, 0x00be, 0x332f34, 3 },
83
{ 0x00c0, 0x00c0, 0x41, 1 },
84
{ 0x00c1, 0x00c1, 0x41, 1 },
85
{ 0x00c2, 0x00c2, 0x41, 1 },
86
{ 0x00c3, 0x00c3, 0x41, 1 },
87
{ 0x00c4, 0x00c4, 0x41, 1 },
88
{ 0x00c5, 0x00c5, 0x41, 1 },
89
{ 0x00c6, 0x00c6, 0x4145, 2 },
90
{ 0x00c7, 0x00c7, 0x43, 1 },
91
{ 0x00c8, 0x00c8, 0x45, 1 },
92
{ 0x00c9, 0x00c9, 0x45, 1 },
93
{ 0x00ca, 0x00ca, 0x45, 1 },
94
{ 0x00cb, 0x00cb, 0x45, 1 },
95
{ 0x00cc, 0x00cc, 0x49, 1 },
96
{ 0x00cd, 0x00cd, 0x49, 1 },
97
{ 0x00ce, 0x00ce, 0x49, 1 },
98
{ 0x00cf, 0x00cf, 0x49, 1 },
99
{ 0x00d1, 0x00d2, 0x4e, 1 },
100
{ 0x00d3, 0x00d3, 0x4f, 1 },
101
{ 0x00d4, 0x00d4, 0x4f, 1 },
102
{ 0x00d5, 0x00d5, 0x4f, 1 },
103
{ 0x00d6, 0x00d6, 0x4f, 1 },
104
{ 0x00d7, 0x00d7, 0x78, 1 },
105
{ 0x00d8, 0x00d8, 0x4f, 1 },
106
{ 0x00d9, 0x00d9, 0x55, 1 },
107
{ 0x00da, 0x00da, 0x55, 1 },
108
{ 0x00db, 0x00db, 0x55, 1 },
109
{ 0x00dc, 0x00dc, 0x55, 1 },
110
{ 0x00dd, 0x00dd, 0x59, 1 },
111
{ 0x00e0, 0x00e0, 0x61, 1 },
112
{ 0x00e1, 0x00e1, 0x61, 1 },
113
{ 0x00e2, 0x00e2, 0x61, 1 },
114
{ 0x00e3, 0x00e3, 0x61, 1 },
115
{ 0x00e4, 0x00e4, 0x61, 1 },
116
{ 0x00e5, 0x00e5, 0x61, 1 },
117
{ 0x00e6, 0x00e6, 0x6165, 2 },
118
{ 0x00e7, 0x00e7, 0x63, 1 },
119
{ 0x00e8, 0x00e8, 0x65, 1 },
120
{ 0x00e9, 0x00e9, 0x65, 1 },
121
{ 0x00ea, 0x00ea, 0x65, 1 },
122
{ 0x00eb, 0x00eb, 0x65, 1 },
123
{ 0x00ec, 0x00ec, 0x69, 1 },
124
{ 0x00ed, 0x00ed, 0x69, 1 },
125
{ 0x00ee, 0x00ee, 0x69, 1 },
126
{ 0x00ef, 0x00ef, 0x69, 1 },
127
{ 0x00f1, 0x00f2, 0x6e, 1 },
128
{ 0x00f3, 0x00f3, 0x6f, 1 },
129
{ 0x00f4, 0x00f4, 0x6f, 1 },
130
{ 0x00f5, 0x00f5, 0x6f, 1 },
131
{ 0x00f6, 0x00f6, 0x6f, 1 },
132
{ 0x00f7, 0x00f7, 0x2f, 1 },
133
{ 0x00f8, 0x00f8, 0x6f, 1 },
134
{ 0x00f9, 0x00f9, 0x75, 1 },
135
{ 0x00fa, 0x00fa, 0x75, 1 },
136
{ 0x00fb, 0x00fb, 0x75, 1 },
137
{ 0x00fc, 0x00fc, 0x75, 1 },
138
{ 0x00fd, 0x00fd, 0x79, 1 },
139
{ 0x00ff, 0x00ff, 0x79, 1 },
140
{ 0x0131, 0x0131, 0x69, 1 },
141
{ 0x0141, 0x0141, 0x4c, 1 },
142
{ 0x0152, 0x0152, 0x4f45, 2 },
143
{ 0x0153, 0x0153, 0x6f65, 2 },
144
{ 0x0160, 0x0160, 0x53, 1 },
145
{ 0x0178, 0x0178, 0x59, 1 },
146
{ 0x017d, 0x017d, 0x5a, 1 },
147
{ 0x2013, 0x2013, 0x2d, 1 },
148
{ 0x2014, 0x2014, 0x2d2d, 2 },
149
{ 0x2018, 0x2018, 0x60, 1 },
150
{ 0x2019, 0x2019, 0x27, 1 },
151
{ 0x201c, 0x201c, 0x22, 1 },
152
{ 0x201d, 0x201d, 0x22, 1 },
153
{ 0x2022, 0x2022, 0x2a, 1 },
154
{ 0x2026, 0x2026, 0x2e2e2e, 3 },
155
{ 0x2122, 0x2122, 0x544d, 2 },
156
{ 0x2212, 0x2212, 0x2d, 1 },
157
{ 0xf6f9, 0xf6f9, 0x4c, 1 },
158
{ 0xf6fa, 0xf6fa, 0x4f45, 2 },
159
{ 0xf6fd, 0xf6fd, 0x53, 1 },
160
{ 0xf6fe, 0xf6fe, 0x7e, 1 },
161
{ 0xf6ff, 0xf6ff, 0x5a, 1 },
162
{ 0xf721, 0xf721, 0x21, 1 },
163
{ 0xf724, 0xf724, 0x24, 1 },
164
{ 0xf726, 0xf726, 0x26, 1 },
165
{ 0xf730, 0xf739, 0x30, 1 },
166
{ 0xf73f, 0xf73f, 0x3f, 1 },
167
{ 0xf761, 0xf77a, 0x41, 1 },
168
{ 0xf7e0, 0xf7e0, 0x41, 1 },
169
{ 0xf7e1, 0xf7e1, 0x41, 1 },
170
{ 0xf7e2, 0xf7e2, 0x41, 1 },
171
{ 0xf7e3, 0xf7e3, 0x41, 1 },
172
{ 0xf7e4, 0xf7e4, 0x41, 1 },
173
{ 0xf7e5, 0xf7e5, 0x41, 1 },
174
{ 0xf7e6, 0xf7e6, 0x4145, 2 },
175
{ 0xf7e7, 0xf7e7, 0x43, 1 },
176
{ 0xf7e8, 0xf7e8, 0x45, 1 },
177
{ 0xf7e9, 0xf7e9, 0x45, 1 },
178
{ 0xf7ea, 0xf7ea, 0x45, 1 },
179
{ 0xf7eb, 0xf7eb, 0x45, 1 },
180
{ 0xf7ec, 0xf7ec, 0x49, 1 },
181
{ 0xf7ed, 0xf7ed, 0x49, 1 },
182
{ 0xf7ee, 0xf7ee, 0x49, 1 },
183
{ 0xf7ef, 0xf7ef, 0x49, 1 },
184
{ 0xf7f1, 0xf7f2, 0x4e, 1 },
185
{ 0xf7f3, 0xf7f3, 0x4f, 1 },
186
{ 0xf7f4, 0xf7f4, 0x4f, 1 },
187
{ 0xf7f5, 0xf7f5, 0x4f, 1 },
188
{ 0xf7f6, 0xf7f6, 0x4f, 1 },
189
{ 0xf7f8, 0xf7f8, 0x4f, 1 },
190
{ 0xf7f9, 0xf7f9, 0x55, 1 },
191
{ 0xf7fa, 0xf7fa, 0x55, 1 },
192
{ 0xf7fb, 0xf7fb, 0x55, 1 },
193
{ 0xf7fc, 0xf7fc, 0x55, 1 },
194
{ 0xf7fd, 0xf7fd, 0x59, 1 },
195
{ 0xf7ff, 0xf7ff, 0x59, 1 },
196
{ 0xfb00, 0xfb00, 0x6666, 2 },
197
{ 0xfb01, 0xfb01, 0x6669, 2 },
198
{ 0xfb02, 0xfb02, 0x666c, 2 },
199
{ 0xfb03, 0xfb03, 0x666669, 3 },
200
{ 0xfb04, 0xfb04, 0x66666c, 3 }
202
#define ascii7UnicodeMapLen (sizeof(ascii7UnicodeMapRanges) / sizeof(UnicodeMapRange))
204
static UnicodeMapRange symbolUnicodeMapRanges[] = {
205
{ 0x0020, 0x0021, 0x20, 1 },
206
{ 0x0023, 0x0023, 0x23, 1 },
207
{ 0x0025, 0x0026, 0x25, 1 },
208
{ 0x0028, 0x0029, 0x28, 1 },
209
{ 0x002b, 0x002c, 0x2b, 1 },
210
{ 0x002e, 0x003f, 0x2e, 1 },
211
{ 0x005b, 0x005b, 0x5b, 1 },
212
{ 0x005d, 0x005d, 0x5d, 1 },
213
{ 0x005f, 0x005f, 0x5f, 1 },
214
{ 0x007b, 0x007d, 0x7b, 1 },
215
{ 0x00ac, 0x00ac, 0xd8, 1 },
216
{ 0x00b0, 0x00b1, 0xb0, 1 },
217
{ 0x00b5, 0x00b5, 0x6d, 1 },
218
{ 0x00d7, 0x00d7, 0xb4, 1 },
219
{ 0x00f7, 0x00f7, 0xb8, 1 },
220
{ 0x0192, 0x0192, 0xa6, 1 },
221
{ 0x0391, 0x0392, 0x41, 1 },
222
{ 0x0393, 0x0393, 0x47, 1 },
223
{ 0x0395, 0x0395, 0x45, 1 },
224
{ 0x0396, 0x0396, 0x5a, 1 },
225
{ 0x0397, 0x0397, 0x48, 1 },
226
{ 0x0398, 0x0398, 0x51, 1 },
227
{ 0x0399, 0x0399, 0x49, 1 },
228
{ 0x039a, 0x039d, 0x4b, 1 },
229
{ 0x039e, 0x039e, 0x58, 1 },
230
{ 0x039f, 0x03a0, 0x4f, 1 },
231
{ 0x03a1, 0x03a1, 0x52, 1 },
232
{ 0x03a3, 0x03a5, 0x53, 1 },
233
{ 0x03a6, 0x03a6, 0x46, 1 },
234
{ 0x03a7, 0x03a7, 0x43, 1 },
235
{ 0x03a8, 0x03a8, 0x59, 1 },
236
{ 0x03b1, 0x03b2, 0x61, 1 },
237
{ 0x03b3, 0x03b3, 0x67, 1 },
238
{ 0x03b4, 0x03b5, 0x64, 1 },
239
{ 0x03b6, 0x03b6, 0x7a, 1 },
240
{ 0x03b7, 0x03b7, 0x68, 1 },
241
{ 0x03b8, 0x03b8, 0x71, 1 },
242
{ 0x03b9, 0x03b9, 0x69, 1 },
243
{ 0x03ba, 0x03bb, 0x6b, 1 },
244
{ 0x03bd, 0x03bd, 0x6e, 1 },
245
{ 0x03be, 0x03be, 0x78, 1 },
246
{ 0x03bf, 0x03c0, 0x6f, 1 },
247
{ 0x03c1, 0x03c1, 0x72, 1 },
248
{ 0x03c2, 0x03c2, 0x56, 1 },
249
{ 0x03c3, 0x03c5, 0x73, 1 },
250
{ 0x03c6, 0x03c6, 0x66, 1 },
251
{ 0x03c7, 0x03c7, 0x63, 1 },
252
{ 0x03c8, 0x03c8, 0x79, 1 },
253
{ 0x03c9, 0x03c9, 0x77, 1 },
254
{ 0x03d1, 0x03d1, 0x4a, 1 },
255
{ 0x03d2, 0x03d2, 0xa1, 1 },
256
{ 0x03d5, 0x03d5, 0x6a, 1 },
257
{ 0x03d6, 0x03d6, 0x76, 1 },
258
{ 0x2022, 0x2022, 0xb7, 1 },
259
{ 0x2026, 0x2026, 0xbc, 1 },
260
{ 0x2032, 0x2032, 0xa2, 1 },
261
{ 0x2033, 0x2033, 0xb2, 1 },
262
{ 0x2044, 0x2044, 0xa4, 1 },
263
{ 0x2111, 0x2111, 0xc1, 1 },
264
{ 0x2118, 0x2118, 0xc3, 1 },
265
{ 0x211c, 0x211c, 0xc2, 1 },
266
{ 0x2126, 0x2126, 0x57, 1 },
267
{ 0x2135, 0x2135, 0xc0, 1 },
268
{ 0x2190, 0x2193, 0xac, 1 },
269
{ 0x2194, 0x2194, 0xab, 1 },
270
{ 0x21b5, 0x21b5, 0xbf, 1 },
271
{ 0x21d0, 0x21d3, 0xdc, 1 },
272
{ 0x21d4, 0x21d4, 0xdb, 1 },
273
{ 0x2200, 0x2200, 0x22, 1 },
274
{ 0x2202, 0x2202, 0xb6, 1 },
275
{ 0x2203, 0x2203, 0x24, 1 },
276
{ 0x2205, 0x2205, 0xc6, 1 },
277
{ 0x2206, 0x2206, 0x44, 1 },
278
{ 0x2207, 0x2207, 0xd1, 1 },
279
{ 0x2208, 0x2209, 0xce, 1 },
280
{ 0x220b, 0x220b, 0x27, 1 },
281
{ 0x220f, 0x220f, 0xd5, 1 },
282
{ 0x2211, 0x2211, 0xe5, 1 },
283
{ 0x2212, 0x2212, 0x2d, 1 },
284
{ 0x2217, 0x2217, 0x2a, 1 },
285
{ 0x221a, 0x221a, 0xd6, 1 },
286
{ 0x221d, 0x221d, 0xb5, 1 },
287
{ 0x221e, 0x221e, 0xa5, 1 },
288
{ 0x2220, 0x2220, 0xd0, 1 },
289
{ 0x2227, 0x2228, 0xd9, 1 },
290
{ 0x2229, 0x222a, 0xc7, 1 },
291
{ 0x222b, 0x222b, 0xf2, 1 },
292
{ 0x2234, 0x2234, 0x5c, 1 },
293
{ 0x223c, 0x223c, 0x7e, 1 },
294
{ 0x2245, 0x2245, 0x40, 1 },
295
{ 0x2248, 0x2248, 0xbb, 1 },
296
{ 0x2260, 0x2261, 0xb9, 1 },
297
{ 0x2264, 0x2264, 0xa3, 1 },
298
{ 0x2265, 0x2265, 0xb3, 1 },
299
{ 0x2282, 0x2282, 0xcc, 1 },
300
{ 0x2283, 0x2283, 0xc9, 1 },
301
{ 0x2284, 0x2284, 0xcb, 1 },
302
{ 0x2286, 0x2286, 0xcd, 1 },
303
{ 0x2287, 0x2287, 0xca, 1 },
304
{ 0x2295, 0x2295, 0xc5, 1 },
305
{ 0x2297, 0x2297, 0xc4, 1 },
306
{ 0x22a5, 0x22a5, 0x5e, 1 },
307
{ 0x22c5, 0x22c5, 0xd7, 1 },
308
{ 0x2320, 0x2320, 0xf3, 1 },
309
{ 0x2321, 0x2321, 0xf5, 1 },
310
{ 0x2329, 0x2329, 0xe1, 1 },
311
{ 0x232a, 0x232a, 0xf1, 1 },
312
{ 0x25ca, 0x25ca, 0xe0, 1 },
313
{ 0x2660, 0x2660, 0xaa, 1 },
314
{ 0x2663, 0x2663, 0xa7, 1 },
315
{ 0x2665, 0x2665, 0xa9, 1 },
316
{ 0x2666, 0x2666, 0xa8, 1 },
317
{ 0xf6d9, 0xf6d9, 0xd3, 1 },
318
{ 0xf6da, 0xf6da, 0xd2, 1 },
319
{ 0xf6db, 0xf6db, 0xd4, 1 },
320
{ 0xf8e5, 0xf8e5, 0x60, 1 },
321
{ 0xf8e6, 0xf8e7, 0xbd, 1 },
322
{ 0xf8e8, 0xf8ea, 0xe2, 1 },
323
{ 0xf8eb, 0xf8f4, 0xe6, 1 },
324
{ 0xf8f5, 0xf8f5, 0xf4, 1 },
325
{ 0xf8f6, 0xf8fe, 0xf6, 1 }
327
#define symbolUnicodeMapLen (sizeof(symbolUnicodeMapRanges) / sizeof(UnicodeMapRange))
329
static UnicodeMapRange zapfDingbatsUnicodeMapRanges[] = {
330
{ 0x0020, 0x0020, 0x20, 1 },
331
{ 0x2192, 0x2192, 0xd5, 1 },
332
{ 0x2194, 0x2195, 0xd6, 1 },
333
{ 0x2460, 0x2469, 0xac, 1 },
334
{ 0x25a0, 0x25a0, 0x6e, 1 },
335
{ 0x25b2, 0x25b2, 0x73, 1 },
336
{ 0x25bc, 0x25bc, 0x74, 1 },
337
{ 0x25c6, 0x25c6, 0x75, 1 },
338
{ 0x25cf, 0x25cf, 0x6c, 1 },
339
{ 0x25d7, 0x25d7, 0x77, 1 },
340
{ 0x2605, 0x2605, 0x48, 1 },
341
{ 0x260e, 0x260e, 0x25, 1 },
342
{ 0x261b, 0x261b, 0x2a, 1 },
343
{ 0x261e, 0x261e, 0x2b, 1 },
344
{ 0x2660, 0x2660, 0xab, 1 },
345
{ 0x2663, 0x2663, 0xa8, 1 },
346
{ 0x2665, 0x2665, 0xaa, 1 },
347
{ 0x2666, 0x2666, 0xa9, 1 },
348
{ 0x2701, 0x2704, 0x21, 1 },
349
{ 0x2706, 0x2709, 0x26, 1 },
350
{ 0x270c, 0x2727, 0x2c, 1 },
351
{ 0x2729, 0x274b, 0x49, 1 },
352
{ 0x274d, 0x274d, 0x6d, 1 },
353
{ 0x274f, 0x2752, 0x6f, 1 },
354
{ 0x2756, 0x2756, 0x76, 1 },
355
{ 0x2758, 0x275e, 0x78, 1 },
356
{ 0x2761, 0x2767, 0xa1, 1 },
357
{ 0x2776, 0x2794, 0xb6, 1 },
358
{ 0x2798, 0x27af, 0xd8, 1 },
359
{ 0x27b1, 0x27be, 0xf1, 1 }
361
#define zapfDingbatsUnicodeMapLen (sizeof(zapfDingbatsUnicodeMapRanges) / sizeof(UnicodeMapRange))