How to load a .ttf file in Matplotlib using mpl.rcParams?

To load a custom .ttf file in Matplotlib using mpl.rcParams, you need to register the font with the font manager and set it as the default font family. This allows you to use custom fonts that aren't installed system-wide.

Basic Font Loading Process

The process involves these key steps −

  • Import the required modules: pyplot and font_manager
  • Create a FontProperties object from the .ttf file path
  • Extract the font name using get_name()
  • Set the font family in rcParams
  • Apply the font to your plots

Example

Here's how to load and use a custom .ttf font file ?

from matplotlib import pyplot as plt, font_manager as fm

# Configure figure settings
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# Path to your .ttf file (update this path to match your font location)
path = '/usr/share/fonts/truetype/malayalam/Karumbi.ttf'

# Create FontProperties object from the .ttf file
fprop = fm.FontProperties(fname=path)

# Set the font family in rcParams
plt.rcParams['font.family'] = fprop.get_name()

# Create a plot using the custom font
fig, ax = plt.subplots()
ax.set_title('This is my title with custom font!', size=40)

plt.show()

Alternative Approach - Using Font Registration

For better font management, you can register the font first ?

from matplotlib import pyplot as plt, font_manager as fm

# Register the font file
font_path = '/path/to/your/font.ttf'
fm.fontManager.addfont(font_path)

# Get the font name
font_name = fm.FontProperties(fname=font_path).get_name()

# Set as default font
plt.rcParams['font.family'] = font_name

# Create plot
fig, ax = plt.subplots()
ax.set_title('Title with registered custom font', fontsize=20)
plt.show()

Key Points

  • FontProperties(fname=path) creates a font object from the file path
  • get_name() extracts the actual font name from the .ttf file
  • Setting rcParams['font.family'] makes it the default font for all text
  • Font changes apply to all subsequent text elements (titles, labels, legends)
  • Ensure the .ttf file path exists and is accessible

Troubleshooting

If the font doesn't load properly ?

  • Verify the .ttf file path is correct
  • Check file permissions
  • Use fm.fontManager.findfont(font_name) to verify font registration
  • Clear the font cache with fm._rebuild() if needed

Conclusion

Loading custom .ttf fonts in Matplotlib requires creating a FontProperties object and setting the font family in rcParams. This approach ensures consistent font usage across all plot elements and provides better typography control for your visualizations.

Updated on: 2026-03-25T23:13:28+05:30

544 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements