oasis-editor 0.0.98 → 0.0.100

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.
@@ -5,4 +5,16 @@ export declare function underlineStyleToCssDecorationStyle(underlineStyle: Under
5
5
  export declare function isDoubleUnderlineStyle(underlineStyle: UnderlineStyle): boolean;
6
6
  export declare function isWavyUnderlineStyle(underlineStyle: UnderlineStyle): boolean;
7
7
  export declare function underlineStyleLineWidthPx(underlineStyle: UnderlineStyle): number;
8
+ /**
9
+ * Resolves the OpenType feature tags a run explicitly enables, mirroring the CSS
10
+ * semantics in `styleCss.ts` (only enabled features, no implicit defaults). Used
11
+ * by the PDF shaper to drive GSUB substitution and GPOS kerning. Returns a sorted,
12
+ * de-duped array so it doubles as a stable cache key.
13
+ *
14
+ * `fontSizePt` (the run's resolved point size) gates the GPOS `kern` tag the same
15
+ * way Word's `w:kern` threshold and the canvas painter do: kerning applies only
16
+ * when the run's size meets `kerningThreshold`. Omit it to resolve substitution
17
+ * tags alone.
18
+ */
19
+ export declare function resolveOpenTypeFeatureTags(style: EditorTextStyle, fontSizePt?: number): string[];
8
20
  export declare function underlineStyleDashArray(underlineStyle: UnderlineStyle): number[] | undefined;
@@ -22,7 +22,7 @@ export declare class PdfFontTable {
22
22
  * Unicode run, recording the glyphs used for subsetting. Returns `null` when
23
23
  * the run produced no glyphs so the caller can skip emission entirely.
24
24
  */
25
- buildUnicodeShowCommand(state: OasisPdfUnicodeFontState, text: string): string | null;
25
+ buildUnicodeShowCommand(state: OasisPdfUnicodeFontState, text: string, features?: readonly string[]): string | null;
26
26
  /**
27
27
  * Emits the font objects (base-14 dictionaries and embedded Unicode font
28
28
  * programs) for every referenced resource and returns the `/Font` resource
@@ -73,6 +73,11 @@ export interface OasisPdfTextOptions {
73
73
  strokeColor?: string;
74
74
  /** Stroke line width in pt for render modes 1 and 2. Defaults to 3% of fontSize. */
75
75
  strokeWidth?: number;
76
+ /**
77
+ * OpenType GSUB feature tags to apply when shaping this run with an embedded
78
+ * Unicode font (e.g. `["liga", "onum", "ss01"]`). Ignored by base-14 fonts.
79
+ */
80
+ fontFeatures?: readonly string[];
76
81
  }
77
82
  export interface OasisPdfImageResource {
78
83
  resourceName: string;
@@ -2519,7 +2519,7 @@ function OasisEditorAppLazy(props = {}) {
2519
2519
  onCleanup(() => {
2520
2520
  cancelled = true;
2521
2521
  });
2522
- import("./OasisEditorApp-QVHCHhPa.js").then((m) => {
2522
+ import("./OasisEditorApp-CRjXmvyC.js").then((m) => {
2523
2523
  cancelled = true;
2524
2524
  setProgress(1);
2525
2525
  setTimeout(() => setApp(() => m.OasisEditorApp), 180);
@@ -20934,6 +20934,36 @@ function underlineStyleLineWidthPx(underlineStyle) {
20934
20934
  return 1;
20935
20935
  }
20936
20936
  }
20937
+ function resolveOpenTypeFeatureTags(style2, fontSizePt) {
20938
+ const tags = /* @__PURE__ */ new Set();
20939
+ switch (style2.ligatures) {
20940
+ case "standard":
20941
+ tags.add("liga");
20942
+ break;
20943
+ case "contextual":
20944
+ tags.add("calt");
20945
+ break;
20946
+ case "historical":
20947
+ tags.add("hlig");
20948
+ break;
20949
+ case "standardContextual":
20950
+ tags.add("liga");
20951
+ tags.add("calt");
20952
+ break;
20953
+ }
20954
+ if (style2.numberForm === "lining") tags.add("lnum");
20955
+ if (style2.numberForm === "oldStyle") tags.add("onum");
20956
+ if (style2.numberSpacing === "proportional") tags.add("pnum");
20957
+ if (style2.numberSpacing === "tabular") tags.add("tnum");
20958
+ if (typeof style2.stylisticSet === "number" && style2.stylisticSet >= 1 && style2.stylisticSet <= 20) {
20959
+ tags.add(`ss${String(style2.stylisticSet).padStart(2, "0")}`);
20960
+ }
20961
+ if (style2.contextualAlternates) tags.add("calt");
20962
+ if (typeof fontSizePt === "number" && typeof style2.kerningThreshold === "number" && Number.isFinite(style2.kerningThreshold) && fontSizePt >= style2.kerningThreshold) {
20963
+ tags.add("kern");
20964
+ }
20965
+ return Array.from(tags).sort();
20966
+ }
20937
20967
  function underlineStyleDashArray(underlineStyle) {
20938
20968
  switch (underlineStyle) {
20939
20969
  case "dotted":
@@ -21499,7 +21529,7 @@ function resolveCanvasTextFill(ctx, styles, line, fragment, originX, originY) {
21499
21529
  return gradient;
21500
21530
  }
21501
21531
  function drawStyledText(ctx, text, x, y, scale, styles) {
21502
- const hasEffects = styles.outline || styles.shadow || styles.textShadow || styles.glow || styles.emboss || styles.imprint || styles.textOutline;
21532
+ const hasEffects = styles.outline || styles.shadow || styles.textShadow || styles.glow || styles.emboss || styles.imprint || styles.textOutline || styles.reflection;
21503
21533
  if (!hasEffects) {
21504
21534
  drawScaledText(ctx, text, x, y, scale);
21505
21535
  return;
@@ -21568,6 +21598,24 @@ function drawStyledText(ctx, text, x, y, scale, styles) {
21568
21598
  drawScaledText(ctx, text, x, y, scale);
21569
21599
  }
21570
21600
  ctx.restore();
21601
+ if (styles.reflection) {
21602
+ const ref = styles.reflection;
21603
+ const distPx = ref.distPt * PX_PER_POINT;
21604
+ const avgAlpha = Math.max(
21605
+ 0,
21606
+ Math.min(1, (ref.startAlpha + ref.endAlpha) / 2)
21607
+ );
21608
+ ctx.save();
21609
+ ctx.shadowColor = "transparent";
21610
+ ctx.globalAlpha = avgAlpha;
21611
+ if (ref.blurPt > 0 && "filter" in ctx) {
21612
+ ctx.filter = `blur(${ref.blurPt * PX_PER_POINT}px)`;
21613
+ }
21614
+ ctx.translate(0, 2 * y + distPx);
21615
+ ctx.scale(1, -1);
21616
+ drawScaledText(ctx, text, x, y, scale);
21617
+ ctx.restore();
21618
+ }
21571
21619
  }
21572
21620
  function drawFragmentBorder(ctx, line, fragment, originX, originY, border) {
21573
21621
  if (border.type === "none" || border.width <= 0) return;
@@ -41833,7 +41881,7 @@ export {
41833
41881
  createRenderEffect as Z,
41834
41882
  style as _,
41835
41883
  assertNever as a,
41836
- loadFontAsset as a$,
41884
+ ROBOTO_FONT_FILES as a$,
41837
41885
  setStyleProperty as a0,
41838
41886
  memo as a1,
41839
41887
  template as a2,
@@ -41856,21 +41904,21 @@ export {
41856
41904
  getImageFloatingGeometry as aJ,
41857
41905
  textStyleToFontSizePt as aK,
41858
41906
  PX_PER_POINT as aL,
41859
- DEFAULT_FONT_SIZE_PX as aM,
41860
- isDoubleUnderlineStyle as aN,
41861
- isWavyUnderlineStyle as aO,
41862
- underlineStyleLineWidthPx as aP,
41863
- underlineStyleDashArray as aQ,
41864
- resolveListLabel as aR,
41865
- getListLabelInset as aS,
41866
- getAlignedListLabelInset as aT,
41867
- getParagraphBorderInsets as aU,
41868
- buildSegmentTable as aV,
41869
- buildCanvasTableLayout as aW,
41870
- resolveCanvasTableWidth as aX,
41871
- resolveFloatingTableRect as aY,
41872
- normalizeFamily as aZ,
41873
- ROBOTO_FONT_FILES as a_,
41907
+ resolveOpenTypeFeatureTags as aM,
41908
+ DEFAULT_FONT_SIZE_PX as aN,
41909
+ isDoubleUnderlineStyle as aO,
41910
+ isWavyUnderlineStyle as aP,
41911
+ underlineStyleLineWidthPx as aQ,
41912
+ underlineStyleDashArray as aR,
41913
+ resolveListLabel as aS,
41914
+ getListLabelInset as aT,
41915
+ getAlignedListLabelInset as aU,
41916
+ getParagraphBorderInsets as aV,
41917
+ buildSegmentTable as aW,
41918
+ buildCanvasTableLayout as aX,
41919
+ resolveCanvasTableWidth as aY,
41920
+ resolveFloatingTableRect as aZ,
41921
+ normalizeFamily as a_,
41874
41922
  className as aa,
41875
41923
  For as ab,
41876
41924
  UNDERLINE_STYLE_OPTIONS as ac,
@@ -41898,112 +41946,114 @@ export {
41898
41946
  getRunFieldChar as ay,
41899
41947
  getRunFieldInstruction as az,
41900
41948
  createEditorStateFromDocument as b,
41901
- EDITOR_SCROLL_PADDING_PX as b$,
41902
- OFFICE_COMPAT_FONT_FAMILIES as b0,
41903
- buildSfnt as b1,
41904
- defaultFontDecoderRegistry as b2,
41905
- SfntFontProgram as b3,
41906
- collectPdfFontFamilies as b4,
41907
- projectDocumentLayout as b5,
41908
- getPageContentWidth as b6,
41909
- getPageHeaderZoneTop as b7,
41910
- getPageBodyTop as b8,
41911
- getPageColumnRects as b9,
41912
- getParagraphEntries as bA,
41913
- getParagraphById as bB,
41914
- createEditorFootnote as bC,
41915
- createFootnoteReferenceRun as bD,
41916
- renumberFootnotes as bE,
41917
- getFootnoteDisplayMarker as bF,
41918
- getHeadingLevel as bG,
41919
- preciseFontModeVersion as bH,
41920
- isPreciseFontModeEnabled as bI,
41921
- resolveNamedTextStyle as bJ,
41922
- togglePreciseFontMode as bK,
41923
- nextFontSizePt as bL,
41924
- previousFontSizePt as bM,
41925
- fontSizePtToPx as bN,
41926
- createDefaultToolbarPreset as bO,
41927
- MenuRegistry as bP,
41928
- createToolbarRegistry as bQ,
41929
- Editor as bR,
41930
- resolveCommandRef as bS,
41931
- commandRefName as bT,
41932
- createOasisEditorClient as bU,
41933
- createEditorZoom as bV,
41934
- startLongTaskObserver as bW,
41935
- installGlobalReport as bX,
41936
- applyStoredPreciseFontPreference as bY,
41937
- getWelcomeSeen as bZ,
41938
- isLocalFontAccessSupported as b_,
41939
- findFootnoteReference as ba,
41940
- FOOTNOTE_MARKER_GUTTER_PX as bb,
41941
- resolveImporterForFile as bc,
41942
- getDocumentSectionsCanonical as bd,
41943
- getDocumentParagraphsCanonical as be,
41944
- getDocumentParagraphs as bf,
41945
- getDocumentPageSettings as bg,
41946
- getTableCellContentWidthForParagraph as bh,
41947
- on as bi,
41948
- debounce as bj,
41949
- unwrap as bk,
41950
- perfTimer as bl,
41951
- getRunTextBox as bm,
41952
- createEditorDocument as bn,
41953
- resolveResizedDimensions as bo,
41954
- resolveTextBoxRenderHeight as bp,
41955
- getToolbarStyleState as bq,
41956
- getCachedCanvasImage as br,
41957
- measureParagraphMinContentWidthPx as bs,
41958
- getEditableBlocksForZone as bt,
41959
- findParagraphLocation as bu,
41960
- createSectionBoundaryParagraph as bv,
41961
- normalizePageSettings as bw,
41962
- DEFAULT_EDITOR_PAGE_SETTINGS as bx,
41963
- markStart as by,
41964
- markEnd as bz,
41949
+ getWelcomeSeen as b$,
41950
+ loadFontAsset as b0,
41951
+ OFFICE_COMPAT_FONT_FAMILIES as b1,
41952
+ BinaryReader as b2,
41953
+ buildSfnt as b3,
41954
+ defaultFontDecoderRegistry as b4,
41955
+ SfntFontProgram as b5,
41956
+ collectPdfFontFamilies as b6,
41957
+ projectDocumentLayout as b7,
41958
+ getPageContentWidth as b8,
41959
+ getPageHeaderZoneTop as b9,
41960
+ markStart as bA,
41961
+ markEnd as bB,
41962
+ getParagraphEntries as bC,
41963
+ getParagraphById as bD,
41964
+ createEditorFootnote as bE,
41965
+ createFootnoteReferenceRun as bF,
41966
+ renumberFootnotes as bG,
41967
+ getFootnoteDisplayMarker as bH,
41968
+ getHeadingLevel as bI,
41969
+ preciseFontModeVersion as bJ,
41970
+ isPreciseFontModeEnabled as bK,
41971
+ resolveNamedTextStyle as bL,
41972
+ togglePreciseFontMode as bM,
41973
+ nextFontSizePt as bN,
41974
+ previousFontSizePt as bO,
41975
+ fontSizePtToPx as bP,
41976
+ createDefaultToolbarPreset as bQ,
41977
+ MenuRegistry as bR,
41978
+ createToolbarRegistry as bS,
41979
+ Editor as bT,
41980
+ resolveCommandRef as bU,
41981
+ commandRefName as bV,
41982
+ createOasisEditorClient as bW,
41983
+ createEditorZoom as bX,
41984
+ startLongTaskObserver as bY,
41985
+ installGlobalReport as bZ,
41986
+ applyStoredPreciseFontPreference as b_,
41987
+ getPageBodyTop as ba,
41988
+ getPageColumnRects as bb,
41989
+ findFootnoteReference as bc,
41990
+ FOOTNOTE_MARKER_GUTTER_PX as bd,
41991
+ resolveImporterForFile as be,
41992
+ getDocumentSectionsCanonical as bf,
41993
+ getDocumentParagraphsCanonical as bg,
41994
+ getDocumentParagraphs as bh,
41995
+ getDocumentPageSettings as bi,
41996
+ getTableCellContentWidthForParagraph as bj,
41997
+ on as bk,
41998
+ debounce as bl,
41999
+ unwrap as bm,
42000
+ perfTimer as bn,
42001
+ getRunTextBox as bo,
42002
+ createEditorDocument as bp,
42003
+ resolveResizedDimensions as bq,
42004
+ resolveTextBoxRenderHeight as br,
42005
+ getToolbarStyleState as bs,
42006
+ getCachedCanvasImage as bt,
42007
+ measureParagraphMinContentWidthPx as bu,
42008
+ getEditableBlocksForZone as bv,
42009
+ findParagraphLocation as bw,
42010
+ createSectionBoundaryParagraph as bx,
42011
+ normalizePageSettings as by,
42012
+ DEFAULT_EDITOR_PAGE_SETTINGS as bz,
41965
42013
  createSignal as c,
41966
- Toolbar as c0,
41967
- OasisEditorLoading as c1,
41968
- I18nProvider as c2,
41969
- createTranslator as c3,
41970
- createEditorLogger as c4,
41971
- registerDomStatsSurface as c5,
41972
- Button as c6,
41973
- Checkbox as c7,
41974
- ColorPicker as c8,
41975
- CommandRegistry as c9,
41976
- createEditorCommandBus as cA,
41977
- createOasisEditor as cB,
41978
- createOasisEditorContainer as cC,
41979
- mount as cD,
41980
- registerToolbarRenderer as cE,
41981
- DEFAULT_PALETTE as ca,
41982
- DialogFooter as cb,
41983
- FloatingActionButton as cc,
41984
- GridPicker as cd,
41985
- IconButton as ce,
41986
- Menu as cf,
41987
- OASIS_BUILTIN_COMMANDS as cg,
41988
- OASIS_MENU_ITEMS as ch,
41989
- OASIS_TOOLBAR_ITEMS as ci,
41990
- OasisEditorAppLazy as cj,
41991
- OasisEditorContainer as ck,
41992
- PluginCollection as cl,
41993
- Popover as cm,
41994
- RIBBON_TABS as cn,
41995
- Select as co,
41996
- SelectField as cp,
41997
- Separator as cq,
41998
- SidePanel as cr,
41999
- SidePanelBody as cs,
42000
- SidePanelFooter as ct,
42001
- SidePanelHeader as cu,
42002
- SplitButton as cv,
42003
- StyleGallery as cw,
42004
- TextField as cx,
42005
- Button$1 as cy,
42006
- buildRibbonTabDefinitions as cz,
42014
+ isLocalFontAccessSupported as c0,
42015
+ EDITOR_SCROLL_PADDING_PX as c1,
42016
+ Toolbar as c2,
42017
+ OasisEditorLoading as c3,
42018
+ I18nProvider as c4,
42019
+ createTranslator as c5,
42020
+ createEditorLogger as c6,
42021
+ registerDomStatsSurface as c7,
42022
+ Button as c8,
42023
+ Checkbox as c9,
42024
+ Button$1 as cA,
42025
+ buildRibbonTabDefinitions as cB,
42026
+ createEditorCommandBus as cC,
42027
+ createOasisEditor as cD,
42028
+ createOasisEditorContainer as cE,
42029
+ mount as cF,
42030
+ registerToolbarRenderer as cG,
42031
+ ColorPicker as ca,
42032
+ CommandRegistry as cb,
42033
+ DEFAULT_PALETTE as cc,
42034
+ DialogFooter as cd,
42035
+ FloatingActionButton as ce,
42036
+ GridPicker as cf,
42037
+ IconButton as cg,
42038
+ Menu as ch,
42039
+ OASIS_BUILTIN_COMMANDS as ci,
42040
+ OASIS_MENU_ITEMS as cj,
42041
+ OASIS_TOOLBAR_ITEMS as ck,
42042
+ OasisEditorAppLazy as cl,
42043
+ OasisEditorContainer as cm,
42044
+ PluginCollection as cn,
42045
+ Popover as co,
42046
+ RIBBON_TABS as cp,
42047
+ Select as cq,
42048
+ SelectField as cr,
42049
+ Separator as cs,
42050
+ SidePanel as ct,
42051
+ SidePanelBody as cu,
42052
+ SidePanelFooter as cv,
42053
+ SidePanelHeader as cw,
42054
+ SplitButton as cx,
42055
+ StyleGallery as cy,
42056
+ TextField as cz,
42007
42057
  createInitialEditorState as d,
42008
42058
  createEditorParagraphFromRuns as e,
42009
42059
  fontSizePxToPt as f,
@@ -1,57 +1,57 @@
1
- import { O, c6, c7, c8, c9, ca, a8, cb, Q, bR, cc, cd, ce, N, cf, bP, cg, ch, ci, cj, ck, c1, cl, cm, cn, co, cp, cq, cr, cs, ct, cu, cv, cw, ad, cx, c0, cy, c8 as c82, cd as cd2, cf as cf2, co as co2, cq as cq2, cv as cv2, cz, bT, bO, cA, cB, cC, bQ, cD, cE, bS } from "./index-DBzN897A.js";
1
+ import { O, c8, c9, ca, cb, cc, a8, cd, Q, bT, ce, cf, cg, N, ch, bR, ci, cj, ck, cl, cm, c3, cn, co, cp, cq, cr, cs, ct, cu, cv, cw, cx, cy, ad, cz, c2, cA, ca as ca2, cf as cf2, ch as ch2, cq as cq2, cs as cs2, cx as cx2, cB, bV, bQ, cC, cD, cE, bS, cF, cG, bU } from "./index-BuxYvaSC.js";
2
2
  export {
3
3
  O as BalloonShell,
4
- c6 as Button,
5
- c7 as Checkbox,
6
- c8 as ColorPicker,
7
- c9 as CommandRegistry,
8
- ca as DEFAULT_PALETTE,
4
+ c8 as Button,
5
+ c9 as Checkbox,
6
+ ca as ColorPicker,
7
+ cb as CommandRegistry,
8
+ cc as DEFAULT_PALETTE,
9
9
  a8 as Dialog,
10
- cb as DialogFooter,
10
+ cd as DialogFooter,
11
11
  Q as DocumentShell,
12
- bR as Editor,
13
- cc as FloatingActionButton,
14
- cd as GridPicker,
15
- ce as IconButton,
12
+ bT as Editor,
13
+ ce as FloatingActionButton,
14
+ cf as GridPicker,
15
+ cg as IconButton,
16
16
  N as InlineShell,
17
- cf as Menu,
18
- bP as MenuRegistry,
19
- cg as OASIS_BUILTIN_COMMANDS,
20
- ch as OASIS_MENU_ITEMS,
21
- ci as OASIS_TOOLBAR_ITEMS,
22
- cj as OasisEditorAppLazy,
23
- ck as OasisEditorContainer,
24
- c1 as OasisEditorLoading,
25
- cl as PluginCollection,
26
- cm as Popover,
27
- cn as RIBBON_TABS,
28
- co as Select,
29
- cp as SelectField,
30
- cq as Separator,
31
- cr as SidePanel,
32
- cs as SidePanelBody,
33
- ct as SidePanelFooter,
34
- cu as SidePanelHeader,
35
- cv as SplitButton,
36
- cw as StyleGallery,
17
+ ch as Menu,
18
+ bR as MenuRegistry,
19
+ ci as OASIS_BUILTIN_COMMANDS,
20
+ cj as OASIS_MENU_ITEMS,
21
+ ck as OASIS_TOOLBAR_ITEMS,
22
+ cl as OasisEditorAppLazy,
23
+ cm as OasisEditorContainer,
24
+ c3 as OasisEditorLoading,
25
+ cn as PluginCollection,
26
+ co as Popover,
27
+ cp as RIBBON_TABS,
28
+ cq as Select,
29
+ cr as SelectField,
30
+ cs as Separator,
31
+ ct as SidePanel,
32
+ cu as SidePanelBody,
33
+ cv as SidePanelFooter,
34
+ cw as SidePanelHeader,
35
+ cx as SplitButton,
36
+ cy as StyleGallery,
37
37
  ad as Tabs,
38
- cx as TextField,
39
- c0 as Toolbar,
40
- cy as ToolbarButton,
41
- c82 as ToolbarColorPicker,
42
- cd2 as ToolbarGridPicker,
43
- cf2 as ToolbarMenu,
44
- co2 as ToolbarSelect,
45
- cq2 as ToolbarSeparator,
46
- cv2 as ToolbarSplitButton,
47
- cz as buildRibbonTabDefinitions,
48
- bT as commandRefName,
49
- bO as createDefaultToolbarPreset,
50
- cA as createEditorCommandBus,
51
- cB as createOasisEditor,
52
- cC as createOasisEditorContainer,
53
- bQ as createToolbarRegistry,
54
- cD as mount,
55
- cE as registerToolbarRenderer,
56
- bS as resolveCommandRef
38
+ cz as TextField,
39
+ c2 as Toolbar,
40
+ cA as ToolbarButton,
41
+ ca2 as ToolbarColorPicker,
42
+ cf2 as ToolbarGridPicker,
43
+ ch2 as ToolbarMenu,
44
+ cq2 as ToolbarSelect,
45
+ cs2 as ToolbarSeparator,
46
+ cx2 as ToolbarSplitButton,
47
+ cB as buildRibbonTabDefinitions,
48
+ bV as commandRefName,
49
+ bQ as createDefaultToolbarPreset,
50
+ cC as createEditorCommandBus,
51
+ cD as createOasisEditor,
52
+ cE as createOasisEditorContainer,
53
+ bS as createToolbarRegistry,
54
+ cF as mount,
55
+ cG as registerToolbarRenderer,
56
+ bU as resolveCommandRef
57
57
  };