Cleanup extra_fonts/ folder
@ -218,7 +218,6 @@ void InitImGui()
|
|||||||
io.Font = new ImFont();
|
io.Font = new ImFont();
|
||||||
io.Font->LoadDefault();
|
io.Font->LoadDefault();
|
||||||
//io.Font->LoadFromFileTTF("myfont.ttf", font_size_px, ImFont::GetGlyphRangesDefault());
|
//io.Font->LoadFromFileTTF("myfont.ttf", font_size_px, ImFont::GetGlyphRangesDefault());
|
||||||
io.Font->LoadFromFileTTF("../../extra_fonts/ArialUni.ttf", 20.0f, ImFont::GetGlyphRangesDefault());
|
|
||||||
//io.Font->DisplayOffset.y += 0.0f;
|
//io.Font->DisplayOffset.y += 0.0f;
|
||||||
IM_ASSERT(io.Font->IsLoaded());
|
IM_ASSERT(io.Font->IsLoaded());
|
||||||
|
|
||||||
|
BIN
extra_fonts/Karla-Regular.ttf
Normal file
BIN
extra_fonts/ProggyClean.ttf
Normal file
BIN
extra_fonts/ProggyTiny.ttf
Normal file
@ -1,100 +1,30 @@
|
|||||||
|
|
||||||
Extra fonts for ImGui.
|
---------------------------------
|
||||||
THOSE FONTS ARE OPTIONAL.
|
EXTRA FONTS FOR IMGUI
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
ImGui embeds a copy of 'proggy_clean' that you can use without any external files.
|
ImGui embeds a copy of 'ProggyClean.ttf' that you can use without any external files.
|
||||||
Export your own font with bmfont (www.angelcode.com/products/bmfont).
|
|
||||||
|
|
||||||
bmfont reads fonts (.ttf, .fon, etc.) and output a .fnt file and a texture file, e.g:
|
Load .TTF file with:
|
||||||
|
|
||||||
proggy_clean.fon --> [bmfont] ---> proggy_clean_13.fnt
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
proggy_clean_13.png
|
io.Font = new ImFont();
|
||||||
|
io.Font->LoadFromFileTTF("myfontfile.ttf", size_pixels);
|
||||||
|
|
||||||
If you need a free font that supports chinese/japanese characters, you can use the M+ fonts.
|
Add a third parameter to bake specific font ranges:
|
||||||
TTF and sources are availables at http://mplus-fonts.sourceforge.jp/mplus-outline-fonts.
|
|
||||||
This directory include some of the M+ fonts converted by bmfont.
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
io.Font->LoadFromFileTTF("myfontfile.ttf", size_pixels, ImFont::GetGlyphRangesDefault()); // Basic Latin, Extended Latin
|
||||||
|
io.Font->LoadFromFileTTF("myfontfile.ttf", size_pixels, ImFont::GetGlyphRangesJapanese()); // Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs
|
||||||
|
io.Font->LoadFromFileTTF("myfontfile.ttf", size_pixels, ImFont::GetGlyphRangesChinese()); // Japanese + full set of about 21000 CJK Unified Ideographs
|
||||||
|
|
||||||
Configure bmfont:
|
Offset font by altering the io.Font->DisplayOffset value:
|
||||||
|
|
||||||
- Export .fnt as Binary
|
io.Font->DisplayOffset.y += 1; // Render 1 pixel down
|
||||||
- Output .png, 32-bits (or whatever is suitable for your loader/renderer)
|
|
||||||
- Tip: uncheck "Render from TrueType outline" and "Font Smoothing" for best result with non-anti-aliased type fonts.
|
|
||||||
But you can experiment with other settings if you want anti-aliased fonts.
|
|
||||||
- Tip: use pngout.exe (http://advsys.net/ken/utils.htm) to further reduce the file size of .png files
|
|
||||||
All files in this folder have been optimised with pngout.exe
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------
|
||||||
|
RECOMMENDED SIZES
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
(A) Use font data embedded in ImGui
|
ProggyTiny.ttf Size: 10.0f Offset: Y: +1
|
||||||
|
ProggyClean.ttf Size: 13.0f Offset: Y: +1
|
||||||
|
|
||||||
// Access embedded font data
|
|
||||||
const void* fnt_data; // pointer to FNT data
|
|
||||||
unsigned fnt_size; // size of FNT data
|
|
||||||
const void* png_data; // pointer to PNG data
|
|
||||||
unsigned int png_size; // size of PNG data
|
|
||||||
ImGui::GetDefaultFontData(&fnt_data, &fnt_size, &png_data, &png_size);
|
|
||||||
|
|
||||||
1. Load the .FNT data from 'fnt_data' (NB: this is done for you by default if you don't do anything)
|
|
||||||
|
|
||||||
ImGuiIO& io = ImGui::GetIO();
|
|
||||||
io.Font = new ImFont();
|
|
||||||
io.Font->LoadFromMemory(fnt_data, fnt_size);
|
|
||||||
|
|
||||||
2. Load the .PNG data from 'png_data' into a texture
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(B) Use fonts from external files
|
|
||||||
|
|
||||||
You need to set io.Font->TexUvForWhite to UV coordinates pointing to a white pixel in the texture.
|
|
||||||
You can either locate a white pixel manually or use code at runtime to find or write one.
|
|
||||||
The OpenGL example include sample code to find a white pixel given an uncompressed 32-bits texture:
|
|
||||||
|
|
||||||
// Automatically find white pixel from the texture we just loaded
|
|
||||||
// (io.Font->TexUvForWhite needs to contains UV coordinates pointing to a white pixel in order to render solid objects)
|
|
||||||
for (int tex_data_off = 0; tex_data_off < tex_x*tex_y; tex_data_off++)
|
|
||||||
if (((unsigned int*)tex_data)[tex_data_off] == 0xffffffff)
|
|
||||||
{
|
|
||||||
io.Font->TexUvForWhite = ImVec2((float)(tex_data_off % tex_x)/(tex_x), (float)(tex_data_off / tex_x)/(tex_y));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
1. Load the .FNT data, e.g.
|
|
||||||
|
|
||||||
ImGuiIO& io = ImGui::GetIO();
|
|
||||||
|
|
||||||
// proggy_clean_13 [default]
|
|
||||||
io.Font = new ImFont();
|
|
||||||
io.Font->LoadFromFile("proggy_clean_13.fnt");
|
|
||||||
IM_ASSERT(io.Font->IsLoaded());
|
|
||||||
io.Font->TexUvForWhite = ImVec2(0.0f/256.0f,0.0f/128);
|
|
||||||
io.Font->DisplayOffset = ImVec2(0.0f, +1.0f);
|
|
||||||
|
|
||||||
// proggy_small_12
|
|
||||||
io.Font = new ImFont();
|
|
||||||
io.Font->LoadFromFile("proggy_small_12.fnt");
|
|
||||||
IM_ASSERT(io.Font->IsLoaded());
|
|
||||||
io.Font->TexUvForWhite = ImVec2(84.0f/256.0f,20.0f/64);
|
|
||||||
io.Font->DisplayOffset = ImVec2(0.0f, +2.0f);
|
|
||||||
|
|
||||||
// proggy_small_14
|
|
||||||
io.Font = new ImFont();
|
|
||||||
io.Font->LoadFromFile("proggy_small_14.fnt");
|
|
||||||
IM_ASSERT(io.Font->IsLoaded());
|
|
||||||
io.Font->TexUvForWhite = ImVec2(84.0f/256.0f,20.0f/64);
|
|
||||||
io.Font->DisplayOffset = ImVec2(0.0f, +3.0f);
|
|
||||||
|
|
||||||
// courier_new_16
|
|
||||||
io.Font->LoadFromFile("courier_new_16.fnt");
|
|
||||||
io.Font->TexUvForWhite = ImVec2(1.0f/256.0f,4.0f/128);
|
|
||||||
|
|
||||||
// courier_new_18
|
|
||||||
io.Font->LoadFromFile("courier_new_18.fnt");
|
|
||||||
io.Font->TexUvForWhite = ImVec2(4.0f/256.0f,5.0f/256);
|
|
||||||
|
|
||||||
|
|
||||||
2. Load the matching .PNG data into a texture
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
Before Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 117 KiB |
Before Width: | Height: | Size: 284 KiB |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 949 B |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 949 B |
2
imgui.h
@ -771,7 +771,7 @@ struct ImFont
|
|||||||
IMGUI_API bool IsLoaded() const { return TexPixels != NULL && !Glyphs.empty(); }
|
IMGUI_API bool IsLoaded() const { return TexPixels != NULL && !Glyphs.empty(); }
|
||||||
|
|
||||||
// Retrieve list of common Unicode ranges (2 value per range, values are inclusive, zero-terminated list)
|
// Retrieve list of common Unicode ranges (2 value per range, values are inclusive, zero-terminated list)
|
||||||
static IMGUI_API const ImWchar* GetGlyphRangesDefault(); // Basic Latin, Extended Latin + a few more
|
static IMGUI_API const ImWchar* GetGlyphRangesDefault(); // Basic Latin, Extended Latin
|
||||||
static IMGUI_API const ImWchar* GetGlyphRangesJapanese(); // Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs
|
static IMGUI_API const ImWchar* GetGlyphRangesJapanese(); // Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs
|
||||||
static IMGUI_API const ImWchar* GetGlyphRangesChinese(); // Japanese + full set of about 21000 CJK Unified Ideographs
|
static IMGUI_API const ImWchar* GetGlyphRangesChinese(); // Japanese + full set of about 21000 CJK Unified Ideographs
|
||||||
|
|
||||||
|