public function addColumn($column, array $definition) {
        // set new column with default definitions. Note that [ln] is always
        // set to FALSE. When addBody(), TRUE will be setted for the last
        // column.
        $this->columnDefinition[$column] = array_merge([
            'isMultiLine' => false,
            'isMultiLineHeader' => false,
            'isImage' => false,
            'renderer' => null,
            'headerRenderer' => null,
            'header' => '',
            'drawFn' => null,
            'drawHeaderFn' => null,
            // cell
            'width' => 10,
            'height' => null,
            'border' => 0,
            'ln' => false,
            'align' => 'L',
            'fill' => false,
            'link' => '',
            'stretch' => 0,
            'ignoreHeight' => false,
            'calign' => 'T',
            'valign' => 'M',
            // multiCell
            'x' => '',
            'y' => '',
            'reseth' => true,
            'isHtml' => false,
            'maxh' => null,
            'autoPadding' => true,
            'fitcell' => false,
            // getNumLines
            'cellPadding' => ''
        ], $this->defaultColumnDefinition, $definition);

        if ($this->columnDefinition[$column]['height'] === null) {
            $this->columnDefinition[$column]['height'] = $this->getColumnHeight();
        }

        $this->trigger(self::EV_COLUMN_ADDED, [
            $column,
            $this->columnDefinition[$column]
        ]);
        return $this;
    }