unicode-range字体混搭

前些日子遇到一个技术难点:中文的字体要不同于数字和英文。

最先想到的方法是定义两个拥有不同字体CSS类分别赋予不同的元素。

<div class="font1"></div>
<div class="font2"></div>
但是这个方法是最笨的,而且是不能完全达到要求,因为有些后端传来的字符串无法在之前就猜到时中文字符还是其他的。

<div class="font_x">${news_title}</div>
所以,我参考了一些文章,发现了unicode-range这个属性,用来解决这个问题。

干货如下:

<html>
<head>
	<title></title>
	<meta charset="utf-8">
	<style type="text/css">
		@font-face {
		    font-family: 'mixFont';
		    src: url('fonts/STHeiti-Light.ttf');
		    unicode-range: U+4E00-9FCB;/*汉字字符集*/
		} 
		@font-face {
		    font-family: 'mixFont';
		    src: url('fonts/HelveticaThin.ttf');
		}
		body{
		    font-family:mixFont, Arial;
		    font-size: 2rem;
		}
		@font-face {
		    font-family: 'STHeiti';
		    src: url('fonts/STHeiti-Light.ttf');
		}
		span{
			font-family: STHeiti;
		}
	</style>
</head>
<body>
	这里是一些中文字符,These are couples of characters excepect Chinese.*&(%$(^651644'Hello world' <span> 'Hello world' so as to comparetion.</span>
</body>
</html>


代码中,使用自定义字体定义了两次mixFont,第一次用unicode-range来控制了应用相应的字体(STHeiti-Light)的应用范围即U+4E00-9FCB,而这正是汉字的Unicode字符集。第二次用不同的字体(HelveticaThin)定义mixFont,而没有加unicode-range,这样会应用于汉字字符集之外的字符上。

之后,将mixFont应用到body上就可以了,这样干净利落地完成了区分字体。

接着,为了对比测试结果,又创建了一个STHeiti字体应用到span上,这样能清晰的对比字体之间的差异。



主要参考文章:妙用unicode-range

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值