FontyFruity-0.5.3.3: A true type file format loader

Safe HaskellNone
LanguageHaskell2010

Graphics.Text.TrueType

Contents

Description

Module in charge of loading fonts.

Synopsis

Functions

decodeFont :: ByteString -> Either String Font Source #

Decode a in-memory true type file.

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

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

getStringCurveAtPoint Source #

Arguments

:: 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 Source #

Return the number of pixels relative to the point size.

isPlaceholder :: Font -> Char -> Bool Source #

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

getCharacterGlyphsAndMetrics Source #

Arguments

:: 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)]] Source #

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 Source #

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) Source #

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 Source #

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 Source #

Font cache with no pre-existing fonts in it.

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

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

buildCache :: IO FontCache Source #

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

enumerateFonts :: FontCache -> [FontDescriptor] Source #

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

descriptorOf :: Font -> Maybe FontDescriptor Source #

If possible, returns a descriptor of the Font.

Types

data Font Source #

Type representing a font.

Instances

Show Font Source # 

Methods

showsPrec :: Int -> Font -> ShowS #

show :: Font -> String #

showList :: [Font] -> ShowS #

NFData Font Source # 

Methods

rnf :: Font -> () #

data FontStyle Source #

Describe the basic stylistic properties of a font.

Constructors

FontStyle 

Fields

data RawGlyph Source #

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

Constructors

RawGlyph 

Fields

type Dpi = Int Source #

Express device resolution in dot per inch.

newtype PointSize Source #

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

Constructors

PointSize 

Fields

data CompositeScaling Source #

Transformation matrix used to transform composite glyph

  | a b |
  | c d |

Constructors

CompositeScaling 

Fields

data BoundingBox Source #

String bounding box. with value for min/max.

Constructors

BoundingBox 

Fields