ttfのフォーマットを少し勉強して調べています 中間報告です。 file コマンドでフォントファイルを調べると最後に name offset 0x98c26c と出てきますが、ここにnameテーブルがあります。 このテーブルには platformID, encodingID, languageID, nameID, length, offset と6項目が各2バイトでならび、それが繰り返します。 最初の3項目はほぼ、次の組み合わせのどれかです。 Mac, Roman, English Mac, Japanese, Japanese Win, UnicodeBMP,English Win, UnicodeBMP,Japanese nameIDはファミリー名, 一意の識別子, フルネーム, バージョン, 著作権 などの項目で、 length, offset でどこに記述されて長さがどれだけか がわかります。 length, offsetを同じにして、ファミリー名も一意の識別子も フルネームも同じにする例もあります。 問題は文字列のencodingですが、 Mac, Romanは ASCIIですが、Mac, Japanese は はっきりした記述がみつからない。時代的にはShift_JISだろうと 思います。UnicodeBMPは2バイトのみのunicodeです。 実際に見たフォントはすべて Mac, Japanese と指定したも 所にASCIIで書かれています。Shift_JIS は英数部分はASCIIです から見分けは付きません。どちらにしても、記述は間違っていない。 文字化けは、このASCII部分をUnicodeBMPで解釈することで 起こっています。 日本語の文字コードの解釈で問題が起こるのではなく 「ASCIIで書いておけば問題ないでしょ」と思っていたところで 化けているというのが意外です。 ということなので原因は書いた側ではなく読む側です。 Shift_JIS(あるいはASCII)で書かれたところもUnicodeBMPで読む という乱暴なことをしています。 Win, UnicodeBMP,Japanese でも書いてあるのに Mac, Japanese, Japanese をUnicodeBMPで読むのか?
fc-listコマンドを覚えましたら、 YOzBS_90i.ttf: 奏穓㤰扩,YOzS90bi:style=䉯汤,Bold だけでなく ipagp.ttf: IPA Pゴシック,IPAPGothic,䥐䅐䝯瑨楣:style=Regular も化けます。 kouzan-mouhitsu-gyosho.ttf: 衡山毛筆フォント行書,KouzanBrushFontGyousyo,䭯畺慮䉲畳框潮瑇祯畳祯:style=Regular も化けます。 複数の名前を読むときに、どこを読んでいるのか 今のところ解明できていません。