首页 > CSS中,如何指定中文楷体,英文Italic?

CSS中,如何指定中文楷体,英文Italic?

如题,中文当中有时用楷体与英文中的Italic部分相对应。
但是如果使用font-style: italic的话,中文也会跟着变为斜体。

对于一段中英文混排的文字,怎么才能仅使其中的英文部分变为Italic,而中文的效果不变?


CSS选择器有一个:lang()伪类,可以指定特定语言的样式:

.article span:lang(zh) { font-style: normal; } /* this will be applied to all zh-* languages */
.article span:lang(en) { font-style: italic; } /* ... applied to all en-* languages */
<html lang="zh-cmn-Hans">
<p>中文文字 <span lang="en-us"> This is an English sentence. </span> 中文文字</p>
</html>

值得注意的是,CSS只能根据lang属性标定好的语言来分配样式,而不能承担语言判断的任务。你需要自己使用各种方法把(和文档语言不一致的)其他语言部分包裹标定好。

因为有一点是容易混淆,但必须明确的是:语言和文字其实是两回事。我们中文开发者的确习惯于看到汉字就是汉语,看到A~Z就是英语。但实际上汉字拉丁字母(A~Z)都只是文字系统,而不是确定语言的标志。

同一套文字系统往往是多语言共享的,这样就造成了拿出一段文字,如果不理解其意义就无法反推出是哪一种语言的结果。例如:police可能是英语或法语;文字(U+6587 5B57)可能是汉语或日语*。

说了半天,就是为了说明“CSS和HTML只能标注,而不可能鉴别语言。一个CSS全自动标定英语文本”的想法是不可行的。

也许给拉丁字母一律标注lang="en"的步骤可以自动化,但也只好请题主自己动手。

* CJK统一表意文字系统保证了中(含各种变体和方言,含简正两种书写系统)、日、韩、越这几个涉及汉字的语言中,只要是字形等同(或可以认为是等同)的同一汉字,就统一编为同一个编码。
这可以保证同一个汉字的同一种字形,不因为语言的不同而被无意义的做出多个编码。
这除了便利性(不言而喻)之外,更有一个额外的优点:维护了文字编码的语言无关性,保证语言是语言,文字是文字,两者不被混淆在一起。

【热门文章】
【热门文章】