为什么FormattedText在HiDPI中不使用自定义字体?

时间:2014-10-24 00:01:17

标签: wpf fonts rendering high-resolution

我正在使用FormattedText在WPF中使用自定义资源字体呈现文本,但由于某些奇怪的原因,在HiDPI模式下会忽略自定义字体。相同的代码在正常的DPI中工作正常。

以下是我的代码示例,其中BasicPoint和BasicColor是泛型类,因为我正在多个平台上进行渲染:

public void DrawText(string text, BasicPoint point, BasicColor color, string fontFace, float fontSize)
{
    var formattedText = new FormattedText(text, CultureInfo.InvariantCulture, FlowDirection.LeftToRight, new Typeface(fontFace), fontSize, new SolidColorBrush(GenericControlHelper.ToColor(color)));
    _context.DrawText(formattedText, GenericControlHelper.ToPoint(point));
}

例如,以下是传递给此方法的值:

text: "Hello World"
point: (0, 0)
color: (255, 255, 255)
fontFace: "Roboto Light"
fontSize: 12

此字体已作为TTF和资源添加到项目中。我通常在XAML中成功地引用它:

<TextBlock x:Name="lblLoopName" Text="{Binding Path=Name}" Margin="0" Padding="0,2,4,2" Foreground="Black" FontSize="11" FontFamily="/Resources/Fonts/#Roboto Regular" PreviewMouseDown="lblLoopName_OnPreviewMouseDown" />

我提醒你,使用FormattedText可以在没有HiDPI的情况下正常工作,它只是默认为HiDPI中的Arial。

感谢您对此问题的任何帮助,我一直在寻找解决方案!

0 个答案:

没有答案