Windows 10:字型字元顯示不完整

Windows 10:字型字元顯示不完整
  • 預設情況下,Windows 10 附帶segoe ui 表情符號字體
  • 此字型是唯一具有以下 4 個 unicode 字元的預設字型:

答案1

現代 UI 元素的工作方式與傳統元素不同。運行對話框和記事本都是古老的遺留元素,不會隨作業系統的其餘部分進行更新。搜尋列是現代作業系統元素,因此這應該是作業系統所有較新元素的行為。 Segoe 系列字體是為現代 UI 開發的,它們都用於各種文字顯示功能。話雖這麼說,微軟的開發並不以一致性而聞名。您可能會發現由不同團隊開發的不同元素具有不同的行為。

有關「現代」Windows 10 應用程式中如何以不同方式處理字體的更多信息,請閱讀本文:https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/typography-in-wpf

WPF 透過提供以下功能來提供增強的字體支援: 所有文字的 Unicode。字體行為和選擇不再需要字元集或代碼頁。

這解釋了現代應用程式如何顯示字體系列中多種字體的字元。

答案2

@harrymc“Windows 下的所有軟體都使用相同的 API,並由相同的 Windows 元件支援。”

我:*這與您對“api”的定義相關*它們都在.net中運行,而.net本身在winrt(Windows運行時)中運行*但是,它們仍然可以有不同的接口*注意到這一點,wiki建議它們是不同的: https://en.wikipedia.org/wiki/Windows_Forms *“Windows 窗體建立在現有的 Windows API 之上,某些控制項僅包裝底層 Windows 元件。” https://en.wikipedia.org/wiki/Windows_Presentation_Foundation *“WPF 的體系結構涵蓋託管程式碼和本機程式碼元件。但是,公開的公開 API 只能透過託管程式碼使用。雖然大部分 WPF 都採用託管程式碼,但呈現 WPF 應用程式的組合引擎是本機元件” 。

https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.fontfamily?view=netframework-4.8

“WPF 字體回退機制取代了先前的 Win32 字體替換技術。”

https://support.microsoft.com/en-us/help/3083806/why-does-some-text-display-with-square-boxes-in-some-apps-on-windows-1

「Windows 仍然對 Unicode 和國際文字提供大力支持,並確保通用 Windows 應用程式可以在桌面裝置和所有其他外形尺寸上提供出色的文字顯示

@HackSlash“運行對話框和記事本都是古老的遺留元素,不會隨操作系統的其餘部分進行更新。”

我:* 不正確 * 但是,記事本的更新不如寫字板那麼頻繁

筆記 *我很快就會整理這篇文章*在賞金時間用完之前我幾乎沒有時間做這個*@harrymc和@HackSlash都有根本性的錯誤*所以我想提供更準確的信息

答案3

我不同意已接受的答案:Windows 下的所有軟體都使用相同的 API,該 API 由相同的 Windows 元件支援。雖然較舊的軟體可能使用過時的 API,但記事本或寫字板的情況並非如此,它們目前仍在開發中。

發文者使用記事本和寫字板遇到的問題與使用者介面有關,而不是這些產品的問題,以下是證明,噹噹前字體指定為 Segoe UI Emoji 時,字元可以正確顯示:

在此輸入影像描述

但是,噹噹前字體不是 Segoe UI Emoji 時,不要指望貼上這些字元會起作用,除非當前字體中恰好包含其中一個或多個字元。

對於 Windows 對話方塊:建立對話方塊時,文字欄位所使用的字型會在對話方塊的定義中指定。 Segoe UI Emoji 字體顯然不適合作為常規文字字體,因此永遠不會用於此類使用者介面。

您不能強制對話框使用與其編程的字體不同的另一種字體,至少在不破解包含對話框定義的.exe或的情況下不能。.dll因此,您不能指望貼上表情符號可以在對話框中起作用。

編輯

Unicode 字元範圍雖然很大,但不足以包含地球上所有語言的所有字元。這就是為什麼字體很重要的原因,因為相同的 Unicode 程式碼點可以用於不同字體中的不同字元。

Windows 剪貼簿很豐富,與 Linux 剪貼簿不同。它不僅包含字符,還可以包含有關語言、方向(右、左)、字體等的資訊。 API 能夠設定和獲取不同的格式,而且還足夠智能,可以在獲取儲存的格式時將其轉換為請求的格式。

因此,複製和貼上特殊字元時得到的內容取決於原始程式和目標程式使用的 API。下面是使用寫字板的範例。

這是 Arial 字體的初始文字:

在此輸入影像描述

現在,我將第四個字元從瀏覽器複製並貼上到文字末尾,你會看到奇蹟 - 字體現在是 Segoe UI Emoji:

在此輸入影像描述

現在我點擊「Arial」這個詞,字體突然不同了:

在此輸入影像描述

現在我們有了兩種不同字體的文字。我們貼上的字元 (

相關內容