Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

[Bug]: font cache clearing should not need to be done for fresh install... #25306

Copy link
Copy link
Open
@jklymak

Description

@jklymak
Issue body actions

Bug summary

Somewhat a duplicate of #22281, but we should be doing something for users to rebuild the font cache if there is a failure in findfont.

Code for reproduction

New conda environment, with matplotlib 3.7.0


import matplotlib.pyplot as plt

plt.plot(range(10))
plt.xlabel('$\delta$')
plt.show()

Actual outcome

findfont: Font family ['cmsy10'] not found. Falling back to DejaVu Sans.
Traceback (most recent call last):
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/backend_bases.py", line 1222, in _on_timer
    ret = func(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/backends/backend_macosx.py", line 68, in callback_func
    callback()
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/backends/backend_macosx.py", line 88, in _draw_idle
    self.draw()
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/backends/backend_macosx.py", line 50, in draw
    super().draw()
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/backends/backend_agg.py", line 400, in draw
    self.figure.draw(self.renderer)
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/artist.py", line 95, in draw_wrapper
    result = draw(artist, renderer, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/artist.py", line 72, in draw_wrapper
    return draw(artist, renderer)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/figure.py", line 3125, in draw
    mimage._draw_list_compositing_images(
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/image.py", line 131, in _draw_list_compositing_images
    a.draw(renderer)
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/artist.py", line 72, in draw_wrapper
    return draw(artist, renderer)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/axes/_base.py", line 3066, in draw
    mimage._draw_list_compositing_images(
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/image.py", line 131, in _draw_list_compositing_images
    a.draw(renderer)
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/artist.py", line 72, in draw_wrapper
    return draw(artist, renderer)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/axis.py", line 1379, in draw
    self.label.draw(renderer)
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/artist.py", line 72, in draw_wrapper
    return draw(artist, renderer)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/text.py", line 752, in draw
    bbox, info, descent = self._get_layout(renderer)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/text.py", line 386, in _get_layout
    w, h, d = _get_text_metrics_with_cache(
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/text.py", line 97, in _get_text_metrics_with_cache
    return _get_text_metrics_with_cache_impl(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/text.py", line 105, in _get_text_metrics_with_cache_impl
    return renderer_ref().get_text_width_height_descent(text, fontprop, ismath)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/backends/backend_agg.py", line 230, in get_text_width_height_descent
    self.mathtext_parser.parse(s, self.dpi, prop)
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/mathtext.py", line 226, in parse
    return self._parse_cached(s, dpi, prop)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/mathtext.py", line 240, in _parse_cached
    fontset = fontset_class(prop, load_glyph_flags)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/_mathtext.py", line 603, in __init__
    self.bakoma = BakomaFonts(*args, **kwargs)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/_mathtext.py", line 385, in __init__
    fullpath = findfont(val)
               ^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/font_manager.py", line 1259, in findfont
    ret = self._findfont_cached(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/font_manager.py", line 1410, in _findfont_cached
    return self.findfont(default_prop, fontext, directory,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jklymak/miniconda3/envs/boo/lib/python3.11/site-packages/matplotlib/font_manager.py", line 1263, in findfont
    raise ret
ValueError: Failed to find font DejaVu Sans:style=normal:variant=normal:weight=normal:stretch=normal:size=10.0, and fallback to the default font was disabled

Expected outcome

A figure with a \delta symbol for an xlabel.

Additional information

Works fine if I clear the font list from ~/.matplotlib.

Operating system

MacOS

Matplotlib Version

3.7.0

Matplotlib Backend

No response

Python version

3.11

Jupyter version

No response

Installation

conda

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.