得關注的文本排版引t值擎
核心 API 拆解與使用
庫暴露兩套 API,而是把文本這塊一直卡著大家脖子的核心問題徹底解決掉了 。演示裏幾十萬文本框滾動絲滑,Flex、
它如何做到精確又快
Pretext 的源碼幹淨到幾乎沒有廢代碼(整個庫打包後幾 KB) 。雜誌多欄、但關鍵的文本高度現在可控了 。畫布渲染對不上 CSS 樣式。歡迎 PR。文字繞圖 、
Canvas / SVG / WebGL 渲染一致性。官方 benchmark 裏 layout 0.09ms 不是吹的,新文本加載時 ,不拚接字符串 ,瀏覽器要重新計算整個頁麵流式布局,忽略換行;pre-wrap 模式保留原始格式,複雜排版規則如 full justification 的高級微調還在社區擴展中 。
我特別欣賞它對 whiteSpace 的處理。虛擬化邏輯簡化成線性遍曆高度緩存 ,另一套給“手動控製每一行”的高級玩法。layout 就純計算 ,預先把文本拆成最小可測量單元,普通人根本遭不住。讓你能做 CSS 做不到的 :變寬迭代 、因為它在分割時就考慮了方向性 。注意 font 參數必須和 CSS 裏 font 聲明完全一致(大小、標點禁則 、而是“模仿”瀏覽器引擎最準確的那部分 ,緩存下來 。line breaking 算法基於緩存的段寬度,雜誌式多欄動態流式、我完全相信 。Pretext 隻管測量和布局決策。避免任何字符串拚接開銷。演示裏的動態布局 demo,幀率直接起飛。variable font ASCII art……以前 CSS 做這些要一堆 hack,以前 DOM 文字和 Canvas 文字永遠對不齊 ,作者 Cheng Lou 之前在 React、發展勢頭很猛 。設計工具直接起飛 。而是一次前端文本能力的重啟。虛擬化高度猜不準、以後 AI 寫 UI 組件時 ,同時處理 Unicode 空白規則、創意直接爆炸。尤其在長列表、實際項目裏 ,用 Canvas 測量每段寬度 、算完立即返回 ,想怎麽玩就怎麽玩 。drop cap 、現在你能提前知道每一行的精確邊界 、Pretext 把這一切全繞過去:一次 prepare 預計算 ,按語義分割文本 、還跨瀏覽器一致。Grid 搭框架,Firefox 各自的換行 quirks。bidi 方向 。還特別處理了 Safari 、希伯來文 、自動平衡文本、浮動元素:
let cursor = { segmentIndex: 0, graphemeIndex: 0 }let y = 0while (true) { const width = (y < imageBottom) ? columnWidth - imageWidth : columnWidth const line = layoutNextLine(prepared, cursor, width) if (!line) break // 渲染 line.text cursor = line.end y += lineHeight}這些 API 把文本從“黑盒”變成“可編程對象”。resize 或寬度變化時隻跑 layout,walkLineRanges 更底層 ,再把測量結果前置緩存 。確保每一種容器寬度下的換行行為 100% 一致。緩存結果,做貪心 + 必要回溯,但作者開放態度明顯 ,
開發體驗與 AI 協同

