mirror of
https://github.com/lvgl/lvgl.git
synced 2026-05-28 05:17:37 +08:00
docs: Added docs for BDF fonts (#6398)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
This commit is contained in:
@@ -342,6 +342,85 @@ Example
|
|||||||
/*Free the font if not required anymore*/
|
/*Free the font if not required anymore*/
|
||||||
lv_binfont_destroy(my_font);
|
lv_binfont_destroy(my_font);
|
||||||
|
|
||||||
|
Use a BDF font
|
||||||
|
**************
|
||||||
|
|
||||||
|
Small displays with low resolution don't look pretty with automatically rendered fonts. A bitmap font provides
|
||||||
|
the solution, but it's necessary to convert the bitmap font (BDF) to a TTF.
|
||||||
|
|
||||||
|
Convert BDF to TTF
|
||||||
|
------------------
|
||||||
|
|
||||||
|
BDF are bitmap fonts where fonts are not described in outlines but in pixels. BDF files can be used but
|
||||||
|
they must be converted into the TTF format via mkttf. This tool uses potrace to generate outlines from
|
||||||
|
the bitmap information. The bitmap itself will be embedded into the TTF as well. `lv_font_conv <https://github.com/lvgl/lv_font_conv/>`__ uses
|
||||||
|
the embedded bitmap but it also needs the outlines. One could think you can use a fake MS Bitmap
|
||||||
|
only sfnt (ttf) (TTF without outlines) created by fontforge but this will not work.
|
||||||
|
|
||||||
|
Install imagemagick, python3, python3-fontforge and potrace
|
||||||
|
|
||||||
|
On Ubuntu Systems, just type
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
sudo apt install imagemagick python3-fontforge potrace
|
||||||
|
|
||||||
|
Clone mkttf
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
git clone https://github.com/Tblue/mkttf
|
||||||
|
|
||||||
|
Read the mkttf docs.
|
||||||
|
|
||||||
|
Former versions of imagemagick needs the imagemagick call in front of convert, identify and so on.
|
||||||
|
But newer versions don't. So you might probably change 2 lines in potrace-wrapper.sh.
|
||||||
|
Open potrace-wrapper.sh and remove imagemagick from line 55 and line 64.
|
||||||
|
|
||||||
|
line 55
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
wh=($(identify -format '%[width]pt %[height]pt' "${input?}"))
|
||||||
|
|
||||||
|
line 64
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
convert "${input?}" -sample '1000%' - \
|
||||||
|
|
||||||
|
It might be necessary to change the mkttf.py script.
|
||||||
|
|
||||||
|
line 1
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
Example for a 12px font
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
cd mkttf
|
||||||
|
./mkttf.py ./TerminusMedium-12-12.bdf
|
||||||
|
Importing bitmaps from 0 additional fonts...
|
||||||
|
Importing font `./TerminusMedium-12-12.bdf' into glyph background...
|
||||||
|
Processing glyphs...
|
||||||
|
Saving TTF file...
|
||||||
|
Saving SFD file...
|
||||||
|
Done!
|
||||||
|
|
||||||
|
The TTF TerminusMedium-001.000.ttf has been created from ./TerminusMedium-12-12.bdf.
|
||||||
|
|
||||||
|
Create font for lvgl
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
lv_font_conv --bpp 1 --size 12 --no-compress --font TerminusMedium-001.000.ttf --range 0x20-0x7e,0xa1-0xff --format lvgl -o terminus_1bpp_12px.c
|
||||||
|
|
||||||
|
:note: use 1bpp because we don't use anti-aliasing. It doesn't look sharp on displays with a low resolution.
|
||||||
|
|
||||||
Add a new font engine
|
Add a new font engine
|
||||||
*********************
|
*********************
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user