使用CSS3的unicode-range实现页面字体混搭

深入解析CSS3 @font-face 规则:自定义与网络字体全面指南 font-face规则是CSS3中用于定义和引用自定义字体的一种CSS规则。通过它,开发者可以将自定义字体文件(如.ttf.woff.woff2等格式)链接到网页中,使浏览器在渲染文本时使用这些指定的字体,而无需用户本地安装这些字体。Css定义好@font-face规则后,只需在常规CSS样式中使用定义的名称即可应用自定义字体。Cssbody {h1 {在上述示例中,body元素和h1元素将优先使用自定义字体。如果该字体加载失败或用户浏览器不支持,将回退到指定的备选字体(如Arial。 阅读详情

遇到需求如下:提供了两种字体文件,要求页面中中文使用方正兰亭黑体,英文使用BlaBlaSans,从而实现中英文使用不同字体。

 

首先能想到最常见的解决方案


实现两个class,分别设置font-family为这两个字体,再将这两个类分别应用于中文与英文元素上

此方案存在的问题:

  • 工作量大,繁琐

  • 无法判断元素内容为中英文时无法满足要求,比如由接口返回的内容

  • 由repeat循环产生的元素中有的是英文有的是中文的情况,无法满足要求

  • ...

 

总而言之该方案既繁琐,又会存在很多无法满足的情况。经过查询,我发现了css3提供了一个unicode-range属性来解决这一问题:

 

unicode-range


css3中的@font-face已经被广泛应用于字体设置,为人所熟知,但它有一个unicode-range属性却很容易被我们忽略掉。

unicode-range 的作用是为@font-face所设置的字体限定一个应用范围,使用unicode编码来设置范围。

eg.

@font-face {

    font-family: ‘mixFont’;

    src: url(‘../fonts/lantingHei.eot’);

    unicode-range: U+4E00-9FCB;

}

@font-face {

    font-family: ‘mixFont’;

    src: url(‘../fonts/BlaBlaSans.eot’);

}
Webpack5快速入门 (二) CSS相关loader的使用及兼容性处理 手把手带你打开前端工程化的大门 一、CSS-Loader 1.为什么需要loader 2.loader是什么 3.css-loader介绍 我们还是用webpack第一篇里的webpack初体验项目,下面是我们的项目目录结构: 我们创建一个login.js文件,在里面先创建dom标签,然后再把它放在界面上进行展示,之后再去给相应的元素添加样式,然后再通过webpack做一个统一的打包,之后输出到一个静态资源上去,为我们所用进行部署。 下面我们一步步地实现: 我们在 login.js 文件中 创建一个 login 函数 阅读详情

相关推荐

优化网站字体:掌握Unicode范围和字体子集化技术

在本章节中,我们学习了如何通过Unicode代码点对字体进行子集化,以便只导出网站内容所需字符的字形。这有助于减小字体文件大小,从而加快页面加载时间。我们还学习了如何使用Python的fonttools库及其pyftsubset工具进行字体子集化,并通过unicode-range属性在CSS中按需加载字体子集。此外,对于不支持unicode-range属性的旧浏览器,文中提出了一种JavaScript回退方法。

weixin_32312889的博客 447

掌握Unicode字体范围描述符与字体显示策略

本文深入探讨了CSS字体模块中的Unicode范围描述符以及font-display描述符如何影响网页字体的加载与显示。通过具体示例,我们了解了如何利用这些描述符优化字体文件的大小,改善网页性能,并提供用户体验。

weixin_33298352的博客 612

字体优化:子集化与Unicode范围的应用

本篇博客文章深入探讨了如何通过字体子集化和unicode-range描述符来优化网页字体的加载和使用。文章解释了字体文件中字形的概念,并指出并非所有字形都会被用到,因此提供了通过子集化技术减少字体文件大小的方法。同时,介绍了使用Python的FontTools库来手动创建子集字体的方法,以及如何处理SIL开源字体许可证(OFL)下的字体命名要求。此外,文章还探讨了CSS中的写作模式,特别是对于需要从右到左书写或垂直书写语言的开发者而言,写作模式的概念和应用是必不可少的。

weixin_42620563的博客 524

css-unicode-loader:Webpack加载器,用于将scsssasslesscss文件的中文或双字节字符串转换为unicode char

css-unicode-loader webpack加载器,用于将中文或双字节的scss / sass / less / css文件字符串转换为unicode char。 用法 npm install --save-dev css-unicode-loader 如果是vue-cli 3+,则将加载程序添加到vue config文件中。 // vue.config.js module . exports = { configureWebpack : config => { config . module . rules . filter ( rule => { return rule . test . toString ( ) . indexOf ( "scss" ) !== - 1 ; } ) . forEach ( rule => {

逆向解析M团外卖mtgsig与waimai_sign加密参数实战指南⊙ω⊙

本文详细解析了M团外卖App中mtgsig与waimai_sign两个核心加密参数的逆向分析与生成方法。通过抓包定位、静态逆向与Frida动态调试,拆解了waimai_sign的RSA签名逻辑与mtgsig的复杂参数组装加密流程,并提供了Python模拟实现的框架与调试心得,为安全研究及合规数据分析提供实战指南。

weixin_29327525的博客 1285

KNX智能家居工程设计应用

KNX,是一个起源于欧洲的总线标准,主要应用于家居和楼宇中,对末端电气设备进行总线式的控制,比如照明、空调、地暖、电动窗帘和遮阳设备等等。根据2017年英国著名咨询公司BSRIA的数据报告显示,在中国的智能家居和灯光控制市场,KNX产品的市场份额为各类产品中排名第一,占据了42%的市场份额,远远领先于其他的标准协议。设备中一个继电器表示一路输出,某些功能可能需要用到多个输出,比如1个窗帘AC输出需要占用两路继电器输出,一个继电器用于控制正转,一个用于控制反转,而普通开关输出则需要占用一路继电器输出即可。

hhhh5555666的博客 934

FreeSWITCH视频通话实战:关键配置文件解析与编解码优化

本文详细解析了FreeSWITCH视频通话实战中的关键配置,重点介绍了如何通过修改`conf/vars.xml`和`sip_profiles/internal.xml`文件来启用媒体代理、优化编解码器设置(如H.264和VP8),并解决常见的视频流协商与网络穿透问题,帮助用户快速实现稳定、高质量的视频通话功能。

js777的博客 256

Vue3 与 Bpmn-js:打造现代化 BPMN 流程设计器

随着业务流程的复杂化,流程设计器成为企业级应用中不可或缺的一部分。BPMN(Business Process Model and Notation)是一种标准的业务流程建模语言,广泛应用于业务流程管理。本文将介绍如何使用 Vue3 和 Bpmn-js 打造一个现代化的 BPMN 流程设计器。

九天的专栏 2118

图神经网络实战(7)——图卷积网络(Graph Convolutional Network, GCN)详解与实现

图卷积网络 (Graph Convolutional Network, GCN) 架构由 Kipf 和 Welling 于 2017 年提出,其理念是创建一种适用于图的高效卷积神经网络。在本节中,我们将讨论 Vanilla GNN 架构的局限性,并详细介绍 GCN 的工作原理,通过使用 PyTorch Geometric 在 Cora 和 Facebook Page-Page 数据集上实现 GCN 来验证其性能。

盼小辉丶的博客 2万+

SAP ABAP Append structure 介绍

所有在 append structure 上增强的字段都是 append structure 的一部分,这意味着对这些增强所做的任何更改仅仅施加在 append structure 上,而不会影响被增强的 ABAP DDIC 结构。这同样适用于 transport. 激活数据库表或结构时,会找到所有关联的 append structure,并将它们的组件附加到数据库表或结构。Append structure(附加结构)是 ABAP 字典中附加到另一个结构或数据库表并将其组件附加到它们的结构。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1166

STM32 IIC温湿度传感器(STH45)实验

精度 ΔRH = ±1.0 %RH, ΔT = ±0.1 °C• 平均电流:0.4 μA,空闲电流:80 nA• I2C FM、CRC 校验和、乘法。I2C 地址。• 专利保护选项 [1]、PTFE 膜和可拆卸保护盖• 工作范围:0 …100 %相对湿度,−40…125 摄氏度• 在冷凝环境中功能齐全• 动力加热器,真正的NIST可追溯性• JEDEC JESD47 认证 • 符合 ISO 17025 : 2017 的传感器专用校准证书,3 点温度校准。

baidu_34971492的博客 3075

Fiori Elements Analytical List Page 标题区配置全攻略:从变体、过滤模式到 UI.KPI 的工程化落地

ALP标题区是Fiori Elements Analytical List Page的核心交互区域,承担变体管理、过滤模式切换、KPI展示等关键功能。本文系统解析了标题区的组成结构、可用能力及工程实现要点,包括:1)标题区包含过滤类型切换、全局KPI、变体管理等交互元素;2)详细说明视觉过滤与紧凑过滤的同步规则及实现方式;3)介绍OData V2下通过UI.KPI注解配置标题区KPI的方法;4)提供manifest.json配置示例和CDS注解写法。文章还对比了V2与V4版本的差异,为ALP开发提供实用指导

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 246

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: JS Number
下一篇: JSDoc入门使用指南 -- 手摸手教你用JSDoc(超好用的js文档生成工具)
bunny_Lover
博客等级 码龄12年 1粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值