Update documentation

This commit is contained in:
ocornut 2015-08-05 21:59:07 -06:00
parent 85dab1a680
commit 470200ee5c
2 changed files with 74 additions and 63 deletions

View File

@ -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.

View File

@ -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();
Inconsolata Load .TTF file with:
http://www.levien.com/type/myfonts/inconsolata.html
Adobe Source Code Pro: Monospaced font family for user interface and coding environments ImGuiIO& io = ImGui::GetIO();
https://github.com/adobe-fonts/source-code-pro io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels);
Monospace/Fixed Width Programmer's Fonts Detailed options:
http://www.lowing.org/fonts/
(Japanese) M+ fonts by Coji Morishita are free and include most useful Kanjis you would need. ImFontConfig config;
http://mplus-fonts.sourceforge.jp/mplus-outline-fonts/index-en.html config.OversampleH = 3;
config.OversampleV = 3;
config.GlyphExtraSpacing.x = 1.0f;
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels, &config);
Or use Arial Unicode or other Unicode fonts provided with Windows for full characters coverage (not sure of their licensing). 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());
// Include full set of about 21000 CJK Unified Ideographs
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());
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
--------------------------------- ---------------------------------
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
Load .TTF file with: Inconsolata
http://www.levien.com/type/myfonts/inconsolata.html
ImGuiIO& io = ImGui::GetIO(); Adobe Source Code Pro: Monospaced font family for user interface and coding environments
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels); https://github.com/adobe-fonts/source-code-pro
Detailed options: Monospace/Fixed Width Programmer's Fonts
http://www.lowing.org/fonts/
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).