diff options
| author | Eugen Wissner <belka@caraus.de> | 2023-12-27 16:19:21 +0100 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2023-12-27 16:19:21 +0100 |
| commit | 16d9fc384fa6180c8b7e875bd95065adce346c30 (patch) | |
| tree | 5096daddd5aff7d21dbed6085484297b1b8a6583 /app | |
| parent | a841f138fc9055f4bc32db292a675f93f081b4e7 (diff) | |
| download | fountainhead-16d9fc384fa6180c8b7e875bd95065adce346c30.tar.gz | |
Decompress defalte compressed fonts
Diffstat (limited to 'app')
| -rw-r--r-- | app/Main.hs | 33 |
1 files changed, 7 insertions, 26 deletions
diff --git a/app/Main.hs b/app/Main.hs index 23a86b9..afdee16 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -2,44 +2,25 @@ module Main ( main ) where -import Control.Monad (foldM_) -import Data.Int (Int64) -import qualified Data.ByteString as ByteString -import qualified Data.ByteString.Char8 as Char8 -import Data.ByteString (ByteString) +import Data.Bifunctor (Bifunctor(..)) import qualified Text.Megaparsec as Megaparsec -import Data.Foldable (find) import qualified Data.Text.Lazy.Builder as Text.Builder -import qualified Data.Text.Lazy.Builder.Int as Text.Builder -import qualified Data.Text.Lazy as Text.Lazy import qualified Data.Text.Lazy.IO as Text.Lazy -import qualified Data.Text.Encoding as Text -import GHC.Records (HasField(..)) -import Graphics.Fountainhead.Dumper (DumpError(..), dumpTrueType) +import Graphics.Fountainhead (parseFontDirectoryFromFile) +import Graphics.Fountainhead.Dumper (DumpError(..), dumpTables) -- TODO: kern table since format 1. -- For details on subtable format see examples in TrueType reference. -import Graphics.Fountainhead.Parser - ( fontDirectoryP - , os2TableP - , parseTable - , shortLocaTableP - ) -import Graphics.Fountainhead.TrueType - ( FontDirectory(..) - , OffsetSubtable(..) - , TableDirectory(..) - ) import System.Environment (getArgs) import System.Exit (exitWith) import GHC.IO.Exception (ExitCode(..)) fontMain :: FilePath -> IO () fontMain fontFile = do - putStrLn $ "Dumping File:" <> fontFile <> "\n\n" + putStrLn ("Dumping File:" <> fontFile <> "\n\n") - ttfContents <- ByteString.readFile fontFile - - case dumpTrueType ttfContents fontFile of + (processedState, initialResult) <- parseFontDirectoryFromFile fontFile + + case first DumpParseError initialResult >>= dumpTables processedState of Right fontDump -> Text.Lazy.putStrLn $ Text.Builder.toLazyText fontDump Left e | DumpParseError bundle <- e -> putStr |
