あれこれやってみるが全滅:GS2日本語フォント導入(訂正あり)

先日のエントリに「Galaxy S II(GT-I9100)をAndoid 2.3.6にアップデートしたら日本語フォントの導入ができなくなった」と書いた後、「これならどうかな?」と思ったことをいろいろやってみました。
しかし結果は全滅。
何をやっても日本語フォントを導入することができません。


では何をやったのかというと…
まずは先のエントリの最後に書いたadb pushでPCからフォントを端末へ送り込む方法。

このようにadb shellを使ってコピーした時と同様、ディスクフルのエラーが出て失敗。
次に端末をハードリセットし、その状態でES File Explorerを使ってフォントをコピーしてみることに。
ROM焼き後アプリ、端末設定がリセットされず旧環境が引き継がれたので、それが原因かも、と思ったからです。
しかしこれもコピー失敗のエラーが出てNG。


ここでふと「CyanogenMod 7.1を焼いてAndroid 2.3.7が導入されているMilestoneではどうか」と思い久々にMilestoneを引っ張り出してきて起動。
最初にCyanogenModを導入した際のエントリで(この時はAndroid 2.3.5)「DroidSansJapanese.ttfがないのに日本語がちゃんと表示される」と書きましたが、改めてSystem/fontsディレクトリを覗いてみるとDroidSansJapanese.ttfがある。

恐らくAndroid 2.3.5から2.3.7へアップデートした際に仕様が変わったためだと思われますが、それにしてもこのフォント、ファイルサイズが1.1MB程とかなり小さいのが気になります。
そこでこのフォントファイルをバックアップした上でGalaxy S IIに導入しようとしている日本語フォントをコピーしてみました。
するとファイルコピーが終了した瞬間ES File Explorerが強制終了した後日本語表示が豆腐になってしまい、その後しばらくして突然再起動してしまいました。
再起動すると日本語表示がCJKフォントによるものになっていて、System/fontsディレクトリを見てみるとDroidSansJapanese.ttfが消えている(コピーできていない)。
そのためCJKフォントによる日本語表示になってしまったようです。
しかしバックアップしておいたDroidSansJapanese.ttfを戻して再起動してみると日本語フォントによる表示に戻ったので何よりでした。


この日本語フォントはファイルサイズが1.1MB程ということで、もしかすると「ディスクフル」と言われることなくコピーできるかな、と思いGalaxy S IIにコピーしてみることに。
しかし端末上でのコピーでも、adb push利用でもコピーできず。
「ディスクフルと言われるのなら、不要そうなフォントを消してディスクスペースを空けてやればコピーできる?」と思い同じぐらいのファイルサイズである"DroidIndia.ttf"というファイルを削除してから再度試してみてもNG。
やっぱりディスクフルです。
しかもバックアップしておいたDroidIndia.ttfを戻そうとしてもコピーできない。
そこで事前にCWMを使いNandroid Backupしておいたバックアップイメージでリカバリーし、元に戻しました。
戻さなくてもテバナガリタミール文字が表示できなくなるだけでしょうから私にはどうでもいいのですが、後で何らかのトラブルが発生しても困りますからね。
Milestoneの挙動からすると導入するフォントには署名か何かが必要な感じがしていたのですがそうではなく、Android 2.3.6以降ではSystem/fontsディレクトリに何か特殊な属性が設定されていてファイルに与えられているパーミッションに関係なく一切のファイル書き換えがNGになっている、ということのようです。
これに関する情報を探してみましたが、日本以外ではフォントの入れ替えへの需要がないからか、有用な情報は見つかりませんでした。
(修正):フォントをコピーできないのは単にsystemディレクトリに十分な空き容量がないため。
詳しくは改めてエントリしましたので、そちらをご覧ください。


ちなみにこのMilestoneに導入されている日本語フォント、Windows上で開こうとすると「有効なフォントファイルではありません」というエラーが出て開けない。
1.1MB程というファイルサイズから考えるとこれはDroidSansFallback.ttfの差分ファイル(CJKフォントに含まれないフォントのみが含まれる)のような気がします。


これだけやってもフォント導入ができない、となるともうお手上げです。
もうストックROM(サムスン純正ファーム)であれこれやるのは止めて、カスタムROMに走った方がいいのかな、とも思っています。
CyanogenMod 7.1だと標準で日本語フォントが含まれていますから、日本語フォントの導入は不要ですからね。
そしてこれをやりたいと思っているので、Deodexed環境にしたい、というのもありますし。


今導入しているものよりも新しいリーク版ストックROMを入手したので、とりあえずそれを焼いてみるかな。