{-# LANGUAGE CApiFFI #-} -- | Convert between OpenType & FontConfig weight scales. module Graphics.Text.Font.Choose.Weight(weightFromOpenTypeDouble, weightToOpenTypeDouble, weightFromOpenType, weightToOpenType) where -- | Returns an double value to use with FC_WEIGHT, from an double in the 1..1000 range, -- resembling the numbers from OpenType specification's OS2 usWeight numbers, -- which are also similar to CSS font-weight numbers. -- If input is negative, zero, or greater than 1000, returns -1. -- This function linearly interpolates between various FC_WEIGHT_* constants. -- As such, the returned value does not necessarily match any of the predefined constants. foreign import capi "fontconfig/fontconfig.h FcWeightFromOpenTypeDouble" weightFromOpenTypeDouble :: Double -> Double -- | the inverse of FcWeightFromOpenType. If the input is less than FC_WEIGHT_THIN -- or greater than FC_WEIGHT_EXTRABLACK, returns -1. -- Otherwise returns a number in the range 1 to 1000. foreign import capi "fontconfig/fontconfig.h FcWeightToOpenTypeDouble" weightToOpenTypeDouble :: Double -> Double -- | Like weightFromOpenTypeDouble but with integer arguments. Use the other function instead. weightFromOpenType :: Int -> Int weightFromOpenType = fromEnum . weightFromOpenTypeDouble . toEnum -- | Like weightToOpenTypeDouble but with integer arguments. Use the other function instead. weightToOpenType :: Int -> Int weightToOpenType = fromEnum . weightToOpenTypeDouble . toEnum