-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
297 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
# This script is meant to be run from the root level | ||
# of your font's git repository. For example, from a Unix terminal: | ||
# $ git clone my-font | ||
# $ cd my-font | ||
# $ python3 documentation/image1.py --output documentation/image1.png | ||
|
||
# Import moduels from external python packages: https://pypi.org/ | ||
from drawbot_skia.drawbot import * | ||
from fontTools.ttLib import TTFont | ||
from fontTools.misc.fixedTools import floatToFixedToStr | ||
|
||
# Import moduels from the Python Standard Library: https://docs.python.org/3/library/ | ||
import subprocess | ||
import sys | ||
import argparse | ||
|
||
# Constants, these are the main "settings" for the image | ||
WIDTH, HEIGHT, MARGIN, FRAMES = 2048, 2048, 128, 1 | ||
FONT_PATH = "fonts/ttf/Maname-Regular.ttf" | ||
FONT_LICENSE = "OFL v1.1" | ||
AUXILIARY_FONT = "Inconsolata" | ||
AUXILIARY_FONT_SIZE = 48 | ||
|
||
BIG_TEXT = "AaBb අක" | ||
BIG_TEXT_FONT_SIZE = 730 | ||
BIG_TEXT_SIDE_MARGIN = MARGIN * 1 | ||
BIG_TEXT_BOTTOM_MARGIN = MARGIN * 2 | ||
|
||
GRID_VIEW = False # Toggle this for a grid overlay | ||
|
||
# Handel the "--output" flag | ||
# For example: $ python3 documentation/image1.py --output documentation/image1.png | ||
parser = argparse.ArgumentParser() | ||
parser.add_argument("--output", metavar="PNG", help="where to write the PNG file") | ||
args = parser.parse_args() | ||
|
||
# Load the font with the parts of fonttools that are imported with the line: | ||
# from fontTools.ttLib import TTFont | ||
# Docs Link: https://fonttools.readthedocs.io/en/latest/ttLib/ttFont.html | ||
ttFont = TTFont(FONT_PATH) | ||
|
||
# Constants that are worked out dynamically | ||
MY_URL = subprocess.check_output("git remote get-url origin", shell=True).decode() | ||
MY_HASH = subprocess.check_output("git rev-parse --short HEAD", shell=True).decode() | ||
FONT_NAME = ttFont["name"].getDebugName(4) | ||
FONT_VERSION = "v%s" % floatToFixedToStr(ttFont["head"].fontRevision, 16) | ||
|
||
|
||
# Draws a grid | ||
def grid(): | ||
stroke(1, 0, 0, 0.75) | ||
strokeWidth(2) | ||
STEP_X, STEP_Y = 0, 0 | ||
INCREMENT_X, INCREMENT_Y = MARGIN / 2, MARGIN / 2 | ||
rect(MARGIN, MARGIN, WIDTH - (MARGIN * 2), HEIGHT - (MARGIN * 2)) | ||
for x in range(29): | ||
polygon((MARGIN + STEP_X, MARGIN), (MARGIN + STEP_X, HEIGHT - MARGIN)) | ||
STEP_X += INCREMENT_X | ||
for y in range(29): | ||
polygon((MARGIN, MARGIN + STEP_Y), (WIDTH - MARGIN, MARGIN + STEP_Y)) | ||
STEP_Y += INCREMENT_Y | ||
polygon((WIDTH / 2, 0), (WIDTH / 2, HEIGHT)) | ||
polygon((0, HEIGHT / 2), (WIDTH, HEIGHT / 2)) | ||
|
||
|
||
# Remap input range to VF axis range | ||
# This is useful for animation | ||
# (E.g. sinewave(-1,1) to wght(100,900)) | ||
def remap(value, inputMin, inputMax, outputMin, outputMax): | ||
inputSpan = inputMax - inputMin # FIND INPUT RANGE SPAN | ||
outputSpan = outputMax - outputMin # FIND OUTPUT RANGE SPAN | ||
valueScaled = float(value - inputMin) / float(inputSpan) | ||
return outputMin + (valueScaled * outputSpan) | ||
|
||
|
||
# Draw the page/frame and a grid if "GRID_VIEW" is set to "True" | ||
def draw_background(): | ||
newPage(WIDTH, HEIGHT) | ||
fill(0) | ||
rect(-2, -2, WIDTH + 2, HEIGHT + 2) | ||
if GRID_VIEW: | ||
grid() | ||
else: | ||
pass | ||
|
||
|
||
# Draw main text | ||
def draw_main_text(): | ||
fill(1) | ||
stroke(None) | ||
font(FONT_PATH) | ||
fontSize(BIG_TEXT_FONT_SIZE) | ||
# Adjust this line to center main text manually. | ||
# TODO: This should be done automatically when drawbot-skia | ||
# has support for textBox() and FormattedString | ||
#text(BIG_TEXT, ((WIDTH / 2) - MARGIN * 4.75, (HEIGHT / 2) - MARGIN * 2.5)) | ||
text(BIG_TEXT, (BIG_TEXT_SIDE_MARGIN, BIG_TEXT_BOTTOM_MARGIN)) | ||
|
||
|
||
# Divider lines | ||
def draw_divider_lines(): | ||
stroke(1) | ||
strokeWidth(5) | ||
lineCap("round") | ||
line((MARGIN, HEIGHT - (MARGIN * 1.5)), (WIDTH - MARGIN, HEIGHT - (MARGIN * 1.5))) | ||
line((MARGIN, MARGIN + (MARGIN / 2)), (WIDTH - MARGIN, MARGIN + (MARGIN / 2))) | ||
stroke(None) | ||
|
||
|
||
# Draw text describing the font and it's git status & repo URL | ||
def draw_auxiliary_text(): | ||
# Setup | ||
font(AUXILIARY_FONT) | ||
fontSize(AUXILIARY_FONT_SIZE) | ||
POS_TOP_LEFT = (MARGIN, HEIGHT - MARGIN * 1.25) | ||
POS_TOP_RIGHT = (WIDTH - MARGIN, HEIGHT - MARGIN * 1.25) | ||
POS_BOTTOM_LEFT = (MARGIN, MARGIN) | ||
POS_BOTTOM_RIGHT = (WIDTH - MARGIN * 0.95, MARGIN) | ||
URL_AND_HASH = MY_URL + "at commit " + MY_HASH | ||
URL_AND_HASH = URL_AND_HASH.replace("\n", " ") | ||
# Draw Text | ||
text(FONT_NAME, POS_TOP_LEFT, align="left") | ||
text(FONT_VERSION, POS_TOP_RIGHT, align="right") | ||
text(URL_AND_HASH, POS_BOTTOM_LEFT, align="left") | ||
text(FONT_LICENSE, POS_BOTTOM_RIGHT, align="right") | ||
|
||
|
||
# Build and save the image | ||
if __name__ == "__main__": | ||
draw_background() | ||
draw_main_text() | ||
draw_divider_lines() | ||
draw_auxiliary_text() | ||
# Save output, using the "--output" flag location | ||
saveImage(args.output) | ||
# Print done in the terminal | ||
print("DrawBot: Done") |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,157 @@ | ||
# This script is meant to be run from the root level | ||
# of your font's git repository. For example, from a Unix terminal: | ||
# $ git clone my-font | ||
# $ cd my-font | ||
# $ python3 documentation/image1.py --output documentation/image1.png | ||
|
||
# Import moduels from external python packages: https://pypi.org/ | ||
from drawbot_skia.drawbot import * | ||
from fontTools.ttLib import TTFont | ||
from fontTools.misc.fixedTools import floatToFixedToStr | ||
|
||
# Import moduels from the Python Standard Library: https://docs.python.org/3/library/ | ||
import subprocess | ||
import sys | ||
import argparse | ||
|
||
# Constants, these are the main "settings" for the image | ||
WIDTH, HEIGHT, MARGIN, FRAMES = 2048, 2048, 128, 1 | ||
FONT_PATH = "fonts/ttf/Maname-Regular.ttf" | ||
FONT_LICENSE = "OFL v1.1" | ||
AUXILIARY_FONT = "Inconsolata" | ||
AUXILIARY_FONT_SIZE = 48 | ||
|
||
LINE_ONE = "ABCDEFGHIJKLMNOPQ" | ||
LINE_TWO = "RSTUVWXYZ123456789" | ||
LINE_THREE = "abcdefghijklmnopqrstu" | ||
LINE_FOUR = "vwxyz,.;:!@#$%^&*(){}[]" | ||
LINE_FIVE = "අආඇඈඉඊඋඌඍඎඏඐ " | ||
LINE_SIX = "එඒඓඔඕඖකඛගඝඞඟච" | ||
LINE_SEVEN = "ඡජඣඤඥඦටඨඩඪණඬත" | ||
LINE_EIGHT = "ථදධනඳපඵබභමඹයරලවශ" | ||
LINE_NINE = "ෂසහළෆ෴" | ||
|
||
|
||
BIG_TEXT_FONT_SIZE = 155 | ||
BIG_TEXT_SIDE_MARGIN = MARGIN * 1 | ||
BIG_TEXT_BOTTOM_MARGIN = MARGIN * 13.2 | ||
|
||
GRID_VIEW = False # Toggle this for a grid overlay | ||
|
||
# Handel the "--output" flag | ||
# For example: $ python3 documentation/image1.py --output documentation/image1.png | ||
parser = argparse.ArgumentParser() | ||
parser.add_argument("--output", metavar="PNG", help="where to write the PNG file") | ||
args = parser.parse_args() | ||
|
||
# Load the font with the parts of fonttools that are imported with the line: | ||
# from fontTools.ttLib import TTFont | ||
# Docs Link: https://fonttools.readthedocs.io/en/latest/ttLib/ttFont.html | ||
ttFont = TTFont(FONT_PATH) | ||
|
||
# Constants that are worked out dynamically | ||
MY_URL = subprocess.check_output("git remote get-url origin", shell=True).decode() | ||
MY_HASH = subprocess.check_output("git rev-parse --short HEAD", shell=True).decode() | ||
FONT_NAME = ttFont["name"].getDebugName(4) | ||
FONT_VERSION = "v%s" % floatToFixedToStr(ttFont["head"].fontRevision, 16) | ||
|
||
|
||
# Draws a grid | ||
def grid(): | ||
stroke(1, 0, 0, 0.75) | ||
strokeWidth(2) | ||
STEP_X, STEP_Y = 0, 0 | ||
INCREMENT_X, INCREMENT_Y = MARGIN / 2, MARGIN / 2 | ||
rect(MARGIN, MARGIN, WIDTH - (MARGIN * 2), HEIGHT - (MARGIN * 2)) | ||
for x in range(29): | ||
polygon((MARGIN + STEP_X, MARGIN), (MARGIN + STEP_X, HEIGHT - MARGIN)) | ||
STEP_X += INCREMENT_X | ||
for y in range(29): | ||
polygon((MARGIN, MARGIN + STEP_Y), (WIDTH - MARGIN, MARGIN + STEP_Y)) | ||
STEP_Y += INCREMENT_Y | ||
polygon((WIDTH / 2, 0), (WIDTH / 2, HEIGHT)) | ||
polygon((0, HEIGHT / 2), (WIDTH, HEIGHT / 2)) | ||
|
||
|
||
# Remap input range to VF axis range | ||
# This is useful for animation | ||
# (E.g. sinewave(-1,1) to wght(100,900)) | ||
def remap(value, inputMin, inputMax, outputMin, outputMax): | ||
inputSpan = inputMax - inputMin # FIND INPUT RANGE SPAN | ||
outputSpan = outputMax - outputMin # FIND OUTPUT RANGE SPAN | ||
valueScaled = float(value - inputMin) / float(inputSpan) | ||
return outputMin + (valueScaled * outputSpan) | ||
|
||
|
||
# Draw the page/frame and a grid if "GRID_VIEW" is set to "True" | ||
def draw_background(): | ||
newPage(WIDTH, HEIGHT) | ||
fill(0) | ||
rect(-2, -2, WIDTH + 2, HEIGHT + 2) | ||
if GRID_VIEW: | ||
grid() | ||
else: | ||
pass | ||
|
||
|
||
# Draw main text | ||
def draw_main_text(): | ||
fill(1) | ||
stroke(None) | ||
font(FONT_PATH) | ||
fontSize(BIG_TEXT_FONT_SIZE) | ||
# Adjust this line to center main text manually. | ||
# TODO: This should be done automatically when drawbot-skia | ||
# has support for textBox() and FormattedString | ||
LEADING = 1.4 | ||
text(LINE_ONE, (BIG_TEXT_SIDE_MARGIN, BIG_TEXT_BOTTOM_MARGIN)) | ||
text(LINE_TWO, (BIG_TEXT_SIDE_MARGIN, BIG_TEXT_BOTTOM_MARGIN - (MARGIN * LEADING))) | ||
text(LINE_THREE, (BIG_TEXT_SIDE_MARGIN, BIG_TEXT_BOTTOM_MARGIN - (MARGIN * (LEADING * 2)))) | ||
text(LINE_FOUR, (BIG_TEXT_SIDE_MARGIN, BIG_TEXT_BOTTOM_MARGIN - (MARGIN * (LEADING * 3)))) | ||
text(LINE_FIVE, (BIG_TEXT_SIDE_MARGIN, BIG_TEXT_BOTTOM_MARGIN - (MARGIN * (LEADING * 4)))) | ||
text(LINE_SIX, (BIG_TEXT_SIDE_MARGIN, BIG_TEXT_BOTTOM_MARGIN - (MARGIN * (LEADING * 5)))) | ||
text(LINE_SEVEN, (BIG_TEXT_SIDE_MARGIN, BIG_TEXT_BOTTOM_MARGIN - (MARGIN * (LEADING * 6)))) | ||
text(LINE_EIGHT, (BIG_TEXT_SIDE_MARGIN, BIG_TEXT_BOTTOM_MARGIN - (MARGIN * (LEADING * 7)))) | ||
text(LINE_NINE, (BIG_TEXT_SIDE_MARGIN, BIG_TEXT_BOTTOM_MARGIN - (MARGIN * (LEADING * 8)))) | ||
|
||
|
||
# Divider lines | ||
def draw_divider_lines(): | ||
stroke(1) | ||
strokeWidth(5) | ||
lineCap("round") | ||
line((MARGIN, HEIGHT - (MARGIN * 1.5)), (WIDTH - MARGIN, HEIGHT - (MARGIN * 1.5))) | ||
line((MARGIN, MARGIN + (MARGIN / 2)), (WIDTH - MARGIN, MARGIN + (MARGIN / 2))) | ||
stroke(None) | ||
|
||
|
||
# Draw text describing the font and it's git status & repo URL | ||
def draw_auxiliary_text(): | ||
# Setup | ||
font(AUXILIARY_FONT) | ||
fontSize(AUXILIARY_FONT_SIZE) | ||
POS_TOP_LEFT = (MARGIN, HEIGHT - MARGIN * 1.25) | ||
POS_TOP_RIGHT = (WIDTH - MARGIN, HEIGHT - MARGIN * 1.25) | ||
POS_BOTTOM_LEFT = (MARGIN, MARGIN) | ||
POS_BOTTOM_RIGHT = (WIDTH - MARGIN * 0.95, MARGIN) | ||
#URL_AND_HASH = "github.com/googlefonts/googlefonts-project-template " + "at commit " + MY_HASH | ||
URL_AND_HASH = MY_URL + "at commit " + MY_HASH | ||
URL_AND_HASH = URL_AND_HASH.replace("\n", " ") | ||
# Draw Text | ||
#text("Your Font Regular", POS_TOP_LEFT, align="left") | ||
text(FONT_NAME, POS_TOP_LEFT, align="left") | ||
text(FONT_VERSION, POS_TOP_RIGHT, align="right") | ||
text(URL_AND_HASH, POS_BOTTOM_LEFT, align="left") | ||
text(FONT_LICENSE, POS_BOTTOM_RIGHT, align="right") | ||
|
||
|
||
# Build and save the image | ||
if __name__ == "__main__": | ||
draw_background() | ||
draw_main_text() | ||
draw_divider_lines() | ||
draw_auxiliary_text() | ||
# Save output, using the "--output" flag location | ||
saveImage(args.output) | ||
# Print done in the terminal | ||
print("DrawBot: Done") |
Binary file not shown.
Binary file not shown.
Binary file not shown.
File renamed without changes.