跳转到主要内容

默认在字体中开启OpenType功能:重新分配字体的Unicode到字形映射,永久“冻结”1对1的替换功能,并创建一个新的字体。

项目描述

OpenType Feature Freezer

使用 OpenType Feature Freezer,您可以将一些OpenType功能“冻结”到字体中。

这些功能将默认开启,因此以前只能通过OpenType功能访问的字符(如小写字母、老式数字或本地化形式)现在即使在不支持OpenType功能的程序中(如LibreOffice、OpenOffice)或在不支持特定功能的应用程序中(如Microsoft Office中的小写字母)也可以访问。

注意:此工具实际上通过应用指定的 GSUB 功能重新映射字体的 cmap 表。它不适用于既没有字形也没有 cmap 条目的替换。仅支持单一代替和交替替换。

本工具提供两种版本:OTFeatureFreezer:一个简单的GUI(图形界面)应用程序,适用于macOS和Windows,您可以直接下载并运行,无需任何特殊准备;以及 pyftfeatfreeze:一个命令行应用程序,需要在您的计算机上安装Python 3.6或更高版本。

当前版本:1.32

安装

为macOS安装OTFeatureFreezer GUI应用程序

下载macOS的DMG文件

  1. macOS 上,点击上方的 下载 链接。
  2. Ctrl+点击 下载的DMG文件,选择 打开,然后再次 打开
  3. OTFeatureFreezer.app 图标拖到您的 /Applications 文件夹中。
  4. 第一次运行应用程序时,Ctrl+点击 OTFeatureFreezer.app,选择 打开,然后点击 打开
  5. 之后,您只需双击图标即可运行应用程序。如果应用程序没有运行,请再次双击。
  6. 请参阅文档以获取有关如何使用GUI应用程序的信息。GUI与命令行选项相对应。

为Windows(64位)安装OTFeatureFreezer GUI应用程序

下载Windows的ZIP文件

  1. 您需要Windows的 64位 版本,7或更高版本。不支持32位Windows。
  2. 点击上方的 下载 链接。
  3. 解压缩下载的ZIP文件。
  4. 双击 setup_featfreeze.exe 图标以安装应用程序。
  5. 从您的开始菜单运行 OTFeatureFreezer
  6. 请参阅文档以获取有关如何使用GUI应用程序的信息。GUI与命令行选项相对应。

安装pyftfeatfreeze CLI应用程序

此工具要求首先安装Python 3.6或更高版本。您可以从https://pythonlang.cn或您的包管理器获取它。

推荐

我们推荐使用pipx来安装Python命令行工具。Pipx将它们整齐地存放在您的计算机上,并提供了一种简单的方法来添加、更新和删除所有平台上的Python工具,而不会在Python安装中留下混乱。

pipx install opentype-feature-freezer

其他方法

像其他Python包一样使用 pip 进行安装。

# This is best done inside a virtual environment, so you don't pollute
# your Python installation and need no special privileges to install anything.

pip install --upgrade opentype-feature-freezer

如果不起作用,请尝试

python3 -m pip install --user --upgrade opentype-feature-freezer

开发版本

pip install --upgrade git+https://github.com/twardoch/fonttools-opentype-feature-freezer

如果不起作用,请使用

python3 -m pip install --user --upgrade git+https://github.com/twardoch/fonttools-opentype-feature-freezer
  • 在安装之前,您可能需要先执行 pip install --upgrade configparser

文档

示例

假设您有一个字体 CharisSIL-R.ttf(菜单名为“Charis SIL”),该字体包含通过OpenType布局功能 c2sc(用于大写)和 smcp(用于小写)访问的真小写。假设您想要创建一个第二字体,其中默认情况下可以通过 真小写。只需运行

pyftfeatfreeze -f 'c2sc,smcp' -S -U SC -R 'Charis SIL/Charix,CharisSIL/Charix' CharisSIL-R.ttf CharixSC-R.ttf

您将得到一个新字体 CharisSIL-R.ttf(菜单名为“Charix SC”)。此字体将使用小写字母而不是大写和小写字母,在所有应用程序中可用。

由于“Charis SIL”字体根据OFL许可,并使用保留字体名称“Charis”和“SIL”,因此我已指定 -R 选项,将名称字符串 Charis SILCharisSIL 替换为 Charix。这样,修改后的字体符合OFL,我可以分发它。

以下示例重映射字体,以便在所有应用程序中默认启用 保加利亚本地化形式(菜单名称将添加后缀“BG”)

pyftfeatfreeze -f 'locl' -s 'cyrl' -l 'BGR ' -S -U BG SomeFont.ttf SomeFontBG.ttf

注意:要从多个脚本或语言系统重映射功能,请多次运行工具(将上一次运行的输出作为输入)。仅在最终运行时使用 -S 选项。

以下操作将所有内部字体名称(在 nameCFF 表格中)中的字符串 Lato 替换为 Otal,而不进行任何“功能冻结”。这可以快速更改一些内部字体名称

pyftfeatfreeze -R 'Lato/Otal' Lato-Regular.ttf Otal-Regular.ttf

命令行语法

usage: pyftfeatfreeze [-h] [-f FEATURES] [-s SCRIPT] [-l LANG] [-z] [-S]
                      [-U USESUFFIX] [-R REPLACENAMES] [-i] [-r] [-n] [-v]
                      [-V]
                      inpath [outpath]

With pyftfeatfreeze you can "freeze" some OpenType features into a font. These
features are then "on by default", even in apps that don't support OpenType
features. Internally, the tool remaps the "cmap" table of the font by applying
the specified GSUB features. Only single and alternate substitutions are
supported.

positional arguments:
  inpath                input .otf or .ttf font file
  outpath               output .otf or .ttf font file (optional)

optional arguments:
  -h, --help            show this help message and exit

options to control feature freezing:
  -f FEATURES, --features FEATURES
                        comma-separated list of OpenType feature tags, e.g.
                        'smcp,c2sc,onum'
  -s SCRIPT, --script SCRIPT
                        OpenType script tag, e.g. 'cyrl' (default: 'latn')
  -l LANG, --lang LANG  OpenType language tag, e.g. 'SRB ' (optional)
  -z, --zapnames        zap glyphnames from the font ('post' table version 3,
                        .ttf only)

options to control font renaming:
  -S, --suffix          add a suffix to the font family name (by default, the
                        suffix will be constructed from the OpenType feature
                        tags)
  -U USESUFFIX, --usesuffix USESUFFIX
                        use a custom suffix when --suffix is provided
  -R REPLACENAMES, --replacenames REPLACENAMES
                        search for strings in the font naming tables and
                        replace them, format is
                        'search1/replace1,search2/replace2,...'
  -i, --info            update font version string

reporting options:
  -r, --report          report languages, scripts and features in font
  -n, --names           output names of remapped glyphs during processing
  -v, --verbose         print additional information during processing
  -V, --version         show program's version number and exit

Examples: pyftfeatfreeze -f 'c2sc,smcp' -S -U SC OpenSans.ttf OpenSansSC.ttf
pyftfeatfreeze -R 'Lato/Otal' Lato-Regular.ttf Otal-Regular.ttf

提示:-n 选项以空格分隔的列表形式输出“冻结”的符号。如果您将其重定向到文件,则可以使用此列表作为输入给 pyftsubset,以创建仅包含“冻结”符号的小型字体。

其他

问题报告

要报告问题,请打开一个 问题。您需要一个 Github 账户。

软件许可和免责声明

此工具根据 Apache 许可证 2.0“现状”许可。使用此工具即表示您接受许可证的所有条件,包括保修放弃和责任限制。如果您使用此工具,请咨询您的字体 EULA 是否允许修改。如果字体根据 OFL 许可且使用保留字体名称,请使用 -R 选项将保留字体名称更改为其他名称。

要求

此工具是为 Python 3.6+ 编写的,并使用 fontTools/TTX

变更日志

  • 1.32:更改了 -s(脚本)选项,使其在没有提供时,对所有脚本进行映射。
  • 1.31:更改了 -S(后缀)选项,使其在没有提供时,不添加后缀,并添加了 GUI 应用程序。
  • 此前,此工具作为子工具发布在 fonttools-utils 存储库中
  • 现在 fonttools-utils 存储库中的其他工具位于 fonttools-ttxjsonmac-os-x-system-font-replacer

构建

Python

要构建 Python 包,请安装 Poetry

pip install poetry

python3 -m install --user --upgrade poetry

然后在项目的根目录中运行

poetry build

DMG & EXE

要构建 DMG & EXE,您需要 macOS。在 app 子目录中,运行 ./macdeploy all

致谢

<script async defer src="https://buttons.github.io/buttons.js"></script>

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码发行版

opentype-feature-freezer-1.32.2.tar.gz (16.9 kB 查看哈希值)

上传时间 源代码

构建版本

opentype_feature_freezer-1.32.2-py3-none-any.whl (14.5 kB 查看哈希值)

上传时间 Python 3

由以下支持