UNPKG

han-css

Version:

The CSS typography framework optimised for Hanzi

288 lines (287 loc) 49.5 kB
(function(){ var test, module, doc, div, makeArray, qsa, convertHtml, htmlEqual; test = QUnit.test; module = QUnit.module; doc = function(){ return document.cloneNode(true); }; div = function(){ return document.createElement('div'); }; makeArray = function(it){ return [].slice.call(it); }; qsa = function(context, q){ return makeArray(context.querySelectorAll(q)); }; convertHtml = function(html){ return html.toLowerCase().replace(/[\x20\t\f\s]{2,}/g, '').replace(/[\r\n]/g, '').replace(/="([^"]+)"/g, '=$1'); }; htmlEqual = function(act, exp, log){ act = convertHtml(act); exp = convertHtml(exp); return equal(act, exp, log); }; module('Basics'); test('Default rendering routine', function(){ var before, d; before = '<html lang="zh"><head><title>A辭Q</title></head><body><article><p></article></body></html>'; d = doc(); d.documentElement.innerHTML = before; Han(d.body, d.documentElement).render(); htmlEqual(d.body.innerHTML, '<article><p></p></article>'); equal(d.title, 'A辭Q'); equal(d.documentElement.classList.contains('han-js-rendered'), true); before = '<html lang="ja"><head><title>AノQ</title></head><body><article><p></article></body></html>'; d = doc(); d.documentElement.innerHTML = before; Han(d.body, d.documentElement).render(); htmlEqual(d.body.innerHTML, '<article><p></p></article>'); equal(d.title, 'AノQ'); equal(d.documentElement.classList.contains('han-js-rendered'), true); }); module('Normalisation'); test('Adjacent decoration lines', function(){ var d; d = div(); d.innerHTML = '<u>a</u><u>b</u>c<u>d</u>'; Han(d).renderDecoLine(); htmlEqual(d.innerHTML, '<u>a</u><u class="adjacent">b</u>c<u>d</u>'); d.innerHTML = '<u></u><u></u><u></u>'; Han(d).renderDecoLine(); htmlEqual(d.innerHTML, '<u></u><u class="adjacent"></u><u></u>'); d.innerHTML = '<u>註記元素甲</u><ins>增訂元素甲</ins><u>註記元素乙</u>一般文字節點<ins>增訂元素乙</ins><u>註記元素丙</u><ins>增訂元素丙</ins>一般文字節點;<s>訛訊元素甲</s><del>刪訂元素甲</del><s>訛訊元素乙</s>一般文字節點<del>刪訂元素乙</del><s>訛訊元素乙</s><del>刪訂元素丙</del>。'; Han(d).renderDecoLine(); htmlEqual(d.innerHTML, '<u>註記元素甲</u><ins class="adjacent">增訂元素甲</ins><u class="adjacent">註記元素乙</u>一般文字節點<ins>增訂元素乙</ins><u class="adjacent">註記元素丙</u><ins class="adjacent">增訂元素丙</ins>一般文字節點;<s>訛訊元素甲</s><del>刪訂元素甲</del><s>訛訊元素乙</s>一般文字節點<del>刪訂元素乙</del><s>訛訊元素乙</s><del>刪訂元素丙</del>。'); d.innerHTML = '<u>註記元素丁</u><s>訛訊元素丁</s><ins>增訂元素丁</ins><del>刪訂元素丁</del>。'; Han(d).renderDecoLine(); htmlEqual(d.innerHTML, '<u>註記元素丁</u><s>訛訊元素丁</s><ins>增訂元素丁</ins><del>刪訂元素丁</del>。'); }); test('Emphasis marks', function(a){ var support, d; support = Han.support.textemphasis; d = div(); d.innerHTML = '<em>測試abc</em>'; Han(d).renderEm(); if (support) { htmlEqual(d.innerHTML, '<em>測試abc</em>'); } else { htmlEqual(d.innerHTML, '<em><h-char class=hanzi cjk></h-char><h-char class=hanzi cjk></h-char><h-word class=western><h-char class=alphabet latin>a</h-char><h-char class=alphabet latin>b</h-char><h-char class=alphabet latin>c</h-char></h-word></em>'); } d.innerHTML = '<em>「測『試』」,test ‘this!’。</em>'; Han(d).renderEm(); if (support) { htmlEqual(d.innerHTML, '<em><h-char unicode=300c class=biaodian cjk bd-open></h-char><h-char unicode=300e class=biaodian cjk bd-open></h-char><h-char unicode=300f class=biaodian cjk bd-close bd-end></h-char><h-char unicode=300d class=biaodian cjk bd-close bd-end></h-char><h-char unicode=ff0c class=biaodian cjk bd-end bd-cop></h-char>test <h-char class=punct></h-char>this<h-char class=punct>!</h-char><h-char class=punct></h-char><h-char unicode=3002 class=biaodian cjk bd-end bd-cop></h-char></em>'); } else { a.domEqual(d.firstChild, $('<em><h-jinze class="tou"><h-char unicode="300c" class="biaodian cjk bd-open"></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="touwei"><h-char unicode="300e" class="biaodian cjk bd-open"></h-char><h-char class="hanzi cjk"></h-char><h-char unicode="300f" class="biaodian cjk bd-close bd-end"></h-char><h-char unicode="300d" class="biaodian cjk bd-close bd-end"></h-char><h-char unicode="ff0c" class="biaodian cjk bd-end bd-cop"></h-char></h-jinze><h-word class="western"><h-char class="alphabet latin">t</h-char><h-char class="alphabet latin">e</h-char><h-char class="alphabet latin">s</h-char><h-char class="alphabet latin">t</h-char></h-word> <h-word class="western"><h-char class="punct"></h-char><h-char class="alphabet latin">t</h-char><h-char class="alphabet latin">h</h-char><h-char class="alphabet latin">i</h-char><h-char class="alphabet latin">s</h-char><h-char class="punct">!</h-char></h-word><h-jinze class="wei"><h-word class="western"><h-char class="punct"></h-char></h-word><h-char unicode="3002" class="biaodian cjk bd-end bd-cop"></h-char></h-jinze></em>')); } d.innerHTML = '<em>𫞵𫞦𠁻𠁶〇⼌⿕⺃⻍⻰⻳⿸⿷⿳</em>'; Han(d).renderEm(); if (support) { htmlEqual(d.innerHTML, '<em>𫞵𫞦𠁻𠁶〇⼌⿕⺃⻍⻰⻳⿸⿷⿳</em>'); } else { htmlEqual(d.innerHTML, '<em><h-char class=hanzi cjk>𫞵</h-char><h-char class=hanzi cjk>𫞦</h-char><h-char class=hanzi cjk>𠁻</h-char><h-char class=hanzi cjk>𠁶</h-char><h-char class=hanzi cjk></h-char><h-char class=hanzi cjk></h-char><h-char class=hanzi cjk></h-char><h-char class=hanzi cjk></h-char><h-char class=hanzi cjk></h-char><h-char class=hanzi cjk></h-char><h-char class=hanzi cjk></h-char><h-char class=hanzi cjk></h-char><h-char class=hanzi cjk></h-char><h-char class=hanzi cjk></h-char></em>'); } d.innerHTML = '<em>¡Hola! Ὅμηρος Свети</em>'; Han(d).renderEm(); if (support) { return htmlEqual(d.innerHTML, '<em><h-char class=punct>¡</h-char>hola<h-char class=punct>!</h-char> ὅμηρος свети</em>'); } else { return htmlEqual(d.innerHTML, '<em><h-word class=western><h-char class=punct>¡</h-char><h-char class=alphabet latin>h</h-char><h-char class=alphabet latin>o</h-char><h-char class=alphabet latin>l</h-char><h-char class=alphabet latin>a</h-char><h-char class=punct>!</h-char></h-word> <h-word class=western><h-char class=alphabet ellinika greek></h-char><h-char class=alphabet ellinika greek>μ</h-char><h-char class=alphabet ellinika greek>η</h-char><h-char class=alphabet ellinika greek>ρ</h-char><h-char class=alphabet ellinika greek>ο</h-char><h-char class=alphabet ellinika greek>ς</h-char></h-word> <h-word class=western><h-char class=alphabet kirillica cyrillic>с</h-char><h-char class=alphabet kirillica cyrillic>в</h-char><h-char class=alphabet kirillica cyrillic>е</h-char><h-char class=alphabet kirillica cyrillic>т</h-char><h-char class=alphabet kirillica cyrillic>и</h-char></h-word></em>'); } }); test('Interlinear annotations (Ruby)', function(a){ var support, supportZhuyin, supportRubyDisplay, d, result; support = Han.support.ruby; supportZhuyin = Han.support['ruby-interchar']; supportRubyDisplay = Han.support['ruby-display']; d = div(); d.innerHTML = '<ruby><rt>zi</ruby>'; Han(d).renderRuby(); if (support) { htmlEqual(d.innerHTML, '<ruby><rt>zi</rt></ruby>'); } else { htmlEqual(d.innerHTML, '<h-ruby><h-ru annotation=zi><rt>zi</rt></h-ru></h-ruby>'); } d.innerHTML = '<ruby class="zhuyin">\n 事<rt>ㄕˋ</rt><rt>ㄑㄧㄥˊ</rt>\n 看<rt>ㄎㄢˋ</rt>\n 冷<rt>ㄌㄥˇ</rt><rt>ㄋㄨㄢˇ</rt>\n</ruby>'; Han(d).renderRuby(); qsa(d, 'h-ru').forEach(function(it){ it.removeAttribute('form'); it.removeAttribute('zhuyin'); it.removeAttribute('diao'); it.removeAttribute('length'); }); if (supportZhuyin) { htmlEqual(d.innerHTML, '<ruby class=zhuyin><rt><h-zhuyin length=1 diao=ˋ><h-yin></h-yin><h-diao>ˋ</h-diao></h-zhuyin></rt><rt><h-zhuyin length=3 diao=ˊ><h-yin>ㄑㄧㄥ</h-yin><h-diao>ˊ</h-diao></h-zhuyin></rt><rt><h-zhuyin length=2 diao=ˋ><h-yin>ㄎㄢ</h-yin><h-diao>ˋ</h-diao></h-zhuyin></rt><rt><h-zhuyin length=2 diao=ˇ><h-yin>ㄌㄥ</h-yin><h-diao>ˇ</h-diao></h-zhuyin></rt><rt><h-zhuyin length=3 diao=ˇ><h-yin>ㄋㄨㄢ</h-yin><h-diao>ˇ</h-diao></h-zhuyin></rt></ruby>'); } else { a.domEqual(d.firstChild, $('<h-ruby class="zhuyin"><h-ru>\n 事<h-zhuyin length="1" diao="ˋ"><h-yin></h-yin><h-diao>ˋ</h-diao></h-zhuyin></h-ru><h-ru><h-zhuyin length="3" diao="ˊ"><h-yin>ㄑㄧㄥ</h-yin><h-diao>ˊ</h-diao></h-zhuyin></h-ru><h-ru>\n 看<h-zhuyin length="2" diao="ˋ"><h-yin>ㄎㄢ</h-yin><h-diao>ˋ</h-diao></h-zhuyin></h-ru><h-ru>\n 冷<h-zhuyin length="2" diao="ˇ"><h-yin>ㄌㄥ</h-yin><h-diao>ˇ</h-diao></h-zhuyin></h-ru><h-ru><h-zhuyin length="3" diao="ˇ"><h-yin>ㄋㄨㄢ</h-yin><h-diao>ˇ</h-diao></h-zhuyin></h-ru>\n</h-ruby>')); } d.innerHTML = '<p>\n <ruby class="complex">\n 辛亥革命發生在<rb>1911-</rb><rb>10-</rb><rb>10,</rb>\n <rtc><rt></rt><rt></rt><rt></rt></rtc>\n <rtc><rt rbspan="3">清宣統三年</rt></rtc>\n 那天革命先烈們一同推翻了帝制。\n </ruby>\n</p>'; Han(d).renderRuby(); d.querySelector('h-ruby').removeAttribute('doubleline'); qsa(d, 'h-ru').forEach(function(it){ it.removeAttribute('annotation'); it.removeAttribute('order'); it.removeAttribute('span'); }); htmlEqual(d.innerHTML, '<p><h-ruby class=complex>辛亥革命發生在<h-ru class=complex><h-ru class=complex><rb>1911-</rb><rt></rt></h-ru><h-ru class=complex><rb>10-</rb><rt></rt></h-ru><h-ru class=complex><rb>10,</rb><rt></rt></h-ru><rt rbspan=3>清宣統三年</rt></h-ru>那天革命先烈們一同推翻了帝制。</h-ruby></p>'); d.innerHTML = '<p>\n <ruby class="complex">\n 「<rb></rb><rb></rb><rb></rb>」\n <rtc class="reading romanization">\n <rt rbspan="2">Niǔyuē</rt><rt>Shì</rt>\n </rtc>\n <rtc class="reading annotation">\n <rt rbspan="3">New York City</rt>\n </rtc>\n </ruby>\n\n <ruby class="complex">\n 『<rb></rb><rb></rb><rb></rb>』\n <rtc class="reading annotation">\n <rt rbspan="3">New York City</rt>\n </rtc>\n <rtc class="reading romanization">\n <rt rbspan="2">Niǔyuē</rt><rt>Shì</rt>\n </rtc>\n </ruby>\n\n <ruby class="complex">\n ‘<rb></rb><rb></rb><rb></rb>’\n <rtc class="reading annotation">\n <rt rbspan="3">New York City</rt>\n </rtc>\n <rtc class="reading romanization">\n <rt>niǔ</rt><rt>yuē</rt><rt>shì</rt></rtc>\n </ruby>\n\n <ruby class="complex">\n &#x201E;<rb></rb><rb></rb><rb></rb>&#x201F;\n <rtc class="reading romanization">\n <rt>niǔ</rt><rt>yuē</rt><rt>shì</rt>\n </rtc>\n <rtc class="reading annotation">\n <rt rbspan="3">New York City</rt>\n </rtc>\n </ruby>\n\n <ruby class="complex">\n ⸘<rb></rb><rb></rb><rb></rb>‽\n <rtc class="reading annotation">\n <rt rbspan="3">New York City</rt>\n </rtc>\n <rtc class="reading annotation">\n <rt rbspan="3">世界之都</rt>\n </rtc>\n </ruby>。\n<p>\n <ruby class="complex">\n <rb></rb><rb></rb><rb></rb><rb></rb><rb></rb><rb></rb>,\n <rb></rb><rb></rb><rb></rb><rb></rb><rb></rb>!\n\n <rtc class="romanization">\n <rt>san1</rt><rt>shih2</rt><rt>liu4</rt><rt>ko0</rt><rt>ya2</rt><rt>ch\'ih3</rt><rt>cho1</rt><rt rbspan="2">tuirh4</rt><rt>ssu1</rt><rt>ta3</rt>\n </rtc>\n <rtc class="romanization">\n <rt>sān</rt><rt>shí</rt><rt>liù</rt><rt>ge</rt><rt></rt><rt>chǐ</rt><rt>zhuō</rt><rt rbspan="2">duìr</rt><rt></rt><rt></rt>\n </rtc>\n </ruby>'; Han(d).renderRuby(); a.domEqual(d.firstChild, $('<p>\n <h-ruby doubleline="true" class="complex">\n 「<h-ru annotation="true" order="1" span="3" class="complex"><h-ru annotation="true" order="0" span="2" class="complex"><rb></rb><rb></rb><rt rbspan="2">Niǔyuē</rt></h-ru><h-ru annotation="true" order="0" span="1" class="complex"><rb></rb><rt>Shì</rt></h-ru><rt rbspan="3">New York City</rt></h-ru>」\n \n \n </h-ruby>\n\n <h-ruby doubleline="true" class="complex">\n 『<h-ru annotation="true" order="0" span="3" class="complex"><h-ru annotation="true" order="1" span="2" class="complex"><rb></rb><rb></rb><rt rbspan="2">Niǔyuē</rt></h-ru><h-ru annotation="true" order="1" span="1" class="complex"><rb></rb><rt>Shì</rt></h-ru><rt rbspan="3">New York City</rt></h-ru>』\n \n \n </h-ruby>\n\n <h-ruby doubleline="true" class="complex">\n ‘<h-ru annotation="true" order="0" span="3" class="complex"><h-ru annotation="true" order="1" span="1" class="complex"><rb></rb><rt>niǔ</rt></h-ru><h-ru annotation="true" order="1" span="1" class="complex"><rb></rb><rt>yuē</rt></h-ru><h-ru annotation="true" order="1" span="1" class="complex"><rb></rb><rt>shì</rt></h-ru><rt rbspan="3">New York City</rt></h-ru>’\n \n \n </h-ruby>\n\n <h-ruby doubleline="true" class="complex">\n „<h-ru annotation="true" order="1" span="3" class="complex"><h-ru annotation="true" order="0" span="1" class="complex"><rb></rb><rt>niǔ</rt></h-ru><h-ru annotation="true" order="0" span="1" class="complex"><rb></rb><rt>yuē</rt></h-ru><h-ru annotation="true" order="0" span="1" class="complex"><rb></rb><rt>shì</rt></h-ru><rt rbspan="3">New York City</rt></h-ru>‟\n \n \n </h-ruby>\n\n <h-ruby doubleline="true" class="complex">\n ⸘<h-ru annotation="true" order="1" span="3" class="complex"><h-ru annotation="true" order="0" span="3" class="complex"><rb></rb><rb></rb><rb></rb><rt rbspan="3">New York City</rt></h-ru><rt rbspan="3">世界之都</rt></h-ru>‽\n \n \n </h-ruby>。\n</p><p>\n <h-ruby doubleline="true" class="complex">\n <h-ru annotation="true" order="1" span="1" class="complex"><h-ru annotation="true" order="0" span="1" class="complex"><rb></rb><rt>san1</rt></h-ru><rt>sān</rt></h-ru><h-ru annotation="true" order="1" span="1" class="complex"><h-ru annotation="true" order="0" span="1" class="complex"><rb></rb><rt>shih2</rt></h-ru><rt>shí</rt></h-ru><h-ru annotation="true" order="1" span="1" class="complex"><h-ru annotation="true" order="0" span="1" class="complex"><rb></rb><rt>liu4</rt></h-ru><rt>liù</rt></h-ru><h-ru annotation="true" order="1" span="1" class="complex"><h-ru annotation="true" order="0" span="1" class="complex"><rb></rb><rt>ko0</rt></h-ru><rt>ge</rt></h-ru><h-ru annotation="true" order="1" span="1" class="complex"><h-ru annotation="true" order="0" span="1" class="complex"><rb></rb><rt>ya2</rt></h-ru><rt></rt></h-ru><h-ru annotation="true" order="1" span="1" class="complex"><h-ru annotation="true" order="0" span="1" class="complex"><rb></rb><rt>ch\'ih3</rt></h-ru><rt>chǐ</rt></h-ru>,\n <h-ru annotation="true" order="1" span="1" class="complex"><h-ru annotation="true" order="0" span="1" class="complex"><rb></rb><rt>cho1</rt></h-ru><rt>zhuō</rt></h-ru><h-ru annotation="true" order="1" span="2" class="complex"><h-ru annotation="true" order="0" span="2" class="complex"><rb></rb><rb></rb><rt rbspan="2">tuirh4</rt></h-ru><rt rbspan="2">duìr</rt></h-ru><h-ru annotation="true" order="1" span="1" class="complex"><h-ru annotation="true" order="0" span="1" class="complex"><rb></rb><rt>ssu1</rt></h-ru><rt></rt></h-ru><h-ru annotation="true" order="1" span="1" class="complex"><h-ru annotation="true" order="0" span="1" class="complex"><rb></rb><rt>ta3</rt></h-ru><rt></rt></h-ru>!\n\n \n \n </h-ruby></p>')); d.innerHTML = '<p>\n <ruby class="complex">\n <rb></rb>\n <rb></rb>\n <rb></rb>\n <rb></rb>\n <rb></rb>\n <rb></rb>。\n\n <rtc class="zhuyin">\n <rt>ㄐㄧㆵ͘</rt>\n <rt>ㄌㄤˊ</rt>\n <rt>ㄏㄨㄢˊ</rt>\n <rt>ㄌㄜˋ</rt>\n <rt>ㄐㄧㆵ͘</rt>\n <rt>ㄧㆫ˫</rt>\n </rtc>\n\n <rtc class="romanization">\n <rt>Tsi̍t</rt>\n <rt>lâng</rt>\n <rt rbspan="2">hoân‑ló</rt>\n <rt>chi̍t</rt>\n <rt>iūⁿ</rt>\n </rtc>\n\n <rtc class="romanization"><rt>Tsi̍t</rt>\n <rt>lâng</rt>\n <rt rbspan="2">huân-ló</rt>\n <rt>tsi̍t</rt>\n <rt>iūnn</rt>\n </rtc>\n </ruby>\n</p>'; Han(d).renderRuby(); result = []; $(d).find('rb, h-zhuyin').each(function(){ return result.push($(this).text()); }); return equal(result.join(','), '一,ㄐㄧㆵ͘,人,ㄌㄤˊ,煩,ㄏㄨㄢˊ,惱,ㄌㄜˋ,一,ㄐㄧㆵ͘,樣,ㄧㆫ˫'); }); module('Advanced typesetting features'); test('Hanzi-Western script mixed spacing (HWS)', function(){ var d, $$qo, $$qi; d = div(); d.innerHTML = '測試test測試123測試'; Han(d).renderHWS(); htmlEqual(d.innerHTML, '測試<h-hws hidden=""> </h-hws>test<h-hws hidden=""> </h-hws>測試<h-hws hidden=""> </h-hws>123<h-hws hidden=""> </h-hws>測試'); d.innerHTML = '中文加上 <code>some code</code>,中文加上 <code>some code</code> 放在中間,<code>some code</code> 加上中文,一般的 English。'; Han(d).renderHWS(); htmlEqual(d.innerHTML, '中文加上 <code>some code</code>,中文加上 <code>some code</code> 放在中間,<code>some code</code> 加上中文,一般的 English。'); d.innerHTML = '中文加上<code>some code</code>,中文加上<code>some code</code>放在中間,<code>some code</code>加上中文,一般的English。'; Han(d).renderHWS(); htmlEqual(d.innerHTML, '中文加上<h-hws hidden=""> </h-hws><code>some code</code>,中文加上<h-hws hidden=""> </h-hws><code>some code</code><h-hws hidden=""> </h-hws>放在中間,<code>some code</code><h-hws hidden=""> </h-hws>加上中文,一般的<h-hws hidden=""> </h-hws>English。'); d.innerHTML = '測試 test 測試 123 測試<code>測試 test測試。</code>'; Han(d).renderHWS(true); htmlEqual(d.innerHTML, '測試<h-hws hidden=""> </h-hws>test<h-hws hidden=""> </h-hws>測試<h-hws hidden=""> </h-hws>123<h-hws hidden=""> </h-hws>測試<code>測試 test測試。</code>'); d.innerHTML = '測試,test測試123。'; Han(d).renderHWS(); htmlEqual(d.innerHTML, '測試,test<h-hws hidden=""> </h-hws>測試<h-hws hidden=""> </h-hws>123。'); d.innerHTML = '測試α測試β測試'; Han(d).renderHWS(); htmlEqual(d.innerHTML, '測試<h-hws hidden=""> </h-hws>α<h-hws hidden=""> </h-hws>測試<h-hws hidden=""> </h-hws>β<h-hws hidden=""> </h-hws>測試'); d.innerHTML = 'я測試у測試ь測試в'; Han(d).renderHWS(); htmlEqual(d.innerHTML, 'я<h-hws hidden=""> </h-hws>測試<h-hws hidden=""> </h-hws>у<h-hws hidden=""> </h-hws>測試<h-hws hidden=""> </h-hws>ь<h-hws hidden=""> </h-hws>測試<h-hws hidden=""> </h-hws>в'); d.innerHTML = 'A㐀a㘻a䶵a𠀀a𫠝a〇a⿸a⻍a⻰aのa'; Han(d).renderHWS(); htmlEqual(d.innerHTML, 'a<h-hws hidden=""> </h-hws><h-hws hidden=""> </h-hws>a<h-hws hidden=""> </h-hws><h-hws hidden=""> </h-hws>a<h-hws hidden=""> </h-hws><h-hws hidden=""> </h-hws>a<h-hws hidden=""> </h-hws>𠀀<h-hws hidden=""> </h-hws>a<h-hws hidden=""> </h-hws>𫠝<h-hws hidden=""> </h-hws>a<h-hws hidden=""> </h-hws><h-hws hidden=""> </h-hws>a<h-hws hidden=""> </h-hws><h-hws hidden=""> </h-hws>a<h-hws hidden=""> </h-hws><h-hws hidden=""> </h-hws>a<h-hws hidden=""> </h-hws><h-hws hidden=""> </h-hws>a<h-hws hidden=""> </h-hws><h-hws hidden=""> </h-hws>a'); d.innerHTML = '天然ê上好。荷Ὅ̴̊̌ηρος̃馬。貓К҉о҈ш҉к҈а҈咪。'; Han(d).renderHWS(); htmlEqual(d.innerHTML, '天然<h-hws hidden=""> </h-hws><h-hws hidden=""> </h-hws>上好。荷<h-hws hidden=""> </h-hws>ὅ̴̊̌ηρος̃<h-hws hidden=""> </h-hws>馬。貓<h-hws hidden=""> </h-hws>к҉о҈ш҉к҈а҈<h-hws hidden=""> </h-hws>咪。'); d.innerHTML = '去<u>Europe</u>旅行。'; Han(d).renderHWS(); htmlEqual(d.innerHTML, '去<h-hws hidden=""> </h-hws><u>europe</u><h-hws hidden=""> </h-hws>旅行。'); d.innerHTML = '去<!-- x -->Europe<wbr><!---->旅行。'; Han(d).renderHWS(); htmlEqual(d.innerHTML, '去<h-hws hidden=""> </h-hws><!-- x -->europe<h-hws hidden=""> </h-hws><wbr><!---->旅行。'); d.innerHTML = '測試¿測試?測試¡測試!為‘什’麼;為“什”麼?'; Han(d).renderHWS(); $$qo = jQuery('h-hws.quote-outer', d); equal($$qo.length, 4); $$qo.removeAttr('class'); htmlEqual(d.innerHTML, "測試<h-hws hidden=\"\"> </h-hws>¿測試?<h-hws hidden=\"\"> </h-hws>測試<h-hws hidden=\"\"> </h-hws>¡測試!<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>‘什’<h-hws hidden=\"\"> </h-hws>麼;<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>“什”<h-hws hidden=\"\"> </h-hws>麼?"); d.innerHTML = '單\'引\'號和雙"引"號和單\'引\'號和雙"引"號.'; Han(d).renderHWS(); $$qi = jQuery('h-hws.quote-inner', d); equal($$qi.length, 8); $$qi.removeAttr('class'); htmlEqual(d.innerHTML, "單<h-hws hidden=\"\"> </h-hws>'<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>'<h-hws hidden=\"\"> </h-hws>號和雙<h-hws hidden=\"\"> </h-hws>\"<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>\"<h-hws hidden=\"\"> </h-hws>號和單<h-hws hidden=\"\"> </h-hws>'<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>'<h-hws hidden=\"\"> </h-hws>號和雙<h-hws hidden=\"\"> </h-hws>\"<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>\"<h-hws hidden=\"\"> </h-hws>號."); d.innerHTML = '\'單x引x號\'"雙x引x號".'; Han(d).renderHWS(); $$qi = jQuery('h-hws.quote-inner', d); equal($$qi.length, 4); $$qi.removeAttr('class'); htmlEqual(d.innerHTML, "'<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>x<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>x<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>'\"<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>x<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>x<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>\"."); d.innerHTML = '單\'引\'號和雙"引"號和單\'引\'號和雙"引"號.'; Han(d).renderHWS(); $$qi = jQuery('h-hws.quote-inner', d); equal($$qi.length, 8); $$qi.removeAttr('class'); htmlEqual(d.innerHTML, "單<h-hws hidden=\"\"> </h-hws>'<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>'<h-hws hidden=\"\"> </h-hws>號和雙<h-hws hidden=\"\"> </h-hws>\"<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>\"<h-hws hidden=\"\"> </h-hws>號和單<h-hws hidden=\"\"> </h-hws>'<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>'<h-hws hidden=\"\"> </h-hws>號和雙<h-hws hidden=\"\"> </h-hws>\"<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>\"<h-hws hidden=\"\"> </h-hws>號."); d.innerHTML = "這是一段包含單'<u></u>'號和雙<u>\"引</u>\"號'<b>單引號</b>'和\"<b>雙引號\"</b>的文字."; Han(d).renderHWS(); $$qi = jQuery('h-hws.quote-inner', d); equal($$qi.length, 8); $$qi.removeAttr('class'); htmlEqual(d.innerHTML, "這是一段包含單<h-hws hidden=\"\"> </h-hws>'<h-hws hidden=\"\"> </h-hws><u></u><h-hws hidden=\"\"> </h-hws>'<h-hws hidden=\"\"> </h-hws>號和雙<h-hws hidden=\"\"> </h-hws><u>\"<h-hws hidden=\"\"> </h-hws></u><h-hws hidden=\"\"> </h-hws>\"<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>'<h-hws hidden=\"\"> </h-hws><b>單引號</b><h-hws hidden=\"\"> </h-hws>'<h-hws hidden=\"\"> </h-hws><h-hws hidden=\"\"> </h-hws>\"<h-hws hidden=\"\"> </h-hws><b>雙引號<h-hws hidden=\"\"> </h-hws>\"</b><h-hws hidden=\"\"> </h-hws>的文字."); d.innerHTML = '你是咧com<u><i>啥物</i></u>plain啦!'; Han(d).renderHWS(); htmlEqual(d.innerHTML, '你是咧<h-hws hidden=""> </h-hws>com<h-hws hidden=""> </h-hws><u><i>啥物</i></u><h-hws hidden=""> </h-hws>plain<h-hws hidden=""> </h-hws>啦!'); d.innerHTML = '<u class="pn">美國</u><span lang="en">Chicago</span><em></em>這架飛船的目的地。'; Han(d).renderHWS(); htmlEqual(d.innerHTML, '<u class=pn>美國</u><h-hws hidden=""> </h-hws><span lang=en>chicago</span><h-hws hidden=""> </h-hws><em></em>這架飛船的目的地。'); d.innerHTML = '<p>不知道是不是<u lang="en"><!-- comment --><wbr><!-- comment --><wbr><!-- comment -->like this</u>你用「元件檢閱器」看看。</p>'; Han(d).renderHWS(); return htmlEqual(d.innerHTML, '<p>不知道是不是<h-hws hidden=""> </h-hws><u lang=en><!-- comment --><wbr><!-- comment --><wbr><!-- comment -->like this</u><h-hws hidden=""> </h-hws>你用「元件檢閱器」看看。</p>'); }); test('Biaodian jiya', function(a){ var d; d = div(); d.innerHTML = '<p>「字『字』?」字「字『字』」字?</p>'; Han(d).renderJiya(); a.domEqual(d.firstChild, $('<p><h-char unicode="300c" class="biaodian cjk bd-open bd-jiya"><h-inner></h-inner></h-char><h-char unicode="300e" class="biaodian cjk bd-open bd-jiya"><h-inner></h-inner></h-char><h-char unicode="300f" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char unicode="ff1f" class="biaodian cjk bd-end bd-jiya bd-consecutive" prev="bd-close bd-end"><h-inner></h-inner></h-char><h-char unicode="300d" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive end-portion" prev="bd-end"><h-inner></h-inner></h-char><h-char unicode="300c" class="biaodian cjk bd-open bd-jiya"><h-inner></h-inner></h-char><h-char unicode="300e" class="biaodian cjk bd-open bd-jiya"><h-inner></h-inner></h-char><h-char unicode="300f" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char unicode="300d" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive end-portion" prev="bd-close bd-end"><h-inner></h-inner></h-char><h-char unicode="ff1f" class="biaodian cjk bd-end bd-jiya"><h-inner></h-inner></h-char></p>')); d.innerHTML = '<p>字、「字」字,(字)字……「字」。'; Han(d).renderJiya(); a.domEqual(d.firstChild, $('<p><h-char unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char unicode="300c" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion" prev="bd-end bd-cop"><h-inner></h-inner></h-char><h-char unicode="300d" class="biaodian cjk bd-close bd-end bd-jiya"><h-inner></h-inner></h-char><h-char unicode="ff0c" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char unicode="ff08" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion" prev="bd-end bd-cop"><h-inner></h-inner></h-char><h-char unicode="ff09" class="biaodian cjk bd-close bd-end bd-jiya"><h-inner></h-inner></h-char><h-char unicode="2026" class="biaodian cjk bd-liga bd-jiya bd-consecutive"><h-inner>……</h-inner></h-char><h-char unicode="300c" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion" prev="bd-liga"><h-inner></h-inner></h-char><h-char unicode="300d" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char unicode="3002" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive end-portion" prev="bd-close bd-end"><h-inner></h-inner></h-char></p>')); d.innerHTML = '<p>《書名》〈篇名〉(內容)'; Han(d).renderJiya(); a.domEqual(d.firstChild, $('<p><h-char unicode="300a" class="biaodian cjk bd-open bd-jiya"><h-inner></h-inner></h-char>書名<h-char unicode="300b" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char unicode="3008" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion" prev="bd-close bd-end"><h-inner></h-inner></h-char>篇名<h-char unicode="3009" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char unicode="ff08" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion" prev="bd-close bd-end"><h-inner></h-inner></h-char>內容<h-char unicode="ff09" class="biaodian cjk bd-close bd-end bd-jiya"><h-inner></h-inner></h-char></p>')); if (!Han.support.textemphasis) { d.innerHTML = '<p><em>《書名》〈篇名〉(內容)「『好』、不好」</em>'; Han(d).renderElem().renderJiya(); a.domEqual(d.firstChild, $('<p><em><h-cs class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="tou"><h-char unicode="300a" class="biaodian cjk bd-open bd-jiya"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="300b" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></h-jinze><h-cs prev="bd-close bd-end" next="bd-open" class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="tou"><h-char prev="bd-close bd-end" unicode="3008" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="3009" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></h-jinze><h-cs prev="bd-close bd-end" next="bd-open" class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="tou"><h-char prev="bd-close bd-end" unicode="ff08" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="ff09" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></h-jinze><h-cs prev="bd-close bd-end" next="bd-open" class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="touwei"><h-char prev="bd-close bd-end" unicode="300c" class="biaodian cjk bd-open bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char prev="bd-open" unicode="300e" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char><h-char unicode="300f" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char prev="bd-close bd-end" unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char></h-jinze><h-cs next="bd-open" class="jinze-outer jiya-outer bd-end bd-cop end-portion" hidden=""> </h-cs><h-char class="hanzi cjk"></h-char><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="300d" class="biaodian cjk bd-close bd-end bd-jiya"><h-inner></h-inner></h-char></h-jinze><h-cs class="jinze-outer jiya-outer" hidden=""> </h-cs></em></p>')); d.innerHTML = '<p><em>內容《書名》〈篇名〉(內容)「好、『不好』」</em>'; Han(d).renderElem().renderJiya(); a.domEqual(d.firstChild, $('<p><em><h-char class="hanzi cjk"></h-char><h-char class="hanzi cjk"></h-char><h-cs class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="tou"><h-char unicode="300a" class="biaodian cjk bd-open bd-jiya"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="300b" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></h-jinze><h-cs prev="bd-close bd-end" next="bd-open" class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="tou"><h-char prev="bd-close bd-end" unicode="3008" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="3009" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></h-jinze><h-cs prev="bd-close bd-end" next="bd-open" class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="tou"><h-char prev="bd-close bd-end" unicode="ff08" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="ff09" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></h-jinze><h-cs prev="undefined" next="bd-open" class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="touwei"><h-char prev="bd-close bd-end" unicode="300c" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char><h-char unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive"><h-inner></h-inner></h-char></h-jinze><h-cs prev="bd-end bd-cop" next="bd-open" class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="tou"><h-char prev="bd-end bd-cop" unicode="300e" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="300f" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char prev="bd-close bd-end" unicode="300d" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char></h-jinze><h-cs class="jinze-outer jiya-outer bd-close bd-end end-portion" hidden=""> </h-cs></em></p>')); d.innerHTML = '<p>內容<em>《書名》〈篇名〉(內容)「好」、『不好』</em>'; Han(d).renderElem().renderJiya(); return a.domEqual(d.firstChild, $('<p>內容<em><h-cs class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="tou"><h-char unicode="300a" class="biaodian cjk bd-open bd-jiya"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="300b" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></h-jinze><h-cs prev="bd-close bd-end" next="bd-open" class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="tou"><h-char prev="bd-close bd-end" unicode="3008" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="3009" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></h-jinze><h-cs prev="bd-close bd-end" next="bd-open" class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="tou"><h-char prev="bd-close bd-end" unicode="ff08" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="ff09" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></h-jinze><h-cs prev="bd-close bd-end" next="bd-open" class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="touwei"><h-char prev="bd-close bd-end" unicode="300c" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char><h-char unicode="300d" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char prev="bd-close bd-end" unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive"><h-inner></h-inner></h-char></h-jinze><h-cs prev="bd-end bd-cop" next="bd-open" class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="tou"><h-char prev="bd-end bd-cop" unicode="300e" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="300f" class="biaodian cjk bd-close bd-end bd-jiya"><h-inner></h-inner></h-char></h-jinze><h-cs class="jinze-outer jiya-outer" hidden=""> </h-cs></em></p>')); } }); test('Hanging Biaodian', function(a){ var d; d = div(); d.innerHTML = '<p>點、點,點。點.'; Han(d).renderHanging(); a.domEqual(d.firstChild, $('<p><h-char unicode="3001" class="biaodian cjk bd-end bd-cop bd-hangable"><h-inner></h-inner></h-char><h-char unicode="ff0c" class="biaodian cjk bd-end bd-cop bd-hangable"><h-inner></h-inner></h-char><h-char unicode="3002" class="biaodian cjk bd-end bd-cop bd-hangable"><h-inner></h-inner></h-char><h-char unicode="ff0e" class="biaodian cjk bd-end bd-hangable"><h-inner></h-inner></h-char></p>')); d.innerHTML = '「標點。」'; Han(d).renderHanging(); htmlEqual(d.innerHTML, '「標點。」'); d.innerHTML = '<p>標點……。'; Han(d).renderHanging(); a.domEqual(d.firstChild, $('<p>標點……<h-char unicode="3002" class="biaodian cjk bd-end bd-cop bd-hangable"><h-inner></h-inner></h-char></p>')); d.innerHTML = '<p>「標點」。'; Han(d).renderHanging(); a.domEqual(d.firstChild, $('<p>「標點」<h-char unicode="3002" class="biaodian cjk bd-end bd-cop bd-hangable"><h-inner></h-inner></h-char></p>')); if (!Han.support.textemphasis) { d.innerHTML = '<em>《書名》〈篇名〉(內容)「『好』、不好」</em>'; Han(d).renderElem().renderHanging(); return a.domEqual(d.firstChild, $('<em><h-jinze class="tou"><h-char unicode="300a" class="biaodian cjk bd-open"></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="300b" class="biaodian cjk bd-close bd-end"></h-char></h-jinze><h-jinze class="tou"><h-char unicode="3008" class="biaodian cjk bd-open"></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="3009" class="biaodian cjk bd-close bd-end"></h-char></h-jinze><h-jinze class="tou"><h-char unicode="ff08" class="biaodian cjk bd-open"></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="ff09" class="biaodian cjk bd-close bd-end"></h-char></h-jinze><h-jinze class="touwei"><h-char unicode="300c" class="biaodian cjk bd-open"></h-char><h-char unicode="300e" class="biaodian cjk bd-open"></h-char><h-char class="hanzi cjk"></h-char><h-char unicode="300f" class="biaodian cjk bd-close bd-end"></h-char><h-char unicode="3001" class="biaodian cjk bd-end bd-cop bd-hangable"><h-inner></h-inner></h-char></h-jinze><h-cs class="jinze-outer hangable-outer" hidden=""> </h-cs><h-char class="hanzi cjk"></h-char><h-jinze class="wei"><h-char class="hanzi cjk"></h-char><h-char unicode="300d" class="biaodian cjk bd-close bd-end"></h-char></h-jinze></em>')); } }); test('Jiya and Hanging', function(a){ var d, support; d = div(); d.innerHTML = '<p>「標」、「『標』」,《標》、〈標〉。'; Han(d).renderJiya().renderHanging(); a.domEqual(d.firstChild, $('<p><h-char unicode="300c" class="biaodian cjk bd-open bd-jiya"><h-inner></h-inner></h-char><h-char unicode="300d" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char prev="bd-close bd-end" unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive bd-hangable"><h-inner></h-inner></h-char><h-char prev="bd-end bd-cop" unicode="300c" class="biaodian cjk bd-open bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char prev="bd-open" unicode="300e" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char unicode="300f" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char prev="bd-close bd-end" unicode="300d" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char prev="bd-close bd-end" unicode="ff0c" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive bd-hangable"><h-inner></h-inner></h-char><h-char prev="bd-end bd-cop" unicode="300a" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char unicode="300b" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char prev="bd-close bd-end" unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive bd-hangable"><h-inner></h-inner></h-char><h-char prev="bd-end bd-cop" unicode="3008" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char unicode="3009" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char prev="bd-close bd-end" unicode="3002" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive end-portion bd-hangable"><h-inner></h-inner></h-char></p>')); d.innerHTML = '<p><a href="#">《書名》</a>、「文字」、<strong>『重點』</strong>。'; Han(d).renderJiya().renderHanging(); a.domEqual(d.firstChild, $('<p><a href="#"><h-char unicode="300a" class="biaodian cjk bd-open bd-jiya"><h-inner></h-inner></h-char>書名<h-char unicode="300b" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></a><h-char prev="bd-close bd-end" unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive bd-hangable"><h-inner></h-inner></h-char><h-char prev="bd-end bd-cop" unicode="300c" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char>文字<h-char unicode="300d" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char prev="bd-close bd-end" unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive bd-hangable"><h-inner></h-inner></h-char><strong><h-char prev="bd-end bd-cop" unicode="300e" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char>重點<h-char unicode="300f" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></strong><h-char prev="bd-close bd-end" unicode="3002" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive end-portion bd-hangable"><h-inner></h-inner></h-char></p>')); d.innerHTML = '<p><a href="#">《書名》、</a><em>「強調」、</em><strong>『重點』</strong>。'; Han(d).renderElem().renderJiya().renderHanging(); support = Han.support.textemphasis; if (support) { a.domEqual(d.firstChild, $('<p><a href="#"><h-char unicode="300a" class="biaodian cjk bd-open bd-jiya"><h-inner></h-inner></h-char>書名<h-char unicode="300b" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive bd-hangable" prev="bd-close bd-end"><h-inner></h-inner></h-char></a><em><h-char unicode="300c" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion" prev="bd-end bd-cop"><h-inner></h-inner></h-char>強調<h-char unicode="300d" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive bd-hangable" prev="bd-close bd-end"><h-inner></h-inner></h-char></em><strong><h-char unicode="300e" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion" prev="bd-end bd-cop"><h-inner></h-inner></h-char>重點<h-char unicode="300f" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></strong><h-char unicode="3002" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive end-portion bd-hangable" prev="bd-close bd-end"><h-inner></h-inner></h-char></p>')); } else { a.domEqual(d.firstChild, $('<p><a href="#"><h-char unicode="300a" class="biaodian cjk bd-open bd-jiya"><h-inner></h-inner></h-char>書名<h-char unicode="300b" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char prev="bd-close bd-end" unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive bd-hangable"><h-inner></h-inner></h-char></a><em><h-cs prev="bd-end bd-cop" class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="tou"><h-char prev="bd-end bd-cop" unicode="300c" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk">調</h-char><h-char unicode="300d" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char><h-char prev="bd-close bd-end" unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive bd-hangable"><h-inner></h-inner></h-char></h-jinze><h-cs next="bd-open" class="jinze-outer jiya-outer bd-end bd-cop hangable-outer" hidden=""> </h-cs></em><strong><h-char prev="bd-end bd-cop" unicode="300e" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char>重點<h-char unicode="300f" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></strong><h-char prev="bd-close bd-end" unicode="3002" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive end-portion bd-hangable"><h-inner></h-inner></h-char></p>')); } d.innerHTML = '<p><a href="#">《書名》</a><em>「強調」</em><strong>『重點』</strong>。'; Han(d).renderElem().renderJiya().renderHanging(); support = Han.support.textemphasis; if (support) { return a.domEqual(d.firstChild, $('<p><a href="#"><h-char unicode="300a" class="biaodian cjk bd-open bd-jiya"><h-inner></h-inner></h-char>書名<h-char unicode="300b" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></a><h-char unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive bd-hangable" prev="bd-close bd-end"><h-inner></h-inner></h-char><em><h-char unicode="300c" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion" prev="bd-end bd-cop"><h-inner></h-inner></h-char>強調<h-char unicode="300d" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></em><h-char unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive bd-hangable" prev="bd-close bd-end"><h-inner></h-inner></h-char><strong><h-char unicode="300e" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion" prev="bd-end bd-cop"><h-inner></h-inner></h-char>重點<h-char unicode="300f" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></strong><h-char unicode="3002" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive end-portion bd-hangable" prev="bd-close bd-end"><h-inner></h-inner></h-char></p>')); } else { return a.domEqual(d.firstChild, $('<p><a href="#"><h-char unicode="300a" class="biaodian cjk bd-open bd-jiya"><h-inner></h-inner></h-char>書名<h-char unicode="300b" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></a><h-char prev="bd-close bd-end" unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive bd-hangable"><h-inner></h-inner></h-char><em><h-cs prev="bd-end bd-cop" class="jinze-outer jiya-outer" hidden=""> </h-cs><h-jinze class="tou"><h-char prev="bd-end bd-cop" unicode="300c" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char><h-char class="hanzi cjk"></h-char></h-jinze><h-jinze class="wei"><h-char class="hanzi cjk">調</h-char><h-char unicode="300d" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></h-jinze><h-cs class="jinze-outer jiya-outer bd-close bd-end" hidden=""></h-cs></em><h-char prev="bd-close bd-end" unicode="3001" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive bd-hangable"><h-inner></h-inner></h-char><strong><h-char prev="bd-end bd-cop" unicode="300e" class="biaodian cjk bd-open bd-jiya bd-consecutive end-portion"><h-inner></h-inner></h-char>重點<h-char unicode="300f" class="biaodian cjk bd-close bd-end bd-jiya bd-consecutive"><h-inner></h-inner></h-char></strong><h-char prev="bd-close bd-end" unicode="3002" class="biaodian cjk bd-end bd-cop bd-jiya bd-consecutive end-portion bd-hangable"><h-inner></h-inner></h-char></p>')); } }); }).call(this);