2009-12-25 2 views
11

Это описание this question.Получить компьютерное семейство шрифтов в JavaScript

Я работаю над компонентом для CKEditor, отлажено версия шрифта ниспадающего меню, которые всегда отображают выбранные значения семейства шрифтов/размера, независимо от того, где они были определены, используя computedStyle и супруги.

Как вы можете видеть в другом вопросе, определение размера шрифта теперь кросс-браузер. Теперь мне не удается работать с атрибутом fontFamily. Моя общая функция «вычисленного стиля» возвращает только полную строку шрифта, которая была определена, например.

Times New Roman, Georgia, Serif 

Что мне нужно для того, чтобы соответствовать настройки против записей в семействе шрифтов выпадающего списка, является фиксированное имя шрифта фактического шрифтаэлемента DOM Я проверка.

Это можно сделать как-то, по крайней мере, для самых распространенных веб-шрифтов?

ответ

9

Я не думаю, что есть какие-либо методы, чтобы сделать это напрямую, но Лалит Пател придумал умную технику, которая создает элемент с некоторыми буквами в нем и угадывает шрифт из ширины элемента.

См. http://www.lalit.org/lab/javascript-css-font-detect

+0

Да, я тоже подумал об этом, это очень умная идея. В моем случае, однако, это слишком сложно, так как вся процедура должна выполняться каждый раз, когда пользователь меняет положение курсора в редакторе WYSIWYG. –

+0

А, да, есть. Я не знаком с CKEditor, но есть ли способ отслеживать, какие стили применяются к тексту? Вместо того, чтобы вычислять его всякий раз, когда курсор перемещается, можете ли вы записывать, какие стили применяются к тексту всякий раз, когда пользователь меняет их? –

+1

@Pekka Затем вам нужно запомнить результаты обнаружения. И, возможно, также проверьте некоторые распространенные шрифты заранее. – kangax

2

UA выбирает первый шрифт в списке, который находит. Шрифты, установленные в ОС, на самом деле не являются частью DOM, поэтому лучше всего догадываться.

+0

Вы правы. Paul D. Waite представляет собой обходное решение, которое я не буду использовать в этом случае, но позволяет его разобраться. –

Смежные вопросы