GitHub開発者chenglou氏が、テキスト測定とレイアウト処理を行うTypeScript/JavaScriptライブラリ「Pretext」をリリースした。DOM操作による高コストなレイアウトリフロー(reflow)を完全に排除し、ブラウザの内部フォントエンジンを活用した高速計算を実現。18,500以上のGitHub Starを集め、プロダクション利用に向けた開発が進行中。
Webアプリケーション開発において、テキストの描画幅や行数を測定する際、従来はgetBoundingClientRectやoffsetHeightなどのDOM API経由で行われてきた。しかし、これらの操作はレイアウトリフローをトリガーし、ブラウザパフォーマンスにおいて最も高コストな処理の一つとされている。特にリアルタイムテキストエディタやAI駆動のUIコンポーネント開発では、頻繁な測定が必要となり、パフォーマンス劣化は避けられない問題だった。Pretextはこの課題をDOM測定なしのピュアJavaScript実装で解決する。
Pretextは2段階のプロセスで動作する。
prepare()関数は初期化ステップとして機能:
layout()関数は高速ホットパス:
const prepared = prepare('AGI 春天到了. بدأت الرحلة 🚀', '16px Inter')
const { height, lineCount } = layout(prepared, textWidth, 20)
// 純粋な算術演算のみ。DOM操作なし
キャッシュされた幅データを利用した純算術処理により、レイアウト計算は瞬時に完了。複数言語(CJK、アラビア語、絵文字含む)への対応が組み込まれている。
Pretextは複数の出力ターゲットに対応:
段落の高さ測定、行数カウント、テキスト幅計算といった基本機能に加え、複数言語のテキストセグメンテーション精度がリサーチデータとして公開されている。
インストール:
npm install @chenglou/pretext
デモ環境:
bun install → bun start でローカル開発サーバー起動、/demosにアクセスREADME.md、DEVELOPMENT.md、RESEARCH.mdでドキュメント、開発ガイド、精度ベンチマークを提供。
この記事はAI業界の最新動向を速報でお届けする「AI Heartland ニュース」です。