🏠 ホーム ニュース 📚 トピック解説 🏷️ タグ一覧 ℹ️ About
🔍 記事を検索
カテゴリ
📡 RSSフィード
Follow
X (Twitter) Threads
Quick Links
ニュース一覧 🏷️ タグから探す
🧠 Claude 🤖 Agent 💬 LLM 🔌 MCP 🛠️ Tool
Subscribe
📡 RSSフィード
Breaking News
2026.03.31 01:32 coding ui

Pretext、複数言語対応のTypeScript テキスト測定ライブラリをリリース

📐 ニュース
📐 AI Heartland News
TL;DR
chenglou氏が開発したPretextは、DOM測定を回避してテキスト幅と行数を高速計算。Canvas測定とDOM不要なピュアJavaScript実装で、レイアウト処理を最適化する。

何が起きたか

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

デモ環境

README.md、DEVELOPMENT.md、RESEARCH.mdでドキュメント、開発ガイド、精度ベンチマークを提供。

参考リンク


この記事はAI業界の最新動向を速報でお届けする「AI Heartland ニュース」です。

よくある質問
Q. Pretextとは何ですか?
Pure JavaScript/TypeScriptで実装されたテキスト測定・レイアウトライブラリ。DOM操作を避け、ブラウザのフォントエンジンを直接利用して高速計算。複数言語対応。
Q. 従来のDOM測定と何が違うのか?
getBoundingClientRectはレイアウトリフローを発生させ高コスト。Pretextはprepare()で初期化後、layout()で純算術演算のみ。リフロー完全回避。
Q. どの言語に対応していますか?
CJK(中国語・日本語・韓国語)、アラビア語、絵文字など複数言語対応。セグメンテーション精度はリサーチデータとして公開。
Q. どこにテキストを描画できますか?
DOM、Canvas、SVG対応。サーバーサイドレンダリング対応も開発中。計測のみ必要な場合はDOM操作不要。
Q. AIアプリケーション開発に適していますか?
はい。リアルタイムテキスト生成UIに最適。頻繁な測定が必要でも、レイアウトリフロー不要でパフォーマンス劣化なし。
← koharu|Go実装の軽量AIアシスタント、Claudeベースの高速チャットボット 数字なし時計「Gonon」、幾何学図形で時刻表示。言語と文化に依存しない新設計 →