From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from krisdoz.my.domain (schwarze@localhost [127.0.0.1]) by krisdoz.my.domain (8.14.5/8.14.5) with ESMTP id s9DNVlE7016736 for ; Mon, 13 Oct 2014 19:31:47 -0400 (EDT) Received: (from schwarze@localhost) by krisdoz.my.domain (8.14.5/8.14.3/Submit) id s9DNVkbj004470; Mon, 13 Oct 2014 19:31:46 -0400 (EDT) Date: Mon, 13 Oct 2014 19:31:46 -0400 (EDT) Message-Id: <201410132331.s9DNVkbj004470@krisdoz.my.domain> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: schwarze@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: implement font modifiers in table layouts X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- implement font modifiers in table layouts Modified Files: -------------- mdocml: tbl.7 tbl_term.c Revision Data ------------- Index: tbl.7 =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/tbl.7,v retrieving revision 1.18 retrieving revision 1.19 diff -Ltbl.7 -Ltbl.7 -u -p -r1.18 -r1.19 --- tbl.7 +++ tbl.7 @@ -1,6 +1,7 @@ .\" $Id$ .\" .\" Copyright (c) 2010, 2011 Kristaps Dzonsons +.\" Copyright (c) 2014 Ingo Schwarze .\" .\" 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 o 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 modifie 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. Index: tbl_term.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/tbl_term.c,v retrieving revision 1.28 retrieving revision 1.29 diff -Ltbl_term.c -Ltbl_term.c -u -p -r1.28 -r1.29 --- tbl_term.c +++ tbl_term.c @@ -43,6 +43,7 @@ static void tbl_number(struct termp *, c 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 stru } 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 struc 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); +} -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv