php - 读出(icon-)字体的每个字符

时间:2015-06-10 14:23:03

标签: php fonts icons

我有一个(icon-)字体,想要用php读取所有可能的图标(字符),这些图标可用于列出它们的字体。 是否有任何PHP功能或图书馆使这成为可能? 字体是哪种文件类型无关紧要,因为大多数字体都可用:svg,eot,ttf,woff。

1 个答案:

答案 0 :(得分:2)

修改 现在在github:https://github.com/blacksunshineCoding/svgFontReader

现在我找到了一个解决方案并为它构建了一个类:

class svgFontReader {

    function listGlyphs($svgFile) {
        $allGlyphs = $this->getGlyphs($svgFile);
        return implode(',', $allGlyphs);
    }

    function getGlyphs($svgFile) {
        $svgCopy = 'font.svg';

        if (file_exists($svgCopy)) {
            unlink($svgCopy);
        }
        copy($svgFile, $svgCopy);

        $svgContent = file_get_contents($svgCopy);

        $xmlInit = simplexml_load_string($svgContent);
        $svgJson = json_encode($xmlInit);
        $svgArray = json_decode($svgJson, true);

        $svgGlyphs = $svgArray['defs']['font']['glyph'];

        if (count($svgGlyphs) > 0) {

            foreach ($svgGlyphs as $glyphId => $glyph) {
                $svgGlyphs[$glyphId] = $glyph['@attributes']['unicode'];
            }

        }

        return $svgGlyphs;
    }

}

使用如下:

$svg = dirname(__FILE__) . '/font-icons.svg'; // define font-file
$svgFontReader = new svgFontReader; // initiate class
$glyphsAll = $svgFontReader->getGlyphs($svg); // get glyphs as array
$glyphsList = $svgFontReader->listGlyphs($svg); //get glyphs as comma separate

一些规则:

  • charset必须是unicode / utf8
  • 您必须在css中包含该字体
  • 对于相关区域,您必须定义font-family