The Haxial Programming Language
Literal/Quoted Text

Sometimes when writing a program, it is necessary to include a piece of text that the program will use. The program might display the piece of text to the user, or store it in a file, or send it across a network, or some other action. The piece of text can be written directly into the source code by enclosing it in double quotation marks, for example:

"Hello, world!"

The quotation marks are not included in the actual/produced text. Text in double quotation marks is equivalent to a variable of the following type, a read-only reference to read-only constant-size text ("read-only" means capable of being read/used but not modified). "n" represents the size of the text (the size is related to the number of characters in the text).

ReadOnly[Ref[ReadOnly[ConstantSize[TText, n]]]]

Because the quoted text acts as a read-only text variable, the quoted text can be used with commands that accept text variables. For example, consider the "MText.Set" command. It sets the contents/value of a text variable to whatever text you want. It has 2 parameters. Both parameters are references to text variables.

The first parameter is the text variable to set, and the second parameter is some other text variable that the first text variable should be set to. In other words, the first parameter is the destination text variable, and the second parameter is the source text variable, and the source is copied into the destination. The type of the second parameter is:

Ref[ReadOnly[TText]]

And that type is compatible with the aforementioned type of quoted text. Therefore, it is possible to do the following:

var message, TText;
var greeting, TText;
MText.Set message, "Hello, world!";
MText.Set greeting, message;

Note how the quoted text is behaving like a read-only variable containing text.

In some other programming languages, the name "string" is used to mean text. In KL, the name "string" is NOT used. Using the name "string" for text does not make much sense. Call it what it is! Therefore in KL a variable containing text is called a text variable, not a string variable.

Specifying Characters by Name

You might wonder, considering that a piece of text in the source code is required to be enclosed in quotation marks, what happens if you want a quotation mark to appear in the text? It is possible to do this, but the quotation mark in the text cannot be written directly (because a quotation mark would cause the compiler to end the quoted text sequence). Instead the quotation mark must be specified by name, not written directly.

In the following example, the compiler will replace each <quot> with a quotation mark character:

"Delete the file <quot>Bestiality.mpg<quot> permanently?"

Other characters can also be specified by name, such as the ampersand character (a character name listing is provided further ahead). The following 2 examples produce exactly the same text:

"Smith <amp> Wesson"
"Smith & Wesson"

The character names are case-sensitive. For example, "<AMP>" is invalid (there is a character named "amp" but no character named "AMP"). Also note that some characters exist in 2 versions, an uppercase version, and a lowercase version, and both versions have the same character name except with different capitalization. For example, <agrave> produces the lowercase "a" with grave mark (à), while <Agrave> produces the uppercase "A" with grave mark (À).

If you use a character name that is unknown to the compiler, the compiler will display an error message telling you that it does not recognize the character name. The following examples are all invalid:

"Invalid <nachos> character"
"Invalid <foo  bar> character"
"Empty char name <> test"
"Empty char name < > test"

The following characters cannot appear literally/directly in a quoted text sequence, because they would make the source code confusing, ambiguous, unreliable, or disruptive to the compiler. If you want one of these characters to be included in the produced text, you must specify it by name not literally.

NameNumberDescription
quot0x0022Double quotation mark.
lt0x003CLess-than symbol.
gt0x003EGreater-than symbol.
lcbra0x007BLeft curly bracket/brace.
rcbra0x007DRight curly bracket/brace.
br0x000ALine break.
crtn0x000DCarriage return.
tab0x0009Horizontal tab.
0x0060Grave accent.

The apostrophe character (also known as single quotation mark) can appear literally in a quoted text sequence enclosed in double quotation marks, without having to specify it by name. For example:

"Sorry I'm late, I'll leave early to make up for it."

Quoted text cannot directly include a line break in the source code. For example, the following is invalid:

"First line
Second line"

Instead the line break must be specified by name:

"First line<br>Second line"

Or using the concatenation feature (described ahead):

"First line<br>"
"Second line"
Concatenation

If there are multiple quoted text sequences with nothing between them other than whitespace, they are concatenated together with NO extra characters inserted between (the whitespace is ignored). For example:

"test" "ing"

Is equivalent to:

"testing"

Another example:

"pine"
"apple"

Is equivalent to:

"pineapple"

NOT to:

"pine<br>apple"

The main purpose of this concatenation feature is to allow long pieces of text to be written on multiple lines, without including those line breaks in the produced text, and without introducing ambiguity as to whether line breaks are to be included in the produced text. For example, a long paragraph can be written on multiple lines using this concatenation feature. This is useful to avoid a ridiculously long line when the source code is being displayed/edited in a text editor that is not using soft-wrapping.

Whitespace characters can be normal space, line break, or tab. The number of whitespace characters between the quoted text sequences can be zero or more.

Comments in Quoted Text

The following is invalid, and is rejected by the compiler:

"test{comment}text"

Following is a valid way of having a comment inside quoted text, utilizing the aforementioned concatenation feature. 1 or more comments can appear between the quoted text sequences (with or without whitespace) without disrupting the concatenation.

"test"{comment}"text"

That is equivalent to:

"testtext"

Or if you wanted the curly brackets included in the produced text, then specify the curly bracket characters by name:

"test<lcbra>comment<rcbra>text"
Specifying Characters by Number

In a quoted text sequence in source code, characters can be specified literally, by name, or by number. Only some characters can be specified by name, and only some literally, but all can be specified by number. The following 3 examples produce exactly the same text:

"Smith <amp> Wesson"  {by name}
"Smith <#26> Wesson"  {by number}
"Smith & Wesson"      {literally}

To specify a character by number, it is the same as specifying a character by name except replace the name with a hash (#) followed by the Unicode number of the character in hexadecimal, with or without leading zeros. Only hexadecimal digits (0-9,A-F,a-f) are permitted after the hash (#). The number must have a minimum of 1 hexadecimal digit and a maximum of 8 hexadecimal digits (32 bits) including leading zero digits.

The following 2 examples produce exactly the same text, containing the Greek capital letter Omega:

"<Omega> watches are low-tech antiques."
"<#03A9> watches are low-tech antiques."

Usually characters are specified by name in preference to number, but if the compiler does not have a name for the desired character, then it must be specified by number instead.

Note that <#A9> (for example) does NOT mean insert a byte (8 bits) containing the value 0xA9. Rather it means insert the Unicode character number 0xA9 (in this case, 0xA9 is the Copyright character). The quoted text sequence "<#A9>" actually produces text 2 bytes in size, because in both the Unicode UTF8 and UTF16 text encodings, the Unicode character number 0xA9 is encoded using 2 bytes.

When a character is specified by number, the compiler inserts the character regardless of whether any actual character/symbol is assigned to that number (defined for that number) in the Unicode standard, and regardless of whether any font contains graphics for that character number.

The "null" character (character number zero) can be inserted using <#0>. Text variables are NOT null-terminated, therefore the presence of a null character in a text variable has no special effect. However, the text containing a null character might disrupt a program written in a programming language that does use null-termination (such as C/C++), if the text is transmitted/conveyed to that program.

Configured Literal Text Sequences

Consider the situation of writing a program where you want to embed pieces of text containing many characters that are required to be written by name, such as the "<" and ">" characters. For example, the HTML language uses "<" and ">" characters extensively. However literal/quoted text sequences in KL also use "<" and ">", so to include a snippet of HTML in KL source code requires writing those characters by name. This becomes rather messy if those characters must be used frequently.

For example, imagine you wanted to embed this piece of HTML text into the source code of your KL program:

<A HREF="docs/">Documentation</A>

To write it in KL source code in literal/quoted text in the normal manner, the less-than ("<"), greater-than (">"), and quotation mark characters must be specified by name:

"<lt>A HREF=<quot>docs/<quot><gt>Documentation<lt>/A<gt>"

That quickly becomes confusing/tedious/unreadable for a large amount of HTML. Fortunately KL has a feature known as configured literal text, allowing the above to be written in source code as:

~~"" ~"<A HREF="docs/">Documentation</A>"~

There are 2 parts to that. The first part begins with tilde + tilde + quote and ends with quote, and it sets the text configuration. It is empty in the above example. Here is a non-empty example of setting the text configuration:

~~"crtn br,lsbra,rsbra"

That is not making a text sequence. Rather it is setting the configuration for all following configured literal text sequences. It consists of 3 parameters separated by commas. The first parameter specifies the character(s) to use for line breaks. The second parameter specifies the character(s) to use to begin a special character sequence. The third parameter specifies the character(s) to use to end a special character sequence. The characters must be specified by name or hexadecimal number, with numbers prefixed with "#". Thus the above is setting the configuration to this:

After setting the text configuration, you can write one or more text sequences that use the last configuration. To specify that a literal text sequence should use the last configuration, begin it with tilde + quote and end it with quote + tilde. For example:

~"<A HREF="docs/">DocuCaf[eacute]</A>"~

That source code (assuming use of the aforementioned example configuration) is equivalent to the following source code that does not use text configurations. The following should be written all on 1 line:

"<lt>A HREF=<quot>docs/<quot><gt>DocuCaf<eacute><lt>/A<gt>"

A configured literal text sequence beginning with tilde + quote can contain the following characters literally without having to specify them by name: Quotation mark (0x0022), less-than (0x003C), greater-than (0x003E), left curly bracket (0x007B), right curly bracket (0x007D), grave (0x0060). Except that if the quotation mark is to be immediately followed by a tilde (0x007E), then the quotation mark must be specified by name because a quotation mark + tilde is interpreted as the end of the text sequence as previously explained.

Like a normal literal text sequence, a configured literal text sequence beginning with tilde + quote can only contain line break and tab characters if they are specified by name. However, a special multiple-line sequence is also supported, and it does allow the use of line breaks and tabs without specifying them by name. A multiple-line sequence begins with tilde + dash + dash + dash + quote and ends with the reverse of that. For example:

~---"
<HTML>
<TITLE>Main Page</TITLE>

<UL>
<LI><A HREF="dl/">Downloads</A>
<LI><A HREF="docs/">Documentation Caf[eacute]</A>
<LI><A HREF="contact/">Contact</A>
<LI><A HREF="info/">More Info</A>
</UL>

</HTML>
"---~

The line breaks in the source code within the multiple-line text sequence will be replaced with whatever character or characters were specified in the last text configuration (first parameter). Line breaks specified by name or number are not replaced. Whatever type of line break characters are being used in the source code file (for example whether the source code file is a text file in Unix or DOS format) has absolutely no effect on the result or meaning of the program.

If the text within a multiple-line text sequence begins with a line break, that line break is always removed (if the text begins with multiple line breaks, only the first one is always removed). Likewise if the text ends with a line break, that line break is always removed (only the very last one). Line breaks specified by name or number are NOT removed. For example:

~~"br,lsbra,rsbra"  ~---"
a
b
c
"---~

That source code is equivalent to this source code:

"a<br>b<br>c"

If a parameter in the text configuration is empty, it means no characters. The following 3 equivalent configurations disable use of special character sequences (the ability to specify characters by name or number):

~~"br,,"
~~"br, , "
~~"br"

In the following example, all the line breaks in the text are removed except for line breaks specified by name or number:

~~",lsbra,rsbra"  ~---"
a
b
c
[bull]
[br]
"---~

That source code is equivalent to this source code:

"abc<bull><br>"

The following 4 configurations are equivalent:

~~"crtn br,lsbra,rsbra"
~~"#0D #0A,lsbra,rsbra"
~~"#0D #0A, lsbra, rsbra"
~~"#0D #0A, #5B, #5D"

A text configuration remains in effect until the end of the file. If a text sequence using text configuration appears with no prior text configuration in the file, then the compiler produces an error message.

The text configuration is not set using a command because this processing occurs during tokenization, before commands are processed.

The concatenation feature described in a previous section can be used with configured literal text sequences beginning with tilde + quote, but NOT with multiple-line text sequences beginning with tilde + dashes + quote. Also, normal text sequences can be concatenated with configured text sequences and vice-versa.

Literal Character Listing

Following is a complete listing of all characters that can appear literally/directly in a normal quoted text sequence in source code stored in a plain text file. Literally/directly meaning without specifying the character by name or number. All other Unicode characters (including latin alphabet characters with diacritical marks) must be specified by name or number when the source code is stored in a plain text file.

NumberCh.Description
0x0061aSmall letter a.
0x0062bSmall letter b.
0x0063cSmall letter c.
0x0064dSmall letter d.
0x0065eSmall letter e.
0x0066fSmall letter f.
0x0067gSmall letter g.
0x0068hSmall letter h.
0x0069iSmall letter i.
0x006AjSmall letter j.
0x006BkSmall letter k.
0x006ClSmall letter l.
0x006DmSmall letter m.
0x006EnSmall letter n.
0x006FoSmall letter o.
0x0070pSmall letter p.
0x0071qSmall letter q.
0x0072rSmall letter r.
0x0073sSmall letter s.
0x0074tSmall letter t.
0x0075uSmall letter u.
0x0076vSmall letter v.
0x0077wSmall letter w.
0x0078xSmall letter x.
0x0079ySmall letter y.
0x007AzSmall letter z.
 
0x0041ACapital letter A.
0x0042BCapital letter B.
0x0043CCapital letter C.
0x0044DCapital letter D.
0x0045ECapital letter E.
0x0046FCapital letter F.
0x0047GCapital letter G.
0x0048HCapital letter H.
0x0049ICapital letter I.
0x004AJCapital letter J.
0x004BKCapital letter K.
0x004CLCapital letter L.
0x004DMCapital letter M.
0x004ENCapital letter N.
0x004FOCapital letter O.
0x0050PCapital letter P.
0x0051QCapital letter Q.
0x0052RCapital letter R.
0x0053SCapital letter S.
0x0054TCapital letter T.
0x0055UCapital letter U.
0x0056VCapital letter V.
0x0057WCapital letter W.
0x0058XCapital letter X.
0x0059YCapital letter Y.
0x005AZCapital letter Z.
 
0x00300Digit zero.
0x00311Digit one.
0x00322Digit two.
0x00333Digit three.
0x00344Digit four.
0x00355Digit five.
0x00366Digit six.
0x00377Digit seven.
0x00388Digit eight.
0x00399Digit nine.
 
0x0020 Normal space.
0x002E.Dot/period.
0x002C,Comma.
0x003A:Colon.
0x003B;Semicolon.
0x0021!Exclamation mark.
0x003F?Question Mark.
0x0027'Apostrophe.
0x0023#Hash.
0x0024$Dollar sign.
0x0025%Percent sign.
0x0026&Ampersand.
0x0040@At mark.
0x005E^Circumflex/caret.
0x007E~Tilde.
0x002A*Asterisk.
0x002B+Plus Sign.
0x002D-Minus sign or dash.
0x003D=Equal.
0x0028(Open round bracket.
0x0029)Close round bracket.
0x005B[Open square bracket.
0x005D]Close square bracket.
0x002F/Forward slash.
0x005C\Backward slash.
0x007C|Vertical Line.
0x005F_Underscore.
Character Name Listing

The following table lists all valid character names that can be used in literal/quoted text sequences in KL source code. The "Number" column is the Unicode number of the character, in hexadecimal. All the character names are adopted from the HTML4 standard, except for the characters marked with "Not HTML".

All the character numbers are adopted from the Unicode standard. Unicode allows computers to consistently represent and exchange text in any of the world's writing systems and languages. Unicode defines more than 100 000 different characters, providing a standardized digital representation for each. If you want to use a character not included in the following table, then you must specify it by number because there is no name in KL for it.

NameNumberDescription
br0x000ALine break. (Not exactly HTML.)
crtn0x000DCarriage return. (Not HTML.)
tab0x0009Horizontal tab. (Not HTML.)
sp0x0020Normal space. (Not HTML.)
nbsp0x00A0Non-breaking space.
ensp0x2002En space.
emsp0x2003Em space.
thinsp0x2009Thin space.
 
lcbra0x007BLeft curly bracket/brace. (Not HTML. See also laquo, etc.)
rcbra0x007DRight curly bracket/brace. (Not HTML.)
lsbra0x005BLeft square bracket/brace. (Not HTML.)
rsbra0x005DRight square bracket/brace. (Not HTML.)
lrbra0x0028Left round bracket/brace / parenthesis. (Not HTML.)
rrbra0x0029Right round bracket/brace / parenthesis. (Not HTML.)
 
amp0x0026Ampersand symbol.
ndash0x2013En dash.
mdash0x2014Em dash.
shy0x00ADSoft hyphen.
bull0x2022Bullet (solid small circle).
loz0x25CALozenge.
dagger0x2020Dagger.
Dagger0x2021Double dagger.
permil0x2030Per-mille sign.
deg0x00B0Degree sign.
micro0x00B5Micro sign.
para0x00B6Paragraph sign.
 
spades0x2660Solid spade suit (cards).
clubs0x2663Solid club suit (cards).
hearts0x2665Solid heart suit (cards).
diams0x2666Solid diamond suit (cards).
 
cent0x00A2Cent sign.
pound0x00A3Pound sign.
curren0x00A4Currency sign.
yen0x00A5Yen sign.
euro0x20ACEuro sign.
 
iexcl0x00A1Inverted exclamation mark.
iquest0x00BFInverted question mark.
middot0x00B7Middle dot.
brvbar0x00A6Broken vertical bar.
sect0x00A7Section sign.
 
uml0x00A8Umlaut/diaeresis.
acute0x00B4Acute accent.
cedil0x00B8Spacing cedilla.
macr0x00AFSpacing macron.
circ0x02C6Modifier letter circumflex accent.
tilde0x02DCSmall tilde.
ordf0x00AAFeminine ordinal indicator.
ordm0x00BAMasculine ordinal indicator.
 
copy0x00A9Copyright sign.
trade0x2122Trademark sign.
reg0x00AERegistered trade mark sign.
 
apos0x0027Apostrophe.
quot0x0022Double quotation mark.
laquo0x00ABLeft-pointing double angle quotation mark.
raquo0x00BBRight-pointing double angle quotation mark.
lsquo0x2018Left single quotation mark.
rsquo0x2019Right single quotation mark.
sbquo0x201ASingle low-9 quotation mark.
bdquo0x201EDouble low-9 quotation mark.
ldquo0x201CLeft double quotation mark.
rdquo0x201DRight double quotation mark.
lsaquo0x2039Single left-pointing angle quotation mark.
rsaquo0x203ASingle right-pointing angle quotation mark.
 
Agrave0x00C0Latin capital letter A with grave.
Aacute0x00C1Latin capital letter A with acute.
Acirc0x00C2Latin capital letter A with circumflex.
Atilde0x00C3Latin capital letter A with tilde.
Auml0x00C4Latin capital letter A with umlaut/diaeresis.
Aring0x00C5Latin capital letter A with ring above.
AElig0x00C6Latin capital ligature AE.
Ccedil0x00C7Latin capital letter C with cedilla.
Egrave0x00C8Latin capital letter E with grave.
Eacute0x00C9Latin capital letter E with acute.
Ecirc0x00CALatin capital letter E with circumflex.
Euml0x00CBLatin capital letter E with diaeresis.
Igrave0x00CCLatin capital letter I with grave.
Iacute0x00CDLatin capital letter I with acute.
Icirc0x00CELatin capital letter I with circumflex.
Iuml0x00CFLatin capital letter I with umlaut/diaeresis.
ETH0x00D0Latin capital letter ETH.
Ntilde0x00D1Latin capital letter N with tilde.
OElig0x0152Latin capital ligature OE.
Ograve0x00D2Latin capital letter O with grave.
Oacute0x00D3Latin capital letter O with acute.
Ocirc0x00D4Latin capital letter O with circumflex.
Otilde0x00D5Latin capital letter O with tilde.
Ouml0x00D6Latin capital letter O with diaeresis.
Oslash0x00D8Latin capital letter O with stroke.
Scaron0x0160Latin capital letter S with caron.
Ugrave0x00D9Latin capital letter U with grave.
Uacute0x00DALatin capital letter U with acute.
Ucirc0x00DBLatin capital letter U with circumflex.
Uuml0x00DCLatin capital letter U with diaeresis.
Yacute0x00DDLatin capital letter Y with acute.
Yuml0x0178Latin capital letter Y with diaeresis.
THORN0x00DELatin capital letter THORN.
 
szlig0x00DFLatin small letter sharp s.
agrave0x00E0Latin small letter a with grave.
aacute0x00E1Latin small letter a with acute.
acirc0x00E2Latin small letter a with circumflex.
atilde0x00E3Latin small letter a with tilde.
auml0x00E4Latin small letter a with diaeresis.
aring0x00E5Latin small letter a with ring above.
aelig0x00E6Latin small ligature ae.
ccedil0x00E7Latin small letter c with cedilla.
egrave0x00E8Latin small letter e with grave.
eacute0x00E9Latin small letter e with acute.
ecirc0x00EALatin small letter e with circumflex.
euml0x00EBLatin small letter e with diaeresis.
igrave0x00ECLatin small letter i with grave.
iacute0x00EDLatin small letter i with acute.
icirc0x00EELatin small letter i with circumflex.
iuml0x00EFLatin small letter i with diaeresis.
eth0x00F0Latin small letter eth.
ntilde0x00F1Latin small letter n with tilde.
oelig0x0153Latin small ligature oe.
ograve0x00F2Latin small letter o with grave.
oacute0x00F3Latin small letter o with acute.
ocirc0x00F4Latin small letter o with circumflex.
otilde0x00F5Latin small letter o with tilde.
ouml0x00F6Latin small letter o with diaeresis.
oslash0x00F8Latin small letter o with stroke.
scaron0x0161Latin small letter s with caron.
ugrave0x00F9Latin small letter u with grave.
uacute0x00FALatin small letter u with acute.
ucirc0x00FBLatin small letter u with circumflex.
uuml0x00FCLatin small letter u with diaeresis.
yacute0x00FDLatin small letter y with acute.
yuml0x00FFLatin small letter y with diaeresis.
thorn0x00FELatin small letter thorn.
fnof0x0192Latin small f with hook = function.
 
Alpha0x0391Greek capital letter alpha.
Beta0x0392Greek capital letter beta.
Gamma0x0393Greek capital letter gamma.
Delta0x0394Greek capital letter delta.
Epsilon0x0395Greek capital letter epsilon.
Zeta0x0396Greek capital letter zeta.
Eta0x0397Greek capital letter eta.
Theta0x0398Greek capital letter theta.
Iota0x0399Greek capital letter iota.
Kappa0x039AGreek capital letter kappa.
Lambda0x039BGreek capital letter lambda.
Mu0x039CGreek capital letter mu.
Nu0x039DGreek capital letter nu.
Xi0x039EGreek capital letter xi.
Omicron0x039FGreek capital letter omicron.
Pi0x03A0Greek capital letter pi.
Rho0x03A1Greek capital letter rho.
Sigma0x03A3Greek capital letter sigma.
Tau0x03A4Greek capital letter tau.
Upsilon0x03A5Greek capital letter upsilon.
Phi0x03A6Greek capital letter phi.
Chi0x03A7Greek capital letter chi.
Psi0x03A8Greek capital letter psi.
Omega0x03A9Greek capital letter omega.
 
alpha0x03B1Greek small letter alpha.
beta0x03B2Greek small letter beta.
gamma0x03B3Greek small letter gamma.
delta0x03B4Greek small letter delta.
epsilon0x03B5Greek small letter epsilon.
zeta0x03B6Greek small letter zeta.
eta0x03B7Greek small letter eta.
theta0x03B8Greek small letter theta.
iota0x03B9Greek small letter iota.
kappa0x03BAGreek small letter kappa.
lambda0x03BBGreek small letter lambda.
mu0x03BCGreek small letter mu.
nu0x03BDGreek small letter nu.
xi0x03BEGreek small letter xi.
omicron0x03BFGreek small letter omicron.
pi0x03C0Greek small letter pi.
rho0x03C1Greek small letter rho.
sigmaf0x03C2Greek small letter final sigma.
sigma0x03C3Greek small letter sigma.
tau0x03C4Greek small letter tau.
upsilon0x03C5Greek small letter upsilon.
phi0x03C6Greek small letter phi.
chi0x03C7Greek small letter chi.
psi0x03C8Greek small letter psi.
omega0x03C9Greek small letter omega.
thetasym0x03D1Greek small letter theta symbol.
 
upsih0x03D2Greek upsilon with hook symbol.
piv0x03D6Greek pi symbol.
hellip0x2026Horizontal ellipsis = three dot leader.
prime0x2032Prime = minutes = feet.
Prime0x2033Double prime = seconds = inches.
oline0x203EOverline = spacing overscore.
weierp0x2118Script capital P = power set.
image0x2111Blackletter capital I = imaginary part.
real0x211CBlackletter capital R = real part symbol.
alefsym0x2135Alef symbol = first transfinite cardinal.
 
larr0x2190Leftwards arrow.
uarr0x2191Upwards arrow.
rarr0x2192Rightwards arrow.
darr0x2193Downwards arrow.
harr0x2194Left right arrow.
crarr0x21B5Downwards arrow with corner leftwards.
lArr0x21D0Leftwards double arrow.
uArr0x21D1Upwards double arrow.
rArr0x21D2Rightwards double arrow.
dArr0x21D3Downwards double arrow.
hArr0x21D4Left right double arrow.
 
lt0x003CLess-than symbol.
gt0x003EGreater-than symbol.
le0x2264Less-than-or-equal-to symbol.
ge0x2265Greater-than-or-equal-to symbol.
ne0x2260Not-equal-to symbol.
times0x00D7Multiplication sign.
divide0x00F7Division sign.
plusmn0x00B1Plus-or-minus sign.
not0x00ACNot sign.
sup10x00B9Superscript digit one.
sup20x00B2Superscript digit two.
sup30x00B3Superscript digit three.
forall0x2200For all.
part0x2202Partial differential.
exist0x2203There exists.
empty0x2205Empty set = null set = diameter.
nabla0x2207Nabla = backward difference.
isin0x2208Element of.
notin0x2209Not an element of.
ni0x220BContains as member.
prod0x220FN-ary product = product sign.
sum0x2211N-ary sumation.
minus0x2212Minus sign.
lowast0x2217Asterisk operator.
radic0x221ASquare root = radical sign.
prop0x221DProportional to.
infin0x221EInfinity.
ang0x2220Angle.
and0x2227Logical and = wedge.
or0x2228Logical or = vee.
cap0x2229Intersection = cap.
cup0x222AUnion = cup.
int0x222BIntegral.
there40x2234Therefore.
sim0x223CTilde operator = varies with = similar to.
cong0x2245Approximately equal to.
asymp0x2248Almost equal to = asymptotic to.
equiv0x2261Identical to.
sub0x2282Subset of.
sup0x2283Superset of.
nsub0x2284Not a subset of.
sube0x2286Subset of or equal to.
supe0x2287Superset of or equal to.
oplus0x2295Circled plus = direct sum.
otimes0x2297Circled times = vector product.
perp0x22A5Up tack = orthogonal to = perpendicular.
sdot0x22C5Dot operator.
lceil0x2308Left ceiling = apl upstile.
rceil0x2309Right ceiling.
lfloor0x230ALeft floor = apl downstile.
rfloor0x230BRight floor.
lang0x2329Left-pointing angle bracket = bra.
rang0x232ARight-pointing angle bracket = ket.
 
frac140x00BCFraction one quarter.
frac120x00BDFraction one half.
frac340x00BEFraction three quarters.
frasl0x2044Fraction slash.
 
zwnj0x200CZero width non-joiner.
zwj0x200DZero width joiner.
lrm0x200ELeft-to-right mark.
rlm0x200FRight-to-left mark.
orepl0xFFFCObject Replacement Character. (Not HTML.)
repl0xFFFDReplacement Character. (Not HTML.)