Ich arbeite gerade an der Erstellung eines Mini-Report-Generators, der die iText Bibliothek in der aktuellen Version 1.3 benutzt.
Nun habe ich ein kleines Problem: Ich sollte die Höhe eines Strings bestimmen können. Aber irgendwie funktioniert da nicht richtig. Ich benutze hierfür getAscentPoint(String text, float fontSize) und getDescentPoint(String text, float fontSize). Ein kleiner Auschnitt:
getAscentPoint gibt - soweit ich das verstanden habe - den Abstand von der Grundlinie der Schriftart bis zum oberen Rand des höchsten Zeichens (höchsten Zeichens nach von der Grundlinie nach oben) zurück. getDescentPoint gibt den Abstand von der Grundlinie der Schriftart bis zum untersten Rand der höchsten Zeichens (höchsten Zeichens nach von der Grundlinie nach unten) zurück.
Jetzt ist es jedoch so, das getDescentPoint immer negative Werte ergibt. Das liegt wohl an der Berechnung von Grundlinie nach unten. Deswegen ziehe ich diese ab. Außerdem habe ich in den Werten bisher kein System erkennen können. So gibt bwps. getAscentPoint für den Text "hg" einen anderen Rückgabewert, wie für "hgh". Die Höhe müsste hier jedoch die gleiche sein. Oder zieh der irgendwie ein Mittel über alle Höhen? Gleiches gilt für getDescentPoint.
Kann mir jemand helfen? Wie berechnet man die wirkliche Höhe eines Strings? Oder sind die Funktionen in iText buggy? :bahnhof:
Nun habe ich ein kleines Problem: Ich sollte die Höhe eines Strings bestimmen können. Aber irgendwie funktioniert da nicht richtig. Ich benutze hierfür getAscentPoint(String text, float fontSize) und getDescentPoint(String text, float fontSize). Ein kleiner Auschnitt:
Code:
public class PrintGraphics {
/* Die Schriftart. */
private BaseFont font;
/* Die Schriftgröße. */
private int fontSize;
public void getStringHeight(final String text) {
return this.font.getAscentPoint(text, this.fontSize) - this.font.getDescentPoint(text, this.fontSize);
}
}
getAscentPoint gibt - soweit ich das verstanden habe - den Abstand von der Grundlinie der Schriftart bis zum oberen Rand des höchsten Zeichens (höchsten Zeichens nach von der Grundlinie nach oben) zurück. getDescentPoint gibt den Abstand von der Grundlinie der Schriftart bis zum untersten Rand der höchsten Zeichens (höchsten Zeichens nach von der Grundlinie nach unten) zurück.
Jetzt ist es jedoch so, das getDescentPoint immer negative Werte ergibt. Das liegt wohl an der Berechnung von Grundlinie nach unten. Deswegen ziehe ich diese ab. Außerdem habe ich in den Werten bisher kein System erkennen können. So gibt bwps. getAscentPoint für den Text "hg" einen anderen Rückgabewert, wie für "hgh". Die Höhe müsste hier jedoch die gleiche sein. Oder zieh der irgendwie ein Mittel über alle Höhen? Gleiches gilt für getDescentPoint.
Kann mir jemand helfen? Wie berechnet man die wirkliche Höhe eines Strings? Oder sind die Funktionen in iText buggy? :bahnhof: