Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local function _W(f) local e=setmetatable({}, {__index = getfenv()}) return setfenv(f,e)() or e end
- local CommandGraphics=_W(function()
- local execAsync = commands.native.execAsync
- local floor, setmetatable, ipairs = math.floor, setmetatable, ipairs
- --- Collection of tables with default values
- local autoGet = {
- __index = function(self, key)
- local value = {}
- self[key] = value
- return value
- end
- }
- local autoGetParent = {
- __index = function(self, key)
- local value = setmetatable({}, autoGet)
- self[key] = value
- return value
- end
- }
- -- Creates a command
- return function(block)
- --- Create a 3D lookup table
- local drawn = setmetatable({}, autoGetParent)
- local function setBlock(x, y, z)
- x, y, z = floor(x), floor(y), floor(z)
- -- Check we haven't already drawn this
- local xDrawn = drawn[x]
- local yDrawn = xDrawn[y]
- if yDrawn[z] then
- return
- else
- yDrawn[z] = true
- end
- execAsync("setblock ~" .. x .. " ~" .. y .. " ~" .. z .. " " .. block)
- end
- local function clearBlocks()
- for x, row in pairs(drawn) do
- for y, column in pairs(row) do
- for z, _ in pairs(column) do
- execAsync("setblock ~" .. x .. " ~" .. y .. " ~" .. z .. " minecraft:air")
- end
- end
- end
- drawn = {}
- end
- local function setBlockType(b)
- block = b
- end
- return {
- setBlock = setBlock,
- clearBlocks = clearBlocks,
- setBlockType = setBlockType
- }
- end
- end)
- local DrawingAPI=_W(function()
- local abs, min = math.abs, math.min
- --- A drawing API that takes a pixel as the first argument
- return function(pixel)
- assert(pixel, "Pixel function must be specified")
- -- Shamelessly borrowed from cc internal source
- local function line(startX, startY, endX, endY)
- startX = startX
- startY = startY
- endX = endX
- endY = endY
- -- Ignore tiny lines
- if startX == endX and startY == endY then
- pixel(startX, startY)
- return
- end
- local minX = min(startX, endX)
- if minX == startX then
- minY = startY
- maxX = endX
- maxY = endY
- else
- minY = endY
- maxX = startX
- maxY = startY
- end
- local xDiff = maxX - minX
- local yDiff = maxY - minY
- if xDiff > abs(yDiff) then
- local y = minY
- local dy = yDiff / xDiff
- for x = minX, maxX do
- pixel(x, y + 0.5)
- y = y + dy
- end
- else
- local x = minX
- local dx = xDiff / yDiff
- if maxY >= minY then
- for y = minY, maxY do
- pixel(x + 0.5, y)
- x = x + dx
- end
- else
- for y = minY, maxY, -1 do
- pixel(x + 0.5, y)
- x = x - dx
- end
- end
- end
- end
- local bezier
- do
- -- This will probably not be that accurate. Meh
- local factorials = {
- [0] = 1.0,
- 1.0,
- 2.0,
- 6.0,
- 24.0,
- 120.0,
- 720.0,
- 5040.0,
- 40320.0,
- 362880.0,
- 3628800.0,
- 39916800.0,
- 479001600.0,
- 6227020800.0,
- 87178291200.0,
- 1307674368000.0,
- 20922789888000.0,
- 355687428096000.0,
- 6402373705728000.0,
- 121645100408832000.0,
- 2432902008176640000.0,
- 51090942171709440000.0,
- 1124000727777607680000.0,
- 25852016738884976640000.0,
- 620448401733239439360000.0,
- 15511210043330985984000000.0,
- 403291461126605635584000000.0,
- 10888869450418352160768000000.0,
- 304888344611713860501504000000.0,
- 8841761993739701954543616000000.0,
- 265252859812191058636308480000000.0,
- 8222838654177922817725562880000000.0,
- 263130836933693530167218012160000000.0,
- }
- local function factorial(n)
- return factorials[n] or error("0 <= n <= 32")
- end
- local function Ni(n, i)
- return factorial(n) / (factorial(i) * factorial(n - i));
- end
- local function bernstein(n, i, t)
- return Ni(n, i) * (t ^ i) * ((1 - t) ^ (n - i))
- end
- --- Draw a bezier curve.
- -- @tparam table points in the form {x1, y2, x2, y2, x3, y3, ...}
- -- @tparam int Number of points on the curve needed
- bezier = function(points, pointCount)
- pointCount = pointCount or 500
- local numberPoints = (#points / 2) - 1
- local step = 1 / (pointCount - 1)
- local t = 0
- for point = 1, pointCount do
- -- Prevent infinite loops or something I guess?
- if (1 - t) < 5e-6 then
- t = 1
- end
- local index = 1
- local x, y = 0, 0
- for i = 0, numberPoints do
- -- For each point do things
- local basis = bernstein(numberPoints, i, t)
- x = x + (basis * points[index])
- y = y + (basis * points[index + 1])
- index = index + 2
- end
- pixel(x, y)
- t = t + step
- end
- end
- end
- return {
- line = line,
- bezier = bezier,
- }
- end
- end)
- local TransformationChain=_W(function()
- local ipairs = ipairs
- local sin, cos, radians = math.sin, math.cos, math.rad
- return function(pixel)
- local root = pixel
- local chain = {}
- local bookmarks = {}
- --- Push a bookmark onto the stack.
- -- This is similar to as gl.pushMatrix()
- local function push()
- local chainLength = #chain
- local bookmarkLength = #bookmarks
- -- Can't do anything if nothing is set
- if chainLength == 0 or bookmarks[bookmarkLength] == chainLength then
- return
- end
- bookmarks[bookmarkLength + 1] = chainLength
- end
- --- Pop a bookmark from the stack
- -- This is similar to as gl.popMatrix()
- local function pop()
- local chainLength = #chain
- local bookmarkLength = #bookmarks
- local nextItem = bookmarks[bookmarkLength]
- bookmarks[bookmarkLength] = nil
- for i = chainLength, nextItem + 1, -1 do
- chain[i] = nil
- end
- end
- --- Add a transformation item
- local function add(item)
- chain[#chain + 1] = item
- end
- --- Passes the values through the chain
- local function pixel(x, y, z)
- for _, tranform in ipairs(chain) do
- x, y, z = tranform(x, y, z)
- end
- return root(x, y, z)
- end
- --- Passes the values through the chain
- local function pixel2d(x, y)
- return pixel(x, y, 0)
- end
- --[[
- Transformation factories
- ]]
- --- Create a scale transformation
- local function createScale(xScale, yScale, zScale)
- return function(x, y, z)
- return x * xScale, y * yScale, z * zScale
- end
- end
- --- Create a translate transformation
- local function createTranslate(xTranslate, yTranslate, zTranslate)
- return function(x, y, z)
- return x + xTranslate, y + yTranslate, z + zTranslate
- end
- end
- --- Create a rotation transformation
- local function createRotate(xRot, yRot, zRot)
- xSinT = sin(radians(xRot))
- xCosT = cos(radians(xRot))
- ySinT = sin(radians(yRot))
- yCosT = cos(radians(yRot))
- zSinT = sin(radians(zRot))
- zCosT = cos(radians(zRot))
- return function(x, y, z)
- if x == 0 and y ==0 and z == 0 then
- return 0, 0, 0
- end
- -- Handle Z rotation
- if zRot ~= 0 then
- -- Get original x and y
- local xo, yo = x, y
- -- Vertex positions
- x = zCosT * xo - zSinT * yo
- y = zSinT * xo + zCosT * yo
- end
- -- Handle Y rotation
- if y ~= 0 then
- -- Get original x and z
- local xo, zo = x, z
- x = yCosT * xo - ySinT * zo
- z = ySinT * xo + yCosT * zo
- end
- -- Handle X rotation
- if xRot ~= 0 then
- -- Get original y and z
- local yo, zo = y, z
- y = xCosT * yo - xSinT * zo
- z = xSinT * yo + xCosT * zo
- end
- return x, y, z
- end
- end
- --[[
- Tranformation additions
- ]]
- --- Add a scale tranformation
- local function scale(x, y, z)
- return add(createScale(x, y or x, z or x))
- end
- --- Add a translate tranformation
- local function translate(x, y, z)
- return add(createTranslate(x, y, z))
- end
- --- Add a rotate tranformation
- local function rotate(x, y, z)
- return add(createRotate(x, y, z))
- end
- --- @export
- return {
- push = push,
- pop = pop,
- pixel = pixel,
- pixel2d = pixel2d,
- add = add,
- scale = scale,
- translate = translate,
- rotate = rotate,
- }
- end
- end)
- local FontData=_W(function()
- return {
- [" "]={width = 612,height = 0,minx = 0,miny = 0,maxx = 0,maxy = 0,svg = ""},
- ["!"]={width = 487,height = 1671,minx = 120,miny = -66,maxx = 332,maxy = 1605,svg = "M 331 1516L 331 403Q 331 314 242 314Q 153 314 153 403Q 153 444 151 525Q 149 606 149 646Q 149 791 151 1080Q 153 1369 153 1514Q 153 1603 242 1603Q 331 1603 331 1514M 331 1603M 332 21Q 332-15 304-41Q 276-67 240-67Q 200-67 160-15Q 121 34 121 75Q 121 111 149 137Q 177 163 214 163Q 253 163 294 111Q 332 62 332 22M 332 62M 0-1"},
- ["\""]={width = 869,height = 660,minx = 116,miny = 928,maxx = 687,maxy = 1588,svg = "M 294 1116Q 294 1099 299 1067Q 304 1035 304 1019Q 304 982 277 958Q 250 934 212 934Q 116 934 116 1105Q 116 1171 119 1303Q 122 1435 122 1501Q 122 1540 147 1565Q 172 1590 211 1590Q 250 1590 275 1565Q 300 1540 300 1501Q 300 1437 297 1310Q 294 1183 294 1119M 294 1183M 687 1498Q 687 1482 684 1453Q 681 1424 681 1411L 672 1021Q 670 931 583 931Q 545 931 519 956Q 493 981 494 1019L 503 1416Q 505 1495 516 1527Q 537 1587 598 1587Q 637 1587 662 1562Q 687 1537 687 1499M 687 1537M 0 4"},
- ["#"]={width = 1726,height = 1604,minx = 32,miny = -28,maxx = 1706,maxy = 1576,svg = "M 552 577L 1052 577L 1165 992L 677 992M 365 577L 487 992L 220 992Q 125 992 125 1092Q 125 1168 273 1168L 537 1168Q 563 1284 616 1484Q 645 1576 733 1576Q 766 1576 787 1550Q 808 1524 808 1492Q 808 1452 782 1360Q 738 1201 731 1169L 1216 1169Q 1250 1290 1309 1492Q 1335 1577 1407 1577Q 1491 1577 1491 1499Q 1491 1431 1408 1169L 1603 1169Q 1705 1169 1705 1094Q 1705 989 1592 989Q 1577 989 1546 991Q 1515 993 1500 993L 1354 993L 1248 578L 1452 578Q 1525 578 1555 567Q 1607 547 1607 487Q 1607 395 1520 395L 1198 395L 1108 70Q 1081-27 996-27Q 914-27 914 52Q 914 111 947 224Q 993 381 996 395L 496 395Q 466 278 391 51Q 362-20 293-20Q 213-20 213 59Q 213 98 236 172Q 271 284 306 395L 115 395Q 32 395 32 494Q 32 533 66 557Q 95 578 136 578M 0 1"},
- ["$"]={width = 1420,height = 2117,minx = 155,miny = -396,maxx = 1281,maxy = 1721,svg = "M 643 887L 643 1246Q 444 1171 444 1014Q 444 917 643 887M 444 917M 821 676L 821 156Q 927 192 998 262Q 1077 342 1077 435Q 1077 609 821 676M 1077 609M 821 1636L 821 1467L 825 1467Q 921 1467 1044 1434Q 1205 1391 1205 1324Q 1205 1236 1116 1236Q 1076 1236 976 1257Q 876 1278 822 1277L 822 870Q 1043 850 1168 725Q 1282 609 1282 445Q 1282 244 1143 112Q 1020-4 822-41L 822-307Q 822-346 797-371Q 772-396 733-396Q 645-396 645-308L 645-53Q 157-46 157 200Q 157 290 240 290Q 287 290 330 253Q 394 198 427 181Q 507 141 645 135L 645 702L 637 702Q 482 708 369 778Q 229 864 229 1017Q 229 1154 357 1275Q 475 1387 645 1438L 645 1630Q 645 1669 671 1695Q 697 1721 736 1721Q 822 1721 822 1636M 822 1721M 1 0"},
- ["%"]={width = 1680,height = 1672,minx = 147,miny = -30,maxx = 1609,maxy = 1642,svg = "M 443 1041Q 303 1041 222 1138Q 147 1229 147 1370Q 147 1468 249 1557Q 347 1642 446 1642Q 591 1642 677 1546Q 759 1453 759 1307Q 759 1185 657 1110Q 566 1041 443 1041M 566 1041M 1234 1468Q 1197 1408 1155 1309L 1084 1147L 886 722L 662 250Q 631 173 561 23Q 533-30 486-30Q 453-30 427-7Q 401 16 401 51Q 401 66 407 84Q 456 219 565 437Q 694 694 733 786L 1003 1386Q 1057 1519 1102 1568Q 1133 1602 1166 1602Q 1200 1602 1226 1577Q 1252 1552 1252 1518Q 1252 1496 1234 1468M 1252 1496M 1260-19Q 1124-19 1034 62Q 940 147 940 283Q 940 431 1024 528Q 1112 632 1258 632Q 1394 632 1496 556Q 1609 471 1609 338Q 1609 185 1511 83Q 1413-19 1260-19M 1413-19M 443 1474Q 397 1474 357 1444Q 314 1411 314 1370Q 314 1290 346 1250Q 378 1210 442 1210Q 496 1210 540 1234Q 590 1262 590 1308Q 590 1392 553 1433Q 516 1474 442 1474M 516 1474M 1257 464Q 1185 464 1144 410Q 1107 360 1107 283Q 1107 216 1150 182Q 1193 148 1280 148Q 1360 148 1399 195Q 1438 242 1438 337Q 1438 395 1376 432Q 1322 463 1255 463M 1322 463M-3-1"},
- ["&"]={width = 1340,height = 1658,minx = 75,miny = -94,maxx = 1268,maxy = 1564,svg = "M 684 1084Q 812 1190 812 1294Q 812 1340 797 1362Q 782 1384 751 1384Q 733 1384 697 1321Q 661 1258 661 1237Q 661 1170 686 1084M 661 1170M 610 811Q 438 696 376 634Q 255 513 255 379Q 255 270 342 201Q 423 138 535 138Q 737 138 884 309Q 808 422 610 811M 808 422M 483 1237Q 483 1337 566 1447Q 655 1564 752 1564Q 866 1564 931 1484Q 992 1411 992 1294Q 992 1091 751 910Q 828 741 988 485Q 1008 540 1018 599Q 1034 701 1041 726Q 1067 808 1121 808Q 1163 808 1187 763Q 1207 726 1207 680Q 1207 477 1103 304Q 1270 42 1270-7Q 1270-43 1242-68Q 1214-93 1178-93Q 1133-93 1101-42L 986 157Q 785-39 536-39Q 349-39 217 76Q 78 196 78 380Q 78 574 225 733Q 310 825 535 975Q 484 1110 484 1238M 484 1110M 3 1"},
- ["'"]={width = 795,height = 520,minx = 284,miny = 1140,maxx = 472,maxy = 1660,svg = "M 462 1446Q 462 1416 467 1357Q 472 1298 472 1268Q 472 1140 382 1140Q 320 1140 303 1184Q 295 1207 295 1279Q 295 1307 290 1362Q 285 1417 285 1445Q 285 1545 293 1580Q 313 1659 381 1659Q 419 1659 445 1635Q 471 1611 471 1573Q 471 1552 467 1510Q 463 1468 463 1447M 463 1468M 1 1"},
- ["("]={width = 750,height = 2038,minx = 114,miny = -432,maxx = 696,maxy = 1606,svg = "M 696 1513Q 696 1478 634 1411Q 588 1365 543 1319Q 432 1193 369 959Q 314 755 314 558Q 314 50 544-187Q 590-223 637-259Q 695-305 695-350Q 695-383 669-407Q 643-431 609-431Q 579-431 537-408Q 114-171 114 582Q 114 853 223 1131Q 345 1440 543 1579Q 583 1607 606 1607Q 642 1607 669 1579Q 696 1551 696 1515M 696 1551M 0 2"},
- [")"]={width = 750,height = 2038,minx = 114,miny = -432,maxx = 696,maxy = 1606,svg = "M 696 581Q 696-172 272-409Q 231-432 201-432Q 167-432 141-408Q 115-384 115-351Q 115-306 173-260Q 219-224 266-188Q 496 49 496 557Q 496 754 441 958Q 377 1192 267 1318Q 221 1364 176 1410Q 114 1477 114 1512Q 114 1548 140 1576Q 166 1604 202 1604Q 225 1604 266 1576Q 464 1437 586 1128Q 695 850 695 579M 695 850M-1-2"},
- ["*"]={width = 1085,height = 813,minx = 47,miny = 781,maxx = 963,maxy = 1594,svg = "M 47 1315Q 47 1352 73 1381Q 99 1410 135 1410Q 159 1410 406 1313Q 398 1452 398 1505Q 398 1544 423 1569Q 448 1594 486 1594Q 525 1594 550 1569Q 575 1544 575 1505Q 575 1450 581 1336Q 821 1372 875 1372Q 912 1372 936 1346Q 960 1320 960 1282Q 960 1212 885 1196Q 815 1181 638 1160Q 696 1107 764 1024Q 853 914 853 871Q 853 835 825 809Q 797 783 761 783Q 723 783 692 819Q 631 901 493 1054Q 287 821 214 821Q 178 821 151 849Q 124 877 124 913Q 124 947 156 979Q 220 1033 342 1152Q 260 1178 102 1239Q 45 1264 45 1317M 45 1264M-2 2"},
- ["+"]={width = 984,height = 814,minx = 48,miny = 232,maxx = 913,maxy = 1046,svg = "M 913 643Q 913 606 889 579Q 865 552 828 552Q 816 552 792 556Q 768 560 755 560L 655 558Q 594 556 555 558L 555 323Q 555 233 466 233Q 422 233 400 255Q 378 277 378 322L 377 437L 376 553Q 255 546 205 546Q 50 546 50 638Q 50 703 105 719Q 124 724 205 724Q 255 724 376 731L 375 848Q 375 939 384 974Q 394 1010 415 1028Q 436 1046 469 1046Q 507 1046 533 1022Q 559 998 559 960Q 559 943 556 906Q 553 869 553 850L 554 736L 629 733Q 649 733 690 735Q 731 737 751 737Q 915 737 915 643M 915 737M 2 0"},
- [","]={width = 567,height = 486,minx = 198,miny = -344,maxx = 499,maxy = 142,svg = "M 285-344Q 250-344 224-317Q 198-290 198-255Q 198-226 260-83Q 314 41 343 94Q 369 142 412 142Q 448 142 473 115Q 498 88 498 53Q 498 29 356-289Q 333-343 284-343M 333-343M-1 1"},
- ["-"]={width = 853,height = 170,minx = 111,miny = 461,maxx = 758,maxy = 631,svg = "M 679 475Q 543 461 195 461Q 111 461 111 539Q 111 617 195 617Q 274 617 432 624Q 590 631 669 631Q 758 631 758 553Q 758 484 679 475M 758 484M 0 0"},
- ["."]={width = 510,height = 248,minx = 143,miny = -93,maxx = 391,maxy = 155,svg = "M 267-93Q 215-93 179-57Q 143-21 143 31Q 143 82 179 118Q 215 154 267 154Q 318 154 354 118Q 390 82 390 31Q 390-21 354-57Q 318-93 267-93M 318-93M 0 0"},
- ["\/"]={width = 1048,height = 1719,minx = 84,miny = -90,maxx = 971,maxy = 1629,svg = "M 177-90Q 140-90 112-65Q 84-40 84-3Q 84 13 91 31Q 169 246 385 650Q 601 1054 680 1270Q 811 1628 878 1625Q 915 1624 943 1599Q 971 1574 971 1538Q 971 1515 960 1483L 848 1211Q 781 1026 657 784L 439 370L 258-31Q 231-90 177-90M 231-90M 0 0"},
- ["0"]={width = 1250,height = 1594,minx = 61,miny = -39,maxx = 1179,maxy = 1555,svg = "M 611-39Q 307-39 167 239Q 61 453 61 796Q 61 1086 199 1302Q 362 1555 642 1555Q 905 1555 1052 1331Q 1179 1137 1179 858Q 1179 410 1037 186Q 895-38 611-38M 895-38M 641 1363Q 455 1363 346 1174Q 255 1016 255 813Q 255 484 344 319Q 433 154 611 154Q 823 154 915 396Q 979 564 979 822Q 979 1093 895 1228Q 811 1363 642 1363M 811 1363M 1 1"},
- ["1"]={width = 922,height = 1560,minx = 158,miny = -1,maxx = 801,maxy = 1559,svg = "M 704-1L 505-1L 307 0Q 237 0 209 9Q 158 27 158 85Q 158 186 315 186L 363 185L 404 183Q 404 231 396 325Q 388 419 388 466Q 388 593 411 852Q 433 1107 432 1239Q 298 1135 261 1135Q 221 1135 192 1165Q 163 1195 163 1234Q 163 1281 249 1348Q 303 1386 402 1470Q 490 1559 570 1559Q 637 1559 637 1482Q 637 1459 631 1414Q 625 1369 625 1346Q 625 1313 628 1246Q 631 1179 631 1146Q 631 1032 607 806Q 583 580 583 467Q 583 409 591 326Q 599 243 600 190L 705 192Q 747 192 774 165Q 801 138 801 97Q 801 55 774 28Q 747 1 705 1M 747 1M 1 2"},
- ["2"]={width = 1250,height = 1539,minx = 164,miny = -3,maxx = 1102,maxy = 1536,svg = "M 1008-2Q 983-2 938 13Q 893 28 869 28Q 818 28 716 22Q 614 16 562 16Q 523 16 447 6Q 371-4 332-4Q 321-4 300 0Q 279 4 268 4Q 199 4 178 71Q 166 106 166 191Q 166 424 293 566Q 351 631 606 806Q 749 904 797 959Q 883 1055 883 1184Q 883 1248 800 1298Q 727 1343 657 1343Q 565 1343 482 1290L 339 1178Q 296 1144 270 1144Q 167 1144 167 1226Q 167 1273 205 1307Q 322 1417 408 1466Q 529 1535 657 1535Q 819 1535 946 1447Q 1088 1348 1088 1193Q 1088 1091 1059 1005Q 1030 919 971 848Q 896 758 717 647Q 529 529 470 468Q 359 353 361 189L 567 208Q 779 220 870 220Q 946 220 1014 194Q 1104 159 1104 97Q 1104 58 1077 28Q 1050-2 1010-2M 1050-2M 2 0"},
- ["3"]={width = 1250,height = 1572,minx = 146,miny = -46,maxx = 1083,maxy = 1526,svg = "M 605-46Q 454-46 334 17Q 199 90 152 222Q 146 240 146 257Q 146 297 176 323Q 206 349 246 349Q 286 349 315 312L 361 243Q 397 194 458 170Q 519 146 604 146Q 713 146 795 214Q 882 286 882 390Q 882 541 771 631Q 673 709 511 726Q 400 737 400 816Q 400 875 487 906L 726 965Q 795 990 830 1032Q 865 1074 866 1135Q 868 1223 798 1277Q 725 1333 593 1333Q 525 1333 461 1300L 348 1229Q 315 1208 295 1208Q 255 1208 227 1238Q 199 1268 199 1307Q 199 1386 352 1459Q 485 1524 571 1524Q 786 1524 912 1429Q 1047 1327 1047 1138Q 1047 903 857 828Q 840 821 818 814Q 951 765 1017 668Q 1083 571 1083 425Q 1083 228 944 91Q 805-46 605-46M 805-46M 0 0"},
- ["4"]={width = 1250,height = 1586,minx = 48,miny = -26,maxx = 1189,maxy = 1560,svg = "M 964 437L 964 67Q 964-26 873-26Q 767-26 767 119Q 767 137 769 170Q 771 203 771 215L 770 442L 329 453Q 192 453 139 462Q 48 477 48 533Q 48 578 103 647L 189 749L 681 1467Q 748 1560 851 1560Q 964 1560 964 1462L 964 631Q 981 632 1005 632Q 1189 632 1189 533Q 1189 461 1113 442Q 1079 433 964 437M 1079 433M 770 1283Q 503 857 353 645L 770 635M 0 0"},
- ["5"]={width = 1250,height = 1607,minx = 126,miny = -63,maxx = 1153,maxy = 1544,svg = "M 562-63Q 278-63 144 147Q 126 176 126 203Q 126 242 157 270Q 188 298 227 298Q 268 298 305 254Q 358 190 385 172Q 450 128 562 128Q 735 128 849 260Q 958 386 958 563Q 958 709 910 800Q 848 915 719 915Q 612 915 544 886Q 490 863 435 807L 326 688Q 282 643 236 643Q 196 643 168 671Q 140 699 140 739Q 140 759 156 917Q 190 1232 190 1331Q 190 1366 173 1407Q 156 1448 156 1468Q 156 1529 261 1529Q 281 1529 321 1526Q 361 1523 381 1523Q 439 1523 555 1527Q 671 1531 729 1531Q 756 1531 811 1529Q 866 1527 893 1527Q 912 1527 948 1534Q 984 1541 1002 1541Q 1041 1541 1071 1512Q 1101 1483 1101 1445Q 1101 1333 864 1333Q 833 1333 786 1335Q 739 1337 729 1337L 560 1334L 391 1329Q 391 1284 354 996Q 491 1105 719 1105Q 939 1105 1055 933Q 1153 787 1153 561Q 1153 291 995 116Q 831-66 562-66M 831-66M 0-3"},
- ["6"]={width = 1250,height = 1628,minx = 111,miny = -72,maxx = 1109,maxy = 1556,svg = "M 597-72Q 336-72 213 119Q 111 276 111 538Q 111 1032 512 1395L 606 1490Q 675 1556 710 1556Q 750 1556 780 1528Q 810 1500 811 1461Q 813 1425 709 1322L 505 1123Q 424 1041 366 875Q 453 915 518 934Q 583 953 625 953Q 859 953 984 828Q 1109 703 1109 475Q 1109 236 974 85Q 833-72 597-72M 833-72M 597 749Q 511 749 443 719Q 417 707 312 642Q 306 589 306 538Q 306 359 366 246Q 442 102 603 102Q 754 102 837 210Q 914 310 914 475Q 914 612 835 680Q 756 748 597 748M 756 748M 0-1"},
- ["7"]={width = 1250,height = 1574,minx = 70,miny = -66,maxx = 1214,maxy = 1508,svg = "M 1154 1306L 1063 1200Q 933 1048 824 832L 642 433Q 623 389 558 202Q 506 54 461-19Q 433-66 381-66Q 341-66 311-38Q 281-10 281 29Q 281 67 345 224L 570 775Q 719 1102 876 1279L 895 1300L 393 1310L 168 1316Q 71 1325 71 1412Q 71 1454 99 1481Q 127 1508 169 1508Q 295 1508 547 1500Q 799 1492 925 1492L 1108 1492Q 1214 1492 1214 1429Q 1214 1382 1154 1306M 1214 1382M 0 0"},
- ["8"]={width = 1250,height = 1584,minx = 118,miny = -54,maxx = 1126,maxy = 1530,svg = "M 614-54Q 403-54 273 38Q 125 142 122 343Q 118 666 349 783Q 171 891 171 1090Q 171 1279 308 1404Q 439 1524 626 1526Q 1046 1530 1046 1111Q 1046 991 998 926Q 959 872 847 815Q 996 740 1056 653Q 1126 551 1126 372Q 1126 168 975 52Q 835-54 614-54M 835-54M 623 1347Q 494 1347 426 1274Q 365 1206 366 1090Q 367 950 596 891Q 716 926 768 961Q 851 1017 851 1111Q 851 1247 790 1302Q 738 1347 623 1347M 738 1347M 605 714Q 446 640 393 586Q 310 503 315 352Q 319 227 430 165Q 511 121 614 121Q 790 121 860 204Q 916 270 916 404Q 916 535 814 615Q 746 670 605 714M 746 670M 0 0"},
- ["9"]={width = 1250,height = 1631,minx = 112,miny = -95,maxx = 1156,maxy = 1536,svg = "M 784 121Q 711 67 550-9Q 371-95 301-95Q 260-95 234-65Q 208-35 208 5Q 208 64 276 94L 443 151Q 598 214 688 296Q 778 378 852 529L 895 615Q 839 583 751 556Q 663 529 608 529Q 419 529 281 634Q 113 762 113 998Q 113 1277 285 1417Q 432 1536 671 1536Q 855 1536 1001 1386Q 1155 1227 1156 1002Q 1157 748 1062 509Q 960 251 785 121M 960 251M 643 1365Q 475 1365 391 1278Q 307 1191 306 1016Q 306 869 409 788Q 500 717 638 717Q 718 717 805 765Q 845 787 949 864Q 962 951 962 1002Q 961 1127 857 1246Q 753 1365 645 1365M 753 1365M 3 0"},
- [":"]={width = 612,height = 1006,minx = 183,miny = 123,maxx = 414,maxy = 1129,svg = "M 414 226Q 414 181 385 152Q 356 123 311 123Q 266 123 238 152Q 209 181 209 226Q 209 245 203 281Q 197 317 197 335Q 197 377 228 405Q 259 433 302 433Q 414 433 414 225M 414 433M 397 955Q 397 910 369 881Q 341 852 296 852Q 251 852 222 881Q 193 910 193 955Q 193 967 189 991Q 185 1015 185 1028Q 185 1071 215 1099Q 245 1127 289 1127Q 399 1127 399 954M 399 1127M 2-2"},
- [";"]={width = 612,height = 1318,minx = 81,miny = -194,maxx = 411,maxy = 1124,svg = "M 411 950Q 411 906 382 877Q 353 848 309 848Q 265 848 236 877Q 207 906 207 950Q 207 963 202 987Q 197 1011 197 1023Q 197 1066 227 1094Q 257 1122 300 1122Q 410 1122 410 948M 410 1122M 170-196Q 80-196 80-102Q 80-37 166 90Q 255 222 313 222Q 349 222 377 195Q 405 168 405 132Q 405 96 335 14Q 263-72 258-111Q 248-196 170-196M 248-196M-1-2"},
- ["<"]={width = 781,height = 867,minx = 19,miny = 194,maxx = 627,maxy = 1061,svg = "M 298 614Q 354 573 436 487Q 533 386 569 355Q 605 324 605 287Q 605 250 578 222Q 551 194 515 194Q 487 194 459 215Q 419 244 288 381Q 188 486 95 522Q 19 550 19 605Q 19 655 88 688Q 181 733 292 850Q 447 1012 476 1036Q 505 1060 535 1060Q 571 1060 598 1033Q 625 1006 625 969Q 625 935 595 905Q 499 803 296 614M 499 803M-2 0"},
- ["="]={width = 1045,height = 723,minx = 99,miny = 276,maxx = 880,maxy = 999,svg = "M 324 999L 791 998Q 880 998 880 909Q 880 820 791 820L 323 821Q 300 821 255 819Q 210 817 188 817Q 149 817 125 843Q 101 869 101 907Q 101 979 185 995Q 207 1000 326 1000M 207 1000M 383 463Q 449 463 581 460Q 713 457 779 457Q 868 457 868 368Q 868 279 779 279Q 713 279 581 282Q 449 285 383 285Q 353 285 293 281Q 233 277 204 277Q 112 277 112 366Q 112 448 198 455Q 309 463 383 463M 309 463M 2 1"},
- [">"]={width = 781,height = 939,minx = 58,miny = 186,maxx = 736,maxy = 1125,svg = "M 736 663Q 736 627 699 592Q 461 371 200 204Q 172 186 147 186Q 111 186 85 214Q 59 242 59 278Q 59 318 98 348L 486 644Q 397 703 266 825Q 106 976 106 1034Q 106 1070 134 1097Q 162 1124 198 1124Q 235 1124 265 1090Q 493 835 678 739Q 737 709 737 662M 737 709M 1-1"},
- ["?"]={width = 1073,height = 1550,minx = 52,miny = -72,maxx = 961,maxy = 1478,svg = "M 371 308Q 330 308 299 339Q 268 370 268 410Q 268 479 396 580L 635 760Q 764 871 764 963Q 764 1079 655 1177Q 550 1272 432 1272Q 369 1272 272 1208Q 175 1144 152 1144Q 111 1144 82 1177Q 53 1210 53 1251Q 53 1330 206 1408Q 343 1478 433 1478Q 634 1478 798 1321Q 962 1164 962 964Q 962 818 868 705Q 812 637 660 529Q 507 418 447 349Q 412 308 372 308M 412 308M 317-72Q 273-72 238-43Q 203-14 203 28Q 203 90 236 140Q 273 196 331 196Q 427 196 427 78Q 427 23 401-21Q 369-73 318-73M 369-73M 2-1"},
- ["@"]={width = 1907,height = 1770,minx = 110,miny = -140,maxx = 1753,maxy = 1630,svg = "M 1306 412Q 1200 412 1123 443Q 1046 474 999 535Q 945 482 894 455Q 843 428 794 428Q 683 428 585 518Q 487 608 487 716Q 487 901 632 1054Q 777 1207 962 1207Q 1004 1207 1032 1176Q 1060 1145 1060 1101Q 1060 1041 960 1012Q 827 974 772 925Q 691 854 691 716Q 691 687 718 660Q 749 630 795 632Q 882 636 956 794Q 1023 932 1075 932Q 1117 932 1143 901Q 1169 870 1169 825Q 1169 805 1163 765Q 1157 725 1157 705Q 1157 640 1213 623Q 1235 616 1308 616Q 1445 616 1500 683Q 1550 743 1550 882Q 1550 1127 1353 1282Q 1173 1424 923 1424Q 632 1424 467 1204Q 318 1008 318 711Q 318 437 493 249Q 675 53 961 53Q 1042 53 1144 84L 1319 149Q 1363 165 1376 165Q 1417 165 1447 133Q 1477 101 1477 58Q 1477-37 1264-96Q 1103-140 963-140Q 822-140 675-86Q 528-32 423 59Q 113 327 113 711Q 113 1095 325 1353Q 550 1629 924 1629Q 1262 1629 1503 1426Q 1756 1211 1756 882Q 1756 657 1646 536Q 1531 411 1309 411M 1531 411M 3-1"},
- ["A"]={width = 1498,height = 1508,minx = 131,miny = -30,maxx = 1352,maxy = 1478,svg = "M 1250-30Q 1158-30 1090 206Q 1064 296 1025 521Q 923 507 758 471L 492 416Q 442 285 321 33Q 289-23 234-23Q 194-23 163 6Q 132 35 132 78Q 132 126 283 443Q 266 469 266 503Q 266 584 364 607Q 478 821 652 1099Q 889 1478 947 1478Q 1026 1478 1055 1368L 1118 1032L 1267 337L 1324 179Q 1353 98 1353 71Q 1353 28 1322-1Q 1291-30 1251-30M 1291-30M 898 1113L 612 652Q 733 683 979 727M 1 0"},
- ["B"]={width = 1291,height = 1619,minx = 191,miny = -48,maxx = 1208,maxy = 1571,svg = "M 886 40Q 661-48 311-48Q 268-48 230-8Q 192 32 192 75L 192 366Q 192 509 210 774Q 230 1060 232 1188Q 231 1280 243 1462Q 250 1512 276 1528Q 412 1570 585 1570Q 761 1570 923 1450Q 1110 1312 1110 1109Q 1110 852 910 704Q 1060 640 1134 562Q 1208 484 1208 392Q 1208 271 1077 158Q 986 78 886 39M 986 78M 584 1366Q 475 1366 431 1359L 429 1184L 409 797Q 551 785 561 786Q 712 798 808 880Q 911 969 911 1109Q 911 1204 806 1285Q 701 1366 584 1366M 701 1366M 696 565L 590 582Q 577 582 551 581Q 525 580 511 580Q 457 580 396 589Q 390 463 390 364L 390 157Q 652 166 817 231Q 887 258 951 315Q 1012 367 1012 393Q 1012 440 884 499Q 788 544 697 566M 788 544M 1 0"},
- ["C"]={width = 1234,height = 1547,minx = 90,miny = -24,maxx = 1203,maxy = 1523,svg = "M 1104 1122Q 1040 1122 1008 1197Q 980 1261 956 1275Q 935 1286 852 1286Q 707 1286 530 1064Q 290 766 290 499Q 290 370 373 277Q 458 181 578 181Q 681 181 785 234Q 843 264 963 352Q 1020 394 1049 394Q 1092 394 1121 362Q 1150 330 1150 290Q 1150 245 1112 211Q 848-23 578-23Q 371-23 228 136Q 90 290 90 500Q 90 839 374 1195Q 611 1492 852 1492Q 901 1492 940 1488Q 979 1484 1009 1474Q 1044 1525 1100 1525Q 1169 1525 1187 1434Q 1203 1353 1203 1235Q 1203 1194 1181 1163Q 1154 1124 1104 1124M 1154 1124M 0 2"},
- ["D"]={width = 1478,height = 1655,minx = 183,miny = -99,maxx = 1376,maxy = 1556,svg = "M 1076 7Q 921-99 631-99Q 558-99 464-76Q 351-49 294-6L 284-6Q 241-6 212 24Q 183 54 183 97Q 183 202 192 411Q 201 620 201 725Q 201 842 197 1074Q 193 1306 193 1423Q 193 1464 235 1509Q 277 1554 319 1554Q 343 1554 479 1487Q 633 1412 657 1404Q 941 1307 1141 1106Q 1376 869 1376 585Q 1376 414 1296 257Q 1216 100 1077 5M 1216 100M 867 1063Q 765 1130 396 1293L 401 1005L 404 718L 388 172Q 395 169 409 159Q 497 100 631 100Q 859 100 963 170Q 1060 236 1117 347Q 1174 458 1174 579Q 1174 861 866 1062M 1174 861M 0-3"},
- ["E"]={width = 1279,height = 1704,minx = 140,miny = -99,maxx = 1213,maxy = 1605,svg = "M 1115 1346Q 1101 1346 1084 1351Q 915 1399 758 1399Q 676 1399 579 1384Q 482 1369 370 1338Q 379 1273 379 1234Q 379 1095 362 852L 800 894Q 993 914 1037 914Q 1081 914 1111 886Q 1141 858 1141 811Q 1141 720 1049 709L 811 688L 349 646Q 345 575 343 512Q 341 449 341 394Q 341 173 373 134Q 397 106 530 106Q 592 106 716 109Q 840 112 903 112Q 923 112 962 118Q 1001 124 1020 124Q 1126 124 1126 20Q 1126-64 1041-81Q 947-100 634-100Q 324-100 236-18Q 140 71 140 392Q 140 456 143 532Q 146 608 151 696Q 140 719 140 745Q 140 779 159 806Q 179 1095 179 1233Q 179 1270 169 1341Q 159 1412 159 1449Q 159 1568 259 1568Q 301 1568 331 1539Q 451 1571 557 1587Q 663 1603 757 1603Q 1000 1603 1145 1545Q 1212 1518 1212 1449Q 1212 1409 1186 1378Q 1157 1344 1114 1344M 1157 1344M-1-2"},
- ["F"]={width = 1243,height = 1679,minx = 173,miny = -106,maxx = 1204,maxy = 1573,svg = "M 1106 1314Q 1088 1314 1068 1322Q 944 1368 740 1368Q 674 1368 586 1359Q 498 1350 388 1330L 386 898Q 579 949 676 949Q 830 949 995 931Q 1089 921 1089 829Q 1089 784 1060 755Q 1031 726 988 726Q 936 726 832 735Q 728 744 676 744Q 608 744 382 686L 373-2Q 373-45 345-74Q 317-103 274-103Q 231-103 203-74Q 175-45 175-2Q 175 195 182 589Q 189 983 189 1180Q 189 1224 188 1312Q 187 1400 187 1444Q 187 1488 214 1518Q 241 1548 285 1548Q 318 1548 344 1530Q 468 1552 567 1562Q 666 1572 741 1572Q 856 1572 1004 1539Q 1205 1493 1205 1419Q 1205 1379 1179 1348Q 1150 1313 1107 1313M 1150 1313M 1-1"},
- ["G"]={width = 1392,height = 1640,minx = 79,miny = -69,maxx = 1355,maxy = 1571,svg = "M 1300 605Q 1238 298 1040 115Q 842-68 572-68Q 326-68 203 69Q 80 206 80 481Q 80 740 202 1014Q 324 1288 516 1457Q 644 1570 787 1570Q 878 1570 1027 1510Q 1209 1438 1209 1351Q 1209 1310 1179 1278Q 1149 1246 1107 1246Q 1085 1246 1045 1271Q 892 1364 787 1364Q 712 1364 630 1286Q 589 1247 512 1144Q 281 838 281 480Q 281 292 339 217Q 402 135 571 135Q 750 135 882 248Q 1021 368 1076 591Q 799 577 601 484Q 578 473 556 473Q 512 473 483 507Q 456 538 456 579Q 456 634 509 667Q 725 799 1254 799Q 1297 799 1326 770Q 1355 741 1355 697Q 1355 632 1300 604M 1355 632M 0-1"},
- ["H"]={width = 1573,height = 1637,minx = 152,miny = -83,maxx = 1465,maxy = 1554,svg = "M 1456 1409Q 1441 1367 1441 1286Q 1441 1256 1443 1197Q 1445 1138 1445 1108Q 1445 1008 1428 810Q 1411 612 1411 512Q 1411 436 1422 284Q 1433 132 1433 55Q 1433 14 1406-14Q 1379-42 1338-42Q 1298-42 1270-14Q 1242 14 1242 55Q 1242 132 1231 284Q 1220 436 1220 512Q 1220 585 1225 660Q 1054 657 802 609L 382 527Q 382 437 364 272Q 346 107 346 16Q 346-25 319-53Q 292-81 251-81Q 210-81 183-53Q 156-25 156 16Q 156 122 173 332Q 190 542 190 648Q 190 703 186 814Q 182 925 182 981Q 182 1060 192 1218Q 202 1376 202 1455Q 202 1497 229 1525Q 256 1553 297 1553Q 338 1553 365 1525Q 392 1497 392 1455Q 392 1375 382 1216Q 372 1057 372 977L 378 724L 807 805Q 1064 853 1240 855Q 1251 998 1251 1286Q 1251 1362 1276 1440Q 1309 1547 1369 1547Q 1407 1547 1437 1520Q 1467 1493 1467 1451Q 1467 1436 1458 1410M 1467 1436M 2 1"},
- ["I"]={width = 1119,height = 1530,minx = 75,miny = -36,maxx = 1060,maxy = 1494,svg = "M 957 1246Q 893 1246 796 1259L 635 1280Q 612 989 612 724Q 612 654 616 551Q 620 448 620 378Q 620 284 613 207L 928 211Q 970 211 998 182Q 1026 153 1026 110Q 1026 66 998 37Q 970 8 928 8Q 872 8 760 6Q 648 4 592 4Q 526 4 395-14Q 264-32 197-32Q 155-32 127-3Q 99 26 99 69Q 99 112 127 142Q 155 172 197 172Q 262 172 412 193Q 422 274 422 378Q 422 447 416 546Q 410 645 410 713Q 410 944 438 1290L 308 1286L 178 1283Q 135 1283 106 1312Q 77 1341 77 1386Q 77 1479 171 1488Q 252 1496 474 1496Q 673 1496 973 1453Q 1062 1440 1062 1346Q 1062 1299 1028 1271Q 998 1248 959 1248M 998 1248M 2 2"},
- ["J"]={width = 1362,height = 1635,minx = 94,miny = -120,maxx = 1296,maxy = 1515,svg = "M 1197 1294Q 1179 1294 1136 1301Q 1093 1308 1069 1308Q 1020 1308 954 1305L 959 1186Q 959 442 860 103Q 794-121 629-121Q 455-121 284 5Q 95 145 95 326Q 95 449 196 449Q 297 449 297 328Q 297 245 415 163Q 528 85 629 85Q 711 85 743 588Q 758 826 758 1186Q 758 1214 753 1294L 692 1293Q 653 1293 575 1295Q 497 1297 457 1297Q 413 1297 383 1325Q 353 1353 353 1401Q 353 1504 492 1504Q 526 1504 593 1501Q 660 1498 693 1498Q 756 1498 881 1505Q 1006 1512 1069 1512Q 1297 1512 1297 1396Q 1297 1356 1270 1325Q 1241 1291 1198 1291M 1241 1291M 1-3"},
- ["K"]={width = 1251,height = 1641,minx = 214,miny = -110,maxx = 1243,maxy = 1531,svg = "M 1153-41Q 1001-41 720 226L 421 527L 421 513L 420-11Q 420-110 333-110Q 276-110 242-60Q 214-19 214 29Q 214 263 228 729Q 242 1195 242 1428Q 242 1471 270 1501Q 298 1531 340 1531Q 383 1531 411 1501Q 439 1471 439 1428Q 439 1331 427 1126Q 415 928 416 823Q 550 950 719 1142L 1006 1475Q 1040 1514 1082 1514Q 1122 1514 1153 1484Q 1184 1454 1184 1411Q 1184 1345 926 1059Q 748 864 558 677Q 678 551 934 315L 1039 227Q 1096 183 1162 161Q 1241 135 1241 62Q 1241 28 1220-3Q 1194-41 1151-41M 1194-41M-2 0"},
- ["L"]={width = 1128,height = 1635,minx = 101,miny = -93,maxx = 1089,maxy = 1542,svg = "M 1025 41Q 912-12 670-54Q 447-93 306-93Q 205-93 161-62Q 101-20 101 92L 121 423Q 147 881 147 1439Q 147 1482 175 1512Q 203 1542 245 1542Q 288 1542 316 1512Q 344 1482 344 1439Q 344 874 317 411L 304 259Q 296 176 298 112Q 559 109 958 235Q 975 240 990 240Q 1033 240 1062 206Q 1087 175 1087 135Q 1087 71 1023 41M 1087 71M-2 0"},
- ["M"]={width = 1808,height = 1617,minx = 112,miny = -83,maxx = 1731,maxy = 1534,svg = "M 1625-83Q 1571-83 1536-27Q 1506 21 1482 133L 1446 305Q 1405 465 1316 1011L 1116 408L 1057 218Q 1021 105 982 33Q 940-43 869-43Q 810-43 776 21Q 754 63 736 128L 707 239Q 606 592 529 995L 493 816L 364 288Q 356 195 314 13Q 284-65 215-65Q 166-65 137-30Q 112 0 112 44Q 112 211 181 454L 291 857L 349 1172Q 393 1393 442 1461Q 482 1519 541 1519Q 606 1519 638 1445Q 677 1356 722 1082Q 775 753 887 370Q 1035 755 1143 1172L 1173 1318Q 1191 1406 1220 1460Q 1259 1534 1327 1534Q 1413 1534 1458 1368Q 1474 1311 1497 1132Q 1556 680 1644 360L 1693 188Q 1731 50 1731 18Q 1731-25 1699-54Q 1667-83 1626-83M 1667-83M 1 0"},
- ["N"]={width = 1632,height = 1630,minx = 123,miny = -79,maxx = 1547,maxy = 1551,svg = "M 1541 222Q 1541 174 1525 62Q 1509-39 1418-39Q 1363-39 1287 33Q 880 418 353 1144L 348 917L 345 689Q 345 606 348 440Q 351 274 351 190Q 351-79 247-79Q 192-79 160-44Q 131-13 131 30Q 131 72 137 157Q 143 242 143 284Q 143 346 147 469Q 151 592 151 654Q 151 720 148 853Q 145 986 145 1052Q 145 1115 133 1239Q 121 1363 121 1426Q 121 1472 160 1510Q 199 1548 249 1548Q 302 1548 380 1432Q 629 1059 828 812Q 1065 519 1348 252Q 1351 295 1348 379L 1345 505Q 1345 944 1311 1204Q 1307 1230 1284 1309Q 1264 1377 1264 1415Q 1264 1531 1370 1531Q 1544 1531 1544 882Q 1544 771 1541 551Q 1538 331 1538 220M 1538 331M-3-2"},
- ["O"]={width = 1635,height = 1576,minx = 116,miny = -61,maxx = 1548,maxy = 1515,svg = "M 802-61Q 520-61 324 108Q 116 288 116 572Q 116 918 321 1201Q 550 1515 892 1515Q 1221 1515 1381 1367Q 1548 1213 1548 881Q 1548 535 1360 257Q 1144-61 802-61M 1144-61M 892 1310Q 647 1310 477 1066Q 320 842 320 572Q 320 379 463 258Q 600 144 802 144Q 1045 144 1203 389Q 1344 608 1344 881Q 1344 1120 1237 1217Q 1135 1310 892 1310M 1135 1310M 0 0"},
- ["P"]={width = 1066,height = 1595,minx = 100,miny = -24,maxx = 1005,maxy = 1571,svg = "M 413 587Q 385 587 291 600Q 283 449 283 71Q 283 31 257 4Q 231-23 192-23Q 152-23 126 4Q 100 31 100 71L 100 365Q 100 512 118 779Q 138 1068 140 1193L 140 1331Q 140 1430 152 1475Q 175 1563 250 1551Q 282 1561 341 1566Q 400 1571 486 1571Q 669 1571 829 1446Q 1005 1308 1005 1114Q 1005 866 817 719Q 649 587 413 587M 649 587M 463 1381Q 419 1381 385 1379Q 351 1377 327 1373L 325 1189L 304 791L 414 778Q 582 778 697 863Q 823 956 823 1114Q 823 1226 703 1307Q 592 1381 464 1381M 592 1381M 1 0"},
- ["Q"]={width = 1795,height = 1953,minx = 77,miny = -438,maxx = 1750,maxy = 1515,svg = "M 1646-438Q 1602-438 1409-267L 1170-48Q 1001-116 835-116Q 534-116 306 124Q 78 364 78 667Q 78 1024 344 1273Q 604 1515 959 1515Q 1333 1515 1526 1235Q 1690 995 1690 614Q 1690 283 1366 57L 1584-144L 1713-254Q 1751-290 1751-332Q 1751-373 1721-405Q 1691-437 1648-437M 1691-437M 960 1309Q 686 1309 488 1126Q 284 938 284 668Q 284 449 453 272Q 623 92 837 92Q 906 92 979 109Q 786 277 786 374Q 786 418 818 447Q 850 476 890 476Q 938 476 975 428Q 1074 299 1199 197Q 1484 363 1484 615Q 1484 912 1363 1097Q 1225 1309 959 1309M 1225 1309M 1 1"},
- ["R"]={width = 1287,height = 1576,minx = 117,miny = -35,maxx = 1228,maxy = 1541,svg = "M 1126-11Q 1088-11 1055 21Q 724 348 319 461L 327 265L 332 68Q 332 24 304-5Q 276-34 233-34Q 190-34 162-5Q 134 24 134 68Q 134 147 127 303Q 120 459 120 538Q 120 630 140 812Q 160 994 160 1085Q 160 1136 151 1236Q 142 1336 142 1387Q 142 1444 174 1487Q 212 1540 279 1535L 520 1516Q 657 1499 751 1449Q 1156 1234 1156 924Q 1156 772 1018 655Q 907 561 741 512Q 1052 345 1206 160Q 1232 128 1232 92Q 1232 50 1202 19Q 1172-12 1131-12M 1172-12M 494 1310L 346 1322L 356 1201Q 363 1127 363 1080Q 363 1000 350 881L 329 682Q 343 682 372 681Q 401 680 416 680Q 671 680 798 748Q 854 779 902 829Q 955 885 955 924Q 955 1063 797 1183Q 652 1293 493 1310M 652 1293M 4-1"},
- ["S"]={width = 1420,height = 1524,minx = 133,miny = -57,maxx = 1321,maxy = 1467,svg = "M 134 249Q 133 291 162 317Q 191 343 234 343Q 283 343 320 287Q 371 211 411 184Q 496 128 658 128Q 813 128 946 195Q 1116 281 1116 434Q 1116 560 973 633Q 852 696 674 701Q 516 707 405 770Q 263 851 263 1002Q 263 1180 465 1327Q 658 1466 864 1466Q 961 1466 1083 1433Q 1245 1390 1245 1323Q 1245 1235 1155 1235Q 1115 1235 1015 1256Q 915 1277 860 1276Q 704 1274 595 1199Q 483 1122 483 1012Q 483 929 631 895Q 686 882 844 871Q 1073 854 1202 727Q 1320 611 1320 444Q 1320 206 1100 64Q 909-59 657-59Q 474-59 322 11Q 136 97 133 247M 136 97M-1-2"},
- ["T"]={width = 1392,height = 1526,minx = 116,miny = -8,maxx = 1463,maxy = 1518,svg = "M 1362 1263Q 1288 1263 1134 1275Q 984 1286 906 1285L 835 1285Q 838 1147 862 837Q 884 548 884 388Q 884 353 891 282Q 898 211 898 175Q 898 107 876 58Q 848-8 789-8Q 749-8 717 20Q 685 48 685 92Q 685 107 690 137Q 695 167 695 182Q 695 231 689 329Q 683 427 683 477Q 683 620 660 879Q 636 1159 633 1281L 542 1280Q 323 1280 198 1312Q 117 1333 117 1411Q 117 1452 143 1483Q 173 1518 220 1515Q 255 1513 380 1497Q 480 1485 542 1485Q 602 1485 724 1487Q 846 1489 906 1489Q 983 1489 1134 1478Q 1285 1467 1362 1467Q 1405 1467 1434 1438Q 1463 1409 1463 1365Q 1463 1322 1434 1293Q 1405 1264 1362 1264M 1405 1264M 0 1"},
- ["U"]={width = 1509,height = 1543,minx = 155,miny = -40,maxx = 1389,maxy = 1503,svg = "M 790-40Q 479-40 326 139Q 202 283 170 565Q 155 692 155 1072Q 155 1212 161 1298Q 167 1389 179 1425Q 204 1498 269 1498Q 361 1498 361 1329L 361 742Q 361 136 785 136Q 1184 136 1184 1156Q 1184 1194 1184 1254Q 1183 1314 1183 1334Q 1183 1396 1205 1443Q 1233 1503 1288 1503Q 1388 1503 1388 1366Q 1388 1325 1389 1242Q 1389 1159 1389 1118Q 1389-40 790-40M 1389-40M 0 0"},
- ["V"]={width = 1331,height = 1615,minx = 145,miny = -80,maxx = 1326,maxy = 1535,svg = "M 1306 1371Q 1244 1278 1205 1176L 1129 957L 860 230Q 813 102 750-20Q 718-80 660-80Q 583-80 552-2Q 431 302 283 873L 204 1148Q 145 1356 145 1420Q 145 1465 177 1494Q 206 1521 247 1521Q 323 1521 345 1439L 382 1265L 478 925Q 574 553 665 284L 671 300L 939 1026L 1024 1271Q 1081 1419 1145 1495Q 1178 1535 1223 1535Q 1263 1535 1294 1505Q 1325 1475 1325 1432Q 1325 1402 1305 1372M 1325 1402M-1 1"},
- ["W"]={width = 2129,height = 1622,minx = 139,miny = -96,maxx = 2096,maxy = 1526,svg = "M 1423-96Q 1377-96 1342-70Q 1302-40 1302 4Q 1256 125 1244 201Q 1232 277 1165 632Q 1114 901 1097 1064Q 1008 734 906 505Q 788 240 753 90Q 765 67 765 45Q 765 0 725-29Q 689-56 643-56Q 508-56 508 65L 477 192L 368 682Q 303 930 146 1393Q 139 1415 139 1433Q 139 1526 244 1526Q 309 1526 344 1455Q 362 1419 417 1248Q 476 1067 535 812L 632 370Q 739 618 845 974Q 910 1191 944 1275Q 1034 1496 1119 1496Q 1189 1496 1218 1425Q 1254 1339 1291 1015Q 1311 851 1359 621L 1445 228Q 1579 550 1780 1099Q 1791 1129 1830 1288Q 1859 1405 1901 1470Q 1937 1525 1995 1525Q 2096 1525 2096 1425Q 2096 1408 2064 1325L 2024 1217L 1969 1039L 1672 317Q 1631 198 1531-29Q 1495-96 1423-96M 1495-96M 0 0"},
- ["X"]={width = 1482,height = 1605,minx = 68,miny = -84,maxx = 1406,maxy = 1521,svg = "M 1379 1349Q 1245 1187 1173 1082L 1048 898Q 975 794 911 723L 1131 401Q 1262 210 1364 89Q 1391 56 1391 20Q 1391-22 1361-53Q 1331-84 1289-84Q 1251-84 1218-53Q 1144 17 1064 137L 930 343L 773 568L 429 170L 245-36Q 212-69 172-69Q 131-69 100-38Q 69-7 69 35Q 69 71 95 103L 275 304L 650 739Q 540 886 416 1034L 300 1191Q 230 1285 170 1335Q 128 1370 128 1416Q 128 1457 157 1489Q 186 1521 229 1521Q 314 1521 446 1340Q 487 1279 571 1167Q 685 1031 788 894L 1016 1212Q 1238 1521 1304 1521Q 1345 1521 1376 1490Q 1407 1459 1407 1417Q 1407 1382 1380 1349M 1407 1382M 1 0"},
- ["Y"]={width = 1301,height = 1591,minx = 29,miny = -70,maxx = 1225,maxy = 1521,svg = "M 1172 1279Q 1148 1241 1108 1162L 936 737Q 836 498 748 319L 623 96L 570-12Q 537-70 481-70Q 442-70 410-41Q 378-12 378 31Q 378 65 472 244L 595 469Q 416 700 363 833Q 318 946 213 1104Q 69 1320 44 1365Q 29 1392 29 1419Q 29 1462 60 1491Q 91 1520 131 1520Q 180 1520 213 1473L 293 1349Q 399 1192 433 1135Q 508 1012 550 907Q 583 824 691 680L 920 1238Q 959 1307 1028 1451Q 1056 1519 1121 1519Q 1161 1519 1192 1491Q 1223 1463 1223 1419Q 1223 1373 1170 1278M 1223 1373M-2-1"},
- ["Z"]={width = 1420,height = 1560,minx = 68,miny = -51,maxx = 1382,maxy = 1509,svg = "M 1266 1251L 1131 1159Q 949 1018 719 708L 368 197Q 343 159 319 127L 708 142Q 963 154 1098 154Q 1230 154 1293 142Q 1374 126 1377 60Q 1379 11 1345-18Q 1315-43 1270-43Q 1241-43 1183-40Q 1125-37 1096-37Q 944-37 640-44Q 336-51 184-51Q 69-51 69 50Q 69 116 131 216L 238 365L 599 867Q 822 1162 1014 1325L 664 1305L 260 1305Q 249 1305 228 1304Q 207 1303 197 1303Q 91 1303 91 1406Q 91 1474 145 1496Q 178 1510 254 1510Q 323 1510 459 1496Q 595 1482 664 1482Q 741 1482 894 1492Q 1047 1502 1125 1502Q 1382 1502 1382 1405Q 1382 1339 1266 1253M 1382 1339M 0 2"},
- ["["]={width = 771,height = 1937,minx = 176,miny = -417,maxx = 702,maxy = 1520,svg = "M 440-412Q 418-412 373-414Q 328-416 305-416Q 176-416 176-299Q 176-116 190 404Q 204 924 204 1107L 188 1410L 187 1424Q 185 1462 210 1491Q 235 1520 275 1520Q 305 1520 365 1518Q 425 1516 455 1516Q 474 1516 511 1518Q 548 1520 567 1520Q 659 1520 659 1423Q 659 1334 575 1326Q 491 1318 372 1323Q 378 1233 378 1120L 365 449L 349-221L 436-218Q 465-218 523-220Q 581-222 610-222Q 650-222 673-250Q 696-278 696-318Q 696-358 673-386Q 650-414 610-414Q 581-414 523-412Q 465-410 436-410M 465-410M-4 2"},
- ["\\"]={width = 1126,height = 1665,minx = 177,miny = -141,maxx = 1015,maxy = 1524,svg = "M 920-141Q 870-141 840-90Q 802-27 723 160L 432 905Q 368 1056 193 1374Q 177 1403 177 1427Q 177 1466 206 1495Q 235 1524 273 1524Q 318 1524 349 1478Q 463 1307 596 990L 801 475Q 908 203 1002 2Q 1014-23 1014-45Q 1014-84 986-112Q 958-140 920-140M 958-140M 0 1"},
- ["]"]={width = 771,height = 1937,minx = 176,miny = -417,maxx = 702,maxy = 1520,svg = "M 438-412Q 461-412 506-414Q 551-416 573-416Q 702-416 702-299Q 702-116 688 404Q 674 924 674 1107L 690 1410L 691 1424Q 693 1462 668 1491Q 643 1520 604 1520Q 573 1520 513 1518Q 453 1516 423 1516Q 404 1516 367 1518Q 330 1520 311 1520Q 219 1520 219 1423Q 219 1334 303 1326Q 387 1318 507 1323Q 500 1233 500 1120L 513 449L 529-221L 442-218Q 413-218 355-220Q 297-222 268-222Q 229-222 205-250Q 181-278 181-318Q 181-358 205-386Q 229-414 268-414Q 297-414 355-412Q 413-410 442-410M 413-410M 4 2"},
- ["^"]={width = 1190,height = 524,minx = 198,miny = 1122,maxx = 1021,maxy = 1646,svg = "M 594 1646Q 649 1646 726 1578Q 750 1557 836 1467L 994 1297Q 1021 1267 1021 1236Q 1021 1199 993 1172Q 965 1145 929 1145Q 896 1145 866 1174Q 786 1264 615 1434Q 361 1123 289 1123Q 253 1123 226 1151Q 199 1179 199 1215Q 199 1250 230 1279Q 285 1333 534 1616Q 561 1647 595 1647M 561 1647M 1 1"},
- ["_"]={width = 1284,height = 188,minx = -35,miny = -345,maxx = 1323,maxy = -157,svg = "M 973-345Q 902-345 760-340Q 618-335 547-335L 102-335Q 79-335 33-340Q-13-345-35-345L-35-160Q 65-160 265-159Q 465-158 565-158Q 636-158 776-163Q 916-168 987-168L 1322-160L 1322-345M-1 0"},
- ["`"]={width = 1139,height = 483,minx = 149,miny = 1178,maxx = 577,maxy = 1661,svg = "M 577 1267Q 577 1231 549 1205Q 521 1179 485 1179Q 442 1179 413 1221L 313 1370Q 260 1443 189 1498Q 150 1528 150 1569Q 150 1605 176 1633Q 202 1661 238 1661Q 300 1661 440 1495Q 577 1331 577 1267M 577 1331M 0 0"},
- ["a"]={width = 1048,height = 1110,minx = 51,miny = -66,maxx = 1013,maxy = 1044,svg = "M 920-66Q 901-66 851-22Q 806 19 784 51Q 688-1 615-27Q 542-53 493-53Q 259-53 152 79Q 51 203 51 459Q 51 701 217 873Q 383 1045 614 1045Q 701 1045 809 1000Q 945 944 945 865Q 945 838 925 817Q 915 779 910 692Q 905 605 904 469Q 903 345 921 273Q 931 229 984 97Q 991 79 1007 44L 1013 27Q 1013-13 985-39Q 957-65 920-65M 957-65M 712 630Q 712 673 717 723Q 722 773 733 830Q 696 849 670 858Q 644 867 628 867Q 473 867 361 741Q 249 615 249 450Q 249 286 307 204Q 365 122 481 122Q 577 122 644 157Q 680 176 745 233Q 713 498 713 630M 713 498M 1 1"},
- ["b"]={width = 1215,height = 1617,minx = 153,miny = -42,maxx = 1119,maxy = 1575,svg = "M 606-42Q 453-42 328 18Q 296-30 250-30Q 212-30 186-4Q 160 22 160 62Q 160 88 162 139Q 164 190 164 216Q 164 322 159 533Q 154 744 154 850Q 154 923 155 1126Q 156 1329 156 1403Q 156 1463 181 1511Q 214 1572 272 1572Q 347 1572 347 1485Q 347 1471 342 1444Q 337 1417 337 1403L 334 1184L 332 929Q 419 988 497 1017Q 575 1046 644 1046Q 859 1046 993 881Q 1119 726 1119 500Q 1119 272 972 113Q 825-46 606-46M 825-46M 644 857Q 562 857 476 811Q 434 788 332 712L 330 539L 331 383L 332 219Q 380 197 467 163Q 529 144 606 144Q 751 144 844 246Q 937 348 937 500Q 937 649 862 749Q 781 857 644 857M 781 857M 0-4"},
- ["c"]={width = 1052,height = 1126,minx = 105,miny = -63,maxx = 969,maxy = 1063,svg = "M 591-63Q 386-63 249 61Q 105 191 105 404Q 105 607 240 823Q 390 1063 578 1063Q 676 1063 797 1017Q 950 958 950 873Q 950 835 925 806Q 900 777 863 777Q 834 777 813 794Q 792 811 772 828Q 713 875 579 875Q 477 875 377 693Q 286 526 286 404Q 286 272 376 196Q 460 125 592 125Q 652 125 720 157L 836 219Q 866 235 879 235Q 916 235 943 206Q 970 177 970 139Q 970 66 816-2Q 681-62 592-62M 681-62M 1 1"},
- ["d"]={width = 1203,height = 1640,minx = 103,miny = -46,maxx = 1100,maxy = 1594,svg = "M 1060 883Q 1048 736 1048 589Q 1048 256 1079 86Q 1081 72 1081 63Q 1081 23 1053-3Q 1025-29 988-29Q 926-29 897 61Q 825 8 748-19Q 671-46 587-46Q 380-46 244 92Q 104 233 104 454Q 104 721 245 882Q 386 1043 612 1043Q 728 1043 791 1007L 885 938Q 899 1359 918 1505Q 931 1594 1009 1594Q 1100 1594 1100 1497Q 1100 1358 1060 883M 1100 1358M 616 857Q 448 857 364 758Q 280 659 280 459Q 280 330 371 237Q 462 144 585 144Q 669 144 727 175Q 761 193 838 258Q 853 271 867 289L 864 462L 865 578L 867 696Q 829 777 766 817Q 703 857 615 857M 703 857M-1 0"},
- ["e"]={width = 1122,height = 1091,minx = 87,miny = -46,maxx = 1083,maxy = 1045,svg = "M 606-46Q 380-46 240 67Q 87 192 87 417Q 87 677 213 853Q 350 1045 579 1045Q 745 1045 850 989Q 979 920 979 777Q 979 677 866 595Q 816 559 654 483L 272 302Q 328 219 411 177Q 494 135 605 135Q 674 135 767 161Q 885 194 919 247Q 953 300 992 300Q 1027 300 1054 274Q 1081 248 1081 213Q 1081 102 902 22Q 749-46 604-46M 749-46M 577 865Q 455 865 374 771Q 293 677 253 487L 560 633Q 741 721 818 786Q 732 866 577 866M 732 866M-2 1"},
- ["f"]={width = 1041,height = 1759,minx = 75,miny = -160,maxx = 941,maxy = 1599,svg = "M 811 1406Q 569 1406 540 1070L 537 1008Q 707 1020 757 1020Q 916 1020 916 920Q 916 847 838 833Q 804 827 759 828Q 714 829 529 814L 521 586Q 521 524 525 400Q 529 276 529 215Q 529 25 507-81Q 490-161 414-161Q 373-161 344-135Q 315-109 315-69Q 315-61 317-49Q 338 81 338 234L 335 507L 335 797Q 210 787 177 787Q 76 787 76 884Q 76 983 251 988L 347 991Q 350 1047 362 1143Q 388 1365 474 1470Q 578 1597 799 1597Q 942 1597 942 1500Q 942 1404 812 1404M 942 1404M 1-2"},
- ["g"]={width = 1087,height = 1588,minx = 58,miny = -564,maxx = 1010,maxy = 1024,svg = "M 962 431L 939 95Q 933-105 898-232Q 853-394 754-471Q 634-564 407-564Q 274-564 184-546Q 58-521 58-442Q 58-353 145-353Q 181-353 265-370Q 349-387 451-385Q 643-382 716-199Q 764-77 767 176Q 713 76 639 26Q 565-24 469-24Q 288-24 175 99Q 62 222 62 419Q 62 689 217 854Q 377 1024 653 1024Q 746 1024 809 1000Q 872 976 905 928Q 1012 925 1012 809Q 1012 738 991 619Q 968 481 964 431M 968 481M 643 864Q 453 864 349 733Q 256 615 256 433Q 256 288 311 215Q 366 142 476 142Q 577 142 672 256Q 758 361 770 464Q 791 572 815 803Q 775 834 732 849Q 689 864 643 864M 689 864M 2 0"},
- ["h"]={width = 1183,height = 1664,minx = 145,miny = -62,maxx = 1078,maxy = 1602,svg = "M 976-62Q 905-62 883 14Q 860 96 841 247Q 823 392 823 485Q 823 511 825 564Q 827 617 827 643Q 827 831 733 831Q 606 831 506 716Q 455 657 366 491Q 366 110 334 40Q 306-22 247-22Q 206-22 175 6Q 144 34 144 74Q 144 88 153 118Q 161 143 164 264L 167 412L 170 1147Q 177 1271 177 1314Q 177 1365 168 1410Q 159 1455 159 1504Q 159 1546 188 1573Q 217 1600 259 1600Q 341 1600 355 1512Q 371 1415 371 1337Q 371 1232 364 1118Q 358 1009 359 899L 360 811Q 442 921 535 975Q 628 1029 733 1029Q 899 1029 961 921Q 1005 845 1011 665L 1019 474L 1039 266Q 1053 149 1073 60Q 1077 43 1077 31Q 1077-10 1047-37Q 1017-64 975-64M 1017-64M-1-2"},
- ["i"]={width = 574,height = 1503,minx = 179,miny = -5,maxx = 447,maxy = 1498,svg = "M 330 1266Q 282 1266 247 1300Q 212 1334 212 1382Q 212 1430 247 1464Q 282 1498 330 1498Q 378 1498 412 1464Q 446 1430 446 1382Q 446 1334 412 1300Q 378 1266 330 1266M 378 1266M 375 454Q 375 394 378 275Q 381 156 381 96Q 381 52 354 24Q 327-4 283-4Q 240-4 213 24Q 186 52 186 96Q 186 156 183 275Q 180 394 180 454Q 180 548 190 688Q 200 828 200 922Q 200 967 227 995Q 254 1023 297 1023Q 340 1023 367 995Q 394 967 394 922Q 394 828 384 688Q 374 548 374 454M 374 548M-1 0"},
- ["j"]={width = 826,height = 2093,minx = -18,miny = -597,maxx = 656,maxy = 1496,svg = "M 467 1265Q 419 1265 385 1299Q 351 1333 351 1380Q 351 1428 385 1462Q 419 1496 467 1496Q 515 1496 550 1462Q 585 1428 585 1380Q 585 1333 550 1299Q 515 1265 467 1265M 515 1265M 459-232Q 460-115 425 367L 391 918Q 391 968 419 1007Q 447 1046 491 1046Q 525 1046 559 1021Q 593 996 595 970L 628 394L 655-222Q 655-361 572-474Q 482-597 353-597Q 138-597-7-266Q-19-239-19-218Q-19-178 12-149Q 43-120 83-120Q 142-120 206-250Q 222-284 262-348Q 301-398 352-398Q 396-398 427-332Q 451-282 457-232M 451-282M-2 0"},
- ["k"]={width = 1106,height = 1645,minx = 163,miny = -41,maxx = 1076,maxy = 1604,svg = "M 972-41Q 917-41 887 17Q 835 118 730 256L 553 497Q 495 451 373 368Q 362 213 362 66Q 362 21 335-7Q 308-35 265-35Q 164-35 164 101Q 164 184 175 349Q 186 514 186 597Q 186 749 190 944Q 194 1139 194 1289Q 194 1334 190 1395Q 186 1456 186 1501Q 186 1546 213 1574Q 240 1602 283 1602Q 326 1602 353 1574Q 380 1546 380 1501Q 380 1455 385 1393Q 390 1331 390 1285L 383 963Q 378 789 380 615Q 516 719 642 843L 862 1070Q 895 1104 933 1104Q 972 1104 1003 1073Q 1034 1042 1034 1001Q 1034 967 1005 934Q 882 790 702 625L 920 328Q 1073 119 1073 56Q 1073 16 1042-13Q 1011-42 970-42M 1011-42M-2-1"},
- ["l"]={width = 561,height = 1652,minx = 174,miny = -43,maxx = 403,maxy = 1609,svg = "M 393 786L 378 289Q 378 210 370 57Q 360-43 272-43Q 174-43 174 59Q 174 180 185 422Q 196 664 196 785Q 196 943 201 1146Q 206 1349 206 1507Q 206 1607 304 1607Q 403 1607 403 1507Q 403 1349 398 1146Q 393 943 393 785M 393 943M 0-1"},
- ["m"]={width = 1591,height = 1234,minx = 121,miny = -124,maxx = 1512,maxy = 1110,svg = "M 1409-83Q 1327-83 1313 4Q 1295 114 1277 314L 1243 624Q 1233 693 1209 759Q 1175 849 1135 849Q 1098 849 997 786Q 901 728 871 693Q 870 599 876 505L 906 238Q 925 80 925-23Q 925-67 898-95Q 871-123 828-123Q 785-123 758-95Q 731-67 731-23Q 731 98 707 334Q 683 570 683 691Q 683 797 653 856Q 583 824 511 752L 393 620Q 377 596 342 557Q 342 497 331 380Q 320 263 320 207Q 320 177 329 123Q 338 69 338 45Q 338 4 308-24Q 278-52 237-52Q 124-52 124 205Q 124 265 135 384Q 146 503 146 563Q 146 616 137 722Q 128 828 128 882Q 128 1109 230 1109Q 269 1109 301 1075Q 333 1041 333 1001Q 333 982 328 942Q 323 902 323 881L 325 776Q 377 883 478 969Q 579 1055 650 1055Q 807 1055 866 899Q 921 972 997 1008Q 1073 1044 1171 1044Q 1338 1044 1399 864Q 1411 828 1440 583Q 1468 411 1512 10Q 1515-30 1485-58Q 1455-86 1412-86M 1455-86M 3-3"},
- ["n"]={width = 1072,height = 1163,minx = 124,miny = -71,maxx = 1006,maxy = 1092,svg = "M 906-71Q 820-71 809 23L 781 242Q 767 359 767 461Q 767 489 770 556Q 773 623 773 651Q 773 867 693 867Q 581 867 479 734Q 387 613 335 428Q 333 389 326 330Q 320 280 320 233Q 320 203 326 143Q 332 83 332 53Q 332 8 305-20Q 278-48 235-48Q 191-48 164-20Q 137 8 137 53Q 137 83 131 143Q 125 203 125 233Q 125 336 139 518Q 153 700 153 803Q 153 835 150 898Q 147 961 147 993Q 147 1036 175 1063Q 203 1090 245 1090Q 337 1090 346 960L 349 843Q 517 1067 694 1067Q 854 1067 917 926Q 960 832 964 648L 964 547L 963 454Q 963 371 984 240Q 1005 109 1005 27Q 1005-17 977-44Q 949-71 906-71M 949-71M 0 0"},
- ["o"]={width = 1077,height = 1096,minx = 77,miny = -59,maxx = 972,maxy = 1037,svg = "M 514-59Q 346-59 225 65Q 90 203 83 436Q 77 662 197 834Q 337 1037 587 1037Q 787 1037 890 854Q 972 706 969 498Q 966 276 853 119Q 725-59 514-59M 725-59M 574 834Q 427 835 345 694Q 280 581 280 436Q 280 291 359 210Q 425 143 514 143Q 618 143 693 219Q 778 303 783 446Q 797 833 574 834M 797 833M 0 0"},
- ["p"]={width = 1095,height = 1680,minx = 119,miny = -581,maxx = 1008,maxy = 1099,svg = "M 564-35Q 464-35 344-3L 342-481Q 342-525 315-553Q 288-581 245-581Q 202-581 175-553Q 148-525 148-481L 151-81L 151 318Q 148 537 136 717L 121 920Q 121 991 147 1040Q 177 1099 234 1099Q 273 1099 299 1072Q 325 1045 325 1005Q 325 996 322 972Q 317 941 315 915Q 401 974 481 1003Q 561 1032 634 1032Q 839 1032 934 850Q 1009 706 1009 469Q 1009 253 893 113Q 770-35 565-35M 770-35M 634 832Q 542 832 468 791Q 415 762 334 685Q 347 458 347 208Q 456 166 565 166Q 690 166 756 259Q 813 340 813 469Q 813 651 769 741Q 725 831 635 831M 725 831M 2-1"},
- ["q"]={width = 1065,height = 1621,minx = 60,miny = -556,maxx = 943,maxy = 1065,svg = "M 909 315L 863-69Q 838-283 838-456Q 838-500 811-528Q 784-556 740-556Q 648-556 642-455Q 639-411 647-344L 660-233L 679-12Q 593-35 558-35Q 340-35 205 78Q 60 199 60 413Q 60 706 225 883Q 394 1065 685 1063Q 740 1063 768 1020Q 811 1058 844 1058Q 884 1058 913 1026Q 942 994 942 953Q 942 658 908 315M 942 658M 613 890Q 429 857 335 703Q 259 578 259 409Q 259 291 331 217Q 410 135 550 139Q 645 142 689 242Q 737 354 740 623L 754 890Q 734 883 684 887Q 629 893 613 890M 629 893M-1 0"},
- ["r"]={width = 984,height = 1121,minx = 139,miny = -67,maxx = 918,maxy = 1054,svg = "M 917 739Q 910 614 817 614Q 731 614 731 713Q 731 732 728 783L 725 867Q 567 848 472 778Q 383 713 324 582L 326 34Q 326-67 227-67Q 139-67 139 34L 139 736Q 139 769 141 835Q 143 901 143 934Q 143 1035 231 1035Q 329 1035 330 869Q 522 1054 756 1054Q 837 1054 877 993Q 917 932 917 809Q 917 757 916 739M 917 757M-1 0"},
- ["s"]={width = 997,height = 1202,minx = 41,miny = -60,maxx = 912,maxy = 1142,svg = "M 814 770Q 759 770 737 807Q 722 833 711 915Q 636 896 480 845Q 319 781 318 687Q 348 676 377 671Q 607 630 719 558Q 882 453 882 254Q 882 91 741 8Q 624-60 445-60Q 314-60 195-16Q 41 40 41 140Q 41 180 72 210Q 103 240 143 240Q 174 240 223 192Q 247 169 331 154Q 398 142 444 142Q 528 142 592 162Q 685 191 685 254Q 685 390 495 438L 391 461Q 258 490 202 529Q 121 585 121 698Q 121 907 318 996Q 378 1023 510 1060Q 642 1097 699 1123Q 740 1141 788 1141Q 831 1141 858 1113Q 885 1085 885 1040Q 885 1011 897 955Q 909 899 909 870Q 909 825 882 797Q 855 769 812 769M 855 769M-2-1"},
- ["t"]={width = 965,height = 1461,minx = 65,miny = -64,maxx = 906,maxy = 1397,svg = "M 808 852Q 787 852 759 854Q 731 856 710 856Q 687 856 574 841L 593 250L 594 206L 595 155Q 599-64 490-64Q 450-64 421-38Q 392-12 392 27Q 392 65 395 141Q 398 217 398 255L 378 839Q 305 842 156 856Q 67 868 67 955Q 67 999 94 1028Q 121 1057 163 1057L 373 1040Q 373 1091 369 1176Q 365 1261 365 1299Q 365 1341 394 1368Q 423 1395 465 1395Q 555 1395 570 1248Q 573 1211 573 1159L 571 1101L 570 1039Q 694 1055 712 1055Q 816 1055 848 1045Q 909 1025 909 951Q 909 907 882 879Q 855 851 812 851M 855 851M 4-1"},
- ["u"]={width = 1065,height = 1146,minx = 109,miny = -80,maxx = 975,maxy = 1066,svg = "M 955 584Q 955 512 956 368Q 957 224 957 152Q 957 130 960 85Q 963 40 963 18Q 963-25 934-52Q 905-79 863-79Q 786-79 765 16Q 640-49 477-49Q 346-49 260 9Q 165 73 147 196Q 108 461 108 668Q 108 805 138 980Q 152 1067 233 1067Q 276 1067 305 1040Q 334 1013 334 970Q 334 924 320 823Q 306 722 306 669Q 306 502 317 383Q 328 264 350 192Q 383 174 415 165Q 447 156 478 156Q 612 156 761 199L 760 402L 758 596Q 758 812 777 971Q 788 1063 874 1063Q 917 1063 946 1035Q 975 1007 973 965M 0 3"},
- ["v"]={width = 996,height = 1096,minx = 62,miny = -40,maxx = 970,maxy = 1056,svg = "M 600 52Q 597-40 509-40Q 436-40 403 46L 250 452L 72 911Q 62 937 62 957Q 62 998 93 1027Q 124 1056 165 1056Q 225 1056 251 995L 505 296Q 580 456 694 760Q 721 840 779 986Q 810 1050 867 1050Q 908 1050 939 1021Q 970 992 970 952Q 970 914 805 524M 0 0"},
- ["w"]={width = 1401,height = 1123,minx = 76,miny = -82,maxx = 1346,maxy = 1041,svg = "M 1336 895Q 1258 569 1132 158Q 1104 67 1039-29Q 1004-82 944-81Q 835-79 774 190Q 754 276 733 424L 700 647L 618 456L 466 43Q 453 5 428-15Q 398-73 332-75Q 256-78 185 223Q 149 378 113 643L 89 793Q 76 883 76 944Q 76 986 105 1013Q 134 1040 176 1040Q 252 1040 270 957Q 283 898 291 811L 306 664L 365 215Q 476 523 595 925Q 628 1036 710 1036Q 789 1036 817 912Q 843 795 882 552Q 922 300 953 159L 1026 431L 1155 976Q 1170 1037 1241 1037Q 1283 1037 1314 1009Q 1345 981 1345 941Q 1345 936 1335 895M 1345 936M-1 0"},
- ["x"]={width = 1209,height = 1149,minx = 61,miny = -44,maxx = 1151,maxy = 1105,svg = "M 1058 858L 912 721L 734 544L 1060 118Q 1085 86 1085 55Q 1085 16 1055-14Q 1025-44 987-44Q 949-44 918-7Q 826 100 594 405L 399 204Q 340 151 227 39Q 195 3 158 3Q 120 3 91 33Q 62 63 62 102Q 62 133 87 165Q 115 202 174 254Q 243 315 265 338L 478 561L 347 750Q 268 863 209 915Q 171 949 171 989Q 171 1029 199 1060Q 227 1091 264 1091Q 323 1091 442 937L 615 698L 811 878Q 933 993 976 1058Q 1008 1105 1052 1105Q 1091 1105 1121 1076Q 1151 1047 1151 1009Q 1151 954 1058 858M 1151 954M 0 0"},
- ["y"]={width = 1066,height = 1619,minx = -4,miny = -579,maxx = 1024,maxy = 1040,svg = "M 1011 892L 665 144Q 537-129 469-313L 403-507Q 377-579 313-579Q 271-579 241-552Q 211-525 211-484Q 211-384 427 95L 69 784L 24 857Q-3 903-3 934Q-3 975 28 1006Q 59 1037 98 1037Q 144 1037 169 1002Q 339 766 534 330L 682 675Q 762 854 836 983Q 868 1039 920 1039Q 961 1039 992 1010Q 1023 981 1023 941Q 1023 919 1010 891M 1023 919M-1-1"},
- ["z"]={width = 1102,height = 1133,minx = 122,miny = -77,maxx = 1040,maxy = 1056,svg = "M 964 809Q 875 702 736 499Q 575 263 500 165Q 605 170 683 170Q 722 170 799 155Q 876 140 915 140Q 959 140 986 112Q 1013 84 1013 40Q 1013-5 986-33Q 959-61 915-61Q 876-61 799-46Q 722-31 683-31Q 458-31 256-72Q 235-76 219-76Q 122-76 122 9Q 122 59 172 105Q 433 341 740 840Q 607 832 547 832Q 399 832 243 855Q 154 868 154 954Q 154 998 181 1027Q 208 1056 249 1056Q 298 1056 397 1045Q 496 1034 547 1034Q 615 1034 751 1043Q 887 1052 955 1052Q 1040 1052 1040 982Q 1040 901 964 809M 1040 901M 0 0"},
- ["{"]={width = 750,height = 2009,minx = 6,miny = -384,maxx = 697,maxy = 1625,svg = "M 259 573Q 314 600 357 679Q 398 754 398 814Q 398 857 392 1018Q 386 1179 386 1222Q 386 1419 526 1434Q 560 1435 627 1444Q 698 1460 698 1514Q 698 1566 640 1598Q 592 1625 536 1625Q 473 1625 404 1596Q 205 1509 205 1193L 210 994L 213 795L 213 767Q 163 753 89 684Q 7 608 7 556Q 7 511 101 444Q 195 377 195 295Q 195 268 187 213Q 179 158 179 131Q 179-46 262-199Q 362-383 523-383Q 597-383 628-371Q 679-350 679-287Q 679-221 628-204Q 605-196 523-196Q 454-196 405-61Q 366 47 366 131Q 366 164 374 230Q 382 296 382 329Q 382 376 337 458Q 299 529 259 574M 299 529M 0 1"},
- ["|"]={width = 863,height = 2077,minx = 353,miny = -362,maxx = 531,maxy = 1715,svg = "M 445 1715Q 531 1715 531 1626L 531-245Q 529-362 444-362Q 385-362 364-286Q 353-246 353 25L 353 1626Q 353 1665 379 1690Q 405 1715 445 1715M 405 1715M 0 0"},
- ["}"]={width = 750,height = 2009,minx = 6,miny = -384,maxx = 697,maxy = 1625,svg = "M 444 573Q 389 600 346 679Q 305 754 305 814Q 305 857 311 1018Q 317 1179 317 1222Q 317 1419 177 1434Q 143 1435 76 1444Q 5 1460 5 1514Q 5 1566 63 1598Q 111 1625 167 1625Q 230 1625 299 1596Q 498 1509 498 1193L 493 994L 490 795L 490 767Q 540 753 614 684Q 696 608 696 556Q 696 511 601 444Q 506 377 506 295Q 506 268 514 213Q 522 158 522 131Q 522-46 439-199Q 339-383 178-383Q 104-383 73-371Q 22-350 22-287Q 22-221 73-204Q 96-196 178-196Q 247-196 296-61Q 335 47 335 131Q 335 164 327 230Q 319 296 319 329Q 319 376 364 458Q 402 529 442 574M 402 529M-2 1"},
- ["~"]={width = 1224,height = 467,minx = 100,miny = 467,maxx = 1143,maxy = 934,svg = "M 467 934Q 554 934 625 863L 735 730Q 801 656 872 650Q 913 647 951 770Q 989 893 1051 893Q 1089 893 1115 869Q 1141 845 1141 807Q 1142 675 1061 573Q 979 468 868 468Q 757 468 665 543Q 613 586 542 682Q 487 757 466 757Q 379 757 269 568Q 240 517 192 517Q 156 517 128 542Q 100 567 100 603Q 100 622 110 645Q 164 762 251 841Q 354 934 467 934M 354 934M 0 0"},
- }
- end)
- local SVGParser=_W(function()
- --- Parses SVG path data
- -- TODO: Implement relative points
- local find, sub, tonumber = string.find, string.sub, tonumber
- local error, tostring = error, tostring
- -- Consume all the whitespace
- local function consumeWhitespace(string, position)
- local startOf, endOf = find(string, "[%s,]+", position)
- if startOf ~= position then
- return position
- end
- return endOf + 1
- end
- -- Parse a number
- local function parseNumber(string, position)
- -- Trim whitespace
- position = consumeWhitespace(string, position)
- local startOf, endOf = find(string, "%-?%d+", position)
- if startOf ~= position then
- if position > #string then
- error("Expected number near <eof>")
- else
- error("Expected number at " .. position .. " near " .. string.format("%q", sub(string, position, position)))
- end
- end
- return tonumber(sub(string, startOf, endOf)), endOf + 1
- end
- -- Parse a coordinate pair
- local function parsePair(string, position)
- local x, y
- x, position = parseNumber(string, position)
- y, position = parseNumber(string, position)
- return x, y, position
- end
- local allowed = { M=true, L=true, Q = true, C = true, Z = true}
- local function parseCommand(string, position)
- local nextCharacter = sub(string, position, position)
- if not allowed[nextCharacter] then
- error("Expected (M/L/Q/C/Z) at " .. position .. " near " .. string.format("%q", nextCharacter))
- end
- return nextCharacter, position + 1
- end
- -- Parses an SVG string
- -- @tparam string string The SVG path to parse
- -- @tparam boolean implicitClose Close the current path on a move
- local function parseSVG(string, implicitClose)
- if implicitClose == nil then
- implicitClose = true
- end
- local position = 1
- local length = #string
- local SVG = {}
- local SVGNext = 1
- local startX, startY = 0, 0
- local currentX, currentY = 0, 0
- local function close()
- -- If one of the points is different draw a line
- if currentX ~= startX or currentY ~= startY then
- SVG[SVGNext] = {"L", {currentX, currentY, startX, startY}}
- return startX, startY
- end
- return currentX, currentY
- end
- while position <= length do
- -- Consume whitespace
- position = consumeWhitespace(string, position)
- -- Check that didn't break anything
- if position > length then break end
- local nextCharacter
- nextCharacter, position = parseCommand(string, position)
- local x, y = currentX, currentY
- -- Jump drawing point (M <x> <y>)
- if nextCharacter == "M" then
- -- We are moving, and so should close the path
- if implicitClose then
- x, y = close()
- end
- -- We just update the current x/y instead of storing this as an item
- x, y, position = parsePair(string, position)
- startX, startY = x, y
- -- Close path
- elseif nextCharacter == "Z" then
- x, y = close()
- -- Line from current position to x, y (L <x> <y>)
- elseif nextCharacter == "L" then
- x, y, position = parsePair(string, position)
- -- Save to data list
- SVG[SVGNext] = {"L", {currentX, currentY, x, y}}
- SVGNext = SVGNext + 1
- -- Update positions
- currentX = x
- currentY = y
- -- Cubic Bezier from current to x, y with points at <(x/y)(1/2)> (C <x1> <y1>, <x2> <y2>, <x> <y>)
- elseif nextCharacter == "C" then
- local x1, y1, x2, y2
- x1, y1, position = parsePair(string, position)
- x2, y2, position = parsePair(string, position)
- x, y, position = parsePair(string, position)
- -- Save to datalist
- SVG[SVGNext] = {"B", {currentX, currentY, x1, y1, x2, y2, x, y}}
- SVGNext = SVGNext + 1
- -- Update positions
- currentX = x
- currentY = y
- -- Quadratic Bezier from current to x, y with point at <(x/y)1> (C <x1> <y1>, <x> <y>)
- elseif nextCharacter == "Q" then
- local x1, y1
- x1, y1, position = parsePair(string, position)
- x, y, position = parsePair(string, position)
- -- Save to datalist
- SVG[SVGNext] = {"B", {currentX, currentY, x1, y1, x, y}}
- SVGNext = SVGNext + 1
- -- Update positions
- currentX = x
- currentY = y
- else
- error("Totaly unexpected " .. nextCharacter .. " at " .. position)
- end
- -- Update positions
- currentX = x
- currentY = y
- end
- return SVG
- end
- return parseSVG
- end)
- local args = {...}
- local ipairs, unpack = ipairs, unpack
- --- Read with a prompt in front
- local function readPrompt(prompt)
- write(prompt .. "> ")
- return read()
- end
- -- Load some arguments. Allows "\n" in message as a literal "\n"
- local message = (args[1] or readPrompt("Message")):gsub("\\n", "\n")
- local height = assert(tonumber(args[2] or readPrompt("Max height")), "Invalid number")
- local blockType = args[3] or "minecraft:wool 15"
- -- Add padding between lines
- local yPadding = 2
- local xPadding = 1
- -- Offset for drawing things
- local xOffset = 0
- local yOffset = 30
- local zOffset = -10
- -- Load SVG and set characters
- for character, glyph in pairs(FontData) do
- glyph.svg = SVGParser(glyph.svg)
- glyph.character = character
- end
- local maxHeight = 0 -- Max height of the text
- local line = {width = 0, contents = ""}
- local lines = {line} -- Number of lines to write
- local maxWidth = 0
- for i = 1, #message do
- local character = message:sub(i, i)
- -- Start a new line if \n
- if character == "\n" then
- line = {width = 0, contents = ""}
- lines[#lines + 1] = line
- else
- local glyph = FontData[character]
- -- Support numbers in lookup table
- if not glyph and tonumber(glyph) then
- glyph = FontData[tonumber(glyph)]
- end
- -- Still can't find glyph
- if not glyph then
- error("Unexpected character " .. string.format("%q", character))
- end
- -- Find max glyph height
- maxHeight = math.max(maxHeight, glyph.height)
- line[#line + 1] = glyph
- -- Calculate some line data
- line.width = line.width + glyph.width
- line.contents = line.contents .. character
- end
- end
- -- We have the max height, create a scale factor to translate letters
- local scale = height / maxHeight
- -- Create the Command block API
- local commands = CommandGraphics(blockType)
- local pixel, clear = commands.setBlock, commands.clearBlocks
- local transform = TransformationChain(pixel)
- transform.scale(scale)
- -- Create a drawing API
- local drawing = DrawingAPI(transform.pixel2d)
- local drawline, drawBezier = drawing.line, drawing.bezier
- for yLine, line in ipairs(lines) do
- print("Line " .. string.format("%q", line.contents))
- local y = ((#lines - yLine) * (height + yPadding))
- local x = -(line.width * scale) / 2
- for _, glyph in ipairs(line) do
- transform.push()
- transform.translate(x, y, 0)
- transform.rotate(-45, 30, -10)
- transform.translate(xOffset, yOffset, zOffset)
- -- Draw the node list
- for _, node in ipairs(glyph.svg) do
- local nodeType = node[1]
- local nodeArgs = node[2]
- if nodeType == "L" then -- Lines
- drawline(unpack(nodeArgs))
- else -- If C or Q then bezier line
- drawBezier(nodeArgs)
- end
- end
- transform.pop()
- -- Move onto the next character
- x = x + (glyph.width * scale) + xPadding
- os.queueEvent("test")
- coroutine.yield("test")
- end
- end
- print("Press any key to clear")
- os.pullEvent("char")
- -- We cache which blocks we placed so we don't place it more
- -- than once, so it is trivial to clean up again.
- clear()
Advertisement
Add Comment
Please, Sign In to add comment