tetsu31415.log

androidなどのことを書き綴っていこうと思います。

CustomFont Managerを作った話

はじめに

このアプリはSHARP(au,docomoのみ)とFUJITSUAndroid端末でrootを取らずにカスタムフォントを入れるツールです。
標準的なAndroidではsystem領域を弄らないとシステムフォントの変更ができませんがSHARPFUJITSUに関しては任意のフォントを使用することができる機能が実装されているのでフォントを変えることができます。(公式的な方法ではない)

多くのサイトでadbを使ってカスタムフォントを転送する方法が紹介されていますが、このアプリはそれをアプリで完結させるために作られました。
昨年の5月に野良アプリでSHARP端末のフォントを変更するツールを公開してこちらの記事に書いたのですがPlayに上げるために作りなおしました。

ダウンロード

CustomFont Manager - Google Play
https://play.google.com/store/apps/details?id=com.tetsu31415.customfont

auSHARP端末でこの方法を使ったフォント導入をするとauアプリが使えなくなるようです。ご注意ください。

使い方はアプリ内に書いてあるのでここには特に書きません。
いくつかのサイトで使い方が紹介されているのでこちらを見ていただければ幸いです。

  • orefolder.blog

CustomFont Managerでシステムフォントを変更しよう ※ただし富士通・シャープに限る

CustomFont Managerを使ってAndroidスマートフォンのフォントを変更する。

  • あんどろいど遅報

【アプリレビュー】root不要でシャープ製、富士通製Androidスマフォのフォント変更が簡単に出来る! CustomFont Manager レビュー

仕組み

なぜこのようにフォントが変更出来るか、アプリでどのようなことを行っているかを書きます。

SHARP端末の場合

/data/fonts/customfont.ttf

に任意のフォントを置くとフォント設定画面でそのフォントが選択できるようになっています。
adbを使うとこのようにして転送できます。(入れたいフォントはxxx.ttfとする)

adb push xxx.ttf /data/fonts/customfont.ttf

この場所はユーザーアプリの権限で書き込み可能です。
Android1.6の機種(IS01/SH-10B)ではユーザーアプリ権限の書き込みが無理だった気がしますが、一度shellの方でcustomfont.ttfをおいてしまえば、このアプリでそれを上書きしてフォント変更することは可能なはずです、たぶん。
SoftBankSHARP端末では/data/fonts自体が存在しないのでこの方法は使えません。
au端末でこの方法を使ってフォントを変えるとauアプリ周りが使えなくなるそうなので気をつけてください。
【追記】SHL23以降、SH-01F以降のSHARP端末ではこの方法は使えなくなりました。/data/fontsが存在しません。残念ですね。

FUJITSU端末の場合

FUJITSUの端末にはオリジナル手書きフォント機能が搭載されています。
この機能は10文字の指定された文字を手書きすることでその手書きしたのようなフォントを生成してそのフォントに変更できるという独自機能です。
ここで重要なのが生成されたフォントをどこに保存して読み込んでいるかです。

/data/fonts/myfont.ttf

オリジナル手書きフォントに設定した際、生成されたフォントはここに置かれます。そしてそれが読み込まれます。
ということはここを書き換えれば自由なフォントを設定できます。ありがたいことにこの場所は書き換え可能です。
adbを使うとこのようにしてできます。(入れたいフォントはxxx.ttfとする)

adb push xxx.ttf /data/fonts/myfont.ttf

アプリの仕組みについて

このアプリでは上に書いたadbでできるフォント導入をアプリでやっているだけです。
ただ、フォントの転送はシャットダウン処理中にされています。
起動中でも転送はできますが、一部しか変更されなかったり、文字表示がおかしくなることがあるからです。
シャットダウン処理中に書き込まれるので正常な方法でシャットダウンをしないとフォントは書き込まれないようになっています。
例えばadb rebootやバッテリーを抜くなどして電源を切ってもフォントは書き込まれませんのでご注意ください。

このアプリはroot権限を使って本来書き換え不可能な部分を書き換えるものではないので基本的に文鎮化等は起こらないはずです。
何かありましたら @tetsu31415 まで連絡していただけるとありがたいです。

最後まで読んでいただきありがとうございました。