{"action":"opened","issue":{"url":"https://api.github.com/repos/cy0707/about_css/issues/15","repository_url":"https://api.github.com/repos/cy0707/about_css","labels_url":"https://api.github.com/repos/cy0707/about_css/issues/15/labels{/name}","comments_url":"https://api.github.com/repos/cy0707/about_css/issues/15/comments","events_url":"https://api.github.com/repos/cy0707/about_css/issues/15/events","html_url":"https://github.com/cy0707/about_css/issues/15","id":191620075,"number":15,"title":"CSS3@font-face和iconfont","user":{"login":"cy0707","id":15865210,"avatar_url":"https://avatars.githubusercontent.com/u/15865210?v=3","gravatar_id":"","url":"https://api.github.com/users/cy0707","html_url":"https://github.com/cy0707","followers_url":"https://api.github.com/users/cy0707/followers","following_url":"https://api.github.com/users/cy0707/following{/other_user}","gists_url":"https://api.github.com/users/cy0707/gists{/gist_id}","starred_url":"https://api.github.com/users/cy0707/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cy0707/subscriptions","organizations_url":"https://api.github.com/users/cy0707/orgs","repos_url":"https://api.github.com/users/cy0707/repos","events_url":"https://api.github.com/users/cy0707/events{/privacy}","received_events_url":"https://api.github.com/users/cy0707/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2016-11-25T03:42:36Z","updated_at":"2016-11-25T03:42:36Z","closed_at":null,"body":"## 前言\r\n\r\n最近学习了如何优化处理前端页面，又提起了把一些图标用字体代替，所以想对字体好好的了解一些，所以在这里进行总结一下。\r\n\r\n## CSS3@font-face\r\n\r\n#### @font-face是什么？\r\n\r\n@font-face是CSS3中的一个模块，他主要是把自己定义的Web字体嵌入到你的网页中，随着@font-face模块的出现，我们在Web的开发中使用字体不怕只能使用Web安全字体，你们当中或许有许多人会不自然的问，这样的东西IE能支持吗？@font-face这个功能早在IE4就支持了。\r\n\r\n#### @font-face的语法\r\n\r\n```css\r\n   @font-face {\r\n      font-family: <YourWebFontName>;\r\n      src: <source> [<format>][,<source> [<format>]]*;\r\n      [font-weight: <weight>];\r\n      [font-style: <style>];\r\n    }\r\n```\r\n\r\n取值说明\r\n\r\n* YourWebFontName:此值指的就是你自定义的字体名称，最好是使用你下载的默认字体，他将被引用到你的Web元素中的font-family。如“font-family:\"YourWebFontName\";”\r\n\r\n* source:此值指的是你自定义的字体的存放路径，可以是相对路径也可以是绝路径；\r\n\r\n* format：此值指的是你自定义的字体的格式，主要用来帮助浏览器识别，其值主要有以下几种类型：truetype,opentype,truetype-aat,embedded-opentype,avg等；\r\n\r\n* weight和style:这两个值大家一定很熟悉，weight定义字体是否为粗体，style主要定义字体样式，如斜体。\r\n\r\n\r\n#### 兼容性\r\n\r\n说到浏览器对@font-face的兼容问题，这里涉及到一个字体format的问题，因为不同的浏览器对字体格式支持是不一致的，这样大家有必要了解一下，各种版本的浏览器支持什么样的字体。\r\n\r\n* TureTpe(.ttf)格式：\r\n\r\n.ttf字体是Windows和Mac的最常见的字体，是一种RAW格式，因此他不为网站优化。\r\n\r\n支持这种字体的浏览器有【IE9+,Firefox3.5+,Chrome4+,Safari3+,Opera10+,iOS Mobile Safari4.2+】。\r\n\r\n\r\n* OpenType(.otf)格式\r\n\r\n.otf字体被认为是一种原始的字体格式，其内置在TureType的基础上，所以也提供了更多的功能。\r\n\r\n支持这种字体的浏览器有【Firefox3.5+,Chrome4.0+,Safari3.1+,Opera10.0+,iOS Mobile Safari4.2+】。\r\n\r\n\r\n* Web Open Font Format(.woff)格式\r\n\r\n.woff字体是Web字体中最佳格式，他是一个开放的TrueType/OpenType的压缩版本，同时也支持元数据包的分离。\r\n\r\n支持这种字体的浏览器有【IE9+,Firefox3.5+,Chrome6+,Safari3.6+,Opera11.1+】。\r\n\r\n\r\n* Embedded Open Type(.eot)格式\r\n\r\n.eot字体是IE专用字体，可以从TrueType创建此格式字体。\r\n\r\n支持这种字体的浏览器有【IE4+】\r\n\r\n\r\n* SVG(.svg)格式\r\n\r\n.svg字体是基于SVG字体渲染的一种格式。\r\n\r\n支持这种字体的浏览器有【Chrome4+,Safari3.1+,Opera10.0+,iOS Mobile Safari3.2+】。\r\n\r\n\r\n这就意味着在@font-face中我们至少需要.woff,.eot两种格式字体，甚至还需要.svg等字体达到更多种浏览版本的支持。\r\n\r\n\r\n* 兼容写法\r\n\r\n\r\n```css\r\n   @font-face {\r\n\tfont-family: 'YourWebFontName';\r\n\tsrc: url('YourWebFontName.eot'); /* IE9 Compat Modes */\r\n\tsrc: url('YourWebFontName.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\r\n             url('YourWebFontName.woff') format('woff'), /* Modern Browsers */\r\n             url('YourWebFontName.ttf')  format('truetype'), /* Safari, Android, iOS */\r\n             url('YourWebFontName.svg#YourWebFontName') format('svg'); /* Legacy iOS */\r\n   }\r\n```\r\n\r\n\r\n## 使用是需要注意\r\n\r\n* 如果你的项目中是英文网站，而且项目中的Logo，Tags等应用到较多的这种特殊字体效果，我建议你不要使用图片效果，而使用@font-face，但是你是中文网站，我觉得还是使用图片比较合适，因为加载英文字体和图片没有多大区别，但是你加载中文字体，那就不一样了，因为中文字体太大了，这样会影响到项目的某些性能的优化；\r\n\r\n* 致命的错误，你在@font-face中定义时，文件路径没有载对；\r\n\r\n* 你只定义了@font-face，但并没有应用到你的项目中的DOM元素上；\r\n\r\n\r\n## iconfont\r\n\r\n即把图片制作为字体，这里面有来两个字体库比较流行阿里巴巴的iconfont和font Awesome。\r\n\r\n具体用法可见其官网。下面都有链接。但是原理都是类似的。\r\n\r\n\r\n## 参考文章\r\n\r\n[CSS3 @font-face](http://www.w3cplus.com/content/css3-font-face)\r\n[图标应用教程](http://www.iconfont.cn/help/iconuse.html)\r\n[fontawesome](http://fontawesome.dashgame.com/)"}}
{"actor":{"display_login":"cy0707"}}