En utilisant une certaine police, j'utilise FontLayout de Java pour déterminer sa montée, sa descente et sa direction. (Voir FontLayout Java tutoriel here)Métriques de polices incorrectes/manquantes dans Java?
Dans mon cas particulier, je suis en utilisant Arial Unicode MS, taille de la police 8. En utilisant le code suivant:
Font font = new Font("Arial Unicode MS", 0, 8);
TextLayout layout = new TextLayout("Pp", font,
new FontRenderContext(null, true, true));
System.out.println("Ascent: "+layout.getAscent());
System.out.println("Descent: "+layout.getDescent());
System.out.println("Leading: "+layout.getLeading());
Java me donne les valeurs suivantes:
Ascent: 8.550781
Descent: 2.1679688
Leading: 0.0
Jusqu'ici tout va bien. Cependant, si j'utilise la somme de ces valeurs comme interligne pour différentes lignes de texte, cela diffère beaucoup de l'interligne utilisé dans OpenOffice, Microsoft Word, etc.: il est plus petit. En utilisant l'interligne simple par défaut, Word et OO semblent avoir un interligne d'environ 13.7 pt (au lieu de 10.7 pt comme j'ai calculé en utilisant les métriques de polices de Java ci-dessus).
Toute idée
- pourquoi est-ce? Est-ce que je peux accéder d'une manière ou d'une autre aux informations de police que Word et OpenOffice semblent accéder qui conduit à cet interlignage différent?
choses que j'ai essayé jusqu'à présent:
- ajouter tous les glyphes à un vecteur de glyphe avec
font.getNumGlyphs()
etc. - toujours obtenir les mêmes mesures de police valeurs - en utilisant plusieurs lignes comme décrit here - chaque ligne que je reçois a les mêmes mesures de police que celles décrites ci-dessus.
- utilisant
FontMetrics
'des méthodes telles quegetLeading()
+1 Ce n'est pas aussi faux qu'il y paraît. – banjollity