Open
Description
Bug summary
Per character font fallback (#20740) works great, except in tick labels.
Code for reproduction
import matplotlib.pyplot as plt
# CMU fonts available here : https://www.1001fonts.com/download/cmu.zip
plt.rcParams["font.family"] = ["CMU Bright", "DejaVu Sans"]
s = "There are \u2212 \u00D7 in between!"
plt.figtext(0.18, 0.45, s)
plt.gcf().suptitle(s)
plt.gca().set_title(s)
plt.xscale("log")
plt.xlim(1e-2, 6e-2)
plt.show()
Actual outcome
In the tick labels, characters not covered by CMU Bright are rendered with a placeholder instead of falling back to DejaVu
Expected outcome
Tick labels should fall back to DejaVu for \u2212
(minus sign) and \u00D7
(times sign) as in the other text instances.
Additional information
It seems to happen only with tick labels, other instances of text rendering work as intended in #20740. I get the same outcome with both macosx
and TkAgg
backends
I get the following warnings:
Font 'default' does not have a glyph for '\u2212' [U+2212], substituting with a dummy symbol.
Font 'default' does not have a glyph for '\\times' [U+d7], substituting with a dummy symbol.
Operating system
macOS 14.3.1
Matplotlib Version
3.8.3
Matplotlib Backend
MacOSX
Python version
3.11.7
Jupyter version
No response
Installation
pip