summaryrefslogtreecommitdiff
path: root/lib/Graphics/Fountainhead/Metrics.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Graphics/Fountainhead/Metrics.hs')
-rw-r--r--lib/Graphics/Fountainhead/Metrics.hs73
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)