Php OTF、TTF字体cmap表
我已设法从OTF文件中获取cmap,如下所示:Php OTF、TTF字体cmap表,php,gd,truetype,opentype,Php,Gd,Truetype,Opentype,我已设法从OTF文件中获取cmap,如下所示: object(SimpleXMLElement)#4 (3) { ["tableVersion"]=> object(SimpleXMLElement)#5 (1) { ["@attributes"]=> array(1) { ["version"]=> string(1) "0" } } ["cmap_format_4"]=> array(2) {
object(SimpleXMLElement)#4 (3) {
["tableVersion"]=>
object(SimpleXMLElement)#5 (1) {
["@attributes"]=>
array(1) {
["version"]=>
string(1) "0"
}
}
["cmap_format_4"]=>
array(2) {
[0]=>
object(SimpleXMLElement)#6 (3) {
["@attributes"]=>
array(3) {
["platformID"]=>
string(1) "0"
["platEncID"]=>
string(1) "3"
["language"]=>
string(1) "0"
}
["map"]=>
array(222) {
[0]=>
object(SimpleXMLElement)#9 (1) {
["@attributes"]=>
array(2) {
["code"]=>
string(4) "0x20"
["name"]=>
string(5) "space"
}
}
[1]=>
object(SimpleXMLElement)#11 (1) {
["@attributes"]=>
array(2) {
["code"]=>
string(4) "0x21"
["name"]=>
string(6) "exclam"
}
现在,我需要使用PHP GD或任何其他方式生成字符映射。不过,我更喜欢PHP。如何将0x21格式的字母转换为类似字母的格式?最简单的方法就是使用字体定义将字符绘制到图像上
查看定义-不建议尝试从字形轮廓自己执行渲染。OTF字体的CFF表格包含整个字形图像/程序。可以将它们绘制为几何体对象。不可能通过php api绘制整个字形集合,因为php api使用编码参数来调用字形,而不是字形的索引或名称。我的意思是,我使用此信息仅获取字体中可用的字形。现在,我需要将它们转换为字母并打印出来。我可以通过使用chr简单地获得一些值,但对于0x2da来说,它不起作用。Guy:来自上面链接的文档:可能包括以下形式的十进制数字字符引用:&8364;访问位置127以外字体中的字符。十六进制格式,如&xA9;支持。UTF-8编码的字符串可以直接传递。@Orbling:我已经用0x17e字符zcaron尝试过了。我曾经这样尝试过:imagettftext$im、20、0、10、20、$black、'font.otf'、'&x17e;';但它不能产生空图像。@Guy:OTF格式是个问题,。您可能需要检查字体的不同Unicode CMAP,看看它们是否不同。例如,如果您查看的是Windows CMAP,但FreeType使用的是Apple CMAP,而后者恰好被破坏,那么某些标志符号将无法访问。