1f80a6dcdSmrg/*
2f80a6dcdSmrg * DviChar.c
3f80a6dcdSmrg *
4f80a6dcdSmrg * Map DVI (ditrof output) character names to
5f80a6dcdSmrg * font indexes and back
6f80a6dcdSmrg */
700994698Smrg#ifdef HAVE_CONFIG_H
800994698Smrg# include "config.h"
900994698Smrg#endif
10f80a6dcdSmrg
1100994698Smrg#include   <X11/Intrinsic.h>
1200994698Smrg#include   "DviChar.h"
13f80a6dcdSmrg
1400994698Smrg#define allocHash()	((DviCharNameHash *) XtMalloc (sizeof (DviCharNameHash)))
15f80a6dcdSmrg
16f80a6dcdSmrgstruct map_list {
1700994698Smrg    struct map_list *next;
1800994698Smrg    DviCharNameMap *map;
19f80a6dcdSmrg};
20f80a6dcdSmrg
2100994698Smrgstatic struct map_list *world;
22f80a6dcdSmrg
2300994698Smrgstatic int      standard_maps_loaded = 0;
2400994698Smrgstatic void     load_standard_maps(void);
2500994698Smrgstatic int      hash_name(const char *name);
2600994698Smrgstatic void     dispose_hash(DviCharNameMap *map);
2700994698Smrgstatic void     compute_hash(DviCharNameMap *map);
28f80a6dcdSmrg
29f80a6dcdSmrgDviCharNameMap *
3000994698SmrgDviFindMap(const char *encoding)
31f80a6dcdSmrg{
3200994698Smrg    if (!standard_maps_loaded)
3300994698Smrg        load_standard_maps();
3400994698Smrg    for (struct map_list * m = world; m; m = m->next) {
3500994698Smrg        if (!strcmp(m->map->encoding, encoding))
3600994698Smrg            return m->map;
3700994698Smrg    }
3800994698Smrg    return NULL;
39f80a6dcdSmrg}
40f80a6dcdSmrg
41f80a6dcdSmrgvoid
4200994698SmrgDviRegisterMap(DviCharNameMap *map)
43f80a6dcdSmrg{
4400994698Smrg    struct map_list *m;
45f80a6dcdSmrg
4600994698Smrg    if (!standard_maps_loaded)
4700994698Smrg        load_standard_maps();
4800994698Smrg    for (m = world; m; m = m->next) {
4900994698Smrg        if (!strcmp(m->map->encoding, map->encoding))
5000994698Smrg            break;
5100994698Smrg    }
5200994698Smrg    if (!m) {
5300994698Smrg        m = (struct map_list *) XtMalloc(sizeof *m);
5400994698Smrg        m->next = world;
5500994698Smrg        world = m;
5600994698Smrg    }
5700994698Smrg    dispose_hash(map);
5800994698Smrg    m->map = map;
5900994698Smrg    compute_hash(map);
60f80a6dcdSmrg}
61f80a6dcdSmrg
62f80a6dcdSmrgstatic void
6300994698Smrgdispose_hash(DviCharNameMap *map)
64f80a6dcdSmrg{
6500994698Smrg    DviCharNameHash **buckets = map->buckets;
66f80a6dcdSmrg
6700994698Smrg    for (int i = 0; i < DVI_HASH_SIZE; i++) {
6800994698Smrg        DviCharNameHash *next;
698c7c3c7eSmrg
7000994698Smrg        for (DviCharNameHash * h = buckets[i]; h; h = next) {
7100994698Smrg            next = h->next;
7200994698Smrg            XtFree((char *) h);
7300994698Smrg        }
7400994698Smrg    }
75f80a6dcdSmrg}
76f80a6dcdSmrg
77f80a6dcdSmrgstatic int
7800994698Smrghash_name(const char *name)
79f80a6dcdSmrg{
8000994698Smrg    int i = 0;
81f80a6dcdSmrg
8200994698Smrg    while (*name)
8300994698Smrg        i = (i << 1) ^ *name++;
8400994698Smrg    if (i < 0)
8500994698Smrg        i = -i;
8600994698Smrg    return i;
87f80a6dcdSmrg}
88f80a6dcdSmrg
89f80a6dcdSmrgstatic void
9000994698Smrgcompute_hash(DviCharNameMap *map)
91f80a6dcdSmrg{
9200994698Smrg    DviCharNameHash **buckets = map->buckets;
93f80a6dcdSmrg
9400994698Smrg    for (int i = 0; i < DVI_HASH_SIZE; i++) {
9500994698Smrg        buckets[i] = NULL;
9600994698Smrg    }
9700994698Smrg    for (int c = 0; c < DVI_MAP_SIZE; c++) {
9800994698Smrg        for (int s = 0; s < DVI_MAX_SYNONYMS; s++) {
9900994698Smrg            DviCharNameHash *h;
10000994698Smrg            int i;
1018c7c3c7eSmrg
10200994698Smrg            if (!map->dvi_names[c][s])
10300994698Smrg                break;
10400994698Smrg            i = hash_name(map->dvi_names[c][s]) % DVI_HASH_SIZE;
10500994698Smrg            h = allocHash();
10600994698Smrg            h->next = buckets[i];
10700994698Smrg            buckets[i] = h;
10800994698Smrg            h->name = map->dvi_names[c][s];
10900994698Smrg            h->position = c;
11000994698Smrg        }
11100994698Smrg    }
112f80a6dcdSmrg}
113f80a6dcdSmrg
114f80a6dcdSmrgint
11500994698SmrgDviCharIndex(DviCharNameMap *map, const char *name)
116f80a6dcdSmrg{
11700994698Smrg    int i = hash_name(name) % DVI_HASH_SIZE;
118f80a6dcdSmrg
11900994698Smrg    for (DviCharNameHash *h = map->buckets[i]; h; h = h->next) {
12000994698Smrg        if (!strcmp(h->name, name))
12100994698Smrg            return h->position;
12200994698Smrg    }
12300994698Smrg    return -1;
124f80a6dcdSmrg}
125f80a6dcdSmrg
126f80a6dcdSmrgstatic DviCharNameMap ISO8859_1_map = {
12700994698Smrg    "iso8859-1",
12800994698Smrg    0,
12900994698Smrg    {
13000994698Smrg     {NULL, /* 0 */ },
13100994698Smrg     {NULL, /* 1 */ },
13200994698Smrg     {NULL, /* 2 */ },
13300994698Smrg     {NULL, /* 3 */ },
13400994698Smrg     {NULL, /* 4 */ },
13500994698Smrg     {NULL, /* 5 */ },
13600994698Smrg     {NULL, /* 6 */ },
13700994698Smrg     {NULL, /* 7 */ },
13800994698Smrg     {NULL, /* 8 */ },
13900994698Smrg     {NULL, /* 9 */ },
14000994698Smrg     {NULL, /* 10 */ },
14100994698Smrg     {NULL, /* 11 */ },
14200994698Smrg     {NULL, /* 12 */ },
14300994698Smrg     {NULL, /* 13 */ },
14400994698Smrg     {NULL, /* 14 */ },
14500994698Smrg     {NULL, /* 15 */ },
14600994698Smrg     {NULL, /* 16 */ },
14700994698Smrg     {NULL, /* 17 */ },
14800994698Smrg     {NULL, /* 18 */ },
14900994698Smrg     {NULL, /* 19 */ },
15000994698Smrg     {NULL, /* 20 */ },
15100994698Smrg     {NULL, /* 21 */ },
15200994698Smrg     {NULL, /* 22 */ },
15300994698Smrg     {NULL, /* 23 */ },
15400994698Smrg     {NULL, /* 24 */ },
15500994698Smrg     {NULL, /* 25 */ },
15600994698Smrg     {NULL, /* 26 */ },
15700994698Smrg     {NULL, /* 27 */ },
15800994698Smrg     {NULL, /* 28 */ },
15900994698Smrg     {NULL, /* 29 */ },
16000994698Smrg     {NULL, /* 30 */ },
16100994698Smrg     {NULL, /* 31 */ },
16200994698Smrg     {NULL, /* 32 */ },
16300994698Smrg     {"!", /* 33 */ },
16400994698Smrg     {"\"", /* 34 */ },
16500994698Smrg     {"#", /* 35 */ },
16600994698Smrg     {"$", /* 36 */ },
16700994698Smrg     {"%", /* 37 */ },
16800994698Smrg     {"&", /* 38 */ },
16900994698Smrg     {"'", /* 39 */ },
17000994698Smrg     {"(", /* 40 */ },
17100994698Smrg     {")", /* 41 */ },
17200994698Smrg     {"*", /* 42 */ },
17300994698Smrg     {"+", /* 43 */ },
17400994698Smrg     {",", /* 44 */ },
17500994698Smrg     {"-", "\\-", /* 45 */ },
17600994698Smrg     {".", /* 46 */ },
17700994698Smrg     {"/", "sl", /* 47 */ },
17800994698Smrg     {"0", /* 48 */ },
17900994698Smrg     {"1", /* 49 */ },
18000994698Smrg     {"2", /* 50 */ },
18100994698Smrg     {"3", /* 51 */ },
18200994698Smrg     {"4", /* 52 */ },
18300994698Smrg     {"5", /* 53 */ },
18400994698Smrg     {"6", /* 54 */ },
18500994698Smrg     {"7", /* 55 */ },
18600994698Smrg     {"8", /* 56 */ },
18700994698Smrg     {"9", /* 57 */ },
18800994698Smrg     {":", /* 58 */ },
18900994698Smrg     {";", /* 59 */ },
19000994698Smrg     {"<", /* 60 */ },
19100994698Smrg     {"=", "eq", /* 61 */ },
19200994698Smrg     {">", /* 62 */ },
19300994698Smrg     {"?", /* 63 */ },
19400994698Smrg     {"@", /* 64 */ },
19500994698Smrg     {"A", /* 65 */ },
19600994698Smrg     {"B", /* 66 */ },
19700994698Smrg     {"C", /* 67 */ },
19800994698Smrg     {"D", /* 68 */ },
19900994698Smrg     {"E", /* 69 */ },
20000994698Smrg     {"F", /* 70 */ },
20100994698Smrg     {"G", /* 71 */ },
20200994698Smrg     {"H", /* 72 */ },
20300994698Smrg     {"I", /* 73 */ },
20400994698Smrg     {"J", /* 74 */ },
20500994698Smrg     {"K", /* 75 */ },
20600994698Smrg     {"L", /* 76 */ },
20700994698Smrg     {"M", /* 77 */ },
20800994698Smrg     {"N", /* 78 */ },
20900994698Smrg     {"O", /* 79 */ },
21000994698Smrg     {"P", /* 80 */ },
21100994698Smrg     {"Q", /* 81 */ },
21200994698Smrg     {"R", /* 82 */ },
21300994698Smrg     {"S", /* 83 */ },
21400994698Smrg     {"T", /* 84 */ },
21500994698Smrg     {"U", /* 85 */ },
21600994698Smrg     {"V", /* 86 */ },
21700994698Smrg     {"W", /* 87 */ },
21800994698Smrg     {"X", /* 88 */ },
21900994698Smrg     {"Y", /* 89 */ },
22000994698Smrg     {"Z", /* 90 */ },
22100994698Smrg     {"[", /* 91 */ },
22200994698Smrg     {"\\", /* 92 */ },
22300994698Smrg     {"]", /* 93 */ },
22400994698Smrg     {"a^", /* 94 */ },
22500994698Smrg     {"_", "ru", "ul", /* 95 */ },
22600994698Smrg     {"`", /* 96 */ },
22700994698Smrg     {"a", /* 97 */ },
22800994698Smrg     {"b", /* 98 */ },
22900994698Smrg     {"c", /* 99 */ },
23000994698Smrg     {"d", /* 100 */ },
23100994698Smrg     {"e", /* 101 */ },
23200994698Smrg     {"f", /* 102 */ },
23300994698Smrg     {"g", /* 103 */ },
23400994698Smrg     {"h", /* 104 */ },
23500994698Smrg     {"i", /* 105 */ },
23600994698Smrg     {"j", /* 106 */ },
23700994698Smrg     {"k", /* 107 */ },
23800994698Smrg     {"l", /* 108 */ },
23900994698Smrg     {"m", /* 109 */ },
24000994698Smrg     {"n", /* 110 */ },
24100994698Smrg     {"o", /* 111 */ },
24200994698Smrg     {"p", /* 112 */ },
24300994698Smrg     {"q", /* 113 */ },
24400994698Smrg     {"r", /* 114 */ },
24500994698Smrg     {"s", /* 115 */ },
24600994698Smrg     {"t", /* 116 */ },
24700994698Smrg     {"u", /* 117 */ },
24800994698Smrg     {"v", /* 118 */ },
24900994698Smrg     {"w", /* 119 */ },
25000994698Smrg     {"x", /* 120 */ },
25100994698Smrg     {"y", /* 121 */ },
25200994698Smrg     {"z", /* 122 */ },
25300994698Smrg     {"{", /* 123 */ },
25400994698Smrg     {"|", "or" /* 124 */ },
25500994698Smrg     {"}", /* 125 */ },
25600994698Smrg     {"a~", "ap" /* 126 */ },
25700994698Smrg     {NULL, /* 127 */ },
25800994698Smrg     {NULL, /* 128 */ },
25900994698Smrg     {NULL, /* 129 */ },
26000994698Smrg     {NULL, /* 130 */ },
26100994698Smrg     {NULL, /* 131 */ },
26200994698Smrg     {NULL, /* 132 */ },
26300994698Smrg     {NULL, /* 133 */ },
26400994698Smrg     {NULL, /* 134 */ },
26500994698Smrg     {NULL, /* 135 */ },
26600994698Smrg     {NULL, /* 136 */ },
26700994698Smrg     {NULL, /* 137 */ },
26800994698Smrg     {NULL, /* 138 */ },
26900994698Smrg     {NULL, /* 139 */ },
27000994698Smrg     {NULL, /* 140 */ },
27100994698Smrg     {NULL, /* 141 */ },
27200994698Smrg     {NULL, /* 142 */ },
27300994698Smrg     {NULL, /* 143 */ },
27400994698Smrg     {NULL, /* 144 */ },
27500994698Smrg     {NULL, /* 145 */ },
27600994698Smrg     {NULL, /* 146 */ },
27700994698Smrg     {NULL, /* 147 */ },
27800994698Smrg     {NULL, /* 148 */ },
27900994698Smrg     {NULL, /* 149 */ },
28000994698Smrg     {NULL, /* 150 */ },
28100994698Smrg     {NULL, /* 151 */ },
28200994698Smrg     {NULL, /* 152 */ },
28300994698Smrg     {NULL, /* 153 */ },
28400994698Smrg     {NULL, /* 154 */ },
28500994698Smrg     {NULL, /* 155 */ },
28600994698Smrg     {NULL, /* 156 */ },
28700994698Smrg     {NULL, /* 157 */ },
28800994698Smrg     {NULL, /* 158 */ },
28900994698Smrg     {NULL, /* 159 */ },
29000994698Smrg     {NULL, /* 160 */ },
29100994698Smrg     {"I!", /* 161 */ },
29200994698Smrg     {"ct", /* 162 */ },
29300994698Smrg     {"po", /* 163 */ },
29400994698Smrg     {"cu", /* 164 */ },
29500994698Smrg     {"$J", /* 165 */ },
29600994698Smrg     {NULL, /* 166 */ },
29700994698Smrg     {"sc", /* 167 */ },
29800994698Smrg     {NULL, /* 168 */ },
29900994698Smrg     {"co", /* 169 */ },
30000994698Smrg     {NULL, /* 170 */ },
30100994698Smrg     {"d<", /* 171 */ },
30200994698Smrg     {"no", /* 172 */ },
30300994698Smrg     {"hy", /* 173 */ },
30400994698Smrg     {"rg", /* 174 */ },
30500994698Smrg     {"ma", /* 175 */ },
30600994698Smrg     {"de", /* 176 */ },
30700994698Smrg     {"+-", /* 177 */ },
30800994698Smrg     {NULL, /* 178 */ },
30900994698Smrg     {NULL, /* 179 */ },
31000994698Smrg     {"aa", /* 180 */ },
31100994698Smrg     {"*m", /* 181 */ },
31200994698Smrg     {"pp", /* 182 */ },
31300994698Smrg     {NULL, /* 183 */ },
31400994698Smrg     {"cd", /* 184 */ },
31500994698Smrg     {NULL, /* 185 */ },
31600994698Smrg     {NULL, /* 186 */ },
31700994698Smrg     {"d>", /* 187 */ },
31800994698Smrg     {"14", /* 188 */ },
31900994698Smrg     {"12", /* 189 */ },
32000994698Smrg     {"34", /* 190 */ },
32100994698Smrg     {"I?", /* 191 */ },
32200994698Smrg     {NULL, /* 192 */ },
32300994698Smrg     {NULL, /* 193 */ },
32400994698Smrg     {NULL, /* 194 */ },
32500994698Smrg     {NULL, /* 195 */ },
32600994698Smrg     {NULL, /* 196 */ },
32700994698Smrg     {NULL, /* 197 */ },
32800994698Smrg     {"AE", /* 198 */ },
32900994698Smrg     {NULL, /* 199 */ },
33000994698Smrg     {NULL, /* 200 */ },
33100994698Smrg     {NULL, /* 201 */ },
33200994698Smrg     {NULL, /* 202 */ },
33300994698Smrg     {NULL, /* 203 */ },
33400994698Smrg     {NULL, /* 204 */ },
33500994698Smrg     {NULL, /* 205 */ },
33600994698Smrg     {NULL, /* 206 */ },
33700994698Smrg     {NULL, /* 207 */ },
33800994698Smrg     {NULL, /* 208 */ },
33900994698Smrg     {NULL, /* 209 */ },
34000994698Smrg     {NULL, /* 210 */ },
34100994698Smrg     {NULL, /* 211 */ },
34200994698Smrg     {NULL, /* 212 */ },
34300994698Smrg     {NULL, /* 213 */ },
34400994698Smrg     {NULL, /* 214 */ },
34500994698Smrg     {"mu", /* 215 */ },
34600994698Smrg     {"O/", /* 216 */ },
34700994698Smrg     {NULL, /* 217 */ },
34800994698Smrg     {NULL, /* 218 */ },
34900994698Smrg     {NULL, /* 219 */ },
35000994698Smrg     {NULL, /* 220 */ },
35100994698Smrg     {NULL, /* 221 */ },
35200994698Smrg     {NULL, /* 222 */ },
35300994698Smrg     {"ss", /* 223 */ },
35400994698Smrg     {NULL, /* 224 */ },
35500994698Smrg     {NULL, /* 225 */ },
35600994698Smrg     {NULL, /* 226 */ },
35700994698Smrg     {NULL, /* 227 */ },
35800994698Smrg     {NULL, /* 228 */ },
35900994698Smrg     {NULL, /* 229 */ },
36000994698Smrg     {"ae", /* 230 */ },
36100994698Smrg     {NULL, /* 231 */ },
36200994698Smrg     {NULL, /* 232 */ },
36300994698Smrg     {NULL, /* 233 */ },
36400994698Smrg     {NULL, /* 234 */ },
36500994698Smrg     {NULL, /* 235 */ },
36600994698Smrg     {NULL, /* 236 */ },
36700994698Smrg     {NULL, /* 237 */ },
36800994698Smrg     {NULL, /* 238 */ },
36900994698Smrg     {NULL, /* 239 */ },
37000994698Smrg     {NULL, /* 240 */ },
37100994698Smrg     {NULL, /* 241 */ },
37200994698Smrg     {NULL, /* 242 */ },
37300994698Smrg     {NULL, /* 243 */ },
37400994698Smrg     {NULL, /* 244 */ },
37500994698Smrg     {NULL, /* 245 */ },
37600994698Smrg     {NULL, /* 246 */ },
37700994698Smrg     {NULL, /* 247 */ },
37800994698Smrg     {NULL, /* 248 */ },
37900994698Smrg     {NULL, /* 249 */ },
38000994698Smrg     {NULL, /* 250 */ },
38100994698Smrg     {NULL, /* 251 */ },
38200994698Smrg     {NULL, /* 252 */ },
38300994698Smrg     {NULL, /* 253 */ },
38400994698Smrg     {NULL, /* 254 */ },
38500994698Smrg     {NULL, /* 255 */ },
38600994698Smrg     },
38700994698Smrg    {
38800994698Smrg     {"fi", "fi",},
38900994698Smrg     {"fl", "fl",},
39000994698Smrg     {"ff", "ff",},
39100994698Smrg     {"Fi", "ffi",},
39200994698Smrg     {"Fl", "ffl",},
39300994698Smrg     {NULL, NULL,},
39400994698Smrg     },
39500994698Smrg    {}
396f80a6dcdSmrg};
397f80a6dcdSmrg
398f80a6dcdSmrgstatic DviCharNameMap Adobe_Symbol_map = {
39900994698Smrg    "adobe-fontspecific",
40000994698Smrg    1,
40100994698Smrg    {
40200994698Smrg     {NULL, /* 0 */ },
40300994698Smrg     {NULL, /* 1 */ },
40400994698Smrg     {NULL, /* 2 */ },
40500994698Smrg     {NULL, /* 3 */ },
40600994698Smrg     {NULL, /* 4 */ },
40700994698Smrg     {NULL, /* 5 */ },
40800994698Smrg     {NULL, /* 6 */ },
40900994698Smrg     {NULL, /* 7 */ },
41000994698Smrg     {NULL, /* 8 */ },
41100994698Smrg     {NULL, /* 9 */ },
41200994698Smrg     {NULL, /* 10 */ },
41300994698Smrg     {NULL, /* 11 */ },
41400994698Smrg     {NULL, /* 12 */ },
41500994698Smrg     {NULL, /* 13 */ },
41600994698Smrg     {NULL, /* 14 */ },
41700994698Smrg     {NULL, /* 15 */ },
41800994698Smrg     {NULL, /* 16 */ },
41900994698Smrg     {NULL, /* 17 */ },
42000994698Smrg     {NULL, /* 18 */ },
42100994698Smrg     {NULL, /* 19 */ },
42200994698Smrg     {NULL, /* 20 */ },
42300994698Smrg     {NULL, /* 21 */ },
42400994698Smrg     {NULL, /* 22 */ },
42500994698Smrg     {NULL, /* 23 */ },
42600994698Smrg     {NULL, /* 24 */ },
42700994698Smrg     {NULL, /* 25 */ },
42800994698Smrg     {NULL, /* 26 */ },
42900994698Smrg     {NULL, /* 27 */ },
43000994698Smrg     {NULL, /* 28 */ },
43100994698Smrg     {NULL, /* 29 */ },
43200994698Smrg     {NULL, /* 30 */ },
43300994698Smrg     {NULL, /* 31 */ },
43400994698Smrg     {NULL, /* 32 */ },
43500994698Smrg     {"!", /* 33 */ },
43600994698Smrg     {"fa", /* 34 */ },
43700994698Smrg     {"#", /* 35 */ },
43800994698Smrg     {"te", /* 36 */ },
43900994698Smrg     {"%", /* 37 */ },
44000994698Smrg     {"&", /* 38 */ },
44100994698Smrg     {"cm", /* 39 */ },
44200994698Smrg     {"(", /* 40 */ },
44300994698Smrg     {")", /* 41 */ },
44400994698Smrg     {"**", /* 42 */ },
44500994698Smrg     {"+", "pl", /* 43 */ },
44600994698Smrg     {",", /* 44 */ },
44700994698Smrg     {"-", "mi", "\\-", /* 45 */ },
44800994698Smrg     {".", /* 46 */ },
44900994698Smrg     {"/", "sl", /* 47 */ },
45000994698Smrg     {"0", /* 48 */ },
45100994698Smrg     {"1", /* 49 */ },
45200994698Smrg     {"2", /* 50 */ },
45300994698Smrg     {"3", /* 51 */ },
45400994698Smrg     {"4", /* 52 */ },
45500994698Smrg     {"5", /* 53 */ },
45600994698Smrg     {"6", /* 54 */ },
45700994698Smrg     {"7", /* 55 */ },
45800994698Smrg     {"8", /* 56 */ },
45900994698Smrg     {"9", /* 57 */ },
46000994698Smrg     {":", /* 58 */ },
46100994698Smrg     {";", /* 59 */ },
46200994698Smrg     {"<", /* 60 */ },
46300994698Smrg     {"=", "eq", /* 61 */ },
46400994698Smrg     {">", /* 62 */ },
46500994698Smrg     {"?", /* 63 */ },
46600994698Smrg     {"=~", /* 64 */ },
46700994698Smrg     {"*A", /* 65 */ },
46800994698Smrg     {"*B", /* 66 */ },
46900994698Smrg     {"*C", /* 67 */ },
47000994698Smrg     {"*D", /* 68 */ },
47100994698Smrg     {"*E", /* 69 */ },
47200994698Smrg     {"*F", /* 70 */ },
47300994698Smrg     {"*G", /* 71 */ },
47400994698Smrg     {"*Y", /* 72 */ },
47500994698Smrg     {"*I", /* 73 */ },
47600994698Smrg     {NULL, /* 74 */ },
47700994698Smrg     {"*K", /* 75 */ },
47800994698Smrg     {"*L", /* 76 */ },
47900994698Smrg     {"*M", /* 77 */ },
48000994698Smrg     {"*N", /* 78 */ },
48100994698Smrg     {"*O", /* 79 */ },
48200994698Smrg     {"*P", /* 80 */ },
48300994698Smrg     {"*H", /* 81 */ },
48400994698Smrg     {"*R", /* 82 */ },
48500994698Smrg     {"*S", /* 83 */ },
48600994698Smrg     {"*T", /* 84 */ },
48700994698Smrg     {"*U", /* 85 */ },
48800994698Smrg     {"ts", /* 86 */ },
48900994698Smrg     {"*W", /* 87 */ },
49000994698Smrg     {"*C", /* 88 */ },
49100994698Smrg     {"*Q", /* 89 */ },
49200994698Smrg     {"*Z", /* 90 */ },
49300994698Smrg     {"[", /* 91 */ },
49400994698Smrg     {"tf", /* 92 */ },
49500994698Smrg     {"]", /* 93 */ },
49600994698Smrg     {"bt", /* 94 */ },
49700994698Smrg     {"ul", /* 95 */ },
49800994698Smrg     {"rn", /* 96 */ },
49900994698Smrg     {"*a", /* 97 */ },
50000994698Smrg     {"*b", /* 98 */ },
50100994698Smrg     {"*x", /* 99 */ },
50200994698Smrg     {"*d", /* 100 */ },
50300994698Smrg     {"*e", /* 101 */ },
50400994698Smrg     {"*f", /* 102 */ },
50500994698Smrg     {"*g", /* 103 */ },
50600994698Smrg     {"*y", /* 104 */ },
50700994698Smrg     {"*i", /* 105 */ },
50800994698Smrg     {NULL, /* 106 */ },
50900994698Smrg     {"*k", /* 107 */ },
51000994698Smrg     {"*l", /* 108 */ },
51100994698Smrg     {"*m", /* 109 */ },
51200994698Smrg     {"*n", /* 110 */ },
51300994698Smrg     {"*o", /* 111 */ },
51400994698Smrg     {"*p", /* 112 */ },
51500994698Smrg     {"*h", /* 113 */ },
51600994698Smrg     {"*r", /* 114 */ },
51700994698Smrg     {"*s", /* 115 */ },
51800994698Smrg     {"*t", /* 116 */ },
51900994698Smrg     {"*u", /* 117 */ },
52000994698Smrg     {NULL, /* 118 */ },
52100994698Smrg     {"*w", /* 119 */ },
52200994698Smrg     {"*c", /* 120 */ },
52300994698Smrg     {"*q", /* 121 */ },
52400994698Smrg     {"*z", /* 122 */ },
52500994698Smrg     {"{", /* 123 */ },
52600994698Smrg     {"|", /* 124 */ },
52700994698Smrg     {"}", /* 125 */ },
52800994698Smrg     {"a~", "ap", /* 126 */ },
52900994698Smrg     {NULL, /* 127 */ },
53000994698Smrg     {NULL, /* 128 */ },
53100994698Smrg     {NULL, /* 129 */ },
53200994698Smrg     {NULL, /* 130 */ },
53300994698Smrg     {NULL, /* 131 */ },
53400994698Smrg     {NULL, /* 132 */ },
53500994698Smrg     {NULL, /* 133 */ },
53600994698Smrg     {NULL, /* 134 */ },
53700994698Smrg     {NULL, /* 135 */ },
53800994698Smrg     {NULL, /* 136 */ },
53900994698Smrg     {NULL, /* 137 */ },
54000994698Smrg     {NULL, /* 138 */ },
54100994698Smrg     {NULL, /* 139 */ },
54200994698Smrg     {NULL, /* 140 */ },
54300994698Smrg     {NULL, /* 141 */ },
54400994698Smrg     {NULL, /* 142 */ },
54500994698Smrg     {NULL, /* 143 */ },
54600994698Smrg     {NULL, /* 144 */ },
54700994698Smrg     {NULL, /* 145 */ },
54800994698Smrg     {NULL, /* 146 */ },
54900994698Smrg     {NULL, /* 147 */ },
55000994698Smrg     {NULL, /* 148 */ },
55100994698Smrg     {NULL, /* 149 */ },
55200994698Smrg     {NULL, /* 150 */ },
55300994698Smrg     {NULL, /* 151 */ },
55400994698Smrg     {NULL, /* 152 */ },
55500994698Smrg     {NULL, /* 153 */ },
55600994698Smrg     {NULL, /* 154 */ },
55700994698Smrg     {NULL, /* 155 */ },
55800994698Smrg     {NULL, /* 156 */ },
55900994698Smrg     {NULL, /* 157 */ },
56000994698Smrg     {NULL, /* 158 */ },
56100994698Smrg     {NULL, /* 159 */ },
56200994698Smrg     {NULL, /* 160 */ },
56300994698Smrg     {NULL, /* 161 */ },
56400994698Smrg     {"fm", "mt", /* 162 */ },
56500994698Smrg     {"<=", /* 163 */ },
56600994698Smrg     {"/", "sl" /* 164 */ },
56700994698Smrg     {"if", /* 165 */ },
56800994698Smrg     {NULL, /* 166 */ },
56900994698Smrg     {"Cc", /* 167 */ },
57000994698Smrg     {"Cd", /* 168 */ },
57100994698Smrg     {"Ch", /* 169 */ },
57200994698Smrg     {"Cs", /* 170 */ },
57300994698Smrg     {"<>", /* 171 */ },
57400994698Smrg     {"<-", /* 172 */ },
57500994698Smrg     {"ua", /* 173 */ },
57600994698Smrg     {"->", /* 174 */ },
57700994698Smrg     {"da", /* 175 */ },
57800994698Smrg     {"de", /* 176 */ },
57900994698Smrg     {"+-", /* 177 */ },
58000994698Smrg     {"sd", /* 178 */ },
58100994698Smrg     {">=", /* 179 */ },
58200994698Smrg     {"mu", /* 180 */ },
58300994698Smrg     {"pt", /* 181 */ },
58400994698Smrg     {"pd", /* 182 */ },
58500994698Smrg     {"bu", /* 183 */ },
58600994698Smrg     {"di", /* 184 */ },
58700994698Smrg     {"!=", /* 185 */ },
58800994698Smrg     {"==", /* 186 */ },
58900994698Smrg     {"~=", /* 187 */ },
59000994698Smrg     {"..", /* 188 */ },
59100994698Smrg     {"br", /* 189 */ },
59200994698Smrg     {"em", /* 190 */ },
59300994698Smrg     {"cr", /* 191 */ },
59400994698Smrg     {"al", /* 192 */ },
59500994698Smrg     {NULL, /* 193 */ },
59600994698Smrg     {NULL, /* 194 */ },
59700994698Smrg     {NULL, /* 195 */ },
59800994698Smrg     {"ax", /* 196 */ },
59900994698Smrg     {"a+", /* 197 */ },
60000994698Smrg     {"es", /* 198 */ },
60100994698Smrg     {"ca", /* 199 */ },
60200994698Smrg     {"cu", /* 200 */ },
60300994698Smrg     {"sp", /* 201 */ },
60400994698Smrg     {"ip", /* 202 */ },
60500994698Smrg     {"!s", /* 203 */ },
60600994698Smrg     {"sb", /* 204 */ },
60700994698Smrg     {"ib", /* 205 */ },
60800994698Smrg     {"mo", /* 206 */ },
60900994698Smrg     {"!m", /* 207 */ },
61000994698Smrg     {"ag", /* 208 */ },
61100994698Smrg     {"gr", /* 209 */ },
61200994698Smrg     {NULL, /* 210 */ },
61300994698Smrg     {NULL, /* 211 */ },
61400994698Smrg     {NULL, /* 212 */ },
61500994698Smrg     {NULL, /* 213 */ },
61600994698Smrg     {"sr", /* 214 */ },
61700994698Smrg     {"m.", /* 215 */ },
61800994698Smrg     {"no", /* 216 */ },
61900994698Smrg     {"an", /* 217 */ },
62000994698Smrg     {"lo", /* 218 */ },
62100994698Smrg     {"io", /* 219 */ },
62200994698Smrg     {"<:", /* 220 */ },
62300994698Smrg     {"u=", /* 221 */ },
62400994698Smrg     {":>", /* 222 */ },
62500994698Smrg     {"d=", /* 223 */ },
62600994698Smrg     {"dm", /* 224 */ },
62700994698Smrg     {"L<", /* 225 */ },
62800994698Smrg     {"rg", /* 226 */ },
62900994698Smrg     {"co", /* 227 */ },
63000994698Smrg     {"tm", /* 228 */ },
63100994698Smrg     {NULL, /* 229 */ },
63200994698Smrg     {NULL, /* 230 */ },
63300994698Smrg     {NULL, /* 231 */ },
63400994698Smrg     {NULL, /* 232 */ },
63500994698Smrg     {"lc", /* 233 */ },
63600994698Smrg     {NULL, /* 234 */ },
63700994698Smrg     {"lf", /* 235 */ },
63800994698Smrg     {"lt", /* 236 */ },
63900994698Smrg     {"lk", /* 237 */ },
64000994698Smrg     {"lb", /* 238 */ },
64100994698Smrg     {"bv", /* 239 */ },
64200994698Smrg     {"AL", /* 240 */ },
64300994698Smrg     {"R>", /* 241 */ },
64400994698Smrg     {"is", /* 242 */ },
64500994698Smrg     {NULL, /* 243 */ },
64600994698Smrg     {NULL, /* 244 */ },
64700994698Smrg     {NULL, /* 245 */ },
64800994698Smrg     {NULL, /* 246 */ },
64900994698Smrg     {NULL, /* 247 */ },
65000994698Smrg     {NULL, /* 248 */ },
65100994698Smrg     {"rc", /* 249 */ },
65200994698Smrg     {NULL, /* 250 */ },
65300994698Smrg     {"rf", /* 251 */ },
65400994698Smrg     {"rt", /* 252 */ },
65500994698Smrg     {"rk", /* 253 */ },
65600994698Smrg     {"rb", /* 254 */ },
65700994698Smrg     {NULL, /* 255 */ },
65800994698Smrg     },
65900994698Smrg    {
66000994698Smrg     {NULL, NULL},
66100994698Smrg     },
66200994698Smrg    {}
663f80a6dcdSmrg};
664f80a6dcdSmrg
665f80a6dcdSmrgstatic void
66600994698Smrgload_standard_maps(void)
667f80a6dcdSmrg{
66800994698Smrg    standard_maps_loaded = 1;
66900994698Smrg    DviRegisterMap(&ISO8859_1_map);
67000994698Smrg    DviRegisterMap(&Adobe_Symbol_map);
671f80a6dcdSmrg}
672