2012-10-30 51 views
5

我正在開發一個WPF應用程序,但我注意到,在某些字體大小下,文本不會像控制面板 - >字體中顯示的樣本那麼好。我正在使用大型Segoe UI字體(FontSize="36"),效果在直線上更​​明顯,例如,一個字母「U」可能比另一個稍厚一些。 )。WPF字體質量

在某些字體大小下字體質量得到改善,例如, FontSize="48"(我相信它相當於36pt),但使用有限的字體大小並不總是實用。

我可以提高通過應用以下屬性到TextBlock的字體質量: -

TextOptions.TextFormattingMode="Display" TextOptions.TextRenderingMode="ClearType" 

考慮到質量的改善我很好奇,想知道爲什麼WPF並不適用於所有文字做到這一點,或性能是否下降?我正在考慮創建一種全球化的風格,將其應用於所有控件,否則會導致問題? (我嘗試上傳截圖,但是SO必須以低質量存儲圖像,而且你無法真正弄清字體問題)。

+0

我們不(imgur不)以低質量存儲圖像。如果您保存PNG並上傳它,它將不會成爲JPEG。您也可以鏈接到縮略圖上的全尺寸圖片。 – BoltClock

+0

您是否嘗試過使用其他字體? – MisterMetaphor

+4

我相信這個問題,包括爲什麼默認的WPF字體渲染是「模糊」,已經充分回答在http://stackoverflow.com/questions/190344/wpf-blurry-fonts-problem-solutions –

回答

7

以下是WPF文本小組關於此功能所寫的blog post

注意的TextFormattingMode

理想理想文本指標自推出WPF的已用於 格式文本的指標。這些指標導致 字形的形狀保持高保真度,其字體文件的輪廓線爲 。 創建字形位圖或相對於其他每個 定位字形時,不會考慮字形的最終放置位置。

Display在這種新的格式模式下,WPF使用GDI 兼容的文本度量。這確保了每個字形的整個像素寬度爲 ,並且位於整個像素上。使用GDI兼容的文本度量標準也意味着字形大小和行破解類似於基於GDI的框架。也就是說,字形大小 不是WPF使用的換行算法的唯一輸入。 即使我們使用與GDI相同的指標,我們的換行也不會 完全相同。

由於這些特性是在.NET 4.0中,他們仍保持着原始WPF算法默認情況下,這是理想的模式。

對於TextRenderingMode

自動此模式將使用ClearType,除非系統設置已經 設置在機器上專門禁用的ClearType。

別名不會使用抗鋸齒來繪製文本。

灰度灰度抗鋸齒將用於繪製 文本。

ClearType ClearType antialising將用於繪製文本。

由於Auto是默認值,您通常會獲得ClearType的渲染。

現在,因爲這些都是附加屬性,它們繼承,只需將它們放在根Window。不需要創建一堆Style s。

+1

修改這些屬性是否有任何可能是由於更復雜的算法對性能的影響?另外,我想知道修改這些屬性是否還有其他缺點或缺點。 –

+2

WPF團隊都沒有提到使用不同渲染模式的性能命中,所以我會說如果性能損失,它可以忽略不計。就缺點而言,我認爲主要的一個是使用ClearType。例如,它在CRT顯示器上效果不佳。 –

0

當ClearType處於開啓狀態時,處理大量數據(10,000個以上的項目)時,我注意到了性能問題。將TextFormattingMode更改爲Display並沒有明顯的性能影響。

這就是說,在我所有的WPF應用程序中,我都使用全局樣式來改進文本呈現,除非性能影響足以讓UI感覺粘性。