Pregunta ¿Cuál es la familia de fuentes predeterminada de una aplicación WPF?


¿Cuál es la familia de fuentes predeterminada de una aplicación WPF? ¿Este sistema es dependiente? encontré Tahoma en mi sistema.

Si creo un control, ¿cuál será la familia de fuentes predeterminada de control establecida?


32
2017-11-10 06:43


origen


Respuestas:


La fuente "predeterminada" es la fuente del sistema actual de su sistema operativo actual. Tahoma es la fuente de sistema predeterminada de Windows XP, en Vista, Windows 7 es la interfaz de usuario de Segoe.


38
2017-11-10 06:44



En Windows 8, parece que la fuente alternativa es la interfaz de usuario de Segoe con una línea base de 0.9 y un espaciado de línea de 1.2.

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



Puede tomarlo del valor predeterminado de DependencyProperty. Por ejemplo, crea un control personalizado, que será dibujar texto usando DrawingContext y desea establecer el valor predeterminado para FontFamily, puede declarar DependencyProperty tal manera:

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