getFontSet method
({Font bold, Font boldItalic, Font italic, Font regular})
getFontSet()
Returns the set of 4 fonts (regular, bold, italic, bold-italic) for a given font family.
Implementation
({pw.Font regular, pw.Font bold, pw.Font italic, pw.Font boldItalic})
getFontSet(String fontFamily, String? styleName) {
final lower = fontFamily.toLowerCase();
final isCode = styleName == 'code';
// Explicit DejaVu Sans mapping (bundled fallback)
if (lower.contains('dejavu')) {
return (
regular: sansRegular ?? pw.Font.helvetica(),
bold: sansBold ?? pw.Font.helveticaBold(),
italic: sansItalic ?? pw.Font.helveticaOblique(),
boldItalic: sansBoldItalic ?? pw.Font.helveticaBoldOblique(),
);
}
if (isCode || lower.contains('courier') || lower.contains('mono') || lower.contains('consolas')) {
return (
regular: monoRegular ?? pw.Font.courier(),
bold: monoBold ?? pw.Font.courierBold(),
italic: monoRegular ?? pw.Font.courierOblique(), // Mono has no italic
boldItalic: monoBold ?? pw.Font.courierBoldOblique(),
);
}
if (lower.contains('times') || lower.contains('georgia') || lower.contains('serif') ||
lower.contains('garamond') || lower.contains('palatino')) {
return (
regular: serifRegular ?? pw.Font.times(),
bold: serifBold ?? pw.Font.timesBold(),
italic: serifItalic ?? pw.Font.timesItalic(),
boldItalic: serifBoldItalic ?? pw.Font.timesBoldItalic(),
);
}
// Default: sans-serif (DejaVu Sans, Helvetica, Roboto, Noto Sans, etc.)
return (
regular: sansRegular ?? pw.Font.helvetica(),
bold: sansBold ?? pw.Font.helveticaBold(),
italic: sansItalic ?? pw.Font.helveticaOblique(),
boldItalic: sansBoldItalic ?? pw.Font.helveticaBoldOblique(),
);
}