初歩のシェルスクリプトで遊ぶ[ぬかみそフォントの制作サポート(2)]
CIDが異なる文字を抜き出したテキストファイルを作る
OpenTypeのProフォントとPr6Nフォントは文字数から違うわけですが、このうち
- どっちにも入っている文字で
- ひとつのUnicodeから、それぞれ別のCID番号にコピーされる
こういう文字を、昨日作ったものから抜き出します。
基本資料になるテキストファイルを定める
昨日つくったテキストファイルのうち、最後に作ったファイル、
$ cat ./join1-7_1-4.csv | ./ttedit_20210306.sh 32 0020 1 1 33 0021 2 2 ! 34 0022 3 3 " 35 0023 4 4 # 36 0024 5 5 $ 37 0025 6 6 % 38 0026 7 7 & 39 0027 8 8 ' 40 0028 9 9 ( 41 0029 10 10 )
サンプル文字を追加して、空のCIDに「0」を埋めたもの。これを基本資料とします。
「OTEdit12-8_Uni_Pr6N_Pro_Char.csv」
で保存。
差分抽出と、ついでにミスがないか確認もする
さらに昨日、途中で寄り道して作っておいた、ProとPr6Nでコピーする先のCIDが異なるもののみのリスト。
$ diff ./join1-7_1-4.csv ./join1-4_1-7.csv | grep -e '^<' | cut -f 2- -d ' ' 2225 15489 666 2F5B 7965 1383 5026 7674 1863 50C5 7662 1735 5132 7798 3813 514E 13949 3136 51A4 7817 4228 51DE 20300 14352 5307 20301 8404 537F 7661 1698 53A9 20271 1243 53C9 20281 2085 53DB 7978 3412
この出力も、昨日のスクリプトで、そのまま処理できる出力形式なので、整形します。
$ diff ./join1-7_1-4.csv ./join1-4_1-7.csv | grep -e '^<' | cut -f 2- -d ' ' | ./ttedit_20210306.sh 8741 2225 15489 666 ∥ 12123 2F5B 7965 1383 ⽛ 20518 5026 7674 1863 倦 20677 50C5 7662 1735 僅 20786 5132 7798 3813 儲 20814 514E 13949 3136 兎 20900 51A4 7817 4228 冤 20958 51DE 20300 14352 凞 21255 5307 20301 8404 匇 21375 537F 7661 1698 卿
$ diff ./join1-7_1-4.csv ./join1-4_1-7.csv | grep -e '^<' | cut -f 2- -d ' ' | ./ttedit_20210306.sh 1>OTEdit12-8_Uni_Pr6N_Pro_Char_fromDiff.csv
「fromDiff」で保存。
次に、先ほどの基本資料。全文字のサンプル文字つきリスト、「OTEdit12-8_Uni_Pr6N_Pro_Char.csv」。
この基本資料からも、差分を抽出してみる。
Proフォントに含まれない文字、(CID90の列が「0」)であり、なおかつ、ProフォントとPr6Nフォントとで、異なる数字のCIDになっている行、のみを抜き出せばいい。
#!/bin/sh # =============================================================================== # ■ CID90とCID2004の差分行を抽出する_ttedit_20210307_01.sh # # あるUnicode_TrueTypeフォントからCID_OpenTypeFontにコピーするとき、 # コピー先がJIS90のPro(1-4)フォントとJIS2004のPr6N(1-7)フォントとで、 # 異なるCIDにコピーする行を抽出する。 # # CID1-4に含まれない文字は除外する。(CIDが「0」で埋められている行) # # ・input # unicode(DEC) unicode(HEX) CID2004 CID90 文字 # # # 空のCID90には、0が入っている必要がある # # =============================================================================== awk '{ # もしCID90の列が0ではなく、 # さらにCID2004とCID90が違う数字ならば、行を丸ごと出力する if( $4 != "0" && $3 != $4 ){ print $0 } }'
cat ./OTEdit12-8_Uni_Pr6N_Pro_Char.csv | ./ttedit_20210307_01.sh 8741 2225 15489 666 ∥ 12123 2F5B 7965 1383 ⽛ 20518 5026 7674 1863 倦 20677 50C5 7662 1735 僅 20786 5132 7798 3813 儲 20814 514E 13949 3136 兎 20900 51A4 7817 4228 冤 20958 51DE 20300 14352 凞 21255 5307 20301 8404 匇 21375 537F 7661 1698 卿
良いようなので、保存。
$ cat ./OTEdit12-8_Uni_Pr6N_Pro_Char.csv | ./ttedit_20210307_01.sh 1>OTEdit12-8_Uni_Pr6N_Pro_Char_fromAwk.csv
- まとめた資料から抜き出した「OTEdit12-8_Uni_Pr6N_Pro_Char_fromAwk.csv」
- 横道に逸れて作っておいた「OTEdit12-8_Uni_Pr6N_Pro_Char_fromDiff.csv」
このふたつのファイルは、バイナリのレベルで同じファイルになるはず。
$ md5sum OTEdit12-8_* 05b49e0afc5afb83ffee397233ed829d OTEdit12-8_Uni_Pr6N_Pro_Char.csv ce4ee1eb29a3570c25e7ec6710642888 OTEdit12-8_Uni_Pr6N_Pro_Char_fromAwk.csv ce4ee1eb29a3570c25e7ec6710642888 OTEdit12-8_Uni_Pr6N_Pro_Char_fromDiff.csv
いけました。
相違文字の表_189文字分
8741 2225 15489 666 ∥ 12123 2F5B 7965 1383 ⽛ 20518 5026 7674 1863 倦 20677 50C5 7662 1735 僅 20786 5132 7798 3813 儲 20814 514E 13949 3136 兎 20900 51A4 7817 4228 冤 20958 51DE 20300 14352 凞 21255 5307 20301 8404 匇 21375 537F 7661 1698 卿 21417 53A9 20271 1243 厩 21449 53C9 20281 2085 叉 21467 53DB 7978 3412 叛 21471 53DF 14111 4332 叟 21676 54AC 20277 4368 咬 21736 54E8 7703 2445 哨 21857 5561 20308 14393 啡 21936 55B0 7664 1772 喰 22066 5632 7821 4433 嘲 22082 5642 7642 1247 噂 22092 564C 7721 2747 噌 22208 56C0 14116 4454 囀 22581 5835 7753 3138 堵 23081 5A29 7791 3626 娩 23532 5BEC 20302 8436 寬 23633 5C51 7666 1781 屑 23648 5C60 7754 3141 屠 24055 5DF7 7679 1981 巷 24214 5E96 7792 3657 庖 24287 5EDF 7786 3506 廟 24315 5EFB 13673 1398 廻 24472 5F98 13538 4796 徘 24509 5FBD 7658 1605 徽 24674 6062 20269 1402 恢 24734 609E 21558 14541 悞 24840 6108 7802 3848 愈 25153 6241 7991 4943 扁 25402 633A 20286 3086 挺 25405 633D 7778 3432 挽 25431 6357 7743 3033 捗 25458 6372 7676 1876 捲 25539 63C3 7975 2839 揃 25711 646F 20264 5020 摯 25722 647A 7713 2630 摺 25776 64B0 7716 2709 撰 25826 64E2 7749 3105 擢 26023 65A7 20289 3538 斧 26142 661E 20304 8476 昞 26214 6666 7650 1408 晦 26231 6677 16889 14609 晷 26451 6753 7695 2313 杓 26454 6756 20282 2523 杖 26775 6897 20279 1998 梗 26978 6962 7768 3266 楢 26991 696F 13460 2407 楯 27018 698A 7686 2135 榊 27028 6994 7812 4055 榔 27084 69CC 7744 3044 槌 27147 6A0B 7780 3465 樋 27197 6A3D 7738 2924 樽 27355 6ADB 7665 1779 櫛 27470 6B4E 13915 2933 歎 27762 6C72 7966 1660 汲 28139 6DEB 7637 1216 淫 28322 6EA2 7635 1202 溢 28346 6EBA 7750 3112 溺 28451 6F23 7809 4034 漣 28693 7015 7787 3520 瀕 28702 701E 7761 3244 瀞 28710 7026 7741 2995 瀦 28746 704A 20306 14744 灊 28760 7058 7767 3263 灘 28792 7078 20270 1662 灸 28796 707C 7696 2314 灼 29001 7149 7810 4035 煉 29006 714E 7718 2717 煎 29010 7152 21933 14762 煒 29053 717D 7972 2718 煽 29242 723A 20294 3832 爺 29260 724C 7771 3341 牌 29273 7259 7965 1383 牙 29409 72E1 20278 5629 狡 29495 7337 14074 3868 猷 29794 7462 16977 8561 瑢 29969 7511 20284 2059 甑 29973 7515 20267 5704 甕 29990 7526 20283 5707 甦 30140 75BC 20175 5741 疼 30629 77A5 7790 3613 瞥 31028 7934 17014 14904 礴 31041 7941 7668 1805 祁 31047 7947 7659 1626 祇 31152 79B0 7769 3295 禰 31204 79E4 7773 3359 秤 31255 7A17 7782 3477 稗 31328 7A60 20310 14926 穠 31359 7A7F 7973 2720 穿 31432 7AC8 20285 5937 竈 31496 7B08 20263 1666 笈 31605 7B75 20266 5976 筵 31661 7BAD 7974 2721 箭 31672 7BB8 7775 3384 箸 31687 7BC7 7979 3619 篇 31709 7BDD 7997 6001 篝 31806 7C3E 20265 4036 簾 31870 7C7E 20293 3822 籾 31874 7C82 20272 1791 粂 32092 7D5C 17041 8592 絜 32747 7FEB 7657 1569 翫 32752 7FF0 7656 1545 翰 33137 8171 20275 6258 腱 33151 817F 7728 2876 腿 33368 8258 14196 6310 艘 33426 8292 20292 6325 芒 33446 82A6 7961 1142 芦 33576 8328 7962 1205 茨 33883 845B 7652 1481 葛 34028 84EC 7794 3671 蓬 34065 8511 14013 3614 蔑 34109 853D 7789 3603 蔽 34217 85A9 7688 2165 薩 34223 85AF 7701 2428 薯 34295 85F7 7702 2429 藷 34388 8654 20274 6481 虔 34552 86F8 7733 2909 蛸 34563 8703 20296 6510 蜃 34645 8755 7709 2544 蝕 34819 8803 20312 15107 蠃 34821 8805 20295 6537 蠅 35158 8956 7645 1320 襖 35338 8A0A 13860 2588 訊 35357 8A1D 20268 6662 訝 35387 8A3B 7740 2990 註 35438 8A6E 7720 2729 詮 35513 8AB9 13495 3460 誹 35578 8AFA 7678 1909 諺 35598 8B0E 7766 3262 謎 35628 8B2C 7785 3495 謬 35711 8B7F 21074 8625 譿 35961 8C79 20222 3505 豹 36077 8CED 7756 3148 賭 36795 8FBB 8267 3056 辻 36799 8FBF 7735 2919 辿 36802 8FC2 7638 1228 迂 36804 8FC4 7980 3750 迄 36806 8FC6 18759 15185 迆 36838 8FE6 7647 1376 迦 36887 9017 7711 2598 逗 36889 9019 7772 3357 這 36898 9022 8266 1133 逢 36924 903C 7783 3489 逼 36929 9041 20287 3251 遁 36956 905C 7726 2845 遜 36961 9061 7722 2766 遡 37165 912D 7748 3100 鄭 37195 914B 7698 2368 酋 37340 91DC 20290 1494 釜 37638 9306 7690 2170 錆 37733 9365 17168 15238 鍥 37749 9375 20276 1892 鍵 37786 939A 7745 3046 鎚 37971 9453 7801 3846 鑓 38315 95AB 20313 15258 閫 38553 9699 20273 1850 隙 38741 9755 20314 8696 靕 38769 9771 13624 7152 靱 38788 9784 7653 1489 鞄 38808 9798 7708 2508 鞘 38829 97AD 20291 3628 鞭 39156 98F4 7634 1151 飴 39173 9905 7799 3819 餅 39180 990C 13650 1252 餌 39184 9910 7970 2191 餐 39255 9957 7968 1722 饗 39361 99C1 20288 3379 駁 39449 9A19 8003 7248 騙 39498 9A4A 22920 15319 驊 39725 9B2D 17205 13372 鬭 39851 9BAB 20280 2171 鮫 39894 9BD6 7689 2168 鯖 39983 9C2F 7636 1207 鰯 40018 9C52 7796 3742 鱒 40201 9D09 14272 7362 鴉 40288 9D60 7683 2054 鵠 63785 F929 20305 8489 朗 64021 FA15 20307 8542 凞 64032 FA20 21073 8612 蘒 64036 FA24 18760 8632 﨤 64064 FA40 21072 13369 懲
「36795 8FBB 8267 3056 辻」と、なってますね。
行数、つまり相違文字数は、189文字でした。
もう一段階、絞り込んだほうがいいかな。
上に表示されてるcsvの表を、ブラウザ上から選択、コピーして、テキストファイルを作っても、バイナリレベルで同じファイルを作れることも確認しました。
Unicode文字の使えるテキストエディタで、改行コードをLFで保存する必要がありますが。