palt-typesetting 0.9.3 → 0.9.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -425,8 +425,24 @@ Palt Typesetting ライブラリは、テキストを言語固有のセグメン
425
425
 
426
426
  ### 注意事項
427
427
 
428
+ `thinSpaceWidth` は `0.2em`、`20%`、`calc(1em / 2)`、`var(--spacing, 0.2em)` などを指定できます。使用できる文字はASCII英数字、スペース、および `.%()+*,/_-` です。CSSコメント、HTML属性や別のCSS宣言を挿入する文字を含む値、空文字は既定値の `0.2em` に置き換えられます。
429
+
428
430
  Palt Typesetting ライブラリは HTML 入力をサポートしていますが、入力された HTML をサニタイズする機能は**含まれていません**。 入力を信頼できない場合は、適切なサニタイザライブラリと共に使用することを強く推奨します。
429
431
 
432
+ ## Development
433
+
434
+ 開発・テストには Node.js 22.13 以上の 22 系、24 系、または 26 系を使用してください。CI でもこれらのメジャーバージョンを検証します。
435
+
436
+ ```sh
437
+ npm ci
438
+ npm test -- --run
439
+ npm run lint
440
+ npx tsc --noEmit
441
+ npm run build
442
+ npm ci --prefix demo
443
+ npm run build --prefix demo
444
+ ```
445
+
430
446
  ## Author
431
447
 
432
448
  [飯塚 大和 (Yamato Iizuka)](https://yamatoiizuka.com)
@@ -1 +1 @@
1
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Typesetter=e():t.Typesetter=e()}(this,(()=>(()=>{var t={288:t=>{const e=18===new Uint8Array(new Uint32Array([305419896]).buffer)[0],r=(t,e,r)=>{let n=t[e];t[e]=t[r],t[r]=n};t.exports={swap32LE:t=>{e&&(t=>{const e=t.length;for(let n=0;n<e;n+=4)r(t,n,n+3),r(t,n+1,n+2)})(t)}}},667:(t,e,r)=>{const n=r(741),{swap32LE:a}=r(288);t.exports=class{constructor(t){const e="function"==typeof t.readUInt32BE&&"function"==typeof t.slice;if(e||t instanceof Uint8Array){let r;if(e)this.highStart=t.readUInt32LE(0),this.errorValue=t.readUInt32LE(4),r=t.readUInt32LE(8),t=t.slice(12);else{const e=new DataView(t.buffer);this.highStart=e.getUint32(0,!0),this.errorValue=e.getUint32(4,!0),r=e.getUint32(8,!0),t=t.subarray(12)}t=n(t,new Uint8Array(r)),t=n(t,new Uint8Array(r)),a(t),this.data=new Uint32Array(t.buffer)}else({data:this.data,highStart:this.highStart,errorValue:this.errorValue}=t)}get(t){let e;return t<0||t>1114111?this.errorValue:t<55296||t>56319&&t<=65535?(e=(this.data[t>>5]<<2)+(31&t),this.data[e]):t<=65535?(e=(this.data[2048+(t-55296>>5)]<<2)+(31&t),this.data[e]):t<this.highStart?(e=this.data[2080+(t>>11)],e=this.data[e+(t>>5&63)],e=(e<<2)+(31&t),this.data[e]):this.data[this.data.length-4]}}},741:t=>{function e(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function r(t,r){this.source=t,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=r,this.destLen=0,this.ltree=new e,this.dtree=new e}var n=new e,a=new e,o=new Uint8Array(30),u=new Uint16Array(30),s=new Uint8Array(30),i=new Uint16Array(30),c=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),l=new e,f=new Uint8Array(320);function h(t,e,r,n){var a,o;for(a=0;a<r;++a)t[a]=0;for(a=0;a<30-r;++a)t[a+r]=a/r|0;for(o=n,a=0;a<30;++a)e[a]=o,o+=1<<t[a]}var p=new Uint16Array(16);function d(t,e,r,n){var a,o;for(a=0;a<16;++a)t.table[a]=0;for(a=0;a<n;++a)t.table[e[r+a]]++;for(t.table[0]=0,o=0,a=0;a<16;++a)p[a]=o,o+=t.table[a];for(a=0;a<n;++a)e[r+a]&&(t.trans[p[e[r+a]]++]=a)}function b(t){t.bitcount--||(t.tag=t.source[t.sourceIndex++],t.bitcount=7);var e=1&t.tag;return t.tag>>>=1,e}function v(t,e,r){if(!e)return r;for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var n=t.tag&65535>>>16-e;return t.tag>>>=e,t.bitcount-=e,n+r}function y(t,e){for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var r=0,n=0,a=0,o=t.tag;do{n=2*n+(1&o),o>>>=1,++a,r+=e.table[a],n-=e.table[a]}while(n>=0);return t.tag=o,t.bitcount-=a,e.trans[r+n]}function g(t,e,r){var n,a,o,u,s,i;for(n=v(t,5,257),a=v(t,5,1),o=v(t,4,4),u=0;u<19;++u)f[u]=0;for(u=0;u<o;++u){var h=v(t,3,0);f[c[u]]=h}for(d(l,f,0,19),s=0;s<n+a;){var p=y(t,l);switch(p){case 16:var b=f[s-1];for(i=v(t,2,3);i;--i)f[s++]=b;break;case 17:for(i=v(t,3,3);i;--i)f[s++]=0;break;case 18:for(i=v(t,7,11);i;--i)f[s++]=0;break;default:f[s++]=p}}d(e,f,0,n),d(r,f,n,a)}function m(t,e,r){for(;;){var n,a,c,l,f=y(t,e);if(256===f)return 0;if(f<256)t.dest[t.destLen++]=f;else for(n=v(t,o[f-=257],u[f]),a=y(t,r),l=c=t.destLen-v(t,s[a],i[a]);l<c+n;++l)t.dest[t.destLen++]=t.dest[l]}}function w(t){for(var e,r;t.bitcount>8;)t.sourceIndex--,t.bitcount-=8;if((e=256*(e=t.source[t.sourceIndex+1])+t.source[t.sourceIndex])!==(65535&~(256*t.source[t.sourceIndex+3]+t.source[t.sourceIndex+2])))return-3;for(t.sourceIndex+=4,r=e;r;--r)t.dest[t.destLen++]=t.source[t.sourceIndex++];return t.bitcount=0,0}!function(t,e){var r;for(r=0;r<7;++r)t.table[r]=0;for(t.table[7]=24,t.table[8]=152,t.table[9]=112,r=0;r<24;++r)t.trans[r]=256+r;for(r=0;r<144;++r)t.trans[24+r]=r;for(r=0;r<8;++r)t.trans[168+r]=280+r;for(r=0;r<112;++r)t.trans[176+r]=144+r;for(r=0;r<5;++r)e.table[r]=0;for(e.table[5]=32,r=0;r<32;++r)e.trans[r]=r}(n,a),h(o,u,4,3),h(s,i,2,1),o[28]=0,u[28]=258,t.exports=function(t,e){var o,u,s=new r(t,e);do{switch(o=b(s),v(s,2,0)){case 0:u=w(s);break;case 1:u=m(s,n,a);break;case 2:g(s,s.ltree,s.dtree),u=m(s,s.ltree,s.dtree);break;default:u=-3}if(0!==u)throw new Error("Data error")}while(!o);return s.destLen<s.dest.length?"function"==typeof s.dest.slice?s.dest.slice(0,s.destLen):s.dest.subarray(0,s.destLen):s.dest}},954:(t,e)=>{!function(t){"use strict";var e="undefined"!=typeof Uint8Array?Uint8Array:Array,r="+".charCodeAt(0),n="/".charCodeAt(0),a="0".charCodeAt(0),o="a".charCodeAt(0),u="A".charCodeAt(0),s="-".charCodeAt(0),i="_".charCodeAt(0);function c(t){var e=t.charCodeAt(0);return e===r||e===s?62:e===n||e===i?63:e<a?-1:e<a+10?e-a+26+26:e<u+26?e-u:e<o+26?e-o+26:void 0}t.toByteArray=function(t){var r,n,a,o,u,s;if(t.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var i=t.length;u="="===t.charAt(i-2)?2:"="===t.charAt(i-1)?1:0,s=new e(3*t.length/4-u),a=u>0?t.length-4:t.length;var l=0;function f(t){s[l++]=t}for(r=0,n=0;r<a;r+=4,n+=3)f((16711680&(o=c(t.charAt(r))<<18|c(t.charAt(r+1))<<12|c(t.charAt(r+2))<<6|c(t.charAt(r+3))))>>16),f((65280&o)>>8),f(255&o);return 2===u?f(255&(o=c(t.charAt(r))<<2|c(t.charAt(r+1))>>4)):1===u&&(f((o=c(t.charAt(r))<<10|c(t.charAt(r+1))<<4|c(t.charAt(r+2))>>2)>>8&255),f(255&o)),s},t.fromByteArray=function(t){var e,r,n,a,o=t.length%3,u="";function s(t){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(t)}for(e=0,n=t.length-o;e<n;e+=3)u+=s((a=r=(t[e]<<16)+(t[e+1]<<8)+t[e+2])>>18&63)+s(a>>12&63)+s(a>>6&63)+s(63&a);switch(o){case 1:u+=s((r=t[t.length-1])>>2),u+=s(r<<4&63),u+="==";break;case 2:u+=s((r=(t[t.length-2]<<8)+t[t.length-1])>>10),u+=s(r>>4&63),u+=s(r<<2&63),u+="="}return u}}(e)}},e={};function r(n){var a=e[n];if(void 0!==a)return a.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var n={};return(()=>{"use strict";r.d(n,{default:()=>et});var t=/(?:[\t-\r -~\xA0-\xA5\xAA\xAC\xB1-\xB3\xB7\xB9\xBA\xBF-\u02B8\u02BC\u02C7\u02C9-\u02CB\u02CD\u02D7\u02D9\u02E0-\u02E4\u0300-\u030E\u0310\u0311\u0313\u0320\u0323-\u0325\u032D\u032E\u0330\u0331\u0358\u035E\u0363-\u036F\u0485\u0486\u0951\u0952\u10FB\u1680\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1DF8\u1E00-\u1EFF\u2000-\u200A\u2018\u2019\u201C\u201D\u2028\u2029\u202F\u2030\u205F\u2070\u2071\u2074-\u208E\u2090-\u209C\u20AC\u20F0\u212A\u212B\u2132\u214E\u2160-\u2188\u2202\u2205\u220F\u2211\u2212\u221A\u221E\u222B\u2248\u2260\u2264\u2265\u2C60-\u2C7F\u2E17\u3000\uA700-\uA707\uA722-\uA787\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA7FF\uA92E\uAB30-\uAB5A\uAB5C-\uAB64\uAB66-\uAB69\uFB00-\uFB06\uFEFF\uFF21-\uFF3A\uFF41-\uFF5A]|\uD801[\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A])+/g,e=/(|[|{|〔|〈|《|「|『|【|〘|〖|“|‘/,a=/)|]|}|〕|〉|》|」|』|】|〙|〗|”|’/,o=/・|:|;/,u=/、|,/,s=/。|./,i=new RegExp("[\\p{scx=Hiragana}\\p{scx=Katakana}|ヲ-゚\\p{scx=Han}".concat(e.source).concat(a.source).concat(o.source).concat(u.source).concat(s.source,"]+"),"u"),c=new RegExp("[".concat("—‥…_",String.fromCharCode(9472),"-").concat(String.fromCharCode(9599),"]+"),"g"),l=/[\s\u00A0]/,f=new RegExp("".concat(/,/.source,"|").concat(/\./.source,"|").concat(e.source,"|").concat(a.source,"|").concat(o.source,"|").concat(u.source,"|").concat(s.source),"u");function h(t){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},h(t)}function p(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function d(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,b(n.key),n)}}function b(t){var e=function(t){if("object"!=h(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=h(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==h(e)?e:e+""}var v,y="__TYPESETTING_PROTECTED_BLOCK__",g="__TYPESETTING_PROTECTED_GENERATED__",m=/<(script|style|textarea|code|pre|kbd|samp)\b[^>]*>[\s\S]*?<\/\1>/gi,w=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),A=new Set(["typesetting-wrapper","typesetting-word-break","typesetting-latin","typesetting-no-breaks","typesetting-thin-space","typesetting-kerning"]),x=["typesetting-char-"],P=function(){return t=function t(e,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.transformFunctions=e,this.options=r},e=[{key:"processHtmlWithFunctions",value:function(t){if(""===t)return t;var e,r=this.extractProtectedBlocks(t),n=r.html,a=r.protectedBlocks,o=this.extractManagedGeneratedBlocks(n),u=o.html,s=o.protectedBlocks,i=u,c=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return p(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,a=function(){};return{s:a,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){s=!0,o=t},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw o}}}}(this.transformFunctions);try{for(c.s();!(e=c.n()).done;){var l=e.value;i=this.processHtml(i,l)}}catch(t){c.e(t)}finally{c.f()}var f=this.restoreProtectedBlocks(i,s,g);return this.restoreProtectedBlocks(f,a,y)}},{key:"processHtml",value:function(t,e){if(""===t)return t;for(var r,n=/(<[^>]+>)|([^<]+)/g,a=[];null!==(r=n.exec(t));)r[1]?a.push({type:"tag",value:r[1]}):r[2]&&a.push({type:"text",value:r[2]});for(var o=0;o<a.length;o++)if("text"===a[o].type&&!this.isWhitespaceOnly(a[o].value)){for(var u="",s=o+1;s<a.length;s++)if("text"===a[s].type){u=a[s].value;break}a[o].value=e(a[o].value,u,this.options)}return a.map((function(t){return t.value})).join("")}},{key:"extractProtectedBlocks",value:function(t){var e=[];return{html:t.replace(m,(function(t){var r="\x3c!--".concat(y).concat(e.length,"--\x3e");return e.push(t),r})),protectedBlocks:e}}},{key:"extractManagedGeneratedBlocks",value:function(t){for(var e,r=/(<[^>]+>)|([^<]+)/g,n=[],a=[],o=[],u=[];null!==(e=r.exec(t));){var s=e[0],i=e[1]?this.getTagInfo(e[1]):null,c=u.length>0;if(c||!i||i.isClosing||i.isSelfClosing||!this.isManagedGeneratedTag(i))if(c){if(o.push(s),i&&(i.isClosing?u[u.length-1]===i.tagName&&u.pop():i.isSelfClosing||w.has(i.tagName)||u.push(i.tagName),0===u.length)){var l="\x3c!--".concat(g).concat(n.length,"--\x3e");n.push(o.join("")),a.push(l),o.length=0}}else a.push(s);else u.push(i.tagName),o.push(s)}return{html:a.join(""),protectedBlocks:n}}},{key:"restoreProtectedBlocks",value:function(t,e,r){return e.reduce((function(t,e,n){var a="\x3c!--".concat(r).concat(n,"--\x3e");return t.replace(a,e)}),t)}},{key:"isWhitespaceOnly",value:function(t){return new RegExp("^".concat(l.source,"*$")).test(t)}},{key:"getTagInfo",value:function(t){var e=t.match(/^<\s*\/\s*([a-zA-Z][\w:-]*)\b/);if(e)return{tagName:e[1].toLowerCase(),isClosing:!0,isSelfClosing:!1,classNames:[]};var r=t.match(/^<\s*([a-zA-Z][\w:-]*)\b/);if(!r)return null;var n=t.match(/\bclass\s*=\s*(["'])(.*?)\1/i),a=n?n[2].split(/\s+/).filter(Boolean):[];return{tagName:r[1].toLowerCase(),isClosing:!1,isSelfClosing:/\/\s*>$/.test(t),classNames:a}}},{key:"isManagedGeneratedTag",value:function(t){return"span"===t.tagName&&t.classNames.some((function(t){return A.has(t)||x.some((function(e){return t.startsWith(e)}))}))}}],e&&d(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}(),B=P,S=r(667),C=r(954);const k=[[4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4],[0,4,4,1,1,4,4,4,4,1,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,4,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[4,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,1,0,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,1,1,1,1,0,0,4,2,4,1,1,1,1,1,0,1,1,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,0,1,4,4,4,0,0,1,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,0,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,4,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,1,1,1,1,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,1,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,1,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0]],O=new S(C.toByteArray("AAgOAAAAAAAQ4QAAAQ0P8vDtnQuMXUUZx+eyu7d7797d9m5bHoWltKVUlsjLWE0VJNigQoMVqkStEoNQQUl5GIo1KKmogEgqkKbBRki72lYabZMGKoGAjQRtJJDaCCIRiiigREBQS3z+xzOTnZ3O+3HOhd5NfpkzZx7fN9988zivu2M9hGwB28F94DnwEngd/Asc1EtIs9c/bIPDwCxwLDgezHcodyo4w5C+CCwBS8FnwSXgCnA1uFbI93XwbXAbWAfWgx+CzWAb+An4KfgFeAzsYWWfYuFz4CXwGvgb+Dfo6yNkEEwGh4CZYB44FpwI3g1OY+kfBItZOo2fB84Hy8DF4HJwNbiWpV8PVoO1LH4n2NRXyN+KcAd4kNVP9XsY4aPgcfAbsBfs6SniL4K/sPjfEf6HlanXCRkCw2BGvUh/keWfXS/CY+pFXs7x9XHmM94LTmWIeU2cgbxnS/k/B3kf86jDhU8L9V2E40vAFWAlWFUfb++NOL4F3C7JX4/4GiE+hvgWsF0oS7mXldspnN+F493gyXrh9xTav0cg3EvzgVfBG6wsmVSEkxBOBgdPGpd7JI6PnqRvJ68/xlbHof53gPeA94OzwLngk+ACsAwsByvASrAK3MB0Ws3CtQjvBJvAVrADPMDSHkb4CNijaccTwvnf4fiPEs8Lxy+D18A/QU8/xjgYBjPAbDAKTgYLwOngTHAO+EQ/8wuEF4EvsPiVCFf2+9tsFStzA8LVHuXXBsi6QyqzUYiPMR/7Mc7dAx7oL8bzw/3u/Bw8Bp4Az4AXwCtgHzsmDXP5fiF9iiVvly5d0sHngar16NKlS5cuXbp06fLmYlqHXrcd3ph4P0THUY3iXh49novju4S0tzfs5d+JPKewfAsRntZb3K9ZhOMlrO6lCC8An28U9+OuovcPcPxlVu5rCL/VmHh/iHIrzn3fIPu7SN8Axmg+8AOwEWwCm7tp3bRuWjetm5Y8bSu4B9zbKO6ZVsnORrVU3f4uXTqZ2H3sLoyx3eDXjfDndE9qyj6L838CfwVvgFpzYnof4oNgOhgBc8Fos9DrZIQLmtXPP1MmF6wGj4H+KXoWguvADkXaPil+YpuQy8Am8Ey7ODdtmJDF4HowBp4De6HDTNjhfHAHeBr0DBBy0kDxfPbcgSIusgrcWhtnJ8vL+TPix7UIOQtcBq4C28Cr4KRBnANbwSuDE+s50JgyNNFuXbp06XIgsXjIvPafjvXozKY+fVFz/z0LT1uCtKVSWbrOLWPnztG8e0Xfy7ol8XtZJi7WtG+5od2UFXQ/A12vUeS7jp27yVKHjdsU9lXB869TyNvAzt0lpP2oWbwLdjiO78bx/Sz+EMJHwK9Y/LcIfw+eZ3F67/Hl5vh9xX80J+rwX8SvRDhpgL17iPAQMHNArfPrqHPewLheI+AERV6efwV418B4nOZ/H+IfYHV8GOF5LJ3eAz0fx8sM9S0fUNud39O9CulfGZhY5huI3wzWgNvBelbHZoTbNPVpfYjKQpkHwUNgl0LWblbnk0LbbDxr0OMFpL3iqWdu9nWYPlVAWkXY39LnGdCkDbeqv1YNbfcMQ3t9oe8lzm6NH9N1ZB6Ln4BwfkJZJk7RyFnYKt6b/JDQXx9p5X+eFdqOjzM9P9MB/lUlFzr20aXIdzlY4dmn9F3YqtvoO76/2hp/D/xA5Zue88nNyL8GbFbs075X0tyUig3Qd2MCnf//HjnzpbsR3g9+1kHzzVjdnE71/qVBX9rGPUh/ysNWe1neFzvIDi5zAufV1sT0N0poR22wkFUfTOPfA4N2mbZ5fSrqOHSw+IbkSBbOGSzSRgf91/GTUWYBOB2cIZQ/G8cfBZ8CFwrnL8XxF8FKcA24jqXdiPA7Qr61OF7H4mMItwzuv2/YLth1ISt3Hzu3k4W7EH5JqPdRHD/O4k+z8A8IX5Lq3y7Z4nXE9xn6kX6vQ4bKfy+ok+hH+xf3hq9dnTTHhjKd2GmDuWA242iHMq4cC7A8kJ7i8o1+skSa7Jieo38HCWnoNjKFhdSFBxzpZ7QE6lI8N4S14aASZcryaV/WWHw66f6NHuCoxuQxmvM56GX9QMd8Q4D65ywGP+ZzRJuM+zQvx/MOS2VFeqQ4IXnH26zM9Xe6/E6D+4foAzzuajPZp8Qyw5ayZVDWuH0z0BtYRkeIDqH9KO9VbH1btd/lhNqCzvl8zeLnG0S/hnU6baHfpiuO6yy0rd+DHURo/zYF5H26j03rQsip2ndzz82u1z9N4VjWKWeb68Tedpt95HRVXp7H1R6p+/Wt4FPy/PpWwscOLRJ+PVWF/+W0iVyGzs18TIvXkOJ1Wxm66vSXz+vylenrZcj1ub439W+K8RNCGTJi2p/TJ1K23VaXr35tRpnzmjxequgfcfyk6B/TGBVlyedsNgpdd/h+W1U3P99QyFPNo1X3TwpM/WLTIWYfoBqXrv6iskHZ/RFr79R6hIyHBrH3f1nrUVnjP8SnZZ+rYtzr9Exld5MNbPNErusAPg+77u/eDOPftU9yj39TH7rezxd1LvsZQJlzkWlOirG/79zjMj/mtHUKu7vKy+3/LnXr9okyKedjX5/0He9iP/j63LwOQdarEVlfy8OO/Lqw023j6xcqmwxLiOd6heM2i9cV9LJy8jMJ23yQ+rpbfu7EQ/pXE8KYvUSqvVnb4XzZa6LrHMXHR+zcLvqWbm/Bn0/HzIs6fWPHoat8XfnDKmZGxRxeMbn2UqZ5Q94nmcZRbqqUXbZ8+lcjE+cPX11t814orvvAXNcG8vqj2vvk1MGn3anlj0bIT72v47bvE+Lc98T9b6r7AKn6j+8Duf7D0nnZx/j7Zjn0j9nbpSTndaLr9WNLivP+iN23xF7L+fqv6ZouFyb78jxVXvv5jJ9YUs9/sddO8h7KNg5jrhfaJGztT6G7KF+1d6yCmD5Kdb2fan60rSc552fZr3zeQ9DpnPp+Si5cx5Ktv2QfSzF/mMbWdOm46rFI4XstnU9xeqX4NKb7TKEdcr6pZOK3ID1k/LvFHkVczEuZLEDr499YqvqBym1aEHWgcvoYOtv0M91qQl5TfpO/in6rWx8OVpT1Wedkv3f5xom3T/xeR/6Gx6V86PWAOB4bBpqWdN+yTcVxjIyGRz/FrDGu6w/3d7kPm8StX8RyPu+uuvpNju/vTLJV37GpvoM0oZPnW87VLnL/5pDno1NoW1R6yedU6TyUv3u19a3KFnIbTLYz+ZCLP4T0tU1uivFgso0pnsJ/UtXvarNY28Xq5cvkBDrQP/E5ZaiuQwwfmTlsOiQRU1fMuqrDd/3ISSuwjOwXOfTyGUMpZIXq4GpLn3pUcdfzch2x7XO1u2uZHOPb1G6b3Xg9PH1IIWeEpJlPQtqos2EKW8b0u8rnuP1UeVLoXJb9be0uG9nnbchjU+XTszT5VeNBThPHnc5OKj1U9aj0GTHIVaGy1YhEWT4ixns00DT+XEzWn/7VAsIc63Cov3OdyhwjrnaqQqZvWKXdypRdlq+k8msZ031U+Rm4fA+3TtyeR9hwfW9G9yxDN0fZMN33F+9TE6md4hwoxumfaUzI9fN3PFT3xVV2msrQ3UsnChm6Nulk8TndpS28D3zX9tTIPsF/z7Am5OkTjm1tI1JZW74+4VgsZ0N3L1yXV3WeP5uR7TGHHdvC3JQlxybfpd22tDlk/2eofRK8TzrN/qnar/K/OUTth6I/+jAnEptNbPvFHP2gs40N3+dfMWtwqvVct7/wfd8gtQ7imifial9ZJ9/3IHLYU6eDj3+4PhsNhX+vwvcWLnu6kGfEMe8DuciPfUfGZB8X/7HJy/Gefe5n+VRGFd/wyP2ta7/LO4yh/sbLV/k9lev6kfO9Dt/5U67b1/6u/epqB1U9Me23jfHY9sscAg4tkbLl+e4/U36rJ9ddxfd6sg5vq5ice42Wpk/pb9FOJ36/W9tpv4kbC79nUbZceX8Zu6/qJ+P3WvhvA8v3reh7Jbn2d6rrNC7XNZTLma4Ba0JI9efX2uLzF5scG/w9UNU1ZxW+ymUfzELeTllXlQ1rUuhzjS5fp9c964iFBOqeSz63bU065nZKdU+mDEz3qHIjjifquw0pnb/raRtvrnsYcb46ihT3taoYz6brdNW9l6rWRnE/navdPn1XlR1km7hcz1WlH/elKuSOSvLLuE8U6m8uzwRdfcGl73VyTHuyMvzJ1Sa2cWDTP/Z63Kc94n2B1PYr24dz1JlyHLlcP+S4B6vD1c9EW4q2LWstCvUjeVy63k/LMYdUNd5D1xQfvVTzX1VjkMsUv88N8VH5fReVn/Fjn++/h6X6Q8a6b1/q3g/i/ewi0/Scs8zxXeV6mWIOUPlPzBgdFerW+bZrm2P18dnjuK6HunEp+rHvPMXbr+sHVb/lnL+pTP57jPw9Cvk3PW178JD9qChfzuvTf7Htl38L1QUf/VKu9SFjwWbTWPvFEvu7Uq76y7+31g6QlYPc669pbsm9Xur2LWI9Pu8ypfDXqm3A2z8s1FWGn4ntL9NfQu2oSlftX9uetvTtv7J8Ql4zxfXGZ3zk8PeQ9w59x2uMfqI8/q5eKh/l9cb2rwsu9rSNl06ZP2Pmxtz+rNMx93yno0n2/82rVH7rQ+y9P15H6FyRun9ViH81ATmffI7nJ5r8uXXW6enbP6b/B8/l5OifVHYLnb9S39s2zcc+Ph+rh8+eQgVPS72elzGWY/tUtbbabBpDiI7yN1q6/4th2y+ErAc5+9BVvu/7KamJbWNZeuqI/R4tRf+YyD1HmOZM1bMV3/14Sn10c0Xu+Sj1nOXb5jL73ncdy02uvlXZNde65dOHYl7Vs4KYuS6FzWLn2zJlpZqPXPVPOa5yzKOyn1VhT9lmMfdbfH7D11Wf2PXN5h9y+dD287+qxgSnaYmnIrRtIb8pJe6/Uv9OVer6Whn0zfGO/BEloZI9ojmfAlUflClDd178bTmVHVTpZXOkAlk/lb42UujmI89HH5V+cl7XtowY6vTxLVWok6UrGzoGTHN+bB+6ri05687VNpvfuvRfaP2uMlNQth1D5JjGelm/8yn+9p3p/7qk9gnfeddXZmq/Sm333PJT659Kv1zjNbZ9uv2Oi//67CV8/N1nj1DmviyXDNVeJkaeaX8UsyesYg8cu2+NvdaPfb+lLDu5tvt/")),j=function(t){switch(t){case 33:case 39:case 40:case 42:return 12;case 35:return 5;default:return t}},L=function(t){switch(t){case 37:case 38:return 34;case 41:return 22;default:return t}};class D{constructor(t,e=!1){this.position=t,this.required=e}}v=class{nextCodePoint(){const t=this.string.charCodeAt(this.pos++),e=this.string.charCodeAt(this.pos);return 55296<=t&&t<=56319&&56320<=e&&e<=57343?(this.pos++,1024*(t-55296)+(e-56320)+65536):t}nextCharClass(){return j(O.get(this.nextCodePoint()))}getSimpleBreak(){switch(this.nextClass){case 41:return!1;case 34:case 37:case 38:return this.curClass=34,!1;case 36:return this.curClass=36,!1}return null}getPairTableBreak(t){let e=!1;switch(k[this.curClass][this.nextClass]){case 0:e=!0;break;case 1:e=41===t;break;case 2:if(e=41===t,!e)return e=!1,e;break;case 3:if(41!==t)return e}return this.LB8a&&(e=!1),!this.LB21a||16!==this.curClass&&17!==this.curClass?this.LB21a=13===this.curClass:(e=!1,this.LB21a=!1),28===this.curClass?(this.LB30a++,2==this.LB30a&&28===this.nextClass&&(e=!0,this.LB30a=0)):this.LB30a=0,this.curClass=this.nextClass,e}nextBreak(){if(null==this.curClass){let t=this.nextCharClass();this.curClass=L(t),this.nextClass=t,this.LB8a=31===t,this.LB30a=0}for(;this.pos<this.string.length;){this.lastPos=this.pos;const t=this.nextClass;if(this.nextClass=this.nextCharClass(),34===this.curClass||36===this.curClass&&37!==this.nextClass)return this.curClass=L(j(this.nextClass)),new D(this.lastPos,!0);let e=this.getSimpleBreak();if(null===e&&(e=this.getPairTableBreak(t)),this.LB8a=31===this.nextClass,e)return new D(this.lastPos)}return this.lastPos<this.string.length?(this.lastPos=this.string.length,new D(this.string.length)):null}constructor(t){this.string=t,this.pos=0,this.lastPos=0,this.curClass=null,this.nextClass=null,this.LB8a=!1,this.LB21a=!1,this.LB30a=0}};var T={isLatin:function(e){return new RegExp(t.source,"u").test(e)},isJapanese:function(t){return i.test(t)},hasLanguageTransition:function(t,e){return T.isJapanese(t)!==T.isJapanese(e)},shouldAddThinSpace:function(t,e){return T.hasLanguageTransition(t,e)}},E="typesetting",F=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",a=r?' style="'.concat(r,'"'):"";return'<span class="'.concat(e,'"').concat(a).concat(n,">").concat(t,"</span>")},X=function(t,e,r,n){var a="letter-spacing: ".concat(r,";"),o=' data-content="'.concat(n?" ":"&nbsp;",'"');return F(t,e,a,o)},H=function(t){var e=new Intl.Segmenter("ja-JP",{granularity:"word"});return Array.from(e.segment(t),(function(t){return t.segment}))},W=function(t,r){return!l.test(t)&&!l.test(r)&&(function(t,e){return f.test(t)||f.test(e)}(t,r)?function(t,r){for(var n=new RegExp("(".concat(a.source,"|").concat(u.source,"|").concat(s.source,")")),i={spaceBefore:{regex:e,hasSpaceBefore:!0,hasSpaceAfter:!1},spaceAfter:{regex:n,hasSpaceBefore:!1,hasSpaceAfter:!0},spaceBoth:{regex:o,hasSpaceBefore:!0,hasSpaceAfter:!0}},c=0,l=Object.values(i);c<l.length;c++){var f=l[c],h=f.regex,p=f.hasSpaceBefore,d=f.hasSpaceAfter;if(p&&h.test(r)&&!h.test(t))return!0;if(d&&h.test(t)&&!h.test(r))return!0}return!1}(t,r):T.shouldAddThinSpace(t,r))},z=function(t,e){var r,n,a=null!==(r=Array.from(t).at(-1))&&void 0!==r?r:"",o=null!==(n=Array.from(e)[0])&&void 0!==n?n:"";if(!a||!o)return!1;if(l.test(o))return!1;var u=new v(a+o).nextBreak();return!!u&&u.position===a.length},U=function(t,e,r){var n=H(t),a=H(e);return n.reduce((function(t,e,n,u){return t+function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2?arguments[2]:void 0;if(!e)return t;var n,a=r.insertThinSpaces&&W(t,e),u=z(t,e);return a?t+function(t,e){var r="".concat(E,"-thin-space");return X("",r,t,e)}(o.test(t)||o.test(e)?"calc(".concat(r.thinSpaceWidth," / 2.0)"):null!==(n=r.thinSpaceWidth)&&void 0!==n?n:"",u):r.useWordBreak&&u?t+"<wbr>":t}(e,u[n+1]||a[0],r)}),"")};function I(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var N=function(t,e,r){return" "===t?t:(n=t,a=r.useWordBreak,o="".concat(E,"-wrapper"),u="".concat(E,"-word-break"),s=a?"".concat(o," ").concat(u):o,F(n,s));var n,a,o,u,s},V=function(e,r,n){return" "===e?e:n.wrapLatin&&T.isLatin(e)?e.replace(t,(function(t){return e=t,r="".concat(E,"-latin"),F(e,r);var e,r})):n.noSpaceBetweenNoBreaks&&(a=e,new RegExp(c.source,"u").test(a))?e.replace(c,(function(t){return e=t,r="".concat(E,"-no-breaks"),F(e,r);var e,r})):e;var a},R=function(t,e,r){var n,a=function(t){if(Array.isArray(t))return I(t)}(n=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(n)||function(t,e){if(t){if("string"==typeof t)return I(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?I(t,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();return a.map((function(t,n){var o,u=a[n+1]||e[0]||"",s=null===(o=r.kerningRules)||void 0===o?void 0:o.find((function(e){return e.between[0]===t&&e.between[1]===u}));if(s){var i="number"==typeof s.value?s.value:parseInt(s.value,10),c=!r.useWordBreak&&z(t,u);return t+function(t,e){if(0===t)return"";var r="".concat(E,"-kerning");if(t<0){var n="margin: ".concat(t/1e3/2+"em",";");return F("",r,n)}return X("",r,t/1e3+"em",e)}(i,c)}return t})).join("")},Z=function(t,e,r){if(!r.wrapChars||0===r.wrapChars.length)return t;var n=t;return r.wrapChars.forEach((function(t){var e=("string"==typeof t.char?[t.char]:t.char).filter((function(t){return 1===Array.from(t).length}));if(0!==e.length){var r;if(1===e.length)r=t.label?t.label:e[0];else{if(!t.label)return void console.error("Invalid configuration in wrapChars: when grouping multiple characters, a label must be provided.");r=t.label}if(/^[^"'<>\s]+$/.test(r)){var a="typesetting-char-".concat(r),o=e.map((function(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")})).join(""),u=new RegExp("([".concat(o,"]+)"),"gu");n=n.replace(u,(function(t){return'<span class="'.concat(a,'">').concat(t,"</span>")}))}else console.error("Invalid configuration in wrapChars: '".concat(e.join(","),"' is used. To be used as a CSS class, the 'label' property must not contain spaces, quotes, '<' or '>'. Skipping this wrapping rule."))}else console.error("Invalid configuration in wrapChars: rule.char does not contain any valid single character.")})),n},q=window;function G(t){return G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},G(t)}function K(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function J(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?K(Object(r),!0).forEach((function(e){M(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):K(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function M(t,e,r){return(e=Y(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Q(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Y(n.key),n)}}function Y(t){var e=function(t){if("object"!=G(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=G(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==G(e)?e:e+""}function _(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(_=function(){return!!t})()}function $(t){return $=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},$(t)}function tt(t,e){return tt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},tt(t,e)}var et=function(t){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=void 0!==Intl.Segmenter;r||console.warn("Intl.Segmenter is not supported in this environment. \nTherefore, the options `useWordBreak` and `insertThinSpaces` will be ignored. \nFor more information about Intl.Segmenter, please visit:\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter");var n=r?[N,U,V,R,Z]:[V,R,Z],a=e.validateOptions(t);return function(t,e,r){return e=$(e),function(t,e){if(e&&("object"==G(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,_()?Reflect.construct(e,r||[],$(t).constructor):e.apply(t,r))}(this,e,[n,a])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&tt(t,e)}(e,t),r=e,a=[{key:"getDefaultOptions",value:function(){return{useWordBreak:!0,wrapLatin:!0,wrapChars:[],noSpaceBetweenNoBreaks:!0,insertThinSpaces:!0,thinSpaceWidth:"0.2em",kerningRules:[]}}},{key:"validateOptions",value:function(t){return t.kerningRules&&(t.kerningRules=t.kerningRules.filter(e.isValidKerningRule)),J(J({},e.getDefaultOptions()),t)}},{key:"isValidKerningRule",value:function(t){return 1===t.between[0].length&&1===t.between[1].length||(console.warn("Kerning rule between '".concat(t.between[0],"' and '").concat(t.between[1],"' must be single characters.")),!1)}}],(n=[{key:"render",value:function(t){return t?this.processHtmlWithFunctions(t):""}},{key:"renderToElements",value:function(t){var e=this;t&&(Array.isArray(t)||(t=[t]),t.forEach((function(t){var r=e.render(t.innerHTML);t.innerHTML=r})))}},{key:"renderToSelector",value:function(t){if(t){var e=q.document.querySelectorAll(t);this.renderToElements(Array.from(e))}}}])&&Q(r.prototype,n),a&&Q(r,a),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,a}(B)})(),n.default})()));
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Typesetter=e():t.Typesetter=e()}(this,()=>(()=>{var t={954(t,e){!function(t){"use strict";var e="undefined"!=typeof Uint8Array?Uint8Array:Array,r="+".charCodeAt(0),n="/".charCodeAt(0),u="0".charCodeAt(0),a="a".charCodeAt(0),o="A".charCodeAt(0),s="-".charCodeAt(0),i="_".charCodeAt(0);function c(t){var e=t.charCodeAt(0);return e===r||e===s?62:e===n||e===i?63:e<u?-1:e<u+10?e-u+26+26:e<o+26?e-o:e<a+26?e-a+26:void 0}t.toByteArray=function(t){var r,n,u,a,o,s;if(t.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var i=t.length;o="="===t.charAt(i-2)?2:"="===t.charAt(i-1)?1:0,s=new e(3*t.length/4-o),u=o>0?t.length-4:t.length;var l=0;function f(t){s[l++]=t}for(r=0,n=0;r<u;r+=4,n+=3)f((16711680&(a=c(t.charAt(r))<<18|c(t.charAt(r+1))<<12|c(t.charAt(r+2))<<6|c(t.charAt(r+3))))>>16),f((65280&a)>>8),f(255&a);return 2===o?f(255&(a=c(t.charAt(r))<<2|c(t.charAt(r+1))>>4)):1===o&&(f((a=c(t.charAt(r))<<10|c(t.charAt(r+1))<<4|c(t.charAt(r+2))>>2)>>8&255),f(255&a)),s},t.fromByteArray=function(t){var e,r,n,u=t.length%3,a="";function o(t){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(t)}function s(t){return o(t>>18&63)+o(t>>12&63)+o(t>>6&63)+o(63&t)}for(e=0,n=t.length-u;e<n;e+=3)a+=s(r=(t[e]<<16)+(t[e+1]<<8)+t[e+2]);switch(u){case 1:a+=o((r=t[t.length-1])>>2),a+=o(r<<4&63),a+="==";break;case 2:a+=o((r=(t[t.length-2]<<8)+t[t.length-1])>>10),a+=o(r>>4&63),a+=o(r<<2&63),a+="="}return a}}(e)},741(t){function e(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function r(t,r){this.source=t,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=r,this.destLen=0,this.ltree=new e,this.dtree=new e}var n=new e,u=new e,a=new Uint8Array(30),o=new Uint16Array(30),s=new Uint8Array(30),i=new Uint16Array(30),c=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),l=new e,f=new Uint8Array(320);function h(t,e,r,n){var u,a;for(u=0;u<r;++u)t[u]=0;for(u=0;u<30-r;++u)t[u+r]=u/r|0;for(a=n,u=0;u<30;++u)e[u]=a,a+=1<<t[u]}var p=new Uint16Array(16);function d(t,e,r,n){var u,a;for(u=0;u<16;++u)t.table[u]=0;for(u=0;u<n;++u)t.table[e[r+u]]++;for(t.table[0]=0,a=0,u=0;u<16;++u)p[u]=a,a+=t.table[u];for(u=0;u<n;++u)e[r+u]&&(t.trans[p[e[r+u]]++]=u)}function b(t){t.bitcount--||(t.tag=t.source[t.sourceIndex++],t.bitcount=7);var e=1&t.tag;return t.tag>>>=1,e}function v(t,e,r){if(!e)return r;for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var n=t.tag&65535>>>16-e;return t.tag>>>=e,t.bitcount-=e,n+r}function y(t,e){for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var r=0,n=0,u=0,a=t.tag;do{n=2*n+(1&a),a>>>=1,++u,r+=e.table[u],n-=e.table[u]}while(n>=0);return t.tag=a,t.bitcount-=u,e.trans[r+n]}function g(t,e,r){var n,u,a,o,s,i;for(n=v(t,5,257),u=v(t,5,1),a=v(t,4,4),o=0;o<19;++o)f[o]=0;for(o=0;o<a;++o){var h=v(t,3,0);f[c[o]]=h}for(d(l,f,0,19),s=0;s<n+u;){var p=y(t,l);switch(p){case 16:var b=f[s-1];for(i=v(t,2,3);i;--i)f[s++]=b;break;case 17:for(i=v(t,3,3);i;--i)f[s++]=0;break;case 18:for(i=v(t,7,11);i;--i)f[s++]=0;break;default:f[s++]=p}}d(e,f,0,n),d(r,f,n,u)}function D(t,e,r){for(;;){var n,u,c,l,f=y(t,e);if(256===f)return 0;if(f<256)t.dest[t.destLen++]=f;else for(n=v(t,a[f-=257],o[f]),u=y(t,r),l=c=t.destLen-v(t,s[u],i[u]);l<c+n;++l)t.dest[t.destLen++]=t.dest[l]}}function F(t){for(var e,r;t.bitcount>8;)t.sourceIndex--,t.bitcount-=8;if((e=256*(e=t.source[t.sourceIndex+1])+t.source[t.sourceIndex])!==(65535&~(256*t.source[t.sourceIndex+3]+t.source[t.sourceIndex+2])))return-3;for(t.sourceIndex+=4,r=e;r;--r)t.dest[t.destLen++]=t.source[t.sourceIndex++];return t.bitcount=0,0}!function(t,e){var r;for(r=0;r<7;++r)t.table[r]=0;for(t.table[7]=24,t.table[8]=152,t.table[9]=112,r=0;r<24;++r)t.trans[r]=256+r;for(r=0;r<144;++r)t.trans[24+r]=r;for(r=0;r<8;++r)t.trans[168+r]=280+r;for(r=0;r<112;++r)t.trans[176+r]=144+r;for(r=0;r<5;++r)e.table[r]=0;for(e.table[5]=32,r=0;r<32;++r)e.trans[r]=r}(n,u),h(a,o,4,3),h(s,i,2,1),a[28]=0,o[28]=258,t.exports=function(t,e){var a,o,s=new r(t,e);do{switch(a=b(s),v(s,2,0)){case 0:o=F(s);break;case 1:o=D(s,n,u);break;case 2:g(s,s.ltree,s.dtree),o=D(s,s.ltree,s.dtree);break;default:o=-3}if(0!==o)throw new Error("Data error")}while(!a);return s.destLen<s.dest.length?"function"==typeof s.dest.slice?s.dest.slice(0,s.destLen):s.dest.subarray(0,s.destLen):s.dest}},667(t,e,r){const n=r(741),{swap32LE:u}=r(288);t.exports=class{constructor(t){const e="function"==typeof t.readUInt32BE&&"function"==typeof t.slice;if(e||t instanceof Uint8Array){let r;if(e)this.highStart=t.readUInt32LE(0),this.errorValue=t.readUInt32LE(4),r=t.readUInt32LE(8),t=t.slice(12);else{const e=new DataView(t.buffer);this.highStart=e.getUint32(0,!0),this.errorValue=e.getUint32(4,!0),r=e.getUint32(8,!0),t=t.subarray(12)}t=n(t,new Uint8Array(r)),t=n(t,new Uint8Array(r)),u(t),this.data=new Uint32Array(t.buffer)}else({data:this.data,highStart:this.highStart,errorValue:this.errorValue}=t)}get(t){let e;return t<0||t>1114111?this.errorValue:t<55296||t>56319&&t<=65535?(e=(this.data[t>>5]<<2)+(31&t),this.data[e]):t<=65535?(e=(this.data[2048+(t-55296>>5)]<<2)+(31&t),this.data[e]):t<this.highStart?(e=this.data[2080+(t>>11)],e=this.data[e+(t>>5&63)],e=(e<<2)+(31&t),this.data[e]):this.data[this.data.length-4]}}},288(t){const e=18===new Uint8Array(new Uint32Array([305419896]).buffer)[0],r=(t,e,r)=>{let n=t[e];t[e]=t[r],t[r]=n};t.exports={swap32LE:t=>{e&&(t=>{const e=t.length;for(let n=0;n<e;n+=4)r(t,n,n+3),r(t,n+1,n+2)})(t)}}}};const e={};function r(n){const u=e[n];if(void 0!==u)return u.exports;const a=e[n]={exports:{}};return t[n](a,a.exports,r),a.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);let n={};return(()=>{"use strict";r.d(n,{default:()=>ut});var t=/(?:[\t-\r -~\xA0-\xA5\xAA\xAC\xB1-\xB3\xB7\xB9\xBA\xBF-\u02B8\u02BC\u02C7\u02C9-\u02CB\u02CD\u02D7\u02D9\u02E0-\u02E4\u0300-\u030E\u0310\u0311\u0313\u0323-\u0325\u032D\u032E\u0330\u0331\u0358\u035E\u0363-\u036F\u0485\u0486\u0951\u0952\u10FB\u1680\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1DF8\u1E00-\u1EFF\u2000-\u200A\u2018\u2019\u201C\u201D\u2028\u2029\u202F\u2030\u205F\u2070\u2071\u2074-\u208E\u2090-\u209F\u20AC\u20F0\u212A\u212B\u2132\u214E\u2160-\u2188\u2202\u2205\u220F\u2211\u2212\u221A\u221E\u222B\u2248\u2260\u2264\u2265\u2C60-\u2C7F\u2E17\u3000\uA700-\uA707\uA722-\uA787\uA78B-\uA7DD\uA7E2\uA7F1-\uA7FF\uA92E\uAB30-\uAB5A\uAB5C-\uAB64\uAB66-\uAB69\uAB6C\uAB6D\uFB00-\uFB06\uFEFF\uFF21-\uFF3A\uFF41-\uFF5A]|\uD801[\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBF]|\uD837[\uDF00-\uDF81\uDF90-\uDF96\uDFCD-\uDFF2\uDFF5-\uDFFF])+/g,e=/(|[|{|〔|〈|《|「|『|【|〘|〖|“|‘/,u=/)|]|}|〕|〉|》|」|』|】|〙|〗|”|’/,a=/・|:|;/,o=/、|,/,s=/。|./,i=new RegExp("[\\p{scx=Hiragana}\\p{scx=Katakana}|ヲ-゚\\p{scx=Han}".concat(e.source).concat(u.source).concat(a.source).concat(o.source).concat(s.source,"]+"),"u"),c=new RegExp("[".concat("—‥…_",String.fromCharCode(9472),"-").concat(String.fromCharCode(9599),"]+"),"g"),l=/[\s\u00A0]/,f=new RegExp("".concat(/,/.source,"|").concat(/\./.source,"|").concat(e.source,"|").concat(u.source,"|").concat(a.source,"|").concat(o.source,"|").concat(s.source),"u");function h(t){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},h(t)}function p(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function d(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,b(n.key),n)}}function b(t){var e=function(t){if("object"!=h(t)||!t)return t;var e;if("undefined"!=typeof Symbol&&void 0!==(e=t[Symbol.toPrimitive])){var r=e.call(t,"string");if("object"!=h(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==h(e)?e:e+""}var v,y="__TYPESETTING_PROTECTED_BLOCK__",g="__TYPESETTING_PROTECTED_GENERATED__",D=/<(script|style|textarea|code|pre|kbd|samp)\b[^>]*>[\s\S]*?<\/\1>/gi,F=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),A=new Set(["typesetting-wrapper","typesetting-word-break","typesetting-latin","typesetting-no-breaks","typesetting-thin-space","typesetting-kerning"]),m=["typesetting-char-"],w=function(){return t=function t(e,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.transformFunctions=e,this.options=r},e=[{key:"processHtmlWithFunctions",value:function(t){if(""===t)return t;var e,r=this.extractProtectedBlocks(t),n=r.html,u=r.protectedBlocks,a=this.extractManagedGeneratedBlocks(n),o=a.html,s=a.protectedBlocks,i=o,c=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return p(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,u=function(){};return{s:u,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:u}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}(this.transformFunctions);try{for(c.s();!(e=c.n()).done;){var l=e.value;i=this.processHtml(i,l)}}catch(t){c.e(t)}finally{c.f()}var f=this.restoreProtectedBlocks(i,s,g);return this.restoreProtectedBlocks(f,u,y)}},{key:"processHtml",value:function(t,e){if(""===t)return t;for(var r,n=/(<[^>]+>)|([^<]+)/g,u=[];null!==(r=n.exec(t));)r[1]?u.push({type:"tag",value:r[1]}):r[2]&&u.push({type:"text",value:r[2]});for(var a=0;a<u.length;a++)if("text"===u[a].type&&!this.isWhitespaceOnly(u[a].value)){for(var o="",s=a+1;s<u.length;s++)if("text"===u[s].type){o=u[s].value;break}u[a].value=e(u[a].value,o,this.options)}return u.map(function(t){return t.value}).join("")}},{key:"extractProtectedBlocks",value:function(t){var e=[];return{html:t.replace(D,function(t){var r="\x3c!--".concat(y).concat(e.length,"--\x3e");return e.push(t),r}),protectedBlocks:e}}},{key:"extractManagedGeneratedBlocks",value:function(t){for(var e,r=/(<[^>]+>)|([^<]+)/g,n=[],u=[],a=[],o=[];null!==(e=r.exec(t));){var s=e[0],i=e[1]?this.getTagInfo(e[1]):null,c=o.length>0;if(c||!i||i.isClosing||i.isSelfClosing||!this.isManagedGeneratedTag(i))if(c){if(a.push(s),i&&(i.isClosing?o[o.length-1]===i.tagName&&o.pop():i.isSelfClosing||F.has(i.tagName)||o.push(i.tagName),0===o.length)){var l="\x3c!--".concat(g).concat(n.length,"--\x3e");n.push(a.join("")),u.push(l),a.length=0}}else u.push(s);else o.push(i.tagName),a.push(s)}return{html:u.join(""),protectedBlocks:n}}},{key:"restoreProtectedBlocks",value:function(t,e,r){return e.reduce(function(t,e,n){var u="\x3c!--".concat(r).concat(n,"--\x3e");return t.replace(u,e)},t)}},{key:"isWhitespaceOnly",value:function(t){return new RegExp("^".concat(l.source,"*$")).test(t)}},{key:"getTagInfo",value:function(t){var e=t.match(/^<\s*\/\s*([a-zA-Z][\w:-]*)\b/);if(e)return{tagName:e[1].toLowerCase(),isClosing:!0,isSelfClosing:!1,classNames:[]};var r=t.match(/^<\s*([a-zA-Z][\w:-]*)\b/);if(!r)return null;var n=t.match(/\bclass\s*=\s*(["'])(.*?)\1/i),u=n?n[2].split(/\s+/).filter(Boolean):[];return{tagName:r[1].toLowerCase(),isClosing:!1,isSelfClosing:/\/\s*>$/.test(t),classNames:u}}},{key:"isManagedGeneratedTag",value:function(t){return"span"===t.tagName&&t.classNames.some(function(t){return A.has(t)||m.some(function(e){return t.startsWith(e)})})}}],e&&d(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}(),B=w,x=r(667),C=r(954);const P=[[4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4],[0,4,4,1,1,4,4,4,4,1,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,4,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[4,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,1,0,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,1,1,1,1,0,0,4,2,4,1,1,1,1,1,0,1,1,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,0,1,4,4,4,0,0,1,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,0,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,4,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,1,1,1,1,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,1,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,1,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0]],S=new x(C.toByteArray("AAgOAAAAAAAQ4QAAAQ0P8vDtnQuMXUUZx+eyu7d7797d9m5bHoWltKVUlsjLWE0VJNigQoMVqkStEoNQQUl5GIo1KKmogEgqkKbBRki72lYabZMGKoGAjQRtJJDaCCIRiiigREBQS3z+xzOTnZ3O+3HOhd5NfpkzZx7fN9988zivu2M9hGwB28F94DnwEngd/Asc1EtIs9c/bIPDwCxwLDgezHcodyo4w5C+CCwBS8FnwSXgCnA1uFbI93XwbXAbWAfWgx+CzWAb+An4KfgFeAzsYWWfYuFz4CXwGvgb+Dfo6yNkEEwGh4CZYB44FpwI3g1OY+kfBItZOo2fB84Hy8DF4HJwNbiWpV8PVoO1LH4n2NRXyN+KcAd4kNVP9XsY4aPgcfAbsBfs6SniL4K/sPjfEf6HlanXCRkCw2BGvUh/keWfXS/CY+pFXs7x9XHmM94LTmWIeU2cgbxnS/k/B3kf86jDhU8L9V2E40vAFWAlWFUfb++NOL4F3C7JX4/4GiE+hvgWsF0oS7mXldspnN+F493gyXrh9xTav0cg3EvzgVfBG6wsmVSEkxBOBgdPGpd7JI6PnqRvJ68/xlbHof53gPeA94OzwLngk+ACsAwsByvASrAK3MB0Ws3CtQjvBJvAVrADPMDSHkb4CNijaccTwvnf4fiPEs8Lxy+D18A/QU8/xjgYBjPAbDAKTgYLwOngTHAO+EQ/8wuEF4EvsPiVCFf2+9tsFStzA8LVHuXXBsi6QyqzUYiPMR/7Mc7dAx7oL8bzw/3u/Bw8Bp4Az4AXwCtgHzsmDXP5fiF9iiVvly5d0sHngar16NKlS5cuXbp06fLmYlqHXrcd3ph4P0THUY3iXh49novju4S0tzfs5d+JPKewfAsRntZb3K9ZhOMlrO6lCC8An28U9+OuovcPcPxlVu5rCL/VmHh/iHIrzn3fIPu7SN8Axmg+8AOwEWwCm7tp3bRuWjetm5Y8bSu4B9zbKO6ZVsnORrVU3f4uXTqZ2H3sLoyx3eDXjfDndE9qyj6L838CfwVvgFpzYnof4oNgOhgBc8Fos9DrZIQLmtXPP1MmF6wGj4H+KXoWguvADkXaPil+YpuQy8Am8Ey7ODdtmJDF4HowBp4De6HDTNjhfHAHeBr0DBBy0kDxfPbcgSIusgrcWhtnJ8vL+TPix7UIOQtcBq4C28Cr4KRBnANbwSuDE+s50JgyNNFuXbp06XIgsXjIvPafjvXozKY+fVFz/z0LT1uCtKVSWbrOLWPnztG8e0Xfy7ol8XtZJi7WtG+5od2UFXQ/A12vUeS7jp27yVKHjdsU9lXB869TyNvAzt0lpP2oWbwLdjiO78bx/Sz+EMJHwK9Y/LcIfw+eZ3F67/Hl5vh9xX80J+rwX8SvRDhpgL17iPAQMHNArfPrqHPewLheI+AERV6efwV418B4nOZ/H+IfYHV8GOF5LJ3eAz0fx8sM9S0fUNud39O9CulfGZhY5huI3wzWgNvBelbHZoTbNPVpfYjKQpkHwUNgl0LWblbnk0LbbDxr0OMFpL3iqWdu9nWYPlVAWkXY39LnGdCkDbeqv1YNbfcMQ3t9oe8lzm6NH9N1ZB6Ln4BwfkJZJk7RyFnYKt6b/JDQXx9p5X+eFdqOjzM9P9MB/lUlFzr20aXIdzlY4dmn9F3YqtvoO76/2hp/D/xA5Zue88nNyL8GbFbs075X0tyUig3Qd2MCnf//HjnzpbsR3g9+1kHzzVjdnE71/qVBX9rGPUh/ysNWe1neFzvIDi5zAufV1sT0N0poR22wkFUfTOPfA4N2mbZ5fSrqOHSw+IbkSBbOGSzSRgf91/GTUWYBOB2cIZQ/G8cfBZ8CFwrnL8XxF8FKcA24jqXdiPA7Qr61OF7H4mMItwzuv2/YLth1ISt3Hzu3k4W7EH5JqPdRHD/O4k+z8A8IX5Lq3y7Z4nXE9xn6kX6vQ4bKfy+ok+hH+xf3hq9dnTTHhjKd2GmDuWA242iHMq4cC7A8kJ7i8o1+skSa7Jieo38HCWnoNjKFhdSFBxzpZ7QE6lI8N4S14aASZcryaV/WWHw66f6NHuCoxuQxmvM56GX9QMd8Q4D65ywGP+ZzRJuM+zQvx/MOS2VFeqQ4IXnH26zM9Xe6/E6D+4foAzzuajPZp8Qyw5ayZVDWuH0z0BtYRkeIDqH9KO9VbH1btd/lhNqCzvl8zeLnG0S/hnU6baHfpiuO6yy0rd+DHURo/zYF5H26j03rQsip2ndzz82u1z9N4VjWKWeb68Tedpt95HRVXp7H1R6p+/Wt4FPy/PpWwscOLRJ+PVWF/+W0iVyGzs18TIvXkOJ1Wxm66vSXz+vylenrZcj1ub439W+K8RNCGTJi2p/TJ1K23VaXr35tRpnzmjxequgfcfyk6B/TGBVlyedsNgpdd/h+W1U3P99QyFPNo1X3TwpM/WLTIWYfoBqXrv6iskHZ/RFr79R6hIyHBrH3f1nrUVnjP8SnZZ+rYtzr9Exld5MNbPNErusAPg+77u/eDOPftU9yj39TH7rezxd1LvsZQJlzkWlOirG/79zjMj/mtHUKu7vKy+3/LnXr9okyKedjX5/0He9iP/j63LwOQdarEVlfy8OO/Lqw023j6xcqmwxLiOd6heM2i9cV9LJy8jMJ23yQ+rpbfu7EQ/pXE8KYvUSqvVnb4XzZa6LrHMXHR+zcLvqWbm/Bn0/HzIs6fWPHoat8XfnDKmZGxRxeMbn2UqZ5Q94nmcZRbqqUXbZ8+lcjE+cPX11t814orvvAXNcG8vqj2vvk1MGn3anlj0bIT72v47bvE+Lc98T9b6r7AKn6j+8Duf7D0nnZx/j7Zjn0j9nbpSTndaLr9WNLivP+iN23xF7L+fqv6ZouFyb78jxVXvv5jJ9YUs9/sddO8h7KNg5jrhfaJGztT6G7KF+1d6yCmD5Kdb2fan60rSc552fZr3zeQ9DpnPp+Si5cx5Ktv2QfSzF/mMbWdOm46rFI4XstnU9xeqX4NKb7TKEdcr6pZOK3ID1k/LvFHkVczEuZLEDr499YqvqBym1aEHWgcvoYOtv0M91qQl5TfpO/in6rWx8OVpT1Wedkv3f5xom3T/xeR/6Gx6V86PWAOB4bBpqWdN+yTcVxjIyGRz/FrDGu6w/3d7kPm8StX8RyPu+uuvpNju/vTLJV37GpvoM0oZPnW87VLnL/5pDno1NoW1R6yedU6TyUv3u19a3KFnIbTLYz+ZCLP4T0tU1uivFgso0pnsJ/UtXvarNY28Xq5cvkBDrQP/E5ZaiuQwwfmTlsOiQRU1fMuqrDd/3ISSuwjOwXOfTyGUMpZIXq4GpLn3pUcdfzch2x7XO1u2uZHOPb1G6b3Xg9PH1IIWeEpJlPQtqos2EKW8b0u8rnuP1UeVLoXJb9be0uG9nnbchjU+XTszT5VeNBThPHnc5OKj1U9aj0GTHIVaGy1YhEWT4ixns00DT+XEzWn/7VAsIc63Cov3OdyhwjrnaqQqZvWKXdypRdlq+k8msZ031U+Rm4fA+3TtyeR9hwfW9G9yxDN0fZMN33F+9TE6md4hwoxumfaUzI9fN3PFT3xVV2msrQ3UsnChm6Nulk8TndpS28D3zX9tTIPsF/z7Am5OkTjm1tI1JZW74+4VgsZ0N3L1yXV3WeP5uR7TGHHdvC3JQlxybfpd22tDlk/2eofRK8TzrN/qnar/K/OUTth6I/+jAnEptNbPvFHP2gs40N3+dfMWtwqvVct7/wfd8gtQ7imifial9ZJ9/3IHLYU6eDj3+4PhsNhX+vwvcWLnu6kGfEMe8DuciPfUfGZB8X/7HJy/Gefe5n+VRGFd/wyP2ta7/LO4yh/sbLV/k9lev6kfO9Dt/5U67b1/6u/epqB1U9Me23jfHY9sscAg4tkbLl+e4/U36rJ9ddxfd6sg5vq5ice42Wpk/pb9FOJ36/W9tpv4kbC79nUbZceX8Zu6/qJ+P3WvhvA8v3reh7Jbn2d6rrNC7XNZTLma4Ba0JI9efX2uLzF5scG/w9UNU1ZxW+ymUfzELeTllXlQ1rUuhzjS5fp9c964iFBOqeSz63bU065nZKdU+mDEz3qHIjjifquw0pnb/raRtvrnsYcb46ihT3taoYz6brdNW9l6rWRnE/navdPn1XlR1km7hcz1WlH/elKuSOSvLLuE8U6m8uzwRdfcGl73VyTHuyMvzJ1Sa2cWDTP/Z63Kc94n2B1PYr24dz1JlyHLlcP+S4B6vD1c9EW4q2LWstCvUjeVy63k/LMYdUNd5D1xQfvVTzX1VjkMsUv88N8VH5fReVn/Fjn++/h6X6Q8a6b1/q3g/i/ewi0/Scs8zxXeV6mWIOUPlPzBgdFerW+bZrm2P18dnjuK6HunEp+rHvPMXbr+sHVb/lnL+pTP57jPw9Cvk3PW178JD9qChfzuvTf7Htl38L1QUf/VKu9SFjwWbTWPvFEvu7Uq76y7+31g6QlYPc669pbsm9Xur2LWI9Pu8ypfDXqm3A2z8s1FWGn4ntL9NfQu2oSlftX9uetvTtv7J8Ql4zxfXGZ3zk8PeQ9w59x2uMfqI8/q5eKh/l9cb2rwsu9rSNl06ZP2Pmxtz+rNMx93yno0n2/82rVH7rQ+y9P15H6FyRun9ViH81ATmffI7nJ5r8uXXW6enbP6b/B8/l5OifVHYLnb9S39s2zcc+Ph+rh8+eQgVPS72elzGWY/tUtbbabBpDiI7yN1q6/4th2y+ErAc5+9BVvu/7KamJbWNZeuqI/R4tRf+YyD1HmOZM1bMV3/14Sn10c0Xu+Sj1nOXb5jL73ncdy02uvlXZNde65dOHYl7Vs4KYuS6FzWLn2zJlpZqPXPVPOa5yzKOyn1VhT9lmMfdbfH7D11Wf2PXN5h9y+dD287+qxgSnaYmnIrRtIb8pJe6/Uv9OVer6Whn0zfGO/BEloZI9ojmfAlUflClDd178bTmVHVTpZXOkAlk/lb42UujmI89HH5V+cl7XtowY6vTxLVWok6UrGzoGTHN+bB+6ri05687VNpvfuvRfaP2uMlNQth1D5JjGelm/8yn+9p3p/7qk9gnfeddXZmq/Sm333PJT659Kv1zjNbZ9uv2Oi//67CV8/N1nj1DmviyXDNVeJkaeaX8UsyesYg8cu2+NvdaPfb+lLDu5tvt/")),E=function(t){switch(t){case 33:case 39:case 40:case 42:return 12;case 35:return 5;default:return t}},k=function(t){switch(t){case 37:case 38:return 34;case 41:return 22;default:return t}};class O{constructor(t,e=!1){this.position=t,this.required=e}}v=class{nextCodePoint(){const t=this.string.charCodeAt(this.pos++),e=this.string.charCodeAt(this.pos);return 55296<=t&&t<=56319&&56320<=e&&e<=57343?(this.pos++,1024*(t-55296)+(e-56320)+65536):t}nextCharClass(){return E(S.get(this.nextCodePoint()))}getSimpleBreak(){switch(this.nextClass){case 41:return!1;case 34:case 37:case 38:return this.curClass=34,!1;case 36:return this.curClass=36,!1}return null}getPairTableBreak(t){let e=!1;switch(P[this.curClass][this.nextClass]){case 0:e=!0;break;case 1:e=41===t;break;case 2:if(e=41===t,!e)return e=!1,e;break;case 3:if(41!==t)return e}return this.LB8a&&(e=!1),!this.LB21a||16!==this.curClass&&17!==this.curClass?this.LB21a=13===this.curClass:(e=!1,this.LB21a=!1),28===this.curClass?(this.LB30a++,2==this.LB30a&&28===this.nextClass&&(e=!0,this.LB30a=0)):this.LB30a=0,this.curClass=this.nextClass,e}nextBreak(){if(null==this.curClass){let t=this.nextCharClass();this.curClass=k(t),this.nextClass=t,this.LB8a=31===t,this.LB30a=0}for(;this.pos<this.string.length;){this.lastPos=this.pos;const t=this.nextClass;if(this.nextClass=this.nextCharClass(),34===this.curClass||36===this.curClass&&37!==this.nextClass)return this.curClass=k(E(this.nextClass)),new O(this.lastPos,!0);let e=this.getSimpleBreak();if(null===e&&(e=this.getPairTableBreak(t)),this.LB8a=31===this.nextClass,e)return new O(this.lastPos)}return this.lastPos<this.string.length?(this.lastPos=this.string.length,new O(this.string.length)):null}constructor(t){this.string=t,this.pos=0,this.lastPos=0,this.curClass=null,this.nextClass=null,this.LB8a=!1,this.LB21a=!1,this.LB30a=0}};var j={isLatin:function(e){return new RegExp(t.source,"u").test(e)},isJapanese:function(t){return i.test(t)},hasLanguageTransition:function(t,e){return j.isJapanese(t)!==j.isJapanese(e)},shouldAddThinSpace:function(t,e){return j.hasLanguageTransition(t,e)},canBreakAcrossScripts:function(t,r){if(!t||!r)return!1;var n,a=function(t){return/(?:[0-9A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209F\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7DD\uA7E2\uA7F1-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uAB66-\uAB69\uAB6C\uAB6D\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A]|\uD801[\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBF]|\uD837[\uDF00-\uDF81\uDF90-\uDF96\uDFCD-\uDFF2\uDFF5-\uDFFF])/.test(t)},i=function(t){return/(?:[\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u3005\u3007\u3021-\u3029\u3038-\u303B\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FD-\u30FF\u31F0-\u31FF\u32D0-\u32FE\u3300-\u3357\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFA6D\uFA70-\uFAD9\uFF66-\uFF6F\uFF71-\uFF9D]|\uD81B[\uDFE2\uDFE3\uDFF0-\uDFF6]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD28\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD68]|\uD83C\uDE00|[\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1E\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79])/.test(t)};return!(!a(t)||!i(r)&&(n=r,!new RegExp(e.source,"u").test(n)))||!(!(i(t)||function(t){return new RegExp(u.source,"u").test(t)}(t)||function(t){return new RegExp(o.source,"u").test(t)||new RegExp(s.source,"u").test(t)}(t))||!a(r))}},L="typesetting",T=/^[a-zA-Z0-9 .%()+*,/_-]+$/,W=function(t){if("string"!=typeof t)return"0.2em";var e=t.trim();return e&&T.test(e)&&!e.includes("/*")&&!e.includes("*/")?e:"0.2em"},X=function(t){return t.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},z=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",u=r?' style="'.concat(X(r),'"'):"";return'<span class="'.concat(X(e),'"').concat(u).concat(n,">").concat(t,"</span>")},H=function(t,e,r,n){var u="letter-spacing: ".concat(r,";"),a=' data-content="'.concat(n?" ":"&nbsp;",'"');return z(t,e,u,a)},U=function(t){var e=new Intl.Segmenter("ja-JP",{granularity:"word"});return Array.from(e.segment(t),function(t){return t.segment})},I=function(t,r){return!l.test(t)&&!l.test(r)&&(function(t,e){return f.test(t)||f.test(e)}(t,r)?function(t,r){for(var n=new RegExp("(".concat(u.source,"|").concat(o.source,"|").concat(s.source,")")),i={spaceBefore:{regex:e,hasSpaceBefore:!0,hasSpaceAfter:!1},spaceAfter:{regex:n,hasSpaceBefore:!1,hasSpaceAfter:!0},spaceBoth:{regex:a,hasSpaceBefore:!0,hasSpaceAfter:!0}},c=0,l=Object.values(i);c<l.length;c++){var f=l[c],h=f.regex,p=f.hasSpaceBefore,d=f.hasSpaceAfter;if(p&&h.test(r)&&!h.test(t))return!0;if(d&&h.test(t)&&!h.test(r))return!0}return!1}(t,r):j.shouldAddThinSpace(t,r))},N=function(t,e){var r,n,u=null!==(r=Array.from(t).at(-1))&&void 0!==r?r:"",a=null!==(n=Array.from(e)[0])&&void 0!==n?n:"";if(!u||!a)return!1;if(l.test(a))return!1;var o=new v(u+a).nextBreak();return!(!o||o.position!==u.length)||j.canBreakAcrossScripts(u,a)},V=function(t,e,r){var n=U(t),u=U(e);return n.reduce(function(t,e,n,o){return t+function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2?arguments[2]:void 0;if(!e)return t;var n,u=r.insertThinSpaces&&I(t,e),o=N(t,e);return u?t+function(t,e){var r="".concat(L,"-thin-space");return H("",r,W(t),e)}(a.test(t)||a.test(e)?"calc(".concat(r.thinSpaceWidth," / 2.0)"):null!==(n=r.thinSpaceWidth)&&void 0!==n?n:"",o):r.useWordBreak&&o?t+"<wbr>":t}(e,o[n+1]||u[0],r)},"")};function R(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var Z=function(t,e,r){return" "===t?t:(n=t,u=r.useWordBreak,a="".concat(L,"-wrapper"),o="".concat(L,"-word-break"),s=u?"".concat(a," ").concat(o):a,z(n,s));var n,u,a,o,s},q=function(e,r,n){return" "===e?e:n.wrapLatin&&j.isLatin(e)?e.replace(t,function(t){return e=t,r="".concat(L,"-latin"),z(e,r);var e,r}):n.noSpaceBetweenNoBreaks&&(u=e,new RegExp(c.source,"u").test(u))?e.replace(c,function(t){return e=t,r="".concat(L,"-no-breaks"),z(e,r);var e,r}):e;var u},G=function(t,e,r){var n,u=function(t){if(Array.isArray(t))return R(t)}(n=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(n)||function(t,e){if(t){if("string"==typeof t)return R(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?R(t,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();return u.map(function(t,n){var a,o=u[n+1]||e[0]||"",s=null===(a=r.kerningRules)||void 0===a?void 0:a.find(function(e){return e.between[0]===t&&e.between[1]===o});if(s){var i="number"==typeof s.value?s.value:parseInt(s.value,10),c=!r.useWordBreak&&N(t,o);return t+function(t,e){if(0===t)return"";var r="".concat(L,"-kerning");if(t<0){var n="margin: ".concat(t/1e3/2+"em",";");return z("",r,n)}return H("",r,t/1e3+"em",e)}(i,c)}return t}).join("")},K=function(t,e,r){if(!r.wrapChars||0===r.wrapChars.length)return t;var n=t;return r.wrapChars.forEach(function(t){var e=("string"==typeof t.char?[t.char]:t.char).filter(function(t){return 1===Array.from(t).length});if(0!==e.length){var r;if(1===e.length)r=t.label?t.label:e[0];else{if(!t.label)return void console.error("Invalid configuration in wrapChars: when grouping multiple characters, a label must be provided.");r=t.label}if(/^[^"'<>\s]+$/.test(r)){var u="typesetting-char-".concat(r),a=e.map(function(t){return t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}).join(""),o=new RegExp("([".concat(a,"]+)"),"gu");n=n.replace(o,function(t){return'<span class="'.concat(u,'">').concat(t,"</span>")})}else console.error("Invalid configuration in wrapChars: '".concat(e.join(","),"' is used. To be used as a CSS class, the 'label' property must not contain spaces, quotes, '<' or '>'. Skipping this wrapping rule."))}else console.error("Invalid configuration in wrapChars: rule.char does not contain any valid single character.")}),n},J=window;function M(t){return M="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},M(t)}function Q(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function Y(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Q(Object(r),!0).forEach(function(e){_(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Q(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function _(t,e,r){return(e=tt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function $(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,tt(n.key),n)}}function tt(t){var e=function(t){if("object"!=M(t)||!t)return t;var e;if("undefined"!=typeof Symbol&&void 0!==(e=t[Symbol.toPrimitive])){var r=e.call(t,"string");if("object"!=M(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==M(e)?e:e+""}function et(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(et=function(){return!!t})()}function rt(t){return rt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},rt(t)}function nt(t,e){return nt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},nt(t,e)}var ut=function(t){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=void 0!==Intl.Segmenter;r||console.warn("Intl.Segmenter is not supported in this environment. \nTherefore, the options `useWordBreak` and `insertThinSpaces` will be ignored. \nFor more information about Intl.Segmenter, please visit:\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter");var n=r?[Z,V,q,G,K]:[q,G,K],u=e.validateOptions(t);return function(t,e,r){return e=rt(e),function(t,e){if(e&&("object"==M(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,et()?Reflect.construct(e,r||[],rt(t).constructor):e.apply(t,r))}(this,e,[n,u])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&nt(t,e)}(e,t),r=e,u=[{key:"getDefaultOptions",value:function(){return{useWordBreak:!0,wrapLatin:!0,wrapChars:[],noSpaceBetweenNoBreaks:!0,insertThinSpaces:!0,thinSpaceWidth:"0.2em",kerningRules:[]}}},{key:"validateOptions",value:function(t){var r;return t.kerningRules&&(t.kerningRules=t.kerningRules.filter(e.isValidKerningRule)),Y(Y(Y({},e.getDefaultOptions()),t),{},{thinSpaceWidth:W(null!==(r=t.thinSpaceWidth)&&void 0!==r?r:e.getDefaultOptions().thinSpaceWidth)})}},{key:"isValidKerningRule",value:function(t){return 1===t.between[0].length&&1===t.between[1].length||(console.warn("Kerning rule between '".concat(t.between[0],"' and '").concat(t.between[1],"' must be single characters.")),!1)}}],(n=[{key:"render",value:function(t){return t?this.processHtmlWithFunctions(t):""}},{key:"renderToElements",value:function(t){var e=this;t&&(Array.isArray(t)||(t=[t]),t.forEach(function(t){var r=e.render(t.innerHTML);t.innerHTML=r}))}},{key:"renderToSelector",value:function(t){if(t){var e=J.document.querySelectorAll(t);this.renderToElements(Array.from(e))}}}])&&$(r.prototype,n),u&&$(r,u),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,u}(B)})(),n=n.default,n})());
@@ -1 +1 @@
1
- {"version":3,"file":"apply-style.d.ts","sourceRoot":"","sources":["../src/apply-style.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAU7C,QAAA,MAAM,gBAAgB,qBAAsB,MAAM,iBAAiB,MAAM,WAAW,kBAAkB,KAAG,MAKxG,CAAA;AAWD,QAAA,MAAM,mBAAmB,mBAAoB,MAAM,eAAe,MAAM,WAAW,kBAAkB,KAAG,MAgBvG,CAAA;AAUD,QAAA,MAAM,qBAAqB,mBAAoB,MAAM,eAAe,MAAM,WAAW,kBAAkB,KAAG,MAmBzG,CAAA;AAkBD,QAAA,MAAM,gBAAgB,mBAAoB,MAAM,eAAe,MAAM,WAAW,kBAAkB,KAAG,MAqDpG,CAAA;AAED,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"apply-style.d.ts","sourceRoot":"","sources":["../src/apply-style.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAU7C,QAAA,MAAM,gBAAgB,GAAI,kBAAkB,MAAM,EAAE,eAAe,MAAM,EAAE,SAAS,kBAAkB,KAAG,MAKxG,CAAA;AAWD,QAAA,MAAM,mBAAmB,GAAI,gBAAgB,MAAM,EAAE,aAAa,MAAM,EAAE,SAAS,kBAAkB,KAAG,MAgBvG,CAAA;AAUD,QAAA,MAAM,qBAAqB,GAAI,gBAAgB,MAAM,EAAE,aAAa,MAAM,EAAE,SAAS,kBAAkB,KAAG,MAmBzG,CAAA;AAkBD,QAAA,MAAM,gBAAgB,GAAI,gBAAgB,MAAM,EAAE,aAAa,MAAM,EAAE,SAAS,kBAAkB,KAAG,MAqDpG,CAAA;AAED,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,CAAA"}
@@ -36,7 +36,7 @@ const applyKerningToSegment = (currentSegment, nextSegment, options) => {
36
36
  });
37
37
  return kernedChars.join("");
38
38
  };
39
- const escapeRegExp = (str) => str.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
39
+ const escapeRegExp = (str) => str.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
40
40
  const applyStyleToChar = (currentSegment, nextSegment, options) => {
41
41
  if (!options.wrapChars || options.wrapChars.length === 0) {
42
42
  return currentSegment;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAI/C,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,UAAU,CAAA;AAM/D,cAAM,UAAW,SAAQ,aAAa;IAIpC,MAAM,CAAC,iBAAiB,IAAI,QAAQ,CAAC,kBAAkB,CAAC;gBAY5C,OAAO,GAAE,kBAAuB;IAgC5C,OAAO,CAAC,MAAM,CAAC,eAAe;IAkB9B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAiBjC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAY/B,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI;IAmB5D,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;CAMhD;AAED,eAAe,UAAU,CAAA;AACzB,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAK/C,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,UAAU,CAAA;AAM/D,cAAM,UAAW,SAAQ,aAAa;IAIpC,MAAM,CAAC,iBAAiB,IAAI,QAAQ,CAAC,kBAAkB,CAAC;gBAY5C,OAAO,GAAE,kBAAuB;IAgC5C,OAAO,CAAC,MAAM,CAAC,eAAe;IAmB9B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAiBjC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAY/B,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI;IAmB5D,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;CAMhD;AAED,eAAe,UAAU,CAAA;AACzB,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA"}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ import HTMLProcessor from "./html-processor.js";
2
2
  import insertSeparatorsToText from "./insert-separators.js";
3
3
  import { applyStyleToText, applyStyleToSegment, applyKerningToSegment, applyStyleToChar } from "./apply-style.js";
4
4
  import win from "./win.js";
5
+ import { normalizeSpacingValue } from "./util-tags.js";
5
6
  class Typesetter extends HTMLProcessor {
6
7
  /**
7
8
  * Typesetter のデフォルトの設定を返します。
@@ -40,7 +41,8 @@ class Typesetter extends HTMLProcessor {
40
41
  }
41
42
  return {
42
43
  ...Typesetter.getDefaultOptions(),
43
- ...options
44
+ ...options,
45
+ thinSpaceWidth: normalizeSpacingValue(options.thinSpaceWidth ?? Typesetter.getDefaultOptions().thinSpaceWidth)
44
46
  };
45
47
  }
46
48
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"insert-separators.d.ts","sourceRoot":"","sources":["../src/insert-separators.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAS7C,QAAA,MAAM,sBAAsB,gBAAiB,MAAM,YAAY,MAAM,WAAW,kBAAkB,KAAG,MAWpG,CAAA;AAOD,QAAA,MAAM,cAAc,QAAS,MAAM,KAAG,MAAM,EAG3C,CAAA;AAQD,QAAA,MAAM,sBAAsB,YAAa,MAAM,qCAAsB,kBAAkB,KAAG,MAkBzF,CAAA;AAQD,QAAA,MAAM,kBAAkB,YAAa,MAAM,QAAQ,MAAM,KAAG,OAO3D,CAAA;AAQD,QAAA,MAAM,WAAW,YAAa,MAAM,QAAQ,MAAM,KAAG,OAiBpD,CAAA;AAED,eAAe,sBAAsB,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"insert-separators.d.ts","sourceRoot":"","sources":["../src/insert-separators.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAS7C,QAAA,MAAM,sBAAsB,GAAI,aAAa,MAAM,EAAE,UAAU,MAAM,EAAE,SAAS,kBAAkB,KAAG,MAWpG,CAAA;AAOD,QAAA,MAAM,cAAc,GAAI,KAAK,MAAM,KAAG,MAAM,EAG3C,CAAA;AAQD,QAAA,MAAM,sBAAsB,GAAI,SAAS,MAAM,EAAE,wBAAS,EAAE,SAAS,kBAAkB,KAAG,MAkBzF,CAAA;AAQD,QAAA,MAAM,kBAAkB,GAAI,SAAS,MAAM,EAAE,MAAM,MAAM,KAAG,OAO3D,CAAA;AAQD,QAAA,MAAM,WAAW,GAAI,SAAS,MAAM,EAAE,MAAM,MAAM,KAAG,OAsBpD,CAAA;AAED,eAAe,sBAAsB,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,WAAW,EAAE,CAAA"}
@@ -42,7 +42,10 @@ const isBreakable = (current, next) => {
42
42
  const combinedText = currentChar + nextChar;
43
43
  const lineBreaker = new LineBreaker(combinedText);
44
44
  const breakOpportunity = lineBreaker.nextBreak();
45
- return breakOpportunity ? breakOpportunity.position === currentChar.length : false;
45
+ if (breakOpportunity && breakOpportunity.position === currentChar.length) {
46
+ return true;
47
+ }
48
+ return LanguageClass.canBreakAcrossScripts(currentChar, nextChar);
46
49
  };
47
50
  var insert_separators_default = insertSeparatorsToText;
48
51
  export {
@@ -1,3 +1,4 @@
1
+ export declare const normalizeSpacingValue: (value: string) => string;
1
2
  declare const createWbr: () => string;
2
3
  declare const createThinSpace: (thinSpaceWidth: string, breakable?: boolean) => string;
3
4
  declare const createKerning: (kerningValue: number, breakable?: boolean) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"util-tags.d.ts","sourceRoot":"","sources":["../src/util-tags.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,SAAS,QAAO,MAErB,CAAA;AAQD,QAAA,MAAM,eAAe,mBAAoB,MAAM,cAAc,OAAO,KAAG,MAItE,CAAA;AASD,QAAA,MAAM,aAAa,iBAAkB,MAAM,cAAc,OAAO,KAAG,MAclE,CAAA;AAQD,QAAA,MAAM,iBAAiB,SAAU,MAAM,iBAAiB,OAAO,KAAG,MAKjE,CAAA;AAOD,QAAA,MAAM,eAAe,YAAa,MAAM,KAAG,MAG1C,CAAA;AAOD,QAAA,MAAM,kBAAkB,YAAa,MAAM,KAAG,MAG7C,CAAA;AAkCD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAA"}
1
+ {"version":3,"file":"util-tags.d.ts","sourceRoot":"","sources":["../src/util-tags.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,KAAG,MAMrD,CAAA;AASD,QAAA,MAAM,SAAS,QAAO,MAErB,CAAA;AAQD,QAAA,MAAM,eAAe,GAAI,gBAAgB,MAAM,EAAE,YAAY,OAAO,KAAG,MAItE,CAAA;AASD,QAAA,MAAM,aAAa,GAAI,cAAc,MAAM,EAAE,YAAY,OAAO,KAAG,MAclE,CAAA;AAQD,QAAA,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,eAAe,OAAO,KAAG,MAKjE,CAAA;AAOD,QAAA,MAAM,eAAe,GAAI,SAAS,MAAM,KAAG,MAG1C,CAAA;AAOD,QAAA,MAAM,kBAAkB,GAAI,SAAS,MAAM,KAAG,MAG7C,CAAA;AAkCD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAA"}
package/dist/util-tags.js CHANGED
@@ -1,11 +1,18 @@
1
1
  const prefix = "typesetting";
2
+ const safeSpacingValue = /^[a-zA-Z0-9 .%()+*,/_-]+$/;
3
+ const normalizeSpacingValue = (value) => {
4
+ if (typeof value !== "string") return "0.2em";
5
+ const trimmed = value.trim();
6
+ return trimmed && safeSpacingValue.test(trimmed) && !trimmed.includes("/*") && !trimmed.includes("*/") ? trimmed : "0.2em";
7
+ };
8
+ const escapeAttribute = (value) => value.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&#39;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
2
9
  const createWbr = () => {
3
10
  return "<wbr>";
4
11
  };
5
12
  const createThinSpace = (thinSpaceWidth, breakable) => {
6
13
  const content = "";
7
14
  const className = `${prefix}-thin-space`;
8
- return createSpacer(content, className, thinSpaceWidth, breakable);
15
+ return createSpacer(content, className, normalizeSpacingValue(thinSpaceWidth), breakable);
9
16
  };
10
17
  const createKerning = (kerningValue, breakable) => {
11
18
  if (kerningValue === 0) return "";
@@ -35,8 +42,8 @@ const applyNoBreaksStyle = (segment) => {
35
42
  return createStyledSpan(segment, className);
36
43
  };
37
44
  const createStyledSpan = (content, className, style = "", attr = "") => {
38
- const styleAttr = style ? ` style="${style}"` : "";
39
- return `<span class="${className}"${styleAttr}${attr}>${content}</span>`;
45
+ const styleAttr = style ? ` style="${escapeAttribute(style)}"` : "";
46
+ return `<span class="${escapeAttribute(className)}"${styleAttr}${attr}>${content}</span>`;
40
47
  };
41
48
  const createSpacer = (content, className, value, breakable) => {
42
49
  const style = `letter-spacing: ${value};`;
@@ -49,5 +56,6 @@ export {
49
56
  applyWrapperStyle,
50
57
  createKerning,
51
58
  createThinSpace,
52
- createWbr
59
+ createWbr,
60
+ normalizeSpacingValue
53
61
  };
@@ -8,6 +8,7 @@ declare const LanguageClass: {
8
8
  isJapanese: (segment: string) => boolean;
9
9
  hasLanguageTransition: (current: string, next: string) => boolean;
10
10
  shouldAddThinSpace: (current: string, next: string) => boolean;
11
+ canBreakAcrossScripts: (current: string, next: string) => boolean;
11
12
  };
12
13
  export { CharClass, LanguageClass };
13
14
  //# sourceMappingURL=util-text-classes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util-text-classes.d.ts","sourceRoot":"","sources":["../src/util-text-classes.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,SAAS;8BAMa,MAAM,KAAG,OAAO;kCAUZ,MAAM,QAAQ,MAAM,KAAG,OAAO;mCA+C7B,MAAM,QAAQ,MAAM,KAAG,OAAO;CAG9D,CAAA;AAOD,QAAA,MAAM,aAAa;uBAME,MAAM,KAAG,OAAO;0BASb,MAAM,KAAG,OAAO;qCAWL,MAAM,QAAQ,MAAM,KAAG,OAAO;kCAUjC,MAAM,QAAQ,MAAM,KAAG,OAAO;CAG7D,CAAA;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"util-text-classes.d.ts","sourceRoot":"","sources":["../src/util-text-classes.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,SAAS;8BAMa,MAAM,KAAG,OAAO;kCAUZ,MAAM,QAAQ,MAAM,KAAG,OAAO;mCA+C7B,MAAM,QAAQ,MAAM,KAAG,OAAO;CAG9D,CAAA;AAOD,QAAA,MAAM,aAAa;uBAME,MAAM,KAAG,OAAO;0BASb,MAAM,KAAG,OAAO;qCAWL,MAAM,QAAQ,MAAM,KAAG,OAAO;kCAUjC,MAAM,QAAQ,MAAM,KAAG,OAAO;qCAe3B,MAAM,QAAQ,MAAM,KAAG,OAAO;CAuBhE,CAAA;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA"}
@@ -90,6 +90,32 @@ const LanguageClass = {
90
90
  */
91
91
  shouldAddThinSpace: (current, next) => {
92
92
  return LanguageClass.hasLanguageTransition(current, next);
93
+ },
94
+ /**
95
+ * UAX #14 が拾わない「ラテン・数字」と「CJK 文字/全角約物」の境界で
96
+ * 改行を許容するかを判定します。日本語組版の慣習に合わせて、
97
+ * 開き括弧の前・閉じ括弧や句読点の後では英数との境界で改行可能にします。
98
+ *
99
+ * 例: `e × 「` は true、`「 × h` は false(OP の後の禁則を尊重)。
100
+ *
101
+ * @param current - 現在の境界文字(1 文字)
102
+ * @param next - 次の境界文字(1 文字)
103
+ * @return 追加で改行可能とみなす場合は true
104
+ */
105
+ canBreakAcrossScripts: (current, next) => {
106
+ if (!current || !next) return false;
107
+ const isLatinOrDigit = (c) => /[\p{sc=Latin}0-9]/u.test(c);
108
+ const isCjkLetter = (c) => /[\p{sc=Hiragana}\p{sc=Katakana}\p{sc=Han}]/u.test(c);
109
+ const isOpeningBracket = (c) => new RegExp(util.openingsRegex.source, "u").test(c);
110
+ const isClosingBracket = (c) => new RegExp(util.closingsRegex.source, "u").test(c);
111
+ const isJapanesePunctuation = (c) => new RegExp(util.commasRegex.source, "u").test(c) || new RegExp(util.periodsRegex.source, "u").test(c);
112
+ if (isLatinOrDigit(current) && (isCjkLetter(next) || isOpeningBracket(next))) {
113
+ return true;
114
+ }
115
+ if ((isCjkLetter(current) || isClosingBracket(current) || isJapanesePunctuation(current)) && isLatinOrDigit(next)) {
116
+ return true;
117
+ }
118
+ return false;
93
119
  }
94
120
  };
95
121
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "palt-typesetting",
3
- "version": "0.9.3",
3
+ "version": "0.9.5",
4
4
  "description": "Typesetting Library for Proportional Spacing",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -12,7 +12,7 @@
12
12
  ],
13
13
  "repository": {
14
14
  "type": "git",
15
- "url": "git+https://github.com/yamatoiizuka/palt-typesetting.git"
15
+ "url": "https://github.com/yamatoiizuka/palt-typesetting.git"
16
16
  },
17
17
  "scripts": {
18
18
  "clean": "rm -rf ./dist && rm -rf ./bundle",
@@ -38,19 +38,21 @@
38
38
  "linebreak": "^1.1.0"
39
39
  },
40
40
  "devDependencies": {
41
- "@babel/core": "^7.23.9",
42
- "@babel/preset-env": "^7.23.9",
41
+ "@babel/core": "^7.29.7",
42
+ "@babel/preset-env": "^7.29.7",
43
+ "@eslint/js": "^10.0.1",
43
44
  "@types/jsdom": "^27.0.0",
44
- "@types/node": "^24",
45
- "@typescript-eslint/eslint-plugin": "^8.0.0",
46
- "@typescript-eslint/parser": "^8.0.0",
47
- "babel-loader": "^10.0.0",
45
+ "@types/node": "^24.19.2",
46
+ "@typescript-eslint/eslint-plugin": "^8.72.0",
47
+ "@typescript-eslint/parser": "^8.72.0",
48
+ "babel-loader": "^10.1.1",
48
49
  "clean-css-cli": "^5.6.3",
49
- "esbuild": "^0.25.0",
50
- "eslint": "^9",
51
- "typescript": "^5",
52
- "vitest": "^3.0.5",
53
- "webpack": "^5.90.3",
50
+ "esbuild": "^0.28.2",
51
+ "eslint": "^10.13.0",
52
+ "globals": "^17.13.0",
53
+ "typescript": "^5.9.3",
54
+ "vitest": "^5.0.5",
55
+ "webpack": "^5.112.2",
54
56
  "webpack-cli": "^6.0.1"
55
57
  }
56
58
  }
package/types/index.d.ts CHANGED
@@ -46,7 +46,9 @@ export interface TypesettingOptions {
46
46
 
47
47
  /**
48
48
  * 四分アキの幅を指定します。
49
- * 例えば'20%'と指定すると、四分アキは通常のスペースの20%の幅になります。
49
+ * CSSの長さ・割合や calc()、var() などの式を指定できます。
50
+ * ASCII英数字、スペース、.%()+*,/_- を使用できます(CSSコメントは不可)。
51
+ * 安全でない値や空文字は既定値 '0.2em' に置き換えます。
50
52
  * insertThinSpaces が true の場合のみ有効です。
51
53
  */
52
54
  thinSpaceWidth?: string