It asks for a window so it can translate abstract font sizes to actual on-screen values depending on the window's current dpi, scaling settings, etc.
When you render a ComponentInFlow, it returns an arbitrary number of these interfaces representing the internal parts. The first pass is focused on the x parameter, then the renderer is responsible for going back to the parts in the current line and calling adjustDownForAscent to change the y params.