olikraus / u8g2

U8glib library for monochrome displays, version 2
Other
5.16k stars 1.05k forks source link

Full basic multilingual plane unifont #2535

Open Zipdox2 opened 2 days ago

Zipdox2 commented 2 days ago

My project involves displaying song titles and artists, and I'm looking for a font that has the most coverage. The most important characters for me are characters with diacritics, Japanese, and Cyrillic. The closest ones I've found are:\ Unifont, which doesn't have one font with all the characters,\ Efont, which doesn't have diacritics, and\ Boutique, which is too small (should be 15/16px tall).

Would it be possible to combine all the Unifont fonts into one big font? A 500kB monstrosity wouldn't really be a problem for me.

olikraus commented 2 days ago

There is an external project which did this job: https://github.com/stgiga/UnifontEX/blob/main/UnifontExMonoU8G2.c

In general you can create u8g2 font files by yourself with "bdfconv.exe": https://github.com/olikraus/u8g2/blob/4b17158f4dd02ce386ac18f3fd30c20997a73871/doc/faq.txt#L255-L291

Zipdox2 commented 2 days ago

That solved my problem. But in my opinion there should be a pre-made full basic multilingual plane font. I guess I'll change my issue to that.

olikraus commented 1 day ago

I guess most embedded systems don't have the memory for this

Zipdox2 commented 1 day ago

I guess most embedded systems don't have the memory for this

ESP32 development boards typically have 4MB of flash. The whole basic multilingual plane takes up 2034754 bytes.

Zipdox2 commented 1 day ago

Pruning combining characters and other non-characters seems like a good way to save a little bit of space, since they can't be rendered by U8g2 anyway. The original character will still be visible without diacritics or whatever. Here's what I've pruned so far:

These may also be pruned (in whole or parts)