如何在Firefox中启用HTML5画布文本?

时间:2015-06-24 06:55:39

标签: javascript html html5 firefox canvas

我可以在Firefox配置文件A中看到画布(线条,图画等),但不能看到画布文本。

我在Windows 7上使用Firefox 38.0.5 EME-free。我还没有对Firefox文件夹做任何事情。我可以在我的其他个人资料B上看到画布文字。

以下是我希望能够看到的示例:HTML canvas fillText() Method

  • 个人资料A:画布显示为白色矩形。
  • 简介B:我看到" Hello World!大笑"。

我尝试了$.fn.__blink = function(color) { self = $(this); if (self.attr('data-blinker') == undefined) { var blinker = setInterval(function() { original_color = self.css('background'); self.css('background', color).delay(300).queue(function(nxt) { self.css('background', original_color); nxt(); }); }, 1000); self.attr('data-blinker', blinker); } return self; }; 并搜索了" canvas",但我的个人资料中的条目相同。

Detecting HTML5 Features - Canvas Text中,它说:

  

您的浏览器支持画布文本API

如果我加载w3schools网站,我会在浏览器控制台中获取这些日志:

  

NS_ERROR_FAILURE:组件返回失败代码:0x80004005(NS_ERROR_FAILURE)[nsITaskbarTabPreview.invalidate]   WindowsPreviewPerTab.jsm:406:0

     

未声明HTML文档的字符编码。如果文档包含US-ASCII范围之外的字符,则文档将在某些浏览器配置中使用乱码文本进行渲染。必须在文档或传输协议中声明页面的字符编码。   tryit.asp

     

POST ... w3schoolslink ... tags / tryit_view.asp   [HTTP / 1.1 200 OK 210ms]

     

未声明框架文档的字符编码。如果在没有文档框架的情况下查看,该文档可能会显得不同。   tryit_view.asp

最后两个如果我点击"参见结果"在同一个w3schools页面上。

不要告诉我重置Firefox。我花了数年时间按照自己的方式定制它。

2 个答案:

答案 0 :(得分:0)

您是否可能在两个配置文件中都没有使用过的字体?

在我试图展示"字母"的情况下,我看到这些矩形为文本。这不是使用过的字体的一部分。例如,我试图显示以unicode定义的音乐符号,但我知道的大多数字体都不支持它们。

答案 1 :(得分:0)

序言

Firefox 41.0.1似乎没有出现此问题。

Fix1 - TL; DR

gfx.direct2d.disabled设为false

Fix2 - 替代

  • gfx.direct2d.disabledtrue
  • gfx.canvas.azure.backends设为cairo

使用Fix1会导致在网页和view-source(至少对我来说)中篡改字体的副作用,而这可以用来在仍然渲染画布文本的同时禁用direct2d。

我在磕磕绊绊后测试了这一点:
Bug 842521 - PDF.js won't render text when DirectWrite is enabled with both Skia and Cairo backends

Fix1的长答案

虽然这不是一个真正的编程问题,但希望它能够被迁移而不是删除,我有一个可能的解决方案。

我遇到了同样的问题,我的常规Firefox配置文件不会显示画布文本,而新的配置文件没有问题。使用安全模式也无效。

通过about:config中的偏好设置,我最终将gfx.direct2d.disabled切换为false,然后重新启动浏览器后,画布中的文字可用。

gfx.direct2d.disabled设置为true的可能原因是,通过取消选中Use hardware acceleration when available中的Options > Advanced来禁用硬件加速。

请注意,Firefox不会考虑单独切换该首选项以重新启用硬件加速,因为这只会在更改pref layers.acceleration.disabled时发生,这显然不会影响此问题。