Skip to content

daveragos/geez_fonts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

geez_fonts

pub package License: BSD-3-Clause

A Flutter package that enables dynamic loading and usage of Ethiopic (Ge'ez) fonts from the Geez Archive. Provides 150+ font families with full TextStyle and TextTheme support — just like google_fonts, but for Ethiopic typography.

Showcase

Light Mode Dark Mode

The package dynamically loads and caches professional Ethiopic typography directly from the Geez Archive.

Features

  • 🔤 150+ Ethiopic font families from the Geez Archive
  • Dynamic loading — fonts are fetched at runtime, no bundling needed
  • 💾 Automatic caching — fonts are cached to disk after first download
  • 🎨 Named static methodsGeezFonts.benaiah(), GeezFonts.adwa(), etc.
  • 📖 TextTheme support — apply any font across your entire theme
  • 🔍 Font lookupGeezFonts.getFont('Adwa') for dynamic font selection
  • ⚙️ Configurable — disable runtime fetching for bundled-only setups

Installation

dart pub add geez_fonts

Or add to your pubspec.yaml:

dependencies:
  geez_fonts: ^0.1.0

Usage

Apply a font to a TextStyle

import 'package:geez_fonts/geez_fonts.dart';

Text(
  'ሰላም ዓለም',
  style: GeezFonts.benaiah(fontSize: 24),
)

Merge with an existing TextStyle

Text(
  'ሰላም ዓለም',
  style: GeezFonts.adwa(
    textStyle: Theme.of(context).textTheme.headlineMedium,
    color: Colors.amber,
  ),
)

Dynamic font selection

// Look up a font by name at runtime
final style = GeezFonts.getFont('Brana', fontSize: 18);

Apply a font to an entire TextTheme

MaterialApp(
  theme: ThemeData(
    textTheme: GeezFonts.benaiahTextTheme(),
  ),
)

Merge with an existing TextTheme

MaterialApp(
  theme: ThemeData(
    textTheme: GeezFonts.benaiahTextTheme(
      Theme.of(context).textTheme,
    ),
  ),
)

List all available fonts

final allFonts = GeezFonts.asMap();
print(allFonts.keys.toList()); // ['Benaiah', 'Adwa', 'Brana', ...]

Configuration

// Disable runtime font fetching (e.g. for offline-only apps)
GeezFonts.config.allowRuntimeFetching = false;

Wait for fonts to load

// Ensure fonts are loaded before rendering
await GeezFonts.pendingFonts();

Available Fonts

Browse all available fonts at geezarchive.com. Every font listed there has a corresponding static method on the GeezFonts class — the method name is derived from the font's slug.

How It Works

  1. When you call GeezFonts.benaiah(), the package returns a TextStyle immediately with the font family set.
  2. In the background, the font file is fetched from the Geez Archive (or loaded from the local cache).
  3. Once loaded, it's registered with Flutter's font engine via FontLoader.
  4. The widget tree rebuilds and the font appears.

Credits

License

BSD 3-Clause — see LICENSE for details.

About

A Flutter package that enables dynamic loading and usage of Ethiopic (Ge'ez) fonts from the Geez Archive. Provides 150+ font families with full TextStyle and TextTheme support — just like google_fonts, but for Ethiopic typography.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages