PopupMenu fonts mismatch LookAndFeel::getPopupMenuFont

Hello,

The Font height when launching a PopupMenu, the drawn Font that is used to draw the items doesn’t match the Font that is returned from LookAndFeel::getPopupMenuFont

When a popup item is drawn in LookAndFeel::drawPopupMenuItem, the area in which the item is drawn is reduced in height by 1 pixels from top and bottom.
auto r = area.reduced (1); See line 783 in LookAndFeel_V4.cpp

This reduction is not considered when calculating the item size in LookAndFeel::getIdealPopupMenuItemSize.
Overriding the LookAndFeel and add the 2 pixels to the calculated height fixes it.

Here is some example code that makes clear that the popup shows a different font than is desired. Note that with the ComboBox there is no issue, since with a ComboBox the item heights are set equal to the ComboBox component height.

class MainComponent   : public Component
{
public:
    MainComponent()
    {
        setLookAndFeel (&lookAndFeel);
        
        // Button items fonts are drawn shrinked
        addAndMakeVisible (button);
        button.setButtonText ("PopupMenu manually");
        button.onClick = [&]
        {
            PopupMenu popup;
            popup.setLookAndFeel (&getLookAndFeel());
            popup.addItem ("Item Shrinked1", nullptr);
            popup.addItem ("Item Shrinked2", nullptr);
            popup.addItem ("Item Shrinked3", nullptr);
            popup.showAt (&button);
        };
        
        // Combo items fonts are drawn correctly
        addAndMakeVisible (combo);
        combo.setTextWhenNothingSelected ("PopupMenu from Combo");
        {
            auto* popup = combo.getRootMenu();
            popup->addItem ("Item Correct1", nullptr);
            popup->addItem ("Item Correct2", nullptr);
            popup->addItem ("Item Correct3", nullptr);
        }
        
        // Label is drawn correctly
        addAndMakeVisible (label);
        label.setText ("This is the correct font", dontSendNotification);
        label.setFont (Font (20.0f));
        
        setSize (700, 200);
    }
    
    ~MainComponent()
    {
        setLookAndFeel (nullptr);
    }

    void paint (Graphics& g) override
    {
        g.fillAll (getLookAndFeel().findColour (ResizableWindow::backgroundColourId));
    }
    
    void resized() override
    {
        button.setBounds (10, 10, 200, 60);
        combo.setBounds (220, 10, 200, 60);
        label.setBounds (430, 10, 200, 60);
    }

private:
    struct MyLookAndFeel : LookAndFeel_V4
    {
        Font getPopupMenuFont() override
        {
            return Font (20.0f);
        }
    };
    MyLookAndFeel lookAndFeel;
    
    TextButton button;
    ComboBox combo;
    Label label;
    
    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainComponent)
};

Hopefully this is something that can be fixed,
Jelle