指定された名前のフォント フェイスの TTF を検索する Java プログラムを作成しようとしています。たとえば、Windows マシンで「Times New Roman」と入力すると、「C:\Windows\Fonts\times.ttf」というパスが返されます。
他のほとんどのフォント フェース名は、TTF ファイルの名前で同様の方法で省略されます。フォント フェース名を対応する TTF ファイル名に予想どおりにマップするために使用できる標準はどこかにありますか?
フォントの名前はフォント ファイルの内容の中で定義されるので、フォント ファイル自体の名前と関係があるべきではないことに注意してください。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
Windows XP では、永続的にインストールされたシステム フォントがすべてレジストリ キーに一覧表示されます。このフォント ファイルのリストを列挙し、それぞれを順番に開きます。それが ttf の場合は、checkSumAdjustment
そのhead
テーブルから取得できます。項目のリストを作成します。各項目には、フォント ファイル名とチェックサム値のペアの値が含まれます。
後でフォントに気づいたら、それを呼び出して表GetFontData
を読み、そのフォントhead
の を見つけますcheckSumAdjustment
。次に、以前に作成したリストで検索します。