Compare commits

...

1 commit

Author SHA1 Message Date
Anton Thomasson
946ac19a58 Add format flowchart 2022-12-17 17:13:15 +01:00
3 changed files with 472 additions and 0 deletions

View file

@ -41,6 +41,8 @@ For printing JPEG images, transferring them as JPEG has highest priority.
JPEGs are then (losslessly) re-encoded to the baseline encoding profile to work with all printers (since SeaPrint 1.1).
For other image formats JPEG has lowest priority as transfer format since it is lossy.
![Format flowchart](doc/pipeline.svg)
Printers with any of these IPP certifications and derivative standards should likely be supported:
* IPP Everywhere

27
doc/pipeline.goat Normal file
View file

@ -0,0 +1,27 @@
If conversion is required:
.---------------.
PDF -------------------------------->| |
.------------------. | +----------------> Postscript
Plaintext ---->| QTextDocument +----->| pdf2printable |
| + QPdfWriter | | +----------------> PDF
'------------------' | |
DOC/PPT .-------------------. | |
ODT/ODP ---->| Calligraconverter +---->| '---------.
| (optional) | '---------------. +----> PWG-Raster
'-------------------' .--------. | ppm2pwg |
Images -------------------------------->| +----->| +----> URF-Raster
| QImage | '---------'
.--------------. | |
SVG ---->| QSvgRenderer +--------->| +-----------------------> PNG, JPEG,
'--------------' '--------' Reverse BMP
If target format is the same:
Postscript --------------------------------------------------------------------> Postscript
.-----------------------.
Plaintext ---->+ ensure CR+LF newlines +------------------------------------> Plaintext
'-----------------------'
PNG --------------------------------------------------------------------> PNG
.------------.
JPEG ---->+ baselinify +-----------------------------------------------> JPEG
'------------' (Baseline profile)

443
doc/pipeline.svg Normal file
View file

@ -0,0 +1,443 @@
<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='441' width='832' font-family='Menlo,Lucida Console,monospace'>
<style type="text/css">
svg {
color: #000000;
}
@media (prefers-color-scheme: dark) {
svg {
color: #FFFFFF;
}
}
</style>
<g transform='translate(8,16)'>
<path d='M 400,16 L 512,16' fill='none' stroke='currentColor'></path>
<path d='M 120,32 L 376,32' fill='none' stroke='currentColor'></path>
<path d='M 176,48 L 312,48' fill='none' stroke='currentColor'></path>
<path d='M 528,48 L 664,48' fill='none' stroke='currentColor'></path>
<path d='M 120,64 L 152,64' fill='none' stroke='currentColor'></path>
<path d='M 328,64 L 376,64' fill='none' stroke='currentColor'></path>
<path d='M 528,80 L 664,80' fill='none' stroke='currentColor'></path>
<path d='M 176,96 L 312,96' fill='none' stroke='currentColor'></path>
<path d='M 176,112 L 320,112' fill='none' stroke='currentColor'></path>
<path d='M 120,128 L 152,128' fill='none' stroke='currentColor'></path>
<path d='M 336,128 L 376,128' fill='none' stroke='currentColor'></path>
<path d='M 544,128 L 608,128' fill='none' stroke='currentColor'></path>
<path d='M 400,144 L 512,144' fill='none' stroke='currentColor'></path>
<path d='M 624,144 L 664,144' fill='none' stroke='currentColor'></path>
<path d='M 176,160 L 320,160' fill='none' stroke='currentColor'></path>
<path d='M 400,160 L 456,160' fill='none' stroke='currentColor'></path>
<path d='M 120,176 L 376,176' fill='none' stroke='currentColor'></path>
<path d='M 472,176 L 520,176' fill='none' stroke='currentColor'></path>
<path d='M 624,176 L 664,176' fill='none' stroke='currentColor'></path>
<path d='M 544,192 L 608,192' fill='none' stroke='currentColor'></path>
<path d='M 176,208 L 280,208' fill='none' stroke='currentColor'></path>
<path d='M 120,224 L 152,224' fill='none' stroke='currentColor'></path>
<path d='M 296,224 L 376,224' fill='none' stroke='currentColor'></path>
<path d='M 472,224 L 664,224' fill='none' stroke='currentColor'></path>
<path d='M 176,240 L 280,240' fill='none' stroke='currentColor'></path>
<path d='M 400,240 L 456,240' fill='none' stroke='currentColor'></path>
<path d='M 120,304 L 664,304' fill='none' stroke='currentColor'></path>
<path d='M 176,320 L 352,320' fill='none' stroke='currentColor'></path>
<path d='M 120,336 L 152,336' fill='none' stroke='currentColor'></path>
<path d='M 368,336 L 664,336' fill='none' stroke='currentColor'></path>
<path d='M 176,352 L 352,352' fill='none' stroke='currentColor'></path>
<path d='M 120,368 L 664,368' fill='none' stroke='currentColor'></path>
<path d='M 176,384 L 264,384' fill='none' stroke='currentColor'></path>
<path d='M 120,400 L 152,400' fill='none' stroke='currentColor'></path>
<path d='M 280,400 L 664,400' fill='none' stroke='currentColor'></path>
<path d='M 176,416 L 264,416' fill='none' stroke='currentColor'></path>
<path d='M 160,64 L 160,80' fill='none' stroke='currentColor'></path>
<path d='M 160,128 L 160,144' fill='none' stroke='currentColor'></path>
<path d='M 328,64 L 328,80' fill='none' stroke='currentColor'></path>
<path d='M 336,128 L 336,144' fill='none' stroke='currentColor'></path>
<path d='M 384,32 L 384,128' fill='none' stroke='currentColor'></path>
<path d='M 384,176 L 384,224' fill='none' stroke='currentColor'></path>
<path d='M 472,176 L 472,224' fill='none' stroke='currentColor'></path>
<path d='M 528,32 L 528,48' fill='none' stroke='currentColor'></path>
<path d='M 528,48 L 528,80' fill='none' stroke='currentColor'></path>
<path d='M 528,80 L 528,112' fill='none' stroke='currentColor'></path>
<path d='M 528,160 L 528,176' fill='none' stroke='currentColor'></path>
<path d='M 624,144 L 624,176' fill='none' stroke='currentColor'></path>
<polygon points='160.000000,64.000000 148.000000,58.400002 148.000000,69.599998' fill='currentColor' transform='rotate(0.000000, 152.000000, 64.000000)'></polygon>
<polygon points='160.000000,128.000000 148.000000,122.400002 148.000000,133.600006' fill='currentColor' transform='rotate(0.000000, 152.000000, 128.000000)'></polygon>
<polygon points='160.000000,224.000000 148.000000,218.399994 148.000000,229.600006' fill='currentColor' transform='rotate(0.000000, 152.000000, 224.000000)'></polygon>
<polygon points='160.000000,336.000000 148.000000,330.399994 148.000000,341.600006' fill='currentColor' transform='rotate(0.000000, 152.000000, 336.000000)'></polygon>
<polygon points='160.000000,400.000000 148.000000,394.399994 148.000000,405.600006' fill='currentColor' transform='rotate(0.000000, 152.000000, 400.000000)'></polygon>
<polygon points='384.000000,32.000000 372.000000,26.400000 372.000000,37.599998' fill='currentColor' transform='rotate(0.000000, 376.000000, 32.000000)'></polygon>
<polygon points='384.000000,64.000000 372.000000,58.400002 372.000000,69.599998' fill='currentColor' transform='rotate(0.000000, 376.000000, 64.000000)'></polygon>
<polygon points='384.000000,128.000000 372.000000,122.400002 372.000000,133.600006' fill='currentColor' transform='rotate(0.000000, 376.000000, 128.000000)'></polygon>
<polygon points='384.000000,176.000000 372.000000,170.399994 372.000000,181.600006' fill='currentColor' transform='rotate(0.000000, 376.000000, 176.000000)'></polygon>
<polygon points='384.000000,224.000000 372.000000,218.399994 372.000000,229.600006' fill='currentColor' transform='rotate(0.000000, 376.000000, 224.000000)'></polygon>
<polygon points='528.000000,176.000000 516.000000,170.399994 516.000000,181.600006' fill='currentColor' transform='rotate(0.000000, 520.000000, 176.000000)'></polygon>
<polygon points='672.000000,48.000000 660.000000,42.400002 660.000000,53.599998' fill='currentColor' transform='rotate(0.000000, 664.000000, 48.000000)'></polygon>
<polygon points='672.000000,80.000000 660.000000,74.400002 660.000000,85.599998' fill='currentColor' transform='rotate(0.000000, 664.000000, 80.000000)'></polygon>
<polygon points='672.000000,144.000000 660.000000,138.399994 660.000000,149.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 144.000000)'></polygon>
<polygon points='672.000000,176.000000 660.000000,170.399994 660.000000,181.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 176.000000)'></polygon>
<polygon points='672.000000,224.000000 660.000000,218.399994 660.000000,229.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 224.000000)'></polygon>
<polygon points='672.000000,304.000000 660.000000,298.399994 660.000000,309.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 304.000000)'></polygon>
<polygon points='672.000000,336.000000 660.000000,330.399994 660.000000,341.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 336.000000)'></polygon>
<polygon points='672.000000,368.000000 660.000000,362.399994 660.000000,373.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 368.000000)'></polygon>
<polygon points='672.000000,400.000000 660.000000,394.399994 660.000000,405.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 400.000000)'></polygon>
<path d='M 400,16 A 16,16 0 0,0 384,32' fill='none' stroke='currentColor'></path>
<path d='M 512,16 A 16,16 0 0,1 528,32' fill='none' stroke='currentColor'></path>
<path d='M 176,48 A 16,16 0 0,0 160,64' fill='none' stroke='currentColor'></path>
<path d='M 312,48 A 16,16 0 0,1 328,64' fill='none' stroke='currentColor'></path>
<path d='M 160,80 A 16,16 0 0,0 176,96' fill='none' stroke='currentColor'></path>
<path d='M 328,80 A 16,16 0 0,1 312,96' fill='none' stroke='currentColor'></path>
<path d='M 176,112 A 16,16 0 0,0 160,128' fill='none' stroke='currentColor'></path>
<path d='M 320,112 A 16,16 0 0,1 336,128' fill='none' stroke='currentColor'></path>
<path d='M 528,112 A 16,16 0 0,0 544,128' fill='none' stroke='currentColor'></path>
<path d='M 608,128 A 16,16 0 0,1 624,144' fill='none' stroke='currentColor'></path>
<path d='M 384,128 A 16,16 0 0,0 400,144' fill='none' stroke='currentColor'></path>
<path d='M 512,144 A 16,16 0 0,1 528,160' fill='none' stroke='currentColor'></path>
<path d='M 160,144 A 16,16 0 0,0 176,160' fill='none' stroke='currentColor'></path>
<path d='M 336,144 A 16,16 0 0,1 320,160' fill='none' stroke='currentColor'></path>
<path d='M 400,160 A 16,16 0 0,0 384,176' fill='none' stroke='currentColor'></path>
<path d='M 456,160 A 16,16 0 0,1 472,176' fill='none' stroke='currentColor'></path>
<path d='M 528,176 A 16,16 0 0,0 544,192' fill='none' stroke='currentColor'></path>
<path d='M 624,176 A 16,16 0 0,1 608,192' fill='none' stroke='currentColor'></path>
<path d='M 176,208 A 16,16 0 0,0 160,224' fill='none' stroke='currentColor'></path>
<path d='M 280,208 A 16,16 0 0,1 296,224' fill='none' stroke='currentColor'></path>
<path d='M 160,224 A 16,16 0 0,0 176,240' fill='none' stroke='currentColor'></path>
<path d='M 296,224 A 16,16 0 0,1 280,240' fill='none' stroke='currentColor'></path>
<path d='M 384,224 A 16,16 0 0,0 400,240' fill='none' stroke='currentColor'></path>
<path d='M 472,224 A 16,16 0 0,1 456,240' fill='none' stroke='currentColor'></path>
<path d='M 176,320 A 16,16 0 0,0 160,336' fill='none' stroke='currentColor'></path>
<path d='M 352,320 A 16,16 0 0,1 368,336' fill='none' stroke='currentColor'></path>
<path d='M 160,336 A 16,16 0 0,0 176,352' fill='none' stroke='currentColor'></path>
<path d='M 368,336 A 16,16 0 0,1 352,352' fill='none' stroke='currentColor'></path>
<path d='M 176,384 A 16,16 0 0,0 160,400' fill='none' stroke='currentColor'></path>
<path d='M 264,384 A 16,16 0 0,1 280,400' fill='none' stroke='currentColor'></path>
<path d='M 160,400 A 16,16 0 0,0 176,416' fill='none' stroke='currentColor'></path>
<path d='M 280,400 A 16,16 0 0,1 264,416' fill='none' stroke='currentColor'></path>
<style>
text {
text-anchor: middle;
font-family: "Menlo","Lucida Console","monospace";
fill: currentColor;
font-size: 1em;
}
</style>
<text x='16' y='4'>I</text>
<text x='24' y='4'>f</text>
<text x='40' y='4'>c</text>
<text x='48' y='4'>o</text>
<text x='56' y='4'>n</text>
<text x='64' y='4'>v</text>
<text x='72' y='4'>e</text>
<text x='80' y='4'>r</text>
<text x='88' y='4'>s</text>
<text x='96' y='4'>i</text>
<text x='104' y='4'>o</text>
<text x='112' y='4'>n</text>
<text x='128' y='4'>i</text>
<text x='136' y='4'>s</text>
<text x='152' y='4'>r</text>
<text x='160' y='4'>e</text>
<text x='168' y='4'>q</text>
<text x='176' y='4'>u</text>
<text x='184' y='4'>i</text>
<text x='192' y='4'>r</text>
<text x='200' y='4'>e</text>
<text x='208' y='4'>d</text>
<text x='216' y='4'>:</text>
<text x='32' y='36'>P</text>
<text x='40' y='36'>D</text>
<text x='48' y='36'>F</text>
<text x='680' y='52'>P</text>
<text x='688' y='52'>o</text>
<text x='696' y='52'>s</text>
<text x='704' y='52'>t</text>
<text x='712' y='52'>s</text>
<text x='720' y='52'>c</text>
<text x='728' y='52'>r</text>
<text x='736' y='52'>i</text>
<text x='744' y='52'>p</text>
<text x='752' y='52'>t</text>
<text x='32' y='68'>P</text>
<text x='40' y='68'>l</text>
<text x='48' y='68'>a</text>
<text x='56' y='68'>i</text>
<text x='64' y='68'>n</text>
<text x='72' y='68'>t</text>
<text x='80' y='68'>e</text>
<text x='88' y='68'>x</text>
<text x='96' y='68'>t</text>
<text x='192' y='68'>Q</text>
<text x='200' y='68'>T</text>
<text x='208' y='68'>e</text>
<text x='216' y='68'>x</text>
<text x='224' y='68'>t</text>
<text x='232' y='68'>D</text>
<text x='240' y='68'>o</text>
<text x='248' y='68'>c</text>
<text x='256' y='68'>u</text>
<text x='264' y='68'>m</text>
<text x='272' y='68'>e</text>
<text x='280' y='68'>n</text>
<text x='288' y='68'>t</text>
<text x='408' y='68'>p</text>
<text x='416' y='68'>d</text>
<text x='424' y='68'>f</text>
<text x='432' y='68'>2</text>
<text x='440' y='68'>p</text>
<text x='448' y='68'>r</text>
<text x='456' y='68'>i</text>
<text x='464' y='68'>n</text>
<text x='472' y='68'>t</text>
<text x='480' y='68'>a</text>
<text x='488' y='68'>b</text>
<text x='496' y='68'>l</text>
<text x='504' y='68'>e</text>
<text x='192' y='84'>+</text>
<text x='208' y='84'>Q</text>
<text x='216' y='84'>P</text>
<text x='224' y='84'>d</text>
<text x='232' y='84'>f</text>
<text x='240' y='84'>W</text>
<text x='248' y='84'>r</text>
<text x='256' y='84'>i</text>
<text x='264' y='84'>t</text>
<text x='272' y='84'>e</text>
<text x='280' y='84'>r</text>
<text x='680' y='84'>P</text>
<text x='688' y='84'>D</text>
<text x='696' y='84'>F</text>
<text x='32' y='116'>D</text>
<text x='40' y='116'>O</text>
<text x='48' y='116'>C</text>
<text x='56' y='116'>/</text>
<text x='64' y='116'>P</text>
<text x='72' y='116'>P</text>
<text x='80' y='116'>T</text>
<text x='32' y='132'>O</text>
<text x='40' y='132'>D</text>
<text x='48' y='132'>T</text>
<text x='56' y='132'>/</text>
<text x='64' y='132'>O</text>
<text x='72' y='132'>D</text>
<text x='80' y='132'>P</text>
<text x='184' y='132'>C</text>
<text x='192' y='132'>a</text>
<text x='200' y='132'>l</text>
<text x='208' y='132'>l</text>
<text x='216' y='132'>i</text>
<text x='224' y='132'>g</text>
<text x='232' y='132'>r</text>
<text x='240' y='132'>a</text>
<text x='248' y='132'>c</text>
<text x='256' y='132'>o</text>
<text x='264' y='132'>n</text>
<text x='272' y='132'>v</text>
<text x='280' y='132'>e</text>
<text x='288' y='132'>r</text>
<text x='296' y='132'>t</text>
<text x='304' y='132'>e</text>
<text x='312' y='132'>r</text>
<text x='208' y='148'>(</text>
<text x='216' y='148'>o</text>
<text x='224' y='148'>p</text>
<text x='232' y='148'>t</text>
<text x='240' y='148'>i</text>
<text x='248' y='148'>o</text>
<text x='256' y='148'>n</text>
<text x='264' y='148'>a</text>
<text x='272' y='148'>l</text>
<text x='280' y='148'>)</text>
<text x='680' y='148'>P</text>
<text x='688' y='148'>W</text>
<text x='696' y='148'>G</text>
<text x='704' y='148'>-</text>
<text x='712' y='148'>R</text>
<text x='720' y='148'>a</text>
<text x='728' y='148'>s</text>
<text x='736' y='148'>t</text>
<text x='744' y='148'>e</text>
<text x='752' y='148'>r</text>
<text x='552' y='164'>p</text>
<text x='560' y='164'>p</text>
<text x='568' y='164'>m</text>
<text x='576' y='164'>2</text>
<text x='584' y='164'>p</text>
<text x='592' y='164'>w</text>
<text x='600' y='164'>g</text>
<text x='32' y='180'>I</text>
<text x='40' y='180'>m</text>
<text x='48' y='180'>a</text>
<text x='56' y='180'>g</text>
<text x='64' y='180'>e</text>
<text x='72' y='180'>s</text>
<text x='680' y='180'>U</text>
<text x='688' y='180'>R</text>
<text x='696' y='180'>F</text>
<text x='704' y='180'>-</text>
<text x='712' y='180'>R</text>
<text x='720' y='180'>a</text>
<text x='728' y='180'>s</text>
<text x='736' y='180'>t</text>
<text x='744' y='180'>e</text>
<text x='752' y='180'>r</text>
<text x='408' y='196'>Q</text>
<text x='416' y='196'>I</text>
<text x='424' y='196'>m</text>
<text x='432' y='196'>a</text>
<text x='440' y='196'>g</text>
<text x='448' y='196'>e</text>
<text x='32' y='228'>S</text>
<text x='40' y='228'>V</text>
<text x='48' y='228'>G</text>
<text x='184' y='228'>Q</text>
<text x='192' y='228'>S</text>
<text x='200' y='228'>v</text>
<text x='208' y='228'>g</text>
<text x='216' y='228'>R</text>
<text x='224' y='228'>e</text>
<text x='232' y='228'>n</text>
<text x='240' y='228'>d</text>
<text x='248' y='228'>e</text>
<text x='256' y='228'>r</text>
<text x='264' y='228'>e</text>
<text x='272' y='228'>r</text>
<text x='680' y='228'>P</text>
<text x='688' y='228'>N</text>
<text x='696' y='228'>G</text>
<text x='704' y='228'>,</text>
<text x='720' y='228'>J</text>
<text x='728' y='228'>P</text>
<text x='736' y='228'>E</text>
<text x='744' y='228'>G</text>
<text x='752' y='228'>,</text>
<text x='680' y='244'>R</text>
<text x='688' y='244'>e</text>
<text x='696' y='244'>v</text>
<text x='704' y='244'>e</text>
<text x='712' y='244'>r</text>
<text x='720' y='244'>s</text>
<text x='728' y='244'>e</text>
<text x='744' y='244'>B</text>
<text x='752' y='244'>M</text>
<text x='760' y='244'>P</text>
<text x='16' y='276'>I</text>
<text x='24' y='276'>f</text>
<text x='40' y='276'>t</text>
<text x='48' y='276'>a</text>
<text x='56' y='276'>r</text>
<text x='64' y='276'>g</text>
<text x='72' y='276'>e</text>
<text x='80' y='276'>t</text>
<text x='96' y='276'>f</text>
<text x='104' y='276'>o</text>
<text x='112' y='276'>r</text>
<text x='120' y='276'>m</text>
<text x='128' y='276'>a</text>
<text x='136' y='276'>t</text>
<text x='152' y='276'>i</text>
<text x='160' y='276'>s</text>
<text x='176' y='276'>t</text>
<text x='184' y='276'>h</text>
<text x='192' y='276'>e</text>
<text x='208' y='276'>s</text>
<text x='216' y='276'>a</text>
<text x='224' y='276'>m</text>
<text x='232' y='276'>e</text>
<text x='240' y='276'>:</text>
<text x='32' y='308'>P</text>
<text x='40' y='308'>o</text>
<text x='48' y='308'>s</text>
<text x='56' y='308'>t</text>
<text x='64' y='308'>s</text>
<text x='72' y='308'>c</text>
<text x='80' y='308'>r</text>
<text x='88' y='308'>i</text>
<text x='96' y='308'>p</text>
<text x='104' y='308'>t</text>
<text x='680' y='308'>P</text>
<text x='688' y='308'>o</text>
<text x='696' y='308'>s</text>
<text x='704' y='308'>t</text>
<text x='712' y='308'>s</text>
<text x='720' y='308'>c</text>
<text x='728' y='308'>r</text>
<text x='736' y='308'>i</text>
<text x='744' y='308'>p</text>
<text x='752' y='308'>t</text>
<text x='32' y='340'>P</text>
<text x='40' y='340'>l</text>
<text x='48' y='340'>a</text>
<text x='56' y='340'>i</text>
<text x='64' y='340'>n</text>
<text x='72' y='340'>t</text>
<text x='80' y='340'>e</text>
<text x='88' y='340'>x</text>
<text x='96' y='340'>t</text>
<text x='184' y='340'>e</text>
<text x='192' y='340'>n</text>
<text x='200' y='340'>s</text>
<text x='208' y='340'>u</text>
<text x='216' y='340'>r</text>
<text x='224' y='340'>e</text>
<text x='240' y='340'>C</text>
<text x='248' y='340'>R</text>
<text x='256' y='340'>+</text>
<text x='264' y='340'>L</text>
<text x='272' y='340'>F</text>
<text x='288' y='340'>n</text>
<text x='296' y='340'>e</text>
<text x='304' y='340'>w</text>
<text x='312' y='340'>l</text>
<text x='320' y='340'>i</text>
<text x='328' y='340'>n</text>
<text x='336' y='340'>e</text>
<text x='344' y='340'>s</text>
<text x='680' y='340'>P</text>
<text x='688' y='340'>l</text>
<text x='696' y='340'>a</text>
<text x='704' y='340'>i</text>
<text x='712' y='340'>n</text>
<text x='720' y='340'>t</text>
<text x='728' y='340'>e</text>
<text x='736' y='340'>x</text>
<text x='744' y='340'>t</text>
<text x='32' y='372'>P</text>
<text x='40' y='372'>N</text>
<text x='48' y='372'>G</text>
<text x='680' y='372'>P</text>
<text x='688' y='372'>N</text>
<text x='696' y='372'>G</text>
<text x='32' y='404'>J</text>
<text x='40' y='404'>P</text>
<text x='48' y='404'>E</text>
<text x='56' y='404'>G</text>
<text x='184' y='404'>b</text>
<text x='192' y='404'>a</text>
<text x='200' y='404'>s</text>
<text x='208' y='404'>e</text>
<text x='216' y='404'>l</text>
<text x='224' y='404'>i</text>
<text x='232' y='404'>n</text>
<text x='240' y='404'>i</text>
<text x='248' y='404'>f</text>
<text x='256' y='404'>y</text>
<text x='680' y='404'>J</text>
<text x='688' y='404'>P</text>
<text x='696' y='404'>E</text>
<text x='704' y='404'>G</text>
<text x='680' y='420'>(</text>
<text x='688' y='420'>B</text>
<text x='696' y='420'>a</text>
<text x='704' y='420'>s</text>
<text x='712' y='420'>e</text>
<text x='720' y='420'>l</text>
<text x='728' y='420'>i</text>
<text x='736' y='420'>n</text>
<text x='744' y='420'>e</text>
<text x='760' y='420'>p</text>
<text x='768' y='420'>r</text>
<text x='776' y='420'>o</text>
<text x='784' y='420'>f</text>
<text x='792' y='420'>i</text>
<text x='800' y='420'>l</text>
<text x='808' y='420'>e</text>
<text x='816' y='420'>)</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 19 KiB