@mapka/font-sdf 0.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.
package/lib/font.js ADDED
@@ -0,0 +1,75 @@
1
+ import Pbf from "pbf";
2
+ import { load } from "opentype.js";
3
+ import { decode, encode } from "./pbf.js";
4
+ import { writeglyphs } from "./glyphs.js";
5
+ import { glyphToSDF } from "./sdf.js";
6
+ export async function readFont(filename) {
7
+ return new Promise((resolve, reject) => {
8
+ load(filename, (err, font) => {
9
+ if (err || !font) {
10
+ reject(err);
11
+ }
12
+ else {
13
+ resolve(font);
14
+ }
15
+ });
16
+ });
17
+ }
18
+ const fontSize = 24;
19
+ const buffer = 3;
20
+ const cutoff = 2 / 8;
21
+ /**
22
+ * Convert opentype font to glyphs sdf.
23
+ */
24
+ export function fontToGlyphs(font, from = 0, to = 65535) {
25
+ const pbf = new Pbf();
26
+ const family = font.tables.name.preferredFamily?.en || font.tables.name.fontFamily?.en;
27
+ const style = font.tables.name.preferredSubfamily?.en || font.tables.name.fontSubfamily?.en;
28
+ const basename = `${family} ${style}`;
29
+ const fontStack = {
30
+ name: basename,
31
+ range: `${from}-${to}`,
32
+ glyphs: [],
33
+ };
34
+ for (let i = from; i <= to; i++) {
35
+ const char = String.fromCharCode(i);
36
+ const glyph = font.charToGlyph(char);
37
+ if (glyph.index > 0) {
38
+ const sdf = glyphToSDF(font, glyph, fontSize, buffer, cutoff);
39
+ /**
40
+ * Base sdf glyph
41
+ */
42
+ const sdfGlyph = {
43
+ id: i,
44
+ bitmap: null,
45
+ width: sdf.glyphWidth,
46
+ height: sdf.glyphHeight,
47
+ left: sdf.glyphBearingX,
48
+ top: sdf.glyphTop,
49
+ advance: sdf.glyphAdvance,
50
+ };
51
+ /**
52
+ * If the glyph has no bitmap data, don't include it.
53
+ * For example, the space character has no bitmap data.
54
+ */
55
+ if (sdf.data) {
56
+ sdfGlyph.bitmap = Buffer.from(sdf.data);
57
+ }
58
+ fontStack.glyphs.push(sdfGlyph);
59
+ }
60
+ }
61
+ writeglyphs({ stacks: [fontStack] }, pbf);
62
+ const view = pbf.finish();
63
+ return Buffer.from(view);
64
+ }
65
+ /**
66
+ * Filter glyphs by range.
67
+ */
68
+ export function glyphsRange(fontStack, from = 0, to = 65535) {
69
+ const result = decode(fontStack);
70
+ const { stacks: [first], } = result;
71
+ first.range = `${from}-${to}`;
72
+ first.glyphs = first.glyphs.filter((glyph) => glyph.id >= from && glyph.id <= to);
73
+ return encode(result);
74
+ }
75
+ //# sourceMappingURL=font.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"font.js","sourceRoot":"","sources":["../src/font.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export function readglyph(pbf: any, end: any): any;
2
+ export function writeglyph(obj: any, pbf: any): void;
3
+ export function readfontstack(pbf: any, end: any): any;
4
+ export function writefontstack(obj: any, pbf: any): void;
5
+ export function readglyphs(pbf: any, end: any): any;
6
+ export function writeglyphs(obj: any, pbf: any): void;
7
+ //# sourceMappingURL=glyphs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glyphs.d.ts","sourceRoot":"","sources":["../src/glyphs.js"],"names":[],"mappings":"AAEA,mDAEC;AAUD,qDAQC;AAED,uDAEC;AAMD,yDAIC;AAED,oDAEC;AAID,sDAEC"}
package/lib/glyphs.js ADDED
@@ -0,0 +1,69 @@
1
+ // code generated by pbf v4.0.1
2
+ export function readglyph(pbf, end) {
3
+ return pbf.readFields(readglyphField, { id: 0, bitmap: undefined, width: 0, height: 0, left: 0, top: 0, advance: 0 }, end);
4
+ }
5
+ function readglyphField(tag, obj, pbf) {
6
+ if (tag === 1)
7
+ obj.id = pbf.readVarint();
8
+ else if (tag === 2)
9
+ obj.bitmap = pbf.readBytes();
10
+ else if (tag === 3)
11
+ obj.width = pbf.readVarint();
12
+ else if (tag === 4)
13
+ obj.height = pbf.readVarint();
14
+ else if (tag === 5)
15
+ obj.left = pbf.readSVarint();
16
+ else if (tag === 6)
17
+ obj.top = pbf.readSVarint();
18
+ else if (tag === 7)
19
+ obj.advance = pbf.readVarint();
20
+ }
21
+ export function writeglyph(obj, pbf) {
22
+ if (obj.id)
23
+ pbf.writeVarintField(1, obj.id);
24
+ if (obj.bitmap != null)
25
+ pbf.writeBytesField(2, obj.bitmap);
26
+ if (obj.width)
27
+ pbf.writeVarintField(3, obj.width);
28
+ if (obj.height)
29
+ pbf.writeVarintField(4, obj.height);
30
+ if (obj.left)
31
+ pbf.writeSVarintField(5, obj.left);
32
+ if (obj.top)
33
+ pbf.writeSVarintField(6, obj.top);
34
+ if (obj.advance)
35
+ pbf.writeVarintField(7, obj.advance);
36
+ }
37
+ export function readfontstack(pbf, end) {
38
+ return pbf.readFields(readfontstackField, { name: "", range: "", glyphs: [] }, end);
39
+ }
40
+ function readfontstackField(tag, obj, pbf) {
41
+ if (tag === 1)
42
+ obj.name = pbf.readString();
43
+ else if (tag === 2)
44
+ obj.range = pbf.readString();
45
+ else if (tag === 3)
46
+ obj.glyphs.push(readglyph(pbf, pbf.readVarint() + pbf.pos));
47
+ }
48
+ export function writefontstack(obj, pbf) {
49
+ if (obj.name)
50
+ pbf.writeStringField(1, obj.name);
51
+ if (obj.range)
52
+ pbf.writeStringField(2, obj.range);
53
+ if (obj.glyphs)
54
+ for (const item of obj.glyphs)
55
+ pbf.writeMessage(3, writeglyph, item);
56
+ }
57
+ export function readglyphs(pbf, end) {
58
+ return pbf.readFields(readglyphsField, { stacks: [] }, end);
59
+ }
60
+ function readglyphsField(tag, obj, pbf) {
61
+ if (tag === 1)
62
+ obj.stacks.push(readfontstack(pbf, pbf.readVarint() + pbf.pos));
63
+ }
64
+ export function writeglyphs(obj, pbf) {
65
+ if (obj.stacks)
66
+ for (const item of obj.stacks)
67
+ pbf.writeMessage(1, writefontstack, item);
68
+ }
69
+ //# sourceMappingURL=glyphs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glyphs.js","sourceRoot":"","sources":["../src/glyphs.js"],"names":[],"mappings":"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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export { decode, encode, debug } from './pbf.js';
2
+ export { pathToSDF } from './sdf.js';
3
+ export { fontToGlyphs, glyphsRange, readFont } from './font.js';
4
+ export type { Glyph, FontStack, Glyphs } from './pbf.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAC;AACnC,OAAO,EAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAC;AAE9D,YAAY,EACV,KAAK,EACL,SAAS,EACT,MAAM,EACP,MAAM,UAAU,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { decode, encode, debug } from './pbf.js';
2
+ export { pathToSDF } from './sdf.js';
3
+ export { fontToGlyphs, glyphsRange, readFont } from './font.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAC;AACnC,OAAO,EAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAC"}
package/lib/pbf.d.ts ADDED
@@ -0,0 +1,36 @@
1
+ export interface Glyph {
2
+ id: number;
3
+ bitmap: Buffer | null;
4
+ width: number;
5
+ height: number;
6
+ left: number;
7
+ top: number;
8
+ advance: number;
9
+ }
10
+ export interface FontStack {
11
+ name?: string;
12
+ range?: string;
13
+ glyphs: Glyph[];
14
+ }
15
+ export interface Glyphs {
16
+ stacks: FontStack[];
17
+ }
18
+ /**
19
+ *
20
+ * @param buffer A PBF buffer.
21
+ * @returns {Glyphs} A Glyphs message.
22
+ */
23
+ export declare function decode(buffer: Buffer): Glyphs;
24
+ /**
25
+ * Encode a Glyphs message.
26
+ * @param {Glyphs} message A Glyphs message.
27
+ * @returns {Buffer} A PBF buffer.
28
+ */
29
+ export declare function encode(message: Glyphs): Buffer;
30
+ /**
31
+ * Debug a PBF.
32
+ * @param {Buffer} buffer A PBF buffer.
33
+ * @param {boolean} decoded Decode the buffer before stringify.
34
+ */
35
+ export declare function debug(buffer: Buffer, decoded?: boolean): string;
36
+ //# sourceMappingURL=pbf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbf.d.ts","sourceRoot":"","sources":["../src/pbf.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,UAAO,UAcnD"}
package/lib/pbf.js ADDED
@@ -0,0 +1,39 @@
1
+ import Pbf from "pbf";
2
+ import { readglyphs, writeglyphs } from "./glyphs.js";
3
+ /**
4
+ *
5
+ * @param buffer A PBF buffer.
6
+ * @returns {Glyphs} A Glyphs message.
7
+ */
8
+ export function decode(buffer) {
9
+ const pbf = new Pbf(buffer);
10
+ return readglyphs(pbf);
11
+ }
12
+ /**
13
+ * Encode a Glyphs message.
14
+ * @param {Glyphs} message A Glyphs message.
15
+ * @returns {Buffer} A PBF buffer.
16
+ */
17
+ export function encode(message) {
18
+ const pbf = new Pbf();
19
+ writeglyphs(message, pbf);
20
+ const view = pbf.finish();
21
+ return Buffer.from(view);
22
+ }
23
+ /**
24
+ * Debug a PBF.
25
+ * @param {Buffer} buffer A PBF buffer.
26
+ * @param {boolean} decoded Decode the buffer before stringify.
27
+ */
28
+ export function debug(buffer, decoded = true) {
29
+ let result = buffer;
30
+ if (decoded) {
31
+ result = decode(buffer);
32
+ }
33
+ return JSON.stringify(result, (k, v) => {
34
+ if (k !== "bitmap")
35
+ return v;
36
+ return v ? v.data.length : v;
37
+ }, 2);
38
+ }
39
+ //# sourceMappingURL=pbf.js.map
package/lib/pbf.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbf.js","sourceRoot":"","sources":["../src/pbf.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EACL,UAAU,EACV,WAAW,EACZ,MAAM,aAAa,CAAC;AAsBrB;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,MAAc;IACnC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,OAAe;IACpC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IACtB,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;IAE1B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,MAAc,EAAE,OAAO,GAAG,IAAI;IAClD,IAAI,MAAM,GAAoB,MAAM,CAAA;IACpC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CACnB,MAAM,EACN,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACP,IAAI,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,EACD,CAAC,CACF,CAAC;AACJ,CAAC"}
package/lib/sdf.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ export function pathToSDF(path: any, width: any, height: any, buffer: any, cutoff: any): Uint8ClampedArray<ArrayBuffer>;
2
+ export function glyphToSDF(font: any, glyph: any, fontSize: any, buffer: any, cutoff: any): {
3
+ width: number;
4
+ height: number;
5
+ data: null;
6
+ glyphBearingX: number;
7
+ glyphWidth: number;
8
+ glyphBearingY: number;
9
+ glyphHeight: number;
10
+ glyphTop: number;
11
+ glyphAdvance: number;
12
+ };
13
+ //# sourceMappingURL=sdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdf.d.ts","sourceRoot":"","sources":["../src/sdf.js"],"names":[],"mappings":"AA4QA,wHAEC;AA3EM;;;;;;;;;;EAuEN"}
package/lib/sdf.js ADDED
@@ -0,0 +1,230 @@
1
+ import { Glyph } from "opentype.js";
2
+ import { Curve3Div, Curve4Div } from "./curve.js";
3
+ import rbush from "rbush";
4
+ // calculates the bbox for a line segment from a to b
5
+ function bbox(a, b) {
6
+ return [
7
+ /* x1 */ Math.min(a[0], b[0]),
8
+ /* y1 */ Math.min(a[1], b[1]),
9
+ /* x2 */ Math.max(a[0], b[0]),
10
+ /* y2 */ Math.max(a[1], b[1]),
11
+ a,
12
+ b,
13
+ ];
14
+ }
15
+ function pt(x, y) {
16
+ return [x, y];
17
+ }
18
+ // point in polygon ray casting algorithm
19
+ function polyContainsPoint(rings, p) {
20
+ var c = false, ring, p1, p2;
21
+ for (var k = 0; k < rings.length; k++) {
22
+ ring = rings[k];
23
+ for (var i = 0, j = ring.length - 1; i < ring.length; j = i++) {
24
+ p1 = ring[i];
25
+ p2 = ring[j];
26
+ if (p1[1] > p.y != p2[1] > p.y &&
27
+ p.x < ((p2[0] - p1[0]) * (p.y - p1[1])) / (p2[1] - p1[1]) + p1[0]) {
28
+ c = !c;
29
+ }
30
+ }
31
+ }
32
+ return c;
33
+ }
34
+ function squaredDistance(v, w) {
35
+ var a = v[0] - w[0];
36
+ var b = v[1] - w[1];
37
+ return a * a + b * b;
38
+ }
39
+ function projectPointOnLineSegment(p, v, w) {
40
+ var l2 = squaredDistance(v, w);
41
+ if (l2 === 0)
42
+ return v;
43
+ var t = ((p[0] - v[0]) * (w[0] - v[0]) + (p[1] - v[1]) * (w[1] - v[1])) / l2;
44
+ if (t < 0)
45
+ return v;
46
+ if (t > 1)
47
+ return w;
48
+ return [v[0] + t * (w[0] - v[0]), v[1] + t * (w[1] - v[1])];
49
+ }
50
+ function squaredDistanceToLineSegment(p, v, w) {
51
+ var s = projectPointOnLineSegment(p, v, w);
52
+ return squaredDistance(p, s);
53
+ }
54
+ function minDistanceToLineSegment(tree, p, radius) {
55
+ var squaredRadius = radius * radius;
56
+ var segments = tree.search([p[0] - radius, p[1] - radius, p[0] + radius, p[1] + radius]);
57
+ var squaredDistance = Number.POSITIVE_INFINITY;
58
+ for (var i = 0; i < segments.length; i++) {
59
+ var segment = segments[i];
60
+ var v = segment[4];
61
+ var w = segment[5];
62
+ var dist = squaredDistanceToLineSegment(p, v, w);
63
+ if (dist < squaredDistance && dist < squaredRadius) {
64
+ squaredDistance = dist;
65
+ }
66
+ }
67
+ return Math.sqrt(squaredDistance);
68
+ }
69
+ function pathToRings(path) {
70
+ var rings = [];
71
+ var ring = [];
72
+ var curve3 = new Curve3Div();
73
+ curve3.approximation_scale = 2;
74
+ var curve4 = new Curve4Div();
75
+ curve4.approximation_scale = 2;
76
+ function closeRing(ring) {
77
+ var first = ring[0];
78
+ var last = ring[ring.length - 1];
79
+ if (first[0] !== last[0] || first[1] !== last[1]) {
80
+ ring.push([first[0], first[1]]);
81
+ }
82
+ }
83
+ // Build a list of contours (= rings) and flatten the bezier curves into regular line segments.
84
+ for (var i = 0; i < path.length; i++) {
85
+ var segment = path[i];
86
+ if (segment.type == "M") {
87
+ if (ring.length) {
88
+ closeRing(ring);
89
+ rings.push(ring);
90
+ }
91
+ ring = [[segment.x, segment.y]];
92
+ }
93
+ else if (segment.type == "L") {
94
+ ring.push([segment.x, segment.y]);
95
+ }
96
+ else if (segment.type == "Q") {
97
+ var prev = ring.pop();
98
+ curve3.init(prev[0], prev[1], segment.x1, segment.y1, segment.x, segment.y);
99
+ ring = ring.concat(curve3.points);
100
+ }
101
+ else if (segment.type == "C") {
102
+ var prev = ring.pop();
103
+ curve4.init(prev[0], prev[1], segment.x1, segment.y1, segment.x2, segment.y2, segment.x, segment.y);
104
+ ring = ring.concat(curve4.points);
105
+ }
106
+ else if (segment.type == "Z") {
107
+ if (ring.length) {
108
+ ring.push([ring[0][0], ring[0][1]]);
109
+ }
110
+ }
111
+ else {
112
+ throw segment;
113
+ }
114
+ }
115
+ if (ring.length) {
116
+ closeRing(ring);
117
+ rings.push(ring);
118
+ }
119
+ return rings;
120
+ }
121
+ function ringsToSDF(rings, width, height, buffer, cutoff) {
122
+ width += 2 * buffer;
123
+ height += 2 * buffer;
124
+ var tree = rbush(9);
125
+ var offset = 0.5;
126
+ var radius = 8;
127
+ var data = new Uint8ClampedArray(width * height);
128
+ // Buffer
129
+ for (var j = 0; j < rings.length; j++) {
130
+ var ring = rings[j];
131
+ for (var i = 0; i < ring.length; i++) {
132
+ var point = ring[i];
133
+ point[0] += buffer;
134
+ point[1] += buffer;
135
+ }
136
+ }
137
+ // Insert all line segments into the rtree, regardless of what contour they belong to.
138
+ for (var j = 0; j < rings.length; j++) {
139
+ var ring = rings[j];
140
+ for (var i = 1; i < ring.length; i++) {
141
+ tree.insert(bbox([ring[i - 1][0], ring[i - 1][1]], [ring[i][0], ring[i][1]]));
142
+ }
143
+ }
144
+ // Loop over every pixel and determine the positive/negative distance to the outline.
145
+ for (var y = 0; y < height; y++) {
146
+ for (var x = 0; x < width; x++) {
147
+ var i = y * width + x;
148
+ var p = pt(x + offset, y + offset);
149
+ var d = minDistanceToLineSegment(tree, p, radius) * (256 / radius);
150
+ // Invert if point is inside.
151
+ var inside = polyContainsPoint(rings, { x: x + offset, y: y + offset });
152
+ if (inside) {
153
+ d = -d;
154
+ }
155
+ // Shift the 0 so that we can fit a few negative values into our 8 bits.
156
+ d += cutoff * 256;
157
+ // Note that info.data is /clamped/ to 0-255. This makes sure there are no overflows
158
+ // or underflows.
159
+ data[i] = 255 - d;
160
+ }
161
+ }
162
+ return data;
163
+ }
164
+ export const glyphToSDF = (font, glyph, fontSize, buffer, cutoff) => {
165
+ var fontScale = font.unitsPerEm / fontSize;
166
+ var ascender = Math.round(font.ascender / fontScale);
167
+ var info = {
168
+ width: 0,
169
+ height: 0,
170
+ data: null,
171
+ glyphBearingX: 0,
172
+ glyphWidth: 0,
173
+ glyphBearingY: 0,
174
+ glyphHeight: 0,
175
+ glyphTop: 0,
176
+ glyphAdvance: Math.round(glyph.advanceWidth / fontScale),
177
+ };
178
+ // Extract the glyph's path and scale it to the correct font size.
179
+ var path = glyph.getPath(0, 0, fontSize).commands;
180
+ var rings = pathToRings(path);
181
+ if (!rings.length) {
182
+ return info;
183
+ }
184
+ // Calculate the real glyph bbox.
185
+ var xMin = Number.POSITIVE_INFINITY, yMin = Number.POSITIVE_INFINITY;
186
+ var xMax = Number.NEGATIVE_INFINITY, yMax = Number.NEGATIVE_INFINITY;
187
+ for (var j = 0; j < rings.length; j++) {
188
+ var ring = rings[j];
189
+ for (var i = 0; i < ring.length; i++) {
190
+ var point = ring[i];
191
+ if (point[0] > xMax)
192
+ xMax = point[0];
193
+ if (point[0] < xMin)
194
+ xMin = point[0];
195
+ if (point[1] > yMax)
196
+ yMax = point[1];
197
+ if (point[1] < yMin)
198
+ yMin = point[1];
199
+ }
200
+ }
201
+ xMin = Math.round(xMin);
202
+ yMin = Math.round(yMin);
203
+ xMax = Math.round(xMax);
204
+ yMax = Math.round(yMax);
205
+ // Offset so that glyph outlines are in the bounding box.
206
+ for (var j = 0; j < rings.length; j++) {
207
+ var ring = rings[j];
208
+ for (var i = 0; i < ring.length; i++) {
209
+ var point = ring[i];
210
+ point[0] += -xMin;
211
+ point[1] += -yMin;
212
+ }
213
+ }
214
+ if (xMax - xMin === 0 || (yMax == yMin) === 0) {
215
+ return info;
216
+ }
217
+ info.glyphBearingX = xMin;
218
+ info.glyphWidth = xMax - xMin;
219
+ info.glyphBearingY = -yMin;
220
+ info.glyphHeight = yMax - yMin;
221
+ info.glyphTop = -yMin - ascender;
222
+ info.width = info.glyphWidth + 2 * buffer;
223
+ info.height = info.glyphHeight + 2 * buffer;
224
+ info.data = ringsToSDF(rings, info.glyphWidth, info.glyphHeight, buffer, cutoff);
225
+ return info;
226
+ };
227
+ export function pathToSDF(path, width, height, buffer, cutoff) {
228
+ return ringsToSDF(pathToRings(path), width, height, buffer, cutoff);
229
+ }
230
+ //# sourceMappingURL=sdf.js.map
package/lib/sdf.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdf.js","sourceRoot":"","sources":["../src/sdf.js"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@mapka/font-sdf",
3
+ "version": "0.2.2",
4
+ "description": "Creates signed distance fields out of OpenType/TrueType fonts",
5
+ "license": "BSD-2-Clause",
6
+ "type": "module",
7
+ "sideEffects": false,
8
+ "publishConfig": {
9
+ "access": "public"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/mapka-dev/fonts.git"
14
+ },
15
+ "main": "./lib/index.js",
16
+ "dependencies": {
17
+ "opentype.js": "^1.3.4",
18
+ "pbf": "^4.0.1",
19
+ "rbush": "~1.3.2"
20
+ },
21
+ "files": [
22
+ "src/",
23
+ "lib/",
24
+ "!**/__tests__/",
25
+ "!lib/buildInfo.json"
26
+ ],
27
+ "gitHead": "57e5b787dad6c9d8bd546517e8de61cc564c2ffe"
28
+ }