@dxyl/utils 1.2.0 → 1.2.2

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.
@@ -0,0 +1,372 @@
1
+ /// <reference lib="dom" />
2
+
3
+ export as namespace opentype;
4
+
5
+ /******************************************
6
+ * FONT
7
+ ******************************************/
8
+
9
+ export class Font {
10
+ names: FontNames;
11
+ unitsPerEm: number;
12
+ ascender: number;
13
+ descender: number;
14
+ createdTimestamp: number;
15
+ tables: { [tableName: string]: Table };
16
+ supported: boolean;
17
+ glyphs: GlyphSet;
18
+ encoding: Encoding;
19
+ substitution: Substitution;
20
+
21
+ readonly defaultRenderOptions: RenderOptions;
22
+
23
+ constructor(options: FontConstructorOptions);
24
+
25
+ charToGlyph(c: string): Glyph;
26
+ charToGlyphIndex(s: string): number;
27
+ download(fileName?: string): void;
28
+ draw(
29
+ ctx: CanvasRenderingContext2D,
30
+ text: string,
31
+ x?: number,
32
+ y?: number,
33
+ fontSize?: number,
34
+ options?: RenderOptions,
35
+ ): void;
36
+ drawMetrics(
37
+ ctx: CanvasRenderingContext2D,
38
+ text: string,
39
+ x?: number,
40
+ y?: number,
41
+ fontSize?: number,
42
+ options?: RenderOptions,
43
+ ): void;
44
+ drawPoints(
45
+ ctx: CanvasRenderingContext2D,
46
+ text: string,
47
+ x?: number,
48
+ y?: number,
49
+ fontSize?: number,
50
+ options?: RenderOptions,
51
+ ): void;
52
+ forEachGlyph(
53
+ text: string,
54
+ x: number | undefined,
55
+ y: number | undefined,
56
+ fontSize: number | undefined,
57
+ options: RenderOptions | undefined,
58
+ callback: (glyph: Glyph, x: number, y: number, fontSize: number, options?: RenderOptions) => void,
59
+ ): number;
60
+ getAdvanceWidth(text: string, fontSize?: number, options?: RenderOptions): number;
61
+ getEnglishName(name: string): string;
62
+ getKerningValue(leftGlyph: Glyph | number, rightGlyph: Glyph | number): number;
63
+ getPath(text: string, x: number, y: number, fontSize: number, options?: RenderOptions): Path;
64
+ getPaths(text: string, x: number, y: number, fontSize: number, options?: RenderOptions): Path[];
65
+ glyphIndexToName(gid: number): string;
66
+ glyphNames: GlyphNames;
67
+ hasChar(c: string): boolean;
68
+ kerningPairs: KerningPairs;
69
+ nameToGlyph(name: string): Glyph;
70
+ nameToGlyphIndex(name: string): number;
71
+ numberOfHMetrics: number;
72
+ numGlyphs: number;
73
+ outlinesFormat: string;
74
+ stringToGlyphs(s: string): Glyph[];
75
+ toArrayBuffer(): ArrayBuffer;
76
+ toBuffer(): ArrayBuffer;
77
+ toTables(): Table;
78
+ validate(): void;
79
+ }
80
+
81
+ export type FontConstructorOptions =
82
+ & FontConstructorOptionsBase
83
+ & Partial<FontOptions>
84
+ & {
85
+ glyphs: Glyph[];
86
+ };
87
+
88
+ export interface FontOptions {
89
+ empty?: boolean | undefined;
90
+ familyName: string;
91
+ styleName: string;
92
+ fullName?: string | undefined;
93
+ postScriptName?: string | undefined;
94
+ designer?: string | undefined;
95
+ designerURL?: string | undefined;
96
+ manufacturer?: string | undefined;
97
+ manufacturerURL?: string | undefined;
98
+ license?: string | undefined;
99
+ licenseURL?: string | undefined;
100
+ version?: string | undefined;
101
+ description?: string | undefined;
102
+ copyright?: string | undefined;
103
+ trademark?: string | undefined;
104
+ unitsPerEm: number;
105
+ ascender: number;
106
+ descender: number;
107
+ createdTimestamp: number;
108
+ weightClass?: string | undefined;
109
+ widthClass?: string | undefined;
110
+ fsSelection?: string | undefined;
111
+ }
112
+
113
+ export interface FontConstructorOptionsBase {
114
+ familyName: string;
115
+ styleName: string;
116
+ unitsPerEm: number;
117
+ ascender: number;
118
+ descender: number;
119
+ }
120
+
121
+ export interface FontNames {
122
+ copyright: LocalizedName;
123
+ description: LocalizedName;
124
+ designer: LocalizedName;
125
+ designerURL: LocalizedName;
126
+ fontFamily: LocalizedName;
127
+ fontSubfamily: LocalizedName;
128
+ fullName: LocalizedName;
129
+ license: LocalizedName;
130
+ licenseURL: LocalizedName;
131
+ manufacturer: LocalizedName;
132
+ manufacturerURL: LocalizedName;
133
+ postScriptName: LocalizedName;
134
+ trademark: LocalizedName;
135
+ version: LocalizedName;
136
+ }
137
+
138
+ export interface Table {
139
+ [propName: string]: any;
140
+ encode(): number[];
141
+ fields: Field[];
142
+ sizeOf(): number;
143
+ tables: Table[];
144
+ tableName: string;
145
+ }
146
+
147
+ export interface KerningPairs {
148
+ [pair: string]: number;
149
+ }
150
+
151
+ export interface LocalizedName {
152
+ [lang: string]: string;
153
+ }
154
+
155
+ export interface Field {
156
+ name: string;
157
+ type: string;
158
+ value: any;
159
+ }
160
+
161
+ /******************************************
162
+ * GLYPH
163
+ ******************************************/
164
+
165
+ export class Glyph {
166
+ index: number;
167
+ name: string | null;
168
+ unicode?: number | undefined;
169
+ unicodes: number[];
170
+ xMin?: number | undefined;
171
+ xMax?: number | undefined;
172
+ yMin?: number | undefined;
173
+ yMax?: number | undefined;
174
+ advanceWidth?: number | undefined;
175
+ leftSideBearing?: number | undefined;
176
+ path: Path;
177
+
178
+ private bindConstructorValues(options: GlyphOptions): void;
179
+ constructor(options: GlyphOptions);
180
+
181
+ addUnicode(unicode: number): void;
182
+ getBoundingBox(): BoundingBox;
183
+ getPath(x?: number, y?: number, fontSize?: number, options?: RenderOptions, font?: Font): Path;
184
+ getContours(): Contour;
185
+ getMetrics(): Metrics;
186
+ draw(ctx: CanvasRenderingContext2D, x?: number, y?: number, fontSize?: number, options?: RenderOptions): void;
187
+ drawPoints(ctx: CanvasRenderingContext2D, x?: number, y?: number, fontSize?: number, options?: RenderOptions): void;
188
+ drawMetrics(
189
+ ctx: CanvasRenderingContext2D,
190
+ x?: number,
191
+ y?: number,
192
+ fontSize?: number,
193
+ options?: RenderOptions,
194
+ ): void;
195
+ }
196
+
197
+ export interface GlyphOptions {
198
+ index?: number | undefined;
199
+ name?: string | undefined;
200
+ unicode?: number | undefined;
201
+ unicodes?: number[] | undefined;
202
+ xMin?: number | undefined;
203
+ yMin?: number | undefined;
204
+ xMax?: number | undefined;
205
+ yMax?: number | undefined;
206
+ advanceWidth?: number | undefined;
207
+ leftSideBearing?: number | undefined;
208
+ path?: Path | (() => Path) | undefined;
209
+ }
210
+
211
+ export class GlyphNames {
212
+ private names;
213
+ constructor(post: Post);
214
+ glyphIndexToName(gid: number): string;
215
+ nameToGlyphIndex(name: string): number;
216
+ }
217
+
218
+ export class GlyphSet {
219
+ private font;
220
+ private glyphs;
221
+ constructor(font: Font, glyphs: Glyph[] | Array<() => Glyph>);
222
+ get(index: number): Glyph;
223
+ length: number;
224
+ push(index: number, loader: () => Glyph): void;
225
+ }
226
+
227
+ export interface Post {
228
+ glyphNameIndex?: number[] | undefined;
229
+ isFixedPitch: number;
230
+ italicAngle: number;
231
+ maxMemType1: number;
232
+ minMemType1: number;
233
+ maxMemType42: number;
234
+ minMemType42: number;
235
+ names?: string[] | undefined;
236
+ numberOfGlyphs?: number | undefined;
237
+ offset?: number[] | undefined;
238
+ underlinePosition: number;
239
+ underlineThickness: number;
240
+ version: number;
241
+ }
242
+
243
+ export interface RenderOptions {
244
+ script?: string | undefined;
245
+ language?: string | undefined;
246
+ kerning?: boolean | undefined;
247
+ xScale?: number | undefined;
248
+ yScale?: number | undefined;
249
+ letterSpacing?: number | undefined;
250
+ tracking?: number | undefined;
251
+ features?:
252
+ | {
253
+ [key: string]: boolean;
254
+ }
255
+ | undefined;
256
+ }
257
+
258
+ export interface Metrics {
259
+ leftSideBearing: number;
260
+ rightSideBearing?: number | undefined;
261
+ xMax: number;
262
+ xMin: number;
263
+ yMax: number;
264
+ yMin: number;
265
+ }
266
+
267
+ export interface Contour extends Array<Point> {}
268
+
269
+ export interface Point {
270
+ lastPointOfContour?: boolean | undefined;
271
+ }
272
+
273
+ /******************************************
274
+ * PATH
275
+ ******************************************/
276
+
277
+ export class Path {
278
+ fill: string | null;
279
+ stroke: string | null;
280
+ strokeWidth: number;
281
+ constructor();
282
+ bezierCurveTo(x1: number, y1: number, x2: number, y2: number, x: number, y: number): void;
283
+ close: () => void;
284
+ closePath(): void;
285
+ commands: PathCommand[];
286
+ curveTo: (x1: number, y1: number, x2: number, y2: number, x: number, y: number) => void;
287
+ draw(ctx: CanvasRenderingContext2D): void;
288
+ extend(pathOrCommands: Path | PathCommand[] | BoundingBox): void;
289
+ getBoundingBox(): BoundingBox;
290
+ lineTo(x: number, y: number): void;
291
+ moveTo(x: number, y: number): void;
292
+ quadraticCurveTo(x1: number, y1: number, x: number, y: number): void;
293
+ quadTo: (x1: number, y1: number, x: number, y: number) => void;
294
+ toDOMElement(decimalPlaces: number): SVGPathElement;
295
+ toPathData(decimalPlaces: number): string;
296
+ toSVG(decimalPlaces: number): string;
297
+ unitsPerEm: number;
298
+ }
299
+
300
+ export type PathCommand =
301
+ | {
302
+ type: "M";
303
+ x: number;
304
+ y: number;
305
+ }
306
+ | {
307
+ type: "L";
308
+ x: number;
309
+ y: number;
310
+ }
311
+ | {
312
+ type: "C";
313
+ x1: number;
314
+ y1: number;
315
+ x2: number;
316
+ y2: number;
317
+ x: number;
318
+ y: number;
319
+ }
320
+ | {
321
+ type: "Q";
322
+ x1: number;
323
+ y1: number;
324
+ x: number;
325
+ y: number;
326
+ }
327
+ | {
328
+ type: "Z";
329
+ };
330
+
331
+ /******************************************
332
+ * UTIL CLASSES
333
+ ******************************************/
334
+
335
+ export class BoundingBox {
336
+ x1: number;
337
+ y1: number;
338
+ x2: number;
339
+ y2: number;
340
+
341
+ isEmpty(): boolean;
342
+ addPoint(x: number, y: number): void;
343
+ addX(x: number): void;
344
+ addY(y: number): void;
345
+ addBezier(x0: number, y0: number, x1: number, y1: number, x2: number, y2: number, x: number, y: number): void;
346
+ addQuad(x0: number, y0: number, x1: number, y1: number, x: number, y: number): void;
347
+ }
348
+
349
+ export interface Encoding {
350
+ charset: string;
351
+ charToGlyphIndex(c: string): number;
352
+ font: Font;
353
+ }
354
+
355
+ export type Substitution = (font: Font) => any;
356
+ // TODO add methods
357
+
358
+ /******************************************
359
+ * STATIC
360
+ ******************************************/
361
+
362
+ export function load(url: string, callback: (error: any, font?: Font) => void): void;
363
+ export function load(url: string): Promise<Font>;
364
+
365
+ export function loadSync(
366
+ url: string,
367
+ opt?: {
368
+ lowMemory: boolean;
369
+ },
370
+ ): Font;
371
+
372
+ export function parse(buffer: any): Font;