HarfBuzz 的开发者推出了两个测试工具:hb-shape 和 hb-view。二者都是命令行程序,既用来测试 HarfBuzz 本身,又可以用来测试字体的使用效果。区别在于 hb-shape 生成实际显现字符的 id 或者索引加上方位信息,hb-view 以图片形式产生字体的排版效果。
在 HarfBuzz 的下载页面找到 harfbuzz-<版本号>-win32.zip 的文件,下载完毕后解压到当前文件夹即可通过命令提示符食用,还可以可以通过 --help
命令输出帮助信息来了解用法。
我根据二者输出的帮助信息内容做了翻译,供大家参考:
用法:
hb-shape.exe [选项...] [字体文件] [文本]
hb-view.exe [选项...] [字体文件] [文本]
帮助选项:
-h, --help 显示帮助选项
--help-all 显示所有帮助选项
--help-font 关于字体的选项
--help-variations 关于所用字体变化的选项
--help-text 关于输入文本的选项
--help-shape 关于塑形进程的选项
--help-features 关于所用字体特性的选项
--help-output 关于目标文件夹和输出形式的选项
--help-view 关于输出渲染的选项
字体选项:
--font-file=文件名 设置字体文件名
--face-index=索引 设置 face 索引(默认:0 )
--font-size=数字或"upem" 字号(默认:upem (hb-shape)、256 (hb-view))
--font-funcs=impl 设置要用的字体功能实现(默认:ft )
受支持的的字体功能实现有:ft/ot
变化选项:
--variations=列表 字体变化的逗号分隔列表
字体变化是全局设置的。用于指定变化设置的格式如下。所有有效的 CSS font-
variation-settings 属性值除“ normal ”和“ inherited ”外也都可接受,虽然并未
记载在下面。
其格式是一个标签,可选择性地附上等号和数字。例如:
"wght=500"
"slnt=-7.5"
文本选项:
--text=字符串 设置输入的文本
--text-file=文件名 设置输入文本的文件名
如果没有提供文本,用标准输入方式输入。
-u, --unicodes=16 进制数列 设置输入的 Unicode 码点
--text-before=字符串 设置每一行之前的文本内容
--text-after=字符串 设置每一行之后的文本内容
塑形选项:
--list-shapers 列举可用的塑形器并退出
--shapers=列表 设置逗号分隔的塑形器列表以尝试
--direction=ltr/rtl/ttb/btt 设置文本方向(默认:auto )
--language=langstr 设置文本语言(默认:$LANG )
--script=ISO-15924 标签 设置文本脚本(默认:auto )
--bot 文本作为段首对待
--eot 文本作为段末对待
--preserve-default-ignorables 保留默认可忽略的字符
--remove-default-ignorables 移除默认可忽略的字符
--utf8-clusters 使用 UTF8 字节指数,不是字符指数
--cluster-level=0/1/2 集群合并级别(默认:0 )
--normalize-glyphs 以名义顺序重排字形集群
--verify 对塑形结果的表现完善性检测
--num-iterations=N 运行塑形器 N 次(默认:1 )
特性选项:
--features=列表 字体特性的逗号分隔列表
字体特性可以启用或者禁用,可以全局或者限定指定字符集。用于指定特性设置的格式如
下。所有有效的 CSS font-feature-settings 属性值除“ normal ”和“ inherited ”外
也都可接受,虽然并未记载在下面。
范围指数涉及 Unicode 字符之间的方位,除非提供了 --utf8-clusters。后者的范围涉
及 UTF-8 字节指数。第 1 个字符之前的方位始终是 0。
其格式是 Python 格式的。这里面是它们都怎样运行的:
语法: 值: 开头: 结束:
设置值:
"kern" 1 0 ∞ # 开启特性
"+kern" 1 0 ∞ # 开启特性
"-kern" 0 0 ∞ # 关闭特性
"kern=0" 0 0 ∞ # 关闭特性
"kern=1" 1 0 ∞ # 开启特性
"aalt=2" 2 0 ∞ # 选择第 2 个替代字形
设置索引:
"kern[]" 1 0 ∞ # 开启特性
"kern[:]" 1 0 ∞ # 开启特性
"kern[5:]" 1 5 ∞ # 开启特性,局部性
"kern[:5]" 1 0 5 # 开启特性,局部性
"kern[3:5]" 1 3 5 # 开启特性,范围性
"kern[3]" 1 3 3+1 # 开启特性,单一字符
结合全部:
"aalt[3:5]=2" 2 3 5 # 为某一范围开启第 2 个替代字形
输出目标及文件夹选项:
-o, --output-file=filename 设置输出文件名(默认:stdout )
-O, --output-format=format 设置输出格式
支持的输出格式有:text/json (hb-shape)、ansi/png/svg/pdf/ps/eps (hb-view)
查看选项(仅 hb-view ):
--annotate 注释输出的渲染成果
--background=rrggbb/rrggbbaa 设置背景色(默认:#FFFFFF )
--foreground=rrggbb/rrggbbaa 设置前景色(默认:#000000 )
--line-space=units 设置行间距(默认:0 )
--margin=one to four numbers 输出之外留白(默认:16 )
输出语法(仅 hb-shape ):
文本:[<字型名称或索引>=<输入过程中的字形集群索引>@<横向位移>,<纵向位移>+<横向推进量>,<纵向推进量>|...]
json:[{"g": <字型名称或索引>, "ax": <横向推进量>, "ay": <纵向推进量>, "dx": <横向位移>, "dy": <纵向位移>, "cl": <输入过程中的字形集群索引>}, ...]
输出语法选项(仅 hb-shape ):
--show-text 输出的每一行之前缀上相应的输入文本
--show-unicode 输出的每一行之前缀上相应的输入码点
--show-line-num 输出的每一行之前缀上相应的输入行号
-v, --verbose 输出的每一行之上的前缀
--no-glyph-names 输出字形指数而非名称
--no-positions 不输出字形方位
--no-advances 不输出字形推进量
--no-clusters 不输出集群指数
--show-extents 输出字形界限
--show-flags 输出字形旗标
--ned 无额外数据:不输出集群或推进量
-V, --trace 输出临时的塑形结果
查看选项(仅 hb-view ):
--annotate 注释输出的渲染成果
--background=rrggbb/rrggbbaa 设置背景色(默认:#FFFFFF )
--foreground=rrggbb/rrggbbaa 设置前景色(默认:#000000 )
--line-space=units 设置行间距(默认:0 )
--margin=one to four numbers 输出之外留白(默认:16 )
应用选项:
--version 显示版本号
--debug 退出前释放所有资源