Skip to content

Commit abdf27c

Browse files
committed
Allows External fonts to be specified by filename
1 parent 85a75b7 commit abdf27c

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

adafruit_pybadger.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
import analogio
5959
from adafruit_display_shapes.rect import Rect
6060
from adafruit_display_text.label import Label
61+
from adafruit_bitmap_font import bitmap_font
6162
import terminalio
6263
import adafruit_miniqr
6364
import adafruit_lis3dh
@@ -67,6 +68,16 @@
6768

6869
Buttons = namedtuple("Buttons", "b a start select right down up left")
6970

71+
def load_font(fontname, text):
72+
"""Load a font and glyphs in the text string
73+
74+
:param str fontname: The full path to the font file.
75+
:param str text: The text containing the glyphs we want to load.
76+
77+
"""
78+
font = bitmap_font.load_font(fontname)
79+
font.load_glyphs(text.encode('utf-8'))
80+
return font
7081

7182
# pylint: disable=too-many-instance-attributes
7283
class PyBadger:
@@ -258,6 +269,8 @@ def show_business_card(self, *, image_name=None, name_string=None, name_scale=1,
258269
except AttributeError:
259270
self.display.wait_for_frame()
260271
if name_string:
272+
if isinstance(name_font, str):
273+
name_font = load_font(name_font, name_string)
261274
name_group = displayio.Group(scale=name_scale)
262275
name_label = Label(name_font, text=name_string)
263276
(_, _, width, _) = name_label.bounding_box
@@ -267,6 +280,8 @@ def show_business_card(self, *, image_name=None, name_string=None, name_scale=1,
267280
name_group.append(name_label)
268281
business_card_splash.append(name_group)
269282
if email_string_one:
283+
if isinstance(email_font_one, str):
284+
email_font_one = load_font(email_font_one, email_string_one)
270285
email_group_one = displayio.Group(scale=email_scale_one)
271286
email_label_one = Label(email_font_one, text=email_string_one)
272287
(_, _, width, _) = email_label_one.bounding_box
@@ -277,6 +292,8 @@ def show_business_card(self, *, image_name=None, name_string=None, name_scale=1,
277292
email_group_one.append(email_label_one)
278293
business_card_splash.append(email_group_one)
279294
if email_string_two:
295+
if isinstance(email_font_two, str):
296+
email_font_two = load_font(email_font_two, email_string_two)
280297
email_group_two = displayio.Group(scale=email_scale_two)
281298
email_label_two = Label(email_font_two, text=email_string_two)
282299
(_, _, width, _) = email_label_two.bounding_box
@@ -329,6 +346,8 @@ def show_badge(self, *, background_color=0xFF0000, foreground_color=0xFFFFFF,
329346
(int(self.display.height * 0.5)), fill=foreground_color)
330347
splash.append(rect)
331348

349+
if isinstance(hello_font, str):
350+
hello_font = load_font(hello_font, hello_string)
332351
hello_group = displayio.Group(scale=hello_scale)
333352
hello_label = Label(font=hello_font, text=hello_string)
334353
(_, _, width, _) = hello_label.bounding_box
@@ -337,6 +356,8 @@ def show_badge(self, *, background_color=0xFF0000, foreground_color=0xFFFFFF,
337356
hello_label.color = background_text_color
338357
hello_group.append(hello_label)
339358

359+
if isinstance(my_name_is_font, str):
360+
my_name_is_font = load_font(my_name_is_font, my_name_is_string)
340361
my_name_is_group = displayio.Group(scale=my_name_is_scale)
341362
my_name_is_label = Label(font=my_name_is_font, text=my_name_is_string)
342363
(_, _, width, _) = my_name_is_label.bounding_box
@@ -345,6 +366,8 @@ def show_badge(self, *, background_color=0xFF0000, foreground_color=0xFFFFFF,
345366
my_name_is_label.color = background_text_color
346367
my_name_is_group.append(my_name_is_label)
347368

369+
if isinstance(name_font, str):
370+
name_font = load_font(name_font, name_string)
348371
name_group = displayio.Group(scale=name_scale)
349372
name_label = Label(font=name_font, text=name_string, line_spacing=0.75)
350373
(_, _, width, _) = name_label.bounding_box

0 commit comments

Comments
 (0)