home *** CD-ROM | disk | FTP | other *** search
/ Aminet 10 / aminetcdnumber101996.iso / Aminet / util / gnu / groff_src.lha / groff-1.10src / xditview / DviChar.c < prev    next >
C/C++ Source or Header  |  1994-08-08  |  14KB  |  665 lines

  1. /*
  2.  * DviChar.c
  3.  *
  4.  * Map DVI (ditroff output) character names to
  5.  * font indexes and back
  6.  */
  7.  
  8. #include   "DviChar.h"
  9.  
  10. extern char *xmalloc();
  11.  
  12. #define allocHash() ((DviCharNameHash *) xmalloc (sizeof (DviCharNameHash)))
  13.  
  14. struct map_list {
  15.     struct map_list    *next;
  16.     DviCharNameMap    *map;
  17. };
  18.  
  19. static struct map_list    *world;
  20.  
  21. static int    standard_maps_loaded = 0;
  22. static void    load_standard_maps ();
  23. static int    hash_name ();
  24. static        dispose_hash(), compute_hash();
  25.  
  26. DviCharNameMap *
  27. DviFindMap (encoding)
  28.     char    *encoding;
  29. {
  30.     struct map_list    *m;
  31.  
  32.     if (!standard_maps_loaded)
  33.         load_standard_maps ();
  34.     for (m = world; m; m=m->next)
  35.         if (!strcmp (m->map->encoding, encoding))
  36.             return m->map;
  37.     return 0;
  38. }
  39.  
  40. void
  41. DviRegisterMap (map)
  42.     DviCharNameMap    *map;
  43. {
  44.     struct map_list    *m;
  45.  
  46.     if (!standard_maps_loaded)
  47.         load_standard_maps ();
  48.     for (m = world; m; m = m->next)
  49.         if (!strcmp (m->map->encoding, map->encoding))
  50.             break;
  51.     if (!m) {
  52.         m = (struct map_list *) xmalloc (sizeof *m);
  53.         m->next = world;
  54.         world = m;
  55.     }
  56.     dispose_hash (map);
  57.     m->map = map;
  58.     compute_hash (map);
  59. }
  60.  
  61. static
  62. dispose_hash (map)
  63.     DviCharNameMap    *map;
  64. {
  65.     DviCharNameHash    **buckets;
  66.     DviCharNameHash    *h, *next;
  67.     int        i;
  68.  
  69.     buckets = map->buckets;
  70.     for (i = 0; i < DVI_HASH_SIZE; i++) {
  71.         for (h = buckets[i]; h; h=next) {
  72.             next = h->next;
  73.             free (h);
  74.         }
  75.     }
  76. }
  77.  
  78. static int
  79. hash_name (name)
  80.     char    *name;
  81. {
  82.     int    i = 0;
  83.  
  84.     while (*name)
  85.         i = (i << 1) ^ *name++;
  86.     if (i < 0)
  87.         i = -i;
  88.     return i;
  89. }
  90.  
  91. static
  92. compute_hash (map)
  93.     DviCharNameMap    *map;
  94. {
  95.     DviCharNameHash    **buckets;
  96.     int        c, s, i;
  97.     DviCharNameHash    *h;
  98.  
  99.     buckets = map->buckets;
  100.     for (i = 0; i < DVI_HASH_SIZE; i++)
  101.         buckets[i] = 0;
  102.     for (c = 0; c < DVI_MAP_SIZE; c++)
  103.         for (s = 0; s < DVI_MAX_SYNONYMS; s++) {
  104.             if (!map->dvi_names[c][s])
  105.                 break;
  106.             i = hash_name (map->dvi_names[c][s]) % DVI_HASH_SIZE;
  107.             h = allocHash ();
  108.             h->next = buckets[i];
  109.             buckets[i] = h;
  110.             h->name = map->dvi_names[c][s];
  111.             h->position = c;
  112.         }
  113.     
  114. }
  115.  
  116. int
  117. DviCharIndex (map, name)
  118.     DviCharNameMap    *map;
  119.     char        *name;
  120. {
  121.     int        i;
  122.     DviCharNameHash    *h;
  123.  
  124.     i = hash_name (name) % DVI_HASH_SIZE;
  125.     for (h = map->buckets[i]; h; h=h->next)
  126.         if (!strcmp (h->name, name))
  127.             return h->position;
  128.     return -1;
  129. }
  130.  
  131. static DviCharNameMap ISO8859_1_map = {
  132.     "iso8859-1",
  133.     0,
  134. {
  135. {    0,        /* 0 */},
  136. {    0,        /* 1 */},
  137. {    0,        /* 2 */},
  138. {    0,        /* 3 */},
  139. {    0,        /* 4 */},
  140. {    0,        /* 5 */},
  141. {    0,        /* 6 */},
  142. {    0,        /* 7 */},
  143. {    0,        /* 8 */},
  144. {    0,        /* 9 */},
  145. {    0,        /* 10 */},
  146. {    0,        /* 11 */},
  147. {    0,        /* 12 */},
  148. {    0,        /* 13 */},
  149. {    0,        /* 14 */},
  150. {    0,        /* 15 */},
  151. {    0,        /* 16 */},
  152. {    0,        /* 17 */},
  153. {    0,        /* 18 */},
  154. {    0,        /* 19 */},
  155. {    0,        /* 20 */},
  156. {    0,        /* 21 */},
  157. {    0,        /* 22 */},
  158. {    0,        /* 23 */},
  159. {    0,        /* 24 */},
  160. {    0,        /* 25 */},
  161. {    0,        /* 26 */},
  162. {    0,        /* 27 */},
  163. {    0,        /* 28 */},
  164. {    0,        /* 29 */},
  165. {    0,        /* 30 */},
  166. {    0,        /* 31 */},
  167. {    0,        /* 32 */},
  168. {    "!",        /* 33 */},
  169. {    "\"",        /* 34 */},
  170. {    "#","sh",    /* 35 */},
  171. {    "$","Do",    /* 36 */},
  172. {    "%",        /* 37 */},
  173. {    "&",        /* 38 */},
  174. {    "'",        /* 39 */},
  175. {    "(",        /* 40 */},
  176. {    ")",        /* 41 */},
  177. {    "*",        /* 42 */},
  178. {    "+",        /* 43 */},
  179. {    ",",        /* 44 */},
  180. {    "\\-",        /* 45 */},
  181. {    ".",        /* 46 */},
  182. {    "/","sl",    /* 47 */},
  183. {    "0",        /* 48 */},
  184. {    "1",        /* 49 */},
  185. {    "2",        /* 50 */},
  186. {    "3",        /* 51 */},
  187. {    "4",        /* 52 */},
  188. {    "5",        /* 53 */},
  189. {    "6",        /* 54 */},
  190. {    "7",        /* 55 */},
  191. {    "8",        /* 56 */},
  192. {    "9",        /* 57 */},
  193. {    ":",        /* 58 */},
  194. {    ";",        /* 59 */},
  195. {    "<",        /* 60 */},
  196. {    "=","eq",    /* 61 */},
  197. {    ">",        /* 62 */},
  198. {    "?",        /* 63 */},
  199. {    "@","at",    /* 64 */},
  200. {    "A",        /* 65 */},
  201. {    "B",        /* 66 */},
  202. {    "C",        /* 67 */},
  203. {    "D",        /* 68 */},
  204. {    "E",        /* 69 */},
  205. {    "F",        /* 70 */},
  206. {    "G",        /* 71 */},
  207. {    "H",        /* 72 */},
  208. {    "I",        /* 73 */},
  209. {    "J",        /* 74 */},
  210. {    "K",        /* 75 */},
  211. {    "L",        /* 76 */},
  212. {    "M",        /* 77 */},
  213. {    "N",        /* 78 */},
  214. {    "O",        /* 79 */},
  215. {    "P",        /* 80 */},
  216. {    "Q",        /* 81 */},
  217. {    "R",        /* 82 */},
  218. {    "S",        /* 83 */},
  219. {    "T",        /* 84 */},
  220. {    "U",        /* 85 */},
  221. {    "V",        /* 86 */},
  222. {    "W",        /* 87 */},
  223. {    "X",        /* 88 */},
  224. {    "Y",        /* 89 */},
  225. {    "Z",        /* 90 */},
  226. {    "[","lB",    /* 91 */},
  227. {    "\\","rs",    /* 92 */},
  228. {    "]","rB",    /* 93 */},
  229. {    "^","a^","ha"    /* 94 */},
  230. {    "_",        /* 95 */},
  231. {    "`","oq",    /* 96 */},
  232. {    "a",        /* 97 */},
  233. {    "b",        /* 98 */},
  234. {    "c",        /* 99 */},
  235. {    "d",        /* 100 */},
  236. {    "e",        /* 101 */},
  237. {    "f",        /* 102 */},
  238. {    "g",        /* 103 */},
  239. {    "h",        /* 104 */},
  240. {    "i",        /* 105 */},
  241. {    "j",        /* 106 */},
  242. {    "k",        /* 107 */},
  243. {    "l",        /* 108 */},
  244. {    "m",        /* 109 */},
  245. {    "n",        /* 110 */},
  246. {    "o",        /* 111 */},
  247. {    "p",        /* 112 */},
  248. {    "q",        /* 113 */},
  249. {    "r",        /* 114 */},
  250. {    "s",        /* 115 */},
  251. {    "t",        /* 116 */},
  252. {    "u",        /* 117 */},
  253. {    "v",        /* 118 */},
  254. {    "w",        /* 119 */},
  255. {    "x",        /* 120 */},
  256. {    "y",        /* 121 */},
  257. {    "z",        /* 122 */},
  258. {    "{","lC",    /* 123 */},
  259. {    "|","or","ba"    /* 124 */},
  260. {    "}","rC",    /* 125 */},
  261. {    "~","a~","ap","ti"    /* 126 */},
  262. {    0,        /* 127 */},
  263. {    0,        /* 128 */},
  264. {    0,        /* 129 */},
  265. {    0,        /* 130 */},
  266. {    0,        /* 131 */},
  267. {    0,        /* 132 */},
  268. {    0,        /* 133 */},
  269. {    0,        /* 134 */},
  270. {    0,        /* 135 */},
  271. {    0,        /* 136 */},
  272. {    0,        /* 137 */},
  273. {    0,        /* 138 */},
  274. {    0,        /* 139 */},
  275. {    0,        /* 140 */},
  276. {    0,        /* 141 */},
  277. {    0,        /* 142 */},
  278. {    0,        /* 143 */},
  279. {    0,        /* 144 */},
  280. {    0,        /* 145 */},
  281. {    0,        /* 146 */},
  282. {    0,        /* 147 */},
  283. {    0,        /* 148 */},
  284. {    0,        /* 149 */},
  285. {    0,        /* 150 */},
  286. {    0,        /* 151 */},
  287. {    0,        /* 152 */},
  288. {    0,        /* 153 */},
  289. {    0,        /* 154 */},
  290. {    0,        /* 155 */},
  291. {    0,        /* 156 */},
  292. {    0,        /* 157 */},
  293. {    0,        /* 158 */},
  294. {    0,        /* 159 */},
  295. {    0,        /* 160 */},
  296. {    "r!", "\241",    /* 161 */},
  297. {    "ct", "\242",    /* 162 */},
  298. {    "Po", "\243",    /* 163 */},
  299. {    "Cs", "\244",    /* 164 */},
  300. {    "Ye", "\245",    /* 165 */},
  301. {    "bb", "\246",    /* 166 */},
  302. {    "sc", "\247",    /* 167 */},
  303. {    "ad", "\250",    /* 168 */},
  304. {    "co", "\251",    /* 169 */},
  305. {    "Of", "\252",    /* 170 */},
  306. {    "Fo", "\253",    /* 171 */},
  307. {    "no", "\254",    /* 172 */},
  308. {    "-", "hy", "\255"          /* 173 */},
  309. {    "rg", "\256",    /* 174 */},
  310. {    "a-", "\257",    /* 175 */},
  311. {    "de", "\260",    /* 176 */},
  312. {    "+-", "\261",    /* 177 */},
  313. {    "S2", "\262",    /* 178 */},
  314. {    "S3", "\263",    /* 179 */},
  315. {    "aa", "\264",    /* 180 */},
  316. /* Omit *m here; we want *m to match the other greek letters in the
  317.    symbol font. */
  318. {    "\265",        /* 181 */},
  319. {    "ps", "\266",    /* 182 */},
  320. {    "md", "\267",    /* 183 */},
  321. {    "ac", "\270",    /* 184 */},
  322. {    "S1", "\271",    /* 185 */},
  323. {    "Om", "\272",    /* 186 */},
  324. {    "Fc", "\273",    /* 187 */},
  325. {    "14", "\274",    /* 188 */},
  326. {    "12", "\275",    /* 189 */},
  327. {    "34", "\276",    /* 190 */},
  328. {    "r?", "\277",    /* 191 */},
  329. {    "`A", "\300",    /* 192 */},
  330. {    "'A", "\301",    /* 193 */},
  331. {    "^A", "\302",    /* 194 */},
  332. {    "~A", "\303",    /* 195 */},
  333. {    ":A", "\304",    /* 196 */},
  334. {    "oA", "\305",    /* 197 */},
  335. {    "AE", "\306",    /* 198 */},
  336. {    ",C", "\307",    /* 199 */},
  337. {    "`E", "\310",    /* 200 */},
  338. {    "'E", "\311",    /* 201 */},
  339. {    "^E", "\312",    /* 202 */},
  340. {    ":E", "\313",    /* 203 */},
  341. {    "`I", "\314",    /* 204 */},
  342. {    "'I", "\315",    /* 205 */},
  343. {    "^I", "\316",    /* 206 */},
  344. {    ":I", "\317",    /* 207 */},
  345. {    "-D", "\320",    /* 208 */},
  346. {    "~N", "\321",    /* 209 */},
  347. {    "`O", "\322",    /* 210 */},
  348. {    "'O", "\323",    /* 211 */},
  349. {    "^O", "\324",    /* 212 */},
  350. {    "~O", "\325",    /* 213 */},
  351. {    ":O", "\326",    /* 214 */},
  352. {    "mu", "\327",    /* 215 */},
  353. {    "/O", "\330",    /* 216 */},
  354. {    "`U", "\331",    /* 217 */},
  355. {    "'U", "\332",    /* 218 */},
  356. {    "^U", "\333",    /* 219 */},
  357. {    ":U", "\334",    /* 220 */},
  358. {    "'Y", "\335",    /* 221 */},
  359. {    "TP", "\336",    /* 222 */},
  360. {    "ss", "\337",    /* 223 */},
  361. {    "`a", "\340",    /* 224 */},
  362. {    "'a", "\341",    /* 225 */},
  363. {    "^a", "\342",    /* 226 */},
  364. {    "~a", "\343",    /* 227 */},
  365. {    ":a", "\344",    /* 228 */},
  366. {    "oa", "\345",    /* 229 */},
  367. {    "ae", "\346",    /* 230 */},
  368. {    ",c", "\347",    /* 231 */},
  369. {    "`e", "\350",    /* 232 */},
  370. {    "'e", "\351",    /* 233 */},
  371. {    "^e", "\352",    /* 234 */},
  372. {    ":e", "\353",    /* 235 */},
  373. {    "`i", "\354",    /* 236 */},
  374. {    "'i", "\355",    /* 237 */},
  375. {    "^i", "\356",    /* 238 */},
  376. {    ":i", "\357",    /* 239 */},
  377. {    "Sd", "\360",    /* 240 */},
  378. {    "~n", "\361",    /* 241 */},
  379. {    "`o", "\362",    /* 242 */},
  380. {    "'o", "\363",    /* 243 */},
  381. {    "^o", "\364",    /* 244 */},
  382. {    "~o", "\365",    /* 245 */},
  383. {    ":o", "\366",    /* 246 */},
  384. {    "di", "\367",    /* 247 */},
  385. {    "/o", "\370",    /* 248 */},
  386. {    "`u", "\371",    /* 249 */},
  387. {    "'u", "\372",    /* 250 */},
  388. {    "^u", "\373",    /* 251 */},
  389. {    ":u", "\374",    /* 252 */},
  390. {    "'y", "\375",    /* 253 */},
  391. {    "Tp", "\376",    /* 254 */},
  392. {    ":y", "\377",    /* 255 */},
  393. }};
  394.  
  395. static DviCharNameMap Adobe_Symbol_map = {
  396.     "adobe-fontspecific",
  397.     1,
  398. {
  399. {    0,    /* 0 */},
  400. {    0,    /* 1 */},
  401. {    0,    /* 2 */},
  402. {    0,    /* 3 */},
  403. {    0,    /* 4 */},
  404. {    0,    /* 5 */},
  405. {    0,    /* 6 */},
  406. {    0,    /* 7 */},
  407. {    0,    /* 8 */},
  408. {    0,    /* 9 */},
  409. {    0,    /* 10 */},
  410. {    0,    /* 11 */},
  411. {    0,    /* 12 */},
  412. {    0,    /* 13 */},
  413. {    0,    /* 14 */},
  414. {    0,    /* 15 */},
  415. {    0,    /* 16 */},
  416. {    0,    /* 17 */},
  417. {    0,    /* 18 */},
  418. {    0,    /* 19 */},
  419. {    0,    /* 20 */},
  420. {    0,    /* 21 */},
  421. {    0,    /* 22 */},
  422. {    0,    /* 23 */},
  423. {    0,    /* 24 */},
  424. {    0,    /* 25 */},
  425. {    0,    /* 26 */},
  426. {    0,    /* 27 */},
  427. {    0,    /* 28 */},
  428. {    0,    /* 29 */},
  429. {    0,    /* 30 */},
  430. {    0,    /* 31 */},
  431. {    0,    /* 32 */},
  432. {    "!",     /* 33 */},
  433. {    "fa",     /* 34 */},
  434. {    "#", "sh",     /* 35 */},
  435. {    "te",     /* 36 */},
  436. {    "%",     /* 37 */},
  437. {    "&",     /* 38 */},
  438. {    "st",    /* 39 */},
  439. {    "(",     /* 40 */},
  440. {    ")",     /* 41 */},
  441. {    "**",     /* 42 */},
  442. {    "+", "pl",     /* 43 */},
  443. {    ",",     /* 44 */},
  444. {    "\\-", "mi",     /* 45 */},
  445. {    ".",     /* 46 */},
  446. {    "/", "sl",     /* 47 */},
  447. {    "0",     /* 48 */},
  448. {    "1",     /* 49 */},
  449. {    "2",     /* 50 */},
  450. {    "3",     /* 51 */},
  451. {    "4",     /* 52 */},
  452. {    "5",     /* 53 */},
  453. {    "6",     /* 54 */},
  454. {    "7",     /* 55 */},
  455. {    "8",     /* 56 */},
  456. {    "9",     /* 57 */},
  457. {    ":",     /* 58 */},
  458. {    ";",     /* 59 */},
  459. {    "<",     /* 60 */},
  460. {    "=", "eq",     /* 61 */},
  461. {    ">",     /* 62 */},
  462. {    "?",     /* 63 */},
  463. {    "=~",     /* 64 */},
  464. {    "*A",     /* 65 */},
  465. {    "*B",     /* 66 */},
  466. {    "*X",     /* 67 */},
  467. {    "*D",     /* 68 */},
  468. {    "*E",     /* 69 */},
  469. {    "*F",     /* 70 */},
  470. {    "*G",     /* 71 */},
  471. {    "*Y",     /* 72 */},
  472. {    "*I",     /* 73 */},
  473. {    "+h",    /* 74 */},
  474. {    "*K",     /* 75 */},
  475. {    "*L",     /* 76 */},
  476. {    "*M",     /* 77 */},
  477. {    "*N",     /* 78 */},
  478. {    "*O",     /* 79 */},
  479. {    "*P",     /* 80 */},
  480. {    "*H",     /* 81 */},
  481. {    "*R",     /* 82 */},
  482. {    "*S",     /* 83 */},
  483. {    "*T",     /* 84 */},
  484. {    0,     /* 85 */},
  485. {    "ts",     /* 86 */},
  486. {    "*W",     /* 87 */},
  487. {    "*C",     /* 88 */},
  488. {    "*Q",     /* 89 */},
  489. {    "*Z",     /* 90 */},
  490. {    "[", "lB",     /* 91 */},
  491. {    "tf", "3d",     /* 92 */},
  492. {    "]", "rB",     /* 93 */},
  493. {    "pp",     /* 94 */},
  494. {    "_",     /* 95 */},
  495. {    "radicalex",    /* 96 */},
  496. {    "*a",     /* 97 */},
  497. {    "*b",     /* 98 */},
  498. {    "*x",     /* 99 */},
  499. {    "*d",     /* 100 */},
  500. {    "*e",     /* 101 */},
  501. {    "*f",     /* 102 */},
  502. {    "*g",     /* 103 */},
  503. {    "*y",     /* 104 */},
  504. {    "*i",     /* 105 */},
  505. {    "+f",    /* 106 */},
  506. {    "*k",     /* 107 */},
  507. {    "*l",     /* 108 */},
  508. { "*m", "\265", /* 109 */},
  509. {    "*n",     /* 110 */},
  510. {    "*o",     /* 111 */},
  511. {    "*p",     /* 112 */},
  512. {    "*h",     /* 113 */},
  513. {    "*r",     /* 114 */},
  514. {    "*s",     /* 115 */},
  515. {    "*t",     /* 116 */},
  516. {    "*u",     /* 117 */},
  517. {    "+p",    /* 118 */},
  518. {    "*w",     /* 119 */},
  519. {    "*c",     /* 120 */},
  520. {    "*q",     /* 121 */},
  521. {    "*z",     /* 122 */},
  522. {    "lC", "{",     /* 123 */},
  523. {    "ba", "or", "|",     /* 124 */},
  524. {    "rC", "}",     /* 125 */},
  525. {    "ap",     /* 126 */},
  526. {    0,    /* 127 */},
  527. {    0,    /* 128 */},
  528. {    0,    /* 129 */},
  529. {    0,    /* 130 */},
  530. {    0,    /* 131 */},
  531. {    0,    /* 132 */},
  532. {    0,    /* 133 */},
  533. {    0,    /* 134 */},
  534. {    0,    /* 135 */},
  535. {    0,    /* 136 */},
  536. {    0,    /* 137 */},
  537. {    0,    /* 138 */},
  538. {    0,    /* 139 */},
  539. {    0,    /* 140 */},
  540. {    0,    /* 141 */},
  541. {    0,    /* 142 */},
  542. {    0,    /* 143 */},
  543. {    0,    /* 144 */},
  544. {    0,    /* 145 */},
  545. {    0,    /* 146 */},
  546. {    0,    /* 147 */},
  547. {    0,    /* 148 */},
  548. {    0,    /* 149 */},
  549. {    0,    /* 150 */},
  550. {    0,    /* 151 */},
  551. {    0,    /* 152 */},
  552. {    0,    /* 153 */},
  553. {    0,    /* 154 */},
  554. {    0,    /* 155 */},
  555. {    0,    /* 156 */},
  556. {    0,    /* 157 */},
  557. {    0,    /* 158 */},
  558. {    0,    /* 159 */},
  559. {    0,    /* 160 */},
  560. {    "*U",    /* 161 */},
  561. {    "fm",     /* 162 */},
  562. {    "<=",     /* 163 */},
  563. {    "f/",     /* 164 */},
  564. {    "if",     /* 165 */},
  565. {    "Fn",    /* 166 */},
  566. {    "CL",    /* 167 */},
  567. {    "DI",    /* 168 */},
  568. {    "HE",    /* 169 */},
  569. {    "SP",    /* 170 */},
  570. {    "<>",    /* 171 */},
  571. {    "<-",     /* 172 */},
  572. {    "ua", "arrowverttp"     /* 173 */},
  573. {    "->",     /* 174 */},
  574. {    "da", "arrowvertbt"    /* 175 */},
  575. { "de", "\260", /* 176 */},
  576. { "+-", "\261", /* 177 */},
  577. {    "sd",    /* 178 */},
  578. {    ">=",     /* 179 */},
  579. { "mu", "\327", /* 180 */},
  580. {    "pt",     /* 181 */},
  581. {    "pd",     /* 182 */},
  582. {    "bu",     /* 183 */},
  583. { "di", "\367", /* 184 */},
  584. {    "!=",     /* 185 */},
  585. {    "==",     /* 186 */},
  586. {    "~=", "~~",     /* 187 */},
  587. {    0,    /* 188 */},
  588. {    "arrowvertex",    /* 189 */},
  589. {    "an",    /* 190 */},
  590. {    "CR",    /* 191 */},
  591. {    "Ah",     /* 192 */},
  592. {    "Im",     /* 193 */},
  593. {    "Re",     /* 194 */},
  594. {    "wp",    /* 195 */},
  595. {    "c*",     /* 196 */},
  596. {    "c+",     /* 197 */},
  597. {    "es",     /* 198 */},
  598. {    "ca",     /* 199 */},
  599. {    "cu",     /* 200 */},
  600. {    "sp",     /* 201 */},
  601. {    "ip",     /* 202 */},
  602. {    "nb",    /* 203 */},
  603. {    "sb",     /* 204 */},
  604. {    "ib",     /* 205 */},
  605. {    "mo",     /* 206 */},
  606. {    "nm",     /* 207 */},
  607. {    "/_",    /* 208 */},
  608. {    "gr",     /* 209 */},
  609. {    "rg",    /* 210 */},
  610. {    "co",    /* 211 */},
  611. {    "tm",    /* 212 */},
  612. {    0,    /* 213 */},
  613. {    "sr",     /* 214 */},
  614. {    "md",    /* 215 */},
  615. { "no", "\254", /* 216 */},
  616. {    "AN",     /* 217 */},
  617. {    "OR",     /* 218 */},
  618. {    "hA",    /* 219 */},
  619. {    "lA",    /* 220 */},
  620. {    "uA",    /* 221 */},
  621. {    "rA",    /* 222 */},
  622. {    "dA",    /* 223 */},
  623. {    "lz",    /* 224 */},
  624. {    "la",     /* 225 */},
  625. {    0,    /* 226 */},
  626. {    0,    /* 227 */},
  627. {    0,    /* 228 */},
  628. {    0,    /* 229 */},
  629. {    "parenlefttp",         /* 230 */},
  630. {    "parenleftex",         /* 231 */},
  631. {    "parenleftbt",         /* 232 */},
  632. {    "bracketlefttp", "lc",     /* 233 */},
  633. {    "bracketleftex",     /* 234 */},
  634. {    "bracketleftbt", "lf",    /* 235 */},
  635. {    "bracelefttp", "lt",    /* 236 */},
  636. {    "braceleftmid", "lk",     /* 237 */},
  637. {    "braceleftbt", "lb",    /* 238 */},
  638. {    "bracerightex", "braceleftex", "bv",    /* 239 */},
  639. {    0,    /* 240 */},
  640. {    "ra",     /* 241 */},
  641. {    "is",     /* 242 */},
  642. {    0,    /* 243 */},
  643. {    0,    /* 244 */},
  644. {    0,    /* 245 */},
  645. {    "parenrighttp",     /* 246 */},
  646. {    "parenrightex",     /* 247 */},
  647. {    "parenrightbt",     /* 248 */},
  648. {    "bracketrighttp", "rc",    /* 249 */},
  649. {    "bracketrightex",     /* 250 */},
  650. {    "bracketrightbt", "rf",    /* 251 */},
  651. {    "bracerighttp", "rt"    /* 252 */},
  652. {    "bracerightmid", "rk"    /* 253 */},
  653. {    "bracerightbt", "rb"    /* 254 */},
  654. {    0,    /* 255 */},
  655. }};
  656.  
  657.  
  658. static void
  659. load_standard_maps ()
  660. {
  661.     standard_maps_loaded = 1;
  662.     DviRegisterMap (&ISO8859_1_map);
  663.     DviRegisterMap (&Adobe_Symbol_map);
  664. }
  665.