@coderline/alphatab 1.7.0-alpha.1510 → 1.7.0-alpha.1511

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.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * alphaTab v1.7.0-alpha.1510 (develop, build 1510)
2
+ * alphaTab v1.7.0-alpha.1511 (develop, build 1511)
3
3
  *
4
4
  * Copyright © 2025, Daniel Kuschny and Contributors, All rights reserved.
5
5
  *
@@ -48,4 +48,4 @@
48
48
  * @preserve
49
49
  * @license
50
50
  */
51
- import*as r from"./alphaTab.core.min.mjs";export*from"./alphaTab.core.min.mjs";r.Environment.isRunningInWorker?r.Environment.initializeWorker():r.Environment.isRunningInAudioWorklet?r.Environment.initializeAudioWorklet():r.Environment.initializeMain(e=>{if(r.Environment.webPlatform===r.WebPlatform.NodeJs)throw new r.AlphaTabError(r.AlphaTabErrorType.General,"Workers not yet supported in Node.js");if(r.Environment.webPlatform===r.WebPlatform.BrowserModule||r.Environment.isWebPackBundled||r.Environment.isViteBundled){r.Logger.debug("AlphaTab","Creating webworker");try{return new r.Environment.alphaTabWorker(new r.Environment.alphaTabUrl("./alphaTab.worker.min.mjs",import.meta.url),{type:"module"})}catch(e){r.Logger.debug("AlphaTab","ESM webworker construction with direct URL failed",e)}let o="";try{o=new r.Environment.alphaTabUrl("./alphaTab.worker.min.mjs",import.meta.url);const e=`import ${JSON.stringify(o)}`,t=new Blob([e],{type:"application/javascript"});return new Worker(URL.createObjectURL(t),{type:"module"})}catch(e){r.Logger.debug("AlphaTab","ESM webworker construction with blob import failed",o,e)}try{if(!e.core.scriptFile)throw new Error("Could not detect alphaTab script file");o=e.core.scriptFile;const r=`import ${JSON.stringify(e.core.scriptFile)}`,t=new Blob([r],{type:"application/javascript"});return new Worker(URL.createObjectURL(t),{type:"module"})}catch(o){r.Logger.debug("AlphaTab","ESM webworker construction with blob import failed",e.core.scriptFile,o)}}if(!e.core.scriptFile)throw new r.AlphaTabError(r.AlphaTabErrorType.General,"Could not detect alphaTab script file, cannot initialize renderer");try{r.Logger.debug("AlphaTab","Creating Blob worker");const o=`importScripts('${e.core.scriptFile}')`,t=new Blob([o],{type:"application/javascript"});return new Worker(URL.createObjectURL(t))}catch(o){return r.Logger.warning("Rendering","Could not create inline worker, fallback to normal worker"),new Worker(e.core.scriptFile)}},(e,o)=>{if(r.Environment.webPlatform===r.WebPlatform.NodeJs)throw new r.AlphaTabError(r.AlphaTabErrorType.General,"Audio Worklets not yet supported in Node.js");if(r.Environment.webPlatform===r.WebPlatform.BrowserModule||r.Environment.isWebPackBundled||r.Environment.isViteBundled){r.Logger.debug("AlphaTab","Creating Module worklet");return e.audioWorklet.addModule(new r.Environment.alphaTabUrl("./alphaTab.worklet.min.mjs",import.meta.url))}return r.Logger.debug("AlphaTab","Creating Script worklet"),e.audioWorklet.addModule(o.core.scriptFile)});
51
+ import*as r from"./alphaTab.core.min.mjs";export*from"./alphaTab.core.min.mjs";r.Environment.isRunningInWorker?r.Environment.initializeWorker():r.Environment.isRunningInAudioWorklet?r.Environment.initializeAudioWorklet():r.Environment.initializeMain(e=>{if(r.Environment.webPlatform===r.WebPlatform.NodeJs)throw new r.AlphaTabError(r.AlphaTabErrorType.General,"Workers not yet supported in Node.js");if(r.Environment.webPlatform===r.WebPlatform.BrowserModule||r.Environment.isWebPackBundled||r.Environment.isViteBundled){r.Logger.debug("AlphaTab","Creating webworker");try{return new r.Environment.alphaTabWorker(new r.Environment.alphaTabUrl("./alphaTab.worker.min.mjs",import.meta.url),{type:"module"})}catch(e){r.Logger.debug("AlphaTab","ESM webworker construction with direct URL failed",e)}let o="";try{o=new r.Environment.alphaTabUrl("./alphaTab.worker.min.mjs",import.meta.url);const e=`import ${JSON.stringify(o)}`,t=new Blob([e],{type:"application/javascript"});return new Worker(URL.createObjectURL(t),{type:"module"})}catch(e){r.Logger.debug("AlphaTab","ESM webworker construction with blob import failed",o,e)}try{if(!e.core.scriptFile)throw new Error("Could not detect alphaTab script file");o=e.core.scriptFile;const r=`import ${JSON.stringify(e.core.scriptFile)}`,t=new Blob([r],{type:"application/javascript"});return new Worker(URL.createObjectURL(t),{type:"module"})}catch(o){r.Logger.debug("AlphaTab","ESM webworker construction with blob import failed",e.core.scriptFile,o)}}if(!e.core.scriptFile)throw new r.AlphaTabError(r.AlphaTabErrorType.General,"Could not detect alphaTab script file, cannot initialize renderer");try{r.Logger.debug("AlphaTab","Creating Blob worker");const o=`importScripts('${e.core.scriptFile}')`,t=new Blob([o],{type:"application/javascript"});return new Worker(URL.createObjectURL(t))}catch{return r.Logger.warning("Rendering","Could not create inline worker, fallback to normal worker"),new Worker(e.core.scriptFile)}},(e,o)=>{if(r.Environment.webPlatform===r.WebPlatform.NodeJs)throw new r.AlphaTabError(r.AlphaTabErrorType.General,"Audio Worklets not yet supported in Node.js");if(r.Environment.webPlatform===r.WebPlatform.BrowserModule||r.Environment.isWebPackBundled||r.Environment.isViteBundled){r.Logger.debug("AlphaTab","Creating Module worklet");return e.audioWorklet.addModule(new r.Environment.alphaTabUrl("./alphaTab.worklet.min.mjs",import.meta.url))}return r.Logger.debug("AlphaTab","Creating Script worklet"),e.audioWorklet.addModule(o.core.scriptFile)});
package/dist/alphaTab.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * alphaTab v1.7.0-alpha.1510 (develop, build 1510)
2
+ * alphaTab v1.7.0-alpha.1511 (develop, build 1511)
3
3
  *
4
4
  * Copyright © 2025, Daniel Kuschny and Contributors, All rights reserved.
5
5
  *
@@ -123,7 +123,7 @@ else {
123
123
  });
124
124
  return new Worker(URL.createObjectURL(blob));
125
125
  }
126
- catch (e) {
126
+ catch {
127
127
  alphaTab.Logger.warning('Rendering', 'Could not create inline worker, fallback to normal worker');
128
128
  return new Worker(settings.core.scriptFile);
129
129
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * alphaTab v1.7.0-alpha.1510 (develop, build 1510)
2
+ * alphaTab v1.7.0-alpha.1511 (develop, build 1511)
3
3
  *
4
4
  * Copyright © 2025, Daniel Kuschny and Contributors, All rights reserved.
5
5
  *
@@ -2417,7 +2417,7 @@ function getWorkerType(code, match) {
2417
2417
  try {
2418
2418
  workerOptions = evalValue(workerOptions);
2419
2419
  }
2420
- catch (e) {
2420
+ catch {
2421
2421
  return AlphaTabWorkerTypes.WorkerClassic;
2422
2422
  }
2423
2423
  if (typeof workerOptions === 'object' && workerOptions?.type === 'module') {
@@ -2453,7 +2453,7 @@ function importMetaUrlPlugin(options) {
2453
2453
  let s;
2454
2454
  const alphaTabWorkerPattern =
2455
2455
  // @ts-expect-error For the Vite plugin we expect newer node than for alphaTab itself (-> migrate to monorepo)
2456
- /\b(alphaTabWorker|alphaTabWorklet\.addModule)\s*\(\s*(new\s+[^ (]+alphaTabUrl\s*\(\s*(\'[^\']+\'|"[^"]+"|`[^`]+`)\s*,\s*import\.meta\.url\s*\))/dg;
2456
+ /\b(alphaTabWorker|alphaTabWorklet\.addModule)\s*\(\s*(new\s+[^ (]+alphaTabUrl\s*\(\s*('[^']+'|"[^"]+"|`[^`]+`)\s*,\s*import\.meta\.url\s*\))/dg;
2457
2457
  let match = alphaTabWorkerPattern.exec(code);
2458
2458
  while (match) {
2459
2459
  const workerType = getWorkerType(code, match);
@@ -2536,7 +2536,7 @@ function copyAssetsPlugin(options) {
2536
2536
  }
2537
2537
  alphaTabSourceDir = path__namespace.resolve(alphaTabSourceDir, '..');
2538
2538
  }
2539
- catch (e) {
2539
+ catch {
2540
2540
  alphaTabSourceDir = path__namespace.join(resolvedConfig.root, 'node_modules/@coderline/alphatab/dist/');
2541
2541
  }
2542
2542
  }
@@ -2546,7 +2546,7 @@ function copyAssetsPlugin(options) {
2546
2546
  await fs__namespace.promises.access(path__namespace.join(alphaTabSourceDir, 'alphaTab.mjs'), fs__namespace.constants.F_OK);
2547
2547
  isValidAlphaTabSourceDir = true;
2548
2548
  }
2549
- catch (e) {
2549
+ catch {
2550
2550
  isValidAlphaTabSourceDir = false;
2551
2551
  }
2552
2552
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * alphaTab v1.7.0-alpha.1510 (develop, build 1510)
2
+ * alphaTab v1.7.0-alpha.1511 (develop, build 1511)
3
3
  *
4
4
  * Copyright © 2025, Daniel Kuschny and Contributors, All rights reserved.
5
5
  *
@@ -2393,7 +2393,7 @@ function getWorkerType(code, match) {
2393
2393
  try {
2394
2394
  workerOptions = evalValue(workerOptions);
2395
2395
  }
2396
- catch (e) {
2396
+ catch {
2397
2397
  return AlphaTabWorkerTypes.WorkerClassic;
2398
2398
  }
2399
2399
  if (typeof workerOptions === 'object' && workerOptions?.type === 'module') {
@@ -2429,7 +2429,7 @@ function importMetaUrlPlugin(options) {
2429
2429
  let s;
2430
2430
  const alphaTabWorkerPattern =
2431
2431
  // @ts-expect-error For the Vite plugin we expect newer node than for alphaTab itself (-> migrate to monorepo)
2432
- /\b(alphaTabWorker|alphaTabWorklet\.addModule)\s*\(\s*(new\s+[^ (]+alphaTabUrl\s*\(\s*(\'[^\']+\'|"[^"]+"|`[^`]+`)\s*,\s*import\.meta\.url\s*\))/dg;
2432
+ /\b(alphaTabWorker|alphaTabWorklet\.addModule)\s*\(\s*(new\s+[^ (]+alphaTabUrl\s*\(\s*('[^']+'|"[^"]+"|`[^`]+`)\s*,\s*import\.meta\.url\s*\))/dg;
2433
2433
  let match = alphaTabWorkerPattern.exec(code);
2434
2434
  while (match) {
2435
2435
  const workerType = getWorkerType(code, match);
@@ -2512,7 +2512,7 @@ function copyAssetsPlugin(options) {
2512
2512
  }
2513
2513
  alphaTabSourceDir = path.resolve(alphaTabSourceDir, '..');
2514
2514
  }
2515
- catch (e) {
2515
+ catch {
2516
2516
  alphaTabSourceDir = path.join(resolvedConfig.root, 'node_modules/@coderline/alphatab/dist/');
2517
2517
  }
2518
2518
  }
@@ -2522,7 +2522,7 @@ function copyAssetsPlugin(options) {
2522
2522
  await fs.promises.access(path.join(alphaTabSourceDir, 'alphaTab.mjs'), fs.constants.F_OK);
2523
2523
  isValidAlphaTabSourceDir = true;
2524
2524
  }
2525
- catch (e) {
2525
+ catch {
2526
2526
  isValidAlphaTabSourceDir = false;
2527
2527
  }
2528
2528
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * alphaTab v1.7.0-alpha.1510 (develop, build 1510)
2
+ * alphaTab v1.7.0-alpha.1511 (develop, build 1511)
3
3
  *
4
4
  * Copyright © 2025, Daniel Kuschny and Contributors, All rights reserved.
5
5
  *
@@ -684,7 +684,7 @@ class AlphaTabWebPackPlugin {
684
684
  }
685
685
  alphaTabSourceDir = path__namespace.resolve(alphaTabSourceDir, '..');
686
686
  }
687
- catch (e) {
687
+ catch {
688
688
  alphaTabSourceDir = compilation.getPath('node_modules/@coderline/alphatab/dist/');
689
689
  }
690
690
  }
@@ -694,7 +694,7 @@ class AlphaTabWebPackPlugin {
694
694
  await fs__namespace.promises.access(path__namespace.join(alphaTabSourceDir, 'alphaTab.mjs'), fs__namespace.constants.F_OK);
695
695
  isValidAlphaTabSourceDir = true;
696
696
  }
697
- catch (e) {
697
+ catch {
698
698
  isValidAlphaTabSourceDir = false;
699
699
  }
700
700
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * alphaTab v1.7.0-alpha.1510 (develop, build 1510)
2
+ * alphaTab v1.7.0-alpha.1511 (develop, build 1511)
3
3
  *
4
4
  * Copyright © 2025, Daniel Kuschny and Contributors, All rights reserved.
5
5
  *
@@ -659,7 +659,7 @@ class AlphaTabWebPackPlugin {
659
659
  }
660
660
  alphaTabSourceDir = path.resolve(alphaTabSourceDir, '..');
661
661
  }
662
- catch (e) {
662
+ catch {
663
663
  alphaTabSourceDir = compilation.getPath('node_modules/@coderline/alphatab/dist/');
664
664
  }
665
665
  }
@@ -669,7 +669,7 @@ class AlphaTabWebPackPlugin {
669
669
  await fs.promises.access(path.join(alphaTabSourceDir, 'alphaTab.mjs'), fs.constants.F_OK);
670
670
  isValidAlphaTabSourceDir = true;
671
671
  }
672
- catch (e) {
672
+ catch {
673
673
  isValidAlphaTabSourceDir = false;
674
674
  }
675
675
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * alphaTab v1.7.0-alpha.1510 (develop, build 1510)
2
+ * alphaTab v1.7.0-alpha.1511 (develop, build 1511)
3
3
  *
4
4
  * Copyright © 2025, Daniel Kuschny and Contributors, All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * alphaTab v1.7.0-alpha.1510 (develop, build 1510)
2
+ * alphaTab v1.7.0-alpha.1511 (develop, build 1511)
3
3
  *
4
4
  * Copyright © 2025, Daniel Kuschny and Contributors, All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * alphaTab v1.7.0-alpha.1510 (develop, build 1510)
2
+ * alphaTab v1.7.0-alpha.1511 (develop, build 1511)
3
3
  *
4
4
  * Copyright © 2025, Daniel Kuschny and Contributors, All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * alphaTab v1.7.0-alpha.1510 (develop, build 1510)
2
+ * alphaTab v1.7.0-alpha.1511 (develop, build 1511)
3
3
  *
4
4
  * Copyright © 2025, Daniel Kuschny and Contributors, All rights reserved.
5
5
  *
@@ -343,4 +343,103 @@ Changelog
343
343
  – Added stylistic alternates for 15/22 octave markings using 16/24, as used by some 20th century French publishers
344
344
  – Added stylistic alternates for wiggleArpeggiatoUpSwash and wiggleArpeggiatoDownSwash based on Couperin's 'L'Art de Toucher Le Clavecin'
345
345
  – Changed the appearance of clefBridge (U+E078) to match the design used by Lachenmann in "...zwei Gefühle..." and added a stylistic alternate with the previous design
346
- – Fixed the appearance of figBassRaised5 to have a forward slash rather than a backward slash, the correct appearance for a diminished fifth (U+EA5A)
346
+ – Fixed the appearance of figBassRaised5 to have a forward slash rather than a backward slash, the correct appearance for a diminished fifth (U+EA5A)
347
+
348
+ 27 January 2017 (Daniel Spreadbury) Bravura 1.211
349
+ – Added dynamicCombinedSeparatorSlash (U+E549)
350
+ – Added stylistic alternates for tuplet digits in lighter weight
351
+ – Improved the tessellation of multi-segment lines, particularly the various wiggles for trills at different speeds.
352
+ – Fixed timesig9denominator and timesig9numerator ligatures
353
+
354
+ 11 February 2017 (Daniel Spreadbury) Bravura 1.212
355
+ – Added keyboardPedalParensLeft (U+E676) and keyboardPedalParensRight (U+E677)
356
+ – Added vulgar fractions for 1/8 (U+215B), 1/4 (U+00BC), 1/2 (U+00BD), 3/4 (U+00BE)
357
+
358
+ 18 February 2017 (Daniel Spreadbury) Bravura 1.213
359
+ – Decreased the width of the space character (U+0020) to 100du
360
+
361
+ 27 May 2017 (Daniel Spreadbury) Bravura 1.214
362
+ – Improved the appearance of the glyphs in the 'Chord symbols' range (U+E870–U+E87F)
363
+ – Added new 'Chord symbol accidentals' range (U+ED60-U+ED66)
364
+ – BEWARE: Renumbered the optional glyphs from U+F400 upwards; many optional glyphs have moved
365
+
366
+ 31 May 2017 (Daniel Spreadbury) Bravura 1.215
367
+ – Added optical variants for some chord symbols glyphs, e.g. +/- for augmented/diminished chord quality
368
+
369
+ 3 June 2017 (Daniel Spreadbury) Bravura 1.216
370
+ – Added optical variants for chord symbol accidentals shown at smaller sizes
371
+
372
+ 18 July 2017 (Daniel Spreadbury) Bravura 1.217
373
+ – Improved the shape and stem connection data of glyphs in the 'Shape note noteheads' range (U+E1B0–U+E1CF)
374
+
375
+ 9 August 2017 (Daniel Spreadbury) Bravura 1.218
376
+ – Added new glyphs to the 'Fingering' range, with digits between 6 and 9, parentheses, brackets, and middle dot separator
377
+
378
+ 10 August 2017 (Daniel Spreadbury) Bravura 1.219
379
+ – Improved the shape and stem connection data of glyphs in the 'Shape note noteheads' range (U+E1B0–U+E1CF)
380
+
381
+ 16 August 2017 (Daniel Spreadbury) Bravura 1.220
382
+ – Increased the size of black and half noteheads in 'Shape note noteheads' range (U+E1B0–U+E1CF)
383
+
384
+ 25 October 2017 (Daniel Spreadbury) Bravura 1.250
385
+ – Added new 'Kahnotation' range, with thanks to Matthew Dougherty, Sam Katz and Sam Weber (U+EDA0–U+EDF1)
386
+ – Added new 'German organ tablature' range, with thanks to John McKean (U+EE00–U+EE3F)
387
+ – Added new 'Clefs supplement' range, including new universal Indian drum notation clef (U+ED70)
388
+ – Added new 'Fingering supplement' range, with italic fingering digits, parentheses and brackets (U+ED80-U+ED8D)
389
+ – Added more separators for brass fingering (U+ED2D–U+ED2E) to 'Fingering' range
390
+ – Added pictBeaterMalletDown (U+E7EC), pictBeaterBrassMalletsRight (U+E7ED), pictBeaterBrassMalletsLeft (U+E7EE), pictTriangleBeaterPlain (U+E7EF) to 'Beaters pictograms' range
391
+ – Added vocalHalbGesungen (semi-sprechgesang) to 'Vocal techniques' range (U+E64B)
392
+ – Added separate glyphs for upper dot, lower dot and central slash (U+E503–U+E505) to 'Bar repeats' range, to allow construction of bar repeats for arbitrary number of bars
393
+ – Added lyricsTextRepeat glyph (U+E555) to 'Lyrics' range
394
+ – Added one-handed roll (U+E233) and double lateral roll (U+E234) for mallet percussion, popularised by Leigh Howard Stevens, to 'Tremolos' range
395
+
396
+ 7 November 2017 (Daniel Spreadbury) Bravura 1.251
397
+ – Resized csymAugmented and csymMinor
398
+ – Adjusted the side bearings of noteheads whose stem attachment points should be offset from the edge of the glyph's bounding box
399
+
400
+ 14 November 2017 (Daniel Spreadbury) Bravura Text 1.252
401
+ – Corrected scaling for chord symbols glyphs in Bravura Text
402
+
403
+ 11 December 2017 (Daniel Spreadbury) Bravura 1.260
404
+ – Added new stylistic set (ss08) for oversized versions of the 'Slash notehead' range
405
+
406
+ 16 December 2017 (Daniel Spreadbury) Bravura Text 1.261
407
+ – Corrected scaling for chord symbols standard accidentals glyphs in Bravura Text
408
+
409
+ 23 February 2018 (Daniel Spreadbury) Bravura 1.270
410
+ – Expanded 'Large, narrow sans serif time signatures' stylistic set (ss04) to complete 'Time signatures' and 'Time signatures supplement' ranges
411
+ – Added new 'Large, narrow bold serif time signatures' stylistic set (ss09)
412
+
413
+ 26 February 2018 (Daniel Spreadbury) Bravura 1.271
414
+ – Resized 'Large, narrow sans serif time signatures' stylistic set (ss04) glyphs to give them the same scale factor as the other time signatures glyphs
415
+
416
+ 29 April 2018 (Daniel Spreadbury) Bravura 1.272
417
+ – Improved 'Large, narrow sans serif time signatures' stylistic set (ss04) glyphs to make the forms more condensed
418
+
419
+ 29 January 2019 (Daniel Spreadbury) Bravura 1.276 / Bravura Text 1.277
420
+ – Fixed the scale factor for optical variants for chord symbol accidentals
421
+
422
+ 31 August 2019 (Daniel Spreadbury) Bravura 1.31 / Bravura Text 1.31
423
+ – New fingeringQLower (U+ED8E) and fingeringSLower (U+ED8F) glyphs in the 'Fingering supplement' range
424
+
425
+ 6 December 2019 (Daniel Spreadbury) Bravura 1.32
426
+ – Reduced height of accidentalBracketLeft (U+E26C) and accidentalBracketRight (U+E26D)
427
+ – Corrected registration of a number of glyphs in the 'Extended Helmholtz-Ellis Just Intonation accidentals' range (U+E2DF, U+E2E6, U+E2E7, U+E2E8, U+E2E9, U+E2F7, U+E2F8, U+E2EB).
428
+
429
+ 18 March 2020 (Daniel Spreadbury) Bravura 1.34
430
+ – Swapped direction of wiggleArpeggiatoDownArrow (U+EAAE) and wiggleArpeggiatoDownSwash (U+EAAC)
431
+
432
+ 27 March 2020 (Daniel Spreadbury) Bravura 1.35
433
+ – Added figbassTripleFlat (U+ECC1) and figbassTripleSharp (U+ECC2)
434
+
435
+ 1 April 2020 (Daniel Spreadbury) Bravura 1.36
436
+ – Reduced size of accidentals in 'Figured bass' and 'Figured bass supplement' range to match published editions more closely
437
+
438
+ 3 May 2020 (Daniel Spreadbury) Bravura 1.37
439
+ – Improved shape of accidentals in 'Figured bass' and 'Figured bass supplement' range, reducing the length of ascenders and descenders and increasing the size of the counters
440
+ – Improved the design of figBass4Raised (U+EA56) to make the vertical stroke more prominent, aiding legibility at small sizes
441
+
442
+ 25 June 2020 (Daniel Spreadbury) Bravura 1.38
443
+ – Added new stylistic set (ss10) for accidentals for figured bass with longer ascenders and descenders
444
+ – Improved the shape of the tips of each of the up- and down-stem flags in the 'Flags' range (U+E240–U+E251)
445
+ – Improved the shape of ornamentTrill (U+E566) and ornamentShortTrill (U+E56C)
Binary file
Binary file