+ if (cell.style->cell_style.valign != TABLE_VALIGN_TOP)
+ fprintf (html->file, " VALIGN=\"%s\"",
+ (cell.style->cell_style.valign == TABLE_VALIGN_BOTTOM
+ ? "BOTTOM" : "MIDDLE"));
+
+ colspan = table_cell_colspan (&cell);
+ if (colspan > 1)
+ fprintf (html->file, " COLSPAN=\"%d\"", colspan);
+
+ rowspan = table_cell_rowspan (&cell);
+ if (rowspan > 1)
+ fprintf (html->file, " ROWSPAN=\"%d\"", rowspan);
+
+ if (html->borders)
+ {
+ /* Cell borders. */
+ int n_borders = 0;
+
+ struct cell_color color;
+ top = table_get_rule (t, TABLE_VERT, x, y, &color);
+ put_border (html->file, &n_borders, top, "top");
+
+ if (y + rowspan == table_nr (t))
+ {
+ bottom = table_get_rule (t, TABLE_VERT, x, y + rowspan,
+ &color);
+ put_border (html->file, &n_borders, bottom, "bottom");
+ }
+
+ left = table_get_rule (t, TABLE_HORZ, x, y, &color);
+ put_border (html->file, &n_borders, left, "left");
+
+ if (x + colspan == table_nc (t))
+ {
+ right = table_get_rule (t, TABLE_HORZ, x + colspan, y,
+ &color);
+ put_border (html->file, &n_borders, right, "right");
+ }
+
+ if (n_borders > 0)
+ fputs ("\"", html->file);
+ }
+
+ putc ('>', html->file);
+
+ /* Output cell contents. */
+ const char *s = cell.text;
+ if (cell.options & TAB_FIX)
+ escape_tag (html->file, "TT", s, " ", "<BR>");
+ else
+ {
+ s += strspn (s, CC_SPACES);
+ escape_string (html->file, s, " ", "<BR>");
+ }