19

WPF で TextBlock にFontStretchプロパティを設定しようとしていますが、うまくいかないようです。Expanded、Condensed などを試しましたが、テキストの外観は変わりません。

フレームワーク 4.0 を搭載した Windows XP で作業しており、Verdana と Arial の両方でテストしています。

Windows 7 でのみ動作しますか、それとも特定のフォントでのみ動作しますか?

編集:すべてのフォントで機能しない場合、この機能をサポートするフォントのリストはありますか? または、Verdana/Arial のようなフォントをサポートするように変更することは可能ですか?

4

5 に答える 5

27

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}" />

TextBlocks 内のすべてのテキストを圧縮して表示する場合は、これをスタイルで設定することもできます。

<Style TargetType="TextBlock">
  <Style.Setters>
    <Setter Property="LayoutTransform" Value="{StaticResource FontStretchCondensed}" />
  </Style.Setters>
</Style>
于 2010-06-05T02:10:40.713 に答える
6

太字や斜体などのフォント プロパティとは異なり、WPF はストレッチやスモール キャップなどのフォント プロパティをシミュレートしません。使用するフォントは、これ自体をサポートしている必要があります。

どのフォントが FontStretch をサポートしているかを確認するには、Condensed や Expanded などの別のフォント ファイルを持つフォントを探す必要があります。そして、適切にリンクされた TrueType/OpenType フォントのみが機能します。一部のフォント ベンダーは、拡張または圧縮されたフォントのバリアントを通常のバージョンに適切にリンクしていないため、WPF はこれらのフォント バリアントが関連していることを認識していません。

于 2010-06-01T09:27:04.830 に答える
4

テキスト (TextBlock.Measure) を測定すると、Arial Narrow は Arial の幅の 0.82 倍であることがわかります。

したがってtextBlock.LayoutTransform = new System.Windows.Media.ScaleTransform(0.82, 1.0);、Arial に適用すると、Arial Narrow に近似する可能性があります。

于 2012-05-02T02:18:11.247 に答える
2

OpenType フォントでのみ機能します。詳細については:

http://en.wikipedia.org/wiki/OpenType

http://www.adobe.com/type/opentype/

http://www.microsoft.com/typography/WhatIsOpenType.mspx

于 2010-06-01T09:00:26.600 に答える
2

FontStretch がすべてのフォントで機能するとは限りません。

于 2010-06-01T08:47:13.870 に答える