Pretext: Die DOM-freie Textmessungsbibliothek, die KI-Coding-Agents bereits verwenden

Pretext: Die DOM-freie Textmessungsbibliothek, die KI-Coding-Agents bereits verwenden

lschvn7 Min. Lesezeit

Eine neue Bibliothek erschien am 29. März auf npm — ohne Ankündigung und bereits mit Hunderten von Downloads: Pretext (@chenglou/pretext), eine reine JavaScript- und TypeScript-Bibliothek für mehrzeilige Textmessung und Layout — ohne jemals das DOM zu berühren.

Der Autor ist Cheng Lou, bekannt für seine Arbeit an React und ReasonML. Das Konzept ist klar: Text so messen, wie Browser es tun, mit der eigenen Font-Engine des Browsers als Grundlage, aber vollständig über Canvas — kein getBoundingClientRect, keine offsetHeight, kein Layout-Reflow.

Warum das wichtig ist: Das Reflow-Problem

Jeder Frontend-Entwickler ist gegen diese Wand gestoßen: Sie müssen wissen, wie hoch ein Textblock sein wird, bevor er gerendert wird. Die traditionelle Antwort ist: rendern, messen, anpassen. Das löst Layout-Reflow aus — eine der teuersten Operationen im Browser.

Pretext umgeht das vollständig. Es misst Text mit einer versteckten Canvas und der measureText()-API des Browsers, die dieselbe Font-Engine wie das DOM verwendet.

import { prepare, layout } from '@chenglou/pretext'

const prepared = prepare('AGI le printemps arrive. 시작했다 🚀', '16px Inter')
const { height, lineCount } = layout(prepared, textWidth, 20)

prepare() macht die einmalige Arbeit: Normalisieren von Leerzeichen, Segmentieren von Text, Anwenden von Kleberegeln, Messen von Segmenten mit Canvas. layout() danach ist ungefähr 0,09 ms für 500 Texte.

Benchmark-Zahlen

  • prepare(): ~19 ms (einmalig, gecacht)
  • layout(): ~0,09 ms (heißer Pfad, rein arithmetisch)

Ein einzelner getBoundingClientRect()-Aufruf auf einem moderat komplexen DOM-Subtree kann 1-5 ms auf einem Mittelklasse-Gerät dauern. Pretexts heißer Pfad ist 10-50× schneller als DOM-Messung.

Vollständige Unicode + Emoji + Bidirektionale Unterstützung

Pretext behandelt Text-Shaping korrekt über alle Sprachen hinweg. Das README hebt speziell Emoji- und gemischten bidirektionalen (bidi) Text hervor — Arabisch gemischt mit Englisch, Hebräisch gemischt mit Zahlen.

Installation

npm install @chenglou/pretext

Demos auf chenglou.me/pretext. Der Quellcode auf GitHub.

Häufig gestellte Fragen

Verwandte Artikel

Weitere Berichterstattung zu ähnlichen Themen und Tags.

Oxc Baut still Und Leise Das Schnellste JavaScript-Toolkit in Rust — Und Es Ist Fast Fertig
javascript

Oxc Baut still Und Leise Das Schnellste JavaScript-Toolkit in Rust — Und Es Ist Fast Fertig

Während ESLint v10 sich mit Legacy-Bereinigung herumschlug, lieferte das Oxc-Projekt einen Linter 100x schneller, einen Formatter 30x schneller als Prettier, und einen Parser, der SWC im Staub zurücklässt. Hier ist, was der JavaScript Oxidation Compiler wirklich ist.
Knip v6 Bringt oxc-Parser und 2- bis 4-fache Performance-Steigerung
typescript

Knip v6 Bringt oxc-Parser und 2- bis 4-fache Performance-Steigerung

Das beliebte Tool zum Aufspüren von ungenutztem Code in JavaScript und TypeScript hat seinen TypeScript-Backend durch den Rust-basierten oxc-Parser ersetzt — mit beeindruckenden Ergebnissen.
Vue 3.5: Das 'Minor'-Release, das die Regeln der Frontend-Performance neu geschrieben hat
javascript

Vue 3.5: Das 'Minor'-Release, das die Regeln der Frontend-Performance neu geschrieben hat

Vue 3.5 kam ohne Breaking Changes und mit einer Reihe von internen Verbesserungen, die jeden Entwickler aufhorchen lassen sollten — 56% weniger Speicherverbrauch, Lazy Hydration und eine stabilisierte reaktive Props-API.

Kommentare

Anmelden Melden Sie sich an, um an der Diskussion teilzunehmen.

Noch keine Kommentare. Seien Sie der Erste, der seine Gedanken teilt.