我有一个网络应用程序,用户可以在其中更改WSIWYG类型的输入文本区域的字体系列。现在,假设用户在文本区域输入了一些中文文本,但选择了一个不支持中文字符的Font。在我的应用程序中,我希望用户看到那些通常在字体不支持该字符时显示的讨厌的正方形(或类似的东西)。这样,用户就会知道该字体不支持该语言并且可以选择不同的语言。我遇到的问题是浏览器(Firefox 17和Chrome 23)似乎使用支持这些中文字符的字体(如Arial)呈现文本的中文部分,使用户相信他正在尝试使用的字体工作正常。
有没有办法(我猜通过CSS)来阻止这种情况?有没有办法让浏览器不仅仅是这次“好”?
提前谢谢。
答案 0 :(得分:6)
您可以使用等同于font-family: userChoice, yourCatchAll
的等效字体来拦截字体替换过程,其中yourCatchAll
是一种具有所有字符的通用字形的字体。
问题在于找到这样的字体。 Unicode Consortium分发的LastResort字体是理想的,因为它也可以用粗略的术语直观地表示字符的类别,但它的EULA似乎不允许修改。这是否适用于构建网络字体格式(如.eot和.woff)是值得商榷的。
Unicode BMP Fallback Font似乎有更自由的使用规则,但它只是在一个框中显示一个字符作为其Unicode编号(并且仅支持基本多语种平面,尽管它包含大多数人听说过的所有字符) )。
答案 1 :(得分:4)
正如另一个答案已经解释的那样,解决方案是使用后备字体,其中包括“所有”字样。 unicode代码点。然而,困难的部分是找到或建立一个不会加重几MB的那个。
几年后,现在有了一个更轻量级的后备字体解决方案,Adobe的NotDef font。它显示了一个十字框,用于1,111,998个Unicode代码点,仅约22Kb,并使用SIL OPEN FONT LICENSE版本1.1。
如果您不想显示任何内容,则还有Adobe Blank font。