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.ttfLimitaçõ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