From 470200ee5c7810e8c832897b359b7fed7c4aa91d Mon Sep 17 00:00:00 2001 From: ocornut Date: Wed, 5 Aug 2015 21:59:07 -0600 Subject: [PATCH] Update documentation --- examples/README.txt | 8 +-- extra_fonts/README.txt | 129 ++++++++++++++++++++++------------------- 2 files changed, 74 insertions(+), 63 deletions(-) diff --git a/examples/README.txt b/examples/README.txt index aa1a392bc..4313356cc 100644 --- a/examples/README.txt +++ b/examples/README.txt @@ -10,13 +10,13 @@ TL;DR; ImGui is highly portable and only requires a few things to run: - Providing mouse/keyboard inputs - Load the font atlas texture into GPU memory - - Providing a render function to process the drawing commands (we rendere indexed textured triangles) - - Extra just as clipboard support, mouse cursor supports, Windows IME support. + - Providing a render function to render indexed textured triangles + - Optional: clipboard support, mouse cursor supports, Windows IME support, etc. 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 -external library like the ones we're using here. -For most example here I choose to provide Visual Studio 10 .sln files and Makefile for Linux/OSX. +external library like the ones we're using here to provide 3D rendering. +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! 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. diff --git a/extra_fonts/README.txt b/extra_fonts/README.txt index 2a8e0da6e..586fb4ed5 100644 --- a/extra_fonts/README.txt +++ b/extra_fonts/README.txt @@ -3,31 +3,69 @@ Those are only provided as a convenience, you can load your own .TTF files. --------------------------------- - LINKS + LOADING INSTRUCTIONS --------------------------------- - Typefaces for source code beautification - https://github.com/chrissimpkins/codeface + Load default font with: - Proggy Programming Fonts - http://upperbounds.net + ImGuiIO& io = ImGui::GetIO(); + 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 - http://www.levien.com/type/myfonts/inconsolata.html + // 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()); - Adobe Source Code Pro: Monospaced font family for user interface and coding environments - https://github.com/adobe-fonts/source-code-pro + Offset font vertically by altering the io.Font->DisplayOffset value: - Monospace/Fixed Width Programmer's Fonts - http://www.lowing.org/fonts/ - - (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). + 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 @@ -54,52 +92,25 @@ 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(); - io.Fonts->AddFontDefault(); + Proggy Programming Fonts + 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(); - io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels); - - Detailed options: + Monospace/Fixed Width Programmer's Fonts + http://www.lowing.org/fonts/ - ImFontConfig config; - config.OversampleH = 3; - 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, ...); + (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).