summaryrefslogtreecommitdiff
path: root/lib/Graphics/Fountainhead/TrueType.hs
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2024-02-12 14:05:39 +0100
committerEugen Wissner <belka@caraus.de>2024-02-12 14:05:39 +0100
commitca70d648a924ac5ae2712aacecb5d60e7d4a7847 (patch)
treeb884fdc2a833f6b470ab6a4ea1fdbb7b82e28a7b /lib/Graphics/Fountainhead/TrueType.hs
parent41b5c14e2f5d7140d7d5a1bd7201e70a8a137dcd (diff)
downloadfountainhead-ca70d648a924ac5ae2712aacecb5d60e7d4a7847.tar.gz
Extract metrics from the OS/2 table
Diffstat (limited to 'lib/Graphics/Fountainhead/TrueType.hs')
-rw-r--r--lib/Graphics/Fountainhead/TrueType.hs19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/Graphics/Fountainhead/TrueType.hs b/lib/Graphics/Fountainhead/TrueType.hs
index 55d55ae..03852b5 100644
--- a/lib/Graphics/Fountainhead/TrueType.hs
+++ b/lib/Graphics/Fountainhead/TrueType.hs
@@ -4,7 +4,10 @@
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ViewPatterns #-}
-- | Types representing a TrueType font.
module Graphics.Fountainhead.TrueType
@@ -85,6 +88,7 @@ module Graphics.Fountainhead.TrueType
, findTableByTag
, unLocaTable
, nameStringOffset
+ , pattern Os2Version4CommonFields
) where
import Data.ByteString (ByteString)
@@ -545,6 +549,21 @@ data Os2Table
| Os2Version5 Os2BaseFields Os2MicrosoftFields Os2Version5Fields
deriving (Eq, Show)
+pattern Os2Version4CommonFields :: Os2BaseFields -> Os2Version4Fields -> Os2Table
+pattern Os2Version4CommonFields baseFields versionFields <-
+ (os2Version4CommonFields -> Just (baseFields, versionFields))
+
+{-# COMPLETE Os2Version4CommonFields, Os2Version0, Os2Version1, Os2Version5 #-}
+
+os2Version4CommonFields :: Os2Table -> Maybe (Os2BaseFields, Os2Version4Fields)
+os2Version4CommonFields = \case
+ Os2Version0{} -> Nothing
+ Os2Version1{} -> Nothing
+ Os2Version2 baseFields _ versionFields -> Just (baseFields, versionFields)
+ Os2Version3 baseFields _ versionFields -> Just (baseFields, versionFields)
+ Os2Version4 baseFields _ versionFields -> Just (baseFields, versionFields)
+ Os2Version5{} -> Nothing
+
data Os2Version1Fields = Os2Version1Fields
{ ulCodePageRange1 :: Word32
, ulCodePageRange2 :: Word32