Essayer avec un texte «pur ASCII», sans accents, sans apostrophe.
Genre «ABCabc». Est-ce que là ça passe?
soupçonnant un truc dans le style j'ai même essayé en passant un filtre
pour supprimer les caractères accentués => pas mieux!
Il est fréquent que les polices TTF un peu anciennes utilisent un
vieux charset, qui plus est un des charsets pur Windows. Si ça se
trouve, les lettres accentuées de vos titres, du coup, vont taper
dans des cases de la casse de caractères qui font déconner la police.
Perso ça ne me provoque pas d'erreur, juste l'affichage des mauvaises
lettres, mais ça se teste. Ça pourrait expliquer pour ça fonctionne
sous Windows et pas sur un serveur Linux (peut-être que la version de
GD pour Windows est capable de choses typiquement Windows que ne
permet pas la version Linux liées à l'ouverture des polices).
ben oui mais non: là j'ai l'erreur avec la Dustismo livrée avec la dist de SPIP...
Pour être exhaustif dans la description du problème:
- les erreurs sont présentes quelle que soit la
bibliothèque php sélectionnée dans la
configuration "Méthode de fabrication des vignettes" du SPIP
(testé avec GD1, GD2, convert et netpbm)
- j'ai aussi:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 134218696 bytes) in /home1/virtuals/galactron.org/html/ecrire/inc/filtres_images.php on line 2475
de façon récurrente (en alternance avec les erreurs moins "fatales" signalées par lpg)
Cette ligne 2475 correspond à l'appel de la fonction
imageCreateTrueColor() avec les paramètres de largeur et hauteur
de l'image contenant le texte à afficher:
$im = imageCreateTrueColor($largeur_reelle-$espace+(2*$padding),
$hauteur+5+(2*$padding));
En traçant ce qui se passe au moment de l'appel de cette
fonction, l'origine du problème semble se situer au niveau de la fonction php imageftbbox() utilisée pour calculer $espace (= la taille du rectangle encadrant le texte):
=> serveur Linux au premier calcul de la page:
$espace: -33554432
=> serveur Linux au 2ème ou 3ème recalcul:
$espace: 11
=> serveur Windows dès le premier calcul:
$espace: 11
Cette fonction dépendant elle-même de freetype2 cela pourrait expliquer les différences constatées entre les serveurs (?)
Ce que je comprend très mal c'est pourquoi la fonction foire au premier calcul de la page mais pas par la suite!
Ceci étant, sans me poser plus de questions métaphysico-phpéiennes, j'ai profité de cette anomalie pour tester un très malhonnête patch (cf pièce attachée) qui semble contourner le problème chez moi (SPIP 2.0.10)...
C'est crade, certes, mais au moins je n'ai plus l'erreur à chaque recalcul d'une page avec un |image_typo dedans: si des *vrais* devs ont une soluce plus propre je suis bien sûr preneur...
à bientôt
filtres_images.php.patch (1.81 KB)