关于字体编码的一些知识,并带大家制作一套字体。(上)

简介: 关于字体编码的一些知识,并带大家制作一套字体。

w3schools 官网文档中介绍的常见符号  点击查看


关于编码的一些知识供大家查阅 点击查看


常见的一些编码知识,只需要了解一下就行,制作字体包时会用到。



0021-007F 、 ASCII Punctuation  点击查看


image.png





0030-0039、ASCII Digits Unicode字符 点击查看


image.png





00A2-00A5、 日元磅和美分:Yen, Pound and Cent  点击查看


image.png





Dingbats字符、印刷符号 (Dingbats)字符


image.png





简体中文(GB2312) gb2312 编码相关信息 查看各国语言点击看简体中文


可以看到想设计一套中文字体大概有23940个编码,体积量很大!



image.png





「&#x 」和「 &#」 开头的是什么编码


类似这样的字符&#dddd&#xhhhh&#nameHTM,这些字符是HTMLL、XML 等 SGML 类语言的转义序列(escape sequence)。它们不是「编码」。


以 HTML 为例,这三种转义序列都称作字符参考character reference:


  • 前两种是数字字符引用(英文:numeric character reference(NCR)),数字取值为目标字符的 Unicode code point;


十进制:decimal (dec),取值范围:8192-8303,格式「&#」开头的后接十进制数字,如 &#0048


十六进制:hexadecimal (hex),取值范围: 2000-206F,「&#x」开头的后接十六进制数字,如 &#X030


  • 后一种「&#name」是 字符实体参考character entity reference,后接预先定义的 entity 名称,而 entity 声明了自身指代的字符,如 空字符&#NUL

    image.png


什么是数字字符和实体字符



  • 数字字符


numeric character reference(NCR),直译就是数字字符引用。


一个Numeric Character Reference编码是由一个与号(&)跟着一个井号(#),然后跟着这个字符的Unicode编码值,最后跟着一个分号组成的,就像上面的例子&#dddd

有了数字字符引用,就可以在网页中显示Unicode字符了,不用考虑html文件本身的编码,因为数字字符引用只用到ASCII字符集里的字符。所以,即使在gb2312编码的网页中,也可以用NCR显示埃及的象形文字了。

  • 实体字符


在Node 层利用 cheerio 解析网页时,输出的中文内容都是以 &#x 开头的一堆像乱码一样的东西,将这一堆“乱码”保存成网页后,通过浏览器打开又可以正常显示。这些乱码,学名是实体编码“entity code”。

这些实体字符是预留的,格式比较语义化,容易记忆,浏览器会将它们视作标签。

比较常见的有:


| 字符    | 转义序列 | 十六进制|
| --------- | ---------|  ---------|
| 空格「 」|   | -  |
| 小于号「<」| &lt;| - | | 大于号「&gt;」|>| - | | … || - | | tab (一个空白=2个字符宽度)|&emsp|&#8195`  |


自定义一套字体包



应用场景:


在移动端和web端设计时,一些用到数据的地方,用某些特定的字体,比如DIN字体,视觉效果比较好看,但是又不想安装很大的字体包,我们可以把数字0-9和常见的标点符号字提取出来,单独做成字体包,减少APP的体积。当然也可以自己动手设计一套。


优点:体积小,可自定义设计




相关文章
|
并行计算 算法 C++
统一内存统一内存的基本概念和使用
统一内存统一内存的基本概念和使用
2236 0
统一内存统一内存的基本概念和使用
|
存储 缓存 NoSQL
分布式锁原理与实现(数据库、redis、zookeeper)
分布式锁可以保证在分布式部署的应用集群中,同一个方法在同一时间只能被一台机器上的一个线程执行。
分布式锁原理与实现(数据库、redis、zookeeper)
|
6月前
|
IDE 开发工具 开发者
手把手教你安装PyCharm 2025:开发者的Python IDE配置全流程+避坑指南
本教程详细介绍了PyCharm 2025版本在Windows系统下的安装流程及配置方法,涵盖AI代码补全与智能调试工具链等新功能。内容包括系统要求、安装步骤、首次运行配置(如主题选择与插件安装)、创建首个Python项目,以及常见问题解决方法。此外,还提供了切换中文界面和延伸学习资源的指导,帮助用户快速上手并高效使用PyCharm进行开发。
3221 61
|
9月前
|
机器学习/深度学习
过程奖励模型PRM成版本答案!谷歌DeepMind全自动标注逐步骤奖励PAV,准确率提升8%
研究团队提出了一种新的过程奖励模型(PRM),通过衡量每一步骤的进展来改进大型语言模型(LLM)的推理能力。与仅在最后提供反馈的结果奖励模型(ORM)不同,PRM能在多步骤推理中逐步提供反馈,从而改善信用分配。研究引入了过程优势验证者(PAV),用于预测证明策略下的进展,显著提升了测试时间搜索和在线强化学习(RL)的效率与准确性。实验表明,PAV相比ORM提高了8%以上的准确性和5至6倍的样本效率。该方法在Gemma2模型上得到了验证,并展示了在解决复杂问题上的潜力。尽管成果显著,但仍需进一步研究以优化证明策略的设计和减少拟合误差。
354 97
|
11月前
|
传感器 物联网 芯片
如何在物联网项目中使用 MicroPython
本指南介绍如何在物联网项目中使用MicroPython,涵盖设备选择、环境搭建、基础编程及网络通信等内容,助你快速上手MicroPython开发。
|
SQL XML Java
Mybatis的原理和MybaitsPlus
这篇文章对比分析了Mybatis和Mybatis Plus的特点与底层实现机制,探讨了两者之间的差异及各自的优势。
353 0
|
XML Java 数据格式
Spring5入门到实战------2、IOC容器底层原理
这篇文章深入探讨了Spring5框架中的IOC容器,包括IOC的概念、底层原理、以及BeanFactory接口和ApplicationContext接口的介绍。文章通过图解和实例代码,解释了IOC如何通过工厂模式和反射机制实现对象的创建和管理,以及如何降低代码耦合度,提高开发效率。
Spring5入门到实战------2、IOC容器底层原理
|
算法 调度
基于CCG算法的IEEE33配电网两阶段鲁棒优化调度matlab
基于CCG算法的IEEE33配电网两阶段鲁棒优化调度matlab
解决pip install安装速度慢的问题
我们在编程过程中,会经常遇到要下载包的问题,而下载包常用的就是pip命令,但是很多情况下直接下载速度比较慢,我们可以使用镜像进行加持