【问题标题】:Why FontStretch does not work in WPF?为什么 FontStretch 在 WPF 中不起作用?
【发布时间】:2010-06-01 08:38:23
【问题描述】:

我正在尝试在 WPF 中的 TextBlock 上设置 FontStretch 属性,但它似乎不起作用。我尝试了 Expanded、Condensed 等,但文本外观没有改变。

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

它仅适用于 Windows 7 还是仅适用于某些特定字体?

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

【问题讨论】:

    标签: .net wpf fonts stretch


    【解决方案1】:

    要在不支持的字体中获得与 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}" />
    

    如果您想让 TextBlocks 中的所有文本都显示为压缩,这也可以设置为样式:

    <Style TargetType="TextBlock">
      <Style.Setters>
        <Setter Property="LayoutTransform" Value="{StaticResource FontStretchCondensed}" />
      </Style.Setters>
    </Style>
    

    【讨论】:

    • UWP不支持LayoutTransform,我测试了上面的代码VS报错。如何解决?
    • 这不是也会拉长你的字体,让它看起来“胖”吗?
    • 我相信这是一个更好的答案:stackoverflow.com/a/18878059/5675763
    【解决方案2】:

    与粗体或斜体等字体属性不同,WPF 不模拟拉伸或小型大写字母等字体属性。使用的字体本身必须支持这一点。

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

    【讨论】:

      【解决方案3】:

      通过测量一些文本(TextBlock.Measure),我发现 Arial Narrow 是 Arial 宽度的 × 0.82。

      所以textBlock.LayoutTransform = new System.Windows.Media.ScaleTransform(0.82, 1.0); 应用于 Arial 时可能会接近 Arial Narrow。

      【讨论】:

        【解决方案4】:

        我相信 FontStretch 并不适用于所有字体。

        【讨论】:

          【解决方案5】:

          【讨论】:

          • 请注意,并非所有 OpenType 字体都支持这一点。例如。 Calibri 没有。
          猜你喜欢
          • 2013-08-08
          • 1970-01-01
          • 2011-01-21
          • 1970-01-01
          • 2018-01-24
          • 2011-01-16
          • 2016-04-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多