A utility to convert Google Fonts to C++ header files.
Project description
Font Pixel Generator
A robust, modular CLI tool and Python library designed to bridge the gap between high-quality typography and embedded systems. This tool rasterizes TTF font files from the Google Fonts library into clean, C++ compatible header files for use in memory-constrained GUI projects.
Overview
Working with embedded displays often requires custom, bitmap-based fonts. This tool automates the process of finding fonts, rasterizing specific characters into boolean arrays, and exporting them as C++ constants. It includes intelligent symbol mapping to ensure all exported character variables adhere to C++ naming conventions.
Features
- Automated Repository Handling: Automatically downloads and manages a local cache of the Google Fonts repository.
- Fuzzy Font Discovery: Easily find and select fonts by family name and style variant.
- C++ Header Generation: Exports character data into
.hfiles with namespaced structures. - Symbol Safety: Automatically maps non-alphanumeric characters (like
#or@) to safe, readable names (e.g.,char_hash,char_at). - Visual Previewing: Uses
matplotlibto render and display a pixel preview of your selected character before finalizing your export.
Installation
Clone the repository:
pip install glyph-bridge
CLI Reference
You can run the tool directly from your terminal:
glyph-bridge \
--family "Inter" \
--style "Regular" \
--size 48 \
--export \
--output "./include/fonts" \
--char "A"
Argument Details
| Argument | Type | Default | Description |
|---|---|---|---|
--family |
String | Required | The name of the font family (e.g., "Roboto"). |
--style |
String | "Regular" |
The specific weight/variant (e.g., "Bold"). |
--size |
Integer | 50 |
Font height in pixels. |
--export |
Flag | False |
If set, generates a .h file. |
--output |
String | "." |
The target directory for the header. |
--char |
String | "A" |
The character to visualize in the preview. |
Library API Usage
Beyond the CLI, font_gen can be imported into your own Python automation scripts:
from font_gen import get_glyph_data, export_header
# 1. Generate glyph data (returns a NumPy boolean array)
pixel_data = get_glyph_data(
char="A",
font_path="path/to/font.ttf",
size=48,
is_fake_italic=False
)
# 2. Export an entire set to a C++ header
export_header(
font_path="path/to/font.ttf",
fam="Inter",
sty="Regular",
size=48,
is_fake_italic=False,
output_dir="./gui_assets"
)
How It Works
- Rasterization: Uses the Pillow library to render text to an off-screen buffer.
- Thresholding: Converts grayscale pixel data into a
boolarray (truefor foreground,falsefor background). - Serialization: Writes the data as a namespaced C++ constant array, sanitizing special symbols to prevent compilation errors.
License & Requirements
Requirements: numpy, matplotlib, Pillow, requests
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file glyph_bridge-0.1.1.tar.gz.
File metadata
- Download URL: glyph_bridge-0.1.1.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee3a34921cdd455878729fb575ca26a48403dd1b2812a5cfbc2ce88091de3d3c
|
|
| MD5 |
b8ad9e8eeb2e1c28eab5a6c9164253a8
|
|
| BLAKE2b-256 |
be6240059972f3d1bd9d4043b82d540a21723074efdbed07354c98850e95e725
|
File details
Details for the file glyph_bridge-0.1.1-py3-none-any.whl.
File metadata
- Download URL: glyph_bridge-0.1.1-py3-none-any.whl
- Upload date:
- Size: 6.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
234c5bb94eef4ed0df610c7c0ff622c7945f378c5ad26ff510cb904d0a6097c6
|
|
| MD5 |
c5f7fa2b89e0d8fb35e8097cc1bc8387
|
|
| BLAKE2b-256 |
a022af22e16eb5779b52785a0295eac830d01b37ba65ca8f647aac4f4881b3ca
|