2

我正在开发包含一些带有重音符号的西里尔文字的网页。要放置重音标记,我使用 utf8 字符 U0301(组合重音)。在我已经使用过的每个编辑器以及我已经看到的每个与西里尔文相关的网页中,这个重音符号都显示在文本中这个字符之前的字母上方。我的问题是,在我的页面上,此字符显示在文本中此标记之后的字母上方。更重要的是,这种不正确的行为只能在西里尔字母上观察到。使用通常的拉丁词,它可以正确显示。

我设置了每个与编码相关的标头。

[编辑]

这个问题似乎只出现在 Firefox 上(我使用的是 13.0.1 版)。当我使用 Chrome 时,重音符号会正确显示。

4

3 回答 3

2

font-family根据对不同字体的试验,最好在不同的平台上,也可能在不同的浏览器上,选择一个合适的字体列表,用于文本规则。您可以使用不同的字体设置在您最喜欢的文字处理器(或编辑器)中测试字体;结果不一定与网络浏览器中的相同,但通常相似。例如,Calibri 和 Arial 看起来不错,Cambria 在 serif 方面也是如此(Times New Roman 对 U+0301 没有问题,但除非分辨率相当高,否则它通常渲染不好)。

还可以考虑使用一些合适的字体作为网络字体(通过@font face)。

这听起来很乱,但它确实是实用的方法。问题是三方面的:

  1. 在某些字体中,U+0301 完全错误,或者有点错误。例如,在Georgia(一般OK 字体)中,U+0301 出现在基本字符的右侧,就好像它根本不是一个组合标记,而是一个单独的符号。在 Courier New 中,它被放置在下一个字符上。在 Constantia 和 FreeSerif 中,它的位置太正确了,尽管仍然可以识别为变音符号。
  2. 一些字体完全没有 U+0301,迫使浏览器从基本字母以外的字体中获取它。不用说,这可能会造成混乱(或者你可能会侥幸逃脱,如果它恰好适合的话)。
  3. 浏览器和其他程序在处理组合标记方面有所不同。您对此无能为力。即使对于 U+0301 实现良好的字体,较旧的浏览器也可能很容易产生较差的结果。原因是正确放置变音符号是一个复杂的运算符:程序需要访问有关基本字符的信息,以便在小写 о 和大写 О 上以不同的方式放置例如尖音符。

我不知道为什么您在 Firefox 上得到的结果与在 Chrome 上不同,除非您将字体保留为默认值并且浏览器使用不同的默认值。

当 U+0301 与西里尔字母失败时,(许多)U+0301 与拉丁字母组合运行良好的原因可能是完全不同的处理方式。浏览器可能并且经常将字母和组合变音符号的组合呈现为单个字形,对应于所谓的预组合字符。因此,如果浏览器看到拉丁字母ó在哪里,它会在内部将其映射到单个字符“ó” U+00F3,该字符包含在最常用的字体中。o

作为一个印刷细节,当瞄准非常好的质量(我们通常买不起......)时,像 a、e、o、y 这样的拉丁字母应该与相同文本中的西里尔字母(按形状)完全相同。任何体面的字体的设计都是相同的。但不幸的是,当添加重音时,这可能会改变。例如,在 Calibri 中,о́(带有锐音的西里尔字母 o)与 ó(带有锐音的拉丁语 o)的重音不同。这是字体的设计缺陷。(但在典型的复制文本大小中,差异几乎不明显。)

于 2012-07-15T13:39:51.950 回答
1

可能与您在每个浏览器上设置的默认字体和/或浏览器拥有默认样式有关?我试过这个JS fiddle——在 Firefox with Times 中,重音完美对齐,但在 Arial 中它很不错,但有点偏右。

另一方面,Arial 可以通过 Chrome,但 Times 非常偏右。

您是否尝试过调整用于查看这是否会影响问题的字体系列、行高、字体大小等?

编辑:此外,只需在宾夕法尼亚州立大学网站上阅读此建议:

Times New Roman 和 Georgia 等字体在 Windows 中包含西里尔字符,但在 Macintosh 上,它们可能仅包含在 Apple 的“CY”西里尔字体中,例如“Times CY”。

.serifcyr {
    font-family: "Times CY", "Times New Roman", serif
}
.noserifcyr {
    font-family: "Geneva CY", "Helvetica CY", "Arial", sans-serif
}
于 2012-07-15T12:14:49.700 回答
0

我使用了来自 Google Fonts 服务的字体 Roboto,它也有同样的问题——重音位置错误。

为了解决这个问题,我已将此字体(ttf 版本)下载到我的计算机上,安装、打开 photohosop 并确保实际重音正确!然后我将字体上传到 fontsquirrel.com 服务并转换为我自己的网络字体,然后重音被修复了!除了上面的西里尔字母«і»字母..但是,这总比没有好。

提示 - 如果您有多个字体粗细,那么在 fontsquirrel.com 上选择 «expert...» 并检查 «Style link» — 它会组成 css,这样您就可以拥有一个具有不同粗细的字体名称。

于 2015-08-05T21:11:26.160 回答