光年模板说明文档
主题
字号
18px

关于模板的字体图标问题

字体图标说明

这里首先先说明下,光年模板使用的字体图标是 Material Design Icons,Bootstrap 3.3.7 自带的 Glyphicons 字体图标已经删除,后面的插件整合项目里有用到的也已经改过。

光年项目中使用了该字体的两个版本,3的版本使用字体 MaterialDesign-Webfont-master-2.0.6,而4使用的是 MaterialDesign-Webfont-master-4.1。这个大家需要注意,避免不同版本之间的 css 和 font 字体混用。

遇到的问题

很多小伙伴在实际使用项目过程中,会遇到字体图标不显示的问题(具体表现为本该有图标的地方显示成了一个 “口” 字的样子)。

遇到图标不显示的问题,首先可以按f12查看浏览器是否报错,一般会有两种情况:

  1. css 加载路径错误,浏览器显示 css 文件404
  2. css 加载路径正确,浏览器显示 woff,ttf 等字体文件404

如果是遇到上面两种情况,解决也很简单,保证自己的 css 文件和 font 字体文件的路径正确即可。

针对于2,在IIS中,可能会遇到有部分的字体图标提示 net::ERR_ABORTED 的情况。

有可能是IIS服务器中没有配置MIME类型,增加一下即可。(参考:https://www.cnblogs.com/ggll611928/p/8391626.html)

当你的css文件和font文件都加载正确的时候,图标还是无法显示正常。如果你是java项目,那么可以考虑是否字体文件是否被过滤掉,在配置里面新增不过滤woff,ttf等文件。

实际案例

这里以群里小伙伴的实际项目(SpringBoot)为例:

在登录页面,无法显示用户名、输入密码、验证码旁边的图标。

最开始定位到的是 materialdesignicons.min.css 文件,考虑到css文件加载成功,提示的是woff等字体的 net::ERR_ABORTED,经过询问,在css里面的字体路径中,去掉 ?v=2.0.46 浏览器就不再提示报错(路径中的这个并不是必须的)。

@font-face {
    font-family: "Material Design Icons";
    src: url("../fonts/materialdesignicons.eot?v=2.0.46");
    src: url("../fonts/materialdesignicons.eot?#iefix&v=2.0.46") format("embedded-opentype"), url("../fonts/materialdesignicons.woff2?v=2.0.46") format("woff2"), url("../fonts/materialdesignicons.woff?v=2.0.46") format("woff"), url("../fonts/materialdesignicons.ttf?v=2.0.46") format("truetype"), url("../fonts/materialdesignicons.svg?v=2.0.46#materialdesigniconsregular") format("svg");
    font-weight: normal;
    font-style: normal
}

但是页面图标依然没有加载出来,在询问过具体路径正确的情况下,这位小伙伴也提到代码中制作了用户的一些拦截,这才考虑到是一个资源拦截的问题

百度了一下这方面的解决方案,最后大家可以参考下: https://blog.csdn.net/qq_43575217/article/details/118051727

在pom.xml添加下面这段代码(Material Design Icons 字体有五种格式的字体文件)

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration>
        <nonFilteredFileExtensions>
             <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
             <nonFilteredFileExtension>woff</nonFilteredFileExtension>
             <nonFilteredFileExtension>woff2</nonFilteredFileExtension>
             <nonFilteredFileExtension>svg</nonFilteredFileExtension>
             <nonFilteredFileExtension>eot</nonFilteredFileExtension>
        </nonFilteredFileExtensions>
    </configuration>
</plugin>

这里是已经取消了 css 文件中字体文件路径里的版本信息 ?v=2.0.46,如果有这个的情况下,在配置中新增 <version>2.0.46</version>