From 16d9fc384fa6180c8b7e875bd95065adce346c30 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Wed, 27 Dec 2023 16:19:21 +0100 Subject: Decompress defalte compressed fonts --- app/Main.hs | 33 +++++++-------------------------- 1 file changed, 7 insertions(+), 26 deletions(-) (limited to 'app') 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 -- cgit v1.2.3