我正在开发HTML5 / Canvas游戏。我的大多数游戏对象都表示为Uncicode字形。 我在网站上嵌入了三种不同格式的字体。所有这三种字体都支持基本多语言平面和辅助多语言平面中的大多数字形(换句话说:它们包含我用作游戏对象的符号)。
当我在多个浏览器中测试原型时,我清楚地意识到Firefox / Gecko中发生了一些奇怪的事情。我把一个小测试放在一起,这就是我找到的。
在Chrome和其他基于Webkit的浏览器中,所有字体的所有字符都可以正常呈现。
Firefox似乎有加载字体的问题。这很奇怪:我提供了所有常用格式的字体(ttf,eot,woff,svg),并且没有跨站点的shenaningans正在进行,因为它们被保存在包含当前页面的文件夹的子文件夹中。但是,firefox会显示默认字体(Times New Roman)中的所有文本。 另外值得注意的是,如果您使用未包含在网页中但安装在本地计算机上的字体,Firefox将显示正常的拉丁字符,但任何其他unicode字符将再次出现在Times New罗马。
这可能是Firefox中的一个错误,但更可能的是我在某个地方犯了错误。有人能指出导致这个问题的原因以及解决方法吗?
图片:
Firefox的字体有问题,它们看起来都一样:
使用Google Chrome浏览器应该看到的页面:
要自己检查一下,这是包含当前原型的页面:http://wmmusic.nl/codexamples/pixijs/fonttest/smuv2.html
编辑:
在做了一些研究并在Mozilla的#firefox IRC频道中询问后,我发现我正在使用的.ttf字体有问题。似乎某些字体中的某些表已被破坏,导致Firefox无法加载它。
调试器显示以下错误:
[14:05:04.286] downloadable font: table 'post': failed to parse table (font-family: "unifont" style:normal weight:normal stretch:normal src index:2)
source: http://wmmusic.nl/codexamples/pixijs/fonttest/fonts/unifont5-1.ttf
[14:05:04.286] downloadable font: rejected by sanitizer (font-family: "unifont" style:normal weight:normal stretch:normal src index:2)
source: http://wmmusic.nl/codexamples/pixijs/fonttest/fonts/unifont5-1.ttf
对于两种字体(unifont和Code2000),它都以.woff和.ttf格式(这些是Firefox读取的格式)执行此操作。 Quivira似乎现在正在工作。 Quivira是我用FontSquirrel转换的唯一字体,因为它是唯一一个足够小的字体。 我使用FontForge(用于.svg格式)转换的其他字体,一个名为tff2eot(用于.eot格式)的CLI,以及一个名为sfnt2woff(用于.woff格式)的Mozilla工具。
现在要弄清楚如何修复这些错误和/或让Firefox不关心它们。
答案 0 :(得分:1)
添加到页眉:
<meta charset="utf-8">
顺便说一下,页面需要很长时间才能加载!