postext 1.25.4 → 1.26.0
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/__tests__/cjk/headingNumberMark.test.d.ts +2 -0
- package/dist/__tests__/cjk/headingNumberMark.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/headingNumberMark.test.js +108 -0
- package/dist/__tests__/cjk/headingNumberMark.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseDash.test.d.ts +2 -0
- package/dist/__tests__/cjk/japaneseDash.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/japaneseDash.test.js +250 -0
- package/dist/__tests__/cjk/japaneseDash.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseSpacing.test.js +1 -1
- package/dist/__tests__/cjk/punctuation.test.js +5 -3
- package/dist/__tests__/cjk/punctuation.test.js.map +1 -1
- package/dist/__tests__/columnRuleBands.test.js +47 -0
- package/dist/__tests__/columnRuleBands.test.js.map +1 -1
- package/dist/__tests__/comics/canvas.test.js +38 -1
- package/dist/__tests__/comics/canvas.test.js.map +1 -1
- package/dist/__tests__/comics/html.test.js +16 -3
- package/dist/__tests__/comics/html.test.js.map +1 -1
- package/dist/__tests__/design/cjkDesignDash.test.js +7 -4
- package/dist/__tests__/design/cjkDesignDash.test.js.map +1 -1
- package/dist/__tests__/englishApostropheHyphenation.test.d.ts +2 -0
- package/dist/__tests__/englishApostropheHyphenation.test.d.ts.map +1 -0
- package/dist/__tests__/englishApostropheHyphenation.test.js +47 -0
- package/dist/__tests__/englishApostropheHyphenation.test.js.map +1 -0
- package/dist/__tests__/exports.test.js +1 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/leaderMinRepeats.test.d.ts +2 -0
- package/dist/__tests__/leaderMinRepeats.test.d.ts.map +1 -0
- package/dist/__tests__/leaderMinRepeats.test.js +109 -0
- package/dist/__tests__/leaderMinRepeats.test.js.map +1 -0
- package/dist/__tests__/pipeline/footnoteRuntTracking.test.d.ts +2 -0
- package/dist/__tests__/pipeline/footnoteRuntTracking.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/footnoteRuntTracking.test.js +90 -0
- package/dist/__tests__/pipeline/footnoteRuntTracking.test.js.map +1 -0
- package/dist/__tests__/pipeline/orderedNumberAlign.test.d.ts +2 -0
- package/dist/__tests__/pipeline/orderedNumberAlign.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/orderedNumberAlign.test.js +108 -0
- package/dist/__tests__/pipeline/orderedNumberAlign.test.js.map +1 -0
- package/dist/__tests__/pipeline/trailingCapColumnNote.test.d.ts +2 -0
- package/dist/__tests__/pipeline/trailingCapColumnNote.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/trailingCapColumnNote.test.js +63 -0
- package/dist/__tests__/pipeline/trailingCapColumnNote.test.js.map +1 -0
- package/dist/__tests__/pipeline/trailingCapFloatHead.test.d.ts +2 -0
- package/dist/__tests__/pipeline/trailingCapFloatHead.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/trailingCapFloatHead.test.js +91 -0
- package/dist/__tests__/pipeline/trailingCapFloatHead.test.js.map +1 -0
- package/dist/__tests__/rtl/arabicLeadingNumbers.test.d.ts +2 -0
- package/dist/__tests__/rtl/arabicLeadingNumbers.test.d.ts.map +1 -0
- package/dist/__tests__/rtl/arabicLeadingNumbers.test.js +186 -0
- package/dist/__tests__/rtl/arabicLeadingNumbers.test.js.map +1 -0
- package/dist/__tests__/rtl/listMarkerDirection.test.d.ts +2 -0
- package/dist/__tests__/rtl/listMarkerDirection.test.d.ts.map +1 -0
- package/dist/__tests__/rtl/listMarkerDirection.test.js +197 -0
- package/dist/__tests__/rtl/listMarkerDirection.test.js.map +1 -0
- package/dist/__tests__/trackedLigatures.test.d.ts +2 -0
- package/dist/__tests__/trackedLigatures.test.d.ts.map +1 -0
- package/dist/__tests__/trackedLigatures.test.js +230 -0
- package/dist/__tests__/trackedLigatures.test.js.map +1 -0
- package/dist/__tests__/vectorRasterScale.test.d.ts +2 -0
- package/dist/__tests__/vectorRasterScale.test.d.ts.map +1 -0
- package/dist/__tests__/vectorRasterScale.test.js +304 -0
- package/dist/__tests__/vectorRasterScale.test.js.map +1 -0
- package/dist/bidi.d.ts +43 -3
- package/dist/bidi.d.ts.map +1 -1
- package/dist/bidi.js +29 -7
- package/dist/bidi.js.map +1 -1
- package/dist/canvas-backend/blockRender.d.ts.map +1 -1
- package/dist/canvas-backend/blockRender.js +43 -5
- package/dist/canvas-backend/blockRender.js.map +1 -1
- package/dist/canvas-backend/comic.d.ts +8 -4
- package/dist/canvas-backend/comic.d.ts.map +1 -1
- package/dist/canvas-backend/comic.js +13 -6
- package/dist/canvas-backend/comic.js.map +1 -1
- package/dist/canvas-backend/deviceScale.d.ts +31 -0
- package/dist/canvas-backend/deviceScale.d.ts.map +1 -0
- package/dist/canvas-backend/deviceScale.js +45 -0
- package/dist/canvas-backend/deviceScale.js.map +1 -0
- package/dist/canvas-backend/index.d.ts +5 -1
- package/dist/canvas-backend/index.d.ts.map +1 -1
- package/dist/canvas-backend/index.js.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.d.ts +5 -3
- package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.js +39 -6
- package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
- package/dist/canvas-backend/trackedText.d.ts +55 -0
- package/dist/canvas-backend/trackedText.d.ts.map +1 -0
- package/dist/canvas-backend/trackedText.js +145 -0
- package/dist/canvas-backend/trackedText.js.map +1 -0
- package/dist/canvas-backend/wordRuns.d.ts +4 -0
- package/dist/canvas-backend/wordRuns.d.ts.map +1 -1
- package/dist/canvas-backend/wordRuns.js +9 -1
- package/dist/canvas-backend/wordRuns.js.map +1 -1
- package/dist/columnRule.d.ts +2 -1
- package/dist/columnRule.d.ts.map +1 -1
- package/dist/columnRule.js +11 -3
- package/dist/columnRule.js.map +1 -1
- package/dist/comics/layoutPage.d.ts.map +1 -1
- package/dist/comics/layoutPage.js +54 -2
- package/dist/comics/layoutPage.js.map +1 -1
- package/dist/comics/lettering/__tests__/ellipsisFace.test.d.ts +2 -0
- package/dist/comics/lettering/__tests__/ellipsisFace.test.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/ellipsisFace.test.js +54 -0
- package/dist/comics/lettering/__tests__/ellipsisFace.test.js.map +1 -0
- package/dist/comics/lettering/__tests__/polish.test.js +8 -0
- package/dist/comics/lettering/__tests__/polish.test.js.map +1 -1
- package/dist/comics/lettering/__tests__/round4.test.d.ts +2 -0
- package/dist/comics/lettering/__tests__/round4.test.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/round4.test.js +212 -0
- package/dist/comics/lettering/__tests__/round4.test.js.map +1 -0
- package/dist/comics/lettering/letter.js +2 -2
- package/dist/comics/lettering/letter.js.map +1 -1
- package/dist/comics/lettering/placement.d.ts +10 -3
- package/dist/comics/lettering/placement.d.ts.map +1 -1
- package/dist/comics/lettering/placement.js +162 -22
- package/dist/comics/lettering/placement.js.map +1 -1
- package/dist/comics/lettering/text.d.ts.map +1 -1
- package/dist/comics/lettering/text.js +25 -3
- package/dist/comics/lettering/text.js.map +1 -1
- package/dist/comics/lettering/types.d.ts +29 -2
- package/dist/comics/lettering/types.d.ts.map +1 -1
- package/dist/defaults/orderedLists.d.ts +1 -0
- package/dist/defaults/orderedLists.d.ts.map +1 -1
- package/dist/defaults/orderedLists.js +7 -0
- package/dist/defaults/orderedLists.js.map +1 -1
- package/dist/design/bidiText.d.ts +5 -2
- package/dist/design/bidiText.d.ts.map +1 -1
- package/dist/design/bidiText.js +7 -4
- package/dist/design/bidiText.js.map +1 -1
- package/dist/design/layout.d.ts +5 -0
- package/dist/design/layout.d.ts.map +1 -1
- package/dist/design/layout.js +1 -1
- package/dist/design/layout.js.map +1 -1
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +32 -6
- package/dist/html-backend.js.map +1 -1
- package/dist/htmlComic.d.ts +2 -1
- package/dist/htmlComic.d.ts.map +1 -1
- package/dist/htmlComic.js +14 -1
- package/dist/htmlComic.js.map +1 -1
- package/dist/hyphenate.d.ts.map +1 -1
- package/dist/hyphenate.js +52 -0
- package/dist/hyphenate.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/math/rasterCache.d.ts +7 -1
- package/dist/math/rasterCache.d.ts.map +1 -1
- package/dist/math/rasterCache.js +23 -11
- package/dist/math/rasterCache.js.map +1 -1
- package/dist/measure/bidiLines.d.ts +8 -0
- package/dist/measure/bidiLines.d.ts.map +1 -1
- package/dist/measure/bidiLines.js +13 -0
- package/dist/measure/bidiLines.js.map +1 -1
- package/dist/measure/cache.d.ts.map +1 -1
- package/dist/measure/cache.js +5 -3
- package/dist/measure/cache.js.map +1 -1
- package/dist/measure/cjkCompose.d.ts +10 -0
- package/dist/measure/cjkCompose.d.ts.map +1 -1
- package/dist/measure/cjkCompose.js +95 -19
- package/dist/measure/cjkCompose.js.map +1 -1
- package/dist/measure/cjkPunctuation.d.ts +10 -0
- package/dist/measure/cjkPunctuation.d.ts.map +1 -1
- package/dist/measure/cjkPunctuation.js +18 -1
- package/dist/measure/cjkPunctuation.js.map +1 -1
- package/dist/measure/hardBreaks.d.ts.map +1 -1
- package/dist/measure/hardBreaks.js +4 -1
- package/dist/measure/hardBreaks.js.map +1 -1
- package/dist/measure/leader.d.ts +6 -1
- package/dist/measure/leader.d.ts.map +1 -1
- package/dist/measure/leader.js +8 -3
- package/dist/measure/leader.js.map +1 -1
- package/dist/measure/plain.d.ts.map +1 -1
- package/dist/measure/plain.js +4 -2
- package/dist/measure/plain.js.map +1 -1
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +7 -4
- package/dist/measure/rich.js.map +1 -1
- package/dist/measure/types.d.ts +7 -0
- package/dist/measure/types.d.ts.map +1 -1
- package/dist/measure/types.js.map +1 -1
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +38 -5
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/buildBlockKind.d.ts +5 -0
- package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
- package/dist/pipeline/buildBlockKind.js +1 -0
- package/dist/pipeline/buildBlockKind.js.map +1 -1
- package/dist/pipeline/calloutLayout.d.ts.map +1 -1
- package/dist/pipeline/calloutLayout.js +8 -4
- package/dist/pipeline/calloutLayout.js.map +1 -1
- package/dist/pipeline/citations.d.ts.map +1 -1
- package/dist/pipeline/citations.js +52 -6
- package/dist/pipeline/citations.js.map +1 -1
- package/dist/pipeline/config.d.ts +6 -0
- package/dist/pipeline/config.d.ts.map +1 -1
- package/dist/pipeline/config.js +12 -1
- package/dist/pipeline/config.js.map +1 -1
- package/dist/pipeline/headerFooter.d.ts +2 -0
- package/dist/pipeline/headerFooter.d.ts.map +1 -1
- package/dist/pipeline/headerFooter.js +3 -1
- package/dist/pipeline/headerFooter.js.map +1 -1
- package/dist/pipeline/lists.d.ts +8 -0
- package/dist/pipeline/lists.d.ts.map +1 -1
- package/dist/pipeline/lists.js +18 -1
- package/dist/pipeline/lists.js.map +1 -1
- package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
- package/dist/pipeline/measureContentBlock.js +3 -0
- package/dist/pipeline/measureContentBlock.js.map +1 -1
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +9 -0
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js.map +1 -1
- package/package.json +1 -1
package/dist/html-backend.js
CHANGED
|
@@ -9,6 +9,7 @@ import { lineInkExtent, lineTrailingTracking } from './lineInk';
|
|
|
9
9
|
import { CHARACTER_GRID_COLOR, cjkGridCells } from './pipeline/cjkGrid';
|
|
10
10
|
import { isJapaneseLanguage, renderLangOf } from './locale';
|
|
11
11
|
import { hasCJK } from './measure/cjk';
|
|
12
|
+
import { markerRuns } from './bidi';
|
|
12
13
|
import { joiningScriptIn } from './measure/joining';
|
|
13
14
|
import { DEFAULT_CENTRAL_BASELINE, verticalFlowOf } from './vdt';
|
|
14
15
|
import { holdsTurnedMark, segmentOrientation, verticalRuns } from './writingMode';
|
|
@@ -42,6 +43,15 @@ const CJK_FEATURES_DECL = "font-feature-settings:'chws' 0,'halt' 0,'vchw' 0;";
|
|
|
42
43
|
* Serif SC's full-width dash), which the scale was not computed for. */
|
|
43
44
|
const DASH_FEATURES_DECL = "font-feature-settings:'chws' 0,'halt' 0,'vchw' 0,'locl' 0;";
|
|
44
45
|
const inkScaleDecl = (scale) => `transform:scaleX(${scale.toFixed(4)});transform-origin:0 0;${DASH_FEATURES_DECL}`;
|
|
46
|
+
/** The ligatures of a tracked line (#663). A tracked word was measured at
|
|
47
|
+
* its natural width, ligatures counted, plus its tracking; under a
|
|
48
|
+
* `letter-spacing` other than zero browsers turn the common ligatures off
|
|
49
|
+
* and the word comes out wider than its place (fi in Newsreader: 4.5 px at
|
|
50
|
+
* 40 px). Asked for as features they stay (`font-variant-ligatures` does
|
|
51
|
+
* not bring them back). After the `font` shorthand, which resets them: on
|
|
52
|
+
* the line's box and on each run in another face. A box that takes
|
|
53
|
+
* {@link CJK_TEXT_DECL} after it keeps that one. */
|
|
54
|
+
const TRACKED_LIGATURES_DECL = "font-feature-settings:'liga' 1,'clig' 1;";
|
|
45
55
|
/** Whether a line box carries {@link CJK_TEXT_DECL}: a line of the CJK
|
|
46
56
|
* composer, which it measured character by character, or a line with no
|
|
47
57
|
* segments (one span) holding CJK text. A word-by-word line holding CJK
|
|
@@ -705,7 +715,7 @@ end = '') {
|
|
|
705
715
|
const paintText = (seg, at, inLink = false) => {
|
|
706
716
|
const font = quoteFontString(pickSegmentFont(seg, block));
|
|
707
717
|
const color = pickSegmentColor(seg, block);
|
|
708
|
-
const fontDecl = font !== quoteFontString(block.fontString) ? `font:${font}
|
|
718
|
+
const fontDecl = font !== quoteFontString(block.fontString) ? `font:${font};${tracking !== 0 ? TRACKED_LIGATURES_DECL : ''}` : '';
|
|
709
719
|
const colorDecl = color !== block.color ? `color:${color};` : '';
|
|
710
720
|
const top = seg.baselineShift ? `${seg.baselineShift.toFixed(3)}px` : '0';
|
|
711
721
|
return renderWordTextSegment(inLink ? { ...seg, refResourceId: undefined } : seg, at, top, fontDecl, colorDecl, color, cjk && hasCJK(seg.text), segmentBox(seg, rootDir, rootLang, tracking, font, color, (probe) => ({ font: quoteFontString(pickSegmentFont(probe, block)), color: pickSegmentColor(probe, block) })));
|
|
@@ -996,6 +1006,15 @@ rootDir = 'ltr') {
|
|
|
996
1006
|
}
|
|
997
1007
|
return parts.join('');
|
|
998
1008
|
}
|
|
1009
|
+
/** Whether a marker's order differs when its leading European digits read
|
|
1010
|
+
* as Arabic numbers (`BidiOptions.arabicNumbers`, #665). */
|
|
1011
|
+
function arabicMarkNeeded(text) {
|
|
1012
|
+
if (!/[0-9]/.test(text))
|
|
1013
|
+
return false;
|
|
1014
|
+
const plain = markerRuns(text, 'rtl');
|
|
1015
|
+
const arabic = markerRuns(text, 'rtl-arabic');
|
|
1016
|
+
return plain.length !== arabic.length || plain.some((r, i) => r.text !== arabic[i].text);
|
|
1017
|
+
}
|
|
999
1018
|
function renderBullet(block, rootDir = 'ltr') {
|
|
1000
1019
|
if (block.type !== 'listItem' ||
|
|
1001
1020
|
!block.bulletText ||
|
|
@@ -1023,6 +1042,13 @@ function renderBullet(block, rootDir = 'ltr') {
|
|
|
1023
1042
|
// A marker reads in its item's direction: `١.` with its full stop on the
|
|
1024
1043
|
// left in an Arabic list (#379).
|
|
1025
1044
|
const markerDir = dirAttr(block.direction ?? rootDir, rootDir);
|
|
1045
|
+
// In an Arabic-script document European digits that open the marker read
|
|
1046
|
+
// as Arabic numbers (`bulletDirection: 'rtl-arabic'`, #665): `3-1`, a
|
|
1047
|
+
// contents number, with the 3 on the right. The browser resolves the
|
|
1048
|
+
// marker's order itself, so where that reading changes it the text takes
|
|
1049
|
+
// an Arabic letter mark (U+061C) before it, which rule W2 reads as the
|
|
1050
|
+
// letter the number follows.
|
|
1051
|
+
const markerText = (text) => (block.bulletDirection === 'rtl-arabic' && arabicMarkNeeded(text) ? '؜' : '') + esc(text);
|
|
1026
1052
|
const markerDiv = (cls, x, font, color, text) => `<div class="${cls}" aria-hidden="true"${markerDir} style="` +
|
|
1027
1053
|
`position:absolute;` +
|
|
1028
1054
|
`left:${x}px;` +
|
|
@@ -1033,8 +1059,8 @@ function renderBullet(block, rootDir = 'ltr') {
|
|
|
1033
1059
|
`white-space:pre;` +
|
|
1034
1060
|
(hasCJK(text) ? CJK_TEXT_DECL : '') +
|
|
1035
1061
|
(onBaseline
|
|
1036
|
-
? `"><span style="font:${font};${hasCJK(text) ? CJK_FEATURES_DECL : ''}line-height:0;">${
|
|
1037
|
-
: `">${
|
|
1062
|
+
? `"><span style="font:${font};${hasCJK(text) ? CJK_FEATURES_DECL : ''}line-height:0;">${markerText(text)}</span></div>`
|
|
1063
|
+
: `">${markerText(text)}</div>`);
|
|
1038
1064
|
let html = markerDiv('pt-bullet', block.bulletOffsetX, bulletFont, bulletColor, block.bulletText);
|
|
1039
1065
|
// Ordered-list separator styled apart from the number (own font/colour).
|
|
1040
1066
|
if (block.separatorText && block.separatorX !== undefined) {
|
|
@@ -1061,7 +1087,7 @@ lead = '') {
|
|
|
1061
1087
|
// line's own (justification): measured into the segment widths, so the
|
|
1062
1088
|
// glyphs must spread the same way.
|
|
1063
1089
|
const tracking = (block.letterSpacing ?? 0) + (line.letterSpacing ?? 0);
|
|
1064
|
-
const trackingDecl = tracking !== 0 ? `letter-spacing:${tracking}px
|
|
1090
|
+
const trackingDecl = tracking !== 0 ? `letter-spacing:${tracking}px;${TRACKED_LIGATURES_DECL}` : '';
|
|
1065
1091
|
return (`<div class="pt-line" data-block="${esc(block.id)}" style="` +
|
|
1066
1092
|
`position:absolute;` +
|
|
1067
1093
|
`left:${line.bbox.x}px;` +
|
|
@@ -1450,7 +1476,7 @@ end = '') {
|
|
|
1450
1476
|
const paintText = (seg, at, inLink = false) => {
|
|
1451
1477
|
const font = quoteFontString(pickResourceFont(seg, fonts));
|
|
1452
1478
|
const segColor = segColorOf(seg);
|
|
1453
|
-
const fontDecl = font !== baseFont ? `font:${font}
|
|
1479
|
+
const fontDecl = font !== baseFont ? `font:${font};${tracking !== 0 ? TRACKED_LIGATURES_DECL : ''}` : '';
|
|
1454
1480
|
const colorDecl = segColor !== color ? `color:${segColor};` : '';
|
|
1455
1481
|
const top = seg.baselineShift ? `${seg.baselineShift.toFixed(3)}px` : '0';
|
|
1456
1482
|
// Its direction, untracked joining letters and styled runs (#379).
|
|
@@ -1535,7 +1561,7 @@ end = '') {
|
|
|
1535
1561
|
`color:${color};` +
|
|
1536
1562
|
// A tracked line (a table header set with `headerLetterSpacing`) was
|
|
1537
1563
|
// measured with the tracking in its widths.
|
|
1538
|
-
(line.letterSpacing ? `letter-spacing:${line.letterSpacing}px
|
|
1564
|
+
(line.letterSpacing ? `letter-spacing:${line.letterSpacing}px;${TRACKED_LIGATURES_DECL}` : '') +
|
|
1539
1565
|
(lineDecl ? CJK_TEXT_DECL : '') +
|
|
1540
1566
|
`">${parts.join('')}</div>`);
|
|
1541
1567
|
}
|