You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
3.0 KiB

# uf5x7: A 5x7 Unicode font
uf5x7 is a 5x7 font that suports most of the common Unicode blocks. It can be
used in C.Basic with the custom font mechanism or in add-ins if the font
manager supports it.
![Preview image: "Mézalors Δ=2 ⇒ ∀x∈S, x⊆Δ"](https://www.planet-casio.com/files/forums/preview-166451.png)
The font is **under CC0**, there are no conditions for using it. A link back here
would be appreciated though!
Related topic on Planète Casio: [Police 5x7 Unicode pour add-ins et C.Basic](https://www.planet-casio.com/Fr/forums/topic15732-1-Police-5x7-Unicode-pour-add-ins-et-C.Basic.html)
Currently the following blocks have been drawn:
* `U+0020 .. U+007F` - ASCII (128 chars)
* `U+00A0 .. U+00FF` - Latin-1 Supplement (96 chars)
* `U+0100 .. U+017F` - Latin Extended-A (128 chars)
* `U+0370 .. U+03FF` - Greek (144 chars)
* `U+0400 .. U+047F` - Cyrillic (128 chars)
* `U+16A0 .. U+16FF` - Runic (96 chars)
* `U+2010 .. U+205F` - General punctuation (80 chars)
* `U+2070 .. U+209F` - Subscripts and superscripts (48 chars)
* `U+20A0 .. U+20BF` - Currency symbols (32 chars - thanks @Alice!)
* `U+2160 .. U+217F` - Roman numerals (32 chars)
* `U+2190 .. U+21FF` - Arrows (112 chars)
* `U+2200 .. U+22FF` - Mathematical operators (256 chars)
* `U+2440 .. U+244F` - Optical character recognition (16 chars - thanks @Alice!)
* `U+25A0 .. U+25FF` - Geometric shapes (96 chars)
* `U+2800 .. U+28FF` - Braille patterns (256 chars - thanks @Alice!)
The following blocks are being considered for future support:
* Finish Cyrillic
* IPA extensions and Phonetic extensions
* Hiragana and Katakana
Other characters supported in `FONTCHARACTER` (incomplete list):
* `U+2139` - Imaginary number
* `U+231F` - Fraction symbol
* `U+3010` - Special bracket
* `U+3011` - Special bracket
## Constructing a full image of the font
The `gen.py` script can be used to generate `uf5x7.png`, the full image of the
font. You will need Python 3 and Pillow (PIL might be okay).
```sh
% ./gen.py uf5x7/*
```
It will read each block's position from its file name (which should be on the
form `U\+[0-9A-Fa-f]{4}.png`) and guess the block end from the image
dimensions. For image files with a different name, it will output an anonymous
block.
The file `gen-chars.png` provides some character templates for it to render the
full image.
## Using in C.Basic
TODO - Check out the [documentation](https://egadget2.web.fc2.com/CBasic/Interpreter/CBasic_interpreter.html) (egadget2.web.fc2.com)
for extended font support.
## Using in gint
**Disclaimer**: this is being worked on, but not implemented in gint yet.
When converting the font with `fxconv`, pass the name of a folder containing
block images instead of a simple image and set `charset` to `unicode`.
```sh
% fxconv -f uf5x7/ name:uf5x7 charset:unicode grid.size:5x7
```
When using the font, just call `dtext()` as usual and make sure the string is
encoded as utf8. The `u8` prefix can be used if your source file is not
encoded as utf8.
```c
dtext(5, 5, "Mézalors Δ=2 ⇒ ∀x∈S, x⊆Δ", BLACK, WHITE);
```