oasis-editor 0.0.98 → 0.0.99

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,11 @@ 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 GSUB feature tags a run explicitly enables, mirroring the
10
+ * CSS semantics in `styleCss.ts` (only enabled features, no implicit liga/kern).
11
+ * Used by the PDF shaper to drive glyph substitution. Returns a sorted, de-duped
12
+ * array so it doubles as a stable cache key.
13
+ */
14
+ export declare function resolveOpenTypeFeatureTags(style: EditorTextStyle): string[];
8
15
  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-kxR9P2nm.js").then((m) => {
2523
2523
  cancelled = true;
2524
2524
  setProgress(1);
2525
2525
  setTimeout(() => setApp(() => m.OasisEditorApp), 180);
@@ -20934,6 +20934,33 @@ function underlineStyleLineWidthPx(underlineStyle) {
20934
20934
  return 1;
20935
20935
  }
20936
20936
  }
20937
+ function resolveOpenTypeFeatureTags(style2) {
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
+ return Array.from(tags).sort();
20963
+ }
20937
20964
  function underlineStyleDashArray(underlineStyle) {
20938
20965
  switch (underlineStyle) {
20939
20966
  case "dotted":
@@ -21499,7 +21526,7 @@ function resolveCanvasTextFill(ctx, styles, line, fragment, originX, originY) {
21499
21526
  return gradient;
21500
21527
  }
21501
21528
  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;
21529
+ const hasEffects = styles.outline || styles.shadow || styles.textShadow || styles.glow || styles.emboss || styles.imprint || styles.textOutline || styles.reflection;
21503
21530
  if (!hasEffects) {
21504
21531
  drawScaledText(ctx, text, x, y, scale);
21505
21532
  return;
@@ -21568,6 +21595,24 @@ function drawStyledText(ctx, text, x, y, scale, styles) {
21568
21595
  drawScaledText(ctx, text, x, y, scale);
21569
21596
  }
21570
21597
  ctx.restore();
21598
+ if (styles.reflection) {
21599
+ const ref = styles.reflection;
21600
+ const distPx = ref.distPt * PX_PER_POINT;
21601
+ const avgAlpha = Math.max(
21602
+ 0,
21603
+ Math.min(1, (ref.startAlpha + ref.endAlpha) / 2)
21604
+ );
21605
+ ctx.save();
21606
+ ctx.shadowColor = "transparent";
21607
+ ctx.globalAlpha = avgAlpha;
21608
+ if (ref.blurPt > 0 && "filter" in ctx) {
21609
+ ctx.filter = `blur(${ref.blurPt * PX_PER_POINT}px)`;
21610
+ }
21611
+ ctx.translate(0, 2 * y + distPx);
21612
+ ctx.scale(1, -1);
21613
+ drawScaledText(ctx, text, x, y, scale);
21614
+ ctx.restore();
21615
+ }
21571
21616
  }
21572
21617
  function drawFragmentBorder(ctx, line, fragment, originX, originY, border) {
21573
21618
  if (border.type === "none" || border.width <= 0) return;
@@ -41833,7 +41878,7 @@ export {
41833
41878
  createRenderEffect as Z,
41834
41879
  style as _,
41835
41880
  assertNever as a,
41836
- loadFontAsset as a$,
41881
+ ROBOTO_FONT_FILES as a$,
41837
41882
  setStyleProperty as a0,
41838
41883
  memo as a1,
41839
41884
  template as a2,
@@ -41856,21 +41901,21 @@ export {
41856
41901
  getImageFloatingGeometry as aJ,
41857
41902
  textStyleToFontSizePt as aK,
41858
41903
  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_,
41904
+ resolveOpenTypeFeatureTags as aM,
41905
+ DEFAULT_FONT_SIZE_PX as aN,
41906
+ isDoubleUnderlineStyle as aO,
41907
+ isWavyUnderlineStyle as aP,
41908
+ underlineStyleLineWidthPx as aQ,
41909
+ underlineStyleDashArray as aR,
41910
+ resolveListLabel as aS,
41911
+ getListLabelInset as aT,
41912
+ getAlignedListLabelInset as aU,
41913
+ getParagraphBorderInsets as aV,
41914
+ buildSegmentTable as aW,
41915
+ buildCanvasTableLayout as aX,
41916
+ resolveCanvasTableWidth as aY,
41917
+ resolveFloatingTableRect as aZ,
41918
+ normalizeFamily as a_,
41874
41919
  className as aa,
41875
41920
  For as ab,
41876
41921
  UNDERLINE_STYLE_OPTIONS as ac,
@@ -41898,112 +41943,114 @@ export {
41898
41943
  getRunFieldChar as ay,
41899
41944
  getRunFieldInstruction as az,
41900
41945
  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,
41946
+ getWelcomeSeen as b$,
41947
+ loadFontAsset as b0,
41948
+ OFFICE_COMPAT_FONT_FAMILIES as b1,
41949
+ BinaryReader as b2,
41950
+ buildSfnt as b3,
41951
+ defaultFontDecoderRegistry as b4,
41952
+ SfntFontProgram as b5,
41953
+ collectPdfFontFamilies as b6,
41954
+ projectDocumentLayout as b7,
41955
+ getPageContentWidth as b8,
41956
+ getPageHeaderZoneTop as b9,
41957
+ markStart as bA,
41958
+ markEnd as bB,
41959
+ getParagraphEntries as bC,
41960
+ getParagraphById as bD,
41961
+ createEditorFootnote as bE,
41962
+ createFootnoteReferenceRun as bF,
41963
+ renumberFootnotes as bG,
41964
+ getFootnoteDisplayMarker as bH,
41965
+ getHeadingLevel as bI,
41966
+ preciseFontModeVersion as bJ,
41967
+ isPreciseFontModeEnabled as bK,
41968
+ resolveNamedTextStyle as bL,
41969
+ togglePreciseFontMode as bM,
41970
+ nextFontSizePt as bN,
41971
+ previousFontSizePt as bO,
41972
+ fontSizePtToPx as bP,
41973
+ createDefaultToolbarPreset as bQ,
41974
+ MenuRegistry as bR,
41975
+ createToolbarRegistry as bS,
41976
+ Editor as bT,
41977
+ resolveCommandRef as bU,
41978
+ commandRefName as bV,
41979
+ createOasisEditorClient as bW,
41980
+ createEditorZoom as bX,
41981
+ startLongTaskObserver as bY,
41982
+ installGlobalReport as bZ,
41983
+ applyStoredPreciseFontPreference as b_,
41984
+ getPageBodyTop as ba,
41985
+ getPageColumnRects as bb,
41986
+ findFootnoteReference as bc,
41987
+ FOOTNOTE_MARKER_GUTTER_PX as bd,
41988
+ resolveImporterForFile as be,
41989
+ getDocumentSectionsCanonical as bf,
41990
+ getDocumentParagraphsCanonical as bg,
41991
+ getDocumentParagraphs as bh,
41992
+ getDocumentPageSettings as bi,
41993
+ getTableCellContentWidthForParagraph as bj,
41994
+ on as bk,
41995
+ debounce as bl,
41996
+ unwrap as bm,
41997
+ perfTimer as bn,
41998
+ getRunTextBox as bo,
41999
+ createEditorDocument as bp,
42000
+ resolveResizedDimensions as bq,
42001
+ resolveTextBoxRenderHeight as br,
42002
+ getToolbarStyleState as bs,
42003
+ getCachedCanvasImage as bt,
42004
+ measureParagraphMinContentWidthPx as bu,
42005
+ getEditableBlocksForZone as bv,
42006
+ findParagraphLocation as bw,
42007
+ createSectionBoundaryParagraph as bx,
42008
+ normalizePageSettings as by,
42009
+ DEFAULT_EDITOR_PAGE_SETTINGS as bz,
41965
42010
  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,
42011
+ isLocalFontAccessSupported as c0,
42012
+ EDITOR_SCROLL_PADDING_PX as c1,
42013
+ Toolbar as c2,
42014
+ OasisEditorLoading as c3,
42015
+ I18nProvider as c4,
42016
+ createTranslator as c5,
42017
+ createEditorLogger as c6,
42018
+ registerDomStatsSurface as c7,
42019
+ Button as c8,
42020
+ Checkbox as c9,
42021
+ Button$1 as cA,
42022
+ buildRibbonTabDefinitions as cB,
42023
+ createEditorCommandBus as cC,
42024
+ createOasisEditor as cD,
42025
+ createOasisEditorContainer as cE,
42026
+ mount as cF,
42027
+ registerToolbarRenderer as cG,
42028
+ ColorPicker as ca,
42029
+ CommandRegistry as cb,
42030
+ DEFAULT_PALETTE as cc,
42031
+ DialogFooter as cd,
42032
+ FloatingActionButton as ce,
42033
+ GridPicker as cf,
42034
+ IconButton as cg,
42035
+ Menu as ch,
42036
+ OASIS_BUILTIN_COMMANDS as ci,
42037
+ OASIS_MENU_ITEMS as cj,
42038
+ OASIS_TOOLBAR_ITEMS as ck,
42039
+ OasisEditorAppLazy as cl,
42040
+ OasisEditorContainer as cm,
42041
+ PluginCollection as cn,
42042
+ Popover as co,
42043
+ RIBBON_TABS as cp,
42044
+ Select as cq,
42045
+ SelectField as cr,
42046
+ Separator as cs,
42047
+ SidePanel as ct,
42048
+ SidePanelBody as cu,
42049
+ SidePanelFooter as cv,
42050
+ SidePanelHeader as cw,
42051
+ SplitButton as cx,
42052
+ StyleGallery as cy,
42053
+ TextField as cz,
42007
42054
  createInitialEditorState as d,
42008
42055
  createEditorParagraphFromRuns as e,
42009
42056
  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-CNuDp_SC.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
  };