I guess it depends on how the font is made.
Yes, but in general the approach with line spacing works quite well.
If anyone is interested in my current implementation:
sf::FloatRect GetBoundingRect(const sf::Text& Text)
{
sf::FloatRect Rect = Text.GetRect();
float Height = (Text.GetFont().GetLineSpacing(Text.GetCharacterSize()) + 2) * Text.GetScale().y;
return sf::FloatRect(Rect.Left, Rect.Top, Rect.Right, Rect.Top + Height);
}