No description
Loading fonts can be one of the slow phases of a Magtag type project, and run time decreases battery lifetime. Therefore, it's warranted to write less idiomatic Python here if it improves runtime significantly. This change assumes that the lines within a character come in a specific order. While the document ostensibly defining the BDF file format https://www.adobe.com/content/dam/acom/en/devnet/font/pdfs/5005.BDF_Spec.pdf does not say that the order is defined, I inspected the source of the Linux program "bdftopcf" which has been used for decades to convert textual bdf font files into binary pcf files, and it too assumes that the lines come in a defined order. I doubt that bdf files that do not work with the linux bdftopcf program are less scarce than unicorns. I timed loading the characters "Adafruit CircuitPython" from the font "GothamBlack-50.bdf" on a PyBadge in CircuitPython 6.0.0: ```python font = load_font("/GothamBlack-50.bdf") font.load_glyphs("Adafruit CircuitPython") ``` The time decreased from 919ms to 530ms (-42%). Just reading all the lines in the font file takes 380ms. However, only the first 38% of the file (or so) needs to be read, so the I/O time is about 140ms. |
||
|---|---|---|
| .github/workflows | ||
| adafruit_bitmap_font | ||
| docs | ||
| examples | ||
| test | ||
| .gitignore | ||
| .pylintrc | ||
| .readthedocs.yml | ||
| CODE_OF_CONDUCT.md | ||
| LICENSE | ||
| README.rst | ||
| requirements.txt | ||
| setup.py | ||
Introduction
============
.. image:: https://readthedocs.org/projects/adafruit-circuitpython-bitmap_font/badge/?version=latest
:target: https://circuitpython.readthedocs.io/projects/bitmap-font/en/latest/
:alt: Documentation Status
.. image:: https://img.shields.io/discord/327254708534116352.svg
:target: https://adafru.it/discord
:alt: Discord
.. image:: https://github.com/adafruit/Adafruit_CircuitPython_Bitmap_Font/workflows/Build%20CI/badge.svg
:target: https://github.com/adafruit/Adafruit_CircuitPython_Bitmap_Font/actions/
:alt: Build Status
Loads bitmap fonts into CircuitPython's displayio. BDF files are well supported. PCF and TTF
support is not yet complete.
Dependencies
=============
This driver depends on:
* `Adafruit CircuitPython <https://github.com/adafruit/circuitpython>`_
Please ensure all dependencies are available on the CircuitPython filesystem.
This is easily achieved by downloading
`the Adafruit library and driver bundle <https://github.com/adafruit/Adafruit_CircuitPython_Bundle>`_.
Installing from PyPI
--------------------
On supported GNU/Linux systems like the Raspberry Pi, you can install the driver locally `from
PyPI <https://pypi.org/project/adafruit-circuitpython-bitmap_font/>`_. To install for current user:
.. code-block:: shell
pip3 install adafruit-circuitpython-bitmap_font
To install system-wide (this may be required in some cases):
.. code-block:: shell
sudo pip3 install adafruit-circuitpython-bitmap_font
To install in a virtual environment in your current project:
.. code-block:: shell
mkdir project-name && cd project-name
python3 -m venv .env
source .env/bin/activate
pip3 install adafruit-circuitpython-bitmap_font
Usage Example
=============
.. code-block::python
from adafruit_bitmap_font import bitmap_font
from displayio import Bitmap
font = bitmap_font.load_font("scientifica-11.bdf", Bitmap)
print(font.get_glyph(ord("A")))
Contributing
============
Contributions are welcome! Please read our `Code of Conduct
<https://github.com/adafruit/Adafruit_CircuitPython_Bitmap_Font/blob/master/CODE_OF_CONDUCT.md>`_
before contributing to help this project stay welcoming.
Documentation
=============
For information on building library documentation, please check out `this guide <https://learn.adafruit.com/creating-and-sharing-a-circuitpython-library/sharing-our-docs-on-readthedocs#sphinx-5-1>`_.