如何获取字体样式列表(wpf)

时间:2017-08-16 14:40:13

标签: wpf font-family

fontdialog在哪里获得字体样式列表?

FontStyles仅包含Normal,Oblique和Italic。 然而,通过各种字体的字体样式,有以下组合:中,轻,黛米,粗体,罗马,窄,重,cond ......等等。

Arial的fontdialog显示:

窄斜体, 斜体, 定期, 窄大胆, 窄粗斜体, 胆大, 加粗斜体, 黑色, 黑斜率

他们从哪里获取此列表?其中一些名字似乎没有出现在任何地方。 是否有一些FamilyTypeface重量,样式和拉伸组合的列表,其他具有其他指定的名称或什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

对于系统字体,您可以获得FontFamily的{​​{3}}列表。字体本身具有重量,样式,拉伸等属性的所有细节。

示例代码

<Grid Margin="20">
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition Height="100" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <ListBox x:Name="fontSelector" 
             ItemsSource="{x:Static Fonts.SystemFontFamilies}" />

    <ListBox x:Name="typefaceSelector" 
             ItemsSource="{Binding SelectedItem.FamilyTypefaces, ElementName=fontSelector}" DisplayMemberPath="AdjustedFaceNames[en-US]" 
             Grid.Column="1" />

    <TextBlock FontFamily="{Binding SelectedItem.Source, ElementName=fontSelector}"
               FontStretch="{Binding SelectedItem.Stretch, ElementName=typefaceSelector}"
               FontStyle="{Binding SelectedItem.Style, ElementName=typefaceSelector}"
               FontWeight="{Binding SelectedItem.Weight, ElementName=typefaceSelector}"
               Grid.ColumnSpan="2" Grid.Row="1"
               Text="Sample" 
               FontSize="30"
               HorizontalAlignment="Center"
               VerticalAlignment="Center" />
</Grid>

typefaces

要在WPF中进一步扩展此列表,您可以使用win-forms中的InstalledFontCollection来获取已安装字体的列表,并将它们转换为WPF字体类型。

var installedFontCollection = new System.Drawing.Text.InstalledFontCollection();

// Get the array of FontFamily objects.
var fontFamilies = installedFontCollection.Families;
foreach(var fontFamily in fontFamilies)
{
    var mfont = new FontFamily(fontFamily.Name);
    fontSelector.Items.Add(mfont);
}

enter image description here