昨日の記事で書いたように、TrueType/OpenType フォントの全てのグリフには一意のグリフ ID(GID)が付いていて、(ソフトウェアによっては)GID でグリフを呼び出すことが可能である。しかし、Unicode 等の公開の文字コードと異なり、各 GID がどういう文字(のグリフ)に対応するかは完全にフォントに依存していて何の必然性もない。*1従って、一般的には、同じフォントの異なるバージョンの間でも GID の互換性があるとは限らない。(u)pTeX + dvipdfmx では GID 指定によるグリフ指定を用いることができる(昨日の記事で実際に行った)が、これを利用したパッケージを作成・公開する場合には、ここで述べた「バージョンへの依存」に注意する必要がある。
「IPAmj明朝」は今月(2012 年 6 月)の 18 日に新版(ver002.01)が公開されたばかりだが、旧版(ver001.01)との間で GID の(後方)互換性はあるだろうか。このフォントでは、グリフ名がグリフの種類を表している。従って、ちょうど昨日の記事でやったように、「GID とグリフ名」の対応の変化を調べればよい。この対応関係を出力するプログラムを公開しておく。(もちろん昨日の記事を書く時にも使った。)
- gnamelist.pl (gist/zr-tex8r)
※ 「GID」(0 からの連番)と「グリフ名」のカラムをもつ TSV ファイルを出力する。
※ グリフ名インデクスが 32767 を超える場合の解釈は「IPAmj明朝」のものに従っている。即ち、258〜32767 の場合と同じ方法を使う。
ipamjm.ttf の Ver001.01 と 002.01 の両方について、対応のリストを出力し、両者の diff をとると以下のようになった。
--- ipamjm_1_1.txt Sat Jun 23 21:17:48 2012 +++ ipamjm_2_1.txt Sat Jun 23 21:15:32 2012 @@ -60716,3 +60716,104 @@ 60715 mj060383 60716 mj060384 60717 mj060385 +60718 mj067952 +60719 mj067953 +60720 mj067954 +60721 mj067955 +60722 mj067956 +60723 mj067957 +60724 mj067958 +60725 mj067959 +60726 mj067960 +60727 mj067961 +60728 mj067962 +60729 mj067963 +60730 mj067964 +60731 mj067965 +60732 mj067966 +60733 mj067967 +60734 mj067968 +60735 mj067969 +60736 mj067970 +60737 mj067971 +60738 mj067972 +60739 mj067973 +60740 mj067974 +60741 mj067975 +60742 mj067976 +60743 mj067977 +60744 mj067978 +60745 mj067979 +60746 mj067980 +60747 mj067981 +60748 mj067982 +60749 mj067983 +60750 mj067984 +60751 mj067985 +60752 mj067986 +60753 mj067987 +60754 mj067988 +60755 mj067989 +60756 mj067990 +60757 mj067991 +60758 mj067992 +60759 mj067993 +60760 mj067994 +60761 mj067995 +60762 mj067996 +60763 mj067997 +60764 mj067998 +60765 mj067999 +60766 mj068000 +60767 mj068001 +60768 mj068002 +60769 mj068003 +60770 mj068004 +60771 mj068005 +60772 mj068006 +60773 mj068007 +60774 mj068008 +60775 mj068009 +60776 mj068010 +60777 mj068011 +60778 mj068012 +60779 mj068013 +60780 mj068014 +60781 mj068015 +60782 mj068016 +60783 mj068017 +60784 mj068018 +60785 mj068019 +60786 mj068020 +60787 mj068021 +60788 mj068022 +60789 mj068023 +60790 mj068024 +60791 mj068025 +60792 mj068026 +60793 mj068027 +60794 mj068028 +60795 mj068029 +60796 mj068030 +60797 mj068031 +60798 mj068032 +60799 mj068033 +60800 mj068034 +60801 mj068035 +60802 mj068036 +60803 mj068037 +60804 mj068038 +60805 mj068039 +60806 mj068040 +60807 mj068041 +60808 mj068042 +60809 mj068043 +60810 mj068044 +60811 mj068045 +60812 mj068046 +60813 mj068047 +60814 mj068048 +60815 mj068049 +60816 mj068050 +60817 mj068051 +60818 mj068052
これを見ると、追加のみが存在していることが判る。つまり、「IPAmj明朝」での GID アクセスは後方互換性がある。
同様の調査を「IPAexフォント」(明朝・ゴシック)についても行ったが、これらについても GID の互換性が保たれている(つまり GID は改版後も「同じ」グリフを指す)ことが判った。