summaryrefslogtreecommitdiffstats
path: root/regress/char/unicode
diff options
context:
space:
mode:
Diffstat (limited to 'regress/char/unicode')
-rw-r--r--regress/char/unicode/Makefile13
-rw-r--r--regress/char/unicode/ascii.in28
-rw-r--r--regress/char/unicode/ascii.out_ascii34
-rw-r--r--regress/char/unicode/ascii.out_html22
-rw-r--r--regress/char/unicode/ascii.out_utf834
-rw-r--r--regress/char/unicode/input.inbin0 -> 2371 bytes
-rw-r--r--regress/char/unicode/input.out_ascii67
-rw-r--r--regress/char/unicode/input.out_lint81
-rw-r--r--regress/char/unicode/input.out_utf867
-rw-r--r--regress/char/unicode/invalid.in17
-rw-r--r--regress/char/unicode/invalid.out_ascii16
-rw-r--r--regress/char/unicode/invalid.out_html8
-rw-r--r--regress/char/unicode/invalid.out_lint9
-rw-r--r--regress/char/unicode/invalid.out_utf816
-rw-r--r--regress/char/unicode/latin1.in92
-rw-r--r--regress/char/unicode/latin1.out_ascii98
-rw-r--r--regress/char/unicode/latin1.out_html86
-rw-r--r--regress/char/unicode/latin1.out_utf898
-rw-r--r--regress/char/unicode/latin1diff.in19
-rw-r--r--regress/char/unicode/latin1diff.out_ascii25
-rw-r--r--regress/char/unicode/latin1diff.out_html13
-rw-r--r--regress/char/unicode/latin1diff.out_utf825
-rw-r--r--regress/char/unicode/man.in12
-rw-r--r--regress/char/unicode/man.out_utf819
-rw-r--r--regress/char/unicode/mdoc.in15
-rw-r--r--regress/char/unicode/mdoc.out_utf815
-rw-r--r--regress/char/unicode/named.in155
-rw-r--r--regress/char/unicode/named.out_ascii161
-rw-r--r--regress/char/unicode/named.out_html149
-rw-r--r--regress/char/unicode/named.out_utf8161
-rw-r--r--regress/char/unicode/namediff.in43
-rw-r--r--regress/char/unicode/namediff.out_ascii49
-rw-r--r--regress/char/unicode/namediff.out_html37
-rw-r--r--regress/char/unicode/namediff.out_utf849
-rw-r--r--regress/char/unicode/nogroff.in43
-rw-r--r--regress/char/unicode/nogroff.out_ascii49
-rw-r--r--regress/char/unicode/nogroff.out_html37
-rw-r--r--regress/char/unicode/nogroff.out_utf849
38 files changed, 1911 insertions, 0 deletions
diff --git a/regress/char/unicode/Makefile b/regress/char/unicode/Makefile
new file mode 100644
index 00000000..b75ba6db
--- /dev/null
+++ b/regress/char/unicode/Makefile
@@ -0,0 +1,13 @@
+# $OpenBSD: Makefile,v 1.4 2014/12/19 04:57:11 schwarze Exp $
+
+REGRESS_TARGETS = ascii input invalid latin1 latin1diff
+REGRESS_TARGETS += man mdoc named namediff nogroff
+SKIP_ASCII = man mdoc
+UTF8_TARGETS = ${REGRESS_TARGETS}
+HTML_TARGETS = ascii invalid latin1 latin1diff named namediff nogroff
+LINT_TARGETS = input invalid
+
+SKIP_GROFF = input nogroff
+SKIP_GROFF_ASCII = latin1diff namediff
+
+.include <bsd.regress.mk>
diff --git a/regress/char/unicode/ascii.in b/regress/char/unicode/ascii.in
new file mode 100644
index 00000000..c75da2c0
--- /dev/null
+++ b/regress/char/unicode/ascii.in
@@ -0,0 +1,28 @@
+.TH CHAR-UNICODE-ASCII 1 "October 27, 2014" OpenBSD
+.SH NAME
+char-unicode-ascii \- Unicode characters in the ASCII range
+.SH DESCRIPTION
+.nf
+BEGINTEST
+\[u0022]\N'34'\(dq QUOTATION MARK
+\[u0023]\N'35'\(sh NUMBER SIGN
+\[u0024]\N'36'\(Do DOLLAR SIGN
+\[u0027]\N'39'\(aq APOSTROPHE
+\[u002B]\N'43'\(pl PLUS SIGN
+\N'45'\- HYPHEN-MINUS
+\N'46'\. FULL STOP
+\[u002F]\N'47'\(sl SOLIDUS
+\[u003D]\N'61'\(eq EQUALS SIGN
+\[u0040]\N'64'\(at COMMERCIAL AT
+\[u005B]\N'91'\(lB LEFT SQUARE BRACKET
+\[u005C]\N'92'\e\(rs REVERSE SOLIDUS
+\[u005D]\N'93'\(rB RIGHT SQUARE BRACKET
+\[u005E]\N'94'\(a^\(ha CIRCUMFLEX ACCENT
+\[u005F]\N'95'\(ul LOW LINE
+\[u0060]\N'96'\`\(ga GRAVE ACCENT
+\[u007B]\N'123'\(lC LEFT CURLY BRACKET
+\[u007C]\N'124'\(ba\(or VERTICAL LINE
+\[u007D]\N'125'\(rC RIGHT CURLY BRACKET
+\[u007E]\N'126'\(a~\(ti TILDE
+ENDTEST
+.fi
diff --git a/regress/char/unicode/ascii.out_ascii b/regress/char/unicode/ascii.out_ascii
new file mode 100644
index 00000000..74b5d286
--- /dev/null
+++ b/regress/char/unicode/ascii.out_ascii
@@ -0,0 +1,34 @@
+CHAR-UNICODE-ASCII(1) General Commands Manual CHAR-UNICODE-ASCII(1)
+
+
+
+NNAAMMEE
+ char-unicode-ascii - Unicode characters in the ASCII range
+
+DDEESSCCRRIIPPTTIIOONN
+ BEGINTEST
+ """ QUOTATION MARK
+ ### NUMBER SIGN
+ $$$ DOLLAR SIGN
+ ''' APOSTROPHE
+ +++ PLUS SIGN
+ -- HYPHEN-MINUS
+ .. FULL STOP
+ /// SOLIDUS
+ === EQUALS SIGN
+ @@@ COMMERCIAL AT
+ [[[ LEFT SQUARE BRACKET
+ \\\\ REVERSE SOLIDUS
+ ]]] RIGHT SQUARE BRACKET
+ ^^^^ CIRCUMFLEX ACCENT
+ ___ LOW LINE
+ ```` GRAVE ACCENT
+ {{{ LEFT CURLY BRACKET
+ |||| VERTICAL LINE
+ }}} RIGHT CURLY BRACKET
+ ~~~~ TILDE
+ ENDTEST
+
+
+
+OpenBSD October 27, 2014 CHAR-UNICODE-ASCII(1)
diff --git a/regress/char/unicode/ascii.out_html b/regress/char/unicode/ascii.out_html
new file mode 100644
index 00000000..deef5bcb
--- /dev/null
+++ b/regress/char/unicode/ascii.out_html
@@ -0,0 +1,22 @@
+BEGINTEST
+&quot;&quot;&quot; QUOTATION MARK
+### NUMBER SIGN
+$$$ DOLLAR SIGN
+''' APOSTROPHE
++++ PLUS SIGN
+-- HYPHEN-MINUS
+.. FULL STOP
+/// SOLIDUS
+=== EQUALS SIGN
+@@@ COMMERCIAL AT
+[[[ LEFT SQUARE BRACKET
+\\\\ REVERSE SOLIDUS
+]]] RIGHT SQUARE BRACKET
+^^^^ CIRCUMFLEX ACCENT
+___ LOW LINE
+```` GRAVE ACCENT
+{{{ LEFT CURLY BRACKET
+|||| VERTICAL LINE
+}}} RIGHT CURLY BRACKET
+~~~~ TILDE
+ENDTEST
diff --git a/regress/char/unicode/ascii.out_utf8 b/regress/char/unicode/ascii.out_utf8
new file mode 100644
index 00000000..74b5d286
--- /dev/null
+++ b/regress/char/unicode/ascii.out_utf8
@@ -0,0 +1,34 @@
+CHAR-UNICODE-ASCII(1) General Commands Manual CHAR-UNICODE-ASCII(1)
+
+
+
+NNAAMMEE
+ char-unicode-ascii - Unicode characters in the ASCII range
+
+DDEESSCCRRIIPPTTIIOONN
+ BEGINTEST
+ """ QUOTATION MARK
+ ### NUMBER SIGN
+ $$$ DOLLAR SIGN
+ ''' APOSTROPHE
+ +++ PLUS SIGN
+ -- HYPHEN-MINUS
+ .. FULL STOP
+ /// SOLIDUS
+ === EQUALS SIGN
+ @@@ COMMERCIAL AT
+ [[[ LEFT SQUARE BRACKET
+ \\\\ REVERSE SOLIDUS
+ ]]] RIGHT SQUARE BRACKET
+ ^^^^ CIRCUMFLEX ACCENT
+ ___ LOW LINE
+ ```` GRAVE ACCENT
+ {{{ LEFT CURLY BRACKET
+ |||| VERTICAL LINE
+ }}} RIGHT CURLY BRACKET
+ ~~~~ TILDE
+ ENDTEST
+
+
+
+OpenBSD October 27, 2014 CHAR-UNICODE-ASCII(1)
diff --git a/regress/char/unicode/input.in b/regress/char/unicode/input.in
new file mode 100644
index 00000000..15a59f5b
--- /dev/null
+++ b/regress/char/unicode/input.in
Binary files differ
diff --git a/regress/char/unicode/input.out_ascii b/regress/char/unicode/input.out_ascii
new file mode 100644
index 00000000..7711574c
--- /dev/null
+++ b/regress/char/unicode/input.out_ascii
@@ -0,0 +1,67 @@
+CHAR-UNICODE-INPUT(1) General Commands Manual CHAR-UNICODE-INPUT(1)
+
+
+
+NNAAMMEE
+ char-unicode-input - Unicode characters in the input file
+
+DDEESSCCRRIIPPTTIIOONN
+ lowest valid: <80>
+
+ OOnnee--bbyyttee rraannggee
+
+ U+0000 0x00 <NUL>? lowest ASCII
+ U+001f 0x1f <US>? highest ASCII control character
+ U+007f 0x7f <DEL>? highest ASCII
+ 0x80 ? leading lowest continuation
+ 0xbf ? leading highest continuation
+
+ TTwwoo--bbyyttee rraannggee
+
+ U+0000 0xc080 ?? lowest obfuscated ASCII
+ U+007f 0xc1bf ?? highest obfuscated ASCII
+ 0xc278 ?x ASCII continuation
+ U+0080 0xc280 <80><80> lowest two-byte
+ 0xc2c380 ?`A high continuation
+ U+07FF 0xdfbf <?><?> highest two-byte
+
+ TThhrreeee--bbyyttee rraannggee
+
+ U+0000 0xe08080 ??? lowest obfuscated ASCII
+ U+007f 0xe081bf ??? highest obfuscated ASCII
+ U+0080 0xe08280 ??? lowest obfuscated two-byte
+ U+07FF 0xe09fbf ??? highest obfuscated two-byte
+ U+0800 0xe0a080 <?><?> lowest three-byte
+ U+0FFF 0xe0bfbf <?><?> end of first middle byte
+ U+1000 0xe18080 <?><?> begin of second middle byte
+ U+CFFF 0xecbfbf <?><?> end of last normal middle byte
+ U+D000 0xed8080 <?><?> begin of strange middle byte
+ U+D7FF 0xed9fbf <?><?> highest public three-byte
+ U+D800 0xeda080 ??? lowest surrogate
+ U+DFFF 0xedbfbf ??? highest surrogate
+ U+E000 0xee8080 <?><?> lowest private use
+ U+FFFF 0xefbfbf <?><?> highest three-byte
+
+ FFoouurr--bbyyttee rraannggee
+
+ U+0000 0xf0808080 ???? lowest obfuscated ASCII
+ U+007f 0xf08081bf ???? highest obfuscated ASCII
+ U+0080 0xf0808280 ???? lowest obfuscated two-byte
+ U+07FF 0xf0809fbf ???? highest obfuscated two-byte
+ U+0800 0xf080a080 ???? lowest obfuscated three-byte
+ U+FFFF 0xf08fbfbf ???? highest obfuscated three-byte
+ U+10000 0xf0908080 <?><?> lowest four-byte
+ U+3FFFF 0xf0bfbfbf <?><?> end of first middle byte
+ U+40000 0xf1808080 <?><?> second middle byte
+ U+FFFFF 0xf3bfbfbf <?><?> last normal middle byte
+ U+100000 0xf4808080 <?><?> strange middle byte
+ U+10FFFF 0xf48fbfbf <?><?> last valid four-byte
+ U+110000 0xf4908080 ???? lowest beyond Unicode
+ U+13FFFF 0xf4bfbfbf ???? end of strange middle byte
+ U+140000 0xf5808080 ???? lowest invalid middle byte
+ U+1FFFFF 0xf7bfbfbf ???? highest four-byte
+ U+200000 0xf888808080 ????? lowest five-byte
+
+
+
+OpenBSD December 19, 2014 CHAR-UNICODE-INPUT(1)
diff --git a/regress/char/unicode/input.out_lint b/regress/char/unicode/input.out_lint
new file mode 100644
index 00000000..8ac05edc
--- /dev/null
+++ b/regress/char/unicode/input.out_lint
@@ -0,0 +1,81 @@
+mandoc: input.in:10:21: ERROR: skipping bad character: 0x0
+mandoc: input.in:11:21: ERROR: skipping bad character: 0x1f
+mandoc: input.in:12:21: ERROR: skipping bad character: 0x7f
+mandoc: input.in:13:7: ERROR: skipping bad character: 0x80
+mandoc: input.in:14:7: ERROR: skipping bad character: 0xbf
+mandoc: input.in:20:15: ERROR: skipping bad character: 0xc0
+mandoc: input.in:20:16: ERROR: skipping bad character: 0x80
+mandoc: input.in:21:15: ERROR: skipping bad character: 0xc1
+mandoc: input.in:21:16: ERROR: skipping bad character: 0xbf
+mandoc: input.in:22:9: ERROR: skipping bad character: 0xc2
+mandoc: input.in:24:11: ERROR: skipping bad character: 0xc2
+mandoc: input.in:31:17: ERROR: skipping bad character: 0xc0
+mandoc: input.in:31:18: ERROR: skipping bad character: 0x80
+mandoc: input.in:31:19: ERROR: skipping bad character: 0x80
+mandoc: input.in:32:17: ERROR: skipping bad character: 0xe0
+mandoc: input.in:32:18: ERROR: skipping bad character: 0x81
+mandoc: input.in:32:19: ERROR: skipping bad character: 0xbf
+mandoc: input.in:33:17: ERROR: skipping bad character: 0xe0
+mandoc: input.in:33:18: ERROR: skipping bad character: 0x82
+mandoc: input.in:33:19: ERROR: skipping bad character: 0x80
+mandoc: input.in:34:17: ERROR: skipping bad character: 0xe0
+mandoc: input.in:34:18: ERROR: skipping bad character: 0x9f
+mandoc: input.in:34:19: ERROR: skipping bad character: 0xbf
+mandoc: input.in:41:25: ERROR: skipping bad character: 0xed
+mandoc: input.in:41:26: ERROR: skipping bad character: 0xa0
+mandoc: input.in:41:27: ERROR: skipping bad character: 0x80
+mandoc: input.in:41:17: WARNING: invalid escape sequence: \[uD800]
+mandoc: input.in:42:25: ERROR: skipping bad character: 0xed
+mandoc: input.in:42:26: ERROR: skipping bad character: 0xbf
+mandoc: input.in:42:27: ERROR: skipping bad character: 0xbf
+mandoc: input.in:42:17: WARNING: invalid escape sequence: \[uDFFF]
+mandoc: input.in:50:19: ERROR: skipping bad character: 0xf0
+mandoc: input.in:50:20: ERROR: skipping bad character: 0x80
+mandoc: input.in:50:21: ERROR: skipping bad character: 0x80
+mandoc: input.in:50:22: ERROR: skipping bad character: 0x80
+mandoc: input.in:51:19: ERROR: skipping bad character: 0xf0
+mandoc: input.in:51:20: ERROR: skipping bad character: 0x80
+mandoc: input.in:51:21: ERROR: skipping bad character: 0x81
+mandoc: input.in:51:22: ERROR: skipping bad character: 0xbf
+mandoc: input.in:52:19: ERROR: skipping bad character: 0xf0
+mandoc: input.in:52:20: ERROR: skipping bad character: 0x80
+mandoc: input.in:52:21: ERROR: skipping bad character: 0x82
+mandoc: input.in:52:22: ERROR: skipping bad character: 0x80
+mandoc: input.in:53:19: ERROR: skipping bad character: 0xf0
+mandoc: input.in:53:20: ERROR: skipping bad character: 0x80
+mandoc: input.in:53:21: ERROR: skipping bad character: 0x9f
+mandoc: input.in:53:22: ERROR: skipping bad character: 0xbf
+mandoc: input.in:54:19: ERROR: skipping bad character: 0xf0
+mandoc: input.in:54:20: ERROR: skipping bad character: 0x80
+mandoc: input.in:54:21: ERROR: skipping bad character: 0xa0
+mandoc: input.in:54:22: ERROR: skipping bad character: 0x80
+mandoc: input.in:55:19: ERROR: skipping bad character: 0xf0
+mandoc: input.in:55:20: ERROR: skipping bad character: 0x8f
+mandoc: input.in:55:21: ERROR: skipping bad character: 0xbf
+mandoc: input.in:55:22: ERROR: skipping bad character: 0xbf
+mandoc: input.in:62:31: ERROR: skipping bad character: 0xf4
+mandoc: input.in:62:32: ERROR: skipping bad character: 0x90
+mandoc: input.in:62:33: ERROR: skipping bad character: 0x80
+mandoc: input.in:62:34: ERROR: skipping bad character: 0x80
+mandoc: input.in:62:21: WARNING: invalid escape sequence: \[u110000]
+mandoc: input.in:63:31: ERROR: skipping bad character: 0xf4
+mandoc: input.in:63:32: ERROR: skipping bad character: 0xbf
+mandoc: input.in:63:33: ERROR: skipping bad character: 0xbf
+mandoc: input.in:63:34: ERROR: skipping bad character: 0xbf
+mandoc: input.in:63:21: WARNING: invalid escape sequence: \[u13FFFF]
+mandoc: input.in:64:31: ERROR: skipping bad character: 0xf5
+mandoc: input.in:64:32: ERROR: skipping bad character: 0x80
+mandoc: input.in:64:33: ERROR: skipping bad character: 0x80
+mandoc: input.in:64:34: ERROR: skipping bad character: 0x80
+mandoc: input.in:64:21: WARNING: invalid escape sequence: \[u140000]
+mandoc: input.in:65:31: ERROR: skipping bad character: 0xf7
+mandoc: input.in:65:32: ERROR: skipping bad character: 0xbf
+mandoc: input.in:65:33: ERROR: skipping bad character: 0xbf
+mandoc: input.in:65:34: ERROR: skipping bad character: 0xbf
+mandoc: input.in:65:21: WARNING: invalid escape sequence: \[u1FFFFF]
+mandoc: input.in:66:33: ERROR: skipping bad character: 0xf8
+mandoc: input.in:66:34: ERROR: skipping bad character: 0x88
+mandoc: input.in:66:35: ERROR: skipping bad character: 0x80
+mandoc: input.in:66:36: ERROR: skipping bad character: 0x80
+mandoc: input.in:66:37: ERROR: skipping bad character: 0x80
+mandoc: input.in:66:23: WARNING: invalid escape sequence: \[u200000]
diff --git a/regress/char/unicode/input.out_utf8 b/regress/char/unicode/input.out_utf8
new file mode 100644
index 00000000..890835d3
--- /dev/null
+++ b/regress/char/unicode/input.out_utf8
@@ -0,0 +1,67 @@
+CHAR-UNICODE-INPUT(1) General Commands Manual CHAR-UNICODE-INPUT(1)
+
+
+
+NNAAMMEE
+ char-unicode-input - Unicode characters in the input file
+
+DDEESSCCRRIIPPTTIIOONN
+ lowest valid: �
+
+ OOnnee--bbyyttee rraannggee
+
+ U+0000 0x00 �? lowest ASCII
+ U+001f 0x1f �? highest ASCII control character
+ U+007f 0x7f �? highest ASCII
+ 0x80 ? leading lowest continuation
+ 0xbf ? leading highest continuation
+
+ TTwwoo--bbyyttee rraannggee
+
+ U+0000 0xc080 ?? lowest obfuscated ASCII
+ U+007f 0xc1bf ?? highest obfuscated ASCII
+ 0xc278 ?x ASCII continuation
+ U+0080 0xc280 �� lowest two-byte
+ 0xc2c380 ?À high continuation
+ U+07FF 0xdfbf ߿߿ highest two-byte
+
+ TThhrreeee--bbyyttee rraannggee
+
+ U+0000 0xe08080 ??? lowest obfuscated ASCII
+ U+007f 0xe081bf ??? highest obfuscated ASCII
+ U+0080 0xe08280 ??? lowest obfuscated two-byte
+ U+07FF 0xe09fbf ??? highest obfuscated two-byte
+ U+0800 0xe0a080 ࠀࠀ lowest three-byte
+ U+0FFF 0xe0bfbf ࿿࿿ end of first middle byte
+ U+1000 0xe18080 ကက begin of second middle byte
+ U+CFFF 0xecbfbf 쿿쿿 end of last normal middle byte
+ U+D000 0xed8080 퀀퀀 begin of strange middle byte
+ U+D7FF 0xed9fbf ퟿퟿ highest public three-byte
+ U+D800 0xeda080 ??? lowest surrogate
+ U+DFFF 0xedbfbf ??? highest surrogate
+ U+E000 0xee8080  lowest private use
+ U+FFFF 0xefbfbf ￿￿ highest three-byte
+
+ FFoouurr--bbyyttee rraannggee
+
+ U+0000 0xf0808080 ???? lowest obfuscated ASCII
+ U+007f 0xf08081bf ???? highest obfuscated ASCII
+ U+0080 0xf0808280 ???? lowest obfuscated two-byte
+ U+07FF 0xf0809fbf ???? highest obfuscated two-byte
+ U+0800 0xf080a080 ???? lowest obfuscated three-byte
+ U+FFFF 0xf08fbfbf ???? highest obfuscated three-byte
+ U+10000 0xf0908080 𐀀𐀀 lowest four-byte
+ U+3FFFF 0xf0bfbfbf 𿿿𿿿 end of first middle byte
+ U+40000 0xf1808080 񀀀񀀀 second middle byte
+ U+FFFFF 0xf3bfbfbf 󿿿󿿿 last normal middle byte
+ U+100000 0xf4808080 􀀀􀀀 strange middle byte
+ U+10FFFF 0xf48fbfbf 􏿿􏿿 last valid four-byte
+ U+110000 0xf4908080 ???? lowest beyond Unicode
+ U+13FFFF 0xf4bfbfbf ???? end of strange middle byte
+ U+140000 0xf5808080 ???? lowest invalid middle byte
+ U+1FFFFF 0xf7bfbfbf ???? highest four-byte
+ U+200000 0xf888808080 ????? lowest five-byte
+
+
+
+OpenBSD December 19, 2014 CHAR-UNICODE-INPUT(1)
diff --git a/regress/char/unicode/invalid.in b/regress/char/unicode/invalid.in
new file mode 100644
index 00000000..4c0432bc
--- /dev/null
+++ b/regress/char/unicode/invalid.in
@@ -0,0 +1,17 @@
+.Dd October 28, 2014
+.Dt CHAR-UNICODE-INVALID 1
+.Os OpenBSD
+.Sh NAME
+.Nm char-unicode-invalid
+.Nd invalid unicode characters
+.Sh DESCRIPTION
+.Bd -unfilled
+BEGINTEST
+too short: >\[u2B].\[u02B]<
+just right: >\[u002B]<
+too long: >\[u0002B].\[u00002B].\[u000002B]<
+too large: >\[u110000].\[u200000].\[u1000000]<
+trailing garbage: >\[u1234g]<
+not unicode: >\[ul].\[ua].\[uA]<
+ENDTEST
+.Ed
diff --git a/regress/char/unicode/invalid.out_ascii b/regress/char/unicode/invalid.out_ascii
new file mode 100644
index 00000000..c30a7617
--- /dev/null
+++ b/regress/char/unicode/invalid.out_ascii
@@ -0,0 +1,16 @@
+CHAR-UNICODE-INVALID(1) General Commands Manual CHAR-UNICODE-INVALID(1)
+
+NNAAMMEE
+ cchhaarr--uunniiccooddee--iinnvvaalliidd - invalid unicode characters
+
+DDEESSCCRRIIPPTTIIOONN
+ BEGINTEST
+ too short: >.<
+ just right: >+<
+ too long: >..<
+ too large: >..<
+ trailing garbage: ><
+ not unicode: >_.|^.=^<
+ ENDTEST
+
+OpenBSD October 28, 2014 OpenBSD
diff --git a/regress/char/unicode/invalid.out_html b/regress/char/unicode/invalid.out_html
new file mode 100644
index 00000000..6456d728
--- /dev/null
+++ b/regress/char/unicode/invalid.out_html
@@ -0,0 +1,8 @@
+BEGINTEST
+too short: &gt;.&lt;
+just right: &gt;+&lt;
+too long: &gt;..&lt;
+too large: &gt;..&lt;
+trailing garbage: &gt;&lt;
+not unicode: &gt;_.&#8593;.&#8657;&lt;
+ENDTEST
diff --git a/regress/char/unicode/invalid.out_lint b/regress/char/unicode/invalid.out_lint
new file mode 100644
index 00000000..c200a620
--- /dev/null
+++ b/regress/char/unicode/invalid.out_lint
@@ -0,0 +1,9 @@
+mandoc: invalid.in:10:20: WARNING: invalid escape sequence: \[u02B]
+mandoc: invalid.in:10:13: WARNING: invalid escape sequence: \[u2B]
+mandoc: invalid.in:12:33: WARNING: invalid escape sequence: \[u000002B]
+mandoc: invalid.in:12:22: WARNING: invalid escape sequence: \[u00002B]
+mandoc: invalid.in:12:12: WARNING: invalid escape sequence: \[u0002B]
+mandoc: invalid.in:13:35: WARNING: invalid escape sequence: \[u1000000]
+mandoc: invalid.in:13:24: WARNING: invalid escape sequence: \[u200000]
+mandoc: invalid.in:13:13: WARNING: invalid escape sequence: \[u110000]
+mandoc: invalid.in:14:20: WARNING: invalid escape sequence: \[u1234g]
diff --git a/regress/char/unicode/invalid.out_utf8 b/regress/char/unicode/invalid.out_utf8
new file mode 100644
index 00000000..ed91d82a
--- /dev/null
+++ b/regress/char/unicode/invalid.out_utf8
@@ -0,0 +1,16 @@
+CHAR-UNICODE-INVALID(1) General Commands Manual CHAR-UNICODE-INVALID(1)
+
+NNAAMMEE
+ cchhaarr--uunniiccooddee--iinnvvaalliidd – invalid unicode characters
+
+DDEESSCCRRIIPPTTIIOONN
+ BEGINTEST
+ too short: >.<
+ just right: >+<
+ too long: >..<
+ too large: >..<
+ trailing garbage: ><
+ not unicode: >_.↑.⇑<
+ ENDTEST
+
+OpenBSD October 28, 2014 OpenBSD
diff --git a/regress/char/unicode/latin1.in b/regress/char/unicode/latin1.in
new file mode 100644
index 00000000..4c99e986
--- /dev/null
+++ b/regress/char/unicode/latin1.in
@@ -0,0 +1,92 @@
+.TH CHAR-UNICODE-LATIN1 1 "October 27, 2014" OpenBSD
+.SH NAME
+char-unicode-latin1 \- Unicode characters in the ISO-8859-1 range
+.SH DESCRIPTION
+.nf
+BEGINTEST
+\[u00A2]\(ct CENT SIGN
+\[u00A4]\(Cs CURRENCY SIGN
+\[u00A5]\(Ye YEN SIGN
+\[u00A6]\(bb BROKEN BAR
+\[u00A8]\(ad DIAERESIS
+\[u00A9]\(co COPYRIGHT SIGN
+\[u00AA] FEMININE ORDINAL INDICATOR
+\[u00AB]\(Fo LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+\[u00AC]\(no\[tno] NOT SIGN
+\[u00AD] SOFT HYPHEN
+\[u00AE]\(rg REGISTERED SIGN
+\[u00B1]\(+-\[t+-] PLUS-MINUS SIGN
+\[u00B2] SUPERSCRIPT TWO
+\[u00B3] SUPERSCRIPT THREE
+\[u00B4]\'\(aa ACUTE ACCENT
+\[u00B5]\(mc MICRO SIGN
+\[u00B7]\(pc MIDDLE DOT
+\[u00B8]\(ac CEDILLA
+\[u00B9] SUPERSCRIPT ONE
+\[u00BA] MASCULINE ORDINAL INDICATOR
+\[u00BB]\(Fc RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+\[u00BC]\(14 VULGAR FRACTION ONE QUARTER
+\[u00BD]\(12 VULGAR FRACTION ONE HALF
+\[u00BE]\(34 VULGAR FRACTION THREE QUARTERS
+\[u00C0]\(`A LATIN CAPITAL LETTER A WITH GRAVE
+\[u00C1]\('A LATIN CAPITAL LETTER A WITH ACUTE
+\[u00C2]\(^A LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+\[u00C3]\(~A LATIN CAPITAL LETTER A WITH TILDE
+\[u00C4]\(:A LATIN CAPITAL LETTER A WITH DIAERESIS
+\[u00C5]\(oA LATIN CAPITAL LETTER A WITH RING ABOVE
+\[u00C6]\(AE LATIN CAPITAL LETTER AE
+\[u00C7]\(,C LATIN CAPITAL LETTER C WITH CEDILLA
+\[u00C8]\(`E LATIN CAPITAL LETTER E WITH GRAVE
+\[u00C9]\('E LATIN CAPITAL LETTER E WITH ACUTE
+\[u00CA]\(^E LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+\[u00CB]\(:E LATIN CAPITAL LETTER E WITH DIAERESIS
+\[u00CC]\(`I LATIN CAPITAL LETTER I WITH GRAVE
+\[u00CD]\('I LATIN CAPITAL LETTER I WITH ACUTE
+\[u00CE]\(^I LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+\[u00CF]\(:I LATIN CAPITAL LETTER I WITH DIAERESIS
+\[u00D0]\(-D LATIN CAPITAL LETTER ETH
+\[u00D1]\(~N LATIN CAPITAL LETTER N WITH TILDE
+\[u00D2]\(`O LATIN CAPITAL LETTER O WITH GRAVE
+\[u00D3]\('O LATIN CAPITAL LETTER O WITH ACUTE
+\[u00D4]\(^O LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+\[u00D5]\(~O LATIN CAPITAL LETTER O WITH TILDE
+\[u00D6]\(:O LATIN CAPITAL LETTER O WITH DIAERESIS
+\[u00D7]\(mu\[tmu] MULTIPLICATION SIGN
+\[u00D8]\(/O LATIN CAPITAL LETTER O WITH STROKE
+\[u00D9]\(`U LATIN CAPITAL LETTER U WITH GRAVE
+\[u00DA]\('U LATIN CAPITAL LETTER U WITH ACUTE
+\[u00DB]\(^U LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+\[u00DC]\(:U LATIN CAPITAL LETTER U WITH DIAERESIS
+\[u00DD] LATIN CAPITAL LETTER Y WITH ACUTE
+\[u00E0]\(`a LATIN SMALL LETTER A WITH GRAVE
+\[u00E1]\('a LATIN SMALL LETTER A WITH ACUTE
+\[u00E2]\(^a LATIN SMALL LETTER A WITH CIRCUMFLEX
+\[u00E3]\(~a LATIN SMALL LETTER A WITH TILDE
+\[u00E4]\(:a LATIN SMALL LETTER A WITH DIAERESIS
+\[u00E5]\(oa LATIN SMALL LETTER A WITH RING ABOVE
+\[u00E6]\(ae LATIN SMALL LETTER AE
+\[u00E7]\(,c LATIN SMALL LETTER C WITH CEDILLA
+\[u00E8]\(`e LATIN SMALL LETTER E WITH GRAVE
+\[u00E9]\('e LATIN SMALL LETTER E WITH ACUTE
+\[u00EA]\(^e LATIN SMALL LETTER E WITH CIRCUMFLEX
+\[u00EB]\(:e LATIN SMALL LETTER E WITH DIAERESIS
+\[u00EC]\(`i LATIN SMALL LETTER I WITH GRAVE
+\[u00ED]\('i LATIN SMALL LETTER I WITH ACUTE
+\[u00EE]\(^i LATIN SMALL LETTER I WITH CIRCUMFLEX
+\[u00EF]\(:i LATIN SMALL LETTER I WITH DIAERESIS
+\[u00F1]\(~n LATIN SMALL LETTER N WITH TILDE
+\[u00F2]\(`o LATIN SMALL LETTER O WITH GRAVE
+\[u00F3]\('o LATIN SMALL LETTER O WITH ACUTE
+\[u00F4]\(^o LATIN SMALL LETTER O WITH CIRCUMFLEX
+\[u00F5]\(~o LATIN SMALL LETTER O WITH TILDE
+\[u00F6]\(:o LATIN SMALL LETTER O WITH DIAERESIS
+\[u00F7]\(di\[tdi] DIVISION SIGN
+\[u00F8]\(/o LATIN SMALL LETTER O WITH STROKE
+\[u00F9]\(`u LATIN SMALL LETTER U WITH GRAVE
+\[u00FA]\('u LATIN SMALL LETTER U WITH ACUTE
+\[u00FB]\(^u LATIN SMALL LETTER U WITH CIRCUMFLEX
+\[u00FC]\(:u LATIN SMALL LETTER U WITH DIAERESIS
+\[u00FD] LATIN SMALL LETTER Y WITH ACUTE
+\[u00FF]\(:y LATIN SMALL LETTER Y WITH DIAERESIS
+ENDTEST
+.fi
diff --git a/regress/char/unicode/latin1.out_ascii b/regress/char/unicode/latin1.out_ascii
new file mode 100644
index 00000000..1eb8436d
--- /dev/null
+++ b/regress/char/unicode/latin1.out_ascii
@@ -0,0 +1,98 @@
+CHAR-UNICODE-LATIN1(1) General Commands Manual CHAR-UNICODE-LATIN1(1)
+
+
+
+NNAAMMEE
+ char-unicode-latin1 - Unicode characters in the ISO-8859-1 range
+
+DDEESSCCRRIIPPTTIIOONN
+ BEGINTEST
+ /c/c CENT SIGN
+ oxox CURRENCY SIGN
+ =Y=Y YEN SIGN
+ || BROKEN BAR
+ "" DIAERESIS
+ (C)(C) COPYRIGHT SIGN
+ _a FEMININE ORDINAL INDICATOR
+ <<<< LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ ~~~ NOT SIGN
+ SOFT HYPHEN
+ (R)(R) REGISTERED SIGN
+ +-+-+- PLUS-MINUS SIGN
+ 2 SUPERSCRIPT TWO
+ 3 SUPERSCRIPT THREE
+ ''' ACUTE ACCENT
+ ,u,u MICRO SIGN
+ .. MIDDLE DOT
+ ,, CEDILLA
+ 1 SUPERSCRIPT ONE
+ _o MASCULINE ORDINAL INDICATOR
+ >>>> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 1/41/4 VULGAR FRACTION ONE QUARTER
+ 1/21/2 VULGAR FRACTION ONE HALF
+ 3/43/4 VULGAR FRACTION THREE QUARTERS
+ `A`A LATIN CAPITAL LETTER A WITH GRAVE
+ 'A'A LATIN CAPITAL LETTER A WITH ACUTE
+ ^A^A LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ ~A~A LATIN CAPITAL LETTER A WITH TILDE
+ "A"A LATIN CAPITAL LETTER A WITH DIAERESIS
+ oAoA LATIN CAPITAL LETTER A WITH RING ABOVE
+ AEAE LATIN CAPITAL LETTER AE
+ ,C,C LATIN CAPITAL LETTER C WITH CEDILLA
+ `E`E LATIN CAPITAL LETTER E WITH GRAVE
+ 'E'E LATIN CAPITAL LETTER E WITH ACUTE
+ ^E^E LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ "E"E LATIN CAPITAL LETTER E WITH DIAERESIS
+ `I`I LATIN CAPITAL LETTER I WITH GRAVE
+ 'I'I LATIN CAPITAL LETTER I WITH ACUTE
+ ^I^I LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ "I"I LATIN CAPITAL LETTER I WITH DIAERESIS
+ -D-D LATIN CAPITAL LETTER ETH
+ ~N~N LATIN CAPITAL LETTER N WITH TILDE
+ `O`O LATIN CAPITAL LETTER O WITH GRAVE
+ 'O'O LATIN CAPITAL LETTER O WITH ACUTE
+ ^O^O LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ ~O~O LATIN CAPITAL LETTER O WITH TILDE
+ "O"O LATIN CAPITAL LETTER O WITH DIAERESIS
+ xxx MULTIPLICATION SIGN
+ /O/O LATIN CAPITAL LETTER O WITH STROKE
+ `U`U LATIN CAPITAL LETTER U WITH GRAVE
+ 'U'U LATIN CAPITAL LETTER U WITH ACUTE
+ ^U^U LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ "U"U LATIN CAPITAL LETTER U WITH DIAERESIS
+ 'Y LATIN CAPITAL LETTER Y WITH ACUTE
+ `a`a LATIN SMALL LETTER A WITH GRAVE
+ 'a'a LATIN SMALL LETTER A WITH ACUTE
+ ^a^a LATIN SMALL LETTER A WITH CIRCUMFLEX
+ ~a~a LATIN SMALL LETTER A WITH TILDE
+ "a"a LATIN SMALL LETTER A WITH DIAERESIS
+ oaoa LATIN SMALL LETTER A WITH RING ABOVE
+ aeae LATIN SMALL LETTER AE
+ ,c,c LATIN SMALL LETTER C WITH CEDILLA
+ `e`e LATIN SMALL LETTER E WITH GRAVE
+ 'e'e LATIN SMALL LETTER E WITH ACUTE
+ ^e^e LATIN SMALL LETTER E WITH CIRCUMFLEX
+ "e"e LATIN SMALL LETTER E WITH DIAERESIS
+ `i`i LATIN SMALL LETTER I WITH GRAVE
+ 'i'i LATIN SMALL LETTER I WITH ACUTE
+ ^i^i LATIN SMALL LETTER I WITH CIRCUMFLEX
+ "i"i LATIN SMALL LETTER I WITH DIAERESIS
+ ~n~n LATIN SMALL LETTER N WITH TILDE
+ `o`o LATIN SMALL LETTER O WITH GRAVE
+ 'o'o LATIN SMALL LETTER O WITH ACUTE
+ ^o^o LATIN SMALL LETTER O WITH CIRCUMFLEX
+ ~o~o LATIN SMALL LETTER O WITH TILDE
+ "o"o LATIN SMALL LETTER O WITH DIAERESIS
+ -:--:--:- DIVISION SIGN
+ /o/o LATIN SMALL LETTER O WITH STROKE
+ `u`u LATIN SMALL LETTER U WITH GRAVE
+ 'u'u LATIN SMALL LETTER U WITH ACUTE
+ ^u^u LATIN SMALL LETTER U WITH CIRCUMFLEX
+ "u"u LATIN SMALL LETTER U WITH DIAERESIS
+ 'y LATIN SMALL LETTER Y WITH ACUTE
+ "y"y LATIN SMALL LETTER Y WITH DIAERESIS
+ ENDTEST
+
+
+
+OpenBSD October 27, 2014 CHAR-UNICODE-LATIN1(1)
diff --git a/regress/char/unicode/latin1.out_html b/regress/char/unicode/latin1.out_html
new file mode 100644
index 00000000..d8fbf958
--- /dev/null
+++ b/regress/char/unicode/latin1.out_html
@@ -0,0 +1,86 @@
+BEGINTEST
+&#162;&#162; CENT SIGN
+&#164;&#164; CURRENCY SIGN
+&#165;&#165; YEN SIGN
+&#166;&#166; BROKEN BAR
+&#168;&#168; DIAERESIS
+&#169;&#169; COPYRIGHT SIGN
+&#170; FEMININE ORDINAL INDICATOR
+&#171;&#171; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+&#172;&#172;&#172; NOT SIGN
+&#173; SOFT HYPHEN
+&#174;&#174; REGISTERED SIGN
+&#177;&#177;&#177; PLUS-MINUS SIGN
+&#178; SUPERSCRIPT TWO
+&#179; SUPERSCRIPT THREE
+&#180;&#180;&#180; ACUTE ACCENT
+&#181;&#181; MICRO SIGN
+&#183;&#183; MIDDLE DOT
+&#184;&#184; CEDILLA
+&#185; SUPERSCRIPT ONE
+&#186; MASCULINE ORDINAL INDICATOR
+&#187;&#187; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+&#188;&#188; VULGAR FRACTION ONE QUARTER
+&#189;&#189; VULGAR FRACTION ONE HALF
+&#190;&#190; VULGAR FRACTION THREE QUARTERS
+&#192;&#192; LATIN CAPITAL LETTER A WITH GRAVE
+&#193;&#193; LATIN CAPITAL LETTER A WITH ACUTE
+&#194;&#194; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+&#195;&#195; LATIN CAPITAL LETTER A WITH TILDE
+&#196;&#196; LATIN CAPITAL LETTER A WITH DIAERESIS
+&#197;&#197; LATIN CAPITAL LETTER A WITH RING ABOVE
+&#198;&#198; LATIN CAPITAL LETTER AE
+&#199;&#199; LATIN CAPITAL LETTER C WITH CEDILLA
+&#200;&#200; LATIN CAPITAL LETTER E WITH GRAVE
+&#201;&#201; LATIN CAPITAL LETTER E WITH ACUTE
+&#202;&#202; LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+&#203;&#203; LATIN CAPITAL LETTER E WITH DIAERESIS
+&#204;&#204; LATIN CAPITAL LETTER I WITH GRAVE
+&#205;&#205; LATIN CAPITAL LETTER I WITH ACUTE
+&#206;&#206; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+&#207;&#207; LATIN CAPITAL LETTER I WITH DIAERESIS
+&#208;&#208; LATIN CAPITAL LETTER ETH
+&#209;&#209; LATIN CAPITAL LETTER N WITH TILDE
+&#210;&#210; LATIN CAPITAL LETTER O WITH GRAVE
+&#211;&#211; LATIN CAPITAL LETTER O WITH ACUTE
+&#212;&#212; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+&#213;&#213; LATIN CAPITAL LETTER O WITH TILDE
+&#214;&#214; LATIN CAPITAL LETTER O WITH DIAERESIS
+&#215;&#215;&#215; MULTIPLICATION SIGN
+&#216;&#216; LATIN CAPITAL LETTER O WITH STROKE
+&#217;&#217; LATIN CAPITAL LETTER U WITH GRAVE
+&#218;&#218; LATIN CAPITAL LETTER U WITH ACUTE
+&#219;&#219; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+&#220;&#220; LATIN CAPITAL LETTER U WITH DIAERESIS
+&#221; LATIN CAPITAL LETTER Y WITH ACUTE
+&#224;&#224; LATIN SMALL LETTER A WITH GRAVE
+&#225;&#225; LATIN SMALL LETTER A WITH ACUTE
+&#226;&#226; LATIN SMALL LETTER A WITH CIRCUMFLEX
+&#227;&#227; LATIN SMALL LETTER A WITH TILDE
+&#228;&#228; LATIN SMALL LETTER A WITH DIAERESIS
+&#229;&#229; LATIN SMALL LETTER A WITH RING ABOVE
+&#230;&#230; LATIN SMALL LETTER AE
+&#231;&#231; LATIN SMALL LETTER C WITH CEDILLA
+&#232;&#232; LATIN SMALL LETTER E WITH GRAVE
+&#233;&#233; LATIN SMALL LETTER E WITH ACUTE
+&#234;&#234; LATIN SMALL LETTER E WITH CIRCUMFLEX
+&#235;&#235; LATIN SMALL LETTER E WITH DIAERESIS
+&#236;&#236; LATIN SMALL LETTER I WITH GRAVE
+&#237;&#237; LATIN SMALL LETTER I WITH ACUTE
+&#238;&#238; LATIN SMALL LETTER I WITH CIRCUMFLEX
+&#239;&#239; LATIN SMALL LETTER I WITH DIAERESIS
+&#241;&#241; LATIN SMALL LETTER N WITH TILDE
+&#242;&#242; LATIN SMALL LETTER O WITH GRAVE
+&#243;&#243; LATIN SMALL LETTER O WITH ACUTE
+&#244;&#244; LATIN SMALL LETTER O WITH CIRCUMFLEX
+&#245;&#245; LATIN SMALL LETTER O WITH TILDE
+&#246;&#246; LATIN SMALL LETTER O WITH DIAERESIS
+&#247;&#247;&#247; DIVISION SIGN
+&#248;&#248; LATIN SMALL LETTER O WITH STROKE
+&#249;&#249; LATIN SMALL LETTER U WITH GRAVE
+&#250;&#250; LATIN SMALL LETTER U WITH ACUTE
+&#251;&#251; LATIN SMALL LETTER U WITH CIRCUMFLEX
+&#252;&#252; LATIN SMALL LETTER U WITH DIAERESIS
+&#253; LATIN SMALL LETTER Y WITH ACUTE
+&#255;&#255; LATIN SMALL LETTER Y WITH DIAERESIS
+ENDTEST
diff --git a/regress/char/unicode/latin1.out_utf8 b/regress/char/unicode/latin1.out_utf8
new file mode 100644
index 00000000..5fcc6dda
--- /dev/null
+++ b/regress/char/unicode/latin1.out_utf8
@@ -0,0 +1,98 @@
+CHAR-UNICODE-LATIN1(1) General Commands Manual CHAR-UNICODE-LATIN1(1)
+
+
+
+NNAAMMEE
+ char-unicode-latin1 - Unicode characters in the ISO-8859-1 range
+
+DDEESSCCRRIIPPTTIIOONN
+ BEGINTEST
+ ¢¢ CENT SIGN
+ ¤¤ CURRENCY SIGN
+ ¥¥ YEN SIGN
+ ¦¦ BROKEN BAR
+ ¨¨ DIAERESIS
+ ©© COPYRIGHT SIGN
+ ª FEMININE ORDINAL INDICATOR
+ «« LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ ¬¬¬ NOT SIGN
+ ­ SOFT HYPHEN
+ ®® REGISTERED SIGN
+ ±±± PLUS-MINUS SIGN
+ ² SUPERSCRIPT TWO
+ ³ SUPERSCRIPT THREE
+ ´´´ ACUTE ACCENT
+ µµ MICRO SIGN
+ ·· MIDDLE DOT
+ ¸¸ CEDILLA
+ ¹ SUPERSCRIPT ONE
+ º MASCULINE ORDINAL INDICATOR
+ »» RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ ¼¼ VULGAR FRACTION ONE QUARTER
+ ½½ VULGAR FRACTION ONE HALF
+ ¾¾ VULGAR FRACTION THREE QUARTERS
+ ÀÀ LATIN CAPITAL LETTER A WITH GRAVE
+ ÁÁ LATIN CAPITAL LETTER A WITH ACUTE
+ ÂÂ LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ ÃÃ LATIN CAPITAL LETTER A WITH TILDE
+ ÄÄ LATIN CAPITAL LETTER A WITH DIAERESIS
+ ÅÅ LATIN CAPITAL LETTER A WITH RING ABOVE
+ ÆÆ LATIN CAPITAL LETTER AE
+ ÇÇ LATIN CAPITAL LETTER C WITH CEDILLA
+ ÈÈ LATIN CAPITAL LETTER E WITH GRAVE
+ ÉÉ LATIN CAPITAL LETTER E WITH ACUTE
+ ÊÊ LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ ËË LATIN CAPITAL LETTER E WITH DIAERESIS
+ ÌÌ LATIN CAPITAL LETTER I WITH GRAVE
+ ÍÍ LATIN CAPITAL LETTER I WITH ACUTE
+ ÎÎ LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ ÏÏ LATIN CAPITAL LETTER I WITH DIAERESIS
+ ÐÐ LATIN CAPITAL LETTER ETH
+ ÑÑ LATIN CAPITAL LETTER N WITH TILDE
+ ÒÒ LATIN CAPITAL LETTER O WITH GRAVE
+ ÓÓ LATIN CAPITAL LETTER O WITH ACUTE
+ ÔÔ LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ ÕÕ LATIN CAPITAL LETTER O WITH TILDE
+ ÖÖ LATIN CAPITAL LETTER O WITH DIAERESIS
+ ××× MULTIPLICATION SIGN
+ ØØ LATIN CAPITAL LETTER O WITH STROKE
+ ÙÙ LATIN CAPITAL LETTER U WITH GRAVE
+ ÚÚ LATIN CAPITAL LETTER U WITH ACUTE
+ ÛÛ LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ ÜÜ LATIN CAPITAL LETTER U WITH DIAERESIS
+ Ý LATIN CAPITAL LETTER Y WITH ACUTE
+ àà LATIN SMALL LETTER A WITH GRAVE
+ áá LATIN SMALL LETTER A WITH ACUTE
+ ââ LATIN SMALL LETTER A WITH CIRCUMFLEX
+ ãã LATIN SMALL LETTER A WITH TILDE
+ ää LATIN SMALL LETTER A WITH DIAERESIS
+ åå LATIN SMALL LETTER A WITH RING ABOVE
+ ææ LATIN SMALL LETTER AE
+ çç LATIN SMALL LETTER C WITH CEDILLA
+ èè LATIN SMALL LETTER E WITH GRAVE
+ éé LATIN SMALL LETTER E WITH ACUTE
+ êê LATIN SMALL LETTER E WITH CIRCUMFLEX
+ ëë LATIN SMALL LETTER E WITH DIAERESIS
+ ìì LATIN SMALL LETTER I WITH GRAVE
+ íí LATIN SMALL LETTER I WITH ACUTE
+ îî LATIN SMALL LETTER I WITH CIRCUMFLEX
+ ïï LATIN SMALL LETTER I WITH DIAERESIS
+ ññ LATIN SMALL LETTER N WITH TILDE
+ òò LATIN SMALL LETTER O WITH GRAVE
+ óó LATIN SMALL LETTER O WITH ACUTE
+ ôô LATIN SMALL LETTER O WITH CIRCUMFLEX
+ õõ LATIN SMALL LETTER O WITH TILDE
+ öö LATIN SMALL LETTER O WITH DIAERESIS
+ ÷÷÷ DIVISION SIGN
+ øø LATIN SMALL LETTER O WITH STROKE
+ ùù LATIN SMALL LETTER U WITH GRAVE
+ úú LATIN SMALL LETTER U WITH ACUTE
+ ûû LATIN SMALL LETTER U WITH CIRCUMFLEX
+ üü LATIN SMALL LETTER U WITH DIAERESIS
+ ý LATIN SMALL LETTER Y WITH ACUTE
+ ÿÿ LATIN SMALL LETTER Y WITH DIAERESIS
+ ENDTEST
+
+
+
+OpenBSD October 27, 2014 CHAR-UNICODE-LATIN1(1)
diff --git a/regress/char/unicode/latin1diff.in b/regress/char/unicode/latin1diff.in
new file mode 100644
index 00000000..f0e255b5
--- /dev/null
+++ b/regress/char/unicode/latin1diff.in
@@ -0,0 +1,19 @@
+.TH CHAR-UNICODE-LATIN1DIFF 1 "October 27, 2014" OpenBSD
+.SH NAME
+char-unicode-latin1diff \- Unicode characters in the ISO-8859-1 range
+.SH DESCRIPTION
+.nf
+BEGINTEST
+\[u00A1]\(r! INVERTED EXCLAMATION MARK
+\[u00A3]\(Po POUND SIGN
+\[u00A7]\(sc SECTION SIGN
+\[u00AF]\(a- MACRON
+\[u00B0]\(de DEGREE SIGN
+\[u00B6]\(ps PILCROW SIGN
+\[u00BF]\(r? INVERTED QUESTION MARK
+\[u00DE]\(TP LATIN CAPITAL LETTER THORN
+\[u00DF]\(ss LATIN SMALL LETTER SHARP S
+\[u00F0]\(Sd LATIN SMALL LETTER ETH
+\[u00FE]\(Tp LATIN SMALL LETTER THORN
+ENDTEST
+.fi
diff --git a/regress/char/unicode/latin1diff.out_ascii b/regress/char/unicode/latin1diff.out_ascii
new file mode 100644
index 00000000..94095dd9
--- /dev/null
+++ b/regress/char/unicode/latin1diff.out_ascii
@@ -0,0 +1,25 @@
+CHAR-UNICODE-LATIN1DIFF(1) General Commands Manual CHAR-UNICODE-LATIN1DIFF(1)
+
+
+
+NNAAMMEE
+ char-unicode-latin1diff - Unicode characters in the ISO-8859-1 range
+
+DDEESSCCRRIIPPTTIIOONN
+ BEGINTEST
+ !! INVERTED EXCLAMATION MARK
+ GBPGBP POUND SIGN
+ <sec><sec> SECTION SIGN
+ -- MACRON
+ <deg><deg> DEGREE SIGN
+ <par><par> PILCROW SIGN
+ ?? INVERTED QUESTION MARK
+ ThTh LATIN CAPITAL LETTER THORN
+ ssss LATIN SMALL LETTER SHARP S
+ dd LATIN SMALL LETTER ETH
+ thth LATIN SMALL LETTER THORN
+ ENDTEST
+
+
+
+OpenBSD October 27, 2014 CHAR-UNICODE-LATIN1DIFF(1)
diff --git a/regress/char/unicode/latin1diff.out_html b/regress/char/unicode/latin1diff.out_html
new file mode 100644
index 00000000..8d3265c7
--- /dev/null
+++ b/regress/char/unicode/latin1diff.out_html
@@ -0,0 +1,13 @@
+BEGINTEST
+&#161;&#161; INVERTED EXCLAMATION MARK
+&#163;&#163; POUND SIGN
+&#167;&#167; SECTION SIGN
+&#175;&#175; MACRON
+&#176;&#176; DEGREE SIGN
+&#182;&#182; PILCROW SIGN
+&#191;&#191; INVERTED QUESTION MARK
+&#222;&#222; LATIN CAPITAL LETTER THORN
+&#223;&#223; LATIN SMALL LETTER SHARP S
+&#240;&#240; LATIN SMALL LETTER ETH
+&#254;&#254; LATIN SMALL LETTER THORN
+ENDTEST
diff --git a/regress/char/unicode/latin1diff.out_utf8 b/regress/char/unicode/latin1diff.out_utf8
new file mode 100644
index 00000000..58bb0c08
--- /dev/null
+++ b/regress/char/unicode/latin1diff.out_utf8
@@ -0,0 +1,25 @@
+CHAR-UNICODE-LATIN1DIFF(1) General Commands Manual CHAR-UNICODE-LATIN1DIFF(1)
+
+
+
+NNAAMMEE
+ char-unicode-latin1diff - Unicode characters in the ISO-8859-1 range
+
+DDEESSCCRRIIPPTTIIOONN
+ BEGINTEST
+ ¡¡ INVERTED EXCLAMATION MARK
+ ££ POUND SIGN
+ §§ SECTION SIGN
+ ¯¯ MACRON
+ °° DEGREE SIGN
+ ¶¶ PILCROW SIGN
+ ¿¿ INVERTED QUESTION MARK
+ ÞÞ LATIN CAPITAL LETTER THORN
+ ßß LATIN SMALL LETTER SHARP S
+ ðð LATIN SMALL LETTER ETH
+ þþ LATIN SMALL LETTER THORN
+ ENDTEST
+
+
+
+OpenBSD October 27, 2014 CHAR-UNICODE-LATIN1DIFF(1)
diff --git a/regress/char/unicode/man.in b/regress/char/unicode/man.in
new file mode 100644
index 00000000..56148b72
--- /dev/null
+++ b/regress/char/unicode/man.in
@@ -0,0 +1,12 @@
+.TH CHAR-UNICODE-MAN 1 "October 13, 2014" OpenBSD
+.SH NAME
+char-unicode-mdoc \- unicode characters in man code
+.SH DESCRIPTION
+Copyright symbol: \[u00A9] = \C'u00A9'
+.PP
+m-dash: \[u2014] = \C'u2014'
+.PP
+nabla: \[u1D6C1] = \C'u1D6C1'
+.PP
+not really Unicode:
+up arrows: \(ua\(uA = \[ua]\[uA] = \C'ua'\C'uA'
diff --git a/regress/char/unicode/man.out_utf8 b/regress/char/unicode/man.out_utf8
new file mode 100644
index 00000000..8ed9d2ee
--- /dev/null
+++ b/regress/char/unicode/man.out_utf8
@@ -0,0 +1,19 @@
+CHAR-UNICODE-MAN(1) General Commands Manual CHAR-UNICODE-MAN(1)
+
+
+
+NNAAMMEE
+ char-unicode-mdoc - unicode characters in man code
+
+DDEESSCCRRIIPPTTIIOONN
+ Copyright symbol: © = ©
+
+ m-dash: — = —
+
+ nabla: 𝛁 = 𝛁
+
+ not really Unicode: up arrows: ↑⇑ = ↑⇑ = ↑⇑
+
+
+
+OpenBSD October 13, 2014 CHAR-UNICODE-MAN(1)
diff --git a/regress/char/unicode/mdoc.in b/regress/char/unicode/mdoc.in
new file mode 100644
index 00000000..2a7af346
--- /dev/null
+++ b/regress/char/unicode/mdoc.in
@@ -0,0 +1,15 @@
+.Dd October 13, 2014
+.Dt CHAR-UNICODE-MDOC 1
+.Os OpenBSD
+.Sh NAME
+.Nm char-unicode-mdoc
+.Nd unicode characters in mdoc code
+.Sh DESCRIPTION
+Copyright symbol: \[u00A9] = \C'u00A9'
+.Pp
+m-dash: \[u2014] = \C'u2014'
+.Pp
+nabla: \[u1D6C1] = \C'u1D6C1'
+.Pp
+not really Unicode:
+up arrows: \(ua\(uA = \[ua]\[uA] = \C'ua'\C'uA'
diff --git a/regress/char/unicode/mdoc.out_utf8 b/regress/char/unicode/mdoc.out_utf8
new file mode 100644
index 00000000..7b0d13aa
--- /dev/null
+++ b/regress/char/unicode/mdoc.out_utf8
@@ -0,0 +1,15 @@
+CHAR-UNICODE-MDOC(1) General Commands Manual CHAR-UNICODE-MDOC(1)
+
+NNAAMMEE
+ cchhaarr--uunniiccooddee--mmddoocc – unicode characters in mdoc code
+
+DDEESSCCRRIIPPTTIIOONN
+ Copyright symbol: © = ©
+
+ m-dash: — = —
+
+ nabla: 𝛁 = 𝛁
+
+ not really Unicode: up arrows: ↑⇑ = ↑⇑ = ↑⇑
+
+OpenBSD October 13, 2014 OpenBSD
diff --git a/regress/char/unicode/named.in b/regress/char/unicode/named.in
new file mode 100644
index 00000000..5644d325
--- /dev/null
+++ b/regress/char/unicode/named.in
@@ -0,0 +1,155 @@
+.TH CHAR-UNICODE-NAMED 1 "October 27, 2014" OpenBSD
+.SH NAME
+char-unicode-named \- Unicode characters having named escapes
+.SH DESCRIPTION
+.nf
+BEGINTEST
+\[u0131]\(.i LATIN SMALL LETTER DOTLESS I
+\[u0132]\(IJ LATIN CAPITAL LIGATURE IJ
+\[u0133]\(ij LATIN SMALL LIGATURE IJ
+\[u0141]\(/L LATIN CAPITAL LETTER L WITH STROKE
+\[u0142]\(/l LATIN SMALL LETTER L WITH STROKE
+\[u0152]\(OE LATIN CAPITAL LIGATURE OE
+\[u0153]\(oe LATIN SMALL LIGATURE OE
+\[u0192]\(Fn LATIN SMALL LETTER F WITH HOOK
+\[u02C7]\(ah CARON
+\[u02D8]\(ab BREVE
+\[u02DA]\(ao RING ABOVE
+\[u02DB]\(ho OGONEK
+\[u02DD]\(a" DOUBLE ACUTE ACCENT
+\[u0391]\(*A GREEK CAPITAL LETTER ALPHA
+\[u0392]\(*B GREEK CAPITAL LETTER BETA
+\[u0394]\(*D GREEK CAPITAL LETTER DELTA
+\[u0395]\(*E GREEK CAPITAL LETTER EPSILON
+\[u0396]\(*Z GREEK CAPITAL LETTER ZETA
+\[u0397]\(*Y GREEK CAPITAL LETTER ETA
+\[u0398]\(*H GREEK CAPITAL LETTER THETA
+\[u0399]\(*I GREEK CAPITAL LETTER IOTA
+\[u039A]\(*K GREEK CAPITAL LETTER KAPPA
+\[u039B]\(*L GREEK CAPITAL LETTER LAMDA
+\[u039C]\(*M GREEK CAPITAL LETTER MU
+\[u039D]\(*N GREEK CAPITAL LETTER NU
+\[u039E]\(*C GREEK CAPITAL LETTER XI
+\[u039F]\(*O GREEK CAPITAL LETTER OMICRON
+\[u03A0]\(*P GREEK CAPITAL LETTER PI
+\[u03A1]\(*R GREEK CAPITAL LETTER RHO
+\[u03A4]\(*T GREEK CAPITAL LETTER TAU
+\[u03A5]\(*U GREEK CAPITAL LETTER UPSILON
+\[u03A6]\(*F GREEK CAPITAL LETTER PHI
+\[u03A7]\(*X GREEK CAPITAL LETTER CHI
+\[u03A8]\(*Q GREEK CAPITAL LETTER PSI
+\[u03A9]\(*W GREEK CAPITAL LETTER OMEGA
+\[u03B1]\(*a GREEK SMALL LETTER ALPHA
+\[u03B2]\(*b GREEK SMALL LETTER BETA
+\[u03B3]\(*g GREEK SMALL LETTER GAMMA
+\[u03B4]\(*d GREEK SMALL LETTER DELTA
+\[u03B5]\(*e GREEK SMALL LETTER EPSILON
+\[u03B6]\(*z GREEK SMALL LETTER ZETA
+\[u03B7]\(*y GREEK SMALL LETTER ETA
+\[u03B8]\(*h GREEK SMALL LETTER THETA
+\[u03B9]\(*i GREEK SMALL LETTER IOTA
+\[u03BA]\(*k GREEK SMALL LETTER KAPPA
+\[u03BB]\(*l GREEK SMALL LETTER LAMDA
+\[u03BC]\(*m GREEK SMALL LETTER MU
+\[u03BD]\(*n GREEK SMALL LETTER NU
+\[u03BE]\(*c GREEK SMALL LETTER XI
+\[u03BF]\(*o GREEK SMALL LETTER OMICRON
+\[u03C0]\(*p GREEK SMALL LETTER PI
+\[u03C1]\(*r GREEK SMALL LETTER RHO
+\[u03C2]\(ts GREEK SMALL LETTER FINAL SIGMA
+\[u03C3]\(*s GREEK SMALL LETTER SIGMA
+\[u03C4]\(*t GREEK SMALL LETTER TAU
+\[u03C5]\(*u GREEK SMALL LETTER UPSILON
+\[u03C6]\(+f GREEK SMALL LETTER PHI
+\[u03C7]\(*x GREEK SMALL LETTER CHI
+\[u03C8]\(*q GREEK SMALL LETTER PSI
+\[u03C9]\(*w GREEK SMALL LETTER OMEGA
+\[u03D1]\(+h GREEK THETA SYMBOL
+\[u03D5]\(*f GREEK PHI SYMBOL
+\[u03D6]\(+p GREEK PI SYMBOL
+\[u03F5]\(+e GREEK LUNATE EPSILON SYMBOL
+\[u2010]\(hy HYPHEN
+\[u2013]\(en EN DASH
+\[u2014]\(em EM DASH
+\[u2018]\(oq LEFT SINGLE QUOTATION MARK
+\[u2019]\(cq RIGHT SINGLE QUOTATION MARK
+\[u201A]\(bq SINGLE LOW-9 QUOTATION MARK
+\[u201C]\(lq LEFT DOUBLE QUOTATION MARK
+\[u201D]\(rq RIGHT DOUBLE QUOTATION MARK
+\[u201E]\(Bq DOUBLE LOW-9 QUOTATION MARK
+\[u2020]\(dg DAGGER
+\[u2021]\(dd DOUBLE DAGGER
+\[u2022]\(bu BULLET
+\[u2030]\(%0 PER MILLE SIGN
+\[u2032]\(fm PRIME
+\[u2033]\(sd DOUBLE PRIME
+\[u2039]\(fo SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+\[u203A]\(fc SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+\[u2044]\(f/ FRACTION SLASH
+\[u20AC]\(Eu\(eu EURO SIGN
+\[u2111]\(Im BLACK-LETTER CAPITAL I
+\[u211C]\(Re BLACK-LETTER CAPITAL R
+\[u2122]\(tm TRADE MARK SIGN
+\[u2135]\(Ah ALEF SYMBOL
+\[u2190]\(<- LEFTWARDS ARROW
+\[u2191]\(ua UPWARDS ARROW
+\[u2192]\(-> RIGHTWARDS ARROW
+\[u2193]\(da DOWNWARDS ARROW
+\[u2194]\(<> LEFT RIGHT ARROW
+\[u21B5]\(CR DOWNWARDS ARROW WITH CORNER LEFTWARDS
+\[u21D0]\(lA LEFTWARDS DOUBLE ARROW
+\[u21D1]\(uA UPWARDS DOUBLE ARROW
+\[u21D2]\(rA RIGHTWARDS DOUBLE ARROW
+\[u21D3]\(dA DOWNWARDS DOUBLE ARROW
+\[u21D4]\(hA LEFT RIGHT DOUBLE ARROW
+\[u2200]\(fa FOR ALL
+\[u2202]\(pd PARTIAL DIFFERENTIAL
+\[u2203]\(te THERE EXISTS
+\[u2205]\(es EMPTY SET
+\[u2208]\(mo ELEMENT OF
+\[u220B]\(st CONTAINS AS MEMBER
+\[u2212]\(mi MINUS SIGN
+\[u2213]\(-+ MINUS-OR-PLUS SIGN
+\[u2217]\(** ASTERISK OPERATOR
+\[u221A]\(sr SQUARE ROOT
+\[u221D]\(pt PROPORTIONAL TO
+\[u221E]\(if INFINITY
+\[u2220]\(/_ ANGLE
+\[u2227]\(AN LOGICAL AND
+\[u2228]\(OR LOGICAL OR
+\[u2229]\(ca INTERSECTION
+\[u222A]\(cu UNION
+\[u222B]\(is INTEGRAL
+\[u2234]\(tf\(3d THEREFORE
+\[u223C]\(ap TILDE OPERATOR
+\[u2243]\(|= ASYMPTOTICALLY EQUAL TO
+\[u2245]\(=~ APPROXIMATELY EQUAL TO
+\[u2248]\(~~\(~= ALMOST EQUAL TO
+\[u2260]\(!= NOT EQUAL TO
+\[u2261]\(== IDENTICAL TO
+\[u2262]\(ne NOT IDENTICAL TO
+\[u2264]\(<= LESS-THAN OR EQUAL TO
+\[u2265]\(>= GREATER-THAN OR EQUAL TO
+\[u2282]\(sb SUBSET OF
+\[u2283]\(sp SUPERSET OF
+\[u2286]\(ib SUBSET OF OR EQUAL TO
+\[u2287]\(ip SUPERSET OF OR EQUAL TO
+\[u2295]\(c+ CIRCLED PLUS
+\[u2297]\(c* CIRCLED TIMES
+\[u22A5]\(pp UP TACK
+\[u22C5]\(md DOT OPERATOR
+\[u2308]\(lc LEFT CEILING
+\[u2309]\(rc RIGHT CEILING
+\[u230A]\(lf LEFT FLOOR
+\[u230B]\(rf RIGHT FLOOR
+\[u23AA]\(bv CURLY BRACKET EXTENSION
+\[u2502]\(br BOX DRAWINGS LIGHT VERTICAL
+\[u25A1]\(sq WHITE SQUARE
+\[u25CA]\(lz LOZENGE
+\[u25CB]\(ci WHITE CIRCLE
+\[u261C]\(lh WHITE LEFT POINTING INDEX
+\[u261E]\(rh WHITE RIGHT POINTING INDEX
+\[u27E8]\(la MATHEMATICAL LEFT ANGLE BRACKET
+\[u27E9]\(ra MATHEMATICAL RIGHT ANGLE BRACKET
+ENDTEST
+.fi
diff --git a/regress/char/unicode/named.out_ascii b/regress/char/unicode/named.out_ascii
new file mode 100644
index 00000000..3f92caf1
--- /dev/null
+++ b/regress/char/unicode/named.out_ascii
@@ -0,0 +1,161 @@
+CHAR-UNICODE-NAMED(1) General Commands Manual CHAR-UNICODE-NAMED(1)
+
+
+
+NNAAMMEE
+ char-unicode-named - Unicode characters having named escapes
+
+DDEESSCCRRIIPPTTIIOONN
+ BEGINTEST
+ ii LATIN SMALL LETTER DOTLESS I
+ IJIJ LATIN CAPITAL LIGATURE IJ
+ ijij LATIN SMALL LIGATURE IJ
+ /L/L LATIN CAPITAL LETTER L WITH STROKE
+ /l/l LATIN SMALL LETTER L WITH STROKE
+ OEOE LATIN CAPITAL LIGATURE OE
+ oeoe LATIN SMALL LIGATURE OE
+ ,f,f LATIN SMALL LETTER F WITH HOOK
+ vv CARON
+ '`'` BREVE
+ oo RING ABOVE
+ ,, OGONEK
+ "" DOUBLE ACUTE ACCENT
+ AA GREEK CAPITAL LETTER ALPHA
+ BB GREEK CAPITAL LETTER BETA
+ _/_\_/_\ GREEK CAPITAL LETTER DELTA
+ EE GREEK CAPITAL LETTER EPSILON
+ ZZ GREEK CAPITAL LETTER ZETA
+ HH GREEK CAPITAL LETTER ETA
+ -O-O GREEK CAPITAL LETTER THETA
+ II GREEK CAPITAL LETTER IOTA
+ KK GREEK CAPITAL LETTER KAPPA
+ /\/\ GREEK CAPITAL LETTER LAMDA
+ MM GREEK CAPITAL LETTER MU
+ NN GREEK CAPITAL LETTER NU
+ _H_H GREEK CAPITAL LETTER XI
+ OO GREEK CAPITAL LETTER OMICRON
+ TTTT GREEK CAPITAL LETTER PI
+ PP GREEK CAPITAL LETTER RHO
+ TT GREEK CAPITAL LETTER TAU
+ YY GREEK CAPITAL LETTER UPSILON
+ IOIO GREEK CAPITAL LETTER PHI
+ XX GREEK CAPITAL LETTER CHI
+ IYIY GREEK CAPITAL LETTER PSI
+ _O_O GREEK CAPITAL LETTER OMEGA
+ aa GREEK SMALL LETTER ALPHA
+ BB GREEK SMALL LETTER BETA
+ yy GREEK SMALL LETTER GAMMA
+ dd GREEK SMALL LETTER DELTA
+ ee GREEK SMALL LETTER EPSILON
+ ,C,C GREEK SMALL LETTER ZETA
+ nn GREEK SMALL LETTER ETA
+ -0-0 GREEK SMALL LETTER THETA
+ ii GREEK SMALL LETTER IOTA
+ kk GREEK SMALL LETTER KAPPA
+ >\>\ GREEK SMALL LETTER LAMDA
+ ,u,u GREEK SMALL LETTER MU
+ vv GREEK SMALL LETTER NU
+ ,E,E GREEK SMALL LETTER XI
+ oo GREEK SMALL LETTER OMICRON
+ -n-n GREEK SMALL LETTER PI
+ pp GREEK SMALL LETTER RHO
+ ss GREEK SMALL LETTER FINAL SIGMA
+ -o-o GREEK SMALL LETTER SIGMA
+ ~t~t GREEK SMALL LETTER TAU
+ uu GREEK SMALL LETTER UPSILON
+ |o|o GREEK SMALL LETTER PHI
+ xx GREEK SMALL LETTER CHI
+ |u|u GREEK SMALL LETTER PSI
+ ww GREEK SMALL LETTER OMEGA
+ -0-0 GREEK THETA SYMBOL
+ |o|o GREEK PHI SYMBOL
+ -w-w GREEK PI SYMBOL
+ ee GREEK LUNATE EPSILON SYMBOL
+ -- HYPHEN
+ -- EN DASH
+ ---- EM DASH
+ `` LEFT SINGLE QUOTATION MARK
+ '' RIGHT SINGLE QUOTATION MARK
+ ,, SINGLE LOW-9 QUOTATION MARK
+ "" LEFT DOUBLE QUOTATION MARK
+ "" RIGHT DOUBLE QUOTATION MARK
+ ,,,, DOUBLE LOW-9 QUOTATION MARK
+ |-|- DAGGER
+ |=|= DOUBLE DAGGER
+ +o+o BULLET
+ %o%o PER MILLE SIGN
+ '' PRIME
+ '''' DOUBLE PRIME
+ << SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ >> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ // FRACTION SLASH
+ EUREUREUR EURO SIGN
+ II BLACK-LETTER CAPITAL I
+ RR BLACK-LETTER CAPITAL R
+ tmtm TRADE MARK SIGN
+ NN ALEF SYMBOL
+ <-<- LEFTWARDS ARROW
+ |^|^ UPWARDS ARROW
+ ->-> RIGHTWARDS ARROW
+ |v|v DOWNWARDS ARROW
+ <-><-> LEFT RIGHT ARROW
+ _|_| DOWNWARDS ARROW WITH CORNER LEFTWARDS
+ <=<= LEFTWARDS DOUBLE ARROW
+ =^=^ UPWARDS DOUBLE ARROW
+ =>=> RIGHTWARDS DOUBLE ARROW
+ =v=v DOWNWARDS DOUBLE ARROW
+ <=><=> LEFT RIGHT DOUBLE ARROW
+ -V-V FOR ALL
+ aa PARTIAL DIFFERENTIAL
+ 33 THERE EXISTS
+ {}{} EMPTY SET
+ EE ELEMENT OF
+ -)-) CONTAINS AS MEMBER
+ -- MINUS SIGN
+ -+-+ MINUS-OR-PLUS SIGN
+ ** ASTERISK OPERATOR
+ \/\/ SQUARE ROOT
+ ococ PROPORTIONAL TO
+ oooo INFINITY
+ _/_/ ANGLE
+ ^^ LOGICAL AND
+ vv LOGICAL OR
+ (^)(^) INTERSECTION
+ UU UNION
+ ',I',I INTEGRAL
+ .:..:..:. THEREFORE
+ ~~ TILDE OPERATOR
+ -~-~ ASYMPTOTICALLY EQUAL TO
+ =~=~ APPROXIMATELY EQUAL TO
+ ~~~~~= ALMOST EQUAL TO
+ !=!= NOT EQUAL TO
+ ==== IDENTICAL TO
+ !==!== NOT IDENTICAL TO
+ <=<= LESS-THAN OR EQUAL TO
+ >=>= GREATER-THAN OR EQUAL TO
+ (=(= SUBSET OF
+ =)=) SUPERSET OF
+ (=_(=_ SUBSET OF OR EQUAL TO
+ =_)=_) SUPERSET OF OR EQUAL TO
+ O+O+ CIRCLED PLUS
+ OxOx CIRCLED TIMES
+ _|_| UP TACK
+ .. DOT OPERATOR
+ |~|~ LEFT CEILING
+ ~|~| RIGHT CEILING
+ |_|_ LEFT FLOOR
+ _|_| RIGHT FLOOR
+ || CURLY BRACKET EXTENSION
+ || BOX DRAWINGS LIGHT VERTICAL
+ [][] WHITE SQUARE
+ <><> LOZENGE
+ OO WHITE CIRCLE
+ <=<= WHITE LEFT POINTING INDEX
+ =>=> WHITE RIGHT POINTING INDEX
+ << MATHEMATICAL LEFT ANGLE BRACKET
+ >> MATHEMATICAL RIGHT ANGLE BRACKET
+ ENDTEST
+
+
+
+OpenBSD October 27, 2014 CHAR-UNICODE-NAMED(1)
diff --git a/regress/char/unicode/named.out_html b/regress/char/unicode/named.out_html
new file mode 100644
index 00000000..c4de9a5b
--- /dev/null
+++ b/regress/char/unicode/named.out_html
@@ -0,0 +1,149 @@
+BEGINTEST
+&#305;&#305; LATIN SMALL LETTER DOTLESS I
+&#306;&#306; LATIN CAPITAL LIGATURE IJ
+&#307;&#307; LATIN SMALL LIGATURE IJ
+&#321;&#321; LATIN CAPITAL LETTER L WITH STROKE
+&#322;&#322; LATIN SMALL LETTER L WITH STROKE
+&#338;&#338; LATIN CAPITAL LIGATURE OE
+&#339;&#339; LATIN SMALL LIGATURE OE
+&#402;&#402; LATIN SMALL LETTER F WITH HOOK
+&#711;&#711; CARON
+&#728;&#728; BREVE
+&#730;&#730; RING ABOVE
+&#731;&#731; OGONEK
+&#733;&#733; DOUBLE ACUTE ACCENT
+&#913;&#913; GREEK CAPITAL LETTER ALPHA
+&#914;&#914; GREEK CAPITAL LETTER BETA
+&#916;&#916; GREEK CAPITAL LETTER DELTA
+&#917;&#917; GREEK CAPITAL LETTER EPSILON
+&#918;&#918; GREEK CAPITAL LETTER ZETA
+&#919;&#919; GREEK CAPITAL LETTER ETA
+&#920;&#920; GREEK CAPITAL LETTER THETA
+&#921;&#921; GREEK CAPITAL LETTER IOTA
+&#922;&#922; GREEK CAPITAL LETTER KAPPA
+&#923;&#923; GREEK CAPITAL LETTER LAMDA
+&#924;&#924; GREEK CAPITAL LETTER MU
+&#925;&#925; GREEK CAPITAL LETTER NU
+&#926;&#926; GREEK CAPITAL LETTER XI
+&#927;&#927; GREEK CAPITAL LETTER OMICRON
+&#928;&#928; GREEK CAPITAL LETTER PI
+&#929;&#929; GREEK CAPITAL LETTER RHO
+&#932;&#932; GREEK CAPITAL LETTER TAU
+&#933;&#933; GREEK CAPITAL LETTER UPSILON
+&#934;&#934; GREEK CAPITAL LETTER PHI
+&#935;&#935; GREEK CAPITAL LETTER CHI
+&#936;&#936; GREEK CAPITAL LETTER PSI
+&#937;&#937; GREEK CAPITAL LETTER OMEGA
+&#945;&#945; GREEK SMALL LETTER ALPHA
+&#946;&#946; GREEK SMALL LETTER BETA
+&#947;&#947; GREEK SMALL LETTER GAMMA
+&#948;&#948; GREEK SMALL LETTER DELTA
+&#949;&#949; GREEK SMALL LETTER EPSILON
+&#950;&#950; GREEK SMALL LETTER ZETA
+&#951;&#951; GREEK SMALL LETTER ETA
+&#952;&#952; GREEK SMALL LETTER THETA
+&#953;&#953; GREEK SMALL LETTER IOTA
+&#954;&#954; GREEK SMALL LETTER KAPPA
+&#955;&#955; GREEK SMALL LETTER LAMDA
+&#956;&#956; GREEK SMALL LETTER MU
+&#957;&#957; GREEK SMALL LETTER NU
+&#958;&#958; GREEK SMALL LETTER XI
+&#959;&#959; GREEK SMALL LETTER OMICRON
+&#960;&#960; GREEK SMALL LETTER PI
+&#961;&#961; GREEK SMALL LETTER RHO
+&#962;&#962; GREEK SMALL LETTER FINAL SIGMA
+&#963;&#963; GREEK SMALL LETTER SIGMA
+&#964;&#964; GREEK SMALL LETTER TAU
+&#965;&#965; GREEK SMALL LETTER UPSILON
+&#966;&#966; GREEK SMALL LETTER PHI
+&#967;&#967; GREEK SMALL LETTER CHI
+&#968;&#968; GREEK SMALL LETTER PSI
+&#969;&#969; GREEK SMALL LETTER OMEGA
+&#977;&#977; GREEK THETA SYMBOL
+&#981;&#981; GREEK PHI SYMBOL
+&#982;&#982; GREEK PI SYMBOL
+&#1013;&#1013; GREEK LUNATE EPSILON SYMBOL
+&#8208;&#8208; HYPHEN
+&#8211;&#8211; EN DASH
+&#8212;&#8212; EM DASH
+&#8216;&#8216; LEFT SINGLE QUOTATION MARK
+&#8217;&#8217; RIGHT SINGLE QUOTATION MARK
+&#8218;&#8218; SINGLE LOW-9 QUOTATION MARK
+&#8220;&#8220; LEFT DOUBLE QUOTATION MARK
+&#8221;&#8221; RIGHT DOUBLE QUOTATION MARK
+&#8222;&#8222; DOUBLE LOW-9 QUOTATION MARK
+&#8224;&#8224; DAGGER
+&#8225;&#8225; DOUBLE DAGGER
+&#8226;&#8226; BULLET
+&#8240;&#8240; PER MILLE SIGN
+&#8242;&#8242; PRIME
+&#8243;&#8243; DOUBLE PRIME
+&#8249;&#8249; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+&#8250;&#8250; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+&#8260;&#8260; FRACTION SLASH
+&#8364;&#8364;&#8364; EURO SIGN
+&#8465;&#8465; BLACK-LETTER CAPITAL I
+&#8476;&#8476; BLACK-LETTER CAPITAL R
+&#8482;&#8482; TRADE MARK SIGN
+&#8501;&#8501; ALEF SYMBOL
+&#8592;&#8592; LEFTWARDS ARROW
+&#8593;&#8593; UPWARDS ARROW
+&#8594;&#8594; RIGHTWARDS ARROW
+&#8595;&#8595; DOWNWARDS ARROW
+&#8596;&#8596; LEFT RIGHT ARROW
+&#8629;&#8629; DOWNWARDS ARROW WITH CORNER LEFTWARDS
+&#8656;&#8656; LEFTWARDS DOUBLE ARROW
+&#8657;&#8657; UPWARDS DOUBLE ARROW
+&#8658;&#8658; RIGHTWARDS DOUBLE ARROW
+&#8659;&#8659; DOWNWARDS DOUBLE ARROW
+&#8660;&#8660; LEFT RIGHT DOUBLE ARROW
+&#8704;&#8704; FOR ALL
+&#8706;&#8706; PARTIAL DIFFERENTIAL
+&#8707;&#8707; THERE EXISTS
+&#8709;&#8709; EMPTY SET
+&#8712;&#8712; ELEMENT OF
+&#8715;&#8715; CONTAINS AS MEMBER
+&#8722;&#8722; MINUS SIGN
+&#8723;&#8723; MINUS-OR-PLUS SIGN
+&#8727;&#8727; ASTERISK OPERATOR
+&#8730;&#8730; SQUARE ROOT
+&#8733;&#8733; PROPORTIONAL TO
+&#8734;&#8734; INFINITY
+&#8736;&#8736; ANGLE
+&#8743;&#8743; LOGICAL AND
+&#8744;&#8744; LOGICAL OR
+&#8745;&#8745; INTERSECTION
+&#8746;&#8746; UNION
+&#8747;&#8747; INTEGRAL
+&#8756;&#8756;&#8756; THEREFORE
+&#8764;&#8764; TILDE OPERATOR
+&#8771;&#8771; ASYMPTOTICALLY EQUAL TO
+&#8773;&#8773; APPROXIMATELY EQUAL TO
+&#8776;&#8776;&#8776; ALMOST EQUAL TO
+&#8800;&#8800; NOT EQUAL TO
+&#8801;&#8801; IDENTICAL TO
+&#8802;&#8802; NOT IDENTICAL TO
+&#8804;&#8804; LESS-THAN OR EQUAL TO
+&#8805;&#8805; GREATER-THAN OR EQUAL TO
+&#8834;&#8834; SUBSET OF
+&#8835;&#8835; SUPERSET OF
+&#8838;&#8838; SUBSET OF OR EQUAL TO
+&#8839;&#8839; SUPERSET OF OR EQUAL TO
+&#8853;&#8853; CIRCLED PLUS
+&#8855;&#8855; CIRCLED TIMES
+&#8869;&#8869; UP TACK
+&#8901;&#8901; DOT OPERATOR
+&#8968;&#8968; LEFT CEILING
+&#8969;&#8969; RIGHT CEILING
+&#8970;&#8970; LEFT FLOOR
+&#8971;&#8971; RIGHT FLOOR
+&#9130;&#9130; CURLY BRACKET EXTENSION
+&#9474;&#9474; BOX DRAWINGS LIGHT VERTICAL
+&#9633;&#9633; WHITE SQUARE
+&#9674;&#9674; LOZENGE
+&#9675;&#9675; WHITE CIRCLE
+&#9756;&#9756; WHITE LEFT POINTING INDEX
+&#9758;&#9758; WHITE RIGHT POINTING INDEX
+&#10216;&#10216; MATHEMATICAL LEFT ANGLE BRACKET
+&#10217;&#10217; MATHEMATICAL RIGHT ANGLE BRACKET
+ENDTEST
diff --git a/regress/char/unicode/named.out_utf8 b/regress/char/unicode/named.out_utf8
new file mode 100644
index 00000000..3900ceb5
--- /dev/null
+++ b/regress/char/unicode/named.out_utf8
@@ -0,0 +1,161 @@
+CHAR-UNICODE-NAMED(1) General Commands Manual CHAR-UNICODE-NAMED(1)
+
+
+
+NNAAMMEE
+ char-unicode-named - Unicode characters having named escapes
+
+DDEESSCCRRIIPPTTIIOONN
+ BEGINTEST
+ ıı LATIN SMALL LETTER DOTLESS I
+ IJIJ LATIN CAPITAL LIGATURE IJ
+ ijij LATIN SMALL LIGATURE IJ
+ ŁŁ LATIN CAPITAL LETTER L WITH STROKE
+ łł LATIN SMALL LETTER L WITH STROKE
+ ŒŒ LATIN CAPITAL LIGATURE OE
+ œœ LATIN SMALL LIGATURE OE
+ ƒƒ LATIN SMALL LETTER F WITH HOOK
+ ˇˇ CARON
+ ˘˘ BREVE
+ ˚˚ RING ABOVE
+ ˛˛ OGONEK
+ ˝˝ DOUBLE ACUTE ACCENT
+ ΑΑ GREEK CAPITAL LETTER ALPHA
+ ΒΒ GREEK CAPITAL LETTER BETA
+ ΔΔ GREEK CAPITAL LETTER DELTA
+ ΕΕ GREEK CAPITAL LETTER EPSILON
+ ΖΖ GREEK CAPITAL LETTER ZETA
+ ΗΗ GREEK CAPITAL LETTER ETA
+ ΘΘ GREEK CAPITAL LETTER THETA
+ ΙΙ GREEK CAPITAL LETTER IOTA
+ ΚΚ GREEK CAPITAL LETTER KAPPA
+ ΛΛ GREEK CAPITAL LETTER LAMDA
+ ΜΜ GREEK CAPITAL LETTER MU
+ ΝΝ GREEK CAPITAL LETTER NU
+ ΞΞ GREEK CAPITAL LETTER XI
+ ΟΟ GREEK CAPITAL LETTER OMICRON
+ ΠΠ GREEK CAPITAL LETTER PI
+ ΡΡ GREEK CAPITAL LETTER RHO
+ ΤΤ GREEK CAPITAL LETTER TAU
+ ΥΥ GREEK CAPITAL LETTER UPSILON
+ ΦΦ GREEK CAPITAL LETTER PHI
+ ΧΧ GREEK CAPITAL LETTER CHI
+ ΨΨ GREEK CAPITAL LETTER PSI
+ ΩΩ GREEK CAPITAL LETTER OMEGA
+ αα GREEK SMALL LETTER ALPHA
+ ββ GREEK SMALL LETTER BETA
+ γγ GREEK SMALL LETTER GAMMA
+ δδ GREEK SMALL LETTER DELTA
+ εε GREEK SMALL LETTER EPSILON
+ ζζ GREEK SMALL LETTER ZETA
+ ηη GREEK SMALL LETTER ETA
+ θθ GREEK SMALL LETTER THETA
+ ιι GREEK SMALL LETTER IOTA
+ κκ GREEK SMALL LETTER KAPPA
+ λλ GREEK SMALL LETTER LAMDA
+ μμ GREEK SMALL LETTER MU
+ νν GREEK SMALL LETTER NU
+ ξξ GREEK SMALL LETTER XI
+ οο GREEK SMALL LETTER OMICRON
+ ππ GREEK SMALL LETTER PI
+ ρρ GREEK SMALL LETTER RHO
+ ςς GREEK SMALL LETTER FINAL SIGMA
+ σσ GREEK SMALL LETTER SIGMA
+ ττ GREEK SMALL LETTER TAU
+ υυ GREEK SMALL LETTER UPSILON
+ φφ GREEK SMALL LETTER PHI
+ χχ GREEK SMALL LETTER CHI
+ ψψ GREEK SMALL LETTER PSI
+ ωω GREEK SMALL LETTER OMEGA
+ ϑϑ GREEK THETA SYMBOL
+ ϕϕ GREEK PHI SYMBOL
+ ϖϖ GREEK PI SYMBOL
+ ϵϵ GREEK LUNATE EPSILON SYMBOL
+ ‐‐ HYPHEN
+ –– EN DASH
+ —— EM DASH
+ ‘‘ LEFT SINGLE QUOTATION MARK
+ ’’ RIGHT SINGLE QUOTATION MARK
+ ‚‚ SINGLE LOW-9 QUOTATION MARK
+ ““ LEFT DOUBLE QUOTATION MARK
+ ”” RIGHT DOUBLE QUOTATION MARK
+ „„ DOUBLE LOW-9 QUOTATION MARK
+ †† DAGGER
+ ‡‡ DOUBLE DAGGER
+ •• BULLET
+ ‰‰ PER MILLE SIGN
+ ′′ PRIME
+ ″″ DOUBLE PRIME
+ ‹‹ SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ ›› SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ ⁄⁄ FRACTION SLASH
+ €€€ EURO SIGN
+ ℑℑ BLACK-LETTER CAPITAL I
+ ℜℜ BLACK-LETTER CAPITAL R
+ ™™ TRADE MARK SIGN
+ ℵℵ ALEF SYMBOL
+ ←← LEFTWARDS ARROW
+ ↑↑ UPWARDS ARROW
+ →→ RIGHTWARDS ARROW
+ ↓↓ DOWNWARDS ARROW
+ ↔↔ LEFT RIGHT ARROW
+ ↵↵ DOWNWARDS ARROW WITH CORNER LEFTWARDS
+ ⇐⇐ LEFTWARDS DOUBLE ARROW
+ ⇑⇑ UPWARDS DOUBLE ARROW
+ ⇒⇒ RIGHTWARDS DOUBLE ARROW
+ ⇓⇓ DOWNWARDS DOUBLE ARROW
+ ⇔⇔ LEFT RIGHT DOUBLE ARROW
+ ∀∀ FOR ALL
+ ∂∂ PARTIAL DIFFERENTIAL
+ ∃∃ THERE EXISTS
+ ∅∅ EMPTY SET
+ ∈∈ ELEMENT OF
+ ∋∋ CONTAINS AS MEMBER
+ −− MINUS SIGN
+ ∓∓ MINUS-OR-PLUS SIGN
+ ∗∗ ASTERISK OPERATOR
+ √√ SQUARE ROOT
+ ∝∝ PROPORTIONAL TO
+ ∞∞ INFINITY
+ ∠∠ ANGLE
+ ∧∧ LOGICAL AND
+ ∨∨ LOGICAL OR
+ ∩∩ INTERSECTION
+ ∪∪ UNION
+ ∫∫ INTEGRAL
+ ∴∴∴ THEREFORE
+ ∼∼ TILDE OPERATOR
+ ≃≃ ASYMPTOTICALLY EQUAL TO
+ ≅≅ APPROXIMATELY EQUAL TO
+ ≈≈≈ ALMOST EQUAL TO
+ ≠≠ NOT EQUAL TO
+ ≡≡ IDENTICAL TO
+ ≢≢ NOT IDENTICAL TO
+ ≤≤ LESS-THAN OR EQUAL TO
+ ≥≥ GREATER-THAN OR EQUAL TO
+ ⊂⊂ SUBSET OF
+ ⊃⊃ SUPERSET OF
+ ⊆⊆ SUBSET OF OR EQUAL TO
+ ⊇⊇ SUPERSET OF OR EQUAL TO
+ ⊕⊕ CIRCLED PLUS
+ ⊗⊗ CIRCLED TIMES
+ ⊥⊥ UP TACK
+ ⋅⋅ DOT OPERATOR
+ ⌈⌈ LEFT CEILING
+ ⌉⌉ RIGHT CEILING
+ ⌊⌊ LEFT FLOOR
+ ⌋⌋ RIGHT FLOOR
+ ⎪⎪ CURLY BRACKET EXTENSION
+ ││ BOX DRAWINGS LIGHT VERTICAL
+ □□ WHITE SQUARE
+ ◊◊ LOZENGE
+ ○○ WHITE CIRCLE
+ ☜☜ WHITE LEFT POINTING INDEX
+ ☞☞ WHITE RIGHT POINTING INDEX
+ ⟨⟨ MATHEMATICAL LEFT ANGLE BRACKET
+ ⟩⟩ MATHEMATICAL RIGHT ANGLE BRACKET
+ ENDTEST
+
+
+
+OpenBSD October 27, 2014 CHAR-UNICODE-NAMED(1)
diff --git a/regress/char/unicode/namediff.in b/regress/char/unicode/namediff.in
new file mode 100644
index 00000000..672478e4
--- /dev/null
+++ b/regress/char/unicode/namediff.in
@@ -0,0 +1,43 @@
+.TH CHAR-UNICODE-NAMEDIFF 1 "October 27, 2014" OpenBSD
+.SH NAME
+char-unicode-namediff \- Unicode characters having named escapes
+.SH DESCRIPTION
+.nf
+BEGINTEST
+\[u0237]\(.j LATIN SMALL LETTER DOTLESS J
+\[u02D9]\(a. DOT ABOVE
+\[u0393]\(*G GREEK CAPITAL LETTER GAMMA
+\[u03A3]\(*S GREEK CAPITAL LETTER SIGMA
+\[u203E]\(rn OVERLINE
+\[u210F]\(-h PLANCK CONSTANT OVER TWO PI
+\[u2195]\(va UP DOWN ARROW
+\[u21D5]\(vA UP DOWN DOUBLE ARROW
+\[u2207]\(gr NABLA
+\[u2209]\(nm NOT AN ELEMENT OF
+\[u220F]\[product] N-ARY PRODUCT
+\[u2210]\[coproduct] N-ARY COPRODUCT
+\[u2211]\[sum] N-ARY SUMMATION
+\[u2284]\(nb NOT A SUBSET OF
+\[u2285]\(nc NOT A SUPERSET OF
+\[u239B]\[parenlefttp] LEFT PARENTHESIS UPPER HOOK
+\[u239C]\[parenleftex] LEFT PARENTHESIS EXTENSION
+\[u239D]\[parenleftbt] LEFT PARENTHESIS LOWER HOOK
+\[u239E]\[parenrighttp] RIGHT PARENTHESIS UPPER HOOK
+\[u239F]\[parenrightex] RIGHT PARENTHESIS EXTENSION
+\[u23A0]\[parenrightbt] RIGHT PARENTHESIS LOWER HOOK
+\[u23A1]\[bracketlefttp] LEFT SQUARE BRACKET UPPER CORNER
+\[u23A2]\[bracketleftex] LEFT SQUARE BRACKET EXTENSION
+\[u23A3]\[bracketleftbt] LEFT SQUARE BRACKET LOWER CORNER
+\[u23A4]\[bracketrighttp] RIGHT SQUARE BRACKET UPPER CORNER
+\[u23A5]\[bracketrightex] RIGHT SQUARE BRACKET EXTENSION
+\[u23A6]\[bracketrightbt] RIGHT SQUARE BRACKET LOWER CORNER
+\[u23A7]\[bracelefttp] LEFT CURLY BRACKET UPPER HOOK
+\[u23A8]\[braceleftmid] LEFT CURLY BRACKET MIDDLE PIECE
+\[u23A9]\[braceleftbt] LEFT CURLY BRACKET LOWER HOOK
+\[u23AA]\[braceex]\[braceleftex]\[bracerightex] CURLY BRACKET EXTENSION
+\[u23AB]\[bracerighttp] RIGHT CURLY BRACKET UPPER HOOK
+\[u23AC]\[bracerightmid] RIGHT CURLY BRACKET MIDDLE PIECE
+\[u23AD]\[bracerightbt] RIGHT CURLY BRACKET LOWER HOOK
+\[u2713]\(OK CHECK MARK
+ENDTEST
+.fi
diff --git a/regress/char/unicode/namediff.out_ascii b/regress/char/unicode/namediff.out_ascii
new file mode 100644
index 00000000..cd8313a3
--- /dev/null
+++ b/regress/char/unicode/namediff.out_ascii
@@ -0,0 +1,49 @@
+CHAR-UNICODE-NAMEDIFF(1) General Commands Manual CHAR-UNICODE-NAMEDIFF(1)
+
+
+
+NNAAMMEE
+ char-unicode-namediff - Unicode characters having named escapes
+
+DDEESSCCRRIIPPTTIIOONN
+ BEGINTEST
+ jj LATIN SMALL LETTER DOTLESS J
+ .. DOT ABOVE
+ GG GREEK CAPITAL LETTER GAMMA
+ SS GREEK CAPITAL LETTER SIGMA
+ -- OVERLINE
+ /h/h PLANCK CONSTANT OVER TWO PI
+ ^v^v UP DOWN ARROW
+ ^=v^=v UP DOWN DOUBLE ARROW
+ VV NABLA
+ !E!E NOT AN ELEMENT OF
+ TTTT N-ARY PRODUCT
+ UU N-ARY COPRODUCT
+ EE N-ARY SUMMATION
+ (!=(!= NOT A SUBSET OF
+ !=)!=) NOT A SUPERSET OF
+ // LEFT PARENTHESIS UPPER HOOK
+ || LEFT PARENTHESIS EXTENSION
+ \\ LEFT PARENTHESIS LOWER HOOK
+ \\ RIGHT PARENTHESIS UPPER HOOK
+ || RIGHT PARENTHESIS EXTENSION
+ // RIGHT PARENTHESIS LOWER HOOK
+ || LEFT SQUARE BRACKET UPPER CORNER
+ || LEFT SQUARE BRACKET EXTENSION
+ || LEFT SQUARE BRACKET LOWER CORNER
+ || RIGHT SQUARE BRACKET UPPER CORNER
+ || RIGHT SQUARE BRACKET EXTENSION
+ || RIGHT SQUARE BRACKET LOWER CORNER
+ ,-,- LEFT CURLY BRACKET UPPER HOOK
+ {{ LEFT CURLY BRACKET MIDDLE PIECE
+ `-`- LEFT CURLY BRACKET LOWER HOOK
+ |||| CURLY BRACKET EXTENSION
+ -.-. RIGHT CURLY BRACKET UPPER HOOK
+ }} RIGHT CURLY BRACKET MIDDLE PIECE
+ -'-' RIGHT CURLY BRACKET LOWER HOOK
+ \/\/ CHECK MARK
+ ENDTEST
+
+
+
+OpenBSD October 27, 2014 CHAR-UNICODE-NAMEDIFF(1)
diff --git a/regress/char/unicode/namediff.out_html b/regress/char/unicode/namediff.out_html
new file mode 100644
index 00000000..d682ffbe
--- /dev/null
+++ b/regress/char/unicode/namediff.out_html
@@ -0,0 +1,37 @@
+BEGINTEST
+&#567;&#567; LATIN SMALL LETTER DOTLESS J
+&#729;&#729; DOT ABOVE
+&#915;&#915; GREEK CAPITAL LETTER GAMMA
+&#931;&#931; GREEK CAPITAL LETTER SIGMA
+&#8254;&#8254; OVERLINE
+&#8463;&#8463; PLANCK CONSTANT OVER TWO PI
+&#8597;&#8597; UP DOWN ARROW
+&#8661;&#8661; UP DOWN DOUBLE ARROW
+&#8711;&#8711; NABLA
+&#8713;&#8713; NOT AN ELEMENT OF
+&#8719;&#8719; N-ARY PRODUCT
+&#8720;&#8720; N-ARY COPRODUCT
+&#8721;&#8721; N-ARY SUMMATION
+&#8836;&#8836; NOT A SUBSET OF
+&#8837;&#8837; NOT A SUPERSET OF
+&#9115;&#9115; LEFT PARENTHESIS UPPER HOOK
+&#9116;&#9116; LEFT PARENTHESIS EXTENSION
+&#9117;&#9117; LEFT PARENTHESIS LOWER HOOK
+&#9118;&#9118; RIGHT PARENTHESIS UPPER HOOK
+&#9119;&#9119; RIGHT PARENTHESIS EXTENSION
+&#9120;&#9120; RIGHT PARENTHESIS LOWER HOOK
+&#9121;&#9121; LEFT SQUARE BRACKET UPPER CORNER
+&#9122;&#9122; LEFT SQUARE BRACKET EXTENSION
+&#9123;&#9123; LEFT SQUARE BRACKET LOWER CORNER
+&#9124;&#9124; RIGHT SQUARE BRACKET UPPER CORNER
+&#9125;&#9125; RIGHT SQUARE BRACKET EXTENSION
+&#9126;&#9126; RIGHT SQUARE BRACKET LOWER CORNER
+&#9127;&#9127; LEFT CURLY BRACKET UPPER HOOK
+&#9128;&#9128; LEFT CURLY BRACKET MIDDLE PIECE
+&#9129;&#9129; LEFT CURLY BRACKET LOWER HOOK
+&#9130;&#9130;&#9130;&#9130; CURLY BRACKET EXTENSION
+&#9131;&#9131; RIGHT CURLY BRACKET UPPER HOOK
+&#9132;&#9132; RIGHT CURLY BRACKET MIDDLE PIECE
+&#9133;&#9133; RIGHT CURLY BRACKET LOWER HOOK
+&#10003;&#10003; CHECK MARK
+ENDTEST
diff --git a/regress/char/unicode/namediff.out_utf8 b/regress/char/unicode/namediff.out_utf8
new file mode 100644
index 00000000..9ac104bf
--- /dev/null
+++ b/regress/char/unicode/namediff.out_utf8
@@ -0,0 +1,49 @@
+CHAR-UNICODE-NAMEDIFF(1) General Commands Manual CHAR-UNICODE-NAMEDIFF(1)
+
+
+
+NNAAMMEE
+ char-unicode-namediff - Unicode characters having named escapes
+
+DDEESSCCRRIIPPTTIIOONN
+ BEGINTEST
+ ȷȷ LATIN SMALL LETTER DOTLESS J
+ ˙˙ DOT ABOVE
+ ΓΓ GREEK CAPITAL LETTER GAMMA
+ ΣΣ GREEK CAPITAL LETTER SIGMA
+ ‾‾ OVERLINE
+ ℏℏ PLANCK CONSTANT OVER TWO PI
+ ↕↕ UP DOWN ARROW
+ ⇕⇕ UP DOWN DOUBLE ARROW
+ ∇∇ NABLA
+ ∉∉ NOT AN ELEMENT OF
+ ∏∏ N-ARY PRODUCT
+ ∐∐ N-ARY COPRODUCT
+ ∑∑ N-ARY SUMMATION
+ ⊄⊄ NOT A SUBSET OF
+ ⊅⊅ NOT A SUPERSET OF
+ ⎛⎛ LEFT PARENTHESIS UPPER HOOK
+ ⎜⎜ LEFT PARENTHESIS EXTENSION
+ ⎝⎝ LEFT PARENTHESIS LOWER HOOK
+ ⎞⎞ RIGHT PARENTHESIS UPPER HOOK
+ ⎟⎟ RIGHT PARENTHESIS EXTENSION
+ ⎠⎠ RIGHT PARENTHESIS LOWER HOOK
+ ⎡⎡ LEFT SQUARE BRACKET UPPER CORNER
+ ⎢⎢ LEFT SQUARE BRACKET EXTENSION
+ ⎣⎣ LEFT SQUARE BRACKET LOWER CORNER
+ ⎤⎤ RIGHT SQUARE BRACKET UPPER CORNER
+ ⎥⎥ RIGHT SQUARE BRACKET EXTENSION
+ ⎦⎦ RIGHT SQUARE BRACKET LOWER CORNER
+ ⎧⎧ LEFT CURLY BRACKET UPPER HOOK
+ ⎨⎨ LEFT CURLY BRACKET MIDDLE PIECE
+ ⎩⎩ LEFT CURLY BRACKET LOWER HOOK
+ ⎪⎪⎪⎪ CURLY BRACKET EXTENSION
+ ⎫⎫ RIGHT CURLY BRACKET UPPER HOOK
+ ⎬⎬ RIGHT CURLY BRACKET MIDDLE PIECE
+ ⎭⎭ RIGHT CURLY BRACKET LOWER HOOK
+ ✓✓ CHECK MARK
+ ENDTEST
+
+
+
+OpenBSD October 27, 2014 CHAR-UNICODE-NAMEDIFF(1)
diff --git a/regress/char/unicode/nogroff.in b/regress/char/unicode/nogroff.in
new file mode 100644
index 00000000..10e5f516
--- /dev/null
+++ b/regress/char/unicode/nogroff.in
@@ -0,0 +1,43 @@
+.TH CHAR-UNICODE-NOGROFF 1 "October 28, 2014" OpenBSD
+.SH NAME
+char-unicode-nogroff \- characters handled differently by groff
+.SH DESCRIPTION
+.nf
+BEGINTEST
+\[u0000]\N'0' <control> NULL
+\[u0001]\N'1' <control> START OF HEADING
+\[u0007]\N'7' <control> BELL
+\[u0008]\N'8' <control> BACKSPACE
+\[u0009]\N'9' <control> CHARACTER TABULATION
+\[u000A]\N'10' <control> LINE FEED
+\[u000B]\N'11' <control> LINE TABULATION
+\[u000C]\N'12' <control> FORM FEED
+\[u000D]\N'13' <control> CARRIAGE RETURN
+\[u001B]\N'27' <control> ESCAPE
+\[u007F]\N'127' <control> DELETE
+\[u0080]\N'128' <control> 0x80
+\[u0081]\N'129' <control> 0x81
+\[u0082]\N'130' <control> BREAK PERMITTED HERE
+\[u0083]\N'131' <control> NO BREAK HERE
+\[u009E]\N'158' <control> PRIVACY MESSAGE
+\[u009F]\N'159' <control> APPLICATION PROGRAM COMMAND
+\[u226A]\(<< MUCH LESS-THAN
+\[u226B]\(>> MUCH GREATER-THAN
+\[uFB00]\(ff LATIN SMALL LIGATURE FF
+\[uFB01]\(fi LATIN SMALL LIGATURE FI
+\[uFB02]\(fl LATIN SMALL LIGATURE FL
+\[uFB03]\(Fi LATIN SMALL LIGATURE FFI
+\[uFB04]\(Fl LATIN SMALL LIGATURE FFL
+\[uFFFD] REPLACEMENT CHARACTER
+\[uFFFE] <undefined>
+\[uFFFF] <undefined>
+\[u10000] LINEAR B SYLLABLE B008 A
+\[uFFFFD] <Plane 15 Private Use, Last>
+\[uFFFFE] <undefined>
+\[uFFFFF] <undefined>
+\[u100000] <Plane 16 Private Use, First>
+\[u10FFFD] <Plane 16 Private Use, Last>
+\[u10FFFE] <undefined>
+\[u10FFFF] <undefined>
+ENDTEST
+.fi
diff --git a/regress/char/unicode/nogroff.out_ascii b/regress/char/unicode/nogroff.out_ascii
new file mode 100644
index 00000000..d03b87e8
--- /dev/null
+++ b/regress/char/unicode/nogroff.out_ascii
@@ -0,0 +1,49 @@
+CHAR-UNICODE-NOGROFF(1) General Commands Manual CHAR-UNICODE-NOGROFF(1)
+
+
+
+NNAAMMEE
+ char-unicode-nogroff - characters handled differently by groff
+
+DDEESSCCRRIIPPTTIIOONN
+ BEGINTEST
+ <NUL><NUL> <control> NULL
+ <SOH><SOH> <control> START OF HEADING
+ <BEL><BEL> <control> BELL
+ <BS><BS> <control> BACKSPACE
+ <control> CHARACTER TABULATION
+ <LF><LF> <control> LINE FEED
+ <VT><VT> <control> LINE TABULATION
+ <FF><FF> <control> FORM FEED
+ <CR><CR> <control> CARRIAGE RETURN
+ <ESC><ESC> <control> ESCAPE
+ <DEL><DEL> <control> DELETE
+ <80><80> <control> 0x80
+ <81><81> <control> 0x81
+ <82><82> <control> BREAK PERMITTED HERE
+ <83><83> <control> NO BREAK HERE
+ <9E><9E> <control> PRIVACY MESSAGE
+ <9F><9F> <control> APPLICATION PROGRAM COMMAND
+ <<<< MUCH LESS-THAN
+ >>>> MUCH GREATER-THAN
+ ffff LATIN SMALL LIGATURE FF
+ fifi LATIN SMALL LIGATURE FI
+ flfl LATIN SMALL LIGATURE FL
+ ffiffi LATIN SMALL LIGATURE FFI
+ fflffl LATIN SMALL LIGATURE FFL
+ <?> REPLACEMENT CHARACTER
+ <?> <undefined>
+ <?> <undefined>
+ <?> LINEAR B SYLLABLE B008 A
+ <?> <Plane 15 Private Use, Last>
+ <?> <undefined>
+ <?> <undefined>
+ <?> <Plane 16 Private Use, First>
+ <?> <Plane 16 Private Use, Last>
+ <?> <undefined>
+ <?> <undefined>
+ ENDTEST
+
+
+
+OpenBSD October 28, 2014 CHAR-UNICODE-NOGROFF(1)
diff --git a/regress/char/unicode/nogroff.out_html b/regress/char/unicode/nogroff.out_html
new file mode 100644
index 00000000..56e1fe7e
--- /dev/null
+++ b/regress/char/unicode/nogroff.out_html
@@ -0,0 +1,37 @@
+BEGINTEST
+&#65533;&#65533; &lt;control&gt; NULL
+&#65533;&#65533; &lt;control&gt; START OF HEADING
+&#65533;&#65533; &lt;control&gt; BELL
+&#65533;&#65533; &lt;control&gt; BACKSPACE
+ &lt;control&gt; CHARACTER TABULATION
+&#65533;&#65533; &lt;control&gt; LINE FEED
+&#65533;&#65533; &lt;control&gt; LINE TABULATION
+&#65533;&#65533; &lt;control&gt; FORM FEED
+&#65533;&#65533; &lt;control&gt; CARRIAGE RETURN
+&#65533;&#65533; &lt;control&gt; ESCAPE
+&#65533;&#65533; &lt;control&gt; DELETE
+&#65533;&#65533; &lt;control&gt; 0x80
+&#65533;&#65533; &lt;control&gt; 0x81
+&#65533;&#65533; &lt;control&gt; BREAK PERMITTED HERE
+&#65533;&#65533; &lt;control&gt; NO BREAK HERE
+&#65533;&#65533; &lt;control&gt; PRIVACY MESSAGE
+&#65533;&#65533; &lt;control&gt; APPLICATION PROGRAM COMMAND
+&#8810;&#8810; MUCH LESS-THAN
+&#8811;&#8811; MUCH GREATER-THAN
+&#64256;&#64256; LATIN SMALL LIGATURE FF
+&#64257;&#64257; LATIN SMALL LIGATURE FI
+&#64258;&#64258; LATIN SMALL LIGATURE FL
+&#64259;&#64259; LATIN SMALL LIGATURE FFI
+&#64260;&#64260; LATIN SMALL LIGATURE FFL
+&#65533; REPLACEMENT CHARACTER
+&#65534; &lt;undefined&gt;
+&#65535; &lt;undefined&gt;
+&#65536; LINEAR B SYLLABLE B008 A
+&#1048573; &lt;Plane 15 Private Use, Last&gt;
+&#1048574; &lt;undefined&gt;
+&#1048575; &lt;undefined&gt;
+&#1048576; &lt;Plane 16 Private Use, First&gt;
+&#1114109; &lt;Plane 16 Private Use, Last&gt;
+&#1114110; &lt;undefined&gt;
+&#1114111; &lt;undefined&gt;
+ENDTEST
diff --git a/regress/char/unicode/nogroff.out_utf8 b/regress/char/unicode/nogroff.out_utf8
new file mode 100644
index 00000000..c6169b9c
--- /dev/null
+++ b/regress/char/unicode/nogroff.out_utf8
@@ -0,0 +1,49 @@
+CHAR-UNICODE-NOGROFF(1) General Commands Manual CHAR-UNICODE-NOGROFF(1)
+
+
+
+NNAAMMEE
+ char-unicode-nogroff - characters handled differently by groff
+
+DDEESSCCRRIIPPTTIIOONN
+ BEGINTEST
+ �� <control> NULL
+ �� <control> START OF HEADING
+ �� <control> BELL
+ �� <control> BACKSPACE
+ <control> CHARACTER TABULATION
+ �� <control> LINE FEED
+ �� <control> LINE TABULATION
+ �� <control> FORM FEED
+ �� <control> CARRIAGE RETURN
+ �� <control> ESCAPE
+ �� <control> DELETE
+ �� <control> 0x80
+ �� <control> 0x81
+ �� <control> BREAK PERMITTED HERE
+ �� <control> NO BREAK HERE
+ �� <control> PRIVACY MESSAGE
+ �� <control> APPLICATION PROGRAM COMMAND
+ ≪≪ MUCH LESS-THAN
+ ≫≫ MUCH GREATER-THAN
+ ffff LATIN SMALL LIGATURE FF
+ fifi LATIN SMALL LIGATURE FI
+ flfl LATIN SMALL LIGATURE FL
+ ffiffi LATIN SMALL LIGATURE FFI
+ fflffl LATIN SMALL LIGATURE FFL
+ � REPLACEMENT CHARACTER
+ ￾ <undefined>
+ ￿ <undefined>
+ 𐀀 LINEAR B SYLLABLE B008 A
+ 󿿽 <Plane 15 Private Use, Last>
+ 󿿾 <undefined>
+ 󿿿 <undefined>
+ 􀀀 <Plane 16 Private Use, First>
+ 􏿽 <Plane 16 Private Use, Last>
+ 􏿾 <undefined>
+ 􏿿 <undefined>
+ ENDTEST
+
+
+
+OpenBSD October 28, 2014 CHAR-UNICODE-NOGROFF(1)