присвоение CSS fontFamily, заканчивающееся номером

поэтому кажется, что если я назначу семейство шрифтов, заканчивающееся номером, оно не будет

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 для меня.

http://jsfiddle.net/ZMxS4/1/

 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 . Я собираюсь написать об этом больше.

Кажется, что если вы удалите пробел в имени шрифта, который содержит числовое значение, это не вызовет проблемы. Посмотри на эту скрипку .

Если имя семейства шрифтов содержит пробелы, оно должно быть процитировано . Это означает, что вы должны обернуть свое имя шрифта, внутри кавычек (один или два). Проверьте эту последнюю скрипку .