Я пытаюсь изменить шрифт по умолчанию matplotlib на Helvetica Neue. На моем Mac с EPD/Canopy все работало хорошо некоторое время назад.
Попытка сделать то же самое на ubuntu сейчас и не работает.
Это то, что я сделал:
-
Установленный Helvetica Neue
$ fc-match 'Helvetica Neue':Light HelveticaNeue-Light.otf: "Helvetica Neue" "細體"
-
Преобразовал odt/dfont в ttf:
fondu -show HelveticaNeue.dfont
-
изменил matplotlibrc на
$ cat ~/.config/matplotlib/matplotlibrc ... font.family: Helvetica Neue
Я также пробовал:
font.family: sans-serif font.sans-serif: Helvetica Neue
-
Я удалил кеш шрифта
rm ~/.config/matplotlib/fontList.cache
Но ни один из этих шагов не работает для меня.
$ python -c 'from matplotlib import pyplot as plt; plt.plot(1); plt.savefig("/tmp/test.png")'
/usr/local/lib/python2.7/dist-packages/matplotlib-1.3.0-py2.7-linux-x86_64.egg/matplotlib/font_manager.py:1236:
UserWarning: findfont: Font family ['Helvetica Neue'] not found. Falling back to Bitstream Vera Sans
(prop.get_family(), self.defaultFamily [fontext]))
Версия 1.3.0
$ python -c 'import matplotlib; print matplotlib.__version__'
1.3.0
Я также попытался переместить шрифты на ~/.config/matplotlib/fonts/ttf
, но это не сработало.
EDIT: Как я предложил, я попытался выбрать конкретный шрифт для определенного текста.
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager
path = '/home/<myusername>/.fonts/HelveticaNeue.ttf'
prop = font_manager.FontProperties(fname=path)
prop.set_weight = 'light'
mpl.rcParams['font.family'] = prop.get_name()
mpl.rcParams['font.weight'] = 'light'
fig, ax = plt.subplots()
ax.set_title('Text in a cool font', fontproperties=prop, size=40)
plt.savefig('/tmp/test2.png')
Но это не имеет значения.
/usr/local/lib/python2.7/dist-packages/matplotlib-1.3.0-py2.7-linux-x86_64.egg/matplotlib/font_manager.py:1236:
UserWarning: findfont: Font family ['Helvetica Neue'] not found. Falling back to Bitstream Vera Sans
Однако я, похоже, испытываю эту проблему только с этим шрифтом Helvetica/Helvetica Neue. (prop.get_family(), self.defaultFamily [fontext]))