font-family
根据对不同字体的试验,最好在不同的平台上,也可能在不同的浏览器上,选择一个合适的字体列表,用于文本规则。您可以使用不同的字体设置在您最喜欢的文字处理器(或编辑器)中测试字体;结果不一定与网络浏览器中的相同,但通常相似。例如,Calibri 和 Arial 看起来不错,Cambria 在 serif 方面也是如此(Times New Roman 对 U+0301 没有问题,但除非分辨率相当高,否则它通常渲染不好)。
还可以考虑使用一些合适的字体作为网络字体(通过@font face
)。
这听起来很乱,但它确实是实用的方法。问题是三方面的:
- 在某些字体中,U+0301 完全错误,或者有点错误。例如,在Georgia(一般OK 字体)中,U+0301 出现在基本字符的右侧,就好像它根本不是一个组合标记,而是一个单独的符号。在 Courier New 中,它被放置在下一个字符上。在 Constantia 和 FreeSerif 中,它的位置太正确了,尽管仍然可以识别为变音符号。
- 一些字体完全没有 U+0301,迫使浏览器从基本字母以外的字体中获取它。不用说,这可能会造成混乱(或者你可能会侥幸逃脱,如果它恰好适合的话)。
- 浏览器和其他程序在处理组合标记方面有所不同。您对此无能为力。即使对于 U+0301 实现良好的字体,较旧的浏览器也可能很容易产生较差的结果。原因是正确放置变音符号是一个复杂的运算符:程序需要访问有关基本字符的信息,以便在小写 о 和大写 О 上以不同的方式放置例如尖音符。
我不知道为什么您在 Firefox 上得到的结果与在 Chrome 上不同,除非您将字体保留为默认值并且浏览器使用不同的默认值。
当 U+0301 与西里尔字母失败时,(许多)U+0301 与拉丁字母组合运行良好的原因可能是完全不同的处理方式。浏览器可能并且经常将字母和组合变音符号的组合呈现为单个字形,对应于所谓的预组合字符。因此,如果浏览器看到拉丁字母ó
在哪里,它会在内部将其映射到单个字符“ó” U+00F3,该字符包含在最常用的字体中。o
作为一个印刷细节,当瞄准非常好的质量(我们通常买不起......)时,像 a、e、o、y 这样的拉丁字母应该与相同文本中的西里尔字母(按形状)完全相同。任何体面的字体的设计都是相同的。但不幸的是,当添加重音时,这可能会改变。例如,在 Calibri 中,о́(带有锐音的西里尔字母 o)与 ó(带有锐音的拉丁语 o)的重音不同。这是字体的设计缺陷。(但在典型的复制文本大小中,差异几乎不明显。)