SwiftUI size to fit Font using GeometryReader, font is too big

I am using GeometryReader to calculate the size of font to use to fit several lines of text, however it is always too big. What can be wrong with my calculation?

Here's a simply Playground

import SwiftUI
import PlaygroundSupport

struct MainView : View {
    
    var body: some View {
        VStack {
            SomeView()
                .frame(width: 508.0, height: 246.5)
        }
    }
}

struct SomeView: View {
    
    let newData = ["1", "2", "3", "4", "5", "6", "7", "8"]
    var lines: Int { newData.count }
    
    var body: some View {
        
        GeometryReader { geometry in
            VStack(alignment: .leading, spacing: 0) {
                ForEach(0..<lines) { idx in
                    Text(newData[idx])
                        .padding(0)
                }
            }
            .font(.system(size: geometry.size.height / CGFloat(lines)))
            .onAppear {
                print(geometry.size)
                print(lines)
                print(geometry.size.height / CGFloat(lines))
            }
        }
    }
}

PlaygroundPage.current.setLiveView(MainView())

This gives me this result which I need to show all 8 lines: 

The GeometryReader correctly reports the height of the box to be 246.5 and the number of lines to be 8 which results in a 30.8125 font size.

It seems the font size needs some additional padding but how do I calculate this?

I want to be able to supply an unknown amount of data and have it fill the box. (Well I am actually using a LazyVGrid which is suffering the same issue).

SwiftUI size to fit Font using GeometryReader, font is too big
 
 
Q