canvas如何计算文字的宽度

发布于 7 年前作者 kyao19043 次浏览最后编辑 7 年前来自 ask

类似H5中的measureText函数, 小程序是否能提供一个?或者是已经有代替的?由于全角/半角字体的宽度计算问题,不提供的话,很难计算出相对准确的宽度

 

10 回复
jintao
jintao1 楼6 年前

@让周飞  另外你这边是在用工具的远程调试吗?如果是的话,是已知问题,这个近期会修复

heping
heping2 楼6 年前

是在工具上还是在客户端上?麻烦提供一下机型和代码片段

yangxu
yangxu3 楼6 年前

过了这么久了

weiding
weiding4 楼6 年前

你好,这是一个已知问题,我们会在后续版本中进行改善,敬请关注。

li93
li935 楼6 年前

@LastLeaf 我们在做一款类似 Excel 表格的小程序,整个表格都是基于 canvas 画出来的,文字的自动换行非常依赖 measureText 方法,否则没法计算文本宽度,就没法实现换行,基本上也就没法在小程序里实现我们的应用了。

我们已经有了 H5 版本,使用体验非常好,现在在迁移到小程序。Html 版本就是用 canvas 画的表格,现在小程序版本卡在这里,只能等待新版支持这个特性了。

我们做了很多调研,纯 Javascript 是没法准确计算文本宽度的,很多英文都是非等宽字体,没法计算。

希望能尽快支持。静候佳音!

pmo
pmo6 楼6 年前

你好,后续版本会支持该特性,请关注小程序的功能更新,谢谢!

jlong
jlong7 楼6 年前

请问这个api有了吗

xiuying50
xiuying509 楼6 年前

@LastLeaf

现在文档上说 基础库 1.9.90 开始支持

我的 SDK版本1.9.91,但表现为一会报错一会好

报错信息:Cannot read property ‘width’ of undefined

目测是sdk里面报的错,因为我这么写也报错

const metrics = context.measureText(text)

const width = metrics ? metrics.width : 0

看 sdk 里 complete: function(e) {t = {width: e.width || 0}}

e 不存在?

yangfeng
yangfeng10 楼5 年前

mark