Pretext开源:排版未来不是CSS

Pretext开源:排版未来不是CSS

# Midjourney 工程师开源 Pretext:零依赖文本排版库,用纯算术告别浏览器回流

据 [1M AI News](https://t.me/OneMillion_AI) 监测,Midjourney 工程师、React 动画库 **react-motion** 作者 **Cheng Lou** 近日开源了 **Pretext** —— 一个基于 **JavaScript/TypeScript** 的文本测量与排版库,且 **零依赖**。

与传统依赖浏览器 DOM 测量的方法不同,Pretext 不再使用 `getBoundingClientRect`、`offsetHeight` 等接口,而是绕过 DOM,直接通过**纯算术计算**完成文本高度测量与自动换行,从源头上避免 **layout reflow(布局回流)** 带来的性能损耗。

## Pretext 是如何工作的?

Pretext 的核心流程分为两个阶段:

### 1. `prepare()`
通过 **Canvas API** 一次性测量字符宽度,并建立缓存数据。

### 2. `layout()`
基于已缓存的宽度信息,直接进行纯算术排版计算,无需再次触发浏览器布局。

这种设计让文本布局从“依赖浏览器反复测量”,变成了“提前准备 + 快速计算”,效率提升非常明显。

## 性能表现有多夸张?

在 **500 段文本** 的基准测试中:

– `prepare()` 耗时约 **19ms**
– `layout()` 仅需 **0.09ms**

Cheng Lou 在配套文章中形容这种提升时写道:

> “性能提升不是渐进的,而是质变的:0.05ms 对比 30ms,零次回流对比五百次。”

这意味着,Pretext 不只是“更快一点”,而是把文本排版性能带到了一个全新的量级。

## 支持哪些文本场景?

Pretext 并不局限于英文排版,它支持:

– **中日韩文字**
– **阿拉伯语**
– **emoji**
– **混合双向文本**

同时还能渲染到多种目标环境:

– **DOM**
– **Canvas**
– **SVG**

无论是网页界面,还是图形化编辑器、画布类应用,都具备很高的适配价值。

## 典型应用场景

Pretext 特别适合以下场景:

1. **虚拟列表与遮挡剔除**
无需提前猜测文本高度,列表渲染更稳定。

2. **瀑布流等 JavaScript 驱动布局**
更适合复杂、自定义的排版策略。

3. **聊天气泡的多行文本自适应宽度**
文本多少不同,气泡宽度可自然收缩。

4. **图片环绕文本的编辑排版**
更容易实现接近专业编辑器的排版效果。

## 为什么值得关注?

Pretext 最吸引人的地方,不只是“零依赖”,而是它试图重新定义前端文本排版的实现方式:

– 不依赖 DOM 实时测量
– 避免高成本布局回流
– 支持复杂语言与多种渲染目标
– 为高性能 UI 和编辑器提供更稳的底层能力

对于需要处理大量文本布局的前端应用来说,这可能会是一个非常值得尝试的新工具。

原创文章,作者:admin,如若转载,请注明出处:https://www.23btc.com/164584/

(0)
上一篇 1天前
下一篇 1天前

相关推荐