# Miscellaneous
bullet,•,*,A bullet point.

# Arrows
leftArrow,←,<,"A left-pointing arrow.

Note that the Unicode arrow glyphs may overlap with adjacent characters in some
terminal fonts, and should generally be surrounding by spaces."
rightArrow,→,>,"A right-pointing arrow.

Note that the Unicode arrow glyphs may overlap with adjacent characters in some
terminal fonts, and should generally be surrounding by spaces."
upArrow,↑,^,An upwards-pointing arrow.
downArrow,↓,v,A downwards-pointing arrow.
longLeftArrow,◀━,<=,A two-character left-pointing arrow.
longRightArrow,━▶,=>,A two-character right-pointing arrow.

# Box drawing characters

## Normal
horizontalLine,─,-,A horizontal line that can be used to draw a box.
verticalLine,│,|,A vertical line that can be used to draw a box.
topLeftCorner,┌,",",The upper left-hand corner of a box.
topRightCorner,┐,",",The upper right-hand corner of a box.
bottomLeftCorner,└,',The lower left-hand corner of a box.
bottomRightCorner,┘,',The lower right-hand corner of a box.
cross,┼,+,An intersection of vertical and horizontal box lines.
teeUp,┴,+,A horizontal box line with a vertical line going up from the middle.
teeDown,┬,+,A horizontal box line with a vertical line going down from the middle.
teeLeft,┤,+,A vertical box line with a horizontal line going left from the middle.
teeRight,├,+,A vertical box line with a horizontal line going right from the middle.
upEnd,╵,',The top half of a vertical box line.
downEnd,╷,",",The bottom half of a vertical box line.
leftEnd,╴,-,The left half of a horizontal box line.
rightEnd,╶,-,The right half of a horizontal box line.

## Bold
horizontalLineBold,━,=,A bold horizontal line that can be used to draw a box.
verticalLineBold,┃,|,A bold vertical line that can be used to draw a box.
topLeftCornerBold,┏,",",The bold upper left-hand corner of a box.
topRightCornerBold,┓,",",The bold upper right-hand corner of a box.
bottomLeftCornerBold,┗,',The bold lower left-hand corner of a box.
bottomRightCornerBold,┛,',The bold lower right-hand corner of a box.
crossBold,╋,+,An intersection of bold vertical and horizontal box lines.
teeUpBold,┻,+,A bold horizontal box line with a vertical line going up from the middle.
teeDownBold,┳,+,A bold horizontal box line with a vertical line going down from the middle.
teeLeftBold,┫,+,A bold vertical box line with a horizontal line going left from the middle.
teeRightBold,┣,+,A bold vertical box line with a horizontal line going right from the middle.
upEndBold,╹,',The top half of a bold vertical box line.
downEndBold,╻,",",The bottom half of a bold vertical box line.
leftEndBold,╸,-,The left half of a bold horizontal box line.
rightEndBold,╺,-,The right half of a bold horizontal box line.

## Double
horizontalLineDouble,═,=,A double horizontal line that can be used to draw a box.
verticalLineDouble,║,|,A double vertical line that can be used to draw a box.
topLeftCornerDouble,╔,",",The double upper left-hand corner of a box.
topRightCornerDouble,╗,",",The double upper right-hand corner of a box.
bottomLeftCornerDouble,╚,"""",The double lower left-hand corner of a box.
bottomRightCornerDouble,╝,"""",The double lower right-hand corner of a box.
crossDouble,╬,+,An intersection of double vertical and horizontal box lines.
teeUpDouble,╩,+,A double horizontal box line with a vertical line going up from the middle.
teeDownDouble,╦,+,A double horizontal box line with a vertical line going down from the middle.
teeLeftDouble,╣,+,A double vertical box line with a horizontal line going left from the middle.
teeRightDouble,╠,+,A double vertical box line with a horizontal line going right from the middle.

## Dashed

### Double
horizontalLineDoubleDash,╌,-,A dashed horizontal line that can be used to draw a box.
horizontalLineDoubleDashBold,╍,-,A bold dashed horizontal line that can be used to draw a box.
verticalLineDoubleDash,╎,|,A dashed vertical line that can be used to draw a box.
verticalLineDoubleDashBold,╏,|,A bold dashed vertical line that can be used to draw a box.

### Triple
horizontalLineTripleDash,┄,-,A dashed horizontal line that can be used to draw a box.
horizontalLineTripleDashBold,┅,-,A bold dashed horizontal line that can be used to draw a box.
verticalLineTripleDash,┆,|,A dashed vertical line that can be used to draw a box.
verticalLineTripleDashBold,┇,|,A bold dashed vertical line that can be used to draw a box.

### Quadruple
horizontalLineQuadrupleDash,┈,-,A dashed horizontal line that can be used to draw a box.
horizontalLineQuadrupleDashBold,┉,-,A bold dashed horizontal line that can be used to draw a box.
verticalLineQuadrupleDash,┊,|,A dashed vertical line that can be used to draw a box.
verticalLineQuadrupleDashBold,┋,|,A bold dashed vertical line that can be used to draw a box.
