-.\" $OpenBSD: mandoc_char.7,v 1.43 2020/10/31 11:44:25 schwarze Exp $
+.\" $OpenBSD: mandoc_char.7,v 1.44 2022/06/02 14:49:25 schwarze Exp $
.\"
.\" Copyright (c) 2003 Jason McIntyre <jmc@openbsd.org>
.\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
-.\" Copyright (c) 2011,2013,2015,2017-2020 Ingo Schwarze <schwarze@openbsd.org>
+.\" Copyright (c) 2011, 2013, 2015, 2017-2020, 2022
+.\" 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
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: October 31 2020 $
+.Dd $Mdocdate: June 2 2022 $
.Dt MANDOC_CHAR 7
.Os
.Sh NAME
request or a macro, and when appearing alone as a macro argument in
.Xr mdoc 7 .
In such situations, prepend a zero-width space
-.Pq Sq \e&.
+.Pq Sq \e&.\&
to make it behave like normal text.
.Pp
-Do not use the
+Do not use the character pair
.Sq \e.
-escape sequence.
-It does not prevent special handling of the period.
+to escape a period because
+.Sq \e.
+is not a character escape sequence, does not prevent special handling
+of the period under normal circumstances, and is only intended to
+be used in the very special situation of defining a user-defined
+macro that, when called, defines another user-defined macro, which
+no manual page is ever supposed to do.
.Ss Backslashes
To include a literal backslash
.Pq Sq \e
.It \e(en Ta \(en Ta en-dash
.It \e(hy Ta \(hy Ta hyphen
.It \ee Ta \e Ta back-slash
-.It \e. Ta \. Ta period
.It \e(r! Ta \(r! Ta upside-down exclamation
.It \e(r? Ta \(r? Ta upside-down question
.El
-/* $OpenBSD: chars.c,v 1.49 2020/02/13 16:16:03 schwarze Exp $ */
+/* $OpenBSD: chars.c,v 1.50 2022/06/02 14:49:25 schwarze Exp $ */
/*
* Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011, 2014, 2015, 2017, 2018, 2020
{ "en", "-", 0x2013 },
{ "hy", "-", 0x2010 },
{ "e", "\\", 0x005c },
- { ".", ".", 0x002e },
{ "r!", "!", 0x00a1 },
{ "r?", "?", 0x00bf },
-/* $OpenBSD: roff_escape.c,v 1.7 2022/06/02 11:28:16 schwarze Exp $ */
+/* $OpenBSD: roff_escape.c,v 1.8 2022/06/02 14:49:25 schwarze Exp $ */
/*
* Copyright (c) 2011, 2012, 2013, 2014, 2015, 2017, 2018, 2020, 2022
* Ingo Schwarze <schwarze@openbsd.org>
case '\0':
iendarg = --iend;
/* FALLTHROUGH */
+ case '.':
case '\\':
default:
iarg--;
case ' ':
case '\'':
case '-':
- case '.':
case '0':
case ':':
case '_':
err = MANDOCERR_ESC_UNSUPP;
break;
case ESCAPE_UNDEF:
- if (buf[inam] == '\\')
+ if (buf[inam] == '\\' || buf[inam] == '.')
return rval;
err = MANDOCERR_ESC_UNDEF;
break;