使用 MS Shell Dlg 和 MS Shell Dlg 2
Windows 適用于多種語言的當地語系化版本。 不過,英文版也可以用來執行以英文以外的語言撰寫的應用程式。 即使用於這些語言的腳本不同,也是如此,如同以希臘文或日文撰寫應用程式一樣。 這些應用程式需要具有對話方塊、圖示和公用程式的使用者介面,以提供應用程式語言中的資訊,可能與目前 Windows 使用者介面中使用的語言不同。
選取使用者介面的字型時發生問題很明顯。 例如,殼層字型也稱為系統或預設字型,適用于英文 (美國) Windows 98 是 MS Sans Serif,而希臘 (希臘文的殼層字型) Windows 98 是 MS Sans Serif 希臘文。 對於日文 (日本) Windows 98,殼層字型為 MS UI 圖文。 這些字元集無法直接對應至彼此。 將 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;繁體中文的 PMinglu;等。
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 字型。 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 設定為包含西歐和希臘字元的字型。
相關主題