【发布时间】:2014-12-09 19:00:35
【问题描述】:
我正在制作一个在画布中使用文本渲染的应用程序,但遇到了一个奇怪的问题。我已经在许多计算机上进行了测试,它只发生在带有 Windows 的系统上。我来解释一下:
当我使用带有一些字体大小、填充颜色、文本笔划和斜体样式的 Times New Roman 时,一些字母显示笔划移位。
起初我认为这是我用于画布的库的问题,但我已经使用原生画布进行了测试,并且它也在发生。
这里是 jsfiddle:http://jsfiddle.net/ekm3o977/1/(记住它只发生在 Windows 中)
<body>
<canvas id="myCanvas" width="1000" height="400"></canvas>
<script>
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var x = 80;
var y = 110;
context.font = 'italic 70px Times New Roman';
context.lineWidth = 1;
// stroke color
context.strokeStyle = 'red';
context.fillStyle = 'blue';
context.fillText('abcdefghijklmnñ', x, y);
context.strokeText('abcdefghijklmnñ', x, y);
context.fillText('opqrstuvwxyz', x, y+100);
context.strokeText('opqrstuvwxyz', x, y+100);
</script>
</body>
关于如何解决的任何想法?谢谢
【问题讨论】:
-
这里确认 Win8.1 IE11、Chrome39 和 FF33 上的位移。作为一种解决方法,您可以使用 webfont Times New Roman 代替系统字体。