Comparing version 3.2.7 to 3.3.0
{ | ||
"name": "Han", | ||
"version": "3.2.7", | ||
"version": "3.3.0", | ||
"homepage": "http://css.hanzi.co/", | ||
@@ -5,0 +5,0 @@ "authors": [ |
更新紀錄 CHANGELOG | ||
=== | ||
v3.3.0(2016-3-19) | ||
--- | ||
1. 正式改以Stylus生成發布文件(`han.css`及`han.min.css`) | ||
2. 改進相鄰文字裝飾線修正的渲染方式 | ||
3. 改進漢字-西文混排間隙的處理方式 | ||
4. 重新引入彎引號及漢字間的漢字-西文混排間隙,並依語言文字決定是否顯示 | ||
5. 改進行尾點號懸掛的渲染方式、並簡化其生成元素及相關樣式 | ||
6. 改進標點擠壓的渲染方式及相關樣式 | ||
7. 改進JavaScript層面的標點樣式修正 | ||
8. 修正標點擠壓、行尾點號懸掛與禁則`h-jinze`元素共存時的空隙顯示問題 | ||
9. 停止更新Component套件管理器 | ||
10. 更新normalize.css至v4.0.0 | ||
v3.2.7(2015-10-23) | ||
@@ -5,0 +18,0 @@ --- |
@@ -1,5 +0,5 @@ | ||
/*! 漢字標準格式 v3.2.7 | MIT License | css.hanzi.co */ | ||
/*! 漢字標準格式 v3.3.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):"function"==typeof define&&define.amd?define(function(){return b(a,!0)}):b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";function c(a,b){var c=E.create("h-char-group","biaodian cjk");return 0===a.index&&a.isEnd?c.innerHTML=b[0]:(c.innerHTML=a.text,c.classList.add("portion"),0===a.index?c.classList.add("isFirst"):a.isEnd&&c.classList.add("isEnd")),c}function d(a){var b=E.create("div"),c=a.charCodeAt(0).toString(16),d="biaodian cjk "+(a.match(D["char"].biaodian.open)?"bd-open":a.match(D["char"].biaodian.close)?"bd-close bd-end":a.match(D["char"].biaodian.end)?"bd-end":a.match(new RegExp("("+C.biaodian.liga+")"))?"bd-liga":"");return b.innerHTML='<h-char unicode="'+c+'" class="'+d+'">'+a+"</h-char>",b.firstChild}function e(a,b){var c,d=E.create("canvas");return d.width="50",d.height="20",d.style.display="none",x.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),{node:d,context:c,remove:function(){E.remove(d,x)}}}function f(a,b){var c,d=a.context,e=b.context;try{for(var f=1;20>=f;f++)for(var g=1;50>=g;g++){if("undefined"==typeof c&&d.getImageData(g,f,1,1).data[3]!==e.getImageData(g,f,1,1).data[3]){c=!1;break}if("boolean"==typeof c)break;50===g&&20===f&&"undefined"==typeof c&&(c=!0)}return a.remove(),b.remove(),a=null,b=null,c}catch(h){}return!1}function g(a,b,c){var a=a,b=b||"sans-serif",c=c||"\u8fadQ";return b=e(c,b),a=e(c,a),!f(a,b)}function h(a){var b,c=E.create("!"),d=a.classList;return c.appendChild(E.clone(a)),E.tag("rt",c.firstChild).forEach(function(a){var c,e=E.create("!"),f=[];do{if(c=(c||a).previousSibling,!c||c.nodeName.match(/((?:h\-)?r[ubt])/i))break;e.insertBefore(E.clone(c),e.firstChild),f.push(c)}while(!c.nodeName.match(/((?:h\-)?r[ubt])/i));b=d.contains("zhuyin")?n(e,a):m(e,a);try{a.parentNode.replaceChild(b,a),f.map(E.remove)}catch(g){}}),k(c)}function i(a){var b=E.create("!");return b.appendChild(E.clone(a)),E.tag("rt",b.firstChild).forEach(function(a){var b,c,d=E.create("!"),e=[];do{if(b=(b||a).previousSibling,!b||b.nodeName.match(/((?:h\-)?r[ubt])/i))break;d.insertBefore(E.clone(b),d.firstChild),e.push(b)}while(!b.nodeName.match(/((?:h\-)?r[ubt])/i));c=E.create("rt"),c.innerHTML=o(a),a.parentNode.replaceChild(c,a)}),b.firstChild}function j(a){var b,c,d,e,f=E.create("!"),g=a.classList;return f.appendChild(E.clone(a)),b=f.firstChild,c=d=E.tag("rb",b),e=c.length,void function(a){a&&(d=E.tag("rt",a).map(function(a,b){if(c[b]){var d=n(c[b],a);try{c[b].parentNode.replaceChild(d,c[b])}catch(e){}return d}}),E.remove(a),b.setAttribute("rightangle","true"))}(b.querySelector("rtc.zhuyin")),E.qsa("rtc:not(.zhuyin)",b).forEach(function(a,c){var f;f=E.tag("rt",a).map(function(a,b){var f,h,i=Number(a.getAttribute("rbspan")||1),j=0,k=[];i>e&&(i=e);do{try{f=d.shift(),k.push(f)}catch(l){}if("undefined"==typeof f)break;j+=Number(f.getAttribute("span")||1)}while(i>j);if(j>i){if(k.length>1)return void console.error("An impossible `rbspan` value detected.",ruby);k=E.tag("rb",k[0]),d=k.slice(i).concat(d),k=k.slice(0,i),j=i}h=m(k,a,{"class":g,span:j,order:c});try{k[0].parentNode.replaceChild(h,k.shift()),k.map(E.remove)}catch(l){}return h}),d=f,1===c&&b.setAttribute("doubleline","true"),E.remove(a)}),k(f)}function k(a){var b=a.firstChild,c=E.create("h-ruby");return c.innerHTML=b.innerHTML,E.setAttr(c,b.attributes),c.normalize(),c}function l(a){if(!a instanceof Element)return a;var b=a.classList;return b.contains("pinyin")?b.add("romanization"):b.contains("romanization")?b.add("annotation"):b.contains("mps")?b.add("zhuyin"):b.contains("rightangle")&&b.add("complex"),a}function m(a,b,c){var d=E.create("h-ru"),b=E.clone(b),c=c||{};return c.annotation="true",Array.isArray(a)?d.innerHTML=a.map(function(a){return"undefined"==typeof a?"":a.outerHTML}).join("")+b.outerHTML:(d.appendChild(E.clone(a)),d.appendChild(b)),E.setAttr(d,c),d}function n(a,b){var a=E.clone(a),c=E.create("h-ru");return c.setAttribute("zhuyin",!0),c.appendChild(a),c.innerHTML+=o(b),c}function o(a){var b,c,d,e="string"==typeof a?a:a.textContent;return b=e.replace(D.zhuyin.diao,""),d=b?b.length:0,c=e.replace(b,"").replace(/[\u02C5]/g,"\u02c7").replace(/[\u030D]/g,"\u0358"),0===d?"":'<h-zhuyin length="'+d+'" diao="'+c+'"><h-yin>'+b+"</h-yin><h-diao>"+c+"</h-diao></h-zhuyin>"}function p(){var a,b=E.create("div");return b.innerHTML="<span>a b</span><span style=\"font-family: 'Han Space'\">a b</span>",x.appendChild(b),a=b.firstChild.offsetWidth!==b.lastChild.offsetWidth,E.remove(b,x),a}function q(a,b,c){return function(){var d=A.localize.writeOnCanvas(b,a),e=A.localize.writeOnCanvas(c,a);return A.localize.compareCanvases(d,e)}}function r(){return q('"Romanization Sans"',"a\u030d","\udb80\udc61")}function s(){return q('"Romanization Sans"',"i\u030d","\udb80\udc69")}function t(){return q('"Zhuyin Kaiti"',"\u31b4\u0358","\udb8c\uddb4")}function u(a){return function(b){var b=b||v,c=A.find(b).avoid(M);return a.forEach(function(a){c.replace(new RegExp(a[0],"ig"),function(b,c){var d=E.clone(N);return d.innerHTML="<h-inner>"+c[0]+"</h-inner>",d.setAttribute("display-as",a[1]),0===b.index?d:""})}),c}}var v=a.document,w=v.documentElement,x=v.body,y="3.2.7",z=["initCond","renderElem","renderHanging","renderJiya","renderHWS","correctBasicBD","substCombLigaWithPUA"],A=function(a,b){return new A.fn.init(a,b)},B=function(){return arguments[0]&&(this.context=arguments[0]),arguments[1]&&(this.condition=arguments[1]),this};A.version=y,A.fn=A.prototype={version:y,constructor:A,context:x,condition:w,routine:z,init:B,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}},A.fn.init.prototype=A.fn,A.init=function(){return A.init=A().render()};var C={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]",checked:"[\u31b4-\u31b7][\u0358\u030d]?"}},D=function(){var a="[\\x20\\t\\r\\n\\f]",b=C.punct.open,c=(C.punct.close,C.punct.end),d=C.punct.middle,e=C.punct.sing,f=b+"|"+c+"|"+d,g=C.biaodian.open,h=C.biaodian.close,i=C.biaodian.end,j=C.biaodian.middle,k=C.biaodian.liga+"{2}",l=g+"|"+i+"|"+j,m=C.kana.base+C.kana.combine+"?",n=C.kana.small+C.kana.combine+"?",o=C.kana.half,p=C.eonmun.base+"|"+C.eonmun.letter,q=C.eonmun.half,r=C.hanzi.base+"|"+C.hanzi.desc+"|"+C.hanzi.radical+"|"+m,s=C.ellinika.combine,t=C.latin.base+s+"*",u=C.ellinika.base+s+"*",v=C.kirillica.combine,w=C.kirillica.base+v+"*",x=t+"|"+u+"|"+w,y="['\u2019]",z=r+"|(?:"+x+"|"+y+")+",A=C.zhuyin.initial,B=C.zhuyin.medial,D=C.zhuyin["final"],E=C.zhuyin.tone+"|"+C.zhuyin.checked;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")},hanzi:new RegExp("("+r+")","g"),latin:new RegExp("("+t+")","ig"),ellinika:new RegExp("("+u+")","ig"),kirillica:new RegExp("("+w+")","ig"),kana:new RegExp("("+m+"|"+n+"|"+o+")","g"),eonmun:new RegExp("("+p+"|"+q+")","g")},group:{biaodian:[new RegExp("(("+l+"){2,})","g"),new RegExp("("+k+g+")","g")],punct:null,hanzi:new RegExp("("+r+")+","g"),western:new RegExp("("+t+"|"+u+"|"+w+"|"+f+")+","ig"),kana:new RegExp("("+m+"|"+n+"|"+o+")+","g"),eonmun:new RegExp("("+p+"|"+q+"|"+f+")+","g")},jinze:{hanging:new RegExp("("+h+"*|[\u2026\u22ef]*)([\u3001\uff0c\u3002\uff0e])(?!"+i+")","ig"),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+")?("+D+")?("+E+")?$"),diao:new RegExp("("+E+")","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"]],"comb-liga-vowel":[["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"]],"comb-liga-zhuyin":[["\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"]]}}();A.UNICODE=C,A.TYPESET=D,A.UNICODE.cjk=A.UNICODE.hanzi,A.UNICODE.greek=A.UNICODE.ellinika,A.UNICODE.cyrillic=A.UNICODE.kirillica,A.UNICODE.hangul=A.UNICODE.eonmun,A.UNICODE.zhuyin.ruyun=A.UNICODE.zhuyin.checked,A.TYPESET["char"].cjk=A.TYPESET["char"].hanzi,A.TYPESET["char"].greek=A.TYPESET["char"].ellinika,A.TYPESET["char"].cyrillic=A.TYPESET["char"].kirillica,A.TYPESET["char"].hangul=A.TYPESET["char"].eonmun;var E={id:function(a,b){return(b||v).getElementById(a)},tag:function(a,b){return this.makeArray((b||v).getElementsByTagName(a))},qsa:function(a,b){return this.makeArray((b||v).querySelectorAll(a))},create:function(a,b){var a="!"===a?v.createDocumentFragment():""===a?v.createTextNode(b||""):v.createElement(a);try{b&&(a.className=b)}catch(c){}return a},clone:function(a,b){return a.cloneNode("boolean"==typeof b?b:!0)},remove:function(a){return 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}}},F=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.2.1",e=b.NON_INLINE_PROSE,f=b.PRESETS.prose.filterElements,g=a||{},h=g.document||void 0;if("undefined"==typeof h)throw new Error("Fibre requires a DOM-supported environment.");var i=function(a,b){return new i.fn.init(a,b)};return i.version=d,i.matches=c,i.fn=i.prototype={constructor:i,version:d,finder:[],context:void 0,portionMode:"retain",selector:{},preset:"prose",init:function(a,b){if(b&&(this.preset=null),this.selector={context:null,filter:[],avoid:[],boundary:[]},!a)throw new Error("A context is required for Fibre to initialise.");return a instanceof Node?a instanceof Document?this.context=a.body||a:this.context=a:"string"==typeof a&&(this.context=h.querySelector(a),this.selector.context=a),this},filterFn:function(a){var b=this.selector.filter.join(", ")||"*",d=this.selector.avoid.join(", ")||null,e=c(a,b,!0)&&!c(a,d);return"prose"===this.preset?f(a)&&e:e},boundaryFn:function(a){var b=this.selector.boundary.join(", ")||null,d=c(a,b);return"prose"===this.preset?e(a)||d:d},filter:function(a){return"string"==typeof a&&this.selector.filter.push(a),this},endFilter:function(a){return a?this.selector.filter=[]:this.selector.filter.pop(),this},avoid:function(a){return"string"==typeof a&&this.selector.avoid.push(a),this},endAvoid:function(a){return a?this.selector.avoid=[]:this.selector.avoid.pop(),this},addBoundary:function(a){return"string"==typeof a&&this.selector.boundary.push(a),this},removeBoundary:function(){return this.selector.boundary=[],this},setMode:function(a){return this.portionMode="first"===a?"first":"retain",this},replace:function(a,c){var d=this;return d.finder.push(b(d.context,{find:a,replace:c,filterElements:function(a){return d.filterFn(a)},forceContext:function(a){return d.boundaryFn(a)},portionMode:d.portionMode})),d},wrap:function(a,c){var d=this;return d.finder.push(b(d.context,{find:a,wrap:c,filterElements:function(a){return d.filterFn(a)},forceContext:function(a){return d.boundaryFn(a)},portionMode:d.portionMode})),d},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}},i.fn.filterOut=i.fn.avoid,i.fn.init.prototype=i.fn,i}(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,c){var d=c.preset&&b.PRESETS[c.preset];if(c.portionMode=c.portionMode||f,d)for(var e in d)i.call(d,e)&&!i.call(c,e)&&(c[e]=d[e]);this.node=a,this.options=c,this.prepMatch=c.prepMatch||this.prepMatch,this.reverts=[],this.matches=this.search(),this.matches.length&&this.processMatches()}var f="retain",g="first",h=v,i=({}.toString,{}.hasOwnProperty);return b.NON_PROSE_ELEMENTS={br:1,hr:1,script:1,style:1,img:1,video:1,audio:1,canvas:1,svg:1,map:1,object:1,input:1,textarea:1,select:1,option:1,optgroup:1,button:1},b.NON_CONTIGUOUS_PROSE_ELEMENTS={address:1,article:1,aside:1,blockquote:1,dd:1,div:1,dl:1,fieldset:1,figcaption:1,figure:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,hr:1,main:1,nav:1,noscript:1,ol:1,output:1,p:1,pre:1,section:1,ul:1,br:1,li:1,summary:1,dt:1,details:1,rp:1,rt:1,rtc:1,script:1,style:1,img:1,video:1,audio:1,canvas:1,svg:1,map:1,object:1,input:1,textarea:1,select:1,option:1,optgroup:1,button:1,table:1,tbody:1,thead:1,th:1,tr:1,td:1,caption:1,col:1,tfoot:1,colgroup:1},b.NON_INLINE_PROSE=function(a){return i.call(b.NON_CONTIGUOUS_PROSE_ELEMENTS,a.nodeName.toLowerCase())},b.PRESETS={prose:{forceContext:b.NON_INLINE_PROSE,filterElements:function(a){return!i.call(b.NON_PROSE_ELEMENTS,a.nodeName.toLowerCase())}}},b.Finder=e,e.prototype={search:function(){function b(a){for(var g=0,j=a.length;j>g;++g){var k=a[g];if("string"==typeof k){if(f.global)for(;c=f.exec(k);)h.push(i.prepMatch(c,d++,e));else(c=k.match(f))&&h.push(i.prepMatch(c,0,e));e+=k.length}else b(k)}}var c,d=0,e=0,f=this.options.find,g=this.getAggregateText(),h=[],i=this;return f="string"==typeof f?RegExp(a(f),"g"):f,b(g),h},prepMatch:function(a,b,c){if(!a[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return a.endIndex=c+a.index+a[0].length,a.startIndex=c+a.index,a.index=b,a},getAggregateText:function(){function a(d,e){if(3===d.nodeType)return[d.data];if(b&&!b(d))return[];var e=[""],f=0;if(d=d.firstChild)do if(3!==d.nodeType){var g=a(d);c&&1===d.nodeType&&(c===!0||c(d))?(e[++f]=g,e[++f]=""):("string"==typeof g[0]&&(e[f]+=g.shift()),g.length&&(e[++f]=g,e[++f]=""))}else e[f]+=d.data;while(d=d.nextSibling);return e}var b=this.options.filterElements,c=this.options.forceContext;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,d){var e=this.options.portionMode;return e===g&&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}),e===g?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=h.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:h.createTextNode(String(d));var g="string"==typeof e?h.createElement(e):e;return d=h.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,i=d.node;if(g===i){var j=g;b.indexInNode>0&&(e=h.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.endIndexInNode<j.length&&(f=h.createTextNode(j.data.substring(d.endIndexInNode)),j.parentNode.insertBefore(f,j)),j.parentNode.removeChild(j),this.reverts.push(function(){e===k.previousSibling&&e.parentNode.removeChild(e),f===k.nextSibling&&f.parentNode.removeChild(f),k.parentNode.replaceChild(j,k)}),k}e=h.createTextNode(g.data.substring(0,b.indexInNode)),f=h.createTextNode(i.data.substring(d.endIndexInNode));for(var l=this.getPortionReplacementNode(b,a),m=[],n=0,o=c.length;o>n;++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),i.parentNode.insertBefore(r,i),i.parentNode.insertBefore(f,i),i.parentNode.removeChild(i),this.reverts.push(function(){e.parentNode.removeChild(e),l.parentNode.replaceChild(g,l),f.parentNode.removeChild(f),r.parentNode.replaceChild(i,r)}),r}},b}());E.extend(F.fn,{jinzify:function(a){return this.filter(a||null).avoid("h-jinze").replace(D.jinze.touwei,function(a,b){var c=E.create("h-jinze","touwei");return c.innerHTML=b[0],0===a.index&&a.isEnd||1===a.index?c:""}).replace(D.jinze.wei,function(a,b){var c=E.create("h-jinze","wei");return c.innerHTML=b[0],0===a.index?c:""}).replace(D.jinze.tou,function(a,b){var c=E.create("h-jinze","tou");return c.innerHTML=b[0],0===a.index&&a.isEnd||1===a.index?c:""}).replace(D.jinze.middle,function(a,b){var c=E.create("h-jinze","middle");return c.innerHTML=b[0],0===a.index&&a.isEnd||1===a.index?c:""}).endAvoid().endFilter()},groupify:function(a){var a=E.extend({biaodian:!1,hanzi:!1,kana:!1,eonmun:!1,western:!1},a||{});return this.avoid("h-hangable, h-char-group, h-word"),a.biaodian&&this.replace(D.group.biaodian[0],c).replace(D.group.biaodian[1],c),(a.hanzi||a.cjk)&&this.wrap(D.group.hanzi,E.clone(E.create("h-char-group","hanzi cjk"))),a.western&&this.wrap(D.group.western,E.clone(E.create("h-word","western"))),a.kana&&this.wrap(D.group.kana,E.clone(E.create("h-char-group","kana"))),(a.eonmun||a.hangul)&&this.wrap(D.group.eonmun,E.clone(E.create("h-word","eonmun hangul"))),this.endAvoid(),this},charify:function(a){var a=E.extend({biaodian:!1,punct:!1,hanzi:!1,latin:!1,ellinika:!1,kirillica:!1,kana:!1,eonmun:!1},a||{});return this.avoid("h-char"),a.biaodian&&this.replace(D["char"].biaodian.all,function(a,b){return d(b[0])}).replace(D["char"].biaodian.liga,function(a,b){return d(b[0])}),(a.hanzi||a.cjk)&&this.wrap(D["char"].hanzi,E.clone(E.create("h-char","hanzi cjk"))),a.punct&&this.wrap(D["char"].punct.all,E.clone(E.create("h-char","punct"))),a.latin&&this.wrap(D["char"].latin,E.clone(E.create("h-char","alphabet latin"))),(a.ellinika||a.greek)&&this.wrap(D["char"].ellinika,E.clone(E.create("h-char","alphabet ellinika greek"))),(a.kirillica||a.cyrillic)&&this.wrap(D["char"].kirillica,E.clone(E.create("h-char","alphabet kirillica cyrillic"))),a.kana&&this.wrap(D["char"].kana,E.clone(E.create("h-char","kana"))),(a.eonmun||a.hangul)&&this.wrap(D["char"].eonmun,E.clone(E.create("h-char","eonmun hangul"))),this.endAvoid(),this}}),A.find=F,void["setMode","wrap","replace","revert","addBoundary","removeBoundary","avoid","endAvoid","filter","endFilter","jinzify","groupify","charify"].forEach(function(a){A.fn[a]=function(){return this.finder||(this.finder=A.find(this.context)),this.finder[a](arguments[0],arguments[1]),this}});var G={};G.writeOnCanvas=e,G.compareCanvases=f,G.detectFont=g,G.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=x||E.create("body"),g=E.create("div"),h=x?g:f,b="function"==typeof b?b:function(){};return c=["<style>",a,"</style>"].join(""),h.innerHTML+=c,f.appendChild(g),x||(f.style.background="",f.style.overflow="hidden",e=w.style.overflow,w.style.overflow="hidden",w.appendChild(f)),d=b(h,a),E.remove(h),x||(w.style.overflow=e),!!d}function d(b,c){var d;return a.getComputedStyle?d=v.defaultView.getComputedStyle(b,null).getPropertyValue(c):b.currentStyle&&(d=b.currentStyle[c]),d}var e="Webkit Moz ms".split(" "),f=E.create("h-test");return{columnwidth:b("columnWidth"),fontface:function(){var a;return c('@font-face { font-family: font; src: url("//"); }',function(b,c){var d=E.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}(),ruby:function(){var a,b=E.create("ruby"),c=E.create("rt"),e=E.create("rp");return b.appendChild(e),b.appendChild(c),w.appendChild(b),a="none"===d(e,"display")||"ruby"===d(b,"display")&&"ruby-text"===d(c,"display")?!0:!1,w.removeChild(b),b=null,c=null,e=null,a}(),"ruby-display":function(){var a=E.create("div");return a.innerHTML='<h-test-a style="display: ruby;"></h-test-a><h-test-b style="display: ruby-text-container;"></h-test-b>',"ruby"===a.querySelector("h-test-a").style.display&&"ruby-text-container"===a.querySelector("h-test-b").style.display}(),"ruby-interchar":function(){var a,b="inter-character",c=E.create("div");return c.innerHTML='<h-test style="-moz-ruby-position:'+b+";-ms-ruby-position:"+b+";-webkit-ruby-position:"+b+";ruby-position:"+b+';"></h-test>',a=c.querySelector("h-test").style,a.rubyPosition===b||a.WebkitRubyPosition===b||a.MozRubyPosition===b||a.msRubyPosition===b}(),textemphasis:b("textEmphasis"),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=!G.detectFont("test-for-unicode-range",'Arial, "Droid Sans"',"Q")}),a}(),writingmode:b("writingMode")}}(),G.initCond=function(a){var b,a=a||w,c="";for(var d in G.support)b=(G.support[d]?"":"no-")+d,a.classList.add(b),c+=b+" ";return c};var H=G.support["ruby-interchar"];E.extend(G,{renderRuby:function(a,b){var b=b||"ruby",c=E.qsa(b,a);E.qsa("rtc",a).concat(c).map(l),c.forEach(function(a){var b,c=a.classList;c.contains("complex")?b=j(a):c.contains("zhuyin")&&(b=H?i(a):h(a)),b&&a.parentNode.replaceChild(b,a)})},simplifyRubyClass:l,getZhuyinHTML:o,renderComplexRuby:j,renderSimpleRuby:h,renderInterCharRuby:i}),E.extend(G,{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=E.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(E.isIgnorable(b));b.nodeName.match(d)&&b.classList.add("adjacent")})},renderEm:function(a,b){var c=b?"qsa":"tag",b=b||"em",d=E[c](b,a);d.forEach(function(a){var b=A(a);G.support.textemphasis?b.avoid("rt, h-char, h-char-group").charify({biaodian:!0,punct:!0}):b.avoid("rt, h-char, h-char-group").jinzify().groupify({western:!0,biaodian:!0}).charify({hanzi:!0,biaodian:!0,punct:!0,latin:!0,ellinika:!0,kirillica:!0})})}}),A.normalize=G,A.localize=G,A.support=G.support,A.detectFont=G.detectFont,A.fn.initCond=function(){return this.condition.classList.add("han-js-rendered"),A.normalize.initCond(this.condition),this},void["Elem","DecoLine","Em","Ruby"].forEach(function(a){var b="render"+a;A.fn[b]=function(a){return A.normalize[b](this.context,a),this}}),E.extend(A.support,{heiti:!0,songti:A.detectFont('"Han Songti"'),"songti-gb":A.detectFont('"Han Songti GB"'),kaiti:A.detectFont('"Han Kaiti"'),fangsong:A.detectFont('"Han Fangsong"')});var I="* > h-hws:first-child, * > wbr:first-child + h-hws, wbr:first-child + wbr + h-hws",J=function(){var a=E.create("div");return a.appendChild(E.create("","0-")),a.appendChild(E.create("","2")),a.normalize(),2!==a.firstChild.length}(),K=E.create("h-hws");K.setAttribute("hidden",""),K.innerHTML=" ",E.extend(A,{isNodeNormalizeNormal:J,renderHWS:function(a,b){var a=a||v,c=b?"strict":"base",d=A.find(a);return d.avoid(b?"textarea, code, kbd, samp, pre":"textarea"),d.replace(A.TYPESET.hws[c][0],"$1<hws/>$2").replace(A.TYPESET.hws[c][1],"$1<hws/>$2").replace(/(['"]+)<hws\/>(.+?)<hws\/>\1/gi,"$1$2$1").replace(/<hws\/>([\u2018\u201c]+)/gi,"$1").replace(/([\u2019\u201d]+)<hws\/>/gi,"$1").replace("<hws/>",function(){return E.clone(K)}),E.qsa(I,a).forEach(function(a){for(var b=a.parentNode,c=b.firstChild;E.isIgnorable(c);)if(c=c.nextSibling,!c)return;for(;"H-HWS"===c.nodeName&&(E.remove(c,b),c=b.parentNode.insertBefore(E.clone(K),b),b=b.parentNode,J&&b.normalize(),c===b.firstChild););}),J&&a.normalize(),d}}),E.extend(A.fn,{HWS:null,renderHWS:function(a){return A.renderHWS(this.context,a),this.HWS=E.tag("h-hws",this.context),this},revertHWS:function(){return this.HWS.forEach(function(a){E.remove(a)}),this}}),E.extend(A,{detectSpaceFont:p,isSpaceFontLoaded:p()}),A.support["han-space"]=p(),A.renderHanging=function(a){var a=a||v,b=A.find(a);return b.avoid("textarea, code, kbd, samp, pre, h-hangable").replace(D.jinze.hanging,function(a,b){var c=E.create("h-hangable");return c.innerHTML=b[1]+'<h-cs><h-inner hidden> </h-inner><h-char class="biaodian bd-close bd-end cjk">'+b[2]+"</h-char></h-cs>",0===a.index?c:""}),b},E.extend(A.fn,{hanging:null,renderHanging:function(){var a=this.condition.classList,b=p();return b&&a.contains("no-han-space")&&(a.remove("no-han-space"),a.add("han-space")),this.hanging=A.renderHanging(this.context),this},revertHanging:function(){try{this.hanging.revert("all")}catch(a){}return this}}),A.renderJiya=function(a){var a=a||v,b=A.find(a);return b.avoid("textarea, code, kbd, samp, pre, h-char-group").replace(new RegExp("("+C.biaodian.end+"+)("+C.biaodian.open+"+)","g"),function(a,b){if(0===a.index)return a.isEnd?b[0]:b[1];var c=E.create("h-char-group","biaodian cjk portion");return c.innerHTML=b[2],c}).endAvoid(),b.avoid("textarea, code, kbd, samp, pre, h-char").groupify({biaodian:!0}).charify({biaodian:!0}),E.qsa("h-char.biaodian.bd-open, h-char.biaodian.bd-end",a).forEach(function(a){if(!A.find.matches(a,"h-cs *")){var b="<h-inner>"+a.innerHTML+"</h-inner>",c="<h-cs hidden> </h-cs>",d=a.classList.contains("bd-open");a.innerHTML=d?c+b:b+c}}),b},E.extend(A.fn,{jiya:null,renderJiya:function(){return this.jiya=A.renderJiya(this.context),this},revertJiya:function(){try{this.jiya.revert("all")}catch(a){}return this}});var L;L=E.create("h-char","biaodian cjk bd-middle"),L.setAttribute("unicode","b7"),A.correctBasicBD=function(a,b){if(!A.support.unicoderange||b){var c,a=a||v;c=A.find(a),c.wrap(/\u00B7/g,E.clone(L)).charify({biaodian:!0})}},E.extend(A.fn,{basicBD:null,correctBasicBD:function(a){return this.basicBD=A.correctBasicBD(this.context,a),this},revertBasicBD:function(){try{this.basicBD.revert("all")}catch(a){}return this}});var M="textarea, code, kbd, samp, pre",N=E.create("h-char","comb-liga");return E.extend(A,{isVowelCombLigaNormal:r(),isVowelICombLigaNormal:s(),isZhuyinCombLigaNormal:t(),isCombLigaNormal:s()(),substVowelCombLiga:u(A.TYPESET["display-as"]["comb-liga-vowel"]),substZhuyinCombLiga:u(A.TYPESET["display-as"]["comb-liga-zhuyin"]),substCombLigaWithPUA:u(A.TYPESET["display-as"]["comb-liga-pua"]),substInaccurateChar:function(a){var a=a||v,b=A.find(a);b.avoid(M),A.TYPESET["inaccurate-char"].forEach(function(a){b.replace(new RegExp(a[0],"ig"),a[1])})}}),E.extend(A.fn,{"comb-liga-vowel":null,"comb-liga-vowel-i":null,"comb-liga-zhuyin":null,"inaccurate-char":null,substVowelCombLiga:function(){return this["comb-liga-vowel"]=A.substVowelCombLiga(this.context),this},substVowelICombLiga:function(){ | ||
return this["comb-liga-vowel-i"]=A.substVowelICombLiga(this.context),this},substZhuyinCombLiga:function(){return this["comb-liga-zhuyin"]=A.substZhuyinCombLiga(this.context),this},substCombLigaWithPUA:function(){return A.isVowelCombLigaNormal()?A.isVowelICombLigaNormal()||(this["comb-liga-vowel-i"]=A.substVowelICombLiga(this.context)):this["comb-liga-vowel"]=A.substVowelCombLiga(this.context),A.isZhuyinCombLigaNormal()||(this["comb-liga-zhuyin"]=A.substZhuyinCombLiga(this.context)),this},revertVowelCombLiga:function(){try{this["comb-liga-vowel"].revert("all")}catch(a){}return this},revertVowelICombLiga:function(){try{this["comb-liga-vowel-i"].revert("all")}catch(a){}return this},revertZhuyinCombLiga:function(){try{this["comb-liga-zhuyin"].revert("all")}catch(a){}return this},revertCombLigaWithPUA:function(){try{this["comb-liga-vowel"].revert("all"),this["comb-liga-vowel-i"].revert("all"),this["comb-liga-zhuyin"].revert("all")}catch(a){}return this},substInaccurateChar:function(){return this["inaccurate-char"]=A.substInaccurateChar(this.context),this},revertInaccurateChar:function(){try{this["inaccurate-char"].revert("all")}catch(a){}return this}}),a.addEventListener("DOMContentLoaded",function(){var a;w.classList.contains("han-init")?A.init():(a=v.querySelector(".han-init-context"))&&(A.init=A(a).render())}),("undefined"==typeof b||b===!1)&&(a.Han=A),A}); | ||
void function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=b(a,!0):"function"==typeof define&&define.amd?define(function(){return b(a,!0)}):b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";function c(a){return"function"==typeof a||a instanceof Element?a:void 0}function d(a){var b=0===a.index&&a.isEnd?"biaodian cjk":"biaodian cjk portion "+(0===a.index?"is-first":a.isEnd?"is-end":"is-inner"),c=S.create("h-char-group",b);return c.innerHTML=a.text,c}function e(a){var b=S.create("div"),c=a.charCodeAt(0).toString(16);return b.innerHTML='<h-char unicode="'+c+'" class="biaodian cjk '+f(a)+'">'+a+"</h-char>",b.firstChild}function f(a){return a.match(R["char"].biaodian.open)?"bd-open":a.match(R["char"].biaodian.close)?"bd-close bd-end":a.match(R["char"].biaodian.end)?/(?:\u3001|\u3002|\uff0c)/i.test(a)?"bd-end bd-cop":"bd-end":a.match(new RegExp(Q.biaodian.liga))?"bd-liga":a.match(new RegExp(Q.biaodian.middle))?"bd-middle":""}function g(a,b){var c,d=S.create("canvas");return d.width="50",d.height="20",d.style.display="none",L.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),{node:d,context:c,remove:function(){S.remove(d,L)}}}function h(a,b){var c,d=a.context,e=b.context;try{for(var f=1;20>=f;f++)for(var g=1;50>=g;g++){if("undefined"==typeof c&&d.getImageData(g,f,1,1).data[3]!==e.getImageData(g,f,1,1).data[3]){c=!1;break}if("boolean"==typeof c)break;50===g&&20===f&&"undefined"==typeof c&&(c=!0)}return a.remove(),b.remove(),a=null,b=null,c}catch(h){}return!1}function i(a,b,c){var a=a,b=b||"sans-serif",c=c||"\u8fadQ";return b=g(c,b),a=g(c,a),!h(a,b)}function j(a){var b,c=S.create("!"),d=a.classList;return c.appendChild(S.clone(a)),S.tag("rt",c.firstChild).forEach(function(a){var c,e=S.create("!"),f=[];do{if(c=(c||a).previousSibling,!c||c.nodeName.match(/((?:h\-)?r[ubt])/i))break;e.insertBefore(S.clone(c),e.firstChild),f.push(c)}while(!c.nodeName.match(/((?:h\-)?r[ubt])/i));b=d.contains("zhuyin")?p(e,a):o(e,a);try{a.parentNode.replaceChild(b,a),f.map(S.remove)}catch(g){}}),m(c)}function k(a){var b=S.create("!");return b.appendChild(S.clone(a)),S.tag("rt",b.firstChild).forEach(function(a){var b,c,d=S.create("!"),e=[];do{if(b=(b||a).previousSibling,!b||b.nodeName.match(/((?:h\-)?r[ubt])/i))break;d.insertBefore(S.clone(b),d.firstChild),e.push(b)}while(!b.nodeName.match(/((?:h\-)?r[ubt])/i));c=S.create("rt"),c.innerHTML=q(a),a.parentNode.replaceChild(c,a)}),b.firstChild}function l(a){var b,c,d,e,f=S.create("!"),g=a.classList;return f.appendChild(S.clone(a)),b=f.firstChild,c=d=S.tag("rb",b),e=c.length,void function(a){a&&(d=S.tag("rt",a).map(function(a,b){if(c[b]){var d=p(c[b],a);try{c[b].parentNode.replaceChild(d,c[b])}catch(e){}return d}}),S.remove(a),b.setAttribute("rightangle","true"))}(b.querySelector("rtc.zhuyin")),S.qsa("rtc:not(.zhuyin)",b).forEach(function(a,c){var f;f=S.tag("rt",a).map(function(a,b){var f,h,i=Number(a.getAttribute("rbspan")||1),j=0,k=[];i>e&&(i=e);do{try{f=d.shift(),k.push(f)}catch(l){}if("undefined"==typeof f)break;j+=Number(f.getAttribute("span")||1)}while(i>j);if(j>i){if(k.length>1)return void console.error("An impossible `rbspan` value detected.",ruby);k=S.tag("rb",k[0]),d=k.slice(i).concat(d),k=k.slice(0,i),j=i}h=o(k,a,{"class":g,span:j,order:c});try{k[0].parentNode.replaceChild(h,k.shift()),k.map(S.remove)}catch(l){}return h}),d=f,1===c&&b.setAttribute("doubleline","true"),S.remove(a)}),m(f)}function m(a){var b=a.firstChild,c=S.create("h-ruby");return c.innerHTML=b.innerHTML,S.setAttr(c,b.attributes),c.normalize(),c}function n(a){if(!a instanceof Element)return a;var b=a.classList;return b.contains("pinyin")?b.add("romanization"):b.contains("romanization")?b.add("annotation"):b.contains("mps")?b.add("zhuyin"):b.contains("rightangle")&&b.add("complex"),a}function o(a,b,c){var d=S.create("h-ru"),b=S.clone(b),c=c||{};return c.annotation="true",Array.isArray(a)?d.innerHTML=a.map(function(a){return"undefined"==typeof a?"":a.outerHTML}).join("")+b.outerHTML:(d.appendChild(S.clone(a)),d.appendChild(b)),S.setAttr(d,c),d}function p(a,b){var a=S.clone(a),c=S.create("h-ru");return c.setAttribute("zhuyin",!0),c.appendChild(a),c.innerHTML+=q(b),c}function q(a){var b,c,d,e="string"==typeof a?a:a.textContent;return b=e.replace(R.zhuyin.diao,""),d=b?b.length:0,c=e.replace(b,"").replace(/[\u02C5]/g,"\u02c7").replace(/[\u030D]/g,"\u0358"),0===d?"":'<h-zhuyin length="'+d+'" diao="'+c+'"><h-yin>'+b+"</h-yin><h-diao>"+c+"</h-diao></h-zhuyin>"}function r(a,b){return a&&b&&a.parentNode===b.parentNode}function s(a,b){var c=a,b=b||"";if(S.isElmt(a.nextSibling)||r(a,a.nextSibling))return b+X;for(;!c.nextSibling;)c=c.parentNode;return a!==c&&c.insertAdjacentHTML("afterEnd","<h-hws hidden> </h-hws>"),b}function t(a,b){return a.isEnd&&0===a.index?b[1]+X+b[2]:0===a.index?s(a.node,a.text):a.text}function u(a){return 0===a.index?S.clone(Y):""}function v(a){var b=a.node.parentNode;return 0===a.index&&(Z=a.endIndexInNode-2),"h-hws"!==b.nodeName.toLowerCase()||1!==a.index&&a.indexInMatch!==Z||b.classList.add("quote-inner"),a.text}function w(a){var b=a.node.parentNode;return"h-hws"===b.nodeName.toLowerCase()&&b.classList.add("quote-outer"),a.text}function x(){var a,b=S.create("div");return b.innerHTML="<span>a b</span><span style=\"font-family: 'Han Space'\">a b</span>",L.appendChild(b),a=b.firstChild.offsetWidth!==b.lastChild.offsetWidth,S.remove(b),a}function y(a){var b=a.nextSibling;b&&ba(b,"h-cs.jinze-outer")?b.classList.add("hangable-outer"):a.insertAdjacentHTML("afterend",aa)}function z(a){return a.replace(/(biaodian|cjk|bd-jiya|bd-consecutive|bd-hangable)/gi,"").trim()}function A(a){var b,c=a.text,d=a.node.parentNode,e=S.parent(d,"h-char.biaodian"),f=O.createBDChar(c);return f.innerHTML="<h-inner>"+c+"</h-inner>",f.classList.add(ea),(b=S.parent(d,"h-jinze"))&&C(b),e?function(){return e.classList.add(ea),ba(d,"h-inner, h-inner *")?c:f.firstChild}():f}function B(a){var b,c=ca,d=a.node.parentNode,e=S.parent(d,"h-char.biaodian"),f=S.parent(e,"h-jinze");return b=e.classList,c&&e.setAttribute("prev",c),da&&b.contains("bd-open")&&da.pop().setAttribute("next","bd-open"),da=void 0,a.isEnd?(ca=void 0,b.add(ga,"end-portion")):(ca=z(e.getAttribute("class")),b.add(ga)),f&&(da=D(f,{prev:c,"class":z(e.getAttribute("class"))})),a.text}function C(a){ba(a,".tou, .touwei")&&!ba(a.previousSibling,"h-cs.jiya-outer")&&a.insertAdjacentHTML("beforebegin",ha),ba(a,".wei, .touwei")&&!ba(a.nextSibling,"h-cs.jiya-outer")&&a.insertAdjacentHTML("afterend",ha)}function D(a,b){var c,d;return ba(a,".tou, .touwei")&&(c=a.previousSibling,ba(c,"h-cs")&&(c.className="jinze-outer jiya-outer",c.setAttribute("prev",b.prev))),ba(a,".wei, .touwei")&&(d=a.nextSibling,ba(d,"h-cs")&&(d.className="jinze-outer jiya-outer "+b["class"],d.removeAttribute("prev"))),[c,d]}function E(a,b,c){return function(){var d=O.localize.writeOnCanvas(b,a),e=O.localize.writeOnCanvas(c,a);return O.localize.compareCanvases(d,e)}}function F(){return E('"Romanization Sans"',"a\u030d","\udb80\udc61")}function G(){return E('"Romanization Sans"',"i\u030d","\udb80\udc69")}function H(){return E('"Zhuyin Kaiti"',"\u31b4\u0358","\udb8c\uddb4")}function I(a){return function(b){var b=b||J,c=O.find(b).avoid(ia);return a.forEach(function(a){c.replace(new RegExp(a[0],"ig"),function(b,c){var d=S.clone(ja);return d.innerHTML="<h-inner>"+c[0]+"</h-inner>",d.setAttribute("display-as",a[1]),0===b.index?d:""})}),c}}var J=a.document,K=J.documentElement,L=J.body,M="3.3.0",N=["initCond","renderElem","renderJiya","renderHanging","correctBiaodian","renderHWS","substCombLigaWithPUA"],O=function(a,b){return new O.fn.init(a,b)},P=function(){return arguments[0]&&(this.context=arguments[0]),arguments[1]&&(this.condition=arguments[1]),this};O.version=M,O.fn=O.prototype={version:M,constructor:O,context:L,condition:K,routine:N,init:P,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){"string"==typeof a&&"function"==typeof b[a]?b[a]():Array.isArray(a)&&"function"==typeof b[a[0]]&&b[a.shift()].apply(b,a)}),this}},O.fn.init.prototype=O.fn,O.init=function(){return O.init=O().render()};var Q={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]",checked:"[\u31b4-\u31b7][\u0358\u030d]?"}},R=function(){var a="[\\x20\\t\\r\\n\\f]",b=Q.punct.open,c=(Q.punct.close,Q.punct.end),d=Q.punct.middle,e=Q.punct.sing,f=b+"|"+c+"|"+d,g=Q.biaodian.open,h=Q.biaodian.close,i=Q.biaodian.end,j=Q.biaodian.middle,k=Q.biaodian.liga+"{2}",l=g+"|"+i+"|"+j,m=Q.kana.base+Q.kana.combine+"?",n=Q.kana.small+Q.kana.combine+"?",o=Q.kana.half,p=Q.eonmun.base+"|"+Q.eonmun.letter,q=Q.eonmun.half,r=Q.hanzi.base+"|"+Q.hanzi.desc+"|"+Q.hanzi.radical+"|"+m,s=Q.ellinika.combine,t=Q.latin.base+s+"*",u=Q.ellinika.base+s+"*",v=Q.kirillica.combine,w=Q.kirillica.base+v+"*",x=t+"|"+u+"|"+w,y="['\u2019]",z=r+"|(?:"+x+"|"+y+")+",A=Q.zhuyin.initial,B=Q.zhuyin.medial,C=Q.zhuyin["final"],D=Q.zhuyin.tone+"|"+Q.zhuyin.checked;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")},hanzi:new RegExp("("+r+")","g"),latin:new RegExp("("+t+")","ig"),ellinika:new RegExp("("+u+")","ig"),kirillica:new RegExp("("+w+")","ig"),kana:new RegExp("("+m+"|"+n+"|"+o+")","g"),eonmun:new RegExp("("+p+"|"+q+")","g")},group:{biaodian:[new RegExp("(("+l+"){2,})","g"),new RegExp("("+k+g+")","g")],punct:null,hanzi:new RegExp("("+r+")+","g"),western:new RegExp("("+t+"|"+u+"|"+w+"|"+f+")+","ig"),kana:new RegExp("("+m+"|"+n+"|"+o+")+","g"),eonmun:new RegExp("("+p+"|"+q+"|"+f+")+","g")},jinze:{hanging:new RegExp(a+"*([\u3001\uff0c\u3002\uff0e])(?!"+i+")","ig"),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"]],"comb-liga-vowel":[["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"]],"comb-liga-zhuyin":[["\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"]]}}();O.UNICODE=Q,O.TYPESET=R,O.UNICODE.cjk=O.UNICODE.hanzi,O.UNICODE.greek=O.UNICODE.ellinika,O.UNICODE.cyrillic=O.UNICODE.kirillica,O.UNICODE.hangul=O.UNICODE.eonmun,O.UNICODE.zhuyin.ruyun=O.UNICODE.zhuyin.checked,O.TYPESET["char"].cjk=O.TYPESET["char"].hanzi,O.TYPESET["char"].greek=O.TYPESET["char"].ellinika,O.TYPESET["char"].cyrillic=O.TYPESET["char"].kirillica,O.TYPESET["char"].hangul=O.TYPESET["char"].eonmun,O.TYPESET.group.hangul=O.TYPESET.group.eonmun,O.TYPESET.group.cjk=O.TYPESET.group.hanzi;var S={id:function(a,b){return(b||J).getElementById(a)},tag:function(a,b){return this.makeArray((b||J).getElementsByTagName(a))},qs:function(a,b){return(b||J).querySelector(a)},qsa:function(a,b){return this.makeArray((b||J).querySelectorAll(a))},parent:function(a,b){return b?function(){if("function"==typeof S.matches){for(;!S.matches(a,b);){if(!a||a===J.documentElement){a=void 0;break}a=a.parentNode}return a}}():a?a.parentNode:void 0},create:function(a,b){var c="!"===a?J.createDocumentFragment():""===a?J.createTextNode(b||""):J.createElement(a);try{b&&(c.className=b)}catch(d){}return c},clone:function(a,b){return a.cloneNode("boolean"==typeof b?b:!0)},remove:function(a){return 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}},isElmt:function(a){return a&&a.nodeType===Node.ELEMENT_NODE},isIgnorable:function(a){return a?"WBR"===a.nodeName||a.nodeType===Node.COMMENT_NODE:!1},makeArray:function(a){return Array.prototype.slice.call(a)},extend:function(a,b){if(("object"==typeof a||"function"==typeof a)&&"object"==typeof b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}},T=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.2.1",e=b.NON_INLINE_PROSE,f=b.PRESETS.prose.filterElements,g=a||{},h=g.document||void 0;if("undefined"==typeof h)throw new Error("Fibre requires a DOM-supported environment.");var i=function(a,b){return new i.fn.init(a,b)};return i.version=d,i.matches=c,i.fn=i.prototype={constructor:i,version:d,finder:[],context:void 0,portionMode:"retain",selector:{},preset:"prose",init:function(a,b){if(b&&(this.preset=null),this.selector={context:null,filter:[],avoid:[],boundary:[]},!a)throw new Error("A context is required for Fibre to initialise.");return a instanceof Node?a instanceof Document?this.context=a.body||a:this.context=a:"string"==typeof a&&(this.context=h.querySelector(a),this.selector.context=a),this},filterFn:function(a){var b=this.selector.filter.join(", ")||"*",d=this.selector.avoid.join(", ")||null,e=c(a,b,!0)&&!c(a,d);return"prose"===this.preset?f(a)&&e:e},boundaryFn:function(a){var b=this.selector.boundary.join(", ")||null,d=c(a,b);return"prose"===this.preset?e(a)||d:d},filter:function(a){return"string"==typeof a&&this.selector.filter.push(a),this},endFilter:function(a){return a?this.selector.filter=[]:this.selector.filter.pop(),this},avoid:function(a){return"string"==typeof a&&this.selector.avoid.push(a),this},endAvoid:function(a){return a?this.selector.avoid=[]:this.selector.avoid.pop(),this},addBoundary:function(a){return"string"==typeof a&&this.selector.boundary.push(a),this},removeBoundary:function(){return this.selector.boundary=[],this},setMode:function(a){return this.portionMode="first"===a?"first":"retain",this},replace:function(a,c){var d=this;return d.finder.push(b(d.context,{find:a,replace:c,filterElements:function(a){return d.filterFn(a)},forceContext:function(a){return d.boundaryFn(a)},portionMode:d.portionMode})),d},wrap:function(a,c){var d=this;return d.finder.push(b(d.context,{find:a,wrap:c,filterElements:function(a){return d.filterFn(a)},forceContext:function(a){return d.boundaryFn(a)},portionMode:d.portionMode})),d},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}},i.fn.filterOut=i.fn.avoid,i.fn.init.prototype=i.fn,i}(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,c){var d=c.preset&&b.PRESETS[c.preset];if(c.portionMode=c.portionMode||f,d)for(var e in d)i.call(d,e)&&!i.call(c,e)&&(c[e]=d[e]);this.node=a,this.options=c,this.prepMatch=c.prepMatch||this.prepMatch,this.reverts=[],this.matches=this.search(),this.matches.length&&this.processMatches()}var f="retain",g="first",h=J,i=({}.toString,{}.hasOwnProperty);return b.NON_PROSE_ELEMENTS={br:1,hr:1,script:1,style:1,img:1,video:1,audio:1,canvas:1,svg:1,map:1,object:1,input:1,textarea:1,select:1,option:1,optgroup:1,button:1},b.NON_CONTIGUOUS_PROSE_ELEMENTS={address:1,article:1,aside:1,blockquote:1,dd:1,div:1,dl:1,fieldset:1,figcaption:1,figure:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,hr:1,main:1,nav:1,noscript:1,ol:1,output:1,p:1,pre:1,section:1,ul:1,br:1,li:1,summary:1,dt:1,details:1,rp:1,rt:1,rtc:1,script:1,style:1,img:1,video:1,audio:1,canvas:1,svg:1,map:1,object:1,input:1,textarea:1,select:1,option:1,optgroup:1,button:1,table:1,tbody:1,thead:1,th:1,tr:1,td:1,caption:1,col:1,tfoot:1,colgroup:1},b.NON_INLINE_PROSE=function(a){return i.call(b.NON_CONTIGUOUS_PROSE_ELEMENTS,a.nodeName.toLowerCase())},b.PRESETS={prose:{forceContext:b.NON_INLINE_PROSE,filterElements:function(a){return!i.call(b.NON_PROSE_ELEMENTS,a.nodeName.toLowerCase())}}},b.Finder=e,e.prototype={search:function(){function b(a){for(var g=0,j=a.length;j>g;++g){var k=a[g];if("string"==typeof k){if(f.global)for(;c=f.exec(k);)h.push(i.prepMatch(c,d++,e));else(c=k.match(f))&&h.push(i.prepMatch(c,0,e));e+=k.length}else b(k)}}var c,d=0,e=0,f=this.options.find,g=this.getAggregateText(),h=[],i=this;return f="string"==typeof f?RegExp(a(f),"g"):f,b(g),h},prepMatch:function(a,b,c){if(!a[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return a.endIndex=c+a.index+a[0].length,a.startIndex=c+a.index,a.index=b,a},getAggregateText:function(){function a(d,e){if(3===d.nodeType)return[d.data];if(b&&!b(d))return[];var e=[""],f=0;if(d=d.firstChild)do if(3!==d.nodeType){var g=a(d);c&&1===d.nodeType&&(c===!0||c(d))?(e[++f]=g,e[++f]=""):("string"==typeof g[0]&&(e[f]+=g.shift()),g.length&&(e[++f]=g,e[++f]=""))}else e[f]+=d.data;while(d=d.nextSibling);return e}var b=this.options.filterElements,c=this.options.forceContext;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,d){var e=this.options.portionMode;return e===g&&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}),e===g?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=h.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:h.createTextNode(String(d));var g="string"==typeof e?h.createElement(e):e;return d=h.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,i=d.node;if(g===i){var j=g;b.indexInNode>0&&(e=h.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.endIndexInNode<j.length&&(f=h.createTextNode(j.data.substring(d.endIndexInNode)),j.parentNode.insertBefore(f,j)),j.parentNode.removeChild(j),this.reverts.push(function(){e===k.previousSibling&&e.parentNode.removeChild(e),f===k.nextSibling&&f.parentNode.removeChild(f),k.parentNode.replaceChild(j,k)}),k}e=h.createTextNode(g.data.substring(0,b.indexInNode)),f=h.createTextNode(i.data.substring(d.endIndexInNode));for(var l=this.getPortionReplacementNode(b,a),m=[],n=0,o=c.length;o>n;++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),i.parentNode.insertBefore(r,i),i.parentNode.insertBefore(f,i),i.parentNode.removeChild(i),this.reverts.push(function(){e.parentNode.removeChild(e),l.parentNode.replaceChild(g,l),f.parentNode.removeChild(f),r.parentNode.replaceChild(i,r)}),r}},b}()),U=function(){var a=S.create("div");return a.appendChild(S.create("","0-")),a.appendChild(S.create("","2")),a.normalize(),2!==a.firstChild.length}();S.extend(T.fn,{normalize:function(){return U&&this.context.normalize(),this},jinzify:function(a){return this.filter(a||null).avoid("h-jinze").replace(R.jinze.touwei,function(a,b){var c=S.create("h-jinze","touwei");return c.innerHTML=b[0],0===a.index&&a.isEnd||1===a.index?c:""}).replace(R.jinze.wei,function(a,b){var c=S.create("h-jinze","wei");return c.innerHTML=b[0],0===a.index?c:""}).replace(R.jinze.tou,function(a,b){var c=S.create("h-jinze","tou");return c.innerHTML=b[0],0===a.index&&a.isEnd||1===a.index?c:""}).replace(R.jinze.middle,function(a,b){var c=S.create("h-jinze","middle");return c.innerHTML=b[0],0===a.index&&a.isEnd||1===a.index?c:""}).endAvoid().endFilter()},groupify:function(a){var a=S.extend({biaodian:!1,hanzi:!1,kana:!1,eonmun:!1,western:!1},a||{});return this.avoid("h-word, h-char-group"),a.biaodian&&this.replace(R.group.biaodian[0],d).replace(R.group.biaodian[1],d),(a.hanzi||a.cjk)&&this.wrap(R.group.hanzi,S.clone(S.create("h-char-group","hanzi cjk"))),a.western&&this.wrap(R.group.western,S.clone(S.create("h-word","western"))),a.kana&&this.wrap(R.group.kana,S.clone(S.create("h-char-group","kana"))),(a.eonmun||a.hangul)&&this.wrap(R.group.eonmun,S.clone(S.create("h-word","eonmun hangul"))),this.endAvoid(),this},charify:function(a){var a=S.extend({avoid:!0,biaodian:!1,punct:!1,hanzi:!1,latin:!1,ellinika:!1,kirillica:!1,kana:!1,eonmun:!1},a||{});return a.avoid&&this.avoid("h-char"),a.biaodian&&this.replace(R["char"].biaodian.all,c(a.biaodian)||function(a){return e(a.text)}).replace(R["char"].biaodian.liga,c(a.biaodian)||function(a){return e(a.text)}),(a.hanzi||a.cjk)&&this.wrap(R["char"].hanzi,c(a.hanzi||a.cjk)||S.clone(S.create("h-char","hanzi cjk"))),a.punct&&this.wrap(R["char"].punct.all,c(a.punct)||S.clone(S.create("h-char","punct"))),a.latin&&this.wrap(R["char"].latin,c(a.latin)||S.clone(S.create("h-char","alphabet latin"))),(a.ellinika||a.greek)&&this.wrap(R["char"].ellinika,c(a.ellinika||a.greek)||S.clone(S.create("h-char","alphabet ellinika greek"))),(a.kirillica||a.cyrillic)&&this.wrap(R["char"].kirillica,c(a.kirillica||a.cyrillic)||S.clone(S.create("h-char","alphabet kirillica cyrillic"))),a.kana&&this.wrap(R["char"].kana,c(a.kana)||S.clone(S.create("h-char","kana"))),(a.eonmun||a.hangul)&&this.wrap(R["char"].eonmun,c(a.eonmun||a.hangul)||S.clone(S.create("h-char","eonmun hangul"))),this.endAvoid(),this}}),S.extend(O,{isNodeNormalizeNormal:U,find:T,createBDGroup:d,createBDChar:e}),S.matches=O.find.matches,void["setMode","wrap","replace","revert","addBoundary","removeBoundary","avoid","endAvoid","filter","endFilter","jinzify","groupify","charify"].forEach(function(a){O.fn[a]=function(){return this.finder||(this.finder=O.find(this.context)),this.finder[a](arguments[0],arguments[1]),this}});var V={};V.writeOnCanvas=g,V.compareCanvases=h,V.detectFont=i,V.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=L||S.create("body"),g=S.create("div"),h=L?g:f,b="function"==typeof b?b:function(){};return c=["<style>",a,"</style>"].join(""),h.innerHTML+=c,f.appendChild(g),L||(f.style.background="",f.style.overflow="hidden",e=K.style.overflow,K.style.overflow="hidden",K.appendChild(f)),d=b(h,a),S.remove(h),L||(K.style.overflow=e),!!d}function d(b,c){var d;return a.getComputedStyle?d=J.defaultView.getComputedStyle(b,null).getPropertyValue(c):b.currentStyle&&(d=b.currentStyle[c]),d}var e="Webkit Moz ms".split(" "),f=S.create("h-test");return{columnwidth:b("columnWidth"),fontface:function(){var a;return c('@font-face { font-family: font; src: url("//"); }',function(b,c){var d=S.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}(),ruby:function(){var a,b=S.create("ruby"),c=S.create("rt"),e=S.create("rp");return b.appendChild(e),b.appendChild(c),K.appendChild(b),a="none"===d(e,"display")||"ruby"===d(b,"display")&&"ruby-text"===d(c,"display")?!0:!1,K.removeChild(b),b=null,c=null,e=null,a}(),"ruby-display":function(){var a=S.create("div");return a.innerHTML='<h-test-a style="display: ruby;"></h-test-a><h-test-b style="display: ruby-text-container;"></h-test-b>',"ruby"===a.querySelector("h-test-a").style.display&&"ruby-text-container"===a.querySelector("h-test-b").style.display}(),"ruby-interchar":function(){var a,b="inter-character",c=S.create("div");return c.innerHTML='<h-test style="-moz-ruby-position:'+b+";-ms-ruby-position:"+b+";-webkit-ruby-position:"+b+";ruby-position:"+b+';"></h-test>',a=c.querySelector("h-test").style,a.rubyPosition===b||a.WebkitRubyPosition===b||a.MozRubyPosition===b||a.msRubyPosition===b}(),textemphasis:b("textEmphasis"),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=!V.detectFont("test-for-unicode-range",'Arial, "Droid Sans"',"Q")}),a}(),writingmode:b("writingMode")}}(),V.initCond=function(a){var b,a=a||K,c="";for(var d in V.support)b=(V.support[d]?"":"no-")+d,a.classList.add(b),c+=b+" ";return c};var W=V.support["ruby-interchar"];S.extend(V,{renderRuby:function(a,b){var b=b||"ruby",c=S.qsa(b,a);S.qsa("rtc",a).concat(c).map(n),c.forEach(function(a){var b,c=a.classList;c.contains("complex")?b=l(a):c.contains("zhuyin")&&(b=W?k(a):j(a)),b&&a.parentNode.replaceChild(b,a)})},simplifyRubyClass:n,getZhuyinHTML:q,renderComplexRuby:l,renderSimpleRuby:j,renderInterCharRuby:k}),S.extend(V,{renderElem:function(a){this.renderRuby(a),this.renderDecoLine(a),this.renderDecoLine(a,"s, del"),this.renderEm(a)},renderDecoLine:function(a,b){var c=S.qsa(b||"u, ins",a),d=c.length;a:for(;d--;){var e=c[d],f=null;do{if(f=(f||e).previousSibling,!f)continue a;c[d-1]===f&&e.classList.add("adjacent")}while(S.isIgnorable(f))}},renderEm:function(a,b){var c=b?"qsa":"tag",b=b||"em",d=S[c](b,a);d.forEach(function(a){var b=O(a);V.support.textemphasis?b.avoid("rt, h-char").charify({biaodian:!0,punct:!0}):b.avoid("rt, h-char, h-char-group").jinzify().groupify({western:!0}).charify({hanzi:!0,biaodian:!0,punct:!0,latin:!0,ellinika:!0,kirillica:!0})})}}),O.normalize=V,O.localize=V,O.support=V.support,O.detectFont=V.detectFont,O.fn.initCond=function(){return this.condition.classList.add("han-js-rendered"),O.normalize.initCond(this.condition),this},void["Elem","DecoLine","Em","Ruby"].forEach(function(a){var b="render"+a;O.fn[b]=function(a){return O.normalize[b](this.context,a),this}}),S.extend(O.support,{heiti:!0,songti:O.detectFont('"Han Songti"'),"songti-gb":O.detectFont('"Han Songti GB"'),kaiti:O.detectFont('"Han Kaiti"'),fangsong:O.detectFont('"Han Fangsong"')}),O.correctBiaodian=function(a){var a=a||J,b=O.find(a);return b.avoid("h-char").replace(/([\u2018\u201c])/g,function(a){var b=O.createBDChar(a.text);return b.classList.add("bd-open","punct"),b}).replace(/([\u2019\u201d])/g,function(a){var b=O.createBDChar(a.text);return b.classList.add("bd-close","bd-end","punct"),b}),O.support.unicoderange?b:b.charify({biaodian:!0})},O.correctBasicBD=O.correctBiaodian,O.correctBD=O.correctBiaodian,S.extend(O.fn,{biaodian:null,correctBiaodian:function(){return this.biaodian=O.correctBiaodian(this.context),this},revertCorrectedBiaodian:function(){try{this.biaodian.revert("all")}catch(a){}return this}}),O.fn.correctBasicBD=O.fn.correctBiaodian,O.fn.revertBasicBD=O.fn.revertCorrectedBiaodian;var X="<<hws>>",Y=S.create("h-hws");Y.setAttribute("hidden",""),Y.innerHTML=" ";var Z;S.extend(O,{renderHWS:function(a,b){var c=b?"textarea, code, kbd, samp, pre":"textarea",d=b?"strict":"base",a=a||J,e=O.find(a); | ||
return e.avoid(c).replace(O.TYPESET.hws[d][0],t).replace(O.TYPESET.hws[d][1],t).replace(new RegExp("("+X+")+","g"),u).replace(/([\'"])\s(.+?)\s\1/g,v).replace(/\s[\u2018\u201c]/g,w).replace(/[\u2019\u201d]\s/g,w).normalize(),e}}),S.extend(O.fn,{renderHWS:function(a){return O.renderHWS(this.context,a),this},revertHWS:function(){return S.tag("h-hws",this.context).forEach(function(a){S.remove(a)}),this.HWS=[],this}});var $="bd-hangable",_="h-char.bd-hangable",aa='<h-cs hidden class="jinze-outer hangable-outer"> </h-cs>',ba=O.find.matches;O.support["han-space"]=x(),S.extend(O,{detectSpaceFont:x,isSpaceFontLoaded:x(),renderHanging:function(a){var a=a||J,b=O.find(a);return b.avoid("textarea, code, kbd, samp, pre").avoid(_).replace(R.jinze.hanging,function(a){if(/^[\x20\t\r\n\f]+$/.test(a.text))return"";var b,c,d,e,f=a.node.parentNode;return(b=S.parent(f,"h-jinze"))&&y(b),e=a.text.trim(),c=O.createBDChar(e),c.innerHTML="<h-inner>"+e+"</h-inner>",c.classList.add($),d=S.parent(f,"h-char.biaodian"),d?function(){return d.classList.add($),ba(f,"h-inner, h-inner *")?e:c.firstChild}():c}),b}}),S.extend(O.fn,{renderHanging:function(){var a=this.condition.classList;return O.isSpaceFontLoaded=x(),O.isSpaceFontLoaded&&a.contains("no-han-space")&&(a.remove("no-han-space"),a.add("han-space")),O.renderHanging(this.context),this},revertHanging:function(){return S.qsa("h-char.bd-hangable, h-cs.hangable-outer",this.context).forEach(function(a){var b=a.classList;b.remove("bd-hangable"),b.remove("hangable-outer")}),this}});var ca,da,ea="bd-jiya",fa="h-char.bd-jiya",ga="bd-consecutive",ha='<h-cs hidden class="jinze-outer jiya-outer"> </h-cs>',ba=O.find.matches;O.renderJiya=function(a){var a=a||J,b=O.find(a);return b.avoid("textarea, code, kbd, samp, pre, h-cs").avoid(fa).charify({avoid:!1,biaodian:A}).endAvoid().avoid("textarea, code, kbd, samp, pre, h-cs").replace(R.group.biaodian[0],B).replace(R.group.biaodian[1],B),b},S.extend(O.fn,{renderJiya:function(){return O.renderJiya(this.context),this},revertJiya:function(){return S.qsa("h-char.bd-jiya, h-cs.jiya-outer",this.context).forEach(function(a){var b=a.classList;b.remove("bd-jiya"),b.remove("jiya-outer")}),this}});var ia="textarea, code, kbd, samp, pre",ja=S.create("h-char","comb-liga");return S.extend(O,{isVowelCombLigaNormal:F(),isVowelICombLigaNormal:G(),isZhuyinCombLigaNormal:H(),isCombLigaNormal:G()(),substVowelCombLiga:I(O.TYPESET["display-as"]["comb-liga-vowel"]),substZhuyinCombLiga:I(O.TYPESET["display-as"]["comb-liga-zhuyin"]),substCombLigaWithPUA:I(O.TYPESET["display-as"]["comb-liga-pua"]),substInaccurateChar:function(a){var a=a||J,b=O.find(a);b.avoid(ia),O.TYPESET["inaccurate-char"].forEach(function(a){b.replace(new RegExp(a[0],"ig"),a[1])})}}),S.extend(O.fn,{"comb-liga-vowel":null,"comb-liga-vowel-i":null,"comb-liga-zhuyin":null,"inaccurate-char":null,substVowelCombLiga:function(){return this["comb-liga-vowel"]=O.substVowelCombLiga(this.context),this},substVowelICombLiga:function(){return this["comb-liga-vowel-i"]=O.substVowelICombLiga(this.context),this},substZhuyinCombLiga:function(){return this["comb-liga-zhuyin"]=O.substZhuyinCombLiga(this.context),this},substCombLigaWithPUA:function(){return O.isVowelCombLigaNormal()?O.isVowelICombLigaNormal()||(this["comb-liga-vowel-i"]=O.substVowelICombLiga(this.context)):this["comb-liga-vowel"]=O.substVowelCombLiga(this.context),O.isZhuyinCombLigaNormal()||(this["comb-liga-zhuyin"]=O.substZhuyinCombLiga(this.context)),this},revertVowelCombLiga:function(){try{this["comb-liga-vowel"].revert("all")}catch(a){}return this},revertVowelICombLiga:function(){try{this["comb-liga-vowel-i"].revert("all")}catch(a){}return this},revertZhuyinCombLiga:function(){try{this["comb-liga-zhuyin"].revert("all")}catch(a){}return this},revertCombLigaWithPUA:function(){try{this["comb-liga-vowel"].revert("all"),this["comb-liga-vowel-i"].revert("all"),this["comb-liga-zhuyin"].revert("all")}catch(a){}return this},substInaccurateChar:function(){return this["inaccurate-char"]=O.substInaccurateChar(this.context),this},revertInaccurateChar:function(){try{this["inaccurate-char"].revert("all")}catch(a){}return this}}),a.addEventListener("DOMContentLoaded",function(){var a;K.classList.contains("han-init")?O.init():(a=J.querySelector(".han-init-context"))&&(O.init=O(a).render())}),("undefined"==typeof b||b===!1)&&(a.Han=O),O}); |
Copyright (c) 2015 Chen Yijun (陳奕鈞,http://yijun.me/) | ||
Copyright (c) 2016 Chen Yijun (陳奕鈞,http://yijun.me/) | ||
@@ -4,0 +4,0 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: |
{ | ||
"name": "han-css", | ||
"version": "3.2.7", | ||
"version": "3.3.0", | ||
"description": "The CSS typography framework optimised for Hanzi", | ||
@@ -35,6 +35,5 @@ "repository": { | ||
"fibre.js": "^0.2.1", | ||
"normalize.css": "~3.0.3" | ||
"normalize.css": "^4.0.0" | ||
}, | ||
"devDependencies": { | ||
"livescript": "~1.4.0", | ||
"gulp": "^3.9.0", | ||
@@ -48,9 +47,12 @@ "gulp-browserify": "^0.5.0", | ||
"gulp-livescript": "^2.3.0", | ||
"gulp-plumber": "^1.0.1", | ||
"gulp-qunit": "^1.2.1", | ||
"gulp-requirejs-optimize": "^0.1.1", | ||
"gulp-sass": "^1.2.4", | ||
"gulp-sass": "^2.1.1", | ||
"gulp-stylus": "^2.0.4", | ||
"gulp-symlink": "^2.1.0", | ||
"gulp-uglifyjs": "^0.5.0", | ||
"gulp-util": "^3.0.7", | ||
"gulp-watch": "^3.0.0", | ||
"livescript": "~1.4.0", | ||
"qunitjs": "^1.16.0", | ||
@@ -57,0 +59,0 @@ "requirejs": "^2.1.15" |
@@ -20,3 +20,2 @@ | ||
- Bower `bower install --save Han` | ||
- Component `component install ethantw/Han` | ||
- Rails `gem install 'hanzi-rails'` ([Check out the details here](https://github.com/billy3321/hanzi-rails)) | ||
@@ -35,3 +34,3 @@ | ||
````html | ||
<link rel="stylesheet" media="all" href="//cdnjs.cloudflare.com/ajax/libs/Han/3.2.7/han.min.css"> | ||
<link rel="stylesheet" media="all" href="//cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/han.min.css"> | ||
```` | ||
@@ -42,3 +41,3 @@ | ||
````html | ||
<script src="//cdnjs.cloudflare.com/ajax/libs/Han/3.2.7/han.min.js"></script> | ||
<script src="//cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/han.min.js"></script> | ||
```` | ||
@@ -48,4 +47,4 @@ | ||
- WOFF `//cdnjs.cloudflare.com/ajax/libs/Han/3.2.7/font/han.woff` | ||
- OTF `//cdnjs.cloudflare.com/ajax/libs/Han/3.2.7/font/han.otf` | ||
- WOFF `//cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/font/han.woff` | ||
- OTF `//cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/font/han.otf` | ||
@@ -84,13 +83,13 @@ ## How to use | ||
- Google Chrome (latest) | ||
- Mozilla Firefox (latest) | ||
- Mozilla Firefox ESR+ | ||
- Opera Next (latest) | ||
- Apple Safari 7+ | ||
- Microsoft Edge | ||
- Internet Explorer 10+ | ||
- Chrome (latest) | ||
- Edge (latest) | ||
- Firefox (latest) | ||
- Firefox ESR+ | ||
- Internet Explorer 11 | ||
- Opera (latest) | ||
- Safari 9 | ||
## Requirements and developing commands | ||
- io.js/Node.js | ||
- Node.js | ||
- LiveScript 1.4.0 (`sudo npm install -g livescript`) | ||
@@ -107,4 +106,4 @@ | ||
* * * | ||
Han.css v3.2.7 | ||
Last-modified: 2015-10-17 23:19 (UTC+8) | ||
Han.css v3.3.0 | ||
Last-modified: 2016-3-19 00:11 (UTC+8) | ||
@@ -21,3 +21,2 @@ | ||
- Bower `bower install --save Han` | ||
- Component `component install ethantw/Han` | ||
- Rails `gem install 'hanzi-rails'`([詳細はこちら](https://github.com/billy3321/hanzi-rails)) | ||
@@ -37,3 +36,3 @@ | ||
````html | ||
<link rel="stylesheet" media="all" href="//cdnjs.cloudflare.com/ajax/libs/Han/3.2.7/han.min.css"> | ||
<link rel="stylesheet" media="all" href="//cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/han.min.css"> | ||
```` | ||
@@ -44,3 +43,3 @@ | ||
````html | ||
<script src="//cdnjs.cloudflare.com/ajax/libs/Han/3.2.7/han.min.js"></script> | ||
<script src="//cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/han.min.js"></script> | ||
```` | ||
@@ -50,4 +49,4 @@ | ||
- WOFF `//cdnjs.cloudflare.com/ajax/libs/Han/3.2.7/font/han.woff` | ||
- OTF `//cdnjs.cloudflare.com/ajax/libs/Han/3.2.7/font/han.otf` | ||
- WOFF `//cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/font/han.woff` | ||
- OTF `//cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/font/han.otf` | ||
@@ -88,13 +87,13 @@ ## 使用方式 | ||
- Google Chrome(最新版) | ||
- Mozilla Firefox(最新版) | ||
- Mozilla Firefox ESR+ | ||
- Opera Next(最新版) | ||
- Apple Safari 7+ | ||
- Microsoft Edge | ||
- Internet Explorer 10+ | ||
- Chrome(最新版) | ||
- Edge(最新版) | ||
- Firefox(最新版) | ||
- Firefox ESR+ | ||
- Internet Explorer 11 | ||
- Opera(最新版) | ||
- Safari 9 | ||
## 開発について | ||
- io.js/Node.js | ||
- Node.js | ||
- LiveScript 1.4.0(`sudo npm install -g livescript`) | ||
@@ -111,4 +110,4 @@ | ||
* * * | ||
漢字標準格式 v3.2.7 | ||
Last-modified: 2015-10-26 23:19 (UTC+8) | ||
漢字標準格式 v3.3.0 | ||
Last-modified: 2016-3-19 00:11 (UTC+8) | ||
Translator: [神場雅史][translator] (Jimba Masafumi, [@westantenna][trans-twr]) | ||
@@ -115,0 +114,0 @@ |
@@ -14,3 +14,3 @@ | ||
[檢視範例測試頁 →] | ||
[檢視範例測試頁] | ||
(http://ethantw.github.io/Han/latest/) | ||
@@ -21,3 +21,2 @@ | ||
- Bower `bower install --save Han` | ||
- Component `component install ethantw/Han` | ||
- Rails `gem install 'hanzi-rails'`([詳細說明](https://github.com/billy3321/hanzi-rails)) | ||
@@ -36,3 +35,3 @@ | ||
````html | ||
<link rel="stylesheet" media="all" href="//cdnjs.cloudflare.com/ajax/libs/Han/3.2.7/han.min.css"> | ||
<link rel="stylesheet" media="all" href="//cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/han.min.css"> | ||
```` | ||
@@ -43,3 +42,3 @@ | ||
````html | ||
<script src="//cdnjs.cloudflare.com/ajax/libs/Han/3.2.7/han.min.js"></script> | ||
<script src="//cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/han.min.js"></script> | ||
```` | ||
@@ -49,4 +48,4 @@ | ||
- WOFF `//cdnjs.cloudflare.com/ajax/libs/Han/3.2.7/font/han.woff` | ||
- OTF `//cdnjs.cloudflare.com/ajax/libs/Han/3.2.7/font/han.otf` | ||
- WOFF `//cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/font/han.woff` | ||
- OTF `//cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/font/han.otf` | ||
@@ -71,13 +70,13 @@ ## 使用方式 | ||
- Google Chrome(最新版) | ||
- Mozilla Firefox(最新版) | ||
- Mozilla Firefox ESR+ | ||
- Opera Next(最新版) | ||
- Apple Safari 7+ | ||
- Microsoft Edge | ||
- Internet Explorer 10+ | ||
- Chrome(最新版) | ||
- Edge(最新版) | ||
- Firefox(最新版) | ||
- Firefox ESR+ | ||
- Internet Explorer 11 | ||
- Opera(最新版) | ||
- Safari 9 | ||
## 開發需求與指令 | ||
- io.js/Node.js | ||
- Node.js | ||
- LiveScript 1.4.0(`sudo npm install -g livescript`) | ||
@@ -94,4 +93,4 @@ | ||
* * * | ||
「漢字標準格式」版本:v3.2.7 | ||
本頁最後修改於:2015-10-26 23:19(UTC+8) | ||
「漢字標準格式」版本:v3.3.0 | ||
本頁最後修改於:2016-3-19 00:11(UTC+8) | ||
@@ -20,11 +20,11 @@ define([ | ||
/* 'jinzify', */ | ||
'renderJiya', | ||
'renderHanging', | ||
'renderJiya', | ||
// Address Biaodian correction | ||
'correctBiaodian', | ||
// Address Hanzi and Western script mixed spacing | ||
'renderHWS', | ||
// Address Basic Biaodian correction in Firefox | ||
'correctBasicBD', | ||
// Address presentational correction to combining ligatures | ||
@@ -83,13 +83,19 @@ 'substCombLigaWithPUA' | ||
var it = this | ||
var routine = Array.isArray( routine ) ? routine : this.routine | ||
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 ) {} | ||
if ( | ||
typeof method === 'string' && | ||
typeof it[ method ] === 'function' | ||
) { | ||
it[ method ]() | ||
} else if ( | ||
Array.isArray( method ) && | ||
typeof it[ method[0] ] === 'function' | ||
) { | ||
it[ method.shift() ].apply( it, method ) | ||
} | ||
}) | ||
@@ -96,0 +102,0 @@ return this |
@@ -9,33 +9,78 @@ define([ | ||
function createBdGroup( portion, match ) { | ||
var elem = $.create( 'h-char-group', 'biaodian cjk' ) | ||
var isNodeNormalizeNormal = (function() { | ||
//// 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 div = $.create( 'div' ) | ||
if ( portion.index === 0 && portion.isEnd ) { | ||
elem.innerHTML = match[0] | ||
} else { | ||
elem.innerHTML = portion.text | ||
elem.classList.add( 'portion' ) | ||
div.appendChild($.create( '', '0-' )) | ||
div.appendChild($.create( '', '2' )) | ||
div.normalize() | ||
if ( portion.index === 0 ) { | ||
elem.classList.add( 'isFirst' ) | ||
} else if ( portion.isEnd ) { | ||
elem.classList.add( 'isEnd' ) | ||
} | ||
} | ||
return elem | ||
return div.firstChild.length !== 2 | ||
})() | ||
function getFuncOrElmt( obj ) { | ||
return ( | ||
typeof obj === 'function' || | ||
obj instanceof Element | ||
) | ||
? obj | ||
: undefined | ||
} | ||
function createBdChar( char ) { | ||
var div = $.create( 'div' ) | ||
function createBDGroup( portion ) { | ||
var clazz = portion.index === 0 && portion.isEnd | ||
? 'biaodian cjk' | ||
: 'biaodian cjk portion ' + ( | ||
portion.index === 0 | ||
? 'is-first' | ||
: portion.isEnd | ||
? 'is-end' | ||
: 'is-inner' | ||
) | ||
var $elmt = $.create( 'h-char-group', clazz ) | ||
$elmt.innerHTML = portion.text | ||
return $elmt | ||
} | ||
function createBDChar( char ) { | ||
var div = $.create( 'div' ) | ||
var unicode = char.charCodeAt( 0 ).toString( 16 ) | ||
var clazz = 'biaodian cjk ' + ( char.match( TYPESET.char.biaodian.open ) ? 'bd-open' : | ||
char.match( TYPESET.char.biaodian.close ) ? 'bd-close bd-end' : | ||
char.match( TYPESET.char.biaodian.end ) ? 'bd-end' : | ||
char.match( new RegExp( '(' + UNICODE.biaodian.liga + ')' )) ? 'bd-liga' : '' ) | ||
div.innerHTML = '<h-char unicode="' + unicode + '" class="' + clazz + '">' + char + '</h-char>' | ||
div.innerHTML = ( | ||
'<h-char unicode="' + unicode + | ||
'" class="biaodian cjk ' + getBDType( char ) + | ||
'">' + char + '</h-char>' | ||
) | ||
return div.firstChild | ||
} | ||
function getBDType( char ) { | ||
return char.match( TYPESET.char.biaodian.open ) | ||
? 'bd-open' | ||
: char.match( TYPESET.char.biaodian.close ) | ||
? 'bd-close bd-end' | ||
: char.match( TYPESET.char.biaodian.end ) | ||
? ( | ||
/(?:\u3001|\u3002|\uff0c)/i.test( char ) | ||
? 'bd-end bd-cop' | ||
: 'bd-end' | ||
) | ||
: char.match(new RegExp( UNICODE.biaodian.liga )) | ||
? 'bd-liga' | ||
: char.match(new RegExp( UNICODE.biaodian.middle )) | ||
? 'bd-middle' | ||
: '' | ||
} | ||
$.extend( Fibre.fn, { | ||
normalize: function() { | ||
if ( isNodeNormalizeNormal ) { | ||
this.context.normalize() | ||
} | ||
return this | ||
}, | ||
// Force punctuation & biaodian typesetting rules to be applied. | ||
@@ -96,14 +141,15 @@ jinzify: function( selector ) { | ||
this.avoid( 'h-hangable, h-char-group, h-word' ) | ||
this.avoid( 'h-word, h-char-group' ) | ||
if ( option.biaodian ) { | ||
this.replace( | ||
TYPESET.group.biaodian[ 0 ], createBdGroup | ||
TYPESET.group.biaodian[0], createBDGroup | ||
).replace( | ||
TYPESET.group.biaodian[ 1 ], createBdGroup | ||
TYPESET.group.biaodian[1], createBDGroup | ||
) | ||
} | ||
if ( option.hanzi || option.cjk ) { | ||
this.wrap( | ||
TYPESET.group.hanzi, $.clone( $.create( 'h-char-group', 'hanzi cjk' )) | ||
TYPESET.group.hanzi, $.clone($.create( 'h-char-group', 'hanzi cjk' )) | ||
) | ||
@@ -113,3 +159,3 @@ } | ||
this.wrap( | ||
TYPESET.group.western, $.clone( $.create( 'h-word', 'western' )) | ||
TYPESET.group.western, $.clone($.create( 'h-word', 'western' )) | ||
) | ||
@@ -119,3 +165,3 @@ } | ||
this.wrap( | ||
TYPESET.group.kana, $.clone( $.create( 'h-char-group', 'kana' )) | ||
TYPESET.group.kana, $.clone($.create( 'h-char-group', 'kana' )) | ||
) | ||
@@ -125,3 +171,3 @@ } | ||
this.wrap( | ||
TYPESET.group.eonmun, $.clone( $.create( 'h-word', 'eonmun hangul' )) | ||
TYPESET.group.eonmun, $.clone($.create( 'h-word', 'eonmun hangul' )) | ||
) | ||
@@ -136,2 +182,3 @@ } | ||
var option = $.extend({ | ||
avoid: true, | ||
biaodian: false, | ||
@@ -147,3 +194,5 @@ punct: false, | ||
this.avoid( 'h-char' ) | ||
if ( option.avoid ) { | ||
this.avoid( 'h-char' ) | ||
} | ||
@@ -153,6 +202,10 @@ if ( option.biaodian ) { | ||
TYPESET.char.biaodian.all, | ||
function( portion, match ) { return createBdChar( match[0] ) } | ||
getFuncOrElmt( option.biaodian ) | ||
|| | ||
function( portion ) { return createBDChar( portion.text ) } | ||
).replace( | ||
TYPESET.char.biaodian.liga, | ||
function( portion, match ) { return createBdChar( match[0] ) } | ||
getFuncOrElmt( option.biaodian ) | ||
|| | ||
function( portion ) { return createBDChar( portion.text ) } | ||
) | ||
@@ -162,3 +215,6 @@ } | ||
this.wrap( | ||
TYPESET.char.hanzi, $.clone( $.create( 'h-char', 'hanzi cjk' )) | ||
TYPESET.char.hanzi, | ||
getFuncOrElmt( option.hanzi || option.cjk ) | ||
|| | ||
$.clone($.create( 'h-char', 'hanzi cjk' )) | ||
) | ||
@@ -168,3 +224,6 @@ } | ||
this.wrap( | ||
TYPESET.char.punct.all, $.clone( $.create( 'h-char', 'punct' )) | ||
TYPESET.char.punct.all, | ||
getFuncOrElmt( option.punct ) | ||
|| | ||
$.clone($.create( 'h-char', 'punct' )) | ||
) | ||
@@ -174,3 +233,6 @@ } | ||
this.wrap( | ||
TYPESET.char.latin, $.clone( $.create( 'h-char', 'alphabet latin' )) | ||
TYPESET.char.latin, | ||
getFuncOrElmt( option.latin ) | ||
|| | ||
$.clone($.create( 'h-char', 'alphabet latin' )) | ||
) | ||
@@ -180,3 +242,6 @@ } | ||
this.wrap( | ||
TYPESET.char.ellinika, $.clone( $.create( 'h-char', 'alphabet ellinika greek' )) | ||
TYPESET.char.ellinika, | ||
getFuncOrElmt( option.ellinika || option.greek ) | ||
|| | ||
$.clone($.create( 'h-char', 'alphabet ellinika greek' )) | ||
) | ||
@@ -186,3 +251,6 @@ } | ||
this.wrap( | ||
TYPESET.char.kirillica, $.clone( $.create( 'h-char', 'alphabet kirillica cyrillic' )) | ||
TYPESET.char.kirillica, | ||
getFuncOrElmt( option.kirillica || option.cyrillic ) | ||
|| | ||
$.clone($.create( 'h-char', 'alphabet kirillica cyrillic' )) | ||
) | ||
@@ -192,3 +260,6 @@ } | ||
this.wrap( | ||
TYPESET.char.kana, $.clone( $.create( 'h-char', 'kana' )) | ||
TYPESET.char.kana, | ||
getFuncOrElmt( option.kana ) | ||
|| | ||
$.clone($.create( 'h-char', 'kana' )) | ||
) | ||
@@ -198,3 +269,6 @@ } | ||
this.wrap( | ||
TYPESET.char.eonmun, $.clone( $.create( 'h-char', 'eonmun hangul' )) | ||
TYPESET.char.eonmun, | ||
getFuncOrElmt( option.eonmun || option.hangul ) | ||
|| | ||
$.clone($.create( 'h-char', 'eonmun hangul' )) | ||
) | ||
@@ -208,4 +282,11 @@ } | ||
Han.find = Fibre | ||
$.extend( Han, { | ||
isNodeNormalizeNormal: isNodeNormalizeNormal, | ||
find: Fibre, | ||
createBDGroup: createBDGroup, | ||
createBDChar: createBDChar | ||
}) | ||
$.matches = Han.find.matches | ||
void [ | ||
@@ -212,0 +293,0 @@ 'setMode', |
@@ -1,2 +0,1 @@ | ||
define([ | ||
@@ -8,2 +7,3 @@ './core', | ||
'./typeface', | ||
'./typography', | ||
'./inline', | ||
@@ -10,0 +10,0 @@ './dom-ready', |
@@ -6,3 +6,2 @@ define([ | ||
'./inline/jiya', | ||
'./inline/basic-bd', | ||
'./inline/subst' | ||
@@ -9,0 +8,0 @@ ], function( Han ) { |
define([ | ||
'../core', | ||
'../method' | ||
'../method', | ||
'../find' | ||
], function( Han, $ ) { | ||
var HANGABLE_CLASS = 'bd-hangable' | ||
var HANGABLE_AVOID = 'h-char.bd-hangable' | ||
var HANGABLE_CS_HTML = '<h-cs hidden class="jinze-outer hangable-outer"> </h-cs>' | ||
var matches = Han.find.matches | ||
function detectSpaceFont() { | ||
@@ -13,44 +20,84 @@ var div = $.create( 'div' ) | ||
ret = div.firstChild.offsetWidth !== div.lastChild.offsetWidth | ||
$.remove( div, body ) | ||
$.remove( div ) | ||
return ret | ||
} | ||
function insertHangableCS( $jinze ) { | ||
var $cs = $jinze.nextSibling | ||
if ( $cs && matches( $cs, 'h-cs.jinze-outer' )) { | ||
$cs.classList.add( 'hangable-outer' ) | ||
} else { | ||
$jinze.insertAdjacentHTML( | ||
'afterend', | ||
HANGABLE_CS_HTML | ||
) | ||
} | ||
} | ||
Han.support['han-space'] = detectSpaceFont() | ||
$.extend( Han, { | ||
detectSpaceFont: detectSpaceFont, | ||
isSpaceFontLoaded: detectSpaceFont() | ||
}) | ||
isSpaceFontLoaded: detectSpaceFont(), | ||
Han.support['han-space'] = detectSpaceFont() | ||
renderHanging: function( context ) { | ||
var context = context || document | ||
var finder = Han.find( context ) | ||
Han.renderHanging = function( context ) { | ||
var context = context || document | ||
var finder = Han.find( context ) | ||
finder | ||
.avoid( 'textarea, code, kbd, samp, pre' ) | ||
.avoid( HANGABLE_AVOID ) | ||
.replace( | ||
TYPESET.jinze.hanging, | ||
function( portion ) { | ||
if ( /^[\x20\t\r\n\f]+$/.test( portion.text )) { | ||
return '' | ||
} | ||
finder | ||
.avoid( 'textarea, code, kbd, samp, pre, h-hangable' ) | ||
.replace( | ||
TYPESET.jinze.hanging, | ||
function( portion, match ) { | ||
var elem = $.create( 'h-hangable' ) | ||
elem.innerHTML = match[1] + '<h-cs><h-inner hidden> </h-inner><h-char class="biaodian bd-close bd-end cjk">' + match[2] + '</h-char></h-cs>' | ||
return portion.index === 0 ? elem : '' | ||
} | ||
) | ||
var $elmt = portion.node.parentNode | ||
var $jinze, $new, $bd, biaodian | ||
return finder | ||
} | ||
if ( $jinze = $.parent( $elmt, 'h-jinze' )) { | ||
insertHangableCS( $jinze ) | ||
} | ||
biaodian = portion.text.trim() | ||
$new = Han.createBDChar( biaodian ) | ||
$new.innerHTML = '<h-inner>' + biaodian + '</h-inner>' | ||
$new.classList.add( HANGABLE_CLASS ) | ||
$bd = $.parent( $elmt, 'h-char.biaodian' ) | ||
return !$bd | ||
? $new | ||
: (function() { | ||
$bd.classList.add( HANGABLE_CLASS ) | ||
return matches( $elmt, 'h-inner, h-inner *' ) | ||
? biaodian | ||
: $new.firstChild | ||
})() | ||
} | ||
) | ||
return finder | ||
} | ||
}) | ||
$.extend( Han.fn, { | ||
hanging: null, | ||
renderHanging: function() { | ||
var condClazz = this.condition.classList | ||
var isSpaceFontLoaded = detectSpaceFont() | ||
var classList = this.condition.classList | ||
Han.isSpaceFontLoaded = detectSpaceFont() | ||
if ( isSpaceFontLoaded && condClazz.contains( 'no-han-space' )) { | ||
condClazz.remove( 'no-han-space' ) | ||
condClazz.add( 'han-space' ) | ||
if ( | ||
Han.isSpaceFontLoaded && | ||
classList.contains( 'no-han-space' ) | ||
) { | ||
classList.remove( 'no-han-space' ) | ||
classList.add( 'han-space' ) | ||
} | ||
this.hanging = Han.renderHanging( this.context ) | ||
Han.renderHanging( this.context ) | ||
return this | ||
@@ -60,5 +107,10 @@ }, | ||
revertHanging: function() { | ||
try { | ||
this.hanging.revert( 'all' ) | ||
} catch ( e ) {} | ||
$.qsa( | ||
'h-char.bd-hangable, h-cs.hangable-outer', | ||
this.context | ||
).forEach(function( $elmt ) { | ||
var classList = $elmt.classList | ||
classList.remove( 'bd-hangable' ) | ||
classList.remove( 'hangable-outer' ) | ||
}) | ||
return this | ||
@@ -65,0 +117,0 @@ } |
@@ -7,97 +7,111 @@ define([ | ||
var QUERY_HWS_AS_FIRST_CHILD = '* > h-hws:first-child, * > wbr:first-child + h-hws, wbr:first-child + wbr + h-hws' | ||
var hws = '<<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' ) | ||
var $hws = $.create( 'h-hws' ) | ||
$hws.setAttribute( 'hidden', '' ) | ||
$hws.innerHTML = ' ' | ||
div.appendChild( $.create( '', '0-' )) | ||
div.appendChild( $.create( '', '2' )) | ||
div.normalize() | ||
function sharingSameParent( $a, $b ) { | ||
return $a && $b && $a.parentNode === $b.parentNode | ||
} | ||
return div.firstChild.length !== 2 | ||
})() | ||
function properlyPlaceHWSBehind( $node, text ) { | ||
var $elmt = $node | ||
var text = text || '' | ||
var hws = $.create( 'h-hws' ) | ||
hws.setAttribute( 'hidden', '' ) | ||
hws.innerHTML = ' ' | ||
if ( | ||
$.isElmt( $node.nextSibling ) || | ||
sharingSameParent( $node, $node.nextSibling ) | ||
) { | ||
return text + hws | ||
} else { | ||
// One of the parental elements of the current text | ||
// node would definitely have a next sibling, since | ||
// it is of the first portion and not `isEnd`. | ||
while ( !$elmt.nextSibling ) { | ||
$elmt = $elmt.parentNode | ||
} | ||
if ( $node !== $elmt ) { | ||
$elmt.insertAdjacentHTML( 'afterEnd', '<h-hws hidden> </h-hws>' ) | ||
} | ||
} | ||
return text | ||
} | ||
$.extend( Han, { | ||
isNodeNormalizeNormal: isNodeNormalizeNormal, | ||
function firstStepLabel( portion, mat ) { | ||
return portion.isEnd && portion.index === 0 | ||
? mat[1] + hws + mat[2] | ||
: portion.index === 0 | ||
? properlyPlaceHWSBehind( portion.node, portion.text ) | ||
: portion.text | ||
} | ||
renderHWS: function( context, strict ) { | ||
var context = context || document | ||
var mode = strict ? 'strict' : 'base' | ||
var finder = Han.find( context ) | ||
function real$hwsElmt( portion ) { | ||
return portion.index === 0 | ||
? $.clone( $hws ) | ||
: '' | ||
} | ||
// Elements to be filtered according to the | ||
// HWS rendering mode | ||
if ( strict ) { | ||
finder.avoid( 'textarea, code, kbd, samp, pre' ) | ||
} else { | ||
finder.avoid( 'textarea' ) | ||
} | ||
var last$hwsIdx | ||
finder | ||
.replace( Han.TYPESET.hws[ mode ][0], '$1<hws/>$2' ) | ||
.replace( Han.TYPESET.hws[ mode ][1], '$1<hws/>$2' ) | ||
function apostrophe( portion ) { | ||
var $elmt = portion.node.parentNode | ||
// Deal with [' 字'], [" 字"] => ['字'], ["字"] | ||
.replace( /(['"]+)<hws\/>(.+?)<hws\/>\1/ig, '$1$2$1' ) | ||
if ( portion.index === 0 ) { | ||
last$hwsIdx = portion.endIndexInNode-2 | ||
} | ||
// Remove all `<hws/>` pre/post [“字”] and [‘字’] | ||
// See: https://github.com/ethantw/Han/issues/59 | ||
.replace( /<hws\/>([‘“]+)/ig, '$1' ) | ||
.replace( /([’”]+)<hws\/>/ig, '$1' ) | ||
if ( | ||
$elmt.nodeName.toLowerCase() === 'h-hws' && ( | ||
portion.index === 1 || portion.indexInMatch === last$hwsIdx | ||
)) { | ||
$elmt.classList.add( 'quote-inner' ) | ||
} | ||
return portion.text | ||
} | ||
// Convert text nodes `<hws/>` into real element nodes | ||
.replace( '<hws/>', function() { | ||
return $.clone( hws ) | ||
}) | ||
function curveQuote( portion ) { | ||
var $elmt = portion.node.parentNode | ||
// Deal with: | ||
// `漢<u><hws/>zi</u>` => `漢<hws/><u>zi</u>` | ||
$ | ||
.qsa( QUERY_HWS_AS_FIRST_CHILD, context ) | ||
.forEach(function( firstChild ) { | ||
var parent = firstChild.parentNode | ||
var target = parent.firstChild | ||
if ( $elmt.nodeName.toLowerCase() === 'h-hws' ) { | ||
$elmt.classList.add( 'quote-outer' ) | ||
} | ||
return portion.text | ||
} | ||
// Skip all `<wbr>` and comments | ||
while ( $.isIgnorable( target )) { | ||
target = target.nextSibling | ||
$.extend( Han, { | ||
renderHWS: function( context, strict ) { | ||
// Elements to be filtered according to the | ||
// HWS rendering mode. | ||
var AVOID = strict | ||
? 'textarea, code, kbd, samp, pre' | ||
: 'textarea' | ||
if ( !target ) return | ||
} | ||
var mode = strict ? 'strict' : 'base' | ||
var context = context || document | ||
var finder = Han.find( context ) | ||
// 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 === 'H-HWS' ) { | ||
$.remove( target, parent ) | ||
finder | ||
.avoid( AVOID ) | ||
target = parent.parentNode.insertBefore( $.clone( hws ), parent ) | ||
parent = parent.parentNode | ||
// Basic situations: | ||
// - 字a => 字<hws/>a | ||
// - A字 => A<hws/>字 | ||
.replace( Han.TYPESET.hws[ mode ][0], firstStepLabel ) | ||
.replace( Han.TYPESET.hws[ mode ][1], firstStepLabel ) | ||
if ( isNodeNormalizeNormal ) { | ||
parent.normalize() | ||
} | ||
// Convert text nodes `<hws/>` into real element nodes: | ||
.replace( new RegExp( '(' + hws + ')+', 'g' ), real$hwsElmt ) | ||
// This is for extreme circumstances, i.e., | ||
// `漢<a><b><c><h-hws/>zi</c></b></a>` => | ||
// `漢<h-hws/><a><b><c>zi</c></b></a>` | ||
if ( target !== parent.firstChild ) { | ||
break | ||
} | ||
} | ||
}) | ||
// Deal with: | ||
// - '<hws/>字<hws/>' => '字' | ||
// - "<hws/>字<hws/>" => "字" | ||
.replace( /([\'"])\s(.+?)\s\1/g, apostrophe ) | ||
// Normalise nodes we messed up with | ||
if ( isNodeNormalizeNormal ) { | ||
context.normalize() | ||
} | ||
// Deal with: | ||
// - <hws/>“字”<hws/> | ||
// - <hws/>‘字’<hws/> | ||
.replace( /\s[‘“]/g, curveQuote ) | ||
.replace( /[’”]\s/g, curveQuote ) | ||
.normalize() | ||
@@ -110,8 +124,4 @@ // Return the finder instance for future usage | ||
$.extend( Han.fn, { | ||
HWS: null, | ||
renderHWS: function( strict ) { | ||
Han.renderHWS( this.context, strict ) | ||
this.HWS = $.tag( 'h-hws', this.context ) | ||
return this | ||
@@ -121,5 +131,7 @@ }, | ||
revertHWS: function() { | ||
this.HWS.forEach(function( hws ) { | ||
$.tag( 'h-hws', this.context ) | ||
.forEach(function( hws ) { | ||
$.remove( hws ) | ||
}) | ||
this.HWS = [] | ||
return this | ||
@@ -126,0 +138,0 @@ } |
define([ | ||
'../core', | ||
'../method', | ||
'../regex/unicode' | ||
'../regex/unicode', | ||
'../find' | ||
], function( Han, $, UNICODE ) { | ||
var JIYA_CLASS = 'bd-jiya' | ||
var JIYA_AVOID = 'h-char.bd-jiya' | ||
var CONSECUTIVE_CLASS = 'bd-consecutive' | ||
var JIYA_CS_HTML = '<h-cs hidden class="jinze-outer jiya-outer"> </h-cs>' | ||
var matches = Han.find.matches | ||
function trimBDClass( clazz ) { | ||
return clazz.replace( | ||
/(biaodian|cjk|bd-jiya|bd-consecutive|bd-hangable)/gi, '' | ||
).trim() | ||
} | ||
function charifyBiaodian( portion ) { | ||
var biaodian = portion.text | ||
var $elmt = portion.node.parentNode | ||
var $bd = $.parent( $elmt, 'h-char.biaodian' ) | ||
var $new = Han.createBDChar( biaodian ) | ||
var $jinze | ||
$new.innerHTML = '<h-inner>' + biaodian + '</h-inner>' | ||
$new.classList.add( JIYA_CLASS ) | ||
if ( $jinze = $.parent( $elmt, 'h-jinze' )) { | ||
insertJiyaCS( $jinze ) | ||
} | ||
return !$bd | ||
? $new | ||
: (function() { | ||
$bd.classList.add( JIYA_CLASS ) | ||
return matches( $elmt, 'h-inner, h-inner *' ) | ||
? biaodian | ||
: $new.firstChild | ||
})() | ||
} | ||
var prevBDType, $$prevCS | ||
function locateConsecutiveBD( portion ) { | ||
var prev = prevBDType | ||
var $elmt = portion.node.parentNode | ||
var $bd = $.parent( $elmt, 'h-char.biaodian' ) | ||
var $jinze = $.parent( $bd, 'h-jinze' ) | ||
var classList | ||
classList = $bd.classList | ||
if ( prev ) { | ||
$bd.setAttribute( 'prev', prev ) | ||
} | ||
if ( $$prevCS && classList.contains( 'bd-open' )) { | ||
$$prevCS.pop().setAttribute( 'next', 'bd-open' ) | ||
} | ||
$$prevCS = undefined | ||
if ( portion.isEnd ) { | ||
prevBDType = undefined | ||
classList.add( CONSECUTIVE_CLASS, 'end-portion' ) | ||
} else { | ||
prevBDType = trimBDClass($bd.getAttribute( 'class' )) | ||
classList.add( CONSECUTIVE_CLASS ) | ||
} | ||
if ( $jinze ) { | ||
$$prevCS = locateCS( $jinze, { | ||
prev: prev, | ||
'class': trimBDClass($bd.getAttribute( 'class' )) | ||
}) | ||
} | ||
return portion.text | ||
} | ||
function insertJiyaCS( $jinze ) { | ||
if ( | ||
matches( $jinze, '.tou, .touwei' ) && | ||
!matches( $jinze.previousSibling, 'h-cs.jiya-outer' ) | ||
) { | ||
$jinze.insertAdjacentHTML( 'beforebegin', JIYA_CS_HTML ) | ||
} | ||
if ( | ||
matches( $jinze, '.wei, .touwei' ) && | ||
!matches( $jinze.nextSibling, 'h-cs.jiya-outer' ) | ||
) { | ||
$jinze.insertAdjacentHTML( 'afterend', JIYA_CS_HTML ) | ||
} | ||
} | ||
function locateCS( $jinze, attr ) { | ||
var $prev, $next | ||
if (matches( $jinze, '.tou, .touwei' )) { | ||
$prev = $jinze.previousSibling | ||
if (matches( $prev, 'h-cs' )) { | ||
$prev.className = 'jinze-outer jiya-outer' | ||
$prev.setAttribute( 'prev', attr.prev ) | ||
} | ||
} | ||
if (matches( $jinze, '.wei, .touwei' )) { | ||
$next = $jinze.nextSibling | ||
if (matches( $next, 'h-cs' )) { | ||
$next.className = 'jinze-outer jiya-outer ' + attr[ 'class' ] | ||
$next.removeAttribute( 'prev' ) | ||
} | ||
} | ||
return [ $prev, $next ] | ||
} | ||
Han.renderJiya = function( context ) { | ||
@@ -12,33 +126,16 @@ var context = context || document | ||
finder | ||
.avoid( 'textarea, code, kbd, samp, pre, h-char-group' ) | ||
.replace( | ||
// This is a safeguard against hanging rendering | ||
new RegExp( '(' + UNICODE.biaodian.end + '+)(' + UNICODE.biaodian.open + '+)', 'g' ), | ||
function( portion, match ) { | ||
if ( portion.index === 0 ) return portion.isEnd ? match[0] : match[1] | ||
.avoid( 'textarea, code, kbd, samp, pre, h-cs' ) | ||
var elem = $.create( 'h-char-group', 'biaodian cjk portion' ) | ||
elem.innerHTML = match[2] | ||
return elem | ||
} | ||
) | ||
.avoid( JIYA_AVOID ) | ||
.charify({ | ||
avoid: false, | ||
biaodian: charifyBiaodian | ||
}) | ||
// End avoiding `JIYA_AVOID`: | ||
.endAvoid() | ||
finder | ||
.avoid( 'textarea, code, kbd, samp, pre, h-char' ) | ||
.groupify({ biaodian: true }) | ||
.charify({ biaodian: true }) | ||
.avoid( 'textarea, code, kbd, samp, pre, h-cs' ) | ||
.replace( TYPESET.group.biaodian[0], locateConsecutiveBD ) | ||
.replace( TYPESET.group.biaodian[1], locateConsecutiveBD ) | ||
// The reason we're doing this instead of using pseudo elements in CSS | ||
// is because WebKit has problem rendering pseudo elements containing only | ||
// space. | ||
$.qsa( 'h-char.biaodian.bd-open, h-char.biaodian.bd-end', context ) | ||
.forEach(function( elem ) { | ||
if ( Han.find.matches( elem, 'h-cs *' )) return | ||
var html = '<h-inner>' + elem.innerHTML + '</h-inner>' | ||
var hcs = '<h-cs hidden> </h-cs>' | ||
var isOpen = elem.classList.contains( 'bd-open' ) | ||
elem.innerHTML = isOpen ? hcs + html : html + hcs | ||
}) | ||
return finder | ||
@@ -48,6 +145,4 @@ } | ||
$.extend( Han.fn, { | ||
jiya: null, | ||
renderJiya: function() { | ||
this.jiya = Han.renderJiya( this.context ) | ||
Han.renderJiya( this.context ) | ||
return this | ||
@@ -57,5 +152,10 @@ }, | ||
revertJiya: function() { | ||
try { | ||
this.jiya.revert( 'all' ) | ||
} catch ( e ) {} | ||
$.qsa( | ||
'h-char.bd-jiya, h-cs.jiya-outer', | ||
this.context | ||
).forEach(function( $elmt ) { | ||
var classList = $elmt.classList | ||
classList.remove( 'bd-jiya' ) | ||
classList.remove( 'jiya-outer' ) | ||
}) | ||
return this | ||
@@ -62,0 +162,0 @@ } |
@@ -12,3 +12,3 @@ /*! | ||
// AMD | ||
} else if ( typeof define === 'function' && define.amd ) { | ||
} else if ( typeof define === 'function' && define.amd ) { | ||
define(function() { return factory( global, true ) }) | ||
@@ -15,0 +15,0 @@ // Global namespace |
@@ -24,28 +24,30 @@ define([ | ||
// Traverse target elements (those with text-decoration- | ||
// line) to see if we should address spacing in | ||
// between for semantic presentation. | ||
// Traverse all target elements and address | ||
// presentational corrections if any two of | ||
// them are adjacent to each other. | ||
renderDecoLine: function( context, target ) { | ||
var target = target || 'u, ins' | ||
var $target = $.qsa( target, context ) | ||
var rTarget = new RegExp( '^(' + target.replace(/\,\s?/g, '|') + ')$', 'ig' ) | ||
var $$target = $.qsa( target || 'u, ins', context ) | ||
var i = $$target.length | ||
$target | ||
.forEach(function( elem ) { | ||
var next | ||
traverse: while ( i-- ) { | ||
var $this = $$target[ i ] | ||
var $prev = null | ||
// Ignore all `<wbr>` and comments in between | ||
do { | ||
next = ( next || elem ).nextSibling | ||
if ( !next ) return | ||
} while ( $.isIgnorable( next )) | ||
// Ignore all `<wbr>` and comments in between, | ||
// and add class `.adjacent` once two targets | ||
// are next to each other. | ||
ignore: do { | ||
$prev = ( $prev || $this ).previousSibling | ||
if ( next.nodeName.match( rTarget )) { | ||
next.classList.add( 'adjacent' ) | ||
} | ||
}) | ||
if ( !$prev ) { | ||
continue traverse | ||
} else if ( $$target[ i-1 ] === $prev ) { | ||
$this.classList.add( 'adjacent' ) | ||
} | ||
} while ( $.isIgnorable( $prev )) | ||
} | ||
}, | ||
// Traverse target elements to render Hanzi emphasis marks | ||
// and skip that in punctuation | ||
// Traverse all target elements to render | ||
// emphasis marks. | ||
renderEm: function( context, target ) { | ||
@@ -62,3 +64,3 @@ var method = target ? 'qsa' : 'tag' | ||
$elem | ||
.avoid( 'rt, h-char, h-char-group' ) | ||
.avoid( 'rt, h-char' ) | ||
.charify({ biaodian: true, punct: true }) | ||
@@ -69,3 +71,3 @@ } else { | ||
.jinzify() | ||
.groupify({ western: true, biaodian: true }) | ||
.groupify({ western: true }) | ||
.charify({ | ||
@@ -72,0 +74,0 @@ hanzi: true, |
define(function() { | ||
var $ = { | ||
// Simplified query selectors which return the node list | ||
// in an array | ||
id: function( selector, context ) { | ||
return ( context || document ).getElementById( selector ) | ||
/** | ||
* Query selectors which return arrays of the resulted | ||
* node lists. | ||
*/ | ||
id: function( selector, $context ) { | ||
return ( $context || document ).getElementById( selector ) | ||
}, | ||
tag: function( selector, context ) { | ||
tag: function( selector, $context ) { | ||
return this.makeArray( | ||
( context || document ).getElementsByTagName( selector ) | ||
( $context || document ).getElementsByTagName( selector ) | ||
) | ||
}, | ||
qsa: function( selector, context ) { | ||
qs: function( selector, $context ) { | ||
return ( $context || document ).querySelector( selector ) | ||
}, | ||
qsa: function( selector, $context ) { | ||
return this.makeArray( | ||
( context || document ).querySelectorAll( selector ) | ||
( $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 ) | ||
parent: function( $node, selector ) { | ||
return selector | ||
? (function() { | ||
if ( typeof $.matches !== 'function' ) return | ||
while (!$.matches( $node, selector )) { | ||
if ( | ||
!$node || | ||
$node === document.documentElement | ||
) { | ||
$node = undefined | ||
break | ||
} | ||
$node = $node.parentNode | ||
} | ||
return $node | ||
})() | ||
: $node | ||
? $node.parentNode : undefined | ||
}, | ||
/** | ||
* Create a document fragment, a text node with text | ||
* or an element with/without classes. | ||
*/ | ||
create: function( name, clazz ) { | ||
var $elmt = '!' === name | ||
? document.createDocumentFragment() | ||
: '' === name | ||
? document.createTextNode( clazz || '' ) | ||
: document.createElement( name ) | ||
try { | ||
if ( clazz ) { | ||
elem.className = clazz | ||
$elmt.className = clazz | ||
} | ||
} catch (e) {} | ||
return elem | ||
return $elmt | ||
}, | ||
// Clone a node (text, element or fragment) deeply or | ||
// childlessly | ||
clone: function( node, deep ) { | ||
return node.cloneNode( typeof deep === 'boolean' ? deep : true ) | ||
/** | ||
* Clone a DOM node (text, element or fragment) deeply | ||
* or childlessly. | ||
*/ | ||
clone: function( $node, deep ) { | ||
return $node.cloneNode( | ||
typeof deep === 'boolean' | ||
? deep | ||
: true | ||
) | ||
}, | ||
// Remove a node (text, element or fragment) | ||
remove: function( node ) { | ||
return node.parentNode.removeChild( node ) | ||
/** | ||
* Remove a node (text, element or fragment). | ||
*/ | ||
remove: function( $node ) { | ||
return $node.parentNode.removeChild( $node ) | ||
}, | ||
// Set attributes all in once with an object | ||
/** | ||
* Set attributes all in once with an object. | ||
*/ | ||
setAttr: function( target, attr ) { | ||
if ( typeof attr !== 'object' ) return | ||
if ( typeof attr !== 'object' ) return | ||
var len = attr.length | ||
// Native NamedNodeMap | ||
if ( typeof attr[ 0 ] === 'object' && 'name' in attr[ 0 ] ) { | ||
// Native `NamedNodeMap``: | ||
if ( | ||
typeof attr[0] === 'object' && | ||
'name' in attr[0] | ||
) { | ||
for ( var i = 0; i < len; i++ ) { | ||
@@ -64,6 +106,9 @@ if ( attr[ i ].value !== undefined ) { | ||
// Plain object | ||
// Plain object: | ||
} else { | ||
for ( var name in attr ) { | ||
if ( attr.hasOwnProperty( name ) && attr[ name ] !== undefined ) { | ||
if ( | ||
attr.hasOwnProperty( name ) && | ||
attr[ name ] !== undefined | ||
) { | ||
target.setAttribute( name, attr[ name ] ) | ||
@@ -76,25 +121,43 @@ } | ||
// Return if the current node should be ignored, | ||
// `<wbr>` or comments | ||
isIgnorable: function( node ) { | ||
return node.nodeName === 'WBR' || node.nodeType === Node.COMMENT_NODE | ||
/** | ||
* Indicate whether or not the given node is an | ||
* element. | ||
*/ | ||
isElmt: function( $node ) { | ||
return $node && $node.nodeType === Node.ELEMENT_NODE | ||
}, | ||
// Convert array-like objects into real arrays | ||
// for the native prototype methods | ||
makeArray: function( obj ) { | ||
return Array.prototype.slice.call( obj ) | ||
/** | ||
* Indicate whether or not the given node should | ||
* be ignored (`<wbr>` or comments). | ||
*/ | ||
isIgnorable: function( $node ) { | ||
if ( !$node ) return false | ||
return ( | ||
$node.nodeName === 'WBR' || | ||
$node.nodeType === Node.COMMENT_NODE | ||
) | ||
}, | ||
// Extend target with an object | ||
/** | ||
* Convert array-like objects into real arrays. | ||
*/ | ||
makeArray: function( object ) { | ||
return Array.prototype.slice.call( object ) | ||
}, | ||
/** | ||
* Extend target with an object. | ||
*/ | ||
extend: function( target, object ) { | ||
var isExtensible = typeof target === 'object' || | ||
typeof target === 'function' || | ||
if (( | ||
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 ] | ||
) { | ||
for ( var name in object ) { | ||
if (object.hasOwnProperty( name )) { | ||
target[ name ] = object[ name ] | ||
} | ||
} | ||
@@ -108,1 +171,2 @@ } | ||
}) | ||
@@ -22,3 +22,6 @@ define([ | ||
Han.TYPESET.group.hangul = Han.TYPESET.group.eonmun | ||
Han.TYPESET.group.cjk = Han.TYPESET.group.hanzi | ||
return Han | ||
}) |
@@ -16,10 +16,10 @@ define([ | ||
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 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 + '?' | ||
@@ -30,14 +30,14 @@ var rKanaS = UNICODE.kana.small + UNICODE.kana.combine + '?' | ||
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` | ||
@@ -64,17 +64,17 @@ var rApo = '[\u0027\u2019]' | ||
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' ) | ||
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' ) | ||
}, | ||
hanzi: new RegExp( '(' + rHan + ')', 'g' ), | ||
hanzi: new RegExp( '(' + rHan + ')', 'g' ), | ||
latin: new RegExp( '(' + rLatn + ')', 'ig' ), | ||
ellinika: new RegExp( '(' + rGk + ')', 'ig' ), | ||
kirillica: new RegExp( '(' + rCy + ')', 'ig' ), | ||
latin: new RegExp( '(' + rLatn + ')', 'ig' ), | ||
ellinika: new RegExp( '(' + rGk + ')', 'ig' ), | ||
kirillica: new RegExp( '(' + rCy + ')', 'ig' ), | ||
kana: new RegExp( '(' + rKana + '|' + rKanaS + '|' + rKanaH + ')', 'g' ), | ||
eonmun: new RegExp( '(' + rEon + '|' + rEonH + ')', 'g' ) | ||
kana: new RegExp( '(' + rKana + '|' + rKanaS + '|' + rKanaH + ')', 'g' ), | ||
eonmun: new RegExp( '(' + rEon + '|' + rEonH + ')', 'g' ) | ||
}, | ||
@@ -86,4 +86,4 @@ | ||
biaodian: [ | ||
new RegExp( '((' + rBd + '){2,})', 'g' ), | ||
new RegExp( '(' + rBdLiga + rBdOpen + ')', 'g' ) | ||
new RegExp( '((' + rBD + '){2,})', 'g' ), | ||
new RegExp( '(' + rBDLiga + rBDOpen + ')', 'g' ) | ||
], | ||
@@ -100,7 +100,7 @@ punct: null, | ||
jinze: { | ||
hanging: new RegExp( '(' + rBdClose + '*|[…⋯]*)([、,。.])(?!' + rBdEnd + ')', 'ig' ), | ||
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' ) | ||
hanging: new RegExp( rWhite + '*([、,。.])(?!' + rBDEnd + ')', 'ig' ), | ||
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' ) | ||
}, | ||
@@ -107,0 +107,0 @@ |
@@ -1,5 +0,5 @@ | ||
/*! 漢字標準格式 v3.2.7 | MIT License | css.hanzi.co */ | ||
/*! 漢字標準格式 v3.3.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):"function"==typeof define&&define.amd?define(function(){return b(a,!0)}):b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";function c(a,b){var c=E.create("h-char-group","biaodian cjk");return 0===a.index&&a.isEnd?c.innerHTML=b[0]:(c.innerHTML=a.text,c.classList.add("portion"),0===a.index?c.classList.add("isFirst"):a.isEnd&&c.classList.add("isEnd")),c}function d(a){var b=E.create("div"),c=a.charCodeAt(0).toString(16),d="biaodian cjk "+(a.match(D["char"].biaodian.open)?"bd-open":a.match(D["char"].biaodian.close)?"bd-close bd-end":a.match(D["char"].biaodian.end)?"bd-end":a.match(new RegExp("("+C.biaodian.liga+")"))?"bd-liga":"");return b.innerHTML='<h-char unicode="'+c+'" class="'+d+'">'+a+"</h-char>",b.firstChild}function e(a,b){var c,d=E.create("canvas");return d.width="50",d.height="20",d.style.display="none",x.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),{node:d,context:c,remove:function(){E.remove(d,x)}}}function f(a,b){var c,d=a.context,e=b.context;try{for(var f=1;20>=f;f++)for(var g=1;50>=g;g++){if("undefined"==typeof c&&d.getImageData(g,f,1,1).data[3]!==e.getImageData(g,f,1,1).data[3]){c=!1;break}if("boolean"==typeof c)break;50===g&&20===f&&"undefined"==typeof c&&(c=!0)}return a.remove(),b.remove(),a=null,b=null,c}catch(h){}return!1}function g(a,b,c){var a=a,b=b||"sans-serif",c=c||"\u8fadQ";return b=e(c,b),a=e(c,a),!f(a,b)}function h(a){var b,c=E.create("!"),d=a.classList;return c.appendChild(E.clone(a)),E.tag("rt",c.firstChild).forEach(function(a){var c,e=E.create("!"),f=[];do{if(c=(c||a).previousSibling,!c||c.nodeName.match(/((?:h\-)?r[ubt])/i))break;e.insertBefore(E.clone(c),e.firstChild),f.push(c)}while(!c.nodeName.match(/((?:h\-)?r[ubt])/i));b=d.contains("zhuyin")?n(e,a):m(e,a);try{a.parentNode.replaceChild(b,a),f.map(E.remove)}catch(g){}}),k(c)}function i(a){var b=E.create("!");return b.appendChild(E.clone(a)),E.tag("rt",b.firstChild).forEach(function(a){var b,c,d=E.create("!"),e=[];do{if(b=(b||a).previousSibling,!b||b.nodeName.match(/((?:h\-)?r[ubt])/i))break;d.insertBefore(E.clone(b),d.firstChild),e.push(b)}while(!b.nodeName.match(/((?:h\-)?r[ubt])/i));c=E.create("rt"),c.innerHTML=o(a),a.parentNode.replaceChild(c,a)}),b.firstChild}function j(a){var b,c,d,e,f=E.create("!"),g=a.classList;return f.appendChild(E.clone(a)),b=f.firstChild,c=d=E.tag("rb",b),e=c.length,void function(a){a&&(d=E.tag("rt",a).map(function(a,b){if(c[b]){var d=n(c[b],a);try{c[b].parentNode.replaceChild(d,c[b])}catch(e){}return d}}),E.remove(a),b.setAttribute("rightangle","true"))}(b.querySelector("rtc.zhuyin")),E.qsa("rtc:not(.zhuyin)",b).forEach(function(a,c){var f;f=E.tag("rt",a).map(function(a,b){var f,h,i=Number(a.getAttribute("rbspan")||1),j=0,k=[];i>e&&(i=e);do{try{f=d.shift(),k.push(f)}catch(l){}if("undefined"==typeof f)break;j+=Number(f.getAttribute("span")||1)}while(i>j);if(j>i){if(k.length>1)return void console.error("An impossible `rbspan` value detected.",ruby);k=E.tag("rb",k[0]),d=k.slice(i).concat(d),k=k.slice(0,i),j=i}h=m(k,a,{"class":g,span:j,order:c});try{k[0].parentNode.replaceChild(h,k.shift()),k.map(E.remove)}catch(l){}return h}),d=f,1===c&&b.setAttribute("doubleline","true"),E.remove(a)}),k(f)}function k(a){var b=a.firstChild,c=E.create("h-ruby");return c.innerHTML=b.innerHTML,E.setAttr(c,b.attributes),c.normalize(),c}function l(a){if(!a instanceof Element)return a;var b=a.classList;return b.contains("pinyin")?b.add("romanization"):b.contains("romanization")?b.add("annotation"):b.contains("mps")?b.add("zhuyin"):b.contains("rightangle")&&b.add("complex"),a}function m(a,b,c){var d=E.create("h-ru"),b=E.clone(b),c=c||{};return c.annotation="true",Array.isArray(a)?d.innerHTML=a.map(function(a){return"undefined"==typeof a?"":a.outerHTML}).join("")+b.outerHTML:(d.appendChild(E.clone(a)),d.appendChild(b)),E.setAttr(d,c),d}function n(a,b){var a=E.clone(a),c=E.create("h-ru");return c.setAttribute("zhuyin",!0),c.appendChild(a),c.innerHTML+=o(b),c}function o(a){var b,c,d,e="string"==typeof a?a:a.textContent;return b=e.replace(D.zhuyin.diao,""),d=b?b.length:0,c=e.replace(b,"").replace(/[\u02C5]/g,"\u02c7").replace(/[\u030D]/g,"\u0358"),0===d?"":'<h-zhuyin length="'+d+'" diao="'+c+'"><h-yin>'+b+"</h-yin><h-diao>"+c+"</h-diao></h-zhuyin>"}function p(){var a,b=E.create("div");return b.innerHTML="<span>a b</span><span style=\"font-family: 'Han Space'\">a b</span>",x.appendChild(b),a=b.firstChild.offsetWidth!==b.lastChild.offsetWidth,E.remove(b,x),a}function q(a,b,c){return function(){var d=A.localize.writeOnCanvas(b,a),e=A.localize.writeOnCanvas(c,a);return A.localize.compareCanvases(d,e)}}function r(){return q('"Romanization Sans"',"a\u030d","\udb80\udc61")}function s(){return q('"Romanization Sans"',"i\u030d","\udb80\udc69")}function t(){return q('"Zhuyin Kaiti"',"\u31b4\u0358","\udb8c\uddb4")}function u(a){return function(b){var b=b||v,c=A.find(b).avoid(M);return a.forEach(function(a){c.replace(new RegExp(a[0],"ig"),function(b,c){var d=E.clone(N);return d.innerHTML="<h-inner>"+c[0]+"</h-inner>",d.setAttribute("display-as",a[1]),0===b.index?d:""})}),c}}var v=a.document,w=v.documentElement,x=v.body,y="3.2.7",z=["initCond","renderElem","renderHanging","renderJiya","renderHWS","correctBasicBD","substCombLigaWithPUA"],A=function(a,b){return new A.fn.init(a,b)},B=function(){return arguments[0]&&(this.context=arguments[0]),arguments[1]&&(this.condition=arguments[1]),this};A.version=y,A.fn=A.prototype={version:y,constructor:A,context:x,condition:w,routine:z,init:B,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}},A.fn.init.prototype=A.fn,A.init=function(){return A.init=A().render()};var C={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]",checked:"[\u31b4-\u31b7][\u0358\u030d]?"}},D=function(){var a="[\\x20\\t\\r\\n\\f]",b=C.punct.open,c=(C.punct.close,C.punct.end),d=C.punct.middle,e=C.punct.sing,f=b+"|"+c+"|"+d,g=C.biaodian.open,h=C.biaodian.close,i=C.biaodian.end,j=C.biaodian.middle,k=C.biaodian.liga+"{2}",l=g+"|"+i+"|"+j,m=C.kana.base+C.kana.combine+"?",n=C.kana.small+C.kana.combine+"?",o=C.kana.half,p=C.eonmun.base+"|"+C.eonmun.letter,q=C.eonmun.half,r=C.hanzi.base+"|"+C.hanzi.desc+"|"+C.hanzi.radical+"|"+m,s=C.ellinika.combine,t=C.latin.base+s+"*",u=C.ellinika.base+s+"*",v=C.kirillica.combine,w=C.kirillica.base+v+"*",x=t+"|"+u+"|"+w,y="['\u2019]",z=r+"|(?:"+x+"|"+y+")+",A=C.zhuyin.initial,B=C.zhuyin.medial,D=C.zhuyin["final"],E=C.zhuyin.tone+"|"+C.zhuyin.checked;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")},hanzi:new RegExp("("+r+")","g"),latin:new RegExp("("+t+")","ig"),ellinika:new RegExp("("+u+")","ig"),kirillica:new RegExp("("+w+")","ig"),kana:new RegExp("("+m+"|"+n+"|"+o+")","g"),eonmun:new RegExp("("+p+"|"+q+")","g")},group:{biaodian:[new RegExp("(("+l+"){2,})","g"),new RegExp("("+k+g+")","g")],punct:null,hanzi:new RegExp("("+r+")+","g"),western:new RegExp("("+t+"|"+u+"|"+w+"|"+f+")+","ig"),kana:new RegExp("("+m+"|"+n+"|"+o+")+","g"),eonmun:new RegExp("("+p+"|"+q+"|"+f+")+","g")},jinze:{hanging:new RegExp("("+h+"*|[\u2026\u22ef]*)([\u3001\uff0c\u3002\uff0e])(?!"+i+")","ig"),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+")?("+D+")?("+E+")?$"),diao:new RegExp("("+E+")","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"]],"comb-liga-vowel":[["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"]],"comb-liga-zhuyin":[["\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"]]}}();A.UNICODE=C,A.TYPESET=D,A.UNICODE.cjk=A.UNICODE.hanzi,A.UNICODE.greek=A.UNICODE.ellinika,A.UNICODE.cyrillic=A.UNICODE.kirillica,A.UNICODE.hangul=A.UNICODE.eonmun,A.UNICODE.zhuyin.ruyun=A.UNICODE.zhuyin.checked,A.TYPESET["char"].cjk=A.TYPESET["char"].hanzi,A.TYPESET["char"].greek=A.TYPESET["char"].ellinika,A.TYPESET["char"].cyrillic=A.TYPESET["char"].kirillica,A.TYPESET["char"].hangul=A.TYPESET["char"].eonmun;var E={id:function(a,b){return(b||v).getElementById(a)},tag:function(a,b){return this.makeArray((b||v).getElementsByTagName(a))},qsa:function(a,b){return this.makeArray((b||v).querySelectorAll(a))},create:function(a,b){var a="!"===a?v.createDocumentFragment():""===a?v.createTextNode(b||""):v.createElement(a);try{b&&(a.className=b)}catch(c){}return a},clone:function(a,b){return a.cloneNode("boolean"==typeof b?b:!0)},remove:function(a){return 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}}},F=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.2.1",e=b.NON_INLINE_PROSE,f=b.PRESETS.prose.filterElements,g=a||{},h=g.document||void 0;if("undefined"==typeof h)throw new Error("Fibre requires a DOM-supported environment.");var i=function(a,b){return new i.fn.init(a,b)};return i.version=d,i.matches=c,i.fn=i.prototype={constructor:i,version:d,finder:[],context:void 0,portionMode:"retain",selector:{},preset:"prose",init:function(a,b){if(b&&(this.preset=null),this.selector={context:null,filter:[],avoid:[],boundary:[]},!a)throw new Error("A context is required for Fibre to initialise.");return a instanceof Node?a instanceof Document?this.context=a.body||a:this.context=a:"string"==typeof a&&(this.context=h.querySelector(a),this.selector.context=a),this},filterFn:function(a){var b=this.selector.filter.join(", ")||"*",d=this.selector.avoid.join(", ")||null,e=c(a,b,!0)&&!c(a,d);return"prose"===this.preset?f(a)&&e:e},boundaryFn:function(a){var b=this.selector.boundary.join(", ")||null,d=c(a,b);return"prose"===this.preset?e(a)||d:d},filter:function(a){return"string"==typeof a&&this.selector.filter.push(a),this},endFilter:function(a){return a?this.selector.filter=[]:this.selector.filter.pop(),this},avoid:function(a){return"string"==typeof a&&this.selector.avoid.push(a),this},endAvoid:function(a){return a?this.selector.avoid=[]:this.selector.avoid.pop(),this},addBoundary:function(a){return"string"==typeof a&&this.selector.boundary.push(a),this},removeBoundary:function(){return this.selector.boundary=[],this},setMode:function(a){return this.portionMode="first"===a?"first":"retain",this},replace:function(a,c){var d=this;return d.finder.push(b(d.context,{find:a,replace:c,filterElements:function(a){return d.filterFn(a)},forceContext:function(a){return d.boundaryFn(a)},portionMode:d.portionMode})),d},wrap:function(a,c){var d=this;return d.finder.push(b(d.context,{find:a,wrap:c,filterElements:function(a){return d.filterFn(a)},forceContext:function(a){return d.boundaryFn(a)},portionMode:d.portionMode})),d},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}},i.fn.filterOut=i.fn.avoid,i.fn.init.prototype=i.fn,i}(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,c){var d=c.preset&&b.PRESETS[c.preset];if(c.portionMode=c.portionMode||f,d)for(var e in d)i.call(d,e)&&!i.call(c,e)&&(c[e]=d[e]);this.node=a,this.options=c,this.prepMatch=c.prepMatch||this.prepMatch,this.reverts=[],this.matches=this.search(),this.matches.length&&this.processMatches()}var f="retain",g="first",h=v,i=({}.toString,{}.hasOwnProperty);return b.NON_PROSE_ELEMENTS={br:1,hr:1,script:1,style:1,img:1,video:1,audio:1,canvas:1,svg:1,map:1,object:1,input:1,textarea:1,select:1,option:1,optgroup:1,button:1},b.NON_CONTIGUOUS_PROSE_ELEMENTS={address:1,article:1,aside:1,blockquote:1,dd:1,div:1,dl:1,fieldset:1,figcaption:1,figure:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,hr:1,main:1,nav:1,noscript:1,ol:1,output:1,p:1,pre:1,section:1,ul:1,br:1,li:1,summary:1,dt:1,details:1,rp:1,rt:1,rtc:1,script:1,style:1,img:1,video:1,audio:1,canvas:1,svg:1,map:1,object:1,input:1,textarea:1,select:1,option:1,optgroup:1,button:1,table:1,tbody:1,thead:1,th:1,tr:1,td:1,caption:1,col:1,tfoot:1,colgroup:1},b.NON_INLINE_PROSE=function(a){return i.call(b.NON_CONTIGUOUS_PROSE_ELEMENTS,a.nodeName.toLowerCase())},b.PRESETS={prose:{forceContext:b.NON_INLINE_PROSE,filterElements:function(a){return!i.call(b.NON_PROSE_ELEMENTS,a.nodeName.toLowerCase())}}},b.Finder=e,e.prototype={search:function(){function b(a){for(var g=0,j=a.length;j>g;++g){var k=a[g];if("string"==typeof k){if(f.global)for(;c=f.exec(k);)h.push(i.prepMatch(c,d++,e));else(c=k.match(f))&&h.push(i.prepMatch(c,0,e));e+=k.length}else b(k)}}var c,d=0,e=0,f=this.options.find,g=this.getAggregateText(),h=[],i=this;return f="string"==typeof f?RegExp(a(f),"g"):f,b(g),h},prepMatch:function(a,b,c){if(!a[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return a.endIndex=c+a.index+a[0].length,a.startIndex=c+a.index,a.index=b,a},getAggregateText:function(){function a(d,e){if(3===d.nodeType)return[d.data];if(b&&!b(d))return[];var e=[""],f=0;if(d=d.firstChild)do if(3!==d.nodeType){var g=a(d);c&&1===d.nodeType&&(c===!0||c(d))?(e[++f]=g,e[++f]=""):("string"==typeof g[0]&&(e[f]+=g.shift()),g.length&&(e[++f]=g,e[++f]=""))}else e[f]+=d.data;while(d=d.nextSibling);return e}var b=this.options.filterElements,c=this.options.forceContext;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,d){var e=this.options.portionMode;return e===g&&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}),e===g?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=h.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:h.createTextNode(String(d));var g="string"==typeof e?h.createElement(e):e;return d=h.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,i=d.node;if(g===i){var j=g;b.indexInNode>0&&(e=h.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.endIndexInNode<j.length&&(f=h.createTextNode(j.data.substring(d.endIndexInNode)),j.parentNode.insertBefore(f,j)),j.parentNode.removeChild(j),this.reverts.push(function(){e===k.previousSibling&&e.parentNode.removeChild(e),f===k.nextSibling&&f.parentNode.removeChild(f),k.parentNode.replaceChild(j,k)}),k}e=h.createTextNode(g.data.substring(0,b.indexInNode)),f=h.createTextNode(i.data.substring(d.endIndexInNode));for(var l=this.getPortionReplacementNode(b,a),m=[],n=0,o=c.length;o>n;++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),i.parentNode.insertBefore(r,i),i.parentNode.insertBefore(f,i),i.parentNode.removeChild(i),this.reverts.push(function(){e.parentNode.removeChild(e),l.parentNode.replaceChild(g,l),f.parentNode.removeChild(f),r.parentNode.replaceChild(i,r)}),r}},b}());E.extend(F.fn,{jinzify:function(a){return this.filter(a||null).avoid("h-jinze").replace(D.jinze.touwei,function(a,b){var c=E.create("h-jinze","touwei");return c.innerHTML=b[0],0===a.index&&a.isEnd||1===a.index?c:""}).replace(D.jinze.wei,function(a,b){var c=E.create("h-jinze","wei");return c.innerHTML=b[0],0===a.index?c:""}).replace(D.jinze.tou,function(a,b){var c=E.create("h-jinze","tou");return c.innerHTML=b[0],0===a.index&&a.isEnd||1===a.index?c:""}).replace(D.jinze.middle,function(a,b){var c=E.create("h-jinze","middle");return c.innerHTML=b[0],0===a.index&&a.isEnd||1===a.index?c:""}).endAvoid().endFilter()},groupify:function(a){var a=E.extend({biaodian:!1,hanzi:!1,kana:!1,eonmun:!1,western:!1},a||{});return this.avoid("h-hangable, h-char-group, h-word"),a.biaodian&&this.replace(D.group.biaodian[0],c).replace(D.group.biaodian[1],c),(a.hanzi||a.cjk)&&this.wrap(D.group.hanzi,E.clone(E.create("h-char-group","hanzi cjk"))),a.western&&this.wrap(D.group.western,E.clone(E.create("h-word","western"))),a.kana&&this.wrap(D.group.kana,E.clone(E.create("h-char-group","kana"))),(a.eonmun||a.hangul)&&this.wrap(D.group.eonmun,E.clone(E.create("h-word","eonmun hangul"))),this.endAvoid(),this},charify:function(a){var a=E.extend({biaodian:!1,punct:!1,hanzi:!1,latin:!1,ellinika:!1,kirillica:!1,kana:!1,eonmun:!1},a||{});return this.avoid("h-char"),a.biaodian&&this.replace(D["char"].biaodian.all,function(a,b){return d(b[0])}).replace(D["char"].biaodian.liga,function(a,b){return d(b[0])}),(a.hanzi||a.cjk)&&this.wrap(D["char"].hanzi,E.clone(E.create("h-char","hanzi cjk"))),a.punct&&this.wrap(D["char"].punct.all,E.clone(E.create("h-char","punct"))),a.latin&&this.wrap(D["char"].latin,E.clone(E.create("h-char","alphabet latin"))),(a.ellinika||a.greek)&&this.wrap(D["char"].ellinika,E.clone(E.create("h-char","alphabet ellinika greek"))),(a.kirillica||a.cyrillic)&&this.wrap(D["char"].kirillica,E.clone(E.create("h-char","alphabet kirillica cyrillic"))),a.kana&&this.wrap(D["char"].kana,E.clone(E.create("h-char","kana"))),(a.eonmun||a.hangul)&&this.wrap(D["char"].eonmun,E.clone(E.create("h-char","eonmun hangul"))),this.endAvoid(),this}}),A.find=F,void["setMode","wrap","replace","revert","addBoundary","removeBoundary","avoid","endAvoid","filter","endFilter","jinzify","groupify","charify"].forEach(function(a){A.fn[a]=function(){return this.finder||(this.finder=A.find(this.context)),this.finder[a](arguments[0],arguments[1]),this}});var G={};G.writeOnCanvas=e,G.compareCanvases=f,G.detectFont=g,G.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=x||E.create("body"),g=E.create("div"),h=x?g:f,b="function"==typeof b?b:function(){};return c=["<style>",a,"</style>"].join(""),h.innerHTML+=c,f.appendChild(g),x||(f.style.background="",f.style.overflow="hidden",e=w.style.overflow,w.style.overflow="hidden",w.appendChild(f)),d=b(h,a),E.remove(h),x||(w.style.overflow=e),!!d}function d(b,c){var d;return a.getComputedStyle?d=v.defaultView.getComputedStyle(b,null).getPropertyValue(c):b.currentStyle&&(d=b.currentStyle[c]),d}var e="Webkit Moz ms".split(" "),f=E.create("h-test");return{columnwidth:b("columnWidth"),fontface:function(){var a;return c('@font-face { font-family: font; src: url("//"); }',function(b,c){var d=E.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}(),ruby:function(){var a,b=E.create("ruby"),c=E.create("rt"),e=E.create("rp");return b.appendChild(e),b.appendChild(c),w.appendChild(b),a="none"===d(e,"display")||"ruby"===d(b,"display")&&"ruby-text"===d(c,"display")?!0:!1,w.removeChild(b),b=null,c=null,e=null,a}(),"ruby-display":function(){var a=E.create("div");return a.innerHTML='<h-test-a style="display: ruby;"></h-test-a><h-test-b style="display: ruby-text-container;"></h-test-b>',"ruby"===a.querySelector("h-test-a").style.display&&"ruby-text-container"===a.querySelector("h-test-b").style.display}(),"ruby-interchar":function(){var a,b="inter-character",c=E.create("div");return c.innerHTML='<h-test style="-moz-ruby-position:'+b+";-ms-ruby-position:"+b+";-webkit-ruby-position:"+b+";ruby-position:"+b+';"></h-test>',a=c.querySelector("h-test").style,a.rubyPosition===b||a.WebkitRubyPosition===b||a.MozRubyPosition===b||a.msRubyPosition===b}(),textemphasis:b("textEmphasis"),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=!G.detectFont("test-for-unicode-range",'Arial, "Droid Sans"',"Q")}),a}(),writingmode:b("writingMode")}}(),G.initCond=function(a){var b,a=a||w,c="";for(var d in G.support)b=(G.support[d]?"":"no-")+d,a.classList.add(b),c+=b+" ";return c};var H=G.support["ruby-interchar"];E.extend(G,{renderRuby:function(a,b){var b=b||"ruby",c=E.qsa(b,a);E.qsa("rtc",a).concat(c).map(l),c.forEach(function(a){var b,c=a.classList;c.contains("complex")?b=j(a):c.contains("zhuyin")&&(b=H?i(a):h(a)),b&&a.parentNode.replaceChild(b,a)})},simplifyRubyClass:l,getZhuyinHTML:o,renderComplexRuby:j,renderSimpleRuby:h,renderInterCharRuby:i}),E.extend(G,{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=E.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(E.isIgnorable(b));b.nodeName.match(d)&&b.classList.add("adjacent")})},renderEm:function(a,b){var c=b?"qsa":"tag",b=b||"em",d=E[c](b,a);d.forEach(function(a){var b=A(a);G.support.textemphasis?b.avoid("rt, h-char, h-char-group").charify({biaodian:!0,punct:!0}):b.avoid("rt, h-char, h-char-group").jinzify().groupify({western:!0,biaodian:!0}).charify({hanzi:!0,biaodian:!0,punct:!0,latin:!0,ellinika:!0,kirillica:!0})})}}),A.normalize=G,A.localize=G,A.support=G.support,A.detectFont=G.detectFont,A.fn.initCond=function(){return this.condition.classList.add("han-js-rendered"),A.normalize.initCond(this.condition),this},void["Elem","DecoLine","Em","Ruby"].forEach(function(a){var b="render"+a;A.fn[b]=function(a){return A.normalize[b](this.context,a),this}}),E.extend(A.support,{heiti:!0,songti:A.detectFont('"Han Songti"'),"songti-gb":A.detectFont('"Han Songti GB"'),kaiti:A.detectFont('"Han Kaiti"'),fangsong:A.detectFont('"Han Fangsong"')});var I="* > h-hws:first-child, * > wbr:first-child + h-hws, wbr:first-child + wbr + h-hws",J=function(){var a=E.create("div");return a.appendChild(E.create("","0-")),a.appendChild(E.create("","2")),a.normalize(),2!==a.firstChild.length}(),K=E.create("h-hws");K.setAttribute("hidden",""),K.innerHTML=" ",E.extend(A,{isNodeNormalizeNormal:J,renderHWS:function(a,b){var a=a||v,c=b?"strict":"base",d=A.find(a);return d.avoid(b?"textarea, code, kbd, samp, pre":"textarea"),d.replace(A.TYPESET.hws[c][0],"$1<hws/>$2").replace(A.TYPESET.hws[c][1],"$1<hws/>$2").replace(/(['"]+)<hws\/>(.+?)<hws\/>\1/gi,"$1$2$1").replace(/<hws\/>([\u2018\u201c]+)/gi,"$1").replace(/([\u2019\u201d]+)<hws\/>/gi,"$1").replace("<hws/>",function(){return E.clone(K)}),E.qsa(I,a).forEach(function(a){for(var b=a.parentNode,c=b.firstChild;E.isIgnorable(c);)if(c=c.nextSibling,!c)return;for(;"H-HWS"===c.nodeName&&(E.remove(c,b),c=b.parentNode.insertBefore(E.clone(K),b),b=b.parentNode,J&&b.normalize(),c===b.firstChild););}),J&&a.normalize(),d}}),E.extend(A.fn,{HWS:null,renderHWS:function(a){return A.renderHWS(this.context,a),this.HWS=E.tag("h-hws",this.context),this},revertHWS:function(){return this.HWS.forEach(function(a){E.remove(a)}),this}}),E.extend(A,{detectSpaceFont:p,isSpaceFontLoaded:p()}),A.support["han-space"]=p(),A.renderHanging=function(a){var a=a||v,b=A.find(a);return b.avoid("textarea, code, kbd, samp, pre, h-hangable").replace(D.jinze.hanging,function(a,b){var c=E.create("h-hangable");return c.innerHTML=b[1]+'<h-cs><h-inner hidden> </h-inner><h-char class="biaodian bd-close bd-end cjk">'+b[2]+"</h-char></h-cs>",0===a.index?c:""}),b},E.extend(A.fn,{hanging:null,renderHanging:function(){var a=this.condition.classList,b=p();return b&&a.contains("no-han-space")&&(a.remove("no-han-space"),a.add("han-space")),this.hanging=A.renderHanging(this.context),this},revertHanging:function(){try{this.hanging.revert("all")}catch(a){}return this}}),A.renderJiya=function(a){var a=a||v,b=A.find(a);return b.avoid("textarea, code, kbd, samp, pre, h-char-group").replace(new RegExp("("+C.biaodian.end+"+)("+C.biaodian.open+"+)","g"),function(a,b){if(0===a.index)return a.isEnd?b[0]:b[1];var c=E.create("h-char-group","biaodian cjk portion");return c.innerHTML=b[2],c}).endAvoid(),b.avoid("textarea, code, kbd, samp, pre, h-char").groupify({biaodian:!0}).charify({biaodian:!0}),E.qsa("h-char.biaodian.bd-open, h-char.biaodian.bd-end",a).forEach(function(a){if(!A.find.matches(a,"h-cs *")){var b="<h-inner>"+a.innerHTML+"</h-inner>",c="<h-cs hidden> </h-cs>",d=a.classList.contains("bd-open");a.innerHTML=d?c+b:b+c}}),b},E.extend(A.fn,{jiya:null,renderJiya:function(){return this.jiya=A.renderJiya(this.context),this},revertJiya:function(){try{this.jiya.revert("all")}catch(a){}return this}});var L;L=E.create("h-char","biaodian cjk bd-middle"),L.setAttribute("unicode","b7"),A.correctBasicBD=function(a,b){if(!A.support.unicoderange||b){var c,a=a||v;c=A.find(a),c.wrap(/\u00B7/g,E.clone(L)).charify({biaodian:!0})}},E.extend(A.fn,{basicBD:null,correctBasicBD:function(a){return this.basicBD=A.correctBasicBD(this.context,a),this},revertBasicBD:function(){try{this.basicBD.revert("all")}catch(a){}return this}});var M="textarea, code, kbd, samp, pre",N=E.create("h-char","comb-liga");return E.extend(A,{isVowelCombLigaNormal:r(),isVowelICombLigaNormal:s(),isZhuyinCombLigaNormal:t(),isCombLigaNormal:s()(),substVowelCombLiga:u(A.TYPESET["display-as"]["comb-liga-vowel"]),substZhuyinCombLiga:u(A.TYPESET["display-as"]["comb-liga-zhuyin"]),substCombLigaWithPUA:u(A.TYPESET["display-as"]["comb-liga-pua"]),substInaccurateChar:function(a){var a=a||v,b=A.find(a);b.avoid(M),A.TYPESET["inaccurate-char"].forEach(function(a){b.replace(new RegExp(a[0],"ig"),a[1])})}}),E.extend(A.fn,{"comb-liga-vowel":null,"comb-liga-vowel-i":null,"comb-liga-zhuyin":null,"inaccurate-char":null,substVowelCombLiga:function(){return this["comb-liga-vowel"]=A.substVowelCombLiga(this.context),this},substVowelICombLiga:function(){ | ||
return this["comb-liga-vowel-i"]=A.substVowelICombLiga(this.context),this},substZhuyinCombLiga:function(){return this["comb-liga-zhuyin"]=A.substZhuyinCombLiga(this.context),this},substCombLigaWithPUA:function(){return A.isVowelCombLigaNormal()?A.isVowelICombLigaNormal()||(this["comb-liga-vowel-i"]=A.substVowelICombLiga(this.context)):this["comb-liga-vowel"]=A.substVowelCombLiga(this.context),A.isZhuyinCombLigaNormal()||(this["comb-liga-zhuyin"]=A.substZhuyinCombLiga(this.context)),this},revertVowelCombLiga:function(){try{this["comb-liga-vowel"].revert("all")}catch(a){}return this},revertVowelICombLiga:function(){try{this["comb-liga-vowel-i"].revert("all")}catch(a){}return this},revertZhuyinCombLiga:function(){try{this["comb-liga-zhuyin"].revert("all")}catch(a){}return this},revertCombLigaWithPUA:function(){try{this["comb-liga-vowel"].revert("all"),this["comb-liga-vowel-i"].revert("all"),this["comb-liga-zhuyin"].revert("all")}catch(a){}return this},substInaccurateChar:function(){return this["inaccurate-char"]=A.substInaccurateChar(this.context),this},revertInaccurateChar:function(){try{this["inaccurate-char"].revert("all")}catch(a){}return this}}),a.addEventListener("DOMContentLoaded",function(){var a;w.classList.contains("han-init")?A.init():(a=v.querySelector(".han-init-context"))&&(A.init=A(a).render())}),("undefined"==typeof b||b===!1)&&(a.Han=A),A}); | ||
void function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=b(a,!0):"function"==typeof define&&define.amd?define(function(){return b(a,!0)}):b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";function c(a){return"function"==typeof a||a instanceof Element?a:void 0}function d(a){var b=0===a.index&&a.isEnd?"biaodian cjk":"biaodian cjk portion "+(0===a.index?"is-first":a.isEnd?"is-end":"is-inner"),c=S.create("h-char-group",b);return c.innerHTML=a.text,c}function e(a){var b=S.create("div"),c=a.charCodeAt(0).toString(16);return b.innerHTML='<h-char unicode="'+c+'" class="biaodian cjk '+f(a)+'">'+a+"</h-char>",b.firstChild}function f(a){return a.match(R["char"].biaodian.open)?"bd-open":a.match(R["char"].biaodian.close)?"bd-close bd-end":a.match(R["char"].biaodian.end)?/(?:\u3001|\u3002|\uff0c)/i.test(a)?"bd-end bd-cop":"bd-end":a.match(new RegExp(Q.biaodian.liga))?"bd-liga":a.match(new RegExp(Q.biaodian.middle))?"bd-middle":""}function g(a,b){var c,d=S.create("canvas");return d.width="50",d.height="20",d.style.display="none",L.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),{node:d,context:c,remove:function(){S.remove(d,L)}}}function h(a,b){var c,d=a.context,e=b.context;try{for(var f=1;20>=f;f++)for(var g=1;50>=g;g++){if("undefined"==typeof c&&d.getImageData(g,f,1,1).data[3]!==e.getImageData(g,f,1,1).data[3]){c=!1;break}if("boolean"==typeof c)break;50===g&&20===f&&"undefined"==typeof c&&(c=!0)}return a.remove(),b.remove(),a=null,b=null,c}catch(h){}return!1}function i(a,b,c){var a=a,b=b||"sans-serif",c=c||"\u8fadQ";return b=g(c,b),a=g(c,a),!h(a,b)}function j(a){var b,c=S.create("!"),d=a.classList;return c.appendChild(S.clone(a)),S.tag("rt",c.firstChild).forEach(function(a){var c,e=S.create("!"),f=[];do{if(c=(c||a).previousSibling,!c||c.nodeName.match(/((?:h\-)?r[ubt])/i))break;e.insertBefore(S.clone(c),e.firstChild),f.push(c)}while(!c.nodeName.match(/((?:h\-)?r[ubt])/i));b=d.contains("zhuyin")?p(e,a):o(e,a);try{a.parentNode.replaceChild(b,a),f.map(S.remove)}catch(g){}}),m(c)}function k(a){var b=S.create("!");return b.appendChild(S.clone(a)),S.tag("rt",b.firstChild).forEach(function(a){var b,c,d=S.create("!"),e=[];do{if(b=(b||a).previousSibling,!b||b.nodeName.match(/((?:h\-)?r[ubt])/i))break;d.insertBefore(S.clone(b),d.firstChild),e.push(b)}while(!b.nodeName.match(/((?:h\-)?r[ubt])/i));c=S.create("rt"),c.innerHTML=q(a),a.parentNode.replaceChild(c,a)}),b.firstChild}function l(a){var b,c,d,e,f=S.create("!"),g=a.classList;return f.appendChild(S.clone(a)),b=f.firstChild,c=d=S.tag("rb",b),e=c.length,void function(a){a&&(d=S.tag("rt",a).map(function(a,b){if(c[b]){var d=p(c[b],a);try{c[b].parentNode.replaceChild(d,c[b])}catch(e){}return d}}),S.remove(a),b.setAttribute("rightangle","true"))}(b.querySelector("rtc.zhuyin")),S.qsa("rtc:not(.zhuyin)",b).forEach(function(a,c){var f;f=S.tag("rt",a).map(function(a,b){var f,h,i=Number(a.getAttribute("rbspan")||1),j=0,k=[];i>e&&(i=e);do{try{f=d.shift(),k.push(f)}catch(l){}if("undefined"==typeof f)break;j+=Number(f.getAttribute("span")||1)}while(i>j);if(j>i){if(k.length>1)return void console.error("An impossible `rbspan` value detected.",ruby);k=S.tag("rb",k[0]),d=k.slice(i).concat(d),k=k.slice(0,i),j=i}h=o(k,a,{"class":g,span:j,order:c});try{k[0].parentNode.replaceChild(h,k.shift()),k.map(S.remove)}catch(l){}return h}),d=f,1===c&&b.setAttribute("doubleline","true"),S.remove(a)}),m(f)}function m(a){var b=a.firstChild,c=S.create("h-ruby");return c.innerHTML=b.innerHTML,S.setAttr(c,b.attributes),c.normalize(),c}function n(a){if(!a instanceof Element)return a;var b=a.classList;return b.contains("pinyin")?b.add("romanization"):b.contains("romanization")?b.add("annotation"):b.contains("mps")?b.add("zhuyin"):b.contains("rightangle")&&b.add("complex"),a}function o(a,b,c){var d=S.create("h-ru"),b=S.clone(b),c=c||{};return c.annotation="true",Array.isArray(a)?d.innerHTML=a.map(function(a){return"undefined"==typeof a?"":a.outerHTML}).join("")+b.outerHTML:(d.appendChild(S.clone(a)),d.appendChild(b)),S.setAttr(d,c),d}function p(a,b){var a=S.clone(a),c=S.create("h-ru");return c.setAttribute("zhuyin",!0),c.appendChild(a),c.innerHTML+=q(b),c}function q(a){var b,c,d,e="string"==typeof a?a:a.textContent;return b=e.replace(R.zhuyin.diao,""),d=b?b.length:0,c=e.replace(b,"").replace(/[\u02C5]/g,"\u02c7").replace(/[\u030D]/g,"\u0358"),0===d?"":'<h-zhuyin length="'+d+'" diao="'+c+'"><h-yin>'+b+"</h-yin><h-diao>"+c+"</h-diao></h-zhuyin>"}function r(a,b){return a&&b&&a.parentNode===b.parentNode}function s(a,b){var c=a,b=b||"";if(S.isElmt(a.nextSibling)||r(a,a.nextSibling))return b+X;for(;!c.nextSibling;)c=c.parentNode;return a!==c&&c.insertAdjacentHTML("afterEnd","<h-hws hidden> </h-hws>"),b}function t(a,b){return a.isEnd&&0===a.index?b[1]+X+b[2]:0===a.index?s(a.node,a.text):a.text}function u(a){return 0===a.index?S.clone(Y):""}function v(a){var b=a.node.parentNode;return 0===a.index&&(Z=a.endIndexInNode-2),"h-hws"!==b.nodeName.toLowerCase()||1!==a.index&&a.indexInMatch!==Z||b.classList.add("quote-inner"),a.text}function w(a){var b=a.node.parentNode;return"h-hws"===b.nodeName.toLowerCase()&&b.classList.add("quote-outer"),a.text}function x(){var a,b=S.create("div");return b.innerHTML="<span>a b</span><span style=\"font-family: 'Han Space'\">a b</span>",L.appendChild(b),a=b.firstChild.offsetWidth!==b.lastChild.offsetWidth,S.remove(b),a}function y(a){var b=a.nextSibling;b&&ba(b,"h-cs.jinze-outer")?b.classList.add("hangable-outer"):a.insertAdjacentHTML("afterend",aa)}function z(a){return a.replace(/(biaodian|cjk|bd-jiya|bd-consecutive|bd-hangable)/gi,"").trim()}function A(a){var b,c=a.text,d=a.node.parentNode,e=S.parent(d,"h-char.biaodian"),f=O.createBDChar(c);return f.innerHTML="<h-inner>"+c+"</h-inner>",f.classList.add(ea),(b=S.parent(d,"h-jinze"))&&C(b),e?function(){return e.classList.add(ea),ba(d,"h-inner, h-inner *")?c:f.firstChild}():f}function B(a){var b,c=ca,d=a.node.parentNode,e=S.parent(d,"h-char.biaodian"),f=S.parent(e,"h-jinze");return b=e.classList,c&&e.setAttribute("prev",c),da&&b.contains("bd-open")&&da.pop().setAttribute("next","bd-open"),da=void 0,a.isEnd?(ca=void 0,b.add(ga,"end-portion")):(ca=z(e.getAttribute("class")),b.add(ga)),f&&(da=D(f,{prev:c,"class":z(e.getAttribute("class"))})),a.text}function C(a){ba(a,".tou, .touwei")&&!ba(a.previousSibling,"h-cs.jiya-outer")&&a.insertAdjacentHTML("beforebegin",ha),ba(a,".wei, .touwei")&&!ba(a.nextSibling,"h-cs.jiya-outer")&&a.insertAdjacentHTML("afterend",ha)}function D(a,b){var c,d;return ba(a,".tou, .touwei")&&(c=a.previousSibling,ba(c,"h-cs")&&(c.className="jinze-outer jiya-outer",c.setAttribute("prev",b.prev))),ba(a,".wei, .touwei")&&(d=a.nextSibling,ba(d,"h-cs")&&(d.className="jinze-outer jiya-outer "+b["class"],d.removeAttribute("prev"))),[c,d]}function E(a,b,c){return function(){var d=O.localize.writeOnCanvas(b,a),e=O.localize.writeOnCanvas(c,a);return O.localize.compareCanvases(d,e)}}function F(){return E('"Romanization Sans"',"a\u030d","\udb80\udc61")}function G(){return E('"Romanization Sans"',"i\u030d","\udb80\udc69")}function H(){return E('"Zhuyin Kaiti"',"\u31b4\u0358","\udb8c\uddb4")}function I(a){return function(b){var b=b||J,c=O.find(b).avoid(ia);return a.forEach(function(a){c.replace(new RegExp(a[0],"ig"),function(b,c){var d=S.clone(ja);return d.innerHTML="<h-inner>"+c[0]+"</h-inner>",d.setAttribute("display-as",a[1]),0===b.index?d:""})}),c}}var J=a.document,K=J.documentElement,L=J.body,M="3.3.0",N=["initCond","renderElem","renderJiya","renderHanging","correctBiaodian","renderHWS","substCombLigaWithPUA"],O=function(a,b){return new O.fn.init(a,b)},P=function(){return arguments[0]&&(this.context=arguments[0]),arguments[1]&&(this.condition=arguments[1]),this};O.version=M,O.fn=O.prototype={version:M,constructor:O,context:L,condition:K,routine:N,init:P,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){"string"==typeof a&&"function"==typeof b[a]?b[a]():Array.isArray(a)&&"function"==typeof b[a[0]]&&b[a.shift()].apply(b,a)}),this}},O.fn.init.prototype=O.fn,O.init=function(){return O.init=O().render()};var Q={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]",checked:"[\u31b4-\u31b7][\u0358\u030d]?"}},R=function(){var a="[\\x20\\t\\r\\n\\f]",b=Q.punct.open,c=(Q.punct.close,Q.punct.end),d=Q.punct.middle,e=Q.punct.sing,f=b+"|"+c+"|"+d,g=Q.biaodian.open,h=Q.biaodian.close,i=Q.biaodian.end,j=Q.biaodian.middle,k=Q.biaodian.liga+"{2}",l=g+"|"+i+"|"+j,m=Q.kana.base+Q.kana.combine+"?",n=Q.kana.small+Q.kana.combine+"?",o=Q.kana.half,p=Q.eonmun.base+"|"+Q.eonmun.letter,q=Q.eonmun.half,r=Q.hanzi.base+"|"+Q.hanzi.desc+"|"+Q.hanzi.radical+"|"+m,s=Q.ellinika.combine,t=Q.latin.base+s+"*",u=Q.ellinika.base+s+"*",v=Q.kirillica.combine,w=Q.kirillica.base+v+"*",x=t+"|"+u+"|"+w,y="['\u2019]",z=r+"|(?:"+x+"|"+y+")+",A=Q.zhuyin.initial,B=Q.zhuyin.medial,C=Q.zhuyin["final"],D=Q.zhuyin.tone+"|"+Q.zhuyin.checked;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")},hanzi:new RegExp("("+r+")","g"),latin:new RegExp("("+t+")","ig"),ellinika:new RegExp("("+u+")","ig"),kirillica:new RegExp("("+w+")","ig"),kana:new RegExp("("+m+"|"+n+"|"+o+")","g"),eonmun:new RegExp("("+p+"|"+q+")","g")},group:{biaodian:[new RegExp("(("+l+"){2,})","g"),new RegExp("("+k+g+")","g")],punct:null,hanzi:new RegExp("("+r+")+","g"),western:new RegExp("("+t+"|"+u+"|"+w+"|"+f+")+","ig"),kana:new RegExp("("+m+"|"+n+"|"+o+")+","g"),eonmun:new RegExp("("+p+"|"+q+"|"+f+")+","g")},jinze:{hanging:new RegExp(a+"*([\u3001\uff0c\u3002\uff0e])(?!"+i+")","ig"),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"]],"comb-liga-vowel":[["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"]],"comb-liga-zhuyin":[["\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"]]}}();O.UNICODE=Q,O.TYPESET=R,O.UNICODE.cjk=O.UNICODE.hanzi,O.UNICODE.greek=O.UNICODE.ellinika,O.UNICODE.cyrillic=O.UNICODE.kirillica,O.UNICODE.hangul=O.UNICODE.eonmun,O.UNICODE.zhuyin.ruyun=O.UNICODE.zhuyin.checked,O.TYPESET["char"].cjk=O.TYPESET["char"].hanzi,O.TYPESET["char"].greek=O.TYPESET["char"].ellinika,O.TYPESET["char"].cyrillic=O.TYPESET["char"].kirillica,O.TYPESET["char"].hangul=O.TYPESET["char"].eonmun,O.TYPESET.group.hangul=O.TYPESET.group.eonmun,O.TYPESET.group.cjk=O.TYPESET.group.hanzi;var S={id:function(a,b){return(b||J).getElementById(a)},tag:function(a,b){return this.makeArray((b||J).getElementsByTagName(a))},qs:function(a,b){return(b||J).querySelector(a)},qsa:function(a,b){return this.makeArray((b||J).querySelectorAll(a))},parent:function(a,b){return b?function(){if("function"==typeof S.matches){for(;!S.matches(a,b);){if(!a||a===J.documentElement){a=void 0;break}a=a.parentNode}return a}}():a?a.parentNode:void 0},create:function(a,b){var c="!"===a?J.createDocumentFragment():""===a?J.createTextNode(b||""):J.createElement(a);try{b&&(c.className=b)}catch(d){}return c},clone:function(a,b){return a.cloneNode("boolean"==typeof b?b:!0)},remove:function(a){return 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}},isElmt:function(a){return a&&a.nodeType===Node.ELEMENT_NODE},isIgnorable:function(a){return a?"WBR"===a.nodeName||a.nodeType===Node.COMMENT_NODE:!1},makeArray:function(a){return Array.prototype.slice.call(a)},extend:function(a,b){if(("object"==typeof a||"function"==typeof a)&&"object"==typeof b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}},T=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.2.1",e=b.NON_INLINE_PROSE,f=b.PRESETS.prose.filterElements,g=a||{},h=g.document||void 0;if("undefined"==typeof h)throw new Error("Fibre requires a DOM-supported environment.");var i=function(a,b){return new i.fn.init(a,b)};return i.version=d,i.matches=c,i.fn=i.prototype={constructor:i,version:d,finder:[],context:void 0,portionMode:"retain",selector:{},preset:"prose",init:function(a,b){if(b&&(this.preset=null),this.selector={context:null,filter:[],avoid:[],boundary:[]},!a)throw new Error("A context is required for Fibre to initialise.");return a instanceof Node?a instanceof Document?this.context=a.body||a:this.context=a:"string"==typeof a&&(this.context=h.querySelector(a),this.selector.context=a),this},filterFn:function(a){var b=this.selector.filter.join(", ")||"*",d=this.selector.avoid.join(", ")||null,e=c(a,b,!0)&&!c(a,d);return"prose"===this.preset?f(a)&&e:e},boundaryFn:function(a){var b=this.selector.boundary.join(", ")||null,d=c(a,b);return"prose"===this.preset?e(a)||d:d},filter:function(a){return"string"==typeof a&&this.selector.filter.push(a),this},endFilter:function(a){return a?this.selector.filter=[]:this.selector.filter.pop(),this},avoid:function(a){return"string"==typeof a&&this.selector.avoid.push(a),this},endAvoid:function(a){return a?this.selector.avoid=[]:this.selector.avoid.pop(),this},addBoundary:function(a){return"string"==typeof a&&this.selector.boundary.push(a),this},removeBoundary:function(){return this.selector.boundary=[],this},setMode:function(a){return this.portionMode="first"===a?"first":"retain",this},replace:function(a,c){var d=this;return d.finder.push(b(d.context,{find:a,replace:c,filterElements:function(a){return d.filterFn(a)},forceContext:function(a){return d.boundaryFn(a)},portionMode:d.portionMode})),d},wrap:function(a,c){var d=this;return d.finder.push(b(d.context,{find:a,wrap:c,filterElements:function(a){return d.filterFn(a)},forceContext:function(a){return d.boundaryFn(a)},portionMode:d.portionMode})),d},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}},i.fn.filterOut=i.fn.avoid,i.fn.init.prototype=i.fn,i}(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,c){var d=c.preset&&b.PRESETS[c.preset];if(c.portionMode=c.portionMode||f,d)for(var e in d)i.call(d,e)&&!i.call(c,e)&&(c[e]=d[e]);this.node=a,this.options=c,this.prepMatch=c.prepMatch||this.prepMatch,this.reverts=[],this.matches=this.search(),this.matches.length&&this.processMatches()}var f="retain",g="first",h=J,i=({}.toString,{}.hasOwnProperty);return b.NON_PROSE_ELEMENTS={br:1,hr:1,script:1,style:1,img:1,video:1,audio:1,canvas:1,svg:1,map:1,object:1,input:1,textarea:1,select:1,option:1,optgroup:1,button:1},b.NON_CONTIGUOUS_PROSE_ELEMENTS={address:1,article:1,aside:1,blockquote:1,dd:1,div:1,dl:1,fieldset:1,figcaption:1,figure:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,hr:1,main:1,nav:1,noscript:1,ol:1,output:1,p:1,pre:1,section:1,ul:1,br:1,li:1,summary:1,dt:1,details:1,rp:1,rt:1,rtc:1,script:1,style:1,img:1,video:1,audio:1,canvas:1,svg:1,map:1,object:1,input:1,textarea:1,select:1,option:1,optgroup:1,button:1,table:1,tbody:1,thead:1,th:1,tr:1,td:1,caption:1,col:1,tfoot:1,colgroup:1},b.NON_INLINE_PROSE=function(a){return i.call(b.NON_CONTIGUOUS_PROSE_ELEMENTS,a.nodeName.toLowerCase())},b.PRESETS={prose:{forceContext:b.NON_INLINE_PROSE,filterElements:function(a){return!i.call(b.NON_PROSE_ELEMENTS,a.nodeName.toLowerCase())}}},b.Finder=e,e.prototype={search:function(){function b(a){for(var g=0,j=a.length;j>g;++g){var k=a[g];if("string"==typeof k){if(f.global)for(;c=f.exec(k);)h.push(i.prepMatch(c,d++,e));else(c=k.match(f))&&h.push(i.prepMatch(c,0,e));e+=k.length}else b(k)}}var c,d=0,e=0,f=this.options.find,g=this.getAggregateText(),h=[],i=this;return f="string"==typeof f?RegExp(a(f),"g"):f,b(g),h},prepMatch:function(a,b,c){if(!a[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return a.endIndex=c+a.index+a[0].length,a.startIndex=c+a.index,a.index=b,a},getAggregateText:function(){function a(d,e){if(3===d.nodeType)return[d.data];if(b&&!b(d))return[];var e=[""],f=0;if(d=d.firstChild)do if(3!==d.nodeType){var g=a(d);c&&1===d.nodeType&&(c===!0||c(d))?(e[++f]=g,e[++f]=""):("string"==typeof g[0]&&(e[f]+=g.shift()),g.length&&(e[++f]=g,e[++f]=""))}else e[f]+=d.data;while(d=d.nextSibling);return e}var b=this.options.filterElements,c=this.options.forceContext;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,d){var e=this.options.portionMode;return e===g&&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}),e===g?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=h.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:h.createTextNode(String(d));var g="string"==typeof e?h.createElement(e):e;return d=h.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,i=d.node;if(g===i){var j=g;b.indexInNode>0&&(e=h.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.endIndexInNode<j.length&&(f=h.createTextNode(j.data.substring(d.endIndexInNode)),j.parentNode.insertBefore(f,j)),j.parentNode.removeChild(j),this.reverts.push(function(){e===k.previousSibling&&e.parentNode.removeChild(e),f===k.nextSibling&&f.parentNode.removeChild(f),k.parentNode.replaceChild(j,k)}),k}e=h.createTextNode(g.data.substring(0,b.indexInNode)),f=h.createTextNode(i.data.substring(d.endIndexInNode));for(var l=this.getPortionReplacementNode(b,a),m=[],n=0,o=c.length;o>n;++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),i.parentNode.insertBefore(r,i),i.parentNode.insertBefore(f,i),i.parentNode.removeChild(i),this.reverts.push(function(){e.parentNode.removeChild(e),l.parentNode.replaceChild(g,l),f.parentNode.removeChild(f),r.parentNode.replaceChild(i,r)}),r}},b}()),U=function(){var a=S.create("div");return a.appendChild(S.create("","0-")),a.appendChild(S.create("","2")),a.normalize(),2!==a.firstChild.length}();S.extend(T.fn,{normalize:function(){return U&&this.context.normalize(),this},jinzify:function(a){return this.filter(a||null).avoid("h-jinze").replace(R.jinze.touwei,function(a,b){var c=S.create("h-jinze","touwei");return c.innerHTML=b[0],0===a.index&&a.isEnd||1===a.index?c:""}).replace(R.jinze.wei,function(a,b){var c=S.create("h-jinze","wei");return c.innerHTML=b[0],0===a.index?c:""}).replace(R.jinze.tou,function(a,b){var c=S.create("h-jinze","tou");return c.innerHTML=b[0],0===a.index&&a.isEnd||1===a.index?c:""}).replace(R.jinze.middle,function(a,b){var c=S.create("h-jinze","middle");return c.innerHTML=b[0],0===a.index&&a.isEnd||1===a.index?c:""}).endAvoid().endFilter()},groupify:function(a){var a=S.extend({biaodian:!1,hanzi:!1,kana:!1,eonmun:!1,western:!1},a||{});return this.avoid("h-word, h-char-group"),a.biaodian&&this.replace(R.group.biaodian[0],d).replace(R.group.biaodian[1],d),(a.hanzi||a.cjk)&&this.wrap(R.group.hanzi,S.clone(S.create("h-char-group","hanzi cjk"))),a.western&&this.wrap(R.group.western,S.clone(S.create("h-word","western"))),a.kana&&this.wrap(R.group.kana,S.clone(S.create("h-char-group","kana"))),(a.eonmun||a.hangul)&&this.wrap(R.group.eonmun,S.clone(S.create("h-word","eonmun hangul"))),this.endAvoid(),this},charify:function(a){var a=S.extend({avoid:!0,biaodian:!1,punct:!1,hanzi:!1,latin:!1,ellinika:!1,kirillica:!1,kana:!1,eonmun:!1},a||{});return a.avoid&&this.avoid("h-char"),a.biaodian&&this.replace(R["char"].biaodian.all,c(a.biaodian)||function(a){return e(a.text)}).replace(R["char"].biaodian.liga,c(a.biaodian)||function(a){return e(a.text)}),(a.hanzi||a.cjk)&&this.wrap(R["char"].hanzi,c(a.hanzi||a.cjk)||S.clone(S.create("h-char","hanzi cjk"))),a.punct&&this.wrap(R["char"].punct.all,c(a.punct)||S.clone(S.create("h-char","punct"))),a.latin&&this.wrap(R["char"].latin,c(a.latin)||S.clone(S.create("h-char","alphabet latin"))),(a.ellinika||a.greek)&&this.wrap(R["char"].ellinika,c(a.ellinika||a.greek)||S.clone(S.create("h-char","alphabet ellinika greek"))),(a.kirillica||a.cyrillic)&&this.wrap(R["char"].kirillica,c(a.kirillica||a.cyrillic)||S.clone(S.create("h-char","alphabet kirillica cyrillic"))),a.kana&&this.wrap(R["char"].kana,c(a.kana)||S.clone(S.create("h-char","kana"))),(a.eonmun||a.hangul)&&this.wrap(R["char"].eonmun,c(a.eonmun||a.hangul)||S.clone(S.create("h-char","eonmun hangul"))),this.endAvoid(),this}}),S.extend(O,{isNodeNormalizeNormal:U,find:T,createBDGroup:d,createBDChar:e}),S.matches=O.find.matches,void["setMode","wrap","replace","revert","addBoundary","removeBoundary","avoid","endAvoid","filter","endFilter","jinzify","groupify","charify"].forEach(function(a){O.fn[a]=function(){return this.finder||(this.finder=O.find(this.context)),this.finder[a](arguments[0],arguments[1]),this}});var V={};V.writeOnCanvas=g,V.compareCanvases=h,V.detectFont=i,V.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=L||S.create("body"),g=S.create("div"),h=L?g:f,b="function"==typeof b?b:function(){};return c=["<style>",a,"</style>"].join(""),h.innerHTML+=c,f.appendChild(g),L||(f.style.background="",f.style.overflow="hidden",e=K.style.overflow,K.style.overflow="hidden",K.appendChild(f)),d=b(h,a),S.remove(h),L||(K.style.overflow=e),!!d}function d(b,c){var d;return a.getComputedStyle?d=J.defaultView.getComputedStyle(b,null).getPropertyValue(c):b.currentStyle&&(d=b.currentStyle[c]),d}var e="Webkit Moz ms".split(" "),f=S.create("h-test");return{columnwidth:b("columnWidth"),fontface:function(){var a;return c('@font-face { font-family: font; src: url("//"); }',function(b,c){var d=S.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}(),ruby:function(){var a,b=S.create("ruby"),c=S.create("rt"),e=S.create("rp");return b.appendChild(e),b.appendChild(c),K.appendChild(b),a="none"===d(e,"display")||"ruby"===d(b,"display")&&"ruby-text"===d(c,"display")?!0:!1,K.removeChild(b),b=null,c=null,e=null,a}(),"ruby-display":function(){var a=S.create("div");return a.innerHTML='<h-test-a style="display: ruby;"></h-test-a><h-test-b style="display: ruby-text-container;"></h-test-b>',"ruby"===a.querySelector("h-test-a").style.display&&"ruby-text-container"===a.querySelector("h-test-b").style.display}(),"ruby-interchar":function(){var a,b="inter-character",c=S.create("div");return c.innerHTML='<h-test style="-moz-ruby-position:'+b+";-ms-ruby-position:"+b+";-webkit-ruby-position:"+b+";ruby-position:"+b+';"></h-test>',a=c.querySelector("h-test").style,a.rubyPosition===b||a.WebkitRubyPosition===b||a.MozRubyPosition===b||a.msRubyPosition===b}(),textemphasis:b("textEmphasis"),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=!V.detectFont("test-for-unicode-range",'Arial, "Droid Sans"',"Q")}),a}(),writingmode:b("writingMode")}}(),V.initCond=function(a){var b,a=a||K,c="";for(var d in V.support)b=(V.support[d]?"":"no-")+d,a.classList.add(b),c+=b+" ";return c};var W=V.support["ruby-interchar"];S.extend(V,{renderRuby:function(a,b){var b=b||"ruby",c=S.qsa(b,a);S.qsa("rtc",a).concat(c).map(n),c.forEach(function(a){var b,c=a.classList;c.contains("complex")?b=l(a):c.contains("zhuyin")&&(b=W?k(a):j(a)),b&&a.parentNode.replaceChild(b,a)})},simplifyRubyClass:n,getZhuyinHTML:q,renderComplexRuby:l,renderSimpleRuby:j,renderInterCharRuby:k}),S.extend(V,{renderElem:function(a){this.renderRuby(a),this.renderDecoLine(a),this.renderDecoLine(a,"s, del"),this.renderEm(a)},renderDecoLine:function(a,b){var c=S.qsa(b||"u, ins",a),d=c.length;a:for(;d--;){var e=c[d],f=null;do{if(f=(f||e).previousSibling,!f)continue a;c[d-1]===f&&e.classList.add("adjacent")}while(S.isIgnorable(f))}},renderEm:function(a,b){var c=b?"qsa":"tag",b=b||"em",d=S[c](b,a);d.forEach(function(a){var b=O(a);V.support.textemphasis?b.avoid("rt, h-char").charify({biaodian:!0,punct:!0}):b.avoid("rt, h-char, h-char-group").jinzify().groupify({western:!0}).charify({hanzi:!0,biaodian:!0,punct:!0,latin:!0,ellinika:!0,kirillica:!0})})}}),O.normalize=V,O.localize=V,O.support=V.support,O.detectFont=V.detectFont,O.fn.initCond=function(){return this.condition.classList.add("han-js-rendered"),O.normalize.initCond(this.condition),this},void["Elem","DecoLine","Em","Ruby"].forEach(function(a){var b="render"+a;O.fn[b]=function(a){return O.normalize[b](this.context,a),this}}),S.extend(O.support,{heiti:!0,songti:O.detectFont('"Han Songti"'),"songti-gb":O.detectFont('"Han Songti GB"'),kaiti:O.detectFont('"Han Kaiti"'),fangsong:O.detectFont('"Han Fangsong"')}),O.correctBiaodian=function(a){var a=a||J,b=O.find(a);return b.avoid("h-char").replace(/([\u2018\u201c])/g,function(a){var b=O.createBDChar(a.text);return b.classList.add("bd-open","punct"),b}).replace(/([\u2019\u201d])/g,function(a){var b=O.createBDChar(a.text);return b.classList.add("bd-close","bd-end","punct"),b}),O.support.unicoderange?b:b.charify({biaodian:!0})},O.correctBasicBD=O.correctBiaodian,O.correctBD=O.correctBiaodian,S.extend(O.fn,{biaodian:null,correctBiaodian:function(){return this.biaodian=O.correctBiaodian(this.context),this},revertCorrectedBiaodian:function(){try{this.biaodian.revert("all")}catch(a){}return this}}),O.fn.correctBasicBD=O.fn.correctBiaodian,O.fn.revertBasicBD=O.fn.revertCorrectedBiaodian;var X="<<hws>>",Y=S.create("h-hws");Y.setAttribute("hidden",""),Y.innerHTML=" ";var Z;S.extend(O,{renderHWS:function(a,b){var c=b?"textarea, code, kbd, samp, pre":"textarea",d=b?"strict":"base",a=a||J,e=O.find(a); | ||
return e.avoid(c).replace(O.TYPESET.hws[d][0],t).replace(O.TYPESET.hws[d][1],t).replace(new RegExp("("+X+")+","g"),u).replace(/([\'"])\s(.+?)\s\1/g,v).replace(/\s[\u2018\u201c]/g,w).replace(/[\u2019\u201d]\s/g,w).normalize(),e}}),S.extend(O.fn,{renderHWS:function(a){return O.renderHWS(this.context,a),this},revertHWS:function(){return S.tag("h-hws",this.context).forEach(function(a){S.remove(a)}),this.HWS=[],this}});var $="bd-hangable",_="h-char.bd-hangable",aa='<h-cs hidden class="jinze-outer hangable-outer"> </h-cs>',ba=O.find.matches;O.support["han-space"]=x(),S.extend(O,{detectSpaceFont:x,isSpaceFontLoaded:x(),renderHanging:function(a){var a=a||J,b=O.find(a);return b.avoid("textarea, code, kbd, samp, pre").avoid(_).replace(R.jinze.hanging,function(a){if(/^[\x20\t\r\n\f]+$/.test(a.text))return"";var b,c,d,e,f=a.node.parentNode;return(b=S.parent(f,"h-jinze"))&&y(b),e=a.text.trim(),c=O.createBDChar(e),c.innerHTML="<h-inner>"+e+"</h-inner>",c.classList.add($),d=S.parent(f,"h-char.biaodian"),d?function(){return d.classList.add($),ba(f,"h-inner, h-inner *")?e:c.firstChild}():c}),b}}),S.extend(O.fn,{renderHanging:function(){var a=this.condition.classList;return O.isSpaceFontLoaded=x(),O.isSpaceFontLoaded&&a.contains("no-han-space")&&(a.remove("no-han-space"),a.add("han-space")),O.renderHanging(this.context),this},revertHanging:function(){return S.qsa("h-char.bd-hangable, h-cs.hangable-outer",this.context).forEach(function(a){var b=a.classList;b.remove("bd-hangable"),b.remove("hangable-outer")}),this}});var ca,da,ea="bd-jiya",fa="h-char.bd-jiya",ga="bd-consecutive",ha='<h-cs hidden class="jinze-outer jiya-outer"> </h-cs>',ba=O.find.matches;O.renderJiya=function(a){var a=a||J,b=O.find(a);return b.avoid("textarea, code, kbd, samp, pre, h-cs").avoid(fa).charify({avoid:!1,biaodian:A}).endAvoid().avoid("textarea, code, kbd, samp, pre, h-cs").replace(R.group.biaodian[0],B).replace(R.group.biaodian[1],B),b},S.extend(O.fn,{renderJiya:function(){return O.renderJiya(this.context),this},revertJiya:function(){return S.qsa("h-char.bd-jiya, h-cs.jiya-outer",this.context).forEach(function(a){var b=a.classList;b.remove("bd-jiya"),b.remove("jiya-outer")}),this}});var ia="textarea, code, kbd, samp, pre",ja=S.create("h-char","comb-liga");return S.extend(O,{isVowelCombLigaNormal:F(),isVowelICombLigaNormal:G(),isZhuyinCombLigaNormal:H(),isCombLigaNormal:G()(),substVowelCombLiga:I(O.TYPESET["display-as"]["comb-liga-vowel"]),substZhuyinCombLiga:I(O.TYPESET["display-as"]["comb-liga-zhuyin"]),substCombLigaWithPUA:I(O.TYPESET["display-as"]["comb-liga-pua"]),substInaccurateChar:function(a){var a=a||J,b=O.find(a);b.avoid(ia),O.TYPESET["inaccurate-char"].forEach(function(a){b.replace(new RegExp(a[0],"ig"),a[1])})}}),S.extend(O.fn,{"comb-liga-vowel":null,"comb-liga-vowel-i":null,"comb-liga-zhuyin":null,"inaccurate-char":null,substVowelCombLiga:function(){return this["comb-liga-vowel"]=O.substVowelCombLiga(this.context),this},substVowelICombLiga:function(){return this["comb-liga-vowel-i"]=O.substVowelICombLiga(this.context),this},substZhuyinCombLiga:function(){return this["comb-liga-zhuyin"]=O.substZhuyinCombLiga(this.context),this},substCombLigaWithPUA:function(){return O.isVowelCombLigaNormal()?O.isVowelICombLigaNormal()||(this["comb-liga-vowel-i"]=O.substVowelICombLiga(this.context)):this["comb-liga-vowel"]=O.substVowelCombLiga(this.context),O.isZhuyinCombLigaNormal()||(this["comb-liga-zhuyin"]=O.substZhuyinCombLiga(this.context)),this},revertVowelCombLiga:function(){try{this["comb-liga-vowel"].revert("all")}catch(a){}return this},revertVowelICombLiga:function(){try{this["comb-liga-vowel-i"].revert("all")}catch(a){}return this},revertZhuyinCombLiga:function(){try{this["comb-liga-zhuyin"].revert("all")}catch(a){}return this},revertCombLigaWithPUA:function(){try{this["comb-liga-vowel"].revert("all"),this["comb-liga-vowel-i"].revert("all"),this["comb-liga-zhuyin"].revert("all")}catch(a){}return this},substInaccurateChar:function(){return this["inaccurate-char"]=O.substInaccurateChar(this.context),this},revertInaccurateChar:function(){try{this["inaccurate-char"].revert("all")}catch(a){}return this}}),a.addEventListener("DOMContentLoaded",function(){var a;K.classList.contains("han-init")?O.init():(a=J.querySelector(".han-init-context"))&&(O.init=O(a).render())}),("undefined"==typeof b||b===!1)&&(a.Han=O),O}); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
1951403
17621
20
211
90
+ Addednormalize.css@4.2.0(transitive)
- Removednormalize.css@3.0.3(transitive)
Updatednormalize.css@^4.0.0