diff options
| author | Joel Holdsworth <joel@airwebreathe.org.uk> | 2008-03-18 23:02:45 +0000 |
|---|---|---|
| committer | joelholdsworth <joelholdsworth@users.sourceforge.net> | 2008-03-18 23:02:45 +0000 |
| commit | 39e5e9067c534d4f7c39159db5ee68b4b7ce1dd8 (patch) | |
| tree | aeb420d5b8eaa48b9f3803e82796b5916e0df28d | |
| parent | Raise SVG c++ files to main dom directory. They belong there nos. (diff) | |
| download | inkscape-39e5e9067c534d4f7c39159db5ee68b4b7ce1dd8.tar.gz inkscape-39e5e9067c534d4f7c39159db5ee68b4b7ce1dd8.zip | |
Added new extension: Alphabet Soup
(bzr r5118)
78 files changed, 1895 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index fd924a8aa..13e608c76 100644 --- a/configure.ac +++ b/configure.ac @@ -909,6 +909,7 @@ share/Makefile share/clipart/Makefile share/examples/Makefile share/extensions/Makefile +share/extensions/alphabet_soup/Makefile share/extensions/Barcode/Makefile share/extensions/xaml2svg/Makefile share/fonts/Makefile diff --git a/share/extensions/Makefile.am b/share/extensions/Makefile.am index 026fe010c..9d716fa85 100644 --- a/share/extensions/Makefile.am +++ b/share/extensions/Makefile.am @@ -1,5 +1,6 @@ SUBDIRS = \ + alphabet_soup \ Barcode \ xaml2svg @@ -79,6 +80,8 @@ extensions = \ pturtle.py \ radiusrand.py \ render_barcode.py \ + render_alphabetsoup.py \ + render_alphabetsoup_config.py \ rtree.py \ rubberstretch.py\ simplepath.py \ @@ -191,6 +194,7 @@ modules = \ randompnt.inx \ randompos.inx \ render_barcode.inx \ + render_alphabetsoup.inx \ rubberstretch.inx \ rtree.inx \ sk_input.inx \ diff --git a/share/extensions/alphabet_soup/2.svg b/share/extensions/alphabet_soup/2.svg new file mode 100755 index 000000000..d1989397a --- /dev/null +++ b/share/extensions/alphabet_soup/2.svg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.0" + width="864" + height="648"> + <path + d="M 354.48922,275.5 C 328.85769,240.23214 347.25731,205.35861 385.1251,189.388 C 426.61805,172.91106 475.68507,179.24583 515.30616,198.41751 C 546.67876,214.6078 576,239.79094 576,278 L 558.40623,278 C 552.10387,234.59412 509.90256,216.75448 470,216.5712 C 447.74393,214.18055 400.44831,233.68796 416.17747,262.5 L 468.03189,324 L 396.02454,324 L 354.48922,275.5 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/3.svg b/share/extensions/alphabet_soup/3.svg new file mode 100755 index 000000000..3c6d97dda --- /dev/null +++ b/share/extensions/alphabet_soup/3.svg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.0" + width="864" + height="648"> + <path + d="M 501.05404,466.85224 C 476.23121,464.26 450.75956,455.65261 431.87769,443.47613 C 411.95632,430.91317 396.56831,411.01358 396.56831,387 C 395.84362,362.80636 412.72694,342.89906 432.21417,330.29284 C 440.0046,325.25324 455.28275,317.82286 461.75,315.92839 C 463.24592,315.49019 464.58333,314.62784 466,313.97757 C 460.54092,310.85142 454.62917,308.18456 449.14094,304.90725 C 430.18578,293.04365 414.6003,275.02312 414.6003,252 C 413.48545,214.23492 454.91385,193.54639 486.5,184.14099 C 495.98819,181.95601 510.61229,180.02198 517.75,180.0082 L 522,180 L 522,198 L 518.7101,198 C 490.39366,199.42169 468,224.07106 468,252 C 467.62164,280.07697 490.67991,304.37293 518.7101,306 C 519.80673,306 520.90337,306 522,306 L 522,323.55734 L 514.90208,324.67499 C 493.1939,327.67962 477.89904,345.53362 471.28084,365.47892 C 467.15061,378.95077 466.81709,395.06873 471.28084,408.52108 C 474.68237,422.00803 482.98703,432.65142 493.36034,441.06884 C 501.39086,447.58519 511.75825,448.93827 522,450.44266 L 522,468 L 515.75,467.86712 C 512.3125,467.79404 505.69932,467.33734 501.05404,466.85224 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/6.svg b/share/extensions/alphabet_soup/6.svg new file mode 100755 index 000000000..d05c5083d --- /dev/null +++ b/share/extensions/alphabet_soup/6.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 396.5,342.5 L 396.5,162.5 C 396.5,93.306633 448.26539,42.674512 522,35.765025 L 522,53.526698 C 477.03387,63.188766 469.41841,134.18931 468.29791,173.27138 L 467.70239,194.04275 C 484.49529,185.35766 502.93862,180 522,180 L 522,197.5267 C 475.47262,207.87556 468.5,285.09855 468.5,324 C 468.4888,363.50529 475.41445,439.42379 522,450.4733 L 522,459.23665 L 522,468 C 448.80371,465.88421 396.5,413.20428 396.5,342.5 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/7.svg b/share/extensions/alphabet_soup/7.svg new file mode 100755 index 000000000..e921bb5ff --- /dev/null +++ b/share/extensions/alphabet_soup/7.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 389.34645,312.75 C 348.64746,255.09556 327.02961,192.99032 323.47153,123.5 C 321.51456,95.318458 329.46832,77.247033 360,72.504642 C 388.88058,72.729583 395.35983,93.02294 395.61308,118 C 395.02551,188.7017 421.08456,252.40074 459.21132,311.25733 C 462.22246,315.46393 465.41066,319.55695 468.07037,324 L 397.28797,324 L 389.34645,312.75 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Cblob.svg b/share/extensions/alphabet_soup/Cblob.svg new file mode 100755 index 000000000..3c747307a --- /dev/null +++ b/share/extensions/alphabet_soup/Cblob.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 432,432 C 483.35068,432.05187 514.50621,414.91209 547.74987,377.43357 C 553.86023,366.99152 553.90447,366.48196 549.10143,361.86677 C 542.63049,355.64891 540.54636,350.80909 540.54636,342 C 540.49227,326.31992 552.00549,316.34875 567,315.54636 C 590.16466,316.18468 595.48079,334.58161 593.06817,354.41343 C 585.62156,415.62493 522.34607,462.89212 443.42345,467.61056 C 439.61563,467.83821 435.80782,468.06586 432,468.29351 L 432,432 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Chook.svg b/share/extensions/alphabet_soup/Chook.svg new file mode 100755 index 000000000..aab0fa280 --- /dev/null +++ b/share/extensions/alphabet_soup/Chook.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 432,36 L 432,0.70648772 C 467.12642,1.1207235 500.19031,10.978322 531,27.408775 C 536.225,30.593268 542.17901,33.437152 544.23113,33.728519 C 551.95635,34.825369 558,29.837576 558,22.365141 L 558,18 L 576,18 L 576,126 L 558.27619,126 C 553.02167,64.41188 486.96487,36 432,36 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Ctail.svg b/share/extensions/alphabet_soup/Ctail.svg new file mode 100755 index 000000000..54d55dec1 --- /dev/null +++ b/share/extensions/alphabet_soup/Ctail.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 432,432 C 488.00932,432.67049 552.04586,402.81177 558.27619,342 L 594,342 C 592.58099,426.9715 505.82574,463.87984 432,468.29351 L 432,432 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Delta.svg b/share/extensions/alphabet_soup/Delta.svg new file mode 100755 index 000000000..82e60c34f --- /dev/null +++ b/share/extensions/alphabet_soup/Delta.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 312,36 L 306,36 L 306,18 L 270,18 L 270,33 L 257.02684,33 C 254.86698,25.169754 250.63249,18.043924 242.5,18.043924 L 234,18 L 234,0 L 630,0 L 630,18 L 625.5651,18 C 615.63677,17.396793 609.71136,24.314484 606.8449,33 L 594,33 L 594,18 L 522,18 L 522,36 L 516,36 L 516,48 L 513,48 L 513,41.272727 L 507.72727,36 L 320.84615,36 L 315,41.846154 L 315,48 L 312,48 L 312,36 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Eb.svg b/share/extensions/alphabet_soup/Eb.svg new file mode 100755 index 000000000..c9c42a550 --- /dev/null +++ b/share/extensions/alphabet_soup/Eb.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 234,450.23743 C 244.37552,448.73762 249.81245,441.63048 252.23743,432 L 432,432 L 432,468 L 234,468 L 234,450.23743 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Eserif.svg b/share/extensions/alphabet_soup/Eserif.svg new file mode 100755 index 000000000..51e46b90e --- /dev/null +++ b/share/extensions/alphabet_soup/Eserif.svg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648" + id="svg3291"> + <defs + id="defs3294" /> + <path + d="M 442.75,252.02196 L 432,252 L 432,216.15894 L 444.9307,215.82947 C 458.70874,216.8737 466.45417,211.48843 468.26334,198 L 486,198 L 486,270 L 468.41481,270 C 465.95779,255.6718 456.18131,252.74723 442.75,252.02196 z" + id="path3300" + style="fill:#000000" /> +</svg> diff --git a/share/extensions/alphabet_soup/Et.svg b/share/extensions/alphabet_soup/Et.svg new file mode 100755 index 000000000..1c69936ba --- /dev/null +++ b/share/extensions/alphabet_soup/Et.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 251.17613,31.368729 C 249.56512,25.345319 244.65468,20.434883 238.63127,18.823867 L 234,17.58519 L 234,9.2925952 L 234,1 L 333,1 L 432,1 L 432,18.5 L 432,36 L 342.2074,36 L 252.41481,36 L 251.17613,31.368729 z "/> +</svg> diff --git a/share/extensions/alphabet_soup/G.svg b/share/extensions/alphabet_soup/G.svg new file mode 100755 index 000000000..d6fb0c314 --- /dev/null +++ b/share/extensions/alphabet_soup/G.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 432,432.25825 C 474.76518,430.45997 516.4134,399.01191 521.0448,354.62003 L 521.0448,299.42692 C 520.54691,291.3582 511.0076,289.45944 504,287.58519 L 504,270 L 612,270 L 612,287.58519 C 604.95991,288.94718 599.47776,292.02235 595.89633,298.4214 L 595.89633,397.21641 C 557.61928,448.03031 492.7847,465.36976 432,468.30395 L 432,432.25825 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/IBSerif.svg b/share/extensions/alphabet_soup/IBSerif.svg new file mode 100755 index 000000000..774f52d06 --- /dev/null +++ b/share/extensions/alphabet_soup/IBSerif.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 234,450.41481 C 244.50437,448.78945 249.81733,441.71165 252.41481,432 L 341.58519,432 C 343.21055,442.50437 350.28835,447.81733 360,450.41481 L 360,468 L 234,468 L 234,450.41481 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/ITSerif.svg b/share/extensions/alphabet_soup/ITSerif.svg new file mode 100755 index 000000000..df4023dbd --- /dev/null +++ b/share/extensions/alphabet_soup/ITSerif.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 216,17.58519 L 216,1 L 342,1 L 342,17.58519 C 331.49563,19.210548 326.18267,26.288348 323.58519,36 L 234.41481,36 C 232.78945,25.495637 225.71166,20.182664 216,17.58519 z" /> +</svg> diff --git a/share/extensions/alphabet_soup/Lb.svg b/share/extensions/alphabet_soup/Lb.svg new file mode 100755 index 000000000..164c956fd --- /dev/null +++ b/share/extensions/alphabet_soup/Lb.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 432,432 L 557.34775,432 C 572.03193,431.57641 575.48665,419.42011 576,406.53212 L 576,396 L 594,396 L 594,468 L 432,468 L 432,432 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Lt.svg b/share/extensions/alphabet_soup/Lt.svg new file mode 100755 index 000000000..60b288eda --- /dev/null +++ b/share/extensions/alphabet_soup/Lt.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 576,61.467881 C 577.08469,43.108337 568.04996,36.667214 551.79944,36 L 432,36 L 432,1 L 594,1 L 594,72 L 576,72 L 576,61.467881 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Makefile.am b/share/extensions/alphabet_soup/Makefile.am new file mode 100644 index 000000000..004da4e8c --- /dev/null +++ b/share/extensions/alphabet_soup/Makefile.am @@ -0,0 +1,78 @@ + +alphabet_soupdir = $(datadir)/inkscape/extensions/alphabet_soup + +alphabet_soup_DATA = \ + 2.svg \ + 3.svg \ + 6.svg \ + 7.svg \ + abase.svg \ + a.svg \ + acap.svg \ + bar2.svg \ + barcap.svg \ + bar.svg \ + b.svg \ + Cblob.svg \ + Chook.svg \ + cross.svg \ + cserif.svg \ + c.svg \ + Ctail.svg \ + Delta.svg \ + Eb.svg \ + epsilon.svg \ + Eserif.svg \ + e.svg \ + Et.svg \ + f.svg \ + gamma.svg \ + G.svg \ + h2.svg \ + hcap.svg \ + h.svg \ + IBSerif.svg \ + idot.svg \ + ITSerif.svg \ + j.svg \ + k.svg \ + Lb.svg \ + lserif.svg \ + l.svg \ + Lt.svg \ + mcap.svg \ + m.svg \ + n.svg \ + ocap.svg \ + Ocross.svg \ + o.svg \ + Oterm.svg \ + P.svg \ + Q.svg \ + question.svg \ + Rblock.svg \ + rcap.svg \ + r.svg \ + serif.svg \ + s.svg \ + Tb.svg \ + tserif.svg \ + t.svg \ + Tt.svg \ + U.svg \ + vcap.svg \ + vserl.svg \ + vserr.svg \ + Vser.svg \ + v.svg \ + Xh.svg \ + Xne.svg \ + Xnw.svg \ + x.svg \ + Xvb.svg \ + Xvt.svg \ + yogh.svg \ + y.svg \ + z.svg + +EXTRA_DIST = $(alphabet_soup_DATA) diff --git a/share/extensions/alphabet_soup/Ocross.svg b/share/extensions/alphabet_soup/Ocross.svg new file mode 100755 index 000000000..63b1caafa --- /dev/null +++ b/share/extensions/alphabet_soup/Ocross.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 324,216 L 432,216 L 432,252 L 324,252 L 324,216 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Oterm.svg b/share/extensions/alphabet_soup/Oterm.svg new file mode 100755 index 000000000..f01085811 --- /dev/null +++ b/share/extensions/alphabet_soup/Oterm.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 432,432.28491 C 519.05219,420.92031 539.41198,305.43476 539.90939,235.96367 C 540.39442,168.22112 519.19629,44.828918 432,35.715087 L 432,0 C 560.22504,1.9563018 630.31985,120.47734 629.90669,235.8117 C 629.50331,348.41772 555.79773,468 432,468 L 432,432.28491 z" /> +</svg> diff --git a/share/extensions/alphabet_soup/P.svg b/share/extensions/alphabet_soup/P.svg new file mode 100755 index 000000000..5e61cf6b0 --- /dev/null +++ b/share/extensions/alphabet_soup/P.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 432,216 C 479.35472,215.49184 502.54401,167.21061 503.44374,126 C 504.34347,84.789388 477.64109,36 432,36 C 432,24.235496 432,12.470992 432,0.70648772 C 504.20013,1.905354 593.35821,43.100442 593.33321,126.5 C 593.30821,209.89956 505.7797,247.8826 432,252.29351 C 432,240.19567 432,228.09784 432,216 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Q.svg b/share/extensions/alphabet_soup/Q.svg new file mode 100755 index 000000000..2da900b5d --- /dev/null +++ b/share/extensions/alphabet_soup/Q.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 526.32135,439.9524 C 498.13523,459.02351 465.23453,465.28151 432,468.30558 C 432.02713,456.20377 431.96306,444.10178 432,432 C 523.6997,415.67832 539.38316,302.39981 539.38316,234 C 539.38316,165.47354 516.9063,43.985213 432,36 L 432,-0.30557714 C 556.71815,4.8200503 628.82893,118.48894 629.44733,234 C 630.4116,299.68807 606.28121,362.36397 561.98439,410.7975 C 578.58768,433.83295 602.18706,447.65055 630,451.44316 L 630,469 C 592.94051,470.08844 559.04645,455.55561 526.32135,439.9524 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Rblock.svg b/share/extensions/alphabet_soup/Rblock.svg new file mode 100755 index 000000000..a2f4e9d70 --- /dev/null +++ b/share/extensions/alphabet_soup/Rblock.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 504,252 L 432,252 L 432,216 L 612,216 L 612,233.58519 C 604.95991,234.94718 599.47776,238.02235 595.89633,244.4214 L 594,432 L 504,432 L 504,252 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Tb.svg b/share/extensions/alphabet_soup/Tb.svg new file mode 100755 index 000000000..2a75ac5b4 --- /dev/null +++ b/share/extensions/alphabet_soup/Tb.svg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648" + id="svg3065"> + <defs + id="defs3068" /> + <path + d="M 108,396 L 126,396 L 126.02196,406.75 C 125.07553,420.73151 130.7333,430.53865 144.52406,431.29389 L 445.96524,431.29389 C 463.34999,431.83879 467.23245,423.88343 467.97804,406.75 L 468,396 L 486,396 L 486,468 L 108,468 L 108,396 z" + id="path3074" + style="fill:#000000" /> +</svg> diff --git a/share/extensions/alphabet_soup/Tt.svg b/share/extensions/alphabet_soup/Tt.svg new file mode 100755 index 000000000..04d2a1829 --- /dev/null +++ b/share/extensions/alphabet_soup/Tt.svg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648" + id="svg3153"> + <defs + id="defs3156" /> + <path + d="M 108,0 L 486,0 L 486,72 L 468,72 L 467.97804,61.25 C 468.91706,47.366193 463.32904,37.374009 449.58384,36.611397 L 146.90384,36.611397 C 130.1191,36.264077 126.71932,45.224839 126.02196,61.25 L 126,72 L 108,72 L 108,0 z" + id="path3162" + style="fill:#000000" /> +</svg> diff --git a/share/extensions/alphabet_soup/U.svg b/share/extensions/alphabet_soup/U.svg new file mode 100755 index 000000000..e8b8244c3 --- /dev/null +++ b/share/extensions/alphabet_soup/U.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 234.2538,221.55362 C 238.26909,109.31485 312.74266,6.5178358 432,-0.30557714 L 432,36 C 356.62772,39.243159 327.51759,150.96639 324.28264,213.63018 L 323.88378,432 L 233.91947,432 C 234.742,361.8557 233.64814,291.69659 234.2538,221.55362 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Vser.svg b/share/extensions/alphabet_soup/Vser.svg new file mode 100755 index 000000000..e1467702f --- /dev/null +++ b/share/extensions/alphabet_soup/Vser.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 234,18 L 234,0 L 328,0 L 328,18 L 321.42308,18 C 315.4772,17.537933 309.60446,20.486336 309,26.923077 L 309,30 L 306,30 L 306,18 L 270,18 L 270,33 L 257.02684,33 C 253.75659,21.992194 245.07284,18.057219 234,18 z M 594,18 L 522,18 L 522,30 L 519.13647,30 C 519.04442,29.519594 519,27.355241 519,26.636364 C 518.70573,19.373435 512.35553,18.083131 506.36364,18 L 499,18 L 499,0 L 630,0 L 630,18 L 625.5651,18 C 616.691,17.782578 608.53626,24.060156 607.3906,33 L 594,33 L 594,18 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Xh.svg b/share/extensions/alphabet_soup/Xh.svg new file mode 100755 index 000000000..c60f3048f --- /dev/null +++ b/share/extensions/alphabet_soup/Xh.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 432,0 L 594,0 L 594,36 L 432,36 L 432,0 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Xne.svg b/share/extensions/alphabet_soup/Xne.svg new file mode 100755 index 000000000..9dc54f19d --- /dev/null +++ b/share/extensions/alphabet_soup/Xne.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 395.39741,251.53432 L 575.49466,0 L 630,0 L 630,18 L 623.65728,18 C 619.03208,17.930759 614.47611,18.564007 611.50395,22.236834 L 415.8113,289.94104 L 395.39741,251.53432 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Xnw.svg b/share/extensions/alphabet_soup/Xnw.svg new file mode 100755 index 000000000..98cd8bc1f --- /dev/null +++ b/share/extensions/alphabet_soup/Xnw.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 258.12827,29.840962 C 253.41405,22.06427 248.80253,18 239.78811,18 L 234,18 L 234,-0.017224956 L 342.39639,0.5 L 469.79391,214.60701 L 415.80338,289.94584 L 258.12827,29.840962 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Xvb.svg b/share/extensions/alphabet_soup/Xvb.svg new file mode 100755 index 000000000..16e80b42c --- /dev/null +++ b/share/extensions/alphabet_soup/Xvb.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 252,429.20461 L 252,234 L 342,234 L 342,360 L 324,360 L 324,414 L 288,414 L 288,450 L 237.5,449.95608 C 247.55043,446.50275 251.36734,439.32286 252,429.20461 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/Xvt.svg b/share/extensions/alphabet_soup/Xvt.svg new file mode 100755 index 000000000..9747d84d7 --- /dev/null +++ b/share/extensions/alphabet_soup/Xvt.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 252,36.41384 C 252.29636,26.645119 244.96885,23.022186 238.47878,18.021962 L 342,18 L 342,234 L 252,234 L 252,36.41384 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/a.svg b/share/extensions/alphabet_soup/a.svg new file mode 100755 index 000000000..284de78ea --- /dev/null +++ b/share/extensions/alphabet_soup/a.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 468,306 L 498.2899,306 C 538.44742,306 573.0077,295.57591 575.93995,251.64459 C 575.7071,228.53229 560.49601,206.14824 534.5399,199.52162 C 530.43899,198.30967 526.23826,198 522,198 L 522,180 C 528.87688,179.85504 535.7342,180.44311 542.57632,181.06622 C 581.12986,186.50294 646.26955,202.54828 647.49865,251.92825 C 645.69329,302.14545 581.63206,316.22267 542.57632,322.93378 C 536.5683,323.5202 517.3308,324 499.82632,324 L 468,324 L 468,306 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/abase.svg b/share/extensions/alphabet_soup/abase.svg new file mode 100755 index 000000000..0a95a6273 --- /dev/null +++ b/share/extensions/alphabet_soup/abase.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 396.54555,271.5 C 403.73674,198.51344 458.75438,180.0647 522,179.73419 L 522,197.72815 C 488.98342,201.50437 470.83028,236.95708 470.83028,264.55678 L 467.86228,396 L 395.91491,396 L 396.54555,271.5 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/acap.svg b/share/extensions/alphabet_soup/acap.svg new file mode 100644 index 000000000..dfc7ede1b --- /dev/null +++ b/share/extensions/alphabet_soup/acap.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 322,160 L 506,160 L 506,200 L 322,200 L 322,160 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/b.svg b/share/extensions/alphabet_soup/b.svg new file mode 100755 index 000000000..fd01a263b --- /dev/null +++ b/share/extensions/alphabet_soup/b.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 396,180 L 468,180 L 468,191.90142 C 484.59512,182.33029 503.29608,180.63132 522,179.70572 L 522,197.64142 C 491.45484,201.06591 472.13382,222.38085 467.64142,252 L 396,252 L 396,180 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/bar.svg b/share/extensions/alphabet_soup/bar.svg new file mode 100755 index 000000000..8b477e378 --- /dev/null +++ b/share/extensions/alphabet_soup/bar.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 396,252 L 468,252 L 468,396 L 396,396 L 396,252 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/bar2.svg b/share/extensions/alphabet_soup/bar2.svg new file mode 100755 index 000000000..39ed825ae --- /dev/null +++ b/share/extensions/alphabet_soup/bar2.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 396,252 L 468,252 L 468,414 L 396,414 L 396,252 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/barcap.svg b/share/extensions/alphabet_soup/barcap.svg new file mode 100644 index 000000000..0f7626d9b --- /dev/null +++ b/share/extensions/alphabet_soup/barcap.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 252.24192,36.664455 L 341.6763,36.664455 L 341.6763,431.93248 L 252.24192,431.93248 L 252.24192,36.664455 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/c.svg b/share/extensions/alphabet_soup/c.svg new file mode 100755 index 000000000..c6261a0e5 --- /dev/null +++ b/share/extensions/alphabet_soup/c.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 522,450.28755 C 524.6521,450.06637 527.3042,449.8452 529.9563,449.62402 C 553.24409,447.68189 577.42489,434.76058 591.92978,416.50771 C 598.87621,407.76635 605.88482,394.3104 608.47094,384.75 L 610.29684,378 L 627.75096,377.95348 C 624.09745,394.97614 617.77483,410.68918 608.08707,425.0933 C 589.83064,449.11135 560.59369,465.14357 530.61383,467.57612 C 527.74255,467.80909 524.87128,468.04207 522,468.27504 L 522,450.28755 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/cross.svg b/share/extensions/alphabet_soup/cross.svg new file mode 100755 index 000000000..89b67fefe --- /dev/null +++ b/share/extensions/alphabet_soup/cross.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 396,198 L 378,198 L 378,180 L 504,180 L 504,198 L 468,198 L 468,252 L 396,252 L 396,198 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/cserif.svg b/share/extensions/alphabet_soup/cserif.svg new file mode 100755 index 000000000..14669a0ad --- /dev/null +++ b/share/extensions/alphabet_soup/cserif.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 522,450.27586 C 577.04846,446.35647 605.97828,412.81324 612.30948,360 L 630,360 L 630,450 L 612.22709,450 C 611.45458,444.02962 610.39687,437.37255 604.52088,434.41588 C 601.84003,433.74303 601.94975,433.67255 589.52556,444.049 C 570.2855,460.25388 546.48114,466.37309 522,468.29505 L 522,450.27586 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/e.svg b/share/extensions/alphabet_soup/e.svg new file mode 100755 index 000000000..03106dd97 --- /dev/null +++ b/share/extensions/alphabet_soup/e.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 468,306 L 575.5984,306 C 571.81773,269.10345 564.72169,207.65975 522,197.5267 L 522,180 C 602.29926,181.10794 643.28869,251.19261 648.28591,324 L 468,324 L 468,306 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/epsilon.svg b/share/extensions/alphabet_soup/epsilon.svg new file mode 100755 index 000000000..a2dd33e60 --- /dev/null +++ b/share/extensions/alphabet_soup/epsilon.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> +</svg> diff --git a/share/extensions/alphabet_soup/f.svg b/share/extensions/alphabet_soup/f.svg new file mode 100755 index 000000000..c0f94c3ed --- /dev/null +++ b/share/extensions/alphabet_soup/f.svg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648" + id="svg3379"> + <defs + id="defs3382" /> + <path + d="M 396,108 L 468,108 L 468,180 L 396,180 L 396,108 z" + id="path3388" + style="fill:#000000" /> +</svg> diff --git a/share/extensions/alphabet_soup/gamma.svg b/share/extensions/alphabet_soup/gamma.svg new file mode 100755 index 000000000..29cc11fbd --- /dev/null +++ b/share/extensions/alphabet_soup/gamma.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 413.74236,645.64547 C 383.0319,635.17985 363.9313,598.29804 370.41198,561.97779 C 372.2609,551.61571 374.419,546.6985 395.41883,505 L 413.80063,468.5 L 450.19937,468.5 L 468.58117,505 C 489.581,546.6985 491.7391,551.61571 493.58802,561.97779 C 499.03048,592.47942 487.00637,623.14961 463.42158,638.92408 C 449.05594,648.48459 430.22428,650.72284 413.74236,645.64547 z M 441.26639,611.4249 C 453.76562,607.16598 466.11947,585.75784 461.95112,567 C 460.95667,562.52492 433.16738,505 432,505 C 430.83262,505 403.04333,562.52492 402.04888,567 C 398.82769,581.49556 403.43305,596.9298 413.66762,605.93863 C 421.31834,612.67306 428.76716,615.68381 441.26639,611.4249 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/h.svg b/share/extensions/alphabet_soup/h.svg new file mode 100755 index 000000000..ee0b78365 --- /dev/null +++ b/share/extensions/alphabet_soup/h.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 575.2219,287.78922 C 574.2749,253.72932 561.8497,203.19019 522,197.72815 L 522,179.73419 C 590.28223,178.93273 647.45445,205.07873 647.45445,271.5 L 648.08509,396 L 576.13772,396 L 575.2219,287.78922 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/h2.svg b/share/extensions/alphabet_soup/h2.svg new file mode 100755 index 000000000..636b4dfd4 --- /dev/null +++ b/share/extensions/alphabet_soup/h2.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 522,197.72815 L 522,179.73419 C 590.28223,178.93273 647.45445,202.45781 647.45445,271.5 L 648.08509,396 L 576.13772,396 L 576.48224,300.74674 C 575.32181,264.18339 567.07556,203.90649 522,197.72815 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/hcap.svg b/share/extensions/alphabet_soup/hcap.svg new file mode 100644 index 000000000..4ec6ad5ab --- /dev/null +++ b/share/extensions/alphabet_soup/hcap.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 340,214 L 434,214 L 434,254 L 340,254 L 340,214 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/idot.svg b/share/extensions/alphabet_soup/idot.svg new file mode 100755 index 000000000..d3d0dadb0 --- /dev/null +++ b/share/extensions/alphabet_soup/idot.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 396.4094,107.43029 C 396.42229,88.427407 412.3363,72.550017 432.21078,72.501168 C 452.18507,72.452074 467.66287,88.422867 467.69183,107.97927 C 467.72094,127.63549 452.65182,143.43658 432.00005,143.53592 C 411.24846,143.63574 396.39651,126.4335 396.4094,107.43029 z" /> +</svg> diff --git a/share/extensions/alphabet_soup/j.svg b/share/extensions/alphabet_soup/j.svg new file mode 100755 index 000000000..14350d4b0 --- /dev/null +++ b/share/extensions/alphabet_soup/j.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 522,1 L 522,17.742339 C 481.28616,23.49216 468.03999,72.416193 468,108 L 395.76701,108 C 400.36091,43.138368 460.53099,1.2823612 522,1 z" /> +</svg> diff --git a/share/extensions/alphabet_soup/k.svg b/share/extensions/alphabet_soup/k.svg new file mode 100755 index 000000000..314f2b0b9 --- /dev/null +++ b/share/extensions/alphabet_soup/k.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 468,359.49318 L 468,342.53957 L 584,207.36758 C 583.19563,203.56902 580.27236,200.82404 577.79282,198 L 558,198 L 558,180 L 648,180 L 648,198 C 640.42767,197.67211 633.17994,198.29561 626.83386,202.78843 L 522.1552,323.78851 C 564.42919,364.26962 603.76044,407.93742 647.06955,447.34097 C 652.84594,450.23664 659.67138,449.89061 666,450.25697 L 666,468 L 576.49312,468 L 468,359.49318 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/l.svg b/share/extensions/alphabet_soup/l.svg new file mode 100755 index 000000000..00beccf9f --- /dev/null +++ b/share/extensions/alphabet_soup/l.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 396,108 L 468,108 L 468,252 L 396,252 L 396,108 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/lserif.svg b/share/extensions/alphabet_soup/lserif.svg new file mode 100755 index 000000000..082093191 --- /dev/null +++ b/share/extensions/alphabet_soup/lserif.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 377.93068,432.20912 L 377.93068,414.43335 C 388.46323,412.80461 393.80806,405.7463 396.41481,396 L 468,396 L 468,467.95278 L 377.93068,432.20912 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/m.svg b/share/extensions/alphabet_soup/m.svg new file mode 100755 index 000000000..abe974a58 --- /dev/null +++ b/share/extensions/alphabet_soup/m.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 576.13772,280.98105 C 572.44938,248.84942 559.30603,202.84155 522,197.72815 L 522,179.73419 C 565.19741,177.92174 604.08134,192.77489 630.21232,227.91572 C 647.33056,203.82949 672.66121,186.57085 702,182.25038 L 702,197.74234 C 662.1276,207.18202 650.05284,246.25281 648,282.69287 L 648,396 L 576.13772,396 L 576.13772,280.98105 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/mcap.svg b/share/extensions/alphabet_soup/mcap.svg new file mode 100644 index 000000000..373e133dd --- /dev/null +++ b/share/extensions/alphabet_soup/mcap.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 195.07094,35.141836 C 192.93943,26.618646 186.69352,21 178,21 L 178,0 L 300,0 C 304.92852,4.0636792 307.05515,13.545636 308.01012,20 L 290,20 L 290,434 L 196,434 C 194.50054,301.07612 198.17114,168.04946 195.07094,35.141836 z M 574,56 L 556,56 L 556,20 L 520,20 C 520.33022,13.651854 521.21314,4.0134453 526.71404,1.1368684e-13 L 686,1.1368684e-13 L 686,21 C 676.96001,20.374092 671.60532,27.237265 668.92906,35.141836 L 668,434 L 574,434 L 574,56 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/n.svg b/share/extensions/alphabet_soup/n.svg new file mode 100755 index 000000000..420042a19 --- /dev/null +++ b/share/extensions/alphabet_soup/n.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 396,217.21055 C 395.97058,205.94989 388.09247,200.51206 378,197.58519 L 378,180 L 468,180 L 468,191.90142 C 484.59512,182.33029 503.29608,180.63132 522,179.70572 L 522,197.64142 C 491.44636,201.07259 472.13525,222.37147 467.64142,252 L 396,252 L 396,217.21055 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/o.svg b/share/extensions/alphabet_soup/o.svg new file mode 100755 index 000000000..967bad08f --- /dev/null +++ b/share/extensions/alphabet_soup/o.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 396.40448,322.99577 C 395.58905,253.10571 448.00479,180 522,180 L 522,197.5267 C 484.55576,207.67232 469.05389,282.8807 468.5,324 C 469.24734,364.1501 484.83088,440.79214 522,450.4733 L 522,468 C 445.49339,467.3577 397.16518,393.82612 396.40448,322.99577 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/ocap.svg b/share/extensions/alphabet_soup/ocap.svg new file mode 100644 index 000000000..3eeb2aab3 --- /dev/null +++ b/share/extensions/alphabet_soup/ocap.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 232,234 C 233.66926,111.97403 302.98118,0.35957946 434,0.35957946 L 434,39 C 349.8511,41.371236 327.49239,172.9012 327.43561,239.14817 C 326.36353,301.17293 356.5529,429 434,429 L 434,470 C 304.64047,469.72235 234.79031,354.23983 232,234 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/question.svg b/share/extensions/alphabet_soup/question.svg new file mode 100644 index 000000000..90b012f3e --- /dev/null +++ b/share/extensions/alphabet_soup/question.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 379.1115,243.87415 C 331.63948,221.02907 305.17158,177.44842 304,126 C 304.10942,71.362793 335.63742,26.535953 385.13135,5.8274636 C 400.59579,0.94927881 417.73322,-0.74582647 434,0.20129697 L 434,20.739895 C 389.42751,27.265011 381.35691,88.664883 381.52445,126 C 381.73345,172.57377 390.02396,229.93178 446.86385,231.99421 C 455.7306,232.31594 457.80064,232.32202 461.2119,234.23925 C 468.73163,238.58122 470,246.15478 470,254 L 393.04611,254 C 390.12737,248.74743 384.26569,246.43772 379.1115,243.87415 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/r.svg b/share/extensions/alphabet_soup/r.svg new file mode 100755 index 000000000..bb2273a0a --- /dev/null +++ b/share/extensions/alphabet_soup/r.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 592.99353,251.12139 C 575.14192,244.35645 572.91506,227.77213 582.80984,213.1914 C 563.81023,203.88337 543.23105,198.02637 522,198 L 522,179.7048 C 555.52946,180.64247 588.14157,191.68258 613.84732,213.34814 C 622.68687,220.79837 622.73967,235.92625 614.63303,244.84732 C 609.95629,249.9939 599.04087,253.41305 592.99353,251.12139 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/rcap.svg b/share/extensions/alphabet_soup/rcap.svg new file mode 100644 index 000000000..a887ab827 --- /dev/null +++ b/share/extensions/alphabet_soup/rcap.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 499.24145,321.47832 C 491.28205,288.08485 466.98548,255 430,255 L 430,213.71285 C 506.29217,215.25336 571.222,243.91309 595.45778,321.5 L 596.09296,434 L 502.21668,434 C 499.28967,396.82866 505.98901,358.30974 499.24145,321.47832 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/s.svg b/share/extensions/alphabet_soup/s.svg new file mode 100755 index 000000000..dc7c6fc16 --- /dev/null +++ b/share/extensions/alphabet_soup/s.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 522,450 C 547.86042,450.23399 575.18402,432.48473 575.5,405 C 575.83952,374.49118 546.90062,362.54174 520.5,360.00916 C 467.65402,359.84026 420.037,334.76552 402.52136,297.88256 C 380.20717,218.58166 454.09823,180.1172 522,180 L 522,198 C 496.13958,197.76601 468.81598,215.51527 468.5,243 C 468.16048,273.50882 497.09938,285.45826 523.5,287.99084 C 576.34598,288.15974 623.963,313.23448 641.47864,350.11744 C 663.79283,429.41835 589.90178,467.88278 522,468 L 522,450 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/serif.svg b/share/extensions/alphabet_soup/serif.svg new file mode 100755 index 000000000..d2bf55e0a --- /dev/null +++ b/share/extensions/alphabet_soup/serif.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 378,450.41481 C 385.04009,449.05282 390.71188,446.07357 394.10367,439.5786 C 395.89343,436.15137 395.95907,432.81034 395.97804,415.75 L 396,396 L 468,396 L 468.02196,415.75 C 468.04093,432.81034 468.35354,436.03025 469.89633,439.5786 C 472.90125,446.4898 479.36545,448.64033 486,450.41481 L 486,468 L 378,468 L 378,450.41481 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/t.svg b/share/extensions/alphabet_soup/t.svg new file mode 100755 index 000000000..7940a68e2 --- /dev/null +++ b/share/extensions/alphabet_soup/t.svg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648" + id="svg3021"> + <defs + id="defs3024" /> + <path + d="M 396,144.00541 L 468,107.99459 L 468,180 L 396,180 L 396,144.00541 z" + id="path3030" + style="fill:#000000" /> +</svg> diff --git a/share/extensions/alphabet_soup/tserif.svg b/share/extensions/alphabet_soup/tserif.svg new file mode 100755 index 000000000..df095c093 --- /dev/null +++ b/share/extensions/alphabet_soup/tserif.svg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648" + id="svg3109"> + <defs + id="defs3112" /> + <path + d="M 396,396 L 468.5424,396 C 471.23667,411.21933 478.03593,431.45141 496.28288,431.8016 C 507.19866,431.37331 510.32553,421.46179 516.756,415 L 532,427.78714 C 522.68412,452.69658 494.97645,467.13684 470.33388,468.03876 C 425.31789,469.68634 402.20226,438.60703 396,396 z" + id="path2615" + style="fill:#000000" /> +</svg> diff --git a/share/extensions/alphabet_soup/v.svg b/share/extensions/alphabet_soup/v.svg new file mode 100755 index 000000000..917580771 --- /dev/null +++ b/share/extensions/alphabet_soup/v.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 324,288.0044 L 324.11177,216.5 L 413.99956,395 L 522.04609,179.90536 L 540,216.07787 L 540,288.0044 L 449.9978,468 L 414.0022,468 L 324,288.0044 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/vcap.svg b/share/extensions/alphabet_soup/vcap.svg new file mode 100644 index 000000000..c36f5d466 --- /dev/null +++ b/share/extensions/alphabet_soup/vcap.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 250,16 L 308.5,16.013451 L 414,344 L 519.5,16.013451 L 614,16 L 470.5,469.98578 L 393.5,469.98578 L 250,16 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/vserl.svg b/share/extensions/alphabet_soup/vserl.svg new file mode 100755 index 000000000..90c92276b --- /dev/null +++ b/share/extensions/alphabet_soup/vserl.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 286.04853,213.28223 C 281.15258,203.54653 275.32901,198.99797 264.3185,198 L 261,198 L 261,180 L 342,180 L 342,198 L 334.42308,198 C 327.38192,198 326.63946,198.20669 323.92308,200.92308 C 318.67531,205.9855 322.92458,212.00136 323.5,217.98886 L 323.5,286.97955 L 286.04853,213.28223 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/vserr.svg b/share/extensions/alphabet_soup/vserr.svg new file mode 100755 index 000000000..964ae97a8 --- /dev/null +++ b/share/extensions/alphabet_soup/vserr.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 522,211 L 508,211 C 509.16261,197.0674 496.43802,198 486,198 L 486,180 L 603,180 L 603,197.72222 C 593.98444,198.08146 586.01933,199.57834 580.98041,207.54755 L 539.95908,288 L 522,288 L 522,211 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/x.svg b/share/extensions/alphabet_soup/x.svg new file mode 100755 index 000000000..f40b0a9fb --- /dev/null +++ b/share/extensions/alphabet_soup/x.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 299.40862,211.63998 C 290.61894,201.41815 282.83995,198 270,198 L 270,180 L 378,180 L 378,198 C 369.69256,197.41657 364.67798,201.39745 370.12904,208.69118 L 443.32874,295.21127 L 528.37629,208.62443 C 533.96348,202.2222 528.37929,198 522,198 L 522,180 L 594,180 L 594,197.73699 C 587.7236,198.11755 580.04945,196.29498 575.5,200.77484 L 459.90086,314.60579 L 468.16997,324 L 396.02616,324 L 299.40862,211.63998 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/y.svg b/share/extensions/alphabet_soup/y.svg new file mode 100755 index 000000000..089cec9c8 --- /dev/null +++ b/share/extensions/alphabet_soup/y.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 477.09103,593.15836 L 413.99683,468 L 450.5,468.15564 L 504.72008,577.46901 C 509.65203,566.06508 518.51623,558.70062 531,558.54636 C 547.21611,558.34598 556.41762,570.43408 557.78184,585.5 C 559.88329,608.70762 538.91445,618.7373 518.64216,619.95485 C 498.86713,621.14254 485.44673,609.73335 477.09103,593.15836 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/yogh.svg b/share/extensions/alphabet_soup/yogh.svg new file mode 100755 index 000000000..6e6f19d19 --- /dev/null +++ b/share/extensions/alphabet_soup/yogh.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 288.42793,465.05582 C 289.40321,397.00935 327.95172,357.80486 387.6958,331.06026 C 398.23942,327.59968 398.83579,325.57963 397.25615,324 L 431.73781,324 L 467.9042,324 L 483.02394,341.5 L 433.17281,342.5295 C 424.38848,342.88033 421.26737,343.37986 418.5,344.38769 C 372.71776,365.93027 362.26294,420.9786 360.21638,466.75049 C 360.12169,509.28116 377.39271,594 432,594 C 432,600 432,606 432,612 C 349.58791,610.79376 289.07182,545.91599 288.42793,465.05582 z"/> +</svg> diff --git a/share/extensions/alphabet_soup/z.svg b/share/extensions/alphabet_soup/z.svg new file mode 100755 index 000000000..7826d59e0 --- /dev/null +++ b/share/extensions/alphabet_soup/z.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="864" + height="648"> + <path + d="M 288,199.19309 L 288,180 L 576,180 L 576,216 L 558.41481,216 C 555.77854,201.15181 545.97442,198.02196 532.61943,198.02196 L 378.91141,198.02196 C 369.66544,198.02196 363.51424,201.38267 370.14435,209.16095 L 468.03168,324 L 396.0296,324 L 288,199.19309 z"/> +</svg> diff --git a/share/extensions/render_alphabetsoup.inx b/share/extensions/render_alphabetsoup.inx new file mode 100644 index 000000000..4eccecb8d --- /dev/null +++ b/share/extensions/render_alphabetsoup.inx @@ -0,0 +1,19 @@ +<inkscape-extension> + <_name>Alphabet Soup</_name> + <id>org.ekips.filter.alphabetsoup</id> + <dependency type="executable" location="extensions">render_alphabetsoup.py</dependency> + <dependency type="executable" location="extensions">render_alphabetsoup_config.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + <param name="text" type="string" _gui-text="Text">Inkscape</param> + <param name="zoom" type="float" min="0.0" max="1000.0" _gui-text="Zoom">8.0</param> + <param name="seed" type="int" min="0" max="65535" _gui-text="Random Seed">0</param> + <effect> + <object-type>all</object-type> + <effects-menu> + <submenu _name="Render"/> + </effects-menu> + </effect> + <script> + <command reldir="extensions" interpreter="python">render_alphabetsoup.py</command> + </script> +</inkscape-extension> diff --git a/share/extensions/render_alphabetsoup.py b/share/extensions/render_alphabetsoup.py new file mode 100644 index 000000000..e3f64fc07 --- /dev/null +++ b/share/extensions/render_alphabetsoup.py @@ -0,0 +1,456 @@ +#!/usr/bin/env python +''' +Copyright (C) 2001-2002 Matt Chisholm matt@theory.org +Copyright (C) 2008 Joel Holdsworth joel@airwebreathe.org.uk + for AP + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +''' + +import copy +import inkex +import simplestyle +import math +import cmath +import string +import random +import render_alphabetsoup_config +import bezmisc +import simplepath +import os +import sys + +syntax = render_alphabetsoup_config.syntax +alphabet = render_alphabetsoup_config.alphabet +units = render_alphabetsoup_config.units +font = render_alphabetsoup_config.font + +# Loads a super-path from a given SVG file +def loadPath( svgPath ): + extensionDir = os.path.normpath(os.path.join(os.getcwd(),os.path.dirname(sys.argv[0]))) + tree = inkex.etree.parse( extensionDir + "/" + svgPath ) + root = tree.getroot() + pathElement = root.find('{http://www.w3.org/2000/svg}path') + if pathElement == None: + return None, 0, 0 + d = pathElement.get("d") + width = float(root.get("width")) + height = float(root.get("height")) + return simplepath.parsePath(d), width, height # Currently we only support a single path + +def combinePaths( pathA, pathB ): + if pathA == None and pathB == None: + return None + elif pathA == None: + return pathB + elif pathB == None: + return pathA + else: + return pathA + pathB + +def flipLeftRight( sp, width ): + for cmd,params in sp: + defs = simplepath.pathdefs[cmd] + for i in range(defs[1]): + if defs[3][i] == 'x': + params[i] = width - params[i] + +def flipTopBottom( sp, height ): + for cmd,params in sp: + defs = simplepath.pathdefs[cmd] + for i in range(defs[1]): + if defs[3][i] == 'y': + params[i] = height - params[i] + +def solveQuadratic(a, b, c): + det = b*b - 4.0*a*c + if det >= 0: # real roots + sdet = math.sqrt(det) + else: # complex roots + sdet = cmath.sqrt(det) + return (-b + sdet) / (2*a), (-b - sdet) / (2*a) + +def cbrt(x): + if x >= 0: + return x**(1.0/3.0) + else: + return -((-x)**(1.0/3.0)) + +def findRealRoots(a,b,c,d): + if a != 0: + a, b, c, d = 1, b/float(a), c/float(a), d/float(a) # Divide through by a + t = b / 3.0 + p, q = c - 3 * t**2, d - c * t + 2 * t**3 + u, v = solveQuadratic(1, q, -(p/3.0)**3) + if type(u) == type(0j): # Complex Cubic Root + r = math.sqrt(u.real**2 + u.imag**2) + w = math.atan2(u.imag, u.real) + y1 = 2 * cbrt(r) * math.cos(w / 3.0) + else: # Complex Real Root + y1 = cbrt(u) + cbrt(v) + + y2, y3 = solveQuadratic(1, y1, p + y1**2) + + if type(y2) == type(0j): # Are y2 and y3 complex? + return [y1 - t] + return [y1 - t, y2 - t, y3 - t] + elif b != 0: + det=c*c - 4.0*b*d + if det >= 0: + return [(-c + math.sqrt(det))/(2.0*b),(-c - math.sqrt(det))/(2.0*b)] + elif c != 0: + return [-d/c] + return [] + +def getPathBoundingBox( sp ): + + box = None + last = None + lostctrl = None + + for cmd,params in sp: + + segmentBox = None + + if cmd == 'M': + # A move cannot contribute to the bounding box + last = params[:] + lastctrl = params[:] + elif cmd == 'L': + if last: + segmentBox = (min(params[0], last[0]), max(params[0], last[0]), min(params[1], last[1]), max(params[1], last[1])) + last = params[:] + lastctrl = params[:] + elif cmd == 'C': + if last: + segmentBox = (min(params[4], last[0]), max(params[4], last[0]), min(params[5], last[1]), max(params[5], last[1])) + + bx0, by0 = last[:] + bx1, by1, bx2, by2, bx3, by3 = params[:] + + # Compute the x limits + a = (-bx0 + 3*bx1 - 3*bx2 + bx3)*3 + b = (3*bx0 - 6*bx1 + 3*bx2)*2 + c = (-3*bx0 + 3*bx1) + ts = findRealRoots(0, a, b, c) + for t in ts: + if t >= 0 and t <= 1: + x = (-bx0 + 3*bx1 - 3*bx2 + bx3)*(t**3) + \ + (3*bx0 - 6*bx1 + 3*bx2)*(t**2) + \ + (-3*bx0 + 3*bx1)*t + \ + bx0 + segmentBox = (min(segmentBox[0], x), max(segmentBox[1], x), segmentBox[2], segmentBox[3]) + + # Compute the y limits + a = (-by0 + 3*by1 - 3*by2 + by3)*3 + b = (3*by0 - 6*by1 + 3*by2)*2 + c = (-3*by0 + 3*by1) + ts = findRealRoots(0, a, b, c) + for t in ts: + if t >= 0 and t <= 1: + y = (-by0 + 3*by1 - 3*by2 + by3)*(t**3) + \ + (3*by0 - 6*by1 + 3*by2)*(t**2) + \ + (-3*by0 + 3*by1)*t + \ + by0 + segmentBox = (segmentBox[0], segmentBox[1], min(segmentBox[2], y), max(segmentBox[3], y)) + + last = params[-2:] + lastctrl = params[2:4] + + elif cmd == 'Q': + # Provisional + if last: + segmentBox = (min(params[0], last[0]), max(params[0], last[0]), min(params[1], last[1]), max(params[1], last[1])) + last = params[-2:] + lastctrl = params[2:4] + + elif cmd == 'A': + # Provisional + if last: + segmentBox = (min(params[0], last[0]), max(params[0], last[0]), min(params[1], last[1]), max(params[1], last[1])) + last = params[-2:] + lastctrl = params[2:4] + + if segmentBox: + if box: + box = (min(segmentBox[0],box[0]), max(segmentBox[1],box[1]), min(segmentBox[2],box[2]), max(segmentBox[3],box[3])) + else: + box = segmentBox + return box + +def mxfm( image, width, height, stack ): # returns possibly transformed image + tbimage = image + if ( stack[0] == "-" ): # top-bottom flip + flipTopBottom(tbimage, height) + stack.pop( 0 ) + + lrimage = tbimage + if ( stack[0] == "|" ): # left-right flip + flipLeftRight(tbimage, width) + stack.pop( 0 ) + return lrimage + +def comparerule( rule, nodes ): # compare node list to nodes in rule + for i in range( 0, len(nodes)): # range( a, b ) = (a, a+1, a+2 ... b-2, b-1) + if (nodes[i] == rule[i][0]): + pass + else: return 0 + return 1 + +def findrule( state, nodes ): # find the rule which generated this subtree + ruleset = syntax[state][1] + nodelen = len(nodes) + for rule in ruleset: + rulelen = len(rule) + if ((rulelen == nodelen) and (comparerule( rule, nodes ))): + return rule + return + +def generate( state ): # generate a random tree (in stack form) + stack = [ state ] + if ( len(syntax[state]) == 1 ): # if this is a stop symbol + return stack + else: + stack.append( "[" ) + path = random.randint(0, (len(syntax[state][1])-1)) # choose randomly from next states + for symbol in syntax[state][1][path]: # recurse down each non-terminal + if ( symbol != 0 ): # 0 denotes end of list ### + substack = generate( symbol[0] ) # get subtree + for elt in substack: + stack.append( elt ) + if (symbol[3]):stack.append( "-" ) # top-bottom flip + if (symbol[4]):stack.append( "|" ) # left-right flip + #else: + #inkex.debug("found end of list in generate( state =", state, ")") # this should be deprecated/never happen + stack.append("]") + return stack + +def draw( stack ): # draw a character based on a tree stack + state = stack.pop(0) + #print state, + + image, width, height = loadPath( font+syntax[state][0] ) # load the image + if (stack[0] != "["): # terminal stack element + if (len(syntax[state]) == 1): # this state is a terminal node + return image, width, height + else: + substack = generate( state ) # generate random substack + return draw( substack ) # draw random substack + else: + #inkex.debug("[") + stack.pop(0) + images = [] # list of daughter images + nodes = [] # list of daughter names + while (stack[0] != "]"): # for all nodes in stack + newstate = stack[0] # the new state + newimage, width, height = draw( stack ) # draw the daughter state + if (newimage): + tfimage = mxfm( newimage, width, height, stack ) # maybe transform daughter state + images.append( [tfimage, width, height] ) # list of daughter images + nodes.append( newstate ) # list of daughter nodes + else: + #inkex.debug(("recurse on",newstate,"failed")) # this should never happen + return None, 0, 0 + rule = findrule( state, nodes ) # find the rule for this subtree + + for i in range( 0, len(images)): + currimg, width, height = images[i] + + if currimg: + #box = getPathBoundingBox(currimg) + dx = rule[i][1]*units + dy = rule[i][2]*units + #newbox = ((box[0]+dx),(box[1]+dy),(box[2]+dx),(box[3]+dy)) + simplepath.translatePath(currimg, dx, dy) + image = combinePaths( image, currimg ) + + stack.pop( 0 ) + return image, width, height + +def draw_crop_scale( stack, zoom ): # draw, crop and scale letter image + image, width, height = draw(stack) + bbox = getPathBoundingBox(image) + simplepath.translatePath(image, -bbox[0], 0) + simplepath.scalePath(image, zoom/units, zoom/units) + return image, bbox[1] - bbox[0], bbox[3] - bbox[2] + +def randomize_input_string( str, zoom ): # generate list of images based on input string + imagelist = [] + + for i in range(0,len(str)): + char = str[i] + #if ( re.match("[a-zA-Z0-9?]", char)): + if ( alphabet.has_key(char)): + if ((i > 0) and (char == str[i-1])): # if this letter matches previous letter + imagelist.append(imagelist[len(stack)-1])# make them the same image + else: # generate image for letter + stack = string.split( alphabet[char][random.randint(0,(len(alphabet[char])-1))] , "." ) + #stack = string.split( alphabet[char][random.randint(0,(len(alphabet[char])-2))] , "." ) + imagelist.append( draw_crop_scale( stack, zoom )) + elif( char == " "): # add a " " space to the image list + imagelist.append( " " ) + else: # this character is not in config.alphabet, skip it + print "bad character", char + return imagelist + +def optikern( image, width, zoom ): # optical kerning algorithm + left = [] + right = [] + + for i in range( 0, 36 ): + y = 0.5 * (i + 0.5) * zoom + xmin = None + xmax = None + + for cmd,params in image: + + segmentBox = None + + if cmd == 'M': + # A move cannot contribute to the bounding box + last = params[:] + lastctrl = params[:] + elif cmd == 'L': + if (y >= last[1] and y <= params[1]) or (y >= params[1] and y <= last[1]): + if params[0] == last[0]: + x = params[0] + else: + a = (params[1] - last[1]) / (params[0] - last[0]) + b = last[1] - a * last[0] + if a != 0: + x = (y - b) / a + else: x = None + + if x: + if xmin == None or x < xmin: xmin = x + if xmax == None or x > xmax: xmax = x + + last = params[:] + lastctrl = params[:] + elif cmd == 'C': + if last: + bx0, by0 = last[:] + bx1, by1, bx2, by2, bx3, by3 = params[:] + + d = by0 - y + c = -3*by0 + 3*by1 + b = 3*by0 - 6*by1 + 3*by2 + a = -by0 + 3*by1 - 3*by2 + by3 + + ts = findRealRoots(a, b, c, d) + + for t in ts: + if t >= 0 and t <= 1: + x = (-bx0 + 3*bx1 - 3*bx2 + bx3)*(t**3) + \ + (3*bx0 - 6*bx1 + 3*bx2)*(t**2) + \ + (-3*bx0 + 3*bx1)*t + \ + bx0 + if xmin == None or x < xmin: xmin = x + if xmax == None or x > xmax: xmax = x + + last = params[-2:] + lastctrl = params[2:4] + + elif cmd == 'Q': + # Quadratic beziers are ignored + last = params[-2:] + lastctrl = params[2:4] + + elif cmd == 'A': + # Arcs are ignored + last = params[-2:] + lastctrl = params[2:4] + + + if xmin != None and xmax != None: + left.append( xmin ) # distance from left edge of region to left edge of bbox + right.append( width - xmax ) # distance from right edge of region to right edge of bbox + else: + left.append( width ) + right.append( width ) + + return (left, right) + +def layoutstring( imagelist, zoom ): # layout string of letter-images using optical kerning + kernlist = [] + length = zoom + for entry in imagelist: + if (entry == " "): # leaving room for " " space characters + length = length + (zoom * render_alphabetsoup_config.space) + else: + image, width, height = entry + length = length + width + zoom # add letter length to overall length + kernlist.append( optikern(image, width, zoom) ) # append kerning data for this image + + workspace = None + + position = zoom + for i in range(0, len(kernlist)): + while(imagelist[i] == " "): + position = position + (zoom * render_alphabetsoup_config.space ) + imagelist.pop(i) + image, width, height = imagelist[i] + + # set the kerning + if i == 0: kern = 0 # for first image, kerning is zero + else: + kerncompare = [] # kerning comparison array + for j in range( 0, len(kernlist[i][0])): + kerncompare.append( kernlist[i][0][j]+kernlist[i-1][1][j] ) + kern = min( kerncompare ) + + position = position - kern # move position back by kern amount + thisimage = copy.deepcopy(image) + simplepath.translatePath(thisimage, position, 0) + workspace = combinePaths(workspace, thisimage) + position = position + width + zoom # advance position by letter width + + return workspace + +class AlphabetSoup(inkex.Effect): + def __init__(self): + inkex.Effect.__init__(self) + self.OptionParser.add_option("-t", "--text", + action="store", type="string", + dest="text", default="Inkscape", + help="The text for alphabet soup") + self.OptionParser.add_option("-z", "--zoom", + action="store", type="float", + dest="zoom", default="8.0", + help="The zoom on the output graphics") + self.OptionParser.add_option("-s", "--seed", + action="store", type="int", + dest="seed", default="0", + help="The random seed for the soup") + + def effect(self): + zoom = self.options.zoom + random.seed(self.options.seed) + + imagelist = randomize_input_string(self.options.text, zoom) + image = layoutstring( imagelist, zoom ) + + if image: + s = { 'stroke': 'none', 'fill': '#000000' } + + new = inkex.etree.Element(inkex.addNS('path','svg')) + new.set('style', simplestyle.formatStyle(s)) + + new.set('d', simplepath.formatPath(image)) + self.current_layer.append(new) + +e = AlphabetSoup() +e.affect() + diff --git a/share/extensions/render_alphabetsoup_config.py b/share/extensions/render_alphabetsoup_config.py new file mode 100644 index 000000000..7bd674d03 --- /dev/null +++ b/share/extensions/render_alphabetsoup_config.py @@ -0,0 +1,581 @@ +# Syntax format: (raise your hand if you know lisp :-) +# +# 'state0': ("file.svg", ( ( ('state1', dx, dy, T-B, L|R),), +# ( ('state2', ...), ('state3', ...),), +# ( ('state4', ...),), +# ) ), +# ) +# +# Translation of the above in CNF: +# state0 -> state1 +# state0 -> state2 state3 +# state0 -> state4 +# +# Semantics at state0: +# Paste subtree image from state1 onto "file.svg". +# Subtree image is translated by (dx, dy) (measured in units, not pixels!). +# Subtree image is flipped top to bottom if v==1. +# Subtree image is flipped left to right if h==1. +# +# Notes: +# Origin (0,0) is at *upper* left corner. +# For optional reflections, add both reflecting and non-reflecting rules +# For 180 degree rotations, set v = 1, h = 1. +# It helps to have an empty "epsilon" image. +# +# Jan. 16 2002 +# Removed zeros from the end of rules, changed the code to reflect this. +# Remember to add trailing ',' at ends of lists, especially singletons. +# +# Jan. 20-26 2002 +# Added uppercase. + +syntax = { + 'start': ("epsilon.svg", ((('lc', 0,0,0,0),),# start state + (('UC', 0,0,0,0),), + )), + # lowercase + 'lc': ("epsilon.svg", ((('barsym', 0,0,0,0),), #(2096714) (26) + (('lc2', 0,0,0,0),), #(830) (19) + )), + # uppercase + 'UC': ("epsilon.svg", ((('UCb', 0,0,0,0),), #(2160) (30) + (('UCu', 0,-5,0,0),), + )), + 'UCb': ("epsilon.svg", ((('Bar', 0,0,0,0),), #(21) Psi T I KK Phi + (('Bar', 0,0,0,1),), # + (('D', 0,0,0,0),), #(39) D O Q C G + (('D', 0,0,0,1),), # + (('E', 0,0,0,0),), #(373) E B PL 3 3r 8 S Theta Eth/Dyet + (('E', 0,0,0,1),), # + (('F', 0,0,0,0),), #(84) F P R + (('F', 0,0,0,1),), # + (('H', 0,0,0,0),), #(8) H Hblock + (('H', 0,0,0,1),), # + (('L', 0,0,0,0),), #(12) L J U + (('L', 0,0,0,1),), # + (('V', 0,0,0,1),), #(6) A V M Delta Forall W + (('X', 0,0,0,0),), #(172) X N M W Sigma NN + (('X', 0,0,0,0),), #(172) X N M W Sigma NN + )), + 'UCu': ("epsilon.svg", ((('UCb', 0,0,1,1),),)), + # for statistical balancing + 'lc2': ("epsilon.svg", ((('osym', 0,0,0,0),), #(40) o, c, e, ou + (('vsym', 0,0,0,0),), #(40) v, w, ^, y + (('dsym', 0,0,0,1),), #(96) x, z, 7, 2, yogh + (('lc3', 0,0,0,0),), #(928) (5) + )), + 'lc3': ("epsilon.svg", ((('3sym', 0,0,0,0),), #(40) epsilon + (('ssym', 0,0,0,0),), #(8) s + (('asym', 0,0,0,0),), #(880) a 6 9 + )), + # symmetry rules + 'barsym':("epsilon.svg", ((('bar', 0,0,0,0),), + (('bar', 0,0,0,1),), + (('bar', 0,0,1,0),), + (('bar', 0,0,1,1),), + )), + '6sym': ("epsilon.svg", ((('6', 0,0,0,0),), + (('6', 0,0,0,1),), + (('6', 0,0,1,0),), + (('6', 0,0,1,1),), + )), + '3sym': ("epsilon.svg", ((('3', 0,0,0,0),), + (('3', 0,0,0,1),), + (('3', 0,0,1,0),), + (('3', 0,0,1,1),), + )), + 'vsym': ("epsilon.svg", ((('v', 0,0,0,0),), + (('v', 0,0,1,1),), + )), + 'osym': ("epsilon.svg", ((('o', 0,0,0,0),), + (('o', 0,0,0,1),), + )), + 'ssym': ("epsilon.svg", ((('s', 0,0,0,0),), + (('s', 0,0,0,1),), + )), + 'dsym': ("epsilon.svg", ((('diag', 0,0,0,0), ('diag', 0,0,1,1),), + (('diag', 0,0,0,1), ('diag', 0,0,1,0),), + (('dstk', 0,0,0,0),), + )), + 'dstk': ("epsilon.svg", ((('stik', 0,4,0,0), ('z', 0,0,1,1),), + (('stik', 0,4,0,0), ('x', 0,0,1,1),), + (('stik', 0,4,0,1), ('z', 0,0,1,0),), + (('stik', 0,4,0,1), ('x', 0,0,1,0),), + )), + 'asym': ("epsilon.svg", ((('abase', 0,0,0,0),), + (('abase', 0,0,0,1),), + (('abase', 0,0,1,0),), + (('abase', 0,0,1,1),), + )), + # epsilon rules + 'diag': ("epsilon.svg", ((('x', 0,0,0,0),), + (('yogh', 0,0,1,1),), + (('z', 0,0,0,0),), + (('7', 0,0,0,0),), + (('2', 0,0,0,0),), + )), + 'bar': ("bar.svg", ((('vert', 0,0,0,0), ('vert', 0,0,1,0),), # f l i t j glot. + (('k', 0,0,0,0), ('vert', 0,0,0,0), ('vert', 0,0,1,0),), # k + (('b', 0,0,0,0), ('vert', 0,0,1,0),), # h heng + (('n', 0,0,0,0), ('vert', 0,0,1,0),), # n m r eng u uu mu + (('b1', 0,0,0,0), ('b0', 0,0,1,0),), # thorn eject. + (('b1', 0,0,0,0), ('n0', 0,0,1,0),), # b p q d + (('n1', 0,0,0,0), ('n0', 0,0,1,0),), # open-a + )), + 'vert': ("epsilon.svg", ((('xtnd', 0,0,0,0),), + (('srf', 0,0,1,0),), + #(('xtnd', 0,0,0,1),), + #(('srf', 0,0,1,1),), + )), + 'srf': ("epsilon.svg", ((('lserif', 0,0,0,0),), + (('lserif', 0,0,0,1),), + (('serif', 0,0,0,0),), + (('tserif', 0,0,0,0),), + (('tserif', 0,0,0,1),), + )), + 'xtnd': ("epsilon.svg", ((('cross', 0,0,0,0),), # this needs to be L-R flippable + (('cross', 0,0,0,1),), + (('l', 0,0,0,0),), + (('?', 0,0,0,0),), + (('?', 0,0,0,1),), + (('idot', 0,0,0,0),), + )), + 'loop': ("epsilon.svg", ((('o0', 5,0,0,1),), # loop-around elts + (('30', 5,0,0,1),), + )), + 'elike': ("epsilon.svg", ((('e', 0,0,0,0), ('crv', 0,0,1,0),), + (('a', 0,0,0,0), ('crv', 0,0,1,0),), + (('crv', 0,0,0,0), ('crv', 0,0,1,0),), + )), + 'loop2': ("epsilon.svg", ((('elike', 0,0,0,0),), + (('loop', 0,0,0,0),), + )), + 'hlike': ("epsilon.svg", ((('h', 0,0,0,0),), # h-like extensions + (('m', 0,0,0,0),), + (('crv', 0,0,0,0),), + )), + 'crv': ("epsilon.svg", ((('r', 0,0,0,0),), # curvy things + (('cserif', 0,0,1,0),), + )), + # image rules + 'abase': ("abase.svg", ((('n0', 0,0,1,0), ('loop2', 0,0,0,0),), + (('n0', 0,0,1,0), ('loop2', 0,0,1,0),), + (('b0', 0,0,1,0), ('loop2', 0,0,0,0),), + (('b0', 0,0,1,0), ('loop2', 0,0,1,0),), + )), + 'v': ("v.svg", ((('vserl', 0,0,0,0), ('vserr', 0,0,0,0),), + (('vserl', 0,0,0,0), ('vserr', 0,0,0,0), ('y0', 0,0,0,0),), + (('vserl', 0,0,0,0), ('w', 6,0,0,0),), + (('vserl', 0,0,0,0), ('w', 6,0,0,0), ('y0', 0,0,0,0),), + )), + 'w': ("v.svg", ((('vserr', 0,0,0,0),), + (('vserr', 0,0,0,0), ('y0', 0,0,0,0),), + )), + 'y0': ("epsilon.svg", ((('y', 0,0,0,1),), + (('y', 0,0,0,0),), + (('gamma', 0,0,0,0),), + )), + 'l': ("l.svg", ((('j', 0,0,0,0),), + (('j', 0,0,0,1),), + (('srf', 0,-4,1,0),), + )), + 'o': ("o.svg", ((('loop2', 0,0,0,0),), + (('loop2', 0,0,1,0),), + )), + 'cross': ("cross.svg", ((('t', 0,0,0,0),), + (('f0', 0,0,0,0),), + )), + 'f': ("f.svg", ((('j', 0, 0,0,0),), + (('j', 0, 0,0,1),), + (('srf', 0,-4,1,0),), + )), + 'f0': ("f.svg", ((('j', 0, 0,0,0),), + (('srf', 0,-4,1,0),), + )), + 'idot': ("idot.svg", ((('serif', 0,0,1,0),), + (('lserif', 0,0,1,0),), + (('lserif', 0,0,1,1),), + )), + 'stik': ("f.svg", ((('srf', 0,-4,1,0),), + #(('srf', 0,-4,1,1),), + )), + '3': ("3.svg", ((('loop2', 0,0,0,0),), + )), + # uppercase + # Bar rules + 'X': ("epsilon.svg", ((('Xtb', 0,0,0,0), ('Xtb', 0,-5,1,1),), + (('Xlr', 0,0,0,0), ('Xlr', 0,-5,1,1),), + (('Xtb', 0,0,0,0), ('Xtb2', 0,-5,1,1),), + (('Xlr', 0,0,0,0), ('Xlr2', 0,-5,1,1),), + (('Xtb2', 0,0,0,0), ('Xtb', 0,-5,1,1),), + (('Xlr2', 0,0,0,0), ('Xlr', 0,-5,1,1),), + )), + + 'Xtb': ("epsilon.svg", ((('Xnw', 0,0,0,0), ('Xne', 0,0,0,0),), + (('Xne', 0,0,0,0), ('Xh', 0,0,0,0), ('Lterm2', 0,0,0,0),), + (('Xnw', 0,0,0,0), ('Xh', 0,0,0,1), ('Lterm2', 0,0,0,1),), + (('Xne', 0,0,0,0), ('Xh', 0,0,0,0), ('Xnw', 0,0,0,0), ('Xh', 0,0,0,1),), + )), + 'Xlr': ("epsilon.svg", ((('Xne', 0,-5,1,1), ('Xnw', 0,0,0,0),), + (('Xne', 0,-5,1,1), ('Xvt', 0,0,0,0), ('Xvb', 0,0,0,0), ('ITSerif', 0.5,0,0,0),), + (('Xnw', 0, 0,0,0), ('Xvt', 0,0,0,0), ('Xvt', 0,-5,1,0), ('IBSerif', 0,0,0,0),), + (('Xne', 0,-5,1,1), ('Xnw', 0,0,0,0), ('Xvt', 0,0,0,0), ('Xvb', 0,0,0,0),), + )), + + 'Xtb2': ("epsilon.svg", ((('Xne', 0,0,0,0),), + (('Xnw', 0,0,0,0),), + )), + 'Xlr2': ("epsilon.svg", ((('Xnw', 0,0,0,0),), + (('Xne', 0,-5,1,1),), + )), + + 'Xne': ("Xne.svg",), + 'Xnw': ("Xnw.svg",), + 'Xh': ("Xh.svg",), + 'Xvt': ("Xvt.svg",), + 'Xvb': ("Xvb.svg",), + + + 'Bar': ("barcap.svg", ((('Bartop', 0,0,0,0), ('Barbot', 0,0,0,0), ('Barmid', 0,0,0,0),), + (('Bartop2', 0,0,0,0), ('Barbot2', 0,0,0,0),), + )), + 'Bartop': ("epsilon.svg", ((('ITSerif', 0.5,0,0,0),), + (('Tt', 0, 0,0,0),), + )), + 'Barbot': ("epsilon.svg", ((('IBSerif', 0,0,0,0),), + (('Tb', 0,0,0,0),), + )), + 'Barbot2': ("epsilon.svg", ((('Barbot', 0,0,0,0),), + (('Psi', 0,0,0,0),), + )), + 'Bartop2': ("epsilon.svg", ((('Bartop', 0, 0,0,0),), + (('Psi', 0,-5,1,0),), + )), + 'Barmid': ("epsilon.svg", ((('Hm', 0,0,0,0), ('Eserif', 0,0,0,0), ('Hm', -7.5,0,0,1), ('Eserif', -7.5,0,0,1),), + (('P', -2.5,3,0,0), ('P', -5, 3,0,1),), + (('P', -5,3,0,1),), #points left + )), + 'Psi': ("epsilon.svg", ((('IBSerif', 0,0,0,0), ('R', -2.5,0,0,0,), ('R', -5,0,0,1,),), + )), + # D / E / F / H / L rules + 'D': ("epsilon.svg", ((('Dterm', 0,0,0,0), ('Dterm', 0,0,0,1),), + (('Dterm', 0,0,0,0), ('Dterm2', 0,0,0,1),), + )), + 'E': ("epsilon.svg", ((('Eterm', 0,0,0,0), ('Eterm', 0,0,0,1),), + (('Eterm', 0,0,0,0), ('Eterm2', 0,0,0,1),), + (('Eterm2', 0,0,0,1), ('Eterm2', 0,-5,1,0),), # for S + )), + 'F': ("epsilon.svg", ((('Fterm', 0,0,0,0), ('Fterm', 0,0,0,1),), + (('Fterm', 0,0,0,0), ('Fterm2', 0,0,0,1),), + )), + 'H': ("epsilon.svg", ((('Hterm', 0,0,0,0), ('Hterm', 0,0,0,1),), + (('Hterm', 0,0,0,0), ('Hterm2', 0,0,0,1),), + )), + 'L': ("epsilon.svg", ((('Lterm', 0,0,0,0), ('Lterm', 0,0,0,1),), + (('Lterm', 0,0,0,0), ('Lterm2', 0,0,0,1),), + )), + 'Dterm': ("epsilon.svg", ((('Barterm', 0,0,0,0), ('Et', 0,0,0,0), ('Eb', 0,0,0,0),), + (('O', 0,0,0,0),), + )), + 'Dterm2':("epsilon.svg", ((('C', 0,0,0,1),), + (('Ltserif', 0,0,0,1), ('Lbserif', 0,0,0,1),), + )), + 'Eterm': ("epsilon.svg", ((('Barterm', 0,0,0,0), ('Et', 0,0,0,0), ('Hm', 0,0,0,0), ('Eb', 0,0,0,0),), + (('B', 0,0,0,1),), + (('O', 0,0,0,0), ('Ocross', 0,0,0,0),), + (('Dterm', 0,0,0,0), ('Eserif', 0,0,0,1),), + (('Dterm2', 0,0,0,0), ('Eserif', 0,0,0,1),), + )), + 'Eterm2':("epsilon.svg", ((('P', 0,0,0,1), ('Lterm2', 0,-5,1,0),), + )), + 'Fterm': ("epsilon.svg", ((('Barterm', 0,0,0,0), ('Et', 0,0,0,0), ('Hm', 0,0,0,0), ('IBSerif', 0,0,0,0),), + (('Lterm', 0,0,0,0), ('Eserif', 0,0,0,1),), + (('P', 0,0,0,1), ('R', 0,0,0,1),), + (('Ltserif', 0,0,0,1), ('R', 0,0,0,1),), + (('Ltserif', 0,0,0,1), ('Rblock', 0,0,0,1),), + (('Uterm', 0,0,0,0), ('Ocross', 0,0,0,0),), + )), + 'Fterm2':("epsilon.svg", ((('P', 0,0,0,1),), + (('Lterm2', 0,0,0,0), ('Eserif', 0,0,0,1),), + )), + 'Hterm': ("epsilon.svg", ((('Barterm', 0,0,0,0), ('Hm', 0,0,0,0), ('ITSerif', 0.5,0,0,0), ('IBSerif', 0,0,0,0),), + (('R', 0,0,0,1), ('R', 0,-5,1,1),), + )), + 'Hterm2':("epsilon.svg", ((('R', 0,0,0,1),), + (('Rblock',0,0,0,1),), + )), + 'Lterm': ("epsilon.svg", ((('Barterm', 0,0,0,0), ('Et', 0,0,0,0), ('IBSerif', 0,0,0,0),), + (('Uterm', 0,0,0,0),), + )), + 'Lterm2':("epsilon.svg", ((('Ltserif', 0,0,0,1),), + (('Cserif', 0,-5,1,1),), + )), + 'B': ("epsilon.svg", ((('P', 0,0,0,0), ('P', 0,6,0,0),),)), + 'C': ("epsilon.svg", ((('Cserif', 0,0,0,0), ('Cserif', 0,-5,1,0),),)), + 'Cserif':("epsilon.svg", (#(('Ctail', 0,0,0,0),), # I just hate the way these look... + (('Cblob', 0,0,0,0),), + (('Chook', 0,-5,1,0),), + (('G', 0,0,0,0),), + ),), + 'O': ("epsilon.svg", ((('Oterm', 0,0,0,0),), + (('Q', 0,0,0,1),), + (('Qu', 0,0,0,1),), + )), + 'Qu': ("epsilon.svg", ((('Q', 0,-5,1,0),),)), + 'Barterm':("barcap.svg",), + 'Ctail': ("Ctail.svg",), + 'Chook': ("Chook.svg",), + 'Cblob': ("Cblob.svg",), + 'G': ("G.svg",), + 'Ltserif':("Lt.svg",), + 'Lbserif':("Lb.svg",), + 'Et': ("Et.svg",), + 'Eb': ("Eb.svg",), + 'Hm': ("hcap.svg",), + 'P': ("P.svg",), + 'Tb': ("Tb.svg",), + 'Tt': ("Tt.svg",), + 'Ocross':("Ocross.svg",), + 'Oterm': ("ocap.svg",), + 'Q': ("Q.svg",), + 'R': ("rcap.svg", ((('IBSerif', -0.5,0,0,1),),)), + 'Rblock':("Rblock.svg", ((('IBSerif', -0.5,0,0,1),),)), + 'Uterm': ("U.svg", ((('IBSerif', -0.5,0,0,0),),)), + 'IBSerif':("IBSerif.svg",), + 'ITSerif':("ITSerif.svg",), + 'Eserif':("Eserif.svg",), + # V rules + 'V': ("vcap.svg", ((('V2', 0,0,0,0),), + (('V2', 0,0,0,0), ('Across', 0,0,0,0)), + )), + 'V2': ("epsilon.svg", ((('M', 0,0,0,0),), + (('Delta', 0,0,0,0),), + (('Vser', 0,0,0,0),), + )), + 'M': ("mcap.svg", ((('IBSerif', -1.5,0,0,0), ('IBSerif', 1.5,0,0,1),),)), + 'Delta': ("Delta.svg",), + 'Vser': ("Vser.svg",), + 'Across':("acap.svg",), + # single daughter rules + 'b': ("b.svg", ((('hlike', 0,0,0,0), ('f', 0,0,0,0),), + #(('hlike', 0,0,0,0), ('f', 0,0,0,1),), + )), + 'b1': ("b.svg", ((('loop', 0,0,0,0), ('f', 0,0,0,0),), + #(('loop', 0,0,0,0), ('f', 0,0,0,1),), + )), + 'b0': ("b.svg", ((('f', 0,0,0,0),), + #(('f', 0,0,0,1),), + )), + 'h': ("h.svg", ((('vert', 5,0,1,0),),)), + 'm': ("m.svg", ((('h', 5,0,0,0), ('vert', 5,0,1,0),),)),# change later to allow 3 humped m + 'n': ("n.svg", ((('hlike', 0,0,0,0),),)), + 'n1': ("n.svg", ((('loop', 0,0,0,0),),)), + 's': ("s.svg", ((('crv', 0,0,0,0), ('crv', 5,0,1,1),),)), + 'j': ("j.svg", ((('crv', 0,-5,0,0),),)), + '?': ("question.svg", ((('crv', -2.5,-5,0,0),),)), + 'yogh': ("yogh.svg",((('crv', -2.5,4,1,0),),)), + #terminal rules + '2': ("2.svg",), + '30': ("3.svg",), + '7': ("7.svg",), + 'a': ("a.svg",), + 'cserif':("cserif.svg",), + 'e': ("e.svg",), + 'k': ("k.svg",), + 'n0': ("n.svg",), + 'o0': ("o.svg",), + 'r': ("r.svg",), + 'serif': ("serif.svg",), + 'tserif':("tserif.svg",), + 'lserif':("lserif.svg",), + 't': ("t.svg",), + 'x': ("x.svg",), + 'z': ("z.svg",), + 'vserl': ("vserl.svg",), + 'vserr': ("vserr.svg",), + 'y': ("y.svg",), + 'gamma': ("gamma.svg",) + } + +alphabet = { + # Uppercase fix Y make 2) + '1': ("start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Bartop.[.ITSerif.].].Barbot2.[.Barbot.[.IBSerif.].].].].].]",), + '33': ("start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.[.C.|.].Eserif.|.].Eterm.[.O.Ocross.].|.].].].]",), + '3': ("start.[.UC.[.UCb.[.E.[.Eterm.[.B.[.P.P.].|.].Eterm.[.Dterm2.[.C.|.].Eserif.|.].|.].|.].].]", + "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.[.C.|.].Eserif.|.].Eterm.[.O.Ocross.].|.].].].]",), + '4': ("start.[.UC.[.UCu.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm2.[.Rblock.[.IBSerif.|.].|.].|.].].-.|.].].]",), + '5': ("start.[.UC.[.UCu.[.UCb.[.E.[.Eterm.[.Dterm2.[.Ltserif.|.Lbserif.|.].Eserif.|.].Eterm2.[.P.|.Lterm2.[.Ltserif.|.].-.].|.].|.].-.|.].].]",), + '6': ("start.[.UC.[.UCu.[.UCb.[.E.[.Eterm.[.Dterm.[.O.].Eserif.|.].Eterm2.[.P.|.Lterm2.-.].|.].|.].-.|.].].]", + "start.[.UC.[.UCu.[.UCb.[.E.[.Eterm.[.O.Ocross.].Eterm2.[.P.|.Lterm2.-.].|.].|.].-.|.].].]",), + '7': ("start.[.UC.[.UCb.[.X.[.Xtb.[.Xne.Xh.Lterm2.[.Ltserif.|.].].Xtb2.[.Xne.].-.|.].].].]",), + '8': ("start.[.UC.[.UCb.[.E.[.Eterm.[.B.[.P.P.].|.].Eterm.[.B.[.P.P.].|.].|.].].].]",), + '9': ("start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm.[.O.].Eserif.|.].Eterm2.[.P.|.Lterm2.-.].|.].|.].].]", + "start.[.UC.[.UCb.[.E.[.Eterm.[.O.Ocross.].Eterm2.[.P.|.Lterm2.-.].|.].|.].].]",), + '0': ("start.[.UC.[.UCb.[.D.[.Dterm.[.O.].Dterm.[.O.].|.].].].]",), + 'A': ("start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Barterm.Et.Hm.IBSerif.].|.].].].]", # no flip needed + "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].|.].].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].|.].|.].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Uterm.[.IBSerif.].Ocross.].|.].].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Uterm.[.IBSerif.].Ocross.].|.].|.].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].Fterm.[.Uterm.[.IBSerif.].Ocross.].|.].|.].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].|.].|.].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm.[.Uterm.[.IBSerif.].Ocross.].|.].].].]", + "start.[.UC.[.UCu.[.UCb.[.V.[.V2.[.Vser.].Across.].|.].-.|.].].]",), + 'B': ("start.[.UC.[.UCb.[.E.[.Eterm.[.B.[.P.P.].|.].Eterm.|.].|.].].]", + "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm.Eserif.|.].Eterm.[.B.[.P.P.].|.].|.].].].]",), + 'Be': ("start.[.UC.[.UCu.[.UCb.[.E.[.Eterm.[.Barterm.Et.Hm.Eb.].Eterm2.[.P.|.Lterm2.-.].|.].|.].-.|.].].]", #cyrillic + "start.[.UC.[.UCu.[.UCb.[.E.[.Eterm.[.Dterm.[.Barterm.Et.Eb.].Eserif.|.].Eterm2.[.P.|.Lterm2.-.].|.].|.].-.|.].].]",), + 'C': ("start.[.UC.[.UCb.[.D.[.Dterm.[.O.[.Oterm.].].Dterm2.[.C.|.].|.].].].]",), + 'D': ("start.[.UC.[.UCb.[.D.[.Dterm.Dterm.[.O.[.Oterm.].].|.].].].]", + "start.[.UC.[.UCb.[.D.[.Dterm.[.O.[.Oterm.].].Dterm2.[.Ltserif.|.Lbserif.|.].|.].|.].].].", + "start.[.UC.[.UCb.[.D.[.Dterm.[.Barterm.Et.Eb.].Dterm.[.Barterm.Et.Eb.].|.].].].]",), + 'Delta': ("start.[.UC.[.UCu.[.UCb.[.V.[.V2.[.Delta.].].|.].-.|.].].]",), #Delta + 'De': ("start.[.UC.[.UCu.[.UCb.[.D.[.Dterm.[.Barterm.Et.Eb.].Dterm.[.Barterm.Et.Eb.].|.].].-.|.].].]",), #Cyrillic + 'E': ("start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.Eserif.|.].Eterm.[.Dterm.[.Barterm.Et.Eb.].Eserif.|.].|.].|.].].]", + "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.Eserif.|.].Eterm.[.Dterm.[.O.].Eserif.|.].|.].|.].].]", + "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.Eserif.|.].Eterm.[.B.[.P.P.].|.].|.].|.].].]", + "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.Eserif.|.].Eterm.[.Barterm.Et.Hm.Eb.].|.].|.].].]", + "start.[.UC.[.UCb.[.E.[.Eterm.[.O.Ocross.].Eterm.[.Dterm2.Eserif.|.].|.].].].]",), + 'Eth': ("start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm.[.O.].Eserif.|.].Eterm.[.Barterm.Et.Hm.Eb.].|.].|.].].]",), + 'F': ("start.[.UC.[.UCb.[.F.[.Fterm.Fterm2.[.Lterm2.Eserif.|.].|.].].].]",), + 'G': ("start.[.UC.[.UCb.[.D.[.Dterm.[.O.].Dterm2.[.C.[.Cserif.[.G.].Cserif.-.].|.].|.].].].]",), + 'Gamma': ("start.[.UC.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm2.|.].].].]",), #Gamma + 'H': ("start.[.UC.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm.[.Barterm.Hm.ITSerif.IBSerif.].|.].].].]", + "start.[.UC.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm2.[.R.[.IBSerif.|.].|.].|.].].].]", + "start.[.UC.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm2.[.Rblock.[.IBSerif.|.].|.].|.].].].]",), + 'Che': ("start.[.UC.[.UCu.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm2.[.Rblock.[.IBSerif.|.].|.].|.].].-.|.].].]", #Cyrillic + "start.[.UC.[.UCu.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm2.[.R.[.IBSerif.|.].|.].|.].].-.|.].].]",), + 'Heng': ("start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Ltserif.|.R.[.IBSerif.|.].|.].|.].].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Ltserif.|.Rblock.[.IBSerif.|.].|.].|.].].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm.[.Ltserif.|.R.[.IBSerif.|.].|.].|.].].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm.[.Ltserif.|.Rblock.[.IBSerif.|.].|.].|.].].].]",), + 'I': ("start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Bartop.[.ITSerif.].].Barbot2.[.Barbot.[.IBSerif.].].].].].]", + "start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Bartop.[.Tt.].].Barbot2.[.Barbot.[.Tb.].].].].].]",), + 'J': ("start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Uterm.[.IBSerif.].].Lterm2.|.].].-.|.].].]",), + 'K': ("start.[.UC.[.UCu.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xnw.].Xlr.[.Xne.-.|.Xvt.Xvb.ITSerif.].-.|.].].-.|.].].]", + "start.[.UC.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm.[.R.[.IBSerif.|.].|.R.[.IBSerif.|.].-.|.].|.].].].]",), + 'Zhe': ("start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Psi.[.IBSerif.R.[.IBSerif.|.].R.[.IBSerif.|.].|.].-.].Barbot2.[.Psi.[.IBSerif.R.[.IBSerif.|.].R.[.IBSerif.|.].|.].].].].].]",), # Cyrillic + 'L': ("start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm2.|.].|.].-.|.].].]",), + 'Lambda':("start.[.UC.[.UCu.[.UCb.[.V.[.V2.[.Vser.].].|.].-.|.].].]",),# Lambda + 'M': ("start.[.UC.[.UCu.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xvt.Xvb.ITSerif.].Xlr.[.Xnw.Xvt.Xvt.-.IBSerif.].-.|.].].-.|.].].]", + "start.[.UC.[.UCb.[.V.[.V2.[.M.[.IBSerif.IBSerif.|.].].].|.].].]",), + 'N': ("start.[.UC.[.UCu.[.UCb.[.X.[.Xlr.[.Xnw.Xvt.Xvt.-.IBSerif.].Xlr.[.Xnw.Xvt.Xvt.-.IBSerif.].-.|.].].-.|.].].]", + "start.[.UC.[.UCb.[.L.[.Lterm.[.Uterm.[.IBSerif.].].Lterm.[.Barterm.Et.IBSerif.].|.].|.].].]",), + 'NN': ("start.[.UC.[.UCu.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xvt.Xvb.ITSerif.].Xlr.[.Xne.-.|.Xvt.Xvb.ITSerif.].-.|.].].-.|.].].]",), # Cyrillic I + 'O': ("start.[.UC.[.UCb.[.D.[.Dterm.[.O.].Dterm.[.O.].|.].].].]",), + 'P': ("start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm2.[.P.|.].|.].].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Ltserif.|.R.[.IBSerif.|.].|.].Fterm2.[.P.|.].|.].].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Ltserif.|.Rblock.[.IBSerif.|.].|.].Fterm2.[.P.|.].|.].].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm2.[.P.|.].|.].].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].Fterm2.[.P.|.].|.].].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm2.[.P.|.].|.].].].]",), + 'PL': ("start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm.[.Barterm.Et.Eb.].Eserif.|.].Eterm2.[.P.|.Lterm2.-.].|.].].].]", + "start.[.UC.[.UCb.[.E.[.Eterm.[.Barterm.Et.Hm.Eb.].Eterm2.[.P.|.Lterm2.[.Cserif.-.|.].-.].|.].].].]",), + 'Phi': ("start.[.UC.[.UCb.[.Bar.[.Bartop.[.ITSerif.].Barbot.[.IBSerif.].Barmid.[.P.P.|.].].].].]",), + 'Pi': ("start.[.UC.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm.[.Barterm.Et.IBSerif.].|.].].].]",), + 'Psi': ("start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Psi.[.IBSerif.R.[.IBSerif.|.].R.[.IBSerif.|.].|.].-.].Barbot2.[.Barbot.[.IBSerif.].].].].].]",), + 'Soft': ("start.[.UC.[.UCu.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm2.[.P.|.].|.].|.].-.|.].].]",# Cyrillic Yeru/Soft/Hard + "start.[.UC.[.UCu.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm2.[.P.|.].|.].|.].-.|.].].]", + "start.[.UC.[.UCu.[.UCb.[.F.[.Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].Fterm2.[.P.|.].|.].|.].-.|.].].]", + "start.[.UC.[.UCu.[.UCb.[.F.[.Fterm.[.Ltserif.|.Rblock.[.IBSerif.|.].|.].Fterm2.[.P.|.].|.].|.].-.|.].].]", + "start.[.UC.[.UCu.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm2.[.P.|.].|.].|.].-.|.].].]",), + 'Q': ("start.[.UC.[.UCb.[.D.[.Dterm.[.O.[.Oterm.].].Dterm.[.O.[.Q.|.].].|.].].].]",), + 'R': ("start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.P.|.R.[.IBSerif.|.].|.].Fterm.[.Barterm.Et.Hm.IBSerif.].|.].|.].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].].].]",), + 'Ya': ("start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].|.].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].|.].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.P.|.R.[.IBSerif.|.].|.].Fterm.[.Barterm.Et.Hm.IBSerif.].|.].].].]", + "start.[.UC.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].|.].].]",), + 'S': ("start.[.UC.[.UCb.[.E.[.Eterm2.[.P.|.Lterm2.-.].|.Eterm2.[.P.|.Lterm2.-.].-.].|.].].]",), + 'Sigma': ("start.[.UC.[.UCb.[.X.[.Xtb.[.Xnw.Xh.|.Lterm2.|.].Xtb.[.Xne.Xh.Lterm2.].-.|.].].].]",), + 'T': ("start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Bartop.[.Tt.].].Barbot2.[.Barbot.[.IBSerif.].].].].].]", + "start.[.UC.[.UCb.[.Bar.[.Bartop.[.ITSerif.].Barbot.[.IBSerif.].Barmid.[.Hm.Eserif.Hm.|.Eserif.|.].].].].]",), + 'Theta': ("start.[.UC.[.UCb.[.E.[.Eterm.[.O.Ocross.].Eterm.[.O.Ocross.].|.].].].]",), + 'Thorn': ("start.[.UC.[.UCu.[.UCb.[.Bar.[.Bartop.[.ITSerif.].Barbot.[.IBSerif.].Barmid.[.P.|.].].].-.|.].].]",), + 'U': ("start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm.[.Barterm.Et.IBSerif.].|.].|.].-.|.].].]", + "start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm.[.Uterm.[.IBSerif.].].|.].].-.|.].].]", + "start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Uterm.[.IBSerif.].].Lterm.[.Uterm.[.IBSerif.].].|.].].-.|.].].]", + "start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm.[.Barterm.Et.IBSerif.].|.].].-.|.].].]",), + 'Tse': ("start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm.[.Barterm.Et.IBSerif.].|.].].-.|.].].]",),# Cyrillic + 'V': ("start.[.UC.[.UCb.[.V.[.V2.[.Vser.].].|.].].]",), + 'W': ("start.[.UC.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xvt.Xvb.ITSerif.].Xlr.[.Xnw.Xvt.Xvt.-.IBSerif.].-.|.].].].]", + "start.[.UC.[.UCu.[.UCb.[.V.[.V2.[.M.[.IBSerif.IBSerif.|.].].].|.].-.|.].].]",), + 'X': ("start.[.UC.[.UCu.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xnw.].Xlr.[.Xne.-.|.Xnw.].-.|.].].-.|.].].]", + "start.[.UC.[.UCb.[.H.[.Hterm.[.R.|.R.-.|.].Hterm.[.R.|.R.-.|.].|.].].].]",), + 'Xi': ("start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.[.Ltserif.|.Lbserif.|.].Eserif.|.].Eterm.[.Dterm2.[.Ltserif.|.Lbserif.|.].Eserif.|.].|.].|.].].]",), + 'Y': ("start.[.UC.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xnw.].Xlr2.[.Xne.-.|.].-.|.].].].]",), + 'Z': ("start.[.UC.[.UCb.[.X.[.Xtb.[.Xne.Xh.Lterm2.].Xtb.[.Xne.Xh.Lterm2.].-.|.].].].]",), + # Lowercase + 'a': ("start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.n0.-.loop2.[.elike.[.a.crv.-.].].-.].|.].].].].]", + "start.[.lc.[.barsym.[.bar.[.n1.[.loop.].n0.-.].-.|.].].]", + "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.n0.-.loop2.[.loop.].].|.].].].].]",), + 'carat':("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.vserr.].-.|.].].].]",), + 'b': ("start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.].n0.-.].].].]", + "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.].-.loop2.[.loop.].].-.].].].].]", + "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.|.].n0.-.].].].]", + "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.|.].-.loop2.[.loop.].].-.].].].].]",), + 'c': ("start.[.lc.[.lc2.[.osym.[.o.[.loop2.[.elike.[.crv.-.|.crv.|.].|.].].].].].]",), + 'd': ("start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.].n0.-.].].|.].]", + "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.].-.loop2.[.loop.].].-.].|.].].].]", + "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.|.].n0.-.].].|.].]", + "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.|.].-.loop2.[.loop.].].-.].|.].].].]",), + 'e': ("start.[.lc.[.lc2.[.osym.[.o.[.loop2.[.elike.[.e.crv.-.].].].].].].]", + "start.[.lc.[.lc2.[.lc3.[.3sym.[.3.[.loop2.[.elike.[.crv.crv.-.].].].].].].].]",), + 'epsi': ("start.[.lc.[.lc2.[.lc3.[.3sym.[.3.[.loop2.[.elike.[.crv.crv.-.].].].].].].].]",), + 'f': ("start.[.lc.[.barsym.[.bar.[.vert.[.xtnd.[.cross.[.f0.[.j.].].].].vert.-.].].].]",), + 'g': ("start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.[.j.[.crv.].].].n0.-.].-.|.].].]", + "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.[.j.].].-.loop2.[.loop.].].-.].-.|.].].].]",), + 'gamma':("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.vserr.y0.[.gamma.].].].].].]",), + 'h': ("start.[.lc.[.barsym.[.bar.[.b.[.hlike.[.h.].f.].vert.-.].].].]", + "start.[.lc.[.barsym.[.bar.[.b.[.hlike.[.h.].f.|.].vert.-.].].].]",), + 'heng': ("start.[.lc.[.barsym.[.bar.[.b.[.hlike.[.h.[.vert.[.xtnd.[.l.[.j.[.crv.].].].|.].-.].].f.[.j.[.crv.].].].vert.[.srf.-.|.].-.].].].]",), + 'i': ("start.[.lc.[.barsym.[.bar.[.vert.vert.[.xtnd.[.idot.].-.].].-.|.].].]", + "start.[.lc.[.barsym.[.bar.[.vert.vert.[.xtnd.[.idot.].-.].|.].-.|.].].]",), + 'j': ("start.[.lc.[.barsym.[.bar.[.vert.[.xtnd.[.idot.].-.].vert.[.xtnd.[.l.[.j.].].].|.].-.].].]",), + 'k': ("start.[.lc.[.barsym.[.bar.[.k.vert.vert.-.].].].]",), + 'l': ("start.[.lc.[.barsym.[.bar.[.vert.vert.[.xtnd.[.l.].-.].|.].-.|.].].]", + "start.[.lc.[.barsym.[.bar.[.vert.vert.[.xtnd.[.l.|.].-.].|.].-.|.].].]",), + 'lambda':("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.vserr.y0.].-.|.].].].]",), + 'm': ("start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.m.[.h.[.vert.-.].vert.-.].].].vert.-.].].].]",), + 'mu': ("start.[.lc.[.barsym.[.bar.[.b.[.hlike.[.h.[.vert.-.].].f.].vert.-.].-.|.].].]",), + 'muu': ("start.[.lc.[.barsym.[.bar.[.b.[.hlike.[.m.[.h.[.vert.-.].vert.-.].].f.].vert.-.|.].-.|.].].]",), + 'n': ("start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.h.[.vert.-.].].].vert.-.].].].]",), + 'ng': ("start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.h.[.vert.[.xtnd.[.l.[.j.].].|.].-.].].].vert.-.].].].]",), + 'o': ("start.[.lc.[.lc2.[.osym.[.o.[.loop2.[.loop.[.o0.|.].].].].].].]",), + 'p': ("start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.].n0.-.].].-.].]", + "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.].-.loop2.[.loop.].].-.].-.].].].]", + "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.|.].n0.-.].].-.].]", + "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.|.].-.loop2.[.loop.].].-.].-.].].].]",), + 'q': ("start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.].n0.-.].].-.|.].]", + "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.].-.loop2.[.loop.].].-.].-.|.].].].]", + "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.|.].n0.-.].].-.|.].]", + "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.|.].-.loop2.[.loop.].].-.].-.|.].].].]",), + 'r': ("start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.crv.].].vert.-.].].].]",), + 's': ("start.[.lc.[.lc2.[.lc3.[.ssym.[.s.[.crv.crv.-.|.].].].].].]",), + 't': ("start.[.lc.[.barsym.[.bar.[.vert.[.xtnd.[.cross.[.f0.].].].vert.-.].].].]",), + 'u': ("start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.h.[.vert.-.].].].vert.-.].-.|.].].]",), + 'uu': ("start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.m.[.h.[.vert.-.].vert.-.].].].vert.-.].-.|.].].]",), + 'v': ("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.vserr.].].].].]",), + 'w': ("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.w.[.vserr.].].].].].]",), + 'x': ("start.[.lc.[.lc2.[.dsym.[.diag.[.x.].-.diag.[.x.].|.].-.].].]",), + 'y': ("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.vserr.y0.].].].].]",), + 'yogh': ("start.[.lc.[.lc2.[.dsym.[.diag.[.z.].|.diag.[.yogh.[.crv.-.].-.|.].-.].].].]",), + 'z': ("start.[.lc.[.lc2.[.dsym.[.diag.[.z.].diag.[.z.].-.|.].|.].].]",), + 'glot': ("start.[.lc.[.barsym.[.bar.[.vert.[.xtnd.[.?.|.].].vert.-.].].].]",), + '1l': ("start.[.lc.[.barsym.[.bar.[.vert.[.srf.[.lserif.].].vert.[.srf.[.serif.].-.].|.].].-.].]",), + '2l': ("start.[.lc.[.lc2.[.dsym.[.diag.[.2.].diag.[.z.].-.|.].|.].].]",), + '3l': ("start.[.lc.[.lc2.[.dsym.[.diag.[.z.].|.diag.[.yogh.[.crv.-.].-.|.].-.].].].]",), + '6l': ("start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.[.j.].].-.loop2.[.loop.].-.].-.].].].].]",), + '7l': ("start.[.lc.[.lc2.[.dsym.[.diag.[.z.].diag.[.7.].-.|.].|.].].]",), + '8l': ("start.[.lc.[.lc2.[.lc3.[.3sym.[.3.[.loop2.[.loop.[.30.|.].].].].].].].]",), + '9l': ("start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.[.j.].].-.loop2.[.loop.].-.].|.].].].].]",), + '0l': ("start.[.lc.[.lc2.[.osym.[.o.[.loop2.[.loop.[.o0.|.].].].].].].]",) + } + +space = 4 # number of unit boxes to make a " " space in string +units = 36 # pixels per unit box in font +font = "alphabet_soup/" # location of font images + |
