当前位置:  开发笔记 > 编程语言 > 正文

CSS可以根据语言选择不同的默认字体和大小

如何解决《CSS可以根据语言选择不同的默认字体和大小》经验,为你挑选了3个好方法。

我有以下CSS片段:

INPUT{ font-family: Raavi; font-size: 14px;}

当文本框包含一些像这样的旁遮普语脚本时,它可以正常工作:ਪੰਜਾਬੀ

但是用户可能会输入英语,我宁愿使用不同大小的Verdana字体,因为Raavi字体中的英文字母非常时髦且尺寸错误.

所以我的问题可以说是:

根据输入,CSS中是否存在任何类型的条件字体系列和大小选择

有没有CSS知道输入语言?

所以我可以创建以下PSEUDO_CSS:

INPUT{ EN-font-family: Verdana; EN-font-size: 12px; PA-font-family; Raavi; EN-font-size: 14px;}

要么

INPUT.EN{ font-family: Verdana; font-size: 12px;}
INPUT.PA{ font-family: Raavi; font-size: 14px;}

小智.. 35

这在CSS3中得到了解决,这对于与旧浏览器的兼容性没有帮助,但是当将希腊语和拉丁语文本与每种语言的不同字体混合时,它对我有用.以下是CSS字体模块工作草案的示例:

@font-face {
    font-family: BBCBengali;
    src: url(fonts/BBCBengali.ttf) format("opentype");
    unicode-range: U+00-FF, U+980-9FF;
}

unicode-range位是魔术键:它告诉浏览器仅对此特定的Unicode字符块使用此font-face语句.如果浏览器找到该范围内的字符,它将使用此字体; 对于该范围之外的字符,它会回落到通常的默认模式之后的下一个最具体的CSS语句.



1> 小智..:

这在CSS3中得到了解决,这对于与旧浏览器的兼容性没有帮助,但是当将希腊语和拉丁语文本与每种语言的不同字体混合时,它对我有用.以下是CSS字体模块工作草案的示例:

@font-face {
    font-family: BBCBengali;
    src: url(fonts/BBCBengali.ttf) format("opentype");
    unicode-range: U+00-FF, U+980-9FF;
}

unicode-range位是魔术键:它告诉浏览器仅对此特定的Unicode字符块使用此font-face语句.如果浏览器找到该范围内的字符,它将使用此字体; 对于该范围之外的字符,它会回落到通常的默认模式之后的下一个最具体的CSS语句.



2> Miles..:
input { font-family: Verdana, Raavi, sans-serif; font-size: 14px;}

应该适用于您的目的:

如果文本是英文,则两种字体都应包含字形,并且首选Verdana

如果文本是旁遮普语,Verdana不应该包含字形,所以浏览器应该回落到Raavi

如果所有浏览器都能正常运行我并不积极,但这就是他们应该根据CSS规范做的事情.



3> Zack The Hum..:

纯CSS解决方案可能很简单:

input[lang=en] {
  font-family:Verdana;
  font-size:12px;
}

input[lang=pa] {
  font-family:Raavi;
  font-size:14px;
}

但是仍然需要设置lang输入元素的属性.

不幸的是,与大多数奇特的 CSS功能一样,属性选择器并非100%在今天的浏览器阵列中工作.在我看来,你最好的选择是使用每种语言的类并将其分配给input元素.

更新:

根据您的要求,这是一个使用vanilla JavaScript实现它的天真方式的示例.肯定会有改进,但这"有效".



此类示例键入字符触发.然后检查它是否落在被认为是"英语"的范围之间并相应地分配属性.它集lang,xml:lang以及class属性.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有