diff options
| author | Eugen Wissner <belka@caraus.de> | 2024-02-12 14:05:39 +0100 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2024-02-12 14:05:39 +0100 |
| commit | ca70d648a924ac5ae2712aacecb5d60e7d4a7847 (patch) | |
| tree | b884fdc2a833f6b470ab6a4ea1fdbb7b82e28a7b /lib/Graphics/Fountainhead/TrueType.hs | |
| parent | 41b5c14e2f5d7140d7d5a1bd7201e70a8a137dcd (diff) | |
| download | fountainhead-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.hs | 19 |
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 |
