マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

IPAmj明朝の改版で GID はどうなった

昨日の記事で書いたように、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 は改版後も「同じ」グリフを指す)ことが判った。

*1:これの例外となるのが、Adobe-Japan1 等の「CID アクセス対応の OpenFont」である。この場合、該当の CID がそのまま GID となっている。