AndroidでRobotoフォントを置換するとロック画面のコロンが豆腐になる原因

当サイトで紹介するMODやアプリなどの内、システムファイルの改変やシステムに深く関わるものはroot化やリカバリが必須となります(root化の必要なしと明記している場合は除く)。導入は自己責任で行ってください。また、技適の無い機器の使用は自己責任です。

AndroidでRobotoフォントを置換するとロック画面のコロンが豆腐になる原因

Androidのテーマ機能やFlashable ZIPなどでRobotoフォントを置換すると、ロック画面のコロンが豆腐 (四角に文字化け) になる原因と、その対策方法をメモしておきます。


ロック画面のコロンは”fancy colon”

Androidのロック画面や常に画面表示 (Ambient Display) には基本的には時計が表示されますが、テーマ機能やMagisk Module、flashable ZIPなどで/systemのRoboto-Regular.ttfを置換すると、コロンが▯のように長方形の文字に化けてしまいます。

実はロック画面の時計では通常のコロンではなく、”fancy colon”と呼ばれる特殊な文字が使用されています。(TalkBack用には通常のコロンに置き換えるような処理がされています)

Roboto-Regular.ttfの”fancy colon” (U+EE01) と通常のコロン (U+003A) を比べると、下の画像のように”fancy colon”のほうが中央寄せになっていることが分かります。

コロンとの比較

“fancy colon”は個人やベンダーが自由に割り当てできる私用領域の文字なので、通常のフォントにはほぼ100%含まれていません。そのため、Roboto-Regular.ttfを置換すると”fancy colon”が表示できず、豆腐になってしまう…というわけです。

ちなみに、Pixel 2 XLのAndroid 8.1.0ではRobotoではなくGoogleSansに置き換わっています。GoogleSansもRoboto同様に”fancy colon”を含んでいるので、RobotoをGoogleSansに変更するのであれば問題は起きません。

フォント編集ソフトでU+EE01を追加すればOK

コロンが豆腐になってしまうのを防ぐには、単純にフォント編集ソフトでU+EE01のグリフを追加すればいいだけです。

Robotoからコピーするか、コロンをコピーして自分で中央寄りに編集してください。

※RobotoのライセンスはApache License 2.0なのでライセンスの宣言さえあれば改変しても問題ありませんが、編集したいフォントのライセンスがどうなっているか確認の上編集してください。

フォント編集ソフトにはFontForgeなどがあります。使い方は検索してください。

FontForgeでの表示
FontForgeでの表示

これでコロンをちゃんと表示しつつ、他のアルファベットなどを別のフォントに置き換えられます。

文字化けせず
文字化けせず

Magisk moduleのKoruri Fontではv03でこの問題を修正しています。


カテゴリ:

コメントフォーム右上の「ログイン」メニューで各種SNSアカウントでログインできます。
匿名でコメントしたい場合は、名前とメールアドレスを入力した後「アカウントを作成せず投稿する」にチェックを入れてください。Disqusに登録すると、返信通知を受け取れます。