본문으로 건너뛰기

CrossPoint Reader CJK

電子ペーパー端末のファームウェアに、縦書きとCJK読書を足しました

CrossPoint Reader は、Xteink X3・X4 の電子ペーパー端末で、メーカー製ファームウェアを置き換えるオープンソースのファームウェアです。EPUBの描画から無線転送、OPDSまで備え、24のUI言語とRTLに対応していますが、CJKの文字は扱いません。 このフォークは、そこにCJK読書を足したものです。

足したもの

  • 縦書き — 日本語の本を本来の向きで読めます。縦書きは字を90度回せば済む話ではなく、文字の種類ごとに扱いが変わります
  • 括弧の回転と余白 — 「」『』のような隅付き括弧は回転させず位置をずらす必要があり、始め括弧と終わり括弧では余白も異なります
  • 縦中横 — 縦書きの中で1〜2桁の数字は横に組み、3桁以上は再び一字ずつ立てます
  • CJKフォントの描画 — 内蔵CJKフォント、SDカードの .epdfont 対応、フォントに無い字を別フォントから探すフォールバック
  • 大きなフォントの遅延読み込み — CJKフォントはラテン系よりはるかに大きく、ESP32C3のメモリには余裕がありません
  • 韓国語UI — インターフェースの翻訳とフォントのフォールバック
  • 単語の辞書引きと単語帳 — 本文で範囲を選んで意味を調べ、集めた語をフラッシュカードで見返せます
  • 辞書変換ツール — JMdictと日本語版ウィクショナリーを、端末が読める形式に変換するスクリプト

作った理由

電子ペーパー端末は、ハードウェアが良くてもファームウェアが言語に対応していなければ使えません。端末を買い替えるより、ファームウェアを直すほうが早いと判断しました。

元のコードを作り替えるのではなく、その上に載せる形にしました。本家は動き続けるので追随できる必要があり、実際にこのフォークは何度も上流をマージしています。