I’d really like to know if this is intended behaviour, because if so I can’t use AttributedStrings in various components, because I want to set font.withHorizontalScale() slightly on my main font.
Vanilla JUCE GUI App, Mac OSX Mojave, Juce 6.0.8 (problem exists before this however):
Project download:
AttributedStringTest.zip (10.3 KB)
Code:
void MainComponent::paint (juce::Graphics& g)
{
g.fillAll (getLookAndFeel().findColour (juce::ResizableWindow::backgroundColourId));
auto bounds = getLocalBounds().withHeight(30);
g.setFont (juce::Font (16.0f));
g.setColour (juce::Colours::white);
g.drawText ("Regular String", bounds, juce::Justification::centred, true);
juce::AttributedString attributedString { "Attributed String" };
attributedString.setColour (juce::Colours::white);
attributedString.setFont (juce::Font (16.0f));
attributedString.setJustification (juce::Justification::centred);
attributedString.setWordWrap (juce::AttributedString::WordWrap::none);
bounds.translate(0,30);
juce::TextLayout textLayout;
textLayout.createLayout (attributedString,
(float) bounds.getWidth(),
(float) bounds.getHeight());
textLayout.draw (g, bounds.toFloat());
bounds.translate(0,30);
g.setFont (juce::Font (16.0f).withHorizontalScale(2.0f));
g.drawText ("Regular String with horizontal scale 2.0f", bounds, juce::Justification::centred, true);
bounds.translate(0,30);
attributedString.setText("Attributed String with horizontal scale 2.0f");
attributedString.setFont (juce::Font (16.0f).withHorizontalScale(2.0f));
textLayout.createLayout (attributedString,
(float) bounds.getWidth(),
(float) bounds.getHeight());
textLayout.draw (g, bounds.toFloat());
}
It seems recent JUCE programming is using AttributedString in more places, such as the AudioMIDI dialog list boxes (changed in Juce 6.0.8 to use AttributedString instead of g.drawText()) - which changes what I had going on there…