是否可以将后备字体应用于整个段落?例如,我有一些文本可以是拉丁字母或西里尔字母或两个符号。我只想对拉丁文字使用一种字体,而对西里尔字母/混合字体使用另一种字体。有可能吗?
这里是一个例子:
p {
font-family: Lato, Montserrat;
font-size: 2rem;
}
<head>
<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet">
</head>
<body>
<p>Some latin text.</p>
<p>Здесь кирилица.</p>
<p>And here some смешанный text.</p>
</body>
我想将蒙特拉特应用于整个第三段
答案 0 :(得分:0)
好的,因此,如果您不惜一切代价避免字体闪烁,我建议在此进行服务器端处理-如果您想在服务器上节省一些性能,我将使用javascript进入客户端:>
css:
.font-montserrat {
font-family: Montserrat;
}
和带有jQuery的js(服务器端,您可以在渲染过程中对此进行调整,并放入一些php函数或使用的任何语言):
$('p').each(function() {
var p = $(this);
// here it is important to avoid other inline tags like b, i, span, etc
var textWithoutOtherTags = p.text();
// this is the main bit and one would simply test by a regular expression
// - this can be adapted as needed, at the moment it returns true, if a
// single latin or cyrilic letter is present
var hasLatin = /[a-z]/gi.test(textWithoutOtherTags);
var hasCyrilic = /[а-я]/gi.test(textWithoutOtherTags);
// now add the class depending on the containing characters
if (hasLatin && hasCyrilic) {
p.addClass('font-montserrat');
}
});
您当然也可以在没有jQuery的情况下轻松地做到这一点,但是请注意,p内可能会出现b,i,strong,span和其他内联标签,并在进行正则表达式测试之前将其过滤掉。
好任务;)