Giter Site home page Giter Site logo

iconfont-preview's Introduction

功能简介

  • iconfont web 在线预览工具,无需安装,打开即用。
  • 可预览本地 ttf 文件中定义的所有 icon。
  • 也支持预览 阿里iconfont 中的三种模式,unicode,Font class,Symbol。根据在线字体链接即可解析预览其定义的所有icon。

需求背景

本工具用于解决以下问题

  • 接手二手项目时,不清楚项目中定义了哪些 icon。
    • 接手二手项目,有时由于交接不到位,只能找到引用的 css。但不清楚该 icon 库具体包含哪些 icon。
    • 导致二次开发时,不能很好地复用之前的 icon,若引入新icon,可能还会重复定义。导致前后 icon 风格不统一。
  • 使用外部样式库,成套的后台管理系统框架时。找到其 icon 的定义列表比较麻烦。
    • 需要先找到对应的官网,再找到其对 icon 定义。整个过程较为繁琐。而且还不一定有介绍。
  • 故笔者开发了这个 iconfont 在线预览工具,无需安装,打开web页面即可预览 icon 库。

使用教程

使用本地文件

  • 点击按钮

  • 选择 ttf 后缀文件

  • 解析成功

  • 点击具体图标,可复制该 icon 代码

解析在线文件(针对阿里图标库)

  • 复制在线资源链接

  • 针对 unicode 模式,复制在线 ttf 文件链接

  • 针对 Font class 模式,复制在线 css 文件链接

  • 针对 Symbol 模式,复制在线 js 文件链接

  • 点击解析

  • 解析成功,点击具体图标,可复制该 icon 代码

iconfont相关知识

之前一直只知道怎么用 iconfont ,但并没有深入了解相关知识,最新学习了一下,在这里跟大家分享。

阿里图标三种模式

  • unicode 模式

  • 它本身和引用外部自定义字体没有区别。只是一个表现出来是图形,另一个是文字。对系统来说,没有区别。

  • 引用 iconfont 和引用自定义字体,使用的代码是一样

    • 定义字体族

      @font-face {
          font-family: 'iconfont';  /* 自定义字体族名,可以是任意名, */
          src: url('//at.alicdn.com/t/font_1357308_kygursq6jw.eot'); /* 字体描述文件链接 */
          src: url('//at.alicdn.com/t/font_1357308_kygursq6jw.eot?#iefix') format('embedded-opentype'), /* 兼容 IE9 */
          url('//at.alicdn.com/t/font_1357308_kygursq6jw.woff2') format('woff2'), /* 兼容 IE6-IE8 */
          url('//at.alicdn.com/t/font_1357308_kygursq6jw.woff') format('woff'), /* 兼容 chrome, firefox, opera, Safari, Android, iOS 4.2+ */
          url('//at.alicdn.com/t/font_1357308_kygursq6jw.ttf') format('truetype'), /* 兼容 chrome, firefox, opera, Safari, Android, iOS 4.2+ */
          url('//at.alicdn.com/t/font_1357308_kygursq6jw.svg#iconfont') format('svg'); /* 兼容 iOS 4.1及以上 */
      }
      
  • 使用字体族(无论是文本还是icon)

    .iconfont {
        font-family: "iconfont" !important; /*使用自定义字体或者icon*/
        /* 上面一句,和我们平时定义「微软雅黑」(font-family: "Microsoft YaHei", sans-serif;)字体是同样的语法 */
        /* 只是「微软雅黑」在大部分电脑都会自带有,浏览器能直接找到系统的「微软雅黑」字体描述文件,不需要我们自己定义字体族,不需要使用外部的字体描述文件 */
    }
    
  • 「&#」的意思,「&#」 开头的是HTML实体。所有 html 显示的内容,都可以通过 &# 的形式表述。例如,汉字的HTML实体由三部分组成,&#(中午对应ASCII);。例如,把“最新” 转换成“最新”

  • 为什么中英文能直接显示,不需要使用「&#」形式表示呢?因为中英文有 ASCII 进行自动转义。而 iconfont 不在 ASCII 中定义。是自定义的。

  • iconfont 相当使用了剩余的 unicode 编码,将自定义的图标描述通过 &# 开头的 HTML 实体的形式表现出来。

  • 以「&#」开头的后接十进制数字,以「&#x」开头的后接十六进制数字

  • Font class

    • 该模式和 unicode 模式是同样的原理,通过 unicode 编码保存。只是使用方式不同。

    • unicode 是直接将内容写到 innerHTML 中转义,而 font class 则是通过 css 的 :before 伪类,将通过 content 来定义。

    • 在 font class 中,「&#x」被转义符「\」替换,因为「&#x」是 html 实体字符,只会被 html 解析,不能在 css 中被解析。

    • 通过阿里iconfont 给出的 css 链接,在浏览器中直接查看该文件可以看到其定义

  • Symbol

    • 该模式和上述二者有本质区别,Symbol 模式是通过 svg 技术来描绘图标,没有运用到 unicode 编码
    • 即通过不同的 svg 标签来描绘不同的图标。
    • 由于使用的是 svg 技术,属于图形,而不仅仅是字符。所以该模式支持彩色图标。
    • 通过阿里 iconfont 给出的 js 链接,在浏览器中直接查看该文件可以看到其定义

不同文件后缀的含义

  • EOT(Embedded Open Type)是微软创造的字体格式。在 IE 系列的浏览器下使用。
  • SVG(Scalable Vector Graphics (Font))是一种用矢量图格式改进的字体格式。注意这里的 svg 与 symbol 的 svg 是两个概念。前者是 svg 类型的字体描述,后缀是直接描述svg 图形。该模式在 ios 移动端中才支持
  • OTF(OpenType Font)和 TTF(TrueType Font)是 Apple 公司和 Microsoft 公司共同推出的字体文件格式,随着 windows 的流行,已经变成最常用的一种字体文件表示方式。目前主流浏览器都支持该模式。
  • WOFF(Web Open Font Format),WOFF字体通常比其它字体加载的要快些,使用了 OTF 和 TTF 字体里的存储结构和压缩算法。目前主流浏览器都支持该模式
  • 其具体兼容性情况,我们可以通过打开 iconfont 的 Font class 链接,通过备注信息得知。

工具代码讲解

  • 工具 除了 vue 和 opentype.js,本工具仅由一个 html 文件完成。有兴趣的同学可以点击这里查看源码。
  • 工具的原理很简单,通过以下几个步骤实现
    • 获取字体定义文件。对于本地解析,通过input框获取本地文件。对于在线文件,则通过 ajax 获取字体定义文件。
    • 对于在线的 css 与 js 文件,通过正则匹配所有 icon 名称,并通过数组保存。对于 ttf 文件,则借助 opentype.js 进行解析。
    • 动态创建 dom,载入资源文件,并将采集到的所有 icon 遍历显示出来。
  • 为什么本地文件只支持 ttf ?
    • 因为该文件类型的兼容性较好,在主流浏览器中均可使用。
    • 壁纸曾尝试过使用 svg 文件,但发现其在chrome中无法解析,后来才知道,该格式目前只在 ios 移动端使用
  • 为什么需要借助 opentype.js 解析 ttf 文件
    • 因为 ttf 文件通过 big-endian 编码,使普通的方式无法进行编码转义。无法进行正则匹配。
    • 故借助外部 opentype.js 库进行图标解析。

讲完了,有空来我的博客坐坐呀!

iconfont-preview's People

Contributors

momo707577045 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

iconfont-preview's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.