module FontProperty (fontProperty) where import Font(FontProp(..)) import InternAtom(internAtom,atomName) import Xtypes(Atom(..)) -- The font_prop element of the FontStruct contains a list of FontProp, -- each containing a pair of Int's: the first is the property name atom number, -- the secind is the property value atom number. To get a property of a font -- (which may or may not exist) it is necessary to try to get the atom -- number for the property name, and, if successful, find out the element -- of the list containing that number. Then, using the second number -- in the element found, retrieve the value. If more than one property -- with the same name is found, only the first will be returned. fontProperty fsprops propn cont = let match an' (FontProp an vn) = an' == an valatom (FontProp an vn) = vn in internAtom propn True $ \pna -> case pna of Atom 0 -> cont Nothing a -> case (map valatom (filter (match a) fsprops)) of [] -> cont Nothing vn:_ -> atomName (Atom (fromIntegral vn)) $ \vna -> cont vna