Bonjour,
Voici un probl�me que mes faibles connaissances en la mati�re ne me permettent pas de r�soudre.
Grace et GraceGTK utilisent la biblioth�que T1lib pour transformer des polices de caract�res en glyphes trac�s sur le dessin sous forme de bitmaps.
J'essaye de moderniser GraceGTK et d'utiliser la fonction cairo_show_text(), ce qui implique l'emploi de FreeType2 au lieu de T1lib, mais je souhaite garder les m�mes fichiers de d�finition des polices.
Le sch�ma est le suivant:
Cela se passe en g�n�ral correctement sauf pour certaines polices comme par exemple Symbol (fichier joins s050000l.pfb).
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 FT_Face ft_face; error = FT_New_Face (library ,"s050000l.pfb" ,0 ,&ft_face); ... cairo_font_face_t *cr_face; cr_face = cairo_ft_font_face_create_for_ft_face (*ft_face ,CAIRO_HINT_METRICS_DEFAULT); cairo_set_font_face (cr ,cr_face); ... cairo_show_text (cr ,"the_string");
Quand on regarde le contenu de ce fichier on voit par exemple la ligne
dans ce qui ressemble fort au vecteur d'encodage d�crit dans la doc de T1lib.
Code : S�lectionner tout - Visualiser dans une fen�tre � part dup 97 /alpha put
Avec T1lib le caract�re a (ASCII 97) est bien dessin� comme attendu: la lettre grecque alpha.
Ce n'est pas le cas avec cairo_show_text(): rien de visible n'est affich�.
En poussant plus avant, j'ai constat� que ft_face->num_charmaps == 2, donc qu'il existe deux cartes, la premi�re �tant Unicode comme indiqu� dans la doc de FT_CharMap.
J'ai donc rajout� une ligne
et v�rifi� que cette deuxi�me carte est bien celle s�lectionn�e par FreeType,
Code : S�lectionner tout - Visualiser dans une fen�tre � part FT_Select_Charmap (ft_face ,FT_ENCODING_ADOBE_CUSTOM)
mais les caract�res ne sont toujours pas dessin�s comme souhait�s.
On voit que:
printf ("Char_Index = %d\n" ,FT_Get_Char_Index (*ft_face ,97));
=> imprime 65 (= 97 - 32), ce qi ne correspond pas au /alpha de la carte de la T1lib.
Remarque: les autres FT_ENCODING_ADOBE_xxx donnent des erreurs.
Remarque: je ne souhaite pas utiliser Pango car Grace utilise son propre syst�me de s�quences d'�chappement pour faire des indice, exposants,... et que je veux maintenir une compatibilit� ascendante.
Je joins un petit programme de d�monstration avec 2 polices (Roman et Symbol).
Toute aide sera la bienvenue.
Partager