如何在 Uno 平台上使用字体图标

问题描述

我正在尝试使用 docs 后面的 uno-fluentui-assets。但它没有样本,我也找不到使这项工作成功的方法

<Page
    x:Class="Unoprism.Shared.Views.Shell"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Unoprism.Shared.Views"
    xmlns:prismMvvm="using:Prism.Mvvm"
    xmlns:prismRegions="using:Prism.Regions"
    prismMvvm:viewmodelLocator.Autowireviewmodel="True" >

  <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <NavigationView Header="Super Barato">
            <NavigationView.MenuItems>
                <NavigationViewItem Content="Promoções">
                    <NavigationViewItem.Icon>
                        <FontIcon FontFamily="ms-appx:///Assets/Fonts/uno-fluentui-assets.ttf#" Glyph="&#xE117;"/>
                    </NavigationViewItem.Icon>
                </NavigationViewItem>
                <NavigationViewItem Content="Nova Promoção" Icon="Calendar"/>
            </NavigationView.MenuItems>
        </NavigationView>
  </Grid>
</Page>

字体文件添加Shared/Assets/Fonts 文件夹中。结果是一个方形图标。

enter image description here

解决方法

Uno Fluent UI 符号字体是一种由内置模板和样式使用的特殊字体。

可以使用预定义的 FontFamily 资源 SymbolThemeFontFamily 手动引用它:

<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE117;"/>

Used symbol

使用资源代替“字体路径”的优势在于它是面向未来的,甚至与 UWP 兼容,UWP 不使用 Uno 符号字体,而是使用 Windows Segoe MDL2 资产。

如果您想在 Uno 平台应用中使用自己的自定义字体,请参阅此 article