emf-converter 4.6.5 → 4.6.6

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/dist/browser.js CHANGED
@@ -28728,7 +28728,105 @@ var HOBBY = [
28728
28728
  [[8, -48], [-8, -48], [-24, -40], [-40, -24], [-48, -8], [-48, 8], [-40, 24], [-24, 40], [-8, 48], [8, 48], [24, 40], [40, 24], [48, 8], [48, -8], [40, -24], [24, -40]]
28729
28729
  ];
28730
28730
  var HOBBY_LIMIT = 104;
28731
- var FLAT_VECTOR_OFFSET = { 7: [0, 0.5], 8: [0, 0.5], 9: [0.5, 0.5], 10: [0.5, 0] };
28731
+ var FLAT_SECTOR_BIAS = {
28732
+ 7: [9, "cf..", "edededEdcDcdcd"],
28733
+ 8: [9, "dFee", "ededededbdbdbd"],
28734
+ 9: [9, "df..", "ddddddddbDbdbd"],
28735
+ 10: [9, "de..", "dededeDebEbebE"],
28736
+ 11: [9, "ce..", "eeeeeeEececece"],
28737
+ 12: [13, "ce..", "eeeeeeeeeeeececEcecece"],
28738
+ 13: [17, "ce..", "eeeeededdddddeDebebebdbdcdcdce"],
28739
+ 14: [17, "df..", "ddedeeeededeeeedcDcebebecececd"],
28740
+ 15: [17, "dF..", "ddedeeeeeeeedeDdbdbecececececd"],
28741
+ 16: [17, "ce..", "eeeededededeeeeececebebebebece"],
28742
+ 17: [17, "df..", "ddedededededdeddbdbebdbdbdbdcd"],
28743
+ 18: [17, "de..", "deeededeededeeEdcDcecdcdbebece"],
28744
+ 19: [17, "cf..", "ededeeeedddddeDebEbecdcdbebecd"],
28745
+ 20: [17, "ce..", "eeeeddddeeeeddDdbdbdcecebdbdce"],
28746
+ 21: [17, "dF..", "ddddededededddDdbdbdcdcdcdcdbd"],
28747
+ 22: [17, "ce..", "eeeededeeeeedeDebebececebebece"],
28748
+ 23: [17, "cf..", "edededededededEdcDcdcdcdcdcdcD"],
28749
+ 24: [17, "dF..", "ddddddddddddddDdbdbdbdbdbdbdbd"],
28750
+ 25: [17, "cE..", "eeeeededededeeEecEcecdcdcdcdce"],
28751
+ 26: [17, "cf..", "ededdedeededdedebEbecdcdbebecd"],
28752
+ 27: [17, "de..", "dedeededdedeededcDcdbebecdcdbe"],
28753
+ 28: [17, "cf..", "ededddddeeeedeDebEbebebecdcdcd"],
28754
+ 29: [17, "ce..", "eeeeeeeededededebebebebececece"],
28755
+ 30: [17, "dF..", "dddddedeeeeeedEdcdcdcecebebebd"],
28756
+ 31: [17, "de..", "dedeededededdeDebebecdcdcdcdbe"],
28757
+ 32: [17, "cf..", "ededdededdddeeeecEcebdbdbebecd"],
28758
+ 33: [17, "de..", "dedeeeeeededddDdbdbdcdcdcecebe"],
28759
+ 34: [17, "de..", "dedeeeeeddddedEdcdcdbdbdcecebe"],
28760
+ 35: [17, "cf..", "ededededdededeDebebebebecdcdcd"],
28761
+ 36: [17, "deee", "eeeeeeeeddddddDdcdcdcdcDbebebe"],
28762
+ 37: [17, "dF..", "dddddededededdDdbdbdcecececebd"],
28763
+ 38: [17, "ce..", "eeeeddddddddeeEececebdbdbdbdce"],
28764
+ 39: [17, "cF..", "ededddddddddededcdcdbdbDbdbdcd"],
28765
+ 40: [17, "de..", "dededededdddddddbdbdbdbdbebebe"],
28766
+ 41: [17, "ce..", "eeeeeeeeeeeeeeEececececececece"],
28767
+ 42: [17, "cf..", "ededeeeedddddedebebebdbdcececd"],
28768
+ 43: [17, "df..", "ddddeeeededeedEdcdcdbebececebd"],
28769
+ 44: [17, "cF..", "ededdedeededdeDebebecdcdbebecd"],
28770
+ 45: [17, "ce..", "eeeededededeeeeecEcebebebebece"],
28771
+ 46: [17, "dF..", "ddddededddddedEdcDcdcdcdbdbdbd"],
28772
+ 47: [17, "ce..", "dedededededededececececececece"],
28773
+ 48: [25, "cf..", "ededeeeeeeeeededeeeeeeEecececececdcdcececececd"],
28774
+ 49: [25, "cF..", "ededddddededeeeeededdeDebebecdcdcececdcdbdbdcd"],
28775
+ 50: [25, "ce..", "eeeeddddededdededededeDebebebebebEbecdcdbdbdce"],
28776
+ 51: [25, "ce..", "eeeeededddddeeeededeeeEececebebececebdbdcdcdce"],
28777
+ 52: [25, "ce..", "eeeededededeededededeeEecececdcdcdcdbebebebece"],
28778
+ 53: [25, "dF..", "ddedeeeedddddddddedeeeEdcdcebebebdbDbdbdcececd"],
28779
+ 54: [25, "dF..", "ddedddddededededdddddEDdbdbebdbdcdcdcdcdbdbdcd"],
28780
+ 55: [25, "dF..", "ddeddedeeeeeeeeedededeDdbdbebebebebebebebebecd"],
28781
+ 56: [25, "dE..", "deeeeeeeededeeeededeeEedcdcebebecececdcdcecece"],
28782
+ 57: [25, "de..", "deeedddddddddedeededeeEdcDcecDcdcececdcdbdbDce"],
28783
+ 58: [25, "dF..", "ddedddddeeeedddddedeeeEdcdcebebebdbdcecebdbdcd"],
28784
+ 59: [33, "cF..", "ededdedeededddddeeeeeeeedddddeDebebebdbdcecececebdbdcdcdbebecd"],
28785
+ 60: [33, "cf..", "ededeeeeededededddddeeeeeeeedeDebebececececebdbdcdcdcdcdcececd"],
28786
+ 61: [33, "ce..", "eeeeeeeeddddeeeeeeeeddddeeeeeeeececececebdbdcecececebdbdcecece"],
28787
+ 62: [33, "ce..", "eeeeddddeeeeededededeeeeddddeeEecEcebdbdcececdcdcdcdcecebdbdce"],
28788
+ 63: [33, "cf..", "ededededeeeededededeeeeeeeeeeeEececececececebebEbebecececdcdcd"],
28789
+ 64: [33, "cF..", "ededeeeedddddedeeeeededeeeeedeDebebececebebececebebebdbdcececd"],
28790
+ 65: [33, "df..", "ddedededededddddddddeeeeeeeedeDdbdbececececebdbdbdbdcdcdcdcdcd"],
28791
+ 66: [33, "de..", "deeeededdedeeeeedddddededddddeDdbdbebdbdbebecdcdbebebebecdcdce"],
28792
+ 67: [33, "de..", "deeeddddddddededdddddededdddeeEdcDcebdbdbebebdbdcdcdbdbdbdbdce"],
28793
+ 68: [33, "dE..", "deeeeeeeeeeeeeeeddddeeeeeeeeeeEdcdcececececebdbdcecececececece"],
28794
+ 69: [33, "df..", "ddedededdedeeeeeddddededededdeDdbdbecdcdcdcdbdbdcecebebecdcdcd"],
28795
+ 70: [33, "dF..", "ddeddddddddddddddededededddddeDdbdbebdbdbebebebebdbdbdbdbdbDcd"],
28796
+ 71: [33, "ce..", "eeeeddddeeeededeeeeededeededdeDebebecdcdbebececebebececebdbdce"],
28797
+ 72: [33, "ce..", "eeeededededeededededddddddddeeEececebdbdbdbdcdcdcdcdbebebebece"],
28798
+ 73: [33, "ce..", "eeeeededededddddededdedeeeeeeeEececececebebecdcdbdbdcdcDcdcdce"],
28799
+ 74: [33, "cf..", "ededddddededededededdededddddeDebebebdbdbebecdcDcdcdcdcdbdbdcd"],
28800
+ 75: [33, "cF..", "ededdededededdddddddeeeedddddeDebebebdbdcececdcdcdcdbebebebecd"],
28801
+ 76: [33, "ce..", "eeeeeeeeeeeeeeeeeeeededeeeeedeDebebececebebecececececececececE"],
28802
+ 77: [33, "ce..", "eeeeeeeedededddddededdddedededEdcDcdcdcdbdbdbebebdbdbebececece"],
28803
+ 78: [33, "de..", "dedeededdedededeeeeeeeeededeedEdcdcdbebececececebebebebecdcdbe"],
28804
+ 79: [33, "dF..", "ddddddddededdededdddeeeeedededEdcDcdcdcdcecebdbdbebecdcdbdbdbd"],
28805
+ 80: [33, "dF..", "dddddededdddeeeeddddddddededddDdbdbdcdcdbdbdbdbDcecebdbdbebEbd"],
28806
+ 81: [33, "de..", "dedeeeeeeeeededeededeeeedededdDdbdbdbebecececdcdbebececececebe"],
28807
+ 82: [33, "de..", "dedeededdedeededdedededeedededEdcdcdcdcdbebebebecdcdbebecdcDbe"],
28808
+ 83: [33, "de..", "dededededddddededdddeeeededeeeEececebebececebdbdbebebdbdbebebe"],
28809
+ 84: [33, "cF..", "ededddddeeeeddddeeeeeeeeededeeEecececdcdcecebebecdcdcecebdbdcd"],
28810
+ 85: [33, "cf..", "ededdddddededddddddddedeeeeedeDebebececebebebdbdbdbdbebebdbdcd"],
28811
+ 86: [33, "ce..", "eeeeededddddeeeeeeeedededededeDebebebebebebebebebebebdbdcdcdce"],
28812
+ 87: [33, "ce..", "eeeeddddeeeeddddddddeeeeddddeeeececebdbdcecebdbDbdbdcecebdbdce"],
28813
+ 88: [33, "ce..", "eeeedededdddeeeeededededededeeeecececdcdcdcdcdcdcecebdbdbebece"],
28814
+ 89: [33, "cF..", "ededeeeeddddddddededdedededeeeEecEcebebEbebecdcdbdbdbdbdcececd"],
28815
+ 90: [33, "dF..", "ddddededeeeeededeeeedededededdDdbdbdbebebEbecececdcdcececdcdbd"],
28816
+ 91: [33, "df..", "ddddeeeededededeededdddddededdDdbdbdbebebdbdcdcdbebebebececebd"],
28817
+ 92: [33, "de..", "dedededeededdddddededededdddedEdcdcdbdbdbebebebebdbdcdcdbebebe"],
28818
+ 93: [33, "de..", "dededddddddddedeededeeeeeeeeededcdcdcececececdcdbebebdbdbdbdbe"],
28819
+ 94: [33, "dF..", "ddddeeeeddddeeeeddddeeeededeedEdcDcdbebececebdbDcecebdbdcecebd"],
28820
+ 95: [33, "df..", "ddddddddededeeeedddddededdddddDdbdbDbdbdbebecdcdbebecdcdbdbdbd"],
28821
+ 96: [33, "cf..", "ededeeeededeeeeedededdddeeeedeDebebececebdbdbebececebebecececd"],
28822
+ 97: [33, "ce..", "eeeedededededededdddeeeedddddeDebebebdbdcEcebdbdbebebEbebebece"],
28823
+ 98: [33, "ce..", "eeeeededededeeeeeeeededededeeeEececebebebebecececececdcdcdcdce"],
28824
+ 99: [33, "cf..", "ededededddddddddddddededdedeeeEececebebecdcdbdbdbdbdbdbdcdcdcd"],
28825
+ 100: [33, "cf..", "ededdedeeeeededededeeeeeededdeDebebecdcdcecebebebebececebebecd"]
28826
+ };
28827
+ function sectorBias(code) {
28828
+ return code >= 97 ? (code - 97) / 2 - 1.5 : (code - 65) / 2 - 1.5 - 1 / 64;
28829
+ }
28732
28830
  var penCache = /* @__PURE__ */ new Map();
28733
28831
  function penPolygon(width) {
28734
28832
  const cached = penCache.get(width);
@@ -28807,13 +28905,19 @@ function perpendicularVectors(width, dx0, dy0) {
28807
28905
  const [B, hB, hS] = hP >= hN ? [P, hP, hN] : [N, hN, hP];
28808
28906
  const den = 2 * (bh - hB + (bh - hS));
28809
28907
  const w = den === 0 ? 0 : (hB - hS) / den;
28810
- const off = width % 16 === 0 && width >= HOBBY_LIMIT ? FLAT_VECTOR_OFFSET[width / 16] : void 0;
28811
- const sgn = best < n / 2 ? 1 : -1;
28812
- const ox = off ? sgn * off[0] : 0;
28813
- const oy = off ? sgn * off[1] : 0;
28814
28908
  const r = (v) => 8 * Math.floor((v + 4) / 8);
28815
28909
  const x = D[0] + (B[0] - D[0]) * w, y = D[1] + (B[1] - D[1]) * w;
28816
- const vx = r(x + 0.5 * Math.sign(dy) + ox), vy = r(y + 0.5 * Math.sign(dx) + oy);
28910
+ let cx = 0.5 * Math.sign(dy), cy = 0.5 * Math.sign(dx);
28911
+ const table = width % 16 === 0 ? FLAT_SECTOR_BIAS[width / 16] : void 0;
28912
+ if (table) {
28913
+ const key = best * 2 + (hP >= hN ? 0 : 1);
28914
+ const pair = key === 0 ? table[1].slice(0, 2) : key >= table[0] ? table[2].slice((key - table[0]) * 2, (key - table[0]) * 2 + 2) : "..";
28915
+ if (pair[0] !== ".") {
28916
+ cx = sectorBias(pair.charCodeAt(0));
28917
+ cy = sectorBias(pair.charCodeAt(1));
28918
+ }
28919
+ }
28920
+ const vx = r(x + cx), vy = r(y + cy);
28817
28921
  return { v: flip ? [-vx, -vy] : [vx, vy], ray: flip ? [-x, -y] : [x, y] };
28818
28922
  }
28819
28923
  function squareExtension(width, dx, dy) {
package/dist/browser.mjs CHANGED
@@ -28726,7 +28726,105 @@ var HOBBY = [
28726
28726
  [[8, -48], [-8, -48], [-24, -40], [-40, -24], [-48, -8], [-48, 8], [-40, 24], [-24, 40], [-8, 48], [8, 48], [24, 40], [40, 24], [48, 8], [48, -8], [40, -24], [24, -40]]
28727
28727
  ];
28728
28728
  var HOBBY_LIMIT = 104;
28729
- var FLAT_VECTOR_OFFSET = { 7: [0, 0.5], 8: [0, 0.5], 9: [0.5, 0.5], 10: [0.5, 0] };
28729
+ var FLAT_SECTOR_BIAS = {
28730
+ 7: [9, "cf..", "edededEdcDcdcd"],
28731
+ 8: [9, "dFee", "ededededbdbdbd"],
28732
+ 9: [9, "df..", "ddddddddbDbdbd"],
28733
+ 10: [9, "de..", "dededeDebEbebE"],
28734
+ 11: [9, "ce..", "eeeeeeEececece"],
28735
+ 12: [13, "ce..", "eeeeeeeeeeeececEcecece"],
28736
+ 13: [17, "ce..", "eeeeededdddddeDebebebdbdcdcdce"],
28737
+ 14: [17, "df..", "ddedeeeededeeeedcDcebebecececd"],
28738
+ 15: [17, "dF..", "ddedeeeeeeeedeDdbdbecececececd"],
28739
+ 16: [17, "ce..", "eeeededededeeeeececebebebebece"],
28740
+ 17: [17, "df..", "ddedededededdeddbdbebdbdbdbdcd"],
28741
+ 18: [17, "de..", "deeededeededeeEdcDcecdcdbebece"],
28742
+ 19: [17, "cf..", "ededeeeedddddeDebEbecdcdbebecd"],
28743
+ 20: [17, "ce..", "eeeeddddeeeeddDdbdbdcecebdbdce"],
28744
+ 21: [17, "dF..", "ddddededededddDdbdbdcdcdcdcdbd"],
28745
+ 22: [17, "ce..", "eeeededeeeeedeDebebececebebece"],
28746
+ 23: [17, "cf..", "edededededededEdcDcdcdcdcdcdcD"],
28747
+ 24: [17, "dF..", "ddddddddddddddDdbdbdbdbdbdbdbd"],
28748
+ 25: [17, "cE..", "eeeeededededeeEecEcecdcdcdcdce"],
28749
+ 26: [17, "cf..", "ededdedeededdedebEbecdcdbebecd"],
28750
+ 27: [17, "de..", "dedeededdedeededcDcdbebecdcdbe"],
28751
+ 28: [17, "cf..", "ededddddeeeedeDebEbebebecdcdcd"],
28752
+ 29: [17, "ce..", "eeeeeeeededededebebebebececece"],
28753
+ 30: [17, "dF..", "dddddedeeeeeedEdcdcdcecebebebd"],
28754
+ 31: [17, "de..", "dedeededededdeDebebecdcdcdcdbe"],
28755
+ 32: [17, "cf..", "ededdededdddeeeecEcebdbdbebecd"],
28756
+ 33: [17, "de..", "dedeeeeeededddDdbdbdcdcdcecebe"],
28757
+ 34: [17, "de..", "dedeeeeeddddedEdcdcdbdbdcecebe"],
28758
+ 35: [17, "cf..", "ededededdededeDebebebebecdcdcd"],
28759
+ 36: [17, "deee", "eeeeeeeeddddddDdcdcdcdcDbebebe"],
28760
+ 37: [17, "dF..", "dddddededededdDdbdbdcecececebd"],
28761
+ 38: [17, "ce..", "eeeeddddddddeeEececebdbdbdbdce"],
28762
+ 39: [17, "cF..", "ededddddddddededcdcdbdbDbdbdcd"],
28763
+ 40: [17, "de..", "dededededdddddddbdbdbdbdbebebe"],
28764
+ 41: [17, "ce..", "eeeeeeeeeeeeeeEececececececece"],
28765
+ 42: [17, "cf..", "ededeeeedddddedebebebdbdcececd"],
28766
+ 43: [17, "df..", "ddddeeeededeedEdcdcdbebececebd"],
28767
+ 44: [17, "cF..", "ededdedeededdeDebebecdcdbebecd"],
28768
+ 45: [17, "ce..", "eeeededededeeeeecEcebebebebece"],
28769
+ 46: [17, "dF..", "ddddededddddedEdcDcdcdcdbdbdbd"],
28770
+ 47: [17, "ce..", "dedededededededececececececece"],
28771
+ 48: [25, "cf..", "ededeeeeeeeeededeeeeeeEecececececdcdcececececd"],
28772
+ 49: [25, "cF..", "ededddddededeeeeededdeDebebecdcdcececdcdbdbdcd"],
28773
+ 50: [25, "ce..", "eeeeddddededdededededeDebebebebebEbecdcdbdbdce"],
28774
+ 51: [25, "ce..", "eeeeededddddeeeededeeeEececebebececebdbdcdcdce"],
28775
+ 52: [25, "ce..", "eeeededededeededededeeEecececdcdcdcdbebebebece"],
28776
+ 53: [25, "dF..", "ddedeeeedddddddddedeeeEdcdcebebebdbDbdbdcececd"],
28777
+ 54: [25, "dF..", "ddedddddededededdddddEDdbdbebdbdcdcdcdcdbdbdcd"],
28778
+ 55: [25, "dF..", "ddeddedeeeeeeeeedededeDdbdbebebebebebebebebecd"],
28779
+ 56: [25, "dE..", "deeeeeeeededeeeededeeEedcdcebebecececdcdcecece"],
28780
+ 57: [25, "de..", "deeedddddddddedeededeeEdcDcecDcdcececdcdbdbDce"],
28781
+ 58: [25, "dF..", "ddedddddeeeedddddedeeeEdcdcebebebdbdcecebdbdcd"],
28782
+ 59: [33, "cF..", "ededdedeededddddeeeeeeeedddddeDebebebdbdcecececebdbdcdcdbebecd"],
28783
+ 60: [33, "cf..", "ededeeeeededededddddeeeeeeeedeDebebececececebdbdcdcdcdcdcececd"],
28784
+ 61: [33, "ce..", "eeeeeeeeddddeeeeeeeeddddeeeeeeeececececebdbdcecececebdbdcecece"],
28785
+ 62: [33, "ce..", "eeeeddddeeeeededededeeeeddddeeEecEcebdbdcececdcdcdcdcecebdbdce"],
28786
+ 63: [33, "cf..", "ededededeeeededededeeeeeeeeeeeEececececececebebEbebecececdcdcd"],
28787
+ 64: [33, "cF..", "ededeeeedddddedeeeeededeeeeedeDebebececebebececebebebdbdcececd"],
28788
+ 65: [33, "df..", "ddedededededddddddddeeeeeeeedeDdbdbececececebdbdbdbdcdcdcdcdcd"],
28789
+ 66: [33, "de..", "deeeededdedeeeeedddddededddddeDdbdbebdbdbebecdcdbebebebecdcdce"],
28790
+ 67: [33, "de..", "deeeddddddddededdddddededdddeeEdcDcebdbdbebebdbdcdcdbdbdbdbdce"],
28791
+ 68: [33, "dE..", "deeeeeeeeeeeeeeeddddeeeeeeeeeeEdcdcececececebdbdcecececececece"],
28792
+ 69: [33, "df..", "ddedededdedeeeeeddddededededdeDdbdbecdcdcdcdbdbdcecebebecdcdcd"],
28793
+ 70: [33, "dF..", "ddeddddddddddddddededededddddeDdbdbebdbdbebebebebdbdbdbdbdbDcd"],
28794
+ 71: [33, "ce..", "eeeeddddeeeededeeeeededeededdeDebebecdcdbebececebebececebdbdce"],
28795
+ 72: [33, "ce..", "eeeededededeededededddddddddeeEececebdbdbdbdcdcdcdcdbebebebece"],
28796
+ 73: [33, "ce..", "eeeeededededddddededdedeeeeeeeEececececebebecdcdbdbdcdcDcdcdce"],
28797
+ 74: [33, "cf..", "ededddddededededededdededddddeDebebebdbdbebecdcDcdcdcdcdbdbdcd"],
28798
+ 75: [33, "cF..", "ededdededededdddddddeeeedddddeDebebebdbdcececdcdcdcdbebebebecd"],
28799
+ 76: [33, "ce..", "eeeeeeeeeeeeeeeeeeeededeeeeedeDebebececebebecececececececececE"],
28800
+ 77: [33, "ce..", "eeeeeeeedededddddededdddedededEdcDcdcdcdbdbdbebebdbdbebececece"],
28801
+ 78: [33, "de..", "dedeededdedededeeeeeeeeededeedEdcdcdbebececececebebebebecdcdbe"],
28802
+ 79: [33, "dF..", "ddddddddededdededdddeeeeedededEdcDcdcdcdcecebdbdbebecdcdbdbdbd"],
28803
+ 80: [33, "dF..", "dddddededdddeeeeddddddddededddDdbdbdcdcdbdbdbdbDcecebdbdbebEbd"],
28804
+ 81: [33, "de..", "dedeeeeeeeeededeededeeeedededdDdbdbdbebecececdcdbebececececebe"],
28805
+ 82: [33, "de..", "dedeededdedeededdedededeedededEdcdcdcdcdbebebebecdcdbebecdcDbe"],
28806
+ 83: [33, "de..", "dededededddddededdddeeeededeeeEececebebececebdbdbebebdbdbebebe"],
28807
+ 84: [33, "cF..", "ededddddeeeeddddeeeeeeeeededeeEecececdcdcecebebecdcdcecebdbdcd"],
28808
+ 85: [33, "cf..", "ededdddddededddddddddedeeeeedeDebebececebebebdbdbdbdbebebdbdcd"],
28809
+ 86: [33, "ce..", "eeeeededddddeeeeeeeedededededeDebebebebebebebebebebebdbdcdcdce"],
28810
+ 87: [33, "ce..", "eeeeddddeeeeddddddddeeeeddddeeeececebdbdcecebdbDbdbdcecebdbdce"],
28811
+ 88: [33, "ce..", "eeeedededdddeeeeededededededeeeecececdcdcdcdcdcdcecebdbdbebece"],
28812
+ 89: [33, "cF..", "ededeeeeddddddddededdedededeeeEecEcebebEbebecdcdbdbdbdbdcececd"],
28813
+ 90: [33, "dF..", "ddddededeeeeededeeeedededededdDdbdbdbebebEbecececdcdcececdcdbd"],
28814
+ 91: [33, "df..", "ddddeeeededededeededdddddededdDdbdbdbebebdbdcdcdbebebebececebd"],
28815
+ 92: [33, "de..", "dedededeededdddddededededdddedEdcdcdbdbdbebebebebdbdcdcdbebebe"],
28816
+ 93: [33, "de..", "dededddddddddedeededeeeeeeeeededcdcdcececececdcdbebebdbdbdbdbe"],
28817
+ 94: [33, "dF..", "ddddeeeeddddeeeeddddeeeededeedEdcDcdbebececebdbDcecebdbdcecebd"],
28818
+ 95: [33, "df..", "ddddddddededeeeedddddededdddddDdbdbDbdbdbebecdcdbebecdcdbdbdbd"],
28819
+ 96: [33, "cf..", "ededeeeededeeeeedededdddeeeedeDebebececebdbdbebececebebecececd"],
28820
+ 97: [33, "ce..", "eeeedededededededdddeeeedddddeDebebebdbdcEcebdbdbebebEbebebece"],
28821
+ 98: [33, "ce..", "eeeeededededeeeeeeeededededeeeEececebebebebecececececdcdcdcdce"],
28822
+ 99: [33, "cf..", "ededededddddddddddddededdedeeeEececebebecdcdbdbdbdbdbdbdcdcdcd"],
28823
+ 100: [33, "cf..", "ededdedeeeeededededeeeeeededdeDebebecdcdcecebebebebececebebecd"]
28824
+ };
28825
+ function sectorBias(code) {
28826
+ return code >= 97 ? (code - 97) / 2 - 1.5 : (code - 65) / 2 - 1.5 - 1 / 64;
28827
+ }
28730
28828
  var penCache = /* @__PURE__ */ new Map();
28731
28829
  function penPolygon(width) {
28732
28830
  const cached = penCache.get(width);
@@ -28805,13 +28903,19 @@ function perpendicularVectors(width, dx0, dy0) {
28805
28903
  const [B, hB, hS] = hP >= hN ? [P, hP, hN] : [N, hN, hP];
28806
28904
  const den = 2 * (bh - hB + (bh - hS));
28807
28905
  const w = den === 0 ? 0 : (hB - hS) / den;
28808
- const off = width % 16 === 0 && width >= HOBBY_LIMIT ? FLAT_VECTOR_OFFSET[width / 16] : void 0;
28809
- const sgn = best < n / 2 ? 1 : -1;
28810
- const ox = off ? sgn * off[0] : 0;
28811
- const oy = off ? sgn * off[1] : 0;
28812
28906
  const r = (v) => 8 * Math.floor((v + 4) / 8);
28813
28907
  const x = D[0] + (B[0] - D[0]) * w, y = D[1] + (B[1] - D[1]) * w;
28814
- const vx = r(x + 0.5 * Math.sign(dy) + ox), vy = r(y + 0.5 * Math.sign(dx) + oy);
28908
+ let cx = 0.5 * Math.sign(dy), cy = 0.5 * Math.sign(dx);
28909
+ const table = width % 16 === 0 ? FLAT_SECTOR_BIAS[width / 16] : void 0;
28910
+ if (table) {
28911
+ const key = best * 2 + (hP >= hN ? 0 : 1);
28912
+ const pair = key === 0 ? table[1].slice(0, 2) : key >= table[0] ? table[2].slice((key - table[0]) * 2, (key - table[0]) * 2 + 2) : "..";
28913
+ if (pair[0] !== ".") {
28914
+ cx = sectorBias(pair.charCodeAt(0));
28915
+ cy = sectorBias(pair.charCodeAt(1));
28916
+ }
28917
+ }
28918
+ const vx = r(x + cx), vy = r(y + cy);
28815
28919
  return { v: flip ? [-vx, -vy] : [vx, vy], ray: flip ? [-x, -y] : [x, y] };
28816
28920
  }
28817
28921
  function squareExtension(width, dx, dy) {
package/dist/index.js CHANGED
@@ -28729,7 +28729,105 @@ var HOBBY = [
28729
28729
  [[8, -48], [-8, -48], [-24, -40], [-40, -24], [-48, -8], [-48, 8], [-40, 24], [-24, 40], [-8, 48], [8, 48], [24, 40], [40, 24], [48, 8], [48, -8], [40, -24], [24, -40]]
28730
28730
  ];
28731
28731
  var HOBBY_LIMIT = 104;
28732
- var FLAT_VECTOR_OFFSET = { 7: [0, 0.5], 8: [0, 0.5], 9: [0.5, 0.5], 10: [0.5, 0] };
28732
+ var FLAT_SECTOR_BIAS = {
28733
+ 7: [9, "cf..", "edededEdcDcdcd"],
28734
+ 8: [9, "dFee", "ededededbdbdbd"],
28735
+ 9: [9, "df..", "ddddddddbDbdbd"],
28736
+ 10: [9, "de..", "dededeDebEbebE"],
28737
+ 11: [9, "ce..", "eeeeeeEececece"],
28738
+ 12: [13, "ce..", "eeeeeeeeeeeececEcecece"],
28739
+ 13: [17, "ce..", "eeeeededdddddeDebebebdbdcdcdce"],
28740
+ 14: [17, "df..", "ddedeeeededeeeedcDcebebecececd"],
28741
+ 15: [17, "dF..", "ddedeeeeeeeedeDdbdbecececececd"],
28742
+ 16: [17, "ce..", "eeeededededeeeeececebebebebece"],
28743
+ 17: [17, "df..", "ddedededededdeddbdbebdbdbdbdcd"],
28744
+ 18: [17, "de..", "deeededeededeeEdcDcecdcdbebece"],
28745
+ 19: [17, "cf..", "ededeeeedddddeDebEbecdcdbebecd"],
28746
+ 20: [17, "ce..", "eeeeddddeeeeddDdbdbdcecebdbdce"],
28747
+ 21: [17, "dF..", "ddddededededddDdbdbdcdcdcdcdbd"],
28748
+ 22: [17, "ce..", "eeeededeeeeedeDebebececebebece"],
28749
+ 23: [17, "cf..", "edededededededEdcDcdcdcdcdcdcD"],
28750
+ 24: [17, "dF..", "ddddddddddddddDdbdbdbdbdbdbdbd"],
28751
+ 25: [17, "cE..", "eeeeededededeeEecEcecdcdcdcdce"],
28752
+ 26: [17, "cf..", "ededdedeededdedebEbecdcdbebecd"],
28753
+ 27: [17, "de..", "dedeededdedeededcDcdbebecdcdbe"],
28754
+ 28: [17, "cf..", "ededddddeeeedeDebEbebebecdcdcd"],
28755
+ 29: [17, "ce..", "eeeeeeeededededebebebebececece"],
28756
+ 30: [17, "dF..", "dddddedeeeeeedEdcdcdcecebebebd"],
28757
+ 31: [17, "de..", "dedeededededdeDebebecdcdcdcdbe"],
28758
+ 32: [17, "cf..", "ededdededdddeeeecEcebdbdbebecd"],
28759
+ 33: [17, "de..", "dedeeeeeededddDdbdbdcdcdcecebe"],
28760
+ 34: [17, "de..", "dedeeeeeddddedEdcdcdbdbdcecebe"],
28761
+ 35: [17, "cf..", "ededededdededeDebebebebecdcdcd"],
28762
+ 36: [17, "deee", "eeeeeeeeddddddDdcdcdcdcDbebebe"],
28763
+ 37: [17, "dF..", "dddddededededdDdbdbdcecececebd"],
28764
+ 38: [17, "ce..", "eeeeddddddddeeEececebdbdbdbdce"],
28765
+ 39: [17, "cF..", "ededddddddddededcdcdbdbDbdbdcd"],
28766
+ 40: [17, "de..", "dededededdddddddbdbdbdbdbebebe"],
28767
+ 41: [17, "ce..", "eeeeeeeeeeeeeeEececececececece"],
28768
+ 42: [17, "cf..", "ededeeeedddddedebebebdbdcececd"],
28769
+ 43: [17, "df..", "ddddeeeededeedEdcdcdbebececebd"],
28770
+ 44: [17, "cF..", "ededdedeededdeDebebecdcdbebecd"],
28771
+ 45: [17, "ce..", "eeeededededeeeeecEcebebebebece"],
28772
+ 46: [17, "dF..", "ddddededddddedEdcDcdcdcdbdbdbd"],
28773
+ 47: [17, "ce..", "dedededededededececececececece"],
28774
+ 48: [25, "cf..", "ededeeeeeeeeededeeeeeeEecececececdcdcececececd"],
28775
+ 49: [25, "cF..", "ededddddededeeeeededdeDebebecdcdcececdcdbdbdcd"],
28776
+ 50: [25, "ce..", "eeeeddddededdededededeDebebebebebEbecdcdbdbdce"],
28777
+ 51: [25, "ce..", "eeeeededddddeeeededeeeEececebebececebdbdcdcdce"],
28778
+ 52: [25, "ce..", "eeeededededeededededeeEecececdcdcdcdbebebebece"],
28779
+ 53: [25, "dF..", "ddedeeeedddddddddedeeeEdcdcebebebdbDbdbdcececd"],
28780
+ 54: [25, "dF..", "ddedddddededededdddddEDdbdbebdbdcdcdcdcdbdbdcd"],
28781
+ 55: [25, "dF..", "ddeddedeeeeeeeeedededeDdbdbebebebebebebebebecd"],
28782
+ 56: [25, "dE..", "deeeeeeeededeeeededeeEedcdcebebecececdcdcecece"],
28783
+ 57: [25, "de..", "deeedddddddddedeededeeEdcDcecDcdcececdcdbdbDce"],
28784
+ 58: [25, "dF..", "ddedddddeeeedddddedeeeEdcdcebebebdbdcecebdbdcd"],
28785
+ 59: [33, "cF..", "ededdedeededddddeeeeeeeedddddeDebebebdbdcecececebdbdcdcdbebecd"],
28786
+ 60: [33, "cf..", "ededeeeeededededddddeeeeeeeedeDebebececececebdbdcdcdcdcdcececd"],
28787
+ 61: [33, "ce..", "eeeeeeeeddddeeeeeeeeddddeeeeeeeececececebdbdcecececebdbdcecece"],
28788
+ 62: [33, "ce..", "eeeeddddeeeeededededeeeeddddeeEecEcebdbdcececdcdcdcdcecebdbdce"],
28789
+ 63: [33, "cf..", "ededededeeeededededeeeeeeeeeeeEececececececebebEbebecececdcdcd"],
28790
+ 64: [33, "cF..", "ededeeeedddddedeeeeededeeeeedeDebebececebebececebebebdbdcececd"],
28791
+ 65: [33, "df..", "ddedededededddddddddeeeeeeeedeDdbdbececececebdbdbdbdcdcdcdcdcd"],
28792
+ 66: [33, "de..", "deeeededdedeeeeedddddededddddeDdbdbebdbdbebecdcdbebebebecdcdce"],
28793
+ 67: [33, "de..", "deeeddddddddededdddddededdddeeEdcDcebdbdbebebdbdcdcdbdbdbdbdce"],
28794
+ 68: [33, "dE..", "deeeeeeeeeeeeeeeddddeeeeeeeeeeEdcdcececececebdbdcecececececece"],
28795
+ 69: [33, "df..", "ddedededdedeeeeeddddededededdeDdbdbecdcdcdcdbdbdcecebebecdcdcd"],
28796
+ 70: [33, "dF..", "ddeddddddddddddddededededddddeDdbdbebdbdbebebebebdbdbdbdbdbDcd"],
28797
+ 71: [33, "ce..", "eeeeddddeeeededeeeeededeededdeDebebecdcdbebececebebececebdbdce"],
28798
+ 72: [33, "ce..", "eeeededededeededededddddddddeeEececebdbdbdbdcdcdcdcdbebebebece"],
28799
+ 73: [33, "ce..", "eeeeededededddddededdedeeeeeeeEececececebebecdcdbdbdcdcDcdcdce"],
28800
+ 74: [33, "cf..", "ededddddededededededdededddddeDebebebdbdbebecdcDcdcdcdcdbdbdcd"],
28801
+ 75: [33, "cF..", "ededdededededdddddddeeeedddddeDebebebdbdcececdcdcdcdbebebebecd"],
28802
+ 76: [33, "ce..", "eeeeeeeeeeeeeeeeeeeededeeeeedeDebebececebebecececececececececE"],
28803
+ 77: [33, "ce..", "eeeeeeeedededddddededdddedededEdcDcdcdcdbdbdbebebdbdbebececece"],
28804
+ 78: [33, "de..", "dedeededdedededeeeeeeeeededeedEdcdcdbebececececebebebebecdcdbe"],
28805
+ 79: [33, "dF..", "ddddddddededdededdddeeeeedededEdcDcdcdcdcecebdbdbebecdcdbdbdbd"],
28806
+ 80: [33, "dF..", "dddddededdddeeeeddddddddededddDdbdbdcdcdbdbdbdbDcecebdbdbebEbd"],
28807
+ 81: [33, "de..", "dedeeeeeeeeededeededeeeedededdDdbdbdbebecececdcdbebececececebe"],
28808
+ 82: [33, "de..", "dedeededdedeededdedededeedededEdcdcdcdcdbebebebecdcdbebecdcDbe"],
28809
+ 83: [33, "de..", "dededededddddededdddeeeededeeeEececebebececebdbdbebebdbdbebebe"],
28810
+ 84: [33, "cF..", "ededddddeeeeddddeeeeeeeeededeeEecececdcdcecebebecdcdcecebdbdcd"],
28811
+ 85: [33, "cf..", "ededdddddededddddddddedeeeeedeDebebececebebebdbdbdbdbebebdbdcd"],
28812
+ 86: [33, "ce..", "eeeeededddddeeeeeeeedededededeDebebebebebebebebebebebdbdcdcdce"],
28813
+ 87: [33, "ce..", "eeeeddddeeeeddddddddeeeeddddeeeececebdbdcecebdbDbdbdcecebdbdce"],
28814
+ 88: [33, "ce..", "eeeedededdddeeeeededededededeeeecececdcdcdcdcdcdcecebdbdbebece"],
28815
+ 89: [33, "cF..", "ededeeeeddddddddededdedededeeeEecEcebebEbebecdcdbdbdbdbdcececd"],
28816
+ 90: [33, "dF..", "ddddededeeeeededeeeedededededdDdbdbdbebebEbecececdcdcececdcdbd"],
28817
+ 91: [33, "df..", "ddddeeeededededeededdddddededdDdbdbdbebebdbdcdcdbebebebececebd"],
28818
+ 92: [33, "de..", "dedededeededdddddededededdddedEdcdcdbdbdbebebebebdbdcdcdbebebe"],
28819
+ 93: [33, "de..", "dededddddddddedeededeeeeeeeeededcdcdcececececdcdbebebdbdbdbdbe"],
28820
+ 94: [33, "dF..", "ddddeeeeddddeeeeddddeeeededeedEdcDcdbebececebdbDcecebdbdcecebd"],
28821
+ 95: [33, "df..", "ddddddddededeeeedddddededdddddDdbdbDbdbdbebecdcdbebecdcdbdbdbd"],
28822
+ 96: [33, "cf..", "ededeeeededeeeeedededdddeeeedeDebebececebdbdbebececebebecececd"],
28823
+ 97: [33, "ce..", "eeeedededededededdddeeeedddddeDebebebdbdcEcebdbdbebebEbebebece"],
28824
+ 98: [33, "ce..", "eeeeededededeeeeeeeededededeeeEececebebebebecececececdcdcdcdce"],
28825
+ 99: [33, "cf..", "ededededddddddddddddededdedeeeEececebebecdcdbdbdbdbdbdbdcdcdcd"],
28826
+ 100: [33, "cf..", "ededdedeeeeededededeeeeeededdeDebebecdcdcecebebebebececebebecd"]
28827
+ };
28828
+ function sectorBias(code) {
28829
+ return code >= 97 ? (code - 97) / 2 - 1.5 : (code - 65) / 2 - 1.5 - 1 / 64;
28830
+ }
28733
28831
  var penCache = /* @__PURE__ */ new Map();
28734
28832
  function penPolygon(width) {
28735
28833
  const cached = penCache.get(width);
@@ -28808,13 +28906,19 @@ function perpendicularVectors(width, dx0, dy0) {
28808
28906
  const [B, hB, hS] = hP >= hN ? [P, hP, hN] : [N, hN, hP];
28809
28907
  const den = 2 * (bh - hB + (bh - hS));
28810
28908
  const w = den === 0 ? 0 : (hB - hS) / den;
28811
- const off = width % 16 === 0 && width >= HOBBY_LIMIT ? FLAT_VECTOR_OFFSET[width / 16] : void 0;
28812
- const sgn = best < n / 2 ? 1 : -1;
28813
- const ox = off ? sgn * off[0] : 0;
28814
- const oy = off ? sgn * off[1] : 0;
28815
28909
  const r = (v) => 8 * Math.floor((v + 4) / 8);
28816
28910
  const x = D[0] + (B[0] - D[0]) * w, y = D[1] + (B[1] - D[1]) * w;
28817
- const vx = r(x + 0.5 * Math.sign(dy) + ox), vy = r(y + 0.5 * Math.sign(dx) + oy);
28911
+ let cx = 0.5 * Math.sign(dy), cy = 0.5 * Math.sign(dx);
28912
+ const table = width % 16 === 0 ? FLAT_SECTOR_BIAS[width / 16] : void 0;
28913
+ if (table) {
28914
+ const key = best * 2 + (hP >= hN ? 0 : 1);
28915
+ const pair = key === 0 ? table[1].slice(0, 2) : key >= table[0] ? table[2].slice((key - table[0]) * 2, (key - table[0]) * 2 + 2) : "..";
28916
+ if (pair[0] !== ".") {
28917
+ cx = sectorBias(pair.charCodeAt(0));
28918
+ cy = sectorBias(pair.charCodeAt(1));
28919
+ }
28920
+ }
28921
+ const vx = r(x + cx), vy = r(y + cy);
28818
28922
  return { v: flip ? [-vx, -vy] : [vx, vy], ray: flip ? [-x, -y] : [x, y] };
28819
28923
  }
28820
28924
  function squareExtension(width, dx, dy) {
package/dist/index.mjs CHANGED
@@ -28727,7 +28727,105 @@ var HOBBY = [
28727
28727
  [[8, -48], [-8, -48], [-24, -40], [-40, -24], [-48, -8], [-48, 8], [-40, 24], [-24, 40], [-8, 48], [8, 48], [24, 40], [40, 24], [48, 8], [48, -8], [40, -24], [24, -40]]
28728
28728
  ];
28729
28729
  var HOBBY_LIMIT = 104;
28730
- var FLAT_VECTOR_OFFSET = { 7: [0, 0.5], 8: [0, 0.5], 9: [0.5, 0.5], 10: [0.5, 0] };
28730
+ var FLAT_SECTOR_BIAS = {
28731
+ 7: [9, "cf..", "edededEdcDcdcd"],
28732
+ 8: [9, "dFee", "ededededbdbdbd"],
28733
+ 9: [9, "df..", "ddddddddbDbdbd"],
28734
+ 10: [9, "de..", "dededeDebEbebE"],
28735
+ 11: [9, "ce..", "eeeeeeEececece"],
28736
+ 12: [13, "ce..", "eeeeeeeeeeeececEcecece"],
28737
+ 13: [17, "ce..", "eeeeededdddddeDebebebdbdcdcdce"],
28738
+ 14: [17, "df..", "ddedeeeededeeeedcDcebebecececd"],
28739
+ 15: [17, "dF..", "ddedeeeeeeeedeDdbdbecececececd"],
28740
+ 16: [17, "ce..", "eeeededededeeeeececebebebebece"],
28741
+ 17: [17, "df..", "ddedededededdeddbdbebdbdbdbdcd"],
28742
+ 18: [17, "de..", "deeededeededeeEdcDcecdcdbebece"],
28743
+ 19: [17, "cf..", "ededeeeedddddeDebEbecdcdbebecd"],
28744
+ 20: [17, "ce..", "eeeeddddeeeeddDdbdbdcecebdbdce"],
28745
+ 21: [17, "dF..", "ddddededededddDdbdbdcdcdcdcdbd"],
28746
+ 22: [17, "ce..", "eeeededeeeeedeDebebececebebece"],
28747
+ 23: [17, "cf..", "edededededededEdcDcdcdcdcdcdcD"],
28748
+ 24: [17, "dF..", "ddddddddddddddDdbdbdbdbdbdbdbd"],
28749
+ 25: [17, "cE..", "eeeeededededeeEecEcecdcdcdcdce"],
28750
+ 26: [17, "cf..", "ededdedeededdedebEbecdcdbebecd"],
28751
+ 27: [17, "de..", "dedeededdedeededcDcdbebecdcdbe"],
28752
+ 28: [17, "cf..", "ededddddeeeedeDebEbebebecdcdcd"],
28753
+ 29: [17, "ce..", "eeeeeeeededededebebebebececece"],
28754
+ 30: [17, "dF..", "dddddedeeeeeedEdcdcdcecebebebd"],
28755
+ 31: [17, "de..", "dedeededededdeDebebecdcdcdcdbe"],
28756
+ 32: [17, "cf..", "ededdededdddeeeecEcebdbdbebecd"],
28757
+ 33: [17, "de..", "dedeeeeeededddDdbdbdcdcdcecebe"],
28758
+ 34: [17, "de..", "dedeeeeeddddedEdcdcdbdbdcecebe"],
28759
+ 35: [17, "cf..", "ededededdededeDebebebebecdcdcd"],
28760
+ 36: [17, "deee", "eeeeeeeeddddddDdcdcdcdcDbebebe"],
28761
+ 37: [17, "dF..", "dddddededededdDdbdbdcecececebd"],
28762
+ 38: [17, "ce..", "eeeeddddddddeeEececebdbdbdbdce"],
28763
+ 39: [17, "cF..", "ededddddddddededcdcdbdbDbdbdcd"],
28764
+ 40: [17, "de..", "dededededdddddddbdbdbdbdbebebe"],
28765
+ 41: [17, "ce..", "eeeeeeeeeeeeeeEececececececece"],
28766
+ 42: [17, "cf..", "ededeeeedddddedebebebdbdcececd"],
28767
+ 43: [17, "df..", "ddddeeeededeedEdcdcdbebececebd"],
28768
+ 44: [17, "cF..", "ededdedeededdeDebebecdcdbebecd"],
28769
+ 45: [17, "ce..", "eeeededededeeeeecEcebebebebece"],
28770
+ 46: [17, "dF..", "ddddededddddedEdcDcdcdcdbdbdbd"],
28771
+ 47: [17, "ce..", "dedededededededececececececece"],
28772
+ 48: [25, "cf..", "ededeeeeeeeeededeeeeeeEecececececdcdcececececd"],
28773
+ 49: [25, "cF..", "ededddddededeeeeededdeDebebecdcdcececdcdbdbdcd"],
28774
+ 50: [25, "ce..", "eeeeddddededdededededeDebebebebebEbecdcdbdbdce"],
28775
+ 51: [25, "ce..", "eeeeededddddeeeededeeeEececebebececebdbdcdcdce"],
28776
+ 52: [25, "ce..", "eeeededededeededededeeEecececdcdcdcdbebebebece"],
28777
+ 53: [25, "dF..", "ddedeeeedddddddddedeeeEdcdcebebebdbDbdbdcececd"],
28778
+ 54: [25, "dF..", "ddedddddededededdddddEDdbdbebdbdcdcdcdcdbdbdcd"],
28779
+ 55: [25, "dF..", "ddeddedeeeeeeeeedededeDdbdbebebebebebebebebecd"],
28780
+ 56: [25, "dE..", "deeeeeeeededeeeededeeEedcdcebebecececdcdcecece"],
28781
+ 57: [25, "de..", "deeedddddddddedeededeeEdcDcecDcdcececdcdbdbDce"],
28782
+ 58: [25, "dF..", "ddedddddeeeedddddedeeeEdcdcebebebdbdcecebdbdcd"],
28783
+ 59: [33, "cF..", "ededdedeededddddeeeeeeeedddddeDebebebdbdcecececebdbdcdcdbebecd"],
28784
+ 60: [33, "cf..", "ededeeeeededededddddeeeeeeeedeDebebececececebdbdcdcdcdcdcececd"],
28785
+ 61: [33, "ce..", "eeeeeeeeddddeeeeeeeeddddeeeeeeeececececebdbdcecececebdbdcecece"],
28786
+ 62: [33, "ce..", "eeeeddddeeeeededededeeeeddddeeEecEcebdbdcececdcdcdcdcecebdbdce"],
28787
+ 63: [33, "cf..", "ededededeeeededededeeeeeeeeeeeEececececececebebEbebecececdcdcd"],
28788
+ 64: [33, "cF..", "ededeeeedddddedeeeeededeeeeedeDebebececebebececebebebdbdcececd"],
28789
+ 65: [33, "df..", "ddedededededddddddddeeeeeeeedeDdbdbececececebdbdbdbdcdcdcdcdcd"],
28790
+ 66: [33, "de..", "deeeededdedeeeeedddddededddddeDdbdbebdbdbebecdcdbebebebecdcdce"],
28791
+ 67: [33, "de..", "deeeddddddddededdddddededdddeeEdcDcebdbdbebebdbdcdcdbdbdbdbdce"],
28792
+ 68: [33, "dE..", "deeeeeeeeeeeeeeeddddeeeeeeeeeeEdcdcececececebdbdcecececececece"],
28793
+ 69: [33, "df..", "ddedededdedeeeeeddddededededdeDdbdbecdcdcdcdbdbdcecebebecdcdcd"],
28794
+ 70: [33, "dF..", "ddeddddddddddddddededededddddeDdbdbebdbdbebebebebdbdbdbdbdbDcd"],
28795
+ 71: [33, "ce..", "eeeeddddeeeededeeeeededeededdeDebebecdcdbebececebebececebdbdce"],
28796
+ 72: [33, "ce..", "eeeededededeededededddddddddeeEececebdbdbdbdcdcdcdcdbebebebece"],
28797
+ 73: [33, "ce..", "eeeeededededddddededdedeeeeeeeEececececebebecdcdbdbdcdcDcdcdce"],
28798
+ 74: [33, "cf..", "ededddddededededededdededddddeDebebebdbdbebecdcDcdcdcdcdbdbdcd"],
28799
+ 75: [33, "cF..", "ededdededededdddddddeeeedddddeDebebebdbdcececdcdcdcdbebebebecd"],
28800
+ 76: [33, "ce..", "eeeeeeeeeeeeeeeeeeeededeeeeedeDebebececebebecececececececececE"],
28801
+ 77: [33, "ce..", "eeeeeeeedededddddededdddedededEdcDcdcdcdbdbdbebebdbdbebececece"],
28802
+ 78: [33, "de..", "dedeededdedededeeeeeeeeededeedEdcdcdbebececececebebebebecdcdbe"],
28803
+ 79: [33, "dF..", "ddddddddededdededdddeeeeedededEdcDcdcdcdcecebdbdbebecdcdbdbdbd"],
28804
+ 80: [33, "dF..", "dddddededdddeeeeddddddddededddDdbdbdcdcdbdbdbdbDcecebdbdbebEbd"],
28805
+ 81: [33, "de..", "dedeeeeeeeeededeededeeeedededdDdbdbdbebecececdcdbebececececebe"],
28806
+ 82: [33, "de..", "dedeededdedeededdedededeedededEdcdcdcdcdbebebebecdcdbebecdcDbe"],
28807
+ 83: [33, "de..", "dededededddddededdddeeeededeeeEececebebececebdbdbebebdbdbebebe"],
28808
+ 84: [33, "cF..", "ededddddeeeeddddeeeeeeeeededeeEecececdcdcecebebecdcdcecebdbdcd"],
28809
+ 85: [33, "cf..", "ededdddddededddddddddedeeeeedeDebebececebebebdbdbdbdbebebdbdcd"],
28810
+ 86: [33, "ce..", "eeeeededddddeeeeeeeedededededeDebebebebebebebebebebebdbdcdcdce"],
28811
+ 87: [33, "ce..", "eeeeddddeeeeddddddddeeeeddddeeeececebdbdcecebdbDbdbdcecebdbdce"],
28812
+ 88: [33, "ce..", "eeeedededdddeeeeededededededeeeecececdcdcdcdcdcdcecebdbdbebece"],
28813
+ 89: [33, "cF..", "ededeeeeddddddddededdedededeeeEecEcebebEbebecdcdbdbdbdbdcececd"],
28814
+ 90: [33, "dF..", "ddddededeeeeededeeeedededededdDdbdbdbebebEbecececdcdcececdcdbd"],
28815
+ 91: [33, "df..", "ddddeeeededededeededdddddededdDdbdbdbebebdbdcdcdbebebebececebd"],
28816
+ 92: [33, "de..", "dedededeededdddddededededdddedEdcdcdbdbdbebebebebdbdcdcdbebebe"],
28817
+ 93: [33, "de..", "dededddddddddedeededeeeeeeeeededcdcdcececececdcdbebebdbdbdbdbe"],
28818
+ 94: [33, "dF..", "ddddeeeeddddeeeeddddeeeededeedEdcDcdbebececebdbDcecebdbdcecebd"],
28819
+ 95: [33, "df..", "ddddddddededeeeedddddededdddddDdbdbDbdbdbebecdcdbebecdcdbdbdbd"],
28820
+ 96: [33, "cf..", "ededeeeededeeeeedededdddeeeedeDebebececebdbdbebececebebecececd"],
28821
+ 97: [33, "ce..", "eeeedededededededdddeeeedddddeDebebebdbdcEcebdbdbebebEbebebece"],
28822
+ 98: [33, "ce..", "eeeeededededeeeeeeeededededeeeEececebebebebecececececdcdcdcdce"],
28823
+ 99: [33, "cf..", "ededededddddddddddddededdedeeeEececebebecdcdbdbdbdbdbdbdcdcdcd"],
28824
+ 100: [33, "cf..", "ededdedeeeeededededeeeeeededdeDebebecdcdcecebebebebececebebecd"]
28825
+ };
28826
+ function sectorBias(code) {
28827
+ return code >= 97 ? (code - 97) / 2 - 1.5 : (code - 65) / 2 - 1.5 - 1 / 64;
28828
+ }
28731
28829
  var penCache = /* @__PURE__ */ new Map();
28732
28830
  function penPolygon(width) {
28733
28831
  const cached = penCache.get(width);
@@ -28806,13 +28904,19 @@ function perpendicularVectors(width, dx0, dy0) {
28806
28904
  const [B, hB, hS] = hP >= hN ? [P, hP, hN] : [N, hN, hP];
28807
28905
  const den = 2 * (bh - hB + (bh - hS));
28808
28906
  const w = den === 0 ? 0 : (hB - hS) / den;
28809
- const off = width % 16 === 0 && width >= HOBBY_LIMIT ? FLAT_VECTOR_OFFSET[width / 16] : void 0;
28810
- const sgn = best < n / 2 ? 1 : -1;
28811
- const ox = off ? sgn * off[0] : 0;
28812
- const oy = off ? sgn * off[1] : 0;
28813
28907
  const r = (v) => 8 * Math.floor((v + 4) / 8);
28814
28908
  const x = D[0] + (B[0] - D[0]) * w, y = D[1] + (B[1] - D[1]) * w;
28815
- const vx = r(x + 0.5 * Math.sign(dy) + ox), vy = r(y + 0.5 * Math.sign(dx) + oy);
28909
+ let cx = 0.5 * Math.sign(dy), cy = 0.5 * Math.sign(dx);
28910
+ const table = width % 16 === 0 ? FLAT_SECTOR_BIAS[width / 16] : void 0;
28911
+ if (table) {
28912
+ const key = best * 2 + (hP >= hN ? 0 : 1);
28913
+ const pair = key === 0 ? table[1].slice(0, 2) : key >= table[0] ? table[2].slice((key - table[0]) * 2, (key - table[0]) * 2 + 2) : "..";
28914
+ if (pair[0] !== ".") {
28915
+ cx = sectorBias(pair.charCodeAt(0));
28916
+ cy = sectorBias(pair.charCodeAt(1));
28917
+ }
28918
+ }
28919
+ const vx = r(x + cx), vy = r(y + cy);
28816
28920
  return { v: flip ? [-vx, -vy] : [vx, vy], ray: flip ? [-x, -y] : [x, y] };
28817
28921
  }
28818
28922
  function squareExtension(width, dx, dy) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "emf-converter",
3
- "version": "4.6.5",
3
+ "version": "4.6.6",
4
4
  "description": "Convert EMF/WMF metafile binaries to PNG data URLs or SVG (markup, data URL, React/JSX)",
5
5
  "keywords": [
6
6
  "canvas",