bdffont
1.0.0
BDFFont est une bibliothèque pour manipuler les polices de format de distribution Bitmap Glyph Bitmap (BDF).
pip install bdffont import shutil
from bdffont import BdfFont
from examples import assets_dir , build_dir
def main ():
outputs_dir = build_dir . joinpath ( 'load' )
if outputs_dir . exists ():
shutil . rmtree ( outputs_dir )
outputs_dir . mkdir ( parents = True )
font = BdfFont . load ( assets_dir . joinpath ( 'unifont' , 'unifont-16.0.02.bdf' ))
print ( f'name: { font . name } ' )
print ( f'size: { font . point_size } ' )
print ( f'ascent: { font . properties . font_ascent } ' )
print ( f'descent: { font . properties . font_descent } ' )
print ()
for glyph in font . glyphs :
print ( f'char: { chr ( glyph . encoding ) } ( { glyph . encoding :04X } )' )
print ( f'glyph_name: { glyph . name } ' )
print ( f'advance_width: { glyph . device_width_x } ' )
print ( f'dimensions: { glyph . dimensions } ' )
print ( f'origin: { glyph . origin } ' )
for bitmap_row in glyph . bitmap :
text = '' . join ( ' ' if alpha == 0 else '██' for alpha in bitmap_row )
print ( f' { text } *' )
print ()
font . save ( outputs_dir . joinpath ( 'unifont-16.0.02.bdf' ))
if __name__ == '__main__' :
main () import shutil
from bdffont import BdfFont , BdfGlyph
from examples import build_dir
def main ():
outputs_dir = build_dir . joinpath ( 'create' )
if outputs_dir . exists ():
shutil . rmtree ( outputs_dir )
outputs_dir . mkdir ( parents = True )
font = BdfFont (
point_size = 16 ,
resolution = ( 75 , 75 ),
bounding_box = ( 16 , 16 , 0 , - 2 ),
)
font . glyphs . append ( BdfGlyph (
name = 'A' ,
encoding = ord ( 'A' ),
scalable_width = ( 500 , 0 ),
device_width = ( 8 , 0 ),
bounding_box = ( 8 , 16 , 0 , - 2 ),
bitmap = [
[ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ],
[ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ],
[ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ],
[ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ],
[ 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 ],
[ 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 ],
[ 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 ],
[ 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 ],
[ 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 ],
[ 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 ],
[ 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 ],
[ 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 ],
[ 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 ],
[ 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 ],
[ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ],
[ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ],
],
))
font . properties . foundry = 'Pixel Font Studio'
font . properties . family_name = 'Demo Pixel'
font . properties . weight_name = 'Medium'
font . properties . slant = 'R'
font . properties . setwidth_name = 'Normal'
font . properties . add_style_name = 'Sans Serif'
font . properties . pixel_size = font . point_size
font . properties . point_size = font . point_size * 10
font . properties . resolution_x = font . resolution_x
font . properties . resolution_y = font . resolution_y
font . properties . spacing = 'P'
font . properties . average_width = round ( sum ([ glyph . device_width_x * 10 for glyph in font . glyphs ]) / len ( font . glyphs ))
font . properties . charset_registry = 'ISO10646'
font . properties . charset_encoding = '1'
font . generate_name_as_xlfd ()
font . properties . default_char = - 1
font . properties . font_ascent = 14
font . properties . font_descent = 2
font . properties . x_height = 5
font . properties . cap_height = 7
font . properties . font_version = '1.0.0'
font . properties . copyright = 'Copyright (c) TakWolf'
font . save ( outputs_dir . joinpath ( 'my-font.bdf' ))
if __name__ == '__main__' :
main ()Sous la licence du MIT.