フォント TrueType 構造解析 新しいページはコチラ
提供: yonewiki
(→■Format4) |
(→cmap) |
||
2,524行: | 2,524行: | ||
+ | |||
+ | ==== fpgm ==== | ||
+ | Font '''p'''ro'''g'''ra'''m'''の略です。中身はヘッダ定義された位置から、その長さまでが1バイトで表されたフォントプログラム命令(TrueType命令とかOpenType命令というワードで検索すると対象の文献にたどり着ける)。 | ||
+ | |||
+ | |||
+ | 工夫をすればわりといろいろなことが出来るプログラムですが、基本的にはフォントの形を微調整するのに使われることが多いです。極端な話これでフォントが使われている環境次第で動作を大きく変えるようなフォントを作ることで、その環境を調べることもできます。各アプリケーションがどういうふうにフォントを扱おうとしているかということも調べれるという感じです。意外とフォントプログラムでそういうことをやっている人がいて、感心させられました。 | ||
+ | |||
+ | |||
+ | 自分は仕様書のバイトコードと命令文の対応表から逆アセンブルしてどういうプログラムかを見渡すことくらいしかできませんでした。命令以外にも命令を先頭として、命令につづく数バイトをデータとして指定するようなこともあります。 | ||
+ | |||
+ | |||
+ | IMPACT.ttfでは以下のようなFont programを保持していました。 | ||
+ | |||
+ | |||
+ | [[メディア:IMPACT TAG fpgm TebleInfo.txt|IMPACT_TAG_fpgm_TebleInfo.txt]] | ||
+ | |||
+ | |||
+ | 環境に対応するべくフォントの見栄えを変更するものですが、これはほとんどの場合、フォントヒンティングという動作のためにあります。文字が小さくなると、ドット境界をうまく利用するような文字の形へと極端に変更することで視認性を上げています。Windowsでは現代においても画素のあらいディスプレイが使われている可能性が高く、いわゆる低DPIのディスプレイが使われる可能性を考慮しています。MacOSはハードウェアをアップルが独占して制作している関係で、現代において低DPIがほとんど排除されているため、OSのバージョンによって、Fontprogramそのものを無視していることもあるそうです。 | ||
+ | |||
+ | つまりFontProgramが全く動作しない環境も多いということです。動作しないからといって、Fontに関してだけで言えば行き詰まることはないです。ちょっと字がみにくいから字を大きくして対処しようとするはずです。あるいはフォントを変えるとかです。フォントによってはヒンティング要素であるFont programがないために低DPIでは見づらいということもあり得ます。 | ||
+ | |||
+ | |||
+ | FontForgeでもFont programの動作を確認する処理部分はあります。フォント一覧画面からヒントのfpgmテーブルを確認とすると自分も上記に貼り付けたような逆アセンブル情報が表示されますし、特定のフォントを閲覧するビューにはデバッグ画面もついています。ヒントのデバッグを選択すると画面のDPIを選択してヒントのためのプログラムが動く様子を確認できます。選択したDPIによってフォントの形が変わるという面白い動作があることも確認できます。FontForgeすげぇ。デバッグできる機能まであるとは。点が移動していくプログラム。複雑だぜ。 | ||
+ | |||
+ | |||
+ | 仕様書は公式にあります。現時点では以下のようなアドレスになっていました。 | ||
+ | |||
+ | |||
+ | [https://developer.apple.com/fonts/TrueType-Reference-Manual/RM05/Chap5.html https://developer.apple.com/fonts/TrueType-Reference-Manual/RM05/Chap5.html] | ||
== '''関連記事''' == | == '''関連記事''' == |