【发布时间】:2011-02-15 08:11:28
【问题描述】:
我一直在尝试使用画布标签和 Javascript。我制作了一个页面,该页面从 Twitter 公共时间线获取推文并将它们动画化。它通过在动画背景中使用画布元素来工作。动画完成后,它会创建一个顶部带有相同文本的 div 元素。我这样做是为了让推文文本是可选择的并且链接是可点击的。
现在,在 Safari、Chrome 甚至 Opera 中,画布文本和 div 文本看起来几乎完全相同。然而在 Firefox 中,文本的大小不同,足以使其在变为 div 的位置“跳跃”。
有谁知道如何让 Firefox 使用 CSS 在画布元素和 div 上呈现相同的文本?或者这是与引擎的渲染不一致。
如果你想知道我的意思,我已经把页面on my website。
现在是代码:
我用于呈现 div 的 CSS 包含:
line-height: 21px; font-weight: 100; font-family: Georgia, "New Century Schoolbook", "Nimbus Roman No9 L", serif; font-size: 20px;
在我正在使用的画布上渲染:
this.context.font = this.scale + 'px Georgia';
this.context.fillStyle = "white";
this.context.strokeStyle = 'white';
this.context.fillText(this.text, 0, 0);
this.context.strokeText(this.text, 0, 0);
其中 this.scale 是一个动画比例因子,精确到 20 像素。因此,回顾一下,我使用相同的字体并以相同的 px 大小结束,但 Firefox 在 Canvas 和 CSS 之间呈现不同的文本。
(编辑)这是一个截图示例: alt text http://danforys.com/temp/firefox-behaviour.png
第一行是使用画布动画的文本,第二行是生成的 div。
【问题讨论】:
-
嗯,仔细看截图,可能是空格。字母看起来大小相似,但 CSS div 上的空格看起来稍宽。
标签: javascript css canvas