关于unicode:使用CSS为拉丁字符和日语字符使用不同的字体

Use different fonts for Latin characters and Japanese characters with CSS

我们正在创建同时使用日语和英语的网站。我们希望摆脱无法使用ClearType的默认日语字体。有没有办法告诉浏览器在同一页面上对日语字符(如Meiryo)使用不同的日语字体,而对于拉丁字符(如Helvetica)仅使用另一种字体?我们不希望任何英语单词使用Meiryo字体。

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

但是,这在IE中不起作用。即使我们先指定Helvetica,Verdana或任何其他广泛使用的字体,然后再在CSS中指定日文字体,IE仍将日文字体用于英语单词。 Firefox,Chrome等可以正常工作。

(如果可能的话,我们希望不要诉诸于将每个英文单词package成一个范围)之类的内容。


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

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

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* 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;
}
1
2
<p><center>[wp_ad_camp_2]</center></p><p>Example is better than precept.</p>
<p>à|‰à|aà||à§?à|?à§?à|° à|?à§?à§?à§? à||à§?à|·à§?à|?à|?à|¨à§?à|¤ à|-à|?à|2à§?।</p>


如果您想跨浏览器使用它,就无法绕过用类和字体标记每个语言部分。仅靠CSS不能做到这一点。

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

您可以在此处找到块定义(日语为平假名和片假名):http://www.fileformat.info/info/unicode/block/index.htm

我建议这样做的后端方法,因为在页面加载期间更改页面上的字体可能会导致元素闪烁或移动。


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

1
2
.ja { font-family: meiryo, sans-serif; }
.en { font-family: arial, verdana, sans-serif; }

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

1
<td class="ja">?—¥???èa?</td>


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

如果要获取变量,则不能将此变量用作用于主体div的类。

1
<body class="english">

1
<body class="japanese">