FontyFruity- A true type file format loader

Safe HaskellNone




Module in charge of loading fonts.



decodeFont :: ByteString -> Either String Font #

Decode a in-memory true type file.

loadFontFile :: FilePath -> IO (Either String Font) #

Load a font file, the file path must be pointing to the true type file (.ttf)

getStringCurveAtPoint #


:: Dpi

Dot per inch of the output.

-> (Float, Float)

Initial position of the baseline.

-> [(Font, PointSize, String)]

Text to draw

-> [[Vector (Float, Float)]]

List of contours for each char

Extract a list of outlines for every char in the string. The given curves are in an image like coordinate system, with the origin point in the upper left corner.

unitsPerEm :: Font -> Word16 #

Return the number of pixels relative to the point size.

isPlaceholder :: Font -> Char -> Bool #

True if the character is not present in the font, therefore it will appear as a placeholder in renderings.

getCharacterGlyphsAndMetrics #


:: Font 
-> Char 
-> (Float, Vector RawGlyph)

Advance and glyph information.

Retrive the glyph contours and associated transformations. The coordinate system is assumed to be the TTF one (y upward). No transformation is performed.

getGlyphForStrings :: Dpi -> [(Font, PointSize, String)] -> [[Vector (Float, Float)]] #

This function return the list of all contour for all char with the given font in a string. All glyph are at the same position, they are not placed like with getStringCurveAtPoint. It is a function helpful to extract the glyph geometry for further external manipulation.

stringBoundingBox :: Font -> Dpi -> PointSize -> String -> BoundingBox #

Compute the bounding box of a string displayed with a font at a given size. The resulting coordinate represent the width and the height in pixels.

findFontOfFamily :: String -> FontStyle -> IO (Maybe FilePath) #

This function will scan the system's font folder to find a font with the desired properties. Favor using a FontCache to speed up the lookup process.

Font cache

data FontCache #

A font cache is a cache listing all the found fonts on the system, allowing faster font lookup once created

FontCache is an instance of binary, to get okish performance you should save it in a file somewhere instead of rebuilding it everytime!

The font cache is dependent on the version of rasterific, you must rebuild it for every version.

emptyFontCache :: FontCache #

Font cache with no pre-existing fonts in it.

findFontInCache :: FontCache -> FontDescriptor -> Maybe FilePath #

Try to find a font with the given properties in the font cache.

buildCache :: IO FontCache #

This function will search in the system for truetype files and index them in a cache for further fast search.

enumerateFonts :: FontCache -> [FontDescriptor] #

Returns a list of descriptors of fonts stored in the given cache.

descriptorOf :: Font -> Maybe FontDescriptor #

If possible, returns a descriptor of the Font.


data Font #

Type representing a font.


Show Font # 


showsPrec :: Int -> Font -> ShowS #

show :: Font -> String #

showList :: [Font] -> ShowS #

NFData Font # 


rnf :: Font -> () #

data FontStyle #

Describe the basic stylistic properties of a font.




data RawGlyph #

This type represent unscaled glyph information, everything is still in its raw form.




type Dpi = Int #

Express device resolution in dot per inch.

newtype PointSize #

Font size expressed in points. You must convert size expressed in pixels to point using the DPI information. See pixelSizeInPointAtDpi




data CompositeScaling #

Transformation matrix used to transform composite glyph

  | a b |
  | c d |




data BoundingBox #

String bounding box. with value for min/max.