Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add max_pack_XXX to nk_font_atlas #296

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

FrostKiwi
Copy link
Contributor

With a large number of glyphs (i.e. by including Unicode's CJK unified table for Japanese), Nuklear's default font handler produces tall but thin Texture atlases, that quickly break through the GPU's max texture size. See this texture atlas for context:

Example default texture atlas

here

The default sizes of 1k width and 32k height are rather arbitrary as well. Specifically the atlas pack width is changed from 512 to 1024 after 1000 glyphs. This decision does not take into account oversampling for instance.

To alleviate this, this PR introduces "nk_size max_pack_width" and "nk_size max_pack_height" to the struct "nk_font_atlas".
This allows the user to override the texture atlas size limits, as used by nk_font_bake_pack(). Because those numbers have to be initialized to prevent undefined behavior in the default case, nk_font_atlas_begin() sets this value to 0. As such, the values can only be set after nk_font_atlas_begin().
Here an example for context, which sets the pack size to the OpenGL Texture maximum, based on the GLFW_OpenGL3 demo.

struct nk_font * test_font;
struct nk_font_config cfg_font = nk_font_config(0);

nk_rune ranges_font[] = {
    0x0020, 0x007E,    	/* Ascii */
    0x00A1, 0x00FF,    	/* Symbols + Umlaute */
    0x0410, 0x044F,    	/* Russian */
    0x3000, 0x303F,    	/* CJK Symbols and Punctuation */
    0x3040, 0x309F,    	/* Hiragana */
    0x30A0, 0x30FF,    	/* Katakana */
    0x4E00, 0x9FFF,    	/* Kanji */
    0
}; 

struct nk_font_atlas *atlas;
nk_glfw3_font_stash_begin(&glfw, &atlas);
int texture_max;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texture_max);
atlas->max_pack_width = texture_max;
atlas->max_pack_height = texture_max;
test_font = nk_font_atlas_add_from_memory(
    atlas, (void *)NotoSansCJKjp_Regular_otf.pnt,
    NotoSansCJKjp_Regular_otf.size, 27.5, &cfg_font);
nk_glfw3_font_stash_end(&glfw);
nk_style_set_font(ctx, &test_font->handle);

Now the texture atlas is more square and does not blow past the GPU's size limit with bigger fontsizes or oversampling.

  • Why not use tex_width and tex_height, which is already there?
    Those values are used to report the result of the atlas baking and packing operations. It would be inconstant logic, if the values are set one moment and change by themselves in the next one.
  • Why not change the behavior of width and height of nk_font_atlas_bake?
    Same logic, those values are just used for reporting back, also it would require users to initialize those values to zero beforehand, breaking Nuklear by default.
  • Why not introduce a new argument to nk_font_atlas_bake()?
    It would break the API and all demos.
  • Why change the default packing max_height of 32k to 16k?
    Although still arbitrary, the 16k textures are the upper limit of a big chunk of modern graphics cards. 16k textures are a sensible upper limit, if a more sensible value is not set by the user

Copy link
Contributor

@Hejsil Hejsil left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not an expert myself, but the reasoning seems good. I only have one nitpick for the code

src/nuklear_font.c Outdated Show resolved Hide resolved
@FrostKiwi
Copy link
Contributor Author

FrostKiwi commented Dec 28, 2021

According to a git notification, @RobLoach commented the change:

⬇️ Suggested change
-	max_height = max_pack_height;
+        max_height = max_pack_height;

but I can't actually see the comment in this PR. Any way, I used the occasion to rebase this PR on the newest git master and reverted the version number formatting with how it was before, whilst I'm at it. (4.9.4) --> (4.09.4)
If there are any change suggestions, I'm happy to implement them.

I have been using

glGetIntegerv(GL_MAX_TEXTURE_SIZE, &opengl_max_texture);
atlas->max_pack_width = opengl_max_texture;
atlas->max_pack_height = opengl_max_texture;

in every Nuklear project for a while now. And pretty happy with it, since using Japanese + Cyrillic font configs constantly blew past the small 1k x 16k texture strip.

@dumblob
Copy link
Member

dumblob commented Dec 28, 2021

and reverted the version number formatting with how it was before, whilst I'm at it. (4.9.4) --> (4.09.4) If there are any change suggestions, I'm happy to implement them.

Actually this was intentional as "true" Semver doesn't use any zero padding 😉.

I have been using

glGetIntegerv(GL_MAX_TEXTURE_SIZE, &opengl_max_texture);
atlas->max_pack_width = opengl_max_texture;
atlas->max_pack_height = opengl_max_texture;

in every Nuklear project for a while now. And pretty happy with it, since using Japanese + Cyrillic font configs constantly blew past the small 1k x 16k texture strip.

Interesting. Just for me - what are the overall sizes of all such atlases in RAM you see in practice per process (on x86, POWER, ARM machines of your choice)? Few MBytes or tens of MBytes or hundreds of MBytes?

@FrostKiwi
Copy link
Contributor Author

FrostKiwi commented Dec 28, 2021

Actually this was intentional as "true" Semver doesn't use any zero padding 😉.

Ohh... reverted to how it was in git master again.

in RAM you see in practice per process (on x86, POWER, ARM machines of your choice)? Few MBytes or tens of MBytes or hundreds of MBytes?

I only did x86 PCs so far, always with a GPU or iGPU present. After uploading to the GPU, I remove the image from RAM and as I understand it, no font atlas is kept in RAM any more.
I use the nuklear_glfw_gl3.h demo file and it is a bit wastefully baked as full RGBA. https://github.com/Immediate-Mode-UI/Nuklear/blob/master/demo/glfw_opengl3/nuklear_glfw_gl3.h#L404

With the whole CJK Unicode block + all special characters + icons and small font size, in VRAM everything fits into 16kx1k and the bigger font sizes into 16kx2k. So I guess for 4-channel RGBA that would be 16kx2k = 32MP * 4 / 8... 16 megabytes in the worst case. Which is quite a chunk now that you mention it.
I have a "strings" file which I always wanted to crawl to select a subset of the actually used unicode codepoints, but never got around to it. In reality, currently I use this Joyo Kanji list which created and #include. So far this covered my use of Japanese and the startup times are 10x faster than including the whole CJK block. I don't have the program on hand here to check what the real size is though...

Most used 2000 Joyo kanji as taught in school in Nuklear's format
0x4E9C, 0x4E9C, /* 亜 */
0x54C0, 0x54C0, /* 哀 */
0x6328, 0x6328, /* 挨 */
0x611B, 0x611B, /* 愛 */
0x66D6, 0x66D6, /* 曖 */
0x60AA, 0x60AA, /* 悪 */
0x63E1, 0x63E1, /* 握 */
0x5727, 0x5727, /* 圧 */
0x6271, 0x6271, /* 扱 */
0x5B9B, 0x5B9B, /* 宛 */
0x5D50, 0x5D50, /* 嵐 */
0x5B89, 0x5B89, /* 安 */
0x6848, 0x6848, /* 案 */
0x6697, 0x6697, /* 暗 */
0x4EE5, 0x4EE5, /* 以 */
0x8863, 0x8863, /* 衣 */
0x4F4D, 0x4F4D, /* 位 */
0x56F2, 0x56F2, /* 囲 */
0x533B, 0x533B, /* 医 */
0x4F9D, 0x4F9D, /* 依 */
0x59D4, 0x59D4, /* 委 */
0x5A01, 0x5A01, /* 威 */
0x70BA, 0x70BA, /* 為 */
0x754F, 0x754F, /* 畏 */
0x80C3, 0x80C3, /* 胃 */
0x5C09, 0x5C09, /* 尉 */
0x7570, 0x7570, /* 異 */
0x79FB, 0x79FB, /* 移 */
0x840E, 0x840E, /* 萎 */
0x5049, 0x5049, /* 偉 */
0x6905, 0x6905, /* 椅 */
0x5F59, 0x5F59, /* 彙 */
0x610F, 0x610F, /* 意 */
0x9055, 0x9055, /* 違 */
0x7DAD, 0x7DAD, /* 維 */
0x6170, 0x6170, /* 慰 */
0x907A, 0x907A, /* 遺 */
0x7DEF, 0x7DEF, /* 緯 */
0x57DF, 0x57DF, /* 域 */
0x80B2, 0x80B2, /* 育 */
0x4E00, 0x4E00, /* 一 */
0x58F1, 0x58F1, /* 壱 */
0x9038, 0x9038, /* 逸 */
0x8328, 0x8328, /* 茨 */
0x828B, 0x828B, /* 芋 */
0x5F15, 0x5F15, /* 引 */
0x5370, 0x5370, /* 印 */
0x56E0, 0x56E0, /* 因 */
0x54BD, 0x54BD, /* 咽 */
0x59FB, 0x59FB, /* 姻 */
0x54E1, 0x54E1, /* 員 */
0x9662, 0x9662, /* 院 */
0x6DEB, 0x6DEB, /* 淫 */
0x9670, 0x9670, /* 陰 */
0x98F2, 0x98F2, /* 飲 */
0x96A0, 0x96A0, /* 隠 */
0x97FB, 0x97FB, /* 韻 */
0x53F3, 0x53F3, /* 右 */
0x5B87, 0x5B87, /* 宇 */
0x7FBD, 0x7FBD, /* 羽 */
0x96E8, 0x96E8, /* 雨 */
0x5504, 0x5504, /* 唄 */
0x9B31, 0x9B31, /* 鬱 */
0x755D, 0x755D, /* 畝 */
0x6D66, 0x6D66, /* 浦 */
0x904B, 0x904B, /* 運 */
0x96F2, 0x96F2, /* 雲 */
0x6C38, 0x6C38, /* 永 */
0x6CF3, 0x6CF3, /* 泳 */
0x82F1, 0x82F1, /* 英 */
0x6620, 0x6620, /* 映 */
0x6804, 0x6804, /* 栄 */
0x55B6, 0x55B6, /* 営 */
0x8A60, 0x8A60, /* 詠 */
0x5F71, 0x5F71, /* 影 */
0x92ED, 0x92ED, /* 鋭 */
0x885B, 0x885B, /* 衛 */
0x6613, 0x6613, /* 易 */
0x75AB, 0x75AB, /* 疫 */
0x76CA, 0x76CA, /* 益 */
0x6DB2, 0x6DB2, /* 液 */
0x99C5, 0x99C5, /* 駅 */
0x60A6, 0x60A6, /* 悦 */
0x8D8A, 0x8D8A, /* 越 */
0x8B01, 0x8B01, /* 謁 */
0x95B2, 0x95B2, /* 閲 */
0x5186, 0x5186, /* 円 */
0x5EF6, 0x5EF6, /* 延 */
0x6CBF, 0x6CBF, /* 沿 */
0x708E, 0x708E, /* 炎 */
0x6028, 0x6028, /* 怨 */
0x5BB4, 0x5BB4, /* 宴 */
0x5A9B, 0x5A9B, /* 媛 */
0x63F4, 0x63F4, /* 援 */
0x5712, 0x5712, /* 園 */
0x7159, 0x7159, /* 煙 */
0x733F, 0x733F, /* 猿 */
0x9060, 0x9060, /* 遠 */
0x925B, 0x925B, /* 鉛 */
0x5869, 0x5869, /* 塩 */
0x6F14, 0x6F14, /* 演 */
0x7E01, 0x7E01, /* 縁 */
0x8276, 0x8276, /* 艶 */
0x6C5A, 0x6C5A, /* 汚 */
0x738B, 0x738B, /* 王 */
0x51F9, 0x51F9, /* 凹 */
0x592E, 0x592E, /* 央 */
0x5FDC, 0x5FDC, /* 応 */
0x5F80, 0x5F80, /* 往 */
0x62BC, 0x62BC, /* 押 */
0x65FA, 0x65FA, /* 旺 */
0x6B27, 0x6B27, /* 欧 */
0x6BB4, 0x6BB4, /* 殴 */
0x685C, 0x685C, /* 桜 */
0x7FC1, 0x7FC1, /* 翁 */
0x5965, 0x5965, /* 奥 */
0x6A2A, 0x6A2A, /* 横 */
0x5CA1, 0x5CA1, /* 岡 */
0x5C4B, 0x5C4B, /* 屋 */
0x5104, 0x5104, /* 億 */
0x61B6, 0x61B6, /* 憶 */
0x81C6, 0x81C6, /* 臆 */
0x865E, 0x865E, /* 虞 */
0x4E59, 0x4E59, /* 乙 */
0x4FFA, 0x4FFA, /* 俺 */
0x5378, 0x5378, /* 卸 */
0x97F3, 0x97F3, /* 音 */
0x6069, 0x6069, /* 恩 */
0x6E29, 0x6E29, /* 温 */
0x7A4F, 0x7A4F, /* 穏 */
0x4E0B, 0x4E0B, /* 下 */
0x5316, 0x5316, /* 化 */
0x706B, 0x706B, /* 火 */
0x52A0, 0x52A0, /* 加 */
0x53EF, 0x53EF, /* 可 */
0x4EEE, 0x4EEE, /* 仮 */
0x4F55, 0x4F55, /* 何 */
0x82B1, 0x82B1, /* 花 */
0x4F73, 0x4F73, /* 佳 */
0x4FA1, 0x4FA1, /* 価 */
0x679C, 0x679C, /* 果 */
0x6CB3, 0x6CB3, /* 河 */
0x82DB, 0x82DB, /* 苛 */
0x79D1, 0x79D1, /* 科 */
0x67B6, 0x67B6, /* 架 */
0x590F, 0x590F, /* 夏 */
0x5BB6, 0x5BB6, /* 家 */
0x8377, 0x8377, /* 荷 */
0x83EF, 0x83EF, /* 華 */
0x83D3, 0x83D3, /* 菓 */
0x8CA8, 0x8CA8, /* 貨 */
0x6E26, 0x6E26, /* 渦 */
0x904E, 0x904E, /* 過 */
0x5AC1, 0x5AC1, /* 嫁 */
0x6687, 0x6687, /* 暇 */
0x798D, 0x798D, /* 禍 */
0x9774, 0x9774, /* 靴 */
0x5BE1, 0x5BE1, /* 寡 */
0x6B4C, 0x6B4C, /* 歌 */
0x7B87, 0x7B87, /* 箇 */
0x7A3C, 0x7A3C, /* 稼 */
0x8AB2, 0x8AB2, /* 課 */
0x868A, 0x868A, /* 蚊 */
0x7259, 0x7259, /* 牙 */
0x74E6, 0x74E6, /* 瓦 */
0x6211, 0x6211, /* 我 */
0x753B, 0x753B, /* 画 */
0x82BD, 0x82BD, /* 芽 */
0x8CC0, 0x8CC0, /* 賀 */
0x96C5, 0x96C5, /* 雅 */
0x9913, 0x9913, /* 餓 */
0x4ECB, 0x4ECB, /* 介 */
0x56DE, 0x56DE, /* 回 */
0x7070, 0x7070, /* 灰 */
0x4F1A, 0x4F1A, /* 会 */
0x5FEB, 0x5FEB, /* 快 */
0x6212, 0x6212, /* 戒 */
0x6539, 0x6539, /* 改 */
0x602A, 0x602A, /* 怪 */
0x62D0, 0x62D0, /* 拐 */
0x6094, 0x6094, /* 悔 */
0x6D77, 0x6D77, /* 海 */
0x754C, 0x754C, /* 界 */
0x7686, 0x7686, /* 皆 */
0x68B0, 0x68B0, /* 械 */
0x7D75, 0x7D75, /* 絵 */
0x958B, 0x958B, /* 開 */
0x968E, 0x968E, /* 階 */
0x584A, 0x584A, /* 塊 */
0x6977, 0x6977, /* 楷 */
0x89E3, 0x89E3, /* 解 */
0x6F70, 0x6F70, /* 潰 */
0x58CA, 0x58CA, /* 壊 */
0x61D0, 0x61D0, /* 懐 */
0x8AE7, 0x8AE7, /* 諧 */
0x8C9D, 0x8C9D, /* 貝 */
0x5916, 0x5916, /* 外 */
0x52BE, 0x52BE, /* 劾 */
0x5BB3, 0x5BB3, /* 害 */
0x5D16, 0x5D16, /* 崖 */
0x6DAF, 0x6DAF, /* 涯 */
0x8857, 0x8857, /* 街 */
0x6168, 0x6168, /* 慨 */
0x84CB, 0x84CB, /* 蓋 */
0x8A72, 0x8A72, /* 該 */
0x6982, 0x6982, /* 概 */
0x9AB8, 0x9AB8, /* 骸 */
0x57A3, 0x57A3, /* 垣 */
0x67FF, 0x67FF, /* 柿 */
0x5404, 0x5404, /* 各 */
0x89D2, 0x89D2, /* 角 */
0x62E1, 0x62E1, /* 拡 */
0x9769, 0x9769, /* 革 */
0x683C, 0x683C, /* 格 */
0x6838, 0x6838, /* 核 */
0x6BBB, 0x6BBB, /* 殻 */
0x90ED, 0x90ED, /* 郭 */
0x899A, 0x899A, /* 覚 */
0x8F03, 0x8F03, /* 較 */
0x9694, 0x9694, /* 隔 */
0x95A3, 0x95A3, /* 閣 */
0x78BA, 0x78BA, /* 確 */
0x7372, 0x7372, /* 獲 */
0x5687, 0x5687, /* 嚇 */
0x7A6B, 0x7A6B, /* 穫 */
0x5B66, 0x5B66, /* 学 */
0x5CB3, 0x5CB3, /* 岳 */
0x697D, 0x697D, /* 楽 */
0x984D, 0x984D, /* 額 */
0x984E, 0x984E, /* 顎 */
0x639B, 0x639B, /* 掛 */
0x6F5F, 0x6F5F, /* 潟 */
0x62EC, 0x62EC, /* 括 */
0x6D3B, 0x6D3B, /* 活 */
0x559D, 0x559D, /* 喝 */
0x6E07, 0x6E07, /* 渇 */
0x5272, 0x5272, /* 割 */
0x845B, 0x845B, /* 葛 */
0x6ED1, 0x6ED1, /* 滑 */
0x8910, 0x8910, /* 褐 */
0x8F44, 0x8F44, /* 轄 */
0x4E14, 0x4E14, /* 且 */
0x682A, 0x682A, /* 株 */
0x91DC, 0x91DC, /* 釜 */
0x938C, 0x938C, /* 鎌 */
0x5208, 0x5208, /* 刈 */
0x5E72, 0x5E72, /* 干 */
0x520A, 0x520A, /* 刊 */
0x7518, 0x7518, /* 甘 */
0x6C57, 0x6C57, /* 汗 */
0x7F36, 0x7F36, /* 缶 */
0x5B8C, 0x5B8C, /* 完 */
0x809D, 0x809D, /* 肝 */
0x5B98, 0x5B98, /* 官 */
0x51A0, 0x51A0, /* 冠 */
0x5DFB, 0x5DFB, /* 巻 */
0x770B, 0x770B, /* 看 */
0x9665, 0x9665, /* 陥 */
0x4E7E, 0x4E7E, /* 乾 */
0x52D8, 0x52D8, /* 勘 */
0x60A3, 0x60A3, /* 患 */
0x8CAB, 0x8CAB, /* 貫 */
0x5BD2, 0x5BD2, /* 寒 */
0x559A, 0x559A, /* 喚 */
0x582A, 0x582A, /* 堪 */
0x63DB, 0x63DB, /* 換 */
0x6562, 0x6562, /* 敢 */
0x68FA, 0x68FA, /* 棺 */
0x6B3E, 0x6B3E, /* 款 */
0x9593, 0x9593, /* 間 */
0x9591, 0x9591, /* 閑 */
0x52E7, 0x52E7, /* 勧 */
0x5BDB, 0x5BDB, /* 寛 */
0x5E79, 0x5E79, /* 幹 */
0x611F, 0x611F, /* 感 */
0x6F22, 0x6F22, /* 漢 */
0x6163, 0x6163, /* 慣 */
0x7BA1, 0x7BA1, /* 管 */
0x95A2, 0x95A2, /* 関 */
0x6B53, 0x6B53, /* 歓 */
0x76E3, 0x76E3, /* 監 */
0x7DE9, 0x7DE9, /* 緩 */
0x61BE, 0x61BE, /* 憾 */
0x9084, 0x9084, /* 還 */
0x9928, 0x9928, /* 館 */
0x74B0, 0x74B0, /* 環 */
0x7C21, 0x7C21, /* 簡 */
0x89B3, 0x89B3, /* 観 */
0x97D3, 0x97D3, /* 韓 */
0x8266, 0x8266, /* 艦 */
0x9451, 0x9451, /* 鑑 */
0x4E38, 0x4E38, /* 丸 */
0x542B, 0x542B, /* 含 */
0x5CB8, 0x5CB8, /* 岸 */
0x5CA9, 0x5CA9, /* 岩 */
0x73A9, 0x73A9, /* 玩 */
0x773C, 0x773C, /* 眼 */
0x9811, 0x9811, /* 頑 */
0x9854, 0x9854, /* 顔 */
0x9858, 0x9858, /* 願 */
0x4F01, 0x4F01, /* 企 */
0x4F0E, 0x4F0E, /* 伎 */
0x5371, 0x5371, /* 危 */
0x673A, 0x673A, /* 机 */
0x6C17, 0x6C17, /* 気 */
0x5C90, 0x5C90, /* 岐 */
0x5E0C, 0x5E0C, /* 希 */
0x5FCC, 0x5FCC, /* 忌 */
0x6C7D, 0x6C7D, /* 汽 */
0x5947, 0x5947, /* 奇 */
0x7948, 0x7948, /* 祈 */
0x5B63, 0x5B63, /* 季 */
0x7D00, 0x7D00, /* 紀 */
0x8ECC, 0x8ECC, /* 軌 */
0x65E2, 0x65E2, /* 既 */
0x8A18, 0x8A18, /* 記 */
0x8D77, 0x8D77, /* 起 */
0x98E2, 0x98E2, /* 飢 */
0x9B3C, 0x9B3C, /* 鬼 */
0x5E30, 0x5E30, /* 帰 */
0x57FA, 0x57FA, /* 基 */
0x5BC4, 0x5BC4, /* 寄 */
0x898F, 0x898F, /* 規 */
0x4E80, 0x4E80, /* 亀 */
0x559C, 0x559C, /* 喜 */
0x5E7E, 0x5E7E, /* 幾 */
0x63EE, 0x63EE, /* 揮 */
0x671F, 0x671F, /* 期 */
0x68CB, 0x68CB, /* 棋 */
0x8CB4, 0x8CB4, /* 貴 */
0x68C4, 0x68C4, /* 棄 */
0x6BC0, 0x6BC0, /* 毀 */
0x65D7, 0x65D7, /* 旗 */
0x5668, 0x5668, /* 器 */
0x757F, 0x757F, /* 畿 */
0x8F1D, 0x8F1D, /* 輝 */
0x6A5F, 0x6A5F, /* 機 */
0x9A0E, 0x9A0E, /* 騎 */
0x6280, 0x6280, /* 技 */
0x5B9C, 0x5B9C, /* 宜 */
0x507D, 0x507D, /* 偽 */
0x6B3A, 0x6B3A, /* 欺 */
0x7FA9, 0x7FA9, /* 義 */
0x7591, 0x7591, /* 疑 */
0x5100, 0x5100, /* 儀 */
0x622F, 0x622F, /* 戯 */
0x64EC, 0x64EC, /* 擬 */
0x72A0, 0x72A0, /* 犠 */
0x8B70, 0x8B70, /* 議 */
0x83CA, 0x83CA, /* 菊 */
0x5409, 0x5409, /* 吉 */
0x55AB, 0x55AB, /* 喫 */
0x8A70, 0x8A70, /* 詰 */
0x5374, 0x5374, /* 却 */
0x5BA2, 0x5BA2, /* 客 */
0x811A, 0x811A, /* 脚 */
0x9006, 0x9006, /* 逆 */
0x8650, 0x8650, /* 虐 */
0x4E5D, 0x4E5D, /* 九 */
0x4E45, 0x4E45, /* 久 */
0x53CA, 0x53CA, /* 及 */
0x5F13, 0x5F13, /* 弓 */
0x4E18, 0x4E18, /* 丘 */
0x65E7, 0x65E7, /* 旧 */
0x4F11, 0x4F11, /* 休 */
0x5438, 0x5438, /* 吸 */
0x673D, 0x673D, /* 朽 */
0x81FC, 0x81FC, /* 臼 */
0x6C42, 0x6C42, /* 求 */
0x7A76, 0x7A76, /* 究 */
0x6CE3, 0x6CE3, /* 泣 */
0x6025, 0x6025, /* 急 */
0x7D1A, 0x7D1A, /* 級 */
0x7CFE, 0x7CFE, /* 糾 */
0x5BAE, 0x5BAE, /* 宮 */
0x6551, 0x6551, /* 救 */
0x7403, 0x7403, /* 球 */
0x7D66, 0x7D66, /* 給 */
0x55C5, 0x55C5, /* 嗅 */
0x7AAE, 0x7AAE, /* 窮 */
0x725B, 0x725B, /* 牛 */
0x53BB, 0x53BB, /* 去 */
0x5DE8, 0x5DE8, /* 巨 */
0x5C45, 0x5C45, /* 居 */
0x62D2, 0x62D2, /* 拒 */
0x62E0, 0x62E0, /* 拠 */
0x6319, 0x6319, /* 挙 */
0x865A, 0x865A, /* 虚 */
0x8A31, 0x8A31, /* 許 */
0x8DDD, 0x8DDD, /* 距 */
0x9B5A, 0x9B5A, /* 魚 */
0x5FA1, 0x5FA1, /* 御 */
0x6F01, 0x6F01, /* 漁 */
0x51F6, 0x51F6, /* 凶 */
0x5171, 0x5171, /* 共 */
0x53EB, 0x53EB, /* 叫 */
0x72C2, 0x72C2, /* 狂 */
0x4EAC, 0x4EAC, /* 京 */
0x4EAB, 0x4EAB, /* 享 */
0x4F9B, 0x4F9B, /* 供 */
0x5354, 0x5354, /* 協 */
0x6CC1, 0x6CC1, /* 況 */
0x5CE1, 0x5CE1, /* 峡 */
0x631F, 0x631F, /* 挟 */
0x72ED, 0x72ED, /* 狭 */
0x6050, 0x6050, /* 恐 */
0x606D, 0x606D, /* 恭 */
0x80F8, 0x80F8, /* 胸 */
0x8105, 0x8105, /* 脅 */
0x5F37, 0x5F37, /* 強 */
0x6559, 0x6559, /* 教 */
0x90F7, 0x90F7, /* 郷 */
0x5883, 0x5883, /* 境 */
0x6A4B, 0x6A4B, /* 橋 */
0x77EF, 0x77EF, /* 矯 */
0x93E1, 0x93E1, /* 鏡 */
0x7AF6, 0x7AF6, /* 競 */
0x97FF, 0x97FF, /* 響 */
0x9A5A, 0x9A5A, /* 驚 */
0x4EF0, 0x4EF0, /* 仰 */
0x6681, 0x6681, /* 暁 */
0x696D, 0x696D, /* 業 */
0x51DD, 0x51DD, /* 凝 */
0x66F2, 0x66F2, /* 曲 */
0x5C40, 0x5C40, /* 局 */
0x6975, 0x6975, /* 極 */
0x7389, 0x7389, /* 玉 */
0x5DFE, 0x5DFE, /* 巾 */
0x65A4, 0x65A4, /* 斤 */
0x5747, 0x5747, /* 均 */
0x8FD1, 0x8FD1, /* 近 */
0x91D1, 0x91D1, /* 金 */
0x83CC, 0x83CC, /* 菌 */
0x52E4, 0x52E4, /* 勤 */
0x7434, 0x7434, /* 琴 */
0x7B4B, 0x7B4B, /* 筋 */
0x50C5, 0x50C5, /* 僅 */
0x7981, 0x7981, /* 禁 */
0x7DCA, 0x7DCA, /* 緊 */
0x9326, 0x9326, /* 錦 */
0x8B39, 0x8B39, /* 謹 */
0x895F, 0x895F, /* 襟 */
0x541F, 0x541F, /* 吟 */
0x9280, 0x9280, /* 銀 */
0x533A, 0x533A, /* 区 */
0x53E5, 0x53E5, /* 句 */
0x82E6, 0x82E6, /* 苦 */
0x99C6, 0x99C6, /* 駆 */
0x5177, 0x5177, /* 具 */
0x60E7, 0x60E7, /* 惧 */
0x611A, 0x611A, /* 愚 */
0x7A7A, 0x7A7A, /* 空 */
0x5076, 0x5076, /* 偶 */
0x9047, 0x9047, /* 遇 */
0x9685, 0x9685, /* 隅 */
0x4E32, 0x4E32, /* 串 */
0x5C48, 0x5C48, /* 屈 */
0x6398, 0x6398, /* 掘 */
0x7A9F, 0x7A9F, /* 窟 */
0x718A, 0x718A, /* 熊 */
0x7E70, 0x7E70, /* 繰 */
0x541B, 0x541B, /* 君 */
0x8A13, 0x8A13, /* 訓 */
0x52F2, 0x52F2, /* 勲 */
0x85AB, 0x85AB, /* 薫 */
0x8ECD, 0x8ECD, /* 軍 */
0x90E1, 0x90E1, /* 郡 */
0x7FA4, 0x7FA4, /* 群 */
0x5144, 0x5144, /* 兄 */
0x5211, 0x5211, /* 刑 */
0x5F62, 0x5F62, /* 形 */
0x7CFB, 0x7CFB, /* 系 */
0x5F84, 0x5F84, /* 径 */
0x830E, 0x830E, /* 茎 */
0x4FC2, 0x4FC2, /* 係 */
0x578B, 0x578B, /* 型 */
0x5951, 0x5951, /* 契 */
0x8A08, 0x8A08, /* 計 */
0x6075, 0x6075, /* 恵 */
0x5553, 0x5553, /* 啓 */
0x63B2, 0x63B2, /* 掲 */
0x6E13, 0x6E13, /* 渓 */
0x7D4C, 0x7D4C, /* 経 */
0x86CD, 0x86CD, /* 蛍 */
0x656C, 0x656C, /* 敬 */
0x666F, 0x666F, /* 景 */
0x8EFD, 0x8EFD, /* 軽 */
0x50BE, 0x50BE, /* 傾 */
0x643A, 0x643A, /* 携 */
0x7D99, 0x7D99, /* 継 */
0x8A63, 0x8A63, /* 詣 */
0x6176, 0x6176, /* 慶 */
0x61AC, 0x61AC, /* 憬 */
0x7A3D, 0x7A3D, /* 稽 */
0x61A9, 0x61A9, /* 憩 */
0x8B66, 0x8B66, /* 警 */
0x9D8F, 0x9D8F, /* 鶏 */
0x82B8, 0x82B8, /* 芸 */
0x8FCE, 0x8FCE, /* 迎 */
0x9BE8, 0x9BE8, /* 鯨 */
0x9699, 0x9699, /* 隙 */
0x5287, 0x5287, /* 劇 */
0x6483, 0x6483, /* 撃 */
0x6FC0, 0x6FC0, /* 激 */
0x6841, 0x6841, /* 桁 */
0x6B20, 0x6B20, /* 欠 */
0x7A74, 0x7A74, /* 穴 */
0x8840, 0x8840, /* 血 */
0x6C7A, 0x6C7A, /* 決 */
0x7D50, 0x7D50, /* 結 */
0x5091, 0x5091, /* 傑 */
0x6F54, 0x6F54, /* 潔 */
0x6708, 0x6708, /* 月 */
0x72AC, 0x72AC, /* 犬 */
0x4EF6, 0x4EF6, /* 件 */
0x898B, 0x898B, /* 見 */
0x5238, 0x5238, /* 券 */
0x80A9, 0x80A9, /* 肩 */
0x5EFA, 0x5EFA, /* 建 */
0x7814, 0x7814, /* 研 */
0x770C, 0x770C, /* 県 */
0x5039, 0x5039, /* 倹 */
0x517C, 0x517C, /* 兼 */
0x5263, 0x5263, /* 剣 */
0x62F3, 0x62F3, /* 拳 */
0x8ED2, 0x8ED2, /* 軒 */
0x5065, 0x5065, /* 健 */
0x967A, 0x967A, /* 険 */
0x570F, 0x570F, /* 圏 */
0x5805, 0x5805, /* 堅 */
0x691C, 0x691C, /* 検 */
0x5ACC, 0x5ACC, /* 嫌 */
0x732E, 0x732E, /* 献 */
0x7D79, 0x7D79, /* 絹 */
0x9063, 0x9063, /* 遣 */
0x6A29, 0x6A29, /* 権 */
0x61B2, 0x61B2, /* 憲 */
0x8CE2, 0x8CE2, /* 賢 */
0x8B19, 0x8B19, /* 謙 */
0x9375, 0x9375, /* 鍵 */
0x7E6D, 0x7E6D, /* 繭 */
0x9855, 0x9855, /* 顕 */
0x9A13, 0x9A13, /* 験 */
0x61F8, 0x61F8, /* 懸 */
0x5143, 0x5143, /* 元 */
0x5E7B, 0x5E7B, /* 幻 */
0x7384, 0x7384, /* 玄 */
0x8A00, 0x8A00, /* 言 */
0x5F26, 0x5F26, /* 弦 */
0x9650, 0x9650, /* 限 */
0x539F, 0x539F, /* 原 */
0x73FE, 0x73FE, /* 現 */
0x8237, 0x8237, /* 舷 */
0x6E1B, 0x6E1B, /* 減 */
0x6E90, 0x6E90, /* 源 */
0x53B3, 0x53B3, /* 厳 */
0x5DF1, 0x5DF1, /* 己 */
0x6238, 0x6238, /* 戸 */
0x53E4, 0x53E4, /* 古 */
0x547C, 0x547C, /* 呼 */
0x56FA, 0x56FA, /* 固 */
0x80A1, 0x80A1, /* 股 */
0x864E, 0x864E, /* 虎 */
0x5B64, 0x5B64, /* 孤 */
0x5F27, 0x5F27, /* 弧 */
0x6545, 0x6545, /* 故 */
0x67AF, 0x67AF, /* 枯 */
0x500B, 0x500B, /* 個 */
0x5EAB, 0x5EAB, /* 庫 */
0x6E56, 0x6E56, /* 湖 */
0x96C7, 0x96C7, /* 雇 */
0x8A87, 0x8A87, /* 誇 */
0x9F13, 0x9F13, /* 鼓 */
0x932E, 0x932E, /* 錮 */
0x9867, 0x9867, /* 顧 */
0x4E94, 0x4E94, /* 五 */
0x4E92, 0x4E92, /* 互 */
0x5348, 0x5348, /* 午 */
0x5449, 0x5449, /* 呉 */
0x5F8C, 0x5F8C, /* 後 */
0x5A2F, 0x5A2F, /* 娯 */
0x609F, 0x609F, /* 悟 */
0x7881, 0x7881, /* 碁 */
0x8A9E, 0x8A9E, /* 語 */
0x8AA4, 0x8AA4, /* 誤 */
0x8B77, 0x8B77, /* 護 */
0x53E3, 0x53E3, /* 口 */
0x5DE5, 0x5DE5, /* 工 */
0x516C, 0x516C, /* 公 */
0x52FE, 0x52FE, /* 勾 */
0x5B54, 0x5B54, /* 孔 */
0x529F, 0x529F, /* 功 */
0x5DE7, 0x5DE7, /* 巧 */
0x5E83, 0x5E83, /* 広 */
0x7532, 0x7532, /* 甲 */
0x4EA4, 0x4EA4, /* 交 */
0x5149, 0x5149, /* 光 */
0x5411, 0x5411, /* 向 */
0x540E, 0x540E, /* 后 */
0x597D, 0x597D, /* 好 */
0x6C5F, 0x6C5F, /* 江 */
0x8003, 0x8003, /* 考 */
0x884C, 0x884C, /* 行 */
0x5751, 0x5751, /* 坑 */
0x5B5D, 0x5B5D, /* 孝 */
0x6297, 0x6297, /* 抗 */
0x653B, 0x653B, /* 攻 */
0x66F4, 0x66F4, /* 更 */
0x52B9, 0x52B9, /* 効 */
0x5E78, 0x5E78, /* 幸 */
0x62D8, 0x62D8, /* 拘 */
0x80AF, 0x80AF, /* 肯 */
0x4FAF, 0x4FAF, /* 侯 */
0x539A, 0x539A, /* 厚 */
0x6052, 0x6052, /* 恒 */
0x6D2A, 0x6D2A, /* 洪 */
0x7687, 0x7687, /* 皇 */
0x7D05, 0x7D05, /* 紅 */
0x8352, 0x8352, /* 荒 */
0x90CA, 0x90CA, /* 郊 */
0x9999, 0x9999, /* 香 */
0x5019, 0x5019, /* 候 */
0x6821, 0x6821, /* 校 */
0x8015, 0x8015, /* 耕 */
0x822A, 0x822A, /* 航 */
0x8CA2, 0x8CA2, /* 貢 */
0x964D, 0x964D, /* 降 */
0x9AD8, 0x9AD8, /* 高 */
0x5EB7, 0x5EB7, /* 康 */
0x63A7, 0x63A7, /* 控 */
0x6897, 0x6897, /* 梗 */
0x9EC4, 0x9EC4, /* 黄 */
0x5589, 0x5589, /* 喉 */
0x614C, 0x614C, /* 慌 */
0x6E2F, 0x6E2F, /* 港 */
0x786C, 0x786C, /* 硬 */
0x7D5E, 0x7D5E, /* 絞 */
0x9805, 0x9805, /* 項 */
0x6E9D, 0x6E9D, /* 溝 */
0x9271, 0x9271, /* 鉱 */
0x69CB, 0x69CB, /* 構 */
0x7DB1, 0x7DB1, /* 綱 */
0x9175, 0x9175, /* 酵 */
0x7A3F, 0x7A3F, /* 稿 */
0x8208, 0x8208, /* 興 */
0x8861, 0x8861, /* 衡 */
0x92FC, 0x92FC, /* 鋼 */
0x8B1B, 0x8B1B, /* 講 */
0x8CFC, 0x8CFC, /* 購 */
0x4E5E, 0x4E5E, /* 乞 */
0x53F7, 0x53F7, /* 号 */
0x5408, 0x5408, /* 合 */
0x62F7, 0x62F7, /* 拷 */
0x525B, 0x525B, /* 剛 */
0x50B2, 0x50B2, /* 傲 */
0x8C6A, 0x8C6A, /* 豪 */
0x514B, 0x514B, /* 克 */
0x544A, 0x544A, /* 告 */
0x8C37, 0x8C37, /* 谷 */
0x523B, 0x523B, /* 刻 */
0x56FD, 0x56FD, /* 国 */
0x9ED2, 0x9ED2, /* 黒 */
0x7A40, 0x7A40, /* 穀 */
0x9177, 0x9177, /* 酷 */
0x7344, 0x7344, /* 獄 */
0x9AA8, 0x9AA8, /* 骨 */
0x99D2, 0x99D2, /* 駒 */
0x8FBC, 0x8FBC, /* 込 */
0x9803, 0x9803, /* 頃 */
0x4ECA, 0x4ECA, /* 今 */
0x56F0, 0x56F0, /* 困 */
0x6606, 0x6606, /* 昆 */
0x6068, 0x6068, /* 恨 */
0x6839, 0x6839, /* 根 */
0x5A5A, 0x5A5A, /* 婚 */
0x6DF7, 0x6DF7, /* 混 */
0x75D5, 0x75D5, /* 痕 */
0x7D3A, 0x7D3A, /* 紺 */
0x9B42, 0x9B42, /* 魂 */
0x58BE, 0x58BE, /* 墾 */
0x61C7, 0x61C7, /* 懇 */
0x5DE6, 0x5DE6, /* 左 */
0x4F50, 0x4F50, /* 佐 */
0x6C99, 0x6C99, /* 沙 */
0x67FB, 0x67FB, /* 査 */
0x7802, 0x7802, /* 砂 */
0x5506, 0x5506, /* 唆 */
0x5DEE, 0x5DEE, /* 差 */
0x8A50, 0x8A50, /* 詐 */
0x9396, 0x9396, /* 鎖 */
0x5EA7, 0x5EA7, /* 座 */
0x632B, 0x632B, /* 挫 */
0x624D, 0x624D, /* 才 */
0x518D, 0x518D, /* 再 */
0x707D, 0x707D, /* 災 */
0x59BB, 0x59BB, /* 妻 */
0x91C7, 0x91C7, /* 采 */
0x7815, 0x7815, /* 砕 */
0x5BB0, 0x5BB0, /* 宰 */
0x683D, 0x683D, /* 栽 */
0x5F69, 0x5F69, /* 彩 */
0x63A1, 0x63A1, /* 採 */
0x6E08, 0x6E08, /* 済 */
0x796D, 0x796D, /* 祭 */
0x658E, 0x658E, /* 斎 */
0x7D30, 0x7D30, /* 細 */
0x83DC, 0x83DC, /* 菜 */
0x6700, 0x6700, /* 最 */
0x88C1, 0x88C1, /* 裁 */
0x50B5, 0x50B5, /* 債 */
0x50AC, 0x50AC, /* 催 */
0x585E, 0x585E, /* 塞 */
0x6B73, 0x6B73, /* 歳 */
0x8F09, 0x8F09, /* 載 */
0x969B, 0x969B, /* 際 */
0x57FC, 0x57FC, /* 埼 */
0x5728, 0x5728, /* 在 */
0x6750, 0x6750, /* 材 */
0x5264, 0x5264, /* 剤 */
0x8CA1, 0x8CA1, /* 財 */
0x7F6A, 0x7F6A, /* 罪 */
0x5D0E, 0x5D0E, /* 崎 */
0x4F5C, 0x4F5C, /* 作 */
0x524A, 0x524A, /* 削 */
0x6628, 0x6628, /* 昨 */
0x67F5, 0x67F5, /* 柵 */
0x7D22, 0x7D22, /* 索 */
0x7B56, 0x7B56, /* 策 */
0x9162, 0x9162, /* 酢 */
0x643E, 0x643E, /* 搾 */
0x932F, 0x932F, /* 錯 */
0x54B2, 0x54B2, /* 咲 */
0x518A, 0x518A, /* 冊 */
0x672D, 0x672D, /* 札 */
0x5237, 0x5237, /* 刷 */
0x5239, 0x5239, /* 刹 */
0x62F6, 0x62F6, /* 拶 */
0x6BBA, 0x6BBA, /* 殺 */
0x5BDF, 0x5BDF, /* 察 */
0x64AE, 0x64AE, /* 撮 */
0x64E6, 0x64E6, /* 擦 */
0x96D1, 0x96D1, /* 雑 */
0x76BF, 0x76BF, /* 皿 */
0x4E09, 0x4E09, /* 三 */
0x5C71, 0x5C71, /* 山 */
0x53C2, 0x53C2, /* 参 */
0x685F, 0x685F, /* 桟 */
0x8695, 0x8695, /* 蚕 */
0x60E8, 0x60E8, /* 惨 */
0x7523, 0x7523, /* 産 */
0x5098, 0x5098, /* 傘 */
0x6563, 0x6563, /* 散 */
0x7B97, 0x7B97, /* 算 */
0x9178, 0x9178, /* 酸 */
0x8CDB, 0x8CDB, /* 賛 */
0x6B8B, 0x6B8B, /* 残 */
0x65AC, 0x65AC, /* 斬 */
0x66AB, 0x66AB, /* 暫 */
0x58EB, 0x58EB, /* 士 */
0x5B50, 0x5B50, /* 子 */
0x652F, 0x652F, /* 支 */
0x6B62, 0x6B62, /* 止 */
0x6C0F, 0x6C0F, /* 氏 */
0x4ED5, 0x4ED5, /* 仕 */
0x53F2, 0x53F2, /* 史 */
0x53F8, 0x53F8, /* 司 */
0x56DB, 0x56DB, /* 四 */
0x5E02, 0x5E02, /* 市 */
0x77E2, 0x77E2, /* 矢 */
0x65E8, 0x65E8, /* 旨 */
0x6B7B, 0x6B7B, /* 死 */
0x7CF8, 0x7CF8, /* 糸 */
0x81F3, 0x81F3, /* 至 */
0x4F3A, 0x4F3A, /* 伺 */
0x5FD7, 0x5FD7, /* 志 */
0x79C1, 0x79C1, /* 私 */
0x4F7F, 0x4F7F, /* 使 */
0x523A, 0x523A, /* 刺 */
0x59CB, 0x59CB, /* 始 */
0x59C9, 0x59C9, /* 姉 */
0x679D, 0x679D, /* 枝 */
0x7949, 0x7949, /* 祉 */
0x80A2, 0x80A2, /* 肢 */
0x59FF, 0x59FF, /* 姿 */
0x601D, 0x601D, /* 思 */
0x6307, 0x6307, /* 指 */
0x65BD, 0x65BD, /* 施 */
0x5E2B, 0x5E2B, /* 師 */
0x6063, 0x6063, /* 恣 */
0x7D19, 0x7D19, /* 紙 */
0x8102, 0x8102, /* 脂 */
0x8996, 0x8996, /* 視 */
0x7D2B, 0x7D2B, /* 紫 */
0x8A5E, 0x8A5E, /* 詞 */
0x6B6F, 0x6B6F, /* 歯 */
0x55E3, 0x55E3, /* 嗣 */
0x8A66, 0x8A66, /* 試 */
0x8A69, 0x8A69, /* 詩 */
0x8CC7, 0x8CC7, /* 資 */
0x98FC, 0x98FC, /* 飼 */
0x8A8C, 0x8A8C, /* 誌 */
0x96CC, 0x96CC, /* 雌 */
0x646F, 0x646F, /* 摯 */
0x8CDC, 0x8CDC, /* 賜 */
0x8AEE, 0x8AEE, /* 諮 */
0x793A, 0x793A, /* 示 */
0x5B57, 0x5B57, /* 字 */
0x5BFA, 0x5BFA, /* 寺 */
0x6B21, 0x6B21, /* 次 */
0x8033, 0x8033, /* 耳 */
0x81EA, 0x81EA, /* 自 */
0x4F3C, 0x4F3C, /* 似 */
0x5150, 0x5150, /* 児 */
0x4E8B, 0x4E8B, /* 事 */
0x4F8D, 0x4F8D, /* 侍 */
0x6CBB, 0x6CBB, /* 治 */
0x6301, 0x6301, /* 持 */
0x6642, 0x6642, /* 時 */
0x6ECB, 0x6ECB, /* 滋 */
0x6148, 0x6148, /* 慈 */
0x8F9E, 0x8F9E, /* 辞 */
0x78C1, 0x78C1, /* 磁 */
0x990C, 0x990C, /* 餌 */
0x74BD, 0x74BD, /* 璽 */
0x9E7F, 0x9E7F, /* 鹿 */
0x5F0F, 0x5F0F, /* 式 */
0x8B58, 0x8B58, /* 識 */
0x8EF8, 0x8EF8, /* 軸 */
0x4E03, 0x4E03, /* 七 */
0x5931, 0x5931, /* 失 */
0x5BA4, 0x5BA4, /* 室 */
0x75BE, 0x75BE, /* 疾 */
0x57F7, 0x57F7, /* 執 */
0x6E7F, 0x6E7F, /* 湿 */
0x5AC9, 0x5AC9, /* 嫉 */
0x6F06, 0x6F06, /* 漆 */
0x8CEA, 0x8CEA, /* 質 */
0x5B9F, 0x5B9F, /* 実 */
0x829D, 0x829D, /* 芝 */
0x5199, 0x5199, /* 写 */
0x793E, 0x793E, /* 社 */
0x8ECA, 0x8ECA, /* 車 */
0x820E, 0x820E, /* 舎 */
0x8005, 0x8005, /* 者 */
0x5C04, 0x5C04, /* 射 */
0x6368, 0x6368, /* 捨 */
0x8D66, 0x8D66, /* 赦 */
0x659C, 0x659C, /* 斜 */
0x716E, 0x716E, /* 煮 */
0x906E, 0x906E, /* 遮 */
0x8B1D, 0x8B1D, /* 謝 */
0x90AA, 0x90AA, /* 邪 */
0x86C7, 0x86C7, /* 蛇 */
0x5C3A, 0x5C3A, /* 尺 */
0x501F, 0x501F, /* 借 */
0x914C, 0x914C, /* 酌 */
0x91C8, 0x91C8, /* 釈 */
0x7235, 0x7235, /* 爵 */
0x82E5, 0x82E5, /* 若 */
0x5F31, 0x5F31, /* 弱 */
0x5BC2, 0x5BC2, /* 寂 */
0x624B, 0x624B, /* 手 */
0x4E3B, 0x4E3B, /* 主 */
0x5B88, 0x5B88, /* 守 */
0x6731, 0x6731, /* 朱 */
0x53D6, 0x53D6, /* 取 */
0x72E9, 0x72E9, /* 狩 */
0x9996, 0x9996, /* 首 */
0x6B8A, 0x6B8A, /* 殊 */
0x73E0, 0x73E0, /* 珠 */
0x9152, 0x9152, /* 酒 */
0x816B, 0x816B, /* 腫 */
0x7A2E, 0x7A2E, /* 種 */
0x8DA3, 0x8DA3, /* 趣 */
0x5BFF, 0x5BFF, /* 寿 */
0x53D7, 0x53D7, /* 受 */
0x546A, 0x546A, /* 呪 */
0x6388, 0x6388, /* 授 */
0x9700, 0x9700, /* 需 */
0x5112, 0x5112, /* 儒 */
0x6A39, 0x6A39, /* 樹 */
0x53CE, 0x53CE, /* 収 */
0x56DA, 0x56DA, /* 囚 */
0x5DDE, 0x5DDE, /* 州 */
0x821F, 0x821F, /* 舟 */
0x79C0, 0x79C0, /* 秀 */
0x5468, 0x5468, /* 周 */
0x5B97, 0x5B97, /* 宗 */
0x62FE, 0x62FE, /* 拾 */
0x79CB, 0x79CB, /* 秋 */
0x81ED, 0x81ED, /* 臭 */
0x4FEE, 0x4FEE, /* 修 */
0x8896, 0x8896, /* 袖 */
0x7D42, 0x7D42, /* 終 */
0x7F9E, 0x7F9E, /* 羞 */
0x7FD2, 0x7FD2, /* 習 */
0x9031, 0x9031, /* 週 */
0x5C31, 0x5C31, /* 就 */
0x8846, 0x8846, /* 衆 */
0x96C6, 0x96C6, /* 集 */
0x6101, 0x6101, /* 愁 */
0x916C, 0x916C, /* 酬 */
0x919C, 0x919C, /* 醜 */
0x8E74, 0x8E74, /* 蹴 */
0x8972, 0x8972, /* 襲 */
0x5341, 0x5341, /* 十 */
0x6C41, 0x6C41, /* 汁 */
0x5145, 0x5145, /* 充 */
0x4F4F, 0x4F4F, /* 住 */
0x67D4, 0x67D4, /* 柔 */
0x91CD, 0x91CD, /* 重 */
0x5F93, 0x5F93, /* 従 */
0x6E0B, 0x6E0B, /* 渋 */
0x9283, 0x9283, /* 銃 */
0x7363, 0x7363, /* 獣 */
0x7E26, 0x7E26, /* 縦 */
0x53D4, 0x53D4, /* 叔 */
0x795D, 0x795D, /* 祝 */
0x5BBF, 0x5BBF, /* 宿 */
0x6DD1, 0x6DD1, /* 淑 */
0x7C9B, 0x7C9B, /* 粛 */
0x7E2E, 0x7E2E, /* 縮 */
0x587E, 0x587E, /* 塾 */
0x719F, 0x719F, /* 熟 */
0x51FA, 0x51FA, /* 出 */
0x8FF0, 0x8FF0, /* 述 */
0x8853, 0x8853, /* 術 */
0x4FCA, 0x4FCA, /* 俊 */
0x6625, 0x6625, /* 春 */
0x77AC, 0x77AC, /* 瞬 */
0x65EC, 0x65EC, /* 旬 */
0x5DE1, 0x5DE1, /* 巡 */
0x76FE, 0x76FE, /* 盾 */
0x51C6, 0x51C6, /* 准 */
0x6B89, 0x6B89, /* 殉 */
0x7D14, 0x7D14, /* 純 */
0x5FAA, 0x5FAA, /* 循 */
0x9806, 0x9806, /* 順 */
0x6E96, 0x6E96, /* 準 */
0x6F64, 0x6F64, /* 潤 */
0x9075, 0x9075, /* 遵 */
0x51E6, 0x51E6, /* 処 */
0x521D, 0x521D, /* 初 */
0x6240, 0x6240, /* 所 */
0x66F8, 0x66F8, /* 書 */
0x5EB6, 0x5EB6, /* 庶 */
0x6691, 0x6691, /* 暑 */
0x7F72, 0x7F72, /* 署 */
0x7DD2, 0x7DD2, /* 緒 */
0x8AF8, 0x8AF8, /* 諸 */
0x5973, 0x5973, /* 女 */
0x5982, 0x5982, /* 如 */
0x52A9, 0x52A9, /* 助 */
0x5E8F, 0x5E8F, /* 序 */
0x53D9, 0x53D9, /* 叙 */
0x5F90, 0x5F90, /* 徐 */
0x9664, 0x9664, /* 除 */
0x5C0F, 0x5C0F, /* 小 */
0x5347, 0x5347, /* 升 */
0x5C11, 0x5C11, /* 少 */
0x53EC, 0x53EC, /* 召 */
0x5320, 0x5320, /* 匠 */
0x5E8A, 0x5E8A, /* 床 */
0x6284, 0x6284, /* 抄 */
0x8096, 0x8096, /* 肖 */
0x5C1A, 0x5C1A, /* 尚 */
0x62DB, 0x62DB, /* 招 */
0x627F, 0x627F, /* 承 */
0x6607, 0x6607, /* 昇 */
0x677E, 0x677E, /* 松 */
0x6CBC, 0x6CBC, /* 沼 */
0x662D, 0x662D, /* 昭 */
0x5BB5, 0x5BB5, /* 宵 */
0x5C06, 0x5C06, /* 将 */
0x6D88, 0x6D88, /* 消 */
0x75C7, 0x75C7, /* 症 */
0x7965, 0x7965, /* 祥 */
0x79F0, 0x79F0, /* 称 */
0x7B11, 0x7B11, /* 笑 */
0x5531, 0x5531, /* 唱 */
0x5546, 0x5546, /* 商 */
0x6E09, 0x6E09, /* 渉 */
0x7AE0, 0x7AE0, /* 章 */
0x7D39, 0x7D39, /* 紹 */
0x8A1F, 0x8A1F, /* 訟 */
0x52DD, 0x52DD, /* 勝 */
0x638C, 0x638C, /* 掌 */
0x6676, 0x6676, /* 晶 */
0x713C, 0x713C, /* 焼 */
0x7126, 0x7126, /* 焦 */
0x785D, 0x785D, /* 硝 */
0x7CA7, 0x7CA7, /* 粧 */
0x8A54, 0x8A54, /* 詔 */
0x8A3C, 0x8A3C, /* 証 */
0x8C61, 0x8C61, /* 象 */
0x50B7, 0x50B7, /* 傷 */
0x5968, 0x5968, /* 奨 */
0x7167, 0x7167, /* 照 */
0x8A73, 0x8A73, /* 詳 */
0x5F70, 0x5F70, /* 彰 */
0x969C, 0x969C, /* 障 */
0x61A7, 0x61A7, /* 憧 */
0x885D, 0x885D, /* 衝 */
0x8CDE, 0x8CDE, /* 賞 */
0x511F, 0x511F, /* 償 */
0x7901, 0x7901, /* 礁 */
0x9418, 0x9418, /* 鐘 */
0x4E0A, 0x4E0A, /* 上 */
0x4E08, 0x4E08, /* 丈 */
0x5197, 0x5197, /* 冗 */
0x6761, 0x6761, /* 条 */
0x72B6, 0x72B6, /* 状 */
0x4E57, 0x4E57, /* 乗 */
0x57CE, 0x57CE, /* 城 */
0x6D44, 0x6D44, /* 浄 */
0x5270, 0x5270, /* 剰 */
0x5E38, 0x5E38, /* 常 */
0x60C5, 0x60C5, /* 情 */
0x5834, 0x5834, /* 場 */
0x7573, 0x7573, /* 畳 */
0x84B8, 0x84B8, /* 蒸 */
0x7E04, 0x7E04, /* 縄 */
0x58CC, 0x58CC, /* 壌 */
0x5B22, 0x5B22, /* 嬢 */
0x9320, 0x9320, /* 錠 */
0x8B72, 0x8B72, /* 譲 */
0x91B8, 0x91B8, /* 醸 */
0x8272, 0x8272, /* 色 */
0x62ED, 0x62ED, /* 拭 */
0x98DF, 0x98DF, /* 食 */
0x690D, 0x690D, /* 植 */
0x6B96, 0x6B96, /* 殖 */
0x98FE, 0x98FE, /* 飾 */
0x89E6, 0x89E6, /* 触 */
0x5631, 0x5631, /* 嘱 */
0x7E54, 0x7E54, /* 織 */
0x8077, 0x8077, /* 職 */
0x8FB1, 0x8FB1, /* 辱 */
0x5C3B, 0x5C3B, /* 尻 */
0x5FC3, 0x5FC3, /* 心 */
0x7533, 0x7533, /* 申 */
0x4F38, 0x4F38, /* 伸 */
0x81E3, 0x81E3, /* 臣 */
0x82AF, 0x82AF, /* 芯 */
0x8EAB, 0x8EAB, /* 身 */
0x8F9B, 0x8F9B, /* 辛 */
0x4FB5, 0x4FB5, /* 侵 */
0x4FE1, 0x4FE1, /* 信 */
0x6D25, 0x6D25, /* 津 */
0x795E, 0x795E, /* 神 */
0x5507, 0x5507, /* 唇 */
0x5A20, 0x5A20, /* 娠 */
0x632F, 0x632F, /* 振 */
0x6D78, 0x6D78, /* 浸 */
0x771F, 0x771F, /* 真 */
0x91DD, 0x91DD, /* 針 */
0x6DF1, 0x6DF1, /* 深 */
0x7D33, 0x7D33, /* 紳 */
0x9032, 0x9032, /* 進 */
0x68EE, 0x68EE, /* 森 */
0x8A3A, 0x8A3A, /* 診 */
0x5BDD, 0x5BDD, /* 寝 */
0x614E, 0x614E, /* 慎 */
0x65B0, 0x65B0, /* 新 */
0x5BE9, 0x5BE9, /* 審 */
0x9707, 0x9707, /* 震 */
0x85AA, 0x85AA, /* 薪 */
0x89AA, 0x89AA, /* 親 */
0x4EBA, 0x4EBA, /* 人 */
0x5203, 0x5203, /* 刃 */
0x4EC1, 0x4EC1, /* 仁 */
0x5C3D, 0x5C3D, /* 尽 */
0x8FC5, 0x8FC5, /* 迅 */
0x751A, 0x751A, /* 甚 */
0x9663, 0x9663, /* 陣 */
0x5C0B, 0x5C0B, /* 尋 */
0x814E, 0x814E, /* 腎 */
0x9808, 0x9808, /* 須 */
0x56F3, 0x56F3, /* 図 */
0x6C34, 0x6C34, /* 水 */
0x5439, 0x5439, /* 吹 */
0x5782, 0x5782, /* 垂 */
0x708A, 0x708A, /* 炊 */
0x5E25, 0x5E25, /* 帥 */
0x7C8B, 0x7C8B, /* 粋 */
0x8870, 0x8870, /* 衰 */
0x63A8, 0x63A8, /* 推 */
0x9154, 0x9154, /* 酔 */
0x9042, 0x9042, /* 遂 */
0x7761, 0x7761, /* 睡 */
0x7A42, 0x7A42, /* 穂 */
0x968F, 0x968F, /* 随 */
0x9AC4, 0x9AC4, /* 髄 */
0x67A2, 0x67A2, /* 枢 */
0x5D07, 0x5D07, /* 崇 */
0x6570, 0x6570, /* 数 */
0x636E, 0x636E, /* 据 */
0x6749, 0x6749, /* 杉 */
0x88FE, 0x88FE, /* 裾 */
0x5BF8, 0x5BF8, /* 寸 */
0x702C, 0x702C, /* 瀬 */
0x662F, 0x662F, /* 是 */
0x4E95, 0x4E95, /* 井 */
0x4E16, 0x4E16, /* 世 */
0x6B63, 0x6B63, /* 正 */
0x751F, 0x751F, /* 生 */
0x6210, 0x6210, /* 成 */
0x897F, 0x897F, /* 西 */
0x58F0, 0x58F0, /* 声 */
0x5236, 0x5236, /* 制 */
0x59D3, 0x59D3, /* 姓 */
0x5F81, 0x5F81, /* 征 */
0x6027, 0x6027, /* 性 */
0x9752, 0x9752, /* 青 */
0x6589, 0x6589, /* 斉 */
0x653F, 0x653F, /* 政 */
0x661F, 0x661F, /* 星 */
0x7272, 0x7272, /* 牲 */
0x7701, 0x7701, /* 省 */
0x51C4, 0x51C4, /* 凄 */
0x901D, 0x901D, /* 逝 */
0x6E05, 0x6E05, /* 清 */
0x76DB, 0x76DB, /* 盛 */
0x5A7F, 0x5A7F, /* 婿 */
0x6674, 0x6674, /* 晴 */
0x52E2, 0x52E2, /* 勢 */
0x8056, 0x8056, /* 聖 */
0x8AA0, 0x8AA0, /* 誠 */
0x7CBE, 0x7CBE, /* 精 */
0x88FD, 0x88FD, /* 製 */
0x8A93, 0x8A93, /* 誓 */
0x9759, 0x9759, /* 静 */
0x8ACB, 0x8ACB, /* 請 */
0x6574, 0x6574, /* 整 */
0x9192, 0x9192, /* 醒 */
0x7A0E, 0x7A0E, /* 税 */
0x5915, 0x5915, /* 夕 */
0x65A5, 0x65A5, /* 斥 */
0x77F3, 0x77F3, /* 石 */
0x8D64, 0x8D64, /* 赤 */
0x6614, 0x6614, /* 昔 */
0x6790, 0x6790, /* 析 */
0x5E2D, 0x5E2D, /* 席 */
0x810A, 0x810A, /* 脊 */
0x96BB, 0x96BB, /* 隻 */
0x60DC, 0x60DC, /* 惜 */
0x621A, 0x621A, /* 戚 */
0x8CAC, 0x8CAC, /* 責 */
0x8DE1, 0x8DE1, /* 跡 */
0x7A4D, 0x7A4D, /* 積 */
0x7E3E, 0x7E3E, /* 績 */
0x7C4D, 0x7C4D, /* 籍 */
0x5207, 0x5207, /* 切 */
0x6298, 0x6298, /* 折 */
0x62D9, 0x62D9, /* 拙 */
0x7A83, 0x7A83, /* 窃 */
0x63A5, 0x63A5, /* 接 */
0x8A2D, 0x8A2D, /* 設 */
0x96EA, 0x96EA, /* 雪 */
0x6442, 0x6442, /* 摂 */
0x7BC0, 0x7BC0, /* 節 */
0x8AAC, 0x8AAC, /* 説 */
0x820C, 0x820C, /* 舌 */
0x7D76, 0x7D76, /* 絶 */
0x5343, 0x5343, /* 千 */
0x5DDD, 0x5DDD, /* 川 */
0x4ED9, 0x4ED9, /* 仙 */
0x5360, 0x5360, /* 占 */
0x5148, 0x5148, /* 先 */
0x5BA3, 0x5BA3, /* 宣 */
0x5C02, 0x5C02, /* 専 */
0x6CC9, 0x6CC9, /* 泉 */
0x6D45, 0x6D45, /* 浅 */
0x6D17, 0x6D17, /* 洗 */
0x67D3, 0x67D3, /* 染 */
0x6247, 0x6247, /* 扇 */
0x6813, 0x6813, /* 栓 */
0x65CB, 0x65CB, /* 旋 */
0x8239, 0x8239, /* 船 */
0x6226, 0x6226, /* 戦 */
0x714E, 0x714E, /* 煎 */
0x7FA8, 0x7FA8, /* 羨 */
0x817A, 0x817A, /* 腺 */
0x8A6E, 0x8A6E, /* 詮 */
0x8DF5, 0x8DF5, /* 践 */
0x7B8B, 0x7B8B, /* 箋 */
0x92AD, 0x92AD, /* 銭 */
0x6F5C, 0x6F5C, /* 潜 */
0x7DDA, 0x7DDA, /* 線 */
0x9077, 0x9077, /* 遷 */
0x9078, 0x9078, /* 選 */
0x85A6, 0x85A6, /* 薦 */
0x7E4A, 0x7E4A, /* 繊 */
0x9BAE, 0x9BAE, /* 鮮 */
0x5168, 0x5168, /* 全 */
0x524D, 0x524D, /* 前 */
0x5584, 0x5584, /* 善 */
0x7136, 0x7136, /* 然 */
0x7985, 0x7985, /* 禅 */
0x6F38, 0x6F38, /* 漸 */
0x81B3, 0x81B3, /* 膳 */
0x7E55, 0x7E55, /* 繕 */
0x72D9, 0x72D9, /* 狙 */
0x963B, 0x963B, /* 阻 */
0x7956, 0x7956, /* 祖 */
0x79DF, 0x79DF, /* 租 */
0x7D20, 0x7D20, /* 素 */
0x63AA, 0x63AA, /* 措 */
0x7C97, 0x7C97, /* 粗 */
0x7D44, 0x7D44, /* 組 */
0x758E, 0x758E, /* 疎 */
0x8A34, 0x8A34, /* 訴 */
0x5851, 0x5851, /* 塑 */
0x9061, 0x9061, /* 遡 */
0x790E, 0x790E, /* 礎 */
0x53CC, 0x53CC, /* 双 */
0x58EE, 0x58EE, /* 壮 */
0x65E9, 0x65E9, /* 早 */
0x4E89, 0x4E89, /* 争 */
0x8D70, 0x8D70, /* 走 */
0x594F, 0x594F, /* 奏 */
0x76F8, 0x76F8, /* 相 */
0x8358, 0x8358, /* 荘 */
0x8349, 0x8349, /* 草 */
0x9001, 0x9001, /* 送 */
0x5009, 0x5009, /* 倉 */
0x635C, 0x635C, /* 捜 */
0x633F, 0x633F, /* 挿 */
0x6851, 0x6851, /* 桑 */
0x5DE3, 0x5DE3, /* 巣 */
0x6383, 0x6383, /* 掃 */
0x66F9, 0x66F9, /* 曹 */
0x66FD, 0x66FD, /* 曽 */
0x723D, 0x723D, /* 爽 */
0x7A93, 0x7A93, /* 窓 */
0x5275, 0x5275, /* 創 */
0x55AA, 0x55AA, /* 喪 */
0x75E9, 0x75E9, /* 痩 */
0x846C, 0x846C, /* 葬 */
0x88C5, 0x88C5, /* 装 */
0x50E7, 0x50E7, /* 僧 */
0x60F3, 0x60F3, /* 想 */
0x5C64, 0x5C64, /* 層 */
0x7DCF, 0x7DCF, /* 総 */
0x906D, 0x906D, /* 遭 */
0x69FD, 0x69FD, /* 槽 */
0x8E2A, 0x8E2A, /* 踪 */
0x64CD, 0x64CD, /* 操 */
0x71E5, 0x71E5, /* 燥 */
0x971C, 0x971C, /* 霜 */
0x9A12, 0x9A12, /* 騒 */
0x85FB, 0x85FB, /* 藻 */
0x9020, 0x9020, /* 造 */
0x50CF, 0x50CF, /* 像 */
0x5897, 0x5897, /* 増 */
0x618E, 0x618E, /* 憎 */
0x8535, 0x8535, /* 蔵 */
0x8D08, 0x8D08, /* 贈 */
0x81D3, 0x81D3, /* 臓 */
0x5373, 0x5373, /* 即 */
0x675F, 0x675F, /* 束 */
0x8DB3, 0x8DB3, /* 足 */
0x4FC3, 0x4FC3, /* 促 */
0x5247, 0x5247, /* 則 */
0x606F, 0x606F, /* 息 */
0x6349, 0x6349, /* 捉 */
0x901F, 0x901F, /* 速 */
0x5074, 0x5074, /* 側 */
0x6E2C, 0x6E2C, /* 測 */
0x4FD7, 0x4FD7, /* 俗 */
0x65CF, 0x65CF, /* 族 */
0x5C5E, 0x5C5E, /* 属 */
0x8CCA, 0x8CCA, /* 賊 */
0x7D9A, 0x7D9A, /* 続 */
0x5352, 0x5352, /* 卒 */
0x7387, 0x7387, /* 率 */
0x5B58, 0x5B58, /* 存 */
0x6751, 0x6751, /* 村 */
0x5B6B, 0x5B6B, /* 孫 */
0x5C0A, 0x5C0A, /* 尊 */
0x640D, 0x640D, /* 損 */
0x905C, 0x905C, /* 遜 */
0x4ED6, 0x4ED6, /* 他 */
0x591A, 0x591A, /* 多 */
0x6C70, 0x6C70, /* 汰 */
0x6253, 0x6253, /* 打 */
0x59A5, 0x59A5, /* 妥 */
0x553E, 0x553E, /* 唾 */
0x5815, 0x5815, /* 堕 */
0x60F0, 0x60F0, /* 惰 */
0x99C4, 0x99C4, /* 駄 */
0x592A, 0x592A, /* 太 */
0x5BFE, 0x5BFE, /* 対 */
0x4F53, 0x4F53, /* 体 */
0x8010, 0x8010, /* 耐 */
0x5F85, 0x5F85, /* 待 */
0x6020, 0x6020, /* 怠 */
0x80CE, 0x80CE, /* 胎 */
0x9000, 0x9000, /* 退 */
0x5E2F, 0x5E2F, /* 帯 */
0x6CF0, 0x6CF0, /* 泰 */
0x5806, 0x5806, /* 堆 */
0x888B, 0x888B, /* 袋 */
0x902E, 0x902E, /* 逮 */
0x66FF, 0x66FF, /* 替 */
0x8CB8, 0x8CB8, /* 貸 */
0x968A, 0x968A, /* 隊 */
0x6EDE, 0x6EDE, /* 滞 */
0x614B, 0x614B, /* 態 */
0x6234, 0x6234, /* 戴 */
0x5927, 0x5927, /* 大 */
0x4EE3, 0x4EE3, /* 代 */
0x53F0, 0x53F0, /* 台 */
0x7B2C, 0x7B2C, /* 第 */
0x984C, 0x984C, /* 題 */
0x6EDD, 0x6EDD, /* 滝 */
0x5B85, 0x5B85, /* 宅 */
0x629E, 0x629E, /* 択 */
0x6CA2, 0x6CA2, /* 沢 */
0x5353, 0x5353, /* 卓 */
0x62D3, 0x62D3, /* 拓 */
0x8A17, 0x8A17, /* 託 */
0x6FEF, 0x6FEF, /* 濯 */
0x8AFE, 0x8AFE, /* 諾 */
0x6FC1, 0x6FC1, /* 濁 */
0x4F46, 0x4F46, /* 但 */
0x9054, 0x9054, /* 達 */
0x8131, 0x8131, /* 脱 */
0x596A, 0x596A, /* 奪 */
0x68DA, 0x68DA, /* 棚 */
0x8AB0, 0x8AB0, /* 誰 */
0x4E39, 0x4E39, /* 丹 */
0x65E6, 0x65E6, /* 旦 */
0x62C5, 0x62C5, /* 担 */
0x5358, 0x5358, /* 単 */
0x70AD, 0x70AD, /* 炭 */
0x80C6, 0x80C6, /* 胆 */
0x63A2, 0x63A2, /* 探 */
0x6DE1, 0x6DE1, /* 淡 */
0x77ED, 0x77ED, /* 短 */
0x5606, 0x5606, /* 嘆 */
0x7AEF, 0x7AEF, /* 端 */
0x7DBB, 0x7DBB, /* 綻 */
0x8A95, 0x8A95, /* 誕 */
0x935B, 0x935B, /* 鍛 */
0x56E3, 0x56E3, /* 団 */
0x7537, 0x7537, /* 男 */
0x6BB5, 0x6BB5, /* 段 */
0x65AD, 0x65AD, /* 断 */
0x5F3E, 0x5F3E, /* 弾 */
0x6696, 0x6696, /* 暖 */
0x8AC7, 0x8AC7, /* 談 */
0x58C7, 0x58C7, /* 壇 */
0x5730, 0x5730, /* 地 */
0x6C60, 0x6C60, /* 池 */
0x77E5, 0x77E5, /* 知 */
0x5024, 0x5024, /* 値 */
0x6065, 0x6065, /* 恥 */
0x81F4, 0x81F4, /* 致 */
0x9045, 0x9045, /* 遅 */
0x75F4, 0x75F4, /* 痴 */
0x7A1A, 0x7A1A, /* 稚 */
0x7F6E, 0x7F6E, /* 置 */
0x7DFB, 0x7DFB, /* 緻 */
0x7AF9, 0x7AF9, /* 竹 */
0x755C, 0x755C, /* 畜 */
0x9010, 0x9010, /* 逐 */
0x84C4, 0x84C4, /* 蓄 */
0x7BC9, 0x7BC9, /* 築 */
0x79E9, 0x79E9, /* 秩 */
0x7A92, 0x7A92, /* 窒 */
0x8336, 0x8336, /* 茶 */
0x7740, 0x7740, /* 着 */
0x5AE1, 0x5AE1, /* 嫡 */
0x4E2D, 0x4E2D, /* 中 */
0x4EF2, 0x4EF2, /* 仲 */
0x866B, 0x866B, /* 虫 */
0x6C96, 0x6C96, /* 沖 */
0x5B99, 0x5B99, /* 宙 */
0x5FE0, 0x5FE0, /* 忠 */
0x62BD, 0x62BD, /* 抽 */
0x6CE8, 0x6CE8, /* 注 */
0x663C, 0x663C, /* 昼 */
0x67F1, 0x67F1, /* 柱 */
0x8877, 0x8877, /* 衷 */
0x914E, 0x914E, /* 酎 */
0x92F3, 0x92F3, /* 鋳 */
0x99D0, 0x99D0, /* 駐 */
0x8457, 0x8457, /* 著 */
0x8CAF, 0x8CAF, /* 貯 */
0x4E01, 0x4E01, /* 丁 */
0x5F14, 0x5F14, /* 弔 */
0x5E81, 0x5E81, /* 庁 */
0x5146, 0x5146, /* 兆 */
0x753A, 0x753A, /* 町 */
0x9577, 0x9577, /* 長 */
0x6311, 0x6311, /* 挑 */
0x5E33, 0x5E33, /* 帳 */
0x5F35, 0x5F35, /* 張 */
0x5F6B, 0x5F6B, /* 彫 */
0x773A, 0x773A, /* 眺 */
0x91E3, 0x91E3, /* 釣 */
0x9802, 0x9802, /* 頂 */
0x9CE5, 0x9CE5, /* 鳥 */
0x671D, 0x671D, /* 朝 */
0x8CBC, 0x8CBC, /* 貼 */
0x8D85, 0x8D85, /* 超 */
0x8178, 0x8178, /* 腸 */
0x8DF3, 0x8DF3, /* 跳 */
0x5FB4, 0x5FB4, /* 徴 */
0x5632, 0x5632, /* 嘲 */
0x6F6E, 0x6F6E, /* 潮 */
0x6F84, 0x6F84, /* 澄 */
0x8ABF, 0x8ABF, /* 調 */
0x8074, 0x8074, /* 聴 */
0x61F2, 0x61F2, /* 懲 */
0x76F4, 0x76F4, /* 直 */
0x52C5, 0x52C5, /* 勅 */
0x6357, 0x6357, /* 捗 */
0x6C88, 0x6C88, /* 沈 */
0x73CD, 0x73CD, /* 珍 */
0x6715, 0x6715, /* 朕 */
0x9673, 0x9673, /* 陳 */
0x8CC3, 0x8CC3, /* 賃 */
0x93AE, 0x93AE, /* 鎮 */
0x8FFD, 0x8FFD, /* 追 */
0x690E, 0x690E, /* 椎 */
0x589C, 0x589C, /* 墜 */
0x901A, 0x901A, /* 通 */
0x75DB, 0x75DB, /* 痛 */
0x585A, 0x585A, /* 塚 */
0x6F2C, 0x6F2C, /* 漬 */
0x576A, 0x576A, /* 坪 */
0x722A, 0x722A, /* 爪 */
0x9DB4, 0x9DB4, /* 鶴 */
0x4F4E, 0x4F4E, /* 低 */
0x5448, 0x5448, /* 呈 */
0x5EF7, 0x5EF7, /* 廷 */
0x5F1F, 0x5F1F, /* 弟 */
0x5B9A, 0x5B9A, /* 定 */
0x5E95, 0x5E95, /* 底 */
0x62B5, 0x62B5, /* 抵 */
0x90B8, 0x90B8, /* 邸 */
0x4EAD, 0x4EAD, /* 亭 */
0x8C9E, 0x8C9E, /* 貞 */
0x5E1D, 0x5E1D, /* 帝 */
0x8A02, 0x8A02, /* 訂 */
0x5EAD, 0x5EAD, /* 庭 */
0x9013, 0x9013, /* 逓 */
0x505C, 0x505C, /* 停 */
0x5075, 0x5075, /* 偵 */
0x5824, 0x5824, /* 堤 */
0x63D0, 0x63D0, /* 提 */
0x7A0B, 0x7A0B, /* 程 */
0x8247, 0x8247, /* 艇 */
0x7DE0, 0x7DE0, /* 締 */
0x8AE6, 0x8AE6, /* 諦 */
0x6CE5, 0x6CE5, /* 泥 */
0x7684, 0x7684, /* 的 */
0x7B1B, 0x7B1B, /* 笛 */
0x6458, 0x6458, /* 摘 */
0x6EF4, 0x6EF4, /* 滴 */
0x9069, 0x9069, /* 適 */
0x6575, 0x6575, /* 敵 */
0x6EBA, 0x6EBA, /* 溺 */
0x8FED, 0x8FED, /* 迭 */
0x54F2, 0x54F2, /* 哲 */
0x9244, 0x9244, /* 鉄 */
0x5FB9, 0x5FB9, /* 徹 */
0x64A4, 0x64A4, /* 撤 */
0x5929, 0x5929, /* 天 */
0x5178, 0x5178, /* 典 */
0x5E97, 0x5E97, /* 店 */
0x70B9, 0x70B9, /* 点 */
0x5C55, 0x5C55, /* 展 */
0x6DFB, 0x6DFB, /* 添 */
0x8EE2, 0x8EE2, /* 転 */
0x5861, 0x5861, /* 塡 */
0x7530, 0x7530, /* 田 */
0x4F1D, 0x4F1D, /* 伝 */
0x6BBF, 0x6BBF, /* 殿 */
0x96FB, 0x96FB, /* 電 */
0x6597, 0x6597, /* 斗 */
0x5410, 0x5410, /* 吐 */
0x59AC, 0x59AC, /* 妬 */
0x5F92, 0x5F92, /* 徒 */
0x9014, 0x9014, /* 途 */
0x90FD, 0x90FD, /* 都 */
0x6E21, 0x6E21, /* 渡 */
0x5857, 0x5857, /* 塗 */
0x8CED, 0x8CED, /* 賭 */
0x571F, 0x571F, /* 土 */
0x5974, 0x5974, /* 奴 */
0x52AA, 0x52AA, /* 努 */
0x5EA6, 0x5EA6, /* 度 */
0x6012, 0x6012, /* 怒 */
0x5200, 0x5200, /* 刀 */
0x51AC, 0x51AC, /* 冬 */
0x706F, 0x706F, /* 灯 */
0x5F53, 0x5F53, /* 当 */
0x6295, 0x6295, /* 投 */
0x8C46, 0x8C46, /* 豆 */
0x6771, 0x6771, /* 東 */
0x5230, 0x5230, /* 到 */
0x9003, 0x9003, /* 逃 */
0x5012, 0x5012, /* 倒 */
0x51CD, 0x51CD, /* 凍 */
0x5510, 0x5510, /* 唐 */
0x5CF6, 0x5CF6, /* 島 */
0x6843, 0x6843, /* 桃 */
0x8A0E, 0x8A0E, /* 討 */
0x900F, 0x900F, /* 透 */
0x515A, 0x515A, /* 党 */
0x60BC, 0x60BC, /* 悼 */
0x76D7, 0x76D7, /* 盗 */
0x9676, 0x9676, /* 陶 */
0x5854, 0x5854, /* 塔 */
0x642D, 0x642D, /* 搭 */
0x68DF, 0x68DF, /* 棟 */
0x6E6F, 0x6E6F, /* 湯 */
0x75D8, 0x75D8, /* 痘 */
0x767B, 0x767B, /* 登 */
0x7B54, 0x7B54, /* 答 */
0x7B49, 0x7B49, /* 等 */
0x7B52, 0x7B52, /* 筒 */
0x7D71, 0x7D71, /* 統 */
0x7A32, 0x7A32, /* 稲 */
0x8E0F, 0x8E0F, /* 踏 */
0x7CD6, 0x7CD6, /* 糖 */
0x982D, 0x982D, /* 頭 */
0x8B04, 0x8B04, /* 謄 */
0x85E4, 0x85E4, /* 藤 */
0x95D8, 0x95D8, /* 闘 */
0x9A30, 0x9A30, /* 騰 */
0x540C, 0x540C, /* 同 */
0x6D1E, 0x6D1E, /* 洞 */
0x80F4, 0x80F4, /* 胴 */
0x52D5, 0x52D5, /* 動 */
0x5802, 0x5802, /* 堂 */
0x7AE5, 0x7AE5, /* 童 */
0x9053, 0x9053, /* 道 */
0x50CD, 0x50CD, /* 働 */
0x9285, 0x9285, /* 銅 */
0x5C0E, 0x5C0E, /* 導 */
0x77B3, 0x77B3, /* 瞳 */
0x5CE0, 0x5CE0, /* 峠 */
0x533F, 0x533F, /* 匿 */
0x7279, 0x7279, /* 特 */
0x5F97, 0x5F97, /* 得 */
0x7763, 0x7763, /* 督 */
0x5FB3, 0x5FB3, /* 徳 */
0x7BE4, 0x7BE4, /* 篤 */
0x6BD2, 0x6BD2, /* 毒 */
0x72EC, 0x72EC, /* 独 */
0x8AAD, 0x8AAD, /* 読 */
0x6803, 0x6803, /* 栃 */
0x51F8, 0x51F8, /* 凸 */
0x7A81, 0x7A81, /* 突 */
0x5C4A, 0x5C4A, /* 届 */
0x5C6F, 0x5C6F, /* 屯 */
0x8C5A, 0x8C5A, /* 豚 */
0x9813, 0x9813, /* 頓 */
0x8CAA, 0x8CAA, /* 貪 */
0x920D, 0x920D, /* 鈍 */
0x66C7, 0x66C7, /* 曇 */
0x4E3C, 0x4E3C, /* 丼 */
0x90A3, 0x90A3, /* 那 */
0x5948, 0x5948, /* 奈 */
0x5185, 0x5185, /* 内 */
0x68A8, 0x68A8, /* 梨 */
0x8B0E, 0x8B0E, /* 謎 */
0x934B, 0x934B, /* 鍋 */
0x5357, 0x5357, /* 南 */
0x8EDF, 0x8EDF, /* 軟 */
0x96E3, 0x96E3, /* 難 */
0x4E8C, 0x4E8C, /* 二 */
0x5C3C, 0x5C3C, /* 尼 */
0x5F10, 0x5F10, /* 弐 */
0x5302, 0x5302, /* 匂 */
0x8089, 0x8089, /* 肉 */
0x8679, 0x8679, /* 虹 */
0x65E5, 0x65E5, /* 日 */
0x5165, 0x5165, /* 入 */
0x4E73, 0x4E73, /* 乳 */
0x5C3F, 0x5C3F, /* 尿 */
0x4EFB, 0x4EFB, /* 任 */
0x598A, 0x598A, /* 妊 */
0x5FCD, 0x5FCD, /* 忍 */
0x8A8D, 0x8A8D, /* 認 */
0x5BE7, 0x5BE7, /* 寧 */
0x71B1, 0x71B1, /* 熱 */
0x5E74, 0x5E74, /* 年 */
0x5FF5, 0x5FF5, /* 念 */
0x637B, 0x637B, /* 捻 */
0x7C98, 0x7C98, /* 粘 */
0x71C3, 0x71C3, /* 燃 */
0x60A9, 0x60A9, /* 悩 */
0x7D0D, 0x7D0D, /* 納 */
0x80FD, 0x80FD, /* 能 */
0x8133, 0x8133, /* 脳 */
0x8FB2, 0x8FB2, /* 農 */
0x6FC3, 0x6FC3, /* 濃 */
0x628A, 0x628A, /* 把 */
0x6CE2, 0x6CE2, /* 波 */
0x6D3E, 0x6D3E, /* 派 */
0x7834, 0x7834, /* 破 */
0x8987, 0x8987, /* 覇 */
0x99AC, 0x99AC, /* 馬 */
0x5A46, 0x5A46, /* 婆 */
0x7F75, 0x7F75, /* 罵 */
0x62DD, 0x62DD, /* 拝 */
0x676F, 0x676F, /* 杯 */
0x80CC, 0x80CC, /* 背 */
0x80BA, 0x80BA, /* 肺 */
0x4FF3, 0x4FF3, /* 俳 */
0x914D, 0x914D, /* 配 */
0x6392, 0x6392, /* 排 */
0x6557, 0x6557, /* 敗 */
0x5EC3, 0x5EC3, /* 廃 */
0x8F29, 0x8F29, /* 輩 */
0x58F2, 0x58F2, /* 売 */
0x500D, 0x500D, /* 倍 */
0x6885, 0x6885, /* 梅 */
0x57F9, 0x57F9, /* 培 */
0x966A, 0x966A, /* 陪 */
0x5A92, 0x5A92, /* 媒 */
0x8CB7, 0x8CB7, /* 買 */
0x8CE0, 0x8CE0, /* 賠 */
0x767D, 0x767D, /* 白 */
0x4F2F, 0x4F2F, /* 伯 */
0x62CD, 0x62CD, /* 拍 */
0x6CCA, 0x6CCA, /* 泊 */
0x8FEB, 0x8FEB, /* 迫 */
0x525D, 0x525D, /* 剝 */
0x8236, 0x8236, /* 舶 */
0x535A, 0x535A, /* 博 */
0x8584, 0x8584, /* 薄 */
0x9EA6, 0x9EA6, /* 麦 */
0x6F20, 0x6F20, /* 漠 */
0x7E1B, 0x7E1B, /* 縛 */
0x7206, 0x7206, /* 爆 */
0x7BB1, 0x7BB1, /* 箱 */
0x7BB8, 0x7BB8, /* 箸 */
0x7551, 0x7551, /* 畑 */
0x808C, 0x808C, /* 肌 */
0x516B, 0x516B, /* 八 */
0x9262, 0x9262, /* 鉢 */
0x767A, 0x767A, /* 発 */
0x9AEA, 0x9AEA, /* 髪 */
0x4F10, 0x4F10, /* 伐 */
0x629C, 0x629C, /* 抜 */
0x7F70, 0x7F70, /* 罰 */
0x95A5, 0x95A5, /* 閥 */
0x53CD, 0x53CD, /* 反 */
0x534A, 0x534A, /* 半 */
0x6C3E, 0x6C3E, /* 氾 */
0x72AF, 0x72AF, /* 犯 */
0x5E06, 0x5E06, /* 帆 */
0x6C4E, 0x6C4E, /* 汎 */
0x4F34, 0x4F34, /* 伴 */
0x5224, 0x5224, /* 判 */
0x5742, 0x5742, /* 坂 */
0x962A, 0x962A, /* 阪 */
0x677F, 0x677F, /* 板 */
0x7248, 0x7248, /* 版 */
0x73ED, 0x73ED, /* 班 */
0x7554, 0x7554, /* 畔 */
0x822C, 0x822C, /* 般 */
0x8CA9, 0x8CA9, /* 販 */
0x6591, 0x6591, /* 斑 */
0x98EF, 0x98EF, /* 飯 */
0x642C, 0x642C, /* 搬 */
0x7169, 0x7169, /* 煩 */
0x9812, 0x9812, /* 頒 */
0x7BC4, 0x7BC4, /* 範 */
0x7E41, 0x7E41, /* 繁 */
0x85E9, 0x85E9, /* 藩 */
0x6669, 0x6669, /* 晩 */
0x756A, 0x756A, /* 番 */
0x86EE, 0x86EE, /* 蛮 */
0x76E4, 0x76E4, /* 盤 */
0x6BD4, 0x6BD4, /* 比 */
0x76AE, 0x76AE, /* 皮 */
0x5983, 0x5983, /* 妃 */
0x5426, 0x5426, /* 否 */
0x6279, 0x6279, /* 批 */
0x5F7C, 0x5F7C, /* 彼 */
0x62AB, 0x62AB, /* 披 */
0x80A5, 0x80A5, /* 肥 */
0x975E, 0x975E, /* 非 */
0x5351, 0x5351, /* 卑 */
0x98DB, 0x98DB, /* 飛 */
0x75B2, 0x75B2, /* 疲 */
0x79D8, 0x79D8, /* 秘 */
0x88AB, 0x88AB, /* 被 */
0x60B2, 0x60B2, /* 悲 */
0x6249, 0x6249, /* 扉 */
0x8CBB, 0x8CBB, /* 費 */
0x7891, 0x7891, /* 碑 */
0x7F77, 0x7F77, /* 罷 */
0x907F, 0x907F, /* 避 */
0x5C3E, 0x5C3E, /* 尾 */
0x7709, 0x7709, /* 眉 */
0x7F8E, 0x7F8E, /* 美 */
0x5099, 0x5099, /* 備 */
0x5FAE, 0x5FAE, /* 微 */
0x9F3B, 0x9F3B, /* 鼻 */
0x819D, 0x819D, /* 膝 */
0x8098, 0x8098, /* 肘 */
0x5339, 0x5339, /* 匹 */
0x5FC5, 0x5FC5, /* 必 */
0x6CCC, 0x6CCC, /* 泌 */
0x7B46, 0x7B46, /* 筆 */
0x59EB, 0x59EB, /* 姫 */
0x767E, 0x767E, /* 百 */
0x6C37, 0x6C37, /* 氷 */
0x8868, 0x8868, /* 表 */
0x4FF5, 0x4FF5, /* 俵 */
0x7968, 0x7968, /* 票 */
0x8A55, 0x8A55, /* 評 */
0x6F02, 0x6F02, /* 漂 */
0x6A19, 0x6A19, /* 標 */
0x82D7, 0x82D7, /* 苗 */
0x79D2, 0x79D2, /* 秒 */
0x75C5, 0x75C5, /* 病 */
0x63CF, 0x63CF, /* 描 */
0x732B, 0x732B, /* 猫 */
0x54C1, 0x54C1, /* 品 */
0x6D5C, 0x6D5C, /* 浜 */
0x8CA7, 0x8CA7, /* 貧 */
0x8CD3, 0x8CD3, /* 賓 */
0x983B, 0x983B, /* 頻 */
0x654F, 0x654F, /* 敏 */
0x74F6, 0x74F6, /* 瓶 */
0x4E0D, 0x4E0D, /* 不 */
0x592B, 0x592B, /* 夫 */
0x7236, 0x7236, /* 父 */
0x4ED8, 0x4ED8, /* 付 */
0x5E03, 0x5E03, /* 布 */
0x6276, 0x6276, /* 扶 */
0x5E9C, 0x5E9C, /* 府 */
0x6016, 0x6016, /* 怖 */
0x961C, 0x961C, /* 阜 */
0x9644, 0x9644, /* 附 */
0x8A03, 0x8A03, /* 訃 */
0x8CA0, 0x8CA0, /* 負 */
0x8D74, 0x8D74, /* 赴 */
0x6D6E, 0x6D6E, /* 浮 */
0x5A66, 0x5A66, /* 婦 */
0x7B26, 0x7B26, /* 符 */
0x5BCC, 0x5BCC, /* 富 */
0x666E, 0x666E, /* 普 */
0x8150, 0x8150, /* 腐 */
0x6577, 0x6577, /* 敷 */
0x819A, 0x819A, /* 膚 */
0x8CE6, 0x8CE6, /* 賦 */
0x8B5C, 0x8B5C, /* 譜 */
0x4FAE, 0x4FAE, /* 侮 */
0x6B66, 0x6B66, /* 武 */
0x90E8, 0x90E8, /* 部 */
0x821E, 0x821E, /* 舞 */
0x5C01, 0x5C01, /* 封 */
0x98A8, 0x98A8, /* 風 */
0x4F0F, 0x4F0F, /* 伏 */
0x670D, 0x670D, /* 服 */
0x526F, 0x526F, /* 副 */
0x5E45, 0x5E45, /* 幅 */
0x5FA9, 0x5FA9, /* 復 */
0x798F, 0x798F, /* 福 */
0x8179, 0x8179, /* 腹 */
0x8907, 0x8907, /* 複 */
0x8986, 0x8986, /* 覆 */
0x6255, 0x6255, /* 払 */
0x6CB8, 0x6CB8, /* 沸 */
0x4ECF, 0x4ECF, /* 仏 */
0x7269, 0x7269, /* 物 */
0x7C89, 0x7C89, /* 粉 */
0x7D1B, 0x7D1B, /* 紛 */
0x96F0, 0x96F0, /* 雰 */
0x5674, 0x5674, /* 噴 */
0x58B3, 0x58B3, /* 墳 */
0x61A4, 0x61A4, /* 憤 */
0x596E, 0x596E, /* 奮 */
0x5206, 0x5206, /* 分 */
0x6587, 0x6587, /* 文 */
0x805E, 0x805E, /* 聞 */
0x4E19, 0x4E19, /* 丙 */
0x5E73, 0x5E73, /* 平 */
0x5175, 0x5175, /* 兵 */
0x4F75, 0x4F75, /* 併 */
0x4E26, 0x4E26, /* 並 */
0x67C4, 0x67C4, /* 柄 */
0x965B, 0x965B, /* 陛 */
0x9589, 0x9589, /* 閉 */
0x5840, 0x5840, /* 塀 */
0x5E63, 0x5E63, /* 幣 */
0x5F0A, 0x5F0A, /* 弊 */
0x853D, 0x853D, /* 蔽 */
0x9905, 0x9905, /* 餅 */
0x7C73, 0x7C73, /* 米 */
0x58C1, 0x58C1, /* 壁 */
0x74A7, 0x74A7, /* 璧 */
0x7656, 0x7656, /* 癖 */
0x5225, 0x5225, /* 別 */
0x8511, 0x8511, /* 蔑 */
0x7247, 0x7247, /* 片 */
0x8FBA, 0x8FBA, /* 辺 */
0x8FD4, 0x8FD4, /* 返 */
0x5909, 0x5909, /* 変 */
0x504F, 0x504F, /* 偏 */
0x904D, 0x904D, /* 遍 */
0x7DE8, 0x7DE8, /* 編 */
0x5F01, 0x5F01, /* 弁 */
0x4FBF, 0x4FBF, /* 便 */
0x52C9, 0x52C9, /* 勉 */
0x6B69, 0x6B69, /* 歩 */
0x4FDD, 0x4FDD, /* 保 */
0x54FA, 0x54FA, /* 哺 */
0x6355, 0x6355, /* 捕 */
0x88DC, 0x88DC, /* 補 */
0x8217, 0x8217, /* 舗 */
0x6BCD, 0x6BCD, /* 母 */
0x52DF, 0x52DF, /* 募 */
0x5893, 0x5893, /* 墓 */
0x6155, 0x6155, /* 慕 */
0x66AE, 0x66AE, /* 暮 */
0x7C3F, 0x7C3F, /* 簿 */
0x65B9, 0x65B9, /* 方 */
0x5305, 0x5305, /* 包 */
0x82B3, 0x82B3, /* 芳 */
0x90A6, 0x90A6, /* 邦 */
0x5949, 0x5949, /* 奉 */
0x5B9D, 0x5B9D, /* 宝 */
0x62B1, 0x62B1, /* 抱 */
0x653E, 0x653E, /* 放 */
0x6CD5, 0x6CD5, /* 法 */
0x6CE1, 0x6CE1, /* 泡 */
0x80DE, 0x80DE, /* 胞 */
0x4FF8, 0x4FF8, /* 俸 */
0x5023, 0x5023, /* 倣 */
0x5CF0, 0x5CF0, /* 峰 */
0x7832, 0x7832, /* 砲 */
0x5D29, 0x5D29, /* 崩 */
0x8A2A, 0x8A2A, /* 訪 */
0x5831, 0x5831, /* 報 */
0x8702, 0x8702, /* 蜂 */
0x8C4A, 0x8C4A, /* 豊 */
0x98FD, 0x98FD, /* 飽 */
0x8912, 0x8912, /* 褒 */
0x7E2B, 0x7E2B, /* 縫 */
0x4EA1, 0x4EA1, /* 亡 */
0x4E4F, 0x4E4F, /* 乏 */
0x5FD9, 0x5FD9, /* 忙 */
0x574A, 0x574A, /* 坊 */
0x59A8, 0x59A8, /* 妨 */
0x5FD8, 0x5FD8, /* 忘 */
0x9632, 0x9632, /* 防 */
0x623F, 0x623F, /* 房 */
0x80AA, 0x80AA, /* 肪 */
0x67D0, 0x67D0, /* 某 */
0x5192, 0x5192, /* 冒 */
0x5256, 0x5256, /* 剖 */
0x7D21, 0x7D21, /* 紡 */
0x671B, 0x671B, /* 望 */
0x508D, 0x508D, /* 傍 */
0x5E3D, 0x5E3D, /* 帽 */
0x68D2, 0x68D2, /* 棒 */
0x8CBF, 0x8CBF, /* 貿 */
0x8C8C, 0x8C8C, /* 貌 */
0x66B4, 0x66B4, /* 暴 */
0x81A8, 0x81A8, /* 膨 */
0x8B00, 0x8B00, /* 謀 */
0x9830, 0x9830, /* 頰 */
0x5317, 0x5317, /* 北 */
0x6728, 0x6728, /* 木 */
0x6734, 0x6734, /* 朴 */
0x7267, 0x7267, /* 牧 */
0x7766, 0x7766, /* 睦 */
0x50D5, 0x50D5, /* 僕 */
0x58A8, 0x58A8, /* 墨 */
0x64B2, 0x64B2, /* 撲 */
0x6CA1, 0x6CA1, /* 没 */
0x52C3, 0x52C3, /* 勃 */
0x5800, 0x5800, /* 堀 */
0x672C, 0x672C, /* 本 */
0x5954, 0x5954, /* 奔 */
0x7FFB, 0x7FFB, /* 翻 */
0x51E1, 0x51E1, /* 凡 */
0x76C6, 0x76C6, /* 盆 */
0x9EBB, 0x9EBB, /* 麻 */
0x6469, 0x6469, /* 摩 */
0x78E8, 0x78E8, /* 磨 */
0x9B54, 0x9B54, /* 魔 */
0x6BCE, 0x6BCE, /* 毎 */
0x59B9, 0x59B9, /* 妹 */
0x679A, 0x679A, /* 枚 */
0x6627, 0x6627, /* 昧 */
0x57CB, 0x57CB, /* 埋 */
0x5E55, 0x5E55, /* 幕 */
0x819C, 0x819C, /* 膜 */
0x6795, 0x6795, /* 枕 */
0x53C8, 0x53C8, /* 又 */
0x672B, 0x672B, /* 末 */
0x62B9, 0x62B9, /* 抹 */
0x4E07, 0x4E07, /* 万 */
0x6E80, 0x6E80, /* 満 */
0x6162, 0x6162, /* 慢 */
0x6F2B, 0x6F2B, /* 漫 */
0x672A, 0x672A, /* 未 */
0x5473, 0x5473, /* 味 */
0x9B45, 0x9B45, /* 魅 */
0x5CAC, 0x5CAC, /* 岬 */
0x5BC6, 0x5BC6, /* 密 */
0x871C, 0x871C, /* 蜜 */
0x8108, 0x8108, /* 脈 */
0x5999, 0x5999, /* 妙 */
0x6C11, 0x6C11, /* 民 */
0x7720, 0x7720, /* 眠 */
0x77DB, 0x77DB, /* 矛 */
0x52D9, 0x52D9, /* 務 */
0x7121, 0x7121, /* 無 */
0x5922, 0x5922, /* 夢 */
0x9727, 0x9727, /* 霧 */
0x5A18, 0x5A18, /* 娘 */
0x540D, 0x540D, /* 名 */
0x547D, 0x547D, /* 命 */
0x660E, 0x660E, /* 明 */
0x8FF7, 0x8FF7, /* 迷 */
0x51A5, 0x51A5, /* 冥 */
0x76DF, 0x76DF, /* 盟 */
0x9298, 0x9298, /* 銘 */
0x9CF4, 0x9CF4, /* 鳴 */
0x6EC5, 0x6EC5, /* 滅 */
0x514D, 0x514D, /* 免 */
0x9762, 0x9762, /* 面 */
0x7DBF, 0x7DBF, /* 綿 */
0x9EBA, 0x9EBA, /* 麺 */
0x8302, 0x8302, /* 茂 */
0x6A21, 0x6A21, /* 模 */
0x6BDB, 0x6BDB, /* 毛 */
0x5984, 0x5984, /* 妄 */
0x76F2, 0x76F2, /* 盲 */
0x8017, 0x8017, /* 耗 */
0x731B, 0x731B, /* 猛 */
0x7DB2, 0x7DB2, /* 網 */
0x76EE, 0x76EE, /* 目 */
0x9ED9, 0x9ED9, /* 黙 */
0x9580, 0x9580, /* 門 */
0x7D0B, 0x7D0B, /* 紋 */
0x554F, 0x554F, /* 問 */
0x51B6, 0x51B6, /* 冶 */
0x591C, 0x591C, /* 夜 */
0x91CE, 0x91CE, /* 野 */
0x5F25, 0x5F25, /* 弥 */
0x5384, 0x5384, /* 厄 */
0x5F79, 0x5F79, /* 役 */
0x7D04, 0x7D04, /* 約 */
0x8A33, 0x8A33, /* 訳 */
0x85AC, 0x85AC, /* 薬 */
0x8E8D, 0x8E8D, /* 躍 */
0x95C7, 0x95C7, /* 闇 */
0x7531, 0x7531, /* 由 */
0x6CB9, 0x6CB9, /* 油 */
0x55A9, 0x55A9, /* 喩 */
0x6109, 0x6109, /* 愉 */
0x8AED, 0x8AED, /* 諭 */
0x8F38, 0x8F38, /* 輸 */
0x7652, 0x7652, /* 癒 */
0x552F, 0x552F, /* 唯 */
0x53CB, 0x53CB, /* 友 */
0x6709, 0x6709, /* 有 */
0x52C7, 0x52C7, /* 勇 */
0x5E7D, 0x5E7D, /* 幽 */
0x60A0, 0x60A0, /* 悠 */
0x90F5, 0x90F5, /* 郵 */
0x6E67, 0x6E67, /* 湧 */
0x7336, 0x7336, /* 猶 */
0x88D5, 0x88D5, /* 裕 */
0x904A, 0x904A, /* 遊 */
0x96C4, 0x96C4, /* 雄 */
0x8A98, 0x8A98, /* 誘 */
0x6182, 0x6182, /* 憂 */
0x878D, 0x878D, /* 融 */
0x512A, 0x512A, /* 優 */
0x4E0E, 0x4E0E, /* 与 */
0x4E88, 0x4E88, /* 予 */
0x4F59, 0x4F59, /* 余 */
0x8A89, 0x8A89, /* 誉 */
0x9810, 0x9810, /* 預 */
0x5E7C, 0x5E7C, /* 幼 */
0x7528, 0x7528, /* 用 */
0x7F8A, 0x7F8A, /* 羊 */
0x5996, 0x5996, /* 妖 */
0x6D0B, 0x6D0B, /* 洋 */
0x8981, 0x8981, /* 要 */
0x5BB9, 0x5BB9, /* 容 */
0x5EB8, 0x5EB8, /* 庸 */
0x63DA, 0x63DA, /* 揚 */
0x63FA, 0x63FA, /* 揺 */
0x8449, 0x8449, /* 葉 */
0x967D, 0x967D, /* 陽 */
0x6EB6, 0x6EB6, /* 溶 */
0x8170, 0x8170, /* 腰 */
0x69D8, 0x69D8, /* 様 */
0x760D, 0x760D, /* 瘍 */
0x8E0A, 0x8E0A, /* 踊 */
0x7AAF, 0x7AAF, /* 窯 */
0x990A, 0x990A, /* 養 */
0x64C1, 0x64C1, /* 擁 */
0x8B21, 0x8B21, /* 謡 */
0x66DC, 0x66DC, /* 曜 */
0x6291, 0x6291, /* 抑 */
0x6C83, 0x6C83, /* 沃 */
0x6D74, 0x6D74, /* 浴 */
0x6B32, 0x6B32, /* 欲 */
0x7FCC, 0x7FCC, /* 翌 */
0x7FFC, 0x7FFC, /* 翼 */
0x62C9, 0x62C9, /* 拉 */
0x88F8, 0x88F8, /* 裸 */
0x7F85, 0x7F85, /* 羅 */
0x6765, 0x6765, /* 来 */
0x96F7, 0x96F7, /* 雷 */
0x983C, 0x983C, /* 頼 */
0x7D61, 0x7D61, /* 絡 */
0x843D, 0x843D, /* 落 */
0x916A, 0x916A, /* 酪 */
0x8FA3, 0x8FA3, /* 辣 */
0x4E71, 0x4E71, /* 乱 */
0x5375, 0x5375, /* 卵 */
0x89A7, 0x89A7, /* 覧 */
0x6FEB, 0x6FEB, /* 濫 */
0x85CD, 0x85CD, /* 藍 */
0x6B04, 0x6B04, /* 欄 */
0x540F, 0x540F, /* 吏 */
0x5229, 0x5229, /* 利 */
0x91CC, 0x91CC, /* 里 */
0x7406, 0x7406, /* 理 */
0x75E2, 0x75E2, /* 痢 */
0x88CF, 0x88CF, /* 裏 */
0x5C65, 0x5C65, /* 履 */
0x7483, 0x7483, /* 璃 */
0x96E2, 0x96E2, /* 離 */
0x9678, 0x9678, /* 陸 */
0x7ACB, 0x7ACB, /* 立 */
0x5F8B, 0x5F8B, /* 律 */
0x6144, 0x6144, /* 慄 */
0x7565, 0x7565, /* 略 */
0x67F3, 0x67F3, /* 柳 */
0x6D41, 0x6D41, /* 流 */
0x7559, 0x7559, /* 留 */
0x7ADC, 0x7ADC, /* 竜 */
0x7C92, 0x7C92, /* 粒 */
0x9686, 0x9686, /* 隆 */
0x786B, 0x786B, /* 硫 */
0x4FB6, 0x4FB6, /* 侶 */
0x65C5, 0x65C5, /* 旅 */
0x865C, 0x865C, /* 虜 */
0x616E, 0x616E, /* 慮 */
0x4E86, 0x4E86, /* 了 */
0x4E21, 0x4E21, /* 両 */
0x826F, 0x826F, /* 良 */
0x6599, 0x6599, /* 料 */
0x6DBC, 0x6DBC, /* 涼 */
0x731F, 0x731F, /* 猟 */
0x9675, 0x9675, /* 陵 */
0x91CF, 0x91CF, /* 量 */
0x50DA, 0x50DA, /* 僚 */
0x9818, 0x9818, /* 領 */
0x5BEE, 0x5BEE, /* 寮 */
0x7642, 0x7642, /* 療 */
0x77AD, 0x77AD, /* 瞭 */
0x7CE7, 0x7CE7, /* 糧 */
0x529B, 0x529B, /* 力 */
0x7DD1, 0x7DD1, /* 緑 */
0x6797, 0x6797, /* 林 */
0x5398, 0x5398, /* 厘 */
0x502B, 0x502B, /* 倫 */
0x8F2A, 0x8F2A, /* 輪 */
0x96A3, 0x96A3, /* 隣 */
0x81E8, 0x81E8, /* 臨 */
0x7460, 0x7460, /* 瑠 */
0x6D99, 0x6D99, /* 涙 */
0x7D2F, 0x7D2F, /* 累 */
0x5841, 0x5841, /* 塁 */
0x985E, 0x985E, /* 類 */
0x4EE4, 0x4EE4, /* 令 */
0x793C, 0x793C, /* 礼 */
0x51B7, 0x51B7, /* 冷 */
0x52B1, 0x52B1, /* 励 */
0x623B, 0x623B, /* 戻 */
0x4F8B, 0x4F8B, /* 例 */
0x9234, 0x9234, /* 鈴 */
0x96F6, 0x96F6, /* 零 */
0x970A, 0x970A, /* 霊 */
0x96B7, 0x96B7, /* 隷 */
0x9F62, 0x9F62, /* 齢 */
0x9E97, 0x9E97, /* 麗 */
0x66A6, 0x66A6, /* 暦 */
0x6B74, 0x6B74, /* 歴 */
0x5217, 0x5217, /* 列 */
0x52A3, 0x52A3, /* 劣 */
0x70C8, 0x70C8, /* 烈 */
0x88C2, 0x88C2, /* 裂 */
0x604B, 0x604B, /* 恋 */
0x9023, 0x9023, /* 連 */
0x5EC9, 0x5EC9, /* 廉 */
0x7DF4, 0x7DF4, /* 練 */
0x932C, 0x932C, /* 錬 */
0x5442, 0x5442, /* 呂 */
0x7089, 0x7089, /* 炉 */
0x8CC2, 0x8CC2, /* 賂 */
0x8DEF, 0x8DEF, /* 路 */
0x9732, 0x9732, /* 露 */
0x8001, 0x8001, /* 老 */
0x52B4, 0x52B4, /* 労 */
0x5F04, 0x5F04, /* 弄 */
0x90CE, 0x90CE, /* 郎 */
0x6717, 0x6717, /* 朗 */
0x6D6A, 0x6D6A, /* 浪 */
0x5ECA, 0x5ECA, /* 廊 */
0x697C, 0x697C, /* 楼 */
0x6F0F, 0x6F0F, /* 漏 */
0x7C60, 0x7C60, /* 籠 */
0x516D, 0x516D, /* 六 */
0x9332, 0x9332, /* 録 */
0x9E93, 0x9E93, /* 麓 */
0x8AD6, 0x8AD6, /* 論 */
0x548C, 0x548C, /* 和 */
0x8A71, 0x8A71, /* 話 */
0x8CC4, 0x8CC4, /* 賄 */
0x8107, 0x8107, /* 脇 */
0x60D1, 0x60D1, /* 惑 */
0x67A0, 0x67A0, /* 枠 */
0x6E7E, 0x6E7E, /* 湾 */
0x8155, 0x8155, /* 腕 */
0x20B9F, 0x20B9F, /* 𠮟 */

I don't actually use the defaults as provided by the default Nuklear config and believe it's a bit of a mistake, to use oversampling (especially 3x only horizontally), as it does not contribute to sharpness as one might expect. I use 1:1 size + pixel snap and find the size where the font appears sharp after baking. Partly because stb_truetype doesn't use hinting, only certain sizes are sharp. So my texture sizes are actually a bit smaller than default I guess.

@dumblob
Copy link
Member

dumblob commented Dec 28, 2021

With the whole CJK Unicode block + all special characters + icons and small font size, in VRAM everything fits into 16kx1k and the bigger font sizes into 16kx2k.

Thanks for the practical insight!

I don't actually use the defaults as provided by the default Nuklear config and believe it's a bit of a mistake, to use oversampling (especially 3x only horizontally), as it does not contribute to sharpness as one might expect. I use 1:1 size + pixel snap and find the size where the font appears sharp after baking. Partly because stb_truetype doesn't use hinting, only certain sizes are sharp. So my texture sizes are actually a bit smaller than default I guess.

That's an interesting observation - do you think we could add something like this (with some font size compensation on top) or at least some parts to upstream Nuklear?

Font sharpness was (and still seems to be) a problem for some. It's a delicate topic, so we have to be extra careful but I seek any opportunity to explore how to make it better.

@FrostKiwi
Copy link
Contributor Author

FrostKiwi commented Dec 28, 2021

we could add something like this (with some font size compensation on top) or at least some parts to upstream Nuklear?

Yes and no. I can add a tutorial or Git Wiki entry on how to find the correct fully sharp size for a font file. They come in integer steps. Sharp text sizes are eg. 22.7 and 26.7 and 30.7 and 34.7. But another font file bakes with proper sharpness at other steps 18.3 and 24.3 and 30.3 and 36.3...

There is no rime or reason as to why stb_truetype rasterizes blurry on certain steps that I understand, but finding the correct sharp sizes gives you the same sharpness as Firefox or anything else that uses FreeType. The lack of hinting does not fully explain this behaviour but I am not the only one to has noticed this. But hey, stripping hinting information makes for smaller font files...

@dumblob
Copy link
Member

dumblob commented Dec 28, 2021

But another font file bakes with proper sharpness at other steps 18.3 and 24.3 and 30.3 and 36.3...

Oh, I suspected this but prayed it's not true 😉. In that case, would you be willing to add it to our wiki? If you'll have any permission issues, just ping me here.

@FrostKiwi
Copy link
Contributor Author

@dumblob Sure I"ll put together a wiki tutorial. Though I don't have permissions to create a wiki page yet...

@RobLoach
Copy link
Contributor

@dumblob Sure I"ll put together a wiki tutorial. Though I don't have permissions to create a wiki page yet...

Mind trying again? Just enabled public wiki editing.

@FrostKiwi
Copy link
Contributor Author

@dumblob Sure I"ll put together a wiki tutorial. Though I don't have permissions to create a wiki page yet...

Mind trying again? Just enabled public wiki editing.

Works, will create an guide with visual examples over the next few days.
Happy new year :]

@FrostKiwi
Copy link
Contributor Author

FrostKiwi commented Feb 14, 2022

@dumblob Sure I"ll put together a wiki tutorial. Though I don't have permissions to create a wiki page yet...

Mind trying again? Just enabled public wiki editing.

Works, will create an guide with visual examples over the next few days. Happy new year :]

Completed the full font guide with every detail a user might want to know with animated gifs to compare sharpness settings.

Besides the requested sharpness discussion I covered related topics like how to avoid common segfaults when dealing with fonts and how to work with third-party apps to subset your font files for better inclusion in Nuklear.

Some future ToDo:

@dumblob
Copy link
Member

dumblob commented Feb 14, 2022

@FrostKiwi this is mind blowing!

I've went through about 20% of it quite closely and just skimmed the rest and it's awesome. So much effort and so much detailed information. It's definitely the best write up on fonts in practice I've ever seen. This might become the guide for nearly any font handling (not only stb_truetype-based) on the internet.

Thanks a ton! We owe you a beer 😉.


P.S. I think we should link this wiki from the stb repository as those people will definitely find it useful.

@FrostKiwi
Copy link
Contributor Author

Rebased branch on youngest master, so this PR can be added without conflicts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants