Texte dans une image : gestion manuelle du débordement (césu
Posté : 08 avr. 2008, 12:02
Bonjour,
Petite question sur laquelle, j'en suis sûr, certains d'entre vous ont déjà buté
Dans un de mes sites, j'ai besoin de générer en PHP (avec GD) une image contenant un texte variable issu d'une base de données. Ce texte fait entre 1 et 10 mots et entre 8 et 200 caractères, tout en majuscules.
L'image que je dois générer doit être de dimension fixe pour toutes ces "vignettes". La police utilisée est une police à chasse non-fixe (Arial).
Mon problème se situe au niveau de la gestion du débordement de texte. Le texte pouvant être bien plus grand que la limite autorisée par l'image qui va le contenir, je dois le fractionner (insérer des retours à la ligne) pour avoir un rendu propre et éviter que le texte n'aille déborder hors de l'image. L'image me permet d'afficher le texte sur 4 lignes maxi.
Je ne peux pas me baser uniquement sur le nombre de caractères car un "i" est bien moins large qu'un "m". Je ne peux pas non plus me baser uniquement sur le nombre de mots car leur longueur est assez variable (de 1 à 15 caractères par mot pour vous donner une idée).
Je cherche donc une façon de gérer proprement l'introduction de ces césures ( \n ) dans mon texte. (Evidemment, j'ai déjà un bout de code dégueulasse basé sur des constantes arbitraires qui marche pas trop mal dans 70% des cas, mais je n'arrive pas à penser une façon propre et générique de traiter le problème)
Avez-vous des expériences sur le sujet ?
Petite question sur laquelle, j'en suis sûr, certains d'entre vous ont déjà buté
Dans un de mes sites, j'ai besoin de générer en PHP (avec GD) une image contenant un texte variable issu d'une base de données. Ce texte fait entre 1 et 10 mots et entre 8 et 200 caractères, tout en majuscules.
L'image que je dois générer doit être de dimension fixe pour toutes ces "vignettes". La police utilisée est une police à chasse non-fixe (Arial).
Mon problème se situe au niveau de la gestion du débordement de texte. Le texte pouvant être bien plus grand que la limite autorisée par l'image qui va le contenir, je dois le fractionner (insérer des retours à la ligne) pour avoir un rendu propre et éviter que le texte n'aille déborder hors de l'image. L'image me permet d'afficher le texte sur 4 lignes maxi.
Je ne peux pas me baser uniquement sur le nombre de caractères car un "i" est bien moins large qu'un "m". Je ne peux pas non plus me baser uniquement sur le nombre de mots car leur longueur est assez variable (de 1 à 15 caractères par mot pour vous donner une idée).
Je cherche donc une façon de gérer proprement l'introduction de ces césures ( \n ) dans mon texte. (Evidemment, j'ai déjà un bout de code dégueulasse basé sur des constantes arbitraires qui marche pas trop mal dans 70% des cas, mais je n'arrive pas à penser une façon propre et générique de traiter le problème)
Avez-vous des expériences sur le sujet ?
