canvas如何计算文字的宽度
发布于 5 年前 作者 kyao 18734 次浏览 来自 问答

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

 

10 回复

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

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

过了这么久了

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

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

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

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

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

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

请问这个api有了吗

@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 不存在?

回到顶部