字体线是用于OPENTYPE垂直指标报告和基于命令线的字体线间距修改的LIBRE开源命令行工具。它支持.ttf和.otf字体构建。
$ pip3 install font-line$ font-line report [font path]$ font-line percent [integer %] [font path]$ font-line --help 字体线由Python构建,并支持Python 3.7+口译员。使用命令在命令行上检查您已安装的Python版本:
$ python3 --version
使用以下任何一种方法在系统上安装字体线。
最新的字体线版本可通过Python软件包索引获得,可以与PIP安装:
$ pip3 install font-line
要在PIP安装后升级到新版本的字体线,请使用命令pip3 install --upgrade font-line 。
可以通过下载存储库或用git克隆来安装当前的存储库版(可能在PYPI版本之前):
git clone https://github.com/source-foundry/font-line.git
导航到顶级存储库目录并输入以下命令:
$ pip3 install .
如果使用此方法安装,请按照相同的说明升级到应用程序的新版本。
字体线通过子命令可执行可执行文件的font-line命令行。可用以下子命令:
percent - 将字体的线间距修改为登山器的百分比为下降距离report - 报告字体的OPENTYPE指标值下面详细描述了这些子命令的使用。
report子命令显示以下opentype垂直指标值和从这些数据得出的计算值:
report子命令用法输入一个或多个字体路径参数到命令:
$ font-line report [fontpath 1] <fontpath ...>
这是使用命令使用hack类型File Hack-Regular.ttf生成的报告的示例:
$ font-line report Hack-Regular.ttf
=== Hack-Regular.ttf ===
Version 3.003;[3114f1256]-release
SHA1: b1cd50ba36380d6d6ada37facfc954a8f20c15ba
::::::::::::::::::::::::::::::::::::::::::::::::::
Metrics
::::::::::::::::::::::::::::::::::::::::::::::::::
[head] Units per Em: 2048
[head] yMax: 2027
[head] yMin: -605
[OS/2] CapHeight: 1493
[OS/2] xHeight: 1120
[OS/2] TypoAscender: 1556
[OS/2] TypoDescender: -492
[OS/2] WinAscent: 1901
[OS/2] WinDescent: 483
[hhea] Ascent: 1901
[hhea] Descent: -483
[hhea] LineGap: 0
[OS/2] TypoLineGap: 410
::::::::::::::::::::::::::::::::::::::::::::::::::
Ascent to Descent Calculations
::::::::::::::::::::::::::::::::::::::::::::::::::
[hhea] Ascent to Descent: 2384
[OS/2] TypoAscender to TypoDescender: 2048
[OS/2] WinAscent to WinDescent: 2384
::::::::::::::::::::::::::::::::::::::::::::::::::
Delta Values
::::::::::::::::::::::::::::::::::::::::::::::::::
[hhea] Ascent to [OS/2] TypoAscender: 345
[hhea] Descent to [OS/2] TypoDescender: -9
[OS/2] WinAscent to [OS/2] TypoAscender: 345
[OS/2] WinDescent to [OS/2] TypoDescender: -9
::::::::::::::::::::::::::::::::::::::::::::::::::
Baseline to Baseline Distances
::::::::::::::::::::::::::::::::::::::::::::::::::
hhea metrics: 2384
typo metrics: 2458
win metrics: 2384
[OS/2] fsSelection USE_TYPO_METRICS bit set: False
::::::::::::::::::::::::::::::::::::::::::::::::::
Ratios
::::::::::::::::::::::::::::::::::::::::::::::::::
hhea metrics / UPM: 1.16
typo metrics / UPM: 1.2
win metrics / UPM: 1.16
该报告包括字体版本字符串,字体文件的SHA-1哈希摘要以及与字体中的线间距相关的OPENTYPE表格指标。
Unix/linux/OS X用户可以将此报告写入使用>命令行成语的文件:
$ font-line report TheFont.ttf > font-report.txt
将上方的font-report.txt文件路径修改为您选择的文件路径字符串。
基线到基线距离(BTBD)计算是根据Microsoft建议对Opentype字体和Opentype OS/2表规范进行的。
BTBD = hhea.Ascent + abs(hhea.Descent) + hhea.LineGap
BTBD = OS/2.typoAscent + abs(OS/2.typoDescent) + OS/2.typoLineGap
BTBD = OS/2.winAscent + OS/2.winDescent + [External Leading]
外部领导被定义为:
MAX(0, hhea.LineGap - ((OS/2.WinAscent + OS/2.winDescent) - (hhea.Ascent - hhea.Descent)))
字体线支持对用户定义的每个EM度量单元的自动线间距修改。该值将缩写为下面的UPM。
percent输入UPM的所需百分比作为命令的第一个参数。应将其作为整数值输入。然后输入您要应用字体指标更改的一条或多个字体路径。
$ font-line percent [percent change] [fontpath 1] <fontpath ...>
字体设计器使用的常见默认值为20%UPM。要将路径TheFont.ttf上的字体修改为UPM度量的20%,您将输入以下命令:
$ font-line percent 20 TheFont.ttf
增加或降低整数值以相应增加或减小线间距。
原始字体文件保存在未修改的版本中,修改文件写入在定义为[original filename]-linegap[percent].[ttf|otf] 。修改完成后,在标准输出中向您报告了文件的路径。字体线不会修改应用于字体的字形集或提示。有关OPENTYPE表的修改的说明,请参见下面的详细信息部分,当时应用程序在字体文件上使用。
您可以使用report子命令中的新字体文件中检查新字体文件中的垂直指标(请参见上面的用法)。
percent这些多个垂直指标值的解释和显示是平台和应用程序依赖性的。没有广泛接受的“最佳”方法。因此,当用percent命令进行修改时,字体线试图将原始指标设计保存在字体中。
字体线目前支持三种常用的垂直指标方法。
垂直指标方法1 :
指标被定义为:
字体线根据命令行中定义的%UPM值计算总预期高度的增量值。该值与跨越[OS/2] walascent到风速值的观察到的单元数量之间的差异将一半划分为一半,然后添加到(增加线间距)或从字体中的三组升华/下降值中的每组中减去(为减小线间距)。 [OS/2] TypolineGap和[HHEA]线段值未修改。
垂直指标方法2
指标被定义为:
字体线根据命令行中定义的%UPM值计算总预期高度的增量值。该值与跨越[OS/2] Walascent到WindeScent值的观察到的单位数量之间的差异将一半划分为一半,然后添加到(增加线间距)或从[OS/2] Winasc/2] Winasc/WindESC和[HHEA] ASC/DESC值中减去(用于减小线间距)。 [OS/2] typoasc/typodesc值未经修改,并保持大小的定义= UPM值。 [OS/2] TypolineGap和[HHEA]线段值未修改。
垂直指标方法3
指标被定义为:
字体中指标值的更改定义为:
请注意,内部领导修改在[HHEA]上升和下降值之间以及[OS/2] Walascent&Windescent值之间均匀分裂。我们将新的[OS/2] TypolineGap值的一半添加到原始[OS/2] TypoAscender或Typodescender,以定义这些新的指标属性。 [HHEA] lineGap值始终定义为零。
新定义的垂直指标值如果未正确定义,可以导致字形组件的剪辑。字体线上没有测试可以保证不会发生这种情况。我们假设在使用该应用程序之前,用户在这些问题上精通这些问题,并将此测试留给设计器 /用户,然后再在生产设置中使用修改后的字体。
请提交有关项目存储库的新问题报告。
字体线是由梦幻般的Fonttools Python图书馆构建的。
麻省理工学院许可证。有关详细信息,请参见License.MD。