@Gang
А что подстановка не помагает? Ваш отпечаток разве не так работает? Просто подставляет список шрифтов.
Ну начнем с того, что html не предоставляет api для получения списка шрифтов. Это можно сделать через флеш. Но если его используете, то об анонимности можно забыть.
А получить список шрифтов через html можно косвенно - создавая элемент с заданным шрифтом и сравнивая размеры с элементом без шрифтов.
Мой метод заключается в том, чтобы подменять шрифты честно, тоесть делать так, чтобы после применения функции font_list шрифты действительно менялись браузере в том потоке, что вызвал функцию.
В сети вы также можете найти реализацию через @font-face.
Но она легко определяется. Определить что шрифт "убрали" из системы можно создав 2 элемента со стилями font-family: Pompadur monospace; и font-family: Pompadur serif; если шрифта действительно нет в системе, то размеры элементов будут разные, если была подмена - размеры будут одинаковыми.
Также можно обратиться к свойству document.fonts, он покажет все шрифты загруженные через @font-face(но не все шрифты которые есть в системе)