首页 > 解决方案 > 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样式。

颤振不能使用多种字体重量还是取决于字体?

标签: flutterflutter-layout

解决方案


我突然发现了问题。很琐碎的问题。这是因为每种字体都有不同的“字体名称”。例如:Unisans-Bold 有字体名称 (UnisansBold) 而不是 Unisans。Unisans-Heavy 有字体名称 (UnisansHeavy) 而不是 Unisans。在颤振中,要使粗细样式生效,所有字体文件必须具有相同的字体名称。在 Windows 操作系统中打开字体文件时,我会检查字体名称。但是我仍然很好奇为什么即使我们在 pubspec.yaml 上声明它,flutter 也会考虑它。


推荐阅读