字体

来自 ArchWiki
(重定向自添加字体

来自 Wikipedia:计算机字体

计算机字体以数字数据文件的形式实现,其中包含一组图形相关的字形。计算机字体是使用字体编辑器设计和创建的。专门为计算机屏幕设计而不是为打印设计的计算机字体是屏幕字体。

请注意,某些字体许可证可能会施加一些法律限制。

字体格式

今天使用的大多数计算机字体都是位图轮廓数据格式。

位图字体
由点或像素矩阵组成,表示每个字形在每个字面和大小中的图像。
轮廓或矢量字体
使用贝塞尔曲线、绘图指令和数学公式来描述每个字形,这使得字符轮廓可以缩放到任何大小。

位图格式

这些格式也可以进行 gzip 压缩。有关可用的位图字体,请参阅#位图

轮廓格式

  • PostScript 字体,由 Adobe 提供 – 具有各种格式,例如:打印机字体 ASCII (PFA) 和打印机字体二进制 (PFB)
  • TrueType,由 Apple 和 Microsoft 提供(文件扩展名:ttf
  • OpenType,由 Microsoft 提供,基于 TrueType 构建(文件扩展名:otfttf

对于大多数用途,可以忽略 TrueType 和 OpenType 之间的技术差异。

其他格式

字体编辑应用程序 FontForge (fontforge) 可以将其原生基于文本的格式(Spline Font Database (.sfd))存储字体。

排版应用程序 TeX Live 及其配套字体软件 Metafont 传统上使用其自身的方法渲染字符。这两个程序用于字体的某些文件扩展名是 *pk*gfmfvf。现代版本也可以使用 TrueType 和 OpenType 字体。

SVG 格式也有其自身的字体描述方法。

安装

有多种安装字体的方法。

Pacman

可以使用 pacman 安装启用存储库中的字体和字体集合。

可以通过查询软件包(例如,fontttf)来查找可用的字体。

创建软件包

您应该使 pacman 能够管理您的字体,这可以通过创建 Arch 软件包来完成。这些软件包也可以在 AUR 中与社区共享。安装字体的软件包特别相似;请参阅字体打包指南

可以使用 fc-query 获取字体文件的字体族名称,例如:fc-query -f '%{family[0]}\n' /path/to/file。格式在 FcPatternFormat(3) 中描述。

手动安装

将系统存储库中没有的字体添加到系统中的推荐方法在#创建软件包中描述。这使 pacman 能够在以后删除或更新它们。

或者,可以手动安装字体

  • 对于单个用户,将字体安装到 ~/.local/share/fonts/
    • 在许多情况下,这已足够,除非您以其他用户身份运行图形应用程序。
    • 过去使用过 ~/.fonts/,但现在已弃用。
  • 对于系统范围(所有用户)的安装,请将您的字体放在 /usr/local/share/fonts/ 下。
    • 您可能需要先创建该目录:mkdir -p /usr/local/share/fonts
    • /usr/share/fonts/ 在软件包管理器的管辖范围内,不应手动修改。

子目录结构的创建取决于用户,并且在 Linux 发行版之间有所不同。为了清晰起见,最好将每种字体都放在其自己的目录中。Fontconfig 将递归搜索其默认路径,确保嵌套文件被拾取。

一个示例结构可能是

/usr/local/share/fonts/
├── otf
│   └── SourceCodeVariable
│       ├── SourceCodeVariable-Italic.otf
│       └── SourceCodeVariable-Roman.otf
└── ttf
    ├── AnonymousPro
    │   ├── Anonymous-Pro-B.ttf
    │   ├── Anonymous-Pro-I.ttf
    │   └── Anonymous-Pro.ttf
    └── CascadiaCode
        ├── CascadiaCode-Bold.ttf
        ├── CascadiaCode-Light.ttf
        └── CascadiaCode-Regular.ttf

字体文件需要对所有用户具有足够的读取权限,即文件至少 chmod 444,目录至少 555

为了使 Xserver 直接加载字体(而不是使用字体服务器),必须使用 FontPath 条目添加新添加字体的目录。此条目位于您的 Xorg 配置文件(例如 /etc/X11/xorg.conf/etc/xorg.conf)的 Files 部分中。有关更多详细信息,请参阅#旧应用程序

最后,更新 Fontconfig 缓存(通常是不必要的,因为使用 Fontconfig 库的软件会执行此操作)

$ fc-cache

旧应用程序

对于不支持 Fontconfig 的旧应用程序(例如 GTK 1.x 应用程序和 xfontsel),需要在字体目录中创建索引

$ mkfontscale
$ mkfontdir

或者使用一个命令包含多个文件夹

$ for dir in /font/dir1/ /font/dir2/; do xset +fp $dir; done && xset fp rehash

或者,如果字体安装在例如 /usr/share/fonts 下的不同子文件夹中

$ for dir in * ; do if [  -d  "$dir"  ]; then cd "$dir";xset +fp "$PWD" ;mkfontscale; mkfontdir;cd .. ;fi; done && xset fp rehash

有时,X 服务器可能无法加载字体目录,您需要重新扫描所有 fonts.dir 文件

# xset +fp /usr/share/fonts/misc # Inform the X server of new directories
# xset fp rehash                # Forces a new rescan

要检查字体是否包含在内

$ xlsfonts | grep fontname
注意: 许多软件包会在安装时自动配置 Xorg 以使用该字体。如果您的字体是这种情况,则此步骤不是必需的。

也可以在 /etc/X11/xorg.conf/etc/X11/xorg.conf.d 中全局设置此项。

以下是必须添加到 /etc/X11/xorg.conf 的部分的示例。根据您的特定字体要求添加或删除路径。

# Let X.Org know about the custom font directories
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/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 身份运行以在系统范围内启用它们。

# fc-cache
/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 以及官方存储库中的许多字体软件包。

提示: Archfonts 是一个 Python 脚本,可用于生成官方存储库和 AUR 中找到的所有 TTF 字体的概述。

位图

注意: pango 1.44 放弃了对 FreeType 的支持,转而支持 HarfBuzz,因此 失去了对传统 BDF/PCF 位图字体的支持,因此某些应用程序(例如 gnome-terminal)将不再使用此类字体,而是显示矩形而不是字形。请参阅 FS#63297Pango 问题 #386HarfBuzz 问题 #1897

适用于 Pango 1.44 及更高版本

拉丁文字

字体族

软件包提供基本字体集

未提供基本字体集的软件包

旧版 Microsoft 字体软件包

  • Microsoft 字体 (ttf-ms-fontsAUR) – Andalé Mono、Courier New、Arial、Arial Black、Comic Sans、Impact、Lucida Sans、Microsoft Sans Serif、Trebuchet、Verdana、Georgia、Times New Roman
  • Vista 字体 (ttf-vista-fontsAUR) – Consolas、Calibri、Candara、Corbel、Cambria、Constantia

等宽字体

支持“编程连字”的字体(例如,将“->”序列显示为双倍宽度的“⟶”字形)在下面用 ⟶ 符号标识。有关更多等宽字体,另请参阅#位图#字体族

相关网站

无衬线字体

衬线字体

手写体

  • ttf-nothingyoucoulddoAUR – 摄影师的手写体
  • ttf-indieflowerAUR – 带有气泡和圆形边缘的手写无衬线字体
  • ttf-pacificoAUR – 画笔脚本手写字体,灵感来自 1950 年代的美国冲浪文化,并扩展到西里尔文
  • otf-londrinaAUR – 从巴西圣保罗街头汲取灵感的手写字体
  • otf-teslaAUR – 基于尼古拉·特斯拉 (Nikola Tesla) 手写重建的脚本字体
  • ttf-architects-daughterAUR – 字体融合了建筑书写的图形化方形外观和日常手写的自然感觉

未分类

本文或本节需要改进语言、wiki 语法或风格。请参阅 Help:Style 以供参考。

原因: 本节应并入等宽/衬线/无衬线结构中(在Talk:Fonts 中讨论)

非拉丁文字

古代文字

  • ttf-ancient-fontsAUR – 包含爱琴海、埃及、楔形文字、安纳托利亚、玛雅和 Analecta 文字的 Unicode 符号的字体

阿拉伯文

请参阅 Localization/Arabic#Fonts

孟加拉文

阅读 Localization/Bengali#Fonts 了解详情。

盲文

  • ttf-ubrailleAUR – 包含 盲文 的 Unicode 符号的字体

中文、日文、韩文、越南文

泛 CJK

思源黑体和 Noto CJK 字体具有 相同的字形和度量,但由于该项目由 Adobe 和 Google 共同委托,因此品牌不同。

这两个字体集合全面支持简体中文、繁体中文、日文和韩文,具有一致的设计和外观。Noto Sans CJK 字体缺少本地化的菜单名称,这不是必需的,但可能会使字体对于母语是字体目标语言的客户更友好。

中文

请参阅 Localization/Chinese#Fonts

日文

请参阅 Localization/Japanese#Fonts

韩文

请参阅 Localization/Korean#Fonts

越南文
  • ttf-hannom – 用于 chữ Nôm 字符的越南文 TrueType 字体

西里尔文

另请参阅 #拉丁文字

  • ttf-paratypeAUR – ParaType 字体家族:无衬线、衬线、等宽、扩展西里尔文和拉丁文,OFL 许可证
  • otf-russkopisAUR – 一款免费的用于西里尔文字的 OpenType 草书字体

希腊文

几乎所有 Unicode 字体都包含希腊字符集(包括多音希腊文)。一些额外的字体包可能不包含完整的 Unicode 集,但利用了高质量的希腊文(当然还有拉丁文)字体,它们是

  • otf-gfsAUR – 来自希腊字体协会的 OpenType 字体精选
  • ttf-mgopenAUR – 来自 Magenta 的专业 TrueType 字体
  • ttf-sbl-greekAUR – SBL Greek,由圣经文学协会 (SBL) 创建
  • ttf-sbl-biblitAUR – SBL BibLit,包括来自 SBL Greek 和 SBL Hebrew 的字符

希伯来文

  • opensiddur-hebrew-fontsAUR – 大量的开源许可希伯来文字体集合。还有一些拉丁文、希腊文、西里尔文、阿拉伯文和阿姆哈拉文。
  • culmusAUR – 漂亮的免费希伯来文字体集合
  • alefbetAUR – 4 种希伯来文字体(目前):常用的 “David Libre”、手写字体 “Gveret Levin”、“Varela Round” 和 “open-sans”
  • ttf-ms-fontsAUR – 包含 Arial 和其他字体
  • ttf-sbl-hebrewAUR – SBL Hebrew,由圣经文学协会 (SBL) 创建
  • ttf-sbl-biblitAUR – SBL BibLit,包括来自 SBL Hebrew 和 SBL Greek 的字符
等宽字体

印度文字

请参阅 Localization/Indic#Fonts

高棉文

蒙古文和通古斯文

  • ttf-abkaiAUR – 用于锡伯文、满文和达斡尔文的字体(不完整,目前正在开发中)

波斯文

阿拉伯文字体,如 ttf-scheherazade-new 也涵盖波斯文字母。阿拉伯文字体列表可以在 Localization/Arabic#Fonts 中查看。

侗台语系

  • fonts-tlwgAUR – 可缩放的泰文字体集合
  • ttf-google-thaiAUR – 来自 Google 的高质量泰文字体和泰国国家字体的新 改进
  • ttf-laoAUR – 老挝文 TTF 字体 (Phetsarath_OT)

藏缅语族

表情符号和符号

Unicode 标准的一部分被指定用于称为 “表情符号” 的象形字符。

表情符号 字体有不同的格式:CBDT/CBLC (Google)、SBIX (Apple)、COLR/CPAL (Microsoft)、SVG (Mozilla/Adobe)。

一旦您安装了至少一个受支持格式的表情符号字体,表情符号应该可以开箱即用。但是,一些表情符号字体将其字形编码为大型固定大小的位图,因此,为了以预期大小显示,依赖于 位图字体缩小,默认情况下启用。

根据 标准,表情符号字体回退需要 额外的代码来处理表情符号

有关表情符号的发现和输入,请参阅 List of applications/Utilities#文本输入

软件 CBDT/CBLC SBIX COLR/CPAL SVG 表情符号字体回退
FreeType
Chromium FreeType
Firefox FreeType ,有关解决方法,请参阅 Firefox#字体故障排除
Pango FreeType
Qt FreeType [1] [2] [3]
WebKitGTK FreeType
注意: Qt 一次只能使用前 255 种字体 [4]。请确保您的 首选回退字体列表中有一个表情符号字体。

颜文字 有时被称为“日式表情符号”,由来自各种字符集的字符组成,包括 CJK 和印度语字体。 以下软件包涵盖了大多数现有的颜文字

Teranoptia (ttf-teranoptia-furiaeAUR) – 是一种没有字母的字体(一种说明性字体),一种奇特的装置,允许您仅通过键盘输入字母来想象嵌合生物。

数学

此外,texlive-basictexlive-fontsextra 包含许多数学字体,例如 Latin Modern Math 和 STIX 字体。 请参阅 TeX Live#使字体可用于 Fontconfig 以进行配置。

其他操作系统字体

字体别名

本文或章节可能需要与 Fontconfig 合并。

注意: 本节特定于 Fontconfig。(在 Talk:Fonts 中讨论)

有几个字体别名代表其他字体,以便应用程序可以使用类似的字体。 最常见的别名是:serif 代表衬线字体(例如 DejaVu Serif); sans-serif 代表无衬线字体(例如 DejaVu Sans); 以及 monospace 代表等宽字体(例如 DejaVu Sans Mono)。 但是,这些别名代表的字体可能有所不同,并且这种关系通常不会在字体管理工具中显示,例如在 KDE Plasma 和其他 桌面环境 中找到的那些工具。

要反向查找别名并找到它代表的字体,请运行

$ fc-match monospace
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"

在这种情况下,DejaVuSansMono.ttfmonospace 别名代表的字体。

后备字体顺序

本文或章节可能需要与 Fontconfig 合并。

注意: 本节包含仅与 Fontconfig 相关的信息。(在 Talk:Fonts 中讨论)

Fontconfig 自动选择符合当前需求的字体。 也就是说,例如,如果一个人正在查看包含英语和中文的窗口,如果默认字体不支持中文文本,它将切换到另一个字体来显示中文文本。

Fontconfig 允许每个用户通过 $XDG_CONFIG_HOME/fontconfig/fonts.conf 配置他们想要的顺序。 如果您希望在您最喜欢的衬线字体之后选择特定的中文字体,您的文件将如下所示

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
   <family>serif</family>
   <prefer>
     <family>Your favorite Latin Serif font name</family>
     <family>Your Chinese font name</family>
   </prefer>
 </alias>
</fontconfig>
提示
  • 如果您使用中文区域设置,请将 LC_LANG 设置为 und 以使其工作。 否则,英语和中文文本都将以中文字体呈现。
  • 如果您想查看针对模糊模式(即可能不完全匹配的模式)的字体列表,例如通用字体族名称,您可以使用 fc-match --sortfc-match --all
  • 如果字体的 Unicode 覆盖范围已由已显示的字体提供,则 fc-match --sort 不会显示该字体,请参阅 fc-match(1)FcFontSort(3)
  • 更改配置后,运行 fc-match --all serif | head 以验证您的后备字体是否设置正确。

您也可以为 sans-serifmonospace 添加一个部分。

有关更多信息,请查看 Fontconfig 手册。 另请参阅 字体配置#设置默认或后备字体

技巧和窍门

列出特定语言的已安装字体

本文或章节可能需要与 Fontconfig 合并。

注意: 本节特定于 Fontconfig。(在 Talk:Fonts 中讨论)

应用程序根据 Fontconfig 偏好设置和 Unicode 文本的可用字体字形来选择和显示字体。 要列出特定语言的已安装字体,请发出命令 fc-list :lang="two letter language code"。 例如,要列出已安装的阿拉伯字体或支持阿拉伯语字形的字体

$ fc-list -f '%{file}\n' :lang=ar
/usr/share/fonts/TTF/FreeMono.ttf
/usr/share/fonts/TTF/DejaVuSansCondensed.ttf
/usr/share/fonts/truetype/custom/DroidKufi-Bold.ttf
/usr/share/fonts/TTF/DejaVuSansMono.ttf
/usr/share/fonts/TTF/FreeSerif.ttf

列出特定 Unicode 字符的已安装字体

本文或章节可能需要与 Fontconfig 合并。

注意: 本节特定于 Fontconfig。(在 Talk:Fonts 中讨论)

要列出所有支持特定 Unicode 代码点的字体——在本例中为 黑色向上等边三角形箭头 (⮝)

$ fc-list :charset=2B9D

fc-list 不会规范化请求,它将列出完全匹配的字体。 它不适用于通用字体族名称(如 monospace)和其他模糊模式。 要搜索支持特定 Unicode 代码点的等宽字体,您可以尝试以下操作

$ fc-match --sort monospace:charset=2B9D | head

但您必须自行解释结果。 fc-match 本质上不保证输出列表中的字体是等宽的,也不保证它们包含所讨论的代码点。

应用程序特定的字体缓存

Matplotlib (python-matplotlib) 使用自己的字体缓存,因此在更新字体后,请务必删除 ~/.matplotlib/fontList.cache~/.cache/matplotlib/fontList.cache~/.sage/matplotlib-1.2.1/fontList.cache 等,以便它将重新生成其缓存并找到新字体 [5]

双向文本支持

有关与 RTL 语言相关的问题的故障排除,请参阅 双向文本

盲文字体在终端内显示不正确

如果终端中的盲文字符出现 渲染问题,请尝试安装盲文字体并卸载 gnu-free-fonts

应用程序特定的字体配置技巧

Emacs

Emacs 计算尺寸的方式与标准 Linux 桌面应用程序不同,并且 Emacs 包并非都使用相同的配置格式,因此如果点或原始像素大小不起作用,请尝试使用另一个值。

Visual Studio Code

如果您的等宽字体在正确缩放某些字符时遇到问题,请将设置Editor: Experimental Whitespace Rendering从“svg”更改为“font”。 已知这有助于解决“Terminus (TTF)”和“IBM 3270”字体的问题。

另请参阅