Ich habe einen Code geerbt, bei dem der Autor mit FreeType und OpenGL Text (nicht unbedingt in der Monospace-Schriftart) druckt.Wie bekomme ich die Textbreite in FreeType?
Ich muss gedruckte Textbreite berechnen, damit ich es richtig ausrichten kann. Hier
ist der Code, den er schrieb:
freetype::font_data font;
font.init(fontPath.c_str(), fontSize);
freetype::print(font, x, y, "%s", str.c_str());
Here ist die Freetype-Quelle mit print
Funktion.
konnte ich nicht glauben, von irgendeiner Weise durch Modifizieren print
Funktion die Textbreite zu erhalten, und ich versuchte init
Funktion der Schrift Bearbeitung (auch in der genannten Datei) face->glyph->metrics.width
zurückzukehren, aber es gab eine Ausnahme sagen, dass face->glyph
null ist. Aber ich sollte nicht einmal versuchen, Quellen von Bibliotheken zu bearbeiten.
Da ich keine Ahnung habe, wie man die Textbreite bekommt, überlege ich irgendwie, den Text zu drucken, die Breite dessen, was gedruckt wurde, zu drucken und etwas darüber zu drucken. Irgendwelche Ideen dazu vielleicht?
Soweit ich mich erinnern kann, sind Sie auf dem richtigen Weg. Sie müssen den Text drucken, dafür können Sie einen Offscreen-Puffer verwenden. Es sollte eine Möglichkeit geben, die Breite des Drucks in Pixeln zu erhalten. – Jay