@font-face объявления не работают в интернет-браузере Android 4.3?

Мой телефон Samsung Galaxy S3 недавно обновился с Android 4.1.3 до Android 4.3. Теперь несколько сайтов, которые я разработал, которые я тестировал в Android-браузере Android, не отображают шрифты, которые я объявил с помощью @font-face. Что мне нужно сделать, чтобы исправить это?

Один из сайтов (версия для разработки): http://beta.kdfansite.com

Вот некоторые из связанных CSS для Open Sans:

@font-face {
    font-family: 'OpenSansSemibold';
    src: url('http://beta.kdfansite.com/wp-content/themes/scrollider/scrollider/webfonts/Open-Sans/OpenSans-Semibold-webfont.eot');
    src: url('http://beta.kdfansite.com/wp-content/themes/scrollider/scrollider/webfonts/Open-Sans/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'),
         url('http://beta.kdfansite.com/wp-content/themes/scrollider/scrollider/webfonts/Open-Sans/OpenSans-Semibold-webfont.woff') format('woff'),
         url('http://beta.kdfansite.com/wp-content/themes/scrollider/scrollider/webfonts/Open-Sans/OpenSans-Semibold-webfont.ttf') format('truetype'),
         url('http://beta.kdfansite.com/wp-content/themes/scrollider/scrollider/webfonts/Open-Sans/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg');
    font-weight: normal;
    font-style: normal;
}

/* ... */

h2 {
    font-family: 'OpenSansSemibold', Arial, sans-serif;
    /* ... */
}

Каждый шрифт, который я использую на сайте, объявляется аналогичным образом. Объявление Great Vibes (также в custom.css) для сообщения "наслаждайся ездой" - это еще одно сравнение. Все шрифты отображаются в Chrome для Android и Firefox для Android на одном устройстве, но не в Android-Интернете.

Мне нужно как можно скорее завершить этот CSS, и я работаю над этим проектом в качестве добровольца (не оплачивается). Поэтому я ищу быстрое исправление, а не обзор кода. Я также дизайнер UX, а не веб-разработчик. Спасибо заранее.

Изменить: Я сделал некоторую дополнительную отладку сегодня в Edge Inspect CC и weinre, подключив как мой Android-телефон, так и свой iPad к моему ноутбуку. В Weinre я могу изменить семейства шрифтов на iPad, но не на телефоне. Я могу изменить цвета шрифтов на обоих устройствах. Таким образом, основная проблема связана с тем фактом, что я не могу изменить шрифты по умолчанию, когда я использую удаленный отладчик.

Ответы

Ответ 1

У меня такая же проблема, как я ее решаю.

Я использую только svg на мобильных устройствах со средствами массовой информации.

@media only screen and (max-width: 320px) {
@font-face {
    font-family: 'open_sansbold';
    src: url('OpenSans-Bold-webfont.svg#open_sansbold') format('svg');
    font-weight: normal;
    font-style: normal;
}
}
@media only screen and (max-device-width: 720px) and (orientation:portrait) {
    @font-face {
        font-family: 'open_sansbold';
        src: url('OpenSans-Bold-webfont.svg#open_sansbold') format('svg');
        font-weight: normal;
        font-style: normal;
    }

}
@media only screen and (max-device-width: 1280px) and (orientation:landscape) {
    @font-face {
        font-family: 'open_sansbold';
        src: url('OpenSans-Bold-webfont.svg#open_sansbold') format('svg');
        font-weight: normal;
        font-style: normal;
    }
}

Надеюсь, он вам поможет.

Ответ 2

Мы столкнулись с подобной проблемой, и это было вызвано использованием text-rendering: optimizeLegibility - удаления этого из нашего CSS, чтобы наши шрифты снова начали работать с 4.3.

Ответ 3

Я создаю jsfiddle только с svg и woff шрифтами и тестирую его на своем устройстве Android 4.3 в браузере по умолчанию. Все работает.

Я просто удалю все ненужные шрифты для мобильных устройств. Все мобильные поддерживают svg шрифты, FF и IE10 нужны woff. Таким образом, вы можете использовать медиа-запросы для отдельного ограничения шрифта: для мобильных и для рабочего стола.

Если вам нужны все типы шрифтов, проверьте заголовок Content-Type для файлов шрифтов, это всегда text/plain, что неверно:

  • eot имеет тип приложения /vnd.ms-fontobject
  • otf и ttf имеют тип приложения/октета-потока
  • woff имеет тип application/font-woff
  • svg имеет тип image/svg + xml

Также проверьте эту страницу, чтобы прочитать известные общие проблемы с font face.

Ответ 4

У меня была аналогичная проблема раньше, и я решил ее, добавив font-weight: normal !important; к элементам/тексту, которые использовали шрифт. Я считаю, что проблема заключалась в том, что вес шрифта был унаследован элементами, и это вызвало потерю шрифта. Надеюсь, он работает:)

Итак, в вашем коде:

h2 {
    font-family: 'OpenSansSemibold', Arial, sans-serif;
    font-weight: normal !important;
    /* ... */
}

Ответ 5

Возможно, вы также можете использовать решение Beacouron для таргетинга на медиа-контент для мобильных устройств, но это может быть сложно, если у вас есть различные разрешения для Android-планшета для таргетинга на.

Еще одна идея, возможно, использовать медиа-запрос, предназначенный для веб-браузеров так:

@media screen and (-webkit-min-device-pixel-ratio:0) {
    @font-face {
        font-family: 'open_sansbold';
        src: url('OpenSans-Bold-webfont.svg#open_sansbold') format('svg');
        font-weight: normal;
        font-style: normal;
    }
}

Ответ 6

Начиная с 2017 года, можно использовать запрос @import, предоставленный fonts.google.com, для нужного шрифта. Просто найдите нужный шрифт (ы), выберите его, затем в миниатюрной строке внизу экрана вам нужно будет выбрать @import в разделе "embed". Я добавил скриншот для справки: https://gyazo.com/f959b6ef973d4b0df467a7a336cc3698

У меня была такая же проблема в мобильном браузере по умолчанию, но после того, как я использовал этот синтаксис, проблема была решена. Не знаю, почему, но это сработало.