Font Families¶
dartwork-mpl bundles 9 professional font families with a total of 130 font variants. Each family is optimized for different use cases in data visualization.
Why fonts matter¶
The right typeface can transform a chart from amateur to professional. Here’s the same data plotted with default matplotlib fonts (left) and dartwork-mpl fonts (right):
Compare — default matplotlib (left) vs dartwork-mpl (right):
Font Selection Guide¶
Not sure which font to use? Pick based on your primary need:
Need |
Recommended Font |
Why |
|---|---|---|
General chart text |
Roboto (default) |
Clean, legible at all sizes |
UI-style dashboards |
Inter |
Tall x-height, excellent screen readability |
Titles & headings |
InterDisplay |
Tighter spacing optimized for large text |
Dense tables / legends |
Noto Sans Condensed family |
Same readability, narrower footprint |
Korean text (한글) |
Paperlogy |
Native Korean design, 9 weights |
CJK (日本語 / 中文) |
Noto Sans CJK |
Comprehensive CJK glyph coverage |
Math / scientific |
Noto Sans Math |
Full symbol set: ∑ ∫ √ ∞ π θ α β γ |
Multi-language documents |
Noto Sans |
Broadest Unicode coverage |
Fonts in Chart Context¶
Each font plays a specific role in a chart. This annotated example shows which font is used where:
Title uses InterDisplay Bold for maximum impact. Axis labels use Roboto Regular for clear identification. Tick marks use Roboto Light for unobtrusive readability.
Font Pairing Recommendations¶
Curated combinations for common chart styles:
Style |
Title |
Body |
Ticks |
Why it works |
|---|---|---|---|---|
Academic |
InterDisplay SemiBold |
Roboto Light |
Roboto Light |
High contrast between display and body |
Dashboard |
Inter Medium |
Inter Regular |
Noto Sans Condensed |
Uniform feel, condensed ticks save space |
Poster |
InterDisplay Bold |
Roboto Regular |
Roboto Regular |
Large-scale readability |
Korean |
Paperlogy SemiBold |
Paperlogy Light |
Paperlogy Light |
Native Korean design, consistent weight axis |
Size Scale¶
Common size ranges used in charts, mapped to fs() offsets:
Role |
Typical pt |
|
Notes |
|---|---|---|---|
Tick labels |
5.5–7 |
|
Keep light (300) for minimal distraction |
Axis labels |
7.5–10.5 |
|
Base size — matches the active preset |
Legend |
5.5–9 |
|
Smaller than axis labels |
Subtitles |
9–13 |
|
Medium weight (500) adds hierarchy |
Titles |
8.5–14 |
|
Use InterDisplay or bold weight for impact |
Multi-Language Support¶
All fonts below are bundled — no system font installation required:
Multi-Language Support
All rendered with bundled fonts — no system font installation required
Font Family Details¶
Every specimen below is rendered live in your browser using the actual bundled font files — no images, no placeholders.
Roboto (Default)¶
Roboto
Google's flagship sans-serif, default font in dartwork-mpl · 6 weights + 6 italics
Google’s flagship sans-serif typeface and the default font in dartwork-mpl. Roboto features friendly, open curves while maintaining a mechanical skeleton, making it highly legible at all sizes.
Author: Christian Robertson · License: Apache 2.0
All weights
Roboto
Google's flagship sans-serif, default font in dartwork-mpl
Inter¶
Inter
Modern, highly legible sans-serif designed for computer screens · 9 weights + 9 italics
A modern sans-serif typeface designed specifically for computer screens. Inter features a tall x-height for improved readability at small sizes and includes many OpenType features.
Author: Rasmus Andersson · License: OFL 1.1
All weights
Inter
Modern, highly legible sans-serif designed for computer screens
InterDisplay¶
InterDisplay
Display variant of Inter optimized for larger sizes · 9 weights + 9 italics
The display variant of Inter, optimized for larger sizes. Features tighter letter-spacing and refined details that shine at headline sizes.
Author: Rasmus Andersson · License: OFL 1.1
All weights
InterDisplay
Display variant of Inter optimized for larger sizes
Noto Sans¶
NotoSans
Google's versatile sans-serif with excellent language coverage · 9 weights + 9 italics
Google’s Noto Sans provides harmonious typography across hundreds of languages. The name “Noto” comes from “No Tofu”—the goal of eliminating the blank boxes (tofu) that appear when a font lacks a glyph.
Author: Google · License: OFL 1.1
All weights
NotoSans
Google's versatile sans-serif with excellent language coverage
Condensed Variants¶
The Noto Sans family includes three condensed variants. Choose based on how much horizontal space you need to save:
Condensed Variants Comparison
Same text rendered at four widths — choose based on available space
Noto Sans Condensed¶
NotoSans_Condensed
Condensed variant of Noto Sans for space-constrained layouts · 9 weights + 9 italics
All weights
NotoSans_Condensed
Condensed variant of Noto Sans for space-constrained layouts
Noto Sans SemiCondensed¶
NotoSans_SemiCondensed
Semi-condensed variant balancing readability and compactness · 9 weights + 9 italics
All weights
NotoSans_SemiCondensed
Semi-condensed variant balancing readability and compactness
Noto Sans ExtraCondensed¶
NotoSans_ExtraCondensed
Extra condensed for maximum space efficiency · 9 weights + 9 italics
All weights
NotoSans_ExtraCondensed
Extra condensed for maximum space efficiency
Noto Sans Math¶
NotoSansMath
Mathematical symbols and equations font
A dedicated font for mathematical typesetting. Provides comprehensive coverage of mathematical symbols, operators, and special characters.
Variants: 1 (Regular only)
Author: Google · License: OFL 1.1
Paperlogy¶
Paperlogy
Clean, professional font designed for documents · Korean (한글) support · 9 weights
A clean, professional typeface designed for documents. Paperlogy offers excellent readability in dense text environments. Includes full Korean (한글) glyph support.
Author: Freesentation · License: OFL 1.1
All weights
Paperlogy
Clean, professional font designed for documents · Korean (한글) support
Font Weight Reference¶
Weight Name |
Numeric Value |
Description |
|---|---|---|
Thin |
100 |
Extremely light |
ExtraLight |
200 |
Very light |
Light |
300 |
Light (dartwork default) |
Regular |
400 |
Normal |
Medium |
500 |
Slightly bold |
SemiBold |
600 |
Semi-bold |
Bold |
700 |
Bold |
ExtraBold |
800 |
Extra bold |
Black |
900 |
Maximum weight |
Using Weights:
import dartwork_mpl as dm
dm.style.use("scientific") # Base weight = 300 (Light)
# Use the fw() helper for relative weight adjustments
ax.set_title("Title", fontweight=dm.fw(4)) # 300 + 400 = 700 (Bold)
ax.set_xlabel("Label", fontweight=dm.fw(0)) # 300 (base, Light)