Skip to content

Fontes customizadas

O PDF renderer usa Helvetica por padrão. Para usar outras fontes, carregue arquivos TTF com o FontLoader.

FontLoader

O FontLoader é independente de runtime. A fonte dos bytes é injetada via FontBytesLoader:

Flutter apps (asset bundle)

dart
import 'package:sulfite_core/sulfite_core.dart';

final fonts = await FontLoader.load(
  loader: const AssetFontBytesLoader(),   // usa rootBundle
  regular: 'assets/fonts/Inter-Regular.ttf',
  bold: 'assets/fonts/Inter-Bold.ttf',
  italic: 'assets/fonts/Inter-Italic.ttf',
  boldItalic: 'assets/fonts/Inter-BoldItalic.ttf',
);

CLI / servidor (dart:io)

dart
final fonts = await FontLoader.load(
  loader: const FileFontBytesLoader(),    // usa dart:io File
  regular: '/usr/share/fonts/Inter-Regular.ttf',
  bold: '/usr/share/fonts/Inter-Bold.ttf',
);

Bytes diretos (qualquer ambiente)

dart
final bytes = await File('Inter-Regular.ttf').readAsBytes();
final font = FontLoader.fromBytes(bytes);
final renderer = PdfRenderer(fontRegular: font);

Usando com o PdfRenderer

O FontLoader retorna um objeto que pode ser passado ao PdfRenderer para uso nas renderizações.

Fontes no CLI

O CLI aceita a flag -f com o caminho para um diretório de fontes:

bash
./sulfite -i report.json -d data.json -o output.pdf -f ./fonts/

Arquivos esperados no diretório:

fonts/
├── regular.ttf
├── bold.ttf
├── italic.ttf
└── bolditalic.ttf

Limitações

  • Apenas fontes TTF são suportadas
  • O HTML renderer não aplica fontes customizadas (usa a fonte do sistema/browser)
  • O CSV e Excel renderers não usam fontes

Sulfite do 🇧🇷 para o mundo © 2026 Rafael S. Pinheiro