Flutter字体管理插件google_language_fonts的使用

Flutter字体管理插件google_language_fonts的使用

pub package build

google_language_fonts

google_language_fonts 是一个简单的库,用于在您的语言环境中使用兼容的字体,而不用担心出现无法识别的字符。它扩展了 google_fonts 包,并允许您在Flutter应用中轻松使用超过950种字体及其变体。

这些字体与以下27种语言匹配,您可以直接从IDE中使用它们:

  • 阿拉伯语(Arabic)
  • 孟加拉语(Bengali)
  • 布尔语(Gurmukhi)
  • 缅甸语(Myanmar)
  • 西里尔语(Cyrillic)
  • 扩展西里尔语(CyrillicExt)
  • 捷克语(Czech)
  • 梵文(Devanagari)
  • 希腊语(Greek)
  • 希腊扩展(GreekExt)
  • 古吉拉特语(Gujarati)
  • 加尔各答语(Kannada)
  • 朝鲜语(Korean)
  • 马拉雅拉姆语(Malayalam)
  • 马拉地语(Marathi)
  • 泰米尔语(Tamil)
  • 泰卢固语(Telugu)
  • 日语(Japanese)
  • 老挝语(Khmer)
  • 俄语(Russian)
  • 泰语(Thai)
  • 土耳其语(Turkish)
  • 越南语(Vietnamese)

要将其用作语言字体,只需添加 <Language>Fonts 后缀到支持的语言中即可,例如 LatinFontsCyrillicFonts 等等。

Prefix
阿拉伯语(Arabic) 古鲁穆基语(Gurmukhi) 马拉雅拉姆语(Malayalam)
孟加拉语(Bengali) 希伯来语(Hebrew) 缅甸语(Myanmar)
西里尔语(Cyrillic) 简体中文(ChineseSimpl) * 奥里亚语(Oriya)
扩展西里尔语(CyrillicExt) 日语(Japanese) 僧伽罗语(Sinhala)
捷克语(Czech) 卡纳达语(Kannada) 泰米尔语(Tamil)
梵文(Devanagari) 高棉语(Khmer) 泰卢固语(Telugu)
希腊语(Greek) 韩语(Korean) 泰语(Thai)
希腊扩展(GreekExt) 拉丁语(Latin) ** 藏语(Tibetan)
古吉拉特语(Gujarati) 扩展拉丁语(LatinExt) 越南语(Vietnamese)
  • 简体中文

** 这个语言子集包含几乎所有的字体(与基础的 GoogleFonts 相同)

开始使用

通过 google_language_fonts 包,您无需将 .ttf.otf 文件存储在您的资源文件夹中并映射到 pubspec.yaml 中。相反,它们可以在运行时通过HTTP获取一次,并缓存在应用程序的文件系统中。这对于开发非常理想,并且对于希望减少应用程序包大小的生产应用来说也是一个优选行为。不过,您也可以随时选择将字体文件包含在资源中,Google Fonts 包会优先加载预捆绑的文件而不是通过HTTP获取。

例如,如果您想在Flutter应用中使用任何一种来自Google Fonts的西里尔语字体,您需要尝试一种直到找到满足需求的字体。借助此包,您可以从IDE中立即尝试字体,因为有自动建议功能。

首先,将 google_language_fonts 包添加到您的 pubspec 依赖项中:

dependencies:
  google_language_fonts: ^x.x.x

然后导入 google_language_fonts 包:

import 'package:google_language_fonts/google_language_fonts.dart';

接下来,使用默认的 TextStyle 来应用字体:

Text(
  'This is Google Fonts',
  style: LatinFonts.playfairDisplay(),
),

或者,如果您想要动态加载字体:

Text(
  'This is Google Fonts',
  style: GoogleFonts.getFont('Lato'),
),

您还可以使用现有的 TextStyle

Text(
  'This is Google Fonts',
  style: CyrillicFonts.robotoCondensed(
    textStyle: TextStyle(color: Colors.blue, letterSpacing: .5),
  ),
),

或者:

Text(
  'This is Google Fonts',
  style: CyrillicFonts.robotoCondensed(textStyle: Theme.of(context).textTheme.display1),
),

要覆盖 fontSizefontWeightfontStyle,可以这样做:

Text(
  'This is Google Fonts',
  style: LatinFonts.playfairDisplay(
    textStyle: Theme.of(context).textTheme.display1,
    fontSize: 48,
    fontWeight: FontWeight.w700,
    fontStyle: FontStyle.italic,
  ),
),

您还可以使用例如 CyrillicFonts.robotoCondensedTextTheme() 来创建或修改整个文本主题以使用 "robotoCondensedTextTheme" 字体:

MaterialApp(
  theme: ThemeData(
    textTheme: CyrillicFonts.robotoCondensedTextTheme(
      Theme.of(context).textTheme,
    ),
  ),
);

或者,如果您想要一个 TextTheme 其中几个样式应该使用不同的字体:

final textTheme = Theme.of(context).textTheme;

MaterialApp(
  theme: ThemeData(
    textTheme: CyrillicFonts.robotoCondensedTextTheme(textTheme).copyWith(
      body1: ArabicFonts.mada(textStyle: textTheme.body1),
    ),
  ),
);

在应用程序的资源中捆绑字体文件

google_language_fonts 包会自动使用 pubspec.yaml 中的 assets 下的匹配字体文件(而不是在运行时通过HTTP获取)。一旦您确定了要在应用中使用的字体:

  1. https://fonts.google.com 下载字体文件。 您只需要下载任何给定字体系列的权重和样式。斜体样式将在文件名中包含 Italic。字体权重映射到文件名如下:
{
  FontWeight.w100: 'Thin',
  FontWeight.w200: 'ExtraLight',
  FontWeight.w300: 'Light',
  FontWeight.w400: 'Regular',
  FontWeight.w500: 'Medium',
  FontWeight.w600: 'SemiBold',
  FontWeight.w700: 'Bold',
  FontWeight.w800: 'ExtraBold',
  FontWeight.w900: 'Black',
}
  1. 将这些字体移动到顶级的应用程序目录中(例如 google_fonts)。

google_fonts_folder

  1. 确保在您的 pubspec.yamlassets 下列出了该文件夹(例如 google_fonts/)。

google_fonts_pubspec_assets

注意:由于这些文件被列为资产,因此无需在 pubspec.yamlfonts 部分中列出它们。这可以通过API一致命名文件实现(因此请确保不要重命名它们!)。

兼容性

由于本包提供了更快的IDE自动建议功能,并避免与官方包冲突,因此不能直接调用 GoogleFonts 类中的字体。然而,本包与官方的 google_fonts 包兼容。如果您想要访问任意字体而不受限于某种语言,您可以:

  • 使用 LatinFonts 前缀,其中包含几乎所有来自基础 GoogleFonts 的字体,例如 LatinFonts.lato()
  • 动态调用字体:GoogleFonts.getFont('Lato')
  • 添加官方的 google_fonts 包并这样使用 GoogleFonts
// 只有添加了 google_fonts 包后才能使用 'as' 关键字访问它,例如:
import 'package:google_fonts/google_fonts.dart' as basic; // basic.GoogleFonts.lato()

字体授权

fonts.google.com 上的字体包括每种字体的授权文件。例如,Lato 字体附带了一个 OFL.txt 文件。

一旦您决定在发布的应用中使用哪些字体,您应该下载并添加适当的授权到您的Flutter应用的 LicenseRegistry 中。

例如:

void main() {
  LicenseRegistry.addLicense(() async* {
    final license = await rootBundle.loadString('google_fonts/OFL.txt');
    yield LicenseEntryWithLineBreaks(['google_fonts'], license);
  });

  runApp(...);
}
1 回复

更多关于Flutter字体管理插件google_language_fonts的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


google_language_fonts 是一个用于在 Flutter 应用中使用的字体管理插件,它提供了对 Google Fonts 的支持,可以方便地加载和使用 Google Fonts 中的字体。以下是使用 google_language_fonts 插件的详细步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 google_language_fonts 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  google_language_fonts: ^1.1.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入插件

在你的 Dart 文件中导入 google_language_fonts 插件。

import 'package:google_language_fonts/google_language_fonts.dart';

3. 使用 Google Fonts

google_language_fonts 插件提供了多种方式来使用 Google Fonts。你可以通过 GoogleLanguageFonts 类来获取字体,并将其应用到文本样式(TextStyle)中。

3.1 使用特定字体

Text(
  'Hello, World!',
  style: GoogleLanguageFonts.lato(
    fontSize: 24,
    fontWeight: FontWeight.bold,
  ),
);

在这个例子中,GoogleLanguageFonts.lato 使用了 Google Fonts 中的 Lato 字体,并设置了字体大小为 24 和字体粗细为粗体。

3.2 使用多种语言字体

google_language_fonts 支持多种语言的字体。你可以使用 GoogleLanguageFonts 中的其他方法来获取不同语言的字体。

Text(
  '你好,世界!',
  style: GoogleLanguageFonts.notoSansSC(
    fontSize: 24,
    fontWeight: FontWeight.normal,
  ),
);

在这个例子中,GoogleLanguageFonts.notoSansSC 使用了适用于中文的 Noto Sans SC 字体。

4. 自定义字体样式

你可以像使用普通的 TextStyle 一样,对 Google Fonts 进行自定义。

Text(
  'Bonjour le monde!',
  style: GoogleLanguageFonts.roboto(
    fontSize: 20,
    color: Colors.blue,
    fontStyle: FontStyle.italic,
  ),
);
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!