一个人用AI写的小工具,撼动了网页排版三十年的老规矩
(来源:至顶AI实验室)
你每天上网打开的每一个网页,文字出现在哪里、图片放在什么位置、拖动窗口时一切怎么重排,背后都靠一个上世纪九十年代设计的老系统在运转。它叫“DOM排版”,已经工作了三十年。对静态页面来说它够用,但面对今天越来越动态的网页,它有一个致命的毛病:每次需要知道一段文字有多高、在哪断行,浏览器就得暂停手头所有事情,重新测量一遍。这个过程叫“布局回流”,相当于你每次想知道房间能不能塞下一张沙发,都得打电话叫物业派人来量一遍房间——而你自己没有尺子。
3月27日,Midjourney工程师Cheng Lou在社交平台X上宣布了一个开源项目:Pretext。这是一个只有15KB的TypeScript库,不依赖任何第三方代码,却号称能让网页文字排版快上五百倍。更让人意外的是,它不是某个大公司团队的产出,而是Cheng Lou一个人借助OpenAI的Codex和Anthropic的Claude这两个AI编程工具,在数周内完成的。不过,Cheng Lou也并非无名之辈——他曾在Meta参与React框架开发,后来打造的react-motion动画库在GitHub上拿到了两万一千多颗星,现在负责Midjourney的前端架构。Pretext发布不到一周,GitHub星标就突破了六千八百。
自己造一把“数学尺子”
Pretext的核心思路非常简洁:既然向浏览器“借尺子”太慢,那就自己造一把。
它把排版分成两步。第一步只做一次:利用浏览器内置的Canvas绘图引擎测量每个字符的宽度和间距,大概需要19毫秒,人几乎感觉不到。第二步才是关键——拿到这些基础数据后,之后每次需要重排文字,Pretext完全不碰DOM,而是用纯数学运算推算每个字符该出现在哪里。这就像你第一次量好了房间的精确尺寸并画了张平面图,以后再想知道家具能不能塞进去,直接在平面图上用铅笔比划就行了,不用再跑回房间。500个文本块的重排只需0.09毫秒,大约是传统方式的五百分之一。Cheng Lou本人也坦承这个对比“不太公平”,因为没算初始测量的那19毫秒——但对于需要每秒重排六十次以上的动态界面来说,第一步只做一次,第二步会被执行成千上万次,这个提升仍然是质变。
开发过程中最难的不是写数学公式,而是让自己造的尺子和浏览器的官方尺子量出一模一样的结果。不同浏览器对字间距、换行、中英文混排的处理方式都不同,边界情况极多。Cheng Lou的做法是把AI当成不知疲倦的测试员:反复让Claude和Codex写排版逻辑,再拿输出与Chrome、Safari、Firefox的真实渲染结果逐像素对比,发现差异就修改重试。测试语料包括《了不起的盖茨比》全文和多语言数据集。这种工作量如果靠人工,可能需要一个团队忙上数月,借助AI编程工具,一个人数周就完成了。
谁真正需要它
Pretext不是来取代所有网页排版的。一个普通博客、一个公司官网、一个静态新闻页,现有的CSS和DOM完全够用,引入Pretext反而多此一举。
它真正大显身手的地方,是那些文字需要高频重排的动态场景。聊天页面成百上千条消息飞速涌入,在线编辑器里多人同时打字导致文字不断重排,虚拟化列表需要展示海量数据却只渲染可见部分——这些场景下,传统方式的卡顿非常明显,而Pretext能把瓶颈直接消除。数字出版领域同样受益:杂志风格的多栏排版、文字围绕图片实时流动的效果,以前在浏览器里要么做不到,要么做到了也卡,现在有了轻量级的解决方案。
社区的反应印证了这一点。发布72小时内,有人实现了Knuth-Plass段落对齐算法——一种以前只有专业排版软件才有的高端印刷技术;有人做了手机倾斜时字母像物体一样“滑落”的实验;甚至有人做了边看电影边读原著的网页应用,所有文字都能实时交互。批评者说这些演示让文字根本没法正常阅读,但支持者认为这只是在试探新能力的边界——项目才发布不到一周而已。
和现有方案比,新在哪
过去也有人尝试绕开DOM的排版瓶颈,但大多依赖WebAssembly(体积大、集成复杂)或专门的字体解析库(增加维护成本),要么就把计算扔给服务器(增加延迟)。Pretext完全不同:纯TypeScript加数学运算,15KB,零依赖,借Canvas API获取字体信息后就彻底脱离DOM。而且它不是一个“排版框架”,只是一个极度专注的“文字定位计算器”——只负责告诉你文字该出现在哪些坐标,至于怎么渲染,随你决定。这种设计让它可以无冲突地嵌入几乎任何前端项目。
说到底,Pretext能不能真正改变网页排版的未来,现在下结论还太早。文档还不完善,生态从零开始,“大多数网站根本不需要这个”的质疑也有道理。但对于那些确实需要极致文字排版性能的场景,它提供了一个前所未有的选择。而一个人借助AI工具在几周内就做出了这样的基础设施,这件事本身可能比Pretext更值得关注——它在重新定义“一个人能做到什么”的上限。
来源:新浪科技
豫公网安备 41010502003384号