Mus*_*riq 3 font-family dart flutter
image pubspec
我想设置Noir Pro
为我的Flutter应用程序的默认字体系列。
默认 Roboto fontFamily 更改为 NoirPro,但字体粗细e.g(.w400,w500,w600)
无法正常工作。我找不到任何其他在线帮助。这让我很沮丧
在 pubspec.yaml
fonts:
- family: NoirPro
fonts:
- asset: resources/fonts/NoirPro_Light.ttf
weight: 300
- asset: resources/fonts/NoirPro_Normal.ttf
weight: 400
- asset: resources/fonts/NoirPro_Medium.ttf
weight: 500
- asset: resources/fonts/NoirPro_Bold.ttf
weight: 700
- asset: resources/fonts/NoirPro_Heavy.ttf
weight: 800
Run Code Online (Sandbox Code Playgroud)
In main.dart
theme: ThemeData(
fontFamily: 'NoirPro',
canvasColor: Colors.white,
),
Run Code Online (Sandbox Code Playgroud)
我找到了原因,而且非常简单:
Flutter 根据字体本身的元数据匹配系列中的字体,而不是 pubspec.yaml 中声明的样式描述符。
我的 NoirPro、中等和粗体字体包含元数据,分别将它们的权重声明为 400、410 和 420。但是,Flutter 文本子系统仅支持代表 100 倍数的字体权重桶(https://api.flutter.dev/flutter/dart-ui/FontWeight-class.html)。所以所有这三种字体都映射到 FontWeight.w400,字体样式匹配器无法根据权重在这些字体之间进行选择。
(您可以使用此站点检查字体文件的元数据:https : //fontdrop.info/)
在 pubspec.yaml 中将这些字体声明为不同的系列可以解决这个问题。
当前,请求的权重是根据字体本身定义的权重元数据选择的。pubspec.yaml 中的权重被忽略。
应该更新文档(说明书)以反映这一点,以免混淆其他开发人员。现在我的 pubspec.yaml 是:
fonts:
- family: NoirProNormal
fonts:
- asset: resources/fonts/NoirPro_Normal.ttf
- family: NoirProLight
fonts:
- asset: resources/fonts/NoirPro_Light.ttf
- family: NoirProMedium
fonts:
- asset: resources/fonts/NoirPro_Medium.ttf
- family: NoirProBold
fonts:
- asset: resources/fonts/NoirPro_Bold.ttf
- family: NoirProHeavy
fonts:
- asset: resources/fonts/NoirPro_Heavy.ttf
Run Code Online (Sandbox Code Playgroud)
当使用文本小部件时:
Text(
"Hello World",
style: TextStyle(
fontSize: size.width * 0.075,
fontFamily: "NoirProMedium",
color: Colors.white)
),
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
891 次 |
最近记录: |