0

我正在尝试检索图标字体中字形的 unicode 值。字体结构如下:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<defs>
<font id="symbols" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
<glyph unicode="&#xe600;" d="M1004.5 404.5q-19.5-19.5-47-19.5t-46.5 19l-15 15v-419q0-26-18.5-45t-45.5-19h-192v288q0 13-9.5 22.5t-22.5 9.5h-192q-13 0-22.5-9.5t-9.5-22.5v-288h-192q-27 0-45.5 19t-18.5 45v419l-15-15q-19-19-46.5-19t-47 19.5-19.5 47 19 46.5l444 444q20 20 49 19 29 1 49-19l444-444q19-19 19-46.5t-19.5-47z" />
<glyph unicode="&#xe601;" d="M960 576h-384v-64h258q34-1 43-10l137-94q10-10 10-24t-10-24l-137-94q-10-10-45-10h-256v-256q0-26-18.5-45t-45.5-19-45.5 19-18.5 45v256h-384q-26 0-45 19t-19 45v128q0 26 19 45t45 19h384v64h-256q-35 0-45 10l-137 94q-10 10-10 24t10 24l137 94q9 10 43 10h258v64q0 26 18.5 45t45.5 19 45.5-19 18.5-45v-64h384q26 0 45-18.5t19-45.5v-128q0-27-19-45.5t-45-18.5z" />
</font>
</defs>
</svg>

我正在尝试unicode使用DOMDocument获取属性。

if(file_exists($this->symbols)) {
    $font = new DOMDocument();
    $font->load($this->symbols);
    $glyphs = $font->getElementsByTagName('glyph');

    foreach($glyphs as $g) {
        echo $g->getAttribute('unicode');
    }
}

但是,我总是只得到一堆  echo'ed 而不是实际的 unicode 值。我需要使用这个 unicode 值来显示字体系列中的字符并将逐字存储在数据库中。

4

1 回答 1

1

你得到的是正确的答案。这是属性的 UTF-8 十六进制值。您似乎期望的是 UTF16 值,但它只是以不同的方式表达的同一件事。

iconv可用于在 UTF-8 和 UTF-16 之间进行转换,因此如果您 iconv 结果然后将其传递到 bin2hex,您应该能够将 UTF-16 值作为字符串获取。

于 2013-11-05T18:07:06.747 回答