2012/07/30

スカイリム手書き文字用カスタムフォント(ふい字)

フリーウェアの手書きかなフォントの「ふい字」をスカイリムで使えるフォントデータにしてみました。 →ダウンロードはこちら


手書き文字部分の差し替え用のつもりで作成したのですが、インベントリ画面やセリフ字幕等に使われる$EverywhereMediumFont等の箇所に指定してやっても大丈夫です。
(もしかしたら文字が溢れる箇所があるかもしれませんが、そこはまあ…ご了承ください)

ちなみに標準のゴシック書体(Skyrim_JP_EveryFont)の代わりに
↓使用するとこんな感じになります↓

【フォントの使用方法(日本語版のデフォルトのfontconfig.txtの場合)】
Data/Interfaceフォルダ内にダウンロードしたフォントデータ(fonts_Hui.swf)を置いてください。fontconfig.txtに「fontlib "Interface\fonts_Hui.swf"」の記述を加え、手書き文字のフォントを差し替える場合には「Skyrim_JP_HandWriteFont」の指定を「Skyrim_HuiFont」に、標準のゴシック書体を差し替えたい場合は「Skyrim_JP_EveryFont」を「Skyrim_HuiFont」に書き換えてください。


ちなみに日本語版のデフォルトの手書き文字
(Skyrim_JP_HandWriteFont)はこんなフォント↓です。

いや、デフォルトのこのフォントも別に悪くはないんですけども……なんていうか、恨みのこもった文字っぽいというか、墨汁が滴るような雰囲気はちょっとスカイリムの世界には合わないな……と思わないでもなくて。
まあ、この古風な雰囲気がぴったりの日記や手紙もあるんですけどね。
でも日常のちょっとしたメモや言伝、女性からの愛のこもった手紙なんかは、もうちょっと現代っぽい感じの、さらさらっとペンで書いたようなフォントがいいなあ、と思うんです。


うん、これだよ!これ!
日頃は肩で風を切って歩いている、Opposite Gender Animsに思いっきりチェックが入っているような武骨な女性が、意外にも女性らしい字を書いて寄越す……


ちなみに女性以外の手紙になると……ちょっと微妙…ではあります。


残り2、3年しかないかもしれないって……えええ!?

2012/07/29

book.swfと本のフォント について

スカイリムの日本語化について、ずっと疑問に思っていたことがありました。
それは……日本語版の「book.swf」について。

スカイリムの日本語化について検索してみると、必ず、日本語版のSkyrim - Interface.bsaから「font_jp.swf」「fontconfig.txt」「book.swf」の三つを解凍して取り出して差し替えろ、ということがどこのサイト様を見ても書かれています。
おばちゃんは最初、"book.swf"というのは、書籍に使われているフォントが埋め込まれているファイルなのかと思っていました。
ところが、ふと、「book.swf」のファイルのサイズを見てみたら……軽すぎるのです。
どう頑張っても重たい日本語フォントが入るサイズじゃない。
いったいbook.swfって何なんだろ……まあ、名前からして書籍関連の何かなのは確実なのですが、ずっと不思議に思いながらも特に不都合はなかったので、わからないまま放置していたのでした。
ところがある日、書籍に使われているフォントを変更しようとして「あれ?」と思いました。

fontconfig.txtの$SkyrimBooksに他のフォントを指定しても変更できない。
書籍のフォントは、fontconfig.txtのどこをどう弄っても、ゼニマックス・アジア版の楷書体のフォント(Skyrim_JP_BookFont)以外にはならないのです。

↓これが日本語版書籍本文用デフォルトフォントのSkyrim_JP_BookFont

不思議なのは、日記やメモなどに使われている手書き風の文字の$HandwrittenFontと$HandwrittenBoldはフォント変更できるのです。
でも、$SkyrimBooksだけはどうしても変わらない。
たとえ$SkyrimBooksに何も指定しなくても、"Skyrim_JP_BookFont"で表示される。
何なの?これ。

$SkyrimBooksというのは、名前からして明らかに一般的な書籍の本文のフォントを指定する変数だと思うのです。
それなのに$SkyrimBooksに指定したフォントはまったく反映されず、font_config.txtのどこにも指定していないSkyrim_JP_BookFontが本のフォントとして堂々と居座っている……
考えられるのは、ただ一つ。
犯人は……日本語版の「book.swf」……奴しか考えられません。

そこで日本語版のbook.swfをData/Interfaceフォルダから抜いてみると……案の定、あっさりと書籍の文章がfontconfig.txtの$SkyrimBooksで指定したフォントに変わってくれました。
つまり英語版のSkyrim - Interface.bsaに含まれているbook.swfなら、$SkyrimBooksの指定が効くのです。
おそらく日本語版のbook.swfでは、$SkyrimBooksというfontconfigで指定できるフォント変数ではなく、直接"Skyrim_JP_BookFont"のフォントが指定されちゃっているのでしょう。


* * * * *

…とまあ、上記のような次第で、おばちゃんは日本語化の際に、日本語版のbook.swfって本当に必要なの??と常々疑問に思っていたのです。
日本語版のbook.swfを入れずに英語版のまま本を開いてみても問題なく日本語表示できるようですし、fontconfig.txtの$SkyrimBooksの指定でフォントも切り替えられます。
これなら、わざわざデフォルトのSkyrim_JP_BookFontに固定された日本語版の"book.swf"を入れなくてもいいんじゃない??
そう思っていたのですが……やはり日本語版のbook.swfには、そうしなければいけない理由があって、あのような不思議な仕様になっていたのです。
日本語版のbook.swfはいらない子、と結論を出すのは早すぎました。


先日、1.7βをプレイしていたら、配達人が手紙を持ってきました。
何かと思ったら『友達からの手紙』です。
街や家や洞窟内などでシャウトを使うとたまに発生する、あの謎めいた手紙……(友達って誰?どこで見てるの?)……なんだか久しぶりに見るなあと思って手紙を開いたら、文字が思いっきり『□□□□□□□□』になっていて愕然としました。
あれええええ????何で化けてんの??
スカイリムのフォントについてはもう把握した、と思ってたのに……嘘おおおおん。

↓文字化けして□□□状態になった『友達からの手紙』

試しに日本語版のbook.swfを入れたら、見事に文字化けが直ります。
くそう、要らない奴と思ってたのに……しぶとい子ねえ。
他にどんなものが化けているのか、もう一度、徹底的に調べてみると「アーヴェルの日記」や「エルトリスのノート」や「感染者のメモ」が□□□□になっていました。
…………………。


最初は『友達からの手紙』が文字化けして□□□になってしまうのは、もしかしたらクエスト中に文面が生成されるからなのかな……と思いました。
『友達からの手紙』は「WICastMagic04(id:00023EE4)シャウト・言葉の壁について学ぶ」クエストの関連アイテムで、プレイヤーがシャウトを使った場所や、プレイヤーが未修得の他のシャウトのある壁の場所などが、手紙の文中で表示されます。
その時のゲームの状況によって変わる単語は、予め手紙の文章として用意することはできないので、その部分は特殊なタグになっています。
たとえば、『友達からの手紙』の元の文章(※Skyrim_Japanese.DLSTRINGSファイル内にある)はこんな感じです。
<font face=""$HandwrittenBold"">
<Alias=Player> へ

お前が <Alias=Location> でスゥームの力を披露した時、少し騒ぎになった。全員がドラゴンボーンの帰還を望んでいた訳ではないからな。

私個人は才能を磨き成長していく姿を見たいと望んでいる。今のスカイリムには本当の英雄が必要だ。

<Alias=Dungeon> に目を向けるべきだ。あそこには不思議な力の源があって、解放できるのはドラゴンボーンしかいない。

よろしく頼む。

友より
</font>

この<Alias=○○○>という箇所に、プレイヤーの名前だのシャウトを使った場所だのが、その時のゲームの状況に応じて代入されて、最終的な手紙の文章になるわけです。
だから……その文章がリミックスされる作業の途中に、文字化けの原因があるのではないかと思ったのでした。
しかし『エリトリスのノート』は?『アーヴェルの日記』は?『感染者のメモ』は?
これらは確かにクエストがらみで発生するものですが……文中に後で変換されるタグのようなものは含んではいません。そもそもクエストがらみで発生するジャーナルが全部化けるのだとしたら、他にもたくさんある筈です。


いったい何が原因なんだろう、とあれこれ調べたり試したり頭をかきむしったり……
いろいろ悪戦苦闘している最中、ふと、これらの文字化けするジャーナル達には共通する点があることに気が付きました。
それは……$HandwrittenBoldが使われている、ということ。
もう一つの手書き風文字の$HandwrittenFontに指定されているものなら、たとえそれが文中に<Alias=○○○>を含むクエスト中生成ジャーナルであっても、文字化けせずにきちんと表示されるのです。
化けるのは$HandwrittenBoldの方だけ。


メモや手紙、日記の類に使用される手書き風文字の$HandwrittenFontと$HandwrittenBoldについては、どこがどう違うのか、どういった箇所で使い分けられているのか、今まで深く考えたことがありませんでした。
ちなみにこの二つのフォント変数は、英語版でも日本語版でも両方とも同じフォントが指定されています。
(英語版だとSkyrimBooks_Handwritten_Bold、日本語版はSkyrim_JP_HandWriteFontです)
DLSTRINGSファイルの中を覗いてみてみると、手書き文字の指定は、圧倒的に$HandwrittenFontの方が多くて、$HandwrittenBoldはごくわずかなんですよね。
『友達からの手紙』も『エリトリスのノート』も『アーヴェルの日記』も『感染者のメモ』も、そのごくわずかの中の一部だったのです。
これは……
もしかして、$HandwrittenBoldの日本語表示が文字化けする原因が、英語版のbook.swfの中にあるんじゃない?


そう考えて、英語版のbook.swfをデコンパイルして中身を調べてみたところ、なんと英語版のbook.swfには、英語版の手書き文字デフォルトフォントであるSkyrimBooks_Handwritten_Boldが、「$HandwrittenBold」として直接swf内に埋め込まれていました。
つまり、英語版のbook.swfでは、fontconfig.txtで指定されて読み込まれている筈のフォント変数・$HandwrittenBoldの上に、さらにもう一度、自分自身でSkyrimBooks_Handwritten_Boldというデフォルトの欧文フォントを上書きして設定していたのです。
(なんでこんな意味のないことを……意味ないよね?)
これじゃあ、日本語は化けて当然です。
だってfontconfig.txtでいくら日本語のフォントを指定してやっても、book.swfがそのフォントをさらに上書きして欧文フォントで定義しちゃってるんだもの。
なんでこんないらんことすんのよお!


…というか、この状態だと、日本語が文字化けするだけじゃなく英語テキストの環境下でも$HandwrittenBoldはデフォルト固定でフォント変更がきかない、という不自由さが発生している筈です。
今まで手書き文字の$HandwrittenFontと$HandwrittenBoldは、fontconfig.txtでフォント変更が可能、と思っていましたが、実は変更可能だったのは$HandwrittenFontの方だけだったんですね。
まったく気が付きませんでした。
……う~む。
日本語版は「$SkyrimBooks」の指定が効かず、英語版は「$HandwrittenBold」の指定が効かない……結局、どっちもどっちだった、ってことね!
ちなみに、英語版のbook.swfから「$HandwrittenBold」として埋め込まれたSkyrimBooks_Handwritten_Boldの欧文フォントのデータ部分をさっくり削除してやると、見事に日本語の文字化けが解消されました。
これですべてのフォントがfontconfig.txtで指定したとおりのフォントで表示されます。

そんなわけで、書籍や手紙、メモ類のフォントをすべて変更したい場合は、英語版や日本語版の「book.swf」をそのまま使えません。
固定指定されたフォント名と埋め込まれたフォント情報を消してやらないといけません。

【関連記事】
fontconfig.txtについて
スカイリムのEverywhere系フォントについて
スカイリム手書き文字用カスタムフォント(ふい字)

2012/07/07

スカイリムのEverywhere系フォントについて

最近、スカイリムのフォント周りをあれこれいじって遊んでいたのですが、ふと、疑問に思うことがありました。
日本語化する時、fontconfig.txtでフォントの指定を変えますが、その中で主にゲーム内のセリフやアイテム名など広範囲に渡って使われているであろうフォントの変数、
$EverywhereFont
$EverywhereBoldFont
$EverywhereMediumFont
の3つってそれぞれ、どういった箇所で使われているんだろうと。

日本語版のfontconfig.txtだと、この3つはまとめて『Skyrim_JP_EveryFont』で指定されちゃっているので、まったく違いがわからんのですが、英語版だとこの3つは、
$EverywhereFont……『Futura CondensedLight』
$EverywhereBoldFont……『Futura Condensed』のBold
$EverywhereMediumFont……『Futura Condensed』のNormal
という強弱の違いがあります。

↓この一番細い書体は$EverywhereFont、$DialogueFontで使われています。
↓こちらは$EverywhereMediumFontの他、$StartMenuFontでも使われています。
↓こちらは$EverywhereBoldFontです。

こうしてみると、結構太さが違うし、文字幅も違うんですよね。
まあ、同じファミリーの書体なので、たぶん英語表記で遊んでいてもそんなに違いに気づかないんじゃないかとは思うのですが、ゲーム内のどこでどう使い分けられているのか気になったので、調べてみることにしました。


まずは日本語フォントで特徴的な書体を3つチョイスしてswfファイルを作って、それぞれ『$EverywhereFont』『$EverywhereBoldFont』『$EverywhereMediumFont』に指定してみることにしました。
チョイスしたのは上の3書体。これだけ雰囲気が違えばわかりやすいかなーと。
まるもじの書体は($EverywhereFont)を指定、ひょろっとしたクラフト童は見た目に反してボールド($EverywhereBoldFont)を指定してみました。
そして勘亭流はミディアム($EverywhereMediumFont)を指定。
(ちなみにInterface周りのswfはすべて英語版のものを使用して試しました)


すると……
ゲームを起動した瞬間から、いきなりフォントがまるもじに変わってて驚きました。
スタートのこの画面は、てっきり『$StartMenuFont』かと思ってたんですけど、違うんですねえ。
ちなみに上記のEverywhere系の3種類以外のフォントは、オフィシャル日本語版の指定のままにしてあります。だから$StartMenuFont、$DialogueFontといったフォント指定の箇所はゼニマックスアジア版の日本語ゴシックフォントで表示される筈です。

まずは、通りすがりのNPCの字幕や、主人公の選択肢が出てくる会話の画面。
どうやらセリフ周りの表示はすべて勘亭流の書体……『$EverywhereMediumFont』のようです。
それにしても『$DialogueFont』ってのはどこで使われているんですかねえ。
上の画像みたいに主人公の選択肢を入力する箇所で使われてるのが、$DialogueFontなのかしら、と思っていたんですが、予想が外れました。

クエストの開始の時に出てくる文字や、左上に出てくるお知らせ文字欄も、『$EverywhereMediumFont』のようです。
このクエストの開始時に突然出てくる文字のフィールドって、Interface関連のswfのどれに収録されているんでしょうか。
幅のある日本語フォントだと表示が切れてしまうので修正したいのですが、どこで指定されているのか全然わからなくて困ってます。

さて、お次はインベントリ画面。 だいたいは『$EverywhereMediumFont』ですが、重量や金額といったスペック関連の数値は『$EverywhereBoldFont』で表示されるようです。
ただし所持アイテムの個数に関しては、アイテムの名前と繋がって表示されるためか、『$EverywhereMediumFont』のままですね。
…というか、内部的には「ウルフリックの服を99個持っている」、という感覚ではなく、「99個のウルフリックの服を1かたまり持っている」という感じなのかしら。

インベントリ画面内じゃなくても、金額や重量といったスペックの数値は同じように『$EverywhereBoldFont』で表示されるもよう。

魔法画面も同じく、大半が『$EverywhereMediumFont』で、変動のある数値周りが『$EverywhereBoldFont』という構成。
この『$EverywhereBoldFont』のフォントは、主に数値に使われるようなので、ひょっとしたら欧文書体を指定してもいけるんじゃないかと思ったのですが、魔法の使用可能レベルの表示が思いっきり日本語なので、文字化けしちゃいますね。
まあ、Stringsを編集して、レベル名を英語にしちゃえばいいですが。
だいたい「熟練者」とか「精鋭」とかって、どっちが上なのか下なのか、わかりづらくていけません。
しかし英語でも「Expert」と「Adept」……なんですね。
英語圏の方はどっちが上で下なのか、瞬時に判断できるのでしょうか。
おばちゃんにはムリですが。

スキル画面も同じく、基本が『$EverywhereMediumFont』で、変動のある数値周りが『$EverywhereBoldFont』という構成です。
面白いのは、プレイヤーのスキルレベルの数値は『$EverywhereBoldFont』なのに、Perkの取得に必要とされるスキルレベルの数値に関しては『$EverywhereMediumFont』だということ。
つまり今現在の自分のレベル、というのがボールドで強調されていて、ゲームの元からの設定値である必要レベル値はデフォルトのミディアムなんですね。
全部同じフォント指定で遊んでいるとまったくわからないですが、このへんの2つの数値に強弱があると、今現在のレベルがいくつで、あといくつレベルが上がるといいんだ、みたいなのが直感的にわかるような気がします。

レベルアップ時など、別ウィンドウ枠で開くタイプのメッセージボックス内の文字はだいたい『$EverywhereMediumFont』で表示されるのですが、付呪や鍛冶などを初めてチャレンジしようとした時に表示されるチュートリアル?っぽい説明の本文に関しては、『$EverywhereFont』になるようです。
あとはトゥイーン画面の項目名とか、システム画面のテキスト内でも『$EverywhereFont』が使われているもよう。


こうしてみると、メタっぽい情報とか、ちょっと雰囲気を変えたいな、みたいなノリの時に『$EverywhereFont』を使ってる感じでしょうか(適当)。
日本語フォントでも、少し違いのあるフォントを指定してあげるといいかもしれません。

【関連記事】
fontconfig.txtについて
book.swfと本のフォント について
スカイリム手書き文字用カスタムフォント(ふい字)