diff options
-rw-r--r-- | man.7 | 9 | ||||
-rw-r--r-- | mdoc.7 | 12 | ||||
-rw-r--r-- | term.c | 30 | ||||
-rw-r--r-- | term.h | 6 |
4 files changed, 39 insertions, 18 deletions
@@ -1,4 +1,4 @@ -.\" $Id: man.7,v 1.46 2009/11/02 17:07:30 kristaps Exp $ +.\" $Id: man.7,v 1.47 2009/11/05 08:40:16 kristaps Exp $ .\" .\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se> .\" @@ -14,7 +14,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: November 2 2009 $ +.Dd $Mdocdate: November 5 2009 $ .Dt MAN 7 .Os . @@ -109,8 +109,9 @@ and .Ss Text Decoration Terms may be text-decorated using the .Sq \ef -escape followed by an indicator: B (bold), I, (italic), or P and R -(Roman, or reset). +escape followed by an indicator: B (bold), I, (italic), R (Roman), or P +(revert to previous mode). A numerical representation 3, 2, or 1 +(bold, italic, and Roman, respectively) may be used instead. . . .Ss Whitespace @@ -1,4 +1,4 @@ -.\" $Id: mdoc.7,v 1.73 2009/11/02 11:39:40 kristaps Exp $ +.\" $Id: mdoc.7,v 1.74 2009/11/05 08:40:16 kristaps Exp $ .\" .\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se> .\" @@ -14,7 +14,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: November 2 2009 $ +.Dd $Mdocdate: November 5 2009 $ .Dt MDOC 7 .Os . @@ -131,10 +131,12 @@ and .Ss Text Decoration Terms may be text-decorated using the .Sq \ef -escape followed by an indicator: B (bold), I, (italic), or P and R -(Roman, or reset). This form is not recommended for +escape followed by an indicator: B (bold), I, (italic), R (Roman), or P +(revert to previous mode). A numerical representation 3, 2, or 1 +(bold, italic, and Roman, respectively) may be used instead. This form +is not recommended for .Nm , -which encourages semantic, not presentation, annotation. +which encourages semantic annotation. . . .Ss Predefined Strings @@ -1,4 +1,4 @@ -/* $Id: term.c,v 1.121 2009/11/05 07:21:02 kristaps Exp $ */ +/* $Id: term.c,v 1.122 2009/11/05 08:40:16 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se> * @@ -15,6 +15,7 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include <assert.h> +#include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -373,7 +374,7 @@ do_reserved(struct termp *p, const char *word, size_t len) static void do_escaped(struct termp *p, const char **word) { - int j, type; + int j, type, sv; const char *wp; wp = *word; @@ -428,16 +429,29 @@ do_escaped(struct termp *p, const char **word) } switch (*wp) { + case ('3'): + /* FALLTHROUGH */ case ('B'): - p->bold++; + p->metamask = p->metafont; + p->metafont |= METAF_BOLD; break; + case ('2'): + /* FALLTHROUGH */ case ('I'): - p->under++; + p->metamask = p->metafont; + p->metafont |= METAF_UNDER; break; case ('P'): + sv = p->metamask; + p->metamask = p->metafont; + p->metafont = sv; + break; + case ('1'): /* FALLTHROUGH */ case ('R'): - p->bold = p->under = 0; + p->metamask = p->metafont; + p->metafont &= ~METAF_UNDER; + p->metafont &= ~METAF_BOLD; break; default: break; @@ -563,12 +577,12 @@ static void encode(struct termp *p, char c) { - if (' ' != c) { - if (p->under) { + if (isgraph((u_char)c)) { + if (p->under || METAF_UNDER & p->metafont) { buffer(p, '_'); buffer(p, 8); } - if (p->bold) { + if (p->bold || METAF_BOLD & p->metafont) { buffer(p, c); buffer(p, 8); } @@ -1,4 +1,4 @@ -/* $Id: term.h,v 1.49 2009/10/18 19:03:37 kristaps Exp $ */ +/* $Id: term.h,v 1.50 2009/11/05 08:40:16 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se> * @@ -43,6 +43,10 @@ struct termp { #define TERMP_ANPREC (1 << 13) /* See termp_an_pre(). */ int bold; int under; + int metafont; /* See do_escaped(). */ +#define METAF_BOLD (1 << 0) +#define METAF_UNDER (1 << 1) + int metamask; /* See do_escaped(). */ char *buf; /* Output buffer. */ enum termenc enc; /* Type of encoding. */ void *symtab; /* Encoded-symbol table. */ |