如何在 Flutter 中使用 Open Type Font (OTF)?

Xih*_*uny 17 flutter

我在pubspec.yamlAny 中添加了字体True Type Font很好用。但是,当我添加Open Type Font它时,它不起作用。

这是我添加字体的方式 pubspec.yaml

  fonts:
    - family: Kufyan
      fonts:
        - asset: assets/fonts/Kufyan.otf

Run Code Online (Sandbox Code Playgroud)

Kir*_*iya 17

flutter 最新版本v1.12.13不直接支持开放式字体(otf)。您必须以某种方式将 otf 转换为真正的字体(ttf)。在您的项目中使用它之前,您可以使用此第三方网站将字体转换为 ttf。您可以参考有关如何在 flutter 中使用自定义字体的指南获取更多信息。

Flutter 根据字体本身的元数据匹配字体系列。所以定义family: Kufyan不是必需的pubspec.yml

  • 我正在使用 flutter v1.16.2 并且 otf 字体工作得很好 (6认同)

Dan*_*iil 6

刚刚用 Futter 1.20 测试过,看起来 OTF 字体按预期工作。我似乎无法在文档中找到有关 Flutter 支持的字体类型的任何信息。


Art*_*vev 5

?? 自 2021 年 2 月 24 日起正式工作

证明

  1. 由于这次提交(GitHub) 在此处输入图片说明

  2. 当前文档状态请看这里(Flutter 文档) 在此处输入图片说明


Sca*_*dio 4

Flutter 引擎根据字体本身的元数据来匹配系列中的字体。

(We should remove the style descriptors in pubspec.yaml now that they are obsolete).
Run Code Online (Sandbox Code Playgroud)

在 pubspec.yaml 中将这些字体声明为不同的系列可以解决此问题。

可以在这里看到 您所做的示例。

但 otf 可能不受支持。这可能是因为谷歌字体。

如果它仍然不起作用那么......

您可以使用一个技巧,即通过第三方(即Convertio等)将 otf 转换为 ttf。

然后您就可以将其用作普通字体。

  • 导入字体文件。
  • 在 pubspec.yaml 中声明字体
  • 将字体设置为默认字体。
  • 在特定小部件中使用字体。