mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
Update documentation
This commit is contained in:
parent
85dab1a680
commit
470200ee5c
@ -10,13 +10,13 @@ TL;DR;
|
|||||||
ImGui is highly portable and only requires a few things to run:
|
ImGui is highly portable and only requires a few things to run:
|
||||||
- Providing mouse/keyboard inputs
|
- Providing mouse/keyboard inputs
|
||||||
- Load the font atlas texture into GPU memory
|
- Load the font atlas texture into GPU memory
|
||||||
- Providing a render function to process the drawing commands (we rendere indexed textured triangles)
|
- Providing a render function to render indexed textured triangles
|
||||||
- Extra just as clipboard support, mouse cursor supports, Windows IME support.
|
- Optional: clipboard support, mouse cursor supports, Windows IME support, etc.
|
||||||
So this is essentially what those examples are doing + the obligatory cruft for portability.
|
So this is essentially what those examples are doing + the obligatory cruft for portability.
|
||||||
|
|
||||||
Unfortunately in 2015 it is still a massive pain to create and maintain portable build files using
|
Unfortunately in 2015 it is still a massive pain to create and maintain portable build files using
|
||||||
external library like the ones we're using here.
|
external library like the ones we're using here to provide 3D rendering.
|
||||||
For most example here I choose to provide Visual Studio 10 .sln files and Makefile for Linux/OSX.
|
For most examples here I choose to provide Visual Studio 10 .sln files and Makefile for Linux/OSX.
|
||||||
Please let me know if they don't work with your setup!
|
Please let me know if they don't work with your setup!
|
||||||
You can probably just import the imgui_impl_xxx.cpp/.h files into your own codebase or compile those
|
You can probably just import the imgui_impl_xxx.cpp/.h files into your own codebase or compile those
|
||||||
directly with a command-line compiler.
|
directly with a command-line compiler.
|
||||||
|
@ -3,31 +3,69 @@
|
|||||||
Those are only provided as a convenience, you can load your own .TTF files.
|
Those are only provided as a convenience, you can load your own .TTF files.
|
||||||
|
|
||||||
---------------------------------
|
---------------------------------
|
||||||
LINKS
|
LOADING INSTRUCTIONS
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
Typefaces for source code beautification
|
Load default font with:
|
||||||
https://github.com/chrissimpkins/codeface
|
|
||||||
|
|
||||||
Proggy Programming Fonts
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
http://upperbounds.net
|
io.Fonts->AddFontDefault();
|
||||||
|
|
||||||
|
Load .TTF file with:
|
||||||
|
|
||||||
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
|
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels);
|
||||||
|
|
||||||
|
Detailed options:
|
||||||
|
|
||||||
|
ImFontConfig config;
|
||||||
|
config.OversampleH = 3;
|
||||||
|
config.OversampleV = 3;
|
||||||
|
config.GlyphExtraSpacing.x = 1.0f;
|
||||||
|
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels, &config);
|
||||||
|
|
||||||
|
Combine two fonts into one:
|
||||||
|
|
||||||
|
// Load main font
|
||||||
|
io.Fonts->AddFontDefault();
|
||||||
|
|
||||||
|
// Add character ranges and merge into main font
|
||||||
|
ImWchar ranges[] = { 0xf000, 0xf3ff, 0 };
|
||||||
|
ImFontConfig config;
|
||||||
|
config.MergeMode = true;
|
||||||
|
io.Fonts->AddFontFromFileTTF("fontawesome-webfont.ttf", 16.0f, &config, ranges);
|
||||||
|
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels, &config, io.Fonts->GetGlyphRangesJapanese());
|
||||||
|
|
||||||
|
Add a fourth parameter to bake specific font ranges only:
|
||||||
|
|
||||||
|
// Basic Latin, Extended Latin
|
||||||
|
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels, NULL, io.Fonts->GetGlyphRangesDefault());
|
||||||
|
|
||||||
Inconsolata
|
// Include full set of about 21000 CJK Unified Ideographs
|
||||||
http://www.levien.com/type/myfonts/inconsolata.html
|
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels, NULL, io.Fonts->GetGlyphRangesJapanese());
|
||||||
|
|
||||||
|
// Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs
|
||||||
|
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels, NULL, io.Fonts->GetGlyphRangesChinese());
|
||||||
|
|
||||||
Adobe Source Code Pro: Monospaced font family for user interface and coding environments
|
Offset font vertically by altering the io.Font->DisplayOffset value:
|
||||||
https://github.com/adobe-fonts/source-code-pro
|
|
||||||
|
|
||||||
Monospace/Fixed Width Programmer's Fonts
|
ImFont* font = io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels);
|
||||||
http://www.lowing.org/fonts/
|
font->DisplayOffset.y += 1; // Render 1 pixel down
|
||||||
|
|
||||||
(Japanese) M+ fonts by Coji Morishita are free and include most useful Kanjis you would need.
|
|
||||||
http://mplus-fonts.sourceforge.jp/mplus-outline-fonts/index-en.html
|
|
||||||
|
|
||||||
Or use Arial Unicode or other Unicode fonts provided with Windows for full characters coverage (not sure of their licensing).
|
|
||||||
|
|
||||||
---------------------------------
|
---------------------------------
|
||||||
INCLUDED FONTS
|
EMBED A FONT IN SOURCE CODE
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Compile and use 'binary_to_compressed_c.cpp' to create a compressed C style array. Then load the font with:
|
||||||
|
|
||||||
|
ImFont* font = io.Fonts->AddFontFromMemoryCompressedTTF(compressed_data, compressed_data_size, size_pixels, ...);
|
||||||
|
|
||||||
|
Or
|
||||||
|
|
||||||
|
ImFont* font = io.Fonts->AddFontFromMemoryCompressedBase85TTF(compressed_data_base85, size_pixels, ...);
|
||||||
|
|
||||||
|
---------------------------------
|
||||||
|
INCLUDED FONT FILES
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
Cousine-Regular.ttf
|
Cousine-Regular.ttf
|
||||||
@ -54,52 +92,25 @@
|
|||||||
SIL OPEN FONT LICENSE Version 1.1
|
SIL OPEN FONT LICENSE Version 1.1
|
||||||
|
|
||||||
---------------------------------
|
---------------------------------
|
||||||
LOADING INSTRUCTIONS
|
LINKS
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
Load default font with:
|
Typefaces for source code beautification
|
||||||
|
https://github.com/chrissimpkins/codeface
|
||||||
|
|
||||||
ImGuiIO& io = ImGui::GetIO();
|
Proggy Programming Fonts
|
||||||
io.Fonts->AddFontDefault();
|
http://upperbounds.net
|
||||||
|
|
||||||
|
Inconsolata
|
||||||
|
http://www.levien.com/type/myfonts/inconsolata.html
|
||||||
|
|
||||||
Load .TTF file with:
|
Adobe Source Code Pro: Monospaced font family for user interface and coding environments
|
||||||
|
https://github.com/adobe-fonts/source-code-pro
|
||||||
|
|
||||||
ImGuiIO& io = ImGui::GetIO();
|
Monospace/Fixed Width Programmer's Fonts
|
||||||
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels);
|
http://www.lowing.org/fonts/
|
||||||
|
|
||||||
Detailed options:
|
|
||||||
|
|
||||||
ImFontConfig config;
|
(Japanese) M+ fonts by Coji Morishita are free and include most useful Kanjis you would need.
|
||||||
config.OversampleH = 3;
|
http://mplus-fonts.sourceforge.jp/mplus-outline-fonts/index-en.html
|
||||||
config.OversampleV = 3;
|
|
||||||
config.GlyphExtraSpacing.x = 1.0f;
|
|
||||||
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels, &config);
|
|
||||||
|
|
||||||
Merge two fonts:
|
|
||||||
|
|
||||||
// Load main font
|
|
||||||
io.Fonts->AddFontDefault();
|
|
||||||
|
|
||||||
// Add character ranges and merge into main font
|
|
||||||
ImWchar ranges[] = { 0xf000, 0xf3ff, 0 };
|
|
||||||
ImFontConfig config;
|
|
||||||
config.MergeMode = true;
|
|
||||||
io.Fonts->AddFontFromFileTTF("fontawesome-webfont.ttf", 16.0f, &config, ranges);
|
|
||||||
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels, &config, io.Fonts->GetGlyphRangesJapanese());
|
|
||||||
|
|
||||||
Add a fourth parameter to bake specific font ranges only:
|
|
||||||
|
|
||||||
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels, NULL, io.Fonts->GetGlyphRangesDefault()); // Basic Latin, Extended Latin
|
|
||||||
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels, NULL, io.Fonts->GetGlyphRangesJapanese()); // Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs
|
|
||||||
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels, NULL, io.Fonts->GetGlyphRangesChinese()); // Include full set of about 21000 CJK Unified Ideographs
|
|
||||||
|
|
||||||
Offset font vertically by altering the io.Font->DisplayOffset value:
|
|
||||||
|
|
||||||
ImFont* font = io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels);
|
|
||||||
font->DisplayOffset.y += 1; // Render 1 pixel down
|
|
||||||
|
|
||||||
If you want to embed the font in source code (e.g. in your engine, so it doesn't have file-system dependencies);
|
|
||||||
Compile and use 'binary_to_compressed_c.cpp' to create a compressed C style array. Then load the font with:
|
|
||||||
|
|
||||||
ImFont* font = io.Fonts->AddFontFromMemoryCompressedTTF(compressed_data, compressed_data_size, size_pixels, ...);
|
|
||||||
|
|
||||||
|
Or use Arial Unicode or other Unicode fonts provided with Windows for full characters coverage (not sure of their licensing).
|
||||||
|
Loading…
Reference in New Issue
Block a user