パスワードを忘れた? アカウント作成
14965364 journal
日記

route127の日記: メイリオ康煕部首(とCJK互換漢字)

日記 by route127

先日の納豆ベンチャースレ音質重視ケーブルスレでの康煕部首の話題で度々名前が挙がっていたメイリオについて、複数のコードポイントから参照されるグリフをリストアップしてみると、康煕部首以外にもCJK互換漢字(U+F900~U+F9AA)から重複して参照されるグリフが多数あった。

1列目にグリフインデックス、2列目以降はグリフインデックスを参照しているコードポイントを列挙し、最終列になるべくCJK統合漢字拡張A(U+3400~U+4DAF)、CJK統合漢字(U+4E00~U+9FDF)内で表現される代表的なグリフを表示させた。

3 0020 00A0
16 002D 2010 2011 2012 -
66 005F 0332 _
67 0060 0300 `
97 02DC 0303 ˜
98 02BC 2019 ʼ
100 02BB 2018 ʻ
102 007E 223C ~
119 00B7 2219 ·
129 00B4 0301 ´
130 02C6 0302 ˆ
131 00AF 0304 ¯
134 00A8 0308 ¨
136 00B8 0327 ¸
140 0336 2014 ̶
153 00AD 2212 ­
228 0305 203E ̅
1561 2003 3000  
1567 FE13 FF1A ︓
1568 FE14 FF1B ︔
1569 FE16 FF1F ︖
1570 FE15 FF01 ︕
1593 301C FF5E 〜
2473 2F47 65E5 日
2474 2F24 5927 大
2475 5E74 F98E 年
2479 2F08 4EBA 人
2483 2F00 4E00 一
2486 2ED1 2FA7 9577 長
2487 2F8F 884C FA08 行
2488 2FA6 91D1 F90A 金
2493 2F83 81EA 自
2494 2F49 6708 月
2495 2F65 7530 田
2497 2F3F 624B 手
2500 2F92 898B FA0A 見
2503 2F63 751F 生
2504 2FBC 9AD8 高
2507 2F0A 5165 入
2509 2F45 65B9 方
2517 2F26 5B50 子
2523 2F2D 5C71 山
2524 2EA0 6C11 民
2527 2F74 7ACB F9F7 立
2529 2F12 529B F98A 力
2536 5EA6 FA01 度
2538 2F76 7C73 米
2543 2F6C 76EE 目
2549 2F29 5C0F 小
2550 7406 F9E4 理
2551 2F64 7528 用
2562 4E0D F967 不
2599 2EC4 897F 西
2600 5317 F963 北
2615 2F54 6C34 水
2617 5229 F9DD 利
2621 2F4A 6728 木
2628 7701 F96D 省
2633 2F94 8A00 言
2637 2F40 652F 支
2643 2F25 5973 F981 女
2659 2FB8 9996 首
2660 2F9E 8ECA F902 車
2673 2F3C 5FC3 心
2677 2F2F 5DE5 工
2680 2F06 4E8C 二
2685 2F52 6C0F 氏
2690 2F70 793A 示
2703 2FAF 9762 面
2716 5207 FA00 切
2720 2F1D 53E3 口
2726 2F95 8C37 谷
2727 2F42 6587 文
2734 6599 F9BE 料
2738 2F6F 77F3 石
2755 2F4C 6B62 止
2759 2F17 5341 十
2770 2F20 58EB 士
2779 8AD6 F941 論
2792 7387 F961 F9DB 率
2803 843D F918 落
2804 6D41 F9CA 流
2810 2F3E 6238 戸
2811 2F50 6BD4 比
2820 82E5 F974 若
2821 2F1F 571F 土
2828 2F9C 8DB3 足
2832 826F F97C 良
2862 2F9D 8EAB 身
2885 2FA8 9580 門
2899 2FB0 9769 革
2905 90CE F92C 郎
2907 5FF5 F9A3 念
2908 8DEF F937 路
2916 91CF F97E 量
2919 5B85 FA04 宅
2921 9818 F9B4 領
2923 2FB7 98DF 食
2926 5FA9 F966 復
2932 8449 F96E 葉
2939 4F8B F9B5 例
2941 8F2A F9D7 輪
2962 2ED8 9752 青
2972 2F69 767D 白
2973 2FBA 99AC 馬
2983 2F9A 8D64 赤
2996 2F0B 516B 八
3026 2F9B 8D70 走
3028 6797 F9F4 林
3033 8B58 F9FC 識
3036 7642 F9C1 療
3038 96E2 F9EA 離
3043 2F5F 7389 玉
3055 2FB5 98A8 風
3076 2FB6 98DB 飛
3083 964D FA09 降
3104 2FB3 97F3 音
3121 5948 F90C 奈
3126 2FAE 975E 非
3129 2FCA 9ED2 黒
3148 2F55 706B 火
3156 2FA5 91CC F9E9 里
3174 2F8A 8272 色
3182 7570 F962 異
3197 516D F9D1 六
3212 66F4 F901 更
3215 81E8 F9F6 臨
3220 6613 F9E0 易
3224 2FB9 9999 香
3231 2E9F 6BCD 母
3239 2FC5 9E7F F940 鹿
3245 2F7B 7FBD 羽
3246 9678 F9D3 陸
3251 2F4B 6B20 欠
3279 7559 F9CD 留
3284 2F75 7AF9 竹
3309 2FC3 9CE5 鳥
3311 2F57 7236 父
3318 4FBF F965 便
3335 83F1 F958 菱
3339 50DA F9BB 僚
3344 51B7 F92E 冷
3347 2F93 89D2 角
3348 5217 F99C 列
3354 66B4 FA06 暴
3358 2F30 5DF1 己
3360 2F7C 8001 F934 老
3365 4EE4 F9A8 令
3371 88CF F9E7 裏
3377 7565 F976 略
3381 4E86 F9BA 了
3383 2F8E 8840 血
3397 5F8B F9D8 律
3400 67F3 F9C9 柳
3421 9234 F9B1 鈴
3440 2F6E 77E2 矢
3450 2F5A 7247 片
3457 2FD3 9F8D F9C4 龍
3458 2FAC 96E8 雨
3509 523A F9FF 刺
3513 2F84 81F3 至
3522 6D6A F92A 浪
3532 2F23 5915 夕
3543 2FBB 9AA8 骨
3551 6ED1 F904 滑
3558 2F82 81E3 臣
3583 2F81 8089 肉
3604 7D22 F96A 索
3609 2EF2 4E80 亀
3612 2EEB 6589 斉
3615 2F5C 725B 牛
3616 8336 F9FE 茶
3627 2F51 6BDB 毛
3634 2F73 7A74 穴
3636 62D3 FA02 拓
3654 96A3 F9F1 隣
3658 2FC7 9EBB 麻
3677 2F32 5E72 干
3684 68A8 F9E2 梨
3691 6F0F F94E 漏
3698 2F90 8863 衣
3705 6817 F9DA 栗
3711 2F62 7518 甘
3714 2FC2 9B5A 魚
3715 502B F9D4 倫
3731 2EED 6B6F 歯
3734 7B20 F9F8 笠
3739 2F7F 8033 耳
3740 2F6A 76AE 皮
3741 88C2 F9A0 裂
3758 5D50 F921 嵐
3767 4E39 F95E 丹
3772 5375 F91C 卵
3775 6C88 F972 沈
3779 2F77 7CF8 糸
3780 2EEF 7ADC 竜
3784 9732 F938 露
3785 2EE9 9EC4 黄
3798 7CE7 F97B 糧
3810 2F6B 76BF 皿
3811 2FA9 961C 阜
3823 6012 F960 怒
3827 2F5D 72AC 犬
3830 5442 F980 呂
3833 96F7 F949 雷
3836 2F96 8C46 豆
3844 52A3 F99D 劣
3855 2F99 8C9D 貝
3856 2F88 821F 舟
3875 2F04 4E59 乙
3912 2F5E 7384 玄
3921 2F8D 866B 虫
3943 96F6 F9B2 零
3949 53E5 F906 句
3973 2FA0 8FB0 F971 辰
3981 6D1E FA05 洞
3985 674E F9E1 李
3986 5DBA F9AB 嶺
4013 2EE4 2FC1 9B3C 鬼
4019 2F11 5200 刀
4021 9675 F959 陵
4024 7D2F F94F 累
4028 2F1C 53C8 又
4032 2FD0 9F3B 鼻
4033 2F78 7F36 缶
4038 62FE F973 拾
4060 4EAE F977 亮
4063 70C8 F99F 烈
4065 2F28 5BF8 寸
4109 8AFE F95D 諾
4130 7DBE F957 綾
4131 2F38 5F13 弓
4132 2F6D 77DB 矛
4140 6CE5 F9E3 泥
4154 2EE8 9EA6 麦
4164 7C92 F9F9 粒
4174 5C65 F9DF 履
4183 2F7A 7F8A 羊
4190 2F9F 8F9B 辛
4200 7F85 F90F 羅
4216 2E92 5DF3 巳
4234 2EC1 864E 虎
4236 5C3F F9BD 尿
4262 2F43 6597 斗
4270 2F31 5DFE 巾
4283 2F85 81FC 臼
4324 2FCE 9F13 鼓
4337 2F86 820C 舌
4346 9E97 F988 麗
4362 2FA2 9091 邑
4382 2F87 821B 舛
4384 2F61 74E6 瓦
4418 2F56 722A 爪
4420 88F8 F912 裸
4422 4E32 F905 串
4429 72FC F92B 狼
4442 2FB4 9801 頁
4447 5BEE F9BC 寮
4449 6881 F97A 梁
4462 533F F9EB 匿
4471 2F60 74DC 瓜
4475 7409 F9CC 琉
4492 6CCC F968 泌
4504 5289 F9C7 劉
4505 6E9C F9CB 溜
4540 786B F9CE 硫
4549 7A1C F956 稜
4571 9B6F F939 魯
4573 9DFA F93A 鷺
4647 6D1B F915 洛
4648 85CD F923 藍
4701 7D10 F9CF 紐
4704 75E2 F9E5 痢
4715 6DCB F9F5 淋
4747 585E F96C 塞
4776 2FCD 9F0E 鼎
4813 2F18 535C 卜
4824 96B7 F9B8 隷
4836 88E1 F9E8 裡
4852 73B2 F9AD 玲
4853 54BD F99E 咽
4861 916A F919 酪
4919 2FCF 9F20 鼠
4926 9E9F F9F3 麟
4927 806F F997 聯
4944 2F66 758B 疋
4971 51CC F955 凌
5031 540F F9DE 吏
5032 5F04 F943 弄
5045 2F7D 800C 而
5102 6190 F98F 憐
5132 2FA3 9149 酉
5139 8AD2 F97D 諒
5142 5ED3 FA0B 廓
5163 637B F9A4 捻
5170 9C57 F9F2 鱗
5213 71D0 F9EE 燐
5215 6AD3 F931 櫓
5243 2F72 79BE 禾
5267 87BA F911 螺
5268 7262 F946 牢
5280 2F89 826E 艮
5292 601C F9AC 怜
5317 2FA4 91C6 釆
5346 649A F991 撚
5351 6FEB F922 濫
5352 808B F953 肋
5357 2FC9 9ECD 黍
5358 2F44 65A4 斤
5373 8CC2 F948 賂
5399 4EC0 F9FD 什
5408 63A0 F975 掠
5423 807E F945 聾
5443 2F02 4E36 丶
5445 2F03 4E3F 丿
5449 4E82 F91B 亂
5450 2F05 4E85 亅
5458 2F07 4EA0 亠
5489 4F86 F92D 來
5556 2F09 513F 儿
5557 2E8E 5140 FA0C 兀
5563 5169 F978 兩
5567 2F0C 5182 冂
5575 2F0D 5196 冖
5581 2F0E 51AB 冫
5589 51C9 F979 凉
5591 2F0F 51E0 几
5596 2F10 51F5 凵
5634 52DE F92F 勞
5640 52F5 F97F 勵
5642 2F13 52F9 勹
5649 2F14 5315 匕
5650 2F15 531A 匚
5655 2F16 5338 匸
5664 2F19 5369 卩
5669 2F1A 5382 厂
5676 2F1B 53B6 厶
5677 53C3 F96B 參
5696 541D F9ED 吝
5760 5587 F90B 喇
5807 2F1E 56D7 囗
5809 56F9 F9A9 囹
5875 58D8 F94A 壘
5879 58DF F942 壟
5886 2F21 5902 夂
5887 2F22 590A 夊
5970 2F27 5B80 宀
5994 2E90 2F2A 5C22 尢
5996 2F2B 5C38 尸
6006 2F2C 5C6E 屮
6039 5D19 F9D5 崙
6064 2F2E 5DDB 巛
6087 2E93 2F33 5E7A 幺
6089 2F34 5E7F 广
6105 5EEC F982 廬
6109 2F35 5EF4 廴
6111 2F36 5EFE 廾
6116 2F37 5F0B 弋
6127 2E94 5F51 彑
6131 2F3A 5F61 彡
6133 2F3B 5F73 彳
6197 60E1 F9B9 惡
6232 6144 F9D9 慄
6266 7F79 F9E6 罹
6270 61F6 F90D 懶
6277 6200 F990 戀
6278 2F3D 6208 戈
6287 622E F9D2 戮
6311 62CF F95B 拏
6322 62C9 F925 拉
6406 2F41 6534 攴
6407 2E99 6535 攵
6420 6578 F969 數
6436 2F46 65E0 无
6437 2E9B 65E1 旡
6461 6688 F9C5 暈
6480 2F48 66F0 曰
6624 6A02 F914 F95C F9BF 樂
6641 6A13 F94C 樓
6697 2F4D 6B79 歹
6712 2F4E 6BB3 殳
6716 2F4F 6BCB 毋
6726 2F53 6C14 气
6798 6DEA F9D6 淪
6888 6FFE F984 濾
6900 7099 F9FB 炙
6911 70D9 F916 烙
6936 71CE F9C0 燎
6945 7210 F932 爐
6946 721B F91E 爛
6952 2F58 723B 爻
6954 2F59 723F 爿
6999 7375 F9A7 獵
7009 73DE F917 珞
7023 7469 F9AE 瑩
7125 7669 F90E 癩
7131 2F68 7676 癶
7155 76E7 F933 盧
7203 792A F985 礪
7210 788C F93B 碌
7222 78CA F947 磊
7242 797F F93C 祿
7248 79AE F9B6 禮
7355 7C60 F944 籠
7474 7E37 F950 縷
7511 2F79 7F51 网
7530 7F9A F9AF 羚
7553 2F7E 8012 耒
7562 8046 F9B0 聆
7575 2F80 807F 聿
7635 81D8 F926 臘
7670 2F8B 8278 艸
7783 84FC F9C2 蓼
7821 85FA F9F0 藺
7822 8606 F935 蘆
7826 863F F910 蘿
7827 2F8C 864D 虍
7977 8964 F924 襤
7983 2F91 897E 襾
8075 8B80 F95A 讀
8086 8C48 F900 豈
8090 2F97 8C55 豕
8093 2F98 8C78 豸
8112 8CC8 F903 賈
8214 8F26 F998 輦
8216 8F3B FA07 輻
8227 8F62 F98D 轢
8279 908F F913 邏
8309 91B4 F9B7 醴
8418 95AD F986 閭
8437 962E F9C6 阮
8461 2FAA 96B6 隶
8463 2FAB 96B9 隹
8490 9748 F9B3 靈
8498 52D2 F952 勒
8519 2FB1 97CB 韋
8521 2FB2 97ED 韭
8588 99F1 F91A 駱
8614 9A6A F987 驪
8624 2FBD 9ADF 髟
8641 2FBE 9B25 鬥
8647 2FBF 9B2F 鬯
8648 2FC0 9B32 鬲
8761 9E1E F920 鸞
8762 2FC4 9E75 鹵
8773 2FC6 9EA5 麥
8780 9ECE F989 黎
8794 2FCB 9EF9 黹
8797 2FCC 9EFD 黽
8805 2FD1 9F4A 齊
8806 2FD2 9F52 齒
8820 2FD4 9F9C 龜
8821 2FD5 9FA0 龠
9013 6ADB 2F8ED 櫛
9041 5C62 F94B 屢
9043 6753 2F8DC 杓
9098 6EBA F9EC 溺
9102 5C60 2F877 屠
9157 6F23 F992 漣
9158 7149 F993 煉
9161 881F F927 蠟
9165 51A4 2F818 冤
9234 F907 F908 龜
9313 2F5B 7259 ⽛
9632 51DC F954 凜
9719 2F01 4E28 ⼁
9910 7489 F994 璉
9942 7DA0 F93D 綠
10043 2FAD 9751 ⾭
13063 239C 239F 23A2 23A5 23AA ⎜
14219 2FC8 9EC3 ⿈
14251 72C0 F9FA 狀
14291 6DDA F94D 淚
14293 66C6 F98B 曆
14294 6B77 F98C 歷
14295 F996 FA57 練
14296 934A F99B 鍊
14298 9304 F93F 錄
14542 2EBD 26951 ⺽
14744 2EDF 98E0 ⻟
14745 2EDE 2967F ⻞
14748 2E97 38FA ⺗
14752 2E85 4EBB ⺅
14766 2EC3 8980 ⻃
14776 8AAA F96F F9A1 說
14794 2ECA 27FB7 ⻊
14867 F95F F9AA 寧
14891 2EAA 24D14 ⺪
14995 2EB9 8002 ⺹
15001 2E87 20628 ⺇
15006 2E8B 353E ⺋
15036 233CC 2F8DB 𣏌
15053 2EA6 4E2C ⺦
15093 2EBE 8279 ⺾
15094 2EBF FA5E ⺿
15095 2EC0 FA5D ⻀
15201 2E83 4E5A ⺃
15252 2E89 5202 ⺉
15372 2E8F 5C23 ⺏
15417 2F39 5F50 ⼹
15426 2E96 5FC4 ⺖
15457 2E98 624C ⺘
15515 677B F9C8 杻
15585 2EA1 6C35 ⺡
15586 2EA2 6C3A ⺢
15645 2EA3 706C ⺣
15676 2EA8 72AD ⺨
15729 7498 F9EF 璘
15744 2F67 7592 ⽧
15798 78FB F964 磻
15801 2EAD 793B ⺭
15809 2F71 79B8 ⽱
15811 79CA F995 秊
15895 2EAB 2EB2 7F52 ⺫
16010 2EC2 8864 ⻂
16079 2FA1 8FB5 ⾡
16080 2ECD 8FB6 ⻍
16151 2ED2 9578 ⻒
16158 2ECF 2ED6 961D ⻏
16294 2EA4 FA49 ⺤
16299 2ECC FA66 ⻌
17242 64C4 F930 擄
18257 2E9E 6B7A ⺞
18260 6BAE F9A5 殮
18863 83C9 F93E 菉
19435 29FCE 29FD7 𩿎

他のフォントファイルを同様に調べてみると、游明朝(yumin.ttf)、游ゴシック(YuGoth?.ttc)、微軟正黑體(msjh.ttc)でも同様の重複が認められた。
欧文フォントではtahoma.ttf, segmdl2.ttf, micross.ttf等で複数のコードポイントから参照されるグリフが見られた。

文中の一覧を作成する為に書いたPerlスクリプト:
最初のループはフォント内のcmapテーブルをU+0000~U+2FFFF間で走査してヒットしたグリフインデックスをキーに連想配列で引かれた配列に突っ込む。
2番目のループで配列要素が0を超える(つまり配列要素が2個以上…複数のコードポイントから参照されている)ものを抽出して表示する。
"__DATA__"以下に適当なフォント名を追加する際は表示部でcp932用に設定してる閾値2000/9000を調整要。

use strict;
use warnings;
use Font::TTF::Font;
use Font::TTF::Ttc;
use Encode;
 
foreach my $font (<DATA>){
  chomp($font);
  my $f=Font::TTF::Ttc->open("c:\\windows\\fonts\\$font")->{'directs'}[0];
  print "***$font\n";
  my %codepoint;
  foreach my $cp (0x0..0x2ffff){
    my $gid=$f->{'cmap'}->ms_lookup($cp);
    push(@{$codepoint{$gid}}, $cp) if $gid;# && !grep{$cp}@{$codepoint{$gid}};
  }
 
  foreach my $gid (sort{$a <=> $b}grep{$#{$codepoint{$_}}>0}keys %codepoint){
    my @cp = map{sprintf("%04X", $codepoint{$gid}->[$_])}0..$#{$codepoint{$gid}};
    print "$gid\t";
    print join "\t", @cp;
    print "\t", encode('cp932', pack("U*", grep{0x2FFF < $_ && $_ < 0xF000}map{hex($_)}@cp)) if $gid > 2000 && $gid < 9000;
    print "\t", '&#x', shift @cp, ';' if $gid < 2000 || $gid >= 9000;
    print "\n";
  }
}
 
__DATA__
meiryo.ttc

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常

読み込み中...