Skip to main content

atmos/kernel/
font_ja.rs

1// src/font_ja.rs - 日本語8x8ビットマップフォントデータ (美咲フォント規格準拠)
2// Unicodeコードポイント昇順でソートされており、O(log N) で二分探索が可能です。
3#![allow(dead_code)]
4
5/// (Unicodeコードポイント, 8x8ビットマップデータ) のペア配列
6/// コードポイント昇順で厳密にソートされています。
7pub static JP_FONT_TABLE: [(u32, [u8; 8]); 203] = [
8    // 全角記号・スペース
9    (0x3000, [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]), // 全角スペース
10    (0x3001, [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x20]), // 、
11    (0x3002, [0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x24, 0x18]), // 。
12    (0x309B, [0x00, 0x60, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00]), // ゛
13    (0x309C, [0x00, 0x38, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00]), // ゜
14    (0x30A1, [0x00, 0x00, 0x08, 0x08, 0x1c, 0x08, 0x08, 0x00]), // ァ
15    (0x30A2, [0x00, 0x3c, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00]), // ア
16    (0x30A3, [0x00, 0x20, 0x58, 0x20, 0x20, 0x20, 0x20, 0x00]), // ィ
17    (0x30A4, [0x00, 0x20, 0x58, 0x24, 0x24, 0x24, 0x20, 0x00]), // イ
18    (0x30A5, [0x00, 0x00, 0x3e, 0x08, 0x10, 0x20, 0x1c, 0x00]), // ゥ
19    (0x30A6, [0x08, 0x14, 0x3e, 0x08, 0x10, 0x20, 0x1c, 0x00]), // ウ
20    (0x30A7, [0x00, 0x3e, 0x20, 0x38, 0x20, 0x20, 0x3e, 0x00]), // ェ
21    (0x30A8, [0x00, 0x7e, 0x42, 0x7e, 0x42, 0x42, 0x7e, 0x00]), // エ
22    (0x30A9, [0x00, 0x1c, 0x22, 0x42, 0x42, 0x22, 0x1c, 0x00]), // ォ
23    (0x30AA, [0x00, 0x3c, 0x24, 0x24, 0x24, 0x24, 0x3c, 0x00]), // オ
24    (0x30AB, [0x00, 0x24, 0x7c, 0x24, 0x28, 0x48, 0x44, 0x00]), // カ
25    (0x30AC, [0x40, 0x24, 0x7c, 0x24, 0x28, 0x48, 0x44, 0x00]), // ガ
26    (0x30AD, [0x00, 0x7c, 0x10, 0x38, 0x10, 0x10, 0x7c, 0x00]), // キ
27    (0x30AE, [0x40, 0x7c, 0x10, 0x38, 0x10, 0x10, 0x7c, 0x00]), // ギ
28    (0x30AF, [0x00, 0x3e, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00]), // ク
29    (0x30B0, [0x40, 0x3e, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00]), // グ
30    (0x30B1, [0x00, 0x10, 0x1c, 0x54, 0x10, 0x10, 0x10, 0x00]), // ケ
31    (0x30B2, [0x40, 0x10, 0x1c, 0x54, 0x10, 0x10, 0x10, 0x00]), // ゲ
32    (0x30B3, [0x00, 0x3e, 0x20, 0x20, 0x20, 0x20, 0x3e, 0x00]), // コ
33    (0x30B4, [0x40, 0x3e, 0x20, 0x20, 0x20, 0x20, 0x3e, 0x00]), // ゴ
34    (0x30B5, [0x00, 0x10, 0x7c, 0x12, 0x12, 0x12, 0x7c, 0x00]), // サ
35    (0x30B6, [0x40, 0x10, 0x7c, 0x12, 0x12, 0x12, 0x7c, 0x00]), // ザ
36    (0x30B7, [0x00, 0x18, 0x24, 0x44, 0x04, 0x08, 0x30, 0x00]), // シ
37    (0x30B8, [0x40, 0x18, 0x24, 0x44, 0x04, 0x08, 0x30, 0x00]), // ジ
38    (0x30B9, [0x00, 0x7c, 0x08, 0x10, 0x20, 0x44, 0x83, 0x00]), // ス
39    (0x30BA, [0x40, 0x7c, 0x08, 0x10, 0x20, 0x44, 0x83, 0x00]), // ズ
40    (0x30BB, [0x00, 0x3e, 0x22, 0x7e, 0x22, 0x22, 0x3e, 0x00]), // セ
41    (0x30BC, [0x40, 0x3e, 0x22, 0x7e, 0x22, 0x22, 0x3e, 0x00]), // ゼ
42    (0x30BD, [0x00, 0x22, 0x14, 0x08, 0x14, 0x22, 0x41, 0x00]), // ソ
43    (0x30BE, [0x40, 0x22, 0x14, 0x08, 0x14, 0x22, 0x41, 0x00]), // ゾ
44    (0x30BF, [0x00, 0x78, 0x24, 0x24, 0x44, 0x44, 0x38, 0x00]), // タ
45    (0x30C0, [0x40, 0x78, 0x24, 0x24, 0x44, 0x44, 0x38, 0x00]), // ダ
46    (0x30C1, [0x00, 0x1c, 0x22, 0x78, 0x20, 0x20, 0x1c, 0x00]), // チ
47    (0x30C2, [0x40, 0x1c, 0x22, 0x78, 0x20, 0x20, 0x1c, 0x00]), // ヂ
48    (0x30C3, [0x00, 0x00, 0x18, 0x18, 0x08, 0x08, 0x10, 0x00]), // ッ
49    (0x30C4, [0x00, 0x38, 0x44, 0x44, 0x28, 0x10, 0x0c, 0x00]), // ツ
50    (0x30C5, [0x40, 0x38, 0x44, 0x44, 0x28, 0x10, 0x0c, 0x00]), // ヅ
51    (0x30C6, [0x00, 0x7e, 0x04, 0x08, 0x10, 0x22, 0x42, 0x3c]), // テ
52    (0x30C7, [0x40, 0x7e, 0x04, 0x08, 0x10, 0x22, 0x42, 0x3c]), // デ
53    (0x30C8, [0x00, 0x10, 0x10, 0x38, 0x54, 0x10, 0x10, 0x00]), // ト
54    (0x30C9, [0x40, 0x10, 0x10, 0x38, 0x54, 0x10, 0x10, 0x00]), // ド
55    (0x30CA, [0x00, 0x38, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00]), // ナ
56    (0x30CB, [0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x3e, 0x00]), // ニ
57    (0x30CC, [0x00, 0x44, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00]), // ヌ
58    (0x30CD, [0x00, 0x7c, 0x40, 0x7c, 0x40, 0x40, 0x7c, 0x00]), // ネ
59    (0x30CE, [0x00, 0x08, 0x10, 0x20, 0x40, 0x40, 0x80, 0x00]), // ノ
60    (0x30CF, [0x00, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, 0x00]), // ハ
61    (0x30D0, [0x40, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, 0x00]), // バ
62    (0x30D1, [0x50, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, 0x00]), // パ
63    (0x30D2, [0x00, 0x3e, 0x20, 0x20, 0x3e, 0x20, 0x20, 0x3e]), // ヒ
64    (0x30D3, [0x40, 0x3e, 0x20, 0x20, 0x3e, 0x20, 0x20, 0x3e]), // ビ
65    (0x30D4, [0x50, 0x3e, 0x20, 0x20, 0x3e, 0x20, 0x20, 0x3e]), // ピ
66    (0x30D5, [0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00]), // フ
67    (0x30D6, [0x40, 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00]), // ブ
68    (0x30D7, [0x50, 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00]), // プ
69    (0x30D8, [0x00, 0x18, 0x24, 0x42, 0x42, 0x42, 0x24, 0x18]), // ヘ
70    (0x30D9, [0x40, 0x18, 0x24, 0x42, 0x42, 0x42, 0x24, 0x18]), // ベ
71    (0x30DA, [0x50, 0x18, 0x24, 0x42, 0x42, 0x42, 0x24, 0x18]), // ペ
72    (0x30DB, [0x00, 0x3c, 0x24, 0x24, 0x24, 0x24, 0x3c, 0x00]), // ホ
73    (0x30DC, [0x40, 0x3c, 0x24, 0x24, 0x24, 0x24, 0x3c, 0x00]), // ボ
74    (0x30DD, [0x50, 0x3c, 0x24, 0x24, 0x24, 0x24, 0x3c, 0x00]), // ポ
75    (0x30DE, [0x00, 0x7c, 0x10, 0x10, 0x38, 0x10, 0x10, 0x00]), // マ
76    (0x30DF, [0x00, 0x22, 0x7e, 0x22, 0x14, 0x08, 0x1c, 0x00]), // ミ
77    (0x30E0, [0x00, 0x3a, 0x44, 0x84, 0x84, 0x84, 0x44, 0x3e]), // ム
78    (0x30E1, [0x00, 0x7e, 0x42, 0x42, 0x24, 0x18, 0x18, 0x00]), // メ
79    (0x30E2, [0x00, 0x3c, 0x42, 0x40, 0x3c, 0x02, 0x42, 0x3c]), // モ
80    (0x30E4, [0x00, 0x18, 0x24, 0x42, 0x7e, 0x42, 0x42, 0x00]), // ヤ
81    (0x30E6, [0x00, 0x38, 0x44, 0x44, 0x38, 0x04, 0x08, 0x30]), // ユ
82    (0x30E8, [0x00, 0x3e, 0x02, 0x02, 0x1e, 0x02, 0x02, 0x3e]), // ヨ
83    (0x30E9, [0x00, 0x10, 0x30, 0x54, 0x10, 0x24, 0x24, 0x18]), // ラ
84    (0x30EA, [0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x18]), // リ
85    (0x30EB, [0x00, 0x1c, 0x22, 0x42, 0x22, 0x14, 0x08, 0x10]), // ル
86    (0x30EC, [0x00, 0x3c, 0x20, 0x38, 0x20, 0x22, 0x22, 0x1c]), // レ
87    (0x30ED, [0x00, 0x3e, 0x22, 0x22, 0x22, 0x22, 0x3e, 0x00]), // ロ
88    (0x30EF, [0x00, 0x3e, 0x22, 0x22, 0x22, 0x22, 0x22, 0x00]), // ワ
89    (0x30F3, [0x00, 0x22, 0x32, 0x2A, 0x26, 0x22, 0x22, 0x00]), // ン
90    (0x30FC, [0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00]), // ー (長音)
91    // ひらがな (ぁ〜ん)
92    (0x3041, [0x00, 0x20, 0x58, 0x20, 0x20, 0x24, 0x18, 0x00]), // ぁ
93    (0x3042, [0x10, 0x7E, 0x14, 0x3E, 0x54, 0x54, 0x3A, 0x00]), // あ
94    (0x3043, [0x00, 0x20, 0x18, 0x14, 0x14, 0x14, 0x08, 0x00]), // ぃ
95    (0x3044, [0x00, 0x40, 0x30, 0x28, 0x24, 0x24, 0x18, 0x00]), // い
96    (0x3045, [0x00, 0x00, 0x3e, 0x08, 0x10, 0x20, 0x1c, 0x00]), // ぅ
97    (0x3046, [0x08, 0x14, 0x3e, 0x08, 0x10, 0x20, 0x1c, 0x00]), // う
98    (0x3047, [0x00, 0x3e, 0x20, 0x38, 0x20, 0x20, 0x3e, 0x00]), // ぇ
99    (0x3048, [0x00, 0x7e, 0x42, 0x7e, 0x42, 0x42, 0x7e, 0x00]), // え
100    (0x3049, [0x00, 0x1c, 0x22, 0x42, 0x22, 0x22, 0x1c, 0x00]), // ぉ
101    (0x304A, [0x00, 0x3c, 0x24, 0x24, 0x24, 0x24, 0x3c, 0x00]), // お
102    (0x304B, [0x00, 0x24, 0x7c, 0x24, 0x28, 0x48, 0x44, 0x00]), // か
103    (0x304C, [0x40, 0x24, 0x7c, 0x24, 0x28, 0x48, 0x44, 0x00]), // が
104    (0x304D, [0x00, 0x7c, 0x10, 0x38, 0x10, 0x10, 0x7c, 0x00]), // き
105    (0x304E, [0x40, 0x7c, 0x10, 0x38, 0x10, 0x10, 0x7c, 0x00]), // ぎ
106    (0x304F, [0x00, 0x3e, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00]), // く
107    (0x3050, [0x40, 0x3e, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00]), // ぐ
108    (0x3051, [0x00, 0x10, 0x1c, 0x54, 0x10, 0x10, 0x10, 0x00]), // け
109    (0x3052, [0x40, 0x10, 0x1c, 0x54, 0x10, 0x10, 0x10, 0x00]), // げ
110    (0x3053, [0x00, 0x3e, 0x20, 0x20, 0x20, 0x20, 0x3e, 0x00]), // こ
111    (0x3054, [0x40, 0x3e, 0x20, 0x20, 0x20, 0x20, 0x3e, 0x00]), // ご
112    (0x3055, [0x00, 0x10, 0x7c, 0x12, 0x12, 0x12, 0x7c, 0x00]), // さ
113    (0x3056, [0x40, 0x10, 0x7c, 0x12, 0x12, 0x12, 0x7c, 0x00]), // ざ
114    (0x3057, [0x00, 0x18, 0x24, 0x44, 0x04, 0x08, 0x30, 0x00]), // し
115    (0x3058, [0x40, 0x18, 0x24, 0x44, 0x04, 0x08, 0x30, 0x00]), // じ
116    (0x3059, [0x00, 0x7c, 0x08, 0x10, 0x20, 0x44, 0x83, 0x00]), // す
117    (0x305A, [0x40, 0x7c, 0x08, 0x10, 0x20, 0x44, 0x83, 0x00]), // ず
118    (0x305B, [0x00, 0x3e, 0x22, 0x7e, 0x22, 0x22, 0x3e, 0x00]), // せ
119    (0x305C, [0x40, 0x3e, 0x22, 0x7e, 0x22, 0x22, 0x3e, 0x00]), // ゼ
120    (0x305D, [0x00, 0x22, 0x14, 0x08, 0x14, 0x22, 0x41, 0x00]), // そ
121    (0x305E, [0x40, 0x22, 0x14, 0x08, 0x14, 0x22, 0x41, 0x00]), // ゾ
122    (0x305F, [0x00, 0x78, 0x24, 0x24, 0x44, 0x44, 0x38, 0x00]), // た
123    (0x3060, [0x40, 0x78, 0x24, 0x24, 0x44, 0x44, 0x38, 0x00]), // だ
124    (0x3061, [0x00, 0x1c, 0x22, 0x78, 0x20, 0x20, 0x1c, 0x00]), // ち
125    (0x3062, [0x40, 0x1c, 0x22, 0x78, 0x20, 0x20, 0x1c, 0x00]), // ぢ
126    (0x3063, [0x00, 0x00, 0x18, 0x18, 0x08, 0x08, 0x10, 0x00]), // っ
127    (0x3064, [0x00, 0x38, 0x44, 0x44, 0x28, 0x10, 0x0c, 0x00]), // つ
128    (0x3065, [0x40, 0x38, 0x44, 0x44, 0x28, 0x10, 0x0c, 0x00]), // づ
129    (0x3066, [0x00, 0x7e, 0x04, 0x08, 0x10, 0x22, 0x42, 0x3c]), // て
130    (0x3067, [0x40, 0x7e, 0x04, 0x08, 0x10, 0x22, 0x42, 0x3c]), // で
131    (0x3068, [0x00, 0x10, 0x10, 0x38, 0x54, 0x10, 0x10, 0x00]), // と
132    (0x3069, [0x40, 0x10, 0x10, 0x38, 0x54, 0x10, 0x10, 0x00]), // ど
133    (0x306A, [0x00, 0x38, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00]), // な
134    (0x306B, [0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x3e, 0x00]), // に
135    (0x306C, [0x00, 0x44, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00]), // ぬ
136    (0x306D, [0x00, 0x7c, 0x40, 0x7c, 0x40, 0x40, 0x7c, 0x00]), // ね
137    (0x306E, [0x00, 0x08, 0x10, 0x20, 0x40, 0x40, 0x80, 0x00]), // の
138    (0x306F, [0x00, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, 0x00]), // は
139    (0x3070, [0x40, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, 0x00]), // ば
140    (0x3071, [0x00, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, 0x00]), // ぱ
141    (0x3072, [0x00, 0x3e, 0x20, 0x20, 0x3e, 0x20, 0x20, 0x3e]), // ひ
142    (0x3075, [0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00]), // ふ
143    (0x3076, [0x40, 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00]), // ぶ
144    (0x3078, [0x00, 0x18, 0x24, 0x42, 0x42, 0x42, 0x24, 0x18]), // へ
145    (0x307B, [0x00, 0x3c, 0x24, 0x24, 0x24, 0x24, 0x3c, 0x00]), // ほ
146    (0x307E, [0x00, 0x7c, 0x10, 0x10, 0x38, 0x10, 0x10, 0x00]), // ま
147    (0x307F, [0x00, 0x22, 0x7e, 0x22, 0x14, 0x08, 0x1c, 0x00]), // み
148    (0x3080, [0x00, 0x3a, 0x44, 0x84, 0x84, 0x84, 0x44, 0x3e]), // む
149    (0x3081, [0x00, 0x7e, 0x42, 0x42, 0x24, 0x18, 0x18, 0x00]), // め
150    (0x3082, [0x00, 0x3c, 0x42, 0x40, 0x3c, 0x02, 0x42, 0x3c]), // も
151    (0x3084, [0x00, 0x18, 0x24, 0x42, 0x7e, 0x42, 0x42, 0x00]), // や
152    (0x3086, [0x00, 0x38, 0x44, 0x44, 0x38, 0x04, 0x08, 0x30]), // ゆ
153    (0x3088, [0x00, 0x3e, 0x02, 0x02, 0x1e, 0x02, 0x02, 0x3e]), // よ
154    (0x3089, [0x00, 0x10, 0x30, 0x54, 0x10, 0x24, 0x24, 0x18]), // ら
155    (0x308A, [0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x18]), // り
156    (0x308B, [0x00, 0x1c, 0x22, 0x42, 0x22, 0x14, 0x08, 0x10]), // る
157    (0x308C, [0x00, 0x3c, 0x20, 0x38, 0x20, 0x22, 0x22, 0x1c]), // れ
158    (0x308D, [0x00, 0x3e, 0x22, 0x22, 0x22, 0x22, 0x3e, 0x00]), // ろ
159    (0x308F, [0x00, 0x3e, 0x22, 0x22, 0x22, 0x22, 0x22, 0x00]), // わ
160    (0x3093, [0x00, 0x22, 0x32, 0x2A, 0x26, 0x22, 0x22, 0x00]), // ん
161    // 主要システムUI漢字 (Unicodeコードポイント順に整列)
162    (0x4E86, [0x7E, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0E]), // 了
163    (0x4F53, [0x92, 0x92, 0xFE, 0x92, 0x92, 0x92, 0xFE, 0x00]), // 体
164    (0x50CD, [0x9C, 0x24, 0x94, 0xBC, 0xD4, 0x94, 0x94, 0xCE]), // 働
165    (0x5165, [0x08, 0x0C, 0x0C, 0x14, 0x14, 0x24, 0x42, 0x82]), // 入
166    (0x5168, [0x10, 0x28, 0x44, 0x7C, 0x10, 0x10, 0x7C, 0x00]), // 全
167    (0x518D, [0x7E, 0x42, 0x42, 0x7E, 0x42, 0x42, 0x7E, 0x00]), // 再
168    (0x5206, [0x24, 0x24, 0x42, 0x42, 0x7E, 0x04, 0x08, 0x10]), // 分
169    (0x5272, [0xD7, 0x52, 0xD5, 0xD2, 0x52, 0xD2, 0x52, 0x5E]), // 割
170    (0x529B, [0x7E, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40]), // 力
171    (0x52D5, [0xFC, 0x24, 0xB4, 0x2C, 0xF6, 0x24, 0x2C, 0xB6]), // 動
172    (0x53D7, [0x7E, 0x10, 0x28, 0x44, 0x38, 0x04, 0x08, 0x78]), // 受
173    (0x5408, [0x10, 0x28, 0x44, 0x7C, 0x44, 0x44, 0x7C, 0x00]), // 合
174    (0x544A, [0x10, 0x38, 0x54, 0x10, 0x7C, 0x44, 0x44, 0x7C]), // 告
175    (0x56FA, [0x7E, 0x42, 0x5A, 0x4E, 0x4A, 0x4E, 0x42, 0x7E]), // 固
176    (0x57DF, [0x36, 0x4C, 0x84, 0x84, 0x4C, 0x34, 0x04, 0x78]), // 域
177    (0x5831, [0xBE, 0x82, 0x82, 0x82, 0xBE, 0x80, 0x80, 0x80]), // 報
178    (0x5B8C, [0x1C, 0x44, 0x7E, 0x44, 0x44, 0x48, 0x50, 0x26]), // 完
179    (0x5B9A, [0x10, 0x7C, 0x10, 0x7E, 0x12, 0x24, 0x48, 0x30]), // 定
180    (0x5E38, [0x10, 0x2A, 0x44, 0x7E, 0x10, 0x28, 0x44, 0x38]), // 常
181    (0x5EA6, [0x0E, 0x1C, 0x2A, 0x2A, 0x28, 0x2A, 0x28, 0x1E]), // 度
182    (0x60C5, [0xD4, 0x24, 0xD4, 0xD4, 0x54, 0xD4, 0x54, 0x5C]), // 情
183    (0x614B, [0xDF, 0x50, 0x5F, 0x50, 0xD2, 0x5E, 0x5A, 0x64]), // 態
184    (0x629E, [0x52, 0x54, 0xD4, 0x5C, 0x52, 0x52, 0x52, 0x52]), // 択
185    (0x63A5, [0x52, 0x54, 0xD4, 0xD4, 0x54, 0xD4, 0x54, 0x5C]), // 接
186    (0x6570, [0xD5, 0x56, 0x5C, 0x55, 0x57, 0x5D, 0xDD, 0x55]), // 数
187    (0x6642, [0x7D, 0x44, 0x7F, 0x44, 0x44, 0x44, 0x44, 0x7C]), // 時
188    (0x6841, [0x55, 0x55, 0xD4, 0x54, 0x54, 0x56, 0x54, 0x54]), // 桁
189    (0x6E29, [0x3E, 0x44, 0x44, 0x7C, 0x44, 0x44, 0x44, 0x7C]), // 温
190    (0x72B6, [0xC9, 0x48, 0xC8, 0x48, 0x48, 0x48, 0x48, 0xC8]), // 状
191    (0x7528, [0x7E, 0x42, 0x42, 0x7E, 0x42, 0x42, 0x7E, 0x42]), // 用
192    (0x753B, [0x7E, 0x42, 0x5A, 0x5A, 0x7E, 0x10, 0x10, 0x7C]), // 画
193    (0x767B, [0x44, 0x7C, 0xD6, 0x54, 0x7C, 0x10, 0x54, 0x38]), // 登
194    (0x78BA, [0xF5, 0x54, 0xD6, 0x55, 0x55, 0x56, 0xD4, 0x55]), // 確
195    (0x793A, [0x7E, 0x04, 0x08, 0x7E, 0x08, 0x14, 0x22, 0x42]), // 示
196    (0x79D2, [0xD7, 0x52, 0x54, 0xD5, 0x52, 0x52, 0x52, 0x52]), // 秒
197    (0x7A3C, [0xD7, 0x54, 0x54, 0xD7, 0x55, 0xD5, 0xD5, 0x5E]), // 稼
198    (0x7D9A, [0xD7, 0x54, 0x54, 0xD4, 0x54, 0x56, 0x54, 0x54]), // 続
199    (0x8377, [0x3C, 0x4A, 0x9A, 0x9A, 0x9A, 0x9A, 0x5A, 0x3C]), // 荷
200    (0x8868, [0x7C, 0x10, 0x38, 0x7C, 0x10, 0x28, 0x44, 0x82]), // 表
201    (0x89E3, [0xF5, 0x55, 0xD6, 0x55, 0x55, 0x56, 0xD4, 0x55]), // 解
202    (0x8A2D, [0xD4, 0x24, 0xD4, 0xD4, 0x54, 0xD4, 0x54, 0x5C]), // 設
203    (0x8A8D, [0xD7, 0x52, 0xD7, 0xD5, 0x55, 0xD7, 0x55, 0x55]), // 認
204    (0x8B66, [0xEF, 0x44, 0x4A, 0x52, 0x52, 0x52, 0x4A, 0x46]), // 警
205    (0x8CA0, [0x3E, 0x22, 0x3E, 0x2A, 0x2A, 0x2A, 0x22, 0x22]), // 負
206    (0x8D77, [0x9F, 0x50, 0x9F, 0x55, 0xF9, 0x51, 0x51, 0x5E]), // 起
207    (0x9001, [0x14, 0x24, 0x44, 0x44, 0x24, 0x14, 0x08, 0x78]), // 送
208    (0x9078, [0x36, 0x4C, 0x84, 0x84, 0x4C, 0x34, 0x04, 0x78]), // 選
209    (0x9332, [0xDF, 0x54, 0x5F, 0xD4, 0x5F, 0xD2, 0xD2, 0x5C]), // 録
210    (0x9593, [0x7F, 0x49, 0x4F, 0x49, 0x49, 0x49, 0x49, 0x7F]), // 間
211    (0x9664, [0xEF, 0x80, 0x88, 0x88, 0x88, 0x98, 0xE8, 0x88]), // 除
212    (0x9762, [0x7E, 0x42, 0x42, 0x7E, 0x52, 0x52, 0x52, 0x7E]), // 面
213    (0x9818, [0xFE, 0x84, 0x84, 0xBA, 0xA2, 0xA2, 0xA2, 0xFE]), // 領
214];
215
216/// 指定された Unicode コードポイントに対応する日本語ビットマップフォント (8x8) を取得します。
217/// O(log N) の二分探索アルゴリズムを適用しています。
218pub fn get_font_bitmap(code: u32) -> Option<&'static [u8; 8]> {
219    match JP_FONT_TABLE.binary_search_by_key(&code, |&(c, _)| c) {
220        Ok(idx) => Some(&JP_FONT_TABLE[idx].1),
221        Err(_) => None,
222    }
223}