diff options
| author | Eugen Wissner <belka@caraus.de> | 2024-02-06 12:14:07 +0100 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2024-02-06 12:14:07 +0100 |
| commit | 23271d6f6cf033230106f07ae14985f3b85f906a (patch) | |
| tree | 4299eb1ccae58f52a450bf86497b311e1f31ccad /lib/Graphics/Fountainhead/Metrics.hs | |
| parent | 3160ceab080fca8fef0cf2cf196b46284d15c19f (diff) | |
| download | fountainhead-23271d6f6cf033230106f07ae14985f3b85f906a.tar.gz | |
Add an option for dumping a single table
Diffstat (limited to 'lib/Graphics/Fountainhead/Metrics.hs')
| -rw-r--r-- | lib/Graphics/Fountainhead/Metrics.hs | 73 |
1 files changed, 56 insertions, 17 deletions
diff --git a/lib/Graphics/Fountainhead/Metrics.hs b/lib/Graphics/Fountainhead/Metrics.hs index bb50b93..abf80b7 100644 --- a/lib/Graphics/Fountainhead/Metrics.hs +++ b/lib/Graphics/Fountainhead/Metrics.hs @@ -3,27 +3,66 @@ obtain one at https://mozilla.org/MPL/2.0/. -} {-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} module Graphics.Fountainhead.Metrics - ( FontMetrics(..) - , afmFontMetrics + ( FontBBox(..) + , FontDescriptor(..) + , Number + , FontDescriptorFlag(..) ) where -import qualified Data.Text.Lazy.Builder as Text.Builder -import Data.Version (Version(..), showVersion) -import Graphics.Fountainhead.Type (newlineBuilder) +import Data.Text (Text) -newtype FontMetrics = FontMetrics - { version :: Version - } deriving (Eq, Show) +type Number = Double + +data FontDescriptorFlag + = FixedPitch + | Serif + | Symbolic + | Script + | Nonsymbolic + | Italic + | AllCap + | SmallCap + | ForceBold + deriving (Eq, Show) -afmKeyString :: Text.Builder.Builder -> String -> Text.Builder.Builder -afmKeyString key value = key <> Text.Builder.singleton '\t' - <> Text.Builder.fromString value <> newlineBuilder +instance Enum FontDescriptorFlag + where + toEnum 1 = FixedPitch + toEnum 2 = Serif + toEnum 3 = Symbolic + toEnum 4 = Script + toEnum 6 = Nonsymbolic + toEnum 7 = Italic + toEnum 17 = AllCap + toEnum 18 = SmallCap + toEnum 19 = ForceBold + toEnum _ = error "Font description flag is not supported." + fromEnum FixedPitch = 1 + fromEnum Serif = 2 + fromEnum Symbolic = 3 + fromEnum Script = 4 + fromEnum Nonsymbolic = 6 + fromEnum Italic = 7 + fromEnum AllCap = 17 + fromEnum SmallCap = 18 + fromEnum ForceBold = 19 -afmFontMetrics :: FontMetrics -> Text.Builder.Builder -afmFontMetrics FontMetrics{..} - = afmKeyString "StartFontMetrics" (showVersion version) - <> afmKeyString "Comment" "Generated by Fountainhead" - <> "EndFontMetrics" <> newlineBuilder +data FontBBox = FontBBox Number Number Number Number + deriving (Eq, Show) + +data FontDescriptor = FontDescriptor + { fontName :: Text + , flags :: [FontDescriptorFlag] + , fullName :: Text + , familyName :: Text + , weight :: Text + , fontBBox :: FontBBox + , version :: Text + , notice :: Text + , encodingScheme :: Text + , isFixedPitch :: Bool + , ascender :: Number + , descender :: Number + } deriving (Eq, Show) |
