百度百科里面是如下解释的:“文字的外在形式特征(字的形体)。就是文字的风格,是文字的外衣。字体的艺术性体现在其完美的外在形式与丰富的内涵之中。字体是文化的载体,是社会的缩影。” 维基百科里面是如下解释的:“字体(英语:typeface或font family)在书法和印刷领域是指文字的式样。” 我的理解是,字体是文字书面化的样式载体,定义文字是如何写/画在书面上规则。 知道为什么我们能清晰的分辨出自己写的字和“张三”写的字吗? 字体不同。 在计算机的世界中,屏幕中显示的文字样式都不是输入者实际写的。输入者写的所有文字,都只是通过输入设备(如键盘)将想要输入的文字传递给文件编辑软件(如word、记事本),而在各种编辑软件中,均有设置字体的入口,而使用相同的字体,写相同的文字,理论显示效果是一致的(排除屏幕分辨率的影响)。 所以可以理解为,字体是承载文字的载体,规定了什么样的字,以什么样式显示在屏幕上。
常见字体的分类结合ISO/IEC 9541-1:1991和GB/T 16964.1 协议,将字体大概分支下面9类
- 安色尔体类
- 石刻类
- 黑体字母类
- 衬线类
- 无衬线类
- 手写体类
- 装饰类
- 符号和装饰类
- 传统汉字类
其中每个类别下均有多个字体库,目前大概有千种不同的字体存在,新的字体不断发展。其中比较常见的是衬线字体和非衬线字体。其表现形式如下
android 支持默认支持4种字体,分别如下 noraml (普通字体,系统默认使用的字体 >= 4.1 roboto) sans(非衬线字体)(sans:无,没有) serif (衬线字体)(serif:衬线) monospace(等宽字体)
字体三大概念 字体家族通常说说的字体其实就是指字体家族。字体家族一般代指具备某一类特点的各字重字体的统称。 我们在实际开发中,常用的第三方字体Ununtu 、ProximaNova、roboto 其都是有家族、成套的,每一种都有不同的平台和不同子重的。每一种字体都是经过设计师一笔一笔设计出来的、都是有版权的,商用要注意授权和法律问题。
字重在实际开发中,经常会遇到文字粗体、斜体显示,这里面的粗体和斜体实际上都是字重的概念。 实际上每一种字重在存储上的表现都是一个独立的字库库(ttf)(True Type Font,是TrueType字体文件,由 Apple 和 Microsoft 共同推出的一种字体文件格式)。 android官方支持的字重主要有NORMAL、BOLD、ITALIC、BOLD_ITALIC四种,实际上对应于字体库来说,是一个字体家族的4个不同字体。
字号口头中说所得,8号字、12号字中所描述的x号字,就是字号的概念。通常来讲,字号的单位是sp。(sp:scale-independent pixels(缩放独立像素,等同于sip))
Android 字体使用回顾一下,我们是如何使用斜体的,最常见的方式是 android:textStyle=“italic” 如何自定字体呢? android:typeface=“sans-serif-meduim” 那谷歌是如何如何实现的呢? 在android 源码中存在这样一个文件frameworks/base/data/fonts/fonts.xml。他就是为系统制定字体的,下面将android5.1的文件截图,我们来看一下 通过上图,可以看到我们通过typeface=“sans-serif-meduim” 设置的实际字体是normal 状态下,weight为500的Robot-Medium字体库。其保存的文件为Robot_Medium.ttf文件。
说了那么多, 字体的规则导致是怎么样的呢? 我们随意找个字体,简单看下
上文中,可以看到ProximaNova 粗体字的基本内容。那么单个字体是如何设计呢?下面将分中文和英文,分别描述
那么其是如何和代码对应的呢? 通过FontMetricsInt 的各种参数,可以设置对其等各种自定义场景了。
格式 释义 .eot Embedded OpenType .otf OpenType .svg Scalable Vector Graphics . ttf TrueType .woff Web Open Font Format
推荐字体下载网站外网:https://www.fontsquirrel.com/
参考:
什么是字体?_myhc的博客-CSDN博客_字体家族是什么意思
https://blog.csdn.net/qq_45668041/article/details/115040179