measureText获取字体宽度有问题

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug measureText 客户端 7.0.3 2.6.4

- 当前 Bug 的表现(可附上截图)


- 预期表现


- 复现路径


- 提供一个最简复现 Demo


measureText获取字体宽度有问题,


wordNumber = ‘1233333’

nameWidth = ctx.measureText(wordNumber).width,


allReading = nameWidth / app.globalData.ratio + 325;


第一次获取wordNumber的宽度和第二次的不一样,第二次的正确,请问这是什么原因?截图如下,红线框内的分别是两次打印的数值。

最后一次编辑于  04-10  (未经腾讯允许,不得转载)
收藏评论 0关注问题写回答

1 个回答

  • nickname
    nickname

    麻烦提供能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    赞同 0没有帮助
    评论 6
    复制
    04-10
    • Mr姜
      Mr姜

      const ctx = wx.createCanvasContext('myCanvas')

      let nameWidth = ctx.measureText('123456').width

      console.log(nameWidth 'nameWidth')


      就是这些代码,在绘制的时候,获取‘1234566’的宽度在iOS客户端,获取不到值


      赞同 0没有帮助
      回复
      复制
      04-10
    • nickname
      nickname
      回复Mr姜

      这边测试是正常的

      赞同 0没有帮助
      回复
      复制
      04-11
    • Mr姜
      Mr姜
      回复nickname

      额,我这边是真的不行,我最终是这样解决的,就是获取数字正常下的宽度除以数字的个数,得到每个数字的宽度,然后再除以像素屏幕比,再乘以动态获取的数字length长度,计算得出最终的宽度。(正常数字的宽度/个数/像素屏幕比*动态获取的数字length=总数字的宽度

      赞同 0没有帮助
      回复
      复制
      04-11
    • 展示更多
    评论