japanese-wrapは限界を感じたので、全く別の方法で新しいパッケージを作りました。
パッケージ紹介
Atomで日本語などのソフトラップが正常に動作しない問題を解決してくれると思われるパッケージです。japanese-wrapの代替として、等幅フォント使用の日本語環境に限定せずに作成しました。
特徴
- CSSのスタイルに基づき、カスタマイズしたワードラップを実現!したと思う。
- プロポーショナルフォントでもCJKでも何でもオッケー。たぶん。
- ワード単位改行や禁則処理もしてくれる。
- 設定変えれば、ハードラップだって刻めちゃう。
- NFDもサロゲートペアもちゃんと考えてくれる。(激遅の厳密モードでのみ有効)
- Atom本家がワードラップをうまくしてくれる日はいつになるのだろう…って愚痴をこぼす必要は無い。
どんなやつなの?
Atomへのハック方法はいつもの。あとはがんばって改行位置を探しているだけです。
改行位置を判断する方法
いちいちJavaScript上で自分で計算していたら、遅いです。ということでchromium君にレンダリングさせて、そこから取得しようってのが今回の方法です。
- レンダリング用の砂場を作る。
- wrap関係のスタイルシートを設定する。
- テキストを文字単位で
span
で分けたのを入れる。 - どの
span
で次の行になっているかを調べる。
砂場はReact.jsで作りました。
課題
- 遅い。遅すぎる。もっと速く!もっと高速に!光の速度を超え、時空の壁を突破し、過去に遡るぐらいまでにしたい。
- chromiumがハイフネーションに対応してない(TдT)
ということで、速くしてくれるPRを募集中です。
あ、仕組みとしてコンフリクトするので、使う前にjapanese-wrapは無効にしてね。