|
709 | 709 | HUB.signal.Post(["SVG Jax - unknown char",n,variant]);
|
710 | 710 | }
|
711 | 711 | }
|
712 |
| - if (text.length == 1 && font.skew && font.skew[n]) {svg.skew = font.skew[n]*1000} |
| 712 | + if (SVG.isChar(text) && font.skew && font.skew[n]) {svg.skew = font.skew[n]*1000} |
713 | 713 | if (svg.element.childNodes.length === 1 && !svg.element.firstChild.getAttribute("x")) {
|
714 | 714 | svg.element = svg.element.firstChild;
|
715 | 715 | svg.removeable = false; svg.scale = scale;
|
|
737 | 737 | return {id:"unknown"};
|
738 | 738 | },
|
739 | 739 |
|
| 740 | + isChar: function (text) { |
| 741 | + if (text.length === 1) return true; |
| 742 | + if (text.length !== 2) return false; |
| 743 | + var n = text.charCodeAt(0); |
| 744 | + return (n >= 0xD800 && n < 0xDBFF); |
| 745 | + }, |
| 746 | + |
740 | 747 | findBlock: function (font,c) {
|
741 | 748 | if (font.Ranges) {
|
742 | 749 | // FIXME: do binary search?
|
|
1154 | 1161 | }
|
1155 | 1162 | }
|
1156 | 1163 | svg.Clean(); var text = this.data.join("");
|
1157 |
| - if (svg.skew && text.length !== 1) {delete svg.skew} |
1158 |
| - if (svg.r > svg.w && text.length === 1 && !variant.noIC) |
| 1164 | + if (svg.skew && !SVG.isChar(text)) {delete svg.skew} |
| 1165 | + if (svg.r > svg.w && SVG.isChar(text) && !variant.noIC) |
1159 | 1166 | {svg.ic = svg.r - svg.w; svg.w = svg.r}
|
1160 | 1167 | this.SVGhandleColor(svg);
|
1161 | 1168 | this.SVGsaveData(svg);
|
|
1542 | 1549 | var parent = this.CoreParent(),
|
1543 | 1550 | isScript = (parent && parent.isa(MML.msubsup) && this !== parent.data[0]),
|
1544 | 1551 | mapchars = (isScript?this.remapChars:null);
|
1545 |
| - if (this.data.join("").length === 1 && parent && parent.isa(MML.munderover) && |
1546 |
| - this.CoreText(parent.data[parent.base]).length === 1) { |
| 1552 | + if (SVG.isChar(this.data.join("")) && parent && parent.isa(MML.munderover) && |
| 1553 | + SVG.isChar(this.CoreText(parent.data[parent.base]))) { |
1547 | 1554 | var over = parent.data[parent.over], under = parent.data[parent.under];
|
1548 | 1555 | if (over && this === over.CoreMO() && parent.Get("accent")) {mapchars = SVG.FONTDATA.REMAPACCENT}
|
1549 | 1556 | else if (under && this === under.CoreMO() && parent.Get("accentunder")) {mapchars = SVG.FONTDATA.REMAPACCENTUNDER}
|
|
1565 | 1572 | }
|
1566 | 1573 | }
|
1567 | 1574 | svg.Clean();
|
1568 |
| - if (this.data.join("").length !== 1) {delete svg.skew} |
| 1575 | + if (!SVG.isChar(this.data.join(""))) {delete svg.skew} |
1569 | 1576 | //
|
1570 | 1577 | // Handle large operator centering
|
1571 | 1578 | //
|
|
1586 | 1593 | if (c.length > 1) {return false}
|
1587 | 1594 | var parent = this.CoreParent();
|
1588 | 1595 | if (parent && parent.isa(MML.munderover) &&
|
1589 |
| - this.CoreText(parent.data[parent.base]).length === 1) { |
| 1596 | + SVG.isChar(this.CoreText(parent.data[parent.base]))) { |
1590 | 1597 | var over = parent.data[parent.over], under = parent.data[parent.under];
|
1591 | 1598 | if (over && this === over.CoreMO() && parent.Get("accent")) {c = SVG.FONTDATA.REMAPACCENT[c]||c}
|
1592 | 1599 | else if (under && this === under.CoreMO() && parent.Get("accentunder")) {c = SVG.FONTDATA.REMAPACCENTUNDER[c]||c}
|
|
1653 | 1660 | }
|
1654 | 1661 | }
|
1655 | 1662 | svg.Clean(); var text = this.data.join("");
|
1656 |
| - if (svg.skew && text.length !== 1) {delete svg.skew} |
1657 |
| - if (svg.r > svg.w && text.length === 1 && !variant.noIC) |
| 1663 | + if (svg.skew && !SVG.isChar(text)) {delete svg.skew} |
| 1664 | + if (svg.r > svg.w && SVG.isChar(text) && !variant.noIC) |
1658 | 1665 | {svg.ic = svg.r - svg.w; svg.w = svg.r}
|
1659 | 1666 | this.SVGhandleColor(svg);
|
1660 | 1667 | this.SVGsaveData(svg);
|
|
2101 | 2108 | }
|
2102 | 2109 | if (this.data[this.base] &&
|
2103 | 2110 | (this.data[this.base].type === "mi" || this.data[this.base].type === "mo")) {
|
2104 |
| - if (this.data[this.base].data.join("").length === 1 && base.scale === 1 && |
| 2111 | + if (SVG.isChar(this.data[this.base].data.join("")) && base.scale === 1 && |
2105 | 2112 | !base.stretched && !this.data[this.base].Get("largeop")) {u = v = 0}
|
2106 | 2113 | }
|
2107 | 2114 | var min = this.getValues("subscriptshift","superscriptshift");
|
|
0 commit comments