diff options
Diffstat (limited to 'doc')
22 files changed, 1329 insertions, 0 deletions
diff --git a/doc/context/documents/general/manuals/svg-lmtx.pdf b/doc/context/documents/general/manuals/svg-lmtx.pdf Binary files differnew file mode 100644 index 000000000..0f08cae51 --- /dev/null +++ b/doc/context/documents/general/manuals/svg-lmtx.pdf diff --git a/doc/context/documents/general/qrcs/setup-cs.pdf b/doc/context/documents/general/qrcs/setup-cs.pdf Binary files differindex 9afba8474..caf2193a7 100644 --- a/doc/context/documents/general/qrcs/setup-cs.pdf +++ b/doc/context/documents/general/qrcs/setup-cs.pdf diff --git a/doc/context/documents/general/qrcs/setup-de.pdf b/doc/context/documents/general/qrcs/setup-de.pdf Binary files differindex 81eb95dc7..2e0e1be0a 100644 --- a/doc/context/documents/general/qrcs/setup-de.pdf +++ b/doc/context/documents/general/qrcs/setup-de.pdf diff --git a/doc/context/documents/general/qrcs/setup-en.pdf b/doc/context/documents/general/qrcs/setup-en.pdf Binary files differindex df76d474e..966b2ae73 100644 --- a/doc/context/documents/general/qrcs/setup-en.pdf +++ b/doc/context/documents/general/qrcs/setup-en.pdf diff --git a/doc/context/documents/general/qrcs/setup-fr.pdf b/doc/context/documents/general/qrcs/setup-fr.pdf Binary files differindex 47b5faa5d..74725cd28 100644 --- a/doc/context/documents/general/qrcs/setup-fr.pdf +++ b/doc/context/documents/general/qrcs/setup-fr.pdf diff --git a/doc/context/documents/general/qrcs/setup-it.pdf b/doc/context/documents/general/qrcs/setup-it.pdf Binary files differindex 972f19247..b5bbee3e9 100644 --- a/doc/context/documents/general/qrcs/setup-it.pdf +++ b/doc/context/documents/general/qrcs/setup-it.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf Binary files differindex 3f065838b..9ff2fbd6e 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-de.pdf b/doc/context/documents/general/qrcs/setup-mapping-de.pdf Binary files differindex fbb1d15b8..8b4fb09bf 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-de.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-de.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-en.pdf b/doc/context/documents/general/qrcs/setup-mapping-en.pdf Binary files differindex 4d978e994..277389453 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-en.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-en.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf Binary files differindex a83319ca9..7b5884e6f 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-it.pdf b/doc/context/documents/general/qrcs/setup-mapping-it.pdf Binary files differindex 13000e4c7..d28239ff7 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-it.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-it.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf Binary files differindex 926f30eb7..6d4ecc600 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf Binary files differindex 87921a227..b50d51950 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf diff --git a/doc/context/documents/general/qrcs/setup-nl.pdf b/doc/context/documents/general/qrcs/setup-nl.pdf Binary files differindex 6f8fe824e..7ad98be3e 100644 --- a/doc/context/documents/general/qrcs/setup-nl.pdf +++ b/doc/context/documents/general/qrcs/setup-nl.pdf diff --git a/doc/context/documents/general/qrcs/setup-ro.pdf b/doc/context/documents/general/qrcs/setup-ro.pdf Binary files differindex 1549cf712..a12c87f72 100644 --- a/doc/context/documents/general/qrcs/setup-ro.pdf +++ b/doc/context/documents/general/qrcs/setup-ro.pdf diff --git a/doc/context/sources/general/manuals/luametafun/luametafun-groups.tex b/doc/context/sources/general/manuals/luametafun/luametafun-groups.tex new file mode 100644 index 000000000..b29ab3cbf --- /dev/null +++ b/doc/context/sources/general/manuals/luametafun/luametafun-groups.tex @@ -0,0 +1,52 @@ +% language=us + +\environment luametafun-style + +\startcomponent luametafun-groups + +\startchapter[title={Groups}] + +This is just a quick example of an experimental features. + +\startbuffer +\startMPcode + fill fullcircle scaled 2cm shifted ( 5mm,2cm) withcolor "darkblue" ; + fill fullcircle scaled 2cm shifted (15mm,2cm) withcolor "darkblue" ; + + fill fullcircle scaled 2cm shifted ( 5mm,-2cm) withcolor "darkgreen" ; + fill fullcircle scaled 2cm shifted (15mm,-2cm) withcolor "darkgreen" ; + + draw image ( + fill fullcircle scaled 4cm withcolor "darkred" ; + fill fullcircle scaled 4cm shifted (2cm,0) withcolor "darkred" ; + + setgroup currentpicture to boundingbox currentpicture + withtransparency (1,.5) ; + ) ; + + draw image ( + fill fullcircle scaled 3cm withcolor "darkyellow" + withtransparency (1,.5) ; + fill fullcircle scaled 3cm shifted (2cm,0) withcolor "darkyellow" + withtransparency (1,.5) ; + ) ; + + addbackground withcolor "darkgray" ; +\stopMPcode +\stopbuffer + +\typebuffer[option=TEX] + +A group create an object that when transparency is applied is treated as +a group. + +\startlinecorrection + \getbuffer +\stoplinecorrection + +(Groups might become more powerful in the future, like reusable components but +then some more juggling is needed.) + +\stopchapter + +\stopcomponent diff --git a/doc/context/sources/general/manuals/luametafun/luametafun.tex b/doc/context/sources/general/manuals/luametafun/luametafun.tex index 52b7a6800..2dd917cdf 100644 --- a/doc/context/sources/general/manuals/luametafun/luametafun.tex +++ b/doc/context/sources/general/manuals/luametafun/luametafun.tex @@ -27,6 +27,7 @@ \component luametafun-chart \component luametafun-svg \component luametafun-fonts + \component luametafun-groups \component luametafun-interface \stopbodymatter diff --git a/doc/context/sources/general/manuals/svg/mozilla-tiger.svg b/doc/context/sources/general/manuals/svg/mozilla-tiger.svg new file mode 100644 index 000000000..f74af7dd1 --- /dev/null +++ b/doc/context/sources/general/manuals/svg/mozilla-tiger.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg"><path fill="#d87512" d="M17.786 44.63c-.606.115-1.23.173-1.854.173-2.444 0-4.644-.864-6.04-2.375-.855-.92-1.394-2.147-1.517-3.47-.126-1.243.067-2.638.58-4.163.325-1.016.83-2.01 1.365-3.064.216-.426.437-.858.65-1.302.702-1.454 1.504-3.164 2.11-5.05.715-2.188.943-4.287.682-6.23-.267-2.102-.994-3.972-1.74-5.685a2.992 2.992 0 0 0-4.15-1.446c-.71.375-1.23 1-1.467 1.77a2.983 2.983 0 0 0 .218 2.292c.632 1.19 1.314 2.596 1.592 3.977.238 1.137.18 2.41-.184 3.897-.37 1.538-.976 3.143-1.522 4.518-.16.406-.33.816-.507 1.234-.507 1.215-1.032 2.47-1.364 3.838-.55 2.14-.666 4.152-.348 5.97.36 2.163 1.41 4.14 2.955 5.567 2.027 1.88 4.808 2.914 7.826 2.914 1.14 0 2.274-.146 3.375-.437l-.66-2.923"/><g fill="#bc600d"><path d="M11.585 43.742s.387 1.248.104 3.05c0 0 2.045-.466 1.898-2.27 0 0-.815-.29-2-.78M9.19 41.484S8.98 42.94 7.93 44.43c0 0 2.103.42 2.774-1.265 0 0-.696-.66-1.515-1.68M8.398 37.21s-.926 1.432-3.23 2.322c0 0 1.514 2.303 3.53.904 0 0-.237-1.388-.3-3.226M12.964 15.833s-1.685.798-3.783 3.45c0 0 2.1 1.55 4.663 2.228 0 0 .285-3.093-.88-5.677M13.5 23.873s-2.988.544-5.57 2.794c0 0 1.615 1.708 3.583 2.62 0 0 1.678-3.39 1.987-5.414M10.32 31.73s-1.483 0-4.483.812c0 0-.01 2.873 2.94 2.823 0 0 .747-1.75 1.544-3.635"/></g><g fill="#d87512"><path d="M53.33 39.37c0-4.484-35.622-4.484-35.622 0 0 10.16.05 10.25 17.81 10.25 17.762 0 17.812-.09 17.812-10.25"/><path d="M42.645 56.04c1.688 2.02 9.275.043 10.504-2.28 5.01-9.482-.006-13.58-.006-13.58l-10.5 1.313s-2.154 11.977 0 14.547"/></g><g fill="#bc600d"><path d="M54.2 41.496s-.336 4.246-4.657 9.573c0 0 4.38-1.7 5.808-4.3 0 0 .448-3.02-1.15-5.274M55.08 48.69s-1.065 1.88-3.563 3.872c0 0 1.78-.03 2.576-.785 0 0 .77-1.41.987-3.086"/></g><path fill="#f29a2e" d="M35.484 60.38c1.87 2.23 8.547 2.09 10.574 0 2.904-2.995 2.78-16.656 2.904-23.314l-12.418-1.053s-3.444 21.52-1.06 24.367"/><g fill="#bc600d"><path d="M48.21 53.53s-3.578-3.443-8.738-.013c0 0 5.754 2.455 7.365 5.672 0 0 1.126-2.245 1.373-5.66M48.775 46.06s-3.852-3.09-7.938 1.43c0 0 4.452-.47 7.632 3.635 0 0 .493-3.05.305-5.065"/></g><g fill="#3e4347"><path d="M43.847 61.57l-.397-2.765 1.344 2.445zM40.41 61.996l.502-3.294.498 3.294zM36.713 61.3l1.317-2.26-.372 2.59z"/></g><path fill="#d87512" d="M28.388 56.04c-1.688 2.02-9.277.043-10.504-2.28-5.01-9.482.004-13.58.004-13.58l10.5 1.313s2.154 11.977 0 14.547"/><g fill="#bc600d"><path d="M16.833 41.496s.336 4.246 4.657 9.573c0 0-4.38-1.7-5.807-4.3 0 0-.448-3.02 1.15-5.274M15.957 48.69s1.066 1.88 3.563 3.872c0 0-1.782-.03-2.576-.785 0 0-.772-1.41-.987-3.086"/></g><path fill="#f29a2e" d="M35.548 60.38c-1.87 2.23-8.548 2.09-10.575 0-2.904-2.995-2.78-16.656-2.904-23.314l12.417-1.053s3.446 21.52 1.06 24.367"/><g fill="#bc600d"><path d="M22.822 53.53s3.58-3.443 8.74-.013c0 0-5.754 2.455-7.367 5.672 0 0-1.125-2.245-1.373-5.66M22.255 46.06s3.852-3.09 7.94 1.43c0 0-4.453-.47-7.633 3.635 0 0-.493-3.05-.307-5.065"/></g><g fill="#3e4347"><path d="M26.24 61.25l1.345-2.445-.395 2.765zM29.62 61.996l.5-3.294.5 3.294zM33.375 61.63L33 59.04l1.32 2.26zM35.516 60.46c-.395-2.48-.482-4.96-.5-7.438.015-2.48.104-4.96.5-7.44.396 2.48.485 4.96.5 7.44-.018 2.48-.106 4.96-.5 7.438"/></g><path fill="#f29a2e" d="M27.777 6.994c0 3.82-2.727 6.987-6.086 6.915C11.83 13.7 15.893 2 15.893 2c3.36 0 11.885 1.176 11.885 4.994"/><path fill="#af5a31" d="M24.05 7.752c0 2.037-1.454 3.727-3.248 3.688-5.26-.11-3.093-6.353-3.093-6.353 1.792 0 6.34.628 6.34 2.665"/><path fill="#f29a2e" d="M43.26 6.994c0 3.82 2.726 6.987 6.086 6.915 9.86-.21 5.8-11.91 5.8-11.91C51.782 2 43.26 3.176 43.26 6.994"/><path fill="#af5a31" d="M46.983 7.752c0 2.037 1.455 3.727 3.247 3.688 5.26-.11 3.094-6.353 3.094-6.353-1.794 0-6.34.628-6.34 2.665"/><path fill="#f29a2e" d="M55.806 33.378c0 7.155-9.517 8.13-20.288 8.13-10.776 0-20.29-.975-20.29-8.13 0-29.96 11.596-29.14 20.29-29.14 8.69 0 20.288-.82 20.288 29.14"/><g fill="#3e4347"><path d="M35.54 7.59c3.24 0 6.15 1.084 8.156 2.81-.77-2.945-4.135-5.16-8.173-5.16-4.06 0-7.442 2.238-8.186 5.204 2.01-1.753 4.938-2.855 8.204-2.855"/><path d="M35.535 11.193c2.217 0 4.21.744 5.584 1.925-.528-2.02-2.835-3.534-5.6-3.534-2.78 0-5.095 1.533-5.605 3.564 1.376-1.198 3.383-1.955 5.62-1.955"/></g><path fill="#ffe8bb" d="M29.553 43.727l-18.408-7.01 4.24-9.06s2.704 3.85 13.29 6.82l.878 9.243"/><path fill="#3e4347" d="M29.37 39.77c-7.462-1.27-16.325-6.673-16.48-6.75l.992-2.168c.184.092 8.806 5.342 15.853 6.544l-.366 2.374"/><path fill="#ffe8bb" d="M41.48 43.727l18.406-7.01-4.24-9.06s-2.704 3.85-13.29 6.82l-.876 9.243"/><path fill="#3e4347" d="M41.663 39.77c7.46-1.27 16.325-6.673 16.48-6.75l-.993-2.168c-.184.092-8.808 5.342-15.852 6.544l.365 2.374"/><g fill="#ffe8bb"><path d="M43.524 45.57C38.752 42.023 41.4 33.86 41.4 33.86c-5.657 5.906-12.662 8.74-12.662 8.74 1.608 5.446 5.77 6.412 5.77 6.412-.34-1.835.663-3.302.663-3.302 1.68 2.22 5.03 2.986 5.03 2.986-1.287-1.508-.948-3.835-.948-3.835 2.326.875 4.27.71 4.27.71"/><path d="M42.29 42.97c-2.634 2.247-10.917 2.247-13.553 0-2.856-2.435-2.495-7.144.1-9.884 2.397-2.527 10.958-2.527 13.355 0 2.595 2.74 2.956 7.45.098 9.883"/></g><g fill="#3e4347"><path d="M36.18 40.48a.69.69 0 0 1-.644-.477c-.227-.67-.77-3.293-.71-5.498.01-.398.325-.71.7-.698.38.01.674.343.663.74-.057 2.01.46 4.466.633 4.974.127.375-.06.786-.414.92a.607.607 0 0 1-.23.04"/><path d="M30.504 43.25c.21-.202.394-.408.582-.61.188-.204.378-.405.57-.604.385-.396.782-.78 1.2-1.145a14.125 14.125 0 0 1 2.745-1.9c.504-.263 1.032-.49 1.59-.654s1.153-.273 1.772-.253c.31.01.623.055.928.146.307.088.602.23.86.416.263.19.485.422.652.684.17.257.287.54.35.83a4.247 4.247 0 0 0-.677-.448 2.567 2.567 0 0 0-.68-.237c-.447-.088-.887-.04-1.33.06-.89.216-1.786.65-2.69 1.114-.905.466-1.818.983-2.776 1.466-.48.24-.97.473-1.48.682-.256.103-.517.202-.783.285-.27.078-.546.155-.833.167"/></g><path fill="#f15a61" d="M41.34 31.743c-1.17-.528-4.757-.57-5.83-.57-1.07 0-4.66.042-5.83.57-.832.376-.187 1.31 2.027 2.116 1.397.506 2.733.666 3.803.666 1.07 0 2.405-.16 3.805-.667 2.213-.808 2.856-1.74 2.025-2.117"/><g fill="#3e4347"><path d="M29.917 23.48l1.61 5.292L26.954 26z"/><path d="M22.645 31.828c-.522 0-.932-.056-1.17-.098-2.986-.52-4.632-1.996-6.09-4.067l.185-2.472c1.52 1.446 3.953 3.76 6.28 4.167 1.156.2 2.853-.016 4.15-1.234 1.537-1.44 2.263-4.05 2.1-7.547l1.635.132c.2 4.312-.116 7.244-2.212 9.212-1.692 1.59-3.613 1.908-4.878 1.908M41.12 23.48l-1.613 5.292L44.08 26z"/><path d="M48.39 31.828c.52 0 .93-.056 1.167-.098 2.99-.52 4.637-1.996 6.09-4.067l-.182-2.472c-1.52 1.446-3.955 3.76-6.28 4.167-1.156.2-2.855-.016-4.154-1.234-1.532-1.44-2.258-4.05-2.095-7.547l-1.636.132c-.202 4.312.114 7.244 2.213 9.212 1.69 1.59 3.61 1.908 4.877 1.908"/></g><path fill="#ffe8bb" d="M30.25 22.09c-.852 5.282-3.728 5.87-6.696 5.577-2.986-.294-5.396-2.667-5.396-6.743 0-4.28 0-4.28 6.647-5.752 6.728-1.49 6 3.437 5.445 6.918"/><path fill="#3e4347" d="M29.16 22.547c-.244 2.534-2.61 4.357-5.287 4.072-2.674-.286-4.645-2.57-4.402-5.102s.28-2.75 5.108-2.237c4.83.514 4.824.737 4.582 3.267"/><path fill="#fff" d="M27.59 21.884c-.16 1.688-1.74 2.903-3.522 2.714-1.785-.19-3.096-1.712-2.936-3.4.163-1.69.186-1.835 3.406-1.493 3.22.344 3.215.49 3.053 2.18"/><g fill="#3e4347"><ellipse cx="25.5" cy="21.08" rx="1.45" ry="1.647"/><path d="M31.27 17.896c.42 0 .807-.284.936-.728.16-.546-.133-1.122-.65-1.29l-5.98-1.924c-.516-.166-1.065.14-1.225.685-.155.543.136 1.12.652 1.287l5.98 1.924a.95.95 0 0 0 .288.046"/></g><path fill="#ffe8bb" d="M40.78 22.09c.855 5.282 3.73 5.87 6.7 5.577 2.984-.294 5.395-2.667 5.395-6.743 0-4.28-.002-4.28-6.646-5.752-6.73-1.49-6.01 3.437-5.45 6.918"/><path fill="#3e4347" d="M41.873 22.547c.243 2.534 2.61 4.357 5.287 4.072 2.674-.286 4.646-2.57 4.402-5.102-.242-2.533-.28-2.75-5.107-2.237-4.83.514-4.824.737-4.582 3.267"/><path fill="#fff" d="M43.44 21.884c.16 1.688 1.737 2.903 3.522 2.714 1.783-.19 3.098-1.712 2.936-3.4-.16-1.69-.188-1.835-3.404-1.493-3.22.344-3.217.49-3.054 2.18"/><g fill="#3e4347"><ellipse cx="47.722" cy="20.932" rx="1.45" ry="1.647"/><path d="M39.76 17.896a.982.982 0 0 1-.935-.728c-.16-.546.132-1.122.65-1.29l5.98-1.924c.517-.166 1.063.14 1.224.685.155.543-.136 1.12-.653 1.287l-5.98 1.924a.96.96 0 0 1-.287.046"/></g></svg> diff --git a/doc/context/sources/general/manuals/svg/svg-lmtx-microsoft.lua b/doc/context/sources/general/manuals/svg/svg-lmtx-microsoft.lua new file mode 100644 index 000000000..9b55e87ca --- /dev/null +++ b/doc/context/sources/general/manuals/svg/svg-lmtx-microsoft.lua @@ -0,0 +1,113 @@ +return { + [[ + <svg id="glyph7" version="1.1" xmlns="http://www.w3.org/2000/svg"> + <rect x="100" y="-430" width="200" height="430" fill="darkred" /> + <rect x="100" y="-635" width="200" height="135" fill="darkblue" /> + </svg> + ]], + [[ + <svg id="glyph7" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 1000 1000 1000"> + <rect x="100" y="570" width="200" height="430" fill="darkgreen" /> + <rect x="100" y="365" width="200" height="135" fill="darkblue" /> + </svg> + ]], + [[ + <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <g id="i-base"> + <rect x="100" y="570" width="200" height="430" fill="darkblue" /> + </g> + </defs> + <g id="glyph2" transform="translate(0,-1000)"> + <use xlink:href="#i-base" /> + </g> + </svg> + ]], + [[ + <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <g id="i-base"> + <rect x="100" y="570" width="200" height="430" fill="darkred" /> + </g> + </defs> + <g id="glyph13" transform="translate(0,-1000)"> + <use xlink:href="#i-base" /> + <rect x="100" y="365" width="200" height="135" fill="darkblue" /> + </g> + </svg> + ]], + [[ + <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <g id="i-base"> + <rect x="100" y="570" width="200" height="430" fill="darkgreen" /> + </g> + </defs> + <g id="glyph14" transform="translate(0,-1000)"> + <use xlink:href="#i-base" /> + <polygon fill="darkblue" points="120,500 280,500 435,342 208,342"/> + </g> + </svg> + ]], + [[ + <svg id="glyph7" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 1000 1000 1000"> + <defs> + <linearGradient id="grad" x1="0%" y1="0%" x2="0%" y2="100%"> + <stop offset="0%" stop-color="darkblue" stop-opacity="1" /> + <stop offset="100%" stop-color="#00aab3" stop-opacity="1" /> + </linearGradient> + </defs> + <rect x="100" y="570" width="200" height="430" fill="blue" xfill="url(#grad)" /> + <rect x="100" y="365" width="200" height="135" fill="green" xfill="currentColor" /> + </svg> + ]], + [[ + <svg id="glyph7" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 1000 1000 1000"> + <defs> + <linearGradient id="grad" x1="0%" y1="0%" x2="0%" y2="100%"> + <stop offset="0%" stop-color="var(--color0,darkblue)" stop-opacity="1" /> + <stop offset="100%" stop-color="var(--color1,#00aab3)" stop-opacity="1" /> + </linearGradient> + </defs> + <rect x="100" y="570" width="200" height="430" fill="blue" xfill="url(#grad)" /> + <rect x="100" y="365" width="200" height="135" fill="darkblue" /> + </svg> + ]], + [[ + <svg id="glyph2" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 1000 1000 1000"> + <image x="100" y="365" width="200" height="635" + xlink:href="data:image/png;base64, + iVBORw0KGgoAAAANSUhEUgAAAMgAAAJ7CAYAAACmmd5sAAAFZklEQVR42u3XsQ3D + MBAEQUpw9ypahrMPGGwiwcFMCQQW9zzWuu4FbJ2eAAQCAgGBgEBAICAQEAgIBAQC + CAQEAgIBgYBAQCAgEBAICAQEAggEBAICAYGAQEAgIBAQCAgEEAgIBAQCAgGBgEBA + ICAQEAgIBBAICAQEAgIBgYBAQCAgEBAIIBAQCAgEBAICAYGAQEAgIBAQCCAQEAgI + BAQCAgGBgEBAICAQQCAgEBAICAQEAgIBgYBAQCAgEEAgIBAQCAgEBAICAYGAQEAg + IBBPAAIBgYBAQCAgEBAICAQEAgIBBAICAYGAQEAgIBAQCAgEBAICAQQCAgGBgEBA + ICAQEAgIBAQCCAQEAgIBgYBAQCAgEBAICAQEAggEBAICAYGAQEAgIBAQCAgEAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAA4DHHWtftGWDv80sE2Ds9AQgEBAL+IPBuIAoBJxYIBAQCPukgEHBigUBAIOAP + AlgQiAtiQsCCgEDAJx0sCFgQsCAgEHBigQUB5oKYELAgIBDwSQcLAhYELAgIBJxY + YEEACwItEIWAEwucWGBBwIKABQGBgBMLLAhYEMCCQFwQEwJOLHBigQUBCwICAScW + WBCwIGBBAIFAPbHcWGBBwCcdLAgIBJxYYEHAgoAFAYEA88RyY4EFAZ90sCAgEBAI + +IOAQMCJBQIBBALxD+ITAj7p4MQCgYBAwB8EBAJOLBAICATwB4EYiELAiQUCAYGA + TzoIBJxYIBAQCPiDABYE4oKYELAgIBDwSQcLAhYELAgIBJxYYEGAuSAmBCwICAR8 + 0sGCgAUBCwICAScWWBDAgkALRCHgxAInFlgQsCBgQUAg4MQCCwIWBLAgEBfEhIAT + C5xYYEHAgoBAwIkFFgQsCFgQQCBQTyw3FlgQ8EkHCwICAScWWBCwIGBBQCDAPLHc + WGBBwCcdLAgIBAQC/iAgEHBigUAAgUD8g/iEgE86OLFAICAQ8AcBgYATCwQCAgH8 + QSAGohBwYoFAQCDgkw4CAScWCAQEAv4ggAWBuCAmBCwICAR80sGCgAUBCwICAScW + WBBgLogJAQsCAgGfdLAgYEHAgoBAwIkFFgSwINACUQg4scCJBRYELAhYEBAIOLHA + goAFASwIxAUxIeDEAicWWBCwICAQcGKBBQELAhYEEAjUE8uNBRYEfNLBgoBAwIkF + FgQsCFgQEAgwTyw3FlgQ8EkHCwICAYGAPwgIBJxYIBBAIBD/ID4h4JMOTiwQCAgE + /EFAIODEAoGAQAB/EIiBKAScWCAQEAj4pINAwIkFAgGBgD8IYEEgLogJAQsCAgGf + dLAgYEHAgoBAwIkFFgSYC2JCwIKAQMAnHSwIWBCwICAQcGKBBQEsCLRAFAJOLHBi + gQUBCwIWBAQCTiywIGBBAAsCcUFMCDixwIkFFgQsCAgEnFhgQcCCgAUBBAL1xHJj + gQUBn3SwICAQcGKBBQELAhYEBALME8uNBRYEfNLBgoBAQCDgDwICAScWCAQQCMQ/ + iE8I+KSDEwsEAgIBfxAQCDixQCAgEMAfBGIgCgEnFggEBAI+6SAQcGKBQEAg4A8C + WBCIC2JCwIKAQMAnHSwIWBCwICAQcGKBBQHmgpgQsCAgEPBJBwsCFgQsCAgEnFhg + QQALAi0QhYATC5xYYEHAgoAFAYGAEwssCFgQwIJAXBATAk4scGKBBQELAgIBJxZY + ELAgYEEAgUA9sdxYYEHAJx0sCAgEnFhgQcCCgAUBgQDzxHJjgQUBn3SwICAQEAj4 + g4BAwIkFAgEEAvEP4hMCPungxAKBgEDgH3wBrUwJtCBGuc0AAAAASUVORK5CYII= + "/> + </svg> + ]], +} diff --git a/doc/context/sources/general/manuals/svg/svg-lmtx-mozilla.lua b/doc/context/sources/general/manuals/svg/svg-lmtx-mozilla.lua new file mode 100644 index 000000000..0797f6406 --- /dev/null +++ b/doc/context/sources/general/manuals/svg/svg-lmtx-mozilla.lua @@ -0,0 +1,354 @@ +return { + [[ + <svg width="160" height="140" xmlns="http://www.w3.org/2000/svg" version="1.1"> + <rect x="10" y="10" width="100" height="100" stroke="blue" fill="purple" fill-opacity="0.5" stroke-opacity="0.8"/> + </svg> + ]], + [[ + <svg width="160" height="140" xmlns="http://www.w3.org/2000/svg" version="1.1"> + <line x1="40" x2="120" y1="20" y2="20" stroke="black" stroke-width="20" stroke-linecap="butt"/> + <line x1="40" x2="120" y1="60" y2="60" stroke="black" stroke-width="20" stroke-linecap="square"/> + <line x1="40" x2="120" y1="100" y2="100" stroke="black" stroke-width="20" stroke-linecap="round"/> + </svg> + ]], + [[ + <svg width="160" height="280" xmlns="http://www.w3.org/2000/svg" version="1.1"> + <polyline points="40 60 80 20 120 60" stroke="black" stroke-width="20" stroke-linecap="butt" fill="none" stroke-linejoin="miter"/> + <polyline points="40 140 80 100 120 140" stroke="black" stroke-width="20" stroke-linecap="round" fill="none" stroke-linejoin="round"/> + <polyline points="40 220 80 180 120 220" stroke="black" stroke-width="20" stroke-linecap="square" fill="none" stroke-linejoin="bevel"/> + </svg> + ]], + [[ + <svg width="200" height="150" xmlns="http://www.w3.org/2000/svg" version="1.1"> + <path d="M 10 75 Q 50 10 100 75 T 190 75" stroke="black" stroke-linecap="round" stroke-dasharray="5,10,5" fill="none"/> + <path d="M 10 75 L 190 75" stroke="red" stroke-linecap="round" stroke-width="1" stroke-dasharray="5,5" fill="none"/> + </svg> + ]], + [[ + <svg viewBox="0 0 30 10" xmlns="http://www.w3.org/2000/svg"> + <circle cx="5" cy="5" r="3" stroke="green" /> + <circle cx="15" cy="5" r="3" stroke="green" stroke-width="3" /> + <circle cx="25" cy="5" r="3" stroke="green" stroke-width="2%" /> + </svg> + ]], + [[ + <svg viewBox="0 0 38 30" xmlns="http://www.w3.org/2000/svg"> + <path stroke="black" fill="none" stroke-linejoin="miter" id="p1" + d="M1,9 l7 ,-3 l7 ,3 + m2,0 l3.5 ,-3 l3.5 ,3 + m2,0 l2 ,-3 l2 ,3 + m2,0 l0.75,-3 l0.75,3 + m2,0 l0.5 ,-3 l0.5 ,3" /> + <path stroke="black" fill="none" stroke-linejoin="miter" stroke-miterlimit="1" id="p2" + d="M1,19 l7 ,-3 l7 ,3 + m2, 0 l3.5 ,-3 l3.5 ,3 + m2, 0 l2 ,-3 l2 ,3 + m2, 0 l0.75,-3 l0.75,3 + m2, 0 l0.5 ,-3 l0.5 ,3" /> + <path stroke="black" fill="none" stroke-linejoin="miter" stroke-miterlimit="8" id="p3" + d="M1,29 l7 ,-3 l7 ,3 + m2, 0 l3.5 ,-3 l3.5 ,3 + m2, 0 l2 ,-3 l2 ,3 + m2, 0 l0.75,-3 l0.75,3 + m2, 0 l0.5 ,-3 l0.5 ,3" /> + <path stroke="pink" fill="none" stroke-width="0.05" + d="M1, 9 l7,-3 l7,3 m2,0 l3.5,-3 l3.5,3 m2,0 l2,-3 l2,3 m2,0 l0.75,-3 l0.75,3 m2,0 l0.5,-3 l0.5,3 + M1,19 l7,-3 l7,3 m2,0 l3.5,-3 l3.5,3 m2,0 l2,-3 l2,3 m2,0 l0.75,-3 l0.75,3 m2,0 l0.5,-3 l0.5,3 + M1,29 l7,-3 l7,3 m2,0 l3.5,-3 l3.5,3 m2,0 l2,-3 l2,3 m2,0 l0.75,-3 l0.75,3 m2,0 l0.5,-3 l0.5,3" /> + </svg> + ]], + [[ + <svg viewBox="-3 0 33 10" xmlns="http://www.w3.org/2000/svg"> + <line x1="0" y1="1" x2="30" y2="1" stroke="black" /> + <line x1="0" y1="3" x2="30" y2="3" stroke="black" stroke-dasharray="3 1" /> + <line x1="0" y1="5" x2="30" y2="5" stroke="black" stroke-dasharray="3 1" stroke-dashoffset="3" /> + <line x1="0" y1="7" x2="30" y2="7" stroke="black" stroke-dasharray="3 1" stroke-dashoffset="-3" /> + <line x1="0" y1="9" x2="30" y2="9" stroke="black" stroke-dasharray="3 1" stroke-dashoffset="1" /> + <path d="M0,5 h-3 M0,7 h3 M0,9 h-1" stroke="rgba(255,0,0,.5)" /> + </svg> + ]], + [[ + <svg width="200" height="150" xmlns="http://www.w3.org/2000/svg" version="1.1"> + <path d="M 10 75 Q 50 10 100 75 T 190 75" stroke="black" stroke-linecap="round" stroke-dasharray="5,10,5" fill="none"/> + <path d="M 10 75 L 190 75" stroke="red" stroke-linecap="round" stroke-dasharray="5,5" fill="none" stroke-width="1"/> + </svg> + ]], + [[ + <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> + <path fill="none" stroke="red" + d="M 10,10 h 10 + m 0,10 h 10 + m 0,10 h 10 + M 40,20 h 10 + m 0,10 h 10 + m 0,10 h 10 + m 0,10 h 10 + M 50,50 h 10 + m-20,10 h 10 + m-20,10 h 10 + m-20,10 h 10" /> + </svg> + ]], + [[ + <svg viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg"> + <path fill="none" stroke="red" d="M 10,10 L 90,90 V 10 H 50" /> + <path fill="none" stroke="red" d="M 110,10 l 80,80 v -80 h -40" /> + </svg> + ]], + [[ + <svg viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <path fill="none" stroke="red" d="M 10,90 C 30,90 25,10 50,10 S 70,90 90,90" /> + <path fill="none" stroke="red" d="M 110,90 c 20,0 15,-80 40,-80 s 20,80 40,80" /> + <g id="ControlPoints"> + <line x1="10" y1="90" x2="30" y2="90" stroke="lightgrey" /> + <circle cx="30" cy="90" r="1.5"/> + <line x1="50" y1="10" x2="25" y2="10" stroke="lightgrey" /> + <circle cx="25" cy="10" r="1.5"/> + <line x1="50" y1="10" x2="75" y2="10" stroke="lightgrey" stroke-dasharray="2" /> + <circle cx="75" cy="10" r="1.5" fill="lightgrey"/> + <line x1="90" y1="90" x2="70" y2="90" stroke="lightgrey" /> + <circle cx="70" cy="90" r="1.5"/> + <circle cx="10" cy="90" r="1.5"/> + <circle cx="50" cy="10" r="1.5"/> + <circle cx="90" cy="90" r="1.5"/> + </g> + <use xlink:href="#ControlPoints" x="100" /> + </svg> + ]], + [[ + <svg viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <path fill="none" stroke="red" d="M 10,50 Q 25,25 40,50 t 30,0 30,0 30,0 30,0 30,0" /> + <g> + <polyline points="10,50 25,25 40,50" stroke="rgba(0,0,0,.2)" fill="none" /> + <circle cx="25" cy="25" r="1.5" /> + <circle cx="10" cy="50" r="1.5"/> + <circle cx="40" cy="50" r="1.5"/> + <g id="SmoothQuadraticDown"> + <polyline points="40,50 55,75 70,50" stroke="rgba(0,0,0,.2)" stroke-dasharray="2" fill="none" /> + <circle cx="55" cy="75" r="1.5" fill="lightgrey" /> + <circle cx="70" cy="50" r="1.5" /> + </g> + <g id="SmoothQuadraticUp"> + <polyline points="70,50 85,25 100,50" stroke="rgba(0,0,0,.2)" stroke-dasharray="2" fill="none" /> + <circle cx="85" cy="25" r="1.5" fill="lightgrey" /> + <circle cx="100" cy="50" r="1.5" /> + </g> + <use xlink:href="#SmoothQuadraticDown" x="60" /> + <use xlink:href="#SmoothQuadraticUp" x="60" /> + <use xlink:href="#SmoothQuadraticDown" x="120" /> + </g> + </svg> + ]], + [[ + <svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"> + <path fill="none" stroke="red" d="M 6,10 A 6 4 10 1 0 14,10" /> + <path fill="none" stroke="lime" d="M 6,10 A 6 4 10 1 1 14,10" /> + <path fill="none" stroke="purple" d="M 6,10 A 6 4 10 0 1 14,10" /> + <path fill="none" stroke="pink" d="M 6,10 A 6 4 10 0 0 14,10" /> + </svg> + ]], + [[ + <svg viewBox="0 -1 30 11" xmlns="http://www.w3.org/2000/svg"> + <path stroke="red" d="M 5,1 l -4,8 8,0" /> + <path stroke="red" d="M 15,1 l -4,8 8,0 -4,-8" /> + <path stroke="red" d="M 25,1 l -4,8 8,0 z" /> + </svg> + ]], + [[ + <svg viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg"> + <ellipse cx="100" cy="50" rx="100" ry="50" /> + </svg> + ]], + [[ + <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> + <line x1="0" y1="80" x2="100" y2="20" stroke="black" /> + </svg> + ]], + [[ + <svg viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg"> + <polygon points="0,100 50,25 50,75 100,0" /> + <polygon points="100,100 150,25 150,75 200,0" fill="none" stroke="black" /> + </svg> + ]], + [[ + <svg viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg"> + <polyline points="0,100 50,25 50,75 100,0" /> + <polyline points="100,100 150,25 150,75 200,0" fill="none" stroke="black" /> + </svg> + ]], + [[ + <svg viewBox="0 0 220 100" xmlns="http://www.w3.org/2000/svg"> + <rect width="100" height="100" /> + <rect x="120" width="100" height="100" rx="15" /> + </svg> + ]], + [[ + <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> + <path fill="none" stroke="red" + d="M 10,30 + A 20,20 0,0,1 50,30 + A 20,20 0,0,1 90,30 + Q 90,60 50,90 + Q 10,60 10,30 z" /> + </svg> + ]], + [[ + <svg viewBox="-10 -10 220 120" xmlns="http://www.w3.org/2000/svg"> + <polygon fill-rule="nonzero" stroke="red" points="50,0 21,90 98,35 2,35 79,90"/> + <polygon fill-rule="evenodd" stroke="red" points="150,0 121,90 198,35 102,35 179,90"/> + </svg> + ]], + [[ + <svg x="0" width="10" height="10" clip="auto"> + <circle cx="5" cy="5" r="4" stroke="green" /> + </svg> + ]], + [[ + <svg x="10" width="10" height="10" clip="rect(1, 9, 8, 2)"> + <circle cx="5" cy="5" r="4" stroke="green" /> + </svg> + </svg> + ]], + [[ + <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> + <rect x="0" y="0" width="100%" height="100%" fill="red"/> + <circle cx="50%" cy="50%" r="4" fill="yellow"/> + </svg> + ]], + [[ + <svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg"> + <rect x="0" y="0" width="100%" height="100%" fill="green"/> + <circle cx="50%" cy="50%" r="4" fill="yellow"/> + </svg> + ]], + [[ + <svg viewBox="-5 -5 10 10" xmlns="http://www.w3.org/2000/svg"> + <rect x="0" y="0" width="100%" height="100%" fill="blue"/> + <circle cx="50%" cy="50%" r="4" fill="yellow"/> + </svg> + ]], + [[ + <svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg"> + <rect x="10" y="10" width="30" height="20" fill="green" /> + <rect x="10" y="10" width="30" height="20" fill="red" transform="matrix(3 1 -1 3 30 40)" /> + </svg> + ]], + [[ + <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> + <rect x="5" y="5" width="40" height="40" fill="green" /> + <rect x="5" y="5" width="40" height="40" fill="blue" transform="translate(50)" /> + <rect x="5" y="5" width="40" height="40" fill="red" transform="translate(0 50)" /> + <rect x="5" y="5" width="40" height="40" fill="yellow" transform="translate(50,50)" /> + </svg> + ]], + [[ + <svg viewBox="-50 -50 100 100" xmlns="http://www.w3.org/2000/svg"> + <circle cx="0" cy="0" r="10" fill="red" transform="scale(4)" /> + <circle cx="0" cy="0" r="10" fill="yellow" transform="scale(1,4)" /> + <circle cx="0" cy="0" r="10" fill="pink" transform="scale(4,1)" /> + <circle cx="0" cy="0" r="10" fill="black" /> + </svg> + ]], + [[ + <svg viewBox="-12 -2 34 14" xmlns="http://www.w3.org/2000/svg"> + <rect x="0" y="0" width="10" height="10" /> + <rect x="0" y="0" width="10" height="10" fill="red" transform="rotate(100)" /> + <rect x="0" y="0" width="10" height="10" fill="green" transform="rotate(100,10,10)" /> + </svg> + ]], + [[ + <svg viewBox="-5 -5 10 10" xmlns="http://www.w3.org/2000/svg"> + <rect x="-3" y="-3" width="6" height="6" /> + <rect x="-3" y="-3" width="6" height="6" fill="red" transform="skewX(30)" /> + </svg> + ]], + [[ + <svg viewBox="-5 -5 10 10" xmlns="http://www.w3.org/2000/svg"> + <rect x="-3" y="-3" width="6" height="6" /> + <rect x="-3" y="-3" width="6" height="6" fill="red" transform="skewY(30)" /> + </svg> + ]], + [[ + <svg width="100" viewBox="0 0 100 90" xmlns="http://www.w3.org/2000/svg" version="1.1"> + <defs> + <path d="M50,0 21,90 98,35 2,35 79,90z" id="star" /> + </defs> + <clipPath id="emptyStar"> + <use xlink:href="#star" clip-rule="evenodd" /> + </clipPath> + <rect clip-path="url(#emptyStar)" width="50" height="90" fill="blue" /> + <clipPath id="filledStar"> + <use xlink:href="#star" clip-rule="nonzero" /> + </clipPath> + <rect clip-path="url(#filledStar)" width="50" height="90" x="50" fill="red" /> + </svg> + ]], +-- [[ +-- <svg viewBox="0 0 240 80" xmlns="http://www.w3.org/2000/svg"> +-- <style> +-- .small { font: italic 13px sans-serif; } +-- .heavy { font: bold 30px sans-serif; } +-- .Rrrrr { font: italic 40px serif; fill: red; } +-- </style> +-- <text x="20" y="35" class="small">My</text> +-- <text x="40" y="35" class="heavy">cat</text> +-- <text x="55" y="55" class="small">is</text> +-- <text x="65" y="55" class="Rrrrr">Grumpy!</text> +-- </svg> +-- ]], + [[ + <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> + <defs> + <marker id="arrow" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"> + <path d="M 0 0 L 10 5 L 0 10 z" /> + </marker> + <marker id="dot" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="5" markerHeight="5"> + <circle cx="5" cy="5" r="5" fill="red" /> + </marker> + </defs> + <polyline points="10,10 10,90 90,90" fill="none" stroke="black" marker-start="url(#arrow)" marker-end="url(#arrow)" /> + <polyline points="15,80 29,50 43,60 57,30 71,40 85,15" fill="none" stroke="grey" marker-start="url(#dot)" marker-mid="url(#dot)" marker-end="url(#dot)" /> + </svg> + ]], + -- from the attributes section + [[ + <svg viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg"> + <defs> + <linearGradient id="gradient" x1="0%" y1="0%" x2="0" y2="100%"> + <stop offset="0%" style="stop-color:skyblue;" /> + <stop offset="100%" style="stop-color:seagreen;" /> + </linearGradient> + </defs> + <rect x="0" y="0" width="100%" height="100%" fill="url(#gradient)" /> + <circle cx="50" cy="50" r="40" fill="black" /> + <circle cx="150" cy="50" r="40" fill="black" opacity="0.3" /> + </svg> + ]], + [[ + <svg viewBox="0 0 400 100" xmlns="http://www.w3.org/2000/svg"> + <circle cx="50" cy="50" r="40" /> + <circle cx="150" cy="50" r="40" fill-opacity="0.7" /> + <circle cx="250" cy="50" r="40" fill-opacity="50%" /> + <circle cx="350" cy="50" r="40" style="fill-opacity: .25;" /> + </svg> + ]], + [[ + <svg viewBox="0 0 30 10" xmlns="http://www.w3.org/2000/svg"> + <line x1="0" y1="1" x2="30" y2="1" stroke="black" /> + <line x1="0" y1="3" x2="30" y2="3" stroke="black" stroke-dasharray="4" /> + <line x1="0" y1="5" x2="30" y2="5" stroke="black" stroke-dasharray="4 1" /> + <line x1="0" y1="7" x2="30" y2="7" stroke="black" stroke-dasharray="4 1 2" /> + <line x1="0" y1="9" x2="30" y2="9" stroke="black" stroke-dasharray="4 1 2 3" /> + </svg> + ]], + [[ + <svg viewBox="-3 0 33 10" xmlns="http://www.w3.org/2000/svg"> + <line x1="0" y1="1" x2="30" y2="1" stroke="black" /> + <line x1="0" y1="3" x2="30" y2="3" stroke="black" stroke-dasharray="3 1" /> + <line x1="0" y1="5" x2="30" y2="5" stroke="black" stroke-dasharray="3 1" stroke-dashoffset="3" /> + <line x1="0" y1="7" x2="30" y2="7" stroke="black" stroke-dasharray="3 1" stroke-dashoffset="-3" /> + <line x1="0" y1="9" x2="30" y2="9" stroke="black" stroke-dasharray="3 1" stroke-dashoffset="1" /> + <path d="M0,5 h-3 M0,7 h3 M0,9 h-1" stroke="rgba(255,0,0,.5)" /> + </svg> + ]], +} diff --git a/doc/context/sources/general/manuals/svg/svg-lmtx.tex b/doc/context/sources/general/manuals/svg/svg-lmtx.tex new file mode 100644 index 000000000..11cf33895 --- /dev/null +++ b/doc/context/sources/general/manuals/svg/svg-lmtx.tex @@ -0,0 +1,547 @@ +% language=us + +% \enabletrackers[metapost.svg.result] +% \enabletrackers[metapost.svg.path] + +\enabledirectives[pdf.compact] + +% \nopdfcompression + +\def\showSVGcode#1#2% + {\ctxlua{metapost.showsvgpage{ + filename = "#1", + index = tonumber(#2), + method = "code" + }}} + +\def\showSVGcodeG#1#2% + {\ctxlua{metapost.showsvgpage{ + filename = "#1", + index = tonumber(#2), + method = "code", + x = 0, + y = 1000, + width = 1000, + height = 1000, + noclip = true + }}} + +\def\typeSVGcode#1#2% + {\ctxlua{metapost.typesvgpage{ + filename = "#1", + index = tonumber(#2) + }}} + +\usemodule[abbreviations-logos] +\usemodule[scite] + +\setuppapersize + [A4,landscape] + +\setuplayout + [backspace=1cm, + cutspace=2cm, + topspace=1cm, + width=middle, + height=middle, + header=0pt, + footer=0pt] + +\setupbodyfont + [dejavu,12pt] + +\setupwhitespace + [big] + +\setuphead + [chapter] + [style=\bfc, + color=darkblue] + +\setuphead + [section] + [style=\bfb, + color=darkblue] + +\starttext + +\startMPpage + drawlineoptions (withpen pencircle scaled 0.4 withcolor darkgray) ; + drawpointoptions (withpen pencircle scaled 0.8 withcolor darkred) ; + drawcontroloptions(withpen pencircle scaled 0.6 withcolor darkgreen) ; + drawpathoptions (withpen pencircle scaled 1.0 withcolor darkblue) ; + + drawoptionsfactor := .5 ; + detailpaths ; + + StartPage ; + + fill Page withcolor darkblue ; + + draw lmt_svg [ + filename = "svglogo.svg", + origin = true, + ] + ysized (PaperHeight -64mm) + shifted (12mm,52mm) ; + + draw textext.llft ("\strut in context") + ysized 34mm + shifted lrcorner Page + shifted (-8mm,84mm) + withcolor white ; + + draw textext.llft ("\strut and metafun xl") + ysized 34mm + shifted lrcorner Page + shifted (-8mm,44mm) + withcolor white ; + + + StopPage ; +\stopMPpage + +\starttitle[title=Introduction] + +This document is about using \SVG, an \XML\ based format for describing graphics +and colorful font shapes in \CONTEXT. It's one of the external figure formats. +Where we can use \METAPOST\ for all kind of systematic graphics, bitmap images +and artistic outlines come from outside. Inclusion of \SVG\ using the methods +discussed here is quite efficient and will work for many graphics, but when it +doesn't you can always fall back on a conversion by \INKSCAPE. It's work in +progress anyway. + +The document is made for viewing on the screen and has a bunch of examples taken +from websites. We might add more in due time. The cover page has the \SVG\ logo +taken from \WIKIPEDIA\ but with some details added. It's not a nice cover image +but it will do for our purpose. Feel free to suggest additional examples. + +\startlines +Hans Hagen +Hasselt NL +October 2019\high{+} +\stoplines + +\stoptitle + +\starttitle[title=The \SVG\ format] + +\startsection[title=What it is] + +The Scalable Vector Graphics format (\SVG) showed up around the turn of this +century. I remember looking into it and wondering to what extent it was a fresh +development and not some kind of application format turned \XML. Most elements +are empty elements and data lives in attributes. What I found most puzzling is +that a path definition was an attribute and not just content, especially because +it can be a pretty large blob of numbers and commands. Anyway, at that time I +played a bit with conversion but in the end decided to just consider it an +external format for which conversion to (say) \PDF\ by an external program was a +reasonable. At some point that external program became \INKSCAPE\ and \CONTEXT\ +uses that to convert \SVG\ images to \PDF\ runtime (with caching). + +In the meantime edition one turned edition two and the advance of \HTML\ and +\CSS\ has crept features into the format, thereby not making it look better. But, +because viewers support rendering \SVG, we now also see graphics showing up. The +ones that I have to deal with are educational graphics, and when you look into +the files, they can be curiously inconsistent in the way parts of graphics are +made. For instance, the numbers along an axis of a mathematical graphic can be a +mix of references to a font (\type {<text/>}), references to symbols \type +{<symbol/>} that have paths (\type {<path/>}) or just paths \type {<path/>}. +Using a tool that can spit out something structured doesn't mean that all its +users will structure. + +The \SVG\ format provides lines, rectangles, circles, ellipses, polylines, +polygons and paths. Paths are defines as a sequence of moves, lines, cubic and +quadratic curves, arcs, collected in the \type {d} attribute (a funny short name +compared to the length of its content and the verbosity of other attribute +names). They can be open or closed, and use different winding rules. Positions +are absolute or relative. This all leaves a lot of room for error and confusion. +When a path looks bad, it can be produced bad, or the interpretation can be bad. +Interpretation can even be such that errors are catched which makes it hard to +figure out what is really wrong. And as usual, bugs (and supposed catches) can +become features in the end. So it might take a while before this kind of support +in \CONTEXT\ becomes stable but once it is, normally we're okay for a while. And, +one nice side effect of \XML\ is that it can't really crash processing as it's +just data. + +\stopsection + +\startsection[title=Color fonts] + +Then color fonts showed up in \OPENTYPE\ and \SVG\ is one of the used +sub|-|formats in that. Again it was convenient enough to rely on \INKSCAPE\ to do +the conversion to \PDF\ blobs, but after a while I decided that a more native +(built|-|in) support start making sense. A lot had happened since 2000, most +noticeably the arrival of \LUATEX\ and \CONTEXT\ \MKIV\ followed by \LUAMETATEX\ +and \CONTEXT\ \LMTX, so a more direct support because more feasible. A more +direct support has the advantage that we don't need to call an external program +and cache the results (think of Emoji fonts with thousands of glyphs in \SVG\ +format). Also, direct conversion makes it possible to tweak colors and such, +simply because the data goes through the \CONTEXT\ internals as part of the +typesetting process. So, as a prelude to the \CONTEXT\ 2019 meeting a preliminary +converter was made, color font support was partially redone, and afterward the +converter got completed to the level needed for embedding more fancy graphics, +including relabeling. + +\stopsection + +\startsection[title=In practice] + +In the end all is about paths or glyphs, plus some optional clipping and +transformations. The rendering is controlled by attributes: color, transparency, +line thickness, the way lines join and end, etc. Now, in the original +specification that was done only with attributes, which is a clean and robust way +of doing it, but later styles and classes were introduced and we now have a whole +chain to consider when resolving a to be used attribute. + +\startitemize[packed] + \startitem attributes explicitly set by keys to an element \stopitem + \startitem attributes set in the \type {style} attribute \stopitem + \startitem attributes set via one or more \type {class} assignments \stopitem + \startitem attributes set for the specific element \stopitem + \startitem attributes inherited from an ancestor (somewhat vague) \stopitem + \startitem redundant (nested) attributes (text styling) \stopitem +\stopitemize + +Where examples are often hand codes and therefore look ok, graphics that get +generated can look quite horrible: the same parameters being set with different +methods, even inconsistently, to mention one. But also, graphics can be read in, +tweaked and saved again which in itself generates artifacts, etc. One can of +course argue that \XML\ is not for human consumption but personally I tend to +conclude that when a source file looks bad, the likelyhood is great that what it +encodes looks bad too. And for instance \INKSCAPE\ provides ways to inspect and +tweak the \XML\ in the editor. + +\stopsection + +\startsection[title=The conversion] + +This brings us to the conversion. As we need \PDF\ operators one method is to +directly go from \SVG\ to \PDF. There is the issue of fonts, but as we delegate +that to \TEX\ anyway, because that is kind of an abstraction. Such a conversion +is comparable with going from \METAPOST\ to \PDF. However, for practical reasons +an intermediate step has been chosen: we go from \SVG\ to \METAPOST\ first. This +has the benefit that we need little code for color and transparency because +\METAPOST\ (read: \METAFUN) already deals with that. We also don't need that much +for text, as we deal with that in \METAPOST\ too, and that way we can even +overload and reposition for instance labels in graphics relatively easy. + +Another advantage of the intermediate step is that we can combine \SVG\ graphics +with \METAPOST\ code. Of course we can already combine external graphics with +\METAPOST, but there is a big advantage here: the output is quite efficient. When +we transform paths and pens in \METAPOST, the end result is often just a path, +but where we to do a direct conversion to \PDF, we would either have to do +calculations on our own, or we would have to use lots of transformation +directives. In the end, especially because \METAPOST\ is so fast, the indirect +route pays of well (and I haven't even optimized it yet). + +\stopsection + +\startsection[title=Remark] + +In the perspective if using \TEX\ and \METAPOST\ it makes sense to keep an eye on +consistency. You can make quite structured \SVG\ images if you want to. When you +use a graphical editor you can even consider using a normal text editor to clean +up the code occasionally. The cleaner the code, the more predictable the outcome +will become. Looking at the code might also give an impression of what features +not to use of use differently. Of course this makes most sense in situations +where there are many graphics and long|-|term (re)use is needed. + +\stopsection + +\stoptitle + +\starttitle[title=Embedding graphics] + +\startsection[title=External figures] + +At least for now, the default \SVG\ inclusions is done via an external converter +but you can use the internal one by specifying a conversion. The next example +demonstrates that it works like any external figure: + +\startbuffer +\startcombination[4*1] + {\externalfigure[mozilla-tiger.svg][conversion=mp]} {1} + {\externalfigure[mozilla-tiger.svg][conversion=mp,height=1cm]} {2} + {\externalfigure[mozilla-tiger.svg][conversion=mp,height=3cm,width=1cm]} {3} + {\externalfigure[mozilla-tiger.svg][conversion=mp,height=1cm,width=8cm]} {4} +\stopcombination +\stopbuffer + +\typebuffer[option=TEX] + +We get: + +\startlinecorrection + \getbuffer +\stoplinecorrection + +\stopsection + +\startsection[title=Internal figures] + +You can put some \SVG\ code in a buffer: + +\startbuffer +\startbuffer[svgtest] + <svg> + <rect + x="0" y="0" width="80" height="20" + fill="blue" stroke="red" stroke-width="3" + stroke-linejoin="miter" + transform="rotate(10)" + /> + </svg> +\stopbuffer +\stopbuffer + +\typebuffer[option=TEX] \getbuffer + +In the future more options might be added but for now there's only an offset +possible: + +\startbuffer +\startcombination[2*1] + {\framed[offset=overlay]{\includesvgbuffer[svgtest]}} {default} + {\framed[offset=overlay]{\includesvgbuffer[svgtest][offset=2bp]}} {some offset} +\stopcombination +\stopbuffer + +\typebuffer[option=TEX] \getbuffer + +There is a companion command \type {\includesvgfile} which accepts a filename +and also supports offsets. Sometimes the offset is needed to prevent unwanted +clipping. + +\stopsection + +\startsection[title=Mixing in \METAFUN] + +An \SVG\ image can be directly included in an \METAFUN\ image. This makes it +possible to enhance (or manipulate) such an image, as in: + +\startbuffer +\startMPcode + draw lmt_svg [ + filename = "mozilla-tiger.svg", + origin = true, + ] rotated 45 slanted .75 ysized 2cm ; + + setbounds currentpicture to + boundingbox currentpicture + enlarged 1mm ; + + addbackground + withcolor "darkgray" ; +\stopMPcode +\stopbuffer + +\typebuffer[option=TEX] + +An \SVG\ image included this way becomes a regular \METAPOST\ picture, so a +collection of paths. Because \METAPOST\ on the average produces rather compact +output the \SVG\ image normally also is efficiently embedded. You don't need to +worry about loosing quality, because \METAPOST\ is quite accurate and we use so +called \quote {double} number mode anyway. + +\startlinecorrection + \getbuffer +\stoplinecorrection + +Another trick is to inline the code: + +\startbuffer +\startMPcode + draw svg "<svg> + <circle + cx='50' cy='50' r='40' + stroke='green' stroke-width='10' stroke-opacity='0.3' + fill='red' fill-opacity='0.3' + /> + <circle + cx='150' cy='50' r='40' + stroke='green' stroke-width='10' + fill='red' + opacity='0.3' + /> + </svg>" ; +\stopMPcode +\stopbuffer + +It doesn't really make sense as \METAPOST\ code is just as simple but +it looks cool: + +\startlinecorrection + \getbuffer +\stoplinecorrection + +And actually it's less code (which internally of course expands to +more): + +\startbuffer +\startMPcode + pickup pencircle scaled 10; + path p ; p := fullcircle scaled 80 ; + fill p shifted (50,50) withcolor blue + withtransparency(1,0.3) ; + draw p shifted (50,50) withcolor yellow + withtransparency(1,0.3) ; + draw image ( + fill p shifted (150,50) withcolor blue ; + draw p shifted (150,50) withcolor yellow ; + setgroup currentpicture to boundingbox currentpicture + withtransparency(1,0.3) ; + ) ; +\stopMPcode +\stopbuffer + +\typebuffer[option=TEX] + +It's all a matter of taste. Watch the grouping trick! + +\startlinecorrection + \getbuffer +\stoplinecorrection + +\stopsection + +\startsection[title=Fonts] + +{\em This is still experimental.} + +\stopsection + +\startsection[title=Labels] + +{\em This is still experimental.} + +\stopsection + +\startsection[title=Tracing] + +{\em This is still experimental.} + +\stopsection + +\stoptitle + +\starttitle[title=Mozilla test snippets] + +The Mozilla documentation pages for \SVG\ are pretty good and contain snippets +that can be used for testing. More examples might be added in due time. + +\dorecurse{38}{ + \page + \startsection[title=Snippet #1] + \framed + [offset=overlay] + {\scale[height=4cm]{\showSVGcode{svg-lmtx-mozilla.lua}{#1}}} + \blank + \start + \switchtobodyfont[10pt] + \setupalign[flushleft,verytolerant,broad] + \typeSVGcode{svg-lmtx-mozilla.lua}{#1} + \par + \stop + \stopsection + \page +} + +\stoptitle + +\starttitle[title=Microsoft test snippets] + +These snippets come from the \MICROSOFT\ typography pages that discuss \OPENTYPE\ +and \SVG. Because these are actually examples of glyphs, we need to set some +defaults: + +\starttabulate[|cT|rT|] +\NC x \NC 0 \NC \NR +\NC y \NC 1000 \NC \NR +\NC width \NC 1000 \NC \NR +\NC height \NC 1000 \NC \NR +\stoptabulate + +in order to get the right placement. This has to do with the fact that the +vertical \SVG\ coordinates go in the other direction compared to \METAPOST\ and +\PDF. + +\dorecurse{8}{ + \page + \startsection[title=Snippet #1] + \framed + [offset=overlay] + {\scale[height=4cm]{\showSVGcodeG{svg-lmtx-microsoft.lua}{#1}}} + \blank + \start + \switchtobodyfont[10pt] + \setupalign[flushleft,verytolerant,broad] + \typeSVGcode{svg-lmtx-microsoft.lua}{#1} + \par + \stop + \page + \stopsection + \page +} + +\stoptitle + +\starttitle[title=Xah Lee test snippets] + +These snippets come from the \type {http://xahlee.info/js/svg_path_spec.html}, +which gives a nice overview of \SVG. Not all examples are here. There are some +nice interactive examples there plus info about using fonts. + +\dorecurse{38}{ + \page + \startsection[title=Snippet #1] + \framed + [offset=overlay] + {\scale[height=4cm]{\showSVGcodeG{svg-lmtx-xahlee.lua}{#1}}} + \blank + \start + \switchtobodyfont[10pt] + \setupalign[flushleft,verytolerant,broad] + \typeSVGcode{svg-lmtx-xahlee.lua}{#1} + \par + \stop + \page + \stopsection + \page +} + +\stoptitle + +\starttitle[title=Our own snippets] + +These snippets were made as part if testing. I had some 1500 \SVG\ graphics that +internally were quite messy (it's surprising what some applications export) so I +sometimes had to extract bits and pieces and make my own tests to figure out how +to deal with it. + +\dorecurse{2}{ + \page + \startsection[title=Snippet #1] + \framed + [offset=overlay] + {\scale[height=4cm]{\showSVGcode{svg-lmtx-context.lua}{#1}}} + \blank + \start + \switchtobodyfont[10pt] + \setupalign[flushleft,verytolerant,broad] + \typeSVGcode{svg-lmtx-context.lua}{#1} + \par + \stop + \page + \stopsection + \page +} + +\stoptitle + +\stoptext + +% After some contemplating, while listening to Benmont Tench's solo album (2014), +% after first listening to a nice long interview, which I hit after following some +% Hammond links, I finally decided that it made sense to write this manual. Life is +% too short for delays. diff --git a/doc/context/sources/general/manuals/svg/svglogo.svg b/doc/context/sources/general/manuals/svg/svglogo.svg new file mode 100644 index 000000000..c23d92b82 --- /dev/null +++ b/doc/context/sources/general/manuals/svg/svglogo.svg @@ -0,0 +1,261 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 100 100"> + + <title>SVG Logo</title> + + <a xlink:href="http://www.w3.org/Graphics/SVG/" + xlink:title="W3C SVG Working Group home page"> + + <rect + id="background" + fill="#FF9900" + width="100" + height="100" + rx="4" + ry="4"/> + + <rect + id="top-left" + fill="#FFB13B" + width="50" + height="50" + rx="4" + ry="4"/> + + <rect + id="bottom-right" + x="50" + y="50" + fill="#DE8500" + width="50" + height="50" + rx="4" + ry="4"/> + + <g id="circles" fill="#FF9900"> + <circle + id="n" + cx="50" + cy="18.4" + r="18.4"/> + + <circle + id="ne" + cx="72.4" + cy="27.6" + r="18.4"/> + + <circle + id="e" + cx="81.6" + cy="50" + r="18.4"/> + + <circle + id="se" + cx="72.4" + cy="72.4" + r="18.4"/> + + <circle + id="s" + cx="50" + cy="81.6" + r="18.4"/> + + <circle + id="sw" + cx="27.6" + cy="72.4" + r="18.4"/> + + <circle + id="w" + cx="18.4" + cy="50" + r="18.4"/> + + <circle + id="nw" + cx="27.6" + cy="27.6" + r="18.4"/> + </g> + + <g id="stars"> + <path + id="black-star" + d="M 63.086, 18.385 + c 0.000, -7.227 -5.859,-13.086 -13.100,-13.086 + c -7.235, 0.000 -13.096, 5.859 -13.096, 13.086 + c -5.100, -5.110 -13.395, -5.110 -18.497, 0.000 + c -5.119, 5.120 -5.119, 13.408 0.000, 18.524 + c -7.234, 0.000 -13.103, 5.859 -13.103, 13.085 + c 0.000, 7.230 5.870, 13.098 13.103, 13.098 + c -5.119, 5.110 -5.119, 13.395 0.000, 18.515 + c 5.102, 5.104 13.397, 5.104 18.497, 0.000 + c 0.000, 7.228 5.860, 13.083 13.096, 13.083 + c 7.240, 0.000 13.100, -5.855 13.100,-13.083 + c 5.118, 5.104 13.416, 5.104 18.513, 0.000 + c 5.101, -5.120 5.101,-13.410 0.000,-18.515 + c 7.216, 0.000 13.081, -5.869 13.081,-13.098 + c 0.000, -7.227 -5.865,-13.085 -13.081,-13.085 + c 5.101, -5.119 5.101,-13.406 0.000,-18.524 + C 76.502, 13.275 68.206, 13.275 63.086, 18.385 z"/> + + <path + id="white-star" + fill="#FFFFFF" + d="M 55.003, 23.405 + v 14.488 + L 65.260, 27.640 + c 0.000, -1.812 0.691,-3.618 2.066, -5.005 + c 2.780, -2.771 7.275,-2.771 10.024, 0.000 + c 2.771, 2.766 2.771, 7.255 0.000, 10.027 + c -1.377, 1.375 -3.195, 2.072 -5.015, 2.072 + L 62.101, 44.982 + H 76.590 + c 1.290, -1.280 3.054,-2.076 5.011, -2.076 + c 3.900, 0.000 7.078, 3.179 7.078, 7.087 + c 0.000, 3.906 -3.178, 7.088 -7.078, 7.088 + c -1.957, 0.000 -3.721,-0.798 -5.011, -2.072 + H 62.100 + l 10.229, 10.244 + c 1.824, 0.000 3.642, 0.694 5.015, 2.086 + c 2.774, 2.759 2.774, 7.250 0.000, 10.010 + c -2.750, 2.774 -7.239, 2.774 -10.025, 0.000 + c -1.372, -1.372 -2.064,-3.192 -2.064, -5.003 + L 55.000, 62.094 + v 14.499 + c 1.271, 1.276 2.084, 3.054 2.084, 5.013 + c 0.000, 3.906 -3.177, 7.077 -7.098, 7.077 + c -3.919, 0.000 -7.094,-3.167 -7.094, -7.077 + c 0.000, -1.959 0.811,-3.732 2.081, -5.013 + V 62.094 + L 34.738, 72.346 + c 0.000, 1.812 -0.705, 3.627 -2.084, 5.003 + c -2.769, 2.772 -7.251, 2.772 -10.024, 0.000 + c -2.775, -2.764 -2.775,-7.253 0.000,-10.012 + c 1.377, -1.390 3.214,-2.086 5.012, -2.086 + l 10.257,-10.242 + H 23.414 + c -1.289, 1.276 -3.072, 2.072 -5.015, 2.072 + c -3.917, 0.000 -7.096,-3.180 -7.096, -7.088 + s 3.177, -7.087 7.096,-7.087 + c 1.940, 0.000 3.725, 0.796 5.015, 2.076 + h 14.488 + L 27.646, 34.736 + c -1.797, 0.000 -3.632,-0.697 -5.012, -2.071 + c -2.775, -2.772 -2.775,-7.260 0.000,-10.027 + c 2.773, -2.771 7.256,-2.771 10.027, 0.000 + c 1.375, 1.386 2.083, 3.195 2.083, 5.005 + l 10.235, 10.252 + V 23.407 + c -1.270, -1.287 -2.082,-3.053 -2.082, -5.023 + c 0.000, -3.908 3.175,-7.079 7.096, -7.079 + c 3.919, 0.000 7.097, 3.168 7.097, 7.079 + C 57.088, 20.356 56.274,22.119 55.003, 23.405 z"/> + </g> + + <g id="svg-textbox"> + <path + id="text-backdrop" + fill="black" + d="M 5.30,50.00 + H 94.68 + V 90.00 + Q 94.68,95.00 89.68,95.00 + H 10.30 + Q 5.30,95.00 5.30,90.00 Z"/> + + <path + id="shine" + fill="#3F3F3F" + d="M 14.657,54.211 + h 71.394 + c 2.908, 0.000 5.312, 2.385 5.312, 5.315 + v 17.910 + c -27.584,-3.403 -54.926,-8.125 -82.011,-7.683 + V 59.526 + C 9.353,56.596 11.743,54.211 14.657,54.211 + L 14.657,54.211 z"/> + + <g id="svg-text"> + <title>SVG</title> + <path + id="S" + fill="#FFFFFF" + stroke="#000000" + stroke-width="0.5035" + d="M 18.312,72.927 + c -2.103,-2.107 -3.407, -5.028 -3.407, -8.253 + c 0.000,-6.445 5.223,-11.672 11.666,-11.672 + c 6.446, 0.000 11.667, 5.225 11.667, 11.672 + h -6.832 + c 0.000,-2.674 -2.168, -4.837 -4.835, -4.837 + c -2.663, 0.000 -4.838, 2.163 -4.838, 4.837 + c 0.000, 1.338 0.549, 2.536 1.415, 3.420 + l 0.000, 0.000 + c 0.883, 0.874 2.101, 1.405 3.423, 1.405 + v 0.012 + c 3.232, 0.000 6.145, 1.309 8.243, 3.416 + l 0.000, 0.000 + c 2.118, 2.111 3.424, 5.034 3.424, 8.248 + c 0.000, 6.454 -5.221, 11.680 -11.667, 11.680 + c -6.442, 0.000 -11.666, -5.222 -11.666,-11.680 + h 6.828 + c 0.000, 2.679 2.175, 4.835 4.838, 4.835 + c 2.667, 0.000 4.835, -2.156 4.835, -4.835 + c 0.000,-1.329 -0.545, -2.527 -1.429, -3.407 + l 0.000, 0.000 + c -0.864,-0.880 -2.082, -1.418 -3.406, -1.418 + l 0.000, 0.000 + C 23.341,76.350 20.429, 75.036 18.312, 72.927 + L 18.312,72.927 + L 18.312,72.927 z"/> + <polygon + id="V" + fill="#FFFFFF" + stroke="#000000" + stroke-width="0.5035" + points="61.588,53.005 + 53.344,92.854 + 46.494,92.854 + 38.236,53.005 + 45.082,53.005 + 49.920,76.342 + 54.755,53.005"/> + + <path + id="G" + fill="#FFFFFF" + stroke="#000000" + stroke-width="0.5035" + d="M 73.255,69.513 + h 11.683 + v 11.664 + l 0.000, 0.000 + c 0.000, 6.452 -5.226,11.678 -11.669, 11.678 + c -6.441, 0.000 -11.666,-5.226 -11.666,-11.678 + l 0.000, 0.000 + V 64.676 + h -0.017 + C 61.586,58.229 66.827,53.000 73.253, 53.000 + c 6.459, 0.000 11.683, 5.225 11.683, 11.676 + h -6.849 + c 0.000,-2.674 -2.152,-4.837 -4.834, -4.837 + c -2.647, 0.000 -4.820, 2.163 -4.820, 4.837 + v 16.501 + l 0.000, 0.000 + c 0.000, 2.675 2.173, 4.837 4.820, 4.837 + c 2.682, 0.000 4.834,-2.162 4.834, -4.827 + v -0.012 + v -4.827 + h -4.834 + L 73.255,69.513 + L 73.255,69.513 z"/> + </g> + </g> + </a> +</svg> |