使用 Canvas setZoom 縮放畫布時,Chrome 下 Label 文本縮小反而變大,Circle/Rectangle 正常。Firefox 表現正常。
Chrome DevTools 顯示 Label 最終渲染為:
<a ...>
<text ... font-size="10px" ... transform="matrix(1,0,0,1,5007,4846.5)">
<tspan dy="3.5">Label Text</tspan>
</text>
</a>
發現字體大小受 transform="matrix(...)" 控制,而非 font-size 屬性。
編寫獨立 Raphael 測試頁,使用 paper.setViewBox 模擬縮放,現象完全一致:Chrome 下縮小時文本變大,Firefox 正常。確認是 Raphael/瀏覽器層面問題。
搜索「Chrome 12px」發現:Chrome 設置中有「字體大小下限」,默認 12px。縮放導致計算字體小於 12px 時,瀏覽器強制渲染為 12px,視覺上反而比周圍縮放後的圖形大。
Chrome 設置 → 顯示高級設置 → 網頁內容 → 自定義字體 → 將「字體大小下限」調小(如 10px 或更小)。
text, tspan { -webkit-text-size-adjust: none; }
實測:生成的 SVG 已包含此樣式但無效,因為 Chrome 對 SVG 文本的最小字體限制優先級高於 CSS。