认识
A typeface (or font family) is a design of letters, numbers and other symbols, to be used in printing or for electronic display.
注意,Typeface 与 Font Family 两者含义相同。但是,Typeface 与 Font 是不同的概念,不可互换:Typeface,其表述的是字的形状,但不包含大小、粗细等等特征;Font,其包含这些特征(例如,大小、粗细、倾斜、……)。
组成
字形 Glyph
字形;符号;雕文;雕纹;
象形文字
字体 and 字符集
How are character encodings related to fonts?
Wikipedia/Code point
Wikipedia/Character encoding
What’s the difference between a character, a code point, a glyph and a grapheme?
Character encodings: Essential concepts
Unicode Consortium
字体编辑用中日韩汉字 Unicode 编码表
Unicode 与 JavaScript 详解
字符编码笔记:ASCII,Unicode 和 UTF-8
每个「字符」都有对应的「码位」,「码位」是对「字符」的编号,它是一个普通的数字。
在将「码位」保存到存储(硬盘)中时,需要用到「字符集」。将「码位」按照「字符集」的规则进行转化,然后保存到存储中。
而「字体」是对应到「码位」的,「字体」与「字符集」没有直接的关系。
所以说,文件中保存的是编码,这也是「打开文件时需要使用正确字符集」的原因。当打开文件中,读取到的实际上是「编码」,「编码」解析为「码位」,由「码位」找到对应的「字体」。
性质
Serif vs. Sans-Serif
在排版上,有个概念叫衬线字体——这个就不局限于代码字体了。基本可以认为那些字体上带各种勾勾和花边的就是衬线字体。
针对去掉这些额外装饰的字体就,则是非衬线字体(也就是常说的 Sans-Serif,这其实是个法语单词)。
Monospace vs. Proportional
字体一般分为:
等宽字体,Monospaced Font
非等宽字体,Proportional Font
Ligature vs. No-ligature
某个字体带 LF 后缀,这个是 Ligature(连字)Font 的简写。连字就是给常用的一些字符组合做特殊处理,让它们看起来更连贯。
某个字体带 NL 后缀,指不带连字(No-ligature),比如 JetBrains Mono NL 字体。(所示如图,上面一行是开启连字时,下面一行是关闭连字时)。
Width | 字宽
一般来说一个中文字的宽度是 1000,也就是一个 em-size. 为了方便阅读,大多数代码字体实际上使用 600 作为字母宽度。
只有少数注重纤细的字体才会使用 500 作为字母宽度,比如 Inconsolata、Ubuntu Mono、Iosevka —— 对于多数人来说这些字体其实听起来很陌生。
应用
该部分将介绍字体、字符集相关的内容。
Nerd Font
参考
Wikipedia/Typeface
Wikipedia/Font
Fonts in the X Window System
UTF-8
Fonts in X11R7.7
写代码用哪种字体看起来最舒适?