Synchronet v3.17b-Win32 (install) has been released (Jan-2019).

New Synchronet YouTube channel

You can donate to the Synchronet project using PayPal.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
custom:atcodes [2019/07/11 14:33]
digital man More Unicode updates.
custom:atcodes [2019/09/24 01:34] (current)
digital man [Format Modifiers] Document the pipe modifier separator and the new (T) thousands modifier letter
Line 20: Line 20:
 ==== Format Modifiers ==== ==== Format Modifiers ====
  
-Most @-codes support an optional format modifier. Modifiers are appended to the end of the @-code variable name and before the terminating ''​@''​ character. ​Only one format modifier may be used per @-code instanceyou cannot combine format modifiers.+Most @-codes support an optional format modifier. Modifiers are appended to the end of the @-code variable name and before the terminating ''​@'' ​character, separated from the code itself with either a hyphen (''​-''​) or a pipe (''​|''​) ​character. 
 + 
 +When using the hyphen (''​-''​) modifier separator, only one format modifier may be used per @-code instance ​(you cannot combine format modifiers) and @-code arguments (separated from the code with a colon) are **not** supported). 
 + 
 +When using the pipe (''​|''​) modifier separator, some modifiers may be combined with others (e.g. ''​|TR''​) and @-code arguments (separated from the code with a colon) **are** supported.
  
 ^ Modifier ^ Purpose ^ ^ Modifier ^ Purpose ^
-| ''​-L'' ​  | Pad and left-justify an expanded @-code | +| ''​L'' ​  | Pad and left-justify an expanded @-code | 
-| ''​-R'' ​  | Pad and right-justify an expanded @-code | +| ''​R'' ​  | Pad and right-justify an expanded @-code | 
-| ''​-C'' ​  | Pad and center an expanded @-code (added in v3.17b) | +| ''​C'' ​  | Pad and center an expanded @-code (added in v3.17b) | 
-| ''​-W'' ​  | Displays double-wide using "​fullwidth"​ Unicode code points if possible, spaces between the characters otherwise | +| ''​W'' ​  | Displays double-wide using "​fullwidth"​ Unicode code points if possible, spaces between the characters otherwise | 
-| ''​-Z'' ​  | Zero-pad and right-justify an expanded @-code (added in v3.17b) | +| ''​Z'' ​  | Zero-pad and right-justify an expanded @-code (added in v3.17b) | 
-| ''​->'' ​  | Allow the terminal to wrap (don't truncate) overly-long expanded @-codes (added in v3.17c) |+| ''​T'' ​  | Thousands-separated (e.g. with a comma) numeric values, may be combined with other modifiers (added in v3.17c) | 
 +| ''​>'' ​  | Allow the terminal to wrap (don't truncate) overly-long expanded @-codes (added in v3.17c) |
  
 === Width Specificity === === Width Specificity ===
Line 34: Line 39:
 A string //width//, specified as a positive decimal number, may immediately follow a format modifier. A string //width//, specified as a positive decimal number, may immediately follow a format modifier.
  
-Example: ''​@NODE-L2@''​ for a left-justified 2 character (space padded) node number or ''​@NODE-Z2@''​ for a right-justified 2 digit (zero-padded) node number.+Example: ''​@NODE|L2@''​ for a left-justified 2 character (space padded) node number or ''​@NODE|Z2@''​ for a right-justified 2 digit (zero-padded) node number.
  
 Another method of specifying the width of an expanded @-code is to include non-numeric non-space characters between the modifier and the trailing ''​@''​ character. ​ Another method of specifying the width of an expanded @-code is to include non-numeric non-space characters between the modifier and the trailing ''​@''​ character. ​
  
-Example: ''​@ALIAS-R###########​@''​ for a right-justified 20 character user alias (any non-numeric non-space characters could have been used in place of the ''#''​ characters).+Example: ''​@ALIAS|R###########​@''​ for a right-justified 20 character user alias (any non-numeric non-space characters could have been used in place of the ''#''​ characters).
  
 === Truncation === === Truncation ===
Line 44: Line 49:
 When a //width// is specified, expanded @-code strings which are **longer** than the specified width will be truncated (shortened) to adhere to the requested width. The left-most characters are preserved/​displayed while the right-most characters are truncated (lost). When a //width// is specified, expanded @-code strings which are **longer** than the specified width will be truncated (shortened) to adhere to the requested width. The left-most characters are preserved/​displayed while the right-most characters are truncated (lost).
  
-By default, //most// expanded @-codes that would reach the last column of the terminal screen are truncated (shortened) so as to not cause an automatic line-wrap of the user's terminal. If you wish for an expanded @-code to be displayed in the last terminal column, or beyond ( possibly causing an automatic line-wrap of the terminal) use the ''​->''​ format modifier.+By default, //most// expanded @-codes that would reach the last column of the terminal screen are truncated (shortened) so as to not cause an automatic line-wrap of the user's terminal. If you wish for an expanded @-code to be displayed in the last terminal column, or beyond ( possibly causing an automatic line-wrap of the terminal) use the ''>''​ format modifier.
  
 === Exceptions === === Exceptions ===
-@-codes that take an argument value, preceded by a colon ('':''​) character cannot be used with format modifiers.+@-codes that take an argument value, preceded by a colon ('':''​) charactercannot be used with format modifiers ​when using the hyphen (-) modifier separator; use the pipe (|) modifier separator instead.
 ===== System Information ===== ===== System Information =====
  
Line 53: Line 58:
  
 ^Code           ​^Aliases ​        ​^Description ^ ^Code           ​^Aliases ​        ​^Description ^
 +|ANODES ​        |AN, ANODE       ​|Number of active nodes (including current node) |
 +|AUTODEL ​       |                |Maximum days of user inactivity before auto-deletion or "​unlimited"​ |
 |BBS            |BOARDNAME ​      |Name of BBS |  |BBS            |BOARDNAME ​      |Name of BBS |
 |COMPILER ​      ​| ​               |Compiler used to build Synchronet| |COMPILER ​      ​| ​               |Compiler used to build Synchronet|
Line 70: Line 77:
 |EVENT ​         |                |Date and time of next scheduled timed event | |EVENT ​         |                |Date and time of next scheduled timed event |
 |FIDOADDR ​      ​| ​               |System'​s primary FidoNet address ​              | |FIDOADDR ​      ​| ​               |System'​s primary FidoNet address ​              |
 +|FILES ​         |                |Number of files in the user's currently selected file transfer directory |
 +|FILES://<​code>//​ |              |Number of files in the file transfer directory specified by internal-//​code//​ |
 +|FILES://<​path>//​ |              |Number of files in the directory specified by //path// |
 +|FILESIZE ​      ​| ​               |Total size of all files in the user's currently selected file transfer directory |
 +|FILESIZE://<​code>//​| ​           |Total size of all files in the file transfer directory specified by internal-//​code//​|
 +|FILESIZE://<​path>//​| ​           |Total size of all files matching the path/​filespec specified in //path//|
 +|FILEKB ​        ​| ​               |Total size (in kibibytes) of all files in the user's currently selected file transfer directory |
 +|FILEKB://<​code>// ​ |            |Total size (in kibibytes) of all files in the file transfer directory specified by internal-//​code//​|
 +|FILEKB://<​path>// ​ |            |Total size (in kibibytes) of all files matching the path/​filespec specified in //path//|
 +|FILEMB ​        ​| ​               |Total size (in mebibytes) of all files in the user's currently selected file transfer directory |
 +|FILEMB://<​code>// ​ |            |Total size (in mebibytes) of all files in the file transfer directory specified by internal-//​code//​|
 +|FILEMB://<​path>// ​ |            |Total size (in mebibytes) of all files matching the path/​filespec specified in //path//|
 +|FILEGB ​        ​| ​               |Total size (in gibibytes) of all files in the user's currently selected file transfer directory |
 +|FILEGB://<​code>// ​ |            |Total size (in gibibytes) of all files in the file transfer directory specified by internal-//​code//​|
 +|FILEGB://<​path>// ​ |            |Total size (in gibibytes) of all files matching the path/​filespec specified in //path//|
 |FREESPACE ​     |                |Free disk space available for uploads (in bytes) | |FREESPACE ​     |                |Free disk space available for uploads (in bytes) |
-|FREESPACEK ​    ​| ​               |Free disk space available for uploads (in kilobytes) |+|FREESPACEK ​    ​| ​               |Free disk space available for uploads (in kibibytes) |
 |FULL_VER ​      ​| ​               |Synchronet full version number (e.g. "​3.15a"​)| |FULL_VER ​      ​| ​               |Synchronet full version number (e.g. "​3.15a"​)|
 |GRP            |                |Current message group short description | |GRP            |                |Current message group short description |
Line 93: Line 115:
 |MSG_LIB ​       |                |Synchronet Message Base Library version information | |MSG_LIB ​       |                |Synchronet Message Base Library version information |
 |NOACCESS ​      ​| ​               |Why user was denied access (last failed ARS check) | |NOACCESS ​      ​| ​               |Why user was denied access (last failed ARS check) |
-|NODE           ​| ​               |Number of current node | +|NODE           |NN              ​|Number of current node | 
-|NODE###        ​|                |Status of node number ​### |+|NODE//n//      ​|                |Status of node number ​//n// |
 |NUMDIR ​        ​| ​               |Number of current library and directory | |NUMDIR ​        ​| ​               |Number of current library and directory |
 +|ONODES ​        ​|ONODE,​ ON       ​|Number of other active nodes (not counting current node) |
 |OS_VER ​        ​| ​               |Operating system type and version information| |OS_VER ​        ​| ​               |Operating system type and version information|
 |PLATFORM ​      ​| ​               |Platform or operating system name (e.g. "​win32",​ "​linux"​)| |PLATFORM ​      ​| ​               |Platform or operating system name (e.g. "​win32",​ "​linux"​)|
 +|PWDAYS ​        ​| ​               |Maximum age (in days) of user's password before forced-change or "​unlimited"​ |
 |QUESTION ​      ​| ​               |Current Yes/No question being asked of the user | |QUESTION ​      ​| ​               |Current Yes/No question being asked of the user |
 |QWKID ​         |                |System'​s QWK BBS-ID | |QWKID ​         |                |System'​s QWK BBS-ID |
Line 137: Line 161:
 |MSG_TAGS ​      ​| ​               |Current message tags (space-separated,​ optional)| |MSG_TAGS ​      ​| ​               |Current message tags (space-separated,​ optional)|
 |MSG_DATE ​      ​| ​               |Current message date/time written | |MSG_DATE ​      ​| ​               |Current message date/time written |
 +|MSG_IMP_DATE ​  ​| ​               |Current message date/time imported |
 |MSG_AGE ​       |                |Current message age (e.g. in seconds, minutes, hours, etc.) | |MSG_AGE ​       |                |Current message age (e.g. in seconds, minutes, hours, etc.) |
-|MSG_TIMEZONE ​  ​| ​               |Current message ​time zone|+|MSG_TIMEZONE ​  ​| ​               |Current message ​timezone written | 
 +|MSG_IMP_TIMEZONE ​ |             ​|Current message timezone imported ​|
 |MSG_ATTR ​      ​| ​               |Current message attributes| |MSG_ATTR ​      ​| ​               |Current message attributes|
 |MSG_AUXATTR ​   |                |Current message auxiliary attributes| |MSG_AUXATTR ​   |                |Current message auxiliary attributes|
Line 191: Line 217:
 |TIMEZONE ​      ​| ​               |Current system time zone abbreviation or UTC offset| |TIMEZONE ​      ​| ​               |Current system time zone abbreviation or UTC offset|
 |TMSG           ​| ​               |Total number of messages on system| |TMSG           ​| ​               |Total number of messages on system|
-|TNODE          ​               |Total number of Terminal Server nodes |+|TNODES ​        |TNODE,​TN ​       ​|Total number of Terminal Server nodes |
 |TUSER ​         |                |Total number of currently active registered users | |TUSER ​         |                |Total number of currently active registered users |
 |UPTIME ​        ​| ​               |Synchronet uptime details| |UPTIME ​        ​| ​               |Synchronet uptime details|
Line 206: Line 232:
 |ALERTS ​      ​| ​               |Node activity alerts enabled status (e.g. "​On"​ or "​Off"​) | |ALERTS ​      ​| ​               |Node activity alerts enabled status (e.g. "​On"​ or "​Off"​) |
 |ALIAS ​       |NAME, USER      |User'​s alias | |ALIAS ​       |NAME, USER      |User'​s alias |
-|BAUD         ​|BPS ​            ​|User'​s connect rate (DCE) in bps | 
 |BDATE ​       |                |User'​s birth date (in "​MM/​DD/​YY"​ or "​DD/​MM/​YY"​ format) | |BDATE ​       |                |User'​s birth date (in "​MM/​DD/​YY"​ or "​DD/​MM/​YY"​ format) |
 |BYTELIMIT ​   |                |User'​s free credits per day                     | |BYTELIMIT ​   |                |User'​s free credits per day                     |
Line 216: Line 241:
 |DLBYTES ​     |                |Total bytes downloaded by user | |DLBYTES ​     |                |Total bytes downloaded by user |
 |DLFILES ​     |DOWNS ​          ​|Total files downloaded by user | |DLFILES ​     |DOWNS ​          ​|Total files downloaded by user |
-|DLKLIMIT ​    ​| ​               |User'​s total credits (in kilobytes) | +|DLKLIMIT ​    ​| ​               |User'​s total credits (in kibibytes) | 
-|DOWNK ​       |                |Total ​kilobytes ​downloaded by user |+|DOWNK ​       |                |Total ​kibibytes ​downloaded by user |
 |EMAILADDR ​   |                |User'​s Internet e-mail address on your system | |EMAILADDR ​   |                |User'​s Internet e-mail address on your system |
 |EXPDATE ​     |EXDATE ​         |User'​s expiration date (in "​MM/​DD/​YY"​ or "​DD/​MM/​YY"​ format) | |EXPDATE ​     |EXDATE ​         |User'​s expiration date (in "​MM/​DD/​YY"​ or "​DD/​MM/​YY"​ format) |
Line 233: Line 258:
 |LASTTIMEON ​    ​| ​               |Time of user's last logon (in "HH:MM am" format) | |LASTTIMEON ​    ​| ​               |Time of user's last logon (in "HH:MM am" format) |
 |LASTREAL ​      ​| ​               |Last word of user's real name                   | |LASTREAL ​      ​| ​               |Last word of user's real name                   |
-|KBLEFT ​        ​| ​               |User'​s total credits (in kilobytes)             | +|KBLEFT ​        ​| ​               |User'​s total credits (in kibibytes)             | 
-|KBLIMIT ​       |DLKLIMIT, MAXDK |User'​s free credits per day (in kilobytes)      |+|KBLIMIT ​       |DLKLIMIT, MAXDK |User'​s free credits per day (in kibibytes)      |
 |MAILW ​       |                |Number of mail messages waiting for current user (includes SPAM)| |MAILW ​       |                |Number of mail messages waiting for current user (includes SPAM)|
-|MAILW:​x ​                    |Number of mail messages waiting for current user #x (x=0 for all users)|+|MAILW://x//  ​|MAILW#//​x// ​        |Number of mail messages waiting for current user number //x// (x=0 for all users)|
 |MAILP ​       |                |Number of pending mail messages sent by current user| |MAILP ​       |                |Number of pending mail messages sent by current user|
-|MAILP:​x ​                    |Number of pending mail messages sent by current user #x+|MAILP://x//  ​|MAILP#//​x// ​        |Number of pending mail messages sent by current user number //x// |
-|MEMO         ​| ​               |Date of user's last password modification ​      |+
 |MSGLEFT ​     |MSGSLEFT ​       |Total number of messages posted by user | |MSGLEFT ​     |MSGSLEFT ​       |Total number of messages posted by user |
 |MSGREAD ​     |                |Number of messages read by user this call | |MSGREAD ​     |                |Number of messages read by user this call |
Line 245: Line 269:
 |PAGER ​       |                |Chat pager enabled status (e.g. "​On"​ or "​Off"​)| |PAGER ​       |                |Chat pager enabled status (e.g. "​On"​ or "​Off"​)|
 |PHONE ​       |HOMEPHONE, DATA, DATAPHONE |Users'​s phone number | |PHONE ​       |HOMEPHONE, DATA, DATAPHONE |Users'​s phone number |
 +|PWAGE ​       |                |Age (in days) of the current user's password |
 +|PWDATE ​      ​|MEMO ​           |Date of user's last password modification (in "​MM/​DD/​YY"​ or "​DD/​MM/​YY"​ format) |
 |SEC          |SECURITY ​       |User'​s security level (0-99) |                          ​ |SEC          |SECURITY ​       |User'​s security level (0-99) |                          ​
 |SINCE ​       |         |Date of user's first call (in "​MM/​DD/​YY"​ or "​DD/​MM/​YY"​ format)| ​           |SINCE ​       |         |Date of user's first call (in "​MM/​DD/​YY"​ or "​DD/​MM/​YY"​ format)| ​          
 |SPAMW ​       |         ​|Number of SPAM messages waiting | |SPAMW ​       |         ​|Number of SPAM messages waiting |
-|SPAMW:​x ​             ​|Number of SPAM messages waiting for user #x |+|SPAMW://x//  ​|SPAMW#//​x//  ​|Number of SPAM messages waiting for user number //x// |
 |SPLITP ​      ​| ​        ​|Split-screen private chat enabled status (e.g. "​On"​ or "​Off"​)| |SPLITP ​      ​| ​        ​|Split-screen private chat enabled status (e.g. "​On"​ or "​Off"​)|
 |STATE ​       |         ​|User'​s state (from location)| |STATE ​       |         ​|User'​s state (from location)|
Line 260: Line 286:
 |UPBYTES ​     |         ​|Total bytes uploaded by user | |UPBYTES ​     |         ​|Total bytes uploaded by user |
 |UPFILES ​     |UPS      |Total files uploaded by user |  |UPFILES ​     |UPS      |Total files uploaded by user |
-|UPK          |         ​|Total ​kilobytes ​uploaded by user |+|UPK          |         ​|Total ​kibibytes ​uploaded by user |
 |USERNUM ​     |         ​|User'​s number (1-based index into user database) | |USERNUM ​     |         ​|User'​s number (1-based index into user database) |
 |ZIP          |         ​|User'​s zip/postal code                        |  ​ |ZIP          |         ​|User'​s zip/postal code                        |  ​
Line 269: Line 295:
  
 ^Code            ^Aliases ^Description ^ ^Code            ^Aliases ^Description ^
 +|BPS             ​|BAUD ​   |Current emulated modem (DCE) bit-rate, in bps |
 +|BPS://​n// ​      ​| ​       |Set the current emulated rate to 0 (unlimited),​ or 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 76800, or 115200 bps|
 |BEEP            |BELL    |Generate a beep sound on the user's terminal | |BEEP            |BELL    |Generate a beep sound on the user's terminal |
 |CLS             ​| ​       |Clear the screen ​ | |CLS             ​| ​       |Clear the screen ​ |
Line 281: Line 309:
 |DEGREE_C ​       |        |Send a degree Celsius symbol appropriate for the user's terminal | |DEGREE_C ​       |        |Send a degree Celsius symbol appropriate for the user's terminal |
 |DEGREE_F ​       |        |Send a degree Fahrenheit symbol appropriate for the user's terminal | |DEGREE_F ​       |        |Send a degree Fahrenheit symbol appropriate for the user's terminal |
 +|YESCHAR ​        ​| ​       |Print the character that corresponds with an affirmative "​Yes"​ answer key (e.g. ''​Y''​) |
 +|NOCHAR ​         |        |Print the character that corresponds with an negative "​No"​ answer key (e.g. ''​N''​) |
 +|QUITCHAR ​       |        |Print the character that corresponds with a "​quit"​ command key (e.g. ''​Q''​) |
 |EOF             ​| ​       |End-of-file (stop parsing/​displaying) | |EOF             ​| ​       |End-of-file (stop parsing/​displaying) |
 |PAUSE ​          ​|MORE ​   |Force a screen pause (hit a key) prompt| |PAUSE ​          ​|MORE ​   |Force a screen pause (hit a key) prompt|
Line 286: Line 317:
 |POFF            |NOPAUSE |Toggle automatic screen pause off | |POFF            |NOPAUSE |Toggle automatic screen pause off |
 |RESETPAUSE ​     |        |Reset the automatic screen pause line counter | |RESETPAUSE ​     |        |Reset the automatic screen pause line counter |
 +|DELAY://​n// ​        ​| ​       |Wait //n// 10ths of a second before continuing |
 |UP://​n// ​           |        |Move cursor up //n// rows                   | |UP://​n// ​           |        |Move cursor up //n// rows                   |
 |DOWN://​n// ​         |        |Move cursor down //n// rows                 | |DOWN://​n// ​         |        |Move cursor down //n// rows                 |
Line 291: Line 323:
 |LEFT://​n// ​         |        |Move cursor left //n// columns ​             | |LEFT://​n// ​         |        |Move cursor left //n// columns ​             |
 |GOTOXY://​x,​y// ​ |        |Move cursor to //x/////y// coordinate (1-based) | |GOTOXY://​x,​y// ​ |        |Move cursor to //x/////y// coordinate (1-based) |
 +|POS://​x// ​      ​| ​       |Move cursor to column //x// (1-based) |
 |HOME            |        |Home cursor (to upper left), don't clear| |HOME            |        |Home cursor (to upper left), don't clear|
 |CLRLINE ​        ​| ​       |Clear the current line (cursor to first column)| |CLRLINE ​        ​| ​       |Clear the current line (cursor to first column)|
Line 306: Line 339:
 |CENTER ​         |        |Middle-align the remaining text on the line | |CENTER ​         |        |Middle-align the remaining text on the line |
 |SYSONLY ​        ​| ​       |Toggle off/on visibility for non-sysops | |SYSONLY ​        ​| ​       |Toggle off/on visibility for non-sysops |
 +|FILL://​text// ​  ​| ​       |Repeat the specified text, filling the current line (to terminal columns - 1)  |
 |WIDE://​text// ​  ​| ​       |Display specified //text// double-wide,​ using Unicode "​fullwidth"​ characters if possible | |WIDE://​text// ​  ​| ​       |Display specified //text// double-wide,​ using Unicode "​fullwidth"​ characters if possible |
 |U+//​code// ​     |        |Send a Unicode character code point (in hexadecimal) to UTF-8 terminal or an automatic fallback character, if supported((Not all Unicode code points support fallback characters for ASCII/​CP437/​PETSCII terminals)) | |U+//​code// ​     |        |Send a Unicode character code point (in hexadecimal) to UTF-8 terminal or an automatic fallback character, if supported((Not all Unicode code points support fallback characters for ASCII/​CP437/​PETSCII terminals)) |
-|U+//​code//://​text//​ |        | Send a Unicode character code point, specifying fallback string|+|U+//​code//://​text//​ |        | Send a Unicode character code point, specifying fallback string |
 |U+//​code//,//​char//​ |        | Send a Unicode character code point, specifying fallback character value in hexadecimal (or ''​0''​ for //none//) | |U+//​code//,//​char//​ |        | Send a Unicode character code point, specifying fallback character value in hexadecimal (or ''​0''​ for //none//) |
 |U+//​code//​!//​char//​ |        | Send a Unicode character code point, specifying fallback character only to used when no automatic fallback is available | |U+//​code//​!//​char//​ |        | Send a Unicode character code point, specifying fallback character only to used when no automatic fallback is available |
  
 ==== Unicode ==== ==== Unicode ====
-Only UTF-8 terminals support Unicode. For other terminals (TTY/ASCII, CP437, and PETSCII), an equivalent "​fallback"​ character may be automatically available or explicitly specified in the @-code itself.+Only UTF-8 terminals support Unicode. For other terminals (TTY/ASCII, CP437, and PETSCII), an equivalent "​fallback"​ character may be automatically available or when using the ''​U+''​ @-codes, ​explicitly specified in the @-code itself.
  
 The '​U+'​ @-code supports additional syntax to allow the sysop to specify the CP437 fallback character: The '​U+'​ @-code supports additional syntax to allow the sysop to specify the CP437 fallback character:
Line 319: Line 353:
   * ''​@U+<​code>,<​char>​@'':​ Send a Unicode character with specified fallback character, in hexadecimal (specify ''​0''​ to send //no// character to non-UTF-8 terminals)   * ''​@U+<​code>,<​char>​@'':​ Send a Unicode character with specified fallback character, in hexadecimal (specify ''​0''​ to send //no// character to non-UTF-8 terminals)
   * ''​@U+<​code>​!<​char>​@'':​ Send a Unicode character with specified fallback character to be used //only// when no automatic fallback character is supported   * ''​@U+<​code>​!<​char>​@'':​ Send a Unicode character with specified fallback character to be used //only// when no automatic fallback character is supported
 +
 +=== Examples ===
 +
 +^ @-code ​       ^ UTF-8 ^  CP437  ^ US-ASCII ^
 +| WIDE:​Test ​    ​| ​ ''​Test''​ |  ''​T e s t'' ​ |  ''​T e s t'' ​ |
 +| CHECKMARK ​    ​| ​ ''​✓'' ​ |  ''​√'' ​   |  ''​+'' ​   |
 +| COPY          |  ''​©'' ​ |  ''​(C)'' ​  ​| ​ ''​(C)'' ​ |
 +| TRADEMARK ​    ​| ​ ''​™'' ​ |  ''​(TM)'' ​ |  ''​(TM)'' ​ |
 +| ELLIPSIS ​     |  ''​…'' ​ |  ''​...'' ​  ​| ​ ''​...'' ​  |
 +| U+20AC ​       |  ''​€'' ​ |            |            |
 +| U+20AC,​24 ​    ​| ​ ''​€'' ​ |  ''​$'' ​    ​| ​ ''​$'' ​    |
 +| U+2265 ​       |  ''​≥'' ​ |  ''​≥'' ​    ​| ​ ''>'' ​    |
 +| U+2265!a8 ​    ​| ​ ''​≥'' ​ |  ''​≥'' ​    ​| ​ ''>'' ​    |
 +| U+2265,​a8 ​    ​| ​ ''​≥'' ​ |  ''​¿'' ​    ​| ​ ''?'' ​    |
 +| U+1F609 ​      ​| ​ ''​😉'' ​ |           ​| ​          |
 +| U+1F609:;​-) ​  ​| ​ ''​😉'' ​ |  '';​-)'' ​ |  '';​-)'' ​ |
 +
 +
 ===== External Content ===== ===== External Content =====
  

In Other Languages