如何安装用于 rinohtype/sphinx 的系统 (Windows 10) 字体?

How to Install system (Windows 10) fonts for use with rinohtype/sphinx?

首先,我是 Python/Sphinx/rinohtype 的初学者。

我正在尝试了解如何安装用于 rinohtype/Sphinx 的字体,rinohtype 安装了一些字体,但我希望使用安装在 Windows 10 系统上的字体,例如Arial,我浏览了 rinohtype 文档以寻求指导,但一直无法弄清楚。

编辑:输出如下:

rinohtype 0.5.3 (2021-06-16)  Copyright (c) Brecht Machiels and contributors
This program comes with ABSOLUTELY NO WARRANTY. Its use is subject
to the terms of the GNU Affero General Public License version 3.
rendering...
References cache read from C:\Users\marjohloo\Documents\Sphinx\Test\_build\rinoh\lxr.rtc
Typeface 'Arial' is not installed; searching Google Fonts.
-> not found: please check the typeface name (case-sensitive!)

Exception occurred:
  File "c:\users\marjohloo\appdata\local\programs\python\python39\lib\site-packages\rinoh\resource.py", line 42, in parse_string
    raise ResourceNotFound(cls, resource_name, entry_point_name)
rinoh.resource.ResourceNotFound: (<class 'rinoh.font.Typeface'>, 'ARIAL', 'arial')

rinohtype 尚不支持使用系统字体 (issue #75)。不幸的是,字体支持都没有被正确记录(但这是一个开始)。您的字体选项当前为:

  1. 为 rinohtype 和 published on PyPI 打包的免费字体(rinoh-typeface-* 包)
  2. Google Fonts 上提供的 1000 多种字体中的任何一种。如果未安装您的样式 sheet 中指定的字体,rinohtype 将在 Google 字体上搜索字体,下载并安装。请注意,您的样式 sheet 中的字体名称需要与 Google 字体上的字体名称完全匹配(区分大小写)。
  3. 创建您自己的 Python 程序包以使字体可用于 rinohtype。下面包含示例。
  4. (我正在努力使 Microsoft Core Fonts for the Web 在 PyPI 上作为软件包可用,但由于许可限制,这涉及跳过一些障碍。我会在实现时更新此答案。)

您可以使用 rinoh:

列出已安装的字体
rinoh --list-fonts

具体来说,对于 Arial,您可以考虑使用 TeX Gyre Heros font instead. The TeX Gyre 字体集提供了许多其他流行字体的免费替代品,包括 Times、Helvetica (Arial)、Courier 和 Palatino。

如果您想要真实的东西,您可以为 Arial 创建自己的字体包。您可以使用 rinoh-typeface-carlito 作为模板。

如果您使用的是 Sphinx,则无需创建和安装 Python 程序包。您可以创建此 fonts.py 文件并将其导入您的 Sphinx conf.py(在 sys.path.insert(0, os.path.abspath('.')) 之后):

from pathlib import Path

from rinoh import register_typeface
from rinoh.font import Typeface
from rinoh.font.opentype import OpenTypeFont


FONTS_DIR = Path(r'C:\Windows\Fonts')


def otf(filename, **kwargs):
    return OpenTypeFont(str(FONTS_DIR / filename), **kwargs)


arial = Typeface('Arial',
                 otf('arial.ttf'),
                 otf('arialbd.ttf'),
                 otf('ariali.ttf'),
                 otf('arialbi.ttf'),
        )
register_typeface('arial', arial)

我敢肯定,对于不熟悉 Python 的人来说,这并不简单。如果您需要更多信息,请告诉我。然而,随着 rinohtype 的成熟,这种情况应该会有所改善。