您是否想使用衬线斜体来代替默认的斜体?
现在,可以通过 OpenType Feature Freezer 使用 OpenType 特性来定制 PragmataPro 及其他字体。
一个非常有用的工具,也提供命令行版本,由 Adam Twardoch 等人设计,通过重新映射字体的 Unicode 分配来冻结 OpenType 特性。
完整的命令行语法:
usage: pyftfeatfreeze [-h] [-f FEATURES] [-s SCRIPT] [-l LANG] [-z] [-S]
[-U USESUFFIX] [-R REPLACENAMES] [-i] [-r] [-n] [-v]
[-V]
inpath [outpath]
使用 pyftfeatfreeze,您可以将一些 OpenType 特性“冻结”到字体中。即使在不支持 OpenType 特性的应用程序中,这些特性也会“默认开启”。在内部,该工具通过应用指定的 GSUB 特性来重新映射字体的“cmap”表。仅支持单次替换和交替替换。
位置参数:
inpath 输入的 .otf 或 .ttf 字体文件
outpath 输出的 .otf 或 .ttf 字体文件(可选)
可选参数:
-h, --help 显示此帮助信息并退出
控制特性冻结的选项:
-f FEATURES, --features FEATURES
逗号分隔的 OpenType 特性标签列表,例如 'smcp,c2sc,onum'
-s SCRIPT, --script SCRIPT
OpenType 脚本标签,例如 'cyrl'(默认:'latn')
-l LANG, --lang LANG OpenType 语言标签,例如 'SRB '(可选)
-z, --zapnames 从字体中清除字形名称('post' 表第 3 版,仅限 .ttf)
控制字体重命名的选项:
-S, --suffix 为字体家族名称添加后缀(默认情况下,后缀将由 OpenType 特性标签构成)
-U USESUFFIX, --usesuffix USESUFFIX
当提供 --suffix 时,使用自定义后缀
-R REPLACENAMES, --replacenames REPLACENAMES
在字体命名表中搜索字符串并替换它们,格式为 'search1/replace1,search2/replace2,...'
-i, --info 更新字体版本字符串
报告选项:
-r, --report 报告字体中的语言、脚本和特性
-n, --names 在处理过程中输出重新映射的字形名称
-v, --verbose 在处理过程中打印附加信息
-V, --version 显示程序的版本号并退出
一些代码片段:
PragmataPro Mono Liga Script(斜体 → 手写体)
pyftfeatfreeze -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Script' PragmataPro_Mono_R_liga_0830.ttf PragmataPro_Mono_R_liga_0830_Script.ttf && pyftfeatfreeze -f 'ss06' -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Script' PragmataPro_Mono_I_liga_0830.ttf PragmataPro_Mono_I_liga_0830_Script.ttf && pyftfeatfreeze -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Script' PragmataPro_Mono_B_liga_0830.ttf PragmataPro_Mono_B_liga_0830_Script.ttf && pyftfeatfreeze -f 'ss07' -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Script' PragmataPro_Mono_Z_liga_0830.ttf PragmataPro_Mono_Z_liga_0830_Script.ttf
PragmataPro Mono Liga Serif(斜体和粗体 → 衬线体)
pyftfeatfreeze -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Serif' PragmataPro_Mono_R_liga_0830.ttf PragmataPro_Mono_R_liga_0830_Serif.ttf && pyftfeatfreeze -f 'ss09' -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Serif' PragmataPro_Mono_I_liga_0830.ttf PragmataPro_Mono_I_liga_0830_Serif.ttf && pyftfeatfreeze -f 'ss08' -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Serif' PragmataPro_Mono_B_liga_0830.ttf PragmataPro_Mono_B_liga_0830_Serif.ttf && pyftfeatfreeze -f 'ss10' -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Serif' PragmataPro_Mono_Z_liga_0830.ttf PragmataPro_Mono_Z_liga_0830_Serif.ttf
PragmataPro Mono Liga Fraktur(斜体 → 德文黑体)
pyftfeatfreeze -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Fraktur' PragmataPro_Mono_R_liga_0830.ttf PragmataPro_Mono_R_liga_0830_Fraktur.ttf && pyftfeatfreeze -f 'ss03' -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Fraktur' PragmataPro_Mono_I_liga_0830.ttf PragmataPro_Mono_I_liga_0830_Fraktur.ttf && pyftfeatfreeze -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Fraktur' PragmataPro_Mono_B_liga_0830.ttf PragmataPro_Mono_B_liga_0830_Fraktur.ttf && pyftfeatfreeze -f 'ss04' -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Fraktur' PragmataPro_Mono_Z_liga_0830.ttf PragmataPro_Mono_Z_liga_0830_Fraktur.ttf
一个更轻量的 MacOS 脚本,由 Benas Svipas 提供,供希望使用它代替 OpenType Feature Freezer GUI 的用户使用:
#!/usr/bin/env bash # 安装 - python 和 pipx brew install python pipx &> /dev/null pipx ensurepath &> /dev/null # 下载 - OpenType Feature Freezer (https://github.com/twardoch/fonttools-opentype-feature-freezer) pipx install opentype-feature-freezer &> /dev/null # 构建 - 斜体样式变体 pyftfeatfreeze -f 'ss09' PragmataProI_liga_0830.ttf PragmataProI_liga_0830_script.ttf pyftfeatfreeze -f 'ss09' PragmataPro_Mono_I_liga_0830.ttf PragmataPro_Mono_I_liga_0830_script.ttf echo "斜体样式变体已构建" # 构建 - 粗斜体样式变体 pyftfeatfreeze -f 'ss10' PragmataProZ_liga_0830.ttf PragmataProZ_liga_0830_script.ttf pyftfeatfreeze -f 'ss10' PragmataPro_Mono_Z_liga_0830.ttf PragmataPro_Mono_Z_liga_0830_script.ttf echo "粗斜体样式变体已构建"
完成后,您将找到以 _script.ttf 结尾的新 .ttf 文件。安装它们即可。请记住关闭并重新启动您的 IDE 或终端,以便它能够识别新的字体文件。
当前的 PragmataPro OpenType 特性列表:
为了更好地理解 OT 特性在 PragmataPro 上的工作原理,我建议查阅 PragmataPro 手册。
Leave a comment


