Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php OTF、TTF字体cmap表_Php_Gd_Truetype_Opentype - Fatal编程技术网

Php OTF、TTF字体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) {

我已设法从OTF文件中获取cmap,如下所示:

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,而后者恰好被破坏,那么某些标志符号将无法访问。