Add a Font class type to allow text rendition schemes other than CMaps

This commit is contained in:
Tissevert 2020-02-05 14:42:51 +01:00
parent c48ab22808
commit 22cde37025
3 changed files with 16 additions and 0 deletions

View file

@ -27,6 +27,7 @@ library
, PDF.Update
other-modules: Data.ByteString.Char8.Util
, PDF.Body
, PDF.Font
-- other-extensions:
build-depends: attoparsec
, base >=4.9 && <4.13

View file

@ -1,4 +1,6 @@
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeSynonymInstances #-}
module PDF.CMap (
CMap
, CMappers
@ -19,6 +21,7 @@ import Data.ByteString.Char8.Util (
import Data.Map (Map, union)
import qualified Data.Map as Map (adjust, empty, fromList, insertWith)
import qualified PDF.EOL as EOL (charset, parser)
import PDF.Font (Font(..))
import PDF.Object (
DirectObject(..), Name, StringObject(..)
, blank, directObject, integer, line, stringObject
@ -35,6 +38,9 @@ data CRange = CRange {
type RangeSize = Int
type CMap = Map RangeSize [CRange]
instance Font CMap where
decode = undefined
emptyCMap :: CMap
emptyCMap = Map.empty

9
src/PDF/Font.hs Normal file
View file

@ -0,0 +1,9 @@
module PDF.Font (
Font(..)
) where
import Data.ByteString (ByteString)
import PDF.Object (StringObject)
class Font a where
decode :: a -> StringObject -> ByteString