Python library for font previews
Project description
fontpreview: Python library for font previews
This module is under development
This is a library that allows you to create preview images from one or more selected fonts.
Full docs is here: ReadTheDocs
Installation
Use Pypi:
$ pip install --user fontpreview
Simple usage
Preview example:
from fontpreview import FontPreview
fp = FontPreview('/tmp/noto.ttf')
fp.save('/tmp/fp.png')
Banner example:
from fontpreview import FontBanner
fb = FontBanner('/tmp/noto.ttf', 'landscape', bg_color=(153, 153, 255), mode='fontname')
fb.save('/tmp/fb.png')
Logo example:
from fontpreview import FontLogo
fl = FontLogo('/tmp/noto.ttf', 'Fp')
fl.save('/tmp/fl.png')
Font wall example:
from fontpreview import FontBanner, FontWall
# Define the various parts of wall
fb = FontBanner('/tmp/noto.ttf', 'landscape' , mode='fontname')
fb2 = FontBanner('/tmp/noto.ttf', 'landscape' , mode='alpha')
fb3 = FontBanner('/tmp/noto.ttf', 'landscape' , mode='letter')
fb4 = FontBanner('/tmp/noto.ttf', 'landscape' , mode='paragraph')
fw = FontWall([fb,fb2,fb3,fb4])
fw.save('/tmp/fw.png')
Font page example:
from fontpreview import FontPage, FontBanner
# Define the various parts of page
header = FontBanner('/tmp/noto.ttf', 'landscape' , mode='fontname')
body = FontBanner('/tmp/noto.ttf', 'landscape' , mode='paragraph')
footer = FontBanner('/tmp/noto.ttf', 'landscape' , mode='letter')
# Create FontPage object
fpage = FontPage()
fpage.set_header(header)
fpage.set_body(body)
fpage.set_footer(footer)
# Design all parts
fpage.draw()
fpage.save('/tmp/fpage.png')
Font page with template example:
from fontpreview import FontPage, FontPageTemplate, FontBanner
# Define the various parts of page
header = FontBanner('/tmp/noto.ttf', 'landscape' , mode='fontname')
body = FontBanner('/tmp/noto.ttf', 'landscape' , mode='paragraph')
footer = FontBanner('/tmp/noto.ttf', 'landscape' , mode='letter')
# Create font page template
template = FontPageTemplate(3508)
template.set_body(170, 1, 'lcenter')
template.set_footer(100, 4, 'lcenter')
# Create FontPage object
fpage = FontPage(template=template)
fpage.set_header(header)
fpage.set_body(body)
fpage.set_footer(footer)
# Design all parts
fpage.draw()
fpage.save('/tmp/fpage_template.png')
Advanced usage
Below is an example of various previews of the "Fira Code regular" font. Does it remind you of anything? Fira code original
# FIRA CODE WALL
from fontpreview import FontBanner, FontWall
fira_code = '/tmp/firacode.ttf'
# RGB group = ('background', 'FIRA COD color', 'Ligature color', 'E color background')
colors_group = [
('black', (0, 143, 0), (0, 236, 236), (255, 0, 255)),
('black', (166, 47, 123), (81, 208, 93), (11, 179, 248)),
((13, 21, 43), (112, 204, 84), (226, 110, 34), (223, 245, 90)),
((43, 6, 42), (136, 126, 135), (4, 150, 153), (147, 103, 145)),
((39, 57, 85), (255, 241, 208), (208, 84, 0), (209, 215, 227)),
((31, 63, 89), (248, 248, 242), (230, 219, 117), (166, 226, 51)),
((1, 47, 80), (224, 202, 52), (73, 217, 38), (255, 125, 158)),
((0, 0, 170), (75, 224, 245), (255, 255, 85), (0, 170, 170)),
('white', 'black', 'black', 'black'),
((247, 247, 247), (167, 29, 93), (121, 93, 163), (0, 134, 179)),
((239, 240, 243), (15, 131, 207), (208, 84, 0), (105, 40, 122)),
((239, 231, 212), (218, 116, 53), (0, 142, 212), (186, 136, 0)),
((39, 40, 34), (132, 214, 45), (249, 39, 114), (174, 129, 255)),
((43, 48, 59), (180, 142, 173), (143, 161, 179), (152, 190, 140)),
((32, 32, 32), (171, 130, 84), (160, 171, 127), (216, 127, 98)),
((0, 43, 54), (0, 160, 153), (126, 143, 3), (218, 66, 130))
]
banners = []
# Create banners
for colors in colors_group:
# Create a FontBanner objects
fb = FontBanner(fira_code, (413, 240))
liga = FontBanner(fira_code, (413, 240))
E = FontBanner(fira_code, (40, 70))
# Set background colors
fb.bg_color = liga.bg_color = colors[0]
E.bg_color = colors[3]
# Set foreground colors
fb.fg_color = colors[1]
liga.fg_color = colors[2]
E.fg_color = colors[0]
# Set text
fb.font_text = 'FIRA COD'
liga.font_text = "!=->>++:="
E.font_text = 'E'
# Set text position
E.set_text_position('ltop')
fb.set_text_position((25, 60))
liga.set_text_position('top')
# Adding image on fb
fb.add_image(liga, (0, 122))
fb.add_image(E, (339, 60))
# Add to list of banners
banners.append(fb)
# Create a wall
fw = FontWall(banners, max_tile=4)
fw.save('/tmp/fira_code.png')
Open source
fontpreview is a open source project. Any contribute, It's welcome.
A great thanks.
For donations, press this
For me
For Telethon
The Telethon Foundation is a non-profit organization recognized by the Ministry of University and Scientific and Technological Research. They were born in 1990 to respond to the appeal of patients suffering from rare diseases. Come today, we are organized to dare to listen to them and answers, every day of the year.
Acknowledgments
Thanks to Mark Lutz for writing the Learning Python and Programming Python books that make up my python foundation.
Thanks to Kenneth Reitz and Tanya Schlusser for writing the The Hitchhiker’s Guide to Python books.
Special thanks go to my wife, who understood the hours of absence for this development. Thanks to my children, for the daily inspiration they give me and to make me realize, that life must be simple.
Thanks Python!
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for fontpreview-0.8.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | db497bb154b010d7aa1c1b721c806648c47472b171be046a47127c56bc38afb4 |
|
MD5 | dbeb1da7ebfecd12ae28ca126ff5a002 |
|
BLAKE2b-256 | 7c2184b74457466dad3bb1d034595532b6ee610cb597cbfecbfd4e46d308af58 |