https://github.com/harfbuzz/harfbuzz/tree/11.2.1 User Manual https://harfbuzz.github.io/ hb-shape unifont-16.0.04.otf "नमस्ते" hb-shape unifont-16.0.04.otf "नमस्ते" --no-glyph-names --show-extents --output-format=json [ {"g":2345,"cl":0,"dx":0,"dy":0,"ax":64,"ay":0,"xb":0,"yb":44,"w":64,"h":-40}, {"g":2351,"cl":1,"dx":0,"dy":0,"ax":64,"ay":0,"xb":0,"yb":44,"w":64,"h":-40}, {"g":2361,"cl":2,"dx":0,"dy":0,"ax":64,"ay":0,"xb":0,"yb":44,"w":64,"h":-40}, {"g":2382,"cl":2,"dx":0,"dy":0,"ax":0,"ay":0,"xb":-28,"yb":4,"w":16,"h":-12}, {"g":2341,"cl":4,"dx":0,"dy":0,"ax":64,"ay":0,"xb":0,"yb":44,"w":64,"h":-40}, {"g":2376,"cl":4,"dx":0,"dy":0,"ax":0,"ay":0,"xb":-52,"yb":56,"w":24,"h":-12} ] hb-view unifont-16.0.04.otf "नमस्ते" ~/git/bdf2ttf/bdf2ttf -v unifont.ttf ~/git/bdf2ttf/sample.ini ../bdf/unifont.bdf hb-shape unifont.ttf "नमस्ते" --no-glyph-names --show-extents --output-format=json hb-shape unifont-15.1.05.otf "नमस्ते" --font-size=16 --output-format=json > test.json [ {"g":"gid2345","cl":0,"dx":0,"dy":0,"ax":16,"ay":0}, {"g":"gid2351","cl":1,"dx":0,"dy":0,"ax":16,"ay":0}, {"g":"gid2361","cl":2,"dx":0,"dy":0,"ax":16,"ay":0}, {"g":"gid2382","cl":2,"dx":0,"dy":0,"ax":0,"ay":0}, {"g":"gid2341","cl":4,"dx":0,"dy":0,"ax":16,"ay":0}, {"g":"gid2376","cl":4,"dx":0,"dy":0,"ax":0,"ay":0} ] static const unsigned char teststr[] U8X8_PROGMEM = { 0x09, 0x28, 0x00, 0x00, // u8g2_DrawGlyph(&u8g2, 0, 0, 2344); 0x09, 0x2e, 0x10, 0x00, // u8g2_DrawGlyph(&u8g2, 16, 0, 2350); 0x09, 0x38, 0x10, 0x00, // u8g2_DrawGlyph(&u8g2, 32, 0, 2360); 0x09, 0x4d, 0x00, 0x00, // u8g2_DrawGlyph(&u8g2, 32, 0, 2381); 0x09, 0x24, 0x10, 0x00, // u8g2_DrawGlyph(&u8g2, 48, 0, 2340); 0x09, 0x47, 0x00, 0x00, // u8g2_DrawGlyph(&u8g2, 48, 0, 2375); 0x00, 0x00 // end of binary }; Further tests: https://github.com/olikraus/u8g2/issues/1015 അഷ്ഹദ് static const unsigned char testarabic[] U8X8_PROGMEM = { 0x0d, 0x05, 0x00, 0x00, // u8g2_DrawGlyph(&u8g2, 0, 0, 3333); 0x0d, 0x37, 0x10, 0x00, // u8g2_DrawGlyph(&u8g2, 16, 0, 3383); 0x0d, 0x4d, 0x00, 0x00, // u8g2_DrawGlyph(&u8g2, 16, 0, 3405); 0x0d, 0x39, 0x10, 0x00, // u8g2_DrawGlyph(&u8g2, 32, 0, 3385); 0x0d, 0x26, 0x10, 0x00, // u8g2_DrawGlyph(&u8g2, 48, 0, 3366); 0x0d, 0x4d, 0x00, 0x00, // u8g2_DrawGlyph(&u8g2, 48, 0, 3405); 0x00, 0x00 // end of binary }; https://github.com/olikraus/u8g2/issues/640 String msg = "ﺍﻟﺸُﻮﻛُﻮﻻَﺗَﺔ أﻭ ﺍﻟﺸُﻜُﻮﻻَﺗَﺔ أﻭ ﺍﻟﺸِﻴﻜُﻮﻻَﺗَﺔ أﻭ ﺍﻟﺸﻮﻛﻮﻻ أﻭ ﺍﻟﺸﻜﻼﻁ"; //String msg = "Hello world! This is a test string."; arabic "Hello World", u8g2_font_unifont_t_arabic مرحبًا static const unsigned char testarabic[] U8X8_PROGMEM = { 0x06, 0x27, 0x00, 0x00, // u8g2_DrawGlyph(&u8g2, 0, 0, 1575); 0x06, 0x28, 0x08, 0x00, // u8g2_DrawGlyph(&u8g2, 8, 0, 1576); 0x06, 0x4b, 0x00, 0x00, // u8g2_DrawGlyph(&u8g2, 8, 0, 1611); 0x06, 0x2d, 0x08, 0x00, // u8g2_DrawGlyph(&u8g2, 16, 0, 1581); 0x06, 0x31, 0x08, 0x00, // u8g2_DrawGlyph(&u8g2, 24, 0, 1585); 0x06, 0x45, 0x08, 0x00, // u8g2_DrawGlyph(&u8g2, 32, 0, 1605); 0x00, 0x00 // end of binary }; hb-shape unifont-15.1.05.otf "नमस्ते" --font-size=16 --output-format=json | ./hbshape2u8g2 "नमस्ते" teststr static const unsigned char teststr[] U8X8_PROGMEM = { // "नमस्ते" 0x09, 0x28, 0x00, 0x00, // u8g2_DrawGlyph(&u8g2, 0, 0, 2344); 0x09, 0x2e, 0x10, 0x00, // u8g2_DrawGlyph(&u8g2, 16, 0, 2350); 0x09, 0x38, 0x10, 0x00, // u8g2_DrawGlyph(&u8g2, 32, 0, 2360); 0x09, 0x4d, 0x00, 0x00, // u8g2_DrawGlyph(&u8g2, 32, 0, 2381); 0x09, 0x24, 0x10, 0x00, // u8g2_DrawGlyph(&u8g2, 48, 0, 2340); 0x09, 0x47, 0x00, 0x00, // u8g2_DrawGlyph(&u8g2, 48, 0, 2375); 0x00, 0x00 // end of binary };