modern-text 0.2.19 → 0.2.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +88 -68
- package/dist/index.d.cts +15 -7
- package/dist/index.d.mts +15 -7
- package/dist/index.d.ts +15 -7
- package/dist/index.js +2 -2
- package/dist/index.mjs +89 -70
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -68,7 +68,7 @@ function drawPath(options) {
|
|
|
68
68
|
shadowColor: options.shadowColor
|
|
69
69
|
};
|
|
70
70
|
if (clipRect) {
|
|
71
|
-
ctx.rect(clipRect.
|
|
71
|
+
ctx.rect(clipRect.left, clipRect.top, clipRect.width, clipRect.height);
|
|
72
72
|
ctx.clip();
|
|
73
73
|
ctx.beginPath();
|
|
74
74
|
}
|
|
@@ -188,8 +188,8 @@ class Character {
|
|
|
188
188
|
return this;
|
|
189
189
|
}
|
|
190
190
|
const { unitsPerEm, ascender, descender, os2, post } = font;
|
|
191
|
-
const { content, computedStyle, boundingBox
|
|
192
|
-
const {
|
|
191
|
+
const { content, computedStyle, boundingBox } = this;
|
|
192
|
+
const { height } = boundingBox;
|
|
193
193
|
const { fontSize } = computedStyle;
|
|
194
194
|
const rate = unitsPerEm / fontSize;
|
|
195
195
|
const glyphWidth = font.getAdvanceWidth(content, fontSize);
|
|
@@ -207,8 +207,6 @@ class Character {
|
|
|
207
207
|
this.yStrikeoutSize = yStrikeoutSize;
|
|
208
208
|
this.baseline = baseline;
|
|
209
209
|
this.centerDiviation = 0.5 * height - baseline;
|
|
210
|
-
this.glyphBox = isVertical ? new modernPath2d.BoundingBox(left, top, glyphHeight, glyphWidth) : new modernPath2d.BoundingBox(left, top, glyphWidth, glyphHeight);
|
|
211
|
-
this.centerPoint = this.glyphBox.getCenterPoint();
|
|
212
210
|
return this;
|
|
213
211
|
}
|
|
214
212
|
updatePath() {
|
|
@@ -290,6 +288,8 @@ class Character {
|
|
|
290
288
|
strokeWidth: computedStyle.textStrokeWidth ? computedStyle.textStrokeWidth * fontSize * 0.03 : 0
|
|
291
289
|
};
|
|
292
290
|
this.path = path;
|
|
291
|
+
this.glyphBox = this.getGlyphBoundingBox();
|
|
292
|
+
this.center = this.glyphBox.getCenterPoint();
|
|
293
293
|
return this;
|
|
294
294
|
}
|
|
295
295
|
update() {
|
|
@@ -378,11 +378,11 @@ class Character {
|
|
|
378
378
|
return cmd;
|
|
379
379
|
});
|
|
380
380
|
}
|
|
381
|
-
|
|
381
|
+
getGlyphMinMax(min, max) {
|
|
382
382
|
return this.path.getMinMax(min, max);
|
|
383
383
|
}
|
|
384
|
-
|
|
385
|
-
return this.path.getBoundingBox();
|
|
384
|
+
getGlyphBoundingBox(withStyle) {
|
|
385
|
+
return this.path.getBoundingBox(withStyle);
|
|
386
386
|
}
|
|
387
387
|
drawTo(ctx, config = {}) {
|
|
388
388
|
drawPath({
|
|
@@ -502,7 +502,7 @@ class Effector extends Feature {
|
|
|
502
502
|
const boxes = [];
|
|
503
503
|
characters.forEach((character) => {
|
|
504
504
|
effects?.forEach((style) => {
|
|
505
|
-
const aabb = character.
|
|
505
|
+
const aabb = character.glyphBox.clone();
|
|
506
506
|
const m = this.getTransform2D(style);
|
|
507
507
|
tempV1.set(aabb.left, aabb.top);
|
|
508
508
|
tempV1.applyMatrix3(m);
|
|
@@ -549,12 +549,31 @@ var __publicField$1 = (obj, key, value) => {
|
|
|
549
549
|
__defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
550
550
|
return value;
|
|
551
551
|
};
|
|
552
|
-
|
|
552
|
+
const defaultHighlightRefer = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MiIgaGVpZ2h0PSI3MiIgdmlld0JveD0iMCAwIDcyIDcyIiBmaWxsPSJub25lIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTMyLjQwMjkgMjhIMzUuMTU5NFYzMy4xNzcxQzM1Ljk4MjEgMzIuMzExNSAzNi45NzEgMzEuODczNyAzOC4wOTQ4IDMxLjg3MzdDMzkuNjY3NiAzMS44NzM3IDQwLjkxNjYgMzIuNDI5NSA0MS44MzkgMzMuNTQzN0w0MS44NDAzIDMzLjU0NTNDNDIuNjcxNyAzNC41NzA1IDQzLjA5MTUgMzUuODU1OSA0My4wOTE1IDM3LjM4NzdDNDMuMDkxNSAzOC45NzYxIDQyLjY3MjkgNDAuMzAyOCA0MS44MTgzIDQxLjMzMDRMNDEuODE3MSA0MS4zMzE4QzQwLjg3MzEgNDIuNDQ2MSAzOS41ODMyIDQzIDM3Ljk3MjEgNDNDMzYuNzQ3NyA0MyAzNS43NDg4IDQyLjY1OTkgMzQuOTk1OCA0MS45NjkzVjQyLjcyNDdIMzIuNDAyOVYyOFpNMzcuNTQyOCAzNC4wOTI0QzM2Ljg1NDkgMzQuMDkyNCAzNi4zMDE0IDM0LjM1NjEgMzUuODQ4NyAzNC45MDA0TDM1Ljg0NTIgMzQuOTA0NkMzNS4zMzU4IDM1LjQ4NTMgMzUuMDc3NiAzNi4yOTc2IDM1LjA3NzYgMzcuMzQ4NFYzNy41MDU3QzM1LjA3NzYgMzguNDY0IDM1LjI3NzIgMzkuMjQ0MyAzNS42OTQzIDM5LjgyNzlDMzYuMTQ0MSA0MC40NTg3IDM2Ljc3MjYgNDAuNzgxMyAzNy42MjQ1IDQwLjc4MTNDMzguNTg3NCA0MC43ODEzIDM5LjI3MDcgNDAuNDUyNyAzOS43MTUyIDM5LjgxMjdDNDAuMDcyOCAzOS4yNjg0IDQwLjI3MzcgMzguNDY3MyA0MC4yNzM3IDM3LjM4NzdDNDAuMjczNyAzNi4zMTA1IDQwLjA1MzMgMzUuNTMxMyAzOS42NzgzIDM1LjAwNzdDMzkuMjM3MSAzNC40MDcxIDM4LjUzNDIgMzQuMDkyNCAzNy41NDI4IDM0LjA5MjRaIiBmaWxsPSIjMjIyNTI5Ii8+PHBhdGggZD0iTTQ5Ljg2MTQgMzEuODczN0M0OC4xNTM1IDMxLjg3MzcgNDYuODAxNiAzMi40MjM5IDQ1LjgzNDggMzMuNTM5MkM0NC45MzcgMzQuNTQ3MiA0NC40OTY2IDM1Ljg1NiA0NC40OTY2IDM3LjQyN0M0NC40OTY2IDM5LjAzNjggNDQuOTM2NyA0MC4zNjU5IDQ1Ljg1NTkgNDEuMzk0M0M0Ni44MDMxIDQyLjQ3MDYgNDguMTM0OCA0MyA0OS44MjA1IDQzQzUxLjIyNiA0MyA1Mi4zODI2IDQyLjY1NjMgNTMuMjQ3OSA0MS45Njk3QzU0LjEzNTkgNDEuMjYxNCA1NC43MDYxIDQwLjE4ODcgNTQuOTU3MyAzOC43NzkxTDU1IDM4LjUzOTdINTIuMjQ4NEw1Mi4yMjU5IDM4LjcyMDFDNTIuMTM3OSAzOS40MjUxIDUxLjg5MjUgMzkuOTI3OCA1MS41MTA5IDQwLjI1NThDNTEuMTI5NSA0MC41ODM1IDUwLjU4MzEgNDAuNzYxNiA0OS44NDA5IDQwLjc2MTZDNDkuMDAwMSA0MC43NjE2IDQ4LjM5NDkgNDAuNDcxNSA0Ny45OTA3IDM5LjkyMzdMNDcuOTg3NCAzOS45MTk0QzQ3LjUzNTYgMzkuMzQwMSA0Ny4zMTQ0IDM4LjUwNjIgNDcuMzE0NCAzNy40MDc0QzQ3LjMxNDQgMzYuMzMyMiA0Ny41NTQ0IDM1LjUxNzcgNDguMDA1OCAzNC45NTY4TDQ4LjAwNzggMzQuOTU0M0M0OC40NTM3IDM0LjM4MjUgNDkuMDYxOCAzNC4xMTIxIDQ5Ljg2MTQgMzQuMTEyMUM1MC41MjMgMzQuMTEyMSA1MS4wNDUxIDM0LjI2MTUgNTEuNDI3MiAzNC41NDA3QzUxLjc4ODQgMzQuODE5NCA1Mi4wNTMgMzUuMjQ0NyA1Mi4xODgxIDM1Ljg1NzFMNTIuMjIzOSAzNi4wMTk0SDU0Ljk1NDhMNTQuOTE3IDM1Ljc4MzVDNTQuNzA2MyAzNC40NjYgNTQuMTUzNiAzMy40NzAxIDUzLjI2MzQgMzIuODAxOUw1My4yNjAyIDMyLjc5OTVDNTIuMzk1MSAzMi4xNzU1IDUxLjI2MjEgMzEuODczNyA0OS44NjE0IDMxLjg3MzdaIiBmaWxsPSIjMjIyNTI5Ii8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNS43NTYxIDI4LjI3NTNIMjIuNzQ0TDE3IDQyLjcyNDdIMjAuMDE0MUwyMS4zNDI5IDM5LjIwNDlIMjcuMTU3MkwyOC40ODYgNDIuNzI0N0gzMS41MDAxTDI1Ljc1NjEgMjguMjc1M1pNMjIuMjEyNSAzNi45MDc2TDI0LjI1OTYgMzEuNDUzOUwyNi4yODg1IDM2LjkwNzZIMjIuMjEyNVoiIGZpbGw9IiMyMjI1MjkiLz48L3N2Zz4=";
|
|
553
|
+
const _Highlighter = class _Highlighter extends Feature {
|
|
553
554
|
constructor() {
|
|
554
555
|
super(...arguments);
|
|
555
556
|
__publicField$1(this, "paths", []);
|
|
556
557
|
}
|
|
558
|
+
static get refer() {
|
|
559
|
+
return this._refer;
|
|
560
|
+
}
|
|
561
|
+
static set refer(refer) {
|
|
562
|
+
this._refer = refer;
|
|
563
|
+
this.parsedRefer = modernPath2d.parseSvg(refer);
|
|
564
|
+
}
|
|
565
|
+
getReferBoundingBox() {
|
|
566
|
+
const max = modernPath2d.Vector2.MIN;
|
|
567
|
+
const min = modernPath2d.Vector2.MAX;
|
|
568
|
+
_Highlighter.parsedRefer.forEach((path) => {
|
|
569
|
+
path.getMinMax(min, max);
|
|
570
|
+
});
|
|
571
|
+
return new modernPath2d.BoundingBox(min.x, min.y, max.x - min.x, max.y - min.y);
|
|
572
|
+
}
|
|
557
573
|
getBoundingBox() {
|
|
574
|
+
if (!this.paths.length) {
|
|
575
|
+
return void 0;
|
|
576
|
+
}
|
|
558
577
|
const min = modernPath2d.Vector2.MAX;
|
|
559
578
|
const max = modernPath2d.Vector2.MIN;
|
|
560
579
|
this.paths.forEach((v) => v.path.getMinMax(min, max));
|
|
@@ -568,7 +587,7 @@ class Highlighter extends Feature {
|
|
|
568
587
|
characters.forEach((character) => {
|
|
569
588
|
const highlight = character.parent.highlight;
|
|
570
589
|
if (highlight?.url) {
|
|
571
|
-
if (prevHighlight?.url === highlight.url &&
|
|
590
|
+
if (prevHighlight?.url === highlight.url && prevHighlight?.strokeWidth === highlight.strokeWidth && prevHighlight?.repeatXByFontsize === highlight.repeatXByFontsize && prevHighlight?.overflowXHidden === highlight.overflowXHidden && group.length && group[0].boundingBox.top === character.boundingBox.top && group[0].fontSize === character.fontSize) {
|
|
572
591
|
group.push(character);
|
|
573
592
|
} else {
|
|
574
593
|
group = [];
|
|
@@ -580,8 +599,8 @@ class Highlighter extends Feature {
|
|
|
580
599
|
});
|
|
581
600
|
this.paths = groups.filter((characters2) => characters2.length).map((characters2) => {
|
|
582
601
|
return {
|
|
583
|
-
|
|
584
|
-
box: modernPath2d.BoundingBox.from(...characters2.map((c) => c.
|
|
602
|
+
highlight: characters2[0].parent.highlight,
|
|
603
|
+
box: modernPath2d.BoundingBox.from(...characters2.map((c) => c.glyphBox)),
|
|
585
604
|
baseline: Math.max(...characters2.map((c) => c.baseline)),
|
|
586
605
|
fontSize: characters2[0].fontSize
|
|
587
606
|
};
|
|
@@ -595,60 +614,57 @@ class Highlighter extends Feature {
|
|
|
595
614
|
paths.forEach((path) => path.getMinMax(min, max));
|
|
596
615
|
return {
|
|
597
616
|
paths,
|
|
598
|
-
box: new modernPath2d.BoundingBox(min.x, min.y, max.x - min.x, max.y - min.y)
|
|
599
|
-
viewBox: new modernPath2d.BoundingBox(...svg.getAttribute("viewBox").split(" ").map(Number))
|
|
617
|
+
box: new modernPath2d.BoundingBox(min.x, min.y, max.x - min.x, max.y - min.y)
|
|
600
618
|
};
|
|
601
619
|
}
|
|
602
620
|
_parseGroup(group) {
|
|
603
|
-
const {
|
|
604
|
-
const {
|
|
605
|
-
|
|
621
|
+
const { highlight, box: groupBox, fontSize } = group;
|
|
622
|
+
const {
|
|
623
|
+
strokeWidth = 1,
|
|
624
|
+
repeatXByFontsize = 0,
|
|
625
|
+
overflowXHidden = Boolean(repeatXByFontsize)
|
|
626
|
+
} = highlight;
|
|
627
|
+
const { box, paths } = this._parseSvg(highlight.url);
|
|
606
628
|
const result = [];
|
|
607
|
-
const
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
if (type === 0) {
|
|
623
|
-
const offset = {
|
|
624
|
-
x: groupBox.left - fontSize * 0.2,
|
|
625
|
-
y: groupBox.top
|
|
626
|
-
};
|
|
627
|
-
const scaleX = (groupBox.width + fontSize * 0.2 * 2) / box.width;
|
|
628
|
-
const scaleY = groupBox.height / box.height;
|
|
629
|
-
const m = new modernPath2d.Matrix3().translate(-box.x, -box.y).scale(scaleX, scaleY).translate(offset.x, offset.y);
|
|
629
|
+
const referBoundingBox = this.getReferBoundingBox();
|
|
630
|
+
const scale = {
|
|
631
|
+
x: repeatXByFontsize ? fontSize * repeatXByFontsize * (box.width / referBoundingBox.width) / box.width : groupBox.width * (box.width / referBoundingBox.width) / box.width,
|
|
632
|
+
y: groupBox.height * (box.height / referBoundingBox.height) / box.height
|
|
633
|
+
};
|
|
634
|
+
const styleScale = fontSize / box.width * 2;
|
|
635
|
+
const unitWidth = box.width * scale.x;
|
|
636
|
+
const total = Math.ceil(groupBox.width / unitWidth);
|
|
637
|
+
const offset = {
|
|
638
|
+
x: (box.left - referBoundingBox.left) * scale.x,
|
|
639
|
+
y: (box.top - referBoundingBox.top) * scale.y
|
|
640
|
+
};
|
|
641
|
+
const transform = new modernPath2d.Matrix3().translate(-box.left, -box.top).scale(scale.x, scale.y).translate(groupBox.left, groupBox.top).translate(offset.x, offset.y);
|
|
642
|
+
for (let i = 0; i < total; i++) {
|
|
643
|
+
const _transform = transform.clone().translate(i * unitWidth, 0);
|
|
630
644
|
paths.forEach((original) => {
|
|
631
|
-
const path = original.clone().transform(
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
645
|
+
const path = original.clone().transform(_transform);
|
|
646
|
+
if (path.style.strokeWidth) {
|
|
647
|
+
path.style.strokeWidth *= styleScale * strokeWidth;
|
|
648
|
+
}
|
|
649
|
+
if (path.style.strokeMiterlimit) {
|
|
650
|
+
path.style.strokeMiterlimit *= styleScale;
|
|
651
|
+
}
|
|
652
|
+
if (path.style.strokeDashoffset) {
|
|
653
|
+
path.style.strokeDashoffset *= styleScale;
|
|
654
|
+
}
|
|
655
|
+
if (path.style.strokeDasharray) {
|
|
656
|
+
path.style.strokeDasharray = path.style.strokeDasharray.map((v) => v * styleScale);
|
|
657
|
+
}
|
|
658
|
+
result.push({
|
|
659
|
+
clipRect: overflowXHidden ? new modernPath2d.BoundingBox(
|
|
660
|
+
groupBox.left + offset.x * 2,
|
|
661
|
+
groupBox.top - groupBox.height,
|
|
662
|
+
groupBox.width - offset.x * 2,
|
|
663
|
+
groupBox.height * 3
|
|
664
|
+
) : void 0,
|
|
665
|
+
path
|
|
650
666
|
});
|
|
651
|
-
}
|
|
667
|
+
});
|
|
652
668
|
}
|
|
653
669
|
return result;
|
|
654
670
|
}
|
|
@@ -663,7 +679,10 @@ class Highlighter extends Feature {
|
|
|
663
679
|
});
|
|
664
680
|
return this;
|
|
665
681
|
}
|
|
666
|
-
}
|
|
682
|
+
};
|
|
683
|
+
__publicField$1(_Highlighter, "_refer", defaultHighlightRefer);
|
|
684
|
+
__publicField$1(_Highlighter, "parsedRefer", modernPath2d.parseSvg(_Highlighter._refer));
|
|
685
|
+
let Highlighter = _Highlighter;
|
|
667
686
|
|
|
668
687
|
class Measurer extends Feature {
|
|
669
688
|
_styleToDomStyle(style) {
|
|
@@ -1074,13 +1093,13 @@ class Text {
|
|
|
1074
1093
|
this.boundingBox = boundingBox;
|
|
1075
1094
|
const characters = this.characters;
|
|
1076
1095
|
characters.forEach((c) => c.update());
|
|
1077
|
-
this.highlighter.highlight();
|
|
1078
1096
|
if (this.deformation) {
|
|
1079
1097
|
this.deformer.deform();
|
|
1080
1098
|
}
|
|
1099
|
+
this.highlighter.highlight();
|
|
1081
1100
|
const min = modernPath2d.Vector2.MAX;
|
|
1082
1101
|
const max = modernPath2d.Vector2.MIN;
|
|
1083
|
-
characters.forEach((c) => c.
|
|
1102
|
+
characters.forEach((c) => c.getGlyphMinMax(min, max));
|
|
1084
1103
|
this.renderBoundingBox = new modernPath2d.BoundingBox(min.x, min.y, max.x - min.x, max.y - min.y);
|
|
1085
1104
|
return this;
|
|
1086
1105
|
}
|
|
@@ -1094,16 +1113,16 @@ class Text {
|
|
|
1094
1113
|
this.update();
|
|
1095
1114
|
}
|
|
1096
1115
|
if (this.effects?.length) {
|
|
1097
|
-
this.renderBoundingBox = modernPath2d.BoundingBox.from(
|
|
1116
|
+
this.renderBoundingBox = modernPath2d.BoundingBox.from(...[
|
|
1098
1117
|
this.renderBoundingBox,
|
|
1099
1118
|
this.effector.getBoundingBox(),
|
|
1100
1119
|
this.highlighter.getBoundingBox()
|
|
1101
|
-
);
|
|
1120
|
+
].filter(Boolean));
|
|
1102
1121
|
} else {
|
|
1103
|
-
this.renderBoundingBox = modernPath2d.BoundingBox.from(
|
|
1122
|
+
this.renderBoundingBox = modernPath2d.BoundingBox.from(...[
|
|
1104
1123
|
this.renderBoundingBox,
|
|
1105
1124
|
this.highlighter.getBoundingBox()
|
|
1106
|
-
);
|
|
1125
|
+
].filter(Boolean));
|
|
1107
1126
|
}
|
|
1108
1127
|
this.renderer2D.setupView({ pixelRatio, ctx });
|
|
1109
1128
|
this.renderer2D.uploadColors({ ctx });
|
|
@@ -1128,6 +1147,7 @@ exports.Parser = Parser;
|
|
|
1128
1147
|
exports.Reflector = Reflector;
|
|
1129
1148
|
exports.Renderer2D = Renderer2D;
|
|
1130
1149
|
exports.Text = Text;
|
|
1150
|
+
exports.defaultHighlightRefer = defaultHighlightRefer;
|
|
1131
1151
|
exports.defaultTextStyles = defaultTextStyles;
|
|
1132
1152
|
exports.drawPath = drawPath;
|
|
1133
1153
|
exports.filterEmpty = filterEmpty;
|
package/dist/index.d.cts
CHANGED
|
@@ -57,6 +57,9 @@ type TextEffect = Partial<TextDrawStyle & {
|
|
|
57
57
|
type TextDeformation = () => void;
|
|
58
58
|
interface FragmentHighlight {
|
|
59
59
|
url: string;
|
|
60
|
+
strokeWidth?: number;
|
|
61
|
+
repeatXByFontsize?: number;
|
|
62
|
+
overflowXHidden?: boolean;
|
|
60
63
|
}
|
|
61
64
|
|
|
62
65
|
declare function parseColor(ctx: CanvasRenderingContext2D, source: string | CanvasGradient | CanvasPattern, box: BoundingBox): string | CanvasGradient | CanvasPattern;
|
|
@@ -111,7 +114,7 @@ declare class Character {
|
|
|
111
114
|
baseline: number;
|
|
112
115
|
centerDiviation: number;
|
|
113
116
|
glyphBox: BoundingBox;
|
|
114
|
-
|
|
117
|
+
center: VectorLike;
|
|
115
118
|
get computedStyle(): TextStyle;
|
|
116
119
|
get isVertical(): boolean;
|
|
117
120
|
get fontSize(): number;
|
|
@@ -124,11 +127,11 @@ declare class Character {
|
|
|
124
127
|
protected _italic(commands: GlyphPathCommand[], startPoint?: VectorLike): GlyphPathCommand[];
|
|
125
128
|
protected _rotation90(commands: GlyphPathCommand[], point: VectorLike): GlyphPathCommand[];
|
|
126
129
|
protected _transform(commands: GlyphPathCommand[], cb: (x: number, y: number) => number[]): GlyphPathCommand[];
|
|
127
|
-
|
|
130
|
+
getGlyphMinMax(min?: Vector2, max?: Vector2): {
|
|
128
131
|
min: Vector2;
|
|
129
132
|
max: Vector2;
|
|
130
133
|
};
|
|
131
|
-
|
|
134
|
+
getGlyphBoundingBox(withStyle?: boolean): BoundingBox;
|
|
132
135
|
drawTo(ctx: CanvasRenderingContext2D, config?: Partial<TextEffect>): void;
|
|
133
136
|
}
|
|
134
137
|
|
|
@@ -223,22 +226,27 @@ declare class Effector extends Feature {
|
|
|
223
226
|
}
|
|
224
227
|
|
|
225
228
|
interface HighlightGroup {
|
|
226
|
-
|
|
229
|
+
highlight: FragmentHighlight;
|
|
227
230
|
box: BoundingBox;
|
|
228
231
|
baseline: number;
|
|
229
232
|
fontSize: number;
|
|
230
233
|
}
|
|
234
|
+
declare const defaultHighlightRefer = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MiIgaGVpZ2h0PSI3MiIgdmlld0JveD0iMCAwIDcyIDcyIiBmaWxsPSJub25lIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTMyLjQwMjkgMjhIMzUuMTU5NFYzMy4xNzcxQzM1Ljk4MjEgMzIuMzExNSAzNi45NzEgMzEuODczNyAzOC4wOTQ4IDMxLjg3MzdDMzkuNjY3NiAzMS44NzM3IDQwLjkxNjYgMzIuNDI5NSA0MS44MzkgMzMuNTQzN0w0MS44NDAzIDMzLjU0NTNDNDIuNjcxNyAzNC41NzA1IDQzLjA5MTUgMzUuODU1OSA0My4wOTE1IDM3LjM4NzdDNDMuMDkxNSAzOC45NzYxIDQyLjY3MjkgNDAuMzAyOCA0MS44MTgzIDQxLjMzMDRMNDEuODE3MSA0MS4zMzE4QzQwLjg3MzEgNDIuNDQ2MSAzOS41ODMyIDQzIDM3Ljk3MjEgNDNDMzYuNzQ3NyA0MyAzNS43NDg4IDQyLjY1OTkgMzQuOTk1OCA0MS45NjkzVjQyLjcyNDdIMzIuNDAyOVYyOFpNMzcuNTQyOCAzNC4wOTI0QzM2Ljg1NDkgMzQuMDkyNCAzNi4zMDE0IDM0LjM1NjEgMzUuODQ4NyAzNC45MDA0TDM1Ljg0NTIgMzQuOTA0NkMzNS4zMzU4IDM1LjQ4NTMgMzUuMDc3NiAzNi4yOTc2IDM1LjA3NzYgMzcuMzQ4NFYzNy41MDU3QzM1LjA3NzYgMzguNDY0IDM1LjI3NzIgMzkuMjQ0MyAzNS42OTQzIDM5LjgyNzlDMzYuMTQ0MSA0MC40NTg3IDM2Ljc3MjYgNDAuNzgxMyAzNy42MjQ1IDQwLjc4MTNDMzguNTg3NCA0MC43ODEzIDM5LjI3MDcgNDAuNDUyNyAzOS43MTUyIDM5LjgxMjdDNDAuMDcyOCAzOS4yNjg0IDQwLjI3MzcgMzguNDY3MyA0MC4yNzM3IDM3LjM4NzdDNDAuMjczNyAzNi4zMTA1IDQwLjA1MzMgMzUuNTMxMyAzOS42NzgzIDM1LjAwNzdDMzkuMjM3MSAzNC40MDcxIDM4LjUzNDIgMzQuMDkyNCAzNy41NDI4IDM0LjA5MjRaIiBmaWxsPSIjMjIyNTI5Ii8+PHBhdGggZD0iTTQ5Ljg2MTQgMzEuODczN0M0OC4xNTM1IDMxLjg3MzcgNDYuODAxNiAzMi40MjM5IDQ1LjgzNDggMzMuNTM5MkM0NC45MzcgMzQuNTQ3MiA0NC40OTY2IDM1Ljg1NiA0NC40OTY2IDM3LjQyN0M0NC40OTY2IDM5LjAzNjggNDQuOTM2NyA0MC4zNjU5IDQ1Ljg1NTkgNDEuMzk0M0M0Ni44MDMxIDQyLjQ3MDYgNDguMTM0OCA0MyA0OS44MjA1IDQzQzUxLjIyNiA0MyA1Mi4zODI2IDQyLjY1NjMgNTMuMjQ3OSA0MS45Njk3QzU0LjEzNTkgNDEuMjYxNCA1NC43MDYxIDQwLjE4ODcgNTQuOTU3MyAzOC43NzkxTDU1IDM4LjUzOTdINTIuMjQ4NEw1Mi4yMjU5IDM4LjcyMDFDNTIuMTM3OSAzOS40MjUxIDUxLjg5MjUgMzkuOTI3OCA1MS41MTA5IDQwLjI1NThDNTEuMTI5NSA0MC41ODM1IDUwLjU4MzEgNDAuNzYxNiA0OS44NDA5IDQwLjc2MTZDNDkuMDAwMSA0MC43NjE2IDQ4LjM5NDkgNDAuNDcxNSA0Ny45OTA3IDM5LjkyMzdMNDcuOTg3NCAzOS45MTk0QzQ3LjUzNTYgMzkuMzQwMSA0Ny4zMTQ0IDM4LjUwNjIgNDcuMzE0NCAzNy40MDc0QzQ3LjMxNDQgMzYuMzMyMiA0Ny41NTQ0IDM1LjUxNzcgNDguMDA1OCAzNC45NTY4TDQ4LjAwNzggMzQuOTU0M0M0OC40NTM3IDM0LjM4MjUgNDkuMDYxOCAzNC4xMTIxIDQ5Ljg2MTQgMzQuMTEyMUM1MC41MjMgMzQuMTEyMSA1MS4wNDUxIDM0LjI2MTUgNTEuNDI3MiAzNC41NDA3QzUxLjc4ODQgMzQuODE5NCA1Mi4wNTMgMzUuMjQ0NyA1Mi4xODgxIDM1Ljg1NzFMNTIuMjIzOSAzNi4wMTk0SDU0Ljk1NDhMNTQuOTE3IDM1Ljc4MzVDNTQuNzA2MyAzNC40NjYgNTQuMTUzNiAzMy40NzAxIDUzLjI2MzQgMzIuODAxOUw1My4yNjAyIDMyLjc5OTVDNTIuMzk1MSAzMi4xNzU1IDUxLjI2MjEgMzEuODczNyA0OS44NjE0IDMxLjg3MzdaIiBmaWxsPSIjMjIyNTI5Ii8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNS43NTYxIDI4LjI3NTNIMjIuNzQ0TDE3IDQyLjcyNDdIMjAuMDE0MUwyMS4zNDI5IDM5LjIwNDlIMjcuMTU3MkwyOC40ODYgNDIuNzI0N0gzMS41MDAxTDI1Ljc1NjEgMjguMjc1M1pNMjIuMjEyNSAzNi45MDc2TDI0LjI1OTYgMzEuNDUzOUwyNi4yODg1IDM2LjkwNzZIMjIuMjEyNVoiIGZpbGw9IiMyMjI1MjkiLz48L3N2Zz4=";
|
|
231
235
|
declare class Highlighter extends Feature {
|
|
236
|
+
protected static _refer: string;
|
|
237
|
+
static parsedRefer: Path2D[];
|
|
238
|
+
static get refer(): string;
|
|
239
|
+
static set refer(refer: string);
|
|
232
240
|
paths: {
|
|
233
241
|
clipRect?: BoundingBox;
|
|
234
242
|
path: Path2D;
|
|
235
243
|
}[];
|
|
236
|
-
|
|
244
|
+
getReferBoundingBox(): BoundingBox;
|
|
245
|
+
getBoundingBox(): BoundingBox | undefined;
|
|
237
246
|
highlight(): void;
|
|
238
247
|
protected _parseSvg(url: string): {
|
|
239
248
|
paths: Path2D[];
|
|
240
249
|
box: BoundingBox;
|
|
241
|
-
viewBox: BoundingBox;
|
|
242
250
|
};
|
|
243
251
|
protected _parseGroup(group: HighlightGroup): {
|
|
244
252
|
clipRect?: BoundingBox;
|
|
@@ -348,4 +356,4 @@ declare function getPointPosition(point: {
|
|
|
348
356
|
y: number;
|
|
349
357
|
};
|
|
350
358
|
|
|
351
|
-
export { Character, Deformer, type DrawShapePathsOptions, type EffectOptions, Effector, type FontKerning, type FontStyle, type FontWeight, Fragment, type FragmentContent, type FragmentHighlight, Highlighter, type LinearGradient, type MeasuredCharacter, type MeasuredFragment, type MeasuredParagraph, type MeasuredResult, Measurer, Paragraph, type ParagraphContent, Parser, Reflector, type Render2dOptions, Renderer2D, Text, type TextAlign, type TextContent, type TextDecoration, type TextDeformation, type TextDrawStyle, type TextEffect, type TextLayoutStyle, type TextOptions, type TextOrientation, type TextRenderOptions, type TextStyle, type TextTransform, type TextWrap, type VerticalAlign, type WritingMode, defaultTextStyles, drawPath, filterEmpty, getPointPosition, getRotationPoint, getScalePoint, getSkewPoint, parseColor, uploadColor };
|
|
359
|
+
export { Character, Deformer, type DrawShapePathsOptions, type EffectOptions, Effector, type FontKerning, type FontStyle, type FontWeight, Fragment, type FragmentContent, type FragmentHighlight, Highlighter, type LinearGradient, type MeasuredCharacter, type MeasuredFragment, type MeasuredParagraph, type MeasuredResult, Measurer, Paragraph, type ParagraphContent, Parser, Reflector, type Render2dOptions, Renderer2D, Text, type TextAlign, type TextContent, type TextDecoration, type TextDeformation, type TextDrawStyle, type TextEffect, type TextLayoutStyle, type TextOptions, type TextOrientation, type TextRenderOptions, type TextStyle, type TextTransform, type TextWrap, type VerticalAlign, type WritingMode, defaultHighlightRefer, defaultTextStyles, drawPath, filterEmpty, getPointPosition, getRotationPoint, getScalePoint, getSkewPoint, parseColor, uploadColor };
|
package/dist/index.d.mts
CHANGED
|
@@ -57,6 +57,9 @@ type TextEffect = Partial<TextDrawStyle & {
|
|
|
57
57
|
type TextDeformation = () => void;
|
|
58
58
|
interface FragmentHighlight {
|
|
59
59
|
url: string;
|
|
60
|
+
strokeWidth?: number;
|
|
61
|
+
repeatXByFontsize?: number;
|
|
62
|
+
overflowXHidden?: boolean;
|
|
60
63
|
}
|
|
61
64
|
|
|
62
65
|
declare function parseColor(ctx: CanvasRenderingContext2D, source: string | CanvasGradient | CanvasPattern, box: BoundingBox): string | CanvasGradient | CanvasPattern;
|
|
@@ -111,7 +114,7 @@ declare class Character {
|
|
|
111
114
|
baseline: number;
|
|
112
115
|
centerDiviation: number;
|
|
113
116
|
glyphBox: BoundingBox;
|
|
114
|
-
|
|
117
|
+
center: VectorLike;
|
|
115
118
|
get computedStyle(): TextStyle;
|
|
116
119
|
get isVertical(): boolean;
|
|
117
120
|
get fontSize(): number;
|
|
@@ -124,11 +127,11 @@ declare class Character {
|
|
|
124
127
|
protected _italic(commands: GlyphPathCommand[], startPoint?: VectorLike): GlyphPathCommand[];
|
|
125
128
|
protected _rotation90(commands: GlyphPathCommand[], point: VectorLike): GlyphPathCommand[];
|
|
126
129
|
protected _transform(commands: GlyphPathCommand[], cb: (x: number, y: number) => number[]): GlyphPathCommand[];
|
|
127
|
-
|
|
130
|
+
getGlyphMinMax(min?: Vector2, max?: Vector2): {
|
|
128
131
|
min: Vector2;
|
|
129
132
|
max: Vector2;
|
|
130
133
|
};
|
|
131
|
-
|
|
134
|
+
getGlyphBoundingBox(withStyle?: boolean): BoundingBox;
|
|
132
135
|
drawTo(ctx: CanvasRenderingContext2D, config?: Partial<TextEffect>): void;
|
|
133
136
|
}
|
|
134
137
|
|
|
@@ -223,22 +226,27 @@ declare class Effector extends Feature {
|
|
|
223
226
|
}
|
|
224
227
|
|
|
225
228
|
interface HighlightGroup {
|
|
226
|
-
|
|
229
|
+
highlight: FragmentHighlight;
|
|
227
230
|
box: BoundingBox;
|
|
228
231
|
baseline: number;
|
|
229
232
|
fontSize: number;
|
|
230
233
|
}
|
|
234
|
+
declare const defaultHighlightRefer = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MiIgaGVpZ2h0PSI3MiIgdmlld0JveD0iMCAwIDcyIDcyIiBmaWxsPSJub25lIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTMyLjQwMjkgMjhIMzUuMTU5NFYzMy4xNzcxQzM1Ljk4MjEgMzIuMzExNSAzNi45NzEgMzEuODczNyAzOC4wOTQ4IDMxLjg3MzdDMzkuNjY3NiAzMS44NzM3IDQwLjkxNjYgMzIuNDI5NSA0MS44MzkgMzMuNTQzN0w0MS44NDAzIDMzLjU0NTNDNDIuNjcxNyAzNC41NzA1IDQzLjA5MTUgMzUuODU1OSA0My4wOTE1IDM3LjM4NzdDNDMuMDkxNSAzOC45NzYxIDQyLjY3MjkgNDAuMzAyOCA0MS44MTgzIDQxLjMzMDRMNDEuODE3MSA0MS4zMzE4QzQwLjg3MzEgNDIuNDQ2MSAzOS41ODMyIDQzIDM3Ljk3MjEgNDNDMzYuNzQ3NyA0MyAzNS43NDg4IDQyLjY1OTkgMzQuOTk1OCA0MS45NjkzVjQyLjcyNDdIMzIuNDAyOVYyOFpNMzcuNTQyOCAzNC4wOTI0QzM2Ljg1NDkgMzQuMDkyNCAzNi4zMDE0IDM0LjM1NjEgMzUuODQ4NyAzNC45MDA0TDM1Ljg0NTIgMzQuOTA0NkMzNS4zMzU4IDM1LjQ4NTMgMzUuMDc3NiAzNi4yOTc2IDM1LjA3NzYgMzcuMzQ4NFYzNy41MDU3QzM1LjA3NzYgMzguNDY0IDM1LjI3NzIgMzkuMjQ0MyAzNS42OTQzIDM5LjgyNzlDMzYuMTQ0MSA0MC40NTg3IDM2Ljc3MjYgNDAuNzgxMyAzNy42MjQ1IDQwLjc4MTNDMzguNTg3NCA0MC43ODEzIDM5LjI3MDcgNDAuNDUyNyAzOS43MTUyIDM5LjgxMjdDNDAuMDcyOCAzOS4yNjg0IDQwLjI3MzcgMzguNDY3MyA0MC4yNzM3IDM3LjM4NzdDNDAuMjczNyAzNi4zMTA1IDQwLjA1MzMgMzUuNTMxMyAzOS42NzgzIDM1LjAwNzdDMzkuMjM3MSAzNC40MDcxIDM4LjUzNDIgMzQuMDkyNCAzNy41NDI4IDM0LjA5MjRaIiBmaWxsPSIjMjIyNTI5Ii8+PHBhdGggZD0iTTQ5Ljg2MTQgMzEuODczN0M0OC4xNTM1IDMxLjg3MzcgNDYuODAxNiAzMi40MjM5IDQ1LjgzNDggMzMuNTM5MkM0NC45MzcgMzQuNTQ3MiA0NC40OTY2IDM1Ljg1NiA0NC40OTY2IDM3LjQyN0M0NC40OTY2IDM5LjAzNjggNDQuOTM2NyA0MC4zNjU5IDQ1Ljg1NTkgNDEuMzk0M0M0Ni44MDMxIDQyLjQ3MDYgNDguMTM0OCA0MyA0OS44MjA1IDQzQzUxLjIyNiA0MyA1Mi4zODI2IDQyLjY1NjMgNTMuMjQ3OSA0MS45Njk3QzU0LjEzNTkgNDEuMjYxNCA1NC43MDYxIDQwLjE4ODcgNTQuOTU3MyAzOC43NzkxTDU1IDM4LjUzOTdINTIuMjQ4NEw1Mi4yMjU5IDM4LjcyMDFDNTIuMTM3OSAzOS40MjUxIDUxLjg5MjUgMzkuOTI3OCA1MS41MTA5IDQwLjI1NThDNTEuMTI5NSA0MC41ODM1IDUwLjU4MzEgNDAuNzYxNiA0OS44NDA5IDQwLjc2MTZDNDkuMDAwMSA0MC43NjE2IDQ4LjM5NDkgNDAuNDcxNSA0Ny45OTA3IDM5LjkyMzdMNDcuOTg3NCAzOS45MTk0QzQ3LjUzNTYgMzkuMzQwMSA0Ny4zMTQ0IDM4LjUwNjIgNDcuMzE0NCAzNy40MDc0QzQ3LjMxNDQgMzYuMzMyMiA0Ny41NTQ0IDM1LjUxNzcgNDguMDA1OCAzNC45NTY4TDQ4LjAwNzggMzQuOTU0M0M0OC40NTM3IDM0LjM4MjUgNDkuMDYxOCAzNC4xMTIxIDQ5Ljg2MTQgMzQuMTEyMUM1MC41MjMgMzQuMTEyMSA1MS4wNDUxIDM0LjI2MTUgNTEuNDI3MiAzNC41NDA3QzUxLjc4ODQgMzQuODE5NCA1Mi4wNTMgMzUuMjQ0NyA1Mi4xODgxIDM1Ljg1NzFMNTIuMjIzOSAzNi4wMTk0SDU0Ljk1NDhMNTQuOTE3IDM1Ljc4MzVDNTQuNzA2MyAzNC40NjYgNTQuMTUzNiAzMy40NzAxIDUzLjI2MzQgMzIuODAxOUw1My4yNjAyIDMyLjc5OTVDNTIuMzk1MSAzMi4xNzU1IDUxLjI2MjEgMzEuODczNyA0OS44NjE0IDMxLjg3MzdaIiBmaWxsPSIjMjIyNTI5Ii8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNS43NTYxIDI4LjI3NTNIMjIuNzQ0TDE3IDQyLjcyNDdIMjAuMDE0MUwyMS4zNDI5IDM5LjIwNDlIMjcuMTU3MkwyOC40ODYgNDIuNzI0N0gzMS41MDAxTDI1Ljc1NjEgMjguMjc1M1pNMjIuMjEyNSAzNi45MDc2TDI0LjI1OTYgMzEuNDUzOUwyNi4yODg1IDM2LjkwNzZIMjIuMjEyNVoiIGZpbGw9IiMyMjI1MjkiLz48L3N2Zz4=";
|
|
231
235
|
declare class Highlighter extends Feature {
|
|
236
|
+
protected static _refer: string;
|
|
237
|
+
static parsedRefer: Path2D[];
|
|
238
|
+
static get refer(): string;
|
|
239
|
+
static set refer(refer: string);
|
|
232
240
|
paths: {
|
|
233
241
|
clipRect?: BoundingBox;
|
|
234
242
|
path: Path2D;
|
|
235
243
|
}[];
|
|
236
|
-
|
|
244
|
+
getReferBoundingBox(): BoundingBox;
|
|
245
|
+
getBoundingBox(): BoundingBox | undefined;
|
|
237
246
|
highlight(): void;
|
|
238
247
|
protected _parseSvg(url: string): {
|
|
239
248
|
paths: Path2D[];
|
|
240
249
|
box: BoundingBox;
|
|
241
|
-
viewBox: BoundingBox;
|
|
242
250
|
};
|
|
243
251
|
protected _parseGroup(group: HighlightGroup): {
|
|
244
252
|
clipRect?: BoundingBox;
|
|
@@ -348,4 +356,4 @@ declare function getPointPosition(point: {
|
|
|
348
356
|
y: number;
|
|
349
357
|
};
|
|
350
358
|
|
|
351
|
-
export { Character, Deformer, type DrawShapePathsOptions, type EffectOptions, Effector, type FontKerning, type FontStyle, type FontWeight, Fragment, type FragmentContent, type FragmentHighlight, Highlighter, type LinearGradient, type MeasuredCharacter, type MeasuredFragment, type MeasuredParagraph, type MeasuredResult, Measurer, Paragraph, type ParagraphContent, Parser, Reflector, type Render2dOptions, Renderer2D, Text, type TextAlign, type TextContent, type TextDecoration, type TextDeformation, type TextDrawStyle, type TextEffect, type TextLayoutStyle, type TextOptions, type TextOrientation, type TextRenderOptions, type TextStyle, type TextTransform, type TextWrap, type VerticalAlign, type WritingMode, defaultTextStyles, drawPath, filterEmpty, getPointPosition, getRotationPoint, getScalePoint, getSkewPoint, parseColor, uploadColor };
|
|
359
|
+
export { Character, Deformer, type DrawShapePathsOptions, type EffectOptions, Effector, type FontKerning, type FontStyle, type FontWeight, Fragment, type FragmentContent, type FragmentHighlight, Highlighter, type LinearGradient, type MeasuredCharacter, type MeasuredFragment, type MeasuredParagraph, type MeasuredResult, Measurer, Paragraph, type ParagraphContent, Parser, Reflector, type Render2dOptions, Renderer2D, Text, type TextAlign, type TextContent, type TextDecoration, type TextDeformation, type TextDrawStyle, type TextEffect, type TextLayoutStyle, type TextOptions, type TextOrientation, type TextRenderOptions, type TextStyle, type TextTransform, type TextWrap, type VerticalAlign, type WritingMode, defaultHighlightRefer, defaultTextStyles, drawPath, filterEmpty, getPointPosition, getRotationPoint, getScalePoint, getSkewPoint, parseColor, uploadColor };
|
package/dist/index.d.ts
CHANGED
|
@@ -57,6 +57,9 @@ type TextEffect = Partial<TextDrawStyle & {
|
|
|
57
57
|
type TextDeformation = () => void;
|
|
58
58
|
interface FragmentHighlight {
|
|
59
59
|
url: string;
|
|
60
|
+
strokeWidth?: number;
|
|
61
|
+
repeatXByFontsize?: number;
|
|
62
|
+
overflowXHidden?: boolean;
|
|
60
63
|
}
|
|
61
64
|
|
|
62
65
|
declare function parseColor(ctx: CanvasRenderingContext2D, source: string | CanvasGradient | CanvasPattern, box: BoundingBox): string | CanvasGradient | CanvasPattern;
|
|
@@ -111,7 +114,7 @@ declare class Character {
|
|
|
111
114
|
baseline: number;
|
|
112
115
|
centerDiviation: number;
|
|
113
116
|
glyphBox: BoundingBox;
|
|
114
|
-
|
|
117
|
+
center: VectorLike;
|
|
115
118
|
get computedStyle(): TextStyle;
|
|
116
119
|
get isVertical(): boolean;
|
|
117
120
|
get fontSize(): number;
|
|
@@ -124,11 +127,11 @@ declare class Character {
|
|
|
124
127
|
protected _italic(commands: GlyphPathCommand[], startPoint?: VectorLike): GlyphPathCommand[];
|
|
125
128
|
protected _rotation90(commands: GlyphPathCommand[], point: VectorLike): GlyphPathCommand[];
|
|
126
129
|
protected _transform(commands: GlyphPathCommand[], cb: (x: number, y: number) => number[]): GlyphPathCommand[];
|
|
127
|
-
|
|
130
|
+
getGlyphMinMax(min?: Vector2, max?: Vector2): {
|
|
128
131
|
min: Vector2;
|
|
129
132
|
max: Vector2;
|
|
130
133
|
};
|
|
131
|
-
|
|
134
|
+
getGlyphBoundingBox(withStyle?: boolean): BoundingBox;
|
|
132
135
|
drawTo(ctx: CanvasRenderingContext2D, config?: Partial<TextEffect>): void;
|
|
133
136
|
}
|
|
134
137
|
|
|
@@ -223,22 +226,27 @@ declare class Effector extends Feature {
|
|
|
223
226
|
}
|
|
224
227
|
|
|
225
228
|
interface HighlightGroup {
|
|
226
|
-
|
|
229
|
+
highlight: FragmentHighlight;
|
|
227
230
|
box: BoundingBox;
|
|
228
231
|
baseline: number;
|
|
229
232
|
fontSize: number;
|
|
230
233
|
}
|
|
234
|
+
declare const defaultHighlightRefer = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MiIgaGVpZ2h0PSI3MiIgdmlld0JveD0iMCAwIDcyIDcyIiBmaWxsPSJub25lIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTMyLjQwMjkgMjhIMzUuMTU5NFYzMy4xNzcxQzM1Ljk4MjEgMzIuMzExNSAzNi45NzEgMzEuODczNyAzOC4wOTQ4IDMxLjg3MzdDMzkuNjY3NiAzMS44NzM3IDQwLjkxNjYgMzIuNDI5NSA0MS44MzkgMzMuNTQzN0w0MS44NDAzIDMzLjU0NTNDNDIuNjcxNyAzNC41NzA1IDQzLjA5MTUgMzUuODU1OSA0My4wOTE1IDM3LjM4NzdDNDMuMDkxNSAzOC45NzYxIDQyLjY3MjkgNDAuMzAyOCA0MS44MTgzIDQxLjMzMDRMNDEuODE3MSA0MS4zMzE4QzQwLjg3MzEgNDIuNDQ2MSAzOS41ODMyIDQzIDM3Ljk3MjEgNDNDMzYuNzQ3NyA0MyAzNS43NDg4IDQyLjY1OTkgMzQuOTk1OCA0MS45NjkzVjQyLjcyNDdIMzIuNDAyOVYyOFpNMzcuNTQyOCAzNC4wOTI0QzM2Ljg1NDkgMzQuMDkyNCAzNi4zMDE0IDM0LjM1NjEgMzUuODQ4NyAzNC45MDA0TDM1Ljg0NTIgMzQuOTA0NkMzNS4zMzU4IDM1LjQ4NTMgMzUuMDc3NiAzNi4yOTc2IDM1LjA3NzYgMzcuMzQ4NFYzNy41MDU3QzM1LjA3NzYgMzguNDY0IDM1LjI3NzIgMzkuMjQ0MyAzNS42OTQzIDM5LjgyNzlDMzYuMTQ0MSA0MC40NTg3IDM2Ljc3MjYgNDAuNzgxMyAzNy42MjQ1IDQwLjc4MTNDMzguNTg3NCA0MC43ODEzIDM5LjI3MDcgNDAuNDUyNyAzOS43MTUyIDM5LjgxMjdDNDAuMDcyOCAzOS4yNjg0IDQwLjI3MzcgMzguNDY3MyA0MC4yNzM3IDM3LjM4NzdDNDAuMjczNyAzNi4zMTA1IDQwLjA1MzMgMzUuNTMxMyAzOS42NzgzIDM1LjAwNzdDMzkuMjM3MSAzNC40MDcxIDM4LjUzNDIgMzQuMDkyNCAzNy41NDI4IDM0LjA5MjRaIiBmaWxsPSIjMjIyNTI5Ii8+PHBhdGggZD0iTTQ5Ljg2MTQgMzEuODczN0M0OC4xNTM1IDMxLjg3MzcgNDYuODAxNiAzMi40MjM5IDQ1LjgzNDggMzMuNTM5MkM0NC45MzcgMzQuNTQ3MiA0NC40OTY2IDM1Ljg1NiA0NC40OTY2IDM3LjQyN0M0NC40OTY2IDM5LjAzNjggNDQuOTM2NyA0MC4zNjU5IDQ1Ljg1NTkgNDEuMzk0M0M0Ni44MDMxIDQyLjQ3MDYgNDguMTM0OCA0MyA0OS44MjA1IDQzQzUxLjIyNiA0MyA1Mi4zODI2IDQyLjY1NjMgNTMuMjQ3OSA0MS45Njk3QzU0LjEzNTkgNDEuMjYxNCA1NC43MDYxIDQwLjE4ODcgNTQuOTU3MyAzOC43NzkxTDU1IDM4LjUzOTdINTIuMjQ4NEw1Mi4yMjU5IDM4LjcyMDFDNTIuMTM3OSAzOS40MjUxIDUxLjg5MjUgMzkuOTI3OCA1MS41MTA5IDQwLjI1NThDNTEuMTI5NSA0MC41ODM1IDUwLjU4MzEgNDAuNzYxNiA0OS44NDA5IDQwLjc2MTZDNDkuMDAwMSA0MC43NjE2IDQ4LjM5NDkgNDAuNDcxNSA0Ny45OTA3IDM5LjkyMzdMNDcuOTg3NCAzOS45MTk0QzQ3LjUzNTYgMzkuMzQwMSA0Ny4zMTQ0IDM4LjUwNjIgNDcuMzE0NCAzNy40MDc0QzQ3LjMxNDQgMzYuMzMyMiA0Ny41NTQ0IDM1LjUxNzcgNDguMDA1OCAzNC45NTY4TDQ4LjAwNzggMzQuOTU0M0M0OC40NTM3IDM0LjM4MjUgNDkuMDYxOCAzNC4xMTIxIDQ5Ljg2MTQgMzQuMTEyMUM1MC41MjMgMzQuMTEyMSA1MS4wNDUxIDM0LjI2MTUgNTEuNDI3MiAzNC41NDA3QzUxLjc4ODQgMzQuODE5NCA1Mi4wNTMgMzUuMjQ0NyA1Mi4xODgxIDM1Ljg1NzFMNTIuMjIzOSAzNi4wMTk0SDU0Ljk1NDhMNTQuOTE3IDM1Ljc4MzVDNTQuNzA2MyAzNC40NjYgNTQuMTUzNiAzMy40NzAxIDUzLjI2MzQgMzIuODAxOUw1My4yNjAyIDMyLjc5OTVDNTIuMzk1MSAzMi4xNzU1IDUxLjI2MjEgMzEuODczNyA0OS44NjE0IDMxLjg3MzdaIiBmaWxsPSIjMjIyNTI5Ii8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNS43NTYxIDI4LjI3NTNIMjIuNzQ0TDE3IDQyLjcyNDdIMjAuMDE0MUwyMS4zNDI5IDM5LjIwNDlIMjcuMTU3MkwyOC40ODYgNDIuNzI0N0gzMS41MDAxTDI1Ljc1NjEgMjguMjc1M1pNMjIuMjEyNSAzNi45MDc2TDI0LjI1OTYgMzEuNDUzOUwyNi4yODg1IDM2LjkwNzZIMjIuMjEyNVoiIGZpbGw9IiMyMjI1MjkiLz48L3N2Zz4=";
|
|
231
235
|
declare class Highlighter extends Feature {
|
|
236
|
+
protected static _refer: string;
|
|
237
|
+
static parsedRefer: Path2D[];
|
|
238
|
+
static get refer(): string;
|
|
239
|
+
static set refer(refer: string);
|
|
232
240
|
paths: {
|
|
233
241
|
clipRect?: BoundingBox;
|
|
234
242
|
path: Path2D;
|
|
235
243
|
}[];
|
|
236
|
-
|
|
244
|
+
getReferBoundingBox(): BoundingBox;
|
|
245
|
+
getBoundingBox(): BoundingBox | undefined;
|
|
237
246
|
highlight(): void;
|
|
238
247
|
protected _parseSvg(url: string): {
|
|
239
248
|
paths: Path2D[];
|
|
240
249
|
box: BoundingBox;
|
|
241
|
-
viewBox: BoundingBox;
|
|
242
250
|
};
|
|
243
251
|
protected _parseGroup(group: HighlightGroup): {
|
|
244
252
|
clipRect?: BoundingBox;
|
|
@@ -348,4 +356,4 @@ declare function getPointPosition(point: {
|
|
|
348
356
|
y: number;
|
|
349
357
|
};
|
|
350
358
|
|
|
351
|
-
export { Character, Deformer, type DrawShapePathsOptions, type EffectOptions, Effector, type FontKerning, type FontStyle, type FontWeight, Fragment, type FragmentContent, type FragmentHighlight, Highlighter, type LinearGradient, type MeasuredCharacter, type MeasuredFragment, type MeasuredParagraph, type MeasuredResult, Measurer, Paragraph, type ParagraphContent, Parser, Reflector, type Render2dOptions, Renderer2D, Text, type TextAlign, type TextContent, type TextDecoration, type TextDeformation, type TextDrawStyle, type TextEffect, type TextLayoutStyle, type TextOptions, type TextOrientation, type TextRenderOptions, type TextStyle, type TextTransform, type TextWrap, type VerticalAlign, type WritingMode, defaultTextStyles, drawPath, filterEmpty, getPointPosition, getRotationPoint, getScalePoint, getSkewPoint, parseColor, uploadColor };
|
|
359
|
+
export { Character, Deformer, type DrawShapePathsOptions, type EffectOptions, Effector, type FontKerning, type FontStyle, type FontWeight, Fragment, type FragmentContent, type FragmentHighlight, Highlighter, type LinearGradient, type MeasuredCharacter, type MeasuredFragment, type MeasuredParagraph, type MeasuredResult, Measurer, Paragraph, type ParagraphContent, Parser, Reflector, type Render2dOptions, Renderer2D, Text, type TextAlign, type TextContent, type TextDecoration, type TextDeformation, type TextDrawStyle, type TextEffect, type TextLayoutStyle, type TextOptions, type TextOrientation, type TextRenderOptions, type TextStyle, type TextTransform, type TextWrap, type VerticalAlign, type WritingMode, defaultHighlightRefer, defaultTextStyles, drawPath, filterEmpty, getPointPosition, getRotationPoint, getScalePoint, getSkewPoint, parseColor, uploadColor };
|