g_jis.h 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188
  1. /* This file is part of the GNU plotutils package. Copyright (C) 1995,
  2. 1996, 1997, 1998, 1999, 2000, 2005, 2008, Free Software Foundation, Inc.
  3. The GNU plotutils package is free software. You may redistribute it
  4. and/or modify it under the terms of the GNU General Public License as
  5. published by the Free Software foundation; either version 2, or (at your
  6. option) any later version.
  7. The GNU plotutils package is distributed in the hope that it will be
  8. useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  10. General Public License for more details.
  11. You should have received a copy of the GNU General Public License along
  12. with the GNU plotutils package; see the file COPYING. If not, write to
  13. the Free Software Foundation, Inc., 51 Franklin St., Fifth Floor,
  14. Boston, MA 02110-1301, USA. */
  15. /* This header file is #include'd by g_cntrlify.c. It is a database rather
  16. than a true header file: it includes information on characters in the
  17. JIS X 0208 two-byte encoding (containing Kanji, Kana, Roman letters,
  18. Greek letters, Cyrillic letters, etc). */
  19. /* Whether a JIS index (two bytes) defines a JIS character, irrespective of
  20. whether we have a glyph for it. (If it isn't a character, it ideally
  21. prints as a zero-width glyph; if it's a character but we don't have it,
  22. it ideally prints as an empty glyph or an `undefined' glyph.) */
  23. #define GOOD_JIS_INDEX(row, col) \
  24. ((row) > 0x20 && (row) < 0x7f && (col) > 0x20 && (col) < 0x7f)
  25. #define BEGINNING_OF_KANJI 0x3000 /* Kanji afterwards, non-Kanji before */
  26. #ifndef RAW_HERSHEY_GLYPH
  27. #define RAW_HERSHEY_GLYPH 0x4000
  28. #endif
  29. struct kanjipair
  30. {
  31. int jis, nelson;
  32. };
  33. /* The 603 Kanji that we have glyphs for. 1st field is JIS index number;
  34. 2nd is Nelson index number, which we use internally (it indexes into the
  35. Hershey oriental glyph array in g_her_glyph.c). For info on
  36. correspondence, see kanji.doc. */
  37. static const struct kanjipair _builtin_kanji_glyphs[] =
  38. {
  39. /* 596 Level 1 Kanji */
  40. /* row 16 */
  41. {0x3021, 43},
  42. {0x3026, 2829},
  43. {0x302d, 62},
  44. {0x3035, 818},
  45. {0x303f, 1802},
  46. {0x3045, 2154},
  47. {0x304c, 401},
  48. {0x3057, 2107},
  49. {0x3059, 138},
  50. {0x305b, 3008},
  51. {0x305e, 3579},
  52. {0x3061, 4214},
  53. {0x306c, 1},
  54. {0x3070, 3294},
  55. {0x3078, 1026},
  56. {0x307a, 1562},
  57. /* row 17 */
  58. {0x3122, 5006},
  59. {0x3126, 878},
  60. {0x3127, 1280},
  61. {0x3129, 3673},
  62. {0x312b, 5042},
  63. {0x3132, 2629},
  64. {0x313b, 2973},
  65. {0x313f, 4725},
  66. {0x3140, 5046},
  67. {0x314a, 130},
  68. {0x3155, 2599},
  69. {0x315f, 617},
  70. {0x3173, 4733},
  71. {0x3176, 1125},
  72. {0x3177, 2083},
  73. {0x317e, 1504},
  74. /* row 18 */
  75. {0x3221, 1885},
  76. {0x3223, 2361},
  77. {0x3226, 2922},
  78. {0x322b, 5399},
  79. {0x322f, 551},
  80. {0x3235, 260},
  81. {0x3239, 2634},
  82. {0x323b, 5110},
  83. {0x323c, 9},
  84. {0x323d, 350},
  85. {0x323f, 409},
  86. {0x3241, 422},
  87. {0x3243, 716},
  88. {0x3244, 24},
  89. {0x3246, 58},
  90. {0x3248, 1311},
  91. {0x324a, 3272},
  92. {0x324c, 107},
  93. {0x324f, 2530},
  94. {0x3250, 2743},
  95. {0x3256, 3909},
  96. {0x3259, 3956},
  97. {0x3261, 4723},
  98. {0x3267, 2848},
  99. {0x3268, 50},
  100. {0x3272, 4306},
  101. {0x3273, 1028},
  102. /* row 19 */
  103. {0x3323, 2264},
  104. {0x3324, 2553},
  105. {0x3326, 2998},
  106. {0x3328, 3537},
  107. {0x332b, 4950},
  108. {0x332d, 4486},
  109. {0x3330, 1168},
  110. {0x3346, 1163},
  111. {0x334b, 2254},
  112. {0x3351, 4301},
  113. {0x3353, 4623},
  114. {0x3357, 5088},
  115. {0x3358, 1271},
  116. {0x335a, 2324},
  117. {0x3364, 703},
  118. /* row 20 */
  119. {0x3424, 2977},
  120. {0x3428, 1322},
  121. {0x342c, 1466},
  122. {0x3433, 1492},
  123. {0x3434, 790},
  124. {0x3436, 1731},
  125. {0x3437, 1756},
  126. {0x3445, 2988},
  127. {0x3449, 3416},
  128. {0x3454, 4750},
  129. {0x3456, 4949},
  130. {0x3458, 4958},
  131. {0x346f, 994},
  132. {0x3470, 1098},
  133. {0x3476, 1496},
  134. {0x347c, 3785},
  135. /* row 21 */
  136. {0x3521, 2379},
  137. {0x3522, 1582},
  138. {0x3524, 2480},
  139. {0x3525, 2507},
  140. {0x352d, 4318},
  141. {0x3530, 4610},
  142. {0x3534, 5276},
  143. {0x3535, 5445},
  144. {0x3546, 3981},
  145. {0x3555, 4685},
  146. {0x355a, 154},
  147. {0x355b, 885},
  148. {0x355d, 1560},
  149. {0x3565, 2941},
  150. {0x3566, 3314},
  151. {0x3569, 3496},
  152. {0x356d, 2852},
  153. {0x356e, 1051},
  154. {0x356f, 1387},
  155. {0x3575, 4109},
  156. {0x3577, 4548},
  157. {0x357b, 5281},
  158. {0x357e, 295},
  159. /* row 22 */
  160. {0x3621, 431},
  161. {0x3626, 581},
  162. {0x362d, 1135},
  163. {0x362f, 1571},
  164. {0x3635, 2052},
  165. {0x3636, 2378},
  166. {0x364a, 103},
  167. {0x364b, 2305},
  168. {0x364c, 2923},
  169. {0x3651, 1065},
  170. {0x3661, 4671},
  171. {0x3662, 4815},
  172. {0x3664, 4855},
  173. {0x3665, 146},
  174. {0x3671, 3128},
  175. {0x3675, 3317},
  176. {0x367e, 1386},
  177. /* row 23 */
  178. {0x3738, 449},
  179. {0x3739, 534},
  180. {0x373e, 2937},
  181. {0x373f, 1077},
  182. {0x3741, 1589},
  183. {0x3742, 1602},
  184. {0x374f, 195},
  185. {0x3750, 3523},
  186. {0x3757, 4312},
  187. {0x375a, 4620},
  188. {0x3767, 2412},
  189. {0x3768, 2509},
  190. {0x376a, 3313},
  191. {0x376b, 3540},
  192. {0x376c, 4205},
  193. {0x376e, 2169},
  194. {0x3777, 1045},
  195. /* row 24 */
  196. {0x3824, 2868},
  197. {0x3826, 3180},
  198. {0x3828, 3543},
  199. {0x382b, 4284},
  200. {0x3833, 5220},
  201. {0x3835, 275},
  202. {0x3836, 825},
  203. {0x3839, 1568},
  204. {0x383a, 2637},
  205. {0x383b, 2656},
  206. {0x383d, 2943},
  207. {0x3840, 4309},
  208. {0x3842, 4987},
  209. {0x3845, 770},
  210. {0x3847, 1036},
  211. {0x384c, 1567},
  212. {0x384d, 1817},
  213. {0x384e, 2044},
  214. {0x385d, 5415},
  215. {0x385e, 15},
  216. {0x3861, 162},
  217. {0x3865, 1610},
  218. {0x3866, 1628},
  219. {0x386c, 4374},
  220. {0x3872, 290},
  221. {0x3877, 1358},
  222. {0x3878, 579},
  223. {0x387d, 868},
  224. {0x387e, 101},
  225. /* row 25 */
  226. {0x3929, 1451},
  227. {0x3931, 1683},
  228. {0x393d, 2343},
  229. {0x3943, 92},
  230. {0x394d, 3684},
  231. {0x3954, 4213},
  232. {0x3955, 1641},
  233. {0x395b, 4843},
  234. {0x395d, 4883},
  235. {0x395f, 4994},
  236. {0x3960, 1459},
  237. {0x3961, 5188},
  238. {0x3962, 5248},
  239. {0x3966, 882},
  240. {0x3967, 383},
  241. {0x3971, 1037},
  242. {0x3975, 5403},
  243. {0x397c, 5236},
  244. {0x397e, 4660},
  245. /* row 26 */
  246. {0x3a21, 2430},
  247. {0x3a23, 352},
  248. {0x3a2c, 2261},
  249. {0x3a38, 1455},
  250. {0x3a39, 3662},
  251. {0x3a42, 1515},
  252. {0x3a46, 35},
  253. {0x3a47, 2146},
  254. {0x3a59, 3522},
  255. {0x3a5f, 1055},
  256. {0x3a6e, 407},
  257. {0x3a72, 2119},
  258. {0x3a79, 2256},
  259. /* row 27 */
  260. {0x3b2e, 3113},
  261. {0x3b30, 8},
  262. {0x3b33, 1407},
  263. {0x3b36, 2056},
  264. {0x3b3b, 3415},
  265. {0x3b40, 4789},
  266. {0x3b45, 362},
  267. {0x3b4d, 1025},
  268. {0x3b4e, 1160},
  269. {0x3b4f, 1208},
  270. {0x3b52, 1264},
  271. {0x3b54, 284},
  272. {0x3b57, 3001},
  273. {0x3b58, 1904},
  274. {0x3b59, 2039},
  275. {0x3b5e, 2211},
  276. {0x3b5f, 2429},
  277. {0x3b60, 2439},
  278. {0x3b61, 2478},
  279. {0x3b64, 3265},
  280. {0x3b65, 3492},
  281. {0x3b66, 3510},
  282. {0x3b6a, 3845},
  283. {0x3b73, 2435},
  284. {0x3b75, 5428},
  285. {0x3b76, 272},
  286. {0x3b7a, 1281},
  287. {0x3b7d, 1903},
  288. {0x3b7e, 2126},
  289. /* row 28 */
  290. {0x3c21, 638},
  291. {0x3c27, 3209},
  292. {0x3c28, 3228},
  293. {0x3c2a, 3697},
  294. {0x3c2b, 3841},
  295. {0x3c2d, 3860},
  296. {0x3c2f, 5375},
  297. {0x3c30, 1556},
  298. {0x3c34, 4619},
  299. {0x3c37, 261},
  300. {0x3c3c, 1300},
  301. {0x3c3e, 2631},
  302. {0x3c41, 4518},
  303. {0x3c42, 1297},
  304. {0x3c4d, 4603},
  305. {0x3c50, 2074},
  306. {0x3c54, 3685},
  307. {0x3c56, 4608},
  308. {0x3c5c, 1377},
  309. {0x3c61, 4809},
  310. {0x3c63, 3926},
  311. {0x3c67, 285},
  312. {0x3c68, 3699},
  313. {0x3c6a, 1827},
  314. {0x3c6f, 3295},
  315. {0x3c72, 2573},
  316. {0x3c73, 5186},
  317. {0x3c7e, 622},
  318. /* row 29 */
  319. {0x3d29, 3273},
  320. {0x3d2a, 3521},
  321. {0x3d2e, 3863},
  322. {0x3d39, 4798},
  323. {0x3d3d, 768},
  324. {0x3d3e, 1613},
  325. {0x3d44, 3597},
  326. {0x3d45, 224},
  327. {0x3d50, 97},
  328. {0x3d51, 1621},
  329. {0x3d55, 2122},
  330. {0x3d60, 791},
  331. {0x3d63, 3509},
  332. {0x3d68, 1162},
  333. {0x3d6b, 2138},
  334. {0x3d71, 3719},
  335. {0x3d77, 1185},
  336. {0x3d7c, 4993},
  337. /* row 30 */
  338. {0x3e26, 321},
  339. {0x3e2e, 1355},
  340. {0x3e2f, 166},
  341. {0x3e3d, 2137},
  342. {0x3e3e, 2212},
  343. {0x3e46, 2772},
  344. {0x3e4b, 3192},
  345. {0x3e4e, 3280},
  346. {0x3e57, 1638},
  347. {0x3e5a, 4341},
  348. {0x3e5d, 4472},
  349. {0x3e65, 798},
  350. {0x3e68, 223},
  351. {0x3e6c, 1113},
  352. {0x3e6f, 1364},
  353. {0x3e75, 2839},
  354. {0x3e78, 4002},
  355. /* row 31 */
  356. {0x3f22, 2303},
  357. {0x3f27, 3889},
  358. {0x3f29, 5154},
  359. {0x3f2d, 403},
  360. {0x3f34, 1645},
  361. {0x3f36, 1920},
  362. {0x3f37, 2080},
  363. {0x3f39, 2301},
  364. {0x3f3f, 783},
  365. {0x3f43, 3837},
  366. {0x3f48, 4601},
  367. {0x3f49, 4646},
  368. {0x3f4a, 4709},
  369. {0x3f4c, 5055},
  370. {0x3f4d, 339},
  371. {0x3f5e, 1034},
  372. {0x3f62, 211},
  373. {0x3f65, 2482},
  374. {0x3f69, 3676},
  375. {0x3f74, 2057},
  376. /* row 32 */
  377. {0x402d, 1666},
  378. {0x402e, 1799},
  379. {0x4030, 2436},
  380. {0x4031, 2121},
  381. {0x4032, 2143},
  382. {0x4035, 27},
  383. {0x4038, 2991},
  384. {0x403e, 4273},
  385. {0x4044, 5076},
  386. {0x4045, 5077},
  387. {0x404e, 2108},
  388. {0x404f, 2194},
  389. {0x4050, 3176},
  390. {0x4051, 3306},
  391. {0x4056, 4534},
  392. {0x405a, 667},
  393. {0x405c, 1951},
  394. {0x405e, 1855},
  395. {0x4063, 5044},
  396. {0x4064, 3539},
  397. {0x4065, 3855},
  398. {0x4068, 571},
  399. {0x4069, 156},
  400. {0x406e, 1447},
  401. {0x4070, 1823},
  402. {0x407e, 3580},
  403. /* row 33 */
  404. {0x4125, 3873},
  405. {0x4130, 595},
  406. {0x4133, 2770},
  407. {0x4134, 384},
  408. {0x4147, 3511},
  409. {0x4148, 3520},
  410. {0x4150, 859},
  411. {0x4158, 1402},
  412. {0x415b, 1728},
  413. {0x4161, 2100},
  414. {0x416a, 2241},
  415. {0x416d, 3567},
  416. {0x4170, 3939},
  417. {0x4175, 4234},
  418. {0x4176, 4539},
  419. {0x417c, 540},
  420. {0x417d, 1137},
  421. /* row 34 */
  422. {0x4224, 4701},
  423. {0x4226, 509},
  424. {0x422b, 196},
  425. {0x422c, 2632},
  426. {0x422d, 4546},
  427. {0x422e, 4700},
  428. {0x4233, 3544},
  429. {0x4236, 590},
  430. {0x4238, 1267},
  431. {0x423e, 361},
  432. {0x423f, 1169},
  433. {0x4240, 1172},
  434. {0x424a, 2313},
  435. {0x424e, 405},
  436. {0x4250, 2067},
  437. {0x4256, 1743},
  438. {0x4265, 364},
  439. {0x4267, 1171},
  440. {0x4268, 3385},
  441. {0x426a, 2164},
  442. {0x426c, 2655},
  443. {0x4274, 2503},
  444. /* row 35 */
  445. {0x4323, 4721},
  446. {0x432b, 4458},
  447. {0x432f, 4384},
  448. {0x4331, 139},
  449. {0x433a, 1418},
  450. {0x433b, 3172},
  451. {0x4346, 1575},
  452. {0x434b, 2996},
  453. {0x434d, 488},
  454. {0x434e, 3169},
  455. {0x434f, 1056},
  456. {0x4356, 3644},
  457. {0x4359, 4722},
  458. {0x435d, 3366},
  459. {0x4362, 3325},
  460. {0x4363, 3940},
  461. {0x4365, 3665},
  462. {0x4366, 81},
  463. {0x4368, 1291},
  464. {0x436b, 53},
  465. {0x436c, 2236},
  466. {0x436e, 4115},
  467. /* row 36 */
  468. {0x442b, 3788},
  469. {0x442c, 2702},
  470. {0x4436, 4543},
  471. {0x4439, 4938},
  472. {0x443b, 5340},
  473. {0x443e, 775},
  474. {0x444c, 4703},
  475. {0x4463, 406},
  476. {0x446a, 1296},
  477. {0x446c, 1508},
  478. {0x446d, 1514},
  479. {0x4472, 1914},
  480. {0x4478, 3285},
  481. {0x4479, 3581},
  482. /* row 37 */
  483. {0x4526, 1987},
  484. {0x452a, 3097},
  485. {0x452f, 931},
  486. {0x4534, 4844},
  487. {0x4535, 588},
  488. {0x4537, 16},
  489. {0x453e, 4615},
  490. {0x4540, 804},
  491. {0x4544, 2994},
  492. {0x4545, 5050},
  493. {0x454c, 1614},
  494. {0x4559, 1511},
  495. {0x455a, 1050},
  496. {0x455f, 1161},
  497. {0x4561, 665},
  498. {0x4563, 1109},
  499. {0x4567, 230},
  500. {0x456c, 213},
  501. {0x4574, 2745},
  502. {0x4576, 1359},
  503. {0x4579, 3396},
  504. /* row 38 */
  505. {0x4626, 4465},
  506. {0x4630, 730},
  507. {0x4631, 619},
  508. {0x4633, 1354},
  509. {0x463b, 4724},
  510. {0x463c, 4853},
  511. {0x4643, 2860},
  512. {0x4649, 4375},
  513. {0x465e, 2160},
  514. {0x4662, 82},
  515. {0x466e, 778},
  516. {0x4671, 5038},
  517. {0x4673, 273},
  518. {0x4679, 3724},
  519. {0x467c, 2097},
  520. {0x467e, 574},
  521. /* row 39 */
  522. {0x4721, 1189},
  523. {0x472e, 2797},
  524. {0x472f, 188},
  525. {0x4733, 2808},
  526. {0x4734, 3472},
  527. {0x4748, 2529},
  528. {0x474f, 5191},
  529. {0x4769, 3275},
  530. {0x4772, 3095},
  531. {0x477e, 5385},
  532. /* row 40 */
  533. {0x4821, 49},
  534. {0x482c, 577},
  535. {0x482f, 3092},
  536. {0x483e, 132},
  537. {0x483f, 817},
  538. {0x4841, 1469},
  539. {0x484c, 3865},
  540. {0x4856, 4811},
  541. {0x4860, 1604},
  542. {0x4866, 2470},
  543. {0x4869, 3109},
  544. {0x4873, 5080},
  545. {0x4874, 5152},
  546. {0x4878, 1383},
  547. {0x4879, 1631},
  548. {0x487e, 3658},
  549. /* row 41 */
  550. {0x4921, 5421},
  551. {0x492e, 3397},
  552. {0x4934, 33},
  553. {0x4938, 2359},
  554. {0x4939, 131},
  555. {0x493d, 108},
  556. {0x4942, 3042},
  557. {0x4943, 3271},
  558. {0x494a, 923},
  559. {0x4954, 17},
  560. {0x495b, 1468},
  561. {0x4963, 2832},
  562. {0x4969, 4488},
  563. {0x4977, 5148},
  564. {0x497d, 1484},
  565. /* row 42 */
  566. {0x4a23, 4255},
  567. {0x4a26, 173},
  568. {0x4a2a, 2857},
  569. {0x4a2c, 578},
  570. {0x4a38, 2064},
  571. {0x4a39, 4959},
  572. {0x4a3f, 26},
  573. {0x4a42, 589},
  574. {0x4a44, 4945},
  575. {0x4a46, 3461},
  576. {0x4a50, 511},
  577. {0x4a51, 306},
  578. {0x4a52, 2842},
  579. {0x4a55, 4661},
  580. {0x4a6c, 2466},
  581. {0x4a7c, 2084},
  582. {0x4a7d, 2082},
  583. /* row 43 */
  584. {0x4b21, 2535},
  585. {0x4b26, 3749},
  586. {0x4b4c, 751},
  587. {0x4b4f, 5404},
  588. {0x4b5c, 96},
  589. {0x4b63, 5390},
  590. {0x4b68, 2467},
  591. {0x4b74, 855},
  592. {0x4b7c, 7},
  593. /* row 44 */
  594. {0x4c23, 913},
  595. {0x4c24, 179},
  596. {0x4c29, 1316},
  597. {0x4c35, 2773},
  598. {0x4c37, 3164},
  599. {0x4c3e, 1170},
  600. {0x4c40, 2110},
  601. {0x4c4c, 5087},
  602. {0x4c53, 2473},
  603. {0x4c5a, 2170},
  604. {0x4c5c, 3127},
  605. {0x4c64, 4944},
  606. {0x4c67, 4940},
  607. {0x4c6b, 298},
  608. {0x4c70, 3168},
  609. {0x4c72, 1598},
  610. {0x4c74, 4074},
  611. {0x4c78, 2233},
  612. {0x4c7d, 2534},
  613. /* row 45 */
  614. {0x4d2d, 3727},
  615. {0x4d30, 2565},
  616. {0x4d3a, 5030},
  617. {0x4d3c, 1167},
  618. {0x4d3e, 408},
  619. {0x4d4f, 2659},
  620. {0x4d51, 2993},
  621. {0x4d53, 3656},
  622. {0x4d55, 4001},
  623. {0x4d57, 4274},
  624. {0x4d5b, 5012},
  625. {0x4d63, 3680},
  626. {0x4d68, 202},
  627. {0x4d6b, 5049},
  628. {0x4d70, 3856},
  629. {0x4d71, 199},
  630. {0x4d72, 1431},
  631. {0x4d78, 3264},
  632. {0x4d7d, 2942},
  633. /* row 46 */
  634. {0x4e24, 4813},
  635. {0x4e25, 5040},
  636. {0x4e26, 5005},
  637. {0x4e28, 319},
  638. {0x4e29, 3343},
  639. {0x4e2e, 2576},
  640. {0x4e32, 3191},
  641. {0x4e33, 3471},
  642. {0x4e35, 5440},
  643. {0x4e3e, 34},
  644. {0x4e41, 3468},
  645. {0x4e49, 3885},
  646. {0x4e4c, 2141},
  647. {0x4e4f, 715},
  648. {0x4e53, 2210},
  649. {0x4e55, 2807},
  650. {0x4e58, 4630},
  651. {0x4e60, 5138},
  652. {0x4e63, 428},
  653. {0x4e64, 642},
  654. {0x4e6d, 5048},
  655. {0x4e6e, 5056},
  656. {0x4e73, 2438},
  657. /* row 47 */
  658. {0x4f22, 4702},
  659. {0x4f27, 2750},
  660. {0x4f29, 4561},
  661. {0x4f37, 3683},
  662. {0x4f3b, 283},
  663. {0x4f40, 4391},
  664. {0x4f42, 3268},
  665. {0x4f43, 4358},
  666. {0x4f44, 54},
  667. {0x4f47, 1710},
  668. /* 7 additional Level 2 Kanji */
  669. {0x534c, 973}, /* row 51 */
  670. {0x5879, 1794}, /* row 56 */
  671. {0x5960, 1942}, /* row 57 */
  672. {0x626f, 3200}, /* row 66 */
  673. {0x6446, 3458}, /* row 68 */
  674. {0x6647, 5083}, /* row 70 */
  675. {0x6d55, 4633}, /* row 77 */
  676. {0, 0}
  677. };
  678. /* Non-Kanji characters in the JIS character set. We map nearly all of
  679. these into characters (in the 0..255 range) in our existing fonts, which
  680. are laid out in g_fontdb.c. If RAW_HERSHEY_GLYPH bit is set, the font
  681. is ignored, since the character is to be mapped directly to a Hershey
  682. glyph (presumably one that appears in no font). */
  683. struct jis_entry
  684. {
  685. int jis, font;
  686. unsigned short charnum;
  687. };
  688. static const struct jis_entry _builtin_jis_chars[] =
  689. {
  690. /* Row 1 [misc.] */
  691. {0x2121, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 4399}, /* full-width space */
  692. {0x2122, PL_HERSHEY_HIRAGANA, 0x79},
  693. {0x2123, PL_HERSHEY_HIRAGANA, 0x7a},
  694. {0x2124, PL_HERSHEY_SERIF, ','},
  695. {0x2125, PL_HERSHEY_SERIF, '.'},
  696. {0x2126, PL_HERSHEY_SERIF, 0xb7},
  697. {0x2127, PL_HERSHEY_SERIF, ':'},
  698. {0x2128, PL_HERSHEY_SERIF, ';'},
  699. {0x2129, PL_HERSHEY_SERIF, '?'},
  700. {0x212a, PL_HERSHEY_SERIF, '!'},
  701. /* 0x212b..0x212c are Japanese diacritics, shifted left */
  702. {0x212d, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 4180},
  703. {0x212e, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 4181},
  704. {0x212f, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 4182},
  705. {0x2130, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 4184},
  706. {0x2131, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 4008},
  707. {0x2132, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 4012},
  708. /* 0x2133..0x213a are Japanese characters */
  709. {0x213b, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 903},
  710. {0x213c, PL_HERSHEY_KATAKANA, 0x78},
  711. {0x213d, PL_HERSHEY_SERIF, '-'},
  712. {0x213e, PL_HERSHEY_SERIF, 0xad},
  713. {0x213f, PL_HERSHEY_SERIF, '/'},
  714. {0x2140, PL_HERSHEY_SERIF, '\\'},
  715. {0x2141, PL_HERSHEY_SERIF, '~'},
  716. {0x2142, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 2230},
  717. {0x2143, PL_HERSHEY_SERIF, '|'},
  718. {0x2144, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 276},
  719. {0x2145, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 238},
  720. {0x2146, PL_HERSHEY_SERIF, '`'},
  721. {0x2147, PL_HERSHEY_SERIF, '\''},
  722. {0x2148, PL_HERSHEY_SERIF, '`'}, /* should be double quotes, fixme */
  723. {0x2149, PL_HERSHEY_SERIF, '\''}, /* same */
  724. {0x214a, PL_HERSHEY_SERIF, '('},
  725. {0x214b, PL_HERSHEY_SERIF, ')'},
  726. {0x214c, PL_HERSHEY_SERIF, '['}, /* should be `bent' brackets, fixme */
  727. {0x214d, PL_HERSHEY_SERIF, ']'}, /* same */
  728. {0x214e, PL_HERSHEY_SERIF, '['},
  729. {0x214f, PL_HERSHEY_SERIF, ']'},
  730. {0x2150, PL_HERSHEY_SERIF, '{'},
  731. {0x2151, PL_HERSHEY_SERIF, '}'},
  732. {0x2152, PL_HERSHEY_SERIF_SYMBOL, 0xe1},
  733. {0x2153, PL_HERSHEY_SERIF_SYMBOL, 0xf1},
  734. /* 0x2154..0x2155 are double angle brackets */
  735. {0x2156, PL_HERSHEY_SERIF_SYMBOL, 0xe9},
  736. {0x2157, PL_HERSHEY_SERIF_SYMBOL, 0xfb},
  737. {0x2158, PL_HERSHEY_SERIF_SYMBOL, 0xe9}, /* should be outlined \lc and \rf, fixme */
  738. {0x2159, PL_HERSHEY_SERIF_SYMBOL, 0xfb}, /* same */
  739. {0x215a, PL_HERSHEY_SERIF_BOLD, '['}, /* shouldn't be ordinary bold brackets, fixme */
  740. {0x215b, PL_HERSHEY_SERIF_BOLD, ']'}, /* same */
  741. {0x215c, PL_HERSHEY_SERIF, '+'},
  742. {0x215d, PL_HERSHEY_SERIF, '-'},
  743. {0x215e, PL_HERSHEY_SERIF_SYMBOL, 0xb1},
  744. {0x215f, PL_HERSHEY_SERIF, 0xd7},
  745. {0x2160, PL_HERSHEY_SERIF, 0xf7},
  746. {0x2161, PL_HERSHEY_SERIF, '='},
  747. {0x2162, PL_HERSHEY_SERIF_SYMBOL, 0xb9},
  748. {0x2163, PL_HERSHEY_SERIF, '<'},
  749. {0x2164, PL_HERSHEY_SERIF, '>'},
  750. {0x2165, PL_HERSHEY_SERIF_SYMBOL, 0xa3},
  751. {0x2166, PL_HERSHEY_SERIF_SYMBOL, 0xb3},
  752. {0x2167, PL_HERSHEY_SERIF_SYMBOL, 0xa5},
  753. {0x2168, PL_HERSHEY_SERIF_SYMBOL, 0x5c},
  754. {0x2169, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 2285},
  755. {0x216a, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 2283},
  756. {0x216b, PL_HERSHEY_SERIF_SYMBOL, 0xb0},
  757. {0x216c, PL_HERSHEY_SERIF_SYMBOL, 0xa2},
  758. {0x216d, PL_HERSHEY_SERIF_SYMBOL, 0xb2},
  759. /* 0x216e is degrees centigrade */
  760. {0x216f, PL_HERSHEY_SERIF, 0xa5},
  761. {0x2170, PL_HERSHEY_SERIF, '$'},
  762. {0x2171, PL_HERSHEY_SERIF, 0xa2},
  763. {0x2172, PL_HERSHEY_SERIF, 0xa3},
  764. {0x2173, PL_HERSHEY_SERIF, '%'},
  765. {0x2174, PL_HERSHEY_SERIF, '#'},
  766. {0x2175, PL_HERSHEY_SERIF, '&'},
  767. {0x2176, PL_HERSHEY_SERIF, '*'},
  768. {0x2177, PL_HERSHEY_SERIF, '@'},
  769. {0x2178, PL_HERSHEY_SERIF, 0xa7},
  770. {0x2179, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 844},
  771. {0x217a, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 856},
  772. {0x217b, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 901},
  773. {0x217c, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 850}, /* should be filled circle */
  774. {0x217d, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 4109},
  775. {0x217e, PL_HERSHEY_SERIF_SYMBOL, 0xe0}, /* lozenge rather than square; OK? */
  776. /* Row 2 [misc.] */
  777. /* 0x2220..0x2229 are mostly squares, triangles */
  778. {0x222a, PL_HERSHEY_SERIF_SYMBOL, 0xae},
  779. {0x222b, PL_HERSHEY_SERIF_SYMBOL, 0xac},
  780. {0x222c, PL_HERSHEY_SERIF_SYMBOL, 0xad},
  781. {0x222d, PL_HERSHEY_SERIF_SYMBOL, 0xaf},
  782. {0x222d, PL_HERSHEY_SERIF_BOLD, '='}, /* 0x222e is two bold horizontal strokes, NOT bold = */
  783. {0x223a, PL_HERSHEY_SERIF_SYMBOL, 0xce},
  784. {0x223b, PL_HERSHEY_SERIF_SYMBOL, RAW_HERSHEY_GLYPH + 282},
  785. {0x223c, PL_HERSHEY_SERIF_SYMBOL, 0xcd},
  786. {0x223d, PL_HERSHEY_SERIF_SYMBOL, 0xca},
  787. {0x223e, PL_HERSHEY_SERIF_SYMBOL, 0xcc},
  788. {0x223f, PL_HERSHEY_SERIF_SYMBOL, 0xc9},
  789. {0x2240, PL_HERSHEY_SERIF_SYMBOL, 0xc8},
  790. {0x2241, PL_HERSHEY_SERIF_SYMBOL, 0xc7},
  791. {0x224a, PL_HERSHEY_SERIF_SYMBOL, 0xd9},
  792. {0x224b, PL_HERSHEY_SERIF_SYMBOL, 0xda},
  793. {0x224c, PL_HERSHEY_SERIF, 0xac},
  794. {0x224d, PL_HERSHEY_SERIF_SYMBOL, 0xde},
  795. {0x224e, PL_HERSHEY_SERIF_SYMBOL, 0xdb},
  796. {0x224f, PL_HERSHEY_SERIF_SYMBOL, 0x22},
  797. {0x2250, PL_HERSHEY_SERIF_SYMBOL, 0x24},
  798. {0x225c, PL_HERSHEY_SERIF_SYMBOL, 0xb0},
  799. {0x225d, PL_HERSHEY_SERIF_SYMBOL, 0x5e},
  800. {0x225e, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 4008},
  801. {0x225f, PL_HERSHEY_SERIF_SYMBOL, 0xb6},
  802. {0x2260, PL_HERSHEY_SERIF_SYMBOL, 0xd1},
  803. {0x2261, PL_HERSHEY_SERIF_SYMBOL, 0xba},
  804. {0x2262, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 276},
  805. /* 0x2263..0x2264 are \ll and \gg */
  806. {0x2265, PL_HERSHEY_SERIF_SYMBOL, 0xd6},
  807. {0x2266, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 4133},
  808. {0x2267, PL_HERSHEY_SERIF_SYMBOL, 0xb5},
  809. {0x2268, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 4132},
  810. {0x2269, PL_HERSHEY_SERIF_SYMBOL, 0xf2},
  811. /* 0x2270 is a double integral */
  812. {0x2272, PL_HERSHEY_SERIF, 0xc5},
  813. /* 0x2273 is perthousand */
  814. {0x2274, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 2323},
  815. {0x2275, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 2325},
  816. /* 0x2276 is an eighth note */
  817. {0x2277, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 2277},
  818. {0x2278, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 2278},
  819. {0x2279, PL_HERSHEY_SERIF, 0xb6},
  820. {0x227e, PL_HERSHEY_SERIF, RAW_HERSHEY_GLYPH + 905},
  821. /* Row 3 [Roman characters], taken from HersheySerif */
  822. {0x2330, PL_HERSHEY_SERIF, '0'},
  823. {0x2331, PL_HERSHEY_SERIF, '1'},
  824. {0x2332, PL_HERSHEY_SERIF, '2'},
  825. {0x2333, PL_HERSHEY_SERIF, '3'},
  826. {0x2334, PL_HERSHEY_SERIF, '4'},
  827. {0x2335, PL_HERSHEY_SERIF, '5'},
  828. {0x2336, PL_HERSHEY_SERIF, '6'},
  829. {0x2337, PL_HERSHEY_SERIF, '7'},
  830. {0x2338, PL_HERSHEY_SERIF, '8'},
  831. {0x2339, PL_HERSHEY_SERIF, '9'},
  832. {0x2341, PL_HERSHEY_SERIF, 'A'},
  833. {0x2342, PL_HERSHEY_SERIF, 'B'},
  834. {0x2343, PL_HERSHEY_SERIF, 'C'},
  835. {0x2344, PL_HERSHEY_SERIF, 'D'},
  836. {0x2345, PL_HERSHEY_SERIF, 'E'},
  837. {0x2346, PL_HERSHEY_SERIF, 'F'},
  838. {0x2347, PL_HERSHEY_SERIF, 'G'},
  839. {0x2348, PL_HERSHEY_SERIF, 'H'},
  840. {0x2349, PL_HERSHEY_SERIF, 'I'},
  841. {0x234a, PL_HERSHEY_SERIF, 'J'},
  842. {0x234b, PL_HERSHEY_SERIF, 'K'},
  843. {0x234c, PL_HERSHEY_SERIF, 'L'},
  844. {0x234d, PL_HERSHEY_SERIF, 'M'},
  845. {0x234e, PL_HERSHEY_SERIF, 'N'},
  846. {0x234f, PL_HERSHEY_SERIF, 'O'},
  847. {0x2350, PL_HERSHEY_SERIF, 'P'},
  848. {0x2351, PL_HERSHEY_SERIF, 'Q'},
  849. {0x2352, PL_HERSHEY_SERIF, 'R'},
  850. {0x2353, PL_HERSHEY_SERIF, 'S'},
  851. {0x2354, PL_HERSHEY_SERIF, 'T'},
  852. {0x2355, PL_HERSHEY_SERIF, 'U'},
  853. {0x2356, PL_HERSHEY_SERIF, 'V'},
  854. {0x2357, PL_HERSHEY_SERIF, 'W'},
  855. {0x2358, PL_HERSHEY_SERIF, 'X'},
  856. {0x2359, PL_HERSHEY_SERIF, 'Y'},
  857. {0x235a, PL_HERSHEY_SERIF, 'Z'},
  858. {0x2361, PL_HERSHEY_SERIF, 'a'},
  859. {0x2362, PL_HERSHEY_SERIF, 'b'},
  860. {0x2363, PL_HERSHEY_SERIF, 'c'},
  861. {0x2364, PL_HERSHEY_SERIF, 'd'},
  862. {0x2365, PL_HERSHEY_SERIF, 'e'},
  863. {0x2366, PL_HERSHEY_SERIF, 'f'},
  864. {0x2367, PL_HERSHEY_SERIF, 'g'},
  865. {0x2368, PL_HERSHEY_SERIF, 'h'},
  866. {0x2369, PL_HERSHEY_SERIF, 'i'},
  867. {0x236a, PL_HERSHEY_SERIF, 'j'},
  868. {0x236b, PL_HERSHEY_SERIF, 'k'},
  869. {0x236c, PL_HERSHEY_SERIF, 'l'},
  870. {0x236d, PL_HERSHEY_SERIF, 'm'},
  871. {0x236e, PL_HERSHEY_SERIF, 'n'},
  872. {0x236f, PL_HERSHEY_SERIF, 'o'},
  873. {0x2370, PL_HERSHEY_SERIF, 'p'},
  874. {0x2371, PL_HERSHEY_SERIF, 'q'},
  875. {0x2372, PL_HERSHEY_SERIF, 'r'},
  876. {0x2373, PL_HERSHEY_SERIF, 's'},
  877. {0x2374, PL_HERSHEY_SERIF, 't'},
  878. {0x2375, PL_HERSHEY_SERIF, 'u'},
  879. {0x2376, PL_HERSHEY_SERIF, 'v'},
  880. {0x2377, PL_HERSHEY_SERIF, 'w'},
  881. {0x2378, PL_HERSHEY_SERIF, 'x'},
  882. {0x2379, PL_HERSHEY_SERIF, 'y'},
  883. {0x237a, PL_HERSHEY_SERIF, 'z'},
  884. /* Row 4 [Hiragana], taken from HersheyHiragana. */
  885. {0x2421, PL_HERSHEY_HIRAGANA, 0x21},
  886. {0x2422, PL_HERSHEY_HIRAGANA, 0x22},
  887. {0x2423, PL_HERSHEY_HIRAGANA, 0x23},
  888. {0x2424, PL_HERSHEY_HIRAGANA, 0x24},
  889. {0x2425, PL_HERSHEY_HIRAGANA, 0x25},
  890. {0x2426, PL_HERSHEY_HIRAGANA, 0x26},
  891. {0x2427, PL_HERSHEY_HIRAGANA, 0x27},
  892. {0x2428, PL_HERSHEY_HIRAGANA, 0x28},
  893. {0x2429, PL_HERSHEY_HIRAGANA, 0x29},
  894. {0x242a, PL_HERSHEY_HIRAGANA, 0x2a},
  895. {0x242b, PL_HERSHEY_HIRAGANA, 0x2b},
  896. {0x242c, PL_HERSHEY_HIRAGANA, 0x2c},
  897. {0x242d, PL_HERSHEY_HIRAGANA, 0x2d},
  898. {0x242e, PL_HERSHEY_HIRAGANA, 0x2e},
  899. {0x242f, PL_HERSHEY_HIRAGANA, 0x2f},
  900. {0x2430, PL_HERSHEY_HIRAGANA, 0x30},
  901. {0x2431, PL_HERSHEY_HIRAGANA, 0x31},
  902. {0x2432, PL_HERSHEY_HIRAGANA, 0x32},
  903. {0x2433, PL_HERSHEY_HIRAGANA, 0x33},
  904. {0x2434, PL_HERSHEY_HIRAGANA, 0x34},
  905. {0x2435, PL_HERSHEY_HIRAGANA, 0x35},
  906. {0x2436, PL_HERSHEY_HIRAGANA, 0x36},
  907. {0x2437, PL_HERSHEY_HIRAGANA, 0x37},
  908. {0x2438, PL_HERSHEY_HIRAGANA, 0x38},
  909. {0x2439, PL_HERSHEY_HIRAGANA, 0x39},
  910. {0x243a, PL_HERSHEY_HIRAGANA, 0x3a},
  911. {0x243b, PL_HERSHEY_HIRAGANA, 0x3b},
  912. {0x243c, PL_HERSHEY_HIRAGANA, 0x3c},
  913. {0x243d, PL_HERSHEY_HIRAGANA, 0x3d},
  914. {0x243e, PL_HERSHEY_HIRAGANA, 0x3e},
  915. {0x243f, PL_HERSHEY_HIRAGANA, 0x3f},
  916. {0x2440, PL_HERSHEY_HIRAGANA, 0x40},
  917. {0x2441, PL_HERSHEY_HIRAGANA, 0x41},
  918. {0x2442, PL_HERSHEY_HIRAGANA, 0x42},
  919. {0x2443, PL_HERSHEY_HIRAGANA, 0x43},
  920. {0x2444, PL_HERSHEY_HIRAGANA, 0x44},
  921. {0x2445, PL_HERSHEY_HIRAGANA, 0x45},
  922. {0x2446, PL_HERSHEY_HIRAGANA, 0x46},
  923. {0x2447, PL_HERSHEY_HIRAGANA, 0x47},
  924. {0x2448, PL_HERSHEY_HIRAGANA, 0x48},
  925. {0x2449, PL_HERSHEY_HIRAGANA, 0x49},
  926. {0x244a, PL_HERSHEY_HIRAGANA, 0x4a},
  927. {0x244b, PL_HERSHEY_HIRAGANA, 0x4b},
  928. {0x244c, PL_HERSHEY_HIRAGANA, 0x4c},
  929. {0x244d, PL_HERSHEY_HIRAGANA, 0x4d},
  930. {0x244e, PL_HERSHEY_HIRAGANA, 0x4e},
  931. {0x244f, PL_HERSHEY_HIRAGANA, 0x4f},
  932. {0x2450, PL_HERSHEY_HIRAGANA, 0x50},
  933. {0x2451, PL_HERSHEY_HIRAGANA, 0x51},
  934. {0x2452, PL_HERSHEY_HIRAGANA, 0x52},
  935. {0x2453, PL_HERSHEY_HIRAGANA, 0x53},
  936. {0x2454, PL_HERSHEY_HIRAGANA, 0x54},
  937. {0x2455, PL_HERSHEY_HIRAGANA, 0x55},
  938. {0x2456, PL_HERSHEY_HIRAGANA, 0x56},
  939. {0x2457, PL_HERSHEY_HIRAGANA, 0x57},
  940. {0x2458, PL_HERSHEY_HIRAGANA, 0x58},
  941. {0x2459, PL_HERSHEY_HIRAGANA, 0x59},
  942. {0x245a, PL_HERSHEY_HIRAGANA, 0x5a},
  943. {0x245b, PL_HERSHEY_HIRAGANA, 0x5b},
  944. {0x245c, PL_HERSHEY_HIRAGANA, 0x5c},
  945. {0x245d, PL_HERSHEY_HIRAGANA, 0x5d},
  946. {0x245e, PL_HERSHEY_HIRAGANA, 0x5e},
  947. {0x245f, PL_HERSHEY_HIRAGANA, 0x5f},
  948. {0x2460, PL_HERSHEY_HIRAGANA, 0x60},
  949. {0x2461, PL_HERSHEY_HIRAGANA, 0x61},
  950. {0x2462, PL_HERSHEY_HIRAGANA, 0x62},
  951. {0x2463, PL_HERSHEY_HIRAGANA, 0x63},
  952. {0x2464, PL_HERSHEY_HIRAGANA, 0x64},
  953. {0x2465, PL_HERSHEY_HIRAGANA, 0x65},
  954. {0x2466, PL_HERSHEY_HIRAGANA, 0x66},
  955. {0x2467, PL_HERSHEY_HIRAGANA, 0x67},
  956. {0x2468, PL_HERSHEY_HIRAGANA, 0x68},
  957. {0x2469, PL_HERSHEY_HIRAGANA, 0x69},
  958. {0x246a, PL_HERSHEY_HIRAGANA, 0x6a},
  959. {0x246b, PL_HERSHEY_HIRAGANA, 0x6b},
  960. {0x246c, PL_HERSHEY_HIRAGANA, 0x6c},
  961. {0x246d, PL_HERSHEY_HIRAGANA, 0x6d},
  962. {0x246e, PL_HERSHEY_HIRAGANA, 0x6e},
  963. {0x246f, PL_HERSHEY_HIRAGANA, 0x6f},
  964. {0x2470, PL_HERSHEY_HIRAGANA, 0x70},
  965. {0x2471, PL_HERSHEY_HIRAGANA, 0x71},
  966. {0x2472, PL_HERSHEY_HIRAGANA, 0x72},
  967. {0x2473, PL_HERSHEY_HIRAGANA, 0x73},
  968. /* Row 5 [Katakana], taken from HersheyKatakana. */
  969. {0x2521, PL_HERSHEY_KATAKANA, 0x21},
  970. {0x2522, PL_HERSHEY_KATAKANA, 0x22},
  971. {0x2523, PL_HERSHEY_KATAKANA, 0x23},
  972. {0x2524, PL_HERSHEY_KATAKANA, 0x24},
  973. {0x2525, PL_HERSHEY_KATAKANA, 0x25},
  974. {0x2526, PL_HERSHEY_KATAKANA, 0x26},
  975. {0x2527, PL_HERSHEY_KATAKANA, 0x27},
  976. {0x2528, PL_HERSHEY_KATAKANA, 0x28},
  977. {0x2529, PL_HERSHEY_KATAKANA, 0x29},
  978. {0x252a, PL_HERSHEY_KATAKANA, 0x2a},
  979. {0x252b, PL_HERSHEY_KATAKANA, 0x2b},
  980. {0x252c, PL_HERSHEY_KATAKANA, 0x2c},
  981. {0x252d, PL_HERSHEY_KATAKANA, 0x2d},
  982. {0x252e, PL_HERSHEY_KATAKANA, 0x2e},
  983. {0x252f, PL_HERSHEY_KATAKANA, 0x2f},
  984. {0x2530, PL_HERSHEY_KATAKANA, 0x30},
  985. {0x2531, PL_HERSHEY_KATAKANA, 0x31},
  986. {0x2532, PL_HERSHEY_KATAKANA, 0x32},
  987. {0x2533, PL_HERSHEY_KATAKANA, 0x33},
  988. {0x2534, PL_HERSHEY_KATAKANA, 0x34},
  989. {0x2535, PL_HERSHEY_KATAKANA, 0x35},
  990. {0x2536, PL_HERSHEY_KATAKANA, 0x36},
  991. {0x2537, PL_HERSHEY_KATAKANA, 0x37},
  992. {0x2538, PL_HERSHEY_KATAKANA, 0x38},
  993. {0x2539, PL_HERSHEY_KATAKANA, 0x39},
  994. {0x253a, PL_HERSHEY_KATAKANA, 0x3a},
  995. {0x253b, PL_HERSHEY_KATAKANA, 0x3b},
  996. {0x253c, PL_HERSHEY_KATAKANA, 0x3c},
  997. {0x253d, PL_HERSHEY_KATAKANA, 0x3d},
  998. {0x253e, PL_HERSHEY_KATAKANA, 0x3e},
  999. {0x253f, PL_HERSHEY_KATAKANA, 0x3f},
  1000. {0x2540, PL_HERSHEY_KATAKANA, 0x40},
  1001. {0x2541, PL_HERSHEY_KATAKANA, 0x41},
  1002. {0x2542, PL_HERSHEY_KATAKANA, 0x42},
  1003. {0x2543, PL_HERSHEY_KATAKANA, 0x43},
  1004. {0x2544, PL_HERSHEY_KATAKANA, 0x44},
  1005. {0x2545, PL_HERSHEY_KATAKANA, 0x45},
  1006. {0x2546, PL_HERSHEY_KATAKANA, 0x46},
  1007. {0x2547, PL_HERSHEY_KATAKANA, 0x47},
  1008. {0x2548, PL_HERSHEY_KATAKANA, 0x48},
  1009. {0x2549, PL_HERSHEY_KATAKANA, 0x49},
  1010. {0x254a, PL_HERSHEY_KATAKANA, 0x4a},
  1011. {0x254b, PL_HERSHEY_KATAKANA, 0x4b},
  1012. {0x254c, PL_HERSHEY_KATAKANA, 0x4c},
  1013. {0x254d, PL_HERSHEY_KATAKANA, 0x4d},
  1014. {0x254e, PL_HERSHEY_KATAKANA, 0x4e},
  1015. {0x254f, PL_HERSHEY_KATAKANA, 0x4f},
  1016. {0x2550, PL_HERSHEY_KATAKANA, 0x50},
  1017. {0x2551, PL_HERSHEY_KATAKANA, 0x51},
  1018. {0x2552, PL_HERSHEY_KATAKANA, 0x52},
  1019. {0x2553, PL_HERSHEY_KATAKANA, 0x53},
  1020. {0x2554, PL_HERSHEY_KATAKANA, 0x54},
  1021. {0x2555, PL_HERSHEY_KATAKANA, 0x55},
  1022. {0x2556, PL_HERSHEY_KATAKANA, 0x56},
  1023. {0x2557, PL_HERSHEY_KATAKANA, 0x57},
  1024. {0x2558, PL_HERSHEY_KATAKANA, 0x58},
  1025. {0x2559, PL_HERSHEY_KATAKANA, 0x59},
  1026. {0x255a, PL_HERSHEY_KATAKANA, 0x5a},
  1027. {0x255b, PL_HERSHEY_KATAKANA, 0x5b},
  1028. {0x255c, PL_HERSHEY_KATAKANA, 0x5c},
  1029. {0x255d, PL_HERSHEY_KATAKANA, 0x5d},
  1030. {0x255e, PL_HERSHEY_KATAKANA, 0x5e},
  1031. {0x255f, PL_HERSHEY_KATAKANA, 0x5f},
  1032. {0x2560, PL_HERSHEY_KATAKANA, 0x60},
  1033. {0x2561, PL_HERSHEY_KATAKANA, 0x61},
  1034. {0x2562, PL_HERSHEY_KATAKANA, 0x62},
  1035. {0x2563, PL_HERSHEY_KATAKANA, 0x63},
  1036. {0x2564, PL_HERSHEY_KATAKANA, 0x64},
  1037. {0x2565, PL_HERSHEY_KATAKANA, 0x65},
  1038. {0x2566, PL_HERSHEY_KATAKANA, 0x66},
  1039. {0x2567, PL_HERSHEY_KATAKANA, 0x67},
  1040. {0x2568, PL_HERSHEY_KATAKANA, 0x68},
  1041. {0x2569, PL_HERSHEY_KATAKANA, 0x69},
  1042. {0x256a, PL_HERSHEY_KATAKANA, 0x6a},
  1043. {0x256b, PL_HERSHEY_KATAKANA, 0x6b},
  1044. {0x256c, PL_HERSHEY_KATAKANA, 0x6c},
  1045. {0x256d, PL_HERSHEY_KATAKANA, 0x6d},
  1046. {0x256e, PL_HERSHEY_KATAKANA, 0x6e},
  1047. {0x256f, PL_HERSHEY_KATAKANA, 0x6f},
  1048. {0x2570, PL_HERSHEY_KATAKANA, 0x70},
  1049. {0x2571, PL_HERSHEY_KATAKANA, 0x71},
  1050. {0x2572, PL_HERSHEY_KATAKANA, 0x72},
  1051. {0x2573, PL_HERSHEY_KATAKANA, 0x73},
  1052. {0x2574, PL_HERSHEY_KATAKANA, 0x74},
  1053. {0x2575, PL_HERSHEY_KATAKANA, 0x75},
  1054. {0x2576, PL_HERSHEY_KATAKANA, 0x76},
  1055. /* Row 6 [Greek characters], taken from HersheySerif-Symbol. */
  1056. {0x2621, PL_HERSHEY_SERIF_SYMBOL, 'A'},
  1057. {0x2622, PL_HERSHEY_SERIF_SYMBOL, 'B'},
  1058. {0x2623, PL_HERSHEY_SERIF_SYMBOL, 'G'},
  1059. {0x2624, PL_HERSHEY_SERIF_SYMBOL, 'D'},
  1060. {0x2625, PL_HERSHEY_SERIF_SYMBOL, 'E'},
  1061. {0x2626, PL_HERSHEY_SERIF_SYMBOL, 'Z'},
  1062. {0x2627, PL_HERSHEY_SERIF_SYMBOL, 'H'},
  1063. {0x2628, PL_HERSHEY_SERIF_SYMBOL, 'Q'},
  1064. {0x2629, PL_HERSHEY_SERIF_SYMBOL, 'I'},
  1065. {0x262a, PL_HERSHEY_SERIF_SYMBOL, 'K'},
  1066. {0x262b, PL_HERSHEY_SERIF_SYMBOL, 'L'},
  1067. {0x262c, PL_HERSHEY_SERIF_SYMBOL, 'M'},
  1068. {0x262d, PL_HERSHEY_SERIF_SYMBOL, 'N'},
  1069. {0x262e, PL_HERSHEY_SERIF_SYMBOL, 'X'},
  1070. {0x262f, PL_HERSHEY_SERIF_SYMBOL, 'O'},
  1071. {0x2630, PL_HERSHEY_SERIF_SYMBOL, 'P'},
  1072. {0x2631, PL_HERSHEY_SERIF_SYMBOL, 'R'},
  1073. {0x2632, PL_HERSHEY_SERIF_SYMBOL, 'S'},
  1074. {0x2633, PL_HERSHEY_SERIF_SYMBOL, 'T'},
  1075. {0x2634, PL_HERSHEY_SERIF_SYMBOL, 0x80 + '!'}, /* variant upsilon */
  1076. {0x2635, PL_HERSHEY_SERIF_SYMBOL, 'F'},
  1077. {0x2636, PL_HERSHEY_SERIF_SYMBOL, 'C'},
  1078. {0x2637, PL_HERSHEY_SERIF_SYMBOL, 'Y'},
  1079. {0x2638, PL_HERSHEY_SERIF_SYMBOL, 'W'},
  1080. {0x2641, PL_HERSHEY_SERIF_SYMBOL, 'a'},
  1081. {0x2642, PL_HERSHEY_SERIF_SYMBOL, 'b'},
  1082. {0x2643, PL_HERSHEY_SERIF_SYMBOL, 'g'},
  1083. {0x2644, PL_HERSHEY_SERIF_SYMBOL, 'd'},
  1084. {0x2645, PL_HERSHEY_SERIF_SYMBOL, 'e'},
  1085. {0x2646, PL_HERSHEY_SERIF_SYMBOL, 'z'},
  1086. {0x2647, PL_HERSHEY_SERIF_SYMBOL, 'h'},
  1087. {0x2648, PL_HERSHEY_SERIF_SYMBOL, 'q'},
  1088. {0x2649, PL_HERSHEY_SERIF_SYMBOL, 'i'},
  1089. {0x264a, PL_HERSHEY_SERIF_SYMBOL, 'k'},
  1090. {0x264b, PL_HERSHEY_SERIF_SYMBOL, 'l'},
  1091. {0x264c, PL_HERSHEY_SERIF_SYMBOL, 'm'},
  1092. {0x264d, PL_HERSHEY_SERIF_SYMBOL, 'n'},
  1093. {0x264e, PL_HERSHEY_SERIF_SYMBOL, 'x'},
  1094. {0x264f, PL_HERSHEY_SERIF_SYMBOL, 'o'},
  1095. {0x2650, PL_HERSHEY_SERIF_SYMBOL, 'p'},
  1096. {0x2651, PL_HERSHEY_SERIF_SYMBOL, 'r'},
  1097. {0x2652, PL_HERSHEY_SERIF_SYMBOL, 's'},
  1098. {0x2653, PL_HERSHEY_SERIF_SYMBOL, 't'},
  1099. {0x2654, PL_HERSHEY_SERIF_SYMBOL, 'u'},
  1100. {0x2655, PL_HERSHEY_SERIF_SYMBOL, 'f'},
  1101. {0x2656, PL_HERSHEY_SERIF_SYMBOL, 'c'},
  1102. {0x2657, PL_HERSHEY_SERIF_SYMBOL, 'y'},
  1103. {0x2658, PL_HERSHEY_SERIF_SYMBOL, 'w'},
  1104. /* Row 7 [Cyrillic characters], taken from HersheyCyrillic. The strange
  1105. order is because we are mapping to the KOI8-R encoding. */
  1106. {0x2721, PL_HERSHEY_CYRILLIC, 0x80 + 'a'},
  1107. {0x2722, PL_HERSHEY_CYRILLIC, 0x80 + 'b'},
  1108. {0x2723, PL_HERSHEY_CYRILLIC, 0x80 + 'w'},
  1109. {0x2724, PL_HERSHEY_CYRILLIC, 0x80 + 'g'},
  1110. {0x2725, PL_HERSHEY_CYRILLIC, 0x80 + 'd'},
  1111. {0x2726, PL_HERSHEY_CYRILLIC, 0x80 + 'e'},
  1112. {0x2727, PL_HERSHEY_CYRILLIC, 0x80 + '3'},
  1113. {0x2728, PL_HERSHEY_CYRILLIC, 0x80 + 'v'},
  1114. {0x2729, PL_HERSHEY_CYRILLIC, 0x80 + 'z'},
  1115. {0x272a, PL_HERSHEY_CYRILLIC, 0x80 + 'i'},
  1116. {0x272b, PL_HERSHEY_CYRILLIC, 0x80 + 'j'},
  1117. {0x272c, PL_HERSHEY_CYRILLIC, 0x80 + 'k'},
  1118. {0x272d, PL_HERSHEY_CYRILLIC, 0x80 + 'l'},
  1119. {0x272e, PL_HERSHEY_CYRILLIC, 0x80 + 'm'},
  1120. {0x272f, PL_HERSHEY_CYRILLIC, 0x80 + 'n'},
  1121. {0x2730, PL_HERSHEY_CYRILLIC, 0x80 + 'o'},
  1122. {0x2731, PL_HERSHEY_CYRILLIC, 0x80 + 'p'},
  1123. {0x2732, PL_HERSHEY_CYRILLIC, 0x80 + 'r'},
  1124. {0x2733, PL_HERSHEY_CYRILLIC, 0x80 + 's'},
  1125. {0x2734, PL_HERSHEY_CYRILLIC, 0x80 + 't'},
  1126. {0x2735, PL_HERSHEY_CYRILLIC, 0x80 + 'u'},
  1127. {0x2736, PL_HERSHEY_CYRILLIC, 0x80 + 'f'},
  1128. {0x2737, PL_HERSHEY_CYRILLIC, 0x80 + 'h'},
  1129. {0x2738, PL_HERSHEY_CYRILLIC, 0x80 + 'c'},
  1130. {0x2739, PL_HERSHEY_CYRILLIC, 0x80 + '~'},
  1131. {0x273a, PL_HERSHEY_CYRILLIC, 0x80 + '{'},
  1132. {0x273b, PL_HERSHEY_CYRILLIC, 0x80 + '}'},
  1133. {0x273c, PL_HERSHEY_CYRILLIC, 0x80 + 0x7f},
  1134. {0x273d, PL_HERSHEY_CYRILLIC, 0x80 + 'y'},
  1135. {0x273e, PL_HERSHEY_CYRILLIC, 0x80 + 'x'},
  1136. {0x273f, PL_HERSHEY_CYRILLIC, 0x80 + '|'},
  1137. {0x2740, PL_HERSHEY_CYRILLIC, 0x80 + '`'},
  1138. {0x2741, PL_HERSHEY_CYRILLIC, 0x80 + 'q'},
  1139. {0x2751, PL_HERSHEY_CYRILLIC, 0x80 + 'A'},
  1140. {0x2752, PL_HERSHEY_CYRILLIC, 0x80 + 'B'},
  1141. {0x2753, PL_HERSHEY_CYRILLIC, 0x80 + 'W'},
  1142. {0x2754, PL_HERSHEY_CYRILLIC, 0x80 + 'G'},
  1143. {0x2755, PL_HERSHEY_CYRILLIC, 0x80 + 'D'},
  1144. {0x2756, PL_HERSHEY_CYRILLIC, 0x80 + 'E'},
  1145. {0x2757, PL_HERSHEY_CYRILLIC, 0x80 + '#'},
  1146. {0x2758, PL_HERSHEY_CYRILLIC, 0x80 + 'V'},
  1147. {0x2759, PL_HERSHEY_CYRILLIC, 0x80 + 'Z'},
  1148. {0x275a, PL_HERSHEY_CYRILLIC, 0x80 + 'I'},
  1149. {0x275b, PL_HERSHEY_CYRILLIC, 0x80 + 'J'},
  1150. {0x275c, PL_HERSHEY_CYRILLIC, 0x80 + 'K'},
  1151. {0x275d, PL_HERSHEY_CYRILLIC, 0x80 + 'L'},
  1152. {0x275e, PL_HERSHEY_CYRILLIC, 0x80 + 'M'},
  1153. {0x275f, PL_HERSHEY_CYRILLIC, 0x80 + 'N'},
  1154. {0x2760, PL_HERSHEY_CYRILLIC, 0x80 + 'O'},
  1155. {0x2761, PL_HERSHEY_CYRILLIC, 0x80 + 'P'},
  1156. {0x2762, PL_HERSHEY_CYRILLIC, 0x80 + 'R'},
  1157. {0x2763, PL_HERSHEY_CYRILLIC, 0x80 + 'S'},
  1158. {0x2764, PL_HERSHEY_CYRILLIC, 0x80 + 'T'},
  1159. {0x2765, PL_HERSHEY_CYRILLIC, 0x80 + 'U'},
  1160. {0x2766, PL_HERSHEY_CYRILLIC, 0x80 + 'F'},
  1161. {0x2767, PL_HERSHEY_CYRILLIC, 0x80 + 'H'},
  1162. {0x2768, PL_HERSHEY_CYRILLIC, 0x80 + 'C'},
  1163. {0x2769, PL_HERSHEY_CYRILLIC, 0x80 + '^'},
  1164. {0x276a, PL_HERSHEY_CYRILLIC, 0x80 + '['},
  1165. {0x276b, PL_HERSHEY_CYRILLIC, 0x80 + ']'},
  1166. {0x276c, PL_HERSHEY_CYRILLIC, 0x80 + '_'},
  1167. {0x276d, PL_HERSHEY_CYRILLIC, 0x80 + 'Y'},
  1168. {0x276e, PL_HERSHEY_CYRILLIC, 0x80 + 'X'},
  1169. {0x276f, PL_HERSHEY_CYRILLIC, 0x80 + '\\'},
  1170. {0x2770, PL_HERSHEY_CYRILLIC, 0x80 + '@'},
  1171. {0x2771, PL_HERSHEY_CYRILLIC, 0x80 + 'Q'},
  1172. {0, 0, 0}
  1173. };