Solved:Font issue on GS2

以前「Galaxy S II(GT-I9100)をAndroid 2.3.6にアップデートするとフォント置き替えができなくなった」と書きましたが、ようやく解決。
それにしても終わってみれば余りにも単純なことでした。


解決のきっかけは昨日新しいストックROMをGalaxy S IIに焼こうとした際、その前作業としてTitanium Backupでインストールアプリ/設定をバックアップしようとすると、systemディレクトリの空き容量がほとんどないことに気づいたこと。

このように空き容量が250KB程しかなく、これだとフォントをコピーできないのも当然です。


そしてその後OdinでROM焼きし、新ファーム上で改めてsystemディレクトリの空き容量を確認すると5MB以上空いていました。
そこで日本語フォント(DroidSansJapanses.ttf)をsystem/fontsにコピーしてみるとちゃんとコピーでき、フォント置き換えに成功。

このスクリーンショットはフォント置き換え後ですが、それでも4.7MBも空いています。
つまり以前フォント置き換えがうまくいかなかったのは単にsystemディレクトリの空き容量不足でフォントファイルをコピーできなかったため、ということになります。


フォント置き換えはうまくいったものの、今回焼いたストックROMだとマーケットアプリのゴニョゴニョがうまくいかない上にWiFi接続がおかしい(接続は確立しているが、通信ができない)ということで結局ROM焼き前に取っておいたNandroid Backupでリカバリーすることに。

新ファームで使っていた期間が非常に短かったためファームバージョンのスクリーンショットを撮り忘れてしまったのですが(リカバリー中に気づいた)、今回焼いたストックROMはドイツ版で、そのためGMailの名称が"Google Mail"になっています(商標の関係でドイツでは"GMail"の名称を使えないため)。


リカバリーしたことにより再びsystemディレクトリの空き容量がほとんどない状態へ逆戻り。
systemディレクトリの空き容量を増やして必要なスペースを確保すればフォント置き換えができる、と分かりましたから、何とかしてsystemディレクトリの空き容量を確保する必要が。
各種キャッシュを削除したりしても空き容量は増えなかったので、結局リスキーな方法を取ることに。
つまりsystem/appに保存されているプリインストールアプリを移動させて空き容量を確保する、という方法です。
明らかに使わない、しかもファイルサイズの大きいアプリ(apkファイル、同名のodexファイルがある場合はそれも)をMicroSD(external_sd)へ移動させてsystemディレクトリに5MB程の空きを確保した後、日本語フォントをsystem/fontsへコピー。
必要な空き容量を確保してありましたから当然コピーはうまくいき、ようやくフォント置き換え成功。
これでCJKフォントの醜い日本語表示とおさらばできました。


それにしてもなぜ「systemディレクトリの空き容量不足」という単純なことに気づかなかったのか、ということを改めて考えてみると、思いついたのは次のような理由。
一つは以前のエントリに書いた「不要なフォントを移動させた後にフォント置き換えをしようとして失敗し、その後元のフォントを戻そうとした際にコピーに失敗した」こと。

「ディスクフルと言われるのなら、不要そうなフォントを消してディスクスペースを空けてやればコピーできる?」と思い同じぐらいのファイルサイズである"DroidIndia.ttf"というファイルを削除してから再度試してみてもNG。

やっぱりディスクフルです。

しかもバックアップしておいたDroidIndia.ttfを戻そうとしてもコピーできない。

同じファイルを移動させ、その後戻したわけですから、空き容量不足でコピーできない、といったことは起きないはず。
それで「何か特殊なパーミッションが設定されている」と思ってしまったわけです。
そしてもう一つが「Galaxy S IIはサムスンのフラッグシップスマートフォンとして登場した非常にハイスペックな端末ですから、ディスク容量不足なんて起きるはずがない」という私の勝手な思い込み。
ユーザーアプリインストール領域、内蔵ストレージの容量が大きいため、それ故systemディレクトリにも十分な容量が割り当てられているはず、と思っていたものの、実際にはギリギリだった。
しかし上記の思い込みによってそれに気づくことができなかった、というわけです。


最後にこの手のネタのお約束ですが、systemディレクトリ内をいじるため下手すると端末が起動しなくなったりと何らかの不具合が発生する可能性がありますから、やる際は自己責任でお願いします。
言うまでもないですが要rootです。