スカイリムの日本語化について、ずっと疑問に思っていたことがありました。
それは……
日本語版の「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系フォントについて
・
スカイリム手書き文字用カスタムフォント(ふい字)