Pertanyaan Apakah font font default dari aplikasi WPF?


Apakah font font default dari aplikasi WPF? Apakah sistem ini bergantung? saya menemukan Tahoma pada sistem saya.

Jika saya membuat kontrol maka apa yang akan menjadi fontfamily default kontrol yang ditetapkan?


32
2017-11-10 06:43


asal


Jawaban:


Font "default" adalah font sistem saat ini dari OS Anda saat ini. Tahoma adalah font sistem default Windows XP, pada Vista, Windows 7 itu adalah Segoe UI.


38
2017-11-10 06:44



Pada Windows 8, sepertinya font fallback adalah Segoe UI dengan garis dasar 0,9 dan jarak 1,2 garis.

Simulating WPF default font

  <Page
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:clr="clr-namespace:System;assembly=mscorlib">
    <Page.Resources>
      <clr:String x:Key="someText">The quick brown fox, ABCD, 1234567890, /@#</clr:String>
      <SolidColorBrush x:Key="lightColor">#bbbbbb</SolidColorBrush>
      <SolidColorBrush x:Key="darkColor">#000000</SolidColorBrush>
      <FontFamily x:Key="default">non existent font</FontFamily>
      <FontFamily x:Key="segoe">Segoe UI</FontFamily>
      <FontFamily x:Key="segoe_base" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/composite-font"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
              xmlns:s="clr-namespace:System;assembly=mscorlib" 
              Baseline="0.9"
              LineSpacing="1.2">
        <FontFamily.FamilyNames>
          <s:String x:Key="en-US" >Baseline Segoe UI</s:String>
        </FontFamily.FamilyNames>
        <FontFamily.FamilyMaps>
          <FontFamilyMap Target="Segoe UI" />
        </FontFamily.FamilyMaps>
      </FontFamily>
    </Page.Resources>

    <StackPanel Margin="10" Width="250">
      <TextBlock TextWrapping="Wrap">Segoe UI with a baseline of 0.9 and line spacing of 1.2 lines up with the default font</TextBlock>
      <Grid Margin="5">  
        <TextBlock Foreground="{StaticResource darkColor}" TextWrapping="Wrap" FontSize="20" FontFamily="{StaticResource default}" Text="{StaticResource someText}"/>
        <TextBlock Foreground="{StaticResource lightColor}" TextWrapping="Wrap" FontSize="20" FontFamily="{StaticResource segoe_base}" Text="{StaticResource someText}"/>
      </Grid>
      <TextBlock Margin="0,10,0,0" TextWrapping="Wrap">Segoe UI with the default baseline and line spacing does not line up with the default font</TextBlock>
      <Grid Margin="5">  
        <TextBlock Foreground="{StaticResource darkColor}" TextWrapping="Wrap" FontSize="20" FontFamily="{StaticResource default}" Text="{StaticResource someText}"/>
        <TextBlock Foreground="{StaticResource lightColor}" TextWrapping="Wrap" FontSize="20" FontFamily="{StaticResource segoe}" Text="{StaticResource someText}"/>
      </Grid>
    </StackPanel>
  </Page>

3
2018-02-10 18:42



Anda dapat mengambilnya dari nilai default DependencyProperty. Misalnya, Anda membuat kontrol kustom, yang akan menggambar teks menggunakan DrawingContext dan Anda ingin menetapkan nilai default untuk FontFamily, Anda dapat menyatakan DependencyProperty seperti itu:

public static readonly DependencyProperty FontFamilyProperty = DependencyProperty.Register(nameof(FontFamily), typeof(FontFamily), typeof(MyControl), new FrameworkPropertyMetadata(TextBlock.FontFamilyProperty.DefaultMetadata.DefaultValue, FrameworkPropertyMetadataOptions.AffectsRender));

    public FontFamily FontFamily
    {
        get => (FontFamily)GetValue(FontFamilyProperty);
        set => SetValue(FontFamilyProperty, value);
    }

0
2017-07-19 15:48