INFO: Berekening van de logische hoogte en de puntgrootte van het lettertype

Samenvatting

Voor het maken van een lettertype in de grafische omgeving van Microsoft Windows de vereiste puntgrootte gegeven, moet een toepassing de logische hoogte van het lettertype berekenen omdat de functies CreateFont() en CreateFontIndirect() logische eenheden gebruiken om hoogte te geven.


Beschrijving van een lettertype dat de gebruiker kan een toepassing de tekengrootte van het lettertype, gegeven de hoogte berekenen. Dit artikel bevat de formules voor het uitvoeren van deze berekeningen voor de toewijzing van MM_TEXT vereist. U moet een nieuwe vergelijking voor het berekenen van de grootte van het lettertype in de modus voor een andere toewijzing worden afgeleid.

Meer informatie

Met de volgende formule berekent u de logische hoogte:

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

LOGPIXELSY is het aantal pixels in een logische inch op het apparaat. Deze waarde wordt verkregen door het aanroepen van de functie GetDeviceCaps() met de LOGPIXELSY-index. De waarde van 72 is van belang omdat één inch 72 punten bevat.


Het probleem met deze berekening is dat er geen methode voor het bepalen van de interne leiden voor het lettertype omdat het nog niet is gemaakt. U kunt dit probleem omzeilen, gebruikt u de volgende variatie van de formule:

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

Deze formule kan ook geschreven worden als volgt:

   plf->lfHeight = -MulDiv (nPtSize, GetDeviceCaps (hdc, LOGPIXELSY), 72);
Wanneer een toepassing de functies voor CreateFont() of CreateFontIndirect() worden en geeft een negatieve waarde voor de parameter height, biedt het lettertype mapper de beste overeenkomst voor de tekenhoogte in plaats van op de celhoogte. Het verschil tussen de Celhoogte en de tekenhoogte is de interne voorloopspaties, zoals blijkt uit het volgende diagram:

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

De volgende formule berekent de puntgrootte van het lettertype:

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

De waarden voor hoogte en interne toonaangevende worden verkregen van de
TEXTMETRIC -gegevensstructuur. De waarde LOGPIXELSY wordt verkregen uit de
GetDeviceCaps functie als hierboven beschreven.


Ronde de berekende tekengrootte op het dichtstbijzijnde gehele getal. De vensters
De functie MulDiv() wordt het resultaat afgerond en is een uitstekende keuze voor het uitvoeren van de vorige berekening.
Eigenschappen

Artikel-id: 74299 - Laatst bijgewerkt: 14 feb. 2017 - Revisie: 1

Feedback