.net wpf fonts stretch

.net - ¿Por qué FontStretch no funciona en WPF?



(5)

A diferencia de las propiedades de fuente, como negrita o cursiva, WPF no simula las propiedades de fuente, como las mayúsculas o las minúsculas. La fuente utilizada debe soportar esto en sí misma.

Para ver qué fuentes son compatibles con FontStretch, deberá buscar fuentes que tengan un archivo de fuente separado, por ejemplo, Condensado o Expandido. Y entonces solo funcionarán las fuentes TrueType / OpenType correctamente vinculadas. Algunos proveedores de fuentes no vinculan correctamente las variantes estiradas o condensadas de sus fuentes a la versión regular, por lo que WPF no tiene idea de que estas variantes de fuentes estén relacionadas.

Estoy intentando configurar la propiedad FontStretch en un TextBlock en WPF pero parece que no funciona. Probé Expandido, Condensado, etc., pero la apariencia del texto no cambia.

Estoy trabajando en Windows XP con Framework 4.0 y he probado ambos con Verdana y Arial.

¿Funciona solo en Windows 7 o solo con algunas fuentes específicas?

EDITAR : Si no funciona con todas las fuentes, ¿hay una lista de fuentes compatibles con esta función? ¿O es posible modificar una fuente como Verdana / Arial para que sea compatible?


Al medir un texto (TextBlock.Measure), encuentro que Arial Narrow es × 0.82 del ancho de Arial.

Entonces, textBlock.LayoutTransform = new System.Windows.Media.ScaleTransform(0.82, 1.0); Cuando se aplica a Arial podría aproximarse al Arial Estrecho.


Creo que FontStretch no funciona para todas las fuentes.


Para obtener un efecto similar a FontStretch en una fuente que no lo admite, puedes usar un LayoutTransform en el TextBlock:

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

Esto también se puede configurar en un estilo si desea que todo el texto en TextBlocks aparezca condensado:

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