使用不同的字体为拉丁字符和日语字符与CSS

Fra*_*nky 7 css unicode fonts internationalization

我们正在创建一个使用日语和英语的网站.我们希望摆脱不能使用ClearType的默认日语字体.有没有办法让浏览器在同一页面上使用不同的日语字体JUST用于日语字符(Like Meiryo)和另一种字体仅用于拉丁字符(如Helvetica)?我们不希望任何英语单词使用Meiryo字体.

我们实际上使用了一个提示来从CSS中首先在CSS中指定英文字体:http://www.lukew.com/ff/entry.asp?118

但是,这在IE中不起作用.即使我们首先指定Helvetica,Verdana或任何其他广泛可用的字体,然后在CSS中指定日语字体,IE仍将使用日语字体作为英语单词.Firefox,Chrome等按预期工作.

(如果可能的话,我们希望不要诉诸于跨越每个英语单词的东西)

Sha*_*Mon 6

我已经使用 'unicode-range' CSS 属性解决了我的问题。

您可以在此处找到详细信息: https //developer.mozilla.org/en/docs/Web/CSS/@font-face/unicode-range

例子:

/* bengali */
@font-face {
  font-family: 'Atma';
  font-style: normal;
  font-weight: 400;
  src: url(https://fonts.gstatic.com/s/atma/v2/tUcVDHNCVY7oFp6g2zLOiQ.woff2) format('woff2');
  unicode-range: u+0980-09FF;
}


body {
  font-family: 'Atma', arial, sans-serif;
  font-size: 18px;
}
Run Code Online (Sandbox Code Playgroud)
<p>Example is better than precept.</p>
<p>??????? ???? ????????? ?????</p>
Run Code Online (Sandbox Code Playgroud)


Bla*_*ise 5

如果您希望跨浏览器工作,则无法使用类和字体标记每个语言部分.仅使用CSS无法完成.

您可以手动或自动应用语言类.手动可能需要大量的工作来支持和维护,但是非常强大.动态地,可以使用后端脚本或Javascript,通过扫描字符串以查找属于某些unicode字符块的字符,并相应地应用语言类来完成.

你可以在这里找到块定义(日语是平假名和片假名):http://www.fileformat.info/info/unicode/block/index.htm

我建议使用后端方法,因为在页面加载期间更改页面上的字体可能会导致元素闪烁或移位.

  • 平假名和片假名只是音节字符集,你遗漏了所有的汉字(CJK字符). (2认同)

小智 5

为英语和日语文本创建 css 类。

\n\n
.ja { font-family: meiryo, sans-serif; }\n.en { font-family: arial, verdana, sans-serif; }\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果整个页面都是日文,则在 body 标签中添加 class="ja",如果有混合内容,则在包含日文文本的 html 元素中添加 class="ja",例如:

\n\n
<td class="ja">\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e</td>\n
Run Code Online (Sandbox Code Playgroud)\n


小智 0

您如何告诉页面将哪种语言打印到屏幕上?

如果你得到一个变量,你不能将该变量用作用于 body 的 div 的类。

<body class="english">
Run Code Online (Sandbox Code Playgroud)

或者

<body class="japanese">
Run Code Online (Sandbox Code Playgroud)