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