summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tbl.745
-rw-r--r--tbl_term.c20
2 files changed, 41 insertions, 24 deletions
diff --git a/tbl.7 b/tbl.7
index b1bcb1b9..5157f1bb 100644
--- a/tbl.7
+++ b/tbl.7
@@ -1,6 +1,7 @@
.\" $Id$
.\"
.\" Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
+.\" Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org>
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.\" purpose with or without fee is hereby granted, provided that the above
@@ -195,7 +196,7 @@ Each layout line corresponds to a line of data; the last layout line
applies to all remaining data lines.
Layout lines may also be separated by a comma.
Each layout cell consists of one of the following case-insensitive keys:
-.Bl -tag -width Ds
+.Bl -tag -width 2n
.It Cm c
Centre a literal string within its column.
.It Cm r
@@ -244,35 +245,35 @@ Keys may be followed by a set of modifiers.
A modifier is either a modifier key or a natural number for specifying
the minimum width of a column.
The following case-insensitive modifier keys are available:
-.Cm z ,
-.Cm u ,
-.Cm e ,
-.Cm t ,
+.Bl -tag -width 2n
+.It Cm b
+Use a bold font for the contents of this column.
+.It Cm f
+The next character selects the font to use for this column.
+See the
+.Xr roff 7
+manual for supported one-character font names.
+.It Cm i
+Use an italic font for the contents of this column.
+.El
+.Pp
+The modifiers
.Cm d ,
-.Cm b ,
-.Cm i ,
+.Cm e ,
.Cm r ,
+.Cm t ,
+.Cm u ,
and
-.Cm f
-.Po
-followed by
-.Cm b ,
-.Cm i ,
-.Cm r ,
-.Cm 3 ,
-.Cm 2 ,
-or
-.Cm 1
-.Pc .
-All of these are ignored by
+.Cm z
+are ignored by
.Xr mandoc 1 .
.Pp
For example, the following layout specifies a centre-justified column of
minimum width 10, followed by vertical bar, followed by a left-justified
-column of minimum width 10, another vertical bar, then a column
-justified about the decimal point in numbers:
+column of minimum width 10, another vertical bar, then a column using
+bold font justified about the decimal point in numbers:
.Pp
-.Dl c10 | l10 | n
+.Dl c10 | l10 | nfB
.Ss Data
The data section follows the last layout row.
By default, cells in a data section are delimited by a tab.
diff --git a/tbl_term.c b/tbl_term.c
index 44049bd4..52ef73ca 100644
--- a/tbl_term.c
+++ b/tbl_term.c
@@ -43,6 +43,7 @@ static void tbl_number(struct termp *, const struct tbl_opts *,
const struct roffcol *);
static void tbl_hrule(struct termp *, const struct tbl_span *);
static void tbl_vrule(struct termp *, const struct tbl_head *);
+static void tbl_word(struct termp *, const struct tbl_dat *);
static size_t
@@ -378,7 +379,7 @@ tbl_literal(struct termp *tp, const struct tbl_dat *dp,
}
tbl_char(tp, ASCII_NBRSP, padl);
- term_word(tp, dp->string);
+ tbl_word(tp, dp);
tbl_char(tp, ASCII_NBRSP, padr);
}
@@ -419,8 +420,23 @@ tbl_number(struct termp *tp, const struct tbl_opts *opts,
padl = col->decimal - d;
tbl_char(tp, ASCII_NBRSP, padl);
- term_word(tp, dp->string);
+ tbl_word(tp, dp);
if (col->width > sz + padl)
tbl_char(tp, ASCII_NBRSP, col->width - sz - padl);
}
+static void
+tbl_word(struct termp *tp, const struct tbl_dat *dp)
+{
+ const void *prev_font;
+
+ prev_font = term_fontq(tp);
+ if (dp->layout->flags & TBL_CELL_BOLD)
+ term_fontpush(tp, TERMFONT_BOLD);
+ else if (dp->layout->flags & TBL_CELL_ITALIC)
+ term_fontpush(tp, TERMFONT_UNDER);
+
+ term_word(tp, dp->string);
+
+ term_fontpopq(tp, prev_font);
+}