This repository has been archived by the owner on Dec 2, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
UTF 8 Support
Rykehuss edited this page Apr 20, 2017
·
33 revisions
One of Nuklear significant features is UTF-8 support. For use it you may complete several steps:
Step 1
Obtain font, which contain characters you may use.
Step 2
Create glyph range table for your language. As example for Japanese (thanks to vaiorabbit):
const nk_rune nk_font_japanese_glyph_ranges[] = {
0x0020, 0x00FF,
0x2200, 0x22FF, // Mathematical Operators
0x3000, 0x303F, // CJK Symbols and Punctuation
0x3040, 0x309F, // Hiragana
0x30A0, 0x30FF, // Katakana
0x0370, 0x03FF, // Greek and Coptic
0xFF00, 0xFFEF, // Halfwidth and Fullwidth Forms
0x4E00, 0x9FFF, // CJK Unified Ideographs
0
};
Glyphs ranges for different languages and variedsymbol you can find there.
Nuklear have some functions for creating glyph codepoint's by default:
-
nk_font_chinese_glyph_ranges()
for Chinese -
nk_font_cyrillic_glyph_ranges()
for Cirillic -
nk_font_korean_glyph_ranges()
for Korean
Step 3
Create nk_font_config structure:
struct nk_font_config config = nk_font_config(14);
config.oversample_h = 1;
config.oversample_v = 1;
Step 4
Set glyph range table to config
- for built-in functions
config.range = nk_font_cyrillic_glyph_ranges();
- for custom table
config.range = &nk_font_japanese_glyph_ranges[0];
Step 5
Load font with customized config
nk_sdl_font_stash_begin(&atlas);
struct nk_font *font = nk_font_atlas_add_from_file(atlas, "path_to_your_font", 14, &config);
nk_sdl_font_stash_end();
nk_style_set_font(ctx, &font->handle);
Thats all!
Now you can use UTF-8 encoding symbols in your's apps.
if (nk_button_label(ctx, u8"Кнопка"))
fprintf(stdout, "button pressed\n");