Получите список шрифтов в расширении Firefox

В моем расширении Firefox окно настроек, по-видимому, сломалось где-то после Firefox 2.0, и (частично) проблема заключается в следующей строке:

var fontList  = Components.classes["@mozilla.org/gfx/fontlist;1"].
    createInstance(Components.interfaces.nsIFontList);

какие ошибки с

Error: Components.classes['@mozilla.org/gfx/fontlist;1'] is undefined

Некоторые поиски показывают, что список шрифтов на самом деле является оболочкой для nsIFontEnumerator (https://bugzilla.mozilla.org/show_bug.cgi?id=397813), но я не могу найти ничего о том, как использовать nsIFontEnumerator.

У самого Stackoverflow есть только один вопрос, касающийся темы, на который нет ответа: Как найти шрифт Типа?


person Kalle    schedule 30.06.2011    source источник


Ответы (1)


Интерфейс, на который вы ссылаетесь, больше не существует в текущих версиях Firefox. Однако существует nsIFontEnumerator:

var enumerator = Components.classes["@mozilla.org/gfx/fontenumerator;1"]
                           .getService(Components.interfaces.nsIFontEnumerator);
var fonts = enumerator.EnumerateAllFonts({});

Похоже, что это не задокументировано в MDC, поэтому http://www.oxymoronical.com/experiments/apidocs/interface/nsIFontEnumerator - лучший справочник, который вы можете получить.

person Wladimir Palant    schedule 01.07.2011
comment
Великолепно, спасибо, это все еще работает! Это все еще рекомендуемый способ сделать это? В конце концов я напечатаю это (windows / mac / linux), но мне нужно быстрое решение прямо сейчас. - person Noitidart; 17.04.2016
comment
Поскольку это недокументированная функция, ее нельзя рекомендовать - могут быть изменены в любое время. Однако, по всей видимости, этот конкретный интерфейс был стабильным в течение последних пяти лет. - person Wladimir Palant; 17.04.2016