@reearth/ezu 0.8.1 → 0.9.0

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/bundler/ezu.d.ts CHANGED
@@ -197,6 +197,11 @@ export class Renderer {
197
197
  * layers that build their string from something other than a `get`
198
198
  * of a feature property (a literal, a `concat` of formatted values)
199
199
  * contribute their literal text where it is a plain string.
200
+ *
201
+ * An Arabic letter contributes the presentation-form ranges as
202
+ * well as its own: it is drawn as whichever of its joined shapes
203
+ * the letters around it call for, and those shapes live in
204
+ * U+FB50‥U+FDFF and U+FE70‥U+FEFF.
200
205
  */
201
206
  neededGlyphRanges(): object;
202
207
  /**
@@ -222,18 +227,25 @@ export class Renderer {
222
227
  * `source`, as an array of `[dx, dy]` pairs (never including the
223
228
  * centre `[0, 0]`).
224
229
  *
225
- * Cross-tile label collision and edge-continuous DEM shading are the
226
- * only things that read neighbours, and only for the sources they
227
- * name. A host that fetches the full 3×3 window unconditionally
228
- * therefore pays for up to eight tiles it will not look at; passing
229
- * each offset from this list to `bindSource(name, bytes, { coord })`
230
- * fetches exactly what the recipe needs. An empty array means the
231
- * centre tile is enough.
230
+ * Cross-tile label collision and edge-continuous DEM/raster shading
231
+ * are the only things that read neighbours, and only for the sources
232
+ * they name. Pass each offset from this list to
233
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
234
+ * what the recipe needs — neither a blind 3×3 per source nor, more
235
+ * costly, a window short of what a stitched source wanted. An empty
236
+ * array means the centre tile is enough.
232
237
  *
233
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
234
- * reports no offsets whatever the graph asks for: the style has said
235
- * not to stitch a neighbourhood for it, and this list is what a host
236
- * fetches from.
238
+ * What comes back depends on the source's kind. A vector source
239
+ * answers from the graph: a node that wants a neighbour names it,
240
+ * and cross-tile label collision is usually the only thing that
241
+ * does, so the list is often empty. A `dem` or `raster` source
242
+ * answers from its own `neighbor-fetch`, which defaults to on and
243
+ * means the whole 3×3 — those bind as one stitched canvas, and a
244
+ * neighbour left unbound is not a missing collision candidate but a
245
+ * pad filled by clamping the tile's own edge, which shows up as a
246
+ * seam in whatever samples it. `neighbor-fetch: false` reports
247
+ * nothing whatever the graph asks for; so does a source no node in
248
+ * the graph reads.
237
249
  *
238
250
  * Throws `UnknownSource` if `name` is not declared in the style.
239
251
  */
@@ -282,6 +294,14 @@ export class Renderer {
282
294
  * the maxzoom of each source keeps a second copy of something the style
283
295
  * already states, and the two drift.
284
296
  *
297
+ * `x` and `y` may be off the tile grid, which is what a host walking
298
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
299
+ * the western neighbour of `z/0/y` is the real tile at the far side
300
+ * of the world. `y` does not wrap — there is no tile above the north
301
+ * pole — and an out-of-range row comes back unchanged, so the fetch
302
+ * for it misses and the stitch clamps that edge, which is what the
303
+ * pole should look like.
304
+ *
285
305
  * Throws `UnknownSource` if `name` is not declared in the style.
286
306
  */
287
307
  sourceTile(name: string, z: number, x: number, y: number): any;
package/bundler/ezu_bg.js CHANGED
@@ -305,6 +305,11 @@ export class Renderer {
305
305
  * layers that build their string from something other than a `get`
306
306
  * of a feature property (a literal, a `concat` of formatted values)
307
307
  * contribute their literal text where it is a plain string.
308
+ *
309
+ * An Arabic letter contributes the presentation-form ranges as
310
+ * well as its own: it is drawn as whichever of its joined shapes
311
+ * the letters around it call for, and those shapes live in
312
+ * U+FB50‥U+FDFF and U+FE70‥U+FEFF.
308
313
  * @returns {object}
309
314
  */
310
315
  neededGlyphRanges() {
@@ -377,18 +382,25 @@ export class Renderer {
377
382
  * `source`, as an array of `[dx, dy]` pairs (never including the
378
383
  * centre `[0, 0]`).
379
384
  *
380
- * Cross-tile label collision and edge-continuous DEM shading are the
381
- * only things that read neighbours, and only for the sources they
382
- * name. A host that fetches the full 3×3 window unconditionally
383
- * therefore pays for up to eight tiles it will not look at; passing
384
- * each offset from this list to `bindSource(name, bytes, { coord })`
385
- * fetches exactly what the recipe needs. An empty array means the
386
- * centre tile is enough.
385
+ * Cross-tile label collision and edge-continuous DEM/raster shading
386
+ * are the only things that read neighbours, and only for the sources
387
+ * they name. Pass each offset from this list to
388
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
389
+ * what the recipe needs — neither a blind 3×3 per source nor, more
390
+ * costly, a window short of what a stitched source wanted. An empty
391
+ * array means the centre tile is enough.
387
392
  *
388
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
389
- * reports no offsets whatever the graph asks for: the style has said
390
- * not to stitch a neighbourhood for it, and this list is what a host
391
- * fetches from.
393
+ * What comes back depends on the source's kind. A vector source
394
+ * answers from the graph: a node that wants a neighbour names it,
395
+ * and cross-tile label collision is usually the only thing that
396
+ * does, so the list is often empty. A `dem` or `raster` source
397
+ * answers from its own `neighbor-fetch`, which defaults to on and
398
+ * means the whole 3×3 — those bind as one stitched canvas, and a
399
+ * neighbour left unbound is not a missing collision candidate but a
400
+ * pad filled by clamping the tile's own edge, which shows up as a
401
+ * seam in whatever samples it. `neighbor-fetch: false` reports
402
+ * nothing whatever the graph asks for; so does a source no node in
403
+ * the graph reads.
392
404
  *
393
405
  * Throws `UnknownSource` if `name` is not declared in the style.
394
406
  * @param {string} name
@@ -460,6 +472,14 @@ export class Renderer {
460
472
  * the maxzoom of each source keeps a second copy of something the style
461
473
  * already states, and the two drift.
462
474
  *
475
+ * `x` and `y` may be off the tile grid, which is what a host walking
476
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
477
+ * the western neighbour of `z/0/y` is the real tile at the far side
478
+ * of the world. `y` does not wrap — there is no tile above the north
479
+ * pole — and an out-of-range row comes back unchanged, so the fetch
480
+ * for it misses and the stitch clamps that edge, which is what the
481
+ * pole should look like.
482
+ *
463
483
  * Throws `UnknownSource` if `name` is not declared in the style.
464
484
  * @param {string} name
465
485
  * @param {number} z
Binary file
package/nodejs/ezu.d.ts CHANGED
@@ -197,6 +197,11 @@ export class Renderer {
197
197
  * layers that build their string from something other than a `get`
198
198
  * of a feature property (a literal, a `concat` of formatted values)
199
199
  * contribute their literal text where it is a plain string.
200
+ *
201
+ * An Arabic letter contributes the presentation-form ranges as
202
+ * well as its own: it is drawn as whichever of its joined shapes
203
+ * the letters around it call for, and those shapes live in
204
+ * U+FB50‥U+FDFF and U+FE70‥U+FEFF.
200
205
  */
201
206
  neededGlyphRanges(): object;
202
207
  /**
@@ -222,18 +227,25 @@ export class Renderer {
222
227
  * `source`, as an array of `[dx, dy]` pairs (never including the
223
228
  * centre `[0, 0]`).
224
229
  *
225
- * Cross-tile label collision and edge-continuous DEM shading are the
226
- * only things that read neighbours, and only for the sources they
227
- * name. A host that fetches the full 3×3 window unconditionally
228
- * therefore pays for up to eight tiles it will not look at; passing
229
- * each offset from this list to `bindSource(name, bytes, { coord })`
230
- * fetches exactly what the recipe needs. An empty array means the
231
- * centre tile is enough.
230
+ * Cross-tile label collision and edge-continuous DEM/raster shading
231
+ * are the only things that read neighbours, and only for the sources
232
+ * they name. Pass each offset from this list to
233
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
234
+ * what the recipe needs — neither a blind 3×3 per source nor, more
235
+ * costly, a window short of what a stitched source wanted. An empty
236
+ * array means the centre tile is enough.
232
237
  *
233
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
234
- * reports no offsets whatever the graph asks for: the style has said
235
- * not to stitch a neighbourhood for it, and this list is what a host
236
- * fetches from.
238
+ * What comes back depends on the source's kind. A vector source
239
+ * answers from the graph: a node that wants a neighbour names it,
240
+ * and cross-tile label collision is usually the only thing that
241
+ * does, so the list is often empty. A `dem` or `raster` source
242
+ * answers from its own `neighbor-fetch`, which defaults to on and
243
+ * means the whole 3×3 — those bind as one stitched canvas, and a
244
+ * neighbour left unbound is not a missing collision candidate but a
245
+ * pad filled by clamping the tile's own edge, which shows up as a
246
+ * seam in whatever samples it. `neighbor-fetch: false` reports
247
+ * nothing whatever the graph asks for; so does a source no node in
248
+ * the graph reads.
237
249
  *
238
250
  * Throws `UnknownSource` if `name` is not declared in the style.
239
251
  */
@@ -282,6 +294,14 @@ export class Renderer {
282
294
  * the maxzoom of each source keeps a second copy of something the style
283
295
  * already states, and the two drift.
284
296
  *
297
+ * `x` and `y` may be off the tile grid, which is what a host walking
298
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
299
+ * the western neighbour of `z/0/y` is the real tile at the far side
300
+ * of the world. `y` does not wrap — there is no tile above the north
301
+ * pole — and an out-of-range row comes back unchanged, so the fetch
302
+ * for it misses and the stitch clamps that edge, which is what the
303
+ * pole should look like.
304
+ *
285
305
  * Throws `UnknownSource` if `name` is not declared in the style.
286
306
  */
287
307
  sourceTile(name: string, z: number, x: number, y: number): any;
package/nodejs/ezu.js CHANGED
@@ -308,6 +308,11 @@ class Renderer {
308
308
  * layers that build their string from something other than a `get`
309
309
  * of a feature property (a literal, a `concat` of formatted values)
310
310
  * contribute their literal text where it is a plain string.
311
+ *
312
+ * An Arabic letter contributes the presentation-form ranges as
313
+ * well as its own: it is drawn as whichever of its joined shapes
314
+ * the letters around it call for, and those shapes live in
315
+ * U+FB50‥U+FDFF and U+FE70‥U+FEFF.
311
316
  * @returns {object}
312
317
  */
313
318
  neededGlyphRanges() {
@@ -380,18 +385,25 @@ class Renderer {
380
385
  * `source`, as an array of `[dx, dy]` pairs (never including the
381
386
  * centre `[0, 0]`).
382
387
  *
383
- * Cross-tile label collision and edge-continuous DEM shading are the
384
- * only things that read neighbours, and only for the sources they
385
- * name. A host that fetches the full 3×3 window unconditionally
386
- * therefore pays for up to eight tiles it will not look at; passing
387
- * each offset from this list to `bindSource(name, bytes, { coord })`
388
- * fetches exactly what the recipe needs. An empty array means the
389
- * centre tile is enough.
388
+ * Cross-tile label collision and edge-continuous DEM/raster shading
389
+ * are the only things that read neighbours, and only for the sources
390
+ * they name. Pass each offset from this list to
391
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
392
+ * what the recipe needs — neither a blind 3×3 per source nor, more
393
+ * costly, a window short of what a stitched source wanted. An empty
394
+ * array means the centre tile is enough.
390
395
  *
391
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
392
- * reports no offsets whatever the graph asks for: the style has said
393
- * not to stitch a neighbourhood for it, and this list is what a host
394
- * fetches from.
396
+ * What comes back depends on the source's kind. A vector source
397
+ * answers from the graph: a node that wants a neighbour names it,
398
+ * and cross-tile label collision is usually the only thing that
399
+ * does, so the list is often empty. A `dem` or `raster` source
400
+ * answers from its own `neighbor-fetch`, which defaults to on and
401
+ * means the whole 3×3 — those bind as one stitched canvas, and a
402
+ * neighbour left unbound is not a missing collision candidate but a
403
+ * pad filled by clamping the tile's own edge, which shows up as a
404
+ * seam in whatever samples it. `neighbor-fetch: false` reports
405
+ * nothing whatever the graph asks for; so does a source no node in
406
+ * the graph reads.
395
407
  *
396
408
  * Throws `UnknownSource` if `name` is not declared in the style.
397
409
  * @param {string} name
@@ -463,6 +475,14 @@ class Renderer {
463
475
  * the maxzoom of each source keeps a second copy of something the style
464
476
  * already states, and the two drift.
465
477
  *
478
+ * `x` and `y` may be off the tile grid, which is what a host walking
479
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
480
+ * the western neighbour of `z/0/y` is the real tile at the far side
481
+ * of the world. `y` does not wrap — there is no tile above the north
482
+ * pole — and an out-of-range row comes back unchanged, so the fetch
483
+ * for it misses and the stitch clamps that edge, which is what the
484
+ * pole should look like.
485
+ *
466
486
  * Throws `UnknownSource` if `name` is not declared in the style.
467
487
  * @param {string} name
468
488
  * @param {number} z
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reearth/ezu",
3
- "version": "0.8.1",
3
+ "version": "0.9.0",
4
4
  "description": "Painterly map renderer — WebAssembly bindings",
5
5
  "license": "MIT OR Apache-2.0",
6
6
  "repository": {
@@ -197,6 +197,11 @@ export class Renderer {
197
197
  * layers that build their string from something other than a `get`
198
198
  * of a feature property (a literal, a `concat` of formatted values)
199
199
  * contribute their literal text where it is a plain string.
200
+ *
201
+ * An Arabic letter contributes the presentation-form ranges as
202
+ * well as its own: it is drawn as whichever of its joined shapes
203
+ * the letters around it call for, and those shapes live in
204
+ * U+FB50‥U+FDFF and U+FE70‥U+FEFF.
200
205
  */
201
206
  neededGlyphRanges(): object;
202
207
  /**
@@ -222,18 +227,25 @@ export class Renderer {
222
227
  * `source`, as an array of `[dx, dy]` pairs (never including the
223
228
  * centre `[0, 0]`).
224
229
  *
225
- * Cross-tile label collision and edge-continuous DEM shading are the
226
- * only things that read neighbours, and only for the sources they
227
- * name. A host that fetches the full 3×3 window unconditionally
228
- * therefore pays for up to eight tiles it will not look at; passing
229
- * each offset from this list to `bindSource(name, bytes, { coord })`
230
- * fetches exactly what the recipe needs. An empty array means the
231
- * centre tile is enough.
230
+ * Cross-tile label collision and edge-continuous DEM/raster shading
231
+ * are the only things that read neighbours, and only for the sources
232
+ * they name. Pass each offset from this list to
233
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
234
+ * what the recipe needs — neither a blind 3×3 per source nor, more
235
+ * costly, a window short of what a stitched source wanted. An empty
236
+ * array means the centre tile is enough.
232
237
  *
233
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
234
- * reports no offsets whatever the graph asks for: the style has said
235
- * not to stitch a neighbourhood for it, and this list is what a host
236
- * fetches from.
238
+ * What comes back depends on the source's kind. A vector source
239
+ * answers from the graph: a node that wants a neighbour names it,
240
+ * and cross-tile label collision is usually the only thing that
241
+ * does, so the list is often empty. A `dem` or `raster` source
242
+ * answers from its own `neighbor-fetch`, which defaults to on and
243
+ * means the whole 3×3 — those bind as one stitched canvas, and a
244
+ * neighbour left unbound is not a missing collision candidate but a
245
+ * pad filled by clamping the tile's own edge, which shows up as a
246
+ * seam in whatever samples it. `neighbor-fetch: false` reports
247
+ * nothing whatever the graph asks for; so does a source no node in
248
+ * the graph reads.
237
249
  *
238
250
  * Throws `UnknownSource` if `name` is not declared in the style.
239
251
  */
@@ -282,6 +294,14 @@ export class Renderer {
282
294
  * the maxzoom of each source keeps a second copy of something the style
283
295
  * already states, and the two drift.
284
296
  *
297
+ * `x` and `y` may be off the tile grid, which is what a host walking
298
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
299
+ * the western neighbour of `z/0/y` is the real tile at the far side
300
+ * of the world. `y` does not wrap — there is no tile above the north
301
+ * pole — and an out-of-range row comes back unchanged, so the fetch
302
+ * for it misses and the stitch clamps that edge, which is what the
303
+ * pole should look like.
304
+ *
285
305
  * Throws `UnknownSource` if `name` is not declared in the style.
286
306
  */
287
307
  sourceTile(name: string, z: number, x: number, y: number): any;
@@ -305,6 +305,11 @@ export class Renderer {
305
305
  * layers that build their string from something other than a `get`
306
306
  * of a feature property (a literal, a `concat` of formatted values)
307
307
  * contribute their literal text where it is a plain string.
308
+ *
309
+ * An Arabic letter contributes the presentation-form ranges as
310
+ * well as its own: it is drawn as whichever of its joined shapes
311
+ * the letters around it call for, and those shapes live in
312
+ * U+FB50‥U+FDFF and U+FE70‥U+FEFF.
308
313
  * @returns {object}
309
314
  */
310
315
  neededGlyphRanges() {
@@ -377,18 +382,25 @@ export class Renderer {
377
382
  * `source`, as an array of `[dx, dy]` pairs (never including the
378
383
  * centre `[0, 0]`).
379
384
  *
380
- * Cross-tile label collision and edge-continuous DEM shading are the
381
- * only things that read neighbours, and only for the sources they
382
- * name. A host that fetches the full 3×3 window unconditionally
383
- * therefore pays for up to eight tiles it will not look at; passing
384
- * each offset from this list to `bindSource(name, bytes, { coord })`
385
- * fetches exactly what the recipe needs. An empty array means the
386
- * centre tile is enough.
385
+ * Cross-tile label collision and edge-continuous DEM/raster shading
386
+ * are the only things that read neighbours, and only for the sources
387
+ * they name. Pass each offset from this list to
388
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
389
+ * what the recipe needs — neither a blind 3×3 per source nor, more
390
+ * costly, a window short of what a stitched source wanted. An empty
391
+ * array means the centre tile is enough.
387
392
  *
388
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
389
- * reports no offsets whatever the graph asks for: the style has said
390
- * not to stitch a neighbourhood for it, and this list is what a host
391
- * fetches from.
393
+ * What comes back depends on the source's kind. A vector source
394
+ * answers from the graph: a node that wants a neighbour names it,
395
+ * and cross-tile label collision is usually the only thing that
396
+ * does, so the list is often empty. A `dem` or `raster` source
397
+ * answers from its own `neighbor-fetch`, which defaults to on and
398
+ * means the whole 3×3 — those bind as one stitched canvas, and a
399
+ * neighbour left unbound is not a missing collision candidate but a
400
+ * pad filled by clamping the tile's own edge, which shows up as a
401
+ * seam in whatever samples it. `neighbor-fetch: false` reports
402
+ * nothing whatever the graph asks for; so does a source no node in
403
+ * the graph reads.
392
404
  *
393
405
  * Throws `UnknownSource` if `name` is not declared in the style.
394
406
  * @param {string} name
@@ -460,6 +472,14 @@ export class Renderer {
460
472
  * the maxzoom of each source keeps a second copy of something the style
461
473
  * already states, and the two drift.
462
474
  *
475
+ * `x` and `y` may be off the tile grid, which is what a host walking
476
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
477
+ * the western neighbour of `z/0/y` is the real tile at the far side
478
+ * of the world. `y` does not wrap — there is no tile above the north
479
+ * pole — and an out-of-range row comes back unchanged, so the fetch
480
+ * for it misses and the stitch clamps that edge, which is what the
481
+ * pole should look like.
482
+ *
463
483
  * Throws `UnknownSource` if `name` is not declared in the style.
464
484
  * @param {string} name
465
485
  * @param {number} z
Binary file
@@ -197,6 +197,11 @@ export class Renderer {
197
197
  * layers that build their string from something other than a `get`
198
198
  * of a feature property (a literal, a `concat` of formatted values)
199
199
  * contribute their literal text where it is a plain string.
200
+ *
201
+ * An Arabic letter contributes the presentation-form ranges as
202
+ * well as its own: it is drawn as whichever of its joined shapes
203
+ * the letters around it call for, and those shapes live in
204
+ * U+FB50‥U+FDFF and U+FE70‥U+FEFF.
200
205
  */
201
206
  neededGlyphRanges(): object;
202
207
  /**
@@ -222,18 +227,25 @@ export class Renderer {
222
227
  * `source`, as an array of `[dx, dy]` pairs (never including the
223
228
  * centre `[0, 0]`).
224
229
  *
225
- * Cross-tile label collision and edge-continuous DEM shading are the
226
- * only things that read neighbours, and only for the sources they
227
- * name. A host that fetches the full 3×3 window unconditionally
228
- * therefore pays for up to eight tiles it will not look at; passing
229
- * each offset from this list to `bindSource(name, bytes, { coord })`
230
- * fetches exactly what the recipe needs. An empty array means the
231
- * centre tile is enough.
230
+ * Cross-tile label collision and edge-continuous DEM/raster shading
231
+ * are the only things that read neighbours, and only for the sources
232
+ * they name. Pass each offset from this list to
233
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
234
+ * what the recipe needs — neither a blind 3×3 per source nor, more
235
+ * costly, a window short of what a stitched source wanted. An empty
236
+ * array means the centre tile is enough.
232
237
  *
233
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
234
- * reports no offsets whatever the graph asks for: the style has said
235
- * not to stitch a neighbourhood for it, and this list is what a host
236
- * fetches from.
238
+ * What comes back depends on the source's kind. A vector source
239
+ * answers from the graph: a node that wants a neighbour names it,
240
+ * and cross-tile label collision is usually the only thing that
241
+ * does, so the list is often empty. A `dem` or `raster` source
242
+ * answers from its own `neighbor-fetch`, which defaults to on and
243
+ * means the whole 3×3 — those bind as one stitched canvas, and a
244
+ * neighbour left unbound is not a missing collision candidate but a
245
+ * pad filled by clamping the tile's own edge, which shows up as a
246
+ * seam in whatever samples it. `neighbor-fetch: false` reports
247
+ * nothing whatever the graph asks for; so does a source no node in
248
+ * the graph reads.
237
249
  *
238
250
  * Throws `UnknownSource` if `name` is not declared in the style.
239
251
  */
@@ -282,6 +294,14 @@ export class Renderer {
282
294
  * the maxzoom of each source keeps a second copy of something the style
283
295
  * already states, and the two drift.
284
296
  *
297
+ * `x` and `y` may be off the tile grid, which is what a host walking
298
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
299
+ * the western neighbour of `z/0/y` is the real tile at the far side
300
+ * of the world. `y` does not wrap — there is no tile above the north
301
+ * pole — and an out-of-range row comes back unchanged, so the fetch
302
+ * for it misses and the stitch clamps that edge, which is what the
303
+ * pole should look like.
304
+ *
285
305
  * Throws `UnknownSource` if `name` is not declared in the style.
286
306
  */
287
307
  sourceTile(name: string, z: number, x: number, y: number): any;
@@ -308,6 +308,11 @@ class Renderer {
308
308
  * layers that build their string from something other than a `get`
309
309
  * of a feature property (a literal, a `concat` of formatted values)
310
310
  * contribute their literal text where it is a plain string.
311
+ *
312
+ * An Arabic letter contributes the presentation-form ranges as
313
+ * well as its own: it is drawn as whichever of its joined shapes
314
+ * the letters around it call for, and those shapes live in
315
+ * U+FB50‥U+FDFF and U+FE70‥U+FEFF.
311
316
  * @returns {object}
312
317
  */
313
318
  neededGlyphRanges() {
@@ -380,18 +385,25 @@ class Renderer {
380
385
  * `source`, as an array of `[dx, dy]` pairs (never including the
381
386
  * centre `[0, 0]`).
382
387
  *
383
- * Cross-tile label collision and edge-continuous DEM shading are the
384
- * only things that read neighbours, and only for the sources they
385
- * name. A host that fetches the full 3×3 window unconditionally
386
- * therefore pays for up to eight tiles it will not look at; passing
387
- * each offset from this list to `bindSource(name, bytes, { coord })`
388
- * fetches exactly what the recipe needs. An empty array means the
389
- * centre tile is enough.
388
+ * Cross-tile label collision and edge-continuous DEM/raster shading
389
+ * are the only things that read neighbours, and only for the sources
390
+ * they name. Pass each offset from this list to
391
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
392
+ * what the recipe needs — neither a blind 3×3 per source nor, more
393
+ * costly, a window short of what a stitched source wanted. An empty
394
+ * array means the centre tile is enough.
390
395
  *
391
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
392
- * reports no offsets whatever the graph asks for: the style has said
393
- * not to stitch a neighbourhood for it, and this list is what a host
394
- * fetches from.
396
+ * What comes back depends on the source's kind. A vector source
397
+ * answers from the graph: a node that wants a neighbour names it,
398
+ * and cross-tile label collision is usually the only thing that
399
+ * does, so the list is often empty. A `dem` or `raster` source
400
+ * answers from its own `neighbor-fetch`, which defaults to on and
401
+ * means the whole 3×3 — those bind as one stitched canvas, and a
402
+ * neighbour left unbound is not a missing collision candidate but a
403
+ * pad filled by clamping the tile's own edge, which shows up as a
404
+ * seam in whatever samples it. `neighbor-fetch: false` reports
405
+ * nothing whatever the graph asks for; so does a source no node in
406
+ * the graph reads.
395
407
  *
396
408
  * Throws `UnknownSource` if `name` is not declared in the style.
397
409
  * @param {string} name
@@ -463,6 +475,14 @@ class Renderer {
463
475
  * the maxzoom of each source keeps a second copy of something the style
464
476
  * already states, and the two drift.
465
477
  *
478
+ * `x` and `y` may be off the tile grid, which is what a host walking
479
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
480
+ * the western neighbour of `z/0/y` is the real tile at the far side
481
+ * of the world. `y` does not wrap — there is no tile above the north
482
+ * pole — and an out-of-range row comes back unchanged, so the fetch
483
+ * for it misses and the stitch clamps that edge, which is what the
484
+ * pole should look like.
485
+ *
466
486
  * Throws `UnknownSource` if `name` is not declared in the style.
467
487
  * @param {string} name
468
488
  * @param {number} z
Binary file
package/simd/web/ezu.d.ts CHANGED
@@ -197,6 +197,11 @@ export class Renderer {
197
197
  * layers that build their string from something other than a `get`
198
198
  * of a feature property (a literal, a `concat` of formatted values)
199
199
  * contribute their literal text where it is a plain string.
200
+ *
201
+ * An Arabic letter contributes the presentation-form ranges as
202
+ * well as its own: it is drawn as whichever of its joined shapes
203
+ * the letters around it call for, and those shapes live in
204
+ * U+FB50‥U+FDFF and U+FE70‥U+FEFF.
200
205
  */
201
206
  neededGlyphRanges(): object;
202
207
  /**
@@ -222,18 +227,25 @@ export class Renderer {
222
227
  * `source`, as an array of `[dx, dy]` pairs (never including the
223
228
  * centre `[0, 0]`).
224
229
  *
225
- * Cross-tile label collision and edge-continuous DEM shading are the
226
- * only things that read neighbours, and only for the sources they
227
- * name. A host that fetches the full 3×3 window unconditionally
228
- * therefore pays for up to eight tiles it will not look at; passing
229
- * each offset from this list to `bindSource(name, bytes, { coord })`
230
- * fetches exactly what the recipe needs. An empty array means the
231
- * centre tile is enough.
230
+ * Cross-tile label collision and edge-continuous DEM/raster shading
231
+ * are the only things that read neighbours, and only for the sources
232
+ * they name. Pass each offset from this list to
233
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
234
+ * what the recipe needs — neither a blind 3×3 per source nor, more
235
+ * costly, a window short of what a stitched source wanted. An empty
236
+ * array means the centre tile is enough.
232
237
  *
233
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
234
- * reports no offsets whatever the graph asks for: the style has said
235
- * not to stitch a neighbourhood for it, and this list is what a host
236
- * fetches from.
238
+ * What comes back depends on the source's kind. A vector source
239
+ * answers from the graph: a node that wants a neighbour names it,
240
+ * and cross-tile label collision is usually the only thing that
241
+ * does, so the list is often empty. A `dem` or `raster` source
242
+ * answers from its own `neighbor-fetch`, which defaults to on and
243
+ * means the whole 3×3 — those bind as one stitched canvas, and a
244
+ * neighbour left unbound is not a missing collision candidate but a
245
+ * pad filled by clamping the tile's own edge, which shows up as a
246
+ * seam in whatever samples it. `neighbor-fetch: false` reports
247
+ * nothing whatever the graph asks for; so does a source no node in
248
+ * the graph reads.
237
249
  *
238
250
  * Throws `UnknownSource` if `name` is not declared in the style.
239
251
  */
@@ -282,6 +294,14 @@ export class Renderer {
282
294
  * the maxzoom of each source keeps a second copy of something the style
283
295
  * already states, and the two drift.
284
296
  *
297
+ * `x` and `y` may be off the tile grid, which is what a host walking
298
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
299
+ * the western neighbour of `z/0/y` is the real tile at the far side
300
+ * of the world. `y` does not wrap — there is no tile above the north
301
+ * pole — and an out-of-range row comes back unchanged, so the fetch
302
+ * for it misses and the stitch clamps that edge, which is what the
303
+ * pole should look like.
304
+ *
285
305
  * Throws `UnknownSource` if `name` is not declared in the style.
286
306
  */
287
307
  sourceTile(name: string, z: number, x: number, y: number): any;
package/simd/web/ezu.js CHANGED
@@ -307,6 +307,11 @@ export class Renderer {
307
307
  * layers that build their string from something other than a `get`
308
308
  * of a feature property (a literal, a `concat` of formatted values)
309
309
  * contribute their literal text where it is a plain string.
310
+ *
311
+ * An Arabic letter contributes the presentation-form ranges as
312
+ * well as its own: it is drawn as whichever of its joined shapes
313
+ * the letters around it call for, and those shapes live in
314
+ * U+FB50‥U+FDFF and U+FE70‥U+FEFF.
310
315
  * @returns {object}
311
316
  */
312
317
  neededGlyphRanges() {
@@ -379,18 +384,25 @@ export class Renderer {
379
384
  * `source`, as an array of `[dx, dy]` pairs (never including the
380
385
  * centre `[0, 0]`).
381
386
  *
382
- * Cross-tile label collision and edge-continuous DEM shading are the
383
- * only things that read neighbours, and only for the sources they
384
- * name. A host that fetches the full 3×3 window unconditionally
385
- * therefore pays for up to eight tiles it will not look at; passing
386
- * each offset from this list to `bindSource(name, bytes, { coord })`
387
- * fetches exactly what the recipe needs. An empty array means the
388
- * centre tile is enough.
387
+ * Cross-tile label collision and edge-continuous DEM/raster shading
388
+ * are the only things that read neighbours, and only for the sources
389
+ * they name. Pass each offset from this list to
390
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
391
+ * what the recipe needs — neither a blind 3×3 per source nor, more
392
+ * costly, a window short of what a stitched source wanted. An empty
393
+ * array means the centre tile is enough.
389
394
  *
390
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
391
- * reports no offsets whatever the graph asks for: the style has said
392
- * not to stitch a neighbourhood for it, and this list is what a host
393
- * fetches from.
395
+ * What comes back depends on the source's kind. A vector source
396
+ * answers from the graph: a node that wants a neighbour names it,
397
+ * and cross-tile label collision is usually the only thing that
398
+ * does, so the list is often empty. A `dem` or `raster` source
399
+ * answers from its own `neighbor-fetch`, which defaults to on and
400
+ * means the whole 3×3 — those bind as one stitched canvas, and a
401
+ * neighbour left unbound is not a missing collision candidate but a
402
+ * pad filled by clamping the tile's own edge, which shows up as a
403
+ * seam in whatever samples it. `neighbor-fetch: false` reports
404
+ * nothing whatever the graph asks for; so does a source no node in
405
+ * the graph reads.
394
406
  *
395
407
  * Throws `UnknownSource` if `name` is not declared in the style.
396
408
  * @param {string} name
@@ -462,6 +474,14 @@ export class Renderer {
462
474
  * the maxzoom of each source keeps a second copy of something the style
463
475
  * already states, and the two drift.
464
476
  *
477
+ * `x` and `y` may be off the tile grid, which is what a host walking
478
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
479
+ * the western neighbour of `z/0/y` is the real tile at the far side
480
+ * of the world. `y` does not wrap — there is no tile above the north
481
+ * pole — and an out-of-range row comes back unchanged, so the fetch
482
+ * for it misses and the stitch clamps that edge, which is what the
483
+ * pole should look like.
484
+ *
465
485
  * Throws `UnknownSource` if `name` is not declared in the style.
466
486
  * @param {string} name
467
487
  * @param {number} z
Binary file
package/web/ezu.d.ts CHANGED
@@ -197,6 +197,11 @@ export class Renderer {
197
197
  * layers that build their string from something other than a `get`
198
198
  * of a feature property (a literal, a `concat` of formatted values)
199
199
  * contribute their literal text where it is a plain string.
200
+ *
201
+ * An Arabic letter contributes the presentation-form ranges as
202
+ * well as its own: it is drawn as whichever of its joined shapes
203
+ * the letters around it call for, and those shapes live in
204
+ * U+FB50‥U+FDFF and U+FE70‥U+FEFF.
200
205
  */
201
206
  neededGlyphRanges(): object;
202
207
  /**
@@ -222,18 +227,25 @@ export class Renderer {
222
227
  * `source`, as an array of `[dx, dy]` pairs (never including the
223
228
  * centre `[0, 0]`).
224
229
  *
225
- * Cross-tile label collision and edge-continuous DEM shading are the
226
- * only things that read neighbours, and only for the sources they
227
- * name. A host that fetches the full 3×3 window unconditionally
228
- * therefore pays for up to eight tiles it will not look at; passing
229
- * each offset from this list to `bindSource(name, bytes, { coord })`
230
- * fetches exactly what the recipe needs. An empty array means the
231
- * centre tile is enough.
230
+ * Cross-tile label collision and edge-continuous DEM/raster shading
231
+ * are the only things that read neighbours, and only for the sources
232
+ * they name. Pass each offset from this list to
233
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
234
+ * what the recipe needs — neither a blind 3×3 per source nor, more
235
+ * costly, a window short of what a stitched source wanted. An empty
236
+ * array means the centre tile is enough.
232
237
  *
233
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
234
- * reports no offsets whatever the graph asks for: the style has said
235
- * not to stitch a neighbourhood for it, and this list is what a host
236
- * fetches from.
238
+ * What comes back depends on the source's kind. A vector source
239
+ * answers from the graph: a node that wants a neighbour names it,
240
+ * and cross-tile label collision is usually the only thing that
241
+ * does, so the list is often empty. A `dem` or `raster` source
242
+ * answers from its own `neighbor-fetch`, which defaults to on and
243
+ * means the whole 3×3 — those bind as one stitched canvas, and a
244
+ * neighbour left unbound is not a missing collision candidate but a
245
+ * pad filled by clamping the tile's own edge, which shows up as a
246
+ * seam in whatever samples it. `neighbor-fetch: false` reports
247
+ * nothing whatever the graph asks for; so does a source no node in
248
+ * the graph reads.
237
249
  *
238
250
  * Throws `UnknownSource` if `name` is not declared in the style.
239
251
  */
@@ -282,6 +294,14 @@ export class Renderer {
282
294
  * the maxzoom of each source keeps a second copy of something the style
283
295
  * already states, and the two drift.
284
296
  *
297
+ * `x` and `y` may be off the tile grid, which is what a host walking
298
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
299
+ * the western neighbour of `z/0/y` is the real tile at the far side
300
+ * of the world. `y` does not wrap — there is no tile above the north
301
+ * pole — and an out-of-range row comes back unchanged, so the fetch
302
+ * for it misses and the stitch clamps that edge, which is what the
303
+ * pole should look like.
304
+ *
285
305
  * Throws `UnknownSource` if `name` is not declared in the style.
286
306
  */
287
307
  sourceTile(name: string, z: number, x: number, y: number): any;
package/web/ezu.js CHANGED
@@ -307,6 +307,11 @@ export class Renderer {
307
307
  * layers that build their string from something other than a `get`
308
308
  * of a feature property (a literal, a `concat` of formatted values)
309
309
  * contribute their literal text where it is a plain string.
310
+ *
311
+ * An Arabic letter contributes the presentation-form ranges as
312
+ * well as its own: it is drawn as whichever of its joined shapes
313
+ * the letters around it call for, and those shapes live in
314
+ * U+FB50‥U+FDFF and U+FE70‥U+FEFF.
310
315
  * @returns {object}
311
316
  */
312
317
  neededGlyphRanges() {
@@ -379,18 +384,25 @@ export class Renderer {
379
384
  * `source`, as an array of `[dx, dy]` pairs (never including the
380
385
  * centre `[0, 0]`).
381
386
  *
382
- * Cross-tile label collision and edge-continuous DEM shading are the
383
- * only things that read neighbours, and only for the sources they
384
- * name. A host that fetches the full 3×3 window unconditionally
385
- * therefore pays for up to eight tiles it will not look at; passing
386
- * each offset from this list to `bindSource(name, bytes, { coord })`
387
- * fetches exactly what the recipe needs. An empty array means the
388
- * centre tile is enough.
387
+ * Cross-tile label collision and edge-continuous DEM/raster shading
388
+ * are the only things that read neighbours, and only for the sources
389
+ * they name. Pass each offset from this list to
390
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
391
+ * what the recipe needs — neither a blind 3×3 per source nor, more
392
+ * costly, a window short of what a stitched source wanted. An empty
393
+ * array means the centre tile is enough.
389
394
  *
390
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
391
- * reports no offsets whatever the graph asks for: the style has said
392
- * not to stitch a neighbourhood for it, and this list is what a host
393
- * fetches from.
395
+ * What comes back depends on the source's kind. A vector source
396
+ * answers from the graph: a node that wants a neighbour names it,
397
+ * and cross-tile label collision is usually the only thing that
398
+ * does, so the list is often empty. A `dem` or `raster` source
399
+ * answers from its own `neighbor-fetch`, which defaults to on and
400
+ * means the whole 3×3 — those bind as one stitched canvas, and a
401
+ * neighbour left unbound is not a missing collision candidate but a
402
+ * pad filled by clamping the tile's own edge, which shows up as a
403
+ * seam in whatever samples it. `neighbor-fetch: false` reports
404
+ * nothing whatever the graph asks for; so does a source no node in
405
+ * the graph reads.
394
406
  *
395
407
  * Throws `UnknownSource` if `name` is not declared in the style.
396
408
  * @param {string} name
@@ -462,6 +474,14 @@ export class Renderer {
462
474
  * the maxzoom of each source keeps a second copy of something the style
463
475
  * already states, and the two drift.
464
476
  *
477
+ * `x` and `y` may be off the tile grid, which is what a host walking
478
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
479
+ * the western neighbour of `z/0/y` is the real tile at the far side
480
+ * of the world. `y` does not wrap — there is no tile above the north
481
+ * pole — and an out-of-range row comes back unchanged, so the fetch
482
+ * for it misses and the stitch clamps that edge, which is what the
483
+ * pole should look like.
484
+ *
465
485
  * Throws `UnknownSource` if `name` is not declared in the style.
466
486
  * @param {string} name
467
487
  * @param {number} z
package/web/ezu_bg.wasm CHANGED
Binary file