記事一覧

CUFファイルについて詳細な考察

リクエストがあったので、CUFファイルについてさらに突っ込んだ話を。
この記事を初めて読む方は、まず最初にこちらの記事をお読み下さい↓
http://headlessman.blog.fc2.com/blog-entry-14.html

まずはツールの話から。CUFファイルをTTFから変換する方法については↑で触れましたが、そのツールは実は二種類あります。

●CUF modtool
http://www.twcenter.net/forums/showthread.php?357460-Release-of-the-CUF-(font-amp-text-rendering)-mod-tool
こちらは海外の有志の方が作成されたツールです。これがなければCUFの解析はできなかったでしょう。ただ、少し使いにくいのが玉に瑕かな。

●CUF FileModifer
http://www.japantotalwar.com/index.php?CUFFileModifer
こちらは日本の方が作成したものです。いっぺんに複数のファイルを作成できるため、私は実際にはこっちを使ってます。


では、CUFファイルの各構成部分から見ていきましょう。
書き忘れてましたが、CUFのバイトオーダはリトルエンディアンになっています。注意して下さい。


1.フォントプロパティ

T4.jpg

フォントプロパティの内容はツールが自動生成してくれますが、このままゲームに突っ込んでも行が正しく表示されないことがあります。その場合は数値をいじってやる必要があります。
不明と書いている部分は不明です。数値をいじっても、どこがどう変わるのか分からないのです。Xオフセットは分かる(行が横にズレる)のですが、Yオフセットと垂直アライメントの違いがよくわからない…どっちとも行が縦方向にズレます。最大グリフ幅や最大グリフ高はいじっても一見変化ないように思えますが、ヘタなことをすると文字の表示が狂う恐れがありますので、問題ないならいじる必要はないでしょう。
グリフ数とグリフデータは絶対にいじらないで下さい。(上の画像の場合ですと、グリフ数は5A8C、つまり23180。グリフデータは13585E、つまり1267806バイトです)


2.文字テーブル

kaisetu2.jpg

文字テーブルもツールが生成してくれますのでいじる必要はありません。↑を見てもらえばわかるように、00000020番地から01、02、03、04と番号が続いているのが分かると思います。この番号はグリフの数と同じだけ割り振られます。(番号の前にFFとかFFFFFFFFFとかバイトが並んでいる場合がありますが、これの詳しい意味はよく分かりません)文字テーブルは0002001F番地まで続きます。これはフォントの種類やフォントサイズに拘らず同じです。


3.文字プロパティ


さて、問題の場所。実は文字プロパティはさらに二つの部分に分かれています。

〇旧CUFの場合
前半 文字の縦位置や横位置等を決めるための数値(4バイト使用) 後半 各文字のグリフデータの位置を指定するためのアドレス

〇新CUFの場合
前半 文字の縦位置や横位置等を決めるための数値(5バイト使用) 後半 各文字のグリフデータの位置を指定するためのアドレス

ちょっと分かりにくいかな?画像を参照して下さい。

前半部

名称未設定4

 後半部

名称未設定 4

さらに前半部の詳細ですが、

〇旧CUFの場合
1番目の1バイト 値が増すほど文字が上に下がる
2番目の1バイト 不明(いじっても変化が分からない)
3番目の1バイト 文字幅
4番目の1バイト 文字高

〇新CUFの場合、
1番目の1バイト 値が増すほど文字が下に下がる
2番目の1バイト 値が増すほど文字が右に移動する
3番目の1バイト 文字幅(値が適正でないと文字の形が崩れる)
4番目の1バイト 文字高(値が適正でないと文字の形が崩れる)
5番目の1バイト 値が増すほど右隣の文字との間隔が増す

を意味するようです。(私が実際にあっちこっちいじりながら試してみた結果です)

旧CUFを新CUFに変換する場合、一番困るのがこの部分です。文字の幅や高さはツールが生成した数値と同じでいいようですが、それ以外は実際に表示させてみて試すしかないようです。(WHの英語フォントなども参考になります)


4.グリフデータ
KAISETU5.jpg

最後はグリフデータです。例示の画像ですと、
フォントプロパティ 32バイト
文字テーブル 131072バイト
文字プロパティ 208620バイト(新CUFなので)
ですので、グリフデータは00052F0C番地から始まります。ツールはTTFファイルから文字ポイントによってビットマップを作成し、書き込んでいるようです。(ですので当然文字ポイントが大きくなるほどグリフデータも大きくなります)


実は気になっていることがもう一つ。WHのデータ内にある英字フォントですが、グリフデータの後にもよくわからないデータが存在します。正体は不明ですが、今のところなくても問題はないようです…容量を合わせるためのダミーデータでしょうか?
スポンサーサイト

コメント

No title

詳細な情報をありがとうございます!!これほど早く記事を書いていただけるとは思っておりませんでした…!お忙しいところ時間を割いていただき、ありがとうございます!
なるほど、新cufではカーニング(でいいのかな…?)の情報が新たに足されていたのですね…!さっそく、こちらの記事を教科書にさせていただき、フォントの自作に再挑戦したいと思います!
重ね重ね、本当にありがとうございます!!

No title

教えていただいた通りにcufファイルの修正を行ったところ、ついに日本語フォントを表示できました!
http://imgur.com/a/iDSPl
半ば以上諦めかけていたのですが、もう、なんとお礼を申し上げて良いか分かりません。ありがとうございます!!

コメントの投稿

非公開コメント

プロフィール

mine-yuki

Author:mine-yuki
FC2ブログへようこそ!