Roman,

The text monad is very low level and its functions are mapping directly to the PDF text environment commands.

"text" function is generating two PDF commands : Td and Tj. In Adobe PDF spec :

Td : Move to the start of the next line, offset from the start of the current line by (tx , ty ). tx and ty are numbers expressed in unscaled text space units.

Tj : Show a text string. 

So, the behavior is correct and HPDF really needs a documentation :-) and some cleaning of the API.

Thanks,
Christophe.

Here is a program which illustrates an unexpected behaviour:

 import Graphics.PDF

 main = runPdf "bug.pdf" standardDocInfo (PDFRect 0 0 100 100) pdf
     where
     pdf = do
         p <- addPage Nothing
         drawWithPage p $ drawText $
             sequence $ replicate 10 $
               text (PDFFont Helvetica 10) 10 10 (toPDFString "ABC")

What I expect here is "ABC" printed 10 times on the same place (starting
at (10,10)). What I see (in Okular) is ABC printed each time in the new
place like this:

  ABC
 ABC
ABC
ABC

What's happening here? I'm using HPDF-1.4.1 from Hackage.

--
Roman I. Cheplyaka :: http://ro-che.info/
"Don't let school get in the way of your education." - Mark Twain