Context
Discovered during Course Builder Manim scene development, consistent with issue #4 (font enforcement). Using weight=BOLD on Text() causes Pango to silently substitute a different font family.
Problem
Text.set_default(font="Liberation Sans")
# Later in construct():
title = Text("My Title", font_size=36, weight=BOLD) # NOT Liberation Sans!
Pango resolves the bold weight by finding a different font family that has a bold variant, silently ignoring the configured font. The rendered text has visibly different letter shapes and kerning compared to non-bold text.
Workaround
Never use weight=BOLD. Instead, use slightly larger font sizes for emphasis:
title = Text("My Title", font_size=36, color=C_ACCENT) # Larger + colored = emphasis
body = Text("Regular text", font_size=16, color=C_WHITE)
Recommendations
Severity
Medium — produces inconsistent visual output with no error or warning. Contradicts the font consistency enforced by Text.set_default().
Context
Discovered during Course Builder Manim scene development, consistent with issue #4 (font enforcement). Using
weight=BOLDonText()causes Pango to silently substitute a different font family.Problem
Pango resolves the bold weight by finding a different font family that has a bold variant, silently ignoring the configured font. The rendered text has visibly different letter shapes and kerning compared to non-bold text.
Workaround
Never use
weight=BOLD. Instead, use slightly larger font sizes for emphasis:Recommendations
weight=BOLDdocgen validateshould flag anyweight=BOLDin scene files and warn about font substitutionSeverity
Medium — produces inconsistent visual output with no error or warning. Contradicts the font consistency enforced by
Text.set_default().