雑用担当の備忘録

技術的な話のみになります。翻訳データそのものはありません。 カテゴリ>その他>注意事項を必ず参照してください

ムービー時の字幕フォント

Life is Strange のフォントは大きく2種類、通常時のフォント,ムービー中の字幕フォントがあります。
今回取り扱うのはムービー中のフォントで主に作成方法になります。

フォント作成には UE3 が必要で、UDK-2012-02 からは Life is Strange 起動時に読み込みエラーとなりますのでこれより古いバージョンが必要になります。この記事では UDK-2012-01 を使います。

起動してコンテンツブラウザで右クリック、新規フォント

パッケージ: JpFonts
名前: DialogFont ←これだと日本語表示されなくなりました。必ず違う名前にしてください。JpFonts では DialogFntJP にしています。
フォントを選択を押してフォントとサイズを選ぶ。今回は源柔ゴシックP、サイズ24
UnicodeRange:0x0020-0x00FF,0x0370-0x04FF,0x2000-0x206F,0x2100-0x214F,0x2190-0x23FF,0x2500-0x257F,0x25A0-0x26FF,0x3000-0x30FF,0x4E00-0x9FCF,0xFF00-0xFFEF
Texture Page width:1024
Texture Page Max Height:1024
XPadding: 2
YPadding: 2

Unicode Range はこんなに細かく指定しなくてもいいと思うんですが、最初作成したときに調べた日本語の範囲がこれだったので JpFonts.upk ではこの範囲指定になっています。もっと大きなレンジでいいかも。

注意してほしいのは Create Printable Only というオプションがあるのですが、これはチェックしないでください。デフォルトでは外れてますのでそのままに。ここをチェックすると温度の ℃ が出力されません。
この状態でセーブすると JpFonts.upk が生成されています。

デフォルトは YPadding:1 なんですがこれだとクリッピングミスが起きるので画面上にゴミが表示されます。したがって YPadding:2 以上にしてください。XPadding は念のため 2 にしています。

この JpFonts.upk を Life is Strange に読み込ませるわけですが
ここからの情報はこちらのサイトの情報を元にしています。情報有難うございます。

LifeIsStrangeEngine.ini の [Engine.StartupPackages] が upk の読み込み設定なのでここに Package=JpFonts を追加。 ←この設定は必要ありません。
[Engine.Engine] セクションの SubtitleFontName=JpFonts.DialogFntJP とすることで設定は完了する。

注意すべきは名前で設定した DialogFont で、Life is Strange の字幕データ *_INT.txt の中身
42 2304 DialogFont In the previous episode of "Life Is Strange"...

こんな感じですが DialogFont とこのファイルにフォント名の指定があります。
この指定はかなりの数あるのでこの DialogFont に名前を合わせる方が早いです。

DialogFont では駄目です。
従って翻訳データも
42 2304 DialogFntJP In the previous episode of "Life Is Strange"...
のように変更する必要があります。

概要
  • UE3
  • 翻訳データ INT, テキストデータで文字コード UTF-16-LE
  • ムービー中の字幕データ *_INT.txt テキストデータで文字コード UTF-16-LE
  • フォント UE3 (動画の字幕) + Scaleform (動画以外の文字)

翻訳データはテキストデータなのであまり書くことはないのですが。

な ぜ変換スクリプトが python なのか、作業所のシートが複数に分かれていたため、まとめてダウンロードして一括置換できる形の方がいいよなということで odf 形式を採用。odf のライブラリは何があるかということで java, c#, ruby, python に絞られ。java はランタイム必要なので除外、c#のライブラリは有料だったので除外、ruby, python どっちでも良かったんですが python を選択。


以降の記事で取り扱う内容
  • UE3 フォント作成方法 (動画の字幕)
  • Scaleform フォント関連 (動画以外の文字)

フォント

uasset 置換は難度が高めなので slate 置換で問題が出ないならそちらをお勧めします。

uasset 置換
メニュー画面のみでの確認なので、置換対象フォントが複数フォルダに分かれている可能性もあります注意してください。
Kholat/Content/Kholat/UI/Fonts/MenuFOnt.uasset

uasset にカスタムヘッダで調整されている?のかUE4で生成しただけではうまく読み込まれません。EFontCacheType::Runtime の場合 ttf ファイルは FontBulkData という形で格納されています。ヘッダ部分はオリジナルのままで、UE4で日本語フォントをインポートして生成した uasset から FontBulkData の部分をオリジナルの FontBulkData に上書きするということをします。

FontBulkData の位置は bulk_data_start_offset という場所にあるのですが
この位置の探し方
uasset01
まずこの FString を探す。パス文字列の前の i32 の部分 1F 00 00 00 も含みます。
次に i32(4バイト) * 2 戻ります 00のピンクの部分ですね。
そこから u64(8バイト) 戻る D2 05 00 00 00 00 00 00 ここが
bulk_data_start_offset = 0x5D2

0x5D2 の部分を見ます
uasset03
C1 83 2A 9E というのがありますね、ここからファイルの最後までが FontBulkData となります。
自作した日本語フォントをインポートした uasset から同じように検索した FontBulkData をコピーして上記の部分に上書きで貼り付ければ良いです。

このやり方は難度が高いのですが、TVECR のように単純に作成して uasset コピーするだけで読み込むものは少ないかもしれないので、多少応用が利くかもしれません。

↑このページのトップヘ