安達です。 LibreOficeでは"IPA P明朝"や"IPA Pゴシック"も "䥐䅐䵩湣桯"や"䥐䅐䝯瑨楣"に替わってしまって使えません。 YOzフォントの日本語名の文字化けからスタートしましたが 結構広範囲に影響が及んでいます。 原因はfontconfigだと思いますが、あまり問題にされて いないようなので、修正されることは、あきらめて、 フォントの「nameオフセットテーブル」を書き換えました。 なんとか使えるようになりましたので報告いたします。 フォントの「nameオフセットテーブル」の書き方にもよりますが、 たった1バイトを変更するだけで多分大丈夫。 将来fontconfigが修正されてもそのまま使い続けられるのでは ないかと思います。 調べた環境は、Debian13で、fontconfig の version は 2.15.0-2.3 です。
ttfファイルのNameRecordに、「nameオフセットテーブル」が あります。 platformID, encodingID, languageID, nameID, length, stringOffset が並んで「nameオフセットテーブル」が作られています。 いろいろな OS、文字コード、言語 に合わせたフォント名を提供する ための仕組みですが、各メーカーの考え方、歴史もあり、複雑です。 MacintoshならplatformID=01のところを読み(今のmacが どうしているかは知らない)、WindowsならplatformID=03のところを 読めばいいのですが、Linuxのソフトであるfontconfigは両方を 読むらしいのです。 どちらか一方しか書いていないかもしれないのでこれは当然の仕様です。 問題は、macとwinで異なる名前になっていたらどちらを採用するかです。 フォント作成者は多分合わせますから問題にならないのでしょうが 今回は間違えて読めてしまった化けた名前を判別できないという困難に 陥っています。もちろん主因は「間違えた」ことです。 普通、mac用の日本語名を指定するときには、 platformID, encodingID, languageID, として 0001 (mac), 0001 (ja), 000b (ja) とします。 ここで 0001 は shift_jis でエンコードされていることを意味します。 windowの場合の普通は(最近は かな?) platformID, encodingID, languageID, として 0003 (win), 0001 (uni), 0411 (ja) とします。 ここでの0001は utf-16 でエンコードされていることを意味します。 encodingIDとlanguageIDはplatformIDにより意味が代わりますが、 同じ0001だから utf-16 にしてしまったと疑いたくなります。 フォントの中には 0001, 0000, 0411 という指定をしてあるものもありました。 macには0411はありませんので、windows用のものを間違って使ったのでしょう
nameID は01:Font Family name, 03:Unique font identifier, 04:Full font name, 06:PostScript name などたくさん有りますが 化けて問題になるのは経験的に01です。つまり platformID, encodingID, languageID, nameID 0001 (mac), 0001 (ja), 000b (ja) 01 (family) これを間違ってutf-16でデコードすることで問題がおきます。 これがなくても、大抵はwin用のものがあってそれが使われますし、 なくても、macの英語名かwinの英語名は必ずあるのでこれが使われます。 そしてこれを無きものにするには、nameID 01(family)を あまり使われていない無害なIDに代えてしまうのが簡単です。 必要なら設定するというものは、いくつかありますが 0a (Description), 13(Sample text) のどちらかがいいでしょう nameIDも2バイトなので正確には 000a, 0013 ですが、 現状は10進で25までしか使われていないので、解説の多くが 0-9までを注釈無しで使い、10から25は10進2桁で説明しています。 000a, 0013 は、10, 19 です。 19 Sample text; This can be the font name, or any other text that the designer thinks is the best sample to display the font in. とあったので、私は 0013 にしました。 調べた環境は、Debian13で、fontconfig の version は 2.15.0-2.3 です。
詳しくは https://dabiyone.com/system/a13bantrix10.html に書きました。 また、 0001 (mac), 0001 (ja), 000b (ja) 01 (family)の nameIDでなく、offsetの方を変更する方法も試しました。 うまく行きます。それはこちら。 https://dabiyone.com/system/a13bantrix09.html
私はワープロなどの作業はほとんどしません。 文字のデザインを気にするようなことはウェブページまで なので、副作用などについて気が付かないかもしれません。 なにかありましたらお教えいただけると幸いです。