國際字型列舉和選取範圍
在每個主要版本的 Windows 中,都會新增字型以支援國際語言和腳本。 如需自 Windows 2000 以來在每個 Windows 版本中新增的字型,以及其支援的腳本、區域和語言,請參閱 Windows 中的腳本和字型支援 。
EnumFontFamiliesEx
若要列舉應用程式中的國際字型,您可以使用 EnumFontFamiliesEx 函式。 EnumFontFamiliesEx 可讓您藉由傳入包含字型名稱和字元集資訊的 LOGFONT 結構的指標,來列舉字型名稱與字元集。 若要呼叫 EnumFontFamiliesEx,您可以指定字樣名稱或 charset,或者您可以要求任何可用的專案。 將 LOGFONT 的字樣名稱設定為 Null 會列舉所有字樣名稱。 將 charset 欄位設定為 DEFAULT_CHARSET 會列舉所有字元集。
請注意,charset 是對應至 Unicode 字元集的舊版概念。 目前沒有機制可列舉 Unicode 中任意腳本或字元範圍的字型。 EnumFontFamExProc傳遞的NEWTEXTMETRICEX結構包含FONTSIGNATURE結構,其中包含字型開發人員提供的詳細宣告,以取得字型支援哪些字碼頁和 Unicode 範圍。 若要更精確地判斷指定字型所支援的字元範圍,請在裝置內容中選取字型,並呼叫 GetFontUnicodeRanges。 請注意,此 API 不支援 Unicode 增補平面。
ChooseFont
您可以使用 ChooseFont 函式來顯示一般對話方塊,讓使用者根據 charset 選取國際字型。 您可以指定三個旗標的其中一個,根據 charset 來判斷哪些字型會顯示在 ChooseFont 對話方塊中: CF_SCRIPTSONLY、 CF_SELECTSCRIPT或 CF_NOSCRIPTSEL。
CF_SCRIPTSONLY旗標會指示 API 列出所有不是 Symbol 或 OEM 字元集的字型。
如果您想要只顯示涵蓋特定字元集的字型,您需要指定旗標 CF_SELECTSCRIPT。 呼叫ChooseFont之前,請先初始化LOGFONT結構的lfCharSet欄位。 如果您只想要指定 charset,請將 LOGFONT 結構的其他欄位設定為 Null。 若要讓 ChooseFont 查看 LOGFONT 結構,您也需要指定 CF_INITTOLOGFONTSTRUCT 旗標。
最後,如同 [字型] 對話方塊中的任何其他欄位,您可以選擇顯示空白腳本清單方塊。 如果使用者已醒目提示跨越數個字元集的不同字型,這項功能就很有用。 在此情況下,您會使用CF_NOSCRIPTSEL旗標呼叫ChooseFont。
從 Windows 7 開始, ChooseFont 會實作從字型選取清單隱藏字型的支援。 ChooseFont 只會列出顯示的字型,並在清單方塊中顯示字型時篩選掉隱藏的字型。 新增ChooseFont結構旗標成員中的其他旗標 (CF_INACTIVEFONTS) ,可讓您在字型清單中顯示所有已安裝的字型,與ChooseFont在 Windows 7 之前的行為相同。 如需ChooseFont函式 Windows 7 中行為差異的詳細資料,請參閱Windows 7 Application Quality Cookbook中的ChooseFont () Win32 Common Dialog。 如需 Windows 7 中的使用者體驗差異,請參閱 ChooseFont 函式和 CHOOSEFONT 結構。
請注意,charset 是對應至 Unicode 字元集的舊版概念。 目前沒有任何機制可根據 Unicode 腳本或字元範圍來篩選字型。
Windows 功能區中的字型控制項
Windows 7 引進 Windows 功能區,其中包含一組以字型選取為目標的控制項。 這些字型控制項支援新的 Windows 7 字型隱藏行為。 您可以使用這些字型控制項只列出顯示的字型,並允許使用者選取字型。
注意
在 Windows 7 之前的任何平臺上執行 Windows 功能區時,無法使用隱藏字型的支援。
相關主題