2013年3月1日金曜日

Raspberry PiのXMBCで日本語ファイル名表示

順番が間違っているような気がするが、Raspberry Piがあり、HDMIでディスプレイにつないでXBMCメディアセンターが動いているという状態からはじめる。

SMBでWindowsマシン上にある動画ファイルのフォルダをマウントして再生しようというわけである。

XBMCはPi用LinuxであるRaspianとは別に、最小限の内容にしぼったOpenELECという組み込みLinuxの上で動くイメージファイルが配布されている。このイメージファイルで起動すると、FAT16のパーティションの次にExt4パーティションができ、そこにOpenELECが展開され、以後ここから起動する。

Raspberry PiのGPUアクセラレーションのおかげで、全く問題のない性能が出ている。ところが、ファイル名に日本語が使われていると、その部分は空白になってしまい、どれがどれだかわからないことになる。理由は簡単で、Unicodeフォントを搭載しているものの、日本語のグリフが含まれないものだけがあるからだ。

このあたりは自分でソースからビルドするならばどうにでもなるのだが、あいにく手元に適当なLinuxマシンがなく、起動しているOpenELECにsshログインしてフォントを書き込みたいということになるものの、ルートパーティションはread onlyでマウントされており、面倒だ。また、OpenELECそのものが頻繁にアップデートされていることを考えると、バックアップできない場所にはフォントを置きたくない。

手っ取り早く書き換えできるのが、メディア(動画や音声、写真など)を置く/storage以下となる。

XBMCのUIは、Skinによって全く違うものに変更できる。UIはXMLで定義されていて、画像ファイルもフォントもメッセージもすべてSkinによって置き換えができる。要するに、日本語フォントを含むSkinを自前で作り、addonとして組み込んでしまえば解決というわけだ。

ここではひとまず、その前段階として、適当なSkinをaddonとして導入し、それをsshログインした状態で書き換えて対処してみる。

オフィシャルに提供されているSkinのなかで、今回はXeeboを選んでみた。デフォルトとは大きく異なり、タッチパネルでの操作を意識したという、UIパーツのサイズが大きめで、フラットデザインのすっきりした印象のものだ。

addonは、/storage/.xbmc/addon以下に書き込まれる。Xeeboは、skin.xeeboというディレクトリ以下に展開されている。フォントは720p/fonts以下、フォントの設定は720p/Fonts.xmlに記述されている。

そこで、適当な日本語グリフを含むUnicodeフォントとして、IPAexフォントを選んでみた。IPAexゴシックを使うことにする。ファイル名はipaexg.ttfだ。そこで、
$ scp ./ipaexg.ttf root@IPアドレス:/storage
として、書き込みができる/storageのところにコピーする。その後、OpenELEC側で
# mv ~/ipaexg.ttf ~/.xbmc/addon/skin.xeebo/720p/fonts
で、所定の場所に入れてやる。ここには専用にデザインされたxeebo.ttfとxeebo-light.ttfが入っている。ファイル名を表示するのはxeebo.ttfのほうなので、ipaexg.ttfをこの名前で上書きしてもいいかもしれない。ただ、XMLファイル~/.xbmc/addon/skin.xeebo/720p/Fonts.xmlを編集して、xeebo.ttfをipaexg.ttfに置き換えるのでも同じことだ。再起動すればちゃんと日本語のファイル名が表示される。

XBMCの設定で、autoupdateするようにしていると、Skinが置き換えられてすべてが無になるかもしれない。それを避けるなら、自分で別名のテーマを作成し、zipして、/storage直下に置き直接インストールするのが無難だろう。いまのXeebo改造版をzipしてバックアップをとっておくのがいちばん簡単といえる。

ひとまず、当面の解決ということでこの項を終わる。