Fonts (简体中文)
引自 维基百科:"计算机字体(computer font),简称字体(font),是包含有一套字形与字符的电子数据文件。"
注意:部分字体在许可协议中规定了使用时的法律限制。
字体类型
现今计算机使用的绝大多数字体,都是属于点阵字体或者轮廓字体二者之一。
- 点阵字体
- 每种字形的每种形式和每种尺寸的图像都由点或者像素组成的矩阵构成。由于位图的原故,点阵字体很难进行缩放,特定的点阵字体只能清晰地显示在相应的字号下。但对于 12-16 px 的小号汉字来说,点阵字体往往比其它类型的字体在屏幕上有更好的显示效果。
- 轮廓字体或称矢量字体
- 使用贝塞尔曲线、绘图指令和数学公式来描述每种字形,使得字体可以适应各种尺寸。
点阵格式
- Bitmap Distribution Format (BDF) - 来自 Adobe
- Portable Compiled Format (PCF) - 来自 Xorg
- PC Screen Font (PSF) 内核终端字体,Xorg 不支持此格式 (Unicode PSF 文件的扩展是
psfu)
此格式可以通过 gzip 压缩。
轮廓格式
- PostScript 字体 - 来自,包含打印机 ASCII 字体 (PFA) 和打印机二进制字体 (PFB)
- TrueType - Apple 和 Microsoft 定义(
ttf) - OpenType - 基于 TrueType,Microsoft 定义(
otf,ttf)
大部分情况下,TrueType 和 OpenType 之间的差异可以忽略.
安装
你可以使用多种方法安装字体。
创建字体包
如果要使用 pacman 管理自己的字体,可以创建 Arch 软件包,并在 AUR 中与社区成员分享。字体包的规范请参考 Font packaging guidelines.
用 可以查看字体类型: fc-query -f '%{family[0]}\n' /path/to/file. 中列出了字体的类型。
手动安装字体
要安装不在源中的字体,推荐的方法请参考#创建字体包。这样使得 pacman 在以后能够更新或者移除它们。当然字体也可以通过手工方式安装。
要在系统范围内(对所有用户有效)安装字体,请将文件夹移动到 目录。这些文件需要对每个用户而言都是可读的,使用 chmod 来设置合理的权限 (比如,文件至少为 ,而目录至少为 )。要为单个用户安装字体,请使用 (~/.fonts/ 现在已经过时了)。
要让 Xserver 能直接载入字体(而不使用某些字体服务),就需要将新增字体的目录加入到 FontPath 中。它位于您的 Xorg 设置目录中(例如 或 ) 中。更多详细内容请查阅#过老的应用程序
然后更新 fontconfig 的字体缓存:
$ fc-cache -vf
手动安装:高级模式
如果您有特殊的字体收集需求,例如使用商业字体、使用不同格式的字体、安装/删除字体相当频繁,或只是希望可以更能够控制访问自己的字体资源,那就相当适合用手动的方式来安装维护字体。采用这种方案会获得很多好处:
- 避免重复安装不同版本、格式的同一种字体集 (经常容易导致渲染问题)。
- 字体可使用多个非标准的实体来源 (例如额外的硬盘、分区)。
- 避免依赖隐晦又占体积的本地字体来源(例如 TeX Live & ,或是 AUR 中的某个字体包);使用这些字体来源时,您可能只需要其中的 5 种字体,却必须连带安装其它 55 种不需要的字体。
- 避免字体渲染问题,在您的 fontconfig 配置文件已被修改成与安装在系统的那份不同的格式。
- 只要观察主字体目录下的内容,就能够确定系统上有哪种格式的字体集可供应用程序使用。您不需要复杂、占用大量资源的字体管理程序; 和基本的指令工具 (如 fontconfig 软件包下的 ) 就可以将这件差事办得又快又好。
- 当您安装或升级单一字体,所有应用程序都可以使用新版本字体,包括 LaTeX 相关软件。
- 有必要的话,可以快速启用 / 停用某个字体集,因为您知道它们在哪个目录下(调试时很好用)。
- 不需担心有任何多余的 fontconfig 文件会可能与您的渲染设置起冲突 (特别是当您使用自定的字体设置与修补过的函式库时)。
- 长远来看,可以省下那些因软件包管理器的失误,解决问题和清除冲突所浪费的宝贵时间。
实际操作上有几种方式,有必要的话可任由软件包管理员采用。以下所举出的操作方式相当有效率,即使字体数目众多也相当安全。
- 我们要将字体来源位置 (例如 :这是我们要存放字体的位置) 和包含字体集软链接的目录 () 给分隔开来。
- 将每个字体集分别放在一个明确命名的子目录下。命名规则必须一致且明确,例如这样:
字体来源目录的内容会长得像这样:
- 我们不会涉及到 TeX Live 的字体目录,以避免 LaTeX 软件发生任何问题。既然我们可以使用多个位置,我们将在 创建软链接,让应用程序可以访问特定的字体集:
结果如下:
$ ls /usr/share/fonts ttf-liberation -> ..fonts.avail/ttf-liberation ttf-ms-arial -> ..fonts.avail/ttf-ms-arial otf-heuristica -> ..fonts.avail/otf-heuristica otf-texlive-tex.gyre -> /opt/texlive/texmf-dist/fonts/opentype/public/tex-gyre ttf-texlive-open.sans -> /opt/texlive/texmf-dist/fonts/truetype/public/opensans ...
最后,依照惯例执行:
TeX Live Wiki 文章内也有一个类似做法,比较简单,但更适用于单一用户的情形,而非全局设置。
过老的应用程序
过老而不支持 fontconfig 的应用程序(例如 GTK+ 1.x 应用,及 ),需要在字体目录创建索引:
$ mkfontscale $ mkfontdir
或在一条命令中包含多个目录:
$ for dir in /font/dir1/ /font/dir2/; do xset +fp $dir; done && xset fp rehash
或者如果字体被安装在一个不同的子文件夹,比如在 下:
$ for dir in * ; do if [ -d "$dir" ]; then cd "$dir";xset +fp "$PWD" ;mkfontscale; mkfontdir;cd .. ;fi; done && xset fp rehash
有时候 X server 可能会不能成功加载字体目录,这时你需要重新扫描 文件:
# xset +fp /usr/share/fonts/misc # Inform the X server of new directories # xset fp rehash # Forces a new rescan
查询字体是否已经生效,可以使用:
$ xlsfonts | grep fontname
为了让 Xorg 找到并使用你新安装的字体,你必须把字体路径加入到 (另一个 X.Org 配置文件或许也可以)。
这个例子演示了必须加入到 中的代码片断。请根据你的实际需要添加或删除路径。
# 让 X.Org 知道自定义字体目录
Section "Files"
FontPath "/usr/share/fonts/100dpi"
FontPath "/usr/share/fonts/75dpi"
FontPath "/usr/share/fonts/cantarell"
FontPath "/usr/share/fonts/cyrillic"
FontPath "/usr/share/fonts/encodings"
FontPath "/usr/share/fonts/local"
FontPath "/usr/share/fonts/misc"
FontPath "/usr/share/fonts/truetype"
FontPath "/usr/share/fonts/TTF"
FontPath "/usr/share/fonts/util"
EndSection
Pango 警告
当你的系统中安装了Pango,它会从 fontconfig 查找字体来源。
(process:5741): Pango-WARNING **: failed to choose a font, expect ugly output. engine-type='PangoRenderFc', script='common' (process:5741): Pango-WARNING **: failed to choose a font, expect ugly output. engine-type='PangoRenderFc', script='latin'
如果你看到类似的错误,或在应用程序中看到方块而不是文字,这表示你需要添加字体并更新字体缓存。以下示例使用ttf-liberation字体讲解如何解决这个问题。使用 root 权限运行如下命令可以使字体在系统范围内生效。
# pacman -S ttf-liberation -- output abbreviated, assumes installation succeeded -- # fc-cache -vfs /usr/share/fonts: caching, new cache contents: 0 fonts, 3 dirs /usr/share/fonts/TTF: caching, new cache contents: 16 fonts, 0 dirs /usr/share/fonts/encodings: caching, new cache contents: 0 fonts, 1 dirs /usr/share/fonts/encodings/large: caching, new cache contents: 0 fonts, 0 dirs /usr/share/fonts/util: caching, new cache contents: 0 fonts, 0 dirs /var/cache/fontconfig: cleaning cache directory fc-cache: succeeded
你可以这样测试一个正在设置的默认字体:
# fc-match LiberationMono-Regular.ttf: "Liberation Mono" "Regular"
字体包
以下是官方源和 AUR 中提供的安装包列表以供参考。支持 Unicode 的字体都标注上了“Unicode”字样。欲知详情请查看具体项目或维基百科。
Github用户Ternstor编写了一段python脚本,可以通过在 AUR 和官方源中所有字体的 PNG 图像产生 HTML 文件: .
盲文点字
- - 包含 Unicode 盲文点字符号的字体。
数学和符号字体
- - 提供许多 Unicode 符号,包括 Emoji
- , 包含许多数学字体,如拉丁符号。
- - Google 的 emoji 字体
- , otf-cm-unicodeAUR - Computer Modern (of TeX fame)
- , -Computer Modern fonts 的改进版本
- - STIX 字体的 OpenType 实现,以及对从右到左的书写支持。
- - EmojiOne creator's proprietary Emoji 13.1。
- - Twitter 的开源 Emoji 字形。
非英文使用者
应用程序与浏览器会根据 fontconfig 设置和 Unicode 文字可用的字体来选择其显示字体。用指令 fc-list :lang="双字母的语言代码" 枚举系统安装了哪些可对应该语言的字体。例如,枚举已经安装的阿拉伯文字体,以及支持阿拉伯字的字体:
若要在多国语言的网站(如Wikipedia、Arch Linux Wiki)中正确显示字形,需要安装下列一项软件包:
- 谷歌的 Noto 字体家族旨在支持所有语言。请安装 , 和 软件包。
- An alternative set of fonts which has a good coverage of languages is with ttf-arphic-uming and .
Pan-CJK
- 思源字体:Adobe与Google合资开发的,囊括简体中文、繁体中文、日文、韩文字形和来自 Source Sans 字体家族的拉丁文、希腊文和西里尔文字形的 OpenType 字体。
- - 思源黑体,无衬线字体。
- - 思源宋体,衬线字体。
- - Google Noto CJK 字体, 提供简体中文、繁体中文、日文、韩文一致的设计和外观。它是基于 重贴的商标。
- 文泉驿
- - 文泉驿微米黑,无衬线形式字体。
- - 文泉驿微米黑light版(笔画更细)。
- - 旧字体风格的中日韩衬线字体
中文字
- 思源字体
- adobe-source-han-serif-cn-fonts - 思源宋体简体中文部分
- - 思源宋体繁体中文部分
- - 思源黑体简体中文部分
- - 思源黑体繁体中文部分
- noto中文字体
- - Noto 简体中文字体
- - Noto 繁体中文字体
- 文泉驿字体
- wqy-zenhei - 文泉驿正黑体,黑体 (无衬线) 的中文轮廓字体,附带文泉驿点阵宋体 (也支持部分日韩字符)。
- - 文泉驿点阵宋体 (衬线) 中文字体。
- 文鼎字体
- - 楷书 (带有笔触) Unicode 字体 (推荐启用反锯齿)
- ttf-arphic-uming - 明体 (印刷) Unicode 字体
- - 新宋字体,之前为 ttf-fireflysung
- ttf-hannom - 中文、越南文 TrueType 字体
- 台湾地区教育部标准字体
- - 台湾教育部发行的标准楷书、宋体字体
- - 台湾地区教育部发行的NS11643标准的中文交换码全字库,包含明体、正宋体及正楷体。
- Windows中文字体
- - windows8简体中文字体。
- - windows8繁体中文字体。
- - windows10简体中文字体。
- ttf-ms-win10-zh_twAUR - windows10繁体中文字体。
- 中文可免费商用字体
- - Linux 下的免费商用字体包。
- - 杨润东竹石体:本套字体授权全社会免费商用,意味着您可以将其无限制地捆入您的商业产品中,如海报、包装、logo、网页、APP 等。
日文字
- - 思源黑体日文部分
- - 正式的日文哥特体(无衬线)与明朝体 (衬线)字形集,高质量的开源字体之一,openSUSE-ja 的默认字形。
- - 一款免费的日文汉字字体,Mincho(衬线)风格。
- ttf-sazanami - 自由的日文 TrueType 字体。已经过期无人维护,但在某些环境下可当作备用字体使用。
- - 日文哥特体字形。Debian/Fedora/Vine Linux 的默认字体
- - 现代哥特体的日文轮廓字体。包含所有日文平假名/片假名、Basic Latin、Latin-1 Supplement、Latin Extended-A、IPA Extensions。另外还有大部分日文汉字、希腊字母、西里尔字与越南文字,可以 7 磅 (等比例) 或 5 磅 (等宽) 字重显示。
- - 日文字体,可正确显示 2ch 的 Shift JIS 艺术创作。
韩文字
- - 思源黑体韩文部分
- - 韩文 TrueType 字体集合
- - Nanum 系列 TrueType 字体
- - Nanum 系列 TrueType 等宽字体
- ttf-d2codingAUR - 由 Naver 制作的 TrueType 等宽字体
- - 由 Spoqa 定制的 Source Han Sans 字体。
阿拉伯和乌尔都文字
- - 位于麦地那的 King Fahd Glorious Quran Printing Complex 制作的字体
- - 一个典型的阿拉伯文誊抄体 (Naskh) 字体,一开始由 Amiria Press 采用
- - 来自 SIL 的 Unicode 阿拉伯文字体
- - 来自 SIL 的 Unicode 阿拉伯文字体
- ttf-arabeyes-fontsAUR - 自由的阿拉伯文字体集合
- - Urdu 字体
波斯文字
- - 伊朗信息与通信技术高级理事会(SCICT)的官方标准波斯字体集
- - Borna Rayaneh 波斯 B 字体系列
- - X 系列 2 字体是建立在开源可使用的字体基础上并扩展支持波斯语,阿拉伯语,乌尔都语,普什图语,达里语,乌兹别克语,库尔德语,维吾尔语,老土耳其(奥斯曼)和现代土耳其(罗马).
- - 由伊朗信息高级理事会公布的一款 Unicode 书法字体
缅甸文字
- ttf-sil-padaukAUR - Unicode font that supports the many diverse languages that use the Myanmar script
希腊文字
几乎所有 Unicode 字体都包含希腊代码集 (也包含多调变音符号),某些额外字体包虽然未包含完整的 Unicode 集,但拥有高质量的希腊字字形 (也包含拉丁字):
- - 由 Greek Font Society 选用的 OpenType 字体
- - 来自 Magenta 的专业 TrueType 字体
希伯来文字
- - 自由的希伯来文字体集合
印地文字
- - 孟加拉文字体
- - 印地文 OpenType 字体集合 (包含 ttf-freebanglafont)
- (This one contains a "look of disapproval" that might be more to your liking than the one mentioned elsewhere in this document)
- lohit-fontsAUR - 来自 Fedora 专案的印地文 TrueType 字体 (包含 Oriya 字体以及更多)
- - 梵文TrueType字体(包含 283 种字体)
- - TTF 古吉拉特 fonts (Avantika,Gopika,Shree768)
- - TrueType Gurmukhi fonts (gurbaniwebthick,prabhki)
- - TTF Gurmukhi / Punjabi (contains 252 fonts)
- - Kannada, the language of Karnataka state in India
- ttf-tamilAUR - Tamil Unicode fonts
高棉文字
- - 涵盖高棉语 (Khmer) 文字的字体
- Hanuman ()
僧伽罗文字
- - 僧伽罗文 (Sinhala) Unicode 字体
塔米尔文字
- ttf-tamilAUR - 塔米尔文 (Tamil) Unicode 字体
藏文字
- - 藏文 (Tibetan) Machine TTFont
Microsoft 字体
参阅微软字体。
Apple OS X 字体
- ttf-mac-fontsAUR - Mac OS X TrueType 字体
等宽字体
建议:每位用户偏爱的字体不尽不同,如想找到您心目中的理想字体,还请多加尝试。 如果您没有太多时间,可以阅读 Dan Benjamin 博客的文章:十大最适合编程的字体(英文)。
这里内还有 Trevor Lowing 整理的一长串字体清单:http://www.lowing.org/fonts/ (英文)。
Slant 上的字体图片比较: 最好的编程字体是什么?(英文)
还有 Stack Overflow 上的带一些图片的回答: 推荐编程字体(英文)。
TrueType 字体
- Agave ()
- Andalé Mono ()
- Anka/Coder ()
- Anonymous Pro (, )
- Bitstream Vera Mono (ttf-bitstream-vera)
- Consolas () - Windows 下的编程用字体
- Courier New ()
- Cousine ( 或 ) - Chrome/Chromium OS 的 Courier New 替换 (metric-compatible)
- DejaVu Sans Mono () - Unicode
- Droid Sans Mono (,也包含在 )
- Envy Code R ()
- Fantasque Sans Mono ( 或 otf-fantasque-sans-mono)
- FreeMono () - Unicode
- Inconsolata () - 极佳的编程用字体
- Inconsolata-g () - 加入一些亲近编程人员的调整
- Liberation Mono (ttf-liberation) - 取代 Courier New,基于Cousine (metric-compatible)。
- Lucida Typewriter (包含于 软件包)
- Monaco () - OSX/Textmate 下知名的编程用字体
- Monofur ()
- Source Code Pro ()
点阵字体
- Default 8x16
- Dina (dina-font)
- Gohu ()
- Lime ()
- ProFont ()
- Proggy Programming Fonts ()
- Tamsyn ()
- Terminus (terminus-font)
- Unifont (glyphs like (look of disapproval)) ()
无衬线字体
- Andika (,包含于 )
- Arial ()
- Arial Black ()
- Arimo ( 或 ) - Chrome/Chromium OS 的 Arial 替换 (metric-compatible)
- Calibri ()
- Candara ()
- Constantia ()
- Corbel ()
- DejaVu Sans () - Unicode
- Droid Sans (,包含于 )
- FreeSans () - Unicode
- Impact ()
- Liberation Sans (ttf-liberation,取代 Arial, 基于 Arimo (metric-compatible)
- Linux Biolinum ()
- Lucida Sans ()
- Microsoft Sans Serif ()
- PT Sans () - 3 种主要变体:正常、变窄与标题 - Unicode:拉丁字、西里尔字
- Source Sans ()
- Tahoma (ttf-tahomaAUR)
- Trebuchet ()
- Ubuntu Font Family ()
- Verdana ()
手写体
- Comic Sans ()
衬线字体
- Cambria ()
- DejaVu Serif () - Unicode
- Droid Serif (,包含于 )
- FreeSerif () - Unicode
- Gentium (,包含于 ) - Unicode:拉丁字、希腊字、西里尔字、音标字母
- Georgia ()
- Liberation Serif (ttf-liberation) - 取代 Times New Roman,基于Tinos (metric-compatible)
- Linux Libertine () - Unicode:拉丁字、希腊字、西里尔字、希伯来字
- Times New Roman ()
- Tinos ( 或 ) - Chrome/Chromium OS 的 Times New Roman 替换 (metric-compatible)
未分类字体
- — 一个免费字体的大合集(囊括里 ubuntu、inconsolata、droid 等字体)-注意:如果安装这个包,您的系统内将添加 100 多个字体,这将会使您的字体对话框变得很长。
- — Covers full plane 1 and several scripts
- — 提供了绘文字及其它一些符号。
- — STL 内的 Gentium, Charis, Doulos, Andika and Abyssinica (AUR)
- — X.Org Luxi 字体
- — 从 dustismo.com 收集来的字体库
- — Junius 字体,几乎包括了所有中世纪的拉丁文字形
- xorg-fonts-type1 — IBM Courier 和 Adobe Utopia 的 PostScript 字体
X11中的字体选择顺序
Fontconfig 会自动选择一个满足当前显示需求的字体。如果浏览一个既有英文又有中文的窗口,而默认的字体不支持中文,它会自动用另外的字体显示中文。通过 可以调整字体的选择顺序。
如果要优先使用 Serif 字体,遇到显示不了的字再使用某个特定的中文字体,配置文件会是这样:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>serif</family>
<prefer>
<family>你喜欢的拉丁衬线字体名称</family>
<family>你的中文衬线字体名称</family>
</prefer>
</alias>
</fontconfig>
Sans-serif 和 monospace 字体也可以增加一样的设置,更多信息请参考 fontconfig 说明和 Font configuration#Replace or set default fonts。
字体别名
在 Linux 系统中有几种字体别名,它们实际代表着别的字体,这样以达到让应用程序的字体看起来类似。最常见的别名有: 代表一种衬线体(关于衬线体与非衬线体概念请参考UbuntuCN:字体#基础知识——译注)(例如 DejaVu Serif、宋体);代表一种无衬线体(例如 DejaVu Sans 和各种黑体);而 则代表等宽字体(例如 DejaVu Sans Mono)。 然而,这些别名所代表的字体有可能会变化,而且通常 KDE 和其他桌面环境中的字体管理工具不会显示其内在联系。
如果想通过别名反向查找是哪种字体被展现出来,运行:
$ fc-match monospace DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
在这种情况下 Monospace 别名展现的是 DejaVuSansMono.ttf 字体。
小提示
列出已安装字体
你可以使用以下命令来列出当前系统中所有已安装字体的字体:
$ fc-list
应用程序专用的字体高速缓冲
Matplotlib ( 或 python2-matplotlibAUR) 使用自己的字体高速缓冲,因此更新字体后记得删除 ,, 等文件。这样它才会再一次产生高速缓冲并找到新字体 。
终端中的双向字体
要在终端中正确的显示阿拉伯语和希伯来语,请运行 BiCon ()。
参见
- State of Text Rendering
- Font Library - Fonts under Free licenses
- Fonts on screenshots.debian.net