php - ¿Hay alguna manera de saber si una fuente admite un carácter determinado en Imagick?
fonts (1)
Estoy usando Imagick para generar logotipos simples, que son solo texto sobre un fondo.
Por lo general, recorro todas las fuentes disponibles para presentar al usuario una selección de diferentes representaciones para cada fuente (una imagen por fuente)
El problema es que algunas fuentes no son compatibles con los caracteres ASCII (creo que se han diseñado solo para un idioma determinado). Y supongo que algunas de las fuentes que admiten caracteres ASCII también fallarán con caracteres que no sean ASCII.
De todos modos, acabo con imágenes como estas:
¿Hay una forma programática en Imagick
para saber si una fuente dada admite todos los caracteres en una cadena dada?
Eso me ayudaría a filtrar las fuentes que no admiten el texto que escribió el usuario, y evitar mostrar imágenes de basura como las de arriba.
No sé cómo usar imagemagik, pero puedes usar la biblioteca php-font-parser desde aquí:
https://github.com/Pomax/PHP-Font-Parser
Específicamente, puede analizar una fuente para cada letra en su cadena requerida y verificar el valor de retorno:
$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;
El código anterior proviene de la clase fonttest.php de los proyectos del analizador de fuentes:
https://github.com/Pomax/PHP-Font-Parser/blob/master/fonttest.php