From c0f164ee2841077f5d73308901c027c91650e437 Mon Sep 17 00:00:00 2001 From: Anthony Nicholls Date: Thu, 17 Jul 2025 14:03:31 +0100 Subject: [PATCH] Text: Cache the display language --- modules/juce_graphics/detail/juce_SimpleShapedText.cpp | 6 ++---- modules/juce_graphics/detail/juce_SimpleShapedText.h | 8 -------- modules/juce_graphics/fonts/juce_TextLayout.cpp | 1 - 3 files changed, 2 insertions(+), 13 deletions(-) diff --git a/modules/juce_graphics/detail/juce_SimpleShapedText.cpp b/modules/juce_graphics/detail/juce_SimpleShapedText.cpp index dd24382b3c..72e05b545b 100644 --- a/modules/juce_graphics/detail/juce_SimpleShapedText.cpp +++ b/modules/juce_graphics/detail/juce_SimpleShapedText.cpp @@ -215,9 +215,10 @@ static std::vector lowLevelShape (Span string, Range range, const Font& font, TextScript script, - const String& language, uint8_t embeddingLevel) { + static const auto language = SystemStats::getDisplayLanguage(); + HbBuffer buffer { hb_buffer_create() }; hb_buffer_clear_contents (buffer.get()); @@ -515,7 +516,6 @@ private: struct ShapingParams { TextScript script; - String language; uint8_t embeddingLevel; Font resolvedFont; }; @@ -934,7 +934,6 @@ struct Shaper { shaperRuns.set (range, { scriptRun->front().script, - options.getLanguage(), *it, font }, ops, @@ -988,7 +987,6 @@ struct Shaper shapingRange, it->value.resolvedFont, it->value.script, - it->value.language, it->value.embeddingLevel); shapedGlyphs.set (shapingRange, diff --git a/modules/juce_graphics/detail/juce_SimpleShapedText.h b/modules/juce_graphics/detail/juce_SimpleShapedText.h index cd056fd759..555d89e32f 100644 --- a/modules/juce_graphics/detail/juce_SimpleShapedText.h +++ b/modules/juce_graphics/detail/juce_SimpleShapedText.h @@ -53,7 +53,6 @@ private: alignmentWidth, height, fontsForRange, - language, firstLineIndent, leading, additiveLineSpacing, @@ -132,11 +131,6 @@ public: return withMember (*this, &ShapedTextOptions::fontsForRange, x); } - [[nodiscard]] ShapedTextOptions withLanguage (StringRef x) const - { - return withMember (*this, &ShapedTextOptions::language, x); - } - [[nodiscard]] ShapedTextOptions withFirstLineIndent (float x) const { return withMember (*this, &ShapedTextOptions::firstLineIndent, x); @@ -206,7 +200,6 @@ public: const auto& getAlignmentWidth() const { return alignmentWidth; } const auto& getHeight() const { return height; } const auto& getFontsForRange() const { return fontsForRange; } - const auto& getLanguage() const { return language; } const auto& getFirstLineIndent() const { return firstLineIndent; } const auto& getLeading() const { return leading; } const auto& getAdditiveLineSpacing() const { return additiveLineSpacing; } @@ -232,7 +225,6 @@ private: return result; }); - String language = SystemStats::getDisplayLanguage(); float firstLineIndent = 0.0f; float leading = 1.0f; float additiveLineSpacing = 0.0f; diff --git a/modules/juce_graphics/fonts/juce_TextLayout.cpp b/modules/juce_graphics/fonts/juce_TextLayout.cpp index aeb2d4b6a8..b67bc37754 100644 --- a/modules/juce_graphics/fonts/juce_TextLayout.cpp +++ b/modules/juce_graphics/fonts/juce_TextLayout.cpp @@ -445,7 +445,6 @@ void TextLayout::createStandardLayout (const AttributedString& text) } auto shapedTextOptions = ShapedTextOptions{}.withFonts (fonts) - .withLanguage (SystemStats::getUserLanguage()) .withTrailingWhitespacesShouldFit (false) .withJustification (justification) .withReadingDirection (getTextDirection (text))