本文使用的是阿里巴巴普惠字体
导入字体的方式
<FontFamily x:Key="Alibaba PuHuiTi">pack://application:,,,/AlibabaPuHuiTi;component/#Alibaba PuHuiTi</FontFamily>
目前使用.NET core Wpf ,是将字体文件放到一个库项目中,通过引用的方式导入到主项目中的。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net6.0-windows</TargetFramework> <Nullable>enable</Nullable> <Platforms>x86</Platforms> <UseWPF>true</UseWPF> </PropertyGroup> <ItemGroup> <None Remove="Alibaba-PuHuiTi-Medium.ttf" /> <None Remove="Alibaba-PuHuiTi-Regular.ttf" /> </ItemGroup> <ItemGroup> <Resource Include="Alibaba-PuHuiTi-Medium.ttf"> <CopyToOutputDirectory>Never</CopyToOutputDirectory> </Resource> <Resource Include="Alibaba-PuHuiTi-Regular.ttf"> <CopyToOutputDirectory>Never</CopyToOutputDirectory> </Resource> </ItemGroup> </Project>
生成操作:属性+不复制
本文介绍一种现象,
当时用 某个字体文件时,如果你只导入 Alibaba-PuHuiTi-Regular.ttf,如果字体 设置FontWeight="Bold",
解析器找不到这个字体的时候,会用算法动态计算对应的宽度的字体。
比如下图
上方的问题时没有 导入 Alibaba-PuHuiTi-Bold 时,由代码解析器 自动 估算出的字重。
下面的字体截图时导入 Alibaba-PuHuiTi-Bold 之后,实际显示的 宽度,
由此可以得出,从网络中得到的字体文件,如果对美感要求比较高,那么还是需要导入完整的字体文件的,
如果仅仅只是显示一个效果,那么 仅仅导入 Regular 字重的字体即可。
下方是从网络中搜索到的介绍
------------------------------------------------------------------------------------------------------------------------------------------------------------------