123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853 |
- var Utils = require("../Utils.js");
- /**
- * HTML operations.
- *
- * @author n1474335 [n1474335@gmail.com]
- * @copyright Crown Copyright 2016
- * @license Apache-2.0
- *
- * @namespace
- */
- var HTML = module.exports = {
- /**
- * @constant
- * @default
- */
- CONVERT_ALL: false,
- /**
- * @constant
- * @default
- */
- CONVERT_OPTIONS: ["Named entities where possible", "Numeric entities", "Hex entities"],
- /**
- * To HTML Entity operation.
- *
- * @param {string} input
- * @param {Object[]} args
- * @returns {string}
- */
- runToEntity: function(input, args) {
- var convertAll = args[0],
- numeric = args[1] === "Numeric entities",
- hexa = args[1] === "Hex entities";
- var charcodes = Utils.strToCharcode(input);
- var output = "";
- for (var i = 0; i < charcodes.length; i++) {
- if (convertAll && numeric) {
- output += "&#" + charcodes[i] + ";";
- } else if (convertAll && hexa) {
- output += "&#x" + Utils.hex(charcodes[i]) + ";";
- } else if (convertAll) {
- output += HTML._byteToEntity[charcodes[i]] || "&#" + charcodes[i] + ";";
- } else if (numeric) {
- if (charcodes[i] > 255 || HTML._byteToEntity.hasOwnProperty(charcodes[i])) {
- output += "&#" + charcodes[i] + ";";
- } else {
- output += Utils.chr(charcodes[i]);
- }
- } else if (hexa) {
- if (charcodes[i] > 255 || HTML._byteToEntity.hasOwnProperty(charcodes[i])) {
- output += "&#x" + Utils.hex(charcodes[i]) + ";";
- } else {
- output += Utils.chr(charcodes[i]);
- }
- } else {
- output += HTML._byteToEntity[charcodes[i]] || (
- charcodes[i] > 255 ?
- "&#" + charcodes[i] + ";" :
- Utils.chr(charcodes[i])
- );
- }
- }
- return output;
- },
- /**
- * From HTML Entity operation.
- *
- * @param {string} input
- * @param {Object[]} args
- * @returns {string}
- */
- runFromEntity: function(input, args) {
- var regex = /&(#?x?[a-zA-Z0-9]{1,8});/g,
- output = "",
- m,
- i = 0;
- while ((m = regex.exec(input))) {
- // Add up to match
- for (; i < m.index;)
- output += input[i++];
- // Add match
- var bite = HTML._entityToByte[m[1]];
- if (bite) {
- output += Utils.chr(bite);
- } else if (!bite && m[1][0] === "#" && m[1].length > 1 && /^#\d{1,5}$/.test(m[1])) {
- // Numeric entity (e.g. )
- var num = m[1].slice(1, m[1].length);
- output += Utils.chr(parseInt(num, 10));
- } else if (!bite && m[1][0] === "#" && m[1].length > 3 && /^#x[\dA-F]{2,8}$/i.test(m[1])) {
- // Hex entity (e.g. :)
- var hex = m[1].slice(2, m[1].length);
- output += Utils.chr(parseInt(hex, 16));
- } else {
- // Not a valid entity, print as normal
- for (; i < regex.lastIndex;)
- output += input[i++];
- }
- i = regex.lastIndex;
- }
- // Add all after final match
- for (; i < input.length;)
- output += input[i++];
- return output;
- },
- /**
- * @constant
- * @default
- */
- REMOVE_INDENTATION: true,
- /**
- * @constant
- * @default
- */
- REMOVE_LINE_BREAKS: true,
- /**
- * Strip HTML tags operation.
- *
- * @param {string} input
- * @param {Object[]} args
- * @returns {string}
- */
- runStripTags: function(input, args) {
- var removeIndentation = args[0],
- removeLineBreaks = args[1];
- input = Utils.stripHtmlTags(input);
- if (removeIndentation) {
- input = input.replace(/\n[ \f\t]+/g, "\n");
- }
- if (removeLineBreaks) {
- input = input.replace(/^\s*\n/, "") // first line
- .replace(/(\n\s*){2,}/g, "\n"); // all others
- }
- return input;
- },
- /**
- * Parse colour code operation.
- *
- * @param {string} input
- * @param {Object[]} args
- * @returns {html}
- */
- runParseColourCode: function(input, args) {
- var m = null,
- r = 0, g = 0, b = 0, a = 1;
- // Read in the input
- if ((m = input.match(/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/i))) {
- // Hex - #d9edf7
- r = parseInt(m[1], 16);
- g = parseInt(m[2], 16);
- b = parseInt(m[3], 16);
- } else if ((m = input.match(/rgba?\((\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?)(?:,\s?(\d(?:\.\d+)?))?\)/i))) {
- // RGB or RGBA - rgb(217,237,247) or rgba(217,237,247,1)
- r = parseFloat(m[1]);
- g = parseFloat(m[2]);
- b = parseFloat(m[3]);
- a = m[4] ? parseFloat(m[4]) : 1;
- } else if ((m = input.match(/hsla?\((\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?)%,\s?(\d{1,3}(?:\.\d+)?)%(?:,\s?(\d(?:\.\d+)?))?\)/i))) {
- // HSL or HSLA - hsl(200, 65%, 91%) or hsla(200, 65%, 91%, 1)
- var h_ = parseFloat(m[1]) / 360,
- s_ = parseFloat(m[2]) / 100,
- l_ = parseFloat(m[3]) / 100,
- rgb_ = HTML._hslToRgb(h_, s_, l_);
- r = rgb_[0];
- g = rgb_[1];
- b = rgb_[2];
- a = m[4] ? parseFloat(m[4]) : 1;
- } else if ((m = input.match(/cmyk\((\d(?:\.\d+)?),\s?(\d(?:\.\d+)?),\s?(\d(?:\.\d+)?),\s?(\d(?:\.\d+)?)\)/i))) {
- // CMYK - cmyk(0.12, 0.04, 0.00, 0.03)
- var c_ = parseFloat(m[1]),
- m_ = parseFloat(m[2]),
- y_ = parseFloat(m[3]),
- k_ = parseFloat(m[4]);
- r = Math.round(255 * (1 - c_) * (1 - k_));
- g = Math.round(255 * (1 - m_) * (1 - k_));
- b = Math.round(255 * (1 - y_) * (1 - k_));
- }
- var hsl_ = HTML._rgbToHsl(r, g, b),
- h = Math.round(hsl_[0] * 360),
- s = Math.round(hsl_[1] * 100),
- l = Math.round(hsl_[2] * 100),
- k = 1 - Math.max(r/255, g/255, b/255),
- c = (1 - r/255 - k) / (1 - k),
- m = (1 - g/255 - k) / (1 - k), // eslint-disable-line no-redeclare
- y = (1 - b/255 - k) / (1 - k);
- c = isNaN(c) ? "0" : c.toFixed(2);
- m = isNaN(m) ? "0" : m.toFixed(2);
- y = isNaN(y) ? "0" : y.toFixed(2);
- k = k.toFixed(2);
- var hex = "#" +
- Utils.padLeft(Math.round(r).toString(16), 2) +
- Utils.padLeft(Math.round(g).toString(16), 2) +
- Utils.padLeft(Math.round(b).toString(16), 2),
- rgb = "rgb(" + r + ", " + g + ", " + b + ")",
- rgba = "rgba(" + r + ", " + g + ", " + b + ", " + a + ")",
- hsl = "hsl(" + h + ", " + s + "%, " + l + "%)",
- hsla = "hsla(" + h + ", " + s + "%, " + l + "%, " + a + ")",
- cmyk = "cmyk(" + c + ", " + m + ", " + y + ", " + k + ")";
- // Generate output
- return "<div id='colorpicker' style='display: inline-block'></div>" +
- "Hex: " + hex + "\n" +
- "RGB: " + rgb + "\n" +
- "RGBA: " + rgba + "\n" +
- "HSL: " + hsl + "\n" +
- "HSLA: " + hsla + "\n" +
- "CMYK: " + cmyk +
- "<script>\
- $('#colorpicker').colorpicker({\
- format: 'rgba',\
- color: '" + rgba + "',\
- container: true,\
- inline: true,\
- }).on('changeColor', function(e) {\
- var color = e.color.toRGB();\
- document.getElementById('input-text').value = 'rgba(' +\
- color.r + ', ' + color.g + ', ' + color.b + ', ' + color.a + ')';\
- window.app.autoBake();\
- });\
- </script>";
- },
- /**
- * Converts an HSL color value to RGB. Conversion formula
- * adapted from http://en.wikipedia.org/wiki/HSL_colorSpace.
- * Assumes h, s, and l are contained in the set [0, 1] and
- * returns r, g, and b in the set [0, 255].
- *
- * @private
- * @author Mohsen (http://stackoverflow.com/a/9493060)
- *
- * @param {number} h - The hue
- * @param {number} s - The saturation
- * @param {number} l - The lightness
- * @return {Array} The RGB representation
- */
- _hslToRgb: function(h, s, l){
- var r, g, b;
- if (s === 0){
- r = g = b = l; // achromatic
- } else {
- var hue2rgb = function hue2rgb(p, q, t) {
- if (t < 0) t += 1;
- if (t > 1) t -= 1;
- if (t < 1/6) return p + (q - p) * 6 * t;
- if (t < 1/2) return q;
- if (t < 2/3) return p + (q - p) * (2/3 - t) * 6;
- return p;
- };
- var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
- var p = 2 * l - q;
- r = hue2rgb(p, q, h + 1/3);
- g = hue2rgb(p, q, h);
- b = hue2rgb(p, q, h - 1/3);
- }
- return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
- },
- /**
- * Converts an RGB color value to HSL. Conversion formula
- * adapted from http://en.wikipedia.org/wiki/HSL_colorSpace.
- * Assumes r, g, and b are contained in the set [0, 255] and
- * returns h, s, and l in the set [0, 1].
- *
- * @private
- * @author Mohsen (http://stackoverflow.com/a/9493060)
- *
- * @param {number} r - The red color value
- * @param {number} g - The green color value
- * @param {number} b - The blue color value
- * @return {Array} The HSL representation
- */
- _rgbToHsl: function(r, g, b) {
- r /= 255; g /= 255; b /= 255;
- var max = Math.max(r, g, b),
- min = Math.min(r, g, b),
- h, s, l = (max + min) / 2;
- if (max === min) {
- h = s = 0; // achromatic
- } else {
- var d = max - min;
- s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
- switch (max) {
- case r: h = (g - b) / d + (g < b ? 6 : 0); break;
- case g: h = (b - r) / d + 2; break;
- case b: h = (r - g) / d + 4; break;
- }
- h /= 6;
- }
- return [h, s, l];
- },
- /**
- * Lookup table to translate byte values to their HTML entity codes.
- *
- * @private
- * @constant
- */
- _byteToEntity: {
- 34 : """,
- 38 : "&",
- 39 : "'",
- 60 : "<",
- 62 : ">",
- 160 : " ",
- 161 : "¡",
- 162 : "¢",
- 163 : "£",
- 164 : "¤",
- 165 : "¥",
- 166 : "¦",
- 167 : "§",
- 168 : "¨",
- 169 : "©",
- 170 : "ª",
- 171 : "«",
- 172 : "¬",
- 173 : "­",
- 174 : "®",
- 175 : "¯",
- 176 : "°",
- 177 : "±",
- 178 : "²",
- 179 : "³",
- 180 : "´",
- 181 : "µ",
- 182 : "¶",
- 183 : "·",
- 184 : "¸",
- 185 : "¹",
- 186 : "º",
- 187 : "»",
- 188 : "¼",
- 189 : "½",
- 190 : "¾",
- 191 : "¿",
- 192 : "À",
- 193 : "Á",
- 194 : "Â",
- 195 : "Ã",
- 196 : "Ä",
- 197 : "Å",
- 198 : "Æ",
- 199 : "Ç",
- 200 : "È",
- 201 : "É",
- 202 : "Ê",
- 203 : "Ë",
- 204 : "Ì",
- 205 : "Í",
- 206 : "Î",
- 207 : "Ï",
- 208 : "Ð",
- 209 : "Ñ",
- 210 : "Ò",
- 211 : "Ó",
- 212 : "Ô",
- 213 : "Õ",
- 214 : "Ö",
- 215 : "×",
- 216 : "Ø",
- 217 : "Ù",
- 218 : "Ú",
- 219 : "Û",
- 220 : "Ü",
- 221 : "Ý",
- 222 : "Þ",
- 223 : "ß",
- 224 : "à",
- 225 : "á",
- 226 : "â",
- 227 : "ã",
- 228 : "ä",
- 229 : "å",
- 230 : "æ",
- 231 : "ç",
- 232 : "è",
- 233 : "é",
- 234 : "ê",
- 235 : "ë",
- 236 : "ì",
- 237 : "í",
- 238 : "î",
- 239 : "ï",
- 240 : "ð",
- 241 : "ñ",
- 242 : "ò",
- 243 : "ó",
- 244 : "ô",
- 245 : "õ",
- 246 : "ö",
- 247 : "÷",
- 248 : "ø",
- 249 : "ù",
- 250 : "ú",
- 251 : "û",
- 252 : "ü",
- 253 : "ý",
- 254 : "þ",
- 255 : "ÿ",
- 338 : "Œ",
- 339 : "œ",
- 352 : "Š",
- 353 : "š",
- 376 : "Ÿ",
- 402 : "ƒ",
- 710 : "ˆ",
- 732 : "˜",
- 913 : "Α",
- 914 : "Β",
- 915 : "Γ",
- 916 : "Δ",
- 917 : "Ε",
- 918 : "Ζ",
- 919 : "Η",
- 920 : "Θ",
- 921 : "Ι",
- 922 : "Κ",
- 923 : "Λ",
- 924 : "Μ",
- 925 : "Ν",
- 926 : "Ξ",
- 927 : "Ο",
- 928 : "Π",
- 929 : "Ρ",
- 931 : "Σ",
- 932 : "Τ",
- 933 : "Υ",
- 934 : "Φ",
- 935 : "Χ",
- 936 : "Ψ",
- 937 : "Ω",
- 945 : "α",
- 946 : "β",
- 947 : "γ",
- 948 : "δ",
- 949 : "ε",
- 950 : "ζ",
- 951 : "η",
- 952 : "θ",
- 953 : "ι",
- 954 : "κ",
- 955 : "λ",
- 956 : "μ",
- 957 : "ν",
- 958 : "ξ",
- 959 : "ο",
- 960 : "π",
- 961 : "ρ",
- 962 : "ς",
- 963 : "σ",
- 964 : "τ",
- 965 : "υ",
- 966 : "φ",
- 967 : "χ",
- 968 : "ψ",
- 969 : "ω",
- 977 : "ϑ",
- 978 : "ϒ",
- 982 : "ϖ",
- 8194 : " ",
- 8195 : " ",
- 8201 : " ",
- 8204 : "‌",
- 8205 : "‍",
- 8206 : "‎",
- 8207 : "‏",
- 8211 : "–",
- 8212 : "—",
- 8216 : "‘",
- 8217 : "’",
- 8218 : "‚",
- 8220 : "“",
- 8221 : "”",
- 8222 : "„",
- 8224 : "†",
- 8225 : "‡",
- 8226 : "•",
- 8230 : "…",
- 8240 : "‰",
- 8242 : "′",
- 8243 : "″",
- 8249 : "‹",
- 8250 : "›",
- 8254 : "‾",
- 8260 : "⁄",
- 8364 : "€",
- 8465 : "ℑ",
- 8472 : "℘",
- 8476 : "ℜ",
- 8482 : "™",
- 8501 : "ℵ",
- 8592 : "←",
- 8593 : "↑",
- 8594 : "→",
- 8595 : "↓",
- 8596 : "↔",
- 8629 : "↵",
- 8656 : "⇐",
- 8657 : "⇑",
- 8658 : "⇒",
- 8659 : "⇓",
- 8660 : "⇔",
- 8704 : "∀",
- 8706 : "∂",
- 8707 : "∃",
- 8709 : "∅",
- 8711 : "∇",
- 8712 : "∈",
- 8713 : "∉",
- 8715 : "∋",
- 8719 : "∏",
- 8721 : "∑",
- 8722 : "−",
- 8727 : "∗",
- 8730 : "√",
- 8733 : "∝",
- 8734 : "∞",
- 8736 : "∠",
- 8743 : "∧",
- 8744 : "∨",
- 8745 : "∩",
- 8746 : "∪",
- 8747 : "∫",
- 8756 : "∴",
- 8764 : "∼",
- 8773 : "≅",
- 8776 : "≈",
- 8800 : "≠",
- 8801 : "≡",
- 8804 : "≤",
- 8805 : "≥",
- 8834 : "⊂",
- 8835 : "⊃",
- 8836 : "⊄",
- 8838 : "⊆",
- 8839 : "⊇",
- 8853 : "⊕",
- 8855 : "⊗",
- 8869 : "⊥",
- 8901 : "⋅",
- 8942 : "⋮",
- 8968 : "⌈",
- 8969 : "⌉",
- 8970 : "⌊",
- 8971 : "⌋",
- 9001 : "⟨",
- 9002 : "⟩",
- 9674 : "◊",
- 9824 : "♠",
- 9827 : "♣",
- 9829 : "♥",
- 9830 : "♦",
- },
- /**
- * Lookup table to translate HTML entity codes to their byte values.
- *
- * @private
- * @constant
- */
- _entityToByte : {
- "quot" : 34,
- "amp" : 38,
- "apos" : 39,
- "lt" : 60,
- "gt" : 62,
- "nbsp" : 160,
- "iexcl" : 161,
- "cent" : 162,
- "pound" : 163,
- "curren" : 164,
- "yen" : 165,
- "brvbar" : 166,
- "sect" : 167,
- "uml" : 168,
- "copy" : 169,
- "ordf" : 170,
- "laquo" : 171,
- "not" : 172,
- "shy" : 173,
- "reg" : 174,
- "macr" : 175,
- "deg" : 176,
- "plusmn" : 177,
- "sup2" : 178,
- "sup3" : 179,
- "acute" : 180,
- "micro" : 181,
- "para" : 182,
- "middot" : 183,
- "cedil" : 184,
- "sup1" : 185,
- "ordm" : 186,
- "raquo" : 187,
- "frac14" : 188,
- "frac12" : 189,
- "frac34" : 190,
- "iquest" : 191,
- "Agrave" : 192,
- "Aacute" : 193,
- "Acirc" : 194,
- "Atilde" : 195,
- "Auml" : 196,
- "Aring" : 197,
- "AElig" : 198,
- "Ccedil" : 199,
- "Egrave" : 200,
- "Eacute" : 201,
- "Ecirc" : 202,
- "Euml" : 203,
- "Igrave" : 204,
- "Iacute" : 205,
- "Icirc" : 206,
- "Iuml" : 207,
- "ETH" : 208,
- "Ntilde" : 209,
- "Ograve" : 210,
- "Oacute" : 211,
- "Ocirc" : 212,
- "Otilde" : 213,
- "Ouml" : 214,
- "times" : 215,
- "Oslash" : 216,
- "Ugrave" : 217,
- "Uacute" : 218,
- "Ucirc" : 219,
- "Uuml" : 220,
- "Yacute" : 221,
- "THORN" : 222,
- "szlig" : 223,
- "agrave" : 224,
- "aacute" : 225,
- "acirc" : 226,
- "atilde" : 227,
- "auml" : 228,
- "aring" : 229,
- "aelig" : 230,
- "ccedil" : 231,
- "egrave" : 232,
- "eacute" : 233,
- "ecirc" : 234,
- "euml" : 235,
- "igrave" : 236,
- "iacute" : 237,
- "icirc" : 238,
- "iuml" : 239,
- "eth" : 240,
- "ntilde" : 241,
- "ograve" : 242,
- "oacute" : 243,
- "ocirc" : 244,
- "otilde" : 245,
- "ouml" : 246,
- "divide" : 247,
- "oslash" : 248,
- "ugrave" : 249,
- "uacute" : 250,
- "ucirc" : 251,
- "uuml" : 252,
- "yacute" : 253,
- "thorn" : 254,
- "yuml" : 255,
- "OElig" : 338,
- "oelig" : 339,
- "Scaron" : 352,
- "scaron" : 353,
- "Yuml" : 376,
- "fnof" : 402,
- "circ" : 710,
- "tilde" : 732,
- "Alpha" : 913,
- "Beta" : 914,
- "Gamma" : 915,
- "Delta" : 916,
- "Epsilon" : 917,
- "Zeta" : 918,
- "Eta" : 919,
- "Theta" : 920,
- "Iota" : 921,
- "Kappa" : 922,
- "Lambda" : 923,
- "Mu" : 924,
- "Nu" : 925,
- "Xi" : 926,
- "Omicron" : 927,
- "Pi" : 928,
- "Rho" : 929,
- "Sigma" : 931,
- "Tau" : 932,
- "Upsilon" : 933,
- "Phi" : 934,
- "Chi" : 935,
- "Psi" : 936,
- "Omega" : 937,
- "alpha" : 945,
- "beta" : 946,
- "gamma" : 947,
- "delta" : 948,
- "epsilon" : 949,
- "zeta" : 950,
- "eta" : 951,
- "theta" : 952,
- "iota" : 953,
- "kappa" : 954,
- "lambda" : 955,
- "mu" : 956,
- "nu" : 957,
- "xi" : 958,
- "omicron" : 959,
- "pi" : 960,
- "rho" : 961,
- "sigmaf" : 962,
- "sigma" : 963,
- "tau" : 964,
- "upsilon" : 965,
- "phi" : 966,
- "chi" : 967,
- "psi" : 968,
- "omega" : 969,
- "thetasym" : 977,
- "upsih" : 978,
- "piv" : 982,
- "ensp" : 8194,
- "emsp" : 8195,
- "thinsp" : 8201,
- "zwnj" : 8204,
- "zwj" : 8205,
- "lrm" : 8206,
- "rlm" : 8207,
- "ndash" : 8211,
- "mdash" : 8212,
- "lsquo" : 8216,
- "rsquo" : 8217,
- "sbquo" : 8218,
- "ldquo" : 8220,
- "rdquo" : 8221,
- "bdquo" : 8222,
- "dagger" : 8224,
- "Dagger" : 8225,
- "bull" : 8226,
- "hellip" : 8230,
- "permil" : 8240,
- "prime" : 8242,
- "Prime" : 8243,
- "lsaquo" : 8249,
- "rsaquo" : 8250,
- "oline" : 8254,
- "frasl" : 8260,
- "euro" : 8364,
- "image" : 8465,
- "weierp" : 8472,
- "real" : 8476,
- "trade" : 8482,
- "alefsym" : 8501,
- "larr" : 8592,
- "uarr" : 8593,
- "rarr" : 8594,
- "darr" : 8595,
- "harr" : 8596,
- "crarr" : 8629,
- "lArr" : 8656,
- "uArr" : 8657,
- "rArr" : 8658,
- "dArr" : 8659,
- "hArr" : 8660,
- "forall" : 8704,
- "part" : 8706,
- "exist" : 8707,
- "empty" : 8709,
- "nabla" : 8711,
- "isin" : 8712,
- "notin" : 8713,
- "ni" : 8715,
- "prod" : 8719,
- "sum" : 8721,
- "minus" : 8722,
- "lowast" : 8727,
- "radic" : 8730,
- "prop" : 8733,
- "infin" : 8734,
- "ang" : 8736,
- "and" : 8743,
- "or" : 8744,
- "cap" : 8745,
- "cup" : 8746,
- "int" : 8747,
- "there4" : 8756,
- "sim" : 8764,
- "cong" : 8773,
- "asymp" : 8776,
- "ne" : 8800,
- "equiv" : 8801,
- "le" : 8804,
- "ge" : 8805,
- "sub" : 8834,
- "sup" : 8835,
- "nsub" : 8836,
- "sube" : 8838,
- "supe" : 8839,
- "oplus" : 8853,
- "otimes" : 8855,
- "perp" : 8869,
- "sdot" : 8901,
- "vellip" : 8942,
- "lceil" : 8968,
- "rceil" : 8969,
- "lfloor" : 8970,
- "rfloor" : 8971,
- "lang" : 9001,
- "rang" : 9002,
- "loz" : 9674,
- "spades" : 9824,
- "clubs" : 9827,
- "hearts" : 9829,
- "diams" : 9830,
- },
- };
|