pixel font builder
1.0.0
有助于创建像素样式字体的库。
pip install pixel-font-builder import datetime
import shutil
from examples import build_dir
from pixel_font_builder import FontBuilder , WeightName , SerifStyle , SlantStyle , WidthStyle , Glyph , opentype
def main ():
outputs_dir = build_dir . joinpath ( 'create' )
if outputs_dir . exists ():
shutil . rmtree ( outputs_dir )
outputs_dir . mkdir ( parents = True )
builder = FontBuilder ()
builder . font_metric . font_size = 12
builder . font_metric . horizontal_layout . ascent = 10
builder . font_metric . horizontal_layout . descent = - 2
builder . font_metric . vertical_layout . ascent = 6
builder . font_metric . vertical_layout . descent = - 6
builder . font_metric . x_height = 5
builder . font_metric . cap_height = 7
builder . meta_info . version = '1.0.0'
builder . meta_info . created_time = datetime . datetime . fromisoformat ( '2024-01-01T00:00:00Z' )
builder . meta_info . modified_time = builder . meta_info . created_time
builder . meta_info . family_name = 'My Pixel'
builder . meta_info . weight_name = WeightName . REGULAR
builder . meta_info . serif_style = SerifStyle . SANS_SERIF
builder . meta_info . slant_style = SlantStyle . NORMAL
builder . meta_info . width_style = WidthStyle . MONOSPACED
builder . meta_info . manufacturer = 'Pixel Font Studio'
builder . meta_info . designer = 'TakWolf'
builder . meta_info . description = 'A demo pixel font.'
builder . meta_info . copyright_info = 'Copyright (c) TakWolf'
builder . meta_info . license_info = 'This Font Software is licensed under the SIL Open Font License, Version 1.1.'
builder . meta_info . vendor_url = 'https://github.com/TakWolf/pixel-font-builder'
builder . meta_info . designer_url = 'https://takwolf.com'
builder . meta_info . license_url = 'https://openfontlicense.org'
builder . meta_info . sample_text = 'Hello World!'
builder . character_mapping . update ({
ord ( 'A' ): 'CAP_LETTER_A' ,
})
builder . glyphs . append ( Glyph (
name = '.notdef' ,
horizontal_origin = ( 0 , - 2 ),
advance_width = 8 ,
vertical_origin = ( - 4 , 0 ),
advance_height = 12 ,
bitmap = [
[ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ],
[ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ],
[ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ],
[ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ],
[ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ],
[ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ],
[ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ],
[ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ],
[ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ],
[ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ],
[ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ],
[ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ],
],
))
builder . glyphs . append ( Glyph (
name = 'CAP_LETTER_A' ,
horizontal_origin = ( 0 , - 2 ),
advance_width = 8 ,
vertical_origin = ( - 4 , 0 ),
advance_height = 12 ,
bitmap = [
[ 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 ],
],
))
builder . save_otf ( outputs_dir . joinpath ( 'my-pixel.otf' ))
builder . save_otf ( outputs_dir . joinpath ( 'my-pixel.woff2' ), flavor = opentype . Flavor . WOFF2 )
builder . save_ttf ( outputs_dir . joinpath ( 'my-font.ttf' ))
builder . save_bdf ( outputs_dir . joinpath ( 'my-font.bdf' ))
builder . save_pcf ( outputs_dir . joinpath ( 'my-font.pcf' ))
if __name__ == '__main__' :
main ()使用与Opentype相同的坐标系。
| 格式 | 文件扩展 |
|---|---|
| Opentype | .otf , .otc , .woff , .woff2 |
| trueType | .ttf , .ttc , .woff , .woff2 |
| 字形位图分布格式 | .bdf |
| 便携式编译格式 | .pcf |
根据麻省理工学院许可。