You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTML Canvas 2DContext.font字体大小失效:谷歌字体Exo 2是否为根源?

Canvas中Exo 2字体大小无法修改的解决方案

问题描述

在Canvas绘制文本时,使用Arial等其他字体功能正常,但使用谷歌字体Exo 2时出现异常:字体可正常加载渲染,但字体大小始终无法改变,尝试多种字重及可变字体均无效。

正常工作代码:

//省略部分ctx初始化代码
let canvas = document.createElement('canvas')
let ctx = canvas.getContext('2d')
ctx.font = `100px Arial`

问题代码:

ctx.font = `100px Exo 2` //即使设置为1000000px,字体大小也无变化。

原因及解决方法

问题根源在于字体名称的解析规则:Canvas的font属性遵循CSS字体语法,当字体名称包含空格时,必须用引号(单引号或双引号)包裹,否则浏览器会将空格后的内容误判为字体的附加属性(如字重、样式),导致无法正确识别完整的字体名称,进而引发字体大小设置失效。

修改后的有效代码:

// 用双引号包裹带空格的字体名
ctx.font = `100px "Exo 2"`
// 或使用单引号包裹
ctx.font = '100px \'Exo 2\''

调整后浏览器能正确识别Exo 2字体,字体大小设置即可正常生效。

内容的提问来源于stack exchange,提问作者GabeyBaby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:15:33