INFO: Berechnung der logischen Höhe und Größe einer Schriftart

Zusammenfassung

Um eine Schriftart unter Microsoft Windows Grafik nur der gewünschten Größe zu erstellen, muss eine Anwendung logische Höhe der Schriftart berechnen, da die Funktionen CreateFont() und CreateFontIndirect() mithilfe von logischen Einheiten Höhe an.


Um eine Schriftart für den Benutzer beschreiben berechnen eine Anwendung eine Schriftart Schriftgrad Höhe angegeben. Dieser Artikel enthält die Formeln müssen diese Berechnungen Zuordnungsmodus MM_TEXT. Sie müssen eine neue Formel zum Berechnen der Schriftart in einer anderen Zuordnungsmodus abgeleitet werden.

Weitere Informationen

Die logische Höhe zu berechnen, verwenden Sie folgende Formel:

                                Point Size * LOGPIXELSY
height = Internal Leading + -------------------------
72

LOGPIXELSY ist die Anzahl der Pixel in einem logischen Zoll auf dem Gerät. Dieser Wert wird durch Aufrufen der Funktion GetDeviceCaps() mit dem Index LOGPIXELSY abgerufen. Der Wert 72 ist von Bedeutung, da ein Zoll 72 Punkte enthält.


Das Problem bei dieser Berechnung ist es keine Methode zum Ermitteln der internen führende für die Schriftart, da es noch nicht erstellt wurde. Um dieses Problem zu umgehen, verwenden Sie die folgende Variante der Formel:

            -(Point Size * LOGPIXELSY)
height = --------------------------
72

Diese Formel kann auch wie folgt geschrieben werden:

   plf->lfHeight = -MulDiv (nPtSize, GetDeviceCaps (hdc, LOGPIXELSY), 72);
Eine Anwendung ruft die Funktionen CreateFont() oder CreateFontIndirect() und gibt einen negativen Wert für den Parameter Höhe, bietet Font Mapper größte Übereinstimmung für die Zeichenhöhe als die Höhe. Die Differenz zwischen der Höhe und Abstand ist das interne vorangestellte Leerzeichen wie im folgenden Diagramm veranschaulicht:

   ----------  <------------------------------
| | |- Internal Leading |
| | | | <--------- |
| | | | | |- Cell Height
| |---| | |- Character Height |
| | | | | |
| | | | | |
---------- <------------------------------

Die folgende Formel berechnet die Punktgröße der Schriftart:

                (Height - Internal Leading) * 72
Point Size = --------------------------------
LOGPIXELSY

Die Werte für Höhe und interne führende stammen aus den
TEXTMETRIC -Datenstruktur. LOGPIXELSY Wert ergibt sich aus der
GetDeviceCaps -Funktion wie oben beschrieben.


Um den berechneten Schriftgröße auf die nächste Ganzzahl. Die Windows
MulDiv() Funktion rundet das Ergebnis und ist eine hervorragende Wahl die vorherige Berechnung durchführen.
Eigenschaften

Artikelnummer: 74299 – Letzte Überarbeitung: 16.01.2017 – Revision: 1

Feedback