当我切换到亚洲语言时,为什么西里尔语和希腊语单词在字母之间有额外的空格?

时间:2014-09-16 04:35:07

标签: css fonts cjk cyrillic

在我的客户网站上有一个错误或其他内容,如果您将语言切换到任何亚洲选项(CJK),然后再次打开语言选择器,“俄语”(俄语),“希腊语”(希腊语) )和“塞尔维亚人”(塞尔维亚语)在字母之间有额外的空格。如果您选择任何其他语言,这些单词在语言选项列表中可以正常使用。以下样式位于html元素 -

font: 200 100%/1.5 sans-serif;

我在Mac上看到,sans-serif将把Helvetica作为首选,而在Windows上,它将是Arial。在我的开发工具中,如果我将sans-serif更改为Helvetica,它会更改字体并修复问题,而不是看起来完全相同的字体,这就是我的预期。 (我的Mac上确实有Helvetica。我还没有在Windows中检查过这个。)下面是一个示例截图。

screenshot of language options 实际上,现在我已经玩了一点,我发现当我选择韩语时,非韩语单词用Apple Gothic呈现,对于中文,非中文单词用Century Gothic,而对于日语则用非 - 日语单词是Avant Garde。有什么想法吗?我可以创建一个规则集,将Helvetica,Arial,sans-serif指定为这些语言的字体堆栈,但对正在发生的事情的任何解释都将是一次很棒的学习经历。

编辑:当我提到Apple Gothic,Century Gothic和Avant Garde时,我的意思是,对于每种亚洲语言,我在我的开发工具中将'sans-serif'更改为其他字体名称,看看我是否可以确定在CJK中为页面上的非亚洲单词默认的sans-serif字体是什么。我觉得奇怪的是,中文,日文和韩文都使用了不同的无衬线字体。

语言选项列表的示例代码 -

<ul>
/* other LIs here */
<li>Ελληνικά</li>
/* other LIs here */
</ul>

/* CSS for the LIs */

li {
font-size: .857em; /* computes to 16px */
list-style: none;
padding: .786em .714em .643em .714em;
transition: all 0.25s ease-in-out;
background-color: #fafafa;
border-top: 1px solid #d0d0d0;
color: #333;
margin: 0;
text-align: left;
}

这是在Chrome 37.0.2062.120和Mac 32(10.6.8)上的FF 32中测试的。顺便说一句,同一台计算机上的Safari 5.1.8没有重现问题。

1 个答案:

答案 0 :(得分:3)

根据https://hsivonen.fi/hiragino/(我的重点补充),&#34; Mac OS X附带了一系列名为Hiragino的高质量日文字体。这些字体还包含西欧拉丁字母子集的高质量字形。 基本希腊语和西里尔字母的俄语子集的字形在隔离中看起来很好,但是被调整以匹配汉字块的宽度。这使得字体不适合希腊语或俄语文本。&# 34;

此时我的选择是测试Mac OS附带的其他字体,以查看它们是否未将宽度应用于希腊语和俄语字符。如果他们都这样做,我将使用我前面提到的字体堆栈。另外,当我在Windows中查看时,我不会看到这个问题。