共用方式為


使用 MS Shell Dlg 和 MS Shell Dlg 2

Windows 適用於多種語言的當地語系化版本。 不過,英文版也可以用來執行以英文以外的語言撰寫的應用程式。 即使用於這些語言的腳本不同,也是如此,就像以希臘文或日文撰寫應用程式一樣。 這些應用程式需要具有對話框、圖示和公用程式的使用者介面,以提供應用程式語言中的資訊,這可能與目前 Windows 使用者介面中使用的語言不同。

為使用者介面選取字型時發生問題十分明顯。 例如,系統字型,也稱為 Shell 或預設字型,在英文(美國)Windows 98 中是 MS Sans Serif,而在希臘文(希臘)Windows 98 中則是 MS Sans Serif Greek。 對於日語版 Windows 98,介面字型為 MS UI Gothic。 這些字元集無法直接對應到彼此。 將 MS Sans Serif 取代為 MS Sans Serif 希臘文時,當地區設定設定為希臘文 (希臘) 時,不允許現有的應用程式充分執行,或在系統功能表、對話框和編輯控件中顯示希臘文字符。

Windows 使用 MS Shell Dlg 和 MS Shell Dlg 2 邏輯字型來解決此問題,以允許選取適當的字型來顯示腳本。 本節說明使用邏輯字型來實作對話框、功能表等的數個程式設計考慮,這些考慮適用於在所有支援的 Windows作系統和所有語言上都顯示良好的彈性使用者介面。 如需詳細資訊,請參閱 字型建立和選取範圍。 另請參閱 多語系使用者介面,以瞭解如何使用多語系使用者介面(MUI)技術來建立多語系應用程式的使用者介面。

關於邏輯字型

MS Shell Dlg 和 MS Shell Dlg 2 邏輯字型基本上是用於對應的臉部名稱,可支援地區設定/文化特性未包含在代碼頁 1252 中的字元、美國和西歐的 Windows 字元集。 MS Shell Dlg 會對應至與目前文化特性/地區設定相關聯的預設系統字型,並支援經典 Windows 桌面風格。 MS Shell Dlg 2 字體名稱是在 Windows 2000 中引進的,以支援 Windows 2000 所引進的介面樣式。

例如,如果您的應用程式針對其對話框使用 MS Shell Dlg 或 MS Shell Dlg 2,則為應用程式建立希臘文語言資源的當地語系化小組可以專注於翻譯文字。 他們不必擔心 MS Sans Serif 與 MS Sans Serif 希臘之間的區別等問題。

注意

MS Shell Dlg 和 MS Shell Dlg 2 所產生的字型在不同的 Windows 版本上不同。 因此,您應該確定您的使用者介面元素在所有平臺上都顯示良好。

 

處理 Hard-Coded 字型名稱

使用 Unicode 可讓應用程式處理數千個不同的字元,但大部分字型並未涵蓋所有的 Unicode 字元集。 您的應用程式不應該硬式編碼字型名稱。 其中一個原因是,硬編碼字型名稱後只能顯示某語言的字元,而無法顯示其他語言的字元,這會導致第二種語言的所有本地化文字顯示不正確。 非硬式編碼字型名稱的另一個原因是,在顯示應用程式文字的作系統上可能不會載入所需的字型。

最佳的方式是將字型名稱視作可當地語化的資源。 針對任何語言,使用邏輯字型可解決在 Windows NT 或 Windows 2000 上使用任何語言執行介面的問題。 將字型名稱設定為可本地化的資源,可讓您的當地語系化工具變更當地語系化使用者介面的字型。

處理 Hard-Coded 字型大小

有些腳本很複雜,而且需要大量的圖元才能正確顯示。 例如,大部分英文字符會顯示在5x7方格上,但日文字元至少需要16x16方格才能清楚看到。 雖然中文需要 24x24 格子,但泰文只需要 8 像素的寬度,而高度至少需要 22 個像素。 很容易理解,某些字元可能在小型字型下不易辨識。

您的應用程式使用者介面應將字型大小視為可本地化的資源。 針對任何語言,使用邏輯字型可解決在 Windows NT 或 Windows 2000 上使用任何語言執行介面的問題。 將字型大小設定為可本地化的資源,可讓您的當地語系化工具變更當地語系化使用者介面的字型。

對應邏輯字型

每個邏輯字型都會由登錄中的項目對應到目前使用中地區設定的適當殼層字型。 使用其中一個邏輯字型時,Windows 會在運行時間切換至目前選取的地區設定字型。 此操作允許正確顯示英文(美國)Windows 使用者介面,以及不在代碼頁 1252 中的字元。 因此,目前寄送本地化的應用程式可以在英文(美國)版本的 Windows 上執行,而不需要修改。

每個 Windows 計算機都會根據非 Unicode 程式定義的語言,將 MS Shell Dlg 和 MS Shell Dlg 2 對應至適當的實體字型,如 NLS 術語中所述。 實際對應會儲存在登錄機碼 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\FontSubstitutes中。

Windows Me/98/95 上的字型對應

MS Shell Dlg 通常會對應至 MS Sans Serif 的代碼頁特定版本。

Windows NT 4.0 上的字型對應

MS Shell Dlg 對應於適用於西歐和中歐地區的 MS Sans Serif 字體,希臘語、土耳其語、波羅的語系及使用斯拉夫字母的語言;日文對應到 MS UI 哥德體;韓文對應到 Gulim;簡體中文對應到 SimSun;繁體中文對應到新細明體等。

Windows 2000、Windows XP、Windows Server 2003、Windows Vista 和 Windows 7 上的字型對應

這兩個邏輯字型都會對應至 Unicode 型 TrueType 字型。 如果安裝語言不是日文,MS Shell Dlg 會使用 Microsoft Sans Serif (不同於 MS Sans Serif)。 如果安裝語言是日文,MS Shell Dlg 會對應至 MS UI 哥特式。

在 Windows XP MUI 系統上,只有在系統地區設定和 UI 語言設為日文時,MS Shell Dlg 才會對應至 MS UI 哥特式。 否則,MS Shell Dlg 會對應至 Microsoft Sans Serif。

在 Windows Vista 和 Windows 7 上,如果電腦預設 UI 語言設定為日文(不論安裝語言為何),MS Shell Dlg 會對應至 MS UI 哥特式。 如果計算機預設UI語言設定為日文以外的語言,MS Shell Dlg 會對應至 Microsoft Sans Serif。

MS Shell Dlg 2 只會使用Tahoma字型,不論語言為何。 相較於 Microsoft Sans Serif,Tahoma 的主要優點在於它擁有原生的粗體字體樣式。 其主要缺點是,較舊的作業系統可能尚未安裝,可能還會使用較不吸引人的字型。

未在Tahoma或 Microsoft Sans Serif 中實作的字元,可以在使用者介面中用於顯示文字的其他 Windows 字型中實作。 根據用來顯示文字的控件或 API,系統可能會使用各種機制,例如 字型連結,自動選取這類字型來顯示這些字元。

應用程式可以直接使用 Microsoft Sans Serif 或 Tahoma,並省去使用 MS Shell Dlg 或 MS Shell Dlg 2 所涉及的間接存取層級。 由於字型連結,指定 Microsoft Sans Serif 或 Tahoma 會為所有語言提供適當的字形。

在 Windows Me/98/95 上使用 MS Shell Dlg 進行非英文應用程式

在 Windows Me/98/95 上,MS Shell Dlg 不適用於在用戶選擇具有不同 Windows 基底字元集的地區設定時執行的靜態非英文使用者介面應用程式。 在此情況下,應用程式使用者介面語言可能不支援以 MS Shell Dlg 取代的字型。

例如,如果使用者使用德文版本的 Windows,而且想要安裝非 Unicode 希臘文應用程式,則使用者會嘗試將地區設定變更為希臘文(希臘)。 此動作會將 MS Shell Dlg 重設為希臘字型,但此字型不包含在德文中顯示所需的所有字元。 因此,德文使用者介面中任何非 ASCII 字元都不會正確顯示。 若要支援此案例,應用程式必須將 MS Shell Dlg 設定為同時包含西歐和希臘字元的字型。

國際字型列舉和選擇

多語系使用者介面