某些Unicode字体在Windows 7 / Firefox中不起作用


16

我想展示埃及象形文字:

𓀁𓀀𓀣𓀣𓀣𓀣𓀣𓀣𓀣𓀣𓀣𓀣𓀣𓀣

这些是Unicode 5.2的一部分。

TL; DR:

  • 在干净的Windows 7或Windows 8 VM中安装Noto字体可以按预期工作,并且Firefox中有象形文字。
  • 在本地计算机上安装Noto字体不起作用。除非我专门调出该字体,否则任何程序都不会向我显示任何象形文字。
  • 我已经尝试过各种变通办法,例如在桌面上使用这些字符触发IE的文件名,但是不走运。

细节:

我尝试安装Aegyptus字体以及Google Noto字体。

结果是新字体出现在我的系统上(例如,我可以使用它们来设置MS Word中的文本格式),并且如果我在网页中明确引用它们(即,将字体系列设置为“ aegyptus”)它们正确显示:

在此处输入图片说明

问题是我无法控制网页使用什么字体,并且据我了解Windows或浏览器应自动检测字形不在字体中并找到合适的匹配项。

我已经在干净的VM(来自modern.ie的Windows 7 / IE 9 Virtual Box VM)上进行了测试,发现安装noto和Firefox可以使字体正常工作。安装字体后,字形会自动出现在Firefox中,而无需我指定字体。但是对于我的本地裸机来说,它不起作用。

我检查了一下,我的Windows 7突然停止显示Unicode符号,这表明Chrome出现问题,并建议您在桌面上放置一个文件,其中包含使用所需Unicode代码点的字符。但是,我尝试在文件名中同时放入一个带有中文字符的文件和一个带有埃及字符的文件,但这没有帮助。注意:我的任何汉字都不会停止工作。只是其他字符范围无效。

无论如何,我都尝试禁用每个启动程序,以查看其中的一个启动程序是否没有解决问题,但没有任何帮助。我什至没有安装Chrome,Adobe Acrobat和其他几个可能的候选软件。

更新

我发现了一种变通办法,它可以帮上忙,但是我想要一个更好的解决方案。如果我关闭“在可用时使用硬件加速”并重新启动Firefox,则会显示我的字体。我已验证自己具有适用于我的图形卡(Intel HD4000)的最新驱动程序,但这似乎没有帮助。Mozilla的此错误报告表明某些卡上存在字体渲染问题,但上述解决方法对我没有影响,无论如何我的字体看起来都不错,但字形替换没有发生。


其他自定义字体还能用吗?
bhathiya-perera 2014年

@BhathiyaPerera我遇到了同样的问题,例如Carian script。在我的本地计算机上,除非我编辑页面并注入字体系列,否则不会显示文本。在我的VM上,在Firefox中,它工作正常。
Shiny先生和新安宇

我建议您使用10种免费新字体进行测试,并发布相关代码,然后在需要时标记要移至stackoverflow的问题。
bhathiya-perera 2014年

我仍然不知道这是否仅适用于代码点位于BMP(n > 0xFFFF)之上的脚本,其中包括诸如数学字母数字符号,其他符号和象形文字的表情符号,大部分表情符号以及哥特式,沙漠, SMP中都包含Carian,埃及象形文字和楔形文字,以及SIP中各种CJK表意文字。
tchrist

@BhathiyaPerera这与代码无关。这是关于自动字体替换。当我在工作站上加载此SU问题时,我会看到一些小方框,在这里应该看到象形文字。当我在同一浏览器中的VM上加载同一页面时,会看到象形文字。但是我可以说该字体已安装在我的工作站上,因为我可以使用Firebug修改此页面的DOM并设置字体系列。然后出现字体。
Shiny先生和新安宇

Answers:


1

我的浏览器应自动检测字形不在字体中并找到合适的匹配项

不幸的是,关于OP的这一假设仅适用于Firefox。Firefox使用fontconfig进行逐字形字体替换。如果包含相关字符,则使用适当的字体。

与IE和Chrome相比,IE略胜一筹,因为它可以按脚本提供更广泛的回退,并提供字体的UI设置,尽管这并未涵盖埃及象形文字。此MSDN文章中介绍了Uniscribe / DirectWrite的字体回退机制(主要用于复杂文本布局的组件)。

尽管Chrome 终于在2012年支持按脚本的字体回退,但用户必须安装额外的扩展程序才能对其进行调整-一种此类扩展程序是Advanced Font Settings。但是,告诉所有使用Chrome的网站访问者安装扩展程序是不太可行的。

关于最初的问题,人们可能想研究字体回退机制的方向,可能是其他一些表现不好的字体替代了Noto字体,声称支持这些字形,而实际上却不支持。一种繁琐的方法是删除系统上多余的字体,然后一个个地重新添加它们,直到找到罪魁祸首。


叹。我想知道字体是否可能支持这些字形。
Shiny先生和新安宇

不幸的是,使用该插件的Chrome方法也不起作用。从其Chrome商店描述中:当满足以下两项时,Chrome将使用由该扩展名控制的字体设置:1)网页已声明内容的语言(例如,通过使用HTML lang属性);2)网页未指定要使用的字体。
Shiny先生和新安宇

我已经“烦人”地删除了在参考虚拟机上找不到的每种字体,并且该问题在Firefox中仍然存在。
Shiny先生和新安宇

真奇怪 现在我可以想到另外两种可能性:(1)VM和测试机上的语言设置是否相同;(2)font-family在两个环境中,firefox中的列表(来自元素检查)是否相同。目前,我不知道这2点是否没有怀疑的迹象。
张敬文


-1

我的软件在Windows窗口中显示我的语言字符时也遇到了同样的问题,它没有显示真正的字符,然后我更改了控制面板中的设置->区域和语言->管理->非Unicode语言,并将其设置为我的语言。


1
有问题的字体严格是Unicode的一部分。非Unicode的设置在这里不起作用。无论如何,没有人将“埃及象形文字”作为其计算机语言。
Shiny先生和新安宇

@ Mr.ShinyandNew安宇::!𓀜!!!!
Cerberus 2014年

-3

如果未安装与字符匹配的字体,则将无法显示它们。Windows不会自动下载字体!

您可以在网页的CSS中嵌入使用@font-facewebfonts)。在您的CSS中添加类似这样的内容以定义webfont:

@font-face {
    font-family: 'NotoSansEgyptianHieroglyphs';
    src: url('http://myserver/example/NotoSansEgyptianHieroglyphs-Regular.ttf');
}

然后将样式应用于css中带有象形文字的元素:

.hieroglyphics {font-family: NotoSansEgyptianHieroglyphs;}

2
我安装了字体。而且我已经在两个不同的Windows VM上验证了,安装字体通常足以使它们工作。我的机器有些不同,但我不知道在哪里可以找到它。
Shiny和New安宇先生2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.