Что это такое
Pretext — молодая TypeScript-библиотека для измерения и раскладки многострочного текста. Она решает болезненную задачу интерфейсов: понять высоту абзаца, переносы строк и расположение текста без постоянных DOM-измерений вроде getBoundingClientRect или offsetHeight, которые могут вызывать дорогой перерасчет layout.
Репозиторий создан в 2026 году, поэтому это свежий проект, а не зрелый стандарт. Тем не менее проблема, которую он решает, очень практичная: виртуальные списки, редакторы, canvas/SVG-рендеринг, предпросмотр сообщений и сложные интерфейсы часто упираются в измерение текста.
Что внутри
Библиотека разделяет подготовку текста и быстрый расчет раскладки. prepare нормализует пробелы, сегментирует текст и заранее измеряет части, а layout затем дешево пересчитывает строки и высоту для заданной ширины. Такой подход особенно полезен при ресайзе: не нужно заново делать всю тяжелую подготовку.
Измерение абзаца без DOM-разметки
Пример показывает основную модель: подготовить текст один раз, а затем быстро считать высоту и количество строк для нужной ширины.
import { prepare, layout } from "@chenglou/pretext";
const prepared = prepare("AGI весна. بدأت الرحلة 🚀", "16px Inter");
const result = layout(prepared, 320, 20);
console.log(result.height, result.lineCount);
Где полезен
Pretext может быть полезен в редакторах, чатах, досках, инструментах дизайна, canvas-приложениях и любых местах, где текст нужно раскладывать вручную или предсказывать размер до реального рендера. Поддержка разных письменностей особенно важна: переносы и сегментация сильно отличаются между языками.
Ограничения
Главное ограничение — молодость проекта и сложность самой области. Браузерная типографика полна крайних случаев: шрифты, emoji, bidirectional text, переносы, white-space и разные движки. Pretext выглядит перспективно, но для критичного интерфейса его стоит проверять на собственных языках, шрифтах и размерах.