FORUM Syndrome-OC - Jacky-PC


  Programmation


  Autre


  [TrueType] Font proportionelle et determination de longueur ?

 




Il y a 31 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[TrueType] Font proportionelle et determination de longueur ?

n°4513
Trracer
Posté le 08-12-2004 à 14:19:21  profilanswer
 

Bonjour,
 
Je cherche à determiner la longueur en pixel d'une chaine rendu avec une font proportionnelle ("Arial" avec ou sans serif par exemple).
 
Mais je n'arrive pas à trouver de doc qui donne le rapport de proportionalité par rapport à la lettre et sa taille. J'ai deja epluché les docs truetype, opentype et microsoft glyph et j'ai rien trouvé.
 
Quelqu'un a une idée ?
 
(Je sais pas pourquoi mais je sens que je vais encore me prendre un mur avec ma question :lol: )

mood
Google
Posté le 08-12-2004 à 14:19:21  profilanswer
 

n°4514
Deather2
OpenBSD: the way to go!
Posté le 08-12-2004 à 14:29:47  profilanswer
 

Citation :

"Arial" avec ou sans serif par exemple


Arial est proportionnelle?
Et c'est quoi la diff entre sérif ou pas? :D

n°4515
Dr lous
I see old password
Posté le 08-12-2004 à 17:23:10  profilanswer
 

Trracer a écrit :

Bonjour,
 
Je cherche à determiner la longueur en pixel d'une chaine rendu avec une font proportionnelle ("Arial" avec ou sans serif par exemple).
 
Mais je n'arrive pas à trouver de doc qui donne le rapport de proportionalité par rapport à la lettre et sa taille. J'ai deja epluché les docs truetype, opentype et microsoft glyph et j'ai rien trouvé.
 
Quelqu'un a une idée ?
 
(Je sais pas pourquoi mais je sens que je vais encore me prendre un mur avec ma question :lol: )


pour gd ? je pense qu'il y a une fonction determiné pour ca :)

n°4516
Trracer
Posté le 08-12-2004 à 19:20:26  profilanswer
 

Bha non, si c'etait avec GD le probleme serait regle rapidement ;)
 
Là c'est en SVG, j'ai mes classes PHP qui generent du code SVG, mais je voudrais pouvoir estimer (à la louche) la longueur d'une chaine une fois rendu.  
L'equivalent de getComputedTextLength() d'EcmaScript en fait. Mais je trouve rien... Doit bien y avoir l'algo de ce truc quelque part quand même :??:

n°4517
Deadog
Dain Bramaged
Posté le 10-12-2004 à 02:25:49  profilanswer
 

c'est pas censé être la même longueur entre SVG et GD ? [:matleflou]


Message édité par Deadog le 10-12-2004 à 02:26:02
n°4518
Trracer
Posté le 10-12-2004 à 13:34:21  profilanswer
 

J'y ai pensé à utiliser GD pour faire l'interpolation via imagettftext().  
 
Mais en plus de rajouter une dependance à mes classes, j'ai peur que ça ralentisse le traitement pour finalement pas grand chose. Je ne sais pas si GD est rapide :??:
 
Et non la taille rapporté n'est pas exactement la même, ceci étant due à l'antialiase du svg par defaut et aux approximations differentes effectuées par svg et gd. Mais bon ça se joue à pas grand chose (quelques pixels tout au plus) ;)
 
Je vais faire quelques test.  
Je viens de voir que imagettftext() supporte un angle pour le texte, ça pourrait changer mon optique. En cas de texte non horizontal j'aurais pas à me taper les calculs :D

n°4520
Trracer
Posté le 12-12-2004 à 22:18:17  profilanswer
 

J'ai fais des tests avec GD et y'a des trucs bizarres...
La taille rapporté par GD est systematiquement plus petite que celle rapportée par EcmaScript/SVG :??: Et ce, avec un differentiel plus important que je pensais :-/
 
Et j'ai pas trouvé de fonction pour savoir ou regler la résolution utilisé pour la creation des images. Apparemment ça a l'air d'etre du 96dpi (encore heureux), mais bon...

n°4521
Dr lous
I see old password
Posté le 12-12-2004 à 23:01:04  profilanswer
 

72dpi nan ?

n°4522
Trracer
Posté le 13-12-2004 à 10:07:43  profilanswer
 

J'ai farfouillé et apparemment c'est bien du 96dpi (y'a plus que mac qui utilise du 72dpi aujourd'hui).  
Et à moins de recompiler GD, y'a pas moyen de changer la reso avec php.
 
Pour donner un exemple, avec un texte de 23 lettres (Verdana, 30pt), en SVG la taille rapportée est de 548px et avec GD de 532px. Pour un texte de 13 caractères c'est 273px (SVG) et 269px (GD).  
 
Soit une difference de 2 à 3% (ça va jusqu'à pratiquement 5% dans certains cas).  
 
Je ne sais pas d'où viens cette difference :??:

n°4523
KnX
To be or not to code.
Posté le 13-12-2004 à 15:01:23  profilanswer
 

ptêtre le Kerning ? ou alors essaye de spécifie la taille de la police autrement si c'est possible .... la haute de la police change entre les 2 systèmes ou pas ?


---------------
/!\ KnX's bash NP : Norah Jones - Don't Miss You At All /!\
n°4524
Trracer
Posté le 13-12-2004 à 16:29:33  profilanswer
 

Le kerning ne depend pas uniquement de la font utilisé ? Il est pas standard ?
 
Sinon la hauteur est specifié en point car c'est l'unité de réference de GD (pas specifié dans la doc...).  
Mais j'ai des fonctions qui transforment les unites svg (pica, point, pixel, cm, mm, in et ex) en pixels et points. Pour les test j'ai specifié les tailles en point pour pas avoir d'approximation.
 
La hauteur change elle-aussi, mais dans une moindre mesure (GD et SVG ne considérant pas la ligne de base à la la même place).  
Mais ça c'est pas tres grave, je prend en compte la taille demandé (30pt soit 40px) plutot que la taille reelle (qui est forcemment plus petite).
 
Mais je viens de remarquer un autre truc, la taille d'un texte n'est pas la même suivant l'angle du texte (respectivement à 0°, 90° et -90°) !  
 
Apparemment GD patine des qu'il y a des angles, et augmentent l'espace entre chaque caractere. Par exemple un texte évalué par GD à 238px (240px en SVG) à 0° est évalué à 258px à 90°...
 
C'est fou ce truc, je pensais pas perdre autant de temps avec des betises pareils.

mood
Google
Posté le 13-12-2004 à 16:29:33  profilanswer
 


Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Programmation


  Autre


  [TrueType] Font proportionelle et determination de longueur ?

 

Hit Parade