img2irc/utils/README.md

62 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This tool converts an image containing Unicode glyphs into Rust-compatible bitmap arrays for use in the `img2irc` project.
## Workflow Overview
1. **Create input files:**
* An **image file** with glyphs rendered horizontally, without gaps. Essentially a cropped screenshot of the rendered characters with no spaces in between.
* A **text file** listing the same glyphs separated by spaces.
2. **Generate JSON bitmap data (`mkbitmap.py`).**
3. **Convert JSON to Rust source (`mkrust.py`).**
4. Replace `src/chars.rs` in `img2irc` with the generated Rust file and recompile.
---
## `mkbitmap.py`
Slices an image into bitmaps and outputs JSON.
**Arguments:**
| Argument | Description |
| ------------- | ------------------------------------------------ |
| `chars_file` | Text file containing glyphs separated by spaces. |
| `image_file` | Horizontal image of glyphs (no gaps). |
| `--icw` | Input character width (pixels). |
| `--ich` | Input character height (pixels). |
| `--threshold` | Black/white pixel threshold (0255). |
| `--obw` | Output bitmap width. |
| `--obh` | Output bitmap height. |
| `--output` | Output JSON filename. |
**Example:**
```bash
./mkbitmap.py chars.txt chars.png --icw 20 --ich 40 --threshold 128 --obw 10 --obh 20 --output chars.json
```
---
## `mkrust.py`
Converts JSON bitmap data to Rust source code.
**Arguments:**
| Argument | Description |
| ------------ | ----------------------------- |
| `input_json` | JSON file from `mkbitmap.py`. |
| `output_rs` | Output Rust source file. |
**Example:**
```bash
./mkrust.py chars.json chars.rs
```
Replace the resulting `chars.rs` in your `img2irc` project and recompile.
You can use the included `chars.txt` and `chars.png` as an example.