module Graphics.Text.TrueType.FontType
( Font( .. )
, emptyFont
) where
import Control.DeepSeq( NFData( .. ) )
import Data.Word( Word32 )
import qualified Data.ByteString.Char8 as B
import qualified Data.Vector as V
import qualified Data.Vector.Unboxed as VU
import Graphics.Text.TrueType.MaxpTable
import Graphics.Text.TrueType.Glyph
import Graphics.Text.TrueType.Header
import Graphics.Text.TrueType.OffsetTable
import Graphics.Text.TrueType.CharacterMap
import Graphics.Text.TrueType.HorizontalInfo
import Graphics.Text.TrueType.Name
data Font = Font
{
_fontOffsetTable :: !OffsetTable
, _fontTables :: ![(B.ByteString, B.ByteString)]
, _fontNames :: Maybe NameTable
, _fontHeader :: Maybe FontHeader
, _fontMaxp :: Maybe MaxpTable
, _fontMap :: Maybe CharacterMaps
, _fontGlyph :: Maybe (V.Vector Glyph)
, _fontLoca :: Maybe (VU.Vector Word32)
, _fontHorizontalHeader :: Maybe HorizontalHeader
, _fontHorizontalMetrics :: Maybe HorizontalMetricsTable
}
deriving (Show)
instance NFData Font where
rnf font =
_fontOffsetTable font `seq`
_fontTables font `seq`
_fontGlyph font `seq`
_fontLoca font `seq`
()
emptyFont :: OffsetTable -> Font
emptyFont table = Font
{ _fontTables = []
, _fontOffsetTable = table
, _fontNames = Nothing
, _fontHeader = Nothing
, _fontGlyph = Nothing
, _fontMaxp = Nothing
, _fontLoca = Nothing
, _fontMap = Nothing
, _fontHorizontalHeader = Nothing
, _fontHorizontalMetrics = Nothing
}