@font-face: жирный шрифт в FF смелее, чем в Chrome
я использовал этот код:
@font-face {
font-family: 'DroidSansRegular';
src: url('droidsans-webfont.eot');
src: url('droidsans-webfont.eot?#iefix') format('embedded-opentype'),
url('droidsans-webfont.woff') format('woff'),
url('droidsans-webfont.ttf') format('truetype'),
url('droidsans-webfont.svg#DroidSansRegular') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'DroidSansBold';
src: url('droidsans-bold-webfont.eot');
src: url('droidsans-bold-webfont.eot?#iefix') format('embedded-opentype'),
url('droidsans-bold-webfont.woff') format('woff'),
url('droidsans-bold-webfont.ttf') format('truetype'),
url('droidsans-bold-webfont.svg#DroidSansBold') format('svg');
font-weight: bold;
font-style: normal;
}
и когда я с помощью font-weight: bold;
тогда жирный текст в Chrome в порядке, но в Firefox слишком смелее.
Как это решить?
PS: Я должен использовать шрифты из локальных файлов.
9 ответов
проблема здесь в том, что FF берет шрифт и применяет к нему жирный шрифт (так что в основном он удваивает эффект). Chrome, похоже, не меняет вес шрифта и просто использует правильный шрифт. Я думаю, это происходит потому, что вы объявляете два разных семейства шрифтов. Правильным CSS для этого случая будет:
@font-face {
font-family: 'DroidSans';
src: url('droidsans-webfont.eot');
src: url('droidsans-webfont.eot?#iefix') format('embedded-opentype'),
url('droidsans-webfont.woff') format('woff'),
url('droidsans-webfont.ttf') format('truetype'),
url('droidsans-webfont.svg#DroidSansRegular') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'DroidSans';
src: url('droidsans-bold-webfont.eot');
src: url('droidsans-bold-webfont.eot?#iefix') format('embedded-opentype'),
url('droidsans-bold-webfont.woff') format('woff'),
url('droidsans-bold-webfont.ttf') format('truetype'),
url('droidsans-bold-webfont.svg#DroidSansBold') format('svg');
font-weight: bold;
font-style: normal;
}
обратите внимание, что я изменил семейство шрифтов на "DroidSans", а не "DroidSansRegular" и "DroidSansBold".
FireFox опубликовал резолюцию об этом сегодня на своем форуме ошибок. Он был только что завершен сегодня, поэтому некоторое время не будет использоваться, но мы все должны поставить
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
в нашем body
тег, чтобы сбросить это на всех браузерах. Наконец-то!! чувак,это сделало мой день! Это должно выйти в следующем выпуске ФФ.
здесь нить https://bugzilla.mozilla.org/show_bug.cgi?id=857142
проблема в том, что Firefox пытается добавить полужирный эффект в текст даже для пользовательских шрифтов, которые уже полужирный. У меня была точно такая же ситуация, и я решил ее, установив font-weight: normal;
в объявлении @font-face.
пример:
@font-face {
font-family: 'DroidSansBold';
src: url('droidsans-bold-webfont.eot');
src: url('droidsans-bold-webfont.eot?#iefix') format('embedded-opentype'),
url('droidsans-bold-webfont.woff') format('woff'),
url('droidsans-bold-webfont.ttf') format('truetype'),
url('droidsans-bold-webfont.svg#DroidSansBold') format('svg');
font-weight: normal;
font-style: normal;
}
Вам также необходимо использовать font-weight:normal;
на любом элементе (например, h1, h2 и т. д.), который в противном случае имел бы font-weight:bold;
set в противном случае Firefox все равно добавит полужирный шрифт в пользовательский шрифт.
вы указали две грани в двух разных семействах. Вы определили обычное лицо в семье под названием "DroidSansRegular", и вы определили смелое лицо в семье под названием"DroidSansBold". Дизайн CSS ожидает, что вы определите их как два веса одного семейства. Если вы заставите обоих сказать font-family: "DroidSans";
, тогда вы можете использовать семейство шрифтов под названием "DroidSans", и когда вы просите жирный, вы получаете жирное лицо от этой семьи.
(Упс. Выбранный ответ уже дал правильный решение, но не совсем объяснило, что было не так.)
моя проблема заключалась в том, что текст, который был "более жирным", находился в теге h1. Я просто добавил следующее в свой CSS, и это исправило проблему! :)
h1,h2,h3,h4,h5,h6{
font-weight:normal;
}
я использовал решение Алекса:
@font-face {
font-family: 'SomeFont';
src: url('fonts/somefont-webfont.eot');
src: url('fonts/somefont-webfont.eot?#iefix') format('embedded-opentype'),
url('fonts/somefont-webfont.woff') format('woff'),
url('fonts/somefont-webfont.ttf') format('truetype'),
url('fonts/somefont-webfont.svg#SomeFontRegular') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'SomeFont';
src: url('fonts/somefontbold-webfont.eot');
src: url('fonts/somefontbold-webfont.eot?#iefix') format('embedded-opentype'),
url('fonts/somefontbold-webfont.woff') format('woff'),
url('fonts/somefontbold-webfont.ttf') format('truetype'),
url('fonts/somefontbold-webfont.svg#SomeFontBold') format('svg');
font-weight: bold;
font-style: normal;
}
который все еще не работает в Firefox v24... Сегодня, в 2013. 28 октября. проблема с жирным шрифтом @font-face все еще существует.
после небольшого поиска, я нашел это решение здесь: https://support.mozilla.org/hu/questions/801491
что работало, по крайней мере, пока Mozilla не исправит эту проблему в обновлении (2011.03.27...), является оборудование Ускорение. Перейти к Tools->Options | Advanced | General tab / снимите флажок "Использовать аппаратное ускорение при наличии". Я уверен, что это каким-то образом влияет на производительность, но пока все работает нормально.
что печально, что вы действительно не можете сделать что-нибудь о жирных шрифтах в Firefox... У вас действительно нет возможности отключить это на компьютерах пользователя. Аппаратное ускорение действительно важно. Думаю, тебе просто нужно жить с этим. Они не исправлено это в последние 3-4 года. Возможно, в будущем они этого не исправят.
однако я заметил, что, возможно, эта проблема не влияет на шрифты javascript externel (например: Typekit, EdgeFonts).
надеюсь, что Chrome найдет свой путь на все более и более ПК пользователя...
обновление:
можно только отключить части аппаратного ускорения. Учебник здесь: http://www.mydigitallife.info/fix-firefox-4-fade-blur-bold-bad-and-ugly-font-rendering/
также упомянуто другое решение: отключите анизотропную фильтрацию для Firefox на странице настроек вашей графической карты (но это не работает для меня).
@-moz-document url-prefix() {
body h3{
font-weight: normal;
font-style: normal;
}
}
это работает для меня!
обычно шрифты на основе JavaScript отображаются лучше, хотя все будет выглядеть по-разному в разных браузерах из-за движков рендеринга. Вы даже заметите разницу между Windows & Mac с тем же браузером.
Typekit, как правило, мой любимый выбор. Шрифты Google также довольно хорошо. Я думаю, что DroidSans-это вариант в Google или Typekit.
в двух словах, на самом деле нет способа решить эту проблему из-за небольших различий в движках рендеринга и внутренних настройках, используемых каждым браузером. (как упоминал @LainBallard).
Если вам действительно нужно иметь пиксельное совершенство, ваша единственная реальная надежда-использовать изображения, но я бы попытался настроить ваш дизайн так, чтобы вам не нужны пиксели, чтобы точно соответствовать.