diff --git a/latest/api.html b/latest/api.html new file mode 100644 index 00000000..c88b8add --- /dev/null +++ b/latest/api.html @@ -0,0 +1 @@ +API tests for han.js
\ No newline at end of file diff --git a/latest/api.jade b/latest/api.jade new file mode 100644 index 00000000..bd1bda13 --- /dev/null +++ b/latest/api.jade @@ -0,0 +1,13 @@ +doctype html +html(lang='zh-Hant') + head + meta(charset='utf-8') + title API tests for han.js + link(rel='stylesheet' href='./qunit.css') + meta(name='viewport' content='width=device-width, initial-scale=1.0') + body + #qunit + #qunit-fixture + script(src='./qunit.js') + script(src='./han.min.js') + script(src='./api.js') diff --git a/latest/api.js b/latest/api.js new file mode 100644 index 00000000..60f2f1da --- /dev/null +++ b/latest/api.js @@ -0,0 +1,209 @@ +(function(){ + var test, module, doc, div, makeArray, qsa, convertHtml, htmlEqual; + test = QUnit.test; + module = QUnit.module; + doc = function(){ + return document.cloneNode(true); + }; + div = function(){ + return document.createElement('div'); + }; + makeArray = function(it){ + return [].slice.call(it); + }; + qsa = function(context, q){ + return makeArray(context.querySelectorAll(q)); + }; + convertHtml = function(html){ + return html.toLowerCase().replace(/[\x20\t\f\s]{2,}/g, '').replace(/[\r\n]/g, '').replace(/="([^"]+)"/g, '=$1'); + }; + htmlEqual = function(a, b, log){ + a = convertHtml(a); + b = convertHtml(b); + return equal(a, b, log); + }; + module('Basics'); + test('Default rendering routine', function(){ + var before, d; + before = 'A辭Q

'; + d = doc(); + d.documentElement.innerHTML = before; + Han(d.body, d.documentElement).render(); + htmlEqual(d.body.innerHTML, '

'); + equal(d.title, 'A辭Q'); + equal(d.documentElement.classList.contains('han-js-rendered'), true); + before = 'AノQ

'; + d = doc(); + d.documentElement.innerHTML = before; + Han(d.body, d.documentElement).render(); + htmlEqual(d.body.innerHTML, '

'); + equal(d.title, 'AノQ'); + equal(d.documentElement.classList.contains('han-js-rendered'), true); + }); + module('Normalisation'); + test('Adjacent decoration lines', function(){ + var d; + d = div(); + d.innerHTML = 'abcd'; + Han(d).renderDecoLine(); + htmlEqual(d.innerHTML, 'abcd'); + d.innerHTML = ''; + Han(d).renderDecoLine(); + htmlEqual(d.innerHTML, ''); + d.innerHTML = '註記元素甲增訂元素甲註記元素乙一般文字節點增訂元素乙註記元素丙增訂元素丙一般文字節點;訛訊元素甲刪訂元素甲訛訊元素乙一般文字節點刪訂元素乙訛訊元素乙刪訂元素丙。'; + Han(d).renderDecoLine(); + htmlEqual(d.innerHTML, '註記元素甲增訂元素甲註記元素乙一般文字節點增訂元素乙註記元素丙增訂元素丙一般文字節點;訛訊元素甲刪訂元素甲訛訊元素乙一般文字節點刪訂元素乙訛訊元素乙刪訂元素丙。'); + d.innerHTML = '註記元素丁訛訊元素丁增訂元素丁刪訂元素丁。'; + Han(d).renderDecoLine(); + htmlEqual(d.innerHTML, '註記元素丁訛訊元素丁增訂元素丁刪訂元素丁。'); + }); + test('Emphasis marks', function(){ + var support, d; + support = Han.support.textemphasis; + d = div(); + d.innerHTML = '測試abc'; + Han(d).renderEm(); + if (support) { + htmlEqual(d.innerHTML, '測試abc'); + } else { + htmlEqual(d.innerHTML, 'abc'); + } + d.innerHTML = '「測『試』」,test ‘this!’。'; + Han(d).renderEm(); + if (support) { + htmlEqual(d.innerHTML, 'test this!'); + } else { + htmlEqual(d.innerHTML, 'test this!'); + } + d.innerHTML = '𫞵𫞦𠁻𠁶〇⼌⿕⺃⻍⻰⻳⿸⿷⿳'; + Han(d).renderEm(); + if (support) { + htmlEqual(d.innerHTML, '𫞵𫞦𠁻𠁶〇⼌⿕⺃⻍⻰⻳⿸⿷⿳'); + } else { + htmlEqual(d.innerHTML, '𫞵𫞦𠁻𠁶'); + } + d.innerHTML = '¡Hola! Ὅμηρος Свети'; + Han(d).renderEm(); + if (support) { + htmlEqual(d.innerHTML, '¡Hola! Ὅμηρος Свети'); + } else { + htmlEqual(d.innerHTML, '¡Hola! μηρος Свети'); + } + }); + test('Interlinear annotations (Ruby)', function(){ + var support, d; + support = Han.support.ruby; + d = div(); + d.innerHTML = 'zi'; + Han(d).renderRuby(); + if (support) { + htmlEqual(d.innerHTML, 'zi'); + } else { + htmlEqual(d.innerHTML, 'zi'); + } + d.innerHTML = '\n 事ㄕˋㄑㄧㄥˊ\n 看ㄎㄢˋ\n 冷ㄌㄥˇㄋㄨㄢˇ\n'; + Han(d).renderRuby(); + qsa(d, 'ru').forEach(function(it){ + it.removeAttribute('form'); + it.removeAttribute('zhuyin'); + it.removeAttribute('diao'); + it.removeAttribute('length'); + }); + htmlEqual(d.innerHTML, 'ˋㄑㄧㄥˊㄎㄢˋㄌㄥˇㄋㄨㄢˇ'); + d.innerHTML = '

\n \n 辛亥革命發生在1911-10-10,\n \n 清宣統三年\n 那天革命先烈們一同推翻了帝制。\n \n

'; + Han(d).renderRuby(); + qsa(d, 'ru').forEach(function(it){ + it.removeAttribute('annotation'); + it.removeAttribute('order'); + it.removeAttribute('span'); + }); + htmlEqual(d.innerHTML, '

辛亥革命發生在1911-10-10,清宣統三年那天革命先烈們一同推翻了帝制。

'); + d.innerHTML = '

\n \n 「」\n \n NiǔyuēShì\n \n \n New York City\n \n \n\n \n 『』\n \n New York City\n \n \n NiǔyuēShì\n \n \n\n \n ‘’\n \n New York City\n \n \n niǔyuēshì\n \n\n \n „‟\n \n niǔyuēshì\n \n \n New York City\n \n \n\n \n ⸘‽\n \n New York City\n \n \n 世界之都\n \n 。\n

\n \n ,\n !\n\n \n san1shih2liu4ko0ya2ch\'ih3cho1tuirh4ssu1ta3\n \n \n sānshíliùgechǐzhuōduìr\n \n '; + Han(d).renderRuby(); + qsa(d, 'ru').forEach(function(it){ + it.removeAttribute('annotation'); + it.removeAttribute('order'); + it.removeAttribute('span'); + }); + htmlEqual(d.innerHTML, '

\n niǔyuēshìnew york cityniǔyuēshìnew york cityniǔyuēshìnew york cityniǔyuēshìnew york citynew york city世界之都。\n

\n

\n san1sānshih2shíliu4liùko0geya2ch\'ih3chǐcho1zhuōtuirh4duìrssu1ta3\n

'); + d.innerHTML = '

\n \n \n \n \n \n \n 。\n\n \n ㄐㄧㆵ͘\n ㄌㄤˊ\n ㄏㄨㄢˊ\n ㄌㄜˋ\n ㄐㄧㆵ͘\n ㄧㆫ˫\n \n\n \n Tsi̍t\n lâng\n hoân‑ló\n chi̍t\n iūⁿ\n \n\n Tsi̍t\n lâng\n huân-ló\n tsi̍t\n iūnn\n \n \n

'; + Han(d).renderRuby(); + d.querySelector('hruby').removeAttribute('rightangle'); + qsa(d, 'ru').forEach(function(it){ + it.removeAttribute('annotation'); + it.removeAttribute('order'); + it.removeAttribute('span'); + it.removeAttribute('form'); + it.removeAttribute('zhuyin'); + it.removeAttribute('diao'); + it.removeAttribute('length'); + }); + htmlEqual(d.innerHTML, '

\n \n ㄐㄧㆵ͘Tsi̍tTsi̍t\n ㄌㄤˊlânglâng\n ㄏㄨㄢˊㄌㄜˋhoân‑lóhuân-ló\n ㄐㄧㆵ͘chi̍ttsi̍t\n ㄧㆫ˫iūⁿiūnn。\n \n

'); + }); + module('Advanced typesetting features'); + test('Hanzi-Western script mixed spacing (HWS)', function(){ + var d; + d = div(); + d.innerHTML = '測試test測試123測試'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '測試 test 測試 123 測試'); + d.innerHTML = '測試 test 測試 123 測試測試 test測試。'; + Han(d).renderHWS(true); + htmlEqual(d.innerHTML, '測試 test 測試 123 測試測試 test測試。'); + d.innerHTML = '測試,test測試123。'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '測試,test 測試 123。'); + d.innerHTML = '測試α測試β測試'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '測試 α 測試 β 測試'); + d.innerHTML = 'я測試у測試ь測試в'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, 'я 測試 у 測試 ь 測試 в'); + d.innerHTML = 'A㐀a㘻a䶵a𠀀a𫠝a〇a⿸a⻍a⻰aのa'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, 'a a a a 𠀀 a 𫠝 a a a a a a'); + d.innerHTML = '天然ê上好。荷Ὅ̴̊̌ηρος̃馬。貓К҉о҈ш҉к҈а҈咪。'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '天然 上好。荷 ὅ̴̊̌ηρος̃ 馬。貓 к҉о҈ш҉к҈а҈ 咪。'); + d.innerHTML = '去Europe旅行。'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '去 europe 旅行。'); + d.innerHTML = '去Europe旅行。'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '去 europe 旅行。'); + d.innerHTML = '測試¿測試?測試¡測試!為‘什’麼;為“什”麼?'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '測試 ¿測試? 測試 ¡測試! ‘什’ 麼; “什” 麼?'); + d.innerHTML = '單\'引\'號和雙"引"號和單\'引\'號和雙"引"號.'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '單 \'引\' 號和雙 "引" 號和單 \'引\' 號和雙 "引" 號.'); + d.innerHTML = '\'單x引x號\'"雙x引x號".'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '\'單 x x 號\'"雙 x x 號".'); + d.innerHTML = '單\'引\'號和雙"引"號和單\'引\'號和雙"引"號.'; + Han(d).renderHWS(); + return htmlEqual(d.innerHTML, '單 \'引\' 號和雙 "引" 號和單 \'引\' 號和雙 "引" 號.'); + }); + test('Consecutive punctuation (Jiya)', function(){ + var d; + d = div(); + d.innerHTML = '「字『字』?」字「字『字』」字?'; + Han(d).renderJiya(); + qsa(d, 'char').forEach(function(it){ + return it.removeAttribute('unicode'); + }); + htmlEqual(d.innerHTML, '「字『字字「字『字字?'); + d.innerHTML = '字、「字」字,(字)字……「字」。'; + Han(d).renderJiya(); + qsa(d, 'char').forEach(function(it){ + return it.removeAttribute('unicode'); + }); + htmlEqual(d.innerHTML, '字字」字字)字……'); + d.innerHTML = '《書名》〈篇名〉(內容)'; + Han(d).renderJiya(); + qsa(d, 'char').forEach(function(it){ + return it.removeAttribute('unicode'); + }); + return htmlEqual(d.innerHTML, '《書名篇名內容)'); + }); +}).call(this); diff --git a/latest/api.ls b/latest/api.ls new file mode 100644 index 00000000..d6a19f68 --- /dev/null +++ b/latest/api.ls @@ -0,0 +1,380 @@ + +test = QUnit.test +module = QUnit.module + +doc = -> document.cloneNode true +div = -> document.createElement \div +makeArray = -> [].slice.call it +qsa = ( context, q ) -> makeArray( context.querySelectorAll q ) + +convert-html = ( html ) -> + html + .toLowerCase! + .replace( /[\x20\t\f\s]{2,}/g, '' ) + .replace( /[\r\n]/g, '' ) + .replace( /="([^"]+)"/g, \=$1 ) + +html-equal = ( a, b, log ) -> + a = convert-html a + b = convert-html b + equal a, b, log + +module \Basics +test 'Default rendering routine', !-> + # Chinese + before = 'A辭Q

' + d = doc! + d.documentElement.innerHTML = before + Han d.body, d.documentElement .render! + + html-equal d.body.innerHTML, '

' + equal d.title, \A辭Q + equal d.documentElement.classList.contains(\han-js-rendered), true + + # Japanese + before = 'AノQ

' + d = doc! + d.documentElement.innerHTML = before + Han d.body, d.documentElement .render! + + html-equal d.body.innerHTML, '

' + equal d.title, \AノQ + equal d.documentElement.classList.contains(\han-js-rendered), true + +module \Normalisation +test 'Adjacent decoration lines', !-> + d = div! + d.innerHTML = \abcd + Han d .renderDecoLine! + html-equal d.innerHTML, 'abcd' + + d.innerHTML = \ + Han d .renderDecoLine! + html-equal d.innerHTML, '' + + d.innerHTML = '註記元素甲增訂元素甲註記元素乙一般文字節點增訂元素乙註記元素丙增訂元素丙一般文字節點;訛訊元素甲刪訂元素甲訛訊元素乙一般文字節點刪訂元素乙訛訊元素乙刪訂元素丙。' + Han d .renderDecoLine! + html-equal d.innerHTML, '註記元素甲增訂元素甲註記元素乙一般文字節點增訂元素乙註記元素丙增訂元素丙一般文字節點;訛訊元素甲刪訂元素甲訛訊元素乙一般文字節點刪訂元素乙訛訊元素乙刪訂元素丙。' + + d.innerHTML = '註記元素丁訛訊元素丁增訂元素丁刪訂元素丁。' + Han d .renderDecoLine! + html-equal d.innerHTML, '註記元素丁訛訊元素丁增訂元素丁刪訂元素丁。' + +test 'Emphasis marks' !-> + support = Han.support.textemphasis + d = div! + + # Basic + d.innerHTML = '測試abc' + Han d .renderEm! + + if support + html-equal d.innerHTML, '測試abc' + else + html-equal d.innerHTML, 'abc' + + # Skip punctuation + d.innerHTML = '「測『試』」,test ‘this!’。' + Han d .renderEm! + + if support + html-equal d.innerHTML, 'test this!' + else + html-equal d.innerHTML, 'test this!' + + # All CJK-related blocks + d.innerHTML = '𫞵𫞦𠁻𠁶〇⼌⿕⺃⻍⻰⻳⿸⿷⿳' + Han d .renderEm! + + if support + html-equal d.innerHTML, '𫞵𫞦𠁻𠁶〇⼌⿕⺃⻍⻰⻳⿸⿷⿳' + else + html-equal d.innerHTML, '𫞵𫞦𠁻𠁶' + + # All western letters + d.innerHTML = '¡Hola! Ὅμηρος Свети' + Han d .renderEm! + + if support + html-equal d.innerHTML, '¡Hola! Ὅμηρος Свети' + else + html-equal d.innerHTML, '¡Hola! μηρος Свети' + +test 'Interlinear annotations (Ruby)', !-> + support = Han.support.ruby + d = div! + + # Basic + d.innerHTML = 'zi' + Han d .renderRuby! + + if support + html-equal d.innerHTML, 'zi' + else + html-equal d.innerHTML, 'zi' + + # Zhuyin + d.innerHTML = ''' + + 事ㄕˋㄑㄧㄥˊ + 看ㄎㄢˋ + 冷ㄌㄥˇㄋㄨㄢˇ + +''' + Han d .renderRuby! + qsa d, \ru + .forEach !-> + it.removeAttribute \form + it.removeAttribute \zhuyin + it.removeAttribute \diao + it.removeAttribute \length + html-equal d.innerHTML, 'ˋㄑㄧㄥˊㄎㄢˋㄌㄥˇㄋㄨㄢˇ' + + # Complex ruby + d.innerHTML = ''' +

+ + 辛亥革命發生在1911-10-10, + + 清宣統三年 + 那天革命先烈們一同推翻了帝制。 + +

+''' + Han d .renderRuby! + qsa d, \ru + .forEach !-> + it.removeAttribute \annotation + it.removeAttribute \order + it.removeAttribute \span + html-equal d.innerHTML, '

辛亥革命發生在1911-10-10,清宣統三年那天革命先烈們一同推翻了帝制。

' + + d.innerHTML = ''' +

+ + 「」 + + NiǔyuēShì + + + New York City + + + + + 『』 + + New York City + + + NiǔyuēShì + + + + + ‘’ + + New York City + + + niǔyuēshì + + + + „‟ + + niǔyuēshì + + + New York City + + + + + ⸘‽ + + New York City + + + 世界之都 + + 。 +

+ + , + ! + + + san1shih2liu4ko0ya2ch\'ih3cho1tuirh4ssu1ta3 + + + sānshíliùgechǐzhuōduìr + + +''' + Han d .renderRuby! + qsa d, \ru + .forEach !-> + it.removeAttribute \annotation + it.removeAttribute \order + it.removeAttribute \span + html-equal d.innerHTML, ''' +

+ niǔyuēshìnew york cityniǔyuēshìnew york cityniǔyuēshìnew york cityniǔyuēshìnew york citynew york city世界之都。 +

+

+ san1sānshih2shíliu4liùko0geya2ch\'ih3chǐcho1zhuōtuirh4duìrssu1ta3 +

+''' + + # Triaxial ruby + d.innerHTML = ''' +

+ + + + + + + 。 + + + ㄐㄧㆵ͘ + ㄌㄤˊ + ㄏㄨㄢˊ + ㄌㄜˋ + ㄐㄧㆵ͘ + ㄧㆫ˫ + + + + Tsi̍t + lâng + hoân‑ló + chi̍t + iūⁿ + + + Tsi̍t + lâng + huân-ló + tsi̍t + iūnn + + +

+''' + Han d .renderRuby! + d.querySelector \hruby .removeAttribute \rightangle + qsa d, \ru + .forEach !-> + it.removeAttribute \annotation + it.removeAttribute \order + it.removeAttribute \span + it.removeAttribute \form + it.removeAttribute \zhuyin + it.removeAttribute \diao + it.removeAttribute \length + html-equal d.innerHTML, ''' +

+ + ㄐㄧㆵ͘Tsi̍tTsi̍t + ㄌㄤˊlânglâng + ㄏㄨㄢˊㄌㄜˋhoân‑lóhuân-ló + ㄐㄧㆵ͘chi̍ttsi̍t + ㄧㆫ˫iūⁿiūnn。 + +

+''' + +module 'Advanced typesetting features' +test 'Hanzi-Western script mixed spacing (HWS)' -> + d = div! + + # Basic + d.innerHTML = '測試test測試123測試' + Han d .renderHWS! + html-equal d.innerHTML, '測試 test 測試 123 測試' + + # Strict mode + d.innerHTML = '測試 test 測試 123 測試測試 test測試。' + Han d .renderHWS true + html-equal d.innerHTML, '測試 test 測試 123 測試測試 test測試。' + + # With Biaodian + d.innerHTML = '測試,test測試123。' + Han d .renderHWS! + html-equal d.innerHTML, '測試,test 測試 123。' + + # Greek letters + d.innerHTML = '測試α測試β測試' + Han d .renderHWS! + html-equal d.innerHTML, '測試 α 測試 β 測試' + + # Cyrillic letters + d.innerHTML = 'я測試у測試ь測試в' + Han d .renderHWS! + html-equal d.innerHTML, 'я 測試 у 測試 ь 測試 в' + + # All CJK-related blocks + d.innerHTML = 'A㐀a㘻a䶵a𠀀a𫠝a〇a⿸a⻍a⻰aのa' + Han d .renderHWS! + html-equal d.innerHTML, 'a a a a 𠀀 a 𫠝 a a a a a a' + + # Combining characters + d.innerHTML = '天然ê上好。荷Ὅ̴̊̌ηρος̃馬。貓К҉о҈ш҉к҈а҈咪。' + Han d .renderHWS! + html-equal d.innerHTML, '天然 上好。荷 ὅ̴̊̌ηρος̃ 馬。貓 к҉о҈ш҉к҈а҈ 咪。' + + # Cross-boundary + d.innerHTML = '去Europe旅行。' + Han d .renderHWS! + html-equal d.innerHTML, '去 europe 旅行。' + + # With comments or `` + d.innerHTML = '去Europe旅行。' + Han d .renderHWS! + html-equal d.innerHTML, '去 europe 旅行。' + + # Edge cases + d.innerHTML = '測試¿測試?測試¡測試!為‘什’麼;為“什”麼?' + Han d .renderHWS! + html-equal d.innerHTML, '測試 ¿測試? 測試 ¡測試! ‘什’ 麼; “什” 麼?' + + d.innerHTML = '單\'引\'號和雙"引"號和單\'引\'號和雙"引"號.' + Han d .renderHWS! + html-equal d.innerHTML, '單 \'引\' 號和雙 "引" 號和單 \'引\' 號和雙 "引" 號.' + + + d.innerHTML = '\'單x引x號\'"雙x引x號".' + Han d .renderHWS! + html-equal d.innerHTML, '\'單 x x 號\'"雙 x x 號".' + + + d.innerHTML = '單\'引\'號和雙"引"號和單\'引\'號和雙"引"號.' + Han d .renderHWS! + html-equal d.innerHTML, '單 \'引\' 號和雙 "引" 號和單 \'引\' 號和雙 "引" 號.' + +test 'Consecutive punctuation (Jiya)' -> + d = div! + d.innerHTML = '「字『字』?」字「字『字』」字?' + Han d .renderJiya! + qsa d, \char + .forEach -> + it.removeAttribute \unicode + html-equal d.innerHTML, '「字『字字「字『字字?' + + d.innerHTML = '字、「字」字,(字)字……「字」。' + Han d .renderJiya! + qsa d, \char + .forEach -> + it.removeAttribute \unicode + html-equal d.innerHTML, '字字」字字)字……' + + d.innerHTML = '《書名》〈篇名〉(內容)' + Han d .renderJiya! + qsa d, \char + .forEach -> + it.removeAttribute \unicode + html-equal d.innerHTML, '《書名篇名內容)' + diff --git a/latest/biaodian.html b/latest/biaodian.html index 5996b7d2..a61a57e6 100644 --- a/latest/biaodian.html +++ b/latest/biaodian.html @@ -1,84 +1,36 @@ - - - - - 測試・標點符號 — 漢字標準格式 - - - - - - - -
-

測試·標點符號

-

提示:此測試頁需在支援CSS3 @font-face屬性unicode-range的瀏覽器下方可正常顯示。其餘瀏覽器僅支援基本符號(間隔號、刪節號、破折號)修正。 -

-
-

推薦

-

句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號!
連接號〇-九 斜線/或\
「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容)
間隔號甲·乙
連字時:破折號——刪節號……
單獨存在時:破拆號— 刪節號…

-
-
-

台灣教育部式(CNS)

-

句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號!
連接號〇-九 斜線/或\
「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容)
間隔號甲·乙
連字時:破折號——刪節號……
單獨存在時:破拆號— 刪節號…

-
-
-

中國國家標準(GB)

-

句号。点式全形句号.逗号,顿号、分号;冒号:问号?叹号!
连接号〇-九 斜线/或\
「『内容』内容」‘内“内容”容’《内容》〈内容〉(内〔内容〕容)
間隔號甲·乙
連字時:破折號——刪節號……
單獨存在時:破拆號— 刪節號…

-
-
-

襯線標點

-
-

推薦

-

句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號!
連接號〇-九 斜線/或\
「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容)
間隔號甲·乙
連字時:破折號——刪節號……
單獨存在時:破拆號— 刪節號…

-
-
-

台灣教育部式(CNS)

-

句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號!
連接號〇-九 斜線/或\
「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容)
間隔號甲·乙
連字時:破折號——刪節號……
單獨存在時:破拆號— 刪節號…

-
-
-

中國國家標準(GB)

-

句号。点式全形句号.逗号,顿号、分号;冒号:问号?叹号!
连接号〇-九 斜线/或\
「『内容』内容」‘内“内容”容’《内容》〈内容〉(内〔内容〕容)
間隔號甲·乙
連字時:破折號——刪節號……
單獨存在時:破拆號— 刪節號…

-
-
-
- - - \ No newline at end of file +測試・標點符號 — 漢字標準格式

測試·標點符號

提示:此測試頁需在支援CSS3 @font-face屬性unicode-range的瀏覽器下方可正常顯示。其餘瀏覽器僅支援基本符號(間隔號、刪節號、破折號)修正。

推薦

句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號!
連接號〇-九 斜線/或\
「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容)
間隔號甲·乙
連字時:破折號——刪節號……
單獨存在時:破拆號— 刪節號…

台灣教育部式(CNS)

句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號!
連接號〇-九 斜線/或\
「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容)
間隔號甲·乙
連字時:破折號——刪節號……
單獨存在時:破拆號— 刪節號…

中國國家標準(GB)

句号。点式全形句号.逗号,顿号、分号;冒号:问号?叹号!
连接号〇-九 斜线/或\
「『内容』内容」‘内“内容”容’《内容》〈内容〉(内〔内容〕容)
間隔號甲·乙
連字時:破折號——刪節號……
單獨存在時:破拆號— 刪節號…

襯線標點

推薦

句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號!
連接號〇-九 斜線/或\
「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容)
間隔號甲·乙
連字時:破折號——刪節號……
單獨存在時:破拆號— 刪節號…

台灣教育部式(CNS)

句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號!
連接號〇-九 斜線/或\
「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容)
間隔號甲·乙
連字時:破折號——刪節號……
單獨存在時:破拆號— 刪節號…

中國國家標準(GB)

句号。点式全形句号.逗号,顿号、分号;冒号:问号?叹号!
连接号〇-九 斜线/或\
「『内容』内容」‘内“内容”容’《内容》〈内容〉(内〔内容〕容)
間隔號甲·乙
連字時:破折號——刪節號……
單獨存在時:破拆號— 刪節號…

\ No newline at end of file diff --git a/latest/counter-han.css b/latest/counter-han.css index 61e228c4..07be819f 100644 --- a/latest/counter-han.css +++ b/latest/counter-han.css @@ -1 +1 @@ -/*! 漢字標準格式 v3.0.2 | MIT License | css.hanzi.co *//*! Han: CSS typography framework optimised for Hanzi *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{line-height:1.3;-webkit-font-smoothing:subpixel-antialiased}ol,ul{padding-left:2em}figure,blockquote{margin-left:2em;margin-right:2em}address{font-style:inherit}pre{white-space:pre;word-wrap:normal}a{text-decoration:inherit}em:lang(zh),em:lang(ja){-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;font-style:inherit;border-bottom:2px dotted;padding-bottom:0.05em;border-bottom-width:-webkit-calc( 0px );padding-bottom:-webkit-calc( 0px )}em:lang(ja){-moz-text-emphasis:filled sesame;-webkit-text-emphasis:filled sesame;text-emphasis:filled sesame;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}strong,dfn:lang(zh),dfn:lang(ja),b{font-weight:inherit}strong,dfn:lang(zh),dfn:lang(ja),b{font-weight:bolder}dfn:lang(zh),dfn:lang(ja){font-style:inherit}cite:lang(zh),cite:lang(ja){font-style:inherit}q{quotes:"“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’"}q:lang(zh){quotes:"「" "」" "『" "』" "「" "」" "『" "』" "「" "」" "『" "』"}q:lang(zh-CN),q:lang(en){quotes:"“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’"}q:lang(en-GB){quotes:"‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”"}q:before{content:open-quote}q:after{content:close-quote}q:lang(ja):before,q:lang(ja):after{content:none}code,kbd,samp,pre{font-family:monospace,monospace,sans-serif}i:lang(zh),i:lang(ja),var:lang(zh),var:lang(ja){font-family:cursive,serif;font-style:inherit}u+u,u+ins,ins+u,ins+ins,s+s,s+del,del+s,del+del,.hyu-js-rendered u.adjacent,.hyu-js-rendered ins.adjacent,.hyu-js-rendered s+s.adjacent,.hyu-js-rendered s+del.adjacent,.hyu-js-rendered del+s.adjacent,.hyu-js-rendered del+del.adjacent{margin-left:0.125em}u,ins{padding-bottom:0.05em;border-bottom:1px solid;text-decoration:none}ruby *:before,ruby *:after{line-height:normal}ruby>rt:not(:empty):before{content:"("}ruby>rt:not(:empty):after{content:")"}ruby>rb+rtc:before{content:"("}ruby>rtc:after{content:","}ruby>rtc:last-of-type:after{content:")"}ruby>rt:before,ruby>rt:after{display:inline-block;overflow:hidden;vertical-align:middle;height:0;width:0}ruby>rt:not(:empty):before,ruby>rt:not(:empty):after{height:-moz-calc( 1.3em );width:-moz-calc( 1em )}.hyu-js-rendered u+u,.hyu-js-rendered u+ins,.hyu-js-rendered ins+u,.hyu-js-rendered ins+ins,.hyu-js-rendered s+s,.hyu-js-rendered s+del,.hyu-js-rendered del+s,.hyu-js-rendered del+del{margin-left:auto}.hyu-js-rendered em:lang(zh),.hyu-js-rendered em:lang(ja){padding-bottom:auto;border-bottom-width:0}.no-textemphasis em:lang(zh),.no-textemphasis em:lang(ja){line-height:2}.no-textemphasis em:lang(zh) char,.no-textemphasis em:lang(ja) char{position:relative;font-style:inherit}.no-textemphasis em:lang(zh) char:after,.no-textemphasis em:lang(ja) char:after{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:normal;line-height:normal;text-decoration:none;text-indent:0;-moz-transform:scale(0.5);-ms-transform:scale(0.5);-webkit-transform:scale(0.5);transform:scale(0.5);position:absolute;left:50%;top:0;margin-left:-250%;overflow:hidden;display:inline-block;height:1em;width:500%;line-height:1;text-align:center;text-indent:0;font-family:Georgia,"Times New Roman",Arial,!important}em:lang(zh) char.punct,em:lang(ja) char.punct,em:lang(zh) char.biaodian,em:lang(ja) char.biaodian{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none}.no-textemphasis em:lang(zh) char.punct:after,.no-textemphasis em:lang(ja) char.punct:after,.no-textemphasis em:lang(zh) char.biaodian:after,.no-textemphasis em:lang(ja) char.biaodian:after{content:none !important}.no-textemphasis em:lang(zh) char:after{margin-top:1em;content:"●"}.no-textemphasis em:lang(ja) char:after{margin-top:-0.7em;content:"﹅"}hruby{display:inline;line-height:2}hruby rp{display:none}hruby ru[annotation]>rt{display:inline-block;height:0;width:0;font:0/0 hidden-text}hruby ru{position:relative;display:inline-block;text-indent:0}hruby ru:before,hruby zhuyin{-moz-transform:scale(0.55);-ms-transform:scale(0.55);-webkit-transform:scale(0.55);transform:scale(0.55);-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:normal;line-height:normal;text-decoration:none;text-indent:0;position:absolute;display:inline-block}hruby ru[annotation]{text-align:center}hruby ru[annotation]:before{left:-265%;top:-0.5em;vertical-align:top;height:1em;width:600%;content:attr(annotation);line-height:1;text-align:center;text-indent:0}hruby[rightangle] ru[annotation]:before{left:-250%}hruby ru[zhuyin]{display:inline-block;position:relative;width:1.8em;text-align:left}hruby ru[zhuyin] zhuyin{right:0.2em;top:0;height:2.7em;width:0.8em;line-height:0.9;white-space:pre-wrap;word-break:break-all}hruby ru[zhuyin] diao{position:absolute;right:-0.9em;top:0;display:inline-block;width:1em}hruby ru[zhuyin][length='0'],hruby ru[zhuyin]:empty{width:auto}hruby ru[zhuyin][length='0'] zhuyin,hruby ru[zhuyin]:empty zhuyin{display:none}hruby ru[zhuyin][length='1'] zhuyin{margin-top:0.125em}hruby ru[zhuyin][length='1'] diao{margin-top:-0.35em}hruby ru[zhuyin][length='2'] zhuyin{margin-top:-0.175em}hruby ru[zhuyin][length='2'] diao{margin-top:0.5em}hruby ru[zhuyin][length='3'] zhuyin{margin-top:-0.45em}hruby ru[zhuyin][length='3'] diao{margin-top:1.3em}hruby ru[zhuyin][diao='˙'] diao{right:-0.35em}hruby ru[zhuyin][diao='˙'][length='1'] diao{margin-top:-0.5em}hruby ru[zhuyin][diao='˙'][length='2'] diao{margin-top:-0.3em}hruby ru[zhuyin][diao='˙'][length='3'] diao{margin-top:-0.25em}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1.2);-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2);margin-right:-0.25em}hruby ru[zhuyin][diao^='ㆴ'] diao,hruby ru[zhuyin][diao^='ㆵ'] diao,hruby ru[zhuyin][diao^='ㆶ'] diao,hruby ru[zhuyin][diao^='ㆷ'] diao,hruby ru[zhuyin][diao='󳆴'] diao,hruby ru[zhuyin][diao='󳆵'] diao,hruby ru[zhuyin][diao='󳆶'] diao,hruby ru[zhuyin][diao='󳆷'] diao{top:20%;margin-right:-0.3em}hruby ru[annotation]:before,hruby[rightangle] ru[annotation][order='1']:before{top:-0.5em}hruby ru[order='1']:before,hruby[rightangle] ru[annotation][order='0']:before{bottom:-0.4em;top:auto}hruby[rightangle] ru[annotation]:before{margin-left:-0.4em}@media screen and (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 192dpi){hruby yin{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);display:inline-block}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}hruby ru[zhuyin][diao='˙'] diao{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);top:0.125em}}jinze{display:inline-block;text-indent:0}@font-face{font-family:'Han Heiti';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Lantinghei SC"),local("Heiti SC"),local("Heiti TC"),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Droid Sans Fallback")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';src:local(YuGothic),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro")}@font-face{font-family:'Han Heiti CNS';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Heiti TC"),local("Microsoft Jhenghei"),local("Heiti SC"),local("Lantinghei SC"),local("Microsoft Yahei"),local("Droid Sans Fallback")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';src:local(YuGothic),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro")}@font-face{font-family:'Han Heiti GB';src:local("Hiragino Sans GB"),local("Lantinghei SC"),local("Heiti SC"),local("Microsoft Yahei"),local("Droid Sans Fallback")}@font-face{font-family:'Han Heiti';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Lantinghei SC Demibold"),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local("Heiti SC Medium"),local("Heiti TC Medium"),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local("Microsoft YaHei Bold"),local("Microsoft Jhenghei Bold"),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';font-weight:600;src:local("YuGothic Bold"),local("Hiragino Kaku Gothic ProN W6"),local("Hiragino Kaku Gothic Pro W6"),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local("Lantinghei SC Demibold"),local("Microsoft YaHei Bold"),local("Heiti SC Medium"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';font-weight:600;src:local("YuGothic Bold"),local(YuGo-Bold),local("Hiragino Kaku Gothic ProN W6"),local("Hiragino Kaku Gothic Pro W6"),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti GB';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei SC Demibold"),local("Microsoft YaHei Bold"),local("Heiti SC Medium"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{font-family:'Han Heiti';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Lantinghei SC"),local("Heiti SC"),local("Heiti TC"),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:'Han Heiti';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Lantinghei SC Demibold"),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local("Heiti SC Medium"),local("Heiti TC Medium"),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local("Microsoft YaHei Bold"),local("Microsoft Jhenghei Bold"),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold);unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Heiti TC"),local("Microsoft Jhenghei"),local("Heiti SC"),local("Lantinghei SC"),local("Microsoft Yahei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local("Lantinghei SC Demibold"),local("Heiti SC Medium"),local("Microsoft YaHei Bold"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold);unicode-range:U+270C}@font-face{font-family:'Han Heiti GB';src:local("Hiragino Sans GB"),local("Lantinghei SC"),local("Heiti SC"),local("Microsoft Yahei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:'Han Songti';src:local("Songti SC"),local("Songti TC"),local(STSong),local("Lisong Pro"),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';src:local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho")}@font-face{font-family:'Han Songti CNS';src:local("Songti TC"),local("Lisong Pro"),local("Songti SC"),local(STSong),local(PMingLiU),local(SimSun)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';src:local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro")}@font-face{font-family:'Han Songti GB';src:local("Songti SC"),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:'Han Songti';font-weight:600;src:local("STSongti SC Bold"),local("STSongti TC Bold"),local(STSongti-SC-Bold),local(STSongti-TC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';font-weight:600;src:local("YuMincho Demibold"),local("Hiragino Mincho ProN W6"),local("Hiragino Mincho Pro W6"),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';font-weight:600;src:local("YuMincho Demibold"),local("Hiragino Mincho ProN W6"),local("Hiragino Mincho Pro W6"),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti GB';font-weight:600;src:local("STSongti SC Bold"),local(STSongti-SC-Bold)}@font-face{font-family:'Han Songti';src:local("Songti SC"),local("Songti TC"),local(STSongti),local("Lisong Pro"),local("MS Mincho"),local(SimSun),local(PMingLiU);unicode-range:U+270C}@font-face{font-family:'Han Songti';font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';src:local("Songti TC"),local("Lisong Pro"),local("Songti SC"),local(STSong),local("MS Mincho"),local(PMingLiU),local(SimSun);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti GB';src:local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+270C}@font-face{font-family:cursive;src:local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti';src:local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti CNS';src:local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti GB';src:local("Kaiti SC"),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti';font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti GB';font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong CNS';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong GB';src:local(STFangsong),local(FangSong)}@font-face{font-family:'Biaodian Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Serif';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Arial Unicode MS"),local("MS Gothic");unicode-range:U+2014}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho"),local("Microsoft Yahei");unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local("MS Mincho"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic");unicode-range:U+2026}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Lisong Pro"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Sans';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Serif';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans GB';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif GB';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU),local("MS Gothic");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(STSongti-TC-Regular),local("Lisong Pro"),local("Heiti TC"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Songti SC"),local(STSongti),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Basic';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:'Biaodian Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Latin Italic Serif';src:local("Georgia Italic"),local("Times New Roman Italic"),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Serif';font-weight:700;src:local("Georgia Bold Italic"),local("Times New Roman Bold Italic"),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Sans';src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:'Latin Italic Sans';font-weight:700;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Sans';src:local(Skia),local("Neutraface 2 Text"),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Serif';src:local(Georgia),local("Hoefler Text"),local("Big Caslon")}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Italic Serif';src:local("Georgia Italic"),local("Hoefler Text Italic"),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Sans';src:local("Helvetica Neue"),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';font-weight:bold;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Serif';src:local(Palatino),local("Palatino Linotype"),local("Times New Roman")}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';src:local("Palatino Italic"),local("Palatino Italic Linotype"),local("Times New Roman Italic"),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';font-weight:bold;src:local("Palatino Bold Italic"),local("Palatino Bold Italic Linotype"),local("Times New Roman Bold Italic"),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{font-family:'Numeral TF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';font-weight:bold;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';font-weight:bold;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Kaiti'}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Heiti';src:local("Hiragino Sans GB"),local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype")}@font-face{font-family:'Zhuyin Heiti';src:local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");unicode-range:U+3127}@font-face{src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");font-family:'Zhuyin Heiti';unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");font-family:'Romanization Sans';unicode-range:U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}html:lang(zh-Latn),html:lang(ja-Latn),html:not(:lang(zh)):not(:lang(ja)),html *:lang(zh-Latn),html *:lang(ja-Latn),html *:not(:lang(zh)):not(:lang(ja)),article strong:lang(zh-Latn),article strong:lang(ja-Latn),article strong:not(:lang(zh)):not(:lang(ja)),article strong *:lang(zh-Latn),article strong *:lang(ja-Latn),article strong *:not(:lang(zh)):not(:lang(ja)){font-family:"Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}html:lang(zh),html:lang(zh-Hant),[lang^='zh'],[lang*='Hant'],[lang='zh-TW'],[lang='zh-HK'],article strong:lang(zh),article strong:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}html:lang(zh-Hans),html:lang(zh-CN),[lang*='Hans'],[lang='zh-CN'],article strong:lang(zh-Hans),article strong:lang(zh-CN){font-family:"Biaodian Pro Sans GB","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}html:lang(ja),[lang^='ja'],article strong:lang(ja){font-family:"Yakumono Sans","Helvetica Neue",Helvetica,Arial,sans-serif}article blockquote i:lang(zh-Latn),article blockquote i:lang(ja-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote i *:lang(zh-Latn),article blockquote i *:lang(ja-Latn),article blockquote i *:not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(zh-Latn),article blockquote var:lang(ja-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)),article blockquote var *:lang(zh-Latn),article blockquote var *:lang(ja-Latn),article blockquote var *:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}article blockquote i:lang(zh-Hans),article blockquote i:lang(zh-CN),article blockquote var:lang(zh-Hans),article blockquote var:lang(zh-CN){font-family:"Biaodian Pro Sans GB","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}article blockquote i:lang(ja),article blockquote var:lang(ja){font-family:"Yakumono Sans","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,sans-serif}article figure blockquote:lang(zh-Latn),article figure blockquote:lang(ja-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)),article figure blockquote *:lang(zh-Latn),article figure blockquote *:lang(ja-Latn),article figure blockquote *:not(:lang(zh)):not(:lang(ja)),figure blockquote:lang(zh-Latn),figure blockquote:lang(ja-Latn),figure blockquote:not(:lang(zh)):not(:lang(ja)),figure blockquote *:lang(zh-Latn),figure blockquote *:lang(ja-Latn),figure blockquote *:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Songti",cursive,serif}article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant),figure blockquote:lang(zh),figure blockquote:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Songti",serif}article figure blockquote:lang(zh-Hans),article figure blockquote:lang(zh-CN),figure blockquote:lang(zh-Hans),figure blockquote:lang(zh-CN){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Songti GB",serif}article figure blockquote:lang(ja),figure blockquote:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",serif}article blockquote:lang(zh-Latn),article blockquote:lang(ja-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)),article blockquote *:lang(zh-Latn),article blockquote *:lang(ja-Latn),article blockquote *:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Kaiti",cursive,serif}article blockquote:lang(zh),article blockquote:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}article blockquote:lang(zh-Hans),article blockquote:lang(zh-CN){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}article blockquote:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",cursive,serif}i:lang(zh-Latn),i:lang(ja-Latn),i:not(:lang(zh)):not(:lang(ja)),i *:lang(zh-Latn),i *:lang(ja-Latn),i *:not(:lang(zh)):not(:lang(ja)),var:lang(zh-Latn),var:lang(ja-Latn),var:not(:lang(zh)):not(:lang(ja)),var *:lang(zh-Latn),var *:lang(ja-Latn),var *:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti",cursive,serif}i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}i:lang(zh-Hans),i:lang(zh-CN),var:lang(zh-Hans),var:lang(zh-CN){font-family:"Biaodian Pro Serif GB","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}i:lang(ja),var:lang(ja){font-family:"Yakumono Serif","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman",cursive,serif}code:lang(zh-Latn),code:lang(ja-Latn),code:not(:lang(zh)):not(:lang(ja)),code *:lang(zh-Latn),code *:lang(ja-Latn),code *:not(:lang(zh)):not(:lang(ja)),kbd:lang(zh-Latn),kbd:lang(ja-Latn),kbd:not(:lang(zh)):not(:lang(ja)),kbd *:lang(zh-Latn),kbd *:lang(ja-Latn),kbd *:not(:lang(zh)):not(:lang(ja)),samp:lang(zh-Latn),samp:lang(ja-Latn),samp:not(:lang(zh)):not(:lang(ja)),samp *:lang(zh-Latn),samp *:lang(ja-Latn),samp *:not(:lang(zh)):not(:lang(ja)),pre:lang(zh-Latn),pre:lang(ja-Latn),pre:not(:lang(zh)):not(:lang(ja)),pre *:lang(zh-Latn),pre *:lang(ja-Latn),pre *:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,"Han Heiti",monospace,monospace,sans-serif}code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS",Menlo,Consolas,Courier,"Zhuyin Heiti","Han Heiti",monospace,monospace,sans-serif}code:lang(zh-Hans),code:lang(zh-CN),kbd:lang(zh-Hans),kbd:lang(zh-CN),samp:lang(zh-Hans),samp:lang(zh-CN),pre:lang(zh-Hans),pre:lang(zh-CN){font-family:"Biaodian Pro Sans GB",Menlo,Consolas,Courier,"Han Heiti GB",monospace,monospace,sans-serif}code:lang(ja),kbd:lang(ja),samp:lang(ja),pre:lang(ja){font-family:"Yakumono Sans",Menlo,Consolas,Courier,monospace,monospace,sans-serif}html,ruby ru[zhuyin] zhuyin,ruby ru[zhuyin] zhuyin diao,hruby ru[zhuyin] zhuyin,hruby ru[zhuyin] zhuyin diao,ruby.romanization rt,ruby ru[annotation]:before,hruby.romanization rt,hruby ru[annotation]:before,.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode='b7']{-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga";-webkit-font-feature-settings:"liga";font-feature-settings:"liga"}ruby ru[zhuyin] zhuyin diao,hruby ru[zhuyin] zhuyin diao{font-family:"Zhuyin Kaiti",cursive,serif}ruby.romanization rt,ruby ru[annotation]:before,hruby.romanization rt,hruby ru[annotation]:before{font-family:"Romanization Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}.no-kaiti i,.no-kaiti var{padding-bottom:0.05em;border-bottom:3px double #d3d3d3}article{line-height:1.7}article p,article li{text-align:justify;text-justify:inter-ideograph}article h1+blockquote,article h1+p,article h1+ol,article h1+ul,article h1+h6,article h1+section>h6:first-child,article h1+section>p:first-child,article h1+section>ol:first-child,article h1+section>ul:first-child,article h1+section>blockquote:first-child,article h2+blockquote,article h2+p,article h2+ol,article h2+ul,article h2+h6,article h2+section>h6:first-child,article h2+section>p:first-child,article h2+section>ol:first-child,article h2+section>ul:first-child,article h2+section>blockquote:first-child,article h3+blockquote,article h3+p,article h3+ol,article h3+ul,article h3+h6,article h3+section>h6:first-child,article h3+section>p:first-child,article h3+section>ol:first-child,article h3+section>ul:first-child,article h3+section>blockquote:first-child,article h4+blockquote,article h4+p,article h4+ol,article h4+ul,article h4+h6,article h4+section>h6:first-child,article h4+section>p:first-child,article h4+section>ol:first-child,article h4+section>ul:first-child,article h4+section>blockquote:first-child,article h5+blockquote,article h5+p,article h5+ol,article h5+ul,article h5+h6,article h5+section>h6:first-child,article h5+section>p:first-child,article h5+section>ol:first-child,article h5+section>ul:first-child,article h5+section>blockquote:first-child,article h6+blockquote,article h6+p,article h6+ol,article h6+ul,article h6+h6,article h6+section>h6:first-child,article h6+section>p:first-child,article h6+section>ol:first-child,article h6+section>ul:first-child,article h6+section>blockquote:first-child,article h1+h5,article h1+section>h5:first-child,article h2+h5,article h2+section>h5:first-child,article h3+h5,article h3+section>h5:first-child,article h4+h5,article h4+section>h5:first-child,article h5+h5,article h5+section>h5:first-child,article h1+h4,article h1+section>h4:first-child,article h2+h4,article h2+section>h4:first-child,article h3+h4,article h3+section>h4:first-child,article h4+h4,article h4+section>h4:first-child,article h1+h3,article h1+section>h3:first-child,article h2+h3,article h2+section>h3:first-child,article h3+h3,article h3+section>h3:first-child,article h1+h2,article h1+section>h2:first-child,article h2+h2,article h2+section>h2:first-child{margin-top:-1em}p.poem-like,.poem-like p{margin-left:2em}@media only screen and (max-width: 480px){p.poem-like,.poem-like p{margin-left:1em}}article blockquote{margin-right:0}@media only screen and (max-width: 480px){article blockquote{margin-left:1em}}figure blockquote{margin:0}blockquote blockquote{margin-left:1em;margin-right:1em}article blockquote blockquote{margin-right:0}@media only screen and (max-width: 480px){blockquote,figure{margin-left:1em;margin-right:1em}}article{counter-reset:han-article-h2 han-article-h3 han-article-h4}article h2:not(.toc){counter-reset:han-article-h3 han-article-h4}article h2:not(.toc):before{content:counter(han-article-h2) " ";content:counter(han-article-h2,cjk-ideographic) "、";counter-increment:han-article-h2}article h3:not(.toc){counter-reset:han-article-h4}article h3:not(.toc):before{content:counter(han-article-h2) "." counter(han-article-h3) " ";counter-increment:han-article-h3}article h4:not(.toc):before{content:counter(han-article-h2) "." counter(han-article-h3) "." counter(han-article-h4) " ";counter-increment:han-article-h4}article ol.toc{counter-reset:han-toc-h2 han-toc-h3 han-toc-h4}article ol.toc li{list-style:none}article ol.toc>li{counter-reset:han-toc-h3 han-toc-h4}article ol.toc>li:before{margin-right:-0.25em;content:counter(han-toc-h2) " ";content:counter(han-toc-h2,cjk-ideographic) "、";counter-increment:han-toc-h2}article ol.toc>li>ol>li{counter-reset:han-toc-h4}article ol.toc>li>ol>li:before{margin-right:0.5em;content:counter(han-toc-h2) "." counter(han-toc-h3);counter-increment:han-toc-h3}article ol.toc ol ol>li:before{margin-right:0.5em;content:counter(han-toc-h2) "." counter(han-toc-h3) "." counter(han-toc-h4);counter-increment:han-toc-h4}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode='b7']{font-family:"Biaodian Basic","Han Heiti"}hws{display:inline;visibility:hidden;font-family:Arial,sans-serif !important;font-size:0.89em}code hws,kbd hws,samp hws,pre hws,ol>hws,ul>hws{display:none}char_group .open:not(:last-child),char_group .close:not(:last-child),char_group [unicode='3001']:not(:last-child),char_group [unicode='3002']:not(:last-child),char_group [unicode='ff0c']:not(:last-child),char_group [unicode='ff08']:not(:last-child){letter-spacing:-0.5em}char_group [unicode='b7']+[unicode='300c'],char_group [unicode='b7']+[unicode='300e'],char_group [unicode='30fb']+[unicode='300c'],char_group [unicode='30fb']+[unicode='300e']{margin-left:-0.5em}char_group .liga+[unicode='300c'],char_group .liga+[unicode='300e']{margin-left:-0.25em}char[display-as]{position:relative;display:inline-block}char[display-as] inner{color:transparent}char[display-as]:after{position:absolute;left:0;display:inline-block;content:attr(display-as)}char[display-as].comb-liga:after{font-family:"Romanization Sans","Zhuyin Kaiti"} +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{line-height:1.3;-webkit-font-smoothing:subpixel-antialiased}ol,ul{padding-left:2em}blockquote,figure{margin-left:2em;margin-right:2em}address{font-style:inherit}pre{white-space:pre;word-wrap:normal}a{text-decoration:inherit}em:lang(ja),em:lang(zh){-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;font-style:inherit;border-bottom:2px dotted;padding-bottom:.05em;border-bottom-width:-webkit-calc(0px);padding-bottom:-webkit-calc(0px)}em:lang(ja){-moz-text-emphasis:filled sesame;-webkit-text-emphasis:filled sesame;text-emphasis:filled sesame;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}b,dfn:lang(ja),dfn:lang(zh),strong{font-weight:bolder}cite:lang(ja),cite:lang(zh),dfn:lang(ja),dfn:lang(zh){font-style:inherit}q{quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(zh){quotes:'\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f'}q:lang(en),q:lang(zh-CN){quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(en-GB){quotes:'\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d'}q:before{content:open-quote}q:after{content:close-quote}q:lang(ja):after,q:lang(ja):before{content:none}code,kbd,pre,samp{font-family:monospace,monospace,sans-serif}i:lang(ja),i:lang(zh),var:lang(ja),var:lang(zh){font-style:inherit}.han-js-rendered del+del.adjacent,.han-js-rendered del+s.adjacent,.han-js-rendered ins.adjacent,.han-js-rendered s+del.adjacent,.han-js-rendered s+s.adjacent,.han-js-rendered u.adjacent,del+del,del+s,ins+ins,ins+u,s+del,s+s,u+ins,u+u{margin-left:.125em}ins,u{padding-bottom:.05em;border-bottom:1px solid;text-decoration:none}ruby :after,ruby :before{line-height:normal}ruby>rt:not(:empty):before{content:'\ff08'}ruby>rt:not(:empty):after{content:'\ff09'}ruby>rb+rtc:before{content:'\ff08'}ruby>rtc:after{content:'\ff0c'}ruby>rtc:last-of-type:after{content:'\ff09'}ruby>rt:after,ruby>rt:before{display:inline-block;overflow:hidden;vertical-align:middle;height:0;width:0}ruby>rt:not(:empty):after,ruby>rt:not(:empty):before{height:-moz-calc(1.3em);width:-moz-calc(1em)}.han-js-rendered del+del,.han-js-rendered del+s,.han-js-rendered ins+ins,.han-js-rendered ins+u,.han-js-rendered s+del,.han-js-rendered s+s,.han-js-rendered u+ins,.han-js-rendered u+u{margin-left:auto}.han-js-rendered em:lang(ja),.han-js-rendered em:lang(zh){padding-bottom:auto;border-bottom-width:0}.no-textemphasis em:lang(ja),.no-textemphasis em:lang(zh){line-height:2}.no-textemphasis em:lang(ja) char,.no-textemphasis em:lang(zh) char{position:relative;font-style:inherit}.no-textemphasis em:lang(ja) char:after,.no-textemphasis em:lang(zh) char:after{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;text-decoration:none;-moz-transform:scale(0.5);-ms-transform:scale(0.5);-webkit-transform:scale(0.5);transform:scale(0.5);position:absolute;left:50%;top:0;margin-left:-250%;overflow:hidden;display:inline-block;height:1em;width:500%;line-height:1;text-align:center;text-indent:0;font-family:Georgia,'Times New Roman',Arial,!important}em:lang(ja) char.biaodian,em:lang(ja) char.punct,em:lang(zh) char.biaodian,em:lang(zh) char.punct{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none}.no-textemphasis em:lang(ja) char.biaodian:after,.no-textemphasis em:lang(ja) char.punct:after,.no-textemphasis em:lang(zh) char.biaodian:after,.no-textemphasis em:lang(zh) char.punct:after{content:none!important}.no-textemphasis em:lang(zh) char:after{margin-top:1em;content:'\25cf'}.no-textemphasis em:lang(ja) char:after{margin-top:-.7em;content:'\fe45'}hruby{display:inline;line-height:2}hruby rp{display:none}hruby ru[annotation]>rt{display:inline-block;height:0;width:0;font:0/0 hidden-text}hruby ru{position:relative;display:inline-block;text-indent:0}hruby ru:before,hruby zhuyin{-moz-transform:scale(0.55);-ms-transform:scale(0.55);-webkit-transform:scale(0.55);transform:scale(0.55);-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;line-height:normal;text-decoration:none;text-indent:0;position:absolute;display:inline-block}hruby ru[annotation]{text-align:center}hruby ru[annotation]:before{left:-265%;vertical-align:top;height:1em;width:600%;content:attr(annotation);line-height:1;text-align:center;text-indent:0}hruby[rightangle] ru[annotation]:before{left:-250%}hruby ru[zhuyin]{display:inline-block;position:relative;width:1.8em;text-align:left}hruby ru[zhuyin] zhuyin{right:.2em;top:0;height:2.7em;width:.8em;line-height:.9;white-space:pre-wrap;word-break:break-all}hruby ru[zhuyin] diao{position:absolute;right:-.9em;top:0;display:inline-block;width:1em}hruby ru[zhuyin]:empty,hruby ru[zhuyin][length='0']{width:auto}hruby ru[zhuyin]:empty zhuyin,hruby ru[zhuyin][length='0'] zhuyin{display:none}hruby ru[zhuyin][length='1'] zhuyin{margin-top:.125em}hruby ru[zhuyin][length='1'] diao{margin-top:-.35em}hruby ru[zhuyin][length='2'] zhuyin{margin-top:-.175em}hruby ru[zhuyin][length='2'] diao{margin-top:.5em}hruby ru[zhuyin][length='3'] zhuyin{margin-top:-.45em}hruby ru[zhuyin][length='3'] diao{margin-top:1.3em}hruby ru[zhuyin][diao='˙'] diao{right:-.35em}hruby ru[zhuyin][diao='˙'][length='1'] diao{margin-top:-.5em}hruby ru[zhuyin][diao='˙'][length='2'] diao{margin-top:-.3em}hruby ru[zhuyin][diao='˙'][length='3'] diao{margin-top:-.25em}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1.2);-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2);margin-right:-.25em}hruby ru[zhuyin][diao='󳆴'] diao,hruby ru[zhuyin][diao='󳆵'] diao,hruby ru[zhuyin][diao='󳆶'] diao,hruby ru[zhuyin][diao='󳆷'] diao,hruby ru[zhuyin][diao^='ㆴ'] diao,hruby ru[zhuyin][diao^='ㆵ'] diao,hruby ru[zhuyin][diao^='ㆶ'] diao,hruby ru[zhuyin][diao^='ㆷ'] diao{top:20%;margin-right:-.3em}hruby ru[annotation]:before,hruby[rightangle] ru[annotation][order='1']:before{top:-.5em}hruby ru[order='1']:before,hruby[rightangle] ru[annotation][order='0']:before{bottom:-.4em;top:auto}hruby[rightangle] ru[annotation]:before{margin-left:-.4em}@media screen and (-webkit-min-device-pixel-ratio:1.5),(min-resolution:192dpi){hruby yin{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);display:inline-block}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}hruby ru[zhuyin][diao='˙'] diao{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);top:.125em}}jinze{display:inline-block;text-indent:0}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';font-weight:600;src:local('YuGothic Bold'),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';font-weight:600;src:local('YuGothic Bold'),local(YuGo-Bold),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti GB';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold);unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Heiti SC Medium'),local('Microsoft YaHei Bold'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold);unicode-range:U+270C}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSong),local('Lisong Pro'),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho')}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local(PMingLiU),local(SimSun)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro')}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti SC Bold'),local('STSongti TC Bold'),local(STSongti-SC-Bold),local(STSongti-TC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti GB';font-weight:600;src:local('STSongti SC Bold'),local(STSongti-SC-Bold)}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSongti),local('Lisong Pro'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+270C}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local('MS Mincho'),local(PMingLiU),local(SimSun);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+270C}@font-face{font-family:cursive;src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti';src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti CNS';src:local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti GB';src:local('Kaiti SC'),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti GB';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong CNS';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong GB';src:local(STFangsong),local(FangSong)}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Arial Unicode MS'),local('MS Gothic');unicode-range:U+2014}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho'),local('Microsoft Yahei');unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic');unicode-range:U+2026}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Lisong Pro'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU),local('MS Gothic');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(STSongti-TC-Regular),local('Lisong Pro'),local('Heiti TC'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSongti),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Basic';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:'Biaodian Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Latin Italic Serif';src:local('Georgia Italic'),local('Times New Roman Italic'),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Serif';font-weight:700;src:local('Georgia Bold Italic'),local('Times New Roman Bold Italic'),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:'Latin Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Sans';src:local(Skia),local('Neutraface 2 Text'),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Serif';src:local(Georgia),local('Hoefler Text'),local('Big Caslon')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Italic Serif';src:local('Georgia Italic'),local('Hoefler Text Italic'),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Sans';src:local('Helvetica Neue'),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Serif';src:local(Palatino),local('Palatino Linotype'),local('Times New Roman')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';src:local('Palatino Italic'),local('Palatino Italic Linotype'),local('Times New Roman Italic'),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';font-weight:700;src:local('Palatino Bold Italic'),local('Palatino Bold Italic Linotype'),local('Times New Roman Bold Italic'),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{font-family:'Numeral TF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Kaiti'}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Heiti';src:local('Hiragino Sans GB'),local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype')}@font-face{font-family:'Zhuyin Heiti';src:local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3127}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Zhuyin Heiti';unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Romanization Sans';unicode-range:U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}article strong :lang(ja-Latn),article strong :lang(zh-Latn),article strong :not(:lang(zh)):not(:lang(ja)),article strong:lang(ja-Latn),article strong:lang(zh-Latn),article strong:not(:lang(zh)):not(:lang(ja)),html :lang(ja-Latn),html :lang(zh-Latn),html :not(:lang(zh)):not(:lang(ja)),html:lang(ja-Latn),html:lang(zh-Latn),html:not(:lang(zh)):not(:lang(ja)){font-family:'Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}[lang*=Hant],[lang=zh-HK],[lang=zh-TW],[lang^=zh],article strong:lang(zh),article strong:lang(zh-Hant),html:lang(zh),html:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}[lang*=Hans],[lang=zh-CN],article strong:lang(zh-CN),article strong:lang(zh-Hans),html:lang(zh-CN),html:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}[lang^=ja],article strong:lang(ja),html:lang(ja){font-family:'Yakumono Sans','Helvetica Neue',Helvetica,Arial,sans-serif}article blockquote i :lang(ja-Latn),article blockquote i :lang(zh-Latn),article blockquote i :not(:lang(zh)):not(:lang(ja)),article blockquote i:lang(ja-Latn),article blockquote i:lang(zh-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote var :lang(ja-Latn),article blockquote var :lang(zh-Latn),article blockquote var :not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(ja-Latn),article blockquote var:lang(zh-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}article blockquote i:lang(zh-CN),article blockquote i:lang(zh-Hans),article blockquote var:lang(zh-CN),article blockquote var:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}article blockquote i:lang(ja),article blockquote var:lang(ja){font-family:'Yakumono Sans','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,sans-serif}article figure blockquote :lang(ja-Latn),article figure blockquote :lang(zh-Latn),article figure blockquote :not(:lang(zh)):not(:lang(ja)),article figure blockquote:lang(ja-Latn),article figure blockquote:lang(zh-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)),figure blockquote :lang(ja-Latn),figure blockquote :lang(zh-Latn),figure blockquote :not(:lang(zh)):not(:lang(ja)),figure blockquote:lang(ja-Latn),figure blockquote:lang(zh-Latn),figure blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Songti',cursive,serif}article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant),figure blockquote:lang(zh),figure blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Songti',serif}article figure blockquote:lang(zh-CN),article figure blockquote:lang(zh-Hans),figure blockquote:lang(zh-CN),figure blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Songti GB',serif}article figure blockquote:lang(ja),figure blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',serif}article blockquote :lang(ja-Latn),article blockquote :lang(zh-Latn),article blockquote :not(:lang(zh)):not(:lang(ja)),article blockquote:lang(ja-Latn),article blockquote:lang(zh-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Kaiti',cursive,serif}article blockquote:lang(zh),article blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}article blockquote:lang(zh-CN),article blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}article blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',cursive,serif}i :lang(ja-Latn),i :lang(zh-Latn),i :not(:lang(zh)):not(:lang(ja)),i:lang(ja-Latn),i:lang(zh-Latn),i:not(:lang(zh)):not(:lang(ja)),var :lang(ja-Latn),var :lang(zh-Latn),var :not(:lang(zh)):not(:lang(ja)),var:lang(ja-Latn),var:lang(zh-Latn),var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti',cursive,serif}i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}i:lang(zh-CN),i:lang(zh-Hans),var:lang(zh-CN),var:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}i:lang(ja),var:lang(ja){font-family:'Yakumono Serif','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman',cursive,serif}code :lang(ja-Latn),code :lang(zh-Latn),code :not(:lang(zh)):not(:lang(ja)),code:lang(ja-Latn),code:lang(zh-Latn),code:not(:lang(zh)):not(:lang(ja)),kbd :lang(ja-Latn),kbd :lang(zh-Latn),kbd :not(:lang(zh)):not(:lang(ja)),kbd:lang(ja-Latn),kbd:lang(zh-Latn),kbd:not(:lang(zh)):not(:lang(ja)),pre :lang(ja-Latn),pre :lang(zh-Latn),pre :not(:lang(zh)):not(:lang(ja)),pre:lang(ja-Latn),pre:lang(zh-Latn),pre:not(:lang(zh)):not(:lang(ja)),samp :lang(ja-Latn),samp :lang(zh-Latn),samp :not(:lang(zh)):not(:lang(ja)),samp:lang(ja-Latn),samp:lang(zh-Latn),samp:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,'Han Heiti',monospace,monospace,sans-serif}code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS',Menlo,Consolas,Courier,'Zhuyin Heiti','Han Heiti',monospace,monospace,sans-serif}code:lang(zh-CN),code:lang(zh-Hans),kbd:lang(zh-CN),kbd:lang(zh-Hans),pre:lang(zh-CN),pre:lang(zh-Hans),samp:lang(zh-CN),samp:lang(zh-Hans){font-family:'Biaodian Pro Sans GB',Menlo,Consolas,Courier,'Han Heiti GB',monospace,monospace,sans-serif}code:lang(ja),kbd:lang(ja),pre:lang(ja),samp:lang(ja){font-family:'Yakumono Sans',Menlo,Consolas,Courier,monospace,monospace,sans-serif}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7],hruby ru[annotation]:before,hruby ru[zhuyin] zhuyin,hruby ru[zhuyin] zhuyin diao,hruby.romanization rt,html,ruby ru[annotation]:before,ruby ru[zhuyin] zhuyin,ruby ru[zhuyin] zhuyin diao,ruby.romanization rt{-moz-font-feature-settings:'liga';-ms-font-feature-settings:'liga';-webkit-font-feature-settings:'liga';font-feature-settings:'liga'}i,var{font-style:inherit}hruby ru[zhuyin] zhuyin diao,ruby ru[zhuyin] zhuyin diao{font-family:'Zhuyin Kaiti',cursive,serif}hruby ru[annotation]:before,hruby.romanization rt,ruby ru[annotation]:before,ruby.romanization rt{font-family:'Romanization Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}.no-kaiti i,.no-kaiti var{padding-bottom:.05em;border-bottom:3px double lightgrey}article{line-height:1.7}article li,article p{text-align:justify;text-justify:inter-ideograph}article h1+blockquote,article h1+h2,article h1+h3,article h1+h4,article h1+h5,article h1+h6,article h1+ol,article h1+p,article h1+section>blockquote:first-child,article h1+section>h2:first-child,article h1+section>h3:first-child,article h1+section>h4:first-child,article h1+section>h5:first-child,article h1+section>h6:first-child,article h1+section>ol:first-child,article h1+section>p:first-child,article h1+section>ul:first-child,article h1+ul,article h2+blockquote,article h2+h2,article h2+h3,article h2+h4,article h2+h5,article h2+h6,article h2+ol,article h2+p,article h2+section>blockquote:first-child,article h2+section>h2:first-child,article h2+section>h3:first-child,article h2+section>h4:first-child,article h2+section>h5:first-child,article h2+section>h6:first-child,article h2+section>ol:first-child,article h2+section>p:first-child,article h2+section>ul:first-child,article h2+ul,article h3+blockquote,article h3+h3,article h3+h4,article h3+h5,article h3+h6,article h3+ol,article h3+p,article h3+section>blockquote:first-child,article h3+section>h3:first-child,article h3+section>h4:first-child,article h3+section>h5:first-child,article h3+section>h6:first-child,article h3+section>ol:first-child,article h3+section>p:first-child,article h3+section>ul:first-child,article h3+ul,article h4+blockquote,article h4+h4,article h4+h5,article h4+h6,article h4+ol,article h4+p,article h4+section>blockquote:first-child,article h4+section>h4:first-child,article h4+section>h5:first-child,article h4+section>h6:first-child,article h4+section>ol:first-child,article h4+section>p:first-child,article h4+section>ul:first-child,article h4+ul,article h5+blockquote,article h5+h5,article h5+h6,article h5+ol,article h5+p,article h5+section>blockquote:first-child,article h5+section>h5:first-child,article h5+section>h6:first-child,article h5+section>ol:first-child,article h5+section>p:first-child,article h5+section>ul:first-child,article h5+ul,article h6+blockquote,article h6+h6,article h6+ol,article h6+p,article h6+section>blockquote:first-child,article h6+section>h6:first-child,article h6+section>ol:first-child,article h6+section>p:first-child,article h6+section>ul:first-child,article h6+ul{margin-top:-1em}.poem-like p,p.poem-like{margin-left:2em}@media only screen and (max-width:480px){.poem-like p,p.poem-like{margin-left:1em}}article blockquote{margin-right:0}@media only screen and (max-width:480px){article blockquote{margin-left:1em}}figure blockquote{margin:0}blockquote blockquote{margin-left:1em;margin-right:1em}article blockquote blockquote{margin-right:0}@media only screen and (max-width:480px){blockquote,figure{margin-left:1em;margin-right:1em}}article{counter-reset:han-article-h2 han-article-h3 han-article-h4}article h2:not(.toc){counter-reset:han-article-h3 han-article-h4}article h2:not(.toc):before{content:counter(han-article-h2) '\3000';content:counter(han-article-h2,cjk-ideographic) '\3001';counter-increment:han-article-h2}article h3:not(.toc){counter-reset:han-article-h4}article h3:not(.toc):before{content:counter(han-article-h2) '.' counter(han-article-h3) '\3000';counter-increment:han-article-h3}article h4:not(.toc):before{content:counter(han-article-h2) '.' counter(han-article-h3) '.' counter(han-article-h4) '\3000';counter-increment:han-article-h4}article ol.toc{counter-reset:han-toc-h2 han-toc-h3 han-toc-h4}article ol.toc li{list-style:none}article ol.toc>li{counter-reset:han-toc-h3 han-toc-h4}article ol.toc>li:before{content:counter(han-toc-h2) '\3000';content:counter(han-toc-h2,cjk-ideographic) '\3001';counter-increment:han-toc-h2}article ol.toc>li>ol>li{counter-reset:han-toc-h4}article ol.toc>li>ol>li:before{margin-right:.5em;content:counter(han-toc-h2) '.' counter(han-toc-h3);counter-increment:han-toc-h3}article ol.toc ol ol>li:before{margin-right:.5em;content:counter(han-toc-h2) '.' counter(han-toc-h3) '.' counter(han-toc-h4);counter-increment:han-toc-h4}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7]{font-family:'Biaodian Basic','Han Heiti'}hws{display:inline;visibility:hidden;font-family:Arial,sans-serif!important;font-size:.89em}code hws,kbd hws,ol>hws,pre hws,samp hws,table>hws,tbody>hws,tfoot>hws,thead>hws,tr>hws,ul>hws{display:none}char_group .close:not(:last-child),char_group .open:not(:last-child),char_group [unicode='3001']:not(:last-child),char_group [unicode='3002']:not(:last-child),char_group [unicode=ff08]:not(:last-child),char_group [unicode=ff0c]:not(:last-child){letter-spacing:-.5em}char_group [unicode='3001']:lang(zh-Hant):not(:last-child),char_group [unicode='3002']:lang(zh-Hant):not(:last-child),char_group [unicode=ff08]:lang(zh-Hant):not(:last-child),char_group [unicode=ff0c]:lang(zh-Hant):not(:last-child){letter-spacing:inherit}char_group [unicode='3001']:lang(zh-Hant)+.open,char_group [unicode='3002']:lang(zh-Hant)+.open,char_group [unicode='30fb']+[unicode='300c'],char_group [unicode='30fb']+[unicode='300e'],char_group [unicode=b7]+[unicode='300c'],char_group [unicode=b7]+[unicode='300e'],char_group [unicode=ff08]:lang(zh-Hant)+.open,char_group [unicode=ff0c]:lang(zh-Hant)+.open{margin-left:-.5em}char_group .liga+[unicode='300c'],char_group .liga+[unicode='300e']{margin-left:-.25em}char[display-as]{position:relative;display:inline-block}char[display-as] inner{color:transparent}char[display-as]:after{position:absolute;left:0;display:inline-block;content:attr(display-as)}char[display-as].comb-liga:after{font-family:'Romanization Sans','Zhuyin Kaiti'} \ No newline at end of file diff --git a/latest/counter-han.sass b/latest/counter-han.sass index 2aa372e9..e866793a 100644 --- a/latest/counter-han.sass +++ b/latest/counter-han.sass @@ -3,10 +3,10 @@ // * Sectional counter in articles // * `true` || `false` // * -$han-section-counter: true -$han-section-counter-toc: true +$han-section-counter: true; +$han-section-counter-toc: true; // ** // * Import Han module // * -@import ../sass/han +@import ../sass/han; diff --git a/latest/counter-han.scss b/latest/counter-han.scss new file mode 100644 index 00000000..ce414f33 --- /dev/null +++ b/latest/counter-han.scss @@ -0,0 +1,12 @@ + +// ** +// * Sectional counter in articles +// * `true` || `false` +// * +$han-section-counter: true; +$han-section-counter-toc: true; + +// ** +// * Import Han module +// * +@import "../src/sass/han"; diff --git a/latest/counter.html b/latest/counter.html index 081c35cc..455b9018 100644 --- a/latest/counter.html +++ b/latest/counter.html @@ -1,200 +1,17 @@ - - - - - 測試・章節與目錄的計數 — 漢字標準格式 - - - - - - - -
-

測試·章節與目錄的計數

-

提示:「章節計數」是「漢字標準格式」的高級排版功能,預設關閉。需要自行編譯han.sass模組或混用han-section-counter(@mixin)方可使用,閱讀使用手冊以瞭解詳情。CDN文件支援此功能。 -

-

提示二:此測試頁使用了《日文排版規範》(Requirements for Japanese Text Layout)中,1至3.3節的「中譯標題」作為示例。 -

-

日文排版規範

-

目錄

-

注意:類別為.toctable of contents,目錄)的「二至四級標題」不會併入章節計數中。

-
    -
  1. 序論 -
      -
    1. 此文件的目的
    2. -
    3. 此文件的產生方式
    4. -
    5. 此文件的基本方針
    6. -
    7. 此文件的構成
    8. -
    9. 術語的參照與其他
    10. -
  2. -
  3. 日文排版的基本組成 -
      -
    1. 日文排版對文字與其設置原則 -
        -
      1. 日文排版所用的文字
      2. -
      3. 漢字、平假名與片假名
      4. -
      5. 漢字、假名字元的編排原則
      6. -
    2. -
    3. 日文文檔的頁面格式 -
        -
      1. 頁面格式規範
      2. -
      3. 頁面格式基本樣版
      4. -
      5. 頁面格式元素
      6. -
      7. 基本版面元素
      8. -
      9. 基本版面與頁面格式實例
      10. -
    4. -
    5. 直書與橫書 -
        -
      1. 日文排版的方向因素
      2. -
      3. 直書與橫書的主要差異
      4. -
    6. -
    7. 基本版面的設置 -
        -
      1. 基本版面的設置步驟
      2. -
      3. 基本版面設計的着重要點
      4. -
    8. -
    9. 基本版面元素的頁面安排 -
        -
      1. 可突出基本版面的項目範例
      2. -
      3. 基本版面設計對行的位置的處理
      4. -
      5. 基本版面設計對字元的位置的處理
      6. -
    10. -
    11. 眉批與頁數 -
        -
      1. 眉批與頁數的位置
      2. -
      3. 眉批與頁數的排版原則
      4. -
      5. 眉批與頁數的排版方式
      6. -
    12. -
  4. -
  5. 行的組成 -
      -
    1. 標點符號與禁則 -
        -
      1. 直書與橫書的標點符號排版差異
      2. -
      3. 標點符號的排版(句讀與括號)
      4. -
      5. 讀號、片假名中點排版的例外情況
      6. -
      7. 連續開閉括號、讀號、句號與片假名中點的排版
      8. -
      9. 開括號位行首時的排版
      10. -
      11. 分離標點(問號與嘆號)和連字符的排版
      12. -
      13. 不得位於行首的標點
      14. -
      15. 不得位於行尾的標點
      16. -
      17. 閉括號、句號、讀號與片假名中點位行尾時的排版
      18. -
      19. 不得分行的字元組合
      20. -
      21. 不得加入空白來調整行間對齊的字元組合
      22. -
      23. 行間對齊的範例
      24. -
    2. -
    3. 日文與西文混排(包含縱中橫排版) -
        -
      1. 日文與西文混排的組成
      2. -
      3. 橫書的文字混排
      4. -
      5. 直書的文字混排
      6. -
      7. 全形拉丁字母與歐式數字的設置方式
      8. -
      9. 縱中橫的處理設置
      10. -
      11. 日文與非等寬西文字體文字的處理方式
      12. -
    4. -
    5. 行間注與着重號 -
        -
      1. 行間注的使用
      2. -
      3. 基文的選用
      4. -
      5. 行間注的文字大小
      6. -
      7. 注文側的選用
      8. -
      9. 單字基文的排版
      10. -
      11. 組合基文的排版
      12. -
      13. 詞基文的排版
      14. -
      15. 注文長度大於基文的調整方式
      16. -
      17. 着重號的排版
      18. -
    6. -
  6. -
-
-

序論

-

此文件的目的

-
五級標題
-

一、五、六級標題不計數。

-
五級標題
-
六級標題
-

此文件的產生方式

-

此文件的基本方針

-

此文件的構成

-

術語的參照與其他

-

日文排版的基本組成

-

日文排版對文字與其設置原則

-

日文排版所用的文字

-

漢字、平假名與片假名

-

漢字、假名字元的編排原則

-

日文文檔的頁面格式

-

頁面格式規範

-

頁面格式基本樣版

-

頁面格式元素

-

基本版面元素

-

基本版面與頁面格式實例

-

直書與橫書

-

日文排版的方向因素

-

直書與橫書的主要差異

-

基本版面的設置

-

基本版面的設置步驟

-

基本版面設計的着重要點

-

基本版面元素的頁面安排

-

可突出基本版面的項目範例

-

基本版面設計對行的位置的處理

-

基本版面設計對字元的位置的處理

-

眉批與頁數

-

眉批與頁數的位置

-

眉批與頁數的排版原則

-

眉批與頁數的排版方式

-

行的組成

-

標點符號與禁則

-

直書與橫書的標點符號排版差異

-

標點符號的排版(句讀與括號)

-

讀號、片假名中點排版的例外情況

-

連續開閉括號、讀號、句號與片假名中點的排版

-

開括號位行首時的排版

-

分離標點(問號與嘆號)和連字符的排版

-

不得位於行首的標點

-

不得位於行尾的標點

-

閉括號、句號、讀號與片假名中點位行尾時的排版

-

不得分行的字元組合

-

不得加入空白來調整行間對齊的字元組合

-

行間對齊的範例

-

日文與西文混排(包含縱中橫排版)

-

日文與西文混排的組成

-

橫書的文字混排

-

直書的文字混排

-

全形拉丁字母與歐式數字的設置方式

-

縱中橫的處理設置

-

日文與非等寬西文字體文字的處理方式

-

行間注與着重號

-

行間注的使用

-

基文的選用

-

行間注的文字大小

-

注文側的選用

-

單字基文的排版

-

組合基文的排版

-

詞基文的排版

-

注文長度大於基文的調整方式

-

着重號的排版

-
-
- - - - \ No newline at end of file +測試・章節與目錄的計數 — 漢字標準格式

測試·章節與目錄的計數

提示:「章節計數」是「漢字標準格式」的高級排版功能,預設關閉。需要自行編譯han.sass模組或混用han-section-counter(@mixin)方可使用,閱讀使用手冊以瞭解詳情。CDN文件支援此功能。

提示二:此測試頁使用了《日文排版規範》(Requirements for Japanese Text Layout)中,1至3.3節的「中譯標題」作為示例。

日文排版規範

目錄

注意:類別為.toctable of contents,目錄)的「二至四級標題」不會併入章節計數中。

  1. 序論
    1. 此文件的目的
    2. 此文件的產生方式
    3. 此文件的基本方針
    4. 此文件的構成
    5. 術語的參照與其他
  2. 日文排版的基本組成
    1. 日文排版對文字與其設置原則
      1. 日文排版所用的文字
      2. 漢字、平假名與片假名
      3. 漢字、假名字元的編排原則
    2. 日文文檔的頁面格式
      1. 頁面格式規範
      2. 頁面格式基本樣版
      3. 頁面格式元素
      4. 基本版面元素
      5. 基本版面與頁面格式實例
    3. 直書與橫書
      1. 日文排版的方向因素
      2. 直書與橫書的主要差異
    4. 基本版面的設置
      1. 基本版面的設置步驟
      2. 基本版面設計的着重要點
    5. 基本版面元素的頁面安排
      1. 可突出基本版面的項目範例
      2. 基本版面設計對行的位置的處理
      3. 基本版面設計對字元的位置的處理
    6. 眉批與頁數
      1. 眉批與頁數的位置
      2. 眉批與頁數的排版原則
      3. 眉批與頁數的排版方式
  3. 行的組成
    1. 標點符號與禁則
      1. 直書與橫書的標點符號排版差異
      2. 標點符號的排版(句讀與括號)
      3. 讀號、片假名中點排版的例外情況
      4. 連續開閉括號、讀號、句號與片假名中點的排版
      5. 開括號位行首時的排版
      6. 分離標點(問號與嘆號)和連字符的排版
      7. 不得位於行首的標點
      8. 不得位於行尾的標點
      9. 閉括號、句號、讀號與片假名中點位行尾時的排版
      10. 不得分行的字元組合
      11. 不得加入空白來調整行間對齊的字元組合
      12. 行間對齊的範例
    2. 日文與西文混排(包含縱中橫排版)
      1. 日文與西文混排的組成
      2. 橫書的文字混排
      3. 直書的文字混排
      4. 全形拉丁字母與歐式數字的設置方式
      5. 縱中橫的處理設置
      6. 日文與非等寬西文字體文字的處理方式
    3. 行間注與着重號
      1. 行間注的使用
      2. 基文的選用
      3. 行間注的文字大小
      4. 注文側的選用
      5. 單字基文的排版
      6. 組合基文的排版
      7. 詞基文的排版
      8. 注文長度大於基文的調整方式
      9. 着重號的排版

序論

此文件的目的

五級標題

一、五、六級標題不計數。

五級標題
六級標題

此文件的產生方式

此文件的基本方針

此文件的構成

術語的參照與其他

日文排版的基本組成

日文排版對文字與其設置原則

日文排版所用的文字

漢字、平假名與片假名

漢字、假名字元的編排原則

日文文檔的頁面格式

頁面格式規範

頁面格式基本樣版

頁面格式元素

基本版面元素

基本版面與頁面格式實例

直書與橫書

日文排版的方向因素

直書與橫書的主要差異

基本版面的設置

基本版面的設置步驟

基本版面設計的着重要點

基本版面元素的頁面安排

可突出基本版面的項目範例

基本版面設計對行的位置的處理

基本版面設計對字元的位置的處理

眉批與頁數

眉批與頁數的位置

眉批與頁數的排版原則

眉批與頁數的排版方式

行的組成

標點符號與禁則

直書與橫書的標點符號排版差異

標點符號的排版(句讀與括號)

讀號、片假名中點排版的例外情況

連續開閉括號、讀號、句號與片假名中點的排版

開括號位行首時的排版

分離標點(問號與嘆號)和連字符的排版

不得位於行首的標點

不得位於行尾的標點

閉括號、句號、讀號與片假名中點位行尾時的排版

不得分行的字元組合

不得加入空白來調整行間對齊的字元組合

行間對齊的範例

日文與西文混排(包含縱中橫排版)

日文與西文混排的組成

橫書的文字混排

直書的文字混排

全形拉丁字母與歐式數字的設置方式

縱中橫的處理設置

日文與非等寬西文字體文字的處理方式

行間注與着重號

行間注的使用

基文的選用

行間注的文字大小

注文側的選用

單字基文的排版

組合基文的排版

詞基文的排版

注文長度大於基文的調整方式

着重號的排版

\ No newline at end of file diff --git a/latest/deco-line.html b/latest/deco-line.html index 677e450f..576d8b12 100644 --- a/latest/deco-line.html +++ b/latest/deco-line.html @@ -1,76 +1,23 @@ - - - - - 測試・文字裝飾線元素 — 漢字標準格式 - - - - - - - -
-

測試·文字裝飾線元素

-
-

底線

-
-

註記元素u

-

- 詹姆斯·貝內特·麥克里美國肯塔基州的一名律師和政治家,曾是該州在聯邦國會兩院的代表並擔任第27和第37任州長。 -

-
-
-

增訂元素ins

-

那個男孩:「¡Te quiero!

-
-
-
-

刪除線

-
-

訛訊元素s

-

呼叫器(pager,又作B.B.Call)是當今世代最有效的交流、溝通設備之一。

-
-
-

刪訂元素del

-

- 歡迎——抄寫、列印或傳送這分文件到行動裝置以便査閱。 -

-
-
-
-

混用

-

- 註記元素甲增訂元素甲註記元素乙一般文字節點增訂元素乙註記元素丙增訂元素丙一般文字節點;訛訊元素甲刪訂元素甲訛訊元素乙一般文字節點刪訂元素乙訛訊元素乙刪訂元素丙。 -

-

註記元素丁訛訊元素丁增訂元素丁刪訂元素丁

-
-
- - - - \ No newline at end of file +測試・文字裝飾線元素 — 漢字標準格式

測試·文字裝飾線元素

底線

註記元素u

詹姆斯·貝內特·麥克里美國肯塔基州的一名律師和政治家,曾是該州在聯邦國會兩院的代表並擔任第27和第37任州長。

增訂元素ins

那個男孩:「¡Te quiero!

刪除線

訛訊元素s

呼叫器(pager,又作B.B.Call)是當今世代最有效的交流、溝通設備之一。

刪訂元素del

歡迎——抄寫、列印或傳送這分文件到行動裝置以便査閱。

混用

註記元素甲增訂元素甲註記元素乙一般文字節點增訂元素乙註記元素丙增訂元素丙一般文字節點;訛訊元素甲刪訂元素甲訛訊元素乙一般文字節點刪訂元素乙訛訊元素乙刪訂元素丙

註記元素丁訛訊元素丁增訂元素丁刪訂元素丁

\ No newline at end of file diff --git a/latest/em-han.css b/latest/em-han.css index 48791b0d..4ad5cef2 100644 --- a/latest/em-han.css +++ b/latest/em-han.css @@ -1 +1 @@ -/*! 漢字標準格式 v3.0.2 | MIT License | css.hanzi.co *//*! Han: CSS typography framework optimised for Hanzi *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{line-height:1.3;-webkit-font-smoothing:subpixel-antialiased}ol,ul{padding-left:2em}figure,blockquote{margin-left:2em;margin-right:2em}address{font-style:inherit}pre{white-space:pre;word-wrap:normal}a{text-decoration:inherit}em:lang(zh),em:lang(ja){-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;font-style:inherit;border-bottom:2px dotted;padding-bottom:0.05em;border-bottom-width:-webkit-calc( 0px );padding-bottom:-webkit-calc( 0px )}em:lang(ja){-moz-text-emphasis:filled sesame;-webkit-text-emphasis:filled sesame;text-emphasis:filled sesame;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}strong,dfn:lang(zh),dfn:lang(ja),b{font-weight:inherit}strong,dfn:lang(zh),dfn:lang(ja),b{font-weight:bolder}dfn:lang(zh),dfn:lang(ja){font-style:inherit}cite:lang(zh),cite:lang(ja){font-style:inherit}q{quotes:"“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’"}q:lang(zh){quotes:"「" "」" "『" "』" "「" "」" "『" "』" "「" "」" "『" "』"}q:lang(zh-CN),q:lang(en){quotes:"“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’"}q:lang(en-GB){quotes:"‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”"}q:before{content:open-quote}q:after{content:close-quote}q:lang(ja):before,q:lang(ja):after{content:none}code,kbd,samp,pre{font-family:monospace,monospace,sans-serif}i:lang(zh),i:lang(ja),var:lang(zh),var:lang(ja){font-family:cursive,serif;font-style:inherit}u+u,u+ins,ins+u,ins+ins,s+s,s+del,del+s,del+del,.hyu-js-rendered u.adjacent,.hyu-js-rendered ins.adjacent,.hyu-js-rendered s+s.adjacent,.hyu-js-rendered s+del.adjacent,.hyu-js-rendered del+s.adjacent,.hyu-js-rendered del+del.adjacent{margin-left:0.125em}u,ins{padding-bottom:0.05em;border-bottom:1px solid;text-decoration:none}ruby *:before,ruby *:after{line-height:normal}ruby>rt:not(:empty):before{content:"("}ruby>rt:not(:empty):after{content:")"}ruby>rb+rtc:before{content:"("}ruby>rtc:after{content:","}ruby>rtc:last-of-type:after{content:")"}ruby>rt:before,ruby>rt:after{display:inline-block;overflow:hidden;vertical-align:middle;height:0;width:0}ruby>rt:not(:empty):before,ruby>rt:not(:empty):after{height:-moz-calc( 1.3em );width:-moz-calc( 1em )}.hyu-js-rendered u+u,.hyu-js-rendered u+ins,.hyu-js-rendered ins+u,.hyu-js-rendered ins+ins,.hyu-js-rendered s+s,.hyu-js-rendered s+del,.hyu-js-rendered del+s,.hyu-js-rendered del+del{margin-left:auto}.hyu-js-rendered em:lang(zh),.hyu-js-rendered em:lang(ja),.hyu-js-rendered em.above{padding-bottom:auto;border-bottom-width:0}.no-textemphasis em:lang(zh),.no-textemphasis em:lang(ja),.no-textemphasis em.above{line-height:2}.no-textemphasis em:lang(zh) char,.no-textemphasis em:lang(ja) char,.no-textemphasis em.above char{position:relative;font-style:inherit}.no-textemphasis em:lang(zh) char:after,.no-textemphasis em:lang(ja) char:after,.no-textemphasis em.above char:after{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:normal;line-height:normal;text-decoration:none;text-indent:0;-moz-transform:scale(0.5);-ms-transform:scale(0.5);-webkit-transform:scale(0.5);transform:scale(0.5);position:absolute;left:50%;top:0;margin-left:-250%;overflow:hidden;display:inline-block;height:1em;width:500%;line-height:1;text-align:center;text-indent:0;font-family:Georgia,"Times New Roman",Arial,!important}em:lang(zh) char.punct,em:lang(ja) char.punct,em.above char.punct,em:lang(zh) char.biaodian,em:lang(ja) char.biaodian,em.above char.biaodian{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none}.no-textemphasis em:lang(zh) char.punct:after,.no-textemphasis em:lang(ja) char.punct:after,.no-textemphasis em.above char.punct:after,.no-textemphasis em:lang(zh) char.biaodian:after,.no-textemphasis em:lang(ja) char.biaodian:after,.no-textemphasis em.above char.biaodian:after{content:none !important}.no-textemphasis em:lang(zh) char:after{margin-top:1em;content:"●"}.no-textemphasis em:lang(ja) char:after{margin-top:-0.7em;content:"﹅"}hruby{display:inline;line-height:2}hruby rp{display:none}hruby ru[annotation]>rt{display:inline-block;height:0;width:0;font:0/0 hidden-text}hruby ru{position:relative;display:inline-block;text-indent:0}hruby ru:before,hruby zhuyin{-moz-transform:scale(0.55);-ms-transform:scale(0.55);-webkit-transform:scale(0.55);transform:scale(0.55);-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:normal;line-height:normal;text-decoration:none;text-indent:0;position:absolute;display:inline-block}hruby ru[annotation]{text-align:center}hruby ru[annotation]:before{left:-265%;top:-0.5em;vertical-align:top;height:1em;width:600%;content:attr(annotation);line-height:1;text-align:center;text-indent:0}hruby[rightangle] ru[annotation]:before{left:-250%}hruby ru[zhuyin]{display:inline-block;position:relative;width:1.8em;text-align:left}hruby ru[zhuyin] zhuyin{right:0.2em;top:0;height:2.7em;width:0.8em;line-height:0.9;white-space:pre-wrap;word-break:break-all}hruby ru[zhuyin] diao{position:absolute;right:-0.9em;top:0;display:inline-block;width:1em}hruby ru[zhuyin][length='0'],hruby ru[zhuyin]:empty{width:auto}hruby ru[zhuyin][length='0'] zhuyin,hruby ru[zhuyin]:empty zhuyin{display:none}hruby ru[zhuyin][length='1'] zhuyin{margin-top:0.125em}hruby ru[zhuyin][length='1'] diao{margin-top:-0.35em}hruby ru[zhuyin][length='2'] zhuyin{margin-top:-0.175em}hruby ru[zhuyin][length='2'] diao{margin-top:0.5em}hruby ru[zhuyin][length='3'] zhuyin{margin-top:-0.45em}hruby ru[zhuyin][length='3'] diao{margin-top:1.3em}hruby ru[zhuyin][diao='˙'] diao{right:-0.35em}hruby ru[zhuyin][diao='˙'][length='1'] diao{margin-top:-0.5em}hruby ru[zhuyin][diao='˙'][length='2'] diao{margin-top:-0.3em}hruby ru[zhuyin][diao='˙'][length='3'] diao{margin-top:-0.25em}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1.2);-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2);margin-right:-0.25em}hruby ru[zhuyin][diao^='ㆴ'] diao,hruby ru[zhuyin][diao^='ㆵ'] diao,hruby ru[zhuyin][diao^='ㆶ'] diao,hruby ru[zhuyin][diao^='ㆷ'] diao,hruby ru[zhuyin][diao='󳆴'] diao,hruby ru[zhuyin][diao='󳆵'] diao,hruby ru[zhuyin][diao='󳆶'] diao,hruby ru[zhuyin][diao='󳆷'] diao{top:20%;margin-right:-0.3em}hruby ru[annotation]:before,hruby[rightangle] ru[annotation][order='1']:before{top:-0.5em}hruby ru[order='1']:before,hruby[rightangle] ru[annotation][order='0']:before{bottom:-0.4em;top:auto}hruby[rightangle] ru[annotation]:before{margin-left:-0.4em}@media screen and (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 192dpi){hruby yin{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);display:inline-block}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}hruby ru[zhuyin][diao='˙'] diao{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);top:0.125em}}jinze{display:inline-block;text-indent:0}@font-face{font-family:'Han Heiti';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Lantinghei SC"),local("Heiti SC"),local("Heiti TC"),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Droid Sans Fallback")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';src:local(YuGothic),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro")}@font-face{font-family:'Han Heiti CNS';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Heiti TC"),local("Microsoft Jhenghei"),local("Heiti SC"),local("Lantinghei SC"),local("Microsoft Yahei"),local("Droid Sans Fallback")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';src:local(YuGothic),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro")}@font-face{font-family:'Han Heiti GB';src:local("Hiragino Sans GB"),local("Lantinghei SC"),local("Heiti SC"),local("Microsoft Yahei"),local("Droid Sans Fallback")}@font-face{font-family:'Han Heiti';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Lantinghei SC Demibold"),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local("Heiti SC Medium"),local("Heiti TC Medium"),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local("Microsoft YaHei Bold"),local("Microsoft Jhenghei Bold"),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';font-weight:600;src:local("YuGothic Bold"),local("Hiragino Kaku Gothic ProN W6"),local("Hiragino Kaku Gothic Pro W6"),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local("Lantinghei SC Demibold"),local("Microsoft YaHei Bold"),local("Heiti SC Medium"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';font-weight:600;src:local("YuGothic Bold"),local(YuGo-Bold),local("Hiragino Kaku Gothic ProN W6"),local("Hiragino Kaku Gothic Pro W6"),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti GB';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei SC Demibold"),local("Microsoft YaHei Bold"),local("Heiti SC Medium"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{font-family:'Han Heiti';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Lantinghei SC"),local("Heiti SC"),local("Heiti TC"),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:'Han Heiti';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Lantinghei SC Demibold"),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local("Heiti SC Medium"),local("Heiti TC Medium"),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local("Microsoft YaHei Bold"),local("Microsoft Jhenghei Bold"),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold);unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Heiti TC"),local("Microsoft Jhenghei"),local("Heiti SC"),local("Lantinghei SC"),local("Microsoft Yahei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local("Lantinghei SC Demibold"),local("Heiti SC Medium"),local("Microsoft YaHei Bold"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold);unicode-range:U+270C}@font-face{font-family:'Han Heiti GB';src:local("Hiragino Sans GB"),local("Lantinghei SC"),local("Heiti SC"),local("Microsoft Yahei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:'Han Songti';src:local("Songti SC"),local("Songti TC"),local(STSong),local("Lisong Pro"),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';src:local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho")}@font-face{font-family:'Han Songti CNS';src:local("Songti TC"),local("Lisong Pro"),local("Songti SC"),local(STSong),local(PMingLiU),local(SimSun)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';src:local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro")}@font-face{font-family:'Han Songti GB';src:local("Songti SC"),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:'Han Songti';font-weight:600;src:local("STSongti SC Bold"),local("STSongti TC Bold"),local(STSongti-SC-Bold),local(STSongti-TC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';font-weight:600;src:local("YuMincho Demibold"),local("Hiragino Mincho ProN W6"),local("Hiragino Mincho Pro W6"),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';font-weight:600;src:local("YuMincho Demibold"),local("Hiragino Mincho ProN W6"),local("Hiragino Mincho Pro W6"),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti GB';font-weight:600;src:local("STSongti SC Bold"),local(STSongti-SC-Bold)}@font-face{font-family:'Han Songti';src:local("Songti SC"),local("Songti TC"),local(STSongti),local("Lisong Pro"),local("MS Mincho"),local(SimSun),local(PMingLiU);unicode-range:U+270C}@font-face{font-family:'Han Songti';font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';src:local("Songti TC"),local("Lisong Pro"),local("Songti SC"),local(STSong),local("MS Mincho"),local(PMingLiU),local(SimSun);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti GB';src:local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+270C}@font-face{font-family:cursive;src:local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti';src:local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti CNS';src:local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti GB';src:local("Kaiti SC"),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti';font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti GB';font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong CNS';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong GB';src:local(STFangsong),local(FangSong)}@font-face{font-family:'Biaodian Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Serif';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Arial Unicode MS"),local("MS Gothic");unicode-range:U+2014}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho"),local("Microsoft Yahei");unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local("MS Mincho"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic");unicode-range:U+2026}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Lisong Pro"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Sans';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Serif';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans GB';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif GB';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU),local("MS Gothic");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(STSongti-TC-Regular),local("Lisong Pro"),local("Heiti TC"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Songti SC"),local(STSongti),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Basic';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:'Biaodian Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Latin Italic Serif';src:local("Georgia Italic"),local("Times New Roman Italic"),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Serif';font-weight:700;src:local("Georgia Bold Italic"),local("Times New Roman Bold Italic"),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Sans';src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:'Latin Italic Sans';font-weight:700;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Sans';src:local(Skia),local("Neutraface 2 Text"),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Serif';src:local(Georgia),local("Hoefler Text"),local("Big Caslon")}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Italic Serif';src:local("Georgia Italic"),local("Hoefler Text Italic"),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Sans';src:local("Helvetica Neue"),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';font-weight:bold;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Serif';src:local(Palatino),local("Palatino Linotype"),local("Times New Roman")}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';src:local("Palatino Italic"),local("Palatino Italic Linotype"),local("Times New Roman Italic"),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';font-weight:bold;src:local("Palatino Bold Italic"),local("Palatino Bold Italic Linotype"),local("Times New Roman Bold Italic"),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{font-family:'Numeral TF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';font-weight:bold;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';font-weight:bold;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Kaiti'}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Heiti';src:local("Hiragino Sans GB"),local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype")}@font-face{font-family:'Zhuyin Heiti';src:local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");unicode-range:U+3127}@font-face{src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");font-family:'Zhuyin Heiti';unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");font-family:'Romanization Sans';unicode-range:U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}html:lang(zh-Latn),html:lang(ja-Latn),html:not(:lang(zh)):not(:lang(ja)),html *:lang(zh-Latn),html *:lang(ja-Latn),html *:not(:lang(zh)):not(:lang(ja)),article strong:lang(zh-Latn),article strong:lang(ja-Latn),article strong:not(:lang(zh)):not(:lang(ja)),article strong *:lang(zh-Latn),article strong *:lang(ja-Latn),article strong *:not(:lang(zh)):not(:lang(ja)){font-family:"Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}html:lang(zh),html:lang(zh-Hant),[lang^='zh'],[lang*='Hant'],[lang='zh-TW'],[lang='zh-HK'],article strong:lang(zh),article strong:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}html:lang(zh-Hans),html:lang(zh-CN),[lang*='Hans'],[lang='zh-CN'],article strong:lang(zh-Hans),article strong:lang(zh-CN){font-family:"Biaodian Pro Sans GB","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}html:lang(ja),[lang^='ja'],article strong:lang(ja){font-family:"Yakumono Sans","Helvetica Neue",Helvetica,Arial,sans-serif}article blockquote i:lang(zh-Latn),article blockquote i:lang(ja-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote i *:lang(zh-Latn),article blockquote i *:lang(ja-Latn),article blockquote i *:not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(zh-Latn),article blockquote var:lang(ja-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)),article blockquote var *:lang(zh-Latn),article blockquote var *:lang(ja-Latn),article blockquote var *:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}article blockquote i:lang(zh-Hans),article blockquote i:lang(zh-CN),article blockquote var:lang(zh-Hans),article blockquote var:lang(zh-CN){font-family:"Biaodian Pro Sans GB","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}article blockquote i:lang(ja),article blockquote var:lang(ja){font-family:"Yakumono Sans","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,sans-serif}article figure blockquote:lang(zh-Latn),article figure blockquote:lang(ja-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)),article figure blockquote *:lang(zh-Latn),article figure blockquote *:lang(ja-Latn),article figure blockquote *:not(:lang(zh)):not(:lang(ja)),figure blockquote:lang(zh-Latn),figure blockquote:lang(ja-Latn),figure blockquote:not(:lang(zh)):not(:lang(ja)),figure blockquote *:lang(zh-Latn),figure blockquote *:lang(ja-Latn),figure blockquote *:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Songti",cursive,serif}article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant),figure blockquote:lang(zh),figure blockquote:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Songti",serif}article figure blockquote:lang(zh-Hans),article figure blockquote:lang(zh-CN),figure blockquote:lang(zh-Hans),figure blockquote:lang(zh-CN){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Songti GB",serif}article figure blockquote:lang(ja),figure blockquote:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",serif}article blockquote:lang(zh-Latn),article blockquote:lang(ja-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)),article blockquote *:lang(zh-Latn),article blockquote *:lang(ja-Latn),article blockquote *:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Kaiti",cursive,serif}article blockquote:lang(zh),article blockquote:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}article blockquote:lang(zh-Hans),article blockquote:lang(zh-CN){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}article blockquote:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",cursive,serif}i:lang(zh-Latn),i:lang(ja-Latn),i:not(:lang(zh)):not(:lang(ja)),i *:lang(zh-Latn),i *:lang(ja-Latn),i *:not(:lang(zh)):not(:lang(ja)),var:lang(zh-Latn),var:lang(ja-Latn),var:not(:lang(zh)):not(:lang(ja)),var *:lang(zh-Latn),var *:lang(ja-Latn),var *:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti",cursive,serif}i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}i:lang(zh-Hans),i:lang(zh-CN),var:lang(zh-Hans),var:lang(zh-CN){font-family:"Biaodian Pro Serif GB","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}i:lang(ja),var:lang(ja){font-family:"Yakumono Serif","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman",cursive,serif}code:lang(zh-Latn),code:lang(ja-Latn),code:not(:lang(zh)):not(:lang(ja)),code *:lang(zh-Latn),code *:lang(ja-Latn),code *:not(:lang(zh)):not(:lang(ja)),kbd:lang(zh-Latn),kbd:lang(ja-Latn),kbd:not(:lang(zh)):not(:lang(ja)),kbd *:lang(zh-Latn),kbd *:lang(ja-Latn),kbd *:not(:lang(zh)):not(:lang(ja)),samp:lang(zh-Latn),samp:lang(ja-Latn),samp:not(:lang(zh)):not(:lang(ja)),samp *:lang(zh-Latn),samp *:lang(ja-Latn),samp *:not(:lang(zh)):not(:lang(ja)),pre:lang(zh-Latn),pre:lang(ja-Latn),pre:not(:lang(zh)):not(:lang(ja)),pre *:lang(zh-Latn),pre *:lang(ja-Latn),pre *:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,"Han Heiti",monospace,monospace,sans-serif}code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS",Menlo,Consolas,Courier,"Zhuyin Heiti","Han Heiti",monospace,monospace,sans-serif}code:lang(zh-Hans),code:lang(zh-CN),kbd:lang(zh-Hans),kbd:lang(zh-CN),samp:lang(zh-Hans),samp:lang(zh-CN),pre:lang(zh-Hans),pre:lang(zh-CN){font-family:"Biaodian Pro Sans GB",Menlo,Consolas,Courier,"Han Heiti GB",monospace,monospace,sans-serif}code:lang(ja),kbd:lang(ja),samp:lang(ja),pre:lang(ja){font-family:"Yakumono Sans",Menlo,Consolas,Courier,monospace,monospace,sans-serif}html,ruby ru[zhuyin] zhuyin,ruby ru[zhuyin] zhuyin diao,hruby ru[zhuyin] zhuyin,hruby ru[zhuyin] zhuyin diao,ruby.romanization rt,ruby ru[annotation]:before,hruby.romanization rt,hruby ru[annotation]:before,.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode='b7']{-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga";-webkit-font-feature-settings:"liga";font-feature-settings:"liga"}ruby ru[zhuyin] zhuyin diao,hruby ru[zhuyin] zhuyin diao{font-family:"Zhuyin Kaiti",cursive,serif}ruby.romanization rt,ruby ru[annotation]:before,hruby.romanization rt,hruby ru[annotation]:before{font-family:"Romanization Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}.no-kaiti i,.no-kaiti var{padding-bottom:0.05em;border-bottom:3px double #d3d3d3}article{line-height:1.7}article p,article li{text-align:justify;text-justify:inter-ideograph}article h1+blockquote,article h1+p,article h1+ol,article h1+ul,article h1+h6,article h1+section>h6:first-child,article h1+section>p:first-child,article h1+section>ol:first-child,article h1+section>ul:first-child,article h1+section>blockquote:first-child,article h2+blockquote,article h2+p,article h2+ol,article h2+ul,article h2+h6,article h2+section>h6:first-child,article h2+section>p:first-child,article h2+section>ol:first-child,article h2+section>ul:first-child,article h2+section>blockquote:first-child,article h3+blockquote,article h3+p,article h3+ol,article h3+ul,article h3+h6,article h3+section>h6:first-child,article h3+section>p:first-child,article h3+section>ol:first-child,article h3+section>ul:first-child,article h3+section>blockquote:first-child,article h4+blockquote,article h4+p,article h4+ol,article h4+ul,article h4+h6,article h4+section>h6:first-child,article h4+section>p:first-child,article h4+section>ol:first-child,article h4+section>ul:first-child,article h4+section>blockquote:first-child,article h5+blockquote,article h5+p,article h5+ol,article h5+ul,article h5+h6,article h5+section>h6:first-child,article h5+section>p:first-child,article h5+section>ol:first-child,article h5+section>ul:first-child,article h5+section>blockquote:first-child,article h6+blockquote,article h6+p,article h6+ol,article h6+ul,article h6+h6,article h6+section>h6:first-child,article h6+section>p:first-child,article h6+section>ol:first-child,article h6+section>ul:first-child,article h6+section>blockquote:first-child,article h1+h5,article h1+section>h5:first-child,article h2+h5,article h2+section>h5:first-child,article h3+h5,article h3+section>h5:first-child,article h4+h5,article h4+section>h5:first-child,article h5+h5,article h5+section>h5:first-child,article h1+h4,article h1+section>h4:first-child,article h2+h4,article h2+section>h4:first-child,article h3+h4,article h3+section>h4:first-child,article h4+h4,article h4+section>h4:first-child,article h1+h3,article h1+section>h3:first-child,article h2+h3,article h2+section>h3:first-child,article h3+h3,article h3+section>h3:first-child,article h1+h2,article h1+section>h2:first-child,article h2+h2,article h2+section>h2:first-child{margin-top:-1em}p.poem-like,.poem-like p{margin-left:2em}@media only screen and (max-width: 480px){p.poem-like,.poem-like p{margin-left:1em}}article blockquote{margin-right:0}@media only screen and (max-width: 480px){article blockquote{margin-left:1em}}figure blockquote{margin:0}blockquote blockquote{margin-left:1em;margin-right:1em}article blockquote blockquote{margin-right:0}@media only screen and (max-width: 480px){blockquote,figure{margin-left:1em;margin-right:1em}}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode='b7']{font-family:"Biaodian Basic","Han Heiti"}hws{display:inline;visibility:hidden;font-family:Arial,sans-serif !important;font-size:0.89em}code hws,kbd hws,samp hws,pre hws,ol>hws,ul>hws{display:none}char_group .open:not(:last-child),char_group .close:not(:last-child),char_group [unicode='3001']:not(:last-child),char_group [unicode='3002']:not(:last-child),char_group [unicode='ff0c']:not(:last-child),char_group [unicode='ff08']:not(:last-child){letter-spacing:-0.5em}char_group [unicode='b7']+[unicode='300c'],char_group [unicode='b7']+[unicode='300e'],char_group [unicode='30fb']+[unicode='300c'],char_group [unicode='30fb']+[unicode='300e']{margin-left:-0.5em}char_group .liga+[unicode='300c'],char_group .liga+[unicode='300e']{margin-left:-0.25em}char[display-as]{position:relative;display:inline-block}char[display-as] inner{color:transparent}char[display-as]:after{position:absolute;left:0;display:inline-block;content:attr(display-as)}char[display-as].comb-liga:after{font-family:"Romanization Sans","Zhuyin Kaiti"}em.above{-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}.no-textemphasis em.above char:after{margin-top:-0.7em;content:"●"}em.sesame{-moz-text-emphasis:open sesame;-webkit-text-emphasis:open sesame;text-emphasis:open sesame;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under}.no-textemphasis em.sesame char:after{margin-top:1em;content:"﹆"}em.above-dc{-moz-text-emphasis:open double-circle;-webkit-text-emphasis:open double-circle;text-emphasis:open double-circle;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}.no-textemphasis em.above-dc char:after{margin-top:-0.7em;content:"◎"}em.rebecca{-moz-text-emphasis:filled triangle;-webkit-text-emphasis:filled triangle;text-emphasis:filled triangle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;-moz-text-emphasis-color:#639;-webkit-text-emphasis-color:#639;text-emphasis-color:#639}.no-textemphasis em.rebecca char:after{margin-top:1em;content:"▲";color:#639}em.no-skip{-moz-text-emphasis:open circle;-webkit-text-emphasis:open circle;text-emphasis:open circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;-moz-text-emphasis-color:red;-webkit-text-emphasis-color:red;text-emphasis-color:red}.no-textemphasis em.no-skip char:after{margin-top:1em;content:"○";color:red}em.no-skip char.punct,em.no-skip char.biaodian{-moz-text-emphasis:inherit;-webkit-text-emphasis:inherit;text-emphasis:inherit}.no-textemphasis em.no-skip char.punct:after,.no-textemphasis em.no-skip char.biaodian:after{content:"○" !important} +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{line-height:1.3;-webkit-font-smoothing:subpixel-antialiased}ol,ul{padding-left:2em}blockquote,figure{margin-left:2em;margin-right:2em}address{font-style:inherit}pre{white-space:pre;word-wrap:normal}a{text-decoration:inherit}em:lang(ja),em:lang(zh){-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;font-style:inherit;border-bottom:2px dotted;padding-bottom:.05em;border-bottom-width:-webkit-calc(0px);padding-bottom:-webkit-calc(0px)}em:lang(ja){-moz-text-emphasis:filled sesame;-webkit-text-emphasis:filled sesame;text-emphasis:filled sesame;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}b,dfn:lang(ja),dfn:lang(zh),strong{font-weight:bolder}cite:lang(ja),cite:lang(zh),dfn:lang(ja),dfn:lang(zh){font-style:inherit}q{quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(zh){quotes:'\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f'}q:lang(en),q:lang(zh-CN){quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(en-GB){quotes:'\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d'}q:before{content:open-quote}q:after{content:close-quote}q:lang(ja):after,q:lang(ja):before{content:none}code,kbd,pre,samp{font-family:monospace,monospace,sans-serif}i:lang(ja),i:lang(zh),var:lang(ja),var:lang(zh){font-style:inherit}.han-js-rendered del+del.adjacent,.han-js-rendered del+s.adjacent,.han-js-rendered ins.adjacent,.han-js-rendered s+del.adjacent,.han-js-rendered s+s.adjacent,.han-js-rendered u.adjacent,del+del,del+s,ins+ins,ins+u,s+del,s+s,u+ins,u+u{margin-left:.125em}ins,u{padding-bottom:.05em;border-bottom:1px solid;text-decoration:none}ruby :after,ruby :before{line-height:normal}ruby>rt:not(:empty):before{content:'\ff08'}ruby>rt:not(:empty):after{content:'\ff09'}ruby>rb+rtc:before{content:'\ff08'}ruby>rtc:after{content:'\ff0c'}ruby>rtc:last-of-type:after{content:'\ff09'}ruby>rt:after,ruby>rt:before{display:inline-block;overflow:hidden;vertical-align:middle;height:0;width:0}ruby>rt:not(:empty):after,ruby>rt:not(:empty):before{height:-moz-calc(1.3em);width:-moz-calc(1em)}.han-js-rendered del+del,.han-js-rendered del+s,.han-js-rendered ins+ins,.han-js-rendered ins+u,.han-js-rendered s+del,.han-js-rendered s+s,.han-js-rendered u+ins,.han-js-rendered u+u{margin-left:auto}.han-js-rendered em.above,.han-js-rendered em.no-skip char.biaodian,.han-js-rendered em.no-skip char.punct,.han-js-rendered em:lang(ja),.han-js-rendered em:lang(zh),em.no-skip .han-js-rendered char.biaodian,em.no-skip .han-js-rendered char.punct{padding-bottom:auto;border-bottom-width:0}.no-textemphasis em.above,.no-textemphasis em.no-skip char.biaodian,.no-textemphasis em.no-skip char.punct,.no-textemphasis em:lang(ja),.no-textemphasis em:lang(zh),em.no-skip .no-textemphasis char.biaodian,em.no-skip .no-textemphasis char.punct{line-height:2}.no-textemphasis em.above char,.no-textemphasis em.no-skip char.biaodian char,.no-textemphasis em.no-skip char.punct char,.no-textemphasis em:lang(ja) char,.no-textemphasis em:lang(zh) char,em.no-skip .no-textemphasis char.biaodian char,em.no-skip .no-textemphasis char.punct char{position:relative;font-style:inherit}.no-textemphasis em.above char:after,.no-textemphasis em.no-skip char.biaodian char:after,.no-textemphasis em.no-skip char.punct char:after,.no-textemphasis em:lang(ja) char:after,.no-textemphasis em:lang(zh) char:after,em.no-skip .no-textemphasis char.biaodian char:after,em.no-skip .no-textemphasis char.punct char:after{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;text-decoration:none;-moz-transform:scale(0.5);-ms-transform:scale(0.5);-webkit-transform:scale(0.5);transform:scale(0.5);position:absolute;left:50%;top:0;margin-left:-250%;overflow:hidden;display:inline-block;height:1em;width:500%;line-height:1;text-align:center;text-indent:0;font-family:Georgia,'Times New Roman',Arial,!important}em.above char.biaodian,em.above char.punct,em.no-skip char.biaodian char.biaodian,em.no-skip char.biaodian char.punct,em.no-skip char.punct char.biaodian,em.no-skip char.punct char.punct,em:lang(ja) char.biaodian,em:lang(ja) char.punct,em:lang(zh) char.biaodian,em:lang(zh) char.punct{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none}.no-textemphasis em.above char.biaodian:after,.no-textemphasis em.above char.punct:after,.no-textemphasis em.no-skip char.biaodian char.biaodian:after,.no-textemphasis em.no-skip char.biaodian char.punct:after,.no-textemphasis em.no-skip char.punct char.biaodian:after,.no-textemphasis em.no-skip char.punct char.punct:after,.no-textemphasis em:lang(ja) char.biaodian:after,.no-textemphasis em:lang(ja) char.punct:after,.no-textemphasis em:lang(zh) char.biaodian:after,.no-textemphasis em:lang(zh) char.punct:after,em.no-skip .no-textemphasis char.biaodian char.biaodian:after,em.no-skip .no-textemphasis char.biaodian char.punct:after,em.no-skip .no-textemphasis char.punct char.biaodian:after,em.no-skip .no-textemphasis char.punct char.punct:after{content:none!important}.no-textemphasis em:lang(zh) char:after{margin-top:1em;content:'\25cf'}.no-textemphasis em:lang(ja) char:after{margin-top:-.7em;content:'\fe45'}hruby{display:inline;line-height:2}hruby rp{display:none}hruby ru[annotation]>rt{display:inline-block;height:0;width:0;font:0/0 hidden-text}hruby ru{position:relative;display:inline-block;text-indent:0}hruby ru:before,hruby zhuyin{-moz-transform:scale(0.55);-ms-transform:scale(0.55);-webkit-transform:scale(0.55);transform:scale(0.55);-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;line-height:normal;text-decoration:none;text-indent:0;position:absolute;display:inline-block}hruby ru[annotation]{text-align:center}hruby ru[annotation]:before{left:-265%;vertical-align:top;height:1em;width:600%;content:attr(annotation);line-height:1;text-align:center;text-indent:0}hruby[rightangle] ru[annotation]:before{left:-250%}hruby ru[zhuyin]{display:inline-block;position:relative;width:1.8em;text-align:left}hruby ru[zhuyin] zhuyin{right:.2em;top:0;height:2.7em;width:.8em;line-height:.9;white-space:pre-wrap;word-break:break-all}hruby ru[zhuyin] diao{position:absolute;right:-.9em;top:0;display:inline-block;width:1em}hruby ru[zhuyin]:empty,hruby ru[zhuyin][length='0']{width:auto}hruby ru[zhuyin]:empty zhuyin,hruby ru[zhuyin][length='0'] zhuyin{display:none}hruby ru[zhuyin][length='1'] zhuyin{margin-top:.125em}hruby ru[zhuyin][length='1'] diao{margin-top:-.35em}hruby ru[zhuyin][length='2'] zhuyin{margin-top:-.175em}hruby ru[zhuyin][length='2'] diao{margin-top:.5em}hruby ru[zhuyin][length='3'] zhuyin{margin-top:-.45em}hruby ru[zhuyin][length='3'] diao{margin-top:1.3em}hruby ru[zhuyin][diao='˙'] diao{right:-.35em}hruby ru[zhuyin][diao='˙'][length='1'] diao{margin-top:-.5em}hruby ru[zhuyin][diao='˙'][length='2'] diao{margin-top:-.3em}hruby ru[zhuyin][diao='˙'][length='3'] diao{margin-top:-.25em}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1.2);-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2);margin-right:-.25em}hruby ru[zhuyin][diao='󳆴'] diao,hruby ru[zhuyin][diao='󳆵'] diao,hruby ru[zhuyin][diao='󳆶'] diao,hruby ru[zhuyin][diao='󳆷'] diao,hruby ru[zhuyin][diao^='ㆴ'] diao,hruby ru[zhuyin][diao^='ㆵ'] diao,hruby ru[zhuyin][diao^='ㆶ'] diao,hruby ru[zhuyin][diao^='ㆷ'] diao{top:20%;margin-right:-.3em}hruby ru[annotation]:before,hruby[rightangle] ru[annotation][order='1']:before{top:-.5em}hruby ru[order='1']:before,hruby[rightangle] ru[annotation][order='0']:before{bottom:-.4em;top:auto}hruby[rightangle] ru[annotation]:before{margin-left:-.4em}@media screen and (-webkit-min-device-pixel-ratio:1.5),(min-resolution:192dpi){hruby yin{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);display:inline-block}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}hruby ru[zhuyin][diao='˙'] diao{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);top:.125em}}jinze{display:inline-block;text-indent:0}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';font-weight:600;src:local('YuGothic Bold'),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';font-weight:600;src:local('YuGothic Bold'),local(YuGo-Bold),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti GB';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold);unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Heiti SC Medium'),local('Microsoft YaHei Bold'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold);unicode-range:U+270C}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSong),local('Lisong Pro'),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho')}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local(PMingLiU),local(SimSun)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro')}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti SC Bold'),local('STSongti TC Bold'),local(STSongti-SC-Bold),local(STSongti-TC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti GB';font-weight:600;src:local('STSongti SC Bold'),local(STSongti-SC-Bold)}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSongti),local('Lisong Pro'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+270C}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local('MS Mincho'),local(PMingLiU),local(SimSun);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+270C}@font-face{font-family:cursive;src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti';src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti CNS';src:local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti GB';src:local('Kaiti SC'),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti GB';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong CNS';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong GB';src:local(STFangsong),local(FangSong)}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Arial Unicode MS'),local('MS Gothic');unicode-range:U+2014}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho'),local('Microsoft Yahei');unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic');unicode-range:U+2026}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Lisong Pro'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU),local('MS Gothic');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(STSongti-TC-Regular),local('Lisong Pro'),local('Heiti TC'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSongti),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Basic';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:'Biaodian Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Latin Italic Serif';src:local('Georgia Italic'),local('Times New Roman Italic'),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Serif';font-weight:700;src:local('Georgia Bold Italic'),local('Times New Roman Bold Italic'),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:'Latin Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Sans';src:local(Skia),local('Neutraface 2 Text'),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Serif';src:local(Georgia),local('Hoefler Text'),local('Big Caslon')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Italic Serif';src:local('Georgia Italic'),local('Hoefler Text Italic'),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Sans';src:local('Helvetica Neue'),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Serif';src:local(Palatino),local('Palatino Linotype'),local('Times New Roman')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';src:local('Palatino Italic'),local('Palatino Italic Linotype'),local('Times New Roman Italic'),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';font-weight:700;src:local('Palatino Bold Italic'),local('Palatino Bold Italic Linotype'),local('Times New Roman Bold Italic'),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{font-family:'Numeral TF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Kaiti'}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Heiti';src:local('Hiragino Sans GB'),local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype')}@font-face{font-family:'Zhuyin Heiti';src:local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3127}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Zhuyin Heiti';unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Romanization Sans';unicode-range:U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}article strong :lang(ja-Latn),article strong :lang(zh-Latn),article strong :not(:lang(zh)):not(:lang(ja)),article strong:lang(ja-Latn),article strong:lang(zh-Latn),article strong:not(:lang(zh)):not(:lang(ja)),html :lang(ja-Latn),html :lang(zh-Latn),html :not(:lang(zh)):not(:lang(ja)),html:lang(ja-Latn),html:lang(zh-Latn),html:not(:lang(zh)):not(:lang(ja)){font-family:'Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}[lang*=Hant],[lang=zh-HK],[lang=zh-TW],[lang^=zh],article strong:lang(zh),article strong:lang(zh-Hant),html:lang(zh),html:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}[lang*=Hans],[lang=zh-CN],article strong:lang(zh-CN),article strong:lang(zh-Hans),html:lang(zh-CN),html:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}[lang^=ja],article strong:lang(ja),html:lang(ja){font-family:'Yakumono Sans','Helvetica Neue',Helvetica,Arial,sans-serif}article blockquote i :lang(ja-Latn),article blockquote i :lang(zh-Latn),article blockquote i :not(:lang(zh)):not(:lang(ja)),article blockquote i:lang(ja-Latn),article blockquote i:lang(zh-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote var :lang(ja-Latn),article blockquote var :lang(zh-Latn),article blockquote var :not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(ja-Latn),article blockquote var:lang(zh-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}article blockquote i:lang(zh-CN),article blockquote i:lang(zh-Hans),article blockquote var:lang(zh-CN),article blockquote var:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}article blockquote i:lang(ja),article blockquote var:lang(ja){font-family:'Yakumono Sans','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,sans-serif}article figure blockquote :lang(ja-Latn),article figure blockquote :lang(zh-Latn),article figure blockquote :not(:lang(zh)):not(:lang(ja)),article figure blockquote:lang(ja-Latn),article figure blockquote:lang(zh-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)),figure blockquote :lang(ja-Latn),figure blockquote :lang(zh-Latn),figure blockquote :not(:lang(zh)):not(:lang(ja)),figure blockquote:lang(ja-Latn),figure blockquote:lang(zh-Latn),figure blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Songti',cursive,serif}article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant),figure blockquote:lang(zh),figure blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Songti',serif}article figure blockquote:lang(zh-CN),article figure blockquote:lang(zh-Hans),figure blockquote:lang(zh-CN),figure blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Songti GB',serif}article figure blockquote:lang(ja),figure blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',serif}article blockquote :lang(ja-Latn),article blockquote :lang(zh-Latn),article blockquote :not(:lang(zh)):not(:lang(ja)),article blockquote:lang(ja-Latn),article blockquote:lang(zh-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Kaiti',cursive,serif}article blockquote:lang(zh),article blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}article blockquote:lang(zh-CN),article blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}article blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',cursive,serif}i :lang(ja-Latn),i :lang(zh-Latn),i :not(:lang(zh)):not(:lang(ja)),i:lang(ja-Latn),i:lang(zh-Latn),i:not(:lang(zh)):not(:lang(ja)),var :lang(ja-Latn),var :lang(zh-Latn),var :not(:lang(zh)):not(:lang(ja)),var:lang(ja-Latn),var:lang(zh-Latn),var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti',cursive,serif}i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}i:lang(zh-CN),i:lang(zh-Hans),var:lang(zh-CN),var:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}i:lang(ja),var:lang(ja){font-family:'Yakumono Serif','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman',cursive,serif}code :lang(ja-Latn),code :lang(zh-Latn),code :not(:lang(zh)):not(:lang(ja)),code:lang(ja-Latn),code:lang(zh-Latn),code:not(:lang(zh)):not(:lang(ja)),kbd :lang(ja-Latn),kbd :lang(zh-Latn),kbd :not(:lang(zh)):not(:lang(ja)),kbd:lang(ja-Latn),kbd:lang(zh-Latn),kbd:not(:lang(zh)):not(:lang(ja)),pre :lang(ja-Latn),pre :lang(zh-Latn),pre :not(:lang(zh)):not(:lang(ja)),pre:lang(ja-Latn),pre:lang(zh-Latn),pre:not(:lang(zh)):not(:lang(ja)),samp :lang(ja-Latn),samp :lang(zh-Latn),samp :not(:lang(zh)):not(:lang(ja)),samp:lang(ja-Latn),samp:lang(zh-Latn),samp:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,'Han Heiti',monospace,monospace,sans-serif}code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS',Menlo,Consolas,Courier,'Zhuyin Heiti','Han Heiti',monospace,monospace,sans-serif}code:lang(zh-CN),code:lang(zh-Hans),kbd:lang(zh-CN),kbd:lang(zh-Hans),pre:lang(zh-CN),pre:lang(zh-Hans),samp:lang(zh-CN),samp:lang(zh-Hans){font-family:'Biaodian Pro Sans GB',Menlo,Consolas,Courier,'Han Heiti GB',monospace,monospace,sans-serif}code:lang(ja),kbd:lang(ja),pre:lang(ja),samp:lang(ja){font-family:'Yakumono Sans',Menlo,Consolas,Courier,monospace,monospace,sans-serif}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7],hruby ru[annotation]:before,hruby ru[zhuyin] zhuyin,hruby ru[zhuyin] zhuyin diao,hruby.romanization rt,html,ruby ru[annotation]:before,ruby ru[zhuyin] zhuyin,ruby ru[zhuyin] zhuyin diao,ruby.romanization rt{-moz-font-feature-settings:'liga';-ms-font-feature-settings:'liga';-webkit-font-feature-settings:'liga';font-feature-settings:'liga'}i,var{font-style:inherit}hruby ru[zhuyin] zhuyin diao,ruby ru[zhuyin] zhuyin diao{font-family:'Zhuyin Kaiti',cursive,serif}hruby ru[annotation]:before,hruby.romanization rt,ruby ru[annotation]:before,ruby.romanization rt{font-family:'Romanization Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}.no-kaiti i,.no-kaiti var{padding-bottom:.05em;border-bottom:3px double lightgrey}article{line-height:1.7}article li,article p{text-align:justify;text-justify:inter-ideograph}article h1+blockquote,article h1+h2,article h1+h3,article h1+h4,article h1+h5,article h1+h6,article h1+ol,article h1+p,article h1+section>blockquote:first-child,article h1+section>h2:first-child,article h1+section>h3:first-child,article h1+section>h4:first-child,article h1+section>h5:first-child,article h1+section>h6:first-child,article h1+section>ol:first-child,article h1+section>p:first-child,article h1+section>ul:first-child,article h1+ul,article h2+blockquote,article h2+h2,article h2+h3,article h2+h4,article h2+h5,article h2+h6,article h2+ol,article h2+p,article h2+section>blockquote:first-child,article h2+section>h2:first-child,article h2+section>h3:first-child,article h2+section>h4:first-child,article h2+section>h5:first-child,article h2+section>h6:first-child,article h2+section>ol:first-child,article h2+section>p:first-child,article h2+section>ul:first-child,article h2+ul,article h3+blockquote,article h3+h3,article h3+h4,article h3+h5,article h3+h6,article h3+ol,article h3+p,article h3+section>blockquote:first-child,article h3+section>h3:first-child,article h3+section>h4:first-child,article h3+section>h5:first-child,article h3+section>h6:first-child,article h3+section>ol:first-child,article h3+section>p:first-child,article h3+section>ul:first-child,article h3+ul,article h4+blockquote,article h4+h4,article h4+h5,article h4+h6,article h4+ol,article h4+p,article h4+section>blockquote:first-child,article h4+section>h4:first-child,article h4+section>h5:first-child,article h4+section>h6:first-child,article h4+section>ol:first-child,article h4+section>p:first-child,article h4+section>ul:first-child,article h4+ul,article h5+blockquote,article h5+h5,article h5+h6,article h5+ol,article h5+p,article h5+section>blockquote:first-child,article h5+section>h5:first-child,article h5+section>h6:first-child,article h5+section>ol:first-child,article h5+section>p:first-child,article h5+section>ul:first-child,article h5+ul,article h6+blockquote,article h6+h6,article h6+ol,article h6+p,article h6+section>blockquote:first-child,article h6+section>h6:first-child,article h6+section>ol:first-child,article h6+section>p:first-child,article h6+section>ul:first-child,article h6+ul{margin-top:-1em}.poem-like p,p.poem-like{margin-left:2em}@media only screen and (max-width:480px){.poem-like p,p.poem-like{margin-left:1em}}article blockquote{margin-right:0}@media only screen and (max-width:480px){article blockquote{margin-left:1em}}figure blockquote{margin:0}blockquote blockquote{margin-left:1em;margin-right:1em}article blockquote blockquote{margin-right:0}@media only screen and (max-width:480px){blockquote,figure{margin-left:1em;margin-right:1em}}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7]{font-family:'Biaodian Basic','Han Heiti'}hws{display:inline;visibility:hidden;font-family:Arial,sans-serif!important;font-size:.89em}code hws,kbd hws,ol>hws,pre hws,samp hws,table>hws,tbody>hws,tfoot>hws,thead>hws,tr>hws,ul>hws{display:none}char_group .close:not(:last-child),char_group .open:not(:last-child),char_group [unicode='3001']:not(:last-child),char_group [unicode='3002']:not(:last-child),char_group [unicode=ff08]:not(:last-child),char_group [unicode=ff0c]:not(:last-child){letter-spacing:-.5em}char_group [unicode='3001']:lang(zh-Hant):not(:last-child),char_group [unicode='3002']:lang(zh-Hant):not(:last-child),char_group [unicode=ff08]:lang(zh-Hant):not(:last-child),char_group [unicode=ff0c]:lang(zh-Hant):not(:last-child){letter-spacing:inherit}char_group [unicode='3001']:lang(zh-Hant)+.open,char_group [unicode='3002']:lang(zh-Hant)+.open,char_group [unicode='30fb']+[unicode='300c'],char_group [unicode='30fb']+[unicode='300e'],char_group [unicode=b7]+[unicode='300c'],char_group [unicode=b7]+[unicode='300e'],char_group [unicode=ff08]:lang(zh-Hant)+.open,char_group [unicode=ff0c]:lang(zh-Hant)+.open{margin-left:-.5em}char_group .liga+[unicode='300c'],char_group .liga+[unicode='300e']{margin-left:-.25em}char[display-as]{position:relative;display:inline-block}char[display-as] inner{color:transparent}char[display-as]:after{position:absolute;left:0;display:inline-block;content:attr(display-as)}char[display-as].comb-liga:after{font-family:'Romanization Sans','Zhuyin Kaiti'}em.above{-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}.no-textemphasis em.above char:after{margin-top:-.7em;content:'\25cf'}em.sesame{-moz-text-emphasis:open sesame;-webkit-text-emphasis:open sesame;text-emphasis:open sesame;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under}.no-textemphasis em.sesame char:after{margin-top:1em;content:'\fe46'}em.above-dc{-moz-text-emphasis:open double-circle;-webkit-text-emphasis:open double-circle;text-emphasis:open double-circle;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}.no-textemphasis em.above-dc char:after{margin-top:-.7em;content:'\25ce'}em.rebecca{-moz-text-emphasis:filled triangle;-webkit-text-emphasis:filled triangle;text-emphasis:filled triangle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;-moz-text-emphasis-color:#639;-webkit-text-emphasis-color:#639;text-emphasis-color:#639}.no-textemphasis em.rebecca char:after{margin-top:1em;content:'\25b2';color:#639}em.no-skip{-moz-text-emphasis:open circle;-webkit-text-emphasis:open circle;text-emphasis:open circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;-moz-text-emphasis-color:red;-webkit-text-emphasis-color:red;text-emphasis-color:red}.no-textemphasis em.no-skip char:after{margin-top:1em;content:'\25cb';color:red}em.no-skip char.biaodian,em.no-skip char.punct{-moz-text-emphasis:inherit;-webkit-text-emphasis:inherit;text-emphasis:inherit}.no-textemphasis em.no-skip char.biaodian char:after,.no-textemphasis em.no-skip char.punct char:after{content:inherit}.no-textemphasis em.no-skip char.biaodian:after,.no-textemphasis em.no-skip char.punct:after{content:'\25cb'!important} \ No newline at end of file diff --git a/latest/em-han.scss b/latest/em-han.scss new file mode 100644 index 00000000..96afb8bc --- /dev/null +++ b/latest/em-han.scss @@ -0,0 +1,27 @@ +// ** +// * Import Han module +// * +@import "../src/sass/han"; + +// ** +// * Customise emphasis marks +// * +em.above { + @include han-text-emphasis(over); +} + +em.sesame { + @include han-text-emphasis(under, sesame, open, inherit, true, false); +} + +em.above-dc { + @include han-text-emphasis(over, double-circle, open, inherit, true, false); +} + +em.rebecca { + @include han-text-emphasis(under, triangle, filled, #663399, true, false); +} + +em.no-skip { + @include han-text-emphasis(under, circle, open, red, false, false); +} diff --git a/latest/em.html b/latest/em.html index 68ec1191..658c46db 100644 --- a/latest/em.html +++ b/latest/em.html @@ -1,106 +1,18 @@ - - - - - 測試・強調元素(着重號)— 漢字標準格式 - - - - - - - -
-

測試·強調元素(着重號)

-
-

基本着重號

-

繁體中文的着重號和簡體中文一樣。

-

简体中文的着重号和繁体中文一样。

-

日本語の著重奌独特の風味。

-
-
-

完整中日韓表意文字區段支援

-

注意:部分擴展區漢字可能不為多數作業系統支援,而顯示為空白方框。安裝花園明朝體可以解決這個問題。

-

- 中日韓表意文字擴展區段:𫞵𫞦𠁻𠁶
- 表意數字零:
- 康熙字典及簡體字部首:⼌⿕⺃⻍⻰⻳
- 表意文字描述字元:⿸⿷⿳ -

-
-
-

標點規避

-

唐朝是中國歷史上一個重要的朝代。唐王李淵於618年逼隋恭帝禪位,遂建唐朝取代隋朝,設首都於長安。在其鼎盛時的7世紀,遙遠的中亞綠洲地帶亦受唐支配。唐朝在文化、政治、經濟、外交……等方面都達到了很高的成就,是中國歷史上的盛世之一,也是當時的世界強國。

-
-

日語着重號的標點規避

-

アンネリース・マリー・フランク(ドイツ語:Annelies Marie Frank、1929年6月12日-1945年3月上旬)は、『アンネの日記』の著者として知られるユダヤ系ドイツ人の少女である。

-
-
-
-

西文

-
-

拉丁字母

-

我道,¡Hola! 他問,¿Cómo estás?

-

德文中如何表達「羅曼式建築」這個概念?德國學者最初在teutschlongobardischromantische三詞間猶豫,最終在19世紀30年代偏向了「romantishce」一詞。

-
-
-

希臘字母

-

至今關於古希臘遊吟詩人Ὅμηρος的資料很少,所以對其生平有很多說法,但都無確鑿證據。

-
-
-

西里爾字母

-

Храм-паметник „Свети Александър Невски‟是一座位於保加利亞首都索菲亞的保加利亞東正教大教堂。該教堂為新拜占庭式建築,是保加利亞主教的主座教堂,也是東正教在世界上最大的教堂之一,還是索菲亞的象徵之一以及主要的遊覽景點。

-
-
-

組合字(combining character

-

- 對你吶喊一聲,у̐ë̈̈Α̫Ή̥!

-
-
-

自成一體的西文強調

-

- I will have to tell you — - The cat is cute. -

-

我必須說——Η γάτα είναι χαριτωμένο.

-

言う必要があります、Кошка мило.

-
-
-
-

與其他字級語意元素共用

-

- 行間注hángjiānzhùruby - ㄒㄧ˫ㄢˋㄗㄨㆩˋ? - 註記元素u變音元素i

-
-
-

定制

-

無論你想要把着重號放在上邊,或是想用空心「芝麻號」都沒有問題!抑或是這樣搞怪的圈圈,也可以用有紀念意義的顏色。

-

不想「規避標點」也行。

-
-

定制方式

-

- 定制功能需要自行引用han.sass模塊(而無法直接使用CDN文件),並依需求設定變數等,詳見說明文件CSS Text Decoration Module Level 3。 -

-
-
-
- - - - \ No newline at end of file +測試・強調元素(着重號)— 漢字標準格式

測試·強調元素(着重號)

基本着重號

繁體中文的着重號和簡體中文一樣。

简体中文的着重号和繁体中文一样。

日本語の著重奌独特の風味。

完整中日韓表意文字區段支援

注意:部分擴展區漢字可能不為多數作業系統支援,而顯示為空白方框。安裝花園明朝體可以解決這個問題。

中日韓表意文字擴展區段:𫞵𫞦𠁻𠁶
+表意數字零:
+康熙字典及簡體字部首:⼌⿕⺃⻍⻰⻳
+表意文字描述字元:⿸⿷⿳

標點規避

唐朝是中國歷史上一個重要的朝代。唐王李淵於618年逼隋恭帝禪位,遂建唐朝取代隋朝,設首都於長安。在其鼎盛時的7世紀,遙遠的中亞綠洲地帶亦受唐支配。唐朝在文化、政治、經濟、外交……等方面都達到了很高的成就,是中國歷史上的盛世之一,也是當時的世界強國。

日語着重號的標點規避

アンネリース・マリー・フランク(ドイツ語:Annelies Marie Frank、1929年6月12日-1945年3月上旬)は、『アンネの日記』の著者として知られるユダヤ系ドイツ人の少女である。

西文

拉丁字母

我道,¡Hola! 他問,¿Cómo estás?

德文中如何表達「羅曼式建築」這個概念?德國學者最初在teutschlongobardischromantische三詞間猶豫,最終在19世紀30年代偏向了「romantishce」一詞。

希臘字母

至今關於古希臘遊吟詩人Ὅμηρος的資料很少,所以對其生平有很多說法,但都無確鑿證據。

西里爾字母

Храм-паметник „Свети Александър Невски‟是一座位於保加利亞首都索菲亞的保加利亞東正教大教堂。該教堂為新拜占庭式建築,是保加利亞主教的主座教堂,也是東正教在世界上最大的教堂之一,還是索菲亞的象徵之一以及主要的遊覽景點。

組合字(combining character

對你吶喊一聲,у̐ë̈̈Α̫Ή̥!

自成一體的西文強調

I will have to tell you — +The cat is cute.

我必須說——Η γάτα είναι χαριτωμένο.

言う必要があります、Кошка мило.

與其他字級語意元素共用

行間注hángjiānzhùrubyㄒㄧ˫ㄢˋㄗㄨㆩˋ註記元素u變音元素i

定制

無論你想要把着重號放在上邊,或是想用空心「芝麻號」都沒有問題!抑或是這樣搞怪的圈圈,也可以用有紀念意義的顏色。

不想「規避標點」也行。

定制方式

定制功能需要自行引用han.sass模塊(而無法直接使用CDN文件),並依需求設定變數等,詳見說明文件CSS Text Decoration Module Level 3

\ No newline at end of file diff --git a/latest/four.html b/latest/four.html index 6b605197..a633bad0 100644 --- a/latest/four.html +++ b/latest/four.html @@ -1,188 +1,80 @@ - - - - - 測試・四大字體集 — 漢字標準格式 - - - - - - - -
-

測試·四大字體集

-
-

黑體

-
-

推薦

-

提示:以美觀、品質完善、收字齊全、區分字重者為優先。

-

- 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! -

-
-
-

繁體字

-

提示:同上,惟回退順序稍有不同,舊字形→國字標準字形〔體〕→新字形。

-

- 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! -

-
-
-

中國國標

-

提示:完全符合中國國標字形。

-

- 扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口! -

-
-
-
-

宋體

-
-

推薦

-

- 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! -

-
-
-

繁體字

-

- 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! -

-
-
-

中國國標

-

- 扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口! -

-
-
-
-

楷體

-
-

推薦

-

- 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! -

-
-
-

繁體字

-

提示:楷體因屬於手寫字體,Han Kaiti CNS完全遵守台灣教育部的國字標準字形(體)。

-

- 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米線小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! -

-
-
-

中國國標

-

- 扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口! -

-
-
-
-

仿宋體

-

提示:由於各主流作業系統皆未專為各地區變體提供「仿宋體」,以下三者為同一中國國標字體。

-
-

推薦

-

- 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! -

-
-
-

繁體字

-

- 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! -

-
-
-

中國國標

-

- 扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口! -

-
-
-
- - - \ No newline at end of file +測試・四大字體集 — 漢字標準格式

測試·四大字體集

黑體

推薦

提示:以美觀、品質完善、收字齊全、區分字重者為優先。

揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

繁體字

提示:同上,惟回退順序稍有不同,舊字形→國字標準字形〔體〕→新字形。

揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

中國國標

提示:完全符合中國國標字形。

扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口!

宋體

推薦

揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

繁體字

揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

中國國標

扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口!

楷體

推薦

揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

繁體字

提示:楷體因屬於手寫字體,Han Kaiti CNS完全遵守台灣教育部的國字標準字形(體)。

揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米線小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

中國國標

扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口!

仿宋體

提示:由於各主流作業系統皆未專為各地區變體提供「仿宋體」,以下三者為同一中國國標字體。

推薦

揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

繁體字

揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

中國國標

扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口!

\ No newline at end of file diff --git a/latest/generics-han.css b/latest/generics-han.css index 603b7520..4120c9e1 100644 --- a/latest/generics-han.css +++ b/latest/generics-han.css @@ -1 +1 @@ -/*! 漢字標準格式 v3.0.2 | MIT License | css.hanzi.co *//*! Han: CSS typography framework optimised for Hanzi *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{line-height:1.3;-webkit-font-smoothing:subpixel-antialiased}ol,ul{padding-left:2em}figure,blockquote{margin-left:2em;margin-right:2em}address{font-style:inherit}pre{white-space:pre;word-wrap:normal}a{text-decoration:inherit}em:lang(zh),em:lang(ja){-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;font-style:inherit;border-bottom:2px dotted;padding-bottom:0.05em;border-bottom-width:-webkit-calc( 0px );padding-bottom:-webkit-calc( 0px )}em:lang(ja){-moz-text-emphasis:filled sesame;-webkit-text-emphasis:filled sesame;text-emphasis:filled sesame;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}strong,dfn:lang(zh),dfn:lang(ja),b{font-weight:inherit}strong,dfn:lang(zh),dfn:lang(ja),b{font-weight:bolder}dfn:lang(zh),dfn:lang(ja){font-style:inherit}cite:lang(zh),cite:lang(ja){font-style:inherit}q{quotes:"“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’"}q:lang(zh){quotes:"「" "」" "『" "』" "「" "」" "『" "』" "「" "」" "『" "』"}q:lang(zh-CN),q:lang(en){quotes:"“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’"}q:lang(en-GB){quotes:"‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”"}q:before{content:open-quote}q:after{content:close-quote}q:lang(ja):before,q:lang(ja):after{content:none}code,kbd,samp,pre{font-family:monospace,monospace,sans-serif}i:lang(zh),i:lang(ja),var:lang(zh),var:lang(ja){font-family:cursive,serif;font-style:inherit}u+u,u+ins,ins+u,ins+ins,s+s,s+del,del+s,del+del,.hyu-js-rendered u.adjacent,.hyu-js-rendered ins.adjacent,.hyu-js-rendered s+s.adjacent,.hyu-js-rendered s+del.adjacent,.hyu-js-rendered del+s.adjacent,.hyu-js-rendered del+del.adjacent{margin-left:0.125em}u,ins{padding-bottom:0.05em;border-bottom:1px solid;text-decoration:none}ruby *:before,ruby *:after{line-height:normal}ruby>rt:not(:empty):before{content:"("}ruby>rt:not(:empty):after{content:")"}ruby>rb+rtc:before{content:"("}ruby>rtc:after{content:","}ruby>rtc:last-of-type:after{content:")"}ruby>rt:before,ruby>rt:after{display:inline-block;overflow:hidden;vertical-align:middle;height:0;width:0}ruby>rt:not(:empty):before,ruby>rt:not(:empty):after{height:-moz-calc( 1.3em );width:-moz-calc( 1em )}.hyu-js-rendered u+u,.hyu-js-rendered u+ins,.hyu-js-rendered ins+u,.hyu-js-rendered ins+ins,.hyu-js-rendered s+s,.hyu-js-rendered s+del,.hyu-js-rendered del+s,.hyu-js-rendered del+del{margin-left:auto}.hyu-js-rendered em:lang(zh),.hyu-js-rendered em:lang(ja){padding-bottom:auto;border-bottom-width:0}.no-textemphasis em:lang(zh),.no-textemphasis em:lang(ja){line-height:2}.no-textemphasis em:lang(zh) char,.no-textemphasis em:lang(ja) char{position:relative;font-style:inherit}.no-textemphasis em:lang(zh) char:after,.no-textemphasis em:lang(ja) char:after{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:normal;line-height:normal;text-decoration:none;text-indent:0;-moz-transform:scale(0.5);-ms-transform:scale(0.5);-webkit-transform:scale(0.5);transform:scale(0.5);position:absolute;left:50%;top:0;margin-left:-250%;overflow:hidden;display:inline-block;height:1em;width:500%;line-height:1;text-align:center;text-indent:0;font-family:Georgia,"Times New Roman",Arial,!important}em:lang(zh) char.punct,em:lang(ja) char.punct,em:lang(zh) char.biaodian,em:lang(ja) char.biaodian{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none}.no-textemphasis em:lang(zh) char.punct:after,.no-textemphasis em:lang(ja) char.punct:after,.no-textemphasis em:lang(zh) char.biaodian:after,.no-textemphasis em:lang(ja) char.biaodian:after{content:none !important}.no-textemphasis em:lang(zh) char:after{margin-top:1em;content:"●"}.no-textemphasis em:lang(ja) char:after{margin-top:-0.7em;content:"﹅"}hruby{display:inline;line-height:2}hruby rp{display:none}hruby ru[annotation]>rt{display:inline-block;height:0;width:0;font:0/0 hidden-text}hruby ru{position:relative;display:inline-block;text-indent:0}hruby ru:before,hruby zhuyin{-moz-transform:scale(0.55);-ms-transform:scale(0.55);-webkit-transform:scale(0.55);transform:scale(0.55);-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:normal;line-height:normal;text-decoration:none;text-indent:0;position:absolute;display:inline-block}hruby ru[annotation]{text-align:center}hruby ru[annotation]:before{left:-265%;top:-0.5em;vertical-align:top;height:1em;width:600%;content:attr(annotation);line-height:1;text-align:center;text-indent:0}hruby[rightangle] ru[annotation]:before{left:-250%}hruby ru[zhuyin]{display:inline-block;position:relative;width:1.8em;text-align:left}hruby ru[zhuyin] zhuyin{right:0.2em;top:0;height:2.7em;width:0.8em;line-height:0.9;white-space:pre-wrap;word-break:break-all}hruby ru[zhuyin] diao{position:absolute;right:-0.9em;top:0;display:inline-block;width:1em}hruby ru[zhuyin][length='0'],hruby ru[zhuyin]:empty{width:auto}hruby ru[zhuyin][length='0'] zhuyin,hruby ru[zhuyin]:empty zhuyin{display:none}hruby ru[zhuyin][length='1'] zhuyin{margin-top:0.125em}hruby ru[zhuyin][length='1'] diao{margin-top:-0.35em}hruby ru[zhuyin][length='2'] zhuyin{margin-top:-0.175em}hruby ru[zhuyin][length='2'] diao{margin-top:0.5em}hruby ru[zhuyin][length='3'] zhuyin{margin-top:-0.45em}hruby ru[zhuyin][length='3'] diao{margin-top:1.3em}hruby ru[zhuyin][diao='˙'] diao{right:-0.35em}hruby ru[zhuyin][diao='˙'][length='1'] diao{margin-top:-0.5em}hruby ru[zhuyin][diao='˙'][length='2'] diao{margin-top:-0.3em}hruby ru[zhuyin][diao='˙'][length='3'] diao{margin-top:-0.25em}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1.2);-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2);margin-right:-0.25em}hruby ru[zhuyin][diao^='ㆴ'] diao,hruby ru[zhuyin][diao^='ㆵ'] diao,hruby ru[zhuyin][diao^='ㆶ'] diao,hruby ru[zhuyin][diao^='ㆷ'] diao,hruby ru[zhuyin][diao='󳆴'] diao,hruby ru[zhuyin][diao='󳆵'] diao,hruby ru[zhuyin][diao='󳆶'] diao,hruby ru[zhuyin][diao='󳆷'] diao{top:20%;margin-right:-0.3em}hruby ru[annotation]:before,hruby[rightangle] ru[annotation][order='1']:before{top:-0.5em}hruby ru[order='1']:before,hruby[rightangle] ru[annotation][order='0']:before{bottom:-0.4em;top:auto}hruby[rightangle] ru[annotation]:before{margin-left:-0.4em}@media screen and (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 192dpi){hruby yin{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);display:inline-block}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}hruby ru[zhuyin][diao='˙'] diao{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);top:0.125em}}jinze{display:inline-block;text-indent:0}@font-face{font-family:'Han Heiti';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Lantinghei SC"),local("Heiti SC"),local("Heiti TC"),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Droid Sans Fallback")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';src:local(YuGothic),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro")}@font-face{font-family:'Han Heiti CNS';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Heiti TC"),local("Microsoft Jhenghei"),local("Heiti SC"),local("Lantinghei SC"),local("Microsoft Yahei"),local("Droid Sans Fallback")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';src:local(YuGothic),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro")}@font-face{font-family:'Han Heiti GB';src:local("Hiragino Sans GB"),local("Lantinghei SC"),local("Heiti SC"),local("Microsoft Yahei"),local("Droid Sans Fallback")}@font-face{font-family:'Han Heiti';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Lantinghei SC Demibold"),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local("Heiti SC Medium"),local("Heiti TC Medium"),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local("Microsoft YaHei Bold"),local("Microsoft Jhenghei Bold"),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';font-weight:600;src:local("YuGothic Bold"),local("Hiragino Kaku Gothic ProN W6"),local("Hiragino Kaku Gothic Pro W6"),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local("Lantinghei SC Demibold"),local("Microsoft YaHei Bold"),local("Heiti SC Medium"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';font-weight:600;src:local("YuGothic Bold"),local(YuGo-Bold),local("Hiragino Kaku Gothic ProN W6"),local("Hiragino Kaku Gothic Pro W6"),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti GB';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei SC Demibold"),local("Microsoft YaHei Bold"),local("Heiti SC Medium"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{font-family:'Han Heiti';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Lantinghei SC"),local("Heiti SC"),local("Heiti TC"),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:'Han Heiti';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Lantinghei SC Demibold"),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local("Heiti SC Medium"),local("Heiti TC Medium"),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local("Microsoft YaHei Bold"),local("Microsoft Jhenghei Bold"),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold);unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Heiti TC"),local("Microsoft Jhenghei"),local("Heiti SC"),local("Lantinghei SC"),local("Microsoft Yahei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local("Lantinghei SC Demibold"),local("Heiti SC Medium"),local("Microsoft YaHei Bold"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold);unicode-range:U+270C}@font-face{font-family:'Han Heiti GB';src:local("Hiragino Sans GB"),local("Lantinghei SC"),local("Heiti SC"),local("Microsoft Yahei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:'Han Songti';src:local("Songti SC"),local("Songti TC"),local(STSong),local("Lisong Pro"),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';src:local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho")}@font-face{font-family:'Han Songti CNS';src:local("Songti TC"),local("Lisong Pro"),local("Songti SC"),local(STSong),local(PMingLiU),local(SimSun)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';src:local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro")}@font-face{font-family:'Han Songti GB';src:local("Songti SC"),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:'Han Songti';font-weight:600;src:local("STSongti SC Bold"),local("STSongti TC Bold"),local(STSongti-SC-Bold),local(STSongti-TC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';font-weight:600;src:local("YuMincho Demibold"),local("Hiragino Mincho ProN W6"),local("Hiragino Mincho Pro W6"),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';font-weight:600;src:local("YuMincho Demibold"),local("Hiragino Mincho ProN W6"),local("Hiragino Mincho Pro W6"),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti GB';font-weight:600;src:local("STSongti SC Bold"),local(STSongti-SC-Bold)}@font-face{font-family:'Han Songti';src:local("Songti SC"),local("Songti TC"),local(STSongti),local("Lisong Pro"),local("MS Mincho"),local(SimSun),local(PMingLiU);unicode-range:U+270C}@font-face{font-family:'Han Songti';font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';src:local("Songti TC"),local("Lisong Pro"),local("Songti SC"),local(STSong),local("MS Mincho"),local(PMingLiU),local(SimSun);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti GB';src:local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+270C}@font-face{font-family:cursive;src:local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti';src:local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti CNS';src:local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti GB';src:local("Kaiti SC"),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti';font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti GB';font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong CNS';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong GB';src:local(STFangsong),local(FangSong)}@font-face{font-family:'Biaodian Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Serif';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Arial Unicode MS"),local("MS Gothic");unicode-range:U+2014}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho"),local("Microsoft Yahei");unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local("MS Mincho"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic");unicode-range:U+2026}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Lisong Pro"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Sans';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Serif';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans GB';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif GB';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU),local("MS Gothic");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(STSongti-TC-Regular),local("Lisong Pro"),local("Heiti TC"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Songti SC"),local(STSongti),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Basic';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:'Biaodian Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Latin Italic Serif';src:local("Georgia Italic"),local("Times New Roman Italic"),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Serif';font-weight:700;src:local("Georgia Bold Italic"),local("Times New Roman Bold Italic"),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Sans';src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:'Latin Italic Sans';font-weight:700;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Sans';src:local(Skia),local("Neutraface 2 Text"),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Serif';src:local(Georgia),local("Hoefler Text"),local("Big Caslon")}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Italic Serif';src:local("Georgia Italic"),local("Hoefler Text Italic"),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Sans';src:local("Helvetica Neue"),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';font-weight:bold;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Serif';src:local(Palatino),local("Palatino Linotype"),local("Times New Roman")}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';src:local("Palatino Italic"),local("Palatino Italic Linotype"),local("Times New Roman Italic"),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';font-weight:bold;src:local("Palatino Bold Italic"),local("Palatino Bold Italic Linotype"),local("Times New Roman Bold Italic"),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{font-family:'Numeral TF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';font-weight:bold;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';font-weight:bold;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Kaiti'}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Heiti';src:local("Hiragino Sans GB"),local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype")}@font-face{font-family:'Zhuyin Heiti';src:local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");unicode-range:U+3127}@font-face{src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");font-family:'Zhuyin Heiti';unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");font-family:'Romanization Sans';unicode-range:U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}html:lang(zh-Latn),html:lang(ja-Latn),html:not(:lang(zh)):not(:lang(ja)),html *:lang(zh-Latn),html *:lang(ja-Latn),html *:not(:lang(zh)):not(:lang(ja)),article strong:lang(zh-Latn),article strong:lang(ja-Latn),article strong:not(:lang(zh)):not(:lang(ja)),article strong *:lang(zh-Latn),article strong *:lang(ja-Latn),article strong *:not(:lang(zh)):not(:lang(ja)),.sans:lang(zh-Latn),.sans:lang(ja-Latn),.sans:not(:lang(zh)):not(:lang(ja)),.sans *:lang(zh-Latn),.sans *:lang(ja-Latn),.sans *:not(:lang(zh)):not(:lang(ja)){font-family:"Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}html:lang(zh),html:lang(zh-Hant),[lang^='zh'],[lang*='Hant'],[lang='zh-TW'],[lang='zh-HK'],article strong:lang(zh),article strong:lang(zh-Hant),.sans:lang(zh),.sans:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}html:lang(zh-Hans),html:lang(zh-CN),[lang*='Hans'],[lang='zh-CN'],article strong:lang(zh-Hans),article strong:lang(zh-CN),.sans:lang(zh-Hans),.sans:lang(zh-CN){font-family:"Biaodian Pro Sans GB","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}html:lang(ja),[lang^='ja'],article strong:lang(ja),.sans:lang(ja){font-family:"Yakumono Sans","Helvetica Neue",Helvetica,Arial,sans-serif}article blockquote i:lang(zh-Latn),article blockquote i:lang(ja-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote i *:lang(zh-Latn),article blockquote i *:lang(ja-Latn),article blockquote i *:not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(zh-Latn),article blockquote var:lang(ja-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)),article blockquote var *:lang(zh-Latn),article blockquote var *:lang(ja-Latn),article blockquote var *:not(:lang(zh)):not(:lang(ja)),.sans-italic:lang(zh-Latn),.sans-italic:lang(ja-Latn),.sans-italic:not(:lang(zh)):not(:lang(ja)),.sans-italic *:lang(zh-Latn),.sans-italic *:lang(ja-Latn),.sans-italic *:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant),.sans-italic:lang(zh),.sans-italic:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}article blockquote i:lang(zh-Hans),article blockquote i:lang(zh-CN),article blockquote var:lang(zh-Hans),article blockquote var:lang(zh-CN),.sans-italic:lang(zh-Hans),.sans-italic:lang(zh-CN){font-family:"Biaodian Pro Sans GB","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}article blockquote i:lang(ja),article blockquote var:lang(ja),.sans-italic:lang(ja){font-family:"Yakumono Sans","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,sans-serif}article figure blockquote:lang(zh-Latn),article figure blockquote:lang(ja-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)),article figure blockquote *:lang(zh-Latn),article figure blockquote *:lang(ja-Latn),article figure blockquote *:not(:lang(zh)):not(:lang(ja)),figure blockquote:lang(zh-Latn),figure blockquote:lang(ja-Latn),figure blockquote:not(:lang(zh)):not(:lang(ja)),figure blockquote *:lang(zh-Latn),figure blockquote *:lang(ja-Latn),figure blockquote *:not(:lang(zh)):not(:lang(ja)),.serif:lang(zh-Latn),.serif:lang(ja-Latn),.serif:not(:lang(zh)):not(:lang(ja)),.serif *:lang(zh-Latn),.serif *:lang(ja-Latn),.serif *:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Songti",cursive,serif}article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant),figure blockquote:lang(zh),figure blockquote:lang(zh-Hant),.serif:lang(zh),.serif:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Songti",serif}article figure blockquote:lang(zh-Hans),article figure blockquote:lang(zh-CN),figure blockquote:lang(zh-Hans),figure blockquote:lang(zh-CN),.serif:lang(zh-Hans),.serif:lang(zh-CN){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Songti GB",serif}article figure blockquote:lang(ja),figure blockquote:lang(ja),.serif:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",serif}article blockquote:lang(zh-Latn),article blockquote:lang(ja-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)),article blockquote *:lang(zh-Latn),article blockquote *:lang(ja-Latn),article blockquote *:not(:lang(zh)):not(:lang(ja)),.cursive:lang(zh-Latn),.cursive:lang(ja-Latn),.cursive:not(:lang(zh)):not(:lang(ja)),.cursive *:lang(zh-Latn),.cursive *:lang(ja-Latn),.cursive *:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Kaiti",cursive,serif}article blockquote:lang(zh),article blockquote:lang(zh-Hant),.cursive:lang(zh),.cursive:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}article blockquote:lang(zh-Hans),article blockquote:lang(zh-CN),.cursive:lang(zh-Hans),.cursive:lang(zh-CN){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}article blockquote:lang(ja),.cursive:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",cursive,serif}i:lang(zh-Latn),i:lang(ja-Latn),i:not(:lang(zh)):not(:lang(ja)),i *:lang(zh-Latn),i *:lang(ja-Latn),i *:not(:lang(zh)):not(:lang(ja)),var:lang(zh-Latn),var:lang(ja-Latn),var:not(:lang(zh)):not(:lang(ja)),var *:lang(zh-Latn),var *:lang(ja-Latn),var *:not(:lang(zh)):not(:lang(ja)),.cursive-italic:lang(zh-Latn),.cursive-italic:lang(ja-Latn),.cursive-italic:not(:lang(zh)):not(:lang(ja)),.cursive-italic *:lang(zh-Latn),.cursive-italic *:lang(ja-Latn),.cursive-italic *:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti",cursive,serif}i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant),.cursive-italic:lang(zh),.cursive-italic:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}i:lang(zh-Hans),i:lang(zh-CN),var:lang(zh-Hans),var:lang(zh-CN),.cursive-italic:lang(zh-Hans),.cursive-italic:lang(zh-CN){font-family:"Biaodian Pro Serif GB","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}i:lang(ja),var:lang(ja),.cursive-italic:lang(ja){font-family:"Yakumono Serif","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman",cursive,serif}code:lang(zh-Latn),code:lang(ja-Latn),code:not(:lang(zh)):not(:lang(ja)),code *:lang(zh-Latn),code *:lang(ja-Latn),code *:not(:lang(zh)):not(:lang(ja)),kbd:lang(zh-Latn),kbd:lang(ja-Latn),kbd:not(:lang(zh)):not(:lang(ja)),kbd *:lang(zh-Latn),kbd *:lang(ja-Latn),kbd *:not(:lang(zh)):not(:lang(ja)),samp:lang(zh-Latn),samp:lang(ja-Latn),samp:not(:lang(zh)):not(:lang(ja)),samp *:lang(zh-Latn),samp *:lang(ja-Latn),samp *:not(:lang(zh)):not(:lang(ja)),pre:lang(zh-Latn),pre:lang(ja-Latn),pre:not(:lang(zh)):not(:lang(ja)),pre *:lang(zh-Latn),pre *:lang(ja-Latn),pre *:not(:lang(zh)):not(:lang(ja)),.mono:lang(zh-Latn),.mono:lang(ja-Latn),.mono:not(:lang(zh)):not(:lang(ja)),.mono *:lang(zh-Latn),.mono *:lang(ja-Latn),.mono *:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,"Han Heiti",monospace,monospace,sans-serif}code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant),.mono:lang(zh),.mono:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS",Menlo,Consolas,Courier,"Zhuyin Heiti","Han Heiti",monospace,monospace,sans-serif}code:lang(zh-Hans),code:lang(zh-CN),kbd:lang(zh-Hans),kbd:lang(zh-CN),samp:lang(zh-Hans),samp:lang(zh-CN),pre:lang(zh-Hans),pre:lang(zh-CN),.mono:lang(zh-Hans),.mono:lang(zh-CN){font-family:"Biaodian Pro Sans GB",Menlo,Consolas,Courier,"Han Heiti GB",monospace,monospace,sans-serif}code:lang(ja),kbd:lang(ja),samp:lang(ja),pre:lang(ja),.mono:lang(ja){font-family:"Yakumono Sans",Menlo,Consolas,Courier,monospace,monospace,sans-serif}html,ruby ru[zhuyin] zhuyin,ruby ru[zhuyin] zhuyin diao,hruby ru[zhuyin] zhuyin,hruby ru[zhuyin] zhuyin diao,ruby.romanization rt,ruby ru[annotation]:before,hruby.romanization rt,hruby ru[annotation]:before,.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode='b7']{-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga";-webkit-font-feature-settings:"liga";font-feature-settings:"liga"}ruby ru[zhuyin] zhuyin diao,hruby ru[zhuyin] zhuyin diao{font-family:"Zhuyin Kaiti",cursive,serif}ruby.romanization rt,ruby ru[annotation]:before,hruby.romanization rt,hruby ru[annotation]:before{font-family:"Romanization Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}.no-kaiti i,.no-kaiti var{padding-bottom:0.05em;border-bottom:3px double #d3d3d3}article{line-height:1.7}article p,article li{text-align:justify;text-justify:inter-ideograph}article h1+blockquote,article h1+p,article h1+ol,article h1+ul,article h1+h6,article h1+section>h6:first-child,article h1+section>p:first-child,article h1+section>ol:first-child,article h1+section>ul:first-child,article h1+section>blockquote:first-child,article h2+blockquote,article h2+p,article h2+ol,article h2+ul,article h2+h6,article h2+section>h6:first-child,article h2+section>p:first-child,article h2+section>ol:first-child,article h2+section>ul:first-child,article h2+section>blockquote:first-child,article h3+blockquote,article h3+p,article h3+ol,article h3+ul,article h3+h6,article h3+section>h6:first-child,article h3+section>p:first-child,article h3+section>ol:first-child,article h3+section>ul:first-child,article h3+section>blockquote:first-child,article h4+blockquote,article h4+p,article h4+ol,article h4+ul,article h4+h6,article h4+section>h6:first-child,article h4+section>p:first-child,article h4+section>ol:first-child,article h4+section>ul:first-child,article h4+section>blockquote:first-child,article h5+blockquote,article h5+p,article h5+ol,article h5+ul,article h5+h6,article h5+section>h6:first-child,article h5+section>p:first-child,article h5+section>ol:first-child,article h5+section>ul:first-child,article h5+section>blockquote:first-child,article h6+blockquote,article h6+p,article h6+ol,article h6+ul,article h6+h6,article h6+section>h6:first-child,article h6+section>p:first-child,article h6+section>ol:first-child,article h6+section>ul:first-child,article h6+section>blockquote:first-child,article h1+h5,article h1+section>h5:first-child,article h2+h5,article h2+section>h5:first-child,article h3+h5,article h3+section>h5:first-child,article h4+h5,article h4+section>h5:first-child,article h5+h5,article h5+section>h5:first-child,article h1+h4,article h1+section>h4:first-child,article h2+h4,article h2+section>h4:first-child,article h3+h4,article h3+section>h4:first-child,article h4+h4,article h4+section>h4:first-child,article h1+h3,article h1+section>h3:first-child,article h2+h3,article h2+section>h3:first-child,article h3+h3,article h3+section>h3:first-child,article h1+h2,article h1+section>h2:first-child,article h2+h2,article h2+section>h2:first-child{margin-top:-1em}p.poem-like,.poem-like p{margin-left:2em}@media only screen and (max-width: 480px){p.poem-like,.poem-like p{margin-left:1em}}article blockquote{margin-right:0}@media only screen and (max-width: 480px){article blockquote{margin-left:1em}}figure blockquote{margin:0}blockquote blockquote{margin-left:1em;margin-right:1em}article blockquote blockquote{margin-right:0}@media only screen and (max-width: 480px){blockquote,figure{margin-left:1em;margin-right:1em}}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode='b7']{font-family:"Biaodian Basic","Han Heiti"}hws{display:inline;visibility:hidden;font-family:Arial,sans-serif !important;font-size:0.89em}code hws,kbd hws,samp hws,pre hws,ol>hws,ul>hws{display:none}char_group .open:not(:last-child),char_group .close:not(:last-child),char_group [unicode='3001']:not(:last-child),char_group [unicode='3002']:not(:last-child),char_group [unicode='ff0c']:not(:last-child),char_group [unicode='ff08']:not(:last-child){letter-spacing:-0.5em}char_group [unicode='b7']+[unicode='300c'],char_group [unicode='b7']+[unicode='300e'],char_group [unicode='30fb']+[unicode='300c'],char_group [unicode='30fb']+[unicode='300e']{margin-left:-0.5em}char_group .liga+[unicode='300c'],char_group .liga+[unicode='300e']{margin-left:-0.25em}char[display-as]{position:relative;display:inline-block}char[display-as] inner{color:transparent}char[display-as]:after{position:absolute;left:0;display:inline-block;content:attr(display-as)}char[display-as].comb-liga:after{font-family:"Romanization Sans","Zhuyin Kaiti"} +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{line-height:1.3;-webkit-font-smoothing:subpixel-antialiased}ol,ul{padding-left:2em}blockquote,figure{margin-left:2em;margin-right:2em}address{font-style:inherit}pre{white-space:pre;word-wrap:normal}a{text-decoration:inherit}em:lang(ja),em:lang(zh){-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;font-style:inherit;border-bottom:2px dotted;padding-bottom:.05em;border-bottom-width:-webkit-calc(0px);padding-bottom:-webkit-calc(0px)}em:lang(ja){-moz-text-emphasis:filled sesame;-webkit-text-emphasis:filled sesame;text-emphasis:filled sesame;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}b,dfn:lang(ja),dfn:lang(zh),strong{font-weight:bolder}cite:lang(ja),cite:lang(zh),dfn:lang(ja),dfn:lang(zh){font-style:inherit}q{quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(zh){quotes:'\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f'}q:lang(en),q:lang(zh-CN){quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(en-GB){quotes:'\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d'}q:before{content:open-quote}q:after{content:close-quote}q:lang(ja):after,q:lang(ja):before{content:none}code,kbd,pre,samp{font-family:monospace,monospace,sans-serif}i:lang(ja),i:lang(zh),var:lang(ja),var:lang(zh){font-style:inherit}.han-js-rendered del+del.adjacent,.han-js-rendered del+s.adjacent,.han-js-rendered ins.adjacent,.han-js-rendered s+del.adjacent,.han-js-rendered s+s.adjacent,.han-js-rendered u.adjacent,del+del,del+s,ins+ins,ins+u,s+del,s+s,u+ins,u+u{margin-left:.125em}ins,u{padding-bottom:.05em;border-bottom:1px solid;text-decoration:none}ruby :after,ruby :before{line-height:normal}ruby>rt:not(:empty):before{content:'\ff08'}ruby>rt:not(:empty):after{content:'\ff09'}ruby>rb+rtc:before{content:'\ff08'}ruby>rtc:after{content:'\ff0c'}ruby>rtc:last-of-type:after{content:'\ff09'}ruby>rt:after,ruby>rt:before{display:inline-block;overflow:hidden;vertical-align:middle;height:0;width:0}ruby>rt:not(:empty):after,ruby>rt:not(:empty):before{height:-moz-calc(1.3em);width:-moz-calc(1em)}.han-js-rendered del+del,.han-js-rendered del+s,.han-js-rendered ins+ins,.han-js-rendered ins+u,.han-js-rendered s+del,.han-js-rendered s+s,.han-js-rendered u+ins,.han-js-rendered u+u{margin-left:auto}.han-js-rendered em:lang(ja),.han-js-rendered em:lang(zh){padding-bottom:auto;border-bottom-width:0}.no-textemphasis em:lang(ja),.no-textemphasis em:lang(zh){line-height:2}.no-textemphasis em:lang(ja) char,.no-textemphasis em:lang(zh) char{position:relative;font-style:inherit}.no-textemphasis em:lang(ja) char:after,.no-textemphasis em:lang(zh) char:after{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;text-decoration:none;-moz-transform:scale(0.5);-ms-transform:scale(0.5);-webkit-transform:scale(0.5);transform:scale(0.5);position:absolute;left:50%;top:0;margin-left:-250%;overflow:hidden;display:inline-block;height:1em;width:500%;line-height:1;text-align:center;text-indent:0;font-family:Georgia,'Times New Roman',Arial,!important}em:lang(ja) char.biaodian,em:lang(ja) char.punct,em:lang(zh) char.biaodian,em:lang(zh) char.punct{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none}.no-textemphasis em:lang(ja) char.biaodian:after,.no-textemphasis em:lang(ja) char.punct:after,.no-textemphasis em:lang(zh) char.biaodian:after,.no-textemphasis em:lang(zh) char.punct:after{content:none!important}.no-textemphasis em:lang(zh) char:after{margin-top:1em;content:'\25cf'}.no-textemphasis em:lang(ja) char:after{margin-top:-.7em;content:'\fe45'}hruby{display:inline;line-height:2}hruby rp{display:none}hruby ru[annotation]>rt{display:inline-block;height:0;width:0;font:0/0 hidden-text}hruby ru{position:relative;display:inline-block;text-indent:0}hruby ru:before,hruby zhuyin{-moz-transform:scale(0.55);-ms-transform:scale(0.55);-webkit-transform:scale(0.55);transform:scale(0.55);-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;line-height:normal;text-decoration:none;text-indent:0;position:absolute;display:inline-block}hruby ru[annotation]{text-align:center}hruby ru[annotation]:before{left:-265%;vertical-align:top;height:1em;width:600%;content:attr(annotation);line-height:1;text-align:center;text-indent:0}hruby[rightangle] ru[annotation]:before{left:-250%}hruby ru[zhuyin]{display:inline-block;position:relative;width:1.8em;text-align:left}hruby ru[zhuyin] zhuyin{right:.2em;top:0;height:2.7em;width:.8em;line-height:.9;white-space:pre-wrap;word-break:break-all}hruby ru[zhuyin] diao{position:absolute;right:-.9em;top:0;display:inline-block;width:1em}hruby ru[zhuyin]:empty,hruby ru[zhuyin][length='0']{width:auto}hruby ru[zhuyin]:empty zhuyin,hruby ru[zhuyin][length='0'] zhuyin{display:none}hruby ru[zhuyin][length='1'] zhuyin{margin-top:.125em}hruby ru[zhuyin][length='1'] diao{margin-top:-.35em}hruby ru[zhuyin][length='2'] zhuyin{margin-top:-.175em}hruby ru[zhuyin][length='2'] diao{margin-top:.5em}hruby ru[zhuyin][length='3'] zhuyin{margin-top:-.45em}hruby ru[zhuyin][length='3'] diao{margin-top:1.3em}hruby ru[zhuyin][diao='˙'] diao{right:-.35em}hruby ru[zhuyin][diao='˙'][length='1'] diao{margin-top:-.5em}hruby ru[zhuyin][diao='˙'][length='2'] diao{margin-top:-.3em}hruby ru[zhuyin][diao='˙'][length='3'] diao{margin-top:-.25em}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1.2);-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2);margin-right:-.25em}hruby ru[zhuyin][diao='󳆴'] diao,hruby ru[zhuyin][diao='󳆵'] diao,hruby ru[zhuyin][diao='󳆶'] diao,hruby ru[zhuyin][diao='󳆷'] diao,hruby ru[zhuyin][diao^='ㆴ'] diao,hruby ru[zhuyin][diao^='ㆵ'] diao,hruby ru[zhuyin][diao^='ㆶ'] diao,hruby ru[zhuyin][diao^='ㆷ'] diao{top:20%;margin-right:-.3em}hruby ru[annotation]:before,hruby[rightangle] ru[annotation][order='1']:before{top:-.5em}hruby ru[order='1']:before,hruby[rightangle] ru[annotation][order='0']:before{bottom:-.4em;top:auto}hruby[rightangle] ru[annotation]:before{margin-left:-.4em}@media screen and (-webkit-min-device-pixel-ratio:1.5),(min-resolution:192dpi){hruby yin{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);display:inline-block}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}hruby ru[zhuyin][diao='˙'] diao{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);top:.125em}}jinze{display:inline-block;text-indent:0}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';font-weight:600;src:local('YuGothic Bold'),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';font-weight:600;src:local('YuGothic Bold'),local(YuGo-Bold),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti GB';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold);unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Heiti SC Medium'),local('Microsoft YaHei Bold'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold);unicode-range:U+270C}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSong),local('Lisong Pro'),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho')}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local(PMingLiU),local(SimSun)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro')}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti SC Bold'),local('STSongti TC Bold'),local(STSongti-SC-Bold),local(STSongti-TC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti GB';font-weight:600;src:local('STSongti SC Bold'),local(STSongti-SC-Bold)}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSongti),local('Lisong Pro'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+270C}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local('MS Mincho'),local(PMingLiU),local(SimSun);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+270C}@font-face{font-family:cursive;src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti';src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti CNS';src:local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti GB';src:local('Kaiti SC'),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti GB';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong CNS';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong GB';src:local(STFangsong),local(FangSong)}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Arial Unicode MS'),local('MS Gothic');unicode-range:U+2014}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho'),local('Microsoft Yahei');unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic');unicode-range:U+2026}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Lisong Pro'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU),local('MS Gothic');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(STSongti-TC-Regular),local('Lisong Pro'),local('Heiti TC'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSongti),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Basic';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:'Biaodian Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Latin Italic Serif';src:local('Georgia Italic'),local('Times New Roman Italic'),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Serif';font-weight:700;src:local('Georgia Bold Italic'),local('Times New Roman Bold Italic'),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:'Latin Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Sans';src:local(Skia),local('Neutraface 2 Text'),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Serif';src:local(Georgia),local('Hoefler Text'),local('Big Caslon')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Italic Serif';src:local('Georgia Italic'),local('Hoefler Text Italic'),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Sans';src:local('Helvetica Neue'),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Serif';src:local(Palatino),local('Palatino Linotype'),local('Times New Roman')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';src:local('Palatino Italic'),local('Palatino Italic Linotype'),local('Times New Roman Italic'),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';font-weight:700;src:local('Palatino Bold Italic'),local('Palatino Bold Italic Linotype'),local('Times New Roman Bold Italic'),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{font-family:'Numeral TF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Kaiti'}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Heiti';src:local('Hiragino Sans GB'),local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype')}@font-face{font-family:'Zhuyin Heiti';src:local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3127}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Zhuyin Heiti';unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Romanization Sans';unicode-range:U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}.sans :lang(ja-Latn),.sans :lang(zh-Latn),.sans :not(:lang(zh)):not(:lang(ja)),.sans:lang(ja-Latn),.sans:lang(zh-Latn),.sans:not(:lang(zh)):not(:lang(ja)),article strong :lang(ja-Latn),article strong :lang(zh-Latn),article strong :not(:lang(zh)):not(:lang(ja)),article strong:lang(ja-Latn),article strong:lang(zh-Latn),article strong:not(:lang(zh)):not(:lang(ja)),html :lang(ja-Latn),html :lang(zh-Latn),html :not(:lang(zh)):not(:lang(ja)),html:lang(ja-Latn),html:lang(zh-Latn),html:not(:lang(zh)):not(:lang(ja)){font-family:'Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}.sans:lang(zh),.sans:lang(zh-Hant),[lang*=Hant],[lang=zh-HK],[lang=zh-TW],[lang^=zh],article strong:lang(zh),article strong:lang(zh-Hant),html:lang(zh),html:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}.sans:lang(zh-CN),.sans:lang(zh-Hans),[lang*=Hans],[lang=zh-CN],article strong:lang(zh-CN),article strong:lang(zh-Hans),html:lang(zh-CN),html:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}.sans:lang(ja),[lang^=ja],article strong:lang(ja),html:lang(ja){font-family:'Yakumono Sans','Helvetica Neue',Helvetica,Arial,sans-serif}.sans-italic :lang(ja-Latn),.sans-italic :lang(zh-Latn),.sans-italic :not(:lang(zh)):not(:lang(ja)),.sans-italic:lang(ja-Latn),.sans-italic:lang(zh-Latn),.sans-italic:not(:lang(zh)):not(:lang(ja)),article blockquote i :lang(ja-Latn),article blockquote i :lang(zh-Latn),article blockquote i :not(:lang(zh)):not(:lang(ja)),article blockquote i:lang(ja-Latn),article blockquote i:lang(zh-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote var :lang(ja-Latn),article blockquote var :lang(zh-Latn),article blockquote var :not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(ja-Latn),article blockquote var:lang(zh-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}.sans-italic:lang(zh),.sans-italic:lang(zh-Hant),article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}.sans-italic:lang(zh-CN),.sans-italic:lang(zh-Hans),article blockquote i:lang(zh-CN),article blockquote i:lang(zh-Hans),article blockquote var:lang(zh-CN),article blockquote var:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}.sans-italic:lang(ja),article blockquote i:lang(ja),article blockquote var:lang(ja){font-family:'Yakumono Sans','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,sans-serif}.serif :lang(ja-Latn),.serif :lang(zh-Latn),.serif :not(:lang(zh)):not(:lang(ja)),.serif:lang(ja-Latn),.serif:lang(zh-Latn),.serif:not(:lang(zh)):not(:lang(ja)),article figure blockquote :lang(ja-Latn),article figure blockquote :lang(zh-Latn),article figure blockquote :not(:lang(zh)):not(:lang(ja)),article figure blockquote:lang(ja-Latn),article figure blockquote:lang(zh-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)),figure blockquote :lang(ja-Latn),figure blockquote :lang(zh-Latn),figure blockquote :not(:lang(zh)):not(:lang(ja)),figure blockquote:lang(ja-Latn),figure blockquote:lang(zh-Latn),figure blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Songti',cursive,serif}.serif:lang(zh),.serif:lang(zh-Hant),article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant),figure blockquote:lang(zh),figure blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Songti',serif}.serif:lang(zh-CN),.serif:lang(zh-Hans),article figure blockquote:lang(zh-CN),article figure blockquote:lang(zh-Hans),figure blockquote:lang(zh-CN),figure blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Songti GB',serif}.serif:lang(ja),article figure blockquote:lang(ja),figure blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',serif}.cursive :lang(ja-Latn),.cursive :lang(zh-Latn),.cursive :not(:lang(zh)):not(:lang(ja)),.cursive:lang(ja-Latn),.cursive:lang(zh-Latn),.cursive:not(:lang(zh)):not(:lang(ja)),article blockquote :lang(ja-Latn),article blockquote :lang(zh-Latn),article blockquote :not(:lang(zh)):not(:lang(ja)),article blockquote:lang(ja-Latn),article blockquote:lang(zh-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Kaiti',cursive,serif}.cursive:lang(zh),.cursive:lang(zh-Hant),article blockquote:lang(zh),article blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}.cursive:lang(zh-CN),.cursive:lang(zh-Hans),article blockquote:lang(zh-CN),article blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}.cursive:lang(ja),article blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',cursive,serif}.cursive-italic :lang(ja-Latn),.cursive-italic :lang(zh-Latn),.cursive-italic :not(:lang(zh)):not(:lang(ja)),.cursive-italic:lang(ja-Latn),.cursive-italic:lang(zh-Latn),.cursive-italic:not(:lang(zh)):not(:lang(ja)),i :lang(ja-Latn),i :lang(zh-Latn),i :not(:lang(zh)):not(:lang(ja)),i:lang(ja-Latn),i:lang(zh-Latn),i:not(:lang(zh)):not(:lang(ja)),var :lang(ja-Latn),var :lang(zh-Latn),var :not(:lang(zh)):not(:lang(ja)),var:lang(ja-Latn),var:lang(zh-Latn),var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti',cursive,serif}.cursive-italic:lang(zh),.cursive-italic:lang(zh-Hant),i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}.cursive-italic:lang(zh-CN),.cursive-italic:lang(zh-Hans),i:lang(zh-CN),i:lang(zh-Hans),var:lang(zh-CN),var:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}.cursive-italic:lang(ja),i:lang(ja),var:lang(ja){font-family:'Yakumono Serif','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman',cursive,serif}.mono :lang(ja-Latn),.mono :lang(zh-Latn),.mono :not(:lang(zh)):not(:lang(ja)),.mono:lang(ja-Latn),.mono:lang(zh-Latn),.mono:not(:lang(zh)):not(:lang(ja)),code :lang(ja-Latn),code :lang(zh-Latn),code :not(:lang(zh)):not(:lang(ja)),code:lang(ja-Latn),code:lang(zh-Latn),code:not(:lang(zh)):not(:lang(ja)),kbd :lang(ja-Latn),kbd :lang(zh-Latn),kbd :not(:lang(zh)):not(:lang(ja)),kbd:lang(ja-Latn),kbd:lang(zh-Latn),kbd:not(:lang(zh)):not(:lang(ja)),pre :lang(ja-Latn),pre :lang(zh-Latn),pre :not(:lang(zh)):not(:lang(ja)),pre:lang(ja-Latn),pre:lang(zh-Latn),pre:not(:lang(zh)):not(:lang(ja)),samp :lang(ja-Latn),samp :lang(zh-Latn),samp :not(:lang(zh)):not(:lang(ja)),samp:lang(ja-Latn),samp:lang(zh-Latn),samp:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,'Han Heiti',monospace,monospace,sans-serif}.mono:lang(zh),.mono:lang(zh-Hant),code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS',Menlo,Consolas,Courier,'Zhuyin Heiti','Han Heiti',monospace,monospace,sans-serif}.mono:lang(zh-CN),.mono:lang(zh-Hans),code:lang(zh-CN),code:lang(zh-Hans),kbd:lang(zh-CN),kbd:lang(zh-Hans),pre:lang(zh-CN),pre:lang(zh-Hans),samp:lang(zh-CN),samp:lang(zh-Hans){font-family:'Biaodian Pro Sans GB',Menlo,Consolas,Courier,'Han Heiti GB',monospace,monospace,sans-serif}.mono:lang(ja),code:lang(ja),kbd:lang(ja),pre:lang(ja),samp:lang(ja){font-family:'Yakumono Sans',Menlo,Consolas,Courier,monospace,monospace,sans-serif}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7],hruby ru[annotation]:before,hruby ru[zhuyin] zhuyin,hruby ru[zhuyin] zhuyin diao,hruby.romanization rt,html,ruby ru[annotation]:before,ruby ru[zhuyin] zhuyin,ruby ru[zhuyin] zhuyin diao,ruby.romanization rt{-moz-font-feature-settings:'liga';-ms-font-feature-settings:'liga';-webkit-font-feature-settings:'liga';font-feature-settings:'liga'}i,var{font-style:inherit}hruby ru[zhuyin] zhuyin diao,ruby ru[zhuyin] zhuyin diao{font-family:'Zhuyin Kaiti',cursive,serif}hruby ru[annotation]:before,hruby.romanization rt,ruby ru[annotation]:before,ruby.romanization rt{font-family:'Romanization Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}.no-kaiti i,.no-kaiti var{padding-bottom:.05em;border-bottom:3px double lightgrey}article{line-height:1.7}article li,article p{text-align:justify;text-justify:inter-ideograph}article h1+blockquote,article h1+h2,article h1+h3,article h1+h4,article h1+h5,article h1+h6,article h1+ol,article h1+p,article h1+section>blockquote:first-child,article h1+section>h2:first-child,article h1+section>h3:first-child,article h1+section>h4:first-child,article h1+section>h5:first-child,article h1+section>h6:first-child,article h1+section>ol:first-child,article h1+section>p:first-child,article h1+section>ul:first-child,article h1+ul,article h2+blockquote,article h2+h2,article h2+h3,article h2+h4,article h2+h5,article h2+h6,article h2+ol,article h2+p,article h2+section>blockquote:first-child,article h2+section>h2:first-child,article h2+section>h3:first-child,article h2+section>h4:first-child,article h2+section>h5:first-child,article h2+section>h6:first-child,article h2+section>ol:first-child,article h2+section>p:first-child,article h2+section>ul:first-child,article h2+ul,article h3+blockquote,article h3+h3,article h3+h4,article h3+h5,article h3+h6,article h3+ol,article h3+p,article h3+section>blockquote:first-child,article h3+section>h3:first-child,article h3+section>h4:first-child,article h3+section>h5:first-child,article h3+section>h6:first-child,article h3+section>ol:first-child,article h3+section>p:first-child,article h3+section>ul:first-child,article h3+ul,article h4+blockquote,article h4+h4,article h4+h5,article h4+h6,article h4+ol,article h4+p,article h4+section>blockquote:first-child,article h4+section>h4:first-child,article h4+section>h5:first-child,article h4+section>h6:first-child,article h4+section>ol:first-child,article h4+section>p:first-child,article h4+section>ul:first-child,article h4+ul,article h5+blockquote,article h5+h5,article h5+h6,article h5+ol,article h5+p,article h5+section>blockquote:first-child,article h5+section>h5:first-child,article h5+section>h6:first-child,article h5+section>ol:first-child,article h5+section>p:first-child,article h5+section>ul:first-child,article h5+ul,article h6+blockquote,article h6+h6,article h6+ol,article h6+p,article h6+section>blockquote:first-child,article h6+section>h6:first-child,article h6+section>ol:first-child,article h6+section>p:first-child,article h6+section>ul:first-child,article h6+ul{margin-top:-1em}.poem-like p,p.poem-like{margin-left:2em}@media only screen and (max-width:480px){.poem-like p,p.poem-like{margin-left:1em}}article blockquote{margin-right:0}@media only screen and (max-width:480px){article blockquote{margin-left:1em}}figure blockquote{margin:0}blockquote blockquote{margin-left:1em;margin-right:1em}article blockquote blockquote{margin-right:0}@media only screen and (max-width:480px){blockquote,figure{margin-left:1em;margin-right:1em}}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7]{font-family:'Biaodian Basic','Han Heiti'}hws{display:inline;visibility:hidden;font-family:Arial,sans-serif!important;font-size:.89em}code hws,kbd hws,ol>hws,pre hws,samp hws,table>hws,tbody>hws,tfoot>hws,thead>hws,tr>hws,ul>hws{display:none}char_group .close:not(:last-child),char_group .open:not(:last-child),char_group [unicode='3001']:not(:last-child),char_group [unicode='3002']:not(:last-child),char_group [unicode=ff08]:not(:last-child),char_group [unicode=ff0c]:not(:last-child){letter-spacing:-.5em}char_group [unicode='3001']:lang(zh-Hant):not(:last-child),char_group [unicode='3002']:lang(zh-Hant):not(:last-child),char_group [unicode=ff08]:lang(zh-Hant):not(:last-child),char_group [unicode=ff0c]:lang(zh-Hant):not(:last-child){letter-spacing:inherit}char_group [unicode='3001']:lang(zh-Hant)+.open,char_group [unicode='3002']:lang(zh-Hant)+.open,char_group [unicode='30fb']+[unicode='300c'],char_group [unicode='30fb']+[unicode='300e'],char_group [unicode=b7]+[unicode='300c'],char_group [unicode=b7]+[unicode='300e'],char_group [unicode=ff08]:lang(zh-Hant)+.open,char_group [unicode=ff0c]:lang(zh-Hant)+.open{margin-left:-.5em}char_group .liga+[unicode='300c'],char_group .liga+[unicode='300e']{margin-left:-.25em}char[display-as]{position:relative;display:inline-block}char[display-as] inner{color:transparent}char[display-as]:after{position:absolute;left:0;display:inline-block;content:attr(display-as)}char[display-as].comb-liga:after{font-family:'Romanization Sans','Zhuyin Kaiti'} \ No newline at end of file diff --git a/latest/generics-han.scss b/latest/generics-han.scss new file mode 100644 index 00000000..1a13099b --- /dev/null +++ b/latest/generics-han.scss @@ -0,0 +1,45 @@ +// ** +// * Generic typefaces for Western (Latin-based) +// * characters +// * +$mre-sans: "Helvetica Neue", Helvetica, Arial !default; +$mre-serif: Georgia, "Times New Roman" !default; +$mre-cursive: "Apple Chancery", "Snell Roundhand" !default; +$mre-mono: Menlo, Consolas, Courier !default; + +// ** +// * Generic typefaces for Chinese +// * +$mre-sans-zh: "" !default; +$mre-serif-zh: "" !default; +$mre-cursive-zh: "" !default; +$mre-mono-zh: $mre-sans-zh !default; + +// ** +// * Import Han module +// * +@import "../src/sass/han"; + +.sans { + @include han-typeface-by-lang(sans); +} + +.sans-italic { + @include han-typeface-by-lang(sans-italic); +} + +.mono { + @include han-typeface-by-lang(mono); +} + +.serif { + @include han-typeface-by-lang(serif); +} + +.cursive { + @include han-typeface-by-lang(cursive); +} + +.cursive-italic { + @include han-typeface-by-lang(cursive-italic); +} diff --git a/latest/generics.html b/latest/generics.html index 0222791b..22cc5853 100644 --- a/latest/generics.html +++ b/latest/generics.html @@ -1,56 +1,14 @@ - - - - - 測試・字體基型(typeface generics)與@extend — 漢字標準格式 - - - - - - - -
-

測試·字體基型與@extend

-

提示:「漢字標準格式」提供了四類字體基型、二個子基型共六種字體@extend在預設的語意元素修正外,更可經由Sass模組來擴展選擇器,避免字體的重覆宣告。 -

-

提示二:本測試頁展示其他地區變體,詳見使用手冊

-
-

無襯線字體、黑體

-

LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

-

西文無襯線意大利體、黑體

-

LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

-
-
-

等寬字體、黑體

-

LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

-
-
-

襯線字體、宋體

-

LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

-
-
-

手寫字體、楷體

-

LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

-

西文襯線意大利體、楷體

-

LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

-
- -
- - \ No newline at end of file +測試・字體基型(typeface generics)與@extend — 漢字標準格式

測試·字體基型與@extend

提示:「漢字標準格式」提供了四類字體基型、二個子基型共六種字體@extend在預設的語意元素修正外,更可經由Sass模組來擴展選擇器,避免字體的重覆宣告。

提示二:本測試頁展示其他地區變體,詳見使用手冊

無襯線字體、黑體

LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

西文無襯線意大利體、黑體

LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

等寬字體、黑體

LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

襯線字體、宋體

LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

手寫字體、楷體

LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

西文襯線意大利體、楷體

LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

\ No newline at end of file diff --git a/latest/han.css b/latest/han.css index d1265101..4fef6b91 100644 --- a/latest/han.css +++ b/latest/han.css @@ -1,6 +1,8 @@ @charset "UTF-8"; -/*! 漢字標準格式 v3.0.2 | MIT License | css.hanzi.co */ -/*! Han: CSS typography framework optimised for Hanzi */ + +/*! 漢字標準格式 v3.1.0 | MIT License | css.hanzi.co */ +/*! Han.css: the CSS typography framework optimised for Hanzi */ + /*! normalize.css v3.0.2 | MIT License | git.io/normalize */ /** * 1. Set default font family to sans-serif. @@ -126,7 +128,7 @@ dfn { */ h1 { font-size: 2em; - margin: 0.67em 0; + margin: .67em 0; } /** @@ -156,11 +158,11 @@ sup { } sup { - top: -0.5em; + top: -.5em; } sub { - bottom: -0.25em; + bottom: -.25em; } /* Embedded content @@ -355,7 +357,7 @@ input[type="search"]::-webkit-search-decoration { fieldset { border: 1px solid #c0c0c0; margin: 0 2px; - padding: 0.35em 0.625em 0.75em; + padding: .35em .625em .75em; } /** @@ -399,15 +401,15 @@ th { padding: 0; } -/* Base - * ========================================================================== */ +/* Base + ------ */ html { line-height: 1.3; -webkit-font-smoothing: subpixel-antialiased; } -/* Grouping content - * ========================================================================== */ +/* Grouping content + ------------------ */ /** * Paragraphs, lists, figures and blockquotes * (段落、清單、圖表、區塊引用) @@ -440,8 +442,8 @@ pre { word-wrap: normal; } -/* Text-level semantics & edits - * ========================================================================== */ +/* Text-level semantics & edits + ------------------------------ */ /** * Hyperlinks * (超連結) @@ -454,7 +456,8 @@ a { * Emphases * (強調) */ -em:lang(zh), em:lang(ja) { +em:lang(zh), +em:lang(ja) { -moz-text-emphasis: filled circle; -webkit-text-emphasis: filled circle; text-emphasis: filled circle; @@ -463,9 +466,9 @@ em:lang(zh), em:lang(ja) { text-emphasis-position: under; font-style: inherit; border-bottom: 2px dotted; - padding-bottom: 0.05em; - border-bottom-width: -webkit-calc( 0px ); - padding-bottom: -webkit-calc( 0px ); + padding-bottom: .05em; + border-bottom-width: -webkit-calc( 0px); + padding-bottom: -webkit-calc( 0px); } em:lang(ja) { @@ -495,7 +498,8 @@ b { font-weight: bolder; } -dfn:lang(zh), dfn:lang(ja) { +dfn:lang(zh), +dfn:lang(ja) { font-style: inherit; } @@ -503,21 +507,23 @@ dfn:lang(zh), dfn:lang(ja) { * Cites and quotes * (來源、引用) */ -cite:lang(zh), cite:lang(ja) { +cite:lang(zh), +cite:lang(ja) { font-style: inherit; } q { - quotes: "“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’"; + quotes: "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019"; } q:lang(zh) { - quotes: "「" "」" "『" "』" "「" "」" "『" "』" "「" "」" "『" "』"; + quotes: "\300c" "\300d" "\300e" "\300f" "\300c" "\300d" "\300e" "\300f" "\300c" "\300d" "\300e" "\300f"; } -q:lang(zh-CN), q:lang(en) { - quotes: "“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’"; +q:lang(zh-CN), +q:lang(en) { + quotes: "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019"; } q:lang(en-GB) { - quotes: "‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”"; + quotes: "\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d"; } q:before { content: open-quote; @@ -525,7 +531,8 @@ q:before { q:after { content: close-quote; } -q:lang(ja):before, q:lang(ja):after { +q:lang(ja):before, +q:lang(ja):after { content: none; } @@ -544,7 +551,8 @@ pre { * Alternative voices and variables * (變音文字、變數) */ -i:lang(zh), i:lang(ja), +i:lang(zh), +i:lang(ja), var:lang(zh), var:lang(ja) { font-family: cursive, serif; @@ -555,20 +563,26 @@ var:lang(ja) { * Annotations, inaccurate text, insertion and deletion * (註記、訛訊、增訂、刪訂) */ -u + u, u + ins, +u + u, +u + ins, ins + u, -ins + ins, s + s, s + del, +ins + ins, +s + s, +s + del, del + s, -del + del, .hyu-js-rendered u.adjacent, -.hyu-js-rendered ins.adjacent, .hyu-js-rendered s + s.adjacent, .hyu-js-rendered s + del.adjacent, -.hyu-js-rendered del + s.adjacent, -.hyu-js-rendered del + del.adjacent { - margin-left: 0.125em; +del + del, +.han-js-rendered u.adjacent, +.han-js-rendered ins.adjacent, +.han-js-rendered s + s.adjacent, +.han-js-rendered s + del.adjacent, +.han-js-rendered del + s.adjacent, +.han-js-rendered del + del.adjacent { + margin-left: .125em; } u, ins { - padding-bottom: 0.05em; + padding-bottom: .05em; border-bottom: 1px solid; text-decoration: none; } @@ -582,52 +596,61 @@ ruby *:after { line-height: normal; } ruby > rt:not(:empty):before { - content: "("; + content: "\ff08"; } ruby > rt:not(:empty):after { - content: ")"; + content: "\ff09"; } ruby > rb + rtc:before { - content: "("; + content: "\ff08"; } ruby > rtc:after { - content: ","; + content: "\ff0c"; } ruby > rtc:last-of-type:after { - content: ")"; + content: "\ff09"; } -ruby > rt:before, ruby > rt:after { +ruby > rt:before, +ruby > rt:after { display: inline-block; overflow: hidden; vertical-align: middle; height: 0; width: 0; } -ruby > rt:not(:empty):before, ruby > rt:not(:empty):after { - height: -moz-calc( 1.3em ); - width: -moz-calc( 1em ); -} - -.hyu-js-rendered u + u, .hyu-js-rendered u + ins, -.hyu-js-rendered ins + u, -.hyu-js-rendered ins + ins, .hyu-js-rendered s + s, .hyu-js-rendered s + del, -.hyu-js-rendered del + s, -.hyu-js-rendered del + del { +ruby > rt:not(:empty):before, +ruby > rt:not(:empty):after { + height: -moz-calc( 1.3em); + width: -moz-calc( 1em); +} + +.han-js-rendered u + u, +.han-js-rendered u + ins, +.han-js-rendered ins + u, +.han-js-rendered ins + ins, +.han-js-rendered s + s, +.han-js-rendered s + del, +.han-js-rendered del + s, +.han-js-rendered del + del { margin-left: auto; } -.hyu-js-rendered em:lang(zh), .hyu-js-rendered em:lang(ja) { +.han-js-rendered em:lang(zh), +.han-js-rendered em:lang(ja) { padding-bottom: auto; border-bottom-width: 0; } -.no-textemphasis em:lang(zh), .no-textemphasis em:lang(ja) { +.no-textemphasis em:lang(zh), +.no-textemphasis em:lang(ja) { line-height: 2; } -.no-textemphasis em:lang(zh) char, .no-textemphasis em:lang(ja) char { +.no-textemphasis em:lang(zh) char, +.no-textemphasis em:lang(ja) char { position: relative; font-style: inherit; } -.no-textemphasis em:lang(zh) char:after, .no-textemphasis em:lang(ja) char:after { +.no-textemphasis em:lang(zh) char:after, +.no-textemphasis em:lang(ja) char:after { -moz-text-emphasis: none; -webkit-text-emphasis: none; text-emphasis: none; @@ -636,10 +659,10 @@ ruby > rt:not(:empty):before, ruby > rt:not(:empty):after { line-height: normal; text-decoration: none; text-indent: 0; - -moz-transform: scale(0.5); - -ms-transform: scale(0.5); - -webkit-transform: scale(0.5); - transform: scale(0.5); + -moz-transform: scale(.5); + -ms-transform: scale(.5); + -webkit-transform: scale(.5); + transform: scale(.5); position: absolute; left: 50%; top: 0; @@ -654,26 +677,28 @@ ruby > rt:not(:empty):before, ruby > rt:not(:empty):after { font-family: Georgia, "Times New Roman", Arial, !important; } -em:lang(zh) char.punct, em:lang(ja) char.punct, +em:lang(zh) char.punct, +em:lang(ja) char.punct, em:lang(zh) char.biaodian, em:lang(ja) char.biaodian { -moz-text-emphasis: none; -webkit-text-emphasis: none; text-emphasis: none; } -.no-textemphasis em:lang(zh) char.punct:after, .no-textemphasis em:lang(ja) char.punct:after, .no-textemphasis -em:lang(zh) char.biaodian:after, .no-textemphasis -em:lang(ja) char.biaodian:after { +.no-textemphasis em:lang(zh) char.punct:after, +.no-textemphasis em:lang(ja) char.punct:after, +.no-textemphasis em:lang(zh) char.biaodian:after, +.no-textemphasis em:lang(ja) char.biaodian:after { content: none !important; } .no-textemphasis em:lang(zh) char:after { margin-top: 1em; - content: "●"; + content: "\25cf"; } .no-textemphasis em:lang(ja) char:after { - margin-top: -0.7em; - content: "﹅"; + margin-top: -.7em; + content: "\fe45"; } hruby { @@ -696,10 +721,10 @@ hruby ru { } hruby ru:before, hruby zhuyin { - -moz-transform: scale(0.55); - -ms-transform: scale(0.55); - -webkit-transform: scale(0.55); - transform: scale(0.55); + -moz-transform: scale(.55); + -ms-transform: scale(.55); + -webkit-transform: scale(.55); + transform: scale(.55); -moz-text-emphasis: none; -webkit-text-emphasis: none; text-emphasis: none; @@ -716,7 +741,7 @@ hruby ru[annotation] { } hruby ru[annotation]:before { left: -265%; - top: -0.5em; + top: -.5em; vertical-align: top; height: 1em; width: 600%; @@ -735,99 +760,113 @@ hruby ru[zhuyin] { text-align: left; } hruby ru[zhuyin] zhuyin { - right: 0.2em; + right: .2em; top: 0; height: 2.7em; - width: 0.8em; - line-height: 0.9; + width: .8em; + line-height: .9; white-space: pre-wrap; word-break: break-all; } hruby ru[zhuyin] diao { position: absolute; - right: -0.9em; + right: -.9em; top: 0; display: inline-block; width: 1em; } -hruby ru[zhuyin][length='0'], hruby ru[zhuyin]:empty { +hruby ru[zhuyin][length="0"], +hruby ru[zhuyin]:empty { width: auto; } -hruby ru[zhuyin][length='0'] zhuyin, hruby ru[zhuyin]:empty zhuyin { +hruby ru[zhuyin][length="0"] zhuyin, +hruby ru[zhuyin]:empty zhuyin { display: none; } -hruby ru[zhuyin][length='1'] zhuyin { - margin-top: 0.125em; +hruby ru[zhuyin][length="1"] zhuyin { + margin-top: .125em; } -hruby ru[zhuyin][length='1'] diao { - margin-top: -0.35em; +hruby ru[zhuyin][length="1"] diao { + margin-top: -.35em; } -hruby ru[zhuyin][length='2'] zhuyin { - margin-top: -0.175em; +hruby ru[zhuyin][length="2"] zhuyin { + margin-top: -.175em; } -hruby ru[zhuyin][length='2'] diao { - margin-top: 0.5em; +hruby ru[zhuyin][length="2"] diao { + margin-top: .5em; } -hruby ru[zhuyin][length='3'] zhuyin { - margin-top: -0.45em; +hruby ru[zhuyin][length="3"] zhuyin { + margin-top: -.45em; } -hruby ru[zhuyin][length='3'] diao { +hruby ru[zhuyin][length="3"] diao { margin-top: 1.3em; } -hruby ru[zhuyin][diao='˙'] diao { - right: -0.35em; +hruby ru[zhuyin][diao="˙"] diao { + right: -.35em; } -hruby ru[zhuyin][diao='˙'][length='1'] diao { - margin-top: -0.5em; +hruby ru[zhuyin][diao="˙"][length="1"] diao { + margin-top: -.5em; } -hruby ru[zhuyin][diao='˙'][length='2'] diao { - margin-top: -0.3em; +hruby ru[zhuyin][diao="˙"][length="2"] diao { + margin-top: -.3em; } -hruby ru[zhuyin][diao='˙'][length='3'] diao { - margin-top: -0.25em; +hruby ru[zhuyin][diao="˙"][length="3"] diao { + margin-top: -.25em; } -hruby ru[zhuyin][diao='˪'] diao, hruby ru[zhuyin][diao='˫'] diao { +hruby ru[zhuyin][diao="˪"] diao, +hruby ru[zhuyin][diao="˫"] diao { -moz-transform: scale(1.2); -ms-transform: scale(1.2); -webkit-transform: scale(1.2); transform: scale(1.2); - margin-right: -0.25em; -} -hruby ru[zhuyin][diao^='ㆴ'] diao, hruby ru[zhuyin][diao^='ㆵ'] diao, hruby ru[zhuyin][diao^='ㆶ'] diao, hruby ru[zhuyin][diao^='ㆷ'] diao, hruby ru[zhuyin][diao='󳆴'] diao, hruby ru[zhuyin][diao='󳆵'] diao, hruby ru[zhuyin][diao='󳆶'] diao, hruby ru[zhuyin][diao='󳆷'] diao { + margin-right: -.25em; +} +hruby ru[zhuyin][diao^="ㆴ"] diao, +hruby ru[zhuyin][diao^="ㆵ"] diao, +hruby ru[zhuyin][diao^="ㆶ"] diao, +hruby ru[zhuyin][diao^="ㆷ"] diao, +hruby ru[zhuyin][diao="󳆴"] diao, +hruby ru[zhuyin][diao="󳆵"] diao, +hruby ru[zhuyin][diao="󳆶"] diao, +hruby ru[zhuyin][diao="󳆷"] diao { top: 20%; - margin-right: -0.3em; + margin-right: -.3em; } -hruby ru[annotation]:before, hruby[rightangle] ru[annotation][order='1']:before { - top: -0.5em; +hruby ru[annotation]:before, +hruby[rightangle] ru[annotation][order="1"]:before { + top: -.5em; } -hruby ru[order='1']:before, hruby[rightangle] ru[annotation][order='0']:before { - bottom: -0.4em; +hruby ru[order="1"]:before, +hruby[rightangle] ru[annotation][order="0"]:before { + bottom: -.4em; top: auto; } hruby[rightangle] ru[annotation]:before { - margin-left: -0.4em; + margin-left: -.4em; } @media screen and (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 192dpi) { hruby yin { - -moz-transform: scale(0.8); - -ms-transform: scale(0.8); - -webkit-transform: scale(0.8); - transform: scale(0.8); + -moz-transform: scale(.8); + -ms-transform: scale(.8); + -webkit-transform: scale(.8); + transform: scale(.8); display: inline-block; } - hruby ru[zhuyin][diao='˪'] diao, - hruby ru[zhuyin][diao='˫'] diao { + + hruby ru[zhuyin][diao="˪"] diao, + hruby ru[zhuyin][diao="˫"] diao { -moz-transform: scale(1); -ms-transform: scale(1); -webkit-transform: scale(1); transform: scale(1); } - hruby ru[zhuyin][diao='˙'] diao { - -moz-transform: scale(0.8); - -ms-transform: scale(0.8); - -webkit-transform: scale(0.8); - transform: scale(0.8); - top: 0.125em; + + hruby ru[zhuyin][diao="˙"] diao { + -moz-transform: scale(.8); + -ms-transform: scale(.8); + -webkit-transform: scale(.8); + transform: scale(.8); + top: .125em; } } @@ -841,171 +880,201 @@ jinze { * 四大字體集・黑體 */ @font-face { - font-family: 'Han Heiti'; + font-family: "Han Heiti"; src: local("Hiragino Sans GB"), local("Lantinghei TC"), local("Lantinghei SC"), local("Heiti SC"), local("Heiti TC"), local("Microsoft Yahei"), local("Microsoft Jhenghei"), local("Droid Sans Fallback"); } + @font-face { unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; - font-family: 'Han Heiti'; + font-family: "Han Heiti"; src: local(YuGothic), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"); } + @font-face { - font-family: 'Han Heiti CNS'; + font-family: "Han Heiti CNS"; src: local("Hiragino Sans GB"), local("Lantinghei TC"), local("Heiti TC"), local("Microsoft Jhenghei"), local("Heiti SC"), local("Lantinghei SC"), local("Microsoft Yahei"), local("Droid Sans Fallback"); } + @font-face { unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; - font-family: 'Han Heiti CNS'; + font-family: "Han Heiti CNS"; src: local(YuGothic), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"); } + @font-face { - font-family: 'Han Heiti GB'; + font-family: "Han Heiti GB"; src: local("Hiragino Sans GB"), local("Lantinghei SC"), local("Heiti SC"), local("Microsoft Yahei"), local("Droid Sans Fallback"); } + /* Bold */ @font-face { - font-family: 'Han Heiti'; + font-family: "Han Heiti"; font-weight: 600; src: local("Hiragino Sans GB W6"), local(HiraginoSansGB-W6), local("Lantinghei TC Demibold"), local("Lantinghei SC Demibold"), local(FZLTXHB--B51-0), local(FZLTZHK--GBK1-0), local("Heiti SC Medium"), local("Heiti TC Medium"), local(STHeitiSC-Medium), local(STHeitiTC-Medium), local("Microsoft YaHei Bold"), local("Microsoft Jhenghei Bold"), local(MicrosoftYaHei-Bold), local(MicrosoftJhengHeiBold); } + @font-face { unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; - font-family: 'Han Heiti'; + font-family: "Han Heiti"; font-weight: 600; src: local("YuGothic Bold"), local("Hiragino Kaku Gothic ProN W6"), local("Hiragino Kaku Gothic Pro W6"), local(YuGo-Bold), local(HiraKakuProN-W6), local(HiraKakuPro-W6); } + @font-face { - font-family: 'Han Heiti CNS'; + font-family: "Han Heiti CNS"; font-weight: 600; src: local("Hiragino Sans GB W6"), local(HiraginoSansGB-W6), local("Lantinghei TC Demibold"), local("Heiti TC Medium"), local("Microsoft Jhenghei Bold"), local(FZLTXHB--B51-0), local(STHeitiTC-Medium), local(MicrosoftJhengHeiBold), local("Lantinghei SC Demibold"), local("Microsoft YaHei Bold"), local("Heiti SC Medium"), local(FZLTZHK--GBK1-0), local(STHeitiSC-Medium), local(MicrosoftYaHei-Bold); } + @font-face { unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; - font-family: 'Han Heiti CNS'; + font-family: "Han Heiti CNS"; font-weight: 600; src: local("YuGothic Bold"), local(YuGo-Bold), local("Hiragino Kaku Gothic ProN W6"), local("Hiragino Kaku Gothic Pro W6"), local(HiraKakuProN-W6), local(HiraKakuPro-W6); } + @font-face { - font-family: 'Han Heiti GB'; + font-family: "Han Heiti GB"; font-weight: 600; src: local("Hiragino Sans GB W6"), local(HiraginoSansGB-W6), local("Lantinghei SC Demibold"), local("Microsoft YaHei Bold"), local("Heiti SC Medium"), local(FZLTZHK--GBK1-0), local(STHeitiSC-Medium), local(MicrosoftYaHei-Bold); } + /* Address solution to `unicode-range` unsupported * issues in Firefox */ @font-face { - font-family: 'Han Heiti'; + font-family: "Han Heiti"; src: local("Hiragino Sans GB"), local("Lantinghei TC"), local("Lantinghei SC"), local("Heiti SC"), local("Heiti TC"), local("Microsoft Yahei"), local("Microsoft Jhenghei"), local("Droid Sans Fallback"); unicode-range: U+270C; } + @font-face { - font-family: 'Han Heiti'; + font-family: "Han Heiti"; font-weight: 600; src: local("Hiragino Sans GB W6"), local(HiraginoSansGB-W6), local("Lantinghei TC Demibold"), local("Lantinghei SC Demibold"), local(FZLTXHB--B51-0), local(FZLTZHK--GBK1-0), local("Heiti SC Medium"), local("Heiti TC Medium"), local(STHeitiSC-Medium), local(STHeitiTC-Medium), local("Microsoft YaHei Bold"), local("Microsoft Jhenghei Bold"), local(MicrosoftYaHei-Bold), local(MicrosoftJhengHeiBold); unicode-range: U+270C; } + @font-face { - font-family: 'Han Heiti CNS'; + font-family: "Han Heiti CNS"; src: local("Hiragino Sans GB"), local("Lantinghei TC"), local("Heiti TC"), local("Microsoft Jhenghei"), local("Heiti SC"), local("Lantinghei SC"), local("Microsoft Yahei"), local("Droid Sans Fallback"); unicode-range: U+270C; } + @font-face { - font-family: 'Han Heiti CNS'; + font-family: "Han Heiti CNS"; font-weight: 600; src: local("Hiragino Sans GB W6"), local(HiraginoSansGB-W6), local("Lantinghei TC Demibold"), local("Heiti TC Medium"), local("Microsoft Jhenghei Bold"), local(FZLTXHB--B51-0), local(STHeitiTC-Medium), local(MicrosoftJhengHeiBold), local("Lantinghei SC Demibold"), local("Heiti SC Medium"), local("Microsoft YaHei Bold"), local(FZLTZHK--GBK1-0), local(STHeitiSC-Medium), local(MicrosoftYaHei-Bold); unicode-range: U+270C; } + @font-face { - font-family: 'Han Heiti GB'; + font-family: "Han Heiti GB"; src: local("Hiragino Sans GB"), local("Lantinghei SC"), local("Heiti SC"), local("Microsoft Yahei"), local("Droid Sans Fallback"); unicode-range: U+270C; } + /** * The Four Typefaces: Songti (serif) * 四大字體集・宋體 */ @font-face { - font-family: 'Han Songti'; + font-family: "Han Songti"; src: local("Songti SC"), local("Songti TC"), local(STSong), local("Lisong Pro"), local(SimSun), local(PMingLiU); } + @font-face { unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; - font-family: 'Han Songti'; + font-family: "Han Songti"; src: local(YuMincho), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("MS Mincho"); } + @font-face { - font-family: 'Han Songti CNS'; + font-family: "Han Songti CNS"; src: local("Songti TC"), local("Lisong Pro"), local("Songti SC"), local(STSong), local(PMingLiU), local(SimSun); } + @font-face { unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; - font-family: 'Han Songti CNS'; + font-family: "Han Songti CNS"; src: local(YuMincho), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"); } + @font-face { - font-family: 'Han Songti GB'; + font-family: "Han Songti GB"; src: local("Songti SC"), local(STSong), local(SimSun), local(PMingLiU); } + /* Bold */ @font-face { - font-family: 'Han Songti'; + font-family: "Han Songti"; font-weight: 600; src: local("STSongti SC Bold"), local("STSongti TC Bold"), local(STSongti-SC-Bold), local(STSongti-TC-Bold); } + @font-face { unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; - font-family: 'Han Songti'; + font-family: "Han Songti"; font-weight: 600; src: local("YuMincho Demibold"), local("Hiragino Mincho ProN W6"), local("Hiragino Mincho Pro W6"), local(YuMin-Demibold), local(HiraMinProN-W6), local(HiraMinPro-W6); } + @font-face { - font-family: 'Han Songti CNS'; + font-family: "Han Songti CNS"; font-weight: 600; src: local("STSongti TC Bold"), local("STSongti SC Bold"), local(STSongti-TC-Bold), local(STSongti-SC-Bold); } + @font-face { unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; - font-family: 'Han Songti CNS'; + font-family: "Han Songti CNS"; font-weight: 600; src: local("YuMincho Demibold"), local("Hiragino Mincho ProN W6"), local("Hiragino Mincho Pro W6"), local(YuMin-Demibold), local(HiraMinProN-W6), local(HiraMinPro-W6); } + @font-face { - font-family: 'Han Songti GB'; + font-family: "Han Songti GB"; font-weight: 600; src: local("STSongti SC Bold"), local(STSongti-SC-Bold); } + /* Address solution to `unicode-range` unsupported * issues in Firefox. */ @font-face { - font-family: 'Han Songti'; + font-family: "Han Songti"; src: local("Songti SC"), local("Songti TC"), local(STSongti), local("Lisong Pro"), local("MS Mincho"), local(SimSun), local(PMingLiU); unicode-range: U+270C; } + @font-face { - font-family: 'Han Songti'; + font-family: "Han Songti"; font-weight: 600; src: local("STSongti TC Bold"), local("STSongti SC Bold"), local(STSongti-TC-Bold), local(STSongti-SC-Bold); unicode-range: U+270C; } + @font-face { - font-family: 'Han Songti CNS'; + font-family: "Han Songti CNS"; src: local("Songti TC"), local("Lisong Pro"), local("Songti SC"), local(STSong), local("MS Mincho"), local(PMingLiU), local(SimSun); unicode-range: U+270C; } + @font-face { - font-family: 'Han Songti CNS'; + font-family: "Han Songti CNS"; font-weight: 600; src: local("STSongti TC Bold"), local("STSongti SC Bold"), local(STSongti-TC-Bold), local(STSongti-SC-Bold); unicode-range: U+270C; } + @font-face { - font-family: 'Han Songti GB'; + font-family: "Han Songti GB"; src: local("Songti SC"), local(STSong), local(SimSun); unicode-range: U+270C; } + /** * The Four Typefaces: Kaiti (Cursive) * 四大字體集・楷體 @@ -1014,21 +1083,25 @@ jinze { font-family: cursive; src: local("Kaiti SC"), local(STKaiti), local(BiauKai), local("標楷體"), local(DFKaiShu-SB-Estd-BF), local(Kaiti), local(DFKai-SB); } + @font-face { unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; - font-family: 'Han Kaiti'; + font-family: "Han Kaiti"; src: local("Kaiti SC"), local(STKaiti), local(BiauKai), local("標楷體"), local(DFKaiShu-SB-Estd-BF), local(Kaiti), local(DFKai-SB); } + @font-face { unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; - font-family: 'Han Kaiti CNS'; + font-family: "Han Kaiti CNS"; src: local(BiauKai), local("標楷體"), local(DFKaiShu-SB-Estd-BF); } + @font-face { unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; - font-family: 'Han Kaiti GB'; + font-family: "Han Kaiti GB"; src: local("Kaiti SC"), local(STKaiti), local(Kai), local(Kaiti), local(DFKai-SB); } + /* Bold */ @font-face { @@ -1036,666 +1109,802 @@ jinze { font-weight: 600; src: local("Kaiti SC Bold"), local(STKaiti-SC-Bold); } + @font-face { - font-family: 'Han Kaiti'; + font-family: "Han Kaiti"; font-weight: 600; src: local("Kaiti SC Bold"), local(STKaiti-SC-Bold); } + @font-face { - font-family: 'Han Kaiti GB'; + font-family: "Han Kaiti GB"; font-weight: 600; src: local("Kaiti SC Bold"), local(STKaiti-SC-Bold); } + /** * The Four Typefaces: Fangsong * 四大字體集・仿宋體 */ @font-face { unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; - font-family: 'Han Fangsong'; + font-family: "Han Fangsong"; src: local(STFangsong), local(FangSong); } + @font-face { unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; - font-family: 'Han Fangsong CNS'; + font-family: "Han Fangsong CNS"; src: local(STFangsong), local(FangSong); } + @font-face { unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; - font-family: 'Han Fangsong GB'; + font-family: "Han Fangsong GB"; src: local(STFangsong), local(FangSong); } + /** * Basic correction to CJK punctuation * ‘Biaodian’(zh) and ‘Yakumono’(ja) */ /* Fullwidth full stop (.) */ @font-face { - font-family: 'Biaodian Sans'; + font-family: "Biaodian Sans"; src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local("MS Gothic"), local(SimSun); unicode-range: U+FF0E; } + @font-face { - font-family: 'Biaodian Serif'; + font-family: "Biaodian Serif"; src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local(SimSun); unicode-range: U+FF0E; } + @font-face { - font-family: 'Biaodian Pro Sans'; + font-family: "Biaodian Pro Sans"; src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local("MS Gothic"), local(SimSun); unicode-range: U+FF0E; } + @font-face { - font-family: 'Biaodian Pro Serif'; + font-family: "Biaodian Pro Serif"; src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local(SimSun); unicode-range: U+FF0E; } + @font-face { - font-family: 'Biaodian Pro Sans CNS'; + font-family: "Biaodian Pro Sans CNS"; src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local("MS Gothic"), local(SimSun); unicode-range: U+FF0E; } + @font-face { - font-family: 'Biaodian Pro Serif CNS'; + font-family: "Biaodian Pro Serif CNS"; src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local(SimSun); unicode-range: U+FF0E; } + @font-face { - font-family: 'Biaodian Pro Sans GB'; + font-family: "Biaodian Pro Sans GB"; src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local("MS Gothic"), local(SimSun); unicode-range: U+FF0E; } + @font-face { - font-family: 'Biaodian Pro Serif GB'; + font-family: "Biaodian Pro Serif GB"; src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local(SimSun); unicode-range: U+FF0E; } + /* Middle dot (·) */ @font-face { - font-family: 'Biaodian Sans'; + font-family: "Biaodian Sans"; src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local(SimSun); unicode-range: U+00B7; } + @font-face { - font-family: 'Biaodian Serif'; + font-family: "Biaodian Serif"; src: local("Songti SC"), local(STSong), local("Heiti SC"), local(SimSun); unicode-range: U+00B7; } + @font-face { - font-family: 'Biaodian Pro Sans'; + font-family: "Biaodian Pro Sans"; src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local(SimSun); unicode-range: U+00B7; } + @font-face { - font-family: 'Biaodian Pro Serif'; + font-family: "Biaodian Pro Serif"; src: local("Songti SC"), local(STSong), local("Heiti SC"), local(SimSun); unicode-range: U+00B7; } + @font-face { - font-family: 'Biaodian Pro Sans CNS'; + font-family: "Biaodian Pro Sans CNS"; src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local(SimSun); unicode-range: U+00B7; } + @font-face { - font-family: 'Biaodian Pro Serif CNS'; + font-family: "Biaodian Pro Serif CNS"; src: local("Songti SC"), local(STSong), local("Heiti SC"), local(SimSun); unicode-range: U+00B7; } + @font-face { - font-family: 'Biaodian Pro Sans GB'; + font-family: "Biaodian Pro Sans GB"; src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local(SimSun); unicode-range: U+00B7; } + @font-face { - font-family: 'Biaodian Pro Serif GB'; + font-family: "Biaodian Pro Serif GB"; src: local("Songti SC"), local(STSong), local("Heiti SC"), local(SimSun); unicode-range: U+00B7; } + /* Em dash (——) */ @font-face { - font-family: 'Biaodian Sans'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Microsoft Yahei"), local(SimSun); + font-family: "Biaodian Sans"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Microsoft Yahei"), local(SimSun); unicode-range: U+2014; } + @font-face { - font-family: 'Biaodian Serif'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local("Microsoft Yahei"), local(SimSun); + font-family: "Biaodian Serif"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local("Microsoft Yahei"), local(SimSun); unicode-range: U+2014; } + @font-face { - font-family: 'Yakumono Sans'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Arial Unicode MS"), local("MS Gothic"); + font-family: "Yakumono Sans"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Arial Unicode MS"), local("MS Gothic"); unicode-range: U+2014; } + @font-face { - font-family: 'Yakumono Serif'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("MS Mincho"), local("Microsoft Yahei"); + font-family: "Yakumono Serif"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("MS Mincho"), local("Microsoft Yahei"); unicode-range: U+2014; } + @font-face { - font-family: 'Biaodian Pro Sans'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Microsoft Yahei"), local(SimSun); + font-family: "Biaodian Pro Sans"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Microsoft Yahei"), local(SimSun); unicode-range: U+2014; } + @font-face { - font-family: 'Biaodian Pro Serif'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local("Microsoft Yahei"), local(SimSun); + font-family: "Biaodian Pro Serif"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local("Microsoft Yahei"), local(SimSun); unicode-range: U+2014; } + @font-face { - font-family: 'Biaodian Pro Sans CNS'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Microsoft Yahei"), local(SimSun); + font-family: "Biaodian Pro Sans CNS"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Microsoft Yahei"), local(SimSun); unicode-range: U+2014; } + @font-face { - font-family: 'Biaodian Pro Serif CNS'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local("Microsoft Yahei"), local(SimSun); + font-family: "Biaodian Pro Serif CNS"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local("Microsoft Yahei"), local(SimSun); unicode-range: U+2014; } + @font-face { - font-family: 'Biaodian Pro Sans GB'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Microsoft Yahei"), local(SimSun); + font-family: "Biaodian Pro Sans GB"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Microsoft Yahei"), local(SimSun); unicode-range: U+2014; } + @font-face { - font-family: 'Biaodian Pro Serif GB'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local("Microsoft Yahei"), local(SimSun); + font-family: "Biaodian Pro Serif GB"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local("Microsoft Yahei"), local(SimSun); unicode-range: U+2014; } + /* Ellipsis (……) */ @font-face { - font-family: 'Biaodian Sans'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(Meiryo), local("MS Gothic"), local(SimSun), local(PMingLiU); + font-family: "Biaodian Sans"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(Meiryo), local("MS Gothic"), local(SimSun), local(PMingLiU); unicode-range: U+2026; } + @font-face { - font-family: 'Biaodian Serif'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local("MS Mincho"), local(SimSun), local(PMingLiU); + font-family: "Biaodian Serif"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local("MS Mincho"), local(SimSun), local(PMingLiU); unicode-range: U+2026; } + @font-face { - font-family: 'Yakumono Sans'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(Meiryo), local("MS Gothic"); + font-family: "Yakumono Sans"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(Meiryo), local("MS Gothic"); unicode-range: U+2026; } + @font-face { - font-family: 'Yakumono Serif'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("MS Mincho"); + font-family: "Yakumono Serif"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("MS Mincho"); unicode-range: U+2026; } + @font-face { - font-family: 'Biaodian Pro Sans'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local(PMingLiU); + font-family: "Biaodian Pro Sans"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local(PMingLiU); unicode-range: U+2026; } + @font-face { - font-family: 'Biaodian Pro Serif'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(SimSun), local(PMingLiU); + font-family: "Biaodian Pro Serif"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(SimSun), local(PMingLiU); unicode-range: U+2026; } + @font-face { - font-family: 'Biaodian Pro Sans CNS'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local(PMingLiU); + font-family: "Biaodian Pro Sans CNS"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local(PMingLiU); unicode-range: U+2026; } + @font-face { - font-family: 'Biaodian Pro Serif CNS'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSongti), local(SimSun), local(PMingLiU); + font-family: "Biaodian Pro Serif CNS"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSongti), local(SimSun), local(PMingLiU); unicode-range: U+2026; } + @font-face { - font-family: 'Biaodian Pro Sans GB'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local(PMingLiU); + font-family: "Biaodian Pro Sans GB"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local(PMingLiU); unicode-range: U+2026; } + @font-face { - font-family: 'Biaodian Pro Serif GB'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSongti), local(SimSun), local(PMingLiU); + font-family: "Biaodian Pro Serif GB"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSongti), local(SimSun), local(PMingLiU); unicode-range: U+2026; } + /* Curve quotes (“‘’”, GB-only) */ @font-face { - font-family: 'Biaodian Pro Sans GB'; + font-family: "Biaodian Pro Sans GB"; src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local(SimSun), local(PMingLiU); unicode-range: U+201C-201D, U+2018-2019; } + @font-face { - font-family: 'Biaodian Pro Serif GB'; + font-family: "Biaodian Pro Serif GB"; src: local("Lisong Pro"), local("Heiti SC"), local(STHeiti), local(SimSun), local(PMingLiU); unicode-range: U+201C-201D, U+2018-2019; } + /* Default emphasis mark (•) */ @font-face { - font-family: 'Biaodian Sans'; + font-family: "Biaodian Sans"; src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); unicode-range: U+25CF; } + @font-face { - font-family: 'Biaodian Serif'; + font-family: "Biaodian Serif"; src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); unicode-range: U+25CF; } + @font-face { - font-family: 'Biaodian Pro Sans'; + font-family: "Biaodian Pro Sans"; src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); unicode-range: U+25CF; } + @font-face { - font-family: 'Biaodian Pro Serif'; + font-family: "Biaodian Pro Serif"; src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); unicode-range: U+25CF; } + @font-face { - font-family: 'Biaodian Pro Sans CNS'; + font-family: "Biaodian Pro Sans CNS"; src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); unicode-range: U+25CF; } + @font-face { - font-family: 'Biaodian Pro Serif CNS'; + font-family: "Biaodian Pro Serif CNS"; src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); unicode-range: U+25CF; } + @font-face { - font-family: 'Biaodian Pro Sans GB'; + font-family: "Biaodian Pro Sans GB"; src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); unicode-range: U+25CF; } + @font-face { - font-family: 'Biaodian Pro Serif GB'; + font-family: "Biaodian Pro Serif GB"; src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); unicode-range: U+25CF; } + /** * Advanced correction to Chinese Biaodian */ @font-face { - font-family: 'Biaodian Pro Sans'; + font-family: "Biaodian Pro Sans"; src: local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("MS Gothic"); unicode-range: U+3002, U+FF0C, U+3001, U+FF1B, U+FF1A, U+FF1F, U+FF01, U+FF0D, U+FF0F, U+FF3C; } + @font-face { - font-family: 'Biaodian Pro Serif'; + font-family: "Biaodian Pro Serif"; src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("MS Mincho"); unicode-range: U+3002, U+FF0C, U+3001, U+FF1B, U+FF1A, U+FF1F, U+FF01, U+FF0D, U+FF0F, U+FF3C; } + @font-face { - font-family: 'Biaodian Pro Sans CNS'; + font-family: "Biaodian Pro Sans CNS"; src: local("Heiti TC"), local("Lihei Pro"), local("Microsoft Jhenghei"), local(PMingLiU); unicode-range: U+3002, U+FF0C, U+3001; } + @font-face { - font-family: 'Biaodian Pro Sans CNS'; + font-family: "Biaodian Pro Sans CNS"; src: local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Heiti TC"), local("Lihei Pro"), local("Microsoft Jhenghei"), local(PMingLiU), local("MS Gothic"); unicode-range: U+FF1B, U+FF1A, U+FF1F, U+FF01; } + @font-face { - font-family: 'Biaodian Pro Sans CNS'; + font-family: "Biaodian Pro Sans CNS"; src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("MS Mincho"); unicode-range: U+FF0D, U+FF0F, U+FF3C; } + @font-face { - font-family: 'Biaodian Pro Serif CNS'; + font-family: "Biaodian Pro Serif CNS"; src: local(STSongti-TC-Regular), local("Lisong Pro"), local("Heiti TC"), local(PMingLiU); unicode-range: U+3002, U+FF0C, U+3001; } + @font-face { - font-family: 'Biaodian Pro Serif CNS'; + font-family: "Biaodian Pro Serif CNS"; src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local(PMingLiU), local("MS Mincho"); unicode-range: U+FF1B, U+FF1A, U+FF1F, U+FF01, U+FF0D, U+FF0F, U+FF3C; } + @font-face { - font-family: 'Biaodian Pro Sans GB'; + font-family: "Biaodian Pro Sans GB"; src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local("MS Gothic"); unicode-range: U+3002, U+FF0C, U+3001, U+FF1B, U+FF1A, U+FF1F, U+FF01, U+FF0D, U+FF0F, U+FF3C; } + @font-face { - font-family: 'Biaodian Pro Serif GB'; + font-family: "Biaodian Pro Serif GB"; src: local("Songti SC"), local(STSongti), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local(SimSun), local("MS Mincho"); unicode-range: U+3002, U+FF0C, U+3001, U+FF1B, U+FF1A, U+FF1F, U+FF01; } + @font-face { - font-family: 'Biaodian Pro Serif GB'; + font-family: "Biaodian Pro Serif GB"; src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local(PMingLiU), local("MS Mincho"); unicode-range: U+FF0D, U+FF0F, U+FF3C; } + @font-face { - font-family: 'Biaodian Pro Sans'; + font-family: "Biaodian Pro Sans"; src: local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local(PMingLiU); unicode-range: U+300C-300F, U+300A-300B, U+3008-3009, U+FF08-FF09, U+3014-3015; } + @font-face { - font-family: 'Biaodian Pro Serif'; + font-family: "Biaodian Pro Serif"; src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local(SimSun); unicode-range: U+300C-300F, U+300A-300B, U+3008-3009, U+FF08-FF09, U+3014-3015; } + @font-face { - font-family: 'Biaodian Pro Sans CNS'; + font-family: "Biaodian Pro Sans CNS"; src: local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local(PMingLiU); unicode-range: U+300C-300F, U+300A-300B, U+3008-3009, U+FF08-FF09, U+3014-3015; } + @font-face { - font-family: 'Biaodian Pro Serif CNS'; + font-family: "Biaodian Pro Serif CNS"; src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local(SimSun); unicode-range: U+300C-300F, U+300A-300B, U+3008-3009, U+FF08-FF09, U+3014-3015; } + @font-face { - font-family: 'Biaodian Pro Sans GB'; + font-family: "Biaodian Pro Sans GB"; src: local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local(PMingLiU); unicode-range: U+300C-300F, U+300A-300B, U+3008-3009, U+FF08-FF09, U+3014-3015; } + @font-face { - font-family: 'Biaodian Pro Serif GB'; + font-family: "Biaodian Pro Serif GB"; src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local(SimSun); unicode-range: U+300C-300F, U+300A-300B, U+3008-3009, U+FF08-FF09, U+3014-3015; } + /* Address solution to `unicode-range` unsupported * issues in Firefox. */ @font-face { - font-family: 'Biaodian Basic'; - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"); + font-family: "Biaodian Basic"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"); unicode-range: U+2014, U+2026, U+00B7; } + @font-face { - font-family: 'Biaodian Sans'; + font-family: "Biaodian Sans"; src: local(lying-to-firefox); unicode-range: U+270C; } + @font-face { - font-family: 'Biaodian Serif'; + font-family: "Biaodian Serif"; src: local(lying-to-firefox); unicode-range: U+270C; } + @font-face { - font-family: 'Biaodian Pro Sans'; + font-family: "Biaodian Pro Sans"; src: local(lying-to-firefox); unicode-range: U+270C; } + @font-face { - font-family: 'Biaodian Pro Serif'; + font-family: "Biaodian Pro Serif"; src: local(lying-to-firefox); unicode-range: U+270C; } + @font-face { - font-family: 'Biaodian Pro Sans CNS'; + font-family: "Biaodian Pro Sans CNS"; src: local(lying-to-firefox); unicode-range: U+270C; } + @font-face { - font-family: 'Biaodian Pro Serif CNS'; + font-family: "Biaodian Pro Serif CNS"; src: local(lying-to-firefox); unicode-range: U+270C; } + @font-face { - font-family: 'Biaodian Pro Sans GB'; + font-family: "Biaodian Pro Sans GB"; src: local(lying-to-firefox); unicode-range: U+270C; } + @font-face { - font-family: 'Biaodian Pro Serif GB'; + font-family: "Biaodian Pro Serif GB"; src: local(lying-to-firefox); unicode-range: U+270C; } + /** * Western Italic Serif */ @font-face { - font-family: 'Latin Italic Serif'; + font-family: "Latin Italic Serif"; src: local("Georgia Italic"), local("Times New Roman Italic"), local(Georgia-Italic), local(TimesNewRomanPS-ItalicMT), local(Times-Italic); } + @font-face { - font-family: 'Latin Italic Serif'; + font-family: "Latin Italic Serif"; font-weight: 700; src: local("Georgia Bold Italic"), local("Times New Roman Bold Italic"), local(Georgia-BoldItalic), local(TimesNewRomanPS-BoldItalicMT), local(Times-Italic); } + /** * Western italic sans-serif */ @font-face { - font-family: 'Latin Italic Sans'; + font-family: "Latin Italic Sans"; src: local("Helvetica Neue Italic"), local("Helvetica Oblique"), local("Arial Italic"), local(HelveticaNeue-Italic), local(Helvetica-LightOblique), local(Arial-ItalicMT); } + @font-face { - font-family: 'Latin Italic Sans'; + font-family: "Latin Italic Sans"; font-weight: 700; src: local("Helvetica Neue Bold Italic"), local("Helvetica Bold Oblique"), local("Arial Bold Italic"), local(HelveticaNeue-BoldItalic), local(Helvetica-BoldOblique), local(Arial-BoldItalicMT); } + /** * Numerals: text figures */ @font-face { unicode-range: U+0030-0039; - font-family: 'Numeral TF Sans'; + font-family: "Numeral TF Sans"; src: local(Skia), local("Neutraface 2 Text"), local(Candara), local(Corbel); } + @font-face { unicode-range: U+0030-0039; - font-family: 'Numeral TF Serif'; + font-family: "Numeral TF Serif"; src: local(Georgia), local("Hoefler Text"), local("Big Caslon"); } + @font-face { unicode-range: U+0030-0039; - font-family: 'Numeral TF Italic Serif'; + font-family: "Numeral TF Italic Serif"; src: local("Georgia Italic"), local("Hoefler Text Italic"), local(Georgia-Italic), local(HoeflerText-Italic); } + /** * Numerals: lining figures */ @font-face { unicode-range: U+0030-0039; - font-family: 'Numeral LF Sans'; + font-family: "Numeral LF Sans"; src: local("Helvetica Neue"), local(Helvetica), local(Arial); } + @font-face { unicode-range: U+0030-0039; - font-family: 'Numeral LF Italic Sans'; + font-family: "Numeral LF Italic Sans"; src: local("Helvetica Neue Italic"), local("Helvetica Oblique"), local("Arial Italic"), local(HelveticaNeue-Italic), local(Helvetica-LightOblique), local(Arial-ItalicMT); } + @font-face { unicode-range: U+0030-0039; - font-family: 'Numeral LF Italic Sans'; + font-family: "Numeral LF Italic Sans"; font-weight: bold; src: local("Helvetica Neue Bold Italic"), local("Helvetica Bold Oblique"), local("Arial Bold Italic"), local(HelveticaNeue-BoldItalic), local(Helvetica-BoldOblique), local(Arial-BoldItalicMT); } + @font-face { unicode-range: U+0030-0039; - font-family: 'Numeral LF Serif'; + font-family: "Numeral LF Serif"; src: local(Palatino), local("Palatino Linotype"), local("Times New Roman"); } + @font-face { unicode-range: U+0030-0039; - font-family: 'Numeral LF Italic Serif'; + font-family: "Numeral LF Italic Serif"; src: local("Palatino Italic"), local("Palatino Italic Linotype"), local("Times New Roman Italic"), local(Palatino-Italic), local(Palatino-Italic-Linotype), local(TimesNewRomanPS-ItalicMT); } + @font-face { unicode-range: U+0030-0039; - font-family: 'Numeral LF Italic Serif'; + font-family: "Numeral LF Italic Serif"; font-weight: bold; src: local("Palatino Bold Italic"), local("Palatino Bold Italic Linotype"), local("Times New Roman Bold Italic"), local(Palatino-BoldItalic), local(Palatino-BoldItalic-Linotype), local(TimesNewRomanPS-BoldItalicMT); } + /* Address solution to `unicode-range` unsupported * issues in Firefox. */ @font-face { - font-family: 'Numeral TF Sans'; + font-family: "Numeral TF Sans"; src: local(lying-to-firefox); unicode-range: U+270C; } + @font-face { - font-family: 'Numeral TF Serif'; + font-family: "Numeral TF Serif"; src: local(lying-to-firefox); unicode-range: U+270C; } + @font-face { - font-family: 'Numeral TF Italic Serif'; + font-family: "Numeral TF Italic Serif"; src: local(lying-to-firefox); unicode-range: U+270C; } + @font-face { - font-family: 'Numeral LF Sans'; + font-family: "Numeral LF Sans"; src: local(lying-to-firefox); unicode-range: U+270C; } + @font-face { - font-family: 'Numeral LF Italic Sans'; + font-family: "Numeral LF Italic Sans"; src: local(lying-to-firefox); unicode-range: U+270C; } + @font-face { - font-family: 'Numeral LF Italic Sans'; + font-family: "Numeral LF Italic Sans"; font-weight: bold; src: local(lying-to-firefox); unicode-range: U+270C; } + @font-face { - font-family: 'Numeral LF Serif'; + font-family: "Numeral LF Serif"; src: local(lying-to-firefox); unicode-range: U+270C; } + @font-face { - font-family: 'Numeral LF Italic Serif'; + font-family: "Numeral LF Italic Serif"; src: local(lying-to-firefox); unicode-range: U+270C; } + @font-face { - font-family: 'Numeral LF Italic Serif'; + font-family: "Numeral LF Italic Serif"; font-weight: bold; src: local(lying-to-firefox); unicode-range: U+270C; } + /** * Zhuyin Kaiti */ @font-face { - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"); + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"); unicode-range: U+3105-312D, U+31A0-31BA, U+02D9, U+02CA, U+02C5, U+02C7, U+02CB, U+02EA-02EB, U+030D, U+0358, U+F31B4-F31B7, U+F0061, U+F0065, U+F0069, U+F006F, U+F0075; - font-family: 'Zhuyin Kaiti'; + font-family: "Zhuyin Kaiti"; } + /** * Zhuyin Heiti */ @font-face { unicode-range: U+3105-312D, U+31A0-31BA, U+02D9, U+02CA, U+02C5, U+02C7, U+02CB, U+02EA-02EB, U+030D, U+0358, U+F31B4-F31B7, U+F0061, U+F0065, U+F0069, U+F006F, U+F0075; - font-family: 'Zhuyin Heiti'; - src: local("Hiragino Sans GB"), local("Heiti TC"), local("Microsoft Jhenghei"), url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"); + font-family: "Zhuyin Heiti"; + src: local("Hiragino Sans GB"), local("Heiti TC"), local("Microsoft Jhenghei"), url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"); } + @font-face { - font-family: 'Zhuyin Heiti'; - src: local("Heiti TC"), local("Microsoft Jhenghei"), url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"); + font-family: "Zhuyin Heiti"; + src: local("Heiti TC"), local("Microsoft Jhenghei"), url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"); unicode-range: U+3127; } + @font-face { - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"); - font-family: 'Zhuyin Heiti'; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"); + font-family: "Zhuyin Heiti"; unicode-range: U+02D9, U+02CA, U+02C5, U+02C7, U+02CB, U+02EA-02EB, U+31B4, U+31B5, U+31B6, U+31B7, U+030D, U+0358, U+F31B4-F31B7, U+F0061, U+F0065, U+F0069, U+F006F, U+F0075; } + /** * Romanisation (checked tone ligature [陽入韻連字]) */ @font-face { - src: url(./font/han.woff?v3.0.2) format("woff"), url(./font/han.otf?v3.0.2) format("opentype"); - font-family: 'Romanization Sans'; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"); + font-family: "Romanization Sans"; unicode-range: U+030D, U+0358, U+F31B4-F31B7, U+F0061, U+F0065, U+F0069, U+F006F, U+F0075; } -html:lang(zh-Latn), html:lang(ja-Latn), html:not(:lang(zh)):not(:lang(ja)), + +html:lang(zh-Latn), +html:lang(ja-Latn), +html:not(:lang(zh)):not(:lang(ja)), html *:lang(zh-Latn), html *:lang(ja-Latn), -html *:not(:lang(zh)):not(:lang(ja)), article strong:lang(zh-Latn), article strong:lang(ja-Latn), article strong:not(:lang(zh)):not(:lang(ja)), +html *:not(:lang(zh)):not(:lang(ja)), +article strong:lang(zh-Latn), +article strong:lang(ja-Latn), +article strong:not(:lang(zh)):not(:lang(ja)), article strong *:lang(zh-Latn), article strong *:lang(ja-Latn), article strong *:not(:lang(zh)):not(:lang(ja)) { font-family: "Helvetica Neue", Helvetica, Arial, "Han Heiti", sans-serif; } -html:lang(zh), html:lang(zh-Hant), [lang^='zh'], -[lang*='Hant'], -[lang='zh-TW'], -[lang='zh-HK'], article strong:lang(zh), article strong:lang(zh-Hant) { +html:lang(zh), +html:lang(zh-Hant), +[lang^="zh"], +[lang*="Hant"], +[lang="zh-TW"], +[lang="zh-HK"], +article strong:lang(zh), +article strong:lang(zh-Hant) { font-family: "Biaodian Pro Sans CNS", "Helvetica Neue", Helvetica, Arial, "Zhuyin Heiti", "Han Heiti", sans-serif; } -html:lang(zh-Hans), html:lang(zh-CN), [lang*='Hans'], -[lang='zh-CN'], article strong:lang(zh-Hans), article strong:lang(zh-CN) { +html:lang(zh-Hans), +html:lang(zh-CN), +[lang*="Hans"], +[lang="zh-CN"], +article strong:lang(zh-Hans), +article strong:lang(zh-CN) { font-family: "Biaodian Pro Sans GB", "Helvetica Neue", Helvetica, Arial, "Han Heiti GB", sans-serif; } -html:lang(ja), [lang^='ja'], article strong:lang(ja) { +html:lang(ja), +[lang^="ja"], +article strong:lang(ja) { font-family: "Yakumono Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; } /** * Sans Italic */ -article blockquote i:lang(zh-Latn), article blockquote i:lang(ja-Latn), article blockquote i:not(:lang(zh)):not(:lang(ja)), +article blockquote i:lang(zh-Latn), +article blockquote i:lang(ja-Latn), +article blockquote i:not(:lang(zh)):not(:lang(ja)), article blockquote i *:lang(zh-Latn), article blockquote i *:lang(ja-Latn), -article blockquote i *:not(:lang(zh)):not(:lang(ja)), article blockquote -var:lang(zh-Latn), article blockquote -var:lang(ja-Latn), article blockquote -var:not(:lang(zh)):not(:lang(ja)), -article blockquote -var *:lang(zh-Latn), -article blockquote -var *:lang(ja-Latn), -article blockquote -var *:not(:lang(zh)):not(:lang(ja)) { +article blockquote i *:not(:lang(zh)):not(:lang(ja)), +article blockquote var:lang(zh-Latn), +article blockquote var:lang(ja-Latn), +article blockquote var:not(:lang(zh)):not(:lang(ja)), +article blockquote var *:lang(zh-Latn), +article blockquote var *:lang(ja-Latn), +article blockquote var *:not(:lang(zh)):not(:lang(ja)) { font-family: "Latin Italic Sans", "Helvetica Neue", Helvetica, Arial, "Han Heiti", sans-serif; } -article blockquote i:lang(zh), article blockquote i:lang(zh-Hant), article blockquote -var:lang(zh), article blockquote -var:lang(zh-Hant) { +article blockquote i:lang(zh), +article blockquote i:lang(zh-Hant), +article blockquote var:lang(zh), +article blockquote var:lang(zh-Hant) { font-family: "Biaodian Pro Sans CNS", "Latin Italic Sans", "Helvetica Neue", Helvetica, Arial, "Zhuyin Heiti", "Han Heiti", sans-serif; } -article blockquote i:lang(zh-Hans), article blockquote i:lang(zh-CN), article blockquote -var:lang(zh-Hans), article blockquote -var:lang(zh-CN) { +article blockquote i:lang(zh-Hans), +article blockquote i:lang(zh-CN), +article blockquote var:lang(zh-Hans), +article blockquote var:lang(zh-CN) { font-family: "Biaodian Pro Sans GB", "Latin Italic Sans", "Helvetica Neue", Helvetica, Arial, "Han Heiti GB", sans-serif; } -article blockquote i:lang(ja), article blockquote -var:lang(ja) { +article blockquote i:lang(ja), +article blockquote var:lang(ja) { font-family: "Yakumono Sans", "Latin Italic Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; } -article figure blockquote:lang(zh-Latn), article figure blockquote:lang(ja-Latn), article figure blockquote:not(:lang(zh)):not(:lang(ja)), +article figure blockquote:lang(zh-Latn), +article figure blockquote:lang(ja-Latn), +article figure blockquote:not(:lang(zh)):not(:lang(ja)), article figure blockquote *:lang(zh-Latn), article figure blockquote *:lang(ja-Latn), -article figure blockquote *:not(:lang(zh)):not(:lang(ja)), figure blockquote:lang(zh-Latn), figure blockquote:lang(ja-Latn), figure blockquote:not(:lang(zh)):not(:lang(ja)), +article figure blockquote *:not(:lang(zh)):not(:lang(ja)), +figure blockquote:lang(zh-Latn), +figure blockquote:lang(ja-Latn), +figure blockquote:not(:lang(zh)):not(:lang(ja)), figure blockquote *:lang(zh-Latn), figure blockquote *:lang(ja-Latn), figure blockquote *:not(:lang(zh)):not(:lang(ja)) { font-family: Georgia, "Times New Roman", "Han Songti", cursive, serif; } -article figure blockquote:lang(zh), article figure blockquote:lang(zh-Hant), figure blockquote:lang(zh), figure blockquote:lang(zh-Hant) { +article figure blockquote:lang(zh), +article figure blockquote:lang(zh-Hant), +figure blockquote:lang(zh), +figure blockquote:lang(zh-Hant) { font-family: "Biaodian Pro Serif CNS", "Numeral LF Serif", Georgia, "Times New Roman", "Zhuyin Kaiti", "Han Songti", serif; } -article figure blockquote:lang(zh-Hans), article figure blockquote:lang(zh-CN), figure blockquote:lang(zh-Hans), figure blockquote:lang(zh-CN) { +article figure blockquote:lang(zh-Hans), +article figure blockquote:lang(zh-CN), +figure blockquote:lang(zh-Hans), +figure blockquote:lang(zh-CN) { font-family: "Biaodian Pro Serif GB", "Numeral LF Serif", Georgia, "Times New Roman", "Han Songti GB", serif; } -article figure blockquote:lang(ja), figure blockquote:lang(ja) { +article figure blockquote:lang(ja), +figure blockquote:lang(ja) { font-family: "Yakumono Serif", "Numeral LF Serif", Georgia, "Times New Roman", serif; } /** * Serif Italic */ -article blockquote:lang(zh-Latn), article blockquote:lang(ja-Latn), article blockquote:not(:lang(zh)):not(:lang(ja)), +article blockquote:lang(zh-Latn), +article blockquote:lang(ja-Latn), +article blockquote:not(:lang(zh)):not(:lang(ja)), article blockquote *:lang(zh-Latn), article blockquote *:lang(ja-Latn), article blockquote *:not(:lang(zh)):not(:lang(ja)) { font-family: Georgia, "Times New Roman", "Han Kaiti", cursive, serif; } -article blockquote:lang(zh), article blockquote:lang(zh-Hant) { +article blockquote:lang(zh), +article blockquote:lang(zh-Hant) { font-family: "Biaodian Pro Serif CNS", "Numeral LF Serif", Georgia, "Times New Roman", "Zhuyin Kaiti", "Han Kaiti", cursive, serif; } -article blockquote:lang(zh-Hans), article blockquote:lang(zh-CN) { +article blockquote:lang(zh-Hans), +article blockquote:lang(zh-CN) { font-family: "Biaodian Pro Serif GB", "Numeral LF Serif", Georgia, "Times New Roman", "Han Kaiti GB", cursive, serif; } @@ -1706,7 +1915,9 @@ article blockquote:lang(ja) { /** * Cursive Italic */ -i:lang(zh-Latn), i:lang(ja-Latn), i:not(:lang(zh)):not(:lang(ja)), +i:lang(zh-Latn), +i:lang(ja-Latn), +i:not(:lang(zh)):not(:lang(ja)), i *:lang(zh-Latn), i *:lang(ja-Latn), i *:not(:lang(zh)):not(:lang(ja)), @@ -1719,13 +1930,15 @@ var *:not(:lang(zh)):not(:lang(ja)) { font-family: "Latin Italic Serif", Georgia, "Times New Roman", "Han Kaiti", cursive, serif; } -i:lang(zh), i:lang(zh-Hant), +i:lang(zh), +i:lang(zh-Hant), var:lang(zh), var:lang(zh-Hant) { font-family: "Biaodian Pro Serif CNS", "Numeral LF Italic Serif", "Latin Italic Serif", Georgia, "Times New Roman", "Zhuyin Kaiti", "Han Kaiti", cursive, serif; } -i:lang(zh-Hans), i:lang(zh-CN), +i:lang(zh-Hans), +i:lang(zh-CN), var:lang(zh-Hans), var:lang(zh-CN) { font-family: "Biaodian Pro Serif GB", "Numeral LF Italic Serif", "Latin Italic Serif", Georgia, "Times New Roman", "Han Kaiti GB", cursive, serif; @@ -1736,7 +1949,9 @@ var:lang(ja) { font-family: "Yakumono Serif", "Numeral LF Italic Serif", "Latin Italic Serif", Georgia, "Times New Roman", cursive, serif; } -code:lang(zh-Latn), code:lang(ja-Latn), code:not(:lang(zh)):not(:lang(ja)), +code:lang(zh-Latn), +code:lang(ja-Latn), +code:not(:lang(zh)):not(:lang(ja)), code *:lang(zh-Latn), code *:lang(ja-Latn), code *:not(:lang(zh)):not(:lang(ja)), @@ -1761,7 +1976,8 @@ pre *:not(:lang(zh)):not(:lang(ja)) { font-family: Menlo, Consolas, Courier, "Han Heiti", monospace, monospace, sans-serif; } -code:lang(zh), code:lang(zh-Hant), +code:lang(zh), +code:lang(zh-Hant), kbd:lang(zh), kbd:lang(zh-Hant), samp:lang(zh), @@ -1771,7 +1987,8 @@ pre:lang(zh-Hant) { font-family: "Biaodian Pro Sans CNS", Menlo, Consolas, Courier, "Zhuyin Heiti", "Han Heiti", monospace, monospace, sans-serif; } -code:lang(zh-Hans), code:lang(zh-CN), +code:lang(zh-Hans), +code:lang(zh-CN), kbd:lang(zh-Hans), kbd:lang(zh-CN), samp:lang(zh-Hans), @@ -1788,20 +2005,28 @@ pre:lang(ja) { font-family: "Yakumono Sans", Menlo, Consolas, Courier, monospace, monospace, sans-serif; } -html, ruby ru[zhuyin] zhuyin, +html, +ruby ru[zhuyin] zhuyin, ruby ru[zhuyin] zhuyin diao, hruby ru[zhuyin] zhuyin, -hruby ru[zhuyin] zhuyin diao, ruby.romanization rt, +hruby ru[zhuyin] zhuyin diao, +ruby.romanization rt, ruby ru[annotation]:before, hruby.romanization rt, -hruby ru[annotation]:before, .no-unicoderange char.biaodian.liga, .no-unicoderange -char.biaodian[unicode='b7'] { +hruby ru[annotation]:before, +.no-unicoderange char.biaodian.liga, +.no-unicoderange char.biaodian[unicode="b7"] { -moz-font-feature-settings: "liga"; -ms-font-feature-settings: "liga"; -webkit-font-feature-settings: "liga"; font-feature-settings: "liga"; } +i, +var { + font-style: inherit; +} + ruby ru[zhuyin] zhuyin diao, hruby ru[zhuyin] zhuyin diao { font-family: "Zhuyin Kaiti", cursive, serif; @@ -1813,16 +2038,16 @@ hruby ru[annotation]:before { font-family: "Romanization Sans", "Helvetica Neue", Helvetica, Arial, "Han Heiti", sans-serif; } -/* Global - * ========================================================================== */ -.no-kaiti i, .no-kaiti -var { - padding-bottom: 0.05em; +/* Global + -------- */ +.no-kaiti i, +.no-kaiti var { + padding-bottom: .05em; border-bottom: 3px double lightgrey; } -/* Section-wise arrangement - * ========================================================================== */ +/* Section-wise arrangement + -------------------------- */ /** * Well-knit sections for articles */ @@ -1843,7 +2068,8 @@ article h1 + section > h6:first-child, article h1 + section > p:first-child, article h1 + section > ol:first-child, article h1 + section > ul:first-child, -article h1 + section > blockquote:first-child, article h2 + blockquote, +article h1 + section > blockquote:first-child, +article h2 + blockquote, article h2 + p, article h2 + ol, article h2 + ul, @@ -1852,7 +2078,8 @@ article h2 + section > h6:first-child, article h2 + section > p:first-child, article h2 + section > ol:first-child, article h2 + section > ul:first-child, -article h2 + section > blockquote:first-child, article h3 + blockquote, +article h2 + section > blockquote:first-child, +article h3 + blockquote, article h3 + p, article h3 + ol, article h3 + ul, @@ -1861,7 +2088,8 @@ article h3 + section > h6:first-child, article h3 + section > p:first-child, article h3 + section > ol:first-child, article h3 + section > ul:first-child, -article h3 + section > blockquote:first-child, article h4 + blockquote, +article h3 + section > blockquote:first-child, +article h4 + blockquote, article h4 + p, article h4 + ol, article h4 + ul, @@ -1870,7 +2098,8 @@ article h4 + section > h6:first-child, article h4 + section > p:first-child, article h4 + section > ol:first-child, article h4 + section > ul:first-child, -article h4 + section > blockquote:first-child, article h5 + blockquote, +article h4 + section > blockquote:first-child, +article h5 + blockquote, article h5 + p, article h5 + ol, article h5 + ul, @@ -1879,7 +2108,8 @@ article h5 + section > h6:first-child, article h5 + section > p:first-child, article h5 + section > ol:first-child, article h5 + section > ul:first-child, -article h5 + section > blockquote:first-child, article h6 + blockquote, +article h5 + section > blockquote:first-child, +article h6 + blockquote, article h6 + p, article h6 + ol, article h6 + ul, @@ -1888,20 +2118,34 @@ article h6 + section > h6:first-child, article h6 + section > p:first-child, article h6 + section > ol:first-child, article h6 + section > ul:first-child, -article h6 + section > blockquote:first-child, article h1 + h5, -article h1 + section > h5:first-child, article h2 + h5, -article h2 + section > h5:first-child, article h3 + h5, -article h3 + section > h5:first-child, article h4 + h5, -article h4 + section > h5:first-child, article h5 + h5, -article h5 + section > h5:first-child, article h1 + h4, -article h1 + section > h4:first-child, article h2 + h4, -article h2 + section > h4:first-child, article h3 + h4, -article h3 + section > h4:first-child, article h4 + h4, -article h4 + section > h4:first-child, article h1 + h3, -article h1 + section > h3:first-child, article h2 + h3, -article h2 + section > h3:first-child, article h3 + h3, -article h3 + section > h3:first-child, article h1 + h2, -article h1 + section > h2:first-child, article h2 + h2, +article h6 + section > blockquote:first-child, +article h1 + h5, +article h1 + section > h5:first-child, +article h2 + h5, +article h2 + section > h5:first-child, +article h3 + h5, +article h3 + section > h5:first-child, +article h4 + h5, +article h4 + section > h5:first-child, +article h5 + h5, +article h5 + section > h5:first-child, +article h1 + h4, +article h1 + section > h4:first-child, +article h2 + h4, +article h2 + section > h4:first-child, +article h3 + h4, +article h3 + section > h4:first-child, +article h4 + h4, +article h4 + section > h4:first-child, +article h1 + h3, +article h1 + section > h3:first-child, +article h2 + h3, +article h2 + section > h3:first-child, +article h3 + h3, +article h3 + section > h3:first-child, +article h1 + h2, +article h1 + section > h2:first-child, +article h2 + h2, article h2 + section > h2:first-child { margin-top: -1em; } @@ -1943,19 +2187,20 @@ article blockquote blockquote { margin-right: 1em; } } + /** * Sectional counter for articles */ -/* Line composition - * ========================================================================== */ +/* Line composition + ------------------ */ /** * Customised emphasis mark (着重號) */ /** * Basic Biaodian correction for Firefox */ -.no-unicoderange char.biaodian.liga, .no-unicoderange -char.biaodian[unicode='b7'] { +.no-unicoderange char.biaodian.liga, +.no-unicoderange char.biaodian[unicode="b7"] { font-family: "Biaodian Basic", "Han Heiti"; } @@ -1969,33 +2214,57 @@ hws { display: inline; visibility: hidden; font-family: Arial, sans-serif !important; - font-size: 0.89em; -} -code hws, kbd hws, samp hws, pre hws, ol > hws, ul > hws { + font-size: .89em; +} +code hws, +kbd hws, +samp hws, +pre hws, +ol > hws, +ul > hws, +table > hws, +thead > hws, +tbody > hws, +tfoot > hws, +tr > hws { display: none; } /** * Consecutive CJK Biaodian positioning (CJK標點擠壓) */ -char_group .open:not(:last-child), char_group -.close:not(:last-child), char_group -[unicode='3001']:not(:last-child), char_group -[unicode='3002']:not(:last-child), char_group -[unicode='ff0c']:not(:last-child), char_group -[unicode='ff08']:not(:last-child) { - letter-spacing: -0.5em; +char_group .open:not(:last-child), +char_group .close:not(:last-child), +char_group [unicode="3001"]:not(:last-child), +char_group [unicode="3002"]:not(:last-child), +char_group [unicode="ff0c"]:not(:last-child), +char_group [unicode="ff08"]:not(:last-child) { + letter-spacing: -.5em; +} + +char_group [unicode="3001"]:lang(zh-Hant):not(:last-child), +char_group [unicode="3002"]:lang(zh-Hant):not(:last-child), +char_group [unicode="ff0c"]:lang(zh-Hant):not(:last-child), +char_group [unicode="ff08"]:lang(zh-Hant):not(:last-child) { + letter-spacing: inherit; +} +char_group [unicode="3001"]:lang(zh-Hant) + .open, +char_group [unicode="3002"]:lang(zh-Hant) + .open, +char_group [unicode="ff0c"]:lang(zh-Hant) + .open, +char_group [unicode="ff08"]:lang(zh-Hant) + .open { + margin-left: -.5em; } -char_group [unicode='b7'] + [unicode='300c'], char_group [unicode='b7'] + [unicode='300e'], char_group -[unicode='30fb'] + [unicode='300c'], char_group -[unicode='30fb'] + [unicode='300e'] { - margin-left: -0.5em; +char_group [unicode="b7"] + [unicode="300c"], +char_group [unicode="b7"] + [unicode="300e"], +char_group [unicode="30fb"] + [unicode="300c"], +char_group [unicode="30fb"] + [unicode="300e"] { + margin-left: -.5em; } -char_group .liga + [unicode='300c'], char_group .liga + -[unicode='300e'] { - margin-left: -0.25em; +char_group .liga + [unicode="300c"], +char_group .liga + [unicode="300e"] { + margin-left: -.25em; } /** diff --git a/latest/han.js b/latest/han.js index 7c2171db..fece1647 100644 --- a/latest/han.js +++ b/latest/han.js @@ -1,9 +1,9 @@ /*! - * 漢字標準格式 v3.0.2 | MIT License | css.hanzi.co - * Han: CSS typography framework optimised for Hanzi + * 漢字標準格式 v3.1.0 | MIT License | css.hanzi.co + * Han.css: the CSS typography framework optimised for Hanzi */ -void (function( global, factory ) { +void function( global, factory ) { // CommonJS if ( typeof module === 'object' && typeof module.exports === 'object' ) { @@ -12,9 +12,9 @@ void (function( global, factory ) { factory( global ) } -})( typeof window !== 'undefined' ? window : this, function( window, noGlobalNS ) { +}( typeof window !== 'undefined' ? window : this, function( window, noGlobalNS ) { - 'use strict' +'use strict' var document = window.document @@ -22,45 +22,43 @@ var root = document.documentElement var body = document.body +var VERSION = '3.1.0' + +var ROUTINE = [ + // Initialise the condition with feature-detecting + // classes (Modernizr-alike), binding onto the root + // element, possibly ``. + 'initCond', + // Address element normalisation + 'renderElem', + // Handle Biaodian + //'jinzify', + 'renderJiya', + // Address Hanzi and Western script mixed spacing + 'renderHWS', + // Address Basic Biaodian correction in Firefox + 'correctBasicBD', + // Address presentational correction to combining ligatures + 'substCombLigaWithPUA' + // Address semantic correction to inaccurate characters + // **Note:** inactivated by default + // 'substInaccurateChar' +] + +// Define Han +var Han = function( context, condition ) { + return new Han.fn.init( context, condition ) +} - -var VERSION = '3.0.2', - - ROUTINE = [ - // Initialise the condition with feature-detecting - // classes (Modernizr-alike), binding onto the root - // element, possibly ``. - 'initCond', - // Address element normalisation - 'renderElem', - // Handle Biaodian - //'jinzify', - 'renderJiya', - // Address Hanzi and Western script mixed spacing - 'renderHWS', - // Address Basic Biaodian correction in Firefox - 'correctBasicBD', - // Address presentational correction to combining ligatures - 'substCombLigaWithPUA' - // Address semantic correction to inaccurate characters - // **Note:** inactivated by default - // 'substInaccurateChar' - ], - - // Define Han - Han = function( context, condition ) { - return new Han.fn.init( context, condition ) - }, - - init = function() { - if ( arguments[ 0 ] ) { - this.context = arguments[ 0 ] - } - if ( arguments[ 1 ] ) { - this.condition = arguments[ 1 ] - } - return this - } +var init = function() { + if ( arguments[ 0 ] ) { + this.context = arguments[ 0 ] + } + if ( arguments[ 1 ] ) { + this.condition = arguments[ 1 ] + } + return this +} Han.version = VERSION @@ -91,17 +89,16 @@ Han.fn = Han.prototype = { // only once. The method won't alter the routine in // the instance or in the prototype chain. render: function( routine ) { - var that = this, - routine = Array.isArray( routine ) ? - routine : this.routine + var it = this + var routine = Array.isArray( routine ) ? routine : this.routine routine .forEach(function( method ) { try { - if ( typeof method === 'string' ){ - that[ method ]() + if ( typeof method === 'string' ) { + it[ method ]() } else if ( Array.isArray( method )) { - that[ method.shift() ].apply( that, method ) + it[ method.shift() ].apply( it, method ) } } catch ( e ) {} }) @@ -122,355 +119,352 @@ Han.init = function() { return Han.init = Han().render() } - var UNICODE = { - /** - * Western punctuation (西文標點符號) - */ - punct: { - base: '[\u2026,.;:!?\u203D_]', - sing: '[\u2010-\u2014\u2026]', - middle: '[\\\/~\\-&\u2010-\u2014_]', - open: '[\'"‘“\\(\\[\u00A1\u00BF\u2E18\u00AB\u2039\u201A\u201C\u201E]', - close: '[\'"”’\\)\\]\u00BB\u203A\u201B\u201D\u201F]', - end: '[\'"”’\\)\\]\u00BB\u203A\u201B\u201D\u201F\u203C\u203D\u2047-\u2049,.;:!?]', - }, + /** + * Western punctuation (西文標點符號) + */ + punct: { + base: '[\u2026,.;:!?\u203D_]', + sing: '[\u2010-\u2014\u2026]', + middle: '[\\\/~\\-&\u2010-\u2014_]', + open: '[\'"‘“\\(\\[\u00A1\u00BF\u2E18\u00AB\u2039\u201A\u201C\u201E]', + close: '[\'"”’\\)\\]\u00BB\u203A\u201B\u201D\u201F]', + end: '[\'"”’\\)\\]\u00BB\u203A\u201B\u201D\u201F\u203C\u203D\u2047-\u2049,.;:!?]', + }, - /** - * CJK biaodian (CJK標點符號) - */ - biaodian: { - base: '[︰.、,。:;?!ー]', - liga: '[—…⋯]', - middle: '[·\/-゠\uFF06\u30FB\uFF3F]', - open: '[「『《〈(〔[{【〖]', - close: '[」』》〉)〕]}】〗]', - end: '[」』》〉)〕]}】〗︰.、,。:;?!ー]' - }, + /** + * CJK biaodian (CJK標點符號) + */ + biaodian: { + base: '[︰.、,。:;?!ー]', + liga: '[—…⋯]', + middle: '[·\/-゠\uFF06\u30FB\uFF3F]', + open: '[「『《〈(〔[{【〖]', + close: '[」』》〉)〕]}】〗]', + end: '[」』》〉)〕]}】〗︰.、,。:;?!ー]' + }, - /** - * CJK-related blocks (CJK相關字符區段) - * - * 1. 中日韓統一表意文字:[\u4E00-\u9FFF] - Basic CJK unified ideographs - * 2. 擴展-A區:[\u3400-\u4DB5] - Extended-A - * 3. 擴展-B區:[\u20000-\u2A6D6]([\uD840-\uD869][\uDC00-\uDED6]) - Extended-B - * 4. 擴展-C區:[\u2A700-\u2B734](\uD86D[\uDC00-\uDF3F]|[\uD86A-\uD86C][\uDC00-\uDFFF]|\uD869[\uDF00-\uDFFF]) - Extended-C - * 5. 擴展-D區:[\u2B740-\u2B81D](急用漢字,\uD86D[\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1F]) - Extended-D - * 6. 擴展-E區:[\u2B820-\u2F7FF](暫未支援) - Extended-E (not supported yet) - * 7. 擴展-F區(暫未支援) - Extended-F (not supported yet) - * 8. 筆畫區:[\u31C0-\u31E3] - Strokes - * 9. 表意數字「〇」:[\u3007] - Ideographic number zero - * 10. 相容表意文字及補充:[\uF900-\uFAFF][\u2F800-\u2FA1D](不使用) - Compatibility ideograph and supplement (not supported) - - 12 exceptions: - [\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29] - - https://zh.wikipedia.org/wiki/中日韓統一表意文字#cite_note-1 - - * 11. 康熙字典及簡化字部首:[\u2F00-\u2FD5\u2E80-\u2EF3] - Kangxi and supplement radicals - * 12. 表意文字描述字元:[\u2FF0-\u2FFA] - Ideographic description characters - */ - hanzi: { - base: '[\u4E00-\u9FFF\u3400-\u4DB5\u31C0-\u31E3\u3007\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD800-\uDBFF][\uDC00-\uDFFF]', - desc: '[\u2FF0-\u2FFA]', - radical: '[\u2F00-\u2FD5\u2E80-\u2EF3]' - }, + /** + * CJK-related blocks (CJK相關字符區段) + * + * 1. 中日韓統一表意文字:[\u4E00-\u9FFF] + Basic CJK unified ideographs + * 2. 擴展-A區:[\u3400-\u4DB5] + Extended-A + * 3. 擴展-B區:[\u20000-\u2A6D6]([\uD840-\uD869][\uDC00-\uDED6]) + Extended-B + * 4. 擴展-C區:[\u2A700-\u2B734](\uD86D[\uDC00-\uDF3F]|[\uD86A-\uD86C][\uDC00-\uDFFF]|\uD869[\uDF00-\uDFFF]) + Extended-C + * 5. 擴展-D區:[\u2B740-\u2B81D](急用漢字,\uD86D[\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1F]) + Extended-D + * 6. 擴展-E區:[\u2B820-\u2F7FF](暫未支援) + Extended-E (not supported yet) + * 7. 擴展-F區(暫未支援) + Extended-F (not supported yet) + * 8. 筆畫區:[\u31C0-\u31E3] + Strokes + * 9. 表意數字「〇」:[\u3007] + Ideographic number zero + * 10. 相容表意文字及補充:[\uF900-\uFAFF][\u2F800-\u2FA1D](不使用) + Compatibility ideograph and supplement (not supported) + + 12 exceptions: + [\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29] + + https://zh.wikipedia.org/wiki/中日韓統一表意文字#cite_note-1 + + * 11. 康熙字典及簡化字部首:[\u2F00-\u2FD5\u2E80-\u2EF3] + Kangxi and supplement radicals + * 12. 表意文字描述字元:[\u2FF0-\u2FFA] + Ideographic description characters + */ + hanzi: { + base: '[\u4E00-\u9FFF\u3400-\u4DB5\u31C0-\u31E3\u3007\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD800-\uDBFF][\uDC00-\uDFFF]', + desc: '[\u2FF0-\u2FFA]', + radical: '[\u2F00-\u2FD5\u2E80-\u2EF3]' + }, - /** - * Latin script blocks (拉丁字母區段) - * - * 1. 基本拉丁字母:A-Za-z - Basic Latin - * 2. 阿拉伯數字:0-9 - Digits - * 3. 補充-1:[\u00C0-\u00FF] - Latin-1 supplement - * 4. 擴展-A區:[\u0100-\u017F] - Extended-A - * 5. 擴展-B區:[\u0180-\u024F] - Extended-B - * 5. 擴展-C區:[\u2C60-\u2C7F] - Extended-C - * 5. 擴展-D區:[\uA720-\uA7FF] - Extended-D - * 6. 附加區:[\u1E00-\u1EFF] - Extended additional - * 7. 變音組字符:[\u0300-\u0341\u1DC0-\u1DFF] - Combining diacritical marks - */ - latin: { - base: '[A-Za-z0-9\u00C0-\u00FF\u0100-\u017F\u0180-\u024F\u2C60-\u2C7F\uA720-\uA7FF\u1E00-\u1EFF]', - combine: '[\u0300-\u0341\u1DC0-\u1DFF]' - }, + /** + * Latin script blocks (拉丁字母區段) + * + * 1. 基本拉丁字母:A-Za-z + Basic Latin + * 2. 阿拉伯數字:0-9 + Digits + * 3. 補充-1:[\u00C0-\u00FF] + Latin-1 supplement + * 4. 擴展-A區:[\u0100-\u017F] + Extended-A + * 5. 擴展-B區:[\u0180-\u024F] + Extended-B + * 5. 擴展-C區:[\u2C60-\u2C7F] + Extended-C + * 5. 擴展-D區:[\uA720-\uA7FF] + Extended-D + * 6. 附加區:[\u1E00-\u1EFF] + Extended additional + * 7. 變音組字符:[\u0300-\u0341\u1DC0-\u1DFF] + Combining diacritical marks + */ + latin: { + base: '[A-Za-z0-9\u00C0-\u00FF\u0100-\u017F\u0180-\u024F\u2C60-\u2C7F\uA720-\uA7FF\u1E00-\u1EFF]', + combine: '[\u0300-\u0341\u1DC0-\u1DFF]' + }, - /** - * Elli̱niká (Greek) script blocks (希臘字母區段) - * - * 1. 希臘字母及擴展:[\u0370–\u03FF\u1F00-\u1FFF] - Basic Greek & Greek Extended - * 2. 阿拉伯數字:0-9 - Digits - * 3. 希臘字母變音組字符:[\u0300-\u0345\u1DC0-\u1DFF] - Combining diacritical marks - */ - ellinika: { - base: '[0-9\u0370-\u03FF\u1F00-\u1FFF]', - combine: '[\u0300-\u0345\u1DC0-\u1DFF]' - }, + /** + * Elli̱niká (Greek) script blocks (希臘字母區段) + * + * 1. 希臘字母及擴展:[\u0370–\u03FF\u1F00-\u1FFF] + Basic Greek & Greek Extended + * 2. 阿拉伯數字:0-9 + Digits + * 3. 希臘字母變音組字符:[\u0300-\u0345\u1DC0-\u1DFF] + Combining diacritical marks + */ + ellinika: { + base: '[0-9\u0370-\u03FF\u1F00-\u1FFF]', + combine: '[\u0300-\u0345\u1DC0-\u1DFF]' + }, - /** - * Kirillica (Cyrillic) script blocks (西里爾字母區段) - * - * 1. 西里爾字母及補充:[\u0400-\u0482\u048A-\u04FF\u0500-\u052F] - Basic Cyrillic and supplement - * 2. 擴展B區:[\uA640-\uA66E\uA67E-\uA697] - Extended-B - * 3. 阿拉伯數字:0-9 - Digits - * 4. 西里爾字母組字符:[\u0483-\u0489\u2DE0-\u2DFF\uA66F-\uA67D\uA69F](位擴展A、B區) - Cyrillic combining diacritical marks (in extended-A, B) - */ - kirillica: { - base: '[0-9\u0400-\u0482\u048A-\u04FF\u0500-\u052F\uA640-\uA66E\uA67E-\uA697]', - combine: '[\u0483-\u0489\u2DE0-\u2DFF\uA66F-\uA67D\uA69F]' + /** + * Kirillica (Cyrillic) script blocks (西里爾字母區段) + * + * 1. 西里爾字母及補充:[\u0400-\u0482\u048A-\u04FF\u0500-\u052F] + Basic Cyrillic and supplement + * 2. 擴展B區:[\uA640-\uA66E\uA67E-\uA697] + Extended-B + * 3. 阿拉伯數字:0-9 + Digits + * 4. 西里爾字母組字符:[\u0483-\u0489\u2DE0-\u2DFF\uA66F-\uA67D\uA69F](位擴展A、B區) + Cyrillic combining diacritical marks (in extended-A, B) + */ + kirillica: { + base: '[0-9\u0400-\u0482\u048A-\u04FF\u0500-\u052F\uA640-\uA66E\uA67E-\uA697]', + combine: '[\u0483-\u0489\u2DE0-\u2DFF\uA66F-\uA67D\uA69F]' + }, + + /** + * Kana (假名) + * + * 1. 日文假名:[\u30A2\u30A4\u30A6\u30A8\u30AA-\u30FA\u3042\u3044\u3046\u3048\u304A-\u3094\u309F\u30FF] + Japanese Kana + * 2. 假名補充[\u1B000\u1B001](\uD82C[\uDC00-\uDC01]) + Kana supplement + * 3. 日文假名小寫:[\u3041\u3043\u3045\u3047\u3049\u30A1\u30A3\u30A5\u30A7\u30A9\u3063\u3083\u3085\u3087\u308E\u3095\u3096\u30C3\u30E3\u30E5\u30E7\u30EE\u30F5\u30F6\u31F0-\u31FF] + Japanese small Kana + * 4. 假名組字符:[\u3099-\u309C] + Kana combining characters + * 5. 半形假名:[\uFF66-\uFF9F] + Halfwidth Kana + * 6. 符號:[\u309D\u309E\u30FB-\u30FE] + Marks + */ + kana: { + base: '[\u30A2\u30A4\u30A6\u30A8\u30AA-\u30FA\u3042\u3044\u3046\u3048\u304A-\u3094\u309F\u30FF]|\uD82C[\uDC00-\uDC01]', + small: '[\u3041\u3043\u3045\u3047\u3049\u30A1\u30A3\u30A5\u30A7\u30A9\u3063\u3083\u3085\u3087\u308E\u3095\u3096\u30C3\u30E3\u30E5\u30E7\u30EE\u30F5\u30F6\u31F0-\u31FF]', + combine: '[\u3099-\u309C]', + half: '[\uFF66-\uFF9F]', + mark: '[\u30A0\u309D\u309E\u30FB-\u30FE]' + }, + + /** + * Eonmun (Hangul, 諺文) + * + * 1. 諺文音節:[\uAC00-\uD7A3] + Eonmun (Hangul) syllables + * 2. 諺文字母:[\u1100-\u11FF\u314F-\u3163\u3131-\u318E\uA960-\uA97C\uD7B0-\uD7FB] + Eonmun (Hangul) letters + * 3. 半形諺文字母:[\uFFA1-\uFFDC] + Halfwidth Eonmun (Hangul) letters + */ + eonmun: { + base: '[\uAC00-\uD7A3]', + letter: '[\u1100-\u11FF\u314F-\u3163\u3131-\u318E\uA960-\uA97C\uD7B0-\uD7FB]', + half: '[\uFFA1-\uFFDC]' + }, + + /** + * Zhuyin (注音符號, Mandarin & Dialect Phonetic Symbols) + * + * 1. 國語注音、方言音符號:[\u3105-\u312D][\u31A0-\u31BA] + Bopomofo phonetic symbols + * 2. 國語陰陽上去聲調號:[\u02D9\u02CA\u02C5\u02C7\u02CB] (**註:**三聲包含乙個不合規範的符號) + Tones for Mandarin + * 3. 方言音陰、陽去聲調號:[\u02EA\u02EB] + Departing tones in dialects + * 4. 方言音陰、陽入韻:[\u31B4-\u31B7][\u0358\u030d]? + Checked tones in dialects + */ + zhuyin: { + base: '[\u3105-\u312D\u31A0-\u31BA]', + initial: '[\u3105-\u3119\u312A-\u312C\u31A0-\u31A3]', + medial: '[\u3127-\u3129]', + final: '[\u311A-\u3129\u312D\u31A4-\u31B3\u31B8-\u31BA]', + tone: '[\u02D9\u02CA\u02C5\u02C7\u02CB\u02EA\u02EB]', + ruyun: '[\u31B4-\u31B7][\u0358\u030d]?' + } +} + +var TYPESET = (function() { + var rWhite = '[\\x20\\t\\r\\n\\f]' + // Whitespace characters + // http://www.w3.org/TR/css3-selectors/#whitespace + + var rPtOpen = UNICODE.punct.open + var rPtClose = UNICODE.punct.close + var rPtEnd = UNICODE.punct.end + var rPtMid = UNICODE.punct.middle + var rPtSing = UNICODE.punct.sing + var rPt = rPtOpen + '|' + rPtEnd + '|' + rPtMid + + var rBdOpen = UNICODE.biaodian.open + var rBdClose = UNICODE.biaodian.close + var rBdEnd = UNICODE.biaodian.end + var rBdMid = UNICODE.biaodian.middle + var rBdLiga = UNICODE.biaodian.liga + '{2}' + var rBd = rBdOpen + '|' + rBdEnd + '|' + rBdMid + + var rKana = UNICODE.kana.base + UNICODE.kana.combine + '?' + var rKanaS = UNICODE.kana.small + UNICODE.kana.combine + '?' + var rKanaH = UNICODE.kana.half + var rEon = UNICODE.eonmun.base + '|' + UNICODE.eonmun.letter + var rEonH = UNICODE.eonmun.half + + var rHan = UNICODE.hanzi.base + '|' + UNICODE.hanzi.desc + '|' + UNICODE.hanzi.radical + '|' + rKana + + var rCbn = UNICODE.ellinika.combine + var rLatn = UNICODE.latin.base + rCbn + '*' + var rGk = UNICODE.ellinika.base + rCbn + '*' + + var rCyCbn = UNICODE.kirillica.combine + var rCy = UNICODE.kirillica.base + rCyCbn + '*' + + var rAlph = rLatn + '|' + rGk + '|' + rCy + + // For words like `it's`, `Jones’s` or `'99` + var rApo = '[\u0027\u2019]' + var rChar = rHan + '|(' + rAlph + '|' + rApo + ')+' + + var rZyS = UNICODE.zhuyin.initial + var rZyJ = UNICODE.zhuyin.medial + var rZyY = UNICODE.zhuyin.final + var rZyD = UNICODE.zhuyin.tone + '|' + UNICODE.zhuyin.ruyun + + return { + /* Character-level selector (字級選擇器) + */ + char: { + punct: { + all: new RegExp( '(' + rPt + ')', 'g' ), + open: new RegExp( '(' + rPtOpen + ')', 'g' ), + end: new RegExp( '(' + rPtEnd + ')', 'g' ), + sing: new RegExp( '(' + rPtSing + ')', 'g' ) }, - /** - * Kana (假名) - * - * 1. 日文假名:[\u30A2\u30A4\u30A6\u30A8\u30AA-\u30FA\u3042\u3044\u3046\u3048\u304A-\u3094\u309F\u30FF] - Japanese Kana - * 2. 假名補充[\u1B000\u1B001](\uD82C[\uDC00-\uDC01]) - Kana supplement - * 3. 日文假名小寫:[\u3041\u3043\u3045\u3047\u3049\u30A1\u30A3\u30A5\u30A7\u30A9\u3063\u3083\u3085\u3087\u308E\u3095\u3096\u30C3\u30E3\u30E5\u30E7\u30EE\u30F5\u30F6\u31F0-\u31FF] - Japanese small Kana - * 4. 假名組字符:[\u3099-\u309C] - Kana combining characters - * 5. 半形假名:[\uFF66-\uFF9F] - Halfwidth Kana - * 6. 符號:[\u309D\u309E\u30FB-\u30FE] - Marks - */ - kana: { - base: '[\u30A2\u30A4\u30A6\u30A8\u30AA-\u30FA\u3042\u3044\u3046\u3048\u304A-\u3094\u309F\u30FF]|\uD82C[\uDC00-\uDC01]', - small: '[\u3041\u3043\u3045\u3047\u3049\u30A1\u30A3\u30A5\u30A7\u30A9\u3063\u3083\u3085\u3087\u308E\u3095\u3096\u30C3\u30E3\u30E5\u30E7\u30EE\u30F5\u30F6\u31F0-\u31FF]', - combine: '[\u3099-\u309C]', - half: '[\uFF66-\uFF9F]', - mark: '[\u30A0\u309D\u309E\u30FB-\u30FE]' + biaodian: { + all: new RegExp( '(' + rBd + ')', 'g' ), + open: new RegExp( '(' + rBdOpen + ')', 'g' ), + close: new RegExp( '(' + rBdClose + ')', 'g' ), + end: new RegExp( '(' + rBdEnd + ')', 'g' ), + liga: new RegExp( '(' + rBdLiga + ')', 'g' ), + + group: [ + new RegExp( '(' + rBdOpen + '|' + rBdMid + '|' + rBdEnd + '){2,}', 'g' ), + new RegExp( '(' + rBdLiga + rBdOpen + ')', 'g' ) + ] }, - /** - * Eonmun (Hangul, 諺文) - * - * 1. 諺文音節:[\uAC00-\uD7A3] - Eonmun (Hangul) syllables - * 2. 諺文字母:[\u1100-\u11FF\u314F-\u3163\u3131-\u318E\uA960-\uA97C\uD7B0-\uD7FB] - Eonmun (Hangul) letters - * 3. 半形諺文字母:[\uFFA1-\uFFDC] - Halfwidth Eonmun (Hangul) letters - */ - eonmun: { - base: '[\uAC00-\uD7A3]', - letter: '[\u1100-\u11FF\u314F-\u3163\u3131-\u318E\uA960-\uA97C\uD7B0-\uD7FB]', - half: '[\uFFA1-\uFFDC]' + hanzi: { + individual: new RegExp( '(' + rHan + ')', 'g' ), + group: new RegExp( '(' + rHan + ')+', 'g' ) }, - /** - * Zhuyin (注音符號, Mandarin & Dialect Phonetic Symbols) - * - * 1. 國語注音、方言音符號:[\u3105-\u312D][\u31A0-\u31BA] - Bopomofo phonetic symbols - * 2. 國語陰陽上去聲調號:[\u02D9\u02CA\u02C5\u02C7\u02CB] (**註:**三聲包含乙個不合規範的符號) - Tones for Mandarin - * 3. 方言音陰、陽去聲調號:[\u02EA\u02EB] - Departing tones in dialects - * 4. 方言音陰、陽入韻:[\u31B4-\u31B7][\u0358\u030d]? - Checked tones in dialects - */ - zhuyin: { - base: '[\u3105-\u312D\u31A0-\u31BA]', - initial: '[\u3105-\u3119\u312A-\u312C\u31A0-\u31A3]', - medial: '[\u3127-\u3129]', - final: '[\u311A-\u3129\u312D\u31A4-\u31B3\u31B8-\u31BA]', - tone: '[\u02D9\u02CA\u02C5\u02C7\u02CB\u02EA\u02EB]', - ruyun: '[\u31B4-\u31B7][\u0358\u030d]?' + word: new RegExp( '(' + rLatn + '|' + rGk + '|' + rCy + '|' + rPt + ')+', 'ig' ), + + alphabet: { + latin: new RegExp( '(' + rLatn + ')', 'ig' ), + ellinika: new RegExp( '(' + rGk + ')', 'ig' ), + kirillica: new RegExp( '(' + rCy + ')', 'ig' ), + kana: new RegExp( '(' + rKana + ')', 'g' ), + smallkana: new RegExp( '(' + rKanaS + ')', 'g' ), + eonmun: new RegExp( '(' + rEon + ')', 'g' ), + halfeonmun: new RegExp( '(' + rEonH + ')', 'g' ) } - } + }, + /* Punctuation Rules (禁則) + */ + jinze: { + touwei: new RegExp( '(' + rBdOpen + '+)(' + rChar + ')(' + rBdEnd + '+)', 'ig' ), + tou: new RegExp( '(' + rBdOpen + '+)(' + rChar + ')', 'ig' ), + wei: new RegExp( '(' + rChar + ')(' + rBdEnd + '+)', 'ig' ), + middle: new RegExp( '(' + rChar + ')(' + rBdMid + ')(' + rChar + ')', 'ig' ) + }, -var TYPESET = (function() { - var rWhite = '[\\x20\\t\\r\\n\\f]', - // Whitespace characters - // http://www.w3.org/TR/css3-selectors/#whitespace - - rPtOpen = UNICODE.punct.open, - rPtClose = UNICODE.punct.close, - rPtEnd = UNICODE.punct.end, - rPtMid = UNICODE.punct.middle, - rPtSing = UNICODE.punct.sing, - rPt = rPtOpen + '|' + rPtEnd + '|' + rPtMid, - - rBdOpen = UNICODE.biaodian.open, - rBdClose = UNICODE.biaodian.close, - rBdEnd = UNICODE.biaodian.end, - rBdMid = UNICODE.biaodian.middle, - rBdLiga = UNICODE.biaodian.liga + '{2}', - rBd = rBdOpen + '|' + rBdEnd + '|' + rBdMid, - - rKana = UNICODE.kana.base + UNICODE.kana.combine + '?', - rKanaS = UNICODE.kana.small + UNICODE.kana.combine + '?', - rKanaH = UNICODE.kana.half, - rEon = UNICODE.eonmun.base + '|' + UNICODE.eonmun.letter, - rEonH = UNICODE.eonmun.half, - - rHan = UNICODE.hanzi.base + '|' + UNICODE.hanzi.desc + '|' + UNICODE.hanzi.radical + '|' + rKana, - - rCbn = UNICODE.ellinika.combine, - rLatn = UNICODE.latin.base + rCbn + '*', - rGk = UNICODE.ellinika.base + rCbn + '*', - - rCyCbn = UNICODE.kirillica.combine, - rCy = UNICODE.kirillica.base + rCyCbn + '*', - - rAlph = rLatn + '|' + rGk + '|' + rCy, - - // For words like `it's`, `Jones’s` or `'99` - rApo = '[\u0027\u2019]', - rChar = rHan + '|(' + rAlph + '|' + rApo + ')+', - - rZyS = UNICODE.zhuyin.initial, - rZyJ = UNICODE.zhuyin.medial, - rZyY = UNICODE.zhuyin.final, - rZyD = UNICODE.zhuyin.tone + '|' + UNICODE.zhuyin.ruyun - - return { - /* Character-level selector (字級選擇器) - */ - char: { - punct: { - all: new RegExp( '(' + rPt + ')', 'g' ), - open: new RegExp( '(' + rPtOpen + ')', 'g' ), - end: new RegExp( '(' + rPtEnd + ')', 'g' ), - sing: new RegExp( '(' + rPtSing + ')', 'g' ) - }, - - biaodian: { - all: new RegExp( '(' + rBd + ')', 'g' ), - open: new RegExp( '(' + rBdOpen + ')', 'g' ), - close: new RegExp( '(' + rBdClose + ')', 'g' ), - end: new RegExp( '(' + rBdEnd + ')', 'g' ), - liga: new RegExp( '(' + rBdLiga + ')', 'g' ), - - group: [ - new RegExp( '(' + rBdOpen + '|' + rBdMid + '|' + rBdEnd + '){2,}', 'g' ), - new RegExp( '(' + rBdLiga + rBdOpen + ')', 'g' ) - ] - }, - - hanzi: { - individual: new RegExp( '(' + rHan + ')', 'g' ), - group: new RegExp( '(' + rHan + ')+', 'g' ) - }, - - word: new RegExp( '(' + rLatn + '|' + rGk + '|' + rCy + '|' + rPt + ')+', 'ig' ), - - alphabet: { - latin: new RegExp( '(' + rLatn + ')', 'ig' ), - ellinika: new RegExp( '(' + rGk + ')', 'ig' ), - kirillica: new RegExp( '(' + rCy + ')', 'ig' ), - kana: new RegExp( '(' + rKana + ')', 'g' ), - smallkana: new RegExp( '(' + rKanaS + ')', 'g' ), - eonmun: new RegExp( '(' + rEon + ')', 'g' ), - halfeonmun: new RegExp( '(' + rEonH + ')', 'g' ) - } - }, - - /* Punctuation Rules (禁則) - */ - jinze: { - touwei: new RegExp( '(' + rBdOpen + '+)(' + rChar + ')(' + rBdEnd + '+)', 'ig' ), - tou: new RegExp( '(' + rBdOpen + '+)(' + rChar + ')', 'ig' ), - wei: new RegExp( '(' + rChar + ')(' + rBdEnd + '+)', 'ig' ), - middle: new RegExp( '(' + rChar + ')(' + rBdMid + ')(' + rChar + ')', 'ig' ) - }, - - zhuyin: { - form: new RegExp( '^\u02D9?(' + rZyS + ')?(' + rZyJ + ')?(' + rZyY + ')?(' + rZyD + ')?$' ), - diao: new RegExp( '(' + rZyD + ')', 'g' ) - }, - - /* Hanzi and Western mixed spacing (漢字西文混排間隙) - * - Basic mode - * - Strict mode - */ - hws: { - base: [ - new RegExp( '('+ rHan +')(' + rAlph + '|' + rPtOpen + ')', 'ig' ), - new RegExp( '('+ rAlph+ '|' + rPtEnd +')(' + rHan + ')', 'ig' ) - ], - - strict: [ - new RegExp( '('+ rHan +')' + rWhite + '?(' + rAlph + '|' + rPtOpen + ')', 'ig' ), - new RegExp( '('+ rAlph+ '|' + rPtEnd +')' + rWhite + '?(' + rHan + ')', 'ig' ) - ] - }, - - // The feature displays the following characters - // in its variant form for font consistency and - // presentational reason. Meanwhile, this won't - // alter the original character in the DOM. - 'display-as': { - 'ja-font-for-hant': [ - // '夠 够', - '查 査', - '啟 啓', - '鄉 鄕', - '值 値', - '污 汚' - ], - - 'comb-liga-pua': [ - [ '\u0061[\u030d\u0358]', '\uDB80\uDC61' ], - [ '\u0065[\u030d\u0358]', '\uDB80\uDC65' ], - [ '\u0069[\u030d\u0358]', '\uDB80\uDC69' ], - [ '\u006F[\u030d\u0358]', '\uDB80\uDC6F' ], - [ '\u0075[\u030d\u0358]', '\uDB80\uDC75' ], - - [ '\u31B4[\u030d\u0358]', '\uDB8C\uDDB4' ], - [ '\u31B5[\u030d\u0358]', '\uDB8C\uDDB5' ], - [ '\u31B6[\u030d\u0358]', '\uDB8C\uDDB6' ], - [ '\u31B7[\u030d\u0358]', '\uDB8C\uDDB7' ] - ] - }, - - // The feature actually *converts* the character - // in the DOM for semantic reason. - // - // Note that this could be aggressive. - 'inaccurate-char': [ - [ '[\u2022\u2027]', '\u00B7' ], - [ '\u22EF\u22EF', '\u2026\u2026' ], - [ '\u2500\u2500', '\u2014\u2014' ], - [ '\u2035', '\u2018' ], - [ '\u2032', '\u2019' ], - [ '\u2036', '\u201C' ], - [ '\u2033', '\u201D' ] - ] - } - })() + zhuyin: { + form: new RegExp( '^\u02D9?(' + rZyS + ')?(' + rZyJ + ')?(' + rZyY + ')?(' + rZyD + ')?$' ), + diao: new RegExp( '(' + rZyD + ')', 'g' ) + }, + + /* Hanzi and Western mixed spacing (漢字西文混排間隙) + * - Basic mode + * - Strict mode + */ + hws: { + base: [ + new RegExp( '('+ rHan +')(' + rAlph + '|' + rPtOpen + ')', 'ig' ), + new RegExp( '('+ rAlph+ '|' + rPtEnd +')(' + rHan + ')', 'ig' ) + ], + + strict: [ + new RegExp( '('+ rHan +')' + rWhite + '?(' + rAlph + '|' + rPtOpen + ')', 'ig' ), + new RegExp( '('+ rAlph+ '|' + rPtEnd +')' + rWhite + '?(' + rHan + ')', 'ig' ) + ] + }, + // The feature displays the following characters + // in its variant form for font consistency and + // presentational reason. Meanwhile, this won't + // alter the original character in the DOM. + 'display-as': { + 'ja-font-for-hant': [ + // '夠 够', + '查 査', + '啟 啓', + '鄉 鄕', + '值 値', + '污 汚' + ], + + 'comb-liga-pua': [ + [ '\u0061[\u030d\u0358]', '\uDB80\uDC61' ], + [ '\u0065[\u030d\u0358]', '\uDB80\uDC65' ], + [ '\u0069[\u030d\u0358]', '\uDB80\uDC69' ], + [ '\u006F[\u030d\u0358]', '\uDB80\uDC6F' ], + [ '\u0075[\u030d\u0358]', '\uDB80\uDC75' ], + + [ '\u31B4[\u030d\u0358]', '\uDB8C\uDDB4' ], + [ '\u31B5[\u030d\u0358]', '\uDB8C\uDDB5' ], + [ '\u31B6[\u030d\u0358]', '\uDB8C\uDDB6' ], + [ '\u31B7[\u030d\u0358]', '\uDB8C\uDDB7' ] + ] + }, + + // The feature actually *converts* the character + // in the DOM for semantic reason. + // + // Note that this could be aggressive. + 'inaccurate-char': [ + [ '[\u2022\u2027]', '\u00B7' ], + [ '\u22EF\u22EF', '\u2026\u2026' ], + [ '\u2500\u2500', '\u2014\u2014' ], + [ '\u2035', '\u2018' ], + [ '\u2032', '\u2019' ], + [ '\u2036', '\u201C' ], + [ '\u2033', '\u201D' ] + ] + } +})() Han.UNICODE = UNICODE Han.TYPESET = TYPESET @@ -486,755 +480,724 @@ Han.TYPESET.char.alphabet.greek = Han.TYPESET.char.alphabet.ellinika Han.TYPESET.char.alphabet.cyrillic = Han.TYPESET.char.alphabet.kirillica Han.TYPESET.char.alphabet.hangul = Han.TYPESET.char.alphabet.eonmun - var $ = { - // Simplified query selectors which return the node list - // in an array - id: function( selector, context ) { - return ( context || document ).getElementById( selector ) - }, - - tag: function( selector, context ) { - return this.makeArray( - ( context || document ).getElementsByTagName( selector ) - ) - }, + // Simplified query selectors which return the node list + // in an array + id: function( selector, context ) { + return ( context || document ).getElementById( selector ) + }, - qsa: function( selector, context ) { - return this.makeArray( - ( context || document ).querySelectorAll( selector ) - ) - }, + tag: function( selector, context ) { + return this.makeArray( + ( context || document ).getElementsByTagName( selector ) + ) + }, - matches: function( node, query ) { - var Efn = Element.prototype, - matches = Efn.matches || Efn.mozMatchesSelector || Efn.msMatchesSelector || Efn.webkitMatchesSelector + qsa: function( selector, context ) { + return this.makeArray( + ( context || document ).querySelectorAll( selector ) + ) + }, - try { - return matches.call( node, query ) - } catch (e) { - return false - } - }, + // Create a document fragment, a text node with text + // or an element with/without classes + create: function( elem, clazz ) { + var elem = '!' === elem ? + document.createDocumentFragment() : + '' === elem ? + document.createTextNode( clazz || '' ) : + document.createElement( elem ) - // Create a document fragment, a text node with text - // or an element with/without classes - create: function( elem, clazz ) { - var elem = '!' === elem ? - document.createDocumentFragment() : - '' === elem ? - document.createTextNode( clazz || '' ) : - document.createElement( elem ) - - try { - if ( clazz ) { - elem.className = clazz - } - } catch ( e ) {} + try { + if ( clazz ) { + elem.className = clazz + } + } catch (e) {} - return elem - }, + return elem + }, - // Clone a node (text, element or fragment) deeply or - // childlessly - clone: function( node, deep ) { - return node.cloneNode( deep || true ) - }, + // Clone a node (text, element or fragment) deeply or + // childlessly + clone: function( node, deep ) { + return node.cloneNode( deep || true ) + }, - // Remove a node (text, element or fragment) - remove: function( node, parent ) { - return ( parent || node.parentNode ).removeChild( node ) - }, + // Remove a node (text, element or fragment) + remove: function( node, parent ) { + return ( parent || node.parentNode ).removeChild( node ) + }, - // Set attributes all in once with an object - setAttr: function( target, attr ) { - var len = attr.length + // Set attributes all in once with an object + setAttr: function( target, attr ) { + if ( typeof attr !== 'object' ) return + var len = attr.length - if ( typeof attr !== 'object' ) { - return + // Native NamedNodeMap + if ( typeof attr[ 0 ] === 'object' && 'name' in attr[ 0 ] ) { + for ( var i = 0; i < len; i++ ) { + if ( attr[ i ].value !== undefined ) { + target.setAttribute( attr[ i ].name, attr[ i ].value ) } + } - // Native NamedNodeMap - if ( - typeof attr[ 0 ] === 'object' && - 'name' in attr[ 0 ] - ) { - for ( var i = 0; i < len; i++ ) { - if ( attr[ i ].value !== undefined ) { - target.setAttribute( attr[ i ].name, attr[ i ].value ) - } - } - - // Plain object - } else { - for ( var name in attr ) { - if ( - attr.hasOwnProperty( name ) && - attr[ name ] !== undefined - ) { - target.setAttribute( name, attr[ name ] ) - } - } + // Plain object + } else { + for ( var name in attr ) { + if ( attr.hasOwnProperty( name ) && attr[ name ] !== undefined ) { + target.setAttribute( name, attr[ name ] ) } - return target - }, + } + } + return target + }, - // Return if the current node should be ignored, - // `` or comments - isIgnorable: function( node ) { - return node.nodeName === 'WBR' || - node.nodeType === Node.COMMENT_NODE - }, + // Return if the current node should be ignored, + // `` or comments + isIgnorable: function( node ) { + return node.nodeName === 'WBR' || node.nodeType === Node.COMMENT_NODE + }, - // Convert array-like objects into real arrays - // for the native prototype methods - makeArray: function( obj ) { - return Array.prototype.slice.call( obj ) - }, + // Convert array-like objects into real arrays + // for the native prototype methods + makeArray: function( obj ) { + return Array.prototype.slice.call( obj ) + }, - // Extend target with an object - extend: function( target, object ) { - var isExtensible = typeof target === 'object' || - typeof target === 'function' || - typeof object === 'object' + // Extend target with an object + extend: function( target, object ) { + var isExtensible = typeof target === 'object' || + typeof target === 'function' || + typeof object === 'object' - if ( !isExtensible ) { - return - } + if ( !isExtensible ) return - for ( var name in object ) { - if ( object.hasOwnProperty( name )) { - target[ name ] = object[ name ] - } - } - return target + for ( var name in object ) { + if ( object.hasOwnProperty( name )) { + target[ name ] = object[ name ] } } -var findAndReplaceDOMText = -/** - * findAndReplaceDOMText v 0.4.2 - * @author James Padolsey http://james.padolsey.com - * @license http://unlicense.org/UNLICENSE - * - * Matches the text of a DOM node against a regular expression - * and replaces each match (or node-separated portions of the match) - * in the specified element. + return target + } +} + +var Fibre = +/*! + * Fibre.js v0.1.2 | MIT License | github.com/ethantw/fibre.js + * Based on findAndReplaceDOMText */ -(function() { - - var PORTION_MODE_RETAIN = 'retain'; - var PORTION_MODE_FIRST = 'first'; - var doc = document; - var toString = {}.toString; +function( Finder ) { - function isArray(a) { - return toString.call(a) == '[object Array]'; - } +'use strict' - function escapeRegExp(s) { - return String(s).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); - } +var VERSION = '0.1.2' +var FILTER_OUT_SELECTOR = 'style, script, head title' - function exposed() { - // Try deprecated arg signature first: - return deprecated.apply(null, arguments) || findAndReplaceDOMText.apply(null, arguments); - } +var global = window || {} +var document = global.document || undefined - function deprecated(regex, node, replacement, captureGroup, elFilter) { - if ((node && !node.nodeType) && arguments.length <= 2) { - return false; - } - var isReplacementFunction = typeof replacement == 'function'; +function matches( node, selector, bypassNodeType39 ) { + var Efn = Element.prototype + var matches = Efn.matches || Efn.mozMatchesSelector || Efn.msMatchesSelector || Efn.webkitMatchesSelector + + if ( node instanceof Element ) { + return matches.call( node, selector ) + } else if ( bypassNodeType39 ) { + if ( /^[39]$/.test( node.nodeType )) return true + } + return false +} - if (isReplacementFunction) { - replacement = (function(original) { - return function(portion, match) { - return original(portion.text, match.startIndex); - }; - }(replacement)); - } +if ( typeof document === 'undefined' ) throw new Error( 'Fibre requires a DOM-supported environment.' ) - // Awkward support for deprecated argument signature (<0.4.0) - var instance = findAndReplaceDOMText(node, { +var Fibre = function( context ) { + return new Fibre.fn.init( context ) +} - find: regex, +Fibre.version = VERSION +Fibre.matches = matches - wrap: isReplacementFunction ? null : replacement, - replace: isReplacementFunction ? replacement : '$' + (captureGroup || '&'), +Fibre.fn = Fibre.prototype = { + constructor: Fibre, - prepMatch: function(m, mi) { + version: VERSION, - // Support captureGroup (a deprecated feature) + context: undefined, - if (!m[0]) throw 'findAndReplaceDOMText cannot handle zero-length matches'; + contextSelector: null, - if (captureGroup > 0) { - var cg = m[captureGroup]; - m.index += m[0].indexOf(cg); - m[0] = cg; - } + finder: [], - m.endIndex = m.index + m[0].length; - m.startIndex = m.index; - m.index = mi; + init: function( context ) { + if ( !context ) throw new Error( 'A context is required for Fibre to initialise.' ) - return m; - }, - filterElements: elFilter - }); + if ( context instanceof Node ) { + this.context = context + } else if ( typeof context === 'string' ) { + this.contextSelector = context + this.context = document.querySelector( context ) + } - exposed.revert = function() { - return instance.revert(); - }; + return this + }, - return true; - } + filterElemFn: function( currentNode ) { + return matches( currentNode, this.filterSelector, true ) && + !matches( currentNode, this.filterOutSelector ) + }, - /** - * findAndReplaceDOMText - * - * Locates matches and replaces with replacementNode - * - * @param {Node} node Element or Text node to search within - * @param {RegExp} options.find The regular expression to match - * @param {String|Element} [options.wrap] A NodeName, or a Node to clone - * @param {String|Function} [options.replace='$&'] What to replace each match with - * @param {Function} [options.filterElements] A Function to be called to check whether to - * process an element. (returning true = process element, - * returning false = avoid element) - */ - function findAndReplaceDOMText(node, options) { - return new Finder(node, options); - } + filterSelector: '*', + + filter: function( selector ) { + switch ( typeof selector ) { + case 'string': + this.filterSelector = selector + break + case 'function': + this.filterElemFn = selector + break + default: + return this + } + return this + }, - exposed.Finder = Finder; + filterOutSelector: FILTER_OUT_SELECTOR, - /** - * Finder -- encapsulates logic to find and replace. - */ - function Finder(node, options) { + filterOut: function( selector, boolExtend ) { + switch( typeof selector ) { + case 'string': + if ( typeof boolExtend !== 'undefined' && boolExtend === true ) { + this.filterOutSelector += ', ' + selector + } else { + this.filterOutSelector = selector + } + break + default: + return this + } + return this + }, - options.portionMode = options.portionMode || PORTION_MODE_RETAIN; + replace: function( regexp, newSubStr, portionMode ) { + var it = this + var portionMode = portionMode || 'retain' + it.finder.push(Finder( it.context, { + find: regexp, + replace: newSubStr, + filterElements: function( currentNode ) { + return it.filterElemFn( currentNode ) + }, + portionMode: portionMode + })) + return it + }, - this.node = node; - this.options = options; + wrap: function( regexp, strElemName, portionMode ) { + var it = this + var portionMode = portionMode || 'retain' + it.finder.push(Finder( it.context, { + find: regexp, + wrap: strElemName, + filterElements: function( currentNode ) { + return it.filterElemFn( currentNode ) + }, + portionMode: portionMode + })) + return it + }, - // ENable match-preparation method to be passed as option: - this.prepMatch = options.prepMatch || this.prepMatch; + revert: function( level ) { + var max = this.finder.length + var level = Number( level ) || ( level === 0 ? Number(0) : + ( level === 'all' ? max : 1 )) - this.reverts = []; + if ( typeof max === 'undefined' || max === 0 ) return this + else if ( level > max ) level = max - this.matches = this.search(); + for ( var i = level; i > 0; i-- ) { + this.finder.pop().revert() + } + return this + } +} - if (this.matches.length) { - this.processMatches(); - } +Fibre.fn.init.prototype = Fibre.fn - } - - Finder.prototype = { +return Fibre - /** - * Searches for all matches that comply with the instance's 'match' option - */ - search: function() { +}( - var match; - var matchIndex = 0; - var regex = this.options.find; - var text = this.getAggregateText(); - var matches = []; +/** + * findAndReplaceDOMText v 0.4.2 + * @author James Padolsey http://james.padolsey.com + * @license http://unlicense.org/UNLICENSE + * + * Matches the text of a DOM node against a regular expression + * and replaces each match (or node-separated portions of the match) + * in the specified element. + */ + (function() { + + var PORTION_MODE_RETAIN = 'retain' + var PORTION_MODE_FIRST = 'first' + var doc = document + var toString = {}.toString + function isArray(a) { + return toString.call(a) == '[object Array]' + } - regex = typeof regex === 'string' ? RegExp(escapeRegExp(regex), 'g') : regex; + function escapeRegExp(s) { + return String(s).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1') + } - if (regex.global) { - while (match = regex.exec(text)) { - matches.push(this.prepMatch(match, matchIndex++)); - } - } else { - if (match = text.match(regex)) { - matches.push(this.prepMatch(match, 0)); - } - } + function exposed() { + // Try deprecated arg signature first: + return deprecated.apply(null, arguments) || findAndReplaceDOMText.apply(null, arguments) + } - return matches; - - }, - - /** - * Prepares a single match with useful meta info: - */ - prepMatch: function(match, matchIndex) { - - if (!match[0]) { - throw new Error('findAndReplaceDOMText cannot handle zero-length matches'); - } - - match.endIndex = match.index + match[0].length; - match.startIndex = match.index; - match.index = matchIndex; - - return match; - }, - - /** - * Gets aggregate text within subject node - */ - getAggregateText: function() { - - var elementFilter = this.options.filterElements; - - return getText(this.node); - - /** - * Gets aggregate text of a node without resorting - * to broken innerText/textContent - */ - function getText(node) { - - if (node.nodeType === 3) { - return node.data; - } - - if (elementFilter && !elementFilter(node)) { - return ''; - } + function deprecated(regex, node, replacement, captureGroup, elFilter) { + if ((node && !node.nodeType) && arguments.length <= 2) { + return false + } + var isReplacementFunction = typeof replacement == 'function' + if (isReplacementFunction) { + replacement = (function(original) { + return function(portion, match) { + return original(portion.text, match.startIndex) + } + }(replacement)) + } - var txt = ''; + // Awkward support for deprecated argument signature (<0.4.0) + var instance = findAndReplaceDOMText(node, { - if (node = node.firstChild) do { - txt += getText(node); - } while (node = node.nextSibling); + find: regex, - return txt; - - } - - }, - - /** - * Steps through the target node, looking for matches, and - * calling replaceFn when a match is found. - */ - processMatches: function() { - - var matches = this.matches; - var node = this.node; - var elementFilter = this.options.filterElements; - - var startPortion, - endPortion, - innerPortions = [], - curNode = node, - match = matches.shift(), - atIndex = 0, // i.e. nodeAtIndex - matchIndex = 0, - portionIndex = 0, - doAvoidNode, - nodeStack = [node]; - - out: while (true) { - - if (curNode.nodeType === 3) { - - if (!endPortion && curNode.length + atIndex >= match.endIndex) { - - // We've found the ending - endPortion = { - node: curNode, - index: portionIndex++, - text: curNode.data.substring(match.startIndex - atIndex, match.endIndex - atIndex), - indexInMatch: atIndex - match.startIndex, - indexInNode: match.startIndex - atIndex, // always zero for end-portions - endIndexInNode: match.endIndex - atIndex, - isEnd: true - }; - - } else if (startPortion) { - // Intersecting node - innerPortions.push({ - node: curNode, - index: portionIndex++, - text: curNode.data, - indexInMatch: atIndex - match.startIndex, - indexInNode: 0 // always zero for inner-portions - }); - } - - if (!startPortion && curNode.length + atIndex > match.startIndex) { - // We've found the match start - startPortion = { - node: curNode, - index: portionIndex++, - indexInMatch: 0, - indexInNode: match.startIndex - atIndex, - endIndexInNode: match.endIndex - atIndex, - text: curNode.data.substring(match.startIndex - atIndex, match.endIndex - atIndex) - }; - } - - atIndex += curNode.data.length; - - } - - doAvoidNode = curNode.nodeType === 1 && elementFilter && !elementFilter(curNode); - - if (startPortion && endPortion) { - - curNode = this.replaceMatch(match, startPortion, innerPortions, endPortion); - - // processMatches has to return the node that replaced the endNode - // and then we step back so we can continue from the end of the - // match: - - atIndex -= (endPortion.node.data.length - endPortion.endIndexInNode); - - startPortion = null; - endPortion = null; - innerPortions = []; - match = matches.shift(); - portionIndex = 0; - matchIndex++; - - if (!match) { - break; // no more matches - } - - } else if ( - !doAvoidNode && - (curNode.firstChild || curNode.nextSibling) - ) { - // Move down or forward: - if (curNode.firstChild) { - nodeStack.push(curNode); - curNode = curNode.firstChild; - } else { - curNode = curNode.nextSibling; - } - continue; - } - - // Move forward or up: - while (true) { - if (curNode.nextSibling) { - curNode = curNode.nextSibling; - break; - } - curNode = nodeStack.pop(); - if (curNode === node) { - break out; - } - } - - } - - }, - - /** - * Reverts ... TODO - */ - revert: function() { - // Reversion occurs backwards so as to avoid nodes subsequently - // replaced during the matching phase (a forward process): - for (var l = this.reverts.length; l--;) { - this.reverts[l](); - } - this.reverts = []; - }, - - prepareReplacementString: function(string, portion, match, matchIndex) { - var portionMode = this.options.portionMode; - if ( - portionMode === PORTION_MODE_FIRST && - portion.indexInMatch > 0 - ) { - return ''; - } - string = string.replace(/\$(\d+|&|`|')/g, function($0, t) { - var replacement; - switch(t) { - case '&': - replacement = match[0]; - break; - case '`': - replacement = match.input.substring(0, match.startIndex); - break; - case '\'': - replacement = match.input.substring(match.endIndex); - break; - default: - replacement = match[+t]; - } - return replacement; - }); - - if (portionMode === PORTION_MODE_FIRST) { - return string; - } - - if (portion.isEnd) { - return string.substring(portion.indexInMatch); - } - - return string.substring(portion.indexInMatch, portion.indexInMatch + portion.text.length); - }, - - getPortionReplacementNode: function(portion, match, matchIndex) { - - var replacement = this.options.replace || '$&'; - var wrapper = this.options.wrap; - - if (wrapper && wrapper.nodeType) { - // Wrapper has been provided as a stencil-node for us to clone: - var clone = doc.createElement('div'); - clone.innerHTML = wrapper.outerHTML || new XMLSerializer().serializeToString(wrapper); - wrapper = clone.firstChild; - } - - if (typeof replacement == 'function') { - replacement = replacement(portion, match, matchIndex); - if (replacement && replacement.nodeType) { - return replacement; - } - return doc.createTextNode(String(replacement)); - } - - var el = typeof wrapper == 'string' ? doc.createElement(wrapper) : wrapper; - - replacement = doc.createTextNode( - this.prepareReplacementString( - replacement, portion, match, matchIndex - ) - ); - - if (!replacement.data) { - return replacement; - } - - if (!el) { - return replacement; - } - - el.appendChild(replacement); - - return el; - }, - - replaceMatch: function(match, startPortion, innerPortions, endPortion) { - - var matchStartNode = startPortion.node; - var matchEndNode = endPortion.node; - - var preceedingTextNode; - var followingTextNode; - - if (matchStartNode === matchEndNode) { - - var node = matchStartNode; - - if (startPortion.indexInNode > 0) { - // Add `before` text node (before the match) - preceedingTextNode = doc.createTextNode(node.data.substring(0, startPortion.indexInNode)); - node.parentNode.insertBefore(preceedingTextNode, node); - } - - // Create the replacement node: - var newNode = this.getPortionReplacementNode( - endPortion, - match - ); - - node.parentNode.insertBefore(newNode, node); - - if (endPortion.endIndexInNode < node.length) { // ????? - // Add `after` text node (after the match) - followingTextNode = doc.createTextNode(node.data.substring(endPortion.endIndexInNode)); - node.parentNode.insertBefore(followingTextNode, node); - } - - node.parentNode.removeChild(node); - - this.reverts.push(function() { - if (preceedingTextNode === newNode.previousSibling) { - preceedingTextNode.parentNode.removeChild(preceedingTextNode); - } - if (followingTextNode === newNode.nextSibling) { - followingTextNode.parentNode.removeChild(followingTextNode); - } - newNode.parentNode.replaceChild(node, newNode); - }); + wrap: isReplacementFunction ? null : replacement, + replace: isReplacementFunction ? replacement : '$' + (captureGroup || '&'), - return newNode; + prepMatch: function(m, mi) { - } else { - // Replace matchStartNode -> [innerMatchNodes...] -> matchEndNode (in that order) + // Support captureGroup (a deprecated feature) + if (!m[0]) throw 'findAndReplaceDOMText cannot handle zero-length matches' + if (captureGroup > 0) { + var cg = m[captureGroup] + m.index += m[0].indexOf(cg) + m[0] = cg + } + + m.endIndex = m.index + m[0].length + m.startIndex = m.index + m.index = mi + return m + }, + filterElements: elFilter + }) + exposed.revert = function() { + return instance.revert() + } + return true + } - preceedingTextNode = doc.createTextNode( - matchStartNode.data.substring(0, startPortion.indexInNode) - ); + /** + * findAndReplaceDOMText + * + * Locates matches and replaces with replacementNode + * + * @param {Node} node Element or Text node to search within + * @param {RegExp} options.find The regular expression to match + * @param {String|Element} [options.wrap] A NodeName, or a Node to clone + * @param {String|Function} [options.replace='$&'] What to replace each match with + * @param {Function} [options.filterElements] A Function to be called to check whether to + * process an element. (returning true = process element, + * returning false = avoid element) + */ + function findAndReplaceDOMText(node, options) { + return new Finder(node, options) + } - followingTextNode = doc.createTextNode( - matchEndNode.data.substring(endPortion.endIndexInNode) - ); + exposed.Finder = Finder + /** + * Finder -- encapsulates logic to find and replace. + */ + function Finder(node, options) { + + options.portionMode = options.portionMode || PORTION_MODE_RETAIN + this.node = node + this.options = options + // ENable match-preparation method to be passed as option: + this.prepMatch = options.prepMatch || this.prepMatch + this.reverts = [] + this.matches = this.search() + if (this.matches.length) { + this.processMatches() + } - var firstNode = this.getPortionReplacementNode( - startPortion, - match - ); - - var innerNodes = []; - - for (var i = 0, l = innerPortions.length; i < l; ++i) { - var portion = innerPortions[i]; - var innerNode = this.getPortionReplacementNode( - portion, - match - ); - portion.node.parentNode.replaceChild(innerNode, portion.node); - this.reverts.push((function(portion, innerNode) { - return function() { - innerNode.parentNode.replaceChild(portion.node, innerNode); - }; - }(portion, innerNode))); - innerNodes.push(innerNode); - } + } - var lastNode = this.getPortionReplacementNode( - endPortion, - match - ); + Finder.prototype = { + + /** + * Searches for all matches that comply with the instance's 'match' option + */ + search: function() { + + var match + var matchIndex = 0 + var regex = this.options.find + var text = this.getAggregateText() + var matches = [] + regex = typeof regex === 'string' ? RegExp(escapeRegExp(regex), 'g') : regex + if (regex.global) { + while (match = regex.exec(text)) { + matches.push(this.prepMatch(match, matchIndex++)) + } + } else { + if (match = text.match(regex)) { + matches.push(this.prepMatch(match, 0)) + } + } - matchStartNode.parentNode.insertBefore(preceedingTextNode, matchStartNode); - matchStartNode.parentNode.insertBefore(firstNode, matchStartNode); - matchStartNode.parentNode.removeChild(matchStartNode); + return matches + }, - matchEndNode.parentNode.insertBefore(lastNode, matchEndNode); - matchEndNode.parentNode.insertBefore(followingTextNode, matchEndNode); - matchEndNode.parentNode.removeChild(matchEndNode); + /** + * Prepares a single match with useful meta info: + */ + prepMatch: function(match, matchIndex) { - this.reverts.push(function() { - preceedingTextNode.parentNode.removeChild(preceedingTextNode); - firstNode.parentNode.replaceChild(matchStartNode, firstNode); - followingTextNode.parentNode.removeChild(followingTextNode); - lastNode.parentNode.replaceChild(matchEndNode, lastNode); - }); + if (!match[0]) { + throw new Error('findAndReplaceDOMText cannot handle zero-length matches') + } + + match.endIndex = match.index + match[0].length + match.startIndex = match.index + match.index = matchIndex + return match + }, - return lastNode; - } - } + /** + * Gets aggregate text within subject node + */ + getAggregateText: function() { - }; - -return exposed; + var elementFilter = this.options.filterElements + return getText(this.node) + /** + * Gets aggregate text of a node without resorting + * to broken innerText/textContent + */ + function getText(node) { -}()); + if (node.nodeType === 3) { + return node.data + } -/** - * Module: Farr (Find and Replace/wRap DOM text) - * Based on findAndReplaceDOMText: - * github.com/padolsey/findAndReplaceDOMText - */ + if (elementFilter && !elementFilter(node)) { + return '' + } + var txt = '' + if (node = node.firstChild) do { + txt += getText(node) + } while (node = node.nextSibling) + return txt + } + }, -var filterOutSelector = 'style, script', + /** + * Steps through the target node, looking for matches, and + * calling replaceFn when a match is found. + */ + processMatches: function() { + + var matches = this.matches + var node = this.node + var elementFilter = this.options.filterElements + var startPortion, + endPortion, + innerPortions = [], + curNode = node, + match = matches.shift(), + atIndex = 0, // i.e. nodeAtIndex + matchIndex = 0, + portionIndex = 0, + doAvoidNode, + nodeStack = [node] + out: while (true) { + + if (curNode.nodeType === 3) { + + if (!endPortion && curNode.length + atIndex >= match.endIndex) { + + // We've found the ending + endPortion = { + node: curNode, + index: portionIndex++, + text: curNode.data.substring(match.startIndex - atIndex, match.endIndex - atIndex), + indexInMatch: atIndex - match.startIndex, + indexInNode: match.startIndex - atIndex, // always zero for end-portions + endIndexInNode: match.endIndex - atIndex, + isEnd: true + } + } else if (startPortion) { + // Intersecting node + innerPortions.push({ + node: curNode, + index: portionIndex++, + text: curNode.data, + indexInMatch: atIndex - match.startIndex, + indexInNode: 0 // always zero for inner-portions + }) + } - Farr = function( selector, filter, method, pattern, subst ) { - return new Farr.prototype.init( selector, filter, method, pattern, subst ) - } + if (!startPortion && curNode.length + atIndex > match.startIndex) { + // We've found the match start + startPortion = { + node: curNode, + index: portionIndex++, + indexInMatch: 0, + indexInNode: match.startIndex - atIndex, + endIndexInNode: match.endIndex - atIndex, + text: curNode.data.substring(match.startIndex - atIndex, match.endIndex - atIndex) + } + } -Farr.prototype = { - constructor: Farr, + atIndex += curNode.data.length + } - context: '', + doAvoidNode = curNode.nodeType === 1 && elementFilter && !elementFilter(curNode) + if (startPortion && endPortion) { + + curNode = this.replaceMatch(match, startPortion, innerPortions, endPortion) + // processMatches has to return the node that replaced the endNode + // and then we step back so we can continue from the end of the + // match: + + atIndex -= (endPortion.node.data.length - endPortion.endIndexInNode) + startPortion = null + endPortion = null + innerPortions = [] + match = matches.shift() + portionIndex = 0 + matchIndex++ + if (!match) { + break; // no more matches + } - // Store the findAndReplaceDOMText instance - // for future action, i.e. revert. - finder: [], + } else if ( + !doAvoidNode && + (curNode.firstChild || curNode.nextSibling) + ) { + // Move down or forward: + if (curNode.firstChild) { + nodeStack.push(curNode) + curNode = curNode.firstChild + } else { + curNode = curNode.nextSibling + } + continue + } - // Adapt jQuery-way to do everything - init: function( context, filter, method, pattern, subst ) { - this.context = context - this.filterOut( filter ) + // Move forward or up: + while (true) { + if (curNode.nextSibling) { + curNode = curNode.nextSibling + break + } + curNode = nodeStack.pop() + if (curNode === node) { + break out + } + } - return typeof method === 'string' && this[ method ] - ? this[ method ](pattern, subst) : this - }, + } - // Define the default selector to be filtered out. - filterOutSelector: filterOutSelector, + }, - // Define the default function to the process of filtering out. - filterOutFn: function( currentNode ) { - return $.matches( currentNode, this.filterOutSelector ) ? false : true - }, + /** + * Reverts ... TODO + */ + revert: function() { + // Reversion occurs backwards so as to avoid nodes subsequently + // replaced during the matching phase (a forward process): + for (var l = this.reverts.length; l--;) { + this.reverts[l]() + } + this.reverts = [] + }, - filterOut: function( selector ) { - if ( typeof selector === 'string' ) { - this.filterOutSelector = selector - } else if ( typeof selector === 'function' ) { - this.filterOutFn = selector - } - return this - }, + prepareReplacementString: function(string, portion, match, matchIndex) { + var portionMode = this.options.portionMode + if ( + portionMode === PORTION_MODE_FIRST && + portion.indexInMatch > 0 + ) { + return '' + } + string = string.replace(/\$(\d+|&|`|')/g, function($0, t) { + var replacement + switch(t) { + case '&': + replacement = match[0] + break + case '`': + replacement = match.input.substring(0, match.startIndex) + break + case '\'': + replacement = match.input.substring(match.endIndex) + break + default: + replacement = match[+t] + } + return replacement + }) + if (portionMode === PORTION_MODE_FIRST) { + return string + } + + if (portion.isEnd) { + return string.substring(portion.indexInMatch) + } + + return string.substring(portion.indexInMatch, portion.indexInMatch + portion.text.length) + }, - replace: function( pattern, subst ) { - var that = this + getPortionReplacementNode: function(portion, match, matchIndex) { - this.finder.push( findAndReplaceDOMText( - this.context, - { - find: pattern, - replace: subst, - filterElements: function( currentNode ) { - return that.filterOutFn( currentNode ) + var replacement = this.options.replace || '$&' + var wrapper = this.options.wrap + if (wrapper && wrapper.nodeType) { + // Wrapper has been provided as a stencil-node for us to clone: + var clone = doc.createElement('div') + clone.innerHTML = wrapper.outerHTML || new XMLSerializer().serializeToString(wrapper) + wrapper = clone.firstChild + } + + if (typeof replacement == 'function') { + replacement = replacement(portion, match, matchIndex) + if (replacement && replacement.nodeType) { + return replacement } + return doc.createTextNode(String(replacement)) } - )) - return this - }, - wrap: function( pattern, subst ) { - var that = this + var el = typeof wrapper == 'string' ? doc.createElement(wrapper) : wrapper + replacement = doc.createTextNode( + this.prepareReplacementString( + replacement, portion, match, matchIndex + ) + ) + if (!replacement.data) { + return replacement + } - that.finder.push( findAndReplaceDOMText( - that.context, - { - find: pattern, - wrap: subst, - filterElements: function( currentNode ) { - return that.filterOutFn( currentNode ) - } + if (!el) { + return replacement } - )) - return this - }, - // Now that we support chaining syntax, it should - // be able to revert the finder by level. - revert: function( level ) { - var len = this.finder.length, - level = Number(level) || level === 0 ? - Number(level) : - level === 'all' ? - len : 1 - - if ( typeof len === 'undefined' || len === 0 ) { - return this - } else if ( level > this.finder.length ) { - level = len - } + el.appendChild(replacement) + return el + }, - for (var i = parseInt( level ); i > 0; i--) { - this.finder.pop().revert() + replaceMatch: function(match, startPortion, innerPortions, endPortion) { + + var matchStartNode = startPortion.node + var matchEndNode = endPortion.node + var preceedingTextNode + var followingTextNode + if (matchStartNode === matchEndNode) { + + var node = matchStartNode + if (startPortion.indexInNode > 0) { + // Add `before` text node (before the match) + preceedingTextNode = doc.createTextNode(node.data.substring(0, startPortion.indexInNode)) + node.parentNode.insertBefore(preceedingTextNode, node) + } + + // Create the replacement node: + var newNode = this.getPortionReplacementNode( + endPortion, + match + ) + node.parentNode.insertBefore(newNode, node) + if (endPortion.endIndexInNode < node.length) { // ????? + // Add `after` text node (after the match) + followingTextNode = doc.createTextNode(node.data.substring(endPortion.endIndexInNode)) + node.parentNode.insertBefore(followingTextNode, node) + } + + node.parentNode.removeChild(node) + this.reverts.push(function() { + if (preceedingTextNode === newNode.previousSibling) { + preceedingTextNode.parentNode.removeChild(preceedingTextNode) + } + if (followingTextNode === newNode.nextSibling) { + followingTextNode.parentNode.removeChild(followingTextNode) + } + newNode.parentNode.replaceChild(node, newNode) + }) + return newNode + } else { + // Replace matchStartNode -> [innerMatchNodes...] -> matchEndNode (in that order) + + preceedingTextNode = doc.createTextNode( + matchStartNode.data.substring(0, startPortion.indexInNode) + ) + followingTextNode = doc.createTextNode( + matchEndNode.data.substring(endPortion.endIndexInNode) + ) + var firstNode = this.getPortionReplacementNode( + startPortion, + match + ) + var innerNodes = [] + for (var i = 0, l = innerPortions.length; i < l; ++i) { + var portion = innerPortions[i] + var innerNode = this.getPortionReplacementNode( + portion, + match + ) + portion.node.parentNode.replaceChild(innerNode, portion.node) + this.reverts.push((function(portion, innerNode) { + return function() { + innerNode.parentNode.replaceChild(portion.node, innerNode) + } + }(portion, innerNode))) + innerNodes.push(innerNode) + } + + var lastNode = this.getPortionReplacementNode( + endPortion, + match + ) + matchStartNode.parentNode.insertBefore(preceedingTextNode, matchStartNode) + matchStartNode.parentNode.insertBefore(firstNode, matchStartNode) + matchStartNode.parentNode.removeChild(matchStartNode) + matchEndNode.parentNode.insertBefore(lastNode, matchEndNode) + matchEndNode.parentNode.insertBefore(followingTextNode, matchEndNode) + matchEndNode.parentNode.removeChild(matchEndNode) + this.reverts.push(function() { + preceedingTextNode.parentNode.removeChild(preceedingTextNode) + firstNode.parentNode.replaceChild(matchStartNode, firstNode) + followingTextNode.parentNode.removeChild(followingTextNode) + lastNode.parentNode.replaceChild(matchEndNode, lastNode) + }) + return lastNode + } } - return this - }, - // Force punctuation & biaodian typesetting rules - // to be applied. + } + return exposed +}()) +); + +$.extend( Fibre.fn, { + // Force punctuation & biaodian typesetting rules to be applied. jinzify: function() { var origFilterOutSelector= this.filterOutSelector @@ -1244,23 +1207,22 @@ Farr.prototype = { .replace( TYPESET.jinze.touwei, function( portion, match ) { - var mat = match[0], - text = $.create( '', mat ), - elem = $.create( 'jinze', 'touwei' ) + var mat = match[0] + var text = $.create( '', mat ) + var elem = $.create( 'jinze', 'touwei' ) elem.appendChild( text ) return ( - ( portion.index === 0 && portion.isEnd ) || - portion.index === 1 + ( portion.index === 0 && portion.isEnd ) || portion.index === 1 ) ? elem : '' } ) .replace( TYPESET.jinze.wei, function( portion, match ) { - var mat = match[0], - text = $.create( '', mat ), - elem = $.create( 'jinze', 'wei' ) + var mat = match[0] + var text = $.create( '', mat ) + var elem = $.create( 'jinze', 'wei' ) elem.appendChild( text ) return portion.index === 0 ? elem : '' @@ -1269,9 +1231,9 @@ Farr.prototype = { .replace( TYPESET.jinze.tou, function( portion, match ) { - var mat = match[0], - text = $.create( '', mat ), - elem = $.create( 'jinze', 'tou' ) + var mat = match[0] + var text = $.create( '', mat ) + var elem = $.create( 'jinze', 'tou' ) elem.appendChild( text ) return ( @@ -1283,9 +1245,9 @@ Farr.prototype = { .replace( TYPESET.jinze.middle, function( portion, match ) { - var mat = match[0], - text = $.create( '', mat ), - elem = $.create( 'jinze', 'middle' ) + var mat = match[0] + var text = $.create( '', mat ) + var elem = $.create( 'jinze', 'middle' ) elem.appendChild( text ) return (( portion.index === 0 && portion.isEnd ) || portion.index === 1 ) @@ -1313,83 +1275,66 @@ Farr.prototype = { // Implementation of character-level selector // (字元級選擇器) charify: function( option ) { - var option = $.extend( { - hanzi: 'individual', - // individual || group || biaodian || none - liga: 'liga', - // liga || none - word: 'group', - // group || punctuation || none - - latin: 'group', - ellinika: 'group', - kirillica: 'group', - kana: 'none', - eonmun: 'none' - // group || individual || none - }, option || {} ) + var option = $.extend({ + hanzi: 'individual', + // individual || group || biaodian || none + liga: 'liga', + // liga || none + word: 'group', + // group || punctuation || none + + latin: 'group', + ellinika: 'group', + kirillica: 'group', + kana: 'none', + eonmun: 'none' + // group || individual || none + }, option || {}) // CJK and biaodian if ( option.hanzi === 'group' ) { - this.wrap( - TYPESET.char.hanzi.group, - $.clone( $.create( 'char_group', 'hanzi cjk' )) - ) + this.wrap( TYPESET.char.hanzi.group, $.clone( $.create( 'char_group', 'hanzi cjk' ))) } if ( option.hanzi === 'individual' ) { - this.wrap( - TYPESET.char.hanzi.individual, - $.clone( $.create( 'char', 'hanzi cjk' )) - ) + this.wrap( TYPESET.char.hanzi.individual, $.clone( $.create( 'char', 'hanzi cjk' ))) } if ( option.hanzi === 'individual' || option.hanzi === 'biaodian' || option.liga === 'liga' ) { - if ( option.hanzi !== 'none' ) { - this.replace( TYPESET.char.biaodian.all, function( portion, match ) { - var mat = match[0], - text = $.create( '', mat ), - - clazz = 'biaodian cjk ' + ( - mat.match( TYPESET.char.biaodian.open ) ? - 'open' : - mat.match( TYPESET.char.biaodian.close ) ? - 'close end' : - mat.match( TYPESET.char.biaodian.end ) ? - 'end' : '' - ), - - elem = $.create( 'char', clazz ), - unicode = mat.charCodeAt( 0 ).toString( 16 ) + var mat = match[0] + var text = $.create( '', mat ) + var clazz = 'biaodian cjk ' + ( + mat.match( TYPESET.char.biaodian.open ) ? 'open' : + mat.match( TYPESET.char.biaodian.close ) ? 'close end' : + mat.match( TYPESET.char.biaodian.end ) ? 'end' : '' + ) + var elem = $.create( 'char', clazz ) + var unicode = mat.charCodeAt( 0 ).toString( 16 ) elem.setAttribute( 'unicode', unicode ) elem.appendChild( text ) - return elem } ) } this.replace( - option.liga === 'liga' ? - TYPESET.char.biaodian.liga : + option.liga === 'liga' ? TYPESET.char.biaodian.liga : new RegExp( '(' + UNICODE.biaodian.liga + ')', 'g' ), function( portion, match ) { - var mat = match[0], - text = $.create( '', mat ), - - elem = $.create( 'char', 'biaodian liga cjk' ), - unicode = mat.charCodeAt( 0 ).toString( 16 ) + var mat = match[0] + var text = $.create( '', mat ) + var elem = $.create( 'char', 'biaodian liga cjk' ) + var unicode = mat.charCodeAt( 0 ).toString( 16 ) elem.setAttribute( 'unicode', unicode ) elem.appendChild( text ) - return elem } ) @@ -1397,10 +1342,7 @@ Farr.prototype = { // Western languages (word-level) if ( option.word !== 'none' ) { - this.wrap( - TYPESET.char.word, - $.clone( $.create( 'word' )) - ) + this.wrap( TYPESET.char.word, $.clone( $.create( 'word' ))) } // Western languages (alphabet-level) @@ -1408,37 +1350,22 @@ Farr.prototype = { option.ellinika !== 'none' || option.kirillica !== 'none' ) { - this.wrap( - TYPESET.char.punct.all, - $.clone( $.create( 'char', 'punct' )) - ) + this.wrap( TYPESET.char.punct.all, $.clone( $.create( 'char', 'punct' ))) } if ( option.latin === 'individual' ) { - this.wrap( - TYPESET.char.alphabet.latin, - $.clone( $.create( 'char', 'alphabet latin' )) - ) + this.wrap( TYPESET.char.alphabet.latin, $.clone( $.create( 'char', 'alphabet latin' ))) } if ( option.ellinika === 'individual' ) { - this.wrap( - TYPESET.char.alphabet.ellinika, - $.clone( $.create( 'char', 'alphabet ellinika greek' )) - ) + this.wrap( TYPESET.char.alphabet.ellinika, $.clone( $.create( 'char', 'alphabet ellinika greek' ))) } if ( option.kirillica === 'individual' ) { - this.wrap( - TYPESET.char.alphabet.kirillica, - $.clone( $.create( 'char', 'alphabet kirillica cyrillic' )) - ) + this.wrap( TYPESET.char.alphabet.kirillica, $.clone( $.create( 'char', 'alphabet kirillica cyrillic' ))) } return this } -} - -Farr.prototype.init.prototype = Farr.prototype - +}) -Han.find = Farr +Han.find = Fibre void [ 'replace', @@ -1458,14 +1385,11 @@ void [ } }) -var Hyu = { - JS_RENDERED_CLASS: 'hyu-js-rendered' - } - +var Locale = {} function writeOnCanvas( text, font ) { - var canvas = $.create( 'canvas' ), - context + var canvas = $.create( 'canvas' ) + var context canvas.width = '50' canvas.height = '20' @@ -1484,10 +1408,10 @@ function writeOnCanvas( text, font ) { } function detectFont( treat, control, text ) { - var treat = treat, - control = control, - text = text || '辭Q', - ret + var treat = treat + var control = control + var text = text || '辭Q' + var ret try { control = writeOnCanvas( text, control || 'sans-serif' ) @@ -1497,8 +1421,7 @@ function detectFont( treat, control, text ) { for ( var i = 1; i <= 50; i++ ) { if ( ret !== 'undefined' && - treat[1].getImageData(i, j, 1, 1).data[3] !== - control[1].getImageData(i, j, 1, 1).data[3] + treat[1].getImageData(i, j, 1, 1).data[3] !== control[1].getImageData(i, j, 1, 1).data[3] ) { ret = true break @@ -1524,22 +1447,21 @@ function detectFont( treat, control, text ) { } } -Hyu.detectFont = detectFont - +Locale.detectFont = detectFont -Hyu.support = (function() { +Locale.support = (function() { - var PREFIX = 'Webkit Moz ms'.split(' '), + var PREFIX = 'Webkit Moz ms'.split(' ') - // Create an element for feature detecting - // (in `testCSSProp`) - elem = $.create( '_' ), - exposed = {} + // Create an element for feature detecting + // (in `testCSSProp`) + var elem = $.create( '_' ) + var exposed = {} function testCSSProp( prop ) { - var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1), - allProp = ( prop + ' ' + PREFIX.join( ucProp + ' ' ) + ucProp ).split(' '), - ret + var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1) + var allProp = ( prop + ' ' + PREFIX.join( ucProp + ' ' ) + ucProp ).split(' ') + var ret allProp.forEach(function( prop ) { if ( typeof elem.style[ prop ] === 'string' ) { @@ -1550,15 +1472,11 @@ Hyu.support = (function() { } function injectElementWithStyle( rule, callback ) { - var fakeBody = body || $.create( 'body' ), - div = $.create( 'div' ), - - container = body ? div : fakeBody, - - callback = typeof callback === 'function' ? - callback : function() {}, - - style, ret, docOverflow + var fakeBody = body || $.create( 'body' ) + var div = $.create( 'div' ) + var container = body ? div : fakeBody + var callback = typeof callback === 'function' ? callback : function() {} + var style, ret, docOverflow style = [ '' ].join('') @@ -1599,10 +1517,10 @@ Hyu.support = (function() { return { ruby: (function() { - var ruby = $.create( 'ruby' ), - rt = $.create( 'rt' ), - rp = $.create( 'rp' ), - ret + var ruby = $.create( 'ruby' ) + var rt = $.create( 'rt' ) + var rp = $.create( 'rp' ) + var ret ruby.appendChild( rp ) ruby.appendChild( rt ) @@ -1630,14 +1548,14 @@ Hyu.support = (function() { var ret injectElementWithStyle( - '@font-face { font-family: font; src: url("http://"); }', + '@font-face { font-family: font; src: url("//"); }', function( node, rule ) { - var style = $.qsa( 'style', node )[0], - sheet = style.sheet || style.styleSheet, - cssText = sheet ? - ( sheet.cssRules && sheet.cssRules[0] ? - sheet.cssRules[0].cssText : sheet.cssText || '' - ) : '' + var style = $.qsa( 'style', node )[0] + var sheet = style.sheet || style.styleSheet + var cssText = sheet ? + ( sheet.cssRules && sheet.cssRules[0] ? + sheet.cssRules[0].cssText : sheet.cssText || '' + ) : '' ret = /src/i.test( cssText ) && cssText.indexOf( rule.split(' ')[0] ) === 0 @@ -1656,7 +1574,7 @@ Hyu.support = (function() { injectElementWithStyle( '@font-face{font-family:test-for-unicode-range;src:local(Arial),local("Droid Sans")}@font-face{font-family:test-for-unicode-range;src:local("Times New Roman"),local(Times),local("Droid Serif");unicode-range:U+270C}', function() { - ret = !Hyu.detectFont( + ret = !Locale.detectFont( 'test-for-unicode-range', // treatment group 'Arial, "Droid Sans"', // control group 'Q' // ASCII characters only @@ -1674,16 +1592,13 @@ Hyu.support = (function() { } })() +Locale.initCond = function( target ) { + var target = target || root + var ret = '' + var clazz -Hyu.initCond = function( target ) { - var target = target || root, - ret = '', - clazz - - target.classList.add( Hyu.JS_RENDERED_CLASS ) - - for ( var feature in Hyu.support ) { - clazz = ( Hyu.support[ feature ] ? '' : 'no-' ) + feature + for ( var feature in Locale.support ) { + clazz = ( Locale.support[ feature ] ? '' : 'no-' ) + feature target.classList.add( clazz ) ret += clazz + ' ' @@ -1691,18 +1606,18 @@ Hyu.initCond = function( target ) { return ret } - /** * Create and return a new `` element * according to the given contents */ function createNormalRu( $rb, $rt, attr ) { - var $ru = $.create( 'ru' ), - $rt = $.clone( $rt ), - attr = attr || {} + var $ru = $.create( 'ru' ) + var $rt = $.clone( $rt ) + var attr = attr || {} if ( Array.isArray( $rb )) { $ru.innerHTML = $rb.map(function( rb ) { + if (typeof rb == 'undefined') { return '' } return rb.outerHTML }).join('') } else { @@ -1720,29 +1635,29 @@ function createNormalRu( $rb, $rt, attr ) { * in Zhuyin form */ function createZhuyinRu( $rb, $rt ) { - var $rb = $.clone( $rb ), - - // Create an element to return - $ru = $.create( 'ru' ), - $zhuyin = $.create( 'zhuyin' ), - $yin = $.create( 'yin' ), - $diao = $.create( 'diao' ), - - // #### Explanation #### - // * `zhuyin`: the entire phonetic annotation - // * `yin`: the plain pronunciation (w/out tone) - // * `diao`: the tone - // * `form`: the combination of the pronunciation - // * `len`: the text length of `yin` - zhuyin = $rt.textContent, - yin, diao, form, len + var $rb = $.clone( $rb ) + + // Create an element to return + var $ru = $.create( 'ru' ) + var $zhuyin = $.create( 'zhuyin' ) + var $yin = $.create( 'yin' ) + var $diao = $.create( 'diao' ) + + // #### Explanation #### + // * `zhuyin`: the entire phonetic annotation + // * `yin`: the plain pronunciation (w/out tone) + // * `diao`: the tone + // * `form`: the combination of the pronunciation + // * `len`: the text length of `yin` + var zhuyin = $rt.textContent + var yin, diao, form, len yin = zhuyin.replace( TYPESET.zhuyin.diao, '' ) len = yin ? yin.length : 0 diao = zhuyin - .replace( yin, '' ) - .replace( /[\u02C5]/g, '\u02C7' ) - .replace( /[\u030D]/g, '\u0358' ) + .replace( yin, '' ) + .replace( /[\u02C5]/g, '\u02C7' ) + .replace( /[\u030D]/g, '\u0358' ) form = zhuyin.replace( TYPESET.zhuyin.form, function( s, j, y ) { return [ @@ -1780,7 +1695,7 @@ function createZhuyinRu( $rb, $rt ) { /** * Normalisation rendering mechanism */ -$.extend( Hyu, { +$.extend( Locale, { // Render and normalise the given context by routine: // @@ -1797,9 +1712,9 @@ $.extend( Hyu, { // -line) to see if we should address spacing in // between for semantic presentation. renderDecoLine: function( context, target ) { - var target = target || 'u, ins', - $target = $.qsa( target, context ), - rTarget = new RegExp( '^(' + target.replace(/\,\s?/g, '|') + ')$', 'ig' ) + var target = target || 'u, ins' + var $target = $.qsa( target, context ) + var rTarget = new RegExp( '^(' + target.replace(/\,\s?/g, '|') + ')$', 'ig' ) $target .forEach(function( elem ) { @@ -1808,10 +1723,7 @@ $.extend( Hyu, { // Ignore all `` and comments in between do { next = ( next || elem ).nextSibling - - if ( !next ) { - return - } + if ( !next ) return } while ( $.isIgnorable( next )) if ( next.nodeName.match( rTarget )) { @@ -1823,21 +1735,21 @@ $.extend( Hyu, { // Traverse target elements to render Hanzi emphasis marks // and skip that in punctuation renderEm: function( context, target ) { - var method = target ? 'qsa' : 'tag', - target = target || 'em', - $target = $[ method ]( target, context ) + var method = target ? 'qsa' : 'tag' + var target = target || 'em' + var $target = $[ method ]( target, context ) $target .forEach(function( elem ) { - var $elem = Farr( elem ) + var $elem = Fibre( elem ) - if ( !Hyu.support.textemphasis ) { + if ( !Locale.support.textemphasis ) { $elem.jinzify() } $elem .groupify() - .charify( Hyu.support.textemphasis ? { + .charify( Locale.support.textemphasis ? { hanzi: 'biaodian', word: 'punctuation' } : { @@ -1851,10 +1763,10 @@ $.extend( Hyu, { // Address normalisation for both simple and complex // rubies renderRuby: function( context, target ) { - var method = target ? 'qsa' : 'tag', - target = target || 'ruby', - $target = $[ method ]( target, context ), - $simpClaElem = $.qsa( target + ', rtc', context ) + var method = target ? 'qsa' : 'tag' + var target = target || 'ruby' + var $target = $[ method ]( target, context ) + var $simpClaElem = $.qsa( target + ', rtc', context ) // First of all, simplify semantic classes $simpClaElem @@ -1875,18 +1787,18 @@ $.extend( Hyu, { // Deal with `` $target .forEach(function( ruby ) { - var clazz = ruby.classList, + var clazz = ruby.classList - condition = ( - !Hyu.support.ruby || - clazz.contains( 'zhuyin') || - clazz.contains( 'complex' ) || - clazz.contains( 'rightangle' ) - ), + var condition = ( + !Locale.support.ruby || + clazz.contains( 'zhuyin') || + clazz.contains( 'complex' ) || + clazz.contains( 'rightangle' ) + ) - frag, $cloned, $rb, $ru, maxspan, hruby + var frag, $cloned, $rb, $ru, maxspan, hruby - if ( !condition ) return + if ( !condition ) return // Apply document fragment here to avoid // continuously pointless re-paint @@ -1896,17 +1808,14 @@ $.extend( Hyu, { // 1. Simple ruby polyfill for, um, Firefox; // 2. Zhuyin polyfill for all. - if ( - !Hyu.support.ruby || - clazz.contains( 'zhuyin' ) - ) { + if ( !Locale.support.ruby || clazz.contains( 'zhuyin' )) { $ .tag( 'rt', $cloned ) .forEach(function( rt ) { - var $rb = $.create( '!' ), - airb = [], - irb + var $rb = $.create( '!' ) + var airb = [] + var irb // Consider the previous nodes the implied // ruby base @@ -1938,10 +1847,7 @@ $.extend( Hyu, { // 3. Complex ruby polyfill // - Double-lined annotation; // - Right-angled annotation. - if ( - clazz.contains( 'complex' ) || - clazz.contains( 'rightangle' ) - ) { + if ( clazz.contains( 'complex' ) || clazz.contains( 'rightangle' )) { $rb = $ru = $.tag( 'rb', $cloned ) maxspan = $rb.length @@ -1978,18 +1884,21 @@ $.extend( Hyu, { ret = $ .tag( 'rt', rtc ) .map(function( rt, i ) { - var rbspan = Number( rt.getAttribute( 'rbspan' ) || 1 ), - span = 0, - aRb = [], - rb, ret + var rbspan = Number( rt.getAttribute( 'rbspan' ) || 1 ) + var span = 0 + var aRb = [] + var rb, ret - if ( rbspan > maxspan ) rbspan = maxspan + if ( rbspan > maxspan ) { + rbspan = maxspan + } do { try { rb = $ru.shift() aRb.push( rb ) } catch (e) {} + if (typeof rb == 'undefined') { break } span += Number( rb.getAttribute( 'span' ) || 1 ) } while ( rbspan > span ) @@ -2047,21 +1956,10 @@ $.extend( Hyu, { // * Better error-tolerance }) -/*! - * Hyu - * css.hanzi.co/hyu - * - * This module is a subset project of Han, - * which aims to provide HTML5-ready and - * Hanzi-optimised style normalisation. - */ - - - - -Han.normalize = Hyu -Han.support = Hyu.support -Han.detectFont = Hyu.detectFont +Han.normalize = Locale +Han.localize = Locale +Han.support = Locale.support +Han.detectFont = Locale.detectFont Han.fn.initCond = function() { this.condition.classList.add( 'han-js-rendered' ) @@ -2083,7 +1981,6 @@ void [ } }) - $.extend( Han.support, { // Assume that all devices support Heiti for we // use `sans-serif` to do the comparison. @@ -2100,8 +1997,6 @@ $.extend( Han.support, { // 'fangsong-gb': Han.detectFont( '"Han Fangsong GB"' ) }) - - var QUERY_HWS_AS_FIRST_CHILD = '* > hws:first-child, * > wbr:first-child + hws, wbr:first-child + wbr + hws' //// Disabled `Node.normalize()` for temp due to @@ -2126,16 +2021,16 @@ $.extend( Han, { isNodeNormalizeNormal: isNodeNormalizeNormal, renderHWS: function( context, strict ) { - var context = context || document, - mode = strict ? 'strict' : 'base', - finder = Han.find( context ) + var context = context || document + var mode = strict ? 'strict' : 'base' + var finder = Han.find( context ) // Elements to be filtered according to the // HWS rendering mode if ( strict ) { - finder.filterOutSelector += ', textarea, code, kbd, samp, pre' + finder.filterOut( 'textarea, code, kbd, samp, pre', true ) } else { - finder.filterOutSelector += ', textarea' + finder.filterOut( 'textarea', true ) } finder @@ -2155,16 +2050,14 @@ $.extend( Han, { $ .qsa( QUERY_HWS_AS_FIRST_CHILD, context ) .forEach(function( firstChild ) { - var parent = firstChild.parentNode, - target = parent.firstChild + var parent = firstChild.parentNode + var target = parent.firstChild // Skip all `` and comments while ( $.isIgnorable( target )) { target = target.nextSibling - if ( !target ) { - return - } + if ( !target ) return } // The ‘first-child’ of DOM is different from @@ -2195,6 +2088,7 @@ $.extend( Han, { if ( isNodeNormalizeNormal ) { context.normalize() } + // Return the finder instance for future usage return finder } @@ -2211,20 +2105,18 @@ $.extend( Han.fn, { }, revertHWS: function() { - this.HWS - .forEach(function( hws ) { - $.remove( hws ) - }) + this.HWS.forEach(function( hws ) { + $.remove( hws ) + }) return this } }) - Han.renderJiya = function( context ) { - var context = context || document, - finder = [ Han.find( context ) ] + var context = context || document + var finder = [ Han.find( context ) ] - finder[ 0 ].filterOutSelector += ', textarea, code, kbd, samp, pre, jinze, em' + finder[ 0 ].filterOut( 'textarea, code, kbd, samp, pre, jinze, em', true ) finder[ 0 ].groupify() $ @@ -2261,22 +2153,18 @@ $.extend( Han.fn, { } }) - var mdot mdot = $.create( 'char', 'biaodian cjk middle' ) mdot.setAttribute( 'unicode', 'b7' ) Han.correctBasicBD = function( context, all ) { - var context = context || document, - finder + if ( Han.support.unicoderange && !all ) return - if ( Han.support.unicoderange && !all ) { - return - } + var context = context || document + var finder finder = Han.find( context ) - finder.filteredElemList += ' em' finder .wrap( /\u00B7/g, $.clone( mdot )) @@ -2306,66 +2194,62 @@ $.extend( Han.fn, { } }) - -var QUERY_RU_W_ANNO = 'ru[annotation]', - ELEM_TO_IGNORE = ' textarea code kbd samp pre' +var QUERY_RU_W_ANNO = 'ru[annotation]' +var SELECTOR_TO_IGNORE = 'textarea, code, kbd, samp, pre' var isCombLigaNormal = (function() { - var fakeBody = body || $.create( 'body' ), - div = $.create( 'div' ), - control = $.create( 'span' ), - - container = body ? div : fakeBody, - treat, docOverflow, ret - - if ( !body ) { - fakeBody.style.background = '' - fakeBody.style.overflow = 'hidden' - docOverflow = root.style.overflow - - root.style.overflow = 'hidden' - root.appendChild( fakeBody ) - } else { - body.appendChild( container ) - } + var fakeBody = body || $.create( 'body' ) + var div = $.create( 'div' ) + var control = $.create( 'span' ) + var container = body ? div : fakeBody + var treat, docOverflow, ret + + if ( !body ) { + fakeBody.style.background = '' + fakeBody.style.overflow = 'hidden' + docOverflow = root.style.overflow + + root.style.overflow = 'hidden' + root.appendChild( fakeBody ) + } else { + body.appendChild( container ) + } - control.innerHTML = 'i̍' - control.style.fontFamily = 'sans-serif' - control.style.display = 'inline-block' + control.innerHTML = 'i̍' + control.style.fontFamily = 'sans-serif' + control.style.display = 'inline-block' - treat = $.clone( control ) - treat.style.fontFamily = '"Romanization Sans"' + treat = $.clone( control ) + treat.style.fontFamily = '"Romanization Sans"' - container.appendChild( control ) - container.appendChild( treat ) + container.appendChild( control ) + container.appendChild( treat ) - ret = control.clientWidth !== treat.clientWidth - $.remove( container ) + ret = control.clientWidth !== treat.clientWidth + $.remove( container ) - if ( !body ) { - root.style.overflow = docOverflow - } - return ret - })(), + if ( !body ) { + root.style.overflow = docOverflow + } + return ret +})() - aCombLiga = Han.TYPESET[ 'display-as' ][ 'comb-liga-pua' ], - aInaccurateChar = Han.TYPESET[ 'inaccurate-char' ], +var aCombLiga = Han.TYPESET[ 'display-as' ][ 'comb-liga-pua' ] +var aInaccurateChar = Han.TYPESET[ 'inaccurate-char' ] - charCombLiga = $.create( 'char', 'comb-liga' ), - charCombLigaInner = $.create( 'inner' ) +var charCombLiga = $.create( 'char', 'comb-liga' ) +var charCombLigaInner = $.create( 'inner' ) $.extend( Han, { isCombLigaNormal: isCombLigaNormal, substCombLigaWithPUA: function( context ) { - var context = context || document, - finder = Han.find( context ) + if ( isCombLigaNormal ) return - if ( isCombLigaNormal ) { - return - } + var context = context || document + var finder = Han.find( context ) - finder.filteredElemList += ELEM_TO_IGNORE + finder.filterOut( SELECTOR_TO_IGNORE, true ) aCombLiga .forEach(function( pattern ) { @@ -2373,8 +2257,8 @@ $.extend( Han, { .replace( new RegExp( pattern[ 0 ], 'ig' ), function( portion, match ) { - var ret = $.clone( charCombLiga ), - inner = $.clone( charCombLigaInner ) + var ret = $.clone( charCombLiga ) + var inner = $.clone( charCombLigaInner ) // Put the original content in an inner container // for better presentational effect of hidden text @@ -2405,10 +2289,10 @@ $.extend( Han, { }, substInaccurateChar: function( context ) { - var context = context || document, - finder = Han.find( context ) + var context = context || document + var finder = Han.find( context ) - finder.filteredElemList += ELEM_TO_IGNORE + finder.filterOut( SELECTOR_TO_IGNORE, true ) aInaccurateChar .forEach(function( pattern ) { finder @@ -2432,7 +2316,7 @@ $.extend( Han.fn, { revertCombLigaWithPUA: function() { try { this['comb-liga'].revert( 'all' ) - } catch ( e ) {} + } catch (e) {} return this }, @@ -2444,14 +2328,11 @@ $.extend( Han.fn, { revertInaccurateChar: function() { try { this['inaccurate-char'].revert( 'all' ) - } catch ( e ) {} + } catch (e) {} return this } }) - - - window.addEventListener( 'DOMContentLoaded', function() { var initContext @@ -2468,24 +2349,15 @@ window.addEventListener( 'DOMContentLoaded', function() { } }) - - // AMD -if ( - typeof define === 'function' && define.amd -) { - define(function() { - return Han - }) +if ( typeof define === 'function' && define.amd ) { + define(function() { return Han }) // Expose to global namespace -} else if ( - typeof noGlobalNS === 'undefined' || noGlobalNS === false -) { +} else if ( typeof noGlobalNS === 'undefined' || noGlobalNS === false ) { window.Han = Han } - return Han }); diff --git a/latest/han.min.css b/latest/han.min.css index 56a6ea36..a704af5f 100644 --- a/latest/han.min.css +++ b/latest/han.min.css @@ -1,5 +1,6 @@ -/*! 漢字標準格式 v3.0.2 | MIT License | css.hanzi.co */ -/*! Han: CSS typography framework optimised for Hanzi */ -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +@charset "UTF-8"; -@charset "UTF-8";html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{line-height:1.3;-webkit-font-smoothing:subpixel-antialiased}ol,ul{padding-left:2em}blockquote,figure{margin-left:2em;margin-right:2em}address{font-style:inherit}pre{white-space:pre;word-wrap:normal}a{text-decoration:inherit}em:lang(ja),em:lang(zh){-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;font-style:inherit;border-bottom:2px dotted;padding-bottom:.05em;border-bottom-width:-webkit-calc(0px);padding-bottom:-webkit-calc(0px)}em:lang(ja){-moz-text-emphasis:filled sesame;-webkit-text-emphasis:filled sesame;text-emphasis:filled sesame;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}b,dfn:lang(ja),dfn:lang(zh),strong{font-weight:bolder}cite:lang(ja),cite:lang(zh),dfn:lang(ja),dfn:lang(zh){font-style:inherit}q{quotes:"“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’"}q:lang(zh){quotes:"「" "」" "『" "』" "「" "」" "『" "』" "「" "」" "『" "』"}q:lang(en),q:lang(zh-CN){quotes:"“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’"}q:lang(en-GB){quotes:"‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”"}q:before{content:open-quote}q:after{content:close-quote}q:lang(ja):after,q:lang(ja):before{content:none}code,kbd,pre,samp{font-family:monospace,monospace,sans-serif}i:lang(ja),i:lang(zh),var:lang(ja),var:lang(zh){font-style:inherit}.hyu-js-rendered del+del.adjacent,.hyu-js-rendered del+s.adjacent,.hyu-js-rendered ins.adjacent,.hyu-js-rendered s+del.adjacent,.hyu-js-rendered s+s.adjacent,.hyu-js-rendered u.adjacent,del+del,del+s,ins+ins,ins+u,s+del,s+s,u+ins,u+u{margin-left:.125em}ins,u{padding-bottom:.05em;border-bottom:1px solid;text-decoration:none}ruby :after,ruby :before{line-height:normal}ruby>rt:not(:empty):before{content:"("}ruby>rt:not(:empty):after{content:")"}ruby>rb+rtc:before{content:"("}ruby>rtc:after{content:","}ruby>rtc:last-of-type:after{content:")"}ruby>rt:after,ruby>rt:before{display:inline-block;overflow:hidden;vertical-align:middle;height:0;width:0}ruby>rt:not(:empty):after,ruby>rt:not(:empty):before{height:-moz-calc(1.3em);width:-moz-calc(1em)}.hyu-js-rendered del+del,.hyu-js-rendered del+s,.hyu-js-rendered ins+ins,.hyu-js-rendered ins+u,.hyu-js-rendered s+del,.hyu-js-rendered s+s,.hyu-js-rendered u+ins,.hyu-js-rendered u+u{margin-left:auto}.hyu-js-rendered em:lang(ja),.hyu-js-rendered em:lang(zh){padding-bottom:auto;border-bottom-width:0}.no-textemphasis em:lang(ja),.no-textemphasis em:lang(zh){line-height:2}.no-textemphasis em:lang(ja) char,.no-textemphasis em:lang(zh) char{position:relative;font-style:inherit}.no-textemphasis em:lang(ja) char:after,.no-textemphasis em:lang(zh) char:after{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;text-decoration:none;-moz-transform:scale(0.5);-ms-transform:scale(0.5);-webkit-transform:scale(0.5);transform:scale(0.5);position:absolute;left:50%;top:0;margin-left:-250%;overflow:hidden;display:inline-block;height:1em;width:500%;line-height:1;text-align:center;text-indent:0;font-family:Georgia,"Times New Roman",Arial,!important}em:lang(ja) char.biaodian,em:lang(ja) char.punct,em:lang(zh) char.biaodian,em:lang(zh) char.punct{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none}.no-textemphasis em:lang(ja) char.biaodian:after,.no-textemphasis em:lang(ja) char.punct:after,.no-textemphasis em:lang(zh) char.biaodian:after,.no-textemphasis em:lang(zh) char.punct:after{content:none!important}.no-textemphasis em:lang(zh) char:after{margin-top:1em;content:"●"}.no-textemphasis em:lang(ja) char:after{margin-top:-.7em;content:"﹅"}hruby{display:inline;line-height:2}hruby rp{display:none}hruby ru[annotation]>rt{display:inline-block;height:0;width:0;font:0/0 hidden-text}hruby ru{position:relative;display:inline-block;text-indent:0}hruby ru:before,hruby zhuyin{-moz-transform:scale(0.55);-ms-transform:scale(0.55);-webkit-transform:scale(0.55);transform:scale(0.55);-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;line-height:normal;text-decoration:none;text-indent:0;position:absolute;display:inline-block}hruby ru[annotation]{text-align:center}hruby ru[annotation]:before{left:-265%;vertical-align:top;height:1em;width:600%;content:attr(annotation);line-height:1;text-align:center;text-indent:0}hruby[rightangle] ru[annotation]:before{left:-250%}hruby ru[zhuyin]{display:inline-block;position:relative;width:1.8em;text-align:left}hruby ru[zhuyin] zhuyin{right:.2em;top:0;height:2.7em;width:.8em;line-height:.9;white-space:pre-wrap;word-break:break-all}hruby ru[zhuyin] diao{position:absolute;right:-.9em;top:0;display:inline-block;width:1em}hruby ru[zhuyin]:empty,hruby ru[zhuyin][length='0']{width:auto}hruby ru[zhuyin]:empty zhuyin,hruby ru[zhuyin][length='0'] zhuyin{display:none}hruby ru[zhuyin][length='1'] zhuyin{margin-top:.125em}hruby ru[zhuyin][length='1'] diao{margin-top:-.35em}hruby ru[zhuyin][length='2'] zhuyin{margin-top:-.175em}hruby ru[zhuyin][length='2'] diao{margin-top:.5em}hruby ru[zhuyin][length='3'] zhuyin{margin-top:-.45em}hruby ru[zhuyin][length='3'] diao{margin-top:1.3em}hruby ru[zhuyin][diao='˙'] diao{right:-.35em}hruby ru[zhuyin][diao='˙'][length='1'] diao{margin-top:-.5em}hruby ru[zhuyin][diao='˙'][length='2'] diao{margin-top:-.3em}hruby ru[zhuyin][diao='˙'][length='3'] diao{margin-top:-.25em}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1.2);-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2);margin-right:-.25em}hruby ru[zhuyin][diao='󳆴'] diao,hruby ru[zhuyin][diao='󳆵'] diao,hruby ru[zhuyin][diao='󳆶'] diao,hruby ru[zhuyin][diao='󳆷'] diao,hruby ru[zhuyin][diao^='ㆴ'] diao,hruby ru[zhuyin][diao^='ㆵ'] diao,hruby ru[zhuyin][diao^='ㆶ'] diao,hruby ru[zhuyin][diao^='ㆷ'] diao{top:20%;margin-right:-.3em}hruby ru[annotation]:before,hruby[rightangle] ru[annotation][order='1']:before{top:-.5em}hruby ru[order='1']:before,hruby[rightangle] ru[annotation][order='0']:before{bottom:-.4em;top:auto}hruby[rightangle] ru[annotation]:before{margin-left:-.4em}@media screen and (-webkit-min-device-pixel-ratio:1.5),(min-resolution:192dpi){hruby yin{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);display:inline-block}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}hruby ru[zhuyin][diao='˙'] diao{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);top:.125em}}jinze{display:inline-block;text-indent:0}@font-face{font-family:'Han Heiti';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Lantinghei SC"),local("Heiti SC"),local("Heiti TC"),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Droid Sans Fallback")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';src:local(YuGothic),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro")}@font-face{font-family:'Han Heiti CNS';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Heiti TC"),local("Microsoft Jhenghei"),local("Heiti SC"),local("Lantinghei SC"),local("Microsoft Yahei"),local("Droid Sans Fallback")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';src:local(YuGothic),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro")}@font-face{font-family:'Han Heiti GB';src:local("Hiragino Sans GB"),local("Lantinghei SC"),local("Heiti SC"),local("Microsoft Yahei"),local("Droid Sans Fallback")}@font-face{font-family:'Han Heiti';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Lantinghei SC Demibold"),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local("Heiti SC Medium"),local("Heiti TC Medium"),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local("Microsoft YaHei Bold"),local("Microsoft Jhenghei Bold"),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';font-weight:600;src:local("YuGothic Bold"),local("Hiragino Kaku Gothic ProN W6"),local("Hiragino Kaku Gothic Pro W6"),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local("Lantinghei SC Demibold"),local("Microsoft YaHei Bold"),local("Heiti SC Medium"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';font-weight:600;src:local("YuGothic Bold"),local(YuGo-Bold),local("Hiragino Kaku Gothic ProN W6"),local("Hiragino Kaku Gothic Pro W6"),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti GB';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei SC Demibold"),local("Microsoft YaHei Bold"),local("Heiti SC Medium"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{font-family:'Han Heiti';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Lantinghei SC"),local("Heiti SC"),local("Heiti TC"),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:'Han Heiti';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Lantinghei SC Demibold"),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local("Heiti SC Medium"),local("Heiti TC Medium"),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local("Microsoft YaHei Bold"),local("Microsoft Jhenghei Bold"),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold);unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Heiti TC"),local("Microsoft Jhenghei"),local("Heiti SC"),local("Lantinghei SC"),local("Microsoft Yahei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local("Lantinghei SC Demibold"),local("Heiti SC Medium"),local("Microsoft YaHei Bold"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold);unicode-range:U+270C}@font-face{font-family:'Han Heiti GB';src:local("Hiragino Sans GB"),local("Lantinghei SC"),local("Heiti SC"),local("Microsoft Yahei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:'Han Songti';src:local("Songti SC"),local("Songti TC"),local(STSong),local("Lisong Pro"),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';src:local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho")}@font-face{font-family:'Han Songti CNS';src:local("Songti TC"),local("Lisong Pro"),local("Songti SC"),local(STSong),local(PMingLiU),local(SimSun)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';src:local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro")}@font-face{font-family:'Han Songti GB';src:local("Songti SC"),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:'Han Songti';font-weight:600;src:local("STSongti SC Bold"),local("STSongti TC Bold"),local(STSongti-SC-Bold),local(STSongti-TC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';font-weight:600;src:local("YuMincho Demibold"),local("Hiragino Mincho ProN W6"),local("Hiragino Mincho Pro W6"),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';font-weight:600;src:local("YuMincho Demibold"),local("Hiragino Mincho ProN W6"),local("Hiragino Mincho Pro W6"),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti GB';font-weight:600;src:local("STSongti SC Bold"),local(STSongti-SC-Bold)}@font-face{font-family:'Han Songti';src:local("Songti SC"),local("Songti TC"),local(STSongti),local("Lisong Pro"),local("MS Mincho"),local(SimSun),local(PMingLiU);unicode-range:U+270C}@font-face{font-family:'Han Songti';font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';src:local("Songti TC"),local("Lisong Pro"),local("Songti SC"),local(STSong),local("MS Mincho"),local(PMingLiU),local(SimSun);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti GB';src:local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+270C}@font-face{font-family:cursive;src:local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti';src:local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti CNS';src:local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti GB';src:local("Kaiti SC"),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti';font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti GB';font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong CNS';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong GB';src:local(STFangsong),local(FangSong)}@font-face{font-family:'Biaodian Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Serif';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Arial Unicode MS"),local("MS Gothic");unicode-range:U+2014}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho"),local("Microsoft Yahei");unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local("MS Mincho"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic");unicode-range:U+2026}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Lisong Pro"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Sans';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Serif';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans GB';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif GB';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU),local("MS Gothic");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(STSongti-TC-Regular),local("Lisong Pro"),local("Heiti TC"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Songti SC"),local(STSongti),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Basic';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:'Biaodian Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Latin Italic Serif';src:local("Georgia Italic"),local("Times New Roman Italic"),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Serif';font-weight:700;src:local("Georgia Bold Italic"),local("Times New Roman Bold Italic"),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Sans';src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:'Latin Italic Sans';font-weight:700;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Sans';src:local(Skia),local("Neutraface 2 Text"),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Serif';src:local(Georgia),local("Hoefler Text"),local("Big Caslon")}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Italic Serif';src:local("Georgia Italic"),local("Hoefler Text Italic"),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Sans';src:local("Helvetica Neue"),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';font-weight:700;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Serif';src:local(Palatino),local("Palatino Linotype"),local("Times New Roman")}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';src:local("Palatino Italic"),local("Palatino Italic Linotype"),local("Times New Roman Italic"),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';font-weight:700;src:local("Palatino Bold Italic"),local("Palatino Bold Italic Linotype"),local("Times New Roman Bold Italic"),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{font-family:'Numeral TF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Kaiti'}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Heiti';src:local("Hiragino Sans GB"),local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype")}@font-face{font-family:'Zhuyin Heiti';src:local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");unicode-range:U+3127}@font-face{src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");font-family:'Zhuyin Heiti';unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");font-family:'Romanization Sans';unicode-range:U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}article strong :lang(ja-Latn),article strong :lang(zh-Latn),article strong :not(:lang(zh)):not(:lang(ja)),article strong:lang(ja-Latn),article strong:lang(zh-Latn),article strong:not(:lang(zh)):not(:lang(ja)),html :lang(ja-Latn),html :lang(zh-Latn),html :not(:lang(zh)):not(:lang(ja)),html:lang(ja-Latn),html:lang(zh-Latn),html:not(:lang(zh)):not(:lang(ja)){font-family:"Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}[lang*=Hant],[lang=zh-HK],[lang=zh-TW],[lang^=zh],article strong:lang(zh),article strong:lang(zh-Hant),html:lang(zh),html:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}[lang*=Hans],[lang=zh-CN],article strong:lang(zh-CN),article strong:lang(zh-Hans),html:lang(zh-CN),html:lang(zh-Hans){font-family:"Biaodian Pro Sans GB","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}[lang^=ja],article strong:lang(ja),html:lang(ja){font-family:"Yakumono Sans","Helvetica Neue",Helvetica,Arial,sans-serif}article blockquote i :lang(ja-Latn),article blockquote i :lang(zh-Latn),article blockquote i :not(:lang(zh)):not(:lang(ja)),article blockquote i:lang(ja-Latn),article blockquote i:lang(zh-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote var :lang(ja-Latn),article blockquote var :lang(zh-Latn),article blockquote var :not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(ja-Latn),article blockquote var:lang(zh-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}article blockquote i:lang(zh-CN),article blockquote i:lang(zh-Hans),article blockquote var:lang(zh-CN),article blockquote var:lang(zh-Hans){font-family:"Biaodian Pro Sans GB","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}article blockquote i:lang(ja),article blockquote var:lang(ja){font-family:"Yakumono Sans","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,sans-serif}article figure blockquote :lang(ja-Latn),article figure blockquote :lang(zh-Latn),article figure blockquote :not(:lang(zh)):not(:lang(ja)),article figure blockquote:lang(ja-Latn),article figure blockquote:lang(zh-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)),figure blockquote :lang(ja-Latn),figure blockquote :lang(zh-Latn),figure blockquote :not(:lang(zh)):not(:lang(ja)),figure blockquote:lang(ja-Latn),figure blockquote:lang(zh-Latn),figure blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Songti",cursive,serif}article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant),figure blockquote:lang(zh),figure blockquote:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Songti",serif}article figure blockquote:lang(zh-CN),article figure blockquote:lang(zh-Hans),figure blockquote:lang(zh-CN),figure blockquote:lang(zh-Hans){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Songti GB",serif}article figure blockquote:lang(ja),figure blockquote:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",serif}article blockquote :lang(ja-Latn),article blockquote :lang(zh-Latn),article blockquote :not(:lang(zh)):not(:lang(ja)),article blockquote:lang(ja-Latn),article blockquote:lang(zh-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Kaiti",cursive,serif}article blockquote:lang(zh),article blockquote:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}article blockquote:lang(zh-CN),article blockquote:lang(zh-Hans){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}article blockquote:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",cursive,serif}i :lang(ja-Latn),i :lang(zh-Latn),i :not(:lang(zh)):not(:lang(ja)),i:lang(ja-Latn),i:lang(zh-Latn),i:not(:lang(zh)):not(:lang(ja)),var :lang(ja-Latn),var :lang(zh-Latn),var :not(:lang(zh)):not(:lang(ja)),var:lang(ja-Latn),var:lang(zh-Latn),var:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti",cursive,serif}i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}i:lang(zh-CN),i:lang(zh-Hans),var:lang(zh-CN),var:lang(zh-Hans){font-family:"Biaodian Pro Serif GB","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}i:lang(ja),var:lang(ja){font-family:"Yakumono Serif","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman",cursive,serif}code :lang(ja-Latn),code :lang(zh-Latn),code :not(:lang(zh)):not(:lang(ja)),code:lang(ja-Latn),code:lang(zh-Latn),code:not(:lang(zh)):not(:lang(ja)),kbd :lang(ja-Latn),kbd :lang(zh-Latn),kbd :not(:lang(zh)):not(:lang(ja)),kbd:lang(ja-Latn),kbd:lang(zh-Latn),kbd:not(:lang(zh)):not(:lang(ja)),pre :lang(ja-Latn),pre :lang(zh-Latn),pre :not(:lang(zh)):not(:lang(ja)),pre:lang(ja-Latn),pre:lang(zh-Latn),pre:not(:lang(zh)):not(:lang(ja)),samp :lang(ja-Latn),samp :lang(zh-Latn),samp :not(:lang(zh)):not(:lang(ja)),samp:lang(ja-Latn),samp:lang(zh-Latn),samp:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,"Han Heiti",monospace,monospace,sans-serif}code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS",Menlo,Consolas,Courier,"Zhuyin Heiti","Han Heiti",monospace,monospace,sans-serif}code:lang(zh-CN),code:lang(zh-Hans),kbd:lang(zh-CN),kbd:lang(zh-Hans),pre:lang(zh-CN),pre:lang(zh-Hans),samp:lang(zh-CN),samp:lang(zh-Hans){font-family:"Biaodian Pro Sans GB",Menlo,Consolas,Courier,"Han Heiti GB",monospace,monospace,sans-serif}code:lang(ja),kbd:lang(ja),pre:lang(ja),samp:lang(ja){font-family:"Yakumono Sans",Menlo,Consolas,Courier,monospace,monospace,sans-serif}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7],hruby ru[annotation]:before,hruby ru[zhuyin] zhuyin,hruby ru[zhuyin] zhuyin diao,hruby.romanization rt,html,ruby ru[annotation]:before,ruby ru[zhuyin] zhuyin,ruby ru[zhuyin] zhuyin diao,ruby.romanization rt{-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga";-webkit-font-feature-settings:"liga";font-feature-settings:"liga"}hruby ru[zhuyin] zhuyin diao,ruby ru[zhuyin] zhuyin diao{font-family:"Zhuyin Kaiti",cursive,serif}hruby ru[annotation]:before,hruby.romanization rt,ruby ru[annotation]:before,ruby.romanization rt{font-family:"Romanization Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}.no-kaiti i,.no-kaiti var{padding-bottom:.05em;border-bottom:3px double lightgrey}article{line-height:1.7}article li,article p{text-align:justify;text-justify:inter-ideograph}article h1+blockquote,article h1+h2,article h1+h3,article h1+h4,article h1+h5,article h1+h6,article h1+ol,article h1+p,article h1+section>blockquote:first-child,article h1+section>h2:first-child,article h1+section>h3:first-child,article h1+section>h4:first-child,article h1+section>h5:first-child,article h1+section>h6:first-child,article h1+section>ol:first-child,article h1+section>p:first-child,article h1+section>ul:first-child,article h1+ul,article h2+blockquote,article h2+h2,article h2+h3,article h2+h4,article h2+h5,article h2+h6,article h2+ol,article h2+p,article h2+section>blockquote:first-child,article h2+section>h2:first-child,article h2+section>h3:first-child,article h2+section>h4:first-child,article h2+section>h5:first-child,article h2+section>h6:first-child,article h2+section>ol:first-child,article h2+section>p:first-child,article h2+section>ul:first-child,article h2+ul,article h3+blockquote,article h3+h3,article h3+h4,article h3+h5,article h3+h6,article h3+ol,article h3+p,article h3+section>blockquote:first-child,article h3+section>h3:first-child,article h3+section>h4:first-child,article h3+section>h5:first-child,article h3+section>h6:first-child,article h3+section>ol:first-child,article h3+section>p:first-child,article h3+section>ul:first-child,article h3+ul,article h4+blockquote,article h4+h4,article h4+h5,article h4+h6,article h4+ol,article h4+p,article h4+section>blockquote:first-child,article h4+section>h4:first-child,article h4+section>h5:first-child,article h4+section>h6:first-child,article h4+section>ol:first-child,article h4+section>p:first-child,article h4+section>ul:first-child,article h4+ul,article h5+blockquote,article h5+h5,article h5+h6,article h5+ol,article h5+p,article h5+section>blockquote:first-child,article h5+section>h5:first-child,article h5+section>h6:first-child,article h5+section>ol:first-child,article h5+section>p:first-child,article h5+section>ul:first-child,article h5+ul,article h6+blockquote,article h6+h6,article h6+ol,article h6+p,article h6+section>blockquote:first-child,article h6+section>h6:first-child,article h6+section>ol:first-child,article h6+section>p:first-child,article h6+section>ul:first-child,article h6+ul{margin-top:-1em}.poem-like p,p.poem-like{margin-left:2em}@media only screen and (max-width:480px){.poem-like p,p.poem-like{margin-left:1em}}article blockquote{margin-right:0}@media only screen and (max-width:480px){article blockquote{margin-left:1em}}figure blockquote{margin:0}blockquote blockquote{margin-left:1em;margin-right:1em}article blockquote blockquote{margin-right:0}@media only screen and (max-width:480px){blockquote,figure{margin-left:1em;margin-right:1em}}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7]{font-family:"Biaodian Basic","Han Heiti"}hws{display:inline;visibility:hidden;font-family:Arial,sans-serif!important;font-size:.89em}code hws,kbd hws,ol>hws,pre hws,samp hws,ul>hws{display:none}char_group .close:not(:last-child),char_group .open:not(:last-child),char_group [unicode='3001']:not(:last-child),char_group [unicode='3002']:not(:last-child),char_group [unicode=ff08]:not(:last-child),char_group [unicode=ff0c]:not(:last-child){letter-spacing:-.5em}char_group [unicode='30fb']+[unicode='300c'],char_group [unicode='30fb']+[unicode='300e'],char_group [unicode=b7]+[unicode='300c'],char_group [unicode=b7]+[unicode='300e']{margin-left:-.5em}char_group .liga+[unicode='300c'],char_group .liga+[unicode='300e']{margin-left:-.25em}char[display-as]{position:relative;display:inline-block}char[display-as] inner{color:transparent}char[display-as]:after{position:absolute;left:0;display:inline-block;content:attr(display-as)}char[display-as].comb-liga:after{font-family:"Romanization Sans","Zhuyin Kaiti"} \ No newline at end of file +/*! 漢字標準格式 v3.1.0 | MIT License | css.hanzi.co */ +/*! Han.css: the CSS typography framework optimised for Hanzi */ + +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{line-height:1.3;-webkit-font-smoothing:subpixel-antialiased}ol,ul{padding-left:2em}blockquote,figure{margin-left:2em;margin-right:2em}address{font-style:inherit}pre{white-space:pre;word-wrap:normal}a{text-decoration:inherit}em:lang(ja),em:lang(zh){-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;font-style:inherit;border-bottom:2px dotted;padding-bottom:.05em;border-bottom-width:-webkit-calc(0px);padding-bottom:-webkit-calc(0px)}em:lang(ja){-moz-text-emphasis:filled sesame;-webkit-text-emphasis:filled sesame;text-emphasis:filled sesame;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}b,dfn:lang(ja),dfn:lang(zh),strong{font-weight:bolder}cite:lang(ja),cite:lang(zh),dfn:lang(ja),dfn:lang(zh){font-style:inherit}q{quotes:"\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019"}q:lang(zh){quotes:"\300c" "\300d" "\300e" "\300f" "\300c" "\300d" "\300e" "\300f" "\300c" "\300d" "\300e" "\300f"}q:lang(en),q:lang(zh-CN){quotes:"\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019"}q:lang(en-GB){quotes:"\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d"}q:before{content:open-quote}q:after{content:close-quote}q:lang(ja):after,q:lang(ja):before{content:none}code,kbd,pre,samp{font-family:monospace,monospace,sans-serif}i:lang(ja),i:lang(zh),var:lang(ja),var:lang(zh){font-style:inherit}.han-js-rendered del+del.adjacent,.han-js-rendered del+s.adjacent,.han-js-rendered ins.adjacent,.han-js-rendered s+del.adjacent,.han-js-rendered s+s.adjacent,.han-js-rendered u.adjacent,del+del,del+s,ins+ins,ins+u,s+del,s+s,u+ins,u+u{margin-left:.125em}ins,u{padding-bottom:.05em;border-bottom:1px solid;text-decoration:none}ruby :after,ruby :before{line-height:normal}ruby>rt:not(:empty):before{content:"\ff08"}ruby>rt:not(:empty):after{content:"\ff09"}ruby>rb+rtc:before{content:"\ff08"}ruby>rtc:after{content:"\ff0c"}ruby>rtc:last-of-type:after{content:"\ff09"}ruby>rt:after,ruby>rt:before{display:inline-block;overflow:hidden;vertical-align:middle;height:0;width:0}ruby>rt:not(:empty):after,ruby>rt:not(:empty):before{height:-moz-calc(1.3em);width:-moz-calc(1em)}.han-js-rendered del+del,.han-js-rendered del+s,.han-js-rendered ins+ins,.han-js-rendered ins+u,.han-js-rendered s+del,.han-js-rendered s+s,.han-js-rendered u+ins,.han-js-rendered u+u{margin-left:auto}.han-js-rendered em:lang(ja),.han-js-rendered em:lang(zh){padding-bottom:auto;border-bottom-width:0}.no-textemphasis em:lang(ja),.no-textemphasis em:lang(zh){line-height:2}.no-textemphasis em:lang(ja) char,.no-textemphasis em:lang(zh) char{position:relative;font-style:inherit}.no-textemphasis em:lang(ja) char:after,.no-textemphasis em:lang(zh) char:after{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;text-decoration:none;-moz-transform:scale(.5);-ms-transform:scale(.5);-webkit-transform:scale(.5);transform:scale(.5);position:absolute;left:50%;top:0;margin-left:-250%;overflow:hidden;display:inline-block;height:1em;width:500%;line-height:1;text-align:center;text-indent:0;font-family:Georgia,"Times New Roman",Arial,!important}em:lang(ja) char.biaodian,em:lang(ja) char.punct,em:lang(zh) char.biaodian,em:lang(zh) char.punct{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none}.no-textemphasis em:lang(ja) char.biaodian:after,.no-textemphasis em:lang(ja) char.punct:after,.no-textemphasis em:lang(zh) char.biaodian:after,.no-textemphasis em:lang(zh) char.punct:after{content:none!important}.no-textemphasis em:lang(zh) char:after{margin-top:1em;content:"\25cf"}.no-textemphasis em:lang(ja) char:after{margin-top:-.7em;content:"\fe45"}hruby{display:inline;line-height:2}hruby rp{display:none}hruby ru[annotation]>rt{display:inline-block;height:0;width:0;font:0/0 hidden-text}hruby ru{position:relative;display:inline-block;text-indent:0}hruby ru:before,hruby zhuyin{-moz-transform:scale(.55);-ms-transform:scale(.55);-webkit-transform:scale(.55);transform:scale(.55);-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;line-height:normal;text-decoration:none;text-indent:0;position:absolute;display:inline-block}hruby ru[annotation]{text-align:center}hruby ru[annotation]:before{left:-265%;vertical-align:top;height:1em;width:600%;content:attr(annotation);line-height:1;text-align:center;text-indent:0}hruby[rightangle] ru[annotation]:before{left:-250%}hruby ru[zhuyin]{display:inline-block;position:relative;width:1.8em;text-align:left}hruby ru[zhuyin] zhuyin{right:.2em;top:0;height:2.7em;width:.8em;line-height:.9;white-space:pre-wrap;word-break:break-all}hruby ru[zhuyin] diao{position:absolute;right:-.9em;top:0;display:inline-block;width:1em}hruby ru[zhuyin]:empty,hruby ru[zhuyin][length="0"]{width:auto}hruby ru[zhuyin]:empty zhuyin,hruby ru[zhuyin][length="0"] zhuyin{display:none}hruby ru[zhuyin][length="1"] zhuyin{margin-top:.125em}hruby ru[zhuyin][length="1"] diao{margin-top:-.35em}hruby ru[zhuyin][length="2"] zhuyin{margin-top:-.175em}hruby ru[zhuyin][length="2"] diao{margin-top:.5em}hruby ru[zhuyin][length="3"] zhuyin{margin-top:-.45em}hruby ru[zhuyin][length="3"] diao{margin-top:1.3em}hruby ru[zhuyin][diao="˙"] diao{right:-.35em}hruby ru[zhuyin][diao="˙"][length="1"] diao{margin-top:-.5em}hruby ru[zhuyin][diao="˙"][length="2"] diao{margin-top:-.3em}hruby ru[zhuyin][diao="˙"][length="3"] diao{margin-top:-.25em}hruby ru[zhuyin][diao="˪"] diao,hruby ru[zhuyin][diao="˫"] diao{-moz-transform:scale(1.2);-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2);margin-right:-.25em}hruby ru[zhuyin][diao="󳆴"] diao,hruby ru[zhuyin][diao="󳆵"] diao,hruby ru[zhuyin][diao="󳆶"] diao,hruby ru[zhuyin][diao="󳆷"] diao,hruby ru[zhuyin][diao^="ㆴ"] diao,hruby ru[zhuyin][diao^="ㆵ"] diao,hruby ru[zhuyin][diao^="ㆶ"] diao,hruby ru[zhuyin][diao^="ㆷ"] diao{top:20%;margin-right:-.3em}hruby ru[annotation]:before,hruby[rightangle] ru[annotation][order="1"]:before{top:-.5em}hruby ru[order="1"]:before,hruby[rightangle] ru[annotation][order="0"]:before{bottom:-.4em;top:auto}hruby[rightangle] ru[annotation]:before{margin-left:-.4em}@media screen and (-webkit-min-device-pixel-ratio:1.5),(min-resolution:192dpi){hruby yin{-moz-transform:scale(.8);-ms-transform:scale(.8);-webkit-transform:scale(.8);transform:scale(.8);display:inline-block}hruby ru[zhuyin][diao="˪"] diao,hruby ru[zhuyin][diao="˫"] diao{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}hruby ru[zhuyin][diao="˙"] diao{-moz-transform:scale(.8);-ms-transform:scale(.8);-webkit-transform:scale(.8);transform:scale(.8);top:.125em}}jinze{display:inline-block;text-indent:0}@font-face{font-family:"Han Heiti";src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Lantinghei SC"),local("Heiti SC"),local("Heiti TC"),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Droid Sans Fallback")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Heiti";src:local(YuGothic),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro")}@font-face{font-family:"Han Heiti CNS";src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Heiti TC"),local("Microsoft Jhenghei"),local("Heiti SC"),local("Lantinghei SC"),local("Microsoft Yahei"),local("Droid Sans Fallback")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Heiti CNS";src:local(YuGothic),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro")}@font-face{font-family:"Han Heiti GB";src:local("Hiragino Sans GB"),local("Lantinghei SC"),local("Heiti SC"),local("Microsoft Yahei"),local("Droid Sans Fallback")}@font-face{font-family:"Han Heiti";font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Lantinghei SC Demibold"),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local("Heiti SC Medium"),local("Heiti TC Medium"),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local("Microsoft YaHei Bold"),local("Microsoft Jhenghei Bold"),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Heiti";font-weight:600;src:local("YuGothic Bold"),local("Hiragino Kaku Gothic ProN W6"),local("Hiragino Kaku Gothic Pro W6"),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:"Han Heiti CNS";font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local("Lantinghei SC Demibold"),local("Microsoft YaHei Bold"),local("Heiti SC Medium"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Heiti CNS";font-weight:600;src:local("YuGothic Bold"),local(YuGo-Bold),local("Hiragino Kaku Gothic ProN W6"),local("Hiragino Kaku Gothic Pro W6"),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:"Han Heiti GB";font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei SC Demibold"),local("Microsoft YaHei Bold"),local("Heiti SC Medium"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{font-family:"Han Heiti";src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Lantinghei SC"),local("Heiti SC"),local("Heiti TC"),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:"Han Heiti";font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Lantinghei SC Demibold"),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local("Heiti SC Medium"),local("Heiti TC Medium"),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local("Microsoft YaHei Bold"),local("Microsoft Jhenghei Bold"),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold);unicode-range:U+270C}@font-face{font-family:"Han Heiti CNS";src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Heiti TC"),local("Microsoft Jhenghei"),local("Heiti SC"),local("Lantinghei SC"),local("Microsoft Yahei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:"Han Heiti CNS";font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local("Lantinghei SC Demibold"),local("Heiti SC Medium"),local("Microsoft YaHei Bold"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold);unicode-range:U+270C}@font-face{font-family:"Han Heiti GB";src:local("Hiragino Sans GB"),local("Lantinghei SC"),local("Heiti SC"),local("Microsoft Yahei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:"Han Songti";src:local("Songti SC"),local("Songti TC"),local(STSong),local("Lisong Pro"),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Songti";src:local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho")}@font-face{font-family:"Han Songti CNS";src:local("Songti TC"),local("Lisong Pro"),local("Songti SC"),local(STSong),local(PMingLiU),local(SimSun)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Songti CNS";src:local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro")}@font-face{font-family:"Han Songti GB";src:local("Songti SC"),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:"Han Songti";font-weight:600;src:local("STSongti SC Bold"),local("STSongti TC Bold"),local(STSongti-SC-Bold),local(STSongti-TC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Songti";font-weight:600;src:local("YuMincho Demibold"),local("Hiragino Mincho ProN W6"),local("Hiragino Mincho Pro W6"),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:"Han Songti CNS";font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Songti CNS";font-weight:600;src:local("YuMincho Demibold"),local("Hiragino Mincho ProN W6"),local("Hiragino Mincho Pro W6"),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:"Han Songti GB";font-weight:600;src:local("STSongti SC Bold"),local(STSongti-SC-Bold)}@font-face{font-family:"Han Songti";src:local("Songti SC"),local("Songti TC"),local(STSongti),local("Lisong Pro"),local("MS Mincho"),local(SimSun),local(PMingLiU);unicode-range:U+270C}@font-face{font-family:"Han Songti";font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:"Han Songti CNS";src:local("Songti TC"),local("Lisong Pro"),local("Songti SC"),local(STSong),local("MS Mincho"),local(PMingLiU),local(SimSun);unicode-range:U+270C}@font-face{font-family:"Han Songti CNS";font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:"Han Songti GB";src:local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+270C}@font-face{font-family:cursive;src:local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Kaiti";src:local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Kaiti CNS";src:local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Kaiti GB";src:local("Kaiti SC"),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{font-family:"Han Kaiti";font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{font-family:"Han Kaiti GB";font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Fangsong";src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Fangsong CNS";src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Fangsong GB";src:local(STFangsong),local(FangSong)}@font-face{font-family:"Biaodian Sans";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Serif";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Sans";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Serif";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Serif CNS";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Sans GB";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Sans";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Serif";src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Sans";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Serif";src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Serif CNS";src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Sans GB";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Sans";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Serif";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Yakumono Sans";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Arial Unicode MS"),local("MS Gothic");unicode-range:U+2014}@font-face{font-family:"Yakumono Serif";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho"),local("Microsoft Yahei");unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Sans";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Serif";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Sans CNS";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Serif CNS";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Sans GB";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Serif GB";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Sans";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Serif";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local("MS Mincho"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Yakumono Sans";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic");unicode-range:U+2026}@font-face{font-family:"Yakumono Serif";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Sans";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Serif";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Sans CNS";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Serif CNS";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Sans GB";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Serif GB";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Sans GB";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Lisong Pro"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:"Biaodian Sans";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Serif";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Sans";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Serif";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Sans CNS";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Serif CNS";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Sans GB";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Serif GB";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Sans";src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Serif";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU),local("MS Gothic");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Serif CNS";src:local(STSongti-TC-Regular),local("Lisong Pro"),local("Heiti TC"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:"Biaodian Pro Serif CNS";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Sans GB";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Songti SC"),local(STSongti),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Sans";src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Pro Serif";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Pro Serif CNS";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Pro Sans GB";src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Basic";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:"Biaodian Sans";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Biaodian Serif";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Biaodian Pro Sans";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Biaodian Pro Serif";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Biaodian Pro Sans CNS";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Biaodian Pro Serif CNS";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Biaodian Pro Sans GB";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Biaodian Pro Serif GB";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Latin Italic Serif";src:local("Georgia Italic"),local("Times New Roman Italic"),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:"Latin Italic Serif";font-weight:700;src:local("Georgia Bold Italic"),local("Times New Roman Bold Italic"),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:"Latin Italic Sans";src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:"Latin Italic Sans";font-weight:700;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral TF Sans";src:local(Skia),local("Neutraface 2 Text"),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral TF Serif";src:local(Georgia),local("Hoefler Text"),local("Big Caslon")}@font-face{unicode-range:U+0030-0039;font-family:"Numeral TF Italic Serif";src:local("Georgia Italic"),local("Hoefler Text Italic"),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Sans";src:local("Helvetica Neue"),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Italic Sans";src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Italic Sans";font-weight:700;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Serif";src:local(Palatino),local("Palatino Linotype"),local("Times New Roman")}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Italic Serif";src:local("Palatino Italic"),local("Palatino Italic Linotype"),local("Times New Roman Italic"),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Italic Serif";font-weight:700;src:local("Palatino Bold Italic"),local("Palatino Bold Italic Linotype"),local("Times New Roman Bold Italic"),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{font-family:"Numeral TF Sans";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral TF Serif";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral TF Italic Serif";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral LF Sans";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral LF Italic Sans";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral LF Italic Sans";font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral LF Serif";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral LF Italic Serif";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral LF Italic Serif";font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype");unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:"Zhuyin Kaiti"}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:"Zhuyin Heiti";src:local("Hiragino Sans GB"),local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype")}@font-face{font-family:"Zhuyin Heiti";src:local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype");unicode-range:U+3127}@font-face{src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype");font-family:"Zhuyin Heiti";unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype");font-family:"Romanization Sans";unicode-range:U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}article strong :lang(ja-Latn),article strong :lang(zh-Latn),article strong :not(:lang(zh)):not(:lang(ja)),article strong:lang(ja-Latn),article strong:lang(zh-Latn),article strong:not(:lang(zh)):not(:lang(ja)),html :lang(ja-Latn),html :lang(zh-Latn),html :not(:lang(zh)):not(:lang(ja)),html:lang(ja-Latn),html:lang(zh-Latn),html:not(:lang(zh)):not(:lang(ja)){font-family:"Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}[lang*=Hant],[lang=zh-HK],[lang=zh-TW],[lang^=zh],article strong:lang(zh),article strong:lang(zh-Hant),html:lang(zh),html:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}[lang*=Hans],[lang=zh-CN],article strong:lang(zh-CN),article strong:lang(zh-Hans),html:lang(zh-CN),html:lang(zh-Hans){font-family:"Biaodian Pro Sans GB","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}[lang^=ja],article strong:lang(ja),html:lang(ja){font-family:"Yakumono Sans","Helvetica Neue",Helvetica,Arial,sans-serif}article blockquote i :lang(ja-Latn),article blockquote i :lang(zh-Latn),article blockquote i :not(:lang(zh)):not(:lang(ja)),article blockquote i:lang(ja-Latn),article blockquote i:lang(zh-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote var :lang(ja-Latn),article blockquote var :lang(zh-Latn),article blockquote var :not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(ja-Latn),article blockquote var:lang(zh-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}article blockquote i:lang(zh-CN),article blockquote i:lang(zh-Hans),article blockquote var:lang(zh-CN),article blockquote var:lang(zh-Hans){font-family:"Biaodian Pro Sans GB","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}article blockquote i:lang(ja),article blockquote var:lang(ja){font-family:"Yakumono Sans","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,sans-serif}article figure blockquote :lang(ja-Latn),article figure blockquote :lang(zh-Latn),article figure blockquote :not(:lang(zh)):not(:lang(ja)),article figure blockquote:lang(ja-Latn),article figure blockquote:lang(zh-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)),figure blockquote :lang(ja-Latn),figure blockquote :lang(zh-Latn),figure blockquote :not(:lang(zh)):not(:lang(ja)),figure blockquote:lang(ja-Latn),figure blockquote:lang(zh-Latn),figure blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Songti",cursive,serif}article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant),figure blockquote:lang(zh),figure blockquote:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Songti",serif}article figure blockquote:lang(zh-CN),article figure blockquote:lang(zh-Hans),figure blockquote:lang(zh-CN),figure blockquote:lang(zh-Hans){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Songti GB",serif}article figure blockquote:lang(ja),figure blockquote:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",serif}article blockquote :lang(ja-Latn),article blockquote :lang(zh-Latn),article blockquote :not(:lang(zh)):not(:lang(ja)),article blockquote:lang(ja-Latn),article blockquote:lang(zh-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Kaiti",cursive,serif}article blockquote:lang(zh),article blockquote:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}article blockquote:lang(zh-CN),article blockquote:lang(zh-Hans){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}article blockquote:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",cursive,serif}i :lang(ja-Latn),i :lang(zh-Latn),i :not(:lang(zh)):not(:lang(ja)),i:lang(ja-Latn),i:lang(zh-Latn),i:not(:lang(zh)):not(:lang(ja)),var :lang(ja-Latn),var :lang(zh-Latn),var :not(:lang(zh)):not(:lang(ja)),var:lang(ja-Latn),var:lang(zh-Latn),var:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti",cursive,serif}i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}i:lang(zh-CN),i:lang(zh-Hans),var:lang(zh-CN),var:lang(zh-Hans){font-family:"Biaodian Pro Serif GB","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}i:lang(ja),var:lang(ja){font-family:"Yakumono Serif","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman",cursive,serif}code :lang(ja-Latn),code :lang(zh-Latn),code :not(:lang(zh)):not(:lang(ja)),code:lang(ja-Latn),code:lang(zh-Latn),code:not(:lang(zh)):not(:lang(ja)),kbd :lang(ja-Latn),kbd :lang(zh-Latn),kbd :not(:lang(zh)):not(:lang(ja)),kbd:lang(ja-Latn),kbd:lang(zh-Latn),kbd:not(:lang(zh)):not(:lang(ja)),pre :lang(ja-Latn),pre :lang(zh-Latn),pre :not(:lang(zh)):not(:lang(ja)),pre:lang(ja-Latn),pre:lang(zh-Latn),pre:not(:lang(zh)):not(:lang(ja)),samp :lang(ja-Latn),samp :lang(zh-Latn),samp :not(:lang(zh)):not(:lang(ja)),samp:lang(ja-Latn),samp:lang(zh-Latn),samp:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,"Han Heiti",monospace,monospace,sans-serif}code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS",Menlo,Consolas,Courier,"Zhuyin Heiti","Han Heiti",monospace,monospace,sans-serif}code:lang(zh-CN),code:lang(zh-Hans),kbd:lang(zh-CN),kbd:lang(zh-Hans),pre:lang(zh-CN),pre:lang(zh-Hans),samp:lang(zh-CN),samp:lang(zh-Hans){font-family:"Biaodian Pro Sans GB",Menlo,Consolas,Courier,"Han Heiti GB",monospace,monospace,sans-serif}code:lang(ja),kbd:lang(ja),pre:lang(ja),samp:lang(ja){font-family:"Yakumono Sans",Menlo,Consolas,Courier,monospace,monospace,sans-serif}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7],hruby ru[annotation]:before,hruby ru[zhuyin] zhuyin,hruby ru[zhuyin] zhuyin diao,hruby.romanization rt,html,ruby ru[annotation]:before,ruby ru[zhuyin] zhuyin,ruby ru[zhuyin] zhuyin diao,ruby.romanization rt{-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga";-webkit-font-feature-settings:"liga";font-feature-settings:"liga"}i,var{font-style:inherit}hruby ru[zhuyin] zhuyin diao,ruby ru[zhuyin] zhuyin diao{font-family:"Zhuyin Kaiti",cursive,serif}hruby ru[annotation]:before,hruby.romanization rt,ruby ru[annotation]:before,ruby.romanization rt{font-family:"Romanization Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}.no-kaiti i,.no-kaiti var{padding-bottom:.05em;border-bottom:3px double lightgrey}article{line-height:1.7}article li,article p{text-align:justify;text-justify:inter-ideograph}article h1+blockquote,article h1+h2,article h1+h3,article h1+h4,article h1+h5,article h1+h6,article h1+ol,article h1+p,article h1+section>blockquote:first-child,article h1+section>h2:first-child,article h1+section>h3:first-child,article h1+section>h4:first-child,article h1+section>h5:first-child,article h1+section>h6:first-child,article h1+section>ol:first-child,article h1+section>p:first-child,article h1+section>ul:first-child,article h1+ul,article h2+blockquote,article h2+h2,article h2+h3,article h2+h4,article h2+h5,article h2+h6,article h2+ol,article h2+p,article h2+section>blockquote:first-child,article h2+section>h2:first-child,article h2+section>h3:first-child,article h2+section>h4:first-child,article h2+section>h5:first-child,article h2+section>h6:first-child,article h2+section>ol:first-child,article h2+section>p:first-child,article h2+section>ul:first-child,article h2+ul,article h3+blockquote,article h3+h3,article h3+h4,article h3+h5,article h3+h6,article h3+ol,article h3+p,article h3+section>blockquote:first-child,article h3+section>h3:first-child,article h3+section>h4:first-child,article h3+section>h5:first-child,article h3+section>h6:first-child,article h3+section>ol:first-child,article h3+section>p:first-child,article h3+section>ul:first-child,article h3+ul,article h4+blockquote,article h4+h4,article h4+h5,article h4+h6,article h4+ol,article h4+p,article h4+section>blockquote:first-child,article h4+section>h4:first-child,article h4+section>h5:first-child,article h4+section>h6:first-child,article h4+section>ol:first-child,article h4+section>p:first-child,article h4+section>ul:first-child,article h4+ul,article h5+blockquote,article h5+h5,article h5+h6,article h5+ol,article h5+p,article h5+section>blockquote:first-child,article h5+section>h5:first-child,article h5+section>h6:first-child,article h5+section>ol:first-child,article h5+section>p:first-child,article h5+section>ul:first-child,article h5+ul,article h6+blockquote,article h6+h6,article h6+ol,article h6+p,article h6+section>blockquote:first-child,article h6+section>h6:first-child,article h6+section>ol:first-child,article h6+section>p:first-child,article h6+section>ul:first-child,article h6+ul{margin-top:-1em}.poem-like p,p.poem-like{margin-left:2em}@media only screen and (max-width:480px){.poem-like p,p.poem-like{margin-left:1em}}article blockquote{margin-right:0}@media only screen and (max-width:480px){article blockquote{margin-left:1em}}figure blockquote{margin:0}blockquote blockquote{margin-left:1em;margin-right:1em}article blockquote blockquote{margin-right:0}@media only screen and (max-width:480px){blockquote,figure{margin-left:1em;margin-right:1em}}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7]{font-family:"Biaodian Basic","Han Heiti"}hws{display:inline;visibility:hidden;font-family:Arial,sans-serif!important;font-size:.89em}code hws,kbd hws,ol>hws,pre hws,samp hws,table>hws,tbody>hws,tfoot>hws,thead>hws,tr>hws,ul>hws{display:none}char_group .close:not(:last-child),char_group .open:not(:last-child),char_group [unicode="3001"]:not(:last-child),char_group [unicode="3002"]:not(:last-child),char_group [unicode=ff08]:not(:last-child),char_group [unicode=ff0c]:not(:last-child){letter-spacing:-.5em}char_group [unicode="3001"]:lang(zh-Hant):not(:last-child),char_group [unicode="3002"]:lang(zh-Hant):not(:last-child),char_group [unicode=ff08]:lang(zh-Hant):not(:last-child),char_group [unicode=ff0c]:lang(zh-Hant):not(:last-child){letter-spacing:inherit}char_group [unicode="3001"]:lang(zh-Hant)+.open,char_group [unicode="3002"]:lang(zh-Hant)+.open,char_group [unicode="30fb"]+[unicode="300c"],char_group [unicode="30fb"]+[unicode="300e"],char_group [unicode=b7]+[unicode="300c"],char_group [unicode=b7]+[unicode="300e"],char_group [unicode=ff08]:lang(zh-Hant)+.open,char_group [unicode=ff0c]:lang(zh-Hant)+.open{margin-left:-.5em}char_group .liga+[unicode="300c"],char_group .liga+[unicode="300e"]{margin-left:-.25em}char[display-as]{position:relative;display:inline-block}char[display-as] inner{color:transparent}char[display-as]:after{position:absolute;left:0;display:inline-block;content:attr(display-as)}char[display-as].comb-liga:after{font-family:"Romanization Sans","Zhuyin Kaiti"} \ No newline at end of file diff --git a/latest/han.min.js b/latest/han.min.js index d2e4466c..1d46d8b1 100644 --- a/latest/han.min.js +++ b/latest/han.min.js @@ -1,5 +1,4 @@ -/*! - * 漢字標準格式 v3.0.2 | MIT License | css.hanzi.co - * Han: CSS typography framework optimised for Hanzi - */ -void function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=b(a,!0):b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=a.document,d=c.documentElement,e=c.body,f="3.0.2",g=["initCond","renderElem","renderJiya","renderHWS","correctBasicBD","substCombLigaWithPUA"],h=function(a,b){return new h.fn.init(a,b)},i=function(){return arguments[0]&&(this.context=arguments[0]),arguments[1]&&(this.condition=arguments[1]),this};h.version=f,h.fn=h.prototype={version:f,constructor:h,context:e,condition:d,routine:g,init:i,setRoutine:function(a){return Array.isArray(a)&&(this.routine=a),this},render:function(a){var b=this,a=Array.isArray(a)?a:this.routine;return a.forEach(function(a){try{"string"==typeof a?b[a]():Array.isArray(a)&&b[a.shift()].apply(b,a)}catch(c){}}),this}},h.fn.init.prototype=h.fn,h.init=function(){return h.init=h().render()};var j={punct:{base:"[\u2026,.;:!?\u203d_]",sing:"[\u2010-\u2014\u2026]",middle:"[\\/~\\-&\u2010-\u2014_]",open:"['\"\u2018\u201c\\(\\[\xa1\xbf\u2e18\xab\u2039\u201a\u201c\u201e]",close:"['\"\u201d\u2019\\)\\]\xbb\u203a\u201b\u201d\u201f]",end:"['\"\u201d\u2019\\)\\]\xbb\u203a\u201b\u201d\u201f\u203c\u203d\u2047-\u2049,.;:!?]"},biaodian:{base:"[\ufe30\uff0e\u3001\uff0c\u3002\uff1a\uff1b\uff1f\uff01\u30fc]",liga:"[\u2014\u2026\u22ef]",middle:"[\xb7\uff3c\uff0f\uff0d\u30a0\uff06\u30fb\uff3f]",open:"[\u300c\u300e\u300a\u3008\uff08\u3014\uff3b\uff5b\u3010\u3016]",close:"[\u300d\u300f\u300b\u3009\uff09\u3015\uff3d\uff5d\u3011\u3017]",end:"[\u300d\u300f\u300b\u3009\uff09\u3015\uff3d\uff5d\u3011\u3017\ufe30\uff0e\u3001\uff0c\u3002\uff1a\uff1b\uff1f\uff01\u30fc]"},hanzi:{base:"[\u4e00-\u9fff\u3400-\u4db5\u31c0-\u31e3\u3007\ufa0e\ufa0f\ufa11\ufa13\ufa14\ufa1f\ufa21\ufa23\ufa24\ufa27-\ufa29]|[\ud800-\udbff][\udc00-\udfff]",desc:"[\u2ff0-\u2ffa]",radical:"[\u2f00-\u2fd5\u2e80-\u2ef3]"},latin:{base:"[A-Za-z0-9\xc0-\xff\u0100-\u017f\u0180-\u024f\u2c60-\u2c7f\ua720-\ua7ff\u1e00-\u1eff]",combine:"[\u0300-\u0341\u1dc0-\u1dff]"},ellinika:{base:"[0-9\u0370-\u03ff\u1f00-\u1fff]",combine:"[\u0300-\u0345\u1dc0-\u1dff]"},kirillica:{base:"[0-9\u0400-\u0482\u048a-\u04ff\u0500-\u052f\ua640-\ua66e\ua67e-\ua697]",combine:"[\u0483-\u0489\u2de0-\u2dff\ua66f-\ua67d\ua69f]"},kana:{base:"[\u30a2\u30a4\u30a6\u30a8\u30aa-\u30fa\u3042\u3044\u3046\u3048\u304a-\u3094\u309f\u30ff]|\ud82c[\udc00-\udc01]",small:"[\u3041\u3043\u3045\u3047\u3049\u30a1\u30a3\u30a5\u30a7\u30a9\u3063\u3083\u3085\u3087\u308e\u3095\u3096\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u31f0-\u31ff]",combine:"[\u3099-\u309c]",half:"[\uff66-\uff9f]",mark:"[\u30a0\u309d\u309e\u30fb-\u30fe]"},eonmun:{base:"[\uac00-\ud7a3]",letter:"[\u1100-\u11ff\u314f-\u3163\u3131-\u318e\ua960-\ua97c\ud7b0-\ud7fb]",half:"[\uffa1-\uffdc]"},zhuyin:{base:"[\u3105-\u312d\u31a0-\u31ba]",initial:"[\u3105-\u3119\u312a-\u312c\u31a0-\u31a3]",medial:"[\u3127-\u3129]","final":"[\u311a-\u3129\u312d\u31a4-\u31b3\u31b8-\u31ba]",tone:"[\u02d9\u02ca\u02c5\u02c7\u02cb\u02ea\u02eb]",ruyun:"[\u31b4-\u31b7][\u0358\u030d]?"}},k=function(){var a="[\\x20\\t\\r\\n\\f]",b=j.punct.open,c=j.punct.close,d=j.punct.end,e=j.punct.middle,f=j.punct.sing,g=b+"|"+d+"|"+e,h=j.biaodian.open,i=j.biaodian.close,k=j.biaodian.end,l=j.biaodian.middle,m=j.biaodian.liga+"{2}",n=h+"|"+k+"|"+l,o=j.kana.base+j.kana.combine+"?",p=j.kana.small+j.kana.combine+"?",q=j.kana.half,r=j.eonmun.base+"|"+j.eonmun.letter,s=j.eonmun.half,t=j.hanzi.base+"|"+j.hanzi.desc+"|"+j.hanzi.radical+"|"+o,u=j.ellinika.combine,v=j.latin.base+u+"*",w=j.ellinika.base+u+"*",x=j.kirillica.combine,y=j.kirillica.base+x+"*",z=v+"|"+w+"|"+y,A="['\u2019]",B=t+"|("+z+"|"+A+")+",C=j.zhuyin.initial,D=j.zhuyin.medial,E=j.zhuyin.final,F=j.zhuyin.tone+"|"+j.zhuyin.ruyun;return{"char":{punct:{all:new RegExp("("+g+")","g"),open:new RegExp("("+b+")","g"),end:new RegExp("("+d+")","g"),sing:new RegExp("("+f+")","g")},biaodian:{all:new RegExp("("+n+")","g"),open:new RegExp("("+h+")","g"),close:new RegExp("("+i+")","g"),end:new RegExp("("+k+")","g"),liga:new RegExp("("+m+")","g"),group:[new RegExp("("+h+"|"+l+"|"+k+"){2,}","g"),new RegExp("("+m+h+")","g")]},hanzi:{individual:new RegExp("("+t+")","g"),group:new RegExp("("+t+")+","g")},word:new RegExp("("+v+"|"+w+"|"+y+"|"+g+")+","ig"),alphabet:{latin:new RegExp("("+v+")","ig"),ellinika:new RegExp("("+w+")","ig"),kirillica:new RegExp("("+y+")","ig"),kana:new RegExp("("+o+")","g"),smallkana:new RegExp("("+p+")","g"),eonmun:new RegExp("("+r+")","g"),halfeonmun:new RegExp("("+s+")","g")}},jinze:{touwei:new RegExp("("+h+"+)("+B+")("+k+"+)","ig"),tou:new RegExp("("+h+"+)("+B+")","ig"),wei:new RegExp("("+B+")("+k+"+)","ig"),middle:new RegExp("("+B+")("+l+")("+B+")","ig")},zhuyin:{form:new RegExp("^\u02d9?("+C+")?("+D+")?("+E+")?("+F+")?$"),diao:new RegExp("("+F+")","g")},hws:{base:[new RegExp("("+t+")("+z+"|"+b+")","ig"),new RegExp("("+z+"|"+d+")("+t+")","ig")],strict:[new RegExp("("+t+")"+a+"?("+z+"|"+b+")","ig"),new RegExp("("+z+"|"+d+")"+a+"?("+t+")","ig")]},"display-as":{"ja-font-for-hant":["\u67e5 \u67fb","\u555f \u5553","\u9109 \u9115","\u503c \u5024","\u6c61 \u6c5a"],"comb-liga-pua":[["a[\u030d\u0358]","\udb80\udc61"],["e[\u030d\u0358]","\udb80\udc65"],["i[\u030d\u0358]","\udb80\udc69"],["o[\u030d\u0358]","\udb80\udc6f"],["u[\u030d\u0358]","\udb80\udc75"],["\u31b4[\u030d\u0358]","\udb8c\uddb4"],["\u31b5[\u030d\u0358]","\udb8c\uddb5"],["\u31b6[\u030d\u0358]","\udb8c\uddb6"],["\u31b7[\u030d\u0358]","\udb8c\uddb7"]]},"inaccurate-char":[["[\u2022\u2027]","\xb7"],["\u22ef\u22ef","\u2026\u2026"],["\u2500\u2500","\u2014\u2014"],["\u2035","\u2018"],["\u2032","\u2019"],["\u2036","\u201c"],["\u2033","\u201d"]]}}();h.UNICODE=j,h.TYPESET=k,h.UNICODE.cjk=h.UNICODE.hanzi,h.UNICODE.greek=h.UNICODE.ellinika,h.UNICODE.cyrillic=h.UNICODE.kirillica,h.UNICODE.hangul=h.UNICODE.eonmun,h.TYPESET.char.cjk=h.TYPESET.char.hanzi,h.TYPESET.char.alphabet.greek=h.TYPESET.char.alphabet.ellinika,h.TYPESET.char.alphabet.cyrillic=h.TYPESET.char.alphabet.kirillica,h.TYPESET.char.alphabet.hangul=h.TYPESET.char.alphabet.eonmun;var l={id:function(a,b){return(b||c).getElementById(a)},tag:function(a,b){return this.makeArray((b||c).getElementsByTagName(a))},qsa:function(a,b){return this.makeArray((b||c).querySelectorAll(a))},matches:function(a,b){var c=Element.prototype,d=c.matches||c.mozMatchesSelector||c.msMatchesSelector||c.webkitMatchesSelector;try{return d.call(a,b)}catch(e){return!1}},create:function(a,b){var a="!"===a?c.createDocumentFragment():""===a?c.createTextNode(b||""):c.createElement(a);try{b&&(a.className=b)}catch(d){}return a},clone:function(a,b){return a.cloneNode(b||!0)},remove:function(a,b){return(b||a.parentNode).removeChild(a)},setAttr:function(a,b){var c=b.length;if("object"==typeof b){if("object"==typeof b[0]&&"name"in b[0])for(var d=0;c>d;d++)void 0!==b[d].value&&a.setAttribute(b[d].name,b[d].value);else for(var e in b)b.hasOwnProperty(e)&&void 0!==b[e]&&a.setAttribute(e,b[e]);return a}},isIgnorable:function(a){return"WBR"===a.nodeName||a.nodeType===Node.COMMENT_NODE},makeArray:function(a){return Array.prototype.slice.call(a)},extend:function(a,b){var c="object"==typeof a||"function"==typeof a||"object"==typeof b;if(c){for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);return a}}},m=function(){var a="retain",b="first",d=c,e={}.toString;function f(a){return"[object Array]"==e.call(a)}function g(a){return String(a).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function h(){return i.apply(null,arguments)||j.apply(null,arguments)}function i(a,b,c,d,e){if(b&&!b.nodeType&&arguments.length<=2)return!1;var f="function"==typeof c;f&&(c=function(a){return function(b,c){return a(b.text,c.startIndex)}}(c));var g=j(b,{find:a,wrap:f?null:c,replace:f?c:"$"+(d||"&"),prepMatch:function(a,b){if(!a[0])throw"findAndReplaceDOMText cannot handle zero-length matches";if(d>0){var c=a[d];a.index+=a[0].indexOf(c),a[0]=c}return a.endIndex=a.index+a[0].length,a.startIndex=a.index,a.index=b,a},filterElements:e});return h.revert=function(){return g.revert()},!0}function j(a,b){return new k(a,b)}h.Finder=k;function k(b,c){c.portionMode=c.portionMode||a,this.node=b,this.options=c,this.prepMatch=c.prepMatch||this.prepMatch,this.reverts=[],this.matches=this.search(),this.matches.length&&this.processMatches()}return k.prototype={search:function(){var a,b=0,c=this.options.find,d=this.getAggregateText(),e=[];if(c="string"==typeof c?RegExp(g(c),"g"):c,c.global)while(a=c.exec(d))e.push(this.prepMatch(a,b++));else(a=d.match(c))&&e.push(this.prepMatch(a,0));return e},prepMatch:function(a,b){if(!a[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return a.endIndex=a.index+a[0].length,a.startIndex=a.index,a.index=b,a},getAggregateText:function(){var a=this.options.filterElements;return b(this.node);function b(c){if(3===c.nodeType)return c.data;if(a&&!a(c))return"";var d="";if(c=c.firstChild)do d+=b(c);while(c=c.nextSibling);return d}},processMatches:function(){var a=this.matches,b=this.node,c=this.options.filterElements,d,e,f=[],g=b,h=a.shift(),i=0,j=0,k=0,l,m=[b];a:while(!0){if(3===g.nodeType&&(!e&&g.length+i>=h.endIndex?e={node:g,index:k++,text:g.data.substring(h.startIndex-i,h.endIndex-i),indexInMatch:i-h.startIndex,indexInNode:h.startIndex-i,endIndexInNode:h.endIndex-i,isEnd:!0}:d&&f.push({node:g,index:k++,text:g.data,indexInMatch:i-h.startIndex,indexInNode:0}),!d&&g.length+i>h.startIndex&&(d={node:g,index:k++,indexInMatch:0,indexInNode:h.startIndex-i,endIndexInNode:h.endIndex-i,text:g.data.substring(h.startIndex-i,h.endIndex-i)}),i+=g.data.length),l=1===g.nodeType&&c&&!c(g),d&&e){if(g=this.replaceMatch(h,d,f,e),i-=e.node.data.length-e.endIndexInNode,d=null,e=null,f=[],h=a.shift(),k=0,j++,!h)break}else if(!l&&(g.firstChild||g.nextSibling)){g.firstChild?(m.push(g),g=g.firstChild):g=g.nextSibling;continue}while(!0){if(g.nextSibling){g=g.nextSibling;break}if(g=m.pop(),g===b)break a}}},revert:function(){for(var a=this.reverts.length;a--;)this.reverts[a]();this.reverts=[]},prepareReplacementString:function(a,c,d,e){var f=this.options.portionMode;return f===b&&c.indexInMatch>0?"":(a=a.replace(/\$(\d+|&|`|')/g,function(a,b){var c;switch(b){case"&":c=d[0];break;case"`":c=d.input.substring(0,d.startIndex);break;case"'":c=d.input.substring(d.endIndex);break;default:c=d[+b]}return c}),f===b?a:c.isEnd?a.substring(c.indexInMatch):a.substring(c.indexInMatch,c.indexInMatch+c.text.length))},getPortionReplacementNode:function(a,b,c){var e=this.options.replace||"$&",f=this.options.wrap;if(f&&f.nodeType){var g=d.createElement("div");g.innerHTML=f.outerHTML||(new XMLSerializer).serializeToString(f),f=g.firstChild}if("function"==typeof e)return e=e(a,b,c),e&&e.nodeType?e:d.createTextNode(String(e));var h="string"==typeof f?d.createElement(f):f;return e=d.createTextNode(this.prepareReplacementString(e,a,b,c)),e.data&&h?(h.appendChild(e),h):e},replaceMatch:function(a,b,c,e){var f=b.node,g=e.node,h,i;if(f===g){var j=f;b.indexInNode>0&&(h=d.createTextNode(j.data.substring(0,b.indexInNode)),j.parentNode.insertBefore(h,j));var k=this.getPortionReplacementNode(e,a);return j.parentNode.insertBefore(k,j),e.endIndexInNoden;++n){var p=c[n],q=this.getPortionReplacementNode(p,a);p.node.parentNode.replaceChild(q,p.node),this.reverts.push(function(a,b){return function(){b.parentNode.replaceChild(a.node,b)}}(p,q)),m.push(q)}var r=this.getPortionReplacementNode(e,a);return f.parentNode.insertBefore(h,f),f.parentNode.insertBefore(l,f),f.parentNode.removeChild(f),g.parentNode.insertBefore(r,g),g.parentNode.insertBefore(i,g),g.parentNode.removeChild(g),this.reverts.push(function(){h.parentNode.removeChild(h),l.parentNode.replaceChild(f,l),i.parentNode.removeChild(i),r.parentNode.replaceChild(g,r)}),r}},h}(),n="style, script",o=function(a,b,c,d,e){return new o.prototype.init(a,b,c,d,e)};o.prototype={constructor:o,context:"",finder:[],init:function(a,b,c,d,e){return this.context=a,this.filterOut(b),"string"==typeof c&&this[c]?this[c](d,e):this},filterOutSelector:n,filterOutFn:function(a){return l.matches(a,this.filterOutSelector)?!1:!0},filterOut:function(a){return"string"==typeof a?this.filterOutSelector=a:"function"==typeof a&&(this.filterOutFn=a),this},replace:function(a,b){var c=this;return this.finder.push(m(this.context,{find:a,replace:b,filterElements:function(a){return c.filterOutFn(a)}})),this},wrap:function(a,b){var c=this;return c.finder.push(m(c.context,{find:a,wrap:b,filterElements:function(a){return c.filterOutFn(a)}})),this},revert:function(a){var b=this.finder.length,a=Number(a)||0===a?Number(a):"all"===a?b:1;if("undefined"==typeof b||0===b)return this;a>this.finder.length&&(a=b);for(var c=parseInt(a);c>0;c--)this.finder.pop().revert();return this},jinzify:function(){var a=this.filterOutSelector;return this.filterOutSelector+=", jinze",this.replace(k.jinze.touwei,function(a,b){var c=b[0],d=l.create("",c),e=l.create("jinze","touwei");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}).replace(k.jinze.wei,function(a,b){var c=b[0],d=l.create("",c),e=l.create("jinze","wei");return e.appendChild(d),0===a.index?e:""}).replace(k.jinze.tou,function(a,b){var c=b[0],d=l.create("",c),e=l.create("jinze","tou");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}).replace(k.jinze.middle,function(a,b){var c=b[0],d=l.create("",c),e=l.create("jinze","middle");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}),this.filterOutSelector=a,this},groupify:function(){return this.wrap(k.char.biaodian.group[0],l.clone(l.create("char_group","biaodian cjk"))).wrap(k.char.biaodian.group[1],l.clone(l.create("char_group","biaodian cjk"))),this},charify:function(a){var a=l.extend({hanzi:"individual",liga:"liga",word:"group",latin:"group",ellinika:"group",kirillica:"group",kana:"none",eonmun:"none"},a||{});return"group"===a.hanzi&&this.wrap(k.char.hanzi.group,l.clone(l.create("char_group","hanzi cjk"))),"individual"===a.hanzi&&this.wrap(k.char.hanzi.individual,l.clone(l.create("char","hanzi cjk"))),("individual"===a.hanzi||"biaodian"===a.hanzi||"liga"===a.liga)&&("none"!==a.hanzi&&this.replace(k.char.biaodian.all,function(a,b){var c=b[0],d=l.create("",c),e="biaodian cjk "+(c.match(k.char.biaodian.open)?"open":c.match(k.char.biaodian.close)?"close end":c.match(k.char.biaodian.end)?"end":""),f=l.create("char",e),g=c.charCodeAt(0).toString(16);return f.setAttribute("unicode",g),f.appendChild(d),f}),this.replace("liga"===a.liga?k.char.biaodian.liga:new RegExp("("+j.biaodian.liga+")","g"),function(a,b){var c=b[0],d=l.create("",c),e=l.create("char","biaodian liga cjk"),f=c.charCodeAt(0).toString(16);return e.setAttribute("unicode",f),e.appendChild(d),e})),"none"!==a.word&&this.wrap(k.char.word,l.clone(l.create("word"))),("none"!==a.latin||"none"!==a.ellinika||"none"!==a.kirillica)&&this.wrap(k.char.punct.all,l.clone(l.create("char","punct"))),"individual"===a.latin&&this.wrap(k.char.alphabet.latin,l.clone(l.create("char","alphabet latin"))),"individual"===a.ellinika&&this.wrap(k.char.alphabet.ellinika,l.clone(l.create("char","alphabet ellinika greek"))),"individual"===a.kirillica&&this.wrap(k.char.alphabet.kirillica,l.clone(l.create("char","alphabet kirillica cyrillic"))),this}},o.prototype.init.prototype=o.prototype,h.find=o,void["replace","wrap","revert","jinzify","charify"].forEach(function(a){h.fn[a]=function(){return this.finder||(this.finder=h.find(this.context)),this.finder[a](arguments[0],arguments[1]),this}});var p={JS_RENDERED_CLASS:"hyu-js-rendered"};function q(a,b){var c=l.create("canvas"),d;return c.width="50",c.height="20",c.style.display="none",e.appendChild(c),d=c.getContext("2d"),d.textBaseline="top",d.font="15px "+b+", sans-serif",d.fillStyle="black",d.strokeStyle="black",d.fillText(a,0,0),[c,d]}function r(a,b,c){var a=a,b=b,c=c||"\u8fadQ",d;try{b=q(c,b||"sans-serif"),a=q(c,a);for(var e=1;20>=e;e++)for(var f=1;50>=f;f++){if("undefined"!==d&&a[1].getImageData(f,e,1,1).data[3]!==b[1].getImageData(f,e,1,1).data[3]){d=!0;break}if(d)break;50!==f||20!==e||d||(d=!1)}return l.remove(b[0]),l.remove(a[0]),b=null,a=null,d}catch(g){return!1}}p.detectFont=r,p.support=function(){var b="Webkit Moz ms".split(" "),f=l.create("_"),g={};function h(a){var c=a.charAt(0).toUpperCase()+a.slice(1),d=(a+" "+b.join(c+" ")+c).split(" "),e;return d.forEach(function(a){"string"==typeof f.style[a]&&(e=!0)}),e||!1}function i(a,b){var c=e||l.create("body"),f=l.create("div"),g=e?f:c,b="function"==typeof b?b:function(){},h,i,j;return h=[""].join(""),g.innerHTML+=h,c.appendChild(f),e||(c.style.background="",c.style.overflow="hidden",j=d.style.overflow,d.style.overflow="hidden",d.appendChild(c)),i=b(g,a),l.remove(g),e||(d.style.overflow=j),!!i}function j(b,d){var e;return a.getComputedStyle?e=c.defaultView.getComputedStyle(b,null).getPropertyValue(d):b.currentStyle&&(e=b.currentStyle[d]),e}return{ruby:function(){var a=l.create("ruby"),b=l.create("rt"),c=l.create("rp"),e;return a.appendChild(c),a.appendChild(b),d.appendChild(a),e="none"===j(c,"display")||"ruby"===j(a,"display")&&"ruby-text"===j(b,"display")?!0:!1,d.removeChild(a),a=null,b=null,c=null,e}(),fontface:function(){var a;return i('@font-face { font-family: font; src: url("http://"); }',function(b,c){var d=l.qsa("style",b)[0],e=d.sheet||d.styleSheet,f=e?e.cssRules&&e.cssRules[0]?e.cssRules[0].cssText:e.cssText||"":"";a=/src/i.test(f)&&0===f.indexOf(c.split(" ")[0])}),a}(),unicoderange:function(){var a;return i('@font-face{font-family:test-for-unicode-range;src:local(Arial),local("Droid Sans")}@font-face{font-family:test-for-unicode-range;src:local("Times New Roman"),local(Times),local("Droid Serif");unicode-range:U+270C}',function(){a=!p.detectFont("test-for-unicode-range",'Arial, "Droid Sans"',"Q")}),a}(),columnwidth:h("columnWidth"),textemphasis:h("textEmphasis"),writingmode:h("writingMode")}}(),p.initCond=function(a){var a=a||d,b="",c;a.classList.add(p.JS_RENDERED_CLASS);for(var e in p.support)c=(p.support[e]?"":"no-")+e,a.classList.add(c),b+=c+" ";return b};function s(a,b,c){var d=l.create("ru"),b=l.clone(b),c=c||{};return Array.isArray(a)?d.innerHTML=a.map(function(a){return a.outerHTML}).join(""):d.appendChild(l.clone(a)),d.appendChild(b),c.annotation=b.textContent,l.setAttr(d,c),d}function t(a,b){var a=l.clone(a),c=l.create("ru"),d=l.create("zhuyin"),e=l.create("yin"),f=l.create("diao"),g=b.textContent,h,i,j,m;return h=g.replace(k.zhuyin.diao,""),m=h?h.length:0,i=g.replace(h,"").replace(/[\u02C5]/g,"\u02c7").replace(/[\u030D]/g,"\u0358"),j=g.replace(k.zhuyin.form,function(a,b,c){return[a?"S":null,b?"J":null,c?"Y":null].join("")}),f.innerHTML=i,e.innerHTML=h,d.appendChild(e),d.appendChild(f),c.appendChild(a),c.appendChild(d),l.setAttr(c,{zhuyin:"",diao:i,length:m,form:j}),c}l.extend(p,{renderElem:function(a){this.renderRuby(a),this.renderDecoLine(a),this.renderDecoLine(a,"s, del"),this.renderEm(a)},renderDecoLine:function(a,b){var b=b||"u, ins",c=l.qsa(b,a),d=new RegExp("^("+b.replace(/\,\s?/g,"|")+")$","ig");c.forEach(function(a){var b;do if(b=(b||a).nextSibling,!b)return;while(l.isIgnorable(b));b.nodeName.match(d)&&b.classList.add("adjacent")})},renderEm:function(a,b){var c=b?"qsa":"tag",b=b||"em",d=l[c](b,a);d.forEach(function(a){var b=o(a);p.support.textemphasis||b.jinzify(),b.groupify().charify(p.support.textemphasis?{hanzi:"biaodian",word:"punctuation"}:{latin:"individual",ellinika:"individual",kirillica:"individual"})})},renderRuby:function(a,b){var c=b?"qsa":"tag",b=b||"ruby",d=l[c](b,a),e=l.qsa(b+", rtc",a);e.forEach(function(a){var b=a.classList;b.contains("pinyin")?b.add("romanization"):b.contains("mps")&&b.add("zhuyin"),b.contains("romanization")&&b.add("annotation")}),d.forEach(function(a){var c=a.classList,d=!p.support.ruby||c.contains("zhuyin")||c.contains("complex")||c.contains("rightangle"),e,f,g,h,i,j;d&&(e=l.create("!"),e.appendChild(l.clone(a)),f=l.qsa(b,e)[0],(!p.support.ruby||c.contains("zhuyin"))&&l.tag("rt",f).forEach(function(a){var b=l.create("!"),d=[],e;do{if(e=(e||a).previousSibling,!e||e.nodeName.match(/(r[ubt])/i))break;b.insertBefore(l.clone(e),b.firstChild),d.push(e)}while(!e.nodeName.match(/(r[ubt])/i));h=c.contains("zhuyin")?t(b,a):s(b,a);try{a.parentNode.replaceChild(h,a),d.forEach(function(a){l.remove(a)})}catch(f){}}),(c.contains("complex")||c.contains("rightangle"))&&(g=h=l.tag("rb",f),i=g.length,!function(b){b&&(h=l.tag("rt",b).map(function(a,b){if(g[b]){var c=t(g[b],a);try{g[b].parentNode.replaceChild(c,g[b])}catch(d){}return c}}),l.remove(b),a.setAttribute("rightangle",""))}(f.querySelector("rtc.zhuyin")),l.qsa("rtc:not(.zhuyin)",f).forEach(function(b,d){var e;e=l.tag("rt",b).map(function(b,e){var f=Number(b.getAttribute("rbspan")||1),g=0,j=[],k,m;f>i&&(f=i);do{try{k=h.shift(),j.push(k)}catch(n){}g+=Number(k.getAttribute("span")||1)}while(f>g);if(g>f){if(j.length>1)return void console.error("An impossible `rbspan` value detected.",a);j=l.tag("rb",j[0]),h=j.slice(f).concat(h),j=j.slice(0,f),g=f}m=s(j,b,{"class":c,span:g,order:d});try{j[0].parentNode.replaceChild(m,j.shift()),j.forEach(function(a){l.remove(a)})}catch(n){}return m}),h=e,l.remove(b)})),j=l.create("hruby"),j.innerHTML=e.firstChild.innerHTML,l.setAttr(j,a.attributes),j.normalize(),a.parentNode.replaceChild(j,a))})}}),h.normalize=p,h.support=p.support,h.detectFont=p.detectFont,h.fn.initCond=function(){return this.condition.classList.add("han-js-rendered"),h.normalize.initCond(this.condition),this},void["Elem","DecoLine","Em","Ruby"].forEach(function(a){var b="render"+a;h.fn[b]=function(a){return h.normalize[b](this.context,a),this}}),l.extend(h.support,{heiti:!0,songti:h.detectFont('"Han Songti"'),"songti-gb":h.detectFont('"Han Songti GB"'),kaiti:h.detectFont('"Han Kaiti"'),fangsong:h.detectFont('"Han Fangsong"')});var u="* > hws:first-child, * > wbr:first-child + hws, wbr:first-child + wbr + hws",v=function(){var a=l.create("div");return a.appendChild(l.create("","0-")),a.appendChild(l.create("","2")),a.normalize(),2!==a.firstChild.length}(),w;w=l.create("hws"),w.innerHTML=" ",l.extend(h,{isNodeNormalizeNormal:v,renderHWS:function(a,b){var a=a||c,d=b?"strict":"base",e=h.find(a);return e.filterOutSelector+=b?", textarea, code, kbd, samp, pre":", textarea",e.replace(h.TYPESET.hws[d][0],"$1$2").replace(h.TYPESET.hws[d][1],"$1$2").replace(/(['"]+)(.+?)\1/gi,"$1$2$1").replace("",function(){return l.clone(w)}),l.qsa(u,a).forEach(function(a){var b=a.parentNode,c=b.firstChild;while(l.isIgnorable(c))if(c=c.nextSibling,!c)return;while("HWS"===c.nodeName)if(l.remove(c,b),c=b.parentNode.insertBefore(l.clone(w),b),b=b.parentNode,v&&b.normalize(),c!==b.firstChild)break}),v&&a.normalize(),e}}),l.extend(h.fn,{HWS:null,renderHWS:function(a){return h.renderHWS(this.context,a),this.HWS=l.tag("hws",this.context),this},revertHWS:function(){return this.HWS.forEach(function(a){l.remove(a)}),this}}),h.renderJiya=function(a){var a=a||c,b=[h.find(a)];return b[0].filterOutSelector+=", textarea, code, kbd, samp, pre, jinze, em",b[0].groupify(),l.qsa("char_group.biaodian",a).forEach(function(a){b.push(h(a).charify({hanzi:"biaodian",liga:"liga",word:"none",latin:"none",ellinika:"none",kirillica:"none"}))}),b},l.extend(h.fn,{jiya:null,renderJiya:function(){return this.jiya=h.renderJiya(this.context),this},revertJiya:function(){try{this.jiya.revert("all")}catch(a){}return this}});var x;x=l.create("char","biaodian cjk middle"),x.setAttribute("unicode","b7"),h.correctBasicBD=function(a,b){var a=a||c,d;(!h.support.unicoderange||b)&&(d=h.find(a),d.filteredElemList+=" em",d.wrap(/\u00B7/g,l.clone(x)).charify({liga:"liga",hanzi:"none",word:"none",latin:"none",ellinika:"none",kirillica:"none"}))},l.extend(h.fn,{basicBD:null,correctBasicBD:function(a){return this.basicBD=h.correctBasicBD(this.context,a),this},revertBasicBD:function(){try{this.basicBD.revert("all")}catch(a){}return this}});var y="ru[annotation]",z=" textarea code kbd samp pre",A=function(){var a=e||l.create("body"),b=l.create("div"),c=l.create("span"),f=e?b:a,g,h,i;return e?e.appendChild(f):(a.style.background="",a.style.overflow="hidden",h=d.style.overflow,d.style.overflow="hidden",d.appendChild(a)),c.innerHTML="i̍",c.style.fontFamily="sans-serif",c.style.display="inline-block",g=l.clone(c),g.style.fontFamily='"Romanization Sans"',f.appendChild(c),f.appendChild(g),i=c.clientWidth!==g.clientWidth,l.remove(f),e||(d.style.overflow=h),i}(),B=h.TYPESET["display-as"]["comb-liga-pua"],C=h.TYPESET["inaccurate-char"],D=l.create("char","comb-liga"),E=l.create("inner");return l.extend(h,{isCombLigaNormal:A,substCombLigaWithPUA:function(a){var a=a||c,b=h.find(a);if(!A)return b.filteredElemList+=z,B.forEach(function(a){b.replace(new RegExp(a[0],"ig"),function(b,c){var d=l.clone(D),e=l.clone(E);return e.innerHTML=c[0],d.appendChild(e),d.setAttribute("display-as",a[1]),0===b.index?d:""})}),l.qsa(y,a).forEach(function(a){var b=a.getAttribute("annotation");B.slice(0,5).forEach(function(a){b=b.replace(new RegExp(a[0],"ig"),a[1])}),a.setAttribute("annotation",b)}),b},substInaccurateChar:function(a){var a=a||c,b=h.find(a);b.filteredElemList+=z,C.forEach(function(a){b.replace(new RegExp(a[0],"ig"),a[1])})}}),l.extend(h.fn,{"comb-liga":null,"inaccurate-char":null,substCombLigaWithPUA:function(){return this["comb-liga"]=h.substCombLigaWithPUA(this.context),this},revertCombLigaWithPUA:function(){try{this["comb-liga"].revert("all")}catch(a){}return this},substInaccurateChar:function(){return this["inaccurate-char"]=h.substInaccurateChar(this.context),this},revertInaccurateChar:function(){try{this["inaccurate-char"].revert("all")}catch(a){}return this}}),a.addEventListener("DOMContentLoaded",function(){var a;d.classList.contains("han-init")?h.init():(a=c.querySelector(".han-init-context"))&&(h.init=h(a).render())}),"function"==typeof define&&define.amd?define(function(){return h}):("undefined"==typeof b||b===!1)&&(a.Han=h),h}); \ No newline at end of file +/*! 漢字標準格式 v3.1.0 | MIT License | css.hanzi.co */ +/*! Han.css: the CSS typography framework optimised for Hanzi */ + +void function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=b(a,!0):b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";function c(a,b){var c,d=p.create("canvas");return d.width="50",d.height="20",d.style.display="none",i.appendChild(d),c=d.getContext("2d"),c.textBaseline="top",c.font="15px "+b+", sans-serif",c.fillStyle="black",c.strokeStyle="black",c.fillText(a,0,0),[d,c]}function d(a,b,d){var e,a=a,b=b,d=d||"\u8fadQ";try{b=c(d,b||"sans-serif"),a=c(d,a);for(var f=1;20>=f;f++)for(var g=1;50>=g;g++){if("undefined"!==e&&a[1].getImageData(g,f,1,1).data[3]!==b[1].getImageData(g,f,1,1).data[3]){e=!0;break}if(e)break;50!==g||20!==f||e||(e=!1)}return p.remove(b[0]),p.remove(a[0]),b=null,a=null,e}catch(h){return!1}}function e(a,b,c){var d=p.create("ru"),b=p.clone(b),c=c||{};return Array.isArray(a)?d.innerHTML=a.map(function(a){return"undefined"==typeof a?"":a.outerHTML}).join(""):d.appendChild(p.clone(a)),d.appendChild(b),c.annotation=b.textContent,p.setAttr(d,c),d}function f(a,b){var c,d,e,f,a=p.clone(a),g=p.create("ru"),h=p.create("zhuyin"),i=p.create("yin"),j=p.create("diao"),k=b.textContent;return c=k.replace(o.zhuyin.diao,""),f=c?c.length:0,d=k.replace(c,"").replace(/[\u02C5]/g,"\u02c7").replace(/[\u030D]/g,"\u0358"),e=k.replace(o.zhuyin.form,function(a,b,c){return[a?"S":null,b?"J":null,c?"Y":null].join("")}),j.innerHTML=d,i.innerHTML=c,h.appendChild(i),h.appendChild(j),g.appendChild(a),g.appendChild(h),p.setAttr(g,{zhuyin:"",diao:d,length:f,form:e}),g}var g=a.document,h=g.documentElement,i=g.body,j="3.1.0",k=["initCond","renderElem","renderJiya","renderHWS","correctBasicBD","substCombLigaWithPUA"],l=function(a,b){return new l.fn.init(a,b)},m=function(){return arguments[0]&&(this.context=arguments[0]),arguments[1]&&(this.condition=arguments[1]),this};l.version=j,l.fn=l.prototype={version:j,constructor:l,context:i,condition:h,routine:k,init:m,setRoutine:function(a){return Array.isArray(a)&&(this.routine=a),this},render:function(a){var b=this,a=Array.isArray(a)?a:this.routine;return a.forEach(function(a){try{"string"==typeof a?b[a]():Array.isArray(a)&&b[a.shift()].apply(b,a)}catch(c){}}),this}},l.fn.init.prototype=l.fn,l.init=function(){return l.init=l().render()};var n={punct:{base:"[\u2026,.;:!?\u203d_]",sing:"[\u2010-\u2014\u2026]",middle:"[\\/~\\-&\u2010-\u2014_]",open:"['\"\u2018\u201c\\(\\[\xa1\xbf\u2e18\xab\u2039\u201a\u201c\u201e]",close:"['\"\u201d\u2019\\)\\]\xbb\u203a\u201b\u201d\u201f]",end:"['\"\u201d\u2019\\)\\]\xbb\u203a\u201b\u201d\u201f\u203c\u203d\u2047-\u2049,.;:!?]"},biaodian:{base:"[\ufe30\uff0e\u3001\uff0c\u3002\uff1a\uff1b\uff1f\uff01\u30fc]",liga:"[\u2014\u2026\u22ef]",middle:"[\xb7\uff3c\uff0f\uff0d\u30a0\uff06\u30fb\uff3f]",open:"[\u300c\u300e\u300a\u3008\uff08\u3014\uff3b\uff5b\u3010\u3016]",close:"[\u300d\u300f\u300b\u3009\uff09\u3015\uff3d\uff5d\u3011\u3017]",end:"[\u300d\u300f\u300b\u3009\uff09\u3015\uff3d\uff5d\u3011\u3017\ufe30\uff0e\u3001\uff0c\u3002\uff1a\uff1b\uff1f\uff01\u30fc]"},hanzi:{base:"[\u4e00-\u9fff\u3400-\u4db5\u31c0-\u31e3\u3007\ufa0e\ufa0f\ufa11\ufa13\ufa14\ufa1f\ufa21\ufa23\ufa24\ufa27-\ufa29]|[\ud800-\udbff][\udc00-\udfff]",desc:"[\u2ff0-\u2ffa]",radical:"[\u2f00-\u2fd5\u2e80-\u2ef3]"},latin:{base:"[A-Za-z0-9\xc0-\xff\u0100-\u017f\u0180-\u024f\u2c60-\u2c7f\ua720-\ua7ff\u1e00-\u1eff]",combine:"[\u0300-\u0341\u1dc0-\u1dff]"},ellinika:{base:"[0-9\u0370-\u03ff\u1f00-\u1fff]",combine:"[\u0300-\u0345\u1dc0-\u1dff]"},kirillica:{base:"[0-9\u0400-\u0482\u048a-\u04ff\u0500-\u052f\ua640-\ua66e\ua67e-\ua697]",combine:"[\u0483-\u0489\u2de0-\u2dff\ua66f-\ua67d\ua69f]"},kana:{base:"[\u30a2\u30a4\u30a6\u30a8\u30aa-\u30fa\u3042\u3044\u3046\u3048\u304a-\u3094\u309f\u30ff]|\ud82c[\udc00-\udc01]",small:"[\u3041\u3043\u3045\u3047\u3049\u30a1\u30a3\u30a5\u30a7\u30a9\u3063\u3083\u3085\u3087\u308e\u3095\u3096\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u31f0-\u31ff]",combine:"[\u3099-\u309c]",half:"[\uff66-\uff9f]",mark:"[\u30a0\u309d\u309e\u30fb-\u30fe]"},eonmun:{base:"[\uac00-\ud7a3]",letter:"[\u1100-\u11ff\u314f-\u3163\u3131-\u318e\ua960-\ua97c\ud7b0-\ud7fb]",half:"[\uffa1-\uffdc]"},zhuyin:{base:"[\u3105-\u312d\u31a0-\u31ba]",initial:"[\u3105-\u3119\u312a-\u312c\u31a0-\u31a3]",medial:"[\u3127-\u3129]","final":"[\u311a-\u3129\u312d\u31a4-\u31b3\u31b8-\u31ba]",tone:"[\u02d9\u02ca\u02c5\u02c7\u02cb\u02ea\u02eb]",ruyun:"[\u31b4-\u31b7][\u0358\u030d]?"}},o=function(){var a="[\\x20\\t\\r\\n\\f]",b=n.punct.open,c=(n.punct.close,n.punct.end),d=n.punct.middle,e=n.punct.sing,f=b+"|"+c+"|"+d,g=n.biaodian.open,h=n.biaodian.close,i=n.biaodian.end,j=n.biaodian.middle,k=n.biaodian.liga+"{2}",l=g+"|"+i+"|"+j,m=n.kana.base+n.kana.combine+"?",o=n.kana.small+n.kana.combine+"?",p=(n.kana.half,n.eonmun.base+"|"+n.eonmun.letter),q=n.eonmun.half,r=n.hanzi.base+"|"+n.hanzi.desc+"|"+n.hanzi.radical+"|"+m,s=n.ellinika.combine,t=n.latin.base+s+"*",u=n.ellinika.base+s+"*",v=n.kirillica.combine,w=n.kirillica.base+v+"*",x=t+"|"+u+"|"+w,y="['\u2019]",z=r+"|("+x+"|"+y+")+",A=n.zhuyin.initial,B=n.zhuyin.medial,C=n.zhuyin["final"],D=n.zhuyin.tone+"|"+n.zhuyin.ruyun;return{"char":{punct:{all:new RegExp("("+f+")","g"),open:new RegExp("("+b+")","g"),end:new RegExp("("+c+")","g"),sing:new RegExp("("+e+")","g")},biaodian:{all:new RegExp("("+l+")","g"),open:new RegExp("("+g+")","g"),close:new RegExp("("+h+")","g"),end:new RegExp("("+i+")","g"),liga:new RegExp("("+k+")","g"),group:[new RegExp("("+g+"|"+j+"|"+i+"){2,}","g"),new RegExp("("+k+g+")","g")]},hanzi:{individual:new RegExp("("+r+")","g"),group:new RegExp("("+r+")+","g")},word:new RegExp("("+t+"|"+u+"|"+w+"|"+f+")+","ig"),alphabet:{latin:new RegExp("("+t+")","ig"),ellinika:new RegExp("("+u+")","ig"),kirillica:new RegExp("("+w+")","ig"),kana:new RegExp("("+m+")","g"),smallkana:new RegExp("("+o+")","g"),eonmun:new RegExp("("+p+")","g"),halfeonmun:new RegExp("("+q+")","g")}},jinze:{touwei:new RegExp("("+g+"+)("+z+")("+i+"+)","ig"),tou:new RegExp("("+g+"+)("+z+")","ig"),wei:new RegExp("("+z+")("+i+"+)","ig"),middle:new RegExp("("+z+")("+j+")("+z+")","ig")},zhuyin:{form:new RegExp("^\u02d9?("+A+")?("+B+")?("+C+")?("+D+")?$"),diao:new RegExp("("+D+")","g")},hws:{base:[new RegExp("("+r+")("+x+"|"+b+")","ig"),new RegExp("("+x+"|"+c+")("+r+")","ig")],strict:[new RegExp("("+r+")"+a+"?("+x+"|"+b+")","ig"),new RegExp("("+x+"|"+c+")"+a+"?("+r+")","ig")]},"display-as":{"ja-font-for-hant":["\u67e5 \u67fb","\u555f \u5553","\u9109 \u9115","\u503c \u5024","\u6c61 \u6c5a"],"comb-liga-pua":[["a[\u030d\u0358]","\udb80\udc61"],["e[\u030d\u0358]","\udb80\udc65"],["i[\u030d\u0358]","\udb80\udc69"],["o[\u030d\u0358]","\udb80\udc6f"],["u[\u030d\u0358]","\udb80\udc75"],["\u31b4[\u030d\u0358]","\udb8c\uddb4"],["\u31b5[\u030d\u0358]","\udb8c\uddb5"],["\u31b6[\u030d\u0358]","\udb8c\uddb6"],["\u31b7[\u030d\u0358]","\udb8c\uddb7"]]},"inaccurate-char":[["[\u2022\u2027]","\xb7"],["\u22ef\u22ef","\u2026\u2026"],["\u2500\u2500","\u2014\u2014"],["\u2035","\u2018"],["\u2032","\u2019"],["\u2036","\u201c"],["\u2033","\u201d"]]}}();l.UNICODE=n,l.TYPESET=o,l.UNICODE.cjk=l.UNICODE.hanzi,l.UNICODE.greek=l.UNICODE.ellinika,l.UNICODE.cyrillic=l.UNICODE.kirillica,l.UNICODE.hangul=l.UNICODE.eonmun,l.TYPESET["char"].cjk=l.TYPESET["char"].hanzi,l.TYPESET["char"].alphabet.greek=l.TYPESET["char"].alphabet.ellinika,l.TYPESET["char"].alphabet.cyrillic=l.TYPESET["char"].alphabet.kirillica,l.TYPESET["char"].alphabet.hangul=l.TYPESET["char"].alphabet.eonmun;var p={id:function(a,b){return(b||g).getElementById(a)},tag:function(a,b){return this.makeArray((b||g).getElementsByTagName(a))},qsa:function(a,b){return this.makeArray((b||g).querySelectorAll(a))},create:function(a,b){var a="!"===a?g.createDocumentFragment():""===a?g.createTextNode(b||""):g.createElement(a);try{b&&(a.className=b)}catch(c){}return a},clone:function(a,b){return a.cloneNode(b||!0)},remove:function(a,b){return(b||a.parentNode).removeChild(a)},setAttr:function(a,b){if("object"==typeof b){var c=b.length;if("object"==typeof b[0]&&"name"in b[0])for(var d=0;c>d;d++)void 0!==b[d].value&&a.setAttribute(b[d].name,b[d].value);else for(var e in b)b.hasOwnProperty(e)&&void 0!==b[e]&&a.setAttribute(e,b[e]);return a}},isIgnorable:function(a){return"WBR"===a.nodeName||a.nodeType===Node.COMMENT_NODE},makeArray:function(a){return Array.prototype.slice.call(a)},extend:function(a,b){var c="object"==typeof a||"function"==typeof a||"object"==typeof b;if(c){for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);return a}}},q=function(b){function c(a,b,c){var d=Element.prototype,e=d.matches||d.mozMatchesSelector||d.msMatchesSelector||d.webkitMatchesSelector;return a instanceof Element?e.call(a,b):c&&/^[39]$/.test(a.nodeType)?!0:!1}var d="0.1.2",e="style, script, head title",f=a||{},g=f.document||void 0;if("undefined"==typeof g)throw new Error("Fibre requires a DOM-supported environment.");var h=function(a){return new h.fn.init(a)};return h.version=d,h.matches=c,h.fn=h.prototype={constructor:h,version:d,context:void 0,contextSelector:null,finder:[],init:function(a){if(!a)throw new Error("A context is required for Fibre to initialise.");return a instanceof Node?this.context=a:"string"==typeof a&&(this.contextSelector=a,this.context=g.querySelector(a)),this},filterElemFn:function(a){return c(a,this.filterSelector,!0)&&!c(a,this.filterOutSelector)},filterSelector:"*",filter:function(a){switch(typeof a){case"string":this.filterSelector=a;break;case"function":this.filterElemFn=a;break;default:return this}return this},filterOutSelector:e,filterOut:function(a,b){switch(typeof a){case"string":"undefined"!=typeof b&&b===!0?this.filterOutSelector+=", "+a:this.filterOutSelector=a;break;default:return this}return this},replace:function(a,c,d){var e=this,d=d||"retain";return e.finder.push(b(e.context,{find:a,replace:c,filterElements:function(a){return e.filterElemFn(a)},portionMode:d})),e},wrap:function(a,c,d){var e=this,d=d||"retain";return e.finder.push(b(e.context,{find:a,wrap:c,filterElements:function(a){return e.filterElemFn(a)},portionMode:d})),e},revert:function(a){var b=this.finder.length,a=Number(a)||(0===a?Number(0):"all"===a?b:1);if("undefined"==typeof b||0===b)return this;a>b&&(a=b);for(var c=a;c>0;c--)this.finder.pop().revert();return this}},h.fn.init.prototype=h.fn,h}(function(){function a(a){return String(a).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function b(){return c.apply(null,arguments)||d.apply(null,arguments)}function c(a,c,e,f,g){if(c&&!c.nodeType&&arguments.length<=2)return!1;var h="function"==typeof e;h&&(e=function(a){return function(b,c){return a(b.text,c.startIndex)}}(e));var i=d(c,{find:a,wrap:h?null:e,replace:h?e:"$"+(f||"&"),prepMatch:function(a,b){if(!a[0])throw"findAndReplaceDOMText cannot handle zero-length matches";if(f>0){var c=a[f];a.index+=a[0].indexOf(c),a[0]=c}return a.endIndex=a.index+a[0].length,a.startIndex=a.index,a.index=b,a},filterElements:g});return b.revert=function(){return i.revert()},!0}function d(a,b){return new e(a,b)}function e(a,b){b.portionMode=b.portionMode||f,this.node=a,this.options=b,this.prepMatch=b.prepMatch||this.prepMatch,this.reverts=[],this.matches=this.search(),this.matches.length&&this.processMatches()}{var f="retain",h="first",i=g;({}).toString}return b.Finder=e,e.prototype={search:function(){var b,c=0,d=this.options.find,e=this.getAggregateText(),f=[];if(d="string"==typeof d?RegExp(a(d),"g"):d,d.global)for(;b=d.exec(e);)f.push(this.prepMatch(b,c++));else(b=e.match(d))&&f.push(this.prepMatch(b,0));return f},prepMatch:function(a,b){if(!a[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return a.endIndex=a.index+a[0].length,a.startIndex=a.index,a.index=b,a},getAggregateText:function(){function a(c){if(3===c.nodeType)return c.data;if(b&&!b(c))return"";var d="";if(c=c.firstChild)do d+=a(c);while(c=c.nextSibling);return d}var b=this.options.filterElements;return a(this.node)},processMatches:function(){var a,b,c,d=this.matches,e=this.node,f=this.options.filterElements,g=[],h=e,i=d.shift(),j=0,k=0,l=0,m=[e];a:for(;;){if(3===h.nodeType&&(!b&&h.length+j>=i.endIndex?b={node:h,index:l++,text:h.data.substring(i.startIndex-j,i.endIndex-j),indexInMatch:j-i.startIndex,indexInNode:i.startIndex-j,endIndexInNode:i.endIndex-j,isEnd:!0}:a&&g.push({node:h,index:l++,text:h.data,indexInMatch:j-i.startIndex,indexInNode:0}),!a&&h.length+j>i.startIndex&&(a={node:h,index:l++,indexInMatch:0,indexInNode:i.startIndex-j,endIndexInNode:i.endIndex-j,text:h.data.substring(i.startIndex-j,i.endIndex-j)}),j+=h.data.length),c=1===h.nodeType&&f&&!f(h),a&&b){if(h=this.replaceMatch(i,a,g,b),j-=b.node.data.length-b.endIndexInNode,a=null,b=null,g=[],i=d.shift(),l=0,k++,!i)break}else if(!c&&(h.firstChild||h.nextSibling)){h.firstChild?(m.push(h),h=h.firstChild):h=h.nextSibling;continue}for(;;){if(h.nextSibling){h=h.nextSibling;break}if(h=m.pop(),h===e)break a}}},revert:function(){for(var a=this.reverts.length;a--;)this.reverts[a]();this.reverts=[]},prepareReplacementString:function(a,b,c){var d=this.options.portionMode;return d===h&&b.indexInMatch>0?"":(a=a.replace(/\$(\d+|&|`|')/g,function(a,b){var d;switch(b){case"&":d=c[0];break;case"`":d=c.input.substring(0,c.startIndex);break;case"'":d=c.input.substring(c.endIndex);break;default:d=c[+b]}return d}),d===h?a:b.isEnd?a.substring(b.indexInMatch):a.substring(b.indexInMatch,b.indexInMatch+b.text.length))},getPortionReplacementNode:function(a,b,c){var d=this.options.replace||"$&",e=this.options.wrap;if(e&&e.nodeType){var f=i.createElement("div");f.innerHTML=e.outerHTML||(new XMLSerializer).serializeToString(e),e=f.firstChild}if("function"==typeof d)return d=d(a,b,c),d&&d.nodeType?d:i.createTextNode(String(d));var g="string"==typeof e?i.createElement(e):e;return d=i.createTextNode(this.prepareReplacementString(d,a,b,c)),d.data&&g?(g.appendChild(d),g):d},replaceMatch:function(a,b,c,d){var e,f,g=b.node,h=d.node;if(g===h){var j=g;b.indexInNode>0&&(e=i.createTextNode(j.data.substring(0,b.indexInNode)),j.parentNode.insertBefore(e,j));var k=this.getPortionReplacementNode(d,a);return j.parentNode.insertBefore(k,j),d.endIndexInNoden;++n){var p=c[n],q=this.getPortionReplacementNode(p,a);p.node.parentNode.replaceChild(q,p.node),this.reverts.push(function(a,b){return function(){b.parentNode.replaceChild(a.node,b)}}(p,q)),m.push(q)}var r=this.getPortionReplacementNode(d,a);return g.parentNode.insertBefore(e,g),g.parentNode.insertBefore(l,g),g.parentNode.removeChild(g),h.parentNode.insertBefore(r,h),h.parentNode.insertBefore(f,h),h.parentNode.removeChild(h),this.reverts.push(function(){e.parentNode.removeChild(e),l.parentNode.replaceChild(g,l),f.parentNode.removeChild(f),r.parentNode.replaceChild(h,r)}),r}},b}());p.extend(q.fn,{jinzify:function(){var a=this.filterOutSelector;return this.filterOutSelector+=", jinze",this.replace(o.jinze.touwei,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","touwei");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}).replace(o.jinze.wei,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","wei");return e.appendChild(d),0===a.index?e:""}).replace(o.jinze.tou,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","tou");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}).replace(o.jinze.middle,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","middle");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}),this.filterOutSelector=a,this},groupify:function(){return this.wrap(o["char"].biaodian.group[0],p.clone(p.create("char_group","biaodian cjk"))).wrap(o["char"].biaodian.group[1],p.clone(p.create("char_group","biaodian cjk"))),this},charify:function(a){var a=p.extend({hanzi:"individual",liga:"liga",word:"group",latin:"group",ellinika:"group",kirillica:"group",kana:"none",eonmun:"none"},a||{});return"group"===a.hanzi&&this.wrap(o["char"].hanzi.group,p.clone(p.create("char_group","hanzi cjk"))),"individual"===a.hanzi&&this.wrap(o["char"].hanzi.individual,p.clone(p.create("char","hanzi cjk"))),("individual"===a.hanzi||"biaodian"===a.hanzi||"liga"===a.liga)&&("none"!==a.hanzi&&this.replace(o["char"].biaodian.all,function(a,b){var c=b[0],d=p.create("",c),e="biaodian cjk "+(c.match(o["char"].biaodian.open)?"open":c.match(o["char"].biaodian.close)?"close end":c.match(o["char"].biaodian.end)?"end":""),f=p.create("char",e),g=c.charCodeAt(0).toString(16);return f.setAttribute("unicode",g),f.appendChild(d),f}),this.replace("liga"===a.liga?o["char"].biaodian.liga:new RegExp("("+n.biaodian.liga+")","g"),function(a,b){var c=b[0],d=p.create("",c),e=p.create("char","biaodian liga cjk"),f=c.charCodeAt(0).toString(16);return e.setAttribute("unicode",f),e.appendChild(d),e})),"none"!==a.word&&this.wrap(o["char"].word,p.clone(p.create("word"))),("none"!==a.latin||"none"!==a.ellinika||"none"!==a.kirillica)&&this.wrap(o["char"].punct.all,p.clone(p.create("char","punct"))),"individual"===a.latin&&this.wrap(o["char"].alphabet.latin,p.clone(p.create("char","alphabet latin"))),"individual"===a.ellinika&&this.wrap(o["char"].alphabet.ellinika,p.clone(p.create("char","alphabet ellinika greek"))),"individual"===a.kirillica&&this.wrap(o["char"].alphabet.kirillica,p.clone(p.create("char","alphabet kirillica cyrillic"))),this}}),l.find=q,void["replace","wrap","revert","jinzify","charify"].forEach(function(a){l.fn[a]=function(){return this.finder||(this.finder=l.find(this.context)),this.finder[a](arguments[0],arguments[1]),this}});var r={};r.detectFont=d,r.support=function(){function b(a){var b,c=a.charAt(0).toUpperCase()+a.slice(1),d=(a+" "+e.join(c+" ")+c).split(" ");return d.forEach(function(a){"string"==typeof f.style[a]&&(b=!0)}),b||!1}function c(a,b){var c,d,e,f=i||p.create("body"),g=p.create("div"),j=i?g:f,b="function"==typeof b?b:function(){};return c=[""].join(""),j.innerHTML+=c,f.appendChild(g),i||(f.style.background="",f.style.overflow="hidden",e=h.style.overflow,h.style.overflow="hidden",h.appendChild(f)),d=b(j,a),p.remove(j),i||(h.style.overflow=e),!!d}function d(b,c){var d;return a.getComputedStyle?d=g.defaultView.getComputedStyle(b,null).getPropertyValue(c):b.currentStyle&&(d=b.currentStyle[c]),d}var e="Webkit Moz ms".split(" "),f=p.create("_");return{ruby:function(){var a,b=p.create("ruby"),c=p.create("rt"),e=p.create("rp");return b.appendChild(e),b.appendChild(c),h.appendChild(b),a="none"===d(e,"display")||"ruby"===d(b,"display")&&"ruby-text"===d(c,"display")?!0:!1,h.removeChild(b),b=null,c=null,e=null,a}(),fontface:function(){var a;return c('@font-face { font-family: font; src: url("//"); }',function(b,c){var d=p.qsa("style",b)[0],e=d.sheet||d.styleSheet,f=e?e.cssRules&&e.cssRules[0]?e.cssRules[0].cssText:e.cssText||"":"";a=/src/i.test(f)&&0===f.indexOf(c.split(" ")[0])}),a}(),unicoderange:function(){var a;return c('@font-face{font-family:test-for-unicode-range;src:local(Arial),local("Droid Sans")}@font-face{font-family:test-for-unicode-range;src:local("Times New Roman"),local(Times),local("Droid Serif");unicode-range:U+270C}',function(){a=!r.detectFont("test-for-unicode-range",'Arial, "Droid Sans"',"Q")}),a}(),columnwidth:b("columnWidth"),textemphasis:b("textEmphasis"),writingmode:b("writingMode")}}(),r.initCond=function(a){var b,a=a||h,c="";for(var d in r.support)b=(r.support[d]?"":"no-")+d,a.classList.add(b),c+=b+" ";return c},p.extend(r,{renderElem:function(a){this.renderRuby(a),this.renderDecoLine(a),this.renderDecoLine(a,"s, del"),this.renderEm(a)},renderDecoLine:function(a,b){var b=b||"u, ins",c=p.qsa(b,a),d=new RegExp("^("+b.replace(/\,\s?/g,"|")+")$","ig");c.forEach(function(a){var b;do if(b=(b||a).nextSibling,!b)return;while(p.isIgnorable(b));b.nodeName.match(d)&&b.classList.add("adjacent")})},renderEm:function(a,b){var c=b?"qsa":"tag",b=b||"em",d=p[c](b,a);d.forEach(function(a){var b=q(a);r.support.textemphasis||b.jinzify(),b.groupify().charify(r.support.textemphasis?{hanzi:"biaodian",word:"punctuation"}:{latin:"individual",ellinika:"individual",kirillica:"individual"})})},renderRuby:function(a,b){var c=b?"qsa":"tag",b=b||"ruby",d=p[c](b,a),g=p.qsa(b+", rtc",a);g.forEach(function(a){var b=a.classList;b.contains("pinyin")?b.add("romanization"):b.contains("mps")&&b.add("zhuyin"),b.contains("romanization")&&b.add("annotation")}),d.forEach(function(a){var c,d,g,h,i,j,k=a.classList,l=!r.support.ruby||k.contains("zhuyin")||k.contains("complex")||k.contains("rightangle");l&&(c=p.create("!"),c.appendChild(p.clone(a)),d=p.qsa(b,c)[0],(!r.support.ruby||k.contains("zhuyin"))&&p.tag("rt",d).forEach(function(a){var b,c=p.create("!"),d=[];do{if(b=(b||a).previousSibling,!b||b.nodeName.match(/(r[ubt])/i))break;c.insertBefore(p.clone(b),c.firstChild),d.push(b)}while(!b.nodeName.match(/(r[ubt])/i));h=k.contains("zhuyin")?f(c,a):e(c,a);try{a.parentNode.replaceChild(h,a),d.forEach(function(a){p.remove(a)})}catch(g){}}),(k.contains("complex")||k.contains("rightangle"))&&(g=h=p.tag("rb",d),i=g.length,!function(b){b&&(h=p.tag("rt",b).map(function(a,b){if(g[b]){var c=f(g[b],a);try{g[b].parentNode.replaceChild(c,g[b])}catch(d){}return c}}),p.remove(b),a.setAttribute("rightangle",""))}(d.querySelector("rtc.zhuyin")),p.qsa("rtc:not(.zhuyin)",d).forEach(function(b,c){var d;d=p.tag("rt",b).map(function(b){var d,f,g=Number(b.getAttribute("rbspan")||1),j=0,l=[];g>i&&(g=i);do{try{d=h.shift(),l.push(d)}catch(m){}if("undefined"==typeof d)break;j+=Number(d.getAttribute("span")||1)}while(g>j);if(j>g){if(l.length>1)return void console.error("An impossible `rbspan` value detected.",a);l=p.tag("rb",l[0]),h=l.slice(g).concat(h),l=l.slice(0,g),j=g}f=e(l,b,{"class":k,span:j,order:c});try{l[0].parentNode.replaceChild(f,l.shift()),l.forEach(function(a){p.remove(a)})}catch(m){}return f}),h=d,p.remove(b)})),j=p.create("hruby"),j.innerHTML=c.firstChild.innerHTML,p.setAttr(j,a.attributes),j.normalize(),a.parentNode.replaceChild(j,a))})}}),l.normalize=r,l.localize=r,l.support=r.support,l.detectFont=r.detectFont,l.fn.initCond=function(){return this.condition.classList.add("han-js-rendered"),l.normalize.initCond(this.condition),this},void["Elem","DecoLine","Em","Ruby"].forEach(function(a){var b="render"+a;l.fn[b]=function(a){return l.normalize[b](this.context,a),this}}),p.extend(l.support,{heiti:!0,songti:l.detectFont('"Han Songti"'),"songti-gb":l.detectFont('"Han Songti GB"'),kaiti:l.detectFont('"Han Kaiti"'),fangsong:l.detectFont('"Han Fangsong"')});var s,t="* > hws:first-child, * > wbr:first-child + hws, wbr:first-child + wbr + hws",u=function(){var a=p.create("div");return a.appendChild(p.create("","0-")),a.appendChild(p.create("","2")),a.normalize(),2!==a.firstChild.length}();s=p.create("hws"),s.innerHTML=" ",p.extend(l,{isNodeNormalizeNormal:u,renderHWS:function(a,b){var a=a||g,c=b?"strict":"base",d=l.find(a);return b?d.filterOut("textarea, code, kbd, samp, pre",!0):d.filterOut("textarea",!0),d.replace(l.TYPESET.hws[c][0],"$1$2").replace(l.TYPESET.hws[c][1],"$1$2").replace(/(['"]+)(.+?)\1/gi,"$1$2$1").replace("",function(){return p.clone(s)}),p.qsa(t,a).forEach(function(a){for(var b=a.parentNode,c=b.firstChild;p.isIgnorable(c);)if(c=c.nextSibling,!c)return;for(;"HWS"===c.nodeName&&(p.remove(c,b),c=b.parentNode.insertBefore(p.clone(s),b),b=b.parentNode,u&&b.normalize(),c===b.firstChild););}),u&&a.normalize(),d}}),p.extend(l.fn,{HWS:null,renderHWS:function(a){return l.renderHWS(this.context,a),this.HWS=p.tag("hws",this.context),this},revertHWS:function(){return this.HWS.forEach(function(a){p.remove(a)}),this}}),l.renderJiya=function(a){var a=a||g,b=[l.find(a)];return b[0].filterOut("textarea, code, kbd, samp, pre, jinze, em",!0),b[0].groupify(),p.qsa("char_group.biaodian",a).forEach(function(a){b.push(l(a).charify({hanzi:"biaodian",liga:"liga",word:"none",latin:"none",ellinika:"none",kirillica:"none"}))}),b},p.extend(l.fn,{jiya:null,renderJiya:function(){return this.jiya=l.renderJiya(this.context),this},revertJiya:function(){try{this.jiya.revert("all")}catch(a){}return this}});var v;v=p.create("char","biaodian cjk middle"),v.setAttribute("unicode","b7"),l.correctBasicBD=function(a,b){if(!l.support.unicoderange||b){var c,a=a||g;c=l.find(a),c.wrap(/\u00B7/g,p.clone(v)).charify({liga:"liga",hanzi:"none",word:"none",latin:"none",ellinika:"none",kirillica:"none"})}},p.extend(l.fn,{basicBD:null,correctBasicBD:function(a){return this.basicBD=l.correctBasicBD(this.context,a),this},revertBasicBD:function(){try{this.basicBD.revert("all")}catch(a){}return this}});var w="ru[annotation]",x="textarea, code, kbd, samp, pre",y=function(){var a,b,c,d=i||p.create("body"),e=p.create("div"),f=p.create("span"),g=i?e:d;return i?i.appendChild(g):(d.style.background="",d.style.overflow="hidden",b=h.style.overflow,h.style.overflow="hidden",h.appendChild(d)),f.innerHTML="i̍",f.style.fontFamily="sans-serif",f.style.display="inline-block",a=p.clone(f),a.style.fontFamily='"Romanization Sans"',g.appendChild(f),g.appendChild(a),c=f.clientWidth!==a.clientWidth,p.remove(g),i||(h.style.overflow=b),c}(),z=l.TYPESET["display-as"]["comb-liga-pua"],A=l.TYPESET["inaccurate-char"],B=p.create("char","comb-liga"),C=p.create("inner");return p.extend(l,{isCombLigaNormal:y,substCombLigaWithPUA:function(a){if(!y){var a=a||g,b=l.find(a);return b.filterOut(x,!0),z.forEach(function(a){b.replace(new RegExp(a[0],"ig"),function(b,c){var d=p.clone(B),e=p.clone(C);return e.innerHTML=c[0],d.appendChild(e),d.setAttribute("display-as",a[1]),0===b.index?d:""})}),p.qsa(w,a).forEach(function(a){var b=a.getAttribute("annotation");z.slice(0,5).forEach(function(a){b=b.replace(new RegExp(a[0],"ig"),a[1])}),a.setAttribute("annotation",b)}),b}},substInaccurateChar:function(a){var a=a||g,b=l.find(a);b.filterOut(x,!0),A.forEach(function(a){b.replace(new RegExp(a[0],"ig"),a[1])})}}),p.extend(l.fn,{"comb-liga":null,"inaccurate-char":null,substCombLigaWithPUA:function(){return this["comb-liga"]=l.substCombLigaWithPUA(this.context),this},revertCombLigaWithPUA:function(){try{this["comb-liga"].revert("all")}catch(a){}return this},substInaccurateChar:function(){return this["inaccurate-char"]=l.substInaccurateChar(this.context),this},revertInaccurateChar:function(){try{this["inaccurate-char"].revert("all")}catch(a){}return this}}),a.addEventListener("DOMContentLoaded",function(){var a;h.classList.contains("han-init")?l.init():(a=g.querySelector(".han-init-context"))&&(l.init=l(a).render())}),"function"==typeof define&&define.amd?define(function(){return l}):("undefined"==typeof b||b===!1)&&(a.Han=l),l}); \ No newline at end of file diff --git a/latest/hws.html b/latest/hws.html index e08ba49f..b685c83b 100644 --- a/latest/hws.html +++ b/latest/hws.html @@ -1,142 +1,32 @@ - - - - - 測試・漢字西文混排間隙 — 漢字標準格式 - - - - - - - -
-

測試·漢字西文混排間隙

-
-

基本漢字西文混排間隙

-
-

拉丁字母及數字

-

研究發現,全球狂銷的蘋果iPad超省電。根據非營利組織EPRI(電力研究中心),iPad一年電費只需1.36美刀(U.S. Dollar)。

-
-
-

希臘字母

-

游離輻射可以區分為高能粒子流與高能電磁波,其中高能粒子流包含α粒子、β粒子(+/−)與中子,高能電磁波包含γ射線、X射線與特定波長的紫外線。每一種粒子或射線的電離能力與穿透性均不同,例如α粒子的電離能力很強,但穿透力非常弱,只要一張紙就能阻隔;γ射線的特性就恰與α粒子相反,其穿透能力非常強,需要幾英呎厚的混凝土才能降低γ射線,但是γ射線的電離能力卻很弱,對生物的影響相對較小。

-
-
-

西里爾字母

-

我有學過українська мова,所以русский язык我可以稍微看得懂。

-
-
-
-

完整中日韓表意文字區段支援

-

注意:部分擴展區漢字可能不為多數作業系統支援,而顯示為空白方框。安裝花園明朝體可以解決這個問題。

-

- 擴展A:How㐀are㘻you䶵?
- 擴展B:A𠀀b𠄉C𪛖d
- 擴展C:E𪜀f𪶛G𪷼h𪜺I
- 擴展D:j𫝀K𫠝L
- 表意數字零:Θ〇Ω
- 康熙及簡體字部首:⼌Т⿕Я⺃ж⻍ы⻰Ӓ⻳Ӂ
- 表意文字描述字元:⿸Ҕ⿷ẳ⿳ -

-
-

假名

-

歯のEnamelに復元不可能な損害をもたらす。

-
-
-
-

組合字(combining character

-

天然ê上好!

-

Ὅ̴̊̌ηρος̃馬。

-

К҉о҈ш҉к҈а҈咪。

-
-
-

元素邊界的調整

-

- 美國Chicago這架飛船的目的地。 -

-

- 去Europe旅行帶上Dollars - Euró就夠了! -

-
-

有註解及機會斷行元素的情況

-

不知道是不是like this你用「元件檢閱器」看看。

-
-
-

多層元素嵌套

-

- Who do you自以為you are? -

-

你是咧com啥物plain啦!

-
-
-

清單

-
    -
  1. Tissue
  2. -
  3. - 鴨蛋 -
  4. -
  5. Eggs
  6. -
  7. 垃圾袋XL
  8. -
-
-
-
-

非典型情況

-

雖然很非典型,但是¿你說不可能嗎?不對哦.

-

- 他罵了一聲¡逼!就走——了.
- 他罵了一句¡逼、逼逼!就走……了. -

-

為‘什’麼;為“什”麼?

-

- 這是一個句子[漢字123]然後就沒有然後了;
- 這是一個句子[漢123字]然後就沒有然後了;
- 這是一個句子(漢字123)然後就沒有然後了;
- 這是一個句子(漢123字)然後就沒有然後了. -

-

- 選項(必填) for example,
- For example: (必填)選項
- 問題: 這是,答案. -

-

- 這是一段包含單'引'號和雙"引"號'單引號'和"雙引號"的文字.
- 單引號'大X中ZZ天'!
- 單引號'大X中ZZ天'和雙引號"大X中Y天"哦! -

-
-
-

不作用的元素

-

文字區塊表單

- -

代碼等元素

-

代code碼輸key入board鍵計算機samp輸出示例

-
格式pre處理
-

注意:在漢字西文混排間隙「基本模式」下,代碼、輸入鍵、計算機輸出示例等元素仍經renderHWS()處理,惟使用樣式表將其下之hws元素隱藏,可藉樣式的改寫來顯示漢字西文混排間隙;「嚴格模式」下,則渲染以上元素。 -

-
-
- - - - \ No newline at end of file +測試・漢字西文混排間隙 — 漢字標準格式

測試·漢字西文混排間隙

基本漢字西文混排間隙

拉丁字母及數字

研究發現,全球狂銷的蘋果iPad超省電。根據非營利組織EPRI(電力研究中心),iPad一年電費只需1.36美刀(U.S. Dollar)。

希臘字母

游離輻射可以區分為高能粒子流與高能電磁波,其中高能粒子流包含α粒子、β粒子(+/−)與中子,高能電磁波包含γ射線、X射線與特定波長的紫外線。每一種粒子或射線的電離能力與穿透性均不同,例如α粒子的電離能力很強,但穿透力非常弱,只要一張紙就能阻隔;γ射線的特性就恰與α粒子相反,其穿透能力非常強,需要幾英呎厚的混凝土才能降低γ射線,但是γ射線的電離能力卻很弱,對生物的影響相對較小。

西里爾字母

我有學過українська мова,所以русский язык我可以稍微看得懂。

完整中日韓表意文字區段支援

注意:部分擴展區漢字可能不為多數作業系統支援,而顯示為空白方框。安裝花園明朝體可以解決這個問題。

擴展A:How㐀are㘻you䶵?
+擴展B:A𠀀b𠄉C𪛖d
+擴展C:E𪜀f𪶛G𪷼h𪜺I
+擴展D:j𫝀K𫠝L
+表意數字零:Θ〇Ω
+康熙及簡體字部首:⼌Т⿕Я⺃ж⻍ы⻰Ӓ⻳Ӂ
+表意文字描述字元:⿸Ҕ⿷ẳ⿳

假名

歯のEnamelに復元不可能な損害をもたらす。

組合字(combining character

天然ê上好!

Ὅ̴̊̌ηρος̃馬。

К҉о҈ш҉к҈а҈咪。

元素邊界的調整

美國Chicago這架飛船的目的地。

Europe旅行帶上Dollars +Euró就夠了!

有註解及機會斷行元素的情況

不知道是不是like this你用「元件檢閱器」看看。

多層元素嵌套

Who do you自以為you are?

你是咧com啥物plain啦!

清單

  1. Tissue
  2. 鴨蛋
  3. Eggs
  4. 垃圾袋XL

非典型情況

雖然很非典型,但是¿你說不可能嗎?不對哦.

他罵了一聲¡逼!就走——了.
+他罵了一句¡逼、逼逼!就走……了.

為‘什’麼;為“什”麼?

這是一個句子[漢字123]然後就沒有然後了;
+這是一個句子[漢123字]然後就沒有然後了;
+這是一個句子(漢字123)然後就沒有然後了;
+這是一個句子(漢123字)然後就沒有然後了.

選項(必填) for example,
+For example: (必填)選項
+問題: 這是,答案.

這是一段包含單'引'號和雙"引"號'單引號'和"雙引號"的文字.
+單引號'大X中ZZ天'!
+單引號'大X中ZZ天'和雙引號"大X中Y天"哦!

不作用的元素

文字區塊表單

代碼等元素

代code碼輸key入board鍵計算機samp輸出示例

格式pre處理

注意:在漢字西文混排間隙「基本模式」下,代碼、輸入鍵、計算機輸出示例等元素仍經renderHWS()處理,惟使用樣式表將其下之hws元素隱藏,可藉樣式的改寫來顯示漢字西文混排間隙;「嚴格模式」下,則渲染以上元素。

\ No newline at end of file diff --git a/latest/index.html b/latest/index.html index 273db9cd..135e1381 100644 --- a/latest/index.html +++ b/latest/index.html @@ -1,101 +1,20 @@ - - - - - 測試頁索引 — 漢字標準格式 - - - - - - - -
-

測試頁索引

- -
-

Normalisation(樣式標準化)

-
-

毋須配合JavaScript的元素樣式修正

-

上列測試頁

-
-
-

配合JavaScript的元素樣式修正

- -
-
-
-

字體

-
-

漢字字體

- -
-
-

其他

- -
-
-
-

排版

-
-

章節的組成

- -
-
-

行的組成

- -
-
-
- - - - - \ No newline at end of file +測試頁索引 — 漢字標準格式

測試頁索引

Normalisation(樣式標準化)

毋須配合JavaScript的元素樣式修正

上列測試頁

配合JavaScript的元素樣式修正

字體

漢字字體

其他

排版

章節的組成

行的組成

\ No newline at end of file diff --git a/latest/italic.html b/latest/italic.html index 0c43a1dd..f3e2a684 100644 --- a/latest/italic.html +++ b/latest/italic.html @@ -1,45 +1,20 @@ - - - - - 測試・西文意大利體 — 漢字標準格式 - - - - - - - -
-

測試·西文意大利體

-

無襯線

-

The quick brown fox jumps over a lazy dog.
0123456789 !§%&/()=?# @©®™ $€£¢ •°-_—
äöüß æÆ œŒ åÅ øØ çÇ ñÑ
ff fl ffl fi ffi st sst
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

-

The quick brown fox jumps over a lazy dog.
0123456789 !§%&/()=?# @©®™ $€£¢ •°-_—
äöüß æÆ œŒ åÅ øØ çÇ ñÑ
ff fl ffl fi ffi st sst
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

-

襯線

-

The quick brown fox jumps over a lazy dog.
0123456789 !§%&/()=?# @©®™ $€£¢ •°-_—
äöüß æÆ œŒ åÅ øØ çÇ ñÑ
ff fl ffl fi ffi st sst
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

-

The quick brown fox jumps over a lazy dog.
0123456789 !§%&/()=?# @©®™ $€£¢ •°-_—
äöüß æÆ œŒ åÅ øØ çÇ ñÑ
ff fl ffl fi ffi st sst
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

-
- - - \ No newline at end of file +測試・西文意大利體 — 漢字標準格式

測試·西文意大利體

無襯線

The quick brown fox jumps over a lazy dog.
0123456789 !§%&/()=?# @©®™ $€£¢ •°-_—
äöüß æÆ œŒ åÅ øØ çÇ ñÑ
ff fl ffl fi ffi st sst
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

The quick brown fox jumps over a lazy dog.
0123456789 !§%&/()=?# @©®™ $€£¢ •°-_—
äöüß æÆ œŒ åÅ øØ çÇ ñÑ
ff fl ffl fi ffi st sst
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

襯線

The quick brown fox jumps over a lazy dog.
0123456789 !§%&/()=?# @©®™ $€£¢ •°-_—
äöüß æÆ œŒ åÅ øØ çÇ ñÑ
ff fl ffl fi ffi st sst
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

The quick brown fox jumps over a lazy dog.
0123456789 !§%&/()=?# @©®™ $€£¢ •°-_—
äöüß æÆ œŒ åÅ øØ çÇ ñÑ
ff fl ffl fi ffi st sst
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

\ No newline at end of file diff --git a/latest/jiya.html b/latest/jiya.html index 5485448d..eab59ddb 100644 --- a/latest/jiya.html +++ b/latest/jiya.html @@ -1,42 +1,12 @@ - - - - - 測試・標點擠壓 — 漢字標準格式 - - - - - - - -
-

測試·標點擠壓

-

「何謂『標點擠壓』?」

-

何謂「標點『擠壓』」呢?

-

讓我來告訴你何謂「『標點』擠壓」。

-

我、「那個人」和他戰鬥了數個鐘頭,(最後)沒輸沒贏……「那個人」逃之夭夭。

-

輕聲叨唸道——「好的……」

-

「好」「不好」

-

「好」·「不好」「好」・「不好」「好」、「不好」

-

「『好』·不好」「『好』・不好」「『好』、不好」

-

「好·『不好』」「好、『不好』」

-

《書名》〈篇名〉(內容)

-

《書名》〈篇名〉(內容)「『好』、不好」

-
- - - \ No newline at end of file +測試・標點擠壓 — 漢字標準格式

測試·標點擠壓

「何謂『標點擠壓』?」

何謂「標點『擠壓』」呢?

讓我來告訴你何謂「『標點』擠壓」。

讓我來告訴你何謂「『標點』擠壓。」

我、「那個人」和他戰鬥了數個鐘頭,(最後)沒輸沒贏……「那個人」逃之夭夭。

輕聲叨唸道——「好的……」

「好」「不好」

「好」·「不好」「好」・「不好」「好」、「不好」

「『好』·不好」「『好』・不好」「『好』、不好」

「好·『不好』」「好、『不好』」

《書名》〈篇名〉(內容)

《書名》〈篇名〉(內容)「『好』、不好」

\ No newline at end of file diff --git a/latest/jiya.jade b/latest/jiya.jade index ea49fab5..6b8a8948 100644 --- a/latest/jiya.jade +++ b/latest/jiya.jade @@ -28,6 +28,7 @@ html(lang='zh-Hant').han-init p 「何謂『標點擠壓』?」 p 何謂「標點『擠壓』」呢? p 讓我來告訴你何謂「『標點』擠壓」。 + p 讓我來告訴你何謂「『標點』擠壓。」 p 我、「那個人」和他戰鬥了數個鐘頭,(最後)沒輸沒贏……「那個人」逃之夭夭。 p 輕聲叨唸道——「好的……」 p 「好」「不好」 diff --git a/latest/numeral.html b/latest/numeral.html index 27a0d96f..5ffdf173 100644 --- a/latest/numeral.html +++ b/latest/numeral.html @@ -1,49 +1,20 @@ - - - - - 測試・數字 — 漢字標準格式 - - - - - - - -
-

測試·數字

-

等高數字

-

無襯線

-

1234567890
1234567890
1234567890
1234567890

-

襯線

-

1234567890
1234567890
1234567890
1234567890

-

文本數字

-

無襯線

-

1234567890
1234567890
1234567890
1234567890

-

襯線

-

1234567890
1234567890
1234567890
1234567890

-
- - - \ No newline at end of file +測試・數字 — 漢字標準格式

測試·數字

等高數字

無襯線

1234567890
1234567890
1234567890
1234567890

襯線

1234567890
1234567890
1234567890
1234567890

文本數字

無襯線

1234567890
1234567890
1234567890
1234567890

襯線

1234567890
1234567890
1234567890
1234567890

\ No newline at end of file diff --git a/latest/qunit.css b/latest/qunit.css new file mode 100644 index 00000000..385a1ce0 --- /dev/null +++ b/latest/qunit.css @@ -0,0 +1,264 @@ +/*! + * QUnit 1.16.0 + * http://qunitjs.com/ + * + * Copyright 2006, 2014 jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-12-03T16:32Z + */ + +/** Font Family and Sizes */ + +#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { + font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; +} + +#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } +#qunit-tests { font-size: smaller; } + + +/** Resets */ + +#qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter { + margin: 0; + padding: 0; +} + + +/** Header */ + +#qunit-header { + padding: 0.5em 0 0.5em 1em; + + color: #8699A4; + background-color: #0D3349; + + font-size: 1.5em; + line-height: 1em; + font-weight: 400; + + border-radius: 5px 5px 0 0; +} + +#qunit-header a { + text-decoration: none; + color: #C2CCD1; +} + +#qunit-header a:hover, +#qunit-header a:focus { + color: #FFF; +} + +#qunit-testrunner-toolbar label { + display: inline-block; + padding: 0 0.5em 0 0.1em; +} + +#qunit-banner { + height: 5px; +} + +#qunit-testrunner-toolbar { + padding: 0.5em 1em 0.5em 1em; + color: #5E740B; + background-color: #EEE; + overflow: hidden; +} + +#qunit-userAgent { + padding: 0.5em 1em 0.5em 1em; + background-color: #2B81AF; + color: #FFF; + text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; +} + +#qunit-modulefilter-container { + float: right; +} + +/** Tests: Pass/Fail */ + +#qunit-tests { + list-style-position: inside; +} + +#qunit-tests li { + padding: 0.4em 1em 0.4em 1em; + border-bottom: 1px solid #FFF; + list-style-position: inside; +} + +#qunit-tests > li { + display: none; +} + +#qunit-tests li.pass, #qunit-tests li.running, #qunit-tests li.fail { + display: list-item; +} + +#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { + display: none; +} + +#qunit-tests li strong { + cursor: pointer; +} + +#qunit-tests li.skipped strong { + cursor: default; +} + +#qunit-tests li a { + padding: 0.5em; + color: #C2CCD1; + text-decoration: none; +} +#qunit-tests li a:hover, +#qunit-tests li a:focus { + color: #000; +} + +#qunit-tests li .runtime { + float: right; + font-size: smaller; +} + +.qunit-assert-list { + margin-top: 0.5em; + padding: 0.5em; + + background-color: #FFF; + + border-radius: 5px; +} + +.qunit-collapsed { + display: none; +} + +#qunit-tests table { + border-collapse: collapse; + margin-top: 0.2em; +} + +#qunit-tests th { + text-align: right; + vertical-align: top; + padding: 0 0.5em 0 0; +} + +#qunit-tests td { + vertical-align: top; +} + +#qunit-tests pre { + margin: 0; + white-space: pre-wrap; + word-wrap: break-word; +} + +#qunit-tests del { + background-color: #E0F2BE; + color: #374E0C; + text-decoration: none; +} + +#qunit-tests ins { + background-color: #FFCACA; + color: #500; + text-decoration: none; +} + +/*** Test Counts */ + +#qunit-tests b.counts { color: #000; } +#qunit-tests b.passed { color: #5E740B; } +#qunit-tests b.failed { color: #710909; } + +#qunit-tests li li { + padding: 5px; + background-color: #FFF; + border-bottom: none; + list-style-position: inside; +} + +/*** Passing Styles */ + +#qunit-tests li li.pass { + color: #3C510C; + background-color: #FFF; + border-left: 10px solid #C6E746; +} + +#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } +#qunit-tests .pass .test-name { color: #366097; } + +#qunit-tests .pass .test-actual, +#qunit-tests .pass .test-expected { color: #999; } + +#qunit-banner.qunit-pass { background-color: #C6E746; } + +/*** Failing Styles */ + +#qunit-tests li li.fail { + color: #710909; + background-color: #FFF; + border-left: 10px solid #EE5757; + white-space: pre; +} + +#qunit-tests > li:last-child { + border-radius: 0 0 5px 5px; +} + +#qunit-tests .fail { color: #000; background-color: #EE5757; } +#qunit-tests .fail .test-name, +#qunit-tests .fail .module-name { color: #000; } + +#qunit-tests .fail .test-actual { color: #EE5757; } +#qunit-tests .fail .test-expected { color: #008000; } + +#qunit-banner.qunit-fail { background-color: #EE5757; } + +/*** Skipped tests */ + +#qunit-tests .skipped { + background-color: #EBECE9; +} + +#qunit-tests .qunit-skipped-label { + background-color: #F4FF77; + display: inline-block; + font-style: normal; + color: #366097; + line-height: 1.8em; + padding: 0 0.5em; + margin: -0.4em 0.4em -0.4em 0; +} + +/** Result */ + +#qunit-testresult { + padding: 0.5em 1em 0.5em 1em; + + color: #2B81AF; + background-color: #D2E0E6; + + border-bottom: 1px solid #FFF; +} +#qunit-testresult .module-name { + font-weight: 700; +} + +/** Fixture */ + +#qunit-fixture { + position: absolute; + top: -10000px; + left: -10000px; + width: 1000px; + height: 1000px; +} diff --git a/latest/qunit.js b/latest/qunit.js new file mode 100644 index 00000000..82020d40 --- /dev/null +++ b/latest/qunit.js @@ -0,0 +1,2819 @@ +/*! + * QUnit 1.16.0 + * http://qunitjs.com/ + * + * Copyright 2006, 2014 jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-12-03T16:32Z + */ + +(function( window ) { + +var QUnit, + config, + onErrorFnPrev, + loggingCallbacks = {}, + fileName = ( sourceFromStacktrace( 0 ) || "" ).replace( /(:\d+)+\)?/, "" ).replace( /.+\//, "" ), + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + // Keep a local reference to Date (GH-283) + Date = window.Date, + now = Date.now || function() { + return new Date().getTime(); + }, + globalStartCalled = false, + runStarted = false, + setTimeout = window.setTimeout, + clearTimeout = window.clearTimeout, + defined = { + document: window.document !== undefined, + setTimeout: window.setTimeout !== undefined, + sessionStorage: (function() { + var x = "qunit-test-string"; + try { + sessionStorage.setItem( x, x ); + sessionStorage.removeItem( x ); + return true; + } catch ( e ) { + return false; + } + }()) + }, + /** + * Provides a normalized error string, correcting an issue + * with IE 7 (and prior) where Error.prototype.toString is + * not properly implemented + * + * Based on http://es5.github.com/#x15.11.4.4 + * + * @param {String|Error} error + * @return {String} error message + */ + errorString = function( error ) { + var name, message, + errorString = error.toString(); + if ( errorString.substring( 0, 7 ) === "[object" ) { + name = error.name ? error.name.toString() : "Error"; + message = error.message ? error.message.toString() : ""; + if ( name && message ) { + return name + ": " + message; + } else if ( name ) { + return name; + } else if ( message ) { + return message; + } else { + return "Error"; + } + } else { + return errorString; + } + }, + /** + * Makes a clone of an object using only Array or Object as base, + * and copies over the own enumerable properties. + * + * @param {Object} obj + * @return {Object} New object with only the own properties (recursively). + */ + objectValues = function( obj ) { + var key, val, + vals = QUnit.is( "array", obj ) ? [] : {}; + for ( key in obj ) { + if ( hasOwn.call( obj, key ) ) { + val = obj[ key ]; + vals[ key ] = val === Object( val ) ? objectValues( val ) : val; + } + } + return vals; + }; + +QUnit = {}; + +/** + * Config object: Maintain internal state + * Later exposed as QUnit.config + * `config` initialized at top of scope + */ +config = { + // The queue of tests to run + queue: [], + + // block until document ready + blocking: true, + + // when enabled, show only failing tests + // gets persisted through sessionStorage and can be changed in UI via checkbox + hidepassed: false, + + // by default, run previously failed tests first + // very useful in combination with "Hide passed tests" checked + reorder: true, + + // by default, modify document.title when suite is done + altertitle: true, + + // by default, scroll to top of the page when suite is done + scrolltop: true, + + // when enabled, all tests must call expect() + requireExpects: false, + + // add checkboxes that are persisted in the query-string + // when enabled, the id is set to `true` as a `QUnit.config` property + urlConfig: [ + { + id: "hidepassed", + label: "Hide passed tests", + tooltip: "Only show tests and assertions that fail. Stored as query-strings." + }, + { + id: "noglobals", + label: "Check for Globals", + tooltip: "Enabling this will test if any test introduces new properties on the " + + "`window` object. Stored as query-strings." + }, + { + id: "notrycatch", + label: "No try-catch", + tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging " + + "exceptions in IE reasonable. Stored as query-strings." + } + ], + + // Set of all modules. + modules: [], + + // The first unnamed module + currentModule: { + name: "", + tests: [] + }, + + callbacks: {} +}; + +// Push a loose unnamed module to the modules collection +config.modules.push( config.currentModule ); + +// Initialize more QUnit.config and QUnit.urlParams +(function() { + var i, current, + location = window.location || { search: "", protocol: "file:" }, + params = location.search.slice( 1 ).split( "&" ), + length = params.length, + urlParams = {}; + + if ( params[ 0 ] ) { + for ( i = 0; i < length; i++ ) { + current = params[ i ].split( "=" ); + current[ 0 ] = decodeURIComponent( current[ 0 ] ); + + // allow just a key to turn on a flag, e.g., test.html?noglobals + current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true; + if ( urlParams[ current[ 0 ] ] ) { + urlParams[ current[ 0 ] ] = [].concat( urlParams[ current[ 0 ] ], current[ 1 ] ); + } else { + urlParams[ current[ 0 ] ] = current[ 1 ]; + } + } + } + + QUnit.urlParams = urlParams; + + // String search anywhere in moduleName+testName + config.filter = urlParams.filter; + + config.testId = []; + if ( urlParams.testId ) { + + // Ensure that urlParams.testId is an array + urlParams.testId = [].concat( urlParams.testId ); + for ( i = 0; i < urlParams.testId.length; i++ ) { + config.testId.push( urlParams.testId[ i ] ); + } + } + + // Figure out if we're running the tests from a server or not + QUnit.isLocal = location.protocol === "file:"; +}()); + +// Root QUnit object. +// `QUnit` initialized at top of scope +extend( QUnit, { + + // call on start of module test to prepend name to all tests + module: function( name, testEnvironment ) { + var currentModule = { + name: name, + testEnvironment: testEnvironment, + tests: [] + }; + + // DEPRECATED: handles setup/teardown functions, + // beforeEach and afterEach should be used instead + if ( testEnvironment && testEnvironment.setup ) { + testEnvironment.beforeEach = testEnvironment.setup; + delete testEnvironment.setup; + } + if ( testEnvironment && testEnvironment.teardown ) { + testEnvironment.afterEach = testEnvironment.teardown; + delete testEnvironment.teardown; + } + + config.modules.push( currentModule ); + config.currentModule = currentModule; + }, + + // DEPRECATED: QUnit.asyncTest() will be removed in QUnit 2.0. + asyncTest: function( testName, expected, callback ) { + if ( arguments.length === 2 ) { + callback = expected; + expected = null; + } + + QUnit.test( testName, expected, callback, true ); + }, + + test: function( testName, expected, callback, async ) { + var test; + + if ( arguments.length === 2 ) { + callback = expected; + expected = null; + } + + test = new Test({ + testName: testName, + expected: expected, + async: async, + callback: callback + }); + + test.queue(); + }, + + skip: function( testName ) { + var test = new Test({ + testName: testName, + skip: true + }); + + test.queue(); + }, + + // DEPRECATED: The functionality of QUnit.start() will be altered in QUnit 2.0. + // In QUnit 2.0, invoking it will ONLY affect the `QUnit.config.autostart` blocking behavior. + start: function( count ) { + var globalStartAlreadyCalled = globalStartCalled; + + if ( !config.current ) { + globalStartCalled = true; + + if ( runStarted ) { + throw new Error( "Called start() outside of a test context while already started" ); + } else if ( globalStartAlreadyCalled || count > 1 ) { + throw new Error( "Called start() outside of a test context too many times" ); + } else if ( config.autostart ) { + throw new Error( "Called start() outside of a test context when " + + "QUnit.config.autostart was true" ); + } else if ( !config.pageLoaded ) { + + // The page isn't completely loaded yet, so bail out and let `QUnit.load` handle it + config.autostart = true; + return; + } + } else { + + // If a test is running, adjust its semaphore + config.current.semaphore -= count || 1; + + // Don't start until equal number of stop-calls + if ( config.current.semaphore > 0 ) { + return; + } + + // throw an Error if start is called more often than stop + if ( config.current.semaphore < 0 ) { + config.current.semaphore = 0; + + QUnit.pushFailure( + "Called start() while already started (test's semaphore was 0 already)", + sourceFromStacktrace( 2 ) + ); + return; + } + } + + resumeProcessing(); + }, + + // DEPRECATED: QUnit.stop() will be removed in QUnit 2.0. + stop: function( count ) { + + // If there isn't a test running, don't allow QUnit.stop() to be called + if ( !config.current ) { + throw new Error( "Called stop() outside of a test context" ); + } + + // If a test is running, adjust its semaphore + config.current.semaphore += count || 1; + + pauseProcessing(); + }, + + config: config, + + // Safe object type checking + is: function( type, obj ) { + return QUnit.objectType( obj ) === type; + }, + + objectType: function( obj ) { + if ( typeof obj === "undefined" ) { + return "undefined"; + } + + // Consider: typeof null === object + if ( obj === null ) { + return "null"; + } + + var match = toString.call( obj ).match( /^\[object\s(.*)\]$/ ), + type = match && match[ 1 ] || ""; + + switch ( type ) { + case "Number": + if ( isNaN( obj ) ) { + return "nan"; + } + return "number"; + case "String": + case "Boolean": + case "Array": + case "Date": + case "RegExp": + case "Function": + return type.toLowerCase(); + } + if ( typeof obj === "object" ) { + return "object"; + } + return undefined; + }, + + url: function( params ) { + params = extend( extend( {}, QUnit.urlParams ), params ); + var key, + querystring = "?"; + + for ( key in params ) { + if ( hasOwn.call( params, key ) ) { + querystring += encodeURIComponent( key ); + if ( params[ key ] !== true ) { + querystring += "=" + encodeURIComponent( params[ key ] ); + } + querystring += "&"; + } + } + return location.protocol + "//" + location.host + + location.pathname + querystring.slice( 0, -1 ); + }, + + extend: extend, + + load: function() { + config.pageLoaded = true; + + // Initialize the configuration options + extend( config, { + stats: { all: 0, bad: 0 }, + moduleStats: { all: 0, bad: 0 }, + started: 0, + updateRate: 1000, + autostart: true, + filter: "" + }, true ); + + config.blocking = false; + + if ( config.autostart ) { + resumeProcessing(); + } + } +}); + +// Register logging callbacks +(function() { + var i, l, key, + callbacks = [ "begin", "done", "log", "testStart", "testDone", + "moduleStart", "moduleDone" ]; + + function registerLoggingCallback( key ) { + var loggingCallback = function( callback ) { + if ( QUnit.objectType( callback ) !== "function" ) { + throw new Error( + "QUnit logging methods require a callback function as their first parameters." + ); + } + + config.callbacks[ key ].push( callback ); + }; + + // DEPRECATED: This will be removed on QUnit 2.0.0+ + // Stores the registered functions allowing restoring + // at verifyLoggingCallbacks() if modified + loggingCallbacks[ key ] = loggingCallback; + + return loggingCallback; + } + + for ( i = 0, l = callbacks.length; i < l; i++ ) { + key = callbacks[ i ]; + + // Initialize key collection of logging callback + if ( QUnit.objectType( config.callbacks[ key ] ) === "undefined" ) { + config.callbacks[ key ] = []; + } + + QUnit[ key ] = registerLoggingCallback( key ); + } +})(); + +// `onErrorFnPrev` initialized at top of scope +// Preserve other handlers +onErrorFnPrev = window.onerror; + +// Cover uncaught exceptions +// Returning true will suppress the default browser handler, +// returning false will let it run. +window.onerror = function( error, filePath, linerNr ) { + var ret = false; + if ( onErrorFnPrev ) { + ret = onErrorFnPrev( error, filePath, linerNr ); + } + + // Treat return value as window.onerror itself does, + // Only do our handling if not suppressed. + if ( ret !== true ) { + if ( QUnit.config.current ) { + if ( QUnit.config.current.ignoreGlobalErrors ) { + return true; + } + QUnit.pushFailure( error, filePath + ":" + linerNr ); + } else { + QUnit.test( "global failure", extend(function() { + QUnit.pushFailure( error, filePath + ":" + linerNr ); + }, { validTest: true } ) ); + } + return false; + } + + return ret; +}; + +function done() { + var runtime, passed; + + config.autorun = true; + + // Log the last module results + if ( config.previousModule ) { + runLoggingCallbacks( "moduleDone", { + name: config.previousModule.name, + tests: config.previousModule.tests, + failed: config.moduleStats.bad, + passed: config.moduleStats.all - config.moduleStats.bad, + total: config.moduleStats.all, + runtime: now() - config.moduleStats.started + }); + } + delete config.previousModule; + + runtime = now() - config.started; + passed = config.stats.all - config.stats.bad; + + runLoggingCallbacks( "done", { + failed: config.stats.bad, + passed: passed, + total: config.stats.all, + runtime: runtime + }); +} + +// Doesn't support IE6 to IE9 +// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack +function extractStacktrace( e, offset ) { + offset = offset === undefined ? 4 : offset; + + var stack, include, i; + + if ( e.stacktrace ) { + + // Opera 12.x + return e.stacktrace.split( "\n" )[ offset + 3 ]; + } else if ( e.stack ) { + + // Firefox, Chrome, Safari 6+, IE10+, PhantomJS and Node + stack = e.stack.split( "\n" ); + if ( /^error$/i.test( stack[ 0 ] ) ) { + stack.shift(); + } + if ( fileName ) { + include = []; + for ( i = offset; i < stack.length; i++ ) { + if ( stack[ i ].indexOf( fileName ) !== -1 ) { + break; + } + include.push( stack[ i ] ); + } + if ( include.length ) { + return include.join( "\n" ); + } + } + return stack[ offset ]; + } else if ( e.sourceURL ) { + + // Safari < 6 + // exclude useless self-reference for generated Error objects + if ( /qunit.js$/.test( e.sourceURL ) ) { + return; + } + + // for actual exceptions, this is useful + return e.sourceURL + ":" + e.line; + } +} + +function sourceFromStacktrace( offset ) { + var e = new Error(); + if ( !e.stack ) { + try { + throw e; + } catch ( err ) { + // This should already be true in most browsers + e = err; + } + } + return extractStacktrace( e, offset ); +} + +function synchronize( callback, last ) { + if ( QUnit.objectType( callback ) === "array" ) { + while ( callback.length ) { + synchronize( callback.shift() ); + } + return; + } + config.queue.push( callback ); + + if ( config.autorun && !config.blocking ) { + process( last ); + } +} + +function process( last ) { + function next() { + process( last ); + } + var start = now(); + config.depth = config.depth ? config.depth + 1 : 1; + + while ( config.queue.length && !config.blocking ) { + if ( !defined.setTimeout || config.updateRate <= 0 || + ( ( now() - start ) < config.updateRate ) ) { + if ( config.current ) { + + // Reset async tracking for each phase of the Test lifecycle + config.current.usedAsync = false; + } + config.queue.shift()(); + } else { + setTimeout( next, 13 ); + break; + } + } + config.depth--; + if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) { + done(); + } +} + +function begin() { + var i, l, + modulesLog = []; + + // If the test run hasn't officially begun yet + if ( !config.started ) { + + // Record the time of the test run's beginning + config.started = now(); + + verifyLoggingCallbacks(); + + // Delete the loose unnamed module if unused. + if ( config.modules[ 0 ].name === "" && config.modules[ 0 ].tests.length === 0 ) { + config.modules.shift(); + } + + // Avoid unnecessary information by not logging modules' test environments + for ( i = 0, l = config.modules.length; i < l; i++ ) { + modulesLog.push({ + name: config.modules[ i ].name, + tests: config.modules[ i ].tests + }); + } + + // The test run is officially beginning now + runLoggingCallbacks( "begin", { + totalTests: Test.count, + modules: modulesLog + }); + } + + config.blocking = false; + process( true ); +} + +function resumeProcessing() { + runStarted = true; + + // A slight delay to allow this iteration of the event loop to finish (more assertions, etc.) + if ( defined.setTimeout ) { + setTimeout(function() { + if ( config.current && config.current.semaphore > 0 ) { + return; + } + if ( config.timeout ) { + clearTimeout( config.timeout ); + } + + begin(); + }, 13 ); + } else { + begin(); + } +} + +function pauseProcessing() { + config.blocking = true; + + if ( config.testTimeout && defined.setTimeout ) { + clearTimeout( config.timeout ); + config.timeout = setTimeout(function() { + if ( config.current ) { + config.current.semaphore = 0; + QUnit.pushFailure( "Test timed out", sourceFromStacktrace( 2 ) ); + } else { + throw new Error( "Test timed out" ); + } + resumeProcessing(); + }, config.testTimeout ); + } +} + +function saveGlobal() { + config.pollution = []; + + if ( config.noglobals ) { + for ( var key in window ) { + if ( hasOwn.call( window, key ) ) { + // in Opera sometimes DOM element ids show up here, ignore them + if ( /^qunit-test-output/.test( key ) ) { + continue; + } + config.pollution.push( key ); + } + } + } +} + +function checkPollution() { + var newGlobals, + deletedGlobals, + old = config.pollution; + + saveGlobal(); + + newGlobals = diff( config.pollution, old ); + if ( newGlobals.length > 0 ) { + QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join( ", " ) ); + } + + deletedGlobals = diff( old, config.pollution ); + if ( deletedGlobals.length > 0 ) { + QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join( ", " ) ); + } +} + +// returns a new Array with the elements that are in a but not in b +function diff( a, b ) { + var i, j, + result = a.slice(); + + for ( i = 0; i < result.length; i++ ) { + for ( j = 0; j < b.length; j++ ) { + if ( result[ i ] === b[ j ] ) { + result.splice( i, 1 ); + i--; + break; + } + } + } + return result; +} + +function extend( a, b, undefOnly ) { + for ( var prop in b ) { + if ( hasOwn.call( b, prop ) ) { + + // Avoid "Member not found" error in IE8 caused by messing with window.constructor + if ( !( prop === "constructor" && a === window ) ) { + if ( b[ prop ] === undefined ) { + delete a[ prop ]; + } else if ( !( undefOnly && typeof a[ prop ] !== "undefined" ) ) { + a[ prop ] = b[ prop ]; + } + } + } + } + + return a; +} + +function runLoggingCallbacks( key, args ) { + var i, l, callbacks; + + callbacks = config.callbacks[ key ]; + for ( i = 0, l = callbacks.length; i < l; i++ ) { + callbacks[ i ]( args ); + } +} + +// DEPRECATED: This will be removed on 2.0.0+ +// This function verifies if the loggingCallbacks were modified by the user +// If so, it will restore it, assign the given callback and print a console warning +function verifyLoggingCallbacks() { + var loggingCallback, userCallback; + + for ( loggingCallback in loggingCallbacks ) { + if ( QUnit[ loggingCallback ] !== loggingCallbacks[ loggingCallback ] ) { + + userCallback = QUnit[ loggingCallback ]; + + // Restore the callback function + QUnit[ loggingCallback ] = loggingCallbacks[ loggingCallback ]; + + // Assign the deprecated given callback + QUnit[ loggingCallback ]( userCallback ); + + if ( window.console && window.console.warn ) { + window.console.warn( + "QUnit." + loggingCallback + " was replaced with a new value.\n" + + "Please, check out the documentation on how to apply logging callbacks.\n" + + "Reference: http://api.qunitjs.com/category/callbacks/" + ); + } + } + } +} + +// from jquery.js +function inArray( elem, array ) { + if ( array.indexOf ) { + return array.indexOf( elem ); + } + + for ( var i = 0, length = array.length; i < length; i++ ) { + if ( array[ i ] === elem ) { + return i; + } + } + + return -1; +} + +function Test( settings ) { + var i, l; + + ++Test.count; + + extend( this, settings ); + this.assertions = []; + this.semaphore = 0; + this.usedAsync = false; + this.module = config.currentModule; + this.stack = sourceFromStacktrace( 3 ); + + // Register unique strings + for ( i = 0, l = this.module.tests; i < l.length; i++ ) { + if ( this.module.tests[ i ].name === this.testName ) { + this.testName += " "; + } + } + + this.testId = generateHash( this.module.name, this.testName ); + + this.module.tests.push({ + name: this.testName, + testId: this.testId + }); + + if ( settings.skip ) { + + // Skipped tests will fully ignore any sent callback + this.callback = function() {}; + this.async = false; + this.expected = 0; + } else { + this.assert = new Assert( this ); + } +} + +Test.count = 0; + +Test.prototype = { + before: function() { + if ( + + // Emit moduleStart when we're switching from one module to another + this.module !== config.previousModule || + + // They could be equal (both undefined) but if the previousModule property doesn't + // yet exist it means this is the first test in a suite that isn't wrapped in a + // module, in which case we'll just emit a moduleStart event for 'undefined'. + // Without this, reporters can get testStart before moduleStart which is a problem. + !hasOwn.call( config, "previousModule" ) + ) { + if ( hasOwn.call( config, "previousModule" ) ) { + runLoggingCallbacks( "moduleDone", { + name: config.previousModule.name, + tests: config.previousModule.tests, + failed: config.moduleStats.bad, + passed: config.moduleStats.all - config.moduleStats.bad, + total: config.moduleStats.all, + runtime: now() - config.moduleStats.started + }); + } + config.previousModule = this.module; + config.moduleStats = { all: 0, bad: 0, started: now() }; + runLoggingCallbacks( "moduleStart", { + name: this.module.name, + tests: this.module.tests + }); + } + + config.current = this; + + this.testEnvironment = extend( {}, this.module.testEnvironment ); + delete this.testEnvironment.beforeEach; + delete this.testEnvironment.afterEach; + + this.started = now(); + runLoggingCallbacks( "testStart", { + name: this.testName, + module: this.module.name, + testId: this.testId + }); + + if ( !config.pollution ) { + saveGlobal(); + } + }, + + run: function() { + var promise; + + config.current = this; + + if ( this.async ) { + QUnit.stop(); + } + + this.callbackStarted = now(); + + if ( config.notrycatch ) { + promise = this.callback.call( this.testEnvironment, this.assert ); + this.resolvePromise( promise ); + return; + } + + try { + promise = this.callback.call( this.testEnvironment, this.assert ); + this.resolvePromise( promise ); + } catch ( e ) { + this.pushFailure( "Died on test #" + ( this.assertions.length + 1 ) + " " + + this.stack + ": " + ( e.message || e ), extractStacktrace( e, 0 ) ); + + // else next test will carry the responsibility + saveGlobal(); + + // Restart the tests if they're blocking + if ( config.blocking ) { + QUnit.start(); + } + } + }, + + after: function() { + checkPollution(); + }, + + queueHook: function( hook, hookName ) { + var promise, + test = this; + return function runHook() { + config.current = test; + if ( config.notrycatch ) { + promise = hook.call( test.testEnvironment, test.assert ); + test.resolvePromise( promise, hookName ); + return; + } + try { + promise = hook.call( test.testEnvironment, test.assert ); + test.resolvePromise( promise, hookName ); + } catch ( error ) { + test.pushFailure( hookName + " failed on " + test.testName + ": " + + ( error.message || error ), extractStacktrace( error, 0 ) ); + } + }; + }, + + // Currently only used for module level hooks, can be used to add global level ones + hooks: function( handler ) { + var hooks = []; + + // Hooks are ignored on skipped tests + if ( this.skip ) { + return hooks; + } + + if ( this.module.testEnvironment && + QUnit.objectType( this.module.testEnvironment[ handler ] ) === "function" ) { + hooks.push( this.queueHook( this.module.testEnvironment[ handler ], handler ) ); + } + + return hooks; + }, + + finish: function() { + config.current = this; + if ( config.requireExpects && this.expected === null ) { + this.pushFailure( "Expected number of assertions to be defined, but expect() was " + + "not called.", this.stack ); + } else if ( this.expected !== null && this.expected !== this.assertions.length ) { + this.pushFailure( "Expected " + this.expected + " assertions, but " + + this.assertions.length + " were run", this.stack ); + } else if ( this.expected === null && !this.assertions.length ) { + this.pushFailure( "Expected at least one assertion, but none were run - call " + + "expect(0) to accept zero assertions.", this.stack ); + } + + var i, + bad = 0; + + this.runtime = now() - this.started; + config.stats.all += this.assertions.length; + config.moduleStats.all += this.assertions.length; + + for ( i = 0; i < this.assertions.length; i++ ) { + if ( !this.assertions[ i ].result ) { + bad++; + config.stats.bad++; + config.moduleStats.bad++; + } + } + + runLoggingCallbacks( "testDone", { + name: this.testName, + module: this.module.name, + skipped: !!this.skip, + failed: bad, + passed: this.assertions.length - bad, + total: this.assertions.length, + runtime: this.runtime, + + // HTML Reporter use + assertions: this.assertions, + testId: this.testId, + + // DEPRECATED: this property will be removed in 2.0.0, use runtime instead + duration: this.runtime + }); + + // QUnit.reset() is deprecated and will be replaced for a new + // fixture reset function on QUnit 2.0/2.1. + // It's still called here for backwards compatibility handling + QUnit.reset(); + + config.current = undefined; + }, + + queue: function() { + var bad, + test = this; + + if ( !this.valid() ) { + return; + } + + function run() { + + // each of these can by async + synchronize([ + function() { + test.before(); + }, + + test.hooks( "beforeEach" ), + + function() { + test.run(); + }, + + test.hooks( "afterEach" ).reverse(), + + function() { + test.after(); + }, + function() { + test.finish(); + } + ]); + } + + // `bad` initialized at top of scope + // defer when previous test run passed, if storage is available + bad = QUnit.config.reorder && defined.sessionStorage && + +sessionStorage.getItem( "qunit-test-" + this.module.name + "-" + this.testName ); + + if ( bad ) { + run(); + } else { + synchronize( run, true ); + } + }, + + push: function( result, actual, expected, message ) { + var source, + details = { + module: this.module.name, + name: this.testName, + result: result, + message: message, + actual: actual, + expected: expected, + testId: this.testId, + runtime: now() - this.started + }; + + if ( !result ) { + source = sourceFromStacktrace(); + + if ( source ) { + details.source = source; + } + } + + runLoggingCallbacks( "log", details ); + + this.assertions.push({ + result: !!result, + message: message + }); + }, + + pushFailure: function( message, source, actual ) { + if ( !this instanceof Test ) { + throw new Error( "pushFailure() assertion outside test context, was " + + sourceFromStacktrace( 2 ) ); + } + + var details = { + module: this.module.name, + name: this.testName, + result: false, + message: message || "error", + actual: actual || null, + testId: this.testId, + runtime: now() - this.started + }; + + if ( source ) { + details.source = source; + } + + runLoggingCallbacks( "log", details ); + + this.assertions.push({ + result: false, + message: message + }); + }, + + resolvePromise: function( promise, phase ) { + var then, message, + test = this; + if ( promise != null ) { + then = promise.then; + if ( QUnit.objectType( then ) === "function" ) { + QUnit.stop(); + then.call( + promise, + QUnit.start, + function( error ) { + message = "Promise rejected " + + ( !phase ? "during" : phase.replace( /Each$/, "" ) ) + + " " + test.testName + ": " + ( error.message || error ); + test.pushFailure( message, extractStacktrace( error, 0 ) ); + + // else next test will carry the responsibility + saveGlobal(); + + // Unblock + QUnit.start(); + } + ); + } + } + }, + + valid: function() { + var include, + filter = config.filter && config.filter.toLowerCase(), + module = QUnit.urlParams.module && QUnit.urlParams.module.toLowerCase(), + fullName = ( this.module.name + ": " + this.testName ).toLowerCase(); + + // Internally-generated tests are always valid + if ( this.callback && this.callback.validTest ) { + return true; + } + + if ( config.testId.length > 0 && inArray( this.testId, config.testId ) < 0 ) { + return false; + } + + if ( module && ( !this.module.name || this.module.name.toLowerCase() !== module ) ) { + return false; + } + + if ( !filter ) { + return true; + } + + include = filter.charAt( 0 ) !== "!"; + if ( !include ) { + filter = filter.slice( 1 ); + } + + // If the filter matches, we need to honour include + if ( fullName.indexOf( filter ) !== -1 ) { + return include; + } + + // Otherwise, do the opposite + return !include; + } + +}; + +// Resets the test setup. Useful for tests that modify the DOM. +/* +DEPRECATED: Use multiple tests instead of resetting inside a test. +Use testStart or testDone for custom cleanup. +This method will throw an error in 2.0, and will be removed in 2.1 +*/ +QUnit.reset = function() { + + // Return on non-browser environments + // This is necessary to not break on node tests + if ( typeof window === "undefined" ) { + return; + } + + var fixture = defined.document && document.getElementById && + document.getElementById( "qunit-fixture" ); + + if ( fixture ) { + fixture.innerHTML = config.fixture; + } +}; + +QUnit.pushFailure = function() { + if ( !QUnit.config.current ) { + throw new Error( "pushFailure() assertion outside test context, in " + + sourceFromStacktrace( 2 ) ); + } + + // Gets current test obj + var currentTest = QUnit.config.current; + + return currentTest.pushFailure.apply( currentTest, arguments ); +}; + +// Based on Java's String.hashCode, a simple but not +// rigorously collision resistant hashing function +function generateHash( module, testName ) { + var hex, + i = 0, + hash = 0, + str = module + "\x1C" + testName, + len = str.length; + + for ( ; i < len; i++ ) { + hash = ( ( hash << 5 ) - hash ) + str.charCodeAt( i ); + hash |= 0; + } + + // Convert the possibly negative integer hash code into an 8 character hex string, which isn't + // strictly necessary but increases user understanding that the id is a SHA-like hash + hex = ( 0x100000000 + hash ).toString( 16 ); + if ( hex.length < 8 ) { + hex = "0000000" + hex; + } + + return hex.slice( -8 ); +} + +function Assert( testContext ) { + this.test = testContext; +} + +// Assert helpers +QUnit.assert = Assert.prototype = { + + // Specify the number of expected assertions to guarantee that failed test + // (no assertions are run at all) don't slip through. + expect: function( asserts ) { + if ( arguments.length === 1 ) { + this.test.expected = asserts; + } else { + return this.test.expected; + } + }, + + // Increment this Test's semaphore counter, then return a single-use function that + // decrements that counter a maximum of once. + async: function() { + var test = this.test, + popped = false; + + test.semaphore += 1; + test.usedAsync = true; + pauseProcessing(); + + return function done() { + if ( !popped ) { + test.semaphore -= 1; + popped = true; + resumeProcessing(); + } else { + test.pushFailure( "Called the callback returned from `assert.async` more than once", + sourceFromStacktrace( 2 ) ); + } + }; + }, + + // Exports test.push() to the user API + push: function( /* result, actual, expected, message */ ) { + var assert = this, + currentTest = ( assert instanceof Assert && assert.test ) || QUnit.config.current; + + // Backwards compatibility fix. + // Allows the direct use of global exported assertions and QUnit.assert.* + // Although, it's use is not recommended as it can leak assertions + // to other tests from async tests, because we only get a reference to the current test, + // not exactly the test where assertion were intended to be called. + if ( !currentTest ) { + throw new Error( "assertion outside test context, in " + sourceFromStacktrace( 2 ) ); + } + + if ( currentTest.usedAsync === true && currentTest.semaphore === 0 ) { + currentTest.pushFailure( "Assertion after the final `assert.async` was resolved", + sourceFromStacktrace( 2 ) ); + + // Allow this assertion to continue running anyway... + } + + if ( !( assert instanceof Assert ) ) { + assert = currentTest.assert; + } + return assert.test.push.apply( assert.test, arguments ); + }, + + /** + * Asserts rough true-ish result. + * @name ok + * @function + * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" ); + */ + ok: function( result, message ) { + message = message || ( result ? "okay" : "failed, expected argument to be truthy, was: " + + QUnit.dump.parse( result ) ); + this.push( !!result, result, true, message ); + }, + + /** + * Assert that the first two arguments are equal, with an optional message. + * Prints out both actual and expected values. + * @name equal + * @function + * @example equal( format( "{0} bytes.", 2), "2 bytes.", "replaces {0} with next argument" ); + */ + equal: function( actual, expected, message ) { + /*jshint eqeqeq:false */ + this.push( expected == actual, actual, expected, message ); + }, + + /** + * @name notEqual + * @function + */ + notEqual: function( actual, expected, message ) { + /*jshint eqeqeq:false */ + this.push( expected != actual, actual, expected, message ); + }, + + /** + * @name propEqual + * @function + */ + propEqual: function( actual, expected, message ) { + actual = objectValues( actual ); + expected = objectValues( expected ); + this.push( QUnit.equiv( actual, expected ), actual, expected, message ); + }, + + /** + * @name notPropEqual + * @function + */ + notPropEqual: function( actual, expected, message ) { + actual = objectValues( actual ); + expected = objectValues( expected ); + this.push( !QUnit.equiv( actual, expected ), actual, expected, message ); + }, + + /** + * @name deepEqual + * @function + */ + deepEqual: function( actual, expected, message ) { + this.push( QUnit.equiv( actual, expected ), actual, expected, message ); + }, + + /** + * @name notDeepEqual + * @function + */ + notDeepEqual: function( actual, expected, message ) { + this.push( !QUnit.equiv( actual, expected ), actual, expected, message ); + }, + + /** + * @name strictEqual + * @function + */ + strictEqual: function( actual, expected, message ) { + this.push( expected === actual, actual, expected, message ); + }, + + /** + * @name notStrictEqual + * @function + */ + notStrictEqual: function( actual, expected, message ) { + this.push( expected !== actual, actual, expected, message ); + }, + + "throws": function( block, expected, message ) { + var actual, expectedType, + expectedOutput = expected, + ok = false; + + // 'expected' is optional unless doing string comparison + if ( message == null && typeof expected === "string" ) { + message = expected; + expected = null; + } + + this.test.ignoreGlobalErrors = true; + try { + block.call( this.test.testEnvironment ); + } catch (e) { + actual = e; + } + this.test.ignoreGlobalErrors = false; + + if ( actual ) { + expectedType = QUnit.objectType( expected ); + + // we don't want to validate thrown error + if ( !expected ) { + ok = true; + expectedOutput = null; + + // expected is a regexp + } else if ( expectedType === "regexp" ) { + ok = expected.test( errorString( actual ) ); + + // expected is a string + } else if ( expectedType === "string" ) { + ok = expected === errorString( actual ); + + // expected is a constructor, maybe an Error constructor + } else if ( expectedType === "function" && actual instanceof expected ) { + ok = true; + + // expected is an Error object + } else if ( expectedType === "object" ) { + ok = actual instanceof expected.constructor && + actual.name === expected.name && + actual.message === expected.message; + + // expected is a validation function which returns true if validation passed + } else if ( expectedType === "function" && expected.call( {}, actual ) === true ) { + expectedOutput = null; + ok = true; + } + + this.push( ok, actual, expectedOutput, message ); + } else { + this.test.pushFailure( message, null, "No exception was thrown." ); + } + } +}; + +// Provide an alternative to assert.throws(), for enviroments that consider throws a reserved word +// Known to us are: Closure Compiler, Narwhal +(function() { + /*jshint sub:true */ + Assert.prototype.raises = Assert.prototype[ "throws" ]; +}()); + +// Test for equality any JavaScript type. +// Author: Philippe Rathé +QUnit.equiv = (function() { + + // Call the o related callback with the given arguments. + function bindCallbacks( o, callbacks, args ) { + var prop = QUnit.objectType( o ); + if ( prop ) { + if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) { + return callbacks[ prop ].apply( callbacks, args ); + } else { + return callbacks[ prop ]; // or undefined + } + } + } + + // the real equiv function + var innerEquiv, + + // stack to decide between skip/abort functions + callers = [], + + // stack to avoiding loops from circular referencing + parents = [], + parentsB = [], + + getProto = Object.getPrototypeOf || function( obj ) { + /* jshint camelcase: false, proto: true */ + return obj.__proto__; + }, + callbacks = (function() { + + // for string, boolean, number and null + function useStrictEquality( b, a ) { + + /*jshint eqeqeq:false */ + if ( b instanceof a.constructor || a instanceof b.constructor ) { + + // to catch short annotation VS 'new' annotation of a + // declaration + // e.g. var i = 1; + // var j = new Number(1); + return a == b; + } else { + return a === b; + } + } + + return { + "string": useStrictEquality, + "boolean": useStrictEquality, + "number": useStrictEquality, + "null": useStrictEquality, + "undefined": useStrictEquality, + + "nan": function( b ) { + return isNaN( b ); + }, + + "date": function( b, a ) { + return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf(); + }, + + "regexp": function( b, a ) { + return QUnit.objectType( b ) === "regexp" && + + // the regex itself + a.source === b.source && + + // and its modifiers + a.global === b.global && + + // (gmi) ... + a.ignoreCase === b.ignoreCase && + a.multiline === b.multiline && + a.sticky === b.sticky; + }, + + // - skip when the property is a method of an instance (OOP) + // - abort otherwise, + // initial === would have catch identical references anyway + "function": function() { + var caller = callers[ callers.length - 1 ]; + return caller !== Object && typeof caller !== "undefined"; + }, + + "array": function( b, a ) { + var i, j, len, loop, aCircular, bCircular; + + // b could be an object literal here + if ( QUnit.objectType( b ) !== "array" ) { + return false; + } + + len = a.length; + if ( len !== b.length ) { + // safe and faster + return false; + } + + // track reference to avoid circular references + parents.push( a ); + parentsB.push( b ); + for ( i = 0; i < len; i++ ) { + loop = false; + for ( j = 0; j < parents.length; j++ ) { + aCircular = parents[ j ] === a[ i ]; + bCircular = parentsB[ j ] === b[ i ]; + if ( aCircular || bCircular ) { + if ( a[ i ] === b[ i ] || aCircular && bCircular ) { + loop = true; + } else { + parents.pop(); + parentsB.pop(); + return false; + } + } + } + if ( !loop && !innerEquiv( a[ i ], b[ i ] ) ) { + parents.pop(); + parentsB.pop(); + return false; + } + } + parents.pop(); + parentsB.pop(); + return true; + }, + + "object": function( b, a ) { + + /*jshint forin:false */ + var i, j, loop, aCircular, bCircular, + // Default to true + eq = true, + aProperties = [], + bProperties = []; + + // comparing constructors is more strict than using + // instanceof + if ( a.constructor !== b.constructor ) { + + // Allow objects with no prototype to be equivalent to + // objects with Object as their constructor. + if ( !( ( getProto( a ) === null && getProto( b ) === Object.prototype ) || + ( getProto( b ) === null && getProto( a ) === Object.prototype ) ) ) { + return false; + } + } + + // stack constructor before traversing properties + callers.push( a.constructor ); + + // track reference to avoid circular references + parents.push( a ); + parentsB.push( b ); + + // be strict: don't ensure hasOwnProperty and go deep + for ( i in a ) { + loop = false; + for ( j = 0; j < parents.length; j++ ) { + aCircular = parents[ j ] === a[ i ]; + bCircular = parentsB[ j ] === b[ i ]; + if ( aCircular || bCircular ) { + if ( a[ i ] === b[ i ] || aCircular && bCircular ) { + loop = true; + } else { + eq = false; + break; + } + } + } + aProperties.push( i ); + if ( !loop && !innerEquiv( a[ i ], b[ i ] ) ) { + eq = false; + break; + } + } + + parents.pop(); + parentsB.pop(); + callers.pop(); // unstack, we are done + + for ( i in b ) { + bProperties.push( i ); // collect b's properties + } + + // Ensures identical properties name + return eq && innerEquiv( aProperties.sort(), bProperties.sort() ); + } + }; + }()); + + innerEquiv = function() { // can take multiple arguments + var args = [].slice.apply( arguments ); + if ( args.length < 2 ) { + return true; // end transition + } + + return ( (function( a, b ) { + if ( a === b ) { + return true; // catch the most you can + } else if ( a === null || b === null || typeof a === "undefined" || + typeof b === "undefined" || + QUnit.objectType( a ) !== QUnit.objectType( b ) ) { + + // don't lose time with error prone cases + return false; + } else { + return bindCallbacks( a, callbacks, [ b, a ] ); + } + + // apply transition with (1..n) arguments + }( args[ 0 ], args[ 1 ] ) ) && + innerEquiv.apply( this, args.splice( 1, args.length - 1 ) ) ); + }; + + return innerEquiv; +}()); + +// Based on jsDump by Ariel Flesler +// http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html +QUnit.dump = (function() { + function quote( str ) { + return "\"" + str.toString().replace( /"/g, "\\\"" ) + "\""; + } + function literal( o ) { + return o + ""; + } + function join( pre, arr, post ) { + var s = dump.separator(), + base = dump.indent(), + inner = dump.indent( 1 ); + if ( arr.join ) { + arr = arr.join( "," + s + inner ); + } + if ( !arr ) { + return pre + post; + } + return [ pre, inner + arr, base + post ].join( s ); + } + function array( arr, stack ) { + var i = arr.length, + ret = new Array( i ); + + if ( dump.maxDepth && dump.depth > dump.maxDepth ) { + return "[object Array]"; + } + + this.up(); + while ( i-- ) { + ret[ i ] = this.parse( arr[ i ], undefined, stack ); + } + this.down(); + return join( "[", ret, "]" ); + } + + var reName = /^function (\w+)/, + dump = { + + // objType is used mostly internally, you can fix a (custom) type in advance + parse: function( obj, objType, stack ) { + stack = stack || []; + var res, parser, parserType, + inStack = inArray( obj, stack ); + + if ( inStack !== -1 ) { + return "recursion(" + ( inStack - stack.length ) + ")"; + } + + objType = objType || this.typeOf( obj ); + parser = this.parsers[ objType ]; + parserType = typeof parser; + + if ( parserType === "function" ) { + stack.push( obj ); + res = parser.call( this, obj, stack ); + stack.pop(); + return res; + } + return ( parserType === "string" ) ? parser : this.parsers.error; + }, + typeOf: function( obj ) { + var type; + if ( obj === null ) { + type = "null"; + } else if ( typeof obj === "undefined" ) { + type = "undefined"; + } else if ( QUnit.is( "regexp", obj ) ) { + type = "regexp"; + } else if ( QUnit.is( "date", obj ) ) { + type = "date"; + } else if ( QUnit.is( "function", obj ) ) { + type = "function"; + } else if ( obj.setInterval !== undefined && + obj.document !== undefined && + obj.nodeType === undefined ) { + type = "window"; + } else if ( obj.nodeType === 9 ) { + type = "document"; + } else if ( obj.nodeType ) { + type = "node"; + } else if ( + + // native arrays + toString.call( obj ) === "[object Array]" || + + // NodeList objects + ( typeof obj.length === "number" && obj.item !== undefined && + ( obj.length ? obj.item( 0 ) === obj[ 0 ] : ( obj.item( 0 ) === null && + obj[ 0 ] === undefined ) ) ) + ) { + type = "array"; + } else if ( obj.constructor === Error.prototype.constructor ) { + type = "error"; + } else { + type = typeof obj; + } + return type; + }, + separator: function() { + return this.multiline ? this.HTML ? "
" : "\n" : this.HTML ? " " : " "; + }, + // extra can be a number, shortcut for increasing-calling-decreasing + indent: function( extra ) { + if ( !this.multiline ) { + return ""; + } + var chr = this.indentChar; + if ( this.HTML ) { + chr = chr.replace( /\t/g, " " ).replace( / /g, " " ); + } + return new Array( this.depth + ( extra || 0 ) ).join( chr ); + }, + up: function( a ) { + this.depth += a || 1; + }, + down: function( a ) { + this.depth -= a || 1; + }, + setParser: function( name, parser ) { + this.parsers[ name ] = parser; + }, + // The next 3 are exposed so you can use them + quote: quote, + literal: literal, + join: join, + // + depth: 1, + maxDepth: 5, + + // This is the list of parsers, to modify them, use dump.setParser + parsers: { + window: "[Window]", + document: "[Document]", + error: function( error ) { + return "Error(\"" + error.message + "\")"; + }, + unknown: "[Unknown]", + "null": "null", + "undefined": "undefined", + "function": function( fn ) { + var ret = "function", + + // functions never have name in IE + name = "name" in fn ? fn.name : ( reName.exec( fn ) || [] )[ 1 ]; + + if ( name ) { + ret += " " + name; + } + ret += "( "; + + ret = [ ret, dump.parse( fn, "functionArgs" ), "){" ].join( "" ); + return join( ret, dump.parse( fn, "functionCode" ), "}" ); + }, + array: array, + nodelist: array, + "arguments": array, + object: function( map, stack ) { + var keys, key, val, i, nonEnumerableProperties, + ret = []; + + if ( dump.maxDepth && dump.depth > dump.maxDepth ) { + return "[object Object]"; + } + + dump.up(); + keys = []; + for ( key in map ) { + keys.push( key ); + } + + // Some properties are not always enumerable on Error objects. + nonEnumerableProperties = [ "message", "name" ]; + for ( i in nonEnumerableProperties ) { + key = nonEnumerableProperties[ i ]; + if ( key in map && !( key in keys ) ) { + keys.push( key ); + } + } + keys.sort(); + for ( i = 0; i < keys.length; i++ ) { + key = keys[ i ]; + val = map[ key ]; + ret.push( dump.parse( key, "key" ) + ": " + + dump.parse( val, undefined, stack ) ); + } + dump.down(); + return join( "{", ret, "}" ); + }, + node: function( node ) { + var len, i, val, + open = dump.HTML ? "<" : "<", + close = dump.HTML ? ">" : ">", + tag = node.nodeName.toLowerCase(), + ret = open + tag, + attrs = node.attributes; + + if ( attrs ) { + for ( i = 0, len = attrs.length; i < len; i++ ) { + val = attrs[ i ].nodeValue; + + // IE6 includes all attributes in .attributes, even ones not explicitly + // set. Those have values like undefined, null, 0, false, "" or + // "inherit". + if ( val && val !== "inherit" ) { + ret += " " + attrs[ i ].nodeName + "=" + + dump.parse( val, "attribute" ); + } + } + } + ret += close; + + // Show content of TextNode or CDATASection + if ( node.nodeType === 3 || node.nodeType === 4 ) { + ret += node.nodeValue; + } + + return ret + open + "/" + tag + close; + }, + + // function calls it internally, it's the arguments part of the function + functionArgs: function( fn ) { + var args, + l = fn.length; + + if ( !l ) { + return ""; + } + + args = new Array( l ); + while ( l-- ) { + + // 97 is 'a' + args[ l ] = String.fromCharCode( 97 + l ); + } + return " " + args.join( ", " ) + " "; + }, + // object calls it internally, the key part of an item in a map + key: quote, + // function calls it internally, it's the content of the function + functionCode: "[code]", + // node calls it internally, it's an html attribute value + attribute: quote, + string: quote, + date: quote, + regexp: literal, + number: literal, + "boolean": literal + }, + // if true, entities are escaped ( <, >, \t, space and \n ) + HTML: false, + // indentation unit + indentChar: " ", + // if true, items in a collection, are separated by a \n, else just a space. + multiline: true + }; + + return dump; +}()); + +// back compat +QUnit.jsDump = QUnit.dump; + +// For browser, export only select globals +if ( typeof window !== "undefined" ) { + + // Deprecated + // Extend assert methods to QUnit and Global scope through Backwards compatibility + (function() { + var i, + assertions = Assert.prototype; + + function applyCurrent( current ) { + return function() { + var assert = new Assert( QUnit.config.current ); + current.apply( assert, arguments ); + }; + } + + for ( i in assertions ) { + QUnit[ i ] = applyCurrent( assertions[ i ] ); + } + })(); + + (function() { + var i, l, + keys = [ + "test", + "module", + "expect", + "asyncTest", + "start", + "stop", + "ok", + "equal", + "notEqual", + "propEqual", + "notPropEqual", + "deepEqual", + "notDeepEqual", + "strictEqual", + "notStrictEqual", + "throws" + ]; + + for ( i = 0, l = keys.length; i < l; i++ ) { + window[ keys[ i ] ] = QUnit[ keys[ i ] ]; + } + })(); + + window.QUnit = QUnit; +} + +// For nodejs +if ( typeof module !== "undefined" && module.exports ) { + module.exports = QUnit; +} + +// For CommonJS with exports, but without module.exports, like Rhino +if ( typeof exports !== "undefined" ) { + exports.QUnit = QUnit; +} + +// Get a reference to the global object, like window in browsers +}( (function() { + return this; +})() )); + +/*istanbul ignore next */ +// jscs:disable maximumLineLength +/* + * Javascript Diff Algorithm + * By John Resig (http://ejohn.org/) + * Modified by Chu Alan "sprite" + * + * Released under the MIT license. + * + * More Info: + * http://ejohn.org/projects/javascript-diff-algorithm/ + * + * Usage: QUnit.diff(expected, actual) + * + * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the quick brown fox jumped jumps over" + */ +QUnit.diff = (function() { + var hasOwn = Object.prototype.hasOwnProperty; + + /*jshint eqeqeq:false, eqnull:true */ + function diff( o, n ) { + var i, + ns = {}, + os = {}; + + for ( i = 0; i < n.length; i++ ) { + if ( !hasOwn.call( ns, n[ i ] ) ) { + ns[ n[ i ] ] = { + rows: [], + o: null + }; + } + ns[ n[ i ] ].rows.push( i ); + } + + for ( i = 0; i < o.length; i++ ) { + if ( !hasOwn.call( os, o[ i ] ) ) { + os[ o[ i ] ] = { + rows: [], + n: null + }; + } + os[ o[ i ] ].rows.push( i ); + } + + for ( i in ns ) { + if ( hasOwn.call( ns, i ) ) { + if ( ns[ i ].rows.length === 1 && hasOwn.call( os, i ) && os[ i ].rows.length === 1 ) { + n[ ns[ i ].rows[ 0 ] ] = { + text: n[ ns[ i ].rows[ 0 ] ], + row: os[ i ].rows[ 0 ] + }; + o[ os[ i ].rows[ 0 ] ] = { + text: o[ os[ i ].rows[ 0 ] ], + row: ns[ i ].rows[ 0 ] + }; + } + } + } + + for ( i = 0; i < n.length - 1; i++ ) { + if ( n[ i ].text != null && n[ i + 1 ].text == null && n[ i ].row + 1 < o.length && o[ n[ i ].row + 1 ].text == null && + n[ i + 1 ] == o[ n[ i ].row + 1 ] ) { + + n[ i + 1 ] = { + text: n[ i + 1 ], + row: n[ i ].row + 1 + }; + o[ n[ i ].row + 1 ] = { + text: o[ n[ i ].row + 1 ], + row: i + 1 + }; + } + } + + for ( i = n.length - 1; i > 0; i-- ) { + if ( n[ i ].text != null && n[ i - 1 ].text == null && n[ i ].row > 0 && o[ n[ i ].row - 1 ].text == null && + n[ i - 1 ] == o[ n[ i ].row - 1 ] ) { + + n[ i - 1 ] = { + text: n[ i - 1 ], + row: n[ i ].row - 1 + }; + o[ n[ i ].row - 1 ] = { + text: o[ n[ i ].row - 1 ], + row: i - 1 + }; + } + } + + return { + o: o, + n: n + }; + } + + return function( o, n ) { + o = o.replace( /\s+$/, "" ); + n = n.replace( /\s+$/, "" ); + + var i, pre, + str = "", + out = diff( o === "" ? [] : o.split( /\s+/ ), n === "" ? [] : n.split( /\s+/ ) ), + oSpace = o.match( /\s+/g ), + nSpace = n.match( /\s+/g ); + + if ( oSpace == null ) { + oSpace = [ " " ]; + } else { + oSpace.push( " " ); + } + + if ( nSpace == null ) { + nSpace = [ " " ]; + } else { + nSpace.push( " " ); + } + + if ( out.n.length === 0 ) { + for ( i = 0; i < out.o.length; i++ ) { + str += "" + out.o[ i ] + oSpace[ i ] + ""; + } + } else { + if ( out.n[ 0 ].text == null ) { + for ( n = 0; n < out.o.length && out.o[ n ].text == null; n++ ) { + str += "" + out.o[ n ] + oSpace[ n ] + ""; + } + } + + for ( i = 0; i < out.n.length; i++ ) { + if ( out.n[ i ].text == null ) { + str += "" + out.n[ i ] + nSpace[ i ] + ""; + } else { + + // `pre` initialized at top of scope + pre = ""; + + for ( n = out.n[ i ].row + 1; n < out.o.length && out.o[ n ].text == null; n++ ) { + pre += "" + out.o[ n ] + oSpace[ n ] + ""; + } + str += " " + out.n[ i ].text + nSpace[ i ] + pre; + } + } + } + + return str; + }; +}()); +// jscs:enable + +(function() { + +// Deprecated QUnit.init - Ref #530 +// Re-initialize the configuration options +QUnit.init = function() { + var tests, banner, result, qunit, + config = QUnit.config; + + config.stats = { all: 0, bad: 0 }; + config.moduleStats = { all: 0, bad: 0 }; + config.started = 0; + config.updateRate = 1000; + config.blocking = false; + config.autostart = true; + config.autorun = false; + config.filter = ""; + config.queue = []; + + // Return on non-browser environments + // This is necessary to not break on node tests + if ( typeof window === "undefined" ) { + return; + } + + qunit = id( "qunit" ); + if ( qunit ) { + qunit.innerHTML = + "

" + escapeText( document.title ) + "

" + + "

" + + "
" + + "

" + + "
    "; + } + + tests = id( "qunit-tests" ); + banner = id( "qunit-banner" ); + result = id( "qunit-testresult" ); + + if ( tests ) { + tests.innerHTML = ""; + } + + if ( banner ) { + banner.className = ""; + } + + if ( result ) { + result.parentNode.removeChild( result ); + } + + if ( tests ) { + result = document.createElement( "p" ); + result.id = "qunit-testresult"; + result.className = "result"; + tests.parentNode.insertBefore( result, tests ); + result.innerHTML = "Running...
     "; + } +}; + +// Don't load the HTML Reporter on non-Browser environments +if ( typeof window === "undefined" ) { + return; +} + +var config = QUnit.config, + hasOwn = Object.prototype.hasOwnProperty, + defined = { + document: window.document !== undefined, + sessionStorage: (function() { + var x = "qunit-test-string"; + try { + sessionStorage.setItem( x, x ); + sessionStorage.removeItem( x ); + return true; + } catch ( e ) { + return false; + } + }()) + }, + modulesList = []; + +/** +* Escape text for attribute or text content. +*/ +function escapeText( s ) { + if ( !s ) { + return ""; + } + s = s + ""; + + // Both single quotes and double quotes (for attributes) + return s.replace( /['"<>&]/g, function( s ) { + switch ( s ) { + case "'": + return "'"; + case "\"": + return """; + case "<": + return "<"; + case ">": + return ">"; + case "&": + return "&"; + } + }); +} + +/** + * @param {HTMLElement} elem + * @param {string} type + * @param {Function} fn + */ +function addEvent( elem, type, fn ) { + if ( elem.addEventListener ) { + + // Standards-based browsers + elem.addEventListener( type, fn, false ); + } else if ( elem.attachEvent ) { + + // support: IE <9 + elem.attachEvent( "on" + type, fn ); + } +} + +/** + * @param {Array|NodeList} elems + * @param {string} type + * @param {Function} fn + */ +function addEvents( elems, type, fn ) { + var i = elems.length; + while ( i-- ) { + addEvent( elems[ i ], type, fn ); + } +} + +function hasClass( elem, name ) { + return ( " " + elem.className + " " ).indexOf( " " + name + " " ) >= 0; +} + +function addClass( elem, name ) { + if ( !hasClass( elem, name ) ) { + elem.className += ( elem.className ? " " : "" ) + name; + } +} + +function toggleClass( elem, name ) { + if ( hasClass( elem, name ) ) { + removeClass( elem, name ); + } else { + addClass( elem, name ); + } +} + +function removeClass( elem, name ) { + var set = " " + elem.className + " "; + + // Class name may appear multiple times + while ( set.indexOf( " " + name + " " ) >= 0 ) { + set = set.replace( " " + name + " ", " " ); + } + + // trim for prettiness + elem.className = typeof set.trim === "function" ? set.trim() : set.replace( /^\s+|\s+$/g, "" ); +} + +function id( name ) { + return defined.document && document.getElementById && document.getElementById( name ); +} + +function getUrlConfigHtml() { + var i, j, val, + escaped, escapedTooltip, + selection = false, + len = config.urlConfig.length, + urlConfigHtml = ""; + + for ( i = 0; i < len; i++ ) { + val = config.urlConfig[ i ]; + if ( typeof val === "string" ) { + val = { + id: val, + label: val + }; + } + + escaped = escapeText( val.id ); + escapedTooltip = escapeText( val.tooltip ); + + config[ val.id ] = QUnit.urlParams[ val.id ]; + if ( !val.value || typeof val.value === "string" ) { + urlConfigHtml += ""; + } else { + urlConfigHtml += ""; + } + } + + return urlConfigHtml; +} + +// Handle "click" events on toolbar checkboxes and "change" for select menus. +// Updates the URL with the new state of `config.urlConfig` values. +function toolbarChanged() { + var updatedUrl, value, + field = this, + params = {}; + + // Detect if field is a select menu or a checkbox + if ( "selectedIndex" in field ) { + value = field.options[ field.selectedIndex ].value || undefined; + } else { + value = field.checked ? ( field.defaultValue || true ) : undefined; + } + + params[ field.name ] = value; + updatedUrl = QUnit.url( params ); + + if ( "hidepassed" === field.name && "replaceState" in window.history ) { + config[ field.name ] = value || false; + if ( value ) { + addClass( id( "qunit-tests" ), "hidepass" ); + } else { + removeClass( id( "qunit-tests" ), "hidepass" ); + } + + // It is not necessary to refresh the whole page + window.history.replaceState( null, "", updatedUrl ); + } else { + window.location = updatedUrl; + } +} + +function toolbarUrlConfigContainer() { + var urlConfigContainer = document.createElement( "span" ); + + urlConfigContainer.innerHTML = getUrlConfigHtml(); + + // For oldIE support: + // * Add handlers to the individual elements instead of the container + // * Use "click" instead of "change" for checkboxes + addEvents( urlConfigContainer.getElementsByTagName( "input" ), "click", toolbarChanged ); + addEvents( urlConfigContainer.getElementsByTagName( "select" ), "change", toolbarChanged ); + + return urlConfigContainer; +} + +function toolbarModuleFilterHtml() { + var i, + moduleFilterHtml = ""; + + if ( !modulesList.length ) { + return false; + } + + modulesList.sort(function( a, b ) { + return a.localeCompare( b ); + }); + + moduleFilterHtml += "" + + ""; + + return moduleFilterHtml; +} + +function toolbarModuleFilter() { + var toolbar = id( "qunit-testrunner-toolbar" ), + moduleFilter = document.createElement( "span" ), + moduleFilterHtml = toolbarModuleFilterHtml(); + + if ( !moduleFilterHtml ) { + return false; + } + + moduleFilter.setAttribute( "id", "qunit-modulefilter-container" ); + moduleFilter.innerHTML = moduleFilterHtml; + + addEvent( moduleFilter.lastChild, "change", function() { + var selectBox = moduleFilter.getElementsByTagName( "select" )[ 0 ], + selection = decodeURIComponent( selectBox.options[ selectBox.selectedIndex ].value ); + + window.location = QUnit.url({ + module: ( selection === "" ) ? undefined : selection, + + // Remove any existing filters + filter: undefined, + testId: undefined + }); + }); + + toolbar.appendChild( moduleFilter ); +} + +function appendToolbar() { + var toolbar = id( "qunit-testrunner-toolbar" ); + + if ( toolbar ) { + toolbar.appendChild( toolbarUrlConfigContainer() ); + } +} + +function appendBanner() { + var banner = id( "qunit-banner" ); + + if ( banner ) { + banner.className = ""; + banner.innerHTML = "" + banner.innerHTML + " "; + } +} + +function appendTestResults() { + var tests = id( "qunit-tests" ), + result = id( "qunit-testresult" ); + + if ( result ) { + result.parentNode.removeChild( result ); + } + + if ( tests ) { + tests.innerHTML = ""; + result = document.createElement( "p" ); + result.id = "qunit-testresult"; + result.className = "result"; + tests.parentNode.insertBefore( result, tests ); + result.innerHTML = "Running...
     "; + } +} + +function storeFixture() { + var fixture = id( "qunit-fixture" ); + if ( fixture ) { + config.fixture = fixture.innerHTML; + } +} + +function appendUserAgent() { + var userAgent = id( "qunit-userAgent" ); + if ( userAgent ) { + userAgent.innerHTML = navigator.userAgent; + } +} + +function appendTestsList( modules ) { + var i, l, x, z, test, moduleObj; + + for ( i = 0, l = modules.length; i < l; i++ ) { + moduleObj = modules[ i ]; + + if ( moduleObj.name ) { + modulesList.push( moduleObj.name ); + } + + for ( x = 0, z = moduleObj.tests.length; x < z; x++ ) { + test = moduleObj.tests[ x ]; + + appendTest( test.name, test.testId, moduleObj.name ); + } + } +} + +function appendTest( name, testId, moduleName ) { + var title, rerunTrigger, testBlock, assertList, + tests = id( "qunit-tests" ); + + if ( !tests ) { + return; + } + + title = document.createElement( "strong" ); + title.innerHTML = getNameHtml( name, moduleName ); + + rerunTrigger = document.createElement( "a" ); + rerunTrigger.innerHTML = "Rerun"; + rerunTrigger.href = QUnit.url({ testId: testId }); + + testBlock = document.createElement( "li" ); + testBlock.appendChild( title ); + testBlock.appendChild( rerunTrigger ); + testBlock.id = "qunit-test-output-" + testId; + + assertList = document.createElement( "ol" ); + assertList.className = "qunit-assert-list"; + + testBlock.appendChild( assertList ); + + tests.appendChild( testBlock ); +} + +// HTML Reporter initialization and load +QUnit.begin(function( details ) { + var qunit = id( "qunit" ); + + // Fixture is the only one necessary to run without the #qunit element + storeFixture(); + + if ( !qunit ) { + return; + } + + qunit.innerHTML = + "

    " + escapeText( document.title ) + "

    " + + "

    " + + "
    " + + "

    " + + "
      "; + + appendBanner(); + appendTestResults(); + appendUserAgent(); + appendToolbar(); + appendTestsList( details.modules ); + toolbarModuleFilter(); + + if ( config.hidepassed ) { + addClass( qunit.lastChild, "hidepass" ); + } +}); + +QUnit.done(function( details ) { + var i, key, + banner = id( "qunit-banner" ), + tests = id( "qunit-tests" ), + html = [ + "Tests completed in ", + details.runtime, + " milliseconds.
      ", + "", + details.passed, + " assertions of ", + details.total, + " passed, ", + details.failed, + " failed." + ].join( "" ); + + if ( banner ) { + banner.className = details.failed ? "qunit-fail" : "qunit-pass"; + } + + if ( tests ) { + id( "qunit-testresult" ).innerHTML = html; + } + + if ( config.altertitle && defined.document && document.title ) { + + // show ✖ for good, ✔ for bad suite result in title + // use escape sequences in case file gets loaded with non-utf-8-charset + document.title = [ + ( details.failed ? "\u2716" : "\u2714" ), + document.title.replace( /^[\u2714\u2716] /i, "" ) + ].join( " " ); + } + + // clear own sessionStorage items if all tests passed + if ( config.reorder && defined.sessionStorage && details.failed === 0 ) { + for ( i = 0; i < sessionStorage.length; i++ ) { + key = sessionStorage.key( i++ ); + if ( key.indexOf( "qunit-test-" ) === 0 ) { + sessionStorage.removeItem( key ); + } + } + } + + // scroll back to top to show results + if ( config.scrolltop && window.scrollTo ) { + window.scrollTo( 0, 0 ); + } +}); + +function getNameHtml( name, module ) { + var nameHtml = ""; + + if ( module ) { + nameHtml = "" + escapeText( module ) + ": "; + } + + nameHtml += "" + escapeText( name ) + ""; + + return nameHtml; +} + +QUnit.testStart(function( details ) { + var running, testBlock; + + testBlock = id( "qunit-test-output-" + details.testId ); + if ( testBlock ) { + testBlock.className = "running"; + } else { + + // Report later registered tests + appendTest( details.name, details.testId, details.module ); + } + + running = id( "qunit-testresult" ); + if ( running ) { + running.innerHTML = "Running:
      " + getNameHtml( details.name, details.module ); + } + +}); + +QUnit.log(function( details ) { + var assertList, assertLi, + message, expected, actual, + testItem = id( "qunit-test-output-" + details.testId ); + + if ( !testItem ) { + return; + } + + message = escapeText( details.message ) || ( details.result ? "okay" : "failed" ); + message = "" + message + ""; + message += "@ " + details.runtime + " ms"; + + // pushFailure doesn't provide details.expected + // when it calls, it's implicit to also not show expected and diff stuff + // Also, we need to check details.expected existence, as it can exist and be undefined + if ( !details.result && hasOwn.call( details, "expected" ) ) { + expected = escapeText( QUnit.dump.parse( details.expected ) ); + actual = escapeText( QUnit.dump.parse( details.actual ) ); + message += ""; + + if ( actual !== expected ) { + message += "" + + ""; + } + + if ( details.source ) { + message += ""; + } + + message += "
      Expected:
      " +
      +			expected +
      +			"
      Result:
      " +
      +				actual + "
      Diff:
      " +
      +				QUnit.diff( expected, actual ) + "
      Source:
      " +
      +				escapeText( details.source ) + "
      "; + + // this occours when pushFailure is set and we have an extracted stack trace + } else if ( !details.result && details.source ) { + message += "" + + "" + + "
      Source:
      " +
      +			escapeText( details.source ) + "
      "; + } + + assertList = testItem.getElementsByTagName( "ol" )[ 0 ]; + + assertLi = document.createElement( "li" ); + assertLi.className = details.result ? "pass" : "fail"; + assertLi.innerHTML = message; + assertList.appendChild( assertLi ); +}); + +QUnit.testDone(function( details ) { + var testTitle, time, testItem, assertList, + good, bad, testCounts, skipped, + tests = id( "qunit-tests" ); + + if ( !tests ) { + return; + } + + testItem = id( "qunit-test-output-" + details.testId ); + + assertList = testItem.getElementsByTagName( "ol" )[ 0 ]; + + good = details.passed; + bad = details.failed; + + // store result when possible + if ( config.reorder && defined.sessionStorage ) { + if ( bad ) { + sessionStorage.setItem( "qunit-test-" + details.module + "-" + details.name, bad ); + } else { + sessionStorage.removeItem( "qunit-test-" + details.module + "-" + details.name ); + } + } + + if ( bad === 0 ) { + addClass( assertList, "qunit-collapsed" ); + } + + // testItem.firstChild is the test name + testTitle = testItem.firstChild; + + testCounts = bad ? + "" + bad + ", " + "" + good + ", " : + ""; + + testTitle.innerHTML += " (" + testCounts + + details.assertions.length + ")"; + + if ( details.skipped ) { + addClass( testItem, "skipped" ); + skipped = document.createElement( "em" ); + skipped.className = "qunit-skipped-label"; + skipped.innerHTML = "skipped"; + testItem.insertBefore( skipped, testTitle ); + } else { + addEvent( testTitle, "click", function() { + toggleClass( assertList, "qunit-collapsed" ); + }); + + testItem.className = bad ? "fail" : "pass"; + + time = document.createElement( "span" ); + time.className = "runtime"; + time.innerHTML = details.runtime + " ms"; + testItem.insertBefore( time, assertList ); + } +}); + +if ( !defined.document || document.readyState === "complete" ) { + config.pageLoaded = true; + config.autorun = true; +} + +if ( defined.document ) { + addEvent( window, "load", QUnit.load ); +} + +})(); diff --git a/latest/ruby(ff)-han.css b/latest/ruby(ff)-han.css index aba6eb5f..caac0257 100644 --- a/latest/ruby(ff)-han.css +++ b/latest/ruby(ff)-han.css @@ -1 +1 @@ -/*! 漢字標準格式 v3.0.2 | MIT License | css.hanzi.co *//*! Han: CSS typography framework optimised for Hanzi *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{line-height:1.3;-webkit-font-smoothing:subpixel-antialiased}ol,ul{padding-left:2em}figure,blockquote{margin-left:2em;margin-right:2em}address{font-style:inherit}pre{white-space:pre;word-wrap:normal}a{text-decoration:inherit}em:lang(zh),em:lang(ja){-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;font-style:inherit;border-bottom:2px dotted;padding-bottom:0.05em;border-bottom-width:-webkit-calc( 0px );padding-bottom:-webkit-calc( 0px )}em:lang(ja){-moz-text-emphasis:filled sesame;-webkit-text-emphasis:filled sesame;text-emphasis:filled sesame;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}strong,dfn:lang(zh),dfn:lang(ja),b{font-weight:inherit}strong,dfn:lang(zh),dfn:lang(ja),b{font-weight:bolder}dfn:lang(zh),dfn:lang(ja){font-style:inherit}cite:lang(zh),cite:lang(ja){font-style:inherit}q{quotes:"“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’"}q:lang(zh){quotes:"「" "」" "『" "』" "「" "」" "『" "』" "「" "」" "『" "』"}q:lang(zh-CN),q:lang(en){quotes:"“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’"}q:lang(en-GB){quotes:"‘" "’" "“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”"}q:before{content:open-quote}q:after{content:close-quote}q:lang(ja):before,q:lang(ja):after{content:none}code,kbd,samp,pre{font-family:monospace,monospace,sans-serif}i:lang(zh),i:lang(ja),var:lang(zh),var:lang(ja){font-family:cursive,serif;font-style:inherit}u+u,u+ins,ins+u,ins+ins,s+s,s+del,del+s,del+del,.hyu-js-rendered u.adjacent,.hyu-js-rendered ins.adjacent,.hyu-js-rendered s+s.adjacent,.hyu-js-rendered s+del.adjacent,.hyu-js-rendered del+s.adjacent,.hyu-js-rendered del+del.adjacent{margin-left:0.125em}u,ins{padding-bottom:0.05em;border-bottom:1px solid;text-decoration:none}ruby *:before,ruby *:after{line-height:normal}ruby>rt:not(:empty):before{content:"("}ruby>rt:not(:empty):after{content:")"}ruby>rb+rtc:before{content:"("}ruby>rtc:after{content:","}ruby>rtc:last-of-type:after{content:")"}ruby>rt:before,ruby>rt:after{display:inline-block;overflow:hidden;vertical-align:middle;height:0;width:0}ruby>rt:not(:empty):before,ruby>rt:not(:empty):after{height:-moz-calc( 1.3em );width:-moz-calc( 1em )}.hyu-js-rendered u+u,.hyu-js-rendered u+ins,.hyu-js-rendered ins+u,.hyu-js-rendered ins+ins,.hyu-js-rendered s+s,.hyu-js-rendered s+del,.hyu-js-rendered del+s,.hyu-js-rendered del+del{margin-left:auto}.hyu-js-rendered em:lang(zh),.hyu-js-rendered em:lang(ja){padding-bottom:auto;border-bottom-width:0}.no-textemphasis em:lang(zh),.no-textemphasis em:lang(ja){line-height:2}.no-textemphasis em:lang(zh) char,.no-textemphasis em:lang(ja) char{position:relative;font-style:inherit}.no-textemphasis em:lang(zh) char:after,.no-textemphasis em:lang(ja) char:after{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:normal;line-height:normal;text-decoration:none;text-indent:0;-moz-transform:scale(0.5);-ms-transform:scale(0.5);-webkit-transform:scale(0.5);transform:scale(0.5);position:absolute;left:50%;top:0;margin-left:-250%;overflow:hidden;display:inline-block;height:1em;width:500%;line-height:1;text-align:center;text-indent:0;font-family:Georgia,"Times New Roman",Arial,!important}em:lang(zh) char.punct,em:lang(ja) char.punct,em:lang(zh) char.biaodian,em:lang(ja) char.biaodian{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none}.no-textemphasis em:lang(zh) char.punct:after,.no-textemphasis em:lang(ja) char.punct:after,.no-textemphasis em:lang(zh) char.biaodian:after,.no-textemphasis em:lang(ja) char.biaodian:after{content:none !important}.no-textemphasis em:lang(zh) char:after{margin-top:1em;content:"●"}.no-textemphasis em:lang(ja) char:after{margin-top:-0.7em;content:"﹅"}hruby{display:inline;line-height:2}hruby rp{display:none}hruby ru[annotation]>rt{display:inline-block;height:0;width:0;font:0/0 hidden-text}hruby ru{position:relative;display:inline-block;text-indent:0}hruby ru:before,hruby zhuyin{-moz-transform:scale(0.55);-ms-transform:scale(0.55);-webkit-transform:scale(0.55);transform:scale(0.55);-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:normal;line-height:normal;text-decoration:none;text-indent:0;position:absolute;display:inline-block}hruby ru[annotation]{text-align:center}hruby ru[annotation]:before{left:-265%;top:-0.5em;vertical-align:top;height:1em;width:600%;content:attr(annotation);line-height:1;text-align:center;text-indent:0}hruby[rightangle] ru[annotation]:before{left:-250%}hruby ru[zhuyin]{display:inline-block;position:relative;width:1.8em;text-align:left}hruby ru[zhuyin] zhuyin{right:0.2em;top:0;height:2.7em;width:0.8em;line-height:0.9;white-space:pre-wrap;word-break:break-all}hruby ru[zhuyin] diao{position:absolute;right:-0.9em;top:0;display:inline-block;width:1em}hruby ru[zhuyin][length='0'],hruby ru[zhuyin]:empty{width:auto}hruby ru[zhuyin][length='0'] zhuyin,hruby ru[zhuyin]:empty zhuyin{display:none}hruby ru[zhuyin][length='1'] zhuyin{margin-top:0.125em}hruby ru[zhuyin][length='1'] diao{margin-top:-0.35em}hruby ru[zhuyin][length='2'] zhuyin{margin-top:-0.175em}hruby ru[zhuyin][length='2'] diao{margin-top:0.5em}hruby ru[zhuyin][length='3'] zhuyin{margin-top:-0.45em}hruby ru[zhuyin][length='3'] diao{margin-top:1.3em}hruby ru[zhuyin][diao='˙'] diao{right:-0.35em}hruby ru[zhuyin][diao='˙'][length='1'] diao{margin-top:-0.5em}hruby ru[zhuyin][diao='˙'][length='2'] diao{margin-top:-0.3em}hruby ru[zhuyin][diao='˙'][length='3'] diao{margin-top:-0.25em}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1.2);-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2);margin-right:-0.25em}hruby ru[zhuyin][diao^='ㆴ'] diao,hruby ru[zhuyin][diao^='ㆵ'] diao,hruby ru[zhuyin][diao^='ㆶ'] diao,hruby ru[zhuyin][diao^='ㆷ'] diao,hruby ru[zhuyin][diao='󳆴'] diao,hruby ru[zhuyin][diao='󳆵'] diao,hruby ru[zhuyin][diao='󳆶'] diao,hruby ru[zhuyin][diao='󳆷'] diao{top:20%;margin-right:-0.3em}hruby ru[annotation]:before,hruby[rightangle] ru[annotation][order='1']:before{top:-0.5em}hruby ru[order='1']:before,hruby[rightangle] ru[annotation][order='0']:before{bottom:-0.4em;top:auto}hruby[rightangle] ru[annotation]:before{margin-left:-0.4em}@media screen and (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 192dpi){hruby yin{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);display:inline-block}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}hruby ru[zhuyin][diao='˙'] diao{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);top:0.125em}}jinze{display:inline-block;text-indent:0}@font-face{font-family:'Han Heiti';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Lantinghei SC"),local("Heiti SC"),local("Heiti TC"),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Droid Sans Fallback")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';src:local(YuGothic),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro")}@font-face{font-family:'Han Heiti CNS';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Heiti TC"),local("Microsoft Jhenghei"),local("Heiti SC"),local("Lantinghei SC"),local("Microsoft Yahei"),local("Droid Sans Fallback")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';src:local(YuGothic),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro")}@font-face{font-family:'Han Heiti GB';src:local("Hiragino Sans GB"),local("Lantinghei SC"),local("Heiti SC"),local("Microsoft Yahei"),local("Droid Sans Fallback")}@font-face{font-family:'Han Heiti';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Lantinghei SC Demibold"),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local("Heiti SC Medium"),local("Heiti TC Medium"),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local("Microsoft YaHei Bold"),local("Microsoft Jhenghei Bold"),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';font-weight:600;src:local("YuGothic Bold"),local("Hiragino Kaku Gothic ProN W6"),local("Hiragino Kaku Gothic Pro W6"),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local("Lantinghei SC Demibold"),local("Microsoft YaHei Bold"),local("Heiti SC Medium"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';font-weight:600;src:local("YuGothic Bold"),local(YuGo-Bold),local("Hiragino Kaku Gothic ProN W6"),local("Hiragino Kaku Gothic Pro W6"),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti GB';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei SC Demibold"),local("Microsoft YaHei Bold"),local("Heiti SC Medium"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{font-family:'Han Heiti';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Lantinghei SC"),local("Heiti SC"),local("Heiti TC"),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:'Han Heiti';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Lantinghei SC Demibold"),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local("Heiti SC Medium"),local("Heiti TC Medium"),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local("Microsoft YaHei Bold"),local("Microsoft Jhenghei Bold"),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold);unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Heiti TC"),local("Microsoft Jhenghei"),local("Heiti SC"),local("Lantinghei SC"),local("Microsoft Yahei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local("Lantinghei SC Demibold"),local("Heiti SC Medium"),local("Microsoft YaHei Bold"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold);unicode-range:U+270C}@font-face{font-family:'Han Heiti GB';src:local("Hiragino Sans GB"),local("Lantinghei SC"),local("Heiti SC"),local("Microsoft Yahei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:'Han Songti';src:local("Songti SC"),local("Songti TC"),local(STSong),local("Lisong Pro"),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';src:local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho")}@font-face{font-family:'Han Songti CNS';src:local("Songti TC"),local("Lisong Pro"),local("Songti SC"),local(STSong),local(PMingLiU),local(SimSun)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';src:local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro")}@font-face{font-family:'Han Songti GB';src:local("Songti SC"),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:'Han Songti';font-weight:600;src:local("STSongti SC Bold"),local("STSongti TC Bold"),local(STSongti-SC-Bold),local(STSongti-TC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';font-weight:600;src:local("YuMincho Demibold"),local("Hiragino Mincho ProN W6"),local("Hiragino Mincho Pro W6"),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';font-weight:600;src:local("YuMincho Demibold"),local("Hiragino Mincho ProN W6"),local("Hiragino Mincho Pro W6"),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti GB';font-weight:600;src:local("STSongti SC Bold"),local(STSongti-SC-Bold)}@font-face{font-family:'Han Songti';src:local("Songti SC"),local("Songti TC"),local(STSongti),local("Lisong Pro"),local("MS Mincho"),local(SimSun),local(PMingLiU);unicode-range:U+270C}@font-face{font-family:'Han Songti';font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';src:local("Songti TC"),local("Lisong Pro"),local("Songti SC"),local(STSong),local("MS Mincho"),local(PMingLiU),local(SimSun);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti GB';src:local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+270C}@font-face{font-family:cursive;src:local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti';src:local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti CNS';src:local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti GB';src:local("Kaiti SC"),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti';font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti GB';font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong CNS';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong GB';src:local(STFangsong),local(FangSong)}@font-face{font-family:'Biaodian Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Serif';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Arial Unicode MS"),local("MS Gothic");unicode-range:U+2014}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho"),local("Microsoft Yahei");unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local("MS Mincho"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic");unicode-range:U+2026}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Lisong Pro"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Sans';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Serif';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans GB';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif GB';src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU),local("MS Gothic");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(STSongti-TC-Regular),local("Lisong Pro"),local("Heiti TC"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Songti SC"),local(STSongti),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans CNS';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif CNS';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans GB';src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif GB';src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Basic';src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:'Biaodian Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Latin Italic Serif';src:local("Georgia Italic"),local("Times New Roman Italic"),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Serif';font-weight:700;src:local("Georgia Bold Italic"),local("Times New Roman Bold Italic"),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Sans';src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:'Latin Italic Sans';font-weight:700;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Sans';src:local(Skia),local("Neutraface 2 Text"),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Serif';src:local(Georgia),local("Hoefler Text"),local("Big Caslon")}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Italic Serif';src:local("Georgia Italic"),local("Hoefler Text Italic"),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Sans';src:local("Helvetica Neue"),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';font-weight:bold;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Serif';src:local(Palatino),local("Palatino Linotype"),local("Times New Roman")}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';src:local("Palatino Italic"),local("Palatino Italic Linotype"),local("Times New Roman Italic"),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';font-weight:bold;src:local("Palatino Bold Italic"),local("Palatino Bold Italic Linotype"),local("Times New Roman Bold Italic"),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{font-family:'Numeral TF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';font-weight:bold;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';font-weight:bold;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Kaiti'}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Heiti';src:local("Hiragino Sans GB"),local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype")}@font-face{font-family:'Zhuyin Heiti';src:local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");unicode-range:U+3127}@font-face{src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");font-family:'Zhuyin Heiti';unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff?v3.0.2) format("woff"),url(./font/han.otf?v3.0.2) format("opentype");font-family:'Romanization Sans';unicode-range:U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}html:lang(zh-Latn),html:lang(ja-Latn),html:not(:lang(zh)):not(:lang(ja)),html *:lang(zh-Latn),html *:lang(ja-Latn),html *:not(:lang(zh)):not(:lang(ja)),article strong:lang(zh-Latn),article strong:lang(ja-Latn),article strong:not(:lang(zh)):not(:lang(ja)),article strong *:lang(zh-Latn),article strong *:lang(ja-Latn),article strong *:not(:lang(zh)):not(:lang(ja)){font-family:"Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}html:lang(zh),html:lang(zh-Hant),[lang^='zh'],[lang*='Hant'],[lang='zh-TW'],[lang='zh-HK'],article strong:lang(zh),article strong:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}html:lang(zh-Hans),html:lang(zh-CN),[lang*='Hans'],[lang='zh-CN'],article strong:lang(zh-Hans),article strong:lang(zh-CN){font-family:"Biaodian Pro Sans GB","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}html:lang(ja),[lang^='ja'],article strong:lang(ja){font-family:"Yakumono Sans","Helvetica Neue",Helvetica,Arial,sans-serif}article blockquote i:lang(zh-Latn),article blockquote i:lang(ja-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote i *:lang(zh-Latn),article blockquote i *:lang(ja-Latn),article blockquote i *:not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(zh-Latn),article blockquote var:lang(ja-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)),article blockquote var *:lang(zh-Latn),article blockquote var *:lang(ja-Latn),article blockquote var *:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}article blockquote i:lang(zh-Hans),article blockquote i:lang(zh-CN),article blockquote var:lang(zh-Hans),article blockquote var:lang(zh-CN){font-family:"Biaodian Pro Sans GB","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}article blockquote i:lang(ja),article blockquote var:lang(ja){font-family:"Yakumono Sans","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,sans-serif}article figure blockquote:lang(zh-Latn),article figure blockquote:lang(ja-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)),article figure blockquote *:lang(zh-Latn),article figure blockquote *:lang(ja-Latn),article figure blockquote *:not(:lang(zh)):not(:lang(ja)),figure blockquote:lang(zh-Latn),figure blockquote:lang(ja-Latn),figure blockquote:not(:lang(zh)):not(:lang(ja)),figure blockquote *:lang(zh-Latn),figure blockquote *:lang(ja-Latn),figure blockquote *:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Songti",cursive,serif}article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant),figure blockquote:lang(zh),figure blockquote:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Songti",serif}article figure blockquote:lang(zh-Hans),article figure blockquote:lang(zh-CN),figure blockquote:lang(zh-Hans),figure blockquote:lang(zh-CN){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Songti GB",serif}article figure blockquote:lang(ja),figure blockquote:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",serif}article blockquote:lang(zh-Latn),article blockquote:lang(ja-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)),article blockquote *:lang(zh-Latn),article blockquote *:lang(ja-Latn),article blockquote *:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Kaiti",cursive,serif}article blockquote:lang(zh),article blockquote:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}article blockquote:lang(zh-Hans),article blockquote:lang(zh-CN){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}article blockquote:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",cursive,serif}i:lang(zh-Latn),i:lang(ja-Latn),i:not(:lang(zh)):not(:lang(ja)),i *:lang(zh-Latn),i *:lang(ja-Latn),i *:not(:lang(zh)):not(:lang(ja)),var:lang(zh-Latn),var:lang(ja-Latn),var:not(:lang(zh)):not(:lang(ja)),var *:lang(zh-Latn),var *:lang(ja-Latn),var *:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti",cursive,serif}i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}i:lang(zh-Hans),i:lang(zh-CN),var:lang(zh-Hans),var:lang(zh-CN){font-family:"Biaodian Pro Serif GB","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}i:lang(ja),var:lang(ja){font-family:"Yakumono Serif","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman",cursive,serif}code:lang(zh-Latn),code:lang(ja-Latn),code:not(:lang(zh)):not(:lang(ja)),code *:lang(zh-Latn),code *:lang(ja-Latn),code *:not(:lang(zh)):not(:lang(ja)),kbd:lang(zh-Latn),kbd:lang(ja-Latn),kbd:not(:lang(zh)):not(:lang(ja)),kbd *:lang(zh-Latn),kbd *:lang(ja-Latn),kbd *:not(:lang(zh)):not(:lang(ja)),samp:lang(zh-Latn),samp:lang(ja-Latn),samp:not(:lang(zh)):not(:lang(ja)),samp *:lang(zh-Latn),samp *:lang(ja-Latn),samp *:not(:lang(zh)):not(:lang(ja)),pre:lang(zh-Latn),pre:lang(ja-Latn),pre:not(:lang(zh)):not(:lang(ja)),pre *:lang(zh-Latn),pre *:lang(ja-Latn),pre *:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,"Han Heiti",monospace,monospace,sans-serif}code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS",Menlo,Consolas,Courier,"Zhuyin Heiti","Han Heiti",monospace,monospace,sans-serif}code:lang(zh-Hans),code:lang(zh-CN),kbd:lang(zh-Hans),kbd:lang(zh-CN),samp:lang(zh-Hans),samp:lang(zh-CN),pre:lang(zh-Hans),pre:lang(zh-CN){font-family:"Biaodian Pro Sans GB",Menlo,Consolas,Courier,"Han Heiti GB",monospace,monospace,sans-serif}code:lang(ja),kbd:lang(ja),samp:lang(ja),pre:lang(ja){font-family:"Yakumono Sans",Menlo,Consolas,Courier,monospace,monospace,sans-serif}#zhuyin_fuhao-heiti p,#zhuyin_fuhao-kaiti p,#luoma_pinyin p,#pua p,html,ruby ru[zhuyin] zhuyin,ruby ru[zhuyin] zhuyin diao,hruby ru[zhuyin] zhuyin,hruby ru[zhuyin] zhuyin diao,ruby.romanization rt,ruby ru[annotation]:before,hruby.romanization rt,hruby ru[annotation]:before,.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode='b7']{-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga";-webkit-font-feature-settings:"liga";font-feature-settings:"liga"}ruby ru[zhuyin] zhuyin diao,hruby ru[zhuyin] zhuyin diao{font-family:"Zhuyin Kaiti",cursive,serif}ruby.romanization rt,ruby ru[annotation]:before,hruby.romanization rt,hruby ru[annotation]:before{font-family:"Romanization Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}.no-kaiti i,.no-kaiti var{padding-bottom:0.05em;border-bottom:3px double #d3d3d3}article{line-height:1.7}article p,article li{text-align:justify;text-justify:inter-ideograph}article h1+blockquote,article h1+p,article h1+ol,article h1+ul,article h1+h6,article h1+section>h6:first-child,article h1+section>p:first-child,article h1+section>ol:first-child,article h1+section>ul:first-child,article h1+section>blockquote:first-child,article h2+blockquote,article h2+p,article h2+ol,article h2+ul,article h2+h6,article h2+section>h6:first-child,article h2+section>p:first-child,article h2+section>ol:first-child,article h2+section>ul:first-child,article h2+section>blockquote:first-child,article h3+blockquote,article h3+p,article h3+ol,article h3+ul,article h3+h6,article h3+section>h6:first-child,article h3+section>p:first-child,article h3+section>ol:first-child,article h3+section>ul:first-child,article h3+section>blockquote:first-child,article h4+blockquote,article h4+p,article h4+ol,article h4+ul,article h4+h6,article h4+section>h6:first-child,article h4+section>p:first-child,article h4+section>ol:first-child,article h4+section>ul:first-child,article h4+section>blockquote:first-child,article h5+blockquote,article h5+p,article h5+ol,article h5+ul,article h5+h6,article h5+section>h6:first-child,article h5+section>p:first-child,article h5+section>ol:first-child,article h5+section>ul:first-child,article h5+section>blockquote:first-child,article h6+blockquote,article h6+p,article h6+ol,article h6+ul,article h6+h6,article h6+section>h6:first-child,article h6+section>p:first-child,article h6+section>ol:first-child,article h6+section>ul:first-child,article h6+section>blockquote:first-child,article h1+h5,article h1+section>h5:first-child,article h2+h5,article h2+section>h5:first-child,article h3+h5,article h3+section>h5:first-child,article h4+h5,article h4+section>h5:first-child,article h5+h5,article h5+section>h5:first-child,article h1+h4,article h1+section>h4:first-child,article h2+h4,article h2+section>h4:first-child,article h3+h4,article h3+section>h4:first-child,article h4+h4,article h4+section>h4:first-child,article h1+h3,article h1+section>h3:first-child,article h2+h3,article h2+section>h3:first-child,article h3+h3,article h3+section>h3:first-child,article h1+h2,article h1+section>h2:first-child,article h2+h2,article h2+section>h2:first-child{margin-top:-1em}p.poem-like,.poem-like p{margin-left:2em}@media only screen and (max-width: 480px){p.poem-like,.poem-like p{margin-left:1em}}article blockquote{margin-right:0}@media only screen and (max-width: 480px){article blockquote{margin-left:1em}}figure blockquote{margin:0}blockquote blockquote{margin-left:1em;margin-right:1em}article blockquote blockquote{margin-right:0}@media only screen and (max-width: 480px){blockquote,figure{margin-left:1em;margin-right:1em}}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode='b7']{font-family:"Biaodian Basic","Han Heiti"}hws{display:inline;visibility:hidden;font-family:Arial,sans-serif !important;font-size:0.89em}code hws,kbd hws,samp hws,pre hws,ol>hws,ul>hws{display:none}char_group .open:not(:last-child),char_group .close:not(:last-child),char_group [unicode='3001']:not(:last-child),char_group [unicode='3002']:not(:last-child),char_group [unicode='ff0c']:not(:last-child),char_group [unicode='ff08']:not(:last-child){letter-spacing:-0.5em}char_group [unicode='b7']+[unicode='300c'],char_group [unicode='b7']+[unicode='300e'],char_group [unicode='30fb']+[unicode='300c'],char_group [unicode='30fb']+[unicode='300e']{margin-left:-0.5em}char_group .liga+[unicode='300c'],char_group .liga+[unicode='300e']{margin-left:-0.25em}char[display-as]{position:relative;display:inline-block}char[display-as] inner{color:transparent}char[display-as]:after{position:absolute;left:0;display:inline-block;content:attr(display-as)}char[display-as].comb-liga:after{font-family:"Romanization Sans","Zhuyin Kaiti"}#zhuyin_fuhao-heiti p{font-family:"Zhuyin Heiti","Biaodian Pro Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}#zhuyin_fuhao-kaiti p{font-family:"Zhuyin Kaiti","Biaodian Pro Serif",Georgia,"Times New Roman","Han Kaiti",cursive,serif}#luoma_pinyin p,#pua p{font-family:"Romanization Sans","Biaodian Pro Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif} +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{line-height:1.3;-webkit-font-smoothing:subpixel-antialiased}ol,ul{padding-left:2em}blockquote,figure{margin-left:2em;margin-right:2em}address{font-style:inherit}pre{white-space:pre;word-wrap:normal}a{text-decoration:inherit}em:lang(ja),em:lang(zh){-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;font-style:inherit;border-bottom:2px dotted;padding-bottom:.05em;border-bottom-width:-webkit-calc(0px);padding-bottom:-webkit-calc(0px)}em:lang(ja){-moz-text-emphasis:filled sesame;-webkit-text-emphasis:filled sesame;text-emphasis:filled sesame;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}b,dfn:lang(ja),dfn:lang(zh),strong{font-weight:bolder}cite:lang(ja),cite:lang(zh),dfn:lang(ja),dfn:lang(zh){font-style:inherit}q{quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(zh){quotes:'\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f'}q:lang(en),q:lang(zh-CN){quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(en-GB){quotes:'\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d'}q:before{content:open-quote}q:after{content:close-quote}q:lang(ja):after,q:lang(ja):before{content:none}code,kbd,pre,samp{font-family:monospace,monospace,sans-serif}i:lang(ja),i:lang(zh),var:lang(ja),var:lang(zh){font-style:inherit}.han-js-rendered del+del.adjacent,.han-js-rendered del+s.adjacent,.han-js-rendered ins.adjacent,.han-js-rendered s+del.adjacent,.han-js-rendered s+s.adjacent,.han-js-rendered u.adjacent,del+del,del+s,ins+ins,ins+u,s+del,s+s,u+ins,u+u{margin-left:.125em}ins,u{padding-bottom:.05em;border-bottom:1px solid;text-decoration:none}ruby :after,ruby :before{line-height:normal}ruby>rt:not(:empty):before{content:'\ff08'}ruby>rt:not(:empty):after{content:'\ff09'}ruby>rb+rtc:before{content:'\ff08'}ruby>rtc:after{content:'\ff0c'}ruby>rtc:last-of-type:after{content:'\ff09'}ruby>rt:after,ruby>rt:before{display:inline-block;overflow:hidden;vertical-align:middle;height:0;width:0}ruby>rt:not(:empty):after,ruby>rt:not(:empty):before{height:-moz-calc(1.3em);width:-moz-calc(1em)}.han-js-rendered del+del,.han-js-rendered del+s,.han-js-rendered ins+ins,.han-js-rendered ins+u,.han-js-rendered s+del,.han-js-rendered s+s,.han-js-rendered u+ins,.han-js-rendered u+u{margin-left:auto}.han-js-rendered em:lang(ja),.han-js-rendered em:lang(zh){padding-bottom:auto;border-bottom-width:0}.no-textemphasis em:lang(ja),.no-textemphasis em:lang(zh){line-height:2}.no-textemphasis em:lang(ja) char,.no-textemphasis em:lang(zh) char{position:relative;font-style:inherit}.no-textemphasis em:lang(ja) char:after,.no-textemphasis em:lang(zh) char:after{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;text-decoration:none;-moz-transform:scale(0.5);-ms-transform:scale(0.5);-webkit-transform:scale(0.5);transform:scale(0.5);position:absolute;left:50%;top:0;margin-left:-250%;overflow:hidden;display:inline-block;height:1em;width:500%;line-height:1;text-align:center;text-indent:0;font-family:Georgia,'Times New Roman',Arial,!important}em:lang(ja) char.biaodian,em:lang(ja) char.punct,em:lang(zh) char.biaodian,em:lang(zh) char.punct{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none}.no-textemphasis em:lang(ja) char.biaodian:after,.no-textemphasis em:lang(ja) char.punct:after,.no-textemphasis em:lang(zh) char.biaodian:after,.no-textemphasis em:lang(zh) char.punct:after{content:none!important}.no-textemphasis em:lang(zh) char:after{margin-top:1em;content:'\25cf'}.no-textemphasis em:lang(ja) char:after{margin-top:-.7em;content:'\fe45'}hruby{display:inline;line-height:2}hruby rp{display:none}hruby ru[annotation]>rt{display:inline-block;height:0;width:0;font:0/0 hidden-text}hruby ru{position:relative;display:inline-block;text-indent:0}hruby ru:before,hruby zhuyin{-moz-transform:scale(0.55);-ms-transform:scale(0.55);-webkit-transform:scale(0.55);transform:scale(0.55);-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;line-height:normal;text-decoration:none;text-indent:0;position:absolute;display:inline-block}hruby ru[annotation]{text-align:center}hruby ru[annotation]:before{left:-265%;vertical-align:top;height:1em;width:600%;content:attr(annotation);line-height:1;text-align:center;text-indent:0}hruby[rightangle] ru[annotation]:before{left:-250%}hruby ru[zhuyin]{display:inline-block;position:relative;width:1.8em;text-align:left}hruby ru[zhuyin] zhuyin{right:.2em;top:0;height:2.7em;width:.8em;line-height:.9;white-space:pre-wrap;word-break:break-all}hruby ru[zhuyin] diao{position:absolute;right:-.9em;top:0;display:inline-block;width:1em}hruby ru[zhuyin]:empty,hruby ru[zhuyin][length='0']{width:auto}hruby ru[zhuyin]:empty zhuyin,hruby ru[zhuyin][length='0'] zhuyin{display:none}hruby ru[zhuyin][length='1'] zhuyin{margin-top:.125em}hruby ru[zhuyin][length='1'] diao{margin-top:-.35em}hruby ru[zhuyin][length='2'] zhuyin{margin-top:-.175em}hruby ru[zhuyin][length='2'] diao{margin-top:.5em}hruby ru[zhuyin][length='3'] zhuyin{margin-top:-.45em}hruby ru[zhuyin][length='3'] diao{margin-top:1.3em}hruby ru[zhuyin][diao='˙'] diao{right:-.35em}hruby ru[zhuyin][diao='˙'][length='1'] diao{margin-top:-.5em}hruby ru[zhuyin][diao='˙'][length='2'] diao{margin-top:-.3em}hruby ru[zhuyin][diao='˙'][length='3'] diao{margin-top:-.25em}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1.2);-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2);margin-right:-.25em}hruby ru[zhuyin][diao='󳆴'] diao,hruby ru[zhuyin][diao='󳆵'] diao,hruby ru[zhuyin][diao='󳆶'] diao,hruby ru[zhuyin][diao='󳆷'] diao,hruby ru[zhuyin][diao^='ㆴ'] diao,hruby ru[zhuyin][diao^='ㆵ'] diao,hruby ru[zhuyin][diao^='ㆶ'] diao,hruby ru[zhuyin][diao^='ㆷ'] diao{top:20%;margin-right:-.3em}hruby ru[annotation]:before,hruby[rightangle] ru[annotation][order='1']:before{top:-.5em}hruby ru[order='1']:before,hruby[rightangle] ru[annotation][order='0']:before{bottom:-.4em;top:auto}hruby[rightangle] ru[annotation]:before{margin-left:-.4em}@media screen and (-webkit-min-device-pixel-ratio:1.5),(min-resolution:192dpi){hruby yin{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);display:inline-block}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}hruby ru[zhuyin][diao='˙'] diao{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);top:.125em}}jinze{display:inline-block;text-indent:0}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';font-weight:600;src:local('YuGothic Bold'),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';font-weight:600;src:local('YuGothic Bold'),local(YuGo-Bold),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti GB';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold);unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Heiti SC Medium'),local('Microsoft YaHei Bold'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold);unicode-range:U+270C}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSong),local('Lisong Pro'),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho')}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local(PMingLiU),local(SimSun)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro')}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti SC Bold'),local('STSongti TC Bold'),local(STSongti-SC-Bold),local(STSongti-TC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti GB';font-weight:600;src:local('STSongti SC Bold'),local(STSongti-SC-Bold)}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSongti),local('Lisong Pro'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+270C}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local('MS Mincho'),local(PMingLiU),local(SimSun);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+270C}@font-face{font-family:cursive;src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti';src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti CNS';src:local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti GB';src:local('Kaiti SC'),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti GB';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong CNS';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong GB';src:local(STFangsong),local(FangSong)}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Arial Unicode MS'),local('MS Gothic');unicode-range:U+2014}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho'),local('Microsoft Yahei');unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic');unicode-range:U+2026}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Lisong Pro'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU),local('MS Gothic');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(STSongti-TC-Regular),local('Lisong Pro'),local('Heiti TC'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSongti),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Basic';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:'Biaodian Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Latin Italic Serif';src:local('Georgia Italic'),local('Times New Roman Italic'),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Serif';font-weight:700;src:local('Georgia Bold Italic'),local('Times New Roman Bold Italic'),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:'Latin Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Sans';src:local(Skia),local('Neutraface 2 Text'),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Serif';src:local(Georgia),local('Hoefler Text'),local('Big Caslon')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Italic Serif';src:local('Georgia Italic'),local('Hoefler Text Italic'),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Sans';src:local('Helvetica Neue'),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Serif';src:local(Palatino),local('Palatino Linotype'),local('Times New Roman')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';src:local('Palatino Italic'),local('Palatino Italic Linotype'),local('Times New Roman Italic'),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';font-weight:700;src:local('Palatino Bold Italic'),local('Palatino Bold Italic Linotype'),local('Times New Roman Bold Italic'),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{font-family:'Numeral TF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Kaiti'}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Heiti';src:local('Hiragino Sans GB'),local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype')}@font-face{font-family:'Zhuyin Heiti';src:local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3127}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Zhuyin Heiti';unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Romanization Sans';unicode-range:U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}article strong :lang(ja-Latn),article strong :lang(zh-Latn),article strong :not(:lang(zh)):not(:lang(ja)),article strong:lang(ja-Latn),article strong:lang(zh-Latn),article strong:not(:lang(zh)):not(:lang(ja)),html :lang(ja-Latn),html :lang(zh-Latn),html :not(:lang(zh)):not(:lang(ja)),html:lang(ja-Latn),html:lang(zh-Latn),html:not(:lang(zh)):not(:lang(ja)){font-family:'Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}[lang*=Hant],[lang=zh-HK],[lang=zh-TW],[lang^=zh],article strong:lang(zh),article strong:lang(zh-Hant),html:lang(zh),html:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}[lang*=Hans],[lang=zh-CN],article strong:lang(zh-CN),article strong:lang(zh-Hans),html:lang(zh-CN),html:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}[lang^=ja],article strong:lang(ja),html:lang(ja){font-family:'Yakumono Sans','Helvetica Neue',Helvetica,Arial,sans-serif}article blockquote i :lang(ja-Latn),article blockquote i :lang(zh-Latn),article blockquote i :not(:lang(zh)):not(:lang(ja)),article blockquote i:lang(ja-Latn),article blockquote i:lang(zh-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote var :lang(ja-Latn),article blockquote var :lang(zh-Latn),article blockquote var :not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(ja-Latn),article blockquote var:lang(zh-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}article blockquote i:lang(zh-CN),article blockquote i:lang(zh-Hans),article blockquote var:lang(zh-CN),article blockquote var:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}article blockquote i:lang(ja),article blockquote var:lang(ja){font-family:'Yakumono Sans','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,sans-serif}article figure blockquote :lang(ja-Latn),article figure blockquote :lang(zh-Latn),article figure blockquote :not(:lang(zh)):not(:lang(ja)),article figure blockquote:lang(ja-Latn),article figure blockquote:lang(zh-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)),figure blockquote :lang(ja-Latn),figure blockquote :lang(zh-Latn),figure blockquote :not(:lang(zh)):not(:lang(ja)),figure blockquote:lang(ja-Latn),figure blockquote:lang(zh-Latn),figure blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Songti',cursive,serif}article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant),figure blockquote:lang(zh),figure blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Songti',serif}article figure blockquote:lang(zh-CN),article figure blockquote:lang(zh-Hans),figure blockquote:lang(zh-CN),figure blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Songti GB',serif}article figure blockquote:lang(ja),figure blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',serif}article blockquote :lang(ja-Latn),article blockquote :lang(zh-Latn),article blockquote :not(:lang(zh)):not(:lang(ja)),article blockquote:lang(ja-Latn),article blockquote:lang(zh-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Kaiti',cursive,serif}article blockquote:lang(zh),article blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}article blockquote:lang(zh-CN),article blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}article blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',cursive,serif}i :lang(ja-Latn),i :lang(zh-Latn),i :not(:lang(zh)):not(:lang(ja)),i:lang(ja-Latn),i:lang(zh-Latn),i:not(:lang(zh)):not(:lang(ja)),var :lang(ja-Latn),var :lang(zh-Latn),var :not(:lang(zh)):not(:lang(ja)),var:lang(ja-Latn),var:lang(zh-Latn),var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti',cursive,serif}i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}i:lang(zh-CN),i:lang(zh-Hans),var:lang(zh-CN),var:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}i:lang(ja),var:lang(ja){font-family:'Yakumono Serif','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman',cursive,serif}code :lang(ja-Latn),code :lang(zh-Latn),code :not(:lang(zh)):not(:lang(ja)),code:lang(ja-Latn),code:lang(zh-Latn),code:not(:lang(zh)):not(:lang(ja)),kbd :lang(ja-Latn),kbd :lang(zh-Latn),kbd :not(:lang(zh)):not(:lang(ja)),kbd:lang(ja-Latn),kbd:lang(zh-Latn),kbd:not(:lang(zh)):not(:lang(ja)),pre :lang(ja-Latn),pre :lang(zh-Latn),pre :not(:lang(zh)):not(:lang(ja)),pre:lang(ja-Latn),pre:lang(zh-Latn),pre:not(:lang(zh)):not(:lang(ja)),samp :lang(ja-Latn),samp :lang(zh-Latn),samp :not(:lang(zh)):not(:lang(ja)),samp:lang(ja-Latn),samp:lang(zh-Latn),samp:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,'Han Heiti',monospace,monospace,sans-serif}code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS',Menlo,Consolas,Courier,'Zhuyin Heiti','Han Heiti',monospace,monospace,sans-serif}code:lang(zh-CN),code:lang(zh-Hans),kbd:lang(zh-CN),kbd:lang(zh-Hans),pre:lang(zh-CN),pre:lang(zh-Hans),samp:lang(zh-CN),samp:lang(zh-Hans){font-family:'Biaodian Pro Sans GB',Menlo,Consolas,Courier,'Han Heiti GB',monospace,monospace,sans-serif}code:lang(ja),kbd:lang(ja),pre:lang(ja),samp:lang(ja){font-family:'Yakumono Sans',Menlo,Consolas,Courier,monospace,monospace,sans-serif}#luoma_pinyin p,#pua p,#zhuyin_fuhao-heiti p,#zhuyin_fuhao-kaiti p,.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7],hruby ru[annotation]:before,hruby ru[zhuyin] zhuyin,hruby ru[zhuyin] zhuyin diao,hruby.romanization rt,html,ruby ru[annotation]:before,ruby ru[zhuyin] zhuyin,ruby ru[zhuyin] zhuyin diao,ruby.romanization rt{-moz-font-feature-settings:'liga';-ms-font-feature-settings:'liga';-webkit-font-feature-settings:'liga';font-feature-settings:'liga'}i,var{font-style:inherit}hruby ru[zhuyin] zhuyin diao,ruby ru[zhuyin] zhuyin diao{font-family:'Zhuyin Kaiti',cursive,serif}hruby ru[annotation]:before,hruby.romanization rt,ruby ru[annotation]:before,ruby.romanization rt{font-family:'Romanization Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}.no-kaiti i,.no-kaiti var{padding-bottom:.05em;border-bottom:3px double lightgrey}article{line-height:1.7}article li,article p{text-align:justify;text-justify:inter-ideograph}article h1+blockquote,article h1+h2,article h1+h3,article h1+h4,article h1+h5,article h1+h6,article h1+ol,article h1+p,article h1+section>blockquote:first-child,article h1+section>h2:first-child,article h1+section>h3:first-child,article h1+section>h4:first-child,article h1+section>h5:first-child,article h1+section>h6:first-child,article h1+section>ol:first-child,article h1+section>p:first-child,article h1+section>ul:first-child,article h1+ul,article h2+blockquote,article h2+h2,article h2+h3,article h2+h4,article h2+h5,article h2+h6,article h2+ol,article h2+p,article h2+section>blockquote:first-child,article h2+section>h2:first-child,article h2+section>h3:first-child,article h2+section>h4:first-child,article h2+section>h5:first-child,article h2+section>h6:first-child,article h2+section>ol:first-child,article h2+section>p:first-child,article h2+section>ul:first-child,article h2+ul,article h3+blockquote,article h3+h3,article h3+h4,article h3+h5,article h3+h6,article h3+ol,article h3+p,article h3+section>blockquote:first-child,article h3+section>h3:first-child,article h3+section>h4:first-child,article h3+section>h5:first-child,article h3+section>h6:first-child,article h3+section>ol:first-child,article h3+section>p:first-child,article h3+section>ul:first-child,article h3+ul,article h4+blockquote,article h4+h4,article h4+h5,article h4+h6,article h4+ol,article h4+p,article h4+section>blockquote:first-child,article h4+section>h4:first-child,article h4+section>h5:first-child,article h4+section>h6:first-child,article h4+section>ol:first-child,article h4+section>p:first-child,article h4+section>ul:first-child,article h4+ul,article h5+blockquote,article h5+h5,article h5+h6,article h5+ol,article h5+p,article h5+section>blockquote:first-child,article h5+section>h5:first-child,article h5+section>h6:first-child,article h5+section>ol:first-child,article h5+section>p:first-child,article h5+section>ul:first-child,article h5+ul,article h6+blockquote,article h6+h6,article h6+ol,article h6+p,article h6+section>blockquote:first-child,article h6+section>h6:first-child,article h6+section>ol:first-child,article h6+section>p:first-child,article h6+section>ul:first-child,article h6+ul{margin-top:-1em}.poem-like p,p.poem-like{margin-left:2em}@media only screen and (max-width:480px){.poem-like p,p.poem-like{margin-left:1em}}article blockquote{margin-right:0}@media only screen and (max-width:480px){article blockquote{margin-left:1em}}figure blockquote{margin:0}blockquote blockquote{margin-left:1em;margin-right:1em}article blockquote blockquote{margin-right:0}@media only screen and (max-width:480px){blockquote,figure{margin-left:1em;margin-right:1em}}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7]{font-family:'Biaodian Basic','Han Heiti'}hws{display:inline;visibility:hidden;font-family:Arial,sans-serif!important;font-size:.89em}code hws,kbd hws,ol>hws,pre hws,samp hws,table>hws,tbody>hws,tfoot>hws,thead>hws,tr>hws,ul>hws{display:none}char_group .close:not(:last-child),char_group .open:not(:last-child),char_group [unicode='3001']:not(:last-child),char_group [unicode='3002']:not(:last-child),char_group [unicode=ff08]:not(:last-child),char_group [unicode=ff0c]:not(:last-child){letter-spacing:-.5em}char_group [unicode='3001']:lang(zh-Hant):not(:last-child),char_group [unicode='3002']:lang(zh-Hant):not(:last-child),char_group [unicode=ff08]:lang(zh-Hant):not(:last-child),char_group [unicode=ff0c]:lang(zh-Hant):not(:last-child){letter-spacing:inherit}char_group [unicode='3001']:lang(zh-Hant)+.open,char_group [unicode='3002']:lang(zh-Hant)+.open,char_group [unicode='30fb']+[unicode='300c'],char_group [unicode='30fb']+[unicode='300e'],char_group [unicode=b7]+[unicode='300c'],char_group [unicode=b7]+[unicode='300e'],char_group [unicode=ff08]:lang(zh-Hant)+.open,char_group [unicode=ff0c]:lang(zh-Hant)+.open{margin-left:-.5em}char_group .liga+[unicode='300c'],char_group .liga+[unicode='300e']{margin-left:-.25em}char[display-as]{position:relative;display:inline-block}char[display-as] inner{color:transparent}char[display-as]:after{position:absolute;left:0;display:inline-block;content:attr(display-as)}char[display-as].comb-liga:after{font-family:'Romanization Sans','Zhuyin Kaiti'}#zhuyin_fuhao-heiti p{font-family:"Zhuyin Heiti","Biaodian Pro Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}#zhuyin_fuhao-kaiti p{font-family:"Zhuyin Kaiti","Biaodian Pro Serif",Georgia,"Times New Roman","Han Kaiti",cursive,serif}#luoma_pinyin p,#pua p{font-family:"Romanization Sans","Biaodian Pro Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif} \ No newline at end of file diff --git a/latest/ruby(ff)-han.scss b/latest/ruby(ff)-han.scss new file mode 100644 index 00000000..662320aa --- /dev/null +++ b/latest/ruby(ff)-han.scss @@ -0,0 +1,20 @@ +// ** +// * Import Han module +// * +@import "../src/sass/han"; + +#zhuyin_fuhao-heiti p { + @extend %han-ligature; + font-family: "Zhuyin Heiti", "Biaodian Pro Sans", "Helvetica Neue", Helvetica, Arial, "Han Heiti", sans-serif; +} + +#zhuyin_fuhao-kaiti p { + @extend %han-ligature; + font-family: "Zhuyin Kaiti", "Biaodian Pro Serif", Georgia, "Times New Roman", "Han Kaiti", cursive, serif; +} + +#luoma_pinyin p, +#pua p { + @extend %han-ligature; + font-family: "Romanization Sans", "Biaodian Pro Sans", "Helvetica Neue", Helvetica, Arial, "Han Heiti", sans-serif; +} diff --git a/latest/ruby(ff).html b/latest/ruby(ff).html index 25a902a3..195b83e8 100644 --- a/latest/ruby(ff).html +++ b/latest/ruby(ff).html @@ -1,56 +1,13 @@ - - - - - 測試・標音(注音符號、羅馬拼音) — 漢字標準格式 - - - - - - - -
      -

      測試·標音(注音符號、羅馬拼音)

      -
      -

      注音符號

      -
      -

      黑體

      -

      ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙ
      ㆠㆣㆢㆡㆭ
      ㄧㄨㄩ
      ㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦ
      ㆤㆥㆦㆧㆨㆩㆪㆫㆬㆮㆯㆰㆱㆲㆳ
      ㄪㄫㄬㄭ
      ˊˇˋ˙
      ㆴㆵㆶㆷㆴ͘ㆵ͘ㆶ͘ㆷ͘
      ˪˫

      -
      -
      -

      楷體

      -

      ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙ
      ㆠㆣㆢㆡㆭ
      ㄧㄨㄩ
      ㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦ
      ㆤㆥㆦㆧㆨㆩㆪㆫㆬㆮㆯㆰㆱㆲㆳ
      ㄪㄫㄬㄭ
      ˊˇˋ˙
      ㆴㆵㆶㆷㆴ͘ㆵ͘ㆶ͘ㆷ͘
      ˪˫

      -
      -
      -
      -

      羅馬拼音

      -
      -

      元音(陰、陽入韻)

      -

      aeioua̍e̍i̍o̍u̍

      -
      -
      -
      -

      萌典PUA

      -

      以下是用於「萌典」的PUA陽入韻字元,使用web字體「Romanization Sans」,可保證在所有瀏覽器下正常顯示。搭配「字元的替換」功能可提供對無障礙瀏覽器較友好、更加語意化的網頁。 -

      -

      󳆴󳆵󳆶󳆷(\uF31B4-7
      󰁡󰁥󰁩󰁯󰁵(\uF006x、\uF0075

      -
      -
      - - - \ No newline at end of file +測試・標音(注音符號、羅馬拼音) — 漢字標準格式

      測試·標音(注音符號、羅馬拼音)

      注音符號

      黑體

      ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙ
      ㆠㆣㆢㆡㆭ
      ㄧㄨㄩ
      ㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦ
      ㆤㆥㆦㆧㆨㆩㆪㆫㆬㆮㆯㆰㆱㆲㆳ
      ㄪㄫㄬㄭ
      ˊˇˋ˙
      ㆴㆵㆶㆷㆴ͘ㆵ͘ㆶ͘ㆷ͘
      ˪˫

      楷體

      ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙ
      ㆠㆣㆢㆡㆭ
      ㄧㄨㄩ
      ㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦ
      ㆤㆥㆦㆧㆨㆩㆪㆫㆬㆮㆯㆰㆱㆲㆳ
      ㄪㄫㄬㄭ
      ˊˇˋ˙
      ㆴㆵㆶㆷㆴ͘ㆵ͘ㆶ͘ㆷ͘
      ˪˫

      羅馬拼音

      元音(陰、陽入韻)

      aeioua̍e̍i̍o̍u̍

      萌典PUA

      以下是用於「萌典」的PUA陽入韻字元,使用web字體「Romanization Sans」,可保證在所有瀏覽器下正常顯示。搭配「字元的替換」功能可提供對無障礙瀏覽器較友好、更加語意化的網頁。

      󳆴󳆵󳆶󳆷(\uF31B4-7
      󰁡󰁥󰁩󰁯󰁵(\uF006x、\uF0075

      \ No newline at end of file diff --git a/latest/ruby.html b/latest/ruby.html index 1559f965..3920b6a2 100644 --- a/latest/ruby.html +++ b/latest/ruby.html @@ -1,387 +1,166 @@ - - - - - 測試・行間注元素 — 漢字標準格式 - - - - - - - -
      -

      測試·行間注元素

      -
      -

      基本行間注

      -

      - WWWWorld Wide Web -

      -

      - 安倍晋三日本內閣總理大臣 -

      -
      -

      拼音

      -

      - - 世情shìqíng - 看kàn - 冷暖lěngnuǎn - 人面rénmiàn - 逐zhú - 高低gāodī - -

      -
      -
      -

      注音符號

      -

      - - 事ㄕˋㄑㄧㄥˊ - 看ㄎㄢˋ - 冷ㄌㄥˇㄋㄨㄢˇ - 人ㄖㄣˊㄇㄧㄢˋ - 逐ㄓㄨˊ - 高ㄍㄠ - 低ㄉㄧ。 - -

      -
      -

      輕聲

      -

      - ㄅㄚˋ˙ㄅㄚㄅㄞˊ˙ㄊㄧㄢ˙ㄉㄜ行程很滿˙ㄚ -

      -
      -
      -

      預設使用「楷體」的元素下

      -

      - ㄅㄚˋ˙ㄅㄚㄅㄞˊ˙ㄊㄧㄢ˙ㄉㄜ行程很滿˙ㄚ -

      -
      -
      -
      -
      -

      複合式行間注

      -

      - 辛亥革命發生在 - 1911- - 10- - 10, - - - - - - - 清宣統三年 - 那天革命先烈們一同推翻了帝制。 - -

      -

      - 「 - - - 」 - - Niǔyuē - Shì - - - New York City - - - 『 - - - 』 - - New York City - - - Niǔyuē - Shì - - - ‘ - - - ’ - - New York City - - - niǔ - yuē - shì - - - „ - - - ‟ - - niǔ - yuē - shì - - - New York City - - - ⸘ - - - ‽ - - New York City - - - 世界之都 - - -

      -

      - - - - - - - , - - - - - ! - - - - - -

      -
      -

      拼音-注音共同顯示

      -

      共我講, - - ? - - - kám-ū - thiann-tio̍h - lán-ê - kua - - - ㄌㄧˋ - ㄍㆰˋ - ㄨ˫ - ㄊㄧㆩ - ㄉㄧㄜㆷ̍ - ㄌㄢˋ - ㆤˊ - ㄍㄨㄚ - 有無? - - - ? - - - kám-ū - thiann-tio̍h - lán-ê - kua - - - ㄌㄧˋ - ㄍㆰˋ - ㄨ˫ - ㄊㄧㆩ - ㄉㄧㄜㆷ̍ - ㄌㄢˋ - ㆤˊ - ㄍㄨㄚ - 有無? - - - ? - - - kám-ū - thiann-tio̍h - lán-ê - kua - - - ㄌㄧˋ - ㄍㆰˋ - ㄨ˫ - ㄊㄧㆩ - ㄉㄧㄜㆷ̍ - ㄌㄢˋ - ㆤˊ - ㄍㄨㄚ - 有無? - -

      -

      - - - - - - - , - - - - - - 。 - - - - -

      -

      - - - - , - - - ; - - - , - - - 。 - - - - - -

      -
      -
      -
      - - - - - \ No newline at end of file +測試・行間注元素 — 漢字標準格式

      測試·行間注元素

      基本行間注

      WWWWorld Wide Web

      安倍晋三日本內閣總理大臣

      拼音

      世情shìqíng +看kàn +冷暖lěngnuǎn +人面rénmiàn +逐zhú +高低gāodī

      注音符號

      ㄕˋㄑㄧㄥˊ +看ㄎㄢˋ +冷ㄌㄥˇㄋㄨㄢˇ +人ㄖㄣˊㄇㄧㄢˋ +逐ㄓㄨˊ +高ㄍㄠ +低ㄉㄧ

      輕聲

      ㄅㄚˋ˙ㄅㄚㄅㄞˊ˙ㄊㄧㄢ˙ㄉㄜ行程很滿˙ㄚ

      預設使用「楷體」的元素下

      ㄅㄚˋ˙ㄅㄚㄅㄞˊ˙ㄊㄧㄢ˙ㄉㄜ行程很滿˙ㄚ

      複合式行間注

      辛亥革命發生在1911-10-10,清宣統三年那天革命先烈們一同推翻了帝制。

      NiǔyuēShìNew York CityNew York CityNiǔyuēShìNew York CityniǔyuēshìniǔyuēshìNew York CityNew York City世界之都

      + + + + +, + + + + +! + + +san1 +shih2 +liu4 +ko0 +ya2 +ch'ih3 +cho1 +tuirh4 +ssu1 +ta3 + + + +sān +shí +liù +ge + +chǐ +zhuō +duìr + + +

      拼音-注音共同顯示

      共我講,kám-ūthiann-tio̍hlán-êkuaㄌㄧˋㄍㆰˋㄨ˫ㄊㄧㆩㄉㄧㄜㆷ̍ㄌㄢˋㆤˊㄍㄨㄚ有無?kám-ūthiann-tio̍hlán-êkuaㄌㄧˋㄍㆰˋㄨ˫ㄊㄧㆩㄉㄧㄜㆷ̍ㄌㄢˋㆤˊㄍㄨㄚ有無?kám-ūthiann-tio̍hlán-êkuaㄌㄧˋㄍㆰˋㄨ˫ㄊㄧㆩㄉㄧㄜㆷ̍ㄌㄢˋㆤˊㄍㄨㄚ有無?

      + + + + +, + + + + + +。 + + + ㄐㄧㆵ͘ + ㄌㄤˊ + ㄏㄨㄢˊ + ㄌㄜˋ + ㄐㄧㆵ͘ + ㄧㆫ˫ + ㆠㄜˊ + ㄌㄤˊ + ㄏㄨㄢˊ + ㄌㄜˋ + ㄑㄧㄣ + ㄑㄧㆫ˫ + + + + Tsi̍t + lâng + hoân‑ló + chi̍t + iūⁿ + bô‑lâng + hoân‑ló + chhin‑chhiūⁿ + Tsi̍t + lâng + huân-ló + tsi̍t + iūnn + bô-lâng + huân-ló + tshin-tshiūnn +

      + +, + + +; + + +, + + +。 + +ㄏㄧㄠ + ㄏㄧㄥ˫ + ㄐㆪˊ + ㄒㄧㆵ + ㄉㄧㆶ + ㄌㄧㄠˋ + ㄨㄢ + ㆲˋ + ㄐㆪˊ + ㄅㄨㄚㆷ͘ + ㄙㄨ + ㄍㄧㄠˋ + + + + Hiau‑hēng‑chîⁿ + sit‑tek + liáu + oan‑óng + chîⁿ + poa̍h‑su + kiáu + +Hiau-hīng-tsînn + sit-tik + liáu + uan-óng + tsînn + pua̍h-su + kiáu +

      \ No newline at end of file diff --git a/latest/ruby.jade b/latest/ruby.jade index 436da69d..df48da4e 100644 --- a/latest/ruby.jade +++ b/latest/ruby.jade @@ -143,7 +143,7 @@ html(lang='zh-Hant').han-init ! - san1 shih2 liu4 @@ -156,7 +156,7 @@ html(lang='zh-Hant').han-init ta3 - sān shí liù @@ -255,7 +255,7 @@ html(lang='zh-Hant').han-init 。 - ㄐㄧㆵ͘ ㄌㄤˊ ㄏㄨㄢˊ @@ -270,7 +270,7 @@ html(lang='zh-Hant').han-init ㄑㄧㆫ˫ - Tsi̍t lâng hoân‑ló @@ -279,7 +279,7 @@ html(lang='zh-Hant').han-init bô‑lâng hoân‑ló chhin‑chhiūⁿ - Tsi̍t lâng huân-ló tsi̍t @@ -302,7 +302,7 @@ html(lang='zh-Hant').han-init 。 - ㄏㄧㄠ ㄏㄧㄥ˫ ㄐㆪˊ ㄒㄧㆵ @@ -316,7 +316,7 @@ html(lang='zh-Hant').han-init ㄍㄧㄠˋ - Hiau‑hēng‑chîⁿ sit‑tek liáu @@ -325,7 +325,7 @@ html(lang='zh-Hant').han-init poa̍h‑su kiáu - Hiau-hīng-tsînn sit-tik liáu uan-óng diff --git a/latest/shs.html b/latest/shs.html index 7b3f6c0a..2e119ef4 100644 --- a/latest/shs.html +++ b/latest/shs.html @@ -1,47 +1,22 @@ - - - - - 測試・思源黑體 — 漢字標準格式 - - - - - - - -
      -

      測試·思源黑體

      -
      -

      標題與內文

      -

      阿波羅11號(Apollo 11)是美國國家航空航天局的阿波羅計畫(Project Apollo)中的第五次載人任務,是人類第一次登月任務,歷時8天13小時18分35秒,繞行月球30周,在月表停留21小時36分20秒。三位執行此任務的宇航員分別為指令長尼爾·阿姆斯特朗、指令艙駕駛員邁克爾·科林斯與登月艙駕駛員巴茲·奧爾德林。1969年7月20日,阿姆斯特朗與奧爾德林成為了首次踏上月球的人類,而阿波羅11號登陸月球一事更進一步成為紀錄片和廣告常見之歷史事件。

      -

      字重

      -

      是企鵝家族中體型最大的屬種,成年皇帝企鵝身高可達120厘米,體重可達46千克。在皇帝企鵝發現之前,有一種企鵝被認為是最大的企鵝,取名為國王企鵝。

      -
      -
      - - - \ No newline at end of file +測試・思源黑體 — 漢字標準格式

      測試·思源黑體

      標題與內文

      阿波羅11號(Apollo 11)是美國國家航空航天局的阿波羅計畫(Project Apollo)中的第五次載人任務,是人類第一次登月任務,歷時8天13小時18分35秒,繞行月球30周,在月表停留21小時36分20秒。三位執行此任務的宇航員分別為指令長尼爾·阿姆斯特朗、指令艙駕駛員邁克爾·科林斯與登月艙駕駛員巴茲·奧爾德林。1969年7月20日,阿姆斯特朗與奧爾德林成為了首次踏上月球的人類,而阿波羅11號登陸月球一事更進一步成為紀錄片和廣告常見之歷史事件。

      字重

      是企鵝家族中體型最大的屬種,成年皇帝企鵝身高可達120厘米,體重可達46千克。在皇帝企鵝發現之前,有一種企鵝被認為是最大的企鵝,取名為國王企鵝。

      \ No newline at end of file diff --git a/latest/subst.html b/latest/subst.html index 1de3f0f3..e4881d62 100644 --- a/latest/subst.html +++ b/latest/subst.html @@ -1,242 +1,86 @@ - - - - - 測試・字元的替換 — 漢字標準格式 - - - - - - - -
      -

      測試·字元的替換

      -
      -

      二種模式

      -

      - 「漢字標準格式」腳本包含二種字元替換的模式——着重字體效果的「異體字顯示」與着重語意的「訛字(符)修正」。前者不更動DOM的原始文字,僅在顯示時使用異體字或PUA字元;後者則直接替換原始字元,確保語意正確的字符被使用。 -

      -

      位以下元素中的字元在二種模式下,皆不會被替換:

      -
        -
      • 文字區塊表單textarea
      • -
      • 代碼code
      • -
      • 輸入鍵kbd
      • -
      • 計算機輸出示例samp
      • -
      • 格式預處理pre
      • -
      -
      -
      -

      着重字體效果的異體字顯示

      - -
      -

      PUA字元

      -

      提示:此功能僅在瀏覽器(IE9-11)無法正確顯示網頁字體han.woff下的變音符連字時啓用。你可以呼叫屬性Han.isCombLigaNormal(布林値)來判斷使用者瀏覽器是否能正確顯示變音連字。

      -
      -

      漢字標音的陽入韻符號

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      陽入韻顯示為測試結果
      󰁡
      󰁥
      󰁩
      󰁯
      󰁵
      ㆴ͘󳆴ㆴ͘
      ㆵ͘󳆵ㆵ͘
      ㆶ͘󳆶ㆶ͘
      ㆷ͘󳆷ㆷ͘
      -
      -
      -
      -
      -

      着重語意的訛字修正

      -

      提示:此功能爭議性較大,因此預設關閉。藉由執行Han( context )實例中的substInaccurateChar()方法來修正指定範圍內的訛字。

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      訛字(符) 替換為測試結果
      ·
      ·
      ⋯⋯……⋯⋯
      ──——──
      -
      -
      - - - - \ No newline at end of file +測試・字元的替換 — 漢字標準格式

      測試·字元的替換

      二種模式

      「漢字標準格式」腳本包含二種字元替換的模式——着重字體效果的「異體字顯示」與着重語意的「訛字(符)修正」。前者不更動DOM的原始文字,僅在顯示時使用異體字或PUA字元;後者則直接替換原始字元,確保語意正確的字符被使用。

      位以下元素中的字元在二種模式下,皆不會被替換:

      • 文字區塊表單textarea
      • 代碼code
      • 輸入鍵kbd
      • 計算機輸出示例samp
      • 格式預處理pre

      着重字體效果的異體字顯示

      PUA字元

      提示:此功能僅在瀏覽器(IE9-11)無法正確顯示網頁字體han.woff下的變音符連字時啓用。你可以呼叫屬性Han.isCombLigaNormal(布林値)來判斷使用者瀏覽器是否能正確顯示變音連字。

      漢字標音的陽入韻符號

      陽入韻顯示為測試結果
      󰁡
      󰁥
      󰁩
      󰁯
      󰁵
      ㆴ͘󳆴ㆴ͘
      ㆵ͘󳆵ㆵ͘
      ㆶ͘󳆶ㆶ͘
      ㆷ͘󳆷ㆷ͘

      着重語意的訛字修正

      提示:此功能爭議性較大,因此預設關閉。藉由執行Han( context )實例中的substInaccurateChar()方法來修正指定範圍內的訛字。

      訛字(符) 替換為測試結果
      ·
      ·
      ⋯⋯……⋯⋯
      ──——──
      \ No newline at end of file diff --git a/latest/test-amd.html b/latest/test-amd.html index 4249761b..ded90992 100644 --- a/latest/test-amd.html +++ b/latest/test-amd.html @@ -1,88 +1,7 @@ - - - - - 測試・AMD模組 — 漢字標準格式 - - - - - - - -
      -

      內容群組類

      -

      段落、清單

      -

      好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動!

      -

      頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。

      -

      詩篇段落

      - -

      地址格式

      - -

      有序清單

      -
        -
      1. 一級清單項目
      2. -
      3. 一級清單項目 -
          -
        1. 二級清單項目
        2. -
        3. 二級清單項目 -
            -
          1. 三級清單項目
          2. -
          3. 三級清單項目
          4. -
          -
        4. -
        -
      4. -
      5. 一級清單項目
      6. -
      7. 一級清單項目
      8. -
      -

      無序清單

      -
        -
      • 一級清單項目
      • -
      • 一級清單項目 -
          -
        • 二級清單項目
        • -
        • 二級清單項目 -
            -
          • 三級清單項目
          • -
          • 三級清單項目
          • -
          -
        • -
        -
      • -
      • 一級清單項目
      • -
      • 一級清單項目
      • -
      -

      引用區塊

      -
      -

      如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無!

      -
      ——姜慶《石人碼頭》
      -
      -

      未使用段落元素的引用區塊

      -
      時來數期沒道反先美別所金企感企媽失對談。 -
      ——新器急
      -
      -

      引用區塊中的引用區塊

      -
      -

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      -
      -

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      -
      -
      -

      圖表內的引用區塊

      -
      -
      -

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      -
      -
      這是圖表解說元素<figcaption>內的解說。
      -
      -

      格式預處理文字區塊

      -
      國寫親下二好灣整機生土、是看老排讓和保藝車市。
      +測試・AMD模組 — 漢字標準格式

      內容群組類

      段落、清單

      好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動!

      頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。

      詩篇段落

      地址格式

      有序清單

      1. 一級清單項目
      2. 一級清單項目
        1. 二級清單項目
        2. 二級清單項目
          1. 三級清單項目
          2. 三級清單項目
      3. 一級清單項目
      4. 一級清單項目

      無序清單

      • 一級清單項目
      • 一級清單項目
        • 二級清單項目
        • 二級清單項目
          • 三級清單項目
          • 三級清單項目
      • 一級清單項目
      • 一級清單項目

      引用區塊

      如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無!

      ——姜慶《石人碼頭》

      未使用段落元素的引用區塊

      時來數期沒道反先美別所金企感企媽失對談。
      ——新器急

      引用區塊中的引用區塊

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      圖表內的引用區塊

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      這是圖表解說元素<figcaption>內的解說。

      格式預處理文字區塊

      國寫親下二好灣整機生土、是看老排讓和保藝車市。
       
       Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et me.
       
      @@ -90,147 +9,17 @@ 

      格式預處理文字區塊

      長明期事生合了中文新等麼科出過能意等件教求加, 樓日里大下果個來。 -球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。
      -

      代碼區塊

      -
      void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document);
      -
      -
      -
      -

      章節類

      -

      文章區塊元素

      -

      文章區塊內的段落、清單

      -

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      -

      詩篇段落

      - -

      清單

      -
        -
      • 清單項目子
      • -
      • 清單項目丑
      • -
      -

      文章區塊內的重點

      -

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      -

      文章區塊內的圖表引用區塊

      -
      -
      -

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      -
      -
      這是文章內圖表解說元素<figcaption>的解說。
      -
      -

      文章區塊內的變音文字

      -

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      -

      文章內的引用區塊

      -
      -

      火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。

      -

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      -
      -

      文章內引用區塊中的引用區塊

      -
      -

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      -
      -

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      -
      -
      -

      文章引用區塊內的重點

      -
      -

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      -
      -

      文章引用區塊內的變音文字

      -
      -

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      -
      -
      -
      -
      -

      字級語意類

      超連結元素a示例
      - 註記元素u示例
      註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁
      - 來源元素cite示例
      重點元素strong示例
      - 術語元素dfn示例
      關鍵字元素b示例
      強調元素em示例
      變音文字元素i示例
      - 變數元素var示例
      - 引用元素q及子引用q元素示例示例
      - 訛訊元素s示例
      訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁
      代碼元素code示例
      輸入鍵元素kbd示例
      計算機輸出示例元素samp示例
      - 行間注元素 - ruby annotation - 示例
      複合式 - - 行間注 - 元素 - - hángjiānzhù - yuansu - - - ruby annotation - -
      直角 - - - - - - - - hángjiānzhù - yuánsù - - - ㄏㄤˊ - ㄐㄧㄢ - ㄓㄨˋ - ㄩㄢˊ - ㄙㄨˋ - - -

      其他

      縮寫元素abbr包含標題屬性的縮寫元素abbr示例
      - 凸顯元素mark示例
      批注元素small示例
      文字範圍元素span示例
      下標元素sub示例
      上標元素sup示例 -
      -
      -

      修訂類

      增訂元素ins示例
      增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁
      - 刪訂元素del示例
      刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁。 -
      -
      -

      特殊排版功能

      -

      漢字西文混排間隙

      -

      然而在Jan Tschichold和他的著作Asymmetric Typography流行之前,直至追溯回Gutenberg时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。 -

      - -

      地區變體字型及標點符號樣式

      -

      註:此處僅展示黑體,其餘字體樣式請參閱其他測試頁

      - - -

      台灣教育部式

      - -

      中國國標式

      - -

      - - - 韻 - - ji̍p-siann - - - ㆢㄧㆴ͘ - ㄒㄧㆩ - - -

      - -
      - - - \ No newline at end of file +球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。

      代碼區塊

      void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document);

      章節類

      文章區塊元素

      文章區塊內的段落、清單

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      詩篇段落

      清單

      • 清單項目子
      • 清單項目丑

      文章區塊內的重點

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      文章區塊內的圖表引用區塊

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      這是文章內圖表解說元素<figcaption>的解說。

      文章區塊內的變音文字

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      文章內的引用區塊

      火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      文章內引用區塊中的引用區塊

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      文章引用區塊內的重點

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      文章引用區塊內的變音文字

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      字級語意類

      超連結元素a示例
      註記元素u示例
      註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁
      來源元素cite示例
      重點元素strong示例
      術語元素dfn示例
      關鍵字元素b示例
      強調元素em示例
      變音文字元素i示例
      變數元素var示例
      引用元素q及子引用q元素示例示例
      訛訊元素s示例
      訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁
      代碼元素code示例
      輸入鍵元素kbd示例
      計算機輸出示例元素samp示例
      行間注元素ruby annotation示例
      複合式行間注元素hángjiānzhùyuansuruby annotation
      直角hángjiānzhùyuánsùㄏㄤˊㄐㄧㄢㄓㄨˋㄩㄢˊㄙㄨˋ

      其他

      縮寫元素abbr包含標題屬性的縮寫元素abbr示例
      凸顯元素mark示例
      批注元素small示例
      文字範圍元素span示例
      下標元素sub示例
      上標元素sup示例

      修訂類

      增訂元素ins示例
      增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁
      刪訂元素del示例
      刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁

      特殊排版功能

      漢字西文混排間隙

      然而在Jan Tschichold和他的著作Asymmetric Typography流行之前,直至追溯回Gutenberg时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。

      地區變體字型及標點符號樣式

      註:此處僅展示黑體,其餘字體樣式請參閱其他測試頁

      台灣教育部式

      中國國標式

      ji̍p-siannㆢㄧㆴ͘ㄒㄧㆩ

      \ No newline at end of file diff --git a/latest/test-commonjs-main.js b/latest/test-commonjs-main.js deleted file mode 100644 index 1397909b..00000000 --- a/latest/test-commonjs-main.js +++ /dev/null @@ -1,3 +0,0 @@ - -require('./han.min.js')().render() - diff --git a/latest/test-commonjs.html b/latest/test-commonjs.html index e745af7e..abe46f4b 100644 --- a/latest/test-commonjs.html +++ b/latest/test-commonjs.html @@ -1,88 +1,7 @@ - - - - - 測試・CommonJS模組 — 漢字標準格式 - - - - - - - -
      -

      內容群組類

      -

      段落、清單

      -

      好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動!

      -

      頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。

      -

      詩篇段落

      - -

      地址格式

      - -

      有序清單

      -
        -
      1. 一級清單項目
      2. -
      3. 一級清單項目 -
          -
        1. 二級清單項目
        2. -
        3. 二級清單項目 -
            -
          1. 三級清單項目
          2. -
          3. 三級清單項目
          4. -
          -
        4. -
        -
      4. -
      5. 一級清單項目
      6. -
      7. 一級清單項目
      8. -
      -

      無序清單

      -
        -
      • 一級清單項目
      • -
      • 一級清單項目 -
          -
        • 二級清單項目
        • -
        • 二級清單項目 -
            -
          • 三級清單項目
          • -
          • 三級清單項目
          • -
          -
        • -
        -
      • -
      • 一級清單項目
      • -
      • 一級清單項目
      • -
      -

      引用區塊

      -
      -

      如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無!

      -
      ——姜慶《石人碼頭》
      -
      -

      未使用段落元素的引用區塊

      -
      時來數期沒道反先美別所金企感企媽失對談。 -
      ——新器急
      -
      -

      引用區塊中的引用區塊

      -
      -

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      -
      -

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      -
      -
      -

      圖表內的引用區塊

      -
      -
      -

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      -
      -
      這是圖表解說元素<figcaption>內的解說。
      -
      -

      格式預處理文字區塊

      -
      國寫親下二好灣整機生土、是看老排讓和保藝車市。
      +測試・CommonJS模組 — 漢字標準格式

      內容群組類

      段落、清單

      好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動!

      頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。

      詩篇段落

      地址格式

      有序清單

      1. 一級清單項目
      2. 一級清單項目
        1. 二級清單項目
        2. 二級清單項目
          1. 三級清單項目
          2. 三級清單項目
      3. 一級清單項目
      4. 一級清單項目

      無序清單

      • 一級清單項目
      • 一級清單項目
        • 二級清單項目
        • 二級清單項目
          • 三級清單項目
          • 三級清單項目
      • 一級清單項目
      • 一級清單項目

      引用區塊

      如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無!

      ——姜慶《石人碼頭》

      未使用段落元素的引用區塊

      時來數期沒道反先美別所金企感企媽失對談。
      ——新器急

      引用區塊中的引用區塊

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      圖表內的引用區塊

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      這是圖表解說元素<figcaption>內的解說。

      格式預處理文字區塊

      國寫親下二好灣整機生土、是看老排讓和保藝車市。
       
       Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et me.
       
      @@ -90,147 +9,17 @@ 

      格式預處理文字區塊

      長明期事生合了中文新等麼科出過能意等件教求加, 樓日里大下果個來。 -球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。
      -

      代碼區塊

      -
      void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document);
      -
      -
      -
      -

      章節類

      -

      文章區塊元素

      -

      文章區塊內的段落、清單

      -

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      -

      詩篇段落

      - -

      清單

      -
        -
      • 清單項目子
      • -
      • 清單項目丑
      • -
      -

      文章區塊內的重點

      -

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      -

      文章區塊內的圖表引用區塊

      -
      -
      -

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      -
      -
      這是文章內圖表解說元素<figcaption>的解說。
      -
      -

      文章區塊內的變音文字

      -

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      -

      文章內的引用區塊

      -
      -

      火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。

      -

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      -
      -

      文章內引用區塊中的引用區塊

      -
      -

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      -
      -

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      -
      -
      -

      文章引用區塊內的重點

      -
      -

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      -
      -

      文章引用區塊內的變音文字

      -
      -

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      -
      -
      -
      -
      -

      字級語意類

      超連結元素a示例
      - 註記元素u示例
      註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁
      - 來源元素cite示例
      重點元素strong示例
      - 術語元素dfn示例
      關鍵字元素b示例
      強調元素em示例
      變音文字元素i示例
      - 變數元素var示例
      - 引用元素q及子引用q元素示例示例
      - 訛訊元素s示例
      訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁
      代碼元素code示例
      輸入鍵元素kbd示例
      計算機輸出示例元素samp示例
      - 行間注元素 - ruby annotation - 示例
      複合式 - - 行間注 - 元素 - - hángjiānzhù - yuansu - - - ruby annotation - -
      直角 - - - - - - - - hángjiānzhù - yuánsù - - - ㄏㄤˊ - ㄐㄧㄢ - ㄓㄨˋ - ㄩㄢˊ - ㄙㄨˋ - - -

      其他

      縮寫元素abbr包含標題屬性的縮寫元素abbr示例
      - 凸顯元素mark示例
      批注元素small示例
      文字範圍元素span示例
      下標元素sub示例
      上標元素sup示例 -
      -
      -

      修訂類

      增訂元素ins示例
      增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁
      - 刪訂元素del示例
      刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁。 -
      -
      -

      特殊排版功能

      -

      漢字西文混排間隙

      -

      然而在Jan Tschichold和他的著作Asymmetric Typography流行之前,直至追溯回Gutenberg时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。 -

      - -

      地區變體字型及標點符號樣式

      -

      註:此處僅展示黑體,其餘字體樣式請參閱其他測試頁

      - - -

      台灣教育部式

      - -

      中國國標式

      - -

      - - - 韻 - - ji̍p-siann - - - ㆢㄧㆴ͘ - ㄒㄧㆩ - - -

      - -
      - - - \ No newline at end of file +球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。

      代碼區塊

      void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document);

      章節類

      文章區塊元素

      文章區塊內的段落、清單

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      詩篇段落

      清單

      • 清單項目子
      • 清單項目丑

      文章區塊內的重點

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      文章區塊內的圖表引用區塊

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      這是文章內圖表解說元素<figcaption>的解說。

      文章區塊內的變音文字

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      文章內的引用區塊

      火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      文章內引用區塊中的引用區塊

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      文章引用區塊內的重點

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      文章引用區塊內的變音文字

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      字級語意類

      超連結元素a示例
      註記元素u示例
      註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁
      來源元素cite示例
      重點元素strong示例
      術語元素dfn示例
      關鍵字元素b示例
      強調元素em示例
      變音文字元素i示例
      變數元素var示例
      引用元素q及子引用q元素示例示例
      訛訊元素s示例
      訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁
      代碼元素code示例
      輸入鍵元素kbd示例
      計算機輸出示例元素samp示例
      行間注元素ruby annotation示例
      複合式行間注元素hángjiānzhùyuansuruby annotation
      直角hángjiānzhùyuánsùㄏㄤˊㄐㄧㄢㄓㄨˋㄩㄢˊㄙㄨˋ

      其他

      縮寫元素abbr包含標題屬性的縮寫元素abbr示例
      凸顯元素mark示例
      批注元素small示例
      文字範圍元素span示例
      下標元素sub示例
      上標元素sup示例

      修訂類

      增訂元素ins示例
      增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁
      刪訂元素del示例
      刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁

      特殊排版功能

      漢字西文混排間隙

      然而在Jan Tschichold和他的著作Asymmetric Typography流行之前,直至追溯回Gutenberg时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。

      地區變體字型及標點符號樣式

      註:此處僅展示黑體,其餘字體樣式請參閱其他測試頁

      台灣教育部式

      中國國標式

      ji̍p-siannㆢㄧㆴ͘ㄒㄧㆩ

      \ No newline at end of file diff --git a/latest/test-commonjs.js b/latest/test-commonjs.js index 67bb5bc8..5deedbd8 100644 --- a/latest/test-commonjs.js +++ b/latest/test-commonjs.js @@ -1,12 +1 @@ -(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;od;d++)void 0!==b[d].value&&a.setAttribute(b[d].name,b[d].value);else for(var e in b)b.hasOwnProperty(e)&&void 0!==b[e]&&a.setAttribute(e,b[e]);return a}},isIgnorable:function(a){return"WBR"===a.nodeName||a.nodeType===Node.COMMENT_NODE},makeArray:function(a){return Array.prototype.slice.call(a)},extend:function(a,b){var c="object"==typeof a||"function"==typeof a||"object"==typeof b;if(c){for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);return a}}},m=function(){var a="retain",b="first",d=c,e={}.toString;function f(a){return"[object Array]"==e.call(a)}function g(a){return String(a).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function h(){return i.apply(null,arguments)||j.apply(null,arguments)}function i(a,b,c,d,e){if(b&&!b.nodeType&&arguments.length<=2)return!1;var f="function"==typeof c;f&&(c=function(a){return function(b,c){return a(b.text,c.startIndex)}}(c));var g=j(b,{find:a,wrap:f?null:c,replace:f?c:"$"+(d||"&"),prepMatch:function(a,b){if(!a[0])throw"findAndReplaceDOMText cannot handle zero-length matches";if(d>0){var c=a[d];a.index+=a[0].indexOf(c),a[0]=c}return a.endIndex=a.index+a[0].length,a.startIndex=a.index,a.index=b,a},filterElements:e});return h.revert=function(){return g.revert()},!0}function j(a,b){return new k(a,b)}h.Finder=k;function k(b,c){c.portionMode=c.portionMode||a,this.node=b,this.options=c,this.prepMatch=c.prepMatch||this.prepMatch,this.reverts=[],this.matches=this.search(),this.matches.length&&this.processMatches()}return k.prototype={search:function(){var a,b=0,c=this.options.find,d=this.getAggregateText(),e=[];if(c="string"==typeof c?RegExp(g(c),"g"):c,c.global)while(a=c.exec(d))e.push(this.prepMatch(a,b++));else(a=d.match(c))&&e.push(this.prepMatch(a,0));return e},prepMatch:function(a,b){if(!a[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return a.endIndex=a.index+a[0].length,a.startIndex=a.index,a.index=b,a},getAggregateText:function(){var a=this.options.filterElements;return b(this.node);function b(c){if(3===c.nodeType)return c.data;if(a&&!a(c))return"";var d="";if(c=c.firstChild)do d+=b(c);while(c=c.nextSibling);return d}},processMatches:function(){var a=this.matches,b=this.node,c=this.options.filterElements,d,e,f=[],g=b,h=a.shift(),i=0,j=0,k=0,l,m=[b];a:while(!0){if(3===g.nodeType&&(!e&&g.length+i>=h.endIndex?e={node:g,index:k++,text:g.data.substring(h.startIndex-i,h.endIndex-i),indexInMatch:i-h.startIndex,indexInNode:h.startIndex-i,endIndexInNode:h.endIndex-i,isEnd:!0}:d&&f.push({node:g,index:k++,text:g.data,indexInMatch:i-h.startIndex,indexInNode:0}),!d&&g.length+i>h.startIndex&&(d={node:g,index:k++,indexInMatch:0,indexInNode:h.startIndex-i,endIndexInNode:h.endIndex-i,text:g.data.substring(h.startIndex-i,h.endIndex-i)}),i+=g.data.length),l=1===g.nodeType&&c&&!c(g),d&&e){if(g=this.replaceMatch(h,d,f,e),i-=e.node.data.length-e.endIndexInNode,d=null,e=null,f=[],h=a.shift(),k=0,j++,!h)break}else if(!l&&(g.firstChild||g.nextSibling)){g.firstChild?(m.push(g),g=g.firstChild):g=g.nextSibling;continue}while(!0){if(g.nextSibling){g=g.nextSibling;break}if(g=m.pop(),g===b)break a}}},revert:function(){for(var a=this.reverts.length;a--;)this.reverts[a]();this.reverts=[]},prepareReplacementString:function(a,c,d,e){var f=this.options.portionMode;return f===b&&c.indexInMatch>0?"":(a=a.replace(/\$(\d+|&|`|')/g,function(a,b){var c;switch(b){case"&":c=d[0];break;case"`":c=d.input.substring(0,d.startIndex);break;case"'":c=d.input.substring(d.endIndex);break;default:c=d[+b]}return c}),f===b?a:c.isEnd?a.substring(c.indexInMatch):a.substring(c.indexInMatch,c.indexInMatch+c.text.length))},getPortionReplacementNode:function(a,b,c){var e=this.options.replace||"$&",f=this.options.wrap;if(f&&f.nodeType){var g=d.createElement("div");g.innerHTML=f.outerHTML||(new XMLSerializer).serializeToString(f),f=g.firstChild}if("function"==typeof e)return e=e(a,b,c),e&&e.nodeType?e:d.createTextNode(String(e));var h="string"==typeof f?d.createElement(f):f;return e=d.createTextNode(this.prepareReplacementString(e,a,b,c)),e.data&&h?(h.appendChild(e),h):e},replaceMatch:function(a,b,c,e){var f=b.node,g=e.node,h,i;if(f===g){var j=f;b.indexInNode>0&&(h=d.createTextNode(j.data.substring(0,b.indexInNode)),j.parentNode.insertBefore(h,j));var k=this.getPortionReplacementNode(e,a);return j.parentNode.insertBefore(k,j),e.endIndexInNoden;++n){var p=c[n],q=this.getPortionReplacementNode(p,a);p.node.parentNode.replaceChild(q,p.node),this.reverts.push(function(a,b){return function(){b.parentNode.replaceChild(a.node,b)}}(p,q)),m.push(q)}var r=this.getPortionReplacementNode(e,a);return f.parentNode.insertBefore(h,f),f.parentNode.insertBefore(l,f),f.parentNode.removeChild(f),g.parentNode.insertBefore(r,g),g.parentNode.insertBefore(i,g),g.parentNode.removeChild(g),this.reverts.push(function(){h.parentNode.removeChild(h),l.parentNode.replaceChild(f,l),i.parentNode.removeChild(i),r.parentNode.replaceChild(g,r)}),r}},h}(),n="style, script",o=function(a,b,c,d,e){return new o.prototype.init(a,b,c,d,e)};o.prototype={constructor:o,context:"",finder:[],init:function(a,b,c,d,e){return this.context=a,this.filterOut(b),"string"==typeof c&&this[c]?this[c](d,e):this},filterOutSelector:n,filterOutFn:function(a){return l.matches(a,this.filterOutSelector)?!1:!0},filterOut:function(a){return"string"==typeof a?this.filterOutSelector=a:"function"==typeof a&&(this.filterOutFn=a),this},replace:function(a,b){var c=this;return this.finder.push(m(this.context,{find:a,replace:b,filterElements:function(a){return c.filterOutFn(a)}})),this},wrap:function(a,b){var c=this;return c.finder.push(m(c.context,{find:a,wrap:b,filterElements:function(a){return c.filterOutFn(a)}})),this},revert:function(a){var b=this.finder.length,a=Number(a)||0===a?Number(a):"all"===a?b:1;if("undefined"==typeof b||0===b)return this;a>this.finder.length&&(a=b);for(var c=parseInt(a);c>0;c--)this.finder.pop().revert();return this},jinzify:function(){var a=this.filterOutSelector;return this.filterOutSelector+=", jinze",this.replace(k.jinze.touwei,function(a,b){var c=b[0],d=l.create("",c),e=l.create("jinze","touwei");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}).replace(k.jinze.wei,function(a,b){var c=b[0],d=l.create("",c),e=l.create("jinze","wei");return e.appendChild(d),0===a.index?e:""}).replace(k.jinze.tou,function(a,b){var c=b[0],d=l.create("",c),e=l.create("jinze","tou");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}).replace(k.jinze.middle,function(a,b){var c=b[0],d=l.create("",c),e=l.create("jinze","middle");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}),this.filterOutSelector=a,this},groupify:function(){return this.wrap(k.char.biaodian.group[0],l.clone(l.create("char_group","biaodian cjk"))).wrap(k.char.biaodian.group[1],l.clone(l.create("char_group","biaodian cjk"))),this},charify:function(a){var a=l.extend({hanzi:"individual",liga:"liga",word:"group",latin:"group",ellinika:"group",kirillica:"group",kana:"none",eonmun:"none"},a||{});return"group"===a.hanzi&&this.wrap(k.char.hanzi.group,l.clone(l.create("char_group","hanzi cjk"))),"individual"===a.hanzi&&this.wrap(k.char.hanzi.individual,l.clone(l.create("char","hanzi cjk"))),("individual"===a.hanzi||"biaodian"===a.hanzi||"liga"===a.liga)&&("none"!==a.hanzi&&this.replace(k.char.biaodian.all,function(a,b){var c=b[0],d=l.create("",c),e="biaodian cjk "+(c.match(k.char.biaodian.open)?"open":c.match(k.char.biaodian.close)?"close end":c.match(k.char.biaodian.end)?"end":""),f=l.create("char",e),g=c.charCodeAt(0).toString(16);return f.setAttribute("unicode",g),f.appendChild(d),f}),this.replace("liga"===a.liga?k.char.biaodian.liga:new RegExp("("+j.biaodian.liga+")","g"),function(a,b){var c=b[0],d=l.create("",c),e=l.create("char","biaodian liga cjk"),f=c.charCodeAt(0).toString(16);return e.setAttribute("unicode",f),e.appendChild(d),e})),"none"!==a.word&&this.wrap(k.char.word,l.clone(l.create("word"))),("none"!==a.latin||"none"!==a.ellinika||"none"!==a.kirillica)&&this.wrap(k.char.punct.all,l.clone(l.create("char","punct"))),"individual"===a.latin&&this.wrap(k.char.alphabet.latin,l.clone(l.create("char","alphabet latin"))),"individual"===a.ellinika&&this.wrap(k.char.alphabet.ellinika,l.clone(l.create("char","alphabet ellinika greek"))),"individual"===a.kirillica&&this.wrap(k.char.alphabet.kirillica,l.clone(l.create("char","alphabet kirillica cyrillic"))),this}},o.prototype.init.prototype=o.prototype,h.find=o,void["replace","wrap","revert","jinzify","charify"].forEach(function(a){h.fn[a]=function(){return this.finder||(this.finder=h.find(this.context)),this.finder[a](arguments[0],arguments[1]),this}});var p={JS_RENDERED_CLASS:"hyu-js-rendered"};function q(a,b){var c=l.create("canvas"),d;return c.width="50",c.height="20",c.style.display="none",e.appendChild(c),d=c.getContext("2d"),d.textBaseline="top",d.font="15px "+b+", sans-serif",d.fillStyle="black",d.strokeStyle="black",d.fillText(a,0,0),[c,d]}function r(a,b,c){var a=a,b=b,c=c||"\u8fadQ",d;try{b=q(c,b||"sans-serif"),a=q(c,a);for(var e=1;20>=e;e++)for(var f=1;50>=f;f++){if("undefined"!==d&&a[1].getImageData(f,e,1,1).data[3]!==b[1].getImageData(f,e,1,1).data[3]){d=!0;break}if(d)break;50!==f||20!==e||d||(d=!1)}return l.remove(b[0]),l.remove(a[0]),b=null,a=null,d}catch(g){return!1}}p.detectFont=r,p.support=function(){var b="Webkit Moz ms".split(" "),f=l.create("_"),g={};function h(a){var c=a.charAt(0).toUpperCase()+a.slice(1),d=(a+" "+b.join(c+" ")+c).split(" "),e;return d.forEach(function(a){"string"==typeof f.style[a]&&(e=!0)}),e||!1}function i(a,b){var c=e||l.create("body"),f=l.create("div"),g=e?f:c,b="function"==typeof b?b:function(){},h,i,j;return h=[""].join(""),g.innerHTML+=h,c.appendChild(f),e||(c.style.background="",c.style.overflow="hidden",j=d.style.overflow,d.style.overflow="hidden",d.appendChild(c)),i=b(g,a),l.remove(g),e||(d.style.overflow=j),!!i}function j(b,d){var e;return a.getComputedStyle?e=c.defaultView.getComputedStyle(b,null).getPropertyValue(d):b.currentStyle&&(e=b.currentStyle[d]),e}return{ruby:function(){var a=l.create("ruby"),b=l.create("rt"),c=l.create("rp"),e;return a.appendChild(c),a.appendChild(b),d.appendChild(a),e="none"===j(c,"display")||"ruby"===j(a,"display")&&"ruby-text"===j(b,"display")?!0:!1,d.removeChild(a),a=null,b=null,c=null,e}(),fontface:function(){var a;return i('@font-face { font-family: font; src: url("http://"); }',function(b,c){var d=l.qsa("style",b)[0],e=d.sheet||d.styleSheet,f=e?e.cssRules&&e.cssRules[0]?e.cssRules[0].cssText:e.cssText||"":"";a=/src/i.test(f)&&0===f.indexOf(c.split(" ")[0])}),a}(),unicoderange:function(){var a;return i('@font-face{font-family:test-for-unicode-range;src:local(Arial),local("Droid Sans")}@font-face{font-family:test-for-unicode-range;src:local("Times New Roman"),local(Times),local("Droid Serif");unicode-range:U+270C}',function(){a=!p.detectFont("test-for-unicode-range",'Arial, "Droid Sans"',"Q")}),a}(),columnwidth:h("columnWidth"),textemphasis:h("textEmphasis"),writingmode:h("writingMode")}}(),p.initCond=function(a){var a=a||d,b="",c;a.classList.add(p.JS_RENDERED_CLASS);for(var e in p.support)c=(p.support[e]?"":"no-")+e,a.classList.add(c),b+=c+" ";return b};function s(a,b,c){var d=l.create("ru"),b=l.clone(b),c=c||{};return Array.isArray(a)?d.innerHTML=a.map(function(a){return a.outerHTML}).join(""):d.appendChild(l.clone(a)),d.appendChild(b),c.annotation=b.textContent,l.setAttr(d,c),d}function t(a,b){var a=l.clone(a),c=l.create("ru"),d=l.create("zhuyin"),e=l.create("yin"),f=l.create("diao"),g=b.textContent,h,i,j,m;return h=g.replace(k.zhuyin.diao,""),m=h?h.length:0,i=g.replace(h,"").replace(/[\u02C5]/g,"\u02c7").replace(/[\u030D]/g,"\u0358"),j=g.replace(k.zhuyin.form,function(a,b,c){return[a?"S":null,b?"J":null,c?"Y":null].join("")}),f.innerHTML=i,e.innerHTML=h,d.appendChild(e),d.appendChild(f),c.appendChild(a),c.appendChild(d),l.setAttr(c,{zhuyin:"",diao:i,length:m,form:j}),c}l.extend(p,{renderElem:function(a){this.renderRuby(a),this.renderDecoLine(a),this.renderDecoLine(a,"s, del"),this.renderEm(a)},renderDecoLine:function(a,b){var b=b||"u, ins",c=l.qsa(b,a),d=new RegExp("^("+b.replace(/\,\s?/g,"|")+")$","ig");c.forEach(function(a){var b;do if(b=(b||a).nextSibling,!b)return;while(l.isIgnorable(b));b.nodeName.match(d)&&b.classList.add("adjacent")})},renderEm:function(a,b){var c=b?"qsa":"tag",b=b||"em",d=l[c](b,a);d.forEach(function(a){var b=o(a);p.support.textemphasis||b.jinzify(),b.groupify().charify(p.support.textemphasis?{hanzi:"biaodian",word:"punctuation"}:{latin:"individual",ellinika:"individual",kirillica:"individual"})})},renderRuby:function(a,b){var c=b?"qsa":"tag",b=b||"ruby",d=l[c](b,a),e=l.qsa(b+", rtc",a);e.forEach(function(a){var b=a.classList;b.contains("pinyin")?b.add("romanization"):b.contains("mps")&&b.add("zhuyin"),b.contains("romanization")&&b.add("annotation")}),d.forEach(function(a){var c=a.classList,d=!p.support.ruby||c.contains("zhuyin")||c.contains("complex")||c.contains("rightangle"),e,f,g,h,i,j;d&&(e=l.create("!"),e.appendChild(l.clone(a)),f=l.qsa(b,e)[0],(!p.support.ruby||c.contains("zhuyin"))&&l.tag("rt",f).forEach(function(a){var b=l.create("!"),d=[],e;do{if(e=(e||a).previousSibling,!e||e.nodeName.match(/(r[ubt])/i))break;b.insertBefore(l.clone(e),b.firstChild),d.push(e)}while(!e.nodeName.match(/(r[ubt])/i));h=c.contains("zhuyin")?t(b,a):s(b,a);try{a.parentNode.replaceChild(h,a),d.forEach(function(a){l.remove(a)})}catch(f){}}),(c.contains("complex")||c.contains("rightangle"))&&(g=h=l.tag("rb",f),i=g.length,!function(b){b&&(h=l.tag("rt",b).map(function(a,b){if(g[b]){var c=t(g[b],a);try{g[b].parentNode.replaceChild(c,g[b])}catch(d){}return c}}),l.remove(b),a.setAttribute("rightangle",""))}(f.querySelector("rtc.zhuyin")),l.qsa("rtc:not(.zhuyin)",f).forEach(function(b,d){var e;e=l.tag("rt",b).map(function(b,e){var f=Number(b.getAttribute("rbspan")||1),g=0,j=[],k,m;f>i&&(f=i);do{try{k=h.shift(),j.push(k)}catch(n){}g+=Number(k.getAttribute("span")||1)}while(f>g);if(g>f){if(j.length>1)return void console.error("An impossible `rbspan` value detected.",a);j=l.tag("rb",j[0]),h=j.slice(f).concat(h),j=j.slice(0,f),g=f}m=s(j,b,{"class":c,span:g,order:d});try{j[0].parentNode.replaceChild(m,j.shift()),j.forEach(function(a){l.remove(a)})}catch(n){}return m}),h=e,l.remove(b)})),j=l.create("hruby"),j.innerHTML=e.firstChild.innerHTML,l.setAttr(j,a.attributes),j.normalize(),a.parentNode.replaceChild(j,a))})}}),h.normalize=p,h.support=p.support,h.detectFont=p.detectFont,h.fn.initCond=function(){return this.condition.classList.add("han-js-rendered"),h.normalize.initCond(this.condition),this},void["Elem","DecoLine","Em","Ruby"].forEach(function(a){var b="render"+a;h.fn[b]=function(a){return h.normalize[b](this.context,a),this}}),l.extend(h.support,{heiti:!0,songti:h.detectFont('"Han Songti"'),"songti-gb":h.detectFont('"Han Songti GB"'),kaiti:h.detectFont('"Han Kaiti"'),fangsong:h.detectFont('"Han Fangsong"')});var u="* > hws:first-child, * > wbr:first-child + hws, wbr:first-child + wbr + hws",v=function(){var a=l.create("div");return a.appendChild(l.create("","0-")),a.appendChild(l.create("","2")),a.normalize(),2!==a.firstChild.length}(),w;w=l.create("hws"),w.innerHTML=" ",l.extend(h,{isNodeNormalizeNormal:v,renderHWS:function(a,b){var a=a||c,d=b?"strict":"base",e=h.find(a);return e.filterOutSelector+=b?", textarea, code, kbd, samp, pre":", textarea",e.replace(h.TYPESET.hws[d][0],"$1$2").replace(h.TYPESET.hws[d][1],"$1$2").replace(/(['"]+)(.+?)\1/gi,"$1$2$1").replace("",function(){return l.clone(w)}),l.qsa(u,a).forEach(function(a){var b=a.parentNode,c=b.firstChild;while(l.isIgnorable(c))if(c=c.nextSibling,!c)return;while("HWS"===c.nodeName)if(l.remove(c,b),c=b.parentNode.insertBefore(l.clone(w),b),b=b.parentNode,v&&b.normalize(),c!==b.firstChild)break}),v&&a.normalize(),e}}),l.extend(h.fn,{HWS:null,renderHWS:function(a){return h.renderHWS(this.context,a),this.HWS=l.tag("hws",this.context),this},revertHWS:function(){return this.HWS.forEach(function(a){l.remove(a)}),this}}),h.renderJiya=function(a){var a=a||c,b=[h.find(a)];return b[0].filterOutSelector+=", textarea, code, kbd, samp, pre, jinze, em",b[0].groupify(),l.qsa("char_group.biaodian",a).forEach(function(a){b.push(h(a).charify({hanzi:"biaodian",liga:"liga",word:"none",latin:"none",ellinika:"none",kirillica:"none"}))}),b},l.extend(h.fn,{jiya:null,renderJiya:function(){return this.jiya=h.renderJiya(this.context),this},revertJiya:function(){try{this.jiya.revert("all")}catch(a){}return this}});var x;x=l.create("char","biaodian cjk middle"),x.setAttribute("unicode","b7"),h.correctBasicBD=function(a,b){var a=a||c,d;(!h.support.unicoderange||b)&&(d=h.find(a),d.filteredElemList+=" em",d.wrap(/\u00B7/g,l.clone(x)).charify({liga:"liga",hanzi:"none",word:"none",latin:"none",ellinika:"none",kirillica:"none"}))},l.extend(h.fn,{basicBD:null,correctBasicBD:function(a){return this.basicBD=h.correctBasicBD(this.context,a),this},revertBasicBD:function(){try{this.basicBD.revert("all")}catch(a){}return this}});var y="ru[annotation]",z=" textarea code kbd samp pre",A=function(){var a=e||l.create("body"),b=l.create("div"),c=l.create("span"),f=e?b:a,g,h,i;return e?e.appendChild(f):(a.style.background="",a.style.overflow="hidden",h=d.style.overflow,d.style.overflow="hidden",d.appendChild(a)),c.innerHTML="i̍",c.style.fontFamily="sans-serif",c.style.display="inline-block",g=l.clone(c),g.style.fontFamily='"Romanization Sans"',f.appendChild(c),f.appendChild(g),i=c.clientWidth!==g.clientWidth,l.remove(f),e||(d.style.overflow=h),i}(),B=h.TYPESET["display-as"]["comb-liga-pua"],C=h.TYPESET["inaccurate-char"],D=l.create("char","comb-liga"),E=l.create("inner");return l.extend(h,{isCombLigaNormal:A,substCombLigaWithPUA:function(a){var a=a||c,b=h.find(a);if(!A)return b.filteredElemList+=z,B.forEach(function(a){b.replace(new RegExp(a[0],"ig"),function(b,c){var d=l.clone(D),e=l.clone(E);return e.innerHTML=c[0],d.appendChild(e),d.setAttribute("display-as",a[1]),0===b.index?d:""})}),l.qsa(y,a).forEach(function(a){var b=a.getAttribute("annotation");B.slice(0,5).forEach(function(a){b=b.replace(new RegExp(a[0],"ig"),a[1])}),a.setAttribute("annotation",b)}),b},substInaccurateChar:function(a){var a=a||c,b=h.find(a);b.filteredElemList+=z,C.forEach(function(a){b.replace(new RegExp(a[0],"ig"),a[1])})}}),l.extend(h.fn,{"comb-liga":null,"inaccurate-char":null,substCombLigaWithPUA:function(){return this["comb-liga"]=h.substCombLigaWithPUA(this.context),this},revertCombLigaWithPUA:function(){try{this["comb-liga"].revert("all")}catch(a){}return this},substInaccurateChar:function(){return this["inaccurate-char"]=h.substInaccurateChar(this.context),this},revertInaccurateChar:function(){try{this["inaccurate-char"].revert("all")}catch(a){}return this}}),a.addEventListener("DOMContentLoaded",function(){var a;d.classList.contains("han-init")?h.init():(a=c.querySelector(".han-init-context"))&&(h.init=h(a).render())}),"function"==typeof define&&define.amd?define(function(){return h}):("undefined"==typeof b||b===!1)&&(a.Han=h),h}); -},{}],2:[function(require,module,exports){ - -require('./han.min.js')().render() - - -},{"./han.min.js":1}]},{},[2]); +!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=f;f++)for(var g=1;50>=g;g++){if("undefined"!==e&&a[1].getImageData(g,f,1,1).data[3]!==b[1].getImageData(g,f,1,1).data[3]){e=!0;break}if(e)break;50!==g||20!==f||e||(e=!1)}return p.remove(b[0]),p.remove(a[0]),b=null,a=null,e}catch(h){return!1}}function e(a,b,c){var d=p.create("ru"),b=p.clone(b),c=c||{};return Array.isArray(a)?d.innerHTML=a.map(function(a){return"undefined"==typeof a?"":a.outerHTML}).join(""):d.appendChild(p.clone(a)),d.appendChild(b),c.annotation=b.textContent,p.setAttr(d,c),d}function f(a,b){var c,d,e,f,a=p.clone(a),g=p.create("ru"),h=p.create("zhuyin"),i=p.create("yin"),j=p.create("diao"),k=b.textContent;return c=k.replace(o.zhuyin.diao,""),f=c?c.length:0,d=k.replace(c,"").replace(/[\u02C5]/g,"\u02c7").replace(/[\u030D]/g,"\u0358"),e=k.replace(o.zhuyin.form,function(a,b,c){return[a?"S":null,b?"J":null,c?"Y":null].join("")}),j.innerHTML=d,i.innerHTML=c,h.appendChild(i),h.appendChild(j),g.appendChild(a),g.appendChild(h),p.setAttr(g,{zhuyin:"",diao:d,length:f,form:e}),g}var g=a.document,h=g.documentElement,i=g.body,j="3.1.0",k=["initCond","renderElem","renderJiya","renderHWS","correctBasicBD","substCombLigaWithPUA"],l=function(a,b){return new l.fn.init(a,b)},m=function(){return arguments[0]&&(this.context=arguments[0]),arguments[1]&&(this.condition=arguments[1]),this};l.version=j,l.fn=l.prototype={version:j,constructor:l,context:i,condition:h,routine:k,init:m,setRoutine:function(a){return Array.isArray(a)&&(this.routine=a),this},render:function(a){var b=this,a=Array.isArray(a)?a:this.routine;return a.forEach(function(a){try{"string"==typeof a?b[a]():Array.isArray(a)&&b[a.shift()].apply(b,a)}catch(c){}}),this}},l.fn.init.prototype=l.fn,l.init=function(){return l.init=l().render()};var n={punct:{base:"[\u2026,.;:!?\u203d_]",sing:"[\u2010-\u2014\u2026]",middle:"[\\/~\\-&\u2010-\u2014_]",open:"['\"\u2018\u201c\\(\\[\xa1\xbf\u2e18\xab\u2039\u201a\u201c\u201e]",close:"['\"\u201d\u2019\\)\\]\xbb\u203a\u201b\u201d\u201f]",end:"['\"\u201d\u2019\\)\\]\xbb\u203a\u201b\u201d\u201f\u203c\u203d\u2047-\u2049,.;:!?]"},biaodian:{base:"[\ufe30\uff0e\u3001\uff0c\u3002\uff1a\uff1b\uff1f\uff01\u30fc]",liga:"[\u2014\u2026\u22ef]",middle:"[\xb7\uff3c\uff0f\uff0d\u30a0\uff06\u30fb\uff3f]",open:"[\u300c\u300e\u300a\u3008\uff08\u3014\uff3b\uff5b\u3010\u3016]",close:"[\u300d\u300f\u300b\u3009\uff09\u3015\uff3d\uff5d\u3011\u3017]",end:"[\u300d\u300f\u300b\u3009\uff09\u3015\uff3d\uff5d\u3011\u3017\ufe30\uff0e\u3001\uff0c\u3002\uff1a\uff1b\uff1f\uff01\u30fc]"},hanzi:{base:"[\u4e00-\u9fff\u3400-\u4db5\u31c0-\u31e3\u3007\ufa0e\ufa0f\ufa11\ufa13\ufa14\ufa1f\ufa21\ufa23\ufa24\ufa27-\ufa29]|[\ud800-\udbff][\udc00-\udfff]",desc:"[\u2ff0-\u2ffa]",radical:"[\u2f00-\u2fd5\u2e80-\u2ef3]"},latin:{base:"[A-Za-z0-9\xc0-\xff\u0100-\u017f\u0180-\u024f\u2c60-\u2c7f\ua720-\ua7ff\u1e00-\u1eff]",combine:"[\u0300-\u0341\u1dc0-\u1dff]"},ellinika:{base:"[0-9\u0370-\u03ff\u1f00-\u1fff]",combine:"[\u0300-\u0345\u1dc0-\u1dff]"},kirillica:{base:"[0-9\u0400-\u0482\u048a-\u04ff\u0500-\u052f\ua640-\ua66e\ua67e-\ua697]",combine:"[\u0483-\u0489\u2de0-\u2dff\ua66f-\ua67d\ua69f]"},kana:{base:"[\u30a2\u30a4\u30a6\u30a8\u30aa-\u30fa\u3042\u3044\u3046\u3048\u304a-\u3094\u309f\u30ff]|\ud82c[\udc00-\udc01]",small:"[\u3041\u3043\u3045\u3047\u3049\u30a1\u30a3\u30a5\u30a7\u30a9\u3063\u3083\u3085\u3087\u308e\u3095\u3096\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u31f0-\u31ff]",combine:"[\u3099-\u309c]",half:"[\uff66-\uff9f]",mark:"[\u30a0\u309d\u309e\u30fb-\u30fe]"},eonmun:{base:"[\uac00-\ud7a3]",letter:"[\u1100-\u11ff\u314f-\u3163\u3131-\u318e\ua960-\ua97c\ud7b0-\ud7fb]",half:"[\uffa1-\uffdc]"},zhuyin:{base:"[\u3105-\u312d\u31a0-\u31ba]",initial:"[\u3105-\u3119\u312a-\u312c\u31a0-\u31a3]",medial:"[\u3127-\u3129]","final":"[\u311a-\u3129\u312d\u31a4-\u31b3\u31b8-\u31ba]",tone:"[\u02d9\u02ca\u02c5\u02c7\u02cb\u02ea\u02eb]",ruyun:"[\u31b4-\u31b7][\u0358\u030d]?"}},o=function(){var a="[\\x20\\t\\r\\n\\f]",b=n.punct.open,c=(n.punct.close,n.punct.end),d=n.punct.middle,e=n.punct.sing,f=b+"|"+c+"|"+d,g=n.biaodian.open,h=n.biaodian.close,i=n.biaodian.end,j=n.biaodian.middle,k=n.biaodian.liga+"{2}",l=g+"|"+i+"|"+j,m=n.kana.base+n.kana.combine+"?",o=n.kana.small+n.kana.combine+"?",p=(n.kana.half,n.eonmun.base+"|"+n.eonmun.letter),q=n.eonmun.half,r=n.hanzi.base+"|"+n.hanzi.desc+"|"+n.hanzi.radical+"|"+m,s=n.ellinika.combine,t=n.latin.base+s+"*",u=n.ellinika.base+s+"*",v=n.kirillica.combine,w=n.kirillica.base+v+"*",x=t+"|"+u+"|"+w,y="['\u2019]",z=r+"|("+x+"|"+y+")+",A=n.zhuyin.initial,B=n.zhuyin.medial,C=n.zhuyin["final"],D=n.zhuyin.tone+"|"+n.zhuyin.ruyun;return{"char":{punct:{all:new RegExp("("+f+")","g"),open:new RegExp("("+b+")","g"),end:new RegExp("("+c+")","g"),sing:new RegExp("("+e+")","g")},biaodian:{all:new RegExp("("+l+")","g"),open:new RegExp("("+g+")","g"),close:new RegExp("("+h+")","g"),end:new RegExp("("+i+")","g"),liga:new RegExp("("+k+")","g"),group:[new RegExp("("+g+"|"+j+"|"+i+"){2,}","g"),new RegExp("("+k+g+")","g")]},hanzi:{individual:new RegExp("("+r+")","g"),group:new RegExp("("+r+")+","g")},word:new RegExp("("+t+"|"+u+"|"+w+"|"+f+")+","ig"),alphabet:{latin:new RegExp("("+t+")","ig"),ellinika:new RegExp("("+u+")","ig"),kirillica:new RegExp("("+w+")","ig"),kana:new RegExp("("+m+")","g"),smallkana:new RegExp("("+o+")","g"),eonmun:new RegExp("("+p+")","g"),halfeonmun:new RegExp("("+q+")","g")}},jinze:{touwei:new RegExp("("+g+"+)("+z+")("+i+"+)","ig"),tou:new RegExp("("+g+"+)("+z+")","ig"),wei:new RegExp("("+z+")("+i+"+)","ig"),middle:new RegExp("("+z+")("+j+")("+z+")","ig")},zhuyin:{form:new RegExp("^\u02d9?("+A+")?("+B+")?("+C+")?("+D+")?$"),diao:new RegExp("("+D+")","g")},hws:{base:[new RegExp("("+r+")("+x+"|"+b+")","ig"),new RegExp("("+x+"|"+c+")("+r+")","ig")],strict:[new RegExp("("+r+")"+a+"?("+x+"|"+b+")","ig"),new RegExp("("+x+"|"+c+")"+a+"?("+r+")","ig")]},"display-as":{"ja-font-for-hant":["\u67e5 \u67fb","\u555f \u5553","\u9109 \u9115","\u503c \u5024","\u6c61 \u6c5a"],"comb-liga-pua":[["a[\u030d\u0358]","\udb80\udc61"],["e[\u030d\u0358]","\udb80\udc65"],["i[\u030d\u0358]","\udb80\udc69"],["o[\u030d\u0358]","\udb80\udc6f"],["u[\u030d\u0358]","\udb80\udc75"],["\u31b4[\u030d\u0358]","\udb8c\uddb4"],["\u31b5[\u030d\u0358]","\udb8c\uddb5"],["\u31b6[\u030d\u0358]","\udb8c\uddb6"],["\u31b7[\u030d\u0358]","\udb8c\uddb7"]]},"inaccurate-char":[["[\u2022\u2027]","\xb7"],["\u22ef\u22ef","\u2026\u2026"],["\u2500\u2500","\u2014\u2014"],["\u2035","\u2018"],["\u2032","\u2019"],["\u2036","\u201c"],["\u2033","\u201d"]]}}();l.UNICODE=n,l.TYPESET=o,l.UNICODE.cjk=l.UNICODE.hanzi,l.UNICODE.greek=l.UNICODE.ellinika,l.UNICODE.cyrillic=l.UNICODE.kirillica,l.UNICODE.hangul=l.UNICODE.eonmun,l.TYPESET["char"].cjk=l.TYPESET["char"].hanzi,l.TYPESET["char"].alphabet.greek=l.TYPESET["char"].alphabet.ellinika,l.TYPESET["char"].alphabet.cyrillic=l.TYPESET["char"].alphabet.kirillica,l.TYPESET["char"].alphabet.hangul=l.TYPESET["char"].alphabet.eonmun;var p={id:function(a,b){return(b||g).getElementById(a)},tag:function(a,b){return this.makeArray((b||g).getElementsByTagName(a))},qsa:function(a,b){return this.makeArray((b||g).querySelectorAll(a))},create:function(a,b){var a="!"===a?g.createDocumentFragment():""===a?g.createTextNode(b||""):g.createElement(a);try{b&&(a.className=b)}catch(c){}return a},clone:function(a,b){return a.cloneNode(b||!0)},remove:function(a,b){return(b||a.parentNode).removeChild(a)},setAttr:function(a,b){if("object"==typeof b){var c=b.length;if("object"==typeof b[0]&&"name"in b[0])for(var d=0;c>d;d++)void 0!==b[d].value&&a.setAttribute(b[d].name,b[d].value);else for(var e in b)b.hasOwnProperty(e)&&void 0!==b[e]&&a.setAttribute(e,b[e]);return a}},isIgnorable:function(a){return"WBR"===a.nodeName||a.nodeType===Node.COMMENT_NODE},makeArray:function(a){return Array.prototype.slice.call(a)},extend:function(a,b){var c="object"==typeof a||"function"==typeof a||"object"==typeof b;if(c){for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);return a}}},q=function(b){function c(a,b,c){var d=Element.prototype,e=d.matches||d.mozMatchesSelector||d.msMatchesSelector||d.webkitMatchesSelector;return a instanceof Element?e.call(a,b):c&&/^[39]$/.test(a.nodeType)?!0:!1}var d="0.1.2",e="style, script, head title",f=a||{},g=f.document||void 0;if("undefined"==typeof g)throw new Error("Fibre requires a DOM-supported environment.");var h=function(a){return new h.fn.init(a)};return h.version=d,h.matches=c,h.fn=h.prototype={constructor:h,version:d,context:void 0,contextSelector:null,finder:[],init:function(a){if(!a)throw new Error("A context is required for Fibre to initialise.");return a instanceof Node?this.context=a:"string"==typeof a&&(this.contextSelector=a,this.context=g.querySelector(a)),this},filterElemFn:function(a){return c(a,this.filterSelector,!0)&&!c(a,this.filterOutSelector)},filterSelector:"*",filter:function(a){switch(typeof a){case"string":this.filterSelector=a;break;case"function":this.filterElemFn=a;break;default:return this}return this},filterOutSelector:e,filterOut:function(a,b){switch(typeof a){case"string":"undefined"!=typeof b&&b===!0?this.filterOutSelector+=", "+a:this.filterOutSelector=a;break;default:return this}return this},replace:function(a,c,d){var e=this,d=d||"retain";return e.finder.push(b(e.context,{find:a,replace:c,filterElements:function(a){return e.filterElemFn(a)},portionMode:d})),e},wrap:function(a,c,d){var e=this,d=d||"retain";return e.finder.push(b(e.context,{find:a,wrap:c,filterElements:function(a){return e.filterElemFn(a)},portionMode:d})),e},revert:function(a){var b=this.finder.length,a=Number(a)||(0===a?Number(0):"all"===a?b:1);if("undefined"==typeof b||0===b)return this;a>b&&(a=b);for(var c=a;c>0;c--)this.finder.pop().revert();return this}},h.fn.init.prototype=h.fn,h}(function(){function a(a){return String(a).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function b(){return c.apply(null,arguments)||d.apply(null,arguments)}function c(a,c,e,f,g){if(c&&!c.nodeType&&arguments.length<=2)return!1;var h="function"==typeof e;h&&(e=function(a){return function(b,c){return a(b.text,c.startIndex)}}(e));var i=d(c,{find:a,wrap:h?null:e,replace:h?e:"$"+(f||"&"),prepMatch:function(a,b){if(!a[0])throw"findAndReplaceDOMText cannot handle zero-length matches";if(f>0){var c=a[f];a.index+=a[0].indexOf(c),a[0]=c}return a.endIndex=a.index+a[0].length,a.startIndex=a.index,a.index=b,a},filterElements:g});return b.revert=function(){return i.revert()},!0}function d(a,b){return new e(a,b)}function e(a,b){b.portionMode=b.portionMode||f,this.node=a,this.options=b,this.prepMatch=b.prepMatch||this.prepMatch,this.reverts=[],this.matches=this.search(),this.matches.length&&this.processMatches()}{var f="retain",h="first",i=g;({}).toString}return b.Finder=e,e.prototype={search:function(){var b,c=0,d=this.options.find,e=this.getAggregateText(),f=[];if(d="string"==typeof d?RegExp(a(d),"g"):d,d.global)for(;b=d.exec(e);)f.push(this.prepMatch(b,c++));else(b=e.match(d))&&f.push(this.prepMatch(b,0));return f},prepMatch:function(a,b){if(!a[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return a.endIndex=a.index+a[0].length,a.startIndex=a.index,a.index=b,a},getAggregateText:function(){function a(c){if(3===c.nodeType)return c.data;if(b&&!b(c))return"";var d="";if(c=c.firstChild)do d+=a(c);while(c=c.nextSibling);return d}var b=this.options.filterElements;return a(this.node)},processMatches:function(){var a,b,c,d=this.matches,e=this.node,f=this.options.filterElements,g=[],h=e,i=d.shift(),j=0,k=0,l=0,m=[e];a:for(;;){if(3===h.nodeType&&(!b&&h.length+j>=i.endIndex?b={node:h,index:l++,text:h.data.substring(i.startIndex-j,i.endIndex-j),indexInMatch:j-i.startIndex,indexInNode:i.startIndex-j,endIndexInNode:i.endIndex-j,isEnd:!0}:a&&g.push({node:h,index:l++,text:h.data,indexInMatch:j-i.startIndex,indexInNode:0}),!a&&h.length+j>i.startIndex&&(a={node:h,index:l++,indexInMatch:0,indexInNode:i.startIndex-j,endIndexInNode:i.endIndex-j,text:h.data.substring(i.startIndex-j,i.endIndex-j)}),j+=h.data.length),c=1===h.nodeType&&f&&!f(h),a&&b){if(h=this.replaceMatch(i,a,g,b),j-=b.node.data.length-b.endIndexInNode,a=null,b=null,g=[],i=d.shift(),l=0,k++,!i)break}else if(!c&&(h.firstChild||h.nextSibling)){h.firstChild?(m.push(h),h=h.firstChild):h=h.nextSibling;continue}for(;;){if(h.nextSibling){h=h.nextSibling;break}if(h=m.pop(),h===e)break a}}},revert:function(){for(var a=this.reverts.length;a--;)this.reverts[a]();this.reverts=[]},prepareReplacementString:function(a,b,c){var d=this.options.portionMode;return d===h&&b.indexInMatch>0?"":(a=a.replace(/\$(\d+|&|`|')/g,function(a,b){var d;switch(b){case"&":d=c[0];break;case"`":d=c.input.substring(0,c.startIndex);break;case"'":d=c.input.substring(c.endIndex);break;default:d=c[+b]}return d}),d===h?a:b.isEnd?a.substring(b.indexInMatch):a.substring(b.indexInMatch,b.indexInMatch+b.text.length))},getPortionReplacementNode:function(a,b,c){var d=this.options.replace||"$&",e=this.options.wrap;if(e&&e.nodeType){var f=i.createElement("div");f.innerHTML=e.outerHTML||(new XMLSerializer).serializeToString(e),e=f.firstChild}if("function"==typeof d)return d=d(a,b,c),d&&d.nodeType?d:i.createTextNode(String(d));var g="string"==typeof e?i.createElement(e):e;return d=i.createTextNode(this.prepareReplacementString(d,a,b,c)),d.data&&g?(g.appendChild(d),g):d},replaceMatch:function(a,b,c,d){var e,f,g=b.node,h=d.node;if(g===h){var j=g;b.indexInNode>0&&(e=i.createTextNode(j.data.substring(0,b.indexInNode)),j.parentNode.insertBefore(e,j));var k=this.getPortionReplacementNode(d,a);return j.parentNode.insertBefore(k,j),d.endIndexInNoden;++n){var p=c[n],q=this.getPortionReplacementNode(p,a);p.node.parentNode.replaceChild(q,p.node),this.reverts.push(function(a,b){return function(){b.parentNode.replaceChild(a.node,b)}}(p,q)),m.push(q)}var r=this.getPortionReplacementNode(d,a);return g.parentNode.insertBefore(e,g),g.parentNode.insertBefore(l,g),g.parentNode.removeChild(g),h.parentNode.insertBefore(r,h),h.parentNode.insertBefore(f,h),h.parentNode.removeChild(h),this.reverts.push(function(){e.parentNode.removeChild(e),l.parentNode.replaceChild(g,l),f.parentNode.removeChild(f),r.parentNode.replaceChild(h,r)}),r}},b}());p.extend(q.fn,{jinzify:function(){var a=this.filterOutSelector;return this.filterOutSelector+=", jinze",this.replace(o.jinze.touwei,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","touwei");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}).replace(o.jinze.wei,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","wei");return e.appendChild(d),0===a.index?e:""}).replace(o.jinze.tou,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","tou");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}).replace(o.jinze.middle,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","middle");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}),this.filterOutSelector=a,this},groupify:function(){return this.wrap(o["char"].biaodian.group[0],p.clone(p.create("char_group","biaodian cjk"))).wrap(o["char"].biaodian.group[1],p.clone(p.create("char_group","biaodian cjk"))),this},charify:function(a){var a=p.extend({hanzi:"individual",liga:"liga",word:"group",latin:"group",ellinika:"group",kirillica:"group",kana:"none",eonmun:"none"},a||{});return"group"===a.hanzi&&this.wrap(o["char"].hanzi.group,p.clone(p.create("char_group","hanzi cjk"))),"individual"===a.hanzi&&this.wrap(o["char"].hanzi.individual,p.clone(p.create("char","hanzi cjk"))),("individual"===a.hanzi||"biaodian"===a.hanzi||"liga"===a.liga)&&("none"!==a.hanzi&&this.replace(o["char"].biaodian.all,function(a,b){var c=b[0],d=p.create("",c),e="biaodian cjk "+(c.match(o["char"].biaodian.open)?"open":c.match(o["char"].biaodian.close)?"close end":c.match(o["char"].biaodian.end)?"end":""),f=p.create("char",e),g=c.charCodeAt(0).toString(16);return f.setAttribute("unicode",g),f.appendChild(d),f}),this.replace("liga"===a.liga?o["char"].biaodian.liga:new RegExp("("+n.biaodian.liga+")","g"),function(a,b){var c=b[0],d=p.create("",c),e=p.create("char","biaodian liga cjk"),f=c.charCodeAt(0).toString(16);return e.setAttribute("unicode",f),e.appendChild(d),e})),"none"!==a.word&&this.wrap(o["char"].word,p.clone(p.create("word"))),("none"!==a.latin||"none"!==a.ellinika||"none"!==a.kirillica)&&this.wrap(o["char"].punct.all,p.clone(p.create("char","punct"))),"individual"===a.latin&&this.wrap(o["char"].alphabet.latin,p.clone(p.create("char","alphabet latin"))),"individual"===a.ellinika&&this.wrap(o["char"].alphabet.ellinika,p.clone(p.create("char","alphabet ellinika greek"))),"individual"===a.kirillica&&this.wrap(o["char"].alphabet.kirillica,p.clone(p.create("char","alphabet kirillica cyrillic"))),this}}),l.find=q,void["replace","wrap","revert","jinzify","charify"].forEach(function(a){l.fn[a]=function(){return this.finder||(this.finder=l.find(this.context)),this.finder[a](arguments[0],arguments[1]),this}});var r={};r.detectFont=d,r.support=function(){function b(a){var b,c=a.charAt(0).toUpperCase()+a.slice(1),d=(a+" "+e.join(c+" ")+c).split(" ");return d.forEach(function(a){"string"==typeof f.style[a]&&(b=!0)}),b||!1}function c(a,b){var c,d,e,f=i||p.create("body"),g=p.create("div"),j=i?g:f,b="function"==typeof b?b:function(){};return c=[""].join(""),j.innerHTML+=c,f.appendChild(g),i||(f.style.background="",f.style.overflow="hidden",e=h.style.overflow,h.style.overflow="hidden",h.appendChild(f)),d=b(j,a),p.remove(j),i||(h.style.overflow=e),!!d}function d(b,c){var d;return a.getComputedStyle?d=g.defaultView.getComputedStyle(b,null).getPropertyValue(c):b.currentStyle&&(d=b.currentStyle[c]),d}var e="Webkit Moz ms".split(" "),f=p.create("_");return{ruby:function(){var a,b=p.create("ruby"),c=p.create("rt"),e=p.create("rp");return b.appendChild(e),b.appendChild(c),h.appendChild(b),a="none"===d(e,"display")||"ruby"===d(b,"display")&&"ruby-text"===d(c,"display")?!0:!1,h.removeChild(b),b=null,c=null,e=null,a}(),fontface:function(){var a;return c('@font-face { font-family: font; src: url("//"); }',function(b,c){var d=p.qsa("style",b)[0],e=d.sheet||d.styleSheet,f=e?e.cssRules&&e.cssRules[0]?e.cssRules[0].cssText:e.cssText||"":"";a=/src/i.test(f)&&0===f.indexOf(c.split(" ")[0])}),a}(),unicoderange:function(){var a;return c('@font-face{font-family:test-for-unicode-range;src:local(Arial),local("Droid Sans")}@font-face{font-family:test-for-unicode-range;src:local("Times New Roman"),local(Times),local("Droid Serif");unicode-range:U+270C}',function(){a=!r.detectFont("test-for-unicode-range",'Arial, "Droid Sans"',"Q")}),a}(),columnwidth:b("columnWidth"),textemphasis:b("textEmphasis"),writingmode:b("writingMode")}}(),r.initCond=function(a){var b,a=a||h,c="";for(var d in r.support)b=(r.support[d]?"":"no-")+d,a.classList.add(b),c+=b+" ";return c},p.extend(r,{renderElem:function(a){this.renderRuby(a),this.renderDecoLine(a),this.renderDecoLine(a,"s, del"),this.renderEm(a)},renderDecoLine:function(a,b){var b=b||"u, ins",c=p.qsa(b,a),d=new RegExp("^("+b.replace(/\,\s?/g,"|")+")$","ig");c.forEach(function(a){var b;do if(b=(b||a).nextSibling,!b)return;while(p.isIgnorable(b));b.nodeName.match(d)&&b.classList.add("adjacent")})},renderEm:function(a,b){var c=b?"qsa":"tag",b=b||"em",d=p[c](b,a);d.forEach(function(a){var b=q(a);r.support.textemphasis||b.jinzify(),b.groupify().charify(r.support.textemphasis?{hanzi:"biaodian",word:"punctuation"}:{latin:"individual",ellinika:"individual",kirillica:"individual"})})},renderRuby:function(a,b){var c=b?"qsa":"tag",b=b||"ruby",d=p[c](b,a),g=p.qsa(b+", rtc",a);g.forEach(function(a){var b=a.classList;b.contains("pinyin")?b.add("romanization"):b.contains("mps")&&b.add("zhuyin"),b.contains("romanization")&&b.add("annotation")}),d.forEach(function(a){var c,d,g,h,i,j,k=a.classList,l=!r.support.ruby||k.contains("zhuyin")||k.contains("complex")||k.contains("rightangle");l&&(c=p.create("!"),c.appendChild(p.clone(a)),d=p.qsa(b,c)[0],(!r.support.ruby||k.contains("zhuyin"))&&p.tag("rt",d).forEach(function(a){var b,c=p.create("!"),d=[];do{if(b=(b||a).previousSibling,!b||b.nodeName.match(/(r[ubt])/i))break;c.insertBefore(p.clone(b),c.firstChild),d.push(b)}while(!b.nodeName.match(/(r[ubt])/i));h=k.contains("zhuyin")?f(c,a):e(c,a);try{a.parentNode.replaceChild(h,a),d.forEach(function(a){p.remove(a)})}catch(g){}}),(k.contains("complex")||k.contains("rightangle"))&&(g=h=p.tag("rb",d),i=g.length,!function(b){b&&(h=p.tag("rt",b).map(function(a,b){if(g[b]){var c=f(g[b],a);try{g[b].parentNode.replaceChild(c,g[b])}catch(d){}return c}}),p.remove(b),a.setAttribute("rightangle",""))}(d.querySelector("rtc.zhuyin")),p.qsa("rtc:not(.zhuyin)",d).forEach(function(b,c){var d;d=p.tag("rt",b).map(function(b){var d,f,g=Number(b.getAttribute("rbspan")||1),j=0,l=[];g>i&&(g=i);do{try{d=h.shift(),l.push(d)}catch(m){}if("undefined"==typeof d)break;j+=Number(d.getAttribute("span")||1)}while(g>j);if(j>g){if(l.length>1)return void console.error("An impossible `rbspan` value detected.",a);l=p.tag("rb",l[0]),h=l.slice(g).concat(h),l=l.slice(0,g),j=g}f=e(l,b,{"class":k,span:j,order:c});try{l[0].parentNode.replaceChild(f,l.shift()),l.forEach(function(a){p.remove(a)})}catch(m){}return f}),h=d,p.remove(b)})),j=p.create("hruby"),j.innerHTML=c.firstChild.innerHTML,p.setAttr(j,a.attributes),j.normalize(),a.parentNode.replaceChild(j,a))})}}),l.normalize=r,l.localize=r,l.support=r.support,l.detectFont=r.detectFont,l.fn.initCond=function(){return this.condition.classList.add("han-js-rendered"),l.normalize.initCond(this.condition),this},void["Elem","DecoLine","Em","Ruby"].forEach(function(a){var b="render"+a;l.fn[b]=function(a){return l.normalize[b](this.context,a),this}}),p.extend(l.support,{heiti:!0,songti:l.detectFont('"Han Songti"'),"songti-gb":l.detectFont('"Han Songti GB"'),kaiti:l.detectFont('"Han Kaiti"'),fangsong:l.detectFont('"Han Fangsong"')});var s,t="* > hws:first-child, * > wbr:first-child + hws, wbr:first-child + wbr + hws",u=function(){var a=p.create("div");return a.appendChild(p.create("","0-")),a.appendChild(p.create("","2")),a.normalize(),2!==a.firstChild.length}();s=p.create("hws"),s.innerHTML=" ",p.extend(l,{isNodeNormalizeNormal:u,renderHWS:function(a,b){var a=a||g,c=b?"strict":"base",d=l.find(a);return b?d.filterOut("textarea, code, kbd, samp, pre",!0):d.filterOut("textarea",!0),d.replace(l.TYPESET.hws[c][0],"$1$2").replace(l.TYPESET.hws[c][1],"$1$2").replace(/(['"]+)(.+?)\1/gi,"$1$2$1").replace("",function(){return p.clone(s)}),p.qsa(t,a).forEach(function(a){for(var b=a.parentNode,c=b.firstChild;p.isIgnorable(c);)if(c=c.nextSibling,!c)return;for(;"HWS"===c.nodeName&&(p.remove(c,b),c=b.parentNode.insertBefore(p.clone(s),b),b=b.parentNode,u&&b.normalize(),c===b.firstChild););}),u&&a.normalize(),d}}),p.extend(l.fn,{HWS:null,renderHWS:function(a){return l.renderHWS(this.context,a),this.HWS=p.tag("hws",this.context),this},revertHWS:function(){return this.HWS.forEach(function(a){p.remove(a)}),this}}),l.renderJiya=function(a){var a=a||g,b=[l.find(a)];return b[0].filterOut("textarea, code, kbd, samp, pre, jinze, em",!0),b[0].groupify(),p.qsa("char_group.biaodian",a).forEach(function(a){b.push(l(a).charify({hanzi:"biaodian",liga:"liga",word:"none",latin:"none",ellinika:"none",kirillica:"none"}))}),b},p.extend(l.fn,{jiya:null,renderJiya:function(){return this.jiya=l.renderJiya(this.context),this},revertJiya:function(){try{this.jiya.revert("all")}catch(a){}return this}});var v;v=p.create("char","biaodian cjk middle"),v.setAttribute("unicode","b7"),l.correctBasicBD=function(a,b){if(!l.support.unicoderange||b){var c,a=a||g;c=l.find(a),c.wrap(/\u00B7/g,p.clone(v)).charify({liga:"liga",hanzi:"none",word:"none",latin:"none",ellinika:"none",kirillica:"none"})}},p.extend(l.fn,{basicBD:null,correctBasicBD:function(a){return this.basicBD=l.correctBasicBD(this.context,a),this},revertBasicBD:function(){try{this.basicBD.revert("all")}catch(a){}return this}});var w="ru[annotation]",x="textarea, code, kbd, samp, pre",y=function(){var a,b,c,d=i||p.create("body"),e=p.create("div"),f=p.create("span"),g=i?e:d;return i?i.appendChild(g):(d.style.background="",d.style.overflow="hidden",b=h.style.overflow,h.style.overflow="hidden",h.appendChild(d)),f.innerHTML="i̍",f.style.fontFamily="sans-serif",f.style.display="inline-block",a=p.clone(f),a.style.fontFamily='"Romanization Sans"',g.appendChild(f),g.appendChild(a),c=f.clientWidth!==a.clientWidth,p.remove(g),i||(h.style.overflow=b),c}(),z=l.TYPESET["display-as"]["comb-liga-pua"],A=l.TYPESET["inaccurate-char"],B=p.create("char","comb-liga"),C=p.create("inner");return p.extend(l,{isCombLigaNormal:y,substCombLigaWithPUA:function(a){if(!y){var a=a||g,b=l.find(a);return b.filterOut(x,!0),z.forEach(function(a){b.replace(new RegExp(a[0],"ig"),function(b,c){var d=p.clone(B),e=p.clone(C);return e.innerHTML=c[0],d.appendChild(e),d.setAttribute("display-as",a[1]),0===b.index?d:""})}),p.qsa(w,a).forEach(function(a){var b=a.getAttribute("annotation");z.slice(0,5).forEach(function(a){b=b.replace(new RegExp(a[0],"ig"),a[1])}),a.setAttribute("annotation",b)}),b}},substInaccurateChar:function(a){var a=a||g,b=l.find(a);b.filterOut(x,!0),A.forEach(function(a){b.replace(new RegExp(a[0],"ig"),a[1])})}}),p.extend(l.fn,{"comb-liga":null,"inaccurate-char":null,substCombLigaWithPUA:function(){return this["comb-liga"]=l.substCombLigaWithPUA(this.context),this},revertCombLigaWithPUA:function(){try{this["comb-liga"].revert("all")}catch(a){}return this},substInaccurateChar:function(){return this["inaccurate-char"]=l.substInaccurateChar(this.context),this},revertInaccurateChar:function(){try{this["inaccurate-char"].revert("all")}catch(a){}return this}}),a.addEventListener("DOMContentLoaded",function(){var a;h.classList.contains("han-init")?l.init():(a=g.querySelector(".han-init-context"))&&(l.init=l(a).render())}),"function"==typeof define&&define.amd?define(function(){return l}):("undefined"==typeof b||b===!1)&&(a.Han=l),l})},{}],2:[function(a,b){b.exports=a("./dist/han")},{"./dist/han":1}],3:[function(a){(function(){var b;b=a("../index"),b().render()}).call(this)},{"../index":2}]},{},[3]); \ No newline at end of file diff --git a/latest/test-commonjs.ls b/latest/test-commonjs.ls new file mode 100644 index 00000000..d592dfaa --- /dev/null +++ b/latest/test-commonjs.ls @@ -0,0 +1,4 @@ + +Han = require \../index +Han!.render! + diff --git a/latest/test-nojs.html b/latest/test-nojs.html index 0181b334..4f0a9207 100644 --- a/latest/test-nojs.html +++ b/latest/test-nojs.html @@ -1,88 +1,7 @@ - - - - - 測試・無JavaScript — 漢字標準格式 - - - - - - - -
      -

      內容群組類

      -

      段落、清單

      -

      好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動!

      -

      頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。

      -

      詩篇段落

      - -

      地址格式

      - -

      有序清單

      -
        -
      1. 一級清單項目
      2. -
      3. 一級清單項目 -
          -
        1. 二級清單項目
        2. -
        3. 二級清單項目 -
            -
          1. 三級清單項目
          2. -
          3. 三級清單項目
          4. -
          -
        4. -
        -
      4. -
      5. 一級清單項目
      6. -
      7. 一級清單項目
      8. -
      -

      無序清單

      -
        -
      • 一級清單項目
      • -
      • 一級清單項目 -
          -
        • 二級清單項目
        • -
        • 二級清單項目 -
            -
          • 三級清單項目
          • -
          • 三級清單項目
          • -
          -
        • -
        -
      • -
      • 一級清單項目
      • -
      • 一級清單項目
      • -
      -

      引用區塊

      -
      -

      如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無!

      -
      ——姜慶《石人碼頭》
      -
      -

      未使用段落元素的引用區塊

      -
      時來數期沒道反先美別所金企感企媽失對談。 -
      ——新器急
      -
      -

      引用區塊中的引用區塊

      -
      -

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      -
      -

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      -
      -
      -

      圖表內的引用區塊

      -
      -
      -

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      -
      -
      這是圖表解說元素<figcaption>內的解說。
      -
      -

      格式預處理文字區塊

      -
      國寫親下二好灣整機生土、是看老排讓和保藝車市。
      +測試・無JavaScript — 漢字標準格式

      內容群組類

      段落、清單

      好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動!

      頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。

      詩篇段落

      地址格式

      有序清單

      1. 一級清單項目
      2. 一級清單項目
        1. 二級清單項目
        2. 二級清單項目
          1. 三級清單項目
          2. 三級清單項目
      3. 一級清單項目
      4. 一級清單項目

      無序清單

      • 一級清單項目
      • 一級清單項目
        • 二級清單項目
        • 二級清單項目
          • 三級清單項目
          • 三級清單項目
      • 一級清單項目
      • 一級清單項目

      引用區塊

      如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無!

      ——姜慶《石人碼頭》

      未使用段落元素的引用區塊

      時來數期沒道反先美別所金企感企媽失對談。
      ——新器急

      引用區塊中的引用區塊

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      圖表內的引用區塊

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      這是圖表解說元素<figcaption>內的解說。

      格式預處理文字區塊

      國寫親下二好灣整機生土、是看老排讓和保藝車市。
       
       Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et me.
       
      @@ -90,146 +9,17 @@ 

      格式預處理文字區塊

      長明期事生合了中文新等麼科出過能意等件教求加, 樓日里大下果個來。 -球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。
      -

      代碼區塊

      -
      void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document);
      -
      -
      -
      -

      章節類

      -

      文章區塊元素

      -

      文章區塊內的段落、清單

      -

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      -

      詩篇段落

      - -

      清單

      -
        -
      • 清單項目子
      • -
      • 清單項目丑
      • -
      -

      文章區塊內的重點

      -

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      -

      文章區塊內的圖表引用區塊

      -
      -
      -

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      -
      -
      這是文章內圖表解說元素<figcaption>的解說。
      -
      -

      文章區塊內的變音文字

      -

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      -

      文章內的引用區塊

      -
      -

      火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。

      -

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      -
      -

      文章內引用區塊中的引用區塊

      -
      -

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      -
      -

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      -
      -
      -

      文章引用區塊內的重點

      -
      -

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      -
      -

      文章引用區塊內的變音文字

      -
      -

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      -
      -
      -
      -
      -

      字級語意類

      超連結元素a示例
      - 註記元素u示例
      註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁
      - 來源元素cite示例
      重點元素strong示例
      - 術語元素dfn示例
      關鍵字元素b示例
      強調元素em示例
      變音文字元素i示例
      - 變數元素var示例
      - 引用元素q及子引用q元素示例
      - 訛訊元素s示例
      訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁
      代碼元素code示例
      輸入鍵元素kbd示例
      計算機輸出示例元素samp示例
      - 行間注元素 - ruby annotation - 示例
      複合式 - - 行間注 - 元素 - - hángjiānzhù - yuansu - - - ruby annotation - -
      直角 - - - - - - - - hángjiānzhù - yuánsù - - - ㄏㄤˊ - ㄐㄧㄢ - ㄓㄨˋ - ㄩㄢˊ - ㄙㄨˋ - - -

      其他

      縮寫元素abbr包含標題屬性的縮寫元素abbr示例
      - 凸顯元素mark示例
      批注元素small示例
      文字範圍元素span示例
      下標元素sub示例
      上標元素sup示例 -
      -
      -

      修訂類

      增訂元素ins示例
      增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁
      - 刪訂元素del示例
      刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁。 -
      -
      -

      特殊排版功能

      -

      漢字西文混排間隙

      -

      然而在Jan Tschichold和他的著作Asymmetric Typography流行之前,直至追溯回Gutenberg时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。 -

      - -

      地區變體字型及標點符號樣式

      -

      註:此處僅展示黑體,其餘字體樣式請參閱其他測試頁

      - - -

      台灣教育部式

      - -

      中國國標式

      - -

      - - - 韻 - - ji̍p-siann - - - ㆢㄧㆴ͘ - ㄒㄧㆩ - - -

      - -
      - - \ No newline at end of file +球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。

      代碼區塊

      void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document);

      章節類

      文章區塊元素

      文章區塊內的段落、清單

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      詩篇段落

      清單

      • 清單項目子
      • 清單項目丑

      文章區塊內的重點

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      文章區塊內的圖表引用區塊

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      這是文章內圖表解說元素<figcaption>的解說。

      文章區塊內的變音文字

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      文章內的引用區塊

      火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      文章內引用區塊中的引用區塊

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      文章引用區塊內的重點

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      文章引用區塊內的變音文字

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      字級語意類

      超連結元素a示例
      註記元素u示例
      註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁
      來源元素cite示例
      重點元素strong示例
      術語元素dfn示例
      關鍵字元素b示例
      強調元素em示例
      變音文字元素i示例
      變數元素var示例
      引用元素q及子引用q元素示例
      訛訊元素s示例
      訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁
      代碼元素code示例
      輸入鍵元素kbd示例
      計算機輸出示例元素samp示例
      行間注元素ruby annotation示例
      複合式行間注元素hángjiānzhùyuansuruby annotation
      直角hángjiānzhùyuánsùㄏㄤˊㄐㄧㄢㄓㄨˋㄩㄢˊㄙㄨˋ

      其他

      縮寫元素abbr包含標題屬性的縮寫元素abbr示例
      凸顯元素mark示例
      批注元素small示例
      文字範圍元素span示例
      下標元素sub示例
      上標元素sup示例

      修訂類

      增訂元素ins示例
      增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁
      刪訂元素del示例
      刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁

      特殊排版功能

      漢字西文混排間隙

      然而在Jan Tschichold和他的著作Asymmetric Typography流行之前,直至追溯回Gutenberg时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。

      地區變體字型及標點符號樣式

      註:此處僅展示黑體,其餘字體樣式請參閱其他測試頁

      台灣教育部式

      中國國標式

      ji̍p-siannㆢㄧㆴ͘ㄒㄧㆩ

      \ No newline at end of file diff --git a/latest/test.html b/latest/test.html index e62dbc3a..2e72c2d3 100644 --- a/latest/test.html +++ b/latest/test.html @@ -1,88 +1,7 @@ - - - - - 測試・標準測試頁 — 漢字標準格式 - - - - - - - -
      -

      內容群組類

      -

      段落、清單

      -

      好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動!

      -

      頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。

      -

      詩篇段落

      - -

      地址格式

      - -

      有序清單

      -
        -
      1. 一級清單項目
      2. -
      3. 一級清單項目 -
          -
        1. 二級清單項目
        2. -
        3. 二級清單項目 -
            -
          1. 三級清單項目
          2. -
          3. 三級清單項目
          4. -
          -
        4. -
        -
      4. -
      5. 一級清單項目
      6. -
      7. 一級清單項目
      8. -
      -

      無序清單

      -
        -
      • 一級清單項目
      • -
      • 一級清單項目 -
          -
        • 二級清單項目
        • -
        • 二級清單項目 -
            -
          • 三級清單項目
          • -
          • 三級清單項目
          • -
          -
        • -
        -
      • -
      • 一級清單項目
      • -
      • 一級清單項目
      • -
      -

      引用區塊

      -
      -

      如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無!

      -
      ——姜慶《石人碼頭》
      -
      -

      未使用段落元素的引用區塊

      -
      時來數期沒道反先美別所金企感企媽失對談。 -
      ——新器急
      -
      -

      引用區塊中的引用區塊

      -
      -

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      -
      -

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      -
      -
      -

      圖表內的引用區塊

      -
      -
      -

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      -
      -
      這是圖表解說元素<figcaption>內的解說。
      -
      -

      格式預處理文字區塊

      -
      國寫親下二好灣整機生土、是看老排讓和保藝車市。
      +測試・標準測試頁 — 漢字標準格式

      內容群組類

      段落、清單

      好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動!

      頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。

      詩篇段落

      地址格式

      有序清單

      1. 一級清單項目
      2. 一級清單項目
        1. 二級清單項目
        2. 二級清單項目
          1. 三級清單項目
          2. 三級清單項目
      3. 一級清單項目
      4. 一級清單項目

      無序清單

      • 一級清單項目
      • 一級清單項目
        • 二級清單項目
        • 二級清單項目
          • 三級清單項目
          • 三級清單項目
      • 一級清單項目
      • 一級清單項目

      引用區塊

      如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無!

      ——姜慶《石人碼頭》

      未使用段落元素的引用區塊

      時來數期沒道反先美別所金企感企媽失對談。
      ——新器急

      引用區塊中的引用區塊

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      圖表內的引用區塊

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      這是圖表解說元素<figcaption>內的解說。

      格式預處理文字區塊

      國寫親下二好灣整機生土、是看老排讓和保藝車市。
       
       Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et me.
       
      @@ -90,147 +9,17 @@ 

      格式預處理文字區塊

      長明期事生合了中文新等麼科出過能意等件教求加, 樓日里大下果個來。 -球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。
      -

      代碼區塊

      -
      void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document);
      -
      -
      -
      -

      章節類

      -

      文章區塊元素

      -

      文章區塊內的段落、清單

      -

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      -

      詩篇段落

      - -

      清單

      -
        -
      • 清單項目子
      • -
      • 清單項目丑
      • -
      -

      文章區塊內的重點

      -

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      -

      文章區塊內的圖表引用區塊

      -
      -
      -

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      -
      -
      這是文章內圖表解說元素<figcaption>的解說。
      -
      -

      文章區塊內的變音文字

      -

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      -

      文章內的引用區塊

      -
      -

      火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。

      -

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      -
      -

      文章內引用區塊中的引用區塊

      -
      -

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      -
      -

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      -
      -
      -

      文章引用區塊內的重點

      -
      -

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      -
      -

      文章引用區塊內的變音文字

      -
      -

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      -
      -
      -
      -
      -

      字級語意類

      超連結元素a示例
      - 註記元素u示例
      註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁
      - 來源元素cite示例
      重點元素strong示例
      - 術語元素dfn示例
      關鍵字元素b示例
      強調元素em示例
      變音文字元素i示例
      - 變數元素var示例
      - 引用元素q及子引用q元素示例
      - 訛訊元素s示例
      訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁
      代碼元素code示例
      輸入鍵元素kbd示例
      計算機輸出示例元素samp示例
      - 行間注元素 - ruby annotation - 示例
      複合式 - - 行間注 - 元素 - - hángjiānzhù - yuansu - - - ruby annotation - -
      直角 - - - - - - - - hángjiānzhù - yuánsù - - - ㄏㄤˊ - ㄐㄧㄢ - ㄓㄨˋ - ㄩㄢˊ - ㄙㄨˋ - - -

      其他

      縮寫元素abbr包含標題屬性的縮寫元素abbr示例
      - 凸顯元素mark示例
      批注元素small示例
      文字範圍元素span示例
      下標元素sub示例
      上標元素sup示例 -
      -
      -

      修訂類

      增訂元素ins示例
      增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁
      - 刪訂元素del示例
      刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁。 -
      -
      -

      特殊排版功能

      -

      漢字西文混排間隙

      -

      然而在Jan Tschichold和他的著作Asymmetric Typography流行之前,直至追溯回Gutenberg时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。 -

      - -

      地區變體字型及標點符號樣式

      -

      註:此處僅展示黑體,其餘字體樣式請參閱其他測試頁

      - - -

      台灣教育部式

      - -

      中國國標式

      - -

      - - - 韻 - - ji̍p-siann - - - ㆢㄧㆴ͘ - ㄒㄧㆩ - - -

      - -
      - - - \ No newline at end of file +球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。

      代碼區塊

      void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document);

      章節類

      文章區塊元素

      文章區塊內的段落、清單

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      詩篇段落

      清單

      • 清單項目子
      • 清單項目丑

      文章區塊內的重點

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      文章區塊內的圖表引用區塊

      令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

      這是文章內圖表解說元素<figcaption>的解說。

      文章區塊內的變音文字

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      文章內的引用區塊

      火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。

      務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

      文章內引用區塊中的引用區塊

      洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

      以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

      文章引用區塊內的重點

      不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

      文章引用區塊內的變音文字

      來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

      字級語意類

      超連結元素a示例
      註記元素u示例
      註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁
      來源元素cite示例
      重點元素strong示例
      術語元素dfn示例
      關鍵字元素b示例
      強調元素em示例
      變音文字元素i示例
      變數元素var示例
      引用元素q及子引用q元素示例
      訛訊元素s示例
      訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁
      代碼元素code示例
      輸入鍵元素kbd示例
      計算機輸出示例元素samp示例
      行間注元素ruby annotation示例
      複合式行間注元素hángjiānzhùyuansuruby annotation
      直角hángjiānzhùyuánsùㄏㄤˊㄐㄧㄢㄓㄨˋㄩㄢˊㄙㄨˋ

      其他

      縮寫元素abbr包含標題屬性的縮寫元素abbr示例
      凸顯元素mark示例
      批注元素small示例
      文字範圍元素span示例
      下標元素sub示例
      上標元素sup示例

      修訂類

      增訂元素ins示例
      增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁
      刪訂元素del示例
      刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁

      特殊排版功能

      漢字西文混排間隙

      然而在Jan Tschichold和他的著作Asymmetric Typography流行之前,直至追溯回Gutenberg时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。

      地區變體字型及標點符號樣式

      註:此處僅展示黑體,其餘字體樣式請參閱其他測試頁

      台灣教育部式

      中國國標式

      ji̍p-siannㆢㄧㆴ͘ㄒㄧㆩ

      \ No newline at end of file diff --git a/latest/well-knit.html b/latest/well-knit.html index ef386f53..ccb37bb7 100644 --- a/latest/well-knit.html +++ b/latest/well-knit.html @@ -1,177 +1,31 @@ - - - - - 測試・文章、章節與內容的邊界調整 — 漢字標準格式 - - - - - - - -
      -

      測試·文章、章節與內容的邊界調整

      -

      提示:下方淺灰色區塊是文章章節的範例,建議使用瀏覽器的「元件檢閱器」來査閱各種群組元素在不同情境下的樣式。亦可伸縮視窗寬度來觀看專為行動裝置提供的彈性設計responsive web design,行動裝置預設為480px以下的視窗或設備。 -

      -
      -

      文章標題(一級)

      -

      - 段落,也許是前言。上邊界對一級標題收緊。文章區塊的行高大於全域行高,預設為1.7em。 -

      -
      -

      二級標題

      -

      這是一個段落,可以是對二級標題的內容詳述,上邊界對二級標題收緊。

      -

      這是另一個段落,可見上邊界不收緊了。

      -
      -
      -

      段落、清單、引用區塊等群組元素對標題的收緊

      -
      -

      三級標題

      -
      -

      這是一個引用區塊段落,可見上邊界對標題收緊;而三級標題則對二級標題收緊。

      -

      這是第二個引用區塊段落,可見上邊界不收緊了。

      -

      - 在文章中的引用區塊,會縮進二個字元(行動裝置上縮進一字元),並使用楷體。 -

      -
      -

      三級標題

      -
        -
      1. 這是一個有序清單,
      2. -
      3. 可見上邊界對標題收緊。
      4. -
      -
        -
      1. 這是另一個有序清單,
      2. -
      3. 可見上邊界不收緊了。
      4. -
      -

      三級標題

      -
        -
      • 這是一個無序清單,
      • -
      • 可見上邊界對標題收緊。
      • -
      -
      -
      -
      -

      詩,與標題收緊規則

      -

      總結成,琅琅上口:

      - -

      - 上方描述規則的區塊是一個套用類詩篇類別.poem-like的分塊元素div在任意情境下,其後代段落元素p縮進二字元;在行動裝置中,縮進一字元。 -

      -
      -
      六級標題
      -
      五級標題
      -

      四級標題

      -

      三級標題

      -

      二級標題

      -

      二級標題

      -

      三級標題

      -

      四級標題

      -
      五級標題
      -
      六級標題
      -
      -
      -

      一級標題

      -

      一級標題

      -

      一級標題不會互相收緊。

      -
      -
      -
      -

      後代章節元素不影響群組收緊

      -

      後代章節元素section不會影響各個群組元素對上級標題的收緊。

      -

      比如說……

      -
      -

      二級標題(在section下)

      -
      -

      二級標題(在section下)

      -
      -

      三級標題(在section下)

      -
      -

      四級標題(在section下)

      -
      -

      - 這是一個放在後代章節元素section中的段落,雖然和四級標題並非同輩,但仍然會對標題收緊。 -

      -
      -
      -

      四級標題(在section下)

      -
      -
      五級標題(在section下)
      -
      -
      六級標題(在section下)
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -

      同輩章節元素則否

      -

      互為「同輩」的二個章節元素下的標題則不互相收緊。

      -
      -
      -

      二級標題(section甲)

      -
      -
      -

      二級標題(section乙,與甲同輩)

      -
      -
      -

      三級標題(section丙,與甲乙同輩)

      -
      -
      -

      四級標題(section丁,與甲乙丙同輩)

      -
      -
      -
      五級標題(section戊,與甲乙丙丁同輩)
      -
      -
      -
      六級標題(section己,與甲乙丙丁戊同輩)
      -
      -
      -

      這是一個段落,屬於section庚,與甲乙丙丁戊己同輩。

      -
      -
      -
      -
      -
      - - - - \ No newline at end of file +測試・文章、章節與內容的邊界調整 — 漢字標準格式

      測試·文章、章節與內容的邊界調整

      提示:下方淺灰色區塊是文章章節的範例,建議使用瀏覽器的「元件檢閱器」來査閱各種群組元素在不同情境下的樣式。亦可伸縮視窗寬度來觀看專為行動裝置提供的彈性設計responsive web design,行動裝置預設為480px以下的視窗或設備。

      文章標題(一級)

      段落,也許是前言。上邊界對一級標題收緊。文章區塊的行高大於全域行高,預設為1.7em。

      二級標題

      這是一個段落,可以是對二級標題的內容詳述,上邊界對二級標題收緊。

      這是另一個段落,可見上邊界不收緊了。

      段落、清單、引用區塊等群組元素對標題的收緊

      三級標題

      這是一個引用區塊段落,可見上邊界對標題收緊;而三級標題則對二級標題收緊。

      這是第二個引用區塊段落,可見上邊界不收緊了。

      在文章中的引用區塊,會縮進二個字元(行動裝置上縮進一字元),並使用楷體。

      三級標題

      1. 這是一個有序清單,
      2. 可見上邊界對標題收緊。
      1. 這是另一個有序清單,
      2. 可見上邊界不收緊了。

      三級標題

      • 這是一個無序清單,
      • 可見上邊界對標題收緊。

      詩,與標題收緊規則

      總結成,琅琅上口:

      上方描述規則的區塊是一個套用類詩篇類別.poem-like的分塊元素div在任意情境下,其後代段落元素p縮進二字元;在行動裝置中,縮進一字元。

      六級標題
      五級標題

      四級標題

      三級標題

      二級標題

      二級標題

      三級標題

      四級標題

      五級標題
      六級標題

      一級標題

      一級標題

      一級標題不會互相收緊。

      後代章節元素不影響群組收緊

      後代章節元素section不會影響各個群組元素對上級標題的收緊。

      比如說……

      二級標題(在section下)

      二級標題(在section下)

      三級標題(在section下)

      四級標題(在section下)

      這是一個放在後代章節元素section中的段落,雖然和四級標題並非同輩,但仍然會對標題收緊。

      四級標題(在section下)

      五級標題(在section下)
      六級標題(在section下)

      同輩章節元素則否

      互為「同輩」的二個章節元素下的標題則不互相收緊。

      二級標題(section甲)

      二級標題(section乙,與甲同輩)

      三級標題(section丙,與甲乙同輩)

      四級標題(section丁,與甲乙丙同輩)

      五級標題(section戊,與甲乙丙丁同輩)
      六級標題(section己,與甲乙丙丁戊同輩)

      這是一個段落,屬於section庚,與甲乙丙丁戊己同輩。

      \ No newline at end of file diff --git a/v3.1.0/README.md b/v3.1.0/README.md new file mode 100644 index 00000000..f6595d33 --- /dev/null +++ b/v3.1.0/README.md @@ -0,0 +1,48 @@ +測試頁索引 +======== + + - [測試頁(標準)](test.html) + - [測試頁(AMD模組)](test-amd.html) + - [測試頁(CommonJS模組,browserify)](test-commonjs.html) + - [測試頁(無JavaScript)](test-nojs.html) + +## Normalisation(樣式標準化) + + - [文字裝飾線元素](./deco-line.html) + - [強調元素(着重號)](./em.html) + - [行間注元素](./ruby.html) + +## 字體 +### 漢字 + + - [標點符號](./biaodian.html) + - [四大字體集](./four.html) + - [字體基型(typeface generics)與@extend](./generics.html) + +### 其他 + + - [西文意大利體](./italic.html) + - [數字](./numeral.html) + - [標音(注音符號、羅馬拼音)](./ruby\(ff\).html) + +## 排版 +### 章節的組成 + + - [文章、章節與內容的邊界調整](./well-knit.html) + - [章節與目錄的計數](./counter.html) + +### 行的組成 + + - [漢字西文混排間隙](./hws.html) + - [標點擠壓](./jiya.html) + - [字元的替換](./subst.html) + + diff --git a/v3.1.0/api.html b/v3.1.0/api.html new file mode 100644 index 00000000..c88b8add --- /dev/null +++ b/v3.1.0/api.html @@ -0,0 +1 @@ +API tests for han.js
      \ No newline at end of file diff --git a/v3.1.0/api.jade b/v3.1.0/api.jade new file mode 100644 index 00000000..bd1bda13 --- /dev/null +++ b/v3.1.0/api.jade @@ -0,0 +1,13 @@ +doctype html +html(lang='zh-Hant') + head + meta(charset='utf-8') + title API tests for han.js + link(rel='stylesheet' href='./qunit.css') + meta(name='viewport' content='width=device-width, initial-scale=1.0') + body + #qunit + #qunit-fixture + script(src='./qunit.js') + script(src='./han.min.js') + script(src='./api.js') diff --git a/v3.1.0/api.js b/v3.1.0/api.js new file mode 100644 index 00000000..60f2f1da --- /dev/null +++ b/v3.1.0/api.js @@ -0,0 +1,209 @@ +(function(){ + var test, module, doc, div, makeArray, qsa, convertHtml, htmlEqual; + test = QUnit.test; + module = QUnit.module; + doc = function(){ + return document.cloneNode(true); + }; + div = function(){ + return document.createElement('div'); + }; + makeArray = function(it){ + return [].slice.call(it); + }; + qsa = function(context, q){ + return makeArray(context.querySelectorAll(q)); + }; + convertHtml = function(html){ + return html.toLowerCase().replace(/[\x20\t\f\s]{2,}/g, '').replace(/[\r\n]/g, '').replace(/="([^"]+)"/g, '=$1'); + }; + htmlEqual = function(a, b, log){ + a = convertHtml(a); + b = convertHtml(b); + return equal(a, b, log); + }; + module('Basics'); + test('Default rendering routine', function(){ + var before, d; + before = 'A辭Q

      '; + d = doc(); + d.documentElement.innerHTML = before; + Han(d.body, d.documentElement).render(); + htmlEqual(d.body.innerHTML, '

      '); + equal(d.title, 'A辭Q'); + equal(d.documentElement.classList.contains('han-js-rendered'), true); + before = 'AノQ

      '; + d = doc(); + d.documentElement.innerHTML = before; + Han(d.body, d.documentElement).render(); + htmlEqual(d.body.innerHTML, '

      '); + equal(d.title, 'AノQ'); + equal(d.documentElement.classList.contains('han-js-rendered'), true); + }); + module('Normalisation'); + test('Adjacent decoration lines', function(){ + var d; + d = div(); + d.innerHTML = 'abcd'; + Han(d).renderDecoLine(); + htmlEqual(d.innerHTML, 'abcd'); + d.innerHTML = ''; + Han(d).renderDecoLine(); + htmlEqual(d.innerHTML, ''); + d.innerHTML = '註記元素甲增訂元素甲註記元素乙一般文字節點增訂元素乙註記元素丙增訂元素丙一般文字節點;訛訊元素甲刪訂元素甲訛訊元素乙一般文字節點刪訂元素乙訛訊元素乙刪訂元素丙。'; + Han(d).renderDecoLine(); + htmlEqual(d.innerHTML, '註記元素甲增訂元素甲註記元素乙一般文字節點增訂元素乙註記元素丙增訂元素丙一般文字節點;訛訊元素甲刪訂元素甲訛訊元素乙一般文字節點刪訂元素乙訛訊元素乙刪訂元素丙。'); + d.innerHTML = '註記元素丁訛訊元素丁增訂元素丁刪訂元素丁。'; + Han(d).renderDecoLine(); + htmlEqual(d.innerHTML, '註記元素丁訛訊元素丁增訂元素丁刪訂元素丁。'); + }); + test('Emphasis marks', function(){ + var support, d; + support = Han.support.textemphasis; + d = div(); + d.innerHTML = '測試abc'; + Han(d).renderEm(); + if (support) { + htmlEqual(d.innerHTML, '測試abc'); + } else { + htmlEqual(d.innerHTML, 'abc'); + } + d.innerHTML = '「測『試』」,test ‘this!’。'; + Han(d).renderEm(); + if (support) { + htmlEqual(d.innerHTML, 'test this!'); + } else { + htmlEqual(d.innerHTML, 'test this!'); + } + d.innerHTML = '𫞵𫞦𠁻𠁶〇⼌⿕⺃⻍⻰⻳⿸⿷⿳'; + Han(d).renderEm(); + if (support) { + htmlEqual(d.innerHTML, '𫞵𫞦𠁻𠁶〇⼌⿕⺃⻍⻰⻳⿸⿷⿳'); + } else { + htmlEqual(d.innerHTML, '𫞵𫞦𠁻𠁶'); + } + d.innerHTML = '¡Hola! Ὅμηρος Свети'; + Han(d).renderEm(); + if (support) { + htmlEqual(d.innerHTML, '¡Hola! Ὅμηρος Свети'); + } else { + htmlEqual(d.innerHTML, '¡Hola! μηρος Свети'); + } + }); + test('Interlinear annotations (Ruby)', function(){ + var support, d; + support = Han.support.ruby; + d = div(); + d.innerHTML = 'zi'; + Han(d).renderRuby(); + if (support) { + htmlEqual(d.innerHTML, 'zi'); + } else { + htmlEqual(d.innerHTML, 'zi'); + } + d.innerHTML = '\n 事ㄕˋㄑㄧㄥˊ\n 看ㄎㄢˋ\n 冷ㄌㄥˇㄋㄨㄢˇ\n'; + Han(d).renderRuby(); + qsa(d, 'ru').forEach(function(it){ + it.removeAttribute('form'); + it.removeAttribute('zhuyin'); + it.removeAttribute('diao'); + it.removeAttribute('length'); + }); + htmlEqual(d.innerHTML, 'ˋㄑㄧㄥˊㄎㄢˋㄌㄥˇㄋㄨㄢˇ'); + d.innerHTML = '

      \n \n 辛亥革命發生在1911-10-10,\n \n 清宣統三年\n 那天革命先烈們一同推翻了帝制。\n \n

      '; + Han(d).renderRuby(); + qsa(d, 'ru').forEach(function(it){ + it.removeAttribute('annotation'); + it.removeAttribute('order'); + it.removeAttribute('span'); + }); + htmlEqual(d.innerHTML, '

      辛亥革命發生在1911-10-10,清宣統三年那天革命先烈們一同推翻了帝制。

      '); + d.innerHTML = '

      \n \n 「」\n \n NiǔyuēShì\n \n \n New York City\n \n \n\n \n 『』\n \n New York City\n \n \n NiǔyuēShì\n \n \n\n \n ‘’\n \n New York City\n \n \n niǔyuēshì\n \n\n \n „‟\n \n niǔyuēshì\n \n \n New York City\n \n \n\n \n ⸘‽\n \n New York City\n \n \n 世界之都\n \n 。\n

      \n \n ,\n !\n\n \n san1shih2liu4ko0ya2ch\'ih3cho1tuirh4ssu1ta3\n \n \n sānshíliùgechǐzhuōduìr\n \n '; + Han(d).renderRuby(); + qsa(d, 'ru').forEach(function(it){ + it.removeAttribute('annotation'); + it.removeAttribute('order'); + it.removeAttribute('span'); + }); + htmlEqual(d.innerHTML, '

      \n niǔyuēshìnew york cityniǔyuēshìnew york cityniǔyuēshìnew york cityniǔyuēshìnew york citynew york city世界之都。\n

      \n

      \n san1sānshih2shíliu4liùko0geya2ch\'ih3chǐcho1zhuōtuirh4duìrssu1ta3\n

      '); + d.innerHTML = '

      \n \n \n \n \n \n \n 。\n\n \n ㄐㄧㆵ͘\n ㄌㄤˊ\n ㄏㄨㄢˊ\n ㄌㄜˋ\n ㄐㄧㆵ͘\n ㄧㆫ˫\n \n\n \n Tsi̍t\n lâng\n hoân‑ló\n chi̍t\n iūⁿ\n \n\n Tsi̍t\n lâng\n huân-ló\n tsi̍t\n iūnn\n \n \n

      '; + Han(d).renderRuby(); + d.querySelector('hruby').removeAttribute('rightangle'); + qsa(d, 'ru').forEach(function(it){ + it.removeAttribute('annotation'); + it.removeAttribute('order'); + it.removeAttribute('span'); + it.removeAttribute('form'); + it.removeAttribute('zhuyin'); + it.removeAttribute('diao'); + it.removeAttribute('length'); + }); + htmlEqual(d.innerHTML, '

      \n \n ㄐㄧㆵ͘Tsi̍tTsi̍t\n ㄌㄤˊlânglâng\n ㄏㄨㄢˊㄌㄜˋhoân‑lóhuân-ló\n ㄐㄧㆵ͘chi̍ttsi̍t\n ㄧㆫ˫iūⁿiūnn。\n \n

      '); + }); + module('Advanced typesetting features'); + test('Hanzi-Western script mixed spacing (HWS)', function(){ + var d; + d = div(); + d.innerHTML = '測試test測試123測試'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '測試 test 測試 123 測試'); + d.innerHTML = '測試 test 測試 123 測試測試 test測試。'; + Han(d).renderHWS(true); + htmlEqual(d.innerHTML, '測試 test 測試 123 測試測試 test測試。'); + d.innerHTML = '測試,test測試123。'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '測試,test 測試 123。'); + d.innerHTML = '測試α測試β測試'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '測試 α 測試 β 測試'); + d.innerHTML = 'я測試у測試ь測試в'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, 'я 測試 у 測試 ь 測試 в'); + d.innerHTML = 'A㐀a㘻a䶵a𠀀a𫠝a〇a⿸a⻍a⻰aのa'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, 'a a a a 𠀀 a 𫠝 a a a a a a'); + d.innerHTML = '天然ê上好。荷Ὅ̴̊̌ηρος̃馬。貓К҉о҈ш҉к҈а҈咪。'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '天然 上好。荷 ὅ̴̊̌ηρος̃ 馬。貓 к҉о҈ш҉к҈а҈ 咪。'); + d.innerHTML = '去Europe旅行。'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '去 europe 旅行。'); + d.innerHTML = '去Europe旅行。'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '去 europe 旅行。'); + d.innerHTML = '測試¿測試?測試¡測試!為‘什’麼;為“什”麼?'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '測試 ¿測試? 測試 ¡測試! ‘什’ 麼; “什” 麼?'); + d.innerHTML = '單\'引\'號和雙"引"號和單\'引\'號和雙"引"號.'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '單 \'引\' 號和雙 "引" 號和單 \'引\' 號和雙 "引" 號.'); + d.innerHTML = '\'單x引x號\'"雙x引x號".'; + Han(d).renderHWS(); + htmlEqual(d.innerHTML, '\'單 x x 號\'"雙 x x 號".'); + d.innerHTML = '單\'引\'號和雙"引"號和單\'引\'號和雙"引"號.'; + Han(d).renderHWS(); + return htmlEqual(d.innerHTML, '單 \'引\' 號和雙 "引" 號和單 \'引\' 號和雙 "引" 號.'); + }); + test('Consecutive punctuation (Jiya)', function(){ + var d; + d = div(); + d.innerHTML = '「字『字』?」字「字『字』」字?'; + Han(d).renderJiya(); + qsa(d, 'char').forEach(function(it){ + return it.removeAttribute('unicode'); + }); + htmlEqual(d.innerHTML, '「字『字字「字『字字?'); + d.innerHTML = '字、「字」字,(字)字……「字」。'; + Han(d).renderJiya(); + qsa(d, 'char').forEach(function(it){ + return it.removeAttribute('unicode'); + }); + htmlEqual(d.innerHTML, '字字」字字)字……'); + d.innerHTML = '《書名》〈篇名〉(內容)'; + Han(d).renderJiya(); + qsa(d, 'char').forEach(function(it){ + return it.removeAttribute('unicode'); + }); + return htmlEqual(d.innerHTML, '《書名篇名內容)'); + }); +}).call(this); diff --git a/v3.1.0/api.ls b/v3.1.0/api.ls new file mode 100644 index 00000000..d6a19f68 --- /dev/null +++ b/v3.1.0/api.ls @@ -0,0 +1,380 @@ + +test = QUnit.test +module = QUnit.module + +doc = -> document.cloneNode true +div = -> document.createElement \div +makeArray = -> [].slice.call it +qsa = ( context, q ) -> makeArray( context.querySelectorAll q ) + +convert-html = ( html ) -> + html + .toLowerCase! + .replace( /[\x20\t\f\s]{2,}/g, '' ) + .replace( /[\r\n]/g, '' ) + .replace( /="([^"]+)"/g, \=$1 ) + +html-equal = ( a, b, log ) -> + a = convert-html a + b = convert-html b + equal a, b, log + +module \Basics +test 'Default rendering routine', !-> + # Chinese + before = 'A辭Q

      ' + d = doc! + d.documentElement.innerHTML = before + Han d.body, d.documentElement .render! + + html-equal d.body.innerHTML, '

      ' + equal d.title, \A辭Q + equal d.documentElement.classList.contains(\han-js-rendered), true + + # Japanese + before = 'AノQ

      ' + d = doc! + d.documentElement.innerHTML = before + Han d.body, d.documentElement .render! + + html-equal d.body.innerHTML, '

      ' + equal d.title, \AノQ + equal d.documentElement.classList.contains(\han-js-rendered), true + +module \Normalisation +test 'Adjacent decoration lines', !-> + d = div! + d.innerHTML = \abcd + Han d .renderDecoLine! + html-equal d.innerHTML, 'abcd' + + d.innerHTML = \ + Han d .renderDecoLine! + html-equal d.innerHTML, '' + + d.innerHTML = '註記元素甲增訂元素甲註記元素乙一般文字節點增訂元素乙註記元素丙增訂元素丙一般文字節點;訛訊元素甲刪訂元素甲訛訊元素乙一般文字節點刪訂元素乙訛訊元素乙刪訂元素丙。' + Han d .renderDecoLine! + html-equal d.innerHTML, '註記元素甲增訂元素甲註記元素乙一般文字節點增訂元素乙註記元素丙增訂元素丙一般文字節點;訛訊元素甲刪訂元素甲訛訊元素乙一般文字節點刪訂元素乙訛訊元素乙刪訂元素丙。' + + d.innerHTML = '註記元素丁訛訊元素丁增訂元素丁刪訂元素丁。' + Han d .renderDecoLine! + html-equal d.innerHTML, '註記元素丁訛訊元素丁增訂元素丁刪訂元素丁。' + +test 'Emphasis marks' !-> + support = Han.support.textemphasis + d = div! + + # Basic + d.innerHTML = '測試abc' + Han d .renderEm! + + if support + html-equal d.innerHTML, '測試abc' + else + html-equal d.innerHTML, 'abc' + + # Skip punctuation + d.innerHTML = '「測『試』」,test ‘this!’。' + Han d .renderEm! + + if support + html-equal d.innerHTML, 'test this!' + else + html-equal d.innerHTML, 'test this!' + + # All CJK-related blocks + d.innerHTML = '𫞵𫞦𠁻𠁶〇⼌⿕⺃⻍⻰⻳⿸⿷⿳' + Han d .renderEm! + + if support + html-equal d.innerHTML, '𫞵𫞦𠁻𠁶〇⼌⿕⺃⻍⻰⻳⿸⿷⿳' + else + html-equal d.innerHTML, '𫞵𫞦𠁻𠁶' + + # All western letters + d.innerHTML = '¡Hola! Ὅμηρος Свети' + Han d .renderEm! + + if support + html-equal d.innerHTML, '¡Hola! Ὅμηρος Свети' + else + html-equal d.innerHTML, '¡Hola! μηρος Свети' + +test 'Interlinear annotations (Ruby)', !-> + support = Han.support.ruby + d = div! + + # Basic + d.innerHTML = 'zi' + Han d .renderRuby! + + if support + html-equal d.innerHTML, 'zi' + else + html-equal d.innerHTML, 'zi' + + # Zhuyin + d.innerHTML = ''' + + 事ㄕˋㄑㄧㄥˊ + 看ㄎㄢˋ + 冷ㄌㄥˇㄋㄨㄢˇ + +''' + Han d .renderRuby! + qsa d, \ru + .forEach !-> + it.removeAttribute \form + it.removeAttribute \zhuyin + it.removeAttribute \diao + it.removeAttribute \length + html-equal d.innerHTML, 'ˋㄑㄧㄥˊㄎㄢˋㄌㄥˇㄋㄨㄢˇ' + + # Complex ruby + d.innerHTML = ''' +

      + + 辛亥革命發生在1911-10-10, + + 清宣統三年 + 那天革命先烈們一同推翻了帝制。 + +

      +''' + Han d .renderRuby! + qsa d, \ru + .forEach !-> + it.removeAttribute \annotation + it.removeAttribute \order + it.removeAttribute \span + html-equal d.innerHTML, '

      辛亥革命發生在1911-10-10,清宣統三年那天革命先烈們一同推翻了帝制。

      ' + + d.innerHTML = ''' +

      + + 「」 + + NiǔyuēShì + + + New York City + + + + + 『』 + + New York City + + + NiǔyuēShì + + + + + ‘’ + + New York City + + + niǔyuēshì + + + + „‟ + + niǔyuēshì + + + New York City + + + + + ⸘‽ + + New York City + + + 世界之都 + + 。 +

      + + , + ! + + + san1shih2liu4ko0ya2ch\'ih3cho1tuirh4ssu1ta3 + + + sānshíliùgechǐzhuōduìr + + +''' + Han d .renderRuby! + qsa d, \ru + .forEach !-> + it.removeAttribute \annotation + it.removeAttribute \order + it.removeAttribute \span + html-equal d.innerHTML, ''' +

      + niǔyuēshìnew york cityniǔyuēshìnew york cityniǔyuēshìnew york cityniǔyuēshìnew york citynew york city世界之都。 +

      +

      + san1sānshih2shíliu4liùko0geya2ch\'ih3chǐcho1zhuōtuirh4duìrssu1ta3 +

      +''' + + # Triaxial ruby + d.innerHTML = ''' +

      + + + + + + + 。 + + + ㄐㄧㆵ͘ + ㄌㄤˊ + ㄏㄨㄢˊ + ㄌㄜˋ + ㄐㄧㆵ͘ + ㄧㆫ˫ + + + + Tsi̍t + lâng + hoân‑ló + chi̍t + iūⁿ + + + Tsi̍t + lâng + huân-ló + tsi̍t + iūnn + + +

      +''' + Han d .renderRuby! + d.querySelector \hruby .removeAttribute \rightangle + qsa d, \ru + .forEach !-> + it.removeAttribute \annotation + it.removeAttribute \order + it.removeAttribute \span + it.removeAttribute \form + it.removeAttribute \zhuyin + it.removeAttribute \diao + it.removeAttribute \length + html-equal d.innerHTML, ''' +

      + + ㄐㄧㆵ͘Tsi̍tTsi̍t + ㄌㄤˊlânglâng + ㄏㄨㄢˊㄌㄜˋhoân‑lóhuân-ló + ㄐㄧㆵ͘chi̍ttsi̍t + ㄧㆫ˫iūⁿiūnn。 + +

      +''' + +module 'Advanced typesetting features' +test 'Hanzi-Western script mixed spacing (HWS)' -> + d = div! + + # Basic + d.innerHTML = '測試test測試123測試' + Han d .renderHWS! + html-equal d.innerHTML, '測試 test 測試 123 測試' + + # Strict mode + d.innerHTML = '測試 test 測試 123 測試測試 test測試。' + Han d .renderHWS true + html-equal d.innerHTML, '測試 test 測試 123 測試測試 test測試。' + + # With Biaodian + d.innerHTML = '測試,test測試123。' + Han d .renderHWS! + html-equal d.innerHTML, '測試,test 測試 123。' + + # Greek letters + d.innerHTML = '測試α測試β測試' + Han d .renderHWS! + html-equal d.innerHTML, '測試 α 測試 β 測試' + + # Cyrillic letters + d.innerHTML = 'я測試у測試ь測試в' + Han d .renderHWS! + html-equal d.innerHTML, 'я 測試 у 測試 ь 測試 в' + + # All CJK-related blocks + d.innerHTML = 'A㐀a㘻a䶵a𠀀a𫠝a〇a⿸a⻍a⻰aのa' + Han d .renderHWS! + html-equal d.innerHTML, 'a a a a 𠀀 a 𫠝 a a a a a a' + + # Combining characters + d.innerHTML = '天然ê上好。荷Ὅ̴̊̌ηρος̃馬。貓К҉о҈ш҉к҈а҈咪。' + Han d .renderHWS! + html-equal d.innerHTML, '天然 上好。荷 ὅ̴̊̌ηρος̃ 馬。貓 к҉о҈ш҉к҈а҈ 咪。' + + # Cross-boundary + d.innerHTML = '去Europe旅行。' + Han d .renderHWS! + html-equal d.innerHTML, '去 europe 旅行。' + + # With comments or `` + d.innerHTML = '去Europe旅行。' + Han d .renderHWS! + html-equal d.innerHTML, '去 europe 旅行。' + + # Edge cases + d.innerHTML = '測試¿測試?測試¡測試!為‘什’麼;為“什”麼?' + Han d .renderHWS! + html-equal d.innerHTML, '測試 ¿測試? 測試 ¡測試! ‘什’ 麼; “什” 麼?' + + d.innerHTML = '單\'引\'號和雙"引"號和單\'引\'號和雙"引"號.' + Han d .renderHWS! + html-equal d.innerHTML, '單 \'引\' 號和雙 "引" 號和單 \'引\' 號和雙 "引" 號.' + + + d.innerHTML = '\'單x引x號\'"雙x引x號".' + Han d .renderHWS! + html-equal d.innerHTML, '\'單 x x 號\'"雙 x x 號".' + + + d.innerHTML = '單\'引\'號和雙"引"號和單\'引\'號和雙"引"號.' + Han d .renderHWS! + html-equal d.innerHTML, '單 \'引\' 號和雙 "引" 號和單 \'引\' 號和雙 "引" 號.' + +test 'Consecutive punctuation (Jiya)' -> + d = div! + d.innerHTML = '「字『字』?」字「字『字』」字?' + Han d .renderJiya! + qsa d, \char + .forEach -> + it.removeAttribute \unicode + html-equal d.innerHTML, '「字『字字「字『字字?' + + d.innerHTML = '字、「字」字,(字)字……「字」。' + Han d .renderJiya! + qsa d, \char + .forEach -> + it.removeAttribute \unicode + html-equal d.innerHTML, '字字」字字)字……' + + d.innerHTML = '《書名》〈篇名〉(內容)' + Han d .renderJiya! + qsa d, \char + .forEach -> + it.removeAttribute \unicode + html-equal d.innerHTML, '《書名篇名內容)' + diff --git a/v3.1.0/biaodian.html b/v3.1.0/biaodian.html new file mode 100644 index 00000000..a61a57e6 --- /dev/null +++ b/v3.1.0/biaodian.html @@ -0,0 +1,36 @@ +測試・標點符號 — 漢字標準格式

      測試·標點符號

      提示:此測試頁需在支援CSS3 @font-face屬性unicode-range的瀏覽器下方可正常顯示。其餘瀏覽器僅支援基本符號(間隔號、刪節號、破折號)修正。

      推薦

      句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號!
      連接號〇-九 斜線/或\
      「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容)
      間隔號甲·乙
      連字時:破折號——刪節號……
      單獨存在時:破拆號— 刪節號…

      台灣教育部式(CNS)

      句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號!
      連接號〇-九 斜線/或\
      「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容)
      間隔號甲·乙
      連字時:破折號——刪節號……
      單獨存在時:破拆號— 刪節號…

      中國國家標準(GB)

      句号。点式全形句号.逗号,顿号、分号;冒号:问号?叹号!
      连接号〇-九 斜线/或\
      「『内容』内容」‘内“内容”容’《内容》〈内容〉(内〔内容〕容)
      間隔號甲·乙
      連字時:破折號——刪節號……
      單獨存在時:破拆號— 刪節號…

      襯線標點

      推薦

      句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號!
      連接號〇-九 斜線/或\
      「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容)
      間隔號甲·乙
      連字時:破折號——刪節號……
      單獨存在時:破拆號— 刪節號…

      台灣教育部式(CNS)

      句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號!
      連接號〇-九 斜線/或\
      「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容)
      間隔號甲·乙
      連字時:破折號——刪節號……
      單獨存在時:破拆號— 刪節號…

      中國國家標準(GB)

      句号。点式全形句号.逗号,顿号、分号;冒号:问号?叹号!
      连接号〇-九 斜线/或\
      「『内容』内容」‘内“内容”容’《内容》〈内容〉(内〔内容〕容)
      間隔號甲·乙
      連字時:破折號——刪節號……
      單獨存在時:破拆號— 刪節號…

      \ No newline at end of file diff --git a/v3.1.0/biaodian.jade b/v3.1.0/biaodian.jade new file mode 100644 index 00000000..94e40a11 --- /dev/null +++ b/v3.1.0/biaodian.jade @@ -0,0 +1,153 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='utf-8') + title 測試・標點符號 — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + style. + html { + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + } + + #tuijian p { + font-family: 'Biaodian Pro Sans', 'Helvetica Neue', Arial, 'Han Heiti', sans-serif; + } + p:lang(zh-Hant-TW) { + font-family: 'Biaodian Pro Sans CNS', 'Helvetica Neue', Arial, 'Han Heiti CNS', sans-serif; + } + + p:lang(zh-Hans-CN) { + font-family: 'Biaodian Pro Sans GB', 'Helvetica Neue', Arial, 'Han Heiti GB', sans-serif; + } + + #chenxian p { + font-family: 'Biaodian Pro Serif', 'Numeral LF Serif', Georgia, 'Times New Roman', 'Han Songti', serif; + } + + #chenxian p:lang(zh-Hant-TW) { + font-family: 'Biaodian Pro Serif CNS', 'Numeral LF Serif', Georgia, 'Times New Roman', 'Han Songti CNS', serif; + } + + #chenxian p:lang(zh-Hans-CN) { + font-family: 'Biaodian Pro Serif GB', 'Numeral LF Serif', Georgia, 'Times New Roman', 'Han Songti GB', serif; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + body.test + + article + h1 測試·標點符號 + p.noti + strong 提示: + | 此測試頁需在支援CSS3 @font-face屬性unicode-range的瀏覽器下方可正常顯示。其餘瀏覽器僅支援基本符號(間隔號、刪節號、破折號)修正。 + section#tuijian + h2 推薦 + p + | 句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號! + br + | 連接號〇-九 斜線/或\ + br + | 「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容) + br + | 間隔號甲·乙 + br + strong 連字時: + | 破折號——刪節號…… + br + strong 單獨存在時: + | 破拆號— 刪節號… + section#taiwan_jiaoyubu_biaozhun(lang='zh-Hant-TW') + h2 台灣教育部式(CNS) + p + | 句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號! + br + | 連接號〇-九 斜線/或\ + br + | 「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容) + br + | 間隔號甲·乙 + br + strong 連字時: + | 破折號——刪節號…… + br + strong 單獨存在時: + | 破拆號— 刪節號… + section#zhongguo_guojia_biaozhun(lang='zh-Hans-CN') + h2 中國國家標準(GB) + p + | 句号。点式全形句号.逗号,顿号、分号;冒号:问号?叹号! + br + | 连接号〇-九 斜线/或\ + br + | 「『内容』内容」‘内“内容”容’《内容》〈内容〉(内〔内容〕容) + br + | 間隔號甲·乙 + br + strong 連字時: + | 破折號——刪節號…… + br + strong 單獨存在時: + | 破拆號— 刪節號… + section#chenxian + h2 襯線標點 + section#chenxian-tuijian + h3 推薦 + p + | 句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號! + br + | 連接號〇-九 斜線/或\ + br + | 「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容) + br + | 間隔號甲·乙 + br + strong 連字時: + | 破折號——刪節號…… + br + strong 單獨存在時: + | 破拆號— 刪節號… + section#chenxian-taiwan_jiaoyubu_biaozhun(lang='zh-Hant-TW') + h3 台灣教育部式(CNS) + p + | 句號。點式全形句號.逗號,頓號、分號;冒號:問號?嘆號! + br + | 連接號〇-九 斜線/或\ + br + | 「『內容』内容」‘內“內容”容’《內容》〈內容〉(內〔內容〕容) + br + | 間隔號甲·乙 + br + strong 連字時: + | 破折號——刪節號…… + br + strong 單獨存在時: + | 破拆號— 刪節號… + section#chenxian-zhongguo_guojia_biaozhun(lang='zh-Hans-CN') + h3 中國國家標準(GB) + p + | 句号。点式全形句号.逗号,顿号、分号;冒号:问号?叹号! + br + | 连接号〇-九 斜线/或\ + br + | 「『内容』内容」‘内“内容”容’《内容》〈内容〉(内〔内容〕容) + br + | 間隔號甲·乙 + br + strong 連字時: + | 破折號——刪節號…… + br + strong 單獨存在時: + | 破拆號— 刪節號… + + script(src='./han.min.js') diff --git a/v3.1.0/counter-han.css b/v3.1.0/counter-han.css new file mode 100644 index 00000000..07be819f --- /dev/null +++ b/v3.1.0/counter-han.css @@ -0,0 +1 @@ +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{line-height:1.3;-webkit-font-smoothing:subpixel-antialiased}ol,ul{padding-left:2em}blockquote,figure{margin-left:2em;margin-right:2em}address{font-style:inherit}pre{white-space:pre;word-wrap:normal}a{text-decoration:inherit}em:lang(ja),em:lang(zh){-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;font-style:inherit;border-bottom:2px dotted;padding-bottom:.05em;border-bottom-width:-webkit-calc(0px);padding-bottom:-webkit-calc(0px)}em:lang(ja){-moz-text-emphasis:filled sesame;-webkit-text-emphasis:filled sesame;text-emphasis:filled sesame;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}b,dfn:lang(ja),dfn:lang(zh),strong{font-weight:bolder}cite:lang(ja),cite:lang(zh),dfn:lang(ja),dfn:lang(zh){font-style:inherit}q{quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(zh){quotes:'\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f'}q:lang(en),q:lang(zh-CN){quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(en-GB){quotes:'\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d'}q:before{content:open-quote}q:after{content:close-quote}q:lang(ja):after,q:lang(ja):before{content:none}code,kbd,pre,samp{font-family:monospace,monospace,sans-serif}i:lang(ja),i:lang(zh),var:lang(ja),var:lang(zh){font-style:inherit}.han-js-rendered del+del.adjacent,.han-js-rendered del+s.adjacent,.han-js-rendered ins.adjacent,.han-js-rendered s+del.adjacent,.han-js-rendered s+s.adjacent,.han-js-rendered u.adjacent,del+del,del+s,ins+ins,ins+u,s+del,s+s,u+ins,u+u{margin-left:.125em}ins,u{padding-bottom:.05em;border-bottom:1px solid;text-decoration:none}ruby :after,ruby :before{line-height:normal}ruby>rt:not(:empty):before{content:'\ff08'}ruby>rt:not(:empty):after{content:'\ff09'}ruby>rb+rtc:before{content:'\ff08'}ruby>rtc:after{content:'\ff0c'}ruby>rtc:last-of-type:after{content:'\ff09'}ruby>rt:after,ruby>rt:before{display:inline-block;overflow:hidden;vertical-align:middle;height:0;width:0}ruby>rt:not(:empty):after,ruby>rt:not(:empty):before{height:-moz-calc(1.3em);width:-moz-calc(1em)}.han-js-rendered del+del,.han-js-rendered del+s,.han-js-rendered ins+ins,.han-js-rendered ins+u,.han-js-rendered s+del,.han-js-rendered s+s,.han-js-rendered u+ins,.han-js-rendered u+u{margin-left:auto}.han-js-rendered em:lang(ja),.han-js-rendered em:lang(zh){padding-bottom:auto;border-bottom-width:0}.no-textemphasis em:lang(ja),.no-textemphasis em:lang(zh){line-height:2}.no-textemphasis em:lang(ja) char,.no-textemphasis em:lang(zh) char{position:relative;font-style:inherit}.no-textemphasis em:lang(ja) char:after,.no-textemphasis em:lang(zh) char:after{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;text-decoration:none;-moz-transform:scale(0.5);-ms-transform:scale(0.5);-webkit-transform:scale(0.5);transform:scale(0.5);position:absolute;left:50%;top:0;margin-left:-250%;overflow:hidden;display:inline-block;height:1em;width:500%;line-height:1;text-align:center;text-indent:0;font-family:Georgia,'Times New Roman',Arial,!important}em:lang(ja) char.biaodian,em:lang(ja) char.punct,em:lang(zh) char.biaodian,em:lang(zh) char.punct{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none}.no-textemphasis em:lang(ja) char.biaodian:after,.no-textemphasis em:lang(ja) char.punct:after,.no-textemphasis em:lang(zh) char.biaodian:after,.no-textemphasis em:lang(zh) char.punct:after{content:none!important}.no-textemphasis em:lang(zh) char:after{margin-top:1em;content:'\25cf'}.no-textemphasis em:lang(ja) char:after{margin-top:-.7em;content:'\fe45'}hruby{display:inline;line-height:2}hruby rp{display:none}hruby ru[annotation]>rt{display:inline-block;height:0;width:0;font:0/0 hidden-text}hruby ru{position:relative;display:inline-block;text-indent:0}hruby ru:before,hruby zhuyin{-moz-transform:scale(0.55);-ms-transform:scale(0.55);-webkit-transform:scale(0.55);transform:scale(0.55);-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;line-height:normal;text-decoration:none;text-indent:0;position:absolute;display:inline-block}hruby ru[annotation]{text-align:center}hruby ru[annotation]:before{left:-265%;vertical-align:top;height:1em;width:600%;content:attr(annotation);line-height:1;text-align:center;text-indent:0}hruby[rightangle] ru[annotation]:before{left:-250%}hruby ru[zhuyin]{display:inline-block;position:relative;width:1.8em;text-align:left}hruby ru[zhuyin] zhuyin{right:.2em;top:0;height:2.7em;width:.8em;line-height:.9;white-space:pre-wrap;word-break:break-all}hruby ru[zhuyin] diao{position:absolute;right:-.9em;top:0;display:inline-block;width:1em}hruby ru[zhuyin]:empty,hruby ru[zhuyin][length='0']{width:auto}hruby ru[zhuyin]:empty zhuyin,hruby ru[zhuyin][length='0'] zhuyin{display:none}hruby ru[zhuyin][length='1'] zhuyin{margin-top:.125em}hruby ru[zhuyin][length='1'] diao{margin-top:-.35em}hruby ru[zhuyin][length='2'] zhuyin{margin-top:-.175em}hruby ru[zhuyin][length='2'] diao{margin-top:.5em}hruby ru[zhuyin][length='3'] zhuyin{margin-top:-.45em}hruby ru[zhuyin][length='3'] diao{margin-top:1.3em}hruby ru[zhuyin][diao='˙'] diao{right:-.35em}hruby ru[zhuyin][diao='˙'][length='1'] diao{margin-top:-.5em}hruby ru[zhuyin][diao='˙'][length='2'] diao{margin-top:-.3em}hruby ru[zhuyin][diao='˙'][length='3'] diao{margin-top:-.25em}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1.2);-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2);margin-right:-.25em}hruby ru[zhuyin][diao='󳆴'] diao,hruby ru[zhuyin][diao='󳆵'] diao,hruby ru[zhuyin][diao='󳆶'] diao,hruby ru[zhuyin][diao='󳆷'] diao,hruby ru[zhuyin][diao^='ㆴ'] diao,hruby ru[zhuyin][diao^='ㆵ'] diao,hruby ru[zhuyin][diao^='ㆶ'] diao,hruby ru[zhuyin][diao^='ㆷ'] diao{top:20%;margin-right:-.3em}hruby ru[annotation]:before,hruby[rightangle] ru[annotation][order='1']:before{top:-.5em}hruby ru[order='1']:before,hruby[rightangle] ru[annotation][order='0']:before{bottom:-.4em;top:auto}hruby[rightangle] ru[annotation]:before{margin-left:-.4em}@media screen and (-webkit-min-device-pixel-ratio:1.5),(min-resolution:192dpi){hruby yin{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);display:inline-block}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}hruby ru[zhuyin][diao='˙'] diao{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);top:.125em}}jinze{display:inline-block;text-indent:0}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';font-weight:600;src:local('YuGothic Bold'),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';font-weight:600;src:local('YuGothic Bold'),local(YuGo-Bold),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti GB';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold);unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Heiti SC Medium'),local('Microsoft YaHei Bold'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold);unicode-range:U+270C}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSong),local('Lisong Pro'),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho')}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local(PMingLiU),local(SimSun)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro')}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti SC Bold'),local('STSongti TC Bold'),local(STSongti-SC-Bold),local(STSongti-TC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti GB';font-weight:600;src:local('STSongti SC Bold'),local(STSongti-SC-Bold)}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSongti),local('Lisong Pro'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+270C}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local('MS Mincho'),local(PMingLiU),local(SimSun);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+270C}@font-face{font-family:cursive;src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti';src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti CNS';src:local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti GB';src:local('Kaiti SC'),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti GB';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong CNS';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong GB';src:local(STFangsong),local(FangSong)}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Arial Unicode MS'),local('MS Gothic');unicode-range:U+2014}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho'),local('Microsoft Yahei');unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic');unicode-range:U+2026}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Lisong Pro'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU),local('MS Gothic');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(STSongti-TC-Regular),local('Lisong Pro'),local('Heiti TC'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSongti),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Basic';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:'Biaodian Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Latin Italic Serif';src:local('Georgia Italic'),local('Times New Roman Italic'),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Serif';font-weight:700;src:local('Georgia Bold Italic'),local('Times New Roman Bold Italic'),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:'Latin Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Sans';src:local(Skia),local('Neutraface 2 Text'),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Serif';src:local(Georgia),local('Hoefler Text'),local('Big Caslon')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Italic Serif';src:local('Georgia Italic'),local('Hoefler Text Italic'),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Sans';src:local('Helvetica Neue'),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Serif';src:local(Palatino),local('Palatino Linotype'),local('Times New Roman')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';src:local('Palatino Italic'),local('Palatino Italic Linotype'),local('Times New Roman Italic'),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';font-weight:700;src:local('Palatino Bold Italic'),local('Palatino Bold Italic Linotype'),local('Times New Roman Bold Italic'),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{font-family:'Numeral TF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Kaiti'}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Heiti';src:local('Hiragino Sans GB'),local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype')}@font-face{font-family:'Zhuyin Heiti';src:local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3127}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Zhuyin Heiti';unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Romanization Sans';unicode-range:U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}article strong :lang(ja-Latn),article strong :lang(zh-Latn),article strong :not(:lang(zh)):not(:lang(ja)),article strong:lang(ja-Latn),article strong:lang(zh-Latn),article strong:not(:lang(zh)):not(:lang(ja)),html :lang(ja-Latn),html :lang(zh-Latn),html :not(:lang(zh)):not(:lang(ja)),html:lang(ja-Latn),html:lang(zh-Latn),html:not(:lang(zh)):not(:lang(ja)){font-family:'Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}[lang*=Hant],[lang=zh-HK],[lang=zh-TW],[lang^=zh],article strong:lang(zh),article strong:lang(zh-Hant),html:lang(zh),html:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}[lang*=Hans],[lang=zh-CN],article strong:lang(zh-CN),article strong:lang(zh-Hans),html:lang(zh-CN),html:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}[lang^=ja],article strong:lang(ja),html:lang(ja){font-family:'Yakumono Sans','Helvetica Neue',Helvetica,Arial,sans-serif}article blockquote i :lang(ja-Latn),article blockquote i :lang(zh-Latn),article blockquote i :not(:lang(zh)):not(:lang(ja)),article blockquote i:lang(ja-Latn),article blockquote i:lang(zh-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote var :lang(ja-Latn),article blockquote var :lang(zh-Latn),article blockquote var :not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(ja-Latn),article blockquote var:lang(zh-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}article blockquote i:lang(zh-CN),article blockquote i:lang(zh-Hans),article blockquote var:lang(zh-CN),article blockquote var:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}article blockquote i:lang(ja),article blockquote var:lang(ja){font-family:'Yakumono Sans','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,sans-serif}article figure blockquote :lang(ja-Latn),article figure blockquote :lang(zh-Latn),article figure blockquote :not(:lang(zh)):not(:lang(ja)),article figure blockquote:lang(ja-Latn),article figure blockquote:lang(zh-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)),figure blockquote :lang(ja-Latn),figure blockquote :lang(zh-Latn),figure blockquote :not(:lang(zh)):not(:lang(ja)),figure blockquote:lang(ja-Latn),figure blockquote:lang(zh-Latn),figure blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Songti',cursive,serif}article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant),figure blockquote:lang(zh),figure blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Songti',serif}article figure blockquote:lang(zh-CN),article figure blockquote:lang(zh-Hans),figure blockquote:lang(zh-CN),figure blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Songti GB',serif}article figure blockquote:lang(ja),figure blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',serif}article blockquote :lang(ja-Latn),article blockquote :lang(zh-Latn),article blockquote :not(:lang(zh)):not(:lang(ja)),article blockquote:lang(ja-Latn),article blockquote:lang(zh-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Kaiti',cursive,serif}article blockquote:lang(zh),article blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}article blockquote:lang(zh-CN),article blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}article blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',cursive,serif}i :lang(ja-Latn),i :lang(zh-Latn),i :not(:lang(zh)):not(:lang(ja)),i:lang(ja-Latn),i:lang(zh-Latn),i:not(:lang(zh)):not(:lang(ja)),var :lang(ja-Latn),var :lang(zh-Latn),var :not(:lang(zh)):not(:lang(ja)),var:lang(ja-Latn),var:lang(zh-Latn),var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti',cursive,serif}i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}i:lang(zh-CN),i:lang(zh-Hans),var:lang(zh-CN),var:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}i:lang(ja),var:lang(ja){font-family:'Yakumono Serif','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman',cursive,serif}code :lang(ja-Latn),code :lang(zh-Latn),code :not(:lang(zh)):not(:lang(ja)),code:lang(ja-Latn),code:lang(zh-Latn),code:not(:lang(zh)):not(:lang(ja)),kbd :lang(ja-Latn),kbd :lang(zh-Latn),kbd :not(:lang(zh)):not(:lang(ja)),kbd:lang(ja-Latn),kbd:lang(zh-Latn),kbd:not(:lang(zh)):not(:lang(ja)),pre :lang(ja-Latn),pre :lang(zh-Latn),pre :not(:lang(zh)):not(:lang(ja)),pre:lang(ja-Latn),pre:lang(zh-Latn),pre:not(:lang(zh)):not(:lang(ja)),samp :lang(ja-Latn),samp :lang(zh-Latn),samp :not(:lang(zh)):not(:lang(ja)),samp:lang(ja-Latn),samp:lang(zh-Latn),samp:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,'Han Heiti',monospace,monospace,sans-serif}code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS',Menlo,Consolas,Courier,'Zhuyin Heiti','Han Heiti',monospace,monospace,sans-serif}code:lang(zh-CN),code:lang(zh-Hans),kbd:lang(zh-CN),kbd:lang(zh-Hans),pre:lang(zh-CN),pre:lang(zh-Hans),samp:lang(zh-CN),samp:lang(zh-Hans){font-family:'Biaodian Pro Sans GB',Menlo,Consolas,Courier,'Han Heiti GB',monospace,monospace,sans-serif}code:lang(ja),kbd:lang(ja),pre:lang(ja),samp:lang(ja){font-family:'Yakumono Sans',Menlo,Consolas,Courier,monospace,monospace,sans-serif}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7],hruby ru[annotation]:before,hruby ru[zhuyin] zhuyin,hruby ru[zhuyin] zhuyin diao,hruby.romanization rt,html,ruby ru[annotation]:before,ruby ru[zhuyin] zhuyin,ruby ru[zhuyin] zhuyin diao,ruby.romanization rt{-moz-font-feature-settings:'liga';-ms-font-feature-settings:'liga';-webkit-font-feature-settings:'liga';font-feature-settings:'liga'}i,var{font-style:inherit}hruby ru[zhuyin] zhuyin diao,ruby ru[zhuyin] zhuyin diao{font-family:'Zhuyin Kaiti',cursive,serif}hruby ru[annotation]:before,hruby.romanization rt,ruby ru[annotation]:before,ruby.romanization rt{font-family:'Romanization Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}.no-kaiti i,.no-kaiti var{padding-bottom:.05em;border-bottom:3px double lightgrey}article{line-height:1.7}article li,article p{text-align:justify;text-justify:inter-ideograph}article h1+blockquote,article h1+h2,article h1+h3,article h1+h4,article h1+h5,article h1+h6,article h1+ol,article h1+p,article h1+section>blockquote:first-child,article h1+section>h2:first-child,article h1+section>h3:first-child,article h1+section>h4:first-child,article h1+section>h5:first-child,article h1+section>h6:first-child,article h1+section>ol:first-child,article h1+section>p:first-child,article h1+section>ul:first-child,article h1+ul,article h2+blockquote,article h2+h2,article h2+h3,article h2+h4,article h2+h5,article h2+h6,article h2+ol,article h2+p,article h2+section>blockquote:first-child,article h2+section>h2:first-child,article h2+section>h3:first-child,article h2+section>h4:first-child,article h2+section>h5:first-child,article h2+section>h6:first-child,article h2+section>ol:first-child,article h2+section>p:first-child,article h2+section>ul:first-child,article h2+ul,article h3+blockquote,article h3+h3,article h3+h4,article h3+h5,article h3+h6,article h3+ol,article h3+p,article h3+section>blockquote:first-child,article h3+section>h3:first-child,article h3+section>h4:first-child,article h3+section>h5:first-child,article h3+section>h6:first-child,article h3+section>ol:first-child,article h3+section>p:first-child,article h3+section>ul:first-child,article h3+ul,article h4+blockquote,article h4+h4,article h4+h5,article h4+h6,article h4+ol,article h4+p,article h4+section>blockquote:first-child,article h4+section>h4:first-child,article h4+section>h5:first-child,article h4+section>h6:first-child,article h4+section>ol:first-child,article h4+section>p:first-child,article h4+section>ul:first-child,article h4+ul,article h5+blockquote,article h5+h5,article h5+h6,article h5+ol,article h5+p,article h5+section>blockquote:first-child,article h5+section>h5:first-child,article h5+section>h6:first-child,article h5+section>ol:first-child,article h5+section>p:first-child,article h5+section>ul:first-child,article h5+ul,article h6+blockquote,article h6+h6,article h6+ol,article h6+p,article h6+section>blockquote:first-child,article h6+section>h6:first-child,article h6+section>ol:first-child,article h6+section>p:first-child,article h6+section>ul:first-child,article h6+ul{margin-top:-1em}.poem-like p,p.poem-like{margin-left:2em}@media only screen and (max-width:480px){.poem-like p,p.poem-like{margin-left:1em}}article blockquote{margin-right:0}@media only screen and (max-width:480px){article blockquote{margin-left:1em}}figure blockquote{margin:0}blockquote blockquote{margin-left:1em;margin-right:1em}article blockquote blockquote{margin-right:0}@media only screen and (max-width:480px){blockquote,figure{margin-left:1em;margin-right:1em}}article{counter-reset:han-article-h2 han-article-h3 han-article-h4}article h2:not(.toc){counter-reset:han-article-h3 han-article-h4}article h2:not(.toc):before{content:counter(han-article-h2) '\3000';content:counter(han-article-h2,cjk-ideographic) '\3001';counter-increment:han-article-h2}article h3:not(.toc){counter-reset:han-article-h4}article h3:not(.toc):before{content:counter(han-article-h2) '.' counter(han-article-h3) '\3000';counter-increment:han-article-h3}article h4:not(.toc):before{content:counter(han-article-h2) '.' counter(han-article-h3) '.' counter(han-article-h4) '\3000';counter-increment:han-article-h4}article ol.toc{counter-reset:han-toc-h2 han-toc-h3 han-toc-h4}article ol.toc li{list-style:none}article ol.toc>li{counter-reset:han-toc-h3 han-toc-h4}article ol.toc>li:before{content:counter(han-toc-h2) '\3000';content:counter(han-toc-h2,cjk-ideographic) '\3001';counter-increment:han-toc-h2}article ol.toc>li>ol>li{counter-reset:han-toc-h4}article ol.toc>li>ol>li:before{margin-right:.5em;content:counter(han-toc-h2) '.' counter(han-toc-h3);counter-increment:han-toc-h3}article ol.toc ol ol>li:before{margin-right:.5em;content:counter(han-toc-h2) '.' counter(han-toc-h3) '.' counter(han-toc-h4);counter-increment:han-toc-h4}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7]{font-family:'Biaodian Basic','Han Heiti'}hws{display:inline;visibility:hidden;font-family:Arial,sans-serif!important;font-size:.89em}code hws,kbd hws,ol>hws,pre hws,samp hws,table>hws,tbody>hws,tfoot>hws,thead>hws,tr>hws,ul>hws{display:none}char_group .close:not(:last-child),char_group .open:not(:last-child),char_group [unicode='3001']:not(:last-child),char_group [unicode='3002']:not(:last-child),char_group [unicode=ff08]:not(:last-child),char_group [unicode=ff0c]:not(:last-child){letter-spacing:-.5em}char_group [unicode='3001']:lang(zh-Hant):not(:last-child),char_group [unicode='3002']:lang(zh-Hant):not(:last-child),char_group [unicode=ff08]:lang(zh-Hant):not(:last-child),char_group [unicode=ff0c]:lang(zh-Hant):not(:last-child){letter-spacing:inherit}char_group [unicode='3001']:lang(zh-Hant)+.open,char_group [unicode='3002']:lang(zh-Hant)+.open,char_group [unicode='30fb']+[unicode='300c'],char_group [unicode='30fb']+[unicode='300e'],char_group [unicode=b7]+[unicode='300c'],char_group [unicode=b7]+[unicode='300e'],char_group [unicode=ff08]:lang(zh-Hant)+.open,char_group [unicode=ff0c]:lang(zh-Hant)+.open{margin-left:-.5em}char_group .liga+[unicode='300c'],char_group .liga+[unicode='300e']{margin-left:-.25em}char[display-as]{position:relative;display:inline-block}char[display-as] inner{color:transparent}char[display-as]:after{position:absolute;left:0;display:inline-block;content:attr(display-as)}char[display-as].comb-liga:after{font-family:'Romanization Sans','Zhuyin Kaiti'} \ No newline at end of file diff --git a/v3.1.0/counter-han.sass b/v3.1.0/counter-han.sass new file mode 100644 index 00000000..e866793a --- /dev/null +++ b/v3.1.0/counter-han.sass @@ -0,0 +1,12 @@ + +// ** +// * Sectional counter in articles +// * `true` || `false` +// * +$han-section-counter: true; +$han-section-counter-toc: true; + +// ** +// * Import Han module +// * +@import ../sass/han; diff --git a/v3.1.0/counter-han.scss b/v3.1.0/counter-han.scss new file mode 100644 index 00000000..ce414f33 --- /dev/null +++ b/v3.1.0/counter-han.scss @@ -0,0 +1,12 @@ + +// ** +// * Sectional counter in articles +// * `true` || `false` +// * +$han-section-counter: true; +$han-section-counter-toc: true; + +// ** +// * Import Han module +// * +@import "../src/sass/han"; diff --git a/v3.1.0/counter.html b/v3.1.0/counter.html new file mode 100644 index 00000000..455b9018 --- /dev/null +++ b/v3.1.0/counter.html @@ -0,0 +1,17 @@ +測試・章節與目錄的計數 — 漢字標準格式

      測試·章節與目錄的計數

      提示:「章節計數」是「漢字標準格式」的高級排版功能,預設關閉。需要自行編譯han.sass模組或混用han-section-counter(@mixin)方可使用,閱讀使用手冊以瞭解詳情。CDN文件支援此功能。

      提示二:此測試頁使用了《日文排版規範》(Requirements for Japanese Text Layout)中,1至3.3節的「中譯標題」作為示例。

      日文排版規範

      目錄

      注意:類別為.toctable of contents,目錄)的「二至四級標題」不會併入章節計數中。

      1. 序論
        1. 此文件的目的
        2. 此文件的產生方式
        3. 此文件的基本方針
        4. 此文件的構成
        5. 術語的參照與其他
      2. 日文排版的基本組成
        1. 日文排版對文字與其設置原則
          1. 日文排版所用的文字
          2. 漢字、平假名與片假名
          3. 漢字、假名字元的編排原則
        2. 日文文檔的頁面格式
          1. 頁面格式規範
          2. 頁面格式基本樣版
          3. 頁面格式元素
          4. 基本版面元素
          5. 基本版面與頁面格式實例
        3. 直書與橫書
          1. 日文排版的方向因素
          2. 直書與橫書的主要差異
        4. 基本版面的設置
          1. 基本版面的設置步驟
          2. 基本版面設計的着重要點
        5. 基本版面元素的頁面安排
          1. 可突出基本版面的項目範例
          2. 基本版面設計對行的位置的處理
          3. 基本版面設計對字元的位置的處理
        6. 眉批與頁數
          1. 眉批與頁數的位置
          2. 眉批與頁數的排版原則
          3. 眉批與頁數的排版方式
      3. 行的組成
        1. 標點符號與禁則
          1. 直書與橫書的標點符號排版差異
          2. 標點符號的排版(句讀與括號)
          3. 讀號、片假名中點排版的例外情況
          4. 連續開閉括號、讀號、句號與片假名中點的排版
          5. 開括號位行首時的排版
          6. 分離標點(問號與嘆號)和連字符的排版
          7. 不得位於行首的標點
          8. 不得位於行尾的標點
          9. 閉括號、句號、讀號與片假名中點位行尾時的排版
          10. 不得分行的字元組合
          11. 不得加入空白來調整行間對齊的字元組合
          12. 行間對齊的範例
        2. 日文與西文混排(包含縱中橫排版)
          1. 日文與西文混排的組成
          2. 橫書的文字混排
          3. 直書的文字混排
          4. 全形拉丁字母與歐式數字的設置方式
          5. 縱中橫的處理設置
          6. 日文與非等寬西文字體文字的處理方式
        3. 行間注與着重號
          1. 行間注的使用
          2. 基文的選用
          3. 行間注的文字大小
          4. 注文側的選用
          5. 單字基文的排版
          6. 組合基文的排版
          7. 詞基文的排版
          8. 注文長度大於基文的調整方式
          9. 着重號的排版

      序論

      此文件的目的

      五級標題

      一、五、六級標題不計數。

      五級標題
      六級標題

      此文件的產生方式

      此文件的基本方針

      此文件的構成

      術語的參照與其他

      日文排版的基本組成

      日文排版對文字與其設置原則

      日文排版所用的文字

      漢字、平假名與片假名

      漢字、假名字元的編排原則

      日文文檔的頁面格式

      頁面格式規範

      頁面格式基本樣版

      頁面格式元素

      基本版面元素

      基本版面與頁面格式實例

      直書與橫書

      日文排版的方向因素

      直書與橫書的主要差異

      基本版面的設置

      基本版面的設置步驟

      基本版面設計的着重要點

      基本版面元素的頁面安排

      可突出基本版面的項目範例

      基本版面設計對行的位置的處理

      基本版面設計對字元的位置的處理

      眉批與頁數

      眉批與頁數的位置

      眉批與頁數的排版原則

      眉批與頁數的排版方式

      行的組成

      標點符號與禁則

      直書與橫書的標點符號排版差異

      標點符號的排版(句讀與括號)

      讀號、片假名中點排版的例外情況

      連續開閉括號、讀號、句號與片假名中點的排版

      開括號位行首時的排版

      分離標點(問號與嘆號)和連字符的排版

      不得位於行首的標點

      不得位於行尾的標點

      閉括號、句號、讀號與片假名中點位行尾時的排版

      不得分行的字元組合

      不得加入空白來調整行間對齊的字元組合

      行間對齊的範例

      日文與西文混排(包含縱中橫排版)

      日文與西文混排的組成

      橫書的文字混排

      直書的文字混排

      全形拉丁字母與歐式數字的設置方式

      縱中橫的處理設置

      日文與非等寬西文字體文字的處理方式

      行間注與着重號

      行間注的使用

      基文的選用

      行間注的文字大小

      注文側的選用

      單字基文的排版

      組合基文的排版

      詞基文的排版

      注文長度大於基文的調整方式

      着重號的排版

      \ No newline at end of file diff --git a/v3.1.0/counter.jade b/v3.1.0/counter.jade new file mode 100644 index 00000000..24c3b5a0 --- /dev/null +++ b/v3.1.0/counter.jade @@ -0,0 +1,193 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='utf-8') + title 測試・章節與目錄的計數 — 漢字標準格式 + link(rel='stylesheet', href='./counter-han.css') + + style. + html { + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + + body.test + + article + h1 測試·章節與目錄的計數 + p.noti + strong 提示: + | 「章節計數」是「漢字標準格式」的高級排版功能,預設關閉。需要自行編譯han.sass模組或混用han-section-counter(@mixin)方可使用,閱讀使用手冊以瞭解詳情。CDN文件支援此功能。 + p.noti + strong 提示二: + | 此測試頁使用了《日文排版規範》(Requirements for Japanese Text Layout)中,1至3.3節的「中譯標題」作為示例。 + + h1 日文排版規範 + h2.toc 目錄 + p + strong 注意: + | 類別為.toctable of contents,目錄)的「二至四級標題」不會併入章節計數中。 + ol.toc + li: a(href='#chapter1') 序論 + ol + li: a(href='#chapter1-1') 此文件的目的 + li: a(href='#chapter1-2') 此文件的產生方式 + li: a(href='#chapter1-3') 此文件的基本方針 + li: a(href='#chapter1-4') 此文件的構成 + li: a(href='#chapter1-5') 術語的參照與其他 + li: a(href='#chapter2') 日文排版的基本組成 + ol + li: a(href='#chapter2-1') 日文排版對文字與其設置原則 + ol + li: a(href='#chapter2-1-1') 日文排版所用的文字 + li: a(href='#chapter2-1-2') 漢字、平假名與片假名 + li: a(href='#chapter2-1-3') 漢字、假名字元的編排原則 + li: a(href='#chapter2-2') 日文文檔的頁面格式 + ol + li: a(href='#chapter2-2-1') 頁面格式規範 + li: a(href='#chapter2-2-2') 頁面格式基本樣版 + li: a(href='#chapter2-2-3') 頁面格式元素 + li: a(href='#chapter2-2-4') 基本版面元素 + li: a(href='#chapter2-2-5') 基本版面與頁面格式實例 + li: a(href='#chapter2-3') 直書與橫書 + ol + li: a(href='#chapter2-3-1') 日文排版的方向因素 + li: a(href='#chapter2-3-2') 直書與橫書的主要差異 + li: a(href='#chapter2-4') 基本版面的設置 + ol + li: a(href='#chapter2-4-1') 基本版面的設置步驟 + li: a(href='#chapter2-4-2') 基本版面設計的着重要點 + li: a(href='#chapter2-5') 基本版面元素的頁面安排 + ol + li: a(href='#chapter2-5-1') 可突出基本版面的項目範例 + li: a(href='#chapter2-5-2') 基本版面設計對行的位置的處理 + li: a(href='#chapter2-5-3') 基本版面設計對字元的位置的處理 + li: a(href='#chapter2-6') 眉批與頁數 + ol + li: a(href='#chapter2-6-1') 眉批與頁數的位置 + li: a(href='#chapter2-6-2') 眉批與頁數的排版原則 + li: a(href='#chapter2-6-3') 眉批與頁數的排版方式 + li: a(href='#chapter3') 行的組成 + ol + li: a(href='#chapter3-1') 標點符號與禁則 + ol + li: a(href='#chapter3-1-1') 直書與橫書的標點符號排版差異 + li: a(href='#chapter3-1-2') 標點符號的排版(句讀與括號) + li: a(href='#chapter3-1-3') 讀號、片假名中點排版的例外情況 + li: a(href='#chapter3-1-4') 連續開閉括號、讀號、句號與片假名中點的排版 + li: a(href='#chapter3-1-5') 開括號位行首時的排版 + li: a(href='#chapter3-1-6') 分離標點(問號與嘆號)和連字符的排版 + li: a(href='#chapter3-1-7') 不得位於行首的標點 + li: a(href='#chapter3-1-8') 不得位於行尾的標點 + li: a(href='#chapter3-1-9') 閉括號、句號、讀號與片假名中點位行尾時的排版 + li: a(href='#chapter3-1-10') 不得分行的字元組合 + li: a(href='#chapter3-1-11') 不得加入空白來調整行間對齊的字元組合 + li: a(href='#chapter3-1-12') 行間對齊的範例 + li: a(href='#chapter3-2') 日文與西文混排(包含縱中橫排版) + ol + li: a(href='#chapter3-2-1') 日文與西文混排的組成 + li: a(href='#chapter3-2-2') 橫書的文字混排 + li: a(href='#chapter3-2-3') 直書的文字混排 + li: a(href='#chapter3-2-4') 全形拉丁字母與歐式數字的設置方式 + li: a(href='#chapter3-2-5') 縱中橫的處理設置 + li: a(href='#chapter3-2-6') 日文與非等寬西文字體文字的處理方式 + li: a(href='#chapter3-3') 行間注與着重號 + ol + li: a(href='#chapter3-3-1') 行間注的使用 + li: a(href='#chapter3-3-2') 基文的選用 + li: a(href='#chapter3-3-3') 行間注的文字大小 + li: a(href='#chapter3-3-4') 注文側的選用 + li: a(href='#chapter3-3-5') 單字基文的排版 + li: a(href='#chapter3-3-6') 組合基文的排版 + li: a(href='#chapter3-3-7') 詞基文的排版 + li: a(href='#chapter3-3-8') 注文長度大於基文的調整方式 + li: a(href='#chapter3-3-9') 着重號的排版 + main + h2#chapter1 序論 + h3#chapter1-1 此文件的目的 + h5#h5 五級標題 + p 一、五、六級標題不計數。 + h5#h5-1 五級標題 + h6#h6 六級標題 + h3#chapter1-2 此文件的產生方式 + h3#chapter1-3 此文件的基本方針 + h3#chapter1-4 此文件的構成 + h3#chapter1-5 術語的參照與其他 + + h2#chapter2 日文排版的基本組成 + h3#chapter2-1 日文排版對文字與其設置原則 + h4#chapter2-1-1 日文排版所用的文字 + h4#chapter2-1-2 漢字、平假名與片假名 + h4#chapter2-1-3 漢字、假名字元的編排原則 + h3#chapter2-2 日文文檔的頁面格式 + h4#chapter2-2-1 頁面格式規範 + h4#chapter2-2-2 頁面格式基本樣版 + h4#chapter2-2-3 頁面格式元素 + h4#chapter2-2-4 基本版面元素 + h4#chapter2-2-5 基本版面與頁面格式實例 + h3#chapter2-3 直書與橫書 + h4#chapter2-3-1 日文排版的方向因素 + h4#chapter2-3-2 直書與橫書的主要差異 + h3#chapter2-4 基本版面的設置 + h4#chapter2-4-1 基本版面的設置步驟 + h4#chapter2-4-2 基本版面設計的着重要點 + h3#chapter2-5 基本版面元素的頁面安排 + h4#chapter2-5-1 可突出基本版面的項目範例 + h4#chapter2-5-2 基本版面設計對行的位置的處理 + h4#chapter2-5-3 基本版面設計對字元的位置的處理 + h3#chapter2-6 眉批與頁數 + h4#chapter2-6-1 眉批與頁數的位置 + h4#chapter2-6-2 眉批與頁數的排版原則 + h4#chapter2-6-3 眉批與頁數的排版方式 + + h2#chapter3 行的組成 + h3#chapter3-1 標點符號與禁則 + h4#chapter3-1-1 直書與橫書的標點符號排版差異 + h4#chapter3-1-2 標點符號的排版(句讀與括號) + h4#chapter3-1-3 讀號、片假名中點排版的例外情況 + h4#chapter3-1-4 連續開閉括號、讀號、句號與片假名中點的排版 + h4#chapter3-1-5 開括號位行首時的排版 + h4#chapter3-1-6 分離標點(問號與嘆號)和連字符的排版 + h4#chapter3-1-7 不得位於行首的標點 + h4#chapter3-1-8 不得位於行尾的標點 + h4#chapter3-1-9 閉括號、句號、讀號與片假名中點位行尾時的排版 + h4#chapter3-1-10 不得分行的字元組合 + h4#chapter3-1-11 不得加入空白來調整行間對齊的字元組合 + h4#chapter3-1-12 行間對齊的範例 + h3#chapter3-2 日文與西文混排(包含縱中橫排版) + h4#chapter3-2-1 日文與西文混排的組成 + h4#chapter3-2-2 橫書的文字混排 + h4#chapter3-2-3 直書的文字混排 + h4#chapter3-2-4 全形拉丁字母與歐式數字的設置方式 + h4#chapter3-2-5 縱中橫的處理設置 + h4#chapter3-2-6 日文與非等寬西文字體文字的處理方式 + h3#chapter3-3 行間注與着重號 + h4#chapter3-3-1 行間注的使用 + h4#chapter3-3-2 基文的選用 + h4#chapter3-3-3 行間注的文字大小 + h4#chapter3-3-4 注文側的選用 + h4#chapter3-3-5 單字基文的排版 + h4#chapter3-3-6 組合基文的排版 + h4#chapter3-3-7 詞基文的排版 + h4#chapter3-3-8 注文長度大於基文的調整方式 + h4#chapter3-3-9 着重號的排版 + + + // Here goes scripts + script(src='./han.min.js') diff --git a/v3.1.0/deco-line.html b/v3.1.0/deco-line.html new file mode 100644 index 00000000..576d8b12 --- /dev/null +++ b/v3.1.0/deco-line.html @@ -0,0 +1,23 @@ +測試・文字裝飾線元素 — 漢字標準格式

      測試·文字裝飾線元素

      底線

      註記元素u

      詹姆斯·貝內特·麥克里美國肯塔基州的一名律師和政治家,曾是該州在聯邦國會兩院的代表並擔任第27和第37任州長。

      增訂元素ins

      那個男孩:「¡Te quiero!

      刪除線

      訛訊元素s

      呼叫器(pager,又作B.B.Call)是當今世代最有效的交流、溝通設備之一。

      刪訂元素del

      歡迎——抄寫、列印或傳送這分文件到行動裝置以便査閱。

      混用

      註記元素甲增訂元素甲註記元素乙一般文字節點增訂元素乙註記元素丙增訂元素丙一般文字節點;訛訊元素甲刪訂元素甲訛訊元素乙一般文字節點刪訂元素乙訛訊元素乙刪訂元素丙

      註記元素丁訛訊元素丁增訂元素丁刪訂元素丁

      \ No newline at end of file diff --git a/v3.1.0/deco-line.jade b/v3.1.0/deco-line.jade new file mode 100644 index 00000000..39e378a7 --- /dev/null +++ b/v3.1.0/deco-line.jade @@ -0,0 +1,71 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='utf-8') + title 測試・文字裝飾線元素 — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + + style. + html { + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + + body.test + + article + h1 測試·文字裝飾線元素 + section#dixian + h2 底線 + section#zhuji_yuansu + h3 註記元素u + p + u.pn 詹姆斯·貝內特·麥克里 + | 是美國肯塔基州的一名律師和政治家,曾是該州在聯邦國會兩院的代表並擔任第27和第37任州長。 + + section#zengding_yuansu + h3 增訂元素ins + p + | 那個男孩:「¡Te quiero!」 + + section#shanchuxian + h2 刪除線 + section#exun_yuansu + h3 訛訊元素s + p + | 呼叫器(pager,又作B.B.Call)是當今世代最有效的交流、溝通設備之一。 + section#shanding_yuansu + h3 刪訂元素del + p + | 歡迎——抄寫、列印或傳送這分文件到行動裝置以便査閱。 + section#hunyong + h2 混用 + p + | 註記元素甲增訂元素甲註記元素乙一般文字節點增訂元素乙註記元素丙增訂元素丙一般文字節點;訛訊元素甲刪訂元素甲訛訊元素乙一般文字節點刪訂元素乙訛訊元素乙刪訂元素丙。 + p + | 註記元素丁訛訊元素丁增訂元素丁刪訂元素丁。 + + // Here goes scripts + script(src='./han.min.js') diff --git a/v3.1.0/em-han.css b/v3.1.0/em-han.css new file mode 100644 index 00000000..4ad5cef2 --- /dev/null +++ b/v3.1.0/em-han.css @@ -0,0 +1 @@ +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{line-height:1.3;-webkit-font-smoothing:subpixel-antialiased}ol,ul{padding-left:2em}blockquote,figure{margin-left:2em;margin-right:2em}address{font-style:inherit}pre{white-space:pre;word-wrap:normal}a{text-decoration:inherit}em:lang(ja),em:lang(zh){-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;font-style:inherit;border-bottom:2px dotted;padding-bottom:.05em;border-bottom-width:-webkit-calc(0px);padding-bottom:-webkit-calc(0px)}em:lang(ja){-moz-text-emphasis:filled sesame;-webkit-text-emphasis:filled sesame;text-emphasis:filled sesame;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}b,dfn:lang(ja),dfn:lang(zh),strong{font-weight:bolder}cite:lang(ja),cite:lang(zh),dfn:lang(ja),dfn:lang(zh){font-style:inherit}q{quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(zh){quotes:'\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f'}q:lang(en),q:lang(zh-CN){quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(en-GB){quotes:'\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d'}q:before{content:open-quote}q:after{content:close-quote}q:lang(ja):after,q:lang(ja):before{content:none}code,kbd,pre,samp{font-family:monospace,monospace,sans-serif}i:lang(ja),i:lang(zh),var:lang(ja),var:lang(zh){font-style:inherit}.han-js-rendered del+del.adjacent,.han-js-rendered del+s.adjacent,.han-js-rendered ins.adjacent,.han-js-rendered s+del.adjacent,.han-js-rendered s+s.adjacent,.han-js-rendered u.adjacent,del+del,del+s,ins+ins,ins+u,s+del,s+s,u+ins,u+u{margin-left:.125em}ins,u{padding-bottom:.05em;border-bottom:1px solid;text-decoration:none}ruby :after,ruby :before{line-height:normal}ruby>rt:not(:empty):before{content:'\ff08'}ruby>rt:not(:empty):after{content:'\ff09'}ruby>rb+rtc:before{content:'\ff08'}ruby>rtc:after{content:'\ff0c'}ruby>rtc:last-of-type:after{content:'\ff09'}ruby>rt:after,ruby>rt:before{display:inline-block;overflow:hidden;vertical-align:middle;height:0;width:0}ruby>rt:not(:empty):after,ruby>rt:not(:empty):before{height:-moz-calc(1.3em);width:-moz-calc(1em)}.han-js-rendered del+del,.han-js-rendered del+s,.han-js-rendered ins+ins,.han-js-rendered ins+u,.han-js-rendered s+del,.han-js-rendered s+s,.han-js-rendered u+ins,.han-js-rendered u+u{margin-left:auto}.han-js-rendered em.above,.han-js-rendered em.no-skip char.biaodian,.han-js-rendered em.no-skip char.punct,.han-js-rendered em:lang(ja),.han-js-rendered em:lang(zh),em.no-skip .han-js-rendered char.biaodian,em.no-skip .han-js-rendered char.punct{padding-bottom:auto;border-bottom-width:0}.no-textemphasis em.above,.no-textemphasis em.no-skip char.biaodian,.no-textemphasis em.no-skip char.punct,.no-textemphasis em:lang(ja),.no-textemphasis em:lang(zh),em.no-skip .no-textemphasis char.biaodian,em.no-skip .no-textemphasis char.punct{line-height:2}.no-textemphasis em.above char,.no-textemphasis em.no-skip char.biaodian char,.no-textemphasis em.no-skip char.punct char,.no-textemphasis em:lang(ja) char,.no-textemphasis em:lang(zh) char,em.no-skip .no-textemphasis char.biaodian char,em.no-skip .no-textemphasis char.punct char{position:relative;font-style:inherit}.no-textemphasis em.above char:after,.no-textemphasis em.no-skip char.biaodian char:after,.no-textemphasis em.no-skip char.punct char:after,.no-textemphasis em:lang(ja) char:after,.no-textemphasis em:lang(zh) char:after,em.no-skip .no-textemphasis char.biaodian char:after,em.no-skip .no-textemphasis char.punct char:after{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;text-decoration:none;-moz-transform:scale(0.5);-ms-transform:scale(0.5);-webkit-transform:scale(0.5);transform:scale(0.5);position:absolute;left:50%;top:0;margin-left:-250%;overflow:hidden;display:inline-block;height:1em;width:500%;line-height:1;text-align:center;text-indent:0;font-family:Georgia,'Times New Roman',Arial,!important}em.above char.biaodian,em.above char.punct,em.no-skip char.biaodian char.biaodian,em.no-skip char.biaodian char.punct,em.no-skip char.punct char.biaodian,em.no-skip char.punct char.punct,em:lang(ja) char.biaodian,em:lang(ja) char.punct,em:lang(zh) char.biaodian,em:lang(zh) char.punct{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none}.no-textemphasis em.above char.biaodian:after,.no-textemphasis em.above char.punct:after,.no-textemphasis em.no-skip char.biaodian char.biaodian:after,.no-textemphasis em.no-skip char.biaodian char.punct:after,.no-textemphasis em.no-skip char.punct char.biaodian:after,.no-textemphasis em.no-skip char.punct char.punct:after,.no-textemphasis em:lang(ja) char.biaodian:after,.no-textemphasis em:lang(ja) char.punct:after,.no-textemphasis em:lang(zh) char.biaodian:after,.no-textemphasis em:lang(zh) char.punct:after,em.no-skip .no-textemphasis char.biaodian char.biaodian:after,em.no-skip .no-textemphasis char.biaodian char.punct:after,em.no-skip .no-textemphasis char.punct char.biaodian:after,em.no-skip .no-textemphasis char.punct char.punct:after{content:none!important}.no-textemphasis em:lang(zh) char:after{margin-top:1em;content:'\25cf'}.no-textemphasis em:lang(ja) char:after{margin-top:-.7em;content:'\fe45'}hruby{display:inline;line-height:2}hruby rp{display:none}hruby ru[annotation]>rt{display:inline-block;height:0;width:0;font:0/0 hidden-text}hruby ru{position:relative;display:inline-block;text-indent:0}hruby ru:before,hruby zhuyin{-moz-transform:scale(0.55);-ms-transform:scale(0.55);-webkit-transform:scale(0.55);transform:scale(0.55);-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;line-height:normal;text-decoration:none;text-indent:0;position:absolute;display:inline-block}hruby ru[annotation]{text-align:center}hruby ru[annotation]:before{left:-265%;vertical-align:top;height:1em;width:600%;content:attr(annotation);line-height:1;text-align:center;text-indent:0}hruby[rightangle] ru[annotation]:before{left:-250%}hruby ru[zhuyin]{display:inline-block;position:relative;width:1.8em;text-align:left}hruby ru[zhuyin] zhuyin{right:.2em;top:0;height:2.7em;width:.8em;line-height:.9;white-space:pre-wrap;word-break:break-all}hruby ru[zhuyin] diao{position:absolute;right:-.9em;top:0;display:inline-block;width:1em}hruby ru[zhuyin]:empty,hruby ru[zhuyin][length='0']{width:auto}hruby ru[zhuyin]:empty zhuyin,hruby ru[zhuyin][length='0'] zhuyin{display:none}hruby ru[zhuyin][length='1'] zhuyin{margin-top:.125em}hruby ru[zhuyin][length='1'] diao{margin-top:-.35em}hruby ru[zhuyin][length='2'] zhuyin{margin-top:-.175em}hruby ru[zhuyin][length='2'] diao{margin-top:.5em}hruby ru[zhuyin][length='3'] zhuyin{margin-top:-.45em}hruby ru[zhuyin][length='3'] diao{margin-top:1.3em}hruby ru[zhuyin][diao='˙'] diao{right:-.35em}hruby ru[zhuyin][diao='˙'][length='1'] diao{margin-top:-.5em}hruby ru[zhuyin][diao='˙'][length='2'] diao{margin-top:-.3em}hruby ru[zhuyin][diao='˙'][length='3'] diao{margin-top:-.25em}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1.2);-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2);margin-right:-.25em}hruby ru[zhuyin][diao='󳆴'] diao,hruby ru[zhuyin][diao='󳆵'] diao,hruby ru[zhuyin][diao='󳆶'] diao,hruby ru[zhuyin][diao='󳆷'] diao,hruby ru[zhuyin][diao^='ㆴ'] diao,hruby ru[zhuyin][diao^='ㆵ'] diao,hruby ru[zhuyin][diao^='ㆶ'] diao,hruby ru[zhuyin][diao^='ㆷ'] diao{top:20%;margin-right:-.3em}hruby ru[annotation]:before,hruby[rightangle] ru[annotation][order='1']:before{top:-.5em}hruby ru[order='1']:before,hruby[rightangle] ru[annotation][order='0']:before{bottom:-.4em;top:auto}hruby[rightangle] ru[annotation]:before{margin-left:-.4em}@media screen and (-webkit-min-device-pixel-ratio:1.5),(min-resolution:192dpi){hruby yin{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);display:inline-block}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}hruby ru[zhuyin][diao='˙'] diao{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);top:.125em}}jinze{display:inline-block;text-indent:0}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';font-weight:600;src:local('YuGothic Bold'),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';font-weight:600;src:local('YuGothic Bold'),local(YuGo-Bold),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti GB';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold);unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Heiti SC Medium'),local('Microsoft YaHei Bold'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold);unicode-range:U+270C}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSong),local('Lisong Pro'),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho')}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local(PMingLiU),local(SimSun)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro')}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti SC Bold'),local('STSongti TC Bold'),local(STSongti-SC-Bold),local(STSongti-TC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti GB';font-weight:600;src:local('STSongti SC Bold'),local(STSongti-SC-Bold)}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSongti),local('Lisong Pro'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+270C}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local('MS Mincho'),local(PMingLiU),local(SimSun);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+270C}@font-face{font-family:cursive;src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti';src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti CNS';src:local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti GB';src:local('Kaiti SC'),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti GB';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong CNS';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong GB';src:local(STFangsong),local(FangSong)}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Arial Unicode MS'),local('MS Gothic');unicode-range:U+2014}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho'),local('Microsoft Yahei');unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic');unicode-range:U+2026}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Lisong Pro'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU),local('MS Gothic');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(STSongti-TC-Regular),local('Lisong Pro'),local('Heiti TC'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSongti),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Basic';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:'Biaodian Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Latin Italic Serif';src:local('Georgia Italic'),local('Times New Roman Italic'),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Serif';font-weight:700;src:local('Georgia Bold Italic'),local('Times New Roman Bold Italic'),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:'Latin Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Sans';src:local(Skia),local('Neutraface 2 Text'),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Serif';src:local(Georgia),local('Hoefler Text'),local('Big Caslon')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Italic Serif';src:local('Georgia Italic'),local('Hoefler Text Italic'),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Sans';src:local('Helvetica Neue'),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Serif';src:local(Palatino),local('Palatino Linotype'),local('Times New Roman')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';src:local('Palatino Italic'),local('Palatino Italic Linotype'),local('Times New Roman Italic'),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';font-weight:700;src:local('Palatino Bold Italic'),local('Palatino Bold Italic Linotype'),local('Times New Roman Bold Italic'),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{font-family:'Numeral TF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Kaiti'}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Heiti';src:local('Hiragino Sans GB'),local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype')}@font-face{font-family:'Zhuyin Heiti';src:local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3127}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Zhuyin Heiti';unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Romanization Sans';unicode-range:U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}article strong :lang(ja-Latn),article strong :lang(zh-Latn),article strong :not(:lang(zh)):not(:lang(ja)),article strong:lang(ja-Latn),article strong:lang(zh-Latn),article strong:not(:lang(zh)):not(:lang(ja)),html :lang(ja-Latn),html :lang(zh-Latn),html :not(:lang(zh)):not(:lang(ja)),html:lang(ja-Latn),html:lang(zh-Latn),html:not(:lang(zh)):not(:lang(ja)){font-family:'Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}[lang*=Hant],[lang=zh-HK],[lang=zh-TW],[lang^=zh],article strong:lang(zh),article strong:lang(zh-Hant),html:lang(zh),html:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}[lang*=Hans],[lang=zh-CN],article strong:lang(zh-CN),article strong:lang(zh-Hans),html:lang(zh-CN),html:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}[lang^=ja],article strong:lang(ja),html:lang(ja){font-family:'Yakumono Sans','Helvetica Neue',Helvetica,Arial,sans-serif}article blockquote i :lang(ja-Latn),article blockquote i :lang(zh-Latn),article blockquote i :not(:lang(zh)):not(:lang(ja)),article blockquote i:lang(ja-Latn),article blockquote i:lang(zh-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote var :lang(ja-Latn),article blockquote var :lang(zh-Latn),article blockquote var :not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(ja-Latn),article blockquote var:lang(zh-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}article blockquote i:lang(zh-CN),article blockquote i:lang(zh-Hans),article blockquote var:lang(zh-CN),article blockquote var:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}article blockquote i:lang(ja),article blockquote var:lang(ja){font-family:'Yakumono Sans','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,sans-serif}article figure blockquote :lang(ja-Latn),article figure blockquote :lang(zh-Latn),article figure blockquote :not(:lang(zh)):not(:lang(ja)),article figure blockquote:lang(ja-Latn),article figure blockquote:lang(zh-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)),figure blockquote :lang(ja-Latn),figure blockquote :lang(zh-Latn),figure blockquote :not(:lang(zh)):not(:lang(ja)),figure blockquote:lang(ja-Latn),figure blockquote:lang(zh-Latn),figure blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Songti',cursive,serif}article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant),figure blockquote:lang(zh),figure blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Songti',serif}article figure blockquote:lang(zh-CN),article figure blockquote:lang(zh-Hans),figure blockquote:lang(zh-CN),figure blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Songti GB',serif}article figure blockquote:lang(ja),figure blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',serif}article blockquote :lang(ja-Latn),article blockquote :lang(zh-Latn),article blockquote :not(:lang(zh)):not(:lang(ja)),article blockquote:lang(ja-Latn),article blockquote:lang(zh-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Kaiti',cursive,serif}article blockquote:lang(zh),article blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}article blockquote:lang(zh-CN),article blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}article blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',cursive,serif}i :lang(ja-Latn),i :lang(zh-Latn),i :not(:lang(zh)):not(:lang(ja)),i:lang(ja-Latn),i:lang(zh-Latn),i:not(:lang(zh)):not(:lang(ja)),var :lang(ja-Latn),var :lang(zh-Latn),var :not(:lang(zh)):not(:lang(ja)),var:lang(ja-Latn),var:lang(zh-Latn),var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti',cursive,serif}i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}i:lang(zh-CN),i:lang(zh-Hans),var:lang(zh-CN),var:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}i:lang(ja),var:lang(ja){font-family:'Yakumono Serif','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman',cursive,serif}code :lang(ja-Latn),code :lang(zh-Latn),code :not(:lang(zh)):not(:lang(ja)),code:lang(ja-Latn),code:lang(zh-Latn),code:not(:lang(zh)):not(:lang(ja)),kbd :lang(ja-Latn),kbd :lang(zh-Latn),kbd :not(:lang(zh)):not(:lang(ja)),kbd:lang(ja-Latn),kbd:lang(zh-Latn),kbd:not(:lang(zh)):not(:lang(ja)),pre :lang(ja-Latn),pre :lang(zh-Latn),pre :not(:lang(zh)):not(:lang(ja)),pre:lang(ja-Latn),pre:lang(zh-Latn),pre:not(:lang(zh)):not(:lang(ja)),samp :lang(ja-Latn),samp :lang(zh-Latn),samp :not(:lang(zh)):not(:lang(ja)),samp:lang(ja-Latn),samp:lang(zh-Latn),samp:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,'Han Heiti',monospace,monospace,sans-serif}code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS',Menlo,Consolas,Courier,'Zhuyin Heiti','Han Heiti',monospace,monospace,sans-serif}code:lang(zh-CN),code:lang(zh-Hans),kbd:lang(zh-CN),kbd:lang(zh-Hans),pre:lang(zh-CN),pre:lang(zh-Hans),samp:lang(zh-CN),samp:lang(zh-Hans){font-family:'Biaodian Pro Sans GB',Menlo,Consolas,Courier,'Han Heiti GB',monospace,monospace,sans-serif}code:lang(ja),kbd:lang(ja),pre:lang(ja),samp:lang(ja){font-family:'Yakumono Sans',Menlo,Consolas,Courier,monospace,monospace,sans-serif}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7],hruby ru[annotation]:before,hruby ru[zhuyin] zhuyin,hruby ru[zhuyin] zhuyin diao,hruby.romanization rt,html,ruby ru[annotation]:before,ruby ru[zhuyin] zhuyin,ruby ru[zhuyin] zhuyin diao,ruby.romanization rt{-moz-font-feature-settings:'liga';-ms-font-feature-settings:'liga';-webkit-font-feature-settings:'liga';font-feature-settings:'liga'}i,var{font-style:inherit}hruby ru[zhuyin] zhuyin diao,ruby ru[zhuyin] zhuyin diao{font-family:'Zhuyin Kaiti',cursive,serif}hruby ru[annotation]:before,hruby.romanization rt,ruby ru[annotation]:before,ruby.romanization rt{font-family:'Romanization Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}.no-kaiti i,.no-kaiti var{padding-bottom:.05em;border-bottom:3px double lightgrey}article{line-height:1.7}article li,article p{text-align:justify;text-justify:inter-ideograph}article h1+blockquote,article h1+h2,article h1+h3,article h1+h4,article h1+h5,article h1+h6,article h1+ol,article h1+p,article h1+section>blockquote:first-child,article h1+section>h2:first-child,article h1+section>h3:first-child,article h1+section>h4:first-child,article h1+section>h5:first-child,article h1+section>h6:first-child,article h1+section>ol:first-child,article h1+section>p:first-child,article h1+section>ul:first-child,article h1+ul,article h2+blockquote,article h2+h2,article h2+h3,article h2+h4,article h2+h5,article h2+h6,article h2+ol,article h2+p,article h2+section>blockquote:first-child,article h2+section>h2:first-child,article h2+section>h3:first-child,article h2+section>h4:first-child,article h2+section>h5:first-child,article h2+section>h6:first-child,article h2+section>ol:first-child,article h2+section>p:first-child,article h2+section>ul:first-child,article h2+ul,article h3+blockquote,article h3+h3,article h3+h4,article h3+h5,article h3+h6,article h3+ol,article h3+p,article h3+section>blockquote:first-child,article h3+section>h3:first-child,article h3+section>h4:first-child,article h3+section>h5:first-child,article h3+section>h6:first-child,article h3+section>ol:first-child,article h3+section>p:first-child,article h3+section>ul:first-child,article h3+ul,article h4+blockquote,article h4+h4,article h4+h5,article h4+h6,article h4+ol,article h4+p,article h4+section>blockquote:first-child,article h4+section>h4:first-child,article h4+section>h5:first-child,article h4+section>h6:first-child,article h4+section>ol:first-child,article h4+section>p:first-child,article h4+section>ul:first-child,article h4+ul,article h5+blockquote,article h5+h5,article h5+h6,article h5+ol,article h5+p,article h5+section>blockquote:first-child,article h5+section>h5:first-child,article h5+section>h6:first-child,article h5+section>ol:first-child,article h5+section>p:first-child,article h5+section>ul:first-child,article h5+ul,article h6+blockquote,article h6+h6,article h6+ol,article h6+p,article h6+section>blockquote:first-child,article h6+section>h6:first-child,article h6+section>ol:first-child,article h6+section>p:first-child,article h6+section>ul:first-child,article h6+ul{margin-top:-1em}.poem-like p,p.poem-like{margin-left:2em}@media only screen and (max-width:480px){.poem-like p,p.poem-like{margin-left:1em}}article blockquote{margin-right:0}@media only screen and (max-width:480px){article blockquote{margin-left:1em}}figure blockquote{margin:0}blockquote blockquote{margin-left:1em;margin-right:1em}article blockquote blockquote{margin-right:0}@media only screen and (max-width:480px){blockquote,figure{margin-left:1em;margin-right:1em}}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7]{font-family:'Biaodian Basic','Han Heiti'}hws{display:inline;visibility:hidden;font-family:Arial,sans-serif!important;font-size:.89em}code hws,kbd hws,ol>hws,pre hws,samp hws,table>hws,tbody>hws,tfoot>hws,thead>hws,tr>hws,ul>hws{display:none}char_group .close:not(:last-child),char_group .open:not(:last-child),char_group [unicode='3001']:not(:last-child),char_group [unicode='3002']:not(:last-child),char_group [unicode=ff08]:not(:last-child),char_group [unicode=ff0c]:not(:last-child){letter-spacing:-.5em}char_group [unicode='3001']:lang(zh-Hant):not(:last-child),char_group [unicode='3002']:lang(zh-Hant):not(:last-child),char_group [unicode=ff08]:lang(zh-Hant):not(:last-child),char_group [unicode=ff0c]:lang(zh-Hant):not(:last-child){letter-spacing:inherit}char_group [unicode='3001']:lang(zh-Hant)+.open,char_group [unicode='3002']:lang(zh-Hant)+.open,char_group [unicode='30fb']+[unicode='300c'],char_group [unicode='30fb']+[unicode='300e'],char_group [unicode=b7]+[unicode='300c'],char_group [unicode=b7]+[unicode='300e'],char_group [unicode=ff08]:lang(zh-Hant)+.open,char_group [unicode=ff0c]:lang(zh-Hant)+.open{margin-left:-.5em}char_group .liga+[unicode='300c'],char_group .liga+[unicode='300e']{margin-left:-.25em}char[display-as]{position:relative;display:inline-block}char[display-as] inner{color:transparent}char[display-as]:after{position:absolute;left:0;display:inline-block;content:attr(display-as)}char[display-as].comb-liga:after{font-family:'Romanization Sans','Zhuyin Kaiti'}em.above{-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}.no-textemphasis em.above char:after{margin-top:-.7em;content:'\25cf'}em.sesame{-moz-text-emphasis:open sesame;-webkit-text-emphasis:open sesame;text-emphasis:open sesame;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under}.no-textemphasis em.sesame char:after{margin-top:1em;content:'\fe46'}em.above-dc{-moz-text-emphasis:open double-circle;-webkit-text-emphasis:open double-circle;text-emphasis:open double-circle;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}.no-textemphasis em.above-dc char:after{margin-top:-.7em;content:'\25ce'}em.rebecca{-moz-text-emphasis:filled triangle;-webkit-text-emphasis:filled triangle;text-emphasis:filled triangle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;-moz-text-emphasis-color:#639;-webkit-text-emphasis-color:#639;text-emphasis-color:#639}.no-textemphasis em.rebecca char:after{margin-top:1em;content:'\25b2';color:#639}em.no-skip{-moz-text-emphasis:open circle;-webkit-text-emphasis:open circle;text-emphasis:open circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;-moz-text-emphasis-color:red;-webkit-text-emphasis-color:red;text-emphasis-color:red}.no-textemphasis em.no-skip char:after{margin-top:1em;content:'\25cb';color:red}em.no-skip char.biaodian,em.no-skip char.punct{-moz-text-emphasis:inherit;-webkit-text-emphasis:inherit;text-emphasis:inherit}.no-textemphasis em.no-skip char.biaodian char:after,.no-textemphasis em.no-skip char.punct char:after{content:inherit}.no-textemphasis em.no-skip char.biaodian:after,.no-textemphasis em.no-skip char.punct:after{content:'\25cb'!important} \ No newline at end of file diff --git a/v3.1.0/em-han.sass b/v3.1.0/em-han.sass new file mode 100644 index 00000000..a970c5c8 --- /dev/null +++ b/v3.1.0/em-han.sass @@ -0,0 +1,18 @@ +// ** +// * Import Han module +// * +@import ../sass/han + +// ** +// * Customise emphasis marks +// * +em.above + +han-text-emphasis( over ) +em.sesame + +han-text-emphasis( under, sesame, open, inherit, true, false ) +em.above-dc + +han-text-emphasis( over, double-circle, open, inherit, true, false ) +em.rebecca + +han-text-emphasis( under, triangle, filled, #639, true, false ) +em.no-skip + +han-text-emphasis( under, circle, open, red, false, false ) diff --git a/v3.1.0/em-han.scss b/v3.1.0/em-han.scss new file mode 100644 index 00000000..96afb8bc --- /dev/null +++ b/v3.1.0/em-han.scss @@ -0,0 +1,27 @@ +// ** +// * Import Han module +// * +@import "../src/sass/han"; + +// ** +// * Customise emphasis marks +// * +em.above { + @include han-text-emphasis(over); +} + +em.sesame { + @include han-text-emphasis(under, sesame, open, inherit, true, false); +} + +em.above-dc { + @include han-text-emphasis(over, double-circle, open, inherit, true, false); +} + +em.rebecca { + @include han-text-emphasis(under, triangle, filled, #663399, true, false); +} + +em.no-skip { + @include han-text-emphasis(under, circle, open, red, false, false); +} diff --git a/v3.1.0/em.html b/v3.1.0/em.html new file mode 100644 index 00000000..658c46db --- /dev/null +++ b/v3.1.0/em.html @@ -0,0 +1,18 @@ +測試・強調元素(着重號)— 漢字標準格式

      測試·強調元素(着重號)

      基本着重號

      繁體中文的着重號和簡體中文一樣。

      简体中文的着重号和繁体中文一样。

      日本語の著重奌独特の風味。

      完整中日韓表意文字區段支援

      注意:部分擴展區漢字可能不為多數作業系統支援,而顯示為空白方框。安裝花園明朝體可以解決這個問題。

      中日韓表意文字擴展區段:𫞵𫞦𠁻𠁶
      +表意數字零:
      +康熙字典及簡體字部首:⼌⿕⺃⻍⻰⻳
      +表意文字描述字元:⿸⿷⿳

      標點規避

      唐朝是中國歷史上一個重要的朝代。唐王李淵於618年逼隋恭帝禪位,遂建唐朝取代隋朝,設首都於長安。在其鼎盛時的7世紀,遙遠的中亞綠洲地帶亦受唐支配。唐朝在文化、政治、經濟、外交……等方面都達到了很高的成就,是中國歷史上的盛世之一,也是當時的世界強國。

      日語着重號的標點規避

      アンネリース・マリー・フランク(ドイツ語:Annelies Marie Frank、1929年6月12日-1945年3月上旬)は、『アンネの日記』の著者として知られるユダヤ系ドイツ人の少女である。

      西文

      拉丁字母

      我道,¡Hola! 他問,¿Cómo estás?

      德文中如何表達「羅曼式建築」這個概念?德國學者最初在teutschlongobardischromantische三詞間猶豫,最終在19世紀30年代偏向了「romantishce」一詞。

      希臘字母

      至今關於古希臘遊吟詩人Ὅμηρος的資料很少,所以對其生平有很多說法,但都無確鑿證據。

      西里爾字母

      Храм-паметник „Свети Александър Невски‟是一座位於保加利亞首都索菲亞的保加利亞東正教大教堂。該教堂為新拜占庭式建築,是保加利亞主教的主座教堂,也是東正教在世界上最大的教堂之一,還是索菲亞的象徵之一以及主要的遊覽景點。

      組合字(combining character

      對你吶喊一聲,у̐ë̈̈Α̫Ή̥!

      自成一體的西文強調

      I will have to tell you — +The cat is cute.

      我必須說——Η γάτα είναι χαριτωμένο.

      言う必要があります、Кошка мило.

      與其他字級語意元素共用

      行間注hángjiānzhùrubyㄒㄧ˫ㄢˋㄗㄨㆩˋ註記元素u變音元素i

      定制

      無論你想要把着重號放在上邊,或是想用空心「芝麻號」都沒有問題!抑或是這樣搞怪的圈圈,也可以用有紀念意義的顏色。

      不想「規避標點」也行。

      定制方式

      定制功能需要自行引用han.sass模塊(而無法直接使用CDN文件),並依需求設定變數等,詳見說明文件CSS Text Decoration Module Level 3

      \ No newline at end of file diff --git a/v3.1.0/em.jade b/v3.1.0/em.jade new file mode 100644 index 00000000..c2a5669b --- /dev/null +++ b/v3.1.0/em.jade @@ -0,0 +1,131 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='utf-8') + title 測試・強調元素(着重號)— 漢字標準格式 + link(rel='stylesheet', href='./em-han.css') + style. + html { + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + body.test + + article + h1 測試·強調元素(着重號) + section(id='jiben_zhuozhonghao') + h2 基本着重號 + p + em 繁體中文的着重號 + | 和簡體中文一樣。 + p(lang='zh-Hans') + em 简体中文的着重号 + | 和繁体中文一样。 + p(lang='ja') + em 日本語の著重奌 + | 独特の風味。 + section(id='wanzheng-cjk') + h2 完整中日韓表意文字區段支援 + p + strong 注意: + | 部分擴展區漢字可能不為多數作業系統支援,而顯示為空白方框。 + a(href='http://fonts.jp/hanazono/') 安裝花園明朝體 + | 可以解決這個問題。 + p + | 中日韓表意文字擴展區段:𫞵𫞦𠁻𠁶
      + | 表意數字零:
      + | 康熙字典及簡體字部首:⼌⿕⺃⻍⻰⻳
      + | 表意文字描述字元:⿸⿷⿳ + section(id='biaodian_guibi') + h2 標點規避 + p + | 唐朝是中國歷史上一個重要的朝代。唐王李淵於618年逼隋恭帝禪位,遂建唐朝取代隋朝,設首都於長安。在其鼎盛時的7世紀,遙遠的中亞綠洲地帶亦受唐支配。 + em 唐朝在文化、政治、經濟、外交……等方面都達到了很高的成就, + | 是中國歷史上的盛世之一,也是當時的世界強國。 + section(id='biaodian_guibi-riyu') + h3 日語着重號的標點規避 + p(lang='ja') + | アンネリース・マリー・フランク(ドイツ語: + span(lang='de') Annelies Marie Frank + | 、1929年6月12日-1945年3月上旬)は、 + em 『アンネの日記』の著者として知られるユダヤ系ドイツ人の少女である。 + section(id='xiwen') + h2 西文 + section(id='xiwen-latin') + h3 拉丁字母 + p: em 我道,¡Hola! 他問,¿Cómo estás? + p + | 德文中如何表達「羅曼式建築」這個概念?德國學者 + em 最初在teutschlongobardischromantische三詞間猶豫 + | ,最終在19世紀30年代偏向了「romantishce」一詞。 + section(id='xiwen-greek') + h3 希臘字母 + p + | 至今 + em 關於古希臘遊吟詩人Ὅμηρος的資料很少 + | ,所以對其生平有很多說法,但都無確鑿證據。 + section(id='xiwen-cyrillic') + h3 西里爾字母 + p + em Храм-паметник „Свети Александър Невски‟是一座位於保加利亞首都索菲亞的保加利亞東正教大教堂。 + | 該教堂為新拜占庭式建築,是保加利亞主教的主座教堂,也是東正教在世界上最大的教堂之一,還是索菲亞的象徵之一以及主要的遊覽景點。 + section(id='xiwen-zuhezi') + h3 組合字(combining character) + p + em 對你吶喊一聲,у̐ë̈̈Α̫Ή̥! + section(id='xiwen-zichengyiti') + h3 自成一體的西文強調 + p(lang='en') + | I will have to tell you — + | The cat is cute. + p + | 我必須說—— + em(lang='el') Η γάτα είναι χαριτωμένο. + p(lang='ja') + | 言う必要があります、 + em(lang='ru') Кошка мило. + section(id='yu_qita_zijiyuyi_yuansu_gongyong') + h2 與其他字級語意元素共用 + p: em + ruby.pinyin 行間注hángjiānzhù + | ruby + ruby.zhuyin(lang='zh-nan-Hant') 是ㄒㄧ˫ㄢˋㄗㄨㆩˋ + | ? + u 註記元素u + | 與 + i 變音元素i + | 。 + section(id='dingzhi') + h2 定制 + p + | 無論你想要把 + em.above 着重號放在上邊 + | ,或是想用 + em.sesame 空心「芝麻號」 + | 都沒有問題!抑或是 + em.above-dc 這樣搞怪的圈圈 + | ,也可以用 + em.rebecca 有紀念意義的顏色。 + p: em.no-skip 不想「規避標點」也行。 + section(id='dingzhi_fangshi') + h3 定制方式 + p + | 定制功能需要自行引用han.sass模塊(而無法直接使用CDN文件),並依需求設定變數等,詳見 + a(href='#') 說明文件 + | 及CSS Text Decoration Module Level 3。 + + // Here goes scripts + script(src='./han.min.js') diff --git a/v3.1.0/font/han.otf b/v3.1.0/font/han.otf new file mode 100644 index 00000000..2ce2f46c Binary files /dev/null and b/v3.1.0/font/han.otf differ diff --git a/v3.1.0/font/han.ttf b/v3.1.0/font/han.ttf new file mode 100644 index 00000000..fd06182e Binary files /dev/null and b/v3.1.0/font/han.ttf differ diff --git a/v3.1.0/font/han.woff b/v3.1.0/font/han.woff new file mode 100644 index 00000000..011e06c7 Binary files /dev/null and b/v3.1.0/font/han.woff differ diff --git a/v3.1.0/four.html b/v3.1.0/four.html new file mode 100644 index 00000000..a633bad0 --- /dev/null +++ b/v3.1.0/four.html @@ -0,0 +1,80 @@ +測試・四大字體集 — 漢字標準格式

      測試·四大字體集

      黑體

      推薦

      提示:以美觀、品質完善、收字齊全、區分字重者為優先。

      揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

      繁體字

      提示:同上,惟回退順序稍有不同,舊字形→國字標準字形〔體〕→新字形。

      揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

      中國國標

      提示:完全符合中國國標字形。

      扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口!

      宋體

      推薦

      揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

      繁體字

      揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

      中國國標

      扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口!

      楷體

      推薦

      揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

      繁體字

      提示:楷體因屬於手寫字體,Han Kaiti CNS完全遵守台灣教育部的國字標準字形(體)。

      揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米線小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

      中國國標

      扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口!

      仿宋體

      提示:由於各主流作業系統皆未專為各地區變體提供「仿宋體」,以下三者為同一中國國標字體。

      推薦

      揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

      繁體字

      揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口!

      中國國標

      扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口!

      \ No newline at end of file diff --git a/v3.1.0/four.jade b/v3.1.0/four.jade new file mode 100644 index 00000000..edcec1b3 --- /dev/null +++ b/v3.1.0/four.jade @@ -0,0 +1,166 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='utf-8') + title 測試・四大字體集 — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + style. + html { + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + } + + #heiti-fantizi p:not(.noti) { + font-family: 'Biaodian Pro Sans CNS', 'Helvetica Neue', Arial, 'Han Heiti CNS', sans-serif; + } + + #heiti-zhongguo_guobiao p:not(.noti) { + font-family: 'Biaodian Pro Sans GB', 'Helvetica Neue', Arial, 'Han Heiti GB', sans-serif; + } + + #songti p { + font-family: 'Biaodian Pro Serif', 'Numeral LF Serif', Georgia, 'Times New Roman', 'Han Songti', serif; + } + + #songti-fantizi p { + font-family: 'Biaodian Pro Serif CNS', 'Numeral LF Serif', Georgia, 'Times New Roman', 'Han Songti CNS', serif; + } + + #songti-zhongguo_guobiao p { + font-family: 'Biaodian Pro Serif GB', 'Numeral LF Serif', Georgia, 'Times New Roman', 'Han Songti GB', serif; + } + + #kaiti p:not(.noti) { + font-family: 'Biaodian Pro Serif', 'Numeral LF Serif', Georgia, 'Times New Roman', 'Han Kaiti', cursive, serif; + } + + #kaiti-fantizi p:not(.noti) { + font-family: 'Biaodian Pro Serif CNS', 'Numeral LF Serif', Georgia, 'Times New Roman', 'Han Kaiti CNS', cursive, serif; + } + + #kaiti-zhongguo_guobiao p:not(.noti) { + font-family: 'Biaodian Pro Serif GB', 'Numeral LF Serif', Georgia, 'Times New Roman', 'Han Kaiti GB', cursive, serif; + } + + #fangsong p:not(.noti) { + font-family: 'Biaodian Pro Serif', 'Numeral LF Serif', Georgia, 'Times New Roman', 'Han Fangsong', cursive, serif; + } + + #fangsong-fantizi p { + font-family: 'Biaodian Pro Serif CNS', 'Numeral LF Serif', Georgia, 'Times New Roman', 'Han Fangsong CNS', cursive, serif; + } + + #fangsong-zhongguo_guobiao p { + font-family: 'Biaodian Pro Serif GB', 'Numeral LF Serif', Georgia, 'Times New Roman', 'Han Fangsong GB', cursive, serif; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + body.test + + article + h1 測試·四大字體集 + section#heiti + h2 黑體 + section#heiti-tuijian + h3 推薦 + p.noti + strong 提示: + | 以美觀、品質完善、收字齊全、區分字重者為優先。 + p + | 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! + section#heiti-fantizi + h3 繁體字 + p.noti + strong 提示: + | 同上,惟回退順序稍有不同,舊字形→國字標準字形〔體〕→新字形。 + p + | 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! + section#heiti-zhongguo_guobiao + h3 中國國標 + p.noti + strong 提示: + | 完全符合中國國標字形。 + p + | 扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口! + section#songti + h2 宋體 + section#songti-tuijian + h3 推薦 + p + | 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! + section#songti-fantizi + h3 繁體字 + p + | 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! + section#songti-zhongguo_guobiao + h3 中國國標 + p + | 扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口! + section#kaiti + h2 楷體 + section#kaiti-tuijian + h3 推薦 + p + | 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! + section#kaiti-fantizi + h3 繁體字 + p.noti + strong 提示: + | 楷體因屬於手寫字體,Han Kaiti CNS完全遵守台灣教育部的國字標準字形(體)。 + p + | 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米線小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! + section#kaiti-zhongguo_guobiao + h3 中國國標 + p + | 扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口! + section#fangsong + h2 仿宋體 + p.noti + strong 提示: + | 由於各主流作業系統皆未專為各地區變體提供「仿宋體」,以下三者為同一中國國標字體。 + section#fangsong-tuijian + h3 推薦 + p + | 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啓用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! + section#fangsong-fantizi + h3 繁體字 + p + | 揚名山公路一〇二號出口旁的體育館附近,有家頗有名氣的米綫小吃店,其建築是殖民地時代啟用至今的。這家的牛骨湯濃郁而不油膩,非常值得一吃再吃。網路上查到的評價都對它讚不絕口! + section#fangsong-zhongguo_guobiao + h3 中國國標 + p + | 扬名山公路一〇二号出口旁的体育馆附近,有家颇有名气的米线小吃店,其建筑是殖民地时代啟用至今的。这家的牛骨汤浓郁而不油腻,非常值得一吃再吃。网路上查到的评价都对它赞不绝口! + script(src='./han.min.js') diff --git a/v3.1.0/generics-han.css b/v3.1.0/generics-han.css new file mode 100644 index 00000000..4120c9e1 --- /dev/null +++ b/v3.1.0/generics-han.css @@ -0,0 +1 @@ +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{line-height:1.3;-webkit-font-smoothing:subpixel-antialiased}ol,ul{padding-left:2em}blockquote,figure{margin-left:2em;margin-right:2em}address{font-style:inherit}pre{white-space:pre;word-wrap:normal}a{text-decoration:inherit}em:lang(ja),em:lang(zh){-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;font-style:inherit;border-bottom:2px dotted;padding-bottom:.05em;border-bottom-width:-webkit-calc(0px);padding-bottom:-webkit-calc(0px)}em:lang(ja){-moz-text-emphasis:filled sesame;-webkit-text-emphasis:filled sesame;text-emphasis:filled sesame;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}b,dfn:lang(ja),dfn:lang(zh),strong{font-weight:bolder}cite:lang(ja),cite:lang(zh),dfn:lang(ja),dfn:lang(zh){font-style:inherit}q{quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(zh){quotes:'\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f'}q:lang(en),q:lang(zh-CN){quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(en-GB){quotes:'\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d'}q:before{content:open-quote}q:after{content:close-quote}q:lang(ja):after,q:lang(ja):before{content:none}code,kbd,pre,samp{font-family:monospace,monospace,sans-serif}i:lang(ja),i:lang(zh),var:lang(ja),var:lang(zh){font-style:inherit}.han-js-rendered del+del.adjacent,.han-js-rendered del+s.adjacent,.han-js-rendered ins.adjacent,.han-js-rendered s+del.adjacent,.han-js-rendered s+s.adjacent,.han-js-rendered u.adjacent,del+del,del+s,ins+ins,ins+u,s+del,s+s,u+ins,u+u{margin-left:.125em}ins,u{padding-bottom:.05em;border-bottom:1px solid;text-decoration:none}ruby :after,ruby :before{line-height:normal}ruby>rt:not(:empty):before{content:'\ff08'}ruby>rt:not(:empty):after{content:'\ff09'}ruby>rb+rtc:before{content:'\ff08'}ruby>rtc:after{content:'\ff0c'}ruby>rtc:last-of-type:after{content:'\ff09'}ruby>rt:after,ruby>rt:before{display:inline-block;overflow:hidden;vertical-align:middle;height:0;width:0}ruby>rt:not(:empty):after,ruby>rt:not(:empty):before{height:-moz-calc(1.3em);width:-moz-calc(1em)}.han-js-rendered del+del,.han-js-rendered del+s,.han-js-rendered ins+ins,.han-js-rendered ins+u,.han-js-rendered s+del,.han-js-rendered s+s,.han-js-rendered u+ins,.han-js-rendered u+u{margin-left:auto}.han-js-rendered em:lang(ja),.han-js-rendered em:lang(zh){padding-bottom:auto;border-bottom-width:0}.no-textemphasis em:lang(ja),.no-textemphasis em:lang(zh){line-height:2}.no-textemphasis em:lang(ja) char,.no-textemphasis em:lang(zh) char{position:relative;font-style:inherit}.no-textemphasis em:lang(ja) char:after,.no-textemphasis em:lang(zh) char:after{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;text-decoration:none;-moz-transform:scale(0.5);-ms-transform:scale(0.5);-webkit-transform:scale(0.5);transform:scale(0.5);position:absolute;left:50%;top:0;margin-left:-250%;overflow:hidden;display:inline-block;height:1em;width:500%;line-height:1;text-align:center;text-indent:0;font-family:Georgia,'Times New Roman',Arial,!important}em:lang(ja) char.biaodian,em:lang(ja) char.punct,em:lang(zh) char.biaodian,em:lang(zh) char.punct{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none}.no-textemphasis em:lang(ja) char.biaodian:after,.no-textemphasis em:lang(ja) char.punct:after,.no-textemphasis em:lang(zh) char.biaodian:after,.no-textemphasis em:lang(zh) char.punct:after{content:none!important}.no-textemphasis em:lang(zh) char:after{margin-top:1em;content:'\25cf'}.no-textemphasis em:lang(ja) char:after{margin-top:-.7em;content:'\fe45'}hruby{display:inline;line-height:2}hruby rp{display:none}hruby ru[annotation]>rt{display:inline-block;height:0;width:0;font:0/0 hidden-text}hruby ru{position:relative;display:inline-block;text-indent:0}hruby ru:before,hruby zhuyin{-moz-transform:scale(0.55);-ms-transform:scale(0.55);-webkit-transform:scale(0.55);transform:scale(0.55);-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;line-height:normal;text-decoration:none;text-indent:0;position:absolute;display:inline-block}hruby ru[annotation]{text-align:center}hruby ru[annotation]:before{left:-265%;vertical-align:top;height:1em;width:600%;content:attr(annotation);line-height:1;text-align:center;text-indent:0}hruby[rightangle] ru[annotation]:before{left:-250%}hruby ru[zhuyin]{display:inline-block;position:relative;width:1.8em;text-align:left}hruby ru[zhuyin] zhuyin{right:.2em;top:0;height:2.7em;width:.8em;line-height:.9;white-space:pre-wrap;word-break:break-all}hruby ru[zhuyin] diao{position:absolute;right:-.9em;top:0;display:inline-block;width:1em}hruby ru[zhuyin]:empty,hruby ru[zhuyin][length='0']{width:auto}hruby ru[zhuyin]:empty zhuyin,hruby ru[zhuyin][length='0'] zhuyin{display:none}hruby ru[zhuyin][length='1'] zhuyin{margin-top:.125em}hruby ru[zhuyin][length='1'] diao{margin-top:-.35em}hruby ru[zhuyin][length='2'] zhuyin{margin-top:-.175em}hruby ru[zhuyin][length='2'] diao{margin-top:.5em}hruby ru[zhuyin][length='3'] zhuyin{margin-top:-.45em}hruby ru[zhuyin][length='3'] diao{margin-top:1.3em}hruby ru[zhuyin][diao='˙'] diao{right:-.35em}hruby ru[zhuyin][diao='˙'][length='1'] diao{margin-top:-.5em}hruby ru[zhuyin][diao='˙'][length='2'] diao{margin-top:-.3em}hruby ru[zhuyin][diao='˙'][length='3'] diao{margin-top:-.25em}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1.2);-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2);margin-right:-.25em}hruby ru[zhuyin][diao='󳆴'] diao,hruby ru[zhuyin][diao='󳆵'] diao,hruby ru[zhuyin][diao='󳆶'] diao,hruby ru[zhuyin][diao='󳆷'] diao,hruby ru[zhuyin][diao^='ㆴ'] diao,hruby ru[zhuyin][diao^='ㆵ'] diao,hruby ru[zhuyin][diao^='ㆶ'] diao,hruby ru[zhuyin][diao^='ㆷ'] diao{top:20%;margin-right:-.3em}hruby ru[annotation]:before,hruby[rightangle] ru[annotation][order='1']:before{top:-.5em}hruby ru[order='1']:before,hruby[rightangle] ru[annotation][order='0']:before{bottom:-.4em;top:auto}hruby[rightangle] ru[annotation]:before{margin-left:-.4em}@media screen and (-webkit-min-device-pixel-ratio:1.5),(min-resolution:192dpi){hruby yin{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);display:inline-block}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}hruby ru[zhuyin][diao='˙'] diao{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);top:.125em}}jinze{display:inline-block;text-indent:0}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';font-weight:600;src:local('YuGothic Bold'),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';font-weight:600;src:local('YuGothic Bold'),local(YuGo-Bold),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti GB';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold);unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Heiti SC Medium'),local('Microsoft YaHei Bold'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold);unicode-range:U+270C}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSong),local('Lisong Pro'),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho')}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local(PMingLiU),local(SimSun)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro')}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti SC Bold'),local('STSongti TC Bold'),local(STSongti-SC-Bold),local(STSongti-TC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti GB';font-weight:600;src:local('STSongti SC Bold'),local(STSongti-SC-Bold)}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSongti),local('Lisong Pro'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+270C}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local('MS Mincho'),local(PMingLiU),local(SimSun);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+270C}@font-face{font-family:cursive;src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti';src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti CNS';src:local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti GB';src:local('Kaiti SC'),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti GB';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong CNS';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong GB';src:local(STFangsong),local(FangSong)}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Arial Unicode MS'),local('MS Gothic');unicode-range:U+2014}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho'),local('Microsoft Yahei');unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic');unicode-range:U+2026}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Lisong Pro'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU),local('MS Gothic');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(STSongti-TC-Regular),local('Lisong Pro'),local('Heiti TC'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSongti),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Basic';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:'Biaodian Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Latin Italic Serif';src:local('Georgia Italic'),local('Times New Roman Italic'),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Serif';font-weight:700;src:local('Georgia Bold Italic'),local('Times New Roman Bold Italic'),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:'Latin Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Sans';src:local(Skia),local('Neutraface 2 Text'),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Serif';src:local(Georgia),local('Hoefler Text'),local('Big Caslon')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Italic Serif';src:local('Georgia Italic'),local('Hoefler Text Italic'),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Sans';src:local('Helvetica Neue'),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Serif';src:local(Palatino),local('Palatino Linotype'),local('Times New Roman')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';src:local('Palatino Italic'),local('Palatino Italic Linotype'),local('Times New Roman Italic'),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';font-weight:700;src:local('Palatino Bold Italic'),local('Palatino Bold Italic Linotype'),local('Times New Roman Bold Italic'),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{font-family:'Numeral TF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Kaiti'}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Heiti';src:local('Hiragino Sans GB'),local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype')}@font-face{font-family:'Zhuyin Heiti';src:local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3127}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Zhuyin Heiti';unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Romanization Sans';unicode-range:U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}.sans :lang(ja-Latn),.sans :lang(zh-Latn),.sans :not(:lang(zh)):not(:lang(ja)),.sans:lang(ja-Latn),.sans:lang(zh-Latn),.sans:not(:lang(zh)):not(:lang(ja)),article strong :lang(ja-Latn),article strong :lang(zh-Latn),article strong :not(:lang(zh)):not(:lang(ja)),article strong:lang(ja-Latn),article strong:lang(zh-Latn),article strong:not(:lang(zh)):not(:lang(ja)),html :lang(ja-Latn),html :lang(zh-Latn),html :not(:lang(zh)):not(:lang(ja)),html:lang(ja-Latn),html:lang(zh-Latn),html:not(:lang(zh)):not(:lang(ja)){font-family:'Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}.sans:lang(zh),.sans:lang(zh-Hant),[lang*=Hant],[lang=zh-HK],[lang=zh-TW],[lang^=zh],article strong:lang(zh),article strong:lang(zh-Hant),html:lang(zh),html:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}.sans:lang(zh-CN),.sans:lang(zh-Hans),[lang*=Hans],[lang=zh-CN],article strong:lang(zh-CN),article strong:lang(zh-Hans),html:lang(zh-CN),html:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}.sans:lang(ja),[lang^=ja],article strong:lang(ja),html:lang(ja){font-family:'Yakumono Sans','Helvetica Neue',Helvetica,Arial,sans-serif}.sans-italic :lang(ja-Latn),.sans-italic :lang(zh-Latn),.sans-italic :not(:lang(zh)):not(:lang(ja)),.sans-italic:lang(ja-Latn),.sans-italic:lang(zh-Latn),.sans-italic:not(:lang(zh)):not(:lang(ja)),article blockquote i :lang(ja-Latn),article blockquote i :lang(zh-Latn),article blockquote i :not(:lang(zh)):not(:lang(ja)),article blockquote i:lang(ja-Latn),article blockquote i:lang(zh-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote var :lang(ja-Latn),article blockquote var :lang(zh-Latn),article blockquote var :not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(ja-Latn),article blockquote var:lang(zh-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}.sans-italic:lang(zh),.sans-italic:lang(zh-Hant),article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}.sans-italic:lang(zh-CN),.sans-italic:lang(zh-Hans),article blockquote i:lang(zh-CN),article blockquote i:lang(zh-Hans),article blockquote var:lang(zh-CN),article blockquote var:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}.sans-italic:lang(ja),article blockquote i:lang(ja),article blockquote var:lang(ja){font-family:'Yakumono Sans','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,sans-serif}.serif :lang(ja-Latn),.serif :lang(zh-Latn),.serif :not(:lang(zh)):not(:lang(ja)),.serif:lang(ja-Latn),.serif:lang(zh-Latn),.serif:not(:lang(zh)):not(:lang(ja)),article figure blockquote :lang(ja-Latn),article figure blockquote :lang(zh-Latn),article figure blockquote :not(:lang(zh)):not(:lang(ja)),article figure blockquote:lang(ja-Latn),article figure blockquote:lang(zh-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)),figure blockquote :lang(ja-Latn),figure blockquote :lang(zh-Latn),figure blockquote :not(:lang(zh)):not(:lang(ja)),figure blockquote:lang(ja-Latn),figure blockquote:lang(zh-Latn),figure blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Songti',cursive,serif}.serif:lang(zh),.serif:lang(zh-Hant),article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant),figure blockquote:lang(zh),figure blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Songti',serif}.serif:lang(zh-CN),.serif:lang(zh-Hans),article figure blockquote:lang(zh-CN),article figure blockquote:lang(zh-Hans),figure blockquote:lang(zh-CN),figure blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Songti GB',serif}.serif:lang(ja),article figure blockquote:lang(ja),figure blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',serif}.cursive :lang(ja-Latn),.cursive :lang(zh-Latn),.cursive :not(:lang(zh)):not(:lang(ja)),.cursive:lang(ja-Latn),.cursive:lang(zh-Latn),.cursive:not(:lang(zh)):not(:lang(ja)),article blockquote :lang(ja-Latn),article blockquote :lang(zh-Latn),article blockquote :not(:lang(zh)):not(:lang(ja)),article blockquote:lang(ja-Latn),article blockquote:lang(zh-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Kaiti',cursive,serif}.cursive:lang(zh),.cursive:lang(zh-Hant),article blockquote:lang(zh),article blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}.cursive:lang(zh-CN),.cursive:lang(zh-Hans),article blockquote:lang(zh-CN),article blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}.cursive:lang(ja),article blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',cursive,serif}.cursive-italic :lang(ja-Latn),.cursive-italic :lang(zh-Latn),.cursive-italic :not(:lang(zh)):not(:lang(ja)),.cursive-italic:lang(ja-Latn),.cursive-italic:lang(zh-Latn),.cursive-italic:not(:lang(zh)):not(:lang(ja)),i :lang(ja-Latn),i :lang(zh-Latn),i :not(:lang(zh)):not(:lang(ja)),i:lang(ja-Latn),i:lang(zh-Latn),i:not(:lang(zh)):not(:lang(ja)),var :lang(ja-Latn),var :lang(zh-Latn),var :not(:lang(zh)):not(:lang(ja)),var:lang(ja-Latn),var:lang(zh-Latn),var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti',cursive,serif}.cursive-italic:lang(zh),.cursive-italic:lang(zh-Hant),i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}.cursive-italic:lang(zh-CN),.cursive-italic:lang(zh-Hans),i:lang(zh-CN),i:lang(zh-Hans),var:lang(zh-CN),var:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}.cursive-italic:lang(ja),i:lang(ja),var:lang(ja){font-family:'Yakumono Serif','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman',cursive,serif}.mono :lang(ja-Latn),.mono :lang(zh-Latn),.mono :not(:lang(zh)):not(:lang(ja)),.mono:lang(ja-Latn),.mono:lang(zh-Latn),.mono:not(:lang(zh)):not(:lang(ja)),code :lang(ja-Latn),code :lang(zh-Latn),code :not(:lang(zh)):not(:lang(ja)),code:lang(ja-Latn),code:lang(zh-Latn),code:not(:lang(zh)):not(:lang(ja)),kbd :lang(ja-Latn),kbd :lang(zh-Latn),kbd :not(:lang(zh)):not(:lang(ja)),kbd:lang(ja-Latn),kbd:lang(zh-Latn),kbd:not(:lang(zh)):not(:lang(ja)),pre :lang(ja-Latn),pre :lang(zh-Latn),pre :not(:lang(zh)):not(:lang(ja)),pre:lang(ja-Latn),pre:lang(zh-Latn),pre:not(:lang(zh)):not(:lang(ja)),samp :lang(ja-Latn),samp :lang(zh-Latn),samp :not(:lang(zh)):not(:lang(ja)),samp:lang(ja-Latn),samp:lang(zh-Latn),samp:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,'Han Heiti',monospace,monospace,sans-serif}.mono:lang(zh),.mono:lang(zh-Hant),code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS',Menlo,Consolas,Courier,'Zhuyin Heiti','Han Heiti',monospace,monospace,sans-serif}.mono:lang(zh-CN),.mono:lang(zh-Hans),code:lang(zh-CN),code:lang(zh-Hans),kbd:lang(zh-CN),kbd:lang(zh-Hans),pre:lang(zh-CN),pre:lang(zh-Hans),samp:lang(zh-CN),samp:lang(zh-Hans){font-family:'Biaodian Pro Sans GB',Menlo,Consolas,Courier,'Han Heiti GB',monospace,monospace,sans-serif}.mono:lang(ja),code:lang(ja),kbd:lang(ja),pre:lang(ja),samp:lang(ja){font-family:'Yakumono Sans',Menlo,Consolas,Courier,monospace,monospace,sans-serif}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7],hruby ru[annotation]:before,hruby ru[zhuyin] zhuyin,hruby ru[zhuyin] zhuyin diao,hruby.romanization rt,html,ruby ru[annotation]:before,ruby ru[zhuyin] zhuyin,ruby ru[zhuyin] zhuyin diao,ruby.romanization rt{-moz-font-feature-settings:'liga';-ms-font-feature-settings:'liga';-webkit-font-feature-settings:'liga';font-feature-settings:'liga'}i,var{font-style:inherit}hruby ru[zhuyin] zhuyin diao,ruby ru[zhuyin] zhuyin diao{font-family:'Zhuyin Kaiti',cursive,serif}hruby ru[annotation]:before,hruby.romanization rt,ruby ru[annotation]:before,ruby.romanization rt{font-family:'Romanization Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}.no-kaiti i,.no-kaiti var{padding-bottom:.05em;border-bottom:3px double lightgrey}article{line-height:1.7}article li,article p{text-align:justify;text-justify:inter-ideograph}article h1+blockquote,article h1+h2,article h1+h3,article h1+h4,article h1+h5,article h1+h6,article h1+ol,article h1+p,article h1+section>blockquote:first-child,article h1+section>h2:first-child,article h1+section>h3:first-child,article h1+section>h4:first-child,article h1+section>h5:first-child,article h1+section>h6:first-child,article h1+section>ol:first-child,article h1+section>p:first-child,article h1+section>ul:first-child,article h1+ul,article h2+blockquote,article h2+h2,article h2+h3,article h2+h4,article h2+h5,article h2+h6,article h2+ol,article h2+p,article h2+section>blockquote:first-child,article h2+section>h2:first-child,article h2+section>h3:first-child,article h2+section>h4:first-child,article h2+section>h5:first-child,article h2+section>h6:first-child,article h2+section>ol:first-child,article h2+section>p:first-child,article h2+section>ul:first-child,article h2+ul,article h3+blockquote,article h3+h3,article h3+h4,article h3+h5,article h3+h6,article h3+ol,article h3+p,article h3+section>blockquote:first-child,article h3+section>h3:first-child,article h3+section>h4:first-child,article h3+section>h5:first-child,article h3+section>h6:first-child,article h3+section>ol:first-child,article h3+section>p:first-child,article h3+section>ul:first-child,article h3+ul,article h4+blockquote,article h4+h4,article h4+h5,article h4+h6,article h4+ol,article h4+p,article h4+section>blockquote:first-child,article h4+section>h4:first-child,article h4+section>h5:first-child,article h4+section>h6:first-child,article h4+section>ol:first-child,article h4+section>p:first-child,article h4+section>ul:first-child,article h4+ul,article h5+blockquote,article h5+h5,article h5+h6,article h5+ol,article h5+p,article h5+section>blockquote:first-child,article h5+section>h5:first-child,article h5+section>h6:first-child,article h5+section>ol:first-child,article h5+section>p:first-child,article h5+section>ul:first-child,article h5+ul,article h6+blockquote,article h6+h6,article h6+ol,article h6+p,article h6+section>blockquote:first-child,article h6+section>h6:first-child,article h6+section>ol:first-child,article h6+section>p:first-child,article h6+section>ul:first-child,article h6+ul{margin-top:-1em}.poem-like p,p.poem-like{margin-left:2em}@media only screen and (max-width:480px){.poem-like p,p.poem-like{margin-left:1em}}article blockquote{margin-right:0}@media only screen and (max-width:480px){article blockquote{margin-left:1em}}figure blockquote{margin:0}blockquote blockquote{margin-left:1em;margin-right:1em}article blockquote blockquote{margin-right:0}@media only screen and (max-width:480px){blockquote,figure{margin-left:1em;margin-right:1em}}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7]{font-family:'Biaodian Basic','Han Heiti'}hws{display:inline;visibility:hidden;font-family:Arial,sans-serif!important;font-size:.89em}code hws,kbd hws,ol>hws,pre hws,samp hws,table>hws,tbody>hws,tfoot>hws,thead>hws,tr>hws,ul>hws{display:none}char_group .close:not(:last-child),char_group .open:not(:last-child),char_group [unicode='3001']:not(:last-child),char_group [unicode='3002']:not(:last-child),char_group [unicode=ff08]:not(:last-child),char_group [unicode=ff0c]:not(:last-child){letter-spacing:-.5em}char_group [unicode='3001']:lang(zh-Hant):not(:last-child),char_group [unicode='3002']:lang(zh-Hant):not(:last-child),char_group [unicode=ff08]:lang(zh-Hant):not(:last-child),char_group [unicode=ff0c]:lang(zh-Hant):not(:last-child){letter-spacing:inherit}char_group [unicode='3001']:lang(zh-Hant)+.open,char_group [unicode='3002']:lang(zh-Hant)+.open,char_group [unicode='30fb']+[unicode='300c'],char_group [unicode='30fb']+[unicode='300e'],char_group [unicode=b7]+[unicode='300c'],char_group [unicode=b7]+[unicode='300e'],char_group [unicode=ff08]:lang(zh-Hant)+.open,char_group [unicode=ff0c]:lang(zh-Hant)+.open{margin-left:-.5em}char_group .liga+[unicode='300c'],char_group .liga+[unicode='300e']{margin-left:-.25em}char[display-as]{position:relative;display:inline-block}char[display-as] inner{color:transparent}char[display-as]:after{position:absolute;left:0;display:inline-block;content:attr(display-as)}char[display-as].comb-liga:after{font-family:'Romanization Sans','Zhuyin Kaiti'} \ No newline at end of file diff --git a/v3.1.0/generics-han.sass b/v3.1.0/generics-han.sass new file mode 100644 index 00000000..75ce5af8 --- /dev/null +++ b/v3.1.0/generics-han.sass @@ -0,0 +1,35 @@ + +// ** +// * Generic typefaces for Western (Latin-based) +// * characters +// * +$mre-sans: 'Helvetica Neue', Helvetica, Arial !default +$mre-serif: Georgia, 'Times New Roman' !default +$mre-cursive: 'Apple Chancery', 'Snell Roundhand' !default +$mre-mono: Menlo, Consolas, Courier !default + +// ** +// * Generic typefaces for Chinese +// * +$mre-sans-zh: '' !default +$mre-serif-zh: '' !default +$mre-cursive-zh: '' !default +$mre-mono-zh: $mre-sans-zh !default + +// ** +// * Import Han module +// * +@import ../sass/han + +.sans + +han-typeface-by-lang( sans ) +.sans-italic + +han-typeface-by-lang( sans-italic ) +.mono + +han-typeface-by-lang( mono ) +.serif + +han-typeface-by-lang( serif ) +.cursive + +han-typeface-by-lang( cursive ) +.cursive-italic + +han-typeface-by-lang( cursive-italic ) diff --git a/v3.1.0/generics-han.scss b/v3.1.0/generics-han.scss new file mode 100644 index 00000000..1a13099b --- /dev/null +++ b/v3.1.0/generics-han.scss @@ -0,0 +1,45 @@ +// ** +// * Generic typefaces for Western (Latin-based) +// * characters +// * +$mre-sans: "Helvetica Neue", Helvetica, Arial !default; +$mre-serif: Georgia, "Times New Roman" !default; +$mre-cursive: "Apple Chancery", "Snell Roundhand" !default; +$mre-mono: Menlo, Consolas, Courier !default; + +// ** +// * Generic typefaces for Chinese +// * +$mre-sans-zh: "" !default; +$mre-serif-zh: "" !default; +$mre-cursive-zh: "" !default; +$mre-mono-zh: $mre-sans-zh !default; + +// ** +// * Import Han module +// * +@import "../src/sass/han"; + +.sans { + @include han-typeface-by-lang(sans); +} + +.sans-italic { + @include han-typeface-by-lang(sans-italic); +} + +.mono { + @include han-typeface-by-lang(mono); +} + +.serif { + @include han-typeface-by-lang(serif); +} + +.cursive { + @include han-typeface-by-lang(cursive); +} + +.cursive-italic { + @include han-typeface-by-lang(cursive-italic); +} diff --git a/v3.1.0/generics.html b/v3.1.0/generics.html new file mode 100644 index 00000000..22cc5853 --- /dev/null +++ b/v3.1.0/generics.html @@ -0,0 +1,14 @@ +測試・字體基型(typeface generics)與@extend — 漢字標準格式

      測試·字體基型與@extend

      提示:「漢字標準格式」提供了四類字體基型、二個子基型共六種字體@extend在預設的語意元素修正外,更可經由Sass模組來擴展選擇器,避免字體的重覆宣告。

      提示二:本測試頁展示其他地區變體,詳見使用手冊

      無襯線字體、黑體

      LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

      西文無襯線意大利體、黑體

      LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

      等寬字體、黑體

      LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

      襯線字體、宋體

      LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

      手寫字體、楷體

      LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

      西文襯線意大利體、楷體

      LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。

      \ No newline at end of file diff --git a/v3.1.0/generics.jade b/v3.1.0/generics.jade new file mode 100644 index 00000000..b3516a60 --- /dev/null +++ b/v3.1.0/generics.jade @@ -0,0 +1,58 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='utf-8') + title 測試・字體基型(typeface generics)與@extend — 漢字標準格式 + link(rel='stylesheet', href='./generics-han.css') + style. + html { + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + body.test + + article + h1 測試·字體基型與@extend + p.noti + strong 提示: + | 「漢字標準格式」提供了四類字體基型、二個子基型共六種字體@extend在預設的語意元素修正外,更可經由Sass模組來擴展選擇器,避免字體的重覆宣告。 + p.noti + strong 提示二: + | 本測試頁展示其他地區變體,詳見使用手冊。 + section + h2 無襯線字體、黑體 + p.sans + | LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。 + h3 西文無襯線意大利體、黑體 + p.sans-italic + | LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。 + section + h2 等寬字體、黑體 + p.mono + | LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。 + section + h2 襯線字體、宋體 + p.serif + | LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。 + section + h2 手寫字體、楷體 + p.cursive + | LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。 + h3 西文襯線意大利體、楷體 + p.cursive-italic + | LGBT是女同性戀者(Lesbians)、男同性戀者(Gays)、雙性戀者(Bisexuals)與跨性別者(Transgender)的英文首字母縮略字。1990年代,由於「同性戀社群」一詞無法完整體現相關群體,「LGBT」一詞便應運而生、並逐漸普及。 + + script(src='./han.min.js') diff --git a/v3.1.0/han.css b/v3.1.0/han.css new file mode 100644 index 00000000..4fef6b91 --- /dev/null +++ b/v3.1.0/han.css @@ -0,0 +1,2288 @@ +@charset "UTF-8"; + +/*! 漢字標準格式 v3.1.0 | MIT License | css.hanzi.co */ +/*! Han.css: the CSS typography framework optimised for Hanzi */ + +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ +html { + font-family: sans-serif; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ +} + +/** + * Remove default margin. + */ +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ +audio, +canvas, +progress, +video { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ +/** + * Remove the gray background color from active links in IE 10. + */ +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ +h1 { + font-size: 2em; + margin: .67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -.5em; +} + +sub { + bottom: -.25em; +} + +/* Embedded content + ========================================================================== */ +/** + * Remove border when inside `a` element in IE 8/9/10. + */ +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ +/** + * Address margin not present in IE 8/9 and Safari. + */ +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ +button, +input, +optgroup, +select, +textarea { + color: inherit; + /* 1 */ + font: inherit; + /* 2 */ + margin: 0; + /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: .35em .625em .75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ +legend { + border: 0; + /* 1 */ + padding: 0; + /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ +/** + * Remove most spacing between table cells. + */ +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} + +/* Base + ------ */ +html { + line-height: 1.3; + -webkit-font-smoothing: subpixel-antialiased; +} + +/* Grouping content + ------------------ */ +/** + * Paragraphs, lists, figures and blockquotes + * (段落、清單、圖表、區塊引用) + */ +ol, +ul { + padding-left: 2em; +} + +figure, +blockquote { + margin-left: 2em; + margin-right: 2em; +} + +/** + * Contact information + * (聯絡資訊) + */ +address { + font-style: inherit; +} + +/** + * Preformatted text + * (格式預處理文字) + */ +pre { + white-space: pre; + word-wrap: normal; +} + +/* Text-level semantics & edits + ------------------------------ */ +/** + * Hyperlinks + * (超連結) + */ +a { + text-decoration: inherit; +} + +/** + * Emphases + * (強調) + */ +em:lang(zh), +em:lang(ja) { + -moz-text-emphasis: filled circle; + -webkit-text-emphasis: filled circle; + text-emphasis: filled circle; + -moz-text-emphasis-position: under; + -webkit-text-emphasis-position: under; + text-emphasis-position: under; + font-style: inherit; + border-bottom: 2px dotted; + padding-bottom: .05em; + border-bottom-width: -webkit-calc( 0px); + padding-bottom: -webkit-calc( 0px); +} + +em:lang(ja) { + -moz-text-emphasis: filled sesame; + -webkit-text-emphasis: filled sesame; + text-emphasis: filled sesame; + -moz-text-emphasis-position: over; + -webkit-text-emphasis-position: over; + text-emphasis-position: over; +} + +/** + * Importance, definitions and Keywords + * (重點、術語、關鍵字) + */ +strong, +dfn:lang(zh), +dfn:lang(ja), +b { + font-weight: inherit; +} + +strong, +dfn:lang(zh), +dfn:lang(ja), +b { + font-weight: bolder; +} + +dfn:lang(zh), +dfn:lang(ja) { + font-style: inherit; +} + +/** + * Cites and quotes + * (來源、引用) + */ +cite:lang(zh), +cite:lang(ja) { + font-style: inherit; +} + +q { + quotes: "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019"; +} +q:lang(zh) { + quotes: "\300c" "\300d" "\300e" "\300f" "\300c" "\300d" "\300e" "\300f" "\300c" "\300d" "\300e" "\300f"; +} +q:lang(zh-CN), +q:lang(en) { + quotes: "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019"; +} +q:lang(en-GB) { + quotes: "\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d"; +} +q:before { + content: open-quote; +} +q:after { + content: close-quote; +} +q:lang(ja):before, +q:lang(ja):after { + content: none; +} + +/** + * Code, user input, computer output and preformatted text + * (代碼、輸入鍵、計算機輸出示例、格式預處理文字) + */ +code, +kbd, +samp, +pre { + font-family: monospace, monospace, sans-serif; +} + +/** + * Alternative voices and variables + * (變音文字、變數) + */ +i:lang(zh), +i:lang(ja), +var:lang(zh), +var:lang(ja) { + font-family: cursive, serif; + font-style: inherit; +} + +/** + * Annotations, inaccurate text, insertion and deletion + * (註記、訛訊、增訂、刪訂) + */ +u + u, +u + ins, +ins + u, +ins + ins, +s + s, +s + del, +del + s, +del + del, +.han-js-rendered u.adjacent, +.han-js-rendered ins.adjacent, +.han-js-rendered s + s.adjacent, +.han-js-rendered s + del.adjacent, +.han-js-rendered del + s.adjacent, +.han-js-rendered del + del.adjacent { + margin-left: .125em; +} + +u, +ins { + padding-bottom: .05em; + border-bottom: 1px solid; + text-decoration: none; +} + +/** + * Ruby annotations + * (行間注) + */ +ruby *:before, +ruby *:after { + line-height: normal; +} +ruby > rt:not(:empty):before { + content: "\ff08"; +} +ruby > rt:not(:empty):after { + content: "\ff09"; +} +ruby > rb + rtc:before { + content: "\ff08"; +} +ruby > rtc:after { + content: "\ff0c"; +} +ruby > rtc:last-of-type:after { + content: "\ff09"; +} +ruby > rt:before, +ruby > rt:after { + display: inline-block; + overflow: hidden; + vertical-align: middle; + height: 0; + width: 0; +} +ruby > rt:not(:empty):before, +ruby > rt:not(:empty):after { + height: -moz-calc( 1.3em); + width: -moz-calc( 1em); +} + +.han-js-rendered u + u, +.han-js-rendered u + ins, +.han-js-rendered ins + u, +.han-js-rendered ins + ins, +.han-js-rendered s + s, +.han-js-rendered s + del, +.han-js-rendered del + s, +.han-js-rendered del + del { + margin-left: auto; +} + +.han-js-rendered em:lang(zh), +.han-js-rendered em:lang(ja) { + padding-bottom: auto; + border-bottom-width: 0; +} +.no-textemphasis em:lang(zh), +.no-textemphasis em:lang(ja) { + line-height: 2; +} +.no-textemphasis em:lang(zh) char, +.no-textemphasis em:lang(ja) char { + position: relative; + font-style: inherit; +} +.no-textemphasis em:lang(zh) char:after, +.no-textemphasis em:lang(ja) char:after { + -moz-text-emphasis: none; + -webkit-text-emphasis: none; + text-emphasis: none; + font-style: normal; + font-weight: normal; + line-height: normal; + text-decoration: none; + text-indent: 0; + -moz-transform: scale(.5); + -ms-transform: scale(.5); + -webkit-transform: scale(.5); + transform: scale(.5); + position: absolute; + left: 50%; + top: 0; + margin-left: -250%; + overflow: hidden; + display: inline-block; + height: 1em; + width: 500%; + line-height: 1; + text-align: center; + text-indent: 0; + font-family: Georgia, "Times New Roman", Arial, !important; +} + +em:lang(zh) char.punct, +em:lang(ja) char.punct, +em:lang(zh) char.biaodian, +em:lang(ja) char.biaodian { + -moz-text-emphasis: none; + -webkit-text-emphasis: none; + text-emphasis: none; +} +.no-textemphasis em:lang(zh) char.punct:after, +.no-textemphasis em:lang(ja) char.punct:after, +.no-textemphasis em:lang(zh) char.biaodian:after, +.no-textemphasis em:lang(ja) char.biaodian:after { + content: none !important; +} + +.no-textemphasis em:lang(zh) char:after { + margin-top: 1em; + content: "\25cf"; +} +.no-textemphasis em:lang(ja) char:after { + margin-top: -.7em; + content: "\fe45"; +} + +hruby { + display: inline; + line-height: 2; +} +hruby rp { + display: none; +} +hruby ru[annotation] > rt { + display: inline-block; + height: 0; + width: 0; + font: 0/0 hidden-text; +} +hruby ru { + position: relative; + display: inline-block; + text-indent: 0; +} +hruby ru:before, +hruby zhuyin { + -moz-transform: scale(.55); + -ms-transform: scale(.55); + -webkit-transform: scale(.55); + transform: scale(.55); + -moz-text-emphasis: none; + -webkit-text-emphasis: none; + text-emphasis: none; + font-style: normal; + font-weight: normal; + line-height: normal; + text-decoration: none; + text-indent: 0; + position: absolute; + display: inline-block; +} +hruby ru[annotation] { + text-align: center; +} +hruby ru[annotation]:before { + left: -265%; + top: -.5em; + vertical-align: top; + height: 1em; + width: 600%; + content: attr(annotation); + line-height: 1; + text-align: center; + text-indent: 0; +} +hruby[rightangle] ru[annotation]:before { + left: -250%; +} +hruby ru[zhuyin] { + display: inline-block; + position: relative; + width: 1.8em; + text-align: left; +} +hruby ru[zhuyin] zhuyin { + right: .2em; + top: 0; + height: 2.7em; + width: .8em; + line-height: .9; + white-space: pre-wrap; + word-break: break-all; +} +hruby ru[zhuyin] diao { + position: absolute; + right: -.9em; + top: 0; + display: inline-block; + width: 1em; +} +hruby ru[zhuyin][length="0"], +hruby ru[zhuyin]:empty { + width: auto; +} +hruby ru[zhuyin][length="0"] zhuyin, +hruby ru[zhuyin]:empty zhuyin { + display: none; +} +hruby ru[zhuyin][length="1"] zhuyin { + margin-top: .125em; +} +hruby ru[zhuyin][length="1"] diao { + margin-top: -.35em; +} +hruby ru[zhuyin][length="2"] zhuyin { + margin-top: -.175em; +} +hruby ru[zhuyin][length="2"] diao { + margin-top: .5em; +} +hruby ru[zhuyin][length="3"] zhuyin { + margin-top: -.45em; +} +hruby ru[zhuyin][length="3"] diao { + margin-top: 1.3em; +} +hruby ru[zhuyin][diao="˙"] diao { + right: -.35em; +} +hruby ru[zhuyin][diao="˙"][length="1"] diao { + margin-top: -.5em; +} +hruby ru[zhuyin][diao="˙"][length="2"] diao { + margin-top: -.3em; +} +hruby ru[zhuyin][diao="˙"][length="3"] diao { + margin-top: -.25em; +} +hruby ru[zhuyin][diao="˪"] diao, +hruby ru[zhuyin][diao="˫"] diao { + -moz-transform: scale(1.2); + -ms-transform: scale(1.2); + -webkit-transform: scale(1.2); + transform: scale(1.2); + margin-right: -.25em; +} +hruby ru[zhuyin][diao^="ㆴ"] diao, +hruby ru[zhuyin][diao^="ㆵ"] diao, +hruby ru[zhuyin][diao^="ㆶ"] diao, +hruby ru[zhuyin][diao^="ㆷ"] diao, +hruby ru[zhuyin][diao="󳆴"] diao, +hruby ru[zhuyin][diao="󳆵"] diao, +hruby ru[zhuyin][diao="󳆶"] diao, +hruby ru[zhuyin][diao="󳆷"] diao { + top: 20%; + margin-right: -.3em; +} +hruby ru[annotation]:before, +hruby[rightangle] ru[annotation][order="1"]:before { + top: -.5em; +} +hruby ru[order="1"]:before, +hruby[rightangle] ru[annotation][order="0"]:before { + bottom: -.4em; + top: auto; +} +hruby[rightangle] ru[annotation]:before { + margin-left: -.4em; +} +@media screen and (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 192dpi) { + hruby yin { + -moz-transform: scale(.8); + -ms-transform: scale(.8); + -webkit-transform: scale(.8); + transform: scale(.8); + display: inline-block; + } + + hruby ru[zhuyin][diao="˪"] diao, + hruby ru[zhuyin][diao="˫"] diao { + -moz-transform: scale(1); + -ms-transform: scale(1); + -webkit-transform: scale(1); + transform: scale(1); + } + + hruby ru[zhuyin][diao="˙"] diao { + -moz-transform: scale(.8); + -ms-transform: scale(.8); + -webkit-transform: scale(.8); + transform: scale(.8); + top: .125em; + } +} + +jinze { + display: inline-block; + text-indent: 0; +} + +/** + * The Four Typefaces: Heiti + * 四大字體集・黑體 + */ +@font-face { + font-family: "Han Heiti"; + src: local("Hiragino Sans GB"), local("Lantinghei TC"), local("Lantinghei SC"), local("Heiti SC"), local("Heiti TC"), local("Microsoft Yahei"), local("Microsoft Jhenghei"), local("Droid Sans Fallback"); +} + +@font-face { + unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; + font-family: "Han Heiti"; + src: local(YuGothic), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"); +} + +@font-face { + font-family: "Han Heiti CNS"; + src: local("Hiragino Sans GB"), local("Lantinghei TC"), local("Heiti TC"), local("Microsoft Jhenghei"), local("Heiti SC"), local("Lantinghei SC"), local("Microsoft Yahei"), local("Droid Sans Fallback"); +} + +@font-face { + unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; + font-family: "Han Heiti CNS"; + src: local(YuGothic), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"); +} + +@font-face { + font-family: "Han Heiti GB"; + src: local("Hiragino Sans GB"), local("Lantinghei SC"), local("Heiti SC"), local("Microsoft Yahei"), local("Droid Sans Fallback"); +} + +/* Bold + */ +@font-face { + font-family: "Han Heiti"; + font-weight: 600; + src: local("Hiragino Sans GB W6"), local(HiraginoSansGB-W6), local("Lantinghei TC Demibold"), local("Lantinghei SC Demibold"), local(FZLTXHB--B51-0), local(FZLTZHK--GBK1-0), local("Heiti SC Medium"), local("Heiti TC Medium"), local(STHeitiSC-Medium), local(STHeitiTC-Medium), local("Microsoft YaHei Bold"), local("Microsoft Jhenghei Bold"), local(MicrosoftYaHei-Bold), local(MicrosoftJhengHeiBold); +} + +@font-face { + unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; + font-family: "Han Heiti"; + font-weight: 600; + src: local("YuGothic Bold"), local("Hiragino Kaku Gothic ProN W6"), local("Hiragino Kaku Gothic Pro W6"), local(YuGo-Bold), local(HiraKakuProN-W6), local(HiraKakuPro-W6); +} + +@font-face { + font-family: "Han Heiti CNS"; + font-weight: 600; + src: local("Hiragino Sans GB W6"), local(HiraginoSansGB-W6), local("Lantinghei TC Demibold"), local("Heiti TC Medium"), local("Microsoft Jhenghei Bold"), local(FZLTXHB--B51-0), local(STHeitiTC-Medium), local(MicrosoftJhengHeiBold), local("Lantinghei SC Demibold"), local("Microsoft YaHei Bold"), local("Heiti SC Medium"), local(FZLTZHK--GBK1-0), local(STHeitiSC-Medium), local(MicrosoftYaHei-Bold); +} + +@font-face { + unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; + font-family: "Han Heiti CNS"; + font-weight: 600; + src: local("YuGothic Bold"), local(YuGo-Bold), local("Hiragino Kaku Gothic ProN W6"), local("Hiragino Kaku Gothic Pro W6"), local(HiraKakuProN-W6), local(HiraKakuPro-W6); +} + +@font-face { + font-family: "Han Heiti GB"; + font-weight: 600; + src: local("Hiragino Sans GB W6"), local(HiraginoSansGB-W6), local("Lantinghei SC Demibold"), local("Microsoft YaHei Bold"), local("Heiti SC Medium"), local(FZLTZHK--GBK1-0), local(STHeitiSC-Medium), local(MicrosoftYaHei-Bold); +} + +/* Address solution to `unicode-range` unsupported + * issues in Firefox + */ +@font-face { + font-family: "Han Heiti"; + src: local("Hiragino Sans GB"), local("Lantinghei TC"), local("Lantinghei SC"), local("Heiti SC"), local("Heiti TC"), local("Microsoft Yahei"), local("Microsoft Jhenghei"), local("Droid Sans Fallback"); + unicode-range: U+270C; +} + +@font-face { + font-family: "Han Heiti"; + font-weight: 600; + src: local("Hiragino Sans GB W6"), local(HiraginoSansGB-W6), local("Lantinghei TC Demibold"), local("Lantinghei SC Demibold"), local(FZLTXHB--B51-0), local(FZLTZHK--GBK1-0), local("Heiti SC Medium"), local("Heiti TC Medium"), local(STHeitiSC-Medium), local(STHeitiTC-Medium), local("Microsoft YaHei Bold"), local("Microsoft Jhenghei Bold"), local(MicrosoftYaHei-Bold), local(MicrosoftJhengHeiBold); + unicode-range: U+270C; +} + +@font-face { + font-family: "Han Heiti CNS"; + src: local("Hiragino Sans GB"), local("Lantinghei TC"), local("Heiti TC"), local("Microsoft Jhenghei"), local("Heiti SC"), local("Lantinghei SC"), local("Microsoft Yahei"), local("Droid Sans Fallback"); + unicode-range: U+270C; +} + +@font-face { + font-family: "Han Heiti CNS"; + font-weight: 600; + src: local("Hiragino Sans GB W6"), local(HiraginoSansGB-W6), local("Lantinghei TC Demibold"), local("Heiti TC Medium"), local("Microsoft Jhenghei Bold"), local(FZLTXHB--B51-0), local(STHeitiTC-Medium), local(MicrosoftJhengHeiBold), local("Lantinghei SC Demibold"), local("Heiti SC Medium"), local("Microsoft YaHei Bold"), local(FZLTZHK--GBK1-0), local(STHeitiSC-Medium), local(MicrosoftYaHei-Bold); + unicode-range: U+270C; +} + +@font-face { + font-family: "Han Heiti GB"; + src: local("Hiragino Sans GB"), local("Lantinghei SC"), local("Heiti SC"), local("Microsoft Yahei"), local("Droid Sans Fallback"); + unicode-range: U+270C; +} + +/** + * The Four Typefaces: Songti (serif) + * 四大字體集・宋體 + */ +@font-face { + font-family: "Han Songti"; + src: local("Songti SC"), local("Songti TC"), local(STSong), local("Lisong Pro"), local(SimSun), local(PMingLiU); +} + +@font-face { + unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; + font-family: "Han Songti"; + src: local(YuMincho), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("MS Mincho"); +} + +@font-face { + font-family: "Han Songti CNS"; + src: local("Songti TC"), local("Lisong Pro"), local("Songti SC"), local(STSong), local(PMingLiU), local(SimSun); +} + +@font-face { + unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; + font-family: "Han Songti CNS"; + src: local(YuMincho), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"); +} + +@font-face { + font-family: "Han Songti GB"; + src: local("Songti SC"), local(STSong), local(SimSun), local(PMingLiU); +} + +/* Bold + */ +@font-face { + font-family: "Han Songti"; + font-weight: 600; + src: local("STSongti SC Bold"), local("STSongti TC Bold"), local(STSongti-SC-Bold), local(STSongti-TC-Bold); +} + +@font-face { + unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; + font-family: "Han Songti"; + font-weight: 600; + src: local("YuMincho Demibold"), local("Hiragino Mincho ProN W6"), local("Hiragino Mincho Pro W6"), local(YuMin-Demibold), local(HiraMinProN-W6), local(HiraMinPro-W6); +} + +@font-face { + font-family: "Han Songti CNS"; + font-weight: 600; + src: local("STSongti TC Bold"), local("STSongti SC Bold"), local(STSongti-TC-Bold), local(STSongti-SC-Bold); +} + +@font-face { + unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; + font-family: "Han Songti CNS"; + font-weight: 600; + src: local("YuMincho Demibold"), local("Hiragino Mincho ProN W6"), local("Hiragino Mincho Pro W6"), local(YuMin-Demibold), local(HiraMinProN-W6), local(HiraMinPro-W6); +} + +@font-face { + font-family: "Han Songti GB"; + font-weight: 600; + src: local("STSongti SC Bold"), local(STSongti-SC-Bold); +} + +/* Address solution to `unicode-range` unsupported + * issues in Firefox. + */ +@font-face { + font-family: "Han Songti"; + src: local("Songti SC"), local("Songti TC"), local(STSongti), local("Lisong Pro"), local("MS Mincho"), local(SimSun), local(PMingLiU); + unicode-range: U+270C; +} + +@font-face { + font-family: "Han Songti"; + font-weight: 600; + src: local("STSongti TC Bold"), local("STSongti SC Bold"), local(STSongti-TC-Bold), local(STSongti-SC-Bold); + unicode-range: U+270C; +} + +@font-face { + font-family: "Han Songti CNS"; + src: local("Songti TC"), local("Lisong Pro"), local("Songti SC"), local(STSong), local("MS Mincho"), local(PMingLiU), local(SimSun); + unicode-range: U+270C; +} + +@font-face { + font-family: "Han Songti CNS"; + font-weight: 600; + src: local("STSongti TC Bold"), local("STSongti SC Bold"), local(STSongti-TC-Bold), local(STSongti-SC-Bold); + unicode-range: U+270C; +} + +@font-face { + font-family: "Han Songti GB"; + src: local("Songti SC"), local(STSong), local(SimSun); + unicode-range: U+270C; +} + +/** + * The Four Typefaces: Kaiti (Cursive) + * 四大字體集・楷體 + */ +@font-face { + font-family: cursive; + src: local("Kaiti SC"), local(STKaiti), local(BiauKai), local("標楷體"), local(DFKaiShu-SB-Estd-BF), local(Kaiti), local(DFKai-SB); +} + +@font-face { + unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; + font-family: "Han Kaiti"; + src: local("Kaiti SC"), local(STKaiti), local(BiauKai), local("標楷體"), local(DFKaiShu-SB-Estd-BF), local(Kaiti), local(DFKai-SB); +} + +@font-face { + unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; + font-family: "Han Kaiti CNS"; + src: local(BiauKai), local("標楷體"), local(DFKaiShu-SB-Estd-BF); +} + +@font-face { + unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; + font-family: "Han Kaiti GB"; + src: local("Kaiti SC"), local(STKaiti), local(Kai), local(Kaiti), local(DFKai-SB); +} + +/* Bold + */ +@font-face { + font-family: cursive; + font-weight: 600; + src: local("Kaiti SC Bold"), local(STKaiti-SC-Bold); +} + +@font-face { + font-family: "Han Kaiti"; + font-weight: 600; + src: local("Kaiti SC Bold"), local(STKaiti-SC-Bold); +} + +@font-face { + font-family: "Han Kaiti GB"; + font-weight: 600; + src: local("Kaiti SC Bold"), local(STKaiti-SC-Bold); +} + +/** + * The Four Typefaces: Fangsong + * 四大字體集・仿宋體 + */ +@font-face { + unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; + font-family: "Han Fangsong"; + src: local(STFangsong), local(FangSong); +} + +@font-face { + unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; + font-family: "Han Fangsong CNS"; + src: local(STFangsong), local(FangSong); +} + +@font-face { + unicode-range: U+4E00-9FFF, U+3400-4DB5, U+20000-2A6D6, U+2A700-2B734, U+2B740-2B81D, U+FA0E-FA0F, U+FA11, U+FA13-FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27-FA29, U+3040-309F, U+30A0-30FF, U+3099-309E, U+FF66-FF9F, U+3007, U+31C0-31E3, U+2F00-2FD5, U+2E80-2EF3; + font-family: "Han Fangsong GB"; + src: local(STFangsong), local(FangSong); +} + +/** + * Basic correction to CJK punctuation + * ‘Biaodian’(zh) and ‘Yakumono’(ja) + */ +/* Fullwidth full stop (.) */ +@font-face { + font-family: "Biaodian Sans"; + src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local("MS Gothic"), local(SimSun); + unicode-range: U+FF0E; +} + +@font-face { + font-family: "Biaodian Serif"; + src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local(SimSun); + unicode-range: U+FF0E; +} + +@font-face { + font-family: "Biaodian Pro Sans"; + src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local("MS Gothic"), local(SimSun); + unicode-range: U+FF0E; +} + +@font-face { + font-family: "Biaodian Pro Serif"; + src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local(SimSun); + unicode-range: U+FF0E; +} + +@font-face { + font-family: "Biaodian Pro Sans CNS"; + src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local("MS Gothic"), local(SimSun); + unicode-range: U+FF0E; +} + +@font-face { + font-family: "Biaodian Pro Serif CNS"; + src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local(SimSun); + unicode-range: U+FF0E; +} + +@font-face { + font-family: "Biaodian Pro Sans GB"; + src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local("MS Gothic"), local(SimSun); + unicode-range: U+FF0E; +} + +@font-face { + font-family: "Biaodian Pro Serif GB"; + src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local(SimSun); + unicode-range: U+FF0E; +} + +/* Middle dot (·) */ +@font-face { + font-family: "Biaodian Sans"; + src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local(SimSun); + unicode-range: U+00B7; +} + +@font-face { + font-family: "Biaodian Serif"; + src: local("Songti SC"), local(STSong), local("Heiti SC"), local(SimSun); + unicode-range: U+00B7; +} + +@font-face { + font-family: "Biaodian Pro Sans"; + src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local(SimSun); + unicode-range: U+00B7; +} + +@font-face { + font-family: "Biaodian Pro Serif"; + src: local("Songti SC"), local(STSong), local("Heiti SC"), local(SimSun); + unicode-range: U+00B7; +} + +@font-face { + font-family: "Biaodian Pro Sans CNS"; + src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local(SimSun); + unicode-range: U+00B7; +} + +@font-face { + font-family: "Biaodian Pro Serif CNS"; + src: local("Songti SC"), local(STSong), local("Heiti SC"), local(SimSun); + unicode-range: U+00B7; +} + +@font-face { + font-family: "Biaodian Pro Sans GB"; + src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local(SimSun); + unicode-range: U+00B7; +} + +@font-face { + font-family: "Biaodian Pro Serif GB"; + src: local("Songti SC"), local(STSong), local("Heiti SC"), local(SimSun); + unicode-range: U+00B7; +} + +/* Em dash (——) */ +@font-face { + font-family: "Biaodian Sans"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Microsoft Yahei"), local(SimSun); + unicode-range: U+2014; +} + +@font-face { + font-family: "Biaodian Serif"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local("Microsoft Yahei"), local(SimSun); + unicode-range: U+2014; +} + +@font-face { + font-family: "Yakumono Sans"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Arial Unicode MS"), local("MS Gothic"); + unicode-range: U+2014; +} + +@font-face { + font-family: "Yakumono Serif"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("MS Mincho"), local("Microsoft Yahei"); + unicode-range: U+2014; +} + +@font-face { + font-family: "Biaodian Pro Sans"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Microsoft Yahei"), local(SimSun); + unicode-range: U+2014; +} + +@font-face { + font-family: "Biaodian Pro Serif"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local("Microsoft Yahei"), local(SimSun); + unicode-range: U+2014; +} + +@font-face { + font-family: "Biaodian Pro Sans CNS"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Microsoft Yahei"), local(SimSun); + unicode-range: U+2014; +} + +@font-face { + font-family: "Biaodian Pro Serif CNS"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local("Microsoft Yahei"), local(SimSun); + unicode-range: U+2014; +} + +@font-face { + font-family: "Biaodian Pro Sans GB"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Microsoft Yahei"), local(SimSun); + unicode-range: U+2014; +} + +@font-face { + font-family: "Biaodian Pro Serif GB"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSong), local("Microsoft Yahei"), local(SimSun); + unicode-range: U+2014; +} + +/* Ellipsis (……) */ +@font-face { + font-family: "Biaodian Sans"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(Meiryo), local("MS Gothic"), local(SimSun), local(PMingLiU); + unicode-range: U+2026; +} + +@font-face { + font-family: "Biaodian Serif"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local("MS Mincho"), local(SimSun), local(PMingLiU); + unicode-range: U+2026; +} + +@font-face { + font-family: "Yakumono Sans"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(Meiryo), local("MS Gothic"); + unicode-range: U+2026; +} + +@font-face { + font-family: "Yakumono Serif"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("MS Mincho"); + unicode-range: U+2026; +} + +@font-face { + font-family: "Biaodian Pro Sans"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local(PMingLiU); + unicode-range: U+2026; +} + +@font-face { + font-family: "Biaodian Pro Serif"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(SimSun), local(PMingLiU); + unicode-range: U+2026; +} + +@font-face { + font-family: "Biaodian Pro Sans CNS"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local(PMingLiU); + unicode-range: U+2026; +} + +@font-face { + font-family: "Biaodian Pro Serif CNS"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSongti), local(SimSun), local(PMingLiU); + unicode-range: U+2026; +} + +@font-face { + font-family: "Biaodian Pro Sans GB"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Sans GB"), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local(PMingLiU); + unicode-range: U+2026; +} + +@font-face { + font-family: "Biaodian Pro Serif GB"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Songti SC"), local(STSongti), local(SimSun), local(PMingLiU); + unicode-range: U+2026; +} + +/* Curve quotes (“‘’”, GB-only) */ +@font-face { + font-family: "Biaodian Pro Sans GB"; + src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local(SimSun), local(PMingLiU); + unicode-range: U+201C-201D, U+2018-2019; +} + +@font-face { + font-family: "Biaodian Pro Serif GB"; + src: local("Lisong Pro"), local("Heiti SC"), local(STHeiti), local(SimSun), local(PMingLiU); + unicode-range: U+201C-201D, U+2018-2019; +} + +/* Default emphasis mark (•) */ +@font-face { + font-family: "Biaodian Sans"; + src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); + unicode-range: U+25CF; +} + +@font-face { + font-family: "Biaodian Serif"; + src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); + unicode-range: U+25CF; +} + +@font-face { + font-family: "Biaodian Pro Sans"; + src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); + unicode-range: U+25CF; +} + +@font-face { + font-family: "Biaodian Pro Serif"; + src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); + unicode-range: U+25CF; +} + +@font-face { + font-family: "Biaodian Pro Sans CNS"; + src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); + unicode-range: U+25CF; +} + +@font-face { + font-family: "Biaodian Pro Serif CNS"; + src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); + unicode-range: U+25CF; +} + +@font-face { + font-family: "Biaodian Pro Sans GB"; + src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); + unicode-range: U+25CF; +} + +@font-face { + font-family: "Biaodian Pro Serif GB"; + src: local(Georgia), local("Times New Roman"), local(Arial), local("Droid Sans Fallback"); + unicode-range: U+25CF; +} + +/** + * Advanced correction to Chinese Biaodian + */ +@font-face { + font-family: "Biaodian Pro Sans"; + src: local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("MS Gothic"); + unicode-range: U+3002, U+FF0C, U+3001, U+FF1B, U+FF1A, U+FF1F, U+FF01, U+FF0D, U+FF0F, U+FF3C; +} + +@font-face { + font-family: "Biaodian Pro Serif"; + src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("MS Mincho"); + unicode-range: U+3002, U+FF0C, U+3001, U+FF1B, U+FF1A, U+FF1F, U+FF01, U+FF0D, U+FF0F, U+FF3C; +} + +@font-face { + font-family: "Biaodian Pro Sans CNS"; + src: local("Heiti TC"), local("Lihei Pro"), local("Microsoft Jhenghei"), local(PMingLiU); + unicode-range: U+3002, U+FF0C, U+3001; +} + +@font-face { + font-family: "Biaodian Pro Sans CNS"; + src: local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("Heiti TC"), local("Lihei Pro"), local("Microsoft Jhenghei"), local(PMingLiU), local("MS Gothic"); + unicode-range: U+FF1B, U+FF1A, U+FF1F, U+FF01; +} + +@font-face { + font-family: "Biaodian Pro Sans CNS"; + src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("MS Mincho"); + unicode-range: U+FF0D, U+FF0F, U+FF3C; +} + +@font-face { + font-family: "Biaodian Pro Serif CNS"; + src: local(STSongti-TC-Regular), local("Lisong Pro"), local("Heiti TC"), local(PMingLiU); + unicode-range: U+3002, U+FF0C, U+3001; +} + +@font-face { + font-family: "Biaodian Pro Serif CNS"; + src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local(PMingLiU), local("MS Mincho"); + unicode-range: U+FF1B, U+FF1A, U+FF1F, U+FF01, U+FF0D, U+FF0F, U+FF3C; +} + +@font-face { + font-family: "Biaodian Pro Sans GB"; + src: local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local("MS Gothic"); + unicode-range: U+3002, U+FF0C, U+3001, U+FF1B, U+FF1A, U+FF1F, U+FF01, U+FF0D, U+FF0F, U+FF3C; +} + +@font-face { + font-family: "Biaodian Pro Serif GB"; + src: local("Songti SC"), local(STSongti), local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local("Hiragino Sans GB"), local("Heiti SC"), local(STHeiti), local(SimSun), local("MS Mincho"); + unicode-range: U+3002, U+FF0C, U+3001, U+FF1B, U+FF1A, U+FF1F, U+FF01; +} + +@font-face { + font-family: "Biaodian Pro Serif GB"; + src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local(PMingLiU), local("MS Mincho"); + unicode-range: U+FF0D, U+FF0F, U+FF3C; +} + +@font-face { + font-family: "Biaodian Pro Sans"; + src: local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local(PMingLiU); + unicode-range: U+300C-300F, U+300A-300B, U+3008-3009, U+FF08-FF09, U+3014-3015; +} + +@font-face { + font-family: "Biaodian Pro Serif"; + src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local(SimSun); + unicode-range: U+300C-300F, U+300A-300B, U+3008-3009, U+FF08-FF09, U+3014-3015; +} + +@font-face { + font-family: "Biaodian Pro Sans CNS"; + src: local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local(PMingLiU); + unicode-range: U+300C-300F, U+300A-300B, U+3008-3009, U+FF08-FF09, U+3014-3015; +} + +@font-face { + font-family: "Biaodian Pro Serif CNS"; + src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local(SimSun); + unicode-range: U+300C-300F, U+300A-300B, U+3008-3009, U+FF08-FF09, U+3014-3015; +} + +@font-face { + font-family: "Biaodian Pro Sans GB"; + src: local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local(SimSun), local(PMingLiU); + unicode-range: U+300C-300F, U+300A-300B, U+3008-3009, U+FF08-FF09, U+3014-3015; +} + +@font-face { + font-family: "Biaodian Pro Serif GB"; + src: local("Hiragino Mincho ProN"), local("Hiragino Mincho Pro"), local(SimSun); + unicode-range: U+300C-300F, U+300A-300B, U+3008-3009, U+FF08-FF09, U+3014-3015; +} + +/* Address solution to `unicode-range` unsupported + * issues in Firefox. + */ +@font-face { + font-family: "Biaodian Basic"; + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"); + unicode-range: U+2014, U+2026, U+00B7; +} + +@font-face { + font-family: "Biaodian Sans"; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +@font-face { + font-family: "Biaodian Serif"; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +@font-face { + font-family: "Biaodian Pro Sans"; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +@font-face { + font-family: "Biaodian Pro Serif"; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +@font-face { + font-family: "Biaodian Pro Sans CNS"; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +@font-face { + font-family: "Biaodian Pro Serif CNS"; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +@font-face { + font-family: "Biaodian Pro Sans GB"; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +@font-face { + font-family: "Biaodian Pro Serif GB"; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +/** + * Western Italic Serif + */ +@font-face { + font-family: "Latin Italic Serif"; + src: local("Georgia Italic"), local("Times New Roman Italic"), local(Georgia-Italic), local(TimesNewRomanPS-ItalicMT), local(Times-Italic); +} + +@font-face { + font-family: "Latin Italic Serif"; + font-weight: 700; + src: local("Georgia Bold Italic"), local("Times New Roman Bold Italic"), local(Georgia-BoldItalic), local(TimesNewRomanPS-BoldItalicMT), local(Times-Italic); +} + +/** + * Western italic sans-serif + */ +@font-face { + font-family: "Latin Italic Sans"; + src: local("Helvetica Neue Italic"), local("Helvetica Oblique"), local("Arial Italic"), local(HelveticaNeue-Italic), local(Helvetica-LightOblique), local(Arial-ItalicMT); +} + +@font-face { + font-family: "Latin Italic Sans"; + font-weight: 700; + src: local("Helvetica Neue Bold Italic"), local("Helvetica Bold Oblique"), local("Arial Bold Italic"), local(HelveticaNeue-BoldItalic), local(Helvetica-BoldOblique), local(Arial-BoldItalicMT); +} + +/** + * Numerals: text figures + */ +@font-face { + unicode-range: U+0030-0039; + font-family: "Numeral TF Sans"; + src: local(Skia), local("Neutraface 2 Text"), local(Candara), local(Corbel); +} + +@font-face { + unicode-range: U+0030-0039; + font-family: "Numeral TF Serif"; + src: local(Georgia), local("Hoefler Text"), local("Big Caslon"); +} + +@font-face { + unicode-range: U+0030-0039; + font-family: "Numeral TF Italic Serif"; + src: local("Georgia Italic"), local("Hoefler Text Italic"), local(Georgia-Italic), local(HoeflerText-Italic); +} + +/** + * Numerals: lining figures + */ +@font-face { + unicode-range: U+0030-0039; + font-family: "Numeral LF Sans"; + src: local("Helvetica Neue"), local(Helvetica), local(Arial); +} + +@font-face { + unicode-range: U+0030-0039; + font-family: "Numeral LF Italic Sans"; + src: local("Helvetica Neue Italic"), local("Helvetica Oblique"), local("Arial Italic"), local(HelveticaNeue-Italic), local(Helvetica-LightOblique), local(Arial-ItalicMT); +} + +@font-face { + unicode-range: U+0030-0039; + font-family: "Numeral LF Italic Sans"; + font-weight: bold; + src: local("Helvetica Neue Bold Italic"), local("Helvetica Bold Oblique"), local("Arial Bold Italic"), local(HelveticaNeue-BoldItalic), local(Helvetica-BoldOblique), local(Arial-BoldItalicMT); +} + +@font-face { + unicode-range: U+0030-0039; + font-family: "Numeral LF Serif"; + src: local(Palatino), local("Palatino Linotype"), local("Times New Roman"); +} + +@font-face { + unicode-range: U+0030-0039; + font-family: "Numeral LF Italic Serif"; + src: local("Palatino Italic"), local("Palatino Italic Linotype"), local("Times New Roman Italic"), local(Palatino-Italic), local(Palatino-Italic-Linotype), local(TimesNewRomanPS-ItalicMT); +} + +@font-face { + unicode-range: U+0030-0039; + font-family: "Numeral LF Italic Serif"; + font-weight: bold; + src: local("Palatino Bold Italic"), local("Palatino Bold Italic Linotype"), local("Times New Roman Bold Italic"), local(Palatino-BoldItalic), local(Palatino-BoldItalic-Linotype), local(TimesNewRomanPS-BoldItalicMT); +} + +/* Address solution to `unicode-range` unsupported + * issues in Firefox. + */ +@font-face { + font-family: "Numeral TF Sans"; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +@font-face { + font-family: "Numeral TF Serif"; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +@font-face { + font-family: "Numeral TF Italic Serif"; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +@font-face { + font-family: "Numeral LF Sans"; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +@font-face { + font-family: "Numeral LF Italic Sans"; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +@font-face { + font-family: "Numeral LF Italic Sans"; + font-weight: bold; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +@font-face { + font-family: "Numeral LF Serif"; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +@font-face { + font-family: "Numeral LF Italic Serif"; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +@font-face { + font-family: "Numeral LF Italic Serif"; + font-weight: bold; + src: local(lying-to-firefox); + unicode-range: U+270C; +} + +/** + * Zhuyin Kaiti + */ +@font-face { + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"); + unicode-range: U+3105-312D, U+31A0-31BA, U+02D9, U+02CA, U+02C5, U+02C7, U+02CB, U+02EA-02EB, U+030D, U+0358, U+F31B4-F31B7, U+F0061, U+F0065, U+F0069, U+F006F, U+F0075; + font-family: "Zhuyin Kaiti"; +} + +/** + * Zhuyin Heiti + */ +@font-face { + unicode-range: U+3105-312D, U+31A0-31BA, U+02D9, U+02CA, U+02C5, U+02C7, U+02CB, U+02EA-02EB, U+030D, U+0358, U+F31B4-F31B7, U+F0061, U+F0065, U+F0069, U+F006F, U+F0075; + font-family: "Zhuyin Heiti"; + src: local("Hiragino Sans GB"), local("Heiti TC"), local("Microsoft Jhenghei"), url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"); +} + +@font-face { + font-family: "Zhuyin Heiti"; + src: local("Heiti TC"), local("Microsoft Jhenghei"), url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"); + unicode-range: U+3127; +} + +@font-face { + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"); + font-family: "Zhuyin Heiti"; + unicode-range: U+02D9, U+02CA, U+02C5, U+02C7, U+02CB, U+02EA-02EB, U+31B4, U+31B5, U+31B6, U+31B7, U+030D, U+0358, U+F31B4-F31B7, U+F0061, U+F0065, U+F0069, U+F006F, U+F0075; +} + +/** + * Romanisation (checked tone ligature [陽入韻連字]) + */ +@font-face { + src: url(./font/han.woff?v3.1.0) format("woff"), url(./font/han.otf?v3.1.0) format("opentype"); + font-family: "Romanization Sans"; + unicode-range: U+030D, U+0358, U+F31B4-F31B7, U+F0061, U+F0065, U+F0069, U+F006F, U+F0075; +} + +html:lang(zh-Latn), +html:lang(ja-Latn), +html:not(:lang(zh)):not(:lang(ja)), +html *:lang(zh-Latn), +html *:lang(ja-Latn), +html *:not(:lang(zh)):not(:lang(ja)), +article strong:lang(zh-Latn), +article strong:lang(ja-Latn), +article strong:not(:lang(zh)):not(:lang(ja)), +article strong *:lang(zh-Latn), +article strong *:lang(ja-Latn), +article strong *:not(:lang(zh)):not(:lang(ja)) { + font-family: "Helvetica Neue", Helvetica, Arial, "Han Heiti", sans-serif; +} + +html:lang(zh), +html:lang(zh-Hant), +[lang^="zh"], +[lang*="Hant"], +[lang="zh-TW"], +[lang="zh-HK"], +article strong:lang(zh), +article strong:lang(zh-Hant) { + font-family: "Biaodian Pro Sans CNS", "Helvetica Neue", Helvetica, Arial, "Zhuyin Heiti", "Han Heiti", sans-serif; +} + +html:lang(zh-Hans), +html:lang(zh-CN), +[lang*="Hans"], +[lang="zh-CN"], +article strong:lang(zh-Hans), +article strong:lang(zh-CN) { + font-family: "Biaodian Pro Sans GB", "Helvetica Neue", Helvetica, Arial, "Han Heiti GB", sans-serif; +} + +html:lang(ja), +[lang^="ja"], +article strong:lang(ja) { + font-family: "Yakumono Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +/** + * Sans Italic + */ +article blockquote i:lang(zh-Latn), +article blockquote i:lang(ja-Latn), +article blockquote i:not(:lang(zh)):not(:lang(ja)), +article blockquote i *:lang(zh-Latn), +article blockquote i *:lang(ja-Latn), +article blockquote i *:not(:lang(zh)):not(:lang(ja)), +article blockquote var:lang(zh-Latn), +article blockquote var:lang(ja-Latn), +article blockquote var:not(:lang(zh)):not(:lang(ja)), +article blockquote var *:lang(zh-Latn), +article blockquote var *:lang(ja-Latn), +article blockquote var *:not(:lang(zh)):not(:lang(ja)) { + font-family: "Latin Italic Sans", "Helvetica Neue", Helvetica, Arial, "Han Heiti", sans-serif; +} + +article blockquote i:lang(zh), +article blockquote i:lang(zh-Hant), +article blockquote var:lang(zh), +article blockquote var:lang(zh-Hant) { + font-family: "Biaodian Pro Sans CNS", "Latin Italic Sans", "Helvetica Neue", Helvetica, Arial, "Zhuyin Heiti", "Han Heiti", sans-serif; +} + +article blockquote i:lang(zh-Hans), +article blockquote i:lang(zh-CN), +article blockquote var:lang(zh-Hans), +article blockquote var:lang(zh-CN) { + font-family: "Biaodian Pro Sans GB", "Latin Italic Sans", "Helvetica Neue", Helvetica, Arial, "Han Heiti GB", sans-serif; +} + +article blockquote i:lang(ja), +article blockquote var:lang(ja) { + font-family: "Yakumono Sans", "Latin Italic Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +article figure blockquote:lang(zh-Latn), +article figure blockquote:lang(ja-Latn), +article figure blockquote:not(:lang(zh)):not(:lang(ja)), +article figure blockquote *:lang(zh-Latn), +article figure blockquote *:lang(ja-Latn), +article figure blockquote *:not(:lang(zh)):not(:lang(ja)), +figure blockquote:lang(zh-Latn), +figure blockquote:lang(ja-Latn), +figure blockquote:not(:lang(zh)):not(:lang(ja)), +figure blockquote *:lang(zh-Latn), +figure blockquote *:lang(ja-Latn), +figure blockquote *:not(:lang(zh)):not(:lang(ja)) { + font-family: Georgia, "Times New Roman", "Han Songti", cursive, serif; +} + +article figure blockquote:lang(zh), +article figure blockquote:lang(zh-Hant), +figure blockquote:lang(zh), +figure blockquote:lang(zh-Hant) { + font-family: "Biaodian Pro Serif CNS", "Numeral LF Serif", Georgia, "Times New Roman", "Zhuyin Kaiti", "Han Songti", serif; +} + +article figure blockquote:lang(zh-Hans), +article figure blockquote:lang(zh-CN), +figure blockquote:lang(zh-Hans), +figure blockquote:lang(zh-CN) { + font-family: "Biaodian Pro Serif GB", "Numeral LF Serif", Georgia, "Times New Roman", "Han Songti GB", serif; +} + +article figure blockquote:lang(ja), +figure blockquote:lang(ja) { + font-family: "Yakumono Serif", "Numeral LF Serif", Georgia, "Times New Roman", serif; +} + +/** + * Serif Italic + */ +article blockquote:lang(zh-Latn), +article blockquote:lang(ja-Latn), +article blockquote:not(:lang(zh)):not(:lang(ja)), +article blockquote *:lang(zh-Latn), +article blockquote *:lang(ja-Latn), +article blockquote *:not(:lang(zh)):not(:lang(ja)) { + font-family: Georgia, "Times New Roman", "Han Kaiti", cursive, serif; +} + +article blockquote:lang(zh), +article blockquote:lang(zh-Hant) { + font-family: "Biaodian Pro Serif CNS", "Numeral LF Serif", Georgia, "Times New Roman", "Zhuyin Kaiti", "Han Kaiti", cursive, serif; +} + +article blockquote:lang(zh-Hans), +article blockquote:lang(zh-CN) { + font-family: "Biaodian Pro Serif GB", "Numeral LF Serif", Georgia, "Times New Roman", "Han Kaiti GB", cursive, serif; +} + +article blockquote:lang(ja) { + font-family: "Yakumono Serif", "Numeral LF Serif", Georgia, "Times New Roman", cursive, serif; +} + +/** + * Cursive Italic + */ +i:lang(zh-Latn), +i:lang(ja-Latn), +i:not(:lang(zh)):not(:lang(ja)), +i *:lang(zh-Latn), +i *:lang(ja-Latn), +i *:not(:lang(zh)):not(:lang(ja)), +var:lang(zh-Latn), +var:lang(ja-Latn), +var:not(:lang(zh)):not(:lang(ja)), +var *:lang(zh-Latn), +var *:lang(ja-Latn), +var *:not(:lang(zh)):not(:lang(ja)) { + font-family: "Latin Italic Serif", Georgia, "Times New Roman", "Han Kaiti", cursive, serif; +} + +i:lang(zh), +i:lang(zh-Hant), +var:lang(zh), +var:lang(zh-Hant) { + font-family: "Biaodian Pro Serif CNS", "Numeral LF Italic Serif", "Latin Italic Serif", Georgia, "Times New Roman", "Zhuyin Kaiti", "Han Kaiti", cursive, serif; +} + +i:lang(zh-Hans), +i:lang(zh-CN), +var:lang(zh-Hans), +var:lang(zh-CN) { + font-family: "Biaodian Pro Serif GB", "Numeral LF Italic Serif", "Latin Italic Serif", Georgia, "Times New Roman", "Han Kaiti GB", cursive, serif; +} + +i:lang(ja), +var:lang(ja) { + font-family: "Yakumono Serif", "Numeral LF Italic Serif", "Latin Italic Serif", Georgia, "Times New Roman", cursive, serif; +} + +code:lang(zh-Latn), +code:lang(ja-Latn), +code:not(:lang(zh)):not(:lang(ja)), +code *:lang(zh-Latn), +code *:lang(ja-Latn), +code *:not(:lang(zh)):not(:lang(ja)), +kbd:lang(zh-Latn), +kbd:lang(ja-Latn), +kbd:not(:lang(zh)):not(:lang(ja)), +kbd *:lang(zh-Latn), +kbd *:lang(ja-Latn), +kbd *:not(:lang(zh)):not(:lang(ja)), +samp:lang(zh-Latn), +samp:lang(ja-Latn), +samp:not(:lang(zh)):not(:lang(ja)), +samp *:lang(zh-Latn), +samp *:lang(ja-Latn), +samp *:not(:lang(zh)):not(:lang(ja)), +pre:lang(zh-Latn), +pre:lang(ja-Latn), +pre:not(:lang(zh)):not(:lang(ja)), +pre *:lang(zh-Latn), +pre *:lang(ja-Latn), +pre *:not(:lang(zh)):not(:lang(ja)) { + font-family: Menlo, Consolas, Courier, "Han Heiti", monospace, monospace, sans-serif; +} + +code:lang(zh), +code:lang(zh-Hant), +kbd:lang(zh), +kbd:lang(zh-Hant), +samp:lang(zh), +samp:lang(zh-Hant), +pre:lang(zh), +pre:lang(zh-Hant) { + font-family: "Biaodian Pro Sans CNS", Menlo, Consolas, Courier, "Zhuyin Heiti", "Han Heiti", monospace, monospace, sans-serif; +} + +code:lang(zh-Hans), +code:lang(zh-CN), +kbd:lang(zh-Hans), +kbd:lang(zh-CN), +samp:lang(zh-Hans), +samp:lang(zh-CN), +pre:lang(zh-Hans), +pre:lang(zh-CN) { + font-family: "Biaodian Pro Sans GB", Menlo, Consolas, Courier, "Han Heiti GB", monospace, monospace, sans-serif; +} + +code:lang(ja), +kbd:lang(ja), +samp:lang(ja), +pre:lang(ja) { + font-family: "Yakumono Sans", Menlo, Consolas, Courier, monospace, monospace, sans-serif; +} + +html, +ruby ru[zhuyin] zhuyin, +ruby ru[zhuyin] zhuyin diao, +hruby ru[zhuyin] zhuyin, +hruby ru[zhuyin] zhuyin diao, +ruby.romanization rt, +ruby ru[annotation]:before, +hruby.romanization rt, +hruby ru[annotation]:before, +.no-unicoderange char.biaodian.liga, +.no-unicoderange char.biaodian[unicode="b7"] { + -moz-font-feature-settings: "liga"; + -ms-font-feature-settings: "liga"; + -webkit-font-feature-settings: "liga"; + font-feature-settings: "liga"; +} + +i, +var { + font-style: inherit; +} + +ruby ru[zhuyin] zhuyin diao, +hruby ru[zhuyin] zhuyin diao { + font-family: "Zhuyin Kaiti", cursive, serif; +} +ruby.romanization rt, +ruby ru[annotation]:before, +hruby.romanization rt, +hruby ru[annotation]:before { + font-family: "Romanization Sans", "Helvetica Neue", Helvetica, Arial, "Han Heiti", sans-serif; +} + +/* Global + -------- */ +.no-kaiti i, +.no-kaiti var { + padding-bottom: .05em; + border-bottom: 3px double lightgrey; +} + +/* Section-wise arrangement + -------------------------- */ +/** + * Well-knit sections for articles + */ +article { + line-height: 1.7; +} +article p, +article li { + text-align: justify; + text-justify: inter-ideograph; +} +article h1 + blockquote, +article h1 + p, +article h1 + ol, +article h1 + ul, +article h1 + h6, +article h1 + section > h6:first-child, +article h1 + section > p:first-child, +article h1 + section > ol:first-child, +article h1 + section > ul:first-child, +article h1 + section > blockquote:first-child, +article h2 + blockquote, +article h2 + p, +article h2 + ol, +article h2 + ul, +article h2 + h6, +article h2 + section > h6:first-child, +article h2 + section > p:first-child, +article h2 + section > ol:first-child, +article h2 + section > ul:first-child, +article h2 + section > blockquote:first-child, +article h3 + blockquote, +article h3 + p, +article h3 + ol, +article h3 + ul, +article h3 + h6, +article h3 + section > h6:first-child, +article h3 + section > p:first-child, +article h3 + section > ol:first-child, +article h3 + section > ul:first-child, +article h3 + section > blockquote:first-child, +article h4 + blockquote, +article h4 + p, +article h4 + ol, +article h4 + ul, +article h4 + h6, +article h4 + section > h6:first-child, +article h4 + section > p:first-child, +article h4 + section > ol:first-child, +article h4 + section > ul:first-child, +article h4 + section > blockquote:first-child, +article h5 + blockquote, +article h5 + p, +article h5 + ol, +article h5 + ul, +article h5 + h6, +article h5 + section > h6:first-child, +article h5 + section > p:first-child, +article h5 + section > ol:first-child, +article h5 + section > ul:first-child, +article h5 + section > blockquote:first-child, +article h6 + blockquote, +article h6 + p, +article h6 + ol, +article h6 + ul, +article h6 + h6, +article h6 + section > h6:first-child, +article h6 + section > p:first-child, +article h6 + section > ol:first-child, +article h6 + section > ul:first-child, +article h6 + section > blockquote:first-child, +article h1 + h5, +article h1 + section > h5:first-child, +article h2 + h5, +article h2 + section > h5:first-child, +article h3 + h5, +article h3 + section > h5:first-child, +article h4 + h5, +article h4 + section > h5:first-child, +article h5 + h5, +article h5 + section > h5:first-child, +article h1 + h4, +article h1 + section > h4:first-child, +article h2 + h4, +article h2 + section > h4:first-child, +article h3 + h4, +article h3 + section > h4:first-child, +article h4 + h4, +article h4 + section > h4:first-child, +article h1 + h3, +article h1 + section > h3:first-child, +article h2 + h3, +article h2 + section > h3:first-child, +article h3 + h3, +article h3 + section > h3:first-child, +article h1 + h2, +article h1 + section > h2:first-child, +article h2 + h2, +article h2 + section > h2:first-child { + margin-top: -1em; +} + +p.poem-like, +.poem-like p { + margin-left: 2em; +} +@media only screen and (max-width: 480px) { + p.poem-like, + .poem-like p { + margin-left: 1em; + } +} + +article blockquote { + margin-right: 0; +} +@media only screen and (max-width: 480px) { + article blockquote { + margin-left: 1em; + } +} +figure blockquote { + margin: 0; +} +blockquote blockquote { + margin-left: 1em; + margin-right: 1em; +} +article blockquote blockquote { + margin-right: 0; +} + +@media only screen and (max-width: 480px) { + blockquote, + figure { + margin-left: 1em; + margin-right: 1em; + } +} + +/** + * Sectional counter for articles + */ +/* Line composition + ------------------ */ +/** + * Customised emphasis mark (着重號) + */ +/** + * Basic Biaodian correction for Firefox + */ +.no-unicoderange char.biaodian.liga, +.no-unicoderange char.biaodian[unicode="b7"] { + font-family: "Biaodian Basic", "Han Heiti"; +} + +/** + * Hanzi and Western script mixed spacing (漢字西文混排間隙) + * + * More discussion at: + * https://github.com/ethantw/Han/issues/40 + */ +hws { + display: inline; + visibility: hidden; + font-family: Arial, sans-serif !important; + font-size: .89em; +} +code hws, +kbd hws, +samp hws, +pre hws, +ol > hws, +ul > hws, +table > hws, +thead > hws, +tbody > hws, +tfoot > hws, +tr > hws { + display: none; +} + +/** + * Consecutive CJK Biaodian positioning (CJK標點擠壓) + */ +char_group .open:not(:last-child), +char_group .close:not(:last-child), +char_group [unicode="3001"]:not(:last-child), +char_group [unicode="3002"]:not(:last-child), +char_group [unicode="ff0c"]:not(:last-child), +char_group [unicode="ff08"]:not(:last-child) { + letter-spacing: -.5em; +} + +char_group [unicode="3001"]:lang(zh-Hant):not(:last-child), +char_group [unicode="3002"]:lang(zh-Hant):not(:last-child), +char_group [unicode="ff0c"]:lang(zh-Hant):not(:last-child), +char_group [unicode="ff08"]:lang(zh-Hant):not(:last-child) { + letter-spacing: inherit; +} +char_group [unicode="3001"]:lang(zh-Hant) + .open, +char_group [unicode="3002"]:lang(zh-Hant) + .open, +char_group [unicode="ff0c"]:lang(zh-Hant) + .open, +char_group [unicode="ff08"]:lang(zh-Hant) + .open { + margin-left: -.5em; +} + +char_group [unicode="b7"] + [unicode="300c"], +char_group [unicode="b7"] + [unicode="300e"], +char_group [unicode="30fb"] + [unicode="300c"], +char_group [unicode="30fb"] + [unicode="300e"] { + margin-left: -.5em; +} + +char_group .liga + [unicode="300c"], +char_group .liga + [unicode="300e"] { + margin-left: -.25em; +} + +/** + * The ‘Display-As’ feature for presentational characters + */ +char[display-as] { + position: relative; + display: inline-block; +} +char[display-as] inner { + color: transparent; +} +char[display-as]:after { + position: absolute; + left: 0; + display: inline-block; + content: attr(display-as); +} +char[display-as].comb-liga:after { + font-family: "Romanization Sans", "Zhuyin Kaiti"; +} diff --git a/v3.1.0/han.js b/v3.1.0/han.js new file mode 100644 index 00000000..fece1647 --- /dev/null +++ b/v3.1.0/han.js @@ -0,0 +1,2363 @@ +/*! + * 漢字標準格式 v3.1.0 | MIT License | css.hanzi.co + * Han.css: the CSS typography framework optimised for Hanzi + */ + +void function( global, factory ) { + + // CommonJS + if ( typeof module === 'object' && typeof module.exports === 'object' ) { + module.exports = factory( global, true ) + } else { + factory( global ) + } + +}( typeof window !== 'undefined' ? window : this, function( window, noGlobalNS ) { + +'use strict' + +var document = window.document + +var root = document.documentElement + +var body = document.body + +var VERSION = '3.1.0' + +var ROUTINE = [ + // Initialise the condition with feature-detecting + // classes (Modernizr-alike), binding onto the root + // element, possibly ``. + 'initCond', + // Address element normalisation + 'renderElem', + // Handle Biaodian + //'jinzify', + 'renderJiya', + // Address Hanzi and Western script mixed spacing + 'renderHWS', + // Address Basic Biaodian correction in Firefox + 'correctBasicBD', + // Address presentational correction to combining ligatures + 'substCombLigaWithPUA' + // Address semantic correction to inaccurate characters + // **Note:** inactivated by default + // 'substInaccurateChar' +] + +// Define Han +var Han = function( context, condition ) { + return new Han.fn.init( context, condition ) +} + +var init = function() { + if ( arguments[ 0 ] ) { + this.context = arguments[ 0 ] + } + if ( arguments[ 1 ] ) { + this.condition = arguments[ 1 ] + } + return this +} + +Han.version = VERSION + +Han.fn = Han.prototype = { + version: VERSION, + + constructor: Han, + + // Body as the default target context + context: body, + + // Root element as the default condition + condition: root, + + // Default rendering routine + routine: ROUTINE, + + init: init, + + setRoutine: function( routine ) { + if ( Array.isArray( routine )) { + this.routine = routine + } + return this + }, + + // Note that the routine set up here will execute + // only once. The method won't alter the routine in + // the instance or in the prototype chain. + render: function( routine ) { + var it = this + var routine = Array.isArray( routine ) ? routine : this.routine + + routine + .forEach(function( method ) { + try { + if ( typeof method === 'string' ) { + it[ method ]() + } else if ( Array.isArray( method )) { + it[ method.shift() ].apply( it, method ) + } + } catch ( e ) {} + }) + return this + } +} + +Han.fn.init.prototype = Han.fn + +/** + * Shortcut for `render()` under the default + * situation. + * + * Once initialised, replace `Han.init` with the + * instance for future usage. + */ +Han.init = function() { + return Han.init = Han().render() +} + +var UNICODE = { + /** + * Western punctuation (西文標點符號) + */ + punct: { + base: '[\u2026,.;:!?\u203D_]', + sing: '[\u2010-\u2014\u2026]', + middle: '[\\\/~\\-&\u2010-\u2014_]', + open: '[\'"‘“\\(\\[\u00A1\u00BF\u2E18\u00AB\u2039\u201A\u201C\u201E]', + close: '[\'"”’\\)\\]\u00BB\u203A\u201B\u201D\u201F]', + end: '[\'"”’\\)\\]\u00BB\u203A\u201B\u201D\u201F\u203C\u203D\u2047-\u2049,.;:!?]', + }, + + /** + * CJK biaodian (CJK標點符號) + */ + biaodian: { + base: '[︰.、,。:;?!ー]', + liga: '[—…⋯]', + middle: '[·\/-゠\uFF06\u30FB\uFF3F]', + open: '[「『《〈(〔[{【〖]', + close: '[」』》〉)〕]}】〗]', + end: '[」』》〉)〕]}】〗︰.、,。:;?!ー]' + }, + + /** + * CJK-related blocks (CJK相關字符區段) + * + * 1. 中日韓統一表意文字:[\u4E00-\u9FFF] + Basic CJK unified ideographs + * 2. 擴展-A區:[\u3400-\u4DB5] + Extended-A + * 3. 擴展-B區:[\u20000-\u2A6D6]([\uD840-\uD869][\uDC00-\uDED6]) + Extended-B + * 4. 擴展-C區:[\u2A700-\u2B734](\uD86D[\uDC00-\uDF3F]|[\uD86A-\uD86C][\uDC00-\uDFFF]|\uD869[\uDF00-\uDFFF]) + Extended-C + * 5. 擴展-D區:[\u2B740-\u2B81D](急用漢字,\uD86D[\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1F]) + Extended-D + * 6. 擴展-E區:[\u2B820-\u2F7FF](暫未支援) + Extended-E (not supported yet) + * 7. 擴展-F區(暫未支援) + Extended-F (not supported yet) + * 8. 筆畫區:[\u31C0-\u31E3] + Strokes + * 9. 表意數字「〇」:[\u3007] + Ideographic number zero + * 10. 相容表意文字及補充:[\uF900-\uFAFF][\u2F800-\u2FA1D](不使用) + Compatibility ideograph and supplement (not supported) + + 12 exceptions: + [\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29] + + https://zh.wikipedia.org/wiki/中日韓統一表意文字#cite_note-1 + + * 11. 康熙字典及簡化字部首:[\u2F00-\u2FD5\u2E80-\u2EF3] + Kangxi and supplement radicals + * 12. 表意文字描述字元:[\u2FF0-\u2FFA] + Ideographic description characters + */ + hanzi: { + base: '[\u4E00-\u9FFF\u3400-\u4DB5\u31C0-\u31E3\u3007\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD800-\uDBFF][\uDC00-\uDFFF]', + desc: '[\u2FF0-\u2FFA]', + radical: '[\u2F00-\u2FD5\u2E80-\u2EF3]' + }, + + /** + * Latin script blocks (拉丁字母區段) + * + * 1. 基本拉丁字母:A-Za-z + Basic Latin + * 2. 阿拉伯數字:0-9 + Digits + * 3. 補充-1:[\u00C0-\u00FF] + Latin-1 supplement + * 4. 擴展-A區:[\u0100-\u017F] + Extended-A + * 5. 擴展-B區:[\u0180-\u024F] + Extended-B + * 5. 擴展-C區:[\u2C60-\u2C7F] + Extended-C + * 5. 擴展-D區:[\uA720-\uA7FF] + Extended-D + * 6. 附加區:[\u1E00-\u1EFF] + Extended additional + * 7. 變音組字符:[\u0300-\u0341\u1DC0-\u1DFF] + Combining diacritical marks + */ + latin: { + base: '[A-Za-z0-9\u00C0-\u00FF\u0100-\u017F\u0180-\u024F\u2C60-\u2C7F\uA720-\uA7FF\u1E00-\u1EFF]', + combine: '[\u0300-\u0341\u1DC0-\u1DFF]' + }, + + /** + * Elli̱niká (Greek) script blocks (希臘字母區段) + * + * 1. 希臘字母及擴展:[\u0370–\u03FF\u1F00-\u1FFF] + Basic Greek & Greek Extended + * 2. 阿拉伯數字:0-9 + Digits + * 3. 希臘字母變音組字符:[\u0300-\u0345\u1DC0-\u1DFF] + Combining diacritical marks + */ + ellinika: { + base: '[0-9\u0370-\u03FF\u1F00-\u1FFF]', + combine: '[\u0300-\u0345\u1DC0-\u1DFF]' + }, + + /** + * Kirillica (Cyrillic) script blocks (西里爾字母區段) + * + * 1. 西里爾字母及補充:[\u0400-\u0482\u048A-\u04FF\u0500-\u052F] + Basic Cyrillic and supplement + * 2. 擴展B區:[\uA640-\uA66E\uA67E-\uA697] + Extended-B + * 3. 阿拉伯數字:0-9 + Digits + * 4. 西里爾字母組字符:[\u0483-\u0489\u2DE0-\u2DFF\uA66F-\uA67D\uA69F](位擴展A、B區) + Cyrillic combining diacritical marks (in extended-A, B) + */ + kirillica: { + base: '[0-9\u0400-\u0482\u048A-\u04FF\u0500-\u052F\uA640-\uA66E\uA67E-\uA697]', + combine: '[\u0483-\u0489\u2DE0-\u2DFF\uA66F-\uA67D\uA69F]' + }, + + /** + * Kana (假名) + * + * 1. 日文假名:[\u30A2\u30A4\u30A6\u30A8\u30AA-\u30FA\u3042\u3044\u3046\u3048\u304A-\u3094\u309F\u30FF] + Japanese Kana + * 2. 假名補充[\u1B000\u1B001](\uD82C[\uDC00-\uDC01]) + Kana supplement + * 3. 日文假名小寫:[\u3041\u3043\u3045\u3047\u3049\u30A1\u30A3\u30A5\u30A7\u30A9\u3063\u3083\u3085\u3087\u308E\u3095\u3096\u30C3\u30E3\u30E5\u30E7\u30EE\u30F5\u30F6\u31F0-\u31FF] + Japanese small Kana + * 4. 假名組字符:[\u3099-\u309C] + Kana combining characters + * 5. 半形假名:[\uFF66-\uFF9F] + Halfwidth Kana + * 6. 符號:[\u309D\u309E\u30FB-\u30FE] + Marks + */ + kana: { + base: '[\u30A2\u30A4\u30A6\u30A8\u30AA-\u30FA\u3042\u3044\u3046\u3048\u304A-\u3094\u309F\u30FF]|\uD82C[\uDC00-\uDC01]', + small: '[\u3041\u3043\u3045\u3047\u3049\u30A1\u30A3\u30A5\u30A7\u30A9\u3063\u3083\u3085\u3087\u308E\u3095\u3096\u30C3\u30E3\u30E5\u30E7\u30EE\u30F5\u30F6\u31F0-\u31FF]', + combine: '[\u3099-\u309C]', + half: '[\uFF66-\uFF9F]', + mark: '[\u30A0\u309D\u309E\u30FB-\u30FE]' + }, + + /** + * Eonmun (Hangul, 諺文) + * + * 1. 諺文音節:[\uAC00-\uD7A3] + Eonmun (Hangul) syllables + * 2. 諺文字母:[\u1100-\u11FF\u314F-\u3163\u3131-\u318E\uA960-\uA97C\uD7B0-\uD7FB] + Eonmun (Hangul) letters + * 3. 半形諺文字母:[\uFFA1-\uFFDC] + Halfwidth Eonmun (Hangul) letters + */ + eonmun: { + base: '[\uAC00-\uD7A3]', + letter: '[\u1100-\u11FF\u314F-\u3163\u3131-\u318E\uA960-\uA97C\uD7B0-\uD7FB]', + half: '[\uFFA1-\uFFDC]' + }, + + /** + * Zhuyin (注音符號, Mandarin & Dialect Phonetic Symbols) + * + * 1. 國語注音、方言音符號:[\u3105-\u312D][\u31A0-\u31BA] + Bopomofo phonetic symbols + * 2. 國語陰陽上去聲調號:[\u02D9\u02CA\u02C5\u02C7\u02CB] (**註:**三聲包含乙個不合規範的符號) + Tones for Mandarin + * 3. 方言音陰、陽去聲調號:[\u02EA\u02EB] + Departing tones in dialects + * 4. 方言音陰、陽入韻:[\u31B4-\u31B7][\u0358\u030d]? + Checked tones in dialects + */ + zhuyin: { + base: '[\u3105-\u312D\u31A0-\u31BA]', + initial: '[\u3105-\u3119\u312A-\u312C\u31A0-\u31A3]', + medial: '[\u3127-\u3129]', + final: '[\u311A-\u3129\u312D\u31A4-\u31B3\u31B8-\u31BA]', + tone: '[\u02D9\u02CA\u02C5\u02C7\u02CB\u02EA\u02EB]', + ruyun: '[\u31B4-\u31B7][\u0358\u030d]?' + } +} + +var TYPESET = (function() { + var rWhite = '[\\x20\\t\\r\\n\\f]' + // Whitespace characters + // http://www.w3.org/TR/css3-selectors/#whitespace + + var rPtOpen = UNICODE.punct.open + var rPtClose = UNICODE.punct.close + var rPtEnd = UNICODE.punct.end + var rPtMid = UNICODE.punct.middle + var rPtSing = UNICODE.punct.sing + var rPt = rPtOpen + '|' + rPtEnd + '|' + rPtMid + + var rBdOpen = UNICODE.biaodian.open + var rBdClose = UNICODE.biaodian.close + var rBdEnd = UNICODE.biaodian.end + var rBdMid = UNICODE.biaodian.middle + var rBdLiga = UNICODE.biaodian.liga + '{2}' + var rBd = rBdOpen + '|' + rBdEnd + '|' + rBdMid + + var rKana = UNICODE.kana.base + UNICODE.kana.combine + '?' + var rKanaS = UNICODE.kana.small + UNICODE.kana.combine + '?' + var rKanaH = UNICODE.kana.half + var rEon = UNICODE.eonmun.base + '|' + UNICODE.eonmun.letter + var rEonH = UNICODE.eonmun.half + + var rHan = UNICODE.hanzi.base + '|' + UNICODE.hanzi.desc + '|' + UNICODE.hanzi.radical + '|' + rKana + + var rCbn = UNICODE.ellinika.combine + var rLatn = UNICODE.latin.base + rCbn + '*' + var rGk = UNICODE.ellinika.base + rCbn + '*' + + var rCyCbn = UNICODE.kirillica.combine + var rCy = UNICODE.kirillica.base + rCyCbn + '*' + + var rAlph = rLatn + '|' + rGk + '|' + rCy + + // For words like `it's`, `Jones’s` or `'99` + var rApo = '[\u0027\u2019]' + var rChar = rHan + '|(' + rAlph + '|' + rApo + ')+' + + var rZyS = UNICODE.zhuyin.initial + var rZyJ = UNICODE.zhuyin.medial + var rZyY = UNICODE.zhuyin.final + var rZyD = UNICODE.zhuyin.tone + '|' + UNICODE.zhuyin.ruyun + + return { + /* Character-level selector (字級選擇器) + */ + char: { + punct: { + all: new RegExp( '(' + rPt + ')', 'g' ), + open: new RegExp( '(' + rPtOpen + ')', 'g' ), + end: new RegExp( '(' + rPtEnd + ')', 'g' ), + sing: new RegExp( '(' + rPtSing + ')', 'g' ) + }, + + biaodian: { + all: new RegExp( '(' + rBd + ')', 'g' ), + open: new RegExp( '(' + rBdOpen + ')', 'g' ), + close: new RegExp( '(' + rBdClose + ')', 'g' ), + end: new RegExp( '(' + rBdEnd + ')', 'g' ), + liga: new RegExp( '(' + rBdLiga + ')', 'g' ), + + group: [ + new RegExp( '(' + rBdOpen + '|' + rBdMid + '|' + rBdEnd + '){2,}', 'g' ), + new RegExp( '(' + rBdLiga + rBdOpen + ')', 'g' ) + ] + }, + + hanzi: { + individual: new RegExp( '(' + rHan + ')', 'g' ), + group: new RegExp( '(' + rHan + ')+', 'g' ) + }, + + word: new RegExp( '(' + rLatn + '|' + rGk + '|' + rCy + '|' + rPt + ')+', 'ig' ), + + alphabet: { + latin: new RegExp( '(' + rLatn + ')', 'ig' ), + ellinika: new RegExp( '(' + rGk + ')', 'ig' ), + kirillica: new RegExp( '(' + rCy + ')', 'ig' ), + kana: new RegExp( '(' + rKana + ')', 'g' ), + smallkana: new RegExp( '(' + rKanaS + ')', 'g' ), + eonmun: new RegExp( '(' + rEon + ')', 'g' ), + halfeonmun: new RegExp( '(' + rEonH + ')', 'g' ) + } + }, + + /* Punctuation Rules (禁則) + */ + jinze: { + touwei: new RegExp( '(' + rBdOpen + '+)(' + rChar + ')(' + rBdEnd + '+)', 'ig' ), + tou: new RegExp( '(' + rBdOpen + '+)(' + rChar + ')', 'ig' ), + wei: new RegExp( '(' + rChar + ')(' + rBdEnd + '+)', 'ig' ), + middle: new RegExp( '(' + rChar + ')(' + rBdMid + ')(' + rChar + ')', 'ig' ) + }, + + zhuyin: { + form: new RegExp( '^\u02D9?(' + rZyS + ')?(' + rZyJ + ')?(' + rZyY + ')?(' + rZyD + ')?$' ), + diao: new RegExp( '(' + rZyD + ')', 'g' ) + }, + + /* Hanzi and Western mixed spacing (漢字西文混排間隙) + * - Basic mode + * - Strict mode + */ + hws: { + base: [ + new RegExp( '('+ rHan +')(' + rAlph + '|' + rPtOpen + ')', 'ig' ), + new RegExp( '('+ rAlph+ '|' + rPtEnd +')(' + rHan + ')', 'ig' ) + ], + + strict: [ + new RegExp( '('+ rHan +')' + rWhite + '?(' + rAlph + '|' + rPtOpen + ')', 'ig' ), + new RegExp( '('+ rAlph+ '|' + rPtEnd +')' + rWhite + '?(' + rHan + ')', 'ig' ) + ] + }, + + // The feature displays the following characters + // in its variant form for font consistency and + // presentational reason. Meanwhile, this won't + // alter the original character in the DOM. + 'display-as': { + 'ja-font-for-hant': [ + // '夠 够', + '查 査', + '啟 啓', + '鄉 鄕', + '值 値', + '污 汚' + ], + + 'comb-liga-pua': [ + [ '\u0061[\u030d\u0358]', '\uDB80\uDC61' ], + [ '\u0065[\u030d\u0358]', '\uDB80\uDC65' ], + [ '\u0069[\u030d\u0358]', '\uDB80\uDC69' ], + [ '\u006F[\u030d\u0358]', '\uDB80\uDC6F' ], + [ '\u0075[\u030d\u0358]', '\uDB80\uDC75' ], + + [ '\u31B4[\u030d\u0358]', '\uDB8C\uDDB4' ], + [ '\u31B5[\u030d\u0358]', '\uDB8C\uDDB5' ], + [ '\u31B6[\u030d\u0358]', '\uDB8C\uDDB6' ], + [ '\u31B7[\u030d\u0358]', '\uDB8C\uDDB7' ] + ] + }, + + // The feature actually *converts* the character + // in the DOM for semantic reason. + // + // Note that this could be aggressive. + 'inaccurate-char': [ + [ '[\u2022\u2027]', '\u00B7' ], + [ '\u22EF\u22EF', '\u2026\u2026' ], + [ '\u2500\u2500', '\u2014\u2014' ], + [ '\u2035', '\u2018' ], + [ '\u2032', '\u2019' ], + [ '\u2036', '\u201C' ], + [ '\u2033', '\u201D' ] + ] + } +})() + +Han.UNICODE = UNICODE +Han.TYPESET = TYPESET + +// Aliases +Han.UNICODE.cjk = Han.UNICODE.hanzi +Han.UNICODE.greek = Han.UNICODE.ellinika +Han.UNICODE.cyrillic = Han.UNICODE.kirillica +Han.UNICODE.hangul = Han.UNICODE.eonmun + +Han.TYPESET.char.cjk = Han.TYPESET.char.hanzi +Han.TYPESET.char.alphabet.greek = Han.TYPESET.char.alphabet.ellinika +Han.TYPESET.char.alphabet.cyrillic = Han.TYPESET.char.alphabet.kirillica +Han.TYPESET.char.alphabet.hangul = Han.TYPESET.char.alphabet.eonmun + +var $ = { + // Simplified query selectors which return the node list + // in an array + id: function( selector, context ) { + return ( context || document ).getElementById( selector ) + }, + + tag: function( selector, context ) { + return this.makeArray( + ( context || document ).getElementsByTagName( selector ) + ) + }, + + qsa: function( selector, context ) { + return this.makeArray( + ( context || document ).querySelectorAll( selector ) + ) + }, + + // Create a document fragment, a text node with text + // or an element with/without classes + create: function( elem, clazz ) { + var elem = '!' === elem ? + document.createDocumentFragment() : + '' === elem ? + document.createTextNode( clazz || '' ) : + document.createElement( elem ) + + try { + if ( clazz ) { + elem.className = clazz + } + } catch (e) {} + + return elem + }, + + // Clone a node (text, element or fragment) deeply or + // childlessly + clone: function( node, deep ) { + return node.cloneNode( deep || true ) + }, + + // Remove a node (text, element or fragment) + remove: function( node, parent ) { + return ( parent || node.parentNode ).removeChild( node ) + }, + + // Set attributes all in once with an object + setAttr: function( target, attr ) { + if ( typeof attr !== 'object' ) return + var len = attr.length + + // Native NamedNodeMap + if ( typeof attr[ 0 ] === 'object' && 'name' in attr[ 0 ] ) { + for ( var i = 0; i < len; i++ ) { + if ( attr[ i ].value !== undefined ) { + target.setAttribute( attr[ i ].name, attr[ i ].value ) + } + } + + // Plain object + } else { + for ( var name in attr ) { + if ( attr.hasOwnProperty( name ) && attr[ name ] !== undefined ) { + target.setAttribute( name, attr[ name ] ) + } + } + } + return target + }, + + // Return if the current node should be ignored, + // `` or comments + isIgnorable: function( node ) { + return node.nodeName === 'WBR' || node.nodeType === Node.COMMENT_NODE + }, + + // Convert array-like objects into real arrays + // for the native prototype methods + makeArray: function( obj ) { + return Array.prototype.slice.call( obj ) + }, + + // Extend target with an object + extend: function( target, object ) { + var isExtensible = typeof target === 'object' || + typeof target === 'function' || + typeof object === 'object' + + if ( !isExtensible ) return + + for ( var name in object ) { + if ( object.hasOwnProperty( name )) { + target[ name ] = object[ name ] + } + } + return target + } +} + +var Fibre = +/*! + * Fibre.js v0.1.2 | MIT License | github.com/ethantw/fibre.js + * Based on findAndReplaceDOMText + */ + +function( Finder ) { + +'use strict' + +var VERSION = '0.1.2' +var FILTER_OUT_SELECTOR = 'style, script, head title' + +var global = window || {} +var document = global.document || undefined + +function matches( node, selector, bypassNodeType39 ) { + var Efn = Element.prototype + var matches = Efn.matches || Efn.mozMatchesSelector || Efn.msMatchesSelector || Efn.webkitMatchesSelector + + if ( node instanceof Element ) { + return matches.call( node, selector ) + } else if ( bypassNodeType39 ) { + if ( /^[39]$/.test( node.nodeType )) return true + } + return false +} + +if ( typeof document === 'undefined' ) throw new Error( 'Fibre requires a DOM-supported environment.' ) + +var Fibre = function( context ) { + return new Fibre.fn.init( context ) +} + +Fibre.version = VERSION +Fibre.matches = matches + +Fibre.fn = Fibre.prototype = { + constructor: Fibre, + + version: VERSION, + + context: undefined, + + contextSelector: null, + + finder: [], + + init: function( context ) { + if ( !context ) throw new Error( 'A context is required for Fibre to initialise.' ) + + if ( context instanceof Node ) { + this.context = context + } else if ( typeof context === 'string' ) { + this.contextSelector = context + this.context = document.querySelector( context ) + } + + return this + }, + + filterElemFn: function( currentNode ) { + return matches( currentNode, this.filterSelector, true ) && + !matches( currentNode, this.filterOutSelector ) + }, + + filterSelector: '*', + + filter: function( selector ) { + switch ( typeof selector ) { + case 'string': + this.filterSelector = selector + break + case 'function': + this.filterElemFn = selector + break + default: + return this + } + return this + }, + + filterOutSelector: FILTER_OUT_SELECTOR, + + filterOut: function( selector, boolExtend ) { + switch( typeof selector ) { + case 'string': + if ( typeof boolExtend !== 'undefined' && boolExtend === true ) { + this.filterOutSelector += ', ' + selector + } else { + this.filterOutSelector = selector + } + break + default: + return this + } + return this + }, + + replace: function( regexp, newSubStr, portionMode ) { + var it = this + var portionMode = portionMode || 'retain' + it.finder.push(Finder( it.context, { + find: regexp, + replace: newSubStr, + filterElements: function( currentNode ) { + return it.filterElemFn( currentNode ) + }, + portionMode: portionMode + })) + return it + }, + + wrap: function( regexp, strElemName, portionMode ) { + var it = this + var portionMode = portionMode || 'retain' + it.finder.push(Finder( it.context, { + find: regexp, + wrap: strElemName, + filterElements: function( currentNode ) { + return it.filterElemFn( currentNode ) + }, + portionMode: portionMode + })) + return it + }, + + revert: function( level ) { + var max = this.finder.length + var level = Number( level ) || ( level === 0 ? Number(0) : + ( level === 'all' ? max : 1 )) + + if ( typeof max === 'undefined' || max === 0 ) return this + else if ( level > max ) level = max + + for ( var i = level; i > 0; i-- ) { + this.finder.pop().revert() + } + return this + } +} + +Fibre.fn.init.prototype = Fibre.fn + +return Fibre + +}( + +/** + * findAndReplaceDOMText v 0.4.2 + * @author James Padolsey http://james.padolsey.com + * @license http://unlicense.org/UNLICENSE + * + * Matches the text of a DOM node against a regular expression + * and replaces each match (or node-separated portions of the match) + * in the specified element. + */ + (function() { + + var PORTION_MODE_RETAIN = 'retain' + var PORTION_MODE_FIRST = 'first' + var doc = document + var toString = {}.toString + function isArray(a) { + return toString.call(a) == '[object Array]' + } + + function escapeRegExp(s) { + return String(s).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1') + } + + function exposed() { + // Try deprecated arg signature first: + return deprecated.apply(null, arguments) || findAndReplaceDOMText.apply(null, arguments) + } + + function deprecated(regex, node, replacement, captureGroup, elFilter) { + if ((node && !node.nodeType) && arguments.length <= 2) { + return false + } + var isReplacementFunction = typeof replacement == 'function' + if (isReplacementFunction) { + replacement = (function(original) { + return function(portion, match) { + return original(portion.text, match.startIndex) + } + }(replacement)) + } + + // Awkward support for deprecated argument signature (<0.4.0) + var instance = findAndReplaceDOMText(node, { + + find: regex, + + wrap: isReplacementFunction ? null : replacement, + replace: isReplacementFunction ? replacement : '$' + (captureGroup || '&'), + + prepMatch: function(m, mi) { + + // Support captureGroup (a deprecated feature) + + if (!m[0]) throw 'findAndReplaceDOMText cannot handle zero-length matches' + if (captureGroup > 0) { + var cg = m[captureGroup] + m.index += m[0].indexOf(cg) + m[0] = cg + } + + m.endIndex = m.index + m[0].length + m.startIndex = m.index + m.index = mi + return m + }, + filterElements: elFilter + }) + exposed.revert = function() { + return instance.revert() + } + return true + } + + /** + * findAndReplaceDOMText + * + * Locates matches and replaces with replacementNode + * + * @param {Node} node Element or Text node to search within + * @param {RegExp} options.find The regular expression to match + * @param {String|Element} [options.wrap] A NodeName, or a Node to clone + * @param {String|Function} [options.replace='$&'] What to replace each match with + * @param {Function} [options.filterElements] A Function to be called to check whether to + * process an element. (returning true = process element, + * returning false = avoid element) + */ + function findAndReplaceDOMText(node, options) { + return new Finder(node, options) + } + + exposed.Finder = Finder + /** + * Finder -- encapsulates logic to find and replace. + */ + function Finder(node, options) { + + options.portionMode = options.portionMode || PORTION_MODE_RETAIN + this.node = node + this.options = options + // ENable match-preparation method to be passed as option: + this.prepMatch = options.prepMatch || this.prepMatch + this.reverts = [] + this.matches = this.search() + if (this.matches.length) { + this.processMatches() + } + + } + + Finder.prototype = { + + /** + * Searches for all matches that comply with the instance's 'match' option + */ + search: function() { + + var match + var matchIndex = 0 + var regex = this.options.find + var text = this.getAggregateText() + var matches = [] + regex = typeof regex === 'string' ? RegExp(escapeRegExp(regex), 'g') : regex + if (regex.global) { + while (match = regex.exec(text)) { + matches.push(this.prepMatch(match, matchIndex++)) + } + } else { + if (match = text.match(regex)) { + matches.push(this.prepMatch(match, 0)) + } + } + + return matches + }, + + /** + * Prepares a single match with useful meta info: + */ + prepMatch: function(match, matchIndex) { + + if (!match[0]) { + throw new Error('findAndReplaceDOMText cannot handle zero-length matches') + } + + match.endIndex = match.index + match[0].length + match.startIndex = match.index + match.index = matchIndex + return match + }, + + /** + * Gets aggregate text within subject node + */ + getAggregateText: function() { + + var elementFilter = this.options.filterElements + return getText(this.node) + /** + * Gets aggregate text of a node without resorting + * to broken innerText/textContent + */ + function getText(node) { + + if (node.nodeType === 3) { + return node.data + } + + if (elementFilter && !elementFilter(node)) { + return '' + } + + var txt = '' + if (node = node.firstChild) do { + txt += getText(node) + } while (node = node.nextSibling) + return txt + } + + }, + + /** + * Steps through the target node, looking for matches, and + * calling replaceFn when a match is found. + */ + processMatches: function() { + + var matches = this.matches + var node = this.node + var elementFilter = this.options.filterElements + var startPortion, + endPortion, + innerPortions = [], + curNode = node, + match = matches.shift(), + atIndex = 0, // i.e. nodeAtIndex + matchIndex = 0, + portionIndex = 0, + doAvoidNode, + nodeStack = [node] + out: while (true) { + + if (curNode.nodeType === 3) { + + if (!endPortion && curNode.length + atIndex >= match.endIndex) { + + // We've found the ending + endPortion = { + node: curNode, + index: portionIndex++, + text: curNode.data.substring(match.startIndex - atIndex, match.endIndex - atIndex), + indexInMatch: atIndex - match.startIndex, + indexInNode: match.startIndex - atIndex, // always zero for end-portions + endIndexInNode: match.endIndex - atIndex, + isEnd: true + } + } else if (startPortion) { + // Intersecting node + innerPortions.push({ + node: curNode, + index: portionIndex++, + text: curNode.data, + indexInMatch: atIndex - match.startIndex, + indexInNode: 0 // always zero for inner-portions + }) + } + + if (!startPortion && curNode.length + atIndex > match.startIndex) { + // We've found the match start + startPortion = { + node: curNode, + index: portionIndex++, + indexInMatch: 0, + indexInNode: match.startIndex - atIndex, + endIndexInNode: match.endIndex - atIndex, + text: curNode.data.substring(match.startIndex - atIndex, match.endIndex - atIndex) + } + } + + atIndex += curNode.data.length + } + + doAvoidNode = curNode.nodeType === 1 && elementFilter && !elementFilter(curNode) + if (startPortion && endPortion) { + + curNode = this.replaceMatch(match, startPortion, innerPortions, endPortion) + // processMatches has to return the node that replaced the endNode + // and then we step back so we can continue from the end of the + // match: + + atIndex -= (endPortion.node.data.length - endPortion.endIndexInNode) + startPortion = null + endPortion = null + innerPortions = [] + match = matches.shift() + portionIndex = 0 + matchIndex++ + if (!match) { + break; // no more matches + } + + } else if ( + !doAvoidNode && + (curNode.firstChild || curNode.nextSibling) + ) { + // Move down or forward: + if (curNode.firstChild) { + nodeStack.push(curNode) + curNode = curNode.firstChild + } else { + curNode = curNode.nextSibling + } + continue + } + + // Move forward or up: + while (true) { + if (curNode.nextSibling) { + curNode = curNode.nextSibling + break + } + curNode = nodeStack.pop() + if (curNode === node) { + break out + } + } + + } + + }, + + /** + * Reverts ... TODO + */ + revert: function() { + // Reversion occurs backwards so as to avoid nodes subsequently + // replaced during the matching phase (a forward process): + for (var l = this.reverts.length; l--;) { + this.reverts[l]() + } + this.reverts = [] + }, + + prepareReplacementString: function(string, portion, match, matchIndex) { + var portionMode = this.options.portionMode + if ( + portionMode === PORTION_MODE_FIRST && + portion.indexInMatch > 0 + ) { + return '' + } + string = string.replace(/\$(\d+|&|`|')/g, function($0, t) { + var replacement + switch(t) { + case '&': + replacement = match[0] + break + case '`': + replacement = match.input.substring(0, match.startIndex) + break + case '\'': + replacement = match.input.substring(match.endIndex) + break + default: + replacement = match[+t] + } + return replacement + }) + if (portionMode === PORTION_MODE_FIRST) { + return string + } + + if (portion.isEnd) { + return string.substring(portion.indexInMatch) + } + + return string.substring(portion.indexInMatch, portion.indexInMatch + portion.text.length) + }, + + getPortionReplacementNode: function(portion, match, matchIndex) { + + var replacement = this.options.replace || '$&' + var wrapper = this.options.wrap + if (wrapper && wrapper.nodeType) { + // Wrapper has been provided as a stencil-node for us to clone: + var clone = doc.createElement('div') + clone.innerHTML = wrapper.outerHTML || new XMLSerializer().serializeToString(wrapper) + wrapper = clone.firstChild + } + + if (typeof replacement == 'function') { + replacement = replacement(portion, match, matchIndex) + if (replacement && replacement.nodeType) { + return replacement + } + return doc.createTextNode(String(replacement)) + } + + var el = typeof wrapper == 'string' ? doc.createElement(wrapper) : wrapper + replacement = doc.createTextNode( + this.prepareReplacementString( + replacement, portion, match, matchIndex + ) + ) + if (!replacement.data) { + return replacement + } + + if (!el) { + return replacement + } + + el.appendChild(replacement) + return el + }, + + replaceMatch: function(match, startPortion, innerPortions, endPortion) { + + var matchStartNode = startPortion.node + var matchEndNode = endPortion.node + var preceedingTextNode + var followingTextNode + if (matchStartNode === matchEndNode) { + + var node = matchStartNode + if (startPortion.indexInNode > 0) { + // Add `before` text node (before the match) + preceedingTextNode = doc.createTextNode(node.data.substring(0, startPortion.indexInNode)) + node.parentNode.insertBefore(preceedingTextNode, node) + } + + // Create the replacement node: + var newNode = this.getPortionReplacementNode( + endPortion, + match + ) + node.parentNode.insertBefore(newNode, node) + if (endPortion.endIndexInNode < node.length) { // ????? + // Add `after` text node (after the match) + followingTextNode = doc.createTextNode(node.data.substring(endPortion.endIndexInNode)) + node.parentNode.insertBefore(followingTextNode, node) + } + + node.parentNode.removeChild(node) + this.reverts.push(function() { + if (preceedingTextNode === newNode.previousSibling) { + preceedingTextNode.parentNode.removeChild(preceedingTextNode) + } + if (followingTextNode === newNode.nextSibling) { + followingTextNode.parentNode.removeChild(followingTextNode) + } + newNode.parentNode.replaceChild(node, newNode) + }) + return newNode + } else { + // Replace matchStartNode -> [innerMatchNodes...] -> matchEndNode (in that order) + + preceedingTextNode = doc.createTextNode( + matchStartNode.data.substring(0, startPortion.indexInNode) + ) + followingTextNode = doc.createTextNode( + matchEndNode.data.substring(endPortion.endIndexInNode) + ) + var firstNode = this.getPortionReplacementNode( + startPortion, + match + ) + var innerNodes = [] + for (var i = 0, l = innerPortions.length; i < l; ++i) { + var portion = innerPortions[i] + var innerNode = this.getPortionReplacementNode( + portion, + match + ) + portion.node.parentNode.replaceChild(innerNode, portion.node) + this.reverts.push((function(portion, innerNode) { + return function() { + innerNode.parentNode.replaceChild(portion.node, innerNode) + } + }(portion, innerNode))) + innerNodes.push(innerNode) + } + + var lastNode = this.getPortionReplacementNode( + endPortion, + match + ) + matchStartNode.parentNode.insertBefore(preceedingTextNode, matchStartNode) + matchStartNode.parentNode.insertBefore(firstNode, matchStartNode) + matchStartNode.parentNode.removeChild(matchStartNode) + matchEndNode.parentNode.insertBefore(lastNode, matchEndNode) + matchEndNode.parentNode.insertBefore(followingTextNode, matchEndNode) + matchEndNode.parentNode.removeChild(matchEndNode) + this.reverts.push(function() { + preceedingTextNode.parentNode.removeChild(preceedingTextNode) + firstNode.parentNode.replaceChild(matchStartNode, firstNode) + followingTextNode.parentNode.removeChild(followingTextNode) + lastNode.parentNode.replaceChild(matchEndNode, lastNode) + }) + return lastNode + } + } + + } + return exposed +}()) +); + +$.extend( Fibre.fn, { + // Force punctuation & biaodian typesetting rules to be applied. + jinzify: function() { + var origFilterOutSelector= this.filterOutSelector + + this.filterOutSelector += ', jinze' + + this + .replace( + TYPESET.jinze.touwei, + function( portion, match ) { + var mat = match[0] + var text = $.create( '', mat ) + var elem = $.create( 'jinze', 'touwei' ) + + elem.appendChild( text ) + return ( + ( portion.index === 0 && portion.isEnd ) || portion.index === 1 + ) ? elem : '' + } + ) + .replace( + TYPESET.jinze.wei, + function( portion, match ) { + var mat = match[0] + var text = $.create( '', mat ) + var elem = $.create( 'jinze', 'wei' ) + + elem.appendChild( text ) + return portion.index === 0 ? elem : '' + } + ) + .replace( + TYPESET.jinze.tou, + function( portion, match ) { + var mat = match[0] + var text = $.create( '', mat ) + var elem = $.create( 'jinze', 'tou' ) + + elem.appendChild( text ) + return ( + ( portion.index === 0 && portion.isEnd ) || + portion.index === 1 + ) ? elem : '' + } + ) + .replace( + TYPESET.jinze.middle, + function( portion, match ) { + var mat = match[0] + var text = $.create( '', mat ) + var elem = $.create( 'jinze', 'middle' ) + + elem.appendChild( text ) + return (( portion.index === 0 && portion.isEnd ) || portion.index === 1 ) + ? elem : '' + } + ) + + this.filterOutSelector = origFilterOutSelector + return this + }, + + groupify: function() { + this + .wrap( + TYPESET.char.biaodian.group[ 0 ], + $.clone( $.create( 'char_group', 'biaodian cjk' )) + ) + .wrap( + TYPESET.char.biaodian.group[ 1 ], + $.clone( $.create( 'char_group', 'biaodian cjk' )) + ) + return this + }, + + // Implementation of character-level selector + // (字元級選擇器) + charify: function( option ) { + var option = $.extend({ + hanzi: 'individual', + // individual || group || biaodian || none + liga: 'liga', + // liga || none + word: 'group', + // group || punctuation || none + + latin: 'group', + ellinika: 'group', + kirillica: 'group', + kana: 'none', + eonmun: 'none' + // group || individual || none + }, option || {}) + + // CJK and biaodian + if ( option.hanzi === 'group' ) { + this.wrap( TYPESET.char.hanzi.group, $.clone( $.create( 'char_group', 'hanzi cjk' ))) + } + if ( option.hanzi === 'individual' ) { + this.wrap( TYPESET.char.hanzi.individual, $.clone( $.create( 'char', 'hanzi cjk' ))) + } + + if ( option.hanzi === 'individual' || + option.hanzi === 'biaodian' || + option.liga === 'liga' + ) { + if ( option.hanzi !== 'none' ) { + this.replace( + TYPESET.char.biaodian.all, + function( portion, match ) { + var mat = match[0] + var text = $.create( '', mat ) + var clazz = 'biaodian cjk ' + ( + mat.match( TYPESET.char.biaodian.open ) ? 'open' : + mat.match( TYPESET.char.biaodian.close ) ? 'close end' : + mat.match( TYPESET.char.biaodian.end ) ? 'end' : '' + ) + var elem = $.create( 'char', clazz ) + var unicode = mat.charCodeAt( 0 ).toString( 16 ) + + elem.setAttribute( 'unicode', unicode ) + elem.appendChild( text ) + return elem + } + ) + } + + this.replace( + option.liga === 'liga' ? TYPESET.char.biaodian.liga : + new RegExp( '(' + UNICODE.biaodian.liga + ')', 'g' ), + function( portion, match ) { + var mat = match[0] + var text = $.create( '', mat ) + var elem = $.create( 'char', 'biaodian liga cjk' ) + var unicode = mat.charCodeAt( 0 ).toString( 16 ) + + elem.setAttribute( 'unicode', unicode ) + elem.appendChild( text ) + return elem + } + ) + } + + // Western languages (word-level) + if ( option.word !== 'none' ) { + this.wrap( TYPESET.char.word, $.clone( $.create( 'word' ))) + } + + // Western languages (alphabet-level) + if ( option.latin !== 'none' || + option.ellinika !== 'none' || + option.kirillica !== 'none' + ) { + this.wrap( TYPESET.char.punct.all, $.clone( $.create( 'char', 'punct' ))) + } + if ( option.latin === 'individual' ) { + this.wrap( TYPESET.char.alphabet.latin, $.clone( $.create( 'char', 'alphabet latin' ))) + } + if ( option.ellinika === 'individual' ) { + this.wrap( TYPESET.char.alphabet.ellinika, $.clone( $.create( 'char', 'alphabet ellinika greek' ))) + } + if ( option.kirillica === 'individual' ) { + this.wrap( TYPESET.char.alphabet.kirillica, $.clone( $.create( 'char', 'alphabet kirillica cyrillic' ))) + } + return this + } +}) + +Han.find = Fibre + +void [ + 'replace', + 'wrap', + 'revert', + 'jinzify', + 'charify' +].forEach(function( method ) { + Han.fn[ method ] = function() { + if ( !this.finder ) { + // Share the same selector + this.finder = Han.find( this.context ) + } + + this.finder[ method ]( arguments[ 0 ], arguments[ 1 ] ) + return this + } +}) + +var Locale = {} + +function writeOnCanvas( text, font ) { + var canvas = $.create( 'canvas' ) + var context + + canvas.width = '50' + canvas.height = '20' + canvas.style.display = 'none' + + body.appendChild( canvas ) + + context = canvas.getContext( '2d' ) + context.textBaseline = 'top' + context.font = '15px ' + font + ', sans-serif' + context.fillStyle = 'black' + context.strokeStyle = 'black' + context.fillText( text, 0, 0 ) + + return [ canvas, context ] +} + +function detectFont( treat, control, text ) { + var treat = treat + var control = control + var text = text || '辭Q' + var ret + + try { + control = writeOnCanvas( text, control || 'sans-serif' ) + treat = writeOnCanvas( text, treat ) + + for ( var j = 1; j <= 20; j++ ) { + for ( var i = 1; i <= 50; i++ ) { + if ( + ret !== 'undefined' && + treat[1].getImageData(i, j, 1, 1).data[3] !== control[1].getImageData(i, j, 1, 1).data[3] + ) { + ret = true + break + } else if ( ret ) { + break + } + + if ( i === 50 && j === 20 && !ret ) { + ret = false + } + } + } + + // Remove and clean from memory + $.remove( control[0] ) + $.remove( treat[0] ) + control = null + treat = null + + return ret + } catch ( e ) { + return false + } +} + +Locale.detectFont = detectFont + +Locale.support = (function() { + + var PREFIX = 'Webkit Moz ms'.split(' ') + + // Create an element for feature detecting + // (in `testCSSProp`) + var elem = $.create( '_' ) + var exposed = {} + + function testCSSProp( prop ) { + var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1) + var allProp = ( prop + ' ' + PREFIX.join( ucProp + ' ' ) + ucProp ).split(' ') + var ret + + allProp.forEach(function( prop ) { + if ( typeof elem.style[ prop ] === 'string' ) { + ret = true + } + }) + return ret || false + } + + function injectElementWithStyle( rule, callback ) { + var fakeBody = body || $.create( 'body' ) + var div = $.create( 'div' ) + var container = body ? div : fakeBody + var callback = typeof callback === 'function' ? callback : function() {} + var style, ret, docOverflow + + style = [ '' ].join('') + + container.innerHTML += style + fakeBody.appendChild( div ) + + if ( !body ) { + fakeBody.style.background = '' + fakeBody.style.overflow = 'hidden' + docOverflow = root.style.overflow + + root.style.overflow = 'hidden' + root.appendChild( fakeBody ) + } + + // Callback + ret = callback( container, rule ) + + // Remove the injected scope + $.remove( container ) + if ( !body ) { + root.style.overflow = docOverflow + } + return !!ret + } + + function getStyle( elem, prop ) { + var ret + + if ( window.getComputedStyle ) { + ret = document.defaultView.getComputedStyle( elem, null ).getPropertyValue( prop ) + } else if ( elem.currentStyle ) { + // for IE + ret = elem.currentStyle[ prop ] + } + return ret + } + + return { + ruby: (function() { + var ruby = $.create( 'ruby' ) + var rt = $.create( 'rt' ) + var rp = $.create( 'rp' ) + var ret + + ruby.appendChild( rp ) + ruby.appendChild( rt ) + root.appendChild( ruby ) + + // Browsers that support ruby hide the `` via `display: none` + ret = ( + getStyle( rp, 'display' ) === 'none' || + // but in IE, `` has `display: inline` + // so, the test needs other conditions: + getStyle( ruby, 'display' ) === 'ruby' && + getStyle( rt, 'display' ) === 'ruby-text' + ) ? true : false + + // Remove and clean from memory + root.removeChild( ruby ) + ruby = null + rt = null + rp = null + + return ret + })(), + + fontface: (function() { + var ret + + injectElementWithStyle( + '@font-face { font-family: font; src: url("//"); }', + function( node, rule ) { + var style = $.qsa( 'style', node )[0] + var sheet = style.sheet || style.styleSheet + var cssText = sheet ? + ( sheet.cssRules && sheet.cssRules[0] ? + sheet.cssRules[0].cssText : sheet.cssText || '' + ) : '' + + ret = /src/i.test( cssText ) && + cssText.indexOf( rule.split(' ')[0] ) === 0 + } + ) + + return ret + })(), + + // Address feature support test for `unicode-range` via + // detecting whether it's Arial (supported) or + // Times New Roman (not supported). + unicoderange: (function() { + var ret + + injectElementWithStyle( + '@font-face{font-family:test-for-unicode-range;src:local(Arial),local("Droid Sans")}@font-face{font-family:test-for-unicode-range;src:local("Times New Roman"),local(Times),local("Droid Serif");unicode-range:U+270C}', + function() { + ret = !Locale.detectFont( + 'test-for-unicode-range', // treatment group + 'Arial, "Droid Sans"', // control group + 'Q' // ASCII characters only + ) + } + ) + return ret + })(), + + columnwidth: testCSSProp( 'columnWidth' ), + + textemphasis: testCSSProp( 'textEmphasis' ), + + writingmode: testCSSProp( 'writingMode' ) + } +})() + +Locale.initCond = function( target ) { + var target = target || root + var ret = '' + var clazz + + for ( var feature in Locale.support ) { + clazz = ( Locale.support[ feature ] ? '' : 'no-' ) + feature + + target.classList.add( clazz ) + ret += clazz + ' ' + } + return ret +} + +/** + * Create and return a new `` element + * according to the given contents + */ +function createNormalRu( $rb, $rt, attr ) { + var $ru = $.create( 'ru' ) + var $rt = $.clone( $rt ) + var attr = attr || {} + + if ( Array.isArray( $rb )) { + $ru.innerHTML = $rb.map(function( rb ) { + if (typeof rb == 'undefined') { return '' } + return rb.outerHTML + }).join('') + } else { + $ru.appendChild( $.clone( $rb )) + } + + $ru.appendChild( $rt ) + attr.annotation = $rt.textContent + $.setAttr( $ru, attr ) + return $ru +} + +/** + * Create and return a new `` element + * in Zhuyin form + */ +function createZhuyinRu( $rb, $rt ) { + var $rb = $.clone( $rb ) + + // Create an element to return + var $ru = $.create( 'ru' ) + var $zhuyin = $.create( 'zhuyin' ) + var $yin = $.create( 'yin' ) + var $diao = $.create( 'diao' ) + + // #### Explanation #### + // * `zhuyin`: the entire phonetic annotation + // * `yin`: the plain pronunciation (w/out tone) + // * `diao`: the tone + // * `form`: the combination of the pronunciation + // * `len`: the text length of `yin` + var zhuyin = $rt.textContent + var yin, diao, form, len + + yin = zhuyin.replace( TYPESET.zhuyin.diao, '' ) + len = yin ? yin.length : 0 + diao = zhuyin + .replace( yin, '' ) + .replace( /[\u02C5]/g, '\u02C7' ) + .replace( /[\u030D]/g, '\u0358' ) + + form = zhuyin.replace( TYPESET.zhuyin.form, function( s, j, y ) { + return [ + s ? 'S' : null, + j ? 'J' : null, + y ? 'Y' : null + ].join('') + }) + // - + // - + // - + // - + // - + // - + // - + $diao.innerHTML = diao + $yin.innerHTML = yin + $zhuyin.appendChild( $yin ) + $zhuyin.appendChild( $diao ) + + $ru.appendChild( $rb ) + $ru.appendChild( $zhuyin ) + + // Finally, set up the necessary attribute + // and return the new `` + $.setAttr( $ru, { + zhuyin: '', + diao: diao, + length: len, + form: form + }) + return $ru +} + +/** + * Normalisation rendering mechanism + */ +$.extend( Locale, { + + // Render and normalise the given context by routine: + // + // > ruby > u, ins > s, del > em + // + renderElem: function( context ) { + this.renderRuby( context ) + this.renderDecoLine( context ) + this.renderDecoLine( context, 's, del' ) + this.renderEm( context ) + }, + + // Traverse target elements (those with text-decoration + // -line) to see if we should address spacing in + // between for semantic presentation. + renderDecoLine: function( context, target ) { + var target = target || 'u, ins' + var $target = $.qsa( target, context ) + var rTarget = new RegExp( '^(' + target.replace(/\,\s?/g, '|') + ')$', 'ig' ) + + $target + .forEach(function( elem ) { + var next + + // Ignore all `` and comments in between + do { + next = ( next || elem ).nextSibling + if ( !next ) return + } while ( $.isIgnorable( next )) + + if ( next.nodeName.match( rTarget )) { + next.classList.add( 'adjacent' ) + } + }) + }, + + // Traverse target elements to render Hanzi emphasis marks + // and skip that in punctuation + renderEm: function( context, target ) { + var method = target ? 'qsa' : 'tag' + var target = target || 'em' + var $target = $[ method ]( target, context ) + + $target + .forEach(function( elem ) { + var $elem = Fibre( elem ) + + if ( !Locale.support.textemphasis ) { + $elem.jinzify() + } + + $elem + .groupify() + .charify( Locale.support.textemphasis ? { + hanzi: 'biaodian', + word: 'punctuation' + } : { + latin: 'individual', + ellinika: 'individual', + kirillica: 'individual' + }) + }) + }, + + // Address normalisation for both simple and complex + // rubies + renderRuby: function( context, target ) { + var method = target ? 'qsa' : 'tag' + var target = target || 'ruby' + var $target = $[ method ]( target, context ) + var $simpClaElem = $.qsa( target + ', rtc', context ) + + // First of all, simplify semantic classes + $simpClaElem + .forEach(function( elem ) { + var clazz = elem.classList + + if ( clazz.contains( 'pinyin' )) { + clazz.add( 'romanization' ) + } else if ( clazz.contains( 'mps' )) { + clazz.add( 'zhuyin' ) + } + + if ( clazz.contains( 'romanization' )) { + clazz.add( 'annotation' ) + } + }) + + // Deal with `` + $target + .forEach(function( ruby ) { + var clazz = ruby.classList + + var condition = ( + !Locale.support.ruby || + clazz.contains( 'zhuyin') || + clazz.contains( 'complex' ) || + clazz.contains( 'rightangle' ) + ) + + var frag, $cloned, $rb, $ru, maxspan, hruby + + if ( !condition ) return + + // Apply document fragment here to avoid + // continuously pointless re-paint + frag = $.create( '!' ) + frag.appendChild( $.clone( ruby )) + $cloned = $.qsa( target, frag )[0] + + // 1. Simple ruby polyfill for, um, Firefox; + // 2. Zhuyin polyfill for all. + if ( !Locale.support.ruby || clazz.contains( 'zhuyin' )) { + + $ + .tag( 'rt', $cloned ) + .forEach(function( rt ) { + var $rb = $.create( '!' ) + var airb = [] + var irb + + // Consider the previous nodes the implied + // ruby base + do { + irb = ( irb || rt ).previousSibling + + if ( !irb || irb.nodeName.match( /(r[ubt])/i )) break + + $rb.insertBefore( $.clone( irb ), $rb.firstChild ) + airb.push( irb ) + } while ( !irb.nodeName.match( /(r[ubt])/i )) + // Create a real `` to append. + $ru = clazz.contains( 'zhuyin' ) ? + createZhuyinRu( $rb, rt ) : createNormalRu( $rb, rt ) + + // Replace the ruby text with the new ``, + // and remove the original implied ruby base(s) + try { + rt.parentNode.replaceChild( $ru, rt ) + + airb + .forEach(function( irb ) { + $.remove( irb ) + }) + } catch ( e ) {} + }) + } + + // 3. Complex ruby polyfill + // - Double-lined annotation; + // - Right-angled annotation. + if ( clazz.contains( 'complex' ) || clazz.contains( 'rightangle' )) { + $rb = $ru = $.tag( 'rb', $cloned ) + maxspan = $rb.length + + // First of all, deal with Zhuyin containers + // individually + // + // Note that we only support one single Zhuyin + // container in each complex ruby + !function( rtc ) { + if ( !rtc ) return + + $ru = $ + .tag( 'rt', rtc ) + .map(function( rt, i ) { + if ( !$rb[ i ] ) return + var ret = createZhuyinRu( $rb[ i ], rt ) + + try { + $rb[ i ].parentNode.replaceChild( ret, $rb[ i ] ) + } catch ( e ) {} + return ret + }) + + // Remove the container once it's useless + $.remove( rtc ) + ruby.setAttribute( 'rightangle', '' ) + }( $cloned.querySelector( 'rtc.zhuyin' )) + + // Then, normal annotations other than Zhuyin + $ + .qsa( 'rtc:not(.zhuyin)', $cloned ) + .forEach(function( rtc, order ) { + var ret + ret = $ + .tag( 'rt', rtc ) + .map(function( rt, i ) { + var rbspan = Number( rt.getAttribute( 'rbspan' ) || 1 ) + var span = 0 + var aRb = [] + var rb, ret + + if ( rbspan > maxspan ) { + rbspan = maxspan + } + + do { + try { + rb = $ru.shift() + aRb.push( rb ) + } catch (e) {} + if (typeof rb == 'undefined') { break } + span += Number( rb.getAttribute( 'span' ) || 1 ) + } while ( rbspan > span ) + + if ( rbspan < span ) { + if ( aRb.length > 1 ) { + console.error( 'An impossible `rbspan` value detected.', ruby ) + return + } + aRb = $.tag( 'rb', aRb[0] ) + $ru = aRb.slice( rbspan ).concat( $ru ) + aRb = aRb.slice( 0, rbspan ) + span = rbspan + } + + ret = createNormalRu( aRb, rt, { + 'class': clazz, + span: span, + order: order + }) + + try { + aRb[0].parentNode.replaceChild( ret, aRb.shift()) + aRb.forEach(function( rb ) { + $.remove( rb ) + }) + } catch (e) {} + + return ret + }) + $ru = ret + // Remove the container once it's useless + $.remove( rtc ) + }) + } + // Create a new fake `` element so the + // style sheets will render it as a polyfill, + // which also helps to avoid the UA style. + // + // (The ‘H’ stands for ‘Han’, by the way) + hruby = $.create( 'hruby' ) + hruby.innerHTML = frag.firstChild.innerHTML + + // Copy all attributes onto it + $.setAttr( hruby, ruby.attributes ) + hruby.normalize() + + // Finally, replace it + ruby.parentNode.replaceChild( hruby, ruby ) + }) + } + + // ### TODO list ### + // + // * Debug mode + // * Better error-tolerance +}) + +Han.normalize = Locale +Han.localize = Locale +Han.support = Locale.support +Han.detectFont = Locale.detectFont + +Han.fn.initCond = function() { + this.condition.classList.add( 'han-js-rendered' ) + Han.normalize.initCond( this.condition ) + return this +} + +void [ + 'Elem', + 'DecoLine', + 'Em', + 'Ruby' +].forEach(function( elem ) { + var method = 'render' + elem + + Han.fn[ method ] = function( target ) { + Han.normalize[ method ]( this.context, target ) + return this + } +}) + +$.extend( Han.support, { + // Assume that all devices support Heiti for we + // use `sans-serif` to do the comparison. + heiti: true, + // 'heiti-gb': true, + + songti: Han.detectFont( '"Han Songti"' ), + 'songti-gb': Han.detectFont( '"Han Songti GB"' ), + + kaiti: Han.detectFont( '"Han Kaiti"' ), + // 'kaiti-gb': Han.detectFont( '"Han Kaiti GB"' ), + + fangsong: Han.detectFont( '"Han Fangsong"' ) + // 'fangsong-gb': Han.detectFont( '"Han Fangsong GB"' ) +}) + +var QUERY_HWS_AS_FIRST_CHILD = '* > hws:first-child, * > wbr:first-child + hws, wbr:first-child + wbr + hws' + +//// Disabled `Node.normalize()` for temp due to +//// issue below in IE11. +//// See: http://stackoverflow.com/questions/22337498/why-does-ie11-handle-node-normalize-incorrectly-for-the-minus-symbol +var isNodeNormalizeNormal = (function() { + var div = $.create( 'div' ) + + div.appendChild( $.create( '', '0-' )) + div.appendChild( $.create( '', '2' )) + div.normalize() + + return div.firstChild.length !== 2 + })(), + + hws + +hws = $.create( 'hws' ) +hws.innerHTML = ' ' + +$.extend( Han, { + isNodeNormalizeNormal: isNodeNormalizeNormal, + + renderHWS: function( context, strict ) { + var context = context || document + var mode = strict ? 'strict' : 'base' + var finder = Han.find( context ) + + // Elements to be filtered according to the + // HWS rendering mode + if ( strict ) { + finder.filterOut( 'textarea, code, kbd, samp, pre', true ) + } else { + finder.filterOut( 'textarea', true ) + } + + finder + .replace( Han.TYPESET.hws[ mode ][0], '$1$2' ) + .replace( Han.TYPESET.hws[ mode ][1], '$1$2' ) + + // Deal with `' 字'`, `" 字"` => `'字'`, `"字"` + .replace( /(['"]+)(.+?)\1/ig, '$1$2$1' ) + + // Convert text nodes `` into real element nodes + .replace( '', function() { + return $.clone( hws ) + }) + + // Deal with: + // `漢zi` => `漢zi` + $ + .qsa( QUERY_HWS_AS_FIRST_CHILD, context ) + .forEach(function( firstChild ) { + var parent = firstChild.parentNode + var target = parent.firstChild + + // Skip all `` and comments + while ( $.isIgnorable( target )) { + target = target.nextSibling + + if ( !target ) return + } + + // The ‘first-child’ of DOM is different from + // the ones of QSA, could be either an element + // or a text fragment, but the latter one is + // not what we want. We don't want comments, + // either. + while ( target.nodeName === 'HWS' ) { + $.remove( target, parent ) + + target = parent.parentNode.insertBefore( $.clone( hws ), parent ) + parent = parent.parentNode + + if ( isNodeNormalizeNormal ) { + parent.normalize() + } + + // This is for extreme circumstances, i.e., + // `漢zi` => + // `漢zi` + if ( target !== parent.firstChild ) { + break + } + } + }) + + // Normalise nodes we messed up with + if ( isNodeNormalizeNormal ) { + context.normalize() + } + + // Return the finder instance for future usage + return finder + } +}) + +$.extend( Han.fn, { + HWS: null, + + renderHWS: function( strict ) { + Han.renderHWS( this.context, strict ) + + this.HWS = $.tag( 'hws', this.context ) + return this + }, + + revertHWS: function() { + this.HWS.forEach(function( hws ) { + $.remove( hws ) + }) + return this + } +}) + +Han.renderJiya = function( context ) { + var context = context || document + var finder = [ Han.find( context ) ] + + finder[ 0 ].filterOut( 'textarea, code, kbd, samp, pre, jinze, em', true ) + finder[ 0 ].groupify() + + $ + .qsa( 'char_group.biaodian', context ) + .forEach(function( elem ) { + finder.push( + Han( elem ) + .charify({ + hanzi: 'biaodian', + liga: 'liga', + word: 'none', + latin: 'none', + ellinika: 'none', + kirillica: 'none' + }) + ) + }) + return finder +} + +$.extend( Han.fn, { + jiya: null, + + renderJiya: function() { + this.jiya = Han.renderJiya( this.context ) + return this + }, + + revertJiya: function() { + try { + this.jiya.revert( 'all' ) + } catch ( e ) {} + return this + } +}) + +var mdot + +mdot = $.create( 'char', 'biaodian cjk middle' ) +mdot.setAttribute( 'unicode', 'b7' ) + +Han.correctBasicBD = function( context, all ) { + if ( Han.support.unicoderange && !all ) return + + var context = context || document + var finder + + finder = Han.find( context ) + + finder + .wrap( /\u00B7/g, $.clone( mdot )) + .charify({ + liga: 'liga', + hanzi: 'none', + word: 'none', + latin: 'none', + ellinika: 'none', + kirillica: 'none' + }) +} + +$.extend( Han.fn, { + basicBD: null, + + correctBasicBD: function( all ) { + this.basicBD = Han.correctBasicBD( this.context, all ) + return this + }, + + revertBasicBD: function() { + try { + this.basicBD.revert( 'all' ) + } catch (e) {} + return this + } +}) + +var QUERY_RU_W_ANNO = 'ru[annotation]' +var SELECTOR_TO_IGNORE = 'textarea, code, kbd, samp, pre' + +var isCombLigaNormal = (function() { + var fakeBody = body || $.create( 'body' ) + var div = $.create( 'div' ) + var control = $.create( 'span' ) + var container = body ? div : fakeBody + var treat, docOverflow, ret + + if ( !body ) { + fakeBody.style.background = '' + fakeBody.style.overflow = 'hidden' + docOverflow = root.style.overflow + + root.style.overflow = 'hidden' + root.appendChild( fakeBody ) + } else { + body.appendChild( container ) + } + + control.innerHTML = 'i̍' + control.style.fontFamily = 'sans-serif' + control.style.display = 'inline-block' + + treat = $.clone( control ) + treat.style.fontFamily = '"Romanization Sans"' + + container.appendChild( control ) + container.appendChild( treat ) + + ret = control.clientWidth !== treat.clientWidth + $.remove( container ) + + if ( !body ) { + root.style.overflow = docOverflow + } + return ret +})() + +var aCombLiga = Han.TYPESET[ 'display-as' ][ 'comb-liga-pua' ] +var aInaccurateChar = Han.TYPESET[ 'inaccurate-char' ] + +var charCombLiga = $.create( 'char', 'comb-liga' ) +var charCombLigaInner = $.create( 'inner' ) + +$.extend( Han, { + isCombLigaNormal: isCombLigaNormal, + + substCombLigaWithPUA: function( context ) { + if ( isCombLigaNormal ) return + + var context = context || document + var finder = Han.find( context ) + + finder.filterOut( SELECTOR_TO_IGNORE, true ) + + aCombLiga + .forEach(function( pattern ) { + finder + .replace( + new RegExp( pattern[ 0 ], 'ig' ), + function( portion, match ) { + var ret = $.clone( charCombLiga ) + var inner = $.clone( charCombLigaInner ) + + // Put the original content in an inner container + // for better presentational effect of hidden text + inner.innerHTML = match[ 0 ] + ret.appendChild( inner ) + ret.setAttribute( 'display-as', pattern[ 1 ] ) + return portion.index === 0 ? ret : '' + } + ) + }) + + $ + .qsa( QUERY_RU_W_ANNO, context ) + .forEach(function( ru ) { + var annotation = ru.getAttribute( 'annotation' ) + + aCombLiga + // Latin vowels only + .slice( 0, 5 ) + .forEach(function( pattern ) { + annotation = annotation.replace( + new RegExp( pattern[ 0 ], 'ig' ), pattern[ 1 ] + ) + }) + ru.setAttribute( 'annotation', annotation ) + }) + return finder + }, + + substInaccurateChar: function( context ) { + var context = context || document + var finder = Han.find( context ) + + finder.filterOut( SELECTOR_TO_IGNORE, true ) + aInaccurateChar + .forEach(function( pattern ) { + finder + .replace( + new RegExp( pattern[ 0 ], 'ig' ), + pattern[ 1 ] + ) + }) + } +}) + +$.extend( Han.fn, { + 'comb-liga': null, + 'inaccurate-char': null, + + substCombLigaWithPUA: function() { + this['comb-liga'] = Han.substCombLigaWithPUA( this.context ) + return this + }, + + revertCombLigaWithPUA: function() { + try { + this['comb-liga'].revert( 'all' ) + } catch (e) {} + return this + }, + + substInaccurateChar: function() { + this['inaccurate-char'] = Han.substInaccurateChar( this.context ) + return this + }, + + revertInaccurateChar: function() { + try { + this['inaccurate-char'].revert( 'all' ) + } catch (e) {} + return this + } +}) + +window.addEventListener( 'DOMContentLoaded', function() { + var initContext + + // Use the shortcut under the default situation + if ( root.classList.contains( 'han-init' )) { + Han.init() + + // Consider ‘a configured context’ the special + // case of the default situation. Will have to + // replace the `Han.init` with the instance as + // well (for future usage). + } else if ( initContext = document.querySelector( '.han-init-context' )) { + Han.init = Han( initContext ).render() + } +}) + +// AMD +if ( typeof define === 'function' && define.amd ) { + define(function() { return Han }) + +// Expose to global namespace +} else if ( typeof noGlobalNS === 'undefined' || noGlobalNS === false ) { + window.Han = Han +} + +return Han +}); + diff --git a/v3.1.0/han.min.css b/v3.1.0/han.min.css new file mode 100644 index 00000000..a704af5f --- /dev/null +++ b/v3.1.0/han.min.css @@ -0,0 +1,6 @@ +@charset "UTF-8"; + +/*! 漢字標準格式 v3.1.0 | MIT License | css.hanzi.co */ +/*! Han.css: the CSS typography framework optimised for Hanzi */ + +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{line-height:1.3;-webkit-font-smoothing:subpixel-antialiased}ol,ul{padding-left:2em}blockquote,figure{margin-left:2em;margin-right:2em}address{font-style:inherit}pre{white-space:pre;word-wrap:normal}a{text-decoration:inherit}em:lang(ja),em:lang(zh){-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;font-style:inherit;border-bottom:2px dotted;padding-bottom:.05em;border-bottom-width:-webkit-calc(0px);padding-bottom:-webkit-calc(0px)}em:lang(ja){-moz-text-emphasis:filled sesame;-webkit-text-emphasis:filled sesame;text-emphasis:filled sesame;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}b,dfn:lang(ja),dfn:lang(zh),strong{font-weight:bolder}cite:lang(ja),cite:lang(zh),dfn:lang(ja),dfn:lang(zh){font-style:inherit}q{quotes:"\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019"}q:lang(zh){quotes:"\300c" "\300d" "\300e" "\300f" "\300c" "\300d" "\300e" "\300f" "\300c" "\300d" "\300e" "\300f"}q:lang(en),q:lang(zh-CN){quotes:"\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019"}q:lang(en-GB){quotes:"\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d" "\2018" "\2019" "\201c" "\201d"}q:before{content:open-quote}q:after{content:close-quote}q:lang(ja):after,q:lang(ja):before{content:none}code,kbd,pre,samp{font-family:monospace,monospace,sans-serif}i:lang(ja),i:lang(zh),var:lang(ja),var:lang(zh){font-style:inherit}.han-js-rendered del+del.adjacent,.han-js-rendered del+s.adjacent,.han-js-rendered ins.adjacent,.han-js-rendered s+del.adjacent,.han-js-rendered s+s.adjacent,.han-js-rendered u.adjacent,del+del,del+s,ins+ins,ins+u,s+del,s+s,u+ins,u+u{margin-left:.125em}ins,u{padding-bottom:.05em;border-bottom:1px solid;text-decoration:none}ruby :after,ruby :before{line-height:normal}ruby>rt:not(:empty):before{content:"\ff08"}ruby>rt:not(:empty):after{content:"\ff09"}ruby>rb+rtc:before{content:"\ff08"}ruby>rtc:after{content:"\ff0c"}ruby>rtc:last-of-type:after{content:"\ff09"}ruby>rt:after,ruby>rt:before{display:inline-block;overflow:hidden;vertical-align:middle;height:0;width:0}ruby>rt:not(:empty):after,ruby>rt:not(:empty):before{height:-moz-calc(1.3em);width:-moz-calc(1em)}.han-js-rendered del+del,.han-js-rendered del+s,.han-js-rendered ins+ins,.han-js-rendered ins+u,.han-js-rendered s+del,.han-js-rendered s+s,.han-js-rendered u+ins,.han-js-rendered u+u{margin-left:auto}.han-js-rendered em:lang(ja),.han-js-rendered em:lang(zh){padding-bottom:auto;border-bottom-width:0}.no-textemphasis em:lang(ja),.no-textemphasis em:lang(zh){line-height:2}.no-textemphasis em:lang(ja) char,.no-textemphasis em:lang(zh) char{position:relative;font-style:inherit}.no-textemphasis em:lang(ja) char:after,.no-textemphasis em:lang(zh) char:after{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;text-decoration:none;-moz-transform:scale(.5);-ms-transform:scale(.5);-webkit-transform:scale(.5);transform:scale(.5);position:absolute;left:50%;top:0;margin-left:-250%;overflow:hidden;display:inline-block;height:1em;width:500%;line-height:1;text-align:center;text-indent:0;font-family:Georgia,"Times New Roman",Arial,!important}em:lang(ja) char.biaodian,em:lang(ja) char.punct,em:lang(zh) char.biaodian,em:lang(zh) char.punct{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none}.no-textemphasis em:lang(ja) char.biaodian:after,.no-textemphasis em:lang(ja) char.punct:after,.no-textemphasis em:lang(zh) char.biaodian:after,.no-textemphasis em:lang(zh) char.punct:after{content:none!important}.no-textemphasis em:lang(zh) char:after{margin-top:1em;content:"\25cf"}.no-textemphasis em:lang(ja) char:after{margin-top:-.7em;content:"\fe45"}hruby{display:inline;line-height:2}hruby rp{display:none}hruby ru[annotation]>rt{display:inline-block;height:0;width:0;font:0/0 hidden-text}hruby ru{position:relative;display:inline-block;text-indent:0}hruby ru:before,hruby zhuyin{-moz-transform:scale(.55);-ms-transform:scale(.55);-webkit-transform:scale(.55);transform:scale(.55);-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;line-height:normal;text-decoration:none;text-indent:0;position:absolute;display:inline-block}hruby ru[annotation]{text-align:center}hruby ru[annotation]:before{left:-265%;vertical-align:top;height:1em;width:600%;content:attr(annotation);line-height:1;text-align:center;text-indent:0}hruby[rightangle] ru[annotation]:before{left:-250%}hruby ru[zhuyin]{display:inline-block;position:relative;width:1.8em;text-align:left}hruby ru[zhuyin] zhuyin{right:.2em;top:0;height:2.7em;width:.8em;line-height:.9;white-space:pre-wrap;word-break:break-all}hruby ru[zhuyin] diao{position:absolute;right:-.9em;top:0;display:inline-block;width:1em}hruby ru[zhuyin]:empty,hruby ru[zhuyin][length="0"]{width:auto}hruby ru[zhuyin]:empty zhuyin,hruby ru[zhuyin][length="0"] zhuyin{display:none}hruby ru[zhuyin][length="1"] zhuyin{margin-top:.125em}hruby ru[zhuyin][length="1"] diao{margin-top:-.35em}hruby ru[zhuyin][length="2"] zhuyin{margin-top:-.175em}hruby ru[zhuyin][length="2"] diao{margin-top:.5em}hruby ru[zhuyin][length="3"] zhuyin{margin-top:-.45em}hruby ru[zhuyin][length="3"] diao{margin-top:1.3em}hruby ru[zhuyin][diao="˙"] diao{right:-.35em}hruby ru[zhuyin][diao="˙"][length="1"] diao{margin-top:-.5em}hruby ru[zhuyin][diao="˙"][length="2"] diao{margin-top:-.3em}hruby ru[zhuyin][diao="˙"][length="3"] diao{margin-top:-.25em}hruby ru[zhuyin][diao="˪"] diao,hruby ru[zhuyin][diao="˫"] diao{-moz-transform:scale(1.2);-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2);margin-right:-.25em}hruby ru[zhuyin][diao="󳆴"] diao,hruby ru[zhuyin][diao="󳆵"] diao,hruby ru[zhuyin][diao="󳆶"] diao,hruby ru[zhuyin][diao="󳆷"] diao,hruby ru[zhuyin][diao^="ㆴ"] diao,hruby ru[zhuyin][diao^="ㆵ"] diao,hruby ru[zhuyin][diao^="ㆶ"] diao,hruby ru[zhuyin][diao^="ㆷ"] diao{top:20%;margin-right:-.3em}hruby ru[annotation]:before,hruby[rightangle] ru[annotation][order="1"]:before{top:-.5em}hruby ru[order="1"]:before,hruby[rightangle] ru[annotation][order="0"]:before{bottom:-.4em;top:auto}hruby[rightangle] ru[annotation]:before{margin-left:-.4em}@media screen and (-webkit-min-device-pixel-ratio:1.5),(min-resolution:192dpi){hruby yin{-moz-transform:scale(.8);-ms-transform:scale(.8);-webkit-transform:scale(.8);transform:scale(.8);display:inline-block}hruby ru[zhuyin][diao="˪"] diao,hruby ru[zhuyin][diao="˫"] diao{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}hruby ru[zhuyin][diao="˙"] diao{-moz-transform:scale(.8);-ms-transform:scale(.8);-webkit-transform:scale(.8);transform:scale(.8);top:.125em}}jinze{display:inline-block;text-indent:0}@font-face{font-family:"Han Heiti";src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Lantinghei SC"),local("Heiti SC"),local("Heiti TC"),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Droid Sans Fallback")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Heiti";src:local(YuGothic),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro")}@font-face{font-family:"Han Heiti CNS";src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Heiti TC"),local("Microsoft Jhenghei"),local("Heiti SC"),local("Lantinghei SC"),local("Microsoft Yahei"),local("Droid Sans Fallback")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Heiti CNS";src:local(YuGothic),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro")}@font-face{font-family:"Han Heiti GB";src:local("Hiragino Sans GB"),local("Lantinghei SC"),local("Heiti SC"),local("Microsoft Yahei"),local("Droid Sans Fallback")}@font-face{font-family:"Han Heiti";font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Lantinghei SC Demibold"),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local("Heiti SC Medium"),local("Heiti TC Medium"),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local("Microsoft YaHei Bold"),local("Microsoft Jhenghei Bold"),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Heiti";font-weight:600;src:local("YuGothic Bold"),local("Hiragino Kaku Gothic ProN W6"),local("Hiragino Kaku Gothic Pro W6"),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:"Han Heiti CNS";font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local("Lantinghei SC Demibold"),local("Microsoft YaHei Bold"),local("Heiti SC Medium"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Heiti CNS";font-weight:600;src:local("YuGothic Bold"),local(YuGo-Bold),local("Hiragino Kaku Gothic ProN W6"),local("Hiragino Kaku Gothic Pro W6"),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:"Han Heiti GB";font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei SC Demibold"),local("Microsoft YaHei Bold"),local("Heiti SC Medium"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{font-family:"Han Heiti";src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Lantinghei SC"),local("Heiti SC"),local("Heiti TC"),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:"Han Heiti";font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Lantinghei SC Demibold"),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local("Heiti SC Medium"),local("Heiti TC Medium"),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local("Microsoft YaHei Bold"),local("Microsoft Jhenghei Bold"),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold);unicode-range:U+270C}@font-face{font-family:"Han Heiti CNS";src:local("Hiragino Sans GB"),local("Lantinghei TC"),local("Heiti TC"),local("Microsoft Jhenghei"),local("Heiti SC"),local("Lantinghei SC"),local("Microsoft Yahei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:"Han Heiti CNS";font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local("Lantinghei SC Demibold"),local("Heiti SC Medium"),local("Microsoft YaHei Bold"),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold);unicode-range:U+270C}@font-face{font-family:"Han Heiti GB";src:local("Hiragino Sans GB"),local("Lantinghei SC"),local("Heiti SC"),local("Microsoft Yahei"),local("Droid Sans Fallback");unicode-range:U+270C}@font-face{font-family:"Han Songti";src:local("Songti SC"),local("Songti TC"),local(STSong),local("Lisong Pro"),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Songti";src:local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho")}@font-face{font-family:"Han Songti CNS";src:local("Songti TC"),local("Lisong Pro"),local("Songti SC"),local(STSong),local(PMingLiU),local(SimSun)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Songti CNS";src:local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro")}@font-face{font-family:"Han Songti GB";src:local("Songti SC"),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:"Han Songti";font-weight:600;src:local("STSongti SC Bold"),local("STSongti TC Bold"),local(STSongti-SC-Bold),local(STSongti-TC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Songti";font-weight:600;src:local("YuMincho Demibold"),local("Hiragino Mincho ProN W6"),local("Hiragino Mincho Pro W6"),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:"Han Songti CNS";font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Songti CNS";font-weight:600;src:local("YuMincho Demibold"),local("Hiragino Mincho ProN W6"),local("Hiragino Mincho Pro W6"),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:"Han Songti GB";font-weight:600;src:local("STSongti SC Bold"),local(STSongti-SC-Bold)}@font-face{font-family:"Han Songti";src:local("Songti SC"),local("Songti TC"),local(STSongti),local("Lisong Pro"),local("MS Mincho"),local(SimSun),local(PMingLiU);unicode-range:U+270C}@font-face{font-family:"Han Songti";font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:"Han Songti CNS";src:local("Songti TC"),local("Lisong Pro"),local("Songti SC"),local(STSong),local("MS Mincho"),local(PMingLiU),local(SimSun);unicode-range:U+270C}@font-face{font-family:"Han Songti CNS";font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:"Han Songti GB";src:local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+270C}@font-face{font-family:cursive;src:local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Kaiti";src:local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Kaiti CNS";src:local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Kaiti GB";src:local("Kaiti SC"),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{font-family:"Han Kaiti";font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{font-family:"Han Kaiti GB";font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Fangsong";src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Fangsong CNS";src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Fangsong GB";src:local(STFangsong),local(FangSong)}@font-face{font-family:"Biaodian Sans";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Serif";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Sans";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Serif";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Serif CNS";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Sans GB";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Sans";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Serif";src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Sans";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Serif";src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Serif CNS";src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Sans GB";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Sans";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Serif";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Yakumono Sans";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Arial Unicode MS"),local("MS Gothic");unicode-range:U+2014}@font-face{font-family:"Yakumono Serif";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho"),local("Microsoft Yahei");unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Sans";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Serif";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Sans CNS";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Serif CNS";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Sans GB";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Serif GB";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Sans";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Serif";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local("MS Mincho"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Yakumono Sans";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic");unicode-range:U+2026}@font-face{font-family:"Yakumono Serif";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Sans";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Serif";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Sans CNS";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Serif CNS";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Sans GB";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Serif GB";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Sans GB";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Lisong Pro"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:"Biaodian Sans";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Serif";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Sans";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Serif";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Sans CNS";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Serif CNS";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Sans GB";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Serif GB";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Sans";src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Serif";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU),local("MS Gothic");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Serif CNS";src:local(STSongti-TC-Regular),local("Lisong Pro"),local("Heiti TC"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:"Biaodian Pro Serif CNS";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Sans GB";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Songti SC"),local(STSongti),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Sans";src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Pro Serif";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Pro Serif CNS";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Pro Sans GB";src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Basic";src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:"Biaodian Sans";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Biaodian Serif";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Biaodian Pro Sans";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Biaodian Pro Serif";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Biaodian Pro Sans CNS";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Biaodian Pro Serif CNS";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Biaodian Pro Sans GB";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Biaodian Pro Serif GB";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Latin Italic Serif";src:local("Georgia Italic"),local("Times New Roman Italic"),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:"Latin Italic Serif";font-weight:700;src:local("Georgia Bold Italic"),local("Times New Roman Bold Italic"),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:"Latin Italic Sans";src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:"Latin Italic Sans";font-weight:700;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral TF Sans";src:local(Skia),local("Neutraface 2 Text"),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral TF Serif";src:local(Georgia),local("Hoefler Text"),local("Big Caslon")}@font-face{unicode-range:U+0030-0039;font-family:"Numeral TF Italic Serif";src:local("Georgia Italic"),local("Hoefler Text Italic"),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Sans";src:local("Helvetica Neue"),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Italic Sans";src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Italic Sans";font-weight:700;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Serif";src:local(Palatino),local("Palatino Linotype"),local("Times New Roman")}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Italic Serif";src:local("Palatino Italic"),local("Palatino Italic Linotype"),local("Times New Roman Italic"),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Italic Serif";font-weight:700;src:local("Palatino Bold Italic"),local("Palatino Bold Italic Linotype"),local("Times New Roman Bold Italic"),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{font-family:"Numeral TF Sans";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral TF Serif";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral TF Italic Serif";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral LF Sans";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral LF Italic Sans";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral LF Italic Sans";font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral LF Serif";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral LF Italic Serif";src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:"Numeral LF Italic Serif";font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype");unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:"Zhuyin Kaiti"}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:"Zhuyin Heiti";src:local("Hiragino Sans GB"),local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype")}@font-face{font-family:"Zhuyin Heiti";src:local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype");unicode-range:U+3127}@font-face{src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype");font-family:"Zhuyin Heiti";unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff?v3.1.0) format("woff"),url(./font/han.otf?v3.1.0) format("opentype");font-family:"Romanization Sans";unicode-range:U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}article strong :lang(ja-Latn),article strong :lang(zh-Latn),article strong :not(:lang(zh)):not(:lang(ja)),article strong:lang(ja-Latn),article strong:lang(zh-Latn),article strong:not(:lang(zh)):not(:lang(ja)),html :lang(ja-Latn),html :lang(zh-Latn),html :not(:lang(zh)):not(:lang(ja)),html:lang(ja-Latn),html:lang(zh-Latn),html:not(:lang(zh)):not(:lang(ja)){font-family:"Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}[lang*=Hant],[lang=zh-HK],[lang=zh-TW],[lang^=zh],article strong:lang(zh),article strong:lang(zh-Hant),html:lang(zh),html:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}[lang*=Hans],[lang=zh-CN],article strong:lang(zh-CN),article strong:lang(zh-Hans),html:lang(zh-CN),html:lang(zh-Hans){font-family:"Biaodian Pro Sans GB","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}[lang^=ja],article strong:lang(ja),html:lang(ja){font-family:"Yakumono Sans","Helvetica Neue",Helvetica,Arial,sans-serif}article blockquote i :lang(ja-Latn),article blockquote i :lang(zh-Latn),article blockquote i :not(:lang(zh)):not(:lang(ja)),article blockquote i:lang(ja-Latn),article blockquote i:lang(zh-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote var :lang(ja-Latn),article blockquote var :lang(zh-Latn),article blockquote var :not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(ja-Latn),article blockquote var:lang(zh-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}article blockquote i:lang(zh-CN),article blockquote i:lang(zh-Hans),article blockquote var:lang(zh-CN),article blockquote var:lang(zh-Hans){font-family:"Biaodian Pro Sans GB","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}article blockquote i:lang(ja),article blockquote var:lang(ja){font-family:"Yakumono Sans","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,sans-serif}article figure blockquote :lang(ja-Latn),article figure blockquote :lang(zh-Latn),article figure blockquote :not(:lang(zh)):not(:lang(ja)),article figure blockquote:lang(ja-Latn),article figure blockquote:lang(zh-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)),figure blockquote :lang(ja-Latn),figure blockquote :lang(zh-Latn),figure blockquote :not(:lang(zh)):not(:lang(ja)),figure blockquote:lang(ja-Latn),figure blockquote:lang(zh-Latn),figure blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Songti",cursive,serif}article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant),figure blockquote:lang(zh),figure blockquote:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Songti",serif}article figure blockquote:lang(zh-CN),article figure blockquote:lang(zh-Hans),figure blockquote:lang(zh-CN),figure blockquote:lang(zh-Hans){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Songti GB",serif}article figure blockquote:lang(ja),figure blockquote:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",serif}article blockquote :lang(ja-Latn),article blockquote :lang(zh-Latn),article blockquote :not(:lang(zh)):not(:lang(ja)),article blockquote:lang(ja-Latn),article blockquote:lang(zh-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Kaiti",cursive,serif}article blockquote:lang(zh),article blockquote:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}article blockquote:lang(zh-CN),article blockquote:lang(zh-Hans){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}article blockquote:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",cursive,serif}i :lang(ja-Latn),i :lang(zh-Latn),i :not(:lang(zh)):not(:lang(ja)),i:lang(ja-Latn),i:lang(zh-Latn),i:not(:lang(zh)):not(:lang(ja)),var :lang(ja-Latn),var :lang(zh-Latn),var :not(:lang(zh)):not(:lang(ja)),var:lang(ja-Latn),var:lang(zh-Latn),var:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti",cursive,serif}i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}i:lang(zh-CN),i:lang(zh-Hans),var:lang(zh-CN),var:lang(zh-Hans){font-family:"Biaodian Pro Serif GB","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}i:lang(ja),var:lang(ja){font-family:"Yakumono Serif","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman",cursive,serif}code :lang(ja-Latn),code :lang(zh-Latn),code :not(:lang(zh)):not(:lang(ja)),code:lang(ja-Latn),code:lang(zh-Latn),code:not(:lang(zh)):not(:lang(ja)),kbd :lang(ja-Latn),kbd :lang(zh-Latn),kbd :not(:lang(zh)):not(:lang(ja)),kbd:lang(ja-Latn),kbd:lang(zh-Latn),kbd:not(:lang(zh)):not(:lang(ja)),pre :lang(ja-Latn),pre :lang(zh-Latn),pre :not(:lang(zh)):not(:lang(ja)),pre:lang(ja-Latn),pre:lang(zh-Latn),pre:not(:lang(zh)):not(:lang(ja)),samp :lang(ja-Latn),samp :lang(zh-Latn),samp :not(:lang(zh)):not(:lang(ja)),samp:lang(ja-Latn),samp:lang(zh-Latn),samp:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,"Han Heiti",monospace,monospace,sans-serif}code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS",Menlo,Consolas,Courier,"Zhuyin Heiti","Han Heiti",monospace,monospace,sans-serif}code:lang(zh-CN),code:lang(zh-Hans),kbd:lang(zh-CN),kbd:lang(zh-Hans),pre:lang(zh-CN),pre:lang(zh-Hans),samp:lang(zh-CN),samp:lang(zh-Hans){font-family:"Biaodian Pro Sans GB",Menlo,Consolas,Courier,"Han Heiti GB",monospace,monospace,sans-serif}code:lang(ja),kbd:lang(ja),pre:lang(ja),samp:lang(ja){font-family:"Yakumono Sans",Menlo,Consolas,Courier,monospace,monospace,sans-serif}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7],hruby ru[annotation]:before,hruby ru[zhuyin] zhuyin,hruby ru[zhuyin] zhuyin diao,hruby.romanization rt,html,ruby ru[annotation]:before,ruby ru[zhuyin] zhuyin,ruby ru[zhuyin] zhuyin diao,ruby.romanization rt{-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga";-webkit-font-feature-settings:"liga";font-feature-settings:"liga"}i,var{font-style:inherit}hruby ru[zhuyin] zhuyin diao,ruby ru[zhuyin] zhuyin diao{font-family:"Zhuyin Kaiti",cursive,serif}hruby ru[annotation]:before,hruby.romanization rt,ruby ru[annotation]:before,ruby.romanization rt{font-family:"Romanization Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}.no-kaiti i,.no-kaiti var{padding-bottom:.05em;border-bottom:3px double lightgrey}article{line-height:1.7}article li,article p{text-align:justify;text-justify:inter-ideograph}article h1+blockquote,article h1+h2,article h1+h3,article h1+h4,article h1+h5,article h1+h6,article h1+ol,article h1+p,article h1+section>blockquote:first-child,article h1+section>h2:first-child,article h1+section>h3:first-child,article h1+section>h4:first-child,article h1+section>h5:first-child,article h1+section>h6:first-child,article h1+section>ol:first-child,article h1+section>p:first-child,article h1+section>ul:first-child,article h1+ul,article h2+blockquote,article h2+h2,article h2+h3,article h2+h4,article h2+h5,article h2+h6,article h2+ol,article h2+p,article h2+section>blockquote:first-child,article h2+section>h2:first-child,article h2+section>h3:first-child,article h2+section>h4:first-child,article h2+section>h5:first-child,article h2+section>h6:first-child,article h2+section>ol:first-child,article h2+section>p:first-child,article h2+section>ul:first-child,article h2+ul,article h3+blockquote,article h3+h3,article h3+h4,article h3+h5,article h3+h6,article h3+ol,article h3+p,article h3+section>blockquote:first-child,article h3+section>h3:first-child,article h3+section>h4:first-child,article h3+section>h5:first-child,article h3+section>h6:first-child,article h3+section>ol:first-child,article h3+section>p:first-child,article h3+section>ul:first-child,article h3+ul,article h4+blockquote,article h4+h4,article h4+h5,article h4+h6,article h4+ol,article h4+p,article h4+section>blockquote:first-child,article h4+section>h4:first-child,article h4+section>h5:first-child,article h4+section>h6:first-child,article h4+section>ol:first-child,article h4+section>p:first-child,article h4+section>ul:first-child,article h4+ul,article h5+blockquote,article h5+h5,article h5+h6,article h5+ol,article h5+p,article h5+section>blockquote:first-child,article h5+section>h5:first-child,article h5+section>h6:first-child,article h5+section>ol:first-child,article h5+section>p:first-child,article h5+section>ul:first-child,article h5+ul,article h6+blockquote,article h6+h6,article h6+ol,article h6+p,article h6+section>blockquote:first-child,article h6+section>h6:first-child,article h6+section>ol:first-child,article h6+section>p:first-child,article h6+section>ul:first-child,article h6+ul{margin-top:-1em}.poem-like p,p.poem-like{margin-left:2em}@media only screen and (max-width:480px){.poem-like p,p.poem-like{margin-left:1em}}article blockquote{margin-right:0}@media only screen and (max-width:480px){article blockquote{margin-left:1em}}figure blockquote{margin:0}blockquote blockquote{margin-left:1em;margin-right:1em}article blockquote blockquote{margin-right:0}@media only screen and (max-width:480px){blockquote,figure{margin-left:1em;margin-right:1em}}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7]{font-family:"Biaodian Basic","Han Heiti"}hws{display:inline;visibility:hidden;font-family:Arial,sans-serif!important;font-size:.89em}code hws,kbd hws,ol>hws,pre hws,samp hws,table>hws,tbody>hws,tfoot>hws,thead>hws,tr>hws,ul>hws{display:none}char_group .close:not(:last-child),char_group .open:not(:last-child),char_group [unicode="3001"]:not(:last-child),char_group [unicode="3002"]:not(:last-child),char_group [unicode=ff08]:not(:last-child),char_group [unicode=ff0c]:not(:last-child){letter-spacing:-.5em}char_group [unicode="3001"]:lang(zh-Hant):not(:last-child),char_group [unicode="3002"]:lang(zh-Hant):not(:last-child),char_group [unicode=ff08]:lang(zh-Hant):not(:last-child),char_group [unicode=ff0c]:lang(zh-Hant):not(:last-child){letter-spacing:inherit}char_group [unicode="3001"]:lang(zh-Hant)+.open,char_group [unicode="3002"]:lang(zh-Hant)+.open,char_group [unicode="30fb"]+[unicode="300c"],char_group [unicode="30fb"]+[unicode="300e"],char_group [unicode=b7]+[unicode="300c"],char_group [unicode=b7]+[unicode="300e"],char_group [unicode=ff08]:lang(zh-Hant)+.open,char_group [unicode=ff0c]:lang(zh-Hant)+.open{margin-left:-.5em}char_group .liga+[unicode="300c"],char_group .liga+[unicode="300e"]{margin-left:-.25em}char[display-as]{position:relative;display:inline-block}char[display-as] inner{color:transparent}char[display-as]:after{position:absolute;left:0;display:inline-block;content:attr(display-as)}char[display-as].comb-liga:after{font-family:"Romanization Sans","Zhuyin Kaiti"} \ No newline at end of file diff --git a/v3.1.0/han.min.js b/v3.1.0/han.min.js new file mode 100644 index 00000000..1d46d8b1 --- /dev/null +++ b/v3.1.0/han.min.js @@ -0,0 +1,4 @@ +/*! 漢字標準格式 v3.1.0 | MIT License | css.hanzi.co */ +/*! Han.css: the CSS typography framework optimised for Hanzi */ + +void function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=b(a,!0):b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";function c(a,b){var c,d=p.create("canvas");return d.width="50",d.height="20",d.style.display="none",i.appendChild(d),c=d.getContext("2d"),c.textBaseline="top",c.font="15px "+b+", sans-serif",c.fillStyle="black",c.strokeStyle="black",c.fillText(a,0,0),[d,c]}function d(a,b,d){var e,a=a,b=b,d=d||"\u8fadQ";try{b=c(d,b||"sans-serif"),a=c(d,a);for(var f=1;20>=f;f++)for(var g=1;50>=g;g++){if("undefined"!==e&&a[1].getImageData(g,f,1,1).data[3]!==b[1].getImageData(g,f,1,1).data[3]){e=!0;break}if(e)break;50!==g||20!==f||e||(e=!1)}return p.remove(b[0]),p.remove(a[0]),b=null,a=null,e}catch(h){return!1}}function e(a,b,c){var d=p.create("ru"),b=p.clone(b),c=c||{};return Array.isArray(a)?d.innerHTML=a.map(function(a){return"undefined"==typeof a?"":a.outerHTML}).join(""):d.appendChild(p.clone(a)),d.appendChild(b),c.annotation=b.textContent,p.setAttr(d,c),d}function f(a,b){var c,d,e,f,a=p.clone(a),g=p.create("ru"),h=p.create("zhuyin"),i=p.create("yin"),j=p.create("diao"),k=b.textContent;return c=k.replace(o.zhuyin.diao,""),f=c?c.length:0,d=k.replace(c,"").replace(/[\u02C5]/g,"\u02c7").replace(/[\u030D]/g,"\u0358"),e=k.replace(o.zhuyin.form,function(a,b,c){return[a?"S":null,b?"J":null,c?"Y":null].join("")}),j.innerHTML=d,i.innerHTML=c,h.appendChild(i),h.appendChild(j),g.appendChild(a),g.appendChild(h),p.setAttr(g,{zhuyin:"",diao:d,length:f,form:e}),g}var g=a.document,h=g.documentElement,i=g.body,j="3.1.0",k=["initCond","renderElem","renderJiya","renderHWS","correctBasicBD","substCombLigaWithPUA"],l=function(a,b){return new l.fn.init(a,b)},m=function(){return arguments[0]&&(this.context=arguments[0]),arguments[1]&&(this.condition=arguments[1]),this};l.version=j,l.fn=l.prototype={version:j,constructor:l,context:i,condition:h,routine:k,init:m,setRoutine:function(a){return Array.isArray(a)&&(this.routine=a),this},render:function(a){var b=this,a=Array.isArray(a)?a:this.routine;return a.forEach(function(a){try{"string"==typeof a?b[a]():Array.isArray(a)&&b[a.shift()].apply(b,a)}catch(c){}}),this}},l.fn.init.prototype=l.fn,l.init=function(){return l.init=l().render()};var n={punct:{base:"[\u2026,.;:!?\u203d_]",sing:"[\u2010-\u2014\u2026]",middle:"[\\/~\\-&\u2010-\u2014_]",open:"['\"\u2018\u201c\\(\\[\xa1\xbf\u2e18\xab\u2039\u201a\u201c\u201e]",close:"['\"\u201d\u2019\\)\\]\xbb\u203a\u201b\u201d\u201f]",end:"['\"\u201d\u2019\\)\\]\xbb\u203a\u201b\u201d\u201f\u203c\u203d\u2047-\u2049,.;:!?]"},biaodian:{base:"[\ufe30\uff0e\u3001\uff0c\u3002\uff1a\uff1b\uff1f\uff01\u30fc]",liga:"[\u2014\u2026\u22ef]",middle:"[\xb7\uff3c\uff0f\uff0d\u30a0\uff06\u30fb\uff3f]",open:"[\u300c\u300e\u300a\u3008\uff08\u3014\uff3b\uff5b\u3010\u3016]",close:"[\u300d\u300f\u300b\u3009\uff09\u3015\uff3d\uff5d\u3011\u3017]",end:"[\u300d\u300f\u300b\u3009\uff09\u3015\uff3d\uff5d\u3011\u3017\ufe30\uff0e\u3001\uff0c\u3002\uff1a\uff1b\uff1f\uff01\u30fc]"},hanzi:{base:"[\u4e00-\u9fff\u3400-\u4db5\u31c0-\u31e3\u3007\ufa0e\ufa0f\ufa11\ufa13\ufa14\ufa1f\ufa21\ufa23\ufa24\ufa27-\ufa29]|[\ud800-\udbff][\udc00-\udfff]",desc:"[\u2ff0-\u2ffa]",radical:"[\u2f00-\u2fd5\u2e80-\u2ef3]"},latin:{base:"[A-Za-z0-9\xc0-\xff\u0100-\u017f\u0180-\u024f\u2c60-\u2c7f\ua720-\ua7ff\u1e00-\u1eff]",combine:"[\u0300-\u0341\u1dc0-\u1dff]"},ellinika:{base:"[0-9\u0370-\u03ff\u1f00-\u1fff]",combine:"[\u0300-\u0345\u1dc0-\u1dff]"},kirillica:{base:"[0-9\u0400-\u0482\u048a-\u04ff\u0500-\u052f\ua640-\ua66e\ua67e-\ua697]",combine:"[\u0483-\u0489\u2de0-\u2dff\ua66f-\ua67d\ua69f]"},kana:{base:"[\u30a2\u30a4\u30a6\u30a8\u30aa-\u30fa\u3042\u3044\u3046\u3048\u304a-\u3094\u309f\u30ff]|\ud82c[\udc00-\udc01]",small:"[\u3041\u3043\u3045\u3047\u3049\u30a1\u30a3\u30a5\u30a7\u30a9\u3063\u3083\u3085\u3087\u308e\u3095\u3096\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u31f0-\u31ff]",combine:"[\u3099-\u309c]",half:"[\uff66-\uff9f]",mark:"[\u30a0\u309d\u309e\u30fb-\u30fe]"},eonmun:{base:"[\uac00-\ud7a3]",letter:"[\u1100-\u11ff\u314f-\u3163\u3131-\u318e\ua960-\ua97c\ud7b0-\ud7fb]",half:"[\uffa1-\uffdc]"},zhuyin:{base:"[\u3105-\u312d\u31a0-\u31ba]",initial:"[\u3105-\u3119\u312a-\u312c\u31a0-\u31a3]",medial:"[\u3127-\u3129]","final":"[\u311a-\u3129\u312d\u31a4-\u31b3\u31b8-\u31ba]",tone:"[\u02d9\u02ca\u02c5\u02c7\u02cb\u02ea\u02eb]",ruyun:"[\u31b4-\u31b7][\u0358\u030d]?"}},o=function(){var a="[\\x20\\t\\r\\n\\f]",b=n.punct.open,c=(n.punct.close,n.punct.end),d=n.punct.middle,e=n.punct.sing,f=b+"|"+c+"|"+d,g=n.biaodian.open,h=n.biaodian.close,i=n.biaodian.end,j=n.biaodian.middle,k=n.biaodian.liga+"{2}",l=g+"|"+i+"|"+j,m=n.kana.base+n.kana.combine+"?",o=n.kana.small+n.kana.combine+"?",p=(n.kana.half,n.eonmun.base+"|"+n.eonmun.letter),q=n.eonmun.half,r=n.hanzi.base+"|"+n.hanzi.desc+"|"+n.hanzi.radical+"|"+m,s=n.ellinika.combine,t=n.latin.base+s+"*",u=n.ellinika.base+s+"*",v=n.kirillica.combine,w=n.kirillica.base+v+"*",x=t+"|"+u+"|"+w,y="['\u2019]",z=r+"|("+x+"|"+y+")+",A=n.zhuyin.initial,B=n.zhuyin.medial,C=n.zhuyin["final"],D=n.zhuyin.tone+"|"+n.zhuyin.ruyun;return{"char":{punct:{all:new RegExp("("+f+")","g"),open:new RegExp("("+b+")","g"),end:new RegExp("("+c+")","g"),sing:new RegExp("("+e+")","g")},biaodian:{all:new RegExp("("+l+")","g"),open:new RegExp("("+g+")","g"),close:new RegExp("("+h+")","g"),end:new RegExp("("+i+")","g"),liga:new RegExp("("+k+")","g"),group:[new RegExp("("+g+"|"+j+"|"+i+"){2,}","g"),new RegExp("("+k+g+")","g")]},hanzi:{individual:new RegExp("("+r+")","g"),group:new RegExp("("+r+")+","g")},word:new RegExp("("+t+"|"+u+"|"+w+"|"+f+")+","ig"),alphabet:{latin:new RegExp("("+t+")","ig"),ellinika:new RegExp("("+u+")","ig"),kirillica:new RegExp("("+w+")","ig"),kana:new RegExp("("+m+")","g"),smallkana:new RegExp("("+o+")","g"),eonmun:new RegExp("("+p+")","g"),halfeonmun:new RegExp("("+q+")","g")}},jinze:{touwei:new RegExp("("+g+"+)("+z+")("+i+"+)","ig"),tou:new RegExp("("+g+"+)("+z+")","ig"),wei:new RegExp("("+z+")("+i+"+)","ig"),middle:new RegExp("("+z+")("+j+")("+z+")","ig")},zhuyin:{form:new RegExp("^\u02d9?("+A+")?("+B+")?("+C+")?("+D+")?$"),diao:new RegExp("("+D+")","g")},hws:{base:[new RegExp("("+r+")("+x+"|"+b+")","ig"),new RegExp("("+x+"|"+c+")("+r+")","ig")],strict:[new RegExp("("+r+")"+a+"?("+x+"|"+b+")","ig"),new RegExp("("+x+"|"+c+")"+a+"?("+r+")","ig")]},"display-as":{"ja-font-for-hant":["\u67e5 \u67fb","\u555f \u5553","\u9109 \u9115","\u503c \u5024","\u6c61 \u6c5a"],"comb-liga-pua":[["a[\u030d\u0358]","\udb80\udc61"],["e[\u030d\u0358]","\udb80\udc65"],["i[\u030d\u0358]","\udb80\udc69"],["o[\u030d\u0358]","\udb80\udc6f"],["u[\u030d\u0358]","\udb80\udc75"],["\u31b4[\u030d\u0358]","\udb8c\uddb4"],["\u31b5[\u030d\u0358]","\udb8c\uddb5"],["\u31b6[\u030d\u0358]","\udb8c\uddb6"],["\u31b7[\u030d\u0358]","\udb8c\uddb7"]]},"inaccurate-char":[["[\u2022\u2027]","\xb7"],["\u22ef\u22ef","\u2026\u2026"],["\u2500\u2500","\u2014\u2014"],["\u2035","\u2018"],["\u2032","\u2019"],["\u2036","\u201c"],["\u2033","\u201d"]]}}();l.UNICODE=n,l.TYPESET=o,l.UNICODE.cjk=l.UNICODE.hanzi,l.UNICODE.greek=l.UNICODE.ellinika,l.UNICODE.cyrillic=l.UNICODE.kirillica,l.UNICODE.hangul=l.UNICODE.eonmun,l.TYPESET["char"].cjk=l.TYPESET["char"].hanzi,l.TYPESET["char"].alphabet.greek=l.TYPESET["char"].alphabet.ellinika,l.TYPESET["char"].alphabet.cyrillic=l.TYPESET["char"].alphabet.kirillica,l.TYPESET["char"].alphabet.hangul=l.TYPESET["char"].alphabet.eonmun;var p={id:function(a,b){return(b||g).getElementById(a)},tag:function(a,b){return this.makeArray((b||g).getElementsByTagName(a))},qsa:function(a,b){return this.makeArray((b||g).querySelectorAll(a))},create:function(a,b){var a="!"===a?g.createDocumentFragment():""===a?g.createTextNode(b||""):g.createElement(a);try{b&&(a.className=b)}catch(c){}return a},clone:function(a,b){return a.cloneNode(b||!0)},remove:function(a,b){return(b||a.parentNode).removeChild(a)},setAttr:function(a,b){if("object"==typeof b){var c=b.length;if("object"==typeof b[0]&&"name"in b[0])for(var d=0;c>d;d++)void 0!==b[d].value&&a.setAttribute(b[d].name,b[d].value);else for(var e in b)b.hasOwnProperty(e)&&void 0!==b[e]&&a.setAttribute(e,b[e]);return a}},isIgnorable:function(a){return"WBR"===a.nodeName||a.nodeType===Node.COMMENT_NODE},makeArray:function(a){return Array.prototype.slice.call(a)},extend:function(a,b){var c="object"==typeof a||"function"==typeof a||"object"==typeof b;if(c){for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);return a}}},q=function(b){function c(a,b,c){var d=Element.prototype,e=d.matches||d.mozMatchesSelector||d.msMatchesSelector||d.webkitMatchesSelector;return a instanceof Element?e.call(a,b):c&&/^[39]$/.test(a.nodeType)?!0:!1}var d="0.1.2",e="style, script, head title",f=a||{},g=f.document||void 0;if("undefined"==typeof g)throw new Error("Fibre requires a DOM-supported environment.");var h=function(a){return new h.fn.init(a)};return h.version=d,h.matches=c,h.fn=h.prototype={constructor:h,version:d,context:void 0,contextSelector:null,finder:[],init:function(a){if(!a)throw new Error("A context is required for Fibre to initialise.");return a instanceof Node?this.context=a:"string"==typeof a&&(this.contextSelector=a,this.context=g.querySelector(a)),this},filterElemFn:function(a){return c(a,this.filterSelector,!0)&&!c(a,this.filterOutSelector)},filterSelector:"*",filter:function(a){switch(typeof a){case"string":this.filterSelector=a;break;case"function":this.filterElemFn=a;break;default:return this}return this},filterOutSelector:e,filterOut:function(a,b){switch(typeof a){case"string":"undefined"!=typeof b&&b===!0?this.filterOutSelector+=", "+a:this.filterOutSelector=a;break;default:return this}return this},replace:function(a,c,d){var e=this,d=d||"retain";return e.finder.push(b(e.context,{find:a,replace:c,filterElements:function(a){return e.filterElemFn(a)},portionMode:d})),e},wrap:function(a,c,d){var e=this,d=d||"retain";return e.finder.push(b(e.context,{find:a,wrap:c,filterElements:function(a){return e.filterElemFn(a)},portionMode:d})),e},revert:function(a){var b=this.finder.length,a=Number(a)||(0===a?Number(0):"all"===a?b:1);if("undefined"==typeof b||0===b)return this;a>b&&(a=b);for(var c=a;c>0;c--)this.finder.pop().revert();return this}},h.fn.init.prototype=h.fn,h}(function(){function a(a){return String(a).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function b(){return c.apply(null,arguments)||d.apply(null,arguments)}function c(a,c,e,f,g){if(c&&!c.nodeType&&arguments.length<=2)return!1;var h="function"==typeof e;h&&(e=function(a){return function(b,c){return a(b.text,c.startIndex)}}(e));var i=d(c,{find:a,wrap:h?null:e,replace:h?e:"$"+(f||"&"),prepMatch:function(a,b){if(!a[0])throw"findAndReplaceDOMText cannot handle zero-length matches";if(f>0){var c=a[f];a.index+=a[0].indexOf(c),a[0]=c}return a.endIndex=a.index+a[0].length,a.startIndex=a.index,a.index=b,a},filterElements:g});return b.revert=function(){return i.revert()},!0}function d(a,b){return new e(a,b)}function e(a,b){b.portionMode=b.portionMode||f,this.node=a,this.options=b,this.prepMatch=b.prepMatch||this.prepMatch,this.reverts=[],this.matches=this.search(),this.matches.length&&this.processMatches()}{var f="retain",h="first",i=g;({}).toString}return b.Finder=e,e.prototype={search:function(){var b,c=0,d=this.options.find,e=this.getAggregateText(),f=[];if(d="string"==typeof d?RegExp(a(d),"g"):d,d.global)for(;b=d.exec(e);)f.push(this.prepMatch(b,c++));else(b=e.match(d))&&f.push(this.prepMatch(b,0));return f},prepMatch:function(a,b){if(!a[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return a.endIndex=a.index+a[0].length,a.startIndex=a.index,a.index=b,a},getAggregateText:function(){function a(c){if(3===c.nodeType)return c.data;if(b&&!b(c))return"";var d="";if(c=c.firstChild)do d+=a(c);while(c=c.nextSibling);return d}var b=this.options.filterElements;return a(this.node)},processMatches:function(){var a,b,c,d=this.matches,e=this.node,f=this.options.filterElements,g=[],h=e,i=d.shift(),j=0,k=0,l=0,m=[e];a:for(;;){if(3===h.nodeType&&(!b&&h.length+j>=i.endIndex?b={node:h,index:l++,text:h.data.substring(i.startIndex-j,i.endIndex-j),indexInMatch:j-i.startIndex,indexInNode:i.startIndex-j,endIndexInNode:i.endIndex-j,isEnd:!0}:a&&g.push({node:h,index:l++,text:h.data,indexInMatch:j-i.startIndex,indexInNode:0}),!a&&h.length+j>i.startIndex&&(a={node:h,index:l++,indexInMatch:0,indexInNode:i.startIndex-j,endIndexInNode:i.endIndex-j,text:h.data.substring(i.startIndex-j,i.endIndex-j)}),j+=h.data.length),c=1===h.nodeType&&f&&!f(h),a&&b){if(h=this.replaceMatch(i,a,g,b),j-=b.node.data.length-b.endIndexInNode,a=null,b=null,g=[],i=d.shift(),l=0,k++,!i)break}else if(!c&&(h.firstChild||h.nextSibling)){h.firstChild?(m.push(h),h=h.firstChild):h=h.nextSibling;continue}for(;;){if(h.nextSibling){h=h.nextSibling;break}if(h=m.pop(),h===e)break a}}},revert:function(){for(var a=this.reverts.length;a--;)this.reverts[a]();this.reverts=[]},prepareReplacementString:function(a,b,c){var d=this.options.portionMode;return d===h&&b.indexInMatch>0?"":(a=a.replace(/\$(\d+|&|`|')/g,function(a,b){var d;switch(b){case"&":d=c[0];break;case"`":d=c.input.substring(0,c.startIndex);break;case"'":d=c.input.substring(c.endIndex);break;default:d=c[+b]}return d}),d===h?a:b.isEnd?a.substring(b.indexInMatch):a.substring(b.indexInMatch,b.indexInMatch+b.text.length))},getPortionReplacementNode:function(a,b,c){var d=this.options.replace||"$&",e=this.options.wrap;if(e&&e.nodeType){var f=i.createElement("div");f.innerHTML=e.outerHTML||(new XMLSerializer).serializeToString(e),e=f.firstChild}if("function"==typeof d)return d=d(a,b,c),d&&d.nodeType?d:i.createTextNode(String(d));var g="string"==typeof e?i.createElement(e):e;return d=i.createTextNode(this.prepareReplacementString(d,a,b,c)),d.data&&g?(g.appendChild(d),g):d},replaceMatch:function(a,b,c,d){var e,f,g=b.node,h=d.node;if(g===h){var j=g;b.indexInNode>0&&(e=i.createTextNode(j.data.substring(0,b.indexInNode)),j.parentNode.insertBefore(e,j));var k=this.getPortionReplacementNode(d,a);return j.parentNode.insertBefore(k,j),d.endIndexInNoden;++n){var p=c[n],q=this.getPortionReplacementNode(p,a);p.node.parentNode.replaceChild(q,p.node),this.reverts.push(function(a,b){return function(){b.parentNode.replaceChild(a.node,b)}}(p,q)),m.push(q)}var r=this.getPortionReplacementNode(d,a);return g.parentNode.insertBefore(e,g),g.parentNode.insertBefore(l,g),g.parentNode.removeChild(g),h.parentNode.insertBefore(r,h),h.parentNode.insertBefore(f,h),h.parentNode.removeChild(h),this.reverts.push(function(){e.parentNode.removeChild(e),l.parentNode.replaceChild(g,l),f.parentNode.removeChild(f),r.parentNode.replaceChild(h,r)}),r}},b}());p.extend(q.fn,{jinzify:function(){var a=this.filterOutSelector;return this.filterOutSelector+=", jinze",this.replace(o.jinze.touwei,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","touwei");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}).replace(o.jinze.wei,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","wei");return e.appendChild(d),0===a.index?e:""}).replace(o.jinze.tou,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","tou");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}).replace(o.jinze.middle,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","middle");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}),this.filterOutSelector=a,this},groupify:function(){return this.wrap(o["char"].biaodian.group[0],p.clone(p.create("char_group","biaodian cjk"))).wrap(o["char"].biaodian.group[1],p.clone(p.create("char_group","biaodian cjk"))),this},charify:function(a){var a=p.extend({hanzi:"individual",liga:"liga",word:"group",latin:"group",ellinika:"group",kirillica:"group",kana:"none",eonmun:"none"},a||{});return"group"===a.hanzi&&this.wrap(o["char"].hanzi.group,p.clone(p.create("char_group","hanzi cjk"))),"individual"===a.hanzi&&this.wrap(o["char"].hanzi.individual,p.clone(p.create("char","hanzi cjk"))),("individual"===a.hanzi||"biaodian"===a.hanzi||"liga"===a.liga)&&("none"!==a.hanzi&&this.replace(o["char"].biaodian.all,function(a,b){var c=b[0],d=p.create("",c),e="biaodian cjk "+(c.match(o["char"].biaodian.open)?"open":c.match(o["char"].biaodian.close)?"close end":c.match(o["char"].biaodian.end)?"end":""),f=p.create("char",e),g=c.charCodeAt(0).toString(16);return f.setAttribute("unicode",g),f.appendChild(d),f}),this.replace("liga"===a.liga?o["char"].biaodian.liga:new RegExp("("+n.biaodian.liga+")","g"),function(a,b){var c=b[0],d=p.create("",c),e=p.create("char","biaodian liga cjk"),f=c.charCodeAt(0).toString(16);return e.setAttribute("unicode",f),e.appendChild(d),e})),"none"!==a.word&&this.wrap(o["char"].word,p.clone(p.create("word"))),("none"!==a.latin||"none"!==a.ellinika||"none"!==a.kirillica)&&this.wrap(o["char"].punct.all,p.clone(p.create("char","punct"))),"individual"===a.latin&&this.wrap(o["char"].alphabet.latin,p.clone(p.create("char","alphabet latin"))),"individual"===a.ellinika&&this.wrap(o["char"].alphabet.ellinika,p.clone(p.create("char","alphabet ellinika greek"))),"individual"===a.kirillica&&this.wrap(o["char"].alphabet.kirillica,p.clone(p.create("char","alphabet kirillica cyrillic"))),this}}),l.find=q,void["replace","wrap","revert","jinzify","charify"].forEach(function(a){l.fn[a]=function(){return this.finder||(this.finder=l.find(this.context)),this.finder[a](arguments[0],arguments[1]),this}});var r={};r.detectFont=d,r.support=function(){function b(a){var b,c=a.charAt(0).toUpperCase()+a.slice(1),d=(a+" "+e.join(c+" ")+c).split(" ");return d.forEach(function(a){"string"==typeof f.style[a]&&(b=!0)}),b||!1}function c(a,b){var c,d,e,f=i||p.create("body"),g=p.create("div"),j=i?g:f,b="function"==typeof b?b:function(){};return c=[""].join(""),j.innerHTML+=c,f.appendChild(g),i||(f.style.background="",f.style.overflow="hidden",e=h.style.overflow,h.style.overflow="hidden",h.appendChild(f)),d=b(j,a),p.remove(j),i||(h.style.overflow=e),!!d}function d(b,c){var d;return a.getComputedStyle?d=g.defaultView.getComputedStyle(b,null).getPropertyValue(c):b.currentStyle&&(d=b.currentStyle[c]),d}var e="Webkit Moz ms".split(" "),f=p.create("_");return{ruby:function(){var a,b=p.create("ruby"),c=p.create("rt"),e=p.create("rp");return b.appendChild(e),b.appendChild(c),h.appendChild(b),a="none"===d(e,"display")||"ruby"===d(b,"display")&&"ruby-text"===d(c,"display")?!0:!1,h.removeChild(b),b=null,c=null,e=null,a}(),fontface:function(){var a;return c('@font-face { font-family: font; src: url("//"); }',function(b,c){var d=p.qsa("style",b)[0],e=d.sheet||d.styleSheet,f=e?e.cssRules&&e.cssRules[0]?e.cssRules[0].cssText:e.cssText||"":"";a=/src/i.test(f)&&0===f.indexOf(c.split(" ")[0])}),a}(),unicoderange:function(){var a;return c('@font-face{font-family:test-for-unicode-range;src:local(Arial),local("Droid Sans")}@font-face{font-family:test-for-unicode-range;src:local("Times New Roman"),local(Times),local("Droid Serif");unicode-range:U+270C}',function(){a=!r.detectFont("test-for-unicode-range",'Arial, "Droid Sans"',"Q")}),a}(),columnwidth:b("columnWidth"),textemphasis:b("textEmphasis"),writingmode:b("writingMode")}}(),r.initCond=function(a){var b,a=a||h,c="";for(var d in r.support)b=(r.support[d]?"":"no-")+d,a.classList.add(b),c+=b+" ";return c},p.extend(r,{renderElem:function(a){this.renderRuby(a),this.renderDecoLine(a),this.renderDecoLine(a,"s, del"),this.renderEm(a)},renderDecoLine:function(a,b){var b=b||"u, ins",c=p.qsa(b,a),d=new RegExp("^("+b.replace(/\,\s?/g,"|")+")$","ig");c.forEach(function(a){var b;do if(b=(b||a).nextSibling,!b)return;while(p.isIgnorable(b));b.nodeName.match(d)&&b.classList.add("adjacent")})},renderEm:function(a,b){var c=b?"qsa":"tag",b=b||"em",d=p[c](b,a);d.forEach(function(a){var b=q(a);r.support.textemphasis||b.jinzify(),b.groupify().charify(r.support.textemphasis?{hanzi:"biaodian",word:"punctuation"}:{latin:"individual",ellinika:"individual",kirillica:"individual"})})},renderRuby:function(a,b){var c=b?"qsa":"tag",b=b||"ruby",d=p[c](b,a),g=p.qsa(b+", rtc",a);g.forEach(function(a){var b=a.classList;b.contains("pinyin")?b.add("romanization"):b.contains("mps")&&b.add("zhuyin"),b.contains("romanization")&&b.add("annotation")}),d.forEach(function(a){var c,d,g,h,i,j,k=a.classList,l=!r.support.ruby||k.contains("zhuyin")||k.contains("complex")||k.contains("rightangle");l&&(c=p.create("!"),c.appendChild(p.clone(a)),d=p.qsa(b,c)[0],(!r.support.ruby||k.contains("zhuyin"))&&p.tag("rt",d).forEach(function(a){var b,c=p.create("!"),d=[];do{if(b=(b||a).previousSibling,!b||b.nodeName.match(/(r[ubt])/i))break;c.insertBefore(p.clone(b),c.firstChild),d.push(b)}while(!b.nodeName.match(/(r[ubt])/i));h=k.contains("zhuyin")?f(c,a):e(c,a);try{a.parentNode.replaceChild(h,a),d.forEach(function(a){p.remove(a)})}catch(g){}}),(k.contains("complex")||k.contains("rightangle"))&&(g=h=p.tag("rb",d),i=g.length,!function(b){b&&(h=p.tag("rt",b).map(function(a,b){if(g[b]){var c=f(g[b],a);try{g[b].parentNode.replaceChild(c,g[b])}catch(d){}return c}}),p.remove(b),a.setAttribute("rightangle",""))}(d.querySelector("rtc.zhuyin")),p.qsa("rtc:not(.zhuyin)",d).forEach(function(b,c){var d;d=p.tag("rt",b).map(function(b){var d,f,g=Number(b.getAttribute("rbspan")||1),j=0,l=[];g>i&&(g=i);do{try{d=h.shift(),l.push(d)}catch(m){}if("undefined"==typeof d)break;j+=Number(d.getAttribute("span")||1)}while(g>j);if(j>g){if(l.length>1)return void console.error("An impossible `rbspan` value detected.",a);l=p.tag("rb",l[0]),h=l.slice(g).concat(h),l=l.slice(0,g),j=g}f=e(l,b,{"class":k,span:j,order:c});try{l[0].parentNode.replaceChild(f,l.shift()),l.forEach(function(a){p.remove(a)})}catch(m){}return f}),h=d,p.remove(b)})),j=p.create("hruby"),j.innerHTML=c.firstChild.innerHTML,p.setAttr(j,a.attributes),j.normalize(),a.parentNode.replaceChild(j,a))})}}),l.normalize=r,l.localize=r,l.support=r.support,l.detectFont=r.detectFont,l.fn.initCond=function(){return this.condition.classList.add("han-js-rendered"),l.normalize.initCond(this.condition),this},void["Elem","DecoLine","Em","Ruby"].forEach(function(a){var b="render"+a;l.fn[b]=function(a){return l.normalize[b](this.context,a),this}}),p.extend(l.support,{heiti:!0,songti:l.detectFont('"Han Songti"'),"songti-gb":l.detectFont('"Han Songti GB"'),kaiti:l.detectFont('"Han Kaiti"'),fangsong:l.detectFont('"Han Fangsong"')});var s,t="* > hws:first-child, * > wbr:first-child + hws, wbr:first-child + wbr + hws",u=function(){var a=p.create("div");return a.appendChild(p.create("","0-")),a.appendChild(p.create("","2")),a.normalize(),2!==a.firstChild.length}();s=p.create("hws"),s.innerHTML=" ",p.extend(l,{isNodeNormalizeNormal:u,renderHWS:function(a,b){var a=a||g,c=b?"strict":"base",d=l.find(a);return b?d.filterOut("textarea, code, kbd, samp, pre",!0):d.filterOut("textarea",!0),d.replace(l.TYPESET.hws[c][0],"$1$2").replace(l.TYPESET.hws[c][1],"$1$2").replace(/(['"]+)(.+?)\1/gi,"$1$2$1").replace("",function(){return p.clone(s)}),p.qsa(t,a).forEach(function(a){for(var b=a.parentNode,c=b.firstChild;p.isIgnorable(c);)if(c=c.nextSibling,!c)return;for(;"HWS"===c.nodeName&&(p.remove(c,b),c=b.parentNode.insertBefore(p.clone(s),b),b=b.parentNode,u&&b.normalize(),c===b.firstChild););}),u&&a.normalize(),d}}),p.extend(l.fn,{HWS:null,renderHWS:function(a){return l.renderHWS(this.context,a),this.HWS=p.tag("hws",this.context),this},revertHWS:function(){return this.HWS.forEach(function(a){p.remove(a)}),this}}),l.renderJiya=function(a){var a=a||g,b=[l.find(a)];return b[0].filterOut("textarea, code, kbd, samp, pre, jinze, em",!0),b[0].groupify(),p.qsa("char_group.biaodian",a).forEach(function(a){b.push(l(a).charify({hanzi:"biaodian",liga:"liga",word:"none",latin:"none",ellinika:"none",kirillica:"none"}))}),b},p.extend(l.fn,{jiya:null,renderJiya:function(){return this.jiya=l.renderJiya(this.context),this},revertJiya:function(){try{this.jiya.revert("all")}catch(a){}return this}});var v;v=p.create("char","biaodian cjk middle"),v.setAttribute("unicode","b7"),l.correctBasicBD=function(a,b){if(!l.support.unicoderange||b){var c,a=a||g;c=l.find(a),c.wrap(/\u00B7/g,p.clone(v)).charify({liga:"liga",hanzi:"none",word:"none",latin:"none",ellinika:"none",kirillica:"none"})}},p.extend(l.fn,{basicBD:null,correctBasicBD:function(a){return this.basicBD=l.correctBasicBD(this.context,a),this},revertBasicBD:function(){try{this.basicBD.revert("all")}catch(a){}return this}});var w="ru[annotation]",x="textarea, code, kbd, samp, pre",y=function(){var a,b,c,d=i||p.create("body"),e=p.create("div"),f=p.create("span"),g=i?e:d;return i?i.appendChild(g):(d.style.background="",d.style.overflow="hidden",b=h.style.overflow,h.style.overflow="hidden",h.appendChild(d)),f.innerHTML="i̍",f.style.fontFamily="sans-serif",f.style.display="inline-block",a=p.clone(f),a.style.fontFamily='"Romanization Sans"',g.appendChild(f),g.appendChild(a),c=f.clientWidth!==a.clientWidth,p.remove(g),i||(h.style.overflow=b),c}(),z=l.TYPESET["display-as"]["comb-liga-pua"],A=l.TYPESET["inaccurate-char"],B=p.create("char","comb-liga"),C=p.create("inner");return p.extend(l,{isCombLigaNormal:y,substCombLigaWithPUA:function(a){if(!y){var a=a||g,b=l.find(a);return b.filterOut(x,!0),z.forEach(function(a){b.replace(new RegExp(a[0],"ig"),function(b,c){var d=p.clone(B),e=p.clone(C);return e.innerHTML=c[0],d.appendChild(e),d.setAttribute("display-as",a[1]),0===b.index?d:""})}),p.qsa(w,a).forEach(function(a){var b=a.getAttribute("annotation");z.slice(0,5).forEach(function(a){b=b.replace(new RegExp(a[0],"ig"),a[1])}),a.setAttribute("annotation",b)}),b}},substInaccurateChar:function(a){var a=a||g,b=l.find(a);b.filterOut(x,!0),A.forEach(function(a){b.replace(new RegExp(a[0],"ig"),a[1])})}}),p.extend(l.fn,{"comb-liga":null,"inaccurate-char":null,substCombLigaWithPUA:function(){return this["comb-liga"]=l.substCombLigaWithPUA(this.context),this},revertCombLigaWithPUA:function(){try{this["comb-liga"].revert("all")}catch(a){}return this},substInaccurateChar:function(){return this["inaccurate-char"]=l.substInaccurateChar(this.context),this},revertInaccurateChar:function(){try{this["inaccurate-char"].revert("all")}catch(a){}return this}}),a.addEventListener("DOMContentLoaded",function(){var a;h.classList.contains("han-init")?l.init():(a=g.querySelector(".han-init-context"))&&(l.init=l(a).render())}),"function"==typeof define&&define.amd?define(function(){return l}):("undefined"==typeof b||b===!1)&&(a.Han=l),l}); \ No newline at end of file diff --git a/v3.1.0/hws.html b/v3.1.0/hws.html new file mode 100644 index 00000000..b685c83b --- /dev/null +++ b/v3.1.0/hws.html @@ -0,0 +1,32 @@ +測試・漢字西文混排間隙 — 漢字標準格式

      測試·漢字西文混排間隙

      基本漢字西文混排間隙

      拉丁字母及數字

      研究發現,全球狂銷的蘋果iPad超省電。根據非營利組織EPRI(電力研究中心),iPad一年電費只需1.36美刀(U.S. Dollar)。

      希臘字母

      游離輻射可以區分為高能粒子流與高能電磁波,其中高能粒子流包含α粒子、β粒子(+/−)與中子,高能電磁波包含γ射線、X射線與特定波長的紫外線。每一種粒子或射線的電離能力與穿透性均不同,例如α粒子的電離能力很強,但穿透力非常弱,只要一張紙就能阻隔;γ射線的特性就恰與α粒子相反,其穿透能力非常強,需要幾英呎厚的混凝土才能降低γ射線,但是γ射線的電離能力卻很弱,對生物的影響相對較小。

      西里爾字母

      我有學過українська мова,所以русский язык我可以稍微看得懂。

      完整中日韓表意文字區段支援

      注意:部分擴展區漢字可能不為多數作業系統支援,而顯示為空白方框。安裝花園明朝體可以解決這個問題。

      擴展A:How㐀are㘻you䶵?
      +擴展B:A𠀀b𠄉C𪛖d
      +擴展C:E𪜀f𪶛G𪷼h𪜺I
      +擴展D:j𫝀K𫠝L
      +表意數字零:Θ〇Ω
      +康熙及簡體字部首:⼌Т⿕Я⺃ж⻍ы⻰Ӓ⻳Ӂ
      +表意文字描述字元:⿸Ҕ⿷ẳ⿳

      假名

      歯のEnamelに復元不可能な損害をもたらす。

      組合字(combining character

      天然ê上好!

      Ὅ̴̊̌ηρος̃馬。

      К҉о҈ш҉к҈а҈咪。

      元素邊界的調整

      美國Chicago這架飛船的目的地。

      Europe旅行帶上Dollars +Euró就夠了!

      有註解及機會斷行元素的情況

      不知道是不是like this你用「元件檢閱器」看看。

      多層元素嵌套

      Who do you自以為you are?

      你是咧com啥物plain啦!

      清單

      1. Tissue
      2. 鴨蛋
      3. Eggs
      4. 垃圾袋XL

      非典型情況

      雖然很非典型,但是¿你說不可能嗎?不對哦.

      他罵了一聲¡逼!就走——了.
      +他罵了一句¡逼、逼逼!就走……了.

      為‘什’麼;為“什”麼?

      這是一個句子[漢字123]然後就沒有然後了;
      +這是一個句子[漢123字]然後就沒有然後了;
      +這是一個句子(漢字123)然後就沒有然後了;
      +這是一個句子(漢123字)然後就沒有然後了.

      選項(必填) for example,
      +For example: (必填)選項
      +問題: 這是,答案.

      這是一段包含單'引'號和雙"引"號'單引號'和"雙引號"的文字.
      +單引號'大X中ZZ天'!
      +單引號'大X中ZZ天'和雙引號"大X中Y天"哦!

      不作用的元素

      文字區塊表單

      代碼等元素

      代code碼輸key入board鍵計算機samp輸出示例

      格式pre處理

      注意:在漢字西文混排間隙「基本模式」下,代碼、輸入鍵、計算機輸出示例等元素仍經renderHWS()處理,惟使用樣式表將其下之hws元素隱藏,可藉樣式的改寫來顯示漢字西文混排間隙;「嚴格模式」下,則渲染以上元素。

      \ No newline at end of file diff --git a/v3.1.0/hws.jade b/v3.1.0/hws.jade new file mode 100644 index 00000000..b5b61428 --- /dev/null +++ b/v3.1.0/hws.jade @@ -0,0 +1,156 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='utf-8') + title 測試・漢字西文混排間隙 — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + style. + html { + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + body.test + + article + h1 測試·漢字西文混排間隙 + section#jiben_hws + h2 基本漢字西文混排間隙 + section#latn + h3 拉丁字母及數字 + p + | 研究發現,全球狂銷的蘋果 + span(lang='en') iPad + | 超省電。根據非營利組織 + abbr(lang='en' title='Electric Power Research Institute') EPRI + | (電力研究中心), + span(lang='en') iPad + | 一年電費只需1.36美刀( + span(lang='en') U.S. Dollar + | )。 + section#el + h3 希臘字母 + p 游離輻射可以區分為高能粒子流與高能電磁波,其中高能粒子流包含α粒子、β粒子(+/−)與中子,高能電磁波包含γ射線、X射線與特定波長的紫外線。每一種粒子或射線的電離能力與穿透性均不同,例如α粒子的電離能力很強,但穿透力非常弱,只要一張紙就能阻隔;γ射線的特性就恰與α粒子相反,其穿透能力非常強,需要幾英呎厚的混凝土才能降低γ射線,但是γ射線的電離能力卻很弱,對生物的影響相對較小。 + section#cyrl + h3 西里爾字母 + p + | 我有學過 + span(lang='uk') українська мова + | ,所以 + span(lang='ru') русский язык + | 我可以稍微看得懂。 + section#cjk + h2 完整中日韓表意文字區段支援 + p + strong 注意: + | 部分擴展區漢字可能不為多數作業系統支援,而顯示為空白方框。 + a(href='http://fonts.jp/hanazono/') 安裝花園明朝體 + | 可以解決這個問題。 + p + | 擴展A:How㐀are㘻you䶵?
      + | 擴展B:A𠀀b𠄉C𪛖d
      + | 擴展C:E𪜀f𪶛G𪷼h𪜺I
      + | 擴展D:j𫝀K𫠝L
      + | 表意數字零:Θ〇Ω
      + | 康熙及簡體字部首:⼌Т⿕Я⺃ж⻍ы⻰Ӓ⻳Ӂ
      + | 表意文字描述字元:⿸Ҕ⿷ẳ⿳ + section#kana + h3 假名 + p(lang='ja') + | 歯のEnamelに復元不可能な損害をもたらす。 + section#zuhezi + h2 組合字(combining character) + p(lang='zh-nan-Hant') + | 天然ê上好! + p + | 荷 + span(lang='el') Ὅ̴̊̌ηρος̃ + | 馬。 + p + | 貓 + span(lang='ru') К҉о҈ш҉к҈а҈ + | 咪。 + section#yuansu_bianjie_de_tiaozheng + h2 元素邊界的調整 + p + u.pn 美國 + span(lang='en') Chicago + em 是 + | 這架飛船的目的地。 + p + | 去Europe旅行帶上Dollars + | Euró就夠了! + section#comment + h3 有註解及機會斷行元素的情況 + p 不知道是不是like this你用「元件檢閱器」看看。 + section#multiple + h3 多層元素嵌套 + p(lang='en') + | Who do you自以為you are? + p(lang='zh-nan-Hant') + | 你是咧com啥物plain啦! + section#list + h3 清單 + ol + li Tissue + li: s 鴨蛋 + li Eggs + li: strong 垃圾袋XL + section#atypical + h2 非典型情況 + p 雖然很非典型,但是¿你說不可能嗎?不對哦. + p + | 他罵了一聲¡逼!就走——了.
      + | 他罵了一句¡逼、逼逼!就走……了. + p 為‘什’麼;為“什”麼? + p + | 這是一個句子[漢字123]然後就沒有然後了;
      + | 這是一個句子[漢123字]然後就沒有然後了;
      + | 這是一個句子(漢字123)然後就沒有然後了;
      + | 這是一個句子(漢123字)然後就沒有然後了. + p + | 選項(必填) for example,
      + | For example: (必填)選項
      + | 問題: 這是,答案. + p + | 這是一段包含單'引'號和雙"引"號'單引號'和"雙引號"的文字.
      + | 單引號'大X中ZZ天'!
      + | 單引號'大X中ZZ天'和雙引號"大X中Y天"哦! + section#filtered + h2 不作用的元素 + h3 文字區塊表單 + textarea(style='height: 7em; width: 50%;') + | 漢字and仮名カkaナna。 + h3 代碼等元素 + p + code 代code碼 + | 、 + kbd 輸key入board鍵 + | 、 + samp 計算機samp輸出示例 + | 。 + pre + | 格式pre處理 + p.noti + strong 注意: + | 在漢字西文混排間隙「基本模式」下,代碼、輸入鍵、計算機輸出示例等元素仍經 + code renderHWS() + | 處理,惟使用樣式表將其下之hws元素隱藏,可藉樣式的改寫來顯示漢字西文混排間隙;「嚴格模式」下,則渲染以上元素。 + + // Here goes scripts + script(src='./han.min.js') diff --git a/v3.1.0/index.html b/v3.1.0/index.html new file mode 100644 index 00000000..135e1381 --- /dev/null +++ b/v3.1.0/index.html @@ -0,0 +1,20 @@ +測試頁索引 — 漢字標準格式

      測試頁索引

      Normalisation(樣式標準化)

      毋須配合JavaScript的元素樣式修正

      上列測試頁

      配合JavaScript的元素樣式修正

      字體

      漢字字體

      其他

      排版

      章節的組成

      行的組成

      \ No newline at end of file diff --git a/v3.1.0/index.jade b/v3.1.0/index.jade new file mode 100644 index 00000000..e9a88270 --- /dev/null +++ b/v3.1.0/index.jade @@ -0,0 +1,87 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='utf-8') + title 測試頁索引 — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + + style. + html { + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + + body.test + article + h1 測試頁索引 + ul#test-pages + li: a(href='test.html') 測試頁(標準) + li: a(href='test-amd.html') 測試頁(AMD模組) + li: a(href='test-commonjs.html') 測試頁(CommonJS模組,browserify) + li: a(href='test-nojs.html') 測試頁(無JavaScript) + section#normalisation + h2 Normalisation(樣式標準化) + section#wuxu_peihe_js_de_yuansu_yangshi_xiuzheng + h3 毋須配合JavaScript的元素樣式修正 + p 見 + a(href='#test-pages') 上列測試頁 + | 。 + section#peihe_js_de_yuansu_yangshi_xiuzheng + h3 配合JavaScript的元素樣式修正 + ul + li: a(href='./deco-line.html') 文字裝飾線元素 + li: a(href='./em.html') 強調元素(着重號) + li: a(href='./ruby.html') 行間注元素 + section#ziti + h2 字體 + section#hanzi + h3 漢字字體 + ul + li: a(href='./biaodian.html') 標點符號 + li: a(href='./four.html') 四大字體集 + li: a(href='generics.html') 字體基型( + span(lang='en') typeface generics + | )與 + code @extend + section#qita + h3 其他 + ul + li: a(href='./italic.html') 西文意大利體 + li: a(href='./numeral.html') 數字 + li: a(href='./ruby(ff).html') 標音(注音符號、羅馬拼音) + section#paiban + h2 排版 + section#zhangjie_de_zucheng + h3 章節的組成 + ul + li: a(href='./well-knit.html') 文章、章節與內容的邊界調整 + li: a(href='./counter.html') 章節與目錄的計數 + section#hang_de_zucheng + h3 行的組成 + ul + li: a(href='./hws.html') 漢字西文混排間隙 + li: a(href='./jiya.html') 標點擠壓 + li: a(href='./subst.html') 字元的替換 + // + section#api + h2 API + ul + li: a(href='./api/jinzify.html') 強制標點禁則 + li: a(href='./api/charify.html') 字元級選擇器 + li: a(href='./api/deco-line.html') 相鄰文字裝飾線 + li: a(href='./api/em.html') 着重號 + li: a(href='./api/ruby.html') 行間注元素 + + // Here goes scripts + script(src='./han.min.js') diff --git a/v3.1.0/italic.html b/v3.1.0/italic.html new file mode 100644 index 00000000..f3e2a684 --- /dev/null +++ b/v3.1.0/italic.html @@ -0,0 +1,20 @@ +測試・西文意大利體 — 漢字標準格式

      測試·西文意大利體

      無襯線

      The quick brown fox jumps over a lazy dog.
      0123456789 !§%&/()=?# @©®™ $€£¢ •°-_—
      äöüß æÆ œŒ åÅ øØ çÇ ñÑ
      ff fl ffl fi ffi st sst
      abcdefghijklmnopqrstuvwxyz
      ABCDEFGHIJKLMNOPQRSTUVWXYZ

      The quick brown fox jumps over a lazy dog.
      0123456789 !§%&/()=?# @©®™ $€£¢ •°-_—
      äöüß æÆ œŒ åÅ øØ çÇ ñÑ
      ff fl ffl fi ffi st sst
      abcdefghijklmnopqrstuvwxyz
      ABCDEFGHIJKLMNOPQRSTUVWXYZ

      襯線

      The quick brown fox jumps over a lazy dog.
      0123456789 !§%&/()=?# @©®™ $€£¢ •°-_—
      äöüß æÆ œŒ åÅ øØ çÇ ñÑ
      ff fl ffl fi ffi st sst
      abcdefghijklmnopqrstuvwxyz
      ABCDEFGHIJKLMNOPQRSTUVWXYZ

      The quick brown fox jumps over a lazy dog.
      0123456789 !§%&/()=?# @©®™ $€£¢ •°-_—
      äöüß æÆ œŒ åÅ øØ çÇ ñÑ
      ff fl ffl fi ffi st sst
      abcdefghijklmnopqrstuvwxyz
      ABCDEFGHIJKLMNOPQRSTUVWXYZ

      \ No newline at end of file diff --git a/v3.1.0/italic.jade b/v3.1.0/italic.jade new file mode 100644 index 00000000..1426b540 --- /dev/null +++ b/v3.1.0/italic.jade @@ -0,0 +1,87 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='utf-8') + title 測試・西文意大利體 — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + style. + html { + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + } + + .bold { + font-weight: bold; + } + + .italic { + font-style: italic; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + body.test + + article + h1 測試·西文意大利體 + h2 無襯線 + p(style='font-family: "Latin Italic Sans";') + | The quick brown fox jumps over a lazy dog. + br + | 0123456789 !§%&/()=?# @©®™ $€£¢ •°-_— + br + | äöüß æÆ œŒ åÅ øØ çÇ ñÑ + br + | ff fl ffl fi ffi st sst + br + | abcdefghijklmnopqrstuvwxyz + br + | ABCDEFGHIJKLMNOPQRSTUVWXYZ + p.bold(style='font-family: "Latin Italic Sans";') + | The quick brown fox jumps over a lazy dog. + br + | 0123456789 !§%&/()=?# @©®™ $€£¢ •°-_— + br + | äöüß æÆ œŒ åÅ øØ çÇ ñÑ + br + | ff fl ffl fi ffi st sst + br + | abcdefghijklmnopqrstuvwxyz + br + | ABCDEFGHIJKLMNOPQRSTUVWXYZ + + h2 襯線 + p(style='font-family: "Numeral LF Italic Serif", "Latin Italic Serif";') + | The quick brown fox jumps over a lazy dog. + br + | 0123456789 !§%&/()=?# @©®™ $€£¢ •°-_— + br + | äöüß æÆ œŒ åÅ øØ çÇ ñÑ + br + | ff fl ffl fi ffi st sst + br + | abcdefghijklmnopqrstuvwxyz + br + | ABCDEFGHIJKLMNOPQRSTUVWXYZ + p.bold(style='font-family: "Numeral LF Italic Serif", "Latin Italic Serif";') + | The quick brown fox jumps over a lazy dog. + br + | 0123456789 !§%&/()=?# @©®™ $€£¢ •°-_— + br + | äöüß æÆ œŒ åÅ øØ çÇ ñÑ + br + | ff fl ffl fi ffi st sst + br + | abcdefghijklmnopqrstuvwxyz + br + | ABCDEFGHIJKLMNOPQRSTUVWXYZ + + script(src='./han.min.js') diff --git a/v3.1.0/jiya.html b/v3.1.0/jiya.html new file mode 100644 index 00000000..eab59ddb --- /dev/null +++ b/v3.1.0/jiya.html @@ -0,0 +1,12 @@ +測試・標點擠壓 — 漢字標準格式

      測試·標點擠壓

      「何謂『標點擠壓』?」

      何謂「標點『擠壓』」呢?

      讓我來告訴你何謂「『標點』擠壓」。

      讓我來告訴你何謂「『標點』擠壓。」

      我、「那個人」和他戰鬥了數個鐘頭,(最後)沒輸沒贏……「那個人」逃之夭夭。

      輕聲叨唸道——「好的……」

      「好」「不好」

      「好」·「不好」「好」・「不好」「好」、「不好」

      「『好』·不好」「『好』・不好」「『好』、不好」

      「好·『不好』」「好、『不好』」

      《書名》〈篇名〉(內容)

      《書名》〈篇名〉(內容)「『好』、不好」

      \ No newline at end of file diff --git a/v3.1.0/jiya.jade b/v3.1.0/jiya.jade new file mode 100644 index 00000000..6b8a8948 --- /dev/null +++ b/v3.1.0/jiya.jade @@ -0,0 +1,41 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='utf-8') + title 測試・標點擠壓 — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + + style. + html { + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + body.test + + article + h1 測試·標點擠壓 + p 「何謂『標點擠壓』?」 + p 何謂「標點『擠壓』」呢? + p 讓我來告訴你何謂「『標點』擠壓」。 + p 讓我來告訴你何謂「『標點』擠壓。」 + p 我、「那個人」和他戰鬥了數個鐘頭,(最後)沒輸沒贏……「那個人」逃之夭夭。 + p 輕聲叨唸道——「好的……」 + p 「好」「不好」 + p 「好」·「不好」「好」・「不好」「好」、「不好」 + p 「『好』·不好」「『好』・不好」「『好』、不好」 + p 「好·『不好』」「好、『不好』」 + p 《書名》〈篇名〉(內容) + p: em 《書名》〈篇名〉(內容)「『好』、不好」 + + script(src='./han.min.js') diff --git a/v3.1.0/numeral.html b/v3.1.0/numeral.html new file mode 100644 index 00000000..5ffdf173 --- /dev/null +++ b/v3.1.0/numeral.html @@ -0,0 +1,20 @@ +測試・數字 — 漢字標準格式

      測試·數字

      等高數字

      無襯線

      1234567890
      1234567890
      1234567890
      1234567890

      襯線

      1234567890
      1234567890
      1234567890
      1234567890

      文本數字

      無襯線

      1234567890
      1234567890
      1234567890
      1234567890

      襯線

      1234567890
      1234567890
      1234567890
      1234567890

      \ No newline at end of file diff --git a/v3.1.0/numeral.jade b/v3.1.0/numeral.jade new file mode 100644 index 00000000..7edd14d7 --- /dev/null +++ b/v3.1.0/numeral.jade @@ -0,0 +1,75 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='utf-8') + title 測試・數字 — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + style. + html { + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + } + + .bold { + font-weight: bold; + } + + .italic { + font-style: italic; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + body.test + + article + h1 測試·數字 + h2 等高數字 + h3 無襯線 + p(style='font-family: "Numeral LF Sans";') + | 1234567890 + br + span.italic 1234567890 + br + span.bold 1234567890 + br + span.bold.italic 1234567890 + + h3 襯線 + p(style='font-family: "Numeral LF Serif";') + | 1234567890 + br + span.italic 1234567890 + br + span.bold 1234567890 + br + span.bold.italic 1234567890 + h2 文本數字 + h3 無襯線 + p(style='font-family: "Numeral TF Sans";') + | 1234567890 + br + span.italic 1234567890 + br + span.bold 1234567890 + br + span.bold.italic 1234567890 + h3 襯線 + p(style='font-family: "Numeral TF Serif";') + | 1234567890 + br + span.italic 1234567890 + br + span.bold 1234567890 + br + span.bold.italic 1234567890 + + script(src='./han.min.js') diff --git a/v3.1.0/qunit.css b/v3.1.0/qunit.css new file mode 100644 index 00000000..385a1ce0 --- /dev/null +++ b/v3.1.0/qunit.css @@ -0,0 +1,264 @@ +/*! + * QUnit 1.16.0 + * http://qunitjs.com/ + * + * Copyright 2006, 2014 jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-12-03T16:32Z + */ + +/** Font Family and Sizes */ + +#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { + font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; +} + +#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } +#qunit-tests { font-size: smaller; } + + +/** Resets */ + +#qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter { + margin: 0; + padding: 0; +} + + +/** Header */ + +#qunit-header { + padding: 0.5em 0 0.5em 1em; + + color: #8699A4; + background-color: #0D3349; + + font-size: 1.5em; + line-height: 1em; + font-weight: 400; + + border-radius: 5px 5px 0 0; +} + +#qunit-header a { + text-decoration: none; + color: #C2CCD1; +} + +#qunit-header a:hover, +#qunit-header a:focus { + color: #FFF; +} + +#qunit-testrunner-toolbar label { + display: inline-block; + padding: 0 0.5em 0 0.1em; +} + +#qunit-banner { + height: 5px; +} + +#qunit-testrunner-toolbar { + padding: 0.5em 1em 0.5em 1em; + color: #5E740B; + background-color: #EEE; + overflow: hidden; +} + +#qunit-userAgent { + padding: 0.5em 1em 0.5em 1em; + background-color: #2B81AF; + color: #FFF; + text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; +} + +#qunit-modulefilter-container { + float: right; +} + +/** Tests: Pass/Fail */ + +#qunit-tests { + list-style-position: inside; +} + +#qunit-tests li { + padding: 0.4em 1em 0.4em 1em; + border-bottom: 1px solid #FFF; + list-style-position: inside; +} + +#qunit-tests > li { + display: none; +} + +#qunit-tests li.pass, #qunit-tests li.running, #qunit-tests li.fail { + display: list-item; +} + +#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { + display: none; +} + +#qunit-tests li strong { + cursor: pointer; +} + +#qunit-tests li.skipped strong { + cursor: default; +} + +#qunit-tests li a { + padding: 0.5em; + color: #C2CCD1; + text-decoration: none; +} +#qunit-tests li a:hover, +#qunit-tests li a:focus { + color: #000; +} + +#qunit-tests li .runtime { + float: right; + font-size: smaller; +} + +.qunit-assert-list { + margin-top: 0.5em; + padding: 0.5em; + + background-color: #FFF; + + border-radius: 5px; +} + +.qunit-collapsed { + display: none; +} + +#qunit-tests table { + border-collapse: collapse; + margin-top: 0.2em; +} + +#qunit-tests th { + text-align: right; + vertical-align: top; + padding: 0 0.5em 0 0; +} + +#qunit-tests td { + vertical-align: top; +} + +#qunit-tests pre { + margin: 0; + white-space: pre-wrap; + word-wrap: break-word; +} + +#qunit-tests del { + background-color: #E0F2BE; + color: #374E0C; + text-decoration: none; +} + +#qunit-tests ins { + background-color: #FFCACA; + color: #500; + text-decoration: none; +} + +/*** Test Counts */ + +#qunit-tests b.counts { color: #000; } +#qunit-tests b.passed { color: #5E740B; } +#qunit-tests b.failed { color: #710909; } + +#qunit-tests li li { + padding: 5px; + background-color: #FFF; + border-bottom: none; + list-style-position: inside; +} + +/*** Passing Styles */ + +#qunit-tests li li.pass { + color: #3C510C; + background-color: #FFF; + border-left: 10px solid #C6E746; +} + +#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } +#qunit-tests .pass .test-name { color: #366097; } + +#qunit-tests .pass .test-actual, +#qunit-tests .pass .test-expected { color: #999; } + +#qunit-banner.qunit-pass { background-color: #C6E746; } + +/*** Failing Styles */ + +#qunit-tests li li.fail { + color: #710909; + background-color: #FFF; + border-left: 10px solid #EE5757; + white-space: pre; +} + +#qunit-tests > li:last-child { + border-radius: 0 0 5px 5px; +} + +#qunit-tests .fail { color: #000; background-color: #EE5757; } +#qunit-tests .fail .test-name, +#qunit-tests .fail .module-name { color: #000; } + +#qunit-tests .fail .test-actual { color: #EE5757; } +#qunit-tests .fail .test-expected { color: #008000; } + +#qunit-banner.qunit-fail { background-color: #EE5757; } + +/*** Skipped tests */ + +#qunit-tests .skipped { + background-color: #EBECE9; +} + +#qunit-tests .qunit-skipped-label { + background-color: #F4FF77; + display: inline-block; + font-style: normal; + color: #366097; + line-height: 1.8em; + padding: 0 0.5em; + margin: -0.4em 0.4em -0.4em 0; +} + +/** Result */ + +#qunit-testresult { + padding: 0.5em 1em 0.5em 1em; + + color: #2B81AF; + background-color: #D2E0E6; + + border-bottom: 1px solid #FFF; +} +#qunit-testresult .module-name { + font-weight: 700; +} + +/** Fixture */ + +#qunit-fixture { + position: absolute; + top: -10000px; + left: -10000px; + width: 1000px; + height: 1000px; +} diff --git a/v3.1.0/qunit.js b/v3.1.0/qunit.js new file mode 100644 index 00000000..82020d40 --- /dev/null +++ b/v3.1.0/qunit.js @@ -0,0 +1,2819 @@ +/*! + * QUnit 1.16.0 + * http://qunitjs.com/ + * + * Copyright 2006, 2014 jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-12-03T16:32Z + */ + +(function( window ) { + +var QUnit, + config, + onErrorFnPrev, + loggingCallbacks = {}, + fileName = ( sourceFromStacktrace( 0 ) || "" ).replace( /(:\d+)+\)?/, "" ).replace( /.+\//, "" ), + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + // Keep a local reference to Date (GH-283) + Date = window.Date, + now = Date.now || function() { + return new Date().getTime(); + }, + globalStartCalled = false, + runStarted = false, + setTimeout = window.setTimeout, + clearTimeout = window.clearTimeout, + defined = { + document: window.document !== undefined, + setTimeout: window.setTimeout !== undefined, + sessionStorage: (function() { + var x = "qunit-test-string"; + try { + sessionStorage.setItem( x, x ); + sessionStorage.removeItem( x ); + return true; + } catch ( e ) { + return false; + } + }()) + }, + /** + * Provides a normalized error string, correcting an issue + * with IE 7 (and prior) where Error.prototype.toString is + * not properly implemented + * + * Based on http://es5.github.com/#x15.11.4.4 + * + * @param {String|Error} error + * @return {String} error message + */ + errorString = function( error ) { + var name, message, + errorString = error.toString(); + if ( errorString.substring( 0, 7 ) === "[object" ) { + name = error.name ? error.name.toString() : "Error"; + message = error.message ? error.message.toString() : ""; + if ( name && message ) { + return name + ": " + message; + } else if ( name ) { + return name; + } else if ( message ) { + return message; + } else { + return "Error"; + } + } else { + return errorString; + } + }, + /** + * Makes a clone of an object using only Array or Object as base, + * and copies over the own enumerable properties. + * + * @param {Object} obj + * @return {Object} New object with only the own properties (recursively). + */ + objectValues = function( obj ) { + var key, val, + vals = QUnit.is( "array", obj ) ? [] : {}; + for ( key in obj ) { + if ( hasOwn.call( obj, key ) ) { + val = obj[ key ]; + vals[ key ] = val === Object( val ) ? objectValues( val ) : val; + } + } + return vals; + }; + +QUnit = {}; + +/** + * Config object: Maintain internal state + * Later exposed as QUnit.config + * `config` initialized at top of scope + */ +config = { + // The queue of tests to run + queue: [], + + // block until document ready + blocking: true, + + // when enabled, show only failing tests + // gets persisted through sessionStorage and can be changed in UI via checkbox + hidepassed: false, + + // by default, run previously failed tests first + // very useful in combination with "Hide passed tests" checked + reorder: true, + + // by default, modify document.title when suite is done + altertitle: true, + + // by default, scroll to top of the page when suite is done + scrolltop: true, + + // when enabled, all tests must call expect() + requireExpects: false, + + // add checkboxes that are persisted in the query-string + // when enabled, the id is set to `true` as a `QUnit.config` property + urlConfig: [ + { + id: "hidepassed", + label: "Hide passed tests", + tooltip: "Only show tests and assertions that fail. Stored as query-strings." + }, + { + id: "noglobals", + label: "Check for Globals", + tooltip: "Enabling this will test if any test introduces new properties on the " + + "`window` object. Stored as query-strings." + }, + { + id: "notrycatch", + label: "No try-catch", + tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging " + + "exceptions in IE reasonable. Stored as query-strings." + } + ], + + // Set of all modules. + modules: [], + + // The first unnamed module + currentModule: { + name: "", + tests: [] + }, + + callbacks: {} +}; + +// Push a loose unnamed module to the modules collection +config.modules.push( config.currentModule ); + +// Initialize more QUnit.config and QUnit.urlParams +(function() { + var i, current, + location = window.location || { search: "", protocol: "file:" }, + params = location.search.slice( 1 ).split( "&" ), + length = params.length, + urlParams = {}; + + if ( params[ 0 ] ) { + for ( i = 0; i < length; i++ ) { + current = params[ i ].split( "=" ); + current[ 0 ] = decodeURIComponent( current[ 0 ] ); + + // allow just a key to turn on a flag, e.g., test.html?noglobals + current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true; + if ( urlParams[ current[ 0 ] ] ) { + urlParams[ current[ 0 ] ] = [].concat( urlParams[ current[ 0 ] ], current[ 1 ] ); + } else { + urlParams[ current[ 0 ] ] = current[ 1 ]; + } + } + } + + QUnit.urlParams = urlParams; + + // String search anywhere in moduleName+testName + config.filter = urlParams.filter; + + config.testId = []; + if ( urlParams.testId ) { + + // Ensure that urlParams.testId is an array + urlParams.testId = [].concat( urlParams.testId ); + for ( i = 0; i < urlParams.testId.length; i++ ) { + config.testId.push( urlParams.testId[ i ] ); + } + } + + // Figure out if we're running the tests from a server or not + QUnit.isLocal = location.protocol === "file:"; +}()); + +// Root QUnit object. +// `QUnit` initialized at top of scope +extend( QUnit, { + + // call on start of module test to prepend name to all tests + module: function( name, testEnvironment ) { + var currentModule = { + name: name, + testEnvironment: testEnvironment, + tests: [] + }; + + // DEPRECATED: handles setup/teardown functions, + // beforeEach and afterEach should be used instead + if ( testEnvironment && testEnvironment.setup ) { + testEnvironment.beforeEach = testEnvironment.setup; + delete testEnvironment.setup; + } + if ( testEnvironment && testEnvironment.teardown ) { + testEnvironment.afterEach = testEnvironment.teardown; + delete testEnvironment.teardown; + } + + config.modules.push( currentModule ); + config.currentModule = currentModule; + }, + + // DEPRECATED: QUnit.asyncTest() will be removed in QUnit 2.0. + asyncTest: function( testName, expected, callback ) { + if ( arguments.length === 2 ) { + callback = expected; + expected = null; + } + + QUnit.test( testName, expected, callback, true ); + }, + + test: function( testName, expected, callback, async ) { + var test; + + if ( arguments.length === 2 ) { + callback = expected; + expected = null; + } + + test = new Test({ + testName: testName, + expected: expected, + async: async, + callback: callback + }); + + test.queue(); + }, + + skip: function( testName ) { + var test = new Test({ + testName: testName, + skip: true + }); + + test.queue(); + }, + + // DEPRECATED: The functionality of QUnit.start() will be altered in QUnit 2.0. + // In QUnit 2.0, invoking it will ONLY affect the `QUnit.config.autostart` blocking behavior. + start: function( count ) { + var globalStartAlreadyCalled = globalStartCalled; + + if ( !config.current ) { + globalStartCalled = true; + + if ( runStarted ) { + throw new Error( "Called start() outside of a test context while already started" ); + } else if ( globalStartAlreadyCalled || count > 1 ) { + throw new Error( "Called start() outside of a test context too many times" ); + } else if ( config.autostart ) { + throw new Error( "Called start() outside of a test context when " + + "QUnit.config.autostart was true" ); + } else if ( !config.pageLoaded ) { + + // The page isn't completely loaded yet, so bail out and let `QUnit.load` handle it + config.autostart = true; + return; + } + } else { + + // If a test is running, adjust its semaphore + config.current.semaphore -= count || 1; + + // Don't start until equal number of stop-calls + if ( config.current.semaphore > 0 ) { + return; + } + + // throw an Error if start is called more often than stop + if ( config.current.semaphore < 0 ) { + config.current.semaphore = 0; + + QUnit.pushFailure( + "Called start() while already started (test's semaphore was 0 already)", + sourceFromStacktrace( 2 ) + ); + return; + } + } + + resumeProcessing(); + }, + + // DEPRECATED: QUnit.stop() will be removed in QUnit 2.0. + stop: function( count ) { + + // If there isn't a test running, don't allow QUnit.stop() to be called + if ( !config.current ) { + throw new Error( "Called stop() outside of a test context" ); + } + + // If a test is running, adjust its semaphore + config.current.semaphore += count || 1; + + pauseProcessing(); + }, + + config: config, + + // Safe object type checking + is: function( type, obj ) { + return QUnit.objectType( obj ) === type; + }, + + objectType: function( obj ) { + if ( typeof obj === "undefined" ) { + return "undefined"; + } + + // Consider: typeof null === object + if ( obj === null ) { + return "null"; + } + + var match = toString.call( obj ).match( /^\[object\s(.*)\]$/ ), + type = match && match[ 1 ] || ""; + + switch ( type ) { + case "Number": + if ( isNaN( obj ) ) { + return "nan"; + } + return "number"; + case "String": + case "Boolean": + case "Array": + case "Date": + case "RegExp": + case "Function": + return type.toLowerCase(); + } + if ( typeof obj === "object" ) { + return "object"; + } + return undefined; + }, + + url: function( params ) { + params = extend( extend( {}, QUnit.urlParams ), params ); + var key, + querystring = "?"; + + for ( key in params ) { + if ( hasOwn.call( params, key ) ) { + querystring += encodeURIComponent( key ); + if ( params[ key ] !== true ) { + querystring += "=" + encodeURIComponent( params[ key ] ); + } + querystring += "&"; + } + } + return location.protocol + "//" + location.host + + location.pathname + querystring.slice( 0, -1 ); + }, + + extend: extend, + + load: function() { + config.pageLoaded = true; + + // Initialize the configuration options + extend( config, { + stats: { all: 0, bad: 0 }, + moduleStats: { all: 0, bad: 0 }, + started: 0, + updateRate: 1000, + autostart: true, + filter: "" + }, true ); + + config.blocking = false; + + if ( config.autostart ) { + resumeProcessing(); + } + } +}); + +// Register logging callbacks +(function() { + var i, l, key, + callbacks = [ "begin", "done", "log", "testStart", "testDone", + "moduleStart", "moduleDone" ]; + + function registerLoggingCallback( key ) { + var loggingCallback = function( callback ) { + if ( QUnit.objectType( callback ) !== "function" ) { + throw new Error( + "QUnit logging methods require a callback function as their first parameters." + ); + } + + config.callbacks[ key ].push( callback ); + }; + + // DEPRECATED: This will be removed on QUnit 2.0.0+ + // Stores the registered functions allowing restoring + // at verifyLoggingCallbacks() if modified + loggingCallbacks[ key ] = loggingCallback; + + return loggingCallback; + } + + for ( i = 0, l = callbacks.length; i < l; i++ ) { + key = callbacks[ i ]; + + // Initialize key collection of logging callback + if ( QUnit.objectType( config.callbacks[ key ] ) === "undefined" ) { + config.callbacks[ key ] = []; + } + + QUnit[ key ] = registerLoggingCallback( key ); + } +})(); + +// `onErrorFnPrev` initialized at top of scope +// Preserve other handlers +onErrorFnPrev = window.onerror; + +// Cover uncaught exceptions +// Returning true will suppress the default browser handler, +// returning false will let it run. +window.onerror = function( error, filePath, linerNr ) { + var ret = false; + if ( onErrorFnPrev ) { + ret = onErrorFnPrev( error, filePath, linerNr ); + } + + // Treat return value as window.onerror itself does, + // Only do our handling if not suppressed. + if ( ret !== true ) { + if ( QUnit.config.current ) { + if ( QUnit.config.current.ignoreGlobalErrors ) { + return true; + } + QUnit.pushFailure( error, filePath + ":" + linerNr ); + } else { + QUnit.test( "global failure", extend(function() { + QUnit.pushFailure( error, filePath + ":" + linerNr ); + }, { validTest: true } ) ); + } + return false; + } + + return ret; +}; + +function done() { + var runtime, passed; + + config.autorun = true; + + // Log the last module results + if ( config.previousModule ) { + runLoggingCallbacks( "moduleDone", { + name: config.previousModule.name, + tests: config.previousModule.tests, + failed: config.moduleStats.bad, + passed: config.moduleStats.all - config.moduleStats.bad, + total: config.moduleStats.all, + runtime: now() - config.moduleStats.started + }); + } + delete config.previousModule; + + runtime = now() - config.started; + passed = config.stats.all - config.stats.bad; + + runLoggingCallbacks( "done", { + failed: config.stats.bad, + passed: passed, + total: config.stats.all, + runtime: runtime + }); +} + +// Doesn't support IE6 to IE9 +// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack +function extractStacktrace( e, offset ) { + offset = offset === undefined ? 4 : offset; + + var stack, include, i; + + if ( e.stacktrace ) { + + // Opera 12.x + return e.stacktrace.split( "\n" )[ offset + 3 ]; + } else if ( e.stack ) { + + // Firefox, Chrome, Safari 6+, IE10+, PhantomJS and Node + stack = e.stack.split( "\n" ); + if ( /^error$/i.test( stack[ 0 ] ) ) { + stack.shift(); + } + if ( fileName ) { + include = []; + for ( i = offset; i < stack.length; i++ ) { + if ( stack[ i ].indexOf( fileName ) !== -1 ) { + break; + } + include.push( stack[ i ] ); + } + if ( include.length ) { + return include.join( "\n" ); + } + } + return stack[ offset ]; + } else if ( e.sourceURL ) { + + // Safari < 6 + // exclude useless self-reference for generated Error objects + if ( /qunit.js$/.test( e.sourceURL ) ) { + return; + } + + // for actual exceptions, this is useful + return e.sourceURL + ":" + e.line; + } +} + +function sourceFromStacktrace( offset ) { + var e = new Error(); + if ( !e.stack ) { + try { + throw e; + } catch ( err ) { + // This should already be true in most browsers + e = err; + } + } + return extractStacktrace( e, offset ); +} + +function synchronize( callback, last ) { + if ( QUnit.objectType( callback ) === "array" ) { + while ( callback.length ) { + synchronize( callback.shift() ); + } + return; + } + config.queue.push( callback ); + + if ( config.autorun && !config.blocking ) { + process( last ); + } +} + +function process( last ) { + function next() { + process( last ); + } + var start = now(); + config.depth = config.depth ? config.depth + 1 : 1; + + while ( config.queue.length && !config.blocking ) { + if ( !defined.setTimeout || config.updateRate <= 0 || + ( ( now() - start ) < config.updateRate ) ) { + if ( config.current ) { + + // Reset async tracking for each phase of the Test lifecycle + config.current.usedAsync = false; + } + config.queue.shift()(); + } else { + setTimeout( next, 13 ); + break; + } + } + config.depth--; + if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) { + done(); + } +} + +function begin() { + var i, l, + modulesLog = []; + + // If the test run hasn't officially begun yet + if ( !config.started ) { + + // Record the time of the test run's beginning + config.started = now(); + + verifyLoggingCallbacks(); + + // Delete the loose unnamed module if unused. + if ( config.modules[ 0 ].name === "" && config.modules[ 0 ].tests.length === 0 ) { + config.modules.shift(); + } + + // Avoid unnecessary information by not logging modules' test environments + for ( i = 0, l = config.modules.length; i < l; i++ ) { + modulesLog.push({ + name: config.modules[ i ].name, + tests: config.modules[ i ].tests + }); + } + + // The test run is officially beginning now + runLoggingCallbacks( "begin", { + totalTests: Test.count, + modules: modulesLog + }); + } + + config.blocking = false; + process( true ); +} + +function resumeProcessing() { + runStarted = true; + + // A slight delay to allow this iteration of the event loop to finish (more assertions, etc.) + if ( defined.setTimeout ) { + setTimeout(function() { + if ( config.current && config.current.semaphore > 0 ) { + return; + } + if ( config.timeout ) { + clearTimeout( config.timeout ); + } + + begin(); + }, 13 ); + } else { + begin(); + } +} + +function pauseProcessing() { + config.blocking = true; + + if ( config.testTimeout && defined.setTimeout ) { + clearTimeout( config.timeout ); + config.timeout = setTimeout(function() { + if ( config.current ) { + config.current.semaphore = 0; + QUnit.pushFailure( "Test timed out", sourceFromStacktrace( 2 ) ); + } else { + throw new Error( "Test timed out" ); + } + resumeProcessing(); + }, config.testTimeout ); + } +} + +function saveGlobal() { + config.pollution = []; + + if ( config.noglobals ) { + for ( var key in window ) { + if ( hasOwn.call( window, key ) ) { + // in Opera sometimes DOM element ids show up here, ignore them + if ( /^qunit-test-output/.test( key ) ) { + continue; + } + config.pollution.push( key ); + } + } + } +} + +function checkPollution() { + var newGlobals, + deletedGlobals, + old = config.pollution; + + saveGlobal(); + + newGlobals = diff( config.pollution, old ); + if ( newGlobals.length > 0 ) { + QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join( ", " ) ); + } + + deletedGlobals = diff( old, config.pollution ); + if ( deletedGlobals.length > 0 ) { + QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join( ", " ) ); + } +} + +// returns a new Array with the elements that are in a but not in b +function diff( a, b ) { + var i, j, + result = a.slice(); + + for ( i = 0; i < result.length; i++ ) { + for ( j = 0; j < b.length; j++ ) { + if ( result[ i ] === b[ j ] ) { + result.splice( i, 1 ); + i--; + break; + } + } + } + return result; +} + +function extend( a, b, undefOnly ) { + for ( var prop in b ) { + if ( hasOwn.call( b, prop ) ) { + + // Avoid "Member not found" error in IE8 caused by messing with window.constructor + if ( !( prop === "constructor" && a === window ) ) { + if ( b[ prop ] === undefined ) { + delete a[ prop ]; + } else if ( !( undefOnly && typeof a[ prop ] !== "undefined" ) ) { + a[ prop ] = b[ prop ]; + } + } + } + } + + return a; +} + +function runLoggingCallbacks( key, args ) { + var i, l, callbacks; + + callbacks = config.callbacks[ key ]; + for ( i = 0, l = callbacks.length; i < l; i++ ) { + callbacks[ i ]( args ); + } +} + +// DEPRECATED: This will be removed on 2.0.0+ +// This function verifies if the loggingCallbacks were modified by the user +// If so, it will restore it, assign the given callback and print a console warning +function verifyLoggingCallbacks() { + var loggingCallback, userCallback; + + for ( loggingCallback in loggingCallbacks ) { + if ( QUnit[ loggingCallback ] !== loggingCallbacks[ loggingCallback ] ) { + + userCallback = QUnit[ loggingCallback ]; + + // Restore the callback function + QUnit[ loggingCallback ] = loggingCallbacks[ loggingCallback ]; + + // Assign the deprecated given callback + QUnit[ loggingCallback ]( userCallback ); + + if ( window.console && window.console.warn ) { + window.console.warn( + "QUnit." + loggingCallback + " was replaced with a new value.\n" + + "Please, check out the documentation on how to apply logging callbacks.\n" + + "Reference: http://api.qunitjs.com/category/callbacks/" + ); + } + } + } +} + +// from jquery.js +function inArray( elem, array ) { + if ( array.indexOf ) { + return array.indexOf( elem ); + } + + for ( var i = 0, length = array.length; i < length; i++ ) { + if ( array[ i ] === elem ) { + return i; + } + } + + return -1; +} + +function Test( settings ) { + var i, l; + + ++Test.count; + + extend( this, settings ); + this.assertions = []; + this.semaphore = 0; + this.usedAsync = false; + this.module = config.currentModule; + this.stack = sourceFromStacktrace( 3 ); + + // Register unique strings + for ( i = 0, l = this.module.tests; i < l.length; i++ ) { + if ( this.module.tests[ i ].name === this.testName ) { + this.testName += " "; + } + } + + this.testId = generateHash( this.module.name, this.testName ); + + this.module.tests.push({ + name: this.testName, + testId: this.testId + }); + + if ( settings.skip ) { + + // Skipped tests will fully ignore any sent callback + this.callback = function() {}; + this.async = false; + this.expected = 0; + } else { + this.assert = new Assert( this ); + } +} + +Test.count = 0; + +Test.prototype = { + before: function() { + if ( + + // Emit moduleStart when we're switching from one module to another + this.module !== config.previousModule || + + // They could be equal (both undefined) but if the previousModule property doesn't + // yet exist it means this is the first test in a suite that isn't wrapped in a + // module, in which case we'll just emit a moduleStart event for 'undefined'. + // Without this, reporters can get testStart before moduleStart which is a problem. + !hasOwn.call( config, "previousModule" ) + ) { + if ( hasOwn.call( config, "previousModule" ) ) { + runLoggingCallbacks( "moduleDone", { + name: config.previousModule.name, + tests: config.previousModule.tests, + failed: config.moduleStats.bad, + passed: config.moduleStats.all - config.moduleStats.bad, + total: config.moduleStats.all, + runtime: now() - config.moduleStats.started + }); + } + config.previousModule = this.module; + config.moduleStats = { all: 0, bad: 0, started: now() }; + runLoggingCallbacks( "moduleStart", { + name: this.module.name, + tests: this.module.tests + }); + } + + config.current = this; + + this.testEnvironment = extend( {}, this.module.testEnvironment ); + delete this.testEnvironment.beforeEach; + delete this.testEnvironment.afterEach; + + this.started = now(); + runLoggingCallbacks( "testStart", { + name: this.testName, + module: this.module.name, + testId: this.testId + }); + + if ( !config.pollution ) { + saveGlobal(); + } + }, + + run: function() { + var promise; + + config.current = this; + + if ( this.async ) { + QUnit.stop(); + } + + this.callbackStarted = now(); + + if ( config.notrycatch ) { + promise = this.callback.call( this.testEnvironment, this.assert ); + this.resolvePromise( promise ); + return; + } + + try { + promise = this.callback.call( this.testEnvironment, this.assert ); + this.resolvePromise( promise ); + } catch ( e ) { + this.pushFailure( "Died on test #" + ( this.assertions.length + 1 ) + " " + + this.stack + ": " + ( e.message || e ), extractStacktrace( e, 0 ) ); + + // else next test will carry the responsibility + saveGlobal(); + + // Restart the tests if they're blocking + if ( config.blocking ) { + QUnit.start(); + } + } + }, + + after: function() { + checkPollution(); + }, + + queueHook: function( hook, hookName ) { + var promise, + test = this; + return function runHook() { + config.current = test; + if ( config.notrycatch ) { + promise = hook.call( test.testEnvironment, test.assert ); + test.resolvePromise( promise, hookName ); + return; + } + try { + promise = hook.call( test.testEnvironment, test.assert ); + test.resolvePromise( promise, hookName ); + } catch ( error ) { + test.pushFailure( hookName + " failed on " + test.testName + ": " + + ( error.message || error ), extractStacktrace( error, 0 ) ); + } + }; + }, + + // Currently only used for module level hooks, can be used to add global level ones + hooks: function( handler ) { + var hooks = []; + + // Hooks are ignored on skipped tests + if ( this.skip ) { + return hooks; + } + + if ( this.module.testEnvironment && + QUnit.objectType( this.module.testEnvironment[ handler ] ) === "function" ) { + hooks.push( this.queueHook( this.module.testEnvironment[ handler ], handler ) ); + } + + return hooks; + }, + + finish: function() { + config.current = this; + if ( config.requireExpects && this.expected === null ) { + this.pushFailure( "Expected number of assertions to be defined, but expect() was " + + "not called.", this.stack ); + } else if ( this.expected !== null && this.expected !== this.assertions.length ) { + this.pushFailure( "Expected " + this.expected + " assertions, but " + + this.assertions.length + " were run", this.stack ); + } else if ( this.expected === null && !this.assertions.length ) { + this.pushFailure( "Expected at least one assertion, but none were run - call " + + "expect(0) to accept zero assertions.", this.stack ); + } + + var i, + bad = 0; + + this.runtime = now() - this.started; + config.stats.all += this.assertions.length; + config.moduleStats.all += this.assertions.length; + + for ( i = 0; i < this.assertions.length; i++ ) { + if ( !this.assertions[ i ].result ) { + bad++; + config.stats.bad++; + config.moduleStats.bad++; + } + } + + runLoggingCallbacks( "testDone", { + name: this.testName, + module: this.module.name, + skipped: !!this.skip, + failed: bad, + passed: this.assertions.length - bad, + total: this.assertions.length, + runtime: this.runtime, + + // HTML Reporter use + assertions: this.assertions, + testId: this.testId, + + // DEPRECATED: this property will be removed in 2.0.0, use runtime instead + duration: this.runtime + }); + + // QUnit.reset() is deprecated and will be replaced for a new + // fixture reset function on QUnit 2.0/2.1. + // It's still called here for backwards compatibility handling + QUnit.reset(); + + config.current = undefined; + }, + + queue: function() { + var bad, + test = this; + + if ( !this.valid() ) { + return; + } + + function run() { + + // each of these can by async + synchronize([ + function() { + test.before(); + }, + + test.hooks( "beforeEach" ), + + function() { + test.run(); + }, + + test.hooks( "afterEach" ).reverse(), + + function() { + test.after(); + }, + function() { + test.finish(); + } + ]); + } + + // `bad` initialized at top of scope + // defer when previous test run passed, if storage is available + bad = QUnit.config.reorder && defined.sessionStorage && + +sessionStorage.getItem( "qunit-test-" + this.module.name + "-" + this.testName ); + + if ( bad ) { + run(); + } else { + synchronize( run, true ); + } + }, + + push: function( result, actual, expected, message ) { + var source, + details = { + module: this.module.name, + name: this.testName, + result: result, + message: message, + actual: actual, + expected: expected, + testId: this.testId, + runtime: now() - this.started + }; + + if ( !result ) { + source = sourceFromStacktrace(); + + if ( source ) { + details.source = source; + } + } + + runLoggingCallbacks( "log", details ); + + this.assertions.push({ + result: !!result, + message: message + }); + }, + + pushFailure: function( message, source, actual ) { + if ( !this instanceof Test ) { + throw new Error( "pushFailure() assertion outside test context, was " + + sourceFromStacktrace( 2 ) ); + } + + var details = { + module: this.module.name, + name: this.testName, + result: false, + message: message || "error", + actual: actual || null, + testId: this.testId, + runtime: now() - this.started + }; + + if ( source ) { + details.source = source; + } + + runLoggingCallbacks( "log", details ); + + this.assertions.push({ + result: false, + message: message + }); + }, + + resolvePromise: function( promise, phase ) { + var then, message, + test = this; + if ( promise != null ) { + then = promise.then; + if ( QUnit.objectType( then ) === "function" ) { + QUnit.stop(); + then.call( + promise, + QUnit.start, + function( error ) { + message = "Promise rejected " + + ( !phase ? "during" : phase.replace( /Each$/, "" ) ) + + " " + test.testName + ": " + ( error.message || error ); + test.pushFailure( message, extractStacktrace( error, 0 ) ); + + // else next test will carry the responsibility + saveGlobal(); + + // Unblock + QUnit.start(); + } + ); + } + } + }, + + valid: function() { + var include, + filter = config.filter && config.filter.toLowerCase(), + module = QUnit.urlParams.module && QUnit.urlParams.module.toLowerCase(), + fullName = ( this.module.name + ": " + this.testName ).toLowerCase(); + + // Internally-generated tests are always valid + if ( this.callback && this.callback.validTest ) { + return true; + } + + if ( config.testId.length > 0 && inArray( this.testId, config.testId ) < 0 ) { + return false; + } + + if ( module && ( !this.module.name || this.module.name.toLowerCase() !== module ) ) { + return false; + } + + if ( !filter ) { + return true; + } + + include = filter.charAt( 0 ) !== "!"; + if ( !include ) { + filter = filter.slice( 1 ); + } + + // If the filter matches, we need to honour include + if ( fullName.indexOf( filter ) !== -1 ) { + return include; + } + + // Otherwise, do the opposite + return !include; + } + +}; + +// Resets the test setup. Useful for tests that modify the DOM. +/* +DEPRECATED: Use multiple tests instead of resetting inside a test. +Use testStart or testDone for custom cleanup. +This method will throw an error in 2.0, and will be removed in 2.1 +*/ +QUnit.reset = function() { + + // Return on non-browser environments + // This is necessary to not break on node tests + if ( typeof window === "undefined" ) { + return; + } + + var fixture = defined.document && document.getElementById && + document.getElementById( "qunit-fixture" ); + + if ( fixture ) { + fixture.innerHTML = config.fixture; + } +}; + +QUnit.pushFailure = function() { + if ( !QUnit.config.current ) { + throw new Error( "pushFailure() assertion outside test context, in " + + sourceFromStacktrace( 2 ) ); + } + + // Gets current test obj + var currentTest = QUnit.config.current; + + return currentTest.pushFailure.apply( currentTest, arguments ); +}; + +// Based on Java's String.hashCode, a simple but not +// rigorously collision resistant hashing function +function generateHash( module, testName ) { + var hex, + i = 0, + hash = 0, + str = module + "\x1C" + testName, + len = str.length; + + for ( ; i < len; i++ ) { + hash = ( ( hash << 5 ) - hash ) + str.charCodeAt( i ); + hash |= 0; + } + + // Convert the possibly negative integer hash code into an 8 character hex string, which isn't + // strictly necessary but increases user understanding that the id is a SHA-like hash + hex = ( 0x100000000 + hash ).toString( 16 ); + if ( hex.length < 8 ) { + hex = "0000000" + hex; + } + + return hex.slice( -8 ); +} + +function Assert( testContext ) { + this.test = testContext; +} + +// Assert helpers +QUnit.assert = Assert.prototype = { + + // Specify the number of expected assertions to guarantee that failed test + // (no assertions are run at all) don't slip through. + expect: function( asserts ) { + if ( arguments.length === 1 ) { + this.test.expected = asserts; + } else { + return this.test.expected; + } + }, + + // Increment this Test's semaphore counter, then return a single-use function that + // decrements that counter a maximum of once. + async: function() { + var test = this.test, + popped = false; + + test.semaphore += 1; + test.usedAsync = true; + pauseProcessing(); + + return function done() { + if ( !popped ) { + test.semaphore -= 1; + popped = true; + resumeProcessing(); + } else { + test.pushFailure( "Called the callback returned from `assert.async` more than once", + sourceFromStacktrace( 2 ) ); + } + }; + }, + + // Exports test.push() to the user API + push: function( /* result, actual, expected, message */ ) { + var assert = this, + currentTest = ( assert instanceof Assert && assert.test ) || QUnit.config.current; + + // Backwards compatibility fix. + // Allows the direct use of global exported assertions and QUnit.assert.* + // Although, it's use is not recommended as it can leak assertions + // to other tests from async tests, because we only get a reference to the current test, + // not exactly the test where assertion were intended to be called. + if ( !currentTest ) { + throw new Error( "assertion outside test context, in " + sourceFromStacktrace( 2 ) ); + } + + if ( currentTest.usedAsync === true && currentTest.semaphore === 0 ) { + currentTest.pushFailure( "Assertion after the final `assert.async` was resolved", + sourceFromStacktrace( 2 ) ); + + // Allow this assertion to continue running anyway... + } + + if ( !( assert instanceof Assert ) ) { + assert = currentTest.assert; + } + return assert.test.push.apply( assert.test, arguments ); + }, + + /** + * Asserts rough true-ish result. + * @name ok + * @function + * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" ); + */ + ok: function( result, message ) { + message = message || ( result ? "okay" : "failed, expected argument to be truthy, was: " + + QUnit.dump.parse( result ) ); + this.push( !!result, result, true, message ); + }, + + /** + * Assert that the first two arguments are equal, with an optional message. + * Prints out both actual and expected values. + * @name equal + * @function + * @example equal( format( "{0} bytes.", 2), "2 bytes.", "replaces {0} with next argument" ); + */ + equal: function( actual, expected, message ) { + /*jshint eqeqeq:false */ + this.push( expected == actual, actual, expected, message ); + }, + + /** + * @name notEqual + * @function + */ + notEqual: function( actual, expected, message ) { + /*jshint eqeqeq:false */ + this.push( expected != actual, actual, expected, message ); + }, + + /** + * @name propEqual + * @function + */ + propEqual: function( actual, expected, message ) { + actual = objectValues( actual ); + expected = objectValues( expected ); + this.push( QUnit.equiv( actual, expected ), actual, expected, message ); + }, + + /** + * @name notPropEqual + * @function + */ + notPropEqual: function( actual, expected, message ) { + actual = objectValues( actual ); + expected = objectValues( expected ); + this.push( !QUnit.equiv( actual, expected ), actual, expected, message ); + }, + + /** + * @name deepEqual + * @function + */ + deepEqual: function( actual, expected, message ) { + this.push( QUnit.equiv( actual, expected ), actual, expected, message ); + }, + + /** + * @name notDeepEqual + * @function + */ + notDeepEqual: function( actual, expected, message ) { + this.push( !QUnit.equiv( actual, expected ), actual, expected, message ); + }, + + /** + * @name strictEqual + * @function + */ + strictEqual: function( actual, expected, message ) { + this.push( expected === actual, actual, expected, message ); + }, + + /** + * @name notStrictEqual + * @function + */ + notStrictEqual: function( actual, expected, message ) { + this.push( expected !== actual, actual, expected, message ); + }, + + "throws": function( block, expected, message ) { + var actual, expectedType, + expectedOutput = expected, + ok = false; + + // 'expected' is optional unless doing string comparison + if ( message == null && typeof expected === "string" ) { + message = expected; + expected = null; + } + + this.test.ignoreGlobalErrors = true; + try { + block.call( this.test.testEnvironment ); + } catch (e) { + actual = e; + } + this.test.ignoreGlobalErrors = false; + + if ( actual ) { + expectedType = QUnit.objectType( expected ); + + // we don't want to validate thrown error + if ( !expected ) { + ok = true; + expectedOutput = null; + + // expected is a regexp + } else if ( expectedType === "regexp" ) { + ok = expected.test( errorString( actual ) ); + + // expected is a string + } else if ( expectedType === "string" ) { + ok = expected === errorString( actual ); + + // expected is a constructor, maybe an Error constructor + } else if ( expectedType === "function" && actual instanceof expected ) { + ok = true; + + // expected is an Error object + } else if ( expectedType === "object" ) { + ok = actual instanceof expected.constructor && + actual.name === expected.name && + actual.message === expected.message; + + // expected is a validation function which returns true if validation passed + } else if ( expectedType === "function" && expected.call( {}, actual ) === true ) { + expectedOutput = null; + ok = true; + } + + this.push( ok, actual, expectedOutput, message ); + } else { + this.test.pushFailure( message, null, "No exception was thrown." ); + } + } +}; + +// Provide an alternative to assert.throws(), for enviroments that consider throws a reserved word +// Known to us are: Closure Compiler, Narwhal +(function() { + /*jshint sub:true */ + Assert.prototype.raises = Assert.prototype[ "throws" ]; +}()); + +// Test for equality any JavaScript type. +// Author: Philippe Rathé +QUnit.equiv = (function() { + + // Call the o related callback with the given arguments. + function bindCallbacks( o, callbacks, args ) { + var prop = QUnit.objectType( o ); + if ( prop ) { + if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) { + return callbacks[ prop ].apply( callbacks, args ); + } else { + return callbacks[ prop ]; // or undefined + } + } + } + + // the real equiv function + var innerEquiv, + + // stack to decide between skip/abort functions + callers = [], + + // stack to avoiding loops from circular referencing + parents = [], + parentsB = [], + + getProto = Object.getPrototypeOf || function( obj ) { + /* jshint camelcase: false, proto: true */ + return obj.__proto__; + }, + callbacks = (function() { + + // for string, boolean, number and null + function useStrictEquality( b, a ) { + + /*jshint eqeqeq:false */ + if ( b instanceof a.constructor || a instanceof b.constructor ) { + + // to catch short annotation VS 'new' annotation of a + // declaration + // e.g. var i = 1; + // var j = new Number(1); + return a == b; + } else { + return a === b; + } + } + + return { + "string": useStrictEquality, + "boolean": useStrictEquality, + "number": useStrictEquality, + "null": useStrictEquality, + "undefined": useStrictEquality, + + "nan": function( b ) { + return isNaN( b ); + }, + + "date": function( b, a ) { + return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf(); + }, + + "regexp": function( b, a ) { + return QUnit.objectType( b ) === "regexp" && + + // the regex itself + a.source === b.source && + + // and its modifiers + a.global === b.global && + + // (gmi) ... + a.ignoreCase === b.ignoreCase && + a.multiline === b.multiline && + a.sticky === b.sticky; + }, + + // - skip when the property is a method of an instance (OOP) + // - abort otherwise, + // initial === would have catch identical references anyway + "function": function() { + var caller = callers[ callers.length - 1 ]; + return caller !== Object && typeof caller !== "undefined"; + }, + + "array": function( b, a ) { + var i, j, len, loop, aCircular, bCircular; + + // b could be an object literal here + if ( QUnit.objectType( b ) !== "array" ) { + return false; + } + + len = a.length; + if ( len !== b.length ) { + // safe and faster + return false; + } + + // track reference to avoid circular references + parents.push( a ); + parentsB.push( b ); + for ( i = 0; i < len; i++ ) { + loop = false; + for ( j = 0; j < parents.length; j++ ) { + aCircular = parents[ j ] === a[ i ]; + bCircular = parentsB[ j ] === b[ i ]; + if ( aCircular || bCircular ) { + if ( a[ i ] === b[ i ] || aCircular && bCircular ) { + loop = true; + } else { + parents.pop(); + parentsB.pop(); + return false; + } + } + } + if ( !loop && !innerEquiv( a[ i ], b[ i ] ) ) { + parents.pop(); + parentsB.pop(); + return false; + } + } + parents.pop(); + parentsB.pop(); + return true; + }, + + "object": function( b, a ) { + + /*jshint forin:false */ + var i, j, loop, aCircular, bCircular, + // Default to true + eq = true, + aProperties = [], + bProperties = []; + + // comparing constructors is more strict than using + // instanceof + if ( a.constructor !== b.constructor ) { + + // Allow objects with no prototype to be equivalent to + // objects with Object as their constructor. + if ( !( ( getProto( a ) === null && getProto( b ) === Object.prototype ) || + ( getProto( b ) === null && getProto( a ) === Object.prototype ) ) ) { + return false; + } + } + + // stack constructor before traversing properties + callers.push( a.constructor ); + + // track reference to avoid circular references + parents.push( a ); + parentsB.push( b ); + + // be strict: don't ensure hasOwnProperty and go deep + for ( i in a ) { + loop = false; + for ( j = 0; j < parents.length; j++ ) { + aCircular = parents[ j ] === a[ i ]; + bCircular = parentsB[ j ] === b[ i ]; + if ( aCircular || bCircular ) { + if ( a[ i ] === b[ i ] || aCircular && bCircular ) { + loop = true; + } else { + eq = false; + break; + } + } + } + aProperties.push( i ); + if ( !loop && !innerEquiv( a[ i ], b[ i ] ) ) { + eq = false; + break; + } + } + + parents.pop(); + parentsB.pop(); + callers.pop(); // unstack, we are done + + for ( i in b ) { + bProperties.push( i ); // collect b's properties + } + + // Ensures identical properties name + return eq && innerEquiv( aProperties.sort(), bProperties.sort() ); + } + }; + }()); + + innerEquiv = function() { // can take multiple arguments + var args = [].slice.apply( arguments ); + if ( args.length < 2 ) { + return true; // end transition + } + + return ( (function( a, b ) { + if ( a === b ) { + return true; // catch the most you can + } else if ( a === null || b === null || typeof a === "undefined" || + typeof b === "undefined" || + QUnit.objectType( a ) !== QUnit.objectType( b ) ) { + + // don't lose time with error prone cases + return false; + } else { + return bindCallbacks( a, callbacks, [ b, a ] ); + } + + // apply transition with (1..n) arguments + }( args[ 0 ], args[ 1 ] ) ) && + innerEquiv.apply( this, args.splice( 1, args.length - 1 ) ) ); + }; + + return innerEquiv; +}()); + +// Based on jsDump by Ariel Flesler +// http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html +QUnit.dump = (function() { + function quote( str ) { + return "\"" + str.toString().replace( /"/g, "\\\"" ) + "\""; + } + function literal( o ) { + return o + ""; + } + function join( pre, arr, post ) { + var s = dump.separator(), + base = dump.indent(), + inner = dump.indent( 1 ); + if ( arr.join ) { + arr = arr.join( "," + s + inner ); + } + if ( !arr ) { + return pre + post; + } + return [ pre, inner + arr, base + post ].join( s ); + } + function array( arr, stack ) { + var i = arr.length, + ret = new Array( i ); + + if ( dump.maxDepth && dump.depth > dump.maxDepth ) { + return "[object Array]"; + } + + this.up(); + while ( i-- ) { + ret[ i ] = this.parse( arr[ i ], undefined, stack ); + } + this.down(); + return join( "[", ret, "]" ); + } + + var reName = /^function (\w+)/, + dump = { + + // objType is used mostly internally, you can fix a (custom) type in advance + parse: function( obj, objType, stack ) { + stack = stack || []; + var res, parser, parserType, + inStack = inArray( obj, stack ); + + if ( inStack !== -1 ) { + return "recursion(" + ( inStack - stack.length ) + ")"; + } + + objType = objType || this.typeOf( obj ); + parser = this.parsers[ objType ]; + parserType = typeof parser; + + if ( parserType === "function" ) { + stack.push( obj ); + res = parser.call( this, obj, stack ); + stack.pop(); + return res; + } + return ( parserType === "string" ) ? parser : this.parsers.error; + }, + typeOf: function( obj ) { + var type; + if ( obj === null ) { + type = "null"; + } else if ( typeof obj === "undefined" ) { + type = "undefined"; + } else if ( QUnit.is( "regexp", obj ) ) { + type = "regexp"; + } else if ( QUnit.is( "date", obj ) ) { + type = "date"; + } else if ( QUnit.is( "function", obj ) ) { + type = "function"; + } else if ( obj.setInterval !== undefined && + obj.document !== undefined && + obj.nodeType === undefined ) { + type = "window"; + } else if ( obj.nodeType === 9 ) { + type = "document"; + } else if ( obj.nodeType ) { + type = "node"; + } else if ( + + // native arrays + toString.call( obj ) === "[object Array]" || + + // NodeList objects + ( typeof obj.length === "number" && obj.item !== undefined && + ( obj.length ? obj.item( 0 ) === obj[ 0 ] : ( obj.item( 0 ) === null && + obj[ 0 ] === undefined ) ) ) + ) { + type = "array"; + } else if ( obj.constructor === Error.prototype.constructor ) { + type = "error"; + } else { + type = typeof obj; + } + return type; + }, + separator: function() { + return this.multiline ? this.HTML ? "
      " : "\n" : this.HTML ? " " : " "; + }, + // extra can be a number, shortcut for increasing-calling-decreasing + indent: function( extra ) { + if ( !this.multiline ) { + return ""; + } + var chr = this.indentChar; + if ( this.HTML ) { + chr = chr.replace( /\t/g, " " ).replace( / /g, " " ); + } + return new Array( this.depth + ( extra || 0 ) ).join( chr ); + }, + up: function( a ) { + this.depth += a || 1; + }, + down: function( a ) { + this.depth -= a || 1; + }, + setParser: function( name, parser ) { + this.parsers[ name ] = parser; + }, + // The next 3 are exposed so you can use them + quote: quote, + literal: literal, + join: join, + // + depth: 1, + maxDepth: 5, + + // This is the list of parsers, to modify them, use dump.setParser + parsers: { + window: "[Window]", + document: "[Document]", + error: function( error ) { + return "Error(\"" + error.message + "\")"; + }, + unknown: "[Unknown]", + "null": "null", + "undefined": "undefined", + "function": function( fn ) { + var ret = "function", + + // functions never have name in IE + name = "name" in fn ? fn.name : ( reName.exec( fn ) || [] )[ 1 ]; + + if ( name ) { + ret += " " + name; + } + ret += "( "; + + ret = [ ret, dump.parse( fn, "functionArgs" ), "){" ].join( "" ); + return join( ret, dump.parse( fn, "functionCode" ), "}" ); + }, + array: array, + nodelist: array, + "arguments": array, + object: function( map, stack ) { + var keys, key, val, i, nonEnumerableProperties, + ret = []; + + if ( dump.maxDepth && dump.depth > dump.maxDepth ) { + return "[object Object]"; + } + + dump.up(); + keys = []; + for ( key in map ) { + keys.push( key ); + } + + // Some properties are not always enumerable on Error objects. + nonEnumerableProperties = [ "message", "name" ]; + for ( i in nonEnumerableProperties ) { + key = nonEnumerableProperties[ i ]; + if ( key in map && !( key in keys ) ) { + keys.push( key ); + } + } + keys.sort(); + for ( i = 0; i < keys.length; i++ ) { + key = keys[ i ]; + val = map[ key ]; + ret.push( dump.parse( key, "key" ) + ": " + + dump.parse( val, undefined, stack ) ); + } + dump.down(); + return join( "{", ret, "}" ); + }, + node: function( node ) { + var len, i, val, + open = dump.HTML ? "<" : "<", + close = dump.HTML ? ">" : ">", + tag = node.nodeName.toLowerCase(), + ret = open + tag, + attrs = node.attributes; + + if ( attrs ) { + for ( i = 0, len = attrs.length; i < len; i++ ) { + val = attrs[ i ].nodeValue; + + // IE6 includes all attributes in .attributes, even ones not explicitly + // set. Those have values like undefined, null, 0, false, "" or + // "inherit". + if ( val && val !== "inherit" ) { + ret += " " + attrs[ i ].nodeName + "=" + + dump.parse( val, "attribute" ); + } + } + } + ret += close; + + // Show content of TextNode or CDATASection + if ( node.nodeType === 3 || node.nodeType === 4 ) { + ret += node.nodeValue; + } + + return ret + open + "/" + tag + close; + }, + + // function calls it internally, it's the arguments part of the function + functionArgs: function( fn ) { + var args, + l = fn.length; + + if ( !l ) { + return ""; + } + + args = new Array( l ); + while ( l-- ) { + + // 97 is 'a' + args[ l ] = String.fromCharCode( 97 + l ); + } + return " " + args.join( ", " ) + " "; + }, + // object calls it internally, the key part of an item in a map + key: quote, + // function calls it internally, it's the content of the function + functionCode: "[code]", + // node calls it internally, it's an html attribute value + attribute: quote, + string: quote, + date: quote, + regexp: literal, + number: literal, + "boolean": literal + }, + // if true, entities are escaped ( <, >, \t, space and \n ) + HTML: false, + // indentation unit + indentChar: " ", + // if true, items in a collection, are separated by a \n, else just a space. + multiline: true + }; + + return dump; +}()); + +// back compat +QUnit.jsDump = QUnit.dump; + +// For browser, export only select globals +if ( typeof window !== "undefined" ) { + + // Deprecated + // Extend assert methods to QUnit and Global scope through Backwards compatibility + (function() { + var i, + assertions = Assert.prototype; + + function applyCurrent( current ) { + return function() { + var assert = new Assert( QUnit.config.current ); + current.apply( assert, arguments ); + }; + } + + for ( i in assertions ) { + QUnit[ i ] = applyCurrent( assertions[ i ] ); + } + })(); + + (function() { + var i, l, + keys = [ + "test", + "module", + "expect", + "asyncTest", + "start", + "stop", + "ok", + "equal", + "notEqual", + "propEqual", + "notPropEqual", + "deepEqual", + "notDeepEqual", + "strictEqual", + "notStrictEqual", + "throws" + ]; + + for ( i = 0, l = keys.length; i < l; i++ ) { + window[ keys[ i ] ] = QUnit[ keys[ i ] ]; + } + })(); + + window.QUnit = QUnit; +} + +// For nodejs +if ( typeof module !== "undefined" && module.exports ) { + module.exports = QUnit; +} + +// For CommonJS with exports, but without module.exports, like Rhino +if ( typeof exports !== "undefined" ) { + exports.QUnit = QUnit; +} + +// Get a reference to the global object, like window in browsers +}( (function() { + return this; +})() )); + +/*istanbul ignore next */ +// jscs:disable maximumLineLength +/* + * Javascript Diff Algorithm + * By John Resig (http://ejohn.org/) + * Modified by Chu Alan "sprite" + * + * Released under the MIT license. + * + * More Info: + * http://ejohn.org/projects/javascript-diff-algorithm/ + * + * Usage: QUnit.diff(expected, actual) + * + * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the quick brown fox jumped jumps over" + */ +QUnit.diff = (function() { + var hasOwn = Object.prototype.hasOwnProperty; + + /*jshint eqeqeq:false, eqnull:true */ + function diff( o, n ) { + var i, + ns = {}, + os = {}; + + for ( i = 0; i < n.length; i++ ) { + if ( !hasOwn.call( ns, n[ i ] ) ) { + ns[ n[ i ] ] = { + rows: [], + o: null + }; + } + ns[ n[ i ] ].rows.push( i ); + } + + for ( i = 0; i < o.length; i++ ) { + if ( !hasOwn.call( os, o[ i ] ) ) { + os[ o[ i ] ] = { + rows: [], + n: null + }; + } + os[ o[ i ] ].rows.push( i ); + } + + for ( i in ns ) { + if ( hasOwn.call( ns, i ) ) { + if ( ns[ i ].rows.length === 1 && hasOwn.call( os, i ) && os[ i ].rows.length === 1 ) { + n[ ns[ i ].rows[ 0 ] ] = { + text: n[ ns[ i ].rows[ 0 ] ], + row: os[ i ].rows[ 0 ] + }; + o[ os[ i ].rows[ 0 ] ] = { + text: o[ os[ i ].rows[ 0 ] ], + row: ns[ i ].rows[ 0 ] + }; + } + } + } + + for ( i = 0; i < n.length - 1; i++ ) { + if ( n[ i ].text != null && n[ i + 1 ].text == null && n[ i ].row + 1 < o.length && o[ n[ i ].row + 1 ].text == null && + n[ i + 1 ] == o[ n[ i ].row + 1 ] ) { + + n[ i + 1 ] = { + text: n[ i + 1 ], + row: n[ i ].row + 1 + }; + o[ n[ i ].row + 1 ] = { + text: o[ n[ i ].row + 1 ], + row: i + 1 + }; + } + } + + for ( i = n.length - 1; i > 0; i-- ) { + if ( n[ i ].text != null && n[ i - 1 ].text == null && n[ i ].row > 0 && o[ n[ i ].row - 1 ].text == null && + n[ i - 1 ] == o[ n[ i ].row - 1 ] ) { + + n[ i - 1 ] = { + text: n[ i - 1 ], + row: n[ i ].row - 1 + }; + o[ n[ i ].row - 1 ] = { + text: o[ n[ i ].row - 1 ], + row: i - 1 + }; + } + } + + return { + o: o, + n: n + }; + } + + return function( o, n ) { + o = o.replace( /\s+$/, "" ); + n = n.replace( /\s+$/, "" ); + + var i, pre, + str = "", + out = diff( o === "" ? [] : o.split( /\s+/ ), n === "" ? [] : n.split( /\s+/ ) ), + oSpace = o.match( /\s+/g ), + nSpace = n.match( /\s+/g ); + + if ( oSpace == null ) { + oSpace = [ " " ]; + } else { + oSpace.push( " " ); + } + + if ( nSpace == null ) { + nSpace = [ " " ]; + } else { + nSpace.push( " " ); + } + + if ( out.n.length === 0 ) { + for ( i = 0; i < out.o.length; i++ ) { + str += "" + out.o[ i ] + oSpace[ i ] + ""; + } + } else { + if ( out.n[ 0 ].text == null ) { + for ( n = 0; n < out.o.length && out.o[ n ].text == null; n++ ) { + str += "" + out.o[ n ] + oSpace[ n ] + ""; + } + } + + for ( i = 0; i < out.n.length; i++ ) { + if ( out.n[ i ].text == null ) { + str += "" + out.n[ i ] + nSpace[ i ] + ""; + } else { + + // `pre` initialized at top of scope + pre = ""; + + for ( n = out.n[ i ].row + 1; n < out.o.length && out.o[ n ].text == null; n++ ) { + pre += "" + out.o[ n ] + oSpace[ n ] + ""; + } + str += " " + out.n[ i ].text + nSpace[ i ] + pre; + } + } + } + + return str; + }; +}()); +// jscs:enable + +(function() { + +// Deprecated QUnit.init - Ref #530 +// Re-initialize the configuration options +QUnit.init = function() { + var tests, banner, result, qunit, + config = QUnit.config; + + config.stats = { all: 0, bad: 0 }; + config.moduleStats = { all: 0, bad: 0 }; + config.started = 0; + config.updateRate = 1000; + config.blocking = false; + config.autostart = true; + config.autorun = false; + config.filter = ""; + config.queue = []; + + // Return on non-browser environments + // This is necessary to not break on node tests + if ( typeof window === "undefined" ) { + return; + } + + qunit = id( "qunit" ); + if ( qunit ) { + qunit.innerHTML = + "

      " + escapeText( document.title ) + "

      " + + "

      " + + "
      " + + "

      " + + "
        "; + } + + tests = id( "qunit-tests" ); + banner = id( "qunit-banner" ); + result = id( "qunit-testresult" ); + + if ( tests ) { + tests.innerHTML = ""; + } + + if ( banner ) { + banner.className = ""; + } + + if ( result ) { + result.parentNode.removeChild( result ); + } + + if ( tests ) { + result = document.createElement( "p" ); + result.id = "qunit-testresult"; + result.className = "result"; + tests.parentNode.insertBefore( result, tests ); + result.innerHTML = "Running...
         "; + } +}; + +// Don't load the HTML Reporter on non-Browser environments +if ( typeof window === "undefined" ) { + return; +} + +var config = QUnit.config, + hasOwn = Object.prototype.hasOwnProperty, + defined = { + document: window.document !== undefined, + sessionStorage: (function() { + var x = "qunit-test-string"; + try { + sessionStorage.setItem( x, x ); + sessionStorage.removeItem( x ); + return true; + } catch ( e ) { + return false; + } + }()) + }, + modulesList = []; + +/** +* Escape text for attribute or text content. +*/ +function escapeText( s ) { + if ( !s ) { + return ""; + } + s = s + ""; + + // Both single quotes and double quotes (for attributes) + return s.replace( /['"<>&]/g, function( s ) { + switch ( s ) { + case "'": + return "'"; + case "\"": + return """; + case "<": + return "<"; + case ">": + return ">"; + case "&": + return "&"; + } + }); +} + +/** + * @param {HTMLElement} elem + * @param {string} type + * @param {Function} fn + */ +function addEvent( elem, type, fn ) { + if ( elem.addEventListener ) { + + // Standards-based browsers + elem.addEventListener( type, fn, false ); + } else if ( elem.attachEvent ) { + + // support: IE <9 + elem.attachEvent( "on" + type, fn ); + } +} + +/** + * @param {Array|NodeList} elems + * @param {string} type + * @param {Function} fn + */ +function addEvents( elems, type, fn ) { + var i = elems.length; + while ( i-- ) { + addEvent( elems[ i ], type, fn ); + } +} + +function hasClass( elem, name ) { + return ( " " + elem.className + " " ).indexOf( " " + name + " " ) >= 0; +} + +function addClass( elem, name ) { + if ( !hasClass( elem, name ) ) { + elem.className += ( elem.className ? " " : "" ) + name; + } +} + +function toggleClass( elem, name ) { + if ( hasClass( elem, name ) ) { + removeClass( elem, name ); + } else { + addClass( elem, name ); + } +} + +function removeClass( elem, name ) { + var set = " " + elem.className + " "; + + // Class name may appear multiple times + while ( set.indexOf( " " + name + " " ) >= 0 ) { + set = set.replace( " " + name + " ", " " ); + } + + // trim for prettiness + elem.className = typeof set.trim === "function" ? set.trim() : set.replace( /^\s+|\s+$/g, "" ); +} + +function id( name ) { + return defined.document && document.getElementById && document.getElementById( name ); +} + +function getUrlConfigHtml() { + var i, j, val, + escaped, escapedTooltip, + selection = false, + len = config.urlConfig.length, + urlConfigHtml = ""; + + for ( i = 0; i < len; i++ ) { + val = config.urlConfig[ i ]; + if ( typeof val === "string" ) { + val = { + id: val, + label: val + }; + } + + escaped = escapeText( val.id ); + escapedTooltip = escapeText( val.tooltip ); + + config[ val.id ] = QUnit.urlParams[ val.id ]; + if ( !val.value || typeof val.value === "string" ) { + urlConfigHtml += ""; + } else { + urlConfigHtml += ""; + } + } + + return urlConfigHtml; +} + +// Handle "click" events on toolbar checkboxes and "change" for select menus. +// Updates the URL with the new state of `config.urlConfig` values. +function toolbarChanged() { + var updatedUrl, value, + field = this, + params = {}; + + // Detect if field is a select menu or a checkbox + if ( "selectedIndex" in field ) { + value = field.options[ field.selectedIndex ].value || undefined; + } else { + value = field.checked ? ( field.defaultValue || true ) : undefined; + } + + params[ field.name ] = value; + updatedUrl = QUnit.url( params ); + + if ( "hidepassed" === field.name && "replaceState" in window.history ) { + config[ field.name ] = value || false; + if ( value ) { + addClass( id( "qunit-tests" ), "hidepass" ); + } else { + removeClass( id( "qunit-tests" ), "hidepass" ); + } + + // It is not necessary to refresh the whole page + window.history.replaceState( null, "", updatedUrl ); + } else { + window.location = updatedUrl; + } +} + +function toolbarUrlConfigContainer() { + var urlConfigContainer = document.createElement( "span" ); + + urlConfigContainer.innerHTML = getUrlConfigHtml(); + + // For oldIE support: + // * Add handlers to the individual elements instead of the container + // * Use "click" instead of "change" for checkboxes + addEvents( urlConfigContainer.getElementsByTagName( "input" ), "click", toolbarChanged ); + addEvents( urlConfigContainer.getElementsByTagName( "select" ), "change", toolbarChanged ); + + return urlConfigContainer; +} + +function toolbarModuleFilterHtml() { + var i, + moduleFilterHtml = ""; + + if ( !modulesList.length ) { + return false; + } + + modulesList.sort(function( a, b ) { + return a.localeCompare( b ); + }); + + moduleFilterHtml += "" + + ""; + + return moduleFilterHtml; +} + +function toolbarModuleFilter() { + var toolbar = id( "qunit-testrunner-toolbar" ), + moduleFilter = document.createElement( "span" ), + moduleFilterHtml = toolbarModuleFilterHtml(); + + if ( !moduleFilterHtml ) { + return false; + } + + moduleFilter.setAttribute( "id", "qunit-modulefilter-container" ); + moduleFilter.innerHTML = moduleFilterHtml; + + addEvent( moduleFilter.lastChild, "change", function() { + var selectBox = moduleFilter.getElementsByTagName( "select" )[ 0 ], + selection = decodeURIComponent( selectBox.options[ selectBox.selectedIndex ].value ); + + window.location = QUnit.url({ + module: ( selection === "" ) ? undefined : selection, + + // Remove any existing filters + filter: undefined, + testId: undefined + }); + }); + + toolbar.appendChild( moduleFilter ); +} + +function appendToolbar() { + var toolbar = id( "qunit-testrunner-toolbar" ); + + if ( toolbar ) { + toolbar.appendChild( toolbarUrlConfigContainer() ); + } +} + +function appendBanner() { + var banner = id( "qunit-banner" ); + + if ( banner ) { + banner.className = ""; + banner.innerHTML = "" + banner.innerHTML + " "; + } +} + +function appendTestResults() { + var tests = id( "qunit-tests" ), + result = id( "qunit-testresult" ); + + if ( result ) { + result.parentNode.removeChild( result ); + } + + if ( tests ) { + tests.innerHTML = ""; + result = document.createElement( "p" ); + result.id = "qunit-testresult"; + result.className = "result"; + tests.parentNode.insertBefore( result, tests ); + result.innerHTML = "Running...
         "; + } +} + +function storeFixture() { + var fixture = id( "qunit-fixture" ); + if ( fixture ) { + config.fixture = fixture.innerHTML; + } +} + +function appendUserAgent() { + var userAgent = id( "qunit-userAgent" ); + if ( userAgent ) { + userAgent.innerHTML = navigator.userAgent; + } +} + +function appendTestsList( modules ) { + var i, l, x, z, test, moduleObj; + + for ( i = 0, l = modules.length; i < l; i++ ) { + moduleObj = modules[ i ]; + + if ( moduleObj.name ) { + modulesList.push( moduleObj.name ); + } + + for ( x = 0, z = moduleObj.tests.length; x < z; x++ ) { + test = moduleObj.tests[ x ]; + + appendTest( test.name, test.testId, moduleObj.name ); + } + } +} + +function appendTest( name, testId, moduleName ) { + var title, rerunTrigger, testBlock, assertList, + tests = id( "qunit-tests" ); + + if ( !tests ) { + return; + } + + title = document.createElement( "strong" ); + title.innerHTML = getNameHtml( name, moduleName ); + + rerunTrigger = document.createElement( "a" ); + rerunTrigger.innerHTML = "Rerun"; + rerunTrigger.href = QUnit.url({ testId: testId }); + + testBlock = document.createElement( "li" ); + testBlock.appendChild( title ); + testBlock.appendChild( rerunTrigger ); + testBlock.id = "qunit-test-output-" + testId; + + assertList = document.createElement( "ol" ); + assertList.className = "qunit-assert-list"; + + testBlock.appendChild( assertList ); + + tests.appendChild( testBlock ); +} + +// HTML Reporter initialization and load +QUnit.begin(function( details ) { + var qunit = id( "qunit" ); + + // Fixture is the only one necessary to run without the #qunit element + storeFixture(); + + if ( !qunit ) { + return; + } + + qunit.innerHTML = + "

        " + escapeText( document.title ) + "

        " + + "

        " + + "
        " + + "

        " + + "
          "; + + appendBanner(); + appendTestResults(); + appendUserAgent(); + appendToolbar(); + appendTestsList( details.modules ); + toolbarModuleFilter(); + + if ( config.hidepassed ) { + addClass( qunit.lastChild, "hidepass" ); + } +}); + +QUnit.done(function( details ) { + var i, key, + banner = id( "qunit-banner" ), + tests = id( "qunit-tests" ), + html = [ + "Tests completed in ", + details.runtime, + " milliseconds.
          ", + "", + details.passed, + " assertions of ", + details.total, + " passed, ", + details.failed, + " failed." + ].join( "" ); + + if ( banner ) { + banner.className = details.failed ? "qunit-fail" : "qunit-pass"; + } + + if ( tests ) { + id( "qunit-testresult" ).innerHTML = html; + } + + if ( config.altertitle && defined.document && document.title ) { + + // show ✖ for good, ✔ for bad suite result in title + // use escape sequences in case file gets loaded with non-utf-8-charset + document.title = [ + ( details.failed ? "\u2716" : "\u2714" ), + document.title.replace( /^[\u2714\u2716] /i, "" ) + ].join( " " ); + } + + // clear own sessionStorage items if all tests passed + if ( config.reorder && defined.sessionStorage && details.failed === 0 ) { + for ( i = 0; i < sessionStorage.length; i++ ) { + key = sessionStorage.key( i++ ); + if ( key.indexOf( "qunit-test-" ) === 0 ) { + sessionStorage.removeItem( key ); + } + } + } + + // scroll back to top to show results + if ( config.scrolltop && window.scrollTo ) { + window.scrollTo( 0, 0 ); + } +}); + +function getNameHtml( name, module ) { + var nameHtml = ""; + + if ( module ) { + nameHtml = "" + escapeText( module ) + ": "; + } + + nameHtml += "" + escapeText( name ) + ""; + + return nameHtml; +} + +QUnit.testStart(function( details ) { + var running, testBlock; + + testBlock = id( "qunit-test-output-" + details.testId ); + if ( testBlock ) { + testBlock.className = "running"; + } else { + + // Report later registered tests + appendTest( details.name, details.testId, details.module ); + } + + running = id( "qunit-testresult" ); + if ( running ) { + running.innerHTML = "Running:
          " + getNameHtml( details.name, details.module ); + } + +}); + +QUnit.log(function( details ) { + var assertList, assertLi, + message, expected, actual, + testItem = id( "qunit-test-output-" + details.testId ); + + if ( !testItem ) { + return; + } + + message = escapeText( details.message ) || ( details.result ? "okay" : "failed" ); + message = "" + message + ""; + message += "@ " + details.runtime + " ms"; + + // pushFailure doesn't provide details.expected + // when it calls, it's implicit to also not show expected and diff stuff + // Also, we need to check details.expected existence, as it can exist and be undefined + if ( !details.result && hasOwn.call( details, "expected" ) ) { + expected = escapeText( QUnit.dump.parse( details.expected ) ); + actual = escapeText( QUnit.dump.parse( details.actual ) ); + message += ""; + + if ( actual !== expected ) { + message += "" + + ""; + } + + if ( details.source ) { + message += ""; + } + + message += "
          Expected:
          " +
          +			expected +
          +			"
          Result:
          " +
          +				actual + "
          Diff:
          " +
          +				QUnit.diff( expected, actual ) + "
          Source:
          " +
          +				escapeText( details.source ) + "
          "; + + // this occours when pushFailure is set and we have an extracted stack trace + } else if ( !details.result && details.source ) { + message += "" + + "" + + "
          Source:
          " +
          +			escapeText( details.source ) + "
          "; + } + + assertList = testItem.getElementsByTagName( "ol" )[ 0 ]; + + assertLi = document.createElement( "li" ); + assertLi.className = details.result ? "pass" : "fail"; + assertLi.innerHTML = message; + assertList.appendChild( assertLi ); +}); + +QUnit.testDone(function( details ) { + var testTitle, time, testItem, assertList, + good, bad, testCounts, skipped, + tests = id( "qunit-tests" ); + + if ( !tests ) { + return; + } + + testItem = id( "qunit-test-output-" + details.testId ); + + assertList = testItem.getElementsByTagName( "ol" )[ 0 ]; + + good = details.passed; + bad = details.failed; + + // store result when possible + if ( config.reorder && defined.sessionStorage ) { + if ( bad ) { + sessionStorage.setItem( "qunit-test-" + details.module + "-" + details.name, bad ); + } else { + sessionStorage.removeItem( "qunit-test-" + details.module + "-" + details.name ); + } + } + + if ( bad === 0 ) { + addClass( assertList, "qunit-collapsed" ); + } + + // testItem.firstChild is the test name + testTitle = testItem.firstChild; + + testCounts = bad ? + "" + bad + ", " + "" + good + ", " : + ""; + + testTitle.innerHTML += " (" + testCounts + + details.assertions.length + ")"; + + if ( details.skipped ) { + addClass( testItem, "skipped" ); + skipped = document.createElement( "em" ); + skipped.className = "qunit-skipped-label"; + skipped.innerHTML = "skipped"; + testItem.insertBefore( skipped, testTitle ); + } else { + addEvent( testTitle, "click", function() { + toggleClass( assertList, "qunit-collapsed" ); + }); + + testItem.className = bad ? "fail" : "pass"; + + time = document.createElement( "span" ); + time.className = "runtime"; + time.innerHTML = details.runtime + " ms"; + testItem.insertBefore( time, assertList ); + } +}); + +if ( !defined.document || document.readyState === "complete" ) { + config.pageLoaded = true; + config.autorun = true; +} + +if ( defined.document ) { + addEvent( window, "load", QUnit.load ); +} + +})(); diff --git a/v3.1.0/require.js b/v3.1.0/require.js new file mode 100644 index 00000000..a1099cfc --- /dev/null +++ b/v3.1.0/require.js @@ -0,0 +1,36 @@ +/* + RequireJS 2.1.14 Copyright (c) 2010-2014, The Dojo Foundation All Rights Reserved. + Available via the MIT or new BSD license. + see: http://github.com/jrburke/requirejs for details +*/ +var requirejs,require,define; +(function(ba){function G(b){return"[object Function]"===K.call(b)}function H(b){return"[object Array]"===K.call(b)}function v(b,c){if(b){var d;for(d=0;dthis.depCount&&!this.defined){if(G(l)){if(this.events.error&&this.map.isDefine||g.onError!==ca)try{f=i.execCb(c,l,b,f)}catch(d){a=d}else f=i.execCb(c,l,b,f);this.map.isDefine&&void 0===f&&((b=this.module)?f=b.exports:this.usingExports&& +(f=this.exports));if(a)return a.requireMap=this.map,a.requireModules=this.map.isDefine?[this.map.id]:null,a.requireType=this.map.isDefine?"define":"require",w(this.error=a)}else f=l;this.exports=f;if(this.map.isDefine&&!this.ignore&&(r[c]=f,g.onResourceLoad))g.onResourceLoad(i,this.map,this.depMaps);y(c);this.defined=!0}this.defining=!1;this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else this.fetch()}},callPlugin:function(){var a= +this.map,b=a.id,d=p(a.prefix);this.depMaps.push(d);q(d,"defined",u(this,function(f){var l,d;d=m(aa,this.map.id);var e=this.map.name,P=this.map.parentMap?this.map.parentMap.name:null,n=i.makeRequire(a.parentMap,{enableBuildCallback:!0});if(this.map.unnormalized){if(f.normalize&&(e=f.normalize(e,function(a){return c(a,P,!0)})||""),f=p(a.prefix+"!"+e,this.map.parentMap),q(f,"defined",u(this,function(a){this.init([],function(){return a},null,{enabled:!0,ignore:!0})})),d=m(h,f.id)){this.depMaps.push(f); +if(this.events.error)d.on("error",u(this,function(a){this.emit("error",a)}));d.enable()}}else d?(this.map.url=i.nameToUrl(d),this.load()):(l=u(this,function(a){this.init([],function(){return a},null,{enabled:!0})}),l.error=u(this,function(a){this.inited=!0;this.error=a;a.requireModules=[b];B(h,function(a){0===a.map.id.indexOf(b+"_unnormalized")&&y(a.map.id)});w(a)}),l.fromText=u(this,function(f,c){var d=a.name,e=p(d),P=M;c&&(f=c);P&&(M=!1);s(e);t(j.config,b)&&(j.config[d]=j.config[b]);try{g.exec(f)}catch(h){return w(C("fromtexteval", +"fromText eval for "+b+" failed: "+h,h,[b]))}P&&(M=!0);this.depMaps.push(e);i.completeLoad(d);n([d],l)}),f.load(a.name,n,l,j))}));i.enable(d,this);this.pluginMaps[d.id]=d},enable:function(){V[this.map.id]=this;this.enabling=this.enabled=!0;v(this.depMaps,u(this,function(a,b){var c,f;if("string"===typeof a){a=p(a,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap);this.depMaps[b]=a;if(c=m(L,a.id)){this.depExports[b]=c(this);return}this.depCount+=1;q(a,"defined",u(this,function(a){this.defineDep(b, +a);this.check()}));this.errback&&q(a,"error",u(this,this.errback))}c=a.id;f=h[c];!t(L,c)&&(f&&!f.enabled)&&i.enable(a,this)}));B(this.pluginMaps,u(this,function(a){var b=m(h,a.id);b&&!b.enabled&&i.enable(a,this)}));this.enabling=!1;this.check()},on:function(a,b){var c=this.events[a];c||(c=this.events[a]=[]);c.push(b)},emit:function(a,b){v(this.events[a],function(a){a(b)});"error"===a&&delete this.events[a]}};i={config:j,contextName:b,registry:h,defined:r,urlFetched:S,defQueue:A,Module:Z,makeModuleMap:p, +nextTick:g.nextTick,onError:w,configure:function(a){a.baseUrl&&"/"!==a.baseUrl.charAt(a.baseUrl.length-1)&&(a.baseUrl+="/");var b=j.shim,c={paths:!0,bundles:!0,config:!0,map:!0};B(a,function(a,b){c[b]?(j[b]||(j[b]={}),U(j[b],a,!0,!0)):j[b]=a});a.bundles&&B(a.bundles,function(a,b){v(a,function(a){a!==b&&(aa[a]=b)})});a.shim&&(B(a.shim,function(a,c){H(a)&&(a={deps:a});if((a.exports||a.init)&&!a.exportsFn)a.exportsFn=i.makeShimExports(a);b[c]=a}),j.shim=b);a.packages&&v(a.packages,function(a){var b, +a="string"===typeof a?{name:a}:a;b=a.name;a.location&&(j.paths[b]=a.location);j.pkgs[b]=a.name+"/"+(a.main||"main").replace(ia,"").replace(Q,"")});B(h,function(a,b){!a.inited&&!a.map.unnormalized&&(a.map=p(b))});if(a.deps||a.callback)i.require(a.deps||[],a.callback)},makeShimExports:function(a){return function(){var b;a.init&&(b=a.init.apply(ba,arguments));return b||a.exports&&da(a.exports)}},makeRequire:function(a,e){function j(c,d,m){var n,q;e.enableBuildCallback&&(d&&G(d))&&(d.__requireJsBuild= +!0);if("string"===typeof c){if(G(d))return w(C("requireargs","Invalid require call"),m);if(a&&t(L,c))return L[c](h[a.id]);if(g.get)return g.get(i,c,a,j);n=p(c,a,!1,!0);n=n.id;return!t(r,n)?w(C("notloaded",'Module name "'+n+'" has not been loaded yet for context: '+b+(a?"":". Use require([])"))):r[n]}J();i.nextTick(function(){J();q=s(p(null,a));q.skipMap=e.skipMap;q.init(c,d,m,{enabled:!0});D()});return j}e=e||{};U(j,{isBrowser:z,toUrl:function(b){var d,e=b.lastIndexOf("."),k=b.split("/")[0];if(-1!== +e&&(!("."===k||".."===k)||1e.attachEvent.toString().indexOf("[native code"))&&!Y?(M=!0,e.attachEvent("onreadystatechange",b.onScriptLoad)): +(e.addEventListener("load",b.onScriptLoad,!1),e.addEventListener("error",b.onScriptError,!1)),e.src=d,J=e,D?y.insertBefore(e,D):y.appendChild(e),J=null,e;if(ea)try{importScripts(d),b.completeLoad(c)}catch(m){b.onError(C("importscripts","importScripts failed for "+c+" at "+d,m,[c]))}};z&&!q.skipDataMain&&T(document.getElementsByTagName("script"),function(b){y||(y=b.parentNode);if(I=b.getAttribute("data-main"))return s=I,q.baseUrl||(E=s.split("/"),s=E.pop(),O=E.length?E.join("/")+"/":"./",q.baseUrl= +O),s=s.replace(Q,""),g.jsExtRegExp.test(s)&&(s=I),q.deps=q.deps?q.deps.concat(s):[s],!0});define=function(b,c,d){var e,g;"string"!==typeof b&&(d=c,c=b,b=null);H(c)||(d=c,c=null);!c&&G(d)&&(c=[],d.length&&(d.toString().replace(ka,"").replace(la,function(b,d){c.push(d)}),c=(1===d.length?["require"]:["require","exports","module"]).concat(c)));if(M){if(!(e=J))N&&"interactive"===N.readyState||T(document.getElementsByTagName("script"),function(b){if("interactive"===b.readyState)return N=b}),e=N;e&&(b|| +(b=e.getAttribute("data-requiremodule")),g=F[e.getAttribute("data-requirecontext")])}(g?g.defQueue:R).push([b,c,d])};define.amd={jQuery:!0};g.exec=function(b){return eval(b)};g(q)}})(this); diff --git a/v3.1.0/ruby(ff)-han.css b/v3.1.0/ruby(ff)-han.css new file mode 100644 index 00000000..caac0257 --- /dev/null +++ b/v3.1.0/ruby(ff)-han.css @@ -0,0 +1 @@ +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{line-height:1.3;-webkit-font-smoothing:subpixel-antialiased}ol,ul{padding-left:2em}blockquote,figure{margin-left:2em;margin-right:2em}address{font-style:inherit}pre{white-space:pre;word-wrap:normal}a{text-decoration:inherit}em:lang(ja),em:lang(zh){-moz-text-emphasis:filled circle;-webkit-text-emphasis:filled circle;text-emphasis:filled circle;-moz-text-emphasis-position:under;-webkit-text-emphasis-position:under;text-emphasis-position:under;font-style:inherit;border-bottom:2px dotted;padding-bottom:.05em;border-bottom-width:-webkit-calc(0px);padding-bottom:-webkit-calc(0px)}em:lang(ja){-moz-text-emphasis:filled sesame;-webkit-text-emphasis:filled sesame;text-emphasis:filled sesame;-moz-text-emphasis-position:over;-webkit-text-emphasis-position:over;text-emphasis-position:over}b,dfn:lang(ja),dfn:lang(zh),strong{font-weight:bolder}cite:lang(ja),cite:lang(zh),dfn:lang(ja),dfn:lang(zh){font-style:inherit}q{quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(zh){quotes:'\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f' '\300c' '\300d' '\300e' '\300f'}q:lang(en),q:lang(zh-CN){quotes:'\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019'}q:lang(en-GB){quotes:'\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d' '\2018' '\2019' '\201c' '\201d'}q:before{content:open-quote}q:after{content:close-quote}q:lang(ja):after,q:lang(ja):before{content:none}code,kbd,pre,samp{font-family:monospace,monospace,sans-serif}i:lang(ja),i:lang(zh),var:lang(ja),var:lang(zh){font-style:inherit}.han-js-rendered del+del.adjacent,.han-js-rendered del+s.adjacent,.han-js-rendered ins.adjacent,.han-js-rendered s+del.adjacent,.han-js-rendered s+s.adjacent,.han-js-rendered u.adjacent,del+del,del+s,ins+ins,ins+u,s+del,s+s,u+ins,u+u{margin-left:.125em}ins,u{padding-bottom:.05em;border-bottom:1px solid;text-decoration:none}ruby :after,ruby :before{line-height:normal}ruby>rt:not(:empty):before{content:'\ff08'}ruby>rt:not(:empty):after{content:'\ff09'}ruby>rb+rtc:before{content:'\ff08'}ruby>rtc:after{content:'\ff0c'}ruby>rtc:last-of-type:after{content:'\ff09'}ruby>rt:after,ruby>rt:before{display:inline-block;overflow:hidden;vertical-align:middle;height:0;width:0}ruby>rt:not(:empty):after,ruby>rt:not(:empty):before{height:-moz-calc(1.3em);width:-moz-calc(1em)}.han-js-rendered del+del,.han-js-rendered del+s,.han-js-rendered ins+ins,.han-js-rendered ins+u,.han-js-rendered s+del,.han-js-rendered s+s,.han-js-rendered u+ins,.han-js-rendered u+u{margin-left:auto}.han-js-rendered em:lang(ja),.han-js-rendered em:lang(zh){padding-bottom:auto;border-bottom-width:0}.no-textemphasis em:lang(ja),.no-textemphasis em:lang(zh){line-height:2}.no-textemphasis em:lang(ja) char,.no-textemphasis em:lang(zh) char{position:relative;font-style:inherit}.no-textemphasis em:lang(ja) char:after,.no-textemphasis em:lang(zh) char:after{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;text-decoration:none;-moz-transform:scale(0.5);-ms-transform:scale(0.5);-webkit-transform:scale(0.5);transform:scale(0.5);position:absolute;left:50%;top:0;margin-left:-250%;overflow:hidden;display:inline-block;height:1em;width:500%;line-height:1;text-align:center;text-indent:0;font-family:Georgia,'Times New Roman',Arial,!important}em:lang(ja) char.biaodian,em:lang(ja) char.punct,em:lang(zh) char.biaodian,em:lang(zh) char.punct{-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none}.no-textemphasis em:lang(ja) char.biaodian:after,.no-textemphasis em:lang(ja) char.punct:after,.no-textemphasis em:lang(zh) char.biaodian:after,.no-textemphasis em:lang(zh) char.punct:after{content:none!important}.no-textemphasis em:lang(zh) char:after{margin-top:1em;content:'\25cf'}.no-textemphasis em:lang(ja) char:after{margin-top:-.7em;content:'\fe45'}hruby{display:inline;line-height:2}hruby rp{display:none}hruby ru[annotation]>rt{display:inline-block;height:0;width:0;font:0/0 hidden-text}hruby ru{position:relative;display:inline-block;text-indent:0}hruby ru:before,hruby zhuyin{-moz-transform:scale(0.55);-ms-transform:scale(0.55);-webkit-transform:scale(0.55);transform:scale(0.55);-moz-text-emphasis:none;-webkit-text-emphasis:none;text-emphasis:none;font-style:normal;font-weight:400;line-height:normal;text-decoration:none;text-indent:0;position:absolute;display:inline-block}hruby ru[annotation]{text-align:center}hruby ru[annotation]:before{left:-265%;vertical-align:top;height:1em;width:600%;content:attr(annotation);line-height:1;text-align:center;text-indent:0}hruby[rightangle] ru[annotation]:before{left:-250%}hruby ru[zhuyin]{display:inline-block;position:relative;width:1.8em;text-align:left}hruby ru[zhuyin] zhuyin{right:.2em;top:0;height:2.7em;width:.8em;line-height:.9;white-space:pre-wrap;word-break:break-all}hruby ru[zhuyin] diao{position:absolute;right:-.9em;top:0;display:inline-block;width:1em}hruby ru[zhuyin]:empty,hruby ru[zhuyin][length='0']{width:auto}hruby ru[zhuyin]:empty zhuyin,hruby ru[zhuyin][length='0'] zhuyin{display:none}hruby ru[zhuyin][length='1'] zhuyin{margin-top:.125em}hruby ru[zhuyin][length='1'] diao{margin-top:-.35em}hruby ru[zhuyin][length='2'] zhuyin{margin-top:-.175em}hruby ru[zhuyin][length='2'] diao{margin-top:.5em}hruby ru[zhuyin][length='3'] zhuyin{margin-top:-.45em}hruby ru[zhuyin][length='3'] diao{margin-top:1.3em}hruby ru[zhuyin][diao='˙'] diao{right:-.35em}hruby ru[zhuyin][diao='˙'][length='1'] diao{margin-top:-.5em}hruby ru[zhuyin][diao='˙'][length='2'] diao{margin-top:-.3em}hruby ru[zhuyin][diao='˙'][length='3'] diao{margin-top:-.25em}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1.2);-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2);margin-right:-.25em}hruby ru[zhuyin][diao='󳆴'] diao,hruby ru[zhuyin][diao='󳆵'] diao,hruby ru[zhuyin][diao='󳆶'] diao,hruby ru[zhuyin][diao='󳆷'] diao,hruby ru[zhuyin][diao^='ㆴ'] diao,hruby ru[zhuyin][diao^='ㆵ'] diao,hruby ru[zhuyin][diao^='ㆶ'] diao,hruby ru[zhuyin][diao^='ㆷ'] diao{top:20%;margin-right:-.3em}hruby ru[annotation]:before,hruby[rightangle] ru[annotation][order='1']:before{top:-.5em}hruby ru[order='1']:before,hruby[rightangle] ru[annotation][order='0']:before{bottom:-.4em;top:auto}hruby[rightangle] ru[annotation]:before{margin-left:-.4em}@media screen and (-webkit-min-device-pixel-ratio:1.5),(min-resolution:192dpi){hruby yin{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);display:inline-block}hruby ru[zhuyin][diao='˪'] diao,hruby ru[zhuyin][diao='˫'] diao{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}hruby ru[zhuyin][diao='˙'] diao{-moz-transform:scale(0.8);-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8);top:.125em}}jinze{display:inline-block;text-indent:0}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';src:local(YuGothic),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro')}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback')}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti';font-weight:600;src:local('YuGothic Bold'),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Heiti CNS';font-weight:600;src:local('YuGothic Bold'),local(YuGo-Bold),local('Hiragino Kaku Gothic ProN W6'),local('Hiragino Kaku Gothic Pro W6'),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:'Han Heiti GB';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei SC Demibold'),local('Microsoft YaHei Bold'),local('Heiti SC Medium'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold)}@font-face{font-family:'Han Heiti';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Lantinghei SC'),local('Heiti SC'),local('Heiti TC'),local('Microsoft Yahei'),local('Microsoft Jhenghei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Lantinghei SC Demibold'),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local('Heiti SC Medium'),local('Heiti TC Medium'),local(STHeitiSC-Medium),local(STHeitiTC-Medium),local('Microsoft YaHei Bold'),local('Microsoft Jhenghei Bold'),local(MicrosoftYaHei-Bold),local(MicrosoftJhengHeiBold);unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';src:local('Hiragino Sans GB'),local('Lantinghei TC'),local('Heiti TC'),local('Microsoft Jhenghei'),local('Heiti SC'),local('Lantinghei SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Heiti CNS';font-weight:600;src:local('Hiragino Sans GB W6'),local(HiraginoSansGB-W6),local('Lantinghei TC Demibold'),local('Heiti TC Medium'),local('Microsoft Jhenghei Bold'),local(FZLTXHB--B51-0),local(STHeitiTC-Medium),local(MicrosoftJhengHeiBold),local('Lantinghei SC Demibold'),local('Heiti SC Medium'),local('Microsoft YaHei Bold'),local(FZLTZHK--GBK1-0),local(STHeitiSC-Medium),local(MicrosoftYaHei-Bold);unicode-range:U+270C}@font-face{font-family:'Han Heiti GB';src:local('Hiragino Sans GB'),local('Lantinghei SC'),local('Heiti SC'),local('Microsoft Yahei'),local('Droid Sans Fallback');unicode-range:U+270C}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSong),local('Lisong Pro'),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho')}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local(PMingLiU),local(SimSun)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';src:local(YuMincho),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro')}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti SC Bold'),local('STSongti TC Bold'),local(STSongti-SC-Bold),local(STSongti-TC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Songti CNS';font-weight:600;src:local('YuMincho Demibold'),local('Hiragino Mincho ProN W6'),local('Hiragino Mincho Pro W6'),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6)}@font-face{font-family:'Han Songti GB';font-weight:600;src:local('STSongti SC Bold'),local(STSongti-SC-Bold)}@font-face{font-family:'Han Songti';src:local('Songti SC'),local('Songti TC'),local(STSongti),local('Lisong Pro'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+270C}@font-face{font-family:'Han Songti';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';src:local('Songti TC'),local('Lisong Pro'),local('Songti SC'),local(STSong),local('MS Mincho'),local(PMingLiU),local(SimSun);unicode-range:U+270C}@font-face{font-family:'Han Songti CNS';font-weight:600;src:local('STSongti TC Bold'),local('STSongti SC Bold'),local(STSongti-TC-Bold),local(STSongti-SC-Bold);unicode-range:U+270C}@font-face{font-family:'Han Songti GB';src:local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+270C}@font-face{font-family:cursive;src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti';src:local('Kaiti SC'),local(STKaiti),local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti CNS';src:local(BiauKai),local('標楷體'),local(DFKaiShu-SB-Estd-BF)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Kaiti GB';src:local('Kaiti SC'),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{font-family:'Han Kaiti GB';font-weight:600;src:local('Kaiti SC Bold'),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong CNS';src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:'Han Fangsong GB';src:local(STFangsong),local(FangSong)}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('MS Gothic'),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:'Biaodian Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSong),local('Heiti SC'),local(SimSun);unicode-range:U+00B7}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Arial Unicode MS'),local('MS Gothic');unicode-range:U+2014}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho'),local('Microsoft Yahei');unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSong),local('Microsoft Yahei'),local(SimSun);unicode-range:U+2014}@font-face{font-family:'Biaodian Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local('MS Mincho'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Yakumono Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(Meiryo),local('MS Gothic');unicode-range:U+2026}@font-face{font-family:'Yakumono Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif CNS';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Sans GB'),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Serif GB';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype'),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Songti SC'),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Lisong Pro'),local('Heiti SC'),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:'Biaodian Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Serif GB';src:local(Georgia),local('Times New Roman'),local(Arial),local('Droid Sans Fallback');unicode-range:U+25CF}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local('Heiti TC'),local('Lihei Pro'),local('Microsoft Jhenghei'),local(PMingLiU),local('MS Gothic');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(STSongti-TC-Regular),local('Lisong Pro'),local('Heiti TC'),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local('MS Gothic');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Songti SC'),local(STSongti),local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local('Hiragino Sans GB'),local('Heiti SC'),local(STHeiti),local(SimSun),local('MS Mincho');unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(PMingLiU),local('MS Mincho');unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:'Biaodian Pro Sans';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans CNS';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif CNS';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Sans GB';src:local('Hiragino Kaku Gothic ProN'),local('Hiragino Kaku Gothic Pro'),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Pro Serif GB';src:local('Hiragino Mincho ProN'),local('Hiragino Mincho Pro'),local(SimSun);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:'Biaodian Basic';src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:'Biaodian Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif CNS';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Sans GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Biaodian Pro Serif GB';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Latin Italic Serif';src:local('Georgia Italic'),local('Times New Roman Italic'),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Serif';font-weight:700;src:local('Georgia Bold Italic'),local('Times New Roman Bold Italic'),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:'Latin Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:'Latin Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Sans';src:local(Skia),local('Neutraface 2 Text'),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Serif';src:local(Georgia),local('Hoefler Text'),local('Big Caslon')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral TF Italic Serif';src:local('Georgia Italic'),local('Hoefler Text Italic'),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Sans';src:local('Helvetica Neue'),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';src:local('Helvetica Neue Italic'),local('Helvetica Oblique'),local('Arial Italic'),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Sans';font-weight:700;src:local('Helvetica Neue Bold Italic'),local('Helvetica Bold Oblique'),local('Arial Bold Italic'),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Serif';src:local(Palatino),local('Palatino Linotype'),local('Times New Roman')}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';src:local('Palatino Italic'),local('Palatino Italic Linotype'),local('Times New Roman Italic'),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:'Numeral LF Italic Serif';font-weight:700;src:local('Palatino Bold Italic'),local('Palatino Bold Italic Linotype'),local('Times New Roman Bold Italic'),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{font-family:'Numeral TF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral TF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Sans';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';src:local(lying-to-firefox);unicode-range:U+270C}@font-face{font-family:'Numeral LF Italic Serif';font-weight:700;src:local(lying-to-firefox);unicode-range:U+270C}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Kaiti'}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:'Zhuyin Heiti';src:local('Hiragino Sans GB'),local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype')}@font-face{font-family:'Zhuyin Heiti';src:local('Heiti TC'),local('Microsoft Jhenghei'),url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');unicode-range:U+3127}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Zhuyin Heiti';unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff?v3.1.0) format('woff'),url(./font/han.otf?v3.1.0) format('opentype');font-family:'Romanization Sans';unicode-range:U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}article strong :lang(ja-Latn),article strong :lang(zh-Latn),article strong :not(:lang(zh)):not(:lang(ja)),article strong:lang(ja-Latn),article strong:lang(zh-Latn),article strong:not(:lang(zh)):not(:lang(ja)),html :lang(ja-Latn),html :lang(zh-Latn),html :not(:lang(zh)):not(:lang(ja)),html:lang(ja-Latn),html:lang(zh-Latn),html:not(:lang(zh)):not(:lang(ja)){font-family:'Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}[lang*=Hant],[lang=zh-HK],[lang=zh-TW],[lang^=zh],article strong:lang(zh),article strong:lang(zh-Hant),html:lang(zh),html:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}[lang*=Hans],[lang=zh-CN],article strong:lang(zh-CN),article strong:lang(zh-Hans),html:lang(zh-CN),html:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}[lang^=ja],article strong:lang(ja),html:lang(ja){font-family:'Yakumono Sans','Helvetica Neue',Helvetica,Arial,sans-serif}article blockquote i :lang(ja-Latn),article blockquote i :lang(zh-Latn),article blockquote i :not(:lang(zh)):not(:lang(ja)),article blockquote i:lang(ja-Latn),article blockquote i:lang(zh-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote var :lang(ja-Latn),article blockquote var :lang(zh-Latn),article blockquote var :not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(ja-Latn),article blockquote var:lang(zh-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Zhuyin Heiti','Han Heiti',sans-serif}article blockquote i:lang(zh-CN),article blockquote i:lang(zh-Hans),article blockquote var:lang(zh-CN),article blockquote var:lang(zh-Hans){font-family:'Biaodian Pro Sans GB','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti GB',sans-serif}article blockquote i:lang(ja),article blockquote var:lang(ja){font-family:'Yakumono Sans','Latin Italic Sans','Helvetica Neue',Helvetica,Arial,sans-serif}article figure blockquote :lang(ja-Latn),article figure blockquote :lang(zh-Latn),article figure blockquote :not(:lang(zh)):not(:lang(ja)),article figure blockquote:lang(ja-Latn),article figure blockquote:lang(zh-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)),figure blockquote :lang(ja-Latn),figure blockquote :lang(zh-Latn),figure blockquote :not(:lang(zh)):not(:lang(ja)),figure blockquote:lang(ja-Latn),figure blockquote:lang(zh-Latn),figure blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Songti',cursive,serif}article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant),figure blockquote:lang(zh),figure blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Songti',serif}article figure blockquote:lang(zh-CN),article figure blockquote:lang(zh-Hans),figure blockquote:lang(zh-CN),figure blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Songti GB',serif}article figure blockquote:lang(ja),figure blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',serif}article blockquote :lang(ja-Latn),article blockquote :lang(zh-Latn),article blockquote :not(:lang(zh)):not(:lang(ja)),article blockquote:lang(ja-Latn),article blockquote:lang(zh-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,'Times New Roman','Han Kaiti',cursive,serif}article blockquote:lang(zh),article blockquote:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}article blockquote:lang(zh-CN),article blockquote:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}article blockquote:lang(ja){font-family:'Yakumono Serif','Numeral LF Serif',Georgia,'Times New Roman',cursive,serif}i :lang(ja-Latn),i :lang(zh-Latn),i :not(:lang(zh)):not(:lang(ja)),i:lang(ja-Latn),i:lang(zh-Latn),i:not(:lang(zh)):not(:lang(ja)),var :lang(ja-Latn),var :lang(zh-Latn),var :not(:lang(zh)):not(:lang(ja)),var:lang(ja-Latn),var:lang(zh-Latn),var:not(:lang(zh)):not(:lang(ja)){font-family:'Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti',cursive,serif}i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant){font-family:'Biaodian Pro Serif CNS','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Zhuyin Kaiti','Han Kaiti',cursive,serif}i:lang(zh-CN),i:lang(zh-Hans),var:lang(zh-CN),var:lang(zh-Hans){font-family:'Biaodian Pro Serif GB','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman','Han Kaiti GB',cursive,serif}i:lang(ja),var:lang(ja){font-family:'Yakumono Serif','Numeral LF Italic Serif','Latin Italic Serif',Georgia,'Times New Roman',cursive,serif}code :lang(ja-Latn),code :lang(zh-Latn),code :not(:lang(zh)):not(:lang(ja)),code:lang(ja-Latn),code:lang(zh-Latn),code:not(:lang(zh)):not(:lang(ja)),kbd :lang(ja-Latn),kbd :lang(zh-Latn),kbd :not(:lang(zh)):not(:lang(ja)),kbd:lang(ja-Latn),kbd:lang(zh-Latn),kbd:not(:lang(zh)):not(:lang(ja)),pre :lang(ja-Latn),pre :lang(zh-Latn),pre :not(:lang(zh)):not(:lang(ja)),pre:lang(ja-Latn),pre:lang(zh-Latn),pre:not(:lang(zh)):not(:lang(ja)),samp :lang(ja-Latn),samp :lang(zh-Latn),samp :not(:lang(zh)):not(:lang(ja)),samp:lang(ja-Latn),samp:lang(zh-Latn),samp:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,'Han Heiti',monospace,monospace,sans-serif}code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant){font-family:'Biaodian Pro Sans CNS',Menlo,Consolas,Courier,'Zhuyin Heiti','Han Heiti',monospace,monospace,sans-serif}code:lang(zh-CN),code:lang(zh-Hans),kbd:lang(zh-CN),kbd:lang(zh-Hans),pre:lang(zh-CN),pre:lang(zh-Hans),samp:lang(zh-CN),samp:lang(zh-Hans){font-family:'Biaodian Pro Sans GB',Menlo,Consolas,Courier,'Han Heiti GB',monospace,monospace,sans-serif}code:lang(ja),kbd:lang(ja),pre:lang(ja),samp:lang(ja){font-family:'Yakumono Sans',Menlo,Consolas,Courier,monospace,monospace,sans-serif}#luoma_pinyin p,#pua p,#zhuyin_fuhao-heiti p,#zhuyin_fuhao-kaiti p,.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7],hruby ru[annotation]:before,hruby ru[zhuyin] zhuyin,hruby ru[zhuyin] zhuyin diao,hruby.romanization rt,html,ruby ru[annotation]:before,ruby ru[zhuyin] zhuyin,ruby ru[zhuyin] zhuyin diao,ruby.romanization rt{-moz-font-feature-settings:'liga';-ms-font-feature-settings:'liga';-webkit-font-feature-settings:'liga';font-feature-settings:'liga'}i,var{font-style:inherit}hruby ru[zhuyin] zhuyin diao,ruby ru[zhuyin] zhuyin diao{font-family:'Zhuyin Kaiti',cursive,serif}hruby ru[annotation]:before,hruby.romanization rt,ruby ru[annotation]:before,ruby.romanization rt{font-family:'Romanization Sans','Helvetica Neue',Helvetica,Arial,'Han Heiti',sans-serif}.no-kaiti i,.no-kaiti var{padding-bottom:.05em;border-bottom:3px double lightgrey}article{line-height:1.7}article li,article p{text-align:justify;text-justify:inter-ideograph}article h1+blockquote,article h1+h2,article h1+h3,article h1+h4,article h1+h5,article h1+h6,article h1+ol,article h1+p,article h1+section>blockquote:first-child,article h1+section>h2:first-child,article h1+section>h3:first-child,article h1+section>h4:first-child,article h1+section>h5:first-child,article h1+section>h6:first-child,article h1+section>ol:first-child,article h1+section>p:first-child,article h1+section>ul:first-child,article h1+ul,article h2+blockquote,article h2+h2,article h2+h3,article h2+h4,article h2+h5,article h2+h6,article h2+ol,article h2+p,article h2+section>blockquote:first-child,article h2+section>h2:first-child,article h2+section>h3:first-child,article h2+section>h4:first-child,article h2+section>h5:first-child,article h2+section>h6:first-child,article h2+section>ol:first-child,article h2+section>p:first-child,article h2+section>ul:first-child,article h2+ul,article h3+blockquote,article h3+h3,article h3+h4,article h3+h5,article h3+h6,article h3+ol,article h3+p,article h3+section>blockquote:first-child,article h3+section>h3:first-child,article h3+section>h4:first-child,article h3+section>h5:first-child,article h3+section>h6:first-child,article h3+section>ol:first-child,article h3+section>p:first-child,article h3+section>ul:first-child,article h3+ul,article h4+blockquote,article h4+h4,article h4+h5,article h4+h6,article h4+ol,article h4+p,article h4+section>blockquote:first-child,article h4+section>h4:first-child,article h4+section>h5:first-child,article h4+section>h6:first-child,article h4+section>ol:first-child,article h4+section>p:first-child,article h4+section>ul:first-child,article h4+ul,article h5+blockquote,article h5+h5,article h5+h6,article h5+ol,article h5+p,article h5+section>blockquote:first-child,article h5+section>h5:first-child,article h5+section>h6:first-child,article h5+section>ol:first-child,article h5+section>p:first-child,article h5+section>ul:first-child,article h5+ul,article h6+blockquote,article h6+h6,article h6+ol,article h6+p,article h6+section>blockquote:first-child,article h6+section>h6:first-child,article h6+section>ol:first-child,article h6+section>p:first-child,article h6+section>ul:first-child,article h6+ul{margin-top:-1em}.poem-like p,p.poem-like{margin-left:2em}@media only screen and (max-width:480px){.poem-like p,p.poem-like{margin-left:1em}}article blockquote{margin-right:0}@media only screen and (max-width:480px){article blockquote{margin-left:1em}}figure blockquote{margin:0}blockquote blockquote{margin-left:1em;margin-right:1em}article blockquote blockquote{margin-right:0}@media only screen and (max-width:480px){blockquote,figure{margin-left:1em;margin-right:1em}}.no-unicoderange char.biaodian.liga,.no-unicoderange char.biaodian[unicode=b7]{font-family:'Biaodian Basic','Han Heiti'}hws{display:inline;visibility:hidden;font-family:Arial,sans-serif!important;font-size:.89em}code hws,kbd hws,ol>hws,pre hws,samp hws,table>hws,tbody>hws,tfoot>hws,thead>hws,tr>hws,ul>hws{display:none}char_group .close:not(:last-child),char_group .open:not(:last-child),char_group [unicode='3001']:not(:last-child),char_group [unicode='3002']:not(:last-child),char_group [unicode=ff08]:not(:last-child),char_group [unicode=ff0c]:not(:last-child){letter-spacing:-.5em}char_group [unicode='3001']:lang(zh-Hant):not(:last-child),char_group [unicode='3002']:lang(zh-Hant):not(:last-child),char_group [unicode=ff08]:lang(zh-Hant):not(:last-child),char_group [unicode=ff0c]:lang(zh-Hant):not(:last-child){letter-spacing:inherit}char_group [unicode='3001']:lang(zh-Hant)+.open,char_group [unicode='3002']:lang(zh-Hant)+.open,char_group [unicode='30fb']+[unicode='300c'],char_group [unicode='30fb']+[unicode='300e'],char_group [unicode=b7]+[unicode='300c'],char_group [unicode=b7]+[unicode='300e'],char_group [unicode=ff08]:lang(zh-Hant)+.open,char_group [unicode=ff0c]:lang(zh-Hant)+.open{margin-left:-.5em}char_group .liga+[unicode='300c'],char_group .liga+[unicode='300e']{margin-left:-.25em}char[display-as]{position:relative;display:inline-block}char[display-as] inner{color:transparent}char[display-as]:after{position:absolute;left:0;display:inline-block;content:attr(display-as)}char[display-as].comb-liga:after{font-family:'Romanization Sans','Zhuyin Kaiti'}#zhuyin_fuhao-heiti p{font-family:"Zhuyin Heiti","Biaodian Pro Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}#zhuyin_fuhao-kaiti p{font-family:"Zhuyin Kaiti","Biaodian Pro Serif",Georgia,"Times New Roman","Han Kaiti",cursive,serif}#luoma_pinyin p,#pua p{font-family:"Romanization Sans","Biaodian Pro Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif} \ No newline at end of file diff --git a/v3.1.0/ruby(ff)-han.sass b/v3.1.0/ruby(ff)-han.sass new file mode 100644 index 00000000..33cc51b0 --- /dev/null +++ b/v3.1.0/ruby(ff)-han.sass @@ -0,0 +1,16 @@ + +// ** +// * Import Han module +// * +@import ../sass/han + +#zhuyin_fuhao-heiti p + @extend %han-ligature + font-family: 'Zhuyin Heiti', 'Biaodian Pro Sans', 'Helvetica Neue', Helvetica, Arial, 'Han Heiti', sans-serif +#zhuyin_fuhao-kaiti p + @extend %han-ligature + font-family: 'Zhuyin Kaiti', 'Biaodian Pro Serif', Georgia, 'Times New Roman', 'Han Kaiti', cursive, serif +#luoma_pinyin p, +#pua p + @extend %han-ligature + font-family: 'Romanization Sans', 'Biaodian Pro Sans', 'Helvetica Neue', Helvetica, Arial, 'Han Heiti', sans-serif diff --git a/v3.1.0/ruby(ff)-han.scss b/v3.1.0/ruby(ff)-han.scss new file mode 100644 index 00000000..662320aa --- /dev/null +++ b/v3.1.0/ruby(ff)-han.scss @@ -0,0 +1,20 @@ +// ** +// * Import Han module +// * +@import "../src/sass/han"; + +#zhuyin_fuhao-heiti p { + @extend %han-ligature; + font-family: "Zhuyin Heiti", "Biaodian Pro Sans", "Helvetica Neue", Helvetica, Arial, "Han Heiti", sans-serif; +} + +#zhuyin_fuhao-kaiti p { + @extend %han-ligature; + font-family: "Zhuyin Kaiti", "Biaodian Pro Serif", Georgia, "Times New Roman", "Han Kaiti", cursive, serif; +} + +#luoma_pinyin p, +#pua p { + @extend %han-ligature; + font-family: "Romanization Sans", "Biaodian Pro Sans", "Helvetica Neue", Helvetica, Arial, "Han Heiti", sans-serif; +} diff --git a/v3.1.0/ruby(ff).html b/v3.1.0/ruby(ff).html new file mode 100644 index 00000000..195b83e8 --- /dev/null +++ b/v3.1.0/ruby(ff).html @@ -0,0 +1,13 @@ +測試・標音(注音符號、羅馬拼音) — 漢字標準格式

          測試·標音(注音符號、羅馬拼音)

          注音符號

          黑體

          ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙ
          ㆠㆣㆢㆡㆭ
          ㄧㄨㄩ
          ㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦ
          ㆤㆥㆦㆧㆨㆩㆪㆫㆬㆮㆯㆰㆱㆲㆳ
          ㄪㄫㄬㄭ
          ˊˇˋ˙
          ㆴㆵㆶㆷㆴ͘ㆵ͘ㆶ͘ㆷ͘
          ˪˫

          楷體

          ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙ
          ㆠㆣㆢㆡㆭ
          ㄧㄨㄩ
          ㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦ
          ㆤㆥㆦㆧㆨㆩㆪㆫㆬㆮㆯㆰㆱㆲㆳ
          ㄪㄫㄬㄭ
          ˊˇˋ˙
          ㆴㆵㆶㆷㆴ͘ㆵ͘ㆶ͘ㆷ͘
          ˪˫

          羅馬拼音

          元音(陰、陽入韻)

          aeioua̍e̍i̍o̍u̍

          萌典PUA

          以下是用於「萌典」的PUA陽入韻字元,使用web字體「Romanization Sans」,可保證在所有瀏覽器下正常顯示。搭配「字元的替換」功能可提供對無障礙瀏覽器較友好、更加語意化的網頁。

          󳆴󳆵󳆶󳆷(\uF31B4-7
          󰁡󰁥󰁩󰁯󰁵(\uF006x、\uF0075

          \ No newline at end of file diff --git a/v3.1.0/ruby(ff).jade b/v3.1.0/ruby(ff).jade new file mode 100644 index 00000000..28689be1 --- /dev/null +++ b/v3.1.0/ruby(ff).jade @@ -0,0 +1,88 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='utf-8') + title 測試・標音(注音符號、羅馬拼音) — 漢字標準格式 + link(rel='stylesheet', href='./ruby(ff)-han.css') + style. + html { + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + body.test + + article + h1 測試·標音(注音符號、羅馬拼音) + section#zhuyin_fuhao + h2 注音符號 + section#zhuyin_fuhao-heiti + h3 黑體 + p + | ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙ + br + | ㆠㆣㆢㆡㆭ + br + | ㄧㄨㄩ + br + | ㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦ + br + | ㆤㆥㆦㆧㆨㆩㆪㆫㆬㆮㆯㆰㆱㆲㆳ + br + | ㄪㄫㄬㄭ + br + | ˊˇˋ˙ + br + | ㆴㆵㆶㆷㆴ͘ㆵ͘ㆶ͘ㆷ͘ + br + | ˪˫ + section#zhuyin_fuhao-kaiti + h3 楷體 + p + | ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙ + br + | ㆠㆣㆢㆡㆭ + br + | ㄧㄨㄩ + br + | ㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦ + br + | ㆤㆥㆦㆧㆨㆩㆪㆫㆬㆮㆯㆰㆱㆲㆳ + br + | ㄪㄫㄬㄭ + br + | ˊˇˋ˙ + br + | ㆴㆵㆶㆷㆴ͘ㆵ͘ㆶ͘ㆷ͘ + br + | ˪˫ + section#luoma_pinyin + h2 羅馬拼音 + section#yuanyin + h3 元音(陰、陽入韻) + p aeioua̍e̍i̍o̍u̍ + section#pua + h2 萌典PUA + p.noti + | 以下是用於「 + a(href='//moedict.tw') 萌典 + | 」的PUA陽入韻字元,使用web字體「Romanization Sans」,可保證在所有瀏覽器下正常顯示。搭配「 + a(href='./subst.html') 字元的替換 + | 」功能可提供對無障礙瀏覽器較友好、更加語意化的網頁。 + p + | 󳆴󳆵󳆶󳆷(\uF31B4-7) + br + | 󰁡󰁥󰁩󰁯󰁵(\uF006x、\uF0075) + + script(src='./han.min.js') diff --git a/v3.1.0/ruby.html b/v3.1.0/ruby.html new file mode 100644 index 00000000..3920b6a2 --- /dev/null +++ b/v3.1.0/ruby.html @@ -0,0 +1,166 @@ +測試・行間注元素 — 漢字標準格式

          測試·行間注元素

          基本行間注

          WWWWorld Wide Web

          安倍晋三日本內閣總理大臣

          拼音

          世情shìqíng +看kàn +冷暖lěngnuǎn +人面rénmiàn +逐zhú +高低gāodī

          注音符號

          ㄕˋㄑㄧㄥˊ +看ㄎㄢˋ +冷ㄌㄥˇㄋㄨㄢˇ +人ㄖㄣˊㄇㄧㄢˋ +逐ㄓㄨˊ +高ㄍㄠ +低ㄉㄧ

          輕聲

          ㄅㄚˋ˙ㄅㄚㄅㄞˊ˙ㄊㄧㄢ˙ㄉㄜ行程很滿˙ㄚ

          預設使用「楷體」的元素下

          ㄅㄚˋ˙ㄅㄚㄅㄞˊ˙ㄊㄧㄢ˙ㄉㄜ行程很滿˙ㄚ

          複合式行間注

          辛亥革命發生在1911-10-10,清宣統三年那天革命先烈們一同推翻了帝制。

          NiǔyuēShìNew York CityNew York CityNiǔyuēShìNew York CityniǔyuēshìniǔyuēshìNew York CityNew York City世界之都

          + + + + +, + + + + +! + + +san1 +shih2 +liu4 +ko0 +ya2 +ch'ih3 +cho1 +tuirh4 +ssu1 +ta3 + + + +sān +shí +liù +ge + +chǐ +zhuō +duìr + + +

          拼音-注音共同顯示

          共我講,kám-ūthiann-tio̍hlán-êkuaㄌㄧˋㄍㆰˋㄨ˫ㄊㄧㆩㄉㄧㄜㆷ̍ㄌㄢˋㆤˊㄍㄨㄚ有無?kám-ūthiann-tio̍hlán-êkuaㄌㄧˋㄍㆰˋㄨ˫ㄊㄧㆩㄉㄧㄜㆷ̍ㄌㄢˋㆤˊㄍㄨㄚ有無?kám-ūthiann-tio̍hlán-êkuaㄌㄧˋㄍㆰˋㄨ˫ㄊㄧㆩㄉㄧㄜㆷ̍ㄌㄢˋㆤˊㄍㄨㄚ有無?

          + + + + +, + + + + + +。 + + + ㄐㄧㆵ͘ + ㄌㄤˊ + ㄏㄨㄢˊ + ㄌㄜˋ + ㄐㄧㆵ͘ + ㄧㆫ˫ + ㆠㄜˊ + ㄌㄤˊ + ㄏㄨㄢˊ + ㄌㄜˋ + ㄑㄧㄣ + ㄑㄧㆫ˫ + + + + Tsi̍t + lâng + hoân‑ló + chi̍t + iūⁿ + bô‑lâng + hoân‑ló + chhin‑chhiūⁿ + Tsi̍t + lâng + huân-ló + tsi̍t + iūnn + bô-lâng + huân-ló + tshin-tshiūnn +

          + +, + + +; + + +, + + +。 + +ㄏㄧㄠ + ㄏㄧㄥ˫ + ㄐㆪˊ + ㄒㄧㆵ + ㄉㄧㆶ + ㄌㄧㄠˋ + ㄨㄢ + ㆲˋ + ㄐㆪˊ + ㄅㄨㄚㆷ͘ + ㄙㄨ + ㄍㄧㄠˋ + + + + Hiau‑hēng‑chîⁿ + sit‑tek + liáu + oan‑óng + chîⁿ + poa̍h‑su + kiáu + +Hiau-hīng-tsînn + sit-tik + liáu + uan-óng + tsînn + pua̍h-su + kiáu +

          \ No newline at end of file diff --git a/v3.1.0/ruby.jade b/v3.1.0/ruby.jade new file mode 100644 index 00000000..df48da4e --- /dev/null +++ b/v3.1.0/ruby.jade @@ -0,0 +1,346 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='utf-8') + title 測試・行間注元素 — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + + style. + html { + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + + body.test + + article + h1 測試·行間注元素 + section(id='jiben_hangjianzhu') + h2 基本行間注 + p: ruby + | WWWWorld Wide Web + p: ruby + | 安倍晋三日本內閣總理大臣 + + section#pinyin + h3 拼音 + p: ruby + | 世情shìqíng + | 看kàn + | 冷暖lěngnuǎn + | 人面rénmiàn + | 逐zhú + | 高低gāodī + section#zhuyin_fuhao + h3 注音符號 + p: ruby.zhuyin + | 事ㄕˋㄑㄧㄥˊ + | 看ㄎㄢˋ + | 冷ㄌㄥˇㄋㄨㄢˇ + | 人ㄖㄣˊㄇㄧㄢˋ + | 逐ㄓㄨˊ + | 高ㄍㄠ + | 低ㄉㄧ。 + section#qingsheng + h4 輕聲 + p: ruby.zhuyin + | 爸ㄅㄚˋ˙ㄅㄚㄅㄞˊ˙ㄊㄧㄢ˙ㄉㄜ行程很滿˙ㄚ! + section + h4 預設使用「楷體」的元素下 + p: ruby.zhuyin + i 爸ㄅㄚˋ˙ㄅㄚㄅㄞˊ˙ㄊㄧㄢ˙ㄉㄜ行程很滿˙ㄚ! + section#fuheshi_hangjianzhu + h2 複合式行間注 + p: ruby.complex + | 辛亥革命發生在 + rb 1911- + rb 10- + rb 10, + rtc + rt 年 + rt 月 + rt 日 + rtc: rt(rbspan='3') 清宣統三年 + | 那天革命先烈們一同推翻了帝制。 + p + ruby.complex + | 「 + rb 紐 + rb 約 + rb 市 + | 」 + rtc.reading.romanization(lang='cmn-Latn') + rt(rbspan='2') Niǔyuē + rt Shì + rtc.reading.annotation + rt(rbspan='3') New York City + ruby.complex + | 『 + rb 紐 + rb 約 + rb 市 + | 』 + rtc.reading.annotation(lang='en') + rt(rbspan='3') New York City + rtc.reading.romanization(lang='cmn-Latn') + rt(rbspan='2') Niǔyuē + rt Shì + ruby.complex + | ‘ + rb 紐 + rb 約 + rb 市 + | ’ + rtc.reading.annotation(lang='en') + rt(rbspan='3') New York City + rtc.reading.romanization(lang='cmn-Latn') + rt niǔ + rt yuē + rt shì + ruby.complex + | „ + rb 紐 + rb 約 + rb 市 + | ‟ + rtc.reading.romanization(lang='cmn-Latn') + rt niǔ + rt yuē + rt shì + rtc.reading.annotation(lang='en') + rt(rbspan='3') New York City + ruby.complex + | ⸘ + rb 紐 + rb 約 + rb 市 + | ‽ + rtc.reading.annotation(lang='en') + rt(lang='en' rbspan='3') New York City + rtc.reading.annotation + rt(rbspan='3') 世界之都 + p: ruby.complex. + + + + + + , + + + + + ! + + + san1 + shih2 + liu4 + ko0 + ya2 + ch'ih3 + cho1 + tuirh4 + ssu1 + ta3 + + + + sān + shí + liù + ge + + chǐ + zhuō + duìr + + + + section#pinyin-zhuyin_gongtong_xianshi + h3 拼音-注音共同顯示 + p(lang='zh-nan-Hant') + | 共我講, + ruby.rightangle + | ? + + rtc.romanization(lang='nan-Latn') + rt Lí + rt(rbspan='2') kám-ū + rt(rbspan='2') thiann-tio̍h + rt(rbspan='2') lán-ê + rt kua + rtc.zhuyin + rt ㄌㄧˋ + rt ㄍㆰˋ + rt ㄨ˫ + rt ㄊㄧㆩ + rt ㄉㄧㄜㆷ̍ + rt ㄌㄢˋ + rt ㆤˊ + rt ㄍㄨㄚ + | 有無? + ruby.rightangle + | ? + + rtc.romanization(lang='nan-Latn') + rt Lí + rt(rbspan='2') kám-ū + rt(rbspan='2') thiann-tio̍h + rt(rbspan='2') lán-ê + rt kua + rtc.zhuyin + rt ㄌㄧˋ + rt ㄍㆰˋ + rt ㄨ˫ + rt ㄊㄧㆩ + rt ㄉㄧㄜㆷ̍ + rt ㄌㄢˋ + rt ㆤˊ + rt ㄍㄨㄚ + | 有無? + ruby.rightangle + | ? + + rtc.romanization(lang='nan-Latn') + rt Lí + rt(rbspan='2') kám-ū + rt(rbspan='2') thiann-tio̍h + rt(rbspan='2') lán-ê + rt kua + rtc.zhuyin + rt ㄌㄧˋ + rt ㄍㆰˋ + rt ㄨ˫ + rt ㄊㄧㆩ + rt ㄉㄧㄜㆷ̍ + rt ㄌㄢˋ + rt ㆤˊ + rt ㄍㄨㄚ + | 有無? + p: ruby.complex. + + + + + + , + + + + + + 。 + + + ㄐㄧㆵ͘ + ㄌㄤˊ + ㄏㄨㄢˊ + ㄌㄜˋ + ㄐㄧㆵ͘ + ㄧㆫ˫ + ㆠㄜˊ + ㄌㄤˊ + ㄏㄨㄢˊ + ㄌㄜˋ + ㄑㄧㄣ + ㄑㄧㆫ˫ + + + + Tsi̍t + lâng + hoân‑ló + chi̍t + iūⁿ + bô‑lâng + hoân‑ló + chhin‑chhiūⁿ + Tsi̍t + lâng + huân-ló + tsi̍t + iūnn + bô-lâng + huân-ló + tshin-tshiūnn + + p: ruby.rightangle. + + + , + + + ; + + + , + + + 。 + + ㄏㄧㄠ + ㄏㄧㄥ˫ + ㄐㆪˊ + ㄒㄧㆵ + ㄉㄧㆶ + ㄌㄧㄠˋ + ㄨㄢ + ㆲˋ + ㄐㆪˊ + ㄅㄨㄚㆷ͘ + ㄙㄨ + ㄍㄧㄠˋ + + + + Hiau‑hēng‑chîⁿ + sit‑tek + liáu + oan‑óng + chîⁿ + poa̍h‑su + kiáu + + Hiau-hīng-tsînn + sit-tik + liáu + uan-óng + tsînn + pua̍h-su + kiáu + + // + section#biaodian_jinze + h2 標點禁則 + p: ruby + | 我wo + | 「不敢bugan + | 相信xiangxin + | ! + + // Here goes scripts + script(src='./han.min.js') diff --git a/v3.1.0/shs.html b/v3.1.0/shs.html new file mode 100644 index 00000000..2e119ef4 --- /dev/null +++ b/v3.1.0/shs.html @@ -0,0 +1,22 @@ +測試・思源黑體 — 漢字標準格式

          測試·思源黑體

          標題與內文

          阿波羅11號(Apollo 11)是美國國家航空航天局的阿波羅計畫(Project Apollo)中的第五次載人任務,是人類第一次登月任務,歷時8天13小時18分35秒,繞行月球30周,在月表停留21小時36分20秒。三位執行此任務的宇航員分別為指令長尼爾·阿姆斯特朗、指令艙駕駛員邁克爾·科林斯與登月艙駕駛員巴茲·奧爾德林。1969年7月20日,阿姆斯特朗與奧爾德林成為了首次踏上月球的人類,而阿波羅11號登陸月球一事更進一步成為紀錄片和廣告常見之歷史事件。

          字重

          是企鵝家族中體型最大的屬種,成年皇帝企鵝身高可達120厘米,體重可達46千克。在皇帝企鵝發現之前,有一種企鵝被認為是最大的企鵝,取名為國王企鵝。

          \ No newline at end of file diff --git a/v3.1.0/shs.jade b/v3.1.0/shs.jade new file mode 100644 index 00000000..f649e746 --- /dev/null +++ b/v3.1.0/shs.jade @@ -0,0 +1,43 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='utf-8') + title 測試・思源黑體 — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + style. + html { + /* box */ + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + + /* typography */ + font-family: 'Source Han Sans', sans-serif; + font-weight: 200; + } + + article strong:lang(zh), + article strong:lang(zh-Hant) { + font-family: inherit; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + body.test + + article + h1 測試·思源黑體 + section + h2 標題與內文 + p 阿波羅11號(Apollo 11)是美國國家航空航天局的阿波羅計畫(Project Apollo)中的第五次載人任務,是人類第一次登月任務,歷時8天13小時18分35秒,繞行月球30周,在月表停留21小時36分20秒。三位執行此任務的宇航員分別為指令長尼爾·阿姆斯特朗、指令艙駕駛員邁克爾·科林斯與登月艙駕駛員巴茲·奧爾德林。1969年7月20日,阿姆斯特朗與奧爾德林成為了首次踏上月球的人類,而阿波羅11號登陸月球一事更進一步成為紀錄片和廣告常見之歷史事件。 + + h2 字重 + p 是企鵝家族中體型最大的屬種,成年皇帝企鵝身高可達120厘米,體重可達46千克。在皇帝企鵝發現之前,有一種企鵝被認為是最大的企鵝,取名為國王企鵝。 + script(src='./han.min.js') diff --git a/v3.1.0/subst.html b/v3.1.0/subst.html new file mode 100644 index 00000000..e4881d62 --- /dev/null +++ b/v3.1.0/subst.html @@ -0,0 +1,86 @@ +測試・字元的替換 — 漢字標準格式

          測試·字元的替換

          二種模式

          「漢字標準格式」腳本包含二種字元替換的模式——着重字體效果的「異體字顯示」與着重語意的「訛字(符)修正」。前者不更動DOM的原始文字,僅在顯示時使用異體字或PUA字元;後者則直接替換原始字元,確保語意正確的字符被使用。

          位以下元素中的字元在二種模式下,皆不會被替換:

          • 文字區塊表單textarea
          • 代碼code
          • 輸入鍵kbd
          • 計算機輸出示例samp
          • 格式預處理pre

          着重字體效果的異體字顯示

          PUA字元

          提示:此功能僅在瀏覽器(IE9-11)無法正確顯示網頁字體han.woff下的變音符連字時啓用。你可以呼叫屬性Han.isCombLigaNormal(布林値)來判斷使用者瀏覽器是否能正確顯示變音連字。

          漢字標音的陽入韻符號

          陽入韻顯示為測試結果
          󰁡
          󰁥
          󰁩
          󰁯
          󰁵
          ㆴ͘󳆴ㆴ͘
          ㆵ͘󳆵ㆵ͘
          ㆶ͘󳆶ㆶ͘
          ㆷ͘󳆷ㆷ͘

          着重語意的訛字修正

          提示:此功能爭議性較大,因此預設關閉。藉由執行Han( context )實例中的substInaccurateChar()方法來修正指定範圍內的訛字。

          訛字(符) 替換為測試結果
          ·
          ·
          ⋯⋯……⋯⋯
          ──——──
          \ No newline at end of file diff --git a/v3.1.0/subst.jade b/v3.1.0/subst.jade new file mode 100644 index 00000000..59f71e11 --- /dev/null +++ b/v3.1.0/subst.jade @@ -0,0 +1,213 @@ +doctype html +html(lang='zh-Hant') + head + meta(charset='utf-8') + title 測試・字元的替換 — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + style. + html { + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + } + + table { + font-size: .95em; + } + + table th, + table td { + padding: .125em .25em; + } + + table th { + /* typography */ + font-weight: normal; + text-align: left; + /* style */ + border-bottom: 2px solid #bbb; + } + + table tr:not(:last-child) td { + border-bottom: 1px solid #eee; + } + + .pua { + font-family: 'Romanization Sans', 'Zhuyin Kaiti'; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + body.test + + article + h1 測試·字元的替換 + section#liangzhong_moshi + h2 二種模式 + p + | 「漢字標準格式」腳本包含二種字元替換的模式——着重字體效果的「異體字顯示」與着重語意的「訛字(符)修正」。前者不更動DOM的原始文字,僅在顯示時使用異體字或PUA字元;後者則直接替換原始字元,確保語意正確的字符被使用。 + p + | 位以下元素中的字元在二種模式下,皆不會被替換: + ul + li 文字區塊表單textarea + li 代碼code + li 輸入鍵kbd + li 計算機輸出示例samp + li 格式預處理pre + section#zhuozhong_ziti_xiaoguo_de_yitizi_xianshi + h2 着重字體效果的異體字顯示 + // + section#riwen_ziti_zhiyuan_de_yitizi + h3 日文字體支援的異體字 + p + strong 注意: + | 僅支援繁體中文網頁。 + table + thead + th(style='width: 4em;') 異體字 + th(style='width: 4em;') 替換為 + th 測試結果 + tbody + //- tr + //- td 夠 → 够 + //- td 夠 + tr + td + td 査 + td 查 + tr + td + td 啓 + td 啟 + tr + td + td 鄕 + td 鄉 + tr + td + td 値 + td 值 + tr + td + td 汚 + td 污 + h4 黑體(Han Heiti) + p 我查到一個資料,啟發了我回鄉發現自我價值的衝動。而不要在大城市污染自己那顆純潔的心。 + h4 宋體(Han Songti) + p(style='font-family: "Biaodian Pro Serif", Georgia, "Han Songti", serif;') + | 我查到一個資料,啟發了我回鄉發現自我價值的衝動。而不要在大城市污染自己那顆純潔的心。 + h4 楷體(Han Kaiti) + p(style='font-family: "Biaodian Pro Serif", Georgia, "Han Kaiti", cursive, serif;') + | 我查到一個資料,啟發了我回鄉發現自我價值的衝動。而不要在大城市污染自己那顆純潔的心。 + h4 仿宋體(Han Fangsong) + p(style='font-family: "Biaodian Pro Serif", Georgia, "Han Fangsong", cursive, serif;') + | 我查到一個資料,啟發了我回鄉發現自我價值的衝動。而不要在大城市污染自己那顆純潔的心。 + section#pua_ziyuan + h3 PUA字元 + p + strong 提示: + | 此功能僅在瀏覽器(IE9-11)無法正確顯示網頁字體han.woff下的變音符連字時啓用。你可以呼叫屬性Han.isCombLigaNormal(布林値)來判斷使用者瀏覽器是否能正確顯示變音連字。 + section#hanzibiaoyin_de_yangruyun_fuhao + h4 漢字標音的陽入韻符號 + table + thead + th(style='width: 4em;') 陽入韻 + th(style='width: 4em;') 顯示為 + th 測試結果 + tbody + tr + td + td 󰁡 + td.pua a̍ + tr + td + td 󰁥 + td.pua e̍ + tr + td + td 󰁩 + td.pua i̍ + tr + td + td 󰁯 + td.pua o̍ + tr + td + td 󰁵 + td.pua u̍ + tr + td ㆴ͘ + td 󳆴 + td.pua ㆴ͘ + tr + td ㆵ͘ + td 󳆵 + td.pua ㆵ͘ + tr + td ㆶ͘ + td 󳆶 + td.pua ㆶ͘ + tr + td ㆷ͘ + td 󳆷 + td.pua ㆷ͘ + + section#zhuozhong_yuyi_de_ezi_xiuzheng + h2 着重語意的訛字修正 + p.noti + strong 提示: + | 此功能爭議性較大,因此預設關閉。藉由執行Han( context )實例中的substInaccurateChar()方法來修正指定範圍內的訛字。 + + table + thead + th(style='width: 5em;') 訛字(符) + th(style='width: 4em;') 替換為 + th 測試結果 + tbody + tr + td + td · + td • + tr + td + td · + td ‧ + tr + td ⋯⋯ + td …… + td ⋯⋯ + tr + td ── + td —— + td ── + tr + td + td ‘ + td ‵ + tr + td + td ’ + td ′ + tr + td + td “ + td ‶ + tr + td + td ” + td ″ + script(src='./han.min.js') + script. + Han.init() + // disabled by default + .substInaccurateChar() diff --git a/v3.1.0/test-amd.html b/v3.1.0/test-amd.html new file mode 100644 index 00000000..ded90992 --- /dev/null +++ b/v3.1.0/test-amd.html @@ -0,0 +1,25 @@ +測試・AMD模組 — 漢字標準格式

          內容群組類

          段落、清單

          好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動!

          頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。

          詩篇段落

          地址格式

          有序清單

          1. 一級清單項目
          2. 一級清單項目
            1. 二級清單項目
            2. 二級清單項目
              1. 三級清單項目
              2. 三級清單項目
          3. 一級清單項目
          4. 一級清單項目

          無序清單

          • 一級清單項目
          • 一級清單項目
            • 二級清單項目
            • 二級清單項目
              • 三級清單項目
              • 三級清單項目
          • 一級清單項目
          • 一級清單項目

          引用區塊

          如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無!

          ——姜慶《石人碼頭》

          未使用段落元素的引用區塊

          時來數期沒道反先美別所金企感企媽失對談。
          ——新器急

          引用區塊中的引用區塊

          洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

          以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

          圖表內的引用區塊

          令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

          這是圖表解說元素<figcaption>內的解說。

          格式預處理文字區塊

          國寫親下二好灣整機生土、是看老排讓和保藝車市。
          +
          +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et me.
          +
          +是除學圖寶濟候收。們性者位遠另象內未院清外了以共……
          +長明期事生合了中文新等麼科出過能意等件教求加,
          +樓日里大下果個來。
          +
          +球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。

          代碼區塊

          void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document);

          章節類

          文章區塊元素

          文章區塊內的段落、清單

          務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

          詩篇段落

          清單

          • 清單項目子
          • 清單項目丑

          文章區塊內的重點

          不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

          文章區塊內的圖表引用區塊

          令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

          這是文章內圖表解說元素<figcaption>的解說。

          文章區塊內的變音文字

          來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

          文章內的引用區塊

          火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。

          務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

          文章內引用區塊中的引用區塊

          洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

          以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

          文章引用區塊內的重點

          不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

          文章引用區塊內的變音文字

          來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

          字級語意類

          超連結元素a示例
          註記元素u示例
          註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁
          來源元素cite示例
          重點元素strong示例
          術語元素dfn示例
          關鍵字元素b示例
          強調元素em示例
          變音文字元素i示例
          變數元素var示例
          引用元素q及子引用q元素示例示例
          訛訊元素s示例
          訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁
          代碼元素code示例
          輸入鍵元素kbd示例
          計算機輸出示例元素samp示例
          行間注元素ruby annotation示例
          複合式行間注元素hángjiānzhùyuansuruby annotation
          直角hángjiānzhùyuánsùㄏㄤˊㄐㄧㄢㄓㄨˋㄩㄢˊㄙㄨˋ

          其他

          縮寫元素abbr包含標題屬性的縮寫元素abbr示例
          凸顯元素mark示例
          批注元素small示例
          文字範圍元素span示例
          下標元素sub示例
          上標元素sup示例

          修訂類

          增訂元素ins示例
          增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁
          刪訂元素del示例
          刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁

          特殊排版功能

          漢字西文混排間隙

          然而在Jan Tschichold和他的著作Asymmetric Typography流行之前,直至追溯回Gutenberg时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。

          地區變體字型及標點符號樣式

          註:此處僅展示黑體,其餘字體樣式請參閱其他測試頁

          台灣教育部式

          中國國標式

          ji̍p-siannㆢㄧㆴ͘ㄒㄧㆩ

          \ No newline at end of file diff --git a/v3.1.0/test-amd.jade b/v3.1.0/test-amd.jade new file mode 100644 index 00000000..471d3138 --- /dev/null +++ b/v3.1.0/test-amd.jade @@ -0,0 +1,363 @@ +doctype html +html(lang='zh-Hant') + head + meta(charset='UTF-8') + title 測試・AMD模組 — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + style. + html { + overflow-x: hidden; + padding-bottom: 7em; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + + body + section + h1#grouping-content 內容群組類 + h2#p-ol-ul 段落、清單 + p + | 好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動! + p 頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。 + h3#p-poem-like 詩篇段落 + p.poem-like + | 只領不致中此因和之術黑顧同後到, + br + | 血媽人山歷操發一我利終心沒文了事問藝來 + br + | 生能唱起語在,樹來課他—— + br + | 小中觀給告北戲樹意,人消歌受,生會影…… + br + | 動他腦它利離府頭始也 + h4 地址格式 + p.poem-like + | 王小明 啓 + br + | 台灣 新北市板橋路十九段555號 + br + | 20245 + h3#ol 有序清單 + ol + li 一級清單項目 + li + | 一級清單項目 + ol + li 二級清單項目 + li + | 二級清單項目 + ol + li 三級清單項目 + li 三級清單項目 + li 一級清單項目 + li 一級清單項目 + h3#ul 無序清單 + ul + li 一級清單項目 + li + | 一級清單項目 + ul + li 二級清單項目 + li + | 二級清單項目 + ul + li 三級清單項目 + li 三級清單項目 + li 一級清單項目 + li 一級清單項目 + h2#blockquote 引用區塊 + blockquote + p 如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無! + footer + | ——姜慶《石人碼頭》 + h3#blockquote-no-p 未使用段落元素的引用區塊 + blockquote + | 時來數期沒道反先美別所金企感企媽失對談。 + footer + | ——新器急 + h3#blockquote-blockquote 引用區塊中的引用區塊 + blockquote + p + | 洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資? + blockquote + p + | 以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫! + h3#figure-blockquote 圖表內的引用區塊 + figure + blockquote + p 令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。 + figcaption + | 這是圖表解說元素 + code <figcaption> + | 內的解說。 + h2#pre 格式預處理文字區塊 + pre. + 國寫親下二好灣整機生土、是看老排讓和保藝車市。 + + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et me. + + 是除學圖寶濟候收。們性者位遠另象內未院清外了以共…… + 長明期事生合了中文新等麼科出過能意等件教求加, + 樓日里大下果個來。 + + 球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。 + h2#pre-code 代碼區塊 + pre: code. + void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document); + section + article + h1#sections 章節類 + h2#article 文章區塊元素 + h3#article-p-ol-ul 文章區塊內的段落、清單 + p 務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門! + h4#article-p-poem-like 詩篇段落 + p.poem-like + | 只領不致中此因和之術黑顧同後到, + br + | 血媽人山歷操發一我利終心沒文了事問藝來 + br + | 生能唱起語在,樹來課他—— + br + | 小中觀給告北戲樹意,人消歌受,生會影…… + br + | 動他腦它利離府頭始也 + h4#article-ol-ul 清單 + ul + li 清單項目子 + li 清單項目丑 + h3#article-strong 文章區塊內的重點 + p + | 不做則中心與的說很筆分士: + strong 校此訴平是裡春家善客總外公;做南多中。 + | 足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。 + h3#article-figure 文章區塊內的圖表引用區塊 + figure + blockquote + p 令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。 + figcaption + | 這是文章內圖表解說元素 + code <figcaption> + | 的解說。 + h3 文章區塊內的變音文字 + p + | 來化相據取愛統單商商半是否, + i 的媽沒種試此助來精人是灣,價種下落有, + | 機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口…… + h3#article-blockquote 文章內的引用區塊 + blockquote + p 火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。 + p 務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門! + h4#article-blockquote-blockquote 文章內引用區塊中的引用區塊 + blockquote + p 洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資? + blockquote + p 以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫! + h4#article-blockquote-strong 文章引用區塊內的重點 + blockquote + p + | 不做則中心與的說很筆分士: + strong 校此訴平是裡春家善客總外公;做南多中。 + | 足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。 + h4#article-blockquote-i 文章引用區塊內的變音文字 + blockquote + p + | 來化相據取愛統單商商半是否, + i 的媽沒種試此助來精人是灣,價種下落有, + | 機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口…… + section + h1#text-level-semantics 字級語意類 + a(href='#') 超連結元素a + | 示例 + br + u 註記元素u + | 示例 + br + | 註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁。 + br + cite 來源元素cite + | 示例 + br + strong 重點元素strong + | 示例 + br + dfn 術語元素dfn + | 示例 + br + b 關鍵字元素b + | 示例 + br + em 強調元素em + | 示例 + br + i 變音文字元素i + | 示例 + br + var 變數元素var + | 示例 + br + q 引用元素q及子引用q元素示例 + | 示例 + br + s 訛訊元素s + | 示例 + br + | 訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁。 + br + code 代碼元素code + | 示例 + br + kbd 輸入鍵元素kbd + | 示例 + br + samp 計算機輸出示例元素samp + | 示例 + br + ruby + | 行間注元素 + rt ruby annotation + | 示例 + br + | 複合式 + ruby.complex + rb 行間注 + rb 元素 + rtc.pinyin(lang='cmn-latn') + rt(rbspan='1') hángjiānzhù + rt(rbspan='1') yuansu + rtc.annotation(lang='en-GB') + rt(rbspan='3') ruby annotation + br + | 直角 + ruby.rightangle + rb 行 + rb 間 + rb 注 + rb 元 + rb 素 + rtc.annotation(lang='cmn-Latn') + rt(rbspan='3') hángjiānzhù + rt(rbspan='2') yuánsù + rtc.zhuyin + rt ㄏㄤˊ + rt ㄐㄧㄢ + rt ㄓㄨˋ + rt ㄩㄢˊ + rt ㄙㄨˋ + h2#text-level-semantics-other 其他 + abbr 縮寫元素abbr + | 及 + abbr(title='abbreviation') 包含標題屬性的縮寫元素abbr + | 示例 + br + mark 凸顯元素mark + | 示例 + br + small 批注元素small + | 示例 + br + span 文字範圍元素span + | 示例 + br + sub 下標元素sub + | 示例 + br + sup 上標元素sup + | 示例 + section + h1#edits 修訂類 + ins 增訂元素ins + | 示例 + br + | 增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁。 + br + del 刪訂元素del + | 示例 + br + | 刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁。 + section + h1#typography 特殊排版功能 + h2#han-la 漢字西文混排間隙 + p(lang='zh-Hans') + | 然而在 + span(lang='de') Jan Tschichold + | 和他的著作Asymmetric Typography流行之前,直至追溯回 + span(lang='de') Gutenberg + | 时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。 + p.footer + | —— + a(href='https://twitter.com/laerhsif') 钱争予 + | 〈 + a(href='//www.typeisbeautiful.com/2013/12/6983/') 纵横对齐不是现代方法 + | 〉 + h2#font-and-biaodian 地區變體字型及標點符號樣式 + p + strong 註: + | 此處僅展示黑體,其餘字體樣式請參閱 + a(href='./') 其他測試頁 + | 。 + h3#font-and-biaodian-recommended 舊字形及推薦標點樣式 + p.poem-like(style='font-family: "Biaodian Pro Sans", "Helvetica Neue", Helvetica, Arial, "Han Heiti", sans-serif;') + | 字。字.字,字、字;字:字?字! + br + | 「內『內容』容」‘內“內容”容’ + br + | 《書名》〈篇名〉(內容) + br + | 啊——什麼内容……丹·布朗 + br + | He — who wants to achieve the goal — denied about the fact that… + br + | 1991-1999年 他/她 + h3#font-and-biaodian-cns 台灣教育部式 + p.poem-like + | 字。字.字,字、字;字:字?字! + br + | 「內『內容』容」‘內“內容”容’ + br + | 《書名》〈篇名〉(內容) + br + | 啊——什麼内容……丹·布朗 + br + | He — who wants to achieve the goal — denied about the fact that… + br + | 1991-1999年 他/她 + h3#font-and-biaodian-gb 中國國標式 + p.poem-like(style='font-family: "Biaodian Pro Sans GB", "Helvetica Neue", Helvetica, Arial, "Han Heiti GB", sans-serif;') + | 字。字.字,字、字;字:字?字! + br + | 「内『内容』容」‘内“内容”容’ + br + | 《书名》〈篇名〉(内容) + br + | 啊——什么内容……丹·布朗 + br + | He — who wants to achieve the goal — denied about the fact that… + br + | 1991-1999年 他/她 + h2#checked-tones + ruby.rightangle + rb 入 + rb 聲 + | 韻 + rtc.romanization(lang='nan-Latn') + rt(rbspan='2') ji̍p-siann + rtc.zhuyin + rt ㆢㄧㆴ͘ + rt ㄒㄧㆩ + p.poem-like. + + aeioua̍e̍i̍o̍u̍ +
          + ㆴㆵㆶㆷㆴ͘ㆵ͘ㆶ͘ㆷ͘ + script(src='./require.js', data-main='./test-amd.js') diff --git a/v3.1.0/test-amd.js b/v3.1.0/test-amd.js new file mode 100644 index 00000000..ae2be4e2 --- /dev/null +++ b/v3.1.0/test-amd.js @@ -0,0 +1,5 @@ +require([ + './han.min' +], function( Han ) { + Han.init() +}) diff --git a/v3.1.0/test-commonjs.html b/v3.1.0/test-commonjs.html new file mode 100644 index 00000000..abe46f4b --- /dev/null +++ b/v3.1.0/test-commonjs.html @@ -0,0 +1,25 @@ +測試・CommonJS模組 — 漢字標準格式

          內容群組類

          段落、清單

          好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動!

          頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。

          詩篇段落

          地址格式

          有序清單

          1. 一級清單項目
          2. 一級清單項目
            1. 二級清單項目
            2. 二級清單項目
              1. 三級清單項目
              2. 三級清單項目
          3. 一級清單項目
          4. 一級清單項目

          無序清單

          • 一級清單項目
          • 一級清單項目
            • 二級清單項目
            • 二級清單項目
              • 三級清單項目
              • 三級清單項目
          • 一級清單項目
          • 一級清單項目

          引用區塊

          如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無!

          ——姜慶《石人碼頭》

          未使用段落元素的引用區塊

          時來數期沒道反先美別所金企感企媽失對談。
          ——新器急

          引用區塊中的引用區塊

          洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

          以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

          圖表內的引用區塊

          令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

          這是圖表解說元素<figcaption>內的解說。

          格式預處理文字區塊

          國寫親下二好灣整機生土、是看老排讓和保藝車市。
          +
          +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et me.
          +
          +是除學圖寶濟候收。們性者位遠另象內未院清外了以共……
          +長明期事生合了中文新等麼科出過能意等件教求加,
          +樓日里大下果個來。
          +
          +球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。

          代碼區塊

          void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document);

          章節類

          文章區塊元素

          文章區塊內的段落、清單

          務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

          詩篇段落

          清單

          • 清單項目子
          • 清單項目丑

          文章區塊內的重點

          不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

          文章區塊內的圖表引用區塊

          令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

          這是文章內圖表解說元素<figcaption>的解說。

          文章區塊內的變音文字

          來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

          文章內的引用區塊

          火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。

          務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

          文章內引用區塊中的引用區塊

          洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

          以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

          文章引用區塊內的重點

          不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

          文章引用區塊內的變音文字

          來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

          字級語意類

          超連結元素a示例
          註記元素u示例
          註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁
          來源元素cite示例
          重點元素strong示例
          術語元素dfn示例
          關鍵字元素b示例
          強調元素em示例
          變音文字元素i示例
          變數元素var示例
          引用元素q及子引用q元素示例示例
          訛訊元素s示例
          訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁
          代碼元素code示例
          輸入鍵元素kbd示例
          計算機輸出示例元素samp示例
          行間注元素ruby annotation示例
          複合式行間注元素hángjiānzhùyuansuruby annotation
          直角hángjiānzhùyuánsùㄏㄤˊㄐㄧㄢㄓㄨˋㄩㄢˊㄙㄨˋ

          其他

          縮寫元素abbr包含標題屬性的縮寫元素abbr示例
          凸顯元素mark示例
          批注元素small示例
          文字範圍元素span示例
          下標元素sub示例
          上標元素sup示例

          修訂類

          增訂元素ins示例
          增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁
          刪訂元素del示例
          刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁

          特殊排版功能

          漢字西文混排間隙

          然而在Jan Tschichold和他的著作Asymmetric Typography流行之前,直至追溯回Gutenberg时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。

          地區變體字型及標點符號樣式

          註:此處僅展示黑體,其餘字體樣式請參閱其他測試頁

          台灣教育部式

          中國國標式

          ji̍p-siannㆢㄧㆴ͘ㄒㄧㆩ

          \ No newline at end of file diff --git a/v3.1.0/test-commonjs.jade b/v3.1.0/test-commonjs.jade new file mode 100644 index 00000000..f61d1349 --- /dev/null +++ b/v3.1.0/test-commonjs.jade @@ -0,0 +1,363 @@ +doctype html +html(lang='zh-Hant') + head + meta(charset='UTF-8') + title 測試・CommonJS模組 — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + style. + html { + overflow-x: hidden; + padding-bottom: 7em; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + + body + section + h1#grouping-content 內容群組類 + h2#p-ol-ul 段落、清單 + p + | 好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動! + p 頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。 + h3#p-poem-like 詩篇段落 + p.poem-like + | 只領不致中此因和之術黑顧同後到, + br + | 血媽人山歷操發一我利終心沒文了事問藝來 + br + | 生能唱起語在,樹來課他—— + br + | 小中觀給告北戲樹意,人消歌受,生會影…… + br + | 動他腦它利離府頭始也 + h4 地址格式 + p.poem-like + | 王小明 啓 + br + | 台灣 新北市板橋路十九段555號 + br + | 20245 + h3#ol 有序清單 + ol + li 一級清單項目 + li + | 一級清單項目 + ol + li 二級清單項目 + li + | 二級清單項目 + ol + li 三級清單項目 + li 三級清單項目 + li 一級清單項目 + li 一級清單項目 + h3#ul 無序清單 + ul + li 一級清單項目 + li + | 一級清單項目 + ul + li 二級清單項目 + li + | 二級清單項目 + ul + li 三級清單項目 + li 三級清單項目 + li 一級清單項目 + li 一級清單項目 + h2#blockquote 引用區塊 + blockquote + p 如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無! + footer + | ——姜慶《石人碼頭》 + h3#blockquote-no-p 未使用段落元素的引用區塊 + blockquote + | 時來數期沒道反先美別所金企感企媽失對談。 + footer + | ——新器急 + h3#blockquote-blockquote 引用區塊中的引用區塊 + blockquote + p + | 洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資? + blockquote + p + | 以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫! + h3#figure-blockquote 圖表內的引用區塊 + figure + blockquote + p 令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。 + figcaption + | 這是圖表解說元素 + code <figcaption> + | 內的解說。 + h2#pre 格式預處理文字區塊 + pre. + 國寫親下二好灣整機生土、是看老排讓和保藝車市。 + + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et me. + + 是除學圖寶濟候收。們性者位遠另象內未院清外了以共…… + 長明期事生合了中文新等麼科出過能意等件教求加, + 樓日里大下果個來。 + + 球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。 + h2#pre-code 代碼區塊 + pre: code. + void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document); + section + article + h1#sections 章節類 + h2#article 文章區塊元素 + h3#article-p-ol-ul 文章區塊內的段落、清單 + p 務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門! + h4#article-p-poem-like 詩篇段落 + p.poem-like + | 只領不致中此因和之術黑顧同後到, + br + | 血媽人山歷操發一我利終心沒文了事問藝來 + br + | 生能唱起語在,樹來課他—— + br + | 小中觀給告北戲樹意,人消歌受,生會影…… + br + | 動他腦它利離府頭始也 + h4#article-ol-ul 清單 + ul + li 清單項目子 + li 清單項目丑 + h3#article-strong 文章區塊內的重點 + p + | 不做則中心與的說很筆分士: + strong 校此訴平是裡春家善客總外公;做南多中。 + | 足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。 + h3#article-figure 文章區塊內的圖表引用區塊 + figure + blockquote + p 令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。 + figcaption + | 這是文章內圖表解說元素 + code <figcaption> + | 的解說。 + h3 文章區塊內的變音文字 + p + | 來化相據取愛統單商商半是否, + i 的媽沒種試此助來精人是灣,價種下落有, + | 機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口…… + h3#article-blockquote 文章內的引用區塊 + blockquote + p 火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。 + p 務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門! + h4#article-blockquote-blockquote 文章內引用區塊中的引用區塊 + blockquote + p 洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資? + blockquote + p 以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫! + h4#article-blockquote-strong 文章引用區塊內的重點 + blockquote + p + | 不做則中心與的說很筆分士: + strong 校此訴平是裡春家善客總外公;做南多中。 + | 足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。 + h4#article-blockquote-i 文章引用區塊內的變音文字 + blockquote + p + | 來化相據取愛統單商商半是否, + i 的媽沒種試此助來精人是灣,價種下落有, + | 機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口…… + section + h1#text-level-semantics 字級語意類 + a(href='#') 超連結元素a + | 示例 + br + u 註記元素u + | 示例 + br + | 註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁。 + br + cite 來源元素cite + | 示例 + br + strong 重點元素strong + | 示例 + br + dfn 術語元素dfn + | 示例 + br + b 關鍵字元素b + | 示例 + br + em 強調元素em + | 示例 + br + i 變音文字元素i + | 示例 + br + var 變數元素var + | 示例 + br + q 引用元素q及子引用q元素示例 + | 示例 + br + s 訛訊元素s + | 示例 + br + | 訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁。 + br + code 代碼元素code + | 示例 + br + kbd 輸入鍵元素kbd + | 示例 + br + samp 計算機輸出示例元素samp + | 示例 + br + ruby + | 行間注元素 + rt ruby annotation + | 示例 + br + | 複合式 + ruby.complex + rb 行間注 + rb 元素 + rtc.pinyin(lang='cmn-latn') + rt(rbspan='1') hángjiānzhù + rt(rbspan='1') yuansu + rtc.annotation(lang='en-GB') + rt(rbspan='3') ruby annotation + br + | 直角 + ruby.rightangle + rb 行 + rb 間 + rb 注 + rb 元 + rb 素 + rtc.annotation(lang='cmn-Latn') + rt(rbspan='3') hángjiānzhù + rt(rbspan='2') yuánsù + rtc.zhuyin + rt ㄏㄤˊ + rt ㄐㄧㄢ + rt ㄓㄨˋ + rt ㄩㄢˊ + rt ㄙㄨˋ + h2#text-level-semantics-other 其他 + abbr 縮寫元素abbr + | 及 + abbr(title='abbreviation') 包含標題屬性的縮寫元素abbr + | 示例 + br + mark 凸顯元素mark + | 示例 + br + small 批注元素small + | 示例 + br + span 文字範圍元素span + | 示例 + br + sub 下標元素sub + | 示例 + br + sup 上標元素sup + | 示例 + section + h1#edits 修訂類 + ins 增訂元素ins + | 示例 + br + | 增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁。 + br + del 刪訂元素del + | 示例 + br + | 刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁。 + section + h1#typography 特殊排版功能 + h2#han-la 漢字西文混排間隙 + p(lang='zh-Hans') + | 然而在 + span(lang='de') Jan Tschichold + | 和他的著作Asymmetric Typography流行之前,直至追溯回 + span(lang='de') Gutenberg + | 时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。 + p.footer + | —— + a(href='https://twitter.com/laerhsif') 钱争予 + | 〈 + a(href='//www.typeisbeautiful.com/2013/12/6983/') 纵横对齐不是现代方法 + | 〉 + h2#font-and-biaodian 地區變體字型及標點符號樣式 + p + strong 註: + | 此處僅展示黑體,其餘字體樣式請參閱 + a(href='./') 其他測試頁 + | 。 + h3#font-and-biaodian-recommended 舊字形及推薦標點樣式 + p.poem-like(style='font-family: "Biaodian Pro Sans", "Helvetica Neue", Helvetica, Arial, "Han Heiti", sans-serif;') + | 字。字.字,字、字;字:字?字! + br + | 「內『內容』容」‘內“內容”容’ + br + | 《書名》〈篇名〉(內容) + br + | 啊——什麼内容……丹·布朗 + br + | He — who wants to achieve the goal — denied about the fact that… + br + | 1991-1999年 他/她 + h3#font-and-biaodian-cns 台灣教育部式 + p.poem-like + | 字。字.字,字、字;字:字?字! + br + | 「內『內容』容」‘內“內容”容’ + br + | 《書名》〈篇名〉(內容) + br + | 啊——什麼内容……丹·布朗 + br + | He — who wants to achieve the goal — denied about the fact that… + br + | 1991-1999年 他/她 + h3#font-and-biaodian-gb 中國國標式 + p.poem-like(style='font-family: "Biaodian Pro Sans GB", "Helvetica Neue", Helvetica, Arial, "Han Heiti GB", sans-serif;') + | 字。字.字,字、字;字:字?字! + br + | 「内『内容』容」‘内“内容”容’ + br + | 《书名》〈篇名〉(内容) + br + | 啊——什么内容……丹·布朗 + br + | He — who wants to achieve the goal — denied about the fact that… + br + | 1991-1999年 他/她 + h2#checked-tones + ruby.rightangle + rb 入 + rb 聲 + | 韻 + rtc.romanization(lang='nan-Latn') + rt(rbspan='2') ji̍p-siann + rtc.zhuyin + rt ㆢㄧㆴ͘ + rt ㄒㄧㆩ + p.poem-like. + + aeioua̍e̍i̍o̍u̍ +
          + ㆴㆵㆶㆷㆴ͘ㆵ͘ㆶ͘ㆷ͘ + script(src='./test-commonjs.js') diff --git a/v3.1.0/test-commonjs.js b/v3.1.0/test-commonjs.js new file mode 100644 index 00000000..5deedbd8 --- /dev/null +++ b/v3.1.0/test-commonjs.js @@ -0,0 +1 @@ +!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=f;f++)for(var g=1;50>=g;g++){if("undefined"!==e&&a[1].getImageData(g,f,1,1).data[3]!==b[1].getImageData(g,f,1,1).data[3]){e=!0;break}if(e)break;50!==g||20!==f||e||(e=!1)}return p.remove(b[0]),p.remove(a[0]),b=null,a=null,e}catch(h){return!1}}function e(a,b,c){var d=p.create("ru"),b=p.clone(b),c=c||{};return Array.isArray(a)?d.innerHTML=a.map(function(a){return"undefined"==typeof a?"":a.outerHTML}).join(""):d.appendChild(p.clone(a)),d.appendChild(b),c.annotation=b.textContent,p.setAttr(d,c),d}function f(a,b){var c,d,e,f,a=p.clone(a),g=p.create("ru"),h=p.create("zhuyin"),i=p.create("yin"),j=p.create("diao"),k=b.textContent;return c=k.replace(o.zhuyin.diao,""),f=c?c.length:0,d=k.replace(c,"").replace(/[\u02C5]/g,"\u02c7").replace(/[\u030D]/g,"\u0358"),e=k.replace(o.zhuyin.form,function(a,b,c){return[a?"S":null,b?"J":null,c?"Y":null].join("")}),j.innerHTML=d,i.innerHTML=c,h.appendChild(i),h.appendChild(j),g.appendChild(a),g.appendChild(h),p.setAttr(g,{zhuyin:"",diao:d,length:f,form:e}),g}var g=a.document,h=g.documentElement,i=g.body,j="3.1.0",k=["initCond","renderElem","renderJiya","renderHWS","correctBasicBD","substCombLigaWithPUA"],l=function(a,b){return new l.fn.init(a,b)},m=function(){return arguments[0]&&(this.context=arguments[0]),arguments[1]&&(this.condition=arguments[1]),this};l.version=j,l.fn=l.prototype={version:j,constructor:l,context:i,condition:h,routine:k,init:m,setRoutine:function(a){return Array.isArray(a)&&(this.routine=a),this},render:function(a){var b=this,a=Array.isArray(a)?a:this.routine;return a.forEach(function(a){try{"string"==typeof a?b[a]():Array.isArray(a)&&b[a.shift()].apply(b,a)}catch(c){}}),this}},l.fn.init.prototype=l.fn,l.init=function(){return l.init=l().render()};var n={punct:{base:"[\u2026,.;:!?\u203d_]",sing:"[\u2010-\u2014\u2026]",middle:"[\\/~\\-&\u2010-\u2014_]",open:"['\"\u2018\u201c\\(\\[\xa1\xbf\u2e18\xab\u2039\u201a\u201c\u201e]",close:"['\"\u201d\u2019\\)\\]\xbb\u203a\u201b\u201d\u201f]",end:"['\"\u201d\u2019\\)\\]\xbb\u203a\u201b\u201d\u201f\u203c\u203d\u2047-\u2049,.;:!?]"},biaodian:{base:"[\ufe30\uff0e\u3001\uff0c\u3002\uff1a\uff1b\uff1f\uff01\u30fc]",liga:"[\u2014\u2026\u22ef]",middle:"[\xb7\uff3c\uff0f\uff0d\u30a0\uff06\u30fb\uff3f]",open:"[\u300c\u300e\u300a\u3008\uff08\u3014\uff3b\uff5b\u3010\u3016]",close:"[\u300d\u300f\u300b\u3009\uff09\u3015\uff3d\uff5d\u3011\u3017]",end:"[\u300d\u300f\u300b\u3009\uff09\u3015\uff3d\uff5d\u3011\u3017\ufe30\uff0e\u3001\uff0c\u3002\uff1a\uff1b\uff1f\uff01\u30fc]"},hanzi:{base:"[\u4e00-\u9fff\u3400-\u4db5\u31c0-\u31e3\u3007\ufa0e\ufa0f\ufa11\ufa13\ufa14\ufa1f\ufa21\ufa23\ufa24\ufa27-\ufa29]|[\ud800-\udbff][\udc00-\udfff]",desc:"[\u2ff0-\u2ffa]",radical:"[\u2f00-\u2fd5\u2e80-\u2ef3]"},latin:{base:"[A-Za-z0-9\xc0-\xff\u0100-\u017f\u0180-\u024f\u2c60-\u2c7f\ua720-\ua7ff\u1e00-\u1eff]",combine:"[\u0300-\u0341\u1dc0-\u1dff]"},ellinika:{base:"[0-9\u0370-\u03ff\u1f00-\u1fff]",combine:"[\u0300-\u0345\u1dc0-\u1dff]"},kirillica:{base:"[0-9\u0400-\u0482\u048a-\u04ff\u0500-\u052f\ua640-\ua66e\ua67e-\ua697]",combine:"[\u0483-\u0489\u2de0-\u2dff\ua66f-\ua67d\ua69f]"},kana:{base:"[\u30a2\u30a4\u30a6\u30a8\u30aa-\u30fa\u3042\u3044\u3046\u3048\u304a-\u3094\u309f\u30ff]|\ud82c[\udc00-\udc01]",small:"[\u3041\u3043\u3045\u3047\u3049\u30a1\u30a3\u30a5\u30a7\u30a9\u3063\u3083\u3085\u3087\u308e\u3095\u3096\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u31f0-\u31ff]",combine:"[\u3099-\u309c]",half:"[\uff66-\uff9f]",mark:"[\u30a0\u309d\u309e\u30fb-\u30fe]"},eonmun:{base:"[\uac00-\ud7a3]",letter:"[\u1100-\u11ff\u314f-\u3163\u3131-\u318e\ua960-\ua97c\ud7b0-\ud7fb]",half:"[\uffa1-\uffdc]"},zhuyin:{base:"[\u3105-\u312d\u31a0-\u31ba]",initial:"[\u3105-\u3119\u312a-\u312c\u31a0-\u31a3]",medial:"[\u3127-\u3129]","final":"[\u311a-\u3129\u312d\u31a4-\u31b3\u31b8-\u31ba]",tone:"[\u02d9\u02ca\u02c5\u02c7\u02cb\u02ea\u02eb]",ruyun:"[\u31b4-\u31b7][\u0358\u030d]?"}},o=function(){var a="[\\x20\\t\\r\\n\\f]",b=n.punct.open,c=(n.punct.close,n.punct.end),d=n.punct.middle,e=n.punct.sing,f=b+"|"+c+"|"+d,g=n.biaodian.open,h=n.biaodian.close,i=n.biaodian.end,j=n.biaodian.middle,k=n.biaodian.liga+"{2}",l=g+"|"+i+"|"+j,m=n.kana.base+n.kana.combine+"?",o=n.kana.small+n.kana.combine+"?",p=(n.kana.half,n.eonmun.base+"|"+n.eonmun.letter),q=n.eonmun.half,r=n.hanzi.base+"|"+n.hanzi.desc+"|"+n.hanzi.radical+"|"+m,s=n.ellinika.combine,t=n.latin.base+s+"*",u=n.ellinika.base+s+"*",v=n.kirillica.combine,w=n.kirillica.base+v+"*",x=t+"|"+u+"|"+w,y="['\u2019]",z=r+"|("+x+"|"+y+")+",A=n.zhuyin.initial,B=n.zhuyin.medial,C=n.zhuyin["final"],D=n.zhuyin.tone+"|"+n.zhuyin.ruyun;return{"char":{punct:{all:new RegExp("("+f+")","g"),open:new RegExp("("+b+")","g"),end:new RegExp("("+c+")","g"),sing:new RegExp("("+e+")","g")},biaodian:{all:new RegExp("("+l+")","g"),open:new RegExp("("+g+")","g"),close:new RegExp("("+h+")","g"),end:new RegExp("("+i+")","g"),liga:new RegExp("("+k+")","g"),group:[new RegExp("("+g+"|"+j+"|"+i+"){2,}","g"),new RegExp("("+k+g+")","g")]},hanzi:{individual:new RegExp("("+r+")","g"),group:new RegExp("("+r+")+","g")},word:new RegExp("("+t+"|"+u+"|"+w+"|"+f+")+","ig"),alphabet:{latin:new RegExp("("+t+")","ig"),ellinika:new RegExp("("+u+")","ig"),kirillica:new RegExp("("+w+")","ig"),kana:new RegExp("("+m+")","g"),smallkana:new RegExp("("+o+")","g"),eonmun:new RegExp("("+p+")","g"),halfeonmun:new RegExp("("+q+")","g")}},jinze:{touwei:new RegExp("("+g+"+)("+z+")("+i+"+)","ig"),tou:new RegExp("("+g+"+)("+z+")","ig"),wei:new RegExp("("+z+")("+i+"+)","ig"),middle:new RegExp("("+z+")("+j+")("+z+")","ig")},zhuyin:{form:new RegExp("^\u02d9?("+A+")?("+B+")?("+C+")?("+D+")?$"),diao:new RegExp("("+D+")","g")},hws:{base:[new RegExp("("+r+")("+x+"|"+b+")","ig"),new RegExp("("+x+"|"+c+")("+r+")","ig")],strict:[new RegExp("("+r+")"+a+"?("+x+"|"+b+")","ig"),new RegExp("("+x+"|"+c+")"+a+"?("+r+")","ig")]},"display-as":{"ja-font-for-hant":["\u67e5 \u67fb","\u555f \u5553","\u9109 \u9115","\u503c \u5024","\u6c61 \u6c5a"],"comb-liga-pua":[["a[\u030d\u0358]","\udb80\udc61"],["e[\u030d\u0358]","\udb80\udc65"],["i[\u030d\u0358]","\udb80\udc69"],["o[\u030d\u0358]","\udb80\udc6f"],["u[\u030d\u0358]","\udb80\udc75"],["\u31b4[\u030d\u0358]","\udb8c\uddb4"],["\u31b5[\u030d\u0358]","\udb8c\uddb5"],["\u31b6[\u030d\u0358]","\udb8c\uddb6"],["\u31b7[\u030d\u0358]","\udb8c\uddb7"]]},"inaccurate-char":[["[\u2022\u2027]","\xb7"],["\u22ef\u22ef","\u2026\u2026"],["\u2500\u2500","\u2014\u2014"],["\u2035","\u2018"],["\u2032","\u2019"],["\u2036","\u201c"],["\u2033","\u201d"]]}}();l.UNICODE=n,l.TYPESET=o,l.UNICODE.cjk=l.UNICODE.hanzi,l.UNICODE.greek=l.UNICODE.ellinika,l.UNICODE.cyrillic=l.UNICODE.kirillica,l.UNICODE.hangul=l.UNICODE.eonmun,l.TYPESET["char"].cjk=l.TYPESET["char"].hanzi,l.TYPESET["char"].alphabet.greek=l.TYPESET["char"].alphabet.ellinika,l.TYPESET["char"].alphabet.cyrillic=l.TYPESET["char"].alphabet.kirillica,l.TYPESET["char"].alphabet.hangul=l.TYPESET["char"].alphabet.eonmun;var p={id:function(a,b){return(b||g).getElementById(a)},tag:function(a,b){return this.makeArray((b||g).getElementsByTagName(a))},qsa:function(a,b){return this.makeArray((b||g).querySelectorAll(a))},create:function(a,b){var a="!"===a?g.createDocumentFragment():""===a?g.createTextNode(b||""):g.createElement(a);try{b&&(a.className=b)}catch(c){}return a},clone:function(a,b){return a.cloneNode(b||!0)},remove:function(a,b){return(b||a.parentNode).removeChild(a)},setAttr:function(a,b){if("object"==typeof b){var c=b.length;if("object"==typeof b[0]&&"name"in b[0])for(var d=0;c>d;d++)void 0!==b[d].value&&a.setAttribute(b[d].name,b[d].value);else for(var e in b)b.hasOwnProperty(e)&&void 0!==b[e]&&a.setAttribute(e,b[e]);return a}},isIgnorable:function(a){return"WBR"===a.nodeName||a.nodeType===Node.COMMENT_NODE},makeArray:function(a){return Array.prototype.slice.call(a)},extend:function(a,b){var c="object"==typeof a||"function"==typeof a||"object"==typeof b;if(c){for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);return a}}},q=function(b){function c(a,b,c){var d=Element.prototype,e=d.matches||d.mozMatchesSelector||d.msMatchesSelector||d.webkitMatchesSelector;return a instanceof Element?e.call(a,b):c&&/^[39]$/.test(a.nodeType)?!0:!1}var d="0.1.2",e="style, script, head title",f=a||{},g=f.document||void 0;if("undefined"==typeof g)throw new Error("Fibre requires a DOM-supported environment.");var h=function(a){return new h.fn.init(a)};return h.version=d,h.matches=c,h.fn=h.prototype={constructor:h,version:d,context:void 0,contextSelector:null,finder:[],init:function(a){if(!a)throw new Error("A context is required for Fibre to initialise.");return a instanceof Node?this.context=a:"string"==typeof a&&(this.contextSelector=a,this.context=g.querySelector(a)),this},filterElemFn:function(a){return c(a,this.filterSelector,!0)&&!c(a,this.filterOutSelector)},filterSelector:"*",filter:function(a){switch(typeof a){case"string":this.filterSelector=a;break;case"function":this.filterElemFn=a;break;default:return this}return this},filterOutSelector:e,filterOut:function(a,b){switch(typeof a){case"string":"undefined"!=typeof b&&b===!0?this.filterOutSelector+=", "+a:this.filterOutSelector=a;break;default:return this}return this},replace:function(a,c,d){var e=this,d=d||"retain";return e.finder.push(b(e.context,{find:a,replace:c,filterElements:function(a){return e.filterElemFn(a)},portionMode:d})),e},wrap:function(a,c,d){var e=this,d=d||"retain";return e.finder.push(b(e.context,{find:a,wrap:c,filterElements:function(a){return e.filterElemFn(a)},portionMode:d})),e},revert:function(a){var b=this.finder.length,a=Number(a)||(0===a?Number(0):"all"===a?b:1);if("undefined"==typeof b||0===b)return this;a>b&&(a=b);for(var c=a;c>0;c--)this.finder.pop().revert();return this}},h.fn.init.prototype=h.fn,h}(function(){function a(a){return String(a).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function b(){return c.apply(null,arguments)||d.apply(null,arguments)}function c(a,c,e,f,g){if(c&&!c.nodeType&&arguments.length<=2)return!1;var h="function"==typeof e;h&&(e=function(a){return function(b,c){return a(b.text,c.startIndex)}}(e));var i=d(c,{find:a,wrap:h?null:e,replace:h?e:"$"+(f||"&"),prepMatch:function(a,b){if(!a[0])throw"findAndReplaceDOMText cannot handle zero-length matches";if(f>0){var c=a[f];a.index+=a[0].indexOf(c),a[0]=c}return a.endIndex=a.index+a[0].length,a.startIndex=a.index,a.index=b,a},filterElements:g});return b.revert=function(){return i.revert()},!0}function d(a,b){return new e(a,b)}function e(a,b){b.portionMode=b.portionMode||f,this.node=a,this.options=b,this.prepMatch=b.prepMatch||this.prepMatch,this.reverts=[],this.matches=this.search(),this.matches.length&&this.processMatches()}{var f="retain",h="first",i=g;({}).toString}return b.Finder=e,e.prototype={search:function(){var b,c=0,d=this.options.find,e=this.getAggregateText(),f=[];if(d="string"==typeof d?RegExp(a(d),"g"):d,d.global)for(;b=d.exec(e);)f.push(this.prepMatch(b,c++));else(b=e.match(d))&&f.push(this.prepMatch(b,0));return f},prepMatch:function(a,b){if(!a[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return a.endIndex=a.index+a[0].length,a.startIndex=a.index,a.index=b,a},getAggregateText:function(){function a(c){if(3===c.nodeType)return c.data;if(b&&!b(c))return"";var d="";if(c=c.firstChild)do d+=a(c);while(c=c.nextSibling);return d}var b=this.options.filterElements;return a(this.node)},processMatches:function(){var a,b,c,d=this.matches,e=this.node,f=this.options.filterElements,g=[],h=e,i=d.shift(),j=0,k=0,l=0,m=[e];a:for(;;){if(3===h.nodeType&&(!b&&h.length+j>=i.endIndex?b={node:h,index:l++,text:h.data.substring(i.startIndex-j,i.endIndex-j),indexInMatch:j-i.startIndex,indexInNode:i.startIndex-j,endIndexInNode:i.endIndex-j,isEnd:!0}:a&&g.push({node:h,index:l++,text:h.data,indexInMatch:j-i.startIndex,indexInNode:0}),!a&&h.length+j>i.startIndex&&(a={node:h,index:l++,indexInMatch:0,indexInNode:i.startIndex-j,endIndexInNode:i.endIndex-j,text:h.data.substring(i.startIndex-j,i.endIndex-j)}),j+=h.data.length),c=1===h.nodeType&&f&&!f(h),a&&b){if(h=this.replaceMatch(i,a,g,b),j-=b.node.data.length-b.endIndexInNode,a=null,b=null,g=[],i=d.shift(),l=0,k++,!i)break}else if(!c&&(h.firstChild||h.nextSibling)){h.firstChild?(m.push(h),h=h.firstChild):h=h.nextSibling;continue}for(;;){if(h.nextSibling){h=h.nextSibling;break}if(h=m.pop(),h===e)break a}}},revert:function(){for(var a=this.reverts.length;a--;)this.reverts[a]();this.reverts=[]},prepareReplacementString:function(a,b,c){var d=this.options.portionMode;return d===h&&b.indexInMatch>0?"":(a=a.replace(/\$(\d+|&|`|')/g,function(a,b){var d;switch(b){case"&":d=c[0];break;case"`":d=c.input.substring(0,c.startIndex);break;case"'":d=c.input.substring(c.endIndex);break;default:d=c[+b]}return d}),d===h?a:b.isEnd?a.substring(b.indexInMatch):a.substring(b.indexInMatch,b.indexInMatch+b.text.length))},getPortionReplacementNode:function(a,b,c){var d=this.options.replace||"$&",e=this.options.wrap;if(e&&e.nodeType){var f=i.createElement("div");f.innerHTML=e.outerHTML||(new XMLSerializer).serializeToString(e),e=f.firstChild}if("function"==typeof d)return d=d(a,b,c),d&&d.nodeType?d:i.createTextNode(String(d));var g="string"==typeof e?i.createElement(e):e;return d=i.createTextNode(this.prepareReplacementString(d,a,b,c)),d.data&&g?(g.appendChild(d),g):d},replaceMatch:function(a,b,c,d){var e,f,g=b.node,h=d.node;if(g===h){var j=g;b.indexInNode>0&&(e=i.createTextNode(j.data.substring(0,b.indexInNode)),j.parentNode.insertBefore(e,j));var k=this.getPortionReplacementNode(d,a);return j.parentNode.insertBefore(k,j),d.endIndexInNoden;++n){var p=c[n],q=this.getPortionReplacementNode(p,a);p.node.parentNode.replaceChild(q,p.node),this.reverts.push(function(a,b){return function(){b.parentNode.replaceChild(a.node,b)}}(p,q)),m.push(q)}var r=this.getPortionReplacementNode(d,a);return g.parentNode.insertBefore(e,g),g.parentNode.insertBefore(l,g),g.parentNode.removeChild(g),h.parentNode.insertBefore(r,h),h.parentNode.insertBefore(f,h),h.parentNode.removeChild(h),this.reverts.push(function(){e.parentNode.removeChild(e),l.parentNode.replaceChild(g,l),f.parentNode.removeChild(f),r.parentNode.replaceChild(h,r)}),r}},b}());p.extend(q.fn,{jinzify:function(){var a=this.filterOutSelector;return this.filterOutSelector+=", jinze",this.replace(o.jinze.touwei,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","touwei");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}).replace(o.jinze.wei,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","wei");return e.appendChild(d),0===a.index?e:""}).replace(o.jinze.tou,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","tou");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}).replace(o.jinze.middle,function(a,b){var c=b[0],d=p.create("",c),e=p.create("jinze","middle");return e.appendChild(d),0===a.index&&a.isEnd||1===a.index?e:""}),this.filterOutSelector=a,this},groupify:function(){return this.wrap(o["char"].biaodian.group[0],p.clone(p.create("char_group","biaodian cjk"))).wrap(o["char"].biaodian.group[1],p.clone(p.create("char_group","biaodian cjk"))),this},charify:function(a){var a=p.extend({hanzi:"individual",liga:"liga",word:"group",latin:"group",ellinika:"group",kirillica:"group",kana:"none",eonmun:"none"},a||{});return"group"===a.hanzi&&this.wrap(o["char"].hanzi.group,p.clone(p.create("char_group","hanzi cjk"))),"individual"===a.hanzi&&this.wrap(o["char"].hanzi.individual,p.clone(p.create("char","hanzi cjk"))),("individual"===a.hanzi||"biaodian"===a.hanzi||"liga"===a.liga)&&("none"!==a.hanzi&&this.replace(o["char"].biaodian.all,function(a,b){var c=b[0],d=p.create("",c),e="biaodian cjk "+(c.match(o["char"].biaodian.open)?"open":c.match(o["char"].biaodian.close)?"close end":c.match(o["char"].biaodian.end)?"end":""),f=p.create("char",e),g=c.charCodeAt(0).toString(16);return f.setAttribute("unicode",g),f.appendChild(d),f}),this.replace("liga"===a.liga?o["char"].biaodian.liga:new RegExp("("+n.biaodian.liga+")","g"),function(a,b){var c=b[0],d=p.create("",c),e=p.create("char","biaodian liga cjk"),f=c.charCodeAt(0).toString(16);return e.setAttribute("unicode",f),e.appendChild(d),e})),"none"!==a.word&&this.wrap(o["char"].word,p.clone(p.create("word"))),("none"!==a.latin||"none"!==a.ellinika||"none"!==a.kirillica)&&this.wrap(o["char"].punct.all,p.clone(p.create("char","punct"))),"individual"===a.latin&&this.wrap(o["char"].alphabet.latin,p.clone(p.create("char","alphabet latin"))),"individual"===a.ellinika&&this.wrap(o["char"].alphabet.ellinika,p.clone(p.create("char","alphabet ellinika greek"))),"individual"===a.kirillica&&this.wrap(o["char"].alphabet.kirillica,p.clone(p.create("char","alphabet kirillica cyrillic"))),this}}),l.find=q,void["replace","wrap","revert","jinzify","charify"].forEach(function(a){l.fn[a]=function(){return this.finder||(this.finder=l.find(this.context)),this.finder[a](arguments[0],arguments[1]),this}});var r={};r.detectFont=d,r.support=function(){function b(a){var b,c=a.charAt(0).toUpperCase()+a.slice(1),d=(a+" "+e.join(c+" ")+c).split(" ");return d.forEach(function(a){"string"==typeof f.style[a]&&(b=!0)}),b||!1}function c(a,b){var c,d,e,f=i||p.create("body"),g=p.create("div"),j=i?g:f,b="function"==typeof b?b:function(){};return c=[""].join(""),j.innerHTML+=c,f.appendChild(g),i||(f.style.background="",f.style.overflow="hidden",e=h.style.overflow,h.style.overflow="hidden",h.appendChild(f)),d=b(j,a),p.remove(j),i||(h.style.overflow=e),!!d}function d(b,c){var d;return a.getComputedStyle?d=g.defaultView.getComputedStyle(b,null).getPropertyValue(c):b.currentStyle&&(d=b.currentStyle[c]),d}var e="Webkit Moz ms".split(" "),f=p.create("_");return{ruby:function(){var a,b=p.create("ruby"),c=p.create("rt"),e=p.create("rp");return b.appendChild(e),b.appendChild(c),h.appendChild(b),a="none"===d(e,"display")||"ruby"===d(b,"display")&&"ruby-text"===d(c,"display")?!0:!1,h.removeChild(b),b=null,c=null,e=null,a}(),fontface:function(){var a;return c('@font-face { font-family: font; src: url("//"); }',function(b,c){var d=p.qsa("style",b)[0],e=d.sheet||d.styleSheet,f=e?e.cssRules&&e.cssRules[0]?e.cssRules[0].cssText:e.cssText||"":"";a=/src/i.test(f)&&0===f.indexOf(c.split(" ")[0])}),a}(),unicoderange:function(){var a;return c('@font-face{font-family:test-for-unicode-range;src:local(Arial),local("Droid Sans")}@font-face{font-family:test-for-unicode-range;src:local("Times New Roman"),local(Times),local("Droid Serif");unicode-range:U+270C}',function(){a=!r.detectFont("test-for-unicode-range",'Arial, "Droid Sans"',"Q")}),a}(),columnwidth:b("columnWidth"),textemphasis:b("textEmphasis"),writingmode:b("writingMode")}}(),r.initCond=function(a){var b,a=a||h,c="";for(var d in r.support)b=(r.support[d]?"":"no-")+d,a.classList.add(b),c+=b+" ";return c},p.extend(r,{renderElem:function(a){this.renderRuby(a),this.renderDecoLine(a),this.renderDecoLine(a,"s, del"),this.renderEm(a)},renderDecoLine:function(a,b){var b=b||"u, ins",c=p.qsa(b,a),d=new RegExp("^("+b.replace(/\,\s?/g,"|")+")$","ig");c.forEach(function(a){var b;do if(b=(b||a).nextSibling,!b)return;while(p.isIgnorable(b));b.nodeName.match(d)&&b.classList.add("adjacent")})},renderEm:function(a,b){var c=b?"qsa":"tag",b=b||"em",d=p[c](b,a);d.forEach(function(a){var b=q(a);r.support.textemphasis||b.jinzify(),b.groupify().charify(r.support.textemphasis?{hanzi:"biaodian",word:"punctuation"}:{latin:"individual",ellinika:"individual",kirillica:"individual"})})},renderRuby:function(a,b){var c=b?"qsa":"tag",b=b||"ruby",d=p[c](b,a),g=p.qsa(b+", rtc",a);g.forEach(function(a){var b=a.classList;b.contains("pinyin")?b.add("romanization"):b.contains("mps")&&b.add("zhuyin"),b.contains("romanization")&&b.add("annotation")}),d.forEach(function(a){var c,d,g,h,i,j,k=a.classList,l=!r.support.ruby||k.contains("zhuyin")||k.contains("complex")||k.contains("rightangle");l&&(c=p.create("!"),c.appendChild(p.clone(a)),d=p.qsa(b,c)[0],(!r.support.ruby||k.contains("zhuyin"))&&p.tag("rt",d).forEach(function(a){var b,c=p.create("!"),d=[];do{if(b=(b||a).previousSibling,!b||b.nodeName.match(/(r[ubt])/i))break;c.insertBefore(p.clone(b),c.firstChild),d.push(b)}while(!b.nodeName.match(/(r[ubt])/i));h=k.contains("zhuyin")?f(c,a):e(c,a);try{a.parentNode.replaceChild(h,a),d.forEach(function(a){p.remove(a)})}catch(g){}}),(k.contains("complex")||k.contains("rightangle"))&&(g=h=p.tag("rb",d),i=g.length,!function(b){b&&(h=p.tag("rt",b).map(function(a,b){if(g[b]){var c=f(g[b],a);try{g[b].parentNode.replaceChild(c,g[b])}catch(d){}return c}}),p.remove(b),a.setAttribute("rightangle",""))}(d.querySelector("rtc.zhuyin")),p.qsa("rtc:not(.zhuyin)",d).forEach(function(b,c){var d;d=p.tag("rt",b).map(function(b){var d,f,g=Number(b.getAttribute("rbspan")||1),j=0,l=[];g>i&&(g=i);do{try{d=h.shift(),l.push(d)}catch(m){}if("undefined"==typeof d)break;j+=Number(d.getAttribute("span")||1)}while(g>j);if(j>g){if(l.length>1)return void console.error("An impossible `rbspan` value detected.",a);l=p.tag("rb",l[0]),h=l.slice(g).concat(h),l=l.slice(0,g),j=g}f=e(l,b,{"class":k,span:j,order:c});try{l[0].parentNode.replaceChild(f,l.shift()),l.forEach(function(a){p.remove(a)})}catch(m){}return f}),h=d,p.remove(b)})),j=p.create("hruby"),j.innerHTML=c.firstChild.innerHTML,p.setAttr(j,a.attributes),j.normalize(),a.parentNode.replaceChild(j,a))})}}),l.normalize=r,l.localize=r,l.support=r.support,l.detectFont=r.detectFont,l.fn.initCond=function(){return this.condition.classList.add("han-js-rendered"),l.normalize.initCond(this.condition),this},void["Elem","DecoLine","Em","Ruby"].forEach(function(a){var b="render"+a;l.fn[b]=function(a){return l.normalize[b](this.context,a),this}}),p.extend(l.support,{heiti:!0,songti:l.detectFont('"Han Songti"'),"songti-gb":l.detectFont('"Han Songti GB"'),kaiti:l.detectFont('"Han Kaiti"'),fangsong:l.detectFont('"Han Fangsong"')});var s,t="* > hws:first-child, * > wbr:first-child + hws, wbr:first-child + wbr + hws",u=function(){var a=p.create("div");return a.appendChild(p.create("","0-")),a.appendChild(p.create("","2")),a.normalize(),2!==a.firstChild.length}();s=p.create("hws"),s.innerHTML=" ",p.extend(l,{isNodeNormalizeNormal:u,renderHWS:function(a,b){var a=a||g,c=b?"strict":"base",d=l.find(a);return b?d.filterOut("textarea, code, kbd, samp, pre",!0):d.filterOut("textarea",!0),d.replace(l.TYPESET.hws[c][0],"$1$2").replace(l.TYPESET.hws[c][1],"$1$2").replace(/(['"]+)(.+?)\1/gi,"$1$2$1").replace("",function(){return p.clone(s)}),p.qsa(t,a).forEach(function(a){for(var b=a.parentNode,c=b.firstChild;p.isIgnorable(c);)if(c=c.nextSibling,!c)return;for(;"HWS"===c.nodeName&&(p.remove(c,b),c=b.parentNode.insertBefore(p.clone(s),b),b=b.parentNode,u&&b.normalize(),c===b.firstChild););}),u&&a.normalize(),d}}),p.extend(l.fn,{HWS:null,renderHWS:function(a){return l.renderHWS(this.context,a),this.HWS=p.tag("hws",this.context),this},revertHWS:function(){return this.HWS.forEach(function(a){p.remove(a)}),this}}),l.renderJiya=function(a){var a=a||g,b=[l.find(a)];return b[0].filterOut("textarea, code, kbd, samp, pre, jinze, em",!0),b[0].groupify(),p.qsa("char_group.biaodian",a).forEach(function(a){b.push(l(a).charify({hanzi:"biaodian",liga:"liga",word:"none",latin:"none",ellinika:"none",kirillica:"none"}))}),b},p.extend(l.fn,{jiya:null,renderJiya:function(){return this.jiya=l.renderJiya(this.context),this},revertJiya:function(){try{this.jiya.revert("all")}catch(a){}return this}});var v;v=p.create("char","biaodian cjk middle"),v.setAttribute("unicode","b7"),l.correctBasicBD=function(a,b){if(!l.support.unicoderange||b){var c,a=a||g;c=l.find(a),c.wrap(/\u00B7/g,p.clone(v)).charify({liga:"liga",hanzi:"none",word:"none",latin:"none",ellinika:"none",kirillica:"none"})}},p.extend(l.fn,{basicBD:null,correctBasicBD:function(a){return this.basicBD=l.correctBasicBD(this.context,a),this},revertBasicBD:function(){try{this.basicBD.revert("all")}catch(a){}return this}});var w="ru[annotation]",x="textarea, code, kbd, samp, pre",y=function(){var a,b,c,d=i||p.create("body"),e=p.create("div"),f=p.create("span"),g=i?e:d;return i?i.appendChild(g):(d.style.background="",d.style.overflow="hidden",b=h.style.overflow,h.style.overflow="hidden",h.appendChild(d)),f.innerHTML="i̍",f.style.fontFamily="sans-serif",f.style.display="inline-block",a=p.clone(f),a.style.fontFamily='"Romanization Sans"',g.appendChild(f),g.appendChild(a),c=f.clientWidth!==a.clientWidth,p.remove(g),i||(h.style.overflow=b),c}(),z=l.TYPESET["display-as"]["comb-liga-pua"],A=l.TYPESET["inaccurate-char"],B=p.create("char","comb-liga"),C=p.create("inner");return p.extend(l,{isCombLigaNormal:y,substCombLigaWithPUA:function(a){if(!y){var a=a||g,b=l.find(a);return b.filterOut(x,!0),z.forEach(function(a){b.replace(new RegExp(a[0],"ig"),function(b,c){var d=p.clone(B),e=p.clone(C);return e.innerHTML=c[0],d.appendChild(e),d.setAttribute("display-as",a[1]),0===b.index?d:""})}),p.qsa(w,a).forEach(function(a){var b=a.getAttribute("annotation");z.slice(0,5).forEach(function(a){b=b.replace(new RegExp(a[0],"ig"),a[1])}),a.setAttribute("annotation",b)}),b}},substInaccurateChar:function(a){var a=a||g,b=l.find(a);b.filterOut(x,!0),A.forEach(function(a){b.replace(new RegExp(a[0],"ig"),a[1])})}}),p.extend(l.fn,{"comb-liga":null,"inaccurate-char":null,substCombLigaWithPUA:function(){return this["comb-liga"]=l.substCombLigaWithPUA(this.context),this},revertCombLigaWithPUA:function(){try{this["comb-liga"].revert("all")}catch(a){}return this},substInaccurateChar:function(){return this["inaccurate-char"]=l.substInaccurateChar(this.context),this},revertInaccurateChar:function(){try{this["inaccurate-char"].revert("all")}catch(a){}return this}}),a.addEventListener("DOMContentLoaded",function(){var a;h.classList.contains("han-init")?l.init():(a=g.querySelector(".han-init-context"))&&(l.init=l(a).render())}),"function"==typeof define&&define.amd?define(function(){return l}):("undefined"==typeof b||b===!1)&&(a.Han=l),l})},{}],2:[function(a,b){b.exports=a("./dist/han")},{"./dist/han":1}],3:[function(a){(function(){var b;b=a("../index"),b().render()}).call(this)},{"../index":2}]},{},[3]); \ No newline at end of file diff --git a/v3.1.0/test-commonjs.ls b/v3.1.0/test-commonjs.ls new file mode 100644 index 00000000..d592dfaa --- /dev/null +++ b/v3.1.0/test-commonjs.ls @@ -0,0 +1,4 @@ + +Han = require \../index +Han!.render! + diff --git a/v3.1.0/test-nojs.html b/v3.1.0/test-nojs.html new file mode 100644 index 00000000..4f0a9207 --- /dev/null +++ b/v3.1.0/test-nojs.html @@ -0,0 +1,25 @@ +測試・無JavaScript — 漢字標準格式

          內容群組類

          段落、清單

          好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動!

          頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。

          詩篇段落

          地址格式

          有序清單

          1. 一級清單項目
          2. 一級清單項目
            1. 二級清單項目
            2. 二級清單項目
              1. 三級清單項目
              2. 三級清單項目
          3. 一級清單項目
          4. 一級清單項目

          無序清單

          • 一級清單項目
          • 一級清單項目
            • 二級清單項目
            • 二級清單項目
              • 三級清單項目
              • 三級清單項目
          • 一級清單項目
          • 一級清單項目

          引用區塊

          如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無!

          ——姜慶《石人碼頭》

          未使用段落元素的引用區塊

          時來數期沒道反先美別所金企感企媽失對談。
          ——新器急

          引用區塊中的引用區塊

          洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

          以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

          圖表內的引用區塊

          令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

          這是圖表解說元素<figcaption>內的解說。

          格式預處理文字區塊

          國寫親下二好灣整機生土、是看老排讓和保藝車市。
          +
          +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et me.
          +
          +是除學圖寶濟候收。們性者位遠另象內未院清外了以共……
          +長明期事生合了中文新等麼科出過能意等件教求加,
          +樓日里大下果個來。
          +
          +球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。

          代碼區塊

          void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document);

          章節類

          文章區塊元素

          文章區塊內的段落、清單

          務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

          詩篇段落

          清單

          • 清單項目子
          • 清單項目丑

          文章區塊內的重點

          不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

          文章區塊內的圖表引用區塊

          令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

          這是文章內圖表解說元素<figcaption>的解說。

          文章區塊內的變音文字

          來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

          文章內的引用區塊

          火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。

          務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

          文章內引用區塊中的引用區塊

          洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

          以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

          文章引用區塊內的重點

          不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

          文章引用區塊內的變音文字

          來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

          字級語意類

          超連結元素a示例
          註記元素u示例
          註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁
          來源元素cite示例
          重點元素strong示例
          術語元素dfn示例
          關鍵字元素b示例
          強調元素em示例
          變音文字元素i示例
          變數元素var示例
          引用元素q及子引用q元素示例
          訛訊元素s示例
          訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁
          代碼元素code示例
          輸入鍵元素kbd示例
          計算機輸出示例元素samp示例
          行間注元素ruby annotation示例
          複合式行間注元素hángjiānzhùyuansuruby annotation
          直角hángjiānzhùyuánsùㄏㄤˊㄐㄧㄢㄓㄨˋㄩㄢˊㄙㄨˋ

          其他

          縮寫元素abbr包含標題屬性的縮寫元素abbr示例
          凸顯元素mark示例
          批注元素small示例
          文字範圍元素span示例
          下標元素sub示例
          上標元素sup示例

          修訂類

          增訂元素ins示例
          增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁
          刪訂元素del示例
          刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁

          特殊排版功能

          漢字西文混排間隙

          然而在Jan Tschichold和他的著作Asymmetric Typography流行之前,直至追溯回Gutenberg时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。

          地區變體字型及標點符號樣式

          註:此處僅展示黑體,其餘字體樣式請參閱其他測試頁

          台灣教育部式

          中國國標式

          ji̍p-siannㆢㄧㆴ͘ㄒㄧㆩ

          \ No newline at end of file diff --git a/v3.1.0/test-nojs.jade b/v3.1.0/test-nojs.jade new file mode 100644 index 00000000..1f5a1a18 --- /dev/null +++ b/v3.1.0/test-nojs.jade @@ -0,0 +1,360 @@ +doctype html +html(lang='zh-Hant') + head + meta(charset='UTF-8') + title 測試・無JavaScript — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + style. + html { + overflow-x: hidden; + padding-bottom: 7em; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + body + section + h1#grouping-content 內容群組類 + h2#p-ol-ul 段落、清單 + p + | 好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動! + p 頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。 + h3#p-poem-like 詩篇段落 + p.poem-like + | 只領不致中此因和之術黑顧同後到, + br + | 血媽人山歷操發一我利終心沒文了事問藝來 + br + | 生能唱起語在,樹來課他—— + br + | 小中觀給告北戲樹意,人消歌受,生會影…… + br + | 動他腦它利離府頭始也 + h4 地址格式 + p.poem-like + | 王小明 啓 + br + | 台灣 新北市板橋路十九段555號 + br + | 20245 + h3#ol 有序清單 + ol + li 一級清單項目 + li + | 一級清單項目 + ol + li 二級清單項目 + li + | 二級清單項目 + ol + li 三級清單項目 + li 三級清單項目 + li 一級清單項目 + li 一級清單項目 + h3#ul 無序清單 + ul + li 一級清單項目 + li + | 一級清單項目 + ul + li 二級清單項目 + li + | 二級清單項目 + ul + li 三級清單項目 + li 三級清單項目 + li 一級清單項目 + li 一級清單項目 + h2#blockquote 引用區塊 + blockquote + p 如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無! + footer + | ——姜慶《石人碼頭》 + h3#blockquote-no-p 未使用段落元素的引用區塊 + blockquote + | 時來數期沒道反先美別所金企感企媽失對談。 + footer + | ——新器急 + h3#blockquote-blockquote 引用區塊中的引用區塊 + blockquote + p + | 洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資? + blockquote + p + | 以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫! + h3#figure-blockquote 圖表內的引用區塊 + figure + blockquote + p 令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。 + figcaption + | 這是圖表解說元素 + code <figcaption> + | 內的解說。 + h2#pre 格式預處理文字區塊 + pre. + 國寫親下二好灣整機生土、是看老排讓和保藝車市。 + + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et me. + + 是除學圖寶濟候收。們性者位遠另象內未院清外了以共…… + 長明期事生合了中文新等麼科出過能意等件教求加, + 樓日里大下果個來。 + + 球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。 + h2#pre-code 代碼區塊 + pre: code. + void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document); + section + article + h1#sections 章節類 + h2#article 文章區塊元素 + h3#article-p-ol-ul 文章區塊內的段落、清單 + p 務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門! + h4#article-p-poem-like 詩篇段落 + p.poem-like + | 只領不致中此因和之術黑顧同後到, + br + | 血媽人山歷操發一我利終心沒文了事問藝來 + br + | 生能唱起語在,樹來課他—— + br + | 小中觀給告北戲樹意,人消歌受,生會影…… + br + | 動他腦它利離府頭始也 + h4#article-ol-ul 清單 + ul + li 清單項目子 + li 清單項目丑 + h3#article-strong 文章區塊內的重點 + p + | 不做則中心與的說很筆分士: + strong 校此訴平是裡春家善客總外公;做南多中。 + | 足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。 + h3#article-figure 文章區塊內的圖表引用區塊 + figure + blockquote + p 令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。 + figcaption + | 這是文章內圖表解說元素 + code <figcaption> + | 的解說。 + h3 文章區塊內的變音文字 + p + | 來化相據取愛統單商商半是否, + i 的媽沒種試此助來精人是灣,價種下落有, + | 機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口…… + h3#article-blockquote 文章內的引用區塊 + blockquote + p 火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。 + p 務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門! + h4#article-blockquote-blockquote 文章內引用區塊中的引用區塊 + blockquote + p 洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資? + blockquote + p 以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫! + h4#article-blockquote-strong 文章引用區塊內的重點 + blockquote + p + | 不做則中心與的說很筆分士: + strong 校此訴平是裡春家善客總外公;做南多中。 + | 足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。 + h4#article-blockquote-i 文章引用區塊內的變音文字 + blockquote + p + | 來化相據取愛統單商商半是否, + i 的媽沒種試此助來精人是灣,價種下落有, + | 機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口…… + section + h1#text-level-semantics 字級語意類 + a(href='#') 超連結元素a + | 示例 + br + u 註記元素u + | 示例 + br + | 註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁。 + br + cite 來源元素cite + | 示例 + br + strong 重點元素strong + | 示例 + br + dfn 術語元素dfn + | 示例 + br + b 關鍵字元素b + | 示例 + br + em 強調元素em + | 示例 + br + i 變音文字元素i + | 示例 + br + var 變數元素var + | 示例 + br + q 引用元素q及子引用q元素示例 + br + s 訛訊元素s + | 示例 + br + | 訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁。 + br + code 代碼元素code + | 示例 + br + kbd 輸入鍵元素kbd + | 示例 + br + samp 計算機輸出示例元素samp + | 示例 + br + ruby + | 行間注元素 + rt ruby annotation + | 示例 + br + | 複合式 + ruby.complex + rb 行間注 + rb 元素 + rtc.pinyin(lang='cmn-latn') + rt(rbspan='1') hángjiānzhù + rt(rbspan='1') yuansu + rtc.annotation(lang='en-GB') + rt(rbspan='3') ruby annotation + br + | 直角 + ruby.rightangle + rb 行 + rb 間 + rb 注 + rb 元 + rb 素 + rtc.annotation(lang='cmn-Latn') + rt(rbspan='3') hángjiānzhù + rt(rbspan='2') yuánsù + rtc.zhuyin + rt ㄏㄤˊ + rt ㄐㄧㄢ + rt ㄓㄨˋ + rt ㄩㄢˊ + rt ㄙㄨˋ + h2#text-level-semantics-other 其他 + abbr 縮寫元素abbr + | 及 + abbr(title='abbreviation') 包含標題屬性的縮寫元素abbr + | 示例 + br + mark 凸顯元素mark + | 示例 + br + small 批注元素small + | 示例 + br + span 文字範圍元素span + | 示例 + br + sub 下標元素sub + | 示例 + br + sup 上標元素sup + | 示例 + section + h1#edits 修訂類 + ins 增訂元素ins + | 示例 + br + | 增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁。 + br + del 刪訂元素del + | 示例 + br + | 刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁。 + section + h1#typography 特殊排版功能 + h2#han-la 漢字西文混排間隙 + p(lang='zh-Hans') + | 然而在 + span(lang='de') Jan Tschichold + | 和他的著作Asymmetric Typography流行之前,直至追溯回 + span(lang='de') Gutenberg + | 时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。 + p.footer + | —— + a(href='https://twitter.com/laerhsif') 钱争予 + | 〈 + a(href='//www.typeisbeautiful.com/2013/12/6983/') 纵横对齐不是现代方法 + | 〉 + h2#font-and-biaodian 地區變體字型及標點符號樣式 + p + strong 註: + | 此處僅展示黑體,其餘字體樣式請參閱 + a(href='./') 其他測試頁 + | 。 + h3#font-and-biaodian-recommended 舊字形及推薦標點樣式 + p.poem-like(style='font-family: "Biaodian Pro Sans", "Helvetica Neue", Helvetica, Arial, "Han Heiti", sans-serif;') + | 字。字.字,字、字;字:字?字! + br + | 「內『內容』容」‘內“內容”容’ + br + | 《書名》〈篇名〉(內容) + br + | 啊——什麼内容……丹·布朗 + br + | He — who wants to achieve the goal — denied about the fact that… + br + | 1991-1999年 他/她 + h3#font-and-biaodian-cns 台灣教育部式 + p.poem-like + | 字。字.字,字、字;字:字?字! + br + | 「內『內容』容」‘內“內容”容’ + br + | 《書名》〈篇名〉(內容) + br + | 啊——什麼内容……丹·布朗 + br + | He — who wants to achieve the goal — denied about the fact that… + br + | 1991-1999年 他/她 + h3#font-and-biaodian-gb 中國國標式 + p.poem-like(style='font-family: "Biaodian Pro Sans GB", "Helvetica Neue", Helvetica, Arial, "Han Heiti GB", sans-serif;') + | 字。字.字,字、字;字:字?字! + br + | 「内『内容』容」‘内“内容”容’ + br + | 《书名》〈篇名〉(内容) + br + | 啊——什么内容……丹·布朗 + br + | He — who wants to achieve the goal — denied about the fact that… + br + | 1991-1999年 他/她 + h2#checked-tones + ruby.rightangle + rb 入 + rb 聲 + | 韻 + rtc.romanization(lang='nan-Latn') + rt(rbspan='2') ji̍p-siann + rtc.zhuyin + rt ㆢㄧㆴ͘ + rt ㄒㄧㆩ + p.poem-like. + + aeioua̍e̍i̍o̍u̍ +
          + ㆴㆵㆶㆷㆴ͘ㆵ͘ㆶ͘ㆷ͘ diff --git a/v3.1.0/test.html b/v3.1.0/test.html new file mode 100644 index 00000000..2e72c2d3 --- /dev/null +++ b/v3.1.0/test.html @@ -0,0 +1,25 @@ +測試・標準測試頁 — 漢字標準格式

          內容群組類

          段落、清單

          好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動!

          頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。

          詩篇段落

          地址格式

          有序清單

          1. 一級清單項目
          2. 一級清單項目
            1. 二級清單項目
            2. 二級清單項目
              1. 三級清單項目
              2. 三級清單項目
          3. 一級清單項目
          4. 一級清單項目

          無序清單

          • 一級清單項目
          • 一級清單項目
            • 二級清單項目
            • 二級清單項目
              • 三級清單項目
              • 三級清單項目
          • 一級清單項目
          • 一級清單項目

          引用區塊

          如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無!

          ——姜慶《石人碼頭》

          未使用段落元素的引用區塊

          時來數期沒道反先美別所金企感企媽失對談。
          ——新器急

          引用區塊中的引用區塊

          洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

          以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

          圖表內的引用區塊

          令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

          這是圖表解說元素<figcaption>內的解說。

          格式預處理文字區塊

          國寫親下二好灣整機生土、是看老排讓和保藝車市。
          +
          +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et me.
          +
          +是除學圖寶濟候收。們性者位遠另象內未院清外了以共……
          +長明期事生合了中文新等麼科出過能意等件教求加,
          +樓日里大下果個來。
          +
          +球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。

          代碼區塊

          void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document);

          章節類

          文章區塊元素

          文章區塊內的段落、清單

          務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

          詩篇段落

          清單

          • 清單項目子
          • 清單項目丑

          文章區塊內的重點

          不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

          文章區塊內的圖表引用區塊

          令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。

          這是文章內圖表解說元素<figcaption>的解說。

          文章區塊內的變音文字

          來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

          文章內的引用區塊

          火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。

          務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門!

          文章內引用區塊中的引用區塊

          洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資?

          以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫!

          文章引用區塊內的重點

          不做則中心與的說很筆分士:校此訴平是裡春家善客總外公;做南多中。足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。

          文章引用區塊內的變音文字

          來化相據取愛統單商商半是否,的媽沒種試此助來精人是灣,價種下落有,機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口……

          字級語意類

          超連結元素a示例
          註記元素u示例
          註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁
          來源元素cite示例
          重點元素strong示例
          術語元素dfn示例
          關鍵字元素b示例
          強調元素em示例
          變音文字元素i示例
          變數元素var示例
          引用元素q及子引用q元素示例
          訛訊元素s示例
          訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁
          代碼元素code示例
          輸入鍵元素kbd示例
          計算機輸出示例元素samp示例
          行間注元素ruby annotation示例
          複合式行間注元素hángjiānzhùyuansuruby annotation
          直角hángjiānzhùyuánsùㄏㄤˊㄐㄧㄢㄓㄨˋㄩㄢˊㄙㄨˋ

          其他

          縮寫元素abbr包含標題屬性的縮寫元素abbr示例
          凸顯元素mark示例
          批注元素small示例
          文字範圍元素span示例
          下標元素sub示例
          上標元素sup示例

          修訂類

          增訂元素ins示例
          增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁
          刪訂元素del示例
          刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁

          特殊排版功能

          漢字西文混排間隙

          然而在Jan Tschichold和他的著作Asymmetric Typography流行之前,直至追溯回Gutenberg时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。

          地區變體字型及標點符號樣式

          註:此處僅展示黑體,其餘字體樣式請參閱其他測試頁

          台灣教育部式

          中國國標式

          ji̍p-siannㆢㄧㆴ͘ㄒㄧㆩ

          \ No newline at end of file diff --git a/v3.1.0/test.jade b/v3.1.0/test.jade new file mode 100644 index 00000000..1d09fdeb --- /dev/null +++ b/v3.1.0/test.jade @@ -0,0 +1,362 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='UTF-8') + title 測試・標準測試頁 — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + style. + html { + overflow-x: hidden; + padding-bottom: 7em; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + + body + section + h1#grouping-content 內容群組類 + h2#p-ol-ul 段落、清單 + p + | 好們論紅,手卻策下使住收否人人!大獲及是告另子維持力本清長先陽不?社相此國學風中麼很解:治子上己施一見,有的是,用關快家所的字時情:品好居……朋裡義四時,校叫洲;運細種!眼失媽母身古慢管用、上開家問不難成的裝望麼年單代,操會人得?人人傳在善美故全、推兩少關心求,下看同目國往成氣;一廣機親得飛先始們於觀他使難以該因口發汽機人都領了過大廣場不食收西物早社報子們看、賣像師對好情的神?在史評,來深放表觀。還人的西路盡熱程當人長質此中民龍證說念背生外,間今經氣門此都!把相的公去底動! + p 頭性空風後上他根;然任他在,社拉布會言了來石賽親支……情拉術北然使來路請放數坐燈麼象成一畫專雨,是我長無等愛五化客可雜有雨。 + h3#p-poem-like 詩篇段落 + p.poem-like + | 只領不致中此因和之術黑顧同後到, + br + | 血媽人山歷操發一我利終心沒文了事問藝來 + br + | 生能唱起語在,樹來課他—— + br + | 小中觀給告北戲樹意,人消歌受,生會影…… + br + | 動他腦它利離府頭始也 + h4 地址格式 + p.poem-like + | 王小明 啓 + br + | 台灣 新北市板橋路十九段555號 + br + | 20245 + h3#ol 有序清單 + ol + li 一級清單項目 + li + | 一級清單項目 + ol + li 二級清單項目 + li + | 二級清單項目 + ol + li 三級清單項目 + li 三級清單項目 + li 一級清單項目 + li 一級清單項目 + h3#ul 無序清單 + ul + li 一級清單項目 + li + | 一級清單項目 + ul + li 二級清單項目 + li + | 二級清單項目 + ul + li 三級清單項目 + li 三級清單項目 + li 一級清單項目 + li 一級清單項目 + h2#blockquote 引用區塊 + blockquote + p 如事時決行入同是我表統支樂了先年、人目也月老過人,斷弟進石給了,服去孩沒性就能。邊年排不決廣之例。長收滿導無! + footer + | ——姜慶《石人碼頭》 + h3#blockquote-no-p 未使用段落元素的引用區塊 + blockquote + | 時來數期沒道反先美別所金企感企媽失對談。 + footer + | ——新器急 + h3#blockquote-blockquote 引用區塊中的引用區塊 + blockquote + p + | 洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資? + blockquote + p + | 以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫! + h3#figure-blockquote 圖表內的引用區塊 + figure + blockquote + p 令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。 + figcaption + | 這是圖表解說元素 + code <figcaption> + | 內的解說。 + h2#pre 格式預處理文字區塊 + pre. + 國寫親下二好灣整機生土、是看老排讓和保藝車市。 + + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et me. + + 是除學圖寶濟候收。們性者位遠另象內未院清外了以共…… + 長明期事生合了中文新等麼科出過能意等件教求加, + 樓日里大下果個來。 + + 球者們?方綠電後,果或錯老際聲可特少保期全動帶東北建,似保助先走她合也的。神我興治的保保學果車易麼連學水小西一!而視可些化。 + h2#pre-code 代碼區塊 + pre: code. + void (function(a,b){var c=b.documentElement,d,e;function D(a,d) {d=a*d/100+b.getElementById("main").textContent;return d;}return new D(20,5);})(window||this,window.document); + section + article + h1#sections 章節類 + h2#article 文章區塊元素 + h3#article-p-ol-ul 文章區塊內的段落、清單 + p 務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門! + h4#article-p-poem-like 詩篇段落 + p.poem-like + | 只領不致中此因和之術黑顧同後到, + br + | 血媽人山歷操發一我利終心沒文了事問藝來 + br + | 生能唱起語在,樹來課他—— + br + | 小中觀給告北戲樹意,人消歌受,生會影…… + br + | 動他腦它利離府頭始也 + h4#article-ol-ul 清單 + ul + li 清單項目子 + li 清單項目丑 + h3#article-strong 文章區塊內的重點 + p + | 不做則中心與的說很筆分士: + strong 校此訴平是裡春家善客總外公;做南多中。 + | 足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。 + h3#article-figure 文章區塊內的圖表引用區塊 + figure + blockquote + p 令會過作加身。管常雖:質灣人坐洋半以人問一文……上灣之會的面長東商實對了上修法或便紙界去定辦緊現生影都合否陸一片子處用上很。 + figcaption + | 這是文章內圖表解說元素 + code <figcaption> + | 的解說。 + h3 文章區塊內的變音文字 + p + | 來化相據取愛統單商商半是否, + i 的媽沒種試此助來精人是灣,價種下落有, + | 機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口…… + h3#article-blockquote 文章內的引用區塊 + blockquote + p 火說定好就用樹,表母微時藝出北親雙表人事為放爸車奇列長農時教產得地何高的舉度們她李力內體古見業選一香音種。 + p 務用界種設是自水教臺保再計見所灣們民各、外超是人外每方後發他濟中;義生了出這失究式回值氣苦我花聲位香還場、外國的醫門! + h4#article-blockquote-blockquote 文章內引用區塊中的引用區塊 + blockquote + p 洲此境眼……方空車形、四用廠出先作,管濟所唱步取的成正候社取開取高,理景龍知子起配做心正道動。出令正或?家國前保嚴輕朋化下而府裡、基之稱失!等園華行……政生著曾,們然變不發甚故,些長小華從不代應頭資? + blockquote + p 以滿傷都片復利反,爾麼生任常弟但岸過年在;院投工變愛世總甚?天其有爸個:後輕取,在克的山知中識高於過叫行出面不大開受個說自經公目,學們灣。合好巴地盡性士面最產張子新容得實:眼不日野一,克節上人黨到有沒,她果以的是到影的請自人長、表本究政快的且造的推色究聽場廣人形!深了叫! + h4#article-blockquote-strong 文章引用區塊內的重點 + blockquote + p + | 不做則中心與的說很筆分士: + strong 校此訴平是裡春家善客總外公;做南多中。 + | 足酒臉理特指第常三緊資現工們家化民,公政我熱良,中以家是。 + h4#article-blockquote-i 文章引用區塊內的變音文字 + blockquote + p + | 來化相據取愛統單商商半是否, + i 的媽沒種試此助來精人是灣,價種下落有, + | 機信際,作假灣,心行程官這是運價車年都人強國農:特行解金產拉口…… + section + h1#text-level-semantics 字級語意類 + a(href='#') 超連結元素a + | 示例 + br + u 註記元素u + | 示例 + br + | 註記元素甲註記元素乙一般文字節點註記元素丙一般文字節點註記元素丁。 + br + cite 來源元素cite + | 示例 + br + strong 重點元素strong + | 示例 + br + dfn 術語元素dfn + | 示例 + br + b 關鍵字元素b + | 示例 + br + em 強調元素em + | 示例 + br + i 變音文字元素i + | 示例 + br + var 變數元素var + | 示例 + br + q 引用元素q及子引用q元素示例 + br + s 訛訊元素s + | 示例 + br + | 訛訊元素甲訛訊元素乙一般文字節點訛訊元素丙一般文字節點訛訊元素丁。 + br + code 代碼元素code + | 示例 + br + kbd 輸入鍵元素kbd + | 示例 + br + samp 計算機輸出示例元素samp + | 示例 + br + ruby + | 行間注元素 + rt ruby annotation + | 示例 + br + | 複合式 + ruby.complex + rb 行間注 + rb 元素 + rtc.pinyin(lang='cmn-latn') + rt(rbspan='1') hángjiānzhù + rt(rbspan='1') yuansu + rtc.annotation(lang='en-GB') + rt(rbspan='3') ruby annotation + br + | 直角 + ruby.rightangle + rb 行 + rb 間 + rb 注 + rb 元 + rb 素 + rtc.annotation(lang='cmn-Latn') + rt(rbspan='3') hángjiānzhù + rt(rbspan='2') yuánsù + rtc.zhuyin + rt ㄏㄤˊ + rt ㄐㄧㄢ + rt ㄓㄨˋ + rt ㄩㄢˊ + rt ㄙㄨˋ + h2#text-level-semantics-other 其他 + abbr 縮寫元素abbr + | 及 + abbr(title='abbreviation') 包含標題屬性的縮寫元素abbr + | 示例 + br + mark 凸顯元素mark + | 示例 + br + small 批注元素small + | 示例 + br + span 文字範圍元素span + | 示例 + br + sub 下標元素sub + | 示例 + br + sup 上標元素sup + | 示例 + section + h1#edits 修訂類 + ins 增訂元素ins + | 示例 + br + | 增訂元素甲增訂元素乙一般文字節點增訂元素丙一般文字節點增訂元素丁。 + br + del 刪訂元素del + | 示例 + br + | 刪訂元素甲刪訂元素乙一般文字節點刪訂元素丙一般文字節點刪訂元素丁。 + section + h1#typography 特殊排版功能 + h2#han-la 漢字西文混排間隙 + p(lang='zh-Hans') + | 然而在 + span(lang='de') Jan Tschichold + | 和他的著作Asymmetric Typography流行之前,直至追溯回 + span(lang='de') Gutenberg + | 时代,「对称」「齐整」两种古老的视觉审美习惯无处不在。左右并齐的纵栏——我也欣赏这样的传统,一如欣赏古典格律的稳定及优美。 + p.footer + | —— + a(href='https://twitter.com/laerhsif') 钱争予 + | 〈 + a(href='//www.typeisbeautiful.com/2013/12/6983/') 纵横对齐不是现代方法 + | 〉 + h2#font-and-biaodian 地區變體字型及標點符號樣式 + p + strong 註: + | 此處僅展示黑體,其餘字體樣式請參閱 + a(href='./') 其他測試頁 + | 。 + h3#font-and-biaodian-recommended 舊字形及推薦標點樣式 + p.poem-like(style='font-family: "Biaodian Pro Sans", "Helvetica Neue", Helvetica, Arial, "Han Heiti", sans-serif;') + | 字。字.字,字、字;字:字?字! + br + | 「內『內容』容」‘內“內容”容’ + br + | 《書名》〈篇名〉(內容) + br + | 啊——什麼内容……丹·布朗 + br + | He — who wants to achieve the goal — denied about the fact that… + br + | 1991-1999年 他/她 + h3#font-and-biaodian-cns 台灣教育部式 + p.poem-like + | 字。字.字,字、字;字:字?字! + br + | 「內『內容』容」‘內“內容”容’ + br + | 《書名》〈篇名〉(內容) + br + | 啊——什麼内容……丹·布朗 + br + | He — who wants to achieve the goal — denied about the fact that… + br + | 1991-1999年 他/她 + h3#font-and-biaodian-gb 中國國標式 + p.poem-like(style='font-family: "Biaodian Pro Sans GB", "Helvetica Neue", Helvetica, Arial, "Han Heiti GB", sans-serif;') + | 字。字.字,字、字;字:字?字! + br + | 「内『内容』容」‘内“内容”容’ + br + | 《书名》〈篇名〉(内容) + br + | 啊——什么内容……丹·布朗 + br + | He — who wants to achieve the goal — denied about the fact that… + br + | 1991-1999年 他/她 + h2#checked-tones + ruby.rightangle + rb 入 + rb 聲 + | 韻 + rtc.romanization(lang='nan-Latn') + rt(rbspan='2') ji̍p-siann + rtc.zhuyin + rt ㆢㄧㆴ͘ + rt ㄒㄧㆩ + p.poem-like. + + aeioua̍e̍i̍o̍u̍ +
          + ㆴㆵㆶㆷㆴ͘ㆵ͘ㆶ͘ㆷ͘ + script(src='./han.min.js') diff --git a/v3.1.0/well-knit.html b/v3.1.0/well-knit.html new file mode 100644 index 00000000..ccb37bb7 --- /dev/null +++ b/v3.1.0/well-knit.html @@ -0,0 +1,31 @@ +測試・文章、章節與內容的邊界調整 — 漢字標準格式

          測試·文章、章節與內容的邊界調整

          提示:下方淺灰色區塊是文章章節的範例,建議使用瀏覽器的「元件檢閱器」來査閱各種群組元素在不同情境下的樣式。亦可伸縮視窗寬度來觀看專為行動裝置提供的彈性設計responsive web design,行動裝置預設為480px以下的視窗或設備。

          文章標題(一級)

          段落,也許是前言。上邊界對一級標題收緊。文章區塊的行高大於全域行高,預設為1.7em。

          二級標題

          這是一個段落,可以是對二級標題的內容詳述,上邊界對二級標題收緊。

          這是另一個段落,可見上邊界不收緊了。

          段落、清單、引用區塊等群組元素對標題的收緊

          三級標題

          這是一個引用區塊段落,可見上邊界對標題收緊;而三級標題則對二級標題收緊。

          這是第二個引用區塊段落,可見上邊界不收緊了。

          在文章中的引用區塊,會縮進二個字元(行動裝置上縮進一字元),並使用楷體。

          三級標題

          1. 這是一個有序清單,
          2. 可見上邊界對標題收緊。
          1. 這是另一個有序清單,
          2. 可見上邊界不收緊了。

          三級標題

          • 這是一個無序清單,
          • 可見上邊界對標題收緊。

          詩,與標題收緊規則

          總結成,琅琅上口:

          上方描述規則的區塊是一個套用類詩篇類別.poem-like的分塊元素div在任意情境下,其後代段落元素p縮進二字元;在行動裝置中,縮進一字元。

          六級標題
          五級標題

          四級標題

          三級標題

          二級標題

          二級標題

          三級標題

          四級標題

          五級標題
          六級標題

          一級標題

          一級標題

          一級標題不會互相收緊。

          後代章節元素不影響群組收緊

          後代章節元素section不會影響各個群組元素對上級標題的收緊。

          比如說……

          二級標題(在section下)

          二級標題(在section下)

          三級標題(在section下)

          四級標題(在section下)

          這是一個放在後代章節元素section中的段落,雖然和四級標題並非同輩,但仍然會對標題收緊。

          四級標題(在section下)

          五級標題(在section下)
          六級標題(在section下)

          同輩章節元素則否

          互為「同輩」的二個章節元素下的標題則不互相收緊。

          二級標題(section甲)

          二級標題(section乙,與甲同輩)

          三級標題(section丙,與甲乙同輩)

          四級標題(section丁,與甲乙丙同輩)

          五級標題(section戊,與甲乙丙丁同輩)
          六級標題(section己,與甲乙丙丁戊同輩)

          這是一個段落,屬於section庚,與甲乙丙丁戊己同輩。

          \ No newline at end of file diff --git a/v3.1.0/well-knit.jade b/v3.1.0/well-knit.jade new file mode 100644 index 00000000..b59fcaab --- /dev/null +++ b/v3.1.0/well-knit.jade @@ -0,0 +1,158 @@ +doctype html +html(lang='zh-Hant').han-init + head + meta(charset='utf-8') + title 測試・文章、章節與內容的邊界調整 — 漢字標準格式 + link(rel='stylesheet', href='./han.min.css') + + style. + html { + overflow-x: hidden; + } + + article { + /* position */ + margin: 0 auto; + + /* box */ + max-width: 35em; + padding: 0 .5em 15em; + } + article#example-article { + /* box */ + max-width: 30em; + padding-bottom: 3em; + + /* style */ + background-color: #f5f5f5; + border-radius: .5em; + } + meta(name='viewport' content='width=device-width, initial-scale=1.0') + meta(name='description' content='印刷品般的漢字網頁排版框架') + meta(name='keywords' content='漢字標準格式, 中文, 排版, 排版規範, 日文, 字體排印, 文字設計, CLReq, CSS, Sass, typography') + + body.test + + article + h1 測試·文章、章節與內容的邊界調整 + p.noti + strong 提示: + | 下方淺灰色區塊是文章章節的範例,建議使用瀏覽器的「元件檢閱器」來査閱各種群組元素在不同情境下的樣式。亦可伸縮視窗寬度來觀看專為行動裝置提供的彈性設計responsive web design,行動裝置預設為 + em 480px以下 + | 的視窗或設備。 + + article#example-article + h1 文章標題(一級) + p.example + | 段落,也許是前言。上邊界對一級標題收緊。文章區塊的行高大於全域行高,預設為1.7em。 + section.example + h2 二級標題 + p 這是一個段落,可以是對二級標題的內容詳述,上邊界對二級標題收緊。 + p 這是另一個段落,可見上邊界不收緊了。 + + section#grouping-content + h2 段落、清單、引用區塊等群組元素對標題的收緊 + section.example + h3 三級標題 + blockquote + p 這是一個引用區塊段落,可見上邊界對標題收緊;而三級標題則對二級標題收緊。 + p 這是第二個引用區塊段落,可見上邊界不收緊了。 + p + | 在文章中的引用區塊,會縮進二個字元(行動裝置上縮進一字元),並使用楷體。 + h3 三級標題 + ol + li 這是一個有序清單, + li 可見上邊界對標題收緊。 + ol + li 這是另一個有序清單, + li 可見上邊界不收緊了。 + h3 三級標題 + ul + li 這是一個無序清單, + li 可見上邊界對標題收緊。 + section#poem-and-rule-for-well-knit + h2 詩,與標題收緊規則 + p + | 總結成,琅琅上口: + div.poem-like.example + p + | 小級標題對大級標題收緊、 + br + | 同級標題互相收緊; + p + | 大級標題 + br + | 不對小級標題收緊、 + br + | 一級標題 + br + | 不對一級標題收緊。 + p + | 上方描述規則的區塊是一個套用類詩篇類別.poem-like的分塊元素div在任意情境下,其後代段落元素p縮進二字元;在行動裝置中,縮進一字元。 + div.example + h6 六級標題 + h5 五級標題 + h4 四級標題 + h3 三級標題 + h2 二級標題 + h2 二級標題 + h3 三級標題 + h4 四級標題 + h5 五級標題 + h6 六級標題 + div.example + h1 一級標題 + h1 一級標題 + p 一級標題不會互相收緊。 + section#descendant + h3 後代章節元素不影響群組收緊 + p 後代章節元素section不會影響各個群組元素對上級標題的收緊。 + h3 比如說…… + div.example + h2 二級標題(在section下) + section + h2 二級標題(在section下) + section + h3 三級標題(在section下) + section + h4 四級標題(在section下) + section + p + | 這是一個放在後代章節元素section中的段落,雖然和四級標題並非同輩,但仍然會對標題收緊。 + section + h4 四級標題(在section下) + section + h5 五級標題(在section下) + section + h6 六級標題(在section下) + section#sibling + h3 同輩章節元素則否 + p 互為「同輩」的二個章節元素下的標題則不互相收緊。 + div.example + section#section-jia + h2 二級標題(section甲) + section#section-yi + h2 二級標題(section乙,與甲同輩) + section#section-bing + h3 三級標題(section丙,與甲乙同輩) + section#section-ding + h4 四級標題(section丁,與甲乙丙同輩) + section#section-wu + h5 五級標題(section戊,與甲乙丙丁同輩) + section#section-ji + h6 六級標題(section己,與甲乙丙丁戊同輩) + section#section-geng + p 這是一個段落,屬於section庚,與甲乙丙丁戊己同輩。 + + // Here goes scripts + script(src='./han.min.js')