Java: eine schriftart mit einer bestimmten Höhe in Pixel
Es leicht zu bestimmen, wird die gerenderte Höhe einer schriftart, die mit FontMetrics
, aber was ist mit den anderen zurecht? Wie bekomme ich eine schriftart, die passen in eine bestimmte Höhe in Pixeln?
"Gib mir
Verdana
in einer Größe von 30 Pixel in der Höhe von Oberlänge zu Unterlänge."
Wie frag ich Java dafür?
- einfach nur neugierig - was wollen Sie tun?
- Versuchen zu optimieren sind, ein text-layout, um die beste Nutzung der verfügbaren display-Größe
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jen,
Ich glaube nicht, dass es eine "direkte" Weg, eine schriftart zu finden, die von der Höhe; nur eine indirekte Art und Weise..., indem die Schleife durch die Größen, und die Prüfung der Höhe von jeweils <= erforderliche Höhe.
Wenn Sie dies tun, einmal, nur eine Schleife... wenn Sie habe tut es "on the fly" tun, dann wird eine binäre Suche, es werde schneller sein.
Cheers. Keith.
Ich weiß, das ist eine sehr alte Frage, aber könnte jemand noch zu finden:
Die Schrifthöhe in Java (und vielen anderen Orten) ist gegeben in "typografische Punkte", die definiert werden als etwa 1/72nd von einem Zoll.
Zur Berechnung der benötigten Punkte für ein bestimmtes pixel Höhe, sollten Sie in der Lage sein, die folgenden:
Ich noch nicht getestet, ausgiebig noch, aber es scheint zu funktionieren für die Monitore, die ich verwendet habe. Ich werde berichten, wenn ich jemals einen Fall, wo es nicht funktioniert.
Für die standard-system-fonts, die ich verwendet habe, dieses mit, dadurch wird die Höhe der Großbuchstaben (also der Anstieg) an die angegebene Pixelgröße. Wenn Sie benötigen, um den Aufstieg+Abstieg, um die pixel-Größe, können Sie die richtigen Wert über die FontMetrics:
Natürlich, die tatsächlichen pixel-Höhe von einigen bestimmten Buchstaben hängen die Buchstaben und die schriftart, die verwendet wird, also, wenn Sie wollen, stellen Sie sicher, dass Sie Ihre "H" ist einige genaue Anzahl von Pixeln, könnten Sie immer noch wollen, verwenden Sie die trial-and-error-Methoden erwähnt, die in den anderen Antworten. Nur im Kopf behalten, dass, wenn Sie diese Methoden verwenden, um die Größe, die für jede spezifische text, den Sie anzeigen möchten (wie @Bob vorgeschlagen), könnten Sie am Ende mit einem random-font-size-Chaos auf Ihrem Bildschirm, wo ein text wie das "ass" viel größer Zeichen als "Tag". Um dies zu vermeiden, würde ich die wählen Sie eine bestimmte Buchstaben-oder Buchstaben-Sequenz ("T" oder "Tg" oder sowas) und fix, dass man auf Ihre pixel Höhe einmal und verwenden Sie dann die schriftart, die Größe, die Sie bekommen von überall.
Ich bin mir nicht bewusst einen Weg, um eine Schrift, die von Ihrer tatsächlichen Höhe in Pixel. Es hängt vom Kontext ab, es ist in so es gibt wohl keinen kürzeren Weg, als Probe für die beste übereinstimmung. Es sollte ziemlich schnell der Blick für die Größen nach oben oder unten von der Höhe entwickelt. Hier ist ein Beispiel für die Methode, die das tut:
WhiteFang34 code ist nützlich in Kombination mit der folgenden Methode gibt die tatsächliche Höhe einer bestimmten Zeichenfolge. Vielleicht ist es ein bisschen langsam ist für Echtzeit-rendering, besonders für große Schriftarten/- Zeichenfolgen, und ich bin sicher, es kann weiter optimiert werden, aber für jetzt, es erfüllt meine Bedürfnisse und ist schnell genug für die Ausführung in einer back-end-Prozess.