|
@@ -3200,7 +3200,25 @@ void ImFont::BuildLookupTable()
|
|
|
SetGlyphVisible((ImWchar)' ', false);
|
|
|
SetGlyphVisible((ImWchar)'\t', false);
|
|
|
|
|
|
- // Ellipsis character is required for rendering elided text. We prefer using U+2026 (horizontal ellipsis).
|
|
|
+ // Setup Fallback character
|
|
|
+ const ImWchar fallback_chars[] = { (ImWchar)IM_UNICODE_CODEPOINT_INVALID, (ImWchar)'?', (ImWchar)' ' };
|
|
|
+ FallbackGlyph = FindGlyphNoFallback(FallbackChar);
|
|
|
+ if (FallbackGlyph == NULL)
|
|
|
+ {
|
|
|
+ FallbackChar = FindFirstExistingGlyph(this, fallback_chars, IM_ARRAYSIZE(fallback_chars));
|
|
|
+ FallbackGlyph = FindGlyphNoFallback(FallbackChar);
|
|
|
+ if (FallbackGlyph == NULL)
|
|
|
+ {
|
|
|
+ FallbackGlyph = &Glyphs.back();
|
|
|
+ FallbackChar = (ImWchar)FallbackGlyph->Codepoint;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ FallbackAdvanceX = FallbackGlyph->AdvanceX;
|
|
|
+ for (int i = 0; i < max_codepoint + 1; i++)
|
|
|
+ if (IndexAdvanceX[i] < 0.0f)
|
|
|
+ IndexAdvanceX[i] = FallbackAdvanceX;
|
|
|
+
|
|
|
+ // Setup Ellipsis character. It is required for rendering elided text. We prefer using U+2026 (horizontal ellipsis).
|
|
|
// However some old fonts may contain ellipsis at U+0085. Here we auto-detect most suitable ellipsis character.
|
|
|
// FIXME: Note that 0x2026 is rarely included in our font ranges. Because of this we are more likely to use three individual dots.
|
|
|
const ImWchar ellipsis_chars[] = { (ImWchar)0x2026, (ImWchar)0x0085 };
|
|
@@ -3221,25 +3239,6 @@ void ImFont::BuildLookupTable()
|
|
|
EllipsisCharStep = (glyph->X1 - glyph->X0) + 1.0f;
|
|
|
EllipsisWidth = EllipsisCharStep * 3.0f - 1.0f;
|
|
|
}
|
|
|
-
|
|
|
- // Setup fallback character
|
|
|
- const ImWchar fallback_chars[] = { (ImWchar)IM_UNICODE_CODEPOINT_INVALID, (ImWchar)'?', (ImWchar)' ' };
|
|
|
- FallbackGlyph = FindGlyphNoFallback(FallbackChar);
|
|
|
- if (FallbackGlyph == NULL)
|
|
|
- {
|
|
|
- FallbackChar = FindFirstExistingGlyph(this, fallback_chars, IM_ARRAYSIZE(fallback_chars));
|
|
|
- FallbackGlyph = FindGlyphNoFallback(FallbackChar);
|
|
|
- if (FallbackGlyph == NULL)
|
|
|
- {
|
|
|
- FallbackGlyph = &Glyphs.back();
|
|
|
- FallbackChar = (ImWchar)FallbackGlyph->Codepoint;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- FallbackAdvanceX = FallbackGlyph->AdvanceX;
|
|
|
- for (int i = 0; i < max_codepoint + 1; i++)
|
|
|
- if (IndexAdvanceX[i] < 0.0f)
|
|
|
- IndexAdvanceX[i] = FallbackAdvanceX;
|
|
|
}
|
|
|
|
|
|
// API is designed this way to avoid exposing the 4K page size
|