Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/sepandhaghighi/art

🎨 ASCII art library for Python
https://github.com/sepandhaghighi/art

art ascii ascii-art ascii-art-library ascii-text easy easy-to-use figlet fonts fun library pip pypi-packages python python-lib python-library python3 status text twitter

Last synced: about 2 months ago
JSON representation

🎨 ASCII art library for Python

Lists

README

        


Logo





Codecov

PyPI
built with Python3
Font List
Art List
Decor List
Telegram Bot
Anaconda
Discord Channel


----------

## Table of contents
* [Overview](https://github.com/sepandhaghighi/art#overview)
* [Installation](https://github.com/sepandhaghighi/art/blob/master/INSTALL.md)
* [Usage](https://github.com/sepandhaghighi/art#usage)
* [1-Line Art](https://github.com/sepandhaghighi/art#1-line-art)
* [ASCII Text](https://github.com/sepandhaghighi/art#ascii-text)
* [Decoration](https://github.com/sepandhaghighi/art#decoration)
* [Font Modes](https://github.com/sepandhaghighi/art#font-modes)
* [Typo-Tolerance](https://github.com/sepandhaghighi/art#typo-tolerance)
* [Set Defaults](https://github.com/sepandhaghighi/art#set-defaults)
* [Testing](https://github.com/sepandhaghighi/art#testing)
* [CLI](https://github.com/sepandhaghighi/art#cli)
* [Telegram Bot](https://github.com/sepandhaghighi/art#telegram-bot)
* [Try ART in Your Browser](https://github.com/sepandhaghighi/art#try-art-in-your-browser)
* [Screen Record](https://github.com/sepandhaghighi/art#screen-record)
* [Issues & Bug Reports](https://github.com/sepandhaghighi/art#issues--bug-reports)
* [Contribution](https://github.com/sepandhaghighi/art/blob/master/.github/CONTRIBUTING.md)
* [Reference](https://github.com/sepandhaghighi/art#reference)
* [Authors](https://github.com/sepandhaghighi/art/blob/master/AUTHORS.md)
* [License](https://github.com/sepandhaghighi/art/blob/master/LICENSE)
* [Show Your Support](https://github.com/sepandhaghighi/art#show-your-support)
* [Changelog](https://github.com/sepandhaghighi/art/blob/master/CHANGELOG.md)
* [Code of Conduct](https://github.com/sepandhaghighi/art/blob/master/.github/CODE_OF_CONDUCT.md)

## Overview
ASCII art is also known as "computer text art". It involves the smart placement of typed special characters or
letters to make a visual shape that is spread over multiple lines of text.

ART is a Python lib for text converting to ASCII art fancy. ;-)


Open Hub



PyPI Counter



Github Stars



Font Counter
652


1-Line-Art Counter
710


Decor Counter
218


Branch
master
dev


CI



Code Quality

codebeat badge
CodeFactor

## Usage


Quick Start

### 1-Line art

⚠️ Some environments don't support all 1-Line arts

⚠️ **ART 4.6** is the last version to support **Bipartite art**

#### 1. art

This function return 1-line art as `str` in normal mode and raise `artError` in exception.
```pycon
>>> from art import *
>>> art_1=art("coffee") # return art as str in normal mode
>>> print(art_1)
c[_]
>>> art_2=art("woman",number=2) # return multiple art as str
>>> print(art_2)
▓⚗_⚗▓ ▓⚗_⚗▓
>>> art("coffee", number=3, space=5)
'c[_] c[_] c[_]'
>>> art("random") # random 1-line art mode
'(っ◕‿◕)っ '
>>> art("rand") # random 1-line art mode
't(-_-t) '
>>> art(22,number=1) # raise artError
Traceback (most recent call last):
...
art.art.artError: The 'artname' type must be str.

```
#### 2. aprint

This function print 1-line art in normal mode (return None) and raise `artError` in exception.
```pycon
>>> aprint("butterfly") # print art
Ƹ̵̡Ӝ̵̨̄Ʒ
>>> aprint("happy") # print art
ۜ\(סּںסּَ` )/ۜ
>>> aprint("coffee", number=3, space=5)
c[_] c[_] c[_]
>>> aprint("random") # random 1-line art mode
'(っ◕‿◕)っ '
>>> aprint("rand") # random 1-line art mode
't(-_-t) '
>>> aprint("woman",number="22") # raise artError
Traceback (most recent call last):
...
art.art.artError: The 'number' type must be int.
```

#### 3. randart

`randart` function is added in `Version 2.2` as `art("random")` shortcut.
```pycon
>>> randart()
'ዞᏜ℘℘Ꮍ ℬℹℛʈዞᗬᏜᎽ '
>>> randart()
'✌(◕‿-)✌ '
```

* Note1 : Use `ART_NAMES` to access all arts name list (new in `Version 4.2`)
* Note2 : Use `NON_ASCII_ARTS` to access all Non-ASCII arts name list (new in `Version 4.6`)
* Note3 : Use `ASCII_ARTS` to access all ASCII arts name list (new in `Version 5.7`)

### ASCII text

⚠️ Some fonts don't support all characters

⚠️ From `Version 3.3` Non-ASCII fonts added (These fonts are not compatible with some environments)

⚠️ From `Version 5.3` `\n` is used as the default line separator instead of `\r\n` (Use `sep` parameter if needed)

#### 1. text2art

This function return ASCII text as `str` in normal mode and raise `artError` in exception.
```pycon
>>> Art=text2art("art") # Return ASCII text (default font) and default chr_ignore=True
>>> print(Art)
_
__ _ _ __ | |_
/ _` || '__|| __|
| (_| || | | |_
\__,_||_| \__|


>>> Art=text2art("art",font='block',chr_ignore=True) # Return ASCII text with block font
>>> print(Art)

.----------------. .----------------. .----------------.
| .--------------. || .--------------. || .--------------. |
| | __ | || | _______ | || | _________ | |
| | / \ | || | |_ __ \ | || | | _ _ | | |
| | / /\ \ | || | | |__) | | || | |_/ | | \_| | |
| | / ____ \ | || | | __ / | || | | | | |
| | _/ / \ \_ | || | _| | \ \_ | || | _| |_ | |
| ||____| |____|| || | |____| |___| | || | |_____| | |
| | | || | | || | | |
| '--------------' || '--------------' || '--------------' |
'----------------' '----------------' '----------------'

>>> Art=text2art("test","random") # random font mode
>>> print(Art)
| |
~|~/~/(~~|~
| \/__) |

>>> Art=text2art("test","rand") # random font mode
>>> print(Art)
___ ____ ____ ___
| |___ [__ |
| |___ ___] |

>>> print(text2art("test", space=10))
_ _
| |_ ___ ___ | |_
| __| / _ \ / __| | __|
| |_ | __/ \__ \ | |_
\__| \___| |___/ \__|

>>> print(text2art('''Lorem
ipsum
dolor''', font="small")) # Multi-line print
_
| | ___ _ _ ___ _ __
| |__ / _ \| '_|/ -_)| ' \
|____|\___/|_| \___||_|_|_|

_
(_) _ __ ___ _ _ _ __
| || '_ \(_-<| || || ' \
|_|| .__//__/ \_,_||_|_|_|
|_|
_ _
__| | ___ | | ___ _ _
/ _` |/ _ \| |/ _ \| '_|
\__,_|\___/|_|\___/|_|

>>> print(text2art("test","white_bubble")) # Non-ASCII font example
ⓣⓔⓢⓣ
>>> text2art("art",font="fancy5",decoration="barcode1") # decoration parameter is added in Version 4.6
'▌│█║▌║▌║ ᏗᏒᏖ ║▌║▌║█│▌'
>>> text2art("seسسس",font=DEFAULT_FONT,chr_ignore=False) # raise artError in exception
Traceback (most recent call last):
...
art.art.artError: س is invalid.

```
#### 2. tprint

This function print ASCII text in normal mode (return None) and raise `artError` in exception.
```pycon
>>> tprint("art") # print ASCII text (default font)
_
__ _ _ __ | |_
/ _` || '__|| __|
| (_| || | | |_
\__,_||_| \__|

>>> tprint("art",font="block",chr_ignore=True) # print ASCII text (block font)

.----------------. .----------------. .----------------.
| .--------------. || .--------------. || .--------------. |
| | __ | || | _______ | || | _________ | |
| | / \ | || | |_ __ \ | || | | _ _ | | |
| | / /\ \ | || | | |__) | | || | |_/ | | \_| | |
| | / ____ \ | || | | __ / | || | | | | |
| | _/ / \ \_ | || | _| | \ \_ | || | _| |_ | |
| ||____| |____|| || | |____| |___| | || | |_____| | |
| | | || | | || | | |
| '--------------' || '--------------' || '--------------' |
'----------------' '----------------' '----------------'

>>> tprint('testسس') # chr_ignore flag ==True (Default)
_ _
| |_ ___ ___ | |_
| __| / _ \/ __|| __|
| |_ | __/\__ \| |_
\__| \___||___/ \__|

>>> tprint("test","random") # random font mode
| |
~|~/~/(~~|~
| \/__) |

>>> tprint("test","rand") # random font mode
___ ____ ____ ___
| |___ [__ |
| |___ ___] |

>>> tprint("test", space=10)
_ _
| |_ ___ ___ | |_
| __| / _ \ / __| | __|
| |_ | __/ \__ \ | |_
\__| \___| |___/ \__|

>>> tprint('testسس',chr_ignore=False) # raise artError in exception
Traceback (most recent call last):
...
art.art.artError: س is invalid.
>>> tprint('''Lorem
ipsum
dolor''', font="cybermedium") # Multi-line print
_ ____ ____ ____ _ _
| | | |__/ |___ |\/|
|___ |__| | \ |___ | |

_ ___ ____ _ _ _ _
| |__] [__ | | |\/|
| | ___] |__| | |

___ ____ _ ____ ____
| \ | | | | | |__/
|__/ |__| |___ |__| | \

>>> tprint("art",font="fancy5",decoration="barcode1") # decoration parameter is added in Version 4.6
▌│█║▌║▌║ ᏗᏒᏖ ║▌║▌║█│▌
>>> tprint("art",font="fancy5",decoration="random") # decoration random mode is added in Version 5.0
•]•·✦º✦·»ᏗᏒᏖ«·✦º✦·•[•
```
#### 3. tsave

This function return `dict` in normal and exception mode.
```pycon
>>> Response=tsave("art",filename="test.txt") # save ASCII text in test.txt file with save message (print_status==True), return dict
Saved!
Filename: test.txt
>>> Response["Message"]
'OK'
>>> Response=tsave("art",filename="test.txt",print_status=False) # save ASCII text in test.txt file without save message (print_status==False)
>>> Response["Message"]
'OK'
>>> Response["Status"]
True
>>> tsave(22,font=DEFAULT_FONT,filename="art",chr_ignore=True,print_status=True)
{'Status': False, 'Message': "'int' object has no attribute 'split'"}
>>> Response=tsave("art",filename="test.txt",overwrite=True) # overwrite parameter is added in Version 4.0
Saved!
Filename: test.txt
>>> Response=tsave("art",filename="test.txt",decoration="barcode1") # decoration parameter is added in Version 4.6
Saved!
Filename: test.txt
>>> Response=tsave("art",filename="test.txt",sep="\r\n") # sep parameter is added in Version 5.3
Saved!
Filename: test.txt
>>> Response=tsave("art",filename="test.txt",space=5) # space parameter is added in Version 6.0
Saved!
Filename: test.txt
```

* Note1 : Use `FONT_NAMES` to access all fonts name list (new in `Version 4.2`)
* Note2 : Use `NON_ASCII_FONTS` to access all Non-ASCII fonts name list (new in `Version 4.4`)
* Note3 : Use `ASCII_FONTS` to access all ASCII fonts name list (new in `Version 5.7`)

### Decoration

⚠️ Some environments don't support all decorations

#### 1. decor

This function return decoration as `str` in normal mode and raise `artError` in exception.
```pycon
>>> decor("barcode1")
'▌│█║▌║▌║ '
>>> decor("barcode1",reverse=True)
' ║▌║▌║█│▌'
>>> decor("barcode1") + text2art(" art ",font="fancy42") + decor("barcode1",reverse=True)
'▌│█║▌║▌║ ąяţ ║▌║▌║█│▌'
>>> decor("barcode1",both=True) # both parameter is added in Version 5.0
['▌│█║▌║▌║ ', ' ║▌║▌║█│▌']
>>> decor("random",both=True) # random mode is added in Version 5.0
['「(◔ω◔「)三', '三三三ʅ(;◔౪◔)ʃ']
>>> decor("rand",both=True) # random mode is added in Version 5.0
['‹–…·´`·…–›', '‹–…·´`·…–›']
>>> decor(None)
Traceback (most recent call last):
...
art.art.artError: The 'decoration' type must be str.
```

* Note : Use `DECORATION_NAMES` to access all decorations name list (new in `Version 4.6`)

### Font modes

These modes are available for `text2art`, `tprint` & `tsave`.

#### 1. Font name

⚠️ Some fonts don't support all characters

```pycon

>>> tprint("art",font="block",chr_ignore=True)

.----------------. .----------------. .----------------.
| .--------------. || .--------------. || .--------------. |
| | __ | || | _______ | || | _________ | |
| | / \ | || | |_ __ \ | || | | _ _ | | |
| | / /\ \ | || | | |__) | | || | |_/ | | \_| | |
| | / ____ \ | || | | __ / | || | | | | |
| | _/ / \ \_ | || | _| | \ \_ | || | _| |_ | |
| ||____| |____|| || | |____| |___| | || | |_____| | |
| | | || | | || | | |
| '--------------' || '--------------' || '--------------' |
'----------------' '----------------' '----------------'

>>> tprint("art","white_bubble")
ⓐⓡⓣ

```

#### 2. Random

Randomly select from all fonts.

Keywords : `random`, `rand` & `rnd`

```pycon
>>> tprint("test",font="random")
| |
~|~/~/(~~|~
| \/__) |

```

#### 3. Random small

Randomly select from small fonts.

Keywords : `rnd-small`, `random-small` & `rand-small`

* Note : New in `Version 2.8`

```pycon
>>> tprint("test",font="rnd-small")

_/ _ _ _/
/ (- _) /

```

#### 4. Random medium

Randomly select from medium fonts.

Keywords : `rnd-medium`, `random-medium` & `rand-medium`

* Note : New in `Version 2.8`

```pycon
>>> tprint("test",font="rnd-medium")

, ,
|| ||
=||= _-_ _-_, =||=
|| || \\ ||_. ||
|| ||/ ~ || ||
\\, \\,/ ,-_- \\,


```

#### 5. Random large

Randomly select from large fonts.

Keywords : `rnd-large`, `random-large` & `rand-large`

* Note : New in `Version 2.8`

```pycon
>>> tprint("test",font="rnd-large")

8888888 8888888888 8 8888888888 d888888o. 8888888 8888888888
8 8888 8 8888 .`8888:' `88. 8 8888
8 8888 8 8888 8.`8888. Y8 8 8888
8 8888 8 8888 `8.`8888. 8 8888
8 8888 8 888888888888 `8.`8888. 8 8888
8 8888 8 8888 `8.`8888. 8 8888
8 8888 8 8888 `8.`8888. 8 8888
8 8888 8 8888 8b `8.`8888. 8 8888
8 8888 8 8888 `8b. ;8.`8888 8 8888
8 8888 8 888888888888 `Y8888P ,88P' 8 8888

```

#### 6. Random xlarge

Randomly select from xlarge fonts.

Keywords : `rnd-xlarge`, `random-xlarge` & `rand-xlarge`

* Note : New in `Version 2.8`

```pycon
>>> tprint("test","rnd-xlarge")
_____ _____ _____ _____
/\ \ /\ \ /\ \ /\ \
/::\ \ /::\ \ /::\ \ /::\ \
\:::\ \ /::::\ \ /::::\ \ \:::\ \
\:::\ \ /::::::\ \ /::::::\ \ \:::\ \
\:::\ \ /:::/\:::\ \ /:::/\:::\ \ \:::\ \
\:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ \:::\ \
/::::\ \ /::::\ \:::\ \ \:::\ \:::\ \ /::::\ \
/::::::\ \ /::::::\ \:::\ \ ___\:::\ \:::\ \ /::::::\ \
/:::/\:::\ \ /:::/\:::\ \:::\ \ /\ \:::\ \:::\ \ /:::/\:::\ \
/:::/ \:::\____\/:::/__\:::\ \:::\____\/::\ \:::\ \:::\____\ /:::/ \:::\____\
/:::/ \::/ /\:::\ \:::\ \::/ /\:::\ \:::\ \::/ / /:::/ \::/ /
/:::/ / \/____/ \:::\ \:::\ \/____/ \:::\ \:::\ \/____/ /:::/ / \/____/
/:::/ / \:::\ \:::\ \ \:::\ \:::\ \ /:::/ /
/:::/ / \:::\ \:::\____\ \:::\ \:::\____\ /:::/ /
\::/ / \:::\ \::/ / \:::\ /:::/ / \::/ /
\/____/ \:::\ \/____/ \:::\/:::/ / \/____/
\:::\ \ \::::::/ /
\:::\____\ \::::/ /
\::/ / \::/ /
\/____/ \/____/

```

#### 7. Wizard

This mode consider length of input text to select font

☑️ Support of 95 ASCII characters guaranteed

Keywords : `wizard`, `wiz` & `magic`

* Note : New in `Version 2.9`

```pycon
>>> tprint("1","wizard")
88
,d88
888888
88
88
88
88
88
88
88

>>> tprint("1"*5,"wizard")
d88 d88 d88 d88 d88
88 88 88 88 88
88 88 88 88 88
88 88 88 88 88
88 88 88 88 88
d88P d88P d88P d88P d88P

>>> tprint("1"*15,"wizard")


# # # # # # # # # # # # # # #
## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
# # # # # # # # # # # # # # #
# # # # # # # # # # # # # # #
# # # # # # # # # # # # # # #
## ## ## ## ## ## ## ## ## ## ## ## ## ## ##


```

#### 8. Random Non-ASCII

Randomly select from Non-ASCII fonts.

Keywords : `random-na`, `rand-na` & `rnd-na`

* Note : New in `Version 3.4`

```pycon
>>> tprint("test","random-na")
₮Ɇ₴₮
>>> tprint("test","random-na")
ʇsǝʇ

```

#### 9. Mix Non-ASCII

Randomly mix Non-ASCII fonts.

Keywords : `mix`

* Note : New in `Version 3.7`

```pycon
>>> tprint("test","mix")
†Ɛѕ†
>>> tprint("test","mix")
tᏋѕt
>>> tprint("test","mix")
꓄єร꓄
```

⚠️ Non-ASCII fonts are only available in `Font name`, `Random Non-ASCII` and `Mix` modes

### Typo-tolerance
Levenshtein distance used in this project. (`Version` >0.9)

```pycon
>>> aprint("happi") # correct --> aprint("happy"), error < |artname|/2
ۜ\(סּںסּَ` )/ۜ
>>> Art=art("birds2222222",number=1) # correct --> Art=art("birds",number=1), error >= |artname|/2
Traceback (most recent call last):
...
art.art.artError: Invalid art name.
>>> aprint("happi231") # correct --> aprint("happy"), error < |artname|/2
⎦˚◡˚⎣
>>> aprint("happi2312344") # correct --> aprint("happy"), error >= |artname|/2
Traceback (most recent call last):
...
art.art.artError: Invalid art name.
>>> Art=text2art("test",font="black") # correct --> Art=text2art("test",font="block")
>>> print(Art)

.----------------. .----------------. .----------------. .----------------.
| .--------------. || .--------------. || .--------------. || .--------------. |
| | _________ | || | _________ | || | _______ | || | _________ | |
| | | _ _ | | || | |_ ___ | | || | / ___ | | || | | _ _ | | |
| | |_/ | | \_| | || | | |_ \_| | || | | (__ \_| | || | |_/ | | \_| | |
| | | | | || | | _| _ | || | '.___`-. | || | | | | |
| | _| |_ | || | _| |___/ | | || | |`\____) | | || | _| |_ | |
| | |_____| | || | |_________| | || | |_______.' | || | |_____| | |
| | | || | | || | | || | | |
| '--------------' || '--------------' || '--------------' || '--------------' |
'----------------' '----------------' '----------------' '----------------'

>>> tprint("test",font="cybermedum") # correct --> tprint("test",font="cybermedium")
___ ____ ____ ___
| |___ [__ |
| |___ ___] |


```

### Set defaults
`set_default` function is added in `Version 2.2` in order to change default values.

```pycon
>>> help(set_default)
Help on function set_default in module art.art:

set_default(font='standard', chr_ignore=True, filename='art', print_status=True, overwrite=False, decoration=None, sep='\n')
Change text2art, tprint and tsave default values.

:param font: input font
:type font:str
:param chr_ignore: ignore not supported character
:type chr_ignore:bool
:param filename: output file name (only tsave)
:type filename:str
:param print_status : save message print flag (only tsave)
:type print_status:bool
:param overwrite : overwrite the saved file if true (only tsave)
:type overwrite:bool
:param decoration: input decoration
:type decoration:str
:param sep: line separator char
:type sep: str
:return: None

>>> tprint("test")
_ _
| |_ ___ ___ | |_
| __| / _ \/ __|| __|
| |_ | __/\__ \| |_
\__| \___||___/ \__|

>>> set_default(font="italic")
>>> tprint("test")

_/ _ _ _/
/ (- _) /

```
* Note : Functions error response updated in `Version 0.8`



Function
Normal Output
Error


decor
str
raise artError



art
str
raise artError



aprint
None
raise artError


tprint
None
raise artError


tsave
{"Status":bool,"Message":str}
{"Status":bool,"Message":str}


text2art
str
raise artError


set_default
None
raise artError

### Testing
- Only ASCII fonts and arts :
```
art test
```

- All fonts, arts and decorations :
```
art test2
```

### CLI
⚠️ [Backward Compatibility] **ART 5.9** is the last version to support this **CLI structure** officially

⚠️ You can use `art` or `python -m art` to run this mode

- List of arts : `art list` or `art arts`
- List of fonts : `art fonts`
- Text : `art text [yourtext] [fontname(optional)]`
- Art : `art shape [artname]` or `art art [artname]`
- Save : `art save [yourtext] [fontname(optional)]`
- All : `art all [yourtext]`

### Telegram bot

Just send your text to one of these bots. 👇👇👇👇

### Try ART in your browser

1. ART can be used online in interactive Jupyter Notebooks via the Binder service! Try it out now! :

[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/sepandhaghighi/art/master)

* Open `FontList.ipynb`, `ArtList.ipynb` and `DecorList.ipynb`
* Edit and execute each part of the notes, step by step from the top panel by run button

2. ART also can be used online in [ascii-generator.site](https://ascii-generator.site/), a Django website by [hermanTenuki](https://github.com/hermanTenuki)

### Screen record



Screen Record


* View full font list ([Link1](https://github.com/sepandhaghighi/art/blob/master/FontList.ipynb "Full Font List"),[Link2](https://www.ascii-art.site/FontList.html "Full Font List"))
* View full art list ([Link1](https://github.com/sepandhaghighi/art/blob/master/ArtList.ipynb "Full Art List"),[Link2](https://www.ascii-art.site/ArtList.html "Full Art List"))
* View full decoration list ([Link1](https://github.com/sepandhaghighi/art/blob/master/DecorList.ipynb "Full Decoration List"),[Link2](https://www.ascii-art.site/DecorList.html "Full Decoration List"))

## Issues & bug reports

1. Fill an issue and describe it. We'll check it ASAP!
- Please complete the issue template
2. Discord : [https://discord.com/invite/FAAyq3QJqP](https://discord.com/invite/FAAyq3QJqP)
3. Website : [https://www.ascii-art.site](https://www.ascii-art.site)
4. Email : [[email protected]](mailto:[email protected] "[email protected]")

## Reference

1. [FIGlet](http://www.figlet.org/)
2. [1 Line Art](http://1lineart.kulaone.com/#/)
3. [Text to ASCII](http://patorjk.com/software/taag/#p=display&f=Blocks&t=ART)
4. [ASCII Generator](http://www.network-science.de/ascii/)
5. [Asky](https://asky.io/)
6. [Flipyourtext](https://www.flipyourtext.com/)
7. [YayText](https://yaytext.com)
8. [Coolletters](http://www.coolletters.net/)
9. [Instagram Fonts](https://igfonts.io/)
10. [Cool Symbol](https://coolsymbol.com/)
11. [ASCII Moji](http://asciimoji.com/)
12. [SMILEY COOL](https://smiley.cool/)
13. [SPREZZ](https://www.sprezzkeyboard.com/)
14. [Textart4u](http://textart4u.blogspot.com/2013/03/one-line-ascii-text-art.html?m=1)
15. [Chat4o](https://en.chat4o.com/ascii/)
16. [Findwebapp](http://www.findwebapp.com/ascii-art-one-liner/)
17. [Hubpages](https://hubpages.com/technology/one-line-ascii-art-for-twitter)
18. [ASCII-ART](http://www.ascii-art.de/ascii/mno/one_line.txt)
19. [Messletters](https://www.messletters.com/en/)
20. [Webestools](http://www.webestools.com/)
21. [ASCII-emoji](https://github.com/dysfunc/ascii-emoji)
22. [Instagram Fonts2](https://www.instagramfonts.com/)
23. [Emotiworld](http://en.emotiworld.com/)
24. [Fancy Text Pro](https://www.fancytextpro.com/)
25. [Playing Cards in Unicode](https://en.m.wikipedia.org/wiki/Playing_cards_in_Unicode)
26. [Text Generator](https://coolfonts.text-generator.org/)
27. [GOGOTEXT](https://instafontsgen.codesdetail.com)
28. [Fsymbols](https://fsymbols.com/)
29. [Font Copy and Paste](https://www.fontcopypaste.com/)
30. [Mega Cool Text](http://megacooltext.com/)
31. [ToolCalculator](https://www.toolcalculator.com/)

* Logo designed by [Arta Khanalizadeh](https://www.linkedin.com/in/artakhanalizadeh)

## Show your support

Star this repo

Give a ⭐️ if this project helped you!

Donate to our project

If you do like our project and we hope that you do, can you please support us? Our project is not and is never going to be working for profit. We need the money just so we can continue doing what we do ;-) .

Art Donation

Become a sponsor to ART

* Contact us at the email first

Corporate sponsor

- **$250** a month
- Your company's logo can be featured on **Readme**
- Intended for small companies

Mega corporate sponsor

- **$500** a month
- Your company's logo can be featured on **Readme** and **Website**
- Intended for medium-sized companies