Korzystając z pewnej czcionki, używam czcionki FontLayout języka Java, aby określić jej wznoszenie, zniżanie i prowadzenie. (Patrz poradnik FontLayout Javy here)Niepoprawne/brakujące dane czcionki w języku Java?
W moim konkretnym przypadku używam Arial Unicode MS, rozmiar czcionki 8. Za pomocą następującego kodu:
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 daje mi następujące wartości:
Ascent: 8.550781
Descent: 2.1679688
Leading: 0.0
Jak dotąd tak dobrze. Jednak jeśli użyję sumy tych wartości jako moich odstępów między wierszami dla różnych linii tekstu, różni się to nieco od odstępów między wierszami używanymi w OpenOffice, Microsoft Word, itd .: jest mniejsze. Podczas korzystania z domyślnego odstępu między wierszami Word i OO wydają się mieć odstęp między wierszami wynoszący około 13,7 pt (zamiast z 10.7 pt podobnie jak obliczałem dane Javy powyżej).
Każdy pomysł
- , dlaczego tak jest?
- czy mogę w jakiś sposób uzyskać dostęp do informacji o czcionce Word i OpenOffice wydają się uzyskiwać dostęp, co prowadzi do różnych odstępów między wierszami?
Czego próbowałem dotąd:
- dodając wszystkie glify do wektora glifów z
font.getNumGlyphs()
itd - wciąż te same wartości parametrów czcionki - użyciu wielu linii zgodnie z opisem here - każda linia, którą otrzymuję, ma te same metryki czcionek, co opisane powyżej.
- wykorzystujące
FontMetrics
'metody, takie jakgetLeading()
+1 To nie jest tak źle, jak się wydaje. – banjollity