Averigua qué fuente usa matplotlib

Estoy buscando una buena forma de obtener el nombre de la fuente predeterminada que usa matplotlib.pyplot. La documentación indica que la fuente se selecciona de la lista en rcParams [‘font.family’] que se ordena de arriba hacia abajo por prioridad. Mi primer bash fue verificar las advertencias, es decir,

import matplotlib.pyplot as plt import warnings for font in plt.rcParams['font.sans-serif']: print font with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") plt.rcParams['font.family'] = font plt.text(0,0,font) plt.savefig(font+'.png') if len(w): print "Font {} not found".format(font) 

lo que me da

 Bitstream Vera Sans Font Bitstream Vera Sans not found DejaVu Sans Lucida Grande Font Lucida Grande not found Verdana Geneva Font Geneva not found Lucid Font Lucid not found Arial Helvetica Font Helvetica not found Avant Garde Font Avant Garde not found sans-serif 

Puedo decir que en esta máquina, DejaVu Sans es utilizado por matplotlib.pyplot. Sin embargo, pensé que debería haber una manera más fácil de obtener esta información.

Editar:

La advertencia puede ser activada directamente a través de

 matplotlib.font_manager.findfont(matplotlib.font_manager.FontProperties(family=font)) 

Para obtener la familia de fonts:

 matplotlib.rcParams['font.family'] 

Si se trata de una familia de fonts general como ‘sans-serif’, use fontfind para encontrar la fuente real:

 >>> from matplotlib.font_manager import findfont, FontProperties >>> font = findfont(FontProperties(family=['sans-serif'])) >>> font '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/mpl-data/fonts/ttf/Vera.ttf' 

Encontré esto en las pruebas unitarias del font_manager : https://github.com/matplotlib/matplotlib/blob/4314d447dfc7127daa80fa295c9bd56cf07faf01/lib/matplotlib/tests/test_font_manager.py