bdffont
1.0.0
BDFFONT是一個用於操縱字形位圖分佈格式(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 ()根據麻省理工學院許可。