flutter - Flutter 自定义字体多重权重无法正常工作
问题描述
我正在尝试使用具有多重权重的家庭字体。但是当我使用粗体 (w700)和粗体 (w800)的字体样式时,它不起作用。只工作到半粗体/中等(w600)
这是我的字体资产文件夹结构:
myapp\assets\fonts\unisans\unisans_Bold.ttf
myapp\assets\fonts\unisans\unisans_Heavy.ttf
myapp\assets\fonts\unisans\unisans_Reguler.ttf
myapp\assets\fonts\unisans\unisans_Semibold.ttf
pubspec.yaml 中定义的字体:
fonts:
- family: Unisans
fonts:
- asset: assets/fonts/unisans/unisans_Reguler.ttf
- asset: assets/fonts/unisans/unisans_Semibold.ttf
weight: 600
- asset: assets/fonts/unisans/unisans_Bold.ttf
weight: 700
- asset: assets/fonts/unisans/unisans_Heavy.ttf
weight: 800
并像这样称呼他们:
Text(
"Halo",
style: TextStyle(
color: Theme.of(context).primaryColor,
fontFamily: "Unisans",
fontWeight: FontWeight.w800,
fontSize: 30),
)
我也试过FontWeight.w700,但还是没有应用。它仅适用于调节器和w600样式。
颤振不能使用多种字体重量还是取决于字体?
解决方案
我突然发现了问题。很琐碎的问题。这是因为每种字体都有不同的“字体名称”。例如:Unisans-Bold 有字体名称 (UnisansBold) 而不是 Unisans。Unisans-Heavy 有字体名称 (UnisansHeavy) 而不是 Unisans。在颤振中,要使粗细样式生效,所有字体文件必须具有相同的字体名称。在 Windows 操作系统中打开字体文件时,我会检查字体名称。但是我仍然很好奇为什么即使我们在 pubspec.yaml 上声明它,flutter 也会考虑它。
推荐阅读
- django - 我必须在 django 中管理数据库并发吗?
- python - 如何用索引替换字母
- java - 我可以使用带有自定义属性名称的属性/yml 文件配置@FeignClient url吗?
- node.js - 在不使用表单的情况下,从 javascript 应用程序从节点服务器获取 JWT 令牌的最佳安全方法是什么?
- php - ssllabs.com 服务器测试中显示未知 SSL 证书
- c# - 如何使用 HttpWebResponse 处理自定义 HTTP 状态代码
- nginx - Synology DSM 上的 Nginx 反向代理在更新到 DSM 6.2.2 Update 3 后停止工作
- c++ - 为什么 stl 算法按值获取可调用对象?
- c# - C# Web Api - NUnit 测试 - Newtonsoft.Json.JsonSerializationException
- r - R dplyr:对不同的组使用不同的条件进行过滤