fontconfig.txtについて | おばちゃんのスカイリムガイド

2012/08/06

fontconfig.txtについて

スカイリムのゲーム内で表示されるフォントは、フォントデータの埋め込まれたFlashファイル(swf)さえあれば、基本的にはフォントの設定ファイル(fontconfig.txt)で自由に変更できるような仕様になっています。

どなたかの作ったフォントを導入する場合、同梱のfontconfig.txtやその他UI系のswfなどを、そのままData/Interfaceフォルダに入れてしまう、ということが多いかと思いますが、文字化けなど問題が起こった際に対処できるようにするためにも、基本となるfontconfig.txtの設定をしっかり理解しておきましょう。

※当ブログでもスカイリムで使用できるカスタムフォントデータを配布中です。
お手数ですがこちら日本語化に関する記事Indexより、お探しください。


■fontconfig.txtの弄り方
日本語版のSkyrim - Interface.bsaから取り出した「fontconfig.txt」はデフォルトでは以下のような設定になっています。

fontlib "Interface\fonts_console.swf"
fontlib "Interface\fonts_jp.swf"
map "$ConsoleFont" = "Arial" Normal
map "$StartMenuFont" = "Skyrim_JP_EveryFont" Normal
map "$DialogueFont" = "Skyrim_JP_EveryFont" Normal
map "$EverywhereFont" = "Skyrim_JP_EveryFont" Normal
map "$EverywhereBoldFont" = "Skyrim_JP_EveryFont" Normal
map "$EverywhereMediumFont" = "Skyrim_JP_EveryFont" Normal
map "$DragonFont" = "Dragon_script" Normal
map "$SkyrimBooks" = "Skyrim_JP_BookFont" Normal
map "$HandwrittenFont" = "Skyrim_JP_HandWriteFont" Normal
map "$HandwrittenBold" = "Skyrim_JP_HandWriteFont" Normal
map "$FalmerFont" = "Falmer" Normal
map "$DwemerFont" = "Dwemer" Normal
map "$DaedricFont" = "Daedric" Normal
map "$MageScriptFont" = "Mage Script" Normal
map "$SkyrimSymbolsFont" = "SkyrimSymbols" Normal
map "$SkyrimBooks_UnreadableFont" = "SkyrimBooks_Unreadable" Normal
map "$CreditsFont" = "Futura Condensed" Normal
validNameChars " `1234567890-=!@#$^&():_+QWERTYUIOP[]ASDFGHJKL;ZXCVBNM,./qwertyuiop{}asdfghjkl;zxcvbnm?|"

まず最初の二行、「fontlib~」の部分は、フォントが埋め込まれたFlashのファイル(swf)をゲーム内で使えるようにするための記述です。

一行目で読み込まれている「fonts_console.swf」は、コンソール画面(※Altキー+半角/全角キーで表示されるコマンド入力画面)で使用する「Arial」のフォントが埋め込まれたファイルで、英語版も日本語版も共通の物がSkyrim - Interface.bsaの中に圧縮されて入っています。(なので日本語化する時に、わざわざ解凍して差し替える必要はありません)
もっとも欧文フォントの「Arial」だと日本語表示できないので、コンソール表示用のフォントは日本語フォントに変更(後述)した方がいいですね。
その場合、「fonts_console.swf」の読み込みは必要なくなります。

二行目の「fonts_jp.swf」は、日本語化でお馴染みのファイルです。
「fonts_jp.swf」は英語版の「fonts_en.swf」のローカライズ版として、日本語版スカイリムに標準装備されている基本フォントデータセットです。
ゲーム内で使用する特殊なオリジナルフォント7種に、スカイリムの標準書体のFutura Condensed Medium、それに日本語のデフォルト3書体をプラスした計11書体の構成になっています。

デフォルト以外のフォントデータを使用したい場合は上記の記述にならって、fontconfig.txtでフォントデータの読み込みを記述します。 たとえば、「fonts_skyMin.swf」というフォントデータを追加する場合は、

fontlib "Interface\fonts_console.swf"
fontlib "Interface\fonts_jp.swf"
fontlib "Interface\fonts_skyMin.swf"
map "$ConsoleFont" = "Arial" Normal
map "$StartMenuFont" = "Skyrim_JP_EveryFont" Normal
………

このように記述を追加します。
もちろん追加したフォントデータのswfファイルは、Data/Interface内にきちんと入れてくださいね。


次に三行目以降の「map~」以下の部分は、ゲーム内のテキストのどの箇所にどの書体を使うか、というフォント指定を行う記述となっています。
スカイリムではゲーム上のあらゆる表示を、Flashで作られたインターフェイス用のデザインデータを通して表示させています。
そのデータ内ではテキストをどんなフォントで表示するか、というフォントの種類の指定は、先頭に「$」のついた変数名のようなもの……正確に何と呼ばれるのかはわからないのですが仮に「フォント変数」と呼ぶことにします……で行っています。
その「フォント変数」が、実際にどの画面のどの箇所で使われているか…というのは、さすがに全部は把握しきれていないのですが、おばちゃんが調べた限りでは、だいたいこんな感じです。

■フォント変数一覧(太字がフォント変更すると良さげな箇所)
$ConsoleFont……コンソール画面のテキストで使用
$StartMenuFont……どこで使われているのか不明
$DialogueFont……どこで使われているのか不明
$EverywhereFont……スタートメニューやシステムの説明など、少し雰囲気の変わる場所のテキスト
$EverywhereBoldFont……重量や金額、レベル名といった、変動のあるスペック関連の値のテキスト
$EverywhereMediumFont……字幕のテキストなどゲーム中の八割以上のテキストで使われている
$DragonFont……「グジャランド首長の要塞に関する調査報告書」で使用
$SkyrimBooks……一般的な書籍の本文で使用
$HandwrittenFont……誰かの日記や手紙など、手書き風のテキスト1
$HandwrittenBold……誰かの日記や手紙など、手書き風のテキスト2
$FalmerFont……「ガルス・デシデニウスの日記(暗号化)」で使用
$DwemerFont……「ドゥーマーの調査書」で使用
$DaedricFont……「評論・ザルクセスの神秘の書」などで使用
$MageScriptFont……「達人の幻惑術の書」で使用
$SkyrimSymbolsFont……どこで使われているのか不明
$SkyrimBooks_UnreadableFont……「オラフ王の詩歌」で使用
$CreditsFont……クレジット表示画面で使用

フォント変数に指定してやる「フォント名」は、フォントデータが埋め込まれたswf内に記述されているフォントの定義名です。
どなたかの作ったフォントデータの場合、通常はreadme.txtや同梱のfontxonfig.txtなどに「フォント名」が書いてあると思います。

文字化け等、テキストがうまく表示できない方は、
(1)Data/Interfaceフォルダにフォントデータ(swfファイル)が入っているか
(2)fontconfig.txtの「fontlib~」の指定で、(1)のフォントデータを読み込んでいるか
(3)fontconfig.txtの「map~」の指定で、正しいフォント名を指定しているか
以上の3点について、確かめてみてください。



(日本語版デフォルトのゴシック書体を他のフォントに変えたい場合)
$EverywhereFont、$EverywhereBoldFont、$EverywhereMediumFontをデフォルトの「Skyrim_JP_EveryFont」の指定から、使用したいフォント名に書き換えます。
たとえば日本語版デフォルトのゴシック書体の代わりに書籍の本文に使われている楷書体のフォントを使用する場合は、下記のように指定します。

………
map "$EverywhereFont" = "Skyrim_JP_BookFont" Normal
map "$EverywhereBoldFont" = "Skyrim_JP_BookFont" Normal
map "$EverywhereMediumFont" = "Skyrim_JP_BookFont" Normal
………

(↓クリックすると拡大します)

ちょっと古めかしい雰囲気になりますが、
なかなか悪くないと思うのですがいかがでしょう?



(書籍のフォントを変更したい場合)
$SkyrimBooksのフォント指定を変更。
(メモや日記などで使われている手書き文字風のフォントを変更したい場合)
$HandwrittenFont、$HandwrittenBoldの指定を変更。

日本語版のSkyrim - Interface.bsaの中から取り出した「book.swf」では、本来「$SkyrimBooks」で指定されているはずのテキストフィールドが直接「Skyrim_JP_BookFont」(デフォルトの楷書体のフォント)の指定になっているため、フォント変更することができません。
書籍のフォントを変えたい場合は、日本語版オリジナルのものではない、修正を施した「book.swf」を別途導入する必要があります。

*配布されているフォントデータの中には、書籍のフォント変更ができるように修正を施した「book.swf」が同梱されている場合もあります(readme.txtなどの説明をお確かめください)。



(コンソール画面で使用するフォントを変更)
日本語版のデフォルトの設定では、コンソール画面で使用する書体が欧文フォントの「Arial」になっています。
コンソールをまったく使用しない人は必要ありませんが、このままの設定だと日本語のアイテム名や地名、クエスト名などが化けてしまうので、日本語フォントに変更しておいた方が良いでしょう。(フォントはお好きなものをお使いください)
map "$ConsoleFont" = "Skyrim_JP_EveryFont" Normal
「$ConsoleFont」の指定を日本語フォントに変更した場合、「Arial」のフォントデータが入っている「font_console.swf」の読み込みは必要ありません(上記参照)。
※別にそのまま読み込ませていても何の支障もないですが。



その他の箇所、「$DragonFont」「$FalmerFont」「$DwemerFont」「$DaedricFont」「$MageScriptFont」「$SkyrimSymbolsFont」「$SkyrimBooks_UnreadableFont」は、スカイリムのオリジナルフォントが指定されている特殊なフォント変数です。
これらのオリジナルフォントのデータは、「font_jp.swf」もしくは英語版のSkyrim - Interface.bsa内に入っている「font_en.swf」の中に入っています。
fontconfig.txtを自分で編集する場合、これらのオリジナルフォントを埋め込んでいる「font_jp.swf」、あるいは「font_en.swf」の読み込み指定を忘れないようにしてください。

せっかくなので、上記の特殊なスカイリムオリジナルフォントを紹介します。

■"Dragon_script"(フォント指定箇所:$DragonFont)

スカイリムといえばこのフォント……ドラゴン文字。
書籍「グジャランド首長の要塞に関する調査報告書」で使用されている他、たぶん「魔法」のシャウト画面でも使われているんじゃないかと思われます。

■"Falmer"(フォント指定箇所:$FalmerFont)

ファルマー文字。盗賊ギルドクエでお目にかかります。
それから先日、『Dawnguard』のDLSTRINGSを覗いてたら、いくつかこのフォント指定があるのに気づきました。
ファルメル関係で何か追加のクエがあるんでしょうかね?

■"Dwemer"(フォント指定箇所:$DwemerFont)

ドゥーマー文字。「ドゥーマーの調査書」シリーズで使われています。
よく見るとこのフォント、いろんなところでドゥーマー製品のモチーフになっていそうですね。
なんとなく見覚えが……

■"Daedric"(フォント指定箇所:$DaedricFont)

オブリビオンでおなじみのデイドラ文字。
「評論・ザルクセスの神秘の書」などで使われています。
深遠の暁……懐かしかったです。

■"Mage Script"(フォント指定箇所:$MageScriptFont)

調べてみると「達人の幻惑術の書」で使用されているらしいのですが、おばちゃんは未だゲーム内でお目にかかったことがありません。
達人魔法、ひとつも極めてないからなあ。

■"SkyrimSymbols"(フォント指定箇所:$SkyrimSymbolsFont)

SkyrimSymbols
フォントというより素材パーツ集。実際にゲーム中のどこに使われているのかは不明。

■"SkyrimBooks_Unreadable"(フォント指定箇所:$SkyrimBooks_UnreadableFont)

SkyrimSymbols
吟遊詩人大学クエの「オラフ王の詩歌」で使用。
まさか棒読みで朗読するとは思わなかったですよねえ。

5 件のコメント:

  1. 英語版v1.9.0.29.8からフォント変更できなくなりました?日本語版はどうでしょうか?

    返信削除
    返信
    1. 私の環境では1.9でも特に問題なく、fontconfig.txtでフォントを変更できていますが……

      どの箇所がフォント変更できなくなったのか、具体的に教えていただかないと詳細はわかりかねますが、UI系のModやカスタムフォントなどを導入した際に、Interfaceフォルダ内に何かswfファイルを入れていたりしませんか?
      1.9ではインターフェイス周りのファイルにいくつか更新があったので、それらのアップデートの内容を邪魔をする旧バージョン由来のswfのデータがInterfaceフォルダ内に残っていると、不具合が生じるかと思います。

      削除
  2. はじめまして。
    自分のブログにて、フォントについての記事を書きました。
    かなり強引なやり方でのサイズ変更のことなのですが、
    その際、こちらの記事とスカイリムのEverywhere系フォントについての記事を
    参考先としてリンクさせていただいたのですが、宜しかったでしょうか?
    もしご迷惑でしたら削除させて頂きますので、よろしくお願いします。

    返信削除
    返信
    1. わざわざ知らせてくださって有難うございます。
      もちろん、リンクはOKです。

      記事を拝見させていただいたのですが……私も自分で使ってるフォントは、FontForgeを使って細部を調整したフォントを使ってたりします。
      日本語のフォントはアルファベットに比べると幅を取るので、どうしても文字が溢れちゃうんですよね。(それで日本語版は独自のEXEになったのでしょうが…)
      なので、ひらがなカタカナ英数字など、細長くなっても読みづらくないものはギリギリまで長体をかけて、文字間も最大までツメツメに調整をかけたり、記号類や「ー」といった棒状の自体などは特に短く変形したりしています。
      本当は漢字も多少幅を削りたいのですが、私の環境では重たすぎるのか、漢字全部を変形しようとするとFontForgeが落ちてしまうんですよね。
      Nachtさんの方では、すべての文字に変形をかけても、問題なく変形できるのでしょうか。
      私ももう一度チャレンジしてみようかな……

      ちなみにswfファイルが存在するインターフェース画面であれば、swfを「swfmill」というツールでxmlにデコンパイルして、テキストのサイズや文字揃え、文字色やフォント指定などを変えたりできます。
      ただ、ゲーム中に表示されるテキストすべてにswfファイルがあるわけではないみたいなので……すべての文字を大きくする、ということはできないのですが。
      たとえば本のテキストだけ大きくしたい、というのでしたら、book.swfの中身を弄れば変更可能かと思います。

      削除
    2. お返事&リンク許可ありがとうございます。

      自分も文字幅の調整をやってますが、全指定での幅調整は・・・
      落ちはしないんですが、一向に終わらないんであきらめました。
      縮小の方は、問題なく終わるんですが。

      swfで全部では無いにしろ、弄ることは出来るんですね。
      ただ、フォントによってサイズが変わってくることを考えると・・・
      悩みますねぇ。

      削除