module Data.Text.ParagraphLayout.Internal.TextOptions ( TextOptions (..) , defaultTextOptions ) where import Data.Text.Glyphize (Direction, Font, emptyFont) import Data.Text.ParagraphLayout.Internal.LineHeight -- | Style options to be applied to a text sequence. -- -- This record type is likely to be extended in the future. -- Use `defaultTextOptions` and update it with specific record selectors -- instead of constructing `TextOptions` directly. data TextOptions = TextOptions { textFont :: Font -- ^ Font to be used for shaping and measurement. -- Make sure to set its scale (see `Data.Text.Glyphize.optionScale`) using -- the same units that you want in the output. , textLineHeight :: LineHeight -- ^ Preferred line height of the resulting fragments. , textLanguage :: String -- ^ IETF BCP 47 language tag, such as the value expected to be found in -- the HTML @lang@ attribute, specifying the primary language for the -- span's text content. An empty string explicitly means "language unknown". -- -- Used for selecting the appropriate glyphs and line breaking rules, -- primarily in East Asian languages. , textDirection :: Direction -- ^ Base text direction. -- -- Used to determine which box fragment gets the left spacing and which -- gets the right spacing when broken over multiple lines. -- -- When applied to the root box in a paragraph, this is also used to -- determine the base direction of the paragraph. -- TODO: textVerticalAlign -- TODO: textLetterSpacing -- TODO: textWordSpacing -- TODO: textFontFeatures -- TODO: textSoftBreaks } deriving (Eq) -- | `TextOptions` with default values. defaultTextOptions :: Direction -- ^ Required value for `textDirection`. -> TextOptions defaultTextOptions dir = TextOptions { textFont = emptyFont , textLineHeight = Normal , textLanguage = "" , textDirection = dir }