2013-11-02 3 views
2

Я использовал Source Sans Pro и Source Code Pro на моем sites, и он отлично выглядит в Safari и Chrome. В Firefox, однако, похоже, что используется неправильный вес шрифта, так как вес намного легче (и труднее читать) в Firefox. Мой @font-face declarations выглядеть следующим образом:Почему Firefox Выбирает неправильный вес шрифта из моих опций шрифта?

@font-face { 
    font-family: 'Source Sans Pro'; 
    src: url('/fonts/sourcesanspro-regular-webfont.eot'); 
    src: url('/fonts/sourcesanspro-regular-webfont.eot?#iefix') format('embedded-opentype'), 
     url('/fonts/sourcesanspro-regular-webfont.woff') format('woff'), 
     url('/fonts/sourcesanspro-regular-webfont.ttf') format('truetype'), 
     url('/fonts/sourcesanspro-regular-webfont.svg#source_sans_proregular') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

@font-face { 
    font-family: 'Source Sans Pro'; 
    src: url('/fonts/sourcesanspro-light-webfont.eot'); 
    src: url('/fonts/sourcesanspro-light-webfont.eot?#iefix') format('embedded-opentype'), 
     url('/fonts/sourcesanspro-light-webfont.woff') format('woff'), 
     url('/fonts/sourcesanspro-light-webfont.ttf') format('truetype'), 
     url('/fonts/sourcesanspro-light-webfont.svg#source_sans_prolight') format('svg'); 
    font-weight: lighter; // light 
    font-style: normal; 

} 

См the file для полной декларации. Есть ли что-то в моих объявлениях, которые заставляют Firefox выбирать неправильный файл при отображении размера normal?

+1

Я не уверен, что для выбора шрифта можно использовать относительные веса шрифта. Правило @ font-face не будет знать, к чему относится ваш вес! НАПРИМЕР. если текущий вес выделен жирным шрифтом, значит, «более лигер» должен выбрать «нормальный» шрифт, верно? Другими словами, вы должны протестировать «font-weight: 200» (или определенный вес, который вы после) в правиле @ font-face и в стиле. –

ответ

1

Как указано в this answer, это выглядит, как будто Firefox использует последний объявил @font-face для данного стиля для отображения содержимого. Последнее лицо, которое я определил для стиля normal, имело вес light, так что это был один используемый Firefox. Решение заключается в использовании numeric weights в объявлениях @font-face, как я уже сделал here. Затем он правильно использует нормальный вес, где это необходимо.

+1

Firefox использует последний '@ font-face' с соответствующими' font-style', 'font-weight' и' font-stretch'. Значение по умолчанию 'font-weight' равно' normal'. В дескрипторе шрифта 'lighter' не является допустимым значением для' font-weight' в соответствии с . Таким образом, второй дескриптор имеет синтаксическую ошибку и заканчивается использованием значения по умолчанию «normal», что означает, что он переопределяет первый дескриптор шрифта. Обратите внимание, что в этом случае консоль в Firefox говорит «Ошибка в анализируемом значении для« font-weight ». Пропустили до следующего объявления». на багги. –

+0

Спасибо за объяснение, @BorisZbarsky, очень полезно. – theory

0

Chrome и Safari используют webkit в качестве механизма их рендеринга. (Chrome теперь переместился в Blink, который использует подмножество webkit). Firefox, с другой стороны, использует gecko. Так что да, это в значительной степени причина, по которой нам нужно тестировать веб-страницы с разными браузерами.

Что касается вашего вопроса, то я думаю, что это поможет: http://css-tricks.com/forums/topic/font-rendering-ugly-in-firefox-but-beautiful-in-webkit/

+1

Это комментарий, а не ответ. Кроме того, поскольку OP уже сказал, что Firefox имеет другой результат, чем Safari и Chrome, ясно, что они уже тестируются в разных браузерах. Так что даже в качестве комментария это было бы лишним. –

+0

@MrLister Я уже предоставил ссылку для решения проблемы OP – gldraphael

+0

На самом деле, этот ответ предоставил достаточный контекст, который я смог найти [этот ответ] (http://stackoverflow.com/a/17415120/79202), который предложил фактическое решение. – theory

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