はじめに

Kindleの最安モデルがホコリをかぶっていたのですがなんとなくマウントしてみたところフォントの変更に成功した。 こんなんググればいっぱい出てくると思うので今更書くまでもない話ですが、体験として面白かったので書いておく。

mount, ls

USB接続すると、/dev/sdc1というものが生える。 lsblk -fとすると、どうやらvfatのようだ。マウントする。lsを撃ち込むと、document、systemというディレクトリ、名前がハッシュのファイルなどがある。

怪しいsystem

あきらかにsystemディレクトリに何かありそうだ。fontsというディレクトリがぶら下がっており、フォントを変えたい気持ちが突然わいてきた。

fonts

中を見ると、ja.fontというファイルがある。これやな。

cramfsやんけこれ

xxd -g 1 ja.font | headしてみると45 3d cd 28というのが見える。もちろん知らないのでググる。Comressed ROMFSということが分かった。 これもマウントしてみる。 01-ja.confというfontconfigファイルとimage_manifestというフォント情報などが書かれたjsonファイルっぽいもの、ありましたねぇttfファイルが置かれているfontsディレクトリ。

read-onlyじゃんハゲ! コピーする

とのこと

fontをつっこむ

好きなフォントを突っ込もう!! ライセンスを無視するのは :no_good:

JSONに書かれた情報を更新する。"FONTFILE.ttf.md5"というパラメーターがあるので、md5sum FONTFILE.ttfで得た値を差し込む。 "fonts.ja"には明朝体をローマ字で書く(のか?)。"font.MINCHOROMAN.display"パラメーターにはUTF-8でフォント名を埋め込みたい。 ここでLua5.3のutf8モジュールが役に立つわけですね! MoonScriptのリスト内包表記も便利だ!!

print table.concat ["\\u%x"\format c for _, c in utf8.codes "FONT-NAME"]

mkfs.cramfs

コピーおよび変更したディレクトリをComressed ROMFSにもどす。

すっとする

Comressed ROMFSに戻したイメージファイルをja.fontとしてスッと戻す

umount、確認

ええな

おわりに

買ってすぐ(2015年1月あたり)にフォントの変更を試み、ググってみたりはしたものの結局フォントの変更に至らなかったので、今回はよくやったと思いました。 fileコマンドなどの使用をパッと思いつけばもう少し早くできましたね、反省してください。