请问在canvas中如何获取到字体的高度

ctx.fill('a');

比如这个"a"我怎么知道他的高度.

注意:是高度不是宽度.

或者说我如何做到避免文字超过canvas的可视范围(Y轴)

阅读 5.3k
2 个回答

只做参考,不做回答。我测试了一下,感觉就用字体大小,基本能够作为高度来用,基线主要影响了定位:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            canvas {
                border: 1px solid red;
            }
        </style>
    </head>
    <body>
        <canvas id="main0" width="300" height="36"></canvas>
        <canvas id="main1" width="300" height="36"></canvas>
        <canvas id="main2" width="300" height="36"></canvas>
        <canvas id="main3" width="300" height="36"></canvas>
        <canvas id="main4" width="300" height="36"></canvas>
        <canvas id="main5" width="300" height="36"></canvas>
        <script>
            const text = "text"
            const baselines = ['top', 'hanging', 'middle', 'alphabetic', 'ideographic', 'bottom'];
            baselines.forEach((baseline,index) =>{
                let context = document.getElementById('main'+index).getContext('2d')
                context.textBaseline =baseline
                context.font = '36px serif'
                let y = 36
                if (baseline === 'top'||baseline==='hanging') {
                    y = 0
                } else if (baseline === 'middle') {
                    y = 18
                }
                context.fillText('hello world', 0,y)
            })

        </script>
    </body>
</html>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题