diff --git a/bookmark.html b/bookmark.html
deleted file mode 100644
index 93823b2..0000000
--- a/bookmark.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
- 书签 - Typo.css
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..832fa3b
--- /dev/null
+++ b/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "typo.css",
+ "version": "2.1.2",
+ "description": "一致化浏览器排版效果,构建最适合中文阅读的网页排版",
+ "main": "typo.css",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/sofish/typo.css.git"
+ },
+ "keywords": [
+ "typograhpy",
+ "中文"
+ ],
+ "author": "sofish (http://sofi.sh/)",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/sofish/typo.css/issues"
+ },
+ "homepage": "https://github.com/sofish/typo.css"
+}
diff --git a/typo.css b/typo.css
index 1996153..2373d75 100644
--- a/typo.css
+++ b/typo.css
@@ -1,362 +1,346 @@
@charset "utf-8";
/* 防止用户自定义背景颜色对网页的影响,添加让用户可以自定义字体 */
-html{
- color:#333;
- background:#fff;
- -webkit-text-size-adjust:100%;
- -ms-text-size-adjust:100%;
- text-rendering:optimizelegibility;
- -moz-osx-font-smoothing: grayscale;
- -webkit-font-smoothing: grayscale;
+html {
+ color: #333;
+ background: #fff;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ text-rendering: optimizelegibility;
}
/* 如果你的项目仅支持 IE9+ | Chrome | Firefox 等,推荐在 中添加 .borderbox 这个 class */
html.borderbox *, html.borderbox *:before, html.borderbox *:after {
- -moz-box-sizing:border-box;
- -webkit-box-sizing:border-box;
- box-sizing:border-box;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
}
/* 内外边距通常让各个浏览器样式的表现位置不同 */
-body, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, textarea, p, blockquote, th, td, hr, button, article, aside, details, figcaption, figure, footer, header, menu, nav, section{
- margin:0;
- padding:0;
+body, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, textarea, p, blockquote, th, td, hr, button, article, aside, details, figcaption, figure, footer, header, menu, nav, section {
+ margin: 0;
+ padding: 0;
}
/* 重设 HTML5 标签, IE 需要在 js 中 createElement(TAG) */
-article, aside, details, figcaption, figure, footer, header, menu, nav, section{
- display:block;
+article, aside, details, figcaption, figure, footer, header, menu, nav, section {
+ display: block;
}
/* HTML5 媒体文件跟 img 保持一致 */
-audio, canvas, video{
- display:inline-block;
- *display:inline;
- *zoom:1;
+audio, canvas, video {
+ display: inline-block;
}
/* 要注意表单元素并不继承父级 font 的问题 */
-body, button, input, select, textarea{
- font:400 1em/1.8 Avenir, Microsoft Yahei, Hiragino Sans GB, Microsoft Sans Serif, WenQuanYi Micro Hei, sans-serif;
-}
-
-/* 去除 IE6 input/button 多余的空白 */
-button, input{
- *width:auto;
- *overflow:visible;
-
- /* 让 input 和 button 一样高 */
- line-height:normal;
+body, button, input, select, textarea {
+ font: 300 1em/1.8 PingFang SC, Lantinghei SC, Microsoft Yahei, Hiragino Sans GB, Microsoft Sans Serif, WenQuanYi Micro Hei, sans-serif;
}
button::-moz-focus-inner,
-input::-moz-focus-inner{
- padding:0;
- border:0;
+input::-moz-focus-inner {
+ padding: 0;
+ border: 0;
}
/* 去掉各Table cell 的边距并让其边重合 */
-table{
- border-collapse:collapse;
- border-spacing:0;
-}
-
-/* IE bug fixed: th 不继承 text-align */
-th{
- text-align:inherit;
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
}
/* 去除默认边框 */
-fieldset, img{
- border:0;
-}
-
-/* 解决 IE6-7 图片缩放锯齿问题 */
-img{
- -ms-interpolation-mode:bicubic;
-}
-
-/* ie6 7 8(q) bug 显示为行内表现 */
-iframe{
- display:block;
+fieldset, img {
+ border: 0;
}
/* 块/段落引用 */
blockquote {
- position:relative;
+ position: relative;
color: #999;
- font-weight:300;
- font-family:Avenir, 'Helvetica Neue', 'Microsoft Yahei', 'Hiragino Sans GB', 'Microsoft Sans Serif', 'WenQuanYi Micro Hei', sans-serif;
- border-left:1px solid #1abc9c;
- padding-left:1em;
- margin:1em 3em 1em 2em;
+ font-weight: 400;
+ border-left: 1px solid #1abc9c;
+ padding-left: 1em;
+ margin: 1em 3em 1em 2em;
}
-@media only screen and ( max-width:640px ){
- blockquote{ margin:1em 0; }
+@media only screen and ( max-width: 640px ) {
+ blockquote {
+ margin: 1em 0;
+ }
}
/* Firefox 以外,元素没有下划线,需添加 */
-acronym, abbr{
- border-bottom:1px dotted;
- font-variant:normal;
+acronym, abbr {
+ border-bottom: 1px dotted;
+ font-variant: normal;
+ text-decoration: none;
}
/* 添加鼠标问号,进一步确保应用的语义是正确的(要知道,交互他们也有洁癖,如果你不去掉,那得多花点口舌) */
-abbr{
- cursor:help;
+abbr {
+ cursor: help;
}
/* 一致的 del 样式 */
-del{
- text-decoration:line-through;
+del {
+ text-decoration: line-through;
}
-address, caption, cite, code, dfn, em, th, var{
- font-style:normal;
- font-weight:400;
+address, caption, cite, code, dfn, em, th, var {
+ font-style: normal;
+ font-weight: 400;
}
/* 去掉列表前的标识, li 会继承,大部分网站通常用列表来很多内容,所以应该当去 */
-ul, ol{
- list-style:none;
+ul, ol {
+ list-style: none;
}
/* 对齐是排版最重要的因素, 别让什么都居中 */
-caption, th{
- text-align:left;
+caption, th {
+ text-align: left;
}
-q:before, q:after{
- content:'';
+q:before, q:after {
+ content: '';
}
/* 统一上标和下标 */
-sub, sup{
- font-size:75%;
- line-height:0;
- position:relative;
+sub, sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
}
-:root sub, :root sup{
- vertical-align:baseline; /* for ie9 and other modern browsers */
+:root sub, :root sup {
+ vertical-align: baseline; /* for ie9 and other modern browsers */
}
-sup{
- top:-0.5em;
+sup {
+ top: -0.5em;
}
-sub{
- bottom:-0.25em;
+sub {
+ bottom: -0.25em;
}
/* 让链接在 hover 状态下显示下划线 */
-a{ color:#1abc9c; }
-a:hover{ text-decoration:underline; }
+a {
+ color: #1abc9c;
+}
-.typo a{ border-bottom:1px solid #1abc9c; }
-.typo a:hover{ border-bottom-color:#555; color:#555; text-decoration:none; }
+a:hover {
+ text-decoration: underline;
+}
+
+.typo a {
+ border-bottom: 1px solid #1abc9c;
+}
+
+.typo a:hover {
+ border-bottom-color: #555;
+ color: #555;
+ text-decoration: none;
+}
/* 默认不显示下划线,保持页面简洁 */
-ins, a{
- text-decoration:none;
+ins, a {
+ text-decoration: none;
}
/* 专名号:虽然 u 已经重回 html5 Draft,但在所有浏览器中都是可以使用的,
* 要做到更好,向后兼容的话,添加 class="typo-u" 来显示专名号
* 关于 标签:http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-u-element
* 被放弃的是 4,之前一直搞错 http://www.w3.org/TR/html401/appendix/changes.html#idx-deprecated
- * 一篇关于 标签的很好文章:http://html5doctor.com/u-element/
+ * 一篇关于 标签的很好文章:http://html5doctor.com/u-element/
*/
-u, .typo-u{
- text-decoration:underline;
+u, .typo-u {
+ text-decoration: underline;
}
/* 标记,类似于手写的荧光笔的作用 */
-mark{
- background:#fffdd1;
- border-bottom:1px solid #ffedce;
- padding:2px;margin:0 5px;
+mark {
+ background: #fffdd1;
+ border-bottom: 1px solid #ffedce;
+ padding: 2px;
+ margin: 0 5px;
}
/* 代码片断 */
-pre, code, pre tt{
- font-family:Courier, 'Courier New', monospace;
+pre, code, pre tt {
+ font-family: Courier, 'Courier New', monospace;
}
-pre{
- background:#f8f8f8;
- border:1px solid #ddd;
- padding:1em 1.5em;
- display:block;
+pre {
+ background: #f8f8f8;
+ border: 1px solid #ddd;
+ padding: 1em 1.5em;
+ display: block;
-webkit-overflow-scrolling: touch;
}
/* 一致化 horizontal rule */
-hr{
- border:none;
- border-bottom:1px solid #cfcfcf;
- margin-bottom:10px;
- *color:pink; *filter:chroma(color=pink);
- height:10px;
- *margin:-7px 0 2px;
+hr {
+ border: none;
+ border-bottom: 1px solid #cfcfcf;
+ margin-bottom: 0.8em;
+ height: 10px;
}
/* 底部印刷体、版本等标记 */
small, .typo-small,
/* 图片说明 */
-figcaption{
- font-size:0.9em;
- color:#888;
+figcaption {
+ font-size: 0.9em;
+ color: #888;
}
-strong, b{font-weight:bold;color:#000;}
+strong, b {
+ font-weight: bold;
+ color: #000;
+}
/* 可拖动文件添加拖动手势 */
-[draggable]{
- cursor:move;
+[draggable] {
+ cursor: move;
}
-.clearfix:before, .clearfix:after{
- content:"";
- display:table;
+.clearfix:before, .clearfix:after {
+ content: "";
+ display: table;
}
-.clearfix:after{
- clear:both;
+.clearfix:after {
+ clear: both;
}
-.clearfix{
- zoom:1;
+.clearfix {
+ zoom: 1;
}
/* 强制文本换行 */
-.textwrap, .textwrap td, .textwrap th{
- word-wrap:break-word;
- word-break:break-all;
+.textwrap, .textwrap td, .textwrap th {
+ word-wrap: break-word;
+ word-break: break-all;
}
-.textwrap-table{
- table-layout:fixed;
+.textwrap-table {
+ table-layout: fixed;
}
/* 提供 serif 版本的字体设置: iOS 下中文自动 fallback 到 sans-serif */
-.serif{ font-family:Palatino, Optima, Georgia, serif; }
+.serif {
+ font-family: Palatino, Optima, Georgia, serif;
+}
/* 保证块/段落之间的空白隔行 */
.typo p, .typo pre, .typo ul, .typo ol, .typo dl, .typo form, .typo hr, .typo table,
-.typo-p, .typo-pre, .typo-ul, .typo-ol, .typo-dl, .typo-form, .typo-hr, .typo-table, blockquote{
- margin-bottom:1.8em;
+.typo-p, .typo-pre, .typo-ul, .typo-ol, .typo-dl, .typo-form, .typo-hr, .typo-table, blockquote {
+ margin-bottom: 1.2em
}
-h1, h2, h3, h4, h5, h6{
- font-family:'Helvetica Neue', 'Microsoft Yahei', 'Hiragino Sans GB', 'Microsoft Sans Serif', 'WenQuanYi Micro Hei', sans-serif;
- font-weight:200;
- color:#000;
+h1, h2, h3, h4, h5, h6 {
+ font-family: PingFang SC, Verdana, Helvetica Neue, Microsoft Yahei, Hiragino Sans GB, Microsoft Sans Serif, WenQuanYi Micro Hei, sans-serif;
+ font-weight: 100;
+ color: #000;
+ line-height: 1.35;
}
/* 标题应该更贴紧内容,并与其他块区分,margin 值要相应做优化 */
.typo h1, .typo h2, .typo h3, .typo h4, .typo h5, .typo h6,
-.typo-h1, .typo-h2, .typo-h3, .typo-h4, .typo-h5, .typo-h6{
- margin-bottom:0.4em;
- line-height:1.5;
+.typo-h1, .typo-h2, .typo-h3, .typo-h4, .typo-h5, .typo-h6 {
+ margin-top: 1.2em;
+ margin-bottom: 0.6em;
+ line-height: 1.35;
}
-.typo h1, .typo-h1{
- font-size:2em;
+.typo h1, .typo-h1 {
+ font-size: 2em;
}
-.typo h2, .typo-h2{
- font-size:1.8em;
+.typo h2, .typo-h2 {
+ font-size: 1.8em;
}
-.typo h3, .typo-h3{
- font-size:1.6em;
+.typo h3, .typo-h3 {
+ font-size: 1.6em;
}
-.typo h4, .typo-h4{
- font-size:1.4em;
+.typo h4, .typo-h4 {
+ font-size: 1.4em;
}
-.typo h5, .typo h6, .typo-h5, .typo-h6{
- font-size:1.2em;
+.typo h5, .typo h6, .typo-h5, .typo-h6 {
+ font-size: 1.2em;
}
/* 在文章中,应该还原 ul 和 ol 的样式 */
-.typo ul, .typo-ul{
- margin-left:1.3em;
- list-style:disc;
+.typo ul, .typo-ul {
+ margin-left: 1.3em;
+ list-style: disc;
}
-.typo ol, .typo-ol{
- list-style:decimal;
- margin-left:1.9em;
+.typo ol, .typo-ol {
+ list-style: decimal;
+ margin-left: 1.9em;
}
-.typo li ul, .typo li ol, .typo-ul ul, .typo-ul ol, .typo-ol ul, .typo-ol ol{
- margin-top:0;
- margin-bottom:0;
- margin-left:2em;
+.typo li ul, .typo li ol, .typo-ul ul, .typo-ul ol, .typo-ol ul, .typo-ol ol {
+ margin-bottom: 0.8em;
+ margin-left: 2em;
}
-.typo li ul, .typo-ul ul, .typo-ol ul{
- list-style:circle;
+.typo li ul, .typo-ul ul, .typo-ol ul {
+ list-style: circle;
}
/* 同 ul/ol,在文章中应用 table 基本格式 */
-.typo table th, .typo table td, .typo-table th, .typo-table td .typo table caption{
- border:1px solid #ddd;
- padding:0.5em 1em;
- color:#666;
+.typo table th, .typo table td, .typo-table th, .typo-table td, .typo table caption {
+ border: 1px solid #ddd;
+ padding: 0.5em 1em;
+ color: #666;
}
-.typo table th, .typo-table th{
- background:#fbfbfb;
+.typo table th, .typo-table th {
+ background: #fbfbfb;
}
-.typo table thead th, .typo-table thead th{
- background:#f1f1f1;
+.typo table thead th, .typo-table thead th {
+ background: #f1f1f1;
}
-.typo table caption{
- border-bottom:none;
+.typo table caption {
+ border-bottom: none;
}
/* 去除 webkit 中 input 和 textarea 的默认样式 */
-.typo-input, .typo-textarea{
- -webkit-appearance:none;
- border-radius:0;
+.typo-input, .typo-textarea {
+ -webkit-appearance: none;
+ border-radius: 0;
}
-/* 高亮选中 */
-::-moz-selection{
- background:#08c;
- color:#fff;
-}
-
-::selection{
- background:#08c;
- color:#fff;
-}
-
-.typo-em, .typo em, legend, caption{
- color:#000;
- font-weight:inherit;
+.typo-em, .typo em, legend, caption {
+ color: #000;
+ font-weight: inherit;
}
/* 着重号,只能在少量(少于100个字符)且全是全角字符的情况下使用 */
.typo-em {
position: relative;
}
+
.typo-em:after {
position: absolute;
top: 0.65em;
left: 0;
width: 100%;
overflow: hidden;
+ white-space: nowrap;
content: "・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・";
}
/* Responsive images */
-.typo img{ max-width: 100%; }
+.typo img {
+ max-width: 100%;
+}
diff --git a/typo.html b/typo.html
index 8ea03b4..9a19c17 100644
--- a/typo.html
+++ b/typo.html
@@ -10,6 +10,7 @@
code{ color:#1abc9c; }
html{ background:#eee; }
body{ width:90%; max-width: 960px; background:#fff; margin:3em auto 0; padding-top:2em;border:1px solid #ddd;border-width:0 1px;}
+ pre{white-space:pre-wrap;}
i.serif{ text-transform:lowercase; color:#1abc9c; }
:-moz-any(h1, h2, h3, h4, h5, h5) i.serif{ text-transform: capitalize; }
@@ -34,9 +35,9 @@
-
@@ -88,10 +89,10 @@ 现状和如何去做:
| OS X |
- √ |
- √ |
- √ |
- √ |
+ ✔ |
+ ✔ |
+ ✔ |
+ ✔ |
- |
- |
- |
@@ -99,32 +100,32 @@ 现状和如何去做:
| Win 7 |
- √ |
- √ |
- √ |
- √ |
- √ |
- √ |
- √ |
+ ✔ |
+ ✔ |
+ ✔ |
+ ✔ |
+ ✔ |
+ ✔ |
+ ✔ |
- |
| Win XP |
- √ |
- √ |
- √ |
- √ |
+ ✔ |
+ ✔ |
+ ✔ |
+ ✔ |
- |
- √ |
- √ |
- √ |
+ ✔ |
+ ✔ |
+ ✔ |
| Ubuntu |
- √ |
- √ |
+ ✔ |
+ ✔ |
- |
- √ |
+ ✔ |
- |
- |
- |
@@ -136,7 +137,7 @@ 现状和如何去做:
中文排版的重点和难点
在中文排版中,HTML4 的很多标准在语义在都有照顾到。但从视觉效果上,却很难利用单独的 CSS 来实现,像着重号(例:这里强调一下)。在 HTML4 中,专名号标签(<u>)已经被放弃,而
- HTML5 被重新提起。Typo.css 也根据实际情况提供相应的方案。我们重要要注意的两点是:
+ HTML5 被重新提起。Typo.css 也根据实际情况提供相应的方案。我们重要要注意的两点是:
- 语义:语义对应的用法和样式是否与中文排版一致
- 表现:在各浏览器中的字体、大小和缩放是否如排版预期
@@ -325,7 +326,7 @@ 1、Typo.css 排版偏重点
| 强调 |
em |
- 在全局显示正体,在 .typo 中显示与 b 和 strong 的样式一致,为粗休 |
+ 在全局显示正体,在 .typo 中显示与 b 和 strong 的样式一致,为粗体 |
| 加强 |
@@ -417,12 +418,12 @@ 1、Typo.css 排版偏重点
2、开源许可
-Typo.css 基于 MIT License 开源,使用代码只需说明来源,或者引用 license.txt 即可。
+Typo.css 基于 MIT License 开源,使用代码只需说明来源,或者引用 license.txt 即可。
-
+