Browse Source

TextLayout whitespace fix.

tags/2021-05-28
jules 12 years ago
parent
commit
1a49c7fc5b
3 changed files with 13 additions and 3 deletions
  1. +10
    -1
      modules/juce_graphics/fonts/juce_TextLayout.cpp
  2. +1
    -0
      modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm
  3. +2
    -2
      modules/juce_graphics/native/juce_mac_Fonts.mm

+ 10
- 1
modules/juce_graphics/fonts/juce_TextLayout.cpp View File

@@ -307,7 +307,7 @@ namespace TextLayoutHelpers
Array <int> newGlyphs;
Array <float> xOffsets;
t.font.getGlyphPositions (t.text.trimEnd(), newGlyphs, xOffsets);
t.font.getGlyphPositions (getTrimmedEndIfNotAllWhitespace (t.text), newGlyphs, xOffsets);
if (currentRun == nullptr) currentRun = new TextLayout::Run();
if (currentLine == nullptr) currentLine = new TextLayout::Line();
@@ -543,6 +543,15 @@ namespace TextLayoutHelpers
}
}
static String getTrimmedEndIfNotAllWhitespace (const String& s)
{
String trimmed (s.trimEnd());
if (trimmed.isEmpty() && ! s.isEmpty())
trimmed = s;
return trimmed;
}
OwnedArray<Token> tokens;
int totalLines;


+ 1
- 0
modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm View File

@@ -619,6 +619,7 @@ bool CoreGraphicsContext::drawTextLayout (const AttributedString& text, const Re
CoreTextTypeLayout::drawToCGContext (text, area, context, flipHeight);
return true;
#else
(void) text; (void) area;
return false;
#endif
}


+ 2
- 2
modules/juce_graphics/native/juce_mac_Fonts.mm View File

@@ -1008,11 +1008,11 @@ private:
class CharToGlyphMapper
{
public:
CharToGlyphMapper (CGFontRef fontRef)
CharToGlyphMapper (CGFontRef cgFontRef)
: segCount (0), endCode (0), startCode (0), idDelta (0),
idRangeOffset (0), glyphIndexes (0)
{
CFDataRef cmapTable = CGFontCopyTableForTag (fontRef, 'cmap');
CFDataRef cmapTable = CGFontCopyTableForTag (cgFontRef, 'cmap');
if (cmapTable != 0)
{


Loading…
Cancel
Save