Существует ли кросс-браузерный способ включения шрифтов в веб-приложения в 2019 году? - PullRequest
0 голосов
/ 05 февраля 2019

У моего пятилетнего Java-приложения возникли проблемы со шрифтами после того, как некоторые рабочие станции были обновлены до комбинации окон 10 и IE11.Проблема подробно описана с точки зрения Microsoft здесь .Существует несколько ресурсов, описывающих, как отключить эти настройки, но я хотел бы знать, существуют ли какие-либо межбраузерные решения, позволяющие использовать определенные шрифты с заблокированными веб-шрифтами.

Вот рекомендации Microsoftдва:

На каждом компьютере с установленным приложением щелкните правой кнопкой мыши имя шрифта и выберите «Установить».Шрифт должен автоматически установить в вашу директорию %windir%/Fonts.Если этого не произойдет, вам нужно будет вручную скопировать файлы шрифтов в каталог Fonts и запустить установку оттуда.

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

На каждом компьютере с установленным приложением откройте regedit.exe ...

Я даже не собираюсь включать остальные, поскольку у них те же проблемы, что и в последнем предложении решения.

Что я пробовал:

<link href='http://netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-
    awesome.css' rel='stylesheet' type='text/css'>

не работает.Ссылочный файл css пытается загрузить шрифт со следующими строками:

@font-face {
  font-family: 'FontAwesome';
  src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');
  src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}

импортирует один и тот же шрифт в разных форматах для поддержки разных браузеров.Я надеялся, что смогу продолжать использовать потрясающий шрифт, просто загрузив ресурсы и упаковав их в мой .war-файл.Но другой шрифт, для которого я использую этот подход, тоже не работает:

из моего custom-fonts.css:

@font-face {
    font-family: 'Trim';
    src: url('../../resources/fonts/TrimCompleteOT/Trim-Bold.woff') format('woff'),
         url('../../resources/fonts/TrimCompleteOT/Trim-Bold.otf') format('opentype');
    font-weight: 700;
}

Но даже упакованные шрифты внутри моего приложения не будут загружаться или отображаться.

Есть ли способ использовать пользовательские шрифты в веб-приложении Java, который не включает в себя отключение настроек безопасности или необходимость применять настройки (например, устанавливать шрифты) для каждого отдельного компьютера пользователя?

Примечание: все по-прежнему работает в Chrome на любой версии Windows, а также в IE11 на компьютерах, отличных от Windows10.

1 Ответ

0 голосов
/ 06 февраля 2019

Если использование веб-шрифтов отключено в настройках безопасности, реального пути их обхода нет.Если это произойдет, это, вероятно, будет мерзким хаком, поскольку вы намеренно обойдете настройки безопасности Windows.

Тогда время для плана B.Я написал об этой конкретной проблеме , и короче говоря, вам придется использовать красивые системные шрифты в качестве запасных вариантов для текста и систему на основе изображений для значков.Например, используйте изображения PNG или SVG.Но если вы идете по этому пути, вы можете также заменить шрифт значков на соответствующие значки для всех браузеров.

Удачи, и кстати, кстати, за хорошо написанный вопрос.

...