Warnings on Ubuntu 20.04

With latest changes on develop branch, i get new warnings on Ubuntu 20.04 build.

Compiling Main.cpp
Compiling BinaryData.cpp
Compiling include_juce_core.cpp
Compiling include_juce_data_structures.cpp
Compiling include_juce_events.cpp
Compiling include_juce_graphics.cpp
In file included from /home/jojo/JUCE/modules/juce_graphics/juce_graphics.cpp:161,
                 from ../../JuceLibraryCode/include_juce_graphics.cpp:8:
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp: In member function ‘juce::DefaultFontInfo::Characteristics juce::DefaultFontInfo::getRealFontCharacteristics(const juce::String&) const’:
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:133:27: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
  133 |         return { faceName };
      |                           ^
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp: In static member function ‘static juce::DefaultFontInfo::Characteristics juce::DefaultFontInfo::getDefaultSansSerifFontCharacteristics()’:
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:169:61: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
  169 |                                                  { "Sans" } };
      |                                                             ^
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:169:61: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:169:61: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:169:61: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:169:61: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp: In static member function ‘static juce::DefaultFontInfo::Characteristics juce::DefaultFontInfo::getDefaultSerifFontCharacteristics()’:
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:183:62: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
  183 |                                                  { "Serif" } };
      |                                                              ^
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:183:62: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:183:62: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:183:62: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:183:62: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp: In static member function ‘static juce::DefaultFontInfo::Characteristics juce::DefaultFontInfo::getDefaultMonospacedFontCharacteristics()’:
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:198:61: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
  198 |                                                  { "Mono" } };
      |                                                             ^
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:198:61: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:198:61: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:198:61: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:198:61: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:198:61: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp: In instantiation of ‘static juce::DefaultFontInfo::Characteristics juce::DefaultFontInfo::pickBestFont(const juce::StringArray&, Range&&) [with Range = const juce::DefaultFontInfo::Characteristics (&)[6]]’:
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:170:47:   required from here
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:156:33: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
  156 |         return { *names.begin() };
      |                                 ^
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp: In instantiation of ‘static juce::DefaultFontInfo::Characteristics juce::DefaultFontInfo::pickBestFont(const juce::StringArray&, Range&&) [with Range = const juce::DefaultFontInfo::Characteristics (&)[7]]’:
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:199:47:   required from here
/home/jojo/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:156:33: warning: missing initializer for member ‘juce::DefaultFontInfo::Characteristics::style’ [-Wmissing-field-initializers]
Compiling include_juce_gui_basics.cpp

Please would you supply your compiler version? Thanks!

Might be gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 (default).

Flags: -Wall -Wextra -Wshadow -Wno-unused-parameter

Notice that it also change the font look in my app! :disappointed:

Before:

Font2

After:

Font3

void LookAndFeel::initializeFonts()
{
    font18_                 = juce::Font ("Ubuntu", 18.0, juce::Font::plain);
    font18Monospaced_       = juce::Font ("Ubuntu Mono", 18.0, juce::Font::plain);
    font16Bold_             = juce::Font ("Ubuntu", 16.0, juce::Font::bold);
    
    font18Name_             = font18_.getTypefacePtr()->getName();
    font18MonospacedName_   = font18Monospaced_.getTypefacePtr()->getName();
    font16BoldName_         = font16Bold_.getTypefacePtr()->getName();

    DBG (font18Name_);
    DBG (font18MonospacedName_);
    DBG (font16BoldName_);
}
JUCE v6.1.6
Ubuntu
Ubuntu Mono
Ubuntu
Hello!
RT Enabled
Shutdown
Goodbye!

What’s the “before” and “after” in this case? Is this after changing Ubuntu versions, or JUCE versions, or compiler versions, or some combination of those? There was a change on develop very recently that should have fixed the “bold default fonts” problem - are you definitely testing with the latest develop?

Sorry i should have been more clear ; It is since the same commit that introduced the warnings.
Linux: Avoid picking a bold/oblique version of Bitstream Vera Sans b… · juce-framework/JUCE@c31f347 · GitHub.
I’ll git bisect to be 100% sure.

Rechecked twice, and the commit linked above introduced the warnings and the font change.

That’s weird, that’s the exact opposite of the problem I was trying to solve…

I think I can see the problem, hopefully we’ll have a fix out shortly.

1 Like

Same warnings on RPI4 with clang.

clang version 7.0.1-8+rpi3+deb10u2 (tags/RELEASE_701/final)
Target: armv6k-unknown-linux-gnueabihf
Thread model: posix
InstalledDir: /usr/bin
In file included from ../../JuceLibraryCode/include_juce_graphics.cpp:8:
In file included from /home/pi/JUCE/modules/juce_graphics/juce_graphics.cpp:161:
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:133:27: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
        return { faceName };
                          ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:156:33: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
        return { *names.begin() };
                                ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:164:62: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
        static const Characteristics targets[] { { "Verdana" },
                                                             ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:166:64: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
                                                 { "Luxi Sans" },
                                                               ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:167:70: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
                                                 { "Liberation Sans" },
                                                                     ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:168:66: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
                                                 { "DejaVu Sans" },
                                                                 ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:169:59: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
                                                 { "Sans" } };
                                                          ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:179:60: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
                                                 { "Times" },
                                                           ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:180:67: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
                                                 { "Nimbus Roman" },
                                                                  ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:181:71: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
                                                 { "Liberation Serif" },
                                                                      ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:182:67: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
                                                 { "DejaVu Serif" },
                                                                  ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:183:60: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
                                                 { "Serif" } };
                                                           ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:192:71: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
        static const Characteristics targets[] { { "DejaVu Sans Mono" },
                                                                      ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:194:64: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
                                                 { "Sans Mono" },
                                                               ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:195:70: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
                                                 { "Liberation Mono" },
                                                                     ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:196:62: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
                                                 { "Courier" },
                                                             ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:197:66: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
                                                 { "DejaVu Mono" },
                                                                 ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:198:59: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
                                                 { "Mono" } };
                                                          ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:156:33: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
        return { *names.begin() };
                                ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:170:16: note: 
      in instantiation of function template specialization
      'juce::DefaultFontInfo::pickBestFont<juce::DefaultFontInfo::Characteristics
      const (&)[6]>' requested here
        return pickBestFont (allFonts, targets);
               ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:156:33: warning: 
      missing field 'style' initializer [-Wmissing-field-initializers]
        return { *names.begin() };
                                ^
/home/pi/JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:199:16: note: 
      in instantiation of function template specialization
      'juce::DefaultFontInfo::pickBestFont<juce::DefaultFontInfo::Characteristics
      const (&)[7]>' requested here
        return pickBestFont (allFonts, targets);
               ^