docier-web 0.1.0 → 0.2.1

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.
Files changed (99) hide show
  1. package/dist/api/editor.d.ts +3 -0
  2. package/dist/api/editor.d.ts.map +1 -1
  3. package/dist/api/editor.js +115 -0
  4. package/dist/api/editor.js.map +1 -1
  5. package/dist/api/package-images.d.ts +8 -0
  6. package/dist/api/package-images.d.ts.map +1 -0
  7. package/dist/api/package-images.js +98 -0
  8. package/dist/api/package-images.js.map +1 -0
  9. package/dist/edit/areas/document.d.ts +16 -0
  10. package/dist/edit/areas/document.d.ts.map +1 -0
  11. package/dist/edit/areas/document.js +50 -0
  12. package/dist/edit/areas/document.js.map +1 -0
  13. package/dist/edit/areas/index.d.ts +2 -0
  14. package/dist/edit/areas/index.d.ts.map +1 -1
  15. package/dist/edit/areas/index.js +3 -0
  16. package/dist/edit/areas/index.js.map +1 -1
  17. package/dist/edit/areas/insert.d.ts +5 -0
  18. package/dist/edit/areas/insert.d.ts.map +1 -1
  19. package/dist/edit/areas/insert.js +9 -2
  20. package/dist/edit/areas/insert.js.map +1 -1
  21. package/dist/edit/areas/unsupported.d.ts.map +1 -1
  22. package/dist/edit/areas/unsupported.js +0 -8
  23. package/dist/edit/areas/unsupported.js.map +1 -1
  24. package/dist/edit/clipboard/html-export.d.ts +1 -0
  25. package/dist/edit/clipboard/html-export.d.ts.map +1 -1
  26. package/dist/edit/clipboard/html-export.js +3 -1
  27. package/dist/edit/clipboard/html-export.js.map +1 -1
  28. package/dist/edit/clipboard/index.d.ts +1 -1
  29. package/dist/edit/clipboard/index.d.ts.map +1 -1
  30. package/dist/edit/clipboard/index.js +1 -1
  31. package/dist/edit/clipboard/index.js.map +1 -1
  32. package/dist/edit/image-file.d.ts +26 -0
  33. package/dist/edit/image-file.d.ts.map +1 -0
  34. package/dist/edit/image-file.js +94 -0
  35. package/dist/edit/image-file.js.map +1 -0
  36. package/dist/edit/input.d.ts.map +1 -1
  37. package/dist/edit/input.js +30 -3
  38. package/dist/edit/input.js.map +1 -1
  39. package/dist/render/document.js +1 -1
  40. package/dist/render/document.js.map +1 -1
  41. package/dist/style.css +19 -9
  42. package/dist/ui/chrome.d.ts.map +1 -1
  43. package/dist/ui/chrome.js +5 -0
  44. package/dist/ui/chrome.js.map +1 -1
  45. package/dist/ui/colour-picker.js +5 -5
  46. package/dist/ui/controls.d.ts.map +1 -1
  47. package/dist/ui/controls.js +37 -9
  48. package/dist/ui/controls.js.map +1 -1
  49. package/dist/ui/dialog.d.ts +5 -5
  50. package/dist/ui/dialog.d.ts.map +1 -1
  51. package/dist/ui/dialog.js +19 -6
  52. package/dist/ui/dialog.js.map +1 -1
  53. package/dist/ui/font-dialog.d.ts +14 -3
  54. package/dist/ui/font-dialog.d.ts.map +1 -1
  55. package/dist/ui/font-dialog.js +193 -33
  56. package/dist/ui/font-dialog.js.map +1 -1
  57. package/dist/ui/font-family.d.ts +3 -0
  58. package/dist/ui/font-family.d.ts.map +1 -0
  59. package/dist/ui/font-family.js +6 -0
  60. package/dist/ui/font-family.js.map +1 -0
  61. package/dist/ui/i18n.d.ts.map +1 -1
  62. package/dist/ui/i18n.js +5 -0
  63. package/dist/ui/i18n.js.map +1 -1
  64. package/dist/ui/icons.d.ts.map +1 -1
  65. package/dist/ui/icons.js +4 -0
  66. package/dist/ui/icons.js.map +1 -1
  67. package/dist/ui/image-picker.d.ts +1 -14
  68. package/dist/ui/image-picker.d.ts.map +1 -1
  69. package/dist/ui/image-picker.js +2 -53
  70. package/dist/ui/image-picker.js.map +1 -1
  71. package/dist/ui/menu-bar.d.ts +6 -0
  72. package/dist/ui/menu-bar.d.ts.map +1 -1
  73. package/dist/ui/menu-bar.js +30 -1
  74. package/dist/ui/menu-bar.js.map +1 -1
  75. package/dist/ui/menu-model.d.ts +1 -0
  76. package/dist/ui/menu-model.d.ts.map +1 -1
  77. package/dist/ui/menu-model.js +17 -26
  78. package/dist/ui/menu-model.js.map +1 -1
  79. package/dist/ui/menu.d.ts.map +1 -1
  80. package/dist/ui/menu.js +4 -0
  81. package/dist/ui/menu.js.map +1 -1
  82. package/dist/ui/styles.d.ts.map +1 -1
  83. package/dist/ui/styles.js +16 -6
  84. package/dist/ui/styles.js.map +1 -1
  85. package/dist/ui/theme.d.ts.map +1 -1
  86. package/dist/ui/theme.js +11 -0
  87. package/dist/ui/theme.js.map +1 -1
  88. package/dist/ui/types.d.ts +1 -0
  89. package/dist/ui/types.d.ts.map +1 -1
  90. package/dist/ui/types.js.map +1 -1
  91. package/package.json +1 -1
  92. package/dist/edit/search.d.ts +0 -19
  93. package/dist/edit/search.d.ts.map +0 -1
  94. package/dist/edit/search.js +0 -65
  95. package/dist/edit/search.js.map +0 -1
  96. package/dist/pdf/fonts/sfnt.d.ts +0 -83
  97. package/dist/pdf/fonts/sfnt.d.ts.map +0 -1
  98. package/dist/pdf/fonts/sfnt.js +0 -363
  99. package/dist/pdf/fonts/sfnt.js.map +0 -1
package/dist/ui/theme.js CHANGED
@@ -43,9 +43,11 @@ export const DEFAULT_THEME_TOKENS = {
43
43
  };
44
44
  export const DARK_THEME_TOKENS = {
45
45
  '--docier-surface': '#2a2a2a',
46
+ '--docier-surface-command': '#303030',
46
47
  '--docier-surface-raised': '#333333',
47
48
  '--docier-surface-sunken': '#232323',
48
49
  '--docier-border': '#4d4d4d',
50
+ '--docier-border-soft': '#3d3d3d',
49
51
  '--docier-pasteboard': '#1e1e1e',
50
52
  '--docier-text': '#f2f2f2',
51
53
  '--docier-text-muted': '#c2c2c2',
@@ -53,10 +55,19 @@ export const DARK_THEME_TOKENS = {
53
55
  '--docier-accent': '#6ea8fe',
54
56
  '--docier-accent-text': '#10182b',
55
57
  '--docier-accent-soft': 'rgba(110, 168, 254, 0.22)',
58
+ '--docier-state-hover': '#3a3a3a',
59
+ '--docier-state-pressed': '#454545',
60
+ '--docier-state-selected': '#404040',
61
+ '--docier-selection': 'rgba(110, 168, 254, 0.32)',
62
+ '--docier-guide': '#fb923c',
63
+ '--docier-error': '#f2b8b5',
64
+ '--docier-warning': '#e0b055',
65
+ '--docier-success': '#7ddc9a',
56
66
  '--docier-focus-ring': '#9ec5fe',
57
67
  '--docier-shadow-1': '0 1px 2px rgba(0, 0, 0, 0.5)',
58
68
  '--docier-shadow-2': '0 2px 8px rgba(0, 0, 0, 0.6)',
59
69
  '--docier-shadow-3': '0 8px 24px rgba(0, 0, 0, 0.7)',
70
+ '--docier-page-shadow': '0 2px 8px rgba(0, 0, 0, 0.55), 0 0 1px rgba(0, 0, 0, 0.5)',
60
71
  };
61
72
  export const DENSITY_TOKENS = {
62
73
  compact: {
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/ui/theme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/ui/theme.ts"],"names":[],"mappings":"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"}
@@ -56,6 +56,7 @@ export interface ResolvedControl {
56
56
  readonly id: string;
57
57
  readonly label: string;
58
58
  readonly hint: string | undefined;
59
+ readonly keytip?: string | undefined;
59
60
  readonly enabled: boolean;
60
61
  readonly active: boolean;
61
62
  readonly reason: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ui/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ui/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ui/types.ts"],"names":[],"mappings":"AA8IA,MAAM,CAAC,MAAM,gBAAgB,GAA8B;IACzD,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,YAAY;IACZ,cAAc;IACd,OAAO;IACP,WAAW;IACX,QAAQ;CACT,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAA4B;IACtD,MAAM;IACN,OAAO;IACP,UAAU;IACV,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAEjF,MAAM,CAAC,MAAM,iBAAiB,GAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ui/types.ts"],"names":[],"mappings":"AA+IA,MAAM,CAAC,MAAM,gBAAgB,GAA8B;IACzD,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,YAAY;IACZ,cAAc;IACd,OAAO;IACP,WAAW;IACX,QAAQ;CACT,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAA4B;IACtD,MAAM;IACN,OAAO;IACP,UAAU;IACV,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAEjF,MAAM,CAAC,MAAM,iBAAiB,GAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "docier-web",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "A Word-compatible DOCX editor for the browser. Framework-agnostic, command and event driven, with an optional tokenization module for document templates.",
@@ -1,19 +0,0 @@
1
- import type { DocPos } from '../layout/index.js';
2
- import type { PositionIndex } from './positions.js';
3
- export interface SearchOptions {
4
- readonly matchCase?: boolean;
5
- readonly wholeWord?: boolean;
6
- }
7
- export interface SearchMatch {
8
- readonly start: DocPos;
9
- readonly end: DocPos;
10
- }
11
- export interface SearchResult {
12
- readonly matches: readonly SearchMatch[];
13
- readonly truncated: boolean;
14
- }
15
- export declare const MAX_MATCHES = 5000;
16
- export declare const searchResult: (index: PositionIndex, query: string, options?: SearchOptions) => SearchResult;
17
- export declare const matchAt: (matches: readonly SearchMatch[], pos: DocPos) => SearchMatch | undefined;
18
- export declare const adjacentMatch: (matches: readonly SearchMatch[], pos: DocPos, direction: 1 | -1) => SearchMatch | undefined;
19
- //# sourceMappingURL=search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/edit/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,eAAO,MAAM,WAAW,OAAO,CAAC;AAahC,eAAO,MAAM,YAAY,GACvB,OAAO,aAAa,EACpB,OAAO,MAAM,EACb,UAAS,aAAkB,KAC1B,YAgCF,CAAC;AAEF,eAAO,MAAM,OAAO,GAClB,SAAS,SAAS,WAAW,EAAE,EAC/B,KAAK,MAAM,KACV,WAAW,GAAG,SACgG,CAAC;AAElH,eAAO,MAAM,aAAa,GACxB,SAAS,SAAS,WAAW,EAAE,EAC/B,KAAK,MAAM,EACX,WAAW,CAAC,GAAG,CAAC,CAAC,KAChB,WAAW,GAAG,SAYhB,CAAC"}
@@ -1,65 +0,0 @@
1
- import { docPos } from '../layout/index.js';
2
- import { blockText } from './positions.js';
3
- export const MAX_MATCHES = 5000;
4
- const WORD_CHARACTER = /[\p{L}\p{N}_]/u;
5
- const isWordCharacter = (text, index) => {
6
- if (index < 0 || index >= text.length)
7
- return false;
8
- const character = text.slice(index, index + 1);
9
- return WORD_CHARACTER.test(character);
10
- };
11
- const normalise = (value, matchCase) => matchCase ? value : value.toLocaleLowerCase();
12
- export const searchResult = (index, query, options = {}) => {
13
- if (query === '')
14
- return { matches: [], truncated: false };
15
- const matchCase = options.matchCase ?? false;
16
- const wholeWord = options.wholeWord ?? false;
17
- const needle = normalise(query, matchCase);
18
- const matches = [];
19
- let truncated = false;
20
- for (const span of index.paragraphs) {
21
- if (truncated)
22
- break;
23
- const text = blockText(span);
24
- if (text === '')
25
- continue;
26
- const haystack = normalise(text, matchCase);
27
- let from = 0;
28
- for (;;) {
29
- const at = haystack.indexOf(needle, from);
30
- if (at < 0)
31
- break;
32
- from = at + Math.max(1, needle.length);
33
- if (wholeWord) {
34
- if (isWordCharacter(text, at - 1))
35
- continue;
36
- if (isWordCharacter(text, at + needle.length))
37
- continue;
38
- }
39
- if (matches.length >= MAX_MATCHES) {
40
- truncated = true;
41
- break;
42
- }
43
- const start = docPos(span.start + at);
44
- matches.push({ start, end: docPos(start + query.length) });
45
- }
46
- }
47
- return { matches, truncated };
48
- };
49
- export const matchAt = (matches, pos) => matches.find((match) => match.start <= pos && match.end >= pos);
50
- export const adjacentMatch = (matches, pos, direction) => {
51
- const last = matches[matches.length - 1];
52
- if (last === undefined)
53
- return undefined;
54
- if (direction > 0) {
55
- return matches.find((match) => match.start > pos) ?? matches[0];
56
- }
57
- let found;
58
- for (const match of matches) {
59
- if (match.end >= pos)
60
- break;
61
- found = match;
62
- }
63
- return found ?? last;
64
- };
65
- //# sourceMappingURL=search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/edit/search.ts"],"names":[],"mappings":"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"}
@@ -1,83 +0,0 @@
1
- export interface TableRecord {
2
- readonly tag: string;
3
- readonly offset: number;
4
- readonly length: number;
5
- }
6
- export interface SfntHead {
7
- readonly unitsPerEm: number;
8
- readonly indexToLocFormat: number;
9
- readonly xMin: number;
10
- readonly yMin: number;
11
- readonly xMax: number;
12
- readonly yMax: number;
13
- readonly macStyle: number;
14
- }
15
- export interface SfntHhea {
16
- readonly ascender: number;
17
- readonly descender: number;
18
- readonly lineGap: number;
19
- readonly numberOfHMetrics: number;
20
- }
21
- export interface SfntOs2 {
22
- readonly version: number;
23
- readonly fsType: number;
24
- readonly weightClass: number;
25
- readonly typoAscender: number;
26
- readonly typoDescender: number;
27
- readonly typoLineGap: number;
28
- readonly capHeight: number;
29
- }
30
- export declare const SFNT_TAG: (bytes: Uint8Array, at: number) => string;
31
- export declare class Sfnt {
32
- private readonly view;
33
- private readonly tables;
34
- readonly bytes: Uint8Array;
35
- readonly isCff: boolean;
36
- constructor(bytes: Uint8Array);
37
- private require;
38
- table(tag: string): Uint8Array | undefined;
39
- has(tag: string): boolean;
40
- tagNames(): readonly string[];
41
- private u8;
42
- private i16;
43
- private u16;
44
- private i32;
45
- private u32;
46
- get head(): SfntHead;
47
- get hhea(): SfntHhea;
48
- get os2(): SfntOs2 | undefined;
49
- get italicAngle(): number;
50
- get underline(): {
51
- readonly position: number;
52
- readonly thickness: number;
53
- };
54
- get strikeout(): {
55
- readonly position: number;
56
- readonly size: number;
57
- } | undefined;
58
- isMonospaced(): boolean;
59
- get numGlyphs(): number;
60
- postScriptName(fallback: string): string;
61
- private decodeName;
62
- hasGlyf(): boolean;
63
- private locaOffset;
64
- glyphRange(glyph: number): {
65
- readonly start: number;
66
- readonly end: number;
67
- } | undefined;
68
- glyphByteLength(glyph: number): number;
69
- private static readonly ARG_1_AND_2_ARE_WORDS;
70
- private static readonly WE_HAVE_A_SCALE;
71
- private static readonly MORE_COMPONENTS;
72
- private static readonly WE_HAVE_AN_X_AND_Y_SCALE;
73
- private static readonly WE_HAVE_A_TWO_BY_TWO;
74
- compositeGlyphs(glyph: number): readonly number[];
75
- advanceWidths(): readonly number[];
76
- private cmapFormat;
77
- private bestCmap;
78
- glyphFor(codePoint: number): number;
79
- private glyphFromFormat6;
80
- private glyphFromFormat4;
81
- private glyphFromFormat12;
82
- }
83
- //# sourceMappingURL=sfnt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sfnt.d.ts","sourceRoot":"","sources":["../../../src/pdf/fonts/sfnt.ts"],"names":[],"mappings":"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"}
@@ -1,363 +0,0 @@
1
- import { PdfError } from '../errors.js';
2
- export const SFNT_TAG = (bytes, at) => {
3
- let tag = '';
4
- for (let index = 0; index < 4; index += 1)
5
- tag += String.fromCharCode(bytes[at + index] ?? 0);
6
- return tag;
7
- };
8
- const sanitizeName = (value) => value.replace(/[^A-Za-z0-9._+-]/g, '').slice(0, 63);
9
- const unreadable = (detail) => new PdfError(`the font file could not be parsed: ${detail}`, {
10
- code: 'PDF_FONT_UNREADABLE',
11
- detail,
12
- });
13
- export class Sfnt {
14
- view;
15
- tables;
16
- bytes;
17
- isCff;
18
- constructor(bytes) {
19
- this.bytes = bytes;
20
- this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
21
- this.tables = new Map();
22
- if (bytes.byteLength < 12)
23
- throw unreadable('the file is shorter than an sfnt header');
24
- const flavour = this.view.getUint32(0, false);
25
- this.isCff = flavour === 0x4f54544f;
26
- if (!this.isCff && flavour !== 0x00010000 && flavour !== 0x74727565) {
27
- throw unreadable('the file has no sfnt version');
28
- }
29
- const count = this.view.getUint16(4, false);
30
- if (12 + count * 16 > bytes.byteLength)
31
- throw unreadable('the table directory runs past the file');
32
- for (let index = 0; index < count; index += 1) {
33
- const at = 12 + index * 16;
34
- const tag = SFNT_TAG(bytes, at);
35
- const offset = this.view.getUint32(at + 8, false);
36
- const length = this.view.getUint32(at + 12, false);
37
- if (offset + length > bytes.byteLength)
38
- throw unreadable(`table "${tag}" runs past the file`);
39
- this.tables.set(tag, { tag, offset, length });
40
- }
41
- }
42
- require(tag) {
43
- const record = this.tables.get(tag);
44
- if (record === undefined)
45
- throw unreadable(`table "${tag}" is missing`);
46
- return record;
47
- }
48
- table(tag) {
49
- const record = this.tables.get(tag);
50
- if (record === undefined)
51
- return undefined;
52
- return this.bytes.subarray(record.offset, record.offset + record.length);
53
- }
54
- has(tag) {
55
- return this.tables.has(tag);
56
- }
57
- tagNames() {
58
- return [...this.tables.keys()];
59
- }
60
- u8(at) {
61
- return this.view.getUint8(at);
62
- }
63
- i16(at) {
64
- return this.view.getInt16(at, false);
65
- }
66
- u16(at) {
67
- return this.view.getUint16(at, false);
68
- }
69
- i32(at) {
70
- return this.view.getInt32(at, false);
71
- }
72
- u32(at) {
73
- return this.view.getUint32(at, false);
74
- }
75
- get head() {
76
- const at = this.require('head').offset;
77
- return {
78
- unitsPerEm: this.u16(at + 18),
79
- indexToLocFormat: this.i16(at + 50),
80
- xMin: this.i16(at + 36),
81
- yMin: this.i16(at + 38),
82
- xMax: this.i16(at + 40),
83
- yMax: this.i16(at + 42),
84
- macStyle: this.u16(at + 44),
85
- };
86
- }
87
- get hhea() {
88
- const at = this.require('hhea').offset;
89
- return {
90
- ascender: this.i16(at + 4),
91
- descender: this.i16(at + 6),
92
- lineGap: this.i16(at + 8),
93
- numberOfHMetrics: this.u16(at + 34),
94
- };
95
- }
96
- get os2() {
97
- const record = this.tables.get('OS/2');
98
- if (record === undefined)
99
- return undefined;
100
- const at = record.offset;
101
- const version = this.u16(at);
102
- const typoAscender = this.i16(at + 68);
103
- const typoDescender = this.i16(at + 70);
104
- const typoLineGap = this.i16(at + 72);
105
- const capHeight = record.length >= 90 ? this.i16(at + 88) : 0;
106
- return {
107
- version,
108
- fsType: this.u16(at + 8),
109
- weightClass: this.u16(at + 4),
110
- typoAscender,
111
- typoDescender,
112
- typoLineGap,
113
- capHeight,
114
- };
115
- }
116
- get italicAngle() {
117
- const record = this.tables.get('post');
118
- if (record === undefined || record.length < 8)
119
- return 0;
120
- return this.i32(record.offset + 4) / 65536;
121
- }
122
- get underline() {
123
- const record = this.tables.get('post');
124
- if (record === undefined || record.length < 12) {
125
- return { position: -Math.round(this.head.unitsPerEm * 0.1), thickness: Math.max(1, Math.round(this.head.unitsPerEm / 20)) };
126
- }
127
- const thickness = this.i16(record.offset + 10);
128
- return {
129
- position: this.i16(record.offset + 8),
130
- thickness: thickness > 0 ? thickness : Math.max(1, Math.round(this.head.unitsPerEm / 20)),
131
- };
132
- }
133
- get strikeout() {
134
- const record = this.tables.get('OS/2');
135
- if (record === undefined || record.length < 30)
136
- return undefined;
137
- return {
138
- position: this.i16(record.offset + 26),
139
- size: Math.max(1, this.i16(record.offset + 28)),
140
- };
141
- }
142
- isMonospaced() {
143
- const widths = this.advanceWidths();
144
- const first = widths[Math.min(widths.length - 1, 32)] ?? 0;
145
- for (let glyph = 33; glyph < Math.min(widths.length, 127); glyph += 1) {
146
- if ((widths[glyph] ?? 0) !== first)
147
- return false;
148
- }
149
- return first > 0;
150
- }
151
- get numGlyphs() {
152
- const at = this.require('maxp').offset;
153
- return this.u16(at + 4);
154
- }
155
- postScriptName(fallback) {
156
- const record = this.tables.get('name');
157
- if (record === undefined)
158
- return fallback;
159
- const count = this.u16(record.offset + 2);
160
- const storage = record.offset + this.u16(record.offset + 4);
161
- let mac;
162
- for (let index = 0; index < count; index += 1) {
163
- const at = record.offset + 6 + index * 12;
164
- if (at + 12 > this.bytes.byteLength)
165
- break;
166
- const platform = this.u16(at);
167
- const nameId = this.u16(at + 6);
168
- if (nameId !== 6)
169
- continue;
170
- const length = this.u16(at + 8);
171
- const offset = this.u16(at + 10);
172
- const text = this.decodeName(storage + offset, length, platform);
173
- if (platform === 3 && text !== '')
174
- return sanitizeName(text);
175
- if (mac === undefined && text !== '')
176
- mac = sanitizeName(text);
177
- }
178
- return mac ?? fallback;
179
- }
180
- decodeName(at, length, platform) {
181
- if (at + length > this.bytes.byteLength)
182
- return '';
183
- let out = '';
184
- if (platform === 3 || platform === 0) {
185
- for (let index = 0; index + 1 < length; index += 2)
186
- out += String.fromCharCode(this.u16(at + index));
187
- return out;
188
- }
189
- for (let index = 0; index < length; index += 1)
190
- out += String.fromCharCode(this.u8(at + index));
191
- return out;
192
- }
193
- hasGlyf() {
194
- return this.tables.has('glyf') && this.tables.has('loca');
195
- }
196
- locaOffset(glyph) {
197
- const record = this.require('loca');
198
- const format = this.head.indexToLocFormat;
199
- const numGlyphs = this.numGlyphs;
200
- const index = Math.min(Math.max(glyph, 0), numGlyphs);
201
- if (format === 0)
202
- return this.u16(record.offset + index * 2) * 2;
203
- return this.u32(record.offset + index * 4);
204
- }
205
- glyphRange(glyph) {
206
- if (!this.hasGlyf())
207
- return undefined;
208
- const record = this.require('glyf');
209
- const start = record.offset + this.locaOffset(glyph);
210
- const end = record.offset + this.locaOffset(glyph + 1);
211
- if (end <= start)
212
- return undefined;
213
- return { start, end: Math.min(end, this.bytes.byteLength) };
214
- }
215
- glyphByteLength(glyph) {
216
- const range = this.glyphRange(glyph);
217
- return range === undefined ? 0 : range.end - range.start;
218
- }
219
- static ARG_1_AND_2_ARE_WORDS = 0x0001;
220
- static WE_HAVE_A_SCALE = 0x0008;
221
- static MORE_COMPONENTS = 0x0020;
222
- static WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;
223
- static WE_HAVE_A_TWO_BY_TWO = 0x0080;
224
- compositeGlyphs(glyph) {
225
- const range = this.glyphRange(glyph);
226
- if (range === undefined)
227
- return [];
228
- if (this.i16(range.start) >= 0)
229
- return [];
230
- const out = [];
231
- let at = range.start + 10;
232
- for (;;) {
233
- if (at + 4 > range.end)
234
- break;
235
- const flags = this.u16(at);
236
- const component = this.u16(at + 2);
237
- out.push(component);
238
- at += 4;
239
- at += (flags & Sfnt.ARG_1_AND_2_ARE_WORDS) !== 0 ? 4 : 2;
240
- if ((flags & Sfnt.WE_HAVE_A_SCALE) !== 0)
241
- at += 2;
242
- else if ((flags & Sfnt.WE_HAVE_AN_X_AND_Y_SCALE) !== 0)
243
- at += 4;
244
- else if ((flags & Sfnt.WE_HAVE_A_TWO_BY_TWO) !== 0)
245
- at += 8;
246
- if ((flags & Sfnt.MORE_COMPONENTS) === 0)
247
- break;
248
- }
249
- return out;
250
- }
251
- advanceWidths() {
252
- const record = this.require('hmtx');
253
- const numberOfHMetrics = this.hhea.numberOfHMetrics;
254
- const numGlyphs = this.numGlyphs;
255
- const out = [];
256
- let last = 0;
257
- for (let glyph = 0; glyph < numGlyphs; glyph += 1) {
258
- if (glyph < numberOfHMetrics) {
259
- last = this.u16(record.offset + glyph * 4);
260
- }
261
- out.push(last);
262
- }
263
- return out;
264
- }
265
- cmapFormat(offset) {
266
- return this.u16(this.require('cmap').offset + offset);
267
- }
268
- bestCmap() {
269
- const record = this.require('cmap');
270
- const count = this.u16(record.offset + 2);
271
- let best;
272
- let bestScore = -1;
273
- for (let index = 0; index < count; index += 1) {
274
- const platform = this.u16(record.offset + 4 + index * 8);
275
- const encoding = this.u16(record.offset + 6 + index * 8);
276
- const offset = this.u32(record.offset + 8 + index * 8);
277
- const format = this.cmapFormat(offset);
278
- if (format !== 0 && format !== 4 && format !== 6 && format !== 12)
279
- continue;
280
- const unicode = platform === 3 && (encoding === 1 || encoding === 10);
281
- const score = (unicode ? 100 : 0) + (format === 12 ? 10 : 0) + (platform === 0 ? 5 : 0);
282
- if (score > bestScore) {
283
- bestScore = score;
284
- best = offset;
285
- }
286
- }
287
- return best;
288
- }
289
- glyphFor(codePoint) {
290
- const offset = this.bestCmap();
291
- if (offset === undefined)
292
- return 0;
293
- const format = this.cmapFormat(offset);
294
- if (format === 4)
295
- return this.glyphFromFormat4(offset, codePoint);
296
- if (format === 12)
297
- return this.glyphFromFormat12(offset, codePoint);
298
- if (format === 6)
299
- return this.glyphFromFormat6(offset, codePoint);
300
- if (format === 0) {
301
- if (codePoint > 0xff)
302
- return 0;
303
- return this.u8(this.require('cmap').offset + offset + 6 + codePoint);
304
- }
305
- return 0;
306
- }
307
- glyphFromFormat6(offset, codePoint) {
308
- const at = this.require('cmap').offset + offset;
309
- const first = this.u16(at + 6);
310
- const count = this.u16(at + 8);
311
- if (codePoint < first || codePoint >= first + count)
312
- return 0;
313
- return this.u16(at + 10 + (codePoint - first) * 2);
314
- }
315
- glyphFromFormat4(offset, codePoint) {
316
- if (codePoint > 0xffff)
317
- return 0;
318
- const base = this.require('cmap').offset + offset;
319
- const segCount = this.u16(base + 6) / 2;
320
- const endAt = base + 14;
321
- const startAt = endAt + segCount * 2 + 2;
322
- const deltaAt = startAt + segCount * 2;
323
- const rangeAt = deltaAt + segCount * 2;
324
- for (let segment = 0; segment < segCount; segment += 1) {
325
- const end = this.u16(endAt + segment * 2);
326
- if (end < codePoint)
327
- continue;
328
- const start = this.u16(startAt + segment * 2);
329
- if (start > codePoint)
330
- return 0;
331
- const delta = this.i16(deltaAt + segment * 2);
332
- const rangeOffset = this.u16(rangeAt + segment * 2);
333
- if (rangeOffset === 0)
334
- return (codePoint + delta) & 0xffff;
335
- const at = rangeAt + segment * 2 + rangeOffset + (codePoint - start) * 2;
336
- const glyph = this.u16(at);
337
- if (glyph === 0)
338
- return 0;
339
- return (glyph + delta) & 0xffff;
340
- }
341
- return 0;
342
- }
343
- glyphFromFormat12(offset, codePoint) {
344
- const base = this.require('cmap').offset + offset;
345
- const groups = this.u32(base + 12);
346
- let low = 0;
347
- let high = groups - 1;
348
- while (low <= high) {
349
- const middle = (low + high) >> 1;
350
- const at = base + 16 + middle * 12;
351
- const start = this.u32(at);
352
- const end = this.u32(at + 4);
353
- if (codePoint < start)
354
- high = middle - 1;
355
- else if (codePoint > end)
356
- low = middle + 1;
357
- else
358
- return this.u32(at + 8) + (codePoint - start);
359
- }
360
- return 0;
361
- }
362
- }
363
- //# sourceMappingURL=sfnt.js.map