from .font_3x5 import font_3x5 from .font_5x7 import font_5x7 from .font_5x7_opt import font_5x7 as font_5x7_opt from .font_8x8 import font_8x8 from .font_16x16 import font_16x16 from ..emoji.emoji_5x7 import emoji_5x7 from ..emoji.emoji_8x8 import emoji_8x8 from ..emoji.emoji_16x16 import emoji_16x16 from ...utils.utils import number_to_bitarray_msb fonts_meta_ = { 3: {'w': 3, 'h': 5}, 5: {'w': 5, 'h': 7}, 8: {'w': 8, 'h': 8}, 16: {'w': 16, 'h': 16}, } def fonts_meta(font): if font == font_3x5: return fonts_meta_[3] elif font == font_5x7: return fonts_meta_[5] elif font == font_5x7_opt: return fonts_meta_[5] elif font == font_8x8: return fonts_meta_[8] elif font == font_16x16: return fonts_meta_[16] elif font == emoji_5x7: return fonts_meta_[5] elif font == emoji_8x8: return fonts_meta_[8] elif font == emoji_16x16: return fonts_meta_[16] else: return None def char_width(char_matrix) -> int: """Berechnung der Bits für die Zeichenbreite Args: char_matrix (int): Zeichen als Array[int] Returns: int: Anzahl Bits für die Zeichenbreite """ max_val = max(char_matrix) val = max_val cw = 0 while 0xFFFFFFFF & val: """rechts shiften, bis alles Nullen da sind""" val >>= 1 cw += 1 return cw