Skip to content


The table model is similar to that of HTML. You combine cells into rows which form a table to be typeset. In HTML for example you can create a simple table with this code:

So a table is built row by row. In boxes and glue, the table consists of table rows (TableRow) and cells (TableCell). The contents of each cell is a sequence of Paragraph structs and the contents of a row is a sequence of cells.

Table cell#

type TableCell struct {
    BorderTopWidth    bag.ScaledPoint
    BorderBottomWidth bag.ScaledPoint
    BorderLeftWidth   bag.ScaledPoint
    BorderRightWidth  bag.ScaledPoint
    BorderTopColor    *color.Color
    BorderBottomColor *color.Color
    BorderLeftColor   *color.Color
    BorderRightColor  *color.Color
    CalculatedWidth   bag.ScaledPoint
    CalculatedHeight  bag.ScaledPoint
    HAlign            HorizontalAlignment
    VAlign            VerticalAlignment
    Contents          []any
    ExtraColspan      int
    ExtraRowspan      int
    PaddingTop        bag.ScaledPoint
    PaddingBottom     bag.ScaledPoint
    PaddingLeft       bag.ScaledPoint
    PaddingRight      bag.ScaledPoint

Table row#

type TableRow struct {
    Cells            []*TableCell
    CalculatedHeight bag.ScaledPoint
    VAlign           VerticalAlignment
type Table struct {
    MaxWidth   bag.ScaledPoint
    Stretch    bool
    FontFamily *FontFamily
    FontSize   bag.ScaledPoint
    Leading    bag.ScaledPoint
    Rows       TableRows
    ColSpec    []ColSpec
func (fe *Document) BuildTable(tbl *Table) ([]*node.VList, error)