Подтвердить что ты не робот

Есть ли способ определить, поддерживает ли шрифт данный символ в Imagick?

Я использую Imagick для создания простых логотипов, которые являются только текстом на фоне.

Я, как правило, просматриваю все доступные шрифты, чтобы представить пользователю различные визуализации для каждого шрифта (по одному изображению на шрифт).

Проблема в том, что некоторые шрифты не поддерживают символы ASCII (я думаю, что они были предназначены только для определенного языка). И я предполагаю, что некоторые из шрифтов, которые поддерживают символы ASCII, также не будут работать с символами, отличными от ASCII.

В любом случае, я получаю следующие изображения:

Imagick non-supported font charactersImagick non-supported font charactersImagick non-supported font characters

Есть ли программный способ в Imagick, чтобы определить, поддерживает ли данный шрифт все символы в данной строке?

Это поможет мне отфильтровать те шрифты, которые не поддерживают текст, введенный пользователем, и избегать отображения любых изображений мусора, таких как те, что указаны выше.

4b9b3361

Ответ 1

Я не знаю способ использования imagemagik, но вы можете использовать библиотеку php-font-parser отсюда:

https://github.com/Pomax/PHP-Font-Parser

В частности, вы можете разобрать шрифт для каждой буквы в нужной строке и проверить возвращаемое значение:

    $fonts = array("myfont.ttf");

    /**
     * For this test, we'll print the header information for the
     * loaded font, and try to find the letter "g".
     */
    $letter = "g";
    $json = false;
    while($json === false && count($fonts)>0) {
            $font = new OTTTFont(array_pop($fonts));
            echo "font header data:\n" . $font->toString() . "\n";
            $data = $font->get_glyph($letter);
            if($data!==false) {
                    $json = $data->toJSON(); }}

    if($json===false) { die("the letter '$letter' could not be found!"); }
    echo "glyph information for '$letter':\n" . $json;

Выше кода поступает из проектов parser font fontstest.php:

https://github.com/Pomax/PHP-Font-Parser/blob/master/fonttest.php