繁体   English   中英

2019年是否有跨浏览器方式将字体包含在Web应用程序中?

[英]Is there a cross browser way to include fonts in web applications in 2019?

在将某些工作站升级到Windows 10和IE11的组合之后,我拥有5年历史的Java Web应用程序遇到了字体问题。 这里从Microsoft的角度详细描述了该问题。 有几种资源描述了如何关闭这些设置,但是我想知道是否有任何跨浏览器解决方案可以继续使用特定字体,而阻止Web字体。

微软的建议是以下两个:

在安装了应用程序的每台计算机上,右键单击字体名称,然后单击“安装”。 字体应自动安装到%windir%/Fonts目录中。 如果不是,则需要手动将字体文件复制到Fonts目录中,然后从那里运行安装。

这是指桌面应用程序,不能用Web应用程序完成。 无论如何,这都不是令人满意的解决方案,因为它需要每个用户积极地进行设置。

在安装了应用程序的每台计算机上,打开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 Web应用程序中使用自定义字体,但不包括关闭安全性设置,也不必将设置(如安装字体)应用于每个用户计算机?

旁注:在任何Windows版本上,一切仍然可以在chrome中使用,在非Windows10计算机上,也可以在IE11中使用。

如果在安全设置中禁用了Web字体的使用,则没有真正的解决方法。 如果有的话,因为您故意绕过Windows安全设置,可能是一个讨厌的黑客。

那么,是时候制定计划B了。 写的是关于这个特定问题的 ,简而言之,您必须使用外观漂亮的系统字体作为文本的后备,而使用基于图像的系统作为图标。 例如,使用PNG或SVG图像。 但是,如果您要沿这条路线前进,则最好为所有浏览器将图标字体替换为适当的图标。

祝您好运,顺便提一句写得很好的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM