summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWerner Lemberg <wl@gnu.org>2021-08-21 14:37:52 +0200
committerWerner Lemberg <wl@gnu.org>2021-08-21 14:37:52 +0200
commit6ff91027ed9a536814eea7f93b4cb91b9de07e2a (patch)
tree01087b121f09b9f2ea2b5590781cf1533a24762c
parent9354834d4441b140d059a40bbbf15ca110170e3c (diff)
[ttfautohint] Version 1.8.4.
-rw-r--r--ttfautohint/doc/footnote-popup.js2
-rw-r--r--ttfautohint/doc/img/segment-edge.svg63
-rw-r--r--ttfautohint/doc/img/ttfautohintGUI.pngbin80946 -> 109472 bytes
-rw-r--r--ttfautohint/doc/jquery-1.11.2.min.js4
-rw-r--r--ttfautohint/doc/jquery-3.6.0.min.js2
-rw-r--r--ttfautohint/doc/toc-unfold.js2
-rw-r--r--ttfautohint/doc/ttfautohint.html3754
-rw-r--r--ttfautohint/index.html34
-rw-r--r--ttfautohint/osx.html49
9 files changed, 2085 insertions, 1825 deletions
diff --git a/ttfautohint/doc/footnote-popup.js b/ttfautohint/doc/footnote-popup.js
index fff01f1..d89f712 100644
--- a/ttfautohint/doc/footnote-popup.js
+++ b/ttfautohint/doc/footnote-popup.js
@@ -7,7 +7,7 @@
* based on code from http://ignorethecode.net/blog/2010/04/20/footnotes
*/
-// This code snippet needs `jquery' (https://code.jquery.com/jquery-1.11.2.js)
+// This code snippet needs `jquery' (https://code.jquery.com)
// Add a #footnotediv rule to the CSS code to style the pop-up window.
diff --git a/ttfautohint/doc/img/segment-edge.svg b/ttfautohint/doc/img/segment-edge.svg
index 5ceef96..49dc353 100644
--- a/ttfautohint/doc/img/segment-edge.svg
+++ b/ttfautohint/doc/img/segment-edge.svg
@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
@@ -11,7 +9,7 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2"
version="1.1"
- inkscape:version="0.48.2 r9819"
+ inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
width="786.86816"
height="218.47227"
preserveAspectRatio="xMinYMin meet"
@@ -20,7 +18,7 @@
sodipodi:docname="segment-edge.svg"><metadata
id="metadata8"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs6"><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath18"><path
@@ -35,23 +33,24 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:window-width="1680"
- inkscape:window-height="1030"
+ inkscape:window-width="1572"
+ inkscape:window-height="936"
id="namedview4"
showgrid="false"
- inkscape:zoom="1"
+ inkscape:zoom="1.75"
inkscape:cx="388.45371"
inkscape:cy="108.13442"
- inkscape:window-x="-2"
- inkscape:window-y="-3"
- inkscape:window-maximized="1"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
inkscape:current-layer="g10"
units="pt"
fit-margin-top="10"
fit-margin-left="10"
fit-margin-bottom="10"
fit-margin-right="10"
- inkscape:document-units="pt" /><g
+ inkscape:document-units="pt"
+ inkscape:document-rotation="0" /><g
id="g10"
inkscape:groupmode="layer"
inkscape:label="autohint-4"
@@ -156,79 +155,87 @@
y="-44.2202"
x="59.44627"
id="text72"
- transform="scale(1,-1)"><tspan
+ transform="scale(1,-1)"
+ style="line-height:0%"><tspan
id="tspan74"
y="-44.2202"
x="59.44627"
- style="font-size:9.96259975px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMMI10;-inkscape-font-specification:CMMI10">A</tspan></text>
+ style="font-variant:normal;font-weight:normal;font-size:9.9626px;font-family:'Linux Libertine O';-inkscape-font-specification:'Linux Libertine O Italic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:italic;font-stretch:normal;">A</tspan></text>
<text
y="-17.574699"
x="71.78447"
id="text80"
- transform="scale(1,-1)"><tspan
+ transform="scale(1,-1)"
+ style="line-height:0%"><tspan
id="tspan82"
y="-17.574699"
x="71.78447"
- style="font-size:9.96259975px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMMI10;-inkscape-font-specification:CMMI10">B</tspan></text>
+ style="font-variant:normal;font-weight:normal;font-size:9.9626px;font-family:'Linux Libertine O';-inkscape-font-specification:'Linux Libertine O Italic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:italic;font-stretch:normal;">B</tspan></text>
<text
y="-17.574699"
x="0.69186997"
id="text88"
- transform="scale(1,-1)"><tspan
+ transform="scale(1,-1)"
+ style="line-height:0%"><tspan
id="tspan90"
y="-17.574699"
x="0.69186997"
- style="font-size:9.96259975px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMMI10;-inkscape-font-specification:CMMI10">C</tspan></text>
+ style="font-variant:normal;font-weight:normal;font-size:9.9626px;font-family:'Linux Libertine O';-inkscape-font-specification:'Linux Libertine O Italic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:italic;font-stretch:normal;">C</tspan></text>
<text
x="-2.9999999e-05"
id="text96"
- transform="scale(1,-1)"><tspan
+ transform="scale(1,-1)"
+ style="line-height:0%"><tspan
id="tspan98"
y="0"
x="-2.9999999e-05"
- style="font-size:9.96259975px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMMI10;-inkscape-font-specification:CMMI10">D</tspan></text>
+ style="font-variant:normal;font-weight:normal;font-size:9.9626px;font-family:'Linux Libertine O';-inkscape-font-specification:'Linux Libertine O Italic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:italic;font-stretch:normal;">D</tspan></text>
<text
x="195.94096"
id="text104"
- transform="scale(1,-1)"><tspan
+ transform="scale(1,-1)"
+ style="line-height:0%"><tspan
id="tspan106"
y="0"
x="195.94096"
- style="font-size:9.96259975px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMMI10;-inkscape-font-specification:CMMI10">E</tspan></text>
+ style="font-variant:normal;font-weight:normal;font-size:9.9626px;font-family:'Linux Libertine O';-inkscape-font-specification:'Linux Libertine O Italic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:italic;font-stretch:normal;">E</tspan></text>
<text
y="-17.574699"
x="195.94096"
id="text112"
- transform="scale(1,-1)"><tspan
+ transform="scale(1,-1)"
+ style="line-height:0%"><tspan
id="tspan114"
y="-17.574699"
x="195.94096"
- style="font-size:9.96259975px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMMI10;-inkscape-font-specification:CMMI10">F</tspan></text>
+ style="font-variant:normal;font-weight:normal;font-size:9.9626px;font-family:'Linux Libertine O';-inkscape-font-specification:'Linux Libertine O Italic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:italic;font-stretch:normal;">F</tspan></text>
<text
y="-17.574699"
x="109.54147"
id="text120"
- transform="scale(1,-1)"><tspan
+ transform="scale(1,-1)"
+ style="line-height:0%"><tspan
id="tspan122"
y="-17.574699"
x="109.54147"
- style="font-size:9.96259975px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMMI10;-inkscape-font-specification:CMMI10">G</tspan></text>
+ style="font-variant:normal;font-weight:normal;font-size:9.9626px;font-family:'Linux Libertine O';-inkscape-font-specification:'Linux Libertine O Italic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:italic;font-stretch:normal;">G</tspan></text>
<text
y="-44.787102"
x="123.37457"
id="text128"
- transform="scale(1,-1)"><tspan
+ transform="scale(1,-1)"
+ style="line-height:0%"><tspan
id="tspan130"
y="-44.787102"
x="123.37457"
- style="font-size:9.96259975px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMMI10;-inkscape-font-specification:CMMI10">H</tspan></text>
+ style="font-variant:normal;font-weight:normal;font-size:9.9626px;font-family:'Linux Libertine O';-inkscape-font-specification:'Linux Libertine O Italic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:italic;font-stretch:normal;">H</tspan></text>
</g>
-</g></svg> \ No newline at end of file
+</g></svg>
diff --git a/ttfautohint/doc/img/ttfautohintGUI.png b/ttfautohint/doc/img/ttfautohintGUI.png
index f144788..8578f51 100644
--- a/ttfautohint/doc/img/ttfautohintGUI.png
+++ b/ttfautohint/doc/img/ttfautohintGUI.png
Binary files differ
diff --git a/ttfautohint/doc/jquery-1.11.2.min.js b/ttfautohint/doc/jquery-1.11.2.min.js
deleted file mode 100644
index e6a051d..0000000
--- a/ttfautohint/doc/jquery-1.11.2.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! jQuery v1.11.2 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
-!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.2",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;
-return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)
-}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
diff --git a/ttfautohint/doc/jquery-3.6.0.min.js b/ttfautohint/doc/jquery-3.6.0.min.js
new file mode 100644
index 0000000..c4c6022
--- /dev/null
+++ b/ttfautohint/doc/jquery-3.6.0.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
diff --git a/ttfautohint/doc/toc-unfold.js b/ttfautohint/doc/toc-unfold.js
index 606f43d..ad1180a 100644
--- a/ttfautohint/doc/toc-unfold.js
+++ b/ttfautohint/doc/toc-unfold.js
@@ -6,7 +6,7 @@
* written 2014 by Werner Lemberg
*/
-// This code snippet needs `jquery' (https://code.jquery.com/jquery-1.11.2.js)
+// This code snippet needs `jquery' (https://code.jquery.com)
$(document).ready(function() {
TOC.setup();
diff --git a/ttfautohint/doc/ttfautohint.html b/ttfautohint/doc/ttfautohint.html
index 6d0b2ab..ca1af6d 100644
--- a/ttfautohint/doc/ttfautohint.html
+++ b/ttfautohint/doc/ttfautohint.html
@@ -13,7 +13,7 @@
<meta name="author"
content="Werner Lemberg" />
<meta name="version"
- content="1.8.3" />
+ content="1.8.4" />
<title>ttfautohint</title>
@@ -21,7 +21,7 @@
/* use Droid fonts */
@import url("https://fonts.googleapis.com/css?family=Droid+Serif");
@import url("https://fonts.googleapis.com/css?family=Droid+Sans+Mono");
-
+
/* top-level appearance */
body {
width: 100%;
@@ -32,7 +32,7 @@
font-size: large;
font-family: "Droid Serif", serif;
line-height: 130%; }
-
+
/* table of contents; */
/* width and offsets must be synchronized with col2 below */
#TOC {
@@ -61,7 +61,7 @@
/* no link color necessary for TOC entries */
#TOC a {
color: black; }
-
+
/* pop-up window for a footnote */
#footnotediv {
background-color: white;
@@ -73,7 +73,7 @@
-webkit-box-shadow: #555555 0 0 10px;
-moz-box-shadow: 0 0 10px #555555;
}
-
+
/* column container */
.colmask {
/* this fixes the IE7 overflow hidden bug */
@@ -112,7 +112,7 @@
width: 17em; /* wd2 */
position: relative;
right: 14em; } /* wd2 + pad2_r */
-
+
/* we want the same appearance of markups within blockquotes */
/* as with LaTeX */
blockquote {
@@ -121,36 +121,39 @@
blockquote em {
font-style: normal;
}
-
+
code {
font-family: "Droid Sans Mono", monospace;
white-space: nowrap; }
pre code {
white-space: pre; }
-
+
/* no underline for links */
a {
text-decoration: none; }
-
+
/* we want neither superscripts or subscripts */
/* consume extra vertical space */
sup, sub {
line-height: 0.1ex; }
-
+
/* pandoc uses superscripts for footnote numbers, */
/* however, we want a number in brackets */
/* (which is easier to select with the mouse) */
- a.footnoteRef > sup:before {
+ a.footnote-ref > sup:before {
content: "["; }
- a.footnoteRef > sup:after {
+ a.footnote-ref > sup:after {
content: "]"; }
-
+
h1 {
- margin-top: 3.5ex; }
+ margin-top: 3.5ex;
+ line-height: 130%; }
h2 {
- margin-top: 3ex; }
+ margin-top: 3ex;
+ line-height: 130%; }
h3 {
- margin-top: 2.5ex; }
+ margin-top: 2.5ex;
+ line-height: 130%; }
h4 { }
h5 { }
h6 { }
@@ -169,15 +172,15 @@
h5 a,
h6 a {
color: black; }
-
+
/* figures */
- div.figure {
+ figure {
text-align: center;
margin-top: 5ex;
margin-bottom: 5ex; }
- p.caption {
+ figcaption {
font-size: smaller; }
-
+
/* tables */
table {
border-collapse: collapse;
@@ -204,12 +207,12 @@
caption {
font-weight: bold;
padding-bottom: 2ex; }
-
+
/* if we have paragraphs in definition lists, */
/* suppress the very first vertical space */
dd > p:first-child {
margin-top: 0; }
-
+
/* source-code highlighting */
table.sourceCode,
tr.sourceCode,
@@ -229,13 +232,15 @@
padding-left: 5px; }
td.sourceCode {
padding-left: 5px; }
-
+
pre.sourceCode {
margin-left: 2em; }
-
+
code.sourceCode span.kw {
color: #007020;
font-weight: bold; }
+ code.sourceCode span.pp {
+ color: blue; }
code.sourceCode span.dt {
color: #902000; }
code.sourceCode span.dv {
@@ -264,7 +269,7 @@
font-weight: bold; }
</style>
<script type="text/javascript"
- src="jquery-1.11.2.min.js">
+ src="jquery-3.6.0.min.js">
</script>
<script type="text/javascript"
src="toc-unfold.js">
@@ -283,11 +288,11 @@
<div id="header">
<h1 class="title">ttfautohint</h1>
<h2 class="author">Werner Lemberg</h2>
-<h3 class="date">Version 1.8.3</h3>
+<h3 class="date">Version 1.8.4</h3>
</div>
<!--
- Copyright (C) 2011-2019 by Werner Lemberg.
+ Copyright (C) 2011-2021 by Werner Lemberg.
This file is part of the ttfautohint library, and may only be used,
modified, and distributed under the terms given in `COPYING'. By
@@ -315,7 +320,7 @@
</ul>
</blockquote>
<p>In general, there are three possible ways to hint a glyph.</p>
-<ol style="list-style-type: decimal">
+<ol type="1">
<li><p>The font contains hints (in the original sense of this word) to guide the rasterizer, telling it which shapes of the glyphs need special consideration. The hinting logic is partly in the font and partly in the rasterizer. More sophisticated rasterizers are able to produce better rendering results.</p>
<p>This is how PostScript Type 1 and CFF hints work.</p></li>
<li><p>The font contains exact instructions (also called <em>bytecode</em>) on how to move the points of its outlines, depending on the resolution of the output device, and which intentionally distort the (outline) shape to produce a well-rasterized result. The hinting logic is in the font; ideally, all rasterizers simply process these instructions to get the same result on all platforms.</p>
@@ -352,10 +357,9 @@
<p>In theory, a hybrid approach is possible, using TrueType conditional hints: If the rasterizer is black-and-white, ‘sharp’ rendering could happen, while if the rasterizer is ClearType, the ‘fuzzy’ rendering could be used. It is not intended to add black-and-white auto-hinting to ttfautohint. However, it is planned to develop an interface so that ttfautohint can cooperate with font editors, providing this hybrid hinting.</p>
<h1 id="ttfautohint-and-ttfautohintgui"><code>ttfautohint</code> and <code>ttfautohintGUI</code></h1>
<p>On all supported platforms (GNU/Linux, Windows, and Mac OS X), the GUI looks quite similar; the used toolkit is <a href="https://qt.io">Qt</a>, which in turn uses the platform’s native widgets.</p>
-<div class="figure">
-<img src="img/ttfautohintGUI.png" alt="ttfautohintGUI on GNU/Linux running KDE" />
-<p class="caption"><code>ttfautohintGUI</code> on GNU/Linux running KDE</p>
-</div>
+<figure>
+<img src="img/ttfautohintGUI.png" alt="ttfautohintGUI on GNU/Linux running KDE" /><figcaption aria-hidden="true"><code>ttfautohintGUI</code> on GNU/Linux running KDE</figcaption>
+</figure>
<p>Both the GUI and console version share the same features, to be discussed in the next subsection.</p>
<p><strong>Warning: ttfautohint cannot always process a font a second time.</strong> If the font contains composite glyphs, and option <a href="#hint-composites"><code>-c</code></a> is used, reprocessing with ttfautohint will fail. For this reason it is strongly recommended to <em>not</em> delete the original, unhinted font so that you can always rerun ttfautohint.</p>
<h2 id="calling-ttfautohint">Calling <code>ttfautohint</code></h2>
@@ -386,10 +390,9 @@
<dt><code>--reference=</code><em>file</em>, <code>-R</code> <em>file</em></dt>
<dd><p>Derive all blue zones from the given font, which can either be a normal TrueType font or a TrueType collection – for the latter you can select the face index with a <a href="#reference-face-index">separate option</a>.</p>
<p>Use this to harmonize font families, avoiding ugly height differences at small sizes.</p>
-<div class="figure">
-<img src="img/fira-16px-ie11-win81.png" alt="Fira Regular and Bold (version 4.106), auto-hinted with ttfautohint and displayed at 16px using Internet Explorer 11 under Windows 8.1. The bold series shown on the right side uses the regular variant as the reference font." />
-<p class="caption">Fira Regular and Bold (version 4.106), auto-hinted with ttfautohint and displayed at 16px using Internet Explorer 11 under Windows 8.1. The bold series shown on the right side uses the regular variant as the reference font.</p>
-</div>
+<figure>
+<img src="img/fira-16px-ie11-win81.png" alt="Fira Regular and Bold (version 4.106), auto-hinted with ttfautohint and displayed at 16px using Internet Explorer 11 under Windows 8.1. The bold series shown on the right side uses the regular variant as the reference font." /><figcaption aria-hidden="true">Fira Regular and Bold (version 4.106), auto-hinted with ttfautohint and displayed at 16px using Internet Explorer 11 under Windows 8.1. The bold series shown on the right side uses the regular variant as the reference font.</figcaption>
+</figure>
<p>To make this work the reference font must obviously be similar enough to the font to be hinted; in particular, it must have proper blue zone characters so that ttfautohint can derive blue zones at all.</p>
<p><code>ttfautohintGUI</code> doesn’t have this command line option.</p>
</dd>
@@ -434,20 +437,18 @@
<dd><p>Normally, ttfautohint rounds the x height to the pixel grid, with a slight preference for rounding up (to use the terminology of TrueType’s ‘Super Round’ bytecode instruction, the threshold is 5/8px). If this flag is set, values in the PPEM range 6 to <em>n</em> are much more often rounded up (setting the threshold to 13/16px). The default value for <em>n</em> is 14. Use this flag to increase the legibility of small sizes if necessary; you might get weird rendering results otherwise for glyphs like ‘a’ or ‘e’, depending on the font design.</p>
<p>To switch off this feature, use <code>--increase-x-height=0</code> (or check the ‘No x Height Increase’ box in the GUI). To switch off rounding the x height to the pixel grid in general, either partially or completely, see ‘<a href="#x-height-snapping-exceptions">x Height Snapping Exceptions</a>’.</p>
<p>The following FontForge snapshot images use the font ‘<a href="https://github.com/vernnobile/mertzFont/tree/master/FINAL/Mertz-Bold">Mertz Bold</a>’ from Vernon Adams.</p>
-<div class="figure">
-<img src="img/e-17px-x14.png" alt="At 17px, without option -x and -a qqq, the hole in glyph e looks very grey in the FontForge snapshot, and the GDI ClearType rendering (which is the default on older Windows versions) fills it completely with black because it uses B/W rendering along the y axis. ttfautohint’s smooth stem width algorithm intentionally aligns horizontal lines to non-integer (but still discrete) values to avoid large glyph shape distortions." />
-<p class="caption">At 17px, without option <code>-x</code> and <code>-a qqq</code>, the hole in glyph ‘e’ looks very grey in the FontForge snapshot, and the GDI ClearType rendering (which is the default on older Windows versions) fills it completely with black because it uses B/W rendering along the y axis. ttfautohint’s ‘smooth’ stem width algorithm intentionally aligns horizontal lines to non-integer (but still discrete) values to avoid large glyph shape distortions.</p>
-</div>
-<div class="figure">
-<img src="img/e-17px-x17.png" alt="The same, this time with option -x 17 (and -a qqq)." />
-<p class="caption">The same, this time with option <code>-x 17</code> (and <code>-a qqq</code>).</p>
-</div>
+<figure>
+<img src="img/e-17px-x14.png" alt="At 17px, without option -x and -a qqq, the hole in glyph ‘e’ looks very grey in the FontForge snapshot, and the GDI ClearType rendering (which is the default on older Windows versions) fills it completely with black because it uses B/W rendering along the y axis. ttfautohint’s ‘smooth’ stem width algorithm intentionally aligns horizontal lines to non-integer (but still discrete) values to avoid large glyph shape distortions." /><figcaption aria-hidden="true">At 17px, without option <code>-x</code> and <code>-a qqq</code>, the hole in glyph ‘e’ looks very grey in the FontForge snapshot, and the GDI ClearType rendering (which is the default on older Windows versions) fills it completely with black because it uses B/W rendering along the y axis. ttfautohint’s ‘smooth’ stem width algorithm intentionally aligns horizontal lines to non-integer (but still discrete) values to avoid large glyph shape distortions.</figcaption>
+</figure>
+<figure>
+<img src="img/e-17px-x17.png" alt="The same, this time with option -x 17 (and -a qqq)." /><figcaption aria-hidden="true">The same, this time with option <code>-x 17</code> (and <code>-a qqq</code>).</figcaption>
+</figure>
</dd>
</dl>
<h3 id="x-height-snapping-exceptions">x Height Snapping Exceptions</h3>
<dl>
<dt><code>--x-height-snapping-exceptions=</code><em>string</em>, <code>-X</code> <em>string</em></dt>
-<dd><p>A list of comma separated PPEM values or value ranges at which no x height snapping shall be applied. A value range has the form <em>value</em><sub>1</sub><code>-</code><em>value</em><sub>2</sub>, meaning <em>value</em><sub>1</sub> &lt;= PPEM &lt;= <em>value</em><sub>2</sub>. <em>value</em><sub>1</sub> or <em>value</em><sub>2</sub> (or both) can be missing; a missing value is replaced by the beginning or end of the whole interval of valid PPEM values, respectively (6 to 32767). Whitespace is not significant; superfluous commas are ignored, and ranges must be specified in increasing order. For example, the string <code>&quot;7-9, 11, 13-&quot;</code> means the values 7, 8, 9, 11, 13, 14, 15, etc. Consequently, if the supplied argument is <code>&quot;-&quot;</code>, no x height snapping takes place at all. The default is the empty string (<code>&quot;&quot;</code>), meaning no snapping exceptions.</p>
+<dd><p>A list of comma separated PPEM values or value ranges at which no x height snapping shall be applied. A value range has the form <em>value</em><sub>1</sub><code>-</code><em>value</em><sub>2</sub>, meaning <em>value</em><sub>1</sub> &lt;= PPEM &lt;= <em>value</em><sub>2</sub>. <em>value</em><sub>1</sub> or <em>value</em><sub>2</sub> (or both) can be missing; a missing value is replaced by the beginning or end of the whole interval of valid PPEM values, respectively (6 to 32767). Whitespace is not significant; superfluous commas are ignored, and ranges must be specified in increasing order. For example, the string <code>"7-9, 11, 13-"</code> means the values 7, 8, 9, 11, 13, 14, 15, etc. Consequently, if the supplied argument is <code>"-"</code>, no x height snapping takes place at all. The default is the empty string (<code>""</code>), meaning no snapping exceptions.</p>
<p>Normally, x height snapping means a slight increase in the overall vertical glyph size so that the height of lowercase glyphs gets aligned to the pixel grid (this is a global feature, affecting <em>all</em> glyphs of a font). However, having larger vertical glyph sizes is not always desired, especially if it is not possible to adjust the <code>usWinAscent</code> and <code>usWinDescent</code> values from the font’s <code>OS/2</code> table so that they are not too tight. See ‘<a href="#windows-compatibility">Windows Compatibility</a>’ for more details.</p>
</dd>
</dl>
@@ -465,7 +466,7 @@
<dd><p>This option makes ttfautohint add two artificial blue zones, positioned at the <code>usWinAscent</code> and <code>usWinDescent</code> values (from the font’s <code>OS/2</code> table). The idea is to help ttfautohint so that the hinted glyphs stay within this horizontal stripe since older versions of Windows clip everything that lies outside.</p>
<p>There is a general problem with tight values for <code>usWinAscent</code> and <code>usWinDescent</code>; a good description is given in the <a href="http://typophile.com/node/13081">Vertical Metrics How-To</a>. Additionally, there is a special problem with tight values if used in combination with ttfautohint because the auto-hinter tends to slightly increase the vertical glyph dimensions at smaller sizes to improve legibility. This enlargement can make the heights and depths of glyphs exceed the range given by <code>usWinAscent</code> and <code>usWinDescent</code>.</p>
<p>If ttfautohint is part of the font creation tool chain, and the font designer can adjust those two values, a better solution instead of using option <code>-W</code> is to reserve some vertical space for ‘padding’: For the auto-hinter, the difference between a top or bottom outline point before and after hinting is less than 1px, thus a vertical padding of 2px is sufficient. Assuming a minimum hinting size of 6ppem, adding two pixels gives an increase factor of 8÷6 = 1.33. This is near to the default baseline-to-baseline distance used by TeX and other sophisticated text processing applications, namely 1.2×designsize, which gives satisfying results in most cases. It is also near to the factor 1.25 recommended in the abovementioned how-to. For example, if the vertical extension of the largest glyph is 2000 units (assuming that it approximately represents the designsize), the sum of <code>usWinAscent</code> and <code>usWinDescent</code> could be 1.25×2000 = 2500.</p>
-<p>In case ttfautohint is used as an auto-hinting tool for fonts that can be no longer modified to change the metrics, option <code>-W</code> in combination with ‘<code>-X &quot;-&quot;</code>’ to suppress any vertical enlargement should prevent almost all clipping.</p>
+<p>In case ttfautohint is used as an auto-hinting tool for fonts that can be no longer modified to change the metrics, option <code>-W</code> in combination with ‘<code>-X "-"</code>’ to suppress any vertical enlargement should prevent almost all clipping.</p>
</dd>
</dl>
<h3 id="adjust-subglyphs">Adjust Subglyphs</h3>
@@ -548,52 +549,51 @@
<p>[Note that the GDI framework on Windows 10 no longer uses B/W rendering along the vertical axis; we consequently treat it as DW ClearType also. We test this by looking at bit 11 of the GETINFO instruction, which was introduced in rasterizer version 40.]</p>
<p>The command line option expects <em>string</em> to contain exactly three letters with possible values ‘<code>n</code>’ for natural, ‘<code>q</code>’ for quantized, and ‘<code>s</code>’ for strong stem width and positioning mode. The first, second, and third letter correspond to grayscale, GDI ClearType, and DW ClearType rendering, respectively. The default value is <code>qsq</code>, which means that the ‘quantized’ algorithm gets used for grayscale and DW ClearType, and the ‘strong’ algorithm for GDI ClearType. For example, to use the ‘natural’ algorithm for all three rendering targets, use option <code>-a nnn</code>.</p>
<p>In the GUI, simply select the desired stem width algorithm in the three combo boxes.</p>
-<div class="figure">
-<img src="img/Merriweather-Black-g-21px-comparison.png" alt="This image shows different versions of glyph g of the font Merriweather-Black as displayed with the ftgrid demo program of FreeType. Top left is unhinted, top right is hinted using ttfautohint natural stem width mode. Bottom left and right uses the quantized and strong stem width modes, respectively." />
-<p class="caption">This image shows different versions of glyph ‘g’ of the font <a href="https://fonts.google.com/specimen/Merriweather">Merriweather-Black</a> as displayed with the ‘ftgrid’ demo program of FreeType. Top left is unhinted, top right is hinted using ttfautohint natural stem width mode. Bottom left and right uses the quantized and strong stem width modes, respectively.</p>
-</div>
+<figure>
+<img src="img/Merriweather-Black-g-21px-comparison.png" alt="This image shows different versions of glyph ‘g’ of the font Merriweather-Black as displayed with the ‘ftgrid’ demo program of FreeType. Top left is unhinted, top right is hinted using ttfautohint natural stem width mode. Bottom left and right uses the quantized and strong stem width modes, respectively." /><figcaption aria-hidden="true">This image shows different versions of glyph ‘g’ of the font <a href="https://fonts.google.com/specimen/Merriweather">Merriweather-Black</a> as displayed with the ‘ftgrid’ demo program of FreeType. Top left is unhinted, top right is hinted using ttfautohint natural stem width mode. Bottom left and right uses the quantized and strong stem width modes, respectively.</figcaption>
+</figure>
</dd>
<dt><code>--strong-stem-width=</code><em>string</em>, <code>-w</code> <em>string</em></dt>
<dd><p>This option is deprecated and has been replaced with the more versatile option <a href="#stem-width-and-positioning-mode"><code>--stem-width-mode</code></a>. The table below shows the corresponding arguments.</p>
<table>
<thead>
<tr class="header">
-<th align="left"><code>-w</code></th>
-<th align="left"><code>-a</code></th>
+<th style="text-align: left;"><code>-w</code></th>
+<th style="text-align: left;"><code>-a</code></th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left"><code>&quot;&quot;</code></td>
-<td align="left"><code>qqq</code></td>
+<td style="text-align: left;"><code>""</code></td>
+<td style="text-align: left;"><code>qqq</code></td>
</tr>
<tr class="even">
-<td align="left"><code>g</code></td>
-<td align="left"><code>sqq</code></td>
+<td style="text-align: left;"><code>g</code></td>
+<td style="text-align: left;"><code>sqq</code></td>
</tr>
<tr class="odd">
-<td align="left"><code>G</code></td>
-<td align="left"><code>qsq</code></td>
+<td style="text-align: left;"><code>G</code></td>
+<td style="text-align: left;"><code>qsq</code></td>
</tr>
<tr class="even">
-<td align="left"><code>D</code></td>
-<td align="left"><code>qqs</code></td>
+<td style="text-align: left;"><code>D</code></td>
+<td style="text-align: left;"><code>qqs</code></td>
</tr>
<tr class="odd">
-<td align="left"><code>gG</code></td>
-<td align="left"><code>ssq</code></td>
+<td style="text-align: left;"><code>gG</code></td>
+<td style="text-align: left;"><code>ssq</code></td>
</tr>
<tr class="even">
-<td align="left"><code>gD</code></td>
-<td align="left"><code>sqs</code></td>
+<td style="text-align: left;"><code>gD</code></td>
+<td style="text-align: left;"><code>sqs</code></td>
</tr>
<tr class="odd">
-<td align="left"><code>GD</code></td>
-<td align="left"><code>qss</code></td>
+<td style="text-align: left;"><code>GD</code></td>
+<td style="text-align: left;"><code>qss</code></td>
</tr>
<tr class="even">
-<td align="left"><code>gGD</code></td>
-<td align="left"><code>sss</code></td>
+<td style="text-align: left;"><code>gGD</code></td>
+<td style="text-align: left;"><code>sss</code></td>
</tr>
</tbody>
</table>
@@ -629,15 +629,13 @@
<p>The next few subsections are mainly based on this article, introducing some important concepts. Note that ttfautohint only does hinting along the vertical direction (modifying y coordinates only).</p>
<h2 id="segments-and-edges">Segments and Edges</h2>
<p>A glyph consists of one or more <em>contours</em> (this is, closed curves). For example, glyph ‘O’ consists of two contours, while glyph ‘I’ has only one.</p>
-<div class="figure">
-<img src="img/o-and-i.svg" alt="The letter O has two contours, an inner and an outer one, while letter I has only an outer contour." />
-<p class="caption">The letter ‘O’ has two contours, an inner and an outer one, while letter ‘I’ has only an outer contour.</p>
-</div>
+<figure>
+<img src="img/o-and-i.svg" alt="The letter ‘O’ has two contours, an inner and an outer one, while letter ‘I’ has only an outer contour." /><figcaption aria-hidden="true">The letter ‘O’ has two contours, an inner and an outer one, while letter ‘I’ has only an outer contour.</figcaption>
+</figure>
<p>A <em>segment</em> is a series of consecutive points of a contour (including its Bézier control points) that are approximately aligned along a coordinate axis. A segment has one of three possible directions: left, right, or none (which means neither left nor right), derived from the TrueType outline directions. ttfautohint itself creates segments that contain at least two points. Using control instructions, however, it is possible to create one-point segments, which are useful for fine-tuning the hinting process.</p>
-<div class="figure">
-<img src="img/segment-edge.svg" alt="A serif. Contour and control points are represented by squares and circles, respectively. The bottom line DE is approximately aligned along the horizontal axis, thus it forms a segment of 7 points. Together with the two other horizontal segments, BC and FG, they form two edges (BC+FG, DE)." />
-<p class="caption">A serif. Contour and control points are represented by squares and circles, respectively. The bottom ‘line’ DE is approximately aligned along the horizontal axis, thus it forms a segment of 7 points. Together with the two other horizontal segments, BC and FG, they form two edges (BC+FG, DE).</p>
-</div>
+<figure>
+<img src="img/segment-edge.svg" alt="A serif. Contour and control points are represented by squares and circles, respectively. The bottom ‘line’ DE is approximately aligned along the horizontal axis, thus it forms a segment of 7 points. Together with the two other horizontal segments, BC and FG, they form two edges (BC+FG, DE)." /><figcaption aria-hidden="true">A serif. Contour and control points are represented by squares and circles, respectively. The bottom ‘line’ DE is approximately aligned along the horizontal axis, thus it forms a segment of 7 points. Together with the two other horizontal segments, BC and FG, they form two edges (BC+FG, DE).</figcaption>
+</figure>
<p>An <em>edge</em> corresponds to a single coordinate value (allowing for a small threshold) on the main dimension that collects one or more segments, all pointing into the same direction (either left or right, all others are ignored). While finding segments is done on the unscaled outline, finding edges is bound to the device resolution. See <a href="#hint-sets">below</a> for an example.</p>
<p>In general, segments and edges pointing into different directions ‘repel’ each other, thus preventing alignment on the same vertical coordinate if they are near. Note that this is a simplification, but it should help understand how to manipulate and/or create segments in control instructions files.</p>
<p>The analysis to find segments and edges is specific to a writing system, see <a href="#writing-systems">below</a>.</p>
@@ -658,402 +656,430 @@
<caption>script-specific standard characters of the ‘latin’ writing system</caption>
<thead>
<tr class="header">
-<th align="left">Script</th>
-<th align="left">Standard characters</th>
+<th style="text-align: left;">Script</th>
+<th style="text-align: left;">Standard characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left"><code>adlm</code></td>
-<td align="left">‘𞤌’, U+1E90C, ADLAM CAPITAL LETTER O</td>
+<td style="text-align: left;"><code>adlm</code></td>
+<td style="text-align: left;">‘𞤌’, U+1E90C, ADLAM CAPITAL LETTER O</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘𞤮’, U+1E92E, ADLAM SMALL LETTER O</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;"><code>arab</code></td>
+<td style="text-align: left;">‘ـ’, U+0640, ARABIC TATWEEL</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ل’, U+0644, ARABIC LETTER LAM</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ح’, U+062D, ARABIC LETTER HAH</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;"><code>armn</code></td>
+<td style="text-align: left;">‘օ’, U+0585, ARMENIAN SMALL LETTER OH</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘Օ’, U+0555, ARMENIAN CAPITAL LETTER OH</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘𞤮’, U+1E92E, ADLAM SMALL LETTER O</td>
+<td style="text-align: left;"><code>avst</code></td>
+<td style="text-align: left;">‘𐬚’, U+10B1A, AVESTAN LETTER THE</td>
</tr>
<tr class="odd">
-<td align="left"><code>arab</code></td>
-<td align="left">‘ـ’, U+0640, ARABIC TATWEEL</td>
+<td style="text-align: left;"><code>bamu</code></td>
+<td style="text-align: left;">‘ꛁ’, U+A6C1, BAMUM LETTER YUQ</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘ل’, U+0644, ARABIC LETTER LAM</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ꛯ’, U+A6EF, BAMUM LETTER KOGHOM</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘ح’, U+062D, ARABIC LETTER HAH</td>
+<td style="text-align: left;"><code>beng</code></td>
+<td style="text-align: left;">‘০’, U+09E6, BENGALI DIGIT ZERO</td>
</tr>
<tr class="even">
-<td align="left"><code>armn</code></td>
-<td align="left">‘օ’, U+0585, ARMENIAN SMALL LETTER OH</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘৪’, U+09EA, BENGALI DIGIT FOUR</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘Օ’, U+0555, ARMENIAN CAPITAL LETTER OH</td>
+<td style="text-align: left;"><code>buhd</code></td>
+<td style="text-align: left;">‘ᝋ’, U+174B, BUHID LETTER MA</td>
</tr>
<tr class="even">
-<td align="left"><code>avst</code></td>
-<td align="left">‘𐬚’, U+10B1A, AVESTAN LETTER THE</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ᝏ’, U+174F, BUHID LETTER WA</td>
</tr>
<tr class="odd">
-<td align="left"><code>bamu</code></td>
-<td align="left">‘ꛁ’, U+A6C1, BAMUM LETTER YUQ</td>
+<td style="text-align: left;"><code>cakm</code></td>
+<td style="text-align: left;">‘𑄤’, U+11124, CHAKMA LETTER WAA</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘ꛯ’, U+A6EF, BAMUM LETTER KOGHOM</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘𑄉’, U+11109, CHAKMA LETTER GAA</td>
</tr>
<tr class="odd">
-<td align="left"><code>beng</code></td>
-<td align="left">‘০’, U+09E6, BENGALI DIGIT ZERO</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘𑄛’, U+1111B, CHAKMA LETTER PAA</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘৪’, U+09EA, BENGALI DIGIT FOUR</td>
+<td style="text-align: left;"><code>cans</code></td>
+<td style="text-align: left;">‘ᑌ’, U+144C, CANADIAN SYLLABICS TE</td>
</tr>
<tr class="odd">
-<td align="left"><code>buhd</code></td>
-<td align="left">‘ᝋ’, U+174B, BUHID LETTER MA</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ᓚ’, U+14DA, CANADIAN SYLLABICS LA</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘ᝏ’, U+174F, BUHID LETTER WA</td>
+<td style="text-align: left;"><code>cari</code></td>
+<td style="text-align: left;">‘𐊫’, U+102AB, CARIAN LETTER O</td>
</tr>
<tr class="odd">
-<td align="left"><code>cakm</code></td>
-<td align="left">‘𑄤’, U+11124, CHAKMA LETTER WAA</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘𐋉’, U+102C9, CARIAN LETTER RR</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘𑄉’, U+11109, CHAKMA LETTER GAA</td>
+<td style="text-align: left;"><code>cher</code></td>
+<td style="text-align: left;">‘Ꭴ’, U+13A4, CHEROKEE LETTER U</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘𑄛’, U+1111B, CHAKMA LETTER PAA</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘Ꮕ’, U+13C5, CHEROKEE LETTER NV</td>
</tr>
<tr class="even">
-<td align="left"><code>cans</code></td>
-<td align="left">‘ᑌ’, U+144C, CANADIAN SYLLABICS TE</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ꮕ’, U+AB95, CHEROKEE SMALL LETTER NV</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘ᓚ’, U+14DA, CANADIAN SYLLABICS LA</td>
+<td style="text-align: left;"><code>copt</code></td>
+<td style="text-align: left;">‘Ⲟ’, U+2C9E, COPTIC CAPITAL LETTER O</td>
</tr>
<tr class="even">
-<td align="left"><code>cari</code></td>
-<td align="left">‘𐊫’, U+102AB, CARIAN LETTER O</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ⲟ’, U+2C9F, COPTIC SMALL LETTER O</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘𐋉’, U+102C9, CARIAN LETTER RR</td>
+<td style="text-align: left;"><code>cprt</code></td>
+<td style="text-align: left;">‘𐠅’, U+10805, CYPRIOT SYLLABLE JA</td>
</tr>
<tr class="even">
-<td align="left"><code>cher</code></td>
-<td align="left">‘Ꭴ’, U+13A4, CHEROKEE LETTER U</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘𐠣’, U+10823, CYPRIOT SYLLABLE RA</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘Ꮕ’, U+13C5, CHEROKEE LETTER NV</td>
+<td style="text-align: left;"><code>cyrl</code></td>
+<td style="text-align: left;">‘о’, U+043E, CYRILLIC SMALL LETTER O</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘ꮕ’, U+AB95, CHEROKEE SMALL LETTER NV</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘О’, U+041E, CYRILLIC CAPITAL LETTER O</td>
</tr>
<tr class="odd">
-<td align="left"><code>copt</code></td>
-<td align="left">‘Ⲟ’, U+2C9E, COPTIC CAPITAL LETTER O</td>
+<td style="text-align: left;"><code>deva</code></td>
+<td style="text-align: left;">‘ठ’, U+0920, DEVANAGARI LETTER TTHA</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘ⲟ’, U+2C9F, COPTIC SMALL LETTER O</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘व’, U+0935, DEVANAGARI LETTER VA</td>
</tr>
<tr class="odd">
-<td align="left"><code>cprt</code></td>
-<td align="left">‘𐠅’, U+10805, CYPRIOT SYLLABLE JA</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ट’, U+091F, DEVANAGARI LETTER TTA</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘𐠣’, U+10823, CYPRIOT SYLLABLE RA</td>
+<td style="text-align: left;"><code>dsrt</code></td>
+<td style="text-align: left;">‘𐐄’, U+10404, DESERET CAPITAL LETTER LONG O</td>
</tr>
<tr class="odd">
-<td align="left"><code>cyrl</code></td>
-<td align="left">‘о’, U+043E, CYRILLIC SMALL LETTER O</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘𐐬’, U+1042C, DESERET SMALL LETTER LONG O</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘О’, U+041E, CYRILLIC CAPITAL LETTER O</td>
+<td style="text-align: left;"><code>ethi</code></td>
+<td style="text-align: left;">‘ዐ’, U+12D0, ETHIOPIC SYLLABLE PHARYNGEAL A</td>
</tr>
<tr class="odd">
-<td align="left"><code>deva</code></td>
-<td align="left">‘ठ’, U+0920, DEVANAGARI LETTER TTHA</td>
+<td style="text-align: left;"><code>geor</code></td>
+<td style="text-align: left;">‘ი’, U+10D8, GEORGIAN LETTER IN</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘व’, U+0935, DEVANAGARI LETTER VA</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ე’, U+10D4, GEORGIAN LETTER EN</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘ट’, U+091F, DEVANAGARI LETTER TTA</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ა’, U+10D0, GEORGIAN LETTER AN</td>
</tr>
<tr class="even">
-<td align="left"><code>dsrt</code></td>
-<td align="left">‘𐐄’, U+10404, DESERET CAPITAL LETTER LONG O</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘Ი’, U+1C98, GEORGIAN MTAVRULI CAPITAL LETTER IN</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘𐐬’, U+1042C, DESERET SMALL LETTER LONG O</td>
+<td style="text-align: left;"><code>geok</code></td>
+<td style="text-align: left;">‘Ⴖ’, U+10B6, GEORGIAN CAPITAL LETTER GHAN</td>
</tr>
<tr class="even">
-<td align="left"><code>ethi</code></td>
-<td align="left">‘ዐ’, U+12D0, ETHIOPIC SYLLABLE PHARYNGEAL A</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘Ⴑ’, U+10B1, GEORGIAN CAPITAL LETTER SAN</td>
</tr>
<tr class="odd">
-<td align="left"><code>geor</code></td>
-<td align="left">‘ი’, U+10D8, GEORGIAN LETTER IN</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ⴙ’, U+2D19, GEORGIAN SMALL LETTER CHIN</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘ე’, U+10D4, GEORGIAN LETTER EN</td>
+<td style="text-align: left;"><code>glag</code></td>
+<td style="text-align: left;">‘Ⱅ’, U+2C15, GLAGOLITIC CAPITAL LETTER TVRIDO</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘ა’, U+10D0, GEORGIAN LETTER AN</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ⱅ’, U+2C45, GLAGOLITIC SMALL LETTER TVRIDO</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘Ი’, U+1C98, GEORGIAN MTAVRULI CAPITAL LETTER IN</td>
+<td style="text-align: left;"><code>goth</code></td>
+<td style="text-align: left;">‘𐌴’, U+10334, GOTHIC LETTER AIHVUS</td>
</tr>
<tr class="odd">
-<td align="left"><code>geok</code></td>
-<td align="left">‘Ⴖ’, U+10B6, GEORGIAN CAPITAL LETTER GHAN</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘𐌾’, U+1033E, GOTHIC LETTER JER</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘Ⴑ’, U+10B1, GEORGIAN CAPITAL LETTER SAN</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘𐍃’, U+10343, GOTHIC LETTER SAUIL</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘ⴙ’, U+2D19, GEORGIAN SMALL LETTER CHIN</td>
+<td style="text-align: left;"><code>grek</code></td>
+<td style="text-align: left;">‘ο’, U+03BF, GREEK SMALL LETTER OMICRON</td>
</tr>
<tr class="even">
-<td align="left"><code>glag</code></td>
-<td align="left">‘Ⱅ’, U+2C15, GLAGOLITIC CAPITAL LETTER TVRIDO</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘Ο’, U+039F, GREEK CAPITAL LETTER OMICRON</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘ⱅ’, U+2C45, GLAGOLITIC SMALL LETTER TVRIDO</td>
+<td style="text-align: left;"><code>gujr</code></td>
+<td style="text-align: left;">‘ટ’, U+0A9F, GUJARATI LETTER TTA</td>
</tr>
<tr class="even">
-<td align="left"><code>goth</code></td>
-<td align="left">‘𐌴’, U+10334, GOTHIC LETTER AIHVUS</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘૦’, U+0AE6, GUJARATI DIGIT ZERO</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘𐌾’, U+1033E, GOTHIC LETTER JER</td>
+<td style="text-align: left;"><code>guru</code></td>
+<td style="text-align: left;">‘ਠ’, U+0A20, GURMUKHI LETTER TTHA</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘𐍃’, U+10343, GOTHIC LETTER SAUIL</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ਰ’, U+0A30, GURMUKHI LETTER RA</td>
</tr>
<tr class="odd">
-<td align="left"><code>grek</code></td>
-<td align="left">‘ο’, U+03BF, GREEK SMALL LETTER OMICRON</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘੦’, U+0A66, GURMUKHI DIGIT ZERO</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘Ο’, U+039F, GREEK CAPITAL LETTER OMICRON</td>
+<td style="text-align: left;"><code>hebr</code></td>
+<td style="text-align: left;">‘ם’, U+05DD, HEBREW LETTER FINAL MEM</td>
</tr>
<tr class="odd">
-<td align="left"><code>gujr</code></td>
-<td align="left">‘ટ’, U+0A9F, GUJARATI LETTER TTA</td>
+<td style="text-align: left;"><code>hmnp</code></td>
+<td style="text-align: left;">‘𞄨’, U+1E128, NYIAKENG PUACHUE HMONG LETTER O</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘૦’, U+0AE6, GUJARATI DIGIT ZERO</td>
+<td style="text-align: left;"><code>kali</code></td>
+<td style="text-align: left;">‘ꤍ’, U+A90D, KAYAH LI LETTER NGA</td>
</tr>
<tr class="odd">
-<td align="left"><code>guru</code></td>
-<td align="left">‘ਠ’, U+0A20, GURMUKHI LETTER TTHA</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘꤀’, U+A900, KAYAH LI DIGIT ZERO</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘ਰ’, U+0A30, GURMUKHI LETTER RA</td>
+<td style="text-align: left;"><code>knda</code></td>
+<td style="text-align: left;">‘೦’, U+0CE6, KANNADA DIGIT ZERO</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘੦’, U+0A66, GURMUKHI DIGIT ZERO</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ಬ’, U+0CAC, KANNADA LETTER BA</td>
</tr>
<tr class="even">
-<td align="left"><code>hebr</code></td>
-<td align="left">‘ם’, U+05DD, HEBREW LETTER FINAL MEM</td>
+<td style="text-align: left;"><code>khmr</code></td>
+<td style="text-align: left;">‘០’, U+17E0, KHMER DIGIT ZERO</td>
</tr>
<tr class="odd">
-<td align="left"><code>kali</code></td>
-<td align="left">‘ꤍ’, U+A90D, KAYAH LI LETTER NGA</td>
+<td style="text-align: left;"><code>lao</code></td>
+<td style="text-align: left;">‘໐’, U+0ED0, LAO DIGIT ZERO</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘꤀’, U+A900, KAYAH LI DIGIT ZERO</td>
+<td style="text-align: left;"><code>latn</code></td>
+<td style="text-align: left;">‘o’, U+006F, LATIN SMALL LETTER O</td>
</tr>
<tr class="odd">
-<td align="left"><code>knda</code></td>
-<td align="left">‘೦’, U+0CE6, KANNADA DIGIT ZERO</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘O’, U+004F, LATIN CAPITAL LETTER O</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘ಬ’, U+0CAC, KANNADA LETTER BA</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘0’, U+0030, DIGIT ZERO</td>
</tr>
<tr class="odd">
-<td align="left"><code>khmr</code></td>
-<td align="left">‘០’, U+17E0, KHMER DIGIT ZERO</td>
+<td style="text-align: left;"><code>lisu</code></td>
+<td style="text-align: left;">‘ꓳ’, U+A4F3, LISU LETTER</td>
</tr>
<tr class="even">
-<td align="left"><code>lao</code></td>
-<td align="left">‘໐’, U+0ED0, LAO DIGIT ZERO</td>
+<td style="text-align: left;"><code>medf</code></td>
+<td style="text-align: left;">‘𖹡’, U+16E61, MEDEFAIDRIN SMALL LETTER S</td>
</tr>
<tr class="odd">
-<td align="left"><code>latn</code></td>
-<td align="left">‘o’, U+006F, LATIN SMALL LETTER O</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘𖹛’, U+16E5B, MEDEFAIDRIN CAPITAL LETTER N</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘O’, U+004F, LATIN CAPITAL LETTER O</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘𖹯’, U+16E6F, MEDEFAIDRIN SMALL LETTER E</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘0’, U+0030, DIGIT ZERO</td>
+<td style="text-align: left;"><code>mlym</code></td>
+<td style="text-align: left;">‘ഠ’, U+0D20, MALAYALAM LETTER TTHA</td>
</tr>
<tr class="even">
-<td align="left"><code>lisu</code></td>
-<td align="left">‘ꓳ’, U+A4F3, LISU LETTER</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘റ’, U+0D31, MALAYALAM LETTER RRA</td>
</tr>
<tr class="odd">
-<td align="left"><code>mlym</code></td>
-<td align="left">‘ഠ’, U+0D20, MALAYALAM LETTER TTHA</td>
+<td style="text-align: left;"><code>mong</code></td>
+<td style="text-align: left;">‘ᡂ’, U+1842, MONGOLIAN LETTER CHI</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘റ’, U+0D31, MALAYALAM LETTER RRA</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ᠪ’, U+182A, MONGOLIAN LETTER BA</td>
</tr>
<tr class="odd">
-<td align="left"><code>mong</code></td>
-<td align="left">‘ᡂ’, U+1842, MONGOLIAN LETTER CHI</td>
+<td style="text-align: left;"><code>mymr</code></td>
+<td style="text-align: left;">‘ဝ’, U+101D, MYANMAR LETTER WA</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘ᠪ’, U+182A, MONGOLIAN LETTER BA</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘င’, U+1004, MYANMAR LETTER NGA</td>
</tr>
<tr class="odd">
-<td align="left"><code>mymr</code></td>
-<td align="left">‘ဝ’, U+101D, MYANMAR LETTER WA</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ဂ’, U+1002, MYANMAR LETTER GA</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘င’, U+1004, MYANMAR LETTER NGA</td>
+<td style="text-align: left;"><code>nkoo</code></td>
+<td style="text-align: left;">‘ߋ’, U+07CB, NKO LETTER EE</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘ဂ’, U+1002, MYANMAR LETTER GA</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘߀’, U+07C0, NKO DIGIT ZERO</td>
</tr>
<tr class="even">
-<td align="left"><code>nkoo</code></td>
-<td align="left">‘ߋ’, U+07CB, NKO LETTER EE</td>
+<td style="text-align: left;"><code>olck</code></td>
+<td style="text-align: left;">‘ᱛ’, U+1C5B, OL CHIKI LETTER AT</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘߀’, U+07C0, NKO DIGIT ZERO</td>
+<td style="text-align: left;"><code>orkh</code></td>
+<td style="text-align: left;">‘𐰗’, U+10C17, OLD TURKIC LETTER YENISEI AY</td>
</tr>
<tr class="even">
-<td align="left"><code>olck</code></td>
-<td align="left">‘ᱛ’, U+1C5B, OL CHIKI LETTER AT</td>
+<td style="text-align: left;"><code>osge</code></td>
+<td style="text-align: left;">‘𐓂’, U+104C2, OSAGE CAPITAL LETTER O</td>
</tr>
<tr class="odd">
-<td align="left"><code>orkh</code></td>
-<td align="left">‘𐰗’, U+10C17, OLD TURKIC LETTER YENISEI AY</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘𐓪’, U+104EA, OSAGE SMALL LETTER O</td>
</tr>
<tr class="even">
-<td align="left"><code>osge</code></td>
-<td align="left">‘𐓂’, U+104C2, OSAGE CAPITAL LETTER O</td>
+<td style="text-align: left;"><code>osma</code></td>
+<td style="text-align: left;">‘𐒆’, U+10486, OSMANYA LETTER DEEL</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘𐓪’, U+104EA, OSAGE SMALL LETTER O</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘𐒠’, U+104A0, OSMANYA DIGIT ZERO</td>
</tr>
<tr class="even">
-<td align="left"><code>osma</code></td>
-<td align="left">‘𐒆’, U+10486, OSMANYA LETTER DEEL</td>
+<td style="text-align: left;"><code>rohg</code></td>
+<td style="text-align: left;">‘𐴰’, HANIFI ROHINGYA DIGIT ZERO</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘𐒠’, U+104A0, OSMANYA DIGIT ZERO</td>
+<td style="text-align: left;"><code>saur</code></td>
+<td style="text-align: left;">‘ꢝ’, U+A89D, SAURASHTRA LETTER TTHA</td>
</tr>
<tr class="even">
-<td align="left"><code>saur</code></td>
-<td align="left">‘ꢝ’, U+A89D, SAURASHTRA LETTER TTHA</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘꣐’, U+A8D0, SAURASHTRA DIGIT ZERO</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘꣐’, U+A8D0, SAURASHTRA DIGIT ZERO</td>
+<td style="text-align: left;"><code>shaw</code></td>
+<td style="text-align: left;">‘𐑴’, U+10474, SHAVIAN LETTER OAK</td>
</tr>
<tr class="even">
-<td align="left"><code>shaw</code></td>
-<td align="left">‘𐑴’, U+10474, SHAVIAN LETTER OAK</td>
+<td style="text-align: left;"><code>sinh</code></td>
+<td style="text-align: left;">‘ට’, U+0DA7, SINHALA LETTER ALPAPRAANA TTAYANNA</td>
</tr>
<tr class="odd">
-<td align="left"><code>sinh</code></td>
-<td align="left">‘ට’, U+0DA7, SINHALA LETTER ALPAPRAANA TTAYANNA</td>
+<td style="text-align: left;"><code>sund</code></td>
+<td style="text-align: left;">‘᮰’, U+1BB0, SUNDANESE DIGIT ZERO</td>
</tr>
<tr class="even">
-<td align="left"><code>sund</code></td>
-<td align="left">‘᮰’, U+1BB0, SUNDANESE DIGIT ZERO</td>
+<td style="text-align: left;"><code>taml</code></td>
+<td style="text-align: left;">‘௦’, U+0BE6, TAMIL DIGIT ZERO</td>
</tr>
<tr class="odd">
-<td align="left"><code>taml</code></td>
-<td align="left">‘௦’, U+0BE6, TAMIL DIGIT ZERO</td>
+<td style="text-align: left;"><code>tavt</code></td>
+<td style="text-align: left;">‘ꪒ’, U+AA92, TAI VIET LETTER LOW DO</td>
</tr>
<tr class="even">
-<td align="left"><code>tavt</code></td>
-<td align="left">‘ꪒ’, U+AA92, TAI VIET LETTER LOW DO</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ꪫ’, U+AAAB, TAI VIET LETTER HIGH VO</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘ꪫ’, U+AAAB, TAI VIET LETTER HIGH VO</td>
+<td style="text-align: left;"><code>telu</code></td>
+<td style="text-align: left;">‘౦’, U+0C66, TELUGU DIGIT ZERO</td>
</tr>
<tr class="even">
-<td align="left"><code>telu</code></td>
-<td align="left">‘౦’, U+0C66, TELUGU DIGIT ZERO</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘౧’, U+0C67, TELUGU DIGIT ONE</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘౧’, U+0C67, TELUGU DIGIT ONE</td>
+<td style="text-align: left;"><code>tfng</code></td>
+<td style="text-align: left;">‘ⵔ’, U+2D54, TIFINAGH LETTER YAR</td>
</tr>
<tr class="even">
-<td align="left"><code>tfng</code></td>
-<td align="left">‘ⵔ’, U+2D54, TIFINAGH LETTER YAR</td>
+<td style="text-align: left;"><code>thai</code></td>
+<td style="text-align: left;">‘า’, U+0E32, THAI CHARACTER SARA AA</td>
</tr>
<tr class="odd">
-<td align="left"><code>thai</code></td>
-<td align="left">‘า’, U+0E32, THAI CHARACTER SARA AA</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ๅ’, U+0E45, THAI CHARACTER LAKKHANGYAO</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘ๅ’, U+0E45, THAI CHARACTER LAKKHANGYAO</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘๐’, U+0E50, THAI DIGIT ZERO</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘๐’, U+0E50, THAI DIGIT ZERO</td>
+<td style="text-align: left;"><code>vaii</code></td>
+<td style="text-align: left;">‘ꘓ’, U+A613, VAI SYMBOL FEENG</td>
</tr>
<tr class="even">
-<td align="left"><code>vaii</code></td>
-<td align="left">‘ꘓ’, U+A613, VAI SYMBOL FEENG</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ꖜ’, U+A59C, VAI SYLLABLE BHU</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">‘ꖜ’, U+A59C, VAI SYLLABLE BHU</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘ꖴ’, U+A5B4, VAI SYLLABLE KU</td>
</tr>
<tr class="even">
-<td align="left"></td>
-<td align="left">‘ꖴ’, U+A5B4, VAI SYLLABLE KU</td>
+<td style="text-align: left;"><code>yezi</code></td>
+<td style="text-align: left;">‘𐺋’, U+10E8B, YEZIDI LETTER DAL</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;"></td>
+<td style="text-align: left;">‘𐺦’, U+10EA6, YEZIDI LETTER EW</td>
</tr>
</tbody>
</table>
@@ -1061,38 +1087,38 @@
<caption>standard characters of the ‘latin’ writing system, special scripts</caption>
<thead>
<tr class="header">
-<th align="center">Script</th>
-<th align="left">Standard characters</th>
+<th style="text-align: center;">Script</th>
+<th style="text-align: left;">Standard characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>khms</code></td>
-<td align="left">‘᧡’, U+19E1, KHMER SYMBOL MUOY KOET</td>
+<td style="text-align: center;"><code>khms</code></td>
+<td style="text-align: left;">‘᧡’, U+19E1, KHMER SYMBOL MUOY KOET</td>
</tr>
<tr class="even">
-<td align="center"></td>
-<td align="left">‘᧪’, U+19EA, KHMER SYMBOL DAP KOET</td>
+<td style="text-align: center;"></td>
+<td style="text-align: left;">‘᧪’, U+19EA, KHMER SYMBOL DAP KOET</td>
</tr>
<tr class="odd">
-<td align="center"><code>latb</code></td>
-<td align="left">‘ₒ’, U+2092, LATIN SUBSCRIPT SMALL LETTER O</td>
+<td style="text-align: center;"><code>latb</code></td>
+<td style="text-align: left;">‘ₒ’, U+2092, LATIN SUBSCRIPT SMALL LETTER O</td>
</tr>
<tr class="even">
-<td align="center"></td>
-<td align="left">‘₀’, U+2080, SUBSCRIPT ZERO</td>
+<td style="text-align: center;"></td>
+<td style="text-align: left;">‘₀’, U+2080, SUBSCRIPT ZERO</td>
</tr>
<tr class="odd">
-<td align="center"><code>latp</code></td>
-<td align="left">‘ᵒ’, U+1D52, MODIFIER LETTER SMALL O</td>
+<td style="text-align: center;"><code>latp</code></td>
+<td style="text-align: left;">‘ᵒ’, U+1D52, MODIFIER LETTER SMALL O</td>
</tr>
<tr class="even">
-<td align="center"></td>
-<td align="left">‘ᴼ’, U+1D3C, MODIFIER LETTER CAPITAL O</td>
+<td style="text-align: center;"></td>
+<td style="text-align: left;">‘ᴼ’, U+1D3C, MODIFIER LETTER CAPITAL O</td>
</tr>
<tr class="odd">
-<td align="center"></td>
-<td align="left">‘⁰’, U+2070, SUPERSCRIPT ZERO</td>
+<td style="text-align: center;"></td>
+<td style="text-align: left;">‘⁰’, U+2070, SUPERSCRIPT ZERO</td>
</tr>
</tbody>
</table>
@@ -1105,10 +1131,9 @@
</ul></li>
</ul>
<h2 id="blue-zones">Blue Zones</h2>
-<div class="figure">
-<img src="img/blue-zones.svg" alt="Two blue zones relevant to the glyph a. Vertical point coordinates of all glyphs within these zones are aligned, provided the blue zone is active (this is, its vertical size is smaller than 3/4 pixels)." />
-<p class="caption">Two blue zones relevant to the glyph ‘a’. Vertical point coordinates of <em>all</em> glyphs within these zones are aligned, provided the blue zone is active (this is, its vertical size is smaller than 3/4 pixels).</p>
-</div>
+<figure>
+<img src="img/blue-zones.svg" alt="Two blue zones relevant to the glyph ‘a’. Vertical point coordinates of all glyphs within these zones are aligned, provided the blue zone is active (this is, its vertical size is smaller than 3/4 pixels)." /><figcaption aria-hidden="true">Two blue zones relevant to the glyph ‘a’. Vertical point coordinates of <em>all</em> glyphs within these zones are aligned, provided the blue zone is active (this is, its vertical size is smaller than 3/4 pixels).</figcaption>
+</figure>
<p>Outlines of certain characters are used to determine <em>blue zones</em>. This concept is the same as with Type 1 fonts: All glyph points that lie in certain small horizontal zones get aligned vertically.</p>
<p>The tables below show the blue zone characters of all available scripts of the latin writing system; the values are hard-coded in the source code. Since the auto-hinter takes mean values it is not necessary that all characters of a zone are present.</p>
<p>‘Round’ characters in blue zones (e.g., the top and bottom of ‘O’ or the bottom of ‘g’) are used to control overshoot handling.</p>
@@ -1117,31 +1142,31 @@
<caption><code>adlm</code> (Adlam) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of capital letters</td>
-<td align="left">𞤌 𞤅 𞤈 𞤏 𞤔 𞤚</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of capital letters</td>
+<td style="text-align: left;">𞤌 𞤅 𞤈 𞤏 𞤔 𞤚</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of capital letters</td>
-<td align="left">𞤂 𞤖</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of capital letters</td>
+<td style="text-align: left;">𞤂 𞤖</td>
</tr>
<tr class="odd">
-<td align="left">3*</td>
-<td align="left">top of small letters</td>
-<td align="left">𞤬 𞤮 𞤻 𞤼 𞤾</td>
+<td style="text-align: left;">3*</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">𞤬 𞤮 𞤻 𞤼 𞤾</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of small letters</td>
-<td align="left">𞤤 𞤨 𞤩 𞤭 𞤴 𞤸 𞤺 𞥀</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of small letters</td>
+<td style="text-align: left;">𞤤 𞤨 𞤩 𞤭 𞤴 𞤸 𞤺 𞥀</td>
</tr>
</tbody>
</table>
@@ -1149,26 +1174,26 @@
<caption><code>arab</code> (Arabic) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters with vertical stroke</td>
-<td align="left">ا إ ل ك ط ظ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters with vertical stroke</td>
+<td style="text-align: left;">ا إ ل ك ط ظ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">ت ث ط ظ ك</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ت ث ط ظ ك</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">glyph joining</td>
-<td align="left">ـ</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">glyph joining</td>
+<td style="text-align: left;">ـ</td>
</tr>
</tbody>
</table>
@@ -1176,41 +1201,41 @@
<caption><code>armn</code> (Armenian) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of capital letters</td>
-<td align="left">Ա Մ Ւ Փ Բ Գ Դ Օ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of capital letters</td>
+<td style="text-align: left;">Ա Մ Ւ Փ Բ Գ Դ Օ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of capital letters</td>
-<td align="left">Ւ Ո Փ Ճ Շ Ս Տ Օ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of capital letters</td>
+<td style="text-align: left;">Ւ Ո Փ Ճ Շ Ս Տ Օ</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">top of ascenders of small letters</td>
-<td align="left">ե է ի մ վ փ ֆ փ</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">top of ascenders of small letters</td>
+<td style="text-align: left;">ե է ի մ վ փ ֆ փ</td>
</tr>
<tr class="even">
-<td align="left">4*</td>
-<td align="left">top of small letters</td>
-<td align="left">ա յ ւ ս գ ջ ր օ</td>
+<td style="text-align: left;">4*</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">ա յ ւ ս գ ջ ր օ</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">bottom of small letters</td>
-<td align="left">հ ո ճ ա ե ծ ս օ</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">bottom of small letters</td>
+<td style="text-align: left;">հ ո ճ ա ե ծ ս օ</td>
</tr>
<tr class="even">
-<td align="left">6</td>
-<td align="left">bottom of descenders of small letters</td>
-<td align="left">բ ը ի լ ղ պ փ ց</td>
+<td style="text-align: left;">6</td>
+<td style="text-align: left;">bottom of descenders of small letters</td>
+<td style="text-align: left;">բ ը ի լ ղ պ փ ց</td>
</tr>
</tbody>
</table>
@@ -1218,21 +1243,21 @@
<caption><code>avst</code> (Avestan) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">𐬀 𐬁 𐬐 𐬛</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">𐬀 𐬁 𐬐 𐬛</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">𐬀 𐬁</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">𐬀 𐬁</td>
</tr>
</tbody>
</table>
@@ -1240,21 +1265,21 @@
<caption><code>bamu</code> (Bamum) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ꚧ ꚨ ꛛ ꛉ ꛁ ꛈ ꛫ ꛯ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ꚧ ꚨ ꛛ ꛉ ꛁ ꛈ ꛫ ꛯ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">ꚭ ꚳ ꚶ ꛬ ꚢ ꚽ ꛯ ꛲</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ꚭ ꚳ ꚶ ꛬ ꚢ ꚽ ꛯ ꛲</td>
</tr>
</tbody>
</table>
@@ -1262,31 +1287,31 @@
<caption><code>beng</code> (Bengali) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">baseline (flat glyphs only)</td>
-<td align="left">অ ড ত ন ব ভ ল ক</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">baseline (flat glyphs only)</td>
+<td style="text-align: left;">অ ড ত ন ব ভ ল ক</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">top of ascenders</td>
-<td align="left">ই ট ঠ ি ী ৈ ৗ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">top of ascenders</td>
+<td style="text-align: left;">ই ট ঠ ি ী ৈ ৗ</td>
</tr>
<tr class="odd">
-<td align="left">3*</td>
-<td align="left">top of baseline</td>
-<td align="left">ও এ ড ত ন ব ল ক</td>
+<td style="text-align: left;">3*</td>
+<td style="text-align: left;">top of baseline</td>
+<td style="text-align: left;">ও এ ড ত ন ব ল ক</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of base characters</td>
-<td align="left">অ ড ত ন ব ভ ল ক</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of base characters</td>
+<td style="text-align: left;">অ ড ত ন ব ভ ল ক</td>
</tr>
</tbody>
</table>
@@ -1295,31 +1320,31 @@
<caption><code>buhd</code> (Buhid) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ᝐ ᝈ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ᝐ ᝈ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">top of large letters</td>
-<td align="left">ᝅ ᝊ ᝎ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">top of large letters</td>
+<td style="text-align: left;">ᝅ ᝊ ᝎ</td>
</tr>
<tr class="odd">
-<td align="left">3*</td>
-<td align="left">top of small letters</td>
-<td align="left">ᝂ ᝃ ᝉ ᝌ</td>
+<td style="text-align: left;">3*</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">ᝂ ᝃ ᝉ ᝌ</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of letters</td>
-<td align="left">ᝀ ᝃ ᝆ ᝉ ᝋ ᝏ ᝑ</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ᝀ ᝃ ᝆ ᝉ ᝋ ᝏ ᝑ</td>
</tr>
</tbody>
</table>
@@ -1327,26 +1352,26 @@
<caption><code>cakm</code> (Chakma) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">𑄃 𑄅 𑄉 𑄙 𑄗</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">𑄃 𑄅 𑄉 𑄙 𑄗</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">𑄅 𑄛 𑄝 𑄗 𑄓</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">𑄅 𑄛 𑄝 𑄗 𑄓</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">bottom of descenders of letters</td>
-<td align="left">𑄖𑄳𑄢 𑄘𑄳𑄢 𑄙𑄳𑄢 𑄤𑄳𑄢 𑄥𑄳𑄢</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">bottom of descenders of letters</td>
+<td style="text-align: left;">𑄖𑄳𑄢 𑄘𑄳𑄢 𑄙𑄳𑄢 𑄤𑄳𑄢 𑄥𑄳𑄢</td>
</tr>
</tbody>
</table>
@@ -1354,41 +1379,41 @@
<caption><code>cans</code> (Canadian Syllabics) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ᗜ ᖴ ᐁ ᒣ ᑫ ᑎ ᔑ ᗰ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ᗜ ᖴ ᐁ ᒣ ᑫ ᑎ ᔑ ᗰ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">ᗶ ᖵ ᒧ ᐃ ᑌ ᒍ ᔑ ᗢ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ᗶ ᖵ ᒧ ᐃ ᑌ ᒍ ᔑ ᗢ</td>
</tr>
<tr class="odd">
-<td align="left">3*</td>
-<td align="left">top of small letters</td>
-<td align="left">ᓓ ᓕ ᓀ ᓂ ᓄ ᕄ ᕆ ᘣ</td>
+<td style="text-align: left;">3*</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">ᓓ ᓕ ᓀ ᓂ ᓄ ᕄ ᕆ ᘣ</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of small letters</td>
-<td align="left">ᕃ ᓂ ᓀ ᕂ ᓗ ᓚ ᕆ ᘣ</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of small letters</td>
+<td style="text-align: left;">ᕃ ᓂ ᓀ ᕂ ᓗ ᓚ ᕆ ᘣ</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">top of superscript letters</td>
-<td align="left">ᐪ ᙆ ᣘ ᐢ ᒾ ᣗ ᔆ</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">top of superscript letters</td>
+<td style="text-align: left;">ᐪ ᙆ ᣘ ᐢ ᒾ ᣗ ᔆ</td>
</tr>
<tr class="even">
-<td align="left">6</td>
-<td align="left">bottom of superscript letters</td>
-<td align="left">ᙆ ᗮ ᒻ ᐞ ᔆ ᒡ ᒢ ᓑ</td>
+<td style="text-align: left;">6</td>
+<td style="text-align: left;">bottom of superscript letters</td>
+<td style="text-align: left;">ᙆ ᗮ ᒻ ᐞ ᔆ ᒡ ᒢ ᓑ</td>
</tr>
</tbody>
</table>
@@ -1396,21 +1421,21 @@
<caption><code>cari</code> (Carian) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">𐊧 𐊫 𐊬 𐊭 𐊱 𐊺 𐊼 𐊿</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">𐊧 𐊫 𐊬 𐊭 𐊱 𐊺 𐊼 𐊿</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">𐊣 𐊧 𐊷 𐋀 𐊫 𐊸 𐋉</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">𐊣 𐊧 𐊷 𐋀 𐊫 𐊸 𐋉</td>
</tr>
</tbody>
</table>
@@ -1418,41 +1443,41 @@
<caption><code>cher</code> (Cherokee) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of capital letters</td>
-<td align="left">Ꮖ Ꮋ Ꭼ Ꮓ Ꭴ Ꮳ Ꭶ Ꮥ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of capital letters</td>
+<td style="text-align: left;">Ꮖ Ꮋ Ꭼ Ꮓ Ꭴ Ꮳ Ꭶ Ꮥ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of capital letters</td>
-<td align="left">Ꮖ Ꮋ Ꭼ Ꮓ Ꭴ Ꮳ Ꭶ Ꮥ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of capital letters</td>
+<td style="text-align: left;">Ꮖ Ꮋ Ꭼ Ꮓ Ꭴ Ꮳ Ꭶ Ꮥ</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">top of ascenders of small letters</td>
-<td align="left">ꮒ ꮤ ꮶ ꭴ ꭾ ꮗ ꮝ ꮿ</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">top of ascenders of small letters</td>
+<td style="text-align: left;">ꮒ ꮤ ꮶ ꭴ ꭾ ꮗ ꮝ ꮿ</td>
</tr>
<tr class="even">
-<td align="left">4*</td>
-<td align="left">top of small letters</td>
-<td align="left">ꮖ ꭼ ꮓ ꮠ ꮳ ꭶ ꮥ ꮻ</td>
+<td style="text-align: left;">4*</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">ꮖ ꭼ ꮓ ꮠ ꮳ ꭶ ꮥ ꮻ</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">bottom of small letters</td>
-<td align="left">ꮖ ꭼ ꮓ ꮠ ꮳ ꭶ ꮥ ꮻ</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">bottom of small letters</td>
+<td style="text-align: left;">ꮖ ꭼ ꮓ ꮠ ꮳ ꭶ ꮥ ꮻ</td>
</tr>
<tr class="even">
-<td align="left">6</td>
-<td align="left">bottom of descenders of small letters</td>
-<td align="left">ᏸ ꮐ ꭹ ꭻ</td>
+<td style="text-align: left;">6</td>
+<td style="text-align: left;">bottom of descenders of small letters</td>
+<td style="text-align: left;">ᏸ ꮐ ꭹ ꭻ</td>
</tr>
</tbody>
</table>
@@ -1460,31 +1485,31 @@
<caption><code>copt</code> (Coptic) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of capital letters</td>
-<td align="left">Ⲍ Ⲏ Ⲡ Ⳟ Ⲟ Ⲑ Ⲥ Ⳋ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of capital letters</td>
+<td style="text-align: left;">Ⲍ Ⲏ Ⲡ Ⳟ Ⲟ Ⲑ Ⲥ Ⳋ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of capital letters</td>
-<td align="left">Ⳑ Ⳙ Ⳟ Ⲏ Ⲟ Ⲑ Ⳝ Ⲱ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of capital letters</td>
+<td style="text-align: left;">Ⳑ Ⳙ Ⳟ Ⲏ Ⲟ Ⲑ Ⳝ Ⲱ</td>
</tr>
<tr class="odd">
-<td align="left">3*</td>
-<td align="left">top of small letters</td>
-<td align="left">ⲍ ⲏ ⲡ ⳟ ⲟ ⲑ ⲥ ⳋ</td>
+<td style="text-align: left;">3*</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">ⲍ ⲏ ⲡ ⳟ ⲟ ⲑ ⲥ ⳋ</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of small letters</td>
-<td align="left">ⳑ ⳙ ⳟ ⲏ ⲟ ⲑ ⳝ Ⳓ</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of small letters</td>
+<td style="text-align: left;">ⳑ ⳙ ⳟ ⲏ ⲟ ⲑ ⳝ Ⳓ</td>
</tr>
</tbody>
</table>
@@ -1492,31 +1517,31 @@
<caption><code>cprt</code> (Cypriot) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">𐠍 𐠙 𐠳 𐠱 𐠅 𐠓 𐠣 𐠦</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">𐠍 𐠙 𐠳 𐠱 𐠅 𐠓 𐠣 𐠦</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">𐠃 𐠊 𐠛 𐠣 𐠳 𐠵 𐠐</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">𐠃 𐠊 𐠛 𐠣 𐠳 𐠵 𐠐</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">top of small letters</td>
-<td align="left">𐠈 𐠏 𐠖</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">𐠈 𐠏 𐠖</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of small letters</td>
-<td align="left">𐠈 𐠏 𐠖</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of small letters</td>
+<td style="text-align: left;">𐠈 𐠏 𐠖</td>
</tr>
</tbody>
</table>
@@ -1524,36 +1549,36 @@
<caption><code>cyrl</code> (Cyrillic) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of capital letters</td>
-<td align="left">Б В Е П З О С Э</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of capital letters</td>
+<td style="text-align: left;">Б В Е П З О С Э</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of capital letters</td>
-<td align="left">Б В Е Ш З О С Э</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of capital letters</td>
+<td style="text-align: left;">Б В Е Ш З О С Э</td>
</tr>
<tr class="odd">
-<td align="left">3*</td>
-<td align="left">top of small letters</td>
-<td align="left">х п н ш е з о с</td>
+<td style="text-align: left;">3*</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">х п н ш е з о с</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of small letters</td>
-<td align="left">х п н ш е з о с</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of small letters</td>
+<td style="text-align: left;">х п н ш е з о с</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">bottom of descenders of small letters</td>
-<td align="left">р у ф</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">bottom of descenders of small letters</td>
+<td style="text-align: left;">р у ф</td>
</tr>
</tbody>
</table>
@@ -1561,36 +1586,36 @@
<caption><code>deva</code> (Devanagari) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of ascenders</td>
-<td align="left">ई ऐ ओ औ ि ी ो ौ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of ascenders</td>
+<td style="text-align: left;">ई ऐ ओ औ ि ी ो ौ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">top of baseline</td>
-<td align="left">क म अ आ थ ध भ श</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">top of baseline</td>
+<td style="text-align: left;">क म अ आ थ ध भ श</td>
</tr>
<tr class="odd">
-<td align="left">3*</td>
-<td align="left">top of baseline (flat glyphs only)</td>
-<td align="left">क न म उ छ ट ठ ड</td>
+<td style="text-align: left;">3*</td>
+<td style="text-align: left;">top of baseline (flat glyphs only)</td>
+<td style="text-align: left;">क न म उ छ ट ठ ड</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of base characters</td>
-<td align="left">क न म उ छ ट ठ ड</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of base characters</td>
+<td style="text-align: left;">क न म उ छ ट ठ ड</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">bottom of descenders</td>
-<td align="left">ु ृ</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">bottom of descenders</td>
+<td style="text-align: left;">ु ृ</td>
</tr>
</tbody>
</table>
@@ -1599,31 +1624,31 @@
<caption><code>dsrt</code> (Deseret) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of capital letters</td>
-<td align="left">𐐂 𐐄 𐐋 𐐗 𐐑</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of capital letters</td>
+<td style="text-align: left;">𐐂 𐐄 𐐋 𐐗 𐐑</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of capital letters</td>
-<td align="left">𐐀 𐐂 𐐄 𐐗 𐐛</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of capital letters</td>
+<td style="text-align: left;">𐐀 𐐂 𐐄 𐐗 𐐛</td>
</tr>
<tr class="odd">
-<td align="left">3*</td>
-<td align="left">top of small letters</td>
-<td align="left">𐐪 𐐬 𐐳 𐐿 𐐹</td>
+<td style="text-align: left;">3*</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">𐐪 𐐬 𐐳 𐐿 𐐹</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of small letters</td>
-<td align="left">𐐨 𐐪 𐐬 𐐿 𐑃</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of small letters</td>
+<td style="text-align: left;">𐐨 𐐪 𐐬 𐐿 𐑃</td>
</tr>
</tbody>
</table>
@@ -1631,21 +1656,21 @@
<caption><code>ethi</code> (Ethiopian) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ሀ ሃ ዘ ፐ ማ በ ዋ ዐ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ሀ ሃ ዘ ፐ ማ በ ዋ ዐ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">ለ ሐ በ ዘ ሀ ሪ ዐ ጨ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ለ ሐ በ ዘ ሀ ሪ ዐ ጨ</td>
</tr>
</tbody>
</table>
@@ -1653,41 +1678,41 @@
<caption><code>geok</code> (Georgian Khutsuri) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of Asomtavruli letters</td>
-<td align="left">Ⴑ Ⴇ Ⴙ Ⴜ Ⴄ Ⴅ Ⴓ Ⴚ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of Asomtavruli letters</td>
+<td style="text-align: left;">Ⴑ Ⴇ Ⴙ Ⴜ Ⴄ Ⴅ Ⴓ Ⴚ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of Asomtavruli letters</td>
-<td align="left">Ⴄ Ⴅ Ⴇ Ⴈ Ⴆ Ⴑ Ⴊ Ⴋ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of Asomtavruli letters</td>
+<td style="text-align: left;">Ⴄ Ⴅ Ⴇ Ⴈ Ⴆ Ⴑ Ⴊ Ⴋ</td>
</tr>
<tr class="odd">
-<td align="left">3*</td>
-<td align="left">top of Nuskhuri letters</td>
-<td align="left">ⴁ ⴗ ⴂ ⴄ ⴅ ⴇ ⴔ ⴖ</td>
+<td style="text-align: left;">3*</td>
+<td style="text-align: left;">top of Nuskhuri letters</td>
+<td style="text-align: left;">ⴁ ⴗ ⴂ ⴄ ⴅ ⴇ ⴔ ⴖ</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of Nuskhuri letters</td>
-<td align="left">ⴈ ⴌ ⴖ ⴎ ⴃ ⴆ ⴋ ⴢ</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of Nuskhuri letters</td>
+<td style="text-align: left;">ⴈ ⴌ ⴖ ⴎ ⴃ ⴆ ⴋ ⴢ</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">top of ascender Nuskhuri letters</td>
-<td align="left">ⴐ ⴑ ⴓ ⴕ ⴙ ⴛ ⴡ ⴣ</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">top of ascender Nuskhuri letters</td>
+<td style="text-align: left;">ⴐ ⴑ ⴓ ⴕ ⴙ ⴛ ⴡ ⴣ</td>
</tr>
<tr class="even">
-<td align="left">6</td>
-<td align="left">bottom of Nuskhuri descender letters</td>
-<td align="left">ⴄ ⴅ ⴔ ⴕ ⴁ ⴂ ⴘ ⴝ</td>
+<td style="text-align: left;">6</td>
+<td style="text-align: left;">bottom of Nuskhuri descender letters</td>
+<td style="text-align: left;">ⴄ ⴅ ⴔ ⴕ ⴁ ⴂ ⴘ ⴝ</td>
</tr>
</tbody>
</table>
@@ -1696,41 +1721,41 @@
<caption><code>geor</code> (Georgian Mkhedruli) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1*</td>
-<td align="left">top of Mkhedruli letters</td>
-<td align="left">გ დ ე ვ თ ი ო ღ</td>
+<td style="text-align: left;">1*</td>
+<td style="text-align: left;">top of Mkhedruli letters</td>
+<td style="text-align: left;">გ დ ე ვ თ ი ო ღ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of Mkhedruli letters</td>
-<td align="left">ა ზ მ ს შ ძ ხ ჰ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of Mkhedruli letters</td>
+<td style="text-align: left;">ა ზ მ ს შ ძ ხ ჰ</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">top of ascender Mkhedruli letters</td>
-<td align="left">ს ხ ქ ზ მ შ ჩ წ</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">top of ascender Mkhedruli letters</td>
+<td style="text-align: left;">ს ხ ქ ზ მ შ ჩ წ</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of descender Mkhedruli letters</td>
-<td align="left">ე ვ ჟ ტ უ ფ ქ ყ</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of descender Mkhedruli letters</td>
+<td style="text-align: left;">ე ვ ჟ ტ უ ფ ქ ყ</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">top of ascender Mtavruli letters</td>
-<td align="left">Ნ Ჟ Ჳ Ჸ Გ Ე Ო Ჴ</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">top of ascender Mtavruli letters</td>
+<td style="text-align: left;">Ნ Ჟ Ჳ Ჸ Გ Ე Ო Ჴ</td>
</tr>
<tr class="even">
-<td align="left">6</td>
-<td align="left">bottom of descender Mtavruli letters</td>
-<td align="left">Ი Ჲ Ო Ჩ Მ Შ Ჯ Ჽ</td>
+<td style="text-align: left;">6</td>
+<td style="text-align: left;">bottom of descender Mtavruli letters</td>
+<td style="text-align: left;">Ი Ჲ Ო Ჩ Მ Შ Ჯ Ჽ</td>
</tr>
</tbody>
</table>
@@ -1738,31 +1763,31 @@
<caption><code>glag</code> (Glagolitic) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of capital letters</td>
-<td align="left">Ⰵ Ⱄ Ⱚ Ⰴ Ⰲ Ⰺ Ⱛ Ⰻ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of capital letters</td>
+<td style="text-align: left;">Ⰵ Ⱄ Ⱚ Ⰴ Ⰲ Ⰺ Ⱛ Ⰻ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of capital letters</td>
-<td align="left">Ⰵ Ⰴ Ⰲ Ⱚ Ⱎ Ⱑ Ⰺ Ⱄ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of capital letters</td>
+<td style="text-align: left;">Ⰵ Ⰴ Ⰲ Ⱚ Ⱎ Ⱑ Ⰺ Ⱄ</td>
</tr>
<tr class="odd">
-<td align="left">3*</td>
-<td align="left">top of small letters</td>
-<td align="left">ⰵ ⱄ ⱚ ⰴ ⰲ ⰺ ⱛ ⰻ</td>
+<td style="text-align: left;">3*</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">ⰵ ⱄ ⱚ ⰴ ⰲ ⰺ ⱛ ⰻ</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of small letters</td>
-<td align="left">ⰵ ⰴ ⰲ ⱚ ⱎ ⱑ ⰺ ⱄ</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of small letters</td>
+<td style="text-align: left;">ⰵ ⰴ ⰲ ⱚ ⱎ ⱑ ⰺ ⱄ</td>
</tr>
</tbody>
</table>
@@ -1770,21 +1795,21 @@
<caption><code>goth</code> (Gothic) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">𐌲 𐌶 𐍀 𐍄 𐌴 𐍃 𐍈 𐌾</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">𐌲 𐌶 𐍀 𐍄 𐌴 𐍃 𐍈 𐌾</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">𐌶 𐌴 𐍃 𐍈</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">𐌶 𐌴 𐍃 𐍈</td>
</tr>
</tbody>
</table>
@@ -1792,41 +1817,41 @@
<caption><code>grek</code> (Greek) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of capital letters</td>
-<td align="left">Γ Β Ε Ζ Θ Ο Ω</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of capital letters</td>
+<td style="text-align: left;">Γ Β Ε Ζ Θ Ο Ω</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of capital letters</td>
-<td align="left">Β Δ Ζ Ξ Θ Ο</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of capital letters</td>
+<td style="text-align: left;">Β Δ Ζ Ξ Θ Ο</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">top of ‘small beta’ like letters</td>
-<td align="left">β θ δ ζ λ ξ</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">top of ‘small beta’ like letters</td>
+<td style="text-align: left;">β θ δ ζ λ ξ</td>
</tr>
<tr class="even">
-<td align="left">4*</td>
-<td align="left">top of small letters</td>
-<td align="left">α ε ι ο π σ τ ω</td>
+<td style="text-align: left;">4*</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">α ε ι ο π σ τ ω</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">bottom of small letters</td>
-<td align="left">α ε ι ο π σ τ ω</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">bottom of small letters</td>
+<td style="text-align: left;">α ε ι ο π σ τ ω</td>
</tr>
<tr class="even">
-<td align="left">6</td>
-<td align="left">bottom of descenders of small letters</td>
-<td align="left">β γ η μ ρ φ χ ψ</td>
+<td style="text-align: left;">6</td>
+<td style="text-align: left;">bottom of descenders of small letters</td>
+<td style="text-align: left;">β γ η μ ρ φ χ ψ</td>
</tr>
</tbody>
</table>
@@ -1834,36 +1859,36 @@
<caption><code>gujr</code> (Gujarati) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1*</td>
-<td align="left">top of letters</td>
-<td align="left">ત ન ઋ ઌ છ ટ ર ૦</td>
+<td style="text-align: left;">1*</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ત ન ઋ ઌ છ ટ ર ૦</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">ખ ગ ઘ ઞ ઇ ઈ ઠ જ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ખ ગ ઘ ઞ ઇ ઈ ઠ જ</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">top of ascenders</td>
-<td align="left">ઈ ઊ િ ી લી શ્ચિ જિ સી</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">top of ascenders</td>
+<td style="text-align: left;">ઈ ઊ િ ી લી શ્ચિ જિ સી</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of descenders</td>
-<td align="left">ુ ૃ ૄ ખુ છૃ છૄ</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of descenders</td>
+<td style="text-align: left;">ુ ૃ ૄ ખુ છૃ છૄ</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">top of Gujarati digits</td>
-<td align="left">૦ ૧ ૨ ૩ ૭</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">top of Gujarati digits</td>
+<td style="text-align: left;">૦ ૧ ૨ ૩ ૭</td>
</tr>
</tbody>
</table>
@@ -1871,36 +1896,36 @@
<caption><code>guru</code> (Gurmukhi) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of ascenders</td>
-<td align="left">ਇ ਈ ਉ ਏ ਓ ੳ ਿ ੀ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of ascenders</td>
+<td style="text-align: left;">ਇ ਈ ਉ ਏ ਓ ੳ ਿ ੀ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">top of baseline</td>
-<td align="left">ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">top of baseline</td>
+<td style="text-align: left;">ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ</td>
</tr>
<tr class="odd">
-<td align="left">3*</td>
-<td align="left">top of baseline (flat glyphs only)</td>
-<td align="left">ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ</td>
+<td style="text-align: left;">3*</td>
+<td style="text-align: left;">top of baseline (flat glyphs only)</td>
+<td style="text-align: left;">ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of characters</td>
-<td align="left">ਅ ਏ ਓ ਗ ਜ ਠ ਰ ਸ</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of characters</td>
+<td style="text-align: left;">ਅ ਏ ਓ ਗ ਜ ਠ ਰ ਸ</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">top of Gurmukhi digits</td>
-<td align="left">੦ ੧ ੨ ੩ ੭</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">top of Gurmukhi digits</td>
+<td style="text-align: left;">੦ ੧ ੨ ੩ ੭</td>
</tr>
</tbody>
</table>
@@ -1908,26 +1933,48 @@
<caption><code>hebr</code> (Hebrew) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ב ד ה ח ך כ ם ס</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ב ד ה ח ך כ ם ס</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">ב ט כ ם ס צ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ב ט כ ם ס צ</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">bottom of descenders of letters</td>
+<td style="text-align: left;">ק ך ן ף ץ</td>
+</tr>
+</tbody>
+</table>
+<table>
+<caption><code>hmnp</code> (Nyiakeng Puachue Hmong) blue zones</caption>
+<thead>
+<tr class="header">
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
+</thead>
+<tbody>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">bottom of descenders of letters</td>
-<td align="left">ק ך ן ף ץ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">𞄀 𞄁 𞄈 𞄑 𞄧 𞄬</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">𞄁 𞄜 𞄠 𞄡 𞄤 𞅂</td>
</tr>
</tbody>
</table>
@@ -1935,36 +1982,36 @@
<caption><code>kali</code> (Kayah Li) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1*</td>
-<td align="left">top of letters</td>
-<td align="left">꤅ ꤏ ꤁ ꤋ ꤀ ꤍ</td>
+<td style="text-align: left;">1*</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">꤅ ꤏ ꤁ ꤋ ꤀ ꤍ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">꤈ ꤘ ꤀ ꤍ ꤢ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">꤈ ꤘ ꤀ ꤍ ꤢ</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">top of ascending letters</td>
-<td align="left">ꤖ ꤡ</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">top of ascending letters</td>
+<td style="text-align: left;">ꤖ ꤡ</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of descending letters</td>
-<td align="left">ꤑ ꤜ ꤞ</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of descending letters</td>
+<td style="text-align: left;">ꤑ ꤜ ꤞ</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">bottom of large descending letters</td>
-<td align="left">ꤑ꤬ ꤜ꤭ ꤔ꤬</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">bottom of large descending letters</td>
+<td style="text-align: left;">ꤑ꤬ ꤜ꤭ ꤔ꤬</td>
</tr>
</tbody>
</table>
@@ -1972,36 +2019,36 @@
<caption><code>khmr</code> (Khmer) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1*</td>
-<td align="left">top of letters</td>
-<td align="left">ខ ទ ន ឧ ឩ ា</td>
+<td style="text-align: left;">1*</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ខ ទ ន ឧ ឩ ា</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">top of subscript cluster components</td>
-<td align="left">ក្ក ក្ខ ក្គ ក្ថ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">top of subscript cluster components</td>
+<td style="text-align: left;">ក្ក ក្ខ ក្គ ក្ថ</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">bottom of letters</td>
-<td align="left">ខ ឃ ច ឋ ប ម យ ឲ</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ខ ឃ ច ឋ ប ម យ ឲ</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of descenders</td>
-<td align="left">ត្រ រៀ ឲ្យ អឿ</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of descenders</td>
+<td style="text-align: left;">ត្រ រៀ ឲ្យ អឿ</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">bottom of large descenders</td>
-<td align="left">ន្ត្រៃ ង្ខ្យ ក្បៀ ច្រៀ ន្តឿ ល្បឿ</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">bottom of large descenders</td>
+<td style="text-align: left;">ន្ត្រៃ ង្ខ្យ ក្បៀ ច្រៀ ន្តឿ ល្បឿ</td>
</tr>
</tbody>
</table>
@@ -2009,21 +2056,21 @@
<caption><code>khms</code> (Khmer Symbols) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1*</td>
-<td align="left">top of symbols for waxing</td>
-<td align="left">᧠ ᧡</td>
+<td style="text-align: left;">1*</td>
+<td style="text-align: left;">top of symbols for waxing</td>
+<td style="text-align: left;">᧠ ᧡</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of symbols for waning</td>
-<td align="left">᧶ ᧹</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of symbols for waning</td>
+<td style="text-align: left;">᧶ ᧹</td>
</tr>
</tbody>
</table>
@@ -2032,21 +2079,21 @@
<caption><code>knda</code> (Kannada) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ಇ ಊ ಐ ಣ ಸಾ ನಾ ದಾ ರಾ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ಇ ಊ ಐ ಣ ಸಾ ನಾ ದಾ ರಾ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">ಅ ಉ ಎ ಲ ೦ ೨ ೬ ೭</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ಅ ಉ ಎ ಲ ೦ ೨ ೬ ೭</td>
</tr>
</tbody>
</table>
@@ -2054,36 +2101,36 @@
<caption><code>lao</code> (Lao) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1*</td>
-<td align="left">top of letters</td>
-<td align="left">າ ດ ອ ມ ລ ວ ຣ ງ</td>
+<td style="text-align: left;">1*</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">າ ດ ອ ມ ລ ວ ຣ ງ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">າ ອ ບ ຍ ຣ ຮ ວ ຢ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">າ ອ ບ ຍ ຣ ຮ ວ ຢ</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">top of ascenders</td>
-<td align="left">ປ ຢ ຟ ຝ</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">top of ascenders</td>
+<td style="text-align: left;">ປ ຢ ຟ ຝ</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">top of large ascenders</td>
-<td align="left">ໂ ໄ ໃ</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">top of large ascenders</td>
+<td style="text-align: left;">ໂ ໄ ໃ</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">bottom of descenders</td>
-<td align="left">ງ ຊ ຖ ຽ ໆ ຯ</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">bottom of descenders</td>
+<td style="text-align: left;">ງ ຊ ຖ ຽ ໆ ຯ</td>
</tr>
</tbody>
</table>
@@ -2091,41 +2138,41 @@
<caption><code>latb</code> (Latin Subscripts) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of capital characters</td>
-<td align="left">₀ ₃ ₅ ₇ ₈</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of capital characters</td>
+<td style="text-align: left;">₀ ₃ ₅ ₇ ₈</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of capital characters</td>
-<td align="left">₀ ₁ ₂ ₃ ₈</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of capital characters</td>
+<td style="text-align: left;">₀ ₁ ₂ ₃ ₈</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">top of ‘small f’ like characters</td>
-<td align="left">ᵢ ⱼ ₕ ₖ ₗ</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">top of ‘small f’ like characters</td>
+<td style="text-align: left;">ᵢ ⱼ ₕ ₖ ₗ</td>
</tr>
<tr class="even">
-<td align="left">4*</td>
-<td align="left">top of small characters</td>
-<td align="left">ₐ ₑ ₒ ₓ ₙ ₛ ᵥ ᵤ ᵣ</td>
+<td style="text-align: left;">4*</td>
+<td style="text-align: left;">top of small characters</td>
+<td style="text-align: left;">ₐ ₑ ₒ ₓ ₙ ₛ ᵥ ᵤ ᵣ</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">bottom of small characters</td>
-<td align="left">ₐ ₑ ₒ ₓ ₙ ₛ ᵥ ᵤ ᵣ</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">bottom of small characters</td>
+<td style="text-align: left;">ₐ ₑ ₒ ₓ ₙ ₛ ᵥ ᵤ ᵣ</td>
</tr>
<tr class="even">
-<td align="left">6</td>
-<td align="left">bottom of descenders of small characters</td>
-<td align="left">ᵦ ᵧ ᵨ ᵩ ₚ</td>
+<td style="text-align: left;">6</td>
+<td style="text-align: left;">bottom of descenders of small characters</td>
+<td style="text-align: left;">ᵦ ᵧ ᵨ ᵩ ₚ</td>
</tr>
</tbody>
</table>
@@ -2134,41 +2181,41 @@
<caption><code>latn</code> (Latin) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of capital letters</td>
-<td align="left">T H E Z O C Q S</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of capital letters</td>
+<td style="text-align: left;">T H E Z O C Q S</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of capital letters</td>
-<td align="left">H E Z L O C U S</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of capital letters</td>
+<td style="text-align: left;">H E Z L O C U S</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">top of ‘small f’ like letters</td>
-<td align="left">f i j k d b h</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">top of ‘small f’ like letters</td>
+<td style="text-align: left;">f i j k d b h</td>
</tr>
<tr class="even">
-<td align="left">4*</td>
-<td align="left">top of small letters</td>
-<td align="left">u v x z o e s c</td>
+<td style="text-align: left;">4*</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">u v x z o e s c</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">bottom of small letters</td>
-<td align="left">n r x z o e s c</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">bottom of small letters</td>
+<td style="text-align: left;">n r x z o e s c</td>
</tr>
<tr class="even">
-<td align="left">6</td>
-<td align="left">bottom of descenders of small letters</td>
-<td align="left">p q g j y</td>
+<td style="text-align: left;">6</td>
+<td style="text-align: left;">bottom of descenders of small letters</td>
+<td style="text-align: left;">p q g j y</td>
</tr>
</tbody>
</table>
@@ -2176,41 +2223,41 @@
<caption><code>latp</code> (Latin Superscripts) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of capital characters</td>
-<td align="left">⁰ ³ ⁵ ⁷ ᵀ ᴴ ᴱ ᴼ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of capital characters</td>
+<td style="text-align: left;">⁰ ³ ⁵ ⁷ ᵀ ᴴ ᴱ ᴼ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of capital characters</td>
-<td align="left">⁰ ¹ ² ³ ᴱ ᴸ ᴼ ᵁ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of capital characters</td>
+<td style="text-align: left;">⁰ ¹ ² ³ ᴱ ᴸ ᴼ ᵁ</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">top of ‘small f’ like characters</td>
-<td align="left">ᵇ ᵈ ᵏ ʰ ʲ ᶠ ⁱ</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">top of ‘small f’ like characters</td>
+<td style="text-align: left;">ᵇ ᵈ ᵏ ʰ ʲ ᶠ ⁱ</td>
</tr>
<tr class="even">
-<td align="left">4*</td>
-<td align="left">top of small characters</td>
-<td align="left">ᵉ ᵒ ʳ ˢ ˣ ᶜ ᶻ</td>
+<td style="text-align: left;">4*</td>
+<td style="text-align: left;">top of small characters</td>
+<td style="text-align: left;">ᵉ ᵒ ʳ ˢ ˣ ᶜ ᶻ</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">bottom of small characters</td>
-<td align="left">ᵉ ᵒ ʳ ˢ ˣ ᶜ ᶻ</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">bottom of small characters</td>
+<td style="text-align: left;">ᵉ ᵒ ʳ ˢ ˣ ᶜ ᶻ</td>
</tr>
<tr class="even">
-<td align="left">6</td>
-<td align="left">bottom of descenders of small characters</td>
-<td align="left">ᵖ ʸ ᵍ</td>
+<td style="text-align: left;">6</td>
+<td style="text-align: left;">bottom of descenders of small characters</td>
+<td style="text-align: left;">ᵖ ʸ ᵍ</td>
</tr>
</tbody>
</table>
@@ -2219,21 +2266,68 @@
<caption><code>lisu</code> (Lisu) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ꓡ ꓧ ꓱ ꓶ ꓩ ꓚ ꓵ ꓳ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ꓡ ꓧ ꓱ ꓶ ꓩ ꓚ ꓵ ꓳ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">ꓕ ꓜ ꓞ ꓡ ꓛ ꓢ ꓳ ꓴ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ꓕ ꓜ ꓞ ꓡ ꓛ ꓢ ꓳ ꓴ</td>
+</tr>
+</tbody>
+</table>
+<table>
+<caption><code>medf</code> (Medefaidrin) blue zones</caption>
+<thead>
+<tr class="header">
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of capital letters</td>
+<td style="text-align: left;">𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹟</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of capital letters</td>
+<td style="text-align: left;">𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹒 𖹓</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">top of ascenders of small letters</td>
+<td style="text-align: left;">𖹤 𖹬 𖹧 𖹴 𖹶 𖹾</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">4*</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">𖹠 𖹡 𖹢 𖹹 𖹳 𖹮</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">bottom of small letters</td>
+<td style="text-align: left;">𖹠 𖹡 𖹢 𖹳 𖹭 𖹽</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">6</td>
+<td style="text-align: left;">bottom of descenders of small letters</td>
+<td style="text-align: left;">𖹥 𖹨 𖹩</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">7</td>
+<td style="text-align: left;">top of Medefaidrin digits</td>
+<td style="text-align: left;">𖺀 𖺅 𖺈 𖺄 𖺍</td>
</tr>
</tbody>
</table>
@@ -2241,21 +2335,21 @@
<caption><code>mlym</code> (Malayalam) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ഒ ട ഠ റ ച പ ച്ച പ്പ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ഒ ട ഠ റ ച പ ച്ച പ്പ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">ട ഠ ധ ശ ഘ ച ഥ ല</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ട ഠ ധ ശ ഘ ച ഥ ല</td>
</tr>
</tbody>
</table>
@@ -2263,21 +2357,21 @@
<caption><code>mong</code> (Mongolian) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of base stem</td>
-<td align="left">ᠳ ᠴ ᠶ ᠽ ᡂ ᡊ ‍ᡡ‍ ‍ᡳ‍</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of base stem</td>
+<td style="text-align: left;">ᠳ ᠴ ᠶ ᠽ ᡂ ᡊ ‍ᡡ‍ ‍ᡳ‍</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of base stem</td>
-<td align="left">ᡃ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of base stem</td>
+<td style="text-align: left;">ᡃ</td>
</tr>
</tbody>
</table>
@@ -2285,31 +2379,31 @@
<caption><code>mymr</code> (Myanmar) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1*</td>
-<td align="left">top of letters</td>
-<td align="left">ခ ဂ င ဒ ဝ ၥ ၊ ။</td>
+<td style="text-align: left;">1*</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ခ ဂ င ဒ ဝ ၥ ၊ ။</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">င ဎ ဒ ပ ဗ ဝ ၊ ။</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">င ဎ ဒ ပ ဗ ဝ ၊ ။</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">top of ascenders of characters</td>
-<td align="left">ဩ ြ ၍ ၏ ၆ ါ ိ</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">top of ascenders of characters</td>
+<td style="text-align: left;">ဩ ြ ၍ ၏ ၆ ါ ိ</td>
</tr>
<tr class="even">
-<td align="left">3</td>
-<td align="left">bottom of descenders of letters</td>
-<td align="left">ဉ ည ဥ ဩ ဨ ၂ ၅ ၉</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">bottom of descenders of letters</td>
+<td style="text-align: left;">ဉ ည ဥ ဩ ဨ ၂ ၅ ၉</td>
</tr>
</tbody>
</table>
@@ -2317,31 +2411,31 @@
<caption><code>nkoo</code> (N’Ko) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ߐ ߉ ߒ ߟ ߖ ߜ ߠ ߥ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ߐ ߉ ߒ ߟ ߖ ߜ ߠ ߥ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">߀ ߘ ߡ ߠ ߥ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">߀ ߘ ߡ ߠ ߥ</td>
</tr>
<tr class="odd">
-<td align="left">3*</td>
-<td align="left">top of small letters</td>
-<td align="left">ߏ ߛ ߋ</td>
+<td style="text-align: left;">3*</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">ߏ ߛ ߋ</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">bottom of small letters</td>
-<td align="left">ߎ ߏ ߛ ߋ</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of small letters</td>
+<td style="text-align: left;">ߎ ߏ ߛ ߋ</td>
</tr>
</tbody>
</table>
@@ -2349,21 +2443,21 @@
<caption><code>olck</code> (Ol Chiki) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ᱛ ᱜ ᱝ ᱡ ᱢ ᱥ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ᱛ ᱜ ᱝ ᱡ ᱢ ᱥ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">ᱛ ᱜ ᱝ ᱡ ᱢ ᱥ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ᱛ ᱜ ᱝ ᱡ ᱢ ᱥ</td>
</tr>
</tbody>
</table>
@@ -2371,21 +2465,21 @@
<caption><code>orkh</code> (Old Turkic) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">𐰗 𐰘 𐰧</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">𐰗 𐰘 𐰧</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">𐰉 𐰗 𐰦 𐰧</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">𐰉 𐰗 𐰦 𐰧</td>
</tr>
</tbody>
</table>
@@ -2393,46 +2487,46 @@
<caption><code>osge</code> (Osage) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of capital letters</td>
-<td align="left">𐒾 𐓍 𐓒 𐓓 𐒻 𐓂 𐒵 𐓆</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of capital letters</td>
+<td style="text-align: left;">𐒾 𐓍 𐓒 𐓓 𐒻 𐓂 𐒵 𐓆</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of capital letters</td>
-<td align="left">𐒰 𐓍 𐓂 𐒿 𐓎 𐒹</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of capital letters</td>
+<td style="text-align: left;">𐒰 𐓍 𐓂 𐒿 𐓎 𐒹</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">bottom of descenders of capital letters</td>
-<td align="left">𐒼 𐒽 𐒾</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">bottom of descenders of capital letters</td>
+<td style="text-align: left;">𐒼 𐒽 𐒾</td>
</tr>
<tr class="even">
-<td align="left">4*</td>
-<td align="left">top of small letters</td>
-<td align="left">𐓵 𐓶 𐓺 𐓻 𐓝 𐓣 𐓪 𐓮</td>
+<td style="text-align: left;">4*</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">𐓵 𐓶 𐓺 𐓻 𐓝 𐓣 𐓪 𐓮</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">bottom of small letters</td>
-<td align="left">𐓘 𐓚 𐓣 𐓵 𐓡 𐓧 𐓪 𐓶</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">bottom of small letters</td>
+<td style="text-align: left;">𐓘 𐓚 𐓣 𐓵 𐓡 𐓧 𐓪 𐓶</td>
</tr>
<tr class="even">
-<td align="left">6</td>
-<td align="left">top of ascenders of small letters</td>
-<td align="left">𐓤 𐓦 𐓸 𐓹 𐓛</td>
+<td style="text-align: left;">6</td>
+<td style="text-align: left;">top of ascenders of small letters</td>
+<td style="text-align: left;">𐓤 𐓦 𐓸 𐓹 𐓛</td>
</tr>
<tr class="odd">
-<td align="left">7</td>
-<td align="left">bottom of descenders of small letters</td>
-<td align="left">𐓤 𐓥 𐓦</td>
+<td style="text-align: left;">7</td>
+<td style="text-align: left;">bottom of descenders of small letters</td>
+<td style="text-align: left;">𐓤 𐓥 𐓦</td>
</tr>
</tbody>
</table>
@@ -2440,21 +2534,48 @@
<caption><code>osma</code> (Osmanya) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">𐒆 𐒉 𐒐 𐒒 𐒘 𐒛 𐒠 𐒣</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">𐒆 𐒉 𐒐 𐒒 𐒘 𐒛 𐒠 𐒣</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">𐒀 𐒂 𐒆 𐒈 𐒊 𐒒 𐒠 𐒩</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">𐒀 𐒂 𐒆 𐒈 𐒊 𐒒 𐒠 𐒩</td>
+</tr>
+</tbody>
+</table>
+<table>
+<caption><code>rohg</code> (Hanifi Rohingya) blue zones</caption>
+<thead>
+<tr class="header">
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters with vertical stroke</td>
+<td style="text-align: left;">𐴃 𐴀 𐴆 𐴖 𐴕</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">𐴔 𐴖 𐴕 𐴑 𐴐</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">glyph joining</td>
+<td style="text-align: left;">ـ</td>
</tr>
</tbody>
</table>
@@ -2462,21 +2583,21 @@
<caption><code>saur</code> (Saurashtra) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ꢜ ꢞ ꢳ ꢂ ꢖ ꢒ ꢝ ꢛ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ꢜ ꢞ ꢳ ꢂ ꢖ ꢒ ꢝ ꢛ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">ꢂ ꢨ ꢺ ꢤ ꢎ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ꢂ ꢨ ꢺ ꢤ ꢎ</td>
</tr>
</tbody>
</table>
@@ -2484,36 +2605,36 @@
<caption><code>shaw</code> (Shavian) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">𐑕 𐑙</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">𐑕 𐑙</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">𐑔 𐑖 𐑗 𐑹 𐑻</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">𐑔 𐑖 𐑗 𐑹 𐑻</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">bottom of descenders of letters</td>
-<td align="left">𐑟 𐑣</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">bottom of descenders of letters</td>
+<td style="text-align: left;">𐑟 𐑣</td>
</tr>
<tr class="even">
-<td align="left">4*</td>
-<td align="left">top of small letters</td>
-<td align="left">𐑱 𐑲 𐑳 𐑴 𐑸 𐑺 𐑼</td>
+<td style="text-align: left;">4*</td>
+<td style="text-align: left;">top of small letters</td>
+<td style="text-align: left;">𐑱 𐑲 𐑳 𐑴 𐑸 𐑺 𐑼</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">bottom of small letters</td>
-<td align="left">𐑴 𐑻 𐑹</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">bottom of small letters</td>
+<td style="text-align: left;">𐑴 𐑻 𐑹</td>
</tr>
</tbody>
</table>
@@ -2521,26 +2642,26 @@
<caption><code>sinh</code> (Sinhala) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ඉ ක ඝ ඳ ප ය ල ෆ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ඉ ක ඝ ඳ ප ය ල ෆ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">එ ඔ ඝ ජ ට ථ ධ ර</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">එ ඔ ඝ ජ ට ථ ධ ර</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">bottom of descenders of letters</td>
-<td align="left">ද ඳ උ ල තූ තු බු දු</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">bottom of descenders of letters</td>
+<td style="text-align: left;">ද ඳ උ ල තූ තු බු දු</td>
</tr>
</tbody>
</table>
@@ -2548,26 +2669,26 @@
<caption><code>sund</code> (Sundanese) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ᮋ ᮞ ᮮ ᮽ ᮰ ᮈ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ᮋ ᮞ ᮮ ᮽ ᮰ ᮈ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">ᮄ ᮔ ᮕ ᮗ ᮰ ᮆ ᮈ ᮉ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ᮄ ᮔ ᮕ ᮗ ᮰ ᮆ ᮈ ᮉ</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">bottom of descenders of letters</td>
-<td align="left">ᮼ ᳄</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">bottom of descenders of letters</td>
+<td style="text-align: left;">ᮼ ᳄</td>
</tr>
</tbody>
</table>
@@ -2575,21 +2696,21 @@
<caption><code>taml</code> (Tamil) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">உ ஒ ஓ ற ஈ க ங ச</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">உ ஒ ஓ ற ஈ க ங ச</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">க ச ல ஶ உ ங ட ப</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">க ச ல ஶ உ ங ட ப</td>
</tr>
</tbody>
</table>
@@ -2597,21 +2718,21 @@
<caption><code>tavt</code> (Tai Viet) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ꪆ ꪔ ꪒ ꪖ ꪫ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ꪆ ꪔ ꪒ ꪖ ꪫ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">ꪉ ꪫ ꪮ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ꪉ ꪫ ꪮ</td>
</tr>
</tbody>
</table>
@@ -2619,21 +2740,21 @@
<caption><code>telu</code> (Telugu) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ఇ ఌ ఙ ఞ ణ ఱ ౯</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ఇ ఌ ఙ ఞ ణ ఱ ౯</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">అ క చ ర ఽ ౨ ౬</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">అ క చ ర ఽ ౨ ౬</td>
</tr>
</tbody>
</table>
@@ -2641,21 +2762,21 @@
<caption><code>tfng</code> (Tifinagh) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of letters</td>
-<td align="left">ⵔ ⵙ ⵛ ⵞ ⴵ ⴼ ⴹ ⵎ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ⵔ ⵙ ⵛ ⵞ ⴵ ⴼ ⴹ ⵎ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">ⵔ ⵙ ⵛ ⵞ ⴵ ⴼ ⴹ ⵎ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ⵔ ⵙ ⵛ ⵞ ⴵ ⴼ ⴹ ⵎ</td>
</tr>
</tbody>
</table>
@@ -2663,46 +2784,46 @@
<caption><code>thai</code> (Thai) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1*</td>
-<td align="left">top of letters</td>
-<td align="left">บ เ แ อ ก า</td>
+<td style="text-align: left;">1*</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">บ เ แ อ ก า</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of letters</td>
-<td align="left">บ ป ษ ฯ อ ย ฮ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">บ ป ษ ฯ อ ย ฮ</td>
</tr>
<tr class="odd">
-<td align="left">3</td>
-<td align="left">top of ascenders of letters</td>
-<td align="left">ป ฝ ฟ</td>
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">top of ascenders of letters</td>
+<td style="text-align: left;">ป ฝ ฟ</td>
</tr>
<tr class="even">
-<td align="left">4</td>
-<td align="left">top of large ascenders of letters</td>
-<td align="left">โ ใ ไ</td>
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">top of large ascenders of letters</td>
+<td style="text-align: left;">โ ใ ไ</td>
</tr>
<tr class="odd">
-<td align="left">5</td>
-<td align="left">bottom of descenders of letters</td>
-<td align="left">ฎ ฏ ฤ ฦ</td>
+<td style="text-align: left;">5</td>
+<td style="text-align: left;">bottom of descenders of letters</td>
+<td style="text-align: left;">ฎ ฏ ฤ ฦ</td>
</tr>
<tr class="even">
-<td align="left">6</td>
-<td align="left">bottom of large descenders of letters</td>
-<td align="left">ญ ฐ</td>
+<td style="text-align: left;">6</td>
+<td style="text-align: left;">bottom of large descenders of letters</td>
+<td style="text-align: left;">ญ ฐ</td>
</tr>
<tr class="odd">
-<td align="left">7</td>
-<td align="left">top of Thai digits</td>
-<td align="left">๐ ๑ ๓</td>
+<td style="text-align: left;">7</td>
+<td style="text-align: left;">top of Thai digits</td>
+<td style="text-align: left;">๐ ๑ ๓</td>
</tr>
</tbody>
</table>
@@ -2710,28 +2831,59 @@
<caption><code>vaii</code> (Vai) blue zones</caption>
<thead>
<tr class="header">
-<th align="left">ID</th>
-<th align="left">Blue zone</th>
-<th align="left">Characters</th>
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">1</td>
-<td align="left">top of vai letters</td>
-<td align="left">ꗍ ꘖ ꘙ ꘜ ꖜ ꖝ ꔅ ꕢ</td>
+<td style="text-align: left;">1</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">ꗍ ꘖ ꘙ ꘜ ꖜ ꖝ ꔅ ꕢ</td>
</tr>
<tr class="even">
-<td align="left">2</td>
-<td align="left">bottom of vai letters</td>
-<td align="left">ꗍ ꘖ ꘙ ꗞ ꔅ ꕢ ꖜ ꔆ</td>
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">ꗍ ꘖ ꘙ ꗞ ꔅ ꕢ ꖜ ꔆ</td>
</tr>
</tbody>
</table>
-<div class="figure">
-<img src="img/glyph-terms.svg" alt="This image shows the relevant glyph terms for vertical blue zone positions." />
-<p class="caption">This image shows the relevant glyph terms for vertical blue zone positions.</p>
-</div>
+<table>
+<caption><code>yezi</code> (Yezidi) blue zones</caption>
+<thead>
+<tr class="header">
+<th style="text-align: left;">ID</th>
+<th style="text-align: left;">Blue zone</th>
+<th style="text-align: left;">Characters</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: left;">1*</td>
+<td style="text-align: left;">top of letters</td>
+<td style="text-align: left;">𐺁 𐺂 𐺃 𐺄 𐺆 𐺉 𐺋</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">2</td>
+<td style="text-align: left;">bottom of letters</td>
+<td style="text-align: left;">𐺁 𐺄 𐺆 𐺋 𐺍 𐺐</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">3</td>
+<td style="text-align: left;">top of ascenders of letters</td>
+<td style="text-align: left;">𐺀 𐺠 𐺡</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">4</td>
+<td style="text-align: left;">bottom of descenders of letters</td>
+<td style="text-align: left;">𐺂 𐺃 𐺕 𐺛 𐺜 𐺝 𐺨</td>
+</tr>
+</tbody>
+</table>
+<figure>
+<img src="img/glyph-terms.svg" alt="This image shows the relevant glyph terms for vertical blue zone positions." /><figcaption aria-hidden="true">This image shows the relevant glyph terms for vertical blue zone positions.</figcaption>
+</figure>
<h2 id="grid-fitting">Grid Fitting</h2>
<p>Aligning outlines along the grid lines is called <em>grid fitting</em>. It doesn’t necessarily mean that the outlines are positioned <em>exactly</em> on the grid, however, especially if you want a smooth appearance at different sizes. This is the central routine of the auto-hinter; its actions are highly dependent on the used writing system. Currently, only one writing system is available (latin), providing support for scripts like Latin or Greek.</p>
<ul>
@@ -2742,39 +2894,32 @@
<li><p>Everything else (the ‘weak’ points) is handled with an ‘IUP’ instruction.</p></li>
</ul>
<p>The following images illustrate the hinting process, using glyph ‘a’ from the freely available font ‘<a href="https://design.ubuntu.com/font/">Ubuntu Book</a>’. The manual hints were added by <a href="https://daltonmaag.com">Dalton Maag Ltd</a>, the used application to create the hinting debug snapshots was <a href="https://fontforge.github.io">FontForge</a>.</p>
-<div class="figure">
-<img src="img/a-before-hinting.png" alt="Before hinting." />
-<p class="caption">Before hinting.</p>
-</div>
-<div class="figure">
-<img src="img/a-after-hinting.png" alt="After hinting, using manual hints." />
-<p class="caption">After hinting, using manual hints.</p>
-</div>
-<div class="figure">
-<img src="img/a-after-autohinting.png" alt="After hinting, using ttfautohint. Note that the hinting process doesn’t change horizontal positions." />
-<p class="caption">After hinting, using ttfautohint. Note that the hinting process doesn’t change horizontal positions.</p>
-</div>
+<figure>
+<img src="img/a-before-hinting.png" alt="Before hinting." /><figcaption aria-hidden="true">Before hinting.</figcaption>
+</figure>
+<figure>
+<img src="img/a-after-hinting.png" alt="After hinting, using manual hints." /><figcaption aria-hidden="true">After hinting, using manual hints.</figcaption>
+</figure>
+<figure>
+<img src="img/a-after-autohinting.png" alt="After hinting, using ttfautohint. Note that the hinting process doesn’t change horizontal positions." /><figcaption aria-hidden="true">After hinting, using ttfautohint. Note that the hinting process doesn’t change horizontal positions.</figcaption>
+</figure>
<h2 id="hint-sets">Hint Sets</h2>
<p>In ttfautohint terminology, a <em>hint set</em> is the <em>optimal</em> configuration for a given PPEM (pixel per EM) value.</p>
<p>In the range given by the <code>--hinting-range-min</code> and <code>--hinting-range-max</code> options, ttfautohint creates hint sets for every PPEM value. For each glyph, ttfautohint automatically determines whether a new set should be emitted for a PPEM value if it finds that it differs from a previous one. For some glyphs it is possible that one set covers, say, the range 8px-1000px, while other glyphs need 10 or more such sets.</p>
<p>In the PPEM range below <code>--hinting-range-min</code>, ttfautohint always uses just one set, in the PPEM range between <code>--hinting-range-max</code> and <code>--hinting-limit</code>, it also uses just one set.</p>
<p>One of the hinting configuration parameters is the decision which segments form an edge. For example, let us assume that two segments get aligned on a single horizontal edge at 11px, while two edges are used at 12px. This change makes ttfautohint emit a new hint set to accomodate this situation. The next images illustrate this, using a Cyrillic letter (glyph ‘afii10108’) from the ‘Ubuntu book’ font, processed with ttfautohint.</p>
-<div class="figure">
-<img src="img/afii10108-11px-before-hinting.png" alt="Before hinting, size 11px." />
-<p class="caption">Before hinting, size 11px.</p>
-</div>
-<div class="figure">
-<img src="img/afii10108-11px-after-hinting.png" alt="After hinting, size 11px. Segments 43-27-28 and 14-15 are aligned on a single edge, as are segments 26-0-1 and 20-21." />
-<p class="caption">After hinting, size 11px. Segments 43-27-28 and 14-15 are aligned on a single edge, as are segments 26-0-1 and 20-21.</p>
-</div>
-<div class="figure">
-<img src="img/afii10108-12px-before-hinting.png" alt="Before hinting, size 12px." />
-<p class="caption">Before hinting, size 12px.</p>
-</div>
-<div class="figure">
-<img src="img/afii10108-12px-after-hinting.png" alt="After hinting, size 12px. The segments are not aligned. While segments 43-27-28 and 20-21 now have almost the same horizontal position, they don’t form an edge because the outlines passing through the segments point into different directions." />
-<p class="caption">After hinting, size 12px. The segments are not aligned. While segments 43-27-28 and 20-21 now have almost the same horizontal position, they don’t form an edge because the outlines passing through the segments point into different directions.</p>
-</div>
+<figure>
+<img src="img/afii10108-11px-before-hinting.png" alt="Before hinting, size 11px." /><figcaption aria-hidden="true">Before hinting, size 11px.</figcaption>
+</figure>
+<figure>
+<img src="img/afii10108-11px-after-hinting.png" alt="After hinting, size 11px. Segments 43-27-28 and 14-15 are aligned on a single edge, as are segments 26-0-1 and 20-21." /><figcaption aria-hidden="true">After hinting, size 11px. Segments 43-27-28 and 14-15 are aligned on a single edge, as are segments 26-0-1 and 20-21.</figcaption>
+</figure>
+<figure>
+<img src="img/afii10108-12px-before-hinting.png" alt="Before hinting, size 12px." /><figcaption aria-hidden="true">Before hinting, size 12px.</figcaption>
+</figure>
+<figure>
+<img src="img/afii10108-12px-after-hinting.png" alt="After hinting, size 12px. The segments are not aligned. While segments 43-27-28 and 20-21 now have almost the same horizontal position, they don’t form an edge because the outlines passing through the segments point into different directions." /><figcaption aria-hidden="true">After hinting, size 12px. The segments are not aligned. While segments 43-27-28 and 20-21 now have almost the same horizontal position, they don’t form an edge because the outlines passing through the segments point into different directions.</figcaption>
+</figure>
<p>Obviously, the more hint sets get emitted, the larger the bytecode ttfautohint adds to the output font. To find a good value <em>n</em> for <code>--hinting-range-max</code>, some experimentation is necessary since <em>n</em> depends on the glyph shapes in the input font. If the value is too low, the hint set created for the PPEM value <em>n</em> (this hint set gets used for all larger PPEM values) might distort the outlines too much in the PPEM range given by <em>n</em> and the value set by <code>--hinting-limit</code> (at which hinting gets switched off). If the value is too high, the font size increases due to more hint sets without any noticeable hinting effects.</p>
<p>Similar arguments hold for <code>--hinting-range-min</code> except that there is no lower limit at which hinting is switched off.</p>
<p>An example. Let’s assume that we have a hinting range 10 &lt;= ppem &lt;= 100, and the hinting limit is set to 250. For a given glyph, ttfautohint finds out that four hint sets must be computed to exactly cover this hinting range: 10-15, 16-40, 41-80, and 81-100. For PPEM values below 10ppem, the hint set covering 10-15ppem is used, for PPEM values larger than 100 the hint set covering 81-100ppem is used. For PPEM values larger than 250, no hinting gets applied.</p>
@@ -2782,18 +2927,15 @@
<p>The ttfautohint library (and programs) supports two solutions for handling composite glyphs, to be controlled with option <a href="#hint-composites"><code>--composites</code></a>. This section contains some general information, then covers the case where the option is off, while the next section describes how ttfautohint behaves if this option is activated.</p>
<p>Regardless of the <code>--composites</code> option, ttfautohint performs a scan over all composite glyphs to assure that components of a composite glyph inherit its style, as described <a href="#opentype-features">later</a>. However, components that are shifted vertically will be skipped. For example, if the glyph ‘Agrave’ uses a shifted ‘grave’ accent glyph, the accent is ignored. On the other hand, if there is a glyph ‘agrave’ that uses the same ‘grave’ glyph vertically unshifted, ‘grave’ does inherit the style.</p>
<p>If <code>--composites</code> is off, components are hinted separately, then put together. Separate hinting implies that the current style’s blue zones are applied to all subglyphs in its original, unshifted positions. In case you want to shift components vertically, it is <em>mandatory</em> to set bit 2 (value 4), <code>ROUND_XY_TO_GRID</code>, in the flag variable of the composite glyph description to get visually pleasing results, as the images below demonstrate.</p>
-<div class="figure">
-<img src="img/composite-no-round-xy-to-grid.png" alt="Here, the subscript glyphs are composites each having a single element that is shifted down. If option --composites is not used, subglyphs are hinted before they are glued together (possibly applying scaling and shifting). Because the ROUND_XY_TO_GRID flag isn’t set, the vertical translation doesn’t align the subglyph to the pixel grid, causing severe distortions." />
-<p class="caption">Here, the subscript glyphs are composites each having a single element that is shifted down. If option <code>--composites</code> is not used, subglyphs are hinted before they are glued together (possibly applying scaling and shifting). Because the <code>ROUND_XY_TO_GRID</code> flag isn’t set, the vertical translation doesn’t align the subglyph to the pixel grid, causing severe distortions.</p>
-</div>
-<div class="figure">
-<img src="img/composite-round-xy-to-grid.png" alt="The same as before, but with ROUND_XY_TO_GRID set. Now the subscript glyphs look identical to the superscripts." />
-<p class="caption">The same as before, but with <code>ROUND_XY_TO_GRID</code> set. Now the subscript glyphs look identical to the superscripts.</p>
-</div>
-<div class="figure">
-<img src="img/composite-no-round-xy-to-grid-option-c.png" alt="For comparison purposes, here the result with option --composites (and no ROUND_XY_TO_GRID). The composite glyphs as a whole get hinted; consequently, the subscript glyphs get separate blue zones. At the displayed size of 16ppem the vertical positions of the subscript blue zones are rounded differently if compared to the superscript zones, thus the smaller glyph height." />
-<p class="caption">For comparison purposes, here the result <em>with</em> option <code>--composites</code> (and no <code>ROUND_XY_TO_GRID</code>). The composite glyphs as a whole get hinted; consequently, the subscript glyphs get separate blue zones. At the displayed size of 16ppem the vertical positions of the subscript blue zones are rounded differently if compared to the superscript zones, thus the smaller glyph height.</p>
-</div>
+<figure>
+<img src="img/composite-no-round-xy-to-grid.png" alt="Here, the subscript glyphs are composites each having a single element that is shifted down. If option --composites is not used, subglyphs are hinted before they are glued together (possibly applying scaling and shifting). Because the ROUND_XY_TO_GRID flag isn’t set, the vertical translation doesn’t align the subglyph to the pixel grid, causing severe distortions." /><figcaption aria-hidden="true">Here, the subscript glyphs are composites each having a single element that is shifted down. If option <code>--composites</code> is not used, subglyphs are hinted before they are glued together (possibly applying scaling and shifting). Because the <code>ROUND_XY_TO_GRID</code> flag isn’t set, the vertical translation doesn’t align the subglyph to the pixel grid, causing severe distortions.</figcaption>
+</figure>
+<figure>
+<img src="img/composite-round-xy-to-grid.png" alt="The same as before, but with ROUND_XY_TO_GRID set. Now the subscript glyphs look identical to the superscripts." /><figcaption aria-hidden="true">The same as before, but with <code>ROUND_XY_TO_GRID</code> set. Now the subscript glyphs look identical to the superscripts.</figcaption>
+</figure>
+<figure>
+<img src="img/composite-no-round-xy-to-grid-option-c.png" alt="For comparison purposes, here the result with option --composites (and no ROUND_XY_TO_GRID). The composite glyphs as a whole get hinted; consequently, the subscript glyphs get separate blue zones. At the displayed size of 16ppem the vertical positions of the subscript blue zones are rounded differently if compared to the superscript zones, thus the smaller glyph height." /><figcaption aria-hidden="true">For comparison purposes, here the result <em>with</em> option <code>--composites</code> (and no <code>ROUND_XY_TO_GRID</code>). The composite glyphs as a whole get hinted; consequently, the subscript glyphs get separate blue zones. At the displayed size of 16ppem the vertical positions of the subscript blue zones are rounded differently if compared to the superscript zones, thus the smaller glyph height.</figcaption>
+</figure>
<h2 id="the-.ttfautohint-glyph">The ‘.ttfautohint’ Glyph</h2>
<p>If option <a href="#hint-composites"><code>--composites</code></a> is used, ttfautohint doesn’t hint subglyphs of composite glyphs separately. Instead, it hints the whole glyph, this is, composites get recursively expanded internally so that they form simple glyphs, then hints are applied – this is the normal working mode of FreeType’s auto-hinter.</p>
<p>One problem, however, must be solved: Hinting for subglyphs (which usually are used as normal glyphs also) must be deactivated so that nothing but the final bytecode of the composite gets executed.</p>
@@ -2802,30 +2944,30 @@
<table>
<thead>
<tr class="header">
-<th align="left">Bytecode of</th>
-<th align="left">Action</th>
+<th style="text-align: left;">Bytecode of</th>
+<th style="text-align: left;">Action</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="left">.ttfautohint</td>
-<td align="left">increase <code>cvtl_is_subglyph</code> (now: 1)</td>
+<td style="text-align: left;">.ttfautohint</td>
+<td style="text-align: left;">increase <code>cvtl_is_subglyph</code> (now: 1)</td>
</tr>
<tr class="even">
-<td align="left">A</td>
-<td align="left">do nothing because <code>cvtl_is_subglyph</code> &gt; 0</td>
+<td style="text-align: left;">A</td>
+<td style="text-align: left;">do nothing because <code>cvtl_is_subglyph</code> &gt; 0</td>
</tr>
<tr class="odd">
-<td align="left">grave</td>
-<td align="left">do nothing because <code>cvtl_is_subglyph</code> &gt; 0</td>
+<td style="text-align: left;">grave</td>
+<td style="text-align: left;">do nothing because <code>cvtl_is_subglyph</code> &gt; 0</td>
</tr>
<tr class="even">
-<td align="left">Agrave</td>
-<td align="left">decrease <code>cvtl_is_subglyph</code> (now: 0)</td>
+<td style="text-align: left;">Agrave</td>
+<td style="text-align: left;">decrease <code>cvtl_is_subglyph</code> (now: 0)</td>
</tr>
<tr class="odd">
-<td align="left"></td>
-<td align="left">apply hints because <code>cvtl_is_subglyph</code> == 0</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">apply hints because <code>cvtl_is_subglyph</code> == 0</td>
</tr>
</tbody>
</table>
@@ -2853,51 +2995,51 @@
<caption>OpenType features handled specially by ttfautohint</caption>
<thead>
<tr class="header">
-<th align="center">Feature tag</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Feature tag</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>c2cp</code></td>
-<td align="left">petite capitals from capitals</td>
+<td style="text-align: center;"><code>c2cp</code></td>
+<td style="text-align: left;">petite capitals from capitals</td>
</tr>
<tr class="even">
-<td align="center"><code>c2sc</code></td>
-<td align="left">small capitals from capitals</td>
+<td style="text-align: center;"><code>c2sc</code></td>
+<td style="text-align: left;">small capitals from capitals</td>
</tr>
<tr class="odd">
-<td align="center"><code>ordn</code></td>
-<td align="left">ordinals</td>
+<td style="text-align: center;"><code>ordn</code></td>
+<td style="text-align: left;">ordinals</td>
</tr>
<tr class="even">
-<td align="center"><code>pcap</code></td>
-<td align="left">petite capitals</td>
+<td style="text-align: center;"><code>pcap</code></td>
+<td style="text-align: left;">petite capitals</td>
</tr>
<tr class="odd">
-<td align="center"><code>sinf</code></td>
-<td align="left">scientific inferiors</td>
+<td style="text-align: center;"><code>sinf</code></td>
+<td style="text-align: left;">scientific inferiors</td>
</tr>
<tr class="even">
-<td align="center"><code>smcp</code></td>
-<td align="left">small capitals</td>
+<td style="text-align: center;"><code>smcp</code></td>
+<td style="text-align: left;">small capitals</td>
</tr>
<tr class="odd">
-<td align="center"><code>subs</code></td>
-<td align="left">subscript</td>
+<td style="text-align: center;"><code>subs</code></td>
+<td style="text-align: left;">subscript</td>
</tr>
<tr class="even">
-<td align="center"><code>sups</code></td>
-<td align="left">superscript</td>
+<td style="text-align: center;"><code>sups</code></td>
+<td style="text-align: left;">superscript</td>
</tr>
<tr class="odd">
-<td align="center"><code>titl</code></td>
-<td align="left">titling</td>
+<td style="text-align: center;"><code>titl</code></td>
+<td style="text-align: left;">titling</td>
</tr>
</tbody>
</table>
<p>There are two conditions to get a valid style for a feature in a given script.</p>
-<ol style="list-style-type: decimal">
+<ol type="1">
<li><p>One of the script’s standard characters must be available in the feature.</p></li>
<li><p>The feature must provide characters to form at least one blue zone; see <a href="#blue-zones">above</a>.</p></li>
</ol>
@@ -2927,14 +3069,14 @@
<p>Since ttfautohint needs to find both standard and blue zone characters, it relies on correct Unicode values. If you want to handle such fonts, please fix their <code>cmap</code> tables accordingly before running ttfautohint.</p>
<h3 id="irregular-glyph-heights">Irregular Glyph Heights</h3>
<p>The central concept of ttfautohint’s hinting algorithm as discussed <a href="#segments-and-edges">above</a> is to identify horizontal segments at extremum positions, especially for blue zones. If such a segment is missing, it cannot be associated with a blue zone, possibly leading to irregular heights for the particular glyph.</p>
-<p>Normally, a segment has a horizontal length of at least 20 font units (assuming 2048 units per EM)<a href="#fn1" class="footnoteRef" id="fnref1"><sup>1</sup></a>. Using a <a href="#control-instructions-file">Control Instructions File</a>, however, it is possible to define additional segments at arbitrary points that help overcome this restriction, making it possible to fix (most of) such problems.</p>
+<p>Normally, a segment has a horizontal length of at least 20 font units (assuming 2048 units per EM)<a href="#fn1" class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a>. Using a <a href="#control-instructions-file">Control Instructions File</a>, however, it is possible to define additional segments at arbitrary points that help overcome this restriction, making it possible to fix (most of) such problems.</p>
<h3 id="diagonals">Diagonals</h3>
<p>ttfautohint doesn’t handle diagonal lines specially. For thin outlines, this might lead to strokes that look too thick at smaller sizes. A font designer might compensate this to a certain amount by slightly reducing the stroke width of diagonal lines. However, in many cases the sub-optimal appearance of a stroke with borders that don’t exactly fit the pixel grid is not the outline itself but an incorrect gamma value of the monitor: People tend to not properly adjust it, and the default values of most operating systems are too low, causing too much darkening of such strokes. It is thus of vital importance to compare ttfautohint’s results with similar fonts to exclude any systematic effect not related to the outlines themselves.</p>
<h2 id="extending-ttfautohint-with-new-scripts">Extending ttfautohint with new scripts</h2>
<p>Right now, adding new scripts to ttfautohint only works on the source code level, this is, you have to patch the C source code.</p>
<p>The process itself isn’t very complicated; it is demonstrated best by example. The following commits in ttfautohint add Ethiopian and Armenian, respectively.</p>
-<div style="white-space: pre-line;"><a href="https://repo.or.cz/ttfautohint.git/commitdiff/d14c7c07" class="uri">https://repo.or.cz/ttfautohint.git/commitdiff/d14c7c07</a>
-<a href="https://repo.or.cz/ttfautohint.git/commitdiff/b5022cd9" class="uri">https://repo.or.cz/ttfautohint.git/commitdiff/b5022cd9</a></div>
+<div class="line-block"><a href="https://repo.or.cz/ttfautohint.git/commitdiff/d14c7c07">https://repo.or.cz/ttfautohint.git/commitdiff/d14c7c07</a><br />
+<a href="https://repo.or.cz/ttfautohint.git/commitdiff/b5022cd9">https://repo.or.cz/ttfautohint.git/commitdiff/b5022cd9</a></div>
<p>It shows that you have to do the following steps.</p>
<ul>
<li><p>Add blue zone character data to the file <code>lib/tablue.dat</code>.</p></li>
@@ -2955,7 +3097,7 @@
<blockquote>
<p><em>[</em> font-idx <em>]</em>  script  feature  <em><code>@</code></em>  glyph-ids</p>
</blockquote>
-<p><em>script</em> is a four-letter name<a href="#fn2" class="footnoteRef" id="fnref2"><sup>2</sup></a> of one of the scripts supported by ttfautohint. <em>feature</em> is one of the four-letter names of features supported by ttfautohint.</p>
+<p><em>script</em> is a four-letter name<a href="#fn2" class="footnote-ref" id="fnref2" role="doc-noteref"><sup>2</sup></a> of one of the scripts supported by ttfautohint. <em>feature</em> is one of the four-letter names of features supported by ttfautohint.</p>
<p>The elements of <em>glyph-ids</em> are a list of comma separated <em>glyph-id</em> values or value ranges. Note that is not necessary that elements are specified in increasing order.</p>
<p>Assuming that a font contains superscript digits ‘zero.sups’ to ‘nine.sups’ together with the glyphs ‘a.sups’ and ‘o.sups’, use a line</p>
<pre><code> cyrl sups @ zero.sups-nine.sups, a.sups, o.sups</code></pre>
@@ -2979,123 +3121,118 @@
<p>The following syntax forms allows adjustments of a glyph’s hinting process.</p>
<h3 id="change-direction-of-points-artificial-segments">Change Direction of Points, Artificial Segments</h3>
<blockquote>
-<em>[</em> font‑idx <em>]</em>  glyph‑id  <em><code>l</code>[<code>eft</code>]|<code>r</code>[<code>ight</code>]</em>  points  <em>[</em> <em><code>(</code></em> left‑offset <em><code>,</code></em> right‑offset <em><code>)</code></em> <em>]</em><br />
-
+<p><em>[</em> font‑idx <em>]</em>  glyph‑id  <em><code>l</code>[<code>eft</code>]|<code>r</code>[<code>ight</code>]</em>  points  <em>[</em> <em><code>(</code></em> left‑offset <em><code>,</code></em> right‑offset <em><code>)</code></em> <em>]</em><br />
+</p>
</blockquote>
<p>The mutually exclusive parameters <code>left</code> and <code>right</code> (which can be abbreviated as ‘<code>l</code>’ and ‘<code>r</code>’, respectively) indicate that the following points have left or right ‘out’ direction, respectively, overriding ttfautohint’s algorithm for setting point directions. The ‘out direction’ of a point is the direction of the outline <em>leaving</em> the point (or passing the control point). If the specified direction is identical to what ttfautohint computes, nothing special happens. Otherwise, a one-point segment with the specified direction gets created, see <a href="#segments-and-edges">above</a>. By default, its length is zero. Setting <em>left‑offset</em> and <em>right‑offset</em>, you can change the segment’s horizontal start and end position relative to the point position. <em>left‑offset</em> and <em>right‑offset</em> are integers measured in font units.</p>
<p>The following five images, displaying glyphs ‘O’ and ‘Q’ from the font <a href="https://fonts.google.com/specimen/Halant">Halant-Regular</a>, demonstrate how to use direction changes.</p>
-<div class="figure">
-<img src="img/Halant-Regular-O-Q.png" alt="The outlines of glyphs O and Q, as displayed in FontForge. They are sufficiently similar to expect that ttfautohint hints them equally. However, this is not the case." />
-<p class="caption">The outlines of glyphs ‘O’ and ‘Q’, as displayed in FontForge. They are sufficiently similar to expect that ttfautohint hints them equally. However, this is not the case.</p>
-</div>
-<div class="figure">
-<img src="img/Halant-Regular-O-Q-unhinted-12px.png" alt="The same glyphs, shown at 12px before hinting. [Please ignore the outline distortion in the upper right of glyph O; this is a bug in FontForge while running the TrueType debugger.]" />
-<p class="caption">The same glyphs, shown at 12px before hinting. [Please ignore the outline distortion in the upper right of glyph ‘O’; this is a bug in FontForge while running the TrueType debugger.]</p>
-</div>
-<div class="figure">
-<img src="img/Halant-Regular-O-good-Q-badly-hinted-12px.png" alt="Using only ttfautohint’s -a sss parameter to force strong stem width and positioning, the hinting of glyph Q is really bad, making the glyph vertically two pixels larger! Reason is that this glyph doesn’t contain a horizontal segment at the baseline blue zone (y = 1; this corresponds to the segment 13-14 in the O glyph). Normally, segment 1-2 would form a stem with the baseline segment (as segment 7-8 does in glyph O). Instead, it forms a stem with segment 19-20, which gets moved down (y = −1) because the whole glyph appears to be stretched." />
-<p class="caption">Using only ttfautohint’s ‘<code>-a sss</code>’ parameter to force strong stem width and positioning, the hinting of glyph ‘Q’ is really bad, making the glyph vertically two pixels larger! Reason is that this glyph doesn’t contain a horizontal segment at the baseline blue zone (<em>y</em> = 1; this corresponds to the segment 13-14 in the ‘O’ glyph). Normally, segment 1-2 would form a ‘stem’ with the baseline segment (as segment 7-8 does in glyph ‘O’). Instead, it forms a stem with segment 19-20, which gets moved down (<em>y</em> = −1) because the whole glyph appears to be stretched.</p>
-</div>
-<div class="figure">
-<img src="img/Halant-Regular-O-good-Q-better-hinted-12px.png" alt="To fix the problem, we change the direction of point 38 to left by writing a line Q left 38 (without the quotes) to a control description file Halant-Regular.txt. Adding option -m Halant-Regular.txt to ttfautohint, we get the shown image as a result, which is much better: Segment 1-2 now properly forms a stem with our artificial one-point segment 38, and the O-like shape is properly positioned. However, there is still room for improvement: Segment 19-20 is also positioned at the baseline, making the connection between the O shape and the tail too thin." />
-<p class="caption">To fix the problem, we change the direction of point 38 to ‘left’ by writing a line ‘<code>Q left 38</code>’ (without the quotes) to a control description file <code>Halant-Regular.txt</code>. Adding option ‘<code>-m Halant-Regular.txt</code>’ to ttfautohint, we get the shown image as a result, which is much better: Segment 1-2 now properly forms a stem with our artificial one-point segment 38, and the ‘O’-like shape is properly positioned. However, there is still room for improvement: Segment 19-20 is also positioned at the baseline, making the connection between the ‘O’ shape and the tail too thin.</p>
-</div>
-<div class="figure">
-<img src="img/Halant-Regular-O-good-Q-well-hinted-12px.png" alt="By giving the one-point segment 38 a horizontal width, we can prevent that segment 19-20 gets positioned at the baseline: Replace the line in the previous image description with Q left 38 (−70,20), making the segment extend 70 font units to the left and 20 to the right of point 38. The exact offset values don’t matter; it’s only important to start left of point 19. Another solution to the problem is to artificially change the direction of segment 19-20 by adding a second line Q right 19-20 to the control instructions file; for our Q glyph, this produces almost exactly the same hinting results. Note that such direction changes only influence the hinting process; an outline’s direction won’t be changed at all." />
-<p class="caption">By giving the one-point segment 38 a horizontal width, we can prevent that segment 19-20 gets positioned at the baseline: Replace the line in the previous image description with ‘<code>Q left 38 (−70,20)</code>’, making the segment extend 70 font units to the left and 20 to the right of point 38. The exact offset values don’t matter; it’s only important to start left of point 19. Another solution to the problem is to artificially change the direction of segment 19-20 by adding a second line ‘<code>Q right 19-20</code>’ to the control instructions file; for our ‘Q’ glyph, this produces almost exactly the same hinting results. Note that such direction changes only influence the hinting process; an outline’s direction won’t be changed at all.</p>
-</div>
+<figure>
+<img src="img/Halant-Regular-O-Q.png" alt="The outlines of glyphs ‘O’ and ‘Q’, as displayed in FontForge. They are sufficiently similar to expect that ttfautohint hints them equally. However, this is not the case." /><figcaption aria-hidden="true">The outlines of glyphs ‘O’ and ‘Q’, as displayed in FontForge. They are sufficiently similar to expect that ttfautohint hints them equally. However, this is not the case.</figcaption>
+</figure>
+<figure>
+<img src="img/Halant-Regular-O-Q-unhinted-12px.png" alt="The same glyphs, shown at 12px before hinting. [Please ignore the outline distortion in the upper right of glyph ‘O’; this is a bug in FontForge while running the TrueType debugger.]" /><figcaption aria-hidden="true">The same glyphs, shown at 12px before hinting. [Please ignore the outline distortion in the upper right of glyph ‘O’; this is a bug in FontForge while running the TrueType debugger.]</figcaption>
+</figure>
+<figure>
+<img src="img/Halant-Regular-O-good-Q-badly-hinted-12px.png" alt="Using only ttfautohint’s ‘-a sss’ parameter to force strong stem width and positioning, the hinting of glyph ‘Q’ is really bad, making the glyph vertically two pixels larger! Reason is that this glyph doesn’t contain a horizontal segment at the baseline blue zone (y = 1; this corresponds to the segment 13-14 in the ‘O’ glyph). Normally, segment 1-2 would form a ‘stem’ with the baseline segment (as segment 7-8 does in glyph ‘O’). Instead, it forms a stem with segment 19-20, which gets moved down (y = −1) because the whole glyph appears to be stretched." /><figcaption aria-hidden="true">Using only ttfautohint’s ‘<code>-a sss</code>’ parameter to force strong stem width and positioning, the hinting of glyph ‘Q’ is really bad, making the glyph vertically two pixels larger! Reason is that this glyph doesn’t contain a horizontal segment at the baseline blue zone (<em>y</em> = 1; this corresponds to the segment 13-14 in the ‘O’ glyph). Normally, segment 1-2 would form a ‘stem’ with the baseline segment (as segment 7-8 does in glyph ‘O’). Instead, it forms a stem with segment 19-20, which gets moved down (<em>y</em> = −1) because the whole glyph appears to be stretched.</figcaption>
+</figure>
+<figure>
+<img src="img/Halant-Regular-O-good-Q-better-hinted-12px.png" alt="To fix the problem, we change the direction of point 38 to ‘left’ by writing a line ‘Q left 38’ (without the quotes) to a control description file Halant-Regular.txt. Adding option ‘-m Halant-Regular.txt’ to ttfautohint, we get the shown image as a result, which is much better: Segment 1-2 now properly forms a stem with our artificial one-point segment 38, and the ‘O’-like shape is properly positioned. However, there is still room for improvement: Segment 19-20 is also positioned at the baseline, making the connection between the ‘O’ shape and the tail too thin." /><figcaption aria-hidden="true">To fix the problem, we change the direction of point 38 to ‘left’ by writing a line ‘<code>Q left 38</code>’ (without the quotes) to a control description file <code>Halant-Regular.txt</code>. Adding option ‘<code>-m Halant-Regular.txt</code>’ to ttfautohint, we get the shown image as a result, which is much better: Segment 1-2 now properly forms a stem with our artificial one-point segment 38, and the ‘O’-like shape is properly positioned. However, there is still room for improvement: Segment 19-20 is also positioned at the baseline, making the connection between the ‘O’ shape and the tail too thin.</figcaption>
+</figure>
+<figure>
+<img src="img/Halant-Regular-O-good-Q-well-hinted-12px.png" alt="By giving the one-point segment 38 a horizontal width, we can prevent that segment 19-20 gets positioned at the baseline: Replace the line in the previous image description with ‘Q left 38 (−70,20)’, making the segment extend 70 font units to the left and 20 to the right of point 38. The exact offset values don’t matter; it’s only important to start left of point 19. Another solution to the problem is to artificially change the direction of segment 19-20 by adding a second line ‘Q right 19-20’ to the control instructions file; for our ‘Q’ glyph, this produces almost exactly the same hinting results. Note that such direction changes only influence the hinting process; an outline’s direction won’t be changed at all." /><figcaption aria-hidden="true">By giving the one-point segment 38 a horizontal width, we can prevent that segment 19-20 gets positioned at the baseline: Replace the line in the previous image description with ‘<code>Q left 38 (−70,20)</code>’, making the segment extend 70 font units to the left and 20 to the right of point 38. The exact offset values don’t matter; it’s only important to start left of point 19. Another solution to the problem is to artificially change the direction of segment 19-20 by adding a second line ‘<code>Q right 19-20</code>’ to the control instructions file; for our ‘Q’ glyph, this produces almost exactly the same hinting results. Note that such direction changes only influence the hinting process; an outline’s direction won’t be changed at all.</figcaption>
+</figure>
<h3 id="unset-direction-of-points">Unset Direction of Points</h3>
<blockquote>
-<em>[</em> font‑idx <em>]</em>  glyph‑id  <em><code>n</code>[<code>odir</code>]</em>  points<br />
-
+<p><em>[</em> font‑idx <em>]</em>  glyph‑id  <em><code>n</code>[<code>odir</code>]</em>  points<br />
+</p>
</blockquote>
<p>Parameter <code>nodir</code> (or ‘<code>n</code>’) sets the ‘out’ direction of the following points to ‘no direction’, this is, neither left nor right. If the specified direction is identical to what ttfautohint computes, nothing special happens. Otherwise, ttfautohint no longer considers those points as part of horizontal segments, thus treating them as <a href="#grid-fitting">‘weak’</a> points.</p>
<p>Modifying or adding segments doesn’t directly modify the outlines; it only influences the hinting process.</p>
<h3 id="delta-exceptions">Delta Exceptions</h3>
<blockquote>
-<em>[</em> font‑idx <em>]</em>  glyph‑id  <em><code>t</code>[<code>ouch</code>]|<code>p</code>[<code>oint</code>]</em>  points  <em>[</em> <em><code>x</code>[<code>shift</code>]</em> x‑shift <em>]</em>  <em>[</em> <em><code>y</code>[<code>shift</code>]</em> y‑shift <em>]</em>  <em><code>@</code></em>  ppems<br />
-
+<p><em>[</em> font‑idx <em>]</em>  glyph‑id  <em><code>t</code>[<code>ouch</code>]|<code>p</code>[<code>oint</code>]</em>  points  <em>[</em> <em><code>x</code>[<code>shift</code>]</em> x‑shift <em>]</em>  <em>[</em> <em><code>y</code>[<code>shift</code>]</em> y‑shift <em>]</em>  <em><code>@</code></em>  ppems<br />
+</p>
</blockquote>
-<p>The mutually exclusive parameters <code>touch</code> and <code>point</code> (which can be abbreviated as ‘<code>t</code>’ and ‘<code>p</code>’, respectively) make ttfautohint apply delta exceptions for the given points, shifting them by the given values. Delta exceptions entered with <code>touch</code> are applied before the final ‘IUP’ (<em>interpolate untouched points</em>) instructions in a glyph’s bytecode, exceptions entered with <code>point</code> after ‘IUP’ (please consult Greg Hitchcock’s <a href="https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx">ClearType Whitepaper</a> for more on pre-IUP and post-IUP delta hints). Additionally, the <code>touch</code> parameter makes the bytecode <em>touch</em> the affected points; such points are no longer affected by ‘IUP’ at all. Note that in ClearType mode all deltas along the x axis are discarded, and deltas along the y axis are only executed for touched points. As a consequence, vertical delta exceptions entered with <code>point</code> should not be used in ClearType mode.<a href="#fn3" class="footnoteRef" id="fnref3"><sup>3</sup></a></p>
+<p>The mutually exclusive parameters <code>touch</code> and <code>point</code> (which can be abbreviated as ‘<code>t</code>’ and ‘<code>p</code>’, respectively) make ttfautohint apply delta exceptions for the given points, shifting them by the given values. Delta exceptions entered with <code>touch</code> are applied before the final ‘IUP’ (<em>interpolate untouched points</em>) instructions in a glyph’s bytecode, exceptions entered with <code>point</code> after ‘IUP’ (please consult Greg Hitchcock’s <a href="https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx">ClearType Whitepaper</a> for more on pre-IUP and post-IUP delta hints). Additionally, the <code>touch</code> parameter makes the bytecode <em>touch</em> the affected points; such points are no longer affected by ‘IUP’ at all. Note that in ClearType mode all deltas along the x axis are discarded, and deltas along the y axis are only executed for touched points. As a consequence, vertical delta exceptions entered with <code>point</code> should not be used in ClearType mode.<a href="#fn3" class="footnote-ref" id="fnref3" role="doc-noteref"><sup>3</sup></a></p>
<p><em>ppems</em>, similar to <em>points</em>, are number ranges, see ‘<a href="#x-height-snapping-exceptions">x Height Snapping Exceptions</a>’ for the syntax.</p>
<p><em>x‑shift</em> and <em>y‑shift</em> represent real numbers that get rounded to multiples of 1/8 pixels. The entries for <code>xshift</code> (‘<code>x</code>’) and <code>yshift</code> (‘<code>y</code>’) are optional; if missing, the corresponding value is set to zero. If both values are zero, the delta exception entry is ignored as a whole.</p>
<p>Values for <em>x‑shift</em> and <em>y‑shift</em> must be in the range [−1.0;1.0]. Values for <em>ppems</em> must be in the range [6;53]. Values for <em>points</em> are limited by the number of points in the glyph.</p>
<p>Note that only character ‘<code>.</code>’ is recognized as a decimal point, and a thousands separator is not accepted.</p>
<p>As an example for delta instructions, let’s assume that you want to shift points 2, 3, and 4 in glyph ‘Aacute’ at PPEM sizes 12 and 13 by a vertical amount of 0.25 pixels. This corresponds to the line</p>
<pre><code> Aacute touch 2-4 yshift 0.25 @ 12, 13</code></pre>
-<p>in a control instructions file. Since we use <code>touch</code> and not <code>point</code>, points 2, 3, and 4 are no longer subject to the final ‘IUP’ instruction, which interpolates weak, untouched point positions between strong, touched ones, cf. the description <a href="https://developer.apple.com/fonts/TrueType-Reference-Manual/RM05/Chap5.html#IUP">here</a>.</p>
+<p>in a control instructions file. Since we use <code>touch</code> and not <code>point</code>, points 2, 3, and 4 are no longer subject to the final ‘IUP’ instruction, which interpolates weak, untouched point positions between strong, touched ones, cf. the description <a href="https://developer.apple.com/fonts/TrueType-Reference-Manual/RM05/Chap5.html#IUP">here</a>.</p>
<h1 id="the-ttfautohint-api">The ttfautohint API</h1>
<p>This section documents the public functions of the ttfautohint library together with its callback functions. All information has been directly extracted from the <code>ttfautohint.h</code> header file.</p>
<h2 id="preprocessor-macros-typedefs-and-enums">Preprocessor Macros, Typedefs, and Enums</h2>
<p>Some default values.</p>
-<div class="sourceCode"><pre class="sourceCode c"><code class="sourceCode c"><span class="pp">#define TA_HINTING_RANGE_MIN 8</span>
-<span class="pp">#define TA_HINTING_RANGE_MAX 50</span>
-<span class="pp">#define TA_HINTING_LIMIT 200</span>
-<span class="pp">#define TA_INCREASE_X_HEIGHT 14</span></code></pre></div>
+<div class="sourceCode" id="cb10"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="pp">#define TA_HINTING_RANGE_MIN 8</span></span>
+<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a><span class="pp">#define TA_HINTING_RANGE_MAX 50</span></span>
+<span id="cb10-3"><a href="#cb10-3" aria-hidden="true" tabindex="-1"></a><span class="pp">#define TA_HINTING_LIMIT 200</span></span>
+<span id="cb10-4"><a href="#cb10-4" aria-hidden="true" tabindex="-1"></a><span class="pp">#define TA_INCREASE_X_HEIGHT 14</span></span></code></pre></div>
<p>An error type.</p>
-<div class="sourceCode"><pre class="sourceCode c"><code class="sourceCode c"><span class="kw">typedef</span> <span class="dt">int</span> TA_Error;</code></pre></div>
+<div class="sourceCode" id="cb11"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="kw">typedef</span> <span class="dt">int</span> TA_Error<span class="op">;</span></span></code></pre></div>
<p>An enum type for stem width algorithm selection.</p>
-<div class="sourceCode"><pre class="sourceCode c"><code class="sourceCode c"><span class="kw">enum</span>
-{
- TA_STEM_WIDTH_MODE_NATURAL = -<span class="dv">1</span>,
- TA_STEM_WIDTH_MODE_QUANTIZED = <span class="dv">0</span>,
- TA_STEM_WIDTH_MODE_STRONG = <span class="dv">1</span>
-};</code></pre></div>
+<div class="sourceCode" id="cb12"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="kw">enum</span></span>
+<span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a><span class="op">{</span></span>
+<span id="cb12-3"><a href="#cb12-3" aria-hidden="true" tabindex="-1"></a> TA_STEM_WIDTH_MODE_NATURAL <span class="op">=</span> <span class="op">-</span><span class="dv">1</span><span class="op">,</span></span>
+<span id="cb12-4"><a href="#cb12-4" aria-hidden="true" tabindex="-1"></a> TA_STEM_WIDTH_MODE_QUANTIZED <span class="op">=</span> <span class="dv">0</span><span class="op">,</span></span>
+<span id="cb12-5"><a href="#cb12-5" aria-hidden="true" tabindex="-1"></a> TA_STEM_WIDTH_MODE_STRONG <span class="op">=</span> <span class="dv">1</span></span>
+<span id="cb12-6"><a href="#cb12-6" aria-hidden="true" tabindex="-1"></a><span class="op">};</span></span></code></pre></div>
<h2 id="function-pointer-ta_alloc_func">Function Pointer: <code>TA_Alloc_Func</code></h2>
<p>A pointer to a function provided by the calling application to allocate memory. The ttfautohint library uses this for allocating the buffer given by the <code>out-buffer</code> field of <a href="#function-ttf_autohint"><code>TTF_autohint</code></a> and for allocating the <code>str</code> buffer in the <a href="#callback-ta_info_func"><code>TA_Info_Func</code></a> callback.</p>
<p>The signature is identical to standard C’s <code>malloc</code> function (in header file <code>stdlib.h</code>).</p>
-<div class="sourceCode"><pre class="sourceCode c"><code class="sourceCode c"><span class="kw">typedef</span> <span class="dt">void</span> *
-(*TA_Alloc_Func)(<span class="dt">size_t</span> size);</code></pre></div>
+<div class="sourceCode" id="cb13"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="kw">typedef</span> <span class="dt">void</span> <span class="op">*</span></span>
+<span id="cb13-2"><a href="#cb13-2" aria-hidden="true" tabindex="-1"></a><span class="op">(*</span>TA_Alloc_Func<span class="op">)(</span><span class="dt">size_t</span> size<span class="op">);</span></span></code></pre></div>
<h2 id="function-pointer-ta_free_func">Function Pointer: <code>TA_Free_Func</code></h2>
<p>A pointer to a function provided by the calling application to free memory allocated with <a href="#function-pointer-ta_alloc_func"><code>TA_Alloc_Func</code></a>. The ttfautohint library calls this for deallocating the <code>str</code> buffers in the <a href="#callback-ta_info_func"><code>TA_Info_Func</code></a> callback after they have been used.</p>
<p>The signature is identical to standard C’s <code>free</code> function (in header file <code>stdlib.h</code>).</p>
-<div class="sourceCode"><pre class="sourceCode c"><code class="sourceCode c"><span class="kw">typedef</span> <span class="dt">void</span>
-(*TA_Free_Func)(<span class="dt">void</span> *ptr);</code></pre></div>
+<div class="sourceCode" id="cb14"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="kw">typedef</span> <span class="dt">void</span></span>
+<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a><span class="op">(*</span>TA_Free_Func<span class="op">)(</span><span class="dt">void</span> <span class="op">*</span>ptr<span class="op">);</span></span></code></pre></div>
<h2 id="callback-ta_progress_func">Callback: <code>TA_Progress_Func</code></h2>
<p>A callback function to get progress information. <em>curr_idx</em> gives the currently processed glyph index; if it is negative, an error has occurred. <em>num_glyphs</em> holds the total number of glyphs in the font (this value can’t be larger than 65535).</p>
<p><em>curr_sfnt</em> gives the current subfont within a TrueType Collection (TTC), and <em>num_sfnts</em> the total number of subfonts.</p>
<p>If the return value is non-zero, <code>TTF_autohint</code> aborts with <code>TA_Err_Canceled</code>. Use this for a ‘Cancel’ button or similar features in interactive use.</p>
<p><em>progress_data</em> is a void pointer to user-supplied data.</p>
-<div class="sourceCode"><pre class="sourceCode c"><code class="sourceCode c"><span class="kw">typedef</span> <span class="dt">int</span>
-(*TA_Progress_Func)(<span class="dt">long</span> curr_idx,
- <span class="dt">long</span> num_glyphs,
- <span class="dt">long</span> curr_sfnt,
- <span class="dt">long</span> num_sfnts,
- <span class="dt">void</span>* progress_data);</code></pre></div>
+<div class="sourceCode" id="cb15"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="kw">typedef</span> <span class="dt">int</span></span>
+<span id="cb15-2"><a href="#cb15-2" aria-hidden="true" tabindex="-1"></a><span class="op">(*</span>TA_Progress_Func<span class="op">)(</span><span class="dt">long</span> curr_idx<span class="op">,</span></span>
+<span id="cb15-3"><a href="#cb15-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">long</span> num_glyphs<span class="op">,</span></span>
+<span id="cb15-4"><a href="#cb15-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">long</span> curr_sfnt<span class="op">,</span></span>
+<span id="cb15-5"><a href="#cb15-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">long</span> num_sfnts<span class="op">,</span></span>
+<span id="cb15-6"><a href="#cb15-6" aria-hidden="true" tabindex="-1"></a> <span class="dt">void</span><span class="op">*</span> progress_data<span class="op">);</span></span></code></pre></div>
<h2 id="callback-ta_error_func">Callback: <code>TA_Error_Func</code></h2>
<p>A callback function to get error information.</p>
<p><em>error</em> is the value <code>TTF_autohint</code> returns. See file <code>ttfautohint-errors.h</code> for a list. Error codes not in this list are directly taken from FreeType; see the FreeType header file <code>fterrdef.h</code> for more.</p>
<p><em>error_string</em>, if non-NULL, is a pointer to an error message that represents <em>error</em>.</p>
<p>The next three parameters help identify the origin of text string parsing errors. <em>linenum</em>, if non-zero, contains the line number. <em>line</em>, if non-NULL, is a pointer to the input line that can’t be processed. <em>errpos</em>, if non-NULL, holds a pointer to the position in <em>line</em> where the problem occurs.</p>
<p><em>error_data</em> is a void pointer to user-supplied data.</p>
-<div class="sourceCode"><pre class="sourceCode c"><code class="sourceCode c"><span class="kw">typedef</span> <span class="dt">void</span>
-(*TA_Error_Func)(TA_Error error,
- <span class="dt">const</span> <span class="dt">char</span>* error_string,
- <span class="dt">unsigned</span> <span class="dt">int</span> linenum,
- <span class="dt">const</span> <span class="dt">char</span>* line,
- <span class="dt">const</span> <span class="dt">char</span>* errpos,
- <span class="dt">void</span>* error_data);</code></pre></div>
+<div class="sourceCode" id="cb16"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a><span class="kw">typedef</span> <span class="dt">void</span></span>
+<span id="cb16-2"><a href="#cb16-2" aria-hidden="true" tabindex="-1"></a><span class="op">(*</span>TA_Error_Func<span class="op">)(</span>TA_Error error<span class="op">,</span></span>
+<span id="cb16-3"><a href="#cb16-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">const</span> <span class="dt">char</span><span class="op">*</span> error_string<span class="op">,</span></span>
+<span id="cb16-4"><a href="#cb16-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">unsigned</span> <span class="dt">int</span> linenum<span class="op">,</span></span>
+<span id="cb16-5"><a href="#cb16-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">const</span> <span class="dt">char</span><span class="op">*</span> line<span class="op">,</span></span>
+<span id="cb16-6"><a href="#cb16-6" aria-hidden="true" tabindex="-1"></a> <span class="dt">const</span> <span class="dt">char</span><span class="op">*</span> errpos<span class="op">,</span></span>
+<span id="cb16-7"><a href="#cb16-7" aria-hidden="true" tabindex="-1"></a> <span class="dt">void</span><span class="op">*</span> error_data<span class="op">);</span></span></code></pre></div>
<h2 id="callback-ta_info_func">Callback: <code>TA_Info_Func</code></h2>
<p>A callback function to access or modify strings in the <code>name</code> table; it is called in a loop that iterates over all <code>name</code> table entries. If defined, <a href="#callback-ta_info_post_func"><code>TA_Info_Post_Func</code></a> gets executed after this loop so that the collected data can be written back to the <code>name</code> table.</p>
<p><em>platform_id</em>, <em>encoding_id</em>, <em>language_id</em>, and <em>name_id</em> are the identifiers of a <code>name</code> table entry pointed to by <em>str</em> with a length pointed to by <em>str_len</em> (in bytes; the string has no trailing NULL byte). Please refer to the <a href="https://www.microsoft.com/typography/otspec/name.htm">OpenType specification of the <code>name</code> table</a> for a detailed description of the various parameters, in particular which encoding is used for a given platform and encoding ID.</p>
<p>The string <em>str</em> is allocated with the function specified by the <code>alloc-func</code> field of <a href="#function-ttf_autohint"><code>TTF_autohint</code></a>; the application should reallocate the data if necessary, ensuring that the string length doesn’t exceed 0xFFFF.</p>
<p><em>info_data</em> is a void pointer to user-supplied data.</p>
<p>If an error occurs, return a non-zero value and don’t modify <em>str</em> and <em>str_len</em> (such errors are handled as non-fatal).</p>
-<div class="sourceCode"><pre class="sourceCode c"><code class="sourceCode c"><span class="kw">typedef</span> <span class="dt">int</span>
-(*TA_Info_Func)(<span class="dt">unsigned</span> <span class="dt">short</span> platform_id,
- <span class="dt">unsigned</span> <span class="dt">short</span> encoding_id,
- <span class="dt">unsigned</span> <span class="dt">short</span> language_id,
- <span class="dt">unsigned</span> <span class="dt">short</span> name_id,
- <span class="dt">unsigned</span> <span class="dt">short</span>* str_len,
- <span class="dt">unsigned</span> <span class="dt">char</span>** str,
- <span class="dt">void</span>* info_data);</code></pre></div>
+<div class="sourceCode" id="cb17"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="kw">typedef</span> <span class="dt">int</span></span>
+<span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a><span class="op">(*</span>TA_Info_Func<span class="op">)(</span><span class="dt">unsigned</span> <span class="dt">short</span> platform_id<span class="op">,</span></span>
+<span id="cb17-3"><a href="#cb17-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">unsigned</span> <span class="dt">short</span> encoding_id<span class="op">,</span></span>
+<span id="cb17-4"><a href="#cb17-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">unsigned</span> <span class="dt">short</span> language_id<span class="op">,</span></span>
+<span id="cb17-5"><a href="#cb17-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">unsigned</span> <span class="dt">short</span> name_id<span class="op">,</span></span>
+<span id="cb17-6"><a href="#cb17-6" aria-hidden="true" tabindex="-1"></a> <span class="dt">unsigned</span> <span class="dt">short</span><span class="op">*</span> str_len<span class="op">,</span></span>
+<span id="cb17-7"><a href="#cb17-7" aria-hidden="true" tabindex="-1"></a> <span class="dt">unsigned</span> <span class="dt">char</span><span class="op">**</span> str<span class="op">,</span></span>
+<span id="cb17-8"><a href="#cb17-8" aria-hidden="true" tabindex="-1"></a> <span class="dt">void</span><span class="op">*</span> info_data<span class="op">);</span></span></code></pre></div>
<h2 id="callback-ta_info_post_func">Callback: <code>TA_Info_Post_Func</code></h2>
<p>A callback function, giving the application the possibility to access or modify strings in the <code>name</code> table after <a href="#callback-ta_info_func"><code>TA_Info_Func</code></a> has iterated over all <code>name</code> table entries.</p>
<p>It is expected that <code>TA_Info_Func</code> stores pointers to the <code>name</code> table entries it wants to access or modify; the only parameter is thus <em>info_data</em>, which is a void pointer to the user-supplied data already provided to <code>TA_Info_Func</code>. Obviously, calling <code>TA_Info_Post_Func</code> with <code>TA_Info_Func</code> undefined has no effect.</p>
<p>The <code>name</code> table strings are allocated with the function specified by the <code>alloc-func</code> field of <a href="#function-ttf_autohint"><code>TTF_autohint</code></a>; the application should reallocate the data if necessary, ensuring that no string length exceeds 0xFFFF.</p>
<p>If an error occurs, return a non-zero value and don’t modify the affected string and string length (such errors are handled as non-fatal).</p>
-<div class="sourceCode"><pre class="sourceCode c"><code class="sourceCode c"><span class="kw">typedef</span> <span class="dt">int</span>
-(*TA_Info_Post_Func)(<span class="dt">void</span>* info_data);</code></pre></div>
+<div class="sourceCode" id="cb18"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="kw">typedef</span> <span class="dt">int</span></span>
+<span id="cb18-2"><a href="#cb18-2" aria-hidden="true" tabindex="-1"></a><span class="op">(*</span>TA_Info_Post_Func<span class="op">)(</span><span class="dt">void</span><span class="op">*</span> info_data<span class="op">);</span></span></code></pre></div>
<h2 id="function-ttf_autohint">Function: <code>TTF_autohint</code></h2>
<p>Read a TrueType font, remove existing bytecode (in the SFNT tables <code>prep</code>, <code>fpgm</code>, <code>cvt</code>, and <code>glyf</code>), and write a new TrueType font with new bytecode based on the autohinting of the FreeType library, optionally using a reference font to derive blue zones.</p>
<p>It expects a format string <em>options</em> and a variable number of arguments, depending on the fields in <em>options</em>. The fields are comma separated; whitespace within the format string is not significant, a trailing comma is ignored. Fields are parsed from left to right; if a field occurs multiple times, the last field’s argument wins. The same is true for fields that are mutually exclusive. Depending on the field, zero or one argument is expected.</p>
@@ -3228,7 +3365,7 @@
<dd>An integer. For PPEM values in the range 6 &lt;= PPEM &lt;= <code>increase-x-height</code>, round up the font’s x height much more often than normally (to use the terminology of TrueType’s ‘Super Round’ bytecode instruction, the threshold gets increased from 5/8px to 13/16px). If it is set to 0, this feature is switched off. If this field is not set, it defaults to <a href="#preprocessor-macros-typedefs-and-enums"><code>TA_INCREASE_X_HEIGHT</code></a>. Use this flag to improve the legibility of small font sizes if necessary.
</dd>
<dt><code>x-height-snapping-exceptions</code></dt>
-<dd>A pointer of type <code>const char*</code> to a null-terminated string that gives a list of comma separated PPEM values or value ranges at which no x height snapping shall be applied. A value range has the form <em>value</em><sub>1</sub><code>-</code><em>value</em><sub>2</sub>, meaning <em>value</em><sub>1</sub> &lt;= PPEM &lt;= <em>value</em><sub>2</sub>. <em>value</em><sub>1</sub> or <em>value</em><sub>2</sub> (or both) can be missing; a missing value is replaced by the beginning or end of the whole interval of valid PPEM values, respectively. Whitespace is not significant; superfluous commas are ignored, and ranges must be specified in increasing order. For example, the string <code>&quot;3, 5-7, 9-&quot;</code> means the values 3, 5, 6, 7, 9, 10, 11, 12, etc. Consequently, if the supplied argument is <code>&quot;-&quot;</code>, no x height snapping takes place at all. The default is the empty string (<code>&quot;&quot;</code>), meaning no snapping exceptions.
+<dd>A pointer of type <code>const char*</code> to a null-terminated string that gives a list of comma separated PPEM values or value ranges at which no x height snapping shall be applied. A value range has the form <em>value</em><sub>1</sub><code>-</code><em>value</em><sub>2</sub>, meaning <em>value</em><sub>1</sub> &lt;= PPEM &lt;= <em>value</em><sub>2</sub>. <em>value</em><sub>1</sub> or <em>value</em><sub>2</sub> (or both) can be missing; a missing value is replaced by the beginning or end of the whole interval of valid PPEM values, respectively. Whitespace is not significant; superfluous commas are ignored, and ranges must be specified in increasing order. For example, the string <code>"3, 5-7, 9-"</code> means the values 3, 5, 6, 7, 9, 10, 11, 12, etc. Consequently, if the supplied argument is <code>"-"</code>, no x height snapping takes place at all. The default is the empty string (<code>""</code>), meaning no snapping exceptions.
</dd>
<dt><code>windows-compatibility</code></dt>
<dd>If this integer is set to 1, two artificial blue zones are used, positioned at the <code>usWinAscent</code> and <code>usWinDescent</code> values (from the font’s <code>OS/2</code> table). The idea is to help ttfautohint so that the hinted glyphs stay within this horizontal stripe since Windows clips everything falling outside. The default is 0.
@@ -3246,11 +3383,11 @@
<h3 id="scripts-1">Scripts</h3>
<dl>
<dt><code>default-script</code></dt>
-<dd>A string consisting of four lowercase characters that specifies the default script for OpenType features. After applying all features that are handled specially, use this value for the remaining features. The default value is <code>&quot;latn&quot;</code>; if set to <code>&quot;none&quot;</code>, no script is used. Valid values can be found in the header file <code>ttfautohint-scripts.h</code>.
+<dd>A string consisting of four lowercase characters that specifies the default script for OpenType features. After applying all features that are handled specially, use this value for the remaining features. The default value is <code>"latn"</code>; if set to <code>"none"</code>, no script is used. Valid values can be found in the header file <code>ttfautohint-scripts.h</code>.
</dd>
<dt><code>fallback-script</code></dt>
<dd><p>A string consisting of four lowercase characters, specifying the default script for glyphs that can’t be mapped to a script automatically. By default, such glyphs are hinted; if option <code>fallback-scaling</code> is set, they are scaled only instead. Valid values can be found in the header file <code>ttfautohint-scripts.h</code>.</p>
-<p>Default value is <code>&quot;none&quot;</code>, which means hinting without using a script’s blue zones if <code>fallback-scaling</code> isn’t set. If <code>fallback_scaling</code> is set, value <code>&quot;none&quot;</code> implies no hinting for unmapped glyphs.</p>
+<p>Default value is <code>"none"</code>, which means hinting without using a script’s blue zones if <code>fallback-scaling</code> isn’t set. If <code>fallback_scaling</code> is set, value <code>"none"</code> implies no hinting for unmapped glyphs.</p>
</dd>
<dt><code>fallback-scaling</code></dt>
<dd>Set this integer to 1 if glyphs handled by the fallback script should be scaled only with the fallback script’s scaling value, instead of being hinted with the fallback script’s hinting parameters.
@@ -3287,38 +3424,38 @@
<li><p><code>hinting-range-min</code> and <code>hinting-range-max</code> specify the range for which the autohinter generates optimized hinting code. If a PPEM value is smaller than the value of <code>hinting-range-min</code>, hinting still takes place but the configuration created for <code>hinting-range-min</code> is used. The analogous action is taken for <code>hinting-range-max</code>, only limited by the value given with <code>hinting-limit</code>. The font’s <code>gasp</code> table is set up to always use grayscale rendering with grid-fitting for standard hinting, and symmetric grid-fitting and symmetric smoothing for horizontal subpixel hinting (ClearType).</p></li>
<li><p>ttfautohint can process its own output a second time only if option <code>hint-composites</code> is not set (or if the font doesn’t contain composite glyphs at all). This limitation might change in the future.</p></li>
</ul>
-<div class="sourceCode"><pre class="sourceCode c"><code class="sourceCode c">TA_LIB_EXPORT TA_Error
-TTF_autohint(<span class="dt">const</span> <span class="dt">char</span>* options,
- ...);</code></pre></div>
+<div class="sourceCode" id="cb19"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a>TA_LIB_EXPORT TA_Error</span>
+<span id="cb19-2"><a href="#cb19-2" aria-hidden="true" tabindex="-1"></a>TTF_autohint<span class="op">(</span><span class="dt">const</span> <span class="dt">char</span><span class="op">*</span> options<span class="op">,</span></span>
+<span id="cb19-3"><a href="#cb19-3" aria-hidden="true" tabindex="-1"></a> <span class="op">...);</span></span></code></pre></div>
<h2 id="macros-ttfautohint_major-ttfautohint_minor-ttfautohint_revision">Macros: <code>TTFAUTOHINT_MAJOR</code>, <code>TTFAUTOHINT_MINOR</code>, <code>TTFAUTOHINT_REVISION</code></h2>
<p>These three macros give the major, minor, and revision number of the library, respectively. See function <a href="#function-ttf_autohint_version"><code>TTF_autohint_version</code></a> for more details.</p>
-<div class="sourceCode"><pre class="sourceCode c"><code class="sourceCode c"><span class="pp">#define TTFAUTOHINT_MAJOR 1</span>
-<span class="pp">#define TTFAUTOHINT_MINOR 8</span>
-<span class="pp">#define TTFAUTOHINT_REVISION 3</span></code></pre></div>
+<div class="sourceCode" id="cb20"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true" tabindex="-1"></a><span class="pp">#define TTFAUTOHINT_MAJOR %TTFAUTOHINT_MAJOR%</span></span>
+<span id="cb20-2"><a href="#cb20-2" aria-hidden="true" tabindex="-1"></a><span class="pp">#define TTFAUTOHINT_MINOR %TTFAUTOHINT_MINOR%</span></span>
+<span id="cb20-3"><a href="#cb20-3" aria-hidden="true" tabindex="-1"></a><span class="pp">#define TTFAUTOHINT_REVISION %TTFAUTOHINT_REVISION%</span></span></code></pre></div>
<h2 id="macro-ttfautohint_version">Macro: <code>TTFAUTOHINT_VERSION</code></h2>
<p>This macro holds the ttfautohint version string.</p>
<p>For tarball releases it has the form <em>X</em>.<em>Y</em>[.<em>Z</em>], with <em>X</em>, <em>Y</em>, and <em>Z</em> the major, minor, and revision numbers, respectively. If the revision number is zero, it is omitted. Examples: <code>2.7</code>, <code>2.7.1</code>.</p>
<p>If compiling directly from the git repository, ttfautohint’s bootstrap script derives the version number from the <code>git describe</code> output, appending the number of commits after a tag together with a shortened commit ID. Example: <code>2.7.1.23-379b</code>.</p>
<p>See function <a href="#function-ttf_autohint_version"><code>TTF_autohint_version</code></a> for more details.</p>
-<div class="sourceCode"><pre class="sourceCode c"><code class="sourceCode c"><span class="pp">#define TTFAUTOHINT_VERSION &quot;1.8.3&quot;</span></code></pre></div>
+<div class="sourceCode" id="cb21"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a><span class="pp">#define TTFAUTOHINT_VERSION &quot;%TTFAUTOHINT_VERSION%&quot;</span></span></code></pre></div>
<h2 id="function-ttf_autohint_version">Function: <code>TTF_autohint_version</code></h2>
<p>Return the ttfautohint version triplet. This function is useful when dynamically linking to the library, since the macros <code>TTFAUTOHINT_MAJOR</code>, <code>TTFAUTOHINT_MINOR</code>, and <code>TTFAUTOHINT_PATCH</code> cannot be used in that case.</p>
<p>The returned integer triplet is <em>not</em> the same as the shared library’s version triplet (which the dynamic linker uses to resolve runtime dependencies). For example, hypothetical ttfautohint versions 2.27 and 2.27.1 might both correspond to shared library version 1.0.38 in case there are only, say, documentation or packaging differences that don’t affect the library code.</p>
<p>If the pkg-config configuration file <code>ttfautohint.pc</code> is installed in a place that pkg-config can find, a call to</p>
<pre><code> pkg-config ttfautohint --modversion</code></pre>
<p>returns the shared library version.</p>
-<div class="sourceCode"><pre class="sourceCode c"><code class="sourceCode c">TA_LIB_EXPORT <span class="dt">void</span>
-TTF_autohint_version(<span class="dt">int</span> *major,
- <span class="dt">int</span> *minor,
- <span class="dt">int</span> *revision);</code></pre></div>
+<div class="sourceCode" id="cb23"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a>TA_LIB_EXPORT <span class="dt">void</span></span>
+<span id="cb23-2"><a href="#cb23-2" aria-hidden="true" tabindex="-1"></a>TTF_autohint_version<span class="op">(</span><span class="dt">int</span> <span class="op">*</span>major<span class="op">,</span></span>
+<span id="cb23-3"><a href="#cb23-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> <span class="op">*</span>minor<span class="op">,</span></span>
+<span id="cb23-4"><a href="#cb23-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> <span class="op">*</span>revision<span class="op">);</span></span></code></pre></div>
<h2 id="function-ttf_autohint_version_string">Function: <code>TTF_autohint_version_string</code></h2>
<p>Return the ttfautohint version string. This function is useful when dynamically linking to the library, since the macro <code>TTFAUTOHINT_VERSION</code> cannot be used in that case.</p>
-<div class="sourceCode"><pre class="sourceCode c"><code class="sourceCode c">TA_LIB_EXPORT <span class="dt">const</span> <span class="dt">char</span>*
-TTF_autohint_version_string(<span class="dt">void</span>);</code></pre></div>
+<div class="sourceCode" id="cb24"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb24-1"><a href="#cb24-1" aria-hidden="true" tabindex="-1"></a>TA_LIB_EXPORT <span class="dt">const</span> <span class="dt">char</span><span class="op">*</span></span>
+<span id="cb24-2"><a href="#cb24-2" aria-hidden="true" tabindex="-1"></a>TTF_autohint_version_string<span class="op">(</span><span class="dt">void</span><span class="op">);</span></span></code></pre></div>
<h1 id="compilation-and-installation">Compilation and Installation</h1>
<p>Please read the files <a href="https://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;f=doc/INSTALL;hb=HEAD"><code>INSTALL</code></a> and <a href="https://repo.or.cz/w/ttfautohint.git/blob_plain/HEAD:/INSTALL.git"><code>INSTALL.git</code></a> (both part of the source code bundle) for instructions how to compile the ttfautohint library together with its front-ends using a POSIX compatible shell and compiler.</p>
<h2 id="unix-like-platforms">Unix-like Platforms</h2>
-<p>The generic instructions should work just fine. Since ttfautohint depends on <a href="https://qt.io">Qt</a> version 4 or newer, <a href="https://freetype.org">FreeType</a> version 2.4.5 or newer, and <a href="http://harfbuzz.org">HarfBuzz</a> version 1.3.0 or newer, you should install packages for these libraries (called ‘libqt4’ or similar, ‘libfreetype6’<a href="#fn4" class="footnoteRef" id="fnref4"><sup>4</sup></a>, and ‘libharfbuzz0’ or similar) together with its development bundles (called ‘libqt4-devel’, ‘freetype2-devel’, and ‘harfbuzz-devel’ or similar) before running ttfautohint’s <code>configure</code> script.</p>
+<p>The generic instructions should work just fine. Since ttfautohint depends on <a href="https://qt.io">Qt</a> version 4 or newer, <a href="https://freetype.org">FreeType</a> version 2.4.5 or newer, and <a href="http://harfbuzz.org">HarfBuzz</a> version 1.3.0 or newer, you should install packages for these libraries (called ‘libqt4’ or similar, ‘libfreetype6’<a href="#fn4" class="footnote-ref" id="fnref4" role="doc-noteref"><sup>4</sup></a>, and ‘libharfbuzz0’ or similar) together with its development bundles (called ‘libqt4-devel’, ‘freetype2-devel’, and ‘harfbuzz-devel’ or similar) before running ttfautohint’s <code>configure</code> script.</p>
<h2 id="ms-windows">MS Windows</h2>
<p>Precompiled binaries <code>ttfautohint.exe</code> and <code>ttfautohintGUI.exe</code> are available, being statically linked to <a href="https://qt.io">Qt</a>, <a href="https://freetype.org">FreeType</a>, and <a href="http://harfbuzz.org">HarfBuzz</a>. This means that the two programs are not dependent on any other program-specific DLL, and you can move them to any place you like.</p>
<p>Hints for compilation with the <a href="http://mingw.org">MinGW</a> environment are given in <code>INSTALL.git</code>.</p>
@@ -3326,7 +3463,7 @@ TTF_autohint_version_string(<span class="dt">void</span>);</code></pre></div>
<p>Right now, only a precompiled binary <code>ttfautohint</code> is offered; a ready-to-run app bundle for the GUI version is not yet available; however, ttfautohint is part of <a href="https://brew.sh">Homebrew</a>, making compilation and installation very simple.</p>
<p>Detailed instructions to compile both <code>ttfautohint</code> and <code>ttfautohintGUI</code> can be found on <a href="https://freetype.org/ttfautohint/osx.html">ttfautohint’s homepage</a>.</p>
<h1 id="authors">Authors</h1>
-<p>Copyright © 2011-2019 by <a href="mailto:wl@gnu.org">Werner Lemberg</a>.<br />
+<p>Copyright © 2011-2021 by <a href="mailto:wl@gnu.org">Werner Lemberg</a>.<br />
Portions Copyright © 2011-2017 by <a href="mailto:dave@understandingfonts.com">Dave Crossland</a>.<br />
Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</a>.</p>
<p>This file is part of the ttfautohint library, and may only be used, modified, and distributed under the terms given in <a href="https://repo.or.cz/w/ttfautohint.git/blob_plain/HEAD:/COPYING"><code>COPYING</code></a>. By continuing to use, modify, or distribute this file you indicate that you have read <code>COPYING</code> and understand and accept it fully.</p>
@@ -3337,14 +3474,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>adlm</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x1E900</code> - <code>0x1E95F</code></td>
-<td align="left">Adlam</td>
+<td style="text-align: center;"><code>0x1E900</code> - <code>0x1E95F</code></td>
+<td style="text-align: left;">Adlam</td>
</tr>
</tbody>
</table>
@@ -3352,12 +3489,12 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>adlm</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x1D944</code> - <code>0x1E94A</code></td>
+<td style="text-align: center;"><code>0x1D944</code> - <code>0x1E94A</code></td>
</tr>
</tbody>
</table>
@@ -3365,34 +3502,34 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>arab</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0600</code> - <code>0x06FF</code></td>
-<td align="left">Arabic</td>
+<td style="text-align: center;"><code>0x0600</code> - <code>0x06FF</code></td>
+<td style="text-align: left;">Arabic</td>
</tr>
<tr class="even">
-<td align="center"><code>0x0750</code> - <code>0x07FF</code></td>
-<td align="left">Arabic Supplement</td>
+<td style="text-align: center;"><code>0x0750</code> - <code>0x07FF</code></td>
+<td style="text-align: left;">Arabic Supplement</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x08A0</code> - <code>0x08FF</code></td>
-<td align="left">Arabic Extended-A</td>
+<td style="text-align: center;"><code>0x08A0</code> - <code>0x08FF</code></td>
+<td style="text-align: left;">Arabic Extended-A</td>
</tr>
<tr class="even">
-<td align="center"><code>0xFB50</code> - <code>0xFDFF</code></td>
-<td align="left">Arabic Presentation Forms-A</td>
+<td style="text-align: center;"><code>0xFB50</code> - <code>0xFDFF</code></td>
+<td style="text-align: left;">Arabic Presentation Forms-A</td>
</tr>
<tr class="odd">
-<td align="center"><code>0xFE70</code> - <code>0xFEFF</code></td>
-<td align="left">Arabic Presentation Forms-B</td>
+<td style="text-align: center;"><code>0xFE70</code> - <code>0xFEFF</code></td>
+<td style="text-align: left;">Arabic Presentation Forms-B</td>
</tr>
<tr class="even">
-<td align="center"><code>0x1EE00</code> - <code>0x1EEFF</code></td>
-<td align="left">Arabic Mathematical Alphabetic Symbols</td>
+<td style="text-align: center;"><code>0x1EE00</code> - <code>0x1EEFF</code></td>
+<td style="text-align: left;">Arabic Mathematical Alphabetic Symbols</td>
</tr>
</tbody>
</table>
@@ -3400,63 +3537,63 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>arab</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0600</code> - <code>0x0605</code></td>
+<td style="text-align: center;"><code>0x0600</code> - <code>0x0605</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0610</code> - <code>0x061A</code></td>
+<td style="text-align: center;"><code>0x0610</code> - <code>0x061A</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x064B</code> - <code>0x065F</code></td>
+<td style="text-align: center;"><code>0x064B</code> - <code>0x065F</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0670</code> - <code>0x0670</code></td>
+<td style="text-align: center;"><code>0x0670</code> - <code>0x0670</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x06D6</code> - <code>0x06DC</code></td>
+<td style="text-align: center;"><code>0x06D6</code> - <code>0x06DC</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x06DF</code> - <code>0x06E4</code></td>
+<td style="text-align: center;"><code>0x06DF</code> - <code>0x06E4</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x06E7</code> - <code>0x06E8</code></td>
+<td style="text-align: center;"><code>0x06E7</code> - <code>0x06E8</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x06EA</code> - <code>0x06ED</code></td>
+<td style="text-align: center;"><code>0x06EA</code> - <code>0x06ED</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x08D3</code> - <code>0x08FF</code></td>
+<td style="text-align: center;"><code>0x08D3</code> - <code>0x08FF</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0xFBB2</code> - <code>0xFBC1</code></td>
+<td style="text-align: center;"><code>0xFBB2</code> - <code>0xFBC1</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0xFE70</code> - <code>0xFE70</code></td>
+<td style="text-align: center;"><code>0xFE70</code> - <code>0xFE70</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0xFE72</code> - <code>0xFE72</code></td>
+<td style="text-align: center;"><code>0xFE72</code> - <code>0xFE72</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0xFE74</code> - <code>0xFE74</code></td>
+<td style="text-align: center;"><code>0xFE74</code> - <code>0xFE74</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0xFE76</code> - <code>0xFE76</code></td>
+<td style="text-align: center;"><code>0xFE76</code> - <code>0xFE76</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0xFE78</code> - <code>0xFE78</code></td>
+<td style="text-align: center;"><code>0xFE78</code> - <code>0xFE78</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0xFE7A</code> - <code>0xFE7A</code></td>
+<td style="text-align: center;"><code>0xFE7A</code> - <code>0xFE7A</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0xFE7C</code> - <code>0xFE7C</code></td>
+<td style="text-align: center;"><code>0xFE7C</code> - <code>0xFE7C</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0xFE7E</code> - <code>0xFE7E</code></td>
+<td style="text-align: center;"><code>0xFE7E</code> - <code>0xFE7E</code></td>
</tr>
</tbody>
</table>
@@ -3464,18 +3601,18 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>armn</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0530</code> - <code>0x058F</code></td>
-<td align="left">Armenian</td>
+<td style="text-align: center;"><code>0x0530</code> - <code>0x058F</code></td>
+<td style="text-align: left;">Armenian</td>
</tr>
<tr class="even">
-<td align="center"><code>0xFB13</code> - <code>0xFB17</code></td>
-<td align="left">Alphab. Present. Forms (Armenian)</td>
+<td style="text-align: center;"><code>0xFB13</code> - <code>0xFB17</code></td>
+<td style="text-align: left;">Alphab. Present. Forms (Armenian)</td>
</tr>
</tbody>
</table>
@@ -3483,12 +3620,12 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>armn</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0559</code> - <code>0x055F</code></td>
+<td style="text-align: center;"><code>0x0559</code> - <code>0x055F</code></td>
</tr>
</tbody>
</table>
@@ -3496,14 +3633,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>avst</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x10B00</code> - <code>0x10B3F</code></td>
-<td align="left">Avestan</td>
+<td style="text-align: center;"><code>0x10B00</code> - <code>0x10B3F</code></td>
+<td style="text-align: left;">Avestan</td>
</tr>
</tbody>
</table>
@@ -3511,12 +3648,12 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>avst</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x10B39</code> - <code>0x10B3F</code></td>
+<td style="text-align: center;"><code>0x10B39</code> - <code>0x10B3F</code></td>
</tr>
</tbody>
</table>
@@ -3524,14 +3661,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>bamu</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0xA6A0</code> - <code>0xA6FF</code></td>
-<td align="left">Bamum</td>
+<td style="text-align: center;"><code>0xA6A0</code> - <code>0xA6FF</code></td>
+<td style="text-align: left;">Bamum</td>
</tr>
</tbody>
</table>
@@ -3539,12 +3676,12 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>bamu</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0xA6F0</code> - <code>0xA6F1</code></td>
+<td style="text-align: center;"><code>0xA6F0</code> - <code>0xA6F1</code></td>
</tr>
</tbody>
</table>
@@ -3552,14 +3689,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>beng</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0980</code> - <code>0x09FF</code></td>
-<td align="left">Bengali</td>
+<td style="text-align: center;"><code>0x0980</code> - <code>0x09FF</code></td>
+<td style="text-align: left;">Bengali</td>
</tr>
</tbody>
</table>
@@ -3567,27 +3704,27 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>beng</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0981</code> - <code>0x0981</code></td>
+<td style="text-align: center;"><code>0x0981</code> - <code>0x0981</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x09BC</code> - <code>0x09BC</code></td>
+<td style="text-align: center;"><code>0x09BC</code> - <code>0x09BC</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x09C1</code> - <code>0x09C4</code></td>
+<td style="text-align: center;"><code>0x09C1</code> - <code>0x09C4</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x09CD</code> - <code>0x09CD</code></td>
+<td style="text-align: center;"><code>0x09CD</code> - <code>0x09CD</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x09E2</code> - <code>0x09E3</code></td>
+<td style="text-align: center;"><code>0x09E2</code> - <code>0x09E3</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x09FE</code> - <code>0x09FE</code></td>
+<td style="text-align: center;"><code>0x09FE</code> - <code>0x09FE</code></td>
</tr>
</tbody>
</table>
@@ -3595,14 +3732,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>buhd</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x1740</code> - <code>0x175F</code></td>
-<td align="left">Buhid</td>
+<td style="text-align: center;"><code>0x1740</code> - <code>0x175F</code></td>
+<td style="text-align: left;">Buhid</td>
</tr>
</tbody>
</table>
@@ -3610,12 +3747,12 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>buhd</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x1752</code> - <code>0x1753</code></td>
+<td style="text-align: center;"><code>0x1752</code> - <code>0x1753</code></td>
</tr>
</tbody>
</table>
@@ -3623,14 +3760,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>cakm</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x11100</code> - <code>0x1114F</code></td>
-<td align="left">Chakma</td>
+<td style="text-align: center;"><code>0x11100</code> - <code>0x1114F</code></td>
+<td style="text-align: left;">Chakma</td>
</tr>
</tbody>
</table>
@@ -3638,18 +3775,18 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>cakm</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x11100</code> - <code>0x11102</code></td>
+<td style="text-align: center;"><code>0x11100</code> - <code>0x11102</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x11127</code> - <code>0x11134</code></td>
+<td style="text-align: center;"><code>0x11127</code> - <code>0x11134</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x11146</code> - <code>0x11146</code></td>
+<td style="text-align: center;"><code>0x11146</code> - <code>0x11146</code></td>
</tr>
</tbody>
</table>
@@ -3657,18 +3794,18 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>cans</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x1400</code> - <code>0x167F</code></td>
-<td align="left">Unified Canadian Aboriginal Syllabics</td>
+<td style="text-align: center;"><code>0x1400</code> - <code>0x167F</code></td>
+<td style="text-align: left;">Unified Canadian Aboriginal Syllabics</td>
</tr>
<tr class="even">
-<td align="center"><code>0x18B0</code> - <code>0x18FF</code></td>
-<td align="left">Unified Canadian Aboriginal Syllabics Extended</td>
+<td style="text-align: center;"><code>0x18B0</code> - <code>0x18FF</code></td>
+<td style="text-align: left;">Unified Canadian Aboriginal Syllabics Extended</td>
</tr>
</tbody>
</table>
@@ -3676,14 +3813,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>cari</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x102A0</code> - <code>0x102DF</code></td>
-<td align="left">Carian</td>
+<td style="text-align: center;"><code>0x102A0</code> - <code>0x102DF</code></td>
+<td style="text-align: left;">Carian</td>
</tr>
</tbody>
</table>
@@ -3691,18 +3828,18 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>cher</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x13A0</code> - <code>0x13FF</code></td>
-<td align="left">Cherokee</td>
+<td style="text-align: center;"><code>0x13A0</code> - <code>0x13FF</code></td>
+<td style="text-align: left;">Cherokee</td>
</tr>
<tr class="even">
-<td align="center"><code>0xAB70</code> - <code>0xABBF</code></td>
-<td align="left">Cherokee Supplement</td>
+<td style="text-align: center;"><code>0xAB70</code> - <code>0xABBF</code></td>
+<td style="text-align: left;">Cherokee Supplement</td>
</tr>
</tbody>
</table>
@@ -3710,14 +3847,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>copt</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x2C80</code> - <code>0x2CFF</code></td>
-<td align="left">Coptic</td>
+<td style="text-align: center;"><code>0x2C80</code> - <code>0x2CFF</code></td>
+<td style="text-align: left;">Coptic</td>
</tr>
</tbody>
</table>
@@ -3725,12 +3862,12 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>copt</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x2CEF</code> - <code>0x2CF1</code></td>
+<td style="text-align: center;"><code>0x2CEF</code> - <code>0x2CF1</code></td>
</tr>
</tbody>
</table>
@@ -3738,14 +3875,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>cprt</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x10800</code> - <code>0x1083F</code></td>
-<td align="left">Cypriot</td>
+<td style="text-align: center;"><code>0x10800</code> - <code>0x1083F</code></td>
+<td style="text-align: left;">Cypriot</td>
</tr>
</tbody>
</table>
@@ -3753,26 +3890,26 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>cyrl</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0400</code> - <code>0x04FF</code></td>
-<td align="left">Cyrillic</td>
+<td style="text-align: center;"><code>0x0400</code> - <code>0x04FF</code></td>
+<td style="text-align: left;">Cyrillic</td>
</tr>
<tr class="even">
-<td align="center"><code>0x0500</code> - <code>0x052F</code></td>
-<td align="left">Cyrillic Supplement</td>
+<td style="text-align: center;"><code>0x0500</code> - <code>0x052F</code></td>
+<td style="text-align: left;">Cyrillic Supplement</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x2DE0</code> - <code>0x2DFF</code></td>
-<td align="left">Cyrillic Extended-A</td>
+<td style="text-align: center;"><code>0x2DE0</code> - <code>0x2DFF</code></td>
+<td style="text-align: left;">Cyrillic Extended-A</td>
</tr>
<tr class="even">
-<td align="center"><code>0xA640</code> - <code>0xA69F</code></td>
-<td align="left">Cyrillic Extended-B</td>
+<td style="text-align: center;"><code>0xA640</code> - <code>0xA69F</code></td>
+<td style="text-align: left;">Cyrillic Extended-B</td>
</tr>
</tbody>
</table>
@@ -3780,21 +3917,21 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>cyrl</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0483</code> - <code>0x0489</code></td>
+<td style="text-align: center;"><code>0x0483</code> - <code>0x0489</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x2DE0</code> - <code>0x2DFF</code></td>
+<td style="text-align: center;"><code>0x2DE0</code> - <code>0x2DFF</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0xA66F</code> - <code>0xA67F</code></td>
+<td style="text-align: center;"><code>0xA66F</code> - <code>0xA67F</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0xA69E</code> - <code>0xA69F</code></td>
+<td style="text-align: center;"><code>0xA69E</code> - <code>0xA69F</code></td>
</tr>
</tbody>
</table>
@@ -3803,34 +3940,34 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>deva</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0900</code> - <code>0x093B</code></td>
-<td align="left">Devanagari</td>
+<td style="text-align: center;"><code>0x0900</code> - <code>0x093B</code></td>
+<td style="text-align: left;">Devanagari</td>
</tr>
<tr class="even">
-<td align="center"><code>0x093D</code> - <code>0x0950</code></td>
-<td align="left">… continued</td>
+<td style="text-align: center;"><code>0x093D</code> - <code>0x0950</code></td>
+<td style="text-align: left;">… continued</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0953</code> - <code>0x0963</code></td>
-<td align="left">… continued</td>
+<td style="text-align: center;"><code>0x0953</code> - <code>0x0963</code></td>
+<td style="text-align: left;">… continued</td>
</tr>
<tr class="even">
-<td align="center"><code>0x0966</code> - <code>0x097F</code></td>
-<td align="left">… continued</td>
+<td style="text-align: center;"><code>0x0966</code> - <code>0x097F</code></td>
+<td style="text-align: left;">… continued</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x20B9</code> - <code>0x20B9</code></td>
-<td align="left">(new) Rupee sign</td>
+<td style="text-align: center;"><code>0x20B9</code> - <code>0x20B9</code></td>
+<td style="text-align: left;">(new) Rupee sign</td>
</tr>
<tr class="even">
-<td align="center"><code>0xA8E0</code> - <code>0xA8FF</code></td>
-<td align="left">Devanagari Extended</td>
+<td style="text-align: center;"><code>0xA8E0</code> - <code>0xA8FF</code></td>
+<td style="text-align: left;">Devanagari Extended</td>
</tr>
</tbody>
</table>
@@ -3838,33 +3975,33 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>deva</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0900</code> - <code>0x0902</code></td>
+<td style="text-align: center;"><code>0x0900</code> - <code>0x0902</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x093A</code> - <code>0x093A</code></td>
+<td style="text-align: center;"><code>0x093A</code> - <code>0x093A</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0941</code> - <code>0x0948</code></td>
+<td style="text-align: center;"><code>0x0941</code> - <code>0x0948</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x094D</code> - <code>0x094D</code></td>
+<td style="text-align: center;"><code>0x094D</code> - <code>0x094D</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0953</code> - <code>0x0957</code></td>
+<td style="text-align: center;"><code>0x0953</code> - <code>0x0957</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0962</code> - <code>0x0963</code></td>
+<td style="text-align: center;"><code>0x0962</code> - <code>0x0963</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0xA8E0</code> - <code>0xA8F1</code></td>
+<td style="text-align: center;"><code>0xA8E0</code> - <code>0xA8F1</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0xA8FF</code> - <code>0xA8FF</code></td>
+<td style="text-align: center;"><code>0xA8FF</code> - <code>0xA8FF</code></td>
</tr>
</tbody>
</table>
@@ -3872,14 +4009,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>dsrt</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x10400</code> - <code>0x1044F</code></td>
-<td align="left">Deseret</td>
+<td style="text-align: center;"><code>0x10400</code> - <code>0x1044F</code></td>
+<td style="text-align: left;">Deseret</td>
</tr>
</tbody>
</table>
@@ -3887,26 +4024,26 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>ethi</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x1200</code> - <code>0x137F</code></td>
-<td align="left">Ethiopic</td>
+<td style="text-align: center;"><code>0x1200</code> - <code>0x137F</code></td>
+<td style="text-align: left;">Ethiopic</td>
</tr>
<tr class="even">
-<td align="center"><code>0x1380</code> - <code>0x139F</code></td>
-<td align="left">Ethiopic Supplement</td>
+<td style="text-align: center;"><code>0x1380</code> - <code>0x139F</code></td>
+<td style="text-align: left;">Ethiopic Supplement</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x2D80</code> - <code>0x2DDF</code></td>
-<td align="left">Ethiopic Extended</td>
+<td style="text-align: center;"><code>0x2D80</code> - <code>0x2DDF</code></td>
+<td style="text-align: left;">Ethiopic Extended</td>
</tr>
<tr class="even">
-<td align="center"><code>0xAB00</code> - <code>0xAB2F</code></td>
-<td align="left">Ethiopic Extended-A</td>
+<td style="text-align: center;"><code>0xAB00</code> - <code>0xAB2F</code></td>
+<td style="text-align: left;">Ethiopic Extended-A</td>
</tr>
</tbody>
</table>
@@ -3914,12 +4051,12 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>ethi</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x135D</code> - <code>0x135F</code></td>
+<td style="text-align: center;"><code>0x135D</code> - <code>0x135F</code></td>
</tr>
</tbody>
</table>
@@ -3927,18 +4064,18 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>geor</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x10D0</code> - <code>0x10FF</code></td>
-<td align="left">Georgian (Mkhedruli)</td>
+<td style="text-align: center;"><code>0x10D0</code> - <code>0x10FF</code></td>
+<td style="text-align: left;">Georgian (Mkhedruli)</td>
</tr>
<tr class="even">
-<td align="center"><code>0x1C90</code> - <code>0x1CBF</code></td>
-<td align="left">Georgian Extended (Mtavruli)</td>
+<td style="text-align: center;"><code>0x1C90</code> - <code>0x1CBF</code></td>
+<td style="text-align: left;">Georgian Extended (Mtavruli)</td>
</tr>
</tbody>
</table>
@@ -3946,18 +4083,18 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>geok</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x10A0</code> - <code>0x10CD</code></td>
-<td align="left">Georgian (Asomtavruli)</td>
+<td style="text-align: center;"><code>0x10A0</code> - <code>0x10CD</code></td>
+<td style="text-align: left;">Georgian (Asomtavruli)</td>
</tr>
<tr class="even">
-<td align="center"><code>0x2D00</code> - <code>0x2D2D</code></td>
-<td align="left">Georgian Supplement (Nuskhuri)</td>
+<td style="text-align: center;"><code>0x2D00</code> - <code>0x2D2D</code></td>
+<td style="text-align: left;">Georgian Supplement (Nuskhuri)</td>
</tr>
</tbody>
</table>
@@ -3965,18 +4102,18 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>glag</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x2C00</code> - <code>0x2C5F</code></td>
-<td align="left">Glagolitic</td>
+<td style="text-align: center;"><code>0x2C00</code> - <code>0x2C5F</code></td>
+<td style="text-align: left;">Glagolitic</td>
</tr>
<tr class="even">
-<td align="center"><code>0x1E000</code> - <code>0x1E02F</code></td>
-<td align="left">Glagolitic Supplement</td>
+<td style="text-align: center;"><code>0x1E000</code> - <code>0x1E02F</code></td>
+<td style="text-align: left;">Glagolitic Supplement</td>
</tr>
</tbody>
</table>
@@ -3984,12 +4121,12 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>glag</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x1E000</code> - <code>0x1E02F</code></td>
+<td style="text-align: center;"><code>0x1E000</code> - <code>0x1E02F</code></td>
</tr>
</tbody>
</table>
@@ -3997,14 +4134,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>goth</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x10330</code> - <code>0x1034F</code></td>
-<td align="left">Gothic</td>
+<td style="text-align: center;"><code>0x10330</code> - <code>0x1034F</code></td>
+<td style="text-align: left;">Gothic</td>
</tr>
</tbody>
</table>
@@ -4012,18 +4149,18 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>grek</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0370</code> - <code>0x03FF</code></td>
-<td align="left">Greek and Coptic</td>
+<td style="text-align: center;"><code>0x0370</code> - <code>0x03FF</code></td>
+<td style="text-align: left;">Greek and Coptic</td>
</tr>
<tr class="even">
-<td align="center"><code>0x1F00</code> - <code>0x1FFF</code></td>
-<td align="left">Greek Extended</td>
+<td style="text-align: center;"><code>0x1F00</code> - <code>0x1FFF</code></td>
+<td style="text-align: left;">Greek Extended</td>
</tr>
</tbody>
</table>
@@ -4031,30 +4168,30 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>grek</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x037A</code> - <code>0x037A</code></td>
+<td style="text-align: center;"><code>0x037A</code> - <code>0x037A</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0384</code> - <code>0x0385</code></td>
+<td style="text-align: center;"><code>0x0384</code> - <code>0x0385</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x1FBD</code> - <code>0x1FC1</code></td>
+<td style="text-align: center;"><code>0x1FBD</code> - <code>0x1FC1</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x1FCD</code> - <code>0x1FCF</code></td>
+<td style="text-align: center;"><code>0x1FCD</code> - <code>0x1FCF</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x1FDD</code> - <code>0x1FDF</code></td>
+<td style="text-align: center;"><code>0x1FDD</code> - <code>0x1FDF</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x1FED</code> - <code>0x1FEF</code></td>
+<td style="text-align: center;"><code>0x1FED</code> - <code>0x1FEF</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x1FFD</code> - <code>0x1FFE</code></td>
+<td style="text-align: center;"><code>0x1FFD</code> - <code>0x1FFE</code></td>
</tr>
</tbody>
</table>
@@ -4062,14 +4199,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>gujr</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0A80</code> - <code>0x0AFF</code></td>
-<td align="left">Gujarati</td>
+<td style="text-align: center;"><code>0x0A80</code> - <code>0x0AFF</code></td>
+<td style="text-align: left;">Gujarati</td>
</tr>
</tbody>
</table>
@@ -4077,27 +4214,27 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>gujr</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0A81</code> - <code>0x0A82</code></td>
+<td style="text-align: center;"><code>0x0A81</code> - <code>0x0A82</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0ABC</code> - <code>0x0ABC</code></td>
+<td style="text-align: center;"><code>0x0ABC</code> - <code>0x0ABC</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0AC1</code> - <code>0x0AC8</code></td>
+<td style="text-align: center;"><code>0x0AC1</code> - <code>0x0AC8</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0ACD</code> - <code>0x0ACD</code></td>
+<td style="text-align: center;"><code>0x0ACD</code> - <code>0x0ACD</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0AE2</code> - <code>0x0AE3</code></td>
+<td style="text-align: center;"><code>0x0AE2</code> - <code>0x0AE3</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0AFA</code> - <code>0x0AFF</code></td>
+<td style="text-align: center;"><code>0x0AFA</code> - <code>0x0AFF</code></td>
</tr>
</tbody>
</table>
@@ -4105,14 +4242,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>guru</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0A00</code> - <code>0x0A7F</code></td>
-<td align="left">Gurmukhi</td>
+<td style="text-align: center;"><code>0x0A00</code> - <code>0x0A7F</code></td>
+<td style="text-align: left;">Gurmukhi</td>
</tr>
</tbody>
</table>
@@ -4120,24 +4257,24 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>guru</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0A01</code> - <code>0x0A02</code></td>
+<td style="text-align: center;"><code>0x0A01</code> - <code>0x0A02</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0A3C</code> - <code>0x0A3C</code></td>
+<td style="text-align: center;"><code>0x0A3C</code> - <code>0x0A3C</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0A41</code> - <code>0x0A51</code></td>
+<td style="text-align: center;"><code>0x0A41</code> - <code>0x0A51</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0A70</code> - <code>0x0A71</code></td>
+<td style="text-align: center;"><code>0x0A70</code> - <code>0x0A71</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0A75</code> - <code>0x0A75</code></td>
+<td style="text-align: center;"><code>0x0A75</code> - <code>0x0A75</code></td>
</tr>
</tbody>
</table>
@@ -4145,18 +4282,18 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>hebr</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0590</code> - <code>0x05FF</code></td>
-<td align="left">Hebrew</td>
+<td style="text-align: center;"><code>0x0590</code> - <code>0x05FF</code></td>
+<td style="text-align: left;">Hebrew</td>
</tr>
<tr class="even">
-<td align="center"><code>0xFB1D</code> - <code>0xFB4F</code></td>
-<td align="left">Alphab. Present. Forms (Hebrew)</td>
+<td style="text-align: center;"><code>0xFB1D</code> - <code>0xFB4F</code></td>
+<td style="text-align: left;">Alphab. Present. Forms (Hebrew)</td>
</tr>
</tbody>
</table>
@@ -4164,24 +4301,52 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>hebr</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0591</code> - <code>0x05BF</code></td>
+<td style="text-align: center;"><code>0x0591</code> - <code>0x05BF</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x05C1</code> - <code>0x05C2</code></td>
+<td style="text-align: center;"><code>0x05C1</code> - <code>0x05C2</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x05C4</code> - <code>0x05C5</code></td>
+<td style="text-align: center;"><code>0x05C4</code> - <code>0x05C5</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x05C7</code> - <code>0x05C7</code></td>
+<td style="text-align: center;"><code>0x05C7</code> - <code>0x05C7</code></td>
+</tr>
+<tr class="odd">
+<td style="text-align: center;"><code>0xFB1E</code> - <code>0xFB1E</code></td>
+</tr>
+</tbody>
+</table>
+<table>
+<caption><code>hmnp</code> base characters</caption>
+<thead>
+<tr class="header">
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
+</thead>
+<tbody>
<tr class="odd">
-<td align="center"><code>0xFB1E</code> - <code>0xFB1E</code></td>
+<td style="text-align: center;"><code>0x1E100</code> - <code>0x1E14F</code></td>
+<td style="text-align: left;">Nyiakeng Puachue Hmong</td>
+</tr>
+</tbody>
+</table>
+<table>
+<caption><code>hmnp</code> non-base characters</caption>
+<thead>
+<tr class="header">
+<th style="text-align: center;">Character range</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: center;"><code>0x1E130</code> - <code>0x1E13B</code></td>
</tr>
</tbody>
</table>
@@ -4189,14 +4354,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>kali</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0xA900</code> - <code>0xA92F</code></td>
-<td align="left">Kayah Li</td>
+<td style="text-align: center;"><code>0xA900</code> - <code>0xA92F</code></td>
+<td style="text-align: left;">Kayah Li</td>
</tr>
</tbody>
</table>
@@ -4204,12 +4369,12 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>kali</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0xA926</code> - <code>0xA92D</code></td>
+<td style="text-align: center;"><code>0xA926</code> - <code>0xA92D</code></td>
</tr>
</tbody>
</table>
@@ -4217,14 +4382,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>knda</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0C80</code> - <code>0x0CFF</code></td>
-<td align="left">Kannada</td>
+<td style="text-align: center;"><code>0x0C80</code> - <code>0x0CFF</code></td>
+<td style="text-align: left;">Kannada</td>
</tr>
</tbody>
</table>
@@ -4232,27 +4397,27 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>knda</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0C81</code> - <code>0x0C81</code></td>
+<td style="text-align: center;"><code>0x0C81</code> - <code>0x0C81</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0CBC</code> - <code>0x0CBC</code></td>
+<td style="text-align: center;"><code>0x0CBC</code> - <code>0x0CBC</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0CBF</code> - <code>0x0CBF</code></td>
+<td style="text-align: center;"><code>0x0CBF</code> - <code>0x0CBF</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0CC6</code> - <code>0x0CC6</code></td>
+<td style="text-align: center;"><code>0x0CC6</code> - <code>0x0CC6</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0CCC</code> - <code>0x0CCD</code></td>
+<td style="text-align: center;"><code>0x0CCC</code> - <code>0x0CCD</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0CE2</code> - <code>0x0CE3</code></td>
+<td style="text-align: center;"><code>0x0CE2</code> - <code>0x0CE3</code></td>
</tr>
</tbody>
</table>
@@ -4260,14 +4425,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>khmr</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x1780</code> - <code>0x17FF</code></td>
-<td align="left">Khmer</td>
+<td style="text-align: center;"><code>0x1780</code> - <code>0x17FF</code></td>
+<td style="text-align: left;">Khmer</td>
</tr>
</tbody>
</table>
@@ -4275,21 +4440,21 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>khmr</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x17B7</code> - <code>0x17BD</code></td>
+<td style="text-align: center;"><code>0x17B7</code> - <code>0x17BD</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x17C6</code> - <code>0x17C6</code></td>
+<td style="text-align: center;"><code>0x17C6</code> - <code>0x17C6</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x17C9</code> - <code>0x17D3</code></td>
+<td style="text-align: center;"><code>0x17C9</code> - <code>0x17D3</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x17DD</code> - <code>0x17DD</code></td>
+<td style="text-align: center;"><code>0x17DD</code> - <code>0x17DD</code></td>
</tr>
</tbody>
</table>
@@ -4297,14 +4462,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>khms</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x19E0</code> - <code>0x19FF</code></td>
-<td align="left">Khmer Symbols</td>
+<td style="text-align: center;"><code>0x19E0</code> - <code>0x19FF</code></td>
+<td style="text-align: left;">Khmer Symbols</td>
</tr>
</tbody>
</table>
@@ -4312,14 +4477,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>lao</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0E80</code> - <code>0x0EFF</code></td>
-<td align="left">Lao</td>
+<td style="text-align: center;"><code>0x0E80</code> - <code>0x0EFF</code></td>
+<td style="text-align: left;">Lao</td>
</tr>
</tbody>
</table>
@@ -4327,18 +4492,18 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>lao</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0EB1</code> - <code>0x0EB1</code></td>
+<td style="text-align: center;"><code>0x0EB1</code> - <code>0x0EB1</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0EB4</code> - <code>0x0EBC</code></td>
+<td style="text-align: center;"><code>0x0EB4</code> - <code>0x0EBC</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0EC8</code> - <code>0x0ECD</code></td>
+<td style="text-align: center;"><code>0x0EC8</code> - <code>0x0ECD</code></td>
</tr>
</tbody>
</table>
@@ -4346,138 +4511,138 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>latn</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0020</code> - <code>0x007F</code></td>
-<td align="left">Basic Latin (no control chars)</td>
+<td style="text-align: center;"><code>0x0020</code> - <code>0x007F</code></td>
+<td style="text-align: left;">Basic Latin (no control chars)</td>
</tr>
<tr class="even">
-<td align="center"><code>0x00A0</code> - <code>0x00A9</code></td>
-<td align="left">Latin-1 Supplement (no control chars)</td>
+<td style="text-align: center;"><code>0x00A0</code> - <code>0x00A9</code></td>
+<td style="text-align: left;">Latin-1 Supplement (no control chars)</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x00AB</code> - <code>0x00B1</code></td>
-<td align="left">… continued</td>
+<td style="text-align: center;"><code>0x00AB</code> - <code>0x00B1</code></td>
+<td style="text-align: left;">… continued</td>
</tr>
<tr class="even">
-<td align="center"><code>0x00B4</code> - <code>0x00B8</code></td>
-<td align="left">… continued</td>
+<td style="text-align: center;"><code>0x00B4</code> - <code>0x00B8</code></td>
+<td style="text-align: left;">… continued</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x00BB</code> - <code>0x00FF</code></td>
-<td align="left">… continued</td>
+<td style="text-align: center;"><code>0x00BB</code> - <code>0x00FF</code></td>
+<td style="text-align: left;">… continued</td>
</tr>
<tr class="even">
-<td align="center"><code>0x0100</code> - <code>0x017F</code></td>
-<td align="left">Latin Extended-A</td>
+<td style="text-align: center;"><code>0x0100</code> - <code>0x017F</code></td>
+<td style="text-align: left;">Latin Extended-A</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0180</code> - <code>0x024F</code></td>
-<td align="left">Latin Extended-B</td>
+<td style="text-align: center;"><code>0x0180</code> - <code>0x024F</code></td>
+<td style="text-align: left;">Latin Extended-B</td>
</tr>
<tr class="even">
-<td align="center"><code>0x0250</code> - <code>0x02AF</code></td>
-<td align="left">IPA Extensions</td>
+<td style="text-align: center;"><code>0x0250</code> - <code>0x02AF</code></td>
+<td style="text-align: left;">IPA Extensions</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x02B9</code> - <code>0x02DF</code></td>
-<td align="left">Spacing Modifier Letters</td>
+<td style="text-align: center;"><code>0x02B9</code> - <code>0x02DF</code></td>
+<td style="text-align: left;">Spacing Modifier Letters</td>
</tr>
<tr class="even">
-<td align="center"><code>0x02E5</code> - <code>0x02FF</code></td>
-<td align="left">… continued</td>
+<td style="text-align: center;"><code>0x02E5</code> - <code>0x02FF</code></td>
+<td style="text-align: left;">… continued</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0300</code> - <code>0x036F</code></td>
-<td align="left">Combining Diacritical Marks</td>
+<td style="text-align: center;"><code>0x0300</code> - <code>0x036F</code></td>
+<td style="text-align: left;">Combining Diacritical Marks</td>
</tr>
<tr class="even">
-<td align="center"><code>0x1AB0</code> - <code>0x1ABE</code></td>
-<td align="left">Combining Diacritical Marks Extended</td>
+<td style="text-align: center;"><code>0x1AB0</code> - <code>0x1ABE</code></td>
+<td style="text-align: left;">Combining Diacritical Marks Extended</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x1D00</code> - <code>0x1D2B</code></td>
-<td align="left">Phonetic Extensions</td>
+<td style="text-align: center;"><code>0x1D00</code> - <code>0x1D2B</code></td>
+<td style="text-align: left;">Phonetic Extensions</td>
</tr>
<tr class="even">
-<td align="center"><code>0x1D6B</code> - <code>0x1D77</code></td>
-<td align="left">… continued</td>
+<td style="text-align: center;"><code>0x1D6B</code> - <code>0x1D77</code></td>
+<td style="text-align: left;">… continued</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x1D79</code> - <code>0x1D7F</code></td>
-<td align="left">… continued</td>
+<td style="text-align: center;"><code>0x1D79</code> - <code>0x1D7F</code></td>
+<td style="text-align: left;">… continued</td>
</tr>
<tr class="even">
-<td align="center"><code>0x1D80</code> - <code>0x1D9A</code></td>
-<td align="left">Phonetic Extensions Supplement</td>
+<td style="text-align: center;"><code>0x1D80</code> - <code>0x1D9A</code></td>
+<td style="text-align: left;">Phonetic Extensions Supplement</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x1DC0</code> - <code>0x1DFF</code></td>
-<td align="left">Combining Diacritical Marks Supplement</td>
+<td style="text-align: center;"><code>0x1DC0</code> - <code>0x1DFF</code></td>
+<td style="text-align: left;">Combining Diacritical Marks Supplement</td>
</tr>
<tr class="even">
-<td align="center"><code>0x1E00</code> - <code>0x1EFF</code></td>
-<td align="left">Latin Extended Additional</td>
+<td style="text-align: center;"><code>0x1E00</code> - <code>0x1EFF</code></td>
+<td style="text-align: left;">Latin Extended Additional</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x2000</code> - <code>0x206F</code></td>
-<td align="left">General Punctuation</td>
+<td style="text-align: center;"><code>0x2000</code> - <code>0x206F</code></td>
+<td style="text-align: left;">General Punctuation</td>
</tr>
<tr class="even">
-<td align="center"><code>0x20A0</code> - <code>0x20B8</code></td>
-<td align="left">Currency Symbols …</td>
+<td style="text-align: center;"><code>0x20A0</code> - <code>0x20B8</code></td>
+<td style="text-align: left;">Currency Symbols …</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x20BA</code> - <code>0x20CF</code></td>
-<td align="left">… except new Rupee sign</td>
+<td style="text-align: center;"><code>0x20BA</code> - <code>0x20CF</code></td>
+<td style="text-align: left;">… except new Rupee sign</td>
</tr>
<tr class="even">
-<td align="center"><code>0x2150</code> - <code>0x218F</code></td>
-<td align="left">Number Forms</td>
+<td style="text-align: center;"><code>0x2150</code> - <code>0x218F</code></td>
+<td style="text-align: left;">Number Forms</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x2C60</code> - <code>0x2C7B</code></td>
-<td align="left">Latin Extended-C</td>
+<td style="text-align: center;"><code>0x2C60</code> - <code>0x2C7B</code></td>
+<td style="text-align: left;">Latin Extended-C</td>
</tr>
<tr class="even">
-<td align="center"><code>0x2C7E</code> - <code>0x2C7F</code></td>
-<td align="left">… continued</td>
+<td style="text-align: center;"><code>0x2C7E</code> - <code>0x2C7F</code></td>
+<td style="text-align: left;">… continued</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x2E00</code> - <code>0x2E7F</code></td>
-<td align="left">Supplemental Punctuation</td>
+<td style="text-align: center;"><code>0x2E00</code> - <code>0x2E7F</code></td>
+<td style="text-align: left;">Supplemental Punctuation</td>
</tr>
<tr class="even">
-<td align="center"><code>0xA720</code> - <code>0xA76F</code></td>
-<td align="left">Latin Extended-D</td>
+<td style="text-align: center;"><code>0xA720</code> - <code>0xA76F</code></td>
+<td style="text-align: left;">Latin Extended-D</td>
</tr>
<tr class="odd">
-<td align="center"><code>0xA771</code> - <code>0xA7F7</code></td>
-<td align="left">… continued</td>
+<td style="text-align: center;"><code>0xA771</code> - <code>0xA7F7</code></td>
+<td style="text-align: left;">… continued</td>
</tr>
<tr class="even">
-<td align="center"><code>0xA7FA</code> - <code>0xA7FF</code></td>
-<td align="left">… continued</td>
+<td style="text-align: center;"><code>0xA7FA</code> - <code>0xA7FF</code></td>
+<td style="text-align: left;">… continued</td>
</tr>
<tr class="odd">
-<td align="center"><code>0xAB30</code> - <code>0xAB5B</code></td>
-<td align="left">Latin Extended-E</td>
+<td style="text-align: center;"><code>0xAB30</code> - <code>0xAB5B</code></td>
+<td style="text-align: left;">Latin Extended-E</td>
</tr>
<tr class="even">
-<td align="center"><code>0xAB60</code> - <code>0xAB6F</code></td>
-<td align="left">… continued</td>
+<td style="text-align: center;"><code>0xAB60</code> - <code>0xAB6F</code></td>
+<td style="text-align: left;">… continued</td>
</tr>
<tr class="odd">
-<td align="center"><code>0xFB00</code> - <code>0xFB06</code></td>
-<td align="left">Alphab. Present. Forms (Latin Ligs)</td>
+<td style="text-align: center;"><code>0xFB00</code> - <code>0xFB06</code></td>
+<td style="text-align: left;">Alphab. Present. Forms (Latin Ligs)</td>
</tr>
<tr class="even">
-<td align="center"><code>0x1D400</code> - <code>0x1D7FF</code></td>
-<td align="left">Mathematical Alphanumeric Symbols</td>
+<td style="text-align: center;"><code>0x1D400</code> - <code>0x1D7FF</code></td>
+<td style="text-align: left;">Mathematical Alphanumeric Symbols</td>
</tr>
</tbody>
</table>
@@ -4485,57 +4650,57 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>latn</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x005E</code> - <code>0x0060</code></td>
+<td style="text-align: center;"><code>0x005E</code> - <code>0x0060</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x007E</code> - <code>0x007E</code></td>
+<td style="text-align: center;"><code>0x007E</code> - <code>0x007E</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x00A8</code> - <code>0x00A9</code></td>
+<td style="text-align: center;"><code>0x00A8</code> - <code>0x00A9</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x00AE</code> - <code>0x00B0</code></td>
+<td style="text-align: center;"><code>0x00AE</code> - <code>0x00B0</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x00B4</code> - <code>0x00B4</code></td>
+<td style="text-align: center;"><code>0x00B4</code> - <code>0x00B4</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x00B8</code> - <code>0x00B8</code></td>
+<td style="text-align: center;"><code>0x00B8</code> - <code>0x00B8</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x00BC</code> - <code>0x00BE</code></td>
+<td style="text-align: center;"><code>0x00BC</code> - <code>0x00BE</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x02B9</code> - <code>0x02DF</code></td>
+<td style="text-align: center;"><code>0x02B9</code> - <code>0x02DF</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x02E5</code> - <code>0x02FF</code></td>
+<td style="text-align: center;"><code>0x02E5</code> - <code>0x02FF</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0300</code> - <code>0x036F</code></td>
+<td style="text-align: center;"><code>0x0300</code> - <code>0x036F</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x1AB0</code> - <code>0x1ABE</code></td>
+<td style="text-align: center;"><code>0x1AB0</code> - <code>0x1ABE</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x1DC0</code> - <code>0x1DFF</code></td>
+<td style="text-align: center;"><code>0x1DC0</code> - <code>0x1DFF</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x2017</code> - <code>0x2017</code></td>
+<td style="text-align: center;"><code>0x2017</code> - <code>0x2017</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x203E</code> - <code>0x203E</code></td>
+<td style="text-align: center;"><code>0x203E</code> - <code>0x203E</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0xA788</code> - <code>0xA788</code></td>
+<td style="text-align: center;"><code>0xA788</code> - <code>0xA788</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0xA7F8</code> - <code>0xA7FA</code></td>
+<td style="text-align: center;"><code>0xA7F8</code> - <code>0xA7FA</code></td>
</tr>
</tbody>
</table>
@@ -4543,22 +4708,22 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>latb</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x1D62</code> - <code>0x1D6A</code></td>
-<td align="left">some small subscript letters</td>
+<td style="text-align: center;"><code>0x1D62</code> - <code>0x1D6A</code></td>
+<td style="text-align: left;">some small subscript letters</td>
</tr>
<tr class="even">
-<td align="center"><code>0x2080</code> - <code>0x209C</code></td>
-<td align="left">subscript digits and letters</td>
+<td style="text-align: center;"><code>0x2080</code> - <code>0x209C</code></td>
+<td style="text-align: left;">subscript digits and letters</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x2C7C</code> - <code>0x2C7C</code></td>
-<td align="left">latin subscript small letter j</td>
+<td style="text-align: center;"><code>0x2C7C</code> - <code>0x2C7C</code></td>
+<td style="text-align: left;">latin subscript small letter j</td>
</tr>
</tbody>
</table>
@@ -4566,62 +4731,62 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>latp</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x00AA</code> - <code>0x00AA</code></td>
-<td align="left">feminine ordinal indicator</td>
+<td style="text-align: center;"><code>0x00AA</code> - <code>0x00AA</code></td>
+<td style="text-align: left;">feminine ordinal indicator</td>
</tr>
<tr class="even">
-<td align="center"><code>0x00B2</code> - <code>0x00B3</code></td>
-<td align="left">superscript two and three</td>
+<td style="text-align: center;"><code>0x00B2</code> - <code>0x00B3</code></td>
+<td style="text-align: left;">superscript two and three</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x00B9</code> - <code>0x00BA</code></td>
-<td align="left">superscript one, masc. ord. indic.</td>
+<td style="text-align: center;"><code>0x00B9</code> - <code>0x00BA</code></td>
+<td style="text-align: left;">superscript one, masc. ord. indic.</td>
</tr>
<tr class="even">
-<td align="center"><code>0x02B0</code> - <code>0x02B8</code></td>
-<td align="left">some latin superscript mod. letters</td>
+<td style="text-align: center;"><code>0x02B0</code> - <code>0x02B8</code></td>
+<td style="text-align: left;">some latin superscript mod. letters</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x02E0</code> - <code>0x02E4</code></td>
-<td align="left">some IPA modifier letters</td>
+<td style="text-align: center;"><code>0x02E0</code> - <code>0x02E4</code></td>
+<td style="text-align: left;">some IPA modifier letters</td>
</tr>
<tr class="even">
-<td align="center"><code>0x1D2C</code> - <code>0x1D61</code></td>
-<td align="left">latin superscript modifier letters</td>
+<td style="text-align: center;"><code>0x1D2C</code> - <code>0x1D61</code></td>
+<td style="text-align: left;">latin superscript modifier letters</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x1D78</code> - <code>0x1D78</code></td>
-<td align="left">modifier letter cyrillic en</td>
+<td style="text-align: center;"><code>0x1D78</code> - <code>0x1D78</code></td>
+<td style="text-align: left;">modifier letter cyrillic en</td>
</tr>
<tr class="even">
-<td align="center"><code>0x1D9B</code> - <code>0x1DBF</code></td>
-<td align="left">more modifier letters</td>
+<td style="text-align: center;"><code>0x1D9B</code> - <code>0x1DBF</code></td>
+<td style="text-align: left;">more modifier letters</td>
</tr>
<tr class="odd">
-<td align="center"><code>0x2070</code> - <code>0x207F</code></td>
-<td align="left">superscript digits and letters</td>
+<td style="text-align: center;"><code>0x2070</code> - <code>0x207F</code></td>
+<td style="text-align: left;">superscript digits and letters</td>
</tr>
<tr class="even">
-<td align="center"><code>0x2C7D</code> - <code>0x2C7D</code></td>
-<td align="left">modifier letter capital v</td>
+<td style="text-align: center;"><code>0x2C7D</code> - <code>0x2C7D</code></td>
+<td style="text-align: left;">modifier letter capital v</td>
</tr>
<tr class="odd">
-<td align="center"><code>0xA770</code> - <code>0xA770</code></td>
-<td align="left">modifier letter us</td>
+<td style="text-align: center;"><code>0xA770</code> - <code>0xA770</code></td>
+<td style="text-align: left;">modifier letter us</td>
</tr>
<tr class="even">
-<td align="center"><code>0xA7F8</code> - <code>0xA7F9</code></td>
-<td align="left">more modifier letters</td>
+<td style="text-align: center;"><code>0xA7F8</code> - <code>0xA7F9</code></td>
+<td style="text-align: left;">more modifier letters</td>
</tr>
<tr class="odd">
-<td align="center"><code>0xAB5C</code> - <code>0xAB5F</code></td>
-<td align="left">more modifier letters</td>
+<td style="text-align: center;"><code>0xAB5C</code> - <code>0xAB5F</code></td>
+<td style="text-align: left;">more modifier letters</td>
</tr>
</tbody>
</table>
@@ -4629,14 +4794,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>lisu</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0xA4D0</code> - <code>0xA4FF</code></td>
-<td align="left">Lisu</td>
+<td style="text-align: center;"><code>0xA4D0</code> - <code>0xA4FF</code></td>
+<td style="text-align: left;">Lisu</td>
</tr>
</tbody>
</table>
@@ -4644,14 +4809,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>mlym</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0D00</code> - <code>0x0D7F</code></td>
-<td align="left">Malayalam</td>
+<td style="text-align: center;"><code>0x0D00</code> - <code>0x0D7F</code></td>
+<td style="text-align: left;">Malayalam</td>
</tr>
</tbody>
</table>
@@ -4659,40 +4824,58 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>mlym</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0D00</code> - <code>0x0D01</code></td>
+<td style="text-align: center;"><code>0x0D00</code> - <code>0x0D01</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0D3B</code> - <code>0x0D3C</code></td>
+<td style="text-align: center;"><code>0x0D3B</code> - <code>0x0D3C</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0D4D</code> - <code>0x0D4E</code></td>
+<td style="text-align: center;"><code>0x0D4D</code> - <code>0x0D4E</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0D62</code> - <code>0x0D63</code></td>
+<td style="text-align: center;"><code>0x0D62</code> - <code>0x0D63</code></td>
+</tr>
+</tbody>
+</table>
+<table>
+<caption><code>medf</code> base characters</caption>
+<thead>
+<tr class="header">
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: center;"><code>0x16E40</code> - <code>0x16E9F</code></td>
+<td style="text-align: left;">Medefaidrin</td>
</tr>
</tbody>
</table>
+<p>Table: <code>medf</code> non-base characters</p>
+<pre><code> Character range</code></pre>
+<hr />
<table>
<caption><code>mong</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x1800</code> - <code>0x18AF</code></td>
-<td align="left">Mongolian</td>
+<td style="text-align: center;"><code>0x1800</code> - <code>0x18AF</code></td>
+<td style="text-align: left;">Mongolian</td>
</tr>
<tr class="even">
-<td align="center"><code>0x11660</code> - <code>0x1167F</code></td>
-<td align="left">Mongolian Supplement</td>
+<td style="text-align: center;"><code>0x11660</code> - <code>0x1167F</code></td>
+<td style="text-align: left;">Mongolian Supplement</td>
</tr>
</tbody>
</table>
@@ -4700,15 +4883,15 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>mong</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x1885</code> - <code>0x1886</code></td>
+<td style="text-align: center;"><code>0x1885</code> - <code>0x1886</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x18A9</code> - <code>0x18A9</code></td>
+<td style="text-align: center;"><code>0x18A9</code> - <code>0x18A9</code></td>
</tr>
</tbody>
</table>
@@ -4716,22 +4899,22 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>mymr</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x1000</code> - <code>0x109F</code></td>
-<td align="left">Myanmar</td>
+<td style="text-align: center;"><code>0x1000</code> - <code>0x109F</code></td>
+<td style="text-align: left;">Myanmar</td>
</tr>
<tr class="even">
-<td align="center"><code>0xA9E0</code> - <code>0xA9FF</code></td>
-<td align="left">Myanmar Extended-B</td>
+<td style="text-align: center;"><code>0xA9E0</code> - <code>0xA9FF</code></td>
+<td style="text-align: left;">Myanmar Extended-B</td>
</tr>
<tr class="odd">
-<td align="center"><code>0xAA60</code> - <code>0xAA7F</code></td>
-<td align="left">Myanmar Extended-A</td>
+<td style="text-align: center;"><code>0xAA60</code> - <code>0xAA7F</code></td>
+<td style="text-align: left;">Myanmar Extended-A</td>
</tr>
</tbody>
</table>
@@ -4739,45 +4922,45 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>mymr</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x102D</code> - <code>0x1030</code></td>
+<td style="text-align: center;"><code>0x102D</code> - <code>0x1030</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x1032</code> - <code>0x1037</code></td>
+<td style="text-align: center;"><code>0x1032</code> - <code>0x1037</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x103A</code> - <code>0x103A</code></td>
+<td style="text-align: center;"><code>0x103A</code> - <code>0x103A</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x103D</code> - <code>0x103E</code></td>
+<td style="text-align: center;"><code>0x103D</code> - <code>0x103E</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x1058</code> - <code>0x1059</code></td>
+<td style="text-align: center;"><code>0x1058</code> - <code>0x1059</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x105E</code> - <code>0x1060</code></td>
+<td style="text-align: center;"><code>0x105E</code> - <code>0x1060</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x1071</code> - <code>0x1074</code></td>
+<td style="text-align: center;"><code>0x1071</code> - <code>0x1074</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x1082</code> - <code>0x1082</code></td>
+<td style="text-align: center;"><code>0x1082</code> - <code>0x1082</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x1085</code> - <code>0x1086</code></td>
+<td style="text-align: center;"><code>0x1085</code> - <code>0x1086</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x108D</code> - <code>0x108D</code></td>
+<td style="text-align: center;"><code>0x108D</code> - <code>0x108D</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0xA9E5</code> - <code>0xA9E5</code></td>
+<td style="text-align: center;"><code>0xA9E5</code> - <code>0xA9E5</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0xAA7C</code> - <code>0xAA7C</code></td>
+<td style="text-align: center;"><code>0xAA7C</code> - <code>0xAA7C</code></td>
</tr>
</tbody>
</table>
@@ -4785,14 +4968,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>nkoo</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x07C0</code> - <code>0x07FF</code></td>
-<td align="left">N’Ko</td>
+<td style="text-align: center;"><code>0x07C0</code> - <code>0x07FF</code></td>
+<td style="text-align: left;">N’Ko</td>
</tr>
</tbody>
</table>
@@ -4800,15 +4983,15 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>nkoo</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x07EB</code> - <code>0x07F5</code></td>
+<td style="text-align: center;"><code>0x07EB</code> - <code>0x07F5</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x07FD</code> - <code>0x07FD</code></td>
+<td style="text-align: center;"><code>0x07FD</code> - <code>0x07FD</code></td>
</tr>
</tbody>
</table>
@@ -4816,14 +4999,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>olck</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x1C50</code> - <code>0x1C7F</code></td>
-<td align="left">Ol Chiki</td>
+<td style="text-align: center;"><code>0x1C50</code> - <code>0x1C7F</code></td>
+<td style="text-align: left;">Ol Chiki</td>
</tr>
</tbody>
</table>
@@ -4831,14 +5014,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>orkh</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x10C00</code> - <code>0x10C4F</code></td>
-<td align="left">Old Turkic</td>
+<td style="text-align: center;"><code>0x10C00</code> - <code>0x10C4F</code></td>
+<td style="text-align: left;">Old Turkic</td>
</tr>
</tbody>
</table>
@@ -4846,14 +5029,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>osge</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x104B0</code> - <code>0x104FF</code></td>
-<td align="left">Osage</td>
+<td style="text-align: center;"><code>0x104B0</code> - <code>0x104FF</code></td>
+<td style="text-align: left;">Osage</td>
</tr>
</tbody>
</table>
@@ -4861,29 +5044,47 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>osma</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x10480</code> - <code>0x104AF</code></td>
-<td align="left">Osmanya</td>
+<td style="text-align: center;"><code>0x10480</code> - <code>0x104AF</code></td>
+<td style="text-align: left;">Osmanya</td>
</tr>
</tbody>
</table>
<table>
+<caption><code>rohg</code> base characters</caption>
+<thead>
+<tr class="header">
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: center;"><code>0x10D00</code> - <code>0x10D3F</code></td>
+<td style="text-align: left;">Hanifi Rohingya</td>
+</tr>
+</tbody>
+</table>
+<p>Table: <code>rohg</code> non-base characters</p>
+<pre><code> Character range</code></pre>
+<hr />
+<table>
<caption><code>saur</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0xA880</code> - <code>0xA8DF</code></td>
-<td align="left">Saurashtra</td>
+<td style="text-align: center;"><code>0xA880</code> - <code>0xA8DF</code></td>
+<td style="text-align: left;">Saurashtra</td>
</tr>
</tbody>
</table>
@@ -4891,15 +5092,15 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>saur</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0xA880</code> - <code>0xA881</code></td>
+<td style="text-align: center;"><code>0xA880</code> - <code>0xA881</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0xA8B4</code> - <code>0xA8C5</code></td>
+<td style="text-align: center;"><code>0xA8B4</code> - <code>0xA8C5</code></td>
</tr>
</tbody>
</table>
@@ -4907,14 +5108,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>shaw</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x10450</code> - <code>0x1047F</code></td>
-<td align="left">Shavian</td>
+<td style="text-align: center;"><code>0x10450</code> - <code>0x1047F</code></td>
+<td style="text-align: left;">Shavian</td>
</tr>
</tbody>
</table>
@@ -4922,14 +5123,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>sinh</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0D80</code> - <code>0x0DFF</code></td>
-<td align="left">Sinhala</td>
+<td style="text-align: center;"><code>0x0D80</code> - <code>0x0DFF</code></td>
+<td style="text-align: left;">Sinhala</td>
</tr>
</tbody>
</table>
@@ -4937,15 +5138,15 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>sinh</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0DCA</code> - <code>0x0DCA</code></td>
+<td style="text-align: center;"><code>0x0DCA</code> - <code>0x0DCA</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0DD2</code> - <code>0x0DD6</code></td>
+<td style="text-align: center;"><code>0x0DD2</code> - <code>0x0DD6</code></td>
</tr>
</tbody>
</table>
@@ -4953,18 +5154,18 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>sund</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x1B80</code> - <code>0x1BBF</code></td>
-<td align="left">Sundanese</td>
+<td style="text-align: center;"><code>0x1B80</code> - <code>0x1BBF</code></td>
+<td style="text-align: left;">Sundanese</td>
</tr>
<tr class="even">
-<td align="center"><code>0x1CC0</code> - <code>0x1CCF</code></td>
-<td align="left">Sundanese Supplement</td>
+<td style="text-align: center;"><code>0x1CC0</code> - <code>0x1CCF</code></td>
+<td style="text-align: left;">Sundanese Supplement</td>
</tr>
</tbody>
</table>
@@ -4972,15 +5173,15 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>sund</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x1B80</code> - <code>0x1B82</code></td>
+<td style="text-align: center;"><code>0x1B80</code> - <code>0x1B82</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x1BA1</code> - <code>0x1BAD</code></td>
+<td style="text-align: center;"><code>0x1BA1</code> - <code>0x1BAD</code></td>
</tr>
</tbody>
</table>
@@ -4988,14 +5189,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>taml</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0B80</code> - <code>0x0BFF</code></td>
-<td align="left">Tamil</td>
+<td style="text-align: center;"><code>0x0B80</code> - <code>0x0BFF</code></td>
+<td style="text-align: left;">Tamil</td>
</tr>
</tbody>
</table>
@@ -5003,18 +5204,18 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>taml</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0B82</code> - <code>0x0B82</code></td>
+<td style="text-align: center;"><code>0x0B82</code> - <code>0x0B82</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0BC0</code> - <code>0x0BC2</code></td>
+<td style="text-align: center;"><code>0x0BC0</code> - <code>0x0BC2</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0BCD</code> - <code>0x0BCD</code></td>
+<td style="text-align: center;"><code>0x0BCD</code> - <code>0x0BCD</code></td>
</tr>
</tbody>
</table>
@@ -5022,14 +5223,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>tavt</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0xAA80</code> - <code>0xAADF</code></td>
-<td align="left">Tai Viet</td>
+<td style="text-align: center;"><code>0xAA80</code> - <code>0xAADF</code></td>
+<td style="text-align: left;">Tai Viet</td>
</tr>
</tbody>
</table>
@@ -5037,24 +5238,24 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>tavt</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0xAAB0</code> - <code>0xAAB0</code></td>
+<td style="text-align: center;"><code>0xAAB0</code> - <code>0xAAB0</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0xAAB2</code> - <code>0xAAB4</code></td>
+<td style="text-align: center;"><code>0xAAB2</code> - <code>0xAAB4</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0xAAB7</code> - <code>0xAAB8</code></td>
+<td style="text-align: center;"><code>0xAAB7</code> - <code>0xAAB8</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0xAABE</code> - <code>0xAABF</code></td>
+<td style="text-align: center;"><code>0xAABE</code> - <code>0xAABF</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0xAAC1</code> - <code>0xAAC1</code></td>
+<td style="text-align: center;"><code>0xAAC1</code> - <code>0xAAC1</code></td>
</tr>
</tbody>
</table>
@@ -5062,14 +5263,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>telu</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0C00</code> - <code>0x0C7F</code></td>
-<td align="left">Telugu</td>
+<td style="text-align: center;"><code>0x0C00</code> - <code>0x0C7F</code></td>
+<td style="text-align: left;">Telugu</td>
</tr>
</tbody>
</table>
@@ -5077,24 +5278,24 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>telu</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0C00</code> - <code>0x0C00</code></td>
+<td style="text-align: center;"><code>0x0C00</code> - <code>0x0C00</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0C04</code> - <code>0x0C04</code></td>
+<td style="text-align: center;"><code>0x0C04</code> - <code>0x0C04</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0C3E</code> - <code>0x0C40</code></td>
+<td style="text-align: center;"><code>0x0C3E</code> - <code>0x0C40</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0C46</code> - <code>0x0C56</code></td>
+<td style="text-align: center;"><code>0x0C46</code> - <code>0x0C56</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0C62</code> - <code>0x0C63</code></td>
+<td style="text-align: center;"><code>0x0C62</code> - <code>0x0C63</code></td>
</tr>
</tbody>
</table>
@@ -5102,14 +5303,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>thai</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0E00</code> - <code>0x0E7F</code></td>
-<td align="left">Thai</td>
+<td style="text-align: center;"><code>0x0E00</code> - <code>0x0E7F</code></td>
+<td style="text-align: left;">Thai</td>
</tr>
</tbody>
</table>
@@ -5117,18 +5318,18 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>thai</code> non-base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
+<th style="text-align: center;">Character range</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x0E31</code> - <code>0x0E31</code></td>
+<td style="text-align: center;"><code>0x0E31</code> - <code>0x0E31</code></td>
</tr>
<tr class="even">
-<td align="center"><code>0x0E34</code> - <code>0x0E3A</code></td>
+<td style="text-align: center;"><code>0x0E34</code> - <code>0x0E3A</code></td>
</tr>
<tr class="odd">
-<td align="center"><code>0x0E47</code> - <code>0x0E4E</code></td>
+<td style="text-align: center;"><code>0x0E47</code> - <code>0x0E4E</code></td>
</tr>
</tbody>
</table>
@@ -5136,14 +5337,14 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>tfng</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0x2D30</code> - <code>0x2D7F</code></td>
-<td align="left">Tifinagh</td>
+<td style="text-align: center;"><code>0x2D30</code> - <code>0x2D7F</code></td>
+<td style="text-align: left;">Tifinagh</td>
</tr>
</tbody>
</table>
@@ -5151,21 +5352,56 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<caption><code>vaii</code> base characters</caption>
<thead>
<tr class="header">
-<th align="center">Character range</th>
-<th align="left">Description</th>
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: center;"><code>0xA500</code> - <code>0xA63F</code></td>
+<td style="text-align: left;">Vai</td>
+</tr>
+</tbody>
+</table>
+<table>
+<caption><code>yezi</code> base characters</caption>
+<thead>
+<tr class="header">
+<th style="text-align: center;">Character range</th>
+<th style="text-align: left;">Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td align="center"><code>0xA500</code> - <code>0xA63F</code></td>
-<td align="left">Vai</td>
+<td style="text-align: center;"><code>0x10E80</code> - <code>0x10EBF</code></td>
+<td style="text-align: left;">Yezidi</td>
+</tr>
+</tbody>
+</table>
+<table>
+<caption><code>yezi</code> non-base characters</caption>
+<thead>
+<tr class="header">
+<th style="text-align: center;">Character range</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: center;"><code>0x10EAB</code> - <code>0x10EAC</code></td>
</tr>
</tbody>
</table>
<h1 id="history">History</h1>
+<h2 id="version-1.8.4-2021-aug-14">Version 1.8.4 (2021-Aug-14)</h2>
+<ul>
+<li><p>Support for Hanifi Rohingya, Nyiakeng Puachue Hmong, Medefaidrin, and Yezidi.</p></li>
+<li><p>Bug fix: Option combination <code>-f none -S</code> to suppress hinting of unassigned glyphs was broken.</p></li>
+<li><p>Parallel builds of the package are now fully supported.</p></li>
+<li><p>The <code>configure</code> option <code>--with-freetype-config</code> has been removed; similarly to HarfBuzz, the <code>pkg-config</code> interface is now used exclusively for finding FreeType.</p></li>
+</ul>
<h2 id="version-1.8.3-2019-apr-09">Version 1.8.3 (2019-Apr-09)</h2>
<ul>
-<li><p>Support for Mongolian. The de-facto standard is to render the glyphs horizontally (left-to-right) line by line, then rotating each line clockwise by 90 degrees. This allows the usage of ttfautohint.</p></li>
+<li><p>Support for Mongolian. The de-facto standard is to render the glyphs horizontally (left-to-right) line by line, then rotating each line clockwise by 90 degrees. This allows the usage of ttfautohint.</p></li>
<li><p>Bug fix: Glyphs with complicated shapes or a large number of outlines could be distorted if displayed with FreeType (or stay unhinted if viewed on Windows).</p></li>
</ul>
<h2 id="version-1.8.2-2018-jul-24">Version 1.8.2 (2018-Jul-24)</h2>
@@ -5382,15 +5618,15 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<ul>
<li>First release.</li>
</ul>
-<div class="footnotes">
+<section class="footnotes" role="doc-endnotes">
<hr />
<ol>
-<li id="fn1"><p>To be more precise, the sum of the height and length of a segment must be at least 20 font units, and the height multiplied by 14 must not exceed the length. Thus (19,1) is also a valid minimum (length,height) pair, while (18,2) isn’t. The value 20 is heuristic and hard-coded, as is the value 14 (corresponding to a slope of approx. 4.1°).<a href="#fnref1">↩</a></p></li>
-<li id="fn2"><p>The notable exception is the tag ‘lao’, which originally has a trailing space as the fourth character. However, ttfautohint ignores the space.<a href="#fnref2">↩</a></p></li>
-<li id="fn3"><p>Unfortunately, there is a bug in FreeType prior to version 2.5.4 (released in December 2014) that completely disables vertical delta exceptions if subpixel hinting is activated. For this reason you should expect that the <code>touch</code> parameter fails on older GNU/Linux distributions.<a href="#fnref3">↩</a></p></li>
-<li id="fn4"><p>The number ‘6’ indicates the version of the shared library of FreeType, which is not directly related to the source code version of FreeType.<a href="#fnref4">↩</a></p></li>
+<li id="fn1" role="doc-endnote"><p>To be more precise, the sum of the height and length of a segment must be at least 20 font units, and the height multiplied by 14 must not exceed the length. Thus (19,1) is also a valid minimum (length,height) pair, while (18,2) isn’t. The value 20 is heuristic and hard-coded, as is the value 14 (corresponding to a slope of approx. 4.1°).<a href="#fnref1" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
+<li id="fn2" role="doc-endnote"><p>The notable exception is the tag ‘lao’, which originally has a trailing space as the fourth character. However, ttfautohint ignores the space.<a href="#fnref2" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
+<li id="fn3" role="doc-endnote"><p>Unfortunately, there is a bug in FreeType prior to version 2.5.4 (released in December 2014) that completely disables vertical delta exceptions if subpixel hinting is activated. For this reason you should expect that the <code>touch</code> parameter fails on older GNU/Linux distributions.<a href="#fnref3" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
+<li id="fn4" role="doc-endnote"><p>The number ‘6’ indicates the version of the shared library of FreeType, which is not directly related to the source code version of FreeType.<a href="#fnref4" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
</ol>
-</div>
+</section>
</div>
</div>
@@ -5401,16 +5637,19 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<div id="TOC">
<ul>
-<li><a href="#introduction">Introduction</a><ul>
+<li><a href="#introduction">Introduction</a>
+<ul>
<li><a href="#what-exactly-are-hints">What exactly are hints?</a></li>
<li><a href="#what-problems-can-arise-with-truetype-hinting">What problems can arise with TrueType hinting?</a></li>
<li><a href="#why-ttfautohint">Why ttfautohint?</a></li>
<li><a href="#smooth-hinting">‘Smooth’ hinting</a></li>
</ul></li>
-<li><a href="#ttfautohint-and-ttfautohintgui"><code>ttfautohint</code> and <code>ttfautohintGUI</code></a><ul>
+<li><a href="#ttfautohint-and-ttfautohintgui"><code>ttfautohint</code> and <code>ttfautohintGUI</code></a>
+<ul>
<li><a href="#calling-ttfautohint">Calling <code>ttfautohint</code></a></li>
<li><a href="#calling-ttfautohintgui">Calling <code>ttfautohintGUI</code></a></li>
-<li><a href="#options">Options</a><ul>
+<li><a href="#options">Options</a>
+<ul>
<li><a href="#control-instructions-file">Control Instructions File</a></li>
<li><a href="#blue-zone-reference-font">Blue Zone Reference Font</a></li>
<li><a href="#hint-set-range-minimum-hint-set-range-maximum">Hint Set Range Minimum, Hint Set Range Maximum</a></li>
@@ -5433,7 +5672,8 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<li><a href="#miscellaneous">Miscellaneous</a></li>
</ul></li>
</ul></li>
-<li><a href="#background-and-technical-details">Background and Technical Details</a><ul>
+<li><a href="#background-and-technical-details">Background and Technical Details</a>
+<ul>
<li><a href="#segments-and-edges">Segments and Edges</a></li>
<li><a href="#feature-analysis">Feature Analysis</a></li>
<li><a href="#blue-zones">Blue Zones</a></li>
@@ -5445,7 +5685,8 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<li><a href="#scripts">Scripts</a></li>
<li><a href="#opentype-features">OpenType Features</a></li>
<li><a href="#sfnt-tables">SFNT Tables</a></li>
-<li><a href="#problems">Problems</a><ul>
+<li><a href="#problems">Problems</a>
+<ul>
<li><a href="#interaction-with-freetype">Interaction With FreeType</a></li>
<li><a href="#incorrect-unicode-character-map">Incorrect Unicode Character Map</a></li>
<li><a href="#irregular-glyph-heights">Irregular Glyph Heights</a></li>
@@ -5453,17 +5694,20 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
</ul></li>
<li><a href="#extending-ttfautohint-with-new-scripts">Extending ttfautohint with new scripts</a></li>
</ul></li>
-<li><a href="#control-instructions">Control Instructions</a><ul>
+<li><a href="#control-instructions">Control Instructions</a>
+<ul>
<li><a href="#common-syntax-elements">Common Syntax Elements</a></li>
<li><a href="#style-adjustments">Style Adjustments</a></li>
<li><a href="#stem-width-adjustments">Stem Width Adjustments</a></li>
-<li><a href="#glyph-adjustments">Glyph Adjustments</a><ul>
+<li><a href="#glyph-adjustments">Glyph Adjustments</a>
+<ul>
<li><a href="#change-direction-of-points-artificial-segments">Change Direction of Points, Artificial Segments</a></li>
<li><a href="#unset-direction-of-points">Unset Direction of Points</a></li>
<li><a href="#delta-exceptions">Delta Exceptions</a></li>
</ul></li>
</ul></li>
-<li><a href="#the-ttfautohint-api">The ttfautohint API</a><ul>
+<li><a href="#the-ttfautohint-api">The ttfautohint API</a>
+<ul>
<li><a href="#preprocessor-macros-typedefs-and-enums">Preprocessor Macros, Typedefs, and Enums</a></li>
<li><a href="#function-pointer-ta_alloc_func">Function Pointer: <code>TA_Alloc_Func</code></a></li>
<li><a href="#function-pointer-ta_free_func">Function Pointer: <code>TA_Free_Func</code></a></li>
@@ -5471,7 +5715,8 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<li><a href="#callback-ta_error_func">Callback: <code>TA_Error_Func</code></a></li>
<li><a href="#callback-ta_info_func">Callback: <code>TA_Info_Func</code></a></li>
<li><a href="#callback-ta_info_post_func">Callback: <code>TA_Info_Post_Func</code></a></li>
-<li><a href="#function-ttf_autohint">Function: <code>TTF_autohint</code></a><ul>
+<li><a href="#function-ttf_autohint">Function: <code>TTF_autohint</code></a>
+<ul>
<li><a href="#memory-management">Memory Management</a></li>
<li><a href="#io">I/O</a></li>
<li><a href="#messages-and-callbacks">Messages and Callbacks</a></li>
@@ -5486,14 +5731,17 @@ Portions Copyright © 2014 by <a href="mailto:adam@twardoch.com">Adam Twardoch</
<li><a href="#function-ttf_autohint_version">Function: <code>TTF_autohint_version</code></a></li>
<li><a href="#function-ttf_autohint_version_string">Function: <code>TTF_autohint_version_string</code></a></li>
</ul></li>
-<li><a href="#compilation-and-installation">Compilation and Installation</a><ul>
+<li><a href="#compilation-and-installation">Compilation and Installation</a>
+<ul>
<li><a href="#unix-like-platforms">Unix-like Platforms</a></li>
<li><a href="#ms-windows">MS Windows</a></li>
<li><a href="#mac-os-x">Mac OS X</a></li>
</ul></li>
<li><a href="#authors">Authors</a></li>
<li><a href="#character-ranges">Character Ranges</a></li>
-<li><a href="#history">History</a><ul>
+<li><a href="#history">History</a>
+<ul>
+<li><a href="#version-1.8.4-2021-aug-14">Version 1.8.4 (2021-Aug-14)</a></li>
<li><a href="#version-1.8.3-2019-apr-09">Version 1.8.3 (2019-Apr-09)</a></li>
<li><a href="#version-1.8.2-2018-jul-24">Version 1.8.2 (2018-Jul-24)</a></li>
<li><a href="#version-1.8.1-2018-jan-01">Version 1.8.1 (2018-Jan-01)</a></li>
diff --git a/ttfautohint/index.html b/ttfautohint/index.html
index 5ff0de1..01aaa20 100644
--- a/ttfautohint/index.html
+++ b/ttfautohint/index.html
@@ -80,6 +80,15 @@
<!-- ************************************************** -->
<div id="news">
+ <h4>21st August 2021</h4>
+
+ <p>This minor release adds support for the scripts Hanifi
+ Rohingya, Nyiakeng Puachue Hmong, Medefaidrin, and Yezidi,
+ together with some other, minor improvements that are
+ briefly listed in
+ the <a href="https://sourceforge.net/projects/freetype/files/ttfautohint/1.8.4/">release
+ notes</a> as usual.</p>
+
<h4>9th April 2019</h4>
<p>Another bug fix release, version 1.8.3, correcting
@@ -650,14 +659,14 @@
<p>Werner Lemberg
(<a href="mailto:wl@gnu.org">wl@gnu.org</a>) is Technical
Lead, and does all the programming. He is a professional
- classical musician and lives in Vienna, Austria.</p>
+ classical musician and lives in Salzburg, Austria.</p>
<p>Dave Crossland
(<a href="mailto:dave@understandingfonts.com">dave@understandingfonts.com</a>)
is the Project Manager, and wrote and art directed the
promotional video at the top of this page. He is a
- professional type designer and lives in London,
- England.</p>
+ professional type designer and lives in New York City,
+ USA.</p>
<p>Andy Ellis
(<a href="mailto:hello@fadeinfadeout.co.uk">hello@fadeinfadeout.co.uk</a>)
@@ -672,7 +681,7 @@
<div id="download">
<h2>Download</h2>
- <p>Current version: 1.8.3 (9th April 2019)</p>
+ <p>Current version: 1.8.4 (21st August 2021)</p>
<h3>Binaries</h3>
@@ -682,18 +691,17 @@
directly after uncompressing the archive.</p>
<p><strong>
- <a href="https://sourceforge.net/projects/freetype/files/ttfautohint/1.8.3/ttfautohint-1.8.3-win32.7z/download">Windows</a>
+ <a href="https://sourceforge.net/projects/freetype/files/ttfautohint/1.8.4/ttfautohint-1.8.4-win32.7z/download">Windows</a>
</strong><br>
- <tt>ttfautohint 1.8.3</tt> &ndash; both command line and
+ <tt>ttfautohint 1.8.4</tt> &ndash; both command line and
GUI.</p>
<p><strong>
- <a href="https://sourceforge.net/projects/freetype/files/ttfautohint/1.8.3/ttfautohint-1.8.3-tty-osx.tar.gz/download">Apple</a>
+ <a href="https://sourceforge.net/projects/freetype/files/ttfautohint/1.8.4/ttfautohint-1.8.4-tty-osx.tar.gz/download">Apple</a>
</strong><br>
- <tt>ttfautohint 1.8.3</tt> &ndash; currently command line
- only; thanks to Karsten L&uuml;cke for creating this!
- This universal binary for the i386 and x86_64
- architectures has been compiled under OS&nbsp;X 10.5.8 and
+ <tt>ttfautohint 1.8.4</tt> &ndash; currently command line
+ only. This universal binary for the i386 and x86_64
+ architectures has been compiled under OS&nbsp;X 10.7.5 and
should run with newer versions also.
Read <a href="osx.html">this page</a> how to get the GUI
version.</p>
@@ -717,10 +725,10 @@
repository homepage for details.</p>
<p>Note: Prerequisites for compiling the library is FreeType
- version 2.4.5 or newer and HarfBuzz version 1.3.0 or
+ version 2.4.5 or newer and HarfBuzz version 2.4.0 or
newer; see <a href="../download.html">FreeType's download
page</a>
- and <a href="https://www.freedesktop.org/software/harfbuzz/release/">HarfBuzz's
+ and <a href="https://github.com/harfbuzz/harfbuzz/releases">HarfBuzz's
download page</a> for more information.</p>
<p><a href="osx.html">Compile
diff --git a/ttfautohint/osx.html b/ttfautohint/osx.html
index d79887e..b853a3b 100644
--- a/ttfautohint/osx.html
+++ b/ttfautohint/osx.html
@@ -114,15 +114,8 @@ ttfautohintGUI</pre>
<div id="homebrew">
<h2>Compilation With Homebrew</h2>
- <p class="warning">Warning&nbsp;1: Since autumn 2018,
- Homebrew tries to avoid package options. As a
- consequence, I had the choice between ttfautohint or
- ttfautohintGUI being part of core Homebrew – I decided to
- stay with the former. See below if you need
- ttfautohintGUI.</p>
-
- <p class="warning">Warning&nbsp;2: Homebrew only supports
- recent MacOS versions (i.e., the current one and two older
+ <p class="warning">Warning: Homebrew only supports recent
+ MacOS versions (i.e., the current one and two older
releases). For older MacOS versions please use
MacPorts, <a href="#macports">see above</a>.</p>
@@ -159,7 +152,7 @@ brew install --HEAD ttfautohint</pre>
brew reinstall --HEAD ttfautohint</pre>
<p>instead of calling <tt>brew upgrade ttfautohint</tt>
- (cf. <a href="https://github.com/Homebrew/homebrew/issues/13197">this
+ (see <a href="https://github.com/Homebrew/homebrew/issues/13197">this
homebrew tracker issue</a>).</p>
<p>You can execute the ttfautohint executable on the command
@@ -304,18 +297,18 @@ sudo make install</pre>
based on.</p>
<p>In your browser, download
- <a href="https://sourceforge.net/projects/freetype/files/freetype2/2.10.0/freetype-2.10.0.tar.gz/download">https://sourceforge.net/projects/freetype/files/freetype2/2.10.0/freetype-2.10.0.tar.gz/download</a>.</p>
+ <a href="https://sourceforge.net/projects/freetype/files/freetype2/2.11.0/freetype-2.11.0.tar.gz/download">https://sourceforge.net/projects/freetype/files/freetype2/2.11.0/freetype-2.11.0.tar.gz/download</a>.</p>
<p>In Finder, go to your Downloads folder and double click
- the <tt>freetype-2.10.0.tar.gz</tt> file to unpack it into
- a folder named &lsquo;<tt>freetype-2.10.0</tt>&rsquo;.
+ the <tt>freetype-2.11.0.tar.gz</tt> file to unpack it into
+ a folder named &lsquo;<tt>freetype-2.11.0</tt>&rsquo;.
Move that folder now into the <tt>src</tt> folder you
created in your Home folder.</p>
<p>Open Terminal.app, type</p>
<pre>
-cd ~/src/freetype-2.10.0</pre>
+cd ~/src/freetype-2.11.0</pre>
<p>and press the return key. Continue with</p>
@@ -345,19 +338,19 @@ sudo make install</pre>
OpenType features in TrueType fonts.</p>
<p>In your browser, download
- <a href="https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-2.4.0.tar.bz2">https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-2.4.0.tar.bz2</a>.</p>
+ <a href="https://github.com/harfbuzz/harfbuzz/releases/download/2.9.0/harfbuzz-2.9.0.tar.xz">https://github.com/harfbuzz/harfbuzz/releases/download/2.9.0/harfbuzz-2.9.0.tar.xz</a>.</p>
<p>In Finder, go to your Downloads folder and double click
- the <tt>harfbuzz-2.4.0.tar.bz2</tt> file to unpack it
+ the <tt>harfbuzz-2.9.0.tar.xz</tt> file to unpack it
into a folder named
- &lsquo;<tt>harfbuzz-2.4.0</tt>&rsquo;. Move that folder
+ &lsquo;<tt>harfbuzz-2.9.0</tt>&rsquo;. Move that folder
now into the <tt>src</tt> folder you created in your Home
folder.</p>
<p>Open Terminal.app, type</p>
<pre>
-cd ~/src/harfbuzz-2.4.0</pre>
+cd ~/src/harfbuzz-2.9.0</pre>
<p>and press the return key. Continue with</p>
@@ -399,7 +392,13 @@ sudo make install</pre>
<a href="https://qt.io/download">https://qt.io/download</a>
and install Qt in the normal way. Currently, a direct
link is
- <a href="https://download.qt.io/official_releases/qt/5.12/5.12.2/qt-opensource-mac-x64-5.12.2.dmg">https://download.qt.io/official_releases/qt/5.12/5.12.2/qt-opensource-mac-x64-5.12.2.dmg</a>.</p>
+ <a href="https://download.qt.io/official_releases/qt/5.12/5.12.11/qt-opensource-mac-x64-5.12.11.dmg">https://download.qt.io/official_releases/qt/5.12/5.12.11/qt-opensource-mac-x64-5.12.11.dmg</a>.</p>
+
+ <p>[There are newer version of Qt&nbsp;5 available, however,
+ no <tt>.dmg</tt> files are provided. If you need them,
+ follow
+ the <a href="https://doc.qt.io/qt-5/macos-building.html">building
+ instructions</a>.]</p>
<p>[In case you need Qt&nbsp;4,
use <a href="https://download.qt.io/archive/qt/4.8/4.8.7/qt-opensource-mac-4.8.7.dmg">https://download.qt.io/archive/qt/4.8/4.8.7/qt-opensource-mac-4.8.7.dmg</a>
@@ -412,18 +411,18 @@ sudo make install</pre>
Visit <a href="https://freetype.org/ttfautohint">https://freetype.org/ttfautohint</a>
and in the download section, download the latest version
of the source code. Currently the direct link is
- <a href="https://sourceforge.net/projects/freetype/files/ttfautohint/1.8.3/ttfautohint-1.8.3.tar.gz/download">https://sourceforge.net/projects/freetype/files/ttfautohint/1.8.3/ttfautohint-1.8.3.tar.gz/download</a>.</p>
+ <a href="https://sourceforge.net/projects/freetype/files/ttfautohint/1.8.4/ttfautohint-1.8.4.tar.gz/download">https://sourceforge.net/projects/freetype/files/ttfautohint/1.8.4/ttfautohint-1.8.4.tar.gz/download</a>.</p>
<p>In Finder, go to your Downloads folder and double click the
- <tt>ttfautohint-1.8.3.tar.gz</tt> file to unpack it into a
- folder named &lsquo;<tt>ttfautohint-1.8.3</tt>&rsquo;.
- Move the <tt>ttfautohint-1.8.3</tt> folder to
+ <tt>ttfautohint-1.8.4.tar.gz</tt> file to unpack it into a
+ folder named &lsquo;<tt>ttfautohint-1.8.4</tt>&rsquo;.
+ Move the <tt>ttfautohint-1.8.4</tt> folder to
the <tt>src</tt> folder in your Home folder.</p>
<p>In Terminal, type</p>
<pre>
-cd ~/src/ttfautohint-1.8.3</pre>
+cd ~/src/ttfautohint-1.8.4</pre>
<p>and press the return key.</p>
@@ -493,7 +492,7 @@ ttfautohint</pre>
Simpkins</a>.</p>
</div>
<div class="updated">
- <p>Last update: 9-Apr-2019</p>
+ <p>Last update: 21-Aug-2021</p>
</div>
</div>
</div>