___ ___ / /\ / /\ ___ / /::\ / /::\ / /\ / /:/\:\ / /:/\:\ / /:/ / /:/~/::\ / /:/~/:/ / /:/ /__/:/ /:/\:\ /__/:/ /:/___ / /::\ \ \:\/:/__\/ \ \:\/:::::/ /__/:/\:\ \ \::/ \ \::/~~~~ \__\/ \:\ \ \:\ \ \:\ \ \:\ \ \:\ \ \:\ \__\/ \__\/ \__\/ ___ _ _ ____ ____ ___ ____ _ _ ___ _ _ ____ ____ _ _ _ ____ _ _ _ |__] \_/ [__ |___ |__] |__| |\ | | \ |__| |__| | __ |__| | | __ |__| | |__] | ___] |___ | | | | \| |__/ | | | | |__] | | | |__] | | | _ _ ____ ____ ___ ____ _____ _ _ ___ __ ( \/ )( ___)( _ \/ __)(_ _)( _ )( \( ) | __) / ) \ / )__) ) /\__ \ _)(_ )(_)( ) ( |__ \ )( \/ (____)(_)\_)(___/(____)(_____)(_)\_) (___/()(__)
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 | |
Font Counter | 590 |
1-Line-Art Counter | 700 |
Decor Counter | 195 |
⚠️ ART 4.4 is the last version to support Python 2.7 & Python 3.4 officially
⚠️ PyPI support of these versions will be removed in a future release
python3 setup.py install
or python setup.py install
Need root accesspip install art==5.1
or pip3 install art==5.1
Need root access --upgrade
error install latest version of setuptools
: pip install setuptools
and retryconda install -c sepandhaghighi art
easy_install "art==5.1"
Need root access pip install art
or pip3 install art
Need root access>> pyversion PYTHON_EXECUTABLE_FULL_PATH
Quick Start
⚠️ Some environments don't support all 1-Line arts
⚠️ ART 4.6 is the last version to support Bipartite art
This function return 1-line art as str in normal mode and raise artError in exception
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | >>> 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("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. |
This function print 1-line art in normal mode (return None) and raise artError in exception
1 2 3 4 5 6 7 8 9 10 11 12 | >>> aprint("butterfly") # print art Ƹ̵̡Ӝ̵̨̄Ʒ >>> aprint("happy") # print art ۜ\(סּںסּَ` )/ۜ >>> 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. |
randart
function is added in Version 2.2
as art("random")
shortcut.
1 2 3 4 | >>> 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
)
⚠️ Some fonts don't support all characters
⚠️ From Version 3.3
Non-ASCII fonts added (These fonts are not compatible with some environments)
This function return ASCII text as str in normal mode and raise artError in exception
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | >>> 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('''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 |
This function print ASCII text in normal mode (return None) and raise artError in exception
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | >>> 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سس',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 •]•·✦º✦·»ᏗᏒᏖ«·✦º✦·•[• |
This function return dict in normal and exception mode
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | >>> 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 |
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
)
⚠️ Some environments don't support all decorations
This function return decoration as str
in normal mode and raise artError
in exception.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | >>> 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
)
These modes are available for text2art
, tprint
& tsave
.
⚠️ Some fonts don't support all characters
1 2 3 4 5 6 7 8 9 10 11 12 13 | >>> tprint("art",font="block",chr_ignore=True) .----------------. .----------------. .----------------. | .--------------. || .--------------. || .--------------. | | | __ | || | _______ | || | _________ | | | | / \ | || | |_ __ \ | || | | _ _ | | | | | / /\ \ | || | | |__) | | || | |_/ | | \_| | | | | / ____ \ | || | | __ / | || | | | | | | | _/ / \ \_ | || | _| | \ \_ | || | _| |_ | | | ||____| |____|| || | |____| |___| | || | |_____| | | | | | || | | || | | | | '--------------' || '--------------' || '--------------' | '----------------' '----------------' '----------------' |
Randomly select from all fonts.
Keywords : random
, rand
& rnd
1 2 3 4 5 | >>> tprint("test",font="random") | | ~|~/~/(~~|~ | \/__) | |
Randomly select from small fonts.
Keywords : rnd-small
, random-small
& rand-small
Note : New in Version 2.8
1 2 3 4 5 | >>> tprint("test",font="rnd-small") _/ _ _ _/ / (- _) / |
Randomly select from medium fonts.
Keywords : rnd-medium
, random-medium
& rand-medium
Note : New in Version 2.8
1 2 3 4 5 6 7 8 9 10 | >>> tprint("test",font="rnd-medium") , , || || =||= _-_ _-_, =||= || || \\ ||_. || || ||/ ~ || || \\, \\,/ ,-_- \\, |
Randomly select from large fonts.
Keywords : rnd-large
, random-large
& rand-large
Note : New in Version 2.8
1 2 3 4 5 6 7 8 9 10 11 12 | >>> 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 |
Randomly select from xlarge fonts.
Keywords : rnd-xlarge
, random-xlarge
& rand-xlarge
Note : New in Version 2.8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | >>> tprint("test","rnd-xlarge") _____ _____ _____ _____ /\ \ /\ \ /\ \ /\ \ /::\ \ /::\ \ /::\ \ /::\ \ \:::\ \ /::::\ \ /::::\ \ \:::\ \ \:::\ \ /::::::\ \ /::::::\ \ \:::\ \ \:::\ \ /:::/\:::\ \ /:::/\:::\ \ \:::\ \ \:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ \:::\ \ /::::\ \ /::::\ \:::\ \ \:::\ \:::\ \ /::::\ \ /::::::\ \ /::::::\ \:::\ \ ___\:::\ \:::\ \ /::::::\ \ /:::/\:::\ \ /:::/\:::\ \:::\ \ /\ \:::\ \:::\ \ /:::/\:::\ \ /:::/ \:::\____\/:::/__\:::\ \:::\____\/::\ \:::\ \:::\____\ /:::/ \:::\____\ /:::/ \::/ /\:::\ \:::\ \::/ /\:::\ \:::\ \::/ / /:::/ \::/ / /:::/ / \/____/ \:::\ \:::\ \/____/ \:::\ \:::\ \/____/ /:::/ / \/____/ /:::/ / \:::\ \:::\ \ \:::\ \:::\ \ /:::/ / /:::/ / \:::\ \:::\____\ \:::\ \:::\____\ /:::/ / \::/ / \:::\ \::/ / \:::\ /:::/ / \::/ / \/____/ \:::\ \/____/ \:::\/:::/ / \/____/ \:::\ \ \::::::/ / \:::\____\ \::::/ / \::/ / \::/ / \/____/ \/____/ |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | >>> 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") # # # # # # # # # # # # # # # ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## |
Randomly select from Non-ASCII fonts.
Keywords : random-na
, rand-na
& rnd-na
Note : New in Version 3.4
1 2 3 4 5 | >>> tprint("test","random-na") ₮Ɇ₴₮ >>> tprint("test","random-na") ʇsǝʇ |
Randomly mix Non-ASCII fonts.
Keywords : mix
Note : New in Version 3.7
1 2 3 4 5 6 7 8 | >>> 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 Non-ASCII
modes
Levenshtein distance used in this project. (>Version 0.9
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | >>> Art=art("loveyou",number=1,text="test") # correct --> art("love_you",number=1,text="test"), error < |artname|/2 >>> print(Art) »-(¯`·.·´¯)->test<-(¯`·.·´¯)-« >>> 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_default
function is added in Version 2.2
in order to change default values.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | >>> 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) 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 :return: None >>> tprint("test") _ _ | |_ ___ ___ | |_ | __| / _ \/ __|| __| | |_ | __/\__ \| |_ \__| \___||___/ \__| >>> set_default(font="italic") >>> tprint("test") _/ _ _ _/ / (- _) / |
* Functions error response updated in Version 0.8
Function | Normal | 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 |
python -m art test
python -m art test2
python -m art list
or python -m art arts
python -m art fonts
python -m art text yourtext fontname(optional)
python -m art shape art_name
or python -m art art art_name
python -m art save yourtext fontname(optional)
python -m art all yourtext
* Open FontList.ipynb
, ArtList.ipynb
and DecorList.ipynb