Использование css font-face в приложении Phonegap для Windows Phone 8
Font-face не работает для меня в Windows Phone 8 с помощью Cordova/Phonegap.
Используя шаблон Cordova WP8, я добавил простое определение шрифта и установил *
для использования этого шрифта ИЛИ wingdings (чтобы быть более ясным, чтобы он не работал).
![html]()
Файл находится в папке /fonts
, установленной как "Содержимое" и "Копировать всегда".
![fontlocation]()
(вау, что изображение огромно)
Если я запустил это в Chrome, он правильно загрузит шрифт:
![font works in chrome]()
Даже если я запустил его в IE10 (или в режиме IE9), он правильно загрузит шрифт:
![font works in IE10]()
Но если я запустил его на симуляторе Windows Phone 8, я получаю крылышки:
![windowsphone8simulator]()
Любые идеи? Обходные? Должен ли я просто пойти и спрыгнуть с моста?
UPDATE:
Кто-то предложил использовать формат шрифта WOFF, поэтому я пошел в http://www.font2web.com/ и преобразовал свой TTF-шрифт. Я скопировал новые файлы в папку www/fonts/
. Как и прежде, я убедился, что для "Build Action" установлено значение Content
и Copy Always
.
Кроме того, я прочитал кое-что о попытке загрузить шрифты после срабатывания события deviceReady. Стоит попробовать... ничего не может повредить.
Здесь css файл с именем `fonts.css ', который определяет новый шрифт со всеми возможными комбинациями:
![new css]()
Затем я редактировал запас js/index.js
и добавил некоторый script для динамической загрузки нового fonts.css
в DOM после deviceReady:
![deviceReady]()
BTW: loadjscssfile()
немного script Я получил от http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml, чтобы загрузить содержимое файла fonts.css
в DOM.
Я проверил его в Internet Explorer 10/9, Chrome и Firefox. Через 3 секунды шрифты меняются. Я попробовал это в симуляторе Windows Phone 8. Через 3 секунды крылышки.
Ответы
Ответ 1
Font-face, заданный в css, не будет работать , если css хранится локально (содержимое изолированного хранилища или XAP). У меня была аналогичная проблема, и вот ответ от команды WP WebBrowserControl:
Это известная проблема, и, к сожалению, неизвестно обходное решение кроме размещения страницы и ресурсов удаленно.
Итак, в качестве обходного пути вы можете попробовать разместить свой файл css и html на удаленном сайте, но я понимаю, что это не идеально.
ИЗМЕНИТЬ
Я также попробовал следующее - загрузить шрифт в приложение wp8 silverlight, чтобы его можно было узнать по имени (как и другие предварительно загруженные шрифты), и это сработало для silverlight ui - я мог бы ссылаться на этот новый шрифт по имени из xaml, но это, к сожалению, не работало для содержимого веб-браузера.
Ответ 2
Похоже, если вы закодируете шрифт в base64 и поместите его непосредственно в файл css, то он также будет работать в приложении WP8.
С веб-приложениями, такими как Icomoon или Fontsquirrel вы можете легко сгенерировать css, содержащий строку base64.
Ответ 3
Ну, у меня была такая же проблема, поэтому я решил:
Я использую sencha touch, поэтому у меня есть два отдельных файла css. Для элемента значка я добавляю дополнительный класс win и к окнам css я добавил
.list.win {
background-image: url('data:image/png;base64,IMAGECODE HERE');
}
Ну, наверное, он застопорился, но все-таки это работает, поэтому он работает, потому что я не нашел что-то лучше
PS: Мое решение - это когда вы используете шрифты в качестве значков.
Ответ 4
Вы можете просто удалить версию шрифта ttf:
Получение веб-шрифта для работы с Windows Phone App для HTML5?
Это поможет мне в jQuery Mobile и Ionic framework.