sig
  type t
  val nil : Text_block.t
  val fill : char -> width:int -> height:int -> Text_block.t
  val space : width:int -> height:int -> Text_block.t
  type valign = [ `Bottom | `Center | `Top ]
  type halign = [ `Center | `Left | `Right ]
  val text : ?align:Text_block.halign -> string -> Text_block.t
  val vcat :
    ?align:Text_block.halign ->
    ?sep:Text_block.t -> Text_block.t list -> Text_block.t
  val hcat :
    ?align:Text_block.valign ->
    ?sep:Text_block.t -> Text_block.t list -> Text_block.t
  val width : Text_block.t -> int
  val height : Text_block.t -> int
  val valign : Text_block.valign -> Text_block.t list -> Text_block.t list
  val halign : Text_block.halign -> Text_block.t list -> Text_block.t list
  val hstrut : int -> Text_block.t
  val vstrut : int -> Text_block.t
  val render : Text_block.t -> string
  val compress_table_header :
    [ `Cols of (Text_block.t * Text_block.t list * Text_block.halign) list ] ->
    [ `Header of Text_block.t ] * [ `Rows of Text_block.t list ]
end