@font-face svg не работает должным образом в Chrome?
У меня проблема с конкретным шрифтом и способом его отображения в Chrome.
Firefox показывает шрифт должным образом из-за использования ttf.
Chrome не использует антиалиасы, а шрифт слишком "острый" и уродливый.
Это объявление css, которое я использовал
@font-face {
font-family: 'HelveticaNeueLT Std Thin';
src: url(../fonts/h2.eot);
src: url(../fonts/h2.svg#test) format('svg'),
url(../fonts/h2.woff) format('woff'),
url(../fonts/h2.ttf) format('truetype');
font-weight: normal;
font-style: normal;
}
Я пришел к выводу, что проблема связана с файлом svg/шрифтом.
Если я вообще не использую хэш-тег и оставляю его как только .svg, он отображает сглаживание, но с другой строкой-линией, с небольшим отсутствием позиционирования. Если я добавлю .svg # что-нибудь, он вообще не сглаживает его и выглядит уродливым.
Любые предложения могут помочь мне исправить эту довольно неприятную проблему.
PS: Сглаживание Windows в порядке, я проверил это. Я также опробовал декларацию @media screen and (-webkit-min-device-pixel-ratio:0)
только для шрифта svg, без успеха.
Я понимаю, что это может быть repost, но, попробовав все решения из связанных вопросов, я немного отчаянно. ![enter image description here]()
Ответы
Ответ 1
Чтобы получать webfonts для рендеринга с хорошими антиалиасами в Chrome в Windows, вам нужно использовать этот формат в объявлении шрифта:
@font-face {
font-family: 'Futura';
src: url('futura.eot');
src: url('futura.eot?#iefix') format('embedded-opentype'),
url('futura.woff') format('woff'),
url('futura.ttf') format('truetype'),
url('futura.svg#futura') format('svg');
font-weight: normal;
font-style: normal;
}
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: 'Futura';
src: url('futura.svg#futura') format('svg');
}
}
В принципе, вам нужно заставить Chrome использовать формат шрифта SVG. Вы можете сделать это, переместив url для версии .svg наверху, однако Chrome на Windows возникли проблемы с испортить макет при этом (вплоть до версии 30). Переопределяя объявление шрифта с помощью медиа-запроса, эти проблемы решаются.
Также: иногда базовая позиция не совпадает между шрифтами OpenType и шрифтами SVG, но вы можете настроить это, просто отредактировав файлы шрифтов SVG. Шрифты SVG основаны на xml, и если вы посмотрите на объявление
<font-face units-per-em="2048" ascent="1900" descent="-510" />
Вы можете изменить значение для восхождения и получить его в соответствии с другими версиями формата шрифта.
Ответ 2
Как говорит Lily и font squirrel, ваш SVG-шрифт должен почти всегда находиться в нижней части списка источников @font-face
. Вы не хотите, чтобы браузер использовал шрифт SVG, если он не может использовать что-либо еще.
Причиной этого является то, что шрифты SVG очень плохо поддерживаются, а поддержка уменьшается. Начиная с этой публикации (2015) шрифты SVG больше не поддерживаются Chrome (38) и поддерживаются только Safari 8, iOS Safari 8.1 и браузер Android 37. http://caniuse.com/#feat=svg-fonts
Изменить: По состоянию на февраль 2016, Android Browser 47 больше не поддерживает шрифты SVG. Safari и iOS Safari по-прежнему поддерживают их и кажутся единственными браузерами.
Ответ 3
При ссылке на SVG файлы в @font-face id (#) в пути к файлу указывает элемент внутри файла .svg. Чтобы найти правильный идентификатор, вы можете открыть его в редакторе и проверить тег <font>
.
Например:
@font-face {
font-family: 'latobold';
src: url('../fonts/lato/lato-bold-webfont.eot');
src: url('../fonts/lato/lato-bold-webfont.svg#latobold') format('svg'),
url('../fonts/lato/lato-bold-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/lato/lato-bold-webfont.woff') format('woff'),
url('../fonts/lato/lato-bold-webfont.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
относится к:
<font id="latobold" horiz-adv-x="1187" >
Ответ 4
Генератор веб-шрифтов Font Squirrel упорядочивает их @font-face
CSS следующим образом:
@font-face {
font-family: 'HelveticaNeueLT Std Thin';
src: url('../fonts/h2.eot');
src: url('../fonts/h2.eot?#iefix') format('embedded-opentype'),
url('../fonts/h2.woff') format('woff'),
url('../fonts/h2.ttf') format('truetype'),
url('../fonts/h2.svg#h2') format('svg');
font-weight: normal;
font-style: normal;
}
Подробнее о том, почему порядок здесь важен: http://paulirish.com/2009/bulletproof-font-face-implementation-syntax/
Если вам все еще неприятны проблемы, попробуйте использовать вышеупомянутый генератор, выберите опцию EXPERT и поиграйте с различными настройками (особенно при Rendering и X-height).
Ответ 5
попробуйте эту реализацию @font-face
@font-face {
font-family: 'OpenSans';
src: url('fonts/OpenSans-Regular-webfont.eot');
src: url('fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'),
url('fonts/OpenSans-Regular-webfont.woff') format('woff'),
url('fonts/OpenSans-Regular-webfont.ttf') format('truetype'),
url('fonts/OpenSans-Regular-webfont.svg#open_sansregular') format('svg');
font-weight: normal;
font-style: normal;
}
h1 {
font-family: 'OpenSans';
font-weight: 300%;
}
для получения дополнительной информации ознакомьтесь с этим примером https://github.com/ttibensky/BulletProof-font-face-implementation