CSS字母間距(letter-spacing)和字符串全長的關係

CSS字母間距(letter-spacing)和字符串全長的關係

問題來源

這是一個用canvas手動實現的富文本編輯的模塊,發現了字符串寬度大於元素width導致了異常的顯示。

分析過程

然而,所有的文字屬性皆從一個用CSS版本的Demo模版中獲取到的,同樣的屬性在CSS中正常顯示,所以排除初始值不合理。

定位到核心代碼,:

字符串全長=n個字符寬度+(n-1)個letterSpacing+其他

通過精確計算,發現在CSS裏:

文字長度=n個字符寬度+ n個letterSpacing+其他

因爲字符串“OK”的letterSpacing=-0.4,因爲少累加一個,所以導致寬度偏長。

解決方案

方法一:

將寬度累加器let textGraphicsWidth = 0換成let textGraphicsWidth = textGraphicsStyle.letterSpacing,相當於補上一個letterSpacing

方法二:

重構累加函數的代碼,讓每個charWidth = charWidth + letterSpacing

技巧總結

chrome瀏覽器中,在識別單個字符在瀏覽器中的尺寸時,還原100%縮放,瀏覽器開發者模式審查元素到指定字符串,直接將鼠標光標放到對應文字處即可看到對應文字尺寸

在這裏插入圖片描述

如果需要看單個文字尺寸,雙擊修改即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章