Skip to content

martinthomson/aasvg

Repository files navigation

aasvg

Convert ASCII art diagrams into SVG.

This is inspired by goat but rather than a reimplementation, this code uses the original markdeep code.

Usage

Install with npm install -g aasvg.

Feed aasvg an image and it will write an SVG. For example:

$ aasvg < example.txt > example.svg

example

Character Placement

By default, this does not place text characters on a grid one-by-one as the original markdeep code did.

The --spaces command-line argument controls how text is combined. Use either --spaces=0 or --stretch to provide precise text placement.

--spaces=0 ensures that every character is placed separately; which is precise and avoids text distortion, but makes for a larger SVG that is harder to search and less accessible to screen readers.

--stretch can be used with --spaces set to any value. --stretch stretches text to fit, which is less widely implemented in viewers (generally you don't have to worry about this unless you are using an insane profile) and might distort the text a tiny bit because the metrics for the font used (the generic "monospace") cannot be exactly controlled.

Dark Backgrounds

This tool draws black lines and text on a transparent background. In certain settings (such as GitHub when a dark mode is enabled), this produces unfortunate results. If you inline the resulting SVG, you can perform tricks with CSS, but if you are using <img>, that isn't possible. Use the --backdrop switch to generate a mostly-white backdrop for the image.