From bcd25b14ec0208657af1299b6df5642b5c0260a9 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Thu, 23 May 2024 19:54:17 +0000 Subject: [PATCH] Introduce Token Map: An optimized static translation class. This patch introduces a new class: `WP_Token_Map`, designed for efficient lookup and translation of static mappings between string keys or tokens, and string replacements (for example, HTML character references). The Token Map imposes certain restrictions on the byte length of the lookup tokens and their replacements, but is a highly-optimized data structure for mappings with a very high number of tokens. Developed in https://github.com/WordPress/wordpress-develop/pull/5373 Discussed in https://core.trac.wordpress.org/ticket/60698 Fixes #60698. Props: dmsnell, gziolo, jonsurrell, jorbin. git-svn-id: https://develop.svn.wordpress.org/trunk@58188 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-token-map.php | 818 ++++++ .../html5-named-character-references.php | 1313 ++++++++++ src/wp-settings.php | 2 + tests/phpunit/data/html5-entities/README.md | 25 + .../phpunit/data/html5-entities/entities.json | 2233 +++++++++++++++++ ...erate-html5-named-character-references.php | 101 + .../phpunit/tests/wp-token-map/wpTokenMap.php | 399 +++ 7 files changed, 4891 insertions(+) create mode 100644 src/wp-includes/class-wp-token-map.php create mode 100644 src/wp-includes/html-api/html5-named-character-references.php create mode 100644 tests/phpunit/data/html5-entities/README.md create mode 100644 tests/phpunit/data/html5-entities/entities.json create mode 100644 tests/phpunit/data/html5-entities/generate-html5-named-character-references.php create mode 100644 tests/phpunit/tests/wp-token-map/wpTokenMap.php diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php new file mode 100644 index 0000000000000..564c0e07de095 --- /dev/null +++ b/src/wp-includes/class-wp-token-map.php @@ -0,0 +1,818 @@ + '😯', + * ':(' => '🙁', + * ':)' => '🙂', + * ':?' => '😕', + * ) ); + * + * true === $smilies->contains( ':)' ); + * false === $smilies->contains( 'simile' ); + * + * '😕' === $smilies->read_token( 'Not sure :?.', 9, $length_of_smily_syntax ); + * 2 === $length_of_smily_syntax; + * + * ## Precomputing the Token Map. + * + * Creating the class involves some work sorting and organizing the tokens and their + * replacement values. In order to skip this, it's possible for the class to export + * its state and be used as actual PHP source code. + * + * Example: + * + * // Export with four spaces as the indent, only for the sake of this docblock. + * // The default indent is a tab character. + * $indent = ' '; + * echo $smilies->precomputed_php_source_table( $indent ); + * + * // Output, to be pasted into a PHP source file: + * WP_Token_Map::from_precomputed_table( + * array( + * "storage_version" => "6.6.0", + * "key_length" => 2, + * "groups" => "", + * "long_words" => array(), + * "small_words" => "8O\x00:)\x00:(\x00:?\x00", + * "small_mappings" => array( "😯", "🙂", "🙁", "😕" ) + * ) + * ); + * + * ## Large vs. small words. + * + * This class uses a short prefix called the "key" to optimize lookup of its tokens. + * This means that some tokens may be shorter than or equal in length to that key. + * Those words that are longer than the key are called "large" while those shorter + * than or equal to the key length are called "small." + * + * This separation of large and small words is incidental to the way this class + * optimizes lookup, and should be considered an internal implementation detail + * of the class. It may still be important to be aware of it, however. + * + * ## Determining Key Length. + * + * The choice of the size of the key length should be based on the data being stored in + * the token map. It should divide the data as evenly as possible, but should not create + * so many groups that a large fraction of the groups only contain a single token. + * + * For the HTML5 named character references, a key length of 2 was found to provide a + * sufficient spread and should be a good default for relatively large sets of tokens. + * + * However, for some data sets this might be too long. For example, a list of smilies + * may be too small for a key length of 2. Perhaps 1 would be more appropriate. It's + * best to experiment and determine empirically which values are appropriate. + * + * ## Generate Pre-Computed Source Code. + * + * Since the `WP_Token_Map` is designed for relatively static lookups, it can be + * advantageous to precompute the values and instantiate a table that has already + * sorted and grouped the tokens and built the lookup strings. + * + * This can be done with `WP_Token_Map::precomputed_php_source_table()`. + * + * Note that if there is a leading character that all tokens need, such as `&` for + * HTML named character references, it can be beneficial to exclude this from the + * token map. Instead, find occurrences of the leading character and then use the + * token map to see if the following characters complete the token. + * + * Example: + * + * $map = WP_Token_Map::from_array( array( 'simple_smile:' => '🙂', 'sob:' => '😭', 'soba:' => '🍜' ) ); + * echo $map->precomputed_php_source_table(); + * // Output + * WP_Token_Map::from_precomputed_table( + * array( + * "storage_version" => "6.6.0", + * "key_length" => 2, + * "groups" => "si\x00so\x00", + * "long_words" => array( + * // simple_smile:[🙂]. + * "\x0bmple_smile:\x04🙂", + * // soba:[🍜] sob:[😭]. + * "\x03ba:\x04🍜\x02b:\x04😭", + * ), + * "short_words" => "", + * "short_mappings" => array() + * } + * ); + * + * This precomputed value can be stored directly in source code and will skip the + * startup cost of generating the lookup strings. See `$html5_named_character_entities`. + * + * Note that any updates to the precomputed format should update the storage version + * constant. It would also be best to provide an update function to take older known + * versions and upgrade them in place when loading into `from_precomputed_table()`. + * + * ## Future Direction. + * + * It may be viable to dynamically increase the length limits such that there's no need to impose them. + * The limit appears because of the packing structure, which indicates how many bytes each segment of + * text in the lookup tables spans. If, however, care were taken to track the longest word length, then + * the packing structure could change its representation to allow for that. Each additional byte storing + * length, however, increases the memory overhead and lookup runtime. + * + * An alternative approach could be to borrow the UTF-8 variable-length encoding and store lengths of less + * than 127 as a single byte with the high bit unset, storing longer lengths as the combination of + * continuation bytes. + * + * Since it has not been shown during the development of this class that longer strings are required, this + * update is deferred until such a need is clear. + * + * @since 6.6.0 + */ +class WP_Token_Map { + /** + * Denotes the version of the code which produces pre-computed source tables. + * + * This version will be used not only to verify pre-computed data, but also + * to upgrade pre-computed data from older versions. Choosing a name that + * corresponds to the WordPress release will help people identify where an + * old copy of data came from. + */ + const STORAGE_VERSION = '6.6.0-trunk'; + + /** + * Maximum length for each key and each transformed value in the table (in bytes). + * + * @since 6.6.0 + */ + const MAX_LENGTH = 256; + + /** + * How many bytes of each key are used to form a group key for lookup. + * This also determines whether a word is considered short or long. + * + * @since 6.6.0 + * + * @var int + */ + private $key_length = 2; + + /** + * Stores an optimized form of the word set, where words are grouped + * by a prefix of the `$key_length` and then collapsed into a string. + * + * In each group, the keys and lookups form a packed data structure. + * The keys in the string are stripped of their "group key," which is + * the prefix of length `$this->key_length` shared by all of the items + * in the group. Each word in the string is prefixed by a single byte + * whose raw unsigned integer value represents how many bytes follow. + * + * ┌────────────────┬───────────────┬─────────────────┬────────┐ + * │ Length of rest │ Rest of key │ Length of value │ Value │ + * │ of key (bytes) │ │ (bytes) │ │ + * ├────────────────┌───────────────┌─────────────────┌───────── + * │ 0x08 │ nterDot; │ 0x02 │ · │ + * └────────────────┮───────────────┮─────────────────┮────────┘ + * + * In this example, the key `CenterDot;` has a group key `Ce`, leaving + * eight bytes for the rest of the key, `nterDot;`, and two bytes for + * the transformed value `·` (or U+B7 or "\xC2\xB7"). + * + * Example: + * + * // Stores array( 'CenterDot;' => '·', 'Cedilla;' => 'ž' ). + * $groups = "Ce\x00"; + * $large_words = array( "\x08nterDot;\x02·\x06dilla;\x02ž" ) + * + * The prefixes appear in the `$groups` string, each followed by a null + * byte. This makes for quick lookup of where in the group string the key + * is found, and then a simple division converts that offset into the index + * in the `$large_words` array where the group string is to be found. + * + * This lookup data structure is designed to optimize cache locality and + * minimize indirect memory reads when matching strings in the set. + * + * @since 6.6.0 + * + * @var array + */ + private $large_words = array(); + + /** + * Stores the group keys for sequential string lookup. + * + * The offset into this string where the group key appears corresponds with the index + * into the group array where the rest of the group string appears. This is an optimization + * to improve cache locality while searching and minimize indirect memory accesses. + * + * @since 6.6.0 + * + * @var string + */ + private $groups = ''; + + /** + * Stores an optimized row of small words, where every entry is + * `$this->key_size + 1` bytes long and zero-extended. + * + * This packing allows for direct lookup of a short word followed + * by the null byte, if extended to `$this->key_size + 1`. + * + * Example: + * + * // Stores array( 'GT', 'LT', 'gt', 'lt' ). + * "GT\x00LT\x00gt\x00lt\x00" + * + * @since 6.6.0 + * + * @var string + */ + private $small_words = ''; + + /** + * Replacements for the small words, in the same order they appear. + * + * With the position of a small word it's possible to index the translation + * directly, as its position in the `$small_words` string corresponds to + * the index of the replacement in the `$small_mapping` array. + * + * Example: + * + * array( '>', '<', '>', '<' ) + * + * @since 6.6.0 + * + * @var string[] + */ + private $small_mappings = array(); + + /** + * Create a token map using an associative array of key/value pairs as the input. + * + * Example: + * + * $smilies = WP_Token_Map::from_array( array( + * '8O' => '😯', + * ':(' => '🙁', + * ':)' => '🙂', + * ':?' => '😕', + * ) ); + * + * @since 6.6.0 + * + * @param array $mappings The keys transform into the values, both are strings. + * @param int $key_length Determines the group key length. Leave at the default value + * of 2 unless there's an empirical reason to change it. + * + * @return WP_Token_Map|null Token map, unless unable to create it. + */ + public static function from_array( $mappings, $key_length = 2 ) { + $map = new WP_Token_Map(); + $map->key_length = $key_length; + + // Start by grouping words. + + $groups = array(); + $shorts = array(); + foreach ( $mappings as $word => $mapping ) { + if ( + self::MAX_LENGTH <= strlen( $word ) || + self::MAX_LENGTH <= strlen( $mapping ) + ) { + _doing_it_wrong( + __METHOD__, + sprintf( + /* translators: 1: maximum byte length (a count) */ + __( 'Token Map tokens and substitutions must all be shorter than %1$d bytes.' ), + self::MAX_LENGTH + ), + '6.6.0' + ); + return null; + } + + $length = strlen( $word ); + + if ( $key_length >= $length ) { + $shorts[] = $word; + } else { + $group = substr( $word, 0, $key_length ); + + if ( ! isset( $groups[ $group ] ) ) { + $groups[ $group ] = array(); + } + + $groups[ $group ][] = array( substr( $word, $key_length ), $mapping ); + } + } + + /* + * Sort the words to ensure that no smaller substring of a match masks the full match. + * For example, `Cap` should not match before `CapitalDifferentialD`. + */ + usort( $shorts, 'WP_Token_Map::longest_first_then_alphabetical' ); + foreach ( $groups as $group_key => $group ) { + usort( + $groups[ $group_key ], + static function ( $a, $b ) { + return self::longest_first_then_alphabetical( $a[0], $b[0] ); + } + ); + } + + // Finally construct the optimized lookups. + + foreach ( $shorts as $word ) { + $map->small_words .= str_pad( $word, $key_length + 1, "\x00", STR_PAD_RIGHT ); + $map->small_mappings[] = $mappings[ $word ]; + } + + $group_keys = array_keys( $groups ); + sort( $group_keys ); + + foreach ( $group_keys as $group ) { + $map->groups .= "{$group}\x00"; + + $group_string = ''; + + foreach ( $groups[ $group ] as $group_word ) { + list( $word, $mapping ) = $group_word; + + $word_length = pack( 'C', strlen( $word ) ); + $mapping_length = pack( 'C', strlen( $mapping ) ); + $group_string .= "{$word_length}{$word}{$mapping_length}{$mapping}"; + } + + $map->large_words[] = $group_string; + } + + return $map; + } + + /** + * Creates a token map from a pre-computed table. + * This skips the initialization cost of generating the table. + * + * This function should only be used to load data created with + * WP_Token_Map::precomputed_php_source_tag(). + * + * @since 6.6.0 + * + * @param array $state { + * Stores pre-computed state for directly loading into a Token Map. + * + * @type string $storage_version Which version of the code produced this state. + * @type int $key_length Group key length. + * @type string $groups Group lookup index. + * @type array $large_words Large word groups and packed strings. + * @type string $small_words Small words packed string. + * @type array $small_mappings Small word mappings. + * } + * + * @return WP_Token_Map Map with precomputed data loaded. + */ + public static function from_precomputed_table( $state ) { + $has_necessary_state = isset( + $state['storage_version'], + $state['key_length'], + $state['groups'], + $state['large_words'], + $state['small_words'], + $state['small_mappings'] + ); + + if ( ! $has_necessary_state ) { + _doing_it_wrong( + __METHOD__, + __( 'Missing required inputs to pre-computed WP_Token_Map.' ), + '6.6.0' + ); + return null; + } + + if ( self::STORAGE_VERSION !== $state['storage_version'] ) { + _doing_it_wrong( + __METHOD__, + /* translators: 1: version string, 2: version string. */ + sprintf( __( 'Loaded version \'%1$s\' incompatible with expected version \'%2$s\'.' ), $state['storage_version'], self::STORAGE_VERSION ), + '6.6.0' + ); + return null; + } + + $map = new WP_Token_Map(); + + $map->key_length = $state['key_length']; + $map->groups = $state['groups']; + $map->large_words = $state['large_words']; + $map->small_words = $state['small_words']; + $map->small_mappings = $state['small_mappings']; + + return $map; + } + + /** + * Indicates if a given word is a lookup key in the map. + * + * Example: + * + * true === $smilies->contains( ':)' ); + * false === $smilies->contains( 'simile' ); + * + * @since 6.6.0 + * + * @param string $word Determine if this word is a lookup key in the map. + * @param ?string $case_sensitivity 'ascii-case-insensitive' to ignore ASCII case or default of 'case-sensitive'. + * @return bool Whether there's an entry for the given word in the map. + */ + public function contains( $word, $case_sensitivity = 'case-sensitive' ) { + $ignore_case = 'ascii-case-insensitive' === $case_sensitivity; + + if ( $this->key_length >= strlen( $word ) ) { + if ( 0 === strlen( $this->small_words ) ) { + return false; + } + + $term = str_pad( $word, $this->key_length + 1, "\x00", STR_PAD_RIGHT ); + $word_at = $ignore_case ? stripos( $this->small_words, $term ) : strpos( $this->small_words, $term ); + if ( false === $word_at ) { + return false; + } + + return true; + } + + $group_key = substr( $word, 0, $this->key_length ); + $group_at = $ignore_case ? stripos( $this->groups, $group_key ) : strpos( $this->groups, $group_key ); + if ( false === $group_at ) { + return false; + } + $group = $this->large_words[ $group_at / ( $this->key_length + 1 ) ]; + $group_length = strlen( $group ); + $slug = substr( $word, $this->key_length ); + $length = strlen( $slug ); + $at = 0; + + while ( $at < $group_length ) { + $token_length = unpack( 'C', $group[ $at++ ] )[1]; + $token_at = $at; + $at += $token_length; + $mapping_length = unpack( 'C', $group[ $at++ ] )[1]; + $mapping_at = $at; + + if ( $token_length === $length && 0 === substr_compare( $group, $slug, $token_at, $token_length, $ignore_case ) ) { + return true; + } + + $at = $mapping_at + $mapping_length; + } + + return false; + } + + /** + * If the text starting at a given offset is a lookup key in the map, + * return the corresponding transformation from the map, else `false`. + * + * This function returns the translated string, but accepts an optional + * parameter `$matched_token_byte_length`, which communicates how many + * bytes long the lookup key was, if it found one. This can be used to + * advance a cursor in calling code if a lookup key was found. + * + * Example: + * + * false === $smilies->read_token( 'Not sure :?.', 0, $token_byte_length ); + * '😕' === $smilies->read_token( 'Not sure :?.', 9, $token_byte_length ); + * 2 === $token_byte_length; + * + * Example: + * + * while ( $at < strlen( $input ) ) { + * $next_at = strpos( $input, ':', $at ); + * if ( false === $next_at ) { + * break; + * } + * + * $smily = $smilies->read_token( $input, $next_at, $token_byte_length ); + * if ( false === $next_at ) { + * ++$at; + * continue; + * } + * + * $prefix = substr( $input, $at, $next_at - $at ); + * $at += $token_byte_length; + * $output .= "{$prefix}{$smily}"; + * } + * + * @since 6.6.0 + * + * @param string $text String in which to search for a lookup key. + * @param ?int $offset How many bytes into the string where the lookup key ought to start. + * @param ?int &$matched_token_byte_length Holds byte-length of found token matched, otherwise not set. + * @param ?string $case_sensitivity 'ascii-case-insensitive' to ignore ASCII case or default of 'case-sensitive'. + * @return string|false Mapped value of lookup key if found, otherwise `false`. + */ + public function read_token( $text, $offset = 0, &$matched_token_byte_length = null, $case_sensitivity = 'case-sensitive' ) { + $ignore_case = 'ascii-case-insensitive' === $case_sensitivity; + $text_length = strlen( $text ); + + // Search for a long word first, if the text is long enough, and if that fails, a short one. + if ( $text_length > $this->key_length ) { + $group_key = substr( $text, $offset, $this->key_length ); + + $group_at = $ignore_case ? stripos( $this->groups, $group_key ) : strpos( $this->groups, $group_key ); + if ( false === $group_at ) { + // Perhaps a short word then. + return strlen( $this->small_words ) > 0 + ? $this->read_small_token( $text, $offset, $matched_token_byte_length, $case_sensitivity ) + : false; + } + + $group = $this->large_words[ $group_at / ( $this->key_length + 1 ) ]; + $group_length = strlen( $group ); + $at = 0; + while ( $at < $group_length ) { + $token_length = unpack( 'C', $group[ $at++ ] )[1]; + $token = substr( $group, $at, $token_length ); + $at += $token_length; + $mapping_length = unpack( 'C', $group[ $at++ ] )[1]; + $mapping_at = $at; + + if ( 0 === substr_compare( $text, $token, $offset + $this->key_length, $token_length, $ignore_case ) ) { + $matched_token_byte_length = $this->key_length + $token_length; + return substr( $group, $mapping_at, $mapping_length ); + } + + $at = $mapping_at + $mapping_length; + } + } + + // Perhaps a short word then. + return strlen( $this->small_words ) > 0 + ? $this->read_small_token( $text, $offset, $matched_token_byte_length, $case_sensitivity ) + : false; + } + + /** + * Finds a match for a short word at the index. + * + * @since 6.6.0. + * + * @param string $text String in which to search for a lookup key. + * @param ?int $offset How many bytes into the string where the lookup key ought to start. + * @param ?int &$matched_token_byte_length Holds byte-length of found lookup key if matched, otherwise not set. + * @param ?string $case_sensitivity 'ascii-case-insensitive' to ignore ASCII case or default of 'case-sensitive'. + * @return string|false Mapped value of lookup key if found, otherwise `false`. + */ + private function read_small_token( $text, $offset, &$matched_token_byte_length, $case_sensitivity = 'case-sensitive' ) { + $ignore_case = 'ascii-case-insensitive' === $case_sensitivity; + $small_length = strlen( $this->small_words ); + $search_text = substr( $text, $offset, $this->key_length ); + if ( $ignore_case ) { + $search_text = strtoupper( $search_text ); + } + $starting_char = $search_text[0]; + + $at = 0; + while ( $at < $small_length ) { + if ( + $starting_char !== $this->small_words[ $at ] && + ( ! $ignore_case || strtoupper( $this->small_words[ $at ] ) !== $starting_char ) + ) { + $at += $this->key_length + 1; + continue; + } + + for ( $adjust = 1; $adjust < $this->key_length; $adjust++ ) { + if ( "\x00" === $this->small_words[ $at + $adjust ] ) { + $matched_token_byte_length = $adjust; + return $this->small_mappings[ $at / ( $this->key_length + 1 ) ]; + } + + if ( + $search_text[ $adjust ] !== $this->small_words[ $at + $adjust ] && + ( ! $ignore_case || strtoupper( $this->small_words[ $at + $adjust ] !== $search_text[ $adjust ] ) ) + ) { + $at += $this->key_length + 1; + continue 2; + } + } + + $matched_token_byte_length = $adjust; + return $this->small_mappings[ $at / ( $this->key_length + 1 ) ]; + } + + return false; + } + + /** + * Exports the token map into an associate array of key/value pairs. + * + * Example: + * + * $smilies->to_array() === array( + * '8O' => '😯', + * ':(' => '🙁', + * ':)' => '🙂', + * ':?' => '😕', + * ); + * + * @return array The lookup key/substitution values as an associate array. + */ + public function to_array() { + $tokens = array(); + + $at = 0; + $small_mapping = 0; + $small_length = strlen( $this->small_words ); + while ( $at < $small_length ) { + $key = rtrim( substr( $this->small_words, $at, $this->key_length + 1 ), "\x00" ); + $value = $this->small_mappings[ $small_mapping++ ]; + $tokens[ $key ] = $value; + + $at += $this->key_length + 1; + } + + foreach ( $this->large_words as $index => $group ) { + $prefix = substr( $this->groups, $index * ( $this->key_length + 1 ), 2 ); + $group_length = strlen( $group ); + $at = 0; + while ( $at < $group_length ) { + $length = unpack( 'C', $group[ $at++ ] )[1]; + $key = $prefix . substr( $group, $at, $length ); + + $at += $length; + $length = unpack( 'C', $group[ $at++ ] )[1]; + $value = substr( $group, $at, $length ); + + $tokens[ $key ] = $value; + $at += $length; + } + } + + return $tokens; + } + + /** + * Export the token map for quick loading in PHP source code. + * + * This function has a specific purpose, to make loading of static token maps fast. + * It's used to ensure that the HTML character reference lookups add a minimal cost + * to initializing the PHP process. + * + * Example: + * + * echo $smilies->precomputed_php_source_table(); + * + * // Output. + * WP_Token_Map::from_precomputed_table( + * array( + * "storage_version" => "6.6.0", + * "key_length" => 2, + * "groups" => "", + * "long_words" => array(), + * "small_words" => "8O\x00:)\x00:(\x00:?\x00", + * "small_mappings" => array( "😯", "🙂", "🙁", "😕" ) + * ) + * ); + * + * @since 6.6.0 + * + * @param ?string $indent Use this string for indentation, or rely on the default horizontal tab character. + * @return string Value which can be pasted into a PHP source file for quick loading of table. + */ + public function precomputed_php_source_table( $indent = "\t" ) { + $i1 = $indent; + $i2 = $i1 . $indent; + $i3 = $i2 . $indent; + + $class_version = self::STORAGE_VERSION; + + $output = self::class . "::from_precomputed_table(\n"; + $output .= "{$i1}array(\n"; + $output .= "{$i2}\"storage_version\" => \"{$class_version}\",\n"; + $output .= "{$i2}\"key_length\" => {$this->key_length},\n"; + + $group_line = str_replace( "\x00", "\\x00", $this->groups ); + $output .= "{$i2}\"groups\" => \"{$group_line}\",\n"; + + $output .= "{$i2}\"large_words\" => array(\n"; + + $prefixes = explode( "\x00", $this->groups ); + foreach ( $prefixes as $index => $prefix ) { + if ( '' === $prefix ) { + break; + } + $group = $this->large_words[ $index ]; + $group_length = strlen( $group ); + $comment_line = "{$i3}//"; + $data_line = "{$i3}\""; + $at = 0; + while ( $at < $group_length ) { + $token_length = unpack( 'C', $group[ $at++ ] )[1]; + $token = substr( $group, $at, $token_length ); + $at += $token_length; + $mapping_length = unpack( 'C', $group[ $at++ ] )[1]; + $mapping = substr( $group, $at, $mapping_length ); + $at += $mapping_length; + + $token_digits = str_pad( dechex( $token_length ), 2, '0', STR_PAD_LEFT ); + $mapping_digits = str_pad( dechex( $mapping_length ), 2, '0', STR_PAD_LEFT ); + + $mapping = preg_replace_callback( + "~[\\x00-\\x1f\\x22\\x5c]~", + static function ( $match_result ) { + switch ( $match_result[0] ) { + case '"': + return '\\"'; + + case '\\': + return '\\\\'; + + default: + $hex = dechex( ord( $match_result[0] ) ); + return "\\x{$hex}"; + } + }, + $mapping + ); + + $comment_line .= " {$prefix}{$token}[{$mapping}]"; + $data_line .= "\\x{$token_digits}{$token}\\x{$mapping_digits}{$mapping}"; + } + $comment_line .= ".\n"; + $data_line .= "\",\n"; + + $output .= $comment_line; + $output .= $data_line; + } + + $output .= "{$i2}),\n"; + + $small_words = array(); + $small_length = strlen( $this->small_words ); + $at = 0; + while ( $at < $small_length ) { + $small_words[] = substr( $this->small_words, $at, $this->key_length + 1 ); + $at += $this->key_length + 1; + } + + $small_text = str_replace( "\x00", '\x00', implode( '', $small_words ) ); + $output .= "{$i2}\"small_words\" => \"{$small_text}\",\n"; + + $output .= "{$i2}\"small_mappings\" => array(\n"; + foreach ( $this->small_mappings as $mapping ) { + $output .= "{$i3}\"{$mapping}\",\n"; + } + $output .= "{$i2})\n"; + $output .= "{$i1})\n"; + $output .= ')'; + + return $output; + } + + /** + * Compares two strings, returning the longest, or whichever + * is first alphabetically if they are the same length. + * + * This is an important sort when building the token map because + * it should not form a match on a substring of a longer potential + * match. For example, it should not detect `Cap` when matching + * against the string `CapitalDifferentialD`. + * + * @since 6.6.0 + * + * @param string $a First string to compare. + * @param string $b Second string to compare. + * @return int -1 or lower if `$a` is less than `$b`; 1 or greater if `$a` is greater than `$b`, and 0 if they are equal. + */ + private static function longest_first_then_alphabetical( $a, $b ) { + if ( $a === $b ) { + return 0; + } + + $length_a = strlen( $a ); + $length_b = strlen( $b ); + + // Longer strings are less-than for comparison's sake. + if ( $length_a !== $length_b ) { + return $length_b - $length_a; + } + + return strcmp( $a, $b ); + } +} diff --git a/src/wp-includes/html-api/html5-named-character-references.php b/src/wp-includes/html-api/html5-named-character-references.php new file mode 100644 index 0000000000000..9466f0a06b8cb --- /dev/null +++ b/src/wp-includes/html-api/html5-named-character-references.php @@ -0,0 +1,1313 @@ + "6.6.0-trunk", + "key_length" => 2, + "groups" => "AE\x00AM\x00Aa\x00Ab\x00Ac\x00Af\x00Ag\x00Al\x00Am\x00An\x00Ao\x00Ap\x00Ar\x00As\x00At\x00Au\x00Ba\x00Bc\x00Be\x00Bf\x00Bo\x00Br\x00Bs\x00Bu\x00CH\x00CO\x00Ca\x00Cc\x00Cd\x00Ce\x00Cf\x00Ch\x00Ci\x00Cl\x00Co\x00Cr\x00Cs\x00Cu\x00DD\x00DJ\x00DS\x00DZ\x00Da\x00Dc\x00De\x00Df\x00Di\x00Do\x00Ds\x00EN\x00ET\x00Ea\x00Ec\x00Ed\x00Ef\x00Eg\x00El\x00Em\x00Eo\x00Ep\x00Eq\x00Es\x00Et\x00Eu\x00Ex\x00Fc\x00Ff\x00Fi\x00Fo\x00Fs\x00GJ\x00GT\x00Ga\x00Gb\x00Gc\x00Gd\x00Gf\x00Gg\x00Go\x00Gr\x00Gs\x00Gt\x00HA\x00Ha\x00Hc\x00Hf\x00Hi\x00Ho\x00Hs\x00Hu\x00IE\x00IJ\x00IO\x00Ia\x00Ic\x00Id\x00If\x00Ig\x00Im\x00In\x00Io\x00Is\x00It\x00Iu\x00Jc\x00Jf\x00Jo\x00Js\x00Ju\x00KH\x00KJ\x00Ka\x00Kc\x00Kf\x00Ko\x00Ks\x00LJ\x00LT\x00La\x00Lc\x00Le\x00Lf\x00Ll\x00Lm\x00Lo\x00Ls\x00Lt\x00Ma\x00Mc\x00Me\x00Mf\x00Mi\x00Mo\x00Ms\x00Mu\x00NJ\x00Na\x00Nc\x00Ne\x00Nf\x00No\x00Ns\x00Nt\x00Nu\x00OE\x00Oa\x00Oc\x00Od\x00Of\x00Og\x00Om\x00Oo\x00Op\x00Or\x00Os\x00Ot\x00Ou\x00Ov\x00Pa\x00Pc\x00Pf\x00Ph\x00Pi\x00Pl\x00Po\x00Pr\x00Ps\x00QU\x00Qf\x00Qo\x00Qs\x00RB\x00RE\x00Ra\x00Rc\x00Re\x00Rf\x00Rh\x00Ri\x00Ro\x00Rr\x00Rs\x00Ru\x00SH\x00SO\x00Sa\x00Sc\x00Sf\x00Sh\x00Si\x00Sm\x00So\x00Sq\x00Ss\x00St\x00Su\x00TH\x00TR\x00TS\x00Ta\x00Tc\x00Tf\x00Th\x00Ti\x00To\x00Tr\x00Ts\x00Ua\x00Ub\x00Uc\x00Ud\x00Uf\x00Ug\x00Um\x00Un\x00Uo\x00Up\x00Ur\x00Us\x00Ut\x00Uu\x00VD\x00Vb\x00Vc\x00Vd\x00Ve\x00Vf\x00Vo\x00Vs\x00Vv\x00Wc\x00We\x00Wf\x00Wo\x00Ws\x00Xf\x00Xi\x00Xo\x00Xs\x00YA\x00YI\x00YU\x00Ya\x00Yc\x00Yf\x00Yo\x00Ys\x00Yu\x00ZH\x00Za\x00Zc\x00Zd\x00Ze\x00Zf\x00Zo\x00Zs\x00aa\x00ab\x00ac\x00ae\x00af\x00ag\x00al\x00am\x00an\x00ao\x00ap\x00ar\x00as\x00at\x00au\x00aw\x00bN\x00ba\x00bb\x00bc\x00bd\x00be\x00bf\x00bi\x00bk\x00bl\x00bn\x00bo\x00bp\x00br\x00bs\x00bu\x00ca\x00cc\x00cd\x00ce\x00cf\x00ch\x00ci\x00cl\x00co\x00cr\x00cs\x00ct\x00cu\x00cw\x00cy\x00dA\x00dH\x00da\x00db\x00dc\x00dd\x00de\x00df\x00dh\x00di\x00dj\x00dl\x00do\x00dr\x00ds\x00dt\x00du\x00dw\x00dz\x00eD\x00ea\x00ec\x00ed\x00ee\x00ef\x00eg\x00el\x00em\x00en\x00eo\x00ep\x00eq\x00er\x00es\x00et\x00eu\x00ex\x00fa\x00fc\x00fe\x00ff\x00fi\x00fj\x00fl\x00fn\x00fo\x00fp\x00fr\x00fs\x00gE\x00ga\x00gb\x00gc\x00gd\x00ge\x00gf\x00gg\x00gi\x00gj\x00gl\x00gn\x00go\x00gr\x00gs\x00gt\x00gv\x00hA\x00ha\x00hb\x00hc\x00he\x00hf\x00hk\x00ho\x00hs\x00hy\x00ia\x00ic\x00ie\x00if\x00ig\x00ii\x00ij\x00im\x00in\x00io\x00ip\x00iq\x00is\x00it\x00iu\x00jc\x00jf\x00jm\x00jo\x00js\x00ju\x00ka\x00kc\x00kf\x00kg\x00kh\x00kj\x00ko\x00ks\x00lA\x00lB\x00lE\x00lH\x00la\x00lb\x00lc\x00ld\x00le\x00lf\x00lg\x00lh\x00lj\x00ll\x00lm\x00ln\x00lo\x00lp\x00lr\x00ls\x00lt\x00lu\x00lv\x00mD\x00ma\x00mc\x00md\x00me\x00mf\x00mh\x00mi\x00ml\x00mn\x00mo\x00mp\x00ms\x00mu\x00nG\x00nL\x00nR\x00nV\x00na\x00nb\x00nc\x00nd\x00ne\x00nf\x00ng\x00nh\x00ni\x00nj\x00nl\x00nm\x00no\x00np\x00nr\x00ns\x00nt\x00nu\x00nv\x00nw\x00oS\x00oa\x00oc\x00od\x00oe\x00of\x00og\x00oh\x00oi\x00ol\x00om\x00oo\x00op\x00or\x00os\x00ot\x00ou\x00ov\x00pa\x00pc\x00pe\x00pf\x00ph\x00pi\x00pl\x00pm\x00po\x00pr\x00ps\x00pu\x00qf\x00qi\x00qo\x00qp\x00qs\x00qu\x00rA\x00rB\x00rH\x00ra\x00rb\x00rc\x00rd\x00re\x00rf\x00rh\x00ri\x00rl\x00rm\x00rn\x00ro\x00rp\x00rr\x00rs\x00rt\x00ru\x00rx\x00sa\x00sb\x00sc\x00sd\x00se\x00sf\x00sh\x00si\x00sl\x00sm\x00so\x00sp\x00sq\x00sr\x00ss\x00st\x00su\x00sw\x00sz\x00ta\x00tb\x00tc\x00td\x00te\x00tf\x00th\x00ti\x00to\x00tp\x00tr\x00ts\x00tw\x00uA\x00uH\x00ua\x00ub\x00uc\x00ud\x00uf\x00ug\x00uh\x00ul\x00um\x00uo\x00up\x00ur\x00us\x00ut\x00uu\x00uw\x00vA\x00vB\x00vD\x00va\x00vc\x00vd\x00ve\x00vf\x00vl\x00vn\x00vo\x00vp\x00vr\x00vs\x00vz\x00wc\x00we\x00wf\x00wo\x00wp\x00wr\x00ws\x00xc\x00xd\x00xf\x00xh\x00xi\x00xl\x00xm\x00xn\x00xo\x00xr\x00xs\x00xu\x00xv\x00xw\x00ya\x00yc\x00ye\x00yf\x00yi\x00yo\x00ys\x00yu\x00za\x00zc\x00zd\x00ze\x00zf\x00zh\x00zi\x00zo\x00zs\x00zw\x00", + "large_words" => array( + // AElig;[Æ] AElig[Æ]. + "\x04lig;\x02Æ\x03lig\x02Æ", + // AMP;[&] AMP[&]. + "\x02P;\x01&\x01P\x01&", + // Aacute;[Á] Aacute[Á]. + "\x05cute;\x02Á\x04cute\x02Á", + // Abreve;[Ă]. + "\x05reve;\x02Ă", + // Acirc;[Â] Acirc[Â] Acy;[А]. + "\x04irc;\x02Â\x03irc\x02Â\x02y;\x02А", + // Afr;[𝔄]. + "\x02r;\x04𝔄", + // Agrave;[À] Agrave[À]. + "\x05rave;\x02À\x04rave\x02À", + // Alpha;[Α]. + "\x04pha;\x02Α", + // Amacr;[Ā]. + "\x04acr;\x02Ā", + // And;[⩓]. + "\x02d;\x03⩓", + // Aogon;[Ą] Aopf;[𝔾]. + "\x04gon;\x02Ą\x03pf;\x04𝔾", + // ApplyFunction;[⁥]. + "\x0cplyFunction;\x03⁥", + // Aring;[Å] Aring[Å]. + "\x04ing;\x02Å\x03ing\x02Å", + // Assign;[≔] Ascr;[𝒜]. + "\x05sign;\x03≔\x03cr;\x04𝒜", + // Atilde;[Ã] Atilde[Ã]. + "\x05ilde;\x02Ã\x04ilde\x02Ã", + // Auml;[Ä] Auml[Ä]. + "\x03ml;\x02Ä\x02ml\x02Ä", + // Backslash;[∖] Barwed;[⌆] Barv;[⫧]. + "\x08ckslash;\x03∖\x05rwed;\x03⌆\x03rv;\x03⫧", + // Bcy;[Б]. + "\x02y;\x02Б", + // Bernoullis;[ℬ] Because;[∔] Beta;[Β]. + "\x09rnoullis;\x03ℬ\x06cause;\x03∔\x03ta;\x02Β", + // Bfr;[𝔅]. + "\x02r;\x04𝔅", + // Bopf;[đ”č]. + "\x03pf;\x04đ”č", + // Breve;[˘]. + "\x04eve;\x02˘", + // Bscr;[ℬ]. + "\x03cr;\x03ℬ", + // Bumpeq;[≎]. + "\x05mpeq;\x03≎", + // CHcy;[Ч]. + "\x03cy;\x02Ч", + // COPY;[©] COPY[©]. + "\x03PY;\x02©\x02PY\x02©", + // CapitalDifferentialD;[ⅅ] Cayleys;[ℭ] Cacute;[Ć] Cap;[⋒]. + "\x13pitalDifferentialD;\x03ⅅ\x06yleys;\x03ℭ\x05cute;\x02Ć\x02p;\x03⋒", + // Cconint;[∰] Ccaron;[Č] Ccedil;[Ç] Ccedil[Ç] Ccirc;[Ĉ]. + "\x06onint;\x03∰\x05aron;\x02Č\x05edil;\x02Ç\x04edil\x02Ç\x04irc;\x02Ĉ", + // Cdot;[Ċ]. + "\x03ot;\x02Ċ", + // CenterDot;[·] Cedilla;[ž]. + "\x08nterDot;\x02·\x06dilla;\x02ž", + // Cfr;[ℭ]. + "\x02r;\x03ℭ", + // Chi;[Χ]. + "\x02i;\x02Χ", + // CircleMinus;[⊖] CircleTimes;[⊗] CirclePlus;[⊕] CircleDot;[⊙]. + "\x0arcleMinus;\x03⊖\x0arcleTimes;\x03⊗\x09rclePlus;\x03⊕\x08rcleDot;\x03⊙", + // ClockwiseContourIntegral;[âˆČ] CloseCurlyDoubleQuote;[”] CloseCurlyQuote;[’]. + "\x17ockwiseContourIntegral;\x03âˆČ\x14oseCurlyDoubleQuote;\x03”\x0eoseCurlyQuote;\x03’", + // CounterClockwiseContourIntegral;[∳] ContourIntegral;[∟] Congruent;[≡] Coproduct;[∐] Colone;[â©Ž] Conint;[∯] Colon;[∷] Copf;[ℂ]. + "\x1eunterClockwiseContourIntegral;\x03∳\x0entourIntegral;\x03∟\x08ngruent;\x03≡\x08product;\x03∐\x05lone;\x03â©Ž\x05nint;\x03∯\x04lon;\x03∷\x03pf;\x03ℂ", + // Cross;[⚯]. + "\x04oss;\x03⚯", + // Cscr;[𝒞]. + "\x03cr;\x04𝒞", + // CupCap;[≍] Cup;[⋓]. + "\x05pCap;\x03≍\x02p;\x03⋓", + // DDotrahd;[‑] DD;[ⅅ]. + "\x07otrahd;\x03‑\x01;\x03ⅅ", + // DJcy;[Ђ]. + "\x03cy;\x02Ђ", + // DScy;[Ѕ]. + "\x03cy;\x02Ѕ", + // DZcy;[Џ]. + "\x03cy;\x02Џ", + // Dagger;[‡] Dashv;[â«€] Darr;[↡]. + "\x05gger;\x03‡\x04shv;\x03â«€\x03rr;\x03↡", + // Dcaron;[Ď] Dcy;[Д]. + "\x05aron;\x02Ď\x02y;\x02Д", + // Delta;[Δ] Del;[∇]. + "\x04lta;\x02Δ\x02l;\x03∇", + // Dfr;[𝔇]. + "\x02r;\x04𝔇", + // DiacriticalDoubleAcute;[˝] DiacriticalAcute;[ÂŽ] DiacriticalGrave;[`] DiacriticalTilde;[˜] DiacriticalDot;[˙] DifferentialD;[ⅆ] Diamond;[⋄]. + "\x15acriticalDoubleAcute;\x02˝\x0facriticalAcute;\x02ÂŽ\x0facriticalGrave;\x01`\x0facriticalTilde;\x02˜\x0dacriticalDot;\x02˙\x0cfferentialD;\x03ⅆ\x06amond;\x03⋄", + // DoubleLongLeftRightArrow;[âŸș] DoubleContourIntegral;[∯] DoubleLeftRightArrow;[⇔] DoubleLongRightArrow;[âŸč] DoubleLongLeftArrow;[⟾] DownLeftRightVector;[ℐ] DownRightTeeVector;[â„Ÿ] DownRightVectorBar;[â„—] DoubleUpDownArrow;[⇕] DoubleVerticalBar;[∄] DownLeftTeeVector;[℞] DownLeftVectorBar;[â„–] DoubleRightArrow;[⇒] DownArrowUpArrow;[⇔] DoubleDownArrow;[⇓] DoubleLeftArrow;[⇐] DownRightVector;[⇁] DoubleRightTee;[⊹] DownLeftVector;[↜] DoubleLeftTee;[â«€] DoubleUpArrow;[⇑] DownArrowBar;[–] DownTeeArrow;[↧] DoubleDot;[š] DownArrow;[↓] DownBreve;[̑] Downarrow;[⇓] DotEqual;[≐] DownTee;[⊀] DotDot;[⃜] Dopf;[đ”»] Dot;[š]. + "\x17ubleLongLeftRightArrow;\x03âŸș\x14ubleContourIntegral;\x03∯\x13ubleLeftRightArrow;\x03⇔\x13ubleLongRightArrow;\x03âŸč\x12ubleLongLeftArrow;\x03⟾\x12wnLeftRightVector;\x03ℐ\x11wnRightTeeVector;\x03â„Ÿ\x11wnRightVectorBar;\x03â„—\x10ubleUpDownArrow;\x03⇕\x10ubleVerticalBar;\x03∄\x10wnLeftTeeVector;\x03℞\x10wnLeftVectorBar;\x03â„–\x0fubleRightArrow;\x03⇒\x0fwnArrowUpArrow;\x03⇔\x0eubleDownArrow;\x03⇓\x0eubleLeftArrow;\x03⇐\x0ewnRightVector;\x03⇁\x0dubleRightTee;\x03⊹\x0dwnLeftVector;\x03↜\x0cubleLeftTee;\x03â«€\x0cubleUpArrow;\x03⇑\x0bwnArrowBar;\x03–\x0bwnTeeArrow;\x03↧\x08ubleDot;\x02š\x08wnArrow;\x03↓\x08wnBreve;\x02̑\x08wnarrow;\x03⇓\x07tEqual;\x03≐\x06wnTee;\x03⊀\x05tDot;\x03⃜\x03pf;\x04đ”»\x02t;\x02š", + // Dstrok;[Đ] Dscr;[𝒟]. + "\x05trok;\x02Đ\x03cr;\x04𝒟", + // ENG;[Ɗ]. + "\x02G;\x02Ɗ", + // ETH;[Ð] ETH[Ð]. + "\x02H;\x02Ð\x01H\x02Ð", + // Eacute;[É] Eacute[É]. + "\x05cute;\x02É\x04cute\x02É", + // Ecaron;[Ě] Ecirc;[Ê] Ecirc[Ê] Ecy;[Đ­]. + "\x05aron;\x02Ě\x04irc;\x02Ê\x03irc\x02Ê\x02y;\x02Đ­", + // Edot;[Ė]. + "\x03ot;\x02Ė", + // Efr;[𝔈]. + "\x02r;\x04𝔈", + // Egrave;[È] Egrave[È]. + "\x05rave;\x02È\x04rave\x02È", + // Element;[∈]. + "\x06ement;\x03∈", + // EmptyVerySmallSquare;[▫] EmptySmallSquare;[◻] Emacr;[Ē]. + "\x13ptyVerySmallSquare;\x03▫\x0fptySmallSquare;\x03◻\x04acr;\x02Ē", + // Eogon;[Ę] Eopf;[đ”Œ]. + "\x04gon;\x02Ę\x03pf;\x04đ”Œ", + // Epsilon;[Ε]. + "\x06silon;\x02Ε", + // Equilibrium;[⇌] EqualTilde;[≂] Equal;[â©”]. + "\x0auilibrium;\x03⇌\x09ualTilde;\x03≂\x04ual;\x03â©”", + // Escr;[ℰ] Esim;[â©ł]. + "\x03cr;\x03ℰ\x03im;\x03â©ł", + // Eta;[Η]. + "\x02a;\x02Η", + // Euml;[Ë] Euml[Ë]. + "\x03ml;\x02Ë\x02ml\x02Ë", + // ExponentialE;[ⅇ] Exists;[∃]. + "\x0bponentialE;\x03ⅇ\x05ists;\x03∃", + // Fcy;[Đ€]. + "\x02y;\x02Đ€", + // Ffr;[𝔉]. + "\x02r;\x04𝔉", + // FilledVerySmallSquare;[â–Ș] FilledSmallSquare;[â—Œ]. + "\x14lledVerySmallSquare;\x03â–Ș\x10lledSmallSquare;\x03â—Œ", + // Fouriertrf;[ℱ] ForAll;[∀] Fopf;[đ”œ]. + "\x09uriertrf;\x03ℱ\x05rAll;\x03∀\x03pf;\x04đ”œ", + // Fscr;[ℱ]. + "\x03cr;\x03ℱ", + // GJcy;[Ѓ]. + "\x03cy;\x02Ѓ", + // GT;[>]. + "\x01;\x01>", + // Gammad;[Ϝ] Gamma;[Γ]. + "\x05mmad;\x02Ϝ\x04mma;\x02Γ", + // Gbreve;[Ğ]. + "\x05reve;\x02Ğ", + // Gcedil;[Äą] Gcirc;[Ĝ] Gcy;[Г]. + "\x05edil;\x02Äą\x04irc;\x02Ĝ\x02y;\x02Г", + // Gdot;[Ä ]. + "\x03ot;\x02Ä ", + // Gfr;[𝔊]. + "\x02r;\x04𝔊", + // Gg;[⋙]. + "\x01;\x03⋙", + // Gopf;[đ”Ÿ]. + "\x03pf;\x04đ”Ÿ", + // GreaterSlantEqual;[â©Ÿ] GreaterEqualLess;[⋛] GreaterFullEqual;[≧] GreaterGreater;[âȘą] GreaterEqual;[≄] GreaterTilde;[≳] GreaterLess;[≷]. + "\x10eaterSlantEqual;\x03â©Ÿ\x0featerEqualLess;\x03⋛\x0featerFullEqual;\x03≧\x0deaterGreater;\x03âȘą\x0beaterEqual;\x03≄\x0beaterTilde;\x03≳\x0aeaterLess;\x03≷", + // Gscr;[𝒱]. + "\x03cr;\x04𝒱", + // Gt;[≫]. + "\x01;\x03≫", + // HARDcy;[ĐȘ]. + "\x05RDcy;\x02ĐȘ", + // Hacek;[ˇ] Hat;[^]. + "\x04cek;\x02ˇ\x02t;\x01^", + // Hcirc;[Ä€]. + "\x04irc;\x02Ä€", + // Hfr;[ℌ]. + "\x02r;\x03ℌ", + // HilbertSpace;[ℋ]. + "\x0blbertSpace;\x03ℋ", + // HorizontalLine;[─] Hopf;[ℍ]. + "\x0drizontalLine;\x03─\x03pf;\x03ℍ", + // Hstrok;[ÄŠ] Hscr;[ℋ]. + "\x05trok;\x02ÄŠ\x03cr;\x03ℋ", + // HumpDownHump;[≎] HumpEqual;[≏]. + "\x0bmpDownHump;\x03≎\x08mpEqual;\x03≏", + // IEcy;[Е]. + "\x03cy;\x02Е", + // IJlig;[ÄČ]. + "\x04lig;\x02ÄČ", + // IOcy;[Ё]. + "\x03cy;\x02Ё", + // Iacute;[Í] Iacute[Í]. + "\x05cute;\x02Í\x04cute\x02Í", + // Icirc;[Î] Icirc[Î] Icy;[И]. + "\x04irc;\x02Î\x03irc\x02Î\x02y;\x02И", + // Idot;[Ä°]. + "\x03ot;\x02Ä°", + // Ifr;[ℑ]. + "\x02r;\x03ℑ", + // Igrave;[Ì] Igrave[Ì]. + "\x05rave;\x02Ì\x04rave\x02Ì", + // ImaginaryI;[ⅈ] Implies;[⇒] Imacr;[ÄȘ] Im;[ℑ]. + "\x09aginaryI;\x03ⅈ\x06plies;\x03⇒\x04acr;\x02ÄȘ\x01;\x03ℑ", + // InvisibleComma;[⁣] InvisibleTimes;[⁹] Intersection;[⋂] Integral;[∫] Int;[∏]. + "\x0dvisibleComma;\x03⁣\x0dvisibleTimes;\x03⁹\x0btersection;\x03⋂\x07tegral;\x03∫\x02t;\x03∏", + // Iogon;[Äź] Iopf;[𝕀] Iota;[Ι]. + "\x04gon;\x02Äź\x03pf;\x04𝕀\x03ta;\x02Ι", + // Iscr;[ℐ]. + "\x03cr;\x03ℐ", + // Itilde;[Äš]. + "\x05ilde;\x02Äš", + // Iukcy;[І] Iuml;[Ï] Iuml[Ï]. + "\x04kcy;\x02І\x03ml;\x02Ï\x02ml\x02Ï", + // Jcirc;[ÄŽ] Jcy;[Й]. + "\x04irc;\x02ÄŽ\x02y;\x02Й", + // Jfr;[𝔍]. + "\x02r;\x04𝔍", + // Jopf;[𝕁]. + "\x03pf;\x04𝕁", + // Jsercy;[Ј] Jscr;[đ’„]. + "\x05ercy;\x02Ј\x03cr;\x04đ’„", + // Jukcy;[Є]. + "\x04kcy;\x02Є", + // KHcy;[Đ„]. + "\x03cy;\x02Đ„", + // KJcy;[Ќ]. + "\x03cy;\x02Ќ", + // Kappa;[Κ]. + "\x04ppa;\x02Κ", + // Kcedil;[Ķ] Kcy;[К]. + "\x05edil;\x02Ķ\x02y;\x02К", + // Kfr;[𝔎]. + "\x02r;\x04𝔎", + // Kopf;[𝕂]. + "\x03pf;\x04𝕂", + // Kscr;[𝒩]. + "\x03cr;\x04𝒩", + // LJcy;[Љ]. + "\x03cy;\x02Љ", + // LT;[<]. + "\x01;\x01<", + // Laplacetrf;[ℒ] Lacute;[Äč] Lambda;[Λ] Lang;[âŸȘ] Larr;[↞]. + "\x09placetrf;\x03ℒ\x05cute;\x02Äč\x05mbda;\x02Λ\x03ng;\x03âŸȘ\x03rr;\x03↞", + // Lcaron;[Äœ] Lcedil;[Ä»] Lcy;[Л]. + "\x05aron;\x02Äœ\x05edil;\x02Ä»\x02y;\x02Л", + // LeftArrowRightArrow;[⇆] LeftDoubleBracket;[⟩] LeftDownTeeVector;[â„Ą] LeftDownVectorBar;[â„™] LeftTriangleEqual;[⊮] LeftAngleBracket;[⟹] LeftUpDownVector;[â„‘] LessEqualGreater;[⋚] LeftRightVector;[ℎ] LeftTriangleBar;[⧏] LeftUpTeeVector;[â„ ] LeftUpVectorBar;[℘] LeftDownVector;[⇃] LeftRightArrow;[↔] Leftrightarrow;[⇔] LessSlantEqual;[â©œ] LeftTeeVector;[â„š] LeftVectorBar;[â„’] LessFullEqual;[≩] LeftArrowBar;[⇀] LeftTeeArrow;[ↀ] LeftTriangle;[âŠČ] LeftUpVector;[↿] LeftCeiling;[⌈] LessGreater;[≶] LeftVector;[↌] LeftArrow;[←] LeftFloor;[⌊] Leftarrow;[⇐] LessTilde;[â‰Č] LessLess;[âȘĄ] LeftTee;[⊣]. + "\x12ftArrowRightArrow;\x03⇆\x10ftDoubleBracket;\x03⟩\x10ftDownTeeVector;\x03â„Ą\x10ftDownVectorBar;\x03â„™\x10ftTriangleEqual;\x03⊮\x0fftAngleBracket;\x03⟹\x0fftUpDownVector;\x03â„‘\x0fssEqualGreater;\x03⋚\x0eftRightVector;\x03ℎ\x0eftTriangleBar;\x03⧏\x0eftUpTeeVector;\x03â„ \x0eftUpVectorBar;\x03℘\x0dftDownVector;\x03⇃\x0dftRightArrow;\x03↔\x0dftrightarrow;\x03⇔\x0dssSlantEqual;\x03â©œ\x0cftTeeVector;\x03â„š\x0cftVectorBar;\x03â„’\x0cssFullEqual;\x03≩\x0bftArrowBar;\x03⇀\x0bftTeeArrow;\x03ↀ\x0bftTriangle;\x03âŠČ\x0bftUpVector;\x03↿\x0aftCeiling;\x03⌈\x0assGreater;\x03≶\x09ftVector;\x03↌\x08ftArrow;\x03←\x08ftFloor;\x03⌊\x08ftarrow;\x03⇐\x08ssTilde;\x03â‰Č\x07ssLess;\x03âȘĄ\x06ftTee;\x03⊣", + // Lfr;[𝔏]. + "\x02r;\x04𝔏", + // Lleftarrow;[⇚] Ll;[⋘]. + "\x09eftarrow;\x03⇚\x01;\x03⋘", + // Lmidot;[Äż]. + "\x05idot;\x02Äż", + // LongLeftRightArrow;[⟷] Longleftrightarrow;[âŸș] LowerRightArrow;[↘] LongRightArrow;[⟶] Longrightarrow;[âŸč] LowerLeftArrow;[↙] LongLeftArrow;[⟔] Longleftarrow;[⟾] Lopf;[𝕃]. + "\x11ngLeftRightArrow;\x03⟷\x11ngleftrightarrow;\x03âŸș\x0ewerRightArrow;\x03↘\x0dngRightArrow;\x03⟶\x0dngrightarrow;\x03âŸč\x0dwerLeftArrow;\x03↙\x0cngLeftArrow;\x03⟔\x0cngleftarrow;\x03⟾\x03pf;\x04𝕃", + // Lstrok;[Ɓ] Lscr;[ℒ] Lsh;[↰]. + "\x05trok;\x02Ɓ\x03cr;\x03ℒ\x02h;\x03↰", + // Lt;[â‰Ș]. + "\x01;\x03â‰Ș", + // Map;[ ]. + "\x02p;\x03 ", + // Mcy;[М]. + "\x02y;\x02М", + // MediumSpace;[ ] Mellintrf;[ℳ]. + "\x0adiumSpace;\x03 \x08llintrf;\x03ℳ", + // Mfr;[𝔐]. + "\x02r;\x04𝔐", + // MinusPlus;[∓]. + "\x08nusPlus;\x03∓", + // Mopf;[𝕄]. + "\x03pf;\x04𝕄", + // Mscr;[ℳ]. + "\x03cr;\x03ℳ", + // Mu;[Μ]. + "\x01;\x02Μ", + // NJcy;[Њ]. + "\x03cy;\x02Њ", + // Nacute;[ƃ]. + "\x05cute;\x02ƃ", + // Ncaron;[Ƈ] Ncedil;[ƅ] Ncy;[Н]. + "\x05aron;\x02Ƈ\x05edil;\x02ƅ\x02y;\x02Н", + // NegativeVeryThinSpace;[​] NestedGreaterGreater;[≫] NegativeMediumSpace;[​] NegativeThickSpace;[​] NegativeThinSpace;[​] NestedLessLess;[â‰Ș] NewLine;[\xa]. + "\x14gativeVeryThinSpace;\x03​\x13stedGreaterGreater;\x03≫\x12gativeMediumSpace;\x03​\x11gativeThickSpace;\x03​\x10gativeThinSpace;\x03​\x0dstedLessLess;\x03â‰Ș\x06wLine;\x01\xa", + // Nfr;[𝔑]. + "\x02r;\x04𝔑", + // NotNestedGreaterGreater;[âȘąÌž] NotSquareSupersetEqual;[⋣] NotPrecedesSlantEqual;[⋠] NotRightTriangleEqual;[⋭] NotSucceedsSlantEqual;[⋡] NotDoubleVerticalBar;[∊] NotGreaterSlantEqual;[â©ŸÌž] NotLeftTriangleEqual;[⋬] NotSquareSubsetEqual;[⋱] NotGreaterFullEqual;[≧̞] NotRightTriangleBar;[⧐̞] NotLeftTriangleBar;[⧏̞] NotGreaterGreater;[≫̞] NotLessSlantEqual;[⩜̞] NotNestedLessLess;[âȘĄÌž] NotReverseElement;[∌] NotSquareSuperset;[⊐̞] NotTildeFullEqual;[≇] NonBreakingSpace;[ ] NotPrecedesEqual;[âȘŻÌž] NotRightTriangle;[⋫] NotSucceedsEqual;[âȘ°Ìž] NotSucceedsTilde;[â‰żÌž] NotSupersetEqual;[⊉] NotGreaterEqual;[≱] NotGreaterTilde;[≔] NotHumpDownHump;[≎̞] NotLeftTriangle;[â‹Ș] NotSquareSubset;[⊏̞] NotGreaterLess;[â‰č] NotLessGreater;[≾] NotSubsetEqual;[⊈] NotVerticalBar;[∀] NotEqualTilde;[≂̞] NotTildeEqual;[≄] NotTildeTilde;[≉] NotCongruent;[≱] NotHumpEqual;[≏̞] NotLessEqual;[≰] NotLessTilde;[≮] NotLessLess;[â‰ȘÌž] NotPrecedes;[⊀] NotSucceeds;[⊁] NotSuperset;[⊃⃒] NotElement;[∉] NotGreater;[≯] NotCupCap;[≭] NotExists;[∄] NotSubset;[⊂⃒] NotEqual;[≠] NotTilde;[≁] NoBreak;[⁠] NotLess;[≼] Nopf;[ℕ] Not;[â«Ź]. + "\x16tNestedGreaterGreater;\x05âȘąÌž\x15tSquareSupersetEqual;\x03⋣\x14tPrecedesSlantEqual;\x03⋠\x14tRightTriangleEqual;\x03⋭\x14tSucceedsSlantEqual;\x03⋡\x13tDoubleVerticalBar;\x03∊\x13tGreaterSlantEqual;\x05â©ŸÌž\x13tLeftTriangleEqual;\x03⋬\x13tSquareSubsetEqual;\x03⋱\x12tGreaterFullEqual;\x05≧̞\x12tRightTriangleBar;\x05⧐̞\x11tLeftTriangleBar;\x05⧏̞\x10tGreaterGreater;\x05≫̞\x10tLessSlantEqual;\x05⩜̞\x10tNestedLessLess;\x05âȘĄÌž\x10tReverseElement;\x03∌\x10tSquareSuperset;\x05⊐̞\x10tTildeFullEqual;\x03≇\x0fnBreakingSpace;\x02 \x0ftPrecedesEqual;\x05âȘŻÌž\x0ftRightTriangle;\x03⋫\x0ftSucceedsEqual;\x05âȘ°Ìž\x0ftSucceedsTilde;\x05â‰żÌž\x0ftSupersetEqual;\x03⊉\x0etGreaterEqual;\x03≱\x0etGreaterTilde;\x03≔\x0etHumpDownHump;\x05≎̞\x0etLeftTriangle;\x03â‹Ș\x0etSquareSubset;\x05⊏̞\x0dtGreaterLess;\x03â‰č\x0dtLessGreater;\x03≾\x0dtSubsetEqual;\x03⊈\x0dtVerticalBar;\x03∀\x0ctEqualTilde;\x05≂̞\x0ctTildeEqual;\x03≄\x0ctTildeTilde;\x03≉\x0btCongruent;\x03≱\x0btHumpEqual;\x05≏̞\x0btLessEqual;\x03≰\x0btLessTilde;\x03≮\x0atLessLess;\x05â‰ȘÌž\x0atPrecedes;\x03⊀\x0atSucceeds;\x03⊁\x0atSuperset;\x06⊃⃒\x09tElement;\x03∉\x09tGreater;\x03≯\x08tCupCap;\x03≭\x08tExists;\x03∄\x08tSubset;\x06⊂⃒\x07tEqual;\x03≠\x07tTilde;\x03≁\x06Break;\x03⁠\x06tLess;\x03≼\x03pf;\x03ℕ\x02t;\x03â«Ź", + // Nscr;[đ’©]. + "\x03cr;\x04đ’©", + // Ntilde;[Ñ] Ntilde[Ñ]. + "\x05ilde;\x02Ñ\x04ilde\x02Ñ", + // Nu;[Ν]. + "\x01;\x02Ν", + // OElig;[ƒ]. + "\x04lig;\x02ƒ", + // Oacute;[Ó] Oacute[Ó]. + "\x05cute;\x02Ó\x04cute\x02Ó", + // Ocirc;[Ô] Ocirc[Ô] Ocy;[О]. + "\x04irc;\x02Ô\x03irc\x02Ô\x02y;\x02О", + // Odblac;[Ɛ]. + "\x05blac;\x02Ɛ", + // Ofr;[𝔒]. + "\x02r;\x04𝔒", + // Ograve;[Ò] Ograve[Ò]. + "\x05rave;\x02Ò\x04rave\x02Ò", + // Omicron;[Ο] Omacr;[ƌ] Omega;[Ω]. + "\x06icron;\x02Ο\x04acr;\x02ƌ\x04ega;\x02Ω", + // Oopf;[𝕆]. + "\x03pf;\x04𝕆", + // OpenCurlyDoubleQuote;[“] OpenCurlyQuote;[‘]. + "\x13enCurlyDoubleQuote;\x03“\x0denCurlyQuote;\x03‘", + // Or;[⩔]. + "\x01;\x03⩔", + // Oslash;[Ø] Oslash[Ø] Oscr;[đ’Ș]. + "\x05lash;\x02Ø\x04lash\x02Ø\x03cr;\x04đ’Ș", + // Otilde;[Õ] Otimes;[âš·] Otilde[Õ]. + "\x05ilde;\x02Õ\x05imes;\x03âš·\x04ilde\x02Õ", + // Ouml;[Ö] Ouml[Ö]. + "\x03ml;\x02Ö\x02ml\x02Ö", + // OverParenthesis;[⏜] OverBracket;[⎮] OverBrace;[⏞] OverBar;[‟]. + "\x0eerParenthesis;\x03⏜\x0aerBracket;\x03⎮\x08erBrace;\x03⏞\x06erBar;\x03‟", + // PartialD;[∂]. + "\x07rtialD;\x03∂", + // Pcy;[П]. + "\x02y;\x02П", + // Pfr;[𝔓]. + "\x02r;\x04𝔓", + // Phi;[Ί]. + "\x02i;\x02Ί", + // Pi;[Π]. + "\x01;\x02Π", + // PlusMinus;[±]. + "\x08usMinus;\x02±", + // Poincareplane;[ℌ] Popf;[ℙ]. + "\x0cincareplane;\x03ℌ\x03pf;\x03ℙ", + // PrecedesSlantEqual;[≌] PrecedesEqual;[âȘŻ] PrecedesTilde;[≟] Proportional;[∝] Proportion;[∷] Precedes;[â‰ș] Product;[∏] Prime;[″] Pr;[âȘ»]. + "\x11ecedesSlantEqual;\x03≌\x0cecedesEqual;\x03âȘŻ\x0cecedesTilde;\x03≟\x0boportional;\x03∝\x09oportion;\x03∷\x07ecedes;\x03â‰ș\x06oduct;\x03∏\x04ime;\x03″\x01;\x03âȘ»", + // Pscr;[đ’«] Psi;[Κ]. + "\x03cr;\x04đ’«\x02i;\x02Κ", + // QUOT;[\"] QUOT[\"]. + "\x03OT;\x01\"\x02OT\x01\"", + // Qfr;[𝔔]. + "\x02r;\x04𝔔", + // Qopf;[ℚ]. + "\x03pf;\x03ℚ", + // Qscr;[𝒬]. + "\x03cr;\x04𝒬", + // RBarr;[‐]. + "\x04arr;\x03‐", + // REG;[Âź] REG[Âź]. + "\x02G;\x02Âź\x01G\x02Âź", + // Racute;[Ɣ] Rarrtl;[‖] Rang;[⟫] Rarr;[↠]. + "\x05cute;\x02Ɣ\x05rrtl;\x03‖\x03ng;\x03⟫\x03rr;\x03↠", + // Rcaron;[Ƙ] Rcedil;[Ɩ] Rcy;[Đ ]. + "\x05aron;\x02Ƙ\x05edil;\x02Ɩ\x02y;\x02Đ ", + // ReverseUpEquilibrium;[â„Ż] ReverseEquilibrium;[⇋] ReverseElement;[∋] Re;[ℜ]. + "\x13verseUpEquilibrium;\x03â„Ż\x11verseEquilibrium;\x03⇋\x0dverseElement;\x03∋\x01;\x03ℜ", + // Rfr;[ℜ]. + "\x02r;\x03ℜ", + // Rho;[ÎĄ]. + "\x02o;\x02ÎĄ", + // RightArrowLeftArrow;[⇄] RightDoubleBracket;[⟧] RightDownTeeVector;[ℝ] RightDownVectorBar;[â„•] RightTriangleEqual;[⊔] RightAngleBracket;[⟩] RightUpDownVector;[ℏ] RightTriangleBar;[⧐] RightUpTeeVector;[â„œ] RightUpVectorBar;[â„”] RightDownVector;[⇂] RightTeeVector;[â„›] RightVectorBar;[â„“] RightArrowBar;[⇄] RightTeeArrow;[↩] RightTriangle;[⊳] RightUpVector;[↟] RightCeiling;[⌉] RightVector;[⇀] RightArrow;[→] RightFloor;[⌋] Rightarrow;[⇒] RightTee;[⊱]. + "\x12ghtArrowLeftArrow;\x03⇄\x11ghtDoubleBracket;\x03⟧\x11ghtDownTeeVector;\x03ℝ\x11ghtDownVectorBar;\x03â„•\x11ghtTriangleEqual;\x03⊔\x10ghtAngleBracket;\x03⟩\x10ghtUpDownVector;\x03ℏ\x0fghtTriangleBar;\x03⧐\x0fghtUpTeeVector;\x03â„œ\x0fghtUpVectorBar;\x03â„”\x0eghtDownVector;\x03⇂\x0dghtTeeVector;\x03â„›\x0dghtVectorBar;\x03â„“\x0cghtArrowBar;\x03⇄\x0cghtTeeArrow;\x03↩\x0cghtTriangle;\x03⊳\x0cghtUpVector;\x03↟\x0bghtCeiling;\x03⌉\x0aghtVector;\x03⇀\x09ghtArrow;\x03→\x09ghtFloor;\x03⌋\x09ghtarrow;\x03⇒\x07ghtTee;\x03⊱", + // RoundImplies;[â„°] Ropf;[ℝ]. + "\x0bundImplies;\x03â„°\x03pf;\x03ℝ", + // Rrightarrow;[⇛]. + "\x0aightarrow;\x03⇛", + // Rscr;[ℛ] Rsh;[↱]. + "\x03cr;\x03ℛ\x02h;\x03↱", + // RuleDelayed;[⧎]. + "\x0aleDelayed;\x03⧎", + // SHCHcy;[Đ©] SHcy;[Đš]. + "\x05CHcy;\x02Đ©\x03cy;\x02Đš", + // SOFTcy;[ĐŹ]. + "\x05FTcy;\x02ĐŹ", + // Sacute;[ƚ]. + "\x05cute;\x02ƚ", + // Scaron;[Ć ] Scedil;[ƞ] Scirc;[Ɯ] Scy;[ĐĄ] Sc;[âȘŒ]. + "\x05aron;\x02Ć \x05edil;\x02ƞ\x04irc;\x02Ɯ\x02y;\x02ĐĄ\x01;\x03âȘŒ", + // Sfr;[𝔖]. + "\x02r;\x04𝔖", + // ShortRightArrow;[→] ShortDownArrow;[↓] ShortLeftArrow;[←] ShortUpArrow;[↑]. + "\x0eortRightArrow;\x03→\x0dortDownArrow;\x03↓\x0dortLeftArrow;\x03←\x0bortUpArrow;\x03↑", + // Sigma;[ÎŁ]. + "\x04gma;\x02ÎŁ", + // SmallCircle;[∘]. + "\x0aallCircle;\x03∘", + // Sopf;[𝕊]. + "\x03pf;\x04𝕊", + // SquareSupersetEqual;[⊒] SquareIntersection;[⊓] SquareSubsetEqual;[⊑] SquareSuperset;[⊐] SquareSubset;[⊏] SquareUnion;[⊔] Square;[□] Sqrt;[√]. + "\x12uareSupersetEqual;\x03⊒\x11uareIntersection;\x03⊓\x10uareSubsetEqual;\x03⊑\x0duareSuperset;\x03⊐\x0buareSubset;\x03⊏\x0auareUnion;\x03⊔\x05uare;\x03□\x03rt;\x03√", + // Sscr;[𝒼]. + "\x03cr;\x04𝒼", + // Star;[⋆]. + "\x03ar;\x03⋆", + // SucceedsSlantEqual;[≜] SucceedsEqual;[âȘ°] SucceedsTilde;[≿] SupersetEqual;[⊇] SubsetEqual;[⊆] Succeeds;[≻] SuchThat;[∋] Superset;[⊃] Subset;[⋐] Supset;[⋑] Sub;[⋐] Sum;[∑] Sup;[⋑]. + "\x11cceedsSlantEqual;\x03≜\x0ccceedsEqual;\x03âȘ°\x0ccceedsTilde;\x03≿\x0cpersetEqual;\x03⊇\x0absetEqual;\x03⊆\x07cceeds;\x03≻\x07chThat;\x03∋\x07perset;\x03⊃\x05bset;\x03⋐\x05pset;\x03⋑\x02b;\x03⋐\x02m;\x03∑\x02p;\x03⋑", + // THORN;[Þ] THORN[Þ]. + "\x04ORN;\x02Þ\x03ORN\x02Þ", + // TRADE;[ℱ]. + "\x04ADE;\x03ℱ", + // TSHcy;[Ћ] TScy;[ĐŠ]. + "\x04Hcy;\x02Ћ\x03cy;\x02ĐŠ", + // Tab;[\x9] Tau;[΀]. + "\x02b;\x01\x9\x02u;\x02΀", + // Tcaron;[Ć€] Tcedil;[Ćą] Tcy;[Đą]. + "\x05aron;\x02Ć€\x05edil;\x02Ćą\x02y;\x02Đą", + // Tfr;[𝔗]. + "\x02r;\x04𝔗", + // ThickSpace;[  ] Therefore;[∎] ThinSpace;[ ] Theta;[Θ]. + "\x09ickSpace;\x06  \x08erefore;\x03∎\x08inSpace;\x03 \x04eta;\x02Θ", + // TildeFullEqual;[≅] TildeEqual;[≃] TildeTilde;[≈] Tilde;[∌]. + "\x0dldeFullEqual;\x03≅\x09ldeEqual;\x03≃\x09ldeTilde;\x03≈\x04lde;\x03∌", + // Topf;[𝕋]. + "\x03pf;\x04𝕋", + // TripleDot;[⃛]. + "\x08ipleDot;\x03⃛", + // Tstrok;[ĆŠ] Tscr;[𝒯]. + "\x05trok;\x02ĆŠ\x03cr;\x04𝒯", + // Uarrocir;[℉] Uacute;[Ú] Uacute[Ú] Uarr;[↟]. + "\x07rrocir;\x03℉\x05cute;\x02Ú\x04cute\x02Ú\x03rr;\x03↟", + // Ubreve;[ĆŹ] Ubrcy;[Ў]. + "\x05reve;\x02ĆŹ\x04rcy;\x02Ў", + // Ucirc;[Û] Ucirc[Û] Ucy;[ĐŁ]. + "\x04irc;\x02Û\x03irc\x02Û\x02y;\x02ĐŁ", + // Udblac;[Ć°]. + "\x05blac;\x02Ć°", + // Ufr;[𝔘]. + "\x02r;\x04𝔘", + // Ugrave;[Ù] Ugrave[Ù]. + "\x05rave;\x02Ù\x04rave\x02Ù", + // Umacr;[ĆȘ]. + "\x04acr;\x02ĆȘ", + // UnderParenthesis;[⏝] UnderBracket;[⎔] UnderBrace;[⏟] UnionPlus;[⊎] UnderBar;[_] Union;[⋃]. + "\x0fderParenthesis;\x03⏝\x0bderBracket;\x03⎔\x09derBrace;\x03⏟\x08ionPlus;\x03⊎\x07derBar;\x01_\x04ion;\x03⋃", + // Uogon;[ĆČ] Uopf;[𝕌]. + "\x04gon;\x02ĆČ\x03pf;\x04𝕌", + // UpArrowDownArrow;[⇅] UpperRightArrow;[↗] UpperLeftArrow;[↖] UpEquilibrium;[â„ź] UpDownArrow;[↕] Updownarrow;[⇕] UpArrowBar;[‒] UpTeeArrow;[ↄ] UpArrow;[↑] Uparrow;[⇑] Upsilon;[΄] UpTee;[⊄] Upsi;[ϒ]. + "\x0fArrowDownArrow;\x03⇅\x0eperRightArrow;\x03↗\x0dperLeftArrow;\x03↖\x0cEquilibrium;\x03â„ź\x0aDownArrow;\x03↕\x0adownarrow;\x03⇕\x09ArrowBar;\x03‒\x09TeeArrow;\x03ↄ\x06Arrow;\x03↑\x06arrow;\x03⇑\x06silon;\x02΄\x04Tee;\x03⊄\x03si;\x02ϒ", + // Uring;[Ćź]. + "\x04ing;\x02Ćź", + // Uscr;[𝒰]. + "\x03cr;\x04𝒰", + // Utilde;[Ćš]. + "\x05ilde;\x02Ćš", + // Uuml;[Ü] Uuml[Ü]. + "\x03ml;\x02Ü\x02ml\x02Ü", + // VDash;[⊫]. + "\x04ash;\x03⊫", + // Vbar;[â««]. + "\x03ar;\x03â««", + // Vcy;[В]. + "\x02y;\x02В", + // Vdashl;[â«Š] Vdash;[⊩]. + "\x05ashl;\x03â«Š\x04ash;\x03⊩", + // VerticalSeparator;[❘] VerticalTilde;[≀] VeryThinSpace;[ ] VerticalLine;[|] VerticalBar;[∣] Verbar;[‖] Vert;[‖] Vee;[⋁]. + "\x10rticalSeparator;\x03❘\x0crticalTilde;\x03≀\x0cryThinSpace;\x03 \x0brticalLine;\x01|\x0articalBar;\x03∣\x05rbar;\x03‖\x03rt;\x03‖\x02e;\x03⋁", + // Vfr;[𝔙]. + "\x02r;\x04𝔙", + // Vopf;[𝕍]. + "\x03pf;\x04𝕍", + // Vscr;[đ’±]. + "\x03cr;\x04đ’±", + // Vvdash;[âŠȘ]. + "\x05dash;\x03âŠȘ", + // Wcirc;[ĆŽ]. + "\x04irc;\x02ĆŽ", + // Wedge;[⋀]. + "\x04dge;\x03⋀", + // Wfr;[𝔚]. + "\x02r;\x04𝔚", + // Wopf;[𝕎]. + "\x03pf;\x04𝕎", + // Wscr;[đ’Č]. + "\x03cr;\x04đ’Č", + // Xfr;[𝔛]. + "\x02r;\x04𝔛", + // Xi;[Ξ]. + "\x01;\x02Ξ", + // Xopf;[𝕏]. + "\x03pf;\x04𝕏", + // Xscr;[𝒳]. + "\x03cr;\x04𝒳", + // YAcy;[ĐŻ]. + "\x03cy;\x02ĐŻ", + // YIcy;[Ї]. + "\x03cy;\x02Ї", + // YUcy;[Đź]. + "\x03cy;\x02Đź", + // Yacute;[Ý] Yacute[Ý]. + "\x05cute;\x02Ý\x04cute\x02Ý", + // Ycirc;[ƶ] Ycy;[Đ«]. + "\x04irc;\x02ƶ\x02y;\x02Đ«", + // Yfr;[𝔜]. + "\x02r;\x04𝔜", + // Yopf;[𝕐]. + "\x03pf;\x04𝕐", + // Yscr;[𝒮]. + "\x03cr;\x04𝒮", + // Yuml;[Ćž]. + "\x03ml;\x02Ćž", + // ZHcy;[Ж]. + "\x03cy;\x02Ж", + // Zacute;[Ćč]. + "\x05cute;\x02Ćč", + // Zcaron;[Ćœ] Zcy;[З]. + "\x05aron;\x02Ćœ\x02y;\x02З", + // Zdot;[Ć»]. + "\x03ot;\x02Ć»", + // ZeroWidthSpace;[​] Zeta;[Ζ]. + "\x0droWidthSpace;\x03​\x03ta;\x02Ζ", + // Zfr;[ℹ]. + "\x02r;\x03ℹ", + // Zopf;[â„€]. + "\x03pf;\x03â„€", + // Zscr;[đ’”]. + "\x03cr;\x04đ’”", + // aacute;[ĂĄ] aacute[ĂĄ]. + "\x05cute;\x02ĂĄ\x04cute\x02ĂĄ", + // abreve;[ă]. + "\x05reve;\x02ă", + // acirc;[Ăą] acute;[ÂŽ] acirc[Ăą] acute[ÂŽ] acE;[âˆŸÌł] acd;[∿] acy;[Đ°] ac;[∟]. + "\x04irc;\x02Ăą\x04ute;\x02ÂŽ\x03irc\x02Ăą\x03ute\x02ÂŽ\x02E;\x05âˆŸÌł\x02d;\x03∿\x02y;\x02Đ°\x01;\x03∟", + // aelig;[ĂŠ] aelig[ĂŠ]. + "\x04lig;\x02ĂŠ\x03lig\x02ĂŠ", + // afr;[𝔞] af;[⁥]. + "\x02r;\x04𝔞\x01;\x03⁥", + // agrave;[Ă ] agrave[Ă ]. + "\x05rave;\x02Ă \x04rave\x02Ă ", + // alefsym;[â„”] aleph;[â„”] alpha;[α]. + "\x06efsym;\x03â„”\x04eph;\x03â„”\x04pha;\x02α", + // amacr;[ā] amalg;[âšż] amp;[&] amp[&]. + "\x04acr;\x02ā\x04alg;\x03âšż\x02p;\x01&\x01p\x01&", + // andslope;[⩘] angmsdaa;[⊚] angmsdab;[⊩] angmsdac;[âŠȘ] angmsdad;[⊫] angmsdae;[⊏] angmsdaf;[⊭] angmsdag;[⊟] angmsdah;[⊯] angrtvbd;[⊝] angrtvb;[⊟] angzarr;[⍌] andand;[⩕] angmsd;[∥] angsph;[∹] angle;[∠] angrt;[∟] angst;[Å] andd;[⩜] andv;[⩚] ange;[⊀] and;[∧] ang;[∠]. + "\x07dslope;\x03⩘\x07gmsdaa;\x03⊚\x07gmsdab;\x03⊩\x07gmsdac;\x03âŠȘ\x07gmsdad;\x03⊫\x07gmsdae;\x03⊏\x07gmsdaf;\x03⊭\x07gmsdag;\x03⊟\x07gmsdah;\x03⊯\x07grtvbd;\x03⊝\x06grtvb;\x03⊟\x06gzarr;\x03⍌\x05dand;\x03⩕\x05gmsd;\x03∥\x05gsph;\x03∹\x04gle;\x03∠\x04grt;\x03∟\x04gst;\x02Å\x03dd;\x03⩜\x03dv;\x03⩚\x03ge;\x03⊀\x02d;\x03∧\x02g;\x03∠", + // aogon;[ą] aopf;[𝕒]. + "\x04gon;\x02ą\x03pf;\x04𝕒", + // approxeq;[≊] apacir;[â©Ż] approx;[≈] apid;[≋] apos;['] apE;[â©°] ape;[≊] ap;[≈]. + "\x07proxeq;\x03≊\x05acir;\x03â©Ż\x05prox;\x03≈\x03id;\x03≋\x03os;\x01'\x02E;\x03â©°\x02e;\x03≊\x01;\x03≈", + // aring;[Ă„] aring[Ă„]. + "\x04ing;\x02Ă„\x03ing\x02Ă„", + // asympeq;[≍] asymp;[≈] ascr;[đ’¶] ast;[*]. + "\x06ympeq;\x03≍\x04ymp;\x03≈\x03cr;\x04đ’¶\x02t;\x01*", + // atilde;[ĂŁ] atilde[ĂŁ]. + "\x05ilde;\x02ĂŁ\x04ilde\x02ĂŁ", + // auml;[Ă€] auml[Ă€]. + "\x03ml;\x02Ă€\x02ml\x02Ă€", + // awconint;[∳] awint;[⹑]. + "\x07conint;\x03∳\x04int;\x03⹑", + // bNot;[â«­]. + "\x03ot;\x03â«­", + // backepsilon;[϶] backprime;[—] backsimeq;[⋍] backcong;[≌] barwedge;[⌅] backsim;[∜] barvee;[⊜] barwed;[⌅]. + "\x0ackepsilon;\x02϶\x08ckprime;\x03—\x08cksimeq;\x03⋍\x07ckcong;\x03≌\x07rwedge;\x03⌅\x06cksim;\x03∜\x05rvee;\x03⊜\x05rwed;\x03⌅", + // bbrktbrk;[⎶] bbrk;[⎔]. + "\x07rktbrk;\x03⎶\x03rk;\x03⎔", + // bcong;[≌] bcy;[б]. + "\x04ong;\x03≌\x02y;\x02б", + // bdquo;[„]. + "\x04quo;\x03„", + // because;[∔] bemptyv;[⊰] between;[≬] becaus;[∔] bernou;[ℬ] bepsi;[϶] beta;[ÎČ] beth;[ℶ]. + "\x06cause;\x03∔\x06mptyv;\x03⊰\x06tween;\x03≬\x05caus;\x03∔\x05rnou;\x03ℬ\x04psi;\x02϶\x03ta;\x02ÎČ\x03th;\x03ℶ", + // bfr;[𝔟]. + "\x02r;\x04𝔟", + // bigtriangledown;[â–œ] bigtriangleup;[△] bigotimes;[⹂] bigoplus;[⚁] bigsqcup;[⹆] biguplus;[⹄] bigwedge;[⋀] bigcirc;[◯] bigodot;[⹀] bigstar;[★] bigcap;[⋂] bigcup;[⋃] bigvee;[⋁]. + "\x0egtriangledown;\x03â–œ\x0cgtriangleup;\x03△\x08gotimes;\x03⹂\x07goplus;\x03⚁\x07gsqcup;\x03⹆\x07guplus;\x03⹄\x07gwedge;\x03⋀\x06gcirc;\x03◯\x06godot;\x03⹀\x06gstar;\x03★\x05gcap;\x03⋂\x05gcup;\x03⋃\x05gvee;\x03⋁", + // bkarow;[‍]. + "\x05arow;\x03‍", + // blacktriangleright;[▾] blacktriangledown;[â–Ÿ] blacktriangleleft;[◂] blacktriangle;[▮] blacklozenge;[⧫] blacksquare;[â–Ș] blank;[␣] blk12;[▒] blk14;[░] blk34;[▓] block;[█]. + "\x11acktriangleright;\x03▾\x10acktriangledown;\x03â–Ÿ\x10acktriangleleft;\x03◂\x0cacktriangle;\x03▮\x0backlozenge;\x03⧫\x0aacksquare;\x03â–Ș\x04ank;\x03␣\x04k12;\x03▒\x04k14;\x03░\x04k34;\x03▓\x04ock;\x03█", + // bnequiv;[â‰Ąâƒ„] bnot;[⌐] bne;[=⃄]. + "\x06equiv;\x06â‰Ąâƒ„\x03ot;\x03⌐\x02e;\x04=⃄", + // boxminus;[⊟] boxtimes;[⊠] boxplus;[⊞] bottom;[⊄] bowtie;[⋈] boxbox;[⧉] boxDL;[╗] boxDR;[╔] boxDl;[╖] boxDr;[╓] boxHD;[╩] boxHU;[╩] boxHd;[â•€] boxHu;[╧] boxUL;[╝] boxUR;[╚] boxUl;[╜] boxUr;[╙] boxVH;[╬] boxVL;[╣] boxVR;[╠] boxVh;[╫] boxVl;[╱] boxVr;[╟] boxdL;[╕] boxdR;[╒] boxdl;[┐] boxdr;[┌] boxhD;[â•„] boxhU;[╹] boxhd;[┬] boxhu;[┮] boxuL;[╛] boxuR;[╘] boxul;[┘] boxur;[└] boxvH;[â•Ș] boxvL;[╡] boxvR;[╞] boxvh;[┌] boxvl;[─] boxvr;[├] bopf;[𝕓] boxH;[═] boxV;[║] boxh;[─] boxv;[│] bot;[⊄]. + "\x07xminus;\x03⊟\x07xtimes;\x03⊠\x06xplus;\x03⊞\x05ttom;\x03⊄\x05wtie;\x03⋈\x05xbox;\x03⧉\x04xDL;\x03╗\x04xDR;\x03╔\x04xDl;\x03╖\x04xDr;\x03╓\x04xHD;\x03╩\x04xHU;\x03╩\x04xHd;\x03â•€\x04xHu;\x03╧\x04xUL;\x03╝\x04xUR;\x03╚\x04xUl;\x03╜\x04xUr;\x03╙\x04xVH;\x03╬\x04xVL;\x03╣\x04xVR;\x03╠\x04xVh;\x03╫\x04xVl;\x03╱\x04xVr;\x03╟\x04xdL;\x03╕\x04xdR;\x03╒\x04xdl;\x03┐\x04xdr;\x03┌\x04xhD;\x03â•„\x04xhU;\x03╹\x04xhd;\x03┬\x04xhu;\x03┮\x04xuL;\x03╛\x04xuR;\x03╘\x04xul;\x03┘\x04xur;\x03└\x04xvH;\x03â•Ș\x04xvL;\x03╡\x04xvR;\x03╞\x04xvh;\x03┌\x04xvl;\x03─\x04xvr;\x03├\x03pf;\x04𝕓\x03xH;\x03═\x03xV;\x03║\x03xh;\x03─\x03xv;\x03│\x02t;\x03⊄", + // bprime;[—]. + "\x05rime;\x03—", + // brvbar;[Š] breve;[˘] brvbar[Š]. + "\x05vbar;\x02Š\x04eve;\x02˘\x04vbar\x02Š", + // bsolhsub;[⟈] bsemi;[⁏] bsime;[⋍] bsolb;[⧅] bscr;[đ’·] bsim;[∜] bsol;[\\]. + "\x07olhsub;\x03⟈\x04emi;\x03⁏\x04ime;\x03⋍\x04olb;\x03⧅\x03cr;\x04đ’·\x03im;\x03∜\x03ol;\x01\\", + // bullet;[‱] bumpeq;[≏] bumpE;[âȘź] bumpe;[≏] bull;[‱] bump;[≎]. + "\x05llet;\x03‱\x05mpeq;\x03≏\x04mpE;\x03âȘź\x04mpe;\x03≏\x03ll;\x03‱\x03mp;\x03≎", + // capbrcup;[⩉] cacute;[ć] capand;[⩄] capcap;[⩋] capcup;[⩇] capdot;[⩀] caret;[⁁] caron;[ˇ] caps;[∩] cap;[∩]. + "\x07pbrcup;\x03⩉\x05cute;\x02ć\x05pand;\x03⩄\x05pcap;\x03⩋\x05pcup;\x03⩇\x05pdot;\x03⩀\x04ret;\x03⁁\x04ron;\x02ˇ\x03ps;\x06∩\x02p;\x03∩", + // ccupssm;[⩐] ccaron;[č] ccedil;[ç] ccaps;[⩍] ccedil[ç] ccirc;[ĉ] ccups;[⩌]. + "\x06upssm;\x03⩐\x05aron;\x02č\x05edil;\x02ç\x04aps;\x03⩍\x04edil\x02ç\x04irc;\x02ĉ\x04ups;\x03⩌", + // cdot;[ċ]. + "\x03ot;\x02ċ", + // centerdot;[·] cemptyv;[âŠČ] cedil;[ž] cedil[ž] cent;[Âą] cent[Âą]. + "\x08nterdot;\x02·\x06mptyv;\x03âŠČ\x04dil;\x02ž\x03dil\x02ž\x03nt;\x02Âą\x02nt\x02Âą", + // cfr;[𝔠]. + "\x02r;\x04𝔠", + // checkmark;[✓] check;[✓] chcy;[ч] chi;[χ]. + "\x08eckmark;\x03✓\x04eck;\x03✓\x03cy;\x02ч\x02i;\x02χ", + // circlearrowright;[↻] circlearrowleft;[â†ș] circledcirc;[⊚] circleddash;[⊝] circledast;[⊛] circledR;[Âź] circledS;[Ⓢ] cirfnint;[⚐] cirscir;[⧂] circeq;[≗] cirmid;[â«Ż] cirE;[⧃] circ;[ˆ] cire;[≗] cir;[○]. + "\x0frclearrowright;\x03↻\x0erclearrowleft;\x03â†ș\x0arcledcirc;\x03⊚\x0arcleddash;\x03⊝\x09rcledast;\x03⊛\x07rcledR;\x02Âź\x07rcledS;\x03Ⓢ\x07rfnint;\x03⚐\x06rscir;\x03⧂\x05rceq;\x03≗\x05rmid;\x03â«Ż\x03rE;\x03⧃\x03rc;\x02ˆ\x03re;\x03≗\x02r;\x03○", + // clubsuit;[♣] clubs;[♣]. + "\x07ubsuit;\x03♣\x04ubs;\x03♣", + // complement;[∁] complexes;[ℂ] coloneq;[≔] congdot;[â©­] colone;[≔] commat;[@] compfn;[∘] conint;[∟] coprod;[∐] copysr;[℗] colon;[:] comma;[,] comp;[∁] cong;[≅] copf;[𝕔] copy;[©] copy[©]. + "\x09mplement;\x03∁\x08mplexes;\x03ℂ\x06loneq;\x03≔\x06ngdot;\x03â©­\x05lone;\x03≔\x05mmat;\x01@\x05mpfn;\x03∘\x05nint;\x03∟\x05prod;\x03∐\x05pysr;\x03℗\x04lon;\x01:\x04mma;\x01,\x03mp;\x03∁\x03ng;\x03≅\x03pf;\x04𝕔\x03py;\x02©\x02py\x02©", + // crarr;[↔] cross;[✗]. + "\x04arr;\x03↔\x04oss;\x03✗", + // csube;[⫑] csupe;[⫒] cscr;[𝒾] csub;[⫏] csup;[⫐]. + "\x04ube;\x03⫑\x04upe;\x03⫒\x03cr;\x04𝒾\x03ub;\x03⫏\x03up;\x03⫐", + // ctdot;[⋯]. + "\x04dot;\x03⋯", + // curvearrowright;[↷] curvearrowleft;[↶] curlyeqprec;[⋞] curlyeqsucc;[⋟] curlywedge;[⋏] cupbrcap;[⩈] curlyvee;[⋎] cudarrl;[„] cudarrr;[—] cularrp;[“] curarrm;[‌] cularr;[↶] cupcap;[⩆] cupcup;[⩊] cupdot;[⊍] curarr;[↷] curren;[€] cuepr;[⋞] cuesc;[⋟] cupor;[⩅] curren[€] cuvee;[⋎] cuwed;[⋏] cups;[âˆȘ] cup;[âˆȘ]. + "\x0ervearrowright;\x03↷\x0drvearrowleft;\x03↶\x0arlyeqprec;\x03⋞\x0arlyeqsucc;\x03⋟\x09rlywedge;\x03⋏\x07pbrcap;\x03⩈\x07rlyvee;\x03⋎\x06darrl;\x03„\x06darrr;\x03—\x06larrp;\x03“\x06rarrm;\x03‌\x05larr;\x03↶\x05pcap;\x03⩆\x05pcup;\x03⩊\x05pdot;\x03⊍\x05rarr;\x03↷\x05rren;\x02€\x04epr;\x03⋞\x04esc;\x03⋟\x04por;\x03⩅\x04rren\x02€\x04vee;\x03⋎\x04wed;\x03⋏\x03ps;\x06âˆȘ\x02p;\x03âˆȘ", + // cwconint;[âˆČ] cwint;[∱]. + "\x07conint;\x03âˆČ\x04int;\x03∱", + // cylcty;[⌭]. + "\x05lcty;\x03⌭", + // dArr;[⇓]. + "\x03rr;\x03⇓", + // dHar;[â„„]. + "\x03ar;\x03â„„", + // dagger;[†] daleth;[ℾ] dashv;[⊣] darr;[↓] dash;[‐]. + "\x05gger;\x03†\x05leth;\x03ℾ\x04shv;\x03⊣\x03rr;\x03↓\x03sh;\x03‐", + // dbkarow;[‏] dblac;[˝]. + "\x06karow;\x03‏\x04lac;\x02˝", + // dcaron;[ď] dcy;[ĐŽ]. + "\x05aron;\x02ď\x02y;\x02ĐŽ", + // ddagger;[‡] ddotseq;[â©·] ddarr;[⇊] dd;[ⅆ]. + "\x06agger;\x03‡\x06otseq;\x03â©·\x04arr;\x03⇊\x01;\x03ⅆ", + // demptyv;[⊱] delta;[ÎŽ] deg;[°] deg[°]. + "\x06mptyv;\x03⊱\x04lta;\x02ÎŽ\x02g;\x02°\x01g\x02°", + // dfisht;[â„ż] dfr;[𝔡]. + "\x05isht;\x03â„ż\x02r;\x04𝔡", + // dharl;[⇃] dharr;[⇂]. + "\x04arl;\x03⇃\x04arr;\x03⇂", + // divideontimes;[⋇] diamondsuit;[♩] diamond;[⋄] digamma;[ϝ] divide;[Ă·] divonx;[⋇] diams;[♩] disin;[â‹Č] divide[Ă·] diam;[⋄] die;[š] div;[Ă·]. + "\x0cvideontimes;\x03⋇\x0aamondsuit;\x03♩\x06amond;\x03⋄\x06gamma;\x02ϝ\x05vide;\x02Ă·\x05vonx;\x03⋇\x04ams;\x03♩\x04sin;\x03â‹Č\x04vide\x02Ă·\x03am;\x03⋄\x02e;\x02š\x02v;\x02Ă·", + // djcy;[ђ]. + "\x03cy;\x02ђ", + // dlcorn;[⌞] dlcrop;[⌍]. + "\x05corn;\x03⌞\x05crop;\x03⌍", + // downharpoonright;[⇂] downharpoonleft;[⇃] doublebarwedge;[⌆] downdownarrows;[⇊] dotsquare;[⊡] downarrow;[↓] doteqdot;[≑] dotminus;[∞] dotplus;[∔] dollar;[$] doteq;[≐] dopf;[𝕕] dot;[˙]. + "\x0fwnharpoonright;\x03⇂\x0ewnharpoonleft;\x03⇃\x0dublebarwedge;\x03⌆\x0dwndownarrows;\x03⇊\x08tsquare;\x03⊡\x08wnarrow;\x03↓\x07teqdot;\x03≑\x07tminus;\x03∞\x06tplus;\x03∔\x05llar;\x01$\x04teq;\x03≐\x03pf;\x04𝕕\x02t;\x02˙", + // drbkarow;[‐] drcorn;[⌟] drcrop;[⌌]. + "\x07bkarow;\x03‐\x05corn;\x03⌟\x05crop;\x03⌌", + // dstrok;[đ] dscr;[đ’č] dscy;[ѕ] dsol;[⧶]. + "\x05trok;\x02đ\x03cr;\x04đ’č\x03cy;\x02ѕ\x03ol;\x03⧶", + // dtdot;[⋱] dtrif;[â–Ÿ] dtri;[▿]. + "\x04dot;\x03⋱\x04rif;\x03â–Ÿ\x03ri;\x03▿", + // duarr;[⇔] duhar;[â„Ż]. + "\x04arr;\x03⇔\x04har;\x03â„Ż", + // dwangle;[⊊]. + "\x06angle;\x03⊊", + // dzigrarr;[⟿] dzcy;[џ]. + "\x07igrarr;\x03⟿\x03cy;\x02џ", + // eDDot;[â©·] eDot;[≑]. + "\x04Dot;\x03â©·\x03ot;\x03≑", + // eacute;[Ă©] easter;[â©ź] eacute[Ă©]. + "\x05cute;\x02Ă©\x05ster;\x03â©ź\x04cute\x02Ă©", + // ecaron;[ě] ecolon;[≕] ecirc;[ĂȘ] ecir;[≖] ecirc[ĂȘ] ecy;[э]. + "\x05aron;\x02ě\x05olon;\x03≕\x04irc;\x02ĂȘ\x03ir;\x03≖\x03irc\x02ĂȘ\x02y;\x02э", + // edot;[ė]. + "\x03ot;\x02ė", + // ee;[ⅇ]. + "\x01;\x03ⅇ", + // efDot;[≒] efr;[𝔱]. + "\x04Dot;\x03≒\x02r;\x04𝔱", + // egrave;[Ăš] egsdot;[âȘ˜] egrave[Ăš] egs;[âȘ–] eg;[âȘš]. + "\x05rave;\x02Ăš\x05sdot;\x03âȘ˜\x04rave\x02Ăš\x02s;\x03âȘ–\x01;\x03âȘš", + // elinters;[⏧] elsdot;[âȘ—] ell;[ℓ] els;[âȘ•] el;[âȘ™]. + "\x07inters;\x03⏧\x05sdot;\x03âȘ—\x02l;\x03ℓ\x02s;\x03âȘ•\x01;\x03âȘ™", + // emptyset;[∅] emptyv;[∅] emsp13;[ ] emsp14;[ ] emacr;[ē] empty;[∅] emsp;[ ]. + "\x07ptyset;\x03∅\x05ptyv;\x03∅\x05sp13;\x03 \x05sp14;\x03 \x04acr;\x02ē\x04pty;\x03∅\x03sp;\x03 ", + // ensp;[ ] eng;[Ƌ]. + "\x03sp;\x03 \x02g;\x02Ƌ", + // eogon;[ę] eopf;[𝕖]. + "\x04gon;\x02ę\x03pf;\x04𝕖", + // epsilon;[Δ] eparsl;[⧣] eplus;[⩱] epsiv;[Ï”] epar;[⋕] epsi;[Δ]. + "\x06silon;\x02Δ\x05arsl;\x03⧣\x04lus;\x03⩱\x04siv;\x02Ï”\x03ar;\x03⋕\x03si;\x02Δ", + // eqslantless;[âȘ•] eqslantgtr;[âȘ–] eqvparsl;[⧄] eqcolon;[≕] equivDD;[â©ž] eqcirc;[≖] equals;[=] equest;[≟] eqsim;[≂] equiv;[≡]. + "\x0aslantless;\x03âȘ•\x09slantgtr;\x03âȘ–\x07vparsl;\x03⧄\x06colon;\x03≕\x06uivDD;\x03â©ž\x05circ;\x03≖\x05uals;\x01=\x05uest;\x03≟\x04sim;\x03≂\x04uiv;\x03≡", + // erDot;[≓] erarr;[ℱ]. + "\x04Dot;\x03≓\x04arr;\x03ℱ", + // esdot;[≐] escr;[ℯ] esim;[≂]. + "\x04dot;\x03≐\x03cr;\x03ℯ\x03im;\x03≂", + // eta;[η] eth;[Ă°] eth[Ă°]. + "\x02a;\x02η\x02h;\x02Ă°\x01h\x02Ă°", + // euml;[Ă«] euro;[€] euml[Ă«]. + "\x03ml;\x02Ă«\x03ro;\x03€\x02ml\x02Ă«", + // exponentiale;[ⅇ] expectation;[ℰ] exist;[∃] excl;[!]. + "\x0bponentiale;\x03ⅇ\x0apectation;\x03ℰ\x04ist;\x03∃\x03cl;\x01!", + // fallingdotseq;[≒]. + "\x0cllingdotseq;\x03≒", + // fcy;[ф]. + "\x02y;\x02ф", + // female;[♀]. + "\x05male;\x03♀", + // ffilig;[ïŹƒ] ffllig;[ïŹ„] fflig;[ïŹ€] ffr;[𝔣]. + "\x05ilig;\x03ïŹƒ\x05llig;\x03ïŹ„\x04lig;\x03ïŹ€\x02r;\x04𝔣", + // filig;[ïŹ]. + "\x04lig;\x03ïŹ", + // fjlig;[fj]. + "\x04lig;\x02fj", + // fllig;[ïŹ‚] fltns;[▱] flat;[♭]. + "\x04lig;\x03ïŹ‚\x04tns;\x03▱\x03at;\x03♭", + // fnof;[ƒ]. + "\x03of;\x02ƒ", + // forall;[∀] forkv;[⫙] fopf;[𝕗] fork;[⋔]. + "\x05rall;\x03∀\x04rkv;\x03⫙\x03pf;\x04𝕗\x03rk;\x03⋔", + // fpartint;[⚍]. + "\x07artint;\x03⚍", + // frac12;[Âœ] frac13;[⅓] frac14;[ÂŒ] frac15;[⅕] frac16;[⅙] frac18;[⅛] frac23;[⅔] frac25;[⅖] frac34;[Ÿ] frac35;[⅗] frac38;[⅜] frac45;[⅘] frac56;[⅚] frac58;[⅝] frac78;[⅞] frac12[Âœ] frac14[ÂŒ] frac34[Ÿ] frasl;[⁄] frown;[⌱]. + "\x05ac12;\x02Âœ\x05ac13;\x03⅓\x05ac14;\x02ÂŒ\x05ac15;\x03⅕\x05ac16;\x03⅙\x05ac18;\x03⅛\x05ac23;\x03⅔\x05ac25;\x03⅖\x05ac34;\x02Ÿ\x05ac35;\x03⅗\x05ac38;\x03⅜\x05ac45;\x03⅘\x05ac56;\x03⅚\x05ac58;\x03⅝\x05ac78;\x03⅞\x04ac12\x02Âœ\x04ac14\x02ÂŒ\x04ac34\x02Ÿ\x04asl;\x03⁄\x04own;\x03⌱", + // fscr;[đ’»]. + "\x03cr;\x04đ’»", + // gEl;[âȘŒ] gE;[≧]. + "\x02l;\x03âȘŒ\x01;\x03≧", + // gacute;[Ç”] gammad;[ϝ] gamma;[Îł] gap;[âȘ†]. + "\x05cute;\x02Ç”\x05mmad;\x02ϝ\x04mma;\x02Îł\x02p;\x03âȘ†", + // gbreve;[ğ]. + "\x05reve;\x02ğ", + // gcirc;[ĝ] gcy;[Đł]. + "\x04irc;\x02ĝ\x02y;\x02Đł", + // gdot;[ÄĄ]. + "\x03ot;\x02ÄĄ", + // geqslant;[â©Ÿ] gesdotol;[âȘ„] gesdoto;[âȘ‚] gesdot;[âȘ€] gesles;[âȘ”] gescc;[âȘ©] geqq;[≧] gesl;[⋛] gel;[⋛] geq;[≄] ges;[â©Ÿ] ge;[≄]. + "\x07qslant;\x03â©Ÿ\x07sdotol;\x03âȘ„\x06sdoto;\x03âȘ‚\x05sdot;\x03âȘ€\x05sles;\x03âȘ”\x04scc;\x03âȘ©\x03qq;\x03≧\x03sl;\x06⋛\x02l;\x03⋛\x02q;\x03≄\x02s;\x03â©Ÿ\x01;\x03≄", + // gfr;[đ”€]. + "\x02r;\x04đ”€", + // ggg;[⋙] gg;[≫]. + "\x02g;\x03⋙\x01;\x03≫", + // gimel;[ℷ]. + "\x04mel;\x03ℷ", + // gjcy;[ѓ]. + "\x03cy;\x02ѓ", + // glE;[âȘ’] gla;[âȘ„] glj;[âȘ€] gl;[≷]. + "\x02E;\x03âȘ’\x02a;\x03âȘ„\x02j;\x03âȘ€\x01;\x03≷", + // gnapprox;[âȘŠ] gneqq;[≩] gnsim;[⋧] gnap;[âȘŠ] gneq;[âȘˆ] gnE;[≩] gne;[âȘˆ]. + "\x07approx;\x03âȘŠ\x04eqq;\x03≩\x04sim;\x03⋧\x03ap;\x03âȘŠ\x03eq;\x03âȘˆ\x02E;\x03≩\x02e;\x03âȘˆ", + // gopf;[𝕘]. + "\x03pf;\x04𝕘", + // grave;[`]. + "\x04ave;\x01`", + // gsime;[âȘŽ] gsiml;[âȘ] gscr;[ℊ] gsim;[≳]. + "\x04ime;\x03âȘŽ\x04iml;\x03âȘ\x03cr;\x03ℊ\x03im;\x03≳", + // gtreqqless;[âȘŒ] gtrapprox;[âȘ†] gtreqless;[⋛] gtquest;[â©Œ] gtrless;[≷] gtlPar;[⩕] gtrarr;[â„ž] gtrdot;[⋗] gtrsim;[≳] gtcir;[â©ș] gtdot;[⋗] gtcc;[âȘ§] gt;[>]. + "\x09reqqless;\x03âȘŒ\x08rapprox;\x03âȘ†\x08reqless;\x03⋛\x06quest;\x03â©Œ\x06rless;\x03≷\x05lPar;\x03⩕\x05rarr;\x03â„ž\x05rdot;\x03⋗\x05rsim;\x03≳\x04cir;\x03â©ș\x04dot;\x03⋗\x03cc;\x03âȘ§\x01;\x01>", + // gvertneqq;[≩] gvnE;[≩]. + "\x08ertneqq;\x06≩\x03nE;\x06≩", + // hArr;[⇔]. + "\x03rr;\x03⇔", + // harrcir;[℈] hairsp;[ ] hamilt;[ℋ] hardcy;[ъ] harrw;[↭] half;[Âœ] harr;[↔]. + "\x06rrcir;\x03℈\x05irsp;\x03 \x05milt;\x03ℋ\x05rdcy;\x02ъ\x04rrw;\x03↭\x03lf;\x02Âœ\x03rr;\x03↔", + // hbar;[ℏ]. + "\x03ar;\x03ℏ", + // hcirc;[Ä„]. + "\x04irc;\x02Ä„", + // heartsuit;[♄] hearts;[♄] hellip;[
] hercon;[âŠč]. + "\x08artsuit;\x03♄\x05arts;\x03♄\x05llip;\x03
\x05rcon;\x03âŠč", + // hfr;[đ”„]. + "\x02r;\x04đ”„", + // hksearow;[ ] hkswarow;[ ]. + "\x07searow;\x03 \x07swarow;\x03 ", + // hookrightarrow;[â†Ș] hookleftarrow;[↩] homtht;[∻] horbar;[―] hoarr;[⇿] hopf;[𝕙]. + "\x0dokrightarrow;\x03â†Ș\x0cokleftarrow;\x03↩\x05mtht;\x03∻\x05rbar;\x03―\x04arr;\x03⇿\x03pf;\x04𝕙", + // hslash;[ℏ] hstrok;[ħ] hscr;[đ’œ]. + "\x05lash;\x03ℏ\x05trok;\x02ħ\x03cr;\x04đ’œ", + // hybull;[⁃] hyphen;[‐]. + "\x05bull;\x03⁃\x05phen;\x03‐", + // iacute;[Ă­] iacute[Ă­]. + "\x05cute;\x02Ă­\x04cute\x02Ă­", + // icirc;[Ăź] icirc[Ăź] icy;[Đž] ic;[⁣]. + "\x04irc;\x02Ăź\x03irc\x02Ăź\x02y;\x02Đž\x01;\x03⁣", + // iexcl;[ÂĄ] iecy;[Đ”] iexcl[ÂĄ]. + "\x04xcl;\x02ÂĄ\x03cy;\x02Đ”\x03xcl\x02ÂĄ", + // iff;[⇔] ifr;[𝔩]. + "\x02f;\x03⇔\x02r;\x04𝔩", + // igrave;[ĂŹ] igrave[ĂŹ]. + "\x05rave;\x02ĂŹ\x04rave\x02ĂŹ", + // iiiint;[⹌] iinfin;[⧜] iiint;[∭] iiota;[℩] ii;[ⅈ]. + "\x05iint;\x03⹌\x05nfin;\x03⧜\x04int;\x03∭\x04ota;\x03℩\x01;\x03ⅈ", + // ijlig;[Äł]. + "\x04lig;\x02Äł", + // imagline;[ℐ] imagpart;[ℑ] imacr;[Ä«] image;[ℑ] imath;[ı] imped;[Æ”] imof;[⊷]. + "\x07agline;\x03ℐ\x07agpart;\x03ℑ\x04acr;\x02Ä«\x04age;\x03ℑ\x04ath;\x02ı\x04ped;\x02Æ”\x03of;\x03⊷", + // infintie;[⧝] integers;[â„€] intercal;[âŠș] intlarhk;[⹗] intprod;[⚌] incare;[℅] inodot;[ı] intcal;[âŠș] infin;[∞] int;[∫] in;[∈]. + "\x07fintie;\x03⧝\x07tegers;\x03â„€\x07tercal;\x03âŠș\x07tlarhk;\x03⹗\x06tprod;\x03⚌\x05care;\x03℅\x05odot;\x02ı\x05tcal;\x03âŠș\x04fin;\x03∞\x02t;\x03∫\x01;\x03∈", + // iogon;[ÄŻ] iocy;[ё] iopf;[𝕚] iota;[Îč]. + "\x04gon;\x02ÄŻ\x03cy;\x02ё\x03pf;\x04𝕚\x03ta;\x02Îč", + // iprod;[⚌]. + "\x04rod;\x03⚌", + // iquest;[Âż] iquest[Âż]. + "\x05uest;\x02Âż\x04uest\x02Âż", + // isindot;[â‹”] isinsv;[⋳] isinE;[â‹č] isins;[⋮] isinv;[∈] iscr;[đ’Ÿ] isin;[∈]. + "\x06indot;\x03â‹”\x05insv;\x03⋳\x04inE;\x03â‹č\x04ins;\x03⋮\x04inv;\x03∈\x03cr;\x04đ’Ÿ\x03in;\x03∈", + // itilde;[Ä©] it;[⁹]. + "\x05ilde;\x02Ä©\x01;\x03⁹", + // iukcy;[і] iuml;[ĂŻ] iuml[ĂŻ]. + "\x04kcy;\x02і\x03ml;\x02ĂŻ\x02ml\x02ĂŻ", + // jcirc;[Ä”] jcy;[Đč]. + "\x04irc;\x02Ä”\x02y;\x02Đč", + // jfr;[𝔧]. + "\x02r;\x04𝔧", + // jmath;[È·]. + "\x04ath;\x02È·", + // jopf;[𝕛]. + "\x03pf;\x04𝕛", + // jsercy;[ј] jscr;[𝒿]. + "\x05ercy;\x02ј\x03cr;\x04𝒿", + // jukcy;[є]. + "\x04kcy;\x02є", + // kappav;[Ï°] kappa;[Îș]. + "\x05ppav;\x02Ï°\x04ppa;\x02Îș", + // kcedil;[Ä·] kcy;[Đș]. + "\x05edil;\x02Ä·\x02y;\x02Đș", + // kfr;[𝔹]. + "\x02r;\x04𝔹", + // kgreen;[Äž]. + "\x05reen;\x02Äž", + // khcy;[х]. + "\x03cy;\x02х", + // kjcy;[ќ]. + "\x03cy;\x02ќ", + // kopf;[𝕜]. + "\x03pf;\x04𝕜", + // kscr;[𝓀]. + "\x03cr;\x04𝓀", + // lAtail;[‛] lAarr;[⇚] lArr;[⇐]. + "\x05tail;\x03‛\x04arr;\x03⇚\x03rr;\x03⇐", + // lBarr;[‎]. + "\x04arr;\x03‎", + // lEg;[âȘ‹] lE;[≩]. + "\x02g;\x03âȘ‹\x01;\x03≩", + // lHar;[â„ą]. + "\x03ar;\x03â„ą", + // laemptyv;[⊎] larrbfs;[‟] larrsim;[â„ł] lacute;[Äș] lagran;[ℒ] lambda;[λ] langle;[⟹] larrfs;[”] larrhk;[↩] larrlp;[↫] larrpl;[â€č] larrtl;[↱] latail;[’] langd;[⩑] laquo;[«] larrb;[⇀] lates;[âȘ­ïž€] lang;[⟹] laquo[«] larr;[←] late;[âȘ­] lap;[âȘ…] lat;[âȘ«]. + "\x07emptyv;\x03⊎\x06rrbfs;\x03‟\x06rrsim;\x03â„ł\x05cute;\x02Äș\x05gran;\x03ℒ\x05mbda;\x02λ\x05ngle;\x03⟹\x05rrfs;\x03”\x05rrhk;\x03↩\x05rrlp;\x03↫\x05rrpl;\x03â€č\x05rrtl;\x03↱\x05tail;\x03’\x04ngd;\x03⩑\x04quo;\x02«\x04rrb;\x03⇀\x04tes;\x06âȘ­ïž€\x03ng;\x03⟹\x03quo\x02«\x03rr;\x03←\x03te;\x03âȘ­\x02p;\x03âȘ…\x02t;\x03âȘ«", + // lbrksld;[⊏] lbrkslu;[⊍] lbrace;[{] lbrack;[[] lbarr;[‌] lbbrk;[âČ] lbrke;[⩋]. + "\x06rksld;\x03⊏\x06rkslu;\x03⊍\x05race;\x01{\x05rack;\x01[\x04arr;\x03‌\x04brk;\x03âČ\x04rke;\x03⩋", + // lcaron;[ÄŸ] lcedil;[ÄŒ] lceil;[⌈] lcub;[{] lcy;[Đ»]. + "\x05aron;\x02ÄŸ\x05edil;\x02ÄŒ\x04eil;\x03⌈\x03ub;\x01{\x02y;\x02Đ»", + // ldrushar;[â„‹] ldrdhar;[℧] ldquor;[„] ldquo;[“] ldca;[‶] ldsh;[â†Č]. + "\x07rushar;\x03â„‹\x06rdhar;\x03℧\x05quor;\x03„\x04quo;\x03“\x03ca;\x03‶\x03sh;\x03â†Č", + // leftrightsquigarrow;[↭] leftrightharpoons;[⇋] leftharpoondown;[↜] leftrightarrows;[⇆] leftleftarrows;[⇇] leftrightarrow;[↔] leftthreetimes;[⋋] leftarrowtail;[↱] leftharpoonup;[↌] lessapprox;[âȘ…] lesseqqgtr;[âȘ‹] leftarrow;[←] lesseqgtr;[⋚] leqslant;[â©œ] lesdotor;[âȘƒ] lesdoto;[âȘ] lessdot;[⋖] lessgtr;[≶] lesssim;[â‰Č] lesdot;[â©ż] lesges;[âȘ“] lescc;[âȘš] leqq;[≩] lesg;[⋚] leg;[⋚] leq;[≀] les;[â©œ] le;[≀]. + "\x12ftrightsquigarrow;\x03↭\x10ftrightharpoons;\x03⇋\x0eftharpoondown;\x03↜\x0eftrightarrows;\x03⇆\x0dftleftarrows;\x03⇇\x0dftrightarrow;\x03↔\x0dftthreetimes;\x03⋋\x0cftarrowtail;\x03↱\x0cftharpoonup;\x03↌\x09ssapprox;\x03âȘ…\x09sseqqgtr;\x03âȘ‹\x08ftarrow;\x03←\x08sseqgtr;\x03⋚\x07qslant;\x03â©œ\x07sdotor;\x03âȘƒ\x06sdoto;\x03âȘ\x06ssdot;\x03⋖\x06ssgtr;\x03≶\x06sssim;\x03â‰Č\x05sdot;\x03â©ż\x05sges;\x03âȘ“\x04scc;\x03âȘš\x03qq;\x03≩\x03sg;\x06⋚\x02g;\x03⋚\x02q;\x03≀\x02s;\x03â©œ\x01;\x03≀", + // lfisht;[â„Œ] lfloor;[⌊] lfr;[đ”©]. + "\x05isht;\x03â„Œ\x05loor;\x03⌊\x02r;\x04đ”©", + // lgE;[âȘ‘] lg;[≶]. + "\x02E;\x03âȘ‘\x01;\x03≶", + // lharul;[â„Ș] lhard;[↜] lharu;[↌] lhblk;[▄]. + "\x05arul;\x03â„Ș\x04ard;\x03↜\x04aru;\x03↌\x04blk;\x03▄", + // ljcy;[љ]. + "\x03cy;\x02љ", + // llcorner;[⌞] llhard;[â„«] llarr;[⇇] lltri;[â—ș] ll;[â‰Ș]. + "\x07corner;\x03⌞\x05hard;\x03â„«\x04arr;\x03⇇\x04tri;\x03â—ș\x01;\x03â‰Ș", + // lmoustache;[⎰] lmidot;[ƀ] lmoust;[⎰]. + "\x09oustache;\x03⎰\x05idot;\x02ƀ\x05oust;\x03⎰", + // lnapprox;[âȘ‰] lneqq;[≹] lnsim;[⋩] lnap;[âȘ‰] lneq;[âȘ‡] lnE;[≹] lne;[âȘ‡]. + "\x07approx;\x03âȘ‰\x04eqq;\x03≹\x04sim;\x03⋩\x03ap;\x03âȘ‰\x03eq;\x03âȘ‡\x02E;\x03≹\x02e;\x03âȘ‡", + // longleftrightarrow;[⟷] longrightarrow;[⟶] looparrowright;[↬] longleftarrow;[⟔] looparrowleft;[↫] longmapsto;[⟌] lotimes;[⚎] lozenge;[◊] loplus;[âš­] lowast;[∗] lowbar;[_] loang;[⟬] loarr;[⇜] lobrk;[⟩] lopar;[⩅] lopf;[𝕝] lozf;[⧫] loz;[◊]. + "\x11ngleftrightarrow;\x03⟷\x0dngrightarrow;\x03⟶\x0doparrowright;\x03↬\x0cngleftarrow;\x03⟔\x0coparrowleft;\x03↫\x09ngmapsto;\x03⟌\x06times;\x03⚎\x06zenge;\x03◊\x05plus;\x03âš­\x05wast;\x03∗\x05wbar;\x01_\x04ang;\x03⟬\x04arr;\x03⇜\x04brk;\x03⟩\x04par;\x03⩅\x03pf;\x04𝕝\x03zf;\x03⧫\x02z;\x03◊", + // lparlt;[⩓] lpar;[(]. + "\x05arlt;\x03⩓\x03ar;\x01(", + // lrcorner;[⌟] lrhard;[â„­] lrarr;[⇆] lrhar;[⇋] lrtri;[⊿] lrm;[‎]. + "\x07corner;\x03⌟\x05hard;\x03â„­\x04arr;\x03⇆\x04har;\x03⇋\x04tri;\x03⊿\x02m;\x03‎", + // lsaquo;[â€č] lsquor;[‚] lstrok;[Ƃ] lsime;[âȘ] lsimg;[âȘ] lsquo;[‘] lscr;[𝓁] lsim;[â‰Č] lsqb;[[] lsh;[↰]. + "\x05aquo;\x03â€č\x05quor;\x03‚\x05trok;\x02Ƃ\x04ime;\x03âȘ\x04img;\x03âȘ\x04quo;\x03‘\x03cr;\x04𝓁\x03im;\x03â‰Č\x03qb;\x01[\x02h;\x03↰", + // ltquest;[â©»] lthree;[⋋] ltimes;[⋉] ltlarr;[ℶ] ltrPar;[⩖] ltcir;[â©č] ltdot;[⋖] ltrie;[⊮] ltrif;[◂] ltcc;[âȘŠ] ltri;[◃] lt;[<]. + "\x06quest;\x03â©»\x05hree;\x03⋋\x05imes;\x03⋉\x05larr;\x03ℶ\x05rPar;\x03⩖\x04cir;\x03â©č\x04dot;\x03⋖\x04rie;\x03⊮\x04rif;\x03◂\x03cc;\x03âȘŠ\x03ri;\x03◃\x01;\x01<", + // lurdshar;[â„Š] luruhar;[â„Š]. + "\x07rdshar;\x03â„Š\x06ruhar;\x03â„Š", + // lvertneqq;[≚] lvnE;[≚]. + "\x08ertneqq;\x06≚\x03nE;\x06≚", + // mDDot;[âˆș]. + "\x04Dot;\x03âˆș", + // mapstodown;[↧] mapstoleft;[ↀ] mapstoup;[ↄ] maltese;[✠] mapsto;[↩] marker;[▼] macr;[ÂŻ] male;[♂] malt;[✠] macr[ÂŻ] map;[↩]. + "\x09pstodown;\x03↧\x09pstoleft;\x03ↀ\x07pstoup;\x03ↄ\x06ltese;\x03✠\x05psto;\x03↩\x05rker;\x03▼\x03cr;\x02ÂŻ\x03le;\x03♂\x03lt;\x03✠\x02cr\x02ÂŻ\x02p;\x03↩", + // mcomma;[âš©] mcy;[ĐŒ]. + "\x05omma;\x03âš©\x02y;\x02ĐŒ", + // mdash;[—]. + "\x04ash;\x03—", + // measuredangle;[∥]. + "\x0casuredangle;\x03∥", + // mfr;[đ”Ș]. + "\x02r;\x04đ”Ș", + // mho;[℧]. + "\x02o;\x03℧", + // minusdu;[âšȘ] midast;[*] midcir;[â«°] middot;[·] minusb;[⊟] minusd;[∞] micro;[”] middot[·] minus;[−] micro[”] mid;[∣]. + "\x06nusdu;\x03âšȘ\x05dast;\x01*\x05dcir;\x03â«°\x05ddot;\x02·\x05nusb;\x03⊟\x05nusd;\x03∞\x04cro;\x02”\x04ddot\x02·\x04nus;\x03−\x03cro\x02”\x02d;\x03∣", + // mlcp;[⫛] mldr;[
]. + "\x03cp;\x03⫛\x03dr;\x03
", + // mnplus;[∓]. + "\x05plus;\x03∓", + // models;[⊧] mopf;[𝕞]. + "\x05dels;\x03⊧\x03pf;\x04𝕞", + // mp;[∓]. + "\x01;\x03∓", + // mstpos;[∟] mscr;[𝓂]. + "\x05tpos;\x03∟\x03cr;\x04𝓂", + // multimap;[⊾] mumap;[⊾] mu;[ÎŒ]. + "\x07ltimap;\x03⊾\x04map;\x03⊾\x01;\x02ÎŒ", + // nGtv;[≫̞] nGg;[⋙̞] nGt;[≫⃒]. + "\x03tv;\x05≫̞\x02g;\x05⋙̞\x02t;\x06≫⃒", + // nLeftrightarrow;[⇎] nLeftarrow;[⇍] nLtv;[â‰ȘÌž] nLl;[⋘̞] nLt;[â‰Ș⃒]. + "\x0eeftrightarrow;\x03⇎\x09eftarrow;\x03⇍\x03tv;\x05â‰ȘÌž\x02l;\x05⋘̞\x02t;\x06â‰Ș⃒", + // nRightarrow;[⇏]. + "\x0aightarrow;\x03⇏", + // nVDash;[⊯] nVdash;[⊼]. + "\x05Dash;\x03⊯\x05dash;\x03⊼", + // naturals;[ℕ] napprox;[≉] natural;[♼] nacute;[Ƅ] nabla;[∇] napid;[≋̞] napos;[Ɖ] natur;[♼] nang;[∠⃒] napE;[â©°Ìž] nap;[≉]. + "\x07turals;\x03ℕ\x06pprox;\x03≉\x06tural;\x03♼\x05cute;\x02Ƅ\x04bla;\x03∇\x04pid;\x05≋̞\x04pos;\x02Ɖ\x04tur;\x03♼\x03ng;\x06∠⃒\x03pE;\x05â©°Ìž\x02p;\x03≉", + // nbumpe;[≏̞] nbump;[≎̞] nbsp;[ ] nbsp[ ]. + "\x05umpe;\x05≏̞\x04ump;\x05≎̞\x03sp;\x02 \x02sp\x02 ", + // ncongdot;[â©­Ìž] ncaron;[ƈ] ncedil;[Ɔ] ncong;[≇] ncap;[⩃] ncup;[⩂] ncy;[Đœ]. + "\x07ongdot;\x05â©­Ìž\x05aron;\x02ƈ\x05edil;\x02Ɔ\x04ong;\x03≇\x03ap;\x03⩃\x03up;\x03⩂\x02y;\x02Đœ", + // ndash;[–]. + "\x04ash;\x03–", + // nearrow;[↗] nexists;[∄] nearhk;[ ] nequiv;[≱] nesear;[‚] nexist;[∄] neArr;[⇗] nearr;[↗] nedot;[≐̞] nesim;[≂̞] ne;[≠]. + "\x06arrow;\x03↗\x06xists;\x03∄\x05arhk;\x03 \x05quiv;\x03≱\x05sear;\x03‚\x05xist;\x03∄\x04Arr;\x03⇗\x04arr;\x03↗\x04dot;\x05≐̞\x04sim;\x05≂̞\x01;\x03≠", + // nfr;[đ”«]. + "\x02r;\x04đ”«", + // ngeqslant;[â©ŸÌž] ngeqq;[≧̞] ngsim;[≔] ngeq;[≱] nges;[â©ŸÌž] ngtr;[≯] ngE;[≧̞] nge;[≱] ngt;[≯]. + "\x08eqslant;\x05â©ŸÌž\x04eqq;\x05≧̞\x04sim;\x03≔\x03eq;\x03≱\x03es;\x05â©ŸÌž\x03tr;\x03≯\x02E;\x05≧̞\x02e;\x03≱\x02t;\x03≯", + // nhArr;[⇎] nharr;[↼] nhpar;[â«Č]. + "\x04Arr;\x03⇎\x04arr;\x03↼\x04par;\x03â«Č", + // nisd;[â‹ș] nis;[â‹Œ] niv;[∋] ni;[∋]. + "\x03sd;\x03â‹ș\x02s;\x03â‹Œ\x02v;\x03∋\x01;\x03∋", + // njcy;[њ]. + "\x03cy;\x02њ", + // nleftrightarrow;[↼] nleftarrow;[↚] nleqslant;[⩜̞] nltrie;[⋬] nlArr;[⇍] nlarr;[↚] nleqq;[≊̞] nless;[≼] nlsim;[≮] nltri;[â‹Ș] nldr;[ ] nleq;[≰] nles;[⩜̞] nlE;[≊̞] nle;[≰] nlt;[≼]. + "\x0eeftrightarrow;\x03↼\x09eftarrow;\x03↚\x08eqslant;\x05⩜̞\x05trie;\x03⋬\x04Arr;\x03⇍\x04arr;\x03↚\x04eqq;\x05≊̞\x04ess;\x03≼\x04sim;\x03≮\x04tri;\x03â‹Ș\x03dr;\x03 \x03eq;\x03≰\x03es;\x05⩜̞\x02E;\x05≊̞\x02e;\x03≰\x02t;\x03≼", + // nmid;[∀]. + "\x03id;\x03∀", + // notindot;[⋔̞] notinva;[∉] notinvb;[⋷] notinvc;[⋶] notniva;[∌] notnivb;[â‹Ÿ] notnivc;[â‹œ] notinE;[â‹čÌž] notin;[∉] notni;[∌] nopf;[𝕟] not;[ÂŹ] not[ÂŹ]. + "\x07tindot;\x05⋔̞\x06tinva;\x03∉\x06tinvb;\x03⋷\x06tinvc;\x03⋶\x06tniva;\x03∌\x06tnivb;\x03â‹Ÿ\x06tnivc;\x03â‹œ\x05tinE;\x05â‹čÌž\x04tin;\x03∉\x04tni;\x03∌\x03pf;\x04𝕟\x02t;\x02ÂŹ\x01t\x02ÂŹ", + // nparallel;[∊] npolint;[⹔] npreceq;[âȘŻÌž] nparsl;[⫝̸⃄] nprcue;[⋠] npart;[∂̞] nprec;[⊀] npar;[∊] npre;[âȘŻÌž] npr;[⊀]. + "\x08arallel;\x03∊\x06olint;\x03⹔\x06receq;\x05âȘŻÌž\x05arsl;\x06⫝̸⃄\x05rcue;\x03⋠\x04art;\x05∂̞\x04rec;\x03⊀\x03ar;\x03∊\x03re;\x05âȘŻÌž\x02r;\x03⊀", + // nrightarrow;[↛] nrarrc;[â€łÌž] nrarrw;[↝̞] nrtrie;[⋭] nrArr;[⇏] nrarr;[↛] nrtri;[⋫]. + "\x0aightarrow;\x03↛\x05arrc;\x05â€łÌž\x05arrw;\x05↝̞\x05trie;\x03⋭\x04Arr;\x03⇏\x04arr;\x03↛\x04tri;\x03⋫", + // nshortparallel;[∊] nsubseteqq;[â«…Ìž] nsupseteqq;[⫆̞] nshortmid;[∀] nsubseteq;[⊈] nsupseteq;[⊉] nsqsube;[⋱] nsqsupe;[⋣] nsubset;[⊂⃒] nsucceq;[âȘ°Ìž] nsupset;[⊃⃒] nsccue;[⋡] nsimeq;[≄] nsime;[≄] nsmid;[∀] nspar;[∊] nsubE;[â«…Ìž] nsube;[⊈] nsucc;[⊁] nsupE;[⫆̞] nsupe;[⊉] nsce;[âȘ°Ìž] nscr;[𝓃] nsim;[≁] nsub;[⊄] nsup;[⊅] nsc;[⊁]. + "\x0dhortparallel;\x03∊\x09ubseteqq;\x05â«…Ìž\x09upseteqq;\x05⫆̞\x08hortmid;\x03∀\x08ubseteq;\x03⊈\x08upseteq;\x03⊉\x06qsube;\x03⋱\x06qsupe;\x03⋣\x06ubset;\x06⊂⃒\x06ucceq;\x05âȘ°Ìž\x06upset;\x06⊃⃒\x05ccue;\x03⋡\x05imeq;\x03≄\x04ime;\x03≄\x04mid;\x03∀\x04par;\x03∊\x04ubE;\x05â«…Ìž\x04ube;\x03⊈\x04ucc;\x03⊁\x04upE;\x05⫆̞\x04upe;\x03⊉\x03ce;\x05âȘ°Ìž\x03cr;\x04𝓃\x03im;\x03≁\x03ub;\x03⊄\x03up;\x03⊅\x02c;\x03⊁", + // ntrianglerighteq;[⋭] ntrianglelefteq;[⋬] ntriangleright;[⋫] ntriangleleft;[â‹Ș] ntilde;[ñ] ntilde[ñ] ntgl;[â‰č] ntlg;[≾]. + "\x0frianglerighteq;\x03⋭\x0erianglelefteq;\x03⋬\x0driangleright;\x03⋫\x0criangleleft;\x03â‹Ș\x05ilde;\x02ñ\x04ilde\x02ñ\x03gl;\x03â‰č\x03lg;\x03≾", + // numero;[№] numsp;[ ] num;[#] nu;[Îœ]. + "\x05mero;\x03№\x04msp;\x03 \x02m;\x01#\x01;\x02Îœ", + // nvinfin;[⧞] nvltrie;[⊮⃒] nvrtrie;[⊔⃒] nvDash;[⊭] nvHarr;[ ] nvdash;[⊬] nvlArr;[ ] nvrArr;[ ] nvsim;[∌⃒] nvap;[≍⃒] nvge;[≄⃒] nvgt;[>⃒] nvle;[≀⃒] nvlt;[<⃒]. + "\x06infin;\x03⧞\x06ltrie;\x06⊮⃒\x06rtrie;\x06⊔⃒\x05Dash;\x03⊭\x05Harr;\x03 \x05dash;\x03⊬\x05lArr;\x03 \x05rArr;\x03 \x04sim;\x06∌⃒\x03ap;\x06≍⃒\x03ge;\x06≄⃒\x03gt;\x04>⃒\x03le;\x06≀⃒\x03lt;\x04<⃒", + // nwarrow;[↖] nwarhk;[‣] nwnear;[‧] nwArr;[⇖] nwarr;[↖]. + "\x06arrow;\x03↖\x05arhk;\x03‣\x05near;\x03‧\x04Arr;\x03⇖\x04arr;\x03↖", + // oS;[Ⓢ]. + "\x01;\x03Ⓢ", + // oacute;[Ăł] oacute[Ăł] oast;[⊛]. + "\x05cute;\x02Ăł\x04cute\x02Ăł\x03st;\x03⊛", + // ocirc;[ĂŽ] ocir;[⊚] ocirc[ĂŽ] ocy;[ĐŸ]. + "\x04irc;\x02ĂŽ\x03ir;\x03⊚\x03irc\x02ĂŽ\x02y;\x02ĐŸ", + // odblac;[Ƒ] odsold;[⊌] odash;[⊝] odiv;[âšž] odot;[⊙]. + "\x05blac;\x02Ƒ\x05sold;\x03⊌\x04ash;\x03⊝\x03iv;\x03âšž\x03ot;\x03⊙", + // oelig;[Ɠ]. + "\x04lig;\x02Ɠ", + // ofcir;[⊿] ofr;[𝔬]. + "\x04cir;\x03⊿\x02r;\x04𝔬", + // ograve;[ĂČ] ograve[ĂČ] ogon;[˛] ogt;[⧁]. + "\x05rave;\x02ĂČ\x04rave\x02ĂČ\x03on;\x02˛\x02t;\x03⧁", + // ohbar;[⊔] ohm;[Ω]. + "\x04bar;\x03⊔\x02m;\x02Ω", + // oint;[∟]. + "\x03nt;\x03∟", + // olcross;[⊻] olarr;[â†ș] olcir;[⊟] oline;[‟] olt;[⧀]. + "\x06cross;\x03⊻\x04arr;\x03â†ș\x04cir;\x03⊟\x04ine;\x03‟\x02t;\x03⧀", + // omicron;[Îż] ominus;[⊖] omacr;[ƍ] omega;[ω] omid;[⊶]. + "\x06icron;\x02Îż\x05inus;\x03⊖\x04acr;\x02ƍ\x04ega;\x02ω\x03id;\x03⊶", + // oopf;[𝕠]. + "\x03pf;\x04𝕠", + // operp;[âŠč] oplus;[⊕] opar;[⊷]. + "\x04erp;\x03âŠč\x04lus;\x03⊕\x03ar;\x03⊷", + // orderof;[℮] orslope;[⩗] origof;[⊶] orarr;[↻] order;[℮] ordf;[ÂȘ] ordm;[Âș] oror;[⩖] ord;[⩝] ordf[ÂȘ] ordm[Âș] orv;[⩛] or;[√]. + "\x06derof;\x03℮\x06slope;\x03⩗\x05igof;\x03⊶\x04arr;\x03↻\x04der;\x03℮\x03df;\x02ÂȘ\x03dm;\x02Âș\x03or;\x03⩖\x02d;\x03⩝\x02df\x02ÂȘ\x02dm\x02Âș\x02v;\x03⩛\x01;\x03√", + // oslash;[Ăž] oslash[Ăž] oscr;[℮] osol;[⊘]. + "\x05lash;\x02Ăž\x04lash\x02Ăž\x03cr;\x03℮\x03ol;\x03⊘", + // otimesas;[⚶] otilde;[Ă”] otimes;[⊗] otilde[Ă”]. + "\x07imesas;\x03⚶\x05ilde;\x02Ă”\x05imes;\x03⊗\x04ilde\x02Ă”", + // ouml;[ö] ouml[ö]. + "\x03ml;\x02ö\x02ml\x02ö", + // ovbar;[⌜]. + "\x04bar;\x03⌜", + // parallel;[∄] parsim;[â«ł] parsl;[â«œ] para;[¶] part;[∂] par;[∄] para[¶]. + "\x07rallel;\x03∄\x05rsim;\x03â«ł\x04rsl;\x03â«œ\x03ra;\x02¶\x03rt;\x03∂\x02r;\x03∄\x02ra\x02¶", + // pcy;[Đż]. + "\x02y;\x02Đż", + // pertenk;[‱] percnt;[%] period;[.] permil;[‰] perp;[⊄]. + "\x06rtenk;\x03‱\x05rcnt;\x01%\x05riod;\x01.\x05rmil;\x03‰\x03rp;\x03⊄", + // pfr;[𝔭]. + "\x02r;\x04𝔭", + // phmmat;[ℳ] phone;[☎] phiv;[ϕ] phi;[φ]. + "\x05mmat;\x03ℳ\x04one;\x03☎\x03iv;\x02ϕ\x02i;\x02φ", + // pitchfork;[⋔] piv;[ϖ] pi;[π]. + "\x08tchfork;\x03⋔\x02v;\x02ϖ\x01;\x02π", + // plusacir;[⚣] planckh;[ℎ] pluscir;[âšą] plussim;[⚊] plustwo;[⚧] planck;[ℏ] plankv;[ℏ] plusdo;[∔] plusdu;[âš„] plusmn;[±] plusb;[⊞] pluse;[â©Č] plusmn[±] plus;[+]. + "\x07usacir;\x03⚣\x06anckh;\x03ℎ\x06uscir;\x03âšą\x06ussim;\x03⚊\x06ustwo;\x03⚧\x05anck;\x03ℏ\x05ankv;\x03ℏ\x05usdo;\x03∔\x05usdu;\x03âš„\x05usmn;\x02±\x04usb;\x03⊞\x04use;\x03â©Č\x04usmn\x02±\x03us;\x01+", + // pm;[±]. + "\x01;\x02±", + // pointint;[⹕] pound;[ÂŁ] popf;[𝕡] pound[ÂŁ]. + "\x07intint;\x03⹕\x04und;\x02ÂŁ\x03pf;\x04𝕡\x03und\x02ÂŁ", + // preccurlyeq;[≌] precnapprox;[âȘč] precapprox;[âȘ·] precneqq;[âȘ”] precnsim;[⋹] profalar;[⌼] profline;[⌒] profsurf;[⌓] precsim;[≟] preceq;[âȘŻ] primes;[ℙ] prnsim;[⋹] propto;[∝] prurel;[⊰] prcue;[≌] prime;[â€Č] prnap;[âȘč] prsim;[≟] prap;[âȘ·] prec;[â‰ș] prnE;[âȘ”] prod;[∏] prop;[∝] prE;[âȘł] pre;[âȘŻ] pr;[â‰ș]. + "\x0aeccurlyeq;\x03≌\x0aecnapprox;\x03âȘč\x09ecapprox;\x03âȘ·\x07ecneqq;\x03âȘ”\x07ecnsim;\x03⋹\x07ofalar;\x03⌼\x07ofline;\x03⌒\x07ofsurf;\x03⌓\x06ecsim;\x03≟\x05eceq;\x03âȘŻ\x05imes;\x03ℙ\x05nsim;\x03⋹\x05opto;\x03∝\x05urel;\x03⊰\x04cue;\x03≌\x04ime;\x03â€Č\x04nap;\x03âȘč\x04sim;\x03≟\x03ap;\x03âȘ·\x03ec;\x03â‰ș\x03nE;\x03âȘ”\x03od;\x03∏\x03op;\x03∝\x02E;\x03âȘł\x02e;\x03âȘŻ\x01;\x03â‰ș", + // pscr;[𝓅] psi;[ψ]. + "\x03cr;\x04𝓅\x02i;\x02ψ", + // puncsp;[ ]. + "\x05ncsp;\x03 ", + // qfr;[𝔼]. + "\x02r;\x04𝔼", + // qint;[⹌]. + "\x03nt;\x03⹌", + // qopf;[𝕱]. + "\x03pf;\x04𝕱", + // qprime;[⁗]. + "\x05rime;\x03⁗", + // qscr;[𝓆]. + "\x03cr;\x04𝓆", + // quaternions;[ℍ] quatint;[⹖] questeq;[≟] quest;[?] quot;[\"] quot[\"]. + "\x0aaternions;\x03ℍ\x06atint;\x03⹖\x06esteq;\x03≟\x04est;\x01?\x03ot;\x01\"\x02ot\x01\"", + // rAtail;[“] rAarr;[⇛] rArr;[⇒]. + "\x05tail;\x03“\x04arr;\x03⇛\x03rr;\x03⇒", + // rBarr;[‏]. + "\x04arr;\x03‏", + // rHar;[â„€]. + "\x03ar;\x03â„€", + // rationals;[ℚ] raemptyv;[⊳] rarrbfs;[†] rarrsim;[â„Ž] racute;[ƕ] rangle;[⟩] rarrap;[â„”] rarrfs;[„] rarrhk;[â†Ș] rarrlp;[↬] rarrpl;[â„…] rarrtl;[↣] ratail;[‚] radic;[√] rangd;[⩒] range;[⊄] raquo;[»] rarrb;[⇄] rarrc;[″] rarrw;[↝] ratio;[∶] race;[∜̱] rang;[⟩] raquo[»] rarr;[→]. + "\x08tionals;\x03ℚ\x07emptyv;\x03⊳\x06rrbfs;\x03†\x06rrsim;\x03â„Ž\x05cute;\x02ƕ\x05ngle;\x03⟩\x05rrap;\x03â„”\x05rrfs;\x03„\x05rrhk;\x03â†Ș\x05rrlp;\x03↬\x05rrpl;\x03â„…\x05rrtl;\x03↣\x05tail;\x03‚\x04dic;\x03√\x04ngd;\x03⩒\x04nge;\x03⊄\x04quo;\x02»\x04rrb;\x03⇄\x04rrc;\x03″\x04rrw;\x03↝\x04tio;\x03∶\x03ce;\x05∜̱\x03ng;\x03⟩\x03quo\x02»\x03rr;\x03→", + // rbrksld;[⊎] rbrkslu;[⊐] rbrace;[}] rbrack;[]] rbarr;[‍] rbbrk;[❳] rbrke;[⩌]. + "\x06rksld;\x03⊎\x06rkslu;\x03⊐\x05race;\x01}\x05rack;\x01]\x04arr;\x03‍\x04brk;\x03❳\x04rke;\x03⩌", + // rcaron;[ƙ] rcedil;[Ɨ] rceil;[⌉] rcub;[}] rcy;[р]. + "\x05aron;\x02ƙ\x05edil;\x02Ɨ\x04eil;\x03⌉\x03ub;\x01}\x02y;\x02р", + // rdldhar;[â„©] rdquor;[”] rdquo;[”] rdca;[‷] rdsh;[↳]. + "\x06ldhar;\x03â„©\x05quor;\x03”\x04quo;\x03”\x03ca;\x03‷\x03sh;\x03↳", + // realpart;[ℜ] realine;[ℛ] reals;[ℝ] real;[ℜ] rect;[▭] reg;[Âź] reg[Âź]. + "\x07alpart;\x03ℜ\x06aline;\x03ℛ\x04als;\x03ℝ\x03al;\x03ℜ\x03ct;\x03▭\x02g;\x02Âź\x01g\x02Âź", + // rfisht;[â„œ] rfloor;[⌋] rfr;[𝔯]. + "\x05isht;\x03â„œ\x05loor;\x03⌋\x02r;\x04𝔯", + // rharul;[â„Ź] rhard;[⇁] rharu;[⇀] rhov;[ϱ] rho;[ρ]. + "\x05arul;\x03â„Ź\x04ard;\x03⇁\x04aru;\x03⇀\x03ov;\x02ϱ\x02o;\x02ρ", + // rightleftharpoons;[⇌] rightharpoondown;[⇁] rightrightarrows;[⇉] rightleftarrows;[⇄] rightsquigarrow;[↝] rightthreetimes;[⋌] rightarrowtail;[↣] rightharpoonup;[⇀] risingdotseq;[≓] rightarrow;[→] ring;[˚]. + "\x10ghtleftharpoons;\x03⇌\x0fghtharpoondown;\x03⇁\x0fghtrightarrows;\x03⇉\x0eghtleftarrows;\x03⇄\x0eghtsquigarrow;\x03↝\x0eghtthreetimes;\x03⋌\x0dghtarrowtail;\x03↣\x0dghtharpoonup;\x03⇀\x0bsingdotseq;\x03≓\x09ghtarrow;\x03→\x03ng;\x02˚", + // rlarr;[⇄] rlhar;[⇌] rlm;[‏]. + "\x04arr;\x03⇄\x04har;\x03⇌\x02m;\x03‏", + // rmoustache;[⎱] rmoust;[⎱]. + "\x09oustache;\x03⎱\x05oust;\x03⎱", + // rnmid;[â«ź]. + "\x04mid;\x03â«ź", + // rotimes;[âš”] roplus;[âšź] roang;[⟭] roarr;[⇟] robrk;[⟧] ropar;[⩆] ropf;[𝕣]. + "\x06times;\x03âš”\x05plus;\x03âšź\x04ang;\x03⟭\x04arr;\x03⇟\x04brk;\x03⟧\x04par;\x03⩆\x03pf;\x04𝕣", + // rppolint;[⹒] rpargt;[⩔] rpar;[)]. + "\x07polint;\x03⹒\x05argt;\x03⩔\x03ar;\x01)", + // rrarr;[⇉]. + "\x04arr;\x03⇉", + // rsaquo;[â€ș] rsquor;[’] rsquo;[’] rscr;[𝓇] rsqb;[]] rsh;[↱]. + "\x05aquo;\x03â€ș\x05quor;\x03’\x04quo;\x03’\x03cr;\x04𝓇\x03qb;\x01]\x02h;\x03↱", + // rtriltri;[⧎] rthree;[⋌] rtimes;[⋊] rtrie;[⊔] rtrif;[▾] rtri;[â–č]. + "\x07riltri;\x03⧎\x05hree;\x03⋌\x05imes;\x03⋊\x04rie;\x03⊔\x04rif;\x03▾\x03ri;\x03â–č", + // ruluhar;[â„š]. + "\x06luhar;\x03â„š", + // rx;[℞]. + "\x01;\x03℞", + // sacute;[ƛ]. + "\x05cute;\x02ƛ", + // sbquo;[‚]. + "\x04quo;\x03‚", + // scpolint;[⹓] scaron;[ĆĄ] scedil;[Ɵ] scnsim;[⋩] sccue;[≜] scirc;[Ɲ] scnap;[âȘș] scsim;[≿] scap;[âȘž] scnE;[âȘ¶] scE;[âȘŽ] sce;[âȘ°] scy;[с] sc;[≻]. + "\x07polint;\x03⹓\x05aron;\x02ĆĄ\x05edil;\x02Ɵ\x05nsim;\x03⋩\x04cue;\x03≜\x04irc;\x02Ɲ\x04nap;\x03âȘș\x04sim;\x03≿\x03ap;\x03âȘž\x03nE;\x03âȘ¶\x02E;\x03âȘŽ\x02e;\x03âȘ°\x02y;\x02с\x01;\x03≻", + // sdotb;[⊡] sdote;[â©Š] sdot;[⋅]. + "\x04otb;\x03⊡\x04ote;\x03â©Š\x03ot;\x03⋅", + // setminus;[∖] searrow;[↘] searhk;[ ] seswar;[
] seArr;[⇘] searr;[↘] setmn;[∖] sect;[§] semi;[;] sext;[✶] sect[§]. + "\x07tminus;\x03∖\x06arrow;\x03↘\x05arhk;\x03 \x05swar;\x03
\x04Arr;\x03⇘\x04arr;\x03↘\x04tmn;\x03∖\x03ct;\x02§\x03mi;\x01;\x03xt;\x03✶\x02ct\x02§", + // sfrown;[⌱] sfr;[𝔰]. + "\x05rown;\x03⌱\x02r;\x04𝔰", + // shortparallel;[∄] shortmid;[∣] shchcy;[щ] sharp;[♯] shcy;[ш] shy;[­] shy[­]. + "\x0cortparallel;\x03∄\x07ortmid;\x03∣\x05chcy;\x02щ\x04arp;\x03♯\x03cy;\x02ш\x02y;\x02­\x01y\x02­", + // simplus;[⚀] simrarr;[â„Č] sigmaf;[ς] sigmav;[ς] simdot;[â©Ș] sigma;[σ] simeq;[≃] simgE;[âȘ ] simlE;[âȘŸ] simne;[≆] sime;[≃] simg;[âȘž] siml;[âȘ] sim;[∌]. + "\x06mplus;\x03⚀\x06mrarr;\x03â„Č\x05gmaf;\x02ς\x05gmav;\x02ς\x05mdot;\x03â©Ș\x04gma;\x02σ\x04meq;\x03≃\x04mgE;\x03âȘ \x04mlE;\x03âȘŸ\x04mne;\x03≆\x03me;\x03≃\x03mg;\x03âȘž\x03ml;\x03âȘ\x02m;\x03∌", + // slarr;[←]. + "\x04arr;\x03←", + // smallsetminus;[∖] smeparsl;[⧀] smashp;[âšł] smile;[⌣] smtes;[âȘŹïž€] smid;[∣] smte;[âȘŹ] smt;[âȘȘ]. + "\x0callsetminus;\x03∖\x07eparsl;\x03⧀\x05ashp;\x03âšł\x04ile;\x03⌣\x04tes;\x06âȘŹïž€\x03id;\x03∣\x03te;\x03âȘŹ\x02t;\x03âȘȘ", + // softcy;[ь] solbar;[⌿] solb;[⧄] sopf;[đ•€] sol;[/]. + "\x05ftcy;\x02ь\x05lbar;\x03⌿\x03lb;\x03⧄\x03pf;\x04đ•€\x02l;\x01/", + // spadesuit;[♠] spades;[♠] spar;[∄]. + "\x08adesuit;\x03♠\x05ades;\x03♠\x03ar;\x03∄", + // sqsubseteq;[⊑] sqsupseteq;[⊒] sqsubset;[⊏] sqsupset;[⊐] sqcaps;[⊓] sqcups;[⊔] sqsube;[⊑] sqsupe;[⊒] square;[□] squarf;[â–Ș] sqcap;[⊓] sqcup;[⊔] sqsub;[⊏] sqsup;[⊐] squf;[â–Ș] squ;[□]. + "\x09subseteq;\x03⊑\x09supseteq;\x03⊒\x07subset;\x03⊏\x07supset;\x03⊐\x05caps;\x06⊓\x05cups;\x06⊔\x05sube;\x03⊑\x05supe;\x03⊒\x05uare;\x03□\x05uarf;\x03â–Ș\x04cap;\x03⊓\x04cup;\x03⊔\x04sub;\x03⊏\x04sup;\x03⊐\x03uf;\x03â–Ș\x02u;\x03□", + // srarr;[→]. + "\x04arr;\x03→", + // ssetmn;[∖] ssmile;[⌣] sstarf;[⋆] sscr;[𝓈]. + "\x05etmn;\x03∖\x05mile;\x03⌣\x05tarf;\x03⋆\x03cr;\x04𝓈", + // straightepsilon;[Ï”] straightphi;[ϕ] starf;[★] strns;[ÂŻ] star;[☆]. + "\x0eraightepsilon;\x02Ï”\x0araightphi;\x02ϕ\x04arf;\x03★\x04rns;\x02ÂŻ\x03ar;\x03☆", + // succcurlyeq;[≜] succnapprox;[âȘș] subsetneqq;[⫋] succapprox;[âȘž] supsetneqq;[⫌] subseteqq;[⫅] subsetneq;[⊊] supseteqq;[⫆] supsetneq;[⊋] subseteq;[⊆] succneqq;[âȘ¶] succnsim;[⋩] supseteq;[⊇] subedot;[⫃] submult;[⫁] subplus;[âȘż] subrarr;[â„č] succsim;[≿] supdsub;[⫘] supedot;[⫄] suphsol;[⟉] suphsub;[⫗] suplarr;[â„»] supmult;[⫂] supplus;[⫀] subdot;[âȘœ] subset;[⊂] subsim;[⫇] subsub;[⫕] subsup;[⫓] succeq;[âȘ°] supdot;[âȘŸ] supset;[⊃] supsim;[⫈] supsub;[⫔] supsup;[⫖] subnE;[⫋] subne;[⊊] supnE;[⫌] supne;[⊋] subE;[⫅] sube;[⊆] succ;[≻] sung;[â™Ș] sup1;[Âč] sup2;[ÂČ] sup3;[Âł] supE;[⫆] supe;[⊇] sub;[⊂] sum;[∑] sup1[Âč] sup2[ÂČ] sup3[Âł] sup;[⊃]. + "\x0acccurlyeq;\x03≜\x0accnapprox;\x03âȘș\x09bsetneqq;\x03⫋\x09ccapprox;\x03âȘž\x09psetneqq;\x03⫌\x08bseteqq;\x03⫅\x08bsetneq;\x03⊊\x08pseteqq;\x03⫆\x08psetneq;\x03⊋\x07bseteq;\x03⊆\x07ccneqq;\x03âȘ¶\x07ccnsim;\x03⋩\x07pseteq;\x03⊇\x06bedot;\x03⫃\x06bmult;\x03⫁\x06bplus;\x03âȘż\x06brarr;\x03â„č\x06ccsim;\x03≿\x06pdsub;\x03⫘\x06pedot;\x03⫄\x06phsol;\x03⟉\x06phsub;\x03⫗\x06plarr;\x03â„»\x06pmult;\x03⫂\x06pplus;\x03⫀\x05bdot;\x03âȘœ\x05bset;\x03⊂\x05bsim;\x03⫇\x05bsub;\x03⫕\x05bsup;\x03⫓\x05cceq;\x03âȘ°\x05pdot;\x03âȘŸ\x05pset;\x03⊃\x05psim;\x03⫈\x05psub;\x03⫔\x05psup;\x03⫖\x04bnE;\x03⫋\x04bne;\x03⊊\x04pnE;\x03⫌\x04pne;\x03⊋\x03bE;\x03⫅\x03be;\x03⊆\x03cc;\x03≻\x03ng;\x03â™Ș\x03p1;\x02Âč\x03p2;\x02ÂČ\x03p3;\x02Âł\x03pE;\x03⫆\x03pe;\x03⊇\x02b;\x03⊂\x02m;\x03∑\x02p1\x02Âč\x02p2\x02ÂČ\x02p3\x02Âł\x02p;\x03⊃", + // swarrow;[↙] swarhk;[ ] swnwar;[â€Ș] swArr;[⇙] swarr;[↙]. + "\x06arrow;\x03↙\x05arhk;\x03 \x05nwar;\x03â€Ș\x04Arr;\x03⇙\x04arr;\x03↙", + // szlig;[ß] szlig[ß]. + "\x04lig;\x02ß\x03lig\x02ß", + // target;[⌖] tau;[τ]. + "\x05rget;\x03⌖\x02u;\x02τ", + // tbrk;[⎮]. + "\x03rk;\x03⎮", + // tcaron;[Ć„] tcedil;[ĆŁ] tcy;[т]. + "\x05aron;\x02Ć„\x05edil;\x02ĆŁ\x02y;\x02т", + // tdot;[⃛]. + "\x03ot;\x03⃛", + // telrec;[⌕]. + "\x05lrec;\x03⌕", + // tfr;[đ”±]. + "\x02r;\x04đ”±", + // thickapprox;[≈] therefore;[∎] thetasym;[ϑ] thicksim;[∌] there4;[∎] thetav;[ϑ] thinsp;[ ] thksim;[∌] theta;[Ξ] thkap;[≈] thorn;[ĂŸ] thorn[ĂŸ]. + "\x0aickapprox;\x03≈\x08erefore;\x03∎\x07etasym;\x02ϑ\x07icksim;\x03∌\x05ere4;\x03∎\x05etav;\x02ϑ\x05insp;\x03 \x05ksim;\x03∌\x04eta;\x02Ξ\x04kap;\x03≈\x04orn;\x02ĂŸ\x03orn\x02ĂŸ", + // timesbar;[âš±] timesb;[⊠] timesd;[âš°] tilde;[˜] times;[×] times[×] tint;[∭]. + "\x07mesbar;\x03âš±\x05mesb;\x03⊠\x05mesd;\x03âš°\x04lde;\x02˜\x04mes;\x02×\x03mes\x02×\x03nt;\x03∭", + // topfork;[⫚] topbot;[⌶] topcir;[⫱] toea;[‚] topf;[đ•„] tosa;[
] top;[⊀]. + "\x06pfork;\x03⫚\x05pbot;\x03⌶\x05pcir;\x03⫱\x03ea;\x03‚\x03pf;\x04đ•„\x03sa;\x03
\x02p;\x03⊀", + // tprime;[‮]. + "\x05rime;\x03‮", + // trianglerighteq;[⊔] trianglelefteq;[⊮] triangleright;[â–č] triangledown;[▿] triangleleft;[◃] triangleq;[≜] triangle;[â–”] triminus;[âšș] trpezium;[⏱] triplus;[âšč] tritime;[âš»] tridot;[◬] trade;[ℱ] trisb;[⧍] trie;[≜]. + "\x0eianglerighteq;\x03⊔\x0dianglelefteq;\x03⊮\x0ciangleright;\x03â–č\x0biangledown;\x03▿\x0biangleleft;\x03◃\x08iangleq;\x03≜\x07iangle;\x03â–”\x07iminus;\x03âšș\x07pezium;\x03⏱\x06iplus;\x03âšč\x06itime;\x03âš»\x05idot;\x03◬\x04ade;\x03ℱ\x04isb;\x03⧍\x03ie;\x03≜", + // tstrok;[Ƨ] tshcy;[ћ] tscr;[𝓉] tscy;[ц]. + "\x05trok;\x02Ƨ\x04hcy;\x02ћ\x03cr;\x04𝓉\x03cy;\x02ц", + // twoheadrightarrow;[↠] twoheadleftarrow;[↞] twixt;[≬]. + "\x10oheadrightarrow;\x03↠\x0foheadleftarrow;\x03↞\x04ixt;\x03≬", + // uArr;[⇑]. + "\x03rr;\x03⇑", + // uHar;[â„Ł]. + "\x03ar;\x03â„Ł", + // uacute;[Ăș] uacute[Ăș] uarr;[↑]. + "\x05cute;\x02Ăș\x04cute\x02Ăș\x03rr;\x03↑", + // ubreve;[Ć­] ubrcy;[ў]. + "\x05reve;\x02Ć­\x04rcy;\x02ў", + // ucirc;[Ă»] ucirc[Ă»] ucy;[у]. + "\x04irc;\x02Ă»\x03irc\x02Ă»\x02y;\x02у", + // udblac;[Ʊ] udarr;[⇅] udhar;[â„ź]. + "\x05blac;\x02Ʊ\x04arr;\x03⇅\x04har;\x03â„ź", + // ufisht;[â„Ÿ] ufr;[đ”Č]. + "\x05isht;\x03â„Ÿ\x02r;\x04đ”Č", + // ugrave;[Ăč] ugrave[Ăč]. + "\x05rave;\x02Ăč\x04rave\x02Ăč", + // uharl;[↿] uharr;[↟] uhblk;[▀]. + "\x04arl;\x03↿\x04arr;\x03↟\x04blk;\x03▀", + // ulcorner;[⌜] ulcorn;[⌜] ulcrop;[⌏] ultri;[◾]. + "\x07corner;\x03⌜\x05corn;\x03⌜\x05crop;\x03⌏\x04tri;\x03◾", + // umacr;[Ć«] uml;[š] uml[š]. + "\x04acr;\x02Ć«\x02l;\x02š\x01l\x02š", + // uogon;[Ćł] uopf;[𝕩]. + "\x04gon;\x02Ćł\x03pf;\x04𝕩", + // upharpoonright;[↟] upharpoonleft;[↿] updownarrow;[↕] upuparrows;[⇈] uparrow;[↑] upsilon;[υ] uplus;[⊎] upsih;[ϒ] upsi;[υ]. + "\x0dharpoonright;\x03↟\x0charpoonleft;\x03↿\x0adownarrow;\x03↕\x09uparrows;\x03⇈\x06arrow;\x03↑\x06silon;\x02υ\x04lus;\x03⊎\x04sih;\x02ϒ\x03si;\x02υ", + // urcorner;[⌝] urcorn;[⌝] urcrop;[⌎] uring;[ĆŻ] urtri;[â—č]. + "\x07corner;\x03⌝\x05corn;\x03⌝\x05crop;\x03⌎\x04ing;\x02ĆŻ\x04tri;\x03â—č", + // uscr;[𝓊]. + "\x03cr;\x04𝓊", + // utilde;[Ć©] utdot;[⋰] utrif;[▮] utri;[â–”]. + "\x05ilde;\x02Ć©\x04dot;\x03⋰\x04rif;\x03▮\x03ri;\x03â–”", + // uuarr;[⇈] uuml;[ĂŒ] uuml[ĂŒ]. + "\x04arr;\x03⇈\x03ml;\x02ĂŒ\x02ml\x02ĂŒ", + // uwangle;[⊧]. + "\x06angle;\x03⊧", + // vArr;[⇕]. + "\x03rr;\x03⇕", + // vBarv;[â«©] vBar;[â«š]. + "\x04arv;\x03â«©\x03ar;\x03â«š", + // vDash;[⊹]. + "\x04ash;\x03⊹", + // vartriangleright;[⊳] vartriangleleft;[âŠČ] varsubsetneqq;[⫋] varsupsetneqq;[⫌] varsubsetneq;[⊊] varsupsetneq;[⊋] varepsilon;[Ï”] varnothing;[∅] varpropto;[∝] varkappa;[Ï°] varsigma;[ς] vartheta;[ϑ] vangrt;[⩜] varphi;[ϕ] varrho;[ϱ] varpi;[ϖ] varr;[↕]. + "\x0frtriangleright;\x03⊳\x0ertriangleleft;\x03âŠČ\x0crsubsetneqq;\x06⫋\x0crsupsetneqq;\x06⫌\x0brsubsetneq;\x06⊊\x0brsupsetneq;\x06⊋\x09repsilon;\x02Ï”\x09rnothing;\x03∅\x08rpropto;\x03∝\x07rkappa;\x02Ï°\x07rsigma;\x02ς\x07rtheta;\x02ϑ\x05ngrt;\x03⩜\x05rphi;\x02ϕ\x05rrho;\x02ϱ\x04rpi;\x02ϖ\x03rr;\x03↕", + // vcy;[ĐČ]. + "\x02y;\x02ĐČ", + // vdash;[⊱]. + "\x04ash;\x03⊱", + // veebar;[⊻] vellip;[⋼] verbar;[|] veeeq;[≚] vert;[|] vee;[√]. + "\x05ebar;\x03⊻\x05llip;\x03⋼\x05rbar;\x01|\x04eeq;\x03≚\x03rt;\x01|\x02e;\x03√", + // vfr;[𝔳]. + "\x02r;\x04𝔳", + // vltri;[âŠČ]. + "\x04tri;\x03âŠČ", + // vnsub;[⊂⃒] vnsup;[⊃⃒]. + "\x04sub;\x06⊂⃒\x04sup;\x06⊃⃒", + // vopf;[𝕧]. + "\x03pf;\x04𝕧", + // vprop;[∝]. + "\x04rop;\x03∝", + // vrtri;[⊳]. + "\x04tri;\x03⊳", + // vsubnE;[⫋] vsubne;[⊊] vsupnE;[⫌] vsupne;[⊋] vscr;[𝓋]. + "\x05ubnE;\x06⫋\x05ubne;\x06⊊\x05upnE;\x06⫌\x05upne;\x06⊋\x03cr;\x04𝓋", + // vzigzag;[⩚]. + "\x06igzag;\x03⩚", + // wcirc;[Ć”]. + "\x04irc;\x02Ć”", + // wedbar;[⩟] wedgeq;[≙] weierp;[℘] wedge;[∧]. + "\x05dbar;\x03⩟\x05dgeq;\x03≙\x05ierp;\x03℘\x04dge;\x03∧", + // wfr;[𝔮]. + "\x02r;\x04𝔮", + // wopf;[𝕹]. + "\x03pf;\x04𝕹", + // wp;[℘]. + "\x01;\x03℘", + // wreath;[≀] wr;[≀]. + "\x05eath;\x03≀\x01;\x03≀", + // wscr;[𝓌]. + "\x03cr;\x04𝓌", + // xcirc;[◯] xcap;[⋂] xcup;[⋃]. + "\x04irc;\x03◯\x03ap;\x03⋂\x03up;\x03⋃", + // xdtri;[â–œ]. + "\x04tri;\x03â–œ", + // xfr;[đ””]. + "\x02r;\x04đ””", + // xhArr;[âŸș] xharr;[⟷]. + "\x04Arr;\x03âŸș\x04arr;\x03⟷", + // xi;[Ο]. + "\x01;\x02Ο", + // xlArr;[⟾] xlarr;[⟔]. + "\x04Arr;\x03⟾\x04arr;\x03⟔", + // xmap;[⟌]. + "\x03ap;\x03⟌", + // xnis;[⋻]. + "\x03is;\x03⋻", + // xoplus;[⚁] xotime;[⹂] xodot;[⹀] xopf;[đ•©]. + "\x05plus;\x03⚁\x05time;\x03⹂\x04dot;\x03⹀\x03pf;\x04đ•©", + // xrArr;[âŸč] xrarr;[⟶]. + "\x04Arr;\x03âŸč\x04arr;\x03⟶", + // xsqcup;[⹆] xscr;[𝓍]. + "\x05qcup;\x03⹆\x03cr;\x04𝓍", + // xuplus;[⹄] xutri;[△]. + "\x05plus;\x03⹄\x04tri;\x03△", + // xvee;[⋁]. + "\x03ee;\x03⋁", + // xwedge;[⋀]. + "\x05edge;\x03⋀", + // yacute;[Ăœ] yacute[Ăœ] yacy;[я]. + "\x05cute;\x02Ăœ\x04cute\x02Ăœ\x03cy;\x02я", + // ycirc;[Ć·] ycy;[ы]. + "\x04irc;\x02Ć·\x02y;\x02ы", + // yen;[„] yen[„]. + "\x02n;\x02„\x01n\x02„", + // yfr;[đ”¶]. + "\x02r;\x04đ”¶", + // yicy;[ї]. + "\x03cy;\x02ї", + // yopf;[đ•Ș]. + "\x03pf;\x04đ•Ș", + // yscr;[𝓎]. + "\x03cr;\x04𝓎", + // yucy;[ю] yuml;[Ăż] yuml[Ăż]. + "\x03cy;\x02ю\x03ml;\x02Ăż\x02ml\x02Ăż", + // zacute;[Ćș]. + "\x05cute;\x02Ćș", + // zcaron;[ĆŸ] zcy;[Đ·]. + "\x05aron;\x02ĆŸ\x02y;\x02Đ·", + // zdot;[ĆŒ]. + "\x03ot;\x02ĆŒ", + // zeetrf;[ℹ] zeta;[ζ]. + "\x05etrf;\x03ℹ\x03ta;\x02ζ", + // zfr;[đ”·]. + "\x02r;\x04đ”·", + // zhcy;[ж]. + "\x03cy;\x02ж", + // zigrarr;[⇝]. + "\x06grarr;\x03⇝", + // zopf;[đ•«]. + "\x03pf;\x04đ•«", + // zscr;[𝓏]. + "\x03cr;\x04𝓏", + // zwnj;[‌] zwj;[‍]. + "\x03nj;\x03‌\x02j;\x03‍", + ), + "small_words" => "GT\x00LT\x00gt\x00lt\x00", + "small_mappings" => array( + ">", + "<", + ">", + "<", + ) + ) +); diff --git a/src/wp-settings.php b/src/wp-settings.php index 9673479bfab76..6e386c921c29d 100644 --- a/src/wp-settings.php +++ b/src/wp-settings.php @@ -107,6 +107,7 @@ // Load early WordPress files. require ABSPATH . WPINC . '/class-wp-list-util.php'; +require ABSPATH . WPINC . '/class-wp-token-map.php'; require ABSPATH . WPINC . '/formatting.php'; require ABSPATH . WPINC . '/meta.php'; require ABSPATH . WPINC . '/functions.php'; @@ -248,6 +249,7 @@ require ABSPATH . WPINC . '/class-wp-oembed-controller.php'; require ABSPATH . WPINC . '/media.php'; require ABSPATH . WPINC . '/http.php'; +require ABSPATH . WPINC . '/html-api/html5-named-character-references.php'; require ABSPATH . WPINC . '/html-api/class-wp-html-attribute-token.php'; require ABSPATH . WPINC . '/html-api/class-wp-html-span.php'; require ABSPATH . WPINC . '/html-api/class-wp-html-text-replacement.php'; diff --git a/tests/phpunit/data/html5-entities/README.md b/tests/phpunit/data/html5-entities/README.md new file mode 100644 index 0000000000000..aeaad92fde6a5 --- /dev/null +++ b/tests/phpunit/data/html5-entities/README.md @@ -0,0 +1,25 @@ +# HTML5 Entities + +This directory contains the listing of HTML5 named character references and a script that can be used +to create or update the optimized form for use in the HTML API. + +The HTML5 specification asserts: + +> This list is static and will not be expanded or changed in the future. +> - https://html.spec.whatwg.org/#named-character-references + +The authoritative [`entities.json`](https://html.spec.whatwg.org/entities.json) file comes from the WHATWG server, and +is cached here in the test directory so that it doesn't need to be constantly re-downloaded. + +## Updating the optimized lookup class. + +The [`html5-named-character-references.php`][1] file contains an optimized lookup map for the entities in `entities.json`. +Run the [`generate-html5-named-character-references.php`][2] file to update the auto-generated Core module. + +```bash +~$ php tests/phpunit/data/html5-entities/generate-html5-named-character-references.php +OK: Successfully generated optimized lookup class. +``` + +[1]: ../../../../src/wp-includes/html-api/html5-named-character-references.php +[2]: ./generate-html5-named-character-references.php diff --git a/tests/phpunit/data/html5-entities/entities.json b/tests/phpunit/data/html5-entities/entities.json new file mode 100644 index 0000000000000..557170b41f47a --- /dev/null +++ b/tests/phpunit/data/html5-entities/entities.json @@ -0,0 +1,2233 @@ +{ + "Æ": { "codepoints": [198], "characters": "\u00C6" }, + "Æ": { "codepoints": [198], "characters": "\u00C6" }, + "&": { "codepoints": [38], "characters": "\u0026" }, + "&": { "codepoints": [38], "characters": "\u0026" }, + "Á": { "codepoints": [193], "characters": "\u00C1" }, + "Á": { "codepoints": [193], "characters": "\u00C1" }, + "Ă": { "codepoints": [258], "characters": "\u0102" }, + "Â": { "codepoints": [194], "characters": "\u00C2" }, + "Â": { "codepoints": [194], "characters": "\u00C2" }, + "А": { "codepoints": [1040], "characters": "\u0410" }, + "𝔄": { "codepoints": [120068], "characters": "\uD835\uDD04" }, + "À": { "codepoints": [192], "characters": "\u00C0" }, + "À": { "codepoints": [192], "characters": "\u00C0" }, + "Α": { "codepoints": [913], "characters": "\u0391" }, + "Ā": { "codepoints": [256], "characters": "\u0100" }, + "⩓": { "codepoints": [10835], "characters": "\u2A53" }, + "Ą": { "codepoints": [260], "characters": "\u0104" }, + "𝔸": { "codepoints": [120120], "characters": "\uD835\uDD38" }, + "⁡": { "codepoints": [8289], "characters": "\u2061" }, + "Å": { "codepoints": [197], "characters": "\u00C5" }, + "Å": { "codepoints": [197], "characters": "\u00C5" }, + "𝒜": { "codepoints": [119964], "characters": "\uD835\uDC9C" }, + "≔": { "codepoints": [8788], "characters": "\u2254" }, + "Ã": { "codepoints": [195], "characters": "\u00C3" }, + "Ã": { "codepoints": [195], "characters": "\u00C3" }, + "Ä": { "codepoints": [196], "characters": "\u00C4" }, + "Ä": { "codepoints": [196], "characters": "\u00C4" }, + "∖": { "codepoints": [8726], "characters": "\u2216" }, + "⫧": { "codepoints": [10983], "characters": "\u2AE7" }, + "⌆": { "codepoints": [8966], "characters": "\u2306" }, + "Б": { "codepoints": [1041], "characters": "\u0411" }, + "∵": { "codepoints": [8757], "characters": "\u2235" }, + "ℬ": { "codepoints": [8492], "characters": "\u212C" }, + "Β": { "codepoints": [914], "characters": "\u0392" }, + "𝔅": { "codepoints": [120069], "characters": "\uD835\uDD05" }, + "𝔹": { "codepoints": [120121], "characters": "\uD835\uDD39" }, + "˘": { "codepoints": [728], "characters": "\u02D8" }, + "ℬ": { "codepoints": [8492], "characters": "\u212C" }, + "≎": { "codepoints": [8782], "characters": "\u224E" }, + "Ч": { "codepoints": [1063], "characters": "\u0427" }, + "©": { "codepoints": [169], "characters": "\u00A9" }, + "©": { "codepoints": [169], "characters": "\u00A9" }, + "Ć": { "codepoints": [262], "characters": "\u0106" }, + "⋒": { "codepoints": [8914], "characters": "\u22D2" }, + "ⅅ": { "codepoints": [8517], "characters": "\u2145" }, + "ℭ": { "codepoints": [8493], "characters": "\u212D" }, + "Č": { "codepoints": [268], "characters": "\u010C" }, + "Ç": { "codepoints": [199], "characters": "\u00C7" }, + "Ç": { "codepoints": [199], "characters": "\u00C7" }, + "Ĉ": { "codepoints": [264], "characters": "\u0108" }, + "∰": { "codepoints": [8752], "characters": "\u2230" }, + "Ċ": { "codepoints": [266], "characters": "\u010A" }, + "¸": { "codepoints": [184], "characters": "\u00B8" }, + "·": { "codepoints": [183], "characters": "\u00B7" }, + "ℭ": { "codepoints": [8493], "characters": "\u212D" }, + "Χ": { "codepoints": [935], "characters": "\u03A7" }, + "⊙": { "codepoints": [8857], "characters": "\u2299" }, + "⊖": { "codepoints": [8854], "characters": "\u2296" }, + "⊕": { "codepoints": [8853], "characters": "\u2295" }, + "⊗": { "codepoints": [8855], "characters": "\u2297" }, + "∲": { "codepoints": [8754], "characters": "\u2232" }, + "”": { "codepoints": [8221], "characters": "\u201D" }, + "’": { "codepoints": [8217], "characters": "\u2019" }, + "∷": { "codepoints": [8759], "characters": "\u2237" }, + "⩴": { "codepoints": [10868], "characters": "\u2A74" }, + "≡": { "codepoints": [8801], "characters": "\u2261" }, + "∯": { "codepoints": [8751], "characters": "\u222F" }, + "∮": { "codepoints": [8750], "characters": "\u222E" }, + "ℂ": { "codepoints": [8450], "characters": "\u2102" }, + "∐": { "codepoints": [8720], "characters": "\u2210" }, + "∳": { "codepoints": [8755], "characters": "\u2233" }, + "⨯": { "codepoints": [10799], "characters": "\u2A2F" }, + "𝒞": { "codepoints": [119966], "characters": "\uD835\uDC9E" }, + "⋓": { "codepoints": [8915], "characters": "\u22D3" }, + "≍": { "codepoints": [8781], "characters": "\u224D" }, + "ⅅ": { "codepoints": [8517], "characters": "\u2145" }, + "⤑": { "codepoints": [10513], "characters": "\u2911" }, + "Ђ": { "codepoints": [1026], "characters": "\u0402" }, + "Ѕ": { "codepoints": [1029], "characters": "\u0405" }, + "Џ": { "codepoints": [1039], "characters": "\u040F" }, + "‡": { "codepoints": [8225], "characters": "\u2021" }, + "↡": { "codepoints": [8609], "characters": "\u21A1" }, + "⫤": { "codepoints": [10980], "characters": "\u2AE4" }, + "Ď": { "codepoints": [270], "characters": "\u010E" }, + "Д": { "codepoints": [1044], "characters": "\u0414" }, + "∇": { "codepoints": [8711], "characters": "\u2207" }, + "Δ": { "codepoints": [916], "characters": "\u0394" }, + "𝔇": { "codepoints": [120071], "characters": "\uD835\uDD07" }, + "´": { "codepoints": [180], "characters": "\u00B4" }, + "˙": { "codepoints": [729], "characters": "\u02D9" }, + "˝": { "codepoints": [733], "characters": "\u02DD" }, + "`": { "codepoints": [96], "characters": "\u0060" }, + "˜": { "codepoints": [732], "characters": "\u02DC" }, + "⋄": { "codepoints": [8900], "characters": "\u22C4" }, + "ⅆ": { "codepoints": [8518], "characters": "\u2146" }, + "𝔻": { "codepoints": [120123], "characters": "\uD835\uDD3B" }, + "¨": { "codepoints": [168], "characters": "\u00A8" }, + "⃜": { "codepoints": [8412], "characters": "\u20DC" }, + "≐": { "codepoints": [8784], "characters": "\u2250" }, + "∯": { "codepoints": [8751], "characters": "\u222F" }, + "¨": { "codepoints": [168], "characters": "\u00A8" }, + "⇓": { "codepoints": [8659], "characters": "\u21D3" }, + "⇐": { "codepoints": [8656], "characters": "\u21D0" }, + "⇔": { "codepoints": [8660], "characters": "\u21D4" }, + "⫤": { "codepoints": [10980], "characters": "\u2AE4" }, + "⟸": { "codepoints": [10232], "characters": "\u27F8" }, + "⟺": { "codepoints": [10234], "characters": "\u27FA" }, + "⟹": { "codepoints": [10233], "characters": "\u27F9" }, + "⇒": { "codepoints": [8658], "characters": "\u21D2" }, + "⊨": { "codepoints": [8872], "characters": "\u22A8" }, + "⇑": { "codepoints": [8657], "characters": "\u21D1" }, + "⇕": { "codepoints": [8661], "characters": "\u21D5" }, + "∥": { "codepoints": [8741], "characters": "\u2225" }, + "↓": { "codepoints": [8595], "characters": "\u2193" }, + "⤓": { "codepoints": [10515], "characters": "\u2913" }, + "⇵": { "codepoints": [8693], "characters": "\u21F5" }, + "̑": { "codepoints": [785], "characters": "\u0311" }, + "⥐": { "codepoints": [10576], "characters": "\u2950" }, + "⥞": { "codepoints": [10590], "characters": "\u295E" }, + "↽": { "codepoints": [8637], "characters": "\u21BD" }, + "⥖": { "codepoints": [10582], "characters": "\u2956" }, + "⥟": { "codepoints": [10591], "characters": "\u295F" }, + "⇁": { "codepoints": [8641], "characters": "\u21C1" }, + "⥗": { "codepoints": [10583], "characters": "\u2957" }, + "⊤": { "codepoints": [8868], "characters": "\u22A4" }, + "↧": { "codepoints": [8615], "characters": "\u21A7" }, + "⇓": { "codepoints": [8659], "characters": "\u21D3" }, + "𝒟": { "codepoints": [119967], "characters": "\uD835\uDC9F" }, + "Đ": { "codepoints": [272], "characters": "\u0110" }, + "Ŋ": { "codepoints": [330], "characters": "\u014A" }, + "Ð": { "codepoints": [208], "characters": "\u00D0" }, + "Ð": { "codepoints": [208], "characters": "\u00D0" }, + "É": { "codepoints": [201], "characters": "\u00C9" }, + "É": { "codepoints": [201], "characters": "\u00C9" }, + "Ě": { "codepoints": [282], "characters": "\u011A" }, + "Ê": { "codepoints": [202], "characters": "\u00CA" }, + "Ê": { "codepoints": [202], "characters": "\u00CA" }, + "Э": { "codepoints": [1069], "characters": "\u042D" }, + "Ė": { "codepoints": [278], "characters": "\u0116" }, + "𝔈": { "codepoints": [120072], "characters": "\uD835\uDD08" }, + "È": { "codepoints": [200], "characters": "\u00C8" }, + "È": { "codepoints": [200], "characters": "\u00C8" }, + "∈": { "codepoints": [8712], "characters": "\u2208" }, + "Ē": { "codepoints": [274], "characters": "\u0112" }, + "◻": { "codepoints": [9723], "characters": "\u25FB" }, + "▫": { "codepoints": [9643], "characters": "\u25AB" }, + "Ę": { "codepoints": [280], "characters": "\u0118" }, + "𝔼": { "codepoints": [120124], "characters": "\uD835\uDD3C" }, + "Ε": { "codepoints": [917], "characters": "\u0395" }, + "⩵": { "codepoints": [10869], "characters": "\u2A75" }, + "≂": { "codepoints": [8770], "characters": "\u2242" }, + "⇌": { "codepoints": [8652], "characters": "\u21CC" }, + "ℰ": { "codepoints": [8496], "characters": "\u2130" }, + "⩳": { "codepoints": [10867], "characters": "\u2A73" }, + "Η": { "codepoints": [919], "characters": "\u0397" }, + "Ë": { "codepoints": [203], "characters": "\u00CB" }, + "Ë": { "codepoints": [203], "characters": "\u00CB" }, + "∃": { "codepoints": [8707], "characters": "\u2203" }, + "ⅇ": { "codepoints": [8519], "characters": "\u2147" }, + "Ф": { "codepoints": [1060], "characters": "\u0424" }, + "𝔉": { "codepoints": [120073], "characters": "\uD835\uDD09" }, + "◼": { "codepoints": [9724], "characters": "\u25FC" }, + "▪": { "codepoints": [9642], "characters": "\u25AA" }, + "𝔽": { "codepoints": [120125], "characters": "\uD835\uDD3D" }, + "∀": { "codepoints": [8704], "characters": "\u2200" }, + "ℱ": { "codepoints": [8497], "characters": "\u2131" }, + "ℱ": { "codepoints": [8497], "characters": "\u2131" }, + "Ѓ": { "codepoints": [1027], "characters": "\u0403" }, + ">": { "codepoints": [62], "characters": "\u003E" }, + ">": { "codepoints": [62], "characters": "\u003E" }, + "Γ": { "codepoints": [915], "characters": "\u0393" }, + "Ϝ": { "codepoints": [988], "characters": "\u03DC" }, + "Ğ": { "codepoints": [286], "characters": "\u011E" }, + "Ģ": { "codepoints": [290], "characters": "\u0122" }, + "Ĝ": { "codepoints": [284], "characters": "\u011C" }, + "Г": { "codepoints": [1043], "characters": "\u0413" }, + "Ġ": { "codepoints": [288], "characters": "\u0120" }, + "𝔊": { "codepoints": [120074], "characters": "\uD835\uDD0A" }, + "⋙": { "codepoints": [8921], "characters": "\u22D9" }, + "𝔾": { "codepoints": [120126], "characters": "\uD835\uDD3E" }, + "≥": { "codepoints": [8805], "characters": "\u2265" }, + "⋛": { "codepoints": [8923], "characters": "\u22DB" }, + "≧": { "codepoints": [8807], "characters": "\u2267" }, + "⪢": { "codepoints": [10914], "characters": "\u2AA2" }, + "≷": { "codepoints": [8823], "characters": "\u2277" }, + "⩾": { "codepoints": [10878], "characters": "\u2A7E" }, + "≳": { "codepoints": [8819], "characters": "\u2273" }, + "𝒢": { "codepoints": [119970], "characters": "\uD835\uDCA2" }, + "≫": { "codepoints": [8811], "characters": "\u226B" }, + "Ъ": { "codepoints": [1066], "characters": "\u042A" }, + "ˇ": { "codepoints": [711], "characters": "\u02C7" }, + "^": { "codepoints": [94], "characters": "\u005E" }, + "Ĥ": { "codepoints": [292], "characters": "\u0124" }, + "ℌ": { "codepoints": [8460], "characters": "\u210C" }, + "ℋ": { "codepoints": [8459], "characters": "\u210B" }, + "ℍ": { "codepoints": [8461], "characters": "\u210D" }, + "─": { "codepoints": [9472], "characters": "\u2500" }, + "ℋ": { "codepoints": [8459], "characters": "\u210B" }, + "Ħ": { "codepoints": [294], "characters": "\u0126" }, + "≎": { "codepoints": [8782], "characters": "\u224E" }, + "≏": { "codepoints": [8783], "characters": "\u224F" }, + "Е": { "codepoints": [1045], "characters": "\u0415" }, + "IJ": { "codepoints": [306], "characters": "\u0132" }, + "Ё": { "codepoints": [1025], "characters": "\u0401" }, + "Í": { "codepoints": [205], "characters": "\u00CD" }, + "Í": { "codepoints": [205], "characters": "\u00CD" }, + "Î": { "codepoints": [206], "characters": "\u00CE" }, + "Î": { "codepoints": [206], "characters": "\u00CE" }, + "И": { "codepoints": [1048], "characters": "\u0418" }, + "İ": { "codepoints": [304], "characters": "\u0130" }, + "ℑ": { "codepoints": [8465], "characters": "\u2111" }, + "Ì": { "codepoints": [204], "characters": "\u00CC" }, + "Ì": { "codepoints": [204], "characters": "\u00CC" }, + "ℑ": { "codepoints": [8465], "characters": "\u2111" }, + "Ī": { "codepoints": [298], "characters": "\u012A" }, + "ⅈ": { "codepoints": [8520], "characters": "\u2148" }, + "⇒": { "codepoints": [8658], "characters": "\u21D2" }, + "∬": { "codepoints": [8748], "characters": "\u222C" }, + "∫": { "codepoints": [8747], "characters": "\u222B" }, + "⋂": { "codepoints": [8898], "characters": "\u22C2" }, + "⁣": { "codepoints": [8291], "characters": "\u2063" }, + "⁢": { "codepoints": [8290], "characters": "\u2062" }, + "Į": { "codepoints": [302], "characters": "\u012E" }, + "𝕀": { "codepoints": [120128], "characters": "\uD835\uDD40" }, + "Ι": { "codepoints": [921], "characters": "\u0399" }, + "ℐ": { "codepoints": [8464], "characters": "\u2110" }, + "Ĩ": { "codepoints": [296], "characters": "\u0128" }, + "І": { "codepoints": [1030], "characters": "\u0406" }, + "Ï": { "codepoints": [207], "characters": "\u00CF" }, + "Ï": { "codepoints": [207], "characters": "\u00CF" }, + "Ĵ": { "codepoints": [308], "characters": "\u0134" }, + "Й": { "codepoints": [1049], "characters": "\u0419" }, + "𝔍": { "codepoints": [120077], "characters": "\uD835\uDD0D" }, + "𝕁": { "codepoints": [120129], "characters": "\uD835\uDD41" }, + "𝒥": { "codepoints": [119973], "characters": "\uD835\uDCA5" }, + "Ј": { "codepoints": [1032], "characters": "\u0408" }, + "Є": { "codepoints": [1028], "characters": "\u0404" }, + "Х": { "codepoints": [1061], "characters": "\u0425" }, + "Ќ": { "codepoints": [1036], "characters": "\u040C" }, + "Κ": { "codepoints": [922], "characters": "\u039A" }, + "Ķ": { "codepoints": [310], "characters": "\u0136" }, + "К": { "codepoints": [1050], "characters": "\u041A" }, + "𝔎": { "codepoints": [120078], "characters": "\uD835\uDD0E" }, + "𝕂": { "codepoints": [120130], "characters": "\uD835\uDD42" }, + "𝒦": { "codepoints": [119974], "characters": "\uD835\uDCA6" }, + "Љ": { "codepoints": [1033], "characters": "\u0409" }, + "<": { "codepoints": [60], "characters": "\u003C" }, + "<": { "codepoints": [60], "characters": "\u003C" }, + "Ĺ": { "codepoints": [313], "characters": "\u0139" }, + "Λ": { "codepoints": [923], "characters": "\u039B" }, + "⟪": { "codepoints": [10218], "characters": "\u27EA" }, + "ℒ": { "codepoints": [8466], "characters": "\u2112" }, + "↞": { "codepoints": [8606], "characters": "\u219E" }, + "Ľ": { "codepoints": [317], "characters": "\u013D" }, + "Ļ": { "codepoints": [315], "characters": "\u013B" }, + "Л": { "codepoints": [1051], "characters": "\u041B" }, + "⟨": { "codepoints": [10216], "characters": "\u27E8" }, + "←": { "codepoints": [8592], "characters": "\u2190" }, + "⇤": { "codepoints": [8676], "characters": "\u21E4" }, + "⇆": { "codepoints": [8646], "characters": "\u21C6" }, + "⌈": { "codepoints": [8968], "characters": "\u2308" }, + "⟦": { "codepoints": [10214], "characters": "\u27E6" }, + "⥡": { "codepoints": [10593], "characters": "\u2961" }, + "⇃": { "codepoints": [8643], "characters": "\u21C3" }, + "⥙": { "codepoints": [10585], "characters": "\u2959" }, + "⌊": { "codepoints": [8970], "characters": "\u230A" }, + "↔": { "codepoints": [8596], "characters": "\u2194" }, + "⥎": { "codepoints": [10574], "characters": "\u294E" }, + "⊣": { "codepoints": [8867], "characters": "\u22A3" }, + "↤": { "codepoints": [8612], "characters": "\u21A4" }, + "⥚": { "codepoints": [10586], "characters": "\u295A" }, + "⊲": { "codepoints": [8882], "characters": "\u22B2" }, + "⧏": { "codepoints": [10703], "characters": "\u29CF" }, + "⊴": { "codepoints": [8884], "characters": "\u22B4" }, + "⥑": { "codepoints": [10577], "characters": "\u2951" }, + "⥠": { "codepoints": [10592], "characters": "\u2960" }, + "↿": { "codepoints": [8639], "characters": "\u21BF" }, + "⥘": { "codepoints": [10584], "characters": "\u2958" }, + "↼": { "codepoints": [8636], "characters": "\u21BC" }, + "⥒": { "codepoints": [10578], "characters": "\u2952" }, + "⇐": { "codepoints": [8656], "characters": "\u21D0" }, + "⇔": { "codepoints": [8660], "characters": "\u21D4" }, + "⋚": { "codepoints": [8922], "characters": "\u22DA" }, + "≦": { "codepoints": [8806], "characters": "\u2266" }, + "≶": { "codepoints": [8822], "characters": "\u2276" }, + "⪡": { "codepoints": [10913], "characters": "\u2AA1" }, + "⩽": { "codepoints": [10877], "characters": "\u2A7D" }, + "≲": { "codepoints": [8818], "characters": "\u2272" }, + "𝔏": { "codepoints": [120079], "characters": "\uD835\uDD0F" }, + "⋘": { "codepoints": [8920], "characters": "\u22D8" }, + "⇚": { "codepoints": [8666], "characters": "\u21DA" }, + "Ŀ": { "codepoints": [319], "characters": "\u013F" }, + "⟵": { "codepoints": [10229], "characters": "\u27F5" }, + "⟷": { "codepoints": [10231], "characters": "\u27F7" }, + "⟶": { "codepoints": [10230], "characters": "\u27F6" }, + "⟸": { "codepoints": [10232], "characters": "\u27F8" }, + "⟺": { "codepoints": [10234], "characters": "\u27FA" }, + "⟹": { "codepoints": [10233], "characters": "\u27F9" }, + "𝕃": { "codepoints": [120131], "characters": "\uD835\uDD43" }, + "↙": { "codepoints": [8601], "characters": "\u2199" }, + "↘": { "codepoints": [8600], "characters": "\u2198" }, + "ℒ": { "codepoints": [8466], "characters": "\u2112" }, + "↰": { "codepoints": [8624], "characters": "\u21B0" }, + "Ł": { "codepoints": [321], "characters": "\u0141" }, + "≪": { "codepoints": [8810], "characters": "\u226A" }, + "⤅": { "codepoints": [10501], "characters": "\u2905" }, + "М": { "codepoints": [1052], "characters": "\u041C" }, + " ": { "codepoints": [8287], "characters": "\u205F" }, + "ℳ": { "codepoints": [8499], "characters": "\u2133" }, + "𝔐": { "codepoints": [120080], "characters": "\uD835\uDD10" }, + "∓": { "codepoints": [8723], "characters": "\u2213" }, + "𝕄": { "codepoints": [120132], "characters": "\uD835\uDD44" }, + "ℳ": { "codepoints": [8499], "characters": "\u2133" }, + "Μ": { "codepoints": [924], "characters": "\u039C" }, + "Њ": { "codepoints": [1034], "characters": "\u040A" }, + "Ń": { "codepoints": [323], "characters": "\u0143" }, + "Ň": { "codepoints": [327], "characters": "\u0147" }, + "Ņ": { "codepoints": [325], "characters": "\u0145" }, + "Н": { "codepoints": [1053], "characters": "\u041D" }, + "​": { "codepoints": [8203], "characters": "\u200B" }, + "​": { "codepoints": [8203], "characters": "\u200B" }, + "​": { "codepoints": [8203], "characters": "\u200B" }, + "​": { "codepoints": [8203], "characters": "\u200B" }, + "≫": { "codepoints": [8811], "characters": "\u226B" }, + "≪": { "codepoints": [8810], "characters": "\u226A" }, + " ": { "codepoints": [10], "characters": "\u000A" }, + "𝔑": { "codepoints": [120081], "characters": "\uD835\uDD11" }, + "⁠": { "codepoints": [8288], "characters": "\u2060" }, + " ": { "codepoints": [160], "characters": "\u00A0" }, + "ℕ": { "codepoints": [8469], "characters": "\u2115" }, + "⫬": { "codepoints": [10988], "characters": "\u2AEC" }, + "≢": { "codepoints": [8802], "characters": "\u2262" }, + "≭": { "codepoints": [8813], "characters": "\u226D" }, + "∦": { "codepoints": [8742], "characters": "\u2226" }, + "∉": { "codepoints": [8713], "characters": "\u2209" }, + "≠": { "codepoints": [8800], "characters": "\u2260" }, + "≂̸": { "codepoints": [8770, 824], "characters": "\u2242\u0338" }, + "∄": { "codepoints": [8708], "characters": "\u2204" }, + "≯": { "codepoints": [8815], "characters": "\u226F" }, + "≱": { "codepoints": [8817], "characters": "\u2271" }, + "≧̸": { "codepoints": [8807, 824], "characters": "\u2267\u0338" }, + "≫̸": { "codepoints": [8811, 824], "characters": "\u226B\u0338" }, + "≹": { "codepoints": [8825], "characters": "\u2279" }, + "⩾̸": { "codepoints": [10878, 824], "characters": "\u2A7E\u0338" }, + "≵": { "codepoints": [8821], "characters": "\u2275" }, + "≎̸": { "codepoints": [8782, 824], "characters": "\u224E\u0338" }, + "≏̸": { "codepoints": [8783, 824], "characters": "\u224F\u0338" }, + "⋪": { "codepoints": [8938], "characters": "\u22EA" }, + "⧏̸": { "codepoints": [10703, 824], "characters": "\u29CF\u0338" }, + "⋬": { "codepoints": [8940], "characters": "\u22EC" }, + "≮": { "codepoints": [8814], "characters": "\u226E" }, + "≰": { "codepoints": [8816], "characters": "\u2270" }, + "≸": { "codepoints": [8824], "characters": "\u2278" }, + "≪̸": { "codepoints": [8810, 824], "characters": "\u226A\u0338" }, + "⩽̸": { "codepoints": [10877, 824], "characters": "\u2A7D\u0338" }, + "≴": { "codepoints": [8820], "characters": "\u2274" }, + "⪢̸": { "codepoints": [10914, 824], "characters": "\u2AA2\u0338" }, + "⪡̸": { "codepoints": [10913, 824], "characters": "\u2AA1\u0338" }, + "⊀": { "codepoints": [8832], "characters": "\u2280" }, + "⪯̸": { "codepoints": [10927, 824], "characters": "\u2AAF\u0338" }, + "⋠": { "codepoints": [8928], "characters": "\u22E0" }, + "∌": { "codepoints": [8716], "characters": "\u220C" }, + "⋫": { "codepoints": [8939], "characters": "\u22EB" }, + "⧐̸": { "codepoints": [10704, 824], "characters": "\u29D0\u0338" }, + "⋭": { "codepoints": [8941], "characters": "\u22ED" }, + "⊏̸": { "codepoints": [8847, 824], "characters": "\u228F\u0338" }, + "⋢": { "codepoints": [8930], "characters": "\u22E2" }, + "⊐̸": { "codepoints": [8848, 824], "characters": "\u2290\u0338" }, + "⋣": { "codepoints": [8931], "characters": "\u22E3" }, + "⊂⃒": { "codepoints": [8834, 8402], "characters": "\u2282\u20D2" }, + "⊈": { "codepoints": [8840], "characters": "\u2288" }, + "⊁": { "codepoints": [8833], "characters": "\u2281" }, + "⪰̸": { "codepoints": [10928, 824], "characters": "\u2AB0\u0338" }, + "⋡": { "codepoints": [8929], "characters": "\u22E1" }, + "≿̸": { "codepoints": [8831, 824], "characters": "\u227F\u0338" }, + "⊃⃒": { "codepoints": [8835, 8402], "characters": "\u2283\u20D2" }, + "⊉": { "codepoints": [8841], "characters": "\u2289" }, + "≁": { "codepoints": [8769], "characters": "\u2241" }, + "≄": { "codepoints": [8772], "characters": "\u2244" }, + "≇": { "codepoints": [8775], "characters": "\u2247" }, + "≉": { "codepoints": [8777], "characters": "\u2249" }, + "∤": { "codepoints": [8740], "characters": "\u2224" }, + "𝒩": { "codepoints": [119977], "characters": "\uD835\uDCA9" }, + "Ñ": { "codepoints": [209], "characters": "\u00D1" }, + "Ñ": { "codepoints": [209], "characters": "\u00D1" }, + "Ν": { "codepoints": [925], "characters": "\u039D" }, + "Œ": { "codepoints": [338], "characters": "\u0152" }, + "Ó": { "codepoints": [211], "characters": "\u00D3" }, + "Ó": { "codepoints": [211], "characters": "\u00D3" }, + "Ô": { "codepoints": [212], "characters": "\u00D4" }, + "Ô": { "codepoints": [212], "characters": "\u00D4" }, + "О": { "codepoints": [1054], "characters": "\u041E" }, + "Ő": { "codepoints": [336], "characters": "\u0150" }, + "𝔒": { "codepoints": [120082], "characters": "\uD835\uDD12" }, + "Ò": { "codepoints": [210], "characters": "\u00D2" }, + "Ò": { "codepoints": [210], "characters": "\u00D2" }, + "Ō": { "codepoints": [332], "characters": "\u014C" }, + "Ω": { "codepoints": [937], "characters": "\u03A9" }, + "Ο": { "codepoints": [927], "characters": "\u039F" }, + "𝕆": { "codepoints": [120134], "characters": "\uD835\uDD46" }, + "“": { "codepoints": [8220], "characters": "\u201C" }, + "‘": { "codepoints": [8216], "characters": "\u2018" }, + "⩔": { "codepoints": [10836], "characters": "\u2A54" }, + "𝒪": { "codepoints": [119978], "characters": "\uD835\uDCAA" }, + "Ø": { "codepoints": [216], "characters": "\u00D8" }, + "Ø": { "codepoints": [216], "characters": "\u00D8" }, + "Õ": { "codepoints": [213], "characters": "\u00D5" }, + "Õ": { "codepoints": [213], "characters": "\u00D5" }, + "⨷": { "codepoints": [10807], "characters": "\u2A37" }, + "Ö": { "codepoints": [214], "characters": "\u00D6" }, + "Ö": { "codepoints": [214], "characters": "\u00D6" }, + "‾": { "codepoints": [8254], "characters": "\u203E" }, + "⏞": { "codepoints": [9182], "characters": "\u23DE" }, + "⎴": { "codepoints": [9140], "characters": "\u23B4" }, + "⏜": { "codepoints": [9180], "characters": "\u23DC" }, + "∂": { "codepoints": [8706], "characters": "\u2202" }, + "П": { "codepoints": [1055], "characters": "\u041F" }, + "𝔓": { "codepoints": [120083], "characters": "\uD835\uDD13" }, + "Φ": { "codepoints": [934], "characters": "\u03A6" }, + "Π": { "codepoints": [928], "characters": "\u03A0" }, + "±": { "codepoints": [177], "characters": "\u00B1" }, + "ℌ": { "codepoints": [8460], "characters": "\u210C" }, + "ℙ": { "codepoints": [8473], "characters": "\u2119" }, + "⪻": { "codepoints": [10939], "characters": "\u2ABB" }, + "≺": { "codepoints": [8826], "characters": "\u227A" }, + "⪯": { "codepoints": [10927], "characters": "\u2AAF" }, + "≼": { "codepoints": [8828], "characters": "\u227C" }, + "≾": { "codepoints": [8830], "characters": "\u227E" }, + "″": { "codepoints": [8243], "characters": "\u2033" }, + "∏": { "codepoints": [8719], "characters": "\u220F" }, + "∷": { "codepoints": [8759], "characters": "\u2237" }, + "∝": { "codepoints": [8733], "characters": "\u221D" }, + "𝒫": { "codepoints": [119979], "characters": "\uD835\uDCAB" }, + "Ψ": { "codepoints": [936], "characters": "\u03A8" }, + """: { "codepoints": [34], "characters": "\u0022" }, + """: { "codepoints": [34], "characters": "\u0022" }, + "𝔔": { "codepoints": [120084], "characters": "\uD835\uDD14" }, + "ℚ": { "codepoints": [8474], "characters": "\u211A" }, + "𝒬": { "codepoints": [119980], "characters": "\uD835\uDCAC" }, + "⤐": { "codepoints": [10512], "characters": "\u2910" }, + "®": { "codepoints": [174], "characters": "\u00AE" }, + "®": { "codepoints": [174], "characters": "\u00AE" }, + "Ŕ": { "codepoints": [340], "characters": "\u0154" }, + "⟫": { "codepoints": [10219], "characters": "\u27EB" }, + "↠": { "codepoints": [8608], "characters": "\u21A0" }, + "⤖": { "codepoints": [10518], "characters": "\u2916" }, + "Ř": { "codepoints": [344], "characters": "\u0158" }, + "Ŗ": { "codepoints": [342], "characters": "\u0156" }, + "Р": { "codepoints": [1056], "characters": "\u0420" }, + "ℜ": { "codepoints": [8476], "characters": "\u211C" }, + "∋": { "codepoints": [8715], "characters": "\u220B" }, + "⇋": { "codepoints": [8651], "characters": "\u21CB" }, + "⥯": { "codepoints": [10607], "characters": "\u296F" }, + "ℜ": { "codepoints": [8476], "characters": "\u211C" }, + "Ρ": { "codepoints": [929], "characters": "\u03A1" }, + "⟩": { "codepoints": [10217], "characters": "\u27E9" }, + "→": { "codepoints": [8594], "characters": "\u2192" }, + "⇥": { "codepoints": [8677], "characters": "\u21E5" }, + "⇄": { "codepoints": [8644], "characters": "\u21C4" }, + "⌉": { "codepoints": [8969], "characters": "\u2309" }, + "⟧": { "codepoints": [10215], "characters": "\u27E7" }, + "⥝": { "codepoints": [10589], "characters": "\u295D" }, + "⇂": { "codepoints": [8642], "characters": "\u21C2" }, + "⥕": { "codepoints": [10581], "characters": "\u2955" }, + "⌋": { "codepoints": [8971], "characters": "\u230B" }, + "⊢": { "codepoints": [8866], "characters": "\u22A2" }, + "↦": { "codepoints": [8614], "characters": "\u21A6" }, + "⥛": { "codepoints": [10587], "characters": "\u295B" }, + "⊳": { "codepoints": [8883], "characters": "\u22B3" }, + "⧐": { "codepoints": [10704], "characters": "\u29D0" }, + "⊵": { "codepoints": [8885], "characters": "\u22B5" }, + "⥏": { "codepoints": [10575], "characters": "\u294F" }, + "⥜": { "codepoints": [10588], "characters": "\u295C" }, + "↾": { "codepoints": [8638], "characters": "\u21BE" }, + "⥔": { "codepoints": [10580], "characters": "\u2954" }, + "⇀": { "codepoints": [8640], "characters": "\u21C0" }, + "⥓": { "codepoints": [10579], "characters": "\u2953" }, + "⇒": { "codepoints": [8658], "characters": "\u21D2" }, + "ℝ": { "codepoints": [8477], "characters": "\u211D" }, + "⥰": { "codepoints": [10608], "characters": "\u2970" }, + "⇛": { "codepoints": [8667], "characters": "\u21DB" }, + "ℛ": { "codepoints": [8475], "characters": "\u211B" }, + "↱": { "codepoints": [8625], "characters": "\u21B1" }, + "⧴": { "codepoints": [10740], "characters": "\u29F4" }, + "Щ": { "codepoints": [1065], "characters": "\u0429" }, + "Ш": { "codepoints": [1064], "characters": "\u0428" }, + "Ь": { "codepoints": [1068], "characters": "\u042C" }, + "Ś": { "codepoints": [346], "characters": "\u015A" }, + "⪼": { "codepoints": [10940], "characters": "\u2ABC" }, + "Š": { "codepoints": [352], "characters": "\u0160" }, + "Ş": { "codepoints": [350], "characters": "\u015E" }, + "Ŝ": { "codepoints": [348], "characters": "\u015C" }, + "С": { "codepoints": [1057], "characters": "\u0421" }, + "𝔖": { "codepoints": [120086], "characters": "\uD835\uDD16" }, + "↓": { "codepoints": [8595], "characters": "\u2193" }, + "←": { "codepoints": [8592], "characters": "\u2190" }, + "→": { "codepoints": [8594], "characters": "\u2192" }, + "↑": { "codepoints": [8593], "characters": "\u2191" }, + "Σ": { "codepoints": [931], "characters": "\u03A3" }, + "∘": { "codepoints": [8728], "characters": "\u2218" }, + "𝕊": { "codepoints": [120138], "characters": "\uD835\uDD4A" }, + "√": { "codepoints": [8730], "characters": "\u221A" }, + "□": { "codepoints": [9633], "characters": "\u25A1" }, + "⊓": { "codepoints": [8851], "characters": "\u2293" }, + "⊏": { "codepoints": [8847], "characters": "\u228F" }, + "⊑": { "codepoints": [8849], "characters": "\u2291" }, + "⊐": { "codepoints": [8848], "characters": "\u2290" }, + "⊒": { "codepoints": [8850], "characters": "\u2292" }, + "⊔": { "codepoints": [8852], "characters": "\u2294" }, + "𝒮": { "codepoints": [119982], "characters": "\uD835\uDCAE" }, + "⋆": { "codepoints": [8902], "characters": "\u22C6" }, + "⋐": { "codepoints": [8912], "characters": "\u22D0" }, + "⋐": { "codepoints": [8912], "characters": "\u22D0" }, + "⊆": { "codepoints": [8838], "characters": "\u2286" }, + "≻": { "codepoints": [8827], "characters": "\u227B" }, + "⪰": { "codepoints": [10928], "characters": "\u2AB0" }, + "≽": { "codepoints": [8829], "characters": "\u227D" }, + "≿": { "codepoints": [8831], "characters": "\u227F" }, + "∋": { "codepoints": [8715], "characters": "\u220B" }, + "∑": { "codepoints": [8721], "characters": "\u2211" }, + "⋑": { "codepoints": [8913], "characters": "\u22D1" }, + "⊃": { "codepoints": [8835], "characters": "\u2283" }, + "⊇": { "codepoints": [8839], "characters": "\u2287" }, + "⋑": { "codepoints": [8913], "characters": "\u22D1" }, + "Þ": { "codepoints": [222], "characters": "\u00DE" }, + "Þ": { "codepoints": [222], "characters": "\u00DE" }, + "™": { "codepoints": [8482], "characters": "\u2122" }, + "Ћ": { "codepoints": [1035], "characters": "\u040B" }, + "Ц": { "codepoints": [1062], "characters": "\u0426" }, + " ": { "codepoints": [9], "characters": "\u0009" }, + "Τ": { "codepoints": [932], "characters": "\u03A4" }, + "Ť": { "codepoints": [356], "characters": "\u0164" }, + "Ţ": { "codepoints": [354], "characters": "\u0162" }, + "Т": { "codepoints": [1058], "characters": "\u0422" }, + "𝔗": { "codepoints": [120087], "characters": "\uD835\uDD17" }, + "∴": { "codepoints": [8756], "characters": "\u2234" }, + "Θ": { "codepoints": [920], "characters": "\u0398" }, + "  ": { "codepoints": [8287, 8202], "characters": "\u205F\u200A" }, + " ": { "codepoints": [8201], "characters": "\u2009" }, + "∼": { "codepoints": [8764], "characters": "\u223C" }, + "≃": { "codepoints": [8771], "characters": "\u2243" }, + "≅": { "codepoints": [8773], "characters": "\u2245" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "𝕋": { "codepoints": [120139], "characters": "\uD835\uDD4B" }, + "⃛": { "codepoints": [8411], "characters": "\u20DB" }, + "𝒯": { "codepoints": [119983], "characters": "\uD835\uDCAF" }, + "Ŧ": { "codepoints": [358], "characters": "\u0166" }, + "Ú": { "codepoints": [218], "characters": "\u00DA" }, + "Ú": { "codepoints": [218], "characters": "\u00DA" }, + "↟": { "codepoints": [8607], "characters": "\u219F" }, + "⥉": { "codepoints": [10569], "characters": "\u2949" }, + "Ў": { "codepoints": [1038], "characters": "\u040E" }, + "Ŭ": { "codepoints": [364], "characters": "\u016C" }, + "Û": { "codepoints": [219], "characters": "\u00DB" }, + "Û": { "codepoints": [219], "characters": "\u00DB" }, + "У": { "codepoints": [1059], "characters": "\u0423" }, + "Ű": { "codepoints": [368], "characters": "\u0170" }, + "𝔘": { "codepoints": [120088], "characters": "\uD835\uDD18" }, + "Ù": { "codepoints": [217], "characters": "\u00D9" }, + "Ù": { "codepoints": [217], "characters": "\u00D9" }, + "Ū": { "codepoints": [362], "characters": "\u016A" }, + "_": { "codepoints": [95], "characters": "\u005F" }, + "⏟": { "codepoints": [9183], "characters": "\u23DF" }, + "⎵": { "codepoints": [9141], "characters": "\u23B5" }, + "⏝": { "codepoints": [9181], "characters": "\u23DD" }, + "⋃": { "codepoints": [8899], "characters": "\u22C3" }, + "⊎": { "codepoints": [8846], "characters": "\u228E" }, + "Ų": { "codepoints": [370], "characters": "\u0172" }, + "𝕌": { "codepoints": [120140], "characters": "\uD835\uDD4C" }, + "↑": { "codepoints": [8593], "characters": "\u2191" }, + "⤒": { "codepoints": [10514], "characters": "\u2912" }, + "⇅": { "codepoints": [8645], "characters": "\u21C5" }, + "↕": { "codepoints": [8597], "characters": "\u2195" }, + "⥮": { "codepoints": [10606], "characters": "\u296E" }, + "⊥": { "codepoints": [8869], "characters": "\u22A5" }, + "↥": { "codepoints": [8613], "characters": "\u21A5" }, + "⇑": { "codepoints": [8657], "characters": "\u21D1" }, + "⇕": { "codepoints": [8661], "characters": "\u21D5" }, + "↖": { "codepoints": [8598], "characters": "\u2196" }, + "↗": { "codepoints": [8599], "characters": "\u2197" }, + "ϒ": { "codepoints": [978], "characters": "\u03D2" }, + "Υ": { "codepoints": [933], "characters": "\u03A5" }, + "Ů": { "codepoints": [366], "characters": "\u016E" }, + "𝒰": { "codepoints": [119984], "characters": "\uD835\uDCB0" }, + "Ũ": { "codepoints": [360], "characters": "\u0168" }, + "Ü": { "codepoints": [220], "characters": "\u00DC" }, + "Ü": { "codepoints": [220], "characters": "\u00DC" }, + "⊫": { "codepoints": [8875], "characters": "\u22AB" }, + "⫫": { "codepoints": [10987], "characters": "\u2AEB" }, + "В": { "codepoints": [1042], "characters": "\u0412" }, + "⊩": { "codepoints": [8873], "characters": "\u22A9" }, + "⫦": { "codepoints": [10982], "characters": "\u2AE6" }, + "⋁": { "codepoints": [8897], "characters": "\u22C1" }, + "‖": { "codepoints": [8214], "characters": "\u2016" }, + "‖": { "codepoints": [8214], "characters": "\u2016" }, + "∣": { "codepoints": [8739], "characters": "\u2223" }, + "|": { "codepoints": [124], "characters": "\u007C" }, + "❘": { "codepoints": [10072], "characters": "\u2758" }, + "≀": { "codepoints": [8768], "characters": "\u2240" }, + " ": { "codepoints": [8202], "characters": "\u200A" }, + "𝔙": { "codepoints": [120089], "characters": "\uD835\uDD19" }, + "𝕍": { "codepoints": [120141], "characters": "\uD835\uDD4D" }, + "𝒱": { "codepoints": [119985], "characters": "\uD835\uDCB1" }, + "⊪": { "codepoints": [8874], "characters": "\u22AA" }, + "Ŵ": { "codepoints": [372], "characters": "\u0174" }, + "⋀": { "codepoints": [8896], "characters": "\u22C0" }, + "𝔚": { "codepoints": [120090], "characters": "\uD835\uDD1A" }, + "𝕎": { "codepoints": [120142], "characters": "\uD835\uDD4E" }, + "𝒲": { "codepoints": [119986], "characters": "\uD835\uDCB2" }, + "𝔛": { "codepoints": [120091], "characters": "\uD835\uDD1B" }, + "Ξ": { "codepoints": [926], "characters": "\u039E" }, + "𝕏": { "codepoints": [120143], "characters": "\uD835\uDD4F" }, + "𝒳": { "codepoints": [119987], "characters": "\uD835\uDCB3" }, + "Я": { "codepoints": [1071], "characters": "\u042F" }, + "Ї": { "codepoints": [1031], "characters": "\u0407" }, + "Ю": { "codepoints": [1070], "characters": "\u042E" }, + "Ý": { "codepoints": [221], "characters": "\u00DD" }, + "Ý": { "codepoints": [221], "characters": "\u00DD" }, + "Ŷ": { "codepoints": [374], "characters": "\u0176" }, + "Ы": { "codepoints": [1067], "characters": "\u042B" }, + "𝔜": { "codepoints": [120092], "characters": "\uD835\uDD1C" }, + "𝕐": { "codepoints": [120144], "characters": "\uD835\uDD50" }, + "𝒴": { "codepoints": [119988], "characters": "\uD835\uDCB4" }, + "Ÿ": { "codepoints": [376], "characters": "\u0178" }, + "Ж": { "codepoints": [1046], "characters": "\u0416" }, + "Ź": { "codepoints": [377], "characters": "\u0179" }, + "Ž": { "codepoints": [381], "characters": "\u017D" }, + "З": { "codepoints": [1047], "characters": "\u0417" }, + "Ż": { "codepoints": [379], "characters": "\u017B" }, + "​": { "codepoints": [8203], "characters": "\u200B" }, + "Ζ": { "codepoints": [918], "characters": "\u0396" }, + "ℨ": { "codepoints": [8488], "characters": "\u2128" }, + "ℤ": { "codepoints": [8484], "characters": "\u2124" }, + "𝒵": { "codepoints": [119989], "characters": "\uD835\uDCB5" }, + "á": { "codepoints": [225], "characters": "\u00E1" }, + "á": { "codepoints": [225], "characters": "\u00E1" }, + "ă": { "codepoints": [259], "characters": "\u0103" }, + "∾": { "codepoints": [8766], "characters": "\u223E" }, + "∾̳": { "codepoints": [8766, 819], "characters": "\u223E\u0333" }, + "∿": { "codepoints": [8767], "characters": "\u223F" }, + "â": { "codepoints": [226], "characters": "\u00E2" }, + "â": { "codepoints": [226], "characters": "\u00E2" }, + "´": { "codepoints": [180], "characters": "\u00B4" }, + "´": { "codepoints": [180], "characters": "\u00B4" }, + "а": { "codepoints": [1072], "characters": "\u0430" }, + "æ": { "codepoints": [230], "characters": "\u00E6" }, + "æ": { "codepoints": [230], "characters": "\u00E6" }, + "⁡": { "codepoints": [8289], "characters": "\u2061" }, + "𝔞": { "codepoints": [120094], "characters": "\uD835\uDD1E" }, + "à": { "codepoints": [224], "characters": "\u00E0" }, + "à": { "codepoints": [224], "characters": "\u00E0" }, + "ℵ": { "codepoints": [8501], "characters": "\u2135" }, + "ℵ": { "codepoints": [8501], "characters": "\u2135" }, + "α": { "codepoints": [945], "characters": "\u03B1" }, + "ā": { "codepoints": [257], "characters": "\u0101" }, + "⨿": { "codepoints": [10815], "characters": "\u2A3F" }, + "&": { "codepoints": [38], "characters": "\u0026" }, + "&": { "codepoints": [38], "characters": "\u0026" }, + "∧": { "codepoints": [8743], "characters": "\u2227" }, + "⩕": { "codepoints": [10837], "characters": "\u2A55" }, + "⩜": { "codepoints": [10844], "characters": "\u2A5C" }, + "⩘": { "codepoints": [10840], "characters": "\u2A58" }, + "⩚": { "codepoints": [10842], "characters": "\u2A5A" }, + "∠": { "codepoints": [8736], "characters": "\u2220" }, + "⦤": { "codepoints": [10660], "characters": "\u29A4" }, + "∠": { "codepoints": [8736], "characters": "\u2220" }, + "∡": { "codepoints": [8737], "characters": "\u2221" }, + "⦨": { "codepoints": [10664], "characters": "\u29A8" }, + "⦩": { "codepoints": [10665], "characters": "\u29A9" }, + "⦪": { "codepoints": [10666], "characters": "\u29AA" }, + "⦫": { "codepoints": [10667], "characters": "\u29AB" }, + "⦬": { "codepoints": [10668], "characters": "\u29AC" }, + "⦭": { "codepoints": [10669], "characters": "\u29AD" }, + "⦮": { "codepoints": [10670], "characters": "\u29AE" }, + "⦯": { "codepoints": [10671], "characters": "\u29AF" }, + "∟": { "codepoints": [8735], "characters": "\u221F" }, + "⊾": { "codepoints": [8894], "characters": "\u22BE" }, + "⦝": { "codepoints": [10653], "characters": "\u299D" }, + "∢": { "codepoints": [8738], "characters": "\u2222" }, + "Å": { "codepoints": [197], "characters": "\u00C5" }, + "⍼": { "codepoints": [9084], "characters": "\u237C" }, + "ą": { "codepoints": [261], "characters": "\u0105" }, + "𝕒": { "codepoints": [120146], "characters": "\uD835\uDD52" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "⩰": { "codepoints": [10864], "characters": "\u2A70" }, + "⩯": { "codepoints": [10863], "characters": "\u2A6F" }, + "≊": { "codepoints": [8778], "characters": "\u224A" }, + "≋": { "codepoints": [8779], "characters": "\u224B" }, + "'": { "codepoints": [39], "characters": "\u0027" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "≊": { "codepoints": [8778], "characters": "\u224A" }, + "å": { "codepoints": [229], "characters": "\u00E5" }, + "å": { "codepoints": [229], "characters": "\u00E5" }, + "𝒶": { "codepoints": [119990], "characters": "\uD835\uDCB6" }, + "*": { "codepoints": [42], "characters": "\u002A" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "≍": { "codepoints": [8781], "characters": "\u224D" }, + "ã": { "codepoints": [227], "characters": "\u00E3" }, + "ã": { "codepoints": [227], "characters": "\u00E3" }, + "ä": { "codepoints": [228], "characters": "\u00E4" }, + "ä": { "codepoints": [228], "characters": "\u00E4" }, + "∳": { "codepoints": [8755], "characters": "\u2233" }, + "⨑": { "codepoints": [10769], "characters": "\u2A11" }, + "⫭": { "codepoints": [10989], "characters": "\u2AED" }, + "≌": { "codepoints": [8780], "characters": "\u224C" }, + "϶": { "codepoints": [1014], "characters": "\u03F6" }, + "‵": { "codepoints": [8245], "characters": "\u2035" }, + "∽": { "codepoints": [8765], "characters": "\u223D" }, + "⋍": { "codepoints": [8909], "characters": "\u22CD" }, + "⊽": { "codepoints": [8893], "characters": "\u22BD" }, + "⌅": { "codepoints": [8965], "characters": "\u2305" }, + "⌅": { "codepoints": [8965], "characters": "\u2305" }, + "⎵": { "codepoints": [9141], "characters": "\u23B5" }, + "⎶": { "codepoints": [9142], "characters": "\u23B6" }, + "≌": { "codepoints": [8780], "characters": "\u224C" }, + "б": { "codepoints": [1073], "characters": "\u0431" }, + "„": { "codepoints": [8222], "characters": "\u201E" }, + "∵": { "codepoints": [8757], "characters": "\u2235" }, + "∵": { "codepoints": [8757], "characters": "\u2235" }, + "⦰": { "codepoints": [10672], "characters": "\u29B0" }, + "϶": { "codepoints": [1014], "characters": "\u03F6" }, + "ℬ": { "codepoints": [8492], "characters": "\u212C" }, + "β": { "codepoints": [946], "characters": "\u03B2" }, + "ℶ": { "codepoints": [8502], "characters": "\u2136" }, + "≬": { "codepoints": [8812], "characters": "\u226C" }, + "𝔟": { "codepoints": [120095], "characters": "\uD835\uDD1F" }, + "⋂": { "codepoints": [8898], "characters": "\u22C2" }, + "◯": { "codepoints": [9711], "characters": "\u25EF" }, + "⋃": { "codepoints": [8899], "characters": "\u22C3" }, + "⨀": { "codepoints": [10752], "characters": "\u2A00" }, + "⨁": { "codepoints": [10753], "characters": "\u2A01" }, + "⨂": { "codepoints": [10754], "characters": "\u2A02" }, + "⨆": { "codepoints": [10758], "characters": "\u2A06" }, + "★": { "codepoints": [9733], "characters": "\u2605" }, + "▽": { "codepoints": [9661], "characters": "\u25BD" }, + "△": { "codepoints": [9651], "characters": "\u25B3" }, + "⨄": { "codepoints": [10756], "characters": "\u2A04" }, + "⋁": { "codepoints": [8897], "characters": "\u22C1" }, + "⋀": { "codepoints": [8896], "characters": "\u22C0" }, + "⤍": { "codepoints": [10509], "characters": "\u290D" }, + "⧫": { "codepoints": [10731], "characters": "\u29EB" }, + "▪": { "codepoints": [9642], "characters": "\u25AA" }, + "▴": { "codepoints": [9652], "characters": "\u25B4" }, + "▾": { "codepoints": [9662], "characters": "\u25BE" }, + "◂": { "codepoints": [9666], "characters": "\u25C2" }, + "▸": { "codepoints": [9656], "characters": "\u25B8" }, + "␣": { "codepoints": [9251], "characters": "\u2423" }, + "▒": { "codepoints": [9618], "characters": "\u2592" }, + "░": { "codepoints": [9617], "characters": "\u2591" }, + "▓": { "codepoints": [9619], "characters": "\u2593" }, + "█": { "codepoints": [9608], "characters": "\u2588" }, + "=⃥": { "codepoints": [61, 8421], "characters": "\u003D\u20E5" }, + "≡⃥": { "codepoints": [8801, 8421], "characters": "\u2261\u20E5" }, + "⌐": { "codepoints": [8976], "characters": "\u2310" }, + "𝕓": { "codepoints": [120147], "characters": "\uD835\uDD53" }, + "⊥": { "codepoints": [8869], "characters": "\u22A5" }, + "⊥": { "codepoints": [8869], "characters": "\u22A5" }, + "⋈": { "codepoints": [8904], "characters": "\u22C8" }, + "╗": { "codepoints": [9559], "characters": "\u2557" }, + "╔": { "codepoints": [9556], "characters": "\u2554" }, + "╖": { "codepoints": [9558], "characters": "\u2556" }, + "╓": { "codepoints": [9555], "characters": "\u2553" }, + "═": { "codepoints": [9552], "characters": "\u2550" }, + "╦": { "codepoints": [9574], "characters": "\u2566" }, + "╩": { "codepoints": [9577], "characters": "\u2569" }, + "╤": { "codepoints": [9572], "characters": "\u2564" }, + "╧": { "codepoints": [9575], "characters": "\u2567" }, + "╝": { "codepoints": [9565], "characters": "\u255D" }, + "╚": { "codepoints": [9562], "characters": "\u255A" }, + "╜": { "codepoints": [9564], "characters": "\u255C" }, + "╙": { "codepoints": [9561], "characters": "\u2559" }, + "║": { "codepoints": [9553], "characters": "\u2551" }, + "╬": { "codepoints": [9580], "characters": "\u256C" }, + "╣": { "codepoints": [9571], "characters": "\u2563" }, + "╠": { "codepoints": [9568], "characters": "\u2560" }, + "╫": { "codepoints": [9579], "characters": "\u256B" }, + "╢": { "codepoints": [9570], "characters": "\u2562" }, + "╟": { "codepoints": [9567], "characters": "\u255F" }, + "⧉": { "codepoints": [10697], "characters": "\u29C9" }, + "╕": { "codepoints": [9557], "characters": "\u2555" }, + "╒": { "codepoints": [9554], "characters": "\u2552" }, + "┐": { "codepoints": [9488], "characters": "\u2510" }, + "┌": { "codepoints": [9484], "characters": "\u250C" }, + "─": { "codepoints": [9472], "characters": "\u2500" }, + "╥": { "codepoints": [9573], "characters": "\u2565" }, + "╨": { "codepoints": [9576], "characters": "\u2568" }, + "┬": { "codepoints": [9516], "characters": "\u252C" }, + "┴": { "codepoints": [9524], "characters": "\u2534" }, + "⊟": { "codepoints": [8863], "characters": "\u229F" }, + "⊞": { "codepoints": [8862], "characters": "\u229E" }, + "⊠": { "codepoints": [8864], "characters": "\u22A0" }, + "╛": { "codepoints": [9563], "characters": "\u255B" }, + "╘": { "codepoints": [9560], "characters": "\u2558" }, + "┘": { "codepoints": [9496], "characters": "\u2518" }, + "└": { "codepoints": [9492], "characters": "\u2514" }, + "│": { "codepoints": [9474], "characters": "\u2502" }, + "╪": { "codepoints": [9578], "characters": "\u256A" }, + "╡": { "codepoints": [9569], "characters": "\u2561" }, + "╞": { "codepoints": [9566], "characters": "\u255E" }, + "┼": { "codepoints": [9532], "characters": "\u253C" }, + "┤": { "codepoints": [9508], "characters": "\u2524" }, + "├": { "codepoints": [9500], "characters": "\u251C" }, + "‵": { "codepoints": [8245], "characters": "\u2035" }, + "˘": { "codepoints": [728], "characters": "\u02D8" }, + "¦": { "codepoints": [166], "characters": "\u00A6" }, + "¦": { "codepoints": [166], "characters": "\u00A6" }, + "𝒷": { "codepoints": [119991], "characters": "\uD835\uDCB7" }, + "⁏": { "codepoints": [8271], "characters": "\u204F" }, + "∽": { "codepoints": [8765], "characters": "\u223D" }, + "⋍": { "codepoints": [8909], "characters": "\u22CD" }, + "\": { "codepoints": [92], "characters": "\u005C" }, + "⧅": { "codepoints": [10693], "characters": "\u29C5" }, + "⟈": { "codepoints": [10184], "characters": "\u27C8" }, + "•": { "codepoints": [8226], "characters": "\u2022" }, + "•": { "codepoints": [8226], "characters": "\u2022" }, + "≎": { "codepoints": [8782], "characters": "\u224E" }, + "⪮": { "codepoints": [10926], "characters": "\u2AAE" }, + "≏": { "codepoints": [8783], "characters": "\u224F" }, + "≏": { "codepoints": [8783], "characters": "\u224F" }, + "ć": { "codepoints": [263], "characters": "\u0107" }, + "∩": { "codepoints": [8745], "characters": "\u2229" }, + "⩄": { "codepoints": [10820], "characters": "\u2A44" }, + "⩉": { "codepoints": [10825], "characters": "\u2A49" }, + "⩋": { "codepoints": [10827], "characters": "\u2A4B" }, + "⩇": { "codepoints": [10823], "characters": "\u2A47" }, + "⩀": { "codepoints": [10816], "characters": "\u2A40" }, + "∩︀": { "codepoints": [8745, 65024], "characters": "\u2229\uFE00" }, + "⁁": { "codepoints": [8257], "characters": "\u2041" }, + "ˇ": { "codepoints": [711], "characters": "\u02C7" }, + "⩍": { "codepoints": [10829], "characters": "\u2A4D" }, + "č": { "codepoints": [269], "characters": "\u010D" }, + "ç": { "codepoints": [231], "characters": "\u00E7" }, + "ç": { "codepoints": [231], "characters": "\u00E7" }, + "ĉ": { "codepoints": [265], "characters": "\u0109" }, + "⩌": { "codepoints": [10828], "characters": "\u2A4C" }, + "⩐": { "codepoints": [10832], "characters": "\u2A50" }, + "ċ": { "codepoints": [267], "characters": "\u010B" }, + "¸": { "codepoints": [184], "characters": "\u00B8" }, + "¸": { "codepoints": [184], "characters": "\u00B8" }, + "⦲": { "codepoints": [10674], "characters": "\u29B2" }, + "¢": { "codepoints": [162], "characters": "\u00A2" }, + "¢": { "codepoints": [162], "characters": "\u00A2" }, + "·": { "codepoints": [183], "characters": "\u00B7" }, + "𝔠": { "codepoints": [120096], "characters": "\uD835\uDD20" }, + "ч": { "codepoints": [1095], "characters": "\u0447" }, + "✓": { "codepoints": [10003], "characters": "\u2713" }, + "✓": { "codepoints": [10003], "characters": "\u2713" }, + "χ": { "codepoints": [967], "characters": "\u03C7" }, + "○": { "codepoints": [9675], "characters": "\u25CB" }, + "⧃": { "codepoints": [10691], "characters": "\u29C3" }, + "ˆ": { "codepoints": [710], "characters": "\u02C6" }, + "≗": { "codepoints": [8791], "characters": "\u2257" }, + "↺": { "codepoints": [8634], "characters": "\u21BA" }, + "↻": { "codepoints": [8635], "characters": "\u21BB" }, + "®": { "codepoints": [174], "characters": "\u00AE" }, + "Ⓢ": { "codepoints": [9416], "characters": "\u24C8" }, + "⊛": { "codepoints": [8859], "characters": "\u229B" }, + "⊚": { "codepoints": [8858], "characters": "\u229A" }, + "⊝": { "codepoints": [8861], "characters": "\u229D" }, + "≗": { "codepoints": [8791], "characters": "\u2257" }, + "⨐": { "codepoints": [10768], "characters": "\u2A10" }, + "⫯": { "codepoints": [10991], "characters": "\u2AEF" }, + "⧂": { "codepoints": [10690], "characters": "\u29C2" }, + "♣": { "codepoints": [9827], "characters": "\u2663" }, + "♣": { "codepoints": [9827], "characters": "\u2663" }, + ":": { "codepoints": [58], "characters": "\u003A" }, + "≔": { "codepoints": [8788], "characters": "\u2254" }, + "≔": { "codepoints": [8788], "characters": "\u2254" }, + ",": { "codepoints": [44], "characters": "\u002C" }, + "@": { "codepoints": [64], "characters": "\u0040" }, + "∁": { "codepoints": [8705], "characters": "\u2201" }, + "∘": { "codepoints": [8728], "characters": "\u2218" }, + "∁": { "codepoints": [8705], "characters": "\u2201" }, + "ℂ": { "codepoints": [8450], "characters": "\u2102" }, + "≅": { "codepoints": [8773], "characters": "\u2245" }, + "⩭": { "codepoints": [10861], "characters": "\u2A6D" }, + "∮": { "codepoints": [8750], "characters": "\u222E" }, + "𝕔": { "codepoints": [120148], "characters": "\uD835\uDD54" }, + "∐": { "codepoints": [8720], "characters": "\u2210" }, + "©": { "codepoints": [169], "characters": "\u00A9" }, + "©": { "codepoints": [169], "characters": "\u00A9" }, + "℗": { "codepoints": [8471], "characters": "\u2117" }, + "↵": { "codepoints": [8629], "characters": "\u21B5" }, + "✗": { "codepoints": [10007], "characters": "\u2717" }, + "𝒸": { "codepoints": [119992], "characters": "\uD835\uDCB8" }, + "⫏": { "codepoints": [10959], "characters": "\u2ACF" }, + "⫑": { "codepoints": [10961], "characters": "\u2AD1" }, + "⫐": { "codepoints": [10960], "characters": "\u2AD0" }, + "⫒": { "codepoints": [10962], "characters": "\u2AD2" }, + "⋯": { "codepoints": [8943], "characters": "\u22EF" }, + "⤸": { "codepoints": [10552], "characters": "\u2938" }, + "⤵": { "codepoints": [10549], "characters": "\u2935" }, + "⋞": { "codepoints": [8926], "characters": "\u22DE" }, + "⋟": { "codepoints": [8927], "characters": "\u22DF" }, + "↶": { "codepoints": [8630], "characters": "\u21B6" }, + "⤽": { "codepoints": [10557], "characters": "\u293D" }, + "∪": { "codepoints": [8746], "characters": "\u222A" }, + "⩈": { "codepoints": [10824], "characters": "\u2A48" }, + "⩆": { "codepoints": [10822], "characters": "\u2A46" }, + "⩊": { "codepoints": [10826], "characters": "\u2A4A" }, + "⊍": { "codepoints": [8845], "characters": "\u228D" }, + "⩅": { "codepoints": [10821], "characters": "\u2A45" }, + "∪︀": { "codepoints": [8746, 65024], "characters": "\u222A\uFE00" }, + "↷": { "codepoints": [8631], "characters": "\u21B7" }, + "⤼": { "codepoints": [10556], "characters": "\u293C" }, + "⋞": { "codepoints": [8926], "characters": "\u22DE" }, + "⋟": { "codepoints": [8927], "characters": "\u22DF" }, + "⋎": { "codepoints": [8910], "characters": "\u22CE" }, + "⋏": { "codepoints": [8911], "characters": "\u22CF" }, + "¤": { "codepoints": [164], "characters": "\u00A4" }, + "¤": { "codepoints": [164], "characters": "\u00A4" }, + "↶": { "codepoints": [8630], "characters": "\u21B6" }, + "↷": { "codepoints": [8631], "characters": "\u21B7" }, + "⋎": { "codepoints": [8910], "characters": "\u22CE" }, + "⋏": { "codepoints": [8911], "characters": "\u22CF" }, + "∲": { "codepoints": [8754], "characters": "\u2232" }, + "∱": { "codepoints": [8753], "characters": "\u2231" }, + "⌭": { "codepoints": [9005], "characters": "\u232D" }, + "⇓": { "codepoints": [8659], "characters": "\u21D3" }, + "⥥": { "codepoints": [10597], "characters": "\u2965" }, + "†": { "codepoints": [8224], "characters": "\u2020" }, + "ℸ": { "codepoints": [8504], "characters": "\u2138" }, + "↓": { "codepoints": [8595], "characters": "\u2193" }, + "‐": { "codepoints": [8208], "characters": "\u2010" }, + "⊣": { "codepoints": [8867], "characters": "\u22A3" }, + "⤏": { "codepoints": [10511], "characters": "\u290F" }, + "˝": { "codepoints": [733], "characters": "\u02DD" }, + "ď": { "codepoints": [271], "characters": "\u010F" }, + "д": { "codepoints": [1076], "characters": "\u0434" }, + "ⅆ": { "codepoints": [8518], "characters": "\u2146" }, + "‡": { "codepoints": [8225], "characters": "\u2021" }, + "⇊": { "codepoints": [8650], "characters": "\u21CA" }, + "⩷": { "codepoints": [10871], "characters": "\u2A77" }, + "°": { "codepoints": [176], "characters": "\u00B0" }, + "°": { "codepoints": [176], "characters": "\u00B0" }, + "δ": { "codepoints": [948], "characters": "\u03B4" }, + "⦱": { "codepoints": [10673], "characters": "\u29B1" }, + "⥿": { "codepoints": [10623], "characters": "\u297F" }, + "𝔡": { "codepoints": [120097], "characters": "\uD835\uDD21" }, + "⇃": { "codepoints": [8643], "characters": "\u21C3" }, + "⇂": { "codepoints": [8642], "characters": "\u21C2" }, + "⋄": { "codepoints": [8900], "characters": "\u22C4" }, + "⋄": { "codepoints": [8900], "characters": "\u22C4" }, + "♦": { "codepoints": [9830], "characters": "\u2666" }, + "♦": { "codepoints": [9830], "characters": "\u2666" }, + "¨": { "codepoints": [168], "characters": "\u00A8" }, + "ϝ": { "codepoints": [989], "characters": "\u03DD" }, + "⋲": { "codepoints": [8946], "characters": "\u22F2" }, + "÷": { "codepoints": [247], "characters": "\u00F7" }, + "÷": { "codepoints": [247], "characters": "\u00F7" }, + "÷": { "codepoints": [247], "characters": "\u00F7" }, + "⋇": { "codepoints": [8903], "characters": "\u22C7" }, + "⋇": { "codepoints": [8903], "characters": "\u22C7" }, + "ђ": { "codepoints": [1106], "characters": "\u0452" }, + "⌞": { "codepoints": [8990], "characters": "\u231E" }, + "⌍": { "codepoints": [8973], "characters": "\u230D" }, + "$": { "codepoints": [36], "characters": "\u0024" }, + "𝕕": { "codepoints": [120149], "characters": "\uD835\uDD55" }, + "˙": { "codepoints": [729], "characters": "\u02D9" }, + "≐": { "codepoints": [8784], "characters": "\u2250" }, + "≑": { "codepoints": [8785], "characters": "\u2251" }, + "∸": { "codepoints": [8760], "characters": "\u2238" }, + "∔": { "codepoints": [8724], "characters": "\u2214" }, + "⊡": { "codepoints": [8865], "characters": "\u22A1" }, + "⌆": { "codepoints": [8966], "characters": "\u2306" }, + "↓": { "codepoints": [8595], "characters": "\u2193" }, + "⇊": { "codepoints": [8650], "characters": "\u21CA" }, + "⇃": { "codepoints": [8643], "characters": "\u21C3" }, + "⇂": { "codepoints": [8642], "characters": "\u21C2" }, + "⤐": { "codepoints": [10512], "characters": "\u2910" }, + "⌟": { "codepoints": [8991], "characters": "\u231F" }, + "⌌": { "codepoints": [8972], "characters": "\u230C" }, + "𝒹": { "codepoints": [119993], "characters": "\uD835\uDCB9" }, + "ѕ": { "codepoints": [1109], "characters": "\u0455" }, + "⧶": { "codepoints": [10742], "characters": "\u29F6" }, + "đ": { "codepoints": [273], "characters": "\u0111" }, + "⋱": { "codepoints": [8945], "characters": "\u22F1" }, + "▿": { "codepoints": [9663], "characters": "\u25BF" }, + "▾": { "codepoints": [9662], "characters": "\u25BE" }, + "⇵": { "codepoints": [8693], "characters": "\u21F5" }, + "⥯": { "codepoints": [10607], "characters": "\u296F" }, + "⦦": { "codepoints": [10662], "characters": "\u29A6" }, + "џ": { "codepoints": [1119], "characters": "\u045F" }, + "⟿": { "codepoints": [10239], "characters": "\u27FF" }, + "⩷": { "codepoints": [10871], "characters": "\u2A77" }, + "≑": { "codepoints": [8785], "characters": "\u2251" }, + "é": { "codepoints": [233], "characters": "\u00E9" }, + "é": { "codepoints": [233], "characters": "\u00E9" }, + "⩮": { "codepoints": [10862], "characters": "\u2A6E" }, + "ě": { "codepoints": [283], "characters": "\u011B" }, + "≖": { "codepoints": [8790], "characters": "\u2256" }, + "ê": { "codepoints": [234], "characters": "\u00EA" }, + "ê": { "codepoints": [234], "characters": "\u00EA" }, + "≕": { "codepoints": [8789], "characters": "\u2255" }, + "э": { "codepoints": [1101], "characters": "\u044D" }, + "ė": { "codepoints": [279], "characters": "\u0117" }, + "ⅇ": { "codepoints": [8519], "characters": "\u2147" }, + "≒": { "codepoints": [8786], "characters": "\u2252" }, + "𝔢": { "codepoints": [120098], "characters": "\uD835\uDD22" }, + "⪚": { "codepoints": [10906], "characters": "\u2A9A" }, + "è": { "codepoints": [232], "characters": "\u00E8" }, + "è": { "codepoints": [232], "characters": "\u00E8" }, + "⪖": { "codepoints": [10902], "characters": "\u2A96" }, + "⪘": { "codepoints": [10904], "characters": "\u2A98" }, + "⪙": { "codepoints": [10905], "characters": "\u2A99" }, + "⏧": { "codepoints": [9191], "characters": "\u23E7" }, + "ℓ": { "codepoints": [8467], "characters": "\u2113" }, + "⪕": { "codepoints": [10901], "characters": "\u2A95" }, + "⪗": { "codepoints": [10903], "characters": "\u2A97" }, + "ē": { "codepoints": [275], "characters": "\u0113" }, + "∅": { "codepoints": [8709], "characters": "\u2205" }, + "∅": { "codepoints": [8709], "characters": "\u2205" }, + "∅": { "codepoints": [8709], "characters": "\u2205" }, + " ": { "codepoints": [8196], "characters": "\u2004" }, + " ": { "codepoints": [8197], "characters": "\u2005" }, + " ": { "codepoints": [8195], "characters": "\u2003" }, + "ŋ": { "codepoints": [331], "characters": "\u014B" }, + " ": { "codepoints": [8194], "characters": "\u2002" }, + "ę": { "codepoints": [281], "characters": "\u0119" }, + "𝕖": { "codepoints": [120150], "characters": "\uD835\uDD56" }, + "⋕": { "codepoints": [8917], "characters": "\u22D5" }, + "⧣": { "codepoints": [10723], "characters": "\u29E3" }, + "⩱": { "codepoints": [10865], "characters": "\u2A71" }, + "ε": { "codepoints": [949], "characters": "\u03B5" }, + "ε": { "codepoints": [949], "characters": "\u03B5" }, + "ϵ": { "codepoints": [1013], "characters": "\u03F5" }, + "≖": { "codepoints": [8790], "characters": "\u2256" }, + "≕": { "codepoints": [8789], "characters": "\u2255" }, + "≂": { "codepoints": [8770], "characters": "\u2242" }, + "⪖": { "codepoints": [10902], "characters": "\u2A96" }, + "⪕": { "codepoints": [10901], "characters": "\u2A95" }, + "=": { "codepoints": [61], "characters": "\u003D" }, + "≟": { "codepoints": [8799], "characters": "\u225F" }, + "≡": { "codepoints": [8801], "characters": "\u2261" }, + "⩸": { "codepoints": [10872], "characters": "\u2A78" }, + "⧥": { "codepoints": [10725], "characters": "\u29E5" }, + "≓": { "codepoints": [8787], "characters": "\u2253" }, + "⥱": { "codepoints": [10609], "characters": "\u2971" }, + "ℯ": { "codepoints": [8495], "characters": "\u212F" }, + "≐": { "codepoints": [8784], "characters": "\u2250" }, + "≂": { "codepoints": [8770], "characters": "\u2242" }, + "η": { "codepoints": [951], "characters": "\u03B7" }, + "ð": { "codepoints": [240], "characters": "\u00F0" }, + "ð": { "codepoints": [240], "characters": "\u00F0" }, + "ë": { "codepoints": [235], "characters": "\u00EB" }, + "ë": { "codepoints": [235], "characters": "\u00EB" }, + "€": { "codepoints": [8364], "characters": "\u20AC" }, + "!": { "codepoints": [33], "characters": "\u0021" }, + "∃": { "codepoints": [8707], "characters": "\u2203" }, + "ℰ": { "codepoints": [8496], "characters": "\u2130" }, + "ⅇ": { "codepoints": [8519], "characters": "\u2147" }, + "≒": { "codepoints": [8786], "characters": "\u2252" }, + "ф": { "codepoints": [1092], "characters": "\u0444" }, + "♀": { "codepoints": [9792], "characters": "\u2640" }, + "ffi": { "codepoints": [64259], "characters": "\uFB03" }, + "ff": { "codepoints": [64256], "characters": "\uFB00" }, + "ffl": { "codepoints": [64260], "characters": "\uFB04" }, + "𝔣": { "codepoints": [120099], "characters": "\uD835\uDD23" }, + "fi": { "codepoints": [64257], "characters": "\uFB01" }, + "fj": { "codepoints": [102, 106], "characters": "\u0066\u006A" }, + "♭": { "codepoints": [9837], "characters": "\u266D" }, + "fl": { "codepoints": [64258], "characters": "\uFB02" }, + "▱": { "codepoints": [9649], "characters": "\u25B1" }, + "ƒ": { "codepoints": [402], "characters": "\u0192" }, + "𝕗": { "codepoints": [120151], "characters": "\uD835\uDD57" }, + "∀": { "codepoints": [8704], "characters": "\u2200" }, + "⋔": { "codepoints": [8916], "characters": "\u22D4" }, + "⫙": { "codepoints": [10969], "characters": "\u2AD9" }, + "⨍": { "codepoints": [10765], "characters": "\u2A0D" }, + "½": { "codepoints": [189], "characters": "\u00BD" }, + "½": { "codepoints": [189], "characters": "\u00BD" }, + "⅓": { "codepoints": [8531], "characters": "\u2153" }, + "¼": { "codepoints": [188], "characters": "\u00BC" }, + "¼": { "codepoints": [188], "characters": "\u00BC" }, + "⅕": { "codepoints": [8533], "characters": "\u2155" }, + "⅙": { "codepoints": [8537], "characters": "\u2159" }, + "⅛": { "codepoints": [8539], "characters": "\u215B" }, + "⅔": { "codepoints": [8532], "characters": "\u2154" }, + "⅖": { "codepoints": [8534], "characters": "\u2156" }, + "¾": { "codepoints": [190], "characters": "\u00BE" }, + "¾": { "codepoints": [190], "characters": "\u00BE" }, + "⅗": { "codepoints": [8535], "characters": "\u2157" }, + "⅜": { "codepoints": [8540], "characters": "\u215C" }, + "⅘": { "codepoints": [8536], "characters": "\u2158" }, + "⅚": { "codepoints": [8538], "characters": "\u215A" }, + "⅝": { "codepoints": [8541], "characters": "\u215D" }, + "⅞": { "codepoints": [8542], "characters": "\u215E" }, + "⁄": { "codepoints": [8260], "characters": "\u2044" }, + "⌢": { "codepoints": [8994], "characters": "\u2322" }, + "𝒻": { "codepoints": [119995], "characters": "\uD835\uDCBB" }, + "≧": { "codepoints": [8807], "characters": "\u2267" }, + "⪌": { "codepoints": [10892], "characters": "\u2A8C" }, + "ǵ": { "codepoints": [501], "characters": "\u01F5" }, + "γ": { "codepoints": [947], "characters": "\u03B3" }, + "ϝ": { "codepoints": [989], "characters": "\u03DD" }, + "⪆": { "codepoints": [10886], "characters": "\u2A86" }, + "ğ": { "codepoints": [287], "characters": "\u011F" }, + "ĝ": { "codepoints": [285], "characters": "\u011D" }, + "г": { "codepoints": [1075], "characters": "\u0433" }, + "ġ": { "codepoints": [289], "characters": "\u0121" }, + "≥": { "codepoints": [8805], "characters": "\u2265" }, + "⋛": { "codepoints": [8923], "characters": "\u22DB" }, + "≥": { "codepoints": [8805], "characters": "\u2265" }, + "≧": { "codepoints": [8807], "characters": "\u2267" }, + "⩾": { "codepoints": [10878], "characters": "\u2A7E" }, + "⩾": { "codepoints": [10878], "characters": "\u2A7E" }, + "⪩": { "codepoints": [10921], "characters": "\u2AA9" }, + "⪀": { "codepoints": [10880], "characters": "\u2A80" }, + "⪂": { "codepoints": [10882], "characters": "\u2A82" }, + "⪄": { "codepoints": [10884], "characters": "\u2A84" }, + "⋛︀": { "codepoints": [8923, 65024], "characters": "\u22DB\uFE00" }, + "⪔": { "codepoints": [10900], "characters": "\u2A94" }, + "𝔤": { "codepoints": [120100], "characters": "\uD835\uDD24" }, + "≫": { "codepoints": [8811], "characters": "\u226B" }, + "⋙": { "codepoints": [8921], "characters": "\u22D9" }, + "ℷ": { "codepoints": [8503], "characters": "\u2137" }, + "ѓ": { "codepoints": [1107], "characters": "\u0453" }, + "≷": { "codepoints": [8823], "characters": "\u2277" }, + "⪒": { "codepoints": [10898], "characters": "\u2A92" }, + "⪥": { "codepoints": [10917], "characters": "\u2AA5" }, + "⪤": { "codepoints": [10916], "characters": "\u2AA4" }, + "≩": { "codepoints": [8809], "characters": "\u2269" }, + "⪊": { "codepoints": [10890], "characters": "\u2A8A" }, + "⪊": { "codepoints": [10890], "characters": "\u2A8A" }, + "⪈": { "codepoints": [10888], "characters": "\u2A88" }, + "⪈": { "codepoints": [10888], "characters": "\u2A88" }, + "≩": { "codepoints": [8809], "characters": "\u2269" }, + "⋧": { "codepoints": [8935], "characters": "\u22E7" }, + "𝕘": { "codepoints": [120152], "characters": "\uD835\uDD58" }, + "`": { "codepoints": [96], "characters": "\u0060" }, + "ℊ": { "codepoints": [8458], "characters": "\u210A" }, + "≳": { "codepoints": [8819], "characters": "\u2273" }, + "⪎": { "codepoints": [10894], "characters": "\u2A8E" }, + "⪐": { "codepoints": [10896], "characters": "\u2A90" }, + ">": { "codepoints": [62], "characters": "\u003E" }, + ">": { "codepoints": [62], "characters": "\u003E" }, + "⪧": { "codepoints": [10919], "characters": "\u2AA7" }, + "⩺": { "codepoints": [10874], "characters": "\u2A7A" }, + "⋗": { "codepoints": [8919], "characters": "\u22D7" }, + "⦕": { "codepoints": [10645], "characters": "\u2995" }, + "⩼": { "codepoints": [10876], "characters": "\u2A7C" }, + "⪆": { "codepoints": [10886], "characters": "\u2A86" }, + "⥸": { "codepoints": [10616], "characters": "\u2978" }, + "⋗": { "codepoints": [8919], "characters": "\u22D7" }, + "⋛": { "codepoints": [8923], "characters": "\u22DB" }, + "⪌": { "codepoints": [10892], "characters": "\u2A8C" }, + "≷": { "codepoints": [8823], "characters": "\u2277" }, + "≳": { "codepoints": [8819], "characters": "\u2273" }, + "≩︀": { "codepoints": [8809, 65024], "characters": "\u2269\uFE00" }, + "≩︀": { "codepoints": [8809, 65024], "characters": "\u2269\uFE00" }, + "⇔": { "codepoints": [8660], "characters": "\u21D4" }, + " ": { "codepoints": [8202], "characters": "\u200A" }, + "½": { "codepoints": [189], "characters": "\u00BD" }, + "ℋ": { "codepoints": [8459], "characters": "\u210B" }, + "ъ": { "codepoints": [1098], "characters": "\u044A" }, + "↔": { "codepoints": [8596], "characters": "\u2194" }, + "⥈": { "codepoints": [10568], "characters": "\u2948" }, + "↭": { "codepoints": [8621], "characters": "\u21AD" }, + "ℏ": { "codepoints": [8463], "characters": "\u210F" }, + "ĥ": { "codepoints": [293], "characters": "\u0125" }, + "♥": { "codepoints": [9829], "characters": "\u2665" }, + "♥": { "codepoints": [9829], "characters": "\u2665" }, + "…": { "codepoints": [8230], "characters": "\u2026" }, + "⊹": { "codepoints": [8889], "characters": "\u22B9" }, + "𝔥": { "codepoints": [120101], "characters": "\uD835\uDD25" }, + "⤥": { "codepoints": [10533], "characters": "\u2925" }, + "⤦": { "codepoints": [10534], "characters": "\u2926" }, + "⇿": { "codepoints": [8703], "characters": "\u21FF" }, + "∻": { "codepoints": [8763], "characters": "\u223B" }, + "↩": { "codepoints": [8617], "characters": "\u21A9" }, + "↪": { "codepoints": [8618], "characters": "\u21AA" }, + "𝕙": { "codepoints": [120153], "characters": "\uD835\uDD59" }, + "―": { "codepoints": [8213], "characters": "\u2015" }, + "𝒽": { "codepoints": [119997], "characters": "\uD835\uDCBD" }, + "ℏ": { "codepoints": [8463], "characters": "\u210F" }, + "ħ": { "codepoints": [295], "characters": "\u0127" }, + "⁃": { "codepoints": [8259], "characters": "\u2043" }, + "‐": { "codepoints": [8208], "characters": "\u2010" }, + "í": { "codepoints": [237], "characters": "\u00ED" }, + "í": { "codepoints": [237], "characters": "\u00ED" }, + "⁣": { "codepoints": [8291], "characters": "\u2063" }, + "î": { "codepoints": [238], "characters": "\u00EE" }, + "î": { "codepoints": [238], "characters": "\u00EE" }, + "и": { "codepoints": [1080], "characters": "\u0438" }, + "е": { "codepoints": [1077], "characters": "\u0435" }, + "¡": { "codepoints": [161], "characters": "\u00A1" }, + "¡": { "codepoints": [161], "characters": "\u00A1" }, + "⇔": { "codepoints": [8660], "characters": "\u21D4" }, + "𝔦": { "codepoints": [120102], "characters": "\uD835\uDD26" }, + "ì": { "codepoints": [236], "characters": "\u00EC" }, + "ì": { "codepoints": [236], "characters": "\u00EC" }, + "ⅈ": { "codepoints": [8520], "characters": "\u2148" }, + "⨌": { "codepoints": [10764], "characters": "\u2A0C" }, + "∭": { "codepoints": [8749], "characters": "\u222D" }, + "⧜": { "codepoints": [10716], "characters": "\u29DC" }, + "℩": { "codepoints": [8489], "characters": "\u2129" }, + "ij": { "codepoints": [307], "characters": "\u0133" }, + "ī": { "codepoints": [299], "characters": "\u012B" }, + "ℑ": { "codepoints": [8465], "characters": "\u2111" }, + "ℐ": { "codepoints": [8464], "characters": "\u2110" }, + "ℑ": { "codepoints": [8465], "characters": "\u2111" }, + "ı": { "codepoints": [305], "characters": "\u0131" }, + "⊷": { "codepoints": [8887], "characters": "\u22B7" }, + "Ƶ": { "codepoints": [437], "characters": "\u01B5" }, + "∈": { "codepoints": [8712], "characters": "\u2208" }, + "℅": { "codepoints": [8453], "characters": "\u2105" }, + "∞": { "codepoints": [8734], "characters": "\u221E" }, + "⧝": { "codepoints": [10717], "characters": "\u29DD" }, + "ı": { "codepoints": [305], "characters": "\u0131" }, + "∫": { "codepoints": [8747], "characters": "\u222B" }, + "⊺": { "codepoints": [8890], "characters": "\u22BA" }, + "ℤ": { "codepoints": [8484], "characters": "\u2124" }, + "⊺": { "codepoints": [8890], "characters": "\u22BA" }, + "⨗": { "codepoints": [10775], "characters": "\u2A17" }, + "⨼": { "codepoints": [10812], "characters": "\u2A3C" }, + "ё": { "codepoints": [1105], "characters": "\u0451" }, + "į": { "codepoints": [303], "characters": "\u012F" }, + "𝕚": { "codepoints": [120154], "characters": "\uD835\uDD5A" }, + "ι": { "codepoints": [953], "characters": "\u03B9" }, + "⨼": { "codepoints": [10812], "characters": "\u2A3C" }, + "¿": { "codepoints": [191], "characters": "\u00BF" }, + "¿": { "codepoints": [191], "characters": "\u00BF" }, + "𝒾": { "codepoints": [119998], "characters": "\uD835\uDCBE" }, + "∈": { "codepoints": [8712], "characters": "\u2208" }, + "⋹": { "codepoints": [8953], "characters": "\u22F9" }, + "⋵": { "codepoints": [8949], "characters": "\u22F5" }, + "⋴": { "codepoints": [8948], "characters": "\u22F4" }, + "⋳": { "codepoints": [8947], "characters": "\u22F3" }, + "∈": { "codepoints": [8712], "characters": "\u2208" }, + "⁢": { "codepoints": [8290], "characters": "\u2062" }, + "ĩ": { "codepoints": [297], "characters": "\u0129" }, + "і": { "codepoints": [1110], "characters": "\u0456" }, + "ï": { "codepoints": [239], "characters": "\u00EF" }, + "ï": { "codepoints": [239], "characters": "\u00EF" }, + "ĵ": { "codepoints": [309], "characters": "\u0135" }, + "й": { "codepoints": [1081], "characters": "\u0439" }, + "𝔧": { "codepoints": [120103], "characters": "\uD835\uDD27" }, + "ȷ": { "codepoints": [567], "characters": "\u0237" }, + "𝕛": { "codepoints": [120155], "characters": "\uD835\uDD5B" }, + "𝒿": { "codepoints": [119999], "characters": "\uD835\uDCBF" }, + "ј": { "codepoints": [1112], "characters": "\u0458" }, + "є": { "codepoints": [1108], "characters": "\u0454" }, + "κ": { "codepoints": [954], "characters": "\u03BA" }, + "ϰ": { "codepoints": [1008], "characters": "\u03F0" }, + "ķ": { "codepoints": [311], "characters": "\u0137" }, + "к": { "codepoints": [1082], "characters": "\u043A" }, + "𝔨": { "codepoints": [120104], "characters": "\uD835\uDD28" }, + "ĸ": { "codepoints": [312], "characters": "\u0138" }, + "х": { "codepoints": [1093], "characters": "\u0445" }, + "ќ": { "codepoints": [1116], "characters": "\u045C" }, + "𝕜": { "codepoints": [120156], "characters": "\uD835\uDD5C" }, + "𝓀": { "codepoints": [120000], "characters": "\uD835\uDCC0" }, + "⇚": { "codepoints": [8666], "characters": "\u21DA" }, + "⇐": { "codepoints": [8656], "characters": "\u21D0" }, + "⤛": { "codepoints": [10523], "characters": "\u291B" }, + "⤎": { "codepoints": [10510], "characters": "\u290E" }, + "≦": { "codepoints": [8806], "characters": "\u2266" }, + "⪋": { "codepoints": [10891], "characters": "\u2A8B" }, + "⥢": { "codepoints": [10594], "characters": "\u2962" }, + "ĺ": { "codepoints": [314], "characters": "\u013A" }, + "⦴": { "codepoints": [10676], "characters": "\u29B4" }, + "ℒ": { "codepoints": [8466], "characters": "\u2112" }, + "λ": { "codepoints": [955], "characters": "\u03BB" }, + "⟨": { "codepoints": [10216], "characters": "\u27E8" }, + "⦑": { "codepoints": [10641], "characters": "\u2991" }, + "⟨": { "codepoints": [10216], "characters": "\u27E8" }, + "⪅": { "codepoints": [10885], "characters": "\u2A85" }, + "«": { "codepoints": [171], "characters": "\u00AB" }, + "«": { "codepoints": [171], "characters": "\u00AB" }, + "←": { "codepoints": [8592], "characters": "\u2190" }, + "⇤": { "codepoints": [8676], "characters": "\u21E4" }, + "⤟": { "codepoints": [10527], "characters": "\u291F" }, + "⤝": { "codepoints": [10525], "characters": "\u291D" }, + "↩": { "codepoints": [8617], "characters": "\u21A9" }, + "↫": { "codepoints": [8619], "characters": "\u21AB" }, + "⤹": { "codepoints": [10553], "characters": "\u2939" }, + "⥳": { "codepoints": [10611], "characters": "\u2973" }, + "↢": { "codepoints": [8610], "characters": "\u21A2" }, + "⪫": { "codepoints": [10923], "characters": "\u2AAB" }, + "⤙": { "codepoints": [10521], "characters": "\u2919" }, + "⪭": { "codepoints": [10925], "characters": "\u2AAD" }, + "⪭︀": { "codepoints": [10925, 65024], "characters": "\u2AAD\uFE00" }, + "⤌": { "codepoints": [10508], "characters": "\u290C" }, + "❲": { "codepoints": [10098], "characters": "\u2772" }, + "{": { "codepoints": [123], "characters": "\u007B" }, + "[": { "codepoints": [91], "characters": "\u005B" }, + "⦋": { "codepoints": [10635], "characters": "\u298B" }, + "⦏": { "codepoints": [10639], "characters": "\u298F" }, + "⦍": { "codepoints": [10637], "characters": "\u298D" }, + "ľ": { "codepoints": [318], "characters": "\u013E" }, + "ļ": { "codepoints": [316], "characters": "\u013C" }, + "⌈": { "codepoints": [8968], "characters": "\u2308" }, + "{": { "codepoints": [123], "characters": "\u007B" }, + "л": { "codepoints": [1083], "characters": "\u043B" }, + "⤶": { "codepoints": [10550], "characters": "\u2936" }, + "“": { "codepoints": [8220], "characters": "\u201C" }, + "„": { "codepoints": [8222], "characters": "\u201E" }, + "⥧": { "codepoints": [10599], "characters": "\u2967" }, + "⥋": { "codepoints": [10571], "characters": "\u294B" }, + "↲": { "codepoints": [8626], "characters": "\u21B2" }, + "≤": { "codepoints": [8804], "characters": "\u2264" }, + "←": { "codepoints": [8592], "characters": "\u2190" }, + "↢": { "codepoints": [8610], "characters": "\u21A2" }, + "↽": { "codepoints": [8637], "characters": "\u21BD" }, + "↼": { "codepoints": [8636], "characters": "\u21BC" }, + "⇇": { "codepoints": [8647], "characters": "\u21C7" }, + "↔": { "codepoints": [8596], "characters": "\u2194" }, + "⇆": { "codepoints": [8646], "characters": "\u21C6" }, + "⇋": { "codepoints": [8651], "characters": "\u21CB" }, + "↭": { "codepoints": [8621], "characters": "\u21AD" }, + "⋋": { "codepoints": [8907], "characters": "\u22CB" }, + "⋚": { "codepoints": [8922], "characters": "\u22DA" }, + "≤": { "codepoints": [8804], "characters": "\u2264" }, + "≦": { "codepoints": [8806], "characters": "\u2266" }, + "⩽": { "codepoints": [10877], "characters": "\u2A7D" }, + "⩽": { "codepoints": [10877], "characters": "\u2A7D" }, + "⪨": { "codepoints": [10920], "characters": "\u2AA8" }, + "⩿": { "codepoints": [10879], "characters": "\u2A7F" }, + "⪁": { "codepoints": [10881], "characters": "\u2A81" }, + "⪃": { "codepoints": [10883], "characters": "\u2A83" }, + "⋚︀": { "codepoints": [8922, 65024], "characters": "\u22DA\uFE00" }, + "⪓": { "codepoints": [10899], "characters": "\u2A93" }, + "⪅": { "codepoints": [10885], "characters": "\u2A85" }, + "⋖": { "codepoints": [8918], "characters": "\u22D6" }, + "⋚": { "codepoints": [8922], "characters": "\u22DA" }, + "⪋": { "codepoints": [10891], "characters": "\u2A8B" }, + "≶": { "codepoints": [8822], "characters": "\u2276" }, + "≲": { "codepoints": [8818], "characters": "\u2272" }, + "⥼": { "codepoints": [10620], "characters": "\u297C" }, + "⌊": { "codepoints": [8970], "characters": "\u230A" }, + "𝔩": { "codepoints": [120105], "characters": "\uD835\uDD29" }, + "≶": { "codepoints": [8822], "characters": "\u2276" }, + "⪑": { "codepoints": [10897], "characters": "\u2A91" }, + "↽": { "codepoints": [8637], "characters": "\u21BD" }, + "↼": { "codepoints": [8636], "characters": "\u21BC" }, + "⥪": { "codepoints": [10602], "characters": "\u296A" }, + "▄": { "codepoints": [9604], "characters": "\u2584" }, + "љ": { "codepoints": [1113], "characters": "\u0459" }, + "≪": { "codepoints": [8810], "characters": "\u226A" }, + "⇇": { "codepoints": [8647], "characters": "\u21C7" }, + "⌞": { "codepoints": [8990], "characters": "\u231E" }, + "⥫": { "codepoints": [10603], "characters": "\u296B" }, + "◺": { "codepoints": [9722], "characters": "\u25FA" }, + "ŀ": { "codepoints": [320], "characters": "\u0140" }, + "⎰": { "codepoints": [9136], "characters": "\u23B0" }, + "⎰": { "codepoints": [9136], "characters": "\u23B0" }, + "≨": { "codepoints": [8808], "characters": "\u2268" }, + "⪉": { "codepoints": [10889], "characters": "\u2A89" }, + "⪉": { "codepoints": [10889], "characters": "\u2A89" }, + "⪇": { "codepoints": [10887], "characters": "\u2A87" }, + "⪇": { "codepoints": [10887], "characters": "\u2A87" }, + "≨": { "codepoints": [8808], "characters": "\u2268" }, + "⋦": { "codepoints": [8934], "characters": "\u22E6" }, + "⟬": { "codepoints": [10220], "characters": "\u27EC" }, + "⇽": { "codepoints": [8701], "characters": "\u21FD" }, + "⟦": { "codepoints": [10214], "characters": "\u27E6" }, + "⟵": { "codepoints": [10229], "characters": "\u27F5" }, + "⟷": { "codepoints": [10231], "characters": "\u27F7" }, + "⟼": { "codepoints": [10236], "characters": "\u27FC" }, + "⟶": { "codepoints": [10230], "characters": "\u27F6" }, + "↫": { "codepoints": [8619], "characters": "\u21AB" }, + "↬": { "codepoints": [8620], "characters": "\u21AC" }, + "⦅": { "codepoints": [10629], "characters": "\u2985" }, + "𝕝": { "codepoints": [120157], "characters": "\uD835\uDD5D" }, + "⨭": { "codepoints": [10797], "characters": "\u2A2D" }, + "⨴": { "codepoints": [10804], "characters": "\u2A34" }, + "∗": { "codepoints": [8727], "characters": "\u2217" }, + "_": { "codepoints": [95], "characters": "\u005F" }, + "◊": { "codepoints": [9674], "characters": "\u25CA" }, + "◊": { "codepoints": [9674], "characters": "\u25CA" }, + "⧫": { "codepoints": [10731], "characters": "\u29EB" }, + "(": { "codepoints": [40], "characters": "\u0028" }, + "⦓": { "codepoints": [10643], "characters": "\u2993" }, + "⇆": { "codepoints": [8646], "characters": "\u21C6" }, + "⌟": { "codepoints": [8991], "characters": "\u231F" }, + "⇋": { "codepoints": [8651], "characters": "\u21CB" }, + "⥭": { "codepoints": [10605], "characters": "\u296D" }, + "‎": { "codepoints": [8206], "characters": "\u200E" }, + "⊿": { "codepoints": [8895], "characters": "\u22BF" }, + "‹": { "codepoints": [8249], "characters": "\u2039" }, + "𝓁": { "codepoints": [120001], "characters": "\uD835\uDCC1" }, + "↰": { "codepoints": [8624], "characters": "\u21B0" }, + "≲": { "codepoints": [8818], "characters": "\u2272" }, + "⪍": { "codepoints": [10893], "characters": "\u2A8D" }, + "⪏": { "codepoints": [10895], "characters": "\u2A8F" }, + "[": { "codepoints": [91], "characters": "\u005B" }, + "‘": { "codepoints": [8216], "characters": "\u2018" }, + "‚": { "codepoints": [8218], "characters": "\u201A" }, + "ł": { "codepoints": [322], "characters": "\u0142" }, + "<": { "codepoints": [60], "characters": "\u003C" }, + "<": { "codepoints": [60], "characters": "\u003C" }, + "⪦": { "codepoints": [10918], "characters": "\u2AA6" }, + "⩹": { "codepoints": [10873], "characters": "\u2A79" }, + "⋖": { "codepoints": [8918], "characters": "\u22D6" }, + "⋋": { "codepoints": [8907], "characters": "\u22CB" }, + "⋉": { "codepoints": [8905], "characters": "\u22C9" }, + "⥶": { "codepoints": [10614], "characters": "\u2976" }, + "⩻": { "codepoints": [10875], "characters": "\u2A7B" }, + "⦖": { "codepoints": [10646], "characters": "\u2996" }, + "◃": { "codepoints": [9667], "characters": "\u25C3" }, + "⊴": { "codepoints": [8884], "characters": "\u22B4" }, + "◂": { "codepoints": [9666], "characters": "\u25C2" }, + "⥊": { "codepoints": [10570], "characters": "\u294A" }, + "⥦": { "codepoints": [10598], "characters": "\u2966" }, + "≨︀": { "codepoints": [8808, 65024], "characters": "\u2268\uFE00" }, + "≨︀": { "codepoints": [8808, 65024], "characters": "\u2268\uFE00" }, + "∺": { "codepoints": [8762], "characters": "\u223A" }, + "¯": { "codepoints": [175], "characters": "\u00AF" }, + "¯": { "codepoints": [175], "characters": "\u00AF" }, + "♂": { "codepoints": [9794], "characters": "\u2642" }, + "✠": { "codepoints": [10016], "characters": "\u2720" }, + "✠": { "codepoints": [10016], "characters": "\u2720" }, + "↦": { "codepoints": [8614], "characters": "\u21A6" }, + "↦": { "codepoints": [8614], "characters": "\u21A6" }, + "↧": { "codepoints": [8615], "characters": "\u21A7" }, + "↤": { "codepoints": [8612], "characters": "\u21A4" }, + "↥": { "codepoints": [8613], "characters": "\u21A5" }, + "▮": { "codepoints": [9646], "characters": "\u25AE" }, + "⨩": { "codepoints": [10793], "characters": "\u2A29" }, + "м": { "codepoints": [1084], "characters": "\u043C" }, + "—": { "codepoints": [8212], "characters": "\u2014" }, + "∡": { "codepoints": [8737], "characters": "\u2221" }, + "𝔪": { "codepoints": [120106], "characters": "\uD835\uDD2A" }, + "℧": { "codepoints": [8487], "characters": "\u2127" }, + "µ": { "codepoints": [181], "characters": "\u00B5" }, + "µ": { "codepoints": [181], "characters": "\u00B5" }, + "∣": { "codepoints": [8739], "characters": "\u2223" }, + "*": { "codepoints": [42], "characters": "\u002A" }, + "⫰": { "codepoints": [10992], "characters": "\u2AF0" }, + "·": { "codepoints": [183], "characters": "\u00B7" }, + "·": { "codepoints": [183], "characters": "\u00B7" }, + "−": { "codepoints": [8722], "characters": "\u2212" }, + "⊟": { "codepoints": [8863], "characters": "\u229F" }, + "∸": { "codepoints": [8760], "characters": "\u2238" }, + "⨪": { "codepoints": [10794], "characters": "\u2A2A" }, + "⫛": { "codepoints": [10971], "characters": "\u2ADB" }, + "…": { "codepoints": [8230], "characters": "\u2026" }, + "∓": { "codepoints": [8723], "characters": "\u2213" }, + "⊧": { "codepoints": [8871], "characters": "\u22A7" }, + "𝕞": { "codepoints": [120158], "characters": "\uD835\uDD5E" }, + "∓": { "codepoints": [8723], "characters": "\u2213" }, + "𝓂": { "codepoints": [120002], "characters": "\uD835\uDCC2" }, + "∾": { "codepoints": [8766], "characters": "\u223E" }, + "μ": { "codepoints": [956], "characters": "\u03BC" }, + "⊸": { "codepoints": [8888], "characters": "\u22B8" }, + "⊸": { "codepoints": [8888], "characters": "\u22B8" }, + "⋙̸": { "codepoints": [8921, 824], "characters": "\u22D9\u0338" }, + "≫⃒": { "codepoints": [8811, 8402], "characters": "\u226B\u20D2" }, + "≫̸": { "codepoints": [8811, 824], "characters": "\u226B\u0338" }, + "⇍": { "codepoints": [8653], "characters": "\u21CD" }, + "⇎": { "codepoints": [8654], "characters": "\u21CE" }, + "⋘̸": { "codepoints": [8920, 824], "characters": "\u22D8\u0338" }, + "≪⃒": { "codepoints": [8810, 8402], "characters": "\u226A\u20D2" }, + "≪̸": { "codepoints": [8810, 824], "characters": "\u226A\u0338" }, + "⇏": { "codepoints": [8655], "characters": "\u21CF" }, + "⊯": { "codepoints": [8879], "characters": "\u22AF" }, + "⊮": { "codepoints": [8878], "characters": "\u22AE" }, + "∇": { "codepoints": [8711], "characters": "\u2207" }, + "ń": { "codepoints": [324], "characters": "\u0144" }, + "∠⃒": { "codepoints": [8736, 8402], "characters": "\u2220\u20D2" }, + "≉": { "codepoints": [8777], "characters": "\u2249" }, + "⩰̸": { "codepoints": [10864, 824], "characters": "\u2A70\u0338" }, + "≋̸": { "codepoints": [8779, 824], "characters": "\u224B\u0338" }, + "ʼn": { "codepoints": [329], "characters": "\u0149" }, + "≉": { "codepoints": [8777], "characters": "\u2249" }, + "♮": { "codepoints": [9838], "characters": "\u266E" }, + "♮": { "codepoints": [9838], "characters": "\u266E" }, + "ℕ": { "codepoints": [8469], "characters": "\u2115" }, + " ": { "codepoints": [160], "characters": "\u00A0" }, + " ": { "codepoints": [160], "characters": "\u00A0" }, + "≎̸": { "codepoints": [8782, 824], "characters": "\u224E\u0338" }, + "≏̸": { "codepoints": [8783, 824], "characters": "\u224F\u0338" }, + "⩃": { "codepoints": [10819], "characters": "\u2A43" }, + "ň": { "codepoints": [328], "characters": "\u0148" }, + "ņ": { "codepoints": [326], "characters": "\u0146" }, + "≇": { "codepoints": [8775], "characters": "\u2247" }, + "⩭̸": { "codepoints": [10861, 824], "characters": "\u2A6D\u0338" }, + "⩂": { "codepoints": [10818], "characters": "\u2A42" }, + "н": { "codepoints": [1085], "characters": "\u043D" }, + "–": { "codepoints": [8211], "characters": "\u2013" }, + "≠": { "codepoints": [8800], "characters": "\u2260" }, + "⇗": { "codepoints": [8663], "characters": "\u21D7" }, + "⤤": { "codepoints": [10532], "characters": "\u2924" }, + "↗": { "codepoints": [8599], "characters": "\u2197" }, + "↗": { "codepoints": [8599], "characters": "\u2197" }, + "≐̸": { "codepoints": [8784, 824], "characters": "\u2250\u0338" }, + "≢": { "codepoints": [8802], "characters": "\u2262" }, + "⤨": { "codepoints": [10536], "characters": "\u2928" }, + "≂̸": { "codepoints": [8770, 824], "characters": "\u2242\u0338" }, + "∄": { "codepoints": [8708], "characters": "\u2204" }, + "∄": { "codepoints": [8708], "characters": "\u2204" }, + "𝔫": { "codepoints": [120107], "characters": "\uD835\uDD2B" }, + "≧̸": { "codepoints": [8807, 824], "characters": "\u2267\u0338" }, + "≱": { "codepoints": [8817], "characters": "\u2271" }, + "≱": { "codepoints": [8817], "characters": "\u2271" }, + "≧̸": { "codepoints": [8807, 824], "characters": "\u2267\u0338" }, + "⩾̸": { "codepoints": [10878, 824], "characters": "\u2A7E\u0338" }, + "⩾̸": { "codepoints": [10878, 824], "characters": "\u2A7E\u0338" }, + "≵": { "codepoints": [8821], "characters": "\u2275" }, + "≯": { "codepoints": [8815], "characters": "\u226F" }, + "≯": { "codepoints": [8815], "characters": "\u226F" }, + "⇎": { "codepoints": [8654], "characters": "\u21CE" }, + "↮": { "codepoints": [8622], "characters": "\u21AE" }, + "⫲": { "codepoints": [10994], "characters": "\u2AF2" }, + "∋": { "codepoints": [8715], "characters": "\u220B" }, + "⋼": { "codepoints": [8956], "characters": "\u22FC" }, + "⋺": { "codepoints": [8954], "characters": "\u22FA" }, + "∋": { "codepoints": [8715], "characters": "\u220B" }, + "њ": { "codepoints": [1114], "characters": "\u045A" }, + "⇍": { "codepoints": [8653], "characters": "\u21CD" }, + "≦̸": { "codepoints": [8806, 824], "characters": "\u2266\u0338" }, + "↚": { "codepoints": [8602], "characters": "\u219A" }, + "‥": { "codepoints": [8229], "characters": "\u2025" }, + "≰": { "codepoints": [8816], "characters": "\u2270" }, + "↚": { "codepoints": [8602], "characters": "\u219A" }, + "↮": { "codepoints": [8622], "characters": "\u21AE" }, + "≰": { "codepoints": [8816], "characters": "\u2270" }, + "≦̸": { "codepoints": [8806, 824], "characters": "\u2266\u0338" }, + "⩽̸": { "codepoints": [10877, 824], "characters": "\u2A7D\u0338" }, + "⩽̸": { "codepoints": [10877, 824], "characters": "\u2A7D\u0338" }, + "≮": { "codepoints": [8814], "characters": "\u226E" }, + "≴": { "codepoints": [8820], "characters": "\u2274" }, + "≮": { "codepoints": [8814], "characters": "\u226E" }, + "⋪": { "codepoints": [8938], "characters": "\u22EA" }, + "⋬": { "codepoints": [8940], "characters": "\u22EC" }, + "∤": { "codepoints": [8740], "characters": "\u2224" }, + "𝕟": { "codepoints": [120159], "characters": "\uD835\uDD5F" }, + "¬": { "codepoints": [172], "characters": "\u00AC" }, + "¬": { "codepoints": [172], "characters": "\u00AC" }, + "∉": { "codepoints": [8713], "characters": "\u2209" }, + "⋹̸": { "codepoints": [8953, 824], "characters": "\u22F9\u0338" }, + "⋵̸": { "codepoints": [8949, 824], "characters": "\u22F5\u0338" }, + "∉": { "codepoints": [8713], "characters": "\u2209" }, + "⋷": { "codepoints": [8951], "characters": "\u22F7" }, + "⋶": { "codepoints": [8950], "characters": "\u22F6" }, + "∌": { "codepoints": [8716], "characters": "\u220C" }, + "∌": { "codepoints": [8716], "characters": "\u220C" }, + "⋾": { "codepoints": [8958], "characters": "\u22FE" }, + "⋽": { "codepoints": [8957], "characters": "\u22FD" }, + "∦": { "codepoints": [8742], "characters": "\u2226" }, + "∦": { "codepoints": [8742], "characters": "\u2226" }, + "⫽⃥": { "codepoints": [11005, 8421], "characters": "\u2AFD\u20E5" }, + "∂̸": { "codepoints": [8706, 824], "characters": "\u2202\u0338" }, + "⨔": { "codepoints": [10772], "characters": "\u2A14" }, + "⊀": { "codepoints": [8832], "characters": "\u2280" }, + "⋠": { "codepoints": [8928], "characters": "\u22E0" }, + "⪯̸": { "codepoints": [10927, 824], "characters": "\u2AAF\u0338" }, + "⊀": { "codepoints": [8832], "characters": "\u2280" }, + "⪯̸": { "codepoints": [10927, 824], "characters": "\u2AAF\u0338" }, + "⇏": { "codepoints": [8655], "characters": "\u21CF" }, + "↛": { "codepoints": [8603], "characters": "\u219B" }, + "⤳̸": { "codepoints": [10547, 824], "characters": "\u2933\u0338" }, + "↝̸": { "codepoints": [8605, 824], "characters": "\u219D\u0338" }, + "↛": { "codepoints": [8603], "characters": "\u219B" }, + "⋫": { "codepoints": [8939], "characters": "\u22EB" }, + "⋭": { "codepoints": [8941], "characters": "\u22ED" }, + "⊁": { "codepoints": [8833], "characters": "\u2281" }, + "⋡": { "codepoints": [8929], "characters": "\u22E1" }, + "⪰̸": { "codepoints": [10928, 824], "characters": "\u2AB0\u0338" }, + "𝓃": { "codepoints": [120003], "characters": "\uD835\uDCC3" }, + "∤": { "codepoints": [8740], "characters": "\u2224" }, + "∦": { "codepoints": [8742], "characters": "\u2226" }, + "≁": { "codepoints": [8769], "characters": "\u2241" }, + "≄": { "codepoints": [8772], "characters": "\u2244" }, + "≄": { "codepoints": [8772], "characters": "\u2244" }, + "∤": { "codepoints": [8740], "characters": "\u2224" }, + "∦": { "codepoints": [8742], "characters": "\u2226" }, + "⋢": { "codepoints": [8930], "characters": "\u22E2" }, + "⋣": { "codepoints": [8931], "characters": "\u22E3" }, + "⊄": { "codepoints": [8836], "characters": "\u2284" }, + "⫅̸": { "codepoints": [10949, 824], "characters": "\u2AC5\u0338" }, + "⊈": { "codepoints": [8840], "characters": "\u2288" }, + "⊂⃒": { "codepoints": [8834, 8402], "characters": "\u2282\u20D2" }, + "⊈": { "codepoints": [8840], "characters": "\u2288" }, + "⫅̸": { "codepoints": [10949, 824], "characters": "\u2AC5\u0338" }, + "⊁": { "codepoints": [8833], "characters": "\u2281" }, + "⪰̸": { "codepoints": [10928, 824], "characters": "\u2AB0\u0338" }, + "⊅": { "codepoints": [8837], "characters": "\u2285" }, + "⫆̸": { "codepoints": [10950, 824], "characters": "\u2AC6\u0338" }, + "⊉": { "codepoints": [8841], "characters": "\u2289" }, + "⊃⃒": { "codepoints": [8835, 8402], "characters": "\u2283\u20D2" }, + "⊉": { "codepoints": [8841], "characters": "\u2289" }, + "⫆̸": { "codepoints": [10950, 824], "characters": "\u2AC6\u0338" }, + "≹": { "codepoints": [8825], "characters": "\u2279" }, + "ñ": { "codepoints": [241], "characters": "\u00F1" }, + "ñ": { "codepoints": [241], "characters": "\u00F1" }, + "≸": { "codepoints": [8824], "characters": "\u2278" }, + "⋪": { "codepoints": [8938], "characters": "\u22EA" }, + "⋬": { "codepoints": [8940], "characters": "\u22EC" }, + "⋫": { "codepoints": [8939], "characters": "\u22EB" }, + "⋭": { "codepoints": [8941], "characters": "\u22ED" }, + "ν": { "codepoints": [957], "characters": "\u03BD" }, + "#": { "codepoints": [35], "characters": "\u0023" }, + "№": { "codepoints": [8470], "characters": "\u2116" }, + " ": { "codepoints": [8199], "characters": "\u2007" }, + "⊭": { "codepoints": [8877], "characters": "\u22AD" }, + "⤄": { "codepoints": [10500], "characters": "\u2904" }, + "≍⃒": { "codepoints": [8781, 8402], "characters": "\u224D\u20D2" }, + "⊬": { "codepoints": [8876], "characters": "\u22AC" }, + "≥⃒": { "codepoints": [8805, 8402], "characters": "\u2265\u20D2" }, + ">⃒": { "codepoints": [62, 8402], "characters": "\u003E\u20D2" }, + "⧞": { "codepoints": [10718], "characters": "\u29DE" }, + "⤂": { "codepoints": [10498], "characters": "\u2902" }, + "≤⃒": { "codepoints": [8804, 8402], "characters": "\u2264\u20D2" }, + "<⃒": { "codepoints": [60, 8402], "characters": "\u003C\u20D2" }, + "⊴⃒": { "codepoints": [8884, 8402], "characters": "\u22B4\u20D2" }, + "⤃": { "codepoints": [10499], "characters": "\u2903" }, + "⊵⃒": { "codepoints": [8885, 8402], "characters": "\u22B5\u20D2" }, + "∼⃒": { "codepoints": [8764, 8402], "characters": "\u223C\u20D2" }, + "⇖": { "codepoints": [8662], "characters": "\u21D6" }, + "⤣": { "codepoints": [10531], "characters": "\u2923" }, + "↖": { "codepoints": [8598], "characters": "\u2196" }, + "↖": { "codepoints": [8598], "characters": "\u2196" }, + "⤧": { "codepoints": [10535], "characters": "\u2927" }, + "Ⓢ": { "codepoints": [9416], "characters": "\u24C8" }, + "ó": { "codepoints": [243], "characters": "\u00F3" }, + "ó": { "codepoints": [243], "characters": "\u00F3" }, + "⊛": { "codepoints": [8859], "characters": "\u229B" }, + "⊚": { "codepoints": [8858], "characters": "\u229A" }, + "ô": { "codepoints": [244], "characters": "\u00F4" }, + "ô": { "codepoints": [244], "characters": "\u00F4" }, + "о": { "codepoints": [1086], "characters": "\u043E" }, + "⊝": { "codepoints": [8861], "characters": "\u229D" }, + "ő": { "codepoints": [337], "characters": "\u0151" }, + "⨸": { "codepoints": [10808], "characters": "\u2A38" }, + "⊙": { "codepoints": [8857], "characters": "\u2299" }, + "⦼": { "codepoints": [10684], "characters": "\u29BC" }, + "œ": { "codepoints": [339], "characters": "\u0153" }, + "⦿": { "codepoints": [10687], "characters": "\u29BF" }, + "𝔬": { "codepoints": [120108], "characters": "\uD835\uDD2C" }, + "˛": { "codepoints": [731], "characters": "\u02DB" }, + "ò": { "codepoints": [242], "characters": "\u00F2" }, + "ò": { "codepoints": [242], "characters": "\u00F2" }, + "⧁": { "codepoints": [10689], "characters": "\u29C1" }, + "⦵": { "codepoints": [10677], "characters": "\u29B5" }, + "Ω": { "codepoints": [937], "characters": "\u03A9" }, + "∮": { "codepoints": [8750], "characters": "\u222E" }, + "↺": { "codepoints": [8634], "characters": "\u21BA" }, + "⦾": { "codepoints": [10686], "characters": "\u29BE" }, + "⦻": { "codepoints": [10683], "characters": "\u29BB" }, + "‾": { "codepoints": [8254], "characters": "\u203E" }, + "⧀": { "codepoints": [10688], "characters": "\u29C0" }, + "ō": { "codepoints": [333], "characters": "\u014D" }, + "ω": { "codepoints": [969], "characters": "\u03C9" }, + "ο": { "codepoints": [959], "characters": "\u03BF" }, + "⦶": { "codepoints": [10678], "characters": "\u29B6" }, + "⊖": { "codepoints": [8854], "characters": "\u2296" }, + "𝕠": { "codepoints": [120160], "characters": "\uD835\uDD60" }, + "⦷": { "codepoints": [10679], "characters": "\u29B7" }, + "⦹": { "codepoints": [10681], "characters": "\u29B9" }, + "⊕": { "codepoints": [8853], "characters": "\u2295" }, + "∨": { "codepoints": [8744], "characters": "\u2228" }, + "↻": { "codepoints": [8635], "characters": "\u21BB" }, + "⩝": { "codepoints": [10845], "characters": "\u2A5D" }, + "ℴ": { "codepoints": [8500], "characters": "\u2134" }, + "ℴ": { "codepoints": [8500], "characters": "\u2134" }, + "ª": { "codepoints": [170], "characters": "\u00AA" }, + "ª": { "codepoints": [170], "characters": "\u00AA" }, + "º": { "codepoints": [186], "characters": "\u00BA" }, + "º": { "codepoints": [186], "characters": "\u00BA" }, + "⊶": { "codepoints": [8886], "characters": "\u22B6" }, + "⩖": { "codepoints": [10838], "characters": "\u2A56" }, + "⩗": { "codepoints": [10839], "characters": "\u2A57" }, + "⩛": { "codepoints": [10843], "characters": "\u2A5B" }, + "ℴ": { "codepoints": [8500], "characters": "\u2134" }, + "ø": { "codepoints": [248], "characters": "\u00F8" }, + "ø": { "codepoints": [248], "characters": "\u00F8" }, + "⊘": { "codepoints": [8856], "characters": "\u2298" }, + "õ": { "codepoints": [245], "characters": "\u00F5" }, + "õ": { "codepoints": [245], "characters": "\u00F5" }, + "⊗": { "codepoints": [8855], "characters": "\u2297" }, + "⨶": { "codepoints": [10806], "characters": "\u2A36" }, + "ö": { "codepoints": [246], "characters": "\u00F6" }, + "ö": { "codepoints": [246], "characters": "\u00F6" }, + "⌽": { "codepoints": [9021], "characters": "\u233D" }, + "∥": { "codepoints": [8741], "characters": "\u2225" }, + "¶": { "codepoints": [182], "characters": "\u00B6" }, + "¶": { "codepoints": [182], "characters": "\u00B6" }, + "∥": { "codepoints": [8741], "characters": "\u2225" }, + "⫳": { "codepoints": [10995], "characters": "\u2AF3" }, + "⫽": { "codepoints": [11005], "characters": "\u2AFD" }, + "∂": { "codepoints": [8706], "characters": "\u2202" }, + "п": { "codepoints": [1087], "characters": "\u043F" }, + "%": { "codepoints": [37], "characters": "\u0025" }, + ".": { "codepoints": [46], "characters": "\u002E" }, + "‰": { "codepoints": [8240], "characters": "\u2030" }, + "⊥": { "codepoints": [8869], "characters": "\u22A5" }, + "‱": { "codepoints": [8241], "characters": "\u2031" }, + "𝔭": { "codepoints": [120109], "characters": "\uD835\uDD2D" }, + "φ": { "codepoints": [966], "characters": "\u03C6" }, + "ϕ": { "codepoints": [981], "characters": "\u03D5" }, + "ℳ": { "codepoints": [8499], "characters": "\u2133" }, + "☎": { "codepoints": [9742], "characters": "\u260E" }, + "π": { "codepoints": [960], "characters": "\u03C0" }, + "⋔": { "codepoints": [8916], "characters": "\u22D4" }, + "ϖ": { "codepoints": [982], "characters": "\u03D6" }, + "ℏ": { "codepoints": [8463], "characters": "\u210F" }, + "ℎ": { "codepoints": [8462], "characters": "\u210E" }, + "ℏ": { "codepoints": [8463], "characters": "\u210F" }, + "+": { "codepoints": [43], "characters": "\u002B" }, + "⨣": { "codepoints": [10787], "characters": "\u2A23" }, + "⊞": { "codepoints": [8862], "characters": "\u229E" }, + "⨢": { "codepoints": [10786], "characters": "\u2A22" }, + "∔": { "codepoints": [8724], "characters": "\u2214" }, + "⨥": { "codepoints": [10789], "characters": "\u2A25" }, + "⩲": { "codepoints": [10866], "characters": "\u2A72" }, + "±": { "codepoints": [177], "characters": "\u00B1" }, + "±": { "codepoints": [177], "characters": "\u00B1" }, + "⨦": { "codepoints": [10790], "characters": "\u2A26" }, + "⨧": { "codepoints": [10791], "characters": "\u2A27" }, + "±": { "codepoints": [177], "characters": "\u00B1" }, + "⨕": { "codepoints": [10773], "characters": "\u2A15" }, + "𝕡": { "codepoints": [120161], "characters": "\uD835\uDD61" }, + "£": { "codepoints": [163], "characters": "\u00A3" }, + "£": { "codepoints": [163], "characters": "\u00A3" }, + "≺": { "codepoints": [8826], "characters": "\u227A" }, + "⪳": { "codepoints": [10931], "characters": "\u2AB3" }, + "⪷": { "codepoints": [10935], "characters": "\u2AB7" }, + "≼": { "codepoints": [8828], "characters": "\u227C" }, + "⪯": { "codepoints": [10927], "characters": "\u2AAF" }, + "≺": { "codepoints": [8826], "characters": "\u227A" }, + "⪷": { "codepoints": [10935], "characters": "\u2AB7" }, + "≼": { "codepoints": [8828], "characters": "\u227C" }, + "⪯": { "codepoints": [10927], "characters": "\u2AAF" }, + "⪹": { "codepoints": [10937], "characters": "\u2AB9" }, + "⪵": { "codepoints": [10933], "characters": "\u2AB5" }, + "⋨": { "codepoints": [8936], "characters": "\u22E8" }, + "≾": { "codepoints": [8830], "characters": "\u227E" }, + "′": { "codepoints": [8242], "characters": "\u2032" }, + "ℙ": { "codepoints": [8473], "characters": "\u2119" }, + "⪵": { "codepoints": [10933], "characters": "\u2AB5" }, + "⪹": { "codepoints": [10937], "characters": "\u2AB9" }, + "⋨": { "codepoints": [8936], "characters": "\u22E8" }, + "∏": { "codepoints": [8719], "characters": "\u220F" }, + "⌮": { "codepoints": [9006], "characters": "\u232E" }, + "⌒": { "codepoints": [8978], "characters": "\u2312" }, + "⌓": { "codepoints": [8979], "characters": "\u2313" }, + "∝": { "codepoints": [8733], "characters": "\u221D" }, + "∝": { "codepoints": [8733], "characters": "\u221D" }, + "≾": { "codepoints": [8830], "characters": "\u227E" }, + "⊰": { "codepoints": [8880], "characters": "\u22B0" }, + "𝓅": { "codepoints": [120005], "characters": "\uD835\uDCC5" }, + "ψ": { "codepoints": [968], "characters": "\u03C8" }, + " ": { "codepoints": [8200], "characters": "\u2008" }, + "𝔮": { "codepoints": [120110], "characters": "\uD835\uDD2E" }, + "⨌": { "codepoints": [10764], "characters": "\u2A0C" }, + "𝕢": { "codepoints": [120162], "characters": "\uD835\uDD62" }, + "⁗": { "codepoints": [8279], "characters": "\u2057" }, + "𝓆": { "codepoints": [120006], "characters": "\uD835\uDCC6" }, + "ℍ": { "codepoints": [8461], "characters": "\u210D" }, + "⨖": { "codepoints": [10774], "characters": "\u2A16" }, + "?": { "codepoints": [63], "characters": "\u003F" }, + "≟": { "codepoints": [8799], "characters": "\u225F" }, + """: { "codepoints": [34], "characters": "\u0022" }, + """: { "codepoints": [34], "characters": "\u0022" }, + "⇛": { "codepoints": [8667], "characters": "\u21DB" }, + "⇒": { "codepoints": [8658], "characters": "\u21D2" }, + "⤜": { "codepoints": [10524], "characters": "\u291C" }, + "⤏": { "codepoints": [10511], "characters": "\u290F" }, + "⥤": { "codepoints": [10596], "characters": "\u2964" }, + "∽̱": { "codepoints": [8765, 817], "characters": "\u223D\u0331" }, + "ŕ": { "codepoints": [341], "characters": "\u0155" }, + "√": { "codepoints": [8730], "characters": "\u221A" }, + "⦳": { "codepoints": [10675], "characters": "\u29B3" }, + "⟩": { "codepoints": [10217], "characters": "\u27E9" }, + "⦒": { "codepoints": [10642], "characters": "\u2992" }, + "⦥": { "codepoints": [10661], "characters": "\u29A5" }, + "⟩": { "codepoints": [10217], "characters": "\u27E9" }, + "»": { "codepoints": [187], "characters": "\u00BB" }, + "»": { "codepoints": [187], "characters": "\u00BB" }, + "→": { "codepoints": [8594], "characters": "\u2192" }, + "⥵": { "codepoints": [10613], "characters": "\u2975" }, + "⇥": { "codepoints": [8677], "characters": "\u21E5" }, + "⤠": { "codepoints": [10528], "characters": "\u2920" }, + "⤳": { "codepoints": [10547], "characters": "\u2933" }, + "⤞": { "codepoints": [10526], "characters": "\u291E" }, + "↪": { "codepoints": [8618], "characters": "\u21AA" }, + "↬": { "codepoints": [8620], "characters": "\u21AC" }, + "⥅": { "codepoints": [10565], "characters": "\u2945" }, + "⥴": { "codepoints": [10612], "characters": "\u2974" }, + "↣": { "codepoints": [8611], "characters": "\u21A3" }, + "↝": { "codepoints": [8605], "characters": "\u219D" }, + "⤚": { "codepoints": [10522], "characters": "\u291A" }, + "∶": { "codepoints": [8758], "characters": "\u2236" }, + "ℚ": { "codepoints": [8474], "characters": "\u211A" }, + "⤍": { "codepoints": [10509], "characters": "\u290D" }, + "❳": { "codepoints": [10099], "characters": "\u2773" }, + "}": { "codepoints": [125], "characters": "\u007D" }, + "]": { "codepoints": [93], "characters": "\u005D" }, + "⦌": { "codepoints": [10636], "characters": "\u298C" }, + "⦎": { "codepoints": [10638], "characters": "\u298E" }, + "⦐": { "codepoints": [10640], "characters": "\u2990" }, + "ř": { "codepoints": [345], "characters": "\u0159" }, + "ŗ": { "codepoints": [343], "characters": "\u0157" }, + "⌉": { "codepoints": [8969], "characters": "\u2309" }, + "}": { "codepoints": [125], "characters": "\u007D" }, + "р": { "codepoints": [1088], "characters": "\u0440" }, + "⤷": { "codepoints": [10551], "characters": "\u2937" }, + "⥩": { "codepoints": [10601], "characters": "\u2969" }, + "”": { "codepoints": [8221], "characters": "\u201D" }, + "”": { "codepoints": [8221], "characters": "\u201D" }, + "↳": { "codepoints": [8627], "characters": "\u21B3" }, + "ℜ": { "codepoints": [8476], "characters": "\u211C" }, + "ℛ": { "codepoints": [8475], "characters": "\u211B" }, + "ℜ": { "codepoints": [8476], "characters": "\u211C" }, + "ℝ": { "codepoints": [8477], "characters": "\u211D" }, + "▭": { "codepoints": [9645], "characters": "\u25AD" }, + "®": { "codepoints": [174], "characters": "\u00AE" }, + "®": { "codepoints": [174], "characters": "\u00AE" }, + "⥽": { "codepoints": [10621], "characters": "\u297D" }, + "⌋": { "codepoints": [8971], "characters": "\u230B" }, + "𝔯": { "codepoints": [120111], "characters": "\uD835\uDD2F" }, + "⇁": { "codepoints": [8641], "characters": "\u21C1" }, + "⇀": { "codepoints": [8640], "characters": "\u21C0" }, + "⥬": { "codepoints": [10604], "characters": "\u296C" }, + "ρ": { "codepoints": [961], "characters": "\u03C1" }, + "ϱ": { "codepoints": [1009], "characters": "\u03F1" }, + "→": { "codepoints": [8594], "characters": "\u2192" }, + "↣": { "codepoints": [8611], "characters": "\u21A3" }, + "⇁": { "codepoints": [8641], "characters": "\u21C1" }, + "⇀": { "codepoints": [8640], "characters": "\u21C0" }, + "⇄": { "codepoints": [8644], "characters": "\u21C4" }, + "⇌": { "codepoints": [8652], "characters": "\u21CC" }, + "⇉": { "codepoints": [8649], "characters": "\u21C9" }, + "↝": { "codepoints": [8605], "characters": "\u219D" }, + "⋌": { "codepoints": [8908], "characters": "\u22CC" }, + "˚": { "codepoints": [730], "characters": "\u02DA" }, + "≓": { "codepoints": [8787], "characters": "\u2253" }, + "⇄": { "codepoints": [8644], "characters": "\u21C4" }, + "⇌": { "codepoints": [8652], "characters": "\u21CC" }, + "‏": { "codepoints": [8207], "characters": "\u200F" }, + "⎱": { "codepoints": [9137], "characters": "\u23B1" }, + "⎱": { "codepoints": [9137], "characters": "\u23B1" }, + "⫮": { "codepoints": [10990], "characters": "\u2AEE" }, + "⟭": { "codepoints": [10221], "characters": "\u27ED" }, + "⇾": { "codepoints": [8702], "characters": "\u21FE" }, + "⟧": { "codepoints": [10215], "characters": "\u27E7" }, + "⦆": { "codepoints": [10630], "characters": "\u2986" }, + "𝕣": { "codepoints": [120163], "characters": "\uD835\uDD63" }, + "⨮": { "codepoints": [10798], "characters": "\u2A2E" }, + "⨵": { "codepoints": [10805], "characters": "\u2A35" }, + ")": { "codepoints": [41], "characters": "\u0029" }, + "⦔": { "codepoints": [10644], "characters": "\u2994" }, + "⨒": { "codepoints": [10770], "characters": "\u2A12" }, + "⇉": { "codepoints": [8649], "characters": "\u21C9" }, + "›": { "codepoints": [8250], "characters": "\u203A" }, + "𝓇": { "codepoints": [120007], "characters": "\uD835\uDCC7" }, + "↱": { "codepoints": [8625], "characters": "\u21B1" }, + "]": { "codepoints": [93], "characters": "\u005D" }, + "’": { "codepoints": [8217], "characters": "\u2019" }, + "’": { "codepoints": [8217], "characters": "\u2019" }, + "⋌": { "codepoints": [8908], "characters": "\u22CC" }, + "⋊": { "codepoints": [8906], "characters": "\u22CA" }, + "▹": { "codepoints": [9657], "characters": "\u25B9" }, + "⊵": { "codepoints": [8885], "characters": "\u22B5" }, + "▸": { "codepoints": [9656], "characters": "\u25B8" }, + "⧎": { "codepoints": [10702], "characters": "\u29CE" }, + "⥨": { "codepoints": [10600], "characters": "\u2968" }, + "℞": { "codepoints": [8478], "characters": "\u211E" }, + "ś": { "codepoints": [347], "characters": "\u015B" }, + "‚": { "codepoints": [8218], "characters": "\u201A" }, + "≻": { "codepoints": [8827], "characters": "\u227B" }, + "⪴": { "codepoints": [10932], "characters": "\u2AB4" }, + "⪸": { "codepoints": [10936], "characters": "\u2AB8" }, + "š": { "codepoints": [353], "characters": "\u0161" }, + "≽": { "codepoints": [8829], "characters": "\u227D" }, + "⪰": { "codepoints": [10928], "characters": "\u2AB0" }, + "ş": { "codepoints": [351], "characters": "\u015F" }, + "ŝ": { "codepoints": [349], "characters": "\u015D" }, + "⪶": { "codepoints": [10934], "characters": "\u2AB6" }, + "⪺": { "codepoints": [10938], "characters": "\u2ABA" }, + "⋩": { "codepoints": [8937], "characters": "\u22E9" }, + "⨓": { "codepoints": [10771], "characters": "\u2A13" }, + "≿": { "codepoints": [8831], "characters": "\u227F" }, + "с": { "codepoints": [1089], "characters": "\u0441" }, + "⋅": { "codepoints": [8901], "characters": "\u22C5" }, + "⊡": { "codepoints": [8865], "characters": "\u22A1" }, + "⩦": { "codepoints": [10854], "characters": "\u2A66" }, + "⇘": { "codepoints": [8664], "characters": "\u21D8" }, + "⤥": { "codepoints": [10533], "characters": "\u2925" }, + "↘": { "codepoints": [8600], "characters": "\u2198" }, + "↘": { "codepoints": [8600], "characters": "\u2198" }, + "§": { "codepoints": [167], "characters": "\u00A7" }, + "§": { "codepoints": [167], "characters": "\u00A7" }, + ";": { "codepoints": [59], "characters": "\u003B" }, + "⤩": { "codepoints": [10537], "characters": "\u2929" }, + "∖": { "codepoints": [8726], "characters": "\u2216" }, + "∖": { "codepoints": [8726], "characters": "\u2216" }, + "✶": { "codepoints": [10038], "characters": "\u2736" }, + "𝔰": { "codepoints": [120112], "characters": "\uD835\uDD30" }, + "⌢": { "codepoints": [8994], "characters": "\u2322" }, + "♯": { "codepoints": [9839], "characters": "\u266F" }, + "щ": { "codepoints": [1097], "characters": "\u0449" }, + "ш": { "codepoints": [1096], "characters": "\u0448" }, + "∣": { "codepoints": [8739], "characters": "\u2223" }, + "∥": { "codepoints": [8741], "characters": "\u2225" }, + "­": { "codepoints": [173], "characters": "\u00AD" }, + "­": { "codepoints": [173], "characters": "\u00AD" }, + "σ": { "codepoints": [963], "characters": "\u03C3" }, + "ς": { "codepoints": [962], "characters": "\u03C2" }, + "ς": { "codepoints": [962], "characters": "\u03C2" }, + "∼": { "codepoints": [8764], "characters": "\u223C" }, + "⩪": { "codepoints": [10858], "characters": "\u2A6A" }, + "≃": { "codepoints": [8771], "characters": "\u2243" }, + "≃": { "codepoints": [8771], "characters": "\u2243" }, + "⪞": { "codepoints": [10910], "characters": "\u2A9E" }, + "⪠": { "codepoints": [10912], "characters": "\u2AA0" }, + "⪝": { "codepoints": [10909], "characters": "\u2A9D" }, + "⪟": { "codepoints": [10911], "characters": "\u2A9F" }, + "≆": { "codepoints": [8774], "characters": "\u2246" }, + "⨤": { "codepoints": [10788], "characters": "\u2A24" }, + "⥲": { "codepoints": [10610], "characters": "\u2972" }, + "←": { "codepoints": [8592], "characters": "\u2190" }, + "∖": { "codepoints": [8726], "characters": "\u2216" }, + "⨳": { "codepoints": [10803], "characters": "\u2A33" }, + "⧤": { "codepoints": [10724], "characters": "\u29E4" }, + "∣": { "codepoints": [8739], "characters": "\u2223" }, + "⌣": { "codepoints": [8995], "characters": "\u2323" }, + "⪪": { "codepoints": [10922], "characters": "\u2AAA" }, + "⪬": { "codepoints": [10924], "characters": "\u2AAC" }, + "⪬︀": { "codepoints": [10924, 65024], "characters": "\u2AAC\uFE00" }, + "ь": { "codepoints": [1100], "characters": "\u044C" }, + "/": { "codepoints": [47], "characters": "\u002F" }, + "⧄": { "codepoints": [10692], "characters": "\u29C4" }, + "⌿": { "codepoints": [9023], "characters": "\u233F" }, + "𝕤": { "codepoints": [120164], "characters": "\uD835\uDD64" }, + "♠": { "codepoints": [9824], "characters": "\u2660" }, + "♠": { "codepoints": [9824], "characters": "\u2660" }, + "∥": { "codepoints": [8741], "characters": "\u2225" }, + "⊓": { "codepoints": [8851], "characters": "\u2293" }, + "⊓︀": { "codepoints": [8851, 65024], "characters": "\u2293\uFE00" }, + "⊔": { "codepoints": [8852], "characters": "\u2294" }, + "⊔︀": { "codepoints": [8852, 65024], "characters": "\u2294\uFE00" }, + "⊏": { "codepoints": [8847], "characters": "\u228F" }, + "⊑": { "codepoints": [8849], "characters": "\u2291" }, + "⊏": { "codepoints": [8847], "characters": "\u228F" }, + "⊑": { "codepoints": [8849], "characters": "\u2291" }, + "⊐": { "codepoints": [8848], "characters": "\u2290" }, + "⊒": { "codepoints": [8850], "characters": "\u2292" }, + "⊐": { "codepoints": [8848], "characters": "\u2290" }, + "⊒": { "codepoints": [8850], "characters": "\u2292" }, + "□": { "codepoints": [9633], "characters": "\u25A1" }, + "□": { "codepoints": [9633], "characters": "\u25A1" }, + "▪": { "codepoints": [9642], "characters": "\u25AA" }, + "▪": { "codepoints": [9642], "characters": "\u25AA" }, + "→": { "codepoints": [8594], "characters": "\u2192" }, + "𝓈": { "codepoints": [120008], "characters": "\uD835\uDCC8" }, + "∖": { "codepoints": [8726], "characters": "\u2216" }, + "⌣": { "codepoints": [8995], "characters": "\u2323" }, + "⋆": { "codepoints": [8902], "characters": "\u22C6" }, + "☆": { "codepoints": [9734], "characters": "\u2606" }, + "★": { "codepoints": [9733], "characters": "\u2605" }, + "ϵ": { "codepoints": [1013], "characters": "\u03F5" }, + "ϕ": { "codepoints": [981], "characters": "\u03D5" }, + "¯": { "codepoints": [175], "characters": "\u00AF" }, + "⊂": { "codepoints": [8834], "characters": "\u2282" }, + "⫅": { "codepoints": [10949], "characters": "\u2AC5" }, + "⪽": { "codepoints": [10941], "characters": "\u2ABD" }, + "⊆": { "codepoints": [8838], "characters": "\u2286" }, + "⫃": { "codepoints": [10947], "characters": "\u2AC3" }, + "⫁": { "codepoints": [10945], "characters": "\u2AC1" }, + "⫋": { "codepoints": [10955], "characters": "\u2ACB" }, + "⊊": { "codepoints": [8842], "characters": "\u228A" }, + "⪿": { "codepoints": [10943], "characters": "\u2ABF" }, + "⥹": { "codepoints": [10617], "characters": "\u2979" }, + "⊂": { "codepoints": [8834], "characters": "\u2282" }, + "⊆": { "codepoints": [8838], "characters": "\u2286" }, + "⫅": { "codepoints": [10949], "characters": "\u2AC5" }, + "⊊": { "codepoints": [8842], "characters": "\u228A" }, + "⫋": { "codepoints": [10955], "characters": "\u2ACB" }, + "⫇": { "codepoints": [10951], "characters": "\u2AC7" }, + "⫕": { "codepoints": [10965], "characters": "\u2AD5" }, + "⫓": { "codepoints": [10963], "characters": "\u2AD3" }, + "≻": { "codepoints": [8827], "characters": "\u227B" }, + "⪸": { "codepoints": [10936], "characters": "\u2AB8" }, + "≽": { "codepoints": [8829], "characters": "\u227D" }, + "⪰": { "codepoints": [10928], "characters": "\u2AB0" }, + "⪺": { "codepoints": [10938], "characters": "\u2ABA" }, + "⪶": { "codepoints": [10934], "characters": "\u2AB6" }, + "⋩": { "codepoints": [8937], "characters": "\u22E9" }, + "≿": { "codepoints": [8831], "characters": "\u227F" }, + "∑": { "codepoints": [8721], "characters": "\u2211" }, + "♪": { "codepoints": [9834], "characters": "\u266A" }, + "¹": { "codepoints": [185], "characters": "\u00B9" }, + "¹": { "codepoints": [185], "characters": "\u00B9" }, + "²": { "codepoints": [178], "characters": "\u00B2" }, + "²": { "codepoints": [178], "characters": "\u00B2" }, + "³": { "codepoints": [179], "characters": "\u00B3" }, + "³": { "codepoints": [179], "characters": "\u00B3" }, + "⊃": { "codepoints": [8835], "characters": "\u2283" }, + "⫆": { "codepoints": [10950], "characters": "\u2AC6" }, + "⪾": { "codepoints": [10942], "characters": "\u2ABE" }, + "⫘": { "codepoints": [10968], "characters": "\u2AD8" }, + "⊇": { "codepoints": [8839], "characters": "\u2287" }, + "⫄": { "codepoints": [10948], "characters": "\u2AC4" }, + "⟉": { "codepoints": [10185], "characters": "\u27C9" }, + "⫗": { "codepoints": [10967], "characters": "\u2AD7" }, + "⥻": { "codepoints": [10619], "characters": "\u297B" }, + "⫂": { "codepoints": [10946], "characters": "\u2AC2" }, + "⫌": { "codepoints": [10956], "characters": "\u2ACC" }, + "⊋": { "codepoints": [8843], "characters": "\u228B" }, + "⫀": { "codepoints": [10944], "characters": "\u2AC0" }, + "⊃": { "codepoints": [8835], "characters": "\u2283" }, + "⊇": { "codepoints": [8839], "characters": "\u2287" }, + "⫆": { "codepoints": [10950], "characters": "\u2AC6" }, + "⊋": { "codepoints": [8843], "characters": "\u228B" }, + "⫌": { "codepoints": [10956], "characters": "\u2ACC" }, + "⫈": { "codepoints": [10952], "characters": "\u2AC8" }, + "⫔": { "codepoints": [10964], "characters": "\u2AD4" }, + "⫖": { "codepoints": [10966], "characters": "\u2AD6" }, + "⇙": { "codepoints": [8665], "characters": "\u21D9" }, + "⤦": { "codepoints": [10534], "characters": "\u2926" }, + "↙": { "codepoints": [8601], "characters": "\u2199" }, + "↙": { "codepoints": [8601], "characters": "\u2199" }, + "⤪": { "codepoints": [10538], "characters": "\u292A" }, + "ß": { "codepoints": [223], "characters": "\u00DF" }, + "ß": { "codepoints": [223], "characters": "\u00DF" }, + "⌖": { "codepoints": [8982], "characters": "\u2316" }, + "τ": { "codepoints": [964], "characters": "\u03C4" }, + "⎴": { "codepoints": [9140], "characters": "\u23B4" }, + "ť": { "codepoints": [357], "characters": "\u0165" }, + "ţ": { "codepoints": [355], "characters": "\u0163" }, + "т": { "codepoints": [1090], "characters": "\u0442" }, + "⃛": { "codepoints": [8411], "characters": "\u20DB" }, + "⌕": { "codepoints": [8981], "characters": "\u2315" }, + "𝔱": { "codepoints": [120113], "characters": "\uD835\uDD31" }, + "∴": { "codepoints": [8756], "characters": "\u2234" }, + "∴": { "codepoints": [8756], "characters": "\u2234" }, + "θ": { "codepoints": [952], "characters": "\u03B8" }, + "ϑ": { "codepoints": [977], "characters": "\u03D1" }, + "ϑ": { "codepoints": [977], "characters": "\u03D1" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "∼": { "codepoints": [8764], "characters": "\u223C" }, + " ": { "codepoints": [8201], "characters": "\u2009" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "∼": { "codepoints": [8764], "characters": "\u223C" }, + "þ": { "codepoints": [254], "characters": "\u00FE" }, + "þ": { "codepoints": [254], "characters": "\u00FE" }, + "˜": { "codepoints": [732], "characters": "\u02DC" }, + "×": { "codepoints": [215], "characters": "\u00D7" }, + "×": { "codepoints": [215], "characters": "\u00D7" }, + "⊠": { "codepoints": [8864], "characters": "\u22A0" }, + "⨱": { "codepoints": [10801], "characters": "\u2A31" }, + "⨰": { "codepoints": [10800], "characters": "\u2A30" }, + "∭": { "codepoints": [8749], "characters": "\u222D" }, + "⤨": { "codepoints": [10536], "characters": "\u2928" }, + "⊤": { "codepoints": [8868], "characters": "\u22A4" }, + "⌶": { "codepoints": [9014], "characters": "\u2336" }, + "⫱": { "codepoints": [10993], "characters": "\u2AF1" }, + "𝕥": { "codepoints": [120165], "characters": "\uD835\uDD65" }, + "⫚": { "codepoints": [10970], "characters": "\u2ADA" }, + "⤩": { "codepoints": [10537], "characters": "\u2929" }, + "‴": { "codepoints": [8244], "characters": "\u2034" }, + "™": { "codepoints": [8482], "characters": "\u2122" }, + "▵": { "codepoints": [9653], "characters": "\u25B5" }, + "▿": { "codepoints": [9663], "characters": "\u25BF" }, + "◃": { "codepoints": [9667], "characters": "\u25C3" }, + "⊴": { "codepoints": [8884], "characters": "\u22B4" }, + "≜": { "codepoints": [8796], "characters": "\u225C" }, + "▹": { "codepoints": [9657], "characters": "\u25B9" }, + "⊵": { "codepoints": [8885], "characters": "\u22B5" }, + "◬": { "codepoints": [9708], "characters": "\u25EC" }, + "≜": { "codepoints": [8796], "characters": "\u225C" }, + "⨺": { "codepoints": [10810], "characters": "\u2A3A" }, + "⨹": { "codepoints": [10809], "characters": "\u2A39" }, + "⧍": { "codepoints": [10701], "characters": "\u29CD" }, + "⨻": { "codepoints": [10811], "characters": "\u2A3B" }, + "⏢": { "codepoints": [9186], "characters": "\u23E2" }, + "𝓉": { "codepoints": [120009], "characters": "\uD835\uDCC9" }, + "ц": { "codepoints": [1094], "characters": "\u0446" }, + "ћ": { "codepoints": [1115], "characters": "\u045B" }, + "ŧ": { "codepoints": [359], "characters": "\u0167" }, + "≬": { "codepoints": [8812], "characters": "\u226C" }, + "↞": { "codepoints": [8606], "characters": "\u219E" }, + "↠": { "codepoints": [8608], "characters": "\u21A0" }, + "⇑": { "codepoints": [8657], "characters": "\u21D1" }, + "⥣": { "codepoints": [10595], "characters": "\u2963" }, + "ú": { "codepoints": [250], "characters": "\u00FA" }, + "ú": { "codepoints": [250], "characters": "\u00FA" }, + "↑": { "codepoints": [8593], "characters": "\u2191" }, + "ў": { "codepoints": [1118], "characters": "\u045E" }, + "ŭ": { "codepoints": [365], "characters": "\u016D" }, + "û": { "codepoints": [251], "characters": "\u00FB" }, + "û": { "codepoints": [251], "characters": "\u00FB" }, + "у": { "codepoints": [1091], "characters": "\u0443" }, + "⇅": { "codepoints": [8645], "characters": "\u21C5" }, + "ű": { "codepoints": [369], "characters": "\u0171" }, + "⥮": { "codepoints": [10606], "characters": "\u296E" }, + "⥾": { "codepoints": [10622], "characters": "\u297E" }, + "𝔲": { "codepoints": [120114], "characters": "\uD835\uDD32" }, + "ù": { "codepoints": [249], "characters": "\u00F9" }, + "ù": { "codepoints": [249], "characters": "\u00F9" }, + "↿": { "codepoints": [8639], "characters": "\u21BF" }, + "↾": { "codepoints": [8638], "characters": "\u21BE" }, + "▀": { "codepoints": [9600], "characters": "\u2580" }, + "⌜": { "codepoints": [8988], "characters": "\u231C" }, + "⌜": { "codepoints": [8988], "characters": "\u231C" }, + "⌏": { "codepoints": [8975], "characters": "\u230F" }, + "◸": { "codepoints": [9720], "characters": "\u25F8" }, + "ū": { "codepoints": [363], "characters": "\u016B" }, + "¨": { "codepoints": [168], "characters": "\u00A8" }, + "¨": { "codepoints": [168], "characters": "\u00A8" }, + "ų": { "codepoints": [371], "characters": "\u0173" }, + "𝕦": { "codepoints": [120166], "characters": "\uD835\uDD66" }, + "↑": { "codepoints": [8593], "characters": "\u2191" }, + "↕": { "codepoints": [8597], "characters": "\u2195" }, + "↿": { "codepoints": [8639], "characters": "\u21BF" }, + "↾": { "codepoints": [8638], "characters": "\u21BE" }, + "⊎": { "codepoints": [8846], "characters": "\u228E" }, + "υ": { "codepoints": [965], "characters": "\u03C5" }, + "ϒ": { "codepoints": [978], "characters": "\u03D2" }, + "υ": { "codepoints": [965], "characters": "\u03C5" }, + "⇈": { "codepoints": [8648], "characters": "\u21C8" }, + "⌝": { "codepoints": [8989], "characters": "\u231D" }, + "⌝": { "codepoints": [8989], "characters": "\u231D" }, + "⌎": { "codepoints": [8974], "characters": "\u230E" }, + "ů": { "codepoints": [367], "characters": "\u016F" }, + "◹": { "codepoints": [9721], "characters": "\u25F9" }, + "𝓊": { "codepoints": [120010], "characters": "\uD835\uDCCA" }, + "⋰": { "codepoints": [8944], "characters": "\u22F0" }, + "ũ": { "codepoints": [361], "characters": "\u0169" }, + "▵": { "codepoints": [9653], "characters": "\u25B5" }, + "▴": { "codepoints": [9652], "characters": "\u25B4" }, + "⇈": { "codepoints": [8648], "characters": "\u21C8" }, + "ü": { "codepoints": [252], "characters": "\u00FC" }, + "ü": { "codepoints": [252], "characters": "\u00FC" }, + "⦧": { "codepoints": [10663], "characters": "\u29A7" }, + "⇕": { "codepoints": [8661], "characters": "\u21D5" }, + "⫨": { "codepoints": [10984], "characters": "\u2AE8" }, + "⫩": { "codepoints": [10985], "characters": "\u2AE9" }, + "⊨": { "codepoints": [8872], "characters": "\u22A8" }, + "⦜": { "codepoints": [10652], "characters": "\u299C" }, + "ϵ": { "codepoints": [1013], "characters": "\u03F5" }, + "ϰ": { "codepoints": [1008], "characters": "\u03F0" }, + "∅": { "codepoints": [8709], "characters": "\u2205" }, + "ϕ": { "codepoints": [981], "characters": "\u03D5" }, + "ϖ": { "codepoints": [982], "characters": "\u03D6" }, + "∝": { "codepoints": [8733], "characters": "\u221D" }, + "↕": { "codepoints": [8597], "characters": "\u2195" }, + "ϱ": { "codepoints": [1009], "characters": "\u03F1" }, + "ς": { "codepoints": [962], "characters": "\u03C2" }, + "⊊︀": { "codepoints": [8842, 65024], "characters": "\u228A\uFE00" }, + "⫋︀": { "codepoints": [10955, 65024], "characters": "\u2ACB\uFE00" }, + "⊋︀": { "codepoints": [8843, 65024], "characters": "\u228B\uFE00" }, + "⫌︀": { "codepoints": [10956, 65024], "characters": "\u2ACC\uFE00" }, + "ϑ": { "codepoints": [977], "characters": "\u03D1" }, + "⊲": { "codepoints": [8882], "characters": "\u22B2" }, + "⊳": { "codepoints": [8883], "characters": "\u22B3" }, + "в": { "codepoints": [1074], "characters": "\u0432" }, + "⊢": { "codepoints": [8866], "characters": "\u22A2" }, + "∨": { "codepoints": [8744], "characters": "\u2228" }, + "⊻": { "codepoints": [8891], "characters": "\u22BB" }, + "≚": { "codepoints": [8794], "characters": "\u225A" }, + "⋮": { "codepoints": [8942], "characters": "\u22EE" }, + "|": { "codepoints": [124], "characters": "\u007C" }, + "|": { "codepoints": [124], "characters": "\u007C" }, + "𝔳": { "codepoints": [120115], "characters": "\uD835\uDD33" }, + "⊲": { "codepoints": [8882], "characters": "\u22B2" }, + "⊂⃒": { "codepoints": [8834, 8402], "characters": "\u2282\u20D2" }, + "⊃⃒": { "codepoints": [8835, 8402], "characters": "\u2283\u20D2" }, + "𝕧": { "codepoints": [120167], "characters": "\uD835\uDD67" }, + "∝": { "codepoints": [8733], "characters": "\u221D" }, + "⊳": { "codepoints": [8883], "characters": "\u22B3" }, + "𝓋": { "codepoints": [120011], "characters": "\uD835\uDCCB" }, + "⫋︀": { "codepoints": [10955, 65024], "characters": "\u2ACB\uFE00" }, + "⊊︀": { "codepoints": [8842, 65024], "characters": "\u228A\uFE00" }, + "⫌︀": { "codepoints": [10956, 65024], "characters": "\u2ACC\uFE00" }, + "⊋︀": { "codepoints": [8843, 65024], "characters": "\u228B\uFE00" }, + "⦚": { "codepoints": [10650], "characters": "\u299A" }, + "ŵ": { "codepoints": [373], "characters": "\u0175" }, + "⩟": { "codepoints": [10847], "characters": "\u2A5F" }, + "∧": { "codepoints": [8743], "characters": "\u2227" }, + "≙": { "codepoints": [8793], "characters": "\u2259" }, + "℘": { "codepoints": [8472], "characters": "\u2118" }, + "𝔴": { "codepoints": [120116], "characters": "\uD835\uDD34" }, + "𝕨": { "codepoints": [120168], "characters": "\uD835\uDD68" }, + "℘": { "codepoints": [8472], "characters": "\u2118" }, + "≀": { "codepoints": [8768], "characters": "\u2240" }, + "≀": { "codepoints": [8768], "characters": "\u2240" }, + "𝓌": { "codepoints": [120012], "characters": "\uD835\uDCCC" }, + "⋂": { "codepoints": [8898], "characters": "\u22C2" }, + "◯": { "codepoints": [9711], "characters": "\u25EF" }, + "⋃": { "codepoints": [8899], "characters": "\u22C3" }, + "▽": { "codepoints": [9661], "characters": "\u25BD" }, + "𝔵": { "codepoints": [120117], "characters": "\uD835\uDD35" }, + "⟺": { "codepoints": [10234], "characters": "\u27FA" }, + "⟷": { "codepoints": [10231], "characters": "\u27F7" }, + "ξ": { "codepoints": [958], "characters": "\u03BE" }, + "⟸": { "codepoints": [10232], "characters": "\u27F8" }, + "⟵": { "codepoints": [10229], "characters": "\u27F5" }, + "⟼": { "codepoints": [10236], "characters": "\u27FC" }, + "⋻": { "codepoints": [8955], "characters": "\u22FB" }, + "⨀": { "codepoints": [10752], "characters": "\u2A00" }, + "𝕩": { "codepoints": [120169], "characters": "\uD835\uDD69" }, + "⨁": { "codepoints": [10753], "characters": "\u2A01" }, + "⨂": { "codepoints": [10754], "characters": "\u2A02" }, + "⟹": { "codepoints": [10233], "characters": "\u27F9" }, + "⟶": { "codepoints": [10230], "characters": "\u27F6" }, + "𝓍": { "codepoints": [120013], "characters": "\uD835\uDCCD" }, + "⨆": { "codepoints": [10758], "characters": "\u2A06" }, + "⨄": { "codepoints": [10756], "characters": "\u2A04" }, + "△": { "codepoints": [9651], "characters": "\u25B3" }, + "⋁": { "codepoints": [8897], "characters": "\u22C1" }, + "⋀": { "codepoints": [8896], "characters": "\u22C0" }, + "ý": { "codepoints": [253], "characters": "\u00FD" }, + "ý": { "codepoints": [253], "characters": "\u00FD" }, + "я": { "codepoints": [1103], "characters": "\u044F" }, + "ŷ": { "codepoints": [375], "characters": "\u0177" }, + "ы": { "codepoints": [1099], "characters": "\u044B" }, + "¥": { "codepoints": [165], "characters": "\u00A5" }, + "¥": { "codepoints": [165], "characters": "\u00A5" }, + "𝔶": { "codepoints": [120118], "characters": "\uD835\uDD36" }, + "ї": { "codepoints": [1111], "characters": "\u0457" }, + "𝕪": { "codepoints": [120170], "characters": "\uD835\uDD6A" }, + "𝓎": { "codepoints": [120014], "characters": "\uD835\uDCCE" }, + "ю": { "codepoints": [1102], "characters": "\u044E" }, + "ÿ": { "codepoints": [255], "characters": "\u00FF" }, + "ÿ": { "codepoints": [255], "characters": "\u00FF" }, + "ź": { "codepoints": [378], "characters": "\u017A" }, + "ž": { "codepoints": [382], "characters": "\u017E" }, + "з": { "codepoints": [1079], "characters": "\u0437" }, + "ż": { "codepoints": [380], "characters": "\u017C" }, + "ℨ": { "codepoints": [8488], "characters": "\u2128" }, + "ζ": { "codepoints": [950], "characters": "\u03B6" }, + "𝔷": { "codepoints": [120119], "characters": "\uD835\uDD37" }, + "ж": { "codepoints": [1078], "characters": "\u0436" }, + "⇝": { "codepoints": [8669], "characters": "\u21DD" }, + "𝕫": { "codepoints": [120171], "characters": "\uD835\uDD6B" }, + "𝓏": { "codepoints": [120015], "characters": "\uD835\uDCCF" }, + "‍": { "codepoints": [8205], "characters": "\u200D" }, + "‌": { "codepoints": [8204], "characters": "\u200C" } +} diff --git a/tests/phpunit/data/html5-entities/generate-html5-named-character-references.php b/tests/phpunit/data/html5-entities/generate-html5-named-character-references.php new file mode 100644 index 0000000000000..609d521dec440 --- /dev/null +++ b/tests/phpunit/data/html5-entities/generate-html5-named-character-references.php @@ -0,0 +1,101 @@ + array( 0xA9 ), + * 'characters' => '©', + * ); + * + * @see https://html.spec.whatwg.org/entities.json + * + * @var array. + */ +$entities = json_decode( + file_get_contents( __DIR__ . '/entities.json' ), + JSON_OBJECT_AS_ARRAY +); + +/** + * Direct mapping from character reference name to UTF-8 string. + * + * Example: + * + * $character_references['©'] === '©'; + * + * @var array. + */ +$character_references = array(); +foreach ( $entities as $reference => $metadata ) { + $reference_without_ampersand_prefix = substr( $reference, 1 ); + $character_references[ $reference_without_ampersand_prefix ] = $metadata['characters']; +} + +$html5_map = WP_Token_Map::from_array( $character_references ); + +/** + * Contains the new contents for the auto-generated module. + * + * Note that in this template, the `$` is escaped with `\$` so that it + * comes through as a `$` in the output. Without escaping, PHP will look + * for a variable of the given name to interpolate into the template. + * + * @var string + */ +$module_contents = <<precomputed_php_source_table()}; + +EOF; + +file_put_contents( + __DIR__ . '/../../../../src/wp-includes/html-api/html5-named-character-references.php', + $module_contents +); + +if ( posix_isatty( STDOUT ) ) { + echo "\e[1;32mOK\e[0;90m: \e[mSuccessfully generated optimized lookup class.\n"; +} else { + echo "OK: Successfully generated optimized lookup class.\n"; +} diff --git a/tests/phpunit/tests/wp-token-map/wpTokenMap.php b/tests/phpunit/tests/wp-token-map/wpTokenMap.php new file mode 100644 index 0000000000000..fb2a08655d2a6 --- /dev/null +++ b/tests/phpunit/tests/wp-token-map/wpTokenMap.php @@ -0,0 +1,399 @@ + '🐈', + 'dog' => 'đŸ¶', + 'fish' => '🐟', + 'mammoth' => '🩣', + 'seal' => '🩭', + ); + + /** + * Returns an associative array whose keys are tokens to replace and + * whose values are the replacement strings for those tokens. + * + * This function is here to help avoid bloating this specific test file. + * For example, the HTML5 dataset is very large and best served as a + * separate file. + * + * The HTML5 named character reference list is pulled directly from the + * WHATWG spec and stored in the tests directory so it doesn't need to + * be downloaded on every test run. By specification, it cannot change + * and will not be updated. + * + * @param string $dataset_name Which dataset to return. + * @return array The dataset as an associative array. + */ + private static function get_test_input_array( $dataset_name ) { + static $html5_character_references = null; + + switch ( $dataset_name ) { + case 'ANIMALS': + return self::ANIMAL_EMOJI; + + case 'HTML5': + if ( ! isset( $html5_character_references ) ) { + $dataset = wp_json_file_decode( + __DIR__ . '/../../data/html5-entities/entities.json', + array( 'associative' => true ) + ); + + $html5_character_references = array(); + foreach ( $dataset as $name => $value ) { + $html5_character_references[ $name ] = $value['characters']; + } + } + + return $html5_character_references; + } + } + + /** + * Data provider. + * + * @return array[]. + */ + public static function data_input_arrays() { + $dataset_names = array( + 'ANIMALS', + 'HTML5', + ); + + foreach ( $dataset_names as $dataset_name ) { + yield $dataset_name => array( self::get_test_input_array( $dataset_name ) ); + } + } + + /** + * Ensure the basic creation of a Token Map from an associative array. + * + * @ticket 60698 + * + * @dataProvider data_input_arrays + * + * @param array $dataset Dataset to test. + */ + public function test_creates_map_from_array_containing_proper_values( $dataset ) { + $map = WP_Token_Map::from_array( $dataset ); + + foreach ( $dataset as $token => $replacement ) { + $this->assertTrue( + $map->contains( $token ), + "Map should have contained '{$token}' but didn't." + ); + + $skip_bytes = 0; + $response = $map->read_token( $token, 0, $skip_bytes ); + $this->assertSame( + $replacement, + $response, + "Returned the wrong replacement value for '{$token}'." + ); + + $token_length = strlen( $token ); + $this->assertSame( + $token_length, + $skip_bytes, + 'Reported the wrong byte-length of the found token.' + ); + } + } + + /** + * Ensure that keys that are too long prevent the creation of a Token Map. + * + * If tokens or replacements are stored whose length is more than can be + * represented by a single byte, then the encoding scheme in the Token Map + * will fail and lead to corruption. + * + * @ticket 60698 + * + * @expectedIncorrectUsage WP_Token_Map::from_array + */ + public function test_rejects_words_which_are_too_long() { + $normal_length = str_pad( '', 255, '.' ); + $too_long_word = "{$normal_length}."; + + $this->assertInstanceOf( + WP_Token_Map::class, + WP_Token_Map::from_array( array( $normal_length => 'just fine' ) ), + 'Should have built Token Map containing long, but acceptable token length.' + ); + + $this->assertNull( + WP_Token_Map::from_array( array( $too_long_word => 'not good' ) ), + 'Should have refused to build Token Map with key exceeding design limit.' + ); + + $this->assertInstanceOf( + WP_Token_Map::class, + WP_Token_Map::from_array( array( 'key' => $normal_length ) ), + 'Should have build Token Map containing long, but acceptable replacement.' + ); + + $this->assertNull( + WP_Token_Map::from_array( array( 'key' => $too_long_word ) ), + 'Should have refused to build Token Map with replacement exceeding design limit.' + ); + } + + /** + * Ensure isomorphic creation and export of a Token Map and associative arrays. + * + * @ticket 60698 + * + * @dataProvider data_input_arrays + * + * @param array $dataset Dataset to test. + */ + public function test_round_trips_through_associative_array( $dataset ) { + $map = WP_Token_Map::from_array( $dataset ); + $this->assertEqualsCanonicalizing( + $dataset, + $map->to_array(), + 'Should have produced an identical array on output as was given on input.' + ); + } + + /** + * Ensure the basic creation of a Token Map from a precomputed source table. + * + * @ticket 60698 + * + * @dataProvider data_input_arrays + * + * @param array $dataset Dataset to test. + */ + public function test_round_trips_through_precomputed_source_table( $dataset ) { + $seed = WP_Token_Map::from_array( $dataset ); + $source_table = $seed->precomputed_php_source_table(); + $map = eval( "return {$source_table};" ); // phpcs:ignore. + + foreach ( $dataset as $token => $replacement ) { + $this->assertTrue( + $map->contains( $token ), + "Map should have contained '{$token}' but didn't." + ); + + $skip_bytes = 0; + $response = $map->read_token( $token, 0, $skip_bytes ); + $this->assertSame( + $replacement, + $response, + 'Returned the wrong replacement value' + ); + + $token_length = strlen( $token ); + $this->assertSame( + $token_length, + $skip_bytes, + 'Reported the wrong byte-length of the found token.' + ); + } + } + + /** + * Ensures that when two or more keys share a prefix that the longest + * is matched first, to prevent tokens masking each other. + * + * @ticket 60698 + */ + public function test_finds_longest_match_first() { + $map = WP_Token_Map::from_array( + array( + 'cat' => '1', + 'caterpillar' => '2', + 'caterpillar machines' => '3', + ) + ); + + $skip_bytes = 0; + $text = 'cats like to meow'; + $this->assertSame( + '1', + $map->read_token( $text, 0, $skip_bytes ), + "Should have matched 'cat' but matched '" . substr( $text, 0, $skip_bytes ) . "' instead." + ); + + $skip_bytes = 0; + $text = 'caterpillars turn into butterflies'; + $this->assertSame( + '2', + $map->read_token( $text, 0, $skip_bytes ), + "Should have matched 'caterpillar' but matched '" . substr( $text, 0, $skip_bytes ) . "' instead." + ); + + $skip_bytes = 0; + $text = 'caterpillar machines are heavy duty equipment'; + $this->assertSame( + '3', + $map->read_token( $text, 0, $skip_bytes ), + "Should have matched 'caterpillar machines' but matched '" . substr( $text, 0, $skip_bytes ) . "' instead." + ); + } + + /** + * Ensures that tokens shorter than the group key length are found. + * + * @ticket 60698 + * + * @dataProvider data_short_substring_matches_of_each_other + * + * @param WP_Token_Map $map Token map containing appropriate mapping for test. + * @param string $search_document Document containing expected token at start of string. + * @param string $expected_token Which token should be found at start of search document. + */ + public function test_finds_short_matches_shorter_than_group_key_length( $map, $search_document, $expected_token ) { + $skip_bytes = 0; + $text = 'antarctica is a continent'; + $this->assertSame( + 'article', + $map->read_token( $text, 0, $skip_bytes ), + "Should have matched 'a' but matched '" . substr( $text, 0, $skip_bytes ) . "' instead." + ); + } + + /** + * Data provider. + * + * @return array[]. + */ + public static function data_short_substring_matches_of_each_other() { + $map = WP_Token_Map::from_array( + array( + 'a' => 'article', + 'aa' => 'defensive weapon', + 'ar' => 'country code', + 'arizona' => 'state name', + ) + ); + + return array( + 'single character' => array( $map, 'antarctica is a continent', 'a' ), + 'duplicate character' => array( $map, 'aaaaahhhh, he exclaimed', 'aa' ), + 'different character' => array( $map, 'argentina is a country', 'ar' ), + 'full word' => array( $map, 'arizona was full of copper', 'arizona' ), + ); + } + + /** + * Ensures that Token Map searches at appropriate starting offset. + * + * @ticket 60698 + * + * @dataProvider data_html5_test_dataset + * + * @param string $token Token to find. + * @param string $replacement Replacement string for token. + */ + public function test_reads_token_at_given_offset( $token, $replacement ) { + $document = "& another {$token} & then some"; + $map = self::get_html5_token_map(); + + $skip_bytes = 0; + $this->assertFalse( + $map->read_token( $document, 0, $skip_bytes ), + "Shouldn't have found token at start of document." + ); + + $response = $map->read_token( $document, 10, $skip_bytes ); + + $this->assertSame( + strlen( $token ), + $skip_bytes, + "Found the wrong length for token '{$token}'." + ); + + $this->assertSame( + $response, + $replacement, + 'Found the wrong replacement value for the token.' + ); + } + + /** + * Ensures that all given tokens exist inside a constructed Token Map. + * + * @ticket 60698 + * + * @dataProvider data_html5_test_dataset + * + * @param string $token Token to find. + * @param string $replacement Not used in this test. + */ + public function test_detects_all_tokens( $token, $replacement ) { + $map = self::get_html5_token_map(); + + $this->assertTrue( + $map->contains( $token ), + "Should have found '{$token}' inside the Token Map, but didn't." + ); + + $double_escaped_token = str_replace( '&', '&', $token ); + $this->assertFalse( + $map->contains( $double_escaped_token ), + "Should not have found '{$double_escaped_token}' in Token Map, but did." + ); + } + + /** + * Data provider. + * + * @return array[]. + */ + public function data_html5_test_dataset() { + $html5 = self::get_test_input_array( 'HTML5' ); + + $this->assertSame( + self::KNOWN_COUNT_OF_ALL_HTML5_NAMED_CHARACTER_REFERENCES, + count( $html5 ), + 'Found the wrong number of HTML5 named character references: confirm the entities.json file."' + ); + + foreach ( $html5 as $token => $replacement ) { + yield $token => array( $token, $replacement ); + } + } + + /** + * Returns a static copy of the Token Map for HTML5. + * This is a test performance optimization. + * + * @return WP_Token_Map + */ + private static function get_html5_token_map() { + static $html5_token_map = null; + + if ( ! isset( $html5_token_map ) ) { + $html5_token_map = WP_Token_Map::from_array( self::get_test_input_array( 'HTML5' ) ); + } + + return $html5_token_map; + } +}