Flutter 的字体和排版

排版涵盖了字体或字体的样式和外观:它指定字体的粗细、倾斜度、字母之间的间距以及文本的其他视觉方面。

并非所有字体都是相同的。字体是一个庞大的主题,超出了本网站的范围,但是,本页面讨论了 Flutter 对可变字体和静态字体的支持。

可变字体

可变字体(也称为 OpenType 字体)允许你控制文本样式的预定义方面。可变字体支持特定的轴,例如宽度、粗细、倾斜度(仅举几例)。用户在指定字体时可以选择沿连续轴的任何值

Example of two variable font axes

但是,字体必须首先定义可用的轴,而这并不总是容易弄清楚的。如果你正在使用 Google 字体,你可以使用下一节中描述的类型测试器功能了解可用的轴。

使用 Google Fonts 类型测试器

Google Fonts 网站提供可变字体和静态字体。使用类型测试器来了解有关其可变字体的更多信息。

  1. 要调查可变的 Google 字体,请访问 Google Fonts 网站。请注意,在每个字体卡片的右上角,它表示可变字体的可变,或x 样式,表示静态字体支持多少种样式。
  2. 要查看所有可变字体,请选中仅显示可变字体复选框。
  3. 向下滚动(或使用搜索字段)以查找 Roboto。这列出了几个 Roboto 可变字体。
  4. 选择Roboto Serif以打开其详细信息页面。
  5. 在详细信息页面上,选择类型测试器选项卡。对于 Roboto Serif 字体,可变轴列如下所示

Listing of available font axes for Roboto Serif

实时移动任意轴上的滑块,查看它如何影响字体。在编程可变字体时,使用 FontVariation 类来修改字体的设计轴。FontVariation 类符合 OpenType 字体变量规范

静态字体

Google Fonts 还包含静态字体。与可变字体一样,你需要了解字体设计,才能知道有哪些选项可用。同样,Google Fonts 网站可以提供帮助。

使用 Google Fonts 网站

使用字体的详细信息页面来了解有关其静态字体的更多信息。

  1. 要调查可变的 Google 字体,请访问 Google Fonts 网站。请注意,在每个字体卡片的右上角,它表示可变字体的可变,或x 样式,表示静态字体支持多少种样式。
  2. 确保仅显示可变字体选中,并且搜索字段为空。
  3. 打开字体属性菜单。选中样式数复选框,并将滑块移动到 10+。
  4. 选择一种字体,例如Roboto,以打开其详细信息页面。
  5. Roboto 有 12 种样式,每种样式都在其详细信息页面上预览,以及该变体的名称。
  6. 实时移动像素滑块,以在不同像素大小下预览字体。
  7. 选择类型测试器选项卡,查看字体支持的样式。在本例中,有 3 种受支持的样式。
  8. 选择字形选项卡。这将显示字体支持的字形。

使用以下 API 以编程方式更改静态字体(但请记住,这仅在字体设计为支持该功能时才有效)

FontFeature 对应于 OpenType 功能标记,可以将其视为启用或禁用给定字体功能的布尔标志。以下示例适用于 CSS,但说明了这个概念

Example feature tags in CSS

其他资源

以下视频向你展示了 Flutter 排版的某些功能,并将其与 Material Cupertino 外观和感觉(取决于应用程序运行的平台)、动画和自定义片段着色器结合在一起

使用 Flutter 制作精美的设计原型

要阅读一位工程师自定义可变字体并对其变形进行动画处理的体验(也是上述视频的基础),请查看 Playful typography with Flutter,这是一篇 Medium 上的免费文章。关联示例还使用了一个自定义着色器。