@zsnout/ithkuil
Version:
A set of tools which can generate and parse romanized Ithkuil text and which can generate Ithkuil script from text and JSON data.
340 lines (339 loc) • 20.1 kB
JavaScript
import { jsx as _jsx } from "@zsnout/ithkuil-jsx/jsx-runtime";
// export const ONES = [
// "M -173.1567 -561.2241 l -13.196 10.598 c -10.38 34.61 -36.56 29.638 -46.074 67.713 l 16.006 -9.957 c 7.14 -49.75 33.962 -17.738 43.264 -68.354",
// "M -58.5052 -559.281 c 0 20.118 0.211 43.482 0.211 63.601 l -9.513 10.597 c -4.76 -5.408 -28.554 -20.766 -29.209 -3.457 l -11.245 8.436 c 2.38 -15.795 25.955 -26.393 40.454 -16.872 c 0 -11.034 -0.654 -39.159 -0.866 -50.186 l 10.168 -12.119",
// "M 77.9913 -559.2805 c 2.81 26.181 -56.46 31.589 0.43 62.734 l -9.513 10.387 c -4.542 -5.408 -30.934 -22.498 -28.554 -3.247 l -11.253 8.007 c 0.648 -18.604 16.661 -22.498 30.505 -17.09 c -36.342 -14.281 6.274 -30.934 8.436 -48.891 l 9.95 -11.9",
// "M 201.082 -559.28 c -0.866 19.907 -8.225 26.611 -23.801 35.694 c 18.604 8.655 21.632 11.464 24.012 27.906 l -9.513 10.598 c -16.442 -14.492 -29.857 -19.681 -29.209 -3.457 l -11.246 8.436 c 0.867 -25.526 30.287 -24.66 40.018 -17.738 c -1.732 -9.302 -19.47 -23.794 -30.286 -20.337 l 10.816 -8.654 c 21.203 -2.809 18.175 -11.246 19.041 -20.329 l 10.168 -12.119",
// "M 291.9338 -480.7513 l 9.731 -10.598 l 0 -28.342 c 7.14 -8.436 25.526 -3.247 34.18 -39.589 l -13.196 12.985 c -0.866 11.464 -2.169 19.034 -21.421 15.788 l -9.732 11.252 v 38.504",
// "M 460.0139 -559.2816 v 61.868 l -9.732 11.253 c -7.351 -2.38 -14.062 -10.387 -18.822 -17.738 v 13.196 l -9.302 8.865 l -0.43 -29.849 l 9.302 -11.464 c 6.056 16.872 14.492 20.766 19.252 22.062 c 0 -15.577 -0.218 -31.364 -0.218 -46.94 l 9.949 -11.253",
// "M 597.8088 -557.7667 c -0.43 15.576 -10.379 22.068 -18.386 29.42 c 45.644 20.337 4.324 68.361 -19.47 32.237 c 0 2.591 0 5.19 0.218 7.788 l -8.224 9.732 c 0 -6.274 -0.212 -22.28 -0.431 -28.554 l 8.436 -9.084 c 32.667 68.79 43.264 0.43 11.034 -7.359 c 8.218 -7.351 14.922 -7.999 16.872 -22.279 l 9.95 -11.901",
// "M 724.5739 -558.1961 l -8.873 10.386 v 28.336 c -12.977 -24.66 -32.011 -10.168 -34.391 43.046 l 11.464 -12.978 c 0.218 -39.799 0 -53.862 23.364 -7.351 l 8.436 -11.253 v -50.186",
// "M 845.9293 -513.8477 l -34.61 0.866 l 8.436 -7.788 c 17.738 -4.112 35.476 -7.14 36.342 -25.315 l 9.084 -9.513 c -3.028 24.442 -21.414 29.202 -34.828 34.61 l 34.61 -1.295 l -11.028 9.084 c -36.778 9.731 -31.37 17.956 -32.884 26.603 l -9.084 7.359 c 1.078 -11.464 1.944 -20.766 33.962 -34.61",
// "M 978.7496 -559.2799 l -1.085 57.974 c -8.436 37.427 -45.855 6.493 -26.603 -10.379 c -2.38 -0.866 -11.253 -10.387 -11.901 22.927 l -9.084 11.035 c 0.866 -30.287 11.246 -45.644 31.153 -40.236 c -20.118 14.062 9.084 58.403 8.647 9.083 l -0.43 -39.151 l 9.302 -11.253",
// ].map(center)
import { deepFreeze } from "../../generate/index.js";
import { Anchor, Diacritic, getBBox, Row, Translate, } from "../index.js";
// export const TENS = [
// "",
// "M 10 -27 v 16.224 c 7.57 2.38 17.09 5.626 21.85 17.308 l -6.492 8.436 c -6.704 -11.252 -14.71 -16.66 -24.878 -17.956 v -23.146 z",
// "M 1.732 0 c 1.514 8.007 -1.732 17.527 4.331 24.231 c 9.95 11.245 25.308 8.435 16.435 -4.113 l 10.168 -7.14 c 10.816 27.258 -38.504 25.963 -39.37 8.225 l -0.648 -20.337 c 5.409 -6.056 4.324 4.331 9.084 -0.866 z",
// "M 200.6447 -112.788 c 0.866 -3.464 -2.38 12.76 -6.274 7.133 c -2.162 4.112 0 6.493 -3.894 1.302 c 0 14.056 3.028 17.084 -10.816 15.788 l -7.788 7.358 l 22.934 14.922 l 9.084 -7.788 l -15.139 -9.95 c 7.133 -3.676 10.597 -10.598 11.893 -28.765 z",
// "M 312.4817 -96.9992 c 4.76 -11.9 0.655 12.33 8.436 -4.542 c 0.655 7.57 -2.162 9.084 16.224 15.576 l -32.23 19.034 l -2.38 -1.732 l 21.632 -13.408 c -7.788 -4.33 -11.893 -9.083 -11.682 -14.928 z",
// "M 446.8234 -100.8936 c 1.078 -1.944 4.971 3.028 8.436 -4.542 c 0 3.676 -0.436 7.57 -0.436 11.034 l -9.084 7.789 l -8.872 -0.655 c 8.436 4.978 17.738 9.957 22.287 18.174 l -8.225 6.922 c -4.542 -13.196 -25.956 -22.28 -38.286 -24.23 l 10.169 -7.134 l 23.793 -0.219 l 0.219 -7.14 z",
// "M 560.6037 -99.1624 c -1.078 -1.951 -3.676 3.894 -6.922 -3.465 v 18.175 l 23.582 -0.218 c -22.068 7.14 -27.906 19.47 -29.208 25.096 l 14.062 -11.034 c 0 -9.95 15.146 -12.33 21.202 -13.844 l 6.704 -6.704 l -29.631 0.648 l 0.211 -8.654 z",
// "M 710.0816 -95.486 l 0.212 8.873 c 54.517 8.647 -8.866 35.257 -28.984 18.167 l 7.352 -6.485 c 15.365 15.358 65.762 4.541 14.71 -4.331 v -13.844 c 3.894 -4.323 2.817 0.648 6.711 -2.38 z",
// "M 825.3836 -102.8372 l 0.43 14.71 c -8.218 -0.866 -38.722 19.252 -7.358 24.871 c 19.04 0.436 27.258 -10.816 28.342 -13.625 c -10.816 14.71 -63.382 -1.944 -21.85 -2.162 l 7.14 -9.52 l 0.219 -11.246 c -3.894 -5.626 -2.817 0.647 -6.922 -3.028 z",
// "M 938.951 -100.6768 c -4.112 5.408 -3.894 -4.76 -7.577 0.648 l 0.436 19.252 c 11.463 -17.091 34.18 1.295 11.245 19.688 l 0.648 1.514 c 25.096 -22.935 16.012 -42.187 -4.754 -30.723 v -10.379 z",
// ]
// export const HUNDREDS = [
// "",
// "M -63.4834 -310.2941 v -16.224 c -7.57 -2.38 -17.09 -5.626 -21.85 -17.301 l 6.492 -8.443 c 6.704 11.252 14.71 16.66 24.878 17.745 l 0.648 23.357 c -6.056 6.711 -4.761 -4.972 -10.168 0.866 z",
// "M 86.213 -309.8571 c -1.514 -8.007 1.732 -17.527 -4.323 -24.012 c -9.95 -11.253 -25.308 -8.654 -16.225 3.894 l -10.168 7.351 c -11.034 -27.469 38.286 -26.173 39.152 -8.217 l 0.655 20.118 c -5.408 6.056 -4.331 -4.331 -9.091 0.866 z",
// "M 187.666 -296.8792 c -0.866 3.246 2.38 -12.978 6.274 -7.14 c 1.944 -4.113 -0.218 -6.493 3.676 -1.514 c 0.218 -13.844 -2.81 -16.872 10.816 -15.795 l 7.788 -7.133 l -22.928 -15.147 l -9.09 8.007 l 15.146 9.731 c -7.14 3.683 -10.386 10.816 -11.682 28.991 z",
// "M 347.1001 -316.3496 c -4.978 11.901 -0.866 -12.33 -8.654 4.542 c -0.436 -7.57 2.162 -9.084 -16.224 -15.576 l 32.229 -19.034 l 2.381 1.732 l -21.632 13.626 c 7.788 4.112 11.9 8.873 11.9 14.71 z",
// "M 452.6621 -308.7805 c -1.085 1.951 -5.19 -3.028 -8.436 4.331 c 0 -3.465 0.218 -7.577 0.218 -11.035 l 9.303 -7.569 l 8.865 0.647 c -8.654 -4.979 -17.956 -9.95 -22.28 -18.175 l 8.007 -7.133 c 4.753 13.408 26.173 22.28 38.285 24.442 l -10.168 7.14 l -23.576 0.212 l -0.218 7.14 z",
// "M 578.7781 -308.9987 c 1.078 2.169 3.676 -3.887 6.922 3.465 v -18.168 l -23.583 0.43 c 22.069 -7.359 28.125 -19.688 29.202 -25.308 l -13.844 11.028 c 0 9.956 -15.358 12.329 -21.413 13.85 l -6.704 6.704 l 29.631 -0.647 l -0.211 8.647 z",
// "M 714.4049 -309.8571 l -0.218 -8.873 c -54.51 -8.654 8.872 -35.476 28.99 -18.167 l -7.358 6.485 c -15.14 -15.358 -65.756 -4.542 -14.71 4.331 l 0.218 13.844 c -4.105 4.323 -3.028 -0.648 -6.922 2.38 z",
// "M 838.7886 -306.8292 l -0.218 -14.71 c 8.006 0.866 38.511 -19.252 7.358 -25.097 c -19.252 -0.218 -27.476 11.034 -28.554 13.633 c 11.035 -14.71 63.601 2.162 21.851 2.373 l -7.141 9.52 l -0.218 11.253 c 4.112 5.408 3.028 -0.655 6.922 3.028 z",
// "M 962.5288 -306.8302 c 3.894 -5.408 3.676 4.76 7.352 -0.647 l -0.212 -19.259 c -11.682 17.09 -34.399 -1.297 -11.464 -19.682 l -0.655 -1.514 c -24.871 22.928 -16.005 42.18 4.979 30.716 v 10.387 z",
// ]
// export const THOUSANDS = [
// "",
// "M -85.5452 115.2068 l -9.739 8.654 h 33.962 l 9.302 -9.083 l -33.525 0.43 z",
// "M 44.0315 110.0187 l -5.845 4.331 c 0.655 27.251 32.237 22.061 31.801 -3.465 c -2.162 17.738 -20.33 32.448 -25.956 -0.866 z",
// "M 171.4414 100.4968 l -7.359 6.063 l 20.774 19.034 l 6.703 -6.274 l -20.118 -18.823 z",
// "M 313.9955 95.7455 l 7.14 6.056 l -20.329 19.033 l -6.711 -6.485 l 19.9 -18.604 z",
// "M 462.392 99.2031 l -11.246 7.788 h -21.632 l 23.576 12.33 l -6.922 7.788 c -12.112 -6.922 -21.196 -12.759 -33.096 -19.9 l 11.253 -7.788 l 38.067 -0.218 z",
// "M 568.825 98.7723 l -12.767 9.513 l 30.716 -0.647 l -22.28 18.604 l 1.514 1.951 l 36.124 -29.857 l -33.307 0.436 z",
// "M 684.7729 99.85 l 4.753 -6.704 c 29.857 0.866 24.012 35.476 -3.894 35.047 c 19.47 -2.38 35.694 -22.287 -0.859 -28.343 z",
// "M 827.972 120.6149 l -5.19 6.274 c -32.018 -0.866 -25.744 -33.962 4.113 -33.526 c -20.985 2.381 -38.293 21.415 1.077 27.252 z",
// "M 956.0351 116.9412 l 6.492 -4.76 c -0.647 -29.85 -35.257 -24.224 -34.828 3.894 c 2.38 -19.682 22.28 -35.906 28.336 0.866 z",
// ]
const ONES = [
[
"m 18.891777,34.850164 c 0,-1.01796 0.258017,-2.19412 0.821548,-3.11713 0.595263,-0.98592 1.262996,-1.33543 2.330981,-2.02217 2.148734,-1.12848 2.33785,-3.34238 2.338696,-5.401552 l -1.535291,1.535292 c 0,1.26951 -0.162683,1.60328 -0.472195,2.24073 -0.53998,1.19794 -1.364617,1.92886 -2.338549,2.72662 -0.863751,0.64921 -1.417842,1.10339 -2.055771,1.98282 -0.610444,0.94181 -0.624728,1.76058 -0.624728,3.59069 0.780734,-0.78074 0.84748,-0.84747 1.535309,-1.5353 z",
],
[
"m 62.751081,94.757678 c 0,-0.500024 0.729638,-1.501099 2.219664,-0.640832 l -0.490369,0.490369 C 64.254414,94.237477 63.24145,93.499657 63.24145,94.267309 Z",
"m 64.480376,91.390965 0.490369,-0.490369 v 3.21625 l -0.490369,0.490369 z",
],
[
"m 40.149028,99.609188 1.535292,-1.535301 c 0,-0.27959 -0.0048,-0.902348 0.759354,-1.013439 0.966803,-0.140452 3.286517,1.93898 3.286517,1.93898 l 0.01034,-1.816238 c -3.079817,-1.928663 -5.532688,0.127545 -5.591503,2.425998 z",
"m 46.426608,87.533035 -1.535299,1.535297 c 0,3.636318 -2.074936,3.551989 -2.701887,4.981926 -0.658987,1.66574 0.556235,1.964635 3.540769,4.94917 l 1.5353,-1.535291 c 0,0 -3.28447,-2.108094 -3.529301,-3.825736 -0.113019,-0.792872 0.255205,-1.180946 1.070838,-2.150825 0.815639,-0.96988 1.61958,-1.662187 1.61958,-3.954541 z",
],
[
"m 75.589369,94.267309 c 0,-0.84238 0.423762,-0.399371 1.152198,0.279895 0,0 0.0124,-0.138566 0.0124,-0.644921 C 75.55059,93.335247 75.099,93.925653 75.099,94.757678 Z",
"m 75.326575,92.983067 c 0.225283,-0.225283 0.264658,-0.272508 0.486629,-0.49448 0.917373,0 0.928363,-0.482572 0.928363,-1.097622 l 0.490369,-0.490369 c 0,0.929438 -0.373519,1.152687 -0.612567,1.391736 -0.361085,0.361084 -0.759178,0.690735 -1.292794,0.690735 z",
"m 75.32662,92.98307 0.486584,-0.494483 c 0.958211,0.300515 1.418732,0.931664 1.418732,1.568248 l -0.490369,0.490362 c -0.208678,-0.571778 0.0279,-1.228898 -1.414947,-1.564127 z",
],
[
"m 80.109856,92.318135 c 2.841678,0 2.903119,-1.061507 2.903119,-3.249803 l 1.535292,-1.535297 c 0,4.903627 -4.438411,6.304479 -5.957792,6.304479 0,0 1.519381,-1.038879 1.519381,-1.519379 z",
"m 78.574557,93.853431 1.535299,-1.535296 v 5.755752 l -1.535299,1.535301 z",
],
[
"m 87.535671,93.160649 0.49037,-0.490369 v 1.597029 l -0.490369,0.490369 z",
"m 88.831216,91.390965 0.490369,-0.490369 v 3.196973 l -0.490369,0.490369 z",
"m 88.02604,92.67028 c 0.169917,0.64138 1e-6,0.83702 1.295545,1.427289 l -0.49037,0.490368 c -0.577801,-0.437065 -1.095831,-0.90859 -1.295544,-1.427288 z",
],
[
"m 121.93185,89.068329 1.53528,-1.535297 c 0,3.758946 -2.02113,4.527463 -3.82969,5.751213 1.28926,-1.240588 2.29441,-1.441346 2.29441,-4.215916 z",
"m 116.42952,95.918373 c 1.22171,1.535678 1.76806,2.537312 3.41327,3.093179 3.23631,1.093438 6.86872,-3.451983 0.80711,-6.614812 l -1.01246,0.887517 c 3.84206,2.518643 3.21046,6.701992 0.96347,5.318214 -0.75696,-0.466167 -1.5293,-2.14945 -2.63611,-4.219379 z",
],
[
"m 135.94904,99.609188 1.53529,-1.535308 c 0,-7.259727 -0.0933,-5.882782 3.3991,-0.871062 l 1.5353,-1.535298 c -4.55941,-6.920872 -6.46969,-1.667888 -6.46969,3.941668 z",
"m 140.88343,89.068332 1.5353,-1.535297 v 8.134485 l -1.5353,1.535298 z",
],
[
"m 161.22848,94.467997 1.5353,-1.535302 h -6.65174 l -1.53531,1.535302 z",
"m 162.75361,87.533035 -1.5353,1.535297 c 0,3.255794 -2.17756,3.079604 -5.10627,3.864363 -0.40998,0.409965 -0.74365,0.743615 -0.74365,0.743615 3.91104,-1.04796 7.38522,-1.824556 7.38522,-6.143275 z",
"m 154.84536,99.609188 1.53529,-1.535301 c 0,-3.25579 1.87338,-2.775424 4.80213,-3.560182 0.40995,-0.409968 0.74361,-0.743614 0.74361,-0.743614 -3.91102,1.047959 -7.08103,1.520378 -7.08103,5.839097 z",
],
[
"m 178.03385,89.068332 1.53531,-1.535297 c 0,9.579865 0.35429,10.740714 -2.25505,11.719386 -2.26982,0.851349 -4.94475,-3.076254 -0.18631,-5.262107 -1.32791,2.299979 -2.06355,4.914589 -0.10453,4.914589 0.99522,0 1.01089,-3.921237 1.01089,-9.836571 z",
"m 176.04408,95.085243 c -1.67812,0 -2.08377,-0.235195 -2.08377,2.988677 l -1.53529,1.535268 c 0,-3.738708 1.33234,-5.618874 4.70265,-5.618874 -0.5471,0.547105 -0.47785,0.489199 -1.08359,1.094929 z",
],
];
/** Handwritten core shapes for numerals. */
export const HANDWRITTEN_ONES = /* @__PURE__ */ deepFreeze([
"M -20 35 c 0 -40 40 -30 40 -70",
"M -20 35 c 0 -15 20 -15 40 0 v -70",
"M -20 35 c 0 -20 40 0 40 0 c -70 -30 0 -50 0 -70",
"M -20 35 c 0 -15 20 -15 40 0 c 0 -30 -20 -35 -40 -35 c 30 0 40 -15 40 -35",
"M -20 35 v -35 c 30 10 40 -15 40 -35",
"M -20 35 v -35 c 0 20 15 35 40 35 v -70",
// alternate 6: "M -20 35 v -20 c 0 10 10 20 20 20 c 10 0 20 -10 20 -20 a 17.5 17.5 0 0 0 -17.5 -17.5 a 17.5 17.5 0 0 0 17.5 -17.5 v -15",
"M -20 35 v -27.5 c 0 15 7.5 27.5 20 27.5 c 12.5 0 20 -12.5 20 -27.5 a 17.5 17.5 0 0 0 -17.5 -17.5 a 17.5 17.5 0 0 0 17.5 -17.5 v -7.5",
"M -20 35 c 0 -20 10 -45 40 -35 v -35",
"M -20 35 c 0 -20 20 -35 40 -35 h -40 c 20 0 40 -15 40 -35",
"M -20 35 c 0 -30 20 -35 25 -30 c -15 0 -15 30 0 30 c 15 0 15 -15 15 -35 v -35",
]);
/** Handwritten hundreds extensions for numerals. */
export const HANDWRITTEN_HUNDREDS = /* @__PURE__ */ deepFreeze([
"",
"M 20 -35 c -30 0 -40 -15 -40 -15",
"M 20 -35 c 0 -30 -50 -30 -35 -15",
"M 20 -35 a 10 10 0 0 1 10 -10 c -15 -5 -15 -15 -15 -15",
"M 20 -35 a 10 10 0 0 0 -10 -10 c 15 -5 15 -15 15 -15",
"M 20 -35 h 30 c -22.5 0 -30 -15 -30 -15",
"M 20 -35 h -30 c 22.5 0 30 -15 30 -15",
"M 20 -35 a 20 10 0 1 1 10 -15",
"M 20 -35 a 20 10 0 1 0 -10 -15",
"M 20 -35 c -10 10 -20 -5 -10 -15",
]);
/** Handwritten tens extensions for numerals. */
export const HANDWRITTEN_TENS = /* @__PURE__ */ deepFreeze([
"",
"M -20 35 c 30 0 40 15 40 15",
"M -20 35 c 0 30 50 30 35 15",
"M -20 35 a -10 -10 0 0 1 -10 10 c 15 5 15 15 15 15",
"M -20 35 a -10 -10 0 0 0 10 10 c -15 5 -15 15 -15 15",
"M -20 35 h -30 c 22.5 0 30 15 30 15",
"M -20 35 h 30 c -22.5 0 -30 15 -30 15",
"M -20 35 a -20 -10 0 1 1 -10 15",
"M -20 35 a -20 -10 0 1 0 10 15",
"M -20 35 c 10 -10 20 5 10 15",
]);
/**
* Variants of the handwritten tens extensions for use when the ones digit is 1,
* 2, 3, 5, 6, or 9, to provide proper spacing.
*/
export const HANDWRITTEN_TENS_WITH_COLLISIONS = /* @__PURE__ */ deepFreeze([
"",
"M -20 35 v 5 c 30 0 40 15 40 15",
"M -20 35 c 0 30 50 30 35 15",
"M -20 35 a -10 -10 0 0 1 -10 10 c 15 5 15 15 15 15",
"M -20 35 a -10 -10 0 0 0 10 10 c -15 5 -15 15 -15 15",
"M -20 35 h -30 c 22.5 0 30 15 30 15",
"M -20 35 v 10 h 30 c -22.5 0 -30 15 -30 15",
"M -20 35 v 5 a -20 -10 0 1 1 -10 15",
"M -20 35 a -20 -10 0 1 0 10 15",
"M -20 35 v 5 c 10 -10 20 5 10 15",
]);
/** A special case for XX96 numerals, to provide proper spacing. */
export const HANDWRITTEN_96 = "M -20 35 v 10 c 10 -10 20 5 10 15";
/** A special case for XX76 and XX79 numerals, to provide proper spacing. */
export const HANDWRITTEN_76_79 = "M -20 35 v 10 a -20 -10 0 1 1 -10 15";
/** Handwritten thousands diacritics for numerals. */
export const HANDWRITTEN_THOUSANDS = /* @__PURE__ */ deepFreeze([
"",
"M 0 0 h 20",
"M 0 0 c 0 12 15 12 15 0",
"M 0 0 l 15 15",
"M 0 0 l -15 15",
"M 0 0 h -15 l 10 10",
"M 0 0 h 15 l -10 10",
"M 0 0 c 12 0 12 15 0 15",
"M 0 0 c -12 0 -12 15 0 15",
"M 0 0 c 0 -12 15 -12 15 0",
]);
/** The positions of handwritten thousands diacritics. */
export const HANDWRITTEN_THOUSANDS_POSITIONS = /* @__PURE__ */ deepFreeze([
// 0000s
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
// 1000s
[-13, -26],
[-13, -5],
[-20, -26],
[-13, -26],
[-15, -21],
[-13, -21],
[-13, -31],
[-13, -21],
[-16, -21],
[-13, -21],
// 2000s
[-10.5, -24.5],
[-10.5, -9.5],
[-15, -29],
[-10.5, -24.5],
[-10.5, -24.5],
[-10.5, -24.5],
[-10.5, -29.5],
[-10.5, -24.5],
[-13.5, -24.5],
[-10.5, -24.5],
// 3000s
[-10.5, -32.5],
[-10.5, -12.5],
[-15, -40],
[-13.5, -32.5],
[-13.5, -32.5],
[-10.5, -32.5],
[-10.5, -37.5],
[-10.5, -32.5],
[-13.5, -32.5],
[-10.5, -32.5],
// 4000s
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
// 5000s
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
// 6000s
[-10.5, -25],
[-10.5, -10],
[-15, -30],
[-10.5, -25],
[-10.5, -25],
[-10.5, -25],
[-10.5, -30],
[-10.5, -25],
[-13.5, -25],
[-10.5, -25],
// 7000s
[-7.5, -27.5],
[-7.5, -12.5],
[-9, -35],
[-7.5, -27.5],
[-7.5, -27.5],
[-7.5, -27.5],
[-7.5, -32.5],
[-7.5, -27.5],
[-10.5, -27.5],
[-7.5, -27.5],
// 8000s
[],
[],
[],
[],
[],
[],
[],
[],
[-1.5, -32.5],
[],
// 9000s
[-10.5, -20.5],
[-10.5, -0.5],
[-15, -25],
[-10.5, -20.5],
[-10.5, -20.5],
[-10.5, -20.5],
[-10.5, -25.5],
[-10.5, -15.5],
[-13.5, -20.5],
[-10.5, -20.5],
]);
/**
* Renders a numeral as a group of SVG paths.
*
* @param numeral Information about the numeral.
* @returns A group of SVG paths.
*/
export function Numeral(numeral) {
let value = Math.min(9999, Math.max(0, Math.round(Number(numeral.value))));
if (Number.isNaN(value)) {
value = 0;
}
const g = (_jsx("g", {}));
const ones = value % 10;
let tens = Math.floor(value / 10) % 10;
let hundreds = Math.floor(value / 100) % 10;
const thousands = Math.floor(value / 1000) % 10;
g.appendChild(_jsx("path", { d: HANDWRITTEN_ONES[ones] }));
if (tens == 9 && ones == 6) {
g.appendChild(_jsx("path", { d: HANDWRITTEN_96 }));
}
else if (tens == 7 && (ones == 6 || ones == 9)) {
g.appendChild(_jsx("path", { d: HANDWRITTEN_76_79 }));
}
else if (tens) {
g.appendChild(_jsx("path", { d: ((ones == 1 ||
ones == 2 ||
ones == 3 ||
ones == 5 ||
ones == 6 ||
ones == 9) ?
HANDWRITTEN_TENS_WITH_COLLISIONS
: HANDWRITTEN_TENS)[tens] }));
}
if (hundreds) {
g.appendChild(_jsx("path", { d: HANDWRITTEN_HUNDREDS[hundreds] }));
}
if (thousands) {
const children = (_jsx("path", { d: HANDWRITTEN_THOUSANDS[thousands] }));
const [x, y] = HANDWRITTEN_THOUSANDS_POSITIONS[10 * thousands + ones] || [
0, 0,
];
g.append(_jsx(Translate, { x: x, y: y, children: children }));
}
if (numeral.superposed) {
const box = getBBox(g);
const diacritic = (_jsx(Anchor, { at: "bc", x: box.x + box.width / 2, y: box.y - 10, children: _jsx(Diacritic, { handwritten: numeral.handwritten, name: numeral.superposed }) }));
g.appendChild(diacritic);
}
if (numeral.underposed) {
const box = getBBox(g);
const diacritic = (_jsx(Anchor, { at: "tc", x: box.x + box.width / 2, y: box.y + box.height + 10, children: _jsx(Diacritic, { handwritten: numeral.handwritten, name: numeral.underposed }) }));
g.appendChild(diacritic);
}
if (numeral.right) {
return (_jsx(Row, { compact: true, space: numeral.handwritten ? 15 : 10, intro: [...g.querySelectorAll("path")], children: _jsx(Anchor, { at: "cl", children: _jsx(Diacritic, { handwritten: numeral.handwritten, name: numeral.right }) }) }));
}
return g;
}