class FontPane
{
    abstract JPanel getPanel();

    /**
     * Calculate vertical bounds common to all rendered glyphs.
     *
     * @param tableData
     * @param glyphIndex the table index that has glyphs.
     * @return an array with two elements: min lower bound (but max 0), and max upper bound (but min
     * 0).
     */
    double[] getYBounds(Object[][] tableData, int glyphIndex)
    {<FILL_FUNCTION_BODY>}
}

        double minY = 0;
        double maxY = 0;
        for (Object[] aTableData : tableData)
        {
            GeneralPath path = (GeneralPath) aTableData[glyphIndex];
            Rectangle2D bounds2D = path.getBounds2D();
            if (bounds2D.isEmpty())
            {
                continue;
            }
            minY = Math.min(minY, bounds2D.getMinY());
            maxY = Math.max(maxY, bounds2D.getMaxY());
        }
        return new double[]{minY, maxY};
    
<no_super_class>