Flutter pubspec声明自定义字体时weight和style属性的作用是什么
weight 和 style 字段本质是 Flutter 的字体匹配映射标识,作用是建立你代码中字体样式配置和本地字体文件的对应关系,不是用来修改字体文件本身的属性。
- 关于匹配逻辑
你在代码中给TextStyle设置fontWeight: FontWeight.w700时,Flutter 会到你指定的 fontFamily 下,查找 pubspec 中声明了weight: 700的字体文件来加载渲染。如果不在 RobotoMono-Bold.ttf 对应的配置行加weight:700,Flutter 就不知道这个文件对应粗体样式,你设置的FontWeight.w700不会生效,最多得到算法生成的伪粗体,和原生粗体字体的渲染效果差距极大。 - 关于官方提示的含义
官方那句说明是为了避免开发者误解这个字段的作用:你不能靠修改 pubspec 里的 weight 值去改变字体本身的字重。比如你硬要把 RobotoMono-Bold.ttf 的 weight 设为 100,Flutter 只会在你代码写FontWeight.w100时加载这个粗体文件,渲染出来仍然是粗体,不会变成细体;反而你写FontWeight.w700时找不到对应配置的文件,会 fallback 到其他字体或者生成伪粗体。 style属性的逻辑完全一致
你给 Raleway-Italic.ttf 配置style: italic后,代码中设置fontStyle: FontStyle.italic时,Flutter 才会加载这个原生斜体文件,否则只会把普通字体强行拉伸生成伪斜体,效果远不如原生设计的斜体。
内容的提问来源于stack exchange,提问作者The Chinky Sight
相关产品推荐
相关产品推荐

