Add kern table formats 1 and 2
This commit is contained in:
parent
929ab04c2c
commit
57478f8362
@ -779,8 +779,9 @@ data KernFormat0Pair = KernFormat0Pair
|
|||||||
} deriving (Eq, Show)
|
} deriving (Eq, Show)
|
||||||
|
|
||||||
data KernFormat0Table = KernFormat0Table
|
data KernFormat0Table = KernFormat0Table
|
||||||
{ nPairs :: Word16 -- ^ The number of kerning pairs in this subtable.
|
-- | The largest power of two less than or equal to the value of nPairs,
|
||||||
, searchRange :: Word16 -- ^ The largest power of two less than or equal to the value of nPairs, multiplied by the size in bytes of an entry in the subtable.
|
-- multiplied by the size in bytes of an entry in the subtable.
|
||||||
|
{ searchRange :: Word16
|
||||||
-- | This is calculated as log2 of the largest power of two less than or
|
-- | This is calculated as log2 of the largest power of two less than or
|
||||||
-- equal to the value of nPairs. This value indicates how many iterations of
|
-- equal to the value of nPairs. This value indicates how many iterations of
|
||||||
-- the search loop have to be made. For example, in a list of eight items,
|
-- the search loop have to be made. For example, in a list of eight items,
|
||||||
@ -792,3 +793,56 @@ data KernFormat0Table = KernFormat0Table
|
|||||||
, rangeShift :: Word16
|
, rangeShift :: Word16
|
||||||
, pairs :: [KernFormat0Pair]
|
, pairs :: [KernFormat0Pair]
|
||||||
} deriving (Eq, Show)
|
} deriving (Eq, Show)
|
||||||
|
|
||||||
|
-- | Kern subtable format 1 header.
|
||||||
|
data StateHeader = StateHeader
|
||||||
|
{ stateSize :: Word16 -- ^ Number of classes defined for this table.
|
||||||
|
-- | Offset from the beginning of the state table to the beginning of the
|
||||||
|
-- class subtable.
|
||||||
|
, classTableOffset :: Word16
|
||||||
|
-- | Offset from the beginning of the state table to the beginning of the
|
||||||
|
-- state array.
|
||||||
|
, stateArrayOffset :: Word16
|
||||||
|
-- | Offset from the beginning of the state table to the beginning of the
|
||||||
|
-- entry subtable.
|
||||||
|
, entryTableOffset :: Word16
|
||||||
|
-- | Offset from the beginning of the state table to the beginning of the
|
||||||
|
-- state table values.
|
||||||
|
, valueOffset :: Word16
|
||||||
|
} deriving (Eq, Show)
|
||||||
|
|
||||||
|
data StateEntry = StateEntry
|
||||||
|
{ newState :: Word16
|
||||||
|
, flags :: Word16
|
||||||
|
} deriving (Eq, Show)
|
||||||
|
|
||||||
|
data KernFormat1Table = KernFormat1Table
|
||||||
|
{ stateHeader :: StateHeader
|
||||||
|
, firstGlyph :: Word16
|
||||||
|
, classArray :: ByteString
|
||||||
|
, stateArray :: ByteString
|
||||||
|
, entries :: [StateEntry]
|
||||||
|
} deriving (Eq, Show)
|
||||||
|
|
||||||
|
data SimpleArrayHeader = SimpleArrayHeader
|
||||||
|
{ rowWidth :: Word16 -- ^ The width, in bytes, of a row in the subtable.
|
||||||
|
-- | Offset from beginning of this subtable to the left-hand offset table.
|
||||||
|
, leftOffsetTable :: Word16
|
||||||
|
-- | Offset from beginning of this subtable to right-hand offset table.
|
||||||
|
, rightOffsetTable :: Word16
|
||||||
|
-- | Offset from beginning of this subtable to the start of the kerning
|
||||||
|
-- array.
|
||||||
|
, array :: Word16
|
||||||
|
} deriving (Eq, Show)
|
||||||
|
|
||||||
|
data ClassTableHeader = ClassTableHeader
|
||||||
|
{ firstGlyph -- ^ First glyph in class range.
|
||||||
|
-- | The offsets array for all of the glyphs in the range.
|
||||||
|
, offsets :: [Word16]
|
||||||
|
} deriving (Eq, Show)
|
||||||
|
|
||||||
|
data KernFormat2Table = KernFormat2Table
|
||||||
|
{ simpleArrayHeader :: SimpleArrayHeader
|
||||||
|
, classTableHeader :: ClassTableHeader
|
||||||
|
, values :: [Int16]
|
||||||
|
} deriving (Eq, Show)
|
||||||
|
Loading…
Reference in New Issue
Block a user