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

BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.

De Engelstalige versie van dit artikel is de volgende: 74299
Samenvatting
Maken van een lettertype in de grafische omgeving van Microsoft Windows opgegeven alleende vereiste puntgrootte een toepassing moet de logische hoogte berekenenhet lettertype omdat de functies CreateFont() en CreateFontIndirect() logische eenheden gebruiken om de hoogte opgeven.

Beschrijving van een lettertype voor de gebruiker kunt een toepassing een lettertype punt berekenengrootte, gezien de hoogte. In dit artikel worden de formules vereistDeze berekeningen voor de modus MM_TEXT toewijzen. U moeteen nieuwe vergelijking voor het berekenen van de grootte van het lettertype in een andere toewijzing modus 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 deapparaat. Deze waarde wordt verkregen door het aanroepen van de functie GetDeviceCaps() met de LOGPIXELSY-index. De waarde van 72 is belangrijk omdat één inch 72 punten bevat.

Het probleem met deze berekening is dat er geen methode om te bepalende interne toonaangevende voor het lettertype omdat nog niet is gemaakt. NaarDeze problemen 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 CreateFont() of CreateFontIndirect() -functies aanroept en een negatieve voor de parameter height waarde, biedt het lettertype mapper de dichtstbijzijnde overeenkomst in voor de tekenhoogte van het in plaats van op de celhoogte van de. Het verschil tussen de celhoogte van de en de tekenhoogte van het is de interne voorloopspaties, zoals aangetoond door het volgende diagram:
   ----------  <------------------------------   |        |           |- Internal Leading  |   | |   |  |  <---------                    |   | |   |  |        |                       |- Cell Height   | |---|  |        |- Character Height     |   | |   |  |        |                       |   | |   |  |        |                       |   ----------  <------------------------------				
De volgende formule berekent de puntgrootte van een lettertype:
                (Height - Internal Leading) * 72   Point Size = --------------------------------                           LOGPIXELSY				
De waarden voor hoogte en interne toonaangevende zijn verkregen uit deTEXTMETRIC -gegevensstructuur. De waarde LOGPIXELSY wordt verkregen uit deGetDeviceCaps -functie als hierboven beschreven.

Ronde de berekende tekengrootte op het dichtstbijzijnde gehele getal. De WindowsDe functie MulDiv() wordt het resultaat afgerond en is een uitstekende keuze voorde vorige berekeningen uitvoeren.
3,00 3.10 TrueType 3.50 4.00 win16sdk

Waarschuwing: dit artikel is automatisch vertaald

Eigenschappen

Artikel-id: 74299 - Laatst bijgewerkt: 06/09/2012 10:33:00 - Revisie: 4.0

Microsoft Windows Software Development Kit 3.1, Microsoft Win32-API

  • kbinfo kbmt KB74299 KbMtnl
Feedback