如何在HTML5 Canvas 里面显示 Font Awesome 图标
Font Awesome 是一套完美的图标字体,主要目的是和 Bootstrap 搭配使用. 提供的CSS 已经可以完美显示这些图标在网页里面。最新的版本4.3 里面,已经提供519 Icons。 这些图标广泛应用在web应用里面。如何在HTML5 Canvas 里去显示这些图标呢?经过一通学习,终于找到好的方案。 Font Awesome 是一套图标字库,提供了几种矢量字体
TTF或.OTF,适用于Firefox 、Safari、Opera
.EOT,适用于Internet Explorer 4.0+
.SVG,适用于Chrome、IPhone
.WOFF 知用于Chrome、Firefox
但它的内容是用Unicode 做编码的。在当字体显示的时候,我们要先获得图标的Unicode,基本思路是
1. 将Font Awesome 的字体文件拷贝到服务器的字体目录里面
2. 设置Canvas 的字体, ctx.font="12px fontawesome"
3. 调用Canvas API ctx.fillText(text,x,y). 这里text 就是 图标的Unicode。
结果显示的就是Unicode代表的图标了.
其他相关的技巧
1. 如果没有权限或者不想拷贝字体到服务器的字体目录里怎么办?
可以采用动态调用指定文件字体的方法。在程序里动态加载指定目录下的字体文件。
如果不知怎么做?可以使用Font.js,项目在https://github.com/Pomax/Font.js
2. 如何正确把图标显示在指定的方框里?
具体看代码
ctx.save();
var icon_font=this.icon.size+"px "+font.fontFamily;
ctx.font=icon_font;
ctx.strokeStyle=this.icon.color||"black";
ctx.fillStyle=this.icon.color||"black";
ctx.textBaseline="top";
metrics=ctx.measureText(this.icon.text);
if(this.icon.fill)
ctx.fillText(this.icon.text,(this.width-metrics.width)/2,this.margin);
else
ctx.strokeText(this.icon.text,(this.width-metrics.width)/2,this.margin);
ctx.restore();
关键在hightlight 的代码上,这样就可以保证字体正确显示在方框的中间,并保留margin 大小的距离。
由于Font awesome 的Unicode太多,太难记,我把它生成到Json 数据文件里。
需要的可以去下载, http://www.visor.com.cn/help/fontawesome4_3
我在使用的地方都是应用这些数据去做选择的。
如何在HTML5 Canvas 里面显示 Font Awesome 图标的更多相关文章
- [js高手之路] html5 canvas系列教程 - 线形渐变,径向渐变与阴影设置
接着上文[js高手之路] html5 canvas系列教程 - 像素操作(反色,黑白,亮度,复古,蒙版,透明)继续. 一.线形渐变 线形渐变指的是一条直线上发生的渐变. 用法: var linear ...
- HTML5 程序设计 - 使用HTML5 Canvas API
请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方 ...
- HTML5 Canvas实战之刮奖效果
近年来由于移动设备对HTML5的较好支持,经常有活动用刮奖的效果,最近也在看H5方面的内容,就自己实现了一个,现分享出来跟大家交流. 1.效果 2.原理 原理很简单,就是在刮奖区添加两个canvas, ...
- 使用 HTML5 canvas 绘制精美的图形
HTML5 是一个新兴标准,它正在以越来越快的速度替代久经考验的 HTML4.HTML5 是一个 W3C “工作草案” — 意味着它仍然处于开发阶段 — 它包含丰富的元素和属性,它们都支持现行的 HT ...
- html5 Canvas API
详细内容请点击 1.HTML Canvas API有两方面优势可以弥补:首先,不需要将所绘制图像中的每个图元当做对象存储,因此执行性能非常好:其次,在其他编程语言现有的优秀二维绘图API的基础上实现C ...
- Html5 Canvas Text
html5 canvas中支持对text文本进行渲染;直接的理解就是把text绘制在画布上,并像图形一样处理它(可以加shadow.gradient.pattern.color fill等等):既然它 ...
- HTML5 canvas 绘制精美的图形
HTML5 是一个新兴标准,它正在以越来越快的速度替代久经考验的 HTML4.HTML5 是一个 W3C “工作草案” — 意味着它仍然处于开发阶段 — 它包含丰富的元素和属性,它们都支持现行的 HT ...
- 怎样用HTML5 Canvas制作一个简单的游戏
原文连接: How To Make A Simple HTML5 Canvas Game 自从我制作了一些HTML5游戏(例如Crypt Run)后,我收到了很多建议,要求我写一篇关于怎样利用HTML ...
- html5 canvas 实现简单的画图
今天早上看了一下 canvas 前端画图,数据可视化, 百度的 echart.js , d3等 js 库都已经提供了强大的绘制各种图形的 API. 下面记录一下 有关canvas 绘图的基本知识: ...
随机推荐
- EasyUI、Struts2、Hibernate、spring 框架整合
经历了四个月的学习,中间过程曲折离奇,好在坚持下来了,也到了最后框架的整合中间过程也只有自己能体会了. 接下来开始说一下整合中的问题和技巧: 1, jar包导入 c3p0(2个).jdbc(1个). ...
- PHP---Mysql常用语法(增删改查)
1.数据库操作: 创建数据库:create databas ...
- git中忽略UserInterfaceState.xcuserstate的方法
在commit 时候一直会提示userinterfacestate.xcuserstate文件尚未commit. 你可以用命令行 git rm --cached [YourProjectName].x ...
- 关于django访问默认后台admin的时候提示403错误,
Forbidden (403) CSRF verification failed. Request aborted. You are seeing this message because this ...
- VS.Net 2015 Update3 学习(2) jquery-form, jquery-validation,jquery-validation-unobtrusive一起用
我觉DataAnnotations非常酷的一个功能.但是教程中的@ajaxform的却不怎么优雅,需要全局的onSucces等函数.因此我使用jquery-form做ajax提交. function ...
- PHP获取当前时间戳,当前时间、及解决时区问题
一.获取当前时间戳 方法1:通过time函数 time(); 方法2:通过$_SERVER中的REQUEST_TIME元素 $_SERVER['REQUEST_TIME']; 方法3:通过strtot ...
- apache2.4以上版本配置虚拟主机
一 将 主配置文件 httpd.conf中 #Include conf/extra/httpd-vhosts.conf 前面的# 去掉 二 进入conf/extra 修改 /conf/extra/ ...
- HTML5 十大新特性(五)——SVG绘图
相对于canvas绘图,SVG是一种绘制矢量图的技术.全称叫做Scalable Vector Graphics,可缩放的矢量图,在2000年就已经存在,H5把它纳入了标准标签库,并进行了一些瘦身.需要 ...
- Tomcat APR & Linux Optimization
一.简介 APR(Apache portable Run-time libraries)模式:简单理解,就是从操作系统级别解决异步IO问题,大幅度的提高服务器的处理和响应性能, 也是Tomcat运行高 ...
- MySQL问题记录--Can't connect to MySQL server on localhost (10061)解决方法
本文mysql的安装环境为win7 64位,mysql版本为MySQL5.7 问题描述:在命令行输入 mysql -u root -p 登录mysql,返回"Can't connect to ...