58
58
import analogio
59
59
from adafruit_display_shapes .rect import Rect
60
60
from adafruit_display_text .label import Label
61
+ from adafruit_bitmap_font import bitmap_font
61
62
import terminalio
62
63
import adafruit_miniqr
63
64
import adafruit_lis3dh
67
68
68
69
Buttons = namedtuple ("Buttons" , "b a start select right down up left" )
69
70
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
70
81
71
82
# pylint: disable=too-many-instance-attributes
72
83
class PyBadger :
@@ -258,17 +269,21 @@ def show_business_card(self, *, image_name=None, name_string=None, name_scale=1,
258
269
except AttributeError :
259
270
self .display .wait_for_frame ()
260
271
if name_string :
272
+ if isinstance (name_font , str ):
273
+ name_font = load_font (name_font , name_string )
261
274
name_group = displayio .Group (scale = name_scale )
262
- name_label = Label (name_font , text = name_string )
275
+ name_label = Label (name_font , text = name_string , line_spacing = 0.75 )
263
276
(_ , _ , width , _ ) = name_label .bounding_box
264
277
name_label .x = ((self .display .width // (2 * name_scale )) - width // 2 )
265
278
name_label .y = int (self .display .height * (0.73 / name_scale ))
266
279
name_label .color = 0xFFFFFF
267
280
name_group .append (name_label )
268
281
business_card_splash .append (name_group )
269
282
if email_string_one :
283
+ if isinstance (email_font_one , str ):
284
+ email_font_one = load_font (email_font_one , email_string_one )
270
285
email_group_one = displayio .Group (scale = email_scale_one )
271
- email_label_one = Label (email_font_one , text = email_string_one )
286
+ email_label_one = Label (email_font_one , text = email_string_one , line_spacing = 0.75 )
272
287
(_ , _ , width , _ ) = email_label_one .bounding_box
273
288
email_label_one .width = self .display .width
274
289
email_label_one .x = ((self .display .width // (2 * email_scale_one )) - width // 2 )
@@ -277,8 +292,10 @@ def show_business_card(self, *, image_name=None, name_string=None, name_scale=1,
277
292
email_group_one .append (email_label_one )
278
293
business_card_splash .append (email_group_one )
279
294
if email_string_two :
295
+ if isinstance (email_font_two , str ):
296
+ email_font_two = load_font (email_font_two , email_string_two )
280
297
email_group_two = displayio .Group (scale = email_scale_two )
281
- email_label_two = Label (email_font_two , text = email_string_two )
298
+ email_label_two = Label (email_font_two , text = email_string_two , line_spacing = 0.75 )
282
299
(_ , _ , width , _ ) = email_label_two .bounding_box
283
300
email_label_two .width = self .display .width
284
301
email_label_two .x = ((self .display .width // (2 * email_scale_two )) - width // 2 )
@@ -329,22 +346,28 @@ def show_badge(self, *, background_color=0xFF0000, foreground_color=0xFFFFFF,
329
346
(int (self .display .height * 0.5 )), fill = foreground_color )
330
347
splash .append (rect )
331
348
349
+ if isinstance (hello_font , str ):
350
+ hello_font = load_font (hello_font , hello_string )
332
351
hello_group = displayio .Group (scale = hello_scale )
333
- hello_label = Label (font = hello_font , text = hello_string )
352
+ hello_label = Label (font = hello_font , text = hello_string , line_spacing = 0.75 )
334
353
(_ , _ , width , _ ) = hello_label .bounding_box
335
354
hello_label .x = ((self .display .width // (2 * hello_scale )) - width // 2 )
336
355
hello_label .y = int (self .display .height * (0.117 / hello_scale ))
337
356
hello_label .color = background_text_color
338
357
hello_group .append (hello_label )
339
358
359
+ if isinstance (my_name_is_font , str ):
360
+ my_name_is_font = load_font (my_name_is_font , my_name_is_string )
340
361
my_name_is_group = displayio .Group (scale = my_name_is_scale )
341
- my_name_is_label = Label (font = my_name_is_font , text = my_name_is_string )
362
+ my_name_is_label = Label (font = my_name_is_font , text = my_name_is_string , line_spacing = 0.75 )
342
363
(_ , _ , width , _ ) = my_name_is_label .bounding_box
343
364
my_name_is_label .x = ((self .display .width // (2 * my_name_is_scale )) - width // 2 )
344
365
my_name_is_label .y = int (self .display .height * (0.28 / my_name_is_scale ))
345
366
my_name_is_label .color = background_text_color
346
367
my_name_is_group .append (my_name_is_label )
347
368
369
+ if isinstance (name_font , str ):
370
+ name_font = load_font (name_font , name_string )
348
371
name_group = displayio .Group (scale = name_scale )
349
372
name_label = Label (font = name_font , text = name_string , line_spacing = 0.75 )
350
373
(_ , _ , width , _ ) = name_label .bounding_box
0 commit comments