12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Atomで上手にwarpを刻んでくれるwrap-styleを開発しました。

Last updated at Posted at 2015-10-10

japanese-wrapは限界を感じたので、全く別の方法で新しいパッケージを作りました。

パッケージ紹介

wrap-style

Atomで日本語などのソフトラップが正常に動作しない問題を解決してくれると思われるパッケージです。japanese-wrapの代替として、等幅フォント使用の日本語環境に限定せずに作成しました。

特徴

  • CSSのスタイルに基づき、カスタマイズしたワードラップを実現!したと思う。
  • プロポーショナルフォントでもCJKでも何でもオッケー。たぶん。
  • ワード単位改行や禁則処理もしてくれる。
  • 設定変えれば、ハードラップだって刻めちゃう。
  • NFDもサロゲートペアもちゃんと考えてくれる。(激遅の厳密モードでのみ有効)
  • Atom本家がワードラップをうまくしてくれる日はいつになるのだろう…って愚痴をこぼす必要は無い。

どんなやつなの?

Atomへのハック方法はいつもの。あとはがんばって改行位置を探しているだけです。

改行位置を判断する方法

いちいちJavaScript上で自分で計算していたら、遅いです。ということでchromium君にレンダリングさせて、そこから取得しようってのが今回の方法です。

  1. レンダリング用の砂場を作る。
  2. wrap関係のスタイルシートを設定する。
  3. テキストを文字単位でspanで分けたのを入れる。
  4. どのspanで次の行になっているかを調べる。

砂場はReact.jsで作りました。

課題

  • 遅い。遅すぎる。もっと速く!もっと高速に!光の速度を超え、時空の壁を突破し、過去に遡るぐらいまでにしたい。
  • chromiumがハイフネーションに対応してない(TдT)

ということで、速くしてくれるPRを募集中です。

あ、仕組みとしてコンフリクトするので、使う前にjapanese-wrapは無効にしてね。

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?