2 * KANJI Code conversion routines.
3 * (for pTeX and e-pTeX)
13 boolean check_kanji(integer c)
15 return is_char_kanji(c);
18 boolean is_char_ascii(integer c)
20 return (0 <= c && c < 0x100);
23 boolean is_char_kanji(integer c)
25 return (iskanji1(Hi(c)) && iskanji2(Lo(c)));
28 boolean ismultiprn(integer c)
30 if (iskanji1(c) || iskanji2(c))
37 integer calc_pos(integer c)
49 if (is_internalSJIS())
50 return ((c2 + (c2 << (c1 - 0x81)) & 0xff) << 1);
52 return ((c2 + (c2 << (c1 - 0xa1)) & 0xff) << 1);
55 return (((c2 + c2 + 1) & 0xff) << 1);
58 integer calc_pos(integer c)
62 if(c >= 0 && c <= 255)
70 if (is_internalSJIS())
72 c1 = ((c1 - 0x81) % 4) * 64; /* c1 = 0, 64, 128, 192 */
73 c2 = c2 % 64; /* c2 = 0..63 */
77 c1 = ((c1 - 0xa1) % 4) * 64; /* c1 = 0, 64, 128, 192 */
78 c2 = c2 % 64; /* c2 = 0..63 */
80 return (c1 + c2); /* ret = 0..255 */
87 integer kcatcodekey(integer c)
92 void init_default_kanji (const_string file_str, const_string internal_str)
96 enable_UPTEX (false); /* disable */
98 if (!set_enc_string (file_str, internal_str))
100 fprintf (stderr, "Bad kanji encoding \"%s\" or \"%s\".\n",
101 file_str ? file_str : "NULL",
102 internal_str ? internal_str : "NULL");
106 p = getenv ("PTEX_KANJI_ENC");
110 if (!set_enc_string (p, NULL))
111 fprintf (stderr, "Ignoring bad kanji encoding \"%s\".\n", p);
115 p = kpse_var_value ("guess_input_kanji_encoding");
119 if (*p == '1' || *p == 'y' || *p == 't')