This is another ttf2gui based on https://github.com/deividAlfa/ttf2ugui with modifications:
- now the single character range for font conversion will be repeated for setting a clear range.like:unicode 169 has an offset:0x00,0xA9,0x00,0xA9 Flag:0x01,0x00
- fixed the show function for CJK.
- Add new Flags for ranges of font data.
- Anything more??No...Playing this is just for fun~~
- find character width calculation and character position offset problem in 8bpp mode.Fixed it.
Standard ASCII , ©,cyrillic, CJK punctuations , Common Chinese characters , full-width ASCII characters:
./ttf2ugui --font=SourceHanSansCN_Medium.otf --dpi=75 --size=12 --dump --char=32-126,169,1042-1103,8208-8303,12289-12329,19968-40943,65281-65374 --show="你好,世界!"
You can use the tool without any additional operations,but if you wanna see a right unicode previews with --show="xxxx".Turn on the utf8 support in Windows:
- Open the "Control Panel" (you can search for "Control Panel" in the Start menu).
- Click on "Clock and Region" (or "Region").
- Click on the "Region" option.
- In the window that pops up, select the "Administrative" tab.
- Click the "Change system locale" button.
- In the new dialog box, check the option "Beta: Use Unicode UTF-8 for worldwide language support (U)".
- Click "OK", and you may need to restart your computer.
This is my version of ttf2gui, modified for my uGUI fork.
Adds UTF8 compatibility and supports the custom font structure used in my uGUI version.
Not compatible with the original!
uGUI is a free open source graphics library for embedded systems.
To display text, it uses bitmap/raster fonts, that are included in application as C-language structs & arrays.
uGUI includes some fonts in itself, but I wanted to use some TrueType fonts.
I didn't find a tool that would convert a .ttf file into C structures used by uGUI easily, so I wrote one using Freetype library.
This is a simple utility to convert TrueType fonts into uGUI compatible structures.
It reads font file, renders each character into bitmap and outputs it as uGUI compatible C structure.
Optionally it can display ascii art sample of font by using UGUI to render pixels as '*' with ansi escape sequences.
Fonts generated with 8BPP show in blue pixels with less then 100% fill.
Please remember to respect font copyrights when converting.
Examples:
./ttf2ugui --font=Luna.ttf --dpi=140 --size=14 --dump
Results are in Luna.c and Luna.h, just compile the .c and include .h in your uGUI application.
./ttf2ugui --font=Luna.ttf --dpi=140 --size=14 --show="aString"
./ttf2ugui --font=Luna.ttf --dpi=140 --size=14 --show="aString" --bpp=8
./ttf2ugui --font=/System/Library/Fonts/Supplemental/Arial.ttf --dpi=140 --size=14
./ttf2ugui --font=C:\Windows\Fonts\Arial.ttf --dpi=140 --size=14
./ttf2ugui --dump --font=arial.ttf --size=14 --chars=32,48-57
./ttf2ugui --dump --font=arial.ttf --size=14 --chars=32,48-57,65-90
./ttf2ugui --dump --font=arial.ttf --size=14 --chars=32-126,1042-1103
./ttf2ugui --dump --font=arial.ttf --size=14 --chars=32-126,169,1042-1103
"--chars" use Unicode or ASCII codes.
To compile, freetype library is needed.
Easiest way to get is to install suitable package for your operating system.
- For FreeBSD, install "print/freetype2".
- For Debian, install libfreetype6-dev with apt-get.
- For MacOS, install freetype with brew.
- For Windows, install cygwin64 and add these packages: make gcc-core libfreetype-devel
There's a precompiled build for Windows (ttf2ugui-win.zip)
Then, just type "make".