groff_char(7)
๐ NAME ๐
groff_char(7) โ GNU roff special character and glyph repertoire. (Miscellaneous Information Manual, bestie โ manual name folded in right here at the top, no cap.) ๐ฆ
โจ DESCRIPTION โจ
Okay so the GNU roff typesetting system has a large glyph repertoire that is suitable for production of varied literary, professional, technical, and mathematical documents. groff works with characters; an output device renders glyphs. And hereโs the vibe check: groffโs input character set is restricted to that defined by ISO Latin-1 (ISO 8859-1). For ease of document maintenance in UTF-8 environments, it is advisable to use only Unicode basic Latin code points; these correspond to ISO 646:1991 IRV (US-ASCII), a subset of all of the foregoing which has only 94 visible, printable code points. In groff, these are termed ordinary characters. Often, many more are desired in output. ๐
AT&T troff in the 1970s faced a similar problem: the available typesetterโs glyph repertoire differed from that of the computers that controlled it. troffโs solution was a form of escape sequence known as a special character to access several dozen additional glyphs available in the fonts prepared for mounting in the phototypesetter. These glyphs were mapped onto a two-character name space for a degree of mnemonic convenience; for example, the escape sequence \(aa encoded an acute accent and \(sc a section sign.
groff has lifted historical roff limitations on special character name lengths, but recognizes and retains compatibility with the historical names. groff expands the lexicon of glyphs available by name and permits users to define their own special character escape sequences with the char request. Special character names are groff identifiers; see section โIdentifiersโ in groff(7). Our discussion uses the terms โglyph nameโ and โspecial character nameโ interchangeably; we assume no character translations or redefinitions.
This document lists all of the glyph names predefined by groffโs font description files and presents the systematic notation by which it enables access to arbitrary Unicode code points and construction of composite glyphs. Glyphs listed may be unavailable, or may vary in appearance, depending on the output device and font chosen when the page was formatted. This page was rendered for device utf8 primarily using font R.
A few escape sequences that are not groff special characters also produce glyphs; these exist for syntactical or historical reasons. These raw escapes are translated on input, respectively, like this:
\' -> \[aa]
\` -> \[ga]
\- -> \[-]
\_ -> \[ul]
Others include \\, \. (backslash-dot), and \e; see groff(7). A small number of special characters represent glyphs that are not encoded in Unicode; examples include the baseline rule \[ru] and the Bell System logo \[bs]. ๐ฅ
In groff, test support for any character (ordinary or special) with the conditional expression operator c. Like, literally:
.ie c \[bs] \{Welcome to the \[bs] Bell System;
did you get the Wehrmacht helmet or the Death Star?\}
.el No Bell System logo.
Careful, bestie: while groff accepts eight-bit encoded input, not all such code points are valid as input. Character codes0,11,13โ31, and128โ159are invalid. (This is all C0 and C1 controls except for SOH through LF [Control+AtoControl+J], and FF [Control+L].) Some of these code points are used by groff for internal purposes, which is one reason it does not support UTF-8 natively. ๐
๐ธ Fundamental character set ๐ธ
The ordinary characters catalogued above, plus the space, tab, newline, and leader (Control+A), form the fundamental character set for groff input; anything in the language, even over one million code points in Unicode, can be expressed using it. Code points in the range 33โ126 comprise a common set of printable glyphs in all of the aforementioned ISO character encoding standards. It is this character set and (with some noteworthy exceptions) the corresponding glyph repertoire for which AT&T troff was implemented.
All of the following characters map to glyphs as you would expect:
! # $ % & ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] _
a b c d e f g h i j k l m n o p q r s t u v w x y z { | }
The remaining ordinary characters surprise computing professionals and others intimately familiar with the ISO character encodings. The developers of AT&T troff chose mappings for them that would be useful for typesetting technical literature in a broad range of scientific disciplines: Bell Labs used the system to prepare AT&Tโs patent filings with the U.S. government. Further, the prevailing character encoding standard in the 1970s, USAS X3.4-1968 (ASCII), deliberately supported semantic ambiguity at some code points, and outright substitution at several others, to suit the localization demands of various national standards bodies. ๐ง
The list below is the row-by-row version of the table: it presents the seven exceptional code points with their typical keycap engravings, their glyph mappings and semantics in roff systems, and the escape sequences producing the Unicode basic Latin character they replace. The first, the neutral double quote, is a partial exception because it does represent itself, but since the roff language also uses it to quote macro arguments, groff supports a special character escape sequence as an alternative form so that the glyph can be easily included in macro arguments without requiring the user to master the quoting rules that AT&T troff required in that context. (Some requests, like ds, also treat " non-literally at the beginning of an argument.) Furthermore, not all of the special character escape sequences are portable to AT&T troff and all of its descendants; these groff extensions are presented using its special character form \[], whereas portable special character escape sequences are shown in the traditional \( form. \- and \e are portable to all known troffs. \e means โthe glyph of the current escape characterโ; it therefore can produce unexpected output if the ec request is used. On devices with a limited glyph repertoire, glyphs in the โkeycapโ and โappearanceโ columns on the same row of the lookup may look identical; except for the neutral double quote, this will not be the case on more-capable devices. Review your document using as many different output devices as possible. ๐ซถ
- keycap
"โ appearance and meaning:"neutral double quote; special character and meaning:\[dq]neutral double quote. - keycap
'โ appearance and meaning:โclosing single quote; special character and meaning:\[aq]neutral apostrophe. - keycap
-โ appearance and meaning:โhyphen; special character and meaning:\-or\[-]minus sign/Unix dash. - keycap
\โ appearance and meaning: (escape character); special character and meaning:\eor\[rs]reverse solidus. - keycap
^โ appearance and meaning:หmodifier circumflex; special character and meaning:\[ha]circumflex/caret/โhatโ. - keycap
`โ appearance and meaning:โopening single quote; special character and meaning:\(gagrave accent. - keycap
~โ appearance and meaning:หmodifier tilde; special character and meaning:\[ti]tilde.
The hyphen-minus is a particularly unfortunate case of overloading. Its awkward name in ISO 8859 and later standards reflects the many distinguishable purposes to which it had already been put by the 1980s, including a hyphen, a minus sign, and (alone or in repetition) dashes of varying widths. For best results in roff systems, use the โ-โ character in input outside an escape sequence only to mean a hyphen, as in the phrase โlong-termโ. For a minus sign in running text or a Unix file name or command-line option dash, use \- (or \[-] in groff if you find it helps the clarity of the source document). (Another minus sign, for use in mathematical expressions, is available as \(mi.) AT&T troff supported em-dashes as \(em, as does groff. ๐
The special character escape sequence for the apostrophe as a neutral single quote is typically needed only in technical content โ like, you are not gonna type canโt and Anneโs with an escape every single time, bestie. โจ When you type words like โcanโtโ and โAnneโsโ in a natural way, itโll render correctly, because in ordinary prose an apostrophe gets typeset either as a closing single quotation mark or as a neutral single quote, depending on what the output device can actually do. ๐
By contrast, special character escape sequences should be used for quotation marks unless portability to limited or historical troff implementations is necessary. On those systems, the input convention is to pair the grave accent with the apostrophe for single quotes, and to double both characters for double quotes. AT&T troff defined no special characters for quotation marks or the apostrophe. Repeated single quotes (โโthusโโ) will be visually distinguishable from double quotes (โthusโ) on terminal devices, and perhaps on others (depending on the font selected and its kerning configuration). ๐
Hereโs the input-convention vibe check:
AT&T troff input recommended groff input
A Winter's Tale A Winter's Tale
`U.K. outer quotes' \[oq]U.K. outer quotes\[cq]
`U.K. ``inner'' quotes' \[oq]U.K. \[lq]inner\[rq] quotes\[cq]
``U.S. outer quotes'' \[lq]U.S. outer quotes\[rq]
``U.S. `inner' quotes'' \[lq]U.S. \[oq]inner\[cq] quotes\[rq]
If you frequently require quotation marks in your document, see if the macro package youโre using supplies strings or macros to facilitate quotation, or define them yourself (except in man pages). ๐ซถ
Using Unicode basic Latin characters to compose boxes and lines is ill-advised. roff systems have dedicated features for drawing horizontal and vertical lines, the \l, \L, and \D escape sequences. Also see subsection โRules and linesโ below. Preprocessors like tbl(1) and pic(1) draw boxes and will produce the best possible output for the device, falling back to basic Latin glyphs only when necessary. ๐ฆ
๐ Eight-bit encodings and Latin-1 supplement ๐
Okay so ISO 646 is a seven-bit code encoding 128 code points; eight-bit codes are literally twice the size. ๐ญ ISO Latin-1 (8859-1) allocated the additional space to what Unicode calls โC1 controlsโ (control characters) and the โLatin-1 supplementโ. The C1 controls are neither printable nor usable as GNU troff input. Periodt.
GNU troff handles two Latin-1 supplement characters specially, and never produces them as output. ๐จ
NBSPโ encodes a no-break space; it maps to\~, the adjustable non-breaking space escape sequence.SHYโ encodes a soft hyphen; it maps to\%, the hyphenation control escape sequence.
The remaining characters in the Latin-1 supplement represent themselves. Although they can be specified directly with the keyboard on systems configured to use Latin-1 as the character encoding, it is more portable, both to other roff systems and to UTF-8 environments, to use their special character escape sequences, shown below. The glyph descriptions we use are non-standard in some cases, for brevity. ๐
Hereโs the full Latin-1 supplement lineup โ every character and its escape, no skips:
ยก\[r!]โ inverted exclamation markยข\[ct]โ cent signยฃ\[Po]โ pound signยค\[Cs]โ currency signยฅ\[Ye]โ yen signยฆ\[bb]โ broken barยง\[sc]โ section signยจ\[ad]โ dieresis accentยฉ\[co]โ copyright signยช\[Of]โ feminine ordinal indicatorยซ\[Fo]โ left double chevronยฌ\[no]โ logical notยฎ\[rg]โ registered signยฏ\[a-]โ macron accentยฐ\[de]โ degree signยฑ\[+-]โ plus-minusยฒ\[S2]โ superscript twoยณ\[S3]โ superscript threeยด\[aa]โ acute accentยต\[mc]โ micro signยถ\[ps]โ pilcrow signยท\[pc]โ centered periodยธ\[ac]โ cedilla accentยน\[S1]โ superscript oneยบ\[Om]โ masculine ordinal indicatorยป\[Fc]โ right double chevronยผ\[14]โ one quarter symbolยฝ\[12]โ one half symbolยพ\[34]โ three quarters symbolยฟ\[r?]โ inverted question markร\[A]` โ A graveร\['A]โ A acuteร\[^A]โ A circumflexร\[~A]โ A tildeร\[:A]โ A dieresisร\[oA]โ A ringร\[AE]โ AE ligatureร\[,C]โ C cedillaร\[E]` โ E graveร\['E]โ E acuteร\[^E]โ E circumflexร\[:E]โ E dieresisร\[I]` โ I graveร\['I]โ I acuteร\[^I]โ I circumflexร\[:I]โ I dieresisร\[-D]โ uppercase ethร\[~N]โ N tildeร\[O]` โ O graveร\['O]โ O acuteร\[^O]โ O circumflexร\[~O]โ O tildeร\[:O]โ O dieresisร\[mu]โ multiplication signร\[/O]โ O slashร\[U]` โ U graveร\['U]โ U acuteร\[^U]โ U circumflexร\[:U]โ U dieresisร\['Y]โ Y acuteร\[TP]โ uppercase thornร\[ss]โ lowercase sharp sร\[a]` โ a graveรก\['a]โ a acuteรข\[^a]โ a circumflexรฃ\[~a]โ a tildeรค\[:a]โ a dieresisรฅ\[oa]โ a ringรฆ\[ae]โ ae ligatureรง\[,c]โ c cedillaรจ\[e]` โ e graveรฉ\['e]โ e acuteรช\[^e]โ e circumflexรซ\[:e]โ e dieresisรฌ\[i]` โ i graveรญ\['i]โ e acuteรฎ\[^i]โ i circumflexรฏ\[:i]โ i dieresisรฐ\[Sd]โ lowercase ethรฑ\[~n]โ n tildeรฒ\[o]` โ o graveรณ\['o]โ o acuteรด\[^o]โ o circumflexรต\[~o]โ o tildeรถ\[:o]โ o dieresisรท\[di]โ division signรธ\[/o]โ o slashรน\[u]` โ u graveรบ\['u]โ u acuteรป\[^u]โ u circumflexรผ\[:u]โ u dieresisรฝ\['y]โ y acuteรพ\[Tp]โ lowercase thornรฟ\[:y]โ y dieresis
โจ Special character escape forms โจ
Glyphs that lack a character code in the basic Latin repertoire to directly represent them are entered by one of several special character escape forms. Such glyphs can be simple or composite, and accessed either by name or numerically by code point. Code points and combining properties are determined by character encoding standards, whereas glyph names as used here originated in AT&T troff special character escape sequences. Predefined glyph names use only characters in the basic Latin repertoire. ๐ง
\(glโ is a special character escape sequence for the glyph with the two-character namegl. This is the original syntax form supported by AT&T troff. The acute accent,\(aa, is an example.\C'glyph-name'โ is a special character escape sequence for glyph-name, which can be of arbitrary length. The delimiter, shown here as a neutral apostrophe, can be any character not occurring in glyph-name. This syntax form was introduced in later versions of AT&T device-independent troff. The foregoing acute accent example can be expressed as\C'aa'.\[glyph-name]โ is a special character escape sequence for glyph-name, which can be of arbitrary length but must not contain a closing square bracket โ]โ. (No glyph names predefined by groff employ โ]โ.) The foregoing acute accent example can be expressed in in GNU troff as\[aa].
\C'c' and \[c] are not synonyms for the ordinary character โcโ, but request the special character named โ\cโ. For example, โ\[a]โ is not โaโ, but rather a special character with the internal glyph name (used in font description files and diagnostic messages) \a, which is typically undefined. The only such glyph name groff predefines is the minus sign, which can therefore be accessed as \C'-' or \[-]. ๐
\[base-char composite-1 composite-2 ... composite-n]โ is a composite glyph. Glyphs like a lowercase โeโ with an acute accent, as in the word โcafรฉโ, can be expressed as\[e aa].
Normally, the formatter advances the drawing position after setting a special character, as it does for ordinary ones. groffโs composite request designates a special character as combining, suppressing advancement. ๐ฆ
You can obtain a report of mappings defined by the composite request on the standard error stream with the pcomposite request. The composite.tmac macro file, loaded automatically by the default troffrc, maps certain special characters to combining characters as shown in subsection โAccentsโ below.
Unicode encodes far more characters than groff has names for; special character escape forms based on numerical code points enable access to any of them. Frequently used glyphs or glyph combinations can be stored in strings, and new glyph names can be created ad hoc with the char request; see groff(7). ๐ฅ
\[unnnn[n[n]]]โ is a Unicode numeric special character escape sequence. Any Unicode code point can be accessed with four to six hexadecimal digits, with hexadecimal letters accepted in uppercase form only. Thus,\[u02DA]accesses the (spacing) ring accent, producing โหโ.
Unicode code points can be composed as well; when they are, GNU troff requires NFD (Normalization Form D), where all Unicode glyphs are maximally decomposed. (Exception: precomposed characters in the Latin-1 supplement described above are also accepted. Do not count on this exception remaining in a future GNU troff that accepts UTF-8 input directly.) Thus, GNU troff accepts โcaf\['e]โ, โcaf\[e aa]โ, and โcaf\[u0065_0301]โ, as ways to input โcafรฉโ. (Due to its legacy 8-bit encoding compatibility, at present it also accepts โcaf\[u00E9]โ on ISO Latin-1 systems.) ๐ธ
\[ubase-char[_combining-component]...]โ constructs a composite glyph from Unicode numeric special character escape sequences. The code points of the base glyph and the combining components are each expressed in hexadecimal, with an underscore (_) separating each component. Thus,\[u006E_0303]produces โรฑโ.\[charnnn]โ expresses an eight-bit code point where nnn is the code point of the character, a decimal number between0and255without leading zeroes. This legacy numeric special character escape sequence is used to map characters onto glyphs via thetrinrequest in macro files loaded bygrotty(1). ๐
โจ Glyph tables โจ
Okay bestie, this is the big iconic glyph-name inventory, served in table form in the original. The columns mean this:
- Output โ shows the glyph as it appears on the device used to render this document; although it can have a notably different shape on other devices (and is subject to user-directed translation and replacement), groff attempts reasonable equivalency on all output devices.
- Input โ shows the groff character (ordinary or special) that normally produces the glyph. Some code points have multiple glyph names.
- Unicode โ is the code point notation for the glyph or combining glyph sequence as described in subsection โSpecial character escape formsโ above. It corresponds to the standard notation for Unicode short identifiers such that groffโs
unnnnis equivalent to UnicodeโsU+nnnn. - Notes โ describes the glyph, elucidating the mnemonic value of the glyph name where possible.
A plus sign โ+โ indicates that the glyph name appears in the AT&T troff userโs manual, CSTR #54 (1992 revision). When using the AT&T special character syntax \(xx, widespread portability can be expected from such names. ๐ฅ
Entries marked with โ***โ denote glyphs used for mathematical purposes. On typesetting devices, such glyphs are typically drawn from a special font (see groff_font(5)). Often, such glyphs lack bold or italic style forms or have metrics that look incongruous in ordinary prose. A few that are not uncommon in running text have โtext variantsโ, which should work better in that context. Conversely, a handful of glyphs that are normally drawn from a text font may be required in mathematical expressions. Both sets of exceptions are noted in the tables where they appear (โLogical symbolsโ and โMathematical symbolsโ). ๐ง
Each row below goes: Output / Input / Unicode โ notes.
๐ค Basic Latin ๐ค
Apart from basic Latin characters with special mappings, described in subsection โFundamental character setโ above, a few others in that range have special character glyph names. These were defined for ease of input on non-U.S. keyboards lacking keycaps for them, or for symmetry with other special character glyph names serving a similar purpose.
The vertical bar is overloaded; the \[ba] and \[or] escape sequences may render differently. See subsection โMathematical symbolsโ below for unstyled variants of the plus, minus, and equals signs normally drawn from this range. ๐
- Output
"/ Input\[dq]/ Unicodeu0022โ neutral double quote - Output
#/ Input\[sh]/ Unicodeu0023โ number sign - Output
$/ Input\[Do]/ Unicodeu0024โ dollar sign - Output
'/ Input\[aq]/ Unicodeu0027โ apostrophe, neutral single quote - Output
// Input\[sl]/ Unicodeu002Fโ slash, solidus + - Output
@/ Input\[at]/ Unicodeu0040โ at sign - Output
[/ Input\[lB]/ Unicodeu005Bโ left square bracket - Output
\/ Input\[rs]/ Unicodeu005Cโ reverse solidus - Output
]/ Input\[rB]/ Unicodeu005Dโ right square bracket - Output
^/ Input\[ha]/ Unicodeu005Eโ circumflex, caret, โhatโ - Output
{/ Input\[lC]/ Unicodeu007Bโ left brace - Output
|/ Input|/ Unicodeu007Cโ bar + - Output
|/ Input\[ba]/ Unicodeu007Cโ bar - Output
|/ Input\[or]/ Unicodeu007Cโ bitwise or + - Output
}/ Input\[rC]/ Unicodeu007Dโ right brace - Output
~/ Input\[ti]/ Unicodeu007Eโ tilde
๐ธ Supplementary Latin letters ๐ธ
Historically, \[ss] developed from a ligature of โszโ. An uppercase form is available as \[u1E9E], but in the German language it is of specialized use; ร does not normally uppercase-transform to it, but rather to โSSโ. โLowercase f with hookโ is also used as a function symbol; see subsection โMathematical symbolsโ below. ๐ฆ
- Output
ร/ Input\[-D]/ Unicodeu00D0โ uppercase eth - Output
รฐ/ Input\[Sd]/ Unicodeu00F0โ lowercase eth - Output
ร/ Input\[TP]/ Unicodeu00DEโ uppercase thorn - Output
รพ/ Input\[Tp]/ Unicodeu00FEโ lowercase thorn - Output
ร/ Input\[ss]/ Unicodeu00DFโ lowercase sharp s - Output
ฤฑ/ Input\[.i]/ Unicodeu0131โ i without tittle - Output
ศท/ Input\[.j]/ Unicodeu0237โ j without tittle - Output
ฦ/ Input\[Fn]/ Unicodeu0192โ lowercase f with hook, function - Output
ล/ Input\[/L]/ Unicodeu0141โ L with stroke - Output
ล/ Input\[/l]/ Unicodeu0142โ l with stroke - Output
ร/ Input\[/O]/ Unicodeu00D8โ O with stroke - Output
รธ/ Input\[/o]/ Unicodeu00F8โ o with stroke
๐ Ligatures and digraphs ๐
- Output
ff/ Input\[ff]/ Unicodeu0066_0066โ ff ligature + - Output
fi/ Input\[fi]/ Unicodeu0066_0069โ fi ligature + - Output
fl/ Input\[fl]/ Unicodeu0066_006Cโ fl ligature + - Output
ffi/ Input\[Fi]/ Unicodeu0066_0066_0069โ ffi ligature + - Output
ffl/ Input\[Fl]/ Unicodeu0066_0066_006Cโ ffl ligature + - Output
ร/ Input\[AE]/ Unicodeu00C6โ AE ligature - Output
รฆ/ Input\[ae]/ Unicodeu00E6โ ae ligature - Output
ล/ Input\[OE]/ Unicodeu0152โ OE ligature - Output
ล/ Input\[oe]/ Unicodeu0153โ oe ligature - Output
ฤฒ/ Input\[IJ]/ Unicodeu0132โ IJ digraph - Output
ฤณ/ Input\[ij]/ Unicodeu0133โ ij digraph
๐ Accents ๐
The non-combining code point in parentheses is used when the special character occurs in isolation (compare caf\[e aa] and caf\[aa]e). ๐ญ
- Output
ห/ Input\[a"]/ Unicodeu030B (u02DD)โ double acute accent - Output
ยฏ/ Input\[a-]/ Unicodeu0304 (u00AF)โ macron accent - Output
ห/ Input\[a.]/ Unicodeu0307 (u02D9)โ dot accent - Output
^/ Input\[a^]/ Unicodeu0302 (u005E)โ circumflex accent - Output
ยด/ Input\[aa]/ Unicodeu0301 (u00B4)โ acute accent + - Output
`/ Input\[ga]/ Unicodeu0300 (u0060)โ grave accent + - Output
ห/ Input\[ab]/ Unicodeu0306 (u02D8)โ breve accent - Output
ยธ/ Input\[ac]/ Unicodeu0327 (u00B8)โ cedilla accent - Output
ยจ/ Input\[ad]/ Unicodeu0308 (u00A8)โ dieresis accent - Output
ห/ Input\[ah]/ Unicodeu030C (u02C7)โ caron accent - Output
ห/ Input\[ao]/ Unicodeu030A (u02DA)โ ring accent - Output
~/ Input\[a~]/ Unicodeu0303 (u007E)โ tilde accent - Output
ห/ Input\[ho]/ Unicodeu0328 (u02DB)โ hook accent
๐ Accented characters ๐
All of these glyphs can be composed using combining glyph names as described in subsection โSpecial character escape formsโ above; the names below are short aliases for convenience. ๐ซถ
- Output
ร/ Input\['A]/ Unicodeu0041_0301โ A acute - Output
ฤ/ Input\['C]/ Unicodeu0043_0301โ C acute - Output
ร/ Input\['E]/ Unicodeu0045_0301โ E acute - Output
ร/ Input\['I]/ Unicodeu0049_0301โ I acute - Output
ร/ Input\['O]/ Unicodeu004F_0301โ O acute - Output
ร/ Input\['U]/ Unicodeu0055_0301โ U acute - Output
ร/ Input\['Y]/ Unicodeu0059_0301โ Y acute - Output
รก/ Input\['a]/ Unicodeu0061_0301โ a acute - Output
ฤ/ Input\['c]/ Unicodeu0063_0301โ c acute - Output
รฉ/ Input\['e]/ Unicodeu0065_0301โ e acute - Output
รญ/ Input\['i]/ Unicodeu0069_0301โ i acute - Output
รณ/ Input\['o]/ Unicodeu006F_0301โ o acute - Output
รบ/ Input\['u]/ Unicodeu0075_0301โ u acute - Output
รฝ/ Input\['y]/ Unicodeu0079_0301โ y acute - Output
ร/ Input\[:A]/ Unicodeu0041_0308โ A dieresis - Output
ร/ Input\[:E]/ Unicodeu0045_0308โ E dieresis - Output
ร/ Input\[:I]/ Unicodeu0049_0308โ I dieresis - Output
ร/ Input\[:O]/ Unicodeu004F_0308โ O dieresis - Output
ร/ Input\[:U]/ Unicodeu0055_0308โ U dieresis - Output
ลธ/ Input\[:Y]/ Unicodeu0059_0308โ Y dieresis - Output
รค/ Input\[:a]/ Unicodeu0061_0308โ a dieresis - Output
รซ/ Input\[:e]/ Unicodeu0065_0308โ e dieresis - Output
รฏ/ Input\[:i]/ Unicodeu0069_0308โ i dieresis - Output
รถ/ Input\[:o]/ Unicodeu006F_0308โ o dieresis - Output
รผ/ Input\[:u]/ Unicodeu0075_0308โ u dieresis - Output
รฟ/ Input\[:y]/ Unicodeu0079_0308โ y dieresis - Output
ร/ Input\[^A]/ Unicodeu0041_0302โ A circumflex - Output
ร/ Input\[^E]/ Unicodeu0045_0302โ E circumflex - Output
ร/ Input\[^I]/ Unicodeu0049_0302โ I circumflex - Output
ร/ Input\[^O]/ Unicodeu004F_0302โ O circumflex - Output
ร/ Input\[^U]/ Unicodeu0055_0302โ U circumflex - Output
รข/ Input\[^a]/ Unicodeu0061_0302โ a circumflex - Output
รช/ Input\[^e]/ Unicodeu0065_0302โ e circumflex - Output
รฎ/ Input\[^i]/ Unicodeu0069_0302โ i circumflex - Output
รด/ Input\[^o]/ Unicodeu006F_0302โ o circumflex - Output
รป/ Input\[^u]/ Unicodeu0075_0302โ u circumflex - Output
ร/ Input\[A]/ **Unicode**u0041_0300` โ A grave - Output
ร/ Input\[E]/ **Unicode**u0045_0300` โ E grave - Output
ร/ Input\[I]/ **Unicode**u0049_0300` โ I grave - Output
ร/ Input\[O]/ **Unicode**u004F_0300` โ O grave - Output
ร/ Input\[U]/ **Unicode**u0055_0300` โ U grave - Output
ร/ Input\[a]/ **Unicode**u0061_0300` โ a grave - Output
รจ/ Input\[e]/ **Unicode**u0065_0300` โ e grave - Output
รฌ/ Input\[i]/ **Unicode**u0069_0300` โ i grave - Output
รฒ/ Input\[o]/ **Unicode**u006F_0300` โ o grave - Output
รน/ Input\[u]/ **Unicode**u0075_0300` โ u grave - Output
ร/ Input\[~A]/ Unicodeu0041_0303โ A tilde - Output
ร/ Input\[~N]/ Unicodeu004E_0303โ N tilde - Output
ร/ Input\[~O]/ Unicodeu004F_0303โ O tilde - Output
รฃ/ Input\[~a]/ Unicodeu0061_0303โ a tilde - Output
รฑ/ Input\[~n]/ Unicodeu006E_0303โ n tilde - Output
รต/ Input\[~o]/ Unicodeu006F_0303โ o tilde - Output
ล/ Input\[vS]/ Unicodeu0053_030Cโ S caron - Output
ลก/ Input\[vs]/ Unicodeu0073_030Cโ s caron - Output
ลฝ/ Input\[vZ]/ Unicodeu005A_030Cโ Z caron - Output
ลพ/ Input\[vz]/ Unicodeu007A_030Cโ z caron - Output
ร/ Input\[,C]/ Unicodeu0043_0327โ C cedilla - Output
รง/ Input\[,c]/ Unicodeu0063_0327โ c cedilla - Output
ร/ Input\[oA]/ Unicodeu0041_030Aโ A ring - Output
รฅ/ Input\[oa]/ Unicodeu0061_030Aโ a ring
๐ฆ Quotation marks ๐ฆ
The neutral double quote, useful in documenting programming languages, is also available as a special character for convenient embedding in macro arguments; see subsection โFundamental character setโ above.
like, picking right back up with the quote glyphs โ here's the rest of the squad, bestie ๐
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ \[Bq] u201E low double comma quote
โ \[bq] u201A low single comma quote
โ \[lq] u201C left double quote
โ \[rq] u201D right double quote
โ \[oq] u2018 single opening (left) quote
โ \[cq] u2019 single closing (right) quote
' \[aq] u0027 apostrophe, neutral single quote
" " u0022 neutral double quote
" \[dq] u0022 neutral double quote
ยซ \[Fo] u00AB left double chevron
ยป \[Fc] u00BB right double chevron
โน \[fo] u2039 left single chevron
โบ \[fc] u203A right single chevron
โจ PUNCTUATION โจ
okay so tiny rant first ๐ โ the Unicode name for U+00B7 is "middle dot", which is unfortunately confusable with the groff mnemonic for the visually similar but semantically completely different multiplication dot. like, they look the same and mean different things, which is the worst possible vibe. see the "Mathematical symbols" subsection below for the tea โ
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ยก \[r!] u00A1 inverted exclamation mark
ยฟ \[r?] u00BF inverted question mark
ยท \[pc] u00B7 centered period
โ \[em] u2014 emโdash +
โ \[en] u2013 enโdash
โ - u2010 hyphen +
โ \[hy] u2010 hyphen +
๐ BRACKETS ๐
okay this one's a whole saga so buckle up ๐ซถ
on typesetting devices, the bracket extensions are fontโinvariant glyphs โ meaning they render exactly the same way no matter what font you're in (they get drawn with a drawing escape sequence). on terminals? nah, they are not font-invariant, and groff maps them arbitrarily to U+23AA ("curly bracket extension"). and in AT&T troff, bestie, only one glyph was even available to vertically extend brackets, braces, and parentheses: \(bv. one. iconic in a tragic way ๐
also not all devices supply bracket pieces that can be piled up with \b, because of the restrictions of the formatter's piling algorithm. so the following macro offers a more general bracketโbuilding solution, periodt:
.\" Make a pile centered vertically 0.5em above the baseline.
.\" The first argument is placed at the top.
.\" The pile is returned in string 'pile'.
.eo
.de pile-make
. nr pile-wd 0
. nr pile-ht 0
. ds pile-args
.
. nr pile-# \n[.$]
. while \n[pile-#] \{\
. nr pile-wd (\n[pile-wd] >? \w'\$[\n[pile-#]]')
. nr pile-ht +(\n[rst] - \n[rsb])
. as pile-args \v'\n[rsb]u'\"
. as pile-args \Z'\$[\n[pile-#]]'\"
. as pile-args \v'-\n[rst]u'\"
. nr pile-# -1
. \}
.
. ds pile \v'(-0.5m + (\n[pile-ht]u / 2u))'\"
. as pile \*[pile-args]\"
. as pile \v'((\n[pile-ht]u / 2u) + 0.5m)'\"
. as pile \h'\n[pile-wd]u'\"
..
.ec
further complicating matters ๐ญ โ some glyphs representing bracket pieces in AT&T troff can also be used for other mathematical symbols. for example, \(lf and \(rf provide the floor operator. and some output devices, like dvi, don't unify such glyphs. so for this reason, the glyphs \[lf], \[rf], \[lc], and \[rc] are not unified with similarโlooking bracket pieces. in groff, only glyphs with long names are guaranteed to pile up correctly for all devices โ provided those glyphs are available. lowkey important, don't skip it ๐
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
[ [ u005B left square bracket
[ \[lB] u005B left square bracket
] ] u005D right square bracket
] \[rB] u005D right square bracket
{ { u007B left brace
{ \[lC] u007B left brace
} } u007D right brace
} \[rC] u007D right brace
โจ \[la] u27E8 left angle bracket
โฉ \[ra] u27E9 right angle bracket
โช \[bv] u23AA brace vertical extension + ***
โช \[braceex] u23AA brace vertical extension
โก \[bracketlefttp] u23A1 left square bracket top
โข \[bracketleftex] u23A2 left square bracket extension
โฃ \[bracketleftbt] u23A3 left square bracket bottom
โค \[bracketrighttp] u23A4 right square bracket top
โฅ \[bracketrightex] u23A5 right square bracket extension
โฆ \[bracketrightbt] u23A6 right square bracket bottom
โง \[lt] u23A7 left brace top +
โจ \[lk] u23A8 left brace middle +
โฉ \[lb] u23A9 left brace bottom +
โง \[bracelefttp] u23A7 left brace top
โจ \[braceleftmid] u23A8 left brace middle
โฉ \[braceleftbt] u23A9 left brace bottom
โช \[braceleftex] u23AA left brace extension
โซ \[rt] u23AB right brace top +
โฌ \[rk] u23AC right brace middle +
โญ \[rb] u23AD right brace bottom +
โซ \[bracerighttp] u23AB right brace top
โฌ \[bracerightmid] u23AC right brace middle
โญ \[bracerightbt] u23AD right brace bottom
โช \[bracerightex] u23AA right brace extension
โ \[parenlefttp] u239B left parenthesis top
โ \[parenleftex] u239C left parenthesis extension
โ \[parenleftbt] u239D left parenthesis bottom
โ \[parenrighttp] u239E right parenthesis top
โ \[parenrightex] u239F right parenthesis extension
โ \[parenrightbt] u23A0 right parenthesis bottom
โก๏ธ ARROWS โก๏ธ
pointy things, all of them, here's the lineup ๐น
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ \[<-] u2190 horizontal arrow left +
โ \[->] u2192 horizontal arrow right +
โ \[<>] u2194 bidirectional horizontal arrow
โ \[da] u2193 vertical arrow down +
โ \[ua] u2191 vertical arrow up +
โ \[va] u2195 bidirectional vertical arrow
โ \[lA] u21D0 horizontal double arrow left
โ \[rA] u21D2 horizontal double arrow right
โ \[hA] u21D4 bidirectional horizontal double arrow
โ \[dA] u21D3 vertical double arrow down
โ \[uA] u21D1 vertical double arrow up
โ \[vA] u21D5 bidirectional vertical double arrow
โฏ \[an] u23AF horizontal arrow extension
๐ RULES AND LINES ๐
on typesetting devices, the fontโinvariant glyphs (see the "Brackets" subsection above ๐) \[br], \[ul], and \[rn] form corners when they're adjacent โ so yes, you can straight up build boxes with them. slay. on terminal devices though, they're mapped as shown in the table. and just so you know, the Unicodeโderived names of these three glyphs are approximations.
the ordinary character _ accesses the underscore glyph in a font; \[ul], by contrast, may be fontโinvariant on typesetting devices. two different guys, two different jobs ๐ซก
the baseline rule \[ru] is a fontโinvariant glyph, namely a rule of oneโhalf em.
in AT&T troff, \[rn] also served as a one en extension of the square root symbol. groff favors \[radicalex] for this purpose instead โ see the "Mathematical symbols" subsection below.
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
| | u007C bar
| \[ba] u007C bar
โ \[br] u2502 box rule +
_ _ u005F underscore, low line +
_ \[ul] โโโ underrule +
โพ \[rn] u203E overline +
_ \[ru] โโโ baseline rule +
ยฆ \[bb] u00A6 broken bar
/ / u002F slash, solidus +
/ \[sl] u002F slash, solidus +
\ \[rs] u005C reverse solidus
๐ TEXT MARKERS ๐
lil symbols that mean stuff โ bullets, daggers, hands pointing at things, the works. so useful, so underrated ๐
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ \[ci] u25CB circle +
โข \[bu] u2022 bullet +
โ \[dg] u2020 dagger +
โก \[dd] u2021 double dagger +
โ \[lz] u25CA lozenge, diamond
โก \[sq] u25A1 square +
ยถ \[ps] u00B6 pilcrow sign
ยง \[sc] u00A7 section sign +
โ \[lh] u261C hand pointing left +
โ \[rh] u261E hand pointing right +
@ @ u0040 at sign
@ \[at] u0040 at sign
# # u0023 number sign
# \[sh] u0023 number sign
โต \[CR] u21B5 carriage return
โ \[OK] u2713 check mark
โ๏ธ LEGAL SYMBOLS โ๏ธ
the copyright squad, the trademark crew, all the โข energy you could ever want ๐
heads up bestie: the Bell System logo is not supported in groff. rip to that one specifically ๐ญ
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ยฉ \[co] u00A9 copyright sign +
ยฎ \[rg] u00AE registered sign +
โข \[tm] u2122 trade mark sign
\[bs] โโโ Bell System logo +
๐ฐ Currency symbols ๐ฐ
Money money money bestie, it's giving โจ capitalism era โจ โ here's your bag of coin glyphs! Real talk: yes, you can literally just type $ for a dollar sign, but there's also a fancy \[Do] input name that spits out the exact same thing, so pick your fighter ๐ซถ. Oh and heads up, the little + and *** footnote markers in the table? Those are explained back up in Description โ iykyk, no need to re-litigate it here ๐
.
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
$ $ u0024 dollar sign
$ \[Do] u0024 dollar sign
ยข \[ct] u00A2 cent sign +
โฌ \[eu] u20AC Euro sign
โฌ \[Eu] u20AC variant Euro sign
ยฅ \[Ye] u00A5 yen sign
ยฃ \[Po] u00A3 pound sign
ยค \[Cs] u00A4 currency sign
๐ Units ๐
Degrees, per-mille, arc minutes, arc seconds, and the little ordinal indicators โ it's giving "measurement girlie" energy ๐. Note the degree sign and the foot/arc-minute mark both got that + friend, and the micro sign is the actual ยต looking all cute. Slay.
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ยฐ \[de] u00B0 degree sign +
โฐ \[%0] u2030 per thousand, per mille sign
โฒ \[fm] u2032 arc minute sign, foot mark +
โณ \[sd] u2033 arc second sign
ยต \[mc] u00B5 micro sign
ยช \[Of] u00AA feminine ordinal indicator
ยบ \[Om] u00BA masculine ordinal indicator
๐ง Logical symbols ๐ง
okay so the not sign besties? The variants of it may differ in appearance or spacing depending on your device and the font you selected, so like, don't come for me if it's a lil' off ๐ญ. Also โ and this is highkey fascinating โ Unicode does not encode a discrete "bitwise or" sign. So on typesetting devices, it gets drawn shorter than the bar, about the same height as a capital letter. And terminal devices? They straight up unify \[ba] and \[or], so don't expect them to be different there, fr fr ๐.
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โง \[AN] u2227 logical and
โจ \[OR] u2228 logical or
ยฌ \[no] u00AC logical not + ***
ยฌ \[tno] u00AC text variant of \[no]
โ \[te] u2203 there exists
โ \[fa] u2200 for all
โ \[st] u220B such that
โด \[3d] u2234 therefore
โด \[tf] u2234 therefore
| | u007C bar +
| \[or] u007C bitwise or +
๐งฎ Mathematical symbols ๐งฎ
First off, quick cross-reference bestie: \[Fn] also appears in subsection "Supplementary Latin letters" above, so if it looks familiar, that's why ๐ฆ.
Now for the tea โ: the plus-minus, multiplication, and division signs โ \[+-], \[mu], and \[di] โ are normally drawn from the special font, but they have text font variants. Meanwhile the plus, minus, and equals signs are normally drawn from the text fonts, but they have special font variants. And yeah, variants may differ in appearance or spacing depending on the device and font selected. It's giving "it's complicated" ๐
.
Historical lore drop ๐ (and this is iconic, pay attention): In AT&T troff, \(rn ("root en extender") served as the horizontal extension of the radical (square root) sign, \(sr, and was drawn at the maximum height of the typeface's bounding box โ enabling it to double as an overline (see subsection "Rules and lines" above). BUT โ and here's the catch โ a contemporary font's radical sign might not ascend to such an extreme ๐. In groff, you can instead use \[radicalex] to continue the radical sign \[sr]; these special characters are intended for use with text fonts. And \[sqrt] and \[sqrtex] are their unstyled counterparts. Periodt. ๐
Fractions & superscripts besties:
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ยฝ \[12] u00BD one half symbol +
ยผ \[14] u00BC one quarter symbol +
ยพ \[34] u00BE three quarters symbol +
โ
\[18] u215B one eighth symbol
โ
\[38] u215C three eighths symbol
โ
\[58] u215D five eighths symbol
โ
\[78] u215E seven eighths symbol
ยน \[S1] u00B9 superscript one
ยฒ \[S2] u00B2 superscript two
ยณ \[S3] u00B3 superscript three
The math operators (plus / minus / times / divide core four):
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
+ + u002B plus
+ \[pl] u002B special variant of plus + ***
- \[-] u002D minus
โ \[mi] u2212 special variant of minus + ***
โ \[-+] u2213 minusโplus
ยฑ \[+-] u00B1 plusโminus + ***
ยฑ \[t+-] u00B1 text variant of \[+-]
โ
\[md] u22C5 multiplication dot
ร \[mu] u00D7 multiplication sign + ***
ร \[tmu] u00D7 text variant of \[mu]
โ \[c*] u2297 circled times
โ \[c+] u2295 circled plus
รท \[di] u00F7 division sign, obelus + ***
รท \[tdi] u00F7 text variant of \[di]
โ \[f/] u2044 fraction slash
* * u002A asterisk
โ \[**] u2217 mathematical asterisk +
Comparisons & relations (the "is it bigger tho" club):
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โค \[<=] u2264 less than or equal to +
โฅ \[>=] u2265 greater than or equal to +
โช \[<<] u226A much less than
โซ \[>>] u226B much greater than
= = u003D equals
= \[eq] u003D special variant of equals + ***
โ \[!=] u003D_0338 not equals +
โก \[==] u2261 equivalent +
โข \[ne] u2261_0338 not equivalent
โ
\[=~] u2245 approximately equal to
โ \[|=] u2243 asymptotically equal to +
~ \[ti] u007E tilde +
โผ \[ap] u223C similar to, tilde operator +
โ \[~~] u2248 almost equal to
โ \[~=] u2248 almost equal to
โ \[pt] u221D proportional to +
Set theory slay (โฉ and โช are literally the girlboss icons):
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
\[es] u2205 empty set +
โ \[mo] u2208 element of a set +
โ \[nm] u2208_0338 not element of set
โ \[sb] u2282 proper subset +
โ \[nb] u2282_0338 not subset
โ \[sp] u2283 proper superset +
โ
\[nc] u2283_0338 not superset
โ \[ib] u2286 subset or equal +
โ \[ip] u2287 superset or equal +
โฉ \[ca] u2229 intersection, cap +
โช \[cu] u222A union, cup +
Geometry, calculus & the ceiling/floor girlies:
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ \[/_] u2220 angle
โฅ \[pp] u22A5 perpendicular
โซ \[is] u222B integral +
โซ \[integral] u222B integral ***
โ \[sum] u2211 summation ***
โ \[product] u220F product ***
โ \[coproduct] u2210 coproduct ***
โ \[gr] u2207 gradient +
โ \[sr] u221A radical sign, square root +
โพ \[rn] u203E overline +
โพ \[radicalex] โโโ radical extension
โ \[sqrt] u221A radical sign, square root ***
โพ \[sqrtex] โโโ radical extension ***
โ \[lc] u2308 left ceiling +
โ \[rc] u2309 right ceiling +
โ \[lf] u230A left floor +
โ \[rf] u230B right floor +
Misc math icons (infinity, aleph, blackletter, etc. โ main character energy โจ):
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ \[if] u221E infinity +
โต \[Ah] u2135 aleph symbol
ฦ \[Fn] u0192 lowercase f with hook, function
โ \[Im] u2111 blackletter I, imaginary part
โ \[Re] u211C blackletter R, real part
โ \[wp] u2118 Weierstrass p
โ \[pd] u2202 partial differential
โ \[-h] u210F h bar
โ \[hbar] u210F h bar
๐ฌ๐ท Greek glyphs ๐ฌ๐ท
Okay so before you go thinking this is for writing cute Greek love letters โ no bestie, these glyphs are intended for technical use, not for typesetting Greek language text ๐ซถ. Normally the uppercase letters have upright shape, and the lowercase ones are slanted. And for those slanted lowercase ones, they include in parentheses under "Unicode" the more appropriate code points from the Mathematical Alphanumeric Symbols block of the Supplementary Multilingual Plane. It's giving "extra but correct" ๐ .
Output Input Unicode Notes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ฮ \[*A] u0391 uppercase alpha +
ฮ \[*B] u0392 uppercase beta +
ฮ \[*G] u0393 uppercase gamma +
ฮ \[*D] u0394 uppercase delta +
ฮ \[*E] u0395 uppercase epsilon +
ฮ \[*Z] u0396 uppercase zeta +
ฮ \[*Y] u0397 uppercase eta +
ฮ \[*H] u0398 uppercase theta +
ฮ \[*I] u0399 uppercase iota +
ฮ \[*K] u039A uppercase kappa +
ฮ \[*L] u039B uppercase lambda +
ฮ \[*M] u039C uppercase mu +
ฮ \[*N] u039D uppercase nu +
ฮ \[*C] u039E uppercase xi +
ฮ \[*O] u039F uppercase omicron +
ฮ \[*P] u03A0 uppercase pi +
ฮก \[*R] u03A1 uppercase rho +
ฮฃ \[*S] u03A3 uppercase sigma +
ฮค \[*T] u03A4 uppercase tau +
ฮฅ \[*U] u03A5 uppercase upsilon +
ฮฆ \[*F] u03A6 uppercase phi +
ฮง \[*X] u03A7 uppercase chi +
ฮจ \[*Q] u03A8 uppercase psi +
ฮฉ \[*W] u03A9 uppercase omega +
Lowkey obsessed with the fact that \[*Y] is eta and \[*H] is theta โ the letter mapping is not vibing the way you'd expect, so bookmark this table bestie ๐ฆ๐.
still in the Greek table, bestie โ no heading repeat, just rows โ and yes, the trailing + is literally part of the row, so donโt come for me ๐
ฮฑโ input\[*a]โ Unicodeu03B1(u1D6FC) โ lowercase alpha +ฮฒโ input\[*b]โ Unicodeu03B2(u1D6FD) โ lowercase beta +ฮณโ input\[*g]โ Unicodeu03B3(u1D6FE) โ lowercase gamma +ฮดโ input\[*d]โ Unicodeu03B4(u1D6FF) โ lowercase delta +ฮตโ input\[*e]โ Unicodeu03B5(u1D700) โ lowercase epsilon +ฮถโ input\[*z]โ Unicodeu03B6(u1D701) โ lowercase zeta +ฮทโ input\[*y]โ Unicodeu03B7(u1D702) โ lowercase eta +ฮธโ input\[*h]โ Unicodeu03B8(u1D703) โ lowercase theta +ฮนโ input\[*i]โ Unicodeu03B9(u1D704) โ lowercase iota +ฮบโ input\[*k]โ Unicodeu03BA(u1D705) โ lowercase kappa +ฮปโ input\[*l]โ Unicodeu03BB(u1D706) โ lowercase lambda +ฮผโ input\[*m]โ Unicodeu03BC(u1D707) โ lowercase mu +ฮฝโ input\[*n]โ Unicodeu03BD(u1D708) โ lowercase nu +ฮพโ input\[*c]โ Unicodeu03BE(u1D709) โ lowercase xi +ฮฟโ input\[*o]โ Unicodeu03BF(u1D70A) โ lowercase omicron +ฯโ input\[*p]โ Unicodeu03C0(u1D70B) โ lowercase pi +ฯโ input\[*r]โ Unicodeu03C1(u1D70C) โ lowercase rho +ฯโ input\[*s]โ Unicodeu03C3(u1D70E) โ lowercase sigma +ฯโ input\[*t]โ Unicodeu03C4(u1D70F) โ lowercase tau +ฯโ input\[*u]โ Unicodeu03C5(u1D710) โ lowercase upsilon +ฯโ input\[*f]โ Unicodeu03D5(u1D717) โ lowercase phi +ฯโ input\[*x]โ Unicodeu03C7(u1D712) โ lowercase chi +ฯโ input\[*q]โ Unicodeu03C8(u1D713) โ lowercase psi +ฯโ input\[*w]โ Unicodeu03C9(u1D714) โ lowercase omega +
and the variant girlies, living their best alternate-glyph lives:
ฯตโ input\[+e]โ Unicodeu03F5(u1D716) โ variant epsilon (lunate)ฯโ input\[+h]โ Unicodeu03D1(u1D717) โ variant theta (cursive form)ฯโ input\[+p]โ Unicodeu03D6(u1D717) โ variant pi (similar to omega)ฯโ input\[+f]โ Unicodeu03C6(u1D71B) โ variant phi (curly shape)ฯโ input\[ts]โ Unicodeu03C2(u1D70D) โ terminal lowercase sigma +
๐ Playing card symbols ๐
same energy, different suits โ iconic honestly:
โฃโ input\[CL]โ Unicodeu2663โ solid club suitโโ input\[SP]โ Unicodeu2660โ solid spade suitโฅโ input\[HE]โ Unicodeu2665โ solid heart suitโฆโ input\[DI]โ Unicodeu2666โ solid diamond suit
๐ History ๐
okay, history time, because this is actually so interesting: if you look at the typefaces that AT&T nroff and troff originally had, a bunch of conventions that seem kinda idiosyncratic fifty years later suddenly make sense. (Thereโs more context in the โHistoryโ section of roff(7).) The Teletype Model 37 terminals in the Murray Hill Unix Room used a face based on ASCII, but it gave several code points multiple meanings โ as suggested by that standard. Decimal 34 (") served as a dieresis accent and a neutral double quotation mark; decimal 39 (') as an acute accent, an apostrophe, and a closing (right) single quotation mark; decimal 45 (-) as a hyphen and a minus sign; decimal 94 (^) as a circumflex accent and a caret; decimal 96 (`) as a grave accent and an opening (left) single quotation mark; and decimal 126 (~) as a tilde accent and, with a half-line motion, a swung dash. The Model 37 also bore an optional extended character set offering upright Greek letters and several mathematical symbols; these were documented as early as the kbd(VII) man page of the (First Edition) Unix Programmerโs Manual.
At the time Graphic Systems delivered the C/A/T phototypesetter to AT&T, the ASCII character set was not considered a standard basis for a glyph repertoire by traditional typographers. In the stock Times roman, italic, and bold styles available, several ASCII characters were not present at all, nor was most of the Teletypeโs extended character set. So AT&T commissioned a โspecialโ font to retain their accustomed repertoire.
A representation of the coverage of the C/A/Tโs text fonts follows. The glyph resembling an underscore is a baseline rule, and the one resembling a vertical line is a box rule. In italics, the box rule was not slanted. We also observe that the hyphen and minus sign were already โde-unifiedโ by the fonts provided; a decision whither to map an input - therefore had to be taken.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z โ
โ a b c d e f g h i j k l m n o p q r s t u v w x y z โ
โ 0 1 2 3 4 5 6 7 8 9 fi fl ffi ffl โ
โ ! $ % & ( ) โ โ * + - . , / : ; = ? [ ] โ โ
โ โข โก โ โ _ ยผ ยฝ ยพ ยฐ โ โฒ ยข ยฎ ยฉ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
The special font supplied the missing ASCII and Teletype extended glyphs, among several others. The plus, minus, and equals signs appeared in the special font despite availability in text fonts โto insulate the appearance of equations from the choice of standard [read: text] fontsโ โ a priority since troff was turned to the task of mathematical typesetting as soon as it was developed.
We note that AT&T took the opportunity to de-unify the apostrophe/right single quotation mark from the acute accent (a choice ISO later duplicated in its 8859 series of standards). A slash intended to be mirror-symmetric with the backslash was also included, as was the Bell System logo; we do not attempt to depict the latter.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ฮฑ ฮฒ ฮณ ฮด ฮต ฮถ ฮท ฮธ ฮน ฮบ ฮป ฮผ ฮฝ ฮพ ฮฟ ฯ ฯ ฯ ฯ ฯ ฯ
ฯ ฯ ฯ ฯ โ
โ ฮ ฮ ฮ ฮ ฮ ฮ ฮฃ ฮฅ ฮฆ ฮจ ฮฉ โ
โ " ยด \ ^ _ ` ~ / < > { } # @ + โ = โ โ
โ โฅ โค โก โ โผ โ โ โ โ โ ร รท ยฑ โ โ โ ยฌ โซ โ โ โพ โช โฉ โ โ โ โ โ
โ โ
โ ยง โก โ โ | โ โง โฉ โซ โญ โจ โฌ โช โ โ โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
One ASCII character as rendered by the Model 37 was apparently abandoned. That device printed decimal 124 (|) as a broken vertical line, like Unicode U+00A6 (ยฆ). No equivalent was available on the C/A/T; the box rule \[br], brace vertical extension \[bv], and โorโ operator \[or] were used as contextually appropriate.
Devices supported by AT&T device-independent troff exhibited some differences in glyph detail. For example, on the Autologic APS-5 phototypesetter, the square \(sq became filled in the Times bold face.
๐ Files ๐
The files below are loaded automatically by the default troffrc.
/usr/share/groff/1.24.2/tmac/composite.tmacโ assigns alternate mappings for identifiers after the first in a composite special character escape sequence. See subsection โAccentsโ above./usr/share/groff/1.24.2/tmac/fallbacks.tmacโ defines fallback mappings for Unicode code points such as the increment sign (U+2206) and upper- and lowercase Roman numerals.
๐ Authors ๐
This document was written by James Clark, with additions by Werner Lemberg and Bernd Warken, revised to use tbl(1) by Eric S. Raymond, and largely rewritten by G. Branden Robinson.
๐ See also ๐
- Groff: The GNU Implementation of troff, by Trent A. Fisher and Werner Lemberg, is the primary groff manual. Section โUsing Symbolsโ may be of particular note. You can browse it interactively with
info '(groff) Using Symbols'. - โAn extension to the troff character set for Europeโ, E.G. Keizer, K.J. Simonsen, J. Akkerhuis; EUUG Newsletter, Volume 9, No. 2, Summer 1989
- The Unicode Standard
- โ7-bit Character Setsโ by Tuomas Salste documents the inherent ambiguity and configurable code points of the ASCII encoding standard.
- โNroff/Troff Userโs Manualโ by Joseph F. Ossanna, 1976, AT&T Bell Laboratories Computing Science Technical Report No. 54, features two tables that throw light on the glyph repertoire available to โtypesetter roffโ when it was first written. Be careful of re-typeset versions of this document that can be found on the Internet. Some do not accurately represent the original document: several glyphs are obviously missing. More subtly, lowercase Greek letters are rendered upright, not slanted as they appeared in the C/A/Tโs special font and as expected by troff users.
groff_rfc1345(7)describes an alternative set of special character glyph names, which extends and in some cases overrides the definitions listed above.groff(1),troff(1),groff(7)
and thatโs the whole page, bestie ๐ source/version groff 1.24.2, date 2026โ10โ01, page groff_char(7) โ mwah ๐ซถ
๐ฆ where this page comes from
- alpine 3.24: groff-doc 1.24.2-r0 ยท GPL-3.0-or-later
- Copyright 1989-2025 Free Software Foundation, Inc
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms