清单 1. 无效的 font-family 字体指定

 <style>
.introduction { font-family:'Baroque Script';}
</style>
……
<p class="introduction" style="font-size:36px"><?php echo $introduction; ?></p>
<p class="introduction" style="font-size:24px; text-align:right">
<?php echo $leader;?></p>

因为在大部分的浏览器上,并不会安装有 Baroque Script 字体。因此在这些浏览器上系统会主动“忽略”掉代码中关于 font-family 的说明,转而使用缺省字体进行输出

图 1. 设计者为网站所设计的公司简介效果图(部分)

最初的设计初衷想法。

图 2. 在没有安装 Baroque Script 字体浏览器上的公司简介输出效果

结果却是不堪入目。

清单 2. 通过 @font-face 引入外部字体

……
@font-face {
font-family: "Baroque Script";
src: url('BaroqueScript.ttf')
}
……

清单 3. 引入 Cufon 核心库

<script src="cufon-yui.js" type="text/javascript"></script>

清单 4. 引入 Cufon 字体文件

 <script src="Baroque_Script_400.font.js" type="text/javascript"></script>

为标记附加 Cufon 转换

在完成了上述的两项准备工作后,事实上使用 Cufon 类库来实现对字体的渲染是非常简单的,这仅仅牵涉到了 Cufon 类库所提供的一个核心方法,即 Cufon.replace 方法

清单 5. 使用 Cufon.replace 方法对标记字体进行渲染

 <script>
Cufon.replace('p');
</script>

清单 6. Cufon.set 语法规范

 Cufon.set("配置项名称", 配置项值 )

举例而言,针对范例 2.htm,如果我们希望在显示时相关文字的颜色为红色,那么我们就可以在调用 Cufon.replace 方法之前,通过 Cufon.set 首先对 color 配置项进行设置,如下代码所示,完整的实现则可以参考范例 3.htm。

清单 7. 使用 Cufon.set 改变所渲染文字的颜色

 Cufon.set("color", "#FF0000");
……
<p style="font-size:36px; color:green">This is the company's introduction</p> 清单 8. 完整的 Cufon.relace 语法规范
 Cufon.replace("选择符", {"配置项 1" : 值 , "配置项 2": 值 , …… });

关于缺省渲染字体

如果不通过 fontFamily 配置,进行指定,那么,cufon 将使用在顺序上,最后引入到系统的那个 cufon 字体文件所对应的字体,来对相关标记进行渲染。

这是 Cufon 应用的另一大特色。在同一个页面中,Cufon 可以为不同的标记对象,提供不同的字体渲染效果,这对于实际的 Web 应用而言,当然是非常常见的一个需求。

而 Cufon 对此功能的支持则仍然是通过配置项来完成的。在 Cufon 中开发着可以通过指定配置项“fontFamily”,来确定对应标记对象所需要使用的字体。

清单 9. 使用不同的字体渲染标记

 Cufon.replace("#id1", {fontFamily : "Baroque Script"});
Cufon.replace("#id2", {fontFamily : "Whiteboard Modern Demo"});

清单 10. 饼图描述实例

 var pie = [
{"color" : "red", "percent" : 20},
{"color" : "green", "percent" : 40},
{"color" : "blue", "percent" : 40}
];

清单 11. 接口对象声明

 var StatisticalGraph = (function(){
this.draw = function(data, type, dest, options){
……
};
……
return this;
})();

清单 12. 饼图绘画接口
……
case "pie":
return (isIE)?_drawVMLPie(data, dest, options):_drawCanvasPie(data, dest, options);
break;
…… 清单 13. 创建 Canvas 绘画区域
 var canvas = document.createElement('canvas');
canvas.width = (options['width'])?options['width']:100;
canvas.height = (options['height'])?options['height']:100;
dest.appendChild(canvas);

创建画笔对象

在创建了 Canvas 对象后,我们并不能直接在 Canvas 画布上进心绘画,而是需要通过创建一个一个画笔对象,才能够实现在 Canvas 画布上的绘画。这一画笔对象的创建方法也非常简单,如下代码所示,其中,“2d”表明在此处将使用二维平面模式进行绘画。

清单 14. 创建画笔

 var brash = canvas.getContext('2d');

绘画并填充扇形区域

那么,我们又该如何使用画笔对象,进行统计图表如饼图的绘画呢?从几何学角度来讲每个饼图其实都是由若干个扇形所组成的,所以饼图绘画的核心,其实也就在于每一个扇形的作画上。而对于 Canvas 而言以下两点则是需要读者特别了解的。

  • 首先,Canvas 提供了点、线(包括弧线),以及闭合直线图形、圆(包括椭圆)的绘制方法,但对于其他非规则图形,如扇形等,Canvas 并没提供直接支持。
  • 其次,Canvas 允许对任意一个闭合区间,使用颜色进行填充和边界绘制。

当然,结合一定的数学知识,尤其是三角函数知识,笔者相信这一问题其实并不难解决。为方便起见,笔者在此将通过代码注解的方式,向读者来介绍在这一过程中的一些关键所在,以供读者参考。

清单 15. 绘画并填充扇形

清单 16. VML 基本应用范例

 <p>
<v:line from="0,0" to="100,0" />
</p>

 

因此,在 VML 下动态创建图形的过程,其实也就是动态创建 VML 语言标记并将其附加到画布(即某一标记)下的过程,这二者是完全一致的。

  • behavior 风格的使用。

这是 VML 应用另外一个与众不同之处。在 VML 的规范中,开发者如果希望使用 VML 技术来进行页面的绘画,则不仅仅需要如一般
XML 语言一样,在 Web 文档中引入这一语言的名称空间(VML
的名称空间为“urn:schemas-microsoft-com:vml”),还需要确保所有 VML
标记,具有值为“url(#default#VML)”的 behavior 风格。否则的话,IE
浏览器是不会对其进行解析和处理的。这也正是读者可以在大部分 VML 应用中,看到有类似如下代码所示的 CSS 风格说明的原因所在。

清单 17. 需要为标记增加 behavior 风格,才能为 IE 解析

 <!--[if IE]>
<style>cvml\:* { behavior: url(#default#VML); }</style>
<![endif]-->

Cufon在渲染网页字体你不知道的事的更多相关文章

  1. setTimeout,setInterval你不知道的事

    javascript线程解释(setTimeout,setInterval你不知道的事) 标签: javascript引擎任务浏览器functionxmlhttprequest 2011-11-21 ...

  2. 利用Cufon技术渲染文字的简单示例

    Cufon是一种能够根据指定的字体渲染文字的技术.今天试用了下,主要有几个步骤: 1.下载Cufon.js(http://cufon.shoqolate.com/generate/) 2.获取需要渲染 ...

  3. 使用 font-spider 对 webfont 网页字体进行压缩

    原文链接:使用 font-spider 对 webfont 网页字体进行压缩 随着当前 Web 技术的日新月异,网页界面内容越来越丰富,让人眼花缭乱,其中就包括了网页中的各种自定义字体. 例如,个人博 ...

  4. css基础—字体那些事

    css基础-字体那些事 1. 首先讲字的大小样式等 字体大小 font-size: 40px; 文字字体 font-family: "宋体",Arial; 文字样式 font-st ...

  5. Type.js – 帮助你更好的控制网页字体排版

    Type.js 是一款很好的网页字体排版工具.它可以让你使用新的 CSS 属性,在网页上试下更精细的排版控制.设置很简单.上传 type.js 到您的网站,并在你的 HTML 链接中引用.接下来,你就 ...

  6. Font Combiner – 自定义网页字体和图标生成工具

    Font Combiner 是一个功能丰富的 Web 字体生成工具和字体改进工具,提供字距调整.构造子集.各种提示选项和自定义字体字形组合.您可以生成您自己的自定义字体的格式和文件大小. 另外还有成千 ...

  7. 网页字体在Frontpage2000制作网页中的讲解

    运用HTML,我们可以对字体的大小及字形进行简单的修改,但要进行统一地控制.创建特殊效果,就必须要用到CSS.它能让您更有效地控制网页外观,并可以扩充精确指定网页元素位置,外观以及创建特殊效果的能力. ...

  8. 关于js渲染网页时爬取数据的思路和全过程(附源码)

    于js渲染网页时爬取数据的思路 首先可以先去用requests库访问url来测试一下能不能拿到数据,如果能拿到那么就是一个普通的网页,如果出现403类的错误代码可以在requests.get()方法里 ...

  9. jQuery控制网页字体大小和肤色

    在一些网站上经常看到有控制网页肤色和字体大小的功能,接下来,我们将用两个例子来实现这两个功能. 网页字体大小 首先我们在网页中添加一些被控制大小的文字和字体控制的按钮. <!DOCTYPE> ...

随机推荐

  1. 【Centos】systemd入门教程

    systemd使用教程 常用指令 运行一个服务: systemctl start <服务名> 关闭一个服务: systemctl stop <服务名> 重启一个服务: syst ...

  2. 【转】【WPF】WPF绑定用法

    一.简介 为了后面行文顺利,在进入正文之前,我们首先对本文所涉及到的绑定知识进行简单地介绍.该节包含绑定的基本组成以及构建方式. WPF中的绑定完成了绑定源和绑定目标的联动.一个绑定常常由四部分组成: ...

  3. Lambda动态排序

    private static IList<T> IListOrderBy<T>(IList<T> list, string propertyName) where ...

  4. Git -- 分支管理简介

    分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...

  5. 联想服务器X3850 X6 配置RAID5

    实验环境: 1.  服务器型号 联想 System X3850 X6 2.  四块300G  SAS硬盘 实验目的: 配置RAID 5 ,搭建公司重要文件共享服务器使用. 标注:本教程四块硬盘全做RA ...

  6. T4生成实体,单张表和多张表

    # 使用说明 . 把T4目录放在项目的根目录 . 配置连接字符串,在tt文件的最底部 . generateAllEntity.tt生成全部的实体类 . generateSingleEntityByNa ...

  7. 用shell 实现对MySQL数据库分页

    参考链接 http://mp.weixin.qq.com/s?__biz=MzAxMzE4MDI0NQ==&mid=208299533&idx=1&sn=4cab00793eb ...

  8. linux下命令行打开文件管理器

    nautilus,这个太有用了,应为可以在secureCRT中使用,因为可以添加sudo来调用

  9. Node.js之exports与module.exports

    每一个node.js执行文件,都自动创建一个module对象,同时,module对象会创建一个叫exports的属性,初始化的值是 {} module.exports = {}; Node.js为了方 ...

  10. level1 - unit 1 - 句子结构

    preface 学习英语做为一种爱好,就是希望有一天能够和老外流畅沟通,目前来看,日常沟通还是没有问题的和我的外教. 知识日积月累,现在就把以前学习的(从初中到现在)知识总结下.每天一更,更到单元总结 ...