SVG Pfad in Lilypond Pfad umwandeln

Begonnen von Manuela, Mittwoch, 24. Mai 2023, 22:15

« vorheriges - nächstes »

Manuela

Ich habe hier und hier hübsche Muster gefunden, die ich gerne in Lilypond verwenden möchte.

Von der Verwendung von Postscript in Lilypond wird dringend abgeraten, es wird empfohlen, statt dessen Pfad zu verwenden.

Die Pfadnotation von Lilypond ist etwas eigenwillig, außerdem ist die Zahl der Befehle im Vergleich zu SVG eingeschränkt.

Ich habe daher ein Programm geschrieben, das einen SVG-Pfad als Eingabe hat und einen Lilypond-Pfad ausgibt. Falls Interesse besteht, veröffentliche ich hier den Code.

Es handelt sich um ein Lua-Programm, das z.B. in einem Wiki eingesetzt werden kann.

Derzeit werden nur relative Pfadkommandos (Kleinbuchstaben) behandelt, die Verwendung von absoluten Pfadangaben könnte relativ leicht integriert werden.

Ein Beispiel:
SVG-Pfad
m117.58 81.593
h -1.6281
v -0.38559
h 1.4348
v -6.6336
c -0.2921-0.59831-0.93804-1.6626-2.0348-2.2542 0.88689-0.647 1.6365-1.3776 2.0348-2.2747
v -1.8228
c -0.33161-0.08573-0.57785-0.38523-0.57785-0.7426 0-0.36054 0.24624-0.65828 0.57785-0.74436
v -8.6085
c -0.23107-0.48507-0.69321-1.2051-1.4778-1.5494
h -5.5989
c 5.3573 1.5635 5.9891 5.9619 6.0487 7.3805 0.10619 2.5082-1.4647 6.2015-5.0789 7.4362
l 4e-3 0.01023
c -0.0526 0.02187-0.623 0.25929-1.626 0.41592-0.0127 0.4512-0.11571 0.78916-0.26282 0.79728-0.14146 0.0081-0.27869-0.29563-0.34537-0.71931-1.3589 0.13547-3.2918 0.08784-5.6706-0.61489-2.051-0.60501-4.482-1.8768-7.0573-3.2237-3.4678-1.8122-7.0545-3.6883-10.073-4.1279-3.7056-0.53869-5.8441 0.3041-6.6096 1.2718-0.1524 0.19297-0.25436 0.39546-0.31115 0.60431 0.0113 0.21202 0.0843 0.40111 0.29845 0.45014 0.34395 0.06315 0.49353-0.27834 0.5147-0.57856 0.25717-0.29951 1.2633 0.10619 1.071 1.0933-0.19332 0.9846-1.3067 1.0054-1.7999 0.72672-0.48401-0.2734-1.059-1.3335-0.1203-2.473 0.0176-0.02011 0.0293-0.04198 0.0441-0.06279 1.0788-1.3631 3.683-1.8898 6.9688-1.4125 3.0829 0.44732 6.6989 2.3386 10.197 4.1674 2.5566 1.3374 4.9717 2.6003 6.9864 3.1948 0.9899 0.2921 1.9018 0.46602 2.7263 0.55986-0.5334-0.15381-1.0527-0.35489-1.5483-0.60784-0.74084-0.34325-3.4138-1.6891-6.3465-4.511-2.8102-2.7072-5.7718-4.5731-9.053-5.7079-3.368-1.1645-8.6558-1.21-8.709-1.2114
v -0.0014
c -0.84491 0.0039-1.6235 0.0078-2.2994 0.01341-5.5305 0.04269-6.1697 0.64805-6.3701 1.318-0.0684 0.22684-0.0579 0.41734-0.0127 0.5715 0.042 0.04022 0.0938 0.07056 0.16157 0.08467 0.33162 0.0628 0.47625-0.2674 0.49636-0.55668 0.2473-0.28857 1.2185 0.10407 1.0322 1.0541-0.18485 0.94932-1.2591 0.97014-1.7342 0.70273-0.46955-0.26599-1.0245-1.295-0.10619-2.3975 0.53799-0.7433 2.0295-1.1282 6.5292-1.1635 5.5065-0.04163 17.785 0 17.908 0
h 0.40569
c -0.60466 0.24624-1.0308 0.83926-1.0308 1.5325 0 0.9144 0.73943 1.6542 1.6528 1.6542 0.91369 0 1.6531-0.73978 1.6531-1.6542 0-0.69321-0.42615-1.2862-1.0308-1.5325
h 5.51
l -0.44556 0.34608
c -0.0229 0.0187-2.3615 1.8718-2.2387 5.1957 0.0614 1.6514 0.98566 3.4212 2.474 4.736 0.53234 0.47166 1.1137 0.86713 1.7293 1.1832 0.10972 0.04904 0.17181 0.07549 0.17569 0.07655
l -3e-3 0.0081
c 1.2294 0.59337 2.5915 0.87277 3.9956 0.81245-0.01-0.52035 0.10089-0.92992 0.26317-0.9391 0.16086-0.0099 0.31468 0.37818 0.3683 0.89041 4.5071-0.53693 6.447-4.6912 6.3331-7.3963-0.0614-1.4422-0.74683-6.1232-6.9095-7.2979 1.9339 0.61419 4.669 2.1043 5.2888 5.6832 0.22543 1.4376-0.25364 3.0325-1.2806 4.2718-0.99554 1.1994-2.3523 1.8842-3.8185 1.9286-1.4968 0.04551-2.8169-0.52035-3.7154-1.5953-0.8502-1.0185-1.2037-2.358-0.94474-3.5839 0.25082-1.1853 0.88971-2.1209 1.7981-2.6345 0.90346-0.50976 2.0306-0.57221 3.1768-0.17427 1.3903 0.48225 1.8549 1.8344 1.699 2.9602-0.0984 0.72425-0.43991 1.2887-0.90523 1.5663-0.82797 0.64206-2.0285 0.22966-2.3498-0.39899-0.25682-0.50482-0.22155-1.6118 0.768-1.7819 0.98954-0.17004 1.3737 0.84314 1.0686 1.095-0.30057 0.01411-0.64594 0.15769-0.58949 0.50059 0.0741 0.35701 0.53763 0.33902 0.86607 0.27905 0.42898-0.22648 0.68686-0.77611 0.76129-1.3134 0.13335-0.96908-0.26176-2.1329-1.445-2.5418-1.0548-0.36689-2.0436-0.31574-2.86 0.14464-0.81175 0.45755-1.384 1.3028-1.6108 2.3788-0.23565 1.1112 0.0871 2.3294 0.8636 3.2565 0.82056 0.98213 2.0313 1.5 3.4075 1.4584 1.3547-0.04127 2.6092-0.67663 3.5331-1.7896 0.95779-1.1553 1.4055-2.6367 1.1977-3.9631-0.92639-5.3375-6.8626-5.7767-6.9218-5.7824
l 4e-3 -0.06209
h -6.7927
c -0.0536 0.51611-0.48472 0.9211-1.0174 0.9211-0.53093 0-0.96203-0.40499-1.0174-0.9211
h -30.666
c -0.69567 0.2854-1.7544 0.87383-2.4991 1.9918-0.69251-1.0799-1.8835-1.693-2.6412-1.9918
h -4.9837
v -0.38593
h 4.7579
c 0.72348-0.25894 2.1007-0.88159 2.8677-2.0775 0.82902 1.2453 2.0486 1.8334 2.7206 2.0775
h 30.477
c 0.12136-0.4318 0.514-0.74965 0.98461-0.74965 0.47201 0 0.8636 0.31785 0.98566 0.74965
h 17.541
v 25.402
h -0.19226

wird in folgenden Code umgewandelt

(moveto 117.58 81.593)
(rlineto -1.6281 0)
(rlineto 0 -0.38559)
(rlineto 1.4348 0)
(rlineto 0 -6.6336)
(rcurveto -0.2921 -0.59831 -0.93804 -1.6626 -2.0348 -2.2542)
(rcurveto 0.88689 -0.647 1.6365 -1.3776 2.0348 -2.2747)
(rlineto 0 -1.8228)
(rcurveto -0.33161 -0.08573 -0.57785 -0.38523 -0.57785 -0.7426)
(rcurveto 0 -0.36054 0.24624 -0.65828 0.57785 -0.74436)
(rlineto 0 -8.6085)
(rcurveto -0.23107 -0.48507 -0.69321 -1.2051 -1.4778 -1.5494)
(rlineto -5.5989 0)
(rcurveto 5.3573 1.5635 5.9891 5.9619 6.0487 7.3805)
(rcurveto 0.10619 2.5082 -1.4647 6.2015 -5.0789 7.4362)
(rlineto 0.004 0.01023)
(rcurveto -0.0526 0.02187 -0.623 0.25929 -1.626 0.41592)
(rcurveto -0.0127 0.4512 -0.11571 0.78916 -0.26282 0.79728)
(rcurveto -0.14146 0.0081 -0.27869 -0.29563 -0.34537 -0.71931)
(rcurveto -1.3589 0.13547 -3.2918 0.08784 -5.6706 -0.61489)
(rcurveto -2.051 -0.60501 -4.482 -1.8768 -7.0573 -3.2237)
(rcurveto -3.4678 -1.8122 -7.0545 -3.6883 -10.073 -4.1279)
(rcurveto -3.7056 -0.53869 -5.8441 0.3041 -6.6096 1.2718)
(rcurveto -0.1524 0.19297 -0.25436 0.39546 -0.31115 0.60431)
(rcurveto 0.0113 0.21202 0.0843 0.40111 0.29845 0.45014)
(rcurveto 0.34395 0.06315 0.49353 -0.27834 0.5147 -0.57856)
(rcurveto 0.25717 -0.29951 1.2633 0.10619 1.071 1.0933)
(rcurveto -0.19332 0.9846 -1.3067 1.0054 -1.7999 0.72672)
(rcurveto -0.48401 -0.2734 -1.059 -1.3335 -0.1203 -2.473)
(rcurveto 0.0176 -0.02011 0.0293 -0.04198 0.0441 -0.06279)
(rcurveto 1.0788 -1.3631 3.683 -1.8898 6.9688 -1.4125)
(rcurveto 3.0829 0.44732 6.6989 2.3386 10.197 4.1674)
(rcurveto 2.5566 1.3374 4.9717 2.6003 6.9864 3.1948)
(rcurveto 0.9899 0.2921 1.9018 0.46602 2.7263 0.55986)
(rcurveto -0.5334 -0.15381 -1.0527 -0.35489 -1.5483 -0.60784)
(rcurveto -0.74084 -0.34325 -3.4138 -1.6891 -6.3465 -4.511)
(rcurveto -2.8102 -2.7072 -5.7718 -4.5731 -9.053 -5.7079)
(rcurveto -3.368 -1.1645 -8.6558 -1.21 -8.709 -1.2114)
(rlineto 0 -0.0014)
(rcurveto -0.84491 0.0039 -1.6235 0.0078 -2.2994 0.01341)
(rcurveto -5.5305 0.04269 -6.1697 0.64805 -6.3701 1.318)
(rcurveto -0.0684 0.22684 -0.0579 0.41734 -0.0127 0.5715)
(rcurveto 0.042 0.04022 0.0938 0.07056 0.16157 0.08467)
(rcurveto 0.33162 0.0628 0.47625 -0.2674 0.49636 -0.55668)
(rcurveto 0.2473 -0.28857 1.2185 0.10407 1.0322 1.0541)
(rcurveto -0.18485 0.94932 -1.2591 0.97014 -1.7342 0.70273)
(rcurveto -0.46955 -0.26599 -1.0245 -1.295 -0.10619 -2.3975)
(rcurveto 0.53799 -0.7433 2.0295 -1.1282 6.5292 -1.1635)
(rcurveto 5.5065 -0.04163 17.785 0 17.908 0)
(rlineto 0.40569 0)
(rcurveto -0.60466 0.24624 -1.0308 0.83926 -1.0308 1.5325)
(rcurveto 0 0.9144 0.73943 1.6542 1.6528 1.6542)
(rcurveto 0.91369 0 1.6531 -0.73978 1.6531 -1.6542)
(rcurveto 0 -0.69321 -0.42615 -1.2862 -1.0308 -1.5325)
(rlineto 5.51 0)
(rlineto -0.44556 0.34608)
(rcurveto -0.0229 0.0187 -2.3615 1.8718 -2.2387 5.1957)
(rcurveto 0.0614 1.6514 0.98566 3.4212 2.474 4.736)
(rcurveto 0.53234 0.47166 1.1137 0.86713 1.7293 1.1832)
(rcurveto 0.10972 0.04904 0.17181 0.07549 0.17569 0.07655)
(rlineto -0.003 0.0081)
(rcurveto 1.2294 0.59337 2.5915 0.87277 3.9956 0.81245)
(rcurveto -0.01 -0.52035 0.10089 -0.92992 0.26317 -0.9391)
(rcurveto 0.16086 -0.0099 0.31468 0.37818 0.3683 0.89041)
(rcurveto 4.5071 -0.53693 6.447 -4.6912 6.3331 -7.3963)
(rcurveto -0.0614 -1.4422 -0.74683 -6.1232 -6.9095 -7.2979)
(rcurveto 1.9339 0.61419 4.669 2.1043 5.2888 5.6832)
(rcurveto 0.22543 1.4376 -0.25364 3.0325 -1.2806 4.2718)
(rcurveto -0.99554 1.1994 -2.3523 1.8842 -3.8185 1.9286)
(rcurveto -1.4968 0.04551 -2.8169 -0.52035 -3.7154 -1.5953)
(rcurveto -0.8502 -1.0185 -1.2037 -2.358 -0.94474 -3.5839)
(rcurveto 0.25082 -1.1853 0.88971 -2.1209 1.7981 -2.6345)
(rcurveto 0.90346 -0.50976 2.0306 -0.57221 3.1768 -0.17427)
(rcurveto 1.3903 0.48225 1.8549 1.8344 1.699 2.9602)
(rcurveto -0.0984 0.72425 -0.43991 1.2887 -0.90523 1.5663)
(rcurveto -0.82797 0.64206 -2.0285 0.22966 -2.3498 -0.39899)
(rcurveto -0.25682 -0.50482 -0.22155 -1.6118 0.768 -1.7819)
(rcurveto 0.98954 -0.17004 1.3737 0.84314 1.0686 1.095)
(rcurveto -0.30057 0.01411 -0.64594 0.15769 -0.58949 0.50059)
(rcurveto 0.0741 0.35701 0.53763 0.33902 0.86607 0.27905)
(rcurveto 0.42898 -0.22648 0.68686 -0.77611 0.76129 -1.3134)
(rcurveto 0.13335 -0.96908 -0.26176 -2.1329 -1.445 -2.5418)
(rcurveto -1.0548 -0.36689 -2.0436 -0.31574 -2.86 0.14464)
(rcurveto -0.81175 0.45755 -1.384 1.3028 -1.6108 2.3788)
(rcurveto -0.23565 1.1112 0.0871 2.3294 0.8636 3.2565)
(rcurveto 0.82056 0.98213 2.0313 1.5 3.4075 1.4584)
(rcurveto 1.3547 -0.04127 2.6092 -0.67663 3.5331 -1.7896)
(rcurveto 0.95779 -1.1553 1.4055 -2.6367 1.1977 -3.9631)
(rcurveto -0.92639 -5.3375 -6.8626 -5.7767 -6.9218 -5.7824)
(rlineto 0.004 -0.06209)
(rlineto -6.7927 0)
(rcurveto -0.0536 0.51611 -0.48472 0.9211 -1.0174 0.9211)
(rcurveto -0.53093 0 -0.96203 -0.40499 -1.0174 -0.9211)
(rlineto -30.666 0)
(rcurveto -0.69567 0.2854 -1.7544 0.87383 -2.4991 1.9918)
(rcurveto -0.69251 -1.0799 -1.8835 -1.693 -2.6412 -1.9918)
(rlineto -4.9837 0)
(rlineto 0 -0.38593)
(rlineto 4.7579 0)
(rcurveto 0.72348 -0.25894 2.1007 -0.88159 2.8677 -2.0775)
(rcurveto 0.82902 1.2453 2.0486 1.8334 2.7206 2.0775)
(rlineto 30.477 0)
(rcurveto 0.12136 -0.4318 0.514 -0.74965 0.98461 -0.74965)
(rcurveto 0.47201 0 0.8636 0.31785 0.98566 0.74965)
(rlineto 17.541 0)
(rlineto 0 25.402)
(rlineto -0.19226 0)

Danke für eure Hilfe
viele Grüße
-- Manuela