非ascii字符以错误的字体显示

时间:2012-11-06 13:27:05

标签: html css fonts font-face true-type-fonts

我正在尝试在我的新网站中使用'Nilland-SmallCaps'字体。问题是,虽然所有其他文本都正确显示,但我的语言的特定字符(š,č,ž(s,c,z with caron))以默认字体显示。我在字体编辑器中打开了.ttf文件,我发现这些字符已经定义了,所以我不知道为什么它们没有正确显示。如果您对如何解决这个问题有所了解,请帮助我,因为我已经尝试了我想出的所有内容。

@font-face {  
font-family: 'Nilland-SmallCaps';  
src: url('Nilland-SmallCaps.ttf')format('truetype');  
}

我正在使用此字体文件:Nilland-SmallCaps

2 个答案:

答案 0 :(得分:2)

Nilland-Smallcaps字体在很多方面都很奇怪。它首先实际上不包含小型大写字母。但重要的是它没有正确编码。除了某些字符(如Ascii范围)外,它不包含分配给与Unicode编号对应的位置的字形。

如果您使用DTL OTMaster Light分析字体,则可以看到,例如字母š正确放置,Unicode编号U + 0161,但字母ž分配给U + 0014,这是完全错误的,因为这是一个控制字符位置。字母č位于U + E054位置,位于私人使用区域,只能由相关方之间的协议使用,并且浏览器不感兴趣。事实上,你可以通过使用字符引用来欺骗(至少某些)浏览器在字体中渲染č,但这实际上是一个可怕的kludge。

我建议您尝试找一些其他更正确编码的字体。

答案 1 :(得分:1)

听起来像font-face在生成font-face时没有打开自定义语言设置。请在此处查看修复:

Font Face not working for custom language characters

  

必须选择以下Font Squirrel选项才能获得   要生成的正​​确语言字形:

     

单击“自定义子集”单选按钮,然后选择以下选项   选项:

     

字符编码-Mac罗马字符类型 - 选中所有复选框   本节内容语言 - 英语,法语或语言