分享字体测试工具: hb-shape 和 hb-view

2018-03-08 17:27:25 +08:00
 Khlieb

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                                退出前释放所有资源
4335 次点击
所在节点    字体排印
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/436218

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX