WPF的FontFamily.Source从哪里检索它的值?

时间:2010-08-31 23:35:06

标签: .net wpf fonts gdi+

我有两个使用相同数据创建UI的应用程序,一个使用WPF,另一个使用GDI。我根据Windows中的字体名称属性使用名为Myriad Condensed Web的字体。使用给定的字体名称实例化System.Drawing.FontFamily对象没有问题。但是,当我使用WPF的System.Windows.Media.FontFamily创建此字体时,我只能使用名称Myriad Web来创建。我无法在Window的字体控制面板中的字体属性中的任何位置找到对此值的引用。当我检查System.Windows.Media.Fonts.SystemFontFamilies时,Myriad Web是Source属性的值。

所以我的问题是,WPF从哪里获取此值?为什么它与GDI给出的价值有所不同?如何使用一个字体名称为GDI和WPF实例化相同的字体?我想避免存储两个值 - 一个用于GDI,一个用于WPF。

1 个答案:

答案 0 :(得分:1)

我不是百分之百确定发生了什么,但我有一个很好的理论。自GDI +以来,字体技术已经取得了相当大的进步,可能是因为结合了OpenType支持。 WPF具有FontStretch的概念,FontStretches类定义了诸如“Consensed”,“Medium”,“Expanded”等值。

此属性在旧代码中不可用,我认为Windows字体管理器合成字体系列名称以保持兼容。通过在常规姓氏中注入“Condensed”(等)。因此,请在心理上删除此形容词以获取WPF名称。它确实会破坏你的计划,除非你考虑自己在代码中过滤它。