为什么FontStretch在WPF中不起作用?

Dra*_*ake 16 .net wpf fonts stretch

我正在尝试在WPF中的TextBlock上设置FontStretch属性,但似乎它不起作用.我尝试过Expanded,Condensed等,但文字外观没有变化.

我正在使用带有Framework 4.0的Windows XP,并使用Verdana和Arial进行了测试.

它仅适用于Windows 7或仅适用于某些特定字体吗?

编辑:如果它不适用于所有字体,是否有支持此功能的字体列表?或者是否可以修改像Verdana/Arial这样的字体来支持它?

Ray*_*rns 26

要以不支持FontStretch的字体获得与FontStretch类似的效果,可以在TextBlock上使用LayoutTransform:

<Application.Resources>
  <ScaleTransform x:Key="FontStretchCondensed" ScaleX="0.8" />
  <ScaleTransform x:Key="FontStretchExpanded" ScaleX="1.2" />
</Application.Resources>

...

<TextBlock Text="This is my text"
           LayoutTransform="{StaticResource FontStretchCondensed}" />
Run Code Online (Sandbox Code Playgroud)

如果要使TextBlocks中的所有文本都显示为浓缩,也可以在样式中设置:

<Style TargetType="TextBlock">
  <Style.Setters>
    <Setter Property="LayoutTransform" Value="{StaticResource FontStretchCondensed}" />
  </Style.Setters>
</Style>
Run Code Online (Sandbox Code Playgroud)

  • 这不会也会拉长你的字体并使其显得“胖”吗? (2认同)

Rub*_*ben 6

与粗体或斜体等字体属性不同,WPF不会模拟拉伸或小型字体等字体属性.使用的字体必须支持这个.

要查看哪些字体支持FontStretch,您需要查找具有单独字体文件的字体,例如Condensed或Expanded.然后只有正确链接的TrueType/OpenType字体才能工作.某些字体供应商没有正确地将其字体的拉伸或压缩变体链接到常规版本,因此WPF不知道这些字体变体是相关的.