summaryrefslogtreecommitdiffstats
path: root/regress/mdoc
diff options
context:
space:
mode:
Diffstat (limited to 'regress/mdoc')
-rw-r--r--regress/mdoc/Ad/Makefile6
-rw-r--r--regress/mdoc/Ad/font.in10
-rw-r--r--regress/mdoc/Ad/font.out_ascii9
-rw-r--r--regress/mdoc/Ad/noarg.in12
-rw-r--r--regress/mdoc/Ad/noarg.out_ascii9
-rw-r--r--regress/mdoc/Ad/noarg.out_lint1
-rw-r--r--regress/mdoc/An/Makefile6
-rw-r--r--regress/mdoc/An/break.in49
-rw-r--r--regress/mdoc/An/break.out_ascii29
-rw-r--r--regress/mdoc/An/break.out_lint12
-rw-r--r--regress/mdoc/Ap/Makefile5
-rw-r--r--regress/mdoc/Ap/eos.in12
-rw-r--r--regress/mdoc/Ap/eos.out_ascii10
-rw-r--r--regress/mdoc/Ap/middle.in8
-rw-r--r--regress/mdoc/Ap/middle.out_ascii9
-rw-r--r--regress/mdoc/Aq/Makefile6
-rw-r--r--regress/mdoc/Aq/author.in10
-rw-r--r--regress/mdoc/Aq/author.out_ascii13
-rw-r--r--regress/mdoc/Aq/author.out_utf813
-rw-r--r--regress/mdoc/Aq/empty.in14
-rw-r--r--regress/mdoc/Aq/empty.out_ascii9
-rw-r--r--regress/mdoc/Aq/empty.out_utf89
-rw-r--r--regress/mdoc/Ar/Makefile5
-rw-r--r--regress/mdoc/Ar/font.in10
-rw-r--r--regress/mdoc/Ar/font.out_ascii9
-rw-r--r--regress/mdoc/Ar/punct.in39
-rw-r--r--regress/mdoc/Ar/punct.out_ascii12
-rw-r--r--regress/mdoc/At/Makefile6
-rw-r--r--regress/mdoc/At/invalid.in17
-rw-r--r--regress/mdoc/At/invalid.out_ascii15
-rw-r--r--regress/mdoc/At/invalid.out_lint1
-rw-r--r--regress/mdoc/Bd/Makefile25
-rw-r--r--regress/mdoc/Bd/badargs.in51
-rw-r--r--regress/mdoc/Bd/badargs.out_ascii30
-rw-r--r--regress/mdoc/Bd/badargs.out_lint12
-rw-r--r--regress/mdoc/Bd/beforeNAME.in15
-rw-r--r--regress/mdoc/Bd/beforeNAME.out_ascii13
-rw-r--r--regress/mdoc/Bd/beforeNAME.out_lint1
-rw-r--r--regress/mdoc/Bd/blank.in31
-rw-r--r--regress/mdoc/Bd/blank.out_ascii29
-rw-r--r--regress/mdoc/Bd/blank.out_lint8
-rw-r--r--regress/mdoc/Bd/break.in15
-rw-r--r--regress/mdoc/Bd/break.out_ascii12
-rw-r--r--regress/mdoc/Bd/break.out_lint1
-rw-r--r--regress/mdoc/Bd/broken.in14
-rw-r--r--regress/mdoc/Bd/broken.out_ascii11
-rw-r--r--regress/mdoc/Bd/broken.out_lint1
-rw-r--r--regress/mdoc/Bd/centered.in15
-rw-r--r--regress/mdoc/Bd/centered.out_ascii13
-rw-r--r--regress/mdoc/Bd/empty.in20
-rw-r--r--regress/mdoc/Bd/empty.out_ascii17
-rw-r--r--regress/mdoc/Bd/nested.in42
-rw-r--r--regress/mdoc/Bd/nested.out_ascii29
-rw-r--r--regress/mdoc/Bd/nested.out_lint2
-rw-r--r--regress/mdoc/Bd/offset-empty.in31
-rw-r--r--regress/mdoc/Bd/offset-empty.out_ascii23
-rw-r--r--regress/mdoc/Bd/offset-neg.in24
-rw-r--r--regress/mdoc/Bd/offset-neg.out_ascii21
-rw-r--r--regress/mdoc/Bd/spacing.in16
-rw-r--r--regress/mdoc/Bd/spacing.out_ascii14
-rw-r--r--regress/mdoc/Bd/unclosed.in10
-rw-r--r--regress/mdoc/Bd/unclosed.out_ascii11
-rw-r--r--regress/mdoc/Bd/unclosed.out_lint1
-rw-r--r--regress/mdoc/Bf/Makefile16
-rw-r--r--regress/mdoc/Bf/badargs.in20
-rw-r--r--regress/mdoc/Bf/badargs.out_ascii10
-rw-r--r--regress/mdoc/Bf/badargs.out_lint3
-rw-r--r--regress/mdoc/Bf/break.in16
-rw-r--r--regress/mdoc/Bf/break.out_ascii9
-rw-r--r--regress/mdoc/Bf/break.out_lint1
-rw-r--r--regress/mdoc/Bf/broken.in15
-rw-r--r--regress/mdoc/Bf/broken.out_ascii9
-rw-r--r--regress/mdoc/Bf/broken.out_lint1
-rw-r--r--regress/mdoc/Bf/multiargs.in32
-rw-r--r--regress/mdoc/Bf/multiargs.out_ascii11
-rw-r--r--regress/mdoc/Bf/multiargs.out_lint5
-rw-r--r--regress/mdoc/Bf/nest.in33
-rw-r--r--regress/mdoc/Bf/nest.out_ascii11
-rw-r--r--regress/mdoc/Bk/Makefile8
-rw-r--r--regress/mdoc/Bk/badarg.in56
-rw-r--r--regress/mdoc/Bk/badarg.out_ascii25
-rw-r--r--regress/mdoc/Bk/badarg.out_lint6
-rw-r--r--regress/mdoc/Bk/break.in53
-rw-r--r--regress/mdoc/Bk/break.out_ascii30
-rw-r--r--regress/mdoc/Bk/broken.in11
-rw-r--r--regress/mdoc/Bk/broken.out_ascii12
-rw-r--r--regress/mdoc/Bk/broken.out_lint2
-rw-r--r--regress/mdoc/Bk/inputlines.in73
-rw-r--r--regress/mdoc/Bk/inputlines.out_ascii37
-rw-r--r--regress/mdoc/Bk/lines.in88
-rw-r--r--regress/mdoc/Bk/lines.out_ascii84
-rw-r--r--regress/mdoc/Bk/synopsis.in32
-rw-r--r--regress/mdoc/Bk/synopsis.out_ascii27
-rw-r--r--regress/mdoc/Bl/Makefile38
-rw-r--r--regress/mdoc/Bl/badargs.in78
-rw-r--r--regress/mdoc/Bl/badargs.out_ascii43
-rw-r--r--regress/mdoc/Bl/badargs.out_lint18
-rw-r--r--regress/mdoc/Bl/bareIt.in15
-rw-r--r--regress/mdoc/Bl/bareIt.out_ascii12
-rw-r--r--regress/mdoc/Bl/bareIt.out_lint3
-rw-r--r--regress/mdoc/Bl/bareTa.in26
-rw-r--r--regress/mdoc/Bl/bareTa.out_ascii18
-rw-r--r--regress/mdoc/Bl/bareTa.out_lint5
-rw-r--r--regress/mdoc/Bl/break.in77
-rw-r--r--regress/mdoc/Bl/break.out_ascii49
-rw-r--r--regress/mdoc/Bl/break.out_lint18
-rw-r--r--regress/mdoc/Bl/breakingIt.in69
-rw-r--r--regress/mdoc/Bl/breakingIt.out_ascii47
-rw-r--r--regress/mdoc/Bl/breakingIt.out_lint16
-rw-r--r--regress/mdoc/Bl/broken.in28
-rw-r--r--regress/mdoc/Bl/broken.out_ascii19
-rw-r--r--regress/mdoc/Bl/broken.out_lint3
-rw-r--r--regress/mdoc/Bl/bullet.in81
-rw-r--r--regress/mdoc/Bl/bullet.out_ascii67
-rw-r--r--regress/mdoc/Bl/colNoIt.in15
-rw-r--r--regress/mdoc/Bl/colNoIt.out_ascii13
-rw-r--r--regress/mdoc/Bl/column.in105
-rw-r--r--regress/mdoc/Bl/column.out_ascii74
-rw-r--r--regress/mdoc/Bl/column.out_lint4
-rw-r--r--regress/mdoc/Bl/dash.in81
-rw-r--r--regress/mdoc/Bl/dash.out_ascii67
-rw-r--r--regress/mdoc/Bl/dash.out_utf867
-rw-r--r--regress/mdoc/Bl/diag.in54
-rw-r--r--regress/mdoc/Bl/diag.out_ascii39
-rw-r--r--regress/mdoc/Bl/empty.in41
-rw-r--r--regress/mdoc/Bl/empty.out_ascii20
-rw-r--r--regress/mdoc/Bl/empty.out_lint11
-rw-r--r--regress/mdoc/Bl/emptyhead.in43
-rw-r--r--regress/mdoc/Bl/emptyhead.out_ascii38
-rw-r--r--regress/mdoc/Bl/emptyhead.out_lint4
-rw-r--r--regress/mdoc/Bl/emptyitem.in39
-rw-r--r--regress/mdoc/Bl/emptyitem.out_ascii36
-rw-r--r--regress/mdoc/Bl/emptyitem.out_lint8
-rw-r--r--regress/mdoc/Bl/emptytag.in17
-rw-r--r--regress/mdoc/Bl/emptytag.out_ascii16
-rw-r--r--regress/mdoc/Bl/emptytag.out_lint1
-rw-r--r--regress/mdoc/Bl/enum.in81
-rw-r--r--regress/mdoc/Bl/enum.out_ascii67
-rw-r--r--regress/mdoc/Bl/extend.in31
-rw-r--r--regress/mdoc/Bl/extend.out_ascii18
-rw-r--r--regress/mdoc/Bl/hang.in111
-rw-r--r--regress/mdoc/Bl/hang.out_ascii85
-rw-r--r--regress/mdoc/Bl/inset.in48
-rw-r--r--regress/mdoc/Bl/inset.out_ascii37
-rw-r--r--regress/mdoc/Bl/item.in23
-rw-r--r--regress/mdoc/Bl/item.out_ascii16
-rw-r--r--regress/mdoc/Bl/multitag.in47
-rw-r--r--regress/mdoc/Bl/multitag.out_ascii42
-rw-r--r--regress/mdoc/Bl/multitype.in11
-rw-r--r--regress/mdoc/Bl/multitype.out_ascii9
-rw-r--r--regress/mdoc/Bl/nested.in83
-rw-r--r--regress/mdoc/Bl/nested.out_ascii54
-rw-r--r--regress/mdoc/Bl/noIt.in24
-rw-r--r--regress/mdoc/Bl/noIt.out_ascii15
-rw-r--r--regress/mdoc/Bl/noIt.out_lint8
-rw-r--r--regress/mdoc/Bl/notype.in26
-rw-r--r--regress/mdoc/Bl/notype.out_ascii21
-rw-r--r--regress/mdoc/Bl/notype.out_lint5
-rw-r--r--regress/mdoc/Bl/offset.in79
-rw-r--r--regress/mdoc/Bl/offset.out_ascii51
-rw-r--r--regress/mdoc/Bl/ohang.in23
-rw-r--r--regress/mdoc/Bl/ohang.out_ascii22
-rw-r--r--regress/mdoc/Bl/secstart.in39
-rw-r--r--regress/mdoc/Bl/secstart.out_ascii26
-rw-r--r--regress/mdoc/Bl/tag.in154
-rw-r--r--regress/mdoc/Bl/tag.out_ascii134
-rw-r--r--regress/mdoc/Bl/tag.out_lint1
-rw-r--r--regress/mdoc/Bl/unclosed.in12
-rw-r--r--regress/mdoc/Bl/unclosed.out_ascii12
-rw-r--r--regress/mdoc/Brq/Makefile5
-rw-r--r--regress/mdoc/Brq/empty.in14
-rw-r--r--regress/mdoc/Brq/empty.out_ascii9
-rw-r--r--regress/mdoc/Bx/Makefile5
-rw-r--r--regress/mdoc/Bx/args.in26
-rw-r--r--regress/mdoc/Bx/args.out_ascii21
-rw-r--r--regress/mdoc/Cd/Makefile6
-rw-r--r--regress/mdoc/Cd/eos.in10
-rw-r--r--regress/mdoc/Cd/eos.out_ascii9
-rw-r--r--regress/mdoc/Cd/font.in10
-rw-r--r--regress/mdoc/Cd/font.out_ascii9
-rw-r--r--regress/mdoc/Cd/noarg.in12
-rw-r--r--regress/mdoc/Cd/noarg.out_ascii9
-rw-r--r--regress/mdoc/Cd/noarg.out_lint1
-rw-r--r--regress/mdoc/Cm/Makefile6
-rw-r--r--regress/mdoc/Cm/basic.in12
-rw-r--r--regress/mdoc/Cm/basic.out_ascii11
-rw-r--r--regress/mdoc/Cm/font.in10
-rw-r--r--regress/mdoc/Cm/font.out_ascii9
-rw-r--r--regress/mdoc/Cm/noarg.in12
-rw-r--r--regress/mdoc/Cm/noarg.out_ascii11
-rw-r--r--regress/mdoc/Cm/noarg.out_lint2
-rw-r--r--regress/mdoc/D1/Makefile6
-rw-r--r--regress/mdoc/D1/spacing.in12
-rw-r--r--regress/mdoc/D1/spacing.out_ascii12
-rw-r--r--regress/mdoc/D1/spacing.out_lint1
-rw-r--r--regress/mdoc/Db/Makefile6
-rw-r--r--regress/mdoc/Db/args.in14
-rw-r--r--regress/mdoc/Db/args.out_ascii9
-rw-r--r--regress/mdoc/Db/args.out_lint3
-rw-r--r--regress/mdoc/Dd/Makefile19
-rw-r--r--regress/mdoc/Dd/badarg.in8
-rw-r--r--regress/mdoc/Dd/badarg.out_ascii9
-rw-r--r--regress/mdoc/Dd/badarg.out_lint1
-rw-r--r--regress/mdoc/Dd/dupe.in11
-rw-r--r--regress/mdoc/Dd/dupe.out_ascii9
-rw-r--r--regress/mdoc/Dd/dupe.out_lint2
-rw-r--r--regress/mdoc/Dd/late.in9
-rw-r--r--regress/mdoc/Dd/late.out_ascii9
-rw-r--r--regress/mdoc/Dd/late.out_lint1
-rw-r--r--regress/mdoc/Dd/long.in8
-rw-r--r--regress/mdoc/Dd/long.out_ascii11
-rw-r--r--regress/mdoc/Dd/long.out_lint1
-rw-r--r--regress/mdoc/Dd/manarg.in8
-rw-r--r--regress/mdoc/Dd/manarg.out_ascii9
-rw-r--r--regress/mdoc/Dd/manarg.out_lint0
-rw-r--r--regress/mdoc/Dd/noarg.in8
-rw-r--r--regress/mdoc/Dd/noarg.out_lint1
-rw-r--r--regress/mdoc/Dd/order.in8
-rw-r--r--regress/mdoc/Dd/order.out_ascii9
-rw-r--r--regress/mdoc/Dd/order.out_lint1
-rw-r--r--regress/mdoc/Dl/Makefile6
-rw-r--r--regress/mdoc/Dl/spacing.in12
-rw-r--r--regress/mdoc/Dl/spacing.out_ascii12
-rw-r--r--regress/mdoc/Dl/spacing.out_lint1
-rw-r--r--regress/mdoc/Dq/Makefile5
-rw-r--r--regress/mdoc/Dq/empty.in14
-rw-r--r--regress/mdoc/Dq/empty.out_ascii10
-rw-r--r--regress/mdoc/Dt/Makefile20
-rw-r--r--regress/mdoc/Dt/badsec.in8
-rw-r--r--regress/mdoc/Dt/badsec.out_lint1
-rw-r--r--regress/mdoc/Dt/case.in8
-rw-r--r--regress/mdoc/Dt/case.out_ascii9
-rw-r--r--regress/mdoc/Dt/case.out_lint1
-rw-r--r--regress/mdoc/Dt/dupe.in11
-rw-r--r--regress/mdoc/Dt/dupe.out_ascii9
-rw-r--r--regress/mdoc/Dt/dupe.out_lint2
-rw-r--r--regress/mdoc/Dt/fourargs.in8
-rw-r--r--regress/mdoc/Dt/fourargs.out_ascii9
-rw-r--r--regress/mdoc/Dt/fourargs.out_lint1
-rw-r--r--regress/mdoc/Dt/late.in9
-rw-r--r--regress/mdoc/Dt/late.out_ascii9
-rw-r--r--regress/mdoc/Dt/late.out_lint2
-rw-r--r--regress/mdoc/Dt/missing.in7
-rw-r--r--regress/mdoc/Dt/missing.out_ascii9
-rw-r--r--regress/mdoc/Dt/missing.out_lint1
-rw-r--r--regress/mdoc/Dt/noarg.in8
-rw-r--r--regress/mdoc/Dt/noarg.out_ascii9
-rw-r--r--regress/mdoc/Dt/noarg.out_lint2
-rw-r--r--regress/mdoc/Dt/nobody.in3
-rw-r--r--regress/mdoc/Dt/nobody.out_ascii3
-rw-r--r--regress/mdoc/Dt/nobody.out_lint1
-rw-r--r--regress/mdoc/Dt/nosec.in8
-rw-r--r--regress/mdoc/Dt/nosec.out_ascii9
-rw-r--r--regress/mdoc/Dt/nosec.out_lint1
-rw-r--r--regress/mdoc/Dt/order.in8
-rw-r--r--regress/mdoc/Dt/order.out_ascii9
-rw-r--r--regress/mdoc/Dt/order.out_lint1
-rw-r--r--regress/mdoc/Dv/Makefile6
-rw-r--r--regress/mdoc/Dv/font.in13
-rw-r--r--regress/mdoc/Dv/font.out_ascii11
-rw-r--r--regress/mdoc/Dv/noarg.in12
-rw-r--r--regress/mdoc/Dv/noarg.out_ascii9
-rw-r--r--regress/mdoc/Dv/noarg.out_lint1
-rw-r--r--regress/mdoc/Em/Makefile6
-rw-r--r--regress/mdoc/Em/font.in10
-rw-r--r--regress/mdoc/Em/font.out_ascii9
-rw-r--r--regress/mdoc/Em/noarg.in12
-rw-r--r--regress/mdoc/Em/noarg.out_ascii9
-rw-r--r--regress/mdoc/Em/noarg.out_lint1
-rw-r--r--regress/mdoc/Em/punct.in82
-rw-r--r--regress/mdoc/Em/punct.out_ascii26
-rw-r--r--regress/mdoc/Em/punct.out_lint24
-rw-r--r--regress/mdoc/Eo/Makefile11
-rw-r--r--regress/mdoc/Eo/break.in68
-rw-r--r--regress/mdoc/Eo/break.out_ascii11
-rw-r--r--regress/mdoc/Eo/break.out_lint8
-rw-r--r--regress/mdoc/Eo/empty.in51
-rw-r--r--regress/mdoc/Eo/empty.out_ascii13
-rw-r--r--regress/mdoc/Eo/obsolete.in20
-rw-r--r--regress/mdoc/Eo/obsolete.out_ascii14
-rw-r--r--regress/mdoc/Eo/obsolete.out_lint6
-rw-r--r--regress/mdoc/Eo/unclosed.in9
-rw-r--r--regress/mdoc/Eo/unclosed.out_ascii9
-rw-r--r--regress/mdoc/Eo/unclosed.out_lint1
-rw-r--r--regress/mdoc/Er/Makefile6
-rw-r--r--regress/mdoc/Er/font.in10
-rw-r--r--regress/mdoc/Er/font.out_ascii9
-rw-r--r--regress/mdoc/Er/noarg.in12
-rw-r--r--regress/mdoc/Er/noarg.out_ascii9
-rw-r--r--regress/mdoc/Er/noarg.out_lint1
-rw-r--r--regress/mdoc/Ev/Makefile6
-rw-r--r--regress/mdoc/Ev/font.in13
-rw-r--r--regress/mdoc/Ev/font.out_ascii11
-rw-r--r--regress/mdoc/Ev/noarg.in12
-rw-r--r--regress/mdoc/Ev/noarg.out_ascii9
-rw-r--r--regress/mdoc/Ev/noarg.out_lint1
-rw-r--r--regress/mdoc/Ex/Makefile11
-rw-r--r--regress/mdoc/Ex/args.in15
-rw-r--r--regress/mdoc/Ex/args.out_ascii16
-rw-r--r--regress/mdoc/Ex/noname.in15
-rw-r--r--regress/mdoc/Ex/noname.out_ascii16
-rw-r--r--regress/mdoc/Ex/noname.out_lint2
-rw-r--r--regress/mdoc/Ex/nostd.in15
-rw-r--r--regress/mdoc/Ex/nostd.out_ascii16
-rw-r--r--regress/mdoc/Ex/nostd.out_lint3
-rw-r--r--regress/mdoc/Fd/Makefile7
-rw-r--r--regress/mdoc/Fd/break.in26
-rw-r--r--regress/mdoc/Fd/break.out_ascii27
-rw-r--r--regress/mdoc/Fd/empty.in14
-rw-r--r--regress/mdoc/Fd/empty.out_ascii13
-rw-r--r--regress/mdoc/Fd/empty.out_lint2
-rw-r--r--regress/mdoc/Fd/eos.in10
-rw-r--r--regress/mdoc/Fd/eos.out_ascii10
-rw-r--r--regress/mdoc/Fd/font.in10
-rw-r--r--regress/mdoc/Fd/font.out_ascii10
-rw-r--r--regress/mdoc/Fl/Makefile5
-rw-r--r--regress/mdoc/Fl/font.in10
-rw-r--r--regress/mdoc/Fl/font.out_ascii9
-rw-r--r--regress/mdoc/Fl/multiarg.in14
-rw-r--r--regress/mdoc/Fl/multiarg.out_ascii11
-rw-r--r--regress/mdoc/Fl/noarg.in19
-rw-r--r--regress/mdoc/Fl/noarg.out_ascii13
-rw-r--r--regress/mdoc/Fl/parsed.in18
-rw-r--r--regress/mdoc/Fl/parsed.out_ascii17
-rw-r--r--regress/mdoc/Fl/punct.in39
-rw-r--r--regress/mdoc/Fl/punct.out_ascii12
-rw-r--r--regress/mdoc/Fo/Makefile15
-rw-r--r--regress/mdoc/Fo/basic.in24
-rw-r--r--regress/mdoc/Fo/basic.out_ascii16
-rw-r--r--regress/mdoc/Fo/break.in49
-rw-r--r--regress/mdoc/Fo/break.out_ascii48
-rw-r--r--regress/mdoc/Fo/eos.in15
-rw-r--r--regress/mdoc/Fo/eos.out_ascii10
-rw-r--r--regress/mdoc/Fo/font.in19
-rw-r--r--regress/mdoc/Fo/font.out_ascii13
-rw-r--r--regress/mdoc/Fo/noarg.in44
-rw-r--r--regress/mdoc/Fo/noarg.out_ascii12
-rw-r--r--regress/mdoc/Fo/noarg.out_lint10
-rw-r--r--regress/mdoc/Fo/nohead.in13
-rw-r--r--regress/mdoc/Fo/nohead.out_ascii9
-rw-r--r--regress/mdoc/Fo/nohead.out_lint1
-rw-r--r--regress/mdoc/Fo/obsolete.in12
-rw-r--r--regress/mdoc/Fo/obsolete.out_ascii11
-rw-r--r--regress/mdoc/Fo/obsolete.out_lint2
-rw-r--r--regress/mdoc/Fo/punct.in9
-rw-r--r--regress/mdoc/Fo/punct.out_ascii9
-rw-r--r--regress/mdoc/Fo/section.in83
-rw-r--r--regress/mdoc/Fo/section.out_ascii59
-rw-r--r--regress/mdoc/Fo/warn.in13
-rw-r--r--regress/mdoc/Fo/warn.out_ascii13
-rw-r--r--regress/mdoc/Fo/warn.out_lint2
-rw-r--r--regress/mdoc/Ft/Makefile5
-rw-r--r--regress/mdoc/Ft/font.in10
-rw-r--r--regress/mdoc/Ft/font.out_ascii9
-rw-r--r--regress/mdoc/Ic/Makefile6
-rw-r--r--regress/mdoc/Ic/font.in10
-rw-r--r--regress/mdoc/Ic/font.out_ascii9
-rw-r--r--regress/mdoc/Ic/noarg.in12
-rw-r--r--regress/mdoc/Ic/noarg.out_ascii9
-rw-r--r--regress/mdoc/Ic/noarg.out_lint1
-rw-r--r--regress/mdoc/In/Makefile6
-rw-r--r--regress/mdoc/In/break.in26
-rw-r--r--regress/mdoc/In/break.out_ascii26
-rw-r--r--regress/mdoc/In/eos.in10
-rw-r--r--regress/mdoc/In/eos.out_ascii9
-rw-r--r--regress/mdoc/In/font.in10
-rw-r--r--regress/mdoc/In/font.out_ascii9
-rw-r--r--regress/mdoc/In/noarg.in20
-rw-r--r--regress/mdoc/In/noarg.out_ascii18
-rw-r--r--regress/mdoc/In/noarg.out_lint2
-rw-r--r--regress/mdoc/Lb/Makefile6
-rw-r--r--regress/mdoc/Lb/badargs.in10
-rw-r--r--regress/mdoc/Lb/badargs.out_ascii10
-rw-r--r--regress/mdoc/Lb/badargs.out_lint1
-rw-r--r--regress/mdoc/Lb/break.in12
-rw-r--r--regress/mdoc/Lb/break.out_ascii13
-rw-r--r--regress/mdoc/Lb/eos.in10
-rw-r--r--regress/mdoc/Lb/eos.out_ascii9
-rw-r--r--regress/mdoc/Li/Makefile6
-rw-r--r--regress/mdoc/Li/font.in10
-rw-r--r--regress/mdoc/Li/font.out_ascii9
-rw-r--r--regress/mdoc/Li/punct.in83
-rw-r--r--regress/mdoc/Li/punct.out_ascii26
-rw-r--r--regress/mdoc/Li/punct.out_lint24
-rw-r--r--regress/mdoc/Lk/Makefile6
-rw-r--r--regress/mdoc/Lk/font.in10
-rw-r--r--regress/mdoc/Lk/font.out_ascii9
-rw-r--r--regress/mdoc/Lk/link.in16
-rw-r--r--regress/mdoc/Lk/link.out_ascii16
-rw-r--r--regress/mdoc/Lk/noarg.in14
-rw-r--r--regress/mdoc/Lk/noarg.out_ascii10
-rw-r--r--regress/mdoc/Lk/noarg.out_lint1
-rw-r--r--regress/mdoc/Makefile9
-rw-r--r--regress/mdoc/Makefile.inc3
-rw-r--r--regress/mdoc/Ms/Makefile6
-rw-r--r--regress/mdoc/Ms/font.in10
-rw-r--r--regress/mdoc/Ms/font.out_ascii9
-rw-r--r--regress/mdoc/Ms/noarg.in12
-rw-r--r--regress/mdoc/Ms/noarg.out_ascii9
-rw-r--r--regress/mdoc/Ms/noarg.out_lint1
-rw-r--r--regress/mdoc/Mt/Makefile5
-rw-r--r--regress/mdoc/Mt/font.in10
-rw-r--r--regress/mdoc/Mt/font.out_ascii9
-rw-r--r--regress/mdoc/Mt/simple.in12
-rw-r--r--regress/mdoc/Mt/simple.out_ascii11
-rw-r--r--regress/mdoc/Nd/Makefile6
-rw-r--r--regress/mdoc/Nd/broken.in22
-rw-r--r--regress/mdoc/Nd/broken.out_ascii17
-rw-r--r--regress/mdoc/Nd/broken.out_lint6
-rw-r--r--regress/mdoc/Nd/hyph.in11
-rw-r--r--regress/mdoc/Nd/hyph.out_ascii10
-rw-r--r--regress/mdoc/Nd/noarg.in8
-rw-r--r--regress/mdoc/Nd/noarg.out_ascii9
-rw-r--r--regress/mdoc/Nd/noarg.out_lint1
-rw-r--r--regress/mdoc/Nd/par.in15
-rw-r--r--regress/mdoc/Nd/par.out_ascii13
-rw-r--r--regress/mdoc/Nm/Makefile24
-rw-r--r--regress/mdoc/Nm/badNAME.in8
-rw-r--r--regress/mdoc/Nm/badNAME.out_ascii9
-rw-r--r--regress/mdoc/Nm/badNAME.out_lint2
-rw-r--r--regress/mdoc/Nm/badNAMEuse.in9
-rw-r--r--regress/mdoc/Nm/badNAMEuse.out_ascii10
-rw-r--r--regress/mdoc/Nm/badNAMEuse.out_lint2
-rw-r--r--regress/mdoc/Nm/break.in12
-rw-r--r--regress/mdoc/Nm/break.out_ascii12
-rw-r--r--regress/mdoc/Nm/break.out_lint1
-rw-r--r--regress/mdoc/Nm/broken.in10
-rw-r--r--regress/mdoc/Nm/broken.out_ascii11
-rw-r--r--regress/mdoc/Nm/empty.in13
-rw-r--r--regress/mdoc/Nm/empty.out_ascii13
-rw-r--r--regress/mdoc/Nm/emptyNAME.in8
-rw-r--r--regress/mdoc/Nm/emptyNAME.out_ascii9
-rw-r--r--regress/mdoc/Nm/emptyNAMEuse.in9
-rw-r--r--regress/mdoc/Nm/emptyNAMEuse.out_ascii10
-rw-r--r--regress/mdoc/Nm/font.in10
-rw-r--r--regress/mdoc/Nm/font.out_ascii9
-rw-r--r--regress/mdoc/Nm/long.in11
-rw-r--r--regress/mdoc/Nm/long.out_ascii14
-rw-r--r--regress/mdoc/Nm/par.in11
-rw-r--r--regress/mdoc/Nm/par.out_ascii11
-rw-r--r--regress/mdoc/Nm/parns.in23
-rw-r--r--regress/mdoc/Nm/parns.out_ascii17
-rw-r--r--regress/mdoc/Nm/punct.in39
-rw-r--r--regress/mdoc/Nm/punct.out_ascii12
-rw-r--r--regress/mdoc/No/Makefile6
-rw-r--r--regress/mdoc/No/punct.in83
-rw-r--r--regress/mdoc/No/punct.out_ascii26
-rw-r--r--regress/mdoc/No/punct.out_lint24
-rw-r--r--regress/mdoc/No/spacing.in24
-rw-r--r--regress/mdoc/No/spacing.out_ascii11
-rw-r--r--regress/mdoc/Ns/Makefile6
-rw-r--r--regress/mdoc/Ns/position.in29
-rw-r--r--regress/mdoc/Ns/position.out_ascii19
-rw-r--r--regress/mdoc/Ns/position.out_lint1
-rw-r--r--regress/mdoc/Ns/punct.in13
-rw-r--r--regress/mdoc/Ns/punct.out_ascii10
-rw-r--r--regress/mdoc/Oo/Makefile5
-rw-r--r--regress/mdoc/Oo/punct.in23
-rw-r--r--regress/mdoc/Oo/punct.out_ascii13
-rw-r--r--regress/mdoc/Op/Makefile9
-rw-r--r--regress/mdoc/Op/break.in29
-rw-r--r--regress/mdoc/Op/break.out_lint3
-rw-r--r--regress/mdoc/Op/broken.in24
-rw-r--r--regress/mdoc/Op/broken.out_ascii11
-rw-r--r--regress/mdoc/Op/broken.out_lint2
-rw-r--r--regress/mdoc/Op/punct.in31
-rw-r--r--regress/mdoc/Op/punct.out_ascii17
-rw-r--r--regress/mdoc/Os/Makefile7
-rw-r--r--regress/mdoc/Os/dupe.in11
-rw-r--r--regress/mdoc/Os/dupe.out_ascii9
-rw-r--r--regress/mdoc/Os/dupe.out_lint3
-rw-r--r--regress/mdoc/Os/late.in9
-rw-r--r--regress/mdoc/Os/late.out_ascii9
-rw-r--r--regress/mdoc/Os/late.out_lint1
-rw-r--r--regress/mdoc/Os/long.in8
-rw-r--r--regress/mdoc/Os/long.out_ascii11
-rw-r--r--regress/mdoc/Os/missing.in7
-rw-r--r--regress/mdoc/Os/missing.out_ascii9
-rw-r--r--regress/mdoc/Os/missing.out_lint1
-rw-r--r--regress/mdoc/Ox/Makefile5
-rw-r--r--regress/mdoc/Ox/keep.in11
-rw-r--r--regress/mdoc/Ox/keep.out_ascii10
-rw-r--r--regress/mdoc/Pa/Makefile7
-rw-r--r--regress/mdoc/Pa/font.in10
-rw-r--r--regress/mdoc/Pa/font.out_ascii9
-rw-r--r--regress/mdoc/Pa/punct.in39
-rw-r--r--regress/mdoc/Pa/punct.out_ascii11
-rw-r--r--regress/mdoc/Pf/Makefile6
-rw-r--r--regress/mdoc/Pf/spacing.in31
-rw-r--r--regress/mdoc/Pf/spacing.out_ascii15
-rw-r--r--regress/mdoc/Pf/spacing.out_lint3
-rw-r--r--regress/mdoc/Pp/Makefile6
-rw-r--r--regress/mdoc/Pp/arg.in14
-rw-r--r--regress/mdoc/Pp/arg.out_ascii14
-rw-r--r--regress/mdoc/Pp/arg.out_lint3
-rw-r--r--regress/mdoc/Qq/Makefile5
-rw-r--r--regress/mdoc/Qq/empty.in14
-rw-r--r--regress/mdoc/Qq/empty.out_ascii9
-rw-r--r--regress/mdoc/Rs/Makefile11
-rw-r--r--regress/mdoc/Rs/allch.in48
-rw-r--r--regress/mdoc/Rs/allch.out_ascii21
-rw-r--r--regress/mdoc/Rs/allch.out_lint6
-rw-r--r--regress/mdoc/Rs/args.in18
-rw-r--r--regress/mdoc/Rs/args.out_ascii13
-rw-r--r--regress/mdoc/Rs/args.out_lint2
-rw-r--r--regress/mdoc/Rs/break.in27
-rw-r--r--regress/mdoc/Rs/break.out_ascii19
-rw-r--r--regress/mdoc/Rs/empty.in16
-rw-r--r--regress/mdoc/Rs/empty.out_ascii14
-rw-r--r--regress/mdoc/Rs/empty.out_lint2
-rw-r--r--regress/mdoc/Rs/three_authors.in13
-rw-r--r--regress/mdoc/Rs/three_authors.out_ascii9
-rw-r--r--regress/mdoc/Rv/Makefile11
-rw-r--r--regress/mdoc/Rv/args.in15
-rw-r--r--regress/mdoc/Rv/args.out_ascii22
-rw-r--r--regress/mdoc/Rv/noname.in15
-rw-r--r--regress/mdoc/Rv/noname.out_ascii22
-rw-r--r--regress/mdoc/Rv/noname.out_lint1
-rw-r--r--regress/mdoc/Rv/nostd.in15
-rw-r--r--regress/mdoc/Rv/nostd.out_ascii22
-rw-r--r--regress/mdoc/Rv/nostd.out_lint3
-rw-r--r--regress/mdoc/Sh/Makefile11
-rw-r--r--regress/mdoc/Sh/badNAME.in8
-rw-r--r--regress/mdoc/Sh/badNAME.out_ascii9
-rw-r--r--regress/mdoc/Sh/badNAME.out_lint2
-rw-r--r--regress/mdoc/Sh/before.in13
-rw-r--r--regress/mdoc/Sh/before.out_ascii11
-rw-r--r--regress/mdoc/Sh/before.out_lint1
-rw-r--r--regress/mdoc/Sh/empty.in10
-rw-r--r--regress/mdoc/Sh/empty.out_ascii11
-rw-r--r--regress/mdoc/Sh/empty.out_lint1
-rw-r--r--regress/mdoc/Sh/emptyNAME.in6
-rw-r--r--regress/mdoc/Sh/emptyNAME.out_ascii7
-rw-r--r--regress/mdoc/Sh/emptyNAME.out_lint2
-rw-r--r--regress/mdoc/Sh/first.in5
-rw-r--r--regress/mdoc/Sh/first.out_lint1
-rw-r--r--regress/mdoc/Sh/nohead.in12
-rw-r--r--regress/mdoc/Sh/nohead.out_ascii9
-rw-r--r--regress/mdoc/Sh/nohead.out_lint2
-rw-r--r--regress/mdoc/Sh/order.in12
-rw-r--r--regress/mdoc/Sh/order.out_ascii14
-rw-r--r--regress/mdoc/Sh/order.out_lint3
-rw-r--r--regress/mdoc/Sh/orderNAME.in9
-rw-r--r--regress/mdoc/Sh/orderNAME.out_ascii12
-rw-r--r--regress/mdoc/Sh/orderNAME.out_lint2
-rw-r--r--regress/mdoc/Sh/punctNAME.in10
-rw-r--r--regress/mdoc/Sh/punctNAME.out_ascii10
-rw-r--r--regress/mdoc/Sh/punctNAME.out_lint4
-rw-r--r--regress/mdoc/Sh/subbefore.in14
-rw-r--r--regress/mdoc/Sh/subbefore.out_ascii12
-rw-r--r--regress/mdoc/Sh/subbefore.out_lint1
-rw-r--r--regress/mdoc/Sm/Makefile8
-rw-r--r--regress/mdoc/Sm/badarg.in14
-rw-r--r--regress/mdoc/Sm/badarg.out_ascii9
-rw-r--r--regress/mdoc/Sm/badarg.out_lint2
-rw-r--r--regress/mdoc/Sm/noarg.in20
-rw-r--r--regress/mdoc/Sm/noarg.out_ascii11
-rw-r--r--regress/mdoc/Sm/scope.in30
-rw-r--r--regress/mdoc/Sm/scope.out_ascii17
-rw-r--r--regress/mdoc/Sm/spacing-No.in60
-rw-r--r--regress/mdoc/Sm/spacing-No.out_ascii26
-rw-r--r--regress/mdoc/Sm/spacing-Op.in63
-rw-r--r--regress/mdoc/Sm/spacing-Op.out_ascii28
-rw-r--r--regress/mdoc/Sm/twoarg.in21
-rw-r--r--regress/mdoc/Sm/twoarg.out_ascii12
-rw-r--r--regress/mdoc/Sm/twoarg.out_lint1
-rw-r--r--regress/mdoc/Sq/Makefile5
-rw-r--r--regress/mdoc/Sq/empty.in14
-rw-r--r--regress/mdoc/Sq/empty.out_ascii9
-rw-r--r--regress/mdoc/St/Makefile12
-rw-r--r--regress/mdoc/St/badargs.in20
-rw-r--r--regress/mdoc/St/badargs.out_ascii17
-rw-r--r--regress/mdoc/St/badargs.out_lint2
-rw-r--r--regress/mdoc/St/call.in14
-rw-r--r--regress/mdoc/St/call.out_ascii13
-rw-r--r--regress/mdoc/St/call.out_lint1
-rw-r--r--regress/mdoc/Sx/Makefile6
-rw-r--r--regress/mdoc/Sx/font.in10
-rw-r--r--regress/mdoc/Sx/font.out_ascii9
-rw-r--r--regress/mdoc/Sx/noarg.in12
-rw-r--r--regress/mdoc/Sx/noarg.out_ascii9
-rw-r--r--regress/mdoc/Sx/noarg.out_lint1
-rw-r--r--regress/mdoc/Sy/Makefile6
-rw-r--r--regress/mdoc/Sy/font.in10
-rw-r--r--regress/mdoc/Sy/font.out_ascii9
-rw-r--r--regress/mdoc/Sy/noarg.in12
-rw-r--r--regress/mdoc/Sy/noarg.out_ascii9
-rw-r--r--regress/mdoc/Sy/noarg.out_lint1
-rw-r--r--regress/mdoc/Sy/punct.in82
-rw-r--r--regress/mdoc/Sy/punct.out_ascii26
-rw-r--r--regress/mdoc/Sy/punct.out_lint24
-rw-r--r--regress/mdoc/Tn/Makefile6
-rw-r--r--regress/mdoc/Tn/font.in10
-rw-r--r--regress/mdoc/Tn/font.out_ascii9
-rw-r--r--regress/mdoc/Tn/noarg.in12
-rw-r--r--regress/mdoc/Tn/noarg.out_ascii9
-rw-r--r--regress/mdoc/Tn/noarg.out_lint1
-rw-r--r--regress/mdoc/Ud/Makefile6
-rw-r--r--regress/mdoc/Ud/arg.in19
-rw-r--r--regress/mdoc/Ud/arg.out_ascii13
-rw-r--r--regress/mdoc/Ud/arg.out_lint4
-rw-r--r--regress/mdoc/Ux/Makefile5
-rw-r--r--regress/mdoc/Ux/eos.in22
-rw-r--r--regress/mdoc/Ux/eos.out_ascii11
-rw-r--r--regress/mdoc/Ux/spacing.in20
-rw-r--r--regress/mdoc/Ux/spacing.out_ascii11
-rw-r--r--regress/mdoc/Va/Makefile6
-rw-r--r--regress/mdoc/Va/basic.in14
-rw-r--r--regress/mdoc/Va/basic.out_ascii10
-rw-r--r--regress/mdoc/Va/font.in10
-rw-r--r--regress/mdoc/Va/font.out_ascii9
-rw-r--r--regress/mdoc/Va/noarg.in13
-rw-r--r--regress/mdoc/Va/noarg.out_ascii9
-rw-r--r--regress/mdoc/Va/noarg.out_lint1
-rw-r--r--regress/mdoc/Vt/Makefile6
-rw-r--r--regress/mdoc/Vt/child.in15
-rw-r--r--regress/mdoc/Vt/child.out_ascii12
-rw-r--r--regress/mdoc/Vt/font.in10
-rw-r--r--regress/mdoc/Vt/font.out_ascii9
-rw-r--r--regress/mdoc/Vt/noarg.in12
-rw-r--r--regress/mdoc/Vt/noarg.out_ascii9
-rw-r--r--regress/mdoc/Vt/noarg.out_lint1
-rw-r--r--regress/mdoc/Vt/spacing.in16
-rw-r--r--regress/mdoc/Vt/spacing.out_ascii13
-rw-r--r--regress/mdoc/Xr/Makefile6
-rw-r--r--regress/mdoc/Xr/args.in27
-rw-r--r--regress/mdoc/Xr/args.out_ascii16
-rw-r--r--regress/mdoc/Xr/args.out_lint3
-rw-r--r--regress/mdoc/blank/Makefile8
-rw-r--r--regress/mdoc/blank/comment.in15
-rw-r--r--regress/mdoc/blank/comment.out_ascii11
-rw-r--r--regress/mdoc/blank/comment.out_lint1
-rw-r--r--regress/mdoc/blank/line.in90
-rw-r--r--regress/mdoc/blank/line.out_ascii77
-rw-r--r--regress/mdoc/blank/line.out_lint23
-rw-r--r--regress/mdoc/blank/list.in66
-rw-r--r--regress/mdoc/blank/list.out_ascii42
-rw-r--r--regress/mdoc/blank/list.out_lint7
-rw-r--r--regress/mdoc/break/Makefile15
-rw-r--r--regress/mdoc/break/brokenbreaker.in14
-rw-r--r--regress/mdoc/break/brokenbreaker.out_ascii9
-rw-r--r--regress/mdoc/break/brokenbreaker.out_lint3
-rw-r--r--regress/mdoc/break/notopen.in12
-rw-r--r--regress/mdoc/break/notopen.out_ascii9
-rw-r--r--regress/mdoc/break/notopen.out_lint1
-rw-r--r--regress/mdoc/break/tail.in37
-rw-r--r--regress/mdoc/break/tail.out_ascii21
-rw-r--r--regress/mdoc/break/tail.out_lint4
-rw-r--r--regress/mdoc/break/twice.in32
-rw-r--r--regress/mdoc/break/twice.out_ascii15
-rw-r--r--regress/mdoc/break/twice.out_lint8
-rw-r--r--regress/mdoc/break/two.in42
-rw-r--r--regress/mdoc/break/two.out_ascii19
-rw-r--r--regress/mdoc/break/two.out_lint8
654 files changed, 10739 insertions, 0 deletions
diff --git a/regress/mdoc/Ad/Makefile b/regress/mdoc/Ad/Makefile
new file mode 100644
index 00000000..1be2a84a
--- /dev/null
+++ b/regress/mdoc/Ad/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.4 2014/07/02 20:18:42 schwarze Exp $
+
+REGRESS_TARGETS = noarg font
+LINT_TARGETS = noarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Ad/font.in b/regress/mdoc/Ad/font.in
new file mode 100644
index 00000000..104bc194
--- /dev/null
+++ b/regress/mdoc/Ad/font.in
@@ -0,0 +1,10 @@
+.Dd November 20, 2014
+.Dt AD-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ad-font
+.Nd changing fonts inside the address macro
+.Sh DESCRIPTION
+normal text
+.Ad emphasis\\fBbold\\fPback | after : punctuation
+trailing text
diff --git a/regress/mdoc/Ad/font.out_ascii b/regress/mdoc/Ad/font.out_ascii
new file mode 100644
index 00000000..e829efbd
--- /dev/null
+++ b/regress/mdoc/Ad/font.out_ascii
@@ -0,0 +1,9 @@
+AD-FONT(1) General Commands Manual AD-FONT(1)
+
+NNAAMMEE
+ AAdd--ffoonntt - changing fonts inside the address macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text _e_m_p_h_a_s_i_sbboolldd_b_a_c_k | _a_f_t_e_r: _p_u_n_c_t_u_a_t_i_o_n trailing text
+
+OpenBSD November 20, 2014 OpenBSD
diff --git a/regress/mdoc/Ad/noarg.in b/regress/mdoc/Ad/noarg.in
new file mode 100644
index 00000000..65f8167b
--- /dev/null
+++ b/regress/mdoc/Ad/noarg.in
@@ -0,0 +1,12 @@
+.Dd January 19, 2011
+.Dt AD-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ad-noarg
+.Nd address macro without an argument
+.Sh DESCRIPTION
+with address:
+.Ad 0x3bc
+no address:
+.Ad
+end of test document
diff --git a/regress/mdoc/Ad/noarg.out_ascii b/regress/mdoc/Ad/noarg.out_ascii
new file mode 100644
index 00000000..6ad60d8a
--- /dev/null
+++ b/regress/mdoc/Ad/noarg.out_ascii
@@ -0,0 +1,9 @@
+AD-NOARG(1) General Commands Manual AD-NOARG(1)
+
+NNAAMMEE
+ AAdd--nnooaarrgg - address macro without an argument
+
+DDEESSCCRRIIPPTTIIOONN
+ with address: _0_x_3_b_c no address: end of test document
+
+OpenBSD January 19, 2011 OpenBSD
diff --git a/regress/mdoc/Ad/noarg.out_lint b/regress/mdoc/Ad/noarg.out_lint
new file mode 100644
index 00000000..180985aa
--- /dev/null
+++ b/regress/mdoc/Ad/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:11:2: WARNING: skipping empty macro: Ad
diff --git a/regress/mdoc/An/Makefile b/regress/mdoc/An/Makefile
new file mode 100644
index 00000000..b061bf76
--- /dev/null
+++ b/regress/mdoc/An/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.2 2014/08/14 02:00:52 schwarze Exp $
+
+REGRESS_TARGETS = break
+LINT_TARGETS = break
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/An/break.in b/regress/mdoc/An/break.in
new file mode 100644
index 00000000..b783b337
--- /dev/null
+++ b/regress/mdoc/An/break.in
@@ -0,0 +1,49 @@
+.Dd February 5, 2015
+.Dt AN-BREAK 1
+.Os OpenBSD
+.Sh NAME
+.Nm An-break
+.Nd line breaking of the author macro
+.Sh DESCRIPTION
+inline is the default:
+.An Kristaps ,
+.An Ingo ,
+and
+.An Joerg .
+empty
+.An
+trailing
+.An .
+.Pp
+.An -split -nosplit bogus
+split mode:
+.An Kristaps
+.An Ingo
+.An Joerg
+.Pp
+empty
+.An
+trailing
+.An .
+.An -nosplit
+.Sh AUTHORS
+split mode is the default:
+.An Kristaps
+.An Ingo
+.An Joerg
+.Pp
+empty
+.An
+trailing
+.An .
+.An -nosplit -split bogus
+.Pp
+inline:
+.An Kristaps ,
+.An Ingo ,
+and
+.An Joerg .
+empty
+.An
+trailing
+.An .
diff --git a/regress/mdoc/An/break.out_ascii b/regress/mdoc/An/break.out_ascii
new file mode 100644
index 00000000..92cec343
--- /dev/null
+++ b/regress/mdoc/An/break.out_ascii
@@ -0,0 +1,29 @@
+AN-BREAK(1) General Commands Manual AN-BREAK(1)
+
+NNAAMMEE
+ AAnn--bbrreeaakk - line breaking of the author macro
+
+DDEESSCCRRIIPPTTIIOONN
+ inline is the default: Kristaps, Ingo, and Joerg. empty trailing .
+
+ split mode:
+ Kristaps
+ Ingo
+ Joerg
+
+ empty
+ trailing
+ .
+
+AAUUTTHHOORRSS
+ split mode is the default: Kristaps
+ Ingo
+ Joerg
+
+ empty
+ trailing
+ .
+
+ inline: Kristaps, Ingo, and Joerg. empty trailing .
+
+OpenBSD February 5, 2015 OpenBSD
diff --git a/regress/mdoc/An/break.out_lint b/regress/mdoc/An/break.out_lint
new file mode 100644
index 00000000..25622fd1
--- /dev/null
+++ b/regress/mdoc/An/break.out_lint
@@ -0,0 +1,12 @@
+mandoc: break.in:14:2: WARNING: skipping empty macro: An
+mandoc: break.in:16:2: WARNING: skipping empty macro: An
+mandoc: break.in:18:12: WARNING: skipping duplicate argument: An -nosplit
+mandoc: break.in:18:21: ERROR: skipping excess arguments: An ... bogus
+mandoc: break.in:25:2: WARNING: skipping empty macro: An
+mandoc: break.in:27:2: WARNING: skipping empty macro: An
+mandoc: break.in:36:2: WARNING: skipping empty macro: An
+mandoc: break.in:38:2: WARNING: skipping empty macro: An
+mandoc: break.in:39:14: WARNING: skipping duplicate argument: An -split
+mandoc: break.in:39:21: ERROR: skipping excess arguments: An ... bogus
+mandoc: break.in:47:2: WARNING: skipping empty macro: An
+mandoc: break.in:49:2: WARNING: skipping empty macro: An
diff --git a/regress/mdoc/Ap/Makefile b/regress/mdoc/Ap/Makefile
new file mode 100644
index 00000000..4ee49253
--- /dev/null
+++ b/regress/mdoc/Ap/Makefile
@@ -0,0 +1,5 @@
+# $OpenBSD: Makefile,v 1.2 2012/11/16 18:40:39 schwarze Exp $
+
+REGRESS_TARGETS = middle eos
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Ap/eos.in b/regress/mdoc/Ap/eos.in
new file mode 100644
index 00000000..032cf72a
--- /dev/null
+++ b/regress/mdoc/Ap/eos.in
@@ -0,0 +1,12 @@
+.Dd November 16, 2012
+.Dt AP-EOS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ap-eos
+.Nd end of sentence handling after the apostrophe macro
+.Sh DESCRIPTION
+The first sentence is
+.An Ingo Ap s .
+The second is
+.An Kristaps Ap .
+No idea about the third.
diff --git a/regress/mdoc/Ap/eos.out_ascii b/regress/mdoc/Ap/eos.out_ascii
new file mode 100644
index 00000000..c91617c6
--- /dev/null
+++ b/regress/mdoc/Ap/eos.out_ascii
@@ -0,0 +1,10 @@
+AP-EOS(1) General Commands Manual AP-EOS(1)
+
+NNAAMMEE
+ AApp--eeooss - end of sentence handling after the apostrophe macro
+
+DDEESSCCRRIIPPTTIIOONN
+ The first sentence is Ingo's. The second is Kristaps'. No idea about
+ the third.
+
+OpenBSD November 16, 2012 OpenBSD
diff --git a/regress/mdoc/Ap/middle.in b/regress/mdoc/Ap/middle.in
new file mode 100644
index 00000000..03d7b6f9
--- /dev/null
+++ b/regress/mdoc/Ap/middle.in
@@ -0,0 +1,8 @@
+.Dd September 30, 2011
+.Dt AP-MIDDLE 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ap-middle
+.Nd apostrophe in the middle of a macro line
+.Sh DESCRIPTION
+.Xr mandoc 1 Ap s
diff --git a/regress/mdoc/Ap/middle.out_ascii b/regress/mdoc/Ap/middle.out_ascii
new file mode 100644
index 00000000..c51bd6d8
--- /dev/null
+++ b/regress/mdoc/Ap/middle.out_ascii
@@ -0,0 +1,9 @@
+AP-MIDDLE(1) General Commands Manual AP-MIDDLE(1)
+
+NNAAMMEE
+ AApp--mmiiddddllee - apostrophe in the middle of a macro line
+
+DDEESSCCRRIIPPTTIIOONN
+ mandoc(1)'s
+
+OpenBSD September 30, 2011 OpenBSD
diff --git a/regress/mdoc/Aq/Makefile b/regress/mdoc/Aq/Makefile
new file mode 100644
index 00000000..ae347ad3
--- /dev/null
+++ b/regress/mdoc/Aq/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.2 2014/11/19 21:59:20 schwarze Exp $
+
+REGRESS_TARGETS = author empty
+UTF8_TARGETS = author empty
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Aq/author.in b/regress/mdoc/Aq/author.in
new file mode 100644
index 00000000..9e007f58
--- /dev/null
+++ b/regress/mdoc/Aq/author.in
@@ -0,0 +1,10 @@
+.Dd November 19, 2014
+.Dt AQ-AUTHOR 1
+.Os OpenBSD
+.Sh NAME
+.Nm Aq-author
+.Nd angle brackets after an author name macro
+.Sh DESCRIPTION
+.An Name Ao Mt addr Ac An Name Aq Mt addr
+.Sh AUTHORS
+.An Name Ao Mt addr Ac An Name Aq Mt addr
diff --git a/regress/mdoc/Aq/author.out_ascii b/regress/mdoc/Aq/author.out_ascii
new file mode 100644
index 00000000..80775148
--- /dev/null
+++ b/regress/mdoc/Aq/author.out_ascii
@@ -0,0 +1,13 @@
+AQ-AUTHOR(1) General Commands Manual AQ-AUTHOR(1)
+
+NNAAMMEE
+ AAqq--aauutthhoorr - angle brackets after an author name macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Name <_a_d_d_r> Name <_a_d_d_r>
+
+AAUUTTHHOORRSS
+ Name <_a_d_d_r>
+ Name <_a_d_d_r>
+
+OpenBSD November 19, 2014 OpenBSD
diff --git a/regress/mdoc/Aq/author.out_utf8 b/regress/mdoc/Aq/author.out_utf8
new file mode 100644
index 00000000..28c4faca
--- /dev/null
+++ b/regress/mdoc/Aq/author.out_utf8
@@ -0,0 +1,13 @@
+AQ-AUTHOR(1) General Commands Manual AQ-AUTHOR(1)
+
+NNAAMMEE
+ AAqq--aauutthhoorr – angle brackets after an author name macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Name <_a_d_d_r> Name <_a_d_d_r>
+
+AAUUTTHHOORRSS
+ Name <_a_d_d_r>
+ Name <_a_d_d_r>
+
+OpenBSD November 19, 2014 OpenBSD
diff --git a/regress/mdoc/Aq/empty.in b/regress/mdoc/Aq/empty.in
new file mode 100644
index 00000000..a407855e
--- /dev/null
+++ b/regress/mdoc/Aq/empty.in
@@ -0,0 +1,14 @@
+.Dd August 6, 2010
+.Dt AQ-EMPTY 1
+.Os OpenBSD
+.Sh NAME
+.Nm Aq-empty
+.Nd empty implicit enclosure macros
+.Sh DESCRIPTION
+An empty
+.Aq
+and a full
+.Aq user@host
+return path.
+And another
+.Ao full Ac one .
diff --git a/regress/mdoc/Aq/empty.out_ascii b/regress/mdoc/Aq/empty.out_ascii
new file mode 100644
index 00000000..c587ee51
--- /dev/null
+++ b/regress/mdoc/Aq/empty.out_ascii
@@ -0,0 +1,9 @@
+AQ-EMPTY(1) General Commands Manual AQ-EMPTY(1)
+
+NNAAMMEE
+ AAqq--eemmppttyy - empty implicit enclosure macros
+
+DDEESSCCRRIIPPTTIIOONN
+ An empty <> and a full <user@host> return path. And another <full> one.
+
+OpenBSD August 6, 2010 OpenBSD
diff --git a/regress/mdoc/Aq/empty.out_utf8 b/regress/mdoc/Aq/empty.out_utf8
new file mode 100644
index 00000000..0ae72b6f
--- /dev/null
+++ b/regress/mdoc/Aq/empty.out_utf8
@@ -0,0 +1,9 @@
+AQ-EMPTY(1) General Commands Manual AQ-EMPTY(1)
+
+NNAAMMEE
+ AAqq--eemmppttyy – empty implicit enclosure macros
+
+DDEESSCCRRIIPPTTIIOONN
+ An empty ⟨⟩ and a full ⟨user@host⟩ return path. And another ⟨full⟩ one.
+
+OpenBSD August 6, 2010 OpenBSD
diff --git a/regress/mdoc/Ar/Makefile b/regress/mdoc/Ar/Makefile
new file mode 100644
index 00000000..2d1d895c
--- /dev/null
+++ b/regress/mdoc/Ar/Makefile
@@ -0,0 +1,5 @@
+# $OpenBSD: Makefile,v 1.3 2012/07/09 17:52:09 schwarze Exp $
+
+REGRESS_TARGETS = punct font
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Ar/font.in b/regress/mdoc/Ar/font.in
new file mode 100644
index 00000000..aa14b7d8
--- /dev/null
+++ b/regress/mdoc/Ar/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt AR-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ar-font
+.Nd changing fonts inside the argument macro
+.Sh DESCRIPTION
+normal text
+.Ar emphasis\\fBbold\\fPback
+trailing text
diff --git a/regress/mdoc/Ar/font.out_ascii b/regress/mdoc/Ar/font.out_ascii
new file mode 100644
index 00000000..c30d0078
--- /dev/null
+++ b/regress/mdoc/Ar/font.out_ascii
@@ -0,0 +1,9 @@
+AR-FONT(1) General Commands Manual AR-FONT(1)
+
+NNAAMMEE
+ AArr--ffoonntt - changing fonts inside the argument macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text _e_m_p_h_a_s_i_sbboolldd_b_a_c_k trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Ar/punct.in b/regress/mdoc/Ar/punct.in
new file mode 100644
index 00000000..963f7535
--- /dev/null
+++ b/regress/mdoc/Ar/punct.in
@@ -0,0 +1,39 @@
+.Dd August 21, 2014
+.Dt AR-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ar-punct
+.Nd punctuation handling by the Ar macro
+.Sh DESCRIPTION
+closing punctuation
+.Ar a )
+only one
+.Ar )
+only more than one
+.Ar ) )
+middle
+.Ar a ) z
+start
+.Ar ) z
+dot
+.Ar . z
+comma
+.Ar , z
+semicolon
+.Ar ; z
+colon
+.Ar : z
+quest
+.Ar ? z
+excl
+.Ar ! z
+paren
+.Ar ) z
+bracket
+.Ar ] z
+bar
+.Ar | m
+op paren
+.Ar ( a
+op bracket
+.Ar [ a
diff --git a/regress/mdoc/Ar/punct.out_ascii b/regress/mdoc/Ar/punct.out_ascii
new file mode 100644
index 00000000..d780dbcf
--- /dev/null
+++ b/regress/mdoc/Ar/punct.out_ascii
@@ -0,0 +1,12 @@
+AR-PUNCT(1) General Commands Manual AR-PUNCT(1)
+
+NNAAMMEE
+ AArr--ppuunncctt - punctuation handling by the Ar macro
+
+DDEESSCCRRIIPPTTIIOONN
+ closing punctuation _a) only one _f_i_l_e _._._.) only more than one _f_i_l_e _._._.))
+ middle _a) _z start _f_i_l_e _._._.) _z dot _f_i_l_e _._._.. _z comma _f_i_l_e _._._., _z semicolon
+ _f_i_l_e _._._.; _z colon _f_i_l_e _._._.: _z quest _f_i_l_e _._._.? _z excl _f_i_l_e _._._.! _z paren
+ _f_i_l_e _._._.) _z bracket _f_i_l_e _._._.] _z bar | _m op paren (_a op bracket [_a
+
+OpenBSD August 21, 2014 OpenBSD
diff --git a/regress/mdoc/At/Makefile b/regress/mdoc/At/Makefile
new file mode 100644
index 00000000..6c362995
--- /dev/null
+++ b/regress/mdoc/At/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.2 2014/07/05 12:33:54 schwarze Exp $
+
+REGRESS_TARGETS = invalid
+LINT_TARGETS = invalid
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/At/invalid.in b/regress/mdoc/At/invalid.in
new file mode 100644
index 00000000..8e7d9ce5
--- /dev/null
+++ b/regress/mdoc/At/invalid.in
@@ -0,0 +1,17 @@
+.Dd June 30, 2010
+.Dt AT-INVALID 1
+.Os OpenBSD
+.Sh NAME
+.Nm At-invalid
+.Nd handling of an invalid AT&T UNIX argument
+.Sh DESCRIPTION
+no argument:
+.At
+.Pp
+valid argument:
+.At v7
+.Pp
+invalid argument:
+.At murks
+.Pp
+end of file
diff --git a/regress/mdoc/At/invalid.out_ascii b/regress/mdoc/At/invalid.out_ascii
new file mode 100644
index 00000000..c1cab598
--- /dev/null
+++ b/regress/mdoc/At/invalid.out_ascii
@@ -0,0 +1,15 @@
+AT-INVALID(1) General Commands Manual AT-INVALID(1)
+
+NNAAMMEE
+ AAtt--iinnvvaalliidd - handling of an invalid AT&T UNIX argument
+
+DDEESSCCRRIIPPTTIIOONN
+ no argument: AT&T UNIX
+
+ valid argument: Version 7 AT&T UNIX
+
+ invalid argument: AT&T UNIX murks
+
+ end of file
+
+OpenBSD June 30, 2010 OpenBSD
diff --git a/regress/mdoc/At/invalid.out_lint b/regress/mdoc/At/invalid.out_lint
new file mode 100644
index 00000000..00744a14
--- /dev/null
+++ b/regress/mdoc/At/invalid.out_lint
@@ -0,0 +1 @@
+mandoc: invalid.in:15:5: WARNING: unknown AT&T UNIX version: At murks
diff --git a/regress/mdoc/Bd/Makefile b/regress/mdoc/Bd/Makefile
new file mode 100644
index 00000000..817d9fe7
--- /dev/null
+++ b/regress/mdoc/Bd/Makefile
@@ -0,0 +1,25 @@
+# $OpenBSD: Makefile,v 1.18 2014/12/24 23:31:59 schwarze Exp $
+
+REGRESS_TARGETS = beforeNAME blank centered nested spacing
+REGRESS_TARGETS += badargs empty offset-empty offset-neg
+REGRESS_TARGETS += break broken unclosed
+
+LINT_TARGETS = beforeNAME blank nested badargs break broken unclosed
+
+SKIP_TMAN = beforeNAME centered
+
+# groff-1.22.3 defects:
+# - a display breaking another block continues indefinitely
+# - negative offsets take no effect, but advance the indention on exit
+
+SKIP_GROFF = break offset-neg
+
+# adjustment is disabled in groff for now
+
+SKIP_GROFF += centered
+
+# groff handles content before NAME differently
+
+SKIP_GROFF += beforeNAME
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Bd/badargs.in b/regress/mdoc/Bd/badargs.in
new file mode 100644
index 00000000..0d8b3f4d
--- /dev/null
+++ b/regress/mdoc/Bd/badargs.in
@@ -0,0 +1,51 @@
+.Dd October 27, 2015
+.Dt BD-BADARGS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bd-badargs
+.Nd display block with bad arguments
+.Sh DESCRIPTION
+trailing -offset:
+.Bd -ragged -offset
+is
+ignored
+.Ed tail argument
+double -compact and -offset:
+.Bd -ragged -compact -offset 42n -compact -offset 6n
+last
+wins
+.Ed
+no type:
+.Bd -offset 0n -bogus args
+displayed
+text
+.Ed
+double type:
+.Bd -ragged -compact -unfilled
+ragged
+unfilled
+.Ed
+.Bd -unfilled -compact -ragged
+unfilled
+ragged
+.Ed
+file /dev/null:
+.Bd -ragged -file /dev/null -offset indent
+ragged
+offset indent
+.Ed
+trailing -file:
+.Bd -ragged -offset indent -file
+ragged
+offset indent
+.Ed
+missing -file argument:
+.Bd -ragged -offset indent -file -compact
+ragged
+offset indent
+.Ed
+no argument whatsoever:
+.Bd
+no
+argument
+.Ed
diff --git a/regress/mdoc/Bd/badargs.out_ascii b/regress/mdoc/Bd/badargs.out_ascii
new file mode 100644
index 00000000..1a123a6c
--- /dev/null
+++ b/regress/mdoc/Bd/badargs.out_ascii
@@ -0,0 +1,30 @@
+BD-BADARGS(1) General Commands Manual BD-BADARGS(1)
+
+NNAAMMEE
+ BBdd--bbaaddaarrggss - display block with bad arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ trailing -offset:
+
+ is ignored
+ double -compact and -offset:
+ last wins
+ no type:
+
+ displayed text
+ double type:
+ ragged unfilled
+ unfilled
+ ragged
+ file /dev/null:
+
+ ragged offset indent
+ trailing -file:
+
+ ragged offset indent
+ missing -file argument:
+
+ ragged offset indent
+ no argument whatsoever: no argument
+
+OpenBSD October 27, 2015 OpenBSD
diff --git a/regress/mdoc/Bd/badargs.out_lint b/regress/mdoc/Bd/badargs.out_lint
new file mode 100644
index 00000000..10c9cb02
--- /dev/null
+++ b/regress/mdoc/Bd/badargs.out_lint
@@ -0,0 +1,12 @@
+mandoc: badargs.in:12:2: ERROR: skipping all arguments: Ed tail argument
+mandoc: badargs.in:19:16: ERROR: skipping excess arguments: Bd ... -bogus
+mandoc: badargs.in:9:13: WARNING: empty argument, using 0n: Bd -offset
+mandoc: badargs.in:14:34: WARNING: duplicate argument: Bd -compact
+mandoc: badargs.in:14:43: WARNING: duplicate argument: Bd -offset 6n
+mandoc: badargs.in:19:2: WARNING: missing display type, using -ragged: Bd
+mandoc: badargs.in:24:2: WARNING: skipping duplicate display type: Bd -unfilled
+mandoc: badargs.in:28:2: WARNING: skipping duplicate display type: Bd -ragged
+mandoc: badargs.in:33:2: ERROR: NOT IMPLEMENTED: Bd -file
+mandoc: badargs.in:38:2: ERROR: NOT IMPLEMENTED: Bd -file
+mandoc: badargs.in:43:2: ERROR: NOT IMPLEMENTED: Bd -file
+mandoc: badargs.in:48:2: ERROR: skipping display without arguments: Bd
diff --git a/regress/mdoc/Bd/beforeNAME.in b/regress/mdoc/Bd/beforeNAME.in
new file mode 100644
index 00000000..f264471f
--- /dev/null
+++ b/regress/mdoc/Bd/beforeNAME.in
@@ -0,0 +1,15 @@
+.Dd July 28, 2014
+.Dt BD-BEFORENAME 1
+.Os OpenBSD
+.Bd -centered
+Building and Debugging NetBSD Kernels
+.br
+David A. Holland
+.br
+August 17, 2009
+.Ed
+.Sh NAME
+.Nm Bd-beforename
+.Nd title and author block before the NAME section
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Bd/beforeNAME.out_ascii b/regress/mdoc/Bd/beforeNAME.out_ascii
new file mode 100644
index 00000000..3978941d
--- /dev/null
+++ b/regress/mdoc/Bd/beforeNAME.out_ascii
@@ -0,0 +1,13 @@
+BD-BEFORENAME(1) General Commands Manual BD-BEFORENAME(1)
+
+ Building and Debugging NetBSD Kernels
+ David A. Holland
+ August 17, 2009
+
+NNAAMMEE
+ BBdd--bbeeffoorreennaammee - title and author block before the NAME section
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+OpenBSD July 28, 2014 OpenBSD
diff --git a/regress/mdoc/Bd/beforeNAME.out_lint b/regress/mdoc/Bd/beforeNAME.out_lint
new file mode 100644
index 00000000..a5659948
--- /dev/null
+++ b/regress/mdoc/Bd/beforeNAME.out_lint
@@ -0,0 +1 @@
+mandoc: beforeNAME.in:4:2: WARNING: content before first section header: Bd
diff --git a/regress/mdoc/Bd/blank.in b/regress/mdoc/Bd/blank.in
new file mode 100644
index 00000000..ca95e6da
--- /dev/null
+++ b/regress/mdoc/Bd/blank.in
@@ -0,0 +1,31 @@
+.Dd January 2, 2011
+.Dt BD-BLANK 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bd-blank
+.Nd handling of blank lines in literal displays
+.Sh DESCRIPTION
+.Bd -literal
+completely blank line:
+
+line containing a blank character:
+
+line containing two blank characters:
+
+line containing space tab space:
+
+line starting with a blank character:
+ x
+line starting with two blank characters:
+ x
+line ending in one blank character:
+line ending in two blank characters:
+line ending in space tab space:
+line containing a Pp macro:
+.Pp
+finally, a trailing blank line:
+
+.Ed
+An empty one-line literal display:
+.Dl
+end of test document
diff --git a/regress/mdoc/Bd/blank.out_ascii b/regress/mdoc/Bd/blank.out_ascii
new file mode 100644
index 00000000..de03e318
--- /dev/null
+++ b/regress/mdoc/Bd/blank.out_ascii
@@ -0,0 +1,29 @@
+BD-BLANK(1) General Commands Manual BD-BLANK(1)
+
+NNAAMMEE
+ BBdd--bbllaannkk - handling of blank lines in literal displays
+
+DDEESSCCRRIIPPTTIIOONN
+ completely blank line:
+
+ line containing a blank character:
+
+ line containing two blank characters:
+
+ line containing space tab space:
+
+ line starting with a blank character:
+ x
+ line starting with two blank characters:
+ x
+ line ending in one blank character:
+ line ending in two blank characters:
+ line ending in space tab space:
+ line containing a Pp macro:
+
+ finally, a trailing blank line:
+
+ An empty one-line literal display:
+ end of test document
+
+OpenBSD January 2, 2011 OpenBSD
diff --git a/regress/mdoc/Bd/blank.out_lint b/regress/mdoc/Bd/blank.out_lint
new file mode 100644
index 00000000..fde72ad0
--- /dev/null
+++ b/regress/mdoc/Bd/blank.out_lint
@@ -0,0 +1,8 @@
+mandoc: blank.in:12:1: WARNING: whitespace at end of input line
+mandoc: blank.in:14:1: WARNING: whitespace at end of input line
+mandoc: blank.in:16:1: WARNING: whitespace at end of input line
+mandoc: blank.in:21:36: WARNING: whitespace at end of input line
+mandoc: blank.in:22:37: WARNING: whitespace at end of input line
+mandoc: blank.in:23:32: WARNING: whitespace at end of input line
+mandoc: blank.in:30:8: WARNING: whitespace at end of input line
+mandoc: blank.in:30:2: WARNING: empty block: Dl
diff --git a/regress/mdoc/Bd/break.in b/regress/mdoc/Bd/break.in
new file mode 100644
index 00000000..7eaf663a
--- /dev/null
+++ b/regress/mdoc/Bd/break.in
@@ -0,0 +1,15 @@
+.Dd November 10, 2012
+.Dt BD-BREAK 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bd-break
+.Nd display breaking another block
+.Sh DESCRIPTION
+before both
+.Bd -ragged -offset indent
+before bracket
+.Bo inside both
+.Ed
+after display
+.Bc
+after both
diff --git a/regress/mdoc/Bd/break.out_ascii b/regress/mdoc/Bd/break.out_ascii
new file mode 100644
index 00000000..42f9eb25
--- /dev/null
+++ b/regress/mdoc/Bd/break.out_ascii
@@ -0,0 +1,12 @@
+BD-BREAK(1) General Commands Manual BD-BREAK(1)
+
+NNAAMMEE
+ BBdd--bbrreeaakk - display breaking another block
+
+DDEESSCCRRIIPPTTIIOONN
+ before both
+
+ before bracket [inside both
+ after display] after both
+
+OpenBSD November 10, 2012 OpenBSD
diff --git a/regress/mdoc/Bd/break.out_lint b/regress/mdoc/Bd/break.out_lint
new file mode 100644
index 00000000..aede3c30
--- /dev/null
+++ b/regress/mdoc/Bd/break.out_lint
@@ -0,0 +1 @@
+mandoc: break.in:12:2: WARNING: blocks badly nested: Bd breaks Bo
diff --git a/regress/mdoc/Bd/broken.in b/regress/mdoc/Bd/broken.in
new file mode 100644
index 00000000..b7271a67
--- /dev/null
+++ b/regress/mdoc/Bd/broken.in
@@ -0,0 +1,14 @@
+.Dd November 10, 2012
+.Dt BD-BROKEN 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bd-broken
+.Nd display broken by another block
+.Sh DESCRIPTION
+before both
+.Bo before display
+.Bd -ragged -offset indent
+inside both
+.Bc
+after bracket
+.Ed
diff --git a/regress/mdoc/Bd/broken.out_ascii b/regress/mdoc/Bd/broken.out_ascii
new file mode 100644
index 00000000..5b24c21b
--- /dev/null
+++ b/regress/mdoc/Bd/broken.out_ascii
@@ -0,0 +1,11 @@
+BD-BROKEN(1) General Commands Manual BD-BROKEN(1)
+
+NNAAMMEE
+ BBdd--bbrrookkeenn - display broken by another block
+
+DDEESSCCRRIIPPTTIIOONN
+ before both [before display
+
+ inside both] after bracket
+
+OpenBSD November 10, 2012 OpenBSD
diff --git a/regress/mdoc/Bd/broken.out_lint b/regress/mdoc/Bd/broken.out_lint
new file mode 100644
index 00000000..44688afa
--- /dev/null
+++ b/regress/mdoc/Bd/broken.out_lint
@@ -0,0 +1 @@
+mandoc: broken.in:12:2: WARNING: blocks badly nested: Bo breaks Bd
diff --git a/regress/mdoc/Bd/centered.in b/regress/mdoc/Bd/centered.in
new file mode 100644
index 00000000..d989ddb8
--- /dev/null
+++ b/regress/mdoc/Bd/centered.in
@@ -0,0 +1,15 @@
+.Dd July 28, 2014
+.Dt BD-CENTERED 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bd-centered
+.Nd centered display blocks
+.Sh DESCRIPTION
+preceding text
+.br
+.Bd -centered -offset indent
+first line of the block
+.br
+second line
+.Ed
+following text
diff --git a/regress/mdoc/Bd/centered.out_ascii b/regress/mdoc/Bd/centered.out_ascii
new file mode 100644
index 00000000..1f0bb194
--- /dev/null
+++ b/regress/mdoc/Bd/centered.out_ascii
@@ -0,0 +1,13 @@
+BD-CENTERED(1) General Commands Manual BD-CENTERED(1)
+
+NNAAMMEE
+ BBdd--cceenntteerreedd - centered display blocks
+
+DDEESSCCRRIIPPTTIIOONN
+ preceding text
+
+ first line of the block
+ second line
+ following text
+
+OpenBSD July 28, 2014 OpenBSD
diff --git a/regress/mdoc/Bd/empty.in b/regress/mdoc/Bd/empty.in
new file mode 100644
index 00000000..56506e69
--- /dev/null
+++ b/regress/mdoc/Bd/empty.in
@@ -0,0 +1,20 @@
+.Dd January 2, 2010
+.Dt BD-EMPTY 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bd-empty
+.Nd empty displays
+.Sh DESCRIPTION
+An empty filled display:
+.Bd -filled
+.Ed
+An empty literal display:
+.Bd -literal
+.Ed
+An empty ragged display:
+.Bd -ragged
+.Ed
+An empty unfilled display:
+.Bd -unfilled
+.Ed
+end of test document
diff --git a/regress/mdoc/Bd/empty.out_ascii b/regress/mdoc/Bd/empty.out_ascii
new file mode 100644
index 00000000..fefe8351
--- /dev/null
+++ b/regress/mdoc/Bd/empty.out_ascii
@@ -0,0 +1,17 @@
+BD-EMPTY(1) General Commands Manual BD-EMPTY(1)
+
+NNAAMMEE
+ BBdd--eemmppttyy - empty displays
+
+DDEESSCCRRIIPPTTIIOONN
+ An empty filled display:
+
+ An empty literal display:
+
+ An empty ragged display:
+
+ An empty unfilled display:
+
+ end of test document
+
+OpenBSD January 2, 2010 OpenBSD
diff --git a/regress/mdoc/Bd/nested.in b/regress/mdoc/Bd/nested.in
new file mode 100644
index 00000000..a5455a61
--- /dev/null
+++ b/regress/mdoc/Bd/nested.in
@@ -0,0 +1,42 @@
+.Dd November 18, 2012
+.Dt BD-NESTED 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bd-nested
+.Nd nested displays and lists
+.Sh DESCRIPTION
+regular
+text
+.Bd -ragged -offset indent
+outer
+text (default indent)
+.Bd -ragged -offset indent
+inner
+text (default indent)
+.Ed
+outer
+text
+.Ed
+regular
+text
+.Bd -ragged -offset 4n
+outer text (4n)
+.Bd -ragged -offset 2n
+inner text (2n)
+.Ed
+outer text
+.Bl -tag -width 6n
+.It tag
+text
+.El
+outer text
+.Ed
+regular text
+.Bl -tag -width 6n
+.It tag
+outer text
+.Bd -ragged -offset 2n
+inner text (2n)
+.Ed
+outer text
+.El
diff --git a/regress/mdoc/Bd/nested.out_ascii b/regress/mdoc/Bd/nested.out_ascii
new file mode 100644
index 00000000..439611d8
--- /dev/null
+++ b/regress/mdoc/Bd/nested.out_ascii
@@ -0,0 +1,29 @@
+BD-NESTED(1) General Commands Manual BD-NESTED(1)
+
+NNAAMMEE
+ BBdd--nneesstteedd - nested displays and lists
+
+DDEESSCCRRIIPPTTIIOONN
+ regular text
+
+ outer text (default indent)
+
+ inner text (default indent)
+ outer text
+ regular text
+
+ outer text (4n)
+
+ inner text (2n)
+ outer text
+
+ tag text
+ outer text
+ regular text
+
+ tag outer text
+
+ inner text (2n)
+ outer text
+
+OpenBSD November 18, 2012 OpenBSD
diff --git a/regress/mdoc/Bd/nested.out_lint b/regress/mdoc/Bd/nested.out_lint
new file mode 100644
index 00000000..5476f7d7
--- /dev/null
+++ b/regress/mdoc/Bd/nested.out_lint
@@ -0,0 +1,2 @@
+mandoc: nested.in:13:2: WARNING: nested displays are not portable: Bd in Bd
+mandoc: nested.in:24:2: WARNING: nested displays are not portable: Bd in Bd
diff --git a/regress/mdoc/Bd/offset-empty.in b/regress/mdoc/Bd/offset-empty.in
new file mode 100644
index 00000000..32f2a593
--- /dev/null
+++ b/regress/mdoc/Bd/offset-empty.in
@@ -0,0 +1,31 @@
+.Dd November 20, 2014
+.Dt BD-OFFSET-EMPTY 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bd-offset-empty
+.Nd no argument specified to Bd offset
+.Sh DESCRIPTION
+.Bd -literal -offset
+Bd literal offset empty
+.Ed
+.Bd -literal -offset left
+Bd literal offset left
+.Ed
+.Bd -literal -offset indent
+Bd literal offset indent
+.Ed
+.Bd -literal -offset indent-two
+Bd literal offset indent-two
+.Ed
+.Bd -literal -offset 4n
+Bd literal offset 4n
+.Ed
+.Bd -literal -offset mystring
+Bd literal offset mystring
+.Ed
+.Bd -literal -offset Ds
+Bd literal offset Ds
+.Ed
+.Bd -literal -offset 78n
+Bd literal offset 78n
+.Ed
diff --git a/regress/mdoc/Bd/offset-empty.out_ascii b/regress/mdoc/Bd/offset-empty.out_ascii
new file mode 100644
index 00000000..e4e2659c
--- /dev/null
+++ b/regress/mdoc/Bd/offset-empty.out_ascii
@@ -0,0 +1,23 @@
+BD-OFFSET-EMPTY(1) General Commands Manual BD-OFFSET-EMPTY(1)
+
+NNAAMMEE
+ BBdd--ooffffsseett--eemmppttyy - no argument specified to Bd offset
+
+DDEESSCCRRIIPPTTIIOONN
+ Bd literal offset empty
+
+ Bd literal offset left
+
+ Bd literal offset indent
+
+ Bd literal offset indent-two
+
+ Bd literal offset 4n
+
+ Bd literal offset mystring
+
+ Bd literal offset Ds
+
+ Bd literal offset 78n
+
+OpenBSD November 20, 2014 OpenBSD
diff --git a/regress/mdoc/Bd/offset-neg.in b/regress/mdoc/Bd/offset-neg.in
new file mode 100644
index 00000000..30f0fe73
--- /dev/null
+++ b/regress/mdoc/Bd/offset-neg.in
@@ -0,0 +1,24 @@
+.Dd December 24, 2014
+.Dt BD-INDENT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bd-indent
+.Nd indenting display blocks
+.Sh DESCRIPTION
+regular text
+.Bd -ragged -offset 8n
+outer display
+.Bd -ragged -offset -5n
+inner display
+.Ed
+outer display
+.Ed
+regular text
+.Bd -ragged -offset -3n
+outer display
+.Bd -ragged -offset 8n
+inner display
+.Ed
+outer display
+.Ed
+regular text
diff --git a/regress/mdoc/Bd/offset-neg.out_ascii b/regress/mdoc/Bd/offset-neg.out_ascii
new file mode 100644
index 00000000..0ecf61cf
--- /dev/null
+++ b/regress/mdoc/Bd/offset-neg.out_ascii
@@ -0,0 +1,21 @@
+BD-INDENT(1) General Commands Manual BD-INDENT(1)
+
+NNAAMMEE
+ BBdd--iinnddeenntt - indenting display blocks
+
+DDEESSCCRRIIPPTTIIOONN
+ regular text
+
+ outer display
+
+ inner display
+ outer display
+ regular text
+
+ outer display
+
+ inner display
+ outer display
+ regular text
+
+OpenBSD December 24, 2014 OpenBSD
diff --git a/regress/mdoc/Bd/spacing.in b/regress/mdoc/Bd/spacing.in
new file mode 100644
index 00000000..95d89935
--- /dev/null
+++ b/regress/mdoc/Bd/spacing.in
@@ -0,0 +1,16 @@
+.Dd July 6, 2012
+.Dt BD-SPACING 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bd-spacing
+.Nd vertical spacing around display blocks
+.Sh DESCRIPTION
+preceding text
+.Bd -ragged -offset indent
+display block
+.Ed
+text between displays
+.Bd -ragged -offset indent -compact
+compact display block
+.Ed
+following text
diff --git a/regress/mdoc/Bd/spacing.out_ascii b/regress/mdoc/Bd/spacing.out_ascii
new file mode 100644
index 00000000..de8bee5c
--- /dev/null
+++ b/regress/mdoc/Bd/spacing.out_ascii
@@ -0,0 +1,14 @@
+BD-SPACING(1) General Commands Manual BD-SPACING(1)
+
+NNAAMMEE
+ BBdd--ssppaacciinngg - vertical spacing around display blocks
+
+DDEESSCCRRIIPPTTIIOONN
+ preceding text
+
+ display block
+ text between displays
+ compact display block
+ following text
+
+OpenBSD July 6, 2012 OpenBSD
diff --git a/regress/mdoc/Bd/unclosed.in b/regress/mdoc/Bd/unclosed.in
new file mode 100644
index 00000000..17c2c51d
--- /dev/null
+++ b/regress/mdoc/Bd/unclosed.in
@@ -0,0 +1,10 @@
+.Dd July 7, 2014
+.Dt BD-UNCLOSED 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bd-unclosed
+.Nd display still open at the end of the file
+.Sh DESCRIPTION
+before display
+.Bd -ragged -offset indent
+inside display
diff --git a/regress/mdoc/Bd/unclosed.out_ascii b/regress/mdoc/Bd/unclosed.out_ascii
new file mode 100644
index 00000000..edea5b09
--- /dev/null
+++ b/regress/mdoc/Bd/unclosed.out_ascii
@@ -0,0 +1,11 @@
+BD-UNCLOSED(1) General Commands Manual BD-UNCLOSED(1)
+
+NNAAMMEE
+ BBdd--uunncclloosseedd - display still open at the end of the file
+
+DDEESSCCRRIIPPTTIIOONN
+ before display
+
+ inside display
+
+OpenBSD July 7, 2014 OpenBSD
diff --git a/regress/mdoc/Bd/unclosed.out_lint b/regress/mdoc/Bd/unclosed.out_lint
new file mode 100644
index 00000000..8741513e
--- /dev/null
+++ b/regress/mdoc/Bd/unclosed.out_lint
@@ -0,0 +1 @@
+mandoc: unclosed.in:9:2: ERROR: appending missing end of block: Bd
diff --git a/regress/mdoc/Bf/Makefile b/regress/mdoc/Bf/Makefile
new file mode 100644
index 00000000..799c8af9
--- /dev/null
+++ b/regress/mdoc/Bf/Makefile
@@ -0,0 +1,16 @@
+# $OpenBSD: Makefile,v 1.4 2014/07/04 16:11:42 schwarze Exp $
+
+REGRESS_TARGETS = nest multiargs badargs break broken
+LINT_TARGETS = multiargs badargs break broken
+
+# groff-1.22.2 defects:
+# - If the first argument to .Bf is a bad one,
+# no block is opened at all and the .Ef causes another error.
+# - If a font block breaks another block,
+# fonts get mixed up when the other block finally ends.
+
+SKIP_GROFF = badargs break
+
+SKIP_TMAN = break broken
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Bf/badargs.in b/regress/mdoc/Bf/badargs.in
new file mode 100644
index 00000000..7752ae75
--- /dev/null
+++ b/regress/mdoc/Bf/badargs.in
@@ -0,0 +1,20 @@
+.Dd July 4, 2014
+.Dt BF-BADARGS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bf-badargs
+.Nd font blocks with bad arguments
+.Sh DESCRIPTION
+normal text
+.Bf -emphasis
+emphasis
+.Bf
+no argument
+.Ef
+back to emphasis
+.Bf badarg
+bad argument
+.Ef tail argument
+back to emphasis
+.Ef
+back to normal
diff --git a/regress/mdoc/Bf/badargs.out_ascii b/regress/mdoc/Bf/badargs.out_ascii
new file mode 100644
index 00000000..8d26ac4b
--- /dev/null
+++ b/regress/mdoc/Bf/badargs.out_ascii
@@ -0,0 +1,10 @@
+BF-BADARGS(1) General Commands Manual BF-BADARGS(1)
+
+NNAAMMEE
+ BBff--bbaaddaarrggss - font blocks with bad arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text _e_m_p_h_a_s_i_s no argument _b_a_c_k _t_o _e_m_p_h_a_s_i_s bad argument _b_a_c_k _t_o
+ _e_m_p_h_a_s_i_s back to normal
+
+OpenBSD July 4, 2014 OpenBSD
diff --git a/regress/mdoc/Bf/badargs.out_lint b/regress/mdoc/Bf/badargs.out_lint
new file mode 100644
index 00000000..cdca9c02
--- /dev/null
+++ b/regress/mdoc/Bf/badargs.out_lint
@@ -0,0 +1,3 @@
+mandoc: badargs.in:17:2: ERROR: skipping all arguments: Ef tail argument
+mandoc: badargs.in:11:2: WARNING: missing font type, using \fR: Bf
+mandoc: badargs.in:15:5: WARNING: unknown font type, using \fR: Bf badarg
diff --git a/regress/mdoc/Bf/break.in b/regress/mdoc/Bf/break.in
new file mode 100644
index 00000000..5a905655
--- /dev/null
+++ b/regress/mdoc/Bf/break.in
@@ -0,0 +1,16 @@
+.Dd November 10, 2012
+.Dt BF-BREAK 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bf-break
+.Nd font block breaking another block
+.Sh DESCRIPTION
+before both
+.Bf Em
+before bracket
+.Bo
+inside both
+.Ef
+after font block
+.Bc
+after both
diff --git a/regress/mdoc/Bf/break.out_ascii b/regress/mdoc/Bf/break.out_ascii
new file mode 100644
index 00000000..6fcd71cf
--- /dev/null
+++ b/regress/mdoc/Bf/break.out_ascii
@@ -0,0 +1,9 @@
+BF-BREAK(1) General Commands Manual BF-BREAK(1)
+
+NNAAMMEE
+ BBff--bbrreeaakk - font block breaking another block
+
+DDEESSCCRRIIPPTTIIOONN
+ before both _b_e_f_o_r_e _b_r_a_c_k_e_t _[_i_n_s_i_d_e _b_o_t_h after font block] after both
+
+OpenBSD November 10, 2012 OpenBSD
diff --git a/regress/mdoc/Bf/break.out_lint b/regress/mdoc/Bf/break.out_lint
new file mode 100644
index 00000000..b704d12c
--- /dev/null
+++ b/regress/mdoc/Bf/break.out_lint
@@ -0,0 +1 @@
+mandoc: break.in:13:2: WARNING: blocks badly nested: Bf breaks Bo
diff --git a/regress/mdoc/Bf/broken.in b/regress/mdoc/Bf/broken.in
new file mode 100644
index 00000000..228e4c5f
--- /dev/null
+++ b/regress/mdoc/Bf/broken.in
@@ -0,0 +1,15 @@
+.Dd November 10, 2012
+.Dt BF-BROKEN 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bf-broken
+.Nd font block broken by another block
+.Sh DESCRIPTION
+before both
+.Bo before font block
+.Bf Em
+inside both
+.Bc
+after bracket
+.Ef
+after both
diff --git a/regress/mdoc/Bf/broken.out_ascii b/regress/mdoc/Bf/broken.out_ascii
new file mode 100644
index 00000000..0320ca95
--- /dev/null
+++ b/regress/mdoc/Bf/broken.out_ascii
@@ -0,0 +1,9 @@
+BF-BROKEN(1) General Commands Manual BF-BROKEN(1)
+
+NNAAMMEE
+ BBff--bbrrookkeenn - font block broken by another block
+
+DDEESSCCRRIIPPTTIIOONN
+ before both [before font block _i_n_s_i_d_e _b_o_t_h] after bracket after both
+
+OpenBSD November 10, 2012 OpenBSD
diff --git a/regress/mdoc/Bf/broken.out_lint b/regress/mdoc/Bf/broken.out_lint
new file mode 100644
index 00000000..e4f53d53
--- /dev/null
+++ b/regress/mdoc/Bf/broken.out_lint
@@ -0,0 +1 @@
+mandoc: broken.in:12:2: WARNING: blocks badly nested: Bo breaks Bf
diff --git a/regress/mdoc/Bf/multiargs.in b/regress/mdoc/Bf/multiargs.in
new file mode 100644
index 00000000..31837ec5
--- /dev/null
+++ b/regress/mdoc/Bf/multiargs.in
@@ -0,0 +1,32 @@
+.Dd July 4, 2014
+.Dt BF-MULTIARGS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bf-multiargs
+.Nd font blocks with multiple arguments
+.Sh DESCRIPTION
+normal text
+.Bf -symbolic -emphasis
+symbolic emphasis
+.Ef
+back to normal
+.Bf -symbolic Em
+symbolic Em
+.Ef
+back to normal
+.Bf -symbolic badarg
+symbolic badarg
+.Ef
+back to normal
+.Bf Sy -emphasis
+Sy -emphasis
+.Ef
+back to normal
+.Bf Sy Em
+Sy Em
+.Ef
+back to normal
+.Bf Sy badarg
+Sy Em
+.Ef
+back to normal
diff --git a/regress/mdoc/Bf/multiargs.out_ascii b/regress/mdoc/Bf/multiargs.out_ascii
new file mode 100644
index 00000000..52b89778
--- /dev/null
+++ b/regress/mdoc/Bf/multiargs.out_ascii
@@ -0,0 +1,11 @@
+BF-MULTIARGS(1) General Commands Manual BF-MULTIARGS(1)
+
+NNAAMMEE
+ BBff--mmuullttiiaarrggss - font blocks with multiple arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text ssyymmbboolliicc eemmpphhaassiiss back to normal ssyymmbboolliicc EEmm back to normal
+ ssyymmbboolliicc bbaaddaarrgg back to normal SSyy --eemmpphhaassiiss back to normal SSyy EEmm back to
+ normal SSyy EEmm back to normal
+
+OpenBSD July 4, 2014 OpenBSD
diff --git a/regress/mdoc/Bf/multiargs.out_lint b/regress/mdoc/Bf/multiargs.out_lint
new file mode 100644
index 00000000..031b1e01
--- /dev/null
+++ b/regress/mdoc/Bf/multiargs.out_lint
@@ -0,0 +1,5 @@
+mandoc: multiargs.in:13:15: ERROR: skipping excess arguments: Bf ... Em
+mandoc: multiargs.in:17:15: ERROR: skipping excess arguments: Bf ... badarg
+mandoc: multiargs.in:21:8: ERROR: skipping excess arguments: Bf ... -emphasis
+mandoc: multiargs.in:25:8: ERROR: skipping excess arguments: Bf ... Em
+mandoc: multiargs.in:29:8: ERROR: skipping excess arguments: Bf ... badarg
diff --git a/regress/mdoc/Bf/nest.in b/regress/mdoc/Bf/nest.in
new file mode 100644
index 00000000..90de861a
--- /dev/null
+++ b/regress/mdoc/Bf/nest.in
@@ -0,0 +1,33 @@
+.Dd July 9, 2012
+.Dt BF-NEST 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bf-nest
+.Nd nesting font blocks
+.Sh DESCRIPTION
+normal text
+.Bf -emphasis
+emphasis
+.Bf -literal
+literal
+.Bf -symbolic
+symbolic
+.Bf Em
+Em
+.Bf Li
+Li
+.Bf Sy
+Sy
+.Em in-line \&Em \\fRroman\\fP again \&Em
+.Ef
+back to Li
+.Ef
+back to Em
+.Ef
+back to symbolic
+.Ef
+back to literal
+.Ef
+back to emphasis
+.Ef
+back to normal
diff --git a/regress/mdoc/Bf/nest.out_ascii b/regress/mdoc/Bf/nest.out_ascii
new file mode 100644
index 00000000..117a358d
--- /dev/null
+++ b/regress/mdoc/Bf/nest.out_ascii
@@ -0,0 +1,11 @@
+BF-NEST(1) General Commands Manual BF-NEST(1)
+
+NNAAMMEE
+ BBff--nneesstt - nesting font blocks
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text _e_m_p_h_a_s_i_s literal ssyymmbboolliicc _E_m Li SSyy _i_n_-_l_i_n_e _E_m roman _a_g_a_i_n _E_m
+ back to Li _b_a_c_k _t_o _E_m bbaacckk ttoo ssyymmbboolliicc back to literal _b_a_c_k _t_o _e_m_p_h_a_s_i_s
+ back to normal
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Bk/Makefile b/regress/mdoc/Bk/Makefile
new file mode 100644
index 00000000..cc3f2a7f
--- /dev/null
+++ b/regress/mdoc/Bk/Makefile
@@ -0,0 +1,8 @@
+# $OpenBSD: Makefile,v 1.7 2015/02/07 16:39:44 schwarze Exp $
+
+REGRESS_TARGETS = badarg break broken inputlines lines synopsis
+LINT_TARGETS = badarg broken
+
+SKIP_TMAN ?= badarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Bk/badarg.in b/regress/mdoc/Bk/badarg.in
new file mode 100644
index 00000000..c3338e70
--- /dev/null
+++ b/regress/mdoc/Bk/badarg.in
@@ -0,0 +1,56 @@
+.Dd June 30, 2010
+.Dt BK-BADARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bk-badarg
+.Nd bad arguments after Bk
+.Sh SYNOPSIS
+.Nm
+.Ar x x x x x x x x
+.Ar x x x x x x x x
+.Ar x x x x x x x x
+.Ar x x x x x x
+.Bk -badarg
+.Op o Ar a
+.Ek
+.Pp
+.Nm
+.Ar x x x x x x x x
+.Ar x x x x x x x x
+.Ar x x x x x x x x
+.Ar x x x x x x
+.Bk -lines
+.Op o Ar a
+.Ek tail argument
+.Pp
+.Nm
+.Ar x x x x x x x x
+.Ar x x x x x x x x
+.Ar x x x x x x x x
+.Ar x x x x x x
+.Bk -line
+.Op o Ar a
+.Ek
+.Pp
+.Nm
+.Ar x x x x x x x x
+.Ar x x x x x x x x
+.Ar x x x x x x x x
+.Ar x x x x x x
+.Bk
+.Op o Ar a
+.Ek
+.Pp
+.Nm
+.Ar x x x x x x x x
+.Ar x x x x x x x x
+.Ar x x x x x x x x
+.Ar x x x x x x
+.Bk -words -murks bogus
+.Op o Ar a
+.Ek
+.Sh DESCRIPTION
+Here is an empty keep:
+.Bk -words
+.Ek
+End of test document.
diff --git a/regress/mdoc/Bk/badarg.out_ascii b/regress/mdoc/Bk/badarg.out_ascii
new file mode 100644
index 00000000..9303d3f0
--- /dev/null
+++ b/regress/mdoc/Bk/badarg.out_ascii
@@ -0,0 +1,25 @@
+BK-BADARG(1) General Commands Manual BK-BADARG(1)
+
+NNAAMMEE
+ BBkk--bbaaddaarrgg - bad arguments after Bk
+
+SSYYNNOOPPSSIISS
+ BBkk--bbaaddaarrgg _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x
+ [o _a]
+
+ BBkk--bbaaddaarrgg _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x
+ [o _a]
+
+ BBkk--bbaaddaarrgg _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x
+ [o _a]
+
+ BBkk--bbaaddaarrgg _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x
+ [o _a]
+
+ BBkk--bbaaddaarrgg _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x
+ [o _a]
+
+DDEESSCCRRIIPPTTIIOONN
+ Here is an empty keep: End of test document.
+
+OpenBSD June 30, 2010 OpenBSD
diff --git a/regress/mdoc/Bk/badarg.out_lint b/regress/mdoc/Bk/badarg.out_lint
new file mode 100644
index 00000000..16918ae5
--- /dev/null
+++ b/regress/mdoc/Bk/badarg.out_lint
@@ -0,0 +1,6 @@
+mandoc: badarg.in:13:5: ERROR: skipping excess arguments: Bk ... -badarg
+mandoc: badarg.in:22:5: ERROR: skipping excess arguments: Bk ... -lines
+mandoc: badarg.in:24:2: ERROR: skipping all arguments: Ek tail argument
+mandoc: badarg.in:31:5: ERROR: skipping excess arguments: Bk ... -line
+mandoc: badarg.in:49:12: ERROR: skipping excess arguments: Bk ... -murks
+mandoc: badarg.in:54:2: WARNING: empty block: Bk
diff --git a/regress/mdoc/Bk/break.in b/regress/mdoc/Bk/break.in
new file mode 100644
index 00000000..e7124b55
--- /dev/null
+++ b/regress/mdoc/Bk/break.in
@@ -0,0 +1,53 @@
+.Dd $Mdocdate$
+.Dt BK-BREAK 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bk-break
+.Nd handling of word keeps
+.Sh DESCRIPTION
+Even though it is called a word keep,
+.Bk -words
+it will not keep words together in free-form text.
+.Ek
+However, even the noop macro
+.Bk -words
+.No is sufficient to let the keep take effect .
+.Ek
+Even text generated in pre-handlers must be kept together with
+the text following it:
+.Bk -words
+.Xr one 1 No and Xr two 2
+.Ek
+should be on the same line.
+.Pp
+Including the whole output line into the keep is not required,
+including just the macros to be kept together is sufficient:
+.Pp
+.Nm
+.Ar x x x x x x x x
+.Ar x x x x x x x x
+.Ar x x x x x x x x
+.Ar x x x x x x
+.Bk -words
+.Op o Ar a
+.Ek
+.Pp
+.Bk -words
+.Nm
+.Ar x x x x x x x x
+.Ar x x x x x x x x
+.Ar x x x x x x x x
+.Ar x x x x x x
+.Op o Ar a
+.Ek
+.Pp
+Even text printed without spacing must be kept together
+with the text following it:
+.Pp
+.Bk -words
+.Fn xxxxxxxxxxxxxxxxxxxx "xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx" xxxxxxxxxxxxxxxxxxxx
+.Pp
+.Fo xxxxxxxxxxxxxxxxxxxx
+.Fa "xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx" xxxxxxxxxxxxxxxxxxxx
+.Fc
+.Ek
diff --git a/regress/mdoc/Bk/break.out_ascii b/regress/mdoc/Bk/break.out_ascii
new file mode 100644
index 00000000..d39d64dc
--- /dev/null
+++ b/regress/mdoc/Bk/break.out_ascii
@@ -0,0 +1,30 @@
+BK-BREAK(1) General Commands Manual BK-BREAK(1)
+
+NNAAMMEE
+ BBkk--bbrreeaakk - handling of word keeps
+
+DDEESSCCRRIIPPTTIIOONN
+ Even though it is called a word keep, it will not keep words together in
+ free-form text. However, even the noop macro
+ is sufficient to let the keep take effect. Even text generated in pre-
+ handlers must be kept together with the text following it:
+ one(1) and two(2) should be on the same line.
+
+ Including the whole output line into the keep is not required, including
+ just the macros to be kept together is sufficient:
+
+ BBkk--bbrreeaakk _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x
+ [o _a]
+
+ BBkk--bbrreeaakk _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x
+ [o _a]
+
+ Even text printed without spacing must be kept together with the text
+ following it:
+
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x
+ _x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x, _x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x)
+
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x _x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x, _x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x)
+
+OpenBSD December 25, 2013 OpenBSD
diff --git a/regress/mdoc/Bk/broken.in b/regress/mdoc/Bk/broken.in
new file mode 100644
index 00000000..baa2651a
--- /dev/null
+++ b/regress/mdoc/Bk/broken.in
@@ -0,0 +1,11 @@
+.Dd February 7, 2015
+.Dt BK-BROKEN 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bk-broken
+.Nd word keep broken by another block
+.Sh DESCRIPTION
+before keep
+.Bk -words
+.Sh CAVEATS
+next section
diff --git a/regress/mdoc/Bk/broken.out_ascii b/regress/mdoc/Bk/broken.out_ascii
new file mode 100644
index 00000000..4b7eea7a
--- /dev/null
+++ b/regress/mdoc/Bk/broken.out_ascii
@@ -0,0 +1,12 @@
+BK-BROKEN(1) General Commands Manual BK-BROKEN(1)
+
+NNAAMMEE
+ BBkk--bbrrookkeenn - word keep broken by another block
+
+DDEESSCCRRIIPPTTIIOONN
+ before keep
+
+CCAAVVEEAATTSS
+ next section
+
+OpenBSD February 7, 2015 OpenBSD
diff --git a/regress/mdoc/Bk/broken.out_lint b/regress/mdoc/Bk/broken.out_lint
new file mode 100644
index 00000000..a6596506
--- /dev/null
+++ b/regress/mdoc/Bk/broken.out_lint
@@ -0,0 +1,2 @@
+mandoc: broken.in:10:2: ERROR: inserting missing end of block: Sh breaks Bk
+mandoc: broken.in:9:2: WARNING: empty block: Bk
diff --git a/regress/mdoc/Bk/inputlines.in b/regress/mdoc/Bk/inputlines.in
new file mode 100644
index 00000000..50db65fb
--- /dev/null
+++ b/regress/mdoc/Bk/inputlines.in
@@ -0,0 +1,73 @@
+.Dd December 24, 2010
+.Dt BK-INPUTLINES 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bk-inputlines
+.Nd effect of input lines breaks on word keeps
+.Sh SYNOPSIS
+.Nm
+.Ar x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.Bk -words
+.Oo Oo No a Oc Oo No b Oc Oc Pq one line
+.Ek
+.Pp
+.Nm
+.Ar x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.Bk -words
+.Oo
+.Oo No a Oc Oo No b Oc Oc Pq "break after first Oo"
+.Ek
+.Pp
+.Nm
+.Ar x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.Bk -words
+.Oo Oo
+.No a Oc Oo b Oc Oc Pq "break after second Oo"
+.Ek
+.Pp
+.Nm
+.Ar x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.Bk -words
+.Oo Oo No a
+.Oc Oo No b Oc Oc Pq "break before first Oc"
+.Ek
+.Pp
+.Nm
+.Ar x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.Bk -words
+.Oo Oo No a Oc
+.Oo No b Oc Oc Pq "break after first Oc"
+.Ek
+.Pp
+.Nm
+.Ar x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.Bk -words
+.Oo Oo No a Oc Oo
+.No b Oc Oc Pq "break after third Oo"
+.Ek
+.Pp
+.Nm
+.Ar x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.Bk -words
+.Oo a No b Oc
+.Ek
+.Pp
+.Nm
+.Ar x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.Bk -words
+.Oo a
+.No b Oc
+.Ek
+.Pp
+.Nm
+.Ar x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.Bk -words
+.Oo a Oc No b
+.Ek
+.Pp
+.Nm
+.Ar x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.Bk -words
+.Oo a Oc
+.No b
+.Ek
diff --git a/regress/mdoc/Bk/inputlines.out_ascii b/regress/mdoc/Bk/inputlines.out_ascii
new file mode 100644
index 00000000..448872f6
--- /dev/null
+++ b/regress/mdoc/Bk/inputlines.out_ascii
@@ -0,0 +1,37 @@
+BK-INPUTLINES(1) General Commands Manual BK-INPUTLINES(1)
+
+NNAAMMEE
+ BBkk--iinnppuuttlliinneess - effect of input lines breaks on word keeps
+
+SSYYNNOOPPSSIISS
+ BBkk--iinnppuuttlliinneess _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x
+ [[a] [b]] (one line)
+
+ BBkk--iinnppuuttlliinneess _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x
+ [[a] [b]] (break after first Oo)
+
+ BBkk--iinnppuuttlliinneess _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x
+ [[a] [b]] (break after second Oo)
+
+ BBkk--iinnppuuttlliinneess _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x
+ [[a] [b]] (break before first Oc)
+
+ BBkk--iinnppuuttlliinneess _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x [[a]
+ [b]] (break after first Oc)
+
+ BBkk--iinnppuuttlliinneess _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x
+ [[a] [b]] (break after third Oo)
+
+ BBkk--iinnppuuttlliinneess _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x
+ [a b]
+
+ BBkk--iinnppuuttlliinneess _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x [a
+ b]
+
+ BBkk--iinnppuuttlliinneess _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x
+ [a] b
+
+ BBkk--iinnppuuttlliinneess _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x _x [a]
+ b
+
+OpenBSD December 24, 2010 OpenBSD
diff --git a/regress/mdoc/Bk/lines.in b/regress/mdoc/Bk/lines.in
new file mode 100644
index 00000000..4533242c
--- /dev/null
+++ b/regress/mdoc/Bk/lines.in
@@ -0,0 +1,88 @@
+.Dd April 12, 2010
+.Dt BK-LINES 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bk-lines
+.Nd handling of line keeps
+.Sh DESCRIPTION
+.Bd -literal
+1
+2
+3
+4
+5
+6
+7
+8
+9
+11
+12
+13
+14
+15
+16
+17
+18
+19
+21
+22
+23
+24
+25
+26
+27
+28
+29
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+.Ed
+.Ss with keep
+.Bk -lines
+.Bd -literal
+1
+2
+3
+4
+5
+6
+7
+8
+9
+11
+12
+13
+14
+15
+16
+17
+18
+19
+21
+22
+23
+24
+25
+26
+27
+28
+29
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+.Ed
+.Ek
diff --git a/regress/mdoc/Bk/lines.out_ascii b/regress/mdoc/Bk/lines.out_ascii
new file mode 100644
index 00000000..544804e4
--- /dev/null
+++ b/regress/mdoc/Bk/lines.out_ascii
@@ -0,0 +1,84 @@
+BK-LINES(1) General Commands Manual BK-LINES(1)
+
+NNAAMMEE
+ BBkk--lliinneess - handling of line keeps
+
+DDEESSCCRRIIPPTTIIOONN
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+
+ wwiitthh kkeeeepp
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+
+OpenBSD April 12, 2010 OpenBSD
diff --git a/regress/mdoc/Bk/synopsis.in b/regress/mdoc/Bk/synopsis.in
new file mode 100644
index 00000000..077e49cf
--- /dev/null
+++ b/regress/mdoc/Bk/synopsis.in
@@ -0,0 +1,32 @@
+.Dd $Mdocdate$
+.Dt BK-SYNOPSIS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bk-synopsis
+.Nd automatic keeps in the synopsis
+.Sh SYNOPSIS
+In the synopsis, almost all macros do not show
+.No the word keep effect they would get in a \&Bk block.
+.Pp
+.Fn xxxxxxxxxxxxxxxxxxxx "xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx" xxxxxxxxxxxxxxxxxxxx
+.Fo xxxxxxxxxxxxxxxxxxxx
+.Fa "xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx" xxxxxxxxxxxxxxxxxxxx
+.Fc
+.Pp
+Only \&Nm, used as a block macro, does:
+.Pp
+.Nm ksh
+.Op Fl +abCefhiklmnpruvXx
+.Op Fl +o Ar option
+.Op Fl c Ar string \*(Ba Fl s \*(Ba Ar file Op Ar argument ...
+.Bk -words
+.Ek
+.Nm ksh
+.Op Fl +abCefhiklmnpruvXx
+.Op Fl +o Ar option
+.Op Fl c Ar string \*(Ba Fl s \*(Ba Ar file Op Ar argument ...
+.Sh DESCRIPTION
+.Nm ksh
+.Op Fl +abCefhiklmnpruvXx
+.Op Fl +o Ar option
+.Op Fl c Ar string \*(Ba Fl s \*(Ba Ar file Op Ar argument ...
diff --git a/regress/mdoc/Bk/synopsis.out_ascii b/regress/mdoc/Bk/synopsis.out_ascii
new file mode 100644
index 00000000..5ace7489
--- /dev/null
+++ b/regress/mdoc/Bk/synopsis.out_ascii
@@ -0,0 +1,27 @@
+BK-SYNOPSIS(1) General Commands Manual BK-SYNOPSIS(1)
+
+NNAAMMEE
+ BBkk--ssyynnooppssiiss - automatic keeps in the synopsis
+
+SSYYNNOOPPSSIISS
+ In the synopsis, almost all macros do not show the word keep effect they
+ would get in a Bk block.
+
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x _x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x,
+ _x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x);
+
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x _x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x,
+ _x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x);
+
+ Only Nm, used as a block macro, does:
+
+ kksshh [--++aabbCCeeffhhiikkllmmnnpprruuvvXXxx] [--++oo _o_p_t_i_o_n]
+ [--cc _s_t_r_i_n_g | --ss | _f_i_l_e [_a_r_g_u_m_e_n_t _._._.]]
+ kksshh [--++aabbCCeeffhhiikkllmmnnpprruuvvXXxx] [--++oo _o_p_t_i_o_n]
+ [--cc _s_t_r_i_n_g | --ss | _f_i_l_e [_a_r_g_u_m_e_n_t _._._.]]
+
+DDEESSCCRRIIPPTTIIOONN
+ kksshh [--++aabbCCeeffhhiikkllmmnnpprruuvvXXxx] [--++oo _o_p_t_i_o_n] [--cc _s_t_r_i_n_g | --ss | _f_i_l_e [_a_r_g_u_m_e_n_t
+ _._._.]]
+
+OpenBSD December 25, 2013 OpenBSD
diff --git a/regress/mdoc/Bl/Makefile b/regress/mdoc/Bl/Makefile
new file mode 100644
index 00000000..3d21a8be
--- /dev/null
+++ b/regress/mdoc/Bl/Makefile
@@ -0,0 +1,38 @@
+# $OpenBSD: Makefile,v 1.31 2016/10/17 19:00:16 schwarze Exp $
+
+REGRESS_TARGETS = item inset diag ohang bullet dash enum hang tag
+REGRESS_TARGETS += column colNoIt extend nested offset secstart
+
+REGRESS_TARGETS += notype multitype badargs
+REGRESS_TARGETS += empty noIt emptyhead emptytag emptyitem multitag
+REGRESS_TARGETS += bareIt bareTa unclosed break breakingIt broken
+
+UTF8_TARGETS = dash
+
+LINT_TARGETS = column notype badargs tag
+LINT_TARGETS += empty noIt emptyhead emptytag emptyitem
+LINT_TARGETS += bareIt bareTa break breakingIt broken
+
+# groff-1.22.3 defects:
+# - lists with missing or late type ruin indentation
+# - empty lists ruin indentation and sometimes cause empty lines
+# - breaking lists continue indefinitely
+# - breaking items sometimes ruin indentation, sometimes abort processing
+# - breaking a list aborts processing
+# - empty -tag item heads lose the blank line and the indentation
+
+SKIP_GROFF ?= notype empty break breakingIt broken emptytag
+
+SKIP_TMAN ?= column colNoIt multitype multitag bareTa break broken
+
+# Fixing the indentation in long .IP and .TP tags in -man -Tascii
+# caused a minor regression in -Tman that is not trivial to fix,
+# so disable the related test for now.
+
+SKIP_TMAN += tag
+
+# Empty heads are still mishandled by -Tman.
+
+SKIP_TMAN += emptyhead emptytag
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Bl/badargs.in b/regress/mdoc/Bl/badargs.in
new file mode 100644
index 00000000..9c825b5e
--- /dev/null
+++ b/regress/mdoc/Bl/badargs.in
@@ -0,0 +1,78 @@
+.Dd February 4, 2015
+.Dt BL-BADARGS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-badargs
+.Nd list with bad arguments
+.Sh DESCRIPTION
+trailing -offset:
+.Bl -bullet -offset
+.It
+is ignored
+.El
+trailing -width:
+.Bl -bullet -width
+.It
+bullet
+.El
+.Bl -dash -width
+.It
+dash
+.El
+.\" XXX Doesn't work with -Tman yet.
+.\" .Bl -enum -width
+.\" .It
+.\" enum
+.\" .El
+.Bl -hyphen -width
+.It
+hyphen
+.El
+.Bl -hang -width
+.It hang
+item
+.El
+.Bl -tag -width
+.It tag
+Here we need a very long line.
+It must be sufficiently long such that it wraps the line.
+.El
+double type:
+.Bl -bullet -compact -enum
+.It
+bullet enum
+.El
+.Bl -enum -compact -bullet
+.It
+enum bullet
+.El
+unknown arguments:
+.Bl -bullet -bogus args
+.It
+bullet text
+.El
+.Bl -enum -bogus args
+.It
+enum text
+.El
+.Bl -inset -bogus args
+.It inset
+text
+.El
+.Bl -item -bogus args
+.It
+item text
+.El
+.Bl -ohang -bogus args
+.It ohang
+text
+.El
+.Bl -tag -width Ds -bogus args
+.It tag
+text
+.El
+double arguments:
+.Bl -tag -compact -offset 20n -width 20n -compact -offset 2n -width 6n
+.It last
+wins
+.El tail argument
diff --git a/regress/mdoc/Bl/badargs.out_ascii b/regress/mdoc/Bl/badargs.out_ascii
new file mode 100644
index 00000000..ad1707b1
--- /dev/null
+++ b/regress/mdoc/Bl/badargs.out_ascii
@@ -0,0 +1,43 @@
+BL-BADARGS(1) General Commands Manual BL-BADARGS(1)
+
+NNAAMMEE
+ BBll--bbaaddaarrggss - list with bad arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ trailing -offset:
+
+ ++oo is ignored
+ trailing -width:
+
+ ++oo bullet
+
+ -- dash
+
+ -- hyphen
+
+ hang item
+
+ tag
+ Here we need a very long line. It must be sufficiently long such that
+ it wraps the line.
+ double type:
+ ++oo bullet enum
+ 1. enum bullet
+ unknown arguments:
+
+ ++oo bullet text
+
+ 1. enum text
+
+ inset text
+
+ item text
+
+ ohang
+ text
+
+ tag text
+ double arguments:
+ last wins
+
+OpenBSD February 4, 2015 OpenBSD
diff --git a/regress/mdoc/Bl/badargs.out_lint b/regress/mdoc/Bl/badargs.out_lint
new file mode 100644
index 00000000..ac9ee13b
--- /dev/null
+++ b/regress/mdoc/Bl/badargs.out_lint
@@ -0,0 +1,18 @@
+mandoc: badargs.in:78:2: ERROR: skipping all arguments: El tail argument
+mandoc: badargs.in:9:13: WARNING: empty argument, using 0n: Bl -offset
+mandoc: badargs.in:14:13: WARNING: empty argument, using 0n: Bl -width
+mandoc: badargs.in:18:11: WARNING: empty argument, using 0n: Bl -width
+mandoc: badargs.in:27:13: WARNING: empty argument, using 0n: Bl -width
+mandoc: badargs.in:31:11: WARNING: empty argument, using 0n: Bl -width
+mandoc: badargs.in:35:10: WARNING: empty argument, using 0n: Bl -width
+mandoc: badargs.in:41:2: WARNING: skipping duplicate list type: Bl -enum
+mandoc: badargs.in:45:2: WARNING: skipping duplicate list type: Bl -bullet
+mandoc: badargs.in:50:13: ERROR: skipping excess arguments: Bl ... -bogus
+mandoc: badargs.in:54:11: ERROR: skipping excess arguments: Bl ... -bogus
+mandoc: badargs.in:58:12: ERROR: skipping excess arguments: Bl ... -bogus
+mandoc: badargs.in:62:11: ERROR: skipping excess arguments: Bl ... -bogus
+mandoc: badargs.in:66:12: ERROR: skipping excess arguments: Bl ... -bogus
+mandoc: badargs.in:70:20: ERROR: skipping excess arguments: Bl ... -bogus
+mandoc: badargs.in:75:42: WARNING: duplicate argument: Bl -compact
+mandoc: badargs.in:75:51: WARNING: duplicate argument: Bl -offset 2n
+mandoc: badargs.in:75:62: WARNING: duplicate argument: Bl -width 6n
diff --git a/regress/mdoc/Bl/bareIt.in b/regress/mdoc/Bl/bareIt.in
new file mode 100644
index 00000000..ad43c4bf
--- /dev/null
+++ b/regress/mdoc/Bl/bareIt.in
@@ -0,0 +1,15 @@
+.Dd August 16, 2014
+.Dt BL-BAREIT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-bareIt
+.Nd item macro outside list
+.Sh DESCRIPTION
+initial text
+.It argument
+.Bl -dash
+.It
+item
+.El
+.It argument
+final text
diff --git a/regress/mdoc/Bl/bareIt.out_ascii b/regress/mdoc/Bl/bareIt.out_ascii
new file mode 100644
index 00000000..9c625c74
--- /dev/null
+++ b/regress/mdoc/Bl/bareIt.out_ascii
@@ -0,0 +1,12 @@
+BL-BAREIT(1) General Commands Manual BL-BAREIT(1)
+
+NNAAMMEE
+ BBll--bbaarreeIItt - item macro outside list
+
+DDEESSCCRRIIPPTTIIOONN
+ initial text
+
+ -- item
+ final text
+
+OpenBSD August 16, 2014 OpenBSD
diff --git a/regress/mdoc/Bl/bareIt.out_lint b/regress/mdoc/Bl/bareIt.out_lint
new file mode 100644
index 00000000..8e06273b
--- /dev/null
+++ b/regress/mdoc/Bl/bareIt.out_lint
@@ -0,0 +1,3 @@
+mandoc: bareIt.in:9:2: ERROR: skipping item outside list: It argument
+mandoc: bareIt.in:14:2: ERROR: skipping item outside list: It argument
+mandoc: bareIt.in:9:2: WARNING: skipping paragraph macro: br before Bl
diff --git a/regress/mdoc/Bl/bareTa.in b/regress/mdoc/Bl/bareTa.in
new file mode 100644
index 00000000..12eaf45e
--- /dev/null
+++ b/regress/mdoc/Bl/bareTa.in
@@ -0,0 +1,26 @@
+.Dd November 12, 2012
+.Dt TA-BARE 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ta-bare
+.Nd bare tabular column macro
+.Sh DESCRIPTION
+initial text
+.Ta ignored arguments
+middle text
+.Bl -item -offset indent
+.It
+.Ta ignored arguments
+indented text
+.El
+middle text
+.Bl -dash
+.It Ta ignored arguments
+indented text
+.El
+middle text
+.Bl -column "a" "b" -offset indent
+.It a Ta b
+.El
+.It ignored arguments
+final text
diff --git a/regress/mdoc/Bl/bareTa.out_ascii b/regress/mdoc/Bl/bareTa.out_ascii
new file mode 100644
index 00000000..831ffee8
--- /dev/null
+++ b/regress/mdoc/Bl/bareTa.out_ascii
@@ -0,0 +1,18 @@
+TA-BARE(1) General Commands Manual TA-BARE(1)
+
+NNAAMMEE
+ TTaa--bbaarree - bare tabular column macro
+
+DDEESSCCRRIIPPTTIIOONN
+ initial text middle text
+
+ indented text
+ middle text
+
+ -- indented text
+ middle text
+
+ a b
+ final text
+
+OpenBSD November 12, 2012 OpenBSD
diff --git a/regress/mdoc/Bl/bareTa.out_lint b/regress/mdoc/Bl/bareTa.out_lint
new file mode 100644
index 00000000..19cb4ebb
--- /dev/null
+++ b/regress/mdoc/Bl/bareTa.out_lint
@@ -0,0 +1,5 @@
+mandoc: bareTa.in:9:2: ERROR: skipping column outside column list: Ta
+mandoc: bareTa.in:13:2: ERROR: skipping column outside column list: Ta
+mandoc: bareTa.in:18:5: ERROR: skipping column outside column list: Ta
+mandoc: bareTa.in:25:2: ERROR: skipping item outside list: It ignored arguments
+mandoc: bareTa.in:18:2: ERROR: skipping all arguments: It ignored arguments
diff --git a/regress/mdoc/Bl/break.in b/regress/mdoc/Bl/break.in
new file mode 100644
index 00000000..3246fdc7
--- /dev/null
+++ b/regress/mdoc/Bl/break.in
@@ -0,0 +1,77 @@
+.Dd August 20, 2016
+.Dt BL-BREAK 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-break
+.Nd list breaking another block
+.Sh DESCRIPTION
+before both
+.Bl -enum -offset indent
+.It
+before bracket
+.Bo inside both
+.El
+after list
+.Bc
+in between
+.Bl -enum -offset indent
+.It
+before bracket
+.Bo inside both
+.El
+.It
+stray item
+.Bc
+after both
+.Sh EXAMPLES
+.Bl -enum -offset indent
+.It
+before display
+.Bd -ragged -offset indent
+inside both
+.El
+after display
+.Ed
+in between
+.Bl -enum -offset indent
+.It
+before display
+.Bd -ragged -offset indent
+inside both
+.El
+.It
+stray item
+.Ed
+after both
+.Bl -enum -offset indent
+.It
+before table
+.Bl -column column
+.It column
+.Bd -ragged -offset indent
+inside display
+.El
+first line after table
+second line after table
+.El
+after list
+.Sh DIAGNOSTICS
+.Bl -column column
+.It column
+.Bd -ragged -offset indent
+inside display
+.El
+.Ta stray tab
+after stray tab
+.Ed
+after display
+.Sh CAVEATS
+.Bl -hang
+.It before broken block Bo inside both
+.El
+after list
+.Sh BUGS
+.Bl -enum
+.It before broken block Bo inside both
+.El
+after list
diff --git a/regress/mdoc/Bl/break.out_ascii b/regress/mdoc/Bl/break.out_ascii
new file mode 100644
index 00000000..692711c4
--- /dev/null
+++ b/regress/mdoc/Bl/break.out_ascii
@@ -0,0 +1,49 @@
+BL-BREAK(1) General Commands Manual BL-BREAK(1)
+
+NNAAMMEE
+ BBll--bbrreeaakk - list breaking another block
+
+DDEESSCCRRIIPPTTIIOONN
+ before both
+
+ 1. before bracket [inside both after list]
+ in between
+
+ 1. before bracket [inside both
+ stray item]
+ after both
+
+EEXXAAMMPPLLEESS
+ 1. before display
+
+ inside both after display
+ in between
+
+ 1. before display
+
+ inside both
+ stray item
+ after both
+
+ 1. before table
+
+ column
+
+ inside display first line after table second line after
+ table after list
+
+
+DDIIAAGGNNOOSSTTIICCSS
+ column
+
+ inside display after stray tab
+
+ after display
+
+CCAAVVEEAATTSS
+ before broken block [inside both after list]
+
+BBUUGGSS
+ 1.
+
+OpenBSD August 20, 2016 OpenBSD
diff --git a/regress/mdoc/Bl/break.out_lint b/regress/mdoc/Bl/break.out_lint
new file mode 100644
index 00000000..fe099a47
--- /dev/null
+++ b/regress/mdoc/Bl/break.out_lint
@@ -0,0 +1,18 @@
+mandoc: break.in:13:2: WARNING: blocks badly nested: Bl breaks Bo
+mandoc: break.in:21:2: WARNING: blocks badly nested: Bl breaks Bo
+mandoc: break.in:22:2: ERROR: skipping item outside list: It
+mandoc: break.in:32:2: WARNING: blocks badly nested: Bl breaks Bd
+mandoc: break.in:41:2: WARNING: blocks badly nested: Bl breaks Bd
+mandoc: break.in:42:2: ERROR: skipping item outside list: It
+mandoc: break.in:53:2: WARNING: blocks badly nested: Bl breaks Bd
+mandoc: break.in:56:2: WARNING: blocks badly nested: Bl breaks Bd
+mandoc: break.in:58:2: ERROR: inserting missing end of block: Sh breaks Bd
+mandoc: break.in:63:2: WARNING: blocks badly nested: Bl breaks Bd
+mandoc: break.in:64:2: ERROR: skipping column outside column list: Ta
+mandoc: break.in:71:2: WARNING: blocks badly nested: Bl breaks Bo
+mandoc: break.in:73:2: ERROR: inserting missing end of block: Sh breaks Bo
+mandoc: break.in:76:2: WARNING: blocks badly nested: Bl breaks Bo
+mandoc: break.in:75:25: ERROR: appending missing end of block: Bo
+mandoc: break.in:74:2: ERROR: appending missing end of block: Bl
+mandoc: break.in:75:2: WARNING: empty list item: Bl -enum It
+mandoc: break.in:75:2: ERROR: skipping all arguments: It before broken block
diff --git a/regress/mdoc/Bl/breakingIt.in b/regress/mdoc/Bl/breakingIt.in
new file mode 100644
index 00000000..025ea257
--- /dev/null
+++ b/regress/mdoc/Bl/breakingIt.in
@@ -0,0 +1,69 @@
+.Dd February 3, 2015
+.Dt BL-BREAKINGIT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-breakingIt
+.Nd items breaking other blocks
+.Sh DESCRIPTION
+.Ss Breaking partial explicit macros
+.Bl -tag -width Ds
+Stray text.
+.Ao
+More stray text.
+.It tag
+Tagged text.
+.El
+.Bl -bullet
+Stray text.
+.Ao
+More stray text.
+.It
+Bullet point.
+.El
+.Bl -tag -width Ds
+.It tag
+Tagged text.
+.Ao
+More tagged text.
+.It tag2
+Yet more tagged text.
+.El
+.Bl -bullet
+.It
+Item text.
+.Ao
+More item text.
+.It
+Bullet point.
+.El
+.Ss Breaking full explicit macros
+.Bl -tag -width Ds
+Stray text.
+.Bd -ragged -offset indent
+More stray text.
+.It tag
+Tagged text.
+.El
+.Bl -bullet
+Stray text.
+.Bd -ragged -offset indent
+More stray text.
+.It
+Bullet point.
+.El
+.Bl -tag -width Ds
+.It tag
+Tagged text.
+.Bd -ragged -offset indent
+Display text.
+.It tag2
+More tagged text.
+.El
+.Bl -bullet
+.It
+Item text.
+.Bd -ragged -offset indent
+Display text.
+.It
+Bullet point.
+.El
diff --git a/regress/mdoc/Bl/breakingIt.out_ascii b/regress/mdoc/Bl/breakingIt.out_ascii
new file mode 100644
index 00000000..afb57973
--- /dev/null
+++ b/regress/mdoc/Bl/breakingIt.out_ascii
@@ -0,0 +1,47 @@
+BL-BREAKINGIT(1) General Commands Manual BL-BREAKINGIT(1)
+
+NNAAMMEE
+ BBll--bbrreeaakkiinnggIItt - items breaking other blocks
+
+DDEESSCCRRIIPPTTIIOONN
+ BBrreeaakkiinngg ppaarrttiiaall eexxpplliicciitt mmaaccrrooss
+ Stray text. <More stray text.>
+
+ tag Tagged text.
+ Stray text. <More stray text.>
+
+ ++oo Bullet point.
+
+ tag Tagged text. <More tagged text.>
+
+ tag2 Yet more tagged text.
+
+ ++oo Item text. <More item text.>
+
+ ++oo Bullet point.
+
+ BBrreeaakkiinngg ffuullll eexxpplliicciitt mmaaccrrooss
+ Stray text.
+
+ More stray text.
+
+ tag Tagged text.
+ Stray text.
+
+ More stray text.
+
+ ++oo Bullet point.
+
+ tag Tagged text.
+
+ Display text.
+
+ tag2 More tagged text.
+
+ ++oo Item text.
+
+ Display text.
+
+ ++oo Bullet point.
+
+OpenBSD February 3, 2015 OpenBSD
diff --git a/regress/mdoc/Bl/breakingIt.out_lint b/regress/mdoc/Bl/breakingIt.out_lint
new file mode 100644
index 00000000..16a0db6e
--- /dev/null
+++ b/regress/mdoc/Bl/breakingIt.out_lint
@@ -0,0 +1,16 @@
+mandoc: breakingIt.in:13:2: ERROR: inserting missing end of block: It breaks Ao
+mandoc: breakingIt.in:20:2: ERROR: inserting missing end of block: It breaks Ao
+mandoc: breakingIt.in:28:2: ERROR: inserting missing end of block: It breaks Ao
+mandoc: breakingIt.in:36:2: ERROR: inserting missing end of block: It breaks Ao
+mandoc: breakingIt.in:44:2: ERROR: inserting missing end of block: It breaks Bd
+mandoc: breakingIt.in:51:2: ERROR: inserting missing end of block: It breaks Bd
+mandoc: breakingIt.in:59:2: ERROR: inserting missing end of block: It breaks Bd
+mandoc: breakingIt.in:67:2: ERROR: inserting missing end of block: It breaks Bd
+mandoc: breakingIt.in:10:1: WARNING: moving content out of list: text
+mandoc: breakingIt.in:11:2: WARNING: moving content out of list: Ao
+mandoc: breakingIt.in:17:1: WARNING: moving content out of list: text
+mandoc: breakingIt.in:18:2: WARNING: moving content out of list: Ao
+mandoc: breakingIt.in:41:1: WARNING: moving content out of list: text
+mandoc: breakingIt.in:42:2: WARNING: moving content out of list: Bd
+mandoc: breakingIt.in:48:1: WARNING: moving content out of list: text
+mandoc: breakingIt.in:49:2: WARNING: moving content out of list: Bd
diff --git a/regress/mdoc/Bl/broken.in b/regress/mdoc/Bl/broken.in
new file mode 100644
index 00000000..b2cd81e8
--- /dev/null
+++ b/regress/mdoc/Bl/broken.in
@@ -0,0 +1,28 @@
+.Dd February 12, 2015
+.Dt BL-BROKEN 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-broken
+.Nd list broken by another block
+.Sh DESCRIPTION
+before both
+.Bo before list
+.Bl -enum -offset indent
+.It
+inside both
+.Bc
+after bracket
+.El
+after list
+.Bo before list
+.Bl -enum -offset indent
+.It
+inside list
+.Bd -ragged -offset indent
+inside display
+.Bc
+after bracket
+.It
+next item
+.El
+after list
diff --git a/regress/mdoc/Bl/broken.out_ascii b/regress/mdoc/Bl/broken.out_ascii
new file mode 100644
index 00000000..5e6ae847
--- /dev/null
+++ b/regress/mdoc/Bl/broken.out_ascii
@@ -0,0 +1,19 @@
+BL-BROKEN(1) General Commands Manual BL-BROKEN(1)
+
+NNAAMMEE
+ BBll--bbrrookkeenn - list broken by another block
+
+DDEESSCCRRIIPPTTIIOONN
+ before both [before list
+
+ 1. inside both] after bracket
+ after list [before list
+
+ 1. inside list
+
+ inside display] after bracket
+
+ 2. next item
+ after list
+
+OpenBSD February 12, 2015 OpenBSD
diff --git a/regress/mdoc/Bl/broken.out_lint b/regress/mdoc/Bl/broken.out_lint
new file mode 100644
index 00000000..477b7fbc
--- /dev/null
+++ b/regress/mdoc/Bl/broken.out_lint
@@ -0,0 +1,3 @@
+mandoc: broken.in:13:2: WARNING: blocks badly nested: Bo breaks Bl
+mandoc: broken.in:23:2: WARNING: blocks badly nested: Bo breaks Bd
+mandoc: broken.in:25:2: ERROR: inserting missing end of block: It breaks Bd
diff --git a/regress/mdoc/Bl/bullet.in b/regress/mdoc/Bl/bullet.in
new file mode 100644
index 00000000..e189df27
--- /dev/null
+++ b/regress/mdoc/Bl/bullet.in
@@ -0,0 +1,81 @@
+.Dd December 25, 2014
+.Dt BL-BULLET 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-bullet
+.Nd bullet lists
+.Sh DESCRIPTION
+.Bl -bullet -width -4n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -bullet -width -3n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -bullet -width -2n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -bullet -width -1n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -bullet -width 0n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -bullet -width 1n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -bullet -width 2n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -bullet -width 3n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -bullet -width 4n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -bullet -width 5n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -bullet -width 6n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -bullet -width 7n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -bullet -compact
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
diff --git a/regress/mdoc/Bl/bullet.out_ascii b/regress/mdoc/Bl/bullet.out_ascii
new file mode 100644
index 00000000..e188f799
--- /dev/null
+++ b/regress/mdoc/Bl/bullet.out_ascii
@@ -0,0 +1,67 @@
+BL-BULLET(1) General Commands Manual BL-BULLET(1)
+
+NNAAMMEE
+ BBll--bbuulllleett - bullet lists
+
+DDEESSCCRRIIPPTTIIOONN
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ ++oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+OpenBSD December 25, 2014 OpenBSD
diff --git a/regress/mdoc/Bl/colNoIt.in b/regress/mdoc/Bl/colNoIt.in
new file mode 100644
index 00000000..7c80cf93
--- /dev/null
+++ b/regress/mdoc/Bl/colNoIt.in
@@ -0,0 +1,15 @@
+.Dd August 20, 2016
+.Dt BL-COLNOIT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-colNoIt
+.Nd column lists without item macros
+.Sh DESCRIPTION
+.Bl -column "a" "b"
+.Sy a Ta b
+.Em c Ta d
+.El
+.Bl -column "a" "b"
+a b
+c d
+.El
diff --git a/regress/mdoc/Bl/colNoIt.out_ascii b/regress/mdoc/Bl/colNoIt.out_ascii
new file mode 100644
index 00000000..e61c3334
--- /dev/null
+++ b/regress/mdoc/Bl/colNoIt.out_ascii
@@ -0,0 +1,13 @@
+BL-COLNOIT(1) General Commands Manual BL-COLNOIT(1)
+
+NNAAMMEE
+ BBll--ccoollNNooIItt - column lists without item macros
+
+DDEESSCCRRIIPPTTIIOONN
+ aa b
+ _c d
+
+ a b
+ c d
+
+OpenBSD August 20, 2016 OpenBSD
diff --git a/regress/mdoc/Bl/column.in b/regress/mdoc/Bl/column.in
new file mode 100644
index 00000000..be6ccdca
--- /dev/null
+++ b/regress/mdoc/Bl/column.in
@@ -0,0 +1,105 @@
+.Dd October 14, 2015
+.Dt BL-COLUMN 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-column
+.Nd lists with multiple columns
+.Sh DESCRIPTION
+.Bl -column "a"
+.It a
+.El
+.Bl -column "a" "b"
+.It a Ta b
+.El
+.\" avoid "c" which means "cm"
+.Bl -column "a" "b" "cc"
+.It a Ta b Ta cc
+.It a b cc
+.It "a" b cc
+.It "a b" cc
+.It "a b cc"
+.El
+.Bl -column "a" "b" "cc" "d"
+.It a Ta b Ta cc Ta d
+.El
+.Bl -column "a" "b" "cc" "d" "e"
+.It a Ta b Ta cc Ta d Ta e
+.El
+.\" Probing up to the utter limits of groff.
+.\" With more than 5 columns or more than 78 characters per line,
+.\" groff .Bl -column turns completely mad.
+.\" mandoc can do more, but it's no use testing that.
+.Bd -literal
+5 + 35 + 4 + 34 = 78:
+.Ed
+.Bl -column "x35xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "x34xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+.It x35xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Ta x34xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+.It a Ta b
+.El
+.Bd -literal
+5 + (22+4)*2 + 21 = 78:
+.Ed
+.Bl -column "x22xxxxxxxxxxxxxxxxxxx" "x22xxxxxxxxxxxxxxxxxxx" "x21xxxxxxxxxxxxxxxxxx"
+.It x22xxxxxxxxxxxxxxxxxxx Ta x22xxxxxxxxxxxxxxxxxxx Ta x21xxxxxxxxxxxxxxxxxx
+.It a Ta b Ta c
+.El
+.Bd -literal
+5 + 16 + (4+15)*3 = 78:
+.Ed
+.Bl -column "x16xxxxxxxxxxxxx" "x15xxxxxxxxxxxx" "x15xxxxxxxxxxxx" "x15xxxxxxxxxxxx"
+.It x16xxxxxxxxxxxxx Ta x15xxxxxxxxxxxx Ta x15xxxxxxxxxxxx Ta x15xxxxxxxxxxxx
+.It a Ta b Ta c Ta d
+.El
+.Bd -literal
+5 + 13 + (3+12)*4 = 78:
+.Ed
+.Bl -column "x13xxxxxxxxxx" "x12xxxxxxxxx" "x12xxxxxxxxx" "x12xxxxxxxxx" "x12xxxxxxxxx"
+.It x13xxxxxxxxxx Ta x12xxxxxxxxx Ta x12xxxxxxxxx Ta x12xxxxxxxxx Ta x12xxxxxxxxx
+.It a Ta b Ta c Ta d Ta e
+.El
+.\" Trailing white space in phrases.
+.Bl -column "aaaa" "bbbb"
+.It "a" Ta "b"
+.It "a " Ta "b"
+.It "a " Ta "b"
+.It a b
+.It a b
+.It a b
+.El
+.\" Wrong number of columns.
+.Bl -column "a" "b"
+.It "a"
+.It "a" Ta "b"
+.It "a" Ta "b" Ta "c"
+.It "a" Ta "b" Ta "c" Ta "d"
+.It "a" Ta "b" Ta "c" Ta "d" Ta "e"
+.El
+.\" Mixed tab and Ta
+.Bl -column a b c d
+.It a b c d
+.It a b c Ta d
+.It a b Ta c d
+.It a b Ta c Ta d
+.It a Ta b c d
+.It a Ta b c Ta d
+.It a Ta b Ta c d
+.It a Ta b Ta c Ta d
+.El
+.\" Macros before and after tabs
+.Bl -column "aa" "OpenBSD OpenBSD OpenBSD"
+.It aa Ta Ox Ox Ox Ta tab-tab
+.It aa Ta Ox Ox Ox tab-ta
+.It aa Ox Ox Ox Ta ta-tab
+.It aa Ox Ox Ox ta-ta
+.It aa Ox Ox Ox ta-bl/ta
+.It aa Ox Ox Ox ta/bl-ta
+.It aa Ox Ox Ox ta/bl-bl/ta
+.It aa Ta bb Ta
+ta at eol
+.It aa bb
+tab at eol
+.El
+.\" Interrupted column list
+.Bl -column "aa" -width 6n -compact "bb" "cc"
+.It aa Ta bb Ta cc Ta dd
+.El
diff --git a/regress/mdoc/Bl/column.out_ascii b/regress/mdoc/Bl/column.out_ascii
new file mode 100644
index 00000000..a7c07d32
--- /dev/null
+++ b/regress/mdoc/Bl/column.out_ascii
@@ -0,0 +1,74 @@
+BL-COLUMN(1) General Commands Manual BL-COLUMN(1)
+
+NNAAMMEE
+ BBll--ccoolluummnn - lists with multiple columns
+
+DDEESSCCRRIIPPTTIIOONN
+ a
+
+ a b
+
+ a b cc
+ a b cc
+ a b cc
+ a b cc
+ a b cc
+
+ a b cc d
+
+ a b cc d e
+
+ 5 + 35 + 4 + 34 = 78:
+
+ x35xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x34xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ a b
+
+ 5 + (22+4)*2 + 21 = 78:
+
+ x22xxxxxxxxxxxxxxxxxxx x22xxxxxxxxxxxxxxxxxxx x21xxxxxxxxxxxxxxxxxx
+ a b c
+
+ 5 + 16 + (4+15)*3 = 78:
+
+ x16xxxxxxxxxxxxx x15xxxxxxxxxxxx x15xxxxxxxxxxxx x15xxxxxxxxxxxx
+ a b c d
+
+ 5 + 13 + (3+12)*4 = 78:
+
+ x13xxxxxxxxxx x12xxxxxxxxx x12xxxxxxxxx x12xxxxxxxxx x12xxxxxxxxx
+ a b c d e
+
+ a b
+ a b
+ a b
+ a b
+ a b
+ a b
+
+ a
+ a b
+ a b c
+ a b cd
+ a b cde
+
+ a b c d
+ a b c d
+ a b c d
+ a b c d
+ a b c d
+ a b c d
+ a b c d
+ a b c d
+
+ aa OpenBSD OpenBSD OpenBSD tab-tab
+ aa OpenBSD OpenBSD Ox tab-ta
+ aa Ox OpenBSD OpenBSD ta-tab
+ aa Ox OpenBSD Ox ta-ta
+ aa Ox OpenBSD OpenBSD ta-bl/ta
+ aa OpenBSD OpenBSD Ox ta/bl-ta
+ aa OpenBSD OpenBSD OpenBSD ta/bl-bl/ta
+ aa bb ta at eol
+ aa bb tab at eol
+ aa bb cc dd
+
+OpenBSD October 14, 2015 OpenBSD
diff --git a/regress/mdoc/Bl/column.out_lint b/regress/mdoc/Bl/column.out_lint
new file mode 100644
index 00000000..eed080bd
--- /dev/null
+++ b/regress/mdoc/Bl/column.out_lint
@@ -0,0 +1,4 @@
+mandoc: column.in:71:2: WARNING: wrong number of cells: 2 columns, 1 cells
+mandoc: column.in:74:2: WARNING: wrong number of cells: 2 columns, 4 cells
+mandoc: column.in:75:2: WARNING: wrong number of cells: 2 columns, 5 cells
+mandoc: column.in:103:18: WARNING: skipping -width argument: Bl -column
diff --git a/regress/mdoc/Bl/dash.in b/regress/mdoc/Bl/dash.in
new file mode 100644
index 00000000..37c8ad1a
--- /dev/null
+++ b/regress/mdoc/Bl/dash.in
@@ -0,0 +1,81 @@
+.Dd December 25, 2014
+.Dt BL-DASH 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-dash
+.Nd dash and hyphen lists
+.Sh DESCRIPTION
+.Bl -dash -width -4n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -dash -width -3n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -dash -width -2n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -dash -width -1n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -dash -width 0n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hyphen -width 1n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -dash -width 2n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -dash -width 3n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hyphen -width 4n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hyphen -width 5n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -dash -width 6n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -dash -width 7n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -dash -compact
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
diff --git a/regress/mdoc/Bl/dash.out_ascii b/regress/mdoc/Bl/dash.out_ascii
new file mode 100644
index 00000000..f6677bee
--- /dev/null
+++ b/regress/mdoc/Bl/dash.out_ascii
@@ -0,0 +1,67 @@
+BL-DASH(1) General Commands Manual BL-DASH(1)
+
+NNAAMMEE
+ BBll--ddaasshh - dash and hyphen lists
+
+DDEESSCCRRIIPPTTIIOONN
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+OpenBSD December 25, 2014 OpenBSD
diff --git a/regress/mdoc/Bl/dash.out_utf8 b/regress/mdoc/Bl/dash.out_utf8
new file mode 100644
index 00000000..93abd8d3
--- /dev/null
+++ b/regress/mdoc/Bl/dash.out_utf8
@@ -0,0 +1,67 @@
+BL-DASH(1) General Commands Manual BL-DASH(1)
+
+NNAAMMEE
+ BBll--ddaasshh – dash and hyphen lists
+
+DDEESSCCRRIIPPTTIIOONN
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+ -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+OpenBSD December 25, 2014 OpenBSD
diff --git a/regress/mdoc/Bl/diag.in b/regress/mdoc/Bl/diag.in
new file mode 100644
index 00000000..74421ab5
--- /dev/null
+++ b/regress/mdoc/Bl/diag.in
@@ -0,0 +1,54 @@
+.Dd April 8, 2014
+.Dt BL-DIAG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-diag
+.Nd section 4 diagnostic lists
+.Sh DESCRIPTION
+.Bl -diag
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -diag
+.It four
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -diag
+.It quint
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -diag
+.It indent
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -diag
+.It septime
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -diag
+.It achtacht
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -diag
+.It neun_neun
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -diag
+.It zehn__zehn
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -diag
+.It This is a very long text contained in the diag item head, it is \
+so long that it overruns the line -
+and here comes the item body.
+.El
+.Pp
+Check that It is not parsed in Bl:
+.Bl -diag -compact
+.It Nx
+.No Nx
+.It Ox
+.No Ox
+.It Fx
+.No Fx
+.El
diff --git a/regress/mdoc/Bl/diag.out_ascii b/regress/mdoc/Bl/diag.out_ascii
new file mode 100644
index 00000000..9ee7a946
--- /dev/null
+++ b/regress/mdoc/Bl/diag.out_ascii
@@ -0,0 +1,39 @@
+BL-DIAG(1) General Commands Manual BL-DIAG(1)
+
+NNAAMMEE
+ BBll--ddiiaagg - section 4 diagnostic lists
+
+DDEESSCCRRIIPPTTIIOONN
+ ttaagg x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+
+ ffoouurr x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+
+ qquuiinntt x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ iinnddeenntt x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ sseeppttiimmee x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x
+
+ aacchhttaacchhtt x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x
+
+ nneeuunn__nneeuunn x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x
+
+ zzeehhnn____zzeehhnn x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x
+
+ TThhiiss iiss aa vveerryy lloonngg tteexxtt ccoonnttaaiinneedd iinn tthhee ddiiaagg iitteemm hheeaadd,, iitt iiss ssoo lloonngg
+ tthhaatt iitt oovveerrrruunnss tthhee lliinnee -- and here comes the item body.
+
+ Check that It is not parsed in Bl:
+ NNxx NetBSD
+ OOxx OpenBSD
+ FFxx FreeBSD
+
+OpenBSD April 8, 2014 OpenBSD
diff --git a/regress/mdoc/Bl/empty.in b/regress/mdoc/Bl/empty.in
new file mode 100644
index 00000000..1ee9c94c
--- /dev/null
+++ b/regress/mdoc/Bl/empty.in
@@ -0,0 +1,41 @@
+.Dd January 2, 2011
+.Dt BL-EMPTY 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-empty
+.Nd empty lists
+.Sh DESCRIPTION
+bullet list:
+.Bl -bullet
+.El
+column list:
+.Bl -column one two
+.El
+dash list:
+.Bl -dash
+.El
+diag list:
+.Bl -diag
+.El
+enum list:
+.Bl -enum
+.El
+hang list:
+.Bl -hang
+.El
+hyphen list:
+.Bl -hyphen
+.El
+inset list:
+.Bl -inset
+.El
+item list:
+.Bl -item
+.El
+ohang list:
+.Bl -ohang
+.El
+tag list:
+.Bl -tag -width Ds
+.El
+end of test document
diff --git a/regress/mdoc/Bl/empty.out_ascii b/regress/mdoc/Bl/empty.out_ascii
new file mode 100644
index 00000000..aba64bbe
--- /dev/null
+++ b/regress/mdoc/Bl/empty.out_ascii
@@ -0,0 +1,20 @@
+BL-EMPTY(1) General Commands Manual BL-EMPTY(1)
+
+NNAAMMEE
+ BBll--eemmppttyy - empty lists
+
+DDEESSCCRRIIPPTTIIOONN
+ bullet list:
+ column list:
+ dash list:
+ diag list:
+ enum list:
+ hang list:
+ hyphen list:
+ inset list:
+ item list:
+ ohang list:
+ tag list:
+ end of test document
+
+OpenBSD January 2, 2011 OpenBSD
diff --git a/regress/mdoc/Bl/empty.out_lint b/regress/mdoc/Bl/empty.out_lint
new file mode 100644
index 00000000..3df60e6d
--- /dev/null
+++ b/regress/mdoc/Bl/empty.out_lint
@@ -0,0 +1,11 @@
+mandoc: empty.in:9:2: WARNING: empty block: Bl
+mandoc: empty.in:12:2: WARNING: empty block: Bl
+mandoc: empty.in:15:2: WARNING: empty block: Bl
+mandoc: empty.in:18:2: WARNING: empty block: Bl
+mandoc: empty.in:21:2: WARNING: empty block: Bl
+mandoc: empty.in:24:2: WARNING: empty block: Bl
+mandoc: empty.in:27:2: WARNING: empty block: Bl
+mandoc: empty.in:30:2: WARNING: empty block: Bl
+mandoc: empty.in:33:2: WARNING: empty block: Bl
+mandoc: empty.in:36:2: WARNING: empty block: Bl
+mandoc: empty.in:39:2: WARNING: empty block: Bl
diff --git a/regress/mdoc/Bl/emptyhead.in b/regress/mdoc/Bl/emptyhead.in
new file mode 100644
index 00000000..7219f969
--- /dev/null
+++ b/regress/mdoc/Bl/emptyhead.in
@@ -0,0 +1,43 @@
+.Dd July 3, 2014
+.Dt BL-EMPTYHEAD 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-emptyhead
+.Nd lists with empty item heads
+.Sh DESCRIPTION
+hang list:
+.Bl -hang -width 6n
+.It tag
+text
+.It
+no tag before this text
+.It tag
+text
+.El
+ohang list:
+.Bl -ohang
+.It tag
+text
+.It
+no tag before this text
+.It tag
+text
+.El
+inset list:
+.Bl -inset
+.It tag
+text
+.It
+no tag before this text
+.It tag
+text
+.El
+diag list:
+.Bl -diag
+.It tag
+text
+.It
+no tag before this text
+.It tag
+text
+.El
diff --git a/regress/mdoc/Bl/emptyhead.out_ascii b/regress/mdoc/Bl/emptyhead.out_ascii
new file mode 100644
index 00000000..3d0d0108
--- /dev/null
+++ b/regress/mdoc/Bl/emptyhead.out_ascii
@@ -0,0 +1,38 @@
+BL-EMPTYHEAD(1) General Commands Manual BL-EMPTYHEAD(1)
+
+NNAAMMEE
+ BBll--eemmppttyyhheeaadd - lists with empty item heads
+
+DDEESSCCRRIIPPTTIIOONN
+ hang list:
+
+ tag text
+
+ no tag before this text
+
+ tag text
+ ohang list:
+
+ tag
+ text
+
+ no tag before this text
+
+ tag
+ text
+ inset list:
+
+ tag text
+
+ no tag before this text
+
+ tag text
+ diag list:
+
+ ttaagg text
+
+ no tag before this text
+
+ ttaagg text
+
+OpenBSD July 3, 2014 OpenBSD
diff --git a/regress/mdoc/Bl/emptyhead.out_lint b/regress/mdoc/Bl/emptyhead.out_lint
new file mode 100644
index 00000000..2d158b72
--- /dev/null
+++ b/regress/mdoc/Bl/emptyhead.out_lint
@@ -0,0 +1,4 @@
+mandoc: emptyhead.in:12:2: WARNING: empty head in list item: Bl -hang It
+mandoc: emptyhead.in:21:2: WARNING: empty head in list item: Bl -ohang It
+mandoc: emptyhead.in:30:2: WARNING: empty head in list item: Bl -inset It
+mandoc: emptyhead.in:39:2: WARNING: empty head in list item: Bl -diag It
diff --git a/regress/mdoc/Bl/emptyitem.in b/regress/mdoc/Bl/emptyitem.in
new file mode 100644
index 00000000..e4f85897
--- /dev/null
+++ b/regress/mdoc/Bl/emptyitem.in
@@ -0,0 +1,39 @@
+.Dd August 10, 2016
+.Dt BL-EMPTYITEM 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-emptyitem
+.Nd lists with fixed heads and empty items
+.Sh DESCRIPTION
+bullet list:
+.Bl -bullet
+.It head argument
+one
+.It
+.It
+three
+.El
+dash list:
+.Bl -dash
+.It
+one
+.It head argument
+.It
+three
+.El
+enum list:
+.Bl -enum
+.It
+one
+.It
+.It head argument
+three
+.El
+hyphen list:
+.Bl -hyphen
+.It Sy head argument
+one
+.It
+.It
+three
+.El
diff --git a/regress/mdoc/Bl/emptyitem.out_ascii b/regress/mdoc/Bl/emptyitem.out_ascii
new file mode 100644
index 00000000..5148c3ce
--- /dev/null
+++ b/regress/mdoc/Bl/emptyitem.out_ascii
@@ -0,0 +1,36 @@
+BL-EMPTYITEM(1) General Commands Manual BL-EMPTYITEM(1)
+
+NNAAMMEE
+ BBll--eemmppttyyiitteemm - lists with fixed heads and empty items
+
+DDEESSCCRRIIPPTTIIOONN
+ bullet list:
+
+ ++oo one
+
+ ++oo
+
+ ++oo three
+ dash list:
+
+ -- one
+
+ --
+
+ -- three
+ enum list:
+
+ 1. one
+
+ 2.
+
+ 3. three
+ hyphen list:
+
+ -- one
+
+ --
+
+ -- three
+
+OpenBSD August 10, 2016 OpenBSD
diff --git a/regress/mdoc/Bl/emptyitem.out_lint b/regress/mdoc/Bl/emptyitem.out_lint
new file mode 100644
index 00000000..1dd9dfea
--- /dev/null
+++ b/regress/mdoc/Bl/emptyitem.out_lint
@@ -0,0 +1,8 @@
+mandoc: emptyitem.in:10:2: ERROR: skipping all arguments: It head argument
+mandoc: emptyitem.in:12:2: WARNING: empty list item: Bl -bullet It
+mandoc: emptyitem.in:20:2: WARNING: empty list item: Bl -dash It
+mandoc: emptyitem.in:20:2: ERROR: skipping all arguments: It head argument
+mandoc: emptyitem.in:28:2: WARNING: empty list item: Bl -enum It
+mandoc: emptyitem.in:29:2: ERROR: skipping all arguments: It head argument
+mandoc: emptyitem.in:34:2: ERROR: skipping all arguments: It Sy
+mandoc: emptyitem.in:36:2: WARNING: empty list item: Bl -hyphen It
diff --git a/regress/mdoc/Bl/emptytag.in b/regress/mdoc/Bl/emptytag.in
new file mode 100644
index 00000000..f155b5c0
--- /dev/null
+++ b/regress/mdoc/Bl/emptytag.in
@@ -0,0 +1,17 @@
+.Dd July 3, 2014
+.Dt BL-EMPTYTAG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-emptytag
+.Nd tag lists with empty item heads
+.Sh DESCRIPTION
+initial text
+.Bl -tag -width 6n
+.It tag
+text
+.It
+no tag before this text
+.It tag
+text
+.El
+final text
diff --git a/regress/mdoc/Bl/emptytag.out_ascii b/regress/mdoc/Bl/emptytag.out_ascii
new file mode 100644
index 00000000..533480b1
--- /dev/null
+++ b/regress/mdoc/Bl/emptytag.out_ascii
@@ -0,0 +1,16 @@
+BL-EMPTYTAG(1) General Commands Manual BL-EMPTYTAG(1)
+
+NNAAMMEE
+ BBll--eemmppttyyttaagg - tag lists with empty item heads
+
+DDEESSCCRRIIPPTTIIOONN
+ initial text
+
+ tag text
+
+ no tag before this text
+
+ tag text
+ final text
+
+OpenBSD July 3, 2014 OpenBSD
diff --git a/regress/mdoc/Bl/emptytag.out_lint b/regress/mdoc/Bl/emptytag.out_lint
new file mode 100644
index 00000000..72d9d287
--- /dev/null
+++ b/regress/mdoc/Bl/emptytag.out_lint
@@ -0,0 +1 @@
+mandoc: emptytag.in:12:2: WARNING: empty head in list item: Bl -tag It
diff --git a/regress/mdoc/Bl/enum.in b/regress/mdoc/Bl/enum.in
new file mode 100644
index 00000000..e5b1c618
--- /dev/null
+++ b/regress/mdoc/Bl/enum.in
@@ -0,0 +1,81 @@
+.Dd December 25, 2014
+.Dt BL-ENUM 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-enum
+.Nd enumerated lists
+.Sh DESCRIPTION
+.Bl -enum -width -4n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -enum -width -3n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -enum -width -2n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -enum -width -1n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -enum -width 0n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -enum -width 1n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -enum -width 2n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -enum -width 3n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -enum -width 4n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -enum -width 5n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -enum -width 6n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -enum -width 7n
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -enum -compact
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.It
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
diff --git a/regress/mdoc/Bl/enum.out_ascii b/regress/mdoc/Bl/enum.out_ascii
new file mode 100644
index 00000000..769dc218
--- /dev/null
+++ b/regress/mdoc/Bl/enum.out_ascii
@@ -0,0 +1,67 @@
+BL-ENUM(1) General Commands Manual BL-ENUM(1)
+
+NNAAMMEE
+ BBll--eennuumm - enumerated lists
+
+DDEESSCCRRIIPPTTIIOONN
+ 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+
+ 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+
+ 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x
+ 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+ 2. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+ 3. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+ 4. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+ 5. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+ 6. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+ 7. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+ 8. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+ 9. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+ 10. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+ 11. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+ 12. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+
+OpenBSD December 25, 2014 OpenBSD
diff --git a/regress/mdoc/Bl/extend.in b/regress/mdoc/Bl/extend.in
new file mode 100644
index 00000000..0b4dce11
--- /dev/null
+++ b/regress/mdoc/Bl/extend.in
@@ -0,0 +1,31 @@
+.Dd April 12, 2010
+.Dt BL-EXTEND 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-extend
+.Nd extending block headers
+.Sh DESCRIPTION
+.\" explicit quoting does not require macro lines per se
+.Ao
+plain quoted text
+.Ac
+.Bl -tag -width Ds
+.It normal tag
+normal text
+.\" when extending It headers, plain text lines fall back
+.\" into the previous It body; so macro lines are required
+.It Ao
+.No extended tag
+.Ac
+extended text
+.It prefix Ao
+.No prefixed tag
+.Ac
+prefixed text
+.\" postfix after closing macro does not work in old groff
+.\" the whole It header gets lost
+.\" .It prefix Ao
+.\" .No braced tag
+.\" .Ac postfix
+.\" braced text
+.El
diff --git a/regress/mdoc/Bl/extend.out_ascii b/regress/mdoc/Bl/extend.out_ascii
new file mode 100644
index 00000000..6676ea48
--- /dev/null
+++ b/regress/mdoc/Bl/extend.out_ascii
@@ -0,0 +1,18 @@
+BL-EXTEND(1) General Commands Manual BL-EXTEND(1)
+
+NNAAMMEE
+ BBll--eexxtteenndd - extending block headers
+
+DDEESSCCRRIIPPTTIIOONN
+ <plain quoted text>
+
+ normal tag
+ normal text
+
+ <extended tag>
+ extended text
+
+ prefix <prefixed tag>
+ prefixed text
+
+OpenBSD April 12, 2010 OpenBSD
diff --git a/regress/mdoc/Bl/hang.in b/regress/mdoc/Bl/hang.in
new file mode 100644
index 00000000..2b2b7554
--- /dev/null
+++ b/regress/mdoc/Bl/hang.in
@@ -0,0 +1,111 @@
+.Dd December 25, 2014
+.Dt BL-HANG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-hang
+.Nd hanged lists
+.Sh DESCRIPTION
+.Bl -hang -width -4n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width -3n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width -2n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width -1n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width 0n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width 1n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width 2n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width 3n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width 4n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width 5n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width 5n
+.It four
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width 5n
+.It quint
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width 5n
+.It indent
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width 5n
+.It septime
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width 5n
+.It achtacht
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width 5n
+.It neun_neun
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width 5n
+.It zehn__zehn
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -hang -width 5n
+.It This is a very long text contained in the hanged item head, it is \
+so long that it overruns the line -
+and here comes the item body.
+.El
+Compact hanged list:
+.Bl -hang -width 6n -compact
+.It one
+first line
+.It second
+second line
+.It third_tag
+last line
+.El
+Hanged list without a width:
+.Bl -hang
+.It tag
+text
+.El
diff --git a/regress/mdoc/Bl/hang.out_ascii b/regress/mdoc/Bl/hang.out_ascii
new file mode 100644
index 00000000..04cce936
--- /dev/null
+++ b/regress/mdoc/Bl/hang.out_ascii
@@ -0,0 +1,85 @@
+BL-HANG(1) General Commands Manual BL-HANG(1)
+
+NNAAMMEE
+ BBll--hhaanngg - hanged lists
+
+DDEESSCCRRIIPPTTIIOONN
+ tag x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ tag x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x
+
+ tag x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x
+
+ tag x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x
+
+ tag x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x
+
+ tag x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x
+
+ tag x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x
+
+ tag x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x
+
+ tag x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x
+
+ tag x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x
+
+ four x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x
+
+ quint x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x
+
+ indent x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x
+
+ septime x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x
+
+ achtacht x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x
+
+ neun_neun x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x
+
+ zehn__zehn x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x x x x x x x x
+
+ This is a very long text contained in the hanged item head, it is so long
+ that it overruns the line - and here comes the item body.
+ Compact hanged list:
+ one first line
+ second second line
+ third_tag last line
+ Hanged list without a width:
+
+ tag text
+
+OpenBSD December 25, 2014 OpenBSD
diff --git a/regress/mdoc/Bl/inset.in b/regress/mdoc/Bl/inset.in
new file mode 100644
index 00000000..0376ae63
--- /dev/null
+++ b/regress/mdoc/Bl/inset.in
@@ -0,0 +1,48 @@
+.Dd October 28, 2009
+.Dt BL-INSET 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-inset
+.Nd inset list labels
+.Sh DESCRIPTION
+.Bl -inset
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -inset
+.It four
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -inset
+.It quint
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -inset
+.It indent
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -inset
+.It septime
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -inset
+.It achtacht
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -inset
+.It neun_neun
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -inset
+.It zehn__zehn
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.\" Trailing white space in the head.
+.Bl -inset
+.It "a"
+b
+.It "a "
+b
+.It "a "
+b
+.El
diff --git a/regress/mdoc/Bl/inset.out_ascii b/regress/mdoc/Bl/inset.out_ascii
new file mode 100644
index 00000000..4927df78
--- /dev/null
+++ b/regress/mdoc/Bl/inset.out_ascii
@@ -0,0 +1,37 @@
+BL-INSET(1) General Commands Manual BL-INSET(1)
+
+NNAAMMEE
+ BBll--iinnsseett - inset list labels
+
+DDEESSCCRRIIPPTTIIOONN
+ tag x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ four x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+
+ quint x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+
+ indent x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ septime x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ achtacht x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x
+
+ neun_neun x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x
+
+ zehn__zehn x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x x x
+
+ a b
+
+ a b
+
+ a b
+
+OpenBSD October 28, 2009 OpenBSD
diff --git a/regress/mdoc/Bl/item.in b/regress/mdoc/Bl/item.in
new file mode 100644
index 00000000..672e9dc7
--- /dev/null
+++ b/regress/mdoc/Bl/item.in
@@ -0,0 +1,23 @@
+.Dd July 10, 2012
+.Dt BL-ITEM 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-item
+.Nd itemized lists
+.Sh DESCRIPTION
+.Bl -item
+.It
+first line
+.It ignore
+second line
+.It
+third line
+.El
+.Bl -item -compact
+.It
+first line
+.It ignore
+second line
+.It
+third line
+.El
diff --git a/regress/mdoc/Bl/item.out_ascii b/regress/mdoc/Bl/item.out_ascii
new file mode 100644
index 00000000..ae3f4524
--- /dev/null
+++ b/regress/mdoc/Bl/item.out_ascii
@@ -0,0 +1,16 @@
+BL-ITEM(1) General Commands Manual BL-ITEM(1)
+
+NNAAMMEE
+ BBll--iitteemm - itemized lists
+
+DDEESSCCRRIIPPTTIIOONN
+ first line
+
+ second line
+
+ third line
+ first line
+ second line
+ third line
+
+OpenBSD July 10, 2012 OpenBSD
diff --git a/regress/mdoc/Bl/multitag.in b/regress/mdoc/Bl/multitag.in
new file mode 100644
index 00000000..e316c2d4
--- /dev/null
+++ b/regress/mdoc/Bl/multitag.in
@@ -0,0 +1,47 @@
+.Dd April 13, 2010
+.Dt BL-MULTITAG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-multitag
+.Nd lists with multiple successive tags
+.Sh DESCRIPTION
+inset:
+.Bl -inset
+.It first
+.It second
+.It third
+some text
+.It fourth
+.It fifth
+more text
+.El
+tag:
+.Bl -tag -width Ds
+.It first
+.It second
+.It third
+some text
+.It fourth
+.It fifth
+more text
+.El
+inset compact:
+.Bl -inset -compact
+.It first
+.It second
+.It third
+some text
+.It fourth
+.It fifth
+more text
+.El
+tag compact:
+.Bl -tag -width Ds -compact
+.It first
+.It second
+.It third
+some text
+.It fourth
+.It fifth
+more text
+.El
diff --git a/regress/mdoc/Bl/multitag.out_ascii b/regress/mdoc/Bl/multitag.out_ascii
new file mode 100644
index 00000000..3167b587
--- /dev/null
+++ b/regress/mdoc/Bl/multitag.out_ascii
@@ -0,0 +1,42 @@
+BL-MULTITAG(1) General Commands Manual BL-MULTITAG(1)
+
+NNAAMMEE
+ BBll--mmuullttiittaagg - lists with multiple successive tags
+
+DDEESSCCRRIIPPTTIIOONN
+ inset:
+
+ first
+
+ second
+
+ third some text
+
+ fourth
+
+ fifth more text
+ tag:
+
+ first
+
+ second
+
+ third some text
+
+ fourth
+
+ fifth more text
+ inset compact:
+ first
+ second
+ third some text
+ fourth
+ fifth more text
+ tag compact:
+ first
+ second
+ third some text
+ fourth
+ fifth more text
+
+OpenBSD April 13, 2010 OpenBSD
diff --git a/regress/mdoc/Bl/multitype.in b/regress/mdoc/Bl/multitype.in
new file mode 100644
index 00000000..48e8dc11
--- /dev/null
+++ b/regress/mdoc/Bl/multitype.in
@@ -0,0 +1,11 @@
+.Dd October 28, 2009
+.Dt BL-MULTITYPE 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-multitype
+.Nd list with multiple types
+.Sh DESCRIPTION
+.Bl -dash -bullet -offset indent
+.It
+Some text.
+.El
diff --git a/regress/mdoc/Bl/multitype.out_ascii b/regress/mdoc/Bl/multitype.out_ascii
new file mode 100644
index 00000000..f22c89cf
--- /dev/null
+++ b/regress/mdoc/Bl/multitype.out_ascii
@@ -0,0 +1,9 @@
+BL-MULTITYPE(1) General Commands Manual BL-MULTITYPE(1)
+
+NNAAMMEE
+ BBll--mmuullttiittyyppee - list with multiple types
+
+DDEESSCCRRIIPPTTIIOONN
+ -- Some text.
+
+OpenBSD October 28, 2009 OpenBSD
diff --git a/regress/mdoc/Bl/nested.in b/regress/mdoc/Bl/nested.in
new file mode 100644
index 00000000..380e2e62
--- /dev/null
+++ b/regress/mdoc/Bl/nested.in
@@ -0,0 +1,83 @@
+.Dd May 19, 2013
+.Dt BL-NESTED 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-nested
+.Nd nested lists
+.Sh DESCRIPTION
+inset:
+.Bl -inset
+.It outer
+list
+.Bl -inset
+.It inner
+list
+.El
+.El
+inset compact:
+.Bl -inset -compact
+.It outer
+list
+.Bl -inset -compact
+.It inner
+list
+.El
+.El
+dash:
+.Bl -dash
+.It
+outer list
+.Bl -dash
+.It
+inner list
+.El
+.El
+dash compact:
+.Bl -dash -compact
+.It
+outer list
+.Bl -dash -compact
+.It
+inner list
+.El
+.El
+tag:
+.Bl -tag -width 4n
+.It outer tag
+outer text
+.Bl -tag -width 4n
+.It inner tag
+inner text
+.El
+outer text
+.El
+.Bl -tag -width 4n
+.It outer tag
+.Bd -ragged -compact
+outer text (display)
+.Ed
+.Bl -tag -width 4n
+.It inner tag
+inner text
+.El
+outer text
+.El
+.Bl -tag -width 4n
+.It outer tag
+.Dl outer text (one-line display)
+.Bl -tag -width 4n
+.It inner tag
+inner text
+.El
+outer text
+.El
+.Bl -tag -width 4n -offset 3n
+.It outer tag (indented 3n)
+outer text
+.Bl -tag -width 4n -offset 6n
+.It inner tag (indented 6n)
+inner text
+.El
+outer text
+.El
+final text
diff --git a/regress/mdoc/Bl/nested.out_ascii b/regress/mdoc/Bl/nested.out_ascii
new file mode 100644
index 00000000..50998896
--- /dev/null
+++ b/regress/mdoc/Bl/nested.out_ascii
@@ -0,0 +1,54 @@
+BL-NESTED(1) General Commands Manual BL-NESTED(1)
+
+NNAAMMEE
+ BBll--nneesstteedd - nested lists
+
+DDEESSCCRRIIPPTTIIOONN
+ inset:
+
+ outer list
+
+ inner list
+ inset compact:
+ outer list
+ inner list
+ dash:
+
+ -- outer list
+
+ -- inner list
+ dash compact:
+ -- outer list
+ -- inner list
+ tag:
+
+ outer tag
+ outer text
+
+ inner tag
+ inner text
+ outer text
+
+ outer tag
+ outer text (display)
+
+ inner tag
+ inner text
+ outer text
+
+ outer tag
+ outer text (one-line display)
+
+ inner tag
+ inner text
+ outer text
+
+ outer tag (indented 3n)
+ outer text
+
+ inner tag (indented 6n)
+ inner text
+ outer text
+ final text
+
+OpenBSD May 19, 2013 OpenBSD
diff --git a/regress/mdoc/Bl/noIt.in b/regress/mdoc/Bl/noIt.in
new file mode 100644
index 00000000..46d8c0d2
--- /dev/null
+++ b/regress/mdoc/Bl/noIt.in
@@ -0,0 +1,24 @@
+.Dd October 6, 2013
+.Dt BL-NOIT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-noIt
+.Nd list missing item macros
+.Sh DESCRIPTION
+.Bl -tag -width Ds
+Stray text.
+.Em More stray text.
+.It tag
+Tagged text.
+.El
+.Bl -bullet
+Stray text.
+.Sm off
+.Em More Sy stray Em text.
+.Sm on
+.It
+Bullet point.
+.El
+.Bl -dash
+Stray text only.
+.El
diff --git a/regress/mdoc/Bl/noIt.out_ascii b/regress/mdoc/Bl/noIt.out_ascii
new file mode 100644
index 00000000..9f603f1c
--- /dev/null
+++ b/regress/mdoc/Bl/noIt.out_ascii
@@ -0,0 +1,15 @@
+BL-NOIT(1) General Commands Manual BL-NOIT(1)
+
+NNAAMMEE
+ BBll--nnooIItt - list missing item macros
+
+DDEESSCCRRIIPPTTIIOONN
+ Stray text. _M_o_r_e _s_t_r_a_y _t_e_x_t_.
+
+ tag Tagged text.
+ Stray text. _M_o_r_essttrraayy_t_e_x_t_.
+
+ ++oo Bullet point.
+ Stray text only.
+
+OpenBSD October 6, 2013 OpenBSD
diff --git a/regress/mdoc/Bl/noIt.out_lint b/regress/mdoc/Bl/noIt.out_lint
new file mode 100644
index 00000000..efe0eeea
--- /dev/null
+++ b/regress/mdoc/Bl/noIt.out_lint
@@ -0,0 +1,8 @@
+mandoc: noIt.in:9:1: WARNING: moving content out of list: text
+mandoc: noIt.in:10:2: WARNING: moving content out of list: Em
+mandoc: noIt.in:15:1: WARNING: moving content out of list: text
+mandoc: noIt.in:16:2: WARNING: moving content out of list: Sm
+mandoc: noIt.in:17:2: WARNING: moving content out of list: Em
+mandoc: noIt.in:17:10: WARNING: moving content out of list: Sy
+mandoc: noIt.in:17:19: WARNING: moving content out of list: Em
+mandoc: noIt.in:23:1: WARNING: moving content out of list: text
diff --git a/regress/mdoc/Bl/notype.in b/regress/mdoc/Bl/notype.in
new file mode 100644
index 00000000..f91583d0
--- /dev/null
+++ b/regress/mdoc/Bl/notype.in
@@ -0,0 +1,26 @@
+.Dd August 10, 2016
+.Dt BL-NOTYPE 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-notype
+.Nd lists with late or missing types
+.Sh DESCRIPTION
+late type:
+.Bl -offset indent -bullet
+.It
+Some text.
+.El tail argument
+.Pp
+no type:
+.Bl -offset indent -width Ds
+.It
+Some text.
+.El
+.Pp
+no argument at all:
+.Bl
+.It
+Some text.
+.El
+.Pp
+final text
diff --git a/regress/mdoc/Bl/notype.out_ascii b/regress/mdoc/Bl/notype.out_ascii
new file mode 100644
index 00000000..0f6b2237
--- /dev/null
+++ b/regress/mdoc/Bl/notype.out_ascii
@@ -0,0 +1,21 @@
+BL-NOTYPE(1) General Commands Manual BL-NOTYPE(1)
+
+NNAAMMEE
+ BBll--nnoottyyppee - lists with late or missing types
+
+DDEESSCCRRIIPPTTIIOONN
+ late type:
+
+ ++oo Some text.
+
+ no type:
+
+ Some text.
+
+ no argument at all:
+
+ Some text.
+
+ final text
+
+OpenBSD August 10, 2016 OpenBSD
diff --git a/regress/mdoc/Bl/notype.out_lint b/regress/mdoc/Bl/notype.out_lint
new file mode 100644
index 00000000..cf6fb63a
--- /dev/null
+++ b/regress/mdoc/Bl/notype.out_lint
@@ -0,0 +1,5 @@
+mandoc: notype.in:12:2: ERROR: skipping all arguments: El tail argument
+mandoc: notype.in:9:2: WARNING: list type is not the first argument: Bl -offset
+mandoc: notype.in:15:2: ERROR: missing list type, using -item: Bl
+mandoc: notype.in:15:20: WARNING: skipping -width argument: Bl -item
+mandoc: notype.in:21:2: ERROR: missing list type, using -item: Bl
diff --git a/regress/mdoc/Bl/offset.in b/regress/mdoc/Bl/offset.in
new file mode 100644
index 00000000..9564b105
--- /dev/null
+++ b/regress/mdoc/Bl/offset.in
@@ -0,0 +1,79 @@
+.Dd December 25, 2014
+.Dt BL-OFFSET 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-offset
+.Nd various arguments for Bl offset
+.Sh DESCRIPTION
+.Bl -item -offset
+.It
+Bl item offset empty
+.El
+.Bl -item -offset left
+.It
+Bl item offset left
+.El
+.Bl -item -offset indent
+.It
+Bl item offset indent
+.El
+.Bl -item -offset indent-two
+.It
+Bl item offset indent-two
+.El
+.Bl -item -offset 4n
+.It
+Bl item offset 4n
+.El
+.Bl -item -offset mystring
+.It
+Bl item offset mystring
+.El
+.Bl -item -offset Ds
+.It
+Bl item offset Ds
+.El
+.Bl -item -offset 78n
+.It
+Bl item offset 78n
+.El
+.Bl -item -offset -3n
+.It
+Bl item offset -3n
+.El
+.Bl -tag -width Ds -offset
+.It tag
+Bl tag width Ds offset empty
+.El
+.Bl -tag -width Ds -offset left
+.It tag
+Bl tag width Ds offset left
+.El
+.Bl -tag -width Ds -offset indent
+.It tag
+Bl tag width Ds offset indent
+.El
+.Bl -tag -width Ds -offset indent-two
+.It tag
+Bl tag width Ds offset indent-two
+.El
+.Bl -tag -width Ds -offset 4n
+.It tag
+Bl tag width Ds offset 4n
+.El
+.Bl -tag -width Ds -offset mystring
+.It tag
+Bl tag width Ds offset mystring
+.El
+.Bl -tag -width Ds -offset Ds
+.It tag
+Bl tag width Ds offset Ds
+.El
+.Bl -tag -width Ds -offset 78n
+.It tag
+Bl tag width Ds offset 78n
+.El
+.Bl -tag -width Ds -offset -3n
+.It tag
+Bl tag width Ds offset -3n
+.El
diff --git a/regress/mdoc/Bl/offset.out_ascii b/regress/mdoc/Bl/offset.out_ascii
new file mode 100644
index 00000000..8c871d44
--- /dev/null
+++ b/regress/mdoc/Bl/offset.out_ascii
@@ -0,0 +1,51 @@
+BL-OFFSET(1) General Commands Manual BL-OFFSET(1)
+
+NNAAMMEE
+ BBll--ooffffsseett - various arguments for Bl offset
+
+DDEESSCCRRIIPPTTIIOONN
+ Bl item offset empty
+
+ Bl item offset left
+
+ Bl item offset indent
+
+ Bl item offset indent-two
+
+ Bl item offset 4n
+
+ Bl item offset mystring
+
+ Bl item offset Ds
+
+ Bl
+ item
+ offset
+ 78n
+
+ Bl item offset -3n
+
+ tag Bl tag width Ds offset empty
+
+ tag Bl tag width Ds offset left
+
+ tag Bl tag width Ds offset indent
+
+ tag Bl tag width Ds offset indent-two
+
+ tag Bl tag width Ds offset 4n
+
+ tag Bl tag width Ds offset mystring
+
+ tag Bl tag width Ds offset Ds
+
+ tag Bl
+ tag
+ width
+ Ds
+ offset
+ 78n
+
+ tag Bl tag width Ds offset -3n
+
+OpenBSD December 25, 2014 OpenBSD
diff --git a/regress/mdoc/Bl/ohang.in b/regress/mdoc/Bl/ohang.in
new file mode 100644
index 00000000..af4bdf6d
--- /dev/null
+++ b/regress/mdoc/Bl/ohang.in
@@ -0,0 +1,23 @@
+.Dd July 10, 2012
+.Dt BL-OHANG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-ohang
+.Nd over-hanging lists
+.Sh DESCRIPTION
+.Bl -ohang
+.It first tag
+first line
+.It second tag
+second line
+.It third tag
+third line
+.El
+.Bl -ohang -compact
+.It first tag
+first line
+.It second tag
+second line
+.It third tag
+third line
+.El
diff --git a/regress/mdoc/Bl/ohang.out_ascii b/regress/mdoc/Bl/ohang.out_ascii
new file mode 100644
index 00000000..238958dd
--- /dev/null
+++ b/regress/mdoc/Bl/ohang.out_ascii
@@ -0,0 +1,22 @@
+BL-OHANG(1) General Commands Manual BL-OHANG(1)
+
+NNAAMMEE
+ BBll--oohhaanngg - over-hanging lists
+
+DDEESSCCRRIIPPTTIIOONN
+ first tag
+ first line
+
+ second tag
+ second line
+
+ third tag
+ third line
+ first tag
+ first line
+ second tag
+ second line
+ third tag
+ third line
+
+OpenBSD July 10, 2012 OpenBSD
diff --git a/regress/mdoc/Bl/secstart.in b/regress/mdoc/Bl/secstart.in
new file mode 100644
index 00000000..bd01e036
--- /dev/null
+++ b/regress/mdoc/Bl/secstart.in
@@ -0,0 +1,39 @@
+.Dd November 10, 2014
+.Dt BL-SECSTART 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-secstart
+.Nd nested lists at the beginning of sections
+.Sh DESCRIPTION
+.Ss item
+.Bl -item
+.It
+.Bl -item
+.It
+text
+.El
+.El
+.Ss dash
+.Bl -dash
+.It
+.Bl -dash
+.It
+text
+.El
+.El
+.Ss inset
+.Bl -inset
+.It outer
+.Bl -inset
+.It inner
+text
+.El
+.El
+.Ss tag
+.Bl -tag -width 4n
+.It outer tag
+.Bl -tag -width 4n
+.It inner tag
+text
+.El
+.El
diff --git a/regress/mdoc/Bl/secstart.out_ascii b/regress/mdoc/Bl/secstart.out_ascii
new file mode 100644
index 00000000..269c92ec
--- /dev/null
+++ b/regress/mdoc/Bl/secstart.out_ascii
@@ -0,0 +1,26 @@
+BL-SECSTART(1) General Commands Manual BL-SECSTART(1)
+
+NNAAMMEE
+ BBll--sseeccssttaarrtt - nested lists at the beginning of sections
+
+DDEESSCCRRIIPPTTIIOONN
+ iitteemm
+ text
+
+ ddaasshh
+ --
+
+ -- text
+
+ iinnsseett
+ outer
+
+ inner text
+
+ ttaagg
+ outer tag
+
+ inner tag
+ text
+
+OpenBSD November 10, 2014 OpenBSD
diff --git a/regress/mdoc/Bl/tag.in b/regress/mdoc/Bl/tag.in
new file mode 100644
index 00000000..49cc903e
--- /dev/null
+++ b/regress/mdoc/Bl/tag.in
@@ -0,0 +1,154 @@
+.Dd September 21, 2015
+.Dt BL-TAG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-tag
+.Nd tagged lists
+.Sh DESCRIPTION
+.Bl -tag -width -4n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width -3n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width -2n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width -1n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width 0n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width 1n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width 2n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width 3n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width 4n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width 5n
+.It tag
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width 5n
+.It four
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width 5n
+.It quint
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width 5n
+.It indent
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width 5n
+.It septime
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width 5n
+.It achtacht
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width 5n
+.It neun neun
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width 5n
+.It zehn_ zehn
+x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+.El
+.Bl -tag -width 5n
+.It This is a very long text contained in the tag, it is so long \
+that it overruns the line -
+and here comes the item body.
+.El
+.Bl -tag -width 100n
+.It hundred
+text text
+.El
+.Pp
+Trailing white space in the head:
+.Bl -tag -width 5n
+.It "a"
+none
+.It "a "
+one
+.It "a "
+two
+.It "a "
+three
+.It "a "
+four
+.It "a "
+five
+.It "a "
+six
+.It " "
+white space only
+.El
+.Pp
+Non-numeric width specification:
+.Bl -tag -width xxx
+.It tag
+text
+.El
+.Bl -tag -width xxxxxxxxxx
+.It tag
+text
+.El
+.Pp
+Scaling units other than n:
+.Bl -tag -width 4m
+.It tag
+text
+.El
+.Bl -tag -width 800M
+.It tag
+text
+.El
+.Bl -tag -width 14
+.It tag
+text
+.El
+.Pp
+Default width:
+.Bl -tag
+.It tag
+text
+.It long tag
+long text
+.It Sy tag Em with markup
+text
+.El
+.Pp
+Indented list:
+.Bl -tag -offset 6n -width xxx
+.It one
+first text
+.It two
+second text
+.El
+.Pp
+Embedded paragraph:
+.Bl -tag -width Ds
+.It tag
+first paragraph
+.Pp
+second paragraph
+.El
diff --git a/regress/mdoc/Bl/tag.out_ascii b/regress/mdoc/Bl/tag.out_ascii
new file mode 100644
index 00000000..0912d4fa
--- /dev/null
+++ b/regress/mdoc/Bl/tag.out_ascii
@@ -0,0 +1,134 @@
+BL-TAG(1) General Commands Manual BL-TAG(1)
+
+NNAAMMEE
+ BBll--ttaagg - tagged lists
+
+DDEESSCCRRIIPPTTIIOONN
+ tag
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x
+
+ tag
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x
+
+ tag
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x
+
+ tag
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ tag
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x
+
+ tag
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ tag
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x
+
+ tag x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+
+ tag x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x
+
+ tag x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ four x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ quint x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ indent
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ septime
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ achtacht
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ neun neun
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ zehn_ zehn
+ x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
+ x x x x x x x
+
+ This is a very long text contained in the tag, it is so long that it
+ overruns the line -
+ and here comes the item body.
+
+ hundred text
+ text
+
+ Trailing white space in the head:
+
+ a none
+
+ a one
+
+ a two
+
+ a three
+
+ a four
+
+ a
+ five
+
+ a
+ six
+
+ white space only
+
+ Non-numeric width specification:
+
+ tag text
+
+ tag text
+
+ Scaling units other than n:
+
+ tag text
+
+ tag text
+
+ tag
+ text
+
+ Default width:
+
+ tag text
+
+ long tag
+ long text
+
+ ttaagg _w_i_t_h _m_a_r_k_u_p
+ text
+
+ Indented list:
+
+ one first text
+
+ two second text
+
+ Embedded paragraph:
+
+ tag first paragraph
+
+ second paragraph
+
+OpenBSD September 21, 2015 OpenBSD
diff --git a/regress/mdoc/Bl/tag.out_lint b/regress/mdoc/Bl/tag.out_lint
new file mode 100644
index 00000000..01a4a492
--- /dev/null
+++ b/regress/mdoc/Bl/tag.out_lint
@@ -0,0 +1 @@
+mandoc: tag.in:131:2: WARNING: missing -width in -tag list, using 6n: Bl -tag
diff --git a/regress/mdoc/Bl/unclosed.in b/regress/mdoc/Bl/unclosed.in
new file mode 100644
index 00000000..2d35a480
--- /dev/null
+++ b/regress/mdoc/Bl/unclosed.in
@@ -0,0 +1,12 @@
+.Dd January 9, 2011
+.Dt BL-UNCLOSED 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-unclosed
+.Nd list lacking an end macro
+.Sh DESCRIPTION
+.Bl -item
+.It
+item
+.Sh SEE ALSO
+.Xr mdoc 7
diff --git a/regress/mdoc/Bl/unclosed.out_ascii b/regress/mdoc/Bl/unclosed.out_ascii
new file mode 100644
index 00000000..3a350004
--- /dev/null
+++ b/regress/mdoc/Bl/unclosed.out_ascii
@@ -0,0 +1,12 @@
+BL-UNCLOSED(1) General Commands Manual BL-UNCLOSED(1)
+
+NNAAMMEE
+ BBll--uunncclloosseedd - list lacking an end macro
+
+DDEESSCCRRIIPPTTIIOONN
+ item
+
+SSEEEE AALLSSOO
+ mdoc(7)
+
+OpenBSD January 9, 2011 OpenBSD
diff --git a/regress/mdoc/Brq/Makefile b/regress/mdoc/Brq/Makefile
new file mode 100644
index 00000000..24f19edf
--- /dev/null
+++ b/regress/mdoc/Brq/Makefile
@@ -0,0 +1,5 @@
+# $OpenBSD: Makefile,v 1.1.1.1 2011/12/04 03:09:25 schwarze Exp $
+
+REGRESS_TARGETS=empty
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Brq/empty.in b/regress/mdoc/Brq/empty.in
new file mode 100644
index 00000000..323df074
--- /dev/null
+++ b/regress/mdoc/Brq/empty.in
@@ -0,0 +1,14 @@
+.Dd October 21, 2010
+.Dt BRQ-EMPTY 1
+.Os OpenBSD
+.Sh NAME
+.Nm Brq-empty
+.Nd empty implicit enclosure macros
+.Sh DESCRIPTION
+An empty
+.Brq
+and a full
+.Brq user@host
+quotation.
+And another
+.Bro full Brc one .
diff --git a/regress/mdoc/Brq/empty.out_ascii b/regress/mdoc/Brq/empty.out_ascii
new file mode 100644
index 00000000..bb59c247
--- /dev/null
+++ b/regress/mdoc/Brq/empty.out_ascii
@@ -0,0 +1,9 @@
+BRQ-EMPTY(1) General Commands Manual BRQ-EMPTY(1)
+
+NNAAMMEE
+ BBrrqq--eemmppttyy - empty implicit enclosure macros
+
+DDEESSCCRRIIPPTTIIOONN
+ An empty {} and a full {user@host} quotation. And another {full} one.
+
+OpenBSD October 21, 2010 OpenBSD
diff --git a/regress/mdoc/Bx/Makefile b/regress/mdoc/Bx/Makefile
new file mode 100644
index 00000000..b27441d0
--- /dev/null
+++ b/regress/mdoc/Bx/Makefile
@@ -0,0 +1,5 @@
+# $OpenBSD: Makefile,v 1.2 2011/11/17 16:28:45 schwarze Exp $
+
+REGRESS_TARGETS=args
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Bx/args.in b/regress/mdoc/Bx/args.in
new file mode 100644
index 00000000..32530959
--- /dev/null
+++ b/regress/mdoc/Bx/args.in
@@ -0,0 +1,26 @@
+.Dd January 30, 2011
+.Dt BX-ARGS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bx-args
+.Nd arguments to the BSD macro
+.Sh DESCRIPTION
+no arguments:
+.Bx
+.Pp
+one standard argument:
+.Bx 4.4
+.Pp
+one non-standard argument:
+.Bx nett
+.Pp
+one semi-standard argument:
+.Bx 4.1c
+.Pp
+two standard arguments:
+.Bx 4.3 reno
+.Pp
+more arguments:
+.Bx 4.3 tahoe and some additional words
+.Pp
+end of test document
diff --git a/regress/mdoc/Bx/args.out_ascii b/regress/mdoc/Bx/args.out_ascii
new file mode 100644
index 00000000..9f45970e
--- /dev/null
+++ b/regress/mdoc/Bx/args.out_ascii
@@ -0,0 +1,21 @@
+BX-ARGS(1) General Commands Manual BX-ARGS(1)
+
+NNAAMMEE
+ BBxx--aarrggss - arguments to the BSD macro
+
+DDEESSCCRRIIPPTTIIOONN
+ no arguments: BSD
+
+ one standard argument: 4.4BSD
+
+ one non-standard argument: nettBSD
+
+ one semi-standard argument: 4.1cBSD
+
+ two standard arguments: 4.3BSD-Reno
+
+ more arguments: 4.3BSD-Tahoe and some additional words
+
+ end of test document
+
+OpenBSD January 30, 2011 OpenBSD
diff --git a/regress/mdoc/Cd/Makefile b/regress/mdoc/Cd/Makefile
new file mode 100644
index 00000000..164e5964
--- /dev/null
+++ b/regress/mdoc/Cd/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.5 2014/07/02 20:18:42 schwarze Exp $
+
+REGRESS_TARGETS = noarg font eos
+LINT_TARGETS = noarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Cd/eos.in b/regress/mdoc/Cd/eos.in
new file mode 100644
index 00000000..9f83b8fc
--- /dev/null
+++ b/regress/mdoc/Cd/eos.in
@@ -0,0 +1,10 @@
+.Dd November 17, 2012
+.Dt CD-EOS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Cd-eos
+.Nd end of sentence handling after the configuration directive macro
+.Sh DESCRIPTION
+Do not use
+.Cd options INSECURE .
+It is insecure.
diff --git a/regress/mdoc/Cd/eos.out_ascii b/regress/mdoc/Cd/eos.out_ascii
new file mode 100644
index 00000000..4e0b1bea
--- /dev/null
+++ b/regress/mdoc/Cd/eos.out_ascii
@@ -0,0 +1,9 @@
+CD-EOS(1) General Commands Manual CD-EOS(1)
+
+NNAAMMEE
+ CCdd--eeooss - end of sentence handling after the configuration directive macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Do not use ooppttiioonnss IINNSSEECCUURREE. It is insecure.
+
+OpenBSD November 17, 2012 OpenBSD
diff --git a/regress/mdoc/Cd/font.in b/regress/mdoc/Cd/font.in
new file mode 100644
index 00000000..716794eb
--- /dev/null
+++ b/regress/mdoc/Cd/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt CD-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Cd-font
+.Nd changing fonts inside the configuration declaration macro
+.Sh DESCRIPTION
+normal text
+.Cd bold\\fIemphasis\\fPback
+trailing text
diff --git a/regress/mdoc/Cd/font.out_ascii b/regress/mdoc/Cd/font.out_ascii
new file mode 100644
index 00000000..8949462b
--- /dev/null
+++ b/regress/mdoc/Cd/font.out_ascii
@@ -0,0 +1,9 @@
+CD-FONT(1) General Commands Manual CD-FONT(1)
+
+NNAAMMEE
+ CCdd--ffoonntt - changing fonts inside the configuration declaration macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text bboolldd_e_m_p_h_a_s_i_sbbaacckk trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Cd/noarg.in b/regress/mdoc/Cd/noarg.in
new file mode 100644
index 00000000..7190ebea
--- /dev/null
+++ b/regress/mdoc/Cd/noarg.in
@@ -0,0 +1,12 @@
+.Dd January 19, 2011
+.Dt CD-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Cd-noarg
+.Nd kernel configuration directive without arguments
+.Sh DESCRIPTION
+with arguments:
+.Cd wd* at pciide?
+without arguments:
+.Cd
+end of test document
diff --git a/regress/mdoc/Cd/noarg.out_ascii b/regress/mdoc/Cd/noarg.out_ascii
new file mode 100644
index 00000000..eefae539
--- /dev/null
+++ b/regress/mdoc/Cd/noarg.out_ascii
@@ -0,0 +1,9 @@
+CD-NOARG(1) General Commands Manual CD-NOARG(1)
+
+NNAAMMEE
+ CCdd--nnooaarrgg - kernel configuration directive without arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ with arguments: wwdd** aatt ppcciiiiddee?? without arguments: end of test document
+
+OpenBSD January 19, 2011 OpenBSD
diff --git a/regress/mdoc/Cd/noarg.out_lint b/regress/mdoc/Cd/noarg.out_lint
new file mode 100644
index 00000000..41599d9b
--- /dev/null
+++ b/regress/mdoc/Cd/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:11:2: WARNING: skipping empty macro: Cd
diff --git a/regress/mdoc/Cm/Makefile b/regress/mdoc/Cm/Makefile
new file mode 100644
index 00000000..e674e756
--- /dev/null
+++ b/regress/mdoc/Cm/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.3 2014/07/02 20:18:42 schwarze Exp $
+
+REGRESS_TARGETS = basic font noarg
+LINT_TARGETS = noarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Cm/basic.in b/regress/mdoc/Cm/basic.in
new file mode 100644
index 00000000..2fba179c
--- /dev/null
+++ b/regress/mdoc/Cm/basic.in
@@ -0,0 +1,12 @@
+.Dd July 6, 2012
+.Dt CM-BASIC 1
+.Os OpenBSD
+.Sh NAME
+.Nm Cm-basic
+.Nd basic usage of the Cm macro
+.Sh DESCRIPTION
+end of line:
+.Nm mt Fl f Ar device Cm rewind
+.Pp
+middle of line:
+.Nm ps Fl o Cm pid , Ns Cm command
diff --git a/regress/mdoc/Cm/basic.out_ascii b/regress/mdoc/Cm/basic.out_ascii
new file mode 100644
index 00000000..98899c00
--- /dev/null
+++ b/regress/mdoc/Cm/basic.out_ascii
@@ -0,0 +1,11 @@
+CM-BASIC(1) General Commands Manual CM-BASIC(1)
+
+NNAAMMEE
+ CCmm--bbaassiicc - basic usage of the Cm macro
+
+DDEESSCCRRIIPPTTIIOONN
+ end of line: mmtt --ff _d_e_v_i_c_e rreewwiinndd
+
+ middle of line: ppss --oo ppiidd,ccoommmmaanndd
+
+OpenBSD July 6, 2012 OpenBSD
diff --git a/regress/mdoc/Cm/font.in b/regress/mdoc/Cm/font.in
new file mode 100644
index 00000000..db58f6dd
--- /dev/null
+++ b/regress/mdoc/Cm/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt CM-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Cm-font
+.Nd changing fonts inside the command modifier macro
+.Sh DESCRIPTION
+normal text
+.Cm bold\\fIemphasis\\fPback
+trailing text
diff --git a/regress/mdoc/Cm/font.out_ascii b/regress/mdoc/Cm/font.out_ascii
new file mode 100644
index 00000000..ae48e4b1
--- /dev/null
+++ b/regress/mdoc/Cm/font.out_ascii
@@ -0,0 +1,9 @@
+CM-FONT(1) General Commands Manual CM-FONT(1)
+
+NNAAMMEE
+ CCmm--ffoonntt - changing fonts inside the command modifier macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text bboolldd_e_m_p_h_a_s_i_sbbaacckk trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Cm/noarg.in b/regress/mdoc/Cm/noarg.in
new file mode 100644
index 00000000..750ce84c
--- /dev/null
+++ b/regress/mdoc/Cm/noarg.in
@@ -0,0 +1,12 @@
+.Dd July 2, 2014
+.Dt CM-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Cm-noarg
+.Nd command modifier macro without arguments
+.Sh DESCRIPTION
+end of line:
+.Nm mt Fl f Ar device Cm
+.Pp
+middle of line:
+.Nm ps Fl x Cm Fl o Cm command
diff --git a/regress/mdoc/Cm/noarg.out_ascii b/regress/mdoc/Cm/noarg.out_ascii
new file mode 100644
index 00000000..83186d1c
--- /dev/null
+++ b/regress/mdoc/Cm/noarg.out_ascii
@@ -0,0 +1,11 @@
+CM-NOARG(1) General Commands Manual CM-NOARG(1)
+
+NNAAMMEE
+ CCmm--nnooaarrgg - command modifier macro without arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ end of line: mmtt --ff _d_e_v_i_c_e
+
+ middle of line: ppss --xx --oo ccoommmmaanndd
+
+OpenBSD July 2, 2014 OpenBSD
diff --git a/regress/mdoc/Cm/noarg.out_lint b/regress/mdoc/Cm/noarg.out_lint
new file mode 100644
index 00000000..3a828e5a
--- /dev/null
+++ b/regress/mdoc/Cm/noarg.out_lint
@@ -0,0 +1,2 @@
+mandoc: noarg.in:9:23: WARNING: skipping empty macro: Cm
+mandoc: noarg.in:12:13: WARNING: skipping empty macro: Cm
diff --git a/regress/mdoc/D1/Makefile b/regress/mdoc/D1/Makefile
new file mode 100644
index 00000000..bed27d1b
--- /dev/null
+++ b/regress/mdoc/D1/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.2 2015/02/06 02:04:35 schwarze Exp $
+
+REGRESS_TARGETS = spacing
+LINT_TARGETS = spacing
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/D1/spacing.in b/regress/mdoc/D1/spacing.in
new file mode 100644
index 00000000..3303dccc
--- /dev/null
+++ b/regress/mdoc/D1/spacing.in
@@ -0,0 +1,12 @@
+.Dd February 5, 2015
+.Dt D1-SPACING 1
+.Os OpenBSD
+.Sh NAME
+.Nm D1-spacing
+.Nd spacing in and around one-line displays
+.Sh DESCRIPTION
+preceding text
+.D1 spacing in and around one-line displays
+empty display:
+.D1
+following text
diff --git a/regress/mdoc/D1/spacing.out_ascii b/regress/mdoc/D1/spacing.out_ascii
new file mode 100644
index 00000000..becef1b8
--- /dev/null
+++ b/regress/mdoc/D1/spacing.out_ascii
@@ -0,0 +1,12 @@
+D1-SPACING(1) General Commands Manual D1-SPACING(1)
+
+NNAAMMEE
+ DD11--ssppaacciinngg - spacing in and around one-line displays
+
+DDEESSCCRRIIPPTTIIOONN
+ preceding text
+ spacing in and around one-line displays
+ empty display:
+ following text
+
+OpenBSD February 5, 2015 OpenBSD
diff --git a/regress/mdoc/D1/spacing.out_lint b/regress/mdoc/D1/spacing.out_lint
new file mode 100644
index 00000000..08177734
--- /dev/null
+++ b/regress/mdoc/D1/spacing.out_lint
@@ -0,0 +1 @@
+mandoc: spacing.in:11:2: WARNING: empty block: D1
diff --git a/regress/mdoc/Db/Makefile b/regress/mdoc/Db/Makefile
new file mode 100644
index 00000000..c37822ff
--- /dev/null
+++ b/regress/mdoc/Db/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.1 2014/11/27 16:20:27 schwarze Exp $
+
+REGRESS_TARGETS = args
+LINT_TARGETS = args
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Db/args.in b/regress/mdoc/Db/args.in
new file mode 100644
index 00000000..b40d7b0c
--- /dev/null
+++ b/regress/mdoc/Db/args.in
@@ -0,0 +1,14 @@
+.Dd November 27, 2014
+.Dt DB-ARGS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Db-args
+.Nd obsolete debug macro
+.Sh DESCRIPTION
+no args
+.Db
+one arg
+.Db on
+two args
+.Db foo bar
+end of text
diff --git a/regress/mdoc/Db/args.out_ascii b/regress/mdoc/Db/args.out_ascii
new file mode 100644
index 00000000..909b91ba
--- /dev/null
+++ b/regress/mdoc/Db/args.out_ascii
@@ -0,0 +1,9 @@
+DB-ARGS(1) General Commands Manual DB-ARGS(1)
+
+NNAAMMEE
+ DDbb--aarrggss - obsolete debug macro
+
+DDEESSCCRRIIPPTTIIOONN
+ no args one arg two args end of text
+
+OpenBSD November 27, 2014 OpenBSD
diff --git a/regress/mdoc/Db/args.out_lint b/regress/mdoc/Db/args.out_lint
new file mode 100644
index 00000000..e0eb44ae
--- /dev/null
+++ b/regress/mdoc/Db/args.out_lint
@@ -0,0 +1,3 @@
+mandoc: args.in:9:2: WARNING: obsolete macro: Db
+mandoc: args.in:11:2: WARNING: obsolete macro: Db
+mandoc: args.in:13:2: WARNING: obsolete macro: Db
diff --git a/regress/mdoc/Dd/Makefile b/regress/mdoc/Dd/Makefile
new file mode 100644
index 00000000..e50e9b61
--- /dev/null
+++ b/regress/mdoc/Dd/Makefile
@@ -0,0 +1,19 @@
+# $OpenBSD: Makefile,v 1.2 2014/11/21 01:52:45 schwarze Exp $
+
+REGRESS_TARGETS = badarg dupe late long manarg noarg order
+LINT_TARGETS = badarg dupe late long manarg noarg order
+
+# If groff finds exactly three arguments, it assumes they are month,
+# day and year without further checking. If there are no arguments,
+# groff uses the string "Epoch". Otherwise, it silently falls back
+# to today's date.
+# That is not at all sane behaviour, we are not going to imitate it.
+
+SKIP_GROFF = badarg long manarg noarg
+SKIP_ASCII = noarg
+
+# Autodetection fails for late .Dd, so specify -mdoc explicitly.
+
+MOPTS += -mdoc
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Dd/badarg.in b/regress/mdoc/Dd/badarg.in
new file mode 100644
index 00000000..9891fc4e
--- /dev/null
+++ b/regress/mdoc/Dd/badarg.in
@@ -0,0 +1,8 @@
+.Dd "bad date"
+.Dt DD-BADARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Dd-badarg
+.Nd date cannot be parsed
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Dd/badarg.out_ascii b/regress/mdoc/Dd/badarg.out_ascii
new file mode 100644
index 00000000..a64abacc
--- /dev/null
+++ b/regress/mdoc/Dd/badarg.out_ascii
@@ -0,0 +1,9 @@
+DD-BADARG(1) General Commands Manual DD-BADARG(1)
+
+NNAAMMEE
+ DDdd--bbaaddaarrgg - date cannot be parsed
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+OpenBSD bad date OpenBSD
diff --git a/regress/mdoc/Dd/badarg.out_lint b/regress/mdoc/Dd/badarg.out_lint
new file mode 100644
index 00000000..0ce4632e
--- /dev/null
+++ b/regress/mdoc/Dd/badarg.out_lint
@@ -0,0 +1 @@
+mandoc: badarg.in:1:2: WARNING: cannot parse date, using it verbatim: bad date
diff --git a/regress/mdoc/Dd/dupe.in b/regress/mdoc/Dd/dupe.in
new file mode 100644
index 00000000..d1a7f827
--- /dev/null
+++ b/regress/mdoc/Dd/dupe.in
@@ -0,0 +1,11 @@
+.Dd August 1, 2014
+.Dt DD-DUPE 1
+.Os OpenBSD
+.Dd August 3, 2014
+.Sh NAME
+.Nm Dd-dupe
+.Nd duplicate date macro
+.Sh DESCRIPTION
+initial text
+.Dd August 5, 2014
+final text
diff --git a/regress/mdoc/Dd/dupe.out_ascii b/regress/mdoc/Dd/dupe.out_ascii
new file mode 100644
index 00000000..6cc220d6
--- /dev/null
+++ b/regress/mdoc/Dd/dupe.out_ascii
@@ -0,0 +1,9 @@
+DD-DUPE(1) General Commands Manual DD-DUPE(1)
+
+NNAAMMEE
+ DDdd--dduuppee - duplicate date macro
+
+DDEESSCCRRIIPPTTIIOONN
+ initial text final text
+
+OpenBSD August 5, 2014 OpenBSD
diff --git a/regress/mdoc/Dd/dupe.out_lint b/regress/mdoc/Dd/dupe.out_lint
new file mode 100644
index 00000000..8107e867
--- /dev/null
+++ b/regress/mdoc/Dd/dupe.out_lint
@@ -0,0 +1,2 @@
+mandoc: dupe.in:4:2: WARNING: duplicate prologue macro: Dd
+mandoc: dupe.in:10:2: WARNING: duplicate prologue macro: Dd
diff --git a/regress/mdoc/Dd/late.in b/regress/mdoc/Dd/late.in
new file mode 100644
index 00000000..0a8436fb
--- /dev/null
+++ b/regress/mdoc/Dd/late.in
@@ -0,0 +1,9 @@
+.Dt DD-LATE 1
+.Os OpenBSD
+.Sh NAME
+.Nm Dd-late
+.Nd late date macro
+.Sh DESCRIPTION
+initial text
+.Dd August 5, 2014
+final text
diff --git a/regress/mdoc/Dd/late.out_ascii b/regress/mdoc/Dd/late.out_ascii
new file mode 100644
index 00000000..381b4ef3
--- /dev/null
+++ b/regress/mdoc/Dd/late.out_ascii
@@ -0,0 +1,9 @@
+DD-LATE(1) General Commands Manual DD-LATE(1)
+
+NNAAMMEE
+ DDdd--llaattee - late date macro
+
+DDEESSCCRRIIPPTTIIOONN
+ initial text final text
+
+OpenBSD August 5, 2014 OpenBSD
diff --git a/regress/mdoc/Dd/late.out_lint b/regress/mdoc/Dd/late.out_lint
new file mode 100644
index 00000000..07374131
--- /dev/null
+++ b/regress/mdoc/Dd/late.out_lint
@@ -0,0 +1 @@
+mandoc: late.in:8:2: WARNING: late prologue macro: Dd
diff --git a/regress/mdoc/Dd/long.in b/regress/mdoc/Dd/long.in
new file mode 100644
index 00000000..2538f984
--- /dev/null
+++ b/regress/mdoc/Dd/long.in
@@ -0,0 +1,8 @@
+.Dd 1234567890123456789012345678901234567890123456789012345678901234567890123456789
+.Dt DD-LONG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Dd-long
+.Nd long date string
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Dd/long.out_ascii b/regress/mdoc/Dd/long.out_ascii
new file mode 100644
index 00000000..69811af2
--- /dev/null
+++ b/regress/mdoc/Dd/long.out_ascii
@@ -0,0 +1,11 @@
+DD-LONG(1) General Commands Manual DD-LONG(1)
+
+NNAAMMEE
+ DDdd--lloonngg - long date string
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+OpenBSD
+1234567890123456789012345678901234567890123456789012345678901234567890123456789
+ OpenBSD
diff --git a/regress/mdoc/Dd/long.out_lint b/regress/mdoc/Dd/long.out_lint
new file mode 100644
index 00000000..d74ed9e2
--- /dev/null
+++ b/regress/mdoc/Dd/long.out_lint
@@ -0,0 +1 @@
+mandoc: long.in:1:2: WARNING: cannot parse date, using it verbatim: 1234567890123456789012345678901234567890123456789012345678901234567890123456789
diff --git a/regress/mdoc/Dd/manarg.in b/regress/mdoc/Dd/manarg.in
new file mode 100644
index 00000000..434a7af8
--- /dev/null
+++ b/regress/mdoc/Dd/manarg.in
@@ -0,0 +1,8 @@
+.Dd 2014-08-07
+.Dt DD-MANARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Dd-manarg
+.Nd date in traditional man format
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Dd/manarg.out_ascii b/regress/mdoc/Dd/manarg.out_ascii
new file mode 100644
index 00000000..8c4b800f
--- /dev/null
+++ b/regress/mdoc/Dd/manarg.out_ascii
@@ -0,0 +1,9 @@
+DD-MANARG(1) General Commands Manual DD-MANARG(1)
+
+NNAAMMEE
+ DDdd--mmaannaarrgg - date in traditional man format
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+OpenBSD 2014-08-07 OpenBSD
diff --git a/regress/mdoc/Dd/manarg.out_lint b/regress/mdoc/Dd/manarg.out_lint
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/regress/mdoc/Dd/manarg.out_lint
diff --git a/regress/mdoc/Dd/noarg.in b/regress/mdoc/Dd/noarg.in
new file mode 100644
index 00000000..fd904985
--- /dev/null
+++ b/regress/mdoc/Dd/noarg.in
@@ -0,0 +1,8 @@
+.Dd
+.Dt DD-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Dd-noarg
+.Nd date macro without an argument
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Dd/noarg.out_lint b/regress/mdoc/Dd/noarg.out_lint
new file mode 100644
index 00000000..f2816336
--- /dev/null
+++ b/regress/mdoc/Dd/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:1:2: WARNING: missing date, using today's date
diff --git a/regress/mdoc/Dd/order.in b/regress/mdoc/Dd/order.in
new file mode 100644
index 00000000..e3872cbb
--- /dev/null
+++ b/regress/mdoc/Dd/order.in
@@ -0,0 +1,8 @@
+.Dt DD-ORDER 1
+.Dd August 5, 2014
+.Os OpenBSD
+.Sh NAME
+.Nm Dd-order
+.Nd date macro after title macro
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Dd/order.out_ascii b/regress/mdoc/Dd/order.out_ascii
new file mode 100644
index 00000000..64c7925d
--- /dev/null
+++ b/regress/mdoc/Dd/order.out_ascii
@@ -0,0 +1,9 @@
+DD-ORDER(1) General Commands Manual DD-ORDER(1)
+
+NNAAMMEE
+ DDdd--oorrddeerr - date macro after title macro
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+OpenBSD August 5, 2014 OpenBSD
diff --git a/regress/mdoc/Dd/order.out_lint b/regress/mdoc/Dd/order.out_lint
new file mode 100644
index 00000000..92554a18
--- /dev/null
+++ b/regress/mdoc/Dd/order.out_lint
@@ -0,0 +1 @@
+mandoc: order.in:2:2: WARNING: prologue macros out of order: Dd after Dt
diff --git a/regress/mdoc/Dl/Makefile b/regress/mdoc/Dl/Makefile
new file mode 100644
index 00000000..bed27d1b
--- /dev/null
+++ b/regress/mdoc/Dl/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.2 2015/02/06 02:04:35 schwarze Exp $
+
+REGRESS_TARGETS = spacing
+LINT_TARGETS = spacing
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Dl/spacing.in b/regress/mdoc/Dl/spacing.in
new file mode 100644
index 00000000..cc683872
--- /dev/null
+++ b/regress/mdoc/Dl/spacing.in
@@ -0,0 +1,12 @@
+.Dd February 5, 2015
+.Dt DL-SPACING 1
+.Os OpenBSD
+.Sh NAME
+.Nm Dl-spacing
+.Nd spacing in and around one-line literal displays
+.Sh DESCRIPTION
+preceding text
+.Dl spacing in and around one-line literal displays
+empty display:
+.Dl
+following text
diff --git a/regress/mdoc/Dl/spacing.out_ascii b/regress/mdoc/Dl/spacing.out_ascii
new file mode 100644
index 00000000..db5958da
--- /dev/null
+++ b/regress/mdoc/Dl/spacing.out_ascii
@@ -0,0 +1,12 @@
+DL-SPACING(1) General Commands Manual DL-SPACING(1)
+
+NNAAMMEE
+ DDll--ssppaacciinngg - spacing in and around one-line literal displays
+
+DDEESSCCRRIIPPTTIIOONN
+ preceding text
+ spacing in and around one-line literal displays
+ empty display:
+ following text
+
+OpenBSD February 5, 2015 OpenBSD
diff --git a/regress/mdoc/Dl/spacing.out_lint b/regress/mdoc/Dl/spacing.out_lint
new file mode 100644
index 00000000..7ee4919d
--- /dev/null
+++ b/regress/mdoc/Dl/spacing.out_lint
@@ -0,0 +1 @@
+mandoc: spacing.in:11:2: WARNING: empty block: Dl
diff --git a/regress/mdoc/Dq/Makefile b/regress/mdoc/Dq/Makefile
new file mode 100644
index 00000000..24f19edf
--- /dev/null
+++ b/regress/mdoc/Dq/Makefile
@@ -0,0 +1,5 @@
+# $OpenBSD: Makefile,v 1.1.1.1 2011/12/04 03:09:25 schwarze Exp $
+
+REGRESS_TARGETS=empty
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Dq/empty.in b/regress/mdoc/Dq/empty.in
new file mode 100644
index 00000000..6e228898
--- /dev/null
+++ b/regress/mdoc/Dq/empty.in
@@ -0,0 +1,14 @@
+.Dd October 21, 2010
+.Dt DQ-EMPTY 1
+.Os OpenBSD
+.Sh NAME
+.Nm Dq-empty
+.Nd empty implicit enclosure macros
+.Sh DESCRIPTION
+An empty
+.Dq
+and a full
+.Dq user@host
+quotation.
+And another
+.Do full Dc one .
diff --git a/regress/mdoc/Dq/empty.out_ascii b/regress/mdoc/Dq/empty.out_ascii
new file mode 100644
index 00000000..aaa69621
--- /dev/null
+++ b/regress/mdoc/Dq/empty.out_ascii
@@ -0,0 +1,10 @@
+DQ-EMPTY(1) General Commands Manual DQ-EMPTY(1)
+
+NNAAMMEE
+ DDqq--eemmppttyy - empty implicit enclosure macros
+
+DDEESSCCRRIIPPTTIIOONN
+ An empty ``'' and a full ``user@host'' quotation. And another ``full''
+ one.
+
+OpenBSD October 21, 2010 OpenBSD
diff --git a/regress/mdoc/Dt/Makefile b/regress/mdoc/Dt/Makefile
new file mode 100644
index 00000000..b0d0b0a8
--- /dev/null
+++ b/regress/mdoc/Dt/Makefile
@@ -0,0 +1,20 @@
+# $OpenBSD: Makefile,v 1.6 2015/02/16 19:02:32 schwarze Exp $
+
+REGRESS_TARGETS = badsec case dupe fourargs late
+REGRESS_TARGETS += missing noarg nobody nosec order
+LINT_TARGETS = badsec case dupe fourargs late
+LINT_TARGETS += missing noarg nobody nosec order
+
+SKIP_GROFF = badsec nobody
+SKIP_ASCII = badsec
+
+# When the section is missing from the man(7) .TH title line,
+# empty parentheses are shown in the page header.
+# When the section is missing from the mdoc(7) .Dt title line,
+# no empty parentheses are shown in the page header.
+# Hence, there is no bug-compatible translation from mdoc(7)
+# to man(7) for this case. That's not mandoc(1)'s fault.
+
+SKIP_TMAN = fourargs late missing noarg nosec
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Dt/badsec.in b/regress/mdoc/Dt/badsec.in
new file mode 100644
index 00000000..47af859f
--- /dev/null
+++ b/regress/mdoc/Dt/badsec.in
@@ -0,0 +1,8 @@
+.Dd June 13, 2014
+.Dt DT-BADSEC foo
+.Os OpenBSD
+.Sh NAME
+.Nm Dt-badsec
+.Nd unknown manual section
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Dt/badsec.out_lint b/regress/mdoc/Dt/badsec.out_lint
new file mode 100644
index 00000000..b78a0333
--- /dev/null
+++ b/regress/mdoc/Dt/badsec.out_lint
@@ -0,0 +1 @@
+mandoc: badsec.in:2:15: WARNING: unknown manual section: Dt ... foo
diff --git a/regress/mdoc/Dt/case.in b/regress/mdoc/Dt/case.in
new file mode 100644
index 00000000..88b2df3b
--- /dev/null
+++ b/regress/mdoc/Dt/case.in
@@ -0,0 +1,8 @@
+.Dd June 13, 2014
+.Dt Dt-case 1
+.Os OpenBSD
+.Sh NAME
+.Nm Dt-case
+.Nd document title is not all caps
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Dt/case.out_ascii b/regress/mdoc/Dt/case.out_ascii
new file mode 100644
index 00000000..0eb21827
--- /dev/null
+++ b/regress/mdoc/Dt/case.out_ascii
@@ -0,0 +1,9 @@
+Dt-case(1) General Commands Manual Dt-case(1)
+
+NNAAMMEE
+ DDtt--ccaassee - document title is not all caps
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+OpenBSD June 13, 2014 OpenBSD
diff --git a/regress/mdoc/Dt/case.out_lint b/regress/mdoc/Dt/case.out_lint
new file mode 100644
index 00000000..cf85b606
--- /dev/null
+++ b/regress/mdoc/Dt/case.out_lint
@@ -0,0 +1 @@
+mandoc: case.in:2:6: WARNING: lower case character in document title: Dt Dt-case
diff --git a/regress/mdoc/Dt/dupe.in b/regress/mdoc/Dt/dupe.in
new file mode 100644
index 00000000..c46e3d77
--- /dev/null
+++ b/regress/mdoc/Dt/dupe.in
@@ -0,0 +1,11 @@
+.Dd August 5, 2014
+.Dt DT-FIRST 2 first_arch
+.Os OpenBSD
+.Dt DT-DUPE 1
+.Sh NAME
+.Nm Dt-order
+.Nd duplicate prologue macro
+.Sh DESCRIPTION
+inital text
+.Dt DT-LAST 3 last_arch
+final text
diff --git a/regress/mdoc/Dt/dupe.out_ascii b/regress/mdoc/Dt/dupe.out_ascii
new file mode 100644
index 00000000..0d2ba0e6
--- /dev/null
+++ b/regress/mdoc/Dt/dupe.out_ascii
@@ -0,0 +1,9 @@
+DT-DUPE(1) General Commands Manual DT-DUPE(1)
+
+NNAAMMEE
+ DDtt--oorrddeerr - duplicate prologue macro
+
+DDEESSCCRRIIPPTTIIOONN
+ inital text final text
+
+OpenBSD August 5, 2014 OpenBSD
diff --git a/regress/mdoc/Dt/dupe.out_lint b/regress/mdoc/Dt/dupe.out_lint
new file mode 100644
index 00000000..b355bed0
--- /dev/null
+++ b/regress/mdoc/Dt/dupe.out_lint
@@ -0,0 +1,2 @@
+mandoc: dupe.in:4:2: WARNING: duplicate prologue macro: Dt
+mandoc: dupe.in:10:2: WARNING: skipping late title macro: Dt
diff --git a/regress/mdoc/Dt/fourargs.in b/regress/mdoc/Dt/fourargs.in
new file mode 100644
index 00000000..9b4293ae
--- /dev/null
+++ b/regress/mdoc/Dt/fourargs.in
@@ -0,0 +1,8 @@
+.Dd February 16, 2015
+.Dt DT-FOURARGS 1 amd64 bogus
+.Os OpenBSD
+.Sh NAME
+.Nm Dt-fourargs
+.Nd too many arguments after the \&Dt macro
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Dt/fourargs.out_ascii b/regress/mdoc/Dt/fourargs.out_ascii
new file mode 100644
index 00000000..9fc075e1
--- /dev/null
+++ b/regress/mdoc/Dt/fourargs.out_ascii
@@ -0,0 +1,9 @@
+DT-FOURARGS(1) General Commands Manual (amd64) DT-FOURARGS(1)
+
+NNAAMMEE
+ DDtt--ffoouurraarrggss - too many arguments after the Dt macro
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+OpenBSD February 16, 2015 OpenBSD
diff --git a/regress/mdoc/Dt/fourargs.out_lint b/regress/mdoc/Dt/fourargs.out_lint
new file mode 100644
index 00000000..0d4d1494
--- /dev/null
+++ b/regress/mdoc/Dt/fourargs.out_lint
@@ -0,0 +1 @@
+mandoc: fourargs.in:2:25: ERROR: skipping excess arguments: Dt ... bogus
diff --git a/regress/mdoc/Dt/late.in b/regress/mdoc/Dt/late.in
new file mode 100644
index 00000000..2043eebe
--- /dev/null
+++ b/regress/mdoc/Dt/late.in
@@ -0,0 +1,9 @@
+.Dd August 5, 2014
+.Os OpenBSD
+.Sh NAME
+.Nm Dt-late
+.Nd late title macro
+.Sh DESCRIPTION
+inital text
+.Dt DT-LATE 1
+final text
diff --git a/regress/mdoc/Dt/late.out_ascii b/regress/mdoc/Dt/late.out_ascii
new file mode 100644
index 00000000..c1830f2b
--- /dev/null
+++ b/regress/mdoc/Dt/late.out_ascii
@@ -0,0 +1,9 @@
+UNTITLED LOCAL UNTITLED
+
+NNAAMMEE
+ DDtt--llaattee - late title macro
+
+DDEESSCCRRIIPPTTIIOONN
+ inital text final text
+
+OpenBSD August 5, 2014 OpenBSD
diff --git a/regress/mdoc/Dt/late.out_lint b/regress/mdoc/Dt/late.out_lint
new file mode 100644
index 00000000..4228c6ae
--- /dev/null
+++ b/regress/mdoc/Dt/late.out_lint
@@ -0,0 +1,2 @@
+mandoc: late.in:8:2: WARNING: skipping late title macro: Dt
+mandoc: late.in: WARNING: missing manual title, using UNTITLED: EOF
diff --git a/regress/mdoc/Dt/missing.in b/regress/mdoc/Dt/missing.in
new file mode 100644
index 00000000..997eab63
--- /dev/null
+++ b/regress/mdoc/Dt/missing.in
@@ -0,0 +1,7 @@
+.Dd August 5, 2014
+.Os OpenBSD
+.Sh NAME
+.Nm Dt-missing
+.Nd no title macro at all
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Dt/missing.out_ascii b/regress/mdoc/Dt/missing.out_ascii
new file mode 100644
index 00000000..b2dd22a3
--- /dev/null
+++ b/regress/mdoc/Dt/missing.out_ascii
@@ -0,0 +1,9 @@
+UNTITLED LOCAL UNTITLED
+
+NNAAMMEE
+ DDtt--mmiissssiinngg - no title macro at all
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+OpenBSD August 5, 2014 OpenBSD
diff --git a/regress/mdoc/Dt/missing.out_lint b/regress/mdoc/Dt/missing.out_lint
new file mode 100644
index 00000000..283a60d5
--- /dev/null
+++ b/regress/mdoc/Dt/missing.out_lint
@@ -0,0 +1 @@
+mandoc: missing.in: WARNING: missing manual title, using UNTITLED: EOF
diff --git a/regress/mdoc/Dt/noarg.in b/regress/mdoc/Dt/noarg.in
new file mode 100644
index 00000000..9fddfc6b
--- /dev/null
+++ b/regress/mdoc/Dt/noarg.in
@@ -0,0 +1,8 @@
+.Dd August 5, 2014
+.Dt
+.Os OpenBSD
+.Sh NAME
+.Nm Dt-noarg
+.Nd title macro without arguments
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Dt/noarg.out_ascii b/regress/mdoc/Dt/noarg.out_ascii
new file mode 100644
index 00000000..bf6b7ed2
--- /dev/null
+++ b/regress/mdoc/Dt/noarg.out_ascii
@@ -0,0 +1,9 @@
+UNTITLED LOCAL UNTITLED
+
+NNAAMMEE
+ DDtt--nnooaarrgg - title macro without arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+OpenBSD August 5, 2014 OpenBSD
diff --git a/regress/mdoc/Dt/noarg.out_lint b/regress/mdoc/Dt/noarg.out_lint
new file mode 100644
index 00000000..b1fafbe4
--- /dev/null
+++ b/regress/mdoc/Dt/noarg.out_lint
@@ -0,0 +1,2 @@
+mandoc: noarg.in:2:2: WARNING: missing manual title, using UNTITLED: Dt
+mandoc: noarg.in:2:2: WARNING: missing manual section, using "": Dt UNTITLED
diff --git a/regress/mdoc/Dt/nobody.in b/regress/mdoc/Dt/nobody.in
new file mode 100644
index 00000000..cc184f9c
--- /dev/null
+++ b/regress/mdoc/Dt/nobody.in
@@ -0,0 +1,3 @@
+.Dd June 20, 2014
+.Dt DT-NOBODY 1
+.Os OpenBSD
diff --git a/regress/mdoc/Dt/nobody.out_ascii b/regress/mdoc/Dt/nobody.out_ascii
new file mode 100644
index 00000000..1de2b81a
--- /dev/null
+++ b/regress/mdoc/Dt/nobody.out_ascii
@@ -0,0 +1,3 @@
+DT-NOBODY(1) General Commands Manual DT-NOBODY(1)
+
+OpenBSD June 20, 2014 OpenBSD
diff --git a/regress/mdoc/Dt/nobody.out_lint b/regress/mdoc/Dt/nobody.out_lint
new file mode 100644
index 00000000..f5439fcd
--- /dev/null
+++ b/regress/mdoc/Dt/nobody.out_lint
@@ -0,0 +1 @@
+mandoc: nobody.in: WARNING: no document body
diff --git a/regress/mdoc/Dt/nosec.in b/regress/mdoc/Dt/nosec.in
new file mode 100644
index 00000000..6873c46b
--- /dev/null
+++ b/regress/mdoc/Dt/nosec.in
@@ -0,0 +1,8 @@
+.Dd August 5, 2014
+.Dt DT-NOSEC
+.Os OpenBSD
+.Sh NAME
+.Nm Dt-nosec
+.Nd title macro without manual section
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Dt/nosec.out_ascii b/regress/mdoc/Dt/nosec.out_ascii
new file mode 100644
index 00000000..028db82e
--- /dev/null
+++ b/regress/mdoc/Dt/nosec.out_ascii
@@ -0,0 +1,9 @@
+DT-NOSEC LOCAL DT-NOSEC
+
+NNAAMMEE
+ DDtt--nnoosseecc - title macro without manual section
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+OpenBSD August 5, 2014 OpenBSD
diff --git a/regress/mdoc/Dt/nosec.out_lint b/regress/mdoc/Dt/nosec.out_lint
new file mode 100644
index 00000000..bddda2d7
--- /dev/null
+++ b/regress/mdoc/Dt/nosec.out_lint
@@ -0,0 +1 @@
+mandoc: nosec.in:2:2: WARNING: missing manual section, using "": Dt DT-NOSEC
diff --git a/regress/mdoc/Dt/order.in b/regress/mdoc/Dt/order.in
new file mode 100644
index 00000000..04bbaa51
--- /dev/null
+++ b/regress/mdoc/Dt/order.in
@@ -0,0 +1,8 @@
+.Dd June 13, 2014
+.Os OpenBSD
+.Dt DT-ORDER 1
+.Sh NAME
+.Nm Dt-order
+.Nd prologue macros out of order
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Dt/order.out_ascii b/regress/mdoc/Dt/order.out_ascii
new file mode 100644
index 00000000..6524bcab
--- /dev/null
+++ b/regress/mdoc/Dt/order.out_ascii
@@ -0,0 +1,9 @@
+DT-ORDER(1) General Commands Manual DT-ORDER(1)
+
+NNAAMMEE
+ DDtt--oorrddeerr - prologue macros out of order
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+OpenBSD June 13, 2014 OpenBSD
diff --git a/regress/mdoc/Dt/order.out_lint b/regress/mdoc/Dt/order.out_lint
new file mode 100644
index 00000000..5700ef89
--- /dev/null
+++ b/regress/mdoc/Dt/order.out_lint
@@ -0,0 +1 @@
+mandoc: order.in:3:2: WARNING: prologue macros out of order: Dt after Os
diff --git a/regress/mdoc/Dv/Makefile b/regress/mdoc/Dv/Makefile
new file mode 100644
index 00000000..cfe3ad0b
--- /dev/null
+++ b/regress/mdoc/Dv/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.2 2014/07/02 20:18:42 schwarze Exp $
+
+REGRESS_TARGETS = font noarg
+LINT_TARGETS = noarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Dv/font.in b/regress/mdoc/Dv/font.in
new file mode 100644
index 00000000..8e3c5bcb
--- /dev/null
+++ b/regress/mdoc/Dv/font.in
@@ -0,0 +1,13 @@
+.Dd October 21, 2011
+.Dt DV-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Dv-font
+.Nd formatting of defined variables
+.Sh DESCRIPTION
+The
+.Dv BUFSIZ
+macro.
+.Pp
+And with
+.Dv some \\fIembedded\\fP string .
diff --git a/regress/mdoc/Dv/font.out_ascii b/regress/mdoc/Dv/font.out_ascii
new file mode 100644
index 00000000..88f0760d
--- /dev/null
+++ b/regress/mdoc/Dv/font.out_ascii
@@ -0,0 +1,11 @@
+DV-FONT(1) General Commands Manual DV-FONT(1)
+
+NNAAMMEE
+ DDvv--ffoonntt - formatting of defined variables
+
+DDEESSCCRRIIPPTTIIOONN
+ The BUFSIZ macro.
+
+ And with some _e_m_b_e_d_d_e_d string.
+
+OpenBSD October 21, 2011 OpenBSD
diff --git a/regress/mdoc/Dv/noarg.in b/regress/mdoc/Dv/noarg.in
new file mode 100644
index 00000000..86155b3a
--- /dev/null
+++ b/regress/mdoc/Dv/noarg.in
@@ -0,0 +1,12 @@
+.Dd July 2, 2014
+.Dt DV-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Dv-noarg
+.Nd defined variable macro without an argument
+.Sh DESCRIPTION
+with variable:
+.Dv NULL
+no variable:
+.Dv
+end of test document
diff --git a/regress/mdoc/Dv/noarg.out_ascii b/regress/mdoc/Dv/noarg.out_ascii
new file mode 100644
index 00000000..b40d6635
--- /dev/null
+++ b/regress/mdoc/Dv/noarg.out_ascii
@@ -0,0 +1,9 @@
+DV-NOARG(1) General Commands Manual DV-NOARG(1)
+
+NNAAMMEE
+ DDvv--nnooaarrgg - defined variable macro without an argument
+
+DDEESSCCRRIIPPTTIIOONN
+ with variable: NULL no variable: end of test document
+
+OpenBSD July 2, 2014 OpenBSD
diff --git a/regress/mdoc/Dv/noarg.out_lint b/regress/mdoc/Dv/noarg.out_lint
new file mode 100644
index 00000000..cac45101
--- /dev/null
+++ b/regress/mdoc/Dv/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:11:2: WARNING: skipping empty macro: Dv
diff --git a/regress/mdoc/Em/Makefile b/regress/mdoc/Em/Makefile
new file mode 100644
index 00000000..13de4337
--- /dev/null
+++ b/regress/mdoc/Em/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.3 2014/11/17 06:44:35 schwarze Exp $
+
+REGRESS_TARGETS = font noarg punct
+LINT_TARGETS = noarg punct
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Em/font.in b/regress/mdoc/Em/font.in
new file mode 100644
index 00000000..3e547d63
--- /dev/null
+++ b/regress/mdoc/Em/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt EM-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Em-font
+.Nd changing fonts inside the emphasis macro
+.Sh DESCRIPTION
+normal text
+.Em emphasis\\fBbold\\fPback
+trailing text
diff --git a/regress/mdoc/Em/font.out_ascii b/regress/mdoc/Em/font.out_ascii
new file mode 100644
index 00000000..f461c7ae
--- /dev/null
+++ b/regress/mdoc/Em/font.out_ascii
@@ -0,0 +1,9 @@
+EM-FONT(1) General Commands Manual EM-FONT(1)
+
+NNAAMMEE
+ EEmm--ffoonntt - changing fonts inside the emphasis macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text _e_m_p_h_a_s_i_sbboolldd_b_a_c_k trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Em/noarg.in b/regress/mdoc/Em/noarg.in
new file mode 100644
index 00000000..9096280a
--- /dev/null
+++ b/regress/mdoc/Em/noarg.in
@@ -0,0 +1,12 @@
+.Dd January 19, 2011
+.Dt EM-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Em-noarg
+.Nd emphasis macro without arguments
+.Sh DESCRIPTION
+with argument
+.Em arg
+no argument
+.Em
+end of test document
diff --git a/regress/mdoc/Em/noarg.out_ascii b/regress/mdoc/Em/noarg.out_ascii
new file mode 100644
index 00000000..2489797a
--- /dev/null
+++ b/regress/mdoc/Em/noarg.out_ascii
@@ -0,0 +1,9 @@
+EM-NOARG(1) General Commands Manual EM-NOARG(1)
+
+NNAAMMEE
+ EEmm--nnooaarrgg - emphasis macro without arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ with argument _a_r_g no argument end of test document
+
+OpenBSD January 19, 2011 OpenBSD
diff --git a/regress/mdoc/Em/noarg.out_lint b/regress/mdoc/Em/noarg.out_lint
new file mode 100644
index 00000000..dfc13809
--- /dev/null
+++ b/regress/mdoc/Em/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:11:2: WARNING: skipping empty macro: Em
diff --git a/regress/mdoc/Em/punct.in b/regress/mdoc/Em/punct.in
new file mode 100644
index 00000000..b49ca505
--- /dev/null
+++ b/regress/mdoc/Em/punct.in
@@ -0,0 +1,82 @@
+.Dd November 17, 2014
+.Dt EM-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Em-punct
+.Nd punctuation following an emphasis macro
+.Sh DESCRIPTION
+Leading punctuation:
+.Em ( b
+.Em [ b
+.Em | b
+.Em . b
+.Em , b
+.Em ; b
+.Em : b
+.Em ? b
+.Em ! b
+.Em ) b
+.Em ] b
+.Pp
+Trailing punctuation:
+.Em a (
+.Em a [
+.Em a |
+.Em a .
+.Em a ,
+.Em a ;
+.Em a :
+.Em a ?
+.Em a !
+.Em a )
+.Em a ]
+.Pp
+Middle punctuation:
+.Em a ( b
+.Em a [ b
+.Em a | b
+.Em a . b
+.Em a , b
+.Em a ; b
+.Em a : b
+.Em a ? b
+.Em a ! b
+.Em a ) b
+.Em a ] b
+.Pp
+Isolated punctuation:
+.Em a Em ( Em b
+.Em a Em [ Em b
+.Em a Em | Em b
+.Em a Em . Em b
+.Em a Em , Em b
+.Em a Em ; Em b
+.Em a Em : Em b
+.Em a Em ? Em b
+.Em a Em ! Em b
+.Em a Em ) Em b
+.Em a Em ] Em b
+.Pp
+Isolated trailing punctuation:
+.Em a Em (
+.Em a Em [
+.Em a Em |
+.Em a Em .
+.Em a Em ,
+.Em a Em ;
+.Em a Em :
+.Em a Em ?
+.Em a Em !
+.Em a Em )
+.Em a Em ]
+.Pp
+Multiple isolated punctuation:
+.Em a Em ( [ Em b
+.Em a Em ) ] Em b
+.Pp
+Multiple punctuation:
+.Em [ ( arg ) ] .
+.Pp
+Quoted:
+.Em "a . b Nm"
+.Em ". b Nm"
diff --git a/regress/mdoc/Em/punct.out_ascii b/regress/mdoc/Em/punct.out_ascii
new file mode 100644
index 00000000..4396e669
--- /dev/null
+++ b/regress/mdoc/Em/punct.out_ascii
@@ -0,0 +1,26 @@
+EM-PUNCT(1) General Commands Manual EM-PUNCT(1)
+
+NNAAMMEE
+ EEmm--ppuunncctt - punctuation following an emphasis macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Leading punctuation: (_b [_b | _b . _b , _b ; _b : _b ? _b ! _b ) _b ] _b
+
+ Trailing punctuation: _a ( _a [ _a | _a. _a, _a; _a: _a? _a! _a) _a]
+
+ Middle punctuation: _a (_b _a [_b _a | _b _a. _b _a, _b _a; _b _a: _b _a? _b _a! _b _a) _b _a]
+ _b
+
+ Isolated punctuation: _a (_b _a [_b _a | _b _a . _b _a , _b _a ; _b _a : _b _a ? _b _a ! _b
+ _a ) _b _a ] _b
+
+ Isolated trailing punctuation: _a ( _a [ _a | _a . _a , _a ; _a : _a ? _a ! _a )
+ _a ]
+
+ Multiple isolated punctuation: _a ([_b _a )] _b
+
+ Multiple punctuation: [(_a_r_g)].
+
+ Quoted: _a _. _b _N_m _. _b _N_m
+
+OpenBSD November 17, 2014 OpenBSD
diff --git a/regress/mdoc/Em/punct.out_lint b/regress/mdoc/Em/punct.out_lint
new file mode 100644
index 00000000..7d16f436
--- /dev/null
+++ b/regress/mdoc/Em/punct.out_lint
@@ -0,0 +1,24 @@
+mandoc: punct.in:48:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:49:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:50:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:51:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:52:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:53:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:54:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:55:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:56:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:57:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:58:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:61:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:62:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:63:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:64:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:65:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:66:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:67:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:68:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:69:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:70:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:71:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:74:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:75:7: WARNING: skipping empty macro: Em
diff --git a/regress/mdoc/Eo/Makefile b/regress/mdoc/Eo/Makefile
new file mode 100644
index 00000000..0034e271
--- /dev/null
+++ b/regress/mdoc/Eo/Makefile
@@ -0,0 +1,11 @@
+# $OpenBSD: Makefile,v 1.4 2015/02/11 14:14:53 schwarze Exp $
+
+REGRESS_TARGETS = break empty obsolete unclosed
+LINT_TARGETS = break obsolete unclosed
+
+# groff-1.22.3 defect:
+# - When .Ec is missing, groff prints no page footer.
+
+SKIP_GROFF = unclosed
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Eo/break.in b/regress/mdoc/Eo/break.in
new file mode 100644
index 00000000..001d7ac5
--- /dev/null
+++ b/regress/mdoc/Eo/break.in
@@ -0,0 +1,68 @@
+.Dd February 1, 2015
+.Dt EO-BREAK 1
+.Os OpenBSD
+.Sh NAME
+.Nm Eo-break
+.Nd breaking a custom enclosure block
+.Sh DESCRIPTION
+break
+.Eo <<
+eo
+.Bo
+bo
+ec
+.Ec >>
+bc
+.Bc
+no closing
+.Eo <<
+eo
+.Bo
+bo
+ec
+.Ec
+bc
+.Bc
+no content
+.Eo <<
+.Bo
+.Ec >>
+bc
+.Bc
+opening only
+.Eo <<
+.Bo
+.Ec
+bc
+.Bc
+broken
+.Bo
+bo
+.Eo <<
+eo
+bc
+.Bc
+ec
+.Ec >>
+no content
+.Bo
+bo
+.Eo <<
+.Bc
+.Ec >>
+no opening
+.Bo
+bo
+.Eo
+eo
+bc
+.Bc
+ec
+.Ec >>
+closing only
+.Bo
+bo
+.Eo
+.Bc
+.Ec >>
+final text
diff --git a/regress/mdoc/Eo/break.out_ascii b/regress/mdoc/Eo/break.out_ascii
new file mode 100644
index 00000000..d4a66343
--- /dev/null
+++ b/regress/mdoc/Eo/break.out_ascii
@@ -0,0 +1,11 @@
+EO-BREAK(1) General Commands Manual EO-BREAK(1)
+
+NNAAMMEE
+ EEoo--bbrreeaakk - breaking a custom enclosure block
+
+DDEESSCCRRIIPPTTIIOONN
+ break <<eo [bo ec>> bc] no closing <<eo [bo ec bc] no content <<[>> bc]
+ opening only <<[ bc] broken [bo <<eo bc] ec>> no content [bo <<]>> no
+ opening [bo eo bc] ec>> closing only [bo ]>> final text
+
+OpenBSD February 1, 2015 OpenBSD
diff --git a/regress/mdoc/Eo/break.out_lint b/regress/mdoc/Eo/break.out_lint
new file mode 100644
index 00000000..e3608386
--- /dev/null
+++ b/regress/mdoc/Eo/break.out_lint
@@ -0,0 +1,8 @@
+mandoc: break.in:14:2: WARNING: blocks badly nested: Eo breaks Bo
+mandoc: break.in:23:2: WARNING: blocks badly nested: Eo breaks Bo
+mandoc: break.in:29:2: WARNING: blocks badly nested: Eo breaks Bo
+mandoc: break.in:35:2: WARNING: blocks badly nested: Eo breaks Bo
+mandoc: break.in:44:2: WARNING: blocks badly nested: Bo breaks Eo
+mandoc: break.in:51:2: WARNING: blocks badly nested: Bo breaks Eo
+mandoc: break.in:59:2: WARNING: blocks badly nested: Bo breaks Eo
+mandoc: break.in:66:2: WARNING: blocks badly nested: Bo breaks Eo
diff --git a/regress/mdoc/Eo/empty.in b/regress/mdoc/Eo/empty.in
new file mode 100644
index 00000000..bf637f27
--- /dev/null
+++ b/regress/mdoc/Eo/empty.in
@@ -0,0 +1,51 @@
+.Dd February 1, 2015
+.Dt EO-EMPTY 1
+.Os OpenBSD
+.Sh NAME
+.Nm Eo-empty
+.Nd empty implicit enclosure macros
+.Sh DESCRIPTION
+completely empty
+.Eo
+.Ec
+closing only
+.Eo
+.Ec >>
+content only
+.Eo
+text
+.Ec
+opening only
+.Eo <<
+.Ec
+no opening
+.Eo
+text
+.Ec >>
+no content
+.Eo <<
+.Ec >>
+no closing
+.Eo <<
+text
+.Ec
+all
+.Eo <<
+text
+.Ec >>
+completely empty
+.No prefix Ns Eo
+.Ec
+closing only
+.No prefix Ns Eo
+.Ec >>
+no opening
+.No prefix Ns Eo
+text
+.Ec >>
+no closing
+.Eo <<
+.No prefix Ns Ec
+stray closing
+.Ec >>
+end of file
diff --git a/regress/mdoc/Eo/empty.out_ascii b/regress/mdoc/Eo/empty.out_ascii
new file mode 100644
index 00000000..a28e5727
--- /dev/null
+++ b/regress/mdoc/Eo/empty.out_ascii
@@ -0,0 +1,13 @@
+EO-EMPTY(1) General Commands Manual EO-EMPTY(1)
+
+NNAAMMEE
+ EEoo--eemmppttyy - empty implicit enclosure macros
+
+DDEESSCCRRIIPPTTIIOONN
+ completely empty closing only >> content only text opening only << no
+ opening text>> no content <<>> no closing <<text all <<text>> completely
+ empty prefix closing only prefix>> no opening prefixtext>> no closing
+ <<prefix stray closing
+ >> end of file
+
+OpenBSD February 1, 2015 OpenBSD
diff --git a/regress/mdoc/Eo/obsolete.in b/regress/mdoc/Eo/obsolete.in
new file mode 100644
index 00000000..fe0bb087
--- /dev/null
+++ b/regress/mdoc/Eo/obsolete.in
@@ -0,0 +1,20 @@
+.Dd July 2, 2014
+.Dt EO-OBSOLETE 1
+.Os OpenBSD
+.Sh NAME
+.Nm Eo-obsolete
+.Nd obsolete enclosure macros
+.Sh DESCRIPTION
+.En no prior \&Es
+.Pp
+.Es << >> surplus
+initial text
+.En enclosed words with Fl flags
+middle text
+.En more enclosed words
+final text
+.Pp
+.Es
+initial text
+.En after empty \&Es
+final text
diff --git a/regress/mdoc/Eo/obsolete.out_ascii b/regress/mdoc/Eo/obsolete.out_ascii
new file mode 100644
index 00000000..bb2f15c5
--- /dev/null
+++ b/regress/mdoc/Eo/obsolete.out_ascii
@@ -0,0 +1,14 @@
+EO-OBSOLETE(1) General Commands Manual EO-OBSOLETE(1)
+
+NNAAMMEE
+ EEoo--oobbssoolleettee - obsolete enclosure macros
+
+DDEESSCCRRIIPPTTIIOONN
+ no prior Es
+
+ surplus initial text <<enclosed words with --ffllaaggss>> middle text <<more
+ enclosed words>> final text
+
+ initial text after empty Es final text
+
+OpenBSD July 2, 2014 OpenBSD
diff --git a/regress/mdoc/Eo/obsolete.out_lint b/regress/mdoc/Eo/obsolete.out_lint
new file mode 100644
index 00000000..d9577b9c
--- /dev/null
+++ b/regress/mdoc/Eo/obsolete.out_lint
@@ -0,0 +1,6 @@
+mandoc: obsolete.in:8:2: WARNING: obsolete macro: En
+mandoc: obsolete.in:10:2: WARNING: obsolete macro: Es
+mandoc: obsolete.in:12:2: WARNING: obsolete macro: En
+mandoc: obsolete.in:14:2: WARNING: obsolete macro: En
+mandoc: obsolete.in:17:2: WARNING: obsolete macro: Es
+mandoc: obsolete.in:19:2: WARNING: obsolete macro: En
diff --git a/regress/mdoc/Eo/unclosed.in b/regress/mdoc/Eo/unclosed.in
new file mode 100644
index 00000000..59b6d527
--- /dev/null
+++ b/regress/mdoc/Eo/unclosed.in
@@ -0,0 +1,9 @@
+.Dd February 11, 2015
+.Dt EO-UNCLOSED 1
+.Os OpenBSD
+.Sh NAME
+.Nm Eo-unclosed
+.Nd unclosed custom enclosure block
+.Sh DESCRIPTION
+before block
+.Eo <<
diff --git a/regress/mdoc/Eo/unclosed.out_ascii b/regress/mdoc/Eo/unclosed.out_ascii
new file mode 100644
index 00000000..0d32206f
--- /dev/null
+++ b/regress/mdoc/Eo/unclosed.out_ascii
@@ -0,0 +1,9 @@
+EO-UNCLOSED(1) General Commands Manual EO-UNCLOSED(1)
+
+NNAAMMEE
+ EEoo--uunncclloosseedd - unclosed custom enclosure block
+
+DDEESSCCRRIIPPTTIIOONN
+ before block <<
+
+OpenBSD February 11, 2015 OpenBSD
diff --git a/regress/mdoc/Eo/unclosed.out_lint b/regress/mdoc/Eo/unclosed.out_lint
new file mode 100644
index 00000000..49dae22e
--- /dev/null
+++ b/regress/mdoc/Eo/unclosed.out_lint
@@ -0,0 +1 @@
+mandoc: unclosed.in:9:2: ERROR: appending missing end of block: Eo
diff --git a/regress/mdoc/Er/Makefile b/regress/mdoc/Er/Makefile
new file mode 100644
index 00000000..1be2a84a
--- /dev/null
+++ b/regress/mdoc/Er/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.4 2014/07/02 20:18:42 schwarze Exp $
+
+REGRESS_TARGETS = noarg font
+LINT_TARGETS = noarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Er/font.in b/regress/mdoc/Er/font.in
new file mode 100644
index 00000000..4e3d337b
--- /dev/null
+++ b/regress/mdoc/Er/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt ER-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Er-font
+.Nd changing fonts inside the error code macro
+.Sh DESCRIPTION
+normal text
+.Er EFONT\\fIemphasis\\fPEBACK
+trailing text
diff --git a/regress/mdoc/Er/font.out_ascii b/regress/mdoc/Er/font.out_ascii
new file mode 100644
index 00000000..cfe462bd
--- /dev/null
+++ b/regress/mdoc/Er/font.out_ascii
@@ -0,0 +1,9 @@
+ER-FONT(1) General Commands Manual ER-FONT(1)
+
+NNAAMMEE
+ EErr--ffoonntt - changing fonts inside the error code macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text EFONT_e_m_p_h_a_s_i_sEBACK trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Er/noarg.in b/regress/mdoc/Er/noarg.in
new file mode 100644
index 00000000..96aa2cee
--- /dev/null
+++ b/regress/mdoc/Er/noarg.in
@@ -0,0 +1,12 @@
+.Dd January 19, 2011
+.Dt ER-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Er-noarg
+.Nd error constant macro without an argument
+.Sh DESCRIPTION
+with error:
+.Er ENOENT
+no error:
+.Er
+end of test document
diff --git a/regress/mdoc/Er/noarg.out_ascii b/regress/mdoc/Er/noarg.out_ascii
new file mode 100644
index 00000000..83f45f07
--- /dev/null
+++ b/regress/mdoc/Er/noarg.out_ascii
@@ -0,0 +1,9 @@
+ER-NOARG(1) General Commands Manual ER-NOARG(1)
+
+NNAAMMEE
+ EErr--nnooaarrgg - error constant macro without an argument
+
+DDEESSCCRRIIPPTTIIOONN
+ with error: ENOENT no error: end of test document
+
+OpenBSD January 19, 2011 OpenBSD
diff --git a/regress/mdoc/Er/noarg.out_lint b/regress/mdoc/Er/noarg.out_lint
new file mode 100644
index 00000000..b8594294
--- /dev/null
+++ b/regress/mdoc/Er/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:11:2: WARNING: skipping empty macro: Er
diff --git a/regress/mdoc/Ev/Makefile b/regress/mdoc/Ev/Makefile
new file mode 100644
index 00000000..cfe3ad0b
--- /dev/null
+++ b/regress/mdoc/Ev/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.2 2014/07/02 20:18:42 schwarze Exp $
+
+REGRESS_TARGETS = font noarg
+LINT_TARGETS = noarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Ev/font.in b/regress/mdoc/Ev/font.in
new file mode 100644
index 00000000..a9213d81
--- /dev/null
+++ b/regress/mdoc/Ev/font.in
@@ -0,0 +1,13 @@
+.Dd October 21, 2011
+.Dt EV-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ev-font
+.Nd formatting of environment variables
+.Sh DESCRIPTION
+The
+.Ev PATH
+variable.
+.Pp
+And with
+.Ev some \\fIembedded\\fP string .
diff --git a/regress/mdoc/Ev/font.out_ascii b/regress/mdoc/Ev/font.out_ascii
new file mode 100644
index 00000000..fad07429
--- /dev/null
+++ b/regress/mdoc/Ev/font.out_ascii
@@ -0,0 +1,11 @@
+EV-FONT(1) General Commands Manual EV-FONT(1)
+
+NNAAMMEE
+ EEvv--ffoonntt - formatting of environment variables
+
+DDEESSCCRRIIPPTTIIOONN
+ The PATH variable.
+
+ And with some _e_m_b_e_d_d_e_d string.
+
+OpenBSD October 21, 2011 OpenBSD
diff --git a/regress/mdoc/Ev/noarg.in b/regress/mdoc/Ev/noarg.in
new file mode 100644
index 00000000..84c1815d
--- /dev/null
+++ b/regress/mdoc/Ev/noarg.in
@@ -0,0 +1,12 @@
+.Dd July 2, 2014
+.Dt EV-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ev-noarg
+.Nd environment variable macro without an argument
+.Sh DESCRIPTION
+with variable:
+.Ev HOME
+no variable:
+.Ev
+end of test document
diff --git a/regress/mdoc/Ev/noarg.out_ascii b/regress/mdoc/Ev/noarg.out_ascii
new file mode 100644
index 00000000..11705a38
--- /dev/null
+++ b/regress/mdoc/Ev/noarg.out_ascii
@@ -0,0 +1,9 @@
+EV-NOARG(1) General Commands Manual EV-NOARG(1)
+
+NNAAMMEE
+ EEvv--nnooaarrgg - environment variable macro without an argument
+
+DDEESSCCRRIIPPTTIIOONN
+ with variable: HOME no variable: end of test document
+
+OpenBSD July 2, 2014 OpenBSD
diff --git a/regress/mdoc/Ev/noarg.out_lint b/regress/mdoc/Ev/noarg.out_lint
new file mode 100644
index 00000000..a41541b0
--- /dev/null
+++ b/regress/mdoc/Ev/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:11:2: WARNING: skipping empty macro: Ev
diff --git a/regress/mdoc/Ex/Makefile b/regress/mdoc/Ex/Makefile
new file mode 100644
index 00000000..8a714ce1
--- /dev/null
+++ b/regress/mdoc/Ex/Makefile
@@ -0,0 +1,11 @@
+# $OpenBSD: Makefile,v 1.1 2014/08/14 02:00:53 schwarze Exp $
+
+REGRESS_TARGETS = args noname nostd
+LINT_TARGETS = noname nostd
+
+# groff-1.22.2 defect:
+# - .Ex without -std produces no output
+
+SKIP_GROFF = nostd
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Ex/args.in b/regress/mdoc/Ex/args.in
new file mode 100644
index 00000000..39a53b74
--- /dev/null
+++ b/regress/mdoc/Ex/args.in
@@ -0,0 +1,15 @@
+.Dd July 29, 2014
+.Dt EX-ARGS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ex-args
+.Nd arguments to the exit value macro
+.Sh EXIT STATUS
+no arguments:
+.Ex -std
+.Pp
+one argument:
+.Ex -std one
+.Pp
+two arguments:
+.Ex -std one two
diff --git a/regress/mdoc/Ex/args.out_ascii b/regress/mdoc/Ex/args.out_ascii
new file mode 100644
index 00000000..d217c36a
--- /dev/null
+++ b/regress/mdoc/Ex/args.out_ascii
@@ -0,0 +1,16 @@
+EX-ARGS(1) General Commands Manual EX-ARGS(1)
+
+NNAAMMEE
+ EExx--aarrggss - arguments to the exit value macro
+
+EEXXIITT SSTTAATTUUSS
+ no arguments:
+ The EExx--aarrggss utility exits 0 on success, and >0 if an error occurs.
+
+ one argument:
+ The oonnee utility exits 0 on success, and >0 if an error occurs.
+
+ two arguments:
+ The oonnee and ttwwoo utilities exit 0 on success, and >0 if an error occurs.
+
+OpenBSD July 29, 2014 OpenBSD
diff --git a/regress/mdoc/Ex/noname.in b/regress/mdoc/Ex/noname.in
new file mode 100644
index 00000000..9aa742f2
--- /dev/null
+++ b/regress/mdoc/Ex/noname.in
@@ -0,0 +1,15 @@
+.Dd July 29, 2014
+.Dt EX-NONAME 1
+.Os OpenBSD
+.Sh NAME
+.Nm
+.Nd exit value macro without an available name
+.Sh EXIT STATUS
+no arguments:
+.Ex -std
+.Pp
+one argument:
+.Ex -std one
+.Pp
+two arguments:
+.Ex -std one two
diff --git a/regress/mdoc/Ex/noname.out_ascii b/regress/mdoc/Ex/noname.out_ascii
new file mode 100644
index 00000000..00da4a6b
--- /dev/null
+++ b/regress/mdoc/Ex/noname.out_ascii
@@ -0,0 +1,16 @@
+EX-NONAME(1) General Commands Manual EX-NONAME(1)
+
+NNAAMMEE
+ - exit value macro without an available name
+
+EEXXIITT SSTTAATTUUSS
+ no arguments:
+ The utility exits 0 on success, and >0 if an error occurs.
+
+ one argument:
+ The oonnee utility exits 0 on success, and >0 if an error occurs.
+
+ two arguments:
+ The oonnee and ttwwoo utilities exit 0 on success, and >0 if an error occurs.
+
+OpenBSD July 29, 2014 OpenBSD
diff --git a/regress/mdoc/Ex/noname.out_lint b/regress/mdoc/Ex/noname.out_lint
new file mode 100644
index 00000000..c844104e
--- /dev/null
+++ b/regress/mdoc/Ex/noname.out_lint
@@ -0,0 +1,2 @@
+mandoc: noname.in:5:2: ERROR: missing manual name, using "": Nm
+mandoc: noname.in:9:2: WARNING: missing utility name, using "": Ex
diff --git a/regress/mdoc/Ex/nostd.in b/regress/mdoc/Ex/nostd.in
new file mode 100644
index 00000000..4722cba8
--- /dev/null
+++ b/regress/mdoc/Ex/nostd.in
@@ -0,0 +1,15 @@
+.Dd July 29, 2014
+.Dt EX-NOSTD 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ex-nostd
+.Nd exit value macros without -std arguments
+.Sh EXIT STATUS
+no arguments:
+.Ex
+.Pp
+one argument:
+.Ex one
+.Pp
+two arguments:
+.Ex one two
diff --git a/regress/mdoc/Ex/nostd.out_ascii b/regress/mdoc/Ex/nostd.out_ascii
new file mode 100644
index 00000000..04abc9e9
--- /dev/null
+++ b/regress/mdoc/Ex/nostd.out_ascii
@@ -0,0 +1,16 @@
+EX-NOSTD(1) General Commands Manual EX-NOSTD(1)
+
+NNAAMMEE
+ EExx--nnoossttdd - exit value macros without -std arguments
+
+EEXXIITT SSTTAATTUUSS
+ no arguments:
+ The EExx--nnoossttdd utility exits 0 on success, and >0 if an error occurs.
+
+ one argument:
+ The oonnee utility exits 0 on success, and >0 if an error occurs.
+
+ two arguments:
+ The oonnee and ttwwoo utilities exit 0 on success, and >0 if an error occurs.
+
+OpenBSD July 29, 2014 OpenBSD
diff --git a/regress/mdoc/Ex/nostd.out_lint b/regress/mdoc/Ex/nostd.out_lint
new file mode 100644
index 00000000..0aaaa123
--- /dev/null
+++ b/regress/mdoc/Ex/nostd.out_lint
@@ -0,0 +1,3 @@
+mandoc: nostd.in:9:2: WARNING: missing -std argument, adding it: Ex
+mandoc: nostd.in:12:2: WARNING: missing -std argument, adding it: Ex
+mandoc: nostd.in:15:2: WARNING: missing -std argument, adding it: Ex
diff --git a/regress/mdoc/Fd/Makefile b/regress/mdoc/Fd/Makefile
new file mode 100644
index 00000000..7cd78c65
--- /dev/null
+++ b/regress/mdoc/Fd/Makefile
@@ -0,0 +1,7 @@
+# $OpenBSD: Makefile,v 1.3 2015/02/06 03:31:11 schwarze Exp $
+
+REGRESS_TARGETS = break empty eos font
+LINT_TARGETS = empty
+SKIP_TMAN = eos
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Fd/break.in b/regress/mdoc/Fd/break.in
new file mode 100644
index 00000000..e6fd9023
--- /dev/null
+++ b/regress/mdoc/Fd/break.in
@@ -0,0 +1,26 @@
+.Dd June 9, 2010
+.Dt FD-BREAK 2
+.Os OpenBSD
+.Sh NAME
+.Nm Fd-break
+.Nd line break before old-style header include file
+.Sh SYNOPSIS
+.Fd #include <fcntl.h>
+.Ft int
+.Fn open "const char *path" "int flags" "mode_t mode"
+.Fd #include <sys/types.h>
+.Fd #include <unistd.h>
+.Ft int
+.Fn dup "int oldd"
+.Ft ssize_t
+.Fn write "int d" "const void *buf" "size_t nbytes"
+.Sh DESCRIPTION
+.Fd #include <fcntl.h>
+.Ft int
+.Fn open "const char *path" "int flags" "mode_t mode"
+.Fd #include <sys/types.h>
+.Fd #include <unistd.h>
+.Ft int
+.Fn dup "int oldd"
+.Ft ssize_t
+.Fn write "int d" "const void *buf" "size_t nbytes"
diff --git a/regress/mdoc/Fd/break.out_ascii b/regress/mdoc/Fd/break.out_ascii
new file mode 100644
index 00000000..fdd6aae4
--- /dev/null
+++ b/regress/mdoc/Fd/break.out_ascii
@@ -0,0 +1,27 @@
+FD-BREAK(2) System Calls Manual FD-BREAK(2)
+
+NNAAMMEE
+ FFdd--bbrreeaakk - line break before old-style header include file
+
+SSYYNNOOPPSSIISS
+ ##iinncclluuddee <<ffccnnttll..hh>>
+
+ _i_n_t
+ ooppeenn(_c_o_n_s_t _c_h_a_r _*_p_a_t_h, _i_n_t _f_l_a_g_s, _m_o_d_e___t _m_o_d_e);
+
+ ##iinncclluuddee <<ssyyss//ttyyppeess..hh>>
+ ##iinncclluuddee <<uunniissttdd..hh>>
+
+ _i_n_t
+ dduupp(_i_n_t _o_l_d_d);
+
+ _s_s_i_z_e___t
+ wwrriittee(_i_n_t _d, _c_o_n_s_t _v_o_i_d _*_b_u_f, _s_i_z_e___t _n_b_y_t_e_s);
+
+DDEESSCCRRIIPPTTIIOONN
+ ##iinncclluuddee <<ffccnnttll..hh>>
+ _i_n_t ooppeenn(_c_o_n_s_t _c_h_a_r _*_p_a_t_h, _i_n_t _f_l_a_g_s, _m_o_d_e___t _m_o_d_e) ##iinncclluuddee <<ssyyss//ttyyppeess..hh>>
+ ##iinncclluuddee <<uunniissttdd..hh>>
+ _i_n_t dduupp(_i_n_t _o_l_d_d) _s_s_i_z_e___t wwrriittee(_i_n_t _d, _c_o_n_s_t _v_o_i_d _*_b_u_f, _s_i_z_e___t _n_b_y_t_e_s)
+
+OpenBSD June 9, 2010 OpenBSD
diff --git a/regress/mdoc/Fd/empty.in b/regress/mdoc/Fd/empty.in
new file mode 100644
index 00000000..5951316d
--- /dev/null
+++ b/regress/mdoc/Fd/empty.in
@@ -0,0 +1,14 @@
+.Dd February 5, 2015
+.Dt FD-EMPTY 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fd-empty
+.Nd empty preprocessor directive macros
+.Sh SYNOPSIS
+.In sys/types.h
+.Fd
+.In stdlib.h
+.Sh DESCRIPTION
+leading text
+.Fd
+trailing text
diff --git a/regress/mdoc/Fd/empty.out_ascii b/regress/mdoc/Fd/empty.out_ascii
new file mode 100644
index 00000000..d525b482
--- /dev/null
+++ b/regress/mdoc/Fd/empty.out_ascii
@@ -0,0 +1,13 @@
+FD-EMPTY(1) General Commands Manual FD-EMPTY(1)
+
+NNAAMMEE
+ FFdd--eemmppttyy - empty preprocessor directive macros
+
+SSYYNNOOPPSSIISS
+ ##iinncclluuddee <<ssyyss//ttyyppeess..hh>>
+ ##iinncclluuddee <<ssttddlliibb..hh>>
+
+DDEESSCCRRIIPPTTIIOONN
+ leading text trailing text
+
+OpenBSD February 5, 2015 OpenBSD
diff --git a/regress/mdoc/Fd/empty.out_lint b/regress/mdoc/Fd/empty.out_lint
new file mode 100644
index 00000000..15f76270
--- /dev/null
+++ b/regress/mdoc/Fd/empty.out_lint
@@ -0,0 +1,2 @@
+mandoc: empty.in:9:2: WARNING: skipping empty macro: Fd
+mandoc: empty.in:13:2: WARNING: skipping empty macro: Fd
diff --git a/regress/mdoc/Fd/eos.in b/regress/mdoc/Fd/eos.in
new file mode 100644
index 00000000..f2efb028
--- /dev/null
+++ b/regress/mdoc/Fd/eos.in
@@ -0,0 +1,10 @@
+.Dd November 17, 2012
+.Dt FD-EOS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fd-eos
+.Nd end of sentence handling after the legacy include macro
+.Sh DESCRIPTION
+Let's use
+.Fd string.h .
+And then something else.
diff --git a/regress/mdoc/Fd/eos.out_ascii b/regress/mdoc/Fd/eos.out_ascii
new file mode 100644
index 00000000..3d54ac3e
--- /dev/null
+++ b/regress/mdoc/Fd/eos.out_ascii
@@ -0,0 +1,10 @@
+FD-EOS(1) General Commands Manual FD-EOS(1)
+
+NNAAMMEE
+ FFdd--eeooss - end of sentence handling after the legacy include macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Let's use ssttrriinngg..hh ..
+ And then something else.
+
+OpenBSD November 17, 2012 OpenBSD
diff --git a/regress/mdoc/Fd/font.in b/regress/mdoc/Fd/font.in
new file mode 100644
index 00000000..a3a0a830
--- /dev/null
+++ b/regress/mdoc/Fd/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt FD-FONT 2
+.Os OpenBSD
+.Sh NAME
+.Nm Fd-font
+.Nd changing the font inside the old-style include macro
+.Sh DESCRIPTION
+normal text
+.Fd prefix\\fIheader\\fPsuffix
+trailing text
diff --git a/regress/mdoc/Fd/font.out_ascii b/regress/mdoc/Fd/font.out_ascii
new file mode 100644
index 00000000..7a3428fe
--- /dev/null
+++ b/regress/mdoc/Fd/font.out_ascii
@@ -0,0 +1,10 @@
+FD-FONT(2) System Calls Manual FD-FONT(2)
+
+NNAAMMEE
+ FFdd--ffoonntt - changing the font inside the old-style include macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text pprreeffiixx_h_e_a_d_e_rssuuffffiixx
+ trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Fl/Makefile b/regress/mdoc/Fl/Makefile
new file mode 100644
index 00000000..e9e01a19
--- /dev/null
+++ b/regress/mdoc/Fl/Makefile
@@ -0,0 +1,5 @@
+# $OpenBSD: Makefile,v 1.8 2014/08/21 12:56:24 schwarze Exp $
+
+REGRESS_TARGETS = noarg multiarg parsed punct font
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Fl/font.in b/regress/mdoc/Fl/font.in
new file mode 100644
index 00000000..c7514d31
--- /dev/null
+++ b/regress/mdoc/Fl/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt FL-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fl-font
+.Nd changing fonts inside the flag macro
+.Sh DESCRIPTION
+normal text
+.Fl bold\\fIemphasis\\fPback
+trailing text
diff --git a/regress/mdoc/Fl/font.out_ascii b/regress/mdoc/Fl/font.out_ascii
new file mode 100644
index 00000000..495c8975
--- /dev/null
+++ b/regress/mdoc/Fl/font.out_ascii
@@ -0,0 +1,9 @@
+FL-FONT(1) General Commands Manual FL-FONT(1)
+
+NNAAMMEE
+ FFll--ffoonntt - changing fonts inside the flag macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text --bboolldd_e_m_p_h_a_s_i_sbbaacckk trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Fl/multiarg.in b/regress/mdoc/Fl/multiarg.in
new file mode 100644
index 00000000..77a9068e
--- /dev/null
+++ b/regress/mdoc/Fl/multiarg.in
@@ -0,0 +1,14 @@
+.Dd December 24, 2009
+.Dt FL-MULTIARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fl-multiarg
+.Nd multiple arguments to a Fl macro
+.Sh DESCRIPTION
+Each group of flags in
+.Fl a b c def
+gets its own dash.
+.Pp
+Punctuation characters like in
+.Op Fl a | b
+get no dash.
diff --git a/regress/mdoc/Fl/multiarg.out_ascii b/regress/mdoc/Fl/multiarg.out_ascii
new file mode 100644
index 00000000..0ad669e2
--- /dev/null
+++ b/regress/mdoc/Fl/multiarg.out_ascii
@@ -0,0 +1,11 @@
+FL-MULTIARG(1) General Commands Manual FL-MULTIARG(1)
+
+NNAAMMEE
+ FFll--mmuullttiiaarrgg - multiple arguments to a Fl macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Each group of flags in --aa --bb --cc --ddeeff gets its own dash.
+
+ Punctuation characters like in [--aa | --bb] get no dash.
+
+OpenBSD December 24, 2009 OpenBSD
diff --git a/regress/mdoc/Fl/noarg.in b/regress/mdoc/Fl/noarg.in
new file mode 100644
index 00000000..0c604dbc
--- /dev/null
+++ b/regress/mdoc/Fl/noarg.in
@@ -0,0 +1,19 @@
+.Dd August 21, 2014
+.Dt FL-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fl-noarg
+.Nd Fl macro without arguments
+.Sh DESCRIPTION
+Without an argument, it yields
+.Fl
+a dash.
+.Pp
+This is true even before middle
+.Fl | and
+trailing punctuation
+.Fl .
+.Pp
+Following macros
+.Fl Op flag
+follow without white space.
diff --git a/regress/mdoc/Fl/noarg.out_ascii b/regress/mdoc/Fl/noarg.out_ascii
new file mode 100644
index 00000000..eb230269
--- /dev/null
+++ b/regress/mdoc/Fl/noarg.out_ascii
@@ -0,0 +1,13 @@
+FL-NOARG(1) General Commands Manual FL-NOARG(1)
+
+NNAAMMEE
+ FFll--nnooaarrgg - Fl macro without arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ Without an argument, it yields -- a dash.
+
+ This is true even before middle -- | --aanndd trailing punctuation --.
+
+ Following macros --[flag] follow without white space.
+
+OpenBSD August 21, 2014 OpenBSD
diff --git a/regress/mdoc/Fl/parsed.in b/regress/mdoc/Fl/parsed.in
new file mode 100644
index 00000000..4c93e016
--- /dev/null
+++ b/regress/mdoc/Fl/parsed.in
@@ -0,0 +1,18 @@
+.Dd April 7, 2010
+.Dt FL-PARSED 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fl-parsed
+.Nd is the Fl macro parsed?
+.Sh DESCRIPTION
+.Op Fl Ux
+.Pp
+.Op Ux
+.Pp
+.Op Fl Cm x
+.Pp
+.Fl W all
+versus
+.Fl W Ns Cm all
+.Pp
+.Fl Cm help
diff --git a/regress/mdoc/Fl/parsed.out_ascii b/regress/mdoc/Fl/parsed.out_ascii
new file mode 100644
index 00000000..3b6de9d4
--- /dev/null
+++ b/regress/mdoc/Fl/parsed.out_ascii
@@ -0,0 +1,17 @@
+FL-PARSED(1) General Commands Manual FL-PARSED(1)
+
+NNAAMMEE
+ FFll--ppaarrsseedd - is the Fl macro parsed?
+
+DDEESSCCRRIIPPTTIIOONN
+ [--UNIX]
+
+ [UNIX]
+
+ [--xx]
+
+ --WW --aallll versus --WWaallll
+
+ --hheellpp
+
+OpenBSD April 7, 2010 OpenBSD
diff --git a/regress/mdoc/Fl/punct.in b/regress/mdoc/Fl/punct.in
new file mode 100644
index 00000000..ac7eecc7
--- /dev/null
+++ b/regress/mdoc/Fl/punct.in
@@ -0,0 +1,39 @@
+.Dd August 21, 2014
+.Dt FL-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fl-punct
+.Nd punctuation handling by the Fl macro
+.Sh DESCRIPTION
+closing punctuation
+.Fl a )
+only one
+.Fl )
+only more than one
+.Fl ) )
+middle
+.Fl a ) z
+start
+.Fl ) z
+dot
+.Fl . z
+comma
+.Fl , z
+semicolon
+.Fl ; z
+colon
+.Fl : z
+quest
+.Fl ? z
+excl
+.Fl ! z
+paren
+.Fl ) z
+bracket
+.Fl ] z
+bar
+.Fl | m
+op paren
+.Fl ( a
+op bracket
+.Fl [ a
diff --git a/regress/mdoc/Fl/punct.out_ascii b/regress/mdoc/Fl/punct.out_ascii
new file mode 100644
index 00000000..b619154d
--- /dev/null
+++ b/regress/mdoc/Fl/punct.out_ascii
@@ -0,0 +1,12 @@
+FL-PUNCT(1) General Commands Manual FL-PUNCT(1)
+
+NNAAMMEE
+ FFll--ppuunncctt - punctuation handling by the Fl macro
+
+DDEESSCCRRIIPPTTIIOONN
+ closing punctuation --aa) only one --) only more than one --)) middle --aa) --zz
+ start --) --zz dot --. --zz comma --, --zz semicolon --; --zz colon --: --zz quest --? --zz
+ excl --! --zz paren --) --zz bracket --] --zz bar -- | --mm op paren (--aa op bracket
+ [--aa
+
+OpenBSD August 21, 2014 OpenBSD
diff --git a/regress/mdoc/Fo/Makefile b/regress/mdoc/Fo/Makefile
new file mode 100644
index 00000000..71242c8e
--- /dev/null
+++ b/regress/mdoc/Fo/Makefile
@@ -0,0 +1,15 @@
+# $OpenBSD: Makefile,v 1.13 2015/02/16 11:39:34 schwarze Exp $
+
+REGRESS_TARGETS = basic break eos font noarg nohead
+REGRESS_TARGETS += obsolete punct section warn
+LINT_TARGETS = noarg nohead obsolete warn
+
+# groff-1.22.3 defects:
+# - .Fo without an argument prints unbalanced parentheses
+# - .nr nS is ignored
+
+SKIP_GROFF = nohead section
+
+SKIP_TMAN = eos
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Fo/basic.in b/regress/mdoc/Fo/basic.in
new file mode 100644
index 00000000..5572ba63
--- /dev/null
+++ b/regress/mdoc/Fo/basic.in
@@ -0,0 +1,24 @@
+.Dd July 7, 2012
+.Dt FO-BASIC 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fo-basic
+.Nd function blocks
+.Sh SYNOPSIS
+.Ft double
+.Fo sin
+.Fa "double x"
+.Fc
+.Ft double
+.Fo atan2
+.Fa "double y" "double x"
+.Fc
+.Sh DESCRIPTION
+.Ft double
+.Fo sin
+.Fa "double x"
+.Fc
+.Ft double
+.Fo atan2
+.Fa "double y" "double x"
+.Fc
diff --git a/regress/mdoc/Fo/basic.out_ascii b/regress/mdoc/Fo/basic.out_ascii
new file mode 100644
index 00000000..7ab11d47
--- /dev/null
+++ b/regress/mdoc/Fo/basic.out_ascii
@@ -0,0 +1,16 @@
+FO-BASIC(1) General Commands Manual FO-BASIC(1)
+
+NNAAMMEE
+ FFoo--bbaassiicc - function blocks
+
+SSYYNNOOPPSSIISS
+ _d_o_u_b_l_e
+ ssiinn(_d_o_u_b_l_e _x);
+
+ _d_o_u_b_l_e
+ aattaann22(_d_o_u_b_l_e _y, _d_o_u_b_l_e _x);
+
+DDEESSCCRRIIPPTTIIOONN
+ _d_o_u_b_l_e ssiinn(_d_o_u_b_l_e _x) _d_o_u_b_l_e aattaann22(_d_o_u_b_l_e _y, _d_o_u_b_l_e _x)
+
+OpenBSD July 7, 2012 OpenBSD
diff --git a/regress/mdoc/Fo/break.in b/regress/mdoc/Fo/break.in
new file mode 100644
index 00000000..48a0a1a2
--- /dev/null
+++ b/regress/mdoc/Fo/break.in
@@ -0,0 +1,49 @@
+.Dd April 8, 2014
+.Dt FO-BREAK 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fo-break
+.Nd line breaks in function blocks
+.Sh SYNOPSIS
+.Fd using \&Fn:
+.Ft my_long_return_type *
+.Fn my_long_function "my_long_type first_argument" "my_long_type second_argument"
+.Ft void
+.Fn "this function name is so ridiculously long \
+that it will not fit on the line" "my_long_type first_argument" \
+"my_long_type second_argument" "my_long_type third_argument"
+.Fd using \&Fo and single-argument \&Fa:
+.Ft my_long_return_type *
+.Fo my_long_function
+.Fa "my_long_type first_argument"
+.Fa "my_long_type second_argument"
+.Fc
+.Ft void
+.Fo "this function name is so ridiculously long \
+that it will not fit on the line"
+.Fa "my_long_type first_argument"
+.Fa "my_long_type second_argument"
+.Fa "my_long_type third_argument"
+.Fc
+.Fd using \&Fo and multi-argument \&Fa:
+.Ft my_long_return_type *
+.Fo my_long_function
+.Fa "my_long_type first_argument" "my_long_type second_argument"
+.Fc
+.Sh DESCRIPTION
+using Fn:
+.br
+.Fn my_long_function "my_long_type first_argument" "my_long_type second_argument"
+.Pp
+using Fo and single-argument Fa:
+.br
+.Fo my_long_function
+.Fa "my_long_type first_argument"
+.Fa "my_long_type second_argument"
+.Fc
+.Pp
+using Fo and multi-argument Fa:
+.br
+.Fo my_long_function
+.Fa "my_long_type first_argument" "my_long_type second_argument"
+.Fc
diff --git a/regress/mdoc/Fo/break.out_ascii b/regress/mdoc/Fo/break.out_ascii
new file mode 100644
index 00000000..d8a5df70
--- /dev/null
+++ b/regress/mdoc/Fo/break.out_ascii
@@ -0,0 +1,48 @@
+FO-BREAK(1) General Commands Manual FO-BREAK(1)
+
+NNAAMMEE
+ FFoo--bbrreeaakk - line breaks in function blocks
+
+SSYYNNOOPPSSIISS
+ uussiinngg FFnn::
+
+ _m_y___l_o_n_g___r_e_t_u_r_n___t_y_p_e _*
+ mmyy__lloonngg__ffuunnccttiioonn(_m_y___l_o_n_g___t_y_p_e _f_i_r_s_t___a_r_g_u_m_e_n_t,
+ _m_y___l_o_n_g___t_y_p_e _s_e_c_o_n_d___a_r_g_u_m_e_n_t);
+
+ _v_o_i_d
+ tthhiiss ffuunnccttiioonn nnaammee iiss ssoo rriiddiiccuulloouussllyy lloonngg tthhaatt iitt wwiillll nnoott ffiitt oonn tthhee
+ lliinnee(_m_y___l_o_n_g___t_y_p_e _f_i_r_s_t___a_r_g_u_m_e_n_t, _m_y___l_o_n_g___t_y_p_e _s_e_c_o_n_d___a_r_g_u_m_e_n_t,
+ _m_y___l_o_n_g___t_y_p_e _t_h_i_r_d___a_r_g_u_m_e_n_t);
+
+ uussiinngg FFoo aanndd ssiinnggllee--aarrgguummeenntt FFaa::
+
+ _m_y___l_o_n_g___r_e_t_u_r_n___t_y_p_e _*
+ mmyy__lloonngg__ffuunnccttiioonn(_m_y___l_o_n_g___t_y_p_e _f_i_r_s_t___a_r_g_u_m_e_n_t,
+ _m_y___l_o_n_g___t_y_p_e _s_e_c_o_n_d___a_r_g_u_m_e_n_t);
+
+ _v_o_i_d
+ tthhiiss ffuunnccttiioonn nnaammee iiss ssoo rriiddiiccuulloouussllyy lloonngg tthhaatt iitt wwiillll nnoott ffiitt oonn tthhee
+ lliinnee(_m_y___l_o_n_g___t_y_p_e _f_i_r_s_t___a_r_g_u_m_e_n_t, _m_y___l_o_n_g___t_y_p_e _s_e_c_o_n_d___a_r_g_u_m_e_n_t,
+ _m_y___l_o_n_g___t_y_p_e _t_h_i_r_d___a_r_g_u_m_e_n_t);
+
+ uussiinngg FFoo aanndd mmuullttii--aarrgguummeenntt FFaa::
+
+ _m_y___l_o_n_g___r_e_t_u_r_n___t_y_p_e _*
+ mmyy__lloonngg__ffuunnccttiioonn(_m_y___l_o_n_g___t_y_p_e _f_i_r_s_t___a_r_g_u_m_e_n_t,
+ _m_y___l_o_n_g___t_y_p_e _s_e_c_o_n_d___a_r_g_u_m_e_n_t);
+
+DDEESSCCRRIIPPTTIIOONN
+ using Fn:
+ mmyy__lloonngg__ffuunnccttiioonn(_m_y___l_o_n_g___t_y_p_e _f_i_r_s_t___a_r_g_u_m_e_n_t, _m_y___l_o_n_g___t_y_p_e
+ _s_e_c_o_n_d___a_r_g_u_m_e_n_t)
+
+ using Fo and single-argument Fa:
+ mmyy__lloonngg__ffuunnccttiioonn(_m_y___l_o_n_g___t_y_p_e _f_i_r_s_t___a_r_g_u_m_e_n_t,
+ _m_y___l_o_n_g___t_y_p_e _s_e_c_o_n_d___a_r_g_u_m_e_n_t)
+
+ using Fo and multi-argument Fa:
+ mmyy__lloonngg__ffuunnccttiioonn(_m_y___l_o_n_g___t_y_p_e _f_i_r_s_t___a_r_g_u_m_e_n_t,
+ _m_y___l_o_n_g___t_y_p_e _s_e_c_o_n_d___a_r_g_u_m_e_n_t)
+
+OpenBSD April 8, 2014 OpenBSD
diff --git a/regress/mdoc/Fo/eos.in b/regress/mdoc/Fo/eos.in
new file mode 100644
index 00000000..a97e00f9
--- /dev/null
+++ b/regress/mdoc/Fo/eos.in
@@ -0,0 +1,15 @@
+.Dd November 17, 2012
+.Dt FO-EOS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fo-eos
+.Nd end of sentence handling after a function block
+.Sh DESCRIPTION
+As an example of a trigonometric function, let us consider
+.Fn "double sin" "double x" .
+Or do you prefer
+.Ft double
+.Fo cos
+.Fa double x
+.Fc .
+Either will do.
diff --git a/regress/mdoc/Fo/eos.out_ascii b/regress/mdoc/Fo/eos.out_ascii
new file mode 100644
index 00000000..a09113cf
--- /dev/null
+++ b/regress/mdoc/Fo/eos.out_ascii
@@ -0,0 +1,10 @@
+FO-EOS(1) General Commands Manual FO-EOS(1)
+
+NNAAMMEE
+ FFoo--eeooss - end of sentence handling after a function block
+
+DDEESSCCRRIIPPTTIIOONN
+ As an example of a trigonometric function, let us consider ddoouubbllee
+ ssiinn(_d_o_u_b_l_e _x). Or do you prefer _d_o_u_b_l_e ccooss(_d_o_u_b_l_e, _x). Either will do.
+
+OpenBSD November 17, 2012 OpenBSD
diff --git a/regress/mdoc/Fo/font.in b/regress/mdoc/Fo/font.in
new file mode 100644
index 00000000..894a86aa
--- /dev/null
+++ b/regress/mdoc/Fo/font.in
@@ -0,0 +1,19 @@
+.Dd July 9, 2012
+.Dt FO-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fo-font
+.Nd font nesting in function blocks
+.Sh DESCRIPTION
+.Fn prefix\\fIname\\fPsuffix "type arg"
+trailing text
+.Pp
+.Fo prefix\\fIname\\fPsuffix
+.Fa "type arg"
+.Fc
+trailing text
+.Pp
+.Fo function
+.Fa prefix\\fBbold\\fPsuffix
+.Fc
+trailing text
diff --git a/regress/mdoc/Fo/font.out_ascii b/regress/mdoc/Fo/font.out_ascii
new file mode 100644
index 00000000..3490ad8a
--- /dev/null
+++ b/regress/mdoc/Fo/font.out_ascii
@@ -0,0 +1,13 @@
+FO-FONT(1) General Commands Manual FO-FONT(1)
+
+NNAAMMEE
+ FFoo--ffoonntt - font nesting in function blocks
+
+DDEESSCCRRIIPPTTIIOONN
+ pprreeffiixx_n_a_m_essuuffffiixx(_t_y_p_e _a_r_g) trailing text
+
+ pprreeffiixx_n_a_m_essuuffffiixx(_t_y_p_e _a_r_g) trailing text
+
+ ffuunnccttiioonn(_p_r_e_f_i_xbboolldd_s_u_f_f_i_x) trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Fo/noarg.in b/regress/mdoc/Fo/noarg.in
new file mode 100644
index 00000000..24eab004
--- /dev/null
+++ b/regress/mdoc/Fo/noarg.in
@@ -0,0 +1,44 @@
+.Dd July 12, 2012
+.Dt FN-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fn-noarg
+.Nd function name macro without arguments
+.Sh DESCRIPTION
+with arguments:
+.Ft int
+.Fn abs "int i"
+.Ft long
+.Fo labs bogus
+.Fa "long i"
+.Fc
+void function arguments:
+.Ft int
+.Fn rand
+.Ft long
+.Fo random
+.Fc
+.Ft u_int32_t
+.Fo arc4random
+.Fa
+.Fc
+no name arguments:
+.Ft int
+.Fn
+no type arguments:
+.Ft
+.Fn abs "int i"
+no type and void function arguments:
+.Ft
+.Fn rand
+.Ft
+.Fo random
+.Fc
+.Ft
+.Fo arc4random
+.Fa
+.Fc
+no arguments at all:
+.Ft
+.Fn
+end of test document
diff --git a/regress/mdoc/Fo/noarg.out_ascii b/regress/mdoc/Fo/noarg.out_ascii
new file mode 100644
index 00000000..bd895e4a
--- /dev/null
+++ b/regress/mdoc/Fo/noarg.out_ascii
@@ -0,0 +1,12 @@
+FN-NOARG(1) General Commands Manual FN-NOARG(1)
+
+NNAAMMEE
+ FFnn--nnooaarrgg - function name macro without arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ with arguments: _i_n_t aabbss(_i_n_t _i) _l_o_n_g llaabbss(_l_o_n_g _i) void function arguments:
+ _i_n_t rraanndd() _l_o_n_g rraannddoomm() _u___i_n_t_3_2___t aarrcc44rraannddoomm() no name arguments: _i_n_t no
+ type arguments: aabbss(_i_n_t _i) no type and void function arguments: rraanndd()
+ rraannddoomm() aarrcc44rraannddoomm() no arguments at all: end of test document
+
+OpenBSD July 12, 2012 OpenBSD
diff --git a/regress/mdoc/Fo/noarg.out_lint b/regress/mdoc/Fo/noarg.out_lint
new file mode 100644
index 00000000..4c72b01d
--- /dev/null
+++ b/regress/mdoc/Fo/noarg.out_lint
@@ -0,0 +1,10 @@
+mandoc: noarg.in:23:2: WARNING: skipping empty macro: Fa
+mandoc: noarg.in:27:2: WARNING: skipping empty macro: Fn
+mandoc: noarg.in:29:2: WARNING: skipping empty macro: Ft
+mandoc: noarg.in:32:2: WARNING: skipping empty macro: Ft
+mandoc: noarg.in:34:2: WARNING: skipping empty macro: Ft
+mandoc: noarg.in:37:2: WARNING: skipping empty macro: Ft
+mandoc: noarg.in:39:2: WARNING: skipping empty macro: Fa
+mandoc: noarg.in:42:2: WARNING: skipping empty macro: Ft
+mandoc: noarg.in:43:2: WARNING: skipping empty macro: Fn
+mandoc: noarg.in:12:10: ERROR: skipping excess arguments: Fo ... bogus
diff --git a/regress/mdoc/Fo/nohead.in b/regress/mdoc/Fo/nohead.in
new file mode 100644
index 00000000..c41b5e6e
--- /dev/null
+++ b/regress/mdoc/Fo/nohead.in
@@ -0,0 +1,13 @@
+.Dd February 5, 2015
+.Dt FO-NOHEAD 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fo-nohead
+.Nd function block macro without head argument
+.Sh DESCRIPTION
+initial text
+.Ft int
+.Fo
+.Fa int
+.Fc
+final text
diff --git a/regress/mdoc/Fo/nohead.out_ascii b/regress/mdoc/Fo/nohead.out_ascii
new file mode 100644
index 00000000..c1ad57d7
--- /dev/null
+++ b/regress/mdoc/Fo/nohead.out_ascii
@@ -0,0 +1,9 @@
+FO-NOHEAD(1) General Commands Manual FO-NOHEAD(1)
+
+NNAAMMEE
+ FFoo--nnoohheeaadd - function block macro without head argument
+
+DDEESSCCRRIIPPTTIIOONN
+ initial text _i_n_t(_i_n_t) final text
+
+OpenBSD February 5, 2015 OpenBSD
diff --git a/regress/mdoc/Fo/nohead.out_lint b/regress/mdoc/Fo/nohead.out_lint
new file mode 100644
index 00000000..aa0d5242
--- /dev/null
+++ b/regress/mdoc/Fo/nohead.out_lint
@@ -0,0 +1 @@
+mandoc: nohead.in:10:2: WARNING: missing function name, using "": Fo
diff --git a/regress/mdoc/Fo/obsolete.in b/regress/mdoc/Fo/obsolete.in
new file mode 100644
index 00000000..4901cbd5
--- /dev/null
+++ b/regress/mdoc/Fo/obsolete.in
@@ -0,0 +1,12 @@
+.Dd July 2, 2014
+.Dt FO-OBSOLETE 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fo-obsolete
+.Nd obsolete function macros
+.Sh DESCRIPTION
+old function type
+.Ot fortran
+.Pp
+function return value
+.Fr value
diff --git a/regress/mdoc/Fo/obsolete.out_ascii b/regress/mdoc/Fo/obsolete.out_ascii
new file mode 100644
index 00000000..3e2cc617
--- /dev/null
+++ b/regress/mdoc/Fo/obsolete.out_ascii
@@ -0,0 +1,11 @@
+FO-OBSOLETE(1) General Commands Manual FO-OBSOLETE(1)
+
+NNAAMMEE
+ FFoo--oobbssoolleettee - obsolete function macros
+
+DDEESSCCRRIIPPTTIIOONN
+ old function type _f_o_r_t_r_a_n
+
+ function return value _v_a_l_u_e
+
+OpenBSD July 2, 2014 OpenBSD
diff --git a/regress/mdoc/Fo/obsolete.out_lint b/regress/mdoc/Fo/obsolete.out_lint
new file mode 100644
index 00000000..c1ad3d85
--- /dev/null
+++ b/regress/mdoc/Fo/obsolete.out_lint
@@ -0,0 +1,2 @@
+mandoc: obsolete.in:9:2: WARNING: obsolete macro: Ot
+mandoc: obsolete.in:12:2: WARNING: obsolete macro: Fr
diff --git a/regress/mdoc/Fo/punct.in b/regress/mdoc/Fo/punct.in
new file mode 100644
index 00000000..0b407ffb
--- /dev/null
+++ b/regress/mdoc/Fo/punct.in
@@ -0,0 +1,9 @@
+.Dd November 20, 2014
+.Dt FO-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fo-punct
+.Nd punctuation on function name input lines
+.Sh DESCRIPTION
+.Ft double
+.Fn sin , cos
diff --git a/regress/mdoc/Fo/punct.out_ascii b/regress/mdoc/Fo/punct.out_ascii
new file mode 100644
index 00000000..4e8b1abe
--- /dev/null
+++ b/regress/mdoc/Fo/punct.out_ascii
@@ -0,0 +1,9 @@
+FO-PUNCT(1) General Commands Manual FO-PUNCT(1)
+
+NNAAMMEE
+ FFoo--ppuunncctt - punctuation on function name input lines
+
+DDEESSCCRRIIPPTTIIOONN
+ _d_o_u_b_l_e ssiinn(), cos
+
+OpenBSD November 20, 2014 OpenBSD
diff --git a/regress/mdoc/Fo/section.in b/regress/mdoc/Fo/section.in
new file mode 100644
index 00000000..7816ca49
--- /dev/null
+++ b/regress/mdoc/Fo/section.in
@@ -0,0 +1,83 @@
+.Dd April 7, 2010
+.Dt FN-SECTION 3
+.Os OpenBSD
+.Sh NAME
+.Nm Fn-section
+.Nd special handling of Fn in various sections
+.Sh SYNOPSIS
+.Ft int
+.Fn abs "int j"
+.Ft double
+.Fn sin "double x"
+.Sh DESCRIPTION
+.Ft int
+.Fn abs "int j"
+.Ft double
+.Fn sin "double x"
+.Sh RETURN VALUES
+.Ft int
+.Fn abs "int j"
+.Ft double
+.Fn sin "double x"
+.Sh ENVIRONMENT
+.Ft int
+.Fn abs "int j"
+.Ft double
+.Fn sin "double x"
+.Sh FILES
+.Ft int
+.Fn abs "int j"
+.Ft double
+.Fn sin "double x"
+.Sh EXAMPLES
+.Ft int
+.Fn abs "int j"
+.Ft double
+.Fn sin "double x"
+.Sh DIAGNOSTICS
+.Ft int
+.Fn abs "int j"
+.Ft double
+.Fn sin "double x"
+.Sh ERRORS
+.Ft int
+.Fn abs "int j"
+.Ft double
+.Fn sin "double x"
+.Sh SEE ALSO
+.Ft int
+.Fn abs "int j"
+.Ft double
+.Fn sin "double x"
+.Sh STANDARDS
+.Ft int
+.Fn abs "int j"
+.Ft double
+.Fn sin "double x"
+.Sh HISTORY
+.Ft int
+.Fn abs "int j"
+.Ft double
+.Fn sin "double x"
+.Sh AUTHORS
+.Ft int
+.Fn abs "int j"
+.Ft double
+.Fn sin "double x"
+.Sh CAVEATS
+.Ft int
+.Fn abs "int j"
+.Ft double
+.Fn sin "double x"
+.Sh BUGS
+.Ft int
+.Fn abs "int j"
+.Ft double
+.Fn sin "double x"
+.Sh CUSTOM
+.nr nS 1
+.Ft int
+.Fn abs "int j"
+.Ft double
+.Fn sin "double x"
+.nr nS 0
diff --git a/regress/mdoc/Fo/section.out_ascii b/regress/mdoc/Fo/section.out_ascii
new file mode 100644
index 00000000..9273ce84
--- /dev/null
+++ b/regress/mdoc/Fo/section.out_ascii
@@ -0,0 +1,59 @@
+FN-SECTION(3) Library Functions Manual FN-SECTION(3)
+
+NNAAMMEE
+ FFnn--sseeccttiioonn - special handling of Fn in various sections
+
+SSYYNNOOPPSSIISS
+ _i_n_t
+ aabbss(_i_n_t _j);
+
+ _d_o_u_b_l_e
+ ssiinn(_d_o_u_b_l_e _x);
+
+DDEESSCCRRIIPPTTIIOONN
+ _i_n_t aabbss(_i_n_t _j) _d_o_u_b_l_e ssiinn(_d_o_u_b_l_e _x)
+
+RREETTUURRNN VVAALLUUEESS
+ _i_n_t aabbss(_i_n_t _j) _d_o_u_b_l_e ssiinn(_d_o_u_b_l_e _x)
+
+EENNVVIIRROONNMMEENNTT
+ _i_n_t aabbss(_i_n_t _j) _d_o_u_b_l_e ssiinn(_d_o_u_b_l_e _x)
+
+FFIILLEESS
+ _i_n_t aabbss(_i_n_t _j) _d_o_u_b_l_e ssiinn(_d_o_u_b_l_e _x)
+
+EEXXAAMMPPLLEESS
+ _i_n_t aabbss(_i_n_t _j) _d_o_u_b_l_e ssiinn(_d_o_u_b_l_e _x)
+
+DDIIAAGGNNOOSSTTIICCSS
+ _i_n_t aabbss(_i_n_t _j) _d_o_u_b_l_e ssiinn(_d_o_u_b_l_e _x)
+
+EERRRROORRSS
+ _i_n_t aabbss(_i_n_t _j) _d_o_u_b_l_e ssiinn(_d_o_u_b_l_e _x)
+
+SSEEEE AALLSSOO
+ _i_n_t aabbss(_i_n_t _j) _d_o_u_b_l_e ssiinn(_d_o_u_b_l_e _x)
+
+SSTTAANNDDAARRDDSS
+ _i_n_t aabbss(_i_n_t _j) _d_o_u_b_l_e ssiinn(_d_o_u_b_l_e _x)
+
+HHIISSTTOORRYY
+ _i_n_t aabbss(_i_n_t _j) _d_o_u_b_l_e ssiinn(_d_o_u_b_l_e _x)
+
+AAUUTTHHOORRSS
+ _i_n_t aabbss(_i_n_t _j) _d_o_u_b_l_e ssiinn(_d_o_u_b_l_e _x)
+
+CCAAVVEEAATTSS
+ _i_n_t aabbss(_i_n_t _j) _d_o_u_b_l_e ssiinn(_d_o_u_b_l_e _x)
+
+BBUUGGSS
+ _i_n_t aabbss(_i_n_t _j) _d_o_u_b_l_e ssiinn(_d_o_u_b_l_e _x)
+
+CCUUSSTTOOMM
+ _i_n_t
+ aabbss(_i_n_t _j);
+
+ _d_o_u_b_l_e
+ ssiinn(_d_o_u_b_l_e _x);
+
+OpenBSD April 7, 2010 OpenBSD
diff --git a/regress/mdoc/Fo/warn.in b/regress/mdoc/Fo/warn.in
new file mode 100644
index 00000000..d41e658c
--- /dev/null
+++ b/regress/mdoc/Fo/warn.in
@@ -0,0 +1,13 @@
+.Dd October 11, 2014
+.Dt FO-WARN 1
+.Os OpenBSD
+.Sh NAME
+.Nm Fo-warn
+.Nd warnings related to function blocks
+.Sh SYNOPSIS
+.Ft double
+.Fo sin()
+.Fa "double x"
+.Fc
+.Ft double
+.Fn atan2 "double y, double x"
diff --git a/regress/mdoc/Fo/warn.out_ascii b/regress/mdoc/Fo/warn.out_ascii
new file mode 100644
index 00000000..fd1890b5
--- /dev/null
+++ b/regress/mdoc/Fo/warn.out_ascii
@@ -0,0 +1,13 @@
+FO-WARN(1) General Commands Manual FO-WARN(1)
+
+NNAAMMEE
+ FFoo--wwaarrnn - warnings related to function blocks
+
+SSYYNNOOPPSSIISS
+ _d_o_u_b_l_e
+ ssiinn(())(_d_o_u_b_l_e _x);
+
+ _d_o_u_b_l_e
+ aattaann22(_d_o_u_b_l_e _y_, _d_o_u_b_l_e _x);
+
+OpenBSD October 11, 2014 OpenBSD
diff --git a/regress/mdoc/Fo/warn.out_lint b/regress/mdoc/Fo/warn.out_lint
new file mode 100644
index 00000000..09fc534f
--- /dev/null
+++ b/regress/mdoc/Fo/warn.out_lint
@@ -0,0 +1,2 @@
+mandoc: warn.in:9:8: WARNING: parenthesis in function name: sin()
+mandoc: warn.in:13:19: WARNING: comma in function argument: double y, double x
diff --git a/regress/mdoc/Ft/Makefile b/regress/mdoc/Ft/Makefile
new file mode 100644
index 00000000..915e456c
--- /dev/null
+++ b/regress/mdoc/Ft/Makefile
@@ -0,0 +1,5 @@
+# $OpenBSD: Makefile,v 1.1 2012/07/09 17:52:09 schwarze Exp $
+
+REGRESS_TARGETS = font
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Ft/font.in b/regress/mdoc/Ft/font.in
new file mode 100644
index 00000000..6304aadd
--- /dev/null
+++ b/regress/mdoc/Ft/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt FT-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ft-font
+.Nd changing fonts inside the function return type macro
+.Sh DESCRIPTION
+normal text
+.Ft emphasis\\fBbold\\fPback
+trailing text
diff --git a/regress/mdoc/Ft/font.out_ascii b/regress/mdoc/Ft/font.out_ascii
new file mode 100644
index 00000000..ded66eca
--- /dev/null
+++ b/regress/mdoc/Ft/font.out_ascii
@@ -0,0 +1,9 @@
+FT-FONT(1) General Commands Manual FT-FONT(1)
+
+NNAAMMEE
+ FFtt--ffoonntt - changing fonts inside the function return type macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text _e_m_p_h_a_s_i_sbboolldd_b_a_c_k trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Ic/Makefile b/regress/mdoc/Ic/Makefile
new file mode 100644
index 00000000..1be2a84a
--- /dev/null
+++ b/regress/mdoc/Ic/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.4 2014/07/02 20:18:42 schwarze Exp $
+
+REGRESS_TARGETS = noarg font
+LINT_TARGETS = noarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Ic/font.in b/regress/mdoc/Ic/font.in
new file mode 100644
index 00000000..26e80298
--- /dev/null
+++ b/regress/mdoc/Ic/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt IC-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ic-font
+.Nd changing fonts inside the internal command macro
+.Sh DESCRIPTION
+normal text
+.Ic bold\\fIemphasis\\fPback
+trailing text
diff --git a/regress/mdoc/Ic/font.out_ascii b/regress/mdoc/Ic/font.out_ascii
new file mode 100644
index 00000000..6267aed3
--- /dev/null
+++ b/regress/mdoc/Ic/font.out_ascii
@@ -0,0 +1,9 @@
+IC-FONT(1) General Commands Manual IC-FONT(1)
+
+NNAAMMEE
+ IIcc--ffoonntt - changing fonts inside the internal command macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text bboolldd_e_m_p_h_a_s_i_sbbaacckk trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Ic/noarg.in b/regress/mdoc/Ic/noarg.in
new file mode 100644
index 00000000..76c22e7b
--- /dev/null
+++ b/regress/mdoc/Ic/noarg.in
@@ -0,0 +1,12 @@
+.Dd January 19, 2011
+.Dt IC-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ic-noarg
+.Nd interactive command without an argument
+.Sh DESCRIPTION
+with command:
+.Ic ls
+no command:
+.Ic
+end of test document
diff --git a/regress/mdoc/Ic/noarg.out_ascii b/regress/mdoc/Ic/noarg.out_ascii
new file mode 100644
index 00000000..c5dda265
--- /dev/null
+++ b/regress/mdoc/Ic/noarg.out_ascii
@@ -0,0 +1,9 @@
+IC-NOARG(1) General Commands Manual IC-NOARG(1)
+
+NNAAMMEE
+ IIcc--nnooaarrgg - interactive command without an argument
+
+DDEESSCCRRIIPPTTIIOONN
+ with command: llss no command: end of test document
+
+OpenBSD January 19, 2011 OpenBSD
diff --git a/regress/mdoc/Ic/noarg.out_lint b/regress/mdoc/Ic/noarg.out_lint
new file mode 100644
index 00000000..5ae495bd
--- /dev/null
+++ b/regress/mdoc/Ic/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:11:2: WARNING: skipping empty macro: Ic
diff --git a/regress/mdoc/In/Makefile b/regress/mdoc/In/Makefile
new file mode 100644
index 00000000..790827bb
--- /dev/null
+++ b/regress/mdoc/In/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.6 2015/02/06 01:07:07 schwarze Exp $
+
+REGRESS_TARGETS = break eos font noarg
+LINT_TARGETS = noarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/In/break.in b/regress/mdoc/In/break.in
new file mode 100644
index 00000000..0e26731b
--- /dev/null
+++ b/regress/mdoc/In/break.in
@@ -0,0 +1,26 @@
+.Dd June 6, 2010
+.Dt IN-BREAK 2
+.Os OpenBSD
+.Sh NAME
+.Nm In-break
+.Nd line break before header include file
+.Sh SYNOPSIS
+.In fcntl.h
+.Ft int
+.Fn open "const char *path" "int flags" "mode_t mode"
+.In sys/types.h
+.In unistd.h
+.Ft int
+.Fn dup "int oldd"
+.Ft ssize_t
+.Fn write "int d" "const void *buf" "size_t nbytes"
+.Sh DESCRIPTION
+.In fcntl.h
+.Ft int
+.Fn open "const char *path" "int flags" "mode_t mode"
+.In sys/types.h
+.In unistd.h
+.Ft int
+.Fn dup "int oldd"
+.Ft ssize_t
+.Fn write "int d" "const void *buf" "size_t nbytes"
diff --git a/regress/mdoc/In/break.out_ascii b/regress/mdoc/In/break.out_ascii
new file mode 100644
index 00000000..d6488f81
--- /dev/null
+++ b/regress/mdoc/In/break.out_ascii
@@ -0,0 +1,26 @@
+IN-BREAK(2) System Calls Manual IN-BREAK(2)
+
+NNAAMMEE
+ IInn--bbrreeaakk - line break before header include file
+
+SSYYNNOOPPSSIISS
+ ##iinncclluuddee <<ffccnnttll..hh>>
+
+ _i_n_t
+ ooppeenn(_c_o_n_s_t _c_h_a_r _*_p_a_t_h, _i_n_t _f_l_a_g_s, _m_o_d_e___t _m_o_d_e);
+
+ ##iinncclluuddee <<ssyyss//ttyyppeess..hh>>
+ ##iinncclluuddee <<uunniissttdd..hh>>
+
+ _i_n_t
+ dduupp(_i_n_t _o_l_d_d);
+
+ _s_s_i_z_e___t
+ wwrriittee(_i_n_t _d, _c_o_n_s_t _v_o_i_d _*_b_u_f, _s_i_z_e___t _n_b_y_t_e_s);
+
+DDEESSCCRRIIPPTTIIOONN
+ <_f_c_n_t_l_._h> _i_n_t ooppeenn(_c_o_n_s_t _c_h_a_r _*_p_a_t_h, _i_n_t _f_l_a_g_s, _m_o_d_e___t _m_o_d_e)
+ <_s_y_s_/_t_y_p_e_s_._h> <_u_n_i_s_t_d_._h> _i_n_t dduupp(_i_n_t _o_l_d_d) _s_s_i_z_e___t wwrriittee(_i_n_t _d, _c_o_n_s_t
+ _v_o_i_d _*_b_u_f, _s_i_z_e___t _n_b_y_t_e_s)
+
+OpenBSD June 6, 2010 OpenBSD
diff --git a/regress/mdoc/In/eos.in b/regress/mdoc/In/eos.in
new file mode 100644
index 00000000..929c2be9
--- /dev/null
+++ b/regress/mdoc/In/eos.in
@@ -0,0 +1,10 @@
+.Dd November 16, 2012
+.Dt IN-EOS 1
+.Os OpenBSD
+.Sh NAME
+.Nm In-eos
+.Nd end of sentence handling after the include macro
+.Sh DESCRIPTION
+Let's use
+.In string.h .
+And then something else.
diff --git a/regress/mdoc/In/eos.out_ascii b/regress/mdoc/In/eos.out_ascii
new file mode 100644
index 00000000..4f5a1036
--- /dev/null
+++ b/regress/mdoc/In/eos.out_ascii
@@ -0,0 +1,9 @@
+IN-EOS(1) General Commands Manual IN-EOS(1)
+
+NNAAMMEE
+ IInn--eeooss - end of sentence handling after the include macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Let's use <_s_t_r_i_n_g_._h>. And then something else.
+
+OpenBSD November 16, 2012 OpenBSD
diff --git a/regress/mdoc/In/font.in b/regress/mdoc/In/font.in
new file mode 100644
index 00000000..e24ab18d
--- /dev/null
+++ b/regress/mdoc/In/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt IN-FONT 2
+.Os OpenBSD
+.Sh NAME
+.Nm In-font
+.Nd changing the font inside the include macro
+.Sh DESCRIPTION
+normal text
+.In prefix\\fBheader\\fPsuffix
+trailing text
diff --git a/regress/mdoc/In/font.out_ascii b/regress/mdoc/In/font.out_ascii
new file mode 100644
index 00000000..7d1948e4
--- /dev/null
+++ b/regress/mdoc/In/font.out_ascii
@@ -0,0 +1,9 @@
+IN-FONT(2) System Calls Manual IN-FONT(2)
+
+NNAAMMEE
+ IInn--ffoonntt - changing the font inside the include macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text <_p_r_e_f_i_xhheeaaddeerr_s_u_f_f_i_x> trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/In/noarg.in b/regress/mdoc/In/noarg.in
new file mode 100644
index 00000000..f443637a
--- /dev/null
+++ b/regress/mdoc/In/noarg.in
@@ -0,0 +1,20 @@
+.Dd February 5, 2015
+.Dt IN-NOARG 2
+.Os OpenBSD
+.Sh NAME
+.Nm In-noarg
+.Nd include file macros without argument
+.Sh SYNOPSIS
+.In math.h
+.Ft double
+.Fn sin "double x"
+.In
+.Ft double
+.Fn cos "double x"
+.Sh DESCRIPTION
+.In math.h
+.Ft double
+.Fn sin "double x"
+.In
+.Ft double
+.Fn cos "double x"
diff --git a/regress/mdoc/In/noarg.out_ascii b/regress/mdoc/In/noarg.out_ascii
new file mode 100644
index 00000000..1a86acd6
--- /dev/null
+++ b/regress/mdoc/In/noarg.out_ascii
@@ -0,0 +1,18 @@
+IN-NOARG(2) System Calls Manual IN-NOARG(2)
+
+NNAAMMEE
+ IInn--nnooaarrgg - include file macros without argument
+
+SSYYNNOOPPSSIISS
+ ##iinncclluuddee <<mmaatthh..hh>>
+
+ _d_o_u_b_l_e
+ ssiinn(_d_o_u_b_l_e _x);
+
+ _d_o_u_b_l_e
+ ccooss(_d_o_u_b_l_e _x);
+
+DDEESSCCRRIIPPTTIIOONN
+ <_m_a_t_h_._h> _d_o_u_b_l_e ssiinn(_d_o_u_b_l_e _x) _d_o_u_b_l_e ccooss(_d_o_u_b_l_e _x)
+
+OpenBSD February 5, 2015 OpenBSD
diff --git a/regress/mdoc/In/noarg.out_lint b/regress/mdoc/In/noarg.out_lint
new file mode 100644
index 00000000..3b4e6d22
--- /dev/null
+++ b/regress/mdoc/In/noarg.out_lint
@@ -0,0 +1,2 @@
+mandoc: noarg.in:11:2: WARNING: skipping empty macro: In
+mandoc: noarg.in:18:2: WARNING: skipping empty macro: In
diff --git a/regress/mdoc/Lb/Makefile b/regress/mdoc/Lb/Makefile
new file mode 100644
index 00000000..952e0881
--- /dev/null
+++ b/regress/mdoc/Lb/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.6 2014/07/02 20:18:42 schwarze Exp $
+
+REGRESS_TARGETS = break badargs eos
+LINT_TARGETS = badargs
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Lb/badargs.in b/regress/mdoc/Lb/badargs.in
new file mode 100644
index 00000000..f1fea204
--- /dev/null
+++ b/regress/mdoc/Lb/badargs.in
@@ -0,0 +1,10 @@
+.Dd January 2, 2011
+.Dt LB-BADARGS 3
+.Os OpenBSD
+.Sh NAME
+.Nm Lb-badargs
+.Nd bad arguments to the library macro
+.Sh LIBRARY
+.Lb murks
+.Lb
+.Lb mylib another
diff --git a/regress/mdoc/Lb/badargs.out_ascii b/regress/mdoc/Lb/badargs.out_ascii
new file mode 100644
index 00000000..f5bd4afe
--- /dev/null
+++ b/regress/mdoc/Lb/badargs.out_ascii
@@ -0,0 +1,10 @@
+LB-BADARGS(3) Library Functions Manual LB-BADARGS(3)
+
+NNAAMMEE
+ LLbb--bbaaddaarrggss - bad arguments to the library macro
+
+LLIIBBRRAARRYY
+ library ``murks''
+ library ``mylib'' another
+
+OpenBSD January 2, 2011 OpenBSD
diff --git a/regress/mdoc/Lb/badargs.out_lint b/regress/mdoc/Lb/badargs.out_lint
new file mode 100644
index 00000000..52af647d
--- /dev/null
+++ b/regress/mdoc/Lb/badargs.out_lint
@@ -0,0 +1 @@
+mandoc: badargs.in:9:2: WARNING: skipping empty macro: Lb
diff --git a/regress/mdoc/Lb/break.in b/regress/mdoc/Lb/break.in
new file mode 100644
index 00000000..a6c3d1bf
--- /dev/null
+++ b/regress/mdoc/Lb/break.in
@@ -0,0 +1,12 @@
+.Dd June 30, 2010
+.Dt LB-BREAK 3
+.Os OpenBSD
+.Sh NAME
+.Nm Lb-break
+.Nd output line breaks after the library macro
+.Sh LIBRARY
+.Lb mylib
+text
+.Sh DESCRIPTION
+.Lb mylib
+text
diff --git a/regress/mdoc/Lb/break.out_ascii b/regress/mdoc/Lb/break.out_ascii
new file mode 100644
index 00000000..6c9e5698
--- /dev/null
+++ b/regress/mdoc/Lb/break.out_ascii
@@ -0,0 +1,13 @@
+LB-BREAK(3) Library Functions Manual LB-BREAK(3)
+
+NNAAMMEE
+ LLbb--bbrreeaakk - output line breaks after the library macro
+
+LLIIBBRRAARRYY
+ library ``mylib''
+ text
+
+DDEESSCCRRIIPPTTIIOONN
+ library ``mylib'' text
+
+OpenBSD June 30, 2010 OpenBSD
diff --git a/regress/mdoc/Lb/eos.in b/regress/mdoc/Lb/eos.in
new file mode 100644
index 00000000..f48e71a2
--- /dev/null
+++ b/regress/mdoc/Lb/eos.in
@@ -0,0 +1,10 @@
+.Dd November 17, 2012
+.Dt LB-EOS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Lb-eos
+.Nd end of sentence handling after the library macro
+.Sh DESCRIPTION
+Let's use the
+.Lb mylib .
+And some other libraries.
diff --git a/regress/mdoc/Lb/eos.out_ascii b/regress/mdoc/Lb/eos.out_ascii
new file mode 100644
index 00000000..bbb726f1
--- /dev/null
+++ b/regress/mdoc/Lb/eos.out_ascii
@@ -0,0 +1,9 @@
+LB-EOS(1) General Commands Manual LB-EOS(1)
+
+NNAAMMEE
+ LLbb--eeooss - end of sentence handling after the library macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Let's use the library ``mylib''. And some other libraries.
+
+OpenBSD November 17, 2012 OpenBSD
diff --git a/regress/mdoc/Li/Makefile b/regress/mdoc/Li/Makefile
new file mode 100644
index 00000000..f5afd199
--- /dev/null
+++ b/regress/mdoc/Li/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.4 2014/07/02 20:18:42 schwarze Exp $
+
+REGRESS_TARGETS = punct font
+LINT_TARGETS = punct
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Li/font.in b/regress/mdoc/Li/font.in
new file mode 100644
index 00000000..d15d61bb
--- /dev/null
+++ b/regress/mdoc/Li/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt LI-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Li-font
+.Nd changing fonts inside the literal in-line macro
+.Sh DESCRIPTION
+normal text
+.Li literal\\fIemphasis\\fPback
+trailing text
diff --git a/regress/mdoc/Li/font.out_ascii b/regress/mdoc/Li/font.out_ascii
new file mode 100644
index 00000000..4e012881
--- /dev/null
+++ b/regress/mdoc/Li/font.out_ascii
@@ -0,0 +1,9 @@
+LI-FONT(1) General Commands Manual LI-FONT(1)
+
+NNAAMMEE
+ LLii--ffoonntt - changing fonts inside the literal in-line macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text literal_e_m_p_h_a_s_i_sback trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Li/punct.in b/regress/mdoc/Li/punct.in
new file mode 100644
index 00000000..331e55da
--- /dev/null
+++ b/regress/mdoc/Li/punct.in
@@ -0,0 +1,83 @@
+.Dd November 17, 2014
+.Dt LI-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Li-punct
+.Nd punctuation following a literal macro
+.Sh DESCRIPTION
+Leading punctuation:
+.Li ( b
+.Li [ b
+.Li | b
+.Li . b
+.Li , b
+.Li ; b
+.Li : b
+.Li ? b
+.Li ! b
+.Li ) b
+.Li ] b
+.Pp
+Trailing punctuation:
+.Li a (
+.Li a [
+.Li a |
+.Li a .
+.Li a ,
+.Li a ;
+.Li a :
+.Li a ?
+.Li a !
+.Li a )
+.Li a ]
+.Pp
+Middle punctuation:
+.Li a ( b
+.Li a [ b
+.Li a | b
+.Li a . b
+.Li a , b
+.Li a ; b
+.Li a : b
+.Li a ? b
+.Li a ! b
+.Li a ) b
+.Li a ] b
+.Pp
+Isolated punctuation:
+.Li a Li ( Li b
+.Li a Li [ Li b
+.Li a Li | Li b
+.Li a Li . Li b
+.Li a Li , Li b
+.Li a Li ; Li b
+.Li a Li : Li b
+.Li a Li ? Li b
+.Li a Li ! Li b
+.Li a Li ) Li b
+.Li a Li ] Li b
+.Pp
+Isolated trailing punctuation:
+.Li a Li (
+.Li a Li [
+.Li a Li |
+.Li a Li .
+.Li a Li ,
+.Li a Li ;
+.Li a Li :
+.Li a Li ?
+.Li a Li !
+.Li a Li )
+.Li a Li ]
+.Pp
+Multiple isolated punctuation:
+.Li a Li ( [ Li b
+.Li a Li ) ] Li b
+.Pp
+Multiple punctuation:
+.Li [ ( arg ) ] .
+.Pp
+Quoted:
+.Li "a . b Nm"
+.Li ". b Nm"
+.Li "."
diff --git a/regress/mdoc/Li/punct.out_ascii b/regress/mdoc/Li/punct.out_ascii
new file mode 100644
index 00000000..ae7d3f62
--- /dev/null
+++ b/regress/mdoc/Li/punct.out_ascii
@@ -0,0 +1,26 @@
+LI-PUNCT(1) General Commands Manual LI-PUNCT(1)
+
+NNAAMMEE
+ LLii--ppuunncctt - punctuation following a literal macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Leading punctuation: (b [b | b . b , b ; b : b ? b ! b ) b ] b
+
+ Trailing punctuation: a ( a [ a | a. a, a; a: a? a! a) a]
+
+ Middle punctuation: a (b a [b a | b a. b a, b a; b a: b a? b a! b a) b a]
+ b
+
+ Isolated punctuation: a (b a [b a | b a . b a , b a ; b a : b a ? b a ! b
+ a ) b a ] b
+
+ Isolated trailing punctuation: a ( a [ a | a . a , a ; a : a ? a ! a )
+ a ]
+
+ Multiple isolated punctuation: a ([b a )] b
+
+ Multiple punctuation: [(arg)].
+
+ Quoted: a . b Nm . b Nm .
+
+OpenBSD November 17, 2014 OpenBSD
diff --git a/regress/mdoc/Li/punct.out_lint b/regress/mdoc/Li/punct.out_lint
new file mode 100644
index 00000000..3abdf12f
--- /dev/null
+++ b/regress/mdoc/Li/punct.out_lint
@@ -0,0 +1,24 @@
+mandoc: punct.in:48:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:49:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:50:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:51:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:52:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:53:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:54:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:55:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:56:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:57:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:58:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:61:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:62:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:63:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:64:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:65:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:66:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:67:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:68:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:69:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:70:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:71:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:74:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:75:7: WARNING: skipping empty macro: Li
diff --git a/regress/mdoc/Lk/Makefile b/regress/mdoc/Lk/Makefile
new file mode 100644
index 00000000..d9cbbe95
--- /dev/null
+++ b/regress/mdoc/Lk/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.3 2014/07/02 20:18:42 schwarze Exp $
+
+REGRESS_TARGETS = link noarg font
+LINT_TARGETS = noarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Lk/font.in b/regress/mdoc/Lk/font.in
new file mode 100644
index 00000000..23af0554
--- /dev/null
+++ b/regress/mdoc/Lk/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt LK-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Lk-font
+.Nd changing the font inside the hyperlink macro
+.Sh DESCRIPTION
+normal text
+.Lk http://www.\\fIopenbsd\\fP.org/ Open\\fBBSD\\fPweb
+trailing text
diff --git a/regress/mdoc/Lk/font.out_ascii b/regress/mdoc/Lk/font.out_ascii
new file mode 100644
index 00000000..5c0425a1
--- /dev/null
+++ b/regress/mdoc/Lk/font.out_ascii
@@ -0,0 +1,9 @@
+LK-FONT(1) General Commands Manual LK-FONT(1)
+
+NNAAMMEE
+ LLkk--ffoonntt - changing the font inside the hyperlink macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text _O_p_e_nBBSSDD_w_e_b_: hhttttpp::////wwwwww.._o_p_e_n_b_s_d..oorrgg// trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Lk/link.in b/regress/mdoc/Lk/link.in
new file mode 100644
index 00000000..b5ea4901
--- /dev/null
+++ b/regress/mdoc/Lk/link.in
@@ -0,0 +1,16 @@
+.Dd August 8, 2010
+.Dt LK-LINK 1
+.Os OpenBSD
+.Sh NAME
+.Nm Lk-link
+.Nd formatting of hyperlinks
+.Sh DESCRIPTION
+Here are some web sites of BSD operating systems:
+.Lk http://www.freebsd.org/ FreeBSD
+.Lk http://www.netbsd.org/ NetBSD
+.Lk http://www.openbsd.org/ OpenBSD
+.Sh SEE ALSO
+Here are some web sites of BSD operating systems:
+.Lk http://www.freebsd.org/ FreeBSD
+.Lk http://www.netbsd.org/ NetBSD
+.Lk http://www.openbsd.org/ OpenBSD
diff --git a/regress/mdoc/Lk/link.out_ascii b/regress/mdoc/Lk/link.out_ascii
new file mode 100644
index 00000000..90d736e0
--- /dev/null
+++ b/regress/mdoc/Lk/link.out_ascii
@@ -0,0 +1,16 @@
+LK-LINK(1) General Commands Manual LK-LINK(1)
+
+NNAAMMEE
+ LLkk--lliinnkk - formatting of hyperlinks
+
+DDEESSCCRRIIPPTTIIOONN
+ Here are some web sites of BSD operating systems: _F_r_e_e_B_S_D_:
+ hhttttpp::////wwwwww..ffrreeeebbssdd..oorrgg// _N_e_t_B_S_D_: hhttttpp::////wwwwww..nneettbbssdd..oorrgg// _O_p_e_n_B_S_D_:
+ hhttttpp::////wwwwww..ooppeennbbssdd..oorrgg//
+
+SSEEEE AALLSSOO
+ Here are some web sites of BSD operating systems: _F_r_e_e_B_S_D_:
+ hhttttpp::////wwwwww..ffrreeeebbssdd..oorrgg// _N_e_t_B_S_D_: hhttttpp::////wwwwww..nneettbbssdd..oorrgg// _O_p_e_n_B_S_D_:
+ hhttttpp::////wwwwww..ooppeennbbssdd..oorrgg//
+
+OpenBSD August 8, 2010 OpenBSD
diff --git a/regress/mdoc/Lk/noarg.in b/regress/mdoc/Lk/noarg.in
new file mode 100644
index 00000000..068c57f6
--- /dev/null
+++ b/regress/mdoc/Lk/noarg.in
@@ -0,0 +1,14 @@
+.Dd January 19, 2011
+.Dt LK-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Lk-noarg
+.Nd hyperlink macro without arguments
+.Sh DESCRIPTION
+two arguments
+.Lk http://mdocml.bsd.lv/ mandoc
+one argument
+.Lk http://www.openbsd.org/
+no argument
+.Lk
+end of test document
diff --git a/regress/mdoc/Lk/noarg.out_ascii b/regress/mdoc/Lk/noarg.out_ascii
new file mode 100644
index 00000000..8c201f3d
--- /dev/null
+++ b/regress/mdoc/Lk/noarg.out_ascii
@@ -0,0 +1,10 @@
+LK-NOARG(1) General Commands Manual LK-NOARG(1)
+
+NNAAMMEE
+ LLkk--nnooaarrgg - hyperlink macro without arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ two arguments _m_a_n_d_o_c_: hhttttpp::////mmddooccmmll..bbssdd..llvv// one argument
+ hhttttpp::////wwwwww..ooppeennbbssdd..oorrgg// no argument end of test document
+
+OpenBSD January 19, 2011 OpenBSD
diff --git a/regress/mdoc/Lk/noarg.out_lint b/regress/mdoc/Lk/noarg.out_lint
new file mode 100644
index 00000000..d5a3af14
--- /dev/null
+++ b/regress/mdoc/Lk/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:13:2: WARNING: skipping empty macro: Lk
diff --git a/regress/mdoc/Makefile b/regress/mdoc/Makefile
new file mode 100644
index 00000000..86bdcb7a
--- /dev/null
+++ b/regress/mdoc/Makefile
@@ -0,0 +1,9 @@
+# $OpenBSD: Makefile,v 1.32 2017/01/11 17:39:45 schwarze Exp $
+
+SUBDIR = Ad An Ap Aq Ar At Bd Bf Bk Bl Brq Bx Cd Cm
+SUBDIR += D1 Db Dd Dl Dq Dt Dv Em Eo Er Ev Ex Fd Fl Fo Ft Ic In Lb Li Lk
+SUBDIR += Ms Mt Nd Nm No Ns Oo Op Os Ox Pa Pf Pp Qq Rs Rv
+SUBDIR += Sh Sm Sq St Sx Sy Tn Ud Ux Va Vt Xr blank break
+
+.include "../Makefile.sub"
+.include <bsd.subdir.mk>
diff --git a/regress/mdoc/Makefile.inc b/regress/mdoc/Makefile.inc
new file mode 100644
index 00000000..3c6f2384
--- /dev/null
+++ b/regress/mdoc/Makefile.inc
@@ -0,0 +1,3 @@
+# $OpenBSD: Makefile.inc,v 1.1 2009/10/28 03:20:42 schwarze Exp $
+
+.include "../Makefile.inc"
diff --git a/regress/mdoc/Ms/Makefile b/regress/mdoc/Ms/Makefile
new file mode 100644
index 00000000..1be2a84a
--- /dev/null
+++ b/regress/mdoc/Ms/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.4 2014/07/02 20:18:42 schwarze Exp $
+
+REGRESS_TARGETS = noarg font
+LINT_TARGETS = noarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Ms/font.in b/regress/mdoc/Ms/font.in
new file mode 100644
index 00000000..dc841740
--- /dev/null
+++ b/regress/mdoc/Ms/font.in
@@ -0,0 +1,10 @@
+.Dd November 20, 2014
+.Dt MS-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ms-font
+.Nd changing fonts inside the mathematical symbol macro
+.Sh DESCRIPTION
+normal text
+.Ms bold\\fIemphasis\\fPback | after : punctuation
+trailing text
diff --git a/regress/mdoc/Ms/font.out_ascii b/regress/mdoc/Ms/font.out_ascii
new file mode 100644
index 00000000..280aa407
--- /dev/null
+++ b/regress/mdoc/Ms/font.out_ascii
@@ -0,0 +1,9 @@
+MS-FONT(1) General Commands Manual MS-FONT(1)
+
+NNAAMMEE
+ MMss--ffoonntt - changing fonts inside the mathematical symbol macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text bboolldd_e_m_p_h_a_s_i_sbbaacckk | aafftteerr: ppuunnccttuuaattiioonn trailing text
+
+OpenBSD November 20, 2014 OpenBSD
diff --git a/regress/mdoc/Ms/noarg.in b/regress/mdoc/Ms/noarg.in
new file mode 100644
index 00000000..ae283587
--- /dev/null
+++ b/regress/mdoc/Ms/noarg.in
@@ -0,0 +1,12 @@
+.Dd January 19, 2011
+.Dt MS-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ms-noarg
+.Nd mathematical symbol without an argument
+.Sh DESCRIPTION
+with command:
+.Ms alpha
+no command:
+.Ms
+end of test document
diff --git a/regress/mdoc/Ms/noarg.out_ascii b/regress/mdoc/Ms/noarg.out_ascii
new file mode 100644
index 00000000..fa90d0f3
--- /dev/null
+++ b/regress/mdoc/Ms/noarg.out_ascii
@@ -0,0 +1,9 @@
+MS-NOARG(1) General Commands Manual MS-NOARG(1)
+
+NNAAMMEE
+ MMss--nnooaarrgg - mathematical symbol without an argument
+
+DDEESSCCRRIIPPTTIIOONN
+ with command: aallpphhaa no command: end of test document
+
+OpenBSD January 19, 2011 OpenBSD
diff --git a/regress/mdoc/Ms/noarg.out_lint b/regress/mdoc/Ms/noarg.out_lint
new file mode 100644
index 00000000..265fb3e6
--- /dev/null
+++ b/regress/mdoc/Ms/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:11:2: WARNING: skipping empty macro: Ms
diff --git a/regress/mdoc/Mt/Makefile b/regress/mdoc/Mt/Makefile
new file mode 100644
index 00000000..34cbbe19
--- /dev/null
+++ b/regress/mdoc/Mt/Makefile
@@ -0,0 +1,5 @@
+# $OpenBSD: Makefile,v 1.5 2012/07/09 17:52:09 schwarze Exp $
+
+REGRESS_TARGETS = simple font
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Mt/font.in b/regress/mdoc/Mt/font.in
new file mode 100644
index 00000000..66c5ba1f
--- /dev/null
+++ b/regress/mdoc/Mt/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt MT-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Mt-font
+.Nd changing fonts inside the mailto macro
+.Sh DESCRIPTION
+normal text
+.Mt emphasis\\fBbold\\fPback
+trailing text
diff --git a/regress/mdoc/Mt/font.out_ascii b/regress/mdoc/Mt/font.out_ascii
new file mode 100644
index 00000000..f19cc2bf
--- /dev/null
+++ b/regress/mdoc/Mt/font.out_ascii
@@ -0,0 +1,9 @@
+MT-FONT(1) General Commands Manual MT-FONT(1)
+
+NNAAMMEE
+ MMtt--ffoonntt - changing fonts inside the mailto macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text _e_m_p_h_a_s_i_sbboolldd_b_a_c_k trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Mt/simple.in b/regress/mdoc/Mt/simple.in
new file mode 100644
index 00000000..d9e36c3a
--- /dev/null
+++ b/regress/mdoc/Mt/simple.in
@@ -0,0 +1,12 @@
+.Dd February 17, 2010
+.Dt MT-SIMPLE 1
+.Os OpenBSD
+.Sh NAME
+.Nm Mt-simple
+.Nd mailto
+.Sh DESCRIPTION
+Please send mail to
+.Mt schwarze@openbsd.org .
+.Pp
+Do not send mail to
+.Mt .
diff --git a/regress/mdoc/Mt/simple.out_ascii b/regress/mdoc/Mt/simple.out_ascii
new file mode 100644
index 00000000..65cde864
--- /dev/null
+++ b/regress/mdoc/Mt/simple.out_ascii
@@ -0,0 +1,11 @@
+MT-SIMPLE(1) General Commands Manual MT-SIMPLE(1)
+
+NNAAMMEE
+ MMtt--ssiimmppllee - mailto
+
+DDEESSCCRRIIPPTTIIOONN
+ Please send mail to _s_c_h_w_a_r_z_e_@_o_p_e_n_b_s_d_._o_r_g.
+
+ Do not send mail to _~.
+
+OpenBSD February 17, 2010 OpenBSD
diff --git a/regress/mdoc/Nd/Makefile b/regress/mdoc/Nd/Makefile
new file mode 100644
index 00000000..d67804c4
--- /dev/null
+++ b/regress/mdoc/Nd/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.5 2015/02/11 13:37:31 schwarze Exp $
+
+REGRESS_TARGETS = broken hyph noarg par
+LINT_TARGETS = broken noarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Nd/broken.in b/regress/mdoc/Nd/broken.in
new file mode 100644
index 00000000..e61804ac
--- /dev/null
+++ b/regress/mdoc/Nd/broken.in
@@ -0,0 +1,22 @@
+.Dd February 11, 2015
+.Dt ND-BROKEN 1
+.Os OpenBSD
+.Sh NAME
+.Oo
+.Nm Nd-broken
+.Nd description lines ended
+.Oc
+by explicit blocks
+.Sh DESCRIPTION
+Start nested lists:
+.Bl -tag -width Ds
+.Bl -tag -width Ds
+.It inner tag
+inner text
+.Nd inner description
+.El
+back to outer list
+.It outer tag
+outer text
+.El
+end of file
diff --git a/regress/mdoc/Nd/broken.out_ascii b/regress/mdoc/Nd/broken.out_ascii
new file mode 100644
index 00000000..5752f975
--- /dev/null
+++ b/regress/mdoc/Nd/broken.out_ascii
@@ -0,0 +1,17 @@
+ND-BROKEN(1) General Commands Manual ND-BROKEN(1)
+
+NNAAMMEE
+ [NNdd--bbrrookkeenn - description lines ended] by explicit blocks
+
+DDEESSCCRRIIPPTTIIOONN
+ Start nested lists:
+
+ inner tag
+ inner text - inner description
+ back to outer list
+
+ outer tag
+ outer text
+ end of file
+
+OpenBSD February 11, 2015 OpenBSD
diff --git a/regress/mdoc/Nd/broken.out_lint b/regress/mdoc/Nd/broken.out_lint
new file mode 100644
index 00000000..2fc6732b
--- /dev/null
+++ b/regress/mdoc/Nd/broken.out_lint
@@ -0,0 +1,6 @@
+mandoc: broken.in:5:2: WARNING: bad NAME section content: Oo
+mandoc: broken.in:9:1: WARNING: bad NAME section content: text
+mandoc: broken.in:4:2: WARNING: NAME section without Nm before Nd
+mandoc: broken.in:4:2: WARNING: NAME section without description
+mandoc: broken.in:13:2: WARNING: moving content out of list: Bl
+mandoc: broken.in:18:1: WARNING: moving content out of list: text
diff --git a/regress/mdoc/Nd/hyph.in b/regress/mdoc/Nd/hyph.in
new file mode 100644
index 00000000..7922835d
--- /dev/null
+++ b/regress/mdoc/Nd/hyph.in
@@ -0,0 +1,11 @@
+.Dd October 5, 2013
+.Dt ND-HYPH 1
+.Os OpenBSD
+.Sh NAME
+.Nm Nd-hyph
+.Nd when there is already a hyphen within the the word, \
+line-breaking is permitted at that place
+.Sh DESCRIPTION
+Even in the document description line in the
+.Sx NAME
+section.
diff --git a/regress/mdoc/Nd/hyph.out_ascii b/regress/mdoc/Nd/hyph.out_ascii
new file mode 100644
index 00000000..8388b664
--- /dev/null
+++ b/regress/mdoc/Nd/hyph.out_ascii
@@ -0,0 +1,10 @@
+ND-HYPH(1) General Commands Manual ND-HYPH(1)
+
+NNAAMMEE
+ NNdd--hhyypphh - when there is already a hyphen within the the word, line-
+ breaking is permitted at that place
+
+DDEESSCCRRIIPPTTIIOONN
+ Even in the document description line in the _N_A_M_E section.
+
+OpenBSD October 5, 2013 OpenBSD
diff --git a/regress/mdoc/Nd/noarg.in b/regress/mdoc/Nd/noarg.in
new file mode 100644
index 00000000..1c4b619a
--- /dev/null
+++ b/regress/mdoc/Nd/noarg.in
@@ -0,0 +1,8 @@
+.Dd January 2, 2011
+.Dt ND-ARG0 1
+.Os OpenBSD
+.Sh NAME
+.Nm Nd-arg0
+.Nd
+.Sh DESCRIPTION
+empty description line
diff --git a/regress/mdoc/Nd/noarg.out_ascii b/regress/mdoc/Nd/noarg.out_ascii
new file mode 100644
index 00000000..fc78701f
--- /dev/null
+++ b/regress/mdoc/Nd/noarg.out_ascii
@@ -0,0 +1,9 @@
+ND-ARG0(1) General Commands Manual ND-ARG0(1)
+
+NNAAMMEE
+ NNdd--aarrgg00 -
+
+DDEESSCCRRIIPPTTIIOONN
+ empty description line
+
+OpenBSD January 2, 2011 OpenBSD
diff --git a/regress/mdoc/Nd/noarg.out_lint b/regress/mdoc/Nd/noarg.out_lint
new file mode 100644
index 00000000..04e1d91f
--- /dev/null
+++ b/regress/mdoc/Nd/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:6:2: WARNING: missing description line, using "": Nd
diff --git a/regress/mdoc/Nd/par.in b/regress/mdoc/Nd/par.in
new file mode 100644
index 00000000..b056f754
--- /dev/null
+++ b/regress/mdoc/Nd/par.in
@@ -0,0 +1,15 @@
+.Dd February 3, 2015
+.Dt ND-PAR 1
+.Os OpenBSD
+.Sh NAME
+.Nm Nd-par
+.Nd paragraph macro
+after one-line description
+.Pp
+Usually, there shouldn't be additional text in the NAME section.
+.Sh DESCRIPTION
+The text belongs here.
+.Nd stray
+description macro
+.Pp
+Back to normal state.
diff --git a/regress/mdoc/Nd/par.out_ascii b/regress/mdoc/Nd/par.out_ascii
new file mode 100644
index 00000000..c87847b8
--- /dev/null
+++ b/regress/mdoc/Nd/par.out_ascii
@@ -0,0 +1,13 @@
+ND-PAR(1) General Commands Manual ND-PAR(1)
+
+NNAAMMEE
+ NNdd--ppaarr - paragraph macro after one-line description
+
+ Usually, there shouldn't be additional text in the NAME section.
+
+DDEESSCCRRIIPPTTIIOONN
+ The text belongs here. - stray description macro
+
+ Back to normal state.
+
+OpenBSD February 3, 2015 OpenBSD
diff --git a/regress/mdoc/Nm/Makefile b/regress/mdoc/Nm/Makefile
new file mode 100644
index 00000000..d87f43fd
--- /dev/null
+++ b/regress/mdoc/Nm/Makefile
@@ -0,0 +1,24 @@
+# $OpenBSD: Makefile,v 1.13 2017/02/06 03:44:37 schwarze Exp $
+
+REGRESS_TARGETS = badNAME badNAMEuse break broken
+REGRESS_TARGETS += empty emptyNAME emptyNAMEuse
+REGRESS_TARGETS += font long par parns punct
+
+LINT_TARGETS = badNAME badNAMEuse break
+
+# groff-1.22.3/mandoc differences:
+# - When the head of an Nm block in the SYNOPSIS is broken by an
+# explicit block end macro on the same line, formatting differs,
+# but doesn't make sense either way.
+# - Groff doesn't support the nS register.
+
+SKIP_GROFF = broken parns
+SKIP_TMAN = broken par parns
+
+# groff-1.22.3 defect:
+# When a SYNOPSIS Nm block head breaks a sub block, all the
+# remaining content in the document gets lost.
+
+SKIP_GROFF += break
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Nm/badNAME.in b/regress/mdoc/Nm/badNAME.in
new file mode 100644
index 00000000..a882c059
--- /dev/null
+++ b/regress/mdoc/Nm/badNAME.in
@@ -0,0 +1,8 @@
+.Dd July 12, 2012
+.Dt NM-BADNAME 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bx
+.Nd text production macro on the NAME \&Nm line
+.Sh SYNOPSIS
+badNAME
diff --git a/regress/mdoc/Nm/badNAME.out_ascii b/regress/mdoc/Nm/badNAME.out_ascii
new file mode 100644
index 00000000..3c1ff360
--- /dev/null
+++ b/regress/mdoc/Nm/badNAME.out_ascii
@@ -0,0 +1,9 @@
+NM-BADNAME(1) General Commands Manual NM-BADNAME(1)
+
+NNAAMMEE
+ BSD - text production macro on the NAME Nm line
+
+SSYYNNOOPPSSIISS
+ badNAME
+
+OpenBSD July 12, 2012 OpenBSD
diff --git a/regress/mdoc/Nm/badNAME.out_lint b/regress/mdoc/Nm/badNAME.out_lint
new file mode 100644
index 00000000..8a5963d7
--- /dev/null
+++ b/regress/mdoc/Nm/badNAME.out_lint
@@ -0,0 +1,2 @@
+mandoc: badNAME.in:5:2: ERROR: missing manual name, using "": Nm
+mandoc: badNAME.in:5:5: WARNING: bad NAME section content: Bx
diff --git a/regress/mdoc/Nm/badNAMEuse.in b/regress/mdoc/Nm/badNAMEuse.in
new file mode 100644
index 00000000..0ede18d8
--- /dev/null
+++ b/regress/mdoc/Nm/badNAMEuse.in
@@ -0,0 +1,9 @@
+.Dd July 12, 2012
+.Dt NM-BADNAMEUSE 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bx
+.Nd text production macro on the NAME \&Nm line, used later
+.Sh SYNOPSIS
+.Nm some_name
+.Nm
diff --git a/regress/mdoc/Nm/badNAMEuse.out_ascii b/regress/mdoc/Nm/badNAMEuse.out_ascii
new file mode 100644
index 00000000..fd3aa7a5
--- /dev/null
+++ b/regress/mdoc/Nm/badNAMEuse.out_ascii
@@ -0,0 +1,10 @@
+NM-BADNAMEUSE(1) General Commands Manual NM-BADNAMEUSE(1)
+
+NNAAMMEE
+ BSD - text production macro on the NAME Nm line, used later
+
+SSYYNNOOPPSSIISS
+ ssoommee__nnaammee
+ ssoommee__nnaammee
+
+OpenBSD July 12, 2012 OpenBSD
diff --git a/regress/mdoc/Nm/badNAMEuse.out_lint b/regress/mdoc/Nm/badNAMEuse.out_lint
new file mode 100644
index 00000000..7b1c802f
--- /dev/null
+++ b/regress/mdoc/Nm/badNAMEuse.out_lint
@@ -0,0 +1,2 @@
+mandoc: badNAMEuse.in:5:2: ERROR: missing manual name, using "": Nm
+mandoc: badNAMEuse.in:5:5: WARNING: bad NAME section content: Bx
diff --git a/regress/mdoc/Nm/break.in b/regress/mdoc/Nm/break.in
new file mode 100644
index 00000000..203ba98e
--- /dev/null
+++ b/regress/mdoc/Nm/break.in
@@ -0,0 +1,12 @@
+.Dd August 17, 2014
+.Dt NM-BREAK 1
+.Os OpenBSD
+.Sh NAME
+.Nm Nm-break
+.Nd name block head breaking another block
+.Sh SYNOPSIS
+.Nm before Bo within
+.Sh DESCRIPTION
+initial text
+.Nm
+final text
diff --git a/regress/mdoc/Nm/break.out_ascii b/regress/mdoc/Nm/break.out_ascii
new file mode 100644
index 00000000..8b94c330
--- /dev/null
+++ b/regress/mdoc/Nm/break.out_ascii
@@ -0,0 +1,12 @@
+NM-BREAK(1) General Commands Manual NM-BREAK(1)
+
+NNAAMMEE
+ NNmm--bbrreeaakk - name block head breaking another block
+
+SSYYNNOOPPSSIISS
+ bbeeffoorree [[wwiitthhiinn]]
+
+DDEESSCCRRIIPPTTIIOONN
+ initial text NNmm--bbrreeaakk final text
+
+OpenBSD August 17, 2014 OpenBSD
diff --git a/regress/mdoc/Nm/break.out_lint b/regress/mdoc/Nm/break.out_lint
new file mode 100644
index 00000000..409b5812
--- /dev/null
+++ b/regress/mdoc/Nm/break.out_lint
@@ -0,0 +1 @@
+mandoc: break.in:9:2: ERROR: inserting missing end of block: Sh breaks Bo
diff --git a/regress/mdoc/Nm/broken.in b/regress/mdoc/Nm/broken.in
new file mode 100644
index 00000000..58a28bad
--- /dev/null
+++ b/regress/mdoc/Nm/broken.in
@@ -0,0 +1,10 @@
+.Dd February 2, 2015
+.Dt NM-BROKEN 1
+.Os OpenBSD
+.Sh NAME
+.Nm Nm-broken
+.Nd broken synapsis name block
+.Sh SYNOPSIS
+.Ft int
+.Fo function
+.Nm name Fc tail
diff --git a/regress/mdoc/Nm/broken.out_ascii b/regress/mdoc/Nm/broken.out_ascii
new file mode 100644
index 00000000..1f9ed5a2
--- /dev/null
+++ b/regress/mdoc/Nm/broken.out_ascii
@@ -0,0 +1,11 @@
+NM-BROKEN(1) General Commands Manual NM-BROKEN(1)
+
+NNAAMMEE
+ NNmm--bbrrookkeenn - broken synapsis name block
+
+SSYYNNOOPPSSIISS
+ _i_n_t
+ ffuunnccttiioonn(nnaammee);
+ tail
+
+OpenBSD February 2, 2015 OpenBSD
diff --git a/regress/mdoc/Nm/empty.in b/regress/mdoc/Nm/empty.in
new file mode 100644
index 00000000..d135c5c0
--- /dev/null
+++ b/regress/mdoc/Nm/empty.in
@@ -0,0 +1,13 @@
+.Dd June 30, 2010
+.Dt NM-EMPTY 2
+.Os OpenBSD
+.Sh NAME
+.Nm Nm-empty
+.Nd handling of empty name macros
+.Sh SYNOPSIS
+.Nm
+.Nm
+.Sh DESCRIPTION
+The
+.Nm
+utility ...
diff --git a/regress/mdoc/Nm/empty.out_ascii b/regress/mdoc/Nm/empty.out_ascii
new file mode 100644
index 00000000..b01d299e
--- /dev/null
+++ b/regress/mdoc/Nm/empty.out_ascii
@@ -0,0 +1,13 @@
+NM-EMPTY(2) System Calls Manual NM-EMPTY(2)
+
+NNAAMMEE
+ NNmm--eemmppttyy - handling of empty name macros
+
+SSYYNNOOPPSSIISS
+ NNmm--eemmppttyy
+ NNmm--eemmppttyy
+
+DDEESSCCRRIIPPTTIIOONN
+ The NNmm--eemmppttyy utility ...
+
+OpenBSD June 30, 2010 OpenBSD
diff --git a/regress/mdoc/Nm/emptyNAME.in b/regress/mdoc/Nm/emptyNAME.in
new file mode 100644
index 00000000..ac635a8c
--- /dev/null
+++ b/regress/mdoc/Nm/emptyNAME.in
@@ -0,0 +1,8 @@
+.Dd July 12, 2012
+.Dt NM-EMPTYNAME 1
+.Os OpenBSD
+.Sh NAME
+.Nm
+.Nd empty NAME \&Nm line
+.Sh SYNOPSIS
+emptyNAME
diff --git a/regress/mdoc/Nm/emptyNAME.out_ascii b/regress/mdoc/Nm/emptyNAME.out_ascii
new file mode 100644
index 00000000..4041e0f8
--- /dev/null
+++ b/regress/mdoc/Nm/emptyNAME.out_ascii
@@ -0,0 +1,9 @@
+NM-EMPTYNAME(1) General Commands Manual NM-EMPTYNAME(1)
+
+NNAAMMEE
+ - empty NAME Nm line
+
+SSYYNNOOPPSSIISS
+ emptyNAME
+
+OpenBSD July 12, 2012 OpenBSD
diff --git a/regress/mdoc/Nm/emptyNAMEuse.in b/regress/mdoc/Nm/emptyNAMEuse.in
new file mode 100644
index 00000000..9e75e619
--- /dev/null
+++ b/regress/mdoc/Nm/emptyNAMEuse.in
@@ -0,0 +1,9 @@
+.Dd July 12, 2012
+.Dt NM-EMPTYNAMEUSE 1
+.Os OpenBSD
+.Sh NAME
+.Nm
+.Nd empty NAME \&Nm line, used later
+.Sh SYNOPSIS
+.Nm some_name
+.Nm
diff --git a/regress/mdoc/Nm/emptyNAMEuse.out_ascii b/regress/mdoc/Nm/emptyNAMEuse.out_ascii
new file mode 100644
index 00000000..452a7e29
--- /dev/null
+++ b/regress/mdoc/Nm/emptyNAMEuse.out_ascii
@@ -0,0 +1,10 @@
+NM-EMPTYNAMEUSE(1) General Commands Manual NM-EMPTYNAMEUSE(1)
+
+NNAAMMEE
+ - empty NAME Nm line, used later
+
+SSYYNNOOPPSSIISS
+ ssoommee__nnaammee
+ ssoommee__nnaammee
+
+OpenBSD July 12, 2012 OpenBSD
diff --git a/regress/mdoc/Nm/font.in b/regress/mdoc/Nm/font.in
new file mode 100644
index 00000000..c68a501b
--- /dev/null
+++ b/regress/mdoc/Nm/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt NM-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Nm-font
+.Nd changing fonts inside the name macro
+.Sh DESCRIPTION
+normal text
+.Nm bold\\fIemphasis\\fPback
+trailing text
diff --git a/regress/mdoc/Nm/font.out_ascii b/regress/mdoc/Nm/font.out_ascii
new file mode 100644
index 00000000..d6516ae5
--- /dev/null
+++ b/regress/mdoc/Nm/font.out_ascii
@@ -0,0 +1,9 @@
+NM-FONT(1) General Commands Manual NM-FONT(1)
+
+NNAAMMEE
+ NNmm--ffoonntt - changing fonts inside the name macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text bboolldd_e_m_p_h_a_s_i_sbbaacckk trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Nm/long.in b/regress/mdoc/Nm/long.in
new file mode 100644
index 00000000..662360e4
--- /dev/null
+++ b/regress/mdoc/Nm/long.in
@@ -0,0 +1,11 @@
+.Dd April 4, 2014
+.Dt NM-LONG 1
+.Os OpenBSD
+.Sh NAME
+.Nm \&Nm-long
+.Nd long \&Nm in the SYNOPSIS
+.Sh SYNOPSIS
+.Nm "This is a terribly long name, it is so long that it does not fit \
+one one single line -"
+.Fl o
+.Ar
diff --git a/regress/mdoc/Nm/long.out_ascii b/regress/mdoc/Nm/long.out_ascii
new file mode 100644
index 00000000..f6792581
--- /dev/null
+++ b/regress/mdoc/Nm/long.out_ascii
@@ -0,0 +1,14 @@
+NM-LONG(1) General Commands Manual NM-LONG(1)
+
+NNAAMMEE
+ NNmm--lloonngg - long Nm in the SYNOPSIS
+
+SSYYNNOOPPSSIISS
+ TThhiiss iiss aa tteerrrriibbllyy lloonngg nnaammee,, iitt iiss ssoo lloonngg tthhaatt iitt ddooeess nnoott ffiitt oonnee oonnee
+ ssiinnggllee
+ lliinnee
+ --
+ --oo
+ _f_i_l_e _._._.
+
+OpenBSD April 4, 2014 OpenBSD
diff --git a/regress/mdoc/Nm/par.in b/regress/mdoc/Nm/par.in
new file mode 100644
index 00000000..1d5e3ebd
--- /dev/null
+++ b/regress/mdoc/Nm/par.in
@@ -0,0 +1,11 @@
+.Dd February 3, 2015
+.Dt NM-PAR 1
+.Os OpenBSD
+.Sh NAME
+.Nm Nm-par
+.Nd paragraph macro in a synopsis name block
+.Sh SYNOPSIS
+.Nm
+.Fl a
+.Pp
+.Fl b
diff --git a/regress/mdoc/Nm/par.out_ascii b/regress/mdoc/Nm/par.out_ascii
new file mode 100644
index 00000000..8943d37f
--- /dev/null
+++ b/regress/mdoc/Nm/par.out_ascii
@@ -0,0 +1,11 @@
+NM-PAR(1) General Commands Manual NM-PAR(1)
+
+NNAAMMEE
+ NNmm--ppaarr - paragraph macro in a synopsis name block
+
+SSYYNNOOPPSSIISS
+ NNmm--ppaarr --aa
+
+ --bb
+
+OpenBSD February 3, 2015 OpenBSD
diff --git a/regress/mdoc/Nm/parns.in b/regress/mdoc/Nm/parns.in
new file mode 100644
index 00000000..03f2d641
--- /dev/null
+++ b/regress/mdoc/Nm/parns.in
@@ -0,0 +1,23 @@
+.Dd February 3, 2015
+.Dt NM-PAR 1
+.Os OpenBSD
+.Sh NAME
+.Nm Nm-par
+.Nd paragraph macro in a name block
+.Sh DESCRIPTION
+.nr nS 1
+.Nm
+.Fl a
+.Pp
+.Fl b
+.Nm
+.Fl a
+.nr nS 0
+.Pp
+.Fl b
+.nr nS 1
+.Nm
+.Oo Fl a
+.nr nS 0
+.Pp
+.Fl b Oc
diff --git a/regress/mdoc/Nm/parns.out_ascii b/regress/mdoc/Nm/parns.out_ascii
new file mode 100644
index 00000000..daa6331e
--- /dev/null
+++ b/regress/mdoc/Nm/parns.out_ascii
@@ -0,0 +1,17 @@
+NM-PAR(1) General Commands Manual NM-PAR(1)
+
+NNAAMMEE
+ NNmm--ppaarr - paragraph macro in a name block
+
+DDEESSCCRRIIPPTTIIOONN
+ NNmm--ppaarr --aa
+
+ --bb
+ NNmm--ppaarr --aa
+
+ --bb
+ NNmm--ppaarr [--aa
+
+ --bb]
+
+OpenBSD February 3, 2015 OpenBSD
diff --git a/regress/mdoc/Nm/punct.in b/regress/mdoc/Nm/punct.in
new file mode 100644
index 00000000..254adfdf
--- /dev/null
+++ b/regress/mdoc/Nm/punct.in
@@ -0,0 +1,39 @@
+.Dd August 21, 2014
+.Dt NM-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Nm-punct
+.Nd punctuation handling by the Nm macro
+.Sh DESCRIPTION
+closing punctuation
+.Nm a )
+only one
+.Nm )
+only more than one
+.Nm ) )
+middle
+.Nm a ) z
+start
+.Nm ) z
+dot
+.Nm . z
+comma
+.Nm , z
+semicolon
+.Nm ; z
+colon
+.Nm : z
+quest
+.Nm ? z
+excl
+.Nm ! z
+paren
+.Nm ) z
+bracket
+.Nm ] z
+bar
+.Nm | m
+op paren
+.Nm ( a
+op bracket
+.Nm [ a
diff --git a/regress/mdoc/Nm/punct.out_ascii b/regress/mdoc/Nm/punct.out_ascii
new file mode 100644
index 00000000..74cb98f4
--- /dev/null
+++ b/regress/mdoc/Nm/punct.out_ascii
@@ -0,0 +1,12 @@
+NM-PUNCT(1) General Commands Manual NM-PUNCT(1)
+
+NNAAMMEE
+ NNmm--ppuunncctt - punctuation handling by the Nm macro
+
+DDEESSCCRRIIPPTTIIOONN
+ closing punctuation aa) only one NNmm--ppuunncctt) only more than one NNmm--ppuunncctt))
+ middle aa) zz start NNmm--ppuunncctt) z dot NNmm--ppuunncctt. z comma NNmm--ppuunncctt, z semicolon
+ NNmm--ppuunncctt; z colon NNmm--ppuunncctt: z quest NNmm--ppuunncctt? z excl NNmm--ppuunncctt! z paren
+ NNmm--ppuunncctt) z bracket NNmm--ppuunncctt] z bar | mm op paren (aa op bracket [aa
+
+OpenBSD August 21, 2014 OpenBSD
diff --git a/regress/mdoc/No/Makefile b/regress/mdoc/No/Makefile
new file mode 100644
index 00000000..3110bf2b
--- /dev/null
+++ b/regress/mdoc/No/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.4 2014/11/17 06:44:35 schwarze Exp $
+
+REGRESS_TARGETS = punct spacing
+LINT_TARGETS = punct
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/No/punct.in b/regress/mdoc/No/punct.in
new file mode 100644
index 00000000..b4d8ef73
--- /dev/null
+++ b/regress/mdoc/No/punct.in
@@ -0,0 +1,83 @@
+.Dd November 17, 2014
+.Dt NO-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm No-punct
+.Nd punctuation after the normal macro
+.Sh DESCRIPTION
+Leading punctuation:
+.No ( b
+.No [ b
+.No | b
+.No . b
+.No , b
+.No ; b
+.No : b
+.No ? b
+.No ! b
+.No ) b
+.No ] b
+.Pp
+Trailing punctuation:
+.No a (
+.No a [
+.No a |
+.No a .
+.No a ,
+.No a ;
+.No a :
+.No a ?
+.No a !
+.No a )
+.No a ]
+.Pp
+Middle punctuation:
+.No a ( b
+.No a [ b
+.No a | b
+.No a . b
+.No a , b
+.No a ; b
+.No a : b
+.No a ? b
+.No a ! b
+.No a ) b
+.No a ] b
+.Pp
+Isolated punctuation:
+.No a No ( No b
+.No a No [ No b
+.No a No | No b
+.No a No . No b
+.No a No , No b
+.No a No ; No b
+.No a No : No b
+.No a No ? No b
+.No a No ! No b
+.No a No ) No b
+.No a No ] No b
+.Pp
+Isolated trailing punctuation:
+.No a No (
+.No a No [
+.No a No |
+.No a No .
+.No a No ,
+.No a No ;
+.No a No :
+.No a No ?
+.No a No !
+.No a No )
+.No a No ]
+.Pp
+Multiple isolated punctuation:
+.No a No ( [ No b
+.No a No ) ] No b
+.Pp
+Multiple punctuation:
+.No [ ( arg ) ] .
+.Pp
+Quoted:
+.No "a . b Nm"
+.No ". b Nm"
+.No "."
diff --git a/regress/mdoc/No/punct.out_ascii b/regress/mdoc/No/punct.out_ascii
new file mode 100644
index 00000000..eca39c42
--- /dev/null
+++ b/regress/mdoc/No/punct.out_ascii
@@ -0,0 +1,26 @@
+NO-PUNCT(1) General Commands Manual NO-PUNCT(1)
+
+NNAAMMEE
+ NNoo--ppuunncctt - punctuation after the normal macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Leading punctuation: (b [b | b . b , b ; b : b ? b ! b ) b ] b
+
+ Trailing punctuation: a ( a [ a | a. a, a; a: a? a! a) a]
+
+ Middle punctuation: a (b a [b a | b a. b a, b a; b a: b a? b a! b a) b a]
+ b
+
+ Isolated punctuation: a (b a [b a | b a . b a , b a ; b a : b a ? b a ! b
+ a ) b a ] b
+
+ Isolated trailing punctuation: a ( a [ a | a . a , a ; a : a ? a ! a )
+ a ]
+
+ Multiple isolated punctuation: a ([b a )] b
+
+ Multiple punctuation: [(arg)].
+
+ Quoted: a . b Nm . b Nm .
+
+OpenBSD November 17, 2014 OpenBSD
diff --git a/regress/mdoc/No/punct.out_lint b/regress/mdoc/No/punct.out_lint
new file mode 100644
index 00000000..cd2fd00f
--- /dev/null
+++ b/regress/mdoc/No/punct.out_lint
@@ -0,0 +1,24 @@
+mandoc: punct.in:48:7: WARNING: skipping empty macro: No
+mandoc: punct.in:49:7: WARNING: skipping empty macro: No
+mandoc: punct.in:50:7: WARNING: skipping empty macro: No
+mandoc: punct.in:51:7: WARNING: skipping empty macro: No
+mandoc: punct.in:52:7: WARNING: skipping empty macro: No
+mandoc: punct.in:53:7: WARNING: skipping empty macro: No
+mandoc: punct.in:54:7: WARNING: skipping empty macro: No
+mandoc: punct.in:55:7: WARNING: skipping empty macro: No
+mandoc: punct.in:56:7: WARNING: skipping empty macro: No
+mandoc: punct.in:57:7: WARNING: skipping empty macro: No
+mandoc: punct.in:58:7: WARNING: skipping empty macro: No
+mandoc: punct.in:61:7: WARNING: skipping empty macro: No
+mandoc: punct.in:62:7: WARNING: skipping empty macro: No
+mandoc: punct.in:63:7: WARNING: skipping empty macro: No
+mandoc: punct.in:64:7: WARNING: skipping empty macro: No
+mandoc: punct.in:65:7: WARNING: skipping empty macro: No
+mandoc: punct.in:66:7: WARNING: skipping empty macro: No
+mandoc: punct.in:67:7: WARNING: skipping empty macro: No
+mandoc: punct.in:68:7: WARNING: skipping empty macro: No
+mandoc: punct.in:69:7: WARNING: skipping empty macro: No
+mandoc: punct.in:70:7: WARNING: skipping empty macro: No
+mandoc: punct.in:71:7: WARNING: skipping empty macro: No
+mandoc: punct.in:74:7: WARNING: skipping empty macro: No
+mandoc: punct.in:75:7: WARNING: skipping empty macro: No
diff --git a/regress/mdoc/No/spacing.in b/regress/mdoc/No/spacing.in
new file mode 100644
index 00000000..bfaffe31
--- /dev/null
+++ b/regress/mdoc/No/spacing.in
@@ -0,0 +1,24 @@
+.Dd October 1, 2010
+.Dt NO-SPACING 1
+.Os OpenBSD
+.Sh NAME
+.Nm No-spacing
+.Nd spacing around the normal macro
+.Sh DESCRIPTION
+Text before
+.No and
+after the macro.
+Macros on the line
+.Op before
+.No and
+.Op after
+the macro.
+Macros
+.Em before No and Em after
+the macro on the same line.
+Punctuation before (
+.No and
+) after the macro.
+The macro
+.Op No in
+an enclosure.
diff --git a/regress/mdoc/No/spacing.out_ascii b/regress/mdoc/No/spacing.out_ascii
new file mode 100644
index 00000000..5a25b4a3
--- /dev/null
+++ b/regress/mdoc/No/spacing.out_ascii
@@ -0,0 +1,11 @@
+NO-SPACING(1) General Commands Manual NO-SPACING(1)
+
+NNAAMMEE
+ NNoo--ssppaacciinngg - spacing around the normal macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Text before and after the macro. Macros on the line [before] and [after]
+ the macro. Macros _b_e_f_o_r_e and _a_f_t_e_r the macro on the same line.
+ Punctuation before ( and ) after the macro. The macro [in] an enclosure.
+
+OpenBSD October 1, 2010 OpenBSD
diff --git a/regress/mdoc/Ns/Makefile b/regress/mdoc/Ns/Makefile
new file mode 100644
index 00000000..45db66cc
--- /dev/null
+++ b/regress/mdoc/Ns/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.5 2014/07/02 11:42:56 schwarze Exp $
+
+REGRESS_TARGETS = position punct
+LINT_TARGETS = position
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Ns/position.in b/regress/mdoc/Ns/position.in
new file mode 100644
index 00000000..1325df25
--- /dev/null
+++ b/regress/mdoc/Ns/position.in
@@ -0,0 +1,29 @@
+.Dd September 15, 2013
+.Dt NS-POSITION 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ns-position
+.Nd effect of the position of the no space macro on the line
+.Sh DESCRIPTION
+At the beginning of a macro line:
+.Op before
+.Ns Op after
+.Pp
+After just a block closing macro:
+.Oo before
+.Oc Ns Op after
+.Pp
+After some macro and a block closing:
+.Oo before
+.No still before Oc Ns Op after
+.Pp
+In the middle of a macro line:
+.Oo before Oc Ns Op after
+.Pp
+At the end of a macro line:
+.Oo before Oc Ns
+.Op after
+.Pp
+At the end of partial implicit:
+.Op before Ns
+.Op after
diff --git a/regress/mdoc/Ns/position.out_ascii b/regress/mdoc/Ns/position.out_ascii
new file mode 100644
index 00000000..a2bd6c45
--- /dev/null
+++ b/regress/mdoc/Ns/position.out_ascii
@@ -0,0 +1,19 @@
+NS-POSITION(1) General Commands Manual NS-POSITION(1)
+
+NNAAMMEE
+ NNss--ppoossiittiioonn - effect of the position of the no space macro on the line
+
+DDEESSCCRRIIPPTTIIOONN
+ At the beginning of a macro line: [before] [after]
+
+ After just a block closing macro: [before][after]
+
+ After some macro and a block closing: [before still before][after]
+
+ In the middle of a macro line: [before][after]
+
+ At the end of a macro line: [before][after]
+
+ At the end of partial implicit: [before][after]
+
+OpenBSD September 15, 2013 OpenBSD
diff --git a/regress/mdoc/Ns/position.out_lint b/regress/mdoc/Ns/position.out_lint
new file mode 100644
index 00000000..d21bfe12
--- /dev/null
+++ b/regress/mdoc/Ns/position.out_lint
@@ -0,0 +1 @@
+mandoc: position.in:10:2: WARNING: skipping no-space macro
diff --git a/regress/mdoc/Ns/punct.in b/regress/mdoc/Ns/punct.in
new file mode 100644
index 00000000..d55cd322
--- /dev/null
+++ b/regress/mdoc/Ns/punct.in
@@ -0,0 +1,13 @@
+.Dd October 1, 2010
+.Dt NS-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ns-punct
+.Nd punctuation after the no space macro
+.Sh DESCRIPTION
+Normal words:
+.No no Ns ns No no
+Opening punctuation:
+.No no Ns ( ns No no
+Closing punctuation:
+.No no Ns ns ) No no
diff --git a/regress/mdoc/Ns/punct.out_ascii b/regress/mdoc/Ns/punct.out_ascii
new file mode 100644
index 00000000..2afbf866
--- /dev/null
+++ b/regress/mdoc/Ns/punct.out_ascii
@@ -0,0 +1,10 @@
+NS-PUNCT(1) General Commands Manual NS-PUNCT(1)
+
+NNAAMMEE
+ NNss--ppuunncctt - punctuation after the no space macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Normal words: nons no Opening punctuation: no(ns no Closing punctuation:
+ nons) no
+
+OpenBSD October 1, 2010 OpenBSD
diff --git a/regress/mdoc/Oo/Makefile b/regress/mdoc/Oo/Makefile
new file mode 100644
index 00000000..086f9bdf
--- /dev/null
+++ b/regress/mdoc/Oo/Makefile
@@ -0,0 +1,5 @@
+# $OpenBSD: Makefile,v 1.1 2012/07/07 14:10:55 schwarze Exp $
+
+REGRESS_TARGETS=punct
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Oo/punct.in b/regress/mdoc/Oo/punct.in
new file mode 100644
index 00000000..c9e9d732
--- /dev/null
+++ b/regress/mdoc/Oo/punct.in
@@ -0,0 +1,23 @@
+.Dd July 6, 2012
+.Dt OO-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Oo-punct
+.Nd punctuation handling by the Oo macro
+.Sh DESCRIPTION
+at the beginning:
+.Oo ( z
+.Oo | z
+.Oo . z
+.Oc Oc Oc
+.Pp
+in the middle:
+.Oo a ( z
+.Oo a | z
+.Oo a . z
+.Oc Oc Oc
+.Pp
+at the end:
+.Oo Oo a (
+.Oc |
+.Oc
diff --git a/regress/mdoc/Oo/punct.out_ascii b/regress/mdoc/Oo/punct.out_ascii
new file mode 100644
index 00000000..ca487cf6
--- /dev/null
+++ b/regress/mdoc/Oo/punct.out_ascii
@@ -0,0 +1,13 @@
+OO-PUNCT(1) General Commands Manual OO-PUNCT(1)
+
+NNAAMMEE
+ OOoo--ppuunncctt - punctuation handling by the Oo macro
+
+DDEESSCCRRIIPPTTIIOONN
+ at the beginning: ([z [| z [. z]]]
+
+ in the middle: [a (z [a | z [a. z]]]
+
+ at the end: [[a (] |]
+
+OpenBSD July 6, 2012 OpenBSD
diff --git a/regress/mdoc/Op/Makefile b/regress/mdoc/Op/Makefile
new file mode 100644
index 00000000..ab934a4e
--- /dev/null
+++ b/regress/mdoc/Op/Makefile
@@ -0,0 +1,9 @@
+# $OpenBSD: Makefile,v 1.3 2014/07/02 11:42:56 schwarze Exp $
+
+REGRESS_TARGETS = break broken punct
+LINT_TARGETS = break broken
+
+SKIP_GROFF = break
+SKIP_ASCII = break
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Op/break.in b/regress/mdoc/Op/break.in
new file mode 100644
index 00000000..5ca7ffe2
--- /dev/null
+++ b/regress/mdoc/Op/break.in
@@ -0,0 +1,29 @@
+.Dd July 2, 2014
+.Dt OP-BREAK 1
+.Os OpenBSD
+.Sh NAME
+.Nm Op-break
+.Nd partial explicit block broken by partial implicit block
+.Sh DESCRIPTION
+before both
+.Op inside first Do inside both
+inside second
+.Dc
+after both
+.Pp
+0
+.Op 1 Op 12 Do 123
+3
+.Dc
+0
+.\" The following does not work yet:
+.ig
+.Pp
+0
+.Op 1 Op 12 Do 123 Do 1234
+34
+.Dc
+4
+.Dc
+0
+..
diff --git a/regress/mdoc/Op/break.out_lint b/regress/mdoc/Op/break.out_lint
new file mode 100644
index 00000000..49c0fd12
--- /dev/null
+++ b/regress/mdoc/Op/break.out_lint
@@ -0,0 +1,3 @@
+mandoc: break.in:9:2: WARNING: blocks badly nested: Op breaks Do
+mandoc: break.in:15:7: WARNING: blocks badly nested: Op breaks Do
+mandoc: break.in:15:2: WARNING: blocks badly nested: Op breaks Do
diff --git a/regress/mdoc/Op/broken.in b/regress/mdoc/Op/broken.in
new file mode 100644
index 00000000..43574317
--- /dev/null
+++ b/regress/mdoc/Op/broken.in
@@ -0,0 +1,24 @@
+.Dd July 2, 2014
+.Dt OP-BROKEN 1
+.Os OpenBSD
+.Sh NAME
+.Nm Op-broken
+.Nd partial implicit block broken by partial explicit block
+.Sh DESCRIPTION
+before both
+.Do inside first
+.Op inside both Dc inside second
+after both
+.Pp
+0
+.Do 1
+.Op 12 Op 123 Dc 23
+0
+.\" The following does not work yet, see mdoc_macro.c rev. 1.47.
+.ig
+.Pp
+0
+.Do 1 Do 12
+.Op 123 Op 1234 Dc 134 Dc 34
+0
+..
diff --git a/regress/mdoc/Op/broken.out_ascii b/regress/mdoc/Op/broken.out_ascii
new file mode 100644
index 00000000..f9641277
--- /dev/null
+++ b/regress/mdoc/Op/broken.out_ascii
@@ -0,0 +1,11 @@
+OP-BROKEN(1) General Commands Manual OP-BROKEN(1)
+
+NNAAMMEE
+ OOpp--bbrrookkeenn - partial implicit block broken by partial explicit block
+
+DDEESSCCRRIIPPTTIIOONN
+ before both ``inside first [inside both'' inside second] after both
+
+ 0 ``1 [12 [123'' 23]] 0
+
+OpenBSD July 2, 2014 OpenBSD
diff --git a/regress/mdoc/Op/broken.out_lint b/regress/mdoc/Op/broken.out_lint
new file mode 100644
index 00000000..f82e1bda
--- /dev/null
+++ b/regress/mdoc/Op/broken.out_lint
@@ -0,0 +1,2 @@
+mandoc: broken.in:10:17: WARNING: blocks badly nested: Do breaks Op
+mandoc: broken.in:15:15: WARNING: blocks badly nested: Do breaks Op
diff --git a/regress/mdoc/Op/punct.in b/regress/mdoc/Op/punct.in
new file mode 100644
index 00000000..02a25c9c
--- /dev/null
+++ b/regress/mdoc/Op/punct.in
@@ -0,0 +1,31 @@
+.Dd June 24, 2011
+.Dt OP-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Op-punct
+.Nd punctuation handling by the Op macro
+.Sh DESCRIPTION
+at the beginning:
+.Op ( z
+.Op | z
+.Op . z
+.Pp
+in the middle:
+.Op a ( z
+.Op a | z
+.Op a . z
+.Pp
+at the end:
+.Op a (
+.Op a |
+.Op a .
+.Pp
+punctuation only:
+.Op (
+.Op |
+.Op .
+.Pp
+more than one:
+.Op ( (
+.Op | |
+.Op . .
diff --git a/regress/mdoc/Op/punct.out_ascii b/regress/mdoc/Op/punct.out_ascii
new file mode 100644
index 00000000..53251b52
--- /dev/null
+++ b/regress/mdoc/Op/punct.out_ascii
@@ -0,0 +1,17 @@
+OP-PUNCT(1) General Commands Manual OP-PUNCT(1)
+
+NNAAMMEE
+ OOpp--ppuunncctt - punctuation handling by the Op macro
+
+DDEESSCCRRIIPPTTIIOONN
+ at the beginning: ([z] [| z] [. z]
+
+ in the middle: [a (z] [a | z] [a. z]
+
+ at the end: [a (] [a |] [a].
+
+ punctuation only: ([] [|] [].
+
+ more than one: (([] [| |] []..
+
+OpenBSD June 24, 2011 OpenBSD
diff --git a/regress/mdoc/Os/Makefile b/regress/mdoc/Os/Makefile
new file mode 100644
index 00000000..d228b09d
--- /dev/null
+++ b/regress/mdoc/Os/Makefile
@@ -0,0 +1,7 @@
+# $OpenBSD: Makefile,v 1.2 2014/11/21 01:52:45 schwarze Exp $
+
+REGRESS_TARGETS = dupe late long missing
+LINT_TARGETS = dupe late missing
+SKIP_GROFF = long
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Os/dupe.in b/regress/mdoc/Os/dupe.in
new file mode 100644
index 00000000..a4918bef
--- /dev/null
+++ b/regress/mdoc/Os/dupe.in
@@ -0,0 +1,11 @@
+.Dd June 18, 2014
+.Os NetBSD
+.Dt OS-DUPE 1
+.Os FreeBSD
+.Sh NAME
+.Nm Os-dupe
+.Nd repeated operating system macros
+.Sh DESCRIPTION
+initial text
+.Os OpenBSD
+final text
diff --git a/regress/mdoc/Os/dupe.out_ascii b/regress/mdoc/Os/dupe.out_ascii
new file mode 100644
index 00000000..4f76190a
--- /dev/null
+++ b/regress/mdoc/Os/dupe.out_ascii
@@ -0,0 +1,9 @@
+OS-DUPE(1) General Commands Manual OS-DUPE(1)
+
+NNAAMMEE
+ OOss--dduuppee - repeated operating system macros
+
+DDEESSCCRRIIPPTTIIOONN
+ initial text final text
+
+OpenBSD June 18, 2014 OpenBSD
diff --git a/regress/mdoc/Os/dupe.out_lint b/regress/mdoc/Os/dupe.out_lint
new file mode 100644
index 00000000..364b7a6e
--- /dev/null
+++ b/regress/mdoc/Os/dupe.out_lint
@@ -0,0 +1,3 @@
+mandoc: dupe.in:3:2: WARNING: prologue macros out of order: Dt after Os
+mandoc: dupe.in:4:2: WARNING: duplicate prologue macro: Os
+mandoc: dupe.in:10:2: WARNING: duplicate prologue macro: Os
diff --git a/regress/mdoc/Os/late.in b/regress/mdoc/Os/late.in
new file mode 100644
index 00000000..fab68da2
--- /dev/null
+++ b/regress/mdoc/Os/late.in
@@ -0,0 +1,9 @@
+.Dd August 5, 2014
+.Dt OS-LATE 1
+.Sh NAME
+.Nm Os-late
+.Nd late operating system macro
+.Sh DESCRIPTION
+initial text
+.Os OpenBSD
+final text
diff --git a/regress/mdoc/Os/late.out_ascii b/regress/mdoc/Os/late.out_ascii
new file mode 100644
index 00000000..06de3458
--- /dev/null
+++ b/regress/mdoc/Os/late.out_ascii
@@ -0,0 +1,9 @@
+OS-LATE(1) General Commands Manual OS-LATE(1)
+
+NNAAMMEE
+ OOss--llaattee - late operating system macro
+
+DDEESSCCRRIIPPTTIIOONN
+ initial text final text
+
+OpenBSD August 5, 2014 OpenBSD
diff --git a/regress/mdoc/Os/late.out_lint b/regress/mdoc/Os/late.out_lint
new file mode 100644
index 00000000..8b0e2f76
--- /dev/null
+++ b/regress/mdoc/Os/late.out_lint
@@ -0,0 +1 @@
+mandoc: late.in:8:2: WARNING: late prologue macro: Os
diff --git a/regress/mdoc/Os/long.in b/regress/mdoc/Os/long.in
new file mode 100644
index 00000000..c4998629
--- /dev/null
+++ b/regress/mdoc/Os/long.in
@@ -0,0 +1,8 @@
+.Dd November 20, 2014
+.Dt OS-LONG 1
+.Os 1234567890123456789012345678901234567890123456789012345678901234567890123456789
+.Sh NAME
+.Nm Os-long
+.Nd long operating system string
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Os/long.out_ascii b/regress/mdoc/Os/long.out_ascii
new file mode 100644
index 00000000..9253e13e
--- /dev/null
+++ b/regress/mdoc/Os/long.out_ascii
@@ -0,0 +1,11 @@
+OS-LONG(1) General Commands Manual OS-LONG(1)
+
+NNAAMMEE
+ OOss--lloonngg - long operating system string
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+1234567890123456789012345678901234567890123456789012345678901234567890123456789
+ November 20, 2014
+1234567890123456789012345678901234567890123456789012345678901234567890123456789
diff --git a/regress/mdoc/Os/missing.in b/regress/mdoc/Os/missing.in
new file mode 100644
index 00000000..44297adb
--- /dev/null
+++ b/regress/mdoc/Os/missing.in
@@ -0,0 +1,7 @@
+.Dd August 5, 2014
+.Dt OS-MISSING 1
+.Sh NAME
+.Nm Os-missing
+.Nd operating system macro missing in prologue
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Os/missing.out_ascii b/regress/mdoc/Os/missing.out_ascii
new file mode 100644
index 00000000..8398c253
--- /dev/null
+++ b/regress/mdoc/Os/missing.out_ascii
@@ -0,0 +1,9 @@
+OS-MISSING(1) General Commands Manual OS-MISSING(1)
+
+NNAAMMEE
+ OOss--mmiissssiinngg - operating system macro missing in prologue
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+ August 5, 2014
diff --git a/regress/mdoc/Os/missing.out_lint b/regress/mdoc/Os/missing.out_lint
new file mode 100644
index 00000000..8b1f80b2
--- /dev/null
+++ b/regress/mdoc/Os/missing.out_lint
@@ -0,0 +1 @@
+mandoc: missing.in: WARNING: missing Os macro, using ""
diff --git a/regress/mdoc/Ox/Makefile b/regress/mdoc/Ox/Makefile
new file mode 100644
index 00000000..7f532eb1
--- /dev/null
+++ b/regress/mdoc/Ox/Makefile
@@ -0,0 +1,5 @@
+# $OpenBSD: Makefile,v 1.3 2012/07/18 16:55:54 schwarze Exp $
+
+REGRESS_TARGETS = keep
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Ox/keep.in b/regress/mdoc/Ox/keep.in
new file mode 100644
index 00000000..2a8bfff0
--- /dev/null
+++ b/regress/mdoc/Ox/keep.in
@@ -0,0 +1,11 @@
+.Dd January 30, 2011
+.Dt OX-KEEP 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ox-keep
+.Nd interaction of unix variant macros and word keeps
+.Sh DESCRIPTION
+Because we use a keep,
+.Bk -words
+.Ox 4.9 must be at the beginning of a new line.
+.Ek
diff --git a/regress/mdoc/Ox/keep.out_ascii b/regress/mdoc/Ox/keep.out_ascii
new file mode 100644
index 00000000..9f01890a
--- /dev/null
+++ b/regress/mdoc/Ox/keep.out_ascii
@@ -0,0 +1,10 @@
+OX-KEEP(1) General Commands Manual OX-KEEP(1)
+
+NNAAMMEE
+ OOxx--kkeeeepp - interaction of unix variant macros and word keeps
+
+DDEESSCCRRIIPPTTIIOONN
+ Because we use a keep,
+ OpenBSD 4.9 must be at the beginning of a new line.
+
+OpenBSD January 30, 2011 OpenBSD
diff --git a/regress/mdoc/Pa/Makefile b/regress/mdoc/Pa/Makefile
new file mode 100644
index 00000000..5f939fd3
--- /dev/null
+++ b/regress/mdoc/Pa/Makefile
@@ -0,0 +1,7 @@
+# $OpenBSD: Makefile,v 1.4 2014/08/21 12:56:24 schwarze Exp $
+
+REGRESS_TARGETS = font punct
+
+# XXX The FILES target doesn't currently work.
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Pa/font.in b/regress/mdoc/Pa/font.in
new file mode 100644
index 00000000..ce23f772
--- /dev/null
+++ b/regress/mdoc/Pa/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt PA-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Pa-font
+.Nd changing fonts inside the path macro
+.Sh DESCRIPTION
+normal text
+.Pa emphasis\\fBbold\\fPback
+trailing text
diff --git a/regress/mdoc/Pa/font.out_ascii b/regress/mdoc/Pa/font.out_ascii
new file mode 100644
index 00000000..5cf318ce
--- /dev/null
+++ b/regress/mdoc/Pa/font.out_ascii
@@ -0,0 +1,9 @@
+PA-FONT(1) General Commands Manual PA-FONT(1)
+
+NNAAMMEE
+ PPaa--ffoonntt - changing fonts inside the path macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text _e_m_p_h_a_s_i_sbboolldd_b_a_c_k trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Pa/punct.in b/regress/mdoc/Pa/punct.in
new file mode 100644
index 00000000..ea6c81ff
--- /dev/null
+++ b/regress/mdoc/Pa/punct.in
@@ -0,0 +1,39 @@
+.Dd August 21, 2014
+.Dt PA-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Pa-punct
+.Nd punctuation handling by the Pa macro
+.Sh DESCRIPTION
+closing punctuation
+.Pa a )
+only one
+.Pa )
+only more than one
+.Pa ) )
+middle
+.Pa a ) z
+start
+.Pa ) z
+dot
+.Pa . z
+comma
+.Pa , z
+semicolon
+.Pa ; z
+colon
+.Pa : z
+quest
+.Pa ? z
+excl
+.Pa ! z
+paren
+.Pa ) z
+bracket
+.Pa ] z
+bar
+.Pa | m
+op paren
+.Pa ( a
+op bracket
+.Pa [ a
diff --git a/regress/mdoc/Pa/punct.out_ascii b/regress/mdoc/Pa/punct.out_ascii
new file mode 100644
index 00000000..65b247e9
--- /dev/null
+++ b/regress/mdoc/Pa/punct.out_ascii
@@ -0,0 +1,11 @@
+PA-PUNCT(1) General Commands Manual PA-PUNCT(1)
+
+NNAAMMEE
+ PPaa--ppuunncctt - punctuation handling by the Pa macro
+
+DDEESSCCRRIIPPTTIIOONN
+ closing punctuation _a) only one _~) only more than one _~)) middle _a) _z
+ start _~) _z dot _~. _z comma _~, _z semicolon _~; _z colon _~: _z quest _~? _z excl
+ _~! _z paren _~) _z bracket _~] _z bar | _m op paren (_a op bracket [_a
+
+OpenBSD August 21, 2014 OpenBSD
diff --git a/regress/mdoc/Pf/Makefile b/regress/mdoc/Pf/Makefile
new file mode 100644
index 00000000..c222abf1
--- /dev/null
+++ b/regress/mdoc/Pf/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.3 2014/11/30 05:28:00 schwarze Exp $
+
+REGRESS_TARGETS = spacing
+LINT_TARGETS = spacing
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Pf/spacing.in b/regress/mdoc/Pf/spacing.in
new file mode 100644
index 00000000..5a547495
--- /dev/null
+++ b/regress/mdoc/Pf/spacing.in
@@ -0,0 +1,31 @@
+.Dd November 30, 2014
+.Dt PF-SPACING 1
+.Os OpenBSD
+.Sh NAME
+.Nm Pf-spacing
+.Nd spacing around the prefix macro
+.Sh DESCRIPTION
+Closing punctuation goes
+.Pf . right .
+But
+.Pf . . double
+prefixes don't work.
+Opening punctuation goes
+.Pf ( left .
+But again, prefix
+.Pf ( ) pairs
+don't work.
+Even normal text gets
+.Pf pre fixed .
+The first
+.Pf Ar gument
+is not parsed.
+Nothing can be
+.Pf prefixed
+to the next line.
+Trailing punctuation still counts as
+.Em eos Pf .
+.Po But it does not fall out of enclosures Pf . Pc
+.Pp
+It makes no sense at the very
+.Em end Pf
diff --git a/regress/mdoc/Pf/spacing.out_ascii b/regress/mdoc/Pf/spacing.out_ascii
new file mode 100644
index 00000000..cd5c96b2
--- /dev/null
+++ b/regress/mdoc/Pf/spacing.out_ascii
@@ -0,0 +1,15 @@
+PF-SPACING(1) General Commands Manual PF-SPACING(1)
+
+NNAAMMEE
+ PPff--ssppaacciinngg - spacing around the prefix macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Closing punctuation goes .right. But .. double prefixes don't work.
+ Opening punctuation goes (left. But again, prefix () pairs don't work.
+ Even normal text gets prefixed. The first Argument is not parsed.
+ Nothing can be prefixed to the next line. Trailing punctuation still
+ counts as _e_o_s . (But it does not fall out of enclosures .)
+
+ It makes no sense at the very _e_n_d
+
+OpenBSD November 30, 2014 OpenBSD
diff --git a/regress/mdoc/Pf/spacing.out_lint b/regress/mdoc/Pf/spacing.out_lint
new file mode 100644
index 00000000..8444f0dd
--- /dev/null
+++ b/regress/mdoc/Pf/spacing.out_lint
@@ -0,0 +1,3 @@
+mandoc: spacing.in:24:2: WARNING: nothing follows prefix: Pf prefixed
+mandoc: spacing.in:27:9: WARNING: nothing follows prefix: Pf .
+mandoc: spacing.in:31:9: WARNING: nothing follows prefix: Pf at eol
diff --git a/regress/mdoc/Pp/Makefile b/regress/mdoc/Pp/Makefile
new file mode 100644
index 00000000..04e1bc3b
--- /dev/null
+++ b/regress/mdoc/Pp/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.4 2015/02/04 19:11:17 schwarze Exp $
+
+REGRESS_TARGETS = arg
+LINT_TARGETS = arg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Pp/arg.in b/regress/mdoc/Pp/arg.in
new file mode 100644
index 00000000..563a4e98
--- /dev/null
+++ b/regress/mdoc/Pp/arg.in
@@ -0,0 +1,14 @@
+.Dd February 4, 2015
+.Dt PP-ARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Pp-arg
+.Nd paragraph macro with arguments
+.Sh DESCRIPTION
+line 1
+.Pp drop this
+line 2
+.br drop this
+line 3
+.sp 1v drop this
+line 4
diff --git a/regress/mdoc/Pp/arg.out_ascii b/regress/mdoc/Pp/arg.out_ascii
new file mode 100644
index 00000000..543772f8
--- /dev/null
+++ b/regress/mdoc/Pp/arg.out_ascii
@@ -0,0 +1,14 @@
+PP-ARG(1) General Commands Manual PP-ARG(1)
+
+NNAAMMEE
+ PPpp--aarrgg - paragraph macro with arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ line 1
+
+ line 2
+ line 3
+
+ line 4
+
+OpenBSD February 4, 2015 OpenBSD
diff --git a/regress/mdoc/Pp/arg.out_lint b/regress/mdoc/Pp/arg.out_lint
new file mode 100644
index 00000000..2e0a2f63
--- /dev/null
+++ b/regress/mdoc/Pp/arg.out_lint
@@ -0,0 +1,3 @@
+mandoc: arg.in:9:2: ERROR: skipping all arguments: Pp drop
+mandoc: arg.in:11:2: ERROR: skipping all arguments: br drop
+mandoc: arg.in:13:8: ERROR: skipping excess arguments: sp ... drop
diff --git a/regress/mdoc/Qq/Makefile b/regress/mdoc/Qq/Makefile
new file mode 100644
index 00000000..24f19edf
--- /dev/null
+++ b/regress/mdoc/Qq/Makefile
@@ -0,0 +1,5 @@
+# $OpenBSD: Makefile,v 1.1.1.1 2011/12/04 03:09:25 schwarze Exp $
+
+REGRESS_TARGETS=empty
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Qq/empty.in b/regress/mdoc/Qq/empty.in
new file mode 100644
index 00000000..58d6bf3d
--- /dev/null
+++ b/regress/mdoc/Qq/empty.in
@@ -0,0 +1,14 @@
+.Dd October 21, 2010
+.Dt QQ-EMPTY 1
+.Os OpenBSD
+.Sh NAME
+.Nm Qq-empty
+.Nd empty implicit enclosure macros
+.Sh DESCRIPTION
+An empty
+.Qq
+and a full
+.Qq user@host
+quotation.
+And another
+.Qo full Qc one .
diff --git a/regress/mdoc/Qq/empty.out_ascii b/regress/mdoc/Qq/empty.out_ascii
new file mode 100644
index 00000000..311f1e94
--- /dev/null
+++ b/regress/mdoc/Qq/empty.out_ascii
@@ -0,0 +1,9 @@
+QQ-EMPTY(1) General Commands Manual QQ-EMPTY(1)
+
+NNAAMMEE
+ QQqq--eemmppttyy - empty implicit enclosure macros
+
+DDEESSCCRRIIPPTTIIOONN
+ An empty "" and a full "user@host" quotation. And another "full" one.
+
+OpenBSD October 21, 2010 OpenBSD
diff --git a/regress/mdoc/Rs/Makefile b/regress/mdoc/Rs/Makefile
new file mode 100644
index 00000000..45fd8cb2
--- /dev/null
+++ b/regress/mdoc/Rs/Makefile
@@ -0,0 +1,11 @@
+# $OpenBSD: Makefile,v 1.7 2015/02/04 18:03:28 schwarze Exp $
+
+REGRESS_TARGETS = allch args break empty three_authors
+LINT_TARGETS = allch args empty
+
+# groff-1.22.3 defect:
+# - arguments after .Rs cause the macro to be ignored
+
+SKIP_GROFF = args
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Rs/allch.in b/regress/mdoc/Rs/allch.in
new file mode 100644
index 00000000..abffe803
--- /dev/null
+++ b/regress/mdoc/Rs/allch.in
@@ -0,0 +1,48 @@
+.Dd July 7, 2014
+.Dt RS-ALLCH 1
+.Os OpenBSD
+.Sh NAME
+.Nm Rs-allch
+.Nd reference block using all supported child macros
+.Sh DESCRIPTION
+reference on the same line:
+.Rs
+.%A author name
+.%T title of article
+.%B book title
+.%I issuer name
+some
+.%J journal name
+.%R report name
+.%N number of journal
+.%V volume number
+.Em bogus
+text
+.%U "uniform resource locator"
+.%P page number
+.%Q institutional author
+.%C city name
+.%D date of publication
+.%O optional information
+.Re
+.Sh SEE ALSO
+reference after a blank line:
+.Rs
+.%A author name
+.%T title of article
+.%B book title
+.%I issuer name
+some
+.Em bogus
+.%J journal name
+.%R report name
+.%N number of journal
+.%V volume number
+text
+.%U "uniform resource locator"
+.%P page number
+.%Q institutional author
+.%C city name
+.%D date of publication
+.%O optional information
+.Re
diff --git a/regress/mdoc/Rs/allch.out_ascii b/regress/mdoc/Rs/allch.out_ascii
new file mode 100644
index 00000000..78b1230d
--- /dev/null
+++ b/regress/mdoc/Rs/allch.out_ascii
@@ -0,0 +1,21 @@
+RS-ALLCH(1) General Commands Manual RS-ALLCH(1)
+
+NNAAMMEE
+ RRss--aallllcchh - reference block using all supported child macros
+
+DDEESSCCRRIIPPTTIIOONN
+ reference on the same line: some _b_o_g_u_s text author name, "title of
+ article", _b_o_o_k _t_i_t_l_e, _i_s_s_u_e_r _n_a_m_e, _j_o_u_r_n_a_l _n_a_m_e, report name, number of
+ journal, volume number, uniform resource locator, page number,
+ institutional author, city name, date of publication, optional
+ information.
+
+SSEEEE AALLSSOO
+ reference after a blank line:
+
+ some _b_o_g_u_s text author name, "title of article", _b_o_o_k _t_i_t_l_e, _i_s_s_u_e_r _n_a_m_e,
+ _j_o_u_r_n_a_l _n_a_m_e, report name, number of journal, volume number, uniform
+ resource locator, page number, institutional author, city name, date of
+ publication, optional information.
+
+OpenBSD July 7, 2014 OpenBSD
diff --git a/regress/mdoc/Rs/allch.out_lint b/regress/mdoc/Rs/allch.out_lint
new file mode 100644
index 00000000..d8f8988f
--- /dev/null
+++ b/regress/mdoc/Rs/allch.out_lint
@@ -0,0 +1,6 @@
+mandoc: allch.in:14:1: WARNING: invalid content in Rs block: text
+mandoc: allch.in:19:2: WARNING: invalid content in Rs block: Em
+mandoc: allch.in:20:1: WARNING: invalid content in Rs block: text
+mandoc: allch.in:35:1: WARNING: invalid content in Rs block: text
+mandoc: allch.in:36:2: WARNING: invalid content in Rs block: Em
+mandoc: allch.in:41:1: WARNING: invalid content in Rs block: text
diff --git a/regress/mdoc/Rs/args.in b/regress/mdoc/Rs/args.in
new file mode 100644
index 00000000..2f292013
--- /dev/null
+++ b/regress/mdoc/Rs/args.in
@@ -0,0 +1,18 @@
+.Dd February 4, 2015
+.Dt RS-ARGS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Rs-args
+.Nd arguments on a reference block header line
+.Sh SEE ALSO
+initial text
+.Rs bogus
+.%A author name
+.%B book title
+.Re
+middle text
+.Rs Sy bogus
+.%A author name
+.%B book title
+.Re
+final text
diff --git a/regress/mdoc/Rs/args.out_ascii b/regress/mdoc/Rs/args.out_ascii
new file mode 100644
index 00000000..30cb3c86
--- /dev/null
+++ b/regress/mdoc/Rs/args.out_ascii
@@ -0,0 +1,13 @@
+RS-ARGS(1) General Commands Manual RS-ARGS(1)
+
+NNAAMMEE
+ RRss--aarrggss - arguments on a reference block header line
+
+SSEEEE AALLSSOO
+ initial text
+
+ author name, _b_o_o_k _t_i_t_l_e. middle text
+
+ author name, _b_o_o_k _t_i_t_l_e. final text
+
+OpenBSD February 4, 2015 OpenBSD
diff --git a/regress/mdoc/Rs/args.out_lint b/regress/mdoc/Rs/args.out_lint
new file mode 100644
index 00000000..f5bccd15
--- /dev/null
+++ b/regress/mdoc/Rs/args.out_lint
@@ -0,0 +1,2 @@
+mandoc: args.in:9:5: ERROR: skipping all arguments: Rs bogus
+mandoc: args.in:14:5: ERROR: skipping all arguments: Rs Sy
diff --git a/regress/mdoc/Rs/break.in b/regress/mdoc/Rs/break.in
new file mode 100644
index 00000000..0e8d0301
--- /dev/null
+++ b/regress/mdoc/Rs/break.in
@@ -0,0 +1,27 @@
+.Dd April 15, 2014
+.Dt RS-BREAK 1
+.Os OpenBSD
+.Sh NAME
+.Nm Rs-break
+.Nd line break before reference start
+.Sh DESCRIPTION
+reference on the same line:
+.Rs
+.%A author
+.%J journal
+.%N 42
+.Re
+.Sh SEE ALSO
+reference after a blank line:
+.Rs
+.%A author
+.%J journal
+.%N 42
+.Re
+.Sh SEE Em ALSO
+reference after a blank line:
+.Rs
+.%A author
+.%J journal
+.%N 42
+.Re
diff --git a/regress/mdoc/Rs/break.out_ascii b/regress/mdoc/Rs/break.out_ascii
new file mode 100644
index 00000000..556c82db
--- /dev/null
+++ b/regress/mdoc/Rs/break.out_ascii
@@ -0,0 +1,19 @@
+RS-BREAK(1) General Commands Manual RS-BREAK(1)
+
+NNAAMMEE
+ RRss--bbrreeaakk - line break before reference start
+
+DDEESSCCRRIIPPTTIIOONN
+ reference on the same line: author, _j_o_u_r_n_a_l, 42.
+
+SSEEEE AALLSSOO
+ reference after a blank line:
+
+ author, _j_o_u_r_n_a_l, 42.
+
+SSEEEE _A_L_S_O
+ reference after a blank line:
+
+ author, _j_o_u_r_n_a_l, 42.
+
+OpenBSD April 15, 2014 OpenBSD
diff --git a/regress/mdoc/Rs/empty.in b/regress/mdoc/Rs/empty.in
new file mode 100644
index 00000000..36d80663
--- /dev/null
+++ b/regress/mdoc/Rs/empty.in
@@ -0,0 +1,16 @@
+.Dd February 4, 2015
+.Dt RS-EMPTY 1
+.Os OpenBSD
+.Sh NAME
+.Nm Rs-empty
+.Nd empty reference blocks
+.Sh DESCRIPTION
+initial text
+.Rs
+.Re
+final text
+.Sh SEE ALSO
+initial text
+.Rs
+.Re
+final text
diff --git a/regress/mdoc/Rs/empty.out_ascii b/regress/mdoc/Rs/empty.out_ascii
new file mode 100644
index 00000000..9dad8f6a
--- /dev/null
+++ b/regress/mdoc/Rs/empty.out_ascii
@@ -0,0 +1,14 @@
+RS-EMPTY(1) General Commands Manual RS-EMPTY(1)
+
+NNAAMMEE
+ RRss--eemmppttyy - empty reference blocks
+
+DDEESSCCRRIIPPTTIIOONN
+ initial text final text
+
+SSEEEE AALLSSOO
+ initial text
+
+ final text
+
+OpenBSD February 4, 2015 OpenBSD
diff --git a/regress/mdoc/Rs/empty.out_lint b/regress/mdoc/Rs/empty.out_lint
new file mode 100644
index 00000000..afaf9a10
--- /dev/null
+++ b/regress/mdoc/Rs/empty.out_lint
@@ -0,0 +1,2 @@
+mandoc: empty.in:9:2: WARNING: empty reference block: Rs
+mandoc: empty.in:14:2: WARNING: empty reference block: Rs
diff --git a/regress/mdoc/Rs/three_authors.in b/regress/mdoc/Rs/three_authors.in
new file mode 100644
index 00000000..6ce73bb0
--- /dev/null
+++ b/regress/mdoc/Rs/three_authors.in
@@ -0,0 +1,13 @@
+.Dd May 1, 2009
+.Dt RS-THREE_AUTHORS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Rs-three_authors
+.Nd listing three authors in a reference block
+.Sh AUTHORS
+.Rs
+.%A kristaps
+.%A joerg
+.%A ingo
+.%T mandoc
+.Re
diff --git a/regress/mdoc/Rs/three_authors.out_ascii b/regress/mdoc/Rs/three_authors.out_ascii
new file mode 100644
index 00000000..a267086a
--- /dev/null
+++ b/regress/mdoc/Rs/three_authors.out_ascii
@@ -0,0 +1,9 @@
+RS-THREE_AUTHORS(1) General Commands Manual RS-THREE_AUTHORS(1)
+
+NNAAMMEE
+ RRss--tthhrreeee__aauutthhoorrss - listing three authors in a reference block
+
+AAUUTTHHOORRSS
+ kristaps, joerg, and ingo, _m_a_n_d_o_c.
+
+OpenBSD May 1, 2009 OpenBSD
diff --git a/regress/mdoc/Rv/Makefile b/regress/mdoc/Rv/Makefile
new file mode 100644
index 00000000..238982a3
--- /dev/null
+++ b/regress/mdoc/Rv/Makefile
@@ -0,0 +1,11 @@
+# $OpenBSD: Makefile,v 1.1 2014/08/14 02:00:53 schwarze Exp $
+
+REGRESS_TARGETS = args noname nostd
+LINT_TARGETS = noname nostd
+
+# groff-1.22.2 defect:
+# - .Rv without -std produces no output
+
+SKIP_GROFF = nostd
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Rv/args.in b/regress/mdoc/Rv/args.in
new file mode 100644
index 00000000..24f37eab
--- /dev/null
+++ b/regress/mdoc/Rv/args.in
@@ -0,0 +1,15 @@
+.Dd July 29, 2014
+.Dt RV-ARGS 3
+.Os OpenBSD
+.Sh NAME
+.Nm Rv-args
+.Nd arguments to the return value macro
+.Sh RETURN VALUES
+no arguments:
+.Rv -std
+.Pp
+one argument:
+.Rv -std one
+.Pp
+two arguments:
+.Rv -std one two
diff --git a/regress/mdoc/Rv/args.out_ascii b/regress/mdoc/Rv/args.out_ascii
new file mode 100644
index 00000000..d2b92536
--- /dev/null
+++ b/regress/mdoc/Rv/args.out_ascii
@@ -0,0 +1,22 @@
+RV-ARGS(3) Library Functions Manual RV-ARGS(3)
+
+NNAAMMEE
+ RRvv--aarrggss - arguments to the return value macro
+
+RREETTUURRNN VVAALLUUEESS
+ no arguments:
+ Upon successful completion, the value 0 is returned; otherwise the
+ value -1 is returned and the global variable _e_r_r_n_o is set to indicate the
+ error.
+
+ one argument:
+ The oonnee() function returns the value 0 if successful; otherwise the
+ value -1 is returned and the global variable _e_r_r_n_o is set to indicate the
+ error.
+
+ two arguments:
+ The oonnee() and ttwwoo() functions return the value 0 if successful; otherwise
+ the value -1 is returned and the global variable _e_r_r_n_o is set to indicate
+ the error.
+
+OpenBSD July 29, 2014 OpenBSD
diff --git a/regress/mdoc/Rv/noname.in b/regress/mdoc/Rv/noname.in
new file mode 100644
index 00000000..4bb21cce
--- /dev/null
+++ b/regress/mdoc/Rv/noname.in
@@ -0,0 +1,15 @@
+.Dd July 29, 2014
+.Dt RV-NONAME 3
+.Os OpenBSD
+.Sh NAME
+.Nm
+.Nd return value macro without an available name
+.Sh RETURN VALUES
+no arguments:
+.Rv -std
+.Pp
+one argument:
+.Rv -std one
+.Pp
+two arguments:
+.Rv -std one two
diff --git a/regress/mdoc/Rv/noname.out_ascii b/regress/mdoc/Rv/noname.out_ascii
new file mode 100644
index 00000000..8cdd6a2f
--- /dev/null
+++ b/regress/mdoc/Rv/noname.out_ascii
@@ -0,0 +1,22 @@
+RV-NONAME(3) Library Functions Manual RV-NONAME(3)
+
+NNAAMMEE
+ - return value macro without an available name
+
+RREETTUURRNN VVAALLUUEESS
+ no arguments:
+ Upon successful completion, the value 0 is returned; otherwise the
+ value -1 is returned and the global variable _e_r_r_n_o is set to indicate the
+ error.
+
+ one argument:
+ The oonnee() function returns the value 0 if successful; otherwise the
+ value -1 is returned and the global variable _e_r_r_n_o is set to indicate the
+ error.
+
+ two arguments:
+ The oonnee() and ttwwoo() functions return the value 0 if successful; otherwise
+ the value -1 is returned and the global variable _e_r_r_n_o is set to indicate
+ the error.
+
+OpenBSD July 29, 2014 OpenBSD
diff --git a/regress/mdoc/Rv/noname.out_lint b/regress/mdoc/Rv/noname.out_lint
new file mode 100644
index 00000000..a0eec12a
--- /dev/null
+++ b/regress/mdoc/Rv/noname.out_lint
@@ -0,0 +1 @@
+mandoc: noname.in:5:2: ERROR: missing manual name, using "": Nm
diff --git a/regress/mdoc/Rv/nostd.in b/regress/mdoc/Rv/nostd.in
new file mode 100644
index 00000000..0dc9ea12
--- /dev/null
+++ b/regress/mdoc/Rv/nostd.in
@@ -0,0 +1,15 @@
+.Dd July 29, 2014
+.Dt RV-NOSTD 3
+.Os OpenBSD
+.Sh NAME
+.Nm Rv-nostd
+.Nd return value macros without -std arguments
+.Sh RETURN VALUES
+no arguments:
+.Rv
+.Pp
+one argument:
+.Rv one
+.Pp
+two arguments:
+.Rv one two
diff --git a/regress/mdoc/Rv/nostd.out_ascii b/regress/mdoc/Rv/nostd.out_ascii
new file mode 100644
index 00000000..320b8b11
--- /dev/null
+++ b/regress/mdoc/Rv/nostd.out_ascii
@@ -0,0 +1,22 @@
+RV-NOSTD(3) Library Functions Manual RV-NOSTD(3)
+
+NNAAMMEE
+ RRvv--nnoossttdd - return value macros without -std arguments
+
+RREETTUURRNN VVAALLUUEESS
+ no arguments:
+ Upon successful completion, the value 0 is returned; otherwise the
+ value -1 is returned and the global variable _e_r_r_n_o is set to indicate the
+ error.
+
+ one argument:
+ The oonnee() function returns the value 0 if successful; otherwise the
+ value -1 is returned and the global variable _e_r_r_n_o is set to indicate the
+ error.
+
+ two arguments:
+ The oonnee() and ttwwoo() functions return the value 0 if successful; otherwise
+ the value -1 is returned and the global variable _e_r_r_n_o is set to indicate
+ the error.
+
+OpenBSD July 29, 2014 OpenBSD
diff --git a/regress/mdoc/Rv/nostd.out_lint b/regress/mdoc/Rv/nostd.out_lint
new file mode 100644
index 00000000..c58122e0
--- /dev/null
+++ b/regress/mdoc/Rv/nostd.out_lint
@@ -0,0 +1,3 @@
+mandoc: nostd.in:9:2: WARNING: missing -std argument, adding it: Rv
+mandoc: nostd.in:12:2: WARNING: missing -std argument, adding it: Rv
+mandoc: nostd.in:15:2: WARNING: missing -std argument, adding it: Rv
diff --git a/regress/mdoc/Sh/Makefile b/regress/mdoc/Sh/Makefile
new file mode 100644
index 00000000..a1db1161
--- /dev/null
+++ b/regress/mdoc/Sh/Makefile
@@ -0,0 +1,11 @@
+# $OpenBSD: Makefile,v 1.7 2017/01/08 00:10:22 schwarze Exp $
+
+REGRESS_TARGETS = badNAME before empty emptyNAME first nohead order
+REGRESS_TARGETS += orderNAME punctNAME subbefore
+LINT_TARGETS = badNAME before empty emptyNAME first nohead order
+LINT_TARGETS += orderNAME punctNAME subbefore
+
+SKIP_GROFF = subbefore first empty
+SKIP_ASCII = first
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Sh/badNAME.in b/regress/mdoc/Sh/badNAME.in
new file mode 100644
index 00000000..85ebdbf7
--- /dev/null
+++ b/regress/mdoc/Sh/badNAME.in
@@ -0,0 +1,8 @@
+.Dd July 1, 2014
+.Dt SH-BADNAME 1
+.Os OpenBSD
+.Sh NAME
+.Em bad NAME section
+.Nm Sh-badNAME
+.Sh DESCRIPTION
+The description appears before the name and is not marked up with Nd.
diff --git a/regress/mdoc/Sh/badNAME.out_ascii b/regress/mdoc/Sh/badNAME.out_ascii
new file mode 100644
index 00000000..8c329a85
--- /dev/null
+++ b/regress/mdoc/Sh/badNAME.out_ascii
@@ -0,0 +1,9 @@
+SH-BADNAME(1) General Commands Manual SH-BADNAME(1)
+
+NNAAMMEE
+ _b_a_d _N_A_M_E _s_e_c_t_i_o_n SShh--bbaaddNNAAMMEE
+
+DDEESSCCRRIIPPTTIIOONN
+ The description appears before the name and is not marked up with Nd.
+
+OpenBSD July 1, 2014 OpenBSD
diff --git a/regress/mdoc/Sh/badNAME.out_lint b/regress/mdoc/Sh/badNAME.out_lint
new file mode 100644
index 00000000..9fbbf668
--- /dev/null
+++ b/regress/mdoc/Sh/badNAME.out_lint
@@ -0,0 +1,2 @@
+mandoc: badNAME.in:5:2: WARNING: bad NAME section content: Em
+mandoc: badNAME.in:4:2: WARNING: NAME section without description
diff --git a/regress/mdoc/Sh/before.in b/regress/mdoc/Sh/before.in
new file mode 100644
index 00000000..95b750cc
--- /dev/null
+++ b/regress/mdoc/Sh/before.in
@@ -0,0 +1,13 @@
+.Dd July 7, 2014
+.Dt SH-BEFORE 1
+.Os OpenBSD
+Can
+.Xr mandoc 1
+on
+.Ox
+handle this?
+.Sh NAME
+.Nm Sh-before
+.Nd content before the first section header
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Sh/before.out_ascii b/regress/mdoc/Sh/before.out_ascii
new file mode 100644
index 00000000..246c684a
--- /dev/null
+++ b/regress/mdoc/Sh/before.out_ascii
@@ -0,0 +1,11 @@
+SH-BEFORE(1) General Commands Manual SH-BEFORE(1)
+
+Can mandoc(1) on OpenBSD handle this?
+
+NNAAMMEE
+ SShh--bbeeffoorree - content before the first section header
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+OpenBSD July 7, 2014 OpenBSD
diff --git a/regress/mdoc/Sh/before.out_lint b/regress/mdoc/Sh/before.out_lint
new file mode 100644
index 00000000..314acb29
--- /dev/null
+++ b/regress/mdoc/Sh/before.out_lint
@@ -0,0 +1 @@
+mandoc: before.in:4:1: WARNING: content before first section header: text
diff --git a/regress/mdoc/Sh/empty.in b/regress/mdoc/Sh/empty.in
new file mode 100644
index 00000000..c830ac62
--- /dev/null
+++ b/regress/mdoc/Sh/empty.in
@@ -0,0 +1,10 @@
+.Dd November 21, 2014
+.Dt SH-EMPTY 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sh-empty
+.Nd empty sections
+.Sh SYNOPSIS
+.Sh DESCRIPTION Xo
+.Sh BUGS
+Quite some.
diff --git a/regress/mdoc/Sh/empty.out_ascii b/regress/mdoc/Sh/empty.out_ascii
new file mode 100644
index 00000000..d34892ff
--- /dev/null
+++ b/regress/mdoc/Sh/empty.out_ascii
@@ -0,0 +1,11 @@
+SH-EMPTY(1) General Commands Manual SH-EMPTY(1)
+
+NNAAMMEE
+ SShh--eemmppttyy - empty sections
+
+SSYYNNOOPPSSIISS
+DDEESSCCRRIIPPTTIIOONN
+BBUUGGSS
+ Quite some.
+
+OpenBSD November 21, 2014 OpenBSD
diff --git a/regress/mdoc/Sh/empty.out_lint b/regress/mdoc/Sh/empty.out_lint
new file mode 100644
index 00000000..28d05c97
--- /dev/null
+++ b/regress/mdoc/Sh/empty.out_lint
@@ -0,0 +1 @@
+mandoc: empty.in:9:2: ERROR: inserting missing end of block: Sh breaks Xo
diff --git a/regress/mdoc/Sh/emptyNAME.in b/regress/mdoc/Sh/emptyNAME.in
new file mode 100644
index 00000000..621724e5
--- /dev/null
+++ b/regress/mdoc/Sh/emptyNAME.in
@@ -0,0 +1,6 @@
+.Dd July 1, 2014
+.Dt SH-EMPTYNAME 1
+.Os OpenBSD
+.Sh NAME
+.Sh DESCRIPTION
+The NAME section is empty.
diff --git a/regress/mdoc/Sh/emptyNAME.out_ascii b/regress/mdoc/Sh/emptyNAME.out_ascii
new file mode 100644
index 00000000..32336cd9
--- /dev/null
+++ b/regress/mdoc/Sh/emptyNAME.out_ascii
@@ -0,0 +1,7 @@
+SH-EMPTYNAME(1) General Commands Manual SH-EMPTYNAME(1)
+
+NNAAMMEE
+DDEESSCCRRIIPPTTIIOONN
+ The NAME section is empty.
+
+OpenBSD July 1, 2014 OpenBSD
diff --git a/regress/mdoc/Sh/emptyNAME.out_lint b/regress/mdoc/Sh/emptyNAME.out_lint
new file mode 100644
index 00000000..c6da49bb
--- /dev/null
+++ b/regress/mdoc/Sh/emptyNAME.out_lint
@@ -0,0 +1,2 @@
+mandoc: emptyNAME.in:4:2: WARNING: NAME section without Nm before Nd
+mandoc: emptyNAME.in:4:2: WARNING: NAME section without description
diff --git a/regress/mdoc/Sh/first.in b/regress/mdoc/Sh/first.in
new file mode 100644
index 00000000..f0d4b0b4
--- /dev/null
+++ b/regress/mdoc/Sh/first.in
@@ -0,0 +1,5 @@
+.Dd July 1, 2014
+.Dt SH-FIRST 1
+.Os OpenBSD
+.Sh DESCRIPTION
+The first section is not a NAME section.
diff --git a/regress/mdoc/Sh/first.out_lint b/regress/mdoc/Sh/first.out_lint
new file mode 100644
index 00000000..df39e0d0
--- /dev/null
+++ b/regress/mdoc/Sh/first.out_lint
@@ -0,0 +1 @@
+mandoc: first.in:4:2: WARNING: first section is not "NAME": Sh DESCRIPTION
diff --git a/regress/mdoc/Sh/nohead.in b/regress/mdoc/Sh/nohead.in
new file mode 100644
index 00000000..d4516cc7
--- /dev/null
+++ b/regress/mdoc/Sh/nohead.in
@@ -0,0 +1,12 @@
+.Dd February 5, 2015
+.Dt SH-NOHEAD 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sh-nohead
+.Nd sections without header lines
+.Sh DESCRIPTION
+empty section header:
+.Sh
+empty subsection header:
+.Ss
+text
diff --git a/regress/mdoc/Sh/nohead.out_ascii b/regress/mdoc/Sh/nohead.out_ascii
new file mode 100644
index 00000000..fa42f20c
--- /dev/null
+++ b/regress/mdoc/Sh/nohead.out_ascii
@@ -0,0 +1,9 @@
+SH-NOHEAD(1) General Commands Manual SH-NOHEAD(1)
+
+NNAAMMEE
+ SShh--nnoohheeaadd - sections without header lines
+
+DDEESSCCRRIIPPTTIIOONN
+ empty section header: empty subsection header: text
+
+OpenBSD February 5, 2015 OpenBSD
diff --git a/regress/mdoc/Sh/nohead.out_lint b/regress/mdoc/Sh/nohead.out_lint
new file mode 100644
index 00000000..b93f65e6
--- /dev/null
+++ b/regress/mdoc/Sh/nohead.out_lint
@@ -0,0 +1,2 @@
+mandoc: nohead.in:9:2: WARNING: skipping empty macro: Sh
+mandoc: nohead.in:11:2: WARNING: skipping empty macro: Ss
diff --git a/regress/mdoc/Sh/order.in b/regress/mdoc/Sh/order.in
new file mode 100644
index 00000000..ffab6878
--- /dev/null
+++ b/regress/mdoc/Sh/order.in
@@ -0,0 +1,12 @@
+.Dd July 1, 2014
+.Dt SH-ORDER 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sh-order
+.Nd sections out of conventional order
+.Sh DESCRIPTION
+some text
+.Sh SYNOPSIS
+.Sh SYNOPSIS
+.Sh ERRORS
+.Vt int errno
diff --git a/regress/mdoc/Sh/order.out_ascii b/regress/mdoc/Sh/order.out_ascii
new file mode 100644
index 00000000..0ed56118
--- /dev/null
+++ b/regress/mdoc/Sh/order.out_ascii
@@ -0,0 +1,14 @@
+SH-ORDER(1) General Commands Manual SH-ORDER(1)
+
+NNAAMMEE
+ SShh--oorrddeerr - sections out of conventional order
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+SSYYNNOOPPSSIISS
+SSYYNNOOPPSSIISS
+EERRRROORRSS
+ _i_n_t _e_r_r_n_o
+
+OpenBSD July 1, 2014 OpenBSD
diff --git a/regress/mdoc/Sh/order.out_lint b/regress/mdoc/Sh/order.out_lint
new file mode 100644
index 00000000..67aa5db8
--- /dev/null
+++ b/regress/mdoc/Sh/order.out_lint
@@ -0,0 +1,3 @@
+mandoc: order.in:9:2: WARNING: sections out of conventional order: Sh SYNOPSIS
+mandoc: order.in:10:2: WARNING: duplicate section title: Sh SYNOPSIS
+mandoc: order.in:11:2: WARNING: unexpected section: Sh ERRORS for 2, 3, 4, 9 only
diff --git a/regress/mdoc/Sh/orderNAME.in b/regress/mdoc/Sh/orderNAME.in
new file mode 100644
index 00000000..d8fa1452
--- /dev/null
+++ b/regress/mdoc/Sh/orderNAME.in
@@ -0,0 +1,9 @@
+.Dd January 7, 2017
+.Dt SH-ORDERNAME 1
+.Os OpenBSD
+.Sh NAME
+.Nd name after description in NAME section
+.Ss subsection
+.Nm Sh-orderNAME
+.Sh DESCRIPTION
+The order of Nm and Nd is wrong in the NAME section.
diff --git a/regress/mdoc/Sh/orderNAME.out_ascii b/regress/mdoc/Sh/orderNAME.out_ascii
new file mode 100644
index 00000000..5e9e032f
--- /dev/null
+++ b/regress/mdoc/Sh/orderNAME.out_ascii
@@ -0,0 +1,12 @@
+SH-ORDERNAME(1) General Commands Manual SH-ORDERNAME(1)
+
+NNAAMMEE
+ - name after description in NAME section
+
+ ssuubbsseeccttiioonn
+ SShh--oorrddeerrNNAAMMEE
+
+DDEESSCCRRIIPPTTIIOONN
+ The order of Nm and Nd is wrong in the NAME section.
+
+OpenBSD January 7, 2017 OpenBSD
diff --git a/regress/mdoc/Sh/orderNAME.out_lint b/regress/mdoc/Sh/orderNAME.out_lint
new file mode 100644
index 00000000..0049023d
--- /dev/null
+++ b/regress/mdoc/Sh/orderNAME.out_lint
@@ -0,0 +1,2 @@
+mandoc: orderNAME.in:5:2: WARNING: description not at the end of NAME
+mandoc: orderNAME.in:4:2: WARNING: NAME section without Nm before Nd
diff --git a/regress/mdoc/Sh/punctNAME.in b/regress/mdoc/Sh/punctNAME.in
new file mode 100644
index 00000000..c34648b5
--- /dev/null
+++ b/regress/mdoc/Sh/punctNAME.in
@@ -0,0 +1,10 @@
+.Dd January 7, 2017
+.Dt SH-PUNCTNAME 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sh-punctNAME
+.Nm second_name ;
+.Nm third_name ,
+.Nd wrong punctuation in the NAME section
+.Sh DESCRIPTION
+One comma is missing, and one is misplaced.
diff --git a/regress/mdoc/Sh/punctNAME.out_ascii b/regress/mdoc/Sh/punctNAME.out_ascii
new file mode 100644
index 00000000..8b74eda5
--- /dev/null
+++ b/regress/mdoc/Sh/punctNAME.out_ascii
@@ -0,0 +1,10 @@
+SH-PUNCTNAME(1) General Commands Manual SH-PUNCTNAME(1)
+
+NNAAMMEE
+ SShh--ppuunnccttNNAAMMEE sseeccoonndd__nnaammee; tthhiirrdd__nnaammee, - wrong punctuation in the NAME
+ section
+
+DDEESSCCRRIIPPTTIIOONN
+ One comma is missing, and one is misplaced.
+
+OpenBSD January 7, 2017 OpenBSD
diff --git a/regress/mdoc/Sh/punctNAME.out_lint b/regress/mdoc/Sh/punctNAME.out_lint
new file mode 100644
index 00000000..9ed95e4e
--- /dev/null
+++ b/regress/mdoc/Sh/punctNAME.out_lint
@@ -0,0 +1,4 @@
+mandoc: punctNAME.in:6:2: WARNING: missing comma before name: Nm second_name
+mandoc: punctNAME.in:6:17: WARNING: bad NAME section content: text
+mandoc: punctNAME.in:7:2: WARNING: missing comma before name: Nm third_name
+mandoc: punctNAME.in:7:16: WARNING: bad NAME section content: text
diff --git a/regress/mdoc/Sh/subbefore.in b/regress/mdoc/Sh/subbefore.in
new file mode 100644
index 00000000..ac800e13
--- /dev/null
+++ b/regress/mdoc/Sh/subbefore.in
@@ -0,0 +1,14 @@
+.Dd July 30, 2014
+.Dt SH-SUBBEFORE 1
+.Os OpenBSD
+.Ss Subsection
+Can
+.Xr mandoc 1
+on
+.Ox
+handle this?
+.Sh NAME
+.Nm Sh-subbefore
+.Nd subsection before the first section header
+.Sh DESCRIPTION
+some text
diff --git a/regress/mdoc/Sh/subbefore.out_ascii b/regress/mdoc/Sh/subbefore.out_ascii
new file mode 100644
index 00000000..a53bb7dc
--- /dev/null
+++ b/regress/mdoc/Sh/subbefore.out_ascii
@@ -0,0 +1,12 @@
+SH-SUBBEFORE(1) General Commands Manual SH-SUBBEFORE(1)
+
+ SSuubbsseeccttiioonn
+ Can mandoc(1) on OpenBSD handle this?
+
+NNAAMMEE
+ SShh--ssuubbbbeeffoorree - subsection before the first section header
+
+DDEESSCCRRIIPPTTIIOONN
+ some text
+
+OpenBSD July 30, 2014 OpenBSD
diff --git a/regress/mdoc/Sh/subbefore.out_lint b/regress/mdoc/Sh/subbefore.out_lint
new file mode 100644
index 00000000..fd497d25
--- /dev/null
+++ b/regress/mdoc/Sh/subbefore.out_lint
@@ -0,0 +1 @@
+mandoc: subbefore.in:4:2: WARNING: content before first section header: Ss
diff --git a/regress/mdoc/Sm/Makefile b/regress/mdoc/Sm/Makefile
new file mode 100644
index 00000000..197b1d74
--- /dev/null
+++ b/regress/mdoc/Sm/Makefile
@@ -0,0 +1,8 @@
+# $OpenBSD: Makefile,v 1.7 2014/11/26 19:22:44 schwarze Exp $
+
+REGRESS_TARGETS = noarg badarg scope spacing-No spacing-Op twoarg
+LINT_TARGETS = badarg twoarg
+
+SKIP_TMAN ?= scope
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Sm/badarg.in b/regress/mdoc/Sm/badarg.in
new file mode 100644
index 00000000..8684965e
--- /dev/null
+++ b/regress/mdoc/Sm/badarg.in
@@ -0,0 +1,14 @@
+.Dd July 3, 2014
+.Dt SM-BADARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sm-badarg
+.Nd spacing macro with invalid arguments
+.Sh DESCRIPTION
+.Fl f Ar on
+.Sm off
+.Fl f Ar off
+.Sm bad
+.Fl f Ar bad Pq on
+.Sm bad
+.Fl f Ar bad Pq off
diff --git a/regress/mdoc/Sm/badarg.out_ascii b/regress/mdoc/Sm/badarg.out_ascii
new file mode 100644
index 00000000..6b65fb9a
--- /dev/null
+++ b/regress/mdoc/Sm/badarg.out_ascii
@@ -0,0 +1,9 @@
+SM-BADARG(1) General Commands Manual SM-BADARG(1)
+
+NNAAMMEE
+ SSmm--bbaaddaarrgg - spacing macro with invalid arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ --ff _o_n --ff_o_f_f bad --ff _b_a_d (on) bad--ff_b_a_d(off)
+
+OpenBSD July 3, 2014 OpenBSD
diff --git a/regress/mdoc/Sm/badarg.out_lint b/regress/mdoc/Sm/badarg.out_lint
new file mode 100644
index 00000000..54644f34
--- /dev/null
+++ b/regress/mdoc/Sm/badarg.out_lint
@@ -0,0 +1,2 @@
+mandoc: badarg.in:11:5: WARNING: invalid Boolean argument: Sm bad
+mandoc: badarg.in:13:5: WARNING: invalid Boolean argument: Sm bad
diff --git a/regress/mdoc/Sm/noarg.in b/regress/mdoc/Sm/noarg.in
new file mode 100644
index 00000000..bb777430
--- /dev/null
+++ b/regress/mdoc/Sm/noarg.in
@@ -0,0 +1,20 @@
+.Dd July 2, 2014
+.Dt SM-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sm-noarg
+.Nd spacing macro without arguments
+.Sh DESCRIPTION
+.Fl f Ar on
+.Sm off
+.Fl f Ar off
+.Sm
+.Fl f Ar toggle Pq now on
+.Sm on
+.Fl f Ar on
+.Sm
+.Fl f Ar toggle Pq now off
+.Pp
+.Sm on
+.Fl f Ar on
+on a new line
diff --git a/regress/mdoc/Sm/noarg.out_ascii b/regress/mdoc/Sm/noarg.out_ascii
new file mode 100644
index 00000000..ea0f2fc6
--- /dev/null
+++ b/regress/mdoc/Sm/noarg.out_ascii
@@ -0,0 +1,11 @@
+SM-NOARG(1) General Commands Manual SM-NOARG(1)
+
+NNAAMMEE
+ SSmm--nnooaarrgg - spacing macro without arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ --ff _o_n --ff_o_f_f --ff _t_o_g_g_l_e (now on) --ff _o_n --ff_t_o_g_g_l_e(nowoff)
+
+ --ff _o_n on a new line
+
+OpenBSD July 2, 2014 OpenBSD
diff --git a/regress/mdoc/Sm/scope.in b/regress/mdoc/Sm/scope.in
new file mode 100644
index 00000000..76ce050b
--- /dev/null
+++ b/regress/mdoc/Sm/scope.in
@@ -0,0 +1,30 @@
+.Dd January 2, 2010
+.Dt SM-SCOPE 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sm-scope
+.Nd scope of the spacing macro
+.Sh DESCRIPTION
+Using an abbreviated example from the
+.Xr ksh 1
+manual.
+.Pp
+Modifiers can be applied to the
+.Pf ${ Ns Ar name Ns }
+form of parameter substitution:
+.Bl -tag -width Ds
+.Sm off
+.It ${ Ar name No :- Ar word No }
+.Sm on
+If
+.Ar name
+is set and not
+.Dv NULL ,
+it is substituted; otherwise,
+.Ar word
+is substituted.
+.El
+.Pp
+In the above modifiers, the
+.Ql \&:
+can be omitted, ...
diff --git a/regress/mdoc/Sm/scope.out_ascii b/regress/mdoc/Sm/scope.out_ascii
new file mode 100644
index 00000000..8a735d1c
--- /dev/null
+++ b/regress/mdoc/Sm/scope.out_ascii
@@ -0,0 +1,17 @@
+SM-SCOPE(1) General Commands Manual SM-SCOPE(1)
+
+NNAAMMEE
+ SSmm--ssccooppee - scope of the spacing macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Using an abbreviated example from the ksh(1) manual.
+
+ Modifiers can be applied to the ${_n_a_m_e} form of parameter substitution:
+
+ ${_n_a_m_e:-_w_o_r_d}
+ If _n_a_m_e is set and not NULL, it is substituted; otherwise, _w_o_r_d
+ is substituted.
+
+ In the above modifiers, the `:' can be omitted, ...
+
+OpenBSD January 2, 2010 OpenBSD
diff --git a/regress/mdoc/Sm/spacing-No.in b/regress/mdoc/Sm/spacing-No.in
new file mode 100644
index 00000000..35b6b10b
--- /dev/null
+++ b/regress/mdoc/Sm/spacing-No.in
@@ -0,0 +1,60 @@
+.Dd July 4, 2010
+.Dt SM-SPACING 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sm-spacing
+.Nd basic tests of spacing mode
+.Sh SYNOPSIS
+.Nm mandoc
+.Sm off
+.Fl T Ar mode
+.Sm on
+.Ar
+.Sh DESCRIPTION
+text1
+.Sm off
+text2 text3
+.Sm on
+text4
+.Pp
+text1
+.Sm off
+text2 text3
+.Sm on
+.No macro4
+.Pp
+text1
+.Sm off
+.No macro2 macro3
+.Sm on
+text4
+.Pp
+text1
+.Sm off
+.No macro2 No macro3
+.Sm on
+.No macro4
+.Pp
+.No macro1
+.Sm off
+text2 text3
+.Sm on
+text4
+.Pp
+.No macro1
+.Sm off
+text2 text3
+.Sm on
+.No macro4
+.Pp
+.No macro1
+.Sm off
+.No macro2 No macro3
+.Sm on
+text4
+.Pp
+.No macro1
+.Sm off
+.No macro2 No macro3
+.Sm on
+.No macro4
diff --git a/regress/mdoc/Sm/spacing-No.out_ascii b/regress/mdoc/Sm/spacing-No.out_ascii
new file mode 100644
index 00000000..d303e3cf
--- /dev/null
+++ b/regress/mdoc/Sm/spacing-No.out_ascii
@@ -0,0 +1,26 @@
+SM-SPACING(1) General Commands Manual SM-SPACING(1)
+
+NNAAMMEE
+ SSmm--ssppaacciinngg - basic tests of spacing mode
+
+SSYYNNOOPPSSIISS
+ mmaannddoocc --TT_m_o_d_e _f_i_l_e _._._.
+
+DDEESSCCRRIIPPTTIIOONN
+ text1 text2 text3 text4
+
+ text1 text2 text3 macro4
+
+ text1 macro2macro3 text4
+
+ text1 macro2macro3 macro4
+
+ macro1 text2 text3 text4
+
+ macro1 text2 text3 macro4
+
+ macro1 macro2macro3 text4
+
+ macro1 macro2macro3 macro4
+
+OpenBSD July 4, 2010 OpenBSD
diff --git a/regress/mdoc/Sm/spacing-Op.in b/regress/mdoc/Sm/spacing-Op.in
new file mode 100644
index 00000000..9d3716a4
--- /dev/null
+++ b/regress/mdoc/Sm/spacing-Op.in
@@ -0,0 +1,63 @@
+.Dd July 4, 2010
+.Dt SM-SPACING-OP 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sm-spacing-Op
+.Nd spacing mode, demonstrated using the .Op macro
+.Sh SYNOPSIS
+.Nm mandoc
+.Sm off
+.Fl T Ar mode
+.Sm on
+.Ar
+.Sh DESCRIPTION
+text1
+.Sm off
+text2 text3
+.Sm on
+text4
+.Pp
+text1
+.Sm off
+text2 text3
+.Sm on
+.Op macro4
+.Pp
+text1
+.Sm off
+.Op macro2 macro3
+.Sm on
+text4
+.Pp
+text1
+.Sm off
+.Op macro2 Op macro3
+.Sm on
+.Op macro4
+.Pp
+.Op macro1
+.Sm off
+text2 text3
+.Sm on
+text4
+.Pp
+.Op macro1
+.Sm off
+text2 text3
+.Sm on
+.Op macro4
+.Pp
+.Op macro1
+.Sm off
+.Op macro2 Op macro3
+.Sm on
+text4
+.Pp
+.Op macro1
+.Sm off
+.Op macro2 Op macro3
+.Sm on
+.Op macro4
+.Pp
+.Sm on
+.Op macro1
diff --git a/regress/mdoc/Sm/spacing-Op.out_ascii b/regress/mdoc/Sm/spacing-Op.out_ascii
new file mode 100644
index 00000000..c5338dce
--- /dev/null
+++ b/regress/mdoc/Sm/spacing-Op.out_ascii
@@ -0,0 +1,28 @@
+SM-SPACING-OP(1) General Commands Manual SM-SPACING-OP(1)
+
+NNAAMMEE
+ SSmm--ssppaacciinngg--OOpp - spacing mode, demonstrated using the .Op macro
+
+SSYYNNOOPPSSIISS
+ mmaannddoocc --TT_m_o_d_e _f_i_l_e _._._.
+
+DDEESSCCRRIIPPTTIIOONN
+ text1 text2 text3 text4
+
+ text1 text2 text3 [macro4]
+
+ text1 [macro2macro3] text4
+
+ text1 [macro2[macro3]] [macro4]
+
+ [macro1] text2 text3 text4
+
+ [macro1] text2 text3 [macro4]
+
+ [macro1] [macro2[macro3]] text4
+
+ [macro1] [macro2[macro3]] [macro4]
+
+ [macro1]
+
+OpenBSD July 4, 2010 OpenBSD
diff --git a/regress/mdoc/Sm/twoarg.in b/regress/mdoc/Sm/twoarg.in
new file mode 100644
index 00000000..8e7b51d7
--- /dev/null
+++ b/regress/mdoc/Sm/twoarg.in
@@ -0,0 +1,21 @@
+.Dd November 26, 2014
+.Dt SM-TWOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sm-twoarg
+.Nd spacing macro with multiple arguments
+.Sh DESCRIPTION
+.Sy default :
+.Fl f Ar on
+.br
+.Sy off two :
+.Sm off two
+.Fl f Ar off
+.br
+.Sy bad two :
+.Sm bad two
+.Fl f Ar off
+.br
+.Sy on two :
+.Sm on two
+.Fl f Ar on
diff --git a/regress/mdoc/Sm/twoarg.out_ascii b/regress/mdoc/Sm/twoarg.out_ascii
new file mode 100644
index 00000000..b8276c2f
--- /dev/null
+++ b/regress/mdoc/Sm/twoarg.out_ascii
@@ -0,0 +1,12 @@
+SM-TWOARG(1) General Commands Manual SM-TWOARG(1)
+
+NNAAMMEE
+ SSmm--ttwwooaarrgg - spacing macro with multiple arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ ddeeffaauulltt: --ff _o_n
+ ooffff ttwwoo: two--ff_o_f_f
+ bbaaddttwwoo: bad two --ff _o_f_f
+ oonn ttwwoo: two --ff _o_n
+
+OpenBSD November 26, 2014 OpenBSD
diff --git a/regress/mdoc/Sm/twoarg.out_lint b/regress/mdoc/Sm/twoarg.out_lint
new file mode 100644
index 00000000..581a5500
--- /dev/null
+++ b/regress/mdoc/Sm/twoarg.out_lint
@@ -0,0 +1 @@
+mandoc: twoarg.in:16:5: WARNING: invalid Boolean argument: Sm bad
diff --git a/regress/mdoc/Sq/Makefile b/regress/mdoc/Sq/Makefile
new file mode 100644
index 00000000..24f19edf
--- /dev/null
+++ b/regress/mdoc/Sq/Makefile
@@ -0,0 +1,5 @@
+# $OpenBSD: Makefile,v 1.1.1.1 2011/12/04 03:09:25 schwarze Exp $
+
+REGRESS_TARGETS=empty
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Sq/empty.in b/regress/mdoc/Sq/empty.in
new file mode 100644
index 00000000..00af9a27
--- /dev/null
+++ b/regress/mdoc/Sq/empty.in
@@ -0,0 +1,14 @@
+.Dd October 21, 2010
+.Dt SQ-EMPTY 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sq-empty
+.Nd empty implicit enclosure macros
+.Sh DESCRIPTION
+An empty
+.Sq
+and a full
+.Sq user@host
+quotation.
+And another
+.So full Sc one .
diff --git a/regress/mdoc/Sq/empty.out_ascii b/regress/mdoc/Sq/empty.out_ascii
new file mode 100644
index 00000000..4ca5e846
--- /dev/null
+++ b/regress/mdoc/Sq/empty.out_ascii
@@ -0,0 +1,9 @@
+SQ-EMPTY(1) General Commands Manual SQ-EMPTY(1)
+
+NNAAMMEE
+ SSqq--eemmppttyy - empty implicit enclosure macros
+
+DDEESSCCRRIIPPTTIIOONN
+ An empty `' and a full `user@host' quotation. And another `full' one.
+
+OpenBSD October 21, 2010 OpenBSD
diff --git a/regress/mdoc/St/Makefile b/regress/mdoc/St/Makefile
new file mode 100644
index 00000000..a1bde7e1
--- /dev/null
+++ b/regress/mdoc/St/Makefile
@@ -0,0 +1,12 @@
+# $OpenBSD: Makefile,v 1.4 2015/02/10 17:47:19 schwarze Exp $
+
+REGRESS_TARGETS = badargs call
+LINT_TARGETS = badargs call
+
+# groff-1.22.3 defect:
+# - If the first argument of .St is the name of another macro,
+# internal groff_mdoc(7) state gets corrupted.
+
+SKIP_GROFF = call
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/St/badargs.in b/regress/mdoc/St/badargs.in
new file mode 100644
index 00000000..e1e35e0a
--- /dev/null
+++ b/regress/mdoc/St/badargs.in
@@ -0,0 +1,20 @@
+.Dd June 30, 2010
+.Dt ST-INVALID 1
+.Os OpenBSD
+.Sh NAME
+.Nm St-invalid
+.Nd handling of invalid standard argument
+.Sh STANDARDS
+valid argument:
+.St -p1003.1-2004
+.Pp
+invalid argument:
+.St -murks
+.Pp
+no arguments:
+.St
+.Pp
+two arguments:
+.St -p1003.1-2004 murks
+.Pp
+end of file
diff --git a/regress/mdoc/St/badargs.out_ascii b/regress/mdoc/St/badargs.out_ascii
new file mode 100644
index 00000000..a32ff83b
--- /dev/null
+++ b/regress/mdoc/St/badargs.out_ascii
@@ -0,0 +1,17 @@
+ST-INVALID(1) General Commands Manual ST-INVALID(1)
+
+NNAAMMEE
+ SStt--iinnvvaalliidd - handling of invalid standard argument
+
+SSTTAANNDDAARRDDSS
+ valid argument: IEEE Std 1003.1-2004 (``POSIX.1'')
+
+ invalid argument:
+
+ no arguments:
+
+ two arguments: IEEE Std 1003.1-2004 (``POSIX.1'') murks
+
+ end of file
+
+OpenBSD June 30, 2010 OpenBSD
diff --git a/regress/mdoc/St/badargs.out_lint b/regress/mdoc/St/badargs.out_lint
new file mode 100644
index 00000000..ae74aa1a
--- /dev/null
+++ b/regress/mdoc/St/badargs.out_lint
@@ -0,0 +1,2 @@
+mandoc: badargs.in:15:2: WARNING: skipping empty macro: St
+mandoc: badargs.in:12:5: ERROR: unknown standard specifier: St -murks
diff --git a/regress/mdoc/St/call.in b/regress/mdoc/St/call.in
new file mode 100644
index 00000000..10a45d3a
--- /dev/null
+++ b/regress/mdoc/St/call.in
@@ -0,0 +1,14 @@
+.Dd February 10, 2015
+.Dt ST-CALL 1
+.Os OpenBSD
+.Sh NAME
+.Nm St-call
+.Nd the standard macro calling other macros
+.Sh STANDARDS
+calling another macro:
+.St Fl called
+.Pp
+valid argument:
+.St -p1003.1-2004
+.Pp
+end of file
diff --git a/regress/mdoc/St/call.out_ascii b/regress/mdoc/St/call.out_ascii
new file mode 100644
index 00000000..17f04404
--- /dev/null
+++ b/regress/mdoc/St/call.out_ascii
@@ -0,0 +1,13 @@
+ST-CALL(1) General Commands Manual ST-CALL(1)
+
+NNAAMMEE
+ SStt--ccaallll - the standard macro calling other macros
+
+SSTTAANNDDAARRDDSS
+ calling another macro: --ccaalllleedd
+
+ valid argument: IEEE Std 1003.1-2004 (``POSIX.1'')
+
+ end of file
+
+OpenBSD February 10, 2015 OpenBSD
diff --git a/regress/mdoc/St/call.out_lint b/regress/mdoc/St/call.out_lint
new file mode 100644
index 00000000..6bf60a71
--- /dev/null
+++ b/regress/mdoc/St/call.out_lint
@@ -0,0 +1 @@
+mandoc: call.in:9:2: WARNING: skipping empty macro: St
diff --git a/regress/mdoc/Sx/Makefile b/regress/mdoc/Sx/Makefile
new file mode 100644
index 00000000..1be2a84a
--- /dev/null
+++ b/regress/mdoc/Sx/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.4 2014/07/02 20:18:42 schwarze Exp $
+
+REGRESS_TARGETS = noarg font
+LINT_TARGETS = noarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Sx/font.in b/regress/mdoc/Sx/font.in
new file mode 100644
index 00000000..92d95014
--- /dev/null
+++ b/regress/mdoc/Sx/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt SX-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sx-font
+.Nd changing fonts inside the cross reference macro
+.Sh DESCRIPTION
+normal text
+.Sx emphasis\\fBbold\\fPback
+trailing text
diff --git a/regress/mdoc/Sx/font.out_ascii b/regress/mdoc/Sx/font.out_ascii
new file mode 100644
index 00000000..a3906c38
--- /dev/null
+++ b/regress/mdoc/Sx/font.out_ascii
@@ -0,0 +1,9 @@
+SX-FONT(1) General Commands Manual SX-FONT(1)
+
+NNAAMMEE
+ SSxx--ffoonntt - changing fonts inside the cross reference macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text _e_m_p_h_a_s_i_sbboolldd_b_a_c_k trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Sx/noarg.in b/regress/mdoc/Sx/noarg.in
new file mode 100644
index 00000000..35c4a64e
--- /dev/null
+++ b/regress/mdoc/Sx/noarg.in
@@ -0,0 +1,12 @@
+.Dd January 19, 2011
+.Dt SX-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sx-noarg
+.Nd internal cross reference without a target
+.Sh DESCRIPTION
+with target:
+.Sx DESCRIPTION
+no target:
+.Sx
+end of test document
diff --git a/regress/mdoc/Sx/noarg.out_ascii b/regress/mdoc/Sx/noarg.out_ascii
new file mode 100644
index 00000000..343ab007
--- /dev/null
+++ b/regress/mdoc/Sx/noarg.out_ascii
@@ -0,0 +1,9 @@
+SX-NOARG(1) General Commands Manual SX-NOARG(1)
+
+NNAAMMEE
+ SSxx--nnooaarrgg - internal cross reference without a target
+
+DDEESSCCRRIIPPTTIIOONN
+ with target: _D_E_S_C_R_I_P_T_I_O_N no target: end of test document
+
+OpenBSD January 19, 2011 OpenBSD
diff --git a/regress/mdoc/Sx/noarg.out_lint b/regress/mdoc/Sx/noarg.out_lint
new file mode 100644
index 00000000..3bdfa389
--- /dev/null
+++ b/regress/mdoc/Sx/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:11:2: WARNING: skipping empty macro: Sx
diff --git a/regress/mdoc/Sy/Makefile b/regress/mdoc/Sy/Makefile
new file mode 100644
index 00000000..36c1859b
--- /dev/null
+++ b/regress/mdoc/Sy/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.5 2014/11/17 06:44:35 schwarze Exp $
+
+REGRESS_TARGETS = noarg font punct
+LINT_TARGETS = noarg punct
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Sy/font.in b/regress/mdoc/Sy/font.in
new file mode 100644
index 00000000..3a7bbb06
--- /dev/null
+++ b/regress/mdoc/Sy/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt SY-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sy-font
+.Nd changing fonts inside the symbolic font macro
+.Sh DESCRIPTION
+normal text
+.Sy bold\\fIemphasis\\fPback
+trailing text
diff --git a/regress/mdoc/Sy/font.out_ascii b/regress/mdoc/Sy/font.out_ascii
new file mode 100644
index 00000000..b512ef42
--- /dev/null
+++ b/regress/mdoc/Sy/font.out_ascii
@@ -0,0 +1,9 @@
+SY-FONT(1) General Commands Manual SY-FONT(1)
+
+NNAAMMEE
+ SSyy--ffoonntt - changing fonts inside the symbolic font macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text bboolldd_e_m_p_h_a_s_i_sbbaacckk trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Sy/noarg.in b/regress/mdoc/Sy/noarg.in
new file mode 100644
index 00000000..03b36675
--- /dev/null
+++ b/regress/mdoc/Sy/noarg.in
@@ -0,0 +1,12 @@
+.Dd January 19, 2011
+.Dt SY-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sy-noarg
+.Nd symbolic macro without arguments
+.Sh DESCRIPTION
+with argument
+.Sy arg
+no argument
+.Sy
+end of test document
diff --git a/regress/mdoc/Sy/noarg.out_ascii b/regress/mdoc/Sy/noarg.out_ascii
new file mode 100644
index 00000000..53a9f275
--- /dev/null
+++ b/regress/mdoc/Sy/noarg.out_ascii
@@ -0,0 +1,9 @@
+SY-NOARG(1) General Commands Manual SY-NOARG(1)
+
+NNAAMMEE
+ SSyy--nnooaarrgg - symbolic macro without arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ with argument aarrgg no argument end of test document
+
+OpenBSD January 19, 2011 OpenBSD
diff --git a/regress/mdoc/Sy/noarg.out_lint b/regress/mdoc/Sy/noarg.out_lint
new file mode 100644
index 00000000..de7bf597
--- /dev/null
+++ b/regress/mdoc/Sy/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:11:2: WARNING: skipping empty macro: Sy
diff --git a/regress/mdoc/Sy/punct.in b/regress/mdoc/Sy/punct.in
new file mode 100644
index 00000000..4f51886b
--- /dev/null
+++ b/regress/mdoc/Sy/punct.in
@@ -0,0 +1,82 @@
+.Dd November 17, 2014
+.Dt SY-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sy-punct
+.Nd punctuation following a symbolic macro
+.Sh DESCRIPTION
+Leading punctuation:
+.Sy ( b
+.Sy [ b
+.Sy | b
+.Sy . b
+.Sy , b
+.Sy ; b
+.Sy : b
+.Sy ? b
+.Sy ! b
+.Sy ) b
+.Sy ] b
+.Pp
+Trailing punctuation:
+.Sy a (
+.Sy a [
+.Sy a |
+.Sy a .
+.Sy a ,
+.Sy a ;
+.Sy a :
+.Sy a ?
+.Sy a !
+.Sy a )
+.Sy a ]
+.Pp
+Middle punctuation:
+.Sy a ( b
+.Sy a [ b
+.Sy a | b
+.Sy a . b
+.Sy a , b
+.Sy a ; b
+.Sy a : b
+.Sy a ? b
+.Sy a ! b
+.Sy a ) b
+.Sy a ] b
+.Pp
+Isolated punctuation:
+.Sy a Sy ( Sy b
+.Sy a Sy [ Sy b
+.Sy a Sy | Sy b
+.Sy a Sy . Sy b
+.Sy a Sy , Sy b
+.Sy a Sy ; Sy b
+.Sy a Sy : Sy b
+.Sy a Sy ? Sy b
+.Sy a Sy ! Sy b
+.Sy a Sy ) Sy b
+.Sy a Sy ] Sy b
+.Pp
+Isolated trailing punctuation:
+.Sy a Sy (
+.Sy a Sy [
+.Sy a Sy |
+.Sy a Sy .
+.Sy a Sy ,
+.Sy a Sy ;
+.Sy a Sy :
+.Sy a Sy ?
+.Sy a Sy !
+.Sy a Sy )
+.Sy a Sy ]
+.Pp
+Multiple isolated punctuation:
+.Sy a Sy ( [ Sy b
+.Sy a Sy ) ] Sy b
+.Pp
+Multiple punctuation:
+.Sy [ ( arg ) ] .
+.Pp
+Quoted:
+.Sy "a . b Nm"
+.Sy ". b Nm"
diff --git a/regress/mdoc/Sy/punct.out_ascii b/regress/mdoc/Sy/punct.out_ascii
new file mode 100644
index 00000000..39bed0ba
--- /dev/null
+++ b/regress/mdoc/Sy/punct.out_ascii
@@ -0,0 +1,26 @@
+SY-PUNCT(1) General Commands Manual SY-PUNCT(1)
+
+NNAAMMEE
+ SSyy--ppuunncctt - punctuation following a symbolic macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Leading punctuation: (bb [bb | bb . bb , bb ; bb : bb ? bb ! bb ) bb ] bb
+
+ Trailing punctuation: aa ( aa [ aa | aa. aa, aa; aa: aa? aa! aa) aa]
+
+ Middle punctuation: aa (bb aa [bb aa | bb aa. bb aa, bb aa; bb aa: bb aa? bb aa! bb aa) bb aa]
+ bb
+
+ Isolated punctuation: aa (bb aa [bb aa | bb aa . bb aa , bb aa ; bb aa : bb aa ? bb aa ! bb
+ aa ) bb aa ] bb
+
+ Isolated trailing punctuation: aa ( aa [ aa | aa . aa , aa ; aa : aa ? aa ! aa )
+ aa ]
+
+ Multiple isolated punctuation: aa ([bb aa )] bb
+
+ Multiple punctuation: [(aarrgg)].
+
+ Quoted: aa .. bb NNmm .. bb NNmm
+
+OpenBSD November 17, 2014 OpenBSD
diff --git a/regress/mdoc/Sy/punct.out_lint b/regress/mdoc/Sy/punct.out_lint
new file mode 100644
index 00000000..0073a308
--- /dev/null
+++ b/regress/mdoc/Sy/punct.out_lint
@@ -0,0 +1,24 @@
+mandoc: punct.in:48:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:49:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:50:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:51:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:52:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:53:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:54:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:55:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:56:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:57:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:58:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:61:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:62:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:63:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:64:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:65:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:66:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:67:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:68:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:69:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:70:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:71:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:74:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:75:7: WARNING: skipping empty macro: Sy
diff --git a/regress/mdoc/Tn/Makefile b/regress/mdoc/Tn/Makefile
new file mode 100644
index 00000000..1be2a84a
--- /dev/null
+++ b/regress/mdoc/Tn/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.4 2014/07/02 20:18:42 schwarze Exp $
+
+REGRESS_TARGETS = noarg font
+LINT_TARGETS = noarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Tn/font.in b/regress/mdoc/Tn/font.in
new file mode 100644
index 00000000..c854c6de
--- /dev/null
+++ b/regress/mdoc/Tn/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt TN-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Tn-font
+.Nd changing fonts inside the trade name macro
+.Sh DESCRIPTION
+normal text
+.Tn literal\\fIemphasis\\fPback
+trailing text
diff --git a/regress/mdoc/Tn/font.out_ascii b/regress/mdoc/Tn/font.out_ascii
new file mode 100644
index 00000000..60a99b3e
--- /dev/null
+++ b/regress/mdoc/Tn/font.out_ascii
@@ -0,0 +1,9 @@
+TN-FONT(1) General Commands Manual TN-FONT(1)
+
+NNAAMMEE
+ TTnn--ffoonntt - changing fonts inside the trade name macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text literal_e_m_p_h_a_s_i_sback trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Tn/noarg.in b/regress/mdoc/Tn/noarg.in
new file mode 100644
index 00000000..1d18a95b
--- /dev/null
+++ b/regress/mdoc/Tn/noarg.in
@@ -0,0 +1,12 @@
+.Dd January 19, 2011
+.Dt TN-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Tn-noarg
+.Nd trade name macro without argument
+.Sh DESCRIPTION
+with argument
+.Tn IBM
+no argument
+.Tn
+end of test document
diff --git a/regress/mdoc/Tn/noarg.out_ascii b/regress/mdoc/Tn/noarg.out_ascii
new file mode 100644
index 00000000..1333a900
--- /dev/null
+++ b/regress/mdoc/Tn/noarg.out_ascii
@@ -0,0 +1,9 @@
+TN-NOARG(1) General Commands Manual TN-NOARG(1)
+
+NNAAMMEE
+ TTnn--nnooaarrgg - trade name macro without argument
+
+DDEESSCCRRIIPPTTIIOONN
+ with argument IBM no argument end of test document
+
+OpenBSD January 19, 2011 OpenBSD
diff --git a/regress/mdoc/Tn/noarg.out_lint b/regress/mdoc/Tn/noarg.out_lint
new file mode 100644
index 00000000..74e0b6fc
--- /dev/null
+++ b/regress/mdoc/Tn/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:11:2: WARNING: skipping empty macro: Tn
diff --git a/regress/mdoc/Ud/Makefile b/regress/mdoc/Ud/Makefile
new file mode 100644
index 00000000..9bc871ee
--- /dev/null
+++ b/regress/mdoc/Ud/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.1 2017/01/11 17:39:45 schwarze Exp $
+
+REGRESS_TARGETS = arg
+LINT_TARGETS = arg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Ud/arg.in b/regress/mdoc/Ud/arg.in
new file mode 100644
index 00000000..b5245a77
--- /dev/null
+++ b/regress/mdoc/Ud/arg.in
@@ -0,0 +1,19 @@
+.Dd January 11, 2017
+.Dt UD-ARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ud-arg
+.Nd obsolete text production macros
+.Sh DESCRIPTION
+The newest branch is
+.Ud
+The stable branch
+.Bt
+It will be released shortly.
+.Pp
+With arg:
+.Ud bar
+.Bt foo
+.Ud one two
+.Bt one two
+end
diff --git a/regress/mdoc/Ud/arg.out_ascii b/regress/mdoc/Ud/arg.out_ascii
new file mode 100644
index 00000000..ec9f73c7
--- /dev/null
+++ b/regress/mdoc/Ud/arg.out_ascii
@@ -0,0 +1,13 @@
+UD-ARG(1) General Commands Manual UD-ARG(1)
+
+NNAAMMEE
+ UUdd--aarrgg - obsolete text production macros
+
+DDEESSCCRRIIPPTTIIOONN
+ The newest branch is currently under development. The stable branch is
+ currently in beta test. It will be released shortly.
+
+ With arg: currently under development. is currently in beta test.
+ currently under development. is currently in beta test. end
+
+OpenBSD January 11, 2017 OpenBSD
diff --git a/regress/mdoc/Ud/arg.out_lint b/regress/mdoc/Ud/arg.out_lint
new file mode 100644
index 00000000..854845cd
--- /dev/null
+++ b/regress/mdoc/Ud/arg.out_lint
@@ -0,0 +1,4 @@
+mandoc: arg.in:15:2: ERROR: skipping all arguments: Ud bar
+mandoc: arg.in:16:2: ERROR: skipping all arguments: Bt foo
+mandoc: arg.in:17:2: ERROR: skipping all arguments: Ud one
+mandoc: arg.in:18:2: ERROR: skipping all arguments: Bt one
diff --git a/regress/mdoc/Ux/Makefile b/regress/mdoc/Ux/Makefile
new file mode 100644
index 00000000..c945b5e6
--- /dev/null
+++ b/regress/mdoc/Ux/Makefile
@@ -0,0 +1,5 @@
+# $OpenBSD: Makefile,v 1.2 2013/12/22 14:06:29 schwarze Exp $
+
+REGRESS_TARGETS = spacing eos
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Ux/eos.in b/regress/mdoc/Ux/eos.in
new file mode 100644
index 00000000..b0713481
--- /dev/null
+++ b/regress/mdoc/Ux/eos.in
@@ -0,0 +1,22 @@
+.Dd December 22, 2013
+.Dt UX-EOS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ux-eos
+.Nd end of sentence spacing after Unix macros
+.Sh DESCRIPTION
+In the beginning Ken and Dennis wrote
+.Ux .
+The CSRG rewrote it to become
+.Bx .
+When it dissolved, people started
+.Bsx .
+And
+.Nx .
+And
+.Fx .
+And
+.Ox .
+And
+.Dx .
+By now, it's free for everyone.
diff --git a/regress/mdoc/Ux/eos.out_ascii b/regress/mdoc/Ux/eos.out_ascii
new file mode 100644
index 00000000..16e05df9
--- /dev/null
+++ b/regress/mdoc/Ux/eos.out_ascii
@@ -0,0 +1,11 @@
+UX-EOS(1) General Commands Manual UX-EOS(1)
+
+NNAAMMEE
+ UUxx--eeooss - end of sentence spacing after Unix macros
+
+DDEESSCCRRIIPPTTIIOONN
+ In the beginning Ken and Dennis wrote UNIX. The CSRG rewrote it to
+ become BSD. When it dissolved, people started BSD/OS. And NetBSD. And
+ FreeBSD. And OpenBSD. And DragonFly. By now, it's free for everyone.
+
+OpenBSD December 22, 2013 OpenBSD
diff --git a/regress/mdoc/Ux/spacing.in b/regress/mdoc/Ux/spacing.in
new file mode 100644
index 00000000..e78ada3c
--- /dev/null
+++ b/regress/mdoc/Ux/spacing.in
@@ -0,0 +1,20 @@
+.Dd October 20, 2011
+.Dt UX-SPACING 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ux-spacing
+.Nd spacing around the Unix macro
+.Sh DESCRIPTION
+The
+.Ux
+family of operating systems, including
+.Nx ,
+.Ox ,
+.Fx ,
+.Dx
+and
+.Bsx .
+The system is
+.Ud
+The system
+.Bt
diff --git a/regress/mdoc/Ux/spacing.out_ascii b/regress/mdoc/Ux/spacing.out_ascii
new file mode 100644
index 00000000..be5050c3
--- /dev/null
+++ b/regress/mdoc/Ux/spacing.out_ascii
@@ -0,0 +1,11 @@
+UX-SPACING(1) General Commands Manual UX-SPACING(1)
+
+NNAAMMEE
+ UUxx--ssppaacciinngg - spacing around the Unix macro
+
+DDEESSCCRRIIPPTTIIOONN
+ The UNIX family of operating systems, including NetBSD, OpenBSD, FreeBSD,
+ DragonFly and BSD/OS. The system is currently under development. The
+ system is currently in beta test.
+
+OpenBSD October 20, 2011 OpenBSD
diff --git a/regress/mdoc/Va/Makefile b/regress/mdoc/Va/Makefile
new file mode 100644
index 00000000..3d426934
--- /dev/null
+++ b/regress/mdoc/Va/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.3 2014/07/02 20:18:42 schwarze Exp $
+
+REGRESS_TARGETS = basic font noarg
+LINT_TARGETS = noarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Va/basic.in b/regress/mdoc/Va/basic.in
new file mode 100644
index 00000000..5ce4718a
--- /dev/null
+++ b/regress/mdoc/Va/basic.in
@@ -0,0 +1,14 @@
+.Dd July 8, 2012
+.Dt VA-BASIC 1
+.Os OpenBSD
+.Sh NAME
+.Nm Va-basic
+.Nd basic usage of the variable name macro
+.Sh DESCRIPTION
+Both
+.Vt char *
+.Va malloc_options
+and
+.Vt int
+.Va errno
+are typical examples of global variables.
diff --git a/regress/mdoc/Va/basic.out_ascii b/regress/mdoc/Va/basic.out_ascii
new file mode 100644
index 00000000..a599804a
--- /dev/null
+++ b/regress/mdoc/Va/basic.out_ascii
@@ -0,0 +1,10 @@
+VA-BASIC(1) General Commands Manual VA-BASIC(1)
+
+NNAAMMEE
+ VVaa--bbaassiicc - basic usage of the variable name macro
+
+DDEESSCCRRIIPPTTIIOONN
+ Both _c_h_a_r _* _m_a_l_l_o_c___o_p_t_i_o_n_s and _i_n_t _e_r_r_n_o are typical examples of global
+ variables.
+
+OpenBSD July 8, 2012 OpenBSD
diff --git a/regress/mdoc/Va/font.in b/regress/mdoc/Va/font.in
new file mode 100644
index 00000000..654ee281
--- /dev/null
+++ b/regress/mdoc/Va/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt VA-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Va-font
+.Nd changing fonts inside the variable name macro
+.Sh DESCRIPTION
+normal text
+.Va emphasis\\fBbold\\fPback
+trailing text
diff --git a/regress/mdoc/Va/font.out_ascii b/regress/mdoc/Va/font.out_ascii
new file mode 100644
index 00000000..d7e5af1d
--- /dev/null
+++ b/regress/mdoc/Va/font.out_ascii
@@ -0,0 +1,9 @@
+VA-FONT(1) General Commands Manual VA-FONT(1)
+
+NNAAMMEE
+ VVaa--ffoonntt - changing fonts inside the variable name macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text _e_m_p_h_a_s_i_sbboolldd_b_a_c_k trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Va/noarg.in b/regress/mdoc/Va/noarg.in
new file mode 100644
index 00000000..f5fadad6
--- /dev/null
+++ b/regress/mdoc/Va/noarg.in
@@ -0,0 +1,13 @@
+.Dd January 20, 2011
+.Dt VA-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Va-noarg
+.Nd variable name macro without arguments
+.Sh DESCRIPTION
+with arguments
+.Vt int
+.Va errno
+no arguments
+.Va
+end of test document
diff --git a/regress/mdoc/Va/noarg.out_ascii b/regress/mdoc/Va/noarg.out_ascii
new file mode 100644
index 00000000..e7bec8c2
--- /dev/null
+++ b/regress/mdoc/Va/noarg.out_ascii
@@ -0,0 +1,9 @@
+VA-NOARG(1) General Commands Manual VA-NOARG(1)
+
+NNAAMMEE
+ VVaa--nnooaarrgg - variable name macro without arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ with arguments _i_n_t _e_r_r_n_o no arguments end of test document
+
+OpenBSD January 20, 2011 OpenBSD
diff --git a/regress/mdoc/Va/noarg.out_lint b/regress/mdoc/Va/noarg.out_lint
new file mode 100644
index 00000000..7d24e446
--- /dev/null
+++ b/regress/mdoc/Va/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:12:2: WARNING: skipping empty macro: Va
diff --git a/regress/mdoc/Vt/Makefile b/regress/mdoc/Vt/Makefile
new file mode 100644
index 00000000..d1f0a9bd
--- /dev/null
+++ b/regress/mdoc/Vt/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.7 2015/09/14 15:35:47 schwarze Exp $
+
+REGRESS_TARGETS = noarg spacing font child
+LINT_TARGETS = noarg
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Vt/child.in b/regress/mdoc/Vt/child.in
new file mode 100644
index 00000000..a35aa674
--- /dev/null
+++ b/regress/mdoc/Vt/child.in
@@ -0,0 +1,15 @@
+.Dd July 2, 2014
+.Dt VT-CHILD 1
+.Os OpenBSD
+.Sh NAME
+.Nm Vt-child
+.Nd the variable type macro does not want children
+.Sh SYNOPSIS
+.Vt extern Sy int Li errno
+.Sh DESCRIPTION
+various types, for example
+.Vt unsigned Sy int ,
+.Vt long Li int
+and
+.Vt float ,
+.Vt double
diff --git a/regress/mdoc/Vt/child.out_ascii b/regress/mdoc/Vt/child.out_ascii
new file mode 100644
index 00000000..500c0e80
--- /dev/null
+++ b/regress/mdoc/Vt/child.out_ascii
@@ -0,0 +1,12 @@
+VT-CHILD(1) General Commands Manual VT-CHILD(1)
+
+NNAAMMEE
+ VVtt--cchhiilldd - the variable type macro does not want children
+
+SSYYNNOOPPSSIISS
+ _e_x_t_e_r_n iinntt errno
+
+DDEESSCCRRIIPPTTIIOONN
+ various types, for example _u_n_s_i_g_n_e_d iinntt, _l_o_n_g int and _f_l_o_a_t, _d_o_u_b_l_e
+
+OpenBSD July 2, 2014 OpenBSD
diff --git a/regress/mdoc/Vt/font.in b/regress/mdoc/Vt/font.in
new file mode 100644
index 00000000..c90692ef
--- /dev/null
+++ b/regress/mdoc/Vt/font.in
@@ -0,0 +1,10 @@
+.Dd July 9, 2012
+.Dt VT-FONT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Vt-font
+.Nd changing fonts inside the variable type macro
+.Sh DESCRIPTION
+normal text
+.Vt emphasis\\fBbold\\fPback
+trailing text
diff --git a/regress/mdoc/Vt/font.out_ascii b/regress/mdoc/Vt/font.out_ascii
new file mode 100644
index 00000000..bbc703a0
--- /dev/null
+++ b/regress/mdoc/Vt/font.out_ascii
@@ -0,0 +1,9 @@
+VT-FONT(1) General Commands Manual VT-FONT(1)
+
+NNAAMMEE
+ VVtt--ffoonntt - changing fonts inside the variable type macro
+
+DDEESSCCRRIIPPTTIIOONN
+ normal text _e_m_p_h_a_s_i_sbboolldd_b_a_c_k trailing text
+
+OpenBSD July 9, 2012 OpenBSD
diff --git a/regress/mdoc/Vt/noarg.in b/regress/mdoc/Vt/noarg.in
new file mode 100644
index 00000000..929dc05c
--- /dev/null
+++ b/regress/mdoc/Vt/noarg.in
@@ -0,0 +1,12 @@
+.Dd January 20, 2011
+.Dt VT-NOARG 1
+.Os OpenBSD
+.Sh NAME
+.Nm Vt-noarg
+.Nd variable type macro without arguments
+.Sh DESCRIPTION
+with arguments
+.Vt signed int
+no arguments
+.Vt
+end of test document
diff --git a/regress/mdoc/Vt/noarg.out_ascii b/regress/mdoc/Vt/noarg.out_ascii
new file mode 100644
index 00000000..04ca18dd
--- /dev/null
+++ b/regress/mdoc/Vt/noarg.out_ascii
@@ -0,0 +1,9 @@
+VT-NOARG(1) General Commands Manual VT-NOARG(1)
+
+NNAAMMEE
+ VVtt--nnooaarrgg - variable type macro without arguments
+
+DDEESSCCRRIIPPTTIIOONN
+ with arguments _s_i_g_n_e_d _i_n_t no arguments end of test document
+
+OpenBSD January 20, 2011 OpenBSD
diff --git a/regress/mdoc/Vt/noarg.out_lint b/regress/mdoc/Vt/noarg.out_lint
new file mode 100644
index 00000000..4834a82a
--- /dev/null
+++ b/regress/mdoc/Vt/noarg.out_lint
@@ -0,0 +1 @@
+mandoc: noarg.in:11:2: WARNING: skipping empty macro: Vt
diff --git a/regress/mdoc/Vt/spacing.in b/regress/mdoc/Vt/spacing.in
new file mode 100644
index 00000000..afb4c70e
--- /dev/null
+++ b/regress/mdoc/Vt/spacing.in
@@ -0,0 +1,16 @@
+.Dd July 8, 2012
+.Dt VT-SPACING 1
+.Os OpenBSD
+.Sh NAME
+.Nm Vt-spacing
+.Nd spacing around the variable type macro
+.Sh SYNOPSIS
+.Vt extern char **environ
+.Vt extern int errno
+.Sh DESCRIPTION
+various types, for example
+.Vt unsigned int ,
+.Vt long int
+and
+.Vt float ,
+.Vt double
diff --git a/regress/mdoc/Vt/spacing.out_ascii b/regress/mdoc/Vt/spacing.out_ascii
new file mode 100644
index 00000000..bb5e8441
--- /dev/null
+++ b/regress/mdoc/Vt/spacing.out_ascii
@@ -0,0 +1,13 @@
+VT-SPACING(1) General Commands Manual VT-SPACING(1)
+
+NNAAMMEE
+ VVtt--ssppaacciinngg - spacing around the variable type macro
+
+SSYYNNOOPPSSIISS
+ _e_x_t_e_r_n _c_h_a_r _*_*_e_n_v_i_r_o_n
+ _e_x_t_e_r_n _i_n_t _e_r_r_n_o
+
+DDEESSCCRRIIPPTTIIOONN
+ various types, for example _u_n_s_i_g_n_e_d _i_n_t, _l_o_n_g _i_n_t and _f_l_o_a_t, _d_o_u_b_l_e
+
+OpenBSD July 8, 2012 OpenBSD
diff --git a/regress/mdoc/Xr/Makefile b/regress/mdoc/Xr/Makefile
new file mode 100644
index 00000000..98887f84
--- /dev/null
+++ b/regress/mdoc/Xr/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.4 2015/02/06 01:07:07 schwarze Exp $
+
+REGRESS_TARGETS = args
+LINT_TARGETS = args
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/Xr/args.in b/regress/mdoc/Xr/args.in
new file mode 100644
index 00000000..97e68202
--- /dev/null
+++ b/regress/mdoc/Xr/args.in
@@ -0,0 +1,27 @@
+.Dd December 3, 2011
+.Dt XR-ARGS 1
+.Os OpenBSD
+.Sh NAME
+.Nm Xr-args
+.Nd additional arguments to cross references
+.Sh DESCRIPTION
+One single
+.Xr echo 1
+is fine, and so is an
+.Xr echo 1 followed by something else.
+.Pp
+But listen for multiple
+.Xr echo 1 Ns s .
+.Pp
+A call, an
+.Xr echo 1 , and
+another
+.Xr echo 1 .
+.Pp
+Finally, half an
+.Xr echo ,
+no echo
+.Xr ,
+and no
+.Xr
+echo at all.
diff --git a/regress/mdoc/Xr/args.out_ascii b/regress/mdoc/Xr/args.out_ascii
new file mode 100644
index 00000000..81fe8784
--- /dev/null
+++ b/regress/mdoc/Xr/args.out_ascii
@@ -0,0 +1,16 @@
+XR-ARGS(1) General Commands Manual XR-ARGS(1)
+
+NNAAMMEE
+ XXrr--aarrggss - additional arguments to cross references
+
+DDEESSCCRRIIPPTTIIOONN
+ One single echo(1) is fine, and so is an echo(1) followed by something
+ else.
+
+ But listen for multiple echo(1)s.
+
+ A call, an echo(1), and another echo(1).
+
+ Finally, half an echo, no echo and no echo at all.
+
+OpenBSD December 3, 2011 OpenBSD
diff --git a/regress/mdoc/Xr/args.out_lint b/regress/mdoc/Xr/args.out_lint
new file mode 100644
index 00000000..8ade7488
--- /dev/null
+++ b/regress/mdoc/Xr/args.out_lint
@@ -0,0 +1,3 @@
+mandoc: args.in:24:2: WARNING: skipping empty macro: Xr
+mandoc: args.in:26:2: WARNING: skipping empty macro: Xr
+mandoc: args.in:22:2: WARNING: missing section argument: Xr echo
diff --git a/regress/mdoc/blank/Makefile b/regress/mdoc/blank/Makefile
new file mode 100644
index 00000000..e51424c9
--- /dev/null
+++ b/regress/mdoc/blank/Makefile
@@ -0,0 +1,8 @@
+# $OpenBSD: Makefile,v 1.5 2014/07/06 19:08:57 schwarze Exp $
+
+REGRESS_TARGETS = line comment list
+LINT_TARGETS = line comment list
+
+SKIP_TMAN = list
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/blank/comment.in b/regress/mdoc/blank/comment.in
new file mode 100644
index 00000000..8b7b811f
--- /dev/null
+++ b/regress/mdoc/blank/comment.in
@@ -0,0 +1,15 @@
+.Dd February 17, 2010
+.Dt BLANK-COMMENT 1
+.Os OpenBSD
+.Sh NAME
+.Nm blank-comment
+.Nd normal and bogus comments
+.Sh DESCRIPTION
+normal comment
+.\" normal
+bogus comment
+\."
+end of text
+.Pp
+text \" comment
+text
diff --git a/regress/mdoc/blank/comment.out_ascii b/regress/mdoc/blank/comment.out_ascii
new file mode 100644
index 00000000..26fde80d
--- /dev/null
+++ b/regress/mdoc/blank/comment.out_ascii
@@ -0,0 +1,11 @@
+BLANK-COMMENT(1) General Commands Manual BLANK-COMMENT(1)
+
+NNAAMMEE
+ bbllaannkk--ccoommmmeenntt - normal and bogus comments
+
+DDEESSCCRRIIPPTTIIOONN
+ normal comment bogus comment end of text
+
+ text text
+
+OpenBSD February 17, 2010 OpenBSD
diff --git a/regress/mdoc/blank/comment.out_lint b/regress/mdoc/blank/comment.out_lint
new file mode 100644
index 00000000..f5599f67
--- /dev/null
+++ b/regress/mdoc/blank/comment.out_lint
@@ -0,0 +1 @@
+mandoc: comment.in:11:3: WARNING: bad comment style
diff --git a/regress/mdoc/blank/line.in b/regress/mdoc/blank/line.in
new file mode 100644
index 00000000..f1946c13
--- /dev/null
+++ b/regress/mdoc/blank/line.in
@@ -0,0 +1,90 @@
+.Dd February 17, 2010
+.Dt BLANK-LINE 1
+.Os OpenBSD
+.Sh NAME
+.Nm blank-line
+.Nd handling of blank line
+.Sh DESCRIPTION
+Single br:
+.br
+Single Pp:
+.Pp
+Single sp:
+.sp
+Single blank:
+
+Double br:
+.br
+.br
+br Pp:
+.br
+.Pp
+Pp br:
+.Pp
+.br
+Double Pp:
+.Pp
+.Pp
+br sp:
+.br
+.sp
+sp br:
+.sp
+.br
+Pp sp:
+.Pp
+.sp
+Pp sp 2v:
+.Pp
+.sp 2v
+sp Pp:
+.sp
+.Pp
+Double sp:
+.sp
+.sp
+br blank:
+.br
+
+blank br:
+
+.br
+Pp blank:
+.Pp
+
+blank Pp:
+
+.Pp
+sp blank:
+.sp
+
+blank sp:
+
+.sp
+Double blank:
+
+
+Bd ragged sp 2v:
+.Bd -ragged -offset 6n
+.sp 2v
+Ed sp 2v:
+.Ed
+.sp 2v
+Bl tag sp 2v:
+.Bl -tag -width 6n
+.It tag
+.sp 2v
+El sp 2v
+.El
+Sh sp 2v:
+.Sh CUSTOM
+.sp 2v
+Pp Sh Pp:
+.Pp
+.Sh CUSTOM TWO
+.Pp
+Ss Pp:
+.Ss Subsection
+.Pp
+End.
+.Pp
diff --git a/regress/mdoc/blank/line.out_ascii b/regress/mdoc/blank/line.out_ascii
new file mode 100644
index 00000000..7fde5795
--- /dev/null
+++ b/regress/mdoc/blank/line.out_ascii
@@ -0,0 +1,77 @@
+BLANK-LINE(1) General Commands Manual BLANK-LINE(1)
+
+NNAAMMEE
+ bbllaannkk--lliinnee - handling of blank line
+
+DDEESSCCRRIIPPTTIIOONN
+ Single br:
+ Single Pp:
+
+ Single sp:
+
+ Single blank:
+
+ Double br:
+ br Pp:
+
+ Pp br:
+
+ Double Pp:
+
+ br sp:
+
+ sp br:
+
+ Pp sp:
+
+ Pp sp 2v:
+
+ sp Pp:
+
+
+ Double sp:
+
+
+ br blank:
+
+ blank br:
+
+ Pp blank:
+
+ blank Pp:
+
+
+ sp blank:
+
+
+ blank sp:
+
+
+ Double blank:
+
+
+ Bd ragged sp 2v:
+
+
+
+ Ed sp 2v:
+
+
+ Bl tag sp 2v:
+
+ tag
+
+
+ El sp 2v
+ Sh sp 2v:
+
+CCUUSSTTOOMM
+ Pp Sh Pp:
+
+CCUUSSTTOOMM TTWWOO
+ Ss Pp:
+
+ SSuubbsseeccttiioonn
+ End.
+
+OpenBSD February 17, 2010 OpenBSD
diff --git a/regress/mdoc/blank/line.out_lint b/regress/mdoc/blank/line.out_lint
new file mode 100644
index 00000000..6e439442
--- /dev/null
+++ b/regress/mdoc/blank/line.out_lint
@@ -0,0 +1,23 @@
+mandoc: line.in:15:1: WARNING: blank line in fill mode, using .sp
+mandoc: line.in:48:1: WARNING: blank line in fill mode, using .sp
+mandoc: line.in:50:1: WARNING: blank line in fill mode, using .sp
+mandoc: line.in:54:1: WARNING: blank line in fill mode, using .sp
+mandoc: line.in:56:1: WARNING: blank line in fill mode, using .sp
+mandoc: line.in:60:1: WARNING: blank line in fill mode, using .sp
+mandoc: line.in:62:1: WARNING: blank line in fill mode, using .sp
+mandoc: line.in:65:1: WARNING: blank line in fill mode, using .sp
+mandoc: line.in:66:1: WARNING: blank line in fill mode, using .sp
+mandoc: line.in:18:2: WARNING: skipping paragraph macro: br after br
+mandoc: line.in:20:2: WARNING: skipping paragraph macro: br before Pp
+mandoc: line.in:24:2: WARNING: skipping paragraph macro: br after Pp
+mandoc: line.in:26:2: WARNING: skipping paragraph macro: Pp before Pp
+mandoc: line.in:33:2: WARNING: skipping paragraph macro: br after sp
+mandoc: line.in:36:2: WARNING: skipping paragraph macro: sp after Pp
+mandoc: line.in:39:2: WARNING: skipping paragraph macro: sp after Pp
+mandoc: line.in:51:2: WARNING: skipping paragraph macro: br after sp
+mandoc: line.in:54:1: WARNING: skipping paragraph macro: sp after Pp
+mandoc: line.in:81:2: WARNING: skipping paragraph macro: sp after Sh
+mandoc: line.in:83:2: WARNING: skipping paragraph macro: Pp at the end of Sh
+mandoc: line.in:85:2: WARNING: skipping paragraph macro: Pp after Sh
+mandoc: line.in:88:2: WARNING: skipping paragraph macro: Pp after Ss
+mandoc: line.in:90:2: WARNING: skipping paragraph macro: Pp at the end of Ss
diff --git a/regress/mdoc/blank/list.in b/regress/mdoc/blank/list.in
new file mode 100644
index 00000000..067e3dcf
--- /dev/null
+++ b/regress/mdoc/blank/list.in
@@ -0,0 +1,66 @@
+.Dd July 17, 2012
+.Dt BLANK-LIST 1
+.Os OpenBSD
+.Sh NAME
+.Nm blank-list
+.Nd handling of blank lines in lists
+.Sh DESCRIPTION
+normal list:
+.Bl -item -offset indent
+.It
+first item
+.It
+second item
+.El
+list with paragraphs:
+.Bl -item -offset indent
+.It
+first item
+.Pp
+.It
+second item
+.Pp
+.El
+list with final paragraph:
+.Bl -item -offset indent
+.It
+item
+.El
+.Pp
+list with double paragraph:
+.Bl -item -offset indent
+.It
+item
+.Pp
+.El
+.Pp
+normal compact list:
+.Bl -item -compact -offset indent
+.It
+first item
+.It
+second item
+.El
+compact list with paragraphs:
+.Bl -item -compact -offset indent
+.It
+first item
+.Pp
+.It
+second item
+.Pp
+.El
+compact list with final paragraph:
+.Bl -item -compact -offset indent
+.It
+item
+.El
+.Pp
+compact list with double paragraph:
+.Bl -item -compact -offset indent
+.It
+item
+.Pp
+.El
+.Pp
+End.
diff --git a/regress/mdoc/blank/list.out_ascii b/regress/mdoc/blank/list.out_ascii
new file mode 100644
index 00000000..5f0eaa98
--- /dev/null
+++ b/regress/mdoc/blank/list.out_ascii
@@ -0,0 +1,42 @@
+BLANK-LIST(1) General Commands Manual BLANK-LIST(1)
+
+NNAAMMEE
+ bbllaannkk--lliisstt - handling of blank lines in lists
+
+DDEESSCCRRIIPPTTIIOONN
+ normal list:
+
+ first item
+
+ second item
+ list with paragraphs:
+
+ first item
+
+ second item
+
+ list with final paragraph:
+
+ item
+
+ list with double paragraph:
+
+ item
+
+ normal compact list:
+ first item
+ second item
+ compact list with paragraphs:
+ first item
+
+ second item
+
+ compact list with final paragraph:
+ item
+
+ compact list with double paragraph:
+ item
+
+ End.
+
+OpenBSD July 17, 2012 OpenBSD
diff --git a/regress/mdoc/blank/list.out_lint b/regress/mdoc/blank/list.out_lint
new file mode 100644
index 00000000..a90d91a4
--- /dev/null
+++ b/regress/mdoc/blank/list.out_lint
@@ -0,0 +1,7 @@
+mandoc: list.in:19:2: WARNING: skipping paragraph macro: Pp before It
+mandoc: list.in:22:2: WARNING: moving paragraph macro out of list: Pp
+mandoc: list.in:34:2: WARNING: moving paragraph macro out of list: Pp
+mandoc: list.in:34:2: WARNING: skipping paragraph macro: Pp before Pp
+mandoc: list.in:51:2: WARNING: moving paragraph macro out of list: Pp
+mandoc: list.in:63:2: WARNING: moving paragraph macro out of list: Pp
+mandoc: list.in:63:2: WARNING: skipping paragraph macro: Pp before Pp
diff --git a/regress/mdoc/break/Makefile b/regress/mdoc/break/Makefile
new file mode 100644
index 00000000..b4c3b219
--- /dev/null
+++ b/regress/mdoc/break/Makefile
@@ -0,0 +1,15 @@
+# $OpenBSD: Makefile,v 1.4 2016/08/20 17:58:09 schwarze Exp $
+
+REGRESS_TARGETS = brokenbreaker twice tail two notopen
+LINT_TARGETS = brokenbreaker twice tail two notopen
+
+# It's hard to keep stuff together in next-line scope.
+
+SKIP_TMAN = tail
+
+# groff-1.22.3 defect:
+# - non-matching enclosure end macro prints a closing delimiter
+
+SKIP_GROFF = brokenbreaker notopen
+
+.include <bsd.regress.mk>
diff --git a/regress/mdoc/break/brokenbreaker.in b/regress/mdoc/break/brokenbreaker.in
new file mode 100644
index 00000000..b5a23f40
--- /dev/null
+++ b/regress/mdoc/break/brokenbreaker.in
@@ -0,0 +1,14 @@
+.Dd December 23, 2014
+.Dt BREAK-BROKENBREAKER 1
+.Os OpenBSD
+.Sh NAME
+.Nm break-brokenbreaker
+.Nd a broken block breaking another block
+.Sh DESCRIPTION
+.Po po
+.Ao ao pc
+.Pc
+.Bo bo pc
+.Pc ac
+.Ac bc
+.Bc
diff --git a/regress/mdoc/break/brokenbreaker.out_ascii b/regress/mdoc/break/brokenbreaker.out_ascii
new file mode 100644
index 00000000..1a8cd75a
--- /dev/null
+++ b/regress/mdoc/break/brokenbreaker.out_ascii
@@ -0,0 +1,9 @@
+BREAK-BROKENBREAKER(1) General Commands Manual BREAK-BROKENBREAKER(1)
+
+NNAAMMEE
+ bbrreeaakk--bbrrookkeennbbrreeaakkeerr - a broken block breaking another block
+
+DDEESSCCRRIIPPTTIIOONN
+ (po <ao pc) [bo pc ac> bc]
+
+OpenBSD December 23, 2014 OpenBSD
diff --git a/regress/mdoc/break/brokenbreaker.out_lint b/regress/mdoc/break/brokenbreaker.out_lint
new file mode 100644
index 00000000..16e7a2ba
--- /dev/null
+++ b/regress/mdoc/break/brokenbreaker.out_lint
@@ -0,0 +1,3 @@
+mandoc: brokenbreaker.in:10:2: WARNING: blocks badly nested: Po breaks Ao
+mandoc: brokenbreaker.in:12:2: ERROR: skipping end of block that is not open: Pc
+mandoc: brokenbreaker.in:13:2: WARNING: blocks badly nested: Ao breaks Bo
diff --git a/regress/mdoc/break/notopen.in b/regress/mdoc/break/notopen.in
new file mode 100644
index 00000000..20a9bf12
--- /dev/null
+++ b/regress/mdoc/break/notopen.in
@@ -0,0 +1,12 @@
+.Dd August 20, 2016
+.Dt BREAK-NOTOPEN 1
+.Os OpenBSD
+.Sh NAME
+.Nm break-notopen
+.Nd mismatching end macro inside two open blocks
+.Sh DESCRIPTION
+.Ao ao
+.Bo bo pc
+.Pc bc
+.Bc ac
+.Ac tail
diff --git a/regress/mdoc/break/notopen.out_ascii b/regress/mdoc/break/notopen.out_ascii
new file mode 100644
index 00000000..db71cc41
--- /dev/null
+++ b/regress/mdoc/break/notopen.out_ascii
@@ -0,0 +1,9 @@
+BREAK-NOTOPEN(1) General Commands Manual BREAK-NOTOPEN(1)
+
+NNAAMMEE
+ bbrreeaakk--nnoottooppeenn - mismatching end macro inside two open blocks
+
+DDEESSCCRRIIPPTTIIOONN
+ <ao [bo pc bc] ac> tail
+
+OpenBSD August 20, 2016 OpenBSD
diff --git a/regress/mdoc/break/notopen.out_lint b/regress/mdoc/break/notopen.out_lint
new file mode 100644
index 00000000..e70b2f6f
--- /dev/null
+++ b/regress/mdoc/break/notopen.out_lint
@@ -0,0 +1 @@
+mandoc: notopen.in:10:2: ERROR: skipping end of block that is not open: Pc
diff --git a/regress/mdoc/break/tail.in b/regress/mdoc/break/tail.in
new file mode 100644
index 00000000..ff250591
--- /dev/null
+++ b/regress/mdoc/break/tail.in
@@ -0,0 +1,37 @@
+.Dd April 5, 2015
+.Dt BREAK-TAIL 1
+.Os OpenBSD
+.Sh NAME
+.Nm break-tail
+.Nd tail arguments on broken blocks
+.Sh DESCRIPTION
+Broken by a partial explicit block:
+.Ao ao
+.Bo bo ac
+.Ac bc
+.Bc tail
+.Ao ao
+.Bo bo ac
+.Ac bc
+.Bc Po po pc
+.Pc tail
+.Pp
+Broken by a partial implicit block:
+.Aq aq Bo bo eol
+.Bc tail
+.Aq aq Bo bo eol
+.Bc Po po pc
+.Pc tail
+.Pp
+Broken by a full implicit block:
+.Bl -tag -width Ds -offset indent
+.It it Ao ao ac
+.Ac tail
+list body
+.El
+.Bl -tag -width Ds -offset indent
+.It it Ao ao ac
+.Ac Po po pc
+.Pc tail
+list body
+.El
diff --git a/regress/mdoc/break/tail.out_ascii b/regress/mdoc/break/tail.out_ascii
new file mode 100644
index 00000000..62675d29
--- /dev/null
+++ b/regress/mdoc/break/tail.out_ascii
@@ -0,0 +1,21 @@
+BREAK-TAIL(1) General Commands Manual BREAK-TAIL(1)
+
+NNAAMMEE
+ bbrreeaakk--ttaaiill - tail arguments on broken blocks
+
+DDEESSCCRRIIPPTTIIOONN
+ Broken by a partial explicit block: <ao [bo ac> bc] tail <ao [bo ac> bc]
+ (po pc) tail
+
+ Broken by a partial implicit block: <aq [bo eol>] tail <aq [bo eol>] (po
+ pc) tail
+
+ Broken by a full implicit block:
+
+ it <ao ac> tail
+ list body
+
+ it <ao ac> (po pc) tail
+ list body
+
+OpenBSD April 5, 2015 OpenBSD
diff --git a/regress/mdoc/break/tail.out_lint b/regress/mdoc/break/tail.out_lint
new file mode 100644
index 00000000..d6f1b900
--- /dev/null
+++ b/regress/mdoc/break/tail.out_lint
@@ -0,0 +1,4 @@
+mandoc: tail.in:11:2: WARNING: blocks badly nested: Ao breaks Bo
+mandoc: tail.in:15:2: WARNING: blocks badly nested: Ao breaks Bo
+mandoc: tail.in:20:2: WARNING: blocks badly nested: Aq breaks Bo
+mandoc: tail.in:22:2: WARNING: blocks badly nested: Aq breaks Bo
diff --git a/regress/mdoc/break/twice.in b/regress/mdoc/break/twice.in
new file mode 100644
index 00000000..8853aec1
--- /dev/null
+++ b/regress/mdoc/break/twice.in
@@ -0,0 +1,32 @@
+.Dd February 12, 2015
+.Dt BREAK-TWICE 1
+.Os OpenBSD
+.Sh NAME
+.Nm break-twice
+.Nd breaking the same block twice
+.Sh DESCRIPTION
+Standard case, explicit:
+.Bo bo
+.Bro bro
+.Ao ao brc
+.Brc bc
+.Bc ac
+.Ac
+.Pp
+Standard case, implicit:
+.Bo bo
+.Bro bro
+.Aq aq brc Brc bc Bc eol
+.Pp
+Two of the same kind, explicit:
+.Bo bo
+.Bo bo
+.Ao ao bc
+.Bc bc
+.Bc ac
+.Ac
+.Pp
+Two of the same kind, implicit:
+.Bo bo
+.Bo bo
+.Aq aq bc Bc bc Bc eol
diff --git a/regress/mdoc/break/twice.out_ascii b/regress/mdoc/break/twice.out_ascii
new file mode 100644
index 00000000..c6d0149d
--- /dev/null
+++ b/regress/mdoc/break/twice.out_ascii
@@ -0,0 +1,15 @@
+BREAK-TWICE(1) General Commands Manual BREAK-TWICE(1)
+
+NNAAMMEE
+ bbrreeaakk--ttwwiiccee - breaking the same block twice
+
+DDEESSCCRRIIPPTTIIOONN
+ Standard case, explicit: [bo {bro <ao brc} bc] ac>
+
+ Standard case, implicit: [bo {bro <aq brc} bc] eol>
+
+ Two of the same kind, explicit: [bo [bo <ao bc] bc] ac>
+
+ Two of the same kind, implicit: [bo [bo <aq bc] bc] eol>
+
+OpenBSD February 12, 2015 OpenBSD
diff --git a/regress/mdoc/break/twice.out_lint b/regress/mdoc/break/twice.out_lint
new file mode 100644
index 00000000..6ac976c0
--- /dev/null
+++ b/regress/mdoc/break/twice.out_lint
@@ -0,0 +1,8 @@
+mandoc: twice.in:12:2: WARNING: blocks badly nested: Bro breaks Ao
+mandoc: twice.in:13:2: WARNING: blocks badly nested: Bo breaks Ao
+mandoc: twice.in:19:12: WARNING: blocks badly nested: Bro breaks Aq
+mandoc: twice.in:19:19: WARNING: blocks badly nested: Bo breaks Aq
+mandoc: twice.in:25:2: WARNING: blocks badly nested: Bo breaks Ao
+mandoc: twice.in:26:2: WARNING: blocks badly nested: Bo breaks Ao
+mandoc: twice.in:32:11: WARNING: blocks badly nested: Bo breaks Aq
+mandoc: twice.in:32:17: WARNING: blocks badly nested: Bo breaks Aq
diff --git a/regress/mdoc/break/two.in b/regress/mdoc/break/two.in
new file mode 100644
index 00000000..d3071699
--- /dev/null
+++ b/regress/mdoc/break/two.in
@@ -0,0 +1,42 @@
+.Dd February 12, 2015
+.Dt BREAK-TWO 1
+.Os OpenBSD
+.Sh NAME
+.Nm break-two
+.Nd the same block breaking two other blocks
+.Sh DESCRIPTION
+Standard case, explicit:
+.Ao ao
+.Bo bo
+.Bro bro ac
+.Ac brc
+.Brc bc
+.Bc
+.Pp
+Standard case, implicit:
+.Aq aq Bo bo Bro bro eol
+.Brc bc Bc
+.Pp
+Reverse closing, explicit:
+.Ao ao
+.Bo bo
+.Bro bro ac
+.Ac bc
+.Bc brc
+.Brc
+.Pp
+Reverse closing, implicit:
+.Aq aq Bo bo Bro bro eol
+.Bc brc Brc
+.Pp
+Two of the same kind, explicit:
+.Ao ao
+.Bo bo
+.Bo bo ac
+.Ac bc
+.Bc bc
+.Bc
+.Pp
+Two of the same kind, implicit:
+.Aq aq Bo bo Bo bo eol
+.Bc bc Bc
diff --git a/regress/mdoc/break/two.out_ascii b/regress/mdoc/break/two.out_ascii
new file mode 100644
index 00000000..e4db38c4
--- /dev/null
+++ b/regress/mdoc/break/two.out_ascii
@@ -0,0 +1,19 @@
+BREAK-TWO(1) General Commands Manual BREAK-TWO(1)
+
+NNAAMMEE
+ bbrreeaakk--ttwwoo - the same block breaking two other blocks
+
+DDEESSCCRRIIPPTTIIOONN
+ Standard case, explicit: <ao [bo {bro ac> brc} bc]
+
+ Standard case, implicit: <aq [bo {bro eol>} bc]
+
+ Reverse closing, explicit: <ao [bo {bro ac> bc] brc}
+
+ Reverse closing, implicit: <aq [bo {bro eol>] brc}
+
+ Two of the same kind, explicit: <ao [bo [bo ac> bc] bc]
+
+ Two of the same kind, implicit: <aq [bo [bo eol>] bc]
+
+OpenBSD February 12, 2015 OpenBSD
diff --git a/regress/mdoc/break/two.out_lint b/regress/mdoc/break/two.out_lint
new file mode 100644
index 00000000..79346fe3
--- /dev/null
+++ b/regress/mdoc/break/two.out_lint
@@ -0,0 +1,8 @@
+mandoc: two.in:12:2: WARNING: blocks badly nested: Ao breaks Bro
+mandoc: two.in:17:2: WARNING: blocks badly nested: Aq breaks Bro
+mandoc: two.in:24:2: WARNING: blocks badly nested: Ao breaks Bro
+mandoc: two.in:25:2: WARNING: blocks badly nested: Bo breaks Bro
+mandoc: two.in:29:2: WARNING: blocks badly nested: Aq breaks Bro
+mandoc: two.in:30:2: WARNING: blocks badly nested: Bo breaks Bro
+mandoc: two.in:36:2: WARNING: blocks badly nested: Ao breaks Bo
+mandoc: two.in:41:2: WARNING: blocks badly nested: Aq breaks Bo