offwidth

BTRONフォント形式

[1] BTRONフォント形式は、 BTRON で使われるフォント形式です。

仕様書

呼称

[2] 正式名称は不明です。

[3] BTRON の仕様書では固有名詞なくフォントとだけ呼ばれているようです。 >>6

[4] 関連プロジェクトでBTRONフォント形式と呼ばれています >>5

[34] BTRON標準形式のフォントデータ実身と呼んだ事例もあります。 >>33

概要

[8] BTRON ではファイルレコードの集合体として表されます。 各レコードレコードタイプを持ちます。

[9] フォントファイルは、 レコードタイプ11 であるフォントデータレコードを1つ以上持ちます。 >>6

[10] フォントファイルは仕様上かなり自由度が高いようですが、 そのうちの一部は定義されているだけで実際には利用されていないような記述が仕様書にもあります。 超漢字Vに標準付属するフォントファイルをみると、 実際に利用されている機能は更に限られます。 それ以外の機能がどこまで実装されているのかは不明です。

[12] 実用されているフォントは2種類に大別できます。

[15] 固定イメージサイズ形式フォントファイルは、 1つ以上フォントデータレコードで、 それぞれが独立したフォントとして機能し得るものが1つにまとめられます。

[16] TrueType形式フォントファイルは、 1つ以上フォントデータレコードと 1つ以上のその他のレコードです。 その他のレコードの方はレコードタイプが [ 15, 31 ] とされますが >>6超漢字Vの標準フォントで確認できたものはすべて 31 です。

[17] TrueType形式フォントファイルの場合、 フォントデータレコードのそれぞれが独立したフォントとして機能し得るものですが、 フォントデータレコード自体に入っているのはメタデータと索引データであり、 字形データは同じフォントファイルの他のどれか1つの 31 レコードTrueType データを参照する形になっています。 31 レコードの中身は TrueType フォントデータそのものです。 >>6

[18] 複数のフォントデータレコードが同じTrueType レコードを参照することもできますし、 いくつも TrueType レコードを含めることもできます。

[57] TrueType フォントデータは、 TTC のこともあります。

[22] なお、 超漢字ではデータ構造に出現する多バイト数値はすべて小エンディアンです。

超漢字検索用フォント

[41] WindowsLinux 用に提供されている 超漢字検索 にもこの形式のフォントが同梱されています。

[42] BTRON と違って Unixファイルシステムファイル (= ただのバイト列) になっています。

[43] FONT ディレクトリーにすべてのフォントデータレコードTrueType フォントが各1つのファイルとして収容されています。 fonts.cfgフォントデータレコードTrueTypeファイル名の対応関係が単純なテキストファイルで記述されています。

[44] TrueType フォントファイルは、 TrueType データの前にメタデータが付加されています。

TRON コードと字形の関連付け

[20]フォントデータレコードには、 TRONコードの 「文字セット(スクリプト)指定」 を記述する script, 最初の符号を記述する topcode, 最後の符号を記述する lastcode があります。 >>6

[23] ただし、TRONコード符号平面Aゾーンから Dゾーンまでに分かれています。 範囲整列は数値の順序ですが、上位バイト、下位バイトそれぞれの上下限が決まります。 すなわち、

... が範囲となります。

[56] 従って 0x3100 のようなものは必ず除外されますが、 0x317F は含まれることがあります。

[21] scriptTRONコードを指定する値であり、 topcodelastcode はそのの中の符号の範囲を表しています。 >>6

[26] 従って1つのフォントデータレコードに含められるのは、 特定のの連続した範囲の符号群だけです。 異なる範囲に対応したいときは複数のフォントデータレコードを使うことになります。

[24] script, topcode, lastcode がいずれも 0フォントデータレコードがあります。 空を表しているようです。

[19] 固定イメージサイズ形式ビットマップフォントでは、 offimage で参照されるビットマップデータに最初の符号から最後の符号まで順に字形が並びます。

[25] TrueType形式フォントでは、 offwidth で参照される FT_INDEXWDATA (文字幅/インデックスデータ) から参照されるインデックスデータに最初の符号から最後の符号まで順に文字インデックスが並びます。 文字インデックスは、 0xFFFF が未定義を表します。 >>6

[28] 文字インデックスTrueType の関係は仕様書に明言がありませんが、 [ 0, 0xFFFE ] のとき TrueTypeグリフID を指していると思われます。

[29] TrueTypecmapグリフ名は使われていないようです。 cmap の中身が空のものもあります。 cmap で参照できるグリフが一部だけで、多くはグリフIDグリフ名でしか参照できないものもあります。 そうでないものは、シフトJIS環境での利用を想定したと思しき Unicode cmap になっていることが多いように見えます。 おそらくフォント事業者で一般的な日本語フォントの開発環境を使いつつ、本来の JIS漢字等のかわりに独自の配列で字形を配置して制作したものなのでしょう。

[30] グリフIDTRONコード側の順序と揃っていることもありますが、 そうでない場合もかなり多いです。 インデックスデータを見なければTRONコード字形の対応を知ることは不可能です。

[32] たまに索引データの末尾の部分 (おそらく意味のある字形が割り当てられた最後よりも後の部分) が不適切 (lastcode までのデータが揃っていない) なのではないかと思われるものもありますが、 当該データが間違ったまま使われているのか、こちらの仕様の理解の不足による誤解なのか、よくわかりません。

[58] 索引は TrueType 専用というわけではないらしく、 超漢字Vに付属する (しかし標準ではない) 基本-ナガ10ビットマップフォントでありながら索引を使って、 JIS X 0201 フォントTRONコードJIS X 0208 の領域に対応付けています。

[27] なお、データ構造定義上存在し得る文字幅データは使われていないようです。

実フォント事例

[37] 超漢字で実際に使われているフォントがこの形式です。 同梱の標準フォントの他、 Web で配布されている追加フォントもこの形式になっていることが多いようです。 TRONコード

[45] 超漢字検索でも同様の形式で配布されています (>>41)。 TRONコード


[38] その他に超漢字ではシフトJIS想定の日本語 TrueType フォントも登録できます。登録時にこの形式に変換されると思われます。

[40] >>39 のように TrueType フォントを同梱した TAD の形で配布されている場合もあるようです。

実装

[33] Vector:書体変換器 (他のOS用 / TRON-OS), https://www.vector.co.jp/download/file/other/tron/fh277000.html

[46] アースフォント登録手順 -- 2, , http://metanest.jp/ath/touroku/proc2.html

[47] >>46 TrueType フォントと TRONコードとの対応関係を記述し、 BTRON形式フォントを作る手順が解説されています。

メモ

[35] みかちゃんフォントの超漢字4への登録方法, , https://www.eonet.ne.jp/~nisaka/_t0C5EuE.html

[36] >>35 WindowsTrueType フォントの登録方法の説明。