поэтому кажется, что если я назначу семейство шрифтов, заканчивающееся номером, оно не будет
a = document.createElement("div") a.style.fontFamily = "Arial"
и a тогда
НО
a = document.createElement("div") a.style.fontFamily = "Goudy Bookletter 1911"
и a тогда
Я почти уверен, что это конечный номер, который является проблемой. поскольку
a = document.createElement("div") a.style.fontFamily = "Goudy Bookletter blablabla"
и a тогда
Это ошибка? Я делаю это в хроме 16
Что-то о пространствах и номерах вызывает проблему при настройке семейства шрифтов. Включение имени семейства шрифтов в одинарные кавычки позволило мне работать в Chrome 16 для меня.
a.style.fontFamily = "'Goudy Bookletter 12'";
Без кавычек я увидел следующее нечетное поведение
a.style.fontFamily = "Goudy Bookletter12"; //works a.style.fontFamily = "Goudy 12Bookletter"; //works a.style.fontFamily = "Goudy 12 Bookletter"; //does not work
Согласно спецификации CSS :
Имена семейств шрифтов должны либо указываться как строки, либо некорректно как последовательность из одного или нескольких идентификаторов. Это означает, что большинство знаков пунктуации и цифр в начале каждого токена должны быть экранированы в именах некотируемых имен шрифтов.
Что касается идентификаторов:
В CSS идентификаторы (включая имена элементов, classы и идентификаторы в селекторах) могут содержать только символы [a-zA-Z0-9] и символы ISO 10646 U + 00A0 и выше, плюс дефис (-) и подчеркивание ( _); они не могут начинаться с цифры, двух дефисов или дефисов, за которыми следует цифра. Идентификаторы также могут содержать экранированные символы и любой символ ISO 10646 в виде числового кода (см. Следующий элемент). Например, идентификатор «B & W?» может быть записано как «B \ & W \?» или “B \ 26 W \ 3F”.
Это означает, что неупомянутый Goudy Bookletter 1911
является недопустимым семейством шрифтов, потому что 1911 не является допустимым идентификатором CSS. "Goudy Bookletter 1911"
действителен, хотя, как и без Goudy Bookletter blablabla
.
Поэтому вы должны использовать
a = document.createElement("div") a.style.fontFamily = '"Goudy Bookletter 1911"'
Кстати, a.style.fontFamily = "Goudy\\20 Bookletter\\20 1911"
также действителен, а также a.style.fontFamily = "Goudy Bookletter \\31\\39\\31\\31"
, Оба работают в Chrome 16, но этот вид обмана, конечно, не рекомендуется.
Предварительные проверки показывают, что браузеры не анализируют свойство fontFamily
, когда в нем находится числовое значение. Проверьте этот jsfiddle . Я собираюсь написать об этом больше.
Кажется, что если вы удалите пробел в имени шрифта, который содержит числовое значение, это не вызовет проблемы. Посмотри на эту скрипку .
Если имя семейства шрифтов содержит пробелы, оно должно быть процитировано . Это означает, что вы должны обернуть свое имя шрифта, внутри кавычек (один или два). Проверьте эту последнюю скрипку .