• R/O
  • SSH
  • HTTPS

qrobosdk: コミット


コミットメタ情報

リビジョン1823 (tree)
日時2010-05-12 07:11:47
作者satofumi

ログメッセージ

fixed input/convertToJp.cpp bug

変更サマリ

差分

--- trunk/libs/gui/TextRubiFadeSurface.cpp (revision 1822)
+++ trunk/libs/gui/TextRubiFadeSurface.cpp (revision 1823)
@@ -65,8 +65,9 @@
6565 int rubi_space = max(kanji_size - rubi_size, 0);
6666 int rubi_space_each =
6767 (it->rubi_size > 1) ? rubi_space / it->rubi_size : 0;
68- rubi_size += it->rubi_size * rubi_space_each;
68+ rubi_size += (it->rubi_size - 1) * rubi_space_each;
6969 int x_offset = (kanji_size - rubi_size) / 2;
70+ fprintf(stderr, "%d, %d, %d, %d, (%d, %d), (%d, %d)\n", x_offset, kanji_size, rubi_size, rubi_space_each, it->rubi_size, rubi_pixel_size_, it->kanji_size, kanji_pixel_size);
7071 int kanji_base_x =
7172 kanji_pixel_size * it->kanji_first;
7273
--- trunk/libs/gui/samples/rubiDraw.cpp (revision 1822)
+++ trunk/libs/gui/samples/rubiDraw.cpp (revision 1823)
@@ -24,8 +24,13 @@
2424 Font rubi_font(font_file, 16);
2525
2626 // ルビを含む文字列の描画
27+#if 0
2728 TextRubiFadeSurface surface(font, "今日は、卵を食べました。",
2829 rubi_font, "きょうは、たまごをたべました。");
30+#else
31+ //TextRubiFadeSurface surface(font, "夜半", rubi_font, "よは");
32+TextRubiFadeSurface surface(font, "法性寺入道前関白太政大臣", rubi_font, "ほうしょうじのにゅうどうさきのかんぱくだいじょうだいじん");
33+#endif
2934 Rect<long> dest_rect = surface.rect();
3035 dest_rect.x += 100;
3136
--- trunk/libs/input/table_converter.rb (revision 1822)
+++ trunk/libs/input/table_converter.rb (revision 1823)
@@ -11,6 +11,7 @@
1111
1212 $maxPattern_size = 0
1313
14+
1415 # 変換処理
1516 def convertLine(line)
1617 out = ''
@@ -33,6 +34,7 @@
3334 # 文字がマルチバイト文字の場合
3435 if ch.mbchar?
3536 out += '0x'
37+ out += ('0' + ch[2].to_s(16))[-2, 2]
3638 out += ('0' + ch[1].to_s(16))[-2, 2]
3739 out += ('0' + ch[0].to_s(16))[-2, 2]
3840 out += ', '
@@ -51,6 +53,7 @@
5153 after.each_char { |wch|
5254 out += '0x'
5355 if Kconv.guess(wch) != Kconv::ASCII then
56+ out += ('0' + wch[0].to_s(16))[-2, 2]
5457 out += ('0' + wch[1].to_s(16))[-2, 2]
5558 out += ('0' + wch[2].to_s(16))[-2, 2]
5659 else
@@ -102,7 +105,7 @@
102105 enum { #{capitalizedTypeName}_CONVERT_SIZE_MAX = #{$maxPattern_size} };
103106
104107 //! #{typeName} 変換用の Unicode 配列
105- const static unsigned short #{typeName}Table[][2][#{$maxPattern_size}] = {
108+ const static unsigned long #{typeName}Table[][2][#{$maxPattern_size}] = {
106109 #{converted_lines} { { 0x00 }, { 0x00 }, }, // テーブルの終端
107110 };
108111 };
--- trunk/libs/input/convertToJp.cpp (revision 1822)
+++ trunk/libs/input/convertToJp.cpp (revision 1823)
@@ -21,7 +21,7 @@
2121 namespace
2222 {
2323 // !!! convertToRoman() 内の関数と共通にすべき
24- size_t short_strlen(const unsigned short* text)
24+ size_t long_strlen(const unsigned long* text)
2525 {
2626 size_t size = 0;
2727 while (text[size] != 0x0) {
@@ -34,7 +34,7 @@
3434
3535 std::string qrk::convertToJp(const std::string& raw_text, bool is_roman)
3636 {
37- const unsigned short* table =
37+ const unsigned long* table =
3838 (is_roman) ? &RomanTable[0][0][0] : &KanaTable[0][0][0];
3939 const int pattern_max_size = (is_roman) ?
4040 static_cast<int>(ROMAN_CONVERT_SIZE_MAX) : KANA_CONVERT_SIZE_MAX;
@@ -49,7 +49,7 @@
4949 // 先頭文字から比較と変換を行う
5050 for (size_t match_start = 0;
5151 match_start < converted.size(); ++match_start) {
52- for (const unsigned short* pattern = table;
52+ for (const unsigned long* pattern = table;
5353 *pattern != 0x0; pattern += (pattern_max_size * 2)) {
5454 size_t current_size = converted.size();
5555
@@ -69,7 +69,7 @@
6969 if (matched) {
7070 // 変換後にデータが縮む場合は、あらかじめ縮小しておく
7171 size_t matched_size = match_index;
72- size_t replaced_size = short_strlen(pattern + pattern_max_size);
72+ size_t replaced_size = long_strlen(pattern + pattern_max_size);
7373
7474 // 置換する
7575 for (size_t i = 0; i < replaced_size; ++i) {
--- trunk/libs/input/convertToRoman.cpp (revision 1822)
+++ trunk/libs/input/convertToRoman.cpp (revision 1823)
@@ -19,7 +19,7 @@
1919
2020 namespace
2121 {
22- size_t short_strlen(const unsigned short* text)
22+ size_t long_strlen(const unsigned long* text)
2323 {
2424 size_t size = 0;
2525 while (text[size] != 0x0) {
@@ -29,10 +29,10 @@
2929 }
3030
3131
32- bool isConvertedCorrect(const unsigned short* pattern,
32+ bool isConvertedCorrect(const unsigned long* pattern,
3333 const Utf8& jp_text, size_t used_jp_index)
3434 {
35- size_t converted_size = short_strlen(pattern + ROMAN_CONVERT_SIZE_MAX);
35+ size_t converted_size = long_strlen(pattern + ROMAN_CONVERT_SIZE_MAX);
3636
3737 for (size_t i = 0; i < converted_size; ++i) {
3838 if (*(pattern + ROMAN_CONVERT_SIZE_MAX + i) !=
@@ -55,24 +55,25 @@
5555 const char* input = current_input.c_str();
5656 while (*input != '\0') {
5757 bool matched = false;
58- const unsigned short* pattern = &RomanTable[0][0][0];
58+ const unsigned long* pattern = &RomanTable[0][0][0];
5959 for (; *pattern != 0x0; pattern += ROMAN_CONVERT_SIZE_MAX * 2) {
6060 size_t match_size = 0;
6161 for (match_size = 0;
6262 *(pattern + match_size) != 0x0; ++match_size) {
63- if (*(pattern + match_size) != input[match_size]) {
63+ const unsigned long ch = input[match_size];
64+ if (*(pattern + match_size) != ch) {
6465 break;
6566 }
6667 }
6768
6869 if ((match_size > 0) && (input[match_size] == '\0')) {
69- match_size = short_strlen(pattern);
70+ match_size = long_strlen(pattern);
7071 }
7172
7273 if (*(pattern + match_size) == 0x0) {
7374 // パターンが入力候補とも一致したら置換処理を行う
7475 if (isConvertedCorrect(pattern, jp_text, used_jp_index)) {
75- for (const unsigned short* ch =
76+ for (const unsigned long* ch =
7677 pattern + ROMAN_CONVERT_SIZE_MAX;
7778 *ch != 0x0; ++ch) {
7879 created_jp.push_back(0xe3);
@@ -103,7 +104,7 @@
103104 // 変換文字列を代入
104105 size_t input_size = input.size();
105106
106- vector<unsigned short> converted;
107+ vector<unsigned long> converted;
107108 for (size_t i = 0; i < input_size; ++i) {
108109 converted.push_back(input.ch(i));
109110 }
@@ -118,7 +119,7 @@
118119 int match_index = 0;
119120 for (; RomanTable[pattern_index][1][match_index] != 0x0;
120121 ++match_index) {
121- unsigned short ch =
122+ unsigned long ch =
122123 RomanTable[pattern_index][1][match_index];
123124 int ch_index = match_start + match_index;
124125 if ((current_size <= ch_index) ||
@@ -134,9 +135,9 @@
134135 // 置換前に伸長しておく
135136 size_t matched_size = match_index;
136137 size_t replaced_size =
137- short_strlen(&RomanTable[pattern_index][0][0]);
138+ long_strlen(&RomanTable[pattern_index][0][0]);
138139
139- vector<unsigned short>::iterator it =
140+ vector<unsigned long>::iterator it =
140141 converted.begin() + match_start;
141142 for (size_t i = 0;
142143 i < (replaced_size - matched_size); ++i) {
--- trunk/libs/input/kana_table.h (revision 1822)
+++ trunk/libs/input/kana_table.h (revision 1823)
@@ -15,88 +15,88 @@
1515 enum { KANA_CONVERT_SIZE_MAX = 3 };
1616
1717 //! Kana 変換用の Unicode 配列
18- const static unsigned short KanaTable[][2][3] = {
19- { { 0x81e3, '@', 0x00 }, { 0x818c, 0x00 }, }, // が
20- { { 0x81e3, '@', 0x00 }, { 0x818e, 0x00 }, }, // ぎ
21- { { 0x81e3, '@', 0x00 }, { 0x8190, 0x00 }, }, // ぐ
22- { { 0x81e3, '@', 0x00 }, { 0x8192, 0x00 }, }, // げ
23- { { 0x81e3, '@', 0x00 }, { 0x8194, 0x00 }, }, // ご
24- { { 0x81e3, '@', 0x00 }, { 0x8196, 0x00 }, }, // ざ
25- { { 0x81e3, '@', 0x00 }, { 0x8198, 0x00 }, }, // じ
26- { { 0x81e3, '@', 0x00 }, { 0x819a, 0x00 }, }, // ず
27- { { 0x81e3, '@', 0x00 }, { 0x819c, 0x00 }, }, // ぜ
28- { { 0x81e3, '@', 0x00 }, { 0x819e, 0x00 }, }, // ぞ
29- { { 0x81e3, '@', 0x00 }, { 0x81a0, 0x00 }, }, // だ
30- { { 0x81e3, '@', 0x00 }, { 0x81a2, 0x00 }, }, // ぢ
31- { { 0x81e3, '@', 0x00 }, { 0x81a5, 0x00 }, }, // づ
32- { { 0x81e3, '@', 0x00 }, { 0x81a7, 0x00 }, }, // で
33- { { 0x81e3, '@', 0x00 }, { 0x81a9, 0x00 }, }, // ど
34- { { 0x81e3, '@', 0x00 }, { 0x81b0, 0x00 }, }, // ば
35- { { 0x81e3, '@', 0x00 }, { 0x81b3, 0x00 }, }, // び
36- { { 0x81e3, '@', 0x00 }, { 0x81b6, 0x00 }, }, // ぶ
37- { { 0x81e3, '@', 0x00 }, { 0x81b9, 0x00 }, }, // べ
38- { { 0x81e3, '@', 0x00 }, { 0x81bc, 0x00 }, }, // ぼ
39- { { 0x81e3, '[', 0x00 }, { 0x81b1, 0x00 }, }, // ぱ
40- { { 0x81e3, '[', 0x00 }, { 0x81b4, 0x00 }, }, // ぴ
41- { { 0x81e3, '[', 0x00 }, { 0x81b7, 0x00 }, }, // ぷ
42- { { 0x81e3, '[', 0x00 }, { 0x81ba, 0x00 }, }, // ぺ
43- { { 0x81e3, '[', 0x00 }, { 0x81bd, 0x00 }, }, // ぽ
44- { { '1', 0x00 }, { 0x81ac, 0x00 }, }, // ぬ
45- { { '2', 0x00 }, { 0x81b5, 0x00 }, }, // ふ
46- { { '3', 0x00 }, { 0x8182, 0x00 }, }, // あ
47- { { '4', 0x00 }, { 0x8186, 0x00 }, }, // う
48- { { '5', 0x00 }, { 0x8188, 0x00 }, }, // え
49- { { '6', 0x00 }, { 0x818a, 0x00 }, }, // お
50- { { '7', 0x00 }, { 0x8284, 0x00 }, }, // や
51- { { '8', 0x00 }, { 0x8286, 0x00 }, }, // ゆ
52- { { '9', 0x00 }, { 0x8288, 0x00 }, }, // よ
53- { { '0', 0x00 }, { 0x828f, 0x00 }, }, // わ
54- { { '-', 0x00 }, { 0x81bb, 0x00 }, }, // ほ
55- { { '^', 0x00 }, { 0x81b8, 0x00 }, }, // へ
56- { { 'q', 0x00 }, { 0x819f, 0x00 }, }, // た
57- { { 'w', 0x00 }, { 0x81a6, 0x00 }, }, // て
58- { { 'e', 0x00 }, { 0x8184, 0x00 }, }, // い
59- { { 'r', 0x00 }, { 0x8199, 0x00 }, }, // す
60- { { 't', 0x00 }, { 0x818b, 0x00 }, }, // か
61- { { 'y', 0x00 }, { 0x8293, 0x00 }, }, // ん
62- { { 'u', 0x00 }, { 0x81aa, 0x00 }, }, // な
63- { { 'i', 0x00 }, { 0x81ab, 0x00 }, }, // に
64- { { 'o', 0x00 }, { 0x8289, 0x00 }, }, // ら
65- { { 'p', 0x00 }, { 0x819b, 0x00 }, }, // せ
66- { { '@', 0x00 }, { 0x829b, 0x00 }, }, // ゛
67- { { '[', 0x00 }, { 0x829c, 0x00 }, }, // ゜
68- { { 'a', 0x00 }, { 0x81a1, 0x00 }, }, // ち
69- { { 's', 0x00 }, { 0x81a8, 0x00 }, }, // と
70- { { 'd', 0x00 }, { 0x8197, 0x00 }, }, // し
71- { { 'f', 0x00 }, { 0x81af, 0x00 }, }, // は
72- { { 'g', 0x00 }, { 0x818d, 0x00 }, }, // き
73- { { 'h', 0x00 }, { 0x818f, 0x00 }, }, // く
74- { { 'j', 0x00 }, { 0x81be, 0x00 }, }, // ま
75- { { 'k', 0x00 }, { 0x81ae, 0x00 }, }, // の
76- { { 'l', 0x00 }, { 0x828a, 0x00 }, }, // り
77- { { ';', 0x00 }, { 0x828c, 0x00 }, }, // れ
78- { { ':', 0x00 }, { 0x8191, 0x00 }, }, // け
79- { { ']', 0x00 }, { 0x8280, 0x00 }, }, // む
80- { { 'z', 0x00 }, { 0x81a4, 0x00 }, }, // つ
81- { { 'x', 0x00 }, { 0x8195, 0x00 }, }, // さ
82- { { 'c', 0x00 }, { 0x819d, 0x00 }, }, // そ
83- { { 'v', 0x00 }, { 0x81b2, 0x00 }, }, // ひ
84- { { 'b', 0x00 }, { 0x8193, 0x00 }, }, // こ
85- { { 'n', 0x00 }, { 0x81bf, 0x00 }, }, // み
86- { { 'm', 0x00 }, { 0x8282, 0x00 }, }, // も
87- { { '.', 0x00 }, { 0x828b, 0x00 }, }, // る
88- { { '/', 0x00 }, { 0x8281, 0x00 }, }, // め
89- { { '\\', 0x00 }, { 0x828d, 0x00 }, }, // ろ
90- { { '#', 0x00 }, { 0x8181, 0x00 }, }, // ぁ
91- { { 'E', 0x00 }, { 0x8183, 0x00 }, }, // ぃ
92- { { '$', 0x00 }, { 0x8185, 0x00 }, }, // ぅ
93- { { '%', 0x00 }, { 0x8187, 0x00 }, }, // ぇ
94- { { '&', 0x00 }, { 0x8189, 0x00 }, }, // ぉ
95- { { '\'', 0x00 }, { 0x8283, 0x00 }, }, // ゃ
96- { { '(', 0x00 }, { 0x8285, 0x00 }, }, // ゅ
97- { { ')', 0x00 }, { 0x8287, 0x00 }, }, // ょ
98- { { '~', 0x00 }, { 0x8292, 0x00 }, }, // を
99- { { 'Z', 0x00 }, { 0x81a3, 0x00 }, }, // っ
18+ const static unsigned long KanaTable[][2][3] = {
19+ { { 0x8b81e3, '@', 0x00 }, { 0xe3818c, 0x00 }, }, // が
20+ { { 0x8d81e3, '@', 0x00 }, { 0xe3818e, 0x00 }, }, // ぎ
21+ { { 0x8f81e3, '@', 0x00 }, { 0xe38190, 0x00 }, }, // ぐ
22+ { { 0x9181e3, '@', 0x00 }, { 0xe38192, 0x00 }, }, // げ
23+ { { 0x9381e3, '@', 0x00 }, { 0xe38194, 0x00 }, }, // ご
24+ { { 0x9581e3, '@', 0x00 }, { 0xe38196, 0x00 }, }, // ざ
25+ { { 0x9781e3, '@', 0x00 }, { 0xe38198, 0x00 }, }, // じ
26+ { { 0x9981e3, '@', 0x00 }, { 0xe3819a, 0x00 }, }, // ず
27+ { { 0x9b81e3, '@', 0x00 }, { 0xe3819c, 0x00 }, }, // ぜ
28+ { { 0x9d81e3, '@', 0x00 }, { 0xe3819e, 0x00 }, }, // ぞ
29+ { { 0x9f81e3, '@', 0x00 }, { 0xe381a0, 0x00 }, }, // だ
30+ { { 0xa181e3, '@', 0x00 }, { 0xe381a2, 0x00 }, }, // ぢ
31+ { { 0xa481e3, '@', 0x00 }, { 0xe381a5, 0x00 }, }, // づ
32+ { { 0xa681e3, '@', 0x00 }, { 0xe381a7, 0x00 }, }, // で
33+ { { 0xa881e3, '@', 0x00 }, { 0xe381a9, 0x00 }, }, // ど
34+ { { 0xaf81e3, '@', 0x00 }, { 0xe381b0, 0x00 }, }, // ば
35+ { { 0xb281e3, '@', 0x00 }, { 0xe381b3, 0x00 }, }, // び
36+ { { 0xb581e3, '@', 0x00 }, { 0xe381b6, 0x00 }, }, // ぶ
37+ { { 0xb881e3, '@', 0x00 }, { 0xe381b9, 0x00 }, }, // べ
38+ { { 0xbb81e3, '@', 0x00 }, { 0xe381bc, 0x00 }, }, // ぼ
39+ { { 0xaf81e3, '[', 0x00 }, { 0xe381b1, 0x00 }, }, // ぱ
40+ { { 0xb281e3, '[', 0x00 }, { 0xe381b4, 0x00 }, }, // ぴ
41+ { { 0xb581e3, '[', 0x00 }, { 0xe381b7, 0x00 }, }, // ぷ
42+ { { 0xb881e3, '[', 0x00 }, { 0xe381ba, 0x00 }, }, // ぺ
43+ { { 0xbb81e3, '[', 0x00 }, { 0xe381bd, 0x00 }, }, // ぽ
44+ { { '1', 0x00 }, { 0xe381ac, 0x00 }, }, // ぬ
45+ { { '2', 0x00 }, { 0xe381b5, 0x00 }, }, // ふ
46+ { { '3', 0x00 }, { 0xe38182, 0x00 }, }, // あ
47+ { { '4', 0x00 }, { 0xe38186, 0x00 }, }, // う
48+ { { '5', 0x00 }, { 0xe38188, 0x00 }, }, // え
49+ { { '6', 0x00 }, { 0xe3818a, 0x00 }, }, // お
50+ { { '7', 0x00 }, { 0xe38284, 0x00 }, }, // や
51+ { { '8', 0x00 }, { 0xe38286, 0x00 }, }, // ゆ
52+ { { '9', 0x00 }, { 0xe38288, 0x00 }, }, // よ
53+ { { '0', 0x00 }, { 0xe3828f, 0x00 }, }, // わ
54+ { { '-', 0x00 }, { 0xe381bb, 0x00 }, }, // ほ
55+ { { '^', 0x00 }, { 0xe381b8, 0x00 }, }, // へ
56+ { { 'q', 0x00 }, { 0xe3819f, 0x00 }, }, // た
57+ { { 'w', 0x00 }, { 0xe381a6, 0x00 }, }, // て
58+ { { 'e', 0x00 }, { 0xe38184, 0x00 }, }, // い
59+ { { 'r', 0x00 }, { 0xe38199, 0x00 }, }, // す
60+ { { 't', 0x00 }, { 0xe3818b, 0x00 }, }, // か
61+ { { 'y', 0x00 }, { 0xe38293, 0x00 }, }, // ん
62+ { { 'u', 0x00 }, { 0xe381aa, 0x00 }, }, // な
63+ { { 'i', 0x00 }, { 0xe381ab, 0x00 }, }, // に
64+ { { 'o', 0x00 }, { 0xe38289, 0x00 }, }, // ら
65+ { { 'p', 0x00 }, { 0xe3819b, 0x00 }, }, // せ
66+ { { '@', 0x00 }, { 0xe3829b, 0x00 }, }, // ゛
67+ { { '[', 0x00 }, { 0xe3829c, 0x00 }, }, // ゜
68+ { { 'a', 0x00 }, { 0xe381a1, 0x00 }, }, // ち
69+ { { 's', 0x00 }, { 0xe381a8, 0x00 }, }, // と
70+ { { 'd', 0x00 }, { 0xe38197, 0x00 }, }, // し
71+ { { 'f', 0x00 }, { 0xe381af, 0x00 }, }, // は
72+ { { 'g', 0x00 }, { 0xe3818d, 0x00 }, }, // き
73+ { { 'h', 0x00 }, { 0xe3818f, 0x00 }, }, // く
74+ { { 'j', 0x00 }, { 0xe381be, 0x00 }, }, // ま
75+ { { 'k', 0x00 }, { 0xe381ae, 0x00 }, }, // の
76+ { { 'l', 0x00 }, { 0xe3828a, 0x00 }, }, // り
77+ { { ';', 0x00 }, { 0xe3828c, 0x00 }, }, // れ
78+ { { ':', 0x00 }, { 0xe38191, 0x00 }, }, // け
79+ { { ']', 0x00 }, { 0xe38280, 0x00 }, }, // む
80+ { { 'z', 0x00 }, { 0xe381a4, 0x00 }, }, // つ
81+ { { 'x', 0x00 }, { 0xe38195, 0x00 }, }, // さ
82+ { { 'c', 0x00 }, { 0xe3819d, 0x00 }, }, // そ
83+ { { 'v', 0x00 }, { 0xe381b2, 0x00 }, }, // ひ
84+ { { 'b', 0x00 }, { 0xe38193, 0x00 }, }, // こ
85+ { { 'n', 0x00 }, { 0xe381bf, 0x00 }, }, // み
86+ { { 'm', 0x00 }, { 0xe38282, 0x00 }, }, // も
87+ { { '.', 0x00 }, { 0xe3828b, 0x00 }, }, // る
88+ { { '/', 0x00 }, { 0xe38281, 0x00 }, }, // め
89+ { { '\\', 0x00 }, { 0xe3828d, 0x00 }, }, // ろ
90+ { { '#', 0x00 }, { 0xe38181, 0x00 }, }, // ぁ
91+ { { 'E', 0x00 }, { 0xe38183, 0x00 }, }, // ぃ
92+ { { '$', 0x00 }, { 0xe38185, 0x00 }, }, // ぅ
93+ { { '%', 0x00 }, { 0xe38187, 0x00 }, }, // ぇ
94+ { { '&', 0x00 }, { 0xe38189, 0x00 }, }, // ぉ
95+ { { '\'', 0x00 }, { 0xe38283, 0x00 }, }, // ゃ
96+ { { '(', 0x00 }, { 0xe38285, 0x00 }, }, // ゅ
97+ { { ')', 0x00 }, { 0xe38287, 0x00 }, }, // ょ
98+ { { '~', 0x00 }, { 0xe38292, 0x00 }, }, // を
99+ { { 'Z', 0x00 }, { 0xe381a3, 0x00 }, }, // っ
100100 { { 0x00 }, { 0x00 }, }, // テーブルの終端
101101 };
102102 };
--- trunk/libs/input/Utf8.cpp (revision 1822)
+++ trunk/libs/input/Utf8.cpp (revision 1823)
@@ -120,7 +120,7 @@
120120 }
121121
122122
123-unsigned short Utf8::ch(size_t index) const
123+unsigned long Utf8::ch(size_t index) const
124124 {
125125 size_t first_index = pimpl->utf8_index(index);
126126 size_t last_index = pimpl->utf8_index(index + 1);
@@ -127,13 +127,14 @@
127127 size_t length = (last_index == string::npos)
128128 ? (pimpl->utf8_text_.size() - first_index) : (last_index - first_index);
129129
130- unsigned short ch;
130+ unsigned long ch = 0;
131131 if (length == 1) {
132132 ch = pimpl->utf8_text_[first_index];
133133 } else {
134- ch = pimpl->utf8_text_[first_index + 1] & 0x00ff;
135- ch <<= 8;
136- ch |= pimpl->utf8_text_[first_index + 2] & 0x00ff;
134+ for (size_t i = 0; i < 3; ++i) {
135+ ch <<= 8;
136+ ch |= pimpl->utf8_text_[first_index + i] & 0x00ff;
137+ }
137138 }
138139 return ch;
139140 }
--- trunk/libs/input/roman_table.h (revision 1822)
+++ trunk/libs/input/roman_table.h (revision 1823)
@@ -15,271 +15,271 @@
1515 enum { ROMAN_CONVERT_SIZE_MAX = 5 };
1616
1717 //! Roman 変換用の Unicode 配列
18- const static unsigned short RomanTable[][2][5] = {
19- { { 'a', 0x00 }, { 0x8182, 0x00 }, }, // あ
20- { { 'i', 0x00 }, { 0x8184, 0x00 }, }, // い
21- { { 'u', 0x00 }, { 0x8186, 0x00 }, }, // う
22- { { 'e', 0x00 }, { 0x8188, 0x00 }, }, // え
23- { { 'o', 0x00 }, { 0x818a, 0x00 }, }, // お
24- { { 'k','y','a', 0x00 }, { 0x818d, 0x8283, 0x00 }, }, // きゃ
25- { { 'k','y','i', 0x00 }, { 0x818d, 0x8183, 0x00 }, }, // きぃ
26- { { 'k','y','u', 0x00 }, { 0x818d, 0x8285, 0x00 }, }, // きゅ
27- { { 'k','y','e', 0x00 }, { 0x818d, 0x8187, 0x00 }, }, // きぇ
28- { { 'k','y','o', 0x00 }, { 0x818d, 0x8287, 0x00 }, }, // きょ
29- { { 'k','w','a', 0x00 }, { 0x818f, 0x8181, 0x00 }, }, // くぁ
30- { { 'k','a', 0x00 }, { 0x818b, 0x00 }, }, // か
31- { { 'k','i', 0x00 }, { 0x818d, 0x00 }, }, // き
32- { { 'k','u', 0x00 }, { 0x818f, 0x00 }, }, // く
33- { { 'k','e', 0x00 }, { 0x8191, 0x00 }, }, // け
34- { { 'k','o', 0x00 }, { 0x8193, 0x00 }, }, // こ
35- { { 's','y','a', 0x00 }, { 0x8197, 0x8283, 0x00 }, }, // しゃ
36- { { 's','h','a', 0x00 }, { 0x8197, 0x8283, 0x00 }, }, // しゃ
37- { { 's','y','i', 0x00 }, { 0x8197, 0x8183, 0x00 }, }, // しぃ
38- { { 's','y','u', 0x00 }, { 0x8197, 0x8285, 0x00 }, }, // しゅ
39- { { 's','h','u', 0x00 }, { 0x8197, 0x8285, 0x00 }, }, // しゅ
40- { { 's','y','e', 0x00 }, { 0x8197, 0x8187, 0x00 }, }, // しぇ
41- { { 's','h','e', 0x00 }, { 0x8197, 0x8187, 0x00 }, }, // しぇ
42- { { 's','y','o', 0x00 }, { 0x8197, 0x8287, 0x00 }, }, // しょ
43- { { 's','h','o', 0x00 }, { 0x8197, 0x8287, 0x00 }, }, // しょ
44- { { 's','a', 0x00 }, { 0x8195, 0x00 }, }, // さ
45- { { 's','i', 0x00 }, { 0x8197, 0x00 }, }, // し
46- { { 's','h','i', 0x00 }, { 0x8197, 0x00 }, }, // し
47- { { 's','u', 0x00 }, { 0x8199, 0x00 }, }, // す
48- { { 's','e', 0x00 }, { 0x819b, 0x00 }, }, // せ
49- { { 's','o', 0x00 }, { 0x819d, 0x00 }, }, // そ
50- { { 't','s','a', 0x00 }, { 0x81a4, 0x8181, 0x00 }, }, // つぁ
51- { { 't','s','i', 0x00 }, { 0x81a4, 0x8183, 0x00 }, }, // つぃ
52- { { 't','s','e', 0x00 }, { 0x81a4, 0x8187, 0x00 }, }, // つぇ
53- { { 't','s','o', 0x00 }, { 0x81a4, 0x8189, 0x00 }, }, // つぉ
54- { { 't','h','a', 0x00 }, { 0x81a6, 0x8283, 0x00 }, }, // てゃ
55- { { 't','h','i', 0x00 }, { 0x81a6, 0x8183, 0x00 }, }, // てぃ
56- { { 't','h','u', 0x00 }, { 0x81a6, 0x8285, 0x00 }, }, // てゅ
57- { { 't','h','e', 0x00 }, { 0x81a6, 0x8187, 0x00 }, }, // てぇ
58- { { 't','h','o', 0x00 }, { 0x81a6, 0x8287, 0x00 }, }, // てょ
59- { { 't','y','a', 0x00 }, { 0x81a1, 0x8283, 0x00 }, }, // ちゃ
60- { { 'c','y','a', 0x00 }, { 0x81a1, 0x8283, 0x00 }, }, // ちゃ
61- { { 'c','h','a', 0x00 }, { 0x81a1, 0x8283, 0x00 }, }, // ちゃ
62- { { 't','y','i', 0x00 }, { 0x81a1, 0x8183, 0x00 }, }, // ちぃ
63- { { 'c','y','i', 0x00 }, { 0x81a1, 0x8183, 0x00 }, }, // ちぃ
64- { { 't','y','u', 0x00 }, { 0x81a1, 0x8285, 0x00 }, }, // ちゅ
65- { { 'c','y','u', 0x00 }, { 0x81a1, 0x8285, 0x00 }, }, // ちゅ
66- { { 'c','h','u', 0x00 }, { 0x81a1, 0x8285, 0x00 }, }, // ちゅ
67- { { 't','y','e', 0x00 }, { 0x81a1, 0x8187, 0x00 }, }, // ちぇ
68- { { 'c','y','e', 0x00 }, { 0x81a1, 0x8187, 0x00 }, }, // ちぇ
69- { { 'c','h','e', 0x00 }, { 0x81a1, 0x8187, 0x00 }, }, // ちぇ
70- { { 't','y','o', 0x00 }, { 0x81a1, 0x8287, 0x00 }, }, // ちょ
71- { { 'c','y','o', 0x00 }, { 0x81a1, 0x8287, 0x00 }, }, // ちょ
72- { { 'c','h','o', 0x00 }, { 0x81a1, 0x8287, 0x00 }, }, // ちょ
73- { { 't','w','u', 0x00 }, { 0x81a8, 0x8185, 0x00 }, }, // とぅ
74- { { 't','a', 0x00 }, { 0x819f, 0x00 }, }, // た
75- { { 't','i', 0x00 }, { 0x81a1, 0x00 }, }, // ち
76- { { 'c','h','i', 0x00 }, { 0x81a1, 0x00 }, }, // ち
77- { { 't','u', 0x00 }, { 0x81a4, 0x00 }, }, // つ
78- { { 't','s','u', 0x00 }, { 0x81a4, 0x00 }, }, // つ
79- { { 't','e', 0x00 }, { 0x81a6, 0x00 }, }, // て
80- { { 't','o', 0x00 }, { 0x81a8, 0x00 }, }, // と
81- { { 'b','b', 0x00 }, { 0x81a3, 0x62, 0x00 }, }, // っb
82- { { 'c','c', 0x00 }, { 0x81a3, 0x63, 0x00 }, }, // っc
83- { { 'd','d', 0x00 }, { 0x81a3, 0x64, 0x00 }, }, // っd
84- { { 'f','f', 0x00 }, { 0x81a3, 0x66, 0x00 }, }, // っf
85- { { 'g','g', 0x00 }, { 0x81a3, 0x67, 0x00 }, }, // っg
86- { { 'h','h', 0x00 }, { 0x81a3, 0x68, 0x00 }, }, // っh
87- { { 'j','j', 0x00 }, { 0x81a3, 0x6a, 0x00 }, }, // っj
88- { { 'k','k', 0x00 }, { 0x81a3, 0x6b, 0x00 }, }, // っk
89- { { 'l','l', 0x00 }, { 0x81a3, 0x6c, 0x00 }, }, // っl
90- { { 'm','m', 0x00 }, { 0x81a3, 0x6d, 0x00 }, }, // っm
91- { { 'p','p', 0x00 }, { 0x81a3, 0x70, 0x00 }, }, // っp
92- { { 'q','q', 0x00 }, { 0x81a3, 0x71, 0x00 }, }, // っq
93- { { 'r','r', 0x00 }, { 0x81a3, 0x72, 0x00 }, }, // っr
94- { { 's','s', 0x00 }, { 0x81a3, 0x73, 0x00 }, }, // っs
95- { { 't','t', 0x00 }, { 0x81a3, 0x74, 0x00 }, }, // っt
96- { { 'v','v', 0x00 }, { 0x81a3, 0x76, 0x00 }, }, // っv
97- { { 'w','w', 0x00 }, { 0x81a3, 0x77, 0x00 }, }, // っw
98- { { 'z','z', 0x00 }, { 0x81a3, 0x7a, 0x00 }, }, // っz
99- { { 'x','t','u', 0x00 }, { 0x81a3, 0x00 }, }, // っ
100- { { 'l','t','u', 0x00 }, { 0x81a3, 0x00 }, }, // っ
101- { { 'l','t','s','u', 0x00 }, { 0x81a3, 0x00 }, }, // っ
102- { { 'x','t','s','u', 0x00 }, { 0x81a3, 0x00 }, }, // っ
103- { { 'n','y','a', 0x00 }, { 0x81ab, 0x8283, 0x00 }, }, // にゃ
104- { { 'n','y','i', 0x00 }, { 0x81ab, 0x8183, 0x00 }, }, // にぃ
105- { { 'n','y','u', 0x00 }, { 0x81ab, 0x8285, 0x00 }, }, // にゅ
106- { { 'n','y','e', 0x00 }, { 0x81ab, 0x8187, 0x00 }, }, // にぇ
107- { { 'n','y','o', 0x00 }, { 0x81ab, 0x8287, 0x00 }, }, // にょ
108- { { 'n','a', 0x00 }, { 0x81aa, 0x00 }, }, // な
109- { { 'n','i', 0x00 }, { 0x81ab, 0x00 }, }, // に
110- { { 'n','u', 0x00 }, { 0x81ac, 0x00 }, }, // ぬ
111- { { 'n','e', 0x00 }, { 0x81ad, 0x00 }, }, // ね
112- { { 'n','o', 0x00 }, { 0x81ae, 0x00 }, }, // の
113- { { 'h','y','a', 0x00 }, { 0x81b2, 0x8283, 0x00 }, }, // ひゃ
114- { { 'h','y','i', 0x00 }, { 0x81b2, 0x8183, 0x00 }, }, // ひぃ
115- { { 'h','y','u', 0x00 }, { 0x81b2, 0x8285, 0x00 }, }, // ひゅ
116- { { 'h','y','e', 0x00 }, { 0x81b2, 0x8187, 0x00 }, }, // ひぇ
117- { { 'h','y','o', 0x00 }, { 0x81b2, 0x8287, 0x00 }, }, // ひょ
118- { { 'f','a', 0x00 }, { 0x81b5, 0x8181, 0x00 }, }, // ふぁ
119- { { 'f','i', 0x00 }, { 0x81b5, 0x8183, 0x00 }, }, // ふぃ
120- { { 'f','e', 0x00 }, { 0x81b5, 0x8187, 0x00 }, }, // ふぇ
121- { { 'f','o', 0x00 }, { 0x81b5, 0x8189, 0x00 }, }, // ふぉ
122- { { 'f','y','a', 0x00 }, { 0x81b5, 0x8181, 0x00 }, }, // ふぁ
123- { { 'f','y','i', 0x00 }, { 0x81b5, 0x8183, 0x00 }, }, // ふぃ
124- { { 'f','y','u', 0x00 }, { 0x81b5, 0x8285, 0x00 }, }, // ふゅ
125- { { 'f','y','e', 0x00 }, { 0x81b5, 0x8187, 0x00 }, }, // ふぇ
126- { { 'f','y','o', 0x00 }, { 0x81b5, 0x8287, 0x00 }, }, // ふょ
127- { { 'h','a', 0x00 }, { 0x81af, 0x00 }, }, // は
128- { { 'h','i', 0x00 }, { 0x81b2, 0x00 }, }, // ひ
129- { { 'h','u', 0x00 }, { 0x81b5, 0x00 }, }, // ふ
130- { { 'f','u', 0x00 }, { 0x81b5, 0x00 }, }, // ふ
131- { { 'h','e', 0x00 }, { 0x81b8, 0x00 }, }, // へ
132- { { 'h','o', 0x00 }, { 0x81bb, 0x00 }, }, // ほ
133- { { 'm','y','a', 0x00 }, { 0x81bf, 0x8283, 0x00 }, }, // みゃ
134- { { 'm','y','i', 0x00 }, { 0x81bf, 0x8183, 0x00 }, }, // みぃ
135- { { 'm','y','u', 0x00 }, { 0x81bf, 0x8285, 0x00 }, }, // みゅ
136- { { 'm','y','e', 0x00 }, { 0x81bf, 0x8187, 0x00 }, }, // みぇ
137- { { 'm','y','o', 0x00 }, { 0x81bf, 0x8287, 0x00 }, }, // みょ
138- { { 'm','a', 0x00 }, { 0x81be, 0x00 }, }, // ま
139- { { 'm','i', 0x00 }, { 0x81bf, 0x00 }, }, // み
140- { { 'm','u', 0x00 }, { 0x8280, 0x00 }, }, // む
141- { { 'm','e', 0x00 }, { 0x8281, 0x00 }, }, // め
142- { { 'm','o', 0x00 }, { 0x8282, 0x00 }, }, // も
143- { { 'y','a', 0x00 }, { 0x8284, 0x00 }, }, // や
144- { { 'y','i', 0x00 }, { 0x8184, 0x00 }, }, // い
145- { { 'y','u', 0x00 }, { 0x8286, 0x00 }, }, // ゆ
146- { { 'y','e', 0x00 }, { 0x8184, 0x8187, 0x00 }, }, // いぇ
147- { { 'y','o', 0x00 }, { 0x8288, 0x00 }, }, // よ
148- { { 'r','y','a', 0x00 }, { 0x828a, 0x8283, 0x00 }, }, // りゃ
149- { { 'r','y','i', 0x00 }, { 0x828a, 0x8183, 0x00 }, }, // りぃ
150- { { 'r','y','u', 0x00 }, { 0x828a, 0x8285, 0x00 }, }, // りゅ
151- { { 'r','y','e', 0x00 }, { 0x828a, 0x8187, 0x00 }, }, // りぇ
152- { { 'r','y','o', 0x00 }, { 0x828a, 0x8287, 0x00 }, }, // りょ
153- { { 'r','a', 0x00 }, { 0x8289, 0x00 }, }, // ら
154- { { 'r','i', 0x00 }, { 0x828a, 0x00 }, }, // り
155- { { 'r','u', 0x00 }, { 0x828b, 0x00 }, }, // る
156- { { 'r','e', 0x00 }, { 0x828c, 0x00 }, }, // れ
157- { { 'r','o', 0x00 }, { 0x828d, 0x00 }, }, // ろ
158- { { 'w','a', 0x00 }, { 0x828f, 0x00 }, }, // わ
159- { { 'w','i', 0x00 }, { 0x8186, 0x8183, 0x00 }, }, // うぃ
160- { { 'w','u', 0x00 }, { 0x8186, 0x00 }, }, // う
161- { { 'w','e', 0x00 }, { 0x8186, 0x8187, 0x00 }, }, // うぇ
162- { { 'w','o', 0x00 }, { 0x8292, 0x00 }, }, // を
163- { { 'l','w','a', 0x00 }, { 0x828f, 0x00 }, }, // わ
164- { { 'x','w','a', 0x00 }, { 0x828f, 0x00 }, }, // わ
165- { { 'n','b', 0x00 }, { 0x8293, 0x62, 0x00 }, }, // んb
166- { { 'n','c', 0x00 }, { 0x8293, 0x63, 0x00 }, }, // んc
167- { { 'n','d', 0x00 }, { 0x8293, 0x64, 0x00 }, }, // んd
168- { { 'n','f', 0x00 }, { 0x8293, 0x66, 0x00 }, }, // んf
169- { { 'n','g', 0x00 }, { 0x8293, 0x67, 0x00 }, }, // んg
170- { { 'n','h', 0x00 }, { 0x8293, 0x68, 0x00 }, }, // んh
171- { { 'n','j', 0x00 }, { 0x8293, 0x6a, 0x00 }, }, // んj
172- { { 'n','k', 0x00 }, { 0x8293, 0x6b, 0x00 }, }, // んk
173- { { 'n','l', 0x00 }, { 0x8293, 0x6c, 0x00 }, }, // んl
174- { { 'n','m', 0x00 }, { 0x8293, 0x6d, 0x00 }, }, // んm
175- { { 'n','p', 0x00 }, { 0x8293, 0x70, 0x00 }, }, // んp
176- { { 'n','q', 0x00 }, { 0x8293, 0x71, 0x00 }, }, // んq
177- { { 'n','r', 0x00 }, { 0x8293, 0x72, 0x00 }, }, // んr
178- { { 'n','s', 0x00 }, { 0x8293, 0x73, 0x00 }, }, // んs
179- { { 'n','t', 0x00 }, { 0x8293, 0x74, 0x00 }, }, // んt
180- { { 'n','v', 0x00 }, { 0x8293, 0x76, 0x00 }, }, // んv
181- { { 'n','w', 0x00 }, { 0x8293, 0x77, 0x00 }, }, // んw
182- { { 'n','z', 0x00 }, { 0x8293, 0x7a, 0x00 }, }, // んz
183- { { 'n','n', 0x00 }, { 0x8293, 0x00 }, }, // ん
184- { { 'n','\n', 0x00 }, { 0x8293, 0x00 }, }, // ん
185- { { 'n',',', 0x00 }, { 0x8293, 0x2c, 0x00 }, }, // ん,
186- { { 'n','.', 0x00 }, { 0x8293, 0x2e, 0x00 }, }, // ん.
187- { { 'g','y','a', 0x00 }, { 0x818e, 0x8283, 0x00 }, }, // ぎゃ
188- { { 'g','y','i', 0x00 }, { 0x818e, 0x8183, 0x00 }, }, // ぎぃ
189- { { 'g','y','u', 0x00 }, { 0x818e, 0x8285, 0x00 }, }, // ぎゅ
190- { { 'g','y','e', 0x00 }, { 0x818e, 0x8187, 0x00 }, }, // ぎぇ
191- { { 'g','y','o', 0x00 }, { 0x818e, 0x8287, 0x00 }, }, // ぎょ
192- { { 'g','w','a', 0x00 }, { 0x8190, 0x8181, 0x00 }, }, // ぐぁ
193- { { 'g','a', 0x00 }, { 0x818c, 0x00 }, }, // が
194- { { 'g','i', 0x00 }, { 0x818e, 0x00 }, }, // ぎ
195- { { 'g','u', 0x00 }, { 0x8190, 0x00 }, }, // ぐ
196- { { 'g','e', 0x00 }, { 0x8192, 0x00 }, }, // げ
197- { { 'g','o', 0x00 }, { 0x8194, 0x00 }, }, // ご
198- { { 'j','a', 0x00 }, { 0x8198, 0x8283, 0x00 }, }, // じゃ
199- { { 'j','y','a', 0x00 }, { 0x8198, 0x8283, 0x00 }, }, // じゃ
200- { { 'z','y','a', 0x00 }, { 0x8198, 0x8283, 0x00 }, }, // じゃ
201- { { 'j','y','i', 0x00 }, { 0x8198, 0x8183, 0x00 }, }, // じぃ
202- { { 'z','y','i', 0x00 }, { 0x8198, 0x8183, 0x00 }, }, // じぃ
203- { { 'j','u', 0x00 }, { 0x8198, 0x8285, 0x00 }, }, // じゅ
204- { { 'j','y','u', 0x00 }, { 0x8198, 0x8285, 0x00 }, }, // じゅ
205- { { 'z','y','u', 0x00 }, { 0x8198, 0x8285, 0x00 }, }, // じゅ
206- { { 'j','e', 0x00 }, { 0x8198, 0x8187, 0x00 }, }, // じぇ
207- { { 'j','y','e', 0x00 }, { 0x8198, 0x8187, 0x00 }, }, // じぇ
208- { { 'z','y','e', 0x00 }, { 0x8198, 0x8187, 0x00 }, }, // じぇ
209- { { 'j','o', 0x00 }, { 0x8198, 0x8287, 0x00 }, }, // じょ
210- { { 'j','y','o', 0x00 }, { 0x8198, 0x8287, 0x00 }, }, // じょ
211- { { 'z','y','o', 0x00 }, { 0x8198, 0x8287, 0x00 }, }, // じょ
212- { { 'z','a', 0x00 }, { 0x8196, 0x00 }, }, // ざ
213- { { 'z','i', 0x00 }, { 0x8198, 0x00 }, }, // じ
214- { { 'j','i', 0x00 }, { 0x8198, 0x00 }, }, // じ
215- { { 'z','u', 0x00 }, { 0x819a, 0x00 }, }, // ず
216- { { 'z','e', 0x00 }, { 0x819c, 0x00 }, }, // ぜ
217- { { 'z','o', 0x00 }, { 0x819e, 0x00 }, }, // ぞ
218- { { 'd','y','a', 0x00 }, { 0x81a2, 0x8283, 0x00 }, }, // ぢゃ
219- { { 'd','y','i', 0x00 }, { 0x81a2, 0x8183, 0x00 }, }, // ぢぃ
220- { { 'd','y','u', 0x00 }, { 0x81a2, 0x8285, 0x00 }, }, // ぢゅ
221- { { 'd','y','e', 0x00 }, { 0x81a2, 0x8187, 0x00 }, }, // ぢぇ
222- { { 'd','y','o', 0x00 }, { 0x81a2, 0x8287, 0x00 }, }, // ぢょ
223- { { 'd','h','a', 0x00 }, { 0x81a7, 0x8283, 0x00 }, }, // でゃ
224- { { 'd','h','i', 0x00 }, { 0x81a7, 0x8183, 0x00 }, }, // でぃ
225- { { 'd','h','u', 0x00 }, { 0x81a7, 0x8285, 0x00 }, }, // でゅ
226- { { 'd','h','e', 0x00 }, { 0x81a7, 0x8187, 0x00 }, }, // でぇ
227- { { 'd','h','o', 0x00 }, { 0x81a7, 0x8287, 0x00 }, }, // でょ
228- { { 'd','w','u', 0x00 }, { 0x81a9, 0x8185, 0x00 }, }, // どぅ
229- { { 'd','a', 0x00 }, { 0x81a0, 0x00 }, }, // だ
230- { { 'd','i', 0x00 }, { 0x81a2, 0x00 }, }, // ぢ
231- { { 'd','u', 0x00 }, { 0x81a5, 0x00 }, }, // づ
232- { { 'd','e', 0x00 }, { 0x81a7, 0x00 }, }, // で
233- { { 'd','o', 0x00 }, { 0x81a9, 0x00 }, }, // ど
234- { { 'b','a', 0x00 }, { 0x81b0, 0x00 }, }, // ば
235- { { 'b','i', 0x00 }, { 0x81b3, 0x00 }, }, // び
236- { { 'b','u', 0x00 }, { 0x81b6, 0x00 }, }, // ぶ
237- { { 'b','e', 0x00 }, { 0x81b9, 0x00 }, }, // べ
238- { { 'b','o', 0x00 }, { 0x81bc, 0x00 }, }, // ぼ
239- { { 'p','y','a', 0x00 }, { 0x81b4, 0x8283, 0x00 }, }, // ぴゃ
240- { { 'p','y','i', 0x00 }, { 0x81b4, 0x8183, 0x00 }, }, // ぴぃ
241- { { 'p','y','u', 0x00 }, { 0x81b4, 0x8285, 0x00 }, }, // ぴゅ
242- { { 'p','y','e', 0x00 }, { 0x81b4, 0x8187, 0x00 }, }, // ぴぇ
243- { { 'p','y','o', 0x00 }, { 0x81b4, 0x8287, 0x00 }, }, // ぴょ
244- { { 'b','y','a', 0x00 }, { 0x81b3, 0x8283, 0x00 }, }, // びゃ
245- { { 'b','y','i', 0x00 }, { 0x81b3, 0x8183, 0x00 }, }, // びぃ
246- { { 'b','y','u', 0x00 }, { 0x81b3, 0x8285, 0x00 }, }, // びゅ
247- { { 'b','y','e', 0x00 }, { 0x81b3, 0x8187, 0x00 }, }, // びぇ
248- { { 'b','y','o', 0x00 }, { 0x81b3, 0x8287, 0x00 }, }, // びょ
249- { { 'p','a', 0x00 }, { 0x81b1, 0x00 }, }, // ぱ
250- { { 'p','i', 0x00 }, { 0x81b4, 0x00 }, }, // ぴ
251- { { 'p','u', 0x00 }, { 0x81b7, 0x00 }, }, // ぷ
252- { { 'p','e', 0x00 }, { 0x81ba, 0x00 }, }, // ぺ
253- { { 'p','o', 0x00 }, { 0x81bd, 0x00 }, }, // ぽ
254- { { 'v','a', 0x00 }, { 0x8186, 0x829b, 0x8181, 0x00 }, }, // う゛ぁ
255- { { 'v','i', 0x00 }, { 0x8186, 0x829b, 0x8183, 0x00 }, }, // う゛ぃ
256- { { 'v','u', 0x00 }, { 0x8186, 0x829b, 0x00 }, }, // う゛
257- { { 'v','e', 0x00 }, { 0x8186, 0x829b, 0x8187, 0x00 }, }, // う゛ぇ
258- { { 'v','o', 0x00 }, { 0x8186, 0x829b, 0x8189, 0x00 }, }, // う゛ぉ
259- { { 'x','a', 0x00 }, { 0x8181, 0x00 }, }, // ぁ
260- { { 'l','a', 0x00 }, { 0x8181, 0x00 }, }, // ぁ
261- { { 'x','i', 0x00 }, { 0x8183, 0x00 }, }, // ぃ
262- { { 'l','i', 0x00 }, { 0x8183, 0x00 }, }, // ぃ
263- { { 'x','u', 0x00 }, { 0x8185, 0x00 }, }, // ぅ
264- { { 'l','u', 0x00 }, { 0x8185, 0x00 }, }, // ぅ
265- { { 'x','e', 0x00 }, { 0x8187, 0x00 }, }, // ぇ
266- { { 'l','e', 0x00 }, { 0x8187, 0x00 }, }, // ぇ
267- { { 'x','o', 0x00 }, { 0x8189, 0x00 }, }, // ぉ
268- { { 'l','o', 0x00 }, { 0x8189, 0x00 }, }, // ぉ
269- { { 'x','y','a', 0x00 }, { 0x8283, 0x00 }, }, // ゃ
270- { { 'l','y','a', 0x00 }, { 0x8283, 0x00 }, }, // ゃ
271- { { 'x','y','i', 0x00 }, { 0x8183, 0x00 }, }, // ぃ
272- { { 'l','y','u', 0x00 }, { 0x8183, 0x00 }, }, // ぃ
273- { { 'x','y','u', 0x00 }, { 0x8285, 0x00 }, }, // ゅ
274- { { 'l','y','u', 0x00 }, { 0x8285, 0x00 }, }, // ゅ
275- { { 'x','y','e', 0x00 }, { 0x8187, 0x00 }, }, // ぇ
276- { { 'l','y','e', 0x00 }, { 0x8187, 0x00 }, }, // ぇ
277- { { 'x','y','o', 0x00 }, { 0x8287, 0x00 }, }, // ょ
278- { { 'l','y','o', 0x00 }, { 0x8287, 0x00 }, }, // ょ
279- { { 'x','k','a', 0x00 }, { 0x83b5, 0x00 }, }, // ヵ
280- { { 'l','k','a', 0x00 }, { 0x83b5, 0x00 }, }, // ヵ
281- { { 'x','k','e', 0x00 }, { 0x83b6, 0x00 }, }, // ヶ
282- { { 'l','k','e', 0x00 }, { 0x83b6, 0x00 }, }, // ヶ
18+ const static unsigned long RomanTable[][2][5] = {
19+ { { 'a', 0x00 }, { 0xe38182, 0x00 }, }, // あ
20+ { { 'i', 0x00 }, { 0xe38184, 0x00 }, }, // い
21+ { { 'u', 0x00 }, { 0xe38186, 0x00 }, }, // う
22+ { { 'e', 0x00 }, { 0xe38188, 0x00 }, }, // え
23+ { { 'o', 0x00 }, { 0xe3818a, 0x00 }, }, // お
24+ { { 'k','y','a', 0x00 }, { 0xe3818d, 0xe38283, 0x00 }, }, // きゃ
25+ { { 'k','y','i', 0x00 }, { 0xe3818d, 0xe38183, 0x00 }, }, // きぃ
26+ { { 'k','y','u', 0x00 }, { 0xe3818d, 0xe38285, 0x00 }, }, // きゅ
27+ { { 'k','y','e', 0x00 }, { 0xe3818d, 0xe38187, 0x00 }, }, // きぇ
28+ { { 'k','y','o', 0x00 }, { 0xe3818d, 0xe38287, 0x00 }, }, // きょ
29+ { { 'k','w','a', 0x00 }, { 0xe3818f, 0xe38181, 0x00 }, }, // くぁ
30+ { { 'k','a', 0x00 }, { 0xe3818b, 0x00 }, }, // か
31+ { { 'k','i', 0x00 }, { 0xe3818d, 0x00 }, }, // き
32+ { { 'k','u', 0x00 }, { 0xe3818f, 0x00 }, }, // く
33+ { { 'k','e', 0x00 }, { 0xe38191, 0x00 }, }, // け
34+ { { 'k','o', 0x00 }, { 0xe38193, 0x00 }, }, // こ
35+ { { 's','y','a', 0x00 }, { 0xe38197, 0xe38283, 0x00 }, }, // しゃ
36+ { { 's','h','a', 0x00 }, { 0xe38197, 0xe38283, 0x00 }, }, // しゃ
37+ { { 's','y','i', 0x00 }, { 0xe38197, 0xe38183, 0x00 }, }, // しぃ
38+ { { 's','y','u', 0x00 }, { 0xe38197, 0xe38285, 0x00 }, }, // しゅ
39+ { { 's','h','u', 0x00 }, { 0xe38197, 0xe38285, 0x00 }, }, // しゅ
40+ { { 's','y','e', 0x00 }, { 0xe38197, 0xe38187, 0x00 }, }, // しぇ
41+ { { 's','h','e', 0x00 }, { 0xe38197, 0xe38187, 0x00 }, }, // しぇ
42+ { { 's','y','o', 0x00 }, { 0xe38197, 0xe38287, 0x00 }, }, // しょ
43+ { { 's','h','o', 0x00 }, { 0xe38197, 0xe38287, 0x00 }, }, // しょ
44+ { { 's','a', 0x00 }, { 0xe38195, 0x00 }, }, // さ
45+ { { 's','i', 0x00 }, { 0xe38197, 0x00 }, }, // し
46+ { { 's','h','i', 0x00 }, { 0xe38197, 0x00 }, }, // し
47+ { { 's','u', 0x00 }, { 0xe38199, 0x00 }, }, // す
48+ { { 's','e', 0x00 }, { 0xe3819b, 0x00 }, }, // せ
49+ { { 's','o', 0x00 }, { 0xe3819d, 0x00 }, }, // そ
50+ { { 't','s','a', 0x00 }, { 0xe381a4, 0xe38181, 0x00 }, }, // つぁ
51+ { { 't','s','i', 0x00 }, { 0xe381a4, 0xe38183, 0x00 }, }, // つぃ
52+ { { 't','s','e', 0x00 }, { 0xe381a4, 0xe38187, 0x00 }, }, // つぇ
53+ { { 't','s','o', 0x00 }, { 0xe381a4, 0xe38189, 0x00 }, }, // つぉ
54+ { { 't','h','a', 0x00 }, { 0xe381a6, 0xe38283, 0x00 }, }, // てゃ
55+ { { 't','h','i', 0x00 }, { 0xe381a6, 0xe38183, 0x00 }, }, // てぃ
56+ { { 't','h','u', 0x00 }, { 0xe381a6, 0xe38285, 0x00 }, }, // てゅ
57+ { { 't','h','e', 0x00 }, { 0xe381a6, 0xe38187, 0x00 }, }, // てぇ
58+ { { 't','h','o', 0x00 }, { 0xe381a6, 0xe38287, 0x00 }, }, // てょ
59+ { { 't','y','a', 0x00 }, { 0xe381a1, 0xe38283, 0x00 }, }, // ちゃ
60+ { { 'c','y','a', 0x00 }, { 0xe381a1, 0xe38283, 0x00 }, }, // ちゃ
61+ { { 'c','h','a', 0x00 }, { 0xe381a1, 0xe38283, 0x00 }, }, // ちゃ
62+ { { 't','y','i', 0x00 }, { 0xe381a1, 0xe38183, 0x00 }, }, // ちぃ
63+ { { 'c','y','i', 0x00 }, { 0xe381a1, 0xe38183, 0x00 }, }, // ちぃ
64+ { { 't','y','u', 0x00 }, { 0xe381a1, 0xe38285, 0x00 }, }, // ちゅ
65+ { { 'c','y','u', 0x00 }, { 0xe381a1, 0xe38285, 0x00 }, }, // ちゅ
66+ { { 'c','h','u', 0x00 }, { 0xe381a1, 0xe38285, 0x00 }, }, // ちゅ
67+ { { 't','y','e', 0x00 }, { 0xe381a1, 0xe38187, 0x00 }, }, // ちぇ
68+ { { 'c','y','e', 0x00 }, { 0xe381a1, 0xe38187, 0x00 }, }, // ちぇ
69+ { { 'c','h','e', 0x00 }, { 0xe381a1, 0xe38187, 0x00 }, }, // ちぇ
70+ { { 't','y','o', 0x00 }, { 0xe381a1, 0xe38287, 0x00 }, }, // ちょ
71+ { { 'c','y','o', 0x00 }, { 0xe381a1, 0xe38287, 0x00 }, }, // ちょ
72+ { { 'c','h','o', 0x00 }, { 0xe381a1, 0xe38287, 0x00 }, }, // ちょ
73+ { { 't','w','u', 0x00 }, { 0xe381a8, 0xe38185, 0x00 }, }, // とぅ
74+ { { 't','a', 0x00 }, { 0xe3819f, 0x00 }, }, // た
75+ { { 't','i', 0x00 }, { 0xe381a1, 0x00 }, }, // ち
76+ { { 'c','h','i', 0x00 }, { 0xe381a1, 0x00 }, }, // ち
77+ { { 't','u', 0x00 }, { 0xe381a4, 0x00 }, }, // つ
78+ { { 't','s','u', 0x00 }, { 0xe381a4, 0x00 }, }, // つ
79+ { { 't','e', 0x00 }, { 0xe381a6, 0x00 }, }, // て
80+ { { 't','o', 0x00 }, { 0xe381a8, 0x00 }, }, // と
81+ { { 'b','b', 0x00 }, { 0xe381a3, 0x62, 0x00 }, }, // っb
82+ { { 'c','c', 0x00 }, { 0xe381a3, 0x63, 0x00 }, }, // っc
83+ { { 'd','d', 0x00 }, { 0xe381a3, 0x64, 0x00 }, }, // っd
84+ { { 'f','f', 0x00 }, { 0xe381a3, 0x66, 0x00 }, }, // っf
85+ { { 'g','g', 0x00 }, { 0xe381a3, 0x67, 0x00 }, }, // っg
86+ { { 'h','h', 0x00 }, { 0xe381a3, 0x68, 0x00 }, }, // っh
87+ { { 'j','j', 0x00 }, { 0xe381a3, 0x6a, 0x00 }, }, // っj
88+ { { 'k','k', 0x00 }, { 0xe381a3, 0x6b, 0x00 }, }, // っk
89+ { { 'l','l', 0x00 }, { 0xe381a3, 0x6c, 0x00 }, }, // っl
90+ { { 'm','m', 0x00 }, { 0xe381a3, 0x6d, 0x00 }, }, // っm
91+ { { 'p','p', 0x00 }, { 0xe381a3, 0x70, 0x00 }, }, // っp
92+ { { 'q','q', 0x00 }, { 0xe381a3, 0x71, 0x00 }, }, // っq
93+ { { 'r','r', 0x00 }, { 0xe381a3, 0x72, 0x00 }, }, // っr
94+ { { 's','s', 0x00 }, { 0xe381a3, 0x73, 0x00 }, }, // っs
95+ { { 't','t', 0x00 }, { 0xe381a3, 0x74, 0x00 }, }, // っt
96+ { { 'v','v', 0x00 }, { 0xe381a3, 0x76, 0x00 }, }, // っv
97+ { { 'w','w', 0x00 }, { 0xe381a3, 0x77, 0x00 }, }, // っw
98+ { { 'z','z', 0x00 }, { 0xe381a3, 0x7a, 0x00 }, }, // っz
99+ { { 'x','t','u', 0x00 }, { 0xe381a3, 0x00 }, }, // っ
100+ { { 'l','t','u', 0x00 }, { 0xe381a3, 0x00 }, }, // っ
101+ { { 'l','t','s','u', 0x00 }, { 0xe381a3, 0x00 }, }, // っ
102+ { { 'x','t','s','u', 0x00 }, { 0xe381a3, 0x00 }, }, // っ
103+ { { 'n','y','a', 0x00 }, { 0xe381ab, 0xe38283, 0x00 }, }, // にゃ
104+ { { 'n','y','i', 0x00 }, { 0xe381ab, 0xe38183, 0x00 }, }, // にぃ
105+ { { 'n','y','u', 0x00 }, { 0xe381ab, 0xe38285, 0x00 }, }, // にゅ
106+ { { 'n','y','e', 0x00 }, { 0xe381ab, 0xe38187, 0x00 }, }, // にぇ
107+ { { 'n','y','o', 0x00 }, { 0xe381ab, 0xe38287, 0x00 }, }, // にょ
108+ { { 'n','a', 0x00 }, { 0xe381aa, 0x00 }, }, // な
109+ { { 'n','i', 0x00 }, { 0xe381ab, 0x00 }, }, // に
110+ { { 'n','u', 0x00 }, { 0xe381ac, 0x00 }, }, // ぬ
111+ { { 'n','e', 0x00 }, { 0xe381ad, 0x00 }, }, // ね
112+ { { 'n','o', 0x00 }, { 0xe381ae, 0x00 }, }, // の
113+ { { 'h','y','a', 0x00 }, { 0xe381b2, 0xe38283, 0x00 }, }, // ひゃ
114+ { { 'h','y','i', 0x00 }, { 0xe381b2, 0xe38183, 0x00 }, }, // ひぃ
115+ { { 'h','y','u', 0x00 }, { 0xe381b2, 0xe38285, 0x00 }, }, // ひゅ
116+ { { 'h','y','e', 0x00 }, { 0xe381b2, 0xe38187, 0x00 }, }, // ひぇ
117+ { { 'h','y','o', 0x00 }, { 0xe381b2, 0xe38287, 0x00 }, }, // ひょ
118+ { { 'f','a', 0x00 }, { 0xe381b5, 0xe38181, 0x00 }, }, // ふぁ
119+ { { 'f','i', 0x00 }, { 0xe381b5, 0xe38183, 0x00 }, }, // ふぃ
120+ { { 'f','e', 0x00 }, { 0xe381b5, 0xe38187, 0x00 }, }, // ふぇ
121+ { { 'f','o', 0x00 }, { 0xe381b5, 0xe38189, 0x00 }, }, // ふぉ
122+ { { 'f','y','a', 0x00 }, { 0xe381b5, 0xe38181, 0x00 }, }, // ふぁ
123+ { { 'f','y','i', 0x00 }, { 0xe381b5, 0xe38183, 0x00 }, }, // ふぃ
124+ { { 'f','y','u', 0x00 }, { 0xe381b5, 0xe38285, 0x00 }, }, // ふゅ
125+ { { 'f','y','e', 0x00 }, { 0xe381b5, 0xe38187, 0x00 }, }, // ふぇ
126+ { { 'f','y','o', 0x00 }, { 0xe381b5, 0xe38287, 0x00 }, }, // ふょ
127+ { { 'h','a', 0x00 }, { 0xe381af, 0x00 }, }, // は
128+ { { 'h','i', 0x00 }, { 0xe381b2, 0x00 }, }, // ひ
129+ { { 'h','u', 0x00 }, { 0xe381b5, 0x00 }, }, // ふ
130+ { { 'f','u', 0x00 }, { 0xe381b5, 0x00 }, }, // ふ
131+ { { 'h','e', 0x00 }, { 0xe381b8, 0x00 }, }, // へ
132+ { { 'h','o', 0x00 }, { 0xe381bb, 0x00 }, }, // ほ
133+ { { 'm','y','a', 0x00 }, { 0xe381bf, 0xe38283, 0x00 }, }, // みゃ
134+ { { 'm','y','i', 0x00 }, { 0xe381bf, 0xe38183, 0x00 }, }, // みぃ
135+ { { 'm','y','u', 0x00 }, { 0xe381bf, 0xe38285, 0x00 }, }, // みゅ
136+ { { 'm','y','e', 0x00 }, { 0xe381bf, 0xe38187, 0x00 }, }, // みぇ
137+ { { 'm','y','o', 0x00 }, { 0xe381bf, 0xe38287, 0x00 }, }, // みょ
138+ { { 'm','a', 0x00 }, { 0xe381be, 0x00 }, }, // ま
139+ { { 'm','i', 0x00 }, { 0xe381bf, 0x00 }, }, // み
140+ { { 'm','u', 0x00 }, { 0xe38280, 0x00 }, }, // む
141+ { { 'm','e', 0x00 }, { 0xe38281, 0x00 }, }, // め
142+ { { 'm','o', 0x00 }, { 0xe38282, 0x00 }, }, // も
143+ { { 'y','a', 0x00 }, { 0xe38284, 0x00 }, }, // や
144+ { { 'y','i', 0x00 }, { 0xe38184, 0x00 }, }, // い
145+ { { 'y','u', 0x00 }, { 0xe38286, 0x00 }, }, // ゆ
146+ { { 'y','e', 0x00 }, { 0xe38184, 0xe38187, 0x00 }, }, // いぇ
147+ { { 'y','o', 0x00 }, { 0xe38288, 0x00 }, }, // よ
148+ { { 'r','y','a', 0x00 }, { 0xe3828a, 0xe38283, 0x00 }, }, // りゃ
149+ { { 'r','y','i', 0x00 }, { 0xe3828a, 0xe38183, 0x00 }, }, // りぃ
150+ { { 'r','y','u', 0x00 }, { 0xe3828a, 0xe38285, 0x00 }, }, // りゅ
151+ { { 'r','y','e', 0x00 }, { 0xe3828a, 0xe38187, 0x00 }, }, // りぇ
152+ { { 'r','y','o', 0x00 }, { 0xe3828a, 0xe38287, 0x00 }, }, // りょ
153+ { { 'r','a', 0x00 }, { 0xe38289, 0x00 }, }, // ら
154+ { { 'r','i', 0x00 }, { 0xe3828a, 0x00 }, }, // り
155+ { { 'r','u', 0x00 }, { 0xe3828b, 0x00 }, }, // る
156+ { { 'r','e', 0x00 }, { 0xe3828c, 0x00 }, }, // れ
157+ { { 'r','o', 0x00 }, { 0xe3828d, 0x00 }, }, // ろ
158+ { { 'w','a', 0x00 }, { 0xe3828f, 0x00 }, }, // わ
159+ { { 'w','i', 0x00 }, { 0xe38186, 0xe38183, 0x00 }, }, // うぃ
160+ { { 'w','u', 0x00 }, { 0xe38186, 0x00 }, }, // う
161+ { { 'w','e', 0x00 }, { 0xe38186, 0xe38187, 0x00 }, }, // うぇ
162+ { { 'w','o', 0x00 }, { 0xe38292, 0x00 }, }, // を
163+ { { 'l','w','a', 0x00 }, { 0xe3828f, 0x00 }, }, // わ
164+ { { 'x','w','a', 0x00 }, { 0xe3828f, 0x00 }, }, // わ
165+ { { 'n','b', 0x00 }, { 0xe38293, 0x62, 0x00 }, }, // んb
166+ { { 'n','c', 0x00 }, { 0xe38293, 0x63, 0x00 }, }, // んc
167+ { { 'n','d', 0x00 }, { 0xe38293, 0x64, 0x00 }, }, // んd
168+ { { 'n','f', 0x00 }, { 0xe38293, 0x66, 0x00 }, }, // んf
169+ { { 'n','g', 0x00 }, { 0xe38293, 0x67, 0x00 }, }, // んg
170+ { { 'n','h', 0x00 }, { 0xe38293, 0x68, 0x00 }, }, // んh
171+ { { 'n','j', 0x00 }, { 0xe38293, 0x6a, 0x00 }, }, // んj
172+ { { 'n','k', 0x00 }, { 0xe38293, 0x6b, 0x00 }, }, // んk
173+ { { 'n','l', 0x00 }, { 0xe38293, 0x6c, 0x00 }, }, // んl
174+ { { 'n','m', 0x00 }, { 0xe38293, 0x6d, 0x00 }, }, // んm
175+ { { 'n','p', 0x00 }, { 0xe38293, 0x70, 0x00 }, }, // んp
176+ { { 'n','q', 0x00 }, { 0xe38293, 0x71, 0x00 }, }, // んq
177+ { { 'n','r', 0x00 }, { 0xe38293, 0x72, 0x00 }, }, // んr
178+ { { 'n','s', 0x00 }, { 0xe38293, 0x73, 0x00 }, }, // んs
179+ { { 'n','t', 0x00 }, { 0xe38293, 0x74, 0x00 }, }, // んt
180+ { { 'n','v', 0x00 }, { 0xe38293, 0x76, 0x00 }, }, // んv
181+ { { 'n','w', 0x00 }, { 0xe38293, 0x77, 0x00 }, }, // んw
182+ { { 'n','z', 0x00 }, { 0xe38293, 0x7a, 0x00 }, }, // んz
183+ { { 'n','n', 0x00 }, { 0xe38293, 0x00 }, }, // ん
184+ { { 'n','\n', 0x00 }, { 0xe38293, 0x00 }, }, // ん
185+ { { 'n',',', 0x00 }, { 0xe38293, 0x2c, 0x00 }, }, // ん,
186+ { { 'n','.', 0x00 }, { 0xe38293, 0x2e, 0x00 }, }, // ん.
187+ { { 'g','y','a', 0x00 }, { 0xe3818e, 0xe38283, 0x00 }, }, // ぎゃ
188+ { { 'g','y','i', 0x00 }, { 0xe3818e, 0xe38183, 0x00 }, }, // ぎぃ
189+ { { 'g','y','u', 0x00 }, { 0xe3818e, 0xe38285, 0x00 }, }, // ぎゅ
190+ { { 'g','y','e', 0x00 }, { 0xe3818e, 0xe38187, 0x00 }, }, // ぎぇ
191+ { { 'g','y','o', 0x00 }, { 0xe3818e, 0xe38287, 0x00 }, }, // ぎょ
192+ { { 'g','w','a', 0x00 }, { 0xe38190, 0xe38181, 0x00 }, }, // ぐぁ
193+ { { 'g','a', 0x00 }, { 0xe3818c, 0x00 }, }, // が
194+ { { 'g','i', 0x00 }, { 0xe3818e, 0x00 }, }, // ぎ
195+ { { 'g','u', 0x00 }, { 0xe38190, 0x00 }, }, // ぐ
196+ { { 'g','e', 0x00 }, { 0xe38192, 0x00 }, }, // げ
197+ { { 'g','o', 0x00 }, { 0xe38194, 0x00 }, }, // ご
198+ { { 'j','a', 0x00 }, { 0xe38198, 0xe38283, 0x00 }, }, // じゃ
199+ { { 'j','y','a', 0x00 }, { 0xe38198, 0xe38283, 0x00 }, }, // じゃ
200+ { { 'z','y','a', 0x00 }, { 0xe38198, 0xe38283, 0x00 }, }, // じゃ
201+ { { 'j','y','i', 0x00 }, { 0xe38198, 0xe38183, 0x00 }, }, // じぃ
202+ { { 'z','y','i', 0x00 }, { 0xe38198, 0xe38183, 0x00 }, }, // じぃ
203+ { { 'j','u', 0x00 }, { 0xe38198, 0xe38285, 0x00 }, }, // じゅ
204+ { { 'j','y','u', 0x00 }, { 0xe38198, 0xe38285, 0x00 }, }, // じゅ
205+ { { 'z','y','u', 0x00 }, { 0xe38198, 0xe38285, 0x00 }, }, // じゅ
206+ { { 'j','e', 0x00 }, { 0xe38198, 0xe38187, 0x00 }, }, // じぇ
207+ { { 'j','y','e', 0x00 }, { 0xe38198, 0xe38187, 0x00 }, }, // じぇ
208+ { { 'z','y','e', 0x00 }, { 0xe38198, 0xe38187, 0x00 }, }, // じぇ
209+ { { 'j','o', 0x00 }, { 0xe38198, 0xe38287, 0x00 }, }, // じょ
210+ { { 'j','y','o', 0x00 }, { 0xe38198, 0xe38287, 0x00 }, }, // じょ
211+ { { 'z','y','o', 0x00 }, { 0xe38198, 0xe38287, 0x00 }, }, // じょ
212+ { { 'z','a', 0x00 }, { 0xe38196, 0x00 }, }, // ざ
213+ { { 'z','i', 0x00 }, { 0xe38198, 0x00 }, }, // じ
214+ { { 'j','i', 0x00 }, { 0xe38198, 0x00 }, }, // じ
215+ { { 'z','u', 0x00 }, { 0xe3819a, 0x00 }, }, // ず
216+ { { 'z','e', 0x00 }, { 0xe3819c, 0x00 }, }, // ぜ
217+ { { 'z','o', 0x00 }, { 0xe3819e, 0x00 }, }, // ぞ
218+ { { 'd','y','a', 0x00 }, { 0xe381a2, 0xe38283, 0x00 }, }, // ぢゃ
219+ { { 'd','y','i', 0x00 }, { 0xe381a2, 0xe38183, 0x00 }, }, // ぢぃ
220+ { { 'd','y','u', 0x00 }, { 0xe381a2, 0xe38285, 0x00 }, }, // ぢゅ
221+ { { 'd','y','e', 0x00 }, { 0xe381a2, 0xe38187, 0x00 }, }, // ぢぇ
222+ { { 'd','y','o', 0x00 }, { 0xe381a2, 0xe38287, 0x00 }, }, // ぢょ
223+ { { 'd','h','a', 0x00 }, { 0xe381a7, 0xe38283, 0x00 }, }, // でゃ
224+ { { 'd','h','i', 0x00 }, { 0xe381a7, 0xe38183, 0x00 }, }, // でぃ
225+ { { 'd','h','u', 0x00 }, { 0xe381a7, 0xe38285, 0x00 }, }, // でゅ
226+ { { 'd','h','e', 0x00 }, { 0xe381a7, 0xe38187, 0x00 }, }, // でぇ
227+ { { 'd','h','o', 0x00 }, { 0xe381a7, 0xe38287, 0x00 }, }, // でょ
228+ { { 'd','w','u', 0x00 }, { 0xe381a9, 0xe38185, 0x00 }, }, // どぅ
229+ { { 'd','a', 0x00 }, { 0xe381a0, 0x00 }, }, // だ
230+ { { 'd','i', 0x00 }, { 0xe381a2, 0x00 }, }, // ぢ
231+ { { 'd','u', 0x00 }, { 0xe381a5, 0x00 }, }, // づ
232+ { { 'd','e', 0x00 }, { 0xe381a7, 0x00 }, }, // で
233+ { { 'd','o', 0x00 }, { 0xe381a9, 0x00 }, }, // ど
234+ { { 'b','a', 0x00 }, { 0xe381b0, 0x00 }, }, // ば
235+ { { 'b','i', 0x00 }, { 0xe381b3, 0x00 }, }, // び
236+ { { 'b','u', 0x00 }, { 0xe381b6, 0x00 }, }, // ぶ
237+ { { 'b','e', 0x00 }, { 0xe381b9, 0x00 }, }, // べ
238+ { { 'b','o', 0x00 }, { 0xe381bc, 0x00 }, }, // ぼ
239+ { { 'p','y','a', 0x00 }, { 0xe381b4, 0xe38283, 0x00 }, }, // ぴゃ
240+ { { 'p','y','i', 0x00 }, { 0xe381b4, 0xe38183, 0x00 }, }, // ぴぃ
241+ { { 'p','y','u', 0x00 }, { 0xe381b4, 0xe38285, 0x00 }, }, // ぴゅ
242+ { { 'p','y','e', 0x00 }, { 0xe381b4, 0xe38187, 0x00 }, }, // ぴぇ
243+ { { 'p','y','o', 0x00 }, { 0xe381b4, 0xe38287, 0x00 }, }, // ぴょ
244+ { { 'b','y','a', 0x00 }, { 0xe381b3, 0xe38283, 0x00 }, }, // びゃ
245+ { { 'b','y','i', 0x00 }, { 0xe381b3, 0xe38183, 0x00 }, }, // びぃ
246+ { { 'b','y','u', 0x00 }, { 0xe381b3, 0xe38285, 0x00 }, }, // びゅ
247+ { { 'b','y','e', 0x00 }, { 0xe381b3, 0xe38187, 0x00 }, }, // びぇ
248+ { { 'b','y','o', 0x00 }, { 0xe381b3, 0xe38287, 0x00 }, }, // びょ
249+ { { 'p','a', 0x00 }, { 0xe381b1, 0x00 }, }, // ぱ
250+ { { 'p','i', 0x00 }, { 0xe381b4, 0x00 }, }, // ぴ
251+ { { 'p','u', 0x00 }, { 0xe381b7, 0x00 }, }, // ぷ
252+ { { 'p','e', 0x00 }, { 0xe381ba, 0x00 }, }, // ぺ
253+ { { 'p','o', 0x00 }, { 0xe381bd, 0x00 }, }, // ぽ
254+ { { 'v','a', 0x00 }, { 0xe38186, 0xe3829b, 0xe38181, 0x00 }, }, // う゛ぁ
255+ { { 'v','i', 0x00 }, { 0xe38186, 0xe3829b, 0xe38183, 0x00 }, }, // う゛ぃ
256+ { { 'v','u', 0x00 }, { 0xe38186, 0xe3829b, 0x00 }, }, // う゛
257+ { { 'v','e', 0x00 }, { 0xe38186, 0xe3829b, 0xe38187, 0x00 }, }, // う゛ぇ
258+ { { 'v','o', 0x00 }, { 0xe38186, 0xe3829b, 0xe38189, 0x00 }, }, // う゛ぉ
259+ { { 'x','a', 0x00 }, { 0xe38181, 0x00 }, }, // ぁ
260+ { { 'l','a', 0x00 }, { 0xe38181, 0x00 }, }, // ぁ
261+ { { 'x','i', 0x00 }, { 0xe38183, 0x00 }, }, // ぃ
262+ { { 'l','i', 0x00 }, { 0xe38183, 0x00 }, }, // ぃ
263+ { { 'x','u', 0x00 }, { 0xe38185, 0x00 }, }, // ぅ
264+ { { 'l','u', 0x00 }, { 0xe38185, 0x00 }, }, // ぅ
265+ { { 'x','e', 0x00 }, { 0xe38187, 0x00 }, }, // ぇ
266+ { { 'l','e', 0x00 }, { 0xe38187, 0x00 }, }, // ぇ
267+ { { 'x','o', 0x00 }, { 0xe38189, 0x00 }, }, // ぉ
268+ { { 'l','o', 0x00 }, { 0xe38189, 0x00 }, }, // ぉ
269+ { { 'x','y','a', 0x00 }, { 0xe38283, 0x00 }, }, // ゃ
270+ { { 'l','y','a', 0x00 }, { 0xe38283, 0x00 }, }, // ゃ
271+ { { 'x','y','i', 0x00 }, { 0xe38183, 0x00 }, }, // ぃ
272+ { { 'l','y','u', 0x00 }, { 0xe38183, 0x00 }, }, // ぃ
273+ { { 'x','y','u', 0x00 }, { 0xe38285, 0x00 }, }, // ゅ
274+ { { 'l','y','u', 0x00 }, { 0xe38285, 0x00 }, }, // ゅ
275+ { { 'x','y','e', 0x00 }, { 0xe38187, 0x00 }, }, // ぇ
276+ { { 'l','y','e', 0x00 }, { 0xe38187, 0x00 }, }, // ぇ
277+ { { 'x','y','o', 0x00 }, { 0xe38287, 0x00 }, }, // ょ
278+ { { 'l','y','o', 0x00 }, { 0xe38287, 0x00 }, }, // ょ
279+ { { 'x','k','a', 0x00 }, { 0xe383b5, 0x00 }, }, // ヵ
280+ { { 'l','k','a', 0x00 }, { 0xe383b5, 0x00 }, }, // ヵ
281+ { { 'x','k','e', 0x00 }, { 0xe383b6, 0x00 }, }, // ヶ
282+ { { 'l','k','e', 0x00 }, { 0xe383b6, 0x00 }, }, // ヶ
283283 { { 0x00 }, { 0x00 }, }, // テーブルの終端
284284 };
285285 };
--- trunk/libs/input/Utf8.h (revision 1822)
+++ trunk/libs/input/Utf8.h (revision 1823)
@@ -40,7 +40,7 @@
4040 void clear(void);
4141 size_t size(void) const;
4242
43- unsigned short ch(size_t index) const;
43+ unsigned long ch(size_t index) const;
4444 unsigned short operator[](size_t index);
4545
4646 std::string toStdString(void);
--- trunk/libs/input/rubi_parse.cpp (revision 1822)
+++ trunk/libs/input/rubi_parse.cpp (revision 1823)
@@ -20,11 +20,11 @@
2020
2121 namespace
2222 {
23- bool isKana(unsigned short code)
23+ bool isKana(unsigned long code)
2424 {
25- //fprintf(stderr, " [code: %04x], ", code);
26- // 8181(ぁ) から 83b6(ヶ) までをの範囲で true を返す
27- return ((code >= 0x8181) && (code <= 0x83b6)) ? true : false;
25+ //fprintf(stderr, " [code: %04lx, %d], ", code, ((code >= 0x8181) && (code <= 0x83b6)) ? true : false);
26+ // e38181(ぁ) から e383b6(ヶ) までをの範囲で true を返す
27+ return ((code >= 0xe38181) && (code <= 0xe383b6)) ? true : false;
2828 }
2929
3030
@@ -63,7 +63,7 @@
6363 size_t n = min(kanji.size(), kana.size());
6464 for (size_t i = 0; i < n; ++i, ++same_size) {
6565 // !!! 範囲外にアクセスしないかのチェックをすべきp
66- //fprintf(stderr, " <%04x,%04x>,", kanji.ch(i), kana.ch(i));
66+ //fprintf(stderr, " <%04lx,%04lx>,", kanji.ch(i), kana.ch(i));
6767 if (kanji.ch(i) != kana.ch(i)) {
6868 break;
6969 }
@@ -100,7 +100,7 @@
100100 return true;
101101 }
102102
103- unsigned short found_kana = kanji.ch(kana_index);
103+ unsigned long found_kana = kanji.ch(kana_index);
104104
105105 // !!! 以下を、ループで順に繰り返すようにする
106106 size_t rubi_size = 1;
--- trunk/libs/input/TestRubiParse.cpp (revision 1822)
+++ trunk/libs/input/TestRubiParse.cpp (revision 1823)
@@ -28,59 +28,73 @@
2828 rubi.clear();
2929 rubi_parse(rubi, "無", "む");
3030 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi.size());
31+
3132 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), rubi[0].kanji_first);
3233 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi[0].kanji_size);
3334 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), rubi[0].rubi_first);
3435 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi[0].rubi_size);
3536
37+
3638 rubi.clear();
3739 rubi_parse(rubi, "無し", "なし");
3840 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi.size());
41+
3942 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), rubi[0].kanji_first);
4043 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi[0].kanji_size);
4144 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), rubi[0].rubi_first);
4245 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi[0].rubi_size);
4346
47+
4448 rubi.clear();
4549 rubi_parse(rubi, "よい水", "よいみず");
4650 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi.size());
51+
4752 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rubi[0].kanji_first);
4853 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi[0].kanji_size);
4954 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rubi[0].rubi_first);
5055 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rubi[0].rubi_size);
5156
57+
5258 rubi.clear();
5359 rubi_parse(rubi, "よい水だ", "よいみずだ");
5460 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi.size());
61+
5562 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rubi[0].kanji_first);
5663 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi[0].kanji_size);
5764 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rubi[0].rubi_first);
5865 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rubi[0].rubi_size);
5966
67+
6068 rubi.clear();
6169 rubi_parse(rubi, "秋の田の", "あきのたの");
6270 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rubi.size());
71+
6372 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), rubi[0].kanji_first);
6473 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi[0].kanji_size);
6574 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), rubi[0].rubi_first);
6675 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rubi[0].rubi_size);
76+
6777 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rubi[1].kanji_first);
6878 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi[1].kanji_size);
6979 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), rubi[1].rubi_first);
7080 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi[1].rubi_size);
7181
82+
7283 rubi.clear();
7384 rubi_parse(rubi, "あふ坂の関", "あふさかのせき");
7485 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rubi.size());
86+
7587 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rubi[0].kanji_first);
7688 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi[0].kanji_size);
7789 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rubi[0].rubi_first);
7890 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rubi[0].rubi_size);
91+
7992 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), rubi[1].kanji_first);
8093 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi[1].kanji_size);
8194 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(5), rubi[1].rubi_first);
8295 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rubi[1].rubi_size);
8396
97+
8498 rubi.clear();
8599 rubi_parse(rubi, "今日は卵を食べました。", "きょうはたまごをたべました。");
86100 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), rubi.size());
@@ -99,4 +113,14 @@
99113 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi[2].kanji_size);
100114 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(8), rubi[2].rubi_first);
101115 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi[2].rubi_size);
116+
117+
118+ rubi.clear();
119+ rubi_parse(rubi, "法性寺入道前関白太政大臣",
120+ "ほうしょうじのにゅうどうさきのかんぱくだいじょうだいじん");
121+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rubi.size());
122+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), rubi[0].kanji_first);
123+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(12), rubi[0].kanji_size);
124+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), rubi[0].rubi_first);
125+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(28), rubi[0].rubi_size);
102126 }
旧リポジトリブラウザで表示