Skip to content

MLD306: Literal font is not in the profile's allowed-fonts list

qual reports MLD306 when a literal font= keyword on a knowledge-resolved Text() / MarkupText() construction names a font family outside a profile's configured allowed-fonts list.

  • Default severity: info
  • Minimum confidence: high
  • Implementation phase: 4
  • Fix: none

allowed-fonts declares the fonts assumed installed on the render platform. A family outside the list makes Pango fall back to a different font there, silently changing typography (metrics, line breaks, glyph coverage) between machines. The diagnostic lists exactly the profiles whose allowlist misses the font (applicable_profiles).

Silent by design:

  • profiles with an empty allowed-fonts list — an empty list means "no allowlist configured", never "nothing is allowed";
  • comparison is case-insensitive (fontconfig matches families tolerantly), so font="noto sans" against ["Noto Sans"] is fine;
  • non-literal fonts and constructions the knowledge profile cannot resolve.

Wrong (profile declares allowed-fonts = ["Noto Sans"]):

Text("Title", font="Comic Sans MS")   # not installed on the render host

Right:

Text("Title", font="Noto Sans")