{-# LINE 1 "FreeType/Format/Type1.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE PatternSynonyms #-}

{- | Please refer to the
     [Format-Specific API > Type 1 Tables](https://www.freetype.org/freetype2/docs/reference/ft2-type1_tables.html)
     chapter of the reference.

     Internal: "FreeType.Format.Type1.Internal".
 -}

module FreeType.Format.Type1
  ( -- ** PS_FontInfoRec
    PS_FontInfoRec (..)
    -- ** PS_FontInfo
  , PS_FontInfo
    -- ** PS_PrivateRec
  , PS_PrivateRec (..)
    -- ** PS_Private
  , PS_Private
    -- ** CID_FaceDictRec
  , CID_FaceDictRec (..)
    -- ** CID_FaceDict
  , CID_FaceDict
    -- ** CID_FaceInfoRec
  , CID_FaceInfoRec (..)
    -- ** CID_FaceInfo
  , CID_FaceInfo
    -- ** FT_Has_PS_Glyph_Names
  , ft_Has_PS_Glyph_Names
    -- ** FT_Get_PS_Font_Info
  , ft_Get_PS_Font_Info
    -- ** FT_Get_PS_Font_Private
  , ft_Get_PS_Font_Private
    -- ** FT_Get_PS_Font_Value
  , ft_Get_PS_Font_Value
    -- ** T1_Blend_Flags
  , T1_Blend_Flags
  , pattern T1_BLEND_UNDERLINE_POSITION
  , pattern T1_BLEND_UNDERLINE_THICKNESS
  , pattern T1_BLEND_ITALIC_ANGLE
  , pattern T1_BLEND_BLUE_VALUES
  , pattern T1_BLEND_OTHER_BLUES
  , pattern T1_BLEND_STANDARD_WIDTH
  , pattern T1_BLEND_STANDARD_HEIGHT
  , pattern T1_BLEND_STEM_SNAP_WIDTHS
  , pattern T1_BLEND_STEM_SNAP_HEIGHTS
  , pattern T1_BLEND_BLUE_SCALE
  , pattern T1_BLEND_BLUE_SHIFT
  , pattern T1_BLEND_FAMILY_BLUES
  , pattern T1_BLEND_FAMILY_OTHER_BLUES
  , pattern T1_BLEND_FORCE_BOLD
    -- ** T1_EncodingType
  , T1_EncodingType
  , pattern T1_ENCODING_TYPE_NONE
  , pattern T1_ENCODING_TYPE_ARRAY
  , pattern T1_ENCODING_TYPE_STANDARD
  , pattern T1_ENCODING_TYPE_ISOLATIN1
  , pattern T1_ENCODING_TYPE_EXPERT
    -- ** PS_Dict_Keys
  , PS_Dict_Keys
  , pattern PS_DICT_FONT_TYPE
  , pattern PS_DICT_FONT_MATRIX
  , pattern PS_DICT_FONT_BBOX
  , pattern PS_DICT_PAINT_TYPE
  , pattern PS_DICT_FONT_NAME
  , pattern PS_DICT_UNIQUE_ID
  , pattern PS_DICT_NUM_CHAR_STRINGS
  , pattern PS_DICT_CHAR_STRING_KEY
  , pattern PS_DICT_CHAR_STRING
  , pattern PS_DICT_ENCODING_TYPE
  , pattern PS_DICT_ENCODING_ENTRY
  , pattern PS_DICT_NUM_SUBRS
  , pattern PS_DICT_SUBR
  , pattern PS_DICT_STD_HW
  , pattern PS_DICT_STD_VW
  , pattern PS_DICT_NUM_BLUE_VALUES
  , pattern PS_DICT_BLUE_VALUE
  , pattern PS_DICT_BLUE_FUZZ
  , pattern PS_DICT_NUM_OTHER_BLUES
  , pattern PS_DICT_OTHER_BLUE
  , pattern PS_DICT_NUM_FAMILY_BLUES
  , pattern PS_DICT_FAMILY_BLUE
  , pattern PS_DICT_NUM_FAMILY_OTHER_BLUES
  , pattern PS_DICT_FAMILY_OTHER_BLUE
  , pattern PS_DICT_BLUE_SCALE
  , pattern PS_DICT_BLUE_SHIFT
  , pattern PS_DICT_NUM_STEM_SNAP_H
  , pattern PS_DICT_STEM_SNAP_H
  , pattern PS_DICT_NUM_STEM_SNAP_V
  , pattern PS_DICT_STEM_SNAP_V
  , pattern PS_DICT_FORCE_BOLD
  , pattern PS_DICT_RND_STEM_UP
  , pattern PS_DICT_MIN_FEATURE
  , pattern PS_DICT_LEN_IV
  , pattern PS_DICT_PASSWORD
  , pattern PS_DICT_LANGUAGE_GROUP
  , pattern PS_DICT_VERSION
  , pattern PS_DICT_NOTICE
  , pattern PS_DICT_FULL_NAME
  , pattern PS_DICT_FAMILY_NAME
  , pattern PS_DICT_WEIGHT
  , pattern PS_DICT_IS_FIXED_PITCH
  , pattern PS_DICT_UNDERLINE_POSITION
  , pattern PS_DICT_UNDERLINE_THICKNESS
  , pattern PS_DICT_FS_TYPE
  , pattern PS_DICT_ITALIC_ANGLE
    -- ** T1_FontInfo
  , T1_FontInfo
    -- ** T1_Private
    -- | Deprecated, equivalent to 'PS_FontInfoRec'.

    -- ** CID_FontDict
    -- | Deprecated, equivalent to 'PS_PrivateRec'.

    -- ** CID_Info
    -- | Deprecated, equivalent to 'CID_FaceDictRec'.
  ) where

import           FreeType.Core.Base.Types
import           FreeType.Core.Types.Types
import           FreeType.Exception.Internal
import           FreeType.Format.Type1.Internal
import           FreeType.Format.Type1.Types

import           Foreign.Marshal.Alloc
import           Foreign.Ptr




foreign import ccall "FT_Has_PS_Glyph_Names"
  ft_Has_PS_Glyph_Names
    :: FT_Face   -- ^ face
    -> IO FT_Int



-- | The returned 'PS_FontInfo' is allocated with 'malloc' and thus must be 'free'd manually
ft_Get_PS_Font_Info
  :: FT_Face        -- ^ face
  -> IO PS_FontInfo -- ^ font_info
ft_Get_PS_Font_Info face = do
  infoPtr <- malloc
  ftError "ft_Get_PS_Font_Info" $ ft_Get_PS_Font_Info' face infoPtr
  return infoPtr



-- | The returned 'PS_Private' is allocate with 'malloc' and thus must be 'free'd manually
ft_Get_PS_Font_Private
  :: FT_Face       -- ^ face
  -> IO PS_Private -- ^ font_private
ft_Get_PS_Font_Private face = do
  privPtr <- malloc
  ftError "ft_Get_PS_Font_Private" $ ft_Get_PS_Font_Private' face privPtr
  return privPtr



foreign import ccall "FT_Get_PS_Font_Value"
  ft_Get_PS_Font_Value
    :: FT_Face      -- ^ face
    -> PS_Dict_Keys -- ^ key
    -> FT_UInt      -- ^ idx
    -> Ptr ()       -- ^ value
    -> FT_Long      -- ^ value_len
    -> IO FT_Long



pattern T1_BLEND_UNDERLINE_POSITION
      , T1_BLEND_UNDERLINE_THICKNESS
      , T1_BLEND_ITALIC_ANGLE
      , T1_BLEND_BLUE_VALUES
      , T1_BLEND_OTHER_BLUES
      , T1_BLEND_STANDARD_WIDTH
      , T1_BLEND_STANDARD_HEIGHT
      , T1_BLEND_STEM_SNAP_WIDTHS
      , T1_BLEND_STEM_SNAP_HEIGHTS
      , T1_BLEND_BLUE_SCALE
      , T1_BLEND_BLUE_SHIFT
      , T1_BLEND_FAMILY_BLUES
      , T1_BLEND_FAMILY_OTHER_BLUES
      , T1_BLEND_FORCE_BOLD
     :: (Eq a, Num a) => a
pattern T1_BLEND_UNDERLINE_POSITION  = 0
{-# LINE 187 "FreeType/Format/Type1.hsc" #-}
pattern T1_BLEND_UNDERLINE_THICKNESS = 1
{-# LINE 188 "FreeType/Format/Type1.hsc" #-}
pattern T1_BLEND_ITALIC_ANGLE        = 2
{-# LINE 189 "FreeType/Format/Type1.hsc" #-}
pattern T1_BLEND_BLUE_VALUES         = 3
{-# LINE 190 "FreeType/Format/Type1.hsc" #-}
pattern T1_BLEND_OTHER_BLUES         = 4
{-# LINE 191 "FreeType/Format/Type1.hsc" #-}
pattern T1_BLEND_STANDARD_WIDTH      = 5
{-# LINE 192 "FreeType/Format/Type1.hsc" #-}
pattern T1_BLEND_STANDARD_HEIGHT     = 6
{-# LINE 193 "FreeType/Format/Type1.hsc" #-}
pattern T1_BLEND_STEM_SNAP_WIDTHS    = 7
{-# LINE 194 "FreeType/Format/Type1.hsc" #-}
pattern T1_BLEND_STEM_SNAP_HEIGHTS   = 8
{-# LINE 195 "FreeType/Format/Type1.hsc" #-}
pattern T1_BLEND_BLUE_SCALE          = 9
{-# LINE 196 "FreeType/Format/Type1.hsc" #-}
pattern T1_BLEND_BLUE_SHIFT          = 10
{-# LINE 197 "FreeType/Format/Type1.hsc" #-}
pattern T1_BLEND_FAMILY_BLUES        = 11
{-# LINE 198 "FreeType/Format/Type1.hsc" #-}
pattern T1_BLEND_FAMILY_OTHER_BLUES  = 12
{-# LINE 199 "FreeType/Format/Type1.hsc" #-}
pattern T1_BLEND_FORCE_BOLD          = 13
{-# LINE 200 "FreeType/Format/Type1.hsc" #-}



pattern T1_ENCODING_TYPE_NONE
      , T1_ENCODING_TYPE_ARRAY
      , T1_ENCODING_TYPE_STANDARD
      , T1_ENCODING_TYPE_ISOLATIN1
      , T1_ENCODING_TYPE_EXPERT
     :: (Eq a, Num a) => a
pattern T1_ENCODING_TYPE_NONE      = 0
{-# LINE 210 "FreeType/Format/Type1.hsc" #-}
pattern T1_ENCODING_TYPE_ARRAY     = 1
{-# LINE 211 "FreeType/Format/Type1.hsc" #-}
pattern T1_ENCODING_TYPE_STANDARD  = 2
{-# LINE 212 "FreeType/Format/Type1.hsc" #-}
pattern T1_ENCODING_TYPE_ISOLATIN1 = 3
{-# LINE 213 "FreeType/Format/Type1.hsc" #-}
pattern T1_ENCODING_TYPE_EXPERT    = 4
{-# LINE 214 "FreeType/Format/Type1.hsc" #-}



pattern PS_DICT_FONT_TYPE
      , PS_DICT_FONT_MATRIX
      , PS_DICT_FONT_BBOX
      , PS_DICT_PAINT_TYPE
      , PS_DICT_FONT_NAME
      , PS_DICT_UNIQUE_ID
      , PS_DICT_NUM_CHAR_STRINGS
      , PS_DICT_CHAR_STRING_KEY
      , PS_DICT_CHAR_STRING
      , PS_DICT_ENCODING_TYPE
      , PS_DICT_ENCODING_ENTRY
      , PS_DICT_NUM_SUBRS
      , PS_DICT_SUBR
      , PS_DICT_STD_HW
      , PS_DICT_STD_VW
      , PS_DICT_NUM_BLUE_VALUES
      , PS_DICT_BLUE_VALUE
      , PS_DICT_BLUE_FUZZ
      , PS_DICT_NUM_OTHER_BLUES
      , PS_DICT_OTHER_BLUE
      , PS_DICT_NUM_FAMILY_BLUES
      , PS_DICT_FAMILY_BLUE
      , PS_DICT_NUM_FAMILY_OTHER_BLUES
      , PS_DICT_FAMILY_OTHER_BLUE
      , PS_DICT_BLUE_SCALE
      , PS_DICT_BLUE_SHIFT
      , PS_DICT_NUM_STEM_SNAP_H
      , PS_DICT_STEM_SNAP_H
      , PS_DICT_NUM_STEM_SNAP_V
      , PS_DICT_STEM_SNAP_V
      , PS_DICT_FORCE_BOLD
      , PS_DICT_RND_STEM_UP
      , PS_DICT_MIN_FEATURE
      , PS_DICT_LEN_IV
      , PS_DICT_PASSWORD
      , PS_DICT_LANGUAGE_GROUP
      , PS_DICT_VERSION
      , PS_DICT_NOTICE
      , PS_DICT_FULL_NAME
      , PS_DICT_FAMILY_NAME
      , PS_DICT_WEIGHT
      , PS_DICT_IS_FIXED_PITCH
      , PS_DICT_UNDERLINE_POSITION
      , PS_DICT_UNDERLINE_THICKNESS
      , PS_DICT_FS_TYPE
      , PS_DICT_ITALIC_ANGLE
     :: (Eq a, Num a) => a
pattern PS_DICT_FONT_TYPE              = 0
{-# LINE 265 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_FONT_MATRIX            = 1
{-# LINE 266 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_FONT_BBOX              = 2
{-# LINE 267 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_PAINT_TYPE             = 3
{-# LINE 268 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_FONT_NAME              = 4
{-# LINE 269 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_UNIQUE_ID              = 5
{-# LINE 270 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_NUM_CHAR_STRINGS       = 6
{-# LINE 271 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_CHAR_STRING_KEY        = 7
{-# LINE 272 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_CHAR_STRING            = 8
{-# LINE 273 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_ENCODING_TYPE          = 9
{-# LINE 274 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_ENCODING_ENTRY         = 10
{-# LINE 275 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_NUM_SUBRS              = 11
{-# LINE 276 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_SUBR                   = 12
{-# LINE 277 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_STD_HW                 = 13
{-# LINE 278 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_STD_VW                 = 14
{-# LINE 279 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_NUM_BLUE_VALUES        = 15
{-# LINE 280 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_BLUE_VALUE             = 16
{-# LINE 281 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_BLUE_FUZZ              = 17
{-# LINE 282 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_NUM_OTHER_BLUES        = 18
{-# LINE 283 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_OTHER_BLUE             = 19
{-# LINE 284 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_NUM_FAMILY_BLUES       = 20
{-# LINE 285 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_FAMILY_BLUE            = 21
{-# LINE 286 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_NUM_FAMILY_OTHER_BLUES = 22
{-# LINE 287 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_FAMILY_OTHER_BLUE      = 23
{-# LINE 288 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_BLUE_SCALE             = 24
{-# LINE 289 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_BLUE_SHIFT             = 25
{-# LINE 290 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_NUM_STEM_SNAP_H        = 26
{-# LINE 291 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_STEM_SNAP_H            = 27
{-# LINE 292 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_NUM_STEM_SNAP_V        = 28
{-# LINE 293 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_STEM_SNAP_V            = 29
{-# LINE 294 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_FORCE_BOLD             = 30
{-# LINE 295 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_RND_STEM_UP            = 31
{-# LINE 296 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_MIN_FEATURE            = 32
{-# LINE 297 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_LEN_IV                 = 33
{-# LINE 298 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_PASSWORD               = 34
{-# LINE 299 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_LANGUAGE_GROUP         = 35
{-# LINE 300 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_VERSION                = 36
{-# LINE 301 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_NOTICE                 = 37
{-# LINE 302 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_FULL_NAME              = 38
{-# LINE 303 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_FAMILY_NAME            = 39
{-# LINE 304 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_WEIGHT                 = 40
{-# LINE 305 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_IS_FIXED_PITCH         = 41
{-# LINE 306 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_UNDERLINE_POSITION     = 42
{-# LINE 307 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_UNDERLINE_THICKNESS    = 43
{-# LINE 308 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_FS_TYPE                = 44
{-# LINE 309 "FreeType/Format/Type1.hsc" #-}
pattern PS_DICT_ITALIC_ANGLE           = 45
{-# LINE 310 "FreeType/Format/Type1.hsc" #-}