PHP-GD:处理Unicode字符

seh*_*ugg 8 php unicode fonts gd

我正在开发一个Web服务,使用用户选择的TTF字体使用PHP GD扩展来呈现字符.

这在ASCII-land中运行良好,但有一些问题:

  1. 要呈现的字符串以UTF-8形式出现.我想将用户可选字体列表限制为只能正确呈现字符串的字体,因为某些字体只有ASCII字符的字形,ISO 8601等.

  2. 在包含一些装饰字符的情况下,可以很好地渲染所选字体中的大多数字符并在Arial中呈现装饰字符(或者包含扩展字形的任何字体).

看起来PHP-GD似乎不支持充分查询字体元数据以确定字符是否可以以给定字体呈现.将字体指标变为PHP的好方法是什么?是否有可以以XML或其他可解析格式转储的命令行实用程序?

seh*_*ugg 0

我最终使用TTX实用程序来转储字体指标。然后我可以检查生成的 .ttx 文件并查看字符->字形映射。我手动执行此操作,但可以自动解析 XML 文件。

一个示例 GNU Makefile,它从同一目录中的一组 TrueType 字体生成 .ttx 文件:

all: fontmetrics

fontmetrics: $(patsubst %.ttf,%.ttx,$(wildcard *.ttf))
.PHONY: fontmetrics

clean:
    rm -f *.ttx

%.ttx: %.ttf
    ttx -t cmap $<
Run Code Online (Sandbox Code Playgroud)