FONT-V是一个开源字体版本字符串库( libfv )和可执行文件( font-v ),用于读取,报告,修改和编写OPENTYPE名称表ID 5记录5记录和Head Table Fontrevision Records在*.otf和*.ttf FONTS中。
Font-V是使用Python构建的,可在Linux,MacOS和Windows平台上使用,并带有Python 2和Python 3解释器的当前版本。
libfv库和font-v可执行文件同时安装以下安装说明。
使用PIP软件包管理器安装是建议的方法。
使用以下命令与PIP安装:
$ pip install font-v
升级到具有以下命令的新版本的Font-V:
$ pip install --upgrade font-v
FONT-V使用一组子命令和选项执行,以定义您的命令行请求。
$ font-v [subcommand] (options) [font path 1] ([font path ...])
report报告Opentype名称表ID 5和Head Table Fontrevision记录
选项:
--dev在报告中包括所有名称表ID 5 x PlatformID记录write将版本编号写入头表fontrevision记录和版本字符串到名称表ID 5记录。
选项:
以下选项用于write以修改Head Fontrevision记录和名称ID 5记录中的版本号:
--ver=[version #] - 使用1.000或1-000语法在命令行上修改当前版本编号(后两种格式提供了以支持周期为特殊外壳字符1_000外壳中的支持定义)以下选项可以与write一起使用以修改名称ID 5中的版本字符串:
--dev -DEV-将开发状态元数据添加到版本字符串(与--rel rel相互排斥)中--rel REL-将发布状态元数据添加到版本字符串(与--dev相互排斥)--sha1将Git Commit Sha1添加SHA1短哈希状态元数据到版本字符串(需要GIT版本控制下的源)report版本字符串报告输入以下显示以显示字体示例example-regular.ttf:
$ font-v report Example-Regular.ttf
包括--dev标志以包含所有PlatformID记录中包含的版本字符串(名称5):
$ font-v report --dev Example-Regular.ttf
write修改版本号当您的命令中使用--ver=时,将修改名称ID 5记录和Head Fontrevision记录。
在--ver= flag之后以MAJOR.MINOR格式输入所需的版本号。为要在命令中替换的预期时期字形提供了支持,该命令_或dash在命令中-对于该期间是特殊外壳字符的平台上的用户。
所有以下所有结果都将版本编号修改为2.020 :
$ font-v write --ver=2.020 Example-Regular.ttf
$ font-v write --ver=2_020 Example-Regular.ttf
$ font-v write --ver=2-020 Example-Regular.ttf
该请求可以与其他选项合并,以同时包括状态和状态元数据。
write简短的哈希州元数据如果您的字体源处于GIT版本控件之下,则可以用短SHA1 HASH DIGEST(通常n = 7-8个字符)将名称ID 5版本字符串(通常为n = 7-8个字符)盖章,该数字是为了确认它代表代表git distion的唯一值代表了Active Git Branch的负责人的唯一值。 Git Commit Sha1 Hash Digest由您的Active存储库分支头部的git rev-list命令定义,并将匹配Git Commit Sha1 Hash Digest的初始n个字符,该字符在您查看git log (或查看Git Reposority Hashes of Git Reposority Hashes of Git Reposority Hoshes of Git Reposority Hoshes of Git Reposority Host tossotting Host tossing Platferts ins of GiThubs等)时会显示。这旨在在构建时间内有关源代码状态的字体二进制中维护元数据。
--sha1选项与这样的write命令一起使用:
$ font-v write --sha1 Example-Regular.ttf
添加了以下版本字符串格式:Sha1 Hash Digest:
Version 1.000;[cf8dc25]
可以将此与其他选项(例如修改版本号+/-添加开发或发布状态元数据)结合使用。其他元数据以这种修改为半脱符格式,维护并将其附加到修订版的字符串上。
此选项不会修改Head Fontrevision记录。
write添加开发 /发布状态元数据您可以修改名称ID 5版本字符串,以表明构建目的是使用--dev或--rel标志作为开发构建或发布构建。这些是相互排斥的选择。在您的命令中仅包含一个。
要添加开发状态元数据,请使用这样的命令:
$ font-v write --dev Example-Regular.ttf
并且版本字符串已修改为以下格式:
Version 1.000;DEV
要添加发布状态元数据,请使用这样的命令:
$ font-v write --rel Example-Regular.ttf
并且版本字符串通过以下格式修改:
Version 1.000;RELEASE
在命令中包含带有--dev或--rel标志的--sha1标志,以将状态和状态元数据包括在版本字符串中:
$ font-v write --sha1 --dev Example-Regular.ttf
$ font-v report Example-Regular.ttf
Example-Regular.ttf:
----- name.ID = 5:
Version 1.000;[cf8dc25]-dev
----- head.fontRevision:
1.000
或者
$ git write --sha1 --rel Example-Regular.ttf
$ git report Example-Regular.ttf
Example-Regular.ttf:
----- name.ID = 5:
Version 1.000;[cf8dc25]-release
----- head.fontRevision:
1.000
在状态元数据之后,以半元素划界格式维护和附加了遵循原始版本号substring的任何数据。
这些选项不会修改head fontrevision记录。
libfv Python库将FontVersion对象以及一组相关的属性和公共方法集,用于读取,修改和opentype Head Fontrevision记录版本编号以及名称ID 5记录(S)版本字符串。 font-v可执行文件是基于本库中可用的公共方法构建的。
LIBFV API的完整文档可在http://font-v.readthedocs.io/上获得
libfv库导入您的项目要使用LIBFV库,请使用上面的说明安装FONT-V项目,并将FontVersion类导入您的Python脚本,并使用以下内容:
from fontv . libfv import FontVersionFontVersion类的实例接下来,使用以下方法之一创建一个FontVersion的实例:
# Instantiate with a file path to the .ttf or .otf font
fv = FontVersion ( "path/to/font" )或者
# Instantiate with a fontTools TTFont object
# See the fonttools documentation for details (https://github.com/fonttools/fonttools)
fv = FontVersion ( fontToolsTTFont ) LIBFV库将自动解析版本字符串到一组public FontVersion类属性,并揭示可用于检查和修改版本字符串的公共方法。然后,可以将修改版本的字符串写回字体文件或在其他文件路径上的新字体。
请注意,对版本字符串的所有修改都是在内存中进行的。当调用代码明确调用写入方法FontVersion.write_version_string() (详细信息如下)时,文件使用这些修改后的数据写入。
FontVersion对象做什么您可以在内存中检查全名ID 5版本字符串和Head Fontrevision版本编号(包括您使用调用代码进行的修改之后):
fv = FontVersion ( "path/to/font" )
vs = fv . get_name_id5_version_string () fv = FontVersion ( "path/to/font" )
vs = fv . get_head_fontrevision_version_number ()使用公共方法进行的所有版本修改都是在内存中进行的。当您准备将它们写入字体文件时,请调用以下方法:
fv = FontVersion ( "path/to/font" )
# do things to version string
fv . write_version_string () # writes to file used to instantiate FontVersion object
fv . write_version_string ( fontpath = "path/to/differentfont" ) # writes to a different file path FontVersion.write_version_string()提供了可选的参数fontpath=该参数可用于定义与用于实例化FontVersion对象的文件路径不同的文件路径。
比较名称表ID 5记录两个字体之间的平等:
fv1 = FontVersion ( "path/to/font1" )
fv2 = FontVersion ( "path/to/font2" )
print ( fv1 == fv2 )
print ( fv1 != fv2 )libfv库支持的一些常见字体版本修改任务包括以下内容:
在名称ID 5中设置版本号,并在Fontrevision记录中设置版本号:
fv = FontVersion ( "path/to/font" )
fv . set_version_number ( "1.001" )在名称ID 5记录中设置完整版字符串。版本号被解析并用于定义头部fontrevision记录。
fv = FontVersion ( "path/to/font" )
fv . set_version_string ( "Version 2.015; my metadata; more metadata" ) fv = FontVersion ( "path/to/font" )
# version number = "Version 1.234"
vno = fv . get_version_number_tuple ()
print ( vno )
> >> ( 1 , 2 , 3 , 4 )
fv2 = FontVersion ( "path/to/font2" )
# version number = "Version 10.234"
vno2 = fv2 . get_version_number_tuple ()
print ( vno2 )
> >> ( 10 , 2 , 3 , 4 )从版本字符串中删除所有元数据:
fv = FontVersion ( "path/to/font" )
# pre modification version string = "Version 1.000; some metadata; other metadata"
fv . clear_metadata ()
# post modification version string = "Version 1.000" 将开发/发布状态子字符串添加到名称ID 5记录:
fv = FontVersion ( "path/to/font" )
# Label as development build
fv . set_development_status ()
# --> adds `DEV` status metadata to version string
# Label as release build
fv . set_release_status ()
# --> adds `RELEASE` status metadata to version string 将源代码状态元数据添加到名称ID 5记录:
fv = FontVersion ( "path/to/font" )
# Set git commit SHA1 only
fv . set_state_git_commit_sha1 ()
# --> adds "[sha1 hash]" state metadata to build
# Set git commit SHA1 with development status indicator
fv . set_state_git_commit_sha1 ( development = True )
# --> adds "[sha1 hash]-dev" state metadata to build
# Set git commit SHA1 with release status indicator
fv . set_state_git_commit_sha1 ( release = True )
# --> adds "[sha1 hash]-release" state metadata to build libfv API的完整文档可在http://font-v.readthedocs.io/上获得
鼓励和欢迎对LIBFV库和FONT-V可执行文件的源贡献!有关详细信息,请参见贡献。md文档。
由奇妙的Fonttools和Gitpython Python图书馆建造。
麻省理工学院许可证