|
@@ -3451,28 +3451,28 @@ struct ImFontAtlas
|
|
struct ImFont
|
|
struct ImFont
|
|
{
|
|
{
|
|
// [Internal] Members: Hot ~20/24 bytes (for CalcTextSize)
|
|
// [Internal] Members: Hot ~20/24 bytes (for CalcTextSize)
|
|
- ImVector<float> IndexAdvanceX; // 12-16 // out // // Sparse. Glyphs->AdvanceX in a directly indexable way (cache-friendly for CalcTextSize functions which only this info, and are often bottleneck in large UI).
|
|
|
|
|
|
+ ImVector<float> IndexAdvanceX; // 12-16 // out // Sparse. Glyphs->AdvanceX in a directly indexable way (cache-friendly for CalcTextSize functions which only this info, and are often bottleneck in large UI).
|
|
float FallbackAdvanceX; // 4 // out // = FallbackGlyph->AdvanceX
|
|
float FallbackAdvanceX; // 4 // out // = FallbackGlyph->AdvanceX
|
|
- float FontSize; // 4 // in // // Height of characters/line, set during loading (don't change after loading)
|
|
|
|
|
|
+ float FontSize; // 4 // in // Height of characters/line, set during loading (don't change after loading)
|
|
|
|
|
|
// [Internal] Members: Hot ~28/40 bytes (for RenderText loop)
|
|
// [Internal] Members: Hot ~28/40 bytes (for RenderText loop)
|
|
- ImVector<ImU16> IndexLookup; // 12-16 // out // // Sparse. Index glyphs by Unicode code-point.
|
|
|
|
- ImVector<ImFontGlyph> Glyphs; // 12-16 // out // // All glyphs.
|
|
|
|
|
|
+ ImVector<ImU16> IndexLookup; // 12-16 // out // Sparse. Index glyphs by Unicode code-point.
|
|
|
|
+ ImVector<ImFontGlyph> Glyphs; // 12-16 // out // All glyphs.
|
|
const ImFontGlyph* FallbackGlyph; // 4-8 // out // = FindGlyph(FontFallbackChar)
|
|
const ImFontGlyph* FallbackGlyph; // 4-8 // out // = FindGlyph(FontFallbackChar)
|
|
|
|
|
|
// [Internal] Members: Cold ~32/40 bytes
|
|
// [Internal] Members: Cold ~32/40 bytes
|
|
// Conceptually ConfigData[] is the list of font sources merged to create this font.
|
|
// Conceptually ConfigData[] is the list of font sources merged to create this font.
|
|
- ImFontAtlas* ContainerAtlas; // 4-8 // out // // What we has been loaded into
|
|
|
|
- const ImFontConfig* ConfigData; // 4-8 // in // // Pointer within ContainerAtlas->ConfigData to ConfigDataCount instances
|
|
|
|
- short ConfigDataCount; // 2 // in // ~ 1 // Number of ImFontConfig involved in creating this font. Bigger than 1 when merging multiple font sources into one ImFont.
|
|
|
|
|
|
+ ImFontAtlas* ContainerAtlas; // 4-8 // out // What we has been loaded into
|
|
|
|
+ const ImFontConfig* ConfigData; // 4-8 // in // Pointer within ContainerAtlas->ConfigData to ConfigDataCount instances
|
|
|
|
+ short ConfigDataCount; // 2 // in // Number of ImFontConfig involved in creating this font. Usually 1, or >1 when merging multiple font sources into one ImFont.
|
|
short EllipsisCharCount; // 1 // out // 1 or 3
|
|
short EllipsisCharCount; // 1 // out // 1 or 3
|
|
- ImWchar EllipsisChar; // 2-4 // out // = '...'/'.'// Character used for ellipsis rendering.
|
|
|
|
- ImWchar FallbackChar; // 2-4 // out // = FFFD/'?' // Character used if a glyph isn't found.
|
|
|
|
- float EllipsisWidth; // 4 // out // Width
|
|
|
|
- float EllipsisCharStep; // 4 // out // Step between characters when EllipsisCount > 0
|
|
|
|
- float Scale; // 4 // in // = 1.f // Base font scale, multiplied by the per-window font scale which you can adjust with SetWindowFontScale()
|
|
|
|
- float Ascent, Descent; // 4+4 // out // // Ascent: distance from top to bottom of e.g. 'A' [0..FontSize] (unscaled)
|
|
|
|
- int MetricsTotalSurface;// 4 // out // // Total surface in pixels to get an idea of the font rasterization/texture cost (not exact, we approximate the cost of padding between glyphs)
|
|
|
|
|
|
+ ImWchar EllipsisChar; // 2-4 // out // Character used for ellipsis rendering ('...').
|
|
|
|
+ ImWchar FallbackChar; // 2-4 // out // Character used if a glyph isn't found (U+FFFD, '?')
|
|
|
|
+ float EllipsisWidth; // 4 // out // Total ellipsis Width
|
|
|
|
+ float EllipsisCharStep; // 4 // out // Step between characters when EllipsisCount > 0
|
|
|
|
+ float Scale; // 4 // in // Base font scale (1.0f), multiplied by the per-window font scale which you can adjust with SetWindowFontScale()
|
|
|
|
+ float Ascent, Descent; // 4+4 // out // Ascent: distance from top to bottom of e.g. 'A' [0..FontSize] (unscaled)
|
|
|
|
+ int MetricsTotalSurface;// 4 // out // Total surface in pixels to get an idea of the font rasterization/texture cost (not exact, we approximate the cost of padding between glyphs)
|
|
bool DirtyLookupTables; // 1 // out //
|
|
bool DirtyLookupTables; // 1 // out //
|
|
ImU8 Used8kPagesMap[(IM_UNICODE_CODEPOINT_MAX+1)/8192/8]; // 1 bytes if ImWchar=ImWchar16, 16 bytes if ImWchar==ImWchar32. Store 1-bit for each block of 4K codepoints that has one active glyph. This is mainly used to facilitate iterations across all used codepoints.
|
|
ImU8 Used8kPagesMap[(IM_UNICODE_CODEPOINT_MAX+1)/8192/8]; // 1 bytes if ImWchar=ImWchar16, 16 bytes if ImWchar==ImWchar32. Store 1-bit for each block of 4K codepoints that has one active glyph. This is mainly used to facilitate iterations across all used codepoints.
|
|
|
|
|
|
@@ -3481,9 +3481,9 @@ struct ImFont
|
|
IMGUI_API ~ImFont();
|
|
IMGUI_API ~ImFont();
|
|
IMGUI_API const ImFontGlyph*FindGlyph(ImWchar c);
|
|
IMGUI_API const ImFontGlyph*FindGlyph(ImWchar c);
|
|
IMGUI_API const ImFontGlyph*FindGlyphNoFallback(ImWchar c);
|
|
IMGUI_API const ImFontGlyph*FindGlyphNoFallback(ImWchar c);
|
|
- float GetCharAdvance(ImWchar c) { return ((int)c < IndexAdvanceX.Size) ? IndexAdvanceX[(int)c] : FallbackAdvanceX; }
|
|
|
|
- bool IsLoaded() const { return ContainerAtlas != NULL; }
|
|
|
|
- const char* GetDebugName() const { return ConfigData ? ConfigData->Name : "<unknown>"; }
|
|
|
|
|
|
+ float GetCharAdvance(ImWchar c) { return ((int)c < IndexAdvanceX.Size) ? IndexAdvanceX[(int)c] : FallbackAdvanceX; }
|
|
|
|
+ bool IsLoaded() const { return ContainerAtlas != NULL; }
|
|
|
|
+ const char* GetDebugName() const { return ConfigData ? ConfigData->Name : "<unknown>"; }
|
|
|
|
|
|
// 'max_width' stops rendering after a certain width (could be turned into a 2d size). FLT_MAX to disable.
|
|
// 'max_width' stops rendering after a certain width (could be turned into a 2d size). FLT_MAX to disable.
|
|
// 'wrap_width' enable automatic word-wrapping across multiple lines to fit into given width. 0.0f to disable.
|
|
// 'wrap_width' enable automatic word-wrapping across multiple lines to fit into given width. 0.0f to disable.
|