]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - man/curs_add_wch.3x
ncurses 6.5 - patch 20240511
[ncurses.git] / man / curs_add_wch.3x
index f0f5c079f12b49fa6064bca0ece0fce0d65b512b..502425afd354e60214291f8e7676580a8c25235f 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
 '\" t
 .\"***************************************************************************
-.\" Copyright 2019-2021,2023 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2001-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" Copyright 2001-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_add_wch.3x,v 1.45 2023/09/30 21:38:11 tom Exp $
-.TH curs_add_wch 3X 2023-09-30 "ncurses 6.4" "Library calls"
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_add_wch.3x,v 1.63 2024/05/11 21:31:45 tom Exp $
+.TH curs_add_wch 3X 2024-05-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 \fB\%mvwadd_wch\fP,
 \fB\%echo_wchar\fP,
 \fB\%wecho_wchar\fP \-
 \fB\%mvwadd_wch\fP,
 \fB\%echo_wchar\fP,
 \fB\%wecho_wchar\fP \-
-add a \fIcurses\fR complex character to a window and advance the cursor
+add a \fIcurses\fR complex character to a window, possibly advancing the cursor
 .SH SYNOPSIS
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-.B "int add_wch( const cchar_t *\fIwch\fB );"
-.br
-.B "int wadd_wch( WINDOW *\fIwin\fP, const cchar_t *\fIwch\fB );"
-.br
-.B "int mvadd_wch( int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fB );"
-.br
-.B "int mvwadd_wch( WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fB );"
-.sp
-.B "int echo_wchar( const cchar_t *\fIwch\fB );"
-.br
-.B "int wecho_wchar( WINDOW *\fIwin\fP, const cchar_t *\fIwch\fB );"
+.nf
+\fB#include <curses.h>
+.PP
+\fBint add_wch(const cchar_t *\fIwch\fP);
+\fBint wadd_wch(WINDOW *\fIwin\fP, const cchar_t *\fIwch\fP);
+\fBint mvadd_wch(int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fP);
+\fBint mvwadd_wch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fP);
+.PP
+\fBint echo_wchar(const cchar_t *\fIwch\fP);
+\fBint wecho_wchar(WINDOW *\fIwin\fP, const cchar_t *\fIwch\fP);
+.fi
 .SH DESCRIPTION
 .SH DESCRIPTION
-.SS add_wch
-The
-\fBadd_wch\fP,
-\fBwadd_wch\fP,
-\fBmvadd_wch\fP, and
-\fBmvwadd_wch\fP
-functions put the complex character \fIwch\fP into the given
-window at its current position,
-which is then advanced.
-These functions perform
-wrapping and special-character processing as follows:
+.SS wadd_wch
+.B \%wadd_wch
+writes the complex character
+.I wch
+to the window
+.IR win ","
+then may advance the cursor position,
+analogously to the standard C library's \fI\%putwchar\fP(3).
+\fB\%ncurses\fP(3X) describes the variants of this function.
+.PP
+Much behavior depends on whether the wide characters in
+.I wch
+are spacing or non-spacing;
+see subsection \*(``Complex Characters\*('' below.
 .bP
 .bP
-If \fIwch\fP refers to a spacing character,
-then any previous character at that location is removed.
-A new character specified by \fIwch\fP is
-placed at that location with rendition specified by \fIwch\fP.
-The cursor then advances after this spacing character,
-to prepare for writing the next character on the screen.
-.IP
-The newly added spacing character is the base of the active complex character.
-Subsequent non-spacing characters can be combined with this base
-until another spacing character is written to the screen,
-or the cursor is moved, e.g., using \fBwmove\fP.
+If
+.I wch
+contains a spacing character,
+then any character at the cursor is first removed.
+The complex character
+.IR wch ","
+with its attributes and color pair identifier,
+becomes the
+.I base
+of the
+.IR "active complex character" "."
 .bP
 .bP
-If \fIwch\fP refers to a non-spacing character,
-it is appended to the active complex character,
-retaining the previous characters at that location.
-The rendition specified by \fIwch\fP is ignored.
-.IP
-The cursor is not advanced after adding a non-spacing character.
-Subsequent calls to add non-spacing characters will update the same position.
+If
+.I wch
+contains only non-spacing characters,
+.\" XXX: see wadd_wch_literal (the beginning of the array may be nonspacing)
+they are combined with the active complex character.
+.I curses
+ignores its attributes and color pair identifier,
+and does not advance the cursor.
+.PP
+Further non-spacing characters added with
+.B \%wadd_wch
+are not written at the new cursor position but combine with the active
+complex character until another spacing character is written to the
+window or the cursor is moved.
+.PP
+If advancement occurs at the right margin,
+.bP
+the cursor automatically wraps to the beginning of the next line,
+then,
 .bP
 .bP
-If the character part of \fIwch\fP is
-a tab, newline, backspace or other control character,
-the window is updated and the cursor moves as if \fBaddch\fP were called.
-.SS echo_wchar
-The \fBecho_wchar\fP
-function is functionally equivalent to a call to
-\fBadd_wch\fP
-followed by a call to
-\fBrefresh\fP(3X).
-Similarly, the
-\fBwecho_wchar\fP
-is functionally equivalent to a call to
-\fBwadd_wch\fP
-followed by a call to
-\fBwrefresh\fP.
-The knowledge
-that only a single character is being output is taken into consideration and,
-for non-control characters, a considerable performance gain might be seen
-by using the *\fBecho\fP* functions instead of their equivalents.
-.SS Line Graphics
-Like \fBaddch\fP(3X),
-\fBaddch_wch\fP accepts symbols which make it simple to draw lines and other
-frequently used special characters.
-These symbols correspond to the same VT100 line-drawing set as
-\fBaddch\fP(3X).
+if it was at the bottom of the scrolling region,
+and if \fB\%scrollok\fP(3X) is enabled for
+.IR win ,
+the scrolling region scrolls up one line.
+.PP
+If
+.I wch
+is a
+backspace,
+carriage return,
+line feed,
+or
+tab,
+the cursor moves appropriately within the window.
+.bP
+Backspace moves the cursor one character left;
+at the left margin of a window,
+it does nothing.
+.bP
+Carriage return moves the cursor to the left margin on the current line
+of the window.
+.bP
+Line feed does a \fB\%clrtoeol\fP(3X),
+then advances as if from the right margin.
+.bP
+Tab advances the cursor to the next tab stop
+(possibly on the next line);
+these are placed at every eighth column by default.
+Alter the tab interval with the
+.B \%TABSIZE
+extension;
+see \fB\%curs_variables\fP(3X).
+.PP
+If
+.I wch
+is any other nonprintable character,
+it is drawn in printable form using the same convention as
+\fB\%wunctrl\fP(3X).
+.PP
+Calling \fB\%win_wch\fP(3X) on the location of a nonprintable character
+does not return the character itself,
+but its \fB\%wunctrl\fP(3X) representation.
+.SS wecho_wchar
+.B \%echo_wchar
+and
+.B \%wecho_wchar
+are equivalent to calling
+.RB \%( w ) add_wch
+followed by
+.RB \%( w ) refresh .
+.I curses
+interprets these functions as a hint that only a single (complex)
+character is being output;
+for non-control characters,
+a considerable performance gain may be enjoyed by employing them.
+.\" TODO: Combine the following with the "Line Drawing" subsection of
+.\" terminfo(5) and replace this with a cross reference there.
+.SS "Forms-Drawing Characters"
+.I curses
+defines macros starting with
+.B \%WACS_
+that can be used with
+.B \%wadd_wch
+to write line-drawing and other special characters to the screen.
+.I \%ncurses
+terms these
+.I "forms-drawing characters."
+The ACS default listed below is used if the
+.B \%acs_chars
+.RB ( \%acsc )
+.I \%term\%info
+capability does not define a terminal-specific replacement for it,
+or if the terminal and locale configuration requires Unicode to access
+these characters but the library is unable to use Unicode.
+The \*(``acsc char\*('' column corresponds to how the characters are
+specified in the
+.B \%acs_chars
+.RB ( \%acsc )
+string capability,
+and the characters in it may appear on the screen if the terminal type's
+database entry incorrectly advertises ACS support.
+The name \*(``ACS\*('' originates in the Alternate Character Set feature
+of the DEC VT100 terminal.
 .PP
 .TS
 .PP
 .TS
-l l l l l
-l l l l l
-_ _ _ _ _
-lw(1.5i) lw5 lw5 lw5 lw20.
-\fBACS\fP      \fBUnicode\fP   \fBASCII\fP     \fBacsc\fP      \fBGlyph\fP
-\fBName\fP     \fBDefault\fP   \fBDefault\fP   \fBchar\fP      \fBName\fP
-WACS_BLOCK     0x25ae  #       0       solid square block
-WACS_BOARD     0x2592  #       h       board of squares
-WACS_BTEE      0x2534  +       v       bottom tee
-WACS_BULLET    0x00b7  o       ~       bullet
-WACS_CKBOARD   0x2592  :       a       checker board (stipple)
-WACS_DARROW    0x2193  v       .       arrow pointing down
-WACS_DEGREE    0x00b0  '       f       degree symbol
-WACS_DIAMOND   0x25c6  +       `       diamond
-WACS_GEQUAL    0x2265  >       >       greater-than-or-equal-to
-WACS_HLINE     0x2500  \-      q       horizontal line
-WACS_LANTERN   0x2603  #       i       lantern symbol
-WACS_LARROW    0x2190  <       ,       arrow pointing left
-WACS_LEQUAL    0x2264  <       y       less-than-or-equal-to
-WACS_LLCORNER  0x2514  +       m       lower left-hand corner
-WACS_LRCORNER  0x2518  +       j       lower right-hand corner
-WACS_LTEE      0x2524  +       t       left tee
-WACS_NEQUAL    0x2260  !       |       not-equal
-WACS_PI        0x03c0  *       {       greek pi
-WACS_PLMINUS   0x00b1  #       g       plus/minus
-WACS_PLUS      0x253c  +       n       plus
-WACS_RARROW    0x2192  >       +       arrow pointing right
-WACS_RTEE      0x251c  +       u       right tee
-WACS_S1        0x23ba  \-      o       scan line 1
-WACS_S3        0x23bb  \-      p       scan line 3
-WACS_S7        0x23bc  \-      r       scan line 7
-WACS_S9        0x23bd  \&_     s       scan line 9
-WACS_STERLING  0x00a3  f       }       pound-sterling symbol
-WACS_TTEE      0x252c  +       w       top tee
-WACS_UARROW    0x2191          ^       \-      arrow pointing up
-WACS_ULCORNER  0x250c  +       l       upper left-hand corner
-WACS_URCORNER  0x2510  +       k       upper right-hand corner
-WACS_VLINE     0x2502  |       x       vertical line
+Lb Lb Lb Lb Lb
+Lb Lb Lb Lb Lb
+Lb L  L  L  Lx.
+\&     Unicode ACS     acsc    \&
+Symbol Default Default char    Glyph Name
+_
+WACS_BLOCK     0x25ae  #       0       T{
+solid square block
+T}
+WACS_BOARD     0x2592  #       h       board of squares
+WACS_BTEE      0x2534  +       v       bottom tee
+WACS_BULLET    0x00b7  o       ~       bullet
+WACS_CKBOARD   0x2592  :       a       T{
+checker board (stipple)
+T}
+WACS_DARROW    0x2193  v       .       T{
+arrow pointing down
+T}
+WACS_DEGREE    0x00b0  '       f       degree symbol
+WACS_DIAMOND   0x25c6  +       \(ga    diamond
+WACS_GEQUAL    0x2265  >       >       T{
+greater-than-or-equal-to
+T}
+WACS_HLINE     0x2500  \-      q       horizontal line
+WACS_LANTERN   0x2603  #       i       lantern symbol
+WACS_LARROW    0x2190  <       ,       T{
+arrow pointing left
+T}
+WACS_LEQUAL    0x2264  <       y       T{
+less-than-or-equal-to
+T}
+WACS_LLCORNER  0x2514  +       m       T{
+lower left-hand corner
+T}
+WACS_LRCORNER  0x2518  +       j       T{
+lower right-hand corner
+T}
+WACS_LTEE      0x2524  +       t       left tee
+WACS_NEQUAL    0x2260  !       |       not-equal
+WACS_PI        0x03c0  *       {       greek pi
+WACS_PLMINUS   0x00b1  #       g       plus/minus
+WACS_PLUS      0x253c  +       n       plus
+WACS_RARROW    0x2192  >       +       T{
+arrow pointing right
+T}
+WACS_RTEE      0x251c  +       u       right tee
+WACS_S1        0x23ba  \-      o       scan line 1
+WACS_S3        0x23bb  \-      p       scan line 3
+WACS_S7        0x23bc  \-      r       scan line 7
+WACS_S9        0x23bd  \&_     s       scan line 9
+WACS_STERLING  0x00a3  f       }       T{
+pound-sterling symbol
+T}
+WACS_TTEE      0x252c  +       w       top tee
+WACS_UARROW    0x2191  ^       \-      T{
+arrow pointing up
+T}
+WACS_ULCORNER  0x250c  +       l       T{
+upper left-hand corner
+T}
+WACS_URCORNER  0x2510  +       k       T{
+upper right-hand corner
+T}
+WACS_VLINE     0x2502  |       x       vertical line
 .TE
 .PP
 .TE
 .PP
-The wide-character configuration of ncurses also defines symbols
+The wide-character configuration of \fI\%ncurses\fP also defines symbols
 for thick lines (\fBacsc\fP \*(``J\*('' to \*(``V\*(''):
 .PP
 .TS
 for thick lines (\fBacsc\fP \*(``J\*('' to \*(``V\*(''):
 .PP
 .TS
-l l l l l
-l l l l l
-_ _ _ _ _
-lw(1.5i) lw5 lw5 lw5 lw20.
-\fBACS\fP      \fBUnicode\fP   \fBASCII\fP     \fBacsc\fP      \fBGlyph\fP
-\fBName\fP     \fBDefault\fP   \fBDefault\fP   \fBchar\fP      \fBName\fP
-WACS_T_BTEE    0x253b  +       V       thick tee pointing up
-WACS_T_HLINE   0x2501  -       Q       thick horizontal line
-WACS_T_LLCORNER        0x2517  +       M       thick lower left corner
-WACS_T_LRCORNER        0x251b  +       J       thick lower right corner
-WACS_T_LTEE    0x252b  +       T       thick tee pointing right
-WACS_T_PLUS    0x254b  +       N       thick large plus
-WACS_T_RTEE    0x2523  +       U       thick tee pointing left
-WACS_T_TTEE    0x2533  +       W       thick tee pointing down
-WACS_T_ULCORNER        0x250f  +       L       thick upper left corner
-WACS_T_URCORNER        0x2513  +       K       thick upper right corner
-WACS_T_VLINE   0x2503  |       X       thick vertical line
+Lb Lb Lb Lb Lb
+Lb Lb Lb Lb Lb
+Lb L  L  L  Lx.
+\&     Unicode ASCII   acsc    \&
+ACS Name       Default Default Char    Glyph Name
+_
+WACS_T_BTEE    0x253b  +       V       T{
+thick tee pointing up
+T}
+WACS_T_HLINE   0x2501  -       Q       T{
+thick horizontal line
+T}
+WACS_T_LLCORNER        0x2517  +       M       T{
+thick lower left corner
+T}
+WACS_T_LRCORNER        0x251b  +       J       T{
+thick lower right corner
+T}
+WACS_T_LTEE    0x252b  +       T       T{
+thick tee pointing right
+T}
+WACS_T_PLUS    0x254b  +       N       T{
+thick large plus
+T}
+WACS_T_RTEE    0x2523  +       U       T{
+thick tee pointing left
+T}
+WACS_T_TTEE    0x2533  +       W       T{
+thick tee pointing down
+T}
+WACS_T_ULCORNER        0x250f  +       L       T{
+thick upper left corner
+T}
+WACS_T_URCORNER        0x2513  +       K       T{
+thick upper right corner
+T}
+WACS_T_VLINE   0x2503  |       X       T{
+thick vertical line
+T}
 .TE
 .PP
 and for double-lines (\fBacsc\fP \*(``A\*('' to \*(``I\*(''):
 .PP
 .TS
 .TE
 .PP
 and for double-lines (\fBacsc\fP \*(``A\*('' to \*(``I\*(''):
 .PP
 .TS
-l l l l l
-l l l l l
-_ _ _ _ _
-lw(1.5i) lw5 lw5 lw5 lw20.
-\fBACS\fP      \fBUnicode\fP   \fBASCII\fP     \fBacsc\fP      \fBGlyph\fP
-\fBName\fP     \fBDefault\fP   \fBDefault\fP   \fBchar\fP      \fBName\fP
-WACS_D_BTEE    0x2569  +       H       double tee pointing up
-WACS_D_HLINE   0x2550  -       R       double horizontal line
-WACS_D_LLCORNER        0x255a  +       D       double lower left corner
-WACS_D_LRCORNER        0x255d  +       A       double lower right corner
-WACS_D_LTEE    0x2560  +       F       double tee pointing right
-WACS_D_PLUS    0x256c  +       E       double large plus
-WACS_D_RTEE    0x2563  +       G       double tee pointing left
-WACS_D_TTEE    0x2566  +       I       double tee pointing down
-WACS_D_ULCORNER        0x2554  +       C       double upper left corner
-WACS_D_URCORNER        0x2557  +       B       double upper right corner
-WACS_D_VLINE   0x2551  |       Y       double vertical line
+Lb Lb Lb Lb Lb
+Lb Lb Lb Lb Lb
+Lb L  L  L  Lx.
+\&     Unicode ASCII   acsc    \&
+ACS Name       Default Default Char    Glyph Name
+_
+WACS_D_BTEE    0x2569  +       H       T{
+double tee pointing up
+T}
+WACS_D_HLINE   0x2550  -       R       T{
+double horizontal line
+T}
+WACS_D_LLCORNER        0x255a  +       D       T{
+double lower left corner
+T}
+WACS_D_LRCORNER        0x255d  +       A       T{
+double lower right corner
+T}
+WACS_D_LTEE    0x2560  +       F       T{
+double tee pointing right
+T}
+WACS_D_PLUS    0x256c  +       E       T{
+double large plus
+T}
+WACS_D_RTEE    0x2563  +       G       T{
+double tee pointing left
+T}
+WACS_D_TTEE    0x2566  +       I       T{
+double tee pointing down
+T}
+WACS_D_ULCORNER        0x2554  +       C       T{
+double upper left corner
+T}
+WACS_D_URCORNER        0x2557  +       B       T{
+double upper right corner
+T}
+WACS_D_VLINE   0x2551  |       Y       T{
+double vertical line
+T}
 .TE
 .PP
 .TE
 .PP
-Unicode's descriptions for these characters differs slightly from ncurses,
+Unicode's descriptions for these characters differs slightly from
+\fI\%ncurses\fP,
 by introducing the term \*(``light\*('' (along with less important details).
 Here are its descriptions for the normal, thick, and double horizontal lines:
 .bP
 by introducing the term \*(``light\*('' (along with less important details).
 Here are its descriptions for the normal, thick, and double horizontal lines:
 .bP
@@ -215,54 +364,75 @@ U+2501 BOX DRAWINGS HEAVY HORIZONTAL
 .bP
 U+2550 BOX DRAWINGS DOUBLE HORIZONTAL
 .SH RETURN VALUE
 .bP
 U+2550 BOX DRAWINGS DOUBLE HORIZONTAL
 .SH RETURN VALUE
-All routines return the integer \fBERR\fP upon failure and \fBOK\fP on success.
-.PP
-X/Open does not define any error conditions.
-This implementation returns an error
-.bP
-if the window pointer is null or
+These functions return
+.B OK
+on success and
+.B ERR
+on failure.
+In
+.IR \%ncurses ,
+.B \%wadd_wch
+returns
+.B ERR
+if
 .bP
 .bP
-if it is not possible to add a complete character in the window.
-.PP
-The latter may be due to different causes:
+.I win
+is
+.BR NULL ","
 .bP
 .bP
-If \fBscrollok\fP(3X) is not enabled,
-writing a character at the lower right margin succeeds.
-However, an error is returned because
-it is not possible to wrap to a new line
+wrapping to a new line is impossible because \fB\%scrollok\fP(3X) has
+not been called on
+.I win
+when writing to its bottom right location is attempted,
+or
 .bP
 .bP
-If an error is detected when converting a multibyte character to a sequence
-of bytes,
-or if it is not possible to add all of the resulting bytes in the window,
-an error is returned.
+it is not possible to add a complete character at the cursor position.
 .PP
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
 .SH NOTES
-Note that
-\fBadd_wch\fP,
-\fBmvadd_wch\fP,
-\fBmvwadd_wch\fP, and
-\fBecho_wchar\fP
-may be macros.
+.BR add_wch ","
+.BR mvadd_wch ","
+.BR mvwadd_wch ","
+and
+.B echo_wchar
+may be implemented as macros.
+.SH EXTENSIONS
+.SS TABSIZE
+The
+.B TABSIZE
+variable is implemented in SVr4 and other versions of
+.IR curses ,
+but is not specified by X/Open Curses
+(see \fBcurs_variables\fP(3X)).
 .SH PORTABILITY
 .SH PORTABILITY
-All of these functions are described in the XSI Curses standard, Issue 4.
-The defaults specified for line-drawing characters apply in the POSIX locale.
-.SS WACS Symbols
+These functions are described in X/Open Curses, Issue 4.
+It specifies no error conditions for them.
+.PP
+SVr4
+.I curses
+describes a successful return value only as
+\*(``an integer value other than
+.BR ERR \*(''.
+.PP
+The defaults specified for forms-drawing characters apply in the POSIX
+locale.
 X/Open Curses makes it clear that the WACS_ symbols should be defined as
 a pointer to \fBcchar_t\fP data, e.g., in the discussion of \fBborder_set\fP.
 A few implementations are problematic:
 .bP
 NetBSD curses defines the symbols as a \fBwchar_t\fP within a \fBcchar_t\fP.
 .bP
 X/Open Curses makes it clear that the WACS_ symbols should be defined as
 a pointer to \fBcchar_t\fP data, e.g., in the discussion of \fBborder_set\fP.
 A few implementations are problematic:
 .bP
 NetBSD curses defines the symbols as a \fBwchar_t\fP within a \fBcchar_t\fP.
 .bP
-HPUX curses equates some of the \fBACS_\fP symbols
+HP-UX curses equates some of the \fBACS_\fP symbols
 to the analogous \fBWACS_\fP symbols as if the \fBACS_\fP symbols were
 wide characters.
 The misdefined symbols are the arrows
 and other symbols which are not used for line-drawing.
 .PP
 to the analogous \fBWACS_\fP symbols as if the \fBACS_\fP symbols were
 wide characters.
 The misdefined symbols are the arrows
 and other symbols which are not used for line-drawing.
 .PP
-X/Open Curses does not define symbols for thick- or double-lines.
+X/Open Curses does not specify symbols for thick- or double-lines.
 SVr4 curses implementations defined their line-drawing symbols in
 terms of intermediate symbols.
 This implementation extends those symbols, providing new definitions
 SVr4 curses implementations defined their line-drawing symbols in
 terms of intermediate symbols.
 This implementation extends those symbols, providing new definitions
@@ -273,18 +443,20 @@ alternate character sets (i.e., the \fBacsc\fP capability),
 with their corresponding line-drawing characters.
 X/Open Curses did not address the aspect of integrating Unicode with
 line-drawing characters.
 with their corresponding line-drawing characters.
 X/Open Curses did not address the aspect of integrating Unicode with
 line-drawing characters.
-Existing implementations of Unix curses (AIX, HPUX, Solaris)
+Existing implementations of Unix curses (AIX, HP-UX, Solaris)
 use only the \fBacsc\fP character-mapping to provide this feature.
 As a result, those implementations can only use single-byte line-drawing
 characters.
 use only the \fBacsc\fP character-mapping to provide this feature.
 As a result, those implementations can only use single-byte line-drawing
 characters.
-Ncurses 5.3 (2002) provided a table of Unicode values to solve these problems.
+\fI\%ncurses\fP 5.3 (2002) provided a table of Unicode values to solve
+these problems.
 NetBSD curses incorporated that table in 2010.
 .PP
 In this implementation, the Unicode values are used instead of the
 NetBSD curses incorporated that table in 2010.
 .PP
 In this implementation, the Unicode values are used instead of the
-terminal description's \fBacsc\fP mapping as discussed in ncurses(3X)
-for the environment variable \fBNCURSES_NO_UTF8_ACS\fP.
+terminal description's \fBacsc\fP mapping as discussed in
+\fB\%ncurses\fP(3X) for the environment variable
+\fINCURSES_NO_UTF8_ACS\fP.
 In contrast, for the same cases, the line-drawing characters
 In contrast, for the same cases, the line-drawing characters
-described in \fBcurs_addch\fP(3X) will use only the ASCII default values.
+described in \fB\%addch\fP(3X) will use only the ASCII default values.
 .PP
 Having Unicode available does not solve all of the problems with
 line-drawing for curses:
 .PP
 Having Unicode available does not solve all of the problems with
 line-drawing for curses:
@@ -325,31 +497,45 @@ Others have suggested these alternatives:
 \[u2327] U+2327 (x in a rectangle),
 \[u256C] U+256C (forms double vertical and horizontal), and
 \[u2612] U+2612 (ballot box with x).
 \[u2327] U+2327 (x in a rectangle),
 \[u256C] U+256C (forms double vertical and horizontal), and
 \[u2612] U+2612 (ballot box with x).
-.SS Complex Characters
-The complex character type \fBcchar_t\fR
-can store more than one wide character (\fBwchar_t\fR).
-The X/Open Curses description does not mention this possibility,
-describing only the cases where \fIwch\fP is a spacing character
-or a non-spacing character.
+.SS "Complex Characters"
+The complex character type
+.I \%cchar_t
+can store more than one wide character
+.RI ( \%wchar_t ).
+X/Open Curses does not mention this possibility,
+specifying behavior only where
+.I wch
+is a single character,
+either spacing or non-spacing.
 .PP
 .PP
-This implementation assumes that \fIwch\fP is constructed using
-\fBsetcchar\fP(3X), and in turn that the result
+.I \%ncurses
+assumes that
+.I wch
+is constructed using \fB\%setcchar\fP(3X),
+and in turn that the result
 .bP
 .bP
-contains at most one spacing character in the beginning of its list of wide
-characters,
-and zero or more non-spacing characters
+contains at most one spacing character at the beginning of its list of
+wide characters,
+and zero or more non-spacing characters,
 or
 .bP
 or
 .bP
-may hold one non-spacing character.
+holds one non-spacing character.
 .PP
 .PP
-In the latter case, ncurses adds the non-spacing character to the active
-(base) spacing character.
+In the latter case,
+.I \%ncurses
+adds the non-spacing character to the active complex character.
 .SH SEE ALSO
 .SH SEE ALSO
+\fB\%curs_addch\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its non-wide-character configuration.
+.PP
 \fB\%curses\fP(3X),
 \fB\%curses\fP(3X),
-\fB\%curs_addch\fP(3X),
+\fB\%curs_addwstr\fP(3X),
+\fB\%curs_add_wchstr\fP(3X),
 \fB\%curs_attr\fP(3X),
 \fB\%curs_clear\fP(3X),
 \fB\%curs_getcchar\fP(3X),
 \fB\%curs_outopts\fP(3X),
 \fB\%curs_refresh\fP(3X),
 \fB\%curs_attr\fP(3X),
 \fB\%curs_clear\fP(3X),
 \fB\%curs_getcchar\fP(3X),
 \fB\%curs_outopts\fP(3X),
 \fB\%curs_refresh\fP(3X),
+\fB\%curs_variables\fP(3X),
 \fB\%putwc\fP(3)
 \fB\%putwc\fP(3)