General purposes Unicode fonts (fixed 5x7, proportional 8x9).
Go to file
neiviv-ui 673840b221 add Lephenixnoir's ideas 2021-07-03 12:27:44 +02:00
uf5x7 add Lephenixnoir's ideas 2021-07-03 12:27:44 +02:00
uf8x9 uf8x9: add Arrows (U+2190) 2021-06-27 16:59:17 +02:00
README.md uf8x9: add blocks in README 2021-06-27 17:06:50 +02:00
gen-chars.png initial commit - basic blocks, generator script, readme 2019-06-18 17:40:02 -04:00
gen.py gen.py: remove block end, which cannot be determined easily 2021-06-27 16:56:41 +02:00
preview.png initial commit - basic blocks, generator script, readme 2019-06-18 17:40:02 -04:00
uf5x7.png add Lephenixnoir's ideas 2021-07-03 12:27:44 +02:00
uf8x9.png finished Cyrillic 2021-06-28 11:57:21 +02:00

README.md

Unicode fonts

This repository contains Unicode fonts that support most of the common Unicode blocks. They can be used in C.Basic with the custom font mechanism or in add-ins if there is a font manager (as of March 2021 only gint has one).

There are currently two fonts in this repository:

The fonts are under CC0, there are no conditions for using them. A link back here would be appreciated though!

Related topic on Planète Casio: Police 5x7 Unicode pour add-ins et C.Basic

uf5x7: An Unicode extension for fx-9860G

uf5x7 is a basic Unicode font mostly suitable for calculators of the fx-9860G series (the ones with small 128x64 displays).

Preview image: "Mézalors Δ=2 ⇒ ∀x∈S, x⊆Δ"

Supported blocks:

  • 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!)
  • U+3000 .. U+303F - CJK Punctuation (48 chars - thanks @Alice!)
  • U+3040 .. U+309F - Hiragana (96 chars)
  • U+30A0 .. U+30FF - Katakana (96 chars)

The following blocks are being considered for future support:

  • Finish Cyrillic
  • IPA extensions and Phonetic extensions

Other characters supported in FONTCHARACTER (incomplete list):

  • U+2139 - Imaginary number
  • U+231F - Fraction symbol

Full font:

uf8x9: An original Unicode font for fx-CG

uf8x9 is a font designed specifically for the large fx-CG display (396x224), which is thin vertically and thick horizontally.

Supported blocks:

  • 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)
  • U+2160 .. U+217F - Roman numerals (32 chars)
  • U+2190 .. U+21FF - Arrows (112 chars)

Full font:

Constructing full font images

Use gen.py too generate the full images from the sections. You will need Python 3 and Pillow (PIL might be okay).

% ./gen.py uf5x7/ uf5x7.png
% ./gen.py uf8x9/ uf8x9.png

It will read each block's position from its file name (which should be on the form U\+[0-9A-Fa-f]{4}.png). 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 (egadget2.web.fc2.com) for extended font support.

Using in gint

To convert the font with fxconv, pass the name of a folder containing block images instead of a simple image and set charset to unicode. Note that in this setting, area is ignored and the same grid parameters are applied to all block images.

% fxconv -f uf5x7/ name:uf5x7 charset:unicode grid.size:5x7 grid.padding:1
% fxconv -f uf8x9/ name:uf8x9 charset:unicode grid.size:8x11 grid.padding:1 proportional:true height:9

When using the fxSDK, add the uf5x7 folder to your list of metadata files and set the type as font.

uf5x7: # Note that this is a folder
  type: font
  name: uf5x7
  charset: unicode
  grid.size: 5x7
  grid.padding: 1

uf8x9:
  type: font
  name: uf8x9
  charset: unicode
  grid.size: 8x11
  grid.padding: 1
  proportional: true
  height: 9

To use the font, configure it with dfont(), then call dtext() as usual. Make sure the string is encoded as UTF-8. The u8 prefix can be used if your source file is not encoded as UTF-8.

#include <gint/display.h>
extern font_t uf5x7, uf8x9;

dfont(&uf5x7);
dtext(5, 5, C_BLACK, "Mézalors Δ=2 ⇒ ∀x∈S, x⊆Δ");

dfont(&uf8x9);
dtext(5, 15, C_BLACK, "Δt+(3-θ²)! Eurêka!");