cHeight是字體的高度。
函數(shù)原型:HFONT CreateFont(int nHeight, int nWidth, int nEscapement, int nOrientation, int fnWeight, DWORD fdwltalic, DWORD fdwUnderline, DWORD fdwStrikeOut, DWORD fdwCharSet, DWORD fdwOutputPrecision, DWORD fdwClipPrecision, DWORD fdwQuality, DWORD fdwPitchAndFamily, LPCTSTR lpszFace); 參數(shù): nHeight:指定字體的字符單元或字符的邏輯單位高度,字符的高度值(也被稱為em高度)是指字符單元高度值減去內(nèi)部標(biāo)頭值。字體映射器以如下方式解釋nHeight指定的值,各值含義 為: >0:字體映射器轉(zhuǎn)換這個值以設(shè)備單位,并和已有字體的單元高度相匹配。 0:字體映射器轉(zhuǎn)換在選擇匹配時用一個缺省的高度值。 <0:字體映射器轉(zhuǎn)換這個值到設(shè)備單位,并將它的絕對值和已有字體的字符高度相匹配。 比較所有的高度,字體映射器選擇不超過要求大小的最大字體。 此映射當(dāng)字體第一次被使用時發(fā)生。 對于MM_TEXT映射方式,可以用下面的公式為一種指定了點大小的字體確定高度: nHeight=-MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY),72) nWidth:指定所要求字體的字符的邏輯單位的平均寬度。如果此值為0,字體映射器選擇一個closest match值,closest match值是由比較當(dāng)前設(shè)備的特征系數(shù)與可使用字體的數(shù)字化特征 系數(shù)之差的絕對值而確定的。 nEscapement:指定移位向量和設(shè)備X軸之間的一個角度,以十分之一度為單位。移位向量平行于正文行的基線。 Windows NT:當(dāng)圖形設(shè)備設(shè)置為GM_ADVANCED時,可以不依賴字符串的字符的定位角而指定字符串的移位角。 當(dāng)圖形模式被設(shè)置為GM_COMPATIBLE時,nEscapement同時指定移位角和定位角,可以設(shè)置nEscapement和nOrientation為相同的值。 Windows 95:nEscapement同時指定移位角和定位角,可設(shè)置nEscapement和nOrientation為相同的值。 nOrientation:指定每個字符的基線和設(shè)備X軸之間的角度。 FnWeight:在0到1000之間指定字體的權(quán)值,如400表示標(biāo)準(zhǔn)體,700表示黑(粗)體,如果此值為0,則使用缺省的權(quán)值。 為方便定義,可使用如下值: FW_DONTCARE:0;FW_THIN;100;FW_EXTRALIGHT;200;FW_ULTRALIGHT;200;FW_LIGHT;300; FW_NORMAL:400;FW_REGULAR;400;FW_MEDIUM;500;FW_SEMIBOLD;600;FW_DEMIBOLD;600; FW_BOLD:700;FW_EXTRABOLD;800;FW_ULTRABOLD;800;FW_HEAVY;900;FW_BLACK;900。 fdwItalic:如果設(shè)置為TRUE則指定斜體。 fdwUnderline:如果設(shè)置為TRUE,則指定加下劃線的字全。 fdwStrikeOut:如果設(shè)置為TRUE,則strikeout指定字體。 fdwCharSet:指定字符集,下列值是預(yù)定義的: ANSI_CHARSET; BALTIC_CHARSET; CHINESEBIG5_CHARSET; DEFAULT_CHARSET; EASTEUROPE_CHARSET; GB2312_CHARSET; GREEK_CHARSET; HANGUL_CHARSET; MAC_CHARSET; OEM_CHARSET; RUSSIAN_CHARSET; SHIFTJIS_CHARSET; SYMBOL_CHARSET; TURKISH_CHARSET。 韓國Windows:JOHAB_CHARSET; 中東地區(qū)Windows:HEBREW_CHARSSET; ARABIC_CHARSET 泰國Windows:THAI_CHARSET OEM_CHARSET指定的字符集與操作系統(tǒng)有關(guān)。 可以使用DEFAULT_CHARSET值來允許字體的名字和大小來充分描述邏輯字體。如果指定的字體名不存在,任何字符集的字體都可以替代指定的字體,所以應(yīng)該小心地用 DEFAULT_CHARSET來避免不期望的結(jié)果出現(xiàn)。 操作系統(tǒng)中存在其他字符集的字體。如果一個應(yīng)用程序用一種未知字符集的字體,則應(yīng)用程序不會試圖去翻譯或解釋用那種字體寫出來的字符串。 在字體映射過程中此參數(shù)很重要。為確保獲得一致的結(jié)果,指定一個特殊的字符集。如果在lpszFace參數(shù)中指定了一個字體名,確定fdwCharSet值與由lpszFace指定的字體字符集是否匹 配。 fdwOutputPrecision:指定輸出精度,輸出精度義輸出與要求的字體高度、寬度、字符定位、移位、字符間距和字符類型的匹配程序,它可取下列值之一: OUT_CHARACTER_PRECIS;未用。 OUT_DEFAULT_PRECIS:指定缺省的字體映射器狀態(tài)。 OUT_DEVICE_PRECIS:指示字體映射器在當(dāng)系統(tǒng)里有多種字體使用同一個字體使用同一個名字時選擇一種設(shè)備字體。 OUT_OUTLINE_PRCIS:在Windows NT中此值指示字體映射器從TrueType和其他基于邊框的字體中選擇。 OUT_RASTER_PRECIS:指示字體映射器在當(dāng)系統(tǒng)里有多種字體使用同一個名字時選擇一種光柵字體。 OUT_STRING_PRECIS:此值沒有被字全映射器使用,但是當(dāng)掃描字體被列舉時作為返回值。 OUT_STROKE_PRECIS:在Windows NT中此值沒有被字體映射器使用,但是當(dāng)TrueType字體、其他基于邊框的字體和向量字體被列舉時,作為返回值。 Windows 95:此值沒有被字體映射器使用,但是當(dāng)TrueType字體或向量字體被列舉時,作為返回值。 OUT_TT_ONLY_PRECIS:指示字體映射器僅從TrueType字體中選擇,如果系統(tǒng)中沒有安裝TrueType字體,則字體映射返回缺省狀態(tài)。、 OUT_TT_PRECIS:指示字體映射器在當(dāng)系統(tǒng)里有多種同名的字體時選擇一種TrueType字體。 當(dāng)操作系統(tǒng)含有多種與指定名字同名的字體時,應(yīng)用程序可以使用OUT_DEVICE_PRECIS,OUT_RASTER_PRECIS和OUT_TT_PRECIS值來控制字體映射器如何選擇一種字體,例如, 如果操作系統(tǒng)含有名字Symbol的光柵和TrueType兩種字體,指定OUT_TT_PRECIS使字體映射器選擇TrueType方式。指定OUT_TT_ONLY_PRECIS使字體映射器選擇一種TrueType字體, 盡管這會給TrueType字體換一個名字。 fdwClipPrecision;指定裁剪精度,裁剪精度定義如何裁剪部分超出裁剪區(qū)的字符,它可取一個或多個下列值: CLIP_DEFAULT_PRECIS:指定缺省裁剪狀態(tài)。CLIP_CHARACTER_PRECIS:未用。 CLIP_STROKE_PRECIS:未被字體映射器使用,但是當(dāng)光柵字體、向量字體或TrueType字體被列舉時作為返回值。在Windows環(huán)境下,為保證兼容性,當(dāng)列舉字體時這個值總被返回。 CLIP_MASK:未用。CLIP_EMBEDDED:要使用嵌入式只讀字體必須使用此標(biāo)志。 CLIP_LH_ANGLES:當(dāng)此值被使用時,所有字體的旋轉(zhuǎn)依賴于坐標(biāo)系統(tǒng)的定位是朝左的還是朝右的。 如果未使用此值,設(shè)備字體總是逆時針方向旋轉(zhuǎn),但其他字體的旋轉(zhuǎn)依賴于坐標(biāo)系統(tǒng)的定向。要得到更多關(guān)于坐標(biāo)系統(tǒng)定向的信息,參見參數(shù)orientation。 CLIP_TT_ALWAYS:未用。 fdwQuality:指向輸出質(zhì)量,輸出質(zhì)量定義GDI如何仔細(xì)地將邏輯字體屬性與實際物理字體屬性相匹配。它可取下列值之一: DEFAULT_QUALITY:字體的外觀不重要。 DRAFT_QUALITY:字體外觀的重要性次于使用PROOF_QUALITY時,對GDI光柵字體,縮放比例是活動的,這意味著多種字體大小可供選擇,但質(zhì)量可能不高,如果有必要,粗體、斜體 、下劃線、strikeout字體可被綜合起來使用。 PROOF_QUALITY:字符質(zhì)量比精確匹配邏輯字體字體屬性更重要。對GDI掃描字體,縮放比例是活動的,并選擇最接近的大小。盡管當(dāng)使用PROOF_QUALITY時,選擇字體大小并不完 全匹配,但字體的質(zhì)量很高,并沒有外觀上的變形。如果有必要,粗體、斜體、下劃線、strikeout字體可被綜合起來使用。 fdwPitchAndFamily:指定字體間距和字體族,低端二位指定字體的字符間距,它可取下列值之一: DEFAULT_PITCH;FIXED_PITCH; VARIABLE_PITCH 高端四位指定字體族,可取下列值之一: FF_DECORATIVE:新奇的字體,如老式英語(Old English)。FF_DONTCARE:不關(guān)心或不知道。 FF_MDERN:筆劃寬度固定的字體,有或者無襯線。如Pica、Elite和Courier New。 FF_ROMAN:筆劃寬度變動的字體,有襯線。如MS Serif。 FF_SCRIPT:設(shè)計成看上去象手寫體的字體。如Script和Cursive。 FF_SWISS:筆劃寬度變動的字體,無斜線。如MS Sans Serif。 應(yīng)用程序可以用運算符OR將字符間距和字體族組合起來給fdwPitchAndFamily賦值。 字體族描述一種字體的普通外觀,當(dāng)所有的精確字樣都不能使用時,可用它們來指定字體。 lpszface:指向指定字體的字樣名的、以/0結(jié)束的字符串指針,字符串的長度不能超過32個字符(包括字符/0),函數(shù)EnumFontFamilies可用來列舉所有當(dāng)前可用字體的字樣名。 如果lpszFace為NULL或指向一個空串,GDI使用能匹配其他屬性的第一種字體。 返回值:如果函數(shù)調(diào)用成功,返回值是一種邏輯字體句柄;如果函數(shù)調(diào)用失敗,返回值為NULL。 Windows NT:若想獲得更多錯誤信息,請調(diào)用GetLastError函數(shù)。 備注:當(dāng)一種字體不再使用時,可用DeleteObject來刪除。 為保護(hù)那些提供字體給Windows和Windows NT的賣主的版權(quán),基于Win32的應(yīng)用程序總是列出所選擇字體的準(zhǔn)確名字。由于不同的系統(tǒng)會使用不同的字體,不要認(rèn)為所選擇字體就是要 求的字體。例如,如果要求名叫Palatino的字體,但系統(tǒng)沒提供那樣一種字體,則字體映射器將會以一種不同名但有相似屬性的字體取而代之。系統(tǒng)總是將用戶選擇的字體名報告出來。 速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;頭文件:wingdi.h;庫文件:gdi32.lib;Unicode:在Windows NT環(huán)境下以Unicode和ANSI 兩種方式實現(xiàn)。 |
|