type FontStruct = FontStructF (Array Char CharStruct) data FontStructF per_char = FontStruct {font_id :: FontId, font_dir :: FontDirection, first_char :: Char, last_char :: Char, font_complete :: Bool, default_char :: Char, font_prop :: [FontProp], max_bounds :: CharStruct, min_bounds :: CharStruct, per_char :: Maybe per_char, font_ascent :: Int, font_descent :: Int} instance Eq per_char => Eq (FontStructF per_char) instance Ord per_char => Ord (FontStructF per_char) instance Read per_char => Read (FontStructF per_char) instance Show per_char => Show (FontStructF per_char) instance FontGen (FontStructF (Array Char CharStruct)) linespace :: FontStructF per_char -> Int poslist :: FontStruct -> String -> [Int] next_pos :: FontStruct -> String -> Int string_bounds :: FontStruct -> String -> Rect font_ascent :: FontStructF per_char -> Int font_descent :: FontStructF per_char -> Int font_id :: FontStructF per_char -> FontId font_range :: FontStructF per_char -> (Char, Char) string_rect :: FontStruct -> String -> Rect split_string :: FontStruct -> String -> Int -> (String, String, Int) string_box_size :: FontStruct -> String -> Size string_len :: FontStruct -> String -> Int font_prop :: FontStructF per_char -> [FontProp]