跳转至内容

字体

来自 ArchWiki

来自 维基百科:计算机字体

计算机字体是一种数字数据文件,其中包含一组图形相关的 字形。计算机字体使用字体编辑器进行设计和创建。专为计算机屏幕设计而非用于打印的计算机字体称为屏幕字体。

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

字体格式

当今大多数计算机字体都采用“位图”或“轮廓”数据格式。

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

位图格式

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

轮廓格式

  • Adobe 的 PostScript 字体 – 有多种格式,例如:Printer Font ASCII (PFA) 和 Printer Font Binary (PFB)
  • Apple 和 Microsoft 的 TrueType(文件扩展名:ttf
  • Microsoft 的 OpenType,基于 TrueType(文件扩展名:otfttf

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

其他格式

字体编辑应用程序 FontForgefontforge)可以将字体存储在其本机文本格式—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

为了让 X服务器直接加载字体(而不是使用字体服务器),必须使用 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 及更高版本

拉丁字母

字体家族

提供基本字体集的软件包

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

旧版 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 – 基于尼古拉·特斯拉手写体重建的脚本字体
  • ttf-architects-daughterAUR – 结合了建筑书写的图形化、方形外观和日常手写的自然感觉的字体

未分类

本文或本节需要在语言、wiki 语法或风格方面进行改进。请参阅 Help:Style 获取参考。

原因:此部分应合并到 Monospace/Serif/Sans-Serif 结构中(请在 Talk:Fonts 讨论)

非拉丁文字符

古代文字

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

阿拉伯语

参见 Localization/Arabic#Fonts

孟加拉语

有关详情,请阅读 Localization/Bengali#Fonts

盲文

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

泛 CJK

Adobe Source Han 字体和 Noto CJK 字体具有相同的字形和度量,但品牌不同,因为该项目由 Adobe 和 Google 共同委托。

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

中文

参见 Localization/Chinese#Fonts

日语

参见 Localization/Japanese#Fonts

韩语 (Korean)

参见 Localization/Korean#Fonts

越南语
  • ttf-hannom – 越南语 TrueType 字体,支持 chữ Nôm 字符

西里尔文

另见 #Latin script

  • ttf-paratypeAUR – ParaType 的字体系列:无衬线、衬线、等宽、扩展西里尔文和拉丁文,OFL 许可
  • otf-russkopisAUR – 一种用于西里尔文字符的免费 OpenType 手写体

希腊语

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

  • otf-gfsAUR – 希腊字体学会的 OpenType 字体选集
  • ttf-mgopenAUR – Magenta 的专业 TrueType 字体
  • ttf-sbl-biblitAUR – SBL BibLit,包含 SBL 希腊语和 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 希伯来语和 SBL 希腊语的字符
等宽字体

印度语言

参见 Localization/Indic#Fonts

高棉语

蒙古语和通古斯语

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

波斯语

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

泰-卡岱语

  • fonts-tlwgAUR – 可伸缩的泰语字体集合
  • ttf-google-thaiAUR – 来自 Google 的高质量泰语字体,以及对泰国国家字体进行的改进
  • ttf-laoAUR – 老挝语 TTF 字体(Phetsarath_OT)

藏缅语

表情符号和符号

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

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

一旦您安装了至少一种支持格式的表情符号字体,表情符号应该就可以直接使用。然而,一些表情符号字体将它们的字形编码为大型固定大小的位图,因此,为了在预期大小显示,它们依赖于位图字体缩小,该功能默认启用。

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

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

软件 CBDT/CBLC SBIX COLR/CPAL SVG 表情符号字体回退
FreeType
Chromium FreeType
Firefox FreeType ,请参阅 Firefox#Font troubleshooting 以获取解决方法。
Pango FreeType
Qt FreeType [1] [2] [3]
WebKitGTK FreeType
注意 Qt 一次只能使用前 255 种字体 [4]。请确保您的首选回退字体列表中包含表情符号字体。

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

Teranoptia (ttf-teranoptia-furiaeAUR) – 一种没有字母的字体(插图字体),一种奇特的装置,可以通过在键盘上输入字母来想象各种奇特生物。

数学

此外,texlive-basictexlive-fontsextra 包含许多数学字体,如 Latin Modern Math 和 STIX 字体。有关配置,请参阅 TeX Live#Making fonts available to 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.ttf 是由 monospace 别名代表的字体。

回退字体顺序

此文章或节候选合并至 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>
提示
  • 如果您使用中文区域设置,请将 FC_LANG 设置为 unden-US:zh-CN 以便正常工作。否则,英文和中文文本都将以中文字体呈现。
  • 如果您想查看与模糊模式(即可能不完全匹配)的字体列表,例如通用字体系列名称,您可以使用 fc-match --sortfc-match --all
  • fc-match --sort 不会显示其 Unicode 覆盖范围由已显示字体提供的字体,请参阅 fc-match(1)FcFontSort(3)
  • 更改配置后,运行 fc-match --all serif | head 来验证您的回退字体是否设置正确。

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

有关更多信息,请查阅 Fontconfig 手册。另请参阅 Font configuration#Set default or fallback fonts

技巧与提示

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

此文章或节候选合并至 Fontconfig

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

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

$ 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 语言问题的疑难解答,请参阅 Bidirectional text

盲文字体在终端中无法正确显示

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

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

Emacs

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

Visual Studio Code

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

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.