packages feed

freetype2-0.2.0: 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

#include "ft2build.h"
#include FT_TYPE1_TABLES_H

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  = #const T1_BLEND_UNDERLINE_POSITION
pattern T1_BLEND_UNDERLINE_THICKNESS = #const T1_BLEND_UNDERLINE_THICKNESS
pattern T1_BLEND_ITALIC_ANGLE        = #const T1_BLEND_ITALIC_ANGLE
pattern T1_BLEND_BLUE_VALUES         = #const T1_BLEND_BLUE_VALUES
pattern T1_BLEND_OTHER_BLUES         = #const T1_BLEND_OTHER_BLUES
pattern T1_BLEND_STANDARD_WIDTH      = #const T1_BLEND_STANDARD_WIDTH
pattern T1_BLEND_STANDARD_HEIGHT     = #const T1_BLEND_STANDARD_HEIGHT
pattern T1_BLEND_STEM_SNAP_WIDTHS    = #const T1_BLEND_STEM_SNAP_WIDTHS
pattern T1_BLEND_STEM_SNAP_HEIGHTS   = #const T1_BLEND_STEM_SNAP_HEIGHTS
pattern T1_BLEND_BLUE_SCALE          = #const T1_BLEND_BLUE_SCALE
pattern T1_BLEND_BLUE_SHIFT          = #const T1_BLEND_BLUE_SHIFT
pattern T1_BLEND_FAMILY_BLUES        = #const T1_BLEND_FAMILY_BLUES
pattern T1_BLEND_FAMILY_OTHER_BLUES  = #const T1_BLEND_FAMILY_OTHER_BLUES
pattern T1_BLEND_FORCE_BOLD          = #const T1_BLEND_FORCE_BOLD



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      = #const T1_ENCODING_TYPE_NONE
pattern T1_ENCODING_TYPE_ARRAY     = #const T1_ENCODING_TYPE_ARRAY
pattern T1_ENCODING_TYPE_STANDARD  = #const T1_ENCODING_TYPE_STANDARD
pattern T1_ENCODING_TYPE_ISOLATIN1 = #const T1_ENCODING_TYPE_ISOLATIN1
pattern T1_ENCODING_TYPE_EXPERT    = #const T1_ENCODING_TYPE_EXPERT



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              = #const PS_DICT_FONT_TYPE
pattern PS_DICT_FONT_MATRIX            = #const PS_DICT_FONT_MATRIX
pattern PS_DICT_FONT_BBOX              = #const PS_DICT_FONT_BBOX
pattern PS_DICT_PAINT_TYPE             = #const PS_DICT_PAINT_TYPE
pattern PS_DICT_FONT_NAME              = #const PS_DICT_FONT_NAME
pattern PS_DICT_UNIQUE_ID              = #const PS_DICT_UNIQUE_ID
pattern PS_DICT_NUM_CHAR_STRINGS       = #const PS_DICT_NUM_CHAR_STRINGS
pattern PS_DICT_CHAR_STRING_KEY        = #const PS_DICT_CHAR_STRING_KEY
pattern PS_DICT_CHAR_STRING            = #const PS_DICT_CHAR_STRING
pattern PS_DICT_ENCODING_TYPE          = #const PS_DICT_ENCODING_TYPE
pattern PS_DICT_ENCODING_ENTRY         = #const PS_DICT_ENCODING_ENTRY
pattern PS_DICT_NUM_SUBRS              = #const PS_DICT_NUM_SUBRS
pattern PS_DICT_SUBR                   = #const PS_DICT_SUBR
pattern PS_DICT_STD_HW                 = #const PS_DICT_STD_HW
pattern PS_DICT_STD_VW                 = #const PS_DICT_STD_VW
pattern PS_DICT_NUM_BLUE_VALUES        = #const PS_DICT_NUM_BLUE_VALUES
pattern PS_DICT_BLUE_VALUE             = #const PS_DICT_BLUE_VALUE
pattern PS_DICT_BLUE_FUZZ              = #const PS_DICT_BLUE_FUZZ
pattern PS_DICT_NUM_OTHER_BLUES        = #const PS_DICT_NUM_OTHER_BLUES
pattern PS_DICT_OTHER_BLUE             = #const PS_DICT_OTHER_BLUE
pattern PS_DICT_NUM_FAMILY_BLUES       = #const PS_DICT_NUM_FAMILY_BLUES
pattern PS_DICT_FAMILY_BLUE            = #const PS_DICT_FAMILY_BLUE
pattern PS_DICT_NUM_FAMILY_OTHER_BLUES = #const PS_DICT_NUM_FAMILY_OTHER_BLUES
pattern PS_DICT_FAMILY_OTHER_BLUE      = #const PS_DICT_FAMILY_OTHER_BLUE
pattern PS_DICT_BLUE_SCALE             = #const PS_DICT_BLUE_SCALE
pattern PS_DICT_BLUE_SHIFT             = #const PS_DICT_BLUE_SHIFT
pattern PS_DICT_NUM_STEM_SNAP_H        = #const PS_DICT_NUM_STEM_SNAP_H
pattern PS_DICT_STEM_SNAP_H            = #const PS_DICT_STEM_SNAP_H
pattern PS_DICT_NUM_STEM_SNAP_V        = #const PS_DICT_NUM_STEM_SNAP_V
pattern PS_DICT_STEM_SNAP_V            = #const PS_DICT_STEM_SNAP_V
pattern PS_DICT_FORCE_BOLD             = #const PS_DICT_FORCE_BOLD
pattern PS_DICT_RND_STEM_UP            = #const PS_DICT_RND_STEM_UP
pattern PS_DICT_MIN_FEATURE            = #const PS_DICT_MIN_FEATURE
pattern PS_DICT_LEN_IV                 = #const PS_DICT_LEN_IV
pattern PS_DICT_PASSWORD               = #const PS_DICT_PASSWORD
pattern PS_DICT_LANGUAGE_GROUP         = #const PS_DICT_LANGUAGE_GROUP
pattern PS_DICT_VERSION                = #const PS_DICT_VERSION
pattern PS_DICT_NOTICE                 = #const PS_DICT_NOTICE
pattern PS_DICT_FULL_NAME              = #const PS_DICT_FULL_NAME
pattern PS_DICT_FAMILY_NAME            = #const PS_DICT_FAMILY_NAME
pattern PS_DICT_WEIGHT                 = #const PS_DICT_WEIGHT
pattern PS_DICT_IS_FIXED_PITCH         = #const PS_DICT_IS_FIXED_PITCH
pattern PS_DICT_UNDERLINE_POSITION     = #const PS_DICT_UNDERLINE_POSITION
pattern PS_DICT_UNDERLINE_THICKNESS    = #const PS_DICT_UNDERLINE_THICKNESS
pattern PS_DICT_FS_TYPE                = #const PS_DICT_FS_TYPE
pattern PS_DICT_ITALIC_ANGLE           = #const PS_DICT_ITALIC_ANGLE