Commit | Line | Data |
---|---|---|
a9cf9d0d | 1 | # cp932.awk -- Add sort keys and append user defined area to CP932-2BYTE.map. |
ed3be7aa | 2 | # Copyright (C) 2004, 2005, 2006, 2007, 2008 |
ba29a830 KH |
3 | # National Institute of Advanced Industrial Science and Technology (AIST) |
4 | # Registration Number H13PRO009 | |
5 | # | |
6 | # This file is part of GNU Emacs. | |
7 | # | |
8 | # GNU Emacs is free software; you can redistribute it and/or modify | |
9 | # it under the terms of the GNU General Public License as published by | |
ed3be7aa | 10 | # the Free Software Foundation; either version 3, or (at your option) |
ba29a830 KH |
11 | # any later version. |
12 | # | |
13 | # GNU Emacs is distributed in the hope that it will be useful, | |
14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | # GNU General Public License for more details. | |
17 | # | |
18 | # You should have received a copy of the GNU General Public License | |
19 | # along with GNU Emacs; see the file COPYING. If not, write to the | |
ed3be7aa GM |
20 | # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
21 | # Boston, MA 02110-1301, USA. | |
ba29a830 KH |
22 | |
23 | # Comment: | |
24 | # Add a sort key 0, 1, 2, or 3 at the tail of each line as a comment | |
25 | # to realize the round trip mapping to Unicode works as described in | |
26 | # this page: | |
27 | # http://support.microsoft.com/default.aspx?scid=kb;EN-US;170559 | |
28 | # Each sort key means as below: | |
29 | # 0: JISX0208 characters. | |
30 | # 1: NEC special characters. | |
31 | # 2: IBM extension characters. | |
32 | # 3: NEC selection of IBM extension characters. | |
a9cf9d0d | 33 | # 4: user defined area |
ba29a830 KH |
34 | |
35 | BEGIN { | |
36 | tohex["A"] = 10; | |
37 | tohex["B"] = 11; | |
38 | tohex["C"] = 12; | |
39 | tohex["D"] = 13; | |
40 | tohex["E"] = 14; | |
41 | tohex["F"] = 15; | |
42 | } | |
43 | ||
44 | function decode_hex(str) { | |
45 | n = 0; | |
46 | len = length(str); | |
47 | for (i = 1; i <= len; i++) | |
48 | { | |
49 | c = substr(str, i, 1); | |
50 | if (c >= "0" && c <= "9") | |
51 | n = n * 16 + (c - "0"); | |
52 | else | |
53 | n = n * 16 + tohex[c]; | |
54 | } | |
55 | return n; | |
56 | } | |
57 | ||
58 | function sjis_to_jis_ku(code) | |
59 | { | |
60 | s1 = int(code / 256); | |
61 | s2 = code % 256; | |
62 | if (s2 >= 159) # s2 >= 0x9F | |
63 | { | |
64 | if (s1 >= 224) # s1 >= 0xE0 | |
65 | j1 = s1 * 2 - 352; # j1 = s1 * 2 - 0x160 | |
66 | else | |
67 | j1 = s1 * 2 - 224; # j1 = s1 * 2 - 0xE0 | |
a9cf9d0d | 68 | j2 = s2 - 126 # j2 = s2 - #x7E |
ba29a830 KH |
69 | } |
70 | else | |
71 | { | |
72 | if (s1 >= 224) | |
73 | j1 = s1 * 2 - 353; # j1 = s1 * 2 - 0x161 | |
74 | else | |
75 | j1 = s1 * 2 - 225; # j1 = s1 * 2 - 0xE1 | |
a9cf9d0d KH |
76 | if (s2 >= 127) # s2 >= #x7F |
77 | j2 = s2 - 32; | |
78 | else | |
79 | j2 = s2 - 31; | |
ba29a830 KH |
80 | } |
81 | return j1 - 32; | |
82 | } | |
83 | ||
84 | /^0x[89E]/ { | |
85 | sjis=decode_hex(substr($1, 3, 4)) | |
86 | ku=sjis_to_jis_ku(sjis); | |
87 | if (ku == 13) | |
a9cf9d0d | 88 | printf "%s # 1 %02X%02X\n", $0, j1, j2; |
ba29a830 | 89 | else if (ku >= 89 && ku <= 92) |
a9cf9d0d | 90 | printf "%s # 3 %02X%02X\n", $0, j1, j2; |
ba29a830 | 91 | else |
a9cf9d0d | 92 | printf "%s # 0 %02X%02X\n", $0, j1, j2; |
ba29a830 KH |
93 | next; |
94 | } | |
95 | ||
96 | /^0xF/ { | |
a9cf9d0d | 97 | printf "%s # 2\n", $0; |
ba29a830 KH |
98 | next; |
99 | } | |
100 | ||
101 | { | |
102 | print; | |
103 | } | |
a9cf9d0d KH |
104 | |
105 | END { | |
106 | code = 57344; # 0xE000 | |
107 | for (i = 240; i < 250; i++) | |
108 | { | |
109 | for (j = 64; j <= 126; j++) | |
110 | printf "0x%02X%02X 0x%04X # 4\n", i, j, code++; | |
111 | for (j = 128; j <= 158; j++) | |
112 | printf "0x%02X%02X 0x%04X # 4\n", i, j, code++; | |
113 | for (; j <= 252; j++) | |
114 | printf "0x%02X%02X 0x%04X # 4\n", i, j, code++; | |
115 | } | |
116 | } | |
21e99729 MB |
117 | |
118 | # arch-tag: 998dc444-759d-43ef-87e3-2ab205011394 |