8
votes

PHP-GD: Traitement des caractères Unicode

Je développe un service Web qui rend les caractères utilisant l'extension PHP GD, à l'aide d'une police TTF sélectionnée par l'utilisateur.

Cela fonctionne bien en ASCII-Terre, mais il y a quelques problèmes:

  1. La chaîne à rendu est rendue dans UTF-8. J'aimerais limiter la liste des polices sélectionnables par l'utilisateur pour être uniquement celles qui peuvent rendre la chaîne correctement, car certaines polices n'ont que des glyphes uniquement pour les caractères ASCII, ISO 8601, etc.

  2. Dans le cas où certains caractères décoratifs sont inclus, il serait bon de rendre la majorité des caractères de la police sélectionnée et de rendre les caractères décoratifs dans Arial (ou quelle que soit la police contenant les glyphes prolongés).

    Il ne semble pas que PHP-GD ait le support pour interroger suffisamment les métadonnées de police pour déterminer si un caractère peut être rendu dans une police donnée. Quel est un bon moyen d'obtenir des mesures de police en PHP? Existe-t-il une utilitaire de ligne de commande capable de déménager dans XML ou un autre format analysable?


1 commentaires

Il suffit de vous procurer une police unicode.


4 Réponses :


2
votes

PHP-CAIRO construit contre le pango et FontConfig doit avoir suffisamment de cerveaux pour Faire la substitution de la police le cas échéant.


0 commentaires

1
votes

Vous pouvez essayer d'utiliser pdf_info_font () à partir d'une extension PDffib. Un bon exemple est là: http: //www.pdflib.com/pdflib-cookbook/font/font-metrics-info/php-font-metrics-info/


0 commentaires

1
votes

Si vous n'avez pas de police Unicode, vous devrez essayer quelque chose comme xxx

pris de http://php.net/manual/fr/function.autf8-deecode.php

si le mélange et Les caractères UTF-8 sont égaux, puis vous pouvez l'utiliser. Sinon, alors vous ne pouvez pas.


0 commentaires

0
votes

J'ai fini par utiliser utilitaire TTX pour dépenser des métriques de police. Je pourrais ensuite inspecter les fichiers .TTX résultants et regarder la carte de caractère-> glyphe. Je l'ai fait manuellement, mais l'analyse automatique des fichiers XML est possible.

Un exemple GNU Makefile qui génère les fichiers .ttx à partir d'un ensemble de polices TrueType dans le même répertoire: P>

all: fontmetrics

fontmetrics: $(patsubst %.ttf,%.ttx,$(wildcard *.ttf))
.PHONY: fontmetrics

clean:
    rm -f *.ttx

%.ttx: %.ttf
    ttx -t cmap $<


0 commentaires