# Module Cpdftype

    module Cpdftype: sig .. end

Experimental typesetter for cpdf

    type element =

`|` | `Text of `char list``
`|` | `HGlue of `float``
`|` | `VGlue of `float``
`|` | `NewLine`
`|` | `NewPage`
`|` | `Font of `string * Pdftext.font * float``
`|` | `BeginDest of `Pdfdest.t * string option``
`|` | `EndDest`
`|` | `BeginDocument`
`|` | `Tag of `string * int``
`|` | `EndTag`

    type t = element list

    val to_string : t -> string

Debug printing

    val font_widths : string -> Pdftext.font -> float -> float array

Return the font width table for a given (id, font, fontsize) combination.

    val width_of_string : float array -> char list -> float

Calculate the widths of a string given a font width table, and list of char codes

    val typeset : process_struct_tree:bool ->
           float ->
           float ->
           float ->
           float ->
           Pdfpaper.t ->
           Pdf.t -> t -> Pdfpage.t list * (string * int) list list

`typeset process_struct_tree lmargin rmargin tmargin bmargin papersize pdf contents` builds a list of pages of typset content.

    val add_artifacts : Pdfops.t list -> Pdfops.t list

Add artifact markers to any un-marked part of the content stream.