Шрифт по-разному отображается в Firefox и Chrome

14

Кажется, что моя строка меню отображается в Firefox с другой растяжкой шрифта, чем в Chrome. Смотрите следующее:

другой шрифт растянуть

Вот CSS, примененный к этому элементу:

font-variant: small-caps;
font-size:13px;
letter-spacing: 0px;
font-family: Arial;
font-stretch: normal;
text-decoration: none;

Насколько я могу судить, все относительно этого шрифта точно такое же, но они по-прежнему отображаются по-разному (см. Рис.). Почему?

Горо
источник
1
Вы сделали сброс CSS в первую очередь?
Кей
@kei: Сброс, похоже, не дает эффекта
Горо
Интересный. Я получаю тот же результат, что и ваше изображение: jsfiddle.net/YGwcn Кажется, все сводится к тому, как каждый браузер интерпретирует стиль.
Кей

Ответы:

14

Chrome использует механизм рендеринга WebKit. Firefox использует движок Gecko. И интерпретировать, и отображать тип немного по-разному, как это делают графические движки DirectX и Vega, используемые в IE9 + и Opera.

Вы не можете заставить браузеры отображать текст одинаково, но вы можете сделать несколько вещей, чтобы обеспечить одинаковую ширину навигации в браузерах:

  1. Используйте изображения или SVG вместо типа для элементов панели навигации. Это может оказаться полезным, если ваша область навигации вряд ли будет часто меняться. например, www.apple.com

  2. Зафиксируйте ширину каждого элемента навигации с помощью CSS. Размер текста в браузерах будет выглядеть по-разному, но если вы дадите каждому <li>элементу в своей области навигации фиксированную ширину в пикселях, ограничивающая рамка каждой ссылки будет очень похожа во всех браузерах, и общая ширина области навигации должна быть одинаковой.

Ник
источник
5
Вы должны быть осторожны с такими вещами, как «Используйте изображения вместо типа для элементов панели навигации». Изображения будут выглядеть ужасно на новых машинах с дисплеями с высоким разрешением (например, дисплеи Apple «Retina», некоторые другие смартфоны), если только вы не предоставите копию с двойным разрешением.
Олли Ходжсон
@OllyHodgson Конечно. PNG или SVG двойного размера (это то, что Apple использует для навигации) лучше всего подходит для экранов с высоким разрешением.
Ник
@ Ник - Да, SVG будет лучшим решением.
m93a
Не в этом случае это не будет. Firefox не поддерживает letter-spacingэлементы SVG.
Yay295
@ Yay295 Вы можете набросать шрифты в SVG.
Ник
5

Различия в рендеринге шрифтов между разными браузерами (и в разных операционных системах) - это реальность. Вам просто нужно убедиться, что если шрифт будет отображаться с разной шириной, ваш дизайн все равно справится.

paulmorriss
источник
2

В случае, если кто-нибудь сталкивался с этим, для меня проблема была letter-spacing. Chrome и Firefox обрабатывают свойство по-разному.

Моя проблема заключалась в том, чтобы letter-spacingповлиять на положение других элементов; в частности, некоторые изображения в навигационном меню. Удалив имущество, моя проблема была мгновенно решена.

Я также читал, что использование .pointдвух значений может иметь эффект изменения между двумя браузерами, что было верно в моем случае.

Майк
источник
0

Я обнаружил, что webkit будет поддерживать px для размера шрифта, но для таких вещей, как межбуквенный интервал, они будут игнорировать все вместе, если вы не используете em.

Алан Хьюз
источник
0

После тестирования 6 браузеров / 4 движка рендеринга на двух ОС. Я обнаружил, что большинство из них были одинаковыми даже с межстрочным интервалом Я рассмотрю разницу с Windows и Linux через минуту.

Я думал, что шрифт Palatino был доступен везде, но Chrome вернулся к временам римского, который немного меньше, шрифты по умолчанию имели те же результаты (разные Chrome), что вводило меня в заблуждение на некоторое время.

В любом случае, если вы укажете времена римские или используйте @fontface для предоставления файлов шрифтов! Вы можете сделать ваши навигационные панели более приятными ;-)

Кевин Чедвик
источник
0

У меня была похожая проблема, и я нашел решение:

С помощью:

font-family: 'Donegal One', serif;
font-variant: small-caps;
text-rendering: optimizeLegibility;

В Firefox это выглядит великолепно. В Chrome расстояние между буквами было странным. Удаление optimizelegibilityстиля сделало свое дело. Оба браузера теперь отображаются одинаково.

Я решил удалить стиль для webkit и оставить его на месте для других браузеров. Выглядит хорошо сейчас

Энди
источник
0

У меня была похожая проблема с Open-Sans, это сделало это для меня:

-webkit-font-smoothing: subpixel-antialiased;
font-smoothing: subpixel-antialiased;
азбука
источник