问题:
如何在没有等宽字体的情况下在 JavaScript 中准确计算文本宽度依赖等宽空间字体?
答案:
在 HTML 5 中,Canvas.measureText 方法提供了一个解决方案。这是一个示例:
function getTextWidth(text, font) { const canvas = document.createElement('canvas'); const context = canvas.getContext('2d'); context.font = font; const metrics = context.measureText(text); return metrics.width; }
此函数根据指定字体测量文本宽度(以像素为单位)。例如:
console.log(getTextWidth('hello there!', 'bold 12pt arial')); // Outputs approximately 86
您还可以使用 getCanvasFont 实用函数从现有元素确定字体设置:
function getCanvasFont(el) { const fontWeight = getCssStyle(el, 'font-weight') || 'normal'; const fontSize = getCssStyle(el, 'font-size') || '16px'; const fontFamily = getCssStyle(el, 'font-family') || 'Times New Roman'; return `${fontWeight} ${fontSize} ${fontFamily}`; } const fontSize = getTextWidth(text, getCanvasFont(myEl));
此方法的优点是基于 DOM 的方法:
但是,请注意:
以上是如何在没有等宽字体的情况下准确计算 JavaScript 中的文本宽度?的详细内容。更多信息请关注PHP中文网其他相关文章!