WPF 以及同类型中字体文件的理解

 

 

 

 

本文使用的是阿里巴巴普惠字体

导入字体的方式

<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 字重的字体即可。

 

 

 

 

 

 

 

下方是从网络中搜索到的介绍

------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

 

posted on 2021-12-05 13:28  梦机器  阅读(234)  评论(0编辑  收藏  举报