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

How to enable HTML5 canvas text in Firefox?

本文关键字:布文本 文本 HTML5 Firefox 启用      更新时间:2023-09-26

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

我使用的是Windows 7上的Firefox 38.0.5 EME免费版。我没有对Firefox文件夹做任何操作。我可以在我的另一个个人资料B.上看到画布文本

下面是一个我希望能够看到的示例:HTML画布fillText()方法。

  • 配置文件A:画布显示为一个白色矩形
  • 简介B:我看到了《你好,世界!大微笑》

我尝试了about:config并搜索了"canvas",但两个配置文件中的条目都是相同的。

在检测HTML5功能-画布文本,它说:

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

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

NS_ERROR_FAILURE:组件返回的故障代码:0x80004005(NS_ERROR _FAILURE)[nsITaskbarTabPreview.envalide]WindowsPreviewPerTab.jsm:406:0

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

帖子。。。w3schoolslink。。。tags/tryit_view.asp[HTTP/1.1 200 OK 210ms]

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

最后两个,如果我在同一个w3schools页面上单击"查看结果"。

不要告诉我重置Firefox。我花了很多年的时间按照我想要的方式定制它。

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

在我试图显示不属于所用字体的"字母"的情况下,我将这些矩形视为文本。例如,我试图显示在unicode中定义的音乐符号,但我所知道的大多数字体都不支持它们。

序言

这个问题似乎没有出现在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-当使用Skia和Cairo后端启用DirectWrite时,PDF.js不会呈现文本

Fix1的长答案

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

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

通过查看about:config中的首选项,我最终将gfx.direct2d.disabled切换为false,重新启动浏览器后画布中的文本就可用了。

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

请注意,Firefox不会考虑单独切换该首选项来重新启用硬件加速,因为只有在更改首选项layers.acceleration.disabled时才会发生这种情况,这显然对这个问题没有影响。