]> jfr.im git - irc/kvirc/kvirc-scripts.git/commitdiff
URL title preview script (#12)
authorAndrio Celos <redacted>
Wed, 27 Apr 2016 07:21:26 +0000 (17:21 +1000)
committerun1versal <redacted>
Wed, 27 Apr 2016 07:21:26 +0000 (08:21 +0100)
Scripts: add URL title preview script

URLTitle/readme.md [new file with mode: 0644]
URLTitle/urltitle.kvs [new file with mode: 0644]
htmlentities/htmlentities.kvs [new file with mode: 0644]
htmlentities/readme.md [new file with mode: 0644]

diff --git a/URLTitle/readme.md b/URLTitle/readme.md
new file mode 100644 (file)
index 0000000..2739db7
--- /dev/null
@@ -0,0 +1,17 @@
+URL Title Preview
+=================
+
+This script extends the popup menu for HTTP URLs to display the title of a HTML page. It therefore introduces a short delay before the popup actually appears, as the page is downloaded.
+
+If the *htmlentities* script is present, it will be used to parse HTML entities in the title.
+
+It was tested with KVIrc version 4.9.2 'Aria'.
+
+Installation
+------------
+
+Simply run the script.
+
+To do this, from the KVIrc menu, select *Scripting* → *Execute Script* (or press `Ctrl+Shift+X` up to twice), then select `urltitle.kvs` in the dialog.
+
+Alternatively, enter `/parse path/to/urltitle.kvs`.
diff --git a/URLTitle/urltitle.kvs b/URLTitle/urltitle.kvs
new file mode 100644 (file)
index 0000000..dfdb871
--- /dev/null
@@ -0,0 +1,65 @@
+event(OnURLLinkPopupRequest,URLTitle) {
+  // HTTP URLs must have the scheme specified, otherwise http.asyncGet will throw an error.
+  if ($str.left($0, 3) == www) %url = "http://$0";
+  else %url = $0;
+  
+  if ($str.left(%url, 4) == http) {
+    http.asyncGet -m=1048576 -t=10 -w=m (%url, $file.localdir(.title-preview)) {
+      popup.show urltitle $0 $1 $2 $3;
+    }
+  } else {
+    // Not a HTTP URL; use the normal popup.
+    popup.show urlpopup $0;
+  }
+}
+
+defpopup(urltitle) {
+  prologue {
+    %:status = $0;
+    %:title_found = $false;
+    %:title = "";
+    %title_open = -1;
+    %title_close = -1;
+    
+    if ($0 == 1) {
+      // Read in the file.
+      %data = $file.read($2, 1048576);
+    
+      // Find the HTML title.
+      %title_open = $str.findfirst(%data, "<title>", $false, 0);
+    
+      if (%title_open != -1)
+        %title_close = $str.findfirst(%data, "</title>", $false, $(%title_open + 7));
+    
+      if (%title_open != -1 && %title_close != -1) {
+        %:title = $str.mid(%data, $(%title_open + 7), $(%title_close - %title_open - 7));
+        if ($isset($aliasbody(htmldecode))) %:title = $htmldecode(%:title);
+        %:title_found = $true;
+    
+        echo Page title: $k(2)%:title;
+      }
+    }
+    
+    if ($file.exists($2)) file.remove $2;
+  }
+  
+  label(Page title:) (%:title_found)
+  
+  label(%:title) (%:title_found)
+  
+  label(No page title was found.) (%:status == 1 && !%:title_found)
+  
+  label(The preview download failed.) (%:status == 0)
+  
+  item(Open Link,14) {
+    openurl $1
+  }
+  
+  item($tr("Copy To Clipboard","defscript"),259) {
+    str.toClipboard $1
+  }
+}
+
+// Disable the default event handler.
+eventctl -d OnURLLinkPopupRequest "URL popup";
+eventctl -d -q OnURLLinkPopupRequest URLpopup;
diff --git a/htmlentities/htmlentities.kvs b/htmlentities/htmlentities.kvs
new file mode 100644 (file)
index 0000000..bcb8a7b
--- /dev/null
@@ -0,0 +1,2337 @@
+alias (hexinteger) {
+  /*
+    integer $hexinteger(string s)
+    Converts a hexadecimal string to its (signed 32-bit) integer value.
+  */
+  
+  %in = $str.strip($0);
+  while ($str.left(%in, 1) == "0") %in = $str.mid(%in, 1);
+  if ($str.length(%in) > 8) die Input string is too long for a 32-bit integer.
+  
+  %out = 0;
+  %p = 0;
+  for (%i = $($str.length(%in) - 1); %i >= 0; %i--) {
+    %u = $unicode($str.mid(%in, %i, 1));
+    if (%u >= 48 && %u <= 57) {
+      %digit = $(%u - 48);
+    } else if (%u >= 65 && %u <= 70) {
+      %digit = $(%u - 55);
+    } else if (%u >= 97 && %u <= 102) {
+      %digit = $(%u - 87);
+    } else {
+      die Input string contains invalid characters.
+    }
+    %out |= $(%digit << %p);
+    %p += 4;
+  }
+  
+  return %out;
+}
+
+
+alias (htmldecode) {
+  /*
+    string $htmldecode(string text)
+    Decodes HTML entities in text and returns the result. Unknown or invalid sequences are left as-is.
+    Code points above U+FFFF are currently not supported.
+  */
+  if (!$isSet(%HtmlEntities)) htmlinit;
+  
+  %text = $string($0);
+  %out = "";
+  %pos = 0;
+  
+  while (%pos < $length(%text)) {
+    // Find the next entity.
+    %pos2 = $str.findfirst(%text, "&", $true, %pos);
+    if (%pos2 == -1) {
+      %out .= $str.mid(%text, %pos);
+      break;
+    }
+    if (%pos2 != %pos) %out .= $str.mid(%text, %pos, $(%pos2 - %pos));
+  
+    // Decode the entity.
+    %pos = $(%pos2 + 1);
+    %pos2 = $str.findfirst(%text, ";", $true, %pos);
+    if (%pos2 != -1) {
+      %entity = $str.mid(%text, %pos, $(%pos2 - %pos));
+      if ($str.left(%entity, 1) == "#") {
+        // Numeric entity.
+        %entity2 = $str.mid(%entity, 1);
+        if ($str.left(%entity2, 1) == "x") {
+          // Hexadecimal numeric entity.
+          %entity2 = $str.mid(%entity2, 1);
+          if (!$str.match("[^0-9A-Fa-f]", %entity2, r)) {
+            %out .= $char($hexinteger(%entity2));
+            %pos = $(%pos2 + 1);
+            continue;
+          }
+        } else {
+          // Decimal numeric entity.
+          if (!$str.match("\\D", %entity2, r)) {
+            %out .= $char(%entity2);
+            %pos = $(%pos2 + 1);
+            continue;
+          }
+        }
+      } else {
+        %entity2 = "";
+        // Prefix uppercase letters as a workaround for case-insensitive hashtables.
+        for (%i = 0; %i < $length(%entity); %i++) {
+          %c = $str.mid(%entity, %i, 1);
+          if ($unicode(%c) >= 65 && $unicode(%c) <= 90) %entity2 .= "^";
+          %entity2 .= %c;
+        }
+  
+        %c = %HtmlEntities{%entity2};
+        if ($isSet(%c)) {
+          %out .= %c;
+          %pos = $(%pos2 + 1);
+          continue;
+        }
+      }
+    }
+    // Invalid entity; copy it as-is.
+    %out .= "&";
+  }
+  
+  return %out;
+}
+
+
+alias (htmlencode) {
+  /*
+    string $htmlencode(string text[, string flags])
+    Encodes characters into HTML entity representations.
+    By default, only `"`, `&`, `<` and `>` are encoded.
+      flags: Any combination of the following characters:
+        'q': Encodes the single quote character `'` as well.
+        'e': Encodes all characters that have named HTML entity representations. Takes priority over 'x'.
+        'x': Encodes all characters outside the printable ASCII set as numeric entities.
+  */
+  if (!$isSet(%HtmlEntitiesReverse)) htmlinit;
+  
+  for (%i = 0; %i < $length($1); %i++) {
+    %c = $str.mid($1, %i, 1);
+    switch (%c) {
+      case ("q"): %flag_quote = $true; break;
+      case ("e"): %flag_entities = $true; break;
+      case ("x"): %flag_special = $true; break;
+    }
+  }
+  
+  %text = $string($0);
+  %out = "";
+  
+  for (%i = 0; %i < $length(%text); %i++) {
+    %c = $str.mid(%text, %i, 1);
+    %u = $unicode(%c);
+  
+    if (%u >= 32 && %u < 128) {
+      switch (%u) {
+        case (34):  // `"`
+          %out .= "&quot;";
+          break;
+        case (38):  // `&`
+          %out .= "&amp;";
+          break;
+        case (39):  // `'`
+          if (%flag_quote) %out .= "&apos;";
+          else %out .= "'";
+          break;
+        case (60):  // `<`
+          %out .= "&lt;";
+          break;
+        case (62):  // `>`
+          %out .= "&gt;";
+          break;
+        default:
+          %out .= %c;
+          break;
+        }
+    } else {
+      if (%flag_entities) {
+        %entity = %HtmlEntitiesReverse{%u};
+        if ($isSet(%entity)) {
+          %out .= "&%entity;";
+          continue;
+        }
+      }
+      if (%flag_special) {
+        %out .= "&#%u;";
+        continue;
+      }
+      %out .= %c;
+    }
+  }
+  
+  return %out;
+}
+
+alias(htmlinit) {
+  /*
+    /htmlinit
+    Sets up tables for $htmlencode and $htmldecode.
+    This function is automatically called the first time the latter functions are used.
+   */
+  // Since hashtables in KVIrc are case insensitive, we must prefix uppercase letters.
+  // Source: http://dev.w3.org/html5/html-author/charref
+  %HtmlEntities = $hash( \
+    "^Tab"                               , "\t", \
+    "^New^Line"                          , "\n", \
+    "excl"                               , "!", \
+    "quot"                               , "\"", \
+    "^Q^U^O^T"                           , "\"", \
+    "num"                                , "#", \
+    "dollar"                             , "$", \
+    "percnt"                             , "%", \
+    "amp"                                , "&", \
+    "^A^M^P"                             , "&", \
+    "apos"                               , "'", \
+    "lpar"                               , "(", \
+    "rpar"                               , ")", \
+    "ast"                                , "*", \
+    "midast"                             , "*", \
+    "plus"                               , "+", \
+    "comma"                              , ",", \
+    "period"                             , ".", \
+    "sol"                                , "/", \
+    "colon"                              , ":", \
+    "semi"                               , ";", \
+    "lt"                                 , "<", \
+    "^L^T"                               , "<", \
+    "equals"                             , "=", \
+    "gt"                                 , ">", \
+    "^G^T"                               , ">", \
+    "quest"                              , "?", \
+    "commat"                             , "@", \
+    "lsqb"                               , "[", \
+    "lbrack"                             , "[", \
+    "bsol"                               , "\\", \
+    "rsqb"                               , "]", \
+    "rbrack"                             , "]", \
+    "^Hat"                               , "^", \
+    "lowbar"                             , "_", \
+    "grave"                              , "`", \
+    "^Diacritical^Grave"                 , "`", \
+    "lcub"                               , "{", \
+    "lbrace"                             , "{", \
+    "verbar"                             , "|", \
+    "vert"                               , "|", \
+    "^Vertical^Line"                     , "|", \
+    "rcub"                               , "}", \
+    "rbrace"                             , "}", \
+    "nbsp"                               , " ", \
+    "^Non^Breaking^Space"                , " ", \
+    "iexcl"                              , "¡", \
+    "cent"                               , "¢", \
+    "pound"                              , "£", \
+    "curren"                             , "¤", \
+    "yen"                                , "¥", \
+    "brvbar"                             , "¦", \
+    "sect"                               , "§", \
+    "^Dot"                               , "¨", \
+    "die"                                , "¨", \
+    "^Double^Dot"                        , "¨", \
+    "uml"                                , "¨", \
+    "copy"                               , "©", \
+    "^C^O^P^Y"                           , "©", \
+    "ordf"                               , "ª", \
+    "laquo"                              , "«", \
+    "not"                                , "¬", \
+    "shy"                                , "­", \
+    "reg"                                , "®", \
+    "circled^R"                          , "®", \
+    "^R^E^G"                             , "®", \
+    "macr"                               , "¯", \
+    "^Over^Bar"                          , "¯", \
+    "strns"                              , "¯", \
+    "deg"                                , "°", \
+    "plusmn"                             , "±", \
+    "pm"                                 , "±", \
+    "^Plus^Minus"                        , "±", \
+    "sup2"                               , "²", \
+    "sup3"                               , "³", \
+    "acute"                              , "´", \
+    "^Diacritical^Acute"                 , "´", \
+    "micro"                              , "µ", \
+    "para"                               , "¶", \
+    "middot"                             , "·", \
+    "centerdot"                          , "·", \
+    "^Center^Dot"                        , "·", \
+    "cedil"                              , "¸", \
+    "^Cedilla"                           , "¸", \
+    "sup1"                               , "¹", \
+    "ordm"                               , "º", \
+    "raquo"                              , "»", \
+    "frac14"                             , "¼", \
+    "frac12"                             , "½", \
+    "half"                               , "½", \
+    "frac34"                             , "¾", \
+    "iquest"                             , "¿", \
+    "^Agrave"                            , "À", \
+    "^Aacute"                            , "Á", \
+    "^Acirc"                             , "Â", \
+    "^Atilde"                            , "Ã", \
+    "^Auml"                              , "Ä", \
+    "^Aring"                             , "Å", \
+    "^A^Elig"                            , "Æ", \
+    "^Ccedil"                            , "Ç", \
+    "^Egrave"                            , "È", \
+    "^Eacute"                            , "É", \
+    "^Ecirc"                             , "Ê", \
+    "^Euml"                              , "Ë", \
+    "^Igrave"                            , "Ì", \
+    "^Iacute"                            , "Í", \
+    "^Icirc"                             , "Î", \
+    "^Iuml"                              , "Ï", \
+    "^E^T^H"                             , "Ð", \
+    "^Ntilde"                            , "Ñ", \
+    "^Ograve"                            , "Ò", \
+    "^Oacute"                            , "Ó", \
+    "^Ocirc"                             , "Ô", \
+    "^Otilde"                            , "Õ", \
+    "^Ouml"                              , "Ö", \
+    "times"                              , "×", \
+    "^Oslash"                            , "Ø", \
+    "^Ugrave"                            , "Ù", \
+    "^Uacute"                            , "Ú", \
+    "^Ucirc"                             , "Û", \
+    "^Uuml"                              , "Ü", \
+    "^Yacute"                            , "Ý", \
+    "^T^H^O^R^N"                         , "Þ", \
+    "szlig"                              , "ß", \
+    "agrave"                             , "à", \
+    "aacute"                             , "á", \
+    "acirc"                              , "â", \
+    "atilde"                             , "ã", \
+    "auml"                               , "ä", \
+    "aring"                              , "å", \
+    "aelig"                              , "æ", \
+    "ccedil"                             , "ç", \
+    "egrave"                             , "è", \
+    "eacute"                             , "é", \
+    "ecirc"                              , "ê", \
+    "euml"                               , "ë", \
+    "igrave"                             , "ì", \
+    "iacute"                             , "í", \
+    "icirc"                              , "î", \
+    "iuml"                               , "ï", \
+    "eth"                                , "ð", \
+    "ntilde"                             , "ñ", \
+    "ograve"                             , "ò", \
+    "oacute"                             , "ó", \
+    "ocirc"                              , "ô", \
+    "otilde"                             , "õ", \
+    "ouml"                               , "ö", \
+    "divide"                             , "÷", \
+    "div"                                , "÷", \
+    "oslash"                             , "ø", \
+    "ugrave"                             , "ù", \
+    "uacute"                             , "ú", \
+    "ucirc"                              , "û", \
+    "uuml"                               , "ü", \
+    "yacute"                             , "ý", \
+    "thorn"                              , "þ", \
+    "yuml"                               , "ÿ", \
+    "^Amacr"                             , "Ā", \
+    "amacr"                              , "ā", \
+    "^Abreve"                            , "Ă", \
+    "abreve"                             , "ă", \
+    "^Aogon"                             , "Ą", \
+    "aogon"                              , "ą", \
+    "^Cacute"                            , "Ć", \
+    "cacute"                             , "ć", \
+    "^Ccirc"                             , "Ĉ", \
+    "ccirc"                              , "ĉ", \
+    "^Cdot"                              , "Ċ", \
+    "cdot"                               , "ċ", \
+    "^Ccaron"                            , "Č", \
+    "ccaron"                             , "č", \
+    "^Dcaron"                            , "Ď", \
+    "dcaron"                             , "ď", \
+    "^Dstrok"                            , "Đ", \
+    "dstrok"                             , "đ", \
+    "^Emacr"                             , "Ē", \
+    "emacr"                              , "ē", \
+    "^Edot"                              , "Ė", \
+    "edot"                               , "ė", \
+    "^Eogon"                             , "Ę", \
+    "eogon"                              , "ę", \
+    "^Ecaron"                            , "Ě", \
+    "ecaron"                             , "ě", \
+    "^Gcirc"                             , "Ĝ", \
+    "gcirc"                              , "ĝ", \
+    "^Gbreve"                            , "Ğ", \
+    "gbreve"                             , "ğ", \
+    "^Gdot"                              , "Ġ", \
+    "gdot"                               , "ġ", \
+    "^Gcedil"                            , "Ģ", \
+    "^Hcirc"                             , "Ĥ", \
+    "hcirc"                              , "ĥ", \
+    "^Hstrok"                            , "Ħ", \
+    "hstrok"                             , "ħ", \
+    "^Itilde"                            , "Ĩ", \
+    "itilde"                             , "ĩ", \
+    "^Imacr"                             , "Ī", \
+    "imacr"                              , "ī", \
+    "^Iogon"                             , "Į", \
+    "iogon"                              , "į", \
+    "^Idot"                              , "İ", \
+    "imath"                              , "ı", \
+    "inodot"                             , "ı", \
+    "^I^Jlig"                            , "IJ", \
+    "ijlig"                              , "ij", \
+    "^Jcirc"                             , "Ĵ", \
+    "jcirc"                              , "ĵ", \
+    "^Kcedil"                            , "Ķ", \
+    "kcedil"                             , "ķ", \
+    "kgreen"                             , "ĸ", \
+    "^Lacute"                            , "Ĺ", \
+    "lacute"                             , "ĺ", \
+    "^Lcedil"                            , "Ļ", \
+    "lcedil"                             , "ļ", \
+    "^Lcaron"                            , "Ľ", \
+    "lcaron"                             , "ľ", \
+    "^Lmidot"                            , "Ŀ", \
+    "lmidot"                             , "ŀ", \
+    "^Lstrok"                            , "Ł", \
+    "lstrok"                             , "ł", \
+    "^Nacute"                            , "Ń", \
+    "nacute"                             , "ń", \
+    "^Ncedil"                            , "Ņ", \
+    "ncedil"                             , "ņ", \
+    "^Ncaron"                            , "Ň", \
+    "ncaron"                             , "ň", \
+    "napos"                              , "ʼn", \
+    "^E^N^G"                             , "Ŋ", \
+    "eng"                                , "ŋ", \
+    "^Omacr"                             , "Ō", \
+    "omacr"                              , "ō", \
+    "^Odblac"                            , "Ő", \
+    "odblac"                             , "ő", \
+    "^O^Elig"                            , "Œ", \
+    "oelig"                              , "œ", \
+    "^Racute"                            , "Ŕ", \
+    "racute"                             , "ŕ", \
+    "^Rcedil"                            , "Ŗ", \
+    "rcedil"                             , "ŗ", \
+    "^Rcaron"                            , "Ř", \
+    "rcaron"                             , "ř", \
+    "^Sacute"                            , "Ś", \
+    "sacute"                             , "ś", \
+    "^Scirc"                             , "Ŝ", \
+    "scirc"                              , "ŝ", \
+    "^Scedil"                            , "Ş", \
+    "scedil"                             , "ş", \
+    "^Scaron"                            , "Š", \
+    "scaron"                             , "š", \
+    "^Tcedil"                            , "Ţ", \
+    "tcedil"                             , "ţ", \
+    "^Tcaron"                            , "Ť", \
+    "tcaron"                             , "ť", \
+    "^Tstrok"                            , "Ŧ", \
+    "tstrok"                             , "ŧ", \
+    "^Utilde"                            , "Ũ", \
+    "utilde"                             , "ũ", \
+    "^Umacr"                             , "Ū", \
+    "umacr"                              , "ū", \
+    "^Ubreve"                            , "Ŭ", \
+    "ubreve"                             , "ŭ", \
+    "^Uring"                             , "Ů", \
+    "uring"                              , "ů", \
+    "^Udblac"                            , "Ű", \
+    "udblac"                             , "ű", \
+    "^Uogon"                             , "Ų", \
+    "uogon"                              , "ų", \
+    "^Wcirc"                             , "Ŵ", \
+    "wcirc"                              , "ŵ", \
+    "^Ycirc"                             , "Ŷ", \
+    "ycirc"                              , "ŷ", \
+    "^Yuml"                              , "Ÿ", \
+    "^Zacute"                            , "Ź", \
+    "zacute"                             , "ź", \
+    "^Zdot"                              , "Ż", \
+    "zdot"                               , "ż", \
+    "^Zcaron"                            , "Ž", \
+    "zcaron"                             , "ž", \
+    "fnof"                               , "ƒ", \
+    "imped"                              , "Ƶ", \
+    "gacute"                             , "ǵ", \
+    "jmath"                              , "ȷ", \
+    "circ"                               , "ˆ", \
+    "caron"                              , "ˇ", \
+    "^Hacek"                             , "ˇ", \
+    "breve"                              , "˘", \
+    "^Breve"                             , "˘", \
+    "dot"                                , "˙", \
+    "^Diacritical^Dot"                   , "˙", \
+    "ring"                               , "˚", \
+    "ogon"                               , "˛", \
+    "tilde"                              , "˜", \
+    "^Diacritical^Tilde"                 , "˜", \
+    "dblac"                              , "˝", \
+    "^Diacritical^Double^Acute"          , "˝", \
+    "^Down^Breve"                        , "̑", \
+    "^Under^Bar"                         , "̲", \
+    "^Alpha"                             , "Α", \
+    "^Beta"                              , "Β", \
+    "^Gamma"                             , "Γ", \
+    "^Delta"                             , "Δ", \
+    "^Epsilon"                           , "Ε", \
+    "^Zeta"                              , "Ζ", \
+    "^Eta"                               , "Η", \
+    "^Theta"                             , "Θ", \
+    "^Iota"                              , "Ι", \
+    "^Kappa"                             , "Κ", \
+    "^Lambda"                            , "Λ", \
+    "^Mu"                                , "Μ", \
+    "^Nu"                                , "Ν", \
+    "^Xi"                                , "Ξ", \
+    "^Omicron"                           , "Ο", \
+    "^Pi"                                , "Π", \
+    "^Rho"                               , "Ρ", \
+    "^Sigma"                             , "Σ", \
+    "^Tau"                               , "Τ", \
+    "^Upsilon"                           , "Υ", \
+    "^Phi"                               , "Φ", \
+    "^Chi"                               , "Χ", \
+    "^Psi"                               , "Ψ", \
+    "^Omega"                             , "Ω", \
+    "alpha"                              , "α", \
+    "beta"                               , "β", \
+    "gamma"                              , "γ", \
+    "delta"                              , "δ", \
+    "epsiv"                              , "ε", \
+    "varepsilon"                         , "ε", \
+    "epsilon"                            , "ε", \
+    "zeta"                               , "ζ", \
+    "eta"                                , "η", \
+    "theta"                              , "θ", \
+    "iota"                               , "ι", \
+    "kappa"                              , "κ", \
+    "lambda"                             , "λ", \
+    "mu"                                 , "μ", \
+    "nu"                                 , "ν", \
+    "xi"                                 , "ξ", \
+    "omicron"                            , "ο", \
+    "pi"                                 , "π", \
+    "rho"                                , "ρ", \
+    "sigmav"                             , "ς", \
+    "varsigma"                           , "ς", \
+    "sigmaf"                             , "ς", \
+    "sigma"                              , "σ", \
+    "tau"                                , "τ", \
+    "upsi"                               , "υ", \
+    "upsilon"                            , "υ", \
+    "phi"                                , "φ", \
+    "phiv"                               , "φ", \
+    "varphi"                             , "φ", \
+    "chi"                                , "χ", \
+    "psi"                                , "ψ", \
+    "omega"                              , "ω", \
+    "thetav"                             , "ϑ", \
+    "vartheta"                           , "ϑ", \
+    "thetasym"                           , "ϑ", \
+    "^Upsi"                              , "ϒ", \
+    "upsih"                              , "ϒ", \
+    "straightphi"                        , "ϕ", \
+    "piv"                                , "ϖ", \
+    "varpi"                              , "ϖ", \
+    "^Gammad"                            , "Ϝ", \
+    "gammad"                             , "ϝ", \
+    "digamma"                            , "ϝ", \
+    "kappav"                             , "ϰ", \
+    "varkappa"                           , "ϰ", \
+    "rhov"                               , "ϱ", \
+    "varrho"                             , "ϱ", \
+    "epsi"                               , "ϵ", \
+    "straightepsilon"                    , "ϵ", \
+    "bepsi"                              , "϶", \
+    "backepsilon"                        , "϶", \
+    "^I^Ocy"                             , "Ё", \
+    "^D^Jcy"                             , "Ђ", \
+    "^G^Jcy"                             , "Ѓ", \
+    "^Jukcy"                             , "Є", \
+    "^D^Scy"                             , "Ѕ", \
+    "^Iukcy"                             , "І", \
+    "^Y^Icy"                             , "Ї", \
+    "^Jsercy"                            , "Ј", \
+    "^L^Jcy"                             , "Љ", \
+    "^N^Jcy"                             , "Њ", \
+    "^T^S^Hcy"                           , "Ћ", \
+    "^K^Jcy"                             , "Ќ", \
+    "^Ubrcy"                             , "Ў", \
+    "^D^Zcy"                             , "Џ", \
+    "^Acy"                               , "А", \
+    "^Bcy"                               , "Б", \
+    "^Vcy"                               , "В", \
+    "^Gcy"                               , "Г", \
+    "^Dcy"                               , "Д", \
+    "^I^Ecy"                             , "Е", \
+    "^Z^Hcy"                             , "Ж", \
+    "^Zcy"                               , "З", \
+    "^Icy"                               , "И", \
+    "^Jcy"                               , "Й", \
+    "^Kcy"                               , "К", \
+    "^Lcy"                               , "Л", \
+    "^Mcy"                               , "М", \
+    "^Ncy"                               , "Н", \
+    "^Ocy"                               , "О", \
+    "^Pcy"                               , "П", \
+    "^Rcy"                               , "Р", \
+    "^Scy"                               , "С", \
+    "^Tcy"                               , "Т", \
+    "^Ucy"                               , "У", \
+    "^Fcy"                               , "Ф", \
+    "^K^Hcy"                             , "Х", \
+    "^T^Scy"                             , "Ц", \
+    "^C^Hcy"                             , "Ч", \
+    "^S^Hcy"                             , "Ш", \
+    "^S^H^C^Hcy"                         , "Щ", \
+    "^H^A^R^Dcy"                         , "Ъ", \
+    "^Ycy"                               , "Ы", \
+    "^S^O^F^Tcy"                         , "Ь", \
+    "^Ecy"                               , "Э", \
+    "^Y^Ucy"                             , "Ю", \
+    "^Y^Acy"                             , "Я", \
+    "acy"                                , "а", \
+    "bcy"                                , "б", \
+    "vcy"                                , "в", \
+    "gcy"                                , "г", \
+    "dcy"                                , "д", \
+    "iecy"                               , "е", \
+    "zhcy"                               , "ж", \
+    "zcy"                                , "з", \
+    "icy"                                , "и", \
+    "jcy"                                , "й", \
+    "kcy"                                , "к", \
+    "lcy"                                , "л", \
+    "mcy"                                , "м", \
+    "ncy"                                , "н", \
+    "ocy"                                , "о", \
+    "pcy"                                , "п", \
+    "rcy"                                , "р", \
+    "scy"                                , "с", \
+    "tcy"                                , "т", \
+    "ucy"                                , "у", \
+    "fcy"                                , "ф", \
+    "khcy"                               , "х", \
+    "tscy"                               , "ц", \
+    "chcy"                               , "ч", \
+    "shcy"                               , "ш", \
+    "shchcy"                             , "щ", \
+    "hardcy"                             , "ъ", \
+    "ycy"                                , "ы", \
+    "softcy"                             , "ь", \
+    "ecy"                                , "э", \
+    "yucy"                               , "ю", \
+    "yacy"                               , "я", \
+    "iocy"                               , "ё", \
+    "djcy"                               , "ђ", \
+    "gjcy"                               , "ѓ", \
+    "jukcy"                              , "є", \
+    "dscy"                               , "ѕ", \
+    "iukcy"                              , "і", \
+    "yicy"                               , "ї", \
+    "jsercy"                             , "ј", \
+    "ljcy"                               , "љ", \
+    "njcy"                               , "њ", \
+    "tshcy"                              , "ћ", \
+    "kjcy"                               , "ќ", \
+    "ubrcy"                              , "ў", \
+    "dzcy"                               , "џ", \
+    "ensp"                               , " ", \
+    "emsp"                               , " ", \
+    "emsp13"                             , " ", \
+    "emsp14"                             , " ", \
+    "numsp"                              , " ", \
+    "puncsp"                             , " ", \
+    "thinsp"                             , " ", \
+    "^Thin^Space"                        , " ", \
+    "hairsp"                             , " ", \
+    "^Very^Thin^Space"                   , " ", \
+    "^Zero^Width^Space"                  , "​", \
+    "^Negative^Very^Thin^Space"          , "​", \
+    "^Negative^Thin^Space"               , "​", \
+    "^Negative^Medium^Space"             , "​", \
+    "^Negative^Thick^Space"              , "​", \
+    "zwnj"                               , "‌", \
+    "zwj"                                , "‍", \
+    "lrm"                                , "‎", \
+    "rlm"                                , "‏", \
+    "hyphen"                             , "‐", \
+    "dash"                               , "‐", \
+    "ndash"                              , "–", \
+    "mdash"                              , "—", \
+    "horbar"                             , "―", \
+    "^Verbar"                            , "‖", \
+    "^Vert"                              , "‖", \
+    "lsquo"                              , "‘", \
+    "^Open^Curly^Quote"                  , "‘", \
+    "rsquo"                              , "’", \
+    "rsquor"                             , "’", \
+    "^Close^Curly^Quote"                 , "’", \
+    "lsquor"                             , "‚", \
+    "sbquo"                              , "‚", \
+    "ldquo"                              , "“", \
+    "^Open^Curly^Double^Quote"           , "“", \
+    "rdquo"                              , "”", \
+    "rdquor"                             , "”", \
+    "^Close^Curly^Double^Quote"          , "”", \
+    "ldquor"                             , "„", \
+    "bdquo"                              , "„", \
+    "dagger"                             , "†", \
+    "^Dagger"                            , "‡", \
+    "ddagger"                            , "‡", \
+    "bull"                               , "•", \
+    "bullet"                             , "•", \
+    "nldr"                               , "‥", \
+    "hellip"                             , "…", \
+    "mldr"                               , "…", \
+    "permil"                             , "‰", \
+    "pertenk"                            , "‱", \
+    "prime"                              , "′", \
+    "^Prime"                             , "″", \
+    "tprime"                             , "‴", \
+    "bprime"                             , "‵", \
+    "backprime"                          , "‵", \
+    "lsaquo"                             , "‹", \
+    "rsaquo"                             , "›", \
+    "oline"                              , "‾", \
+    "caret"                              , "⁁", \
+    "hybull"                             , "⁃", \
+    "frasl"                              , "⁄", \
+    "bsemi"                              , "⁏", \
+    "qprime"                             , "⁗", \
+    "^Medium^Space"                      , " ", \
+    "^No^Break"                          , "⁠", \
+    "^Apply^Function"                    , "⁡", \
+    "af"                                 , "⁡", \
+    "^Invisible^Times"                   , "⁢", \
+    "it"                                 , "⁢", \
+    "^Invisible^Comma"                   , "⁣", \
+    "ic"                                 , "⁣", \
+    "euro"                               , "€", \
+    "tdot"                               , "⃛", \
+    "^Triple^Dot"                        , "⃛", \
+    "^Dot^Dot"                           , "⃜", \
+    "^Copf"                              , "ℂ", \
+    "complexes"                          , "ℂ", \
+    "incare"                             , "℅", \
+    "gscr"                               , "ℊ", \
+    "hamilt"                             , "ℋ", \
+    "^Hilbert^Space"                     , "ℋ", \
+    "^Hscr"                              , "ℋ", \
+    "^Hfr"                               , "ℌ", \
+    "^Poincareplane"                     , "ℌ", \
+    "quaternions"                        , "ℍ", \
+    "^Hopf"                              , "ℍ", \
+    "planckh"                            , "ℎ", \
+    "planck"                             , "ℏ", \
+    "hbar"                               , "ℏ", \
+    "plankv"                             , "ℏ", \
+    "hslash"                             , "ℏ", \
+    "^Iscr"                              , "ℐ", \
+    "imagline"                           , "ℐ", \
+    "image"                              , "ℑ", \
+    "^Im"                                , "ℑ", \
+    "imagpart"                           , "ℑ", \
+    "^Ifr"                               , "ℑ", \
+    "^Lscr"                              , "ℒ", \
+    "lagran"                             , "ℒ", \
+    "^Laplacetrf"                        , "ℒ", \
+    "ell"                                , "ℓ", \
+    "^Nopf"                              , "ℕ", \
+    "naturals"                           , "ℕ", \
+    "numero"                             , "№", \
+    "copysr"                             , "℗", \
+    "weierp"                             , "℘", \
+    "wp"                                 , "℘", \
+    "^Popf"                              , "ℙ", \
+    "primes"                             , "ℙ", \
+    "rationals"                          , "ℚ", \
+    "^Qopf"                              , "ℚ", \
+    "^Rscr"                              , "ℛ", \
+    "realine"                            , "ℛ", \
+    "real"                               , "ℜ", \
+    "^Re"                                , "ℜ", \
+    "realpart"                           , "ℜ", \
+    "^Rfr"                               , "ℜ", \
+    "reals"                              , "ℝ", \
+    "^Ropf"                              , "ℝ", \
+    "rx"                                 , "℞", \
+    "trade"                              , "™", \
+    "^T^R^A^D^E"                         , "™", \
+    "integers"                           , "ℤ", \
+    "^Zopf"                              , "ℤ", \
+    "ohm"                                , "Ω", \
+    "mho"                                , "℧", \
+    "^Zfr"                               , "ℨ", \
+    "zeetrf"                             , "ℨ", \
+    "iiota"                              , "℩", \
+    "angst"                              , "Å", \
+    "bernou"                             , "ℬ", \
+    "^Bernoullis"                        , "ℬ", \
+    "^Bscr"                              , "ℬ", \
+    "^Cfr"                               , "ℭ", \
+    "^Cayleys"                           , "ℭ", \
+    "escr"                               , "ℯ", \
+    "^Escr"                              , "ℰ", \
+    "expectation"                        , "ℰ", \
+    "^Fscr"                              , "ℱ", \
+    "^Fouriertrf"                        , "ℱ", \
+    "phmmat"                             , "ℳ", \
+    "^Mellintrf"                         , "ℳ", \
+    "^Mscr"                              , "ℳ", \
+    "order"                              , "ℴ", \
+    "orderof"                            , "ℴ", \
+    "oscr"                               , "ℴ", \
+    "alefsym"                            , "ℵ", \
+    "aleph"                              , "ℵ", \
+    "beth"                               , "ℶ", \
+    "gimel"                              , "ℷ", \
+    "daleth"                             , "ℸ", \
+    "^Capital^Differential^D"            , "ⅅ", \
+    "^D^D"                               , "ⅅ", \
+    "^Differential^D"                    , "ⅆ", \
+    "dd"                                 , "ⅆ", \
+    "^Exponential^E"                     , "ⅇ", \
+    "exponentiale"                       , "ⅇ", \
+    "ee"                                 , "ⅇ", \
+    "^Imaginary^I"                       , "ⅈ", \
+    "ii"                                 , "ⅈ", \
+    "frac13"                             , "⅓", \
+    "frac23"                             , "⅔", \
+    "frac15"                             , "⅕", \
+    "frac25"                             , "⅖", \
+    "frac35"                             , "⅗", \
+    "frac45"                             , "⅘", \
+    "frac16"                             , "⅙", \
+    "frac56"                             , "⅚", \
+    "frac18"                             , "⅛", \
+    "frac38"                             , "⅜", \
+    "frac58"                             , "⅝", \
+    "frac78"                             , "⅞", \
+    "larr"                               , "←", \
+    "leftarrow"                          , "←", \
+    "^Left^Arrow"                        , "←", \
+    "slarr"                              , "←", \
+    "^Short^Left^Arrow"                  , "←", \
+    "uarr"                               , "↑", \
+    "uparrow"                            , "↑", \
+    "^Up^Arrow"                          , "↑", \
+    "^Short^Up^Arrow"                    , "↑", \
+    "rarr"                               , "→", \
+    "rightarrow"                         , "→", \
+    "^Right^Arrow"                       , "→", \
+    "srarr"                              , "→", \
+    "^Short^Right^Arrow"                 , "→", \
+    "darr"                               , "↓", \
+    "downarrow"                          , "↓", \
+    "^Down^Arrow"                        , "↓", \
+    "^Short^Down^Arrow"                  , "↓", \
+    "harr"                               , "↔", \
+    "leftrightarrow"                     , "↔", \
+    "^Left^Right^Arrow"                  , "↔", \
+    "varr"                               , "↕", \
+    "updownarrow"                        , "↕", \
+    "^Up^Down^Arrow"                     , "↕", \
+    "nwarr"                              , "↖", \
+    "^Upper^Left^Arrow"                  , "↖", \
+    "nwarrow"                            , "↖", \
+    "nearr"                              , "↗", \
+    "^Upper^Right^Arrow"                 , "↗", \
+    "nearrow"                            , "↗", \
+    "searr"                              , "↘", \
+    "searrow"                            , "↘", \
+    "^Lower^Right^Arrow"                 , "↘", \
+    "swarr"                              , "↙", \
+    "swarrow"                            , "↙", \
+    "^Lower^Left^Arrow"                  , "↙", \
+    "nlarr"                              , "↚", \
+    "nleftarrow"                         , "↚", \
+    "nrarr"                              , "↛", \
+    "nrightarrow"                        , "↛", \
+    "rarrw"                              , "↝", \
+    "rightsquigarrow"                    , "↝", \
+    "^Larr"                              , "↞", \
+    "twoheadleftarrow"                   , "↞", \
+    "^Uarr"                              , "↟", \
+    "^Rarr"                              , "↠", \
+    "twoheadrightarrow"                  , "↠", \
+    "^Darr"                              , "↡", \
+    "larrtl"                             , "↢", \
+    "leftarrowtail"                      , "↢", \
+    "rarrtl"                             , "↣", \
+    "rightarrowtail"                     , "↣", \
+    "^Left^Tee^Arrow"                    , "↤", \
+    "mapstoleft"                         , "↤", \
+    "^Up^Tee^Arrow"                      , "↥", \
+    "mapstoup"                           , "↥", \
+    "map"                                , "↦", \
+    "^Right^Tee^Arrow"                   , "↦", \
+    "mapsto"                             , "↦", \
+    "^Down^Tee^Arrow"                    , "↧", \
+    "mapstodown"                         , "↧", \
+    "larrhk"                             , "↩", \
+    "hookleftarrow"                      , "↩", \
+    "rarrhk"                             , "↪", \
+    "hookrightarrow"                     , "↪", \
+    "larrlp"                             , "↫", \
+    "looparrowleft"                      , "↫", \
+    "rarrlp"                             , "↬", \
+    "looparrowright"                     , "↬", \
+    "harrw"                              , "↭", \
+    "leftrightsquigarrow"                , "↭", \
+    "nharr"                              , "↮", \
+    "nleftrightarrow"                    , "↮", \
+    "lsh"                                , "↰", \
+    "^Lsh"                               , "↰", \
+    "rsh"                                , "↱", \
+    "^Rsh"                               , "↱", \
+    "ldsh"                               , "↲", \
+    "rdsh"                               , "↳", \
+    "crarr"                              , "↵", \
+    "cularr"                             , "↶", \
+    "curvearrowleft"                     , "↶", \
+    "curarr"                             , "↷", \
+    "curvearrowright"                    , "↷", \
+    "olarr"                              , "↺", \
+    "circlearrowleft"                    , "↺", \
+    "orarr"                              , "↻", \
+    "circlearrowright"                   , "↻", \
+    "lharu"                              , "↼", \
+    "^Left^Vector"                       , "↼", \
+    "leftharpoonup"                      , "↼", \
+    "lhard"                              , "↽", \
+    "leftharpoondown"                    , "↽", \
+    "^Down^Left^Vector"                  , "↽", \
+    "uharr"                              , "↾", \
+    "upharpoonright"                     , "↾", \
+    "^Right^Up^Vector"                   , "↾", \
+    "uharl"                              , "↿", \
+    "upharpoonleft"                      , "↿", \
+    "^Left^Up^Vector"                    , "↿", \
+    "rharu"                              , "⇀", \
+    "^Right^Vector"                      , "⇀", \
+    "rightharpoonup"                     , "⇀", \
+    "rhard"                              , "⇁", \
+    "rightharpoondown"                   , "⇁", \
+    "^Down^Right^Vector"                 , "⇁", \
+    "dharr"                              , "⇂", \
+    "^Right^Down^Vector"                 , "⇂", \
+    "downharpoonright"                   , "⇂", \
+    "dharl"                              , "⇃", \
+    "^Left^Down^Vector"                  , "⇃", \
+    "downharpoonleft"                    , "⇃", \
+    "rlarr"                              , "⇄", \
+    "rightleftarrows"                    , "⇄", \
+    "^Right^Arrow^Left^Arrow"            , "⇄", \
+    "udarr"                              , "⇅", \
+    "^Up^Arrow^Down^Arrow"               , "⇅", \
+    "lrarr"                              , "⇆", \
+    "leftrightarrows"                    , "⇆", \
+    "^Left^Arrow^Right^Arrow"            , "⇆", \
+    "llarr"                              , "⇇", \
+    "leftleftarrows"                     , "⇇", \
+    "uuarr"                              , "⇈", \
+    "upuparrows"                         , "⇈", \
+    "rrarr"                              , "⇉", \
+    "rightrightarrows"                   , "⇉", \
+    "ddarr"                              , "⇊", \
+    "downdownarrows"                     , "⇊", \
+    "lrhar"                              , "⇋", \
+    "^Reverse^Equilibrium"               , "⇋", \
+    "leftrightharpoons"                  , "⇋", \
+    "rlhar"                              , "⇌", \
+    "rightleftharpoons"                  , "⇌", \
+    "^Equilibrium"                       , "⇌", \
+    "nl^Arr"                             , "⇍", \
+    "n^Leftarrow"                        , "⇍", \
+    "nh^Arr"                             , "⇎", \
+    "n^Leftrightarrow"                   , "⇎", \
+    "nr^Arr"                             , "⇏", \
+    "n^Rightarrow"                       , "⇏", \
+    "l^Arr"                              , "⇐", \
+    "^Leftarrow"                         , "⇐", \
+    "^Double^Left^Arrow"                 , "⇐", \
+    "u^Arr"                              , "⇑", \
+    "^Uparrow"                           , "⇑", \
+    "^Double^Up^Arrow"                   , "⇑", \
+    "r^Arr"                              , "⇒", \
+    "^Rightarrow"                        , "⇒", \
+    "^Implies"                           , "⇒", \
+    "^Double^Right^Arrow"                , "⇒", \
+    "d^Arr"                              , "⇓", \
+    "^Downarrow"                         , "⇓", \
+    "^Double^Down^Arrow"                 , "⇓", \
+    "h^Arr"                              , "⇔", \
+    "^Leftrightarrow"                    , "⇔", \
+    "^Double^Left^Right^Arrow"           , "⇔", \
+    "iff"                                , "⇔", \
+    "v^Arr"                              , "⇕", \
+    "^Updownarrow"                       , "⇕", \
+    "^Double^Up^Down^Arrow"              , "⇕", \
+    "nw^Arr"                             , "⇖", \
+    "ne^Arr"                             , "⇗", \
+    "se^Arr"                             , "⇘", \
+    "sw^Arr"                             , "⇙", \
+    "l^Aarr"                             , "⇚", \
+    "^Lleftarrow"                        , "⇚", \
+    "r^Aarr"                             , "⇛", \
+    "^Rrightarrow"                       , "⇛", \
+    "zigrarr"                            , "⇝", \
+    "larrb"                              , "⇤", \
+    "^Left^Arrow^Bar"                    , "⇤", \
+    "rarrb"                              , "⇥", \
+    "^Right^Arrow^Bar"                   , "⇥", \
+    "duarr"                              , "⇵", \
+    "^Down^Arrow^Up^Arrow"               , "⇵", \
+    "loarr"                              , "⇽", \
+    "roarr"                              , "⇾", \
+    "hoarr"                              , "⇿", \
+    "forall"                             , "∀", \
+    "^For^All"                           , "∀", \
+    "comp"                               , "∁", \
+    "complement"                         , "∁", \
+    "part"                               , "∂", \
+    "^Partial^D"                         , "∂", \
+    "exist"                              , "∃", \
+    "^Exists"                            , "∃", \
+    "nexist"                             , "∄", \
+    "^Not^Exists"                        , "∄", \
+    "nexists"                            , "∄", \
+    "empty"                              , "∅", \
+    "emptyset"                           , "∅", \
+    "emptyv"                             , "∅", \
+    "varnothing"                         , "∅", \
+    "nabla"                              , "∇", \
+    "^Del"                               , "∇", \
+    "isin"                               , "∈", \
+    "isinv"                              , "∈", \
+    "^Element"                           , "∈", \
+    "in"                                 , "∈", \
+    "notin"                              , "∉", \
+    "^Not^Element"                       , "∉", \
+    "notinva"                            , "∉", \
+    "niv"                                , "∋", \
+    "^Reverse^Element"                   , "∋", \
+    "ni"                                 , "∋", \
+    "^Such^That"                         , "∋", \
+    "notni"                              , "∌", \
+    "notniva"                            , "∌", \
+    "^Not^Reverse^Element"               , "∌", \
+    "prod"                               , "∏", \
+    "^Product"                           , "∏", \
+    "coprod"                             , "∐", \
+    "^Coproduct"                         , "∐", \
+    "sum"                                , "∑", \
+    "^Sum"                               , "∑", \
+    "minus"                              , "−", \
+    "mnplus"                             , "∓", \
+    "mp"                                 , "∓", \
+    "^Minus^Plus"                        , "∓", \
+    "plusdo"                             , "∔", \
+    "dotplus"                            , "∔", \
+    "setmn"                              , "∖", \
+    "setminus"                           , "∖", \
+    "^Backslash"                         , "∖", \
+    "ssetmn"                             , "∖", \
+    "smallsetminus"                      , "∖", \
+    "lowast"                             , "∗", \
+    "compfn"                             , "∘", \
+    "^Small^Circle"                      , "∘", \
+    "radic"                              , "√", \
+    "^Sqrt"                              , "√", \
+    "prop"                               , "∝", \
+    "propto"                             , "∝", \
+    "^Proportional"                      , "∝", \
+    "vprop"                              , "∝", \
+    "varpropto"                          , "∝", \
+    "infin"                              , "∞", \
+    "angrt"                              , "∟", \
+    "ang"                                , "∠", \
+    "angle"                              , "∠", \
+    "angmsd"                             , "∡", \
+    "measuredangle"                      , "∡", \
+    "angsph"                             , "∢", \
+    "mid"                                , "∣", \
+    "^Vertical^Bar"                      , "∣", \
+    "smid"                               , "∣", \
+    "shortmid"                           , "∣", \
+    "nmid"                               , "∤", \
+    "^Not^Vertical^Bar"                  , "∤", \
+    "nsmid"                              , "∤", \
+    "nshortmid"                          , "∤", \
+    "par"                                , "∥", \
+    "parallel"                           , "∥", \
+    "^Double^Vertical^Bar"               , "∥", \
+    "spar"                               , "∥", \
+    "shortparallel"                      , "∥", \
+    "npar"                               , "∦", \
+    "nparallel"                          , "∦", \
+    "^Not^Double^Vertical^Bar"           , "∦", \
+    "nspar"                              , "∦", \
+    "nshortparallel"                     , "∦", \
+    "and"                                , "∧", \
+    "wedge"                              , "∧", \
+    "or"                                 , "∨", \
+    "vee"                                , "∨", \
+    "cap"                                , "∩", \
+    "cup"                                , "∪", \
+    "int"                                , "∫", \
+    "^Integral"                          , "∫", \
+    "^Int"                               , "∬", \
+    "tint"                               , "∭", \
+    "iiint"                              , "∭", \
+    "conint"                             , "∮", \
+    "oint"                               , "∮", \
+    "^Contour^Integral"                  , "∮", \
+    "^Conint"                            , "∯", \
+    "^Double^Contour^Integral"           , "∯", \
+    "^Cconint"                           , "∰", \
+    "cwint"                              , "∱", \
+    "cwconint"                           , "∲", \
+    "^Clockwise^Contour^Integral"        , "∲", \
+    "awconint"                           , "∳", \
+    "^Counter^Clockwise^Contour^Integral", "∳", \
+    "there4"                             , "∴", \
+    "therefore"                          , "∴", \
+    "^Therefore"                         , "∴", \
+    "becaus"                             , "∵", \
+    "because"                            , "∵", \
+    "^Because"                           , "∵", \
+    "ratio"                              , "∶", \
+    "^Colon"                             , "∷", \
+    "^Proportion"                        , "∷", \
+    "minusd"                             , "∸", \
+    "dotminus"                           , "∸", \
+    "m^D^Dot"                            , "∺", \
+    "homtht"                             , "∻", \
+    "sim"                                , "∼", \
+    "^Tilde"                             , "∼", \
+    "thksim"                             , "∼", \
+    "thicksim"                           , "∼", \
+    "bsim"                               , "∽", \
+    "backsim"                            , "∽", \
+    "ac"                                 , "∾", \
+    "mstpos"                             , "∾", \
+    "acd"                                , "∿", \
+    "wreath"                             , "≀", \
+    "^Vertical^Tilde"                    , "≀", \
+    "wr"                                 , "≀", \
+    "nsim"                               , "≁", \
+    "^Not^Tilde"                         , "≁", \
+    "esim"                               , "≂", \
+    "^Equal^Tilde"                       , "≂", \
+    "eqsim"                              , "≂", \
+    "sime"                               , "≃", \
+    "^Tilde^Equal"                       , "≃", \
+    "simeq"                              , "≃", \
+    "nsime"                              , "≄", \
+    "nsimeq"                             , "≄", \
+    "^Not^Tilde^Equal"                   , "≄", \
+    "cong"                               , "≅", \
+    "^Tilde^Full^Equal"                  , "≅", \
+    "simne"                              , "≆", \
+    "ncong"                              , "≇", \
+    "^Not^Tilde^Full^Equal"              , "≇", \
+    "asymp"                              , "≈", \
+    "ap"                                 , "≈", \
+    "^Tilde^Tilde"                       , "≈", \
+    "approx"                             , "≈", \
+    "thkap"                              , "≈", \
+    "thickapprox"                        , "≈", \
+    "nap"                                , "≉", \
+    "^Not^Tilde^Tilde"                   , "≉", \
+    "napprox"                            , "≉", \
+    "ape"                                , "≊", \
+    "approxeq"                           , "≊", \
+    "apid"                               , "≋", \
+    "bcong"                              , "≌", \
+    "backcong"                           , "≌", \
+    "asympeq"                            , "≍", \
+    "^Cup^Cap"                           , "≍", \
+    "bump"                               , "≎", \
+    "^Hump^Down^Hump"                    , "≎", \
+    "^Bumpeq"                            , "≎", \
+    "bumpe"                              , "≏", \
+    "^Hump^Equal"                        , "≏", \
+    "bumpeq"                             , "≏", \
+    "esdot"                              , "≐", \
+    "^Dot^Equal"                         , "≐", \
+    "doteq"                              , "≐", \
+    "e^Dot"                              , "≑", \
+    "doteqdot"                           , "≑", \
+    "ef^Dot"                             , "≒", \
+    "fallingdotseq"                      , "≒", \
+    "er^Dot"                             , "≓", \
+    "risingdotseq"                       , "≓", \
+    "colone"                             , "≔", \
+    "coloneq"                            , "≔", \
+    "^Assign"                            , "≔", \
+    "ecolon"                             , "≕", \
+    "eqcolon"                            , "≕", \
+    "ecir"                               , "≖", \
+    "eqcirc"                             , "≖", \
+    "cire"                               , "≗", \
+    "circeq"                             , "≗", \
+    "wedgeq"                             , "≙", \
+    "veeeq"                              , "≚", \
+    "trie"                               , "≜", \
+    "triangleq"                          , "≜", \
+    "equest"                             , "≟", \
+    "questeq"                            , "≟", \
+    "ne"                                 , "≠", \
+    "^Not^Equal"                         , "≠", \
+    "equiv"                              , "≡", \
+    "^Congruent"                         , "≡", \
+    "nequiv"                             , "≢", \
+    "^Not^Congruent"                     , "≢", \
+    "le"                                 , "≤", \
+    "leq"                                , "≤", \
+    "ge"                                 , "≥", \
+    "^Greater^Equal"                     , "≥", \
+    "geq"                                , "≥", \
+    "l^E"                                , "≦", \
+    "^Less^Full^Equal"                   , "≦", \
+    "leqq"                               , "≦", \
+    "g^E"                                , "≧", \
+    "^Greater^Full^Equal"                , "≧", \
+    "geqq"                               , "≧", \
+    "ln^E"                               , "≨", \
+    "lneqq"                              , "≨", \
+    "gn^E"                               , "≩", \
+    "gneqq"                              , "≩", \
+    "^Lt"                                , "≪", \
+    "^Nested^Less^Less"                  , "≪", \
+    "ll"                                 , "≪", \
+    "^Gt"                                , "≫", \
+    "^Nested^Greater^Greater"            , "≫", \
+    "gg"                                 , "≫", \
+    "twixt"                              , "≬", \
+    "between"                            , "≬", \
+    "^Not^Cup^Cap"                       , "≭", \
+    "nlt"                                , "≮", \
+    "^Not^Less"                          , "≮", \
+    "nless"                              , "≮", \
+    "ngt"                                , "≯", \
+    "^Not^Greater"                       , "≯", \
+    "ngtr"                               , "≯", \
+    "nle"                                , "≰", \
+    "^Not^Less^Equal"                    , "≰", \
+    "nleq"                               , "≰", \
+    "nge"                                , "≱", \
+    "^Not^Greater^Equal"                 , "≱", \
+    "ngeq"                               , "≱", \
+    "lsim"                               , "≲", \
+    "^Less^Tilde"                        , "≲", \
+    "lesssim"                            , "≲", \
+    "gsim"                               , "≳", \
+    "gtrsim"                             , "≳", \
+    "^Greater^Tilde"                     , "≳", \
+    "nlsim"                              , "≴", \
+    "^Not^Less^Tilde"                    , "≴", \
+    "ngsim"                              , "≵", \
+    "^Not^Greater^Tilde"                 , "≵", \
+    "lg"                                 , "≶", \
+    "lessgtr"                            , "≶", \
+    "^Less^Greater"                      , "≶", \
+    "gl"                                 , "≷", \
+    "gtrless"                            , "≷", \
+    "^Greater^Less"                      , "≷", \
+    "ntlg"                               , "≸", \
+    "^Not^Less^Greater"                  , "≸", \
+    "ntgl"                               , "≹", \
+    "^Not^Greater^Less"                  , "≹", \
+    "pr"                                 , "≺", \
+    "^Precedes"                          , "≺", \
+    "prec"                               , "≺", \
+    "sc"                                 , "≻", \
+    "^Succeeds"                          , "≻", \
+    "succ"                               , "≻", \
+    "prcue"                              , "≼", \
+    "^Precedes^Slant^Equal"              , "≼", \
+    "preccurlyeq"                        , "≼", \
+    "sccue"                              , "≽", \
+    "^Succeeds^Slant^Equal"              , "≽", \
+    "succcurlyeq"                        , "≽", \
+    "prsim"                              , "≾", \
+    "precsim"                            , "≾", \
+    "^Precedes^Tilde"                    , "≾", \
+    "scsim"                              , "≿", \
+    "succsim"                            , "≿", \
+    "^Succeeds^Tilde"                    , "≿", \
+    "npr"                                , "⊀", \
+    "nprec"                              , "⊀", \
+    "^Not^Precedes"                      , "⊀", \
+    "nsc"                                , "⊁", \
+    "nsucc"                              , "⊁", \
+    "^Not^Succeeds"                      , "⊁", \
+    "sub"                                , "⊂", \
+    "subset"                             , "⊂", \
+    "sup"                                , "⊃", \
+    "supset"                             , "⊃", \
+    "^Superset"                          , "⊃", \
+    "nsub"                               , "⊄", \
+    "nsup"                               , "⊅", \
+    "sube"                               , "⊆", \
+    "^Subset^Equal"                      , "⊆", \
+    "subseteq"                           , "⊆", \
+    "supe"                               , "⊇", \
+    "supseteq"                           , "⊇", \
+    "^Superset^Equal"                    , "⊇", \
+    "nsube"                              , "⊈", \
+    "nsubseteq"                          , "⊈", \
+    "^Not^Subset^Equal"                  , "⊈", \
+    "nsupe"                              , "⊉", \
+    "nsupseteq"                          , "⊉", \
+    "^Not^Superset^Equal"                , "⊉", \
+    "subne"                              , "⊊", \
+    "subsetneq"                          , "⊊", \
+    "supne"                              , "⊋", \
+    "supsetneq"                          , "⊋", \
+    "cupdot"                             , "⊍", \
+    "uplus"                              , "⊎", \
+    "^Union^Plus"                        , "⊎", \
+    "sqsub"                              , "⊏", \
+    "^Square^Subset"                     , "⊏", \
+    "sqsubset"                           , "⊏", \
+    "sqsup"                              , "⊐", \
+    "^Square^Superset"                   , "⊐", \
+    "sqsupset"                           , "⊐", \
+    "sqsube"                             , "⊑", \
+    "^Square^Subset^Equal"               , "⊑", \
+    "sqsubseteq"                         , "⊑", \
+    "sqsupe"                             , "⊒", \
+    "^Square^Superset^Equal"             , "⊒", \
+    "sqsupseteq"                         , "⊒", \
+    "sqcap"                              , "⊓", \
+    "^Square^Intersection"               , "⊓", \
+    "sqcup"                              , "⊔", \
+    "^Square^Union"                      , "⊔", \
+    "oplus"                              , "⊕", \
+    "^Circle^Plus"                       , "⊕", \
+    "ominus"                             , "⊖", \
+    "^Circle^Minus"                      , "⊖", \
+    "otimes"                             , "⊗", \
+    "^Circle^Times"                      , "⊗", \
+    "osol"                               , "⊘", \
+    "odot"                               , "⊙", \
+    "^Circle^Dot"                        , "⊙", \
+    "ocir"                               , "⊚", \
+    "circledcirc"                        , "⊚", \
+    "oast"                               , "⊛", \
+    "circledast"                         , "⊛", \
+    "odash"                              , "⊝", \
+    "circleddash"                        , "⊝", \
+    "plusb"                              , "⊞", \
+    "boxplus"                            , "⊞", \
+    "minusb"                             , "⊟", \
+    "boxminus"                           , "⊟", \
+    "timesb"                             , "⊠", \
+    "boxtimes"                           , "⊠", \
+    "sdotb"                              , "⊡", \
+    "dotsquare"                          , "⊡", \
+    "vdash"                              , "⊢", \
+    "^Right^Tee"                         , "⊢", \
+    "dashv"                              , "⊣", \
+    "^Left^Tee"                          , "⊣", \
+    "top"                                , "⊤", \
+    "^Down^Tee"                          , "⊤", \
+    "bottom"                             , "⊥", \
+    "bot"                                , "⊥", \
+    "perp"                               , "⊥", \
+    "^Up^Tee"                            , "⊥", \
+    "models"                             , "⊧", \
+    "v^Dash"                             , "⊨", \
+    "^Double^Right^Tee"                  , "⊨", \
+    "^Vdash"                             , "⊩", \
+    "^Vvdash"                            , "⊪", \
+    "^V^Dash"                            , "⊫", \
+    "nvdash"                             , "⊬", \
+    "nv^Dash"                            , "⊭", \
+    "n^Vdash"                            , "⊮", \
+    "n^V^Dash"                           , "⊯", \
+    "prurel"                             , "⊰", \
+    "vltri"                              , "⊲", \
+    "vartriangleleft"                    , "⊲", \
+    "^Left^Triangle"                     , "⊲", \
+    "vrtri"                              , "⊳", \
+    "vartriangleright"                   , "⊳", \
+    "^Right^Triangle"                    , "⊳", \
+    "ltrie"                              , "⊴", \
+    "trianglelefteq"                     , "⊴", \
+    "^Left^Triangle^Equal"               , "⊴", \
+    "rtrie"                              , "⊵", \
+    "trianglerighteq"                    , "⊵", \
+    "^Right^Triangle^Equal"              , "⊵", \
+    "origof"                             , "⊶", \
+    "imof"                               , "⊷", \
+    "mumap"                              , "⊸", \
+    "multimap"                           , "⊸", \
+    "hercon"                             , "⊹", \
+    "intcal"                             , "⊺", \
+    "intercal"                           , "⊺", \
+    "veebar"                             , "⊻", \
+    "barvee"                             , "⊽", \
+    "angrtvb"                            , "⊾", \
+    "lrtri"                              , "⊿", \
+    "xwedge"                             , "⋀", \
+    "^Wedge"                             , "⋀", \
+    "bigwedge"                           , "⋀", \
+    "xvee"                               , "⋁", \
+    "^Vee"                               , "⋁", \
+    "bigvee"                             , "⋁", \
+    "xcap"                               , "⋂", \
+    "^Intersection"                      , "⋂", \
+    "bigcap"                             , "⋂", \
+    "xcup"                               , "⋃", \
+    "^Union"                             , "⋃", \
+    "bigcup"                             , "⋃", \
+    "diam"                               , "⋄", \
+    "diamond"                            , "⋄", \
+    "^Diamond"                           , "⋄", \
+    "sdot"                               , "⋅", \
+    "sstarf"                             , "⋆", \
+    "^Star"                              , "⋆", \
+    "divonx"                             , "⋇", \
+    "divideontimes"                      , "⋇", \
+    "bowtie"                             , "⋈", \
+    "ltimes"                             , "⋉", \
+    "rtimes"                             , "⋊", \
+    "lthree"                             , "⋋", \
+    "leftthreetimes"                     , "⋋", \
+    "rthree"                             , "⋌", \
+    "rightthreetimes"                    , "⋌", \
+    "bsime"                              , "⋍", \
+    "backsimeq"                          , "⋍", \
+    "cuvee"                              , "⋎", \
+    "curlyvee"                           , "⋎", \
+    "cuwed"                              , "⋏", \
+    "curlywedge"                         , "⋏", \
+    "^Sub"                               , "⋐", \
+    "^Subset"                            , "⋐", \
+    "^Sup"                               , "⋑", \
+    "^Supset"                            , "⋑", \
+    "^Cap"                               , "⋒", \
+    "^Cup"                               , "⋓", \
+    "fork"                               , "⋔", \
+    "pitchfork"                          , "⋔", \
+    "epar"                               , "⋕", \
+    "ltdot"                              , "⋖", \
+    "lessdot"                            , "⋖", \
+    "gtdot"                              , "⋗", \
+    "gtrdot"                             , "⋗", \
+    "^Ll"                                , "⋘", \
+    "^Gg"                                , "⋙", \
+    "ggg"                                , "⋙", \
+    "leg"                                , "⋚", \
+    "^Less^Equal^Greater"                , "⋚", \
+    "lesseqgtr"                          , "⋚", \
+    "gel"                                , "⋛", \
+    "gtreqless"                          , "⋛", \
+    "^Greater^Equal^Less"                , "⋛", \
+    "cuepr"                              , "⋞", \
+    "curlyeqprec"                        , "⋞", \
+    "cuesc"                              , "⋟", \
+    "curlyeqsucc"                        , "⋟", \
+    "nprcue"                             , "⋠", \
+    "^Not^Precedes^Slant^Equal"          , "⋠", \
+    "nsccue"                             , "⋡", \
+    "^Not^Succeeds^Slant^Equal"          , "⋡", \
+    "nsqsube"                            , "⋢", \
+    "^Not^Square^Subset^Equal"           , "⋢", \
+    "nsqsupe"                            , "⋣", \
+    "^Not^Square^Superset^Equal"         , "⋣", \
+    "lnsim"                              , "⋦", \
+    "gnsim"                              , "⋧", \
+    "prnsim"                             , "⋨", \
+    "precnsim"                           , "⋨", \
+    "scnsim"                             , "⋩", \
+    "succnsim"                           , "⋩", \
+    "nltri"                              , "⋪", \
+    "ntriangleleft"                      , "⋪", \
+    "^Not^Left^Triangle"                 , "⋪", \
+    "nrtri"                              , "⋫", \
+    "ntriangleright"                     , "⋫", \
+    "^Not^Right^Triangle"                , "⋫", \
+    "nltrie"                             , "⋬", \
+    "ntrianglelefteq"                    , "⋬", \
+    "^Not^Left^Triangle^Equal"           , "⋬", \
+    "nrtrie"                             , "⋭", \
+    "ntrianglerighteq"                   , "⋭", \
+    "^Not^Right^Triangle^Equal"          , "⋭", \
+    "vellip"                             , "⋮", \
+    "ctdot"                              , "⋯", \
+    "utdot"                              , "⋰", \
+    "dtdot"                              , "⋱", \
+    "disin"                              , "⋲", \
+    "isinsv"                             , "⋳", \
+    "isins"                              , "⋴", \
+    "isindot"                            , "⋵", \
+    "notinvc"                            , "⋶", \
+    "notinvb"                            , "⋷", \
+    "isin^E"                             , "⋹", \
+    "nisd"                               , "⋺", \
+    "xnis"                               , "⋻", \
+    "nis"                                , "⋼", \
+    "notnivc"                            , "⋽", \
+    "notnivb"                            , "⋾", \
+    "barwed"                             , "⌅", \
+    "barwedge"                           , "⌅", \
+    "^Barwed"                            , "⌆", \
+    "doublebarwedge"                     , "⌆", \
+    "lceil"                              , "⌈", \
+    "^Left^Ceiling"                      , "⌈", \
+    "rceil"                              , "⌉", \
+    "^Right^Ceiling"                     , "⌉", \
+    "lfloor"                             , "⌊", \
+    "^Left^Floor"                        , "⌊", \
+    "rfloor"                             , "⌋", \
+    "^Right^Floor"                       , "⌋", \
+    "drcrop"                             , "⌌", \
+    "dlcrop"                             , "⌍", \
+    "urcrop"                             , "⌎", \
+    "ulcrop"                             , "⌏", \
+    "bnot"                               , "⌐", \
+    "profline"                           , "⌒", \
+    "profsurf"                           , "⌓", \
+    "telrec"                             , "⌕", \
+    "target"                             , "⌖", \
+    "ulcorn"                             , "⌜", \
+    "ulcorner"                           , "⌜", \
+    "urcorn"                             , "⌝", \
+    "urcorner"                           , "⌝", \
+    "dlcorn"                             , "⌞", \
+    "llcorner"                           , "⌞", \
+    "drcorn"                             , "⌟", \
+    "lrcorner"                           , "⌟", \
+    "frown"                              , "⌢", \
+    "sfrown"                             , "⌢", \
+    "smile"                              , "⌣", \
+    "ssmile"                             , "⌣", \
+    "cylcty"                             , "⌭", \
+    "profalar"                           , "⌮", \
+    "topbot"                             , "⌶", \
+    "ovbar"                              , "⌽", \
+    "solbar"                             , "⌿", \
+    "angzarr"                            , "⍼", \
+    "lmoust"                             , "⎰", \
+    "lmoustache"                         , "⎰", \
+    "rmoust"                             , "⎱", \
+    "rmoustache"                         , "⎱", \
+    "tbrk"                               , "⎴", \
+    "^Over^Bracket"                      , "⎴", \
+    "bbrk"                               , "⎵", \
+    "^Under^Bracket"                     , "⎵", \
+    "bbrktbrk"                           , "⎶", \
+    "^Over^Parenthesis"                  , "⏜", \
+    "^Under^Parenthesis"                 , "⏝", \
+    "^Over^Brace"                        , "⏞", \
+    "^Under^Brace"                       , "⏟", \
+    "trpezium"                           , "⏢", \
+    "elinters"                           , "⏧", \
+    "blank"                              , "␣", \
+    "o^S"                                , "Ⓢ", \
+    "circled^S"                          , "Ⓢ", \
+    "boxh"                               , "─", \
+    "^Horizontal^Line"                   , "─", \
+    "boxv"                               , "│", \
+    "boxdr"                              , "┌", \
+    "boxdl"                              , "┐", \
+    "boxur"                              , "└", \
+    "boxul"                              , "┘", \
+    "boxvr"                              , "├", \
+    "boxvl"                              , "┤", \
+    "boxhd"                              , "┬", \
+    "boxhu"                              , "┴", \
+    "boxvh"                              , "┼", \
+    "box^H"                              , "═", \
+    "box^V"                              , "║", \
+    "boxd^R"                             , "╒", \
+    "box^Dr"                             , "╓", \
+    "box^D^R"                            , "╔", \
+    "boxd^L"                             , "╕", \
+    "box^Dl"                             , "╖", \
+    "box^D^L"                            , "╗", \
+    "boxu^R"                             , "╘", \
+    "box^Ur"                             , "╙", \
+    "box^U^R"                            , "╚", \
+    "boxu^L"                             , "╛", \
+    "box^Ul"                             , "╜", \
+    "box^U^L"                            , "╝", \
+    "boxv^R"                             , "╞", \
+    "box^Vr"                             , "╟", \
+    "box^V^R"                            , "╠", \
+    "boxv^L"                             , "╡", \
+    "box^Vl"                             , "╢", \
+    "box^V^L"                            , "╣", \
+    "box^Hd"                             , "╤", \
+    "boxh^D"                             , "╥", \
+    "box^H^D"                            , "╦", \
+    "box^Hu"                             , "╧", \
+    "boxh^U"                             , "╨", \
+    "box^H^U"                            , "╩", \
+    "boxv^H"                             , "╪", \
+    "box^Vh"                             , "╫", \
+    "box^V^H"                            , "╬", \
+    "uhblk"                              , "▀", \
+    "lhblk"                              , "▄", \
+    "block"                              , "█", \
+    "blk14"                              , "░", \
+    "blk12"                              , "▒", \
+    "blk34"                              , "▓", \
+    "squ"                                , "□", \
+    "square"                             , "□", \
+    "^Square"                            , "□", \
+    "squf"                               , "▪", \
+    "squarf"                             , "▪", \
+    "blacksquare"                        , "▪", \
+    "^Filled^Very^Small^Square"          , "▪", \
+    "^Empty^Very^Small^Square"           , "▫", \
+    "rect"                               , "▭", \
+    "marker"                             , "▮", \
+    "fltns"                              , "▱", \
+    "xutri"                              , "△", \
+    "bigtriangleup"                      , "△", \
+    "utrif"                              , "▴", \
+    "blacktriangle"                      , "▴", \
+    "utri"                               , "▵", \
+    "triangle"                           , "▵", \
+    "rtrif"                              , "▸", \
+    "blacktriangleright"                 , "▸", \
+    "rtri"                               , "▹", \
+    "triangleright"                      , "▹", \
+    "xdtri"                              , "▽", \
+    "bigtriangledown"                    , "▽", \
+    "dtrif"                              , "▾", \
+    "blacktriangledown"                  , "▾", \
+    "dtri"                               , "▿", \
+    "triangledown"                       , "▿", \
+    "ltrif"                              , "◂", \
+    "blacktriangleleft"                  , "◂", \
+    "ltri"                               , "◃", \
+    "triangleleft"                       , "◃", \
+    "loz"                                , "◊", \
+    "lozenge"                            , "◊", \
+    "cir"                                , "○", \
+    "tridot"                             , "◬", \
+    "xcirc"                              , "◯", \
+    "bigcirc"                            , "◯", \
+    "ultri"                              , "◸", \
+    "urtri"                              , "◹", \
+    "lltri"                              , "◺", \
+    "^Empty^Small^Square"                , "◻", \
+    "^Filled^Small^Square"               , "◼", \
+    "starf"                              , "★", \
+    "bigstar"                            , "★", \
+    "star"                               , "☆", \
+    "phone"                              , "☎", \
+    "female"                             , "♀", \
+    "male"                               , "♂", \
+    "spades"                             , "♠", \
+    "spadesuit"                          , "♠", \
+    "clubs"                              , "♣", \
+    "clubsuit"                           , "♣", \
+    "hearts"                             , "♥", \
+    "heartsuit"                          , "♥", \
+    "diams"                              , "♦", \
+    "diamondsuit"                        , "♦", \
+    "sung"                               , "♪", \
+    "flat"                               , "♭", \
+    "natur"                              , "♮", \
+    "natural"                            , "♮", \
+    "sharp"                              , "♯", \
+    "check"                              , "✓", \
+    "checkmark"                          , "✓", \
+    "cross"                              , "✗", \
+    "malt"                               , "✠", \
+    "maltese"                            , "✠", \
+    "sext"                               , "✶", \
+    "^Vertical^Separator"                , "❘", \
+    "lbbrk"                              , "❲", \
+    "rbbrk"                              , "❳", \
+    "lobrk"                              , "⟦", \
+    "^Left^Double^Bracket"               , "⟦", \
+    "robrk"                              , "⟧", \
+    "^Right^Double^Bracket"              , "⟧", \
+    "lang"                               , "⟨", \
+    "^Left^Angle^Bracket"                , "⟨", \
+    "langle"                             , "⟨", \
+    "rang"                               , "⟩", \
+    "^Right^Angle^Bracket"               , "⟩", \
+    "rangle"                             , "⟩", \
+    "^Lang"                              , "⟪", \
+    "^Rang"                              , "⟫", \
+    "loang"                              , "⟬", \
+    "roang"                              , "⟭", \
+    "xlarr"                              , "⟵", \
+    "longleftarrow"                      , "⟵", \
+    "^Long^Left^Arrow"                   , "⟵", \
+    "xrarr"                              , "⟶", \
+    "longrightarrow"                     , "⟶", \
+    "^Long^Right^Arrow"                  , "⟶", \
+    "xharr"                              , "⟷", \
+    "longleftrightarrow"                 , "⟷", \
+    "^Long^Left^Right^Arrow"             , "⟷", \
+    "xl^Arr"                             , "⟸", \
+    "^Longleftarrow"                     , "⟸", \
+    "^Double^Long^Left^Arrow"            , "⟸", \
+    "xr^Arr"                             , "⟹", \
+    "^Longrightarrow"                    , "⟹", \
+    "^Double^Long^Right^Arrow"           , "⟹", \
+    "xh^Arr"                             , "⟺", \
+    "^Longleftrightarrow"                , "⟺", \
+    "^Double^Long^Left^Right^Arrow"      , "⟺", \
+    "xmap"                               , "⟼", \
+    "longmapsto"                         , "⟼", \
+    "dzigrarr"                           , "⟿", \
+    "nvl^Arr"                            , "⤂", \
+    "nvr^Arr"                            , "⤃", \
+    "nv^Harr"                            , "⤄", \
+    "^Map"                               , "⤅", \
+    "lbarr"                              , "⤌", \
+    "rbarr"                              , "⤍", \
+    "bkarow"                             , "⤍", \
+    "l^Barr"                             , "⤎", \
+    "r^Barr"                             , "⤏", \
+    "dbkarow"                            , "⤏", \
+    "^R^Barr"                            , "⤐", \
+    "drbkarow"                           , "⤐", \
+    "^D^Dotrahd"                         , "⤑", \
+    "^Up^Arrow^Bar"                      , "⤒", \
+    "^Down^Arrow^Bar"                    , "⤓", \
+    "^Rarrtl"                            , "⤖", \
+    "latail"                             , "⤙", \
+    "ratail"                             , "⤚", \
+    "l^Atail"                            , "⤛", \
+    "r^Atail"                            , "⤜", \
+    "larrfs"                             , "⤝", \
+    "rarrfs"                             , "⤞", \
+    "larrbfs"                            , "⤟", \
+    "rarrbfs"                            , "⤠", \
+    "nwarhk"                             , "⤣", \
+    "nearhk"                             , "⤤", \
+    "searhk"                             , "⤥", \
+    "hksearow"                           , "⤥", \
+    "swarhk"                             , "⤦", \
+    "hkswarow"                           , "⤦", \
+    "nwnear"                             , "⤧", \
+    "nesear"                             , "⤨", \
+    "toea"                               , "⤨", \
+    "seswar"                             , "⤩", \
+    "tosa"                               , "⤩", \
+    "swnwar"                             , "⤪", \
+    "rarrc"                              , "⤳", \
+    "cudarrr"                            , "⤵", \
+    "ldca"                               , "⤶", \
+    "rdca"                               , "⤷", \
+    "cudarrl"                            , "⤸", \
+    "larrpl"                             , "⤹", \
+    "curarrm"                            , "⤼", \
+    "cularrp"                            , "⤽", \
+    "rarrpl"                             , "⥅", \
+    "harrcir"                            , "⥈", \
+    "^Uarrocir"                          , "⥉", \
+    "lurdshar"                           , "⥊", \
+    "ldrushar"                           , "⥋", \
+    "^Left^Right^Vector"                 , "⥎", \
+    "^Right^Up^Down^Vector"              , "⥏", \
+    "^Down^Left^Right^Vector"            , "⥐", \
+    "^Left^Up^Down^Vector"               , "⥑", \
+    "^Left^Vector^Bar"                   , "⥒", \
+    "^Right^Vector^Bar"                  , "⥓", \
+    "^Right^Up^Vector^Bar"               , "⥔", \
+    "^Right^Down^Vector^Bar"             , "⥕", \
+    "^Down^Left^Vector^Bar"              , "⥖", \
+    "^Down^Right^Vector^Bar"             , "⥗", \
+    "^Left^Up^Vector^Bar"                , "⥘", \
+    "^Left^Down^Vector^Bar"              , "⥙", \
+    "^Left^Tee^Vector"                   , "⥚", \
+    "^Right^Tee^Vector"                  , "⥛", \
+    "^Right^Up^Tee^Vector"               , "⥜", \
+    "^Right^Down^Tee^Vector"             , "⥝", \
+    "^Down^Left^Tee^Vector"              , "⥞", \
+    "^Down^Right^Tee^Vector"             , "⥟", \
+    "^Left^Up^Tee^Vector"                , "⥠", \
+    "^Left^Down^Tee^Vector"              , "⥡", \
+    "l^Har"                              , "⥢", \
+    "u^Har"                              , "⥣", \
+    "r^Har"                              , "⥤", \
+    "d^Har"                              , "⥥", \
+    "luruhar"                            , "⥦", \
+    "ldrdhar"                            , "⥧", \
+    "ruluhar"                            , "⥨", \
+    "rdldhar"                            , "⥩", \
+    "lharul"                             , "⥪", \
+    "llhard"                             , "⥫", \
+    "rharul"                             , "⥬", \
+    "lrhard"                             , "⥭", \
+    "udhar"                              , "⥮", \
+    "^Up^Equilibrium"                    , "⥮", \
+    "duhar"                              , "⥯", \
+    "^Reverse^Up^Equilibrium"            , "⥯", \
+    "^Round^Implies"                     , "⥰", \
+    "erarr"                              , "⥱", \
+    "simrarr"                            , "⥲", \
+    "larrsim"                            , "⥳", \
+    "rarrsim"                            , "⥴", \
+    "rarrap"                             , "⥵", \
+    "ltlarr"                             , "⥶", \
+    "gtrarr"                             , "⥸", \
+    "subrarr"                            , "⥹", \
+    "suplarr"                            , "⥻", \
+    "lfisht"                             , "⥼", \
+    "rfisht"                             , "⥽", \
+    "ufisht"                             , "⥾", \
+    "dfisht"                             , "⥿", \
+    "lopar"                              , "⦅", \
+    "ropar"                              , "⦆", \
+    "lbrke"                              , "⦋", \
+    "rbrke"                              , "⦌", \
+    "lbrkslu"                            , "⦍", \
+    "rbrksld"                            , "⦎", \
+    "lbrksld"                            , "⦏", \
+    "rbrkslu"                            , "⦐", \
+    "langd"                              , "⦑", \
+    "rangd"                              , "⦒", \
+    "lparlt"                             , "⦓", \
+    "rpargt"                             , "⦔", \
+    "gtl^Par"                            , "⦕", \
+    "ltr^Par"                            , "⦖", \
+    "vzigzag"                            , "⦚", \
+    "vangrt"                             , "⦜", \
+    "angrtvbd"                           , "⦝", \
+    "ange"                               , "⦤", \
+    "range"                              , "⦥", \
+    "dwangle"                            , "⦦", \
+    "uwangle"                            , "⦧", \
+    "angmsdaa"                           , "⦨", \
+    "angmsdab"                           , "⦩", \
+    "angmsdac"                           , "⦪", \
+    "angmsdad"                           , "⦫", \
+    "angmsdae"                           , "⦬", \
+    "angmsdaf"                           , "⦭", \
+    "angmsdag"                           , "⦮", \
+    "angmsdah"                           , "⦯", \
+    "bemptyv"                            , "⦰", \
+    "demptyv"                            , "⦱", \
+    "cemptyv"                            , "⦲", \
+    "raemptyv"                           , "⦳", \
+    "laemptyv"                           , "⦴", \
+    "ohbar"                              , "⦵", \
+    "omid"                               , "⦶", \
+    "opar"                               , "⦷", \
+    "operp"                              , "⦹", \
+    "olcross"                            , "⦻", \
+    "odsold"                             , "⦼", \
+    "olcir"                              , "⦾", \
+    "ofcir"                              , "⦿", \
+    "olt"                                , "⧀", \
+    "ogt"                                , "⧁", \
+    "cirscir"                            , "⧂", \
+    "cir^E"                              , "⧃", \
+    "solb"                               , "⧄", \
+    "bsolb"                              , "⧅", \
+    "boxbox"                             , "⧉", \
+    "trisb"                              , "⧍", \
+    "rtriltri"                           , "⧎", \
+    "^Left^Triangle^Bar"                 , "⧏", \
+    "^Right^Triangle^Bar"                , "⧐", \
+    "race"                               , "⧚", \
+    "iinfin"                             , "⧜", \
+    "infintie"                           , "⧝", \
+    "nvinfin"                            , "⧞", \
+    "eparsl"                             , "⧣", \
+    "smeparsl"                           , "⧤", \
+    "eqvparsl"                           , "⧥", \
+    "lozf"                               , "⧫", \
+    "blacklozenge"                       , "⧫", \
+    "^Rule^Delayed"                      , "⧴", \
+    "dsol"                               , "⧶", \
+    "xodot"                              , "⨀", \
+    "bigodot"                            , "⨀", \
+    "xoplus"                             , "⨁", \
+    "bigoplus"                           , "⨁", \
+    "xotime"                             , "⨂", \
+    "bigotimes"                          , "⨂", \
+    "xuplus"                             , "⨄", \
+    "biguplus"                           , "⨄", \
+    "xsqcup"                             , "⨆", \
+    "bigsqcup"                           , "⨆", \
+    "qint"                               , "⨌", \
+    "iiiint"                             , "⨌", \
+    "fpartint"                           , "⨍", \
+    "cirfnint"                           , "⨐", \
+    "awint"                              , "⨑", \
+    "rppolint"                           , "⨒", \
+    "scpolint"                           , "⨓", \
+    "npolint"                            , "⨔", \
+    "pointint"                           , "⨕", \
+    "quatint"                            , "⨖", \
+    "intlarhk"                           , "⨗", \
+    "pluscir"                            , "⨢", \
+    "plusacir"                           , "⨣", \
+    "simplus"                            , "⨤", \
+    "plusdu"                             , "⨥", \
+    "plussim"                            , "⨦", \
+    "plustwo"                            , "⨧", \
+    "mcomma"                             , "⨩", \
+    "minusdu"                            , "⨪", \
+    "loplus"                             , "⨭", \
+    "roplus"                             , "⨮", \
+    "^Cross"                             , "⨯", \
+    "timesd"                             , "⨰", \
+    "timesbar"                           , "⨱", \
+    "smashp"                             , "⨳", \
+    "lotimes"                            , "⨴", \
+    "rotimes"                            , "⨵", \
+    "otimesas"                           , "⨶", \
+    "^Otimes"                            , "⨷", \
+    "odiv"                               , "⨸", \
+    "triplus"                            , "⨹", \
+    "triminus"                           , "⨺", \
+    "tritime"                            , "⨻", \
+    "iprod"                              , "⨼", \
+    "intprod"                            , "⨼", \
+    "amalg"                              , "⨿", \
+    "capdot"                             , "⩀", \
+    "ncup"                               , "⩂", \
+    "ncap"                               , "⩃", \
+    "capand"                             , "⩄", \
+    "cupor"                              , "⩅", \
+    "cupcap"                             , "⩆", \
+    "capcup"                             , "⩇", \
+    "cupbrcap"                           , "⩈", \
+    "capbrcup"                           , "⩉", \
+    "cupcup"                             , "⩊", \
+    "capcap"                             , "⩋", \
+    "ccups"                              , "⩌", \
+    "ccaps"                              , "⩍", \
+    "ccupssm"                            , "⩐", \
+    "^And"                               , "⩓", \
+    "^Or"                                , "⩔", \
+    "andand"                             , "⩕", \
+    "oror"                               , "⩖", \
+    "orslope"                            , "⩗", \
+    "andslope"                           , "⩘", \
+    "andv"                               , "⩚", \
+    "orv"                                , "⩛", \
+    "andd"                               , "⩜", \
+    "ord"                                , "⩝", \
+    "wedbar"                             , "⩟", \
+    "sdote"                              , "⩦", \
+    "simdot"                             , "⩪", \
+    "congdot"                            , "⩭", \
+    "easter"                             , "⩮", \
+    "apacir"                             , "⩯", \
+    "ap^E"                               , "⩰", \
+    "eplus"                              , "⩱", \
+    "pluse"                              , "⩲", \
+    "^Esim"                              , "⩳", \
+    "^Colone"                            , "⩴", \
+    "^Equal"                             , "⩵", \
+    "e^D^Dot"                            , "⩷", \
+    "ddotseq"                            , "⩷", \
+    "equiv^D^D"                          , "⩸", \
+    "ltcir"                              , "⩹", \
+    "gtcir"                              , "⩺", \
+    "ltquest"                            , "⩻", \
+    "gtquest"                            , "⩼", \
+    "les"                                , "⩽", \
+    "^Less^Slant^Equal"                  , "⩽", \
+    "leqslant"                           , "⩽", \
+    "ges"                                , "⩾", \
+    "^Greater^Slant^Equal"               , "⩾", \
+    "geqslant"                           , "⩾", \
+    "lesdot"                             , "⩿", \
+    "gesdot"                             , "⪀", \
+    "lesdoto"                            , "⪁", \
+    "gesdoto"                            , "⪂", \
+    "lesdotor"                           , "⪃", \
+    "gesdotol"                           , "⪄", \
+    "lap"                                , "⪅", \
+    "lessapprox"                         , "⪅", \
+    "gap"                                , "⪆", \
+    "gtrapprox"                          , "⪆", \
+    "lne"                                , "⪇", \
+    "lneq"                               , "⪇", \
+    "gne"                                , "⪈", \
+    "gneq"                               , "⪈", \
+    "lnap"                               , "⪉", \
+    "lnapprox"                           , "⪉", \
+    "gnap"                               , "⪊", \
+    "gnapprox"                           , "⪊", \
+    "l^Eg"                               , "⪋", \
+    "lesseqqgtr"                         , "⪋", \
+    "g^El"                               , "⪌", \
+    "gtreqqless"                         , "⪌", \
+    "lsime"                              , "⪍", \
+    "gsime"                              , "⪎", \
+    "lsimg"                              , "⪏", \
+    "gsiml"                              , "⪐", \
+    "lg^E"                               , "⪑", \
+    "gl^E"                               , "⪒", \
+    "lesges"                             , "⪓", \
+    "gesles"                             , "⪔", \
+    "els"                                , "⪕", \
+    "eqslantless"                        , "⪕", \
+    "egs"                                , "⪖", \
+    "eqslantgtr"                         , "⪖", \
+    "elsdot"                             , "⪗", \
+    "egsdot"                             , "⪘", \
+    "el"                                 , "⪙", \
+    "eg"                                 , "⪚", \
+    "siml"                               , "⪝", \
+    "simg"                               , "⪞", \
+    "siml^E"                             , "⪟", \
+    "simg^E"                             , "⪠", \
+    "^Less^Less"                         , "⪡", \
+    "^Greater^Greater"                   , "⪢", \
+    "glj"                                , "⪤", \
+    "gla"                                , "⪥", \
+    "ltcc"                               , "⪦", \
+    "gtcc"                               , "⪧", \
+    "lescc"                              , "⪨", \
+    "gescc"                              , "⪩", \
+    "smt"                                , "⪪", \
+    "lat"                                , "⪫", \
+    "smte"                               , "⪬", \
+    "late"                               , "⪭", \
+    "bump^E"                             , "⪮", \
+    "pre"                                , "⪯", \
+    "preceq"                             , "⪯", \
+    "^Precedes^Equal"                    , "⪯", \
+    "sce"                                , "⪰", \
+    "succeq"                             , "⪰", \
+    "^Succeeds^Equal"                    , "⪰", \
+    "pr^E"                               , "⪳", \
+    "sc^E"                               , "⪴", \
+    "prn^E"                              , "⪵", \
+    "precneqq"                           , "⪵", \
+    "scn^E"                              , "⪶", \
+    "succneqq"                           , "⪶", \
+    "prap"                               , "⪷", \
+    "precapprox"                         , "⪷", \
+    "scap"                               , "⪸", \
+    "succapprox"                         , "⪸", \
+    "prnap"                              , "⪹", \
+    "precnapprox"                        , "⪹", \
+    "scnap"                              , "⪺", \
+    "succnapprox"                        , "⪺", \
+    "^Pr"                                , "⪻", \
+    "^Sc"                                , "⪼", \
+    "subdot"                             , "⪽", \
+    "supdot"                             , "⪾", \
+    "subplus"                            , "⪿", \
+    "supplus"                            , "⫀", \
+    "submult"                            , "⫁", \
+    "supmult"                            , "⫂", \
+    "subedot"                            , "⫃", \
+    "supedot"                            , "⫄", \
+    "sub^E"                              , "⫅", \
+    "subseteqq"                          , "⫅", \
+    "sup^E"                              , "⫆", \
+    "supseteqq"                          , "⫆", \
+    "subsim"                             , "⫇", \
+    "supsim"                             , "⫈", \
+    "subn^E"                             , "⫋", \
+    "subsetneqq"                         , "⫋", \
+    "supn^E"                             , "⫌", \
+    "supsetneqq"                         , "⫌", \
+    "csub"                               , "⫏", \
+    "csup"                               , "⫐", \
+    "csube"                              , "⫑", \
+    "csupe"                              , "⫒", \
+    "subsup"                             , "⫓", \
+    "supsub"                             , "⫔", \
+    "subsub"                             , "⫕", \
+    "supsup"                             , "⫖", \
+    "suphsub"                            , "⫗", \
+    "supdsub"                            , "⫘", \
+    "forkv"                              , "⫙", \
+    "topfork"                            , "⫚", \
+    "mlcp"                               , "⫛", \
+    "^Dashv"                             , "⫤", \
+    "^Double^Left^Tee"                   , "⫤", \
+    "^Vdashl"                            , "⫦", \
+    "^Barv"                              , "⫧", \
+    "v^Bar"                              , "⫨", \
+    "v^Barv"                             , "⫩", \
+    "^Vbar"                              , "⫫", \
+    "^Not"                               , "⫬", \
+    "b^Not"                              , "⫭", \
+    "rnmid"                              , "⫮", \
+    "cirmid"                             , "⫯", \
+    "midcir"                             , "⫰", \
+    "topcir"                             , "⫱", \
+    "nhpar"                              , "⫲", \
+    "parsim"                             , "⫳", \
+    "parsl"                              , "⫽", \
+    "fflig"                              , "ff", \
+    "filig"                              , "fi", \
+    "fllig"                              , "fl", \
+    "ffilig"                             , "ffi", \
+    "ffllig"                             , "ffl", \
+  );
+  // Code points above U+FFFF are currently not supported.
+  
+  // The following table contains a more minimal set of entities, for compatilibity reasons.
+  %HtmlEntitiesReverse = $hash( \
+    $unicode("\""), "quot"    , \
+    $unicode("&"), "amp"     , \
+    $unicode("'"), "apos"    , \
+    $unicode("<"), "lt"      , \
+    $unicode(">"), "gt"      , \
+    $unicode(" "), "nbsp"    , \
+    $unicode("¡"), "iexcl"   , \
+    $unicode("¢"), "cent"    , \
+    $unicode("£"), "pound"   , \
+    $unicode("¤"), "curren"  , \
+    $unicode("¥"), "yen"     , \
+    $unicode("¦"), "brvbar"  , \
+    $unicode("§"), "sect"    , \
+    $unicode("¨"), "uml"     , \
+    $unicode("©"), "copy"    , \
+    $unicode("ª"), "ordf"    , \
+    $unicode("«"), "laquo"   , \
+    $unicode("¬"), "not"     , \
+    $unicode("­"), "shy"     , \
+    $unicode("®"), "reg"     , \
+    $unicode("¯"), "macr"    , \
+    $unicode("°"), "deg"     , \
+    $unicode("±"), "plusmn"  , \
+    $unicode("²"), "sup2"    , \
+    $unicode("³"), "sup3"    , \
+    $unicode("´"), "acute"   , \
+    $unicode("µ"), "micro"   , \
+    $unicode("¶"), "para"    , \
+    $unicode("·"), "middot"  , \
+    $unicode("¸"), "cedil"   , \
+    $unicode("¹"), "sup1"    , \
+    $unicode("º"), "ordm"    , \
+    $unicode("»"), "raquo"   , \
+    $unicode("¼"), "frac14"  , \
+    $unicode("½"), "frac12"  , \
+    $unicode("¾"), "frac34"  , \
+    $unicode("¿"), "iquest"  , \
+    $unicode("À"), "Agrave"  , \
+    $unicode("Á"), "Aacute"  , \
+    $unicode("Â"), "Acirc"   , \
+    $unicode("Ã"), "Atilde"  , \
+    $unicode("Ä"), "Auml"    , \
+    $unicode("Å"), "Aring"   , \
+    $unicode("Æ"), "AElig"   , \
+    $unicode("Ç"), "Ccedil"  , \
+    $unicode("È"), "Egrave"  , \
+    $unicode("É"), "Eacute"  , \
+    $unicode("Ê"), "Ecirc"   , \
+    $unicode("Ë"), "Euml"    , \
+    $unicode("Ì"), "Igrave"  , \
+    $unicode("Í"), "Iacute"  , \
+    $unicode("Î"), "Icirc"   , \
+    $unicode("Ï"), "Iuml"    , \
+    $unicode("Ð"), "ETH"     , \
+    $unicode("Ñ"), "Ntilde"  , \
+    $unicode("Ò"), "Ograve"  , \
+    $unicode("Ó"), "Oacute"  , \
+    $unicode("Ô"), "Ocirc"   , \
+    $unicode("Õ"), "Otilde"  , \
+    $unicode("Ö"), "Ouml"    , \
+    $unicode("×"), "times"   , \
+    $unicode("Ø"), "Oslash"  , \
+    $unicode("Ù"), "Ugrave"  , \
+    $unicode("Ú"), "Uacute"  , \
+    $unicode("Û"), "Ucirc"   , \
+    $unicode("Ü"), "Uuml"    , \
+    $unicode("Ý"), "Yacute"  , \
+    $unicode("Þ"), "THORN"   , \
+    $unicode("ß"), "szlig"   , \
+    $unicode("à"), "agrave"  , \
+    $unicode("á"), "aacute"  , \
+    $unicode("â"), "acirc"   , \
+    $unicode("ã"), "atilde"  , \
+    $unicode("ä"), "auml"    , \
+    $unicode("å"), "aring"   , \
+    $unicode("æ"), "aelig"   , \
+    $unicode("ç"), "ccedil"  , \
+    $unicode("è"), "egrave"  , \
+    $unicode("é"), "eacute"  , \
+    $unicode("ê"), "ecirc"   , \
+    $unicode("ë"), "euml"    , \
+    $unicode("ì"), "igrave"  , \
+    $unicode("í"), "iacute"  , \
+    $unicode("î"), "icirc"   , \
+    $unicode("ï"), "iuml"    , \
+    $unicode("ð"), "eth"     , \
+    $unicode("ñ"), "ntilde"  , \
+    $unicode("ò"), "ograve"  , \
+    $unicode("ó"), "oacute"  , \
+    $unicode("ô"), "ocirc"   , \
+    $unicode("õ"), "otilde"  , \
+    $unicode("ö"), "ouml"    , \
+    $unicode("÷"), "divide"  , \
+    $unicode("ø"), "oslash"  , \
+    $unicode("ù"), "ugrave"  , \
+    $unicode("ú"), "uacute"  , \
+    $unicode("û"), "ucirc"   , \
+    $unicode("ü"), "uuml"    , \
+    $unicode("ý"), "yacute"  , \
+    $unicode("þ"), "thorn"   , \
+    $unicode("ÿ"), "yuml"    , \
+    $unicode("Œ"), "OElig"   , \
+    $unicode("œ"), "oelig"   , \
+    $unicode("Š"), "Scaron"  , \
+    $unicode("š"), "scaron"  , \
+    $unicode("Ÿ"), "Yuml"    , \
+    $unicode("ƒ"), "fnof"    , \
+    $unicode("ˆ"), "circ"    , \
+    $unicode("˜"), "tilde"   , \
+    $unicode("Α"), "Alpha"   , \
+    $unicode("Β"), "Beta"    , \
+    $unicode("Γ"), "Gamma"   , \
+    $unicode("Δ"), "Delta"   , \
+    $unicode("Ε"), "Epsilon" , \
+    $unicode("Ζ"), "Zeta"    , \
+    $unicode("Η"), "Eta"     , \
+    $unicode("Θ"), "Theta"   , \
+    $unicode("Ι"), "Iota"    , \
+    $unicode("Κ"), "Kappa"   , \
+    $unicode("Λ"), "Lambda"  , \
+    $unicode("Μ"), "Mu"      , \
+    $unicode("Ν"), "Nu"      , \
+    $unicode("Ξ"), "Xi"      , \
+    $unicode("Ο"), "Omicron" , \
+    $unicode("Π"), "Pi"      , \
+    $unicode("Ρ"), "Rho"     , \
+    $unicode("Σ"), "Sigma"   , \
+    $unicode("Τ"), "Tau"     , \
+    $unicode("Υ"), "Upsilon" , \
+    $unicode("Φ"), "Phi"     , \
+    $unicode("Χ"), "Chi"     , \
+    $unicode("Ψ"), "Psi"     , \
+    $unicode("Ω"), "Omega"   , \
+    $unicode("α"), "alpha"   , \
+    $unicode("β"), "beta"    , \
+    $unicode("γ"), "gamma"   , \
+    $unicode("δ"), "delta"   , \
+    $unicode("ε"), "epsilon" , \
+    $unicode("ζ"), "zeta"    , \
+    $unicode("η"), "eta"     , \
+    $unicode("θ"), "theta"   , \
+    $unicode("ι"), "iota"    , \
+    $unicode("κ"), "kappa"   , \
+    $unicode("λ"), "lambda"  , \
+    $unicode("μ"), "mu"      , \
+    $unicode("ν"), "nu"      , \
+    $unicode("ξ"), "xi"      , \
+    $unicode("ο"), "omicron" , \
+    $unicode("π"), "pi"      , \
+    $unicode("ρ"), "rho"     , \
+    $unicode("ς"), "sigmaf"  , \
+    $unicode("σ"), "sigma"   , \
+    $unicode("τ"), "tau"     , \
+    $unicode("υ"), "upsilon" , \
+    $unicode("φ"), "phi"     , \
+    $unicode("χ"), "chi"     , \
+    $unicode("ψ"), "psi"     , \
+    $unicode("ω"), "omega"   , \
+    $unicode("ϑ"), "thetasym", \
+    $unicode("ϒ"), "upsih"   , \
+    $unicode("ϖ"), "piv"     , \
+    $unicode(" "), "ensp"    , \
+    $unicode(" "), "emsp"    , \
+    $unicode(" "), "thinsp"  , \
+    $unicode("‌"), "zwnj"    , \
+    $unicode("‍"), "zwj"     , \
+    $unicode("‎"), "lrm"     , \
+    $unicode("‏"), "rlm"     , \
+    $unicode("–"), "ndash"   , \
+    $unicode("—"), "mdash"   , \
+    $unicode("‘"), "lsquo"   , \
+    $unicode("’"), "rsquo"   , \
+    $unicode("‚"), "sbquo"   , \
+    $unicode("“"), "ldquo"   , \
+    $unicode("”"), "rdquo"   , \
+    $unicode("„"), "bdquo"   , \
+    $unicode("†"), "dagger"  , \
+    $unicode("‡"), "Dagger"  , \
+    $unicode("•"), "bull"    , \
+    $unicode("…"), "hellip"  , \
+    $unicode("‰"), "permil"  , \
+    $unicode("′"), "prime"   , \
+    $unicode("″"), "Prime"   , \
+    $unicode("‹"), "lsaquo"  , \
+    $unicode("›"), "rsaquo"  , \
+    $unicode("‾"), "oline"   , \
+    $unicode("⁄"), "frasl"   , \
+    $unicode("€"), "euro"    , \
+    $unicode("ℑ"), "image"   , \
+    $unicode("℘"), "weierp"  , \
+    $unicode("ℜ"), "real"    , \
+    $unicode("™"), "trade"   , \
+    $unicode("ℵ"), "alefsym" , \
+    $unicode("←"), "larr"    , \
+    $unicode("↑"), "uarr"    , \
+    $unicode("→"), "rarr"    , \
+    $unicode("↓"), "darr"    , \
+    $unicode("↔"), "harr"    , \
+    $unicode("↵"), "crarr"   , \
+    $unicode("⇐"), "lArr"    , \
+    $unicode("⇑"), "uArr"    , \
+    $unicode("⇒"), "rArr"    , \
+    $unicode("⇓"), "dArr"    , \
+    $unicode("⇔"), "hArr"    , \
+    $unicode("∀"), "forall"  , \
+    $unicode("∂"), "part"    , \
+    $unicode("∃"), "exist"   , \
+    $unicode("∅"), "empty"   , \
+    $unicode("∇"), "nabla"   , \
+    $unicode("∈"), "isin"    , \
+    $unicode("∉"), "notin"   , \
+    $unicode("∋"), "ni"      , \
+    $unicode("∏"), "prod"    , \
+    $unicode("∑"), "sum"     , \
+    $unicode("−"), "minus"   , \
+    $unicode("∗"), "lowast"  , \
+    $unicode("√"), "radic"   , \
+    $unicode("∝"), "prop"    , \
+    $unicode("∞"), "infin"   , \
+    $unicode("∠"), "ang"     , \
+    $unicode("∧"), "and"     , \
+    $unicode("∨"), "or"      , \
+    $unicode("∩"), "cap"     , \
+    $unicode("∪"), "cup"     , \
+    $unicode("∫"), "int"     , \
+    $unicode("∴"), "there4"  , \
+    $unicode("∼"), "sim"     , \
+    $unicode("≅"), "cong"    , \
+    $unicode("≈"), "asymp"   , \
+    $unicode("≠"), "ne"      , \
+    $unicode("≡"), "equiv"   , \
+    $unicode("≤"), "le"      , \
+    $unicode("≥"), "ge"      , \
+    $unicode("⊂"), "sub"     , \
+    $unicode("⊃"), "sup"     , \
+    $unicode("⊄"), "nsub"    , \
+    $unicode("⊆"), "sube"    , \
+    $unicode("⊇"), "supe"    , \
+    $unicode("⊕"), "oplus"   , \
+    $unicode("⊗"), "otimes"  , \
+    $unicode("⊥"), "perp"    , \
+    $unicode("⋅"), "sdot"    , \
+    $unicode("⌈"), "lceil"   , \
+    $unicode("⌉"), "rceil"   , \
+    $unicode("⌊"), "lfloor"  , \
+    $unicode("⌋"), "rfloor"  , \
+    $unicode("〈"), "lang"    , \
+    $unicode("〉"), "rang"    , \
+    $unicode("◊"), "loz"     , \
+    $unicode("♠"), "spades"  , \
+    $unicode("♣"), "clubs"   , \
+    $unicode("♥"), "hearts"  , \
+    $unicode("♦"), "diam"    , \
+  );
+}
diff --git a/htmlentities/readme.md b/htmlentities/readme.md
new file mode 100644 (file)
index 0000000..badc763
--- /dev/null
@@ -0,0 +1,19 @@
+HTML Entities
+=============
+
+This is a KVIrc script that deals with HTML entities.
+
+It was tested with KVIrc version 4.9.1 'Aria'.
+
+The script adds the following functions:
+  * `string $htmldecode(string text)` – decodes HTML entities in text.
+  * `string $htmlencode(string text[, string flags])` – encodes certain characters into HTML entity representations; see the script for more information.
+
+Installation
+------------
+
+Simply run the script.
+
+To do this, from the KVIrc menu, select *Scripting* → *Execute Script* (or press `Ctrl+Shift+X` up to twice), then select `htmlentities.kvs` in the dialog.
+
+Alternatively, enter `/parse path/to/htmlentities.kvs`.