Betűtípus létrehozása és kijelölése
A Betűtípus gyakori párbeszédpanel leegyszerűsíti a betűtípusok létrehozásának és kiválasztásának folyamatát. A CHOOSEFONT szerkezet inicializálásával és a CHOOSEFONT függvény meghívásával az alkalmazás ugyanazt a betűkijelölési felületet támogathatja, amely korábban több sornyi egyéni kódot igényelt. (További információ a Betűtípus gyakori párbeszédpanelről: Common Dialog Box Library.)
Kijelölés a felhasználó által
A legtöbb betűtípus-létrehozási és kijelölési művelet a felhasználót érinti. A szövegszerkesztő alkalmazások például lehetővé teszik, hogy a felhasználó egyedi betűtípusokat válasszon a címsorokhoz, lábjegyzetekhez és szövegtörzsekhez. Miután a felhasználó kiválaszt egy betűtípust a Betűtípus párbeszédpanelen, és lenyomja az OK gombot, a SELECTFONT függvény inicializálja a LOGFONT struktúra tagjait a kért betűtípus attribútumaival. Ha ezt a betűtípust szövegkimeneti műveletekhez szeretné használni, az alkalmazásnak először létre kell hoznia egy logikai betűtípust, majd ki kell választania a betűtípust az eszközkörnyezetében. A logikai betűtípus- az ideális betűtípus alkalmazás által megadott leírása. A fejlesztők a CreateFont vagy a CreateFontIndirect függvény meghívásával hozhatnak létre logikai betűtípust. Ebben az esetben az alkalmazás meghívja CreateFontIndirect, és a CHOOSEFONTáltal inicializált LOGFONT struktúrára mutató mutatót ad. Általánosságban elmondható, hogy hatékonyabb meghívni CreateFontIndirect, mert CreateFont több paramétert igényel, míg CreateFontIndirect csak egy mutatót igényel a LOGFONT .
Mielőtt egy alkalmazás ténylegesen elkezdené a szöveg logikai betűtípussal való rajzolását, meg kell találnia a legközelebbi egyezést az eszközön belül tárolt betűtípusokból és azokról a betűtípusokról, amelyek erőforrásait betöltötték az operációs rendszerbe. Az eszközön vagy az operációs rendszerben tárolt betűtípusokat fizikai betűtípusoknaknevezzük. A megadott logikai betűtípushoz leginkább illeszkedő fizikai betűtípus megkeresésének folyamatát betűleképezésnek nevezzük. Ez a folyamat akkor fordul elő, ha egy alkalmazás meghívja a SelectObject függvényt, és egy logikai betűtípust azonosító leírót ad meg. A betűtípus-leképezés egy belső algoritmussal történik, amely összehasonlítja a kért logikai betűtípus attribútumait a rendelkezésre álló fizikai betűtípusok attribútumaival. Amikor a betűtípus-leképező algoritmus befejezi a keresést, és meghatározza a legközelebbi lehetséges egyezést, a SelectObject függvény visszatér, és az alkalmazás elkezdhet szöveget rajzolni az új betűtípussal.
A SetMapperFlags függvény azt határozza meg, hogy a betűtípus-leképező algoritmus csak a fizikai eszköznek megfelelő méretarányú fizikai betűtípusokat keres-e. Az eszköz méretaránya az eszközön lévő képpont szélessége és magassága által létrehozott arány.
A rendszer betűtípusa (más néven rendszerhéj vagy alapértelmezett betűtípus) a címsorokban, menükben és párbeszédpaneleken lévő szöveghez használt betűtípus.
Speciális betűtípus-kiválasztási szempontok
Bár a legtöbb betűtípus-kijelölési művelet a felhasználót is érinti, vannak olyan esetek, ahol ez nem igaz. Előfordulhat például, hogy egy fejlesztő egyedi betűtípust szeretne használni egy alkalmazásban, hogy szöveget rajzoljon egy vezérlőablakban. A megfelelő betűtípus kiválasztásához az alkalmazásnak képesnek kell lennie meghatározni a rendelkezésre álló betűtípusokat, létre kell hoznia egy logikai betűtípust, amely leírja az elérhető betűtípusok egyikét, majd a megfelelő eszközkörnyezetbe kell kiválasztania a betűtípust.
Az alkalmazások az EnumFonts vagy EnumFontFamilies függvények használatával számba tudják sorolni a rendelkezésre álló betűtípusokat. EnumFontFamilies használata ajánlott, mert a családnévhez társított összes stílust számba adja. Ez hasznos lehet a sok vagy szokatlan stílust tartalmazó betűtípusok és a nemzetközi határokon átnyúló betűtípusok esetében.
Miután egy alkalmazás számbaotta a rendelkezésre álló betűtípusokat, és megtalálta a megfelelő egyezést, a betűtípus-számbavételi függvény által visszaadott értékekkel inicializálni kell a LOGFONT szerkezet tagjait. Ezután meghívhatja a CreateFontIndirect függvényt, amely mutatót ad neki az inicializált LOGFONT struktúrának. Ha a CreateFontIndirect függvény sikeres, az alkalmazás a SelectObject függvény meghívásával kiválaszthatja a logikai betűtípust. A LOGFONT struktúra tagjainak inicializálásakor mindenképpen adjon meg egy adott karakterkészletet az lfCharSet tagban. Ez a tag fontos a betűtípus-leképezési folyamatban, és az eredmények inkonzisztensek lesznek, ha a tag inicializálása nem megfelelő. Ha a LOGFONT struktúrájának lfFaceName tagjában ad meg betűtípusnevet, győződjön meg arról, hogy az lfCharSet érték megegyezik az lfFaceName. Ha például olyan betűtípust szeretne választani, mint az MS Mincho, lfCharSet az előre definiált értékre kell állítania SHIFTJIS_CHARSET.
Számos kelet-ázsiai nyelv betűtípusának két betűképe van: egy angol és egy honosított név. CreateFont, CreateFontIndirectés CreateFontIndirectEx a nyelvnek megfelelő rendszerbeállítás honosított betűképnevét veszik fel, de az összes többi rendszerbeállításhoz az angol betűképnevet veszik. A legjobb módszer az egyik név kipróbálása, sikertelenség esetén pedig a másik. Vegye figyelembe, hogy EnumFonts, EnumFontFamiliesés EnumFontFamiliesEx az angol betűtípus nevét adja vissza, ha a rendszer területi beállítása nem felel meg a betűtípus nyelvének. A Windows 2000-től kezdve ez már nem jelent problémát, mivel a CreateFont, a CreateFontIndirectés a CreateFontIndirectExbetűtípus-leképezője a területi beállításoktól függetlenül felismeri a betűtípus nevét.