見た目の一文字を表す、書記素にUnicodeを分解するライブラリを、最新の Unicode 13.0.0に対応させたいところ。 各端末にダウンロードされるライブラリとしては、サイズが240KBと大きいも気になっていたので、ひとまず Unicode 10.0.0 対応の CoffeeScriptで作られたバージョン「grapheme-breaker-u10-0 by @yumetodo」をJavaScriptに移植しました。(grapheme-breaker-mjs src on GitHub

grapheme-breaker-mjs JavaScript sample
結合絵文字も正しく書記素の分解、できてます。

CoffeeScriptは、Pythonのようにインデントでブロックを表記するJavaScriptを出力する言語。coffee -c コマンドで、JavaScriptファイルが生成されるので、それを元にブラウザでも動作するES Module対応を進めました。 requireをimportに、使用しているライブラリも含めて js から mjs への書き換え。mochaを使ったテストも通りました。ブラウザで動作させたところ、Node.js とブラウザ上の動作の違いである、Bufferとbase64の扱いの違いに気が付き、対応して完了。


taisukef/grapheme-breaker-mjs: A JS implementation of the Unicode grapheme cluster breaking algorithm (UAX #29)
サーバーでもクライアントでも使えるライブラリのできあがりです!

GitHub pages は、gzipで自動的に圧縮されている模様、240KBあっても16KB程度に圧縮されるので、実際は大差なかったかも。base64ではなくバイナリファイル化してファイル数を減らす方が効果ありかもしれません。

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / RSS