Fonts

dartwork-mpl ships 20 publication-ready fonts, registered with matplotlib the moment you import dartwork_mpl. Browse them below, preview your own text, and copy a ready-to-paste font.family setup.

Font browser

Type your own preview text, narrow by script or style, and open any font for its weight ladder and a ready-to-paste rcParams snippet. Every sample is drawn by the font’s own bundled file — what you see here is exactly what your chart will render.

Star a card to pin it, and pinned fonts stack in the bottom tray rendering the same sentence at the same size. Type your own sentence in the preview field and every card and the tray retype it, so you can weigh finalists on your real copy.

20 of 20 fonts

How registration works

dartwork-mpl bundles 262 text font files organized into 22 documented file groups. Matplotlib registers those files as 20 matplotlib family names on import dartwork_mpl, with bundled copies promoted ahead of same-named system fonts. Condensed and SemiCondensed Noto Sans files register as Noto Sans with width metadata, so they are documented as file groups rather than separate font.family names.

The family names below are the names to put in font.family. For every weight and specimen sheet, see Fonts.

Quick Start

import dartwork_mpl as dm
import matplotlib.pyplot as plt

dm.style.use("scientific")  # Roboto-led default chain
plt.rcParams["font.family"] = ["Inter", "Roboto", "Noto Sans Math"]

fig, ax = plt.subplots(figsize=dm.figsize("13cm", "standard"))
ax.set_title("Publication-ready title", fontsize=dm.fs(3), fontweight=dm.fw(2))
ax.set_xlabel("X axis", fontsize=dm.fs(0), fontweight=dm.fw(0))
ax.set_ylabel("Y axis", fontsize=dm.fs(0), fontweight=dm.fw(0))
dm.simple_layout(fig)

Use relative helpers for typography that tracks the active preset:

ax.text(
    0.5,
    0.5,
    "annotation",
    fontsize=dm.fs(-1),
    fontweight=dm.fw(1),
)

For monospace Latin plus monospaced Hangul, lead with the Latin mono and keep D2Coding as the Korean fallback:

plt.rcParams["font.family"] = ["JetBrains Mono", "D2Coding"]

The three serif fonts are deliberately opt-in; use one when a journal, report, or book needs a serif voice:

plt.rcParams["font.family"] = ["Source Serif 4", "Noto Sans Math"]

Roles

The browser’s role badges follow this table; use it as the print-friendly summary.

Role

Default

Alternates

When to pick

Body

Roboto

Inter, IBM Plex Sans, Source Sans 3, Noto Sans

General chart labels, ticks, legends, and captions.

Display

Inter Display

Large titles, section heads, and poster-scale numbers.

Korean body

Paperlogy

Pretendard, Noto Sans CJK KR

Hangul-first and bilingual figures.

Serif

Source Serif 4

Noto Serif, IBM Plex Serif

Opt-in journal, report, or book figures that need a serif voice.

Mono

JetBrains Mono

IBM Plex Mono, Roboto Mono, Source Code Pro

Code, timestamps, aligned values, and dense numeric columns.

Korean mono

D2Coding

Monospaced Hangul code blocks and aligned Korean tables.

Fallback tail

Noto Sans Math

Noto Sans Symbols, Noto Sans Symbols 2

Math operators, arrows, signs, and symbol coverage at the end of the fallback chain.

Typography Matrix

FamilyRoleWeightsAligned digitstnum availableChart glyphsHangulLicense
Robotobody100, 200, 300, 400, 500, 600, 700, 800, 900digitsyes7/8 −×±°μσΔ-OFL-1.1
Interbody100, 200, 300, 400, 500, 600, 700, 800, 900-yes8/8 −×±→°μσΔ-OFL-1.1
IBM Plex Sansbody100, 200, 300, 400, 500, 600, 700digits-8/8 −×±→°μσΔ-OFL-1.1
Source Sans 3body200, 300, 400, 500, 600, 700, 900digits-8/8 −×±→°μσΔ-OFL-1.1
Noto Sansbody100, 200, 300, 400, 500, 600, 700, 800, 900digitsyes7/8 −×±°μσΔ-OFL-1.1
Inter Displaydisplay100, 200, 300, 400, 500, 600, 700, 800, 900-yes8/8 −×±→°μσΔ-OFL-1.1
Paperlogykr-body250, 300, 400, 500, 600, 700, 800, 900digits-5/8 −×±→°yesOFL-1.1
Pretendardkr-body100, 200, 300, 400, 500, 600, 700, 800, 900-yes8/8 −×±→°μσΔyesOFL-1.1
Noto Sans CJK KRkr-body400digits-3/8 ×±°yesOFL-1.1
Source Serif 4serif200, 300, 400, 600, 700, 900digitsyes8/8 −×±→°μσΔ-OFL-1.1
Noto Serifserif100, 200, 300, 400, 500, 600, 700, 800, 900digitsyes7/8 −×±°μσΔ-OFL-1.1
IBM Plex Serifserif100, 200, 300, 400, 500, 600, 700digits-8/8 −×±→°μσΔ-OFL-1.1
JetBrains Monomono100, 200, 300, 400, 500, 600, 700, 800mono-8/8 −×±→°μσΔ-OFL-1.1
IBM Plex Monomono100, 200, 300, 400, 500, 600, 700mono-5/8 −×±→°-OFL-1.1
Roboto Monomono100, 200, 300, 400, 500, 600, 700mono-7/8 −×±°μσΔ-OFL-1.1
Source Code Promono200, 300, 400, 500, 600, 700, 900mono-8/8 −×±→°μσΔ-OFL-1.1
D2Codingmono-kr400, 700mono-8/8 −×±→°μσΔyesOFL-1.1
Noto Sans Mathfallback-tail400digits-8/8 −×±→°μσΔ-OFL-1.1
Noto Sans Symbolsfallback-tail400digits-4/8 −×→°-OFL-1.1
Noto Sans Symbols 2fallback-tail400digits-3/8 −×°-OFL-1.1

Full Specimens

The full static specimen catalog lives in Fonts. For the reasoning behind the font roles, fallback chain, and numeric-axis gates, see Design rationale › Typography.