找回密码
 立即注册
首页 业界区 业界 Pretext:值得关注的文本排版引擎

Pretext:值得关注的文本排版引擎

溧久苟 昨天 20:10
Pretext 是一个用 TypeScript 实现的用于多行文本精确测量和布局的引擎。不碰 DOM,不触发 reflow,却能完美匹配浏览器字体引擎在各种语言、emoji、混合文字方向下的真实表现。它刚刚发布,发展势头很猛。
我觉得这是过去十年里最值得关注的文本引擎之一。它不是小打小闹的优化,而是把文本这块一直卡着大家脖子的核心问题彻底解决掉了。
1.gif

先说清楚它解决什么痛点。网页上但凡涉及动态文本,比如聊天消息、文章卡片、虚拟列表、自动换行输入框、响应式排版,你都得问浏览器“这个文本在多宽容器里到底占多少高”。过去唯一办法是扔进 DOM,读 getBoundingClientRect 或者 offsetHeight,然后立刻写回样式。这操作直接触发布局重排,浏览器要重新计算整个页面流式布局,尤其在长列表、频繁 resize、AI 生成内容实时流式输出的时候,性能直接雪崩。很多框架只好批量测量、缓存估算值、妥协精度,结果就是滚动卡顿、布局偏移、虚拟化高度猜不准、画布渲染对不上 CSS 样式。Pretext 把这一切全绕过去:一次 prepare 预计算,后面 layout 全是纯算术,毫秒级出结果,还跨浏览器一致。
它体积极小,支持所有主流语言,包括 CJK、阿拉伯文、希伯来文、emoji、混合 bidi,还特别处理了 Safari、Chrome、Firefox 各自的换行 quirks。作者 Cheng Lou 之前在 React、ReasonML、ReScript 这些项目里摸爬滚打,又在 Midjourney 干过视觉生成,对文本排版的需求理解得透彻。他说这是“爬过地狱”才搞出来的基础件,我完全相信。因为文本测量看似简单,实际是浏览器字体引擎 + Unicode 规范 + 各家实现差异的超级复杂组合,普通人根本遭不住。
核心 API 拆解与使用

库暴露两套 API,一套给“只需要高度”的场景,另一套给“手动控制每一行”的高级玩法。
先看简单那套,绝大多数业务场景够用:
[code]import { prepare, layout } from '@chenglou/pretext'const prepared = prepare('AGI 春天到了. بدأت الرحلة
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册