From 7caecbc1ae39849e57b02aa2e4e9f836359a3517 Mon Sep 17 00:00:00 2001 From: Nicolas Dufour Date: Mon, 18 Jul 2011 22:58:17 +0200 Subject: Extensions. Merging Alphabet soup fixes by Glyphobet. (bzr r10473) --- share/extensions/alphabet_soup/Cblob.svg | 2 +- share/extensions/alphabet_soup/Chook.svg | 2 +- share/extensions/alphabet_soup/Eb.svg | 2 +- share/extensions/alphabet_soup/Et.svg | 2 +- share/extensions/alphabet_soup/G.svg | 2 +- share/extensions/alphabet_soup/IBSerif.svg | 2 +- share/extensions/alphabet_soup/ITSerif.svg | 2 +- share/extensions/alphabet_soup/Lb.svg | 2 +- share/extensions/alphabet_soup/Lt.svg | 2 +- share/extensions/alphabet_soup/Oterm.svg | 2 +- share/extensions/alphabet_soup/P.svg | 2 +- share/extensions/alphabet_soup/Q.svg | 2 +- share/extensions/alphabet_soup/Vser.svg | 2 +- share/extensions/alphabet_soup/Xvt.svg | 2 +- share/extensions/alphabet_soup/abase.svg | 2 +- share/extensions/alphabet_soup/barcap.svg | 2 +- share/extensions/alphabet_soup/gamma.svg | 2 +- share/extensions/alphabet_soup/h.svg | 2 +- share/extensions/alphabet_soup/hcap.svg | 2 +- share/extensions/alphabet_soup/j.svg | 2 +- share/extensions/alphabet_soup/lserif.svg | 2 +- share/extensions/alphabet_soup/m.svg | 2 +- share/extensions/alphabet_soup/mcap.svg | 2 +- share/extensions/alphabet_soup/o.svg | 2 +- share/extensions/alphabet_soup/ocap.svg | 2 +- share/extensions/alphabet_soup/question.svg | 2 +- share/extensions/alphabet_soup/rcap.svg | 2 +- share/extensions/alphabet_soup/tserif.svg | 10 +-- share/extensions/alphabet_soup/vcap.svg | 2 +- share/extensions/alphabet_soup/vserl.svg | 2 +- share/extensions/render_alphabetsoup.inx | 2 +- share/extensions/render_alphabetsoup.py | 101 ++++++++++++++++++++++++---- 32 files changed, 120 insertions(+), 51 deletions(-) diff --git a/share/extensions/alphabet_soup/Cblob.svg b/share/extensions/alphabet_soup/Cblob.svg index 3c747307a..b5b104edb 100644 --- a/share/extensions/alphabet_soup/Cblob.svg +++ b/share/extensions/alphabet_soup/Cblob.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="m 432,432 c 51.35068,0.0519 82.50621,-17.08791 115.74987,-54.56643 6.11036,-10.44205 6.1546,-10.95161 1.35156,-15.5668 -6.47094,-6.21786 -8.55507,-11.05768 -8.55507,-19.86677 -0.0541,-15.68008 11.45913,-25.65125 26.45364,-26.45364 23.16466,0.63832 28.48079,19.03525 26.06817,38.86707 C 571.0029,436.23549 512.75953,467.88531 432,468 l 0,-36 z"/> diff --git a/share/extensions/alphabet_soup/Chook.svg b/share/extensions/alphabet_soup/Chook.svg index aab0fa280..2e3cf99cd 100644 --- a/share/extensions/alphabet_soup/Chook.svg +++ b/share/extensions/alphabet_soup/Chook.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="m 432,36 0,-36 c 35.12642,0.15801183 68.19031,10.978322 99,27.408775 5.225,3.184493 11.17901,6.028377 13.23113,6.319744 C 551.95635,34.825369 558,29.837576 558,22.365141 L 558,18 l 18,0 0,108 -17.72381,0 C 553.02167,64.41188 486.96487,36 432,36 z"/> diff --git a/share/extensions/alphabet_soup/Eb.svg b/share/extensions/alphabet_soup/Eb.svg index c9c42a550..490671b62 100644 --- a/share/extensions/alphabet_soup/Eb.svg +++ b/share/extensions/alphabet_soup/Eb.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="M 234,450.23743 C 243.83007,450.1558 251.21138,441.4123 252,432 l 180,0 0,36 -198,0 0,-17.76257 z"/> diff --git a/share/extensions/alphabet_soup/Et.svg b/share/extensions/alphabet_soup/Et.svg index 1c69936ba..49a3a5f34 100644 --- a/share/extensions/alphabet_soup/Et.svg +++ b/share/extensions/alphabet_soup/Et.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="M 234,17.58519 234,0 432,0 432,36 252,36 C 251.9603,23.895333 246.34816,17.721488 234,17.58519 z"/> diff --git a/share/extensions/alphabet_soup/G.svg b/share/extensions/alphabet_soup/G.svg index d6fb0c314..f7cd3cc0d 100644 --- a/share/extensions/alphabet_soup/G.svg +++ b/share/extensions/alphabet_soup/G.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="m 432,432 c 40.73753,0.0266 88.26593,-36.02956 89.0448,-77.37997 l 0,-48.62003 C 520.74967,296.51193 512.02142,287.43179 504,287.58519 L 504,270 l 108,0 0,17.58519 C 603.54056,287.1223 595.2197,296.35671 595.89633,306 l 0,91.21641 C 557.61928,448.03031 481.8354,468.10728 432,468 l 0,-36 z" /> diff --git a/share/extensions/alphabet_soup/IBSerif.svg b/share/extensions/alphabet_soup/IBSerif.svg index 774f52d06..dfb69877f 100644 --- a/share/extensions/alphabet_soup/IBSerif.svg +++ b/share/extensions/alphabet_soup/IBSerif.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="m 234,450.41481 c 10.36553,-0.16751 18.17938,-8.842 18,-18.41481 l 90,0 c 0.30635,10.08784 8.28835,17.76285 18,18 l 0,18 -126,0 0,-17.58519 z"/> diff --git a/share/extensions/alphabet_soup/ITSerif.svg b/share/extensions/alphabet_soup/ITSerif.svg index df4023dbd..492aff59d 100644 --- a/share/extensions/alphabet_soup/ITSerif.svg +++ b/share/extensions/alphabet_soup/ITSerif.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="m 216,18 0,-18 126,0 0,18 c -9.949,0.167507 -17.90169,8.010662 -18,18 l -90,0 C 233.69365,25.703901 225.43397,18.167722 216,18 z"/> diff --git a/share/extensions/alphabet_soup/Lb.svg b/share/extensions/alphabet_soup/Lb.svg index 164c956fd..3fa9f9784 100644 --- a/share/extensions/alphabet_soup/Lb.svg +++ b/share/extensions/alphabet_soup/Lb.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="m 432,432 117,0 c 14.59492,-0.0666 26.75442,-13.39796 27,-27 l 0,-9 18,0 0,72 -162,0 0,-36 z"/> diff --git a/share/extensions/alphabet_soup/Lt.svg b/share/extensions/alphabet_soup/Lt.svg index 60b288eda..1f4c18f39 100644 --- a/share/extensions/alphabet_soup/Lt.svg +++ b/share/extensions/alphabet_soup/Lt.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="M 576,61.467881 C 575.8351,48.463709 564.09019,35.953164 549,36 l -117,0 0,-36 162,0 0,72 -18,0 0,-10.532119 z"/> diff --git a/share/extensions/alphabet_soup/Oterm.svg b/share/extensions/alphabet_soup/Oterm.svg index f01085811..e167a57ac 100644 --- a/share/extensions/alphabet_soup/Oterm.svg +++ b/share/extensions/alphabet_soup/Oterm.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="M 432,432.28491 C 520.9663,433.84056 539.41817,304.57049 539.90939,235.96367 540.40061,167.35685 519.19629,35.736893 432,35.715087 L 432,0 C 560.70357,0.52071898 630.31496,121.84151 629.90669,235.8117 629.49842,349.78189 555.79773,468 432,468 l 0,-35.71509 z"/> diff --git a/share/extensions/alphabet_soup/P.svg b/share/extensions/alphabet_soup/P.svg index 5e61cf6b0..034408272 100644 --- a/share/extensions/alphabet_soup/P.svg +++ b/share/extensions/alphabet_soup/P.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="m 432,216 c 47.35472,-0.50816 70.54401,-48.78939 71.44374,-90 C 504.34347,84.789389 477.64109,36 432,36 432,24.235496 432,11.764504 432,0 503.94288,0.16988052 593.35821,43.100441 593.33321,126.5 593.30821,209.89956 504.23622,251.96228 432,252 c 0,-12.09784 0,-23.90216 0,-36 z"/> diff --git a/share/extensions/alphabet_soup/Q.svg b/share/extensions/alphabet_soup/Q.svg index 2da900b5d..c60ea4230 100644 --- a/share/extensions/alphabet_soup/Q.svg +++ b/share/extensions/alphabet_soup/Q.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="M 526.32135,439.9524 C 498.13523,459.02351 460.91524,468.33538 432,468 c 0.0271,-12.10181 -0.0369,-23.89822 0,-36 C 505.94261,431.996 539.38316,302.46313 539.38316,234 539.38316,165.53687 513.54685,35.82655 432,36 l 0,-36 c 120.87878,0.32641387 196.43844,118.49285 197.44733,234 0.57378,65.69198 -23.16612,128.36397 -67.46294,176.7975 C 578.58768,433.83295 602.18706,446.20739 630,450 l 0,18 c -37.05949,1.08844 -70.95355,-12.44439 -103.67865,-28.0476 z"/> diff --git a/share/extensions/alphabet_soup/Vser.svg b/share/extensions/alphabet_soup/Vser.svg index e1467702f..a06b247d4 100644 --- a/share/extensions/alphabet_soup/Vser.svg +++ b/share/extensions/alphabet_soup/Vser.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="m 234,18 0,-18 94,0 0,18 -6.57692,0 c -5.94588,-0.462067 -11.16407,6.690532 -8.71399,14 L 309,32 l -3,0 0,-14 -36,0 0.43636,14 -15.80952,0 C 251.35659,20.992194 245.07284,18.057219 234,18 z m 360,0 -72,0 0,14 -2.86353,0 c -0.0921,-0.480406 -3.84556,0.500695 -3.84556,-0.218182 C 517.61482,24.518889 512.35553,18.083131 506.36364,18 L 499,18 l 0,-18 131,0 0,18 -4.4349,0 c -8.8741,-0.217422 -13.97429,5.278338 -16.21086,14 L 594,32 594,18 z"/> diff --git a/share/extensions/alphabet_soup/Xvt.svg b/share/extensions/alphabet_soup/Xvt.svg index 9747d84d7..3a5c5dcb9 100644 --- a/share/extensions/alphabet_soup/Xvt.svg +++ b/share/extensions/alphabet_soup/Xvt.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="m 252,36 c 0.29636,-9.768721 -7.64197,-18.037114 -18,-18 l 108,0 0,216 -90,0 0,-198 z"/> diff --git a/share/extensions/alphabet_soup/abase.svg b/share/extensions/alphabet_soup/abase.svg index 0a95a6273..1da2bb1d7 100644 --- a/share/extensions/alphabet_soup/abase.svg +++ b/share/extensions/alphabet_soup/abase.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="m 396,271.5 c 0.33614,-72.76543 62.75438,-91.16949 126,-91.5 l 0,18 c -33.67997,-0.42526 -54,38.9573 -54,66.557 l 0,131.443 -72,0 0,-124.5 z"/> diff --git a/share/extensions/alphabet_soup/barcap.svg b/share/extensions/alphabet_soup/barcap.svg index 0f7626d9b..5831e83ed 100644 --- a/share/extensions/alphabet_soup/barcap.svg +++ b/share/extensions/alphabet_soup/barcap.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="m 252,36 90,0 0,396 -90,0 0,-396 z"/> diff --git a/share/extensions/alphabet_soup/gamma.svg b/share/extensions/alphabet_soup/gamma.svg index 29cc11fbd..feb6b366d 100644 --- a/share/extensions/alphabet_soup/gamma.svg +++ b/share/extensions/alphabet_soup/gamma.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="M 413.74236,645.64547 C 383.0319,635.17985 363.9313,598.29804 370.41198,561.97779 372.2609,551.61571 374.419,546.6985 395.41883,505 l 18.3818,-37 36.39874,0 18.3818,37 c 20.99983,41.6985 23.15793,46.61571 25.00685,56.97779 5.44246,30.50163 -6.58165,61.17182 -30.16644,76.94629 -14.36564,9.56051 -33.1973,11.79876 -49.67922,6.72139 z M 441.26639,611.4249 C 453.76562,607.16598 466.11947,585.75784 461.95112,567 460.95667,562.52492 433.16738,505 432,505 c -1.16738,0 -28.95667,57.52492 -29.95112,62 -3.22119,14.49556 1.38417,29.9298 11.61874,38.93863 7.65072,6.73443 15.09954,9.74518 27.59877,5.48627 z"/> diff --git a/share/extensions/alphabet_soup/h.svg b/share/extensions/alphabet_soup/h.svg index ee0b78365..23be3806f 100644 --- a/share/extensions/alphabet_soup/h.svg +++ b/share/extensions/alphabet_soup/h.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="M 575.2219,287.78922 C 575.1595,253.50817 561.4074,197.88262 522,197.72815 l 0,-17.99396 c 68.28223,0.0831 125.45445,25.34454 125.45445,91.76581 l 0.63064,124.5 -71.94737,0 -0.91582,-108.21078 z"/> diff --git a/share/extensions/alphabet_soup/hcap.svg b/share/extensions/alphabet_soup/hcap.svg index 4ec6ad5ab..a6048b667 100644 --- a/share/extensions/alphabet_soup/hcap.svg +++ b/share/extensions/alphabet_soup/hcap.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="m 342,216 90,0 0,36 -90,0 0,-36 z"/> diff --git a/share/extensions/alphabet_soup/j.svg b/share/extensions/alphabet_soup/j.svg index 14350d4b0..07c680519 100644 --- a/share/extensions/alphabet_soup/j.svg +++ b/share/extensions/alphabet_soup/j.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="m 522,0 0,18 c -40.93265,-0.04875 -53.96001,54.416193 -54,90 l -72,0 C 396.21762,44.123031 460.42158,0.17295425 522,0 z"/> diff --git a/share/extensions/alphabet_soup/lserif.svg b/share/extensions/alphabet_soup/lserif.svg index 082093191..7ab2c0ded 100644 --- a/share/extensions/alphabet_soup/lserif.svg +++ b/share/extensions/alphabet_soup/lserif.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="m 377.93068,432.20912 0,-17.77577 C 387.72752,413.90818 396.04182,405.2313 396,396 l 72,0 0,71.95278 -90.06932,-35.74366 z"/> diff --git a/share/extensions/alphabet_soup/m.svg b/share/extensions/alphabet_soup/m.svg index abe974a58..ce3cd05ca 100644 --- a/share/extensions/alphabet_soup/m.svg +++ b/share/extensions/alphabet_soup/m.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="M 576.13772,280.98105 C 576.87501,248.84942 559.52731,198.85849 522,197.72815 L 522,180 c 43.19741,0.40036 82.08134,12.77489 108.21232,47.91572 C 647.33056,203.82949 664.91637,180.11613 702,180 l 0,17.74234 c -31.68499,-0.0754 -53.93869,48.95303 -54,84.95053 L 648,396 l -71.86228,0 0,-115.01895 z"/> diff --git a/share/extensions/alphabet_soup/mcap.svg b/share/extensions/alphabet_soup/mcap.svg index 373e133dd..25c8c8a5c 100644 --- a/share/extensions/alphabet_soup/mcap.svg +++ b/share/extensions/alphabet_soup/mcap.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="M 198,36 C 197.9768,27.008298 190.09906,18 180,18 L 180,0 302.81899,0 308.4585,18.042372 288,18.042 288,432 l -90,0 0,-396 z m 378,20 -20,0 0,-38 -36,0 L 525.63278,0 686,0 l 0,18 c -9.03999,-0.625908 -20.60333,7.51861 -20,18 l 0,396 -90,0 0,-376 z"/> diff --git a/share/extensions/alphabet_soup/o.svg b/share/extensions/alphabet_soup/o.svg index 967bad08f..3c08f073b 100644 --- a/share/extensions/alphabet_soup/o.svg +++ b/share/extensions/alphabet_soup/o.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="M 396.40448,322.99577 C 395.61641,252.63556 448.00479,180 522,180 l 0,17.5267 c -37.73872,0.42783 -53.59673,85.8386 -53.5,126.4733 0.0967,40.6347 16.33088,126.80441 53.5,126.4733 L 522,468 C 445.49339,467.3577 397.19254,393.35597 396.40448,322.99577 z"/> diff --git a/share/extensions/alphabet_soup/ocap.svg b/share/extensions/alphabet_soup/ocap.svg index 3eeb2aab3..1c50fd223 100644 --- a/share/extensions/alphabet_soup/ocap.svg +++ b/share/extensions/alphabet_soup/ocap.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="M 232,234 C 231.43948,112.8671 300.98118,0 432,0 l 0,36 C 347.8511,35.970211 328.00004,169.86413 327.43561,234 326.87118,298.13587 354.5529,432 432,432 l 0,36 C 302.64047,467.72235 232.56052,355.1329 232,234 z"/> diff --git a/share/extensions/alphabet_soup/question.svg b/share/extensions/alphabet_soup/question.svg index 90b012f3e..ddecb15b0 100644 --- a/share/extensions/alphabet_soup/question.svg +++ b/share/extensions/alphabet_soup/question.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="M 379.1115,243.87415 C 331.66919,220.96836 304.53108,179.04281 304,126 303.46892,72.957187 335.24929,25.47568 385.13135,5.8274636 400.20766,-0.11099414 416.03391,-0.18850556 432.68,0 l 0,18 c -44.57249,0.07686 -51.34382,66.045556 -51.15555,108 0.18827,41.95444 8.49951,103.93178 65.3394,105.99421 8.86675,0.32173 10.93679,0.32781 14.34805,2.24504 C 468.73163,238.58122 468,244.15478 468,252 l -72,0 c -2.91874,-5.25257 -11.7046,-5.62299 -16.8885,-8.12585 z"/> diff --git a/share/extensions/alphabet_soup/rcap.svg b/share/extensions/alphabet_soup/rcap.svg index a887ab827..e835f5068 100644 --- a/share/extensions/alphabet_soup/rcap.svg +++ b/share/extensions/alphabet_soup/rcap.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="M 499.24145,321.47832 C 491.28205,288.08485 468.98548,252 432,252 l 0,-36 c 79.22032,0.18906 162.09041,61.50434 162,124 l 0,92 -90,0 c 10e-4,-37.17134 1.98901,-73.69026 -4.75855,-110.52168 z"/> diff --git a/share/extensions/alphabet_soup/tserif.svg b/share/extensions/alphabet_soup/tserif.svg index df095c093..f04cfcf60 100644 --- a/share/extensions/alphabet_soup/tserif.svg +++ b/share/extensions/alphabet_soup/tserif.svg @@ -1,16 +1,10 @@ - - + height="648"> + d="m 396,396 72,0 c -0.003,12.59674 10.03593,35.45141 28.28288,35.8016 C 507.19866,431.37331 510.32553,421.46179 516.756,415 L 532,427.78714 c -9.31588,24.90944 -37.02355,39.3497 -61.66612,40.25162 C 425.31789,469.68634 396.13284,433.43678 396,396 z"/> diff --git a/share/extensions/alphabet_soup/vcap.svg b/share/extensions/alphabet_soup/vcap.svg index c36f5d466..792989e4c 100644 --- a/share/extensions/alphabet_soup/vcap.svg +++ b/share/extensions/alphabet_soup/vcap.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="m 250,18 58.5,0 105.5,326 106,-326 94,0 -143.5,450 -77,0 L 250,18 z"/> diff --git a/share/extensions/alphabet_soup/vserl.svg b/share/extensions/alphabet_soup/vserl.svg index 90c92276b..10e32d355 100644 --- a/share/extensions/alphabet_soup/vserl.svg +++ b/share/extensions/alphabet_soup/vserl.svg @@ -6,5 +6,5 @@ width="864" height="648"> + d="M 286.04853,213.28223 C 281.1125,203.56679 275.32901,198.99797 264.3185,198 l -3.3185,0 0,-18 81,0 0,18 -7.57692,0 c -7.04116,0 -7.75193,0.23896 -10.5,2.92308 -5.21608,5.09469 -2.20175,11.07828 0.23324,15.75315 l -0.10939,71.39718 -37.9984,-74.79118 z"/> diff --git a/share/extensions/render_alphabetsoup.inx b/share/extensions/render_alphabetsoup.inx index 58bc938f0..012e50771 100644 --- a/share/extensions/render_alphabetsoup.inx +++ b/share/extensions/render_alphabetsoup.inx @@ -7,7 +7,7 @@ inkex.py Inkscape 8.0 - 0 + false all diff --git a/share/extensions/render_alphabetsoup.py b/share/extensions/render_alphabetsoup.py index ffc20323b..f682e9b57 100644 --- a/share/extensions/render_alphabetsoup.py +++ b/share/extensions/render_alphabetsoup.py @@ -31,6 +31,7 @@ import bezmisc import simplepath import os import sys +import re import gettext _ = gettext.gettext @@ -66,6 +67,33 @@ def combinePaths( pathA, pathB ): else: return pathA + pathB +def reverseComponent(c): + nc = [] + last = c.pop() + nc.append(['M', last[1][-2:]]) + while c: + this = c.pop() + cmd = last[0] + if cmd == 'C': + nc.append([last[0], last[1][2:4] + last[1][:2] + this[1][-2:]]) + else: + nc.append([last[0], this[1][-2:]]) + last = this + return nc + +def reversePath(sp): + rp = [] + component = [] + for p in sp: + cmd, params = p + if cmd == 'Z': + rp.extend(reverseComponent(component)) + rp.append(['Z', []]) + component = [] + else: + component.append(p) + return rp + def flipLeftRight( sp, width ): for cmd,params in sp: defs = simplepath.pathdefs[cmd] @@ -200,11 +228,13 @@ def mxfm( image, width, height, stack ): # returns possibly transformed i tbimage = image if ( stack[0] == "-" ): # top-bottom flip flipTopBottom(tbimage, height) + tbimage = reversePath(tbimage) stack.pop( 0 ) lrimage = tbimage if ( stack[0] == "|" ): # left-right flip flipLeftRight(tbimage, width) + lrimage = reversePath(lrimage) stack.pop( 0 ) return lrimage @@ -292,14 +322,14 @@ def draw_crop_scale( stack, zoom ): # draw, crop and scale letter image 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 +def randomize_input_string(tokens, zoom ): # generate a glyph starting from each token in the input string imagelist = [] - for i in range(0,len(str)): - char = str[i] + for i in range(0,len(tokens)): + char = tokens[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 + if ((i > 0) and (char == tokens[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))] , "." ) @@ -308,15 +338,33 @@ def randomize_input_string( str, zoom ): # generate list of images based elif( char == " "): # add a " " space to the image list imagelist.append( " " ) else: # this character is not in config.alphabet, skip it - inkex.errormsg(_("bad character") + " = 0x%x" % ord(char)) + sys.stderr.write('bad character "%s"\n' % char) + return imagelist + +def generate_random_string( tokens, zoom ): # generate a totally random glyph for each glyph in the input string + imagelist = [] + for char in tokens: + if ( char == " "): # add a " " space to the image list + imagelist.append( " " ) + else: + if ( re.match("[a-z]", char )): # generate lowercase letter + stack = generate("lc") + elif ( re.match("[A-Z]", char )): # generate uppercase letter + stack = generate("UC") + else: # this character is not in config.alphabet, skip it + sys.stderr.write('bad character"%s"\n' % char) + stack = generate("start") + imagelist.append( draw_crop_scale( stack, zoom )) + 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 + resolution = 8 + for i in range( 0, 18 * resolution ): + y = 1.0/resolution * (i + 0.5) * zoom xmin = None xmax = None @@ -425,6 +473,29 @@ def layoutstring( imagelist, zoom ): # layout string of letter-images using return workspace +def tokenize(text): + """Tokenize the string, looking for LaTeX style, multi-character tokens in the string, like \\yogh.""" + tokens = [] + i = 0 + while i < len(text): + c = text[i] + i += 1 + if c == '\\': # found the beginning of an escape + t = '' + while i < len(text): # gobble up content of the escape + c = text[i] + if c == '\\': # found another escape, stop this one + break + i += 1 + if c == ' ': # a space terminates this escape + break + t += c # stick this character onto the token + if t: + tokens.append(t) + else: + tokens.append(c) + return tokens + class AlphabetSoup(inkex.Effect): def __init__(self): inkex.Effect.__init__(self) @@ -436,16 +507,20 @@ class AlphabetSoup(inkex.Effect): 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") + self.OptionParser.add_option("-r", "--randomize", + action="store", type="inkbool", + dest="randomize", default=False, + help="Generate random (unreadable) text") def effect(self): zoom = self.options.zoom - random.seed(self.options.seed) - imagelist = randomize_input_string(self.options.text, zoom) + if self.options.randomize: + imagelist = generate_random_string(self.options.text, zoom) + else: + tokens = tokenize(self.options.text) + imagelist = randomize_input_string(tokens, zoom) + image = layoutstring( imagelist, zoom ) if image: -- cgit v1.2.3