WinUI 3桌面应用自定义字体部署相关问题咨询
WinUI 3 桌面应用自定义字体部署问题解答
问题1:准确获取#后的字体家族名称
无需猜测,用以下两种可靠方法:
- PowerShell脚本查询:创建并执行以下脚本,直接输出字体内部家族名称:
# 替换为你的字体文件绝对路径 $fontPath = "C:\Projects\YourApp\Sources\Fonts\Raleway-VariableFont_wght.ttf" $fontCollection = New-Object System.Drawing.Text.PrivateFontCollection $fontCollection.AddFontFile($fontPath) $fontCollection.Families | ForEach-Object { Write-Host "字体家族名称:$($_.Name)" } - 文件属性查看:右键字体文件 → 属性 → 详细信息,查看「字体家族」或「标题」字段,该字段值即为#后需要填写的内容。
问题2:修改字体文件名后字体失效的原因与解决
核心原因是VS缓存或文件部署设置问题,解决步骤:
- 检查字体文件属性:右键文件 → 属性,取消「只读」勾选;
- 清理项目缓存:在VS中点击「项目」→「清理解决方案」,手动删除项目目录下的
bin和obj文件夹; - 确认部署设置:右键字体文件 → 属性 → 高级,将「复制到输出目录」设置为「始终复制」,确保修改后的文件能同步到输出目录;
- 重新生成解决方案并运行应用。
问题3:Google Fonts Raleway可变字体无法生效的解决
按以下步骤排查:
- 确认字体家族名称:用问题1的方法获取Raleway可变字体的内部名称,通常为
Raleway,确保资源定义中#后的名称完全匹配; - 检查文件部署:将Raleway的两个字体文件的「复制到输出目录」设为「始终复制」,确保生成后输出目录中存在该文件;
- 正确引用可变字体参数:可变字体可通过
FontWeight和FontStyle控制样式,示例:<TextBlock FontFamily="{StaticResource Font1}" Text="Italic Raleway" FontStyle="Italic" FontWeight="300"/> <TextBlock FontFamily="{StaticResource Font2}" Text="Bold Raleway" FontWeight="700"/> - 简化路径排查:暂时将字体文件移至项目根目录,修改资源路径为
/Raleway-VariableFont_wght.ttf#Raleway,排除路径层级问题; - 清理缓存:执行问题2中的缓存清理步骤,重新生成项目。
内容的提问来源于stack exchange,提问作者Георгий Попов
相关产品推荐
相关产品推荐

