zoukankan      html  css  js  c++  java
  • iconfont字体生成原理及使用技巧

    转自:https://www.dazhuanlan.com/2019/10/17/5da8546b505cf/

    一、css加载自定义字体

    首先前端都知道我们可以定义web上面文字的fontfamily。

    css:
    
    .test{
     font-size: 16px;
     font-family: '微软雅黑';
    }
    
    html:
    
    <span class="test">iconfont字体原理</span>

    但是这种情况下我们只能用系统默认的一些字体,限制比较大。比如微软雅黑就是windows下面才有。

    其实css是可以自定义字体的,所以我们可以加载自己的字体。

    使用 @font-face 定义一个字体family:

    css:
    @font-face {
      font-family: 'iconfont';
      src: url('//at.alicdn.com/t/font_1453702746_9938898.eot'); 
      src: url('//at.alicdn.com/t/font_1453702746_9938898.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
      url('//at.alicdn.com/t/font_1453702746_9938898.woff') format('woff'), /* chrome、firefox */
      url('//at.alicdn.com/t/font_1453702746_9938898.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/
      url('//at.alicdn.com/t/font_1453702746_9938898.svg#iconfont') format('svg'); /* iOS 4.1- */
    }
    
    
    .test{
     font-size: 16px;
     font-family: 'iconfont';
    }
    
    html:
    
    <span class="test">iconfont字体原理</span>

    这样我们就可以用自定义字体渲染这些文字了。
    每一个字都有对应的unicode。比如我们在web上输入跟输入&#x6211;是一样的。浏览器会自动帮你找到对应的图形去渲染。

    当然因为兼容性的问题,不同的浏览器需要加载不同格式的字体,所以我们要同时支持四种字体。

    二、字体内部

    我们来看下一个字体的样子。

    我们可以通过一些软件打开字体,比如fontforge,fontlab。

    比如下面的方正大草字体:

    我们打开看下:

    可以看到这个字对应的的图形就是我们在网页上看到的样子。另外注意左上角的unicode。是6211,也就是我们的另一种表现形式。

    再双击可以看到我这个图形的样子:

    其实就是一些路径。而这个路径可以用ai,ps,sketch等等来画,画完粘贴到这里。

    三、iconfont1.0

    所以我们就可以做一些事情了,我们可以去改造字体,把一个字对应的图形换成我们设计师设计的样子,处理好兼容性就成了我们iconfont的1.0。

    当年iconfont1.0是怎样的流程呢:

    由设计师手动修改ttf字体对应的图形,我们人工转换出另外四种字体。
    这样前台就可以用unicode去引用,就是我们第一代的iconfont的原理。这个成本有点大。

    四、iconfont2.0

    其实我们注意到里面有个svg的字体。你用文本编辑器打开会发现他是xml格式的,每个字的图形对应了一个路径。这个路径就是我们svg里面的path对应的序列。

    好了于是我们有了一个全新的思路,由设计师上传svg,我们存储下来,然后大家自由组合,由平台拼出对应的svg字体,然后再转换到不同的其他格式的字体。

  • 相关阅读:
    java程序后台报错java.net.SocketException: Too many open files
    linux中,查看某个命令是来自哪个RPM包或者是通过哪个RPM包安装的
    Oracle卸载之linux快速卸载rac脚本-一键卸载
    40个DBA日常维护的SQL脚本
    Oracle SQL开发 之 Select语句完整的执行顺序
    Oracle开发 之 主-外键约束FK及约束的修改
    drop user 报错ora-00604
    oracle Bug 4287115(ora-12083)
    Ora-1157 ora-1110错误解决案例一枚
    rac库grid目录权限(6751)导致数据库宕机案例 此方法仅用于紧急救助
  • 原文地址:https://www.cnblogs.com/vickylinj/p/12472093.html
Copyright © 2011-2022 走看看