Bonjour,
Depuis quelques jours je génère pour mes sites des images contenant du texte, seule manière d'allier police léchée et texte dynamique.
J'ai effectué mes premiers test sur des fonts windows (.ttf opentype) de base (Arial, Verdana, Georgia), et jusque là aucun problème, l'image se crée bien, les caractères spéciaux sont respectés (du moins les caractères accentués, les polices étant françaises).
Mon graphiste n'utilise évidemment pas des polices de windows, mais des polices que l'on a acheté (format Postscript type 1 .pfb et opentype .otf).
Ainsi confiant, je me suis permis d'utiliser une font opentype .otf à la place d'un bête Arial.
Le problème est que sur les polices au format postscript et opentype (.otf) qui ne sont pas des polices de base de windows, les caractères spéciaux se voient remplacés joyeusement par des carrés.
J'ai essayé évidemment plusieurs polices achetées et toutes provoquent le même phénomène. Et là où le bas blaisse, c'est qu'en installant les polices achetées dans windows et en les visionnant, il affiche bien toute leurs tables de caractères ANSI et UNICODE identique à celles d'une font OpenType fournie de base avec Windows.
Bref, après 24h de recherche, je laisse ce message dans l'espoir que quelqu'un ait réussi cet exploit.
Je vous mets un morceau de code test au cas où :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $font = DEV_REPOSITORY_ABSOLUTE_PATH.'_resources/fonts/ZapfChanceryStd/ZapfChanceryStd-Bold.otf'; //Font achetée $font2 = DEV_REPOSITORY_ABSOLUTE_PATH.'_resources/fonts/Georgia/GeorgiaItalic.ttf'; //Font Windows $size = 20; $texte = utf8_to_nce(utf8_encode("abcdefghijklmnopqrstuvwxyz1234567890°+=)éç_-(é'Omega: Ω")); imagettftext ($img , $size , $angle , 25 , 25 , $font_color , $font , $texte); imagettftext ($img , $size , $angle , 25 , 75 , $font_color , $font2 , $texte); imagepng($img);
Partager