如何在Chrome中控制Canvas fillText()的字体字距调整?

Dav*_*ing 5 javascript fonts google-chrome canvas kerning

我正在尝试创建一个体面的跨浏览器渲染引擎的画布文本.我注意到kerning对在Chrome中无法正常呈现,但在Safari和Firefox中它们可以正常工作.

铬:

在此输入图像描述

火狐:

在此输入图像描述

苹果浏览器:

在此输入图像描述

试试这里的小提琴:http://jsfiddle.net/o1n5014u/

代码示例:

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.font = "40px Arial";
ctx.fillText("VAVA Te", 10, 50);
Run Code Online (Sandbox Code Playgroud)

有没有人有任何解决方法?我找过bug报告,但找不到任何东西.

Luc*_*cky 5

来自W3 CSS3 字体

要显式打开 ,font-kerning您需要将该font-kerning属性设置为normal

canvas{
    font-kerning : normal;
}
Run Code Online (Sandbox Code Playgroud)

检查这个JSFiddle

基于这篇关于跨浏览器字距调整对和连字的文章,或者你可以使用optimizeLegibility这样的,

canvas{
     text-rendering: optimizeLegibility;
}
Run Code Online (Sandbox Code Playgroud)

检查这个JSFiddle

该声明目前得到以下支持:Safari 5、Webkit Nightlies 和 Chrome。

默认情况下,Firefox 已经对超过 20 像素的文本大小使用了 optimizeLegibility。

  • 我不知道您可以将排版 CSS 样式添加到 `canvas` 元素。谢谢! (5认同)