自定义字体在Uno.WASM中工作,但在Uno.WP中不工作



由于搜索了一段时间后没有看到有用的东西,我决定在这里询问:

我有一个小的测试项目,只是从interwebs导入一个自定义的图标字体。当前项目如下:我的MainApp.xaml由一个Textblock组成,它引用了Styles.xaml中的Style元素,而Styles.xml又引用了一个FontFamily,我在其中每个平台加载ttf文件。

在WASM中,它工作得很好(base64URI(,但在UWP中,我根本无法显示字体图标。Style.xaml被App.xaml完美导入,Size被应用,但FontFamily标签似乎有问题。

我试过了:

  1. 手动安装我的字体=>工作起来很有魅力。所以它可能不是字体文件
  2. https://platform.uno/docs/articles/features/custom-fonts.html,但无济于事
  3. https://blog.mzikmund.com/2020/01/custom-fonts-in-uno-platform/这反过来也没有太大变化
  4. https://github.com/MartinZikmund/blog-2020/tree/master/Uno.CustomFonts即使在这里进行了交叉引用,我也无法让它发挥作用
  5. https://github.com/unoplatform/calculator/blob/uno/src/Calculator.Shared/Styles.xaml我还与官方计算器端口进行了交叉检查,但即使在像他们那样设置之后,也没有任何变化
  6. 重新安装VS(我使用社区版本(。这是我的代码:

MainApp.xaml:

<Page
x:Class="Testing.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Testing"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<TextBlock Text="L"  Style="{ThemeResource IconTextStyle}" />
</Grid>
</Page>

样式.xaml:

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:xamarin="http://uno.ui/xamarin"
xmlns:macos="http://uno.ui/macos"
xmlns:wasm="http://uno.ui/wasm"
xmlns:skia="http://uno.ui/skia"
xmlns:win="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="xamarin wasm macos skia"
>

<win:FontFamily x:Key="IconScratchedFontFamily">ms-appx:///Assets/PWSmallIcons.ttf#Small-Icons-Scratched</win:FontFamily>
<macos:FontFamily x:Key="IconScratchedFontFamily">ms-appx:///Assets/PWSmallIcons.ttf#Small-Icons-Scratched</macos:FontFamily>
<wasm:FontFamily x:Key="IconScratchedFontFamily">Small-Icons-Scratched</wasm:FontFamily>
<skia:FontFamily x:Key="IconScratchedFontFamily">ms-appx:///Assets/PWSmallIcons.ttf#Small-Icons-Scratched</skia:FontFamily>
<win:FontFamily x:Key="IconClearFontFamily">ms-appx:///Assets/PWSmallIconsFree.ttf#Small-Icons-Free</win:FontFamily>
<macos:FontFamily x:Key="IconClearFontFamily">ms-appx:///Assets/PWSmallIconsFree.ttf#Small-Icons-Free</macos:FontFamily>
<wasm:FontFamily x:Key="IconClearFontFamily">Small-Icons-Free</wasm:FontFamily>
<skia:FontFamily x:Key="IconClearFontFamily">ms-appx:///Assets/PWSmallIconsFree.ttf#Small-Icons-Free</skia:FontFamily>
<Style TargetType="TextBlock" x:Key="IconTextStyle">
<Setter Property="FontFamily"
Value="{StaticResource IconScratchedFontFamily}" />
<Setter Property="FontWeight"
Value="Normal" />
<Setter Property="FontSize"
Value="116" />
</Style>
</ResourceDictionary>

App.xaml:

<Application
x:Class="Testing.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Testing">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ms-appx:///Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>

找到解决方案:

<win:FontFamily x:Key="IconScratchedFontFamily">ms-appx:///Assets/PWSmallIcons.ttf#PWSmallIcons</win:FontFamily>
<macos:FontFamily x:Key="IconScratchedFontFamily">ms-appx:///Assets/PWSmallIcons.ttf#PWSmallIcons</macos:FontFamily>

背景:#后面的部分表示字体的名称,因为它写在.ttf文件中,而不是我想引用的字体的名称,如果你仔细想想,这是非常明显的。

用我提供的代码几乎不可能弄清楚,所以我决定为其他遇到这个问题的人更新我的问题。

对于WinmacOS,在Resources中定义FontFamily的方法是只使用FontName

<win:FontFamily x:Key="IconScratchedFontFamily">Small-Icons-Scratched</win:FontFamily>
<macos:FontFamily x:Key="IconScratchedFontFamily">Small-Icons-Scratched</macos:FontFamily>

<win:FontFamily x:Key="IconClearFontFamily">Small-Icons-Free</win:FontFamily>
<macos:FontFamily x:Key="IconClearFontFamily">Small-Icons-Free</macos:FontFamily>

这样,您就可以在任何样式中使用FontFamily定义。

希望这能有所帮助。-

最新更新