这是一个用于自定义 Input 字体的 Python 工具。通过这个工具,你可以自定义 Input 字体的多个特性,包括行高、字符样式等。
本工具中的 inputCustomize.py 脚本改编自 Input 字体官方网站 提供的压缩包中的原始脚本。原始脚本仅支持 Python 2,我们对其进行了以下改进:
- 升级支持 Python 3
- 增加了多个预设字体样式的配置
- 优化了代码结构和注释
- 添加了更多使用示例
- Python 3.x
- fonttools 库(TTX)
- 克隆此仓库:
git clone [repository-url]- 安装依赖:
pip install -r requirements.txt基本用法:
python Scripts/inputCustomize.py [INPUT] [--dest=OUTPUT] [OPTIONS]- 如果不指定 INPUT,工具会处理当前目录下的所有字体文件
- 如果不指定 OUTPUT,工具会覆盖原始文件
--help,-h: 显示帮助信息--dest=<路径>: 指定输出目录--lineHeight=<数值>: 设置字体行高的倍数--suffix=<字符串>: 为字体名称添加后缀(不能包含空格)--preset=<style>: 使用预定义的字体样式,可用值:andale: Andale Mono 风格anonymous: Anonymous Pro 风格consolas: Consolas 风格dejavu: Deja Vu / Menlo 风格envy: Envy Code R 风格fira: Fira Mono 风格liberation: Liberation Mono 风格monaco: Monaco 风格pragmata: Pragmata Pro 风格sourcecode: Source Code Pro 风格
--a=ss: 将默认的双层 'a' 替换为单层 'a'--g=ss: 将默认的双层 'g' 替换为单层 'g'--i=serif: 修改 'i' 的样式,可选值:serifs: 衬线样式serifs_round: 圆形衬线样式topserif: 顶部衬线样式
--l=serif: 修改 'l' 的样式,可选值:serifs: 衬线样式serifs_round: 圆形衬线样式topserif: 顶部衬线样式
--zero=slash: 修改数字 '0' 的样式:slash: 使用斜线零nodot: 使用无点零
--asterisk=height: 将上标星号替换为中高度星号--braces=straight: 使用直线型大括号替换默认的曲线型大括号
--fourStyleFamily: 将四个输入的字体文件组织为一个字体族(需要按顺序提供四个字体文件)
- 基本样式修改:
python Scripts/inputCustomize.py Input-Regular.ttf --lineHeight=1.5 --a=ss --g=ss --zero=slash- 使用预设样式:
python Scripts/inputCustomize.py Input-Regular.ttf --preset=consolas --suffix=Custom- 使用预设样式创建完整字体族:
python Scripts/inputCustomize.py \
Input-Regular.ttf \
Input-Italic.ttf \
Input-Bold.ttf \
Input-BoldItalic.ttf \
--preset=monaco \
--suffix=Monaco \
--fourStyleFamily- 预设样式基础上添加自定义修改:
python Scripts/inputCustomize.py Input-Regular.ttf \
--preset=consolas \
--lineHeight=1.2 \
--a=ss \
--suffix=Custom- 处理当前目录下所有字体:
cd /path/to/fonts
python /path/to/inputCustomize.py --preset=fira --suffix=Custom- 此工具专门设计用于 Input 字体系列,不适用于其他字体
- 使用
--fourStyleFamily选项时,需要按照以下顺序提供字体文件:- Regular(常规)
- Italic(斜体)
- Bold(粗体)
- Bold Italic(粗斜体)
- 建议在修改字体前备份原始文件
- 如果使用
--dest参数,请确保目标目录已存在
以下是生成各种预设样式的具体命令示例。每个命令都基于 Input 字体的默认特性进行定制化修改。
python Scripts/inputCustomize.py Input-Regular.ttf --preset=andalepython Scripts/inputCustomize.py Input-Regular.ttf --preset=anonymouspython Scripts/inputCustomize.py Input-Regular.ttf --preset=consolaspython Scripts/inputCustomize.py Input-Regular.ttf --preset=dejavupython Scripts/inputCustomize.py Input-Regular.ttf --preset=envypython Scripts/inputCustomize.py Input-Regular.ttf --preset=firapython Scripts/inputCustomize.py Input-Regular.ttf --preset=liberationpython Scripts/inputCustomize.py Input-Regular.ttf --preset=monacopython Scripts/inputCustomize.py Input-Regular.ttf --preset=pragmatapython Scripts/inputCustomize.py Input-Regular.ttf --preset=sourcecode以下是每个预设样式包含的具体参数配置,供参考:
-
Andale Mono (
--preset=andale)--i=topserif--l=serifs--braces=straight
-
Anonymous Pro (
--preset=anonymous)--g=ss--i=serif--l=serif--zero=slash--asterisk=height--braces=straight
-
Consolas (
--preset=consolas)--i=serif--l=serif--zero=slash--braces=straight
-
Deja Vu / Menlo (
--preset=dejavu)--g=ss--i=serif--l=serifs_round--zero=slash--asterisk=height--braces=straight
-
Envy Code R (
--preset=envy)--g=ss--i=topserif--l=topserif--zero=slash
-
Fira Mono (
--preset=fira)--i=serif--l=serifs_round--braces=straight
-
Liberation Mono (
--preset=liberation)--g=ss--i=serif--l=serif--braces=straight
-
Monaco (
--preset=monaco)--a=ss--g=ss--i=serifs--l=serifs--zero=slash
-
Pragmata Pro (
--preset=pragmata)--i=serif--l=serif--asterisk=height--braces=straight
-
Source Code Pro (
--preset=sourcecode)--i=topserif--l=serifs_round--asterisk=height--braces=straight
要创建完整的字体族(包含常规、斜体、粗体和粗斜体),请使用以下格式:
python Scripts/inputCustomize.py \
Input-Regular.ttf \
Input-Italic.ttf \
Input-Bold.ttf \
Input-BoldItalic.ttf \
--preset=<style> \
--fourStyleFamily \
[其他可选参数]例如,创建 Consolas 风格的完整字体族:
python Scripts/inputCustomize.py \
Input-Regular.ttf \
Input-Italic.ttf \
Input-Bold.ttf \
Input-BoldItalic.ttf \
--preset=consolas \
--fourStyleFamily \
--suffix=Consolas