Шрифт matplotlib не найден

Я пытаюсь использовать шрифт "Heuristica" на моих графиках matplotlib, но он не появится.

Я определил "Heuristica" на первом месте в rcParameter font.serif → no result

Я изменил font.family на "Heuristica" и получил сообщение

findfont: FontFamily not found

что заставило меня задуматься, потому что установлен Heuristica, и я могу получить доступ к нему из другого программного обеспечения без проблем. Поэтому я использовал fontManager и сделал:

import pylab as pl
la = pl.matplotlib.font_manager.FontManager()
lu = pl.matplotlib.font_manager.FontProperties(family = 'Heuristica')
la.findfont(lu)

и получил:

Out[7]: 'C:\\Windows\\Fonts\\Heuristica-Regular.otf'

Таким образом, очевидно, что можно найти Heuristica. Я посмотрел доступные ttf-шрифты (Как я могу получить список семейства шрифтов (или имя шрифта) в matplotlib), но Heuristica в этом списке отсутствует.

Я был бы рад любой помощи.

Ответ 1

Ну, mdboom решил проблему на github, все кредиты принадлежат ему:

Когда вы добавляете новые шрифты в свою систему, вам нужно удалить файл fontList.cache, чтобы matplotlib мог их найти.

Причина, по которой он работает в строках 4/5 в вашем примере, заключается в том, что вы создаете FontManager с нуля (который выходит на файловую систему и преследует все шрифты). Внутренне, когда matplotlib позже выполняет собственный поиск шрифта, он использует FontManager, который был загружен из кэша на диске в файле fontList.cache.

В долгосрочной перспективе мы планируем перейти на использование механизмов поиска шрифтов ОС, чтобы обойти эту проблему (см. MEP14), но в то же время вам нужно будет удалить файл fontList.cache каждый раз, когда вы захотите matplotlib, чтобы открыть новые шрифты.

Файл fontList.cache находится в папке Userfolder → .matplotlib/fontList.cache для Windows, которая обычно будет C:\Users\yourUsername\.matplotlib\fontList.cache