4 |
david |
1 |
<?php
|
|
|
2 |
|
|
|
3 |
/***************************************************************************\
|
|
|
4 |
* SPIP, Systeme de publication pour l'internet *
|
|
|
5 |
* *
|
|
|
6 |
* Copyright (c) 2001-2005 *
|
|
|
7 |
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
|
|
|
8 |
* *
|
|
|
9 |
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
|
|
|
10 |
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
|
|
|
11 |
\***************************************************************************/
|
|
|
12 |
|
|
|
13 |
|
|
|
14 |
//
|
|
|
15 |
// Ce fichier ne sera execute qu'une fois
|
|
|
16 |
if (defined("_ECRIRE_INC_CHARSETS")) return;
|
|
|
17 |
define("_ECRIRE_INC_CHARSETS", "1");
|
|
|
18 |
|
|
|
19 |
|
|
|
20 |
/* charsets supportes en natif (les autres via mb_string) :
|
|
|
21 |
utf-8 ;
|
|
|
22 |
iso-8859-1 ; iso-8859-9 ; iso-8859-15 ;
|
|
|
23 |
windows-1251 = CP1251 ;
|
|
|
24 |
*/
|
|
|
25 |
function load_charset ($charset = 'AUTO', $langue_site = 'AUTO') {
|
|
|
26 |
if ($charset == 'AUTO')
|
|
|
27 |
$charset = lire_meta('charset');
|
|
|
28 |
if (is_array($GLOBALS['CHARSET'][$charset]))
|
|
|
29 |
return $charset;
|
|
|
30 |
|
|
|
31 |
if ($langue_site == 'AUTO')
|
|
|
32 |
$langue_site = lire_meta('langue_site');
|
|
|
33 |
|
|
|
34 |
switch (strtolower($charset)) {
|
|
|
35 |
case 'utf-8':
|
|
|
36 |
$GLOBALS['CHARSET'][$charset] = array();
|
|
|
37 |
return $charset;
|
|
|
38 |
|
|
|
39 |
// iso latin 1
|
|
|
40 |
case 'iso-8859-1':
|
|
|
41 |
case '':
|
|
|
42 |
$GLOBALS['CHARSET'][$charset] = array (
|
|
|
43 |
128=>128, 129=>129, 130=>130, 131=>131, 132=>132, 133=>133, 134=>134, 135=>135,
|
|
|
44 |
136=>136, 137=>137, 138=>138, 139=>139, 140=>140, 141=>141, 142=>142, 143=>143,
|
|
|
45 |
144=>144, 145=>145, 146=>146, 147=>147, 148=>148, 149=>149, 150=>150, 151=>151,
|
|
|
46 |
152=>152, 153=>153, 154=>154, 155=>155, 156=>156, 157=>157, 158=>158, 159=>159,
|
|
|
47 |
160=>160, 161=>161, 162=>162, 163=>163, 164=>164, 165=>165, 166=>166, 167=>167,
|
|
|
48 |
168=>168, 169=>169, 170=>170, 171=>171, 172=>172, 173=>173, 174=>174, 175=>175,
|
|
|
49 |
176=>176, 177=>177, 178=>178, 179=>179, 180=>180, 181=>181, 182=>182, 183=>183,
|
|
|
50 |
184=>184, 185=>185, 186=>186, 187=>187, 188=>188, 189=>189, 190=>190, 191=>191,
|
|
|
51 |
192=>192, 193=>193, 194=>194, 195=>195, 196=>196, 197=>197, 198=>198, 199=>199,
|
|
|
52 |
200=>200, 201=>201, 202=>202, 203=>203, 204=>204, 205=>205, 206=>206, 207=>207,
|
|
|
53 |
208=>208, 209=>209, 210=>210, 211=>211, 212=>212, 213=>213, 214=>214, 215=>215,
|
|
|
54 |
216=>216, 217=>217, 218=>218, 219=>219, 220=>220, 221=>221, 222=>222, 223=>223,
|
|
|
55 |
224=>224, 225=>225, 226=>226, 227=>227, 228=>228, 229=>229, 230=>230, 231=>231,
|
|
|
56 |
232=>232, 233=>233, 234=>234, 235=>235, 236=>236, 237=>237, 238=>238, 239=>239,
|
|
|
57 |
240=>240, 241=>241, 242=>242, 243=>243, 244=>244, 245=>245, 246=>246, 247=>247,
|
|
|
58 |
248=>248, 249=>249, 250=>250, 251=>251, 252=>252, 253=>253, 254=>254, 255=>255
|
|
|
59 |
);
|
|
|
60 |
return $charset;
|
|
|
61 |
|
|
|
62 |
|
|
|
63 |
// iso latin 9 - Turc <alexis@nds.k12.tr>
|
|
|
64 |
case 'iso-8859-9':
|
|
|
65 |
load_charset('iso-8859-1');
|
|
|
66 |
$trans = $GLOBALS['CHARSET']['iso-8859-1'];
|
|
|
67 |
$trans[240]=287; //gbreve
|
|
|
68 |
$trans[208]=286; //Gbreve
|
|
|
69 |
$trans[221]=304; //Idot
|
|
|
70 |
$trans[253]=305; //inodot
|
|
|
71 |
$trans[254]=351; //scedil
|
|
|
72 |
$trans[222]=350; //Scedil
|
|
|
73 |
$GLOBALS['CHARSET'][$charset] = $trans;
|
|
|
74 |
return $charset;
|
|
|
75 |
|
|
|
76 |
|
|
|
77 |
// iso latin 15 - Gaetan Ryckeboer <gryckeboer@virtual-net.fr>
|
|
|
78 |
case 'iso-8859-15':
|
|
|
79 |
load_charset('iso-8859-1');
|
|
|
80 |
$trans = $GLOBALS['CHARSET']['iso-8859-1'];
|
|
|
81 |
$trans[164]=8364;
|
|
|
82 |
$trans[166]=352;
|
|
|
83 |
$trans[168]=353;
|
|
|
84 |
$trans[180]=381;
|
|
|
85 |
$trans[184]=382;
|
|
|
86 |
$trans[188]=338;
|
|
|
87 |
$trans[189]=339;
|
|
|
88 |
$trans[190]=376;
|
|
|
89 |
$GLOBALS['CHARSET'][$charset] = $trans;
|
|
|
90 |
return $charset;
|
|
|
91 |
|
|
|
92 |
|
|
|
93 |
// cyrillic - ref. http://czyborra.com/charsets/cyrillic.html
|
|
|
94 |
case 'windows-1251':
|
|
|
95 |
case 'cp1251':
|
|
|
96 |
$GLOBALS['CHARSET'][$charset] = array (
|
|
|
97 |
0x80=>0x0402, 0x81=>0x0403, 0x82=>0x201A, 0x83=>0x0453, 0x84=>0x201E,
|
|
|
98 |
0x85=>0x2026, 0x86=>0x2020, 0x87=>0x2021, 0x88=>0x20AC, 0x89=>0x2030,
|
|
|
99 |
0x8A=>0x0409, 0x8B=>0x2039, 0x8C=>0x040A, 0x8D=>0x040C, 0x8E=>0x040B,
|
|
|
100 |
0x8F=>0x040F, 0x90=>0x0452, 0x91=>0x2018, 0x92=>0x2019, 0x93=>0x201C,
|
|
|
101 |
0x94=>0x201D, 0x95=>0x2022, 0x96=>0x2013, 0x97=>0x2014, 0x99=>0x2122,
|
|
|
102 |
0x9A=>0x0459, 0x9B=>0x203A, 0x9C=>0x045A, 0x9D=>0x045C, 0x9E=>0x045B,
|
|
|
103 |
0x9F=>0x045F, 0xA0=>0x00A0, 0xA1=>0x040E, 0xA2=>0x045E, 0xA3=>0x0408,
|
|
|
104 |
0xA4=>0x00A4, 0xA5=>0x0490, 0xA6=>0x00A6, 0xA7=>0x00A7, 0xA8=>0x0401,
|
|
|
105 |
0xA9=>0x00A9, 0xAA=>0x0404, 0xAB=>0x00AB, 0xAC=>0x00AC, 0xAD=>0x00AD,
|
|
|
106 |
0xAE=>0x00AE, 0xAF=>0x0407, 0xB0=>0x00B0, 0xB1=>0x00B1, 0xB2=>0x0406,
|
|
|
107 |
0xB3=>0x0456, 0xB4=>0x0491, 0xB5=>0x00B5, 0xB6=>0x00B6, 0xB7=>0x00B7,
|
|
|
108 |
0xB8=>0x0451, 0xB9=>0x2116, 0xBA=>0x0454, 0xBB=>0x00BB, 0xBC=>0x0458,
|
|
|
109 |
0xBD=>0x0405, 0xBE=>0x0455, 0xBF=>0x0457, 0xC0=>0x0410, 0xC1=>0x0411,
|
|
|
110 |
0xC2=>0x0412, 0xC3=>0x0413, 0xC4=>0x0414, 0xC5=>0x0415, 0xC6=>0x0416,
|
|
|
111 |
0xC7=>0x0417, 0xC8=>0x0418, 0xC9=>0x0419, 0xCA=>0x041A, 0xCB=>0x041B,
|
|
|
112 |
0xCC=>0x041C, 0xCD=>0x041D, 0xCE=>0x041E, 0xCF=>0x041F, 0xD0=>0x0420,
|
|
|
113 |
0xD1=>0x0421, 0xD2=>0x0422, 0xD3=>0x0423, 0xD4=>0x0424, 0xD5=>0x0425,
|
|
|
114 |
0xD6=>0x0426, 0xD7=>0x0427, 0xD8=>0x0428, 0xD9=>0x0429, 0xDA=>0x042A,
|
|
|
115 |
0xDB=>0x042B, 0xDC=>0x042C, 0xDD=>0x042D, 0xDE=>0x042E, 0xDF=>0x042F,
|
|
|
116 |
0xE0=>0x0430, 0xE1=>0x0431, 0xE2=>0x0432, 0xE3=>0x0433, 0xE4=>0x0434,
|
|
|
117 |
0xE5=>0x0435, 0xE6=>0x0436, 0xE7=>0x0437, 0xE8=>0x0438, 0xE9=>0x0439,
|
|
|
118 |
0xEA=>0x043A, 0xEB=>0x043B, 0xEC=>0x043C, 0xED=>0x043D, 0xEE=>0x043E,
|
|
|
119 |
0xEF=>0x043F, 0xF0=>0x0440, 0xF1=>0x0441, 0xF2=>0x0442, 0xF3=>0x0443,
|
|
|
120 |
0xF4=>0x0444, 0xF5=>0x0445, 0xF6=>0x0446, 0xF7=>0x0447, 0xF8=>0x0448,
|
|
|
121 |
0xF9=>0x0449, 0xFA=>0x044A, 0xFB=>0x044B, 0xFC=>0x044C, 0xFD=>0x044D,
|
|
|
122 |
0xFE=>0x044E, 0xFF=>0x044F); // fin windows-1251
|
|
|
123 |
return $charset;
|
|
|
124 |
|
|
|
125 |
// arabic - george kandalaft - http://www.microsoft.com/typography/unicode/1256.htm
|
|
|
126 |
case 'windows-1256':
|
|
|
127 |
case 'cp1256':
|
|
|
128 |
$GLOBALS['CHARSET'][$charset] = array (
|
|
|
129 |
0x80=>0x20AC, 0x81=>0x067E, 0x82=>0x201A, 0x83=>0x0192, 0x84=>0x201E,
|
|
|
130 |
0x85=>0x2026, 0x86=>0x2020, 0x87=>0x2021, 0x88=>0x02C6, 0x89=>0x2030,
|
|
|
131 |
0x8A=>0x0679, 0x8B=>0x2039, 0x8C=>0x0152, 0x8D=>0x0686, 0x8E=>0x0698,
|
|
|
132 |
0x8F=>0x0688, 0x90=>0x06AF, 0x91=>0x2018, 0x92=>0x2019, 0x93=>0x201C,
|
|
|
133 |
0x94=>0x201D, 0x95=>0x2022, 0x96=>0x2013, 0x97=>0x2014, 0x98=>0x06A9,
|
|
|
134 |
0x99=>0x2122, 0x9A=>0x0691, 0x9B=>0x203A, 0x9C=>0x0153, 0x9D=>0x200C,
|
|
|
135 |
0x9E=>0x200D, 0x9F=>0x06BA, 0xA0=>0x00A0, 0xA1=>0x060C, 0xA2=>0x00A2,
|
|
|
136 |
0xA3=>0x00A3, 0xA4=>0x00A4, 0xA5=>0x00A5, 0xA6=>0x00A6, 0xA7=>0x00A7,
|
|
|
137 |
0xA8=>0x00A8, 0xA9=>0x00A9, 0xAA=>0x06BE, 0xAB=>0x00AB, 0xAC=>0x00AC,
|
|
|
138 |
0xAD=>0x00AD, 0xAE=>0x00AE, 0xAF=>0x00AF, 0xB0=>0x00B0, 0xB1=>0x00B1,
|
|
|
139 |
0xB2=>0x00B2, 0xB3=>0x00B3, 0xB4=>0x00B4, 0xB5=>0x00B5, 0xB6=>0x00B6,
|
|
|
140 |
0xB7=>0x00B7, 0xB8=>0x00B8, 0xB9=>0x00B9, 0xBA=>0x061B, 0xBB=>0x00BB,
|
|
|
141 |
0xBC=>0x00BC, 0xBD=>0x00BD, 0xBE=>0x00BE, 0xBF=>0x061F, 0xC0=>0x06C1,
|
|
|
142 |
0xC1=>0x0621, 0xC2=>0x0622, 0xC3=>0x0623, 0xC4=>0x0624, 0xC5=>0x0625,
|
|
|
143 |
0xC6=>0x0626, 0xC7=>0x0627, 0xC8=>0x0628, 0xC9=>0x0629, 0xCA=>0x062A,
|
|
|
144 |
0xCB=>0x062B, 0xCC=>0x062C, 0xCD=>0x062D, 0xCE=>0x062E, 0xCF=>0x062F,
|
|
|
145 |
0xD0=>0x0630, 0xD1=>0x0631, 0xD2=>0x0632, 0xD3=>0x0633, 0xD4=>0x0634,
|
|
|
146 |
0xD5=>0x0635, 0xD6=>0x0636, 0xD7=>0x00D7, 0xD8=>0x0637, 0xD9=>0x0638,
|
|
|
147 |
0xDA=>0x0639, 0xDB=>0x063A, 0xDC=>0x0640, 0xDD=>0x0641, 0xDE=>0x0642,
|
|
|
148 |
0xDF=>0x0643, 0xE0=>0x00E0, 0xE1=>0x0644, 0xE2=>0x00E2, 0xE3=>0x0645,
|
|
|
149 |
0xE4=>0x0646, 0xE5=>0x0647, 0xE6=>0x0648, 0xE7=>0x00E7, 0xE8=>0x00E8,
|
|
|
150 |
0xE9=>0x00E9, 0xEA=>0x00EA, 0xEB=>0x00EB, 0xEC=>0x0649, 0xED=>0x064A,
|
|
|
151 |
0xEE=>0x00EE, 0xEF=>0x00EF, 0xF0=>0x064B, 0xF1=>0x064C, 0xF2=>0x064D,
|
|
|
152 |
0xF3=>0x064E, 0xF4=>0x00F4, 0xF5=>0x064F, 0xF6=>0x0650, 0xF7=>0x00F7,
|
|
|
153 |
0xF8=>0x0651, 0xF9=>0x00F9, 0xFA=>0x0652, 0xFB=>0x00FB, 0xFC=>0x00FC,
|
|
|
154 |
0xFD=>0x200E, 0xFE=>0x200F, 0xFF=>0x06D2); // fin windows-1256
|
|
|
155 |
return $charset;
|
|
|
156 |
// arabic iso-8859-6 - http://czyborra.com/charsets/iso8859.html#ISO-8859-6
|
|
|
157 |
case 'iso-8859-6':
|
|
|
158 |
load_charset('iso-8859-1');
|
|
|
159 |
$trans = $GLOBALS['CHARSET']['iso-8859-1'];
|
|
|
160 |
$mod = Array(
|
|
|
161 |
0xA0=>0x00A0, 0xA4=>0x00A4, 0xAC=>0x060C, 0xAD=>0x00AD, 0xBB=>0x061B,
|
|
|
162 |
0xBF=>0x061F, 0xC1=>0x0621, 0xC2=>0x0622, 0xC3=>0x0623, 0xC4=>0x0624,
|
|
|
163 |
0xC5=>0x0625, 0xC6=>0x0626, 0xC7=>0x0627, 0xC8=>0x0628, 0xC9=>0x0629,
|
|
|
164 |
0xCA=>0x062A, 0xCB=>0x062B, 0xCC=>0x062C, 0xCD=>0x062D, 0xCE=>0x062E,
|
|
|
165 |
0xCF=>0x062F, 0xD0=>0x0630, 0xD1=>0x0631, 0xD2=>0x0632, 0xD3=>0x0633,
|
|
|
166 |
0xD4=>0x0634, 0xD5=>0x0635, 0xD6=>0x0636, 0xD7=>0x0637, 0xD8=>0x0638,
|
|
|
167 |
0xD9=>0x0639, 0xDA=>0x063A, 0xE0=>0x0640, 0xE1=>0x0641, 0xE2=>0x0642,
|
|
|
168 |
0xE3=>0x0643, 0xE4=>0x0644, 0xE5=>0x0645, 0xE6=>0x0646, 0xE7=>0x0647,
|
|
|
169 |
0xE8=>0x0648, 0xE9=>0x0649, 0xEA=>0x064A, 0xEB=>0x064B, 0xEC=>0x064C,
|
|
|
170 |
0xED=>0x064D, 0xEE=>0x064E, 0xEF=>0x064F, 0xF0=>0x0650, 0xF1=>0x0651,
|
|
|
171 |
0xF2=>0x0652
|
|
|
172 |
);
|
|
|
173 |
foreach ($mod as $num=>$val)
|
|
|
174 |
$trans[$num]=$val;
|
|
|
175 |
$GLOBALS['CHARSET'][$charset] = $trans;
|
|
|
176 |
return $charset;
|
|
|
177 |
|
|
|
178 |
// ------------------------------------------------------------------
|
|
|
179 |
|
|
|
180 |
// cas particulier pour les entites html (a completer eventuellement)
|
|
|
181 |
case 'html':
|
|
|
182 |
$GLOBALS['CHARSET'][$charset] = array (
|
|
|
183 |
'ldquo'=>'“', 'rdquo'=>'”',
|
|
|
184 |
'cent'=>'¢', 'pound'=>'£', 'curren'=>'¤', 'yen'=>'¥', 'brvbar'=>'¦',
|
|
|
185 |
'sect'=>'§', 'uml'=>'¨', 'ordf'=>'ª', 'laquo'=>'«', 'not'=>'¬',
|
|
|
186 |
'shy'=>'­', 'macr'=>'¯', 'deg'=>'°', 'plusmn'=>'±', 'sup2'=>'²',
|
|
|
187 |
'sup3'=>'³', 'acute'=>'´', 'micro'=>'µ', 'para'=>'¶', 'middot'=>'·',
|
|
|
188 |
'cedil'=>'¸', 'sup1'=>'¹', 'ordm'=>'º', 'raquo'=>'»', 'iquest'=>'¿',
|
|
|
189 |
'Agrave'=>'À', 'Aacute'=>'Á', 'Acirc'=>'Â', 'Atilde'=>'Ã', 'Auml'=>'Ä',
|
|
|
190 |
'Aring'=>'Å', 'AElig'=>'Æ', 'Ccedil'=>'Ç', 'Egrave'=>'È', 'Eacute'=>'É',
|
|
|
191 |
'Ecirc'=>'Ê', 'Euml'=>'Ë', 'Igrave'=>'Ì', 'Iacute'=>'Í', 'Icirc'=>'Î',
|
|
|
192 |
'Iuml'=>'Ï', 'ETH'=>'Ð', 'Ntilde'=>'Ñ', 'Ograve'=>'Ò', 'Oacute'=>'Ó',
|
|
|
193 |
'Ocirc'=>'Ô', 'Otilde'=>'Õ', 'Ouml'=>'Ö', 'times'=>'×', 'Oslash'=>'Ø',
|
|
|
194 |
'Ugrave'=>'Ù', 'Uacute'=>'Ú', 'Ucirc'=>'Û', 'Uuml'=>'Ü', 'Yacute'=>'Ý',
|
|
|
195 |
'THORN'=>'Þ', 'szlig'=>'ß', 'agrave'=>'à', 'aacute'=>'á', 'acirc'=>'â',
|
|
|
196 |
'atilde'=>'ã', 'auml'=>'ä', 'aring'=>'å', 'aelig'=>'æ', 'ccedil'=>'ç',
|
|
|
197 |
'egrave'=>'è', 'eacute'=>'é', 'ecirc'=>'ê', 'euml'=>'ë', 'igrave'=>'ì',
|
|
|
198 |
'iacute'=>'í', 'icirc'=>'î', 'iuml'=>'ï', 'eth'=>'ð', 'ntilde'=>'ñ',
|
|
|
199 |
'ograve'=>'ò', 'oacute'=>'ó', 'ocirc'=>'ô', 'otilde'=>'õ', 'ouml'=>'ö',
|
|
|
200 |
'divide'=>'÷', 'oslash'=>'ø', 'ugrave'=>'ù', 'uacute'=>'ú',
|
|
|
201 |
'ucirc'=>'û', 'uuml'=>'ü', 'yacute'=>'ý', 'thorn'=>'þ',
|
|
|
202 |
'nbsp' => " ", 'copy' => "(c)", 'reg' => "(r)", 'frac14' => "1/4",
|
|
|
203 |
'frac12' => "1/2", 'frac34' => "3/4", 'amp' => '&', 'quot' => '"',
|
|
|
204 |
'apos' => "'", 'lt' => '<', 'gt' => '>',
|
|
|
205 |
'mdash' => '—', 'ndash' => '–'
|
|
|
206 |
);
|
|
|
207 |
return $charset;
|
|
|
208 |
|
|
|
209 |
case 'mathml':
|
|
|
210 |
$GLOBALS['CHARSET'][$charset] = array (
|
|
|
211 |
'ac' => '',
|
|
|
212 |
'acd' => '',
|
|
|
213 |
'acE' => '&E#290;',
|
|
|
214 |
'acute' => '́',
|
|
|
215 |
'Afr' => '',
|
|
|
216 |
'afr' => '',
|
|
|
217 |
'aleph' => 'ℵ',
|
|
|
218 |
'alpha' => 'α',
|
|
|
219 |
'amalg' => '',
|
|
|
220 |
'amp' => '&',
|
|
|
221 |
'And' => '∧',
|
|
|
222 |
'and' => '∧',
|
|
|
223 |
'andand' => '',
|
|
|
224 |
'andd' => '',
|
|
|
225 |
'andslope' => '',
|
|
|
226 |
'andv' => '',
|
|
|
227 |
'ang' => '∠',
|
|
|
228 |
'ange' => '',
|
|
|
229 |
'angle' => '∠',
|
|
|
230 |
'angmsd' => '∡',
|
|
|
231 |
'angmsdaa' => '',
|
|
|
232 |
'angmsdab' => '',
|
|
|
233 |
'angmsdac' => '',
|
|
|
234 |
'angmsdad' => '',
|
|
|
235 |
'angmsdae' => '',
|
|
|
236 |
'angmsdaf' => '',
|
|
|
237 |
'angmsdag' => '',
|
|
|
238 |
'angmsdah' => '',
|
|
|
239 |
'angrt' => '∟',
|
|
|
240 |
'angrtvb' => '',
|
|
|
241 |
'angrtvbd' => '',
|
|
|
242 |
'angsph' => '∢',
|
|
|
243 |
'angst' => 'Å',
|
|
|
244 |
'angzarr' => '',
|
|
|
245 |
'Aopf' => '',
|
|
|
246 |
'ap' => '≈',
|
|
|
247 |
'apacir' => '',
|
|
|
248 |
'apE' => '',
|
|
|
249 |
'ape' => '≊',
|
|
|
250 |
'apid' => '≋',
|
|
|
251 |
'apos' => ''',
|
|
|
252 |
'approx' => '≈',
|
|
|
253 |
'approxeq' => '≊',
|
|
|
254 |
'Ascr' => '',
|
|
|
255 |
'ascr' => '',
|
|
|
256 |
'ast' => '∗',
|
|
|
257 |
'asymp' => '≍',
|
|
|
258 |
'awconint' => '∳',
|
|
|
259 |
'awint' => '',
|
|
|
260 |
'backcong' => '≌',
|
|
|
261 |
'backepsilon' => '',
|
|
|
262 |
'backprime' => '‵',
|
|
|
263 |
'backsim' => '∽',
|
|
|
264 |
'backsimeq' => '⋍',
|
|
|
265 |
'Backslash' => '∖',
|
|
|
266 |
'Barv' => '',
|
|
|
267 |
'barvee' => '⊽',
|
|
|
268 |
'Barwed' => '⌆',
|
|
|
269 |
'barwed' => '⊼',
|
|
|
270 |
'barwedge' => '⊼',
|
|
|
271 |
'bbrk' => '',
|
|
|
272 |
'bbrktbrk' => '',
|
|
|
273 |
'bcong' => '≌',
|
|
|
274 |
'becaus' => '∵',
|
|
|
275 |
'Because' => '∵',
|
|
|
276 |
'because' => '∵',
|
|
|
277 |
'bemptyv' => '',
|
|
|
278 |
'benzen' => '',
|
|
|
279 |
'benzena' => '',
|
|
|
280 |
'benzenb' => '',
|
|
|
281 |
'benzenc' => '',
|
|
|
282 |
'benzend' => '',
|
|
|
283 |
'benzene' => '',
|
|
|
284 |
'benzenf' => '',
|
|
|
285 |
'benzeng' => '',
|
|
|
286 |
'benzenh' => '',
|
|
|
287 |
'benzeni' => '',
|
|
|
288 |
'benzenj' => '',
|
|
|
289 |
'benzenk' => '',
|
|
|
290 |
'benzenl' => '',
|
|
|
291 |
'benzenm' => '',
|
|
|
292 |
'benzenn' => '',
|
|
|
293 |
'benzeno' => '',
|
|
|
294 |
'benzenp' => '',
|
|
|
295 |
'benzenq' => '',
|
|
|
296 |
'benzenr' => '',
|
|
|
297 |
'bepsi' => '',
|
|
|
298 |
'bernou' => 'ℬ',
|
|
|
299 |
'beta' => 'β',
|
|
|
300 |
'beth' => 'ℶ',
|
|
|
301 |
'between' => '≬',
|
|
|
302 |
'Bfr' => '',
|
|
|
303 |
'bfr' => '',
|
|
|
304 |
'bigcap' => '⋂',
|
|
|
305 |
'bigcirc' => '○',
|
|
|
306 |
'bigcup' => '⋃',
|
|
|
307 |
'bigodot' => '⊙',
|
|
|
308 |
'bigoplus' => '⊕',
|
|
|
309 |
'bigotimes' => '⊗',
|
|
|
310 |
'bigsqcup' => '⊔',
|
|
|
311 |
'bigstar' => '★',
|
|
|
312 |
'bigtriangledown' => '▽',
|
|
|
313 |
'bigtriangleup' => '△',
|
|
|
314 |
'biguplus' => '⊎',
|
|
|
315 |
'bigvee' => '⋁',
|
|
|
316 |
'bigwedge' => '⋀',
|
|
|
317 |
'bkarow' => '',
|
|
|
318 |
'blacklozenge' => '',
|
|
|
319 |
'blacksquare' => '■',
|
|
|
320 |
'blacktriangle' => '▴',
|
|
|
321 |
'blacktriangledown' => '▾',
|
|
|
322 |
'blacktriangleleft' => '◂',
|
|
|
323 |
'blacktriangleright' => '▸',
|
|
|
324 |
'blank' => '',
|
|
|
325 |
'blk12' => '▒',
|
|
|
326 |
'blk14' => '░',
|
|
|
327 |
'blk34' => '▓',
|
|
|
328 |
'block' => '█',
|
|
|
329 |
'bne' => '',
|
|
|
330 |
'bnequiv' => '',
|
|
|
331 |
'bNot' => '',
|
|
|
332 |
'bnot' => '⌐',
|
|
|
333 |
'Bopf' => '',
|
|
|
334 |
'bot' => '⊥',
|
|
|
335 |
'bottom' => '⊥',
|
|
|
336 |
'bowtie' => '⋈',
|
|
|
337 |
'boxbox' => '',
|
|
|
338 |
'boxminus' => '⊟',
|
|
|
339 |
'boxplus' => '⊞',
|
|
|
340 |
'boxtimes' => '⊠',
|
|
|
341 |
'bprime' => '‵',
|
|
|
342 |
'Breve' => '̆',
|
|
|
343 |
'breve' => '̆',
|
|
|
344 |
'brvbar' => '¦',
|
|
|
345 |
'Bscr' => '',
|
|
|
346 |
'bscr' => '',
|
|
|
347 |
'bsemi' => '',
|
|
|
348 |
'bsim' => '∽',
|
|
|
349 |
'bsime' => '⋍',
|
|
|
350 |
'bsol' => '\',
|
|
|
351 |
'bsolb' => '',
|
|
|
352 |
'bsolhsub' => '',
|
|
|
353 |
'bull' => '•',
|
|
|
354 |
'bullet' => '•',
|
|
|
355 |
'bump' => '≎',
|
|
|
356 |
'bumpe' => '≏',
|
|
|
357 |
'Bumpeq' => '≎',
|
|
|
358 |
'bumpeq' => '≏',
|
|
|
359 |
'Cap' => '⋒',
|
|
|
360 |
'cap' => '∩',
|
|
|
361 |
'capand' => '',
|
|
|
362 |
'capbrcup' => '',
|
|
|
363 |
'capcap' => '',
|
|
|
364 |
'capcup' => '',
|
|
|
365 |
'capdot' => '',
|
|
|
366 |
'caps' => '',
|
|
|
367 |
'caret' => '‸',
|
|
|
368 |
'caron' => '̌',
|
|
|
369 |
'ccaps' => '',
|
|
|
370 |
'Cconint' => '∰',
|
|
|
371 |
'ccups' => '',
|
|
|
372 |
'ccupssm' => '',
|
|
|
373 |
'cdot' => '⋅',
|
|
|
374 |
'cedil' => '̧',
|
|
|
375 |
'Cedilla' => '̧',
|
|
|
376 |
'cemptyv' => '',
|
|
|
377 |
'cent' => '¢',
|
|
|
378 |
'CenterDot' => '·',
|
|
|
379 |
'centerdot' => '·',
|
|
|
380 |
'Cfr' => '',
|
|
|
381 |
'cfr' => '',
|
|
|
382 |
'check' => '✓',
|
|
|
383 |
'checkmark' => '✓',
|
|
|
384 |
'chi' => 'χ',
|
|
|
385 |
'cir' => '∘',
|
|
|
386 |
'circ' => '∘',
|
|
|
387 |
'circeq' => '≗',
|
|
|
388 |
'circle' => '',
|
|
|
389 |
'circlearrowleft' => '↺',
|
|
|
390 |
'circlearrowright' => '↻',
|
|
|
391 |
'circledast' => '⊛',
|
|
|
392 |
'circledcirc' => '⊚',
|
|
|
393 |
'circleddash' => '⊝',
|
|
|
394 |
'CircleDot' => '⊙',
|
|
|
395 |
'circledR' => '¯',
|
|
|
396 |
'circledS' => '',
|
|
|
397 |
'circlef' => '●',
|
|
|
398 |
'circlefb' => '◒',
|
|
|
399 |
'circlefl' => '◐',
|
|
|
400 |
'circlefr' => '◑',
|
|
|
401 |
'circleft' => '◓',
|
|
|
402 |
'CircleMinus' => '⊖',
|
|
|
403 |
'CirclePlus' => '⊕',
|
|
|
404 |
'CircleTimes' => '⊗',
|
|
|
405 |
'cirE' => '',
|
|
|
406 |
'cire' => '≗',
|
|
|
407 |
'cirfnint' => '',
|
|
|
408 |
'cirmid' => '',
|
|
|
409 |
'cirscir' => '',
|
|
|
410 |
'ClockwiseContourIntegral' => '∲',
|
|
|
411 |
'CloseCurlyDoubleQuote' => '”',
|
|
|
412 |
'CloseCurlyQuote' => '’',
|
|
|
413 |
'clubs' => '♣',
|
|
|
414 |
'clubsuit' => '♣',
|
|
|
415 |
'Colon' => '∷',
|
|
|
416 |
'colon' => ':',
|
|
|
417 |
'Colone' => '',
|
|
|
418 |
'colone' => '≔',
|
|
|
419 |
'coloneq' => '≔',
|
|
|
420 |
'comma' => ',',
|
|
|
421 |
'commat' => '@',
|
|
|
422 |
'comp' => '∁',
|
|
|
423 |
'compfn' => '∘',
|
|
|
424 |
'complement' => '∁',
|
|
|
425 |
'cong' => '≅',
|
|
|
426 |
'congdot' => '',
|
|
|
427 |
'Congruent' => '≡',
|
|
|
428 |
'Conint' => '∯',
|
|
|
429 |
'conint' => '∮',
|
|
|
430 |
'ContourIntegral' => '∮',
|
|
|
431 |
'Copf' => 'ℂ',
|
|
|
432 |
'coprod' => '∐',
|
|
|
433 |
'Coproduct' => '∐',
|
|
|
434 |
'copy' => '©',
|
|
|
435 |
'copysr' => '℗',
|
|
|
436 |
'CounterClockwiseContourIntegral' => '∳',
|
|
|
437 |
'cross' => '☒',
|
|
|
438 |
'Cscr' => '',
|
|
|
439 |
'cscr' => '',
|
|
|
440 |
'csub' => '',
|
|
|
441 |
'csube' => '',
|
|
|
442 |
'csup' => '',
|
|
|
443 |
'csupe' => '',
|
|
|
444 |
'ctdot' => '⋯',
|
|
|
445 |
'cudarrl' => '',
|
|
|
446 |
'cudarrr' => '',
|
|
|
447 |
'cuepr' => '⋞',
|
|
|
448 |
'cuesc' => '⋟',
|
|
|
449 |
'cularr' => '↶',
|
|
|
450 |
'cularrp' => '',
|
|
|
451 |
'Cup' => '⌣',
|
|
|
452 |
'cup' => '∪',
|
|
|
453 |
'cupbrcap' => '',
|
|
|
454 |
'CupCap' => '≍',
|
|
|
455 |
'cupcap' => '',
|
|
|
456 |
'cupcup' => '',
|
|
|
457 |
'cupdot' => '⊍',
|
|
|
458 |
'cupor' => '',
|
|
|
459 |
'cups' => '',
|
|
|
460 |
'curarr' => '↷',
|
|
|
461 |
'curarrm' => '',
|
|
|
462 |
'curlyeqprec' => '⋞',
|
|
|
463 |
'curlyeqsucc' => '⋟',
|
|
|
464 |
'curlyvee' => '⋎',
|
|
|
465 |
'curlywedge' => '⋏',
|
|
|
466 |
'curren' => '¤',
|
|
|
467 |
'curvearrowleft' => '↶',
|
|
|
468 |
'curvearrowright' => '↷',
|
|
|
469 |
'cuvee' => '⋎',
|
|
|
470 |
'cuwed' => '⋏',
|
|
|
471 |
'cwconint' => '∲',
|
|
|
472 |
'cwint' => '∱',
|
|
|
473 |
'cylcty' => '⌭',
|
|
|
474 |
'Dagger' => '‡',
|
|
|
475 |
'dagger' => '†',
|
|
|
476 |
'daleth' => 'ℸ',
|
|
|
477 |
'Darr' => '↡',
|
|
|
478 |
'dArr' => '⇓',
|
|
|
479 |
'darr' => '↓',
|
|
|
480 |
'dash' => '‐',
|
|
|
481 |
'Dashv' => '',
|
|
|
482 |
'dashv' => '⊣',
|
|
|
483 |
'dbkarow' => '',
|
|
|
484 |
'dblac' => '̋',
|
|
|
485 |
'ddagger' => '‡',
|
|
|
486 |
'ddarr' => '⇊',
|
|
|
487 |
'DDotrahd' => '',
|
|
|
488 |
'ddotseq' => '',
|
|
|
489 |
'deg' => '°',
|
|
|
490 |
'Del' => '∇',
|
|
|
491 |
'Delta' => 'Δ',
|
|
|
492 |
'delta' => 'δ',
|
|
|
493 |
'demptyv' => '',
|
|
|
494 |
'dfisht' => '',
|
|
|
495 |
'Dfr' => '',
|
|
|
496 |
'dfr' => '',
|
|
|
497 |
'dHar' => '',
|
|
|
498 |
'dharl' => '⇃',
|
|
|
499 |
'dharr' => '⇂',
|
|
|
500 |
'DiacriticalAcute' => '́',
|
|
|
501 |
'DiacriticalDot' => '̇',
|
|
|
502 |
'DiacriticalDoubleAcute' => '̋',
|
|
|
503 |
'DiacriticalGrave' => '̀',
|
|
|
504 |
'DiacriticalLeftArrow' => '⃖',
|
|
|
505 |
'DiacriticalLeftRightArrow' => '⃡',
|
|
|
506 |
'DiacriticalLeftRightVector' => '',
|
|
|
507 |
'DiacriticalLeftVector' => '⃐',
|
|
|
508 |
'DiacriticalRightArrow' => '⃗',
|
|
|
509 |
'DiacriticalRightVector' => '⃑',
|
|
|
510 |
'DiacriticalTilde' => '̃',
|
|
|
511 |
'diam' => '⋄',
|
|
|
512 |
'diamond' => '⋄',
|
|
|
513 |
'diamondf' => '',
|
|
|
514 |
'diamondsuit' => '♢',
|
|
|
515 |
'diamonfb' => '',
|
|
|
516 |
'diamonfl' => '',
|
|
|
517 |
'diamonfr' => '',
|
|
|
518 |
'diamonft' => '',
|
|
|
519 |
'diams' => '♢',
|
|
|
520 |
'die' => '̈',
|
|
|
521 |
'digamma' => 'Ϝ',
|
|
|
522 |
'disin' => '',
|
|
|
523 |
'div' => '÷',
|
|
|
524 |
'divide' => '÷',
|
|
|
525 |
'divideontimes' => '⋇',
|
|
|
526 |
'divonx' => '⋇',
|
|
|
527 |
'dlcorn' => '⌞',
|
|
|
528 |
'dlcrop' => '⌍',
|
|
|
529 |
'dollar' => '$',
|
|
|
530 |
'Dopf' => '',
|
|
|
531 |
'Dot' => '̈',
|
|
|
532 |
'dot' => '̇',
|
|
|
533 |
'DotDot' => '⃜',
|
|
|
534 |
'doteq' => '≐',
|
|
|
535 |
'doteqdot' => '≑',
|
|
|
536 |
'DotEqual' => '≐',
|
|
|
537 |
'dotminus' => '∸',
|
|
|
538 |
'dotplus' => '∔',
|
|
|
539 |
'dotsquare' => '⊡',
|
|
|
540 |
'doublebarwedge' => '⌆',
|
|
|
541 |
'DoubleContourIntegral' => '∯',
|
|
|
542 |
'DoubleDot' => '̈',
|
|
|
543 |
'DoubleDownArrow' => '⇓',
|
|
|
544 |
'DoubleLeftArrow' => '⇐',
|
|
|
545 |
'DoubleLeftRightArrow' => '⇔',
|
|
|
546 |
'DoubleLongLeftArrow' => '',
|
|
|
547 |
'DoubleLongLeftRightArrow' => '',
|
|
|
548 |
'DoubleLongRightArrow' => '',
|
|
|
549 |
'DoubleRightArrow' => '⇒',
|
|
|
550 |
'DoubleRightTee' => '⊨',
|
|
|
551 |
'DoubleUpArrow' => '⇑',
|
|
|
552 |
'DoubleUpDownArrow' => '⇕',
|
|
|
553 |
'DoubleVerticalBar' => '∥',
|
|
|
554 |
'DownArrow' => '↓',
|
|
|
555 |
'Downarrow' => '⇓',
|
|
|
556 |
'downarrow' => '↓',
|
|
|
557 |
'DownArrowUpArrow' => '',
|
|
|
558 |
'downdownarrows' => '⇊',
|
|
|
559 |
'downharpoonleft' => '⇃',
|
|
|
560 |
'downharpoonright' => '⇂',
|
|
|
561 |
'DownLeftVector' => '↽',
|
|
|
562 |
'DownRightVector' => '⇁',
|
|
|
563 |
'DownTee' => '⊤',
|
|
|
564 |
'drbkarow' => '',
|
|
|
565 |
'drcorn' => '⌟',
|
|
|
566 |
'drcrop' => '⌌',
|
|
|
567 |
'Dscr' => '',
|
|
|
568 |
'dscr' => '',
|
|
|
569 |
'dsol' => '',
|
|
|
570 |
'dtdot' => '⋱',
|
|
|
571 |
'dtri' => '▿',
|
|
|
572 |
'dtrif' => '▾',
|
|
|
573 |
'duarr' => '',
|
|
|
574 |
'duhar' => '',
|
|
|
575 |
'dwangle' => '',
|
|
|
576 |
'dzigrarr' => '⇝',
|
|
|
577 |
'easter' => '≛',
|
|
|
578 |
'ecir' => '≖',
|
|
|
579 |
'ecolon' => '≕',
|
|
|
580 |
'eDDot' => '',
|
|
|
581 |
'eDot' => '≑',
|
|
|
582 |
'efDot' => '≒',
|
|
|
583 |
'Efr' => '',
|
|
|
584 |
'efr' => '',
|
|
|
585 |
'eg' => '',
|
|
|
586 |
'egs' => '⋝',
|
|
|
587 |
'egsdot' => '',
|
|
|
588 |
'el' => '',
|
|
|
589 |
'Element' => '∈',
|
|
|
590 |
'elinters' => '',
|
|
|
591 |
'ell' => 'ℓ',
|
|
|
592 |
'els' => '⋜',
|
|
|
593 |
'elsdot' => '',
|
|
|
594 |
'empty' => '',
|
|
|
595 |
'emptyset' => '',
|
|
|
596 |
'emptyv' => '∅',
|
|
|
597 |
'emsp' => ' ',
|
|
|
598 |
'emsp13' => ' ',
|
|
|
599 |
'emsp14' => ' ',
|
|
|
600 |
'ensp' => ' ',
|
|
|
601 |
'Eopf' => '',
|
|
|
602 |
'epar' => '⋕',
|
|
|
603 |
'eparsl' => '',
|
|
|
604 |
'eplus' => '',
|
|
|
605 |
'epsi' => '∊',
|
|
|
606 |
'epsiv' => 'ε',
|
|
|
607 |
'eqcirc' => '≖',
|
|
|
608 |
'eqcolon' => '≕',
|
|
|
609 |
'eqsim' => '≂',
|
|
|
610 |
'eqslantgtr' => '⋝',
|
|
|
611 |
'eqslantless' => '⋜',
|
|
|
612 |
'equals' => '=',
|
|
|
613 |
'EqualTilde' => '≂',
|
|
|
614 |
'equest' => '≟',
|
|
|
615 |
'Equilibrium' => '⇌',
|
|
|
616 |
'equiv' => '≡',
|
|
|
617 |
'equivDD' => '',
|
|
|
618 |
'eqvparsl' => '',
|
|
|
619 |
'erarr' => '',
|
|
|
620 |
'erDot' => '≓',
|
|
|
621 |
'Escr' => '',
|
|
|
622 |
'escr' => '',
|
|
|
623 |
'esdot' => '≐',
|
|
|
624 |
'Esim' => '',
|
|
|
625 |
'esim' => '≂',
|
|
|
626 |
'eta' => 'η',
|
|
|
627 |
'excl' => '!',
|
|
|
628 |
'exist' => '∃',
|
|
|
629 |
'Exists' => '∃',
|
|
|
630 |
'fallingdotseq' => '≒',
|
|
|
631 |
'female' => '♀',
|
|
|
632 |
'ffilig' => 'ffi',
|
|
|
633 |
'fflig' => 'ff',
|
|
|
634 |
'ffllig' => 'ffl',
|
|
|
635 |
'Ffr' => '',
|
|
|
636 |
'ffr' => '',
|
|
|
637 |
'filig' => 'fi',
|
|
|
638 |
'fjlig' => '',
|
|
|
639 |
'flat' => '♭',
|
|
|
640 |
'fllig' => 'fl',
|
|
|
641 |
'fltns' => '',
|
|
|
642 |
'Fopf' => '',
|
|
|
643 |
'ForAll' => '∀',
|
|
|
644 |
'forall' => '∀',
|
|
|
645 |
'fork' => '⋔',
|
|
|
646 |
'forkv' => '',
|
|
|
647 |
'fpartint' => '',
|
|
|
648 |
'frac12' => '½',
|
|
|
649 |
'frac13' => '⅓',
|
|
|
650 |
'frac14' => '¼',
|
|
|
651 |
'frac15' => '⅕',
|
|
|
652 |
'frac16' => '⅙',
|
|
|
653 |
'frac18' => '⅛',
|
|
|
654 |
'frac23' => '≔',
|
|
|
655 |
'frac25' => '⅖',
|
|
|
656 |
'frac34' => '¾',
|
|
|
657 |
'frac35' => '⅗',
|
|
|
658 |
'frac38' => '⅜',
|
|
|
659 |
'frac45' => '⅘',
|
|
|
660 |
'frac56' => '⅚',
|
|
|
661 |
'frac58' => '⅝',
|
|
|
662 |
'frac78' => '⅞',
|
|
|
663 |
'frown' => '⌢',
|
|
|
664 |
'Fscr' => '',
|
|
|
665 |
'fscr' => '',
|
|
|
666 |
'Gamma' => 'Γ',
|
|
|
667 |
'gamma' => 'γ',
|
|
|
668 |
'Gammad' => 'Ϝ',
|
|
|
669 |
'gammad' => 'Ϝ',
|
|
|
670 |
'gap' => '≳',
|
|
|
671 |
'gE' => '≧',
|
|
|
672 |
'ge' => '≥',
|
|
|
673 |
'gEl' => '⋛',
|
|
|
674 |
'gel' => '⋛',
|
|
|
675 |
'geq' => '≥',
|
|
|
676 |
'geqq' => '≧',
|
|
|
677 |
'geqslant' => '',
|
|
|
678 |
'ges' => '',
|
|
|
679 |
'gescc' => '',
|
|
|
680 |
'gesdot' => '',
|
|
|
681 |
'gesdoto' => '',
|
|
|
682 |
'gesdotol' => '',
|
|
|
683 |
'gesl' => '',
|
|
|
684 |
'gesles' => '',
|
|
|
685 |
'Gfr' => '',
|
|
|
686 |
'gfr' => '',
|
|
|
687 |
'Gg' => '⋙',
|
|
|
688 |
'gg' => '≫',
|
|
|
689 |
'ggg' => '⋙',
|
|
|
690 |
'gimel' => 'ℷ',
|
|
|
691 |
'gl' => '≷',
|
|
|
692 |
'gla' => '',
|
|
|
693 |
'glE' => '',
|
|
|
694 |
'glj' => '',
|
|
|
695 |
'gnap' => '',
|
|
|
696 |
'gnapprox' => '',
|
|
|
697 |
'gnE' => '≩',
|
|
|
698 |
'gne' => '≩',
|
|
|
699 |
'gneq' => '≩',
|
|
|
700 |
'gneqq' => '≩',
|
|
|
701 |
'gnsim' => '⋧',
|
|
|
702 |
'Gopf' => '',
|
|
|
703 |
'grave' => '̀',
|
|
|
704 |
'GreaterEqual' => '≥',
|
|
|
705 |
'GreaterEqualLess' => '⋛',
|
|
|
706 |
'GreaterFullEqual' => '≧',
|
|
|
707 |
'GreaterLess' => '≷',
|
|
|
708 |
'GreaterSlantEqual' => '',
|
|
|
709 |
'GreaterTilde' => '≳',
|
|
|
710 |
'Gscr' => '',
|
|
|
711 |
'gscr' => '',
|
|
|
712 |
'gsim' => '≳',
|
|
|
713 |
'gsime' => '',
|
|
|
714 |
'gsiml' => '',
|
|
|
715 |
'Gt' => '≫',
|
|
|
716 |
'gt' => '>',
|
|
|
717 |
'gtcc' => '',
|
|
|
718 |
'gtcir' => '',
|
|
|
719 |
'gtdot' => '⋗',
|
|
|
720 |
'gtlPar' => '',
|
|
|
721 |
'gtquest' => '',
|
|
|
722 |
'gtrapprox' => '≳',
|
|
|
723 |
'gtrarr' => '',
|
|
|
724 |
'gtrdot' => '⋗',
|
|
|
725 |
'gtreqless' => '⋛',
|
|
|
726 |
'gtreqqless' => '⋛',
|
|
|
727 |
'gtrless' => '≷',
|
|
|
728 |
'gtrsim' => '≳',
|
|
|
729 |
'gvertneqq' => '',
|
|
|
730 |
'gvnE' => '',
|
|
|
731 |
'Hacek' => '̌',
|
|
|
732 |
'hairsp' => ' ',
|
|
|
733 |
'half' => '½',
|
|
|
734 |
'hamilt' => 'ℋ',
|
|
|
735 |
'hArr' => '⇔',
|
|
|
736 |
'harr' => '↔',
|
|
|
737 |
'harrcir' => '',
|
|
|
738 |
'harrw' => '↭',
|
|
|
739 |
'Hat' => '̂',
|
|
|
740 |
'hbar' => '',
|
|
|
741 |
'hbenzen' => '',
|
|
|
742 |
'hbenzena' => '',
|
|
|
743 |
'hbenzenb' => '',
|
|
|
744 |
'hbenzenc' => '',
|
|
|
745 |
'hbenzend' => '',
|
|
|
746 |
'hbenzene' => '',
|
|
|
747 |
'hbenzenf' => '',
|
|
|
748 |
'hbenzeng' => '',
|
|
|
749 |
'hbenzenh' => '',
|
|
|
750 |
'hbenzeni' => '',
|
|
|
751 |
'hbenzenj' => '',
|
|
|
752 |
'hbenzenk' => '',
|
|
|
753 |
'hbenzenl' => '',
|
|
|
754 |
'hbenzenm' => '',
|
|
|
755 |
'hbenzenn' => '',
|
|
|
756 |
'hbenzeno' => '',
|
|
|
757 |
'hbenzenp' => '',
|
|
|
758 |
'hbenzenq' => '',
|
|
|
759 |
'hbenzenr' => '',
|
|
|
760 |
'hearts' => '♡',
|
|
|
761 |
'heartsuit' => '♡',
|
|
|
762 |
'hellip' => '…',
|
|
|
763 |
'hercon' => '⊹',
|
|
|
764 |
'Hfr' => '',
|
|
|
765 |
'hfr' => '',
|
|
|
766 |
'hksearow' => '',
|
|
|
767 |
'hkswarow' => '',
|
|
|
768 |
'hoarr' => '',
|
|
|
769 |
'homtht' => '∻',
|
|
|
770 |
'hookleftarrow' => '↩',
|
|
|
771 |
'hookrightarrow' => '↪',
|
|
|
772 |
'Hopf' => '',
|
|
|
773 |
'horbar' => '―',
|
|
|
774 |
'Hscr' => '',
|
|
|
775 |
'hscr' => '',
|
|
|
776 |
'hslash' => 'ℏ',
|
|
|
777 |
'HumpDownHump' => '≎',
|
|
|
778 |
'HumpEqual' => '≏',
|
|
|
779 |
'hybull' => '⁃',
|
|
|
780 |
'hyphen' => '',
|
|
|
781 |
'iexcl' => '¡',
|
|
|
782 |
'iff' => '',
|
|
|
783 |
'Ifr' => '',
|
|
|
784 |
'ifr' => '',
|
|
|
785 |
'iiiint' => '',
|
|
|
786 |
'iiint' => '∭',
|
|
|
787 |
'iinfin' => '',
|
|
|
788 |
'iiota' => '℩',
|
|
|
789 |
'Im' => 'ℑ',
|
|
|
790 |
'image' => 'ℑ',
|
|
|
791 |
'imath' => 'ı',
|
|
|
792 |
'imof' => '⊷',
|
|
|
793 |
'imped' => '',
|
|
|
794 |
'Implies' => '⇒',
|
|
|
795 |
'in' => '∊',
|
|
|
796 |
'incare' => '℅',
|
|
|
797 |
'infin' => '∞',
|
|
|
798 |
'infintie' => '',
|
|
|
799 |
'Int' => '∬',
|
|
|
800 |
'int' => '∫',
|
|
|
801 |
'intcal' => '⊺',
|
|
|
802 |
'Integral' => '∫',
|
|
|
803 |
'intercal' => '⊺',
|
|
|
804 |
'Intersection' => '⋂',
|
|
|
805 |
'intlarhk' => '',
|
|
|
806 |
'intprod' => '',
|
|
|
807 |
'Iopf' => '',
|
|
|
808 |
'iota' => 'ι',
|
|
|
809 |
'iprod' => '',
|
|
|
810 |
'iquest' => '¿',
|
|
|
811 |
'Iscr' => '',
|
|
|
812 |
'iscr' => '',
|
|
|
813 |
'isin' => '∊',
|
|
|
814 |
'isindot' => '',
|
|
|
815 |
'isinE' => '',
|
|
|
816 |
'isins' => '',
|
|
|
817 |
'isinsv' => '',
|
|
|
818 |
'isinv' => '∈',
|
|
|
819 |
'Jfr' => '',
|
|
|
820 |
'jfr' => '',
|
|
|
821 |
'jmath' => '',
|
|
|
822 |
'Jopf' => '',
|
|
|
823 |
'Jscr' => '',
|
|
|
824 |
'jscr' => '',
|
|
|
825 |
'kappa' => 'κ',
|
|
|
826 |
'kappav' => 'ϰ',
|
|
|
827 |
'Kfr' => '',
|
|
|
828 |
'kfr' => '',
|
|
|
829 |
'Kopf' => '',
|
|
|
830 |
'Kscr' => '',
|
|
|
831 |
'kscr' => '',
|
|
|
832 |
'lAarr' => '⇚',
|
|
|
833 |
'laemptyv' => '',
|
|
|
834 |
'lagran' => 'ℒ',
|
|
|
835 |
'Lambda' => 'Λ',
|
|
|
836 |
'lambda' => 'λ',
|
|
|
837 |
'Lang' => '《',
|
|
|
838 |
'lang' => '〈',
|
|
|
839 |
'langd' => '',
|
|
|
840 |
'langle' => '〈',
|
|
|
841 |
'lap' => '≲',
|
|
|
842 |
'laquo' => '«',
|
|
|
843 |
'Larr' => '↞',
|
|
|
844 |
'lArr' => '⇐',
|
|
|
845 |
'larr' => '←',
|
|
|
846 |
'larrbfs' => '',
|
|
|
847 |
'larrfs' => '',
|
|
|
848 |
'larrhk' => '↩',
|
|
|
849 |
'larrlp' => '↫',
|
|
|
850 |
'larrpl' => '',
|
|
|
851 |
'larrsim' => '',
|
|
|
852 |
'larrtl' => '↢',
|
|
|
853 |
'lat' => '',
|
|
|
854 |
'lAtail' => '',
|
|
|
855 |
'latail' => '',
|
|
|
856 |
'late' => '',
|
|
|
857 |
'lates' => '',
|
|
|
858 |
'lBarr' => '',
|
|
|
859 |
'lbarr' => '',
|
|
|
860 |
'lbbrk' => '〔',
|
|
|
861 |
'lbrace' => '{',
|
|
|
862 |
'lbrack' => '[',
|
|
|
863 |
'lbrke' => '',
|
|
|
864 |
'lbrksld' => '',
|
|
|
865 |
'lbrkslu' => '',
|
|
|
866 |
'lceil' => '⌈',
|
|
|
867 |
'lcub' => '{',
|
|
|
868 |
'ldca' => '',
|
|
|
869 |
'ldquo' => '“',
|
|
|
870 |
'ldquor' => '„',
|
|
|
871 |
'ldrdhar' => '',
|
|
|
872 |
'ldrushar' => '',
|
|
|
873 |
'ldsh' => '↲',
|
|
|
874 |
'lE' => '≦',
|
|
|
875 |
'le' => '≤',
|
|
|
876 |
'LeftAngleBracket' => '〈',
|
|
|
877 |
'LeftArrow' => '←',
|
|
|
878 |
'Leftarrow' => '⇐',
|
|
|
879 |
'leftarrow' => '←',
|
|
|
880 |
'LeftArrowRightArrow' => '⇆',
|
|
|
881 |
'leftarrowtail' => '↢',
|
|
|
882 |
'LeftCeiling' => '⌈',
|
|
|
883 |
'LeftDownVector' => '⇃',
|
|
|
884 |
'LeftFloor' => '⌊',
|
|
|
885 |
'leftharpoondown' => '↽',
|
|
|
886 |
'leftharpoonup' => '↼',
|
|
|
887 |
'leftleftarrows' => '⇇',
|
|
|
888 |
'LeftRightArrow' => '↔',
|
|
|
889 |
'Leftrightarrow' => '⇔',
|
|
|
890 |
'leftrightarrow' => '↔',
|
|
|
891 |
'leftrightarrows' => '⇆',
|
|
|
892 |
'leftrightharpoons' => '⇋',
|
|
|
893 |
'leftrightsquigarrow' => '↭',
|
|
|
894 |
'LeftTee' => '⊣',
|
|
|
895 |
'leftthreetimes' => '⋋',
|
|
|
896 |
'LeftTriangle' => '⊲',
|
|
|
897 |
'LeftTriangleEqual' => '⊴',
|
|
|
898 |
'LeftUpVector' => '↿',
|
|
|
899 |
'LeftVector' => '↼',
|
|
|
900 |
'lEg' => '⋚',
|
|
|
901 |
'leg' => '⋚',
|
|
|
902 |
'leq' => '≤',
|
|
|
903 |
'leqq' => '≦',
|
|
|
904 |
'leqslant' => '',
|
|
|
905 |
'les' => '',
|
|
|
906 |
'lescc' => '',
|
|
|
907 |
'lesdot' => '',
|
|
|
908 |
'lesdoto' => '',
|
|
|
909 |
'lesdotor' => '',
|
|
|
910 |
'lesg' => '',
|
|
|
911 |
'lesges' => '',
|
|
|
912 |
'lessapprox' => '≲',
|
|
|
913 |
'lessdot' => '⋖',
|
|
|
914 |
'lesseqgtr' => '⋚',
|
|
|
915 |
'lesseqqgtr' => '⋚',
|
|
|
916 |
'LessEqualGreater' => '⋚',
|
|
|
917 |
'LessFullEqual' => '≦',
|
|
|
918 |
'LessGreater' => '≶',
|
|
|
919 |
'lessgtr' => '≶',
|
|
|
920 |
'lesssim' => '≲',
|
|
|
921 |
'LessSlantEqual' => '',
|
|
|
922 |
'LessTilde' => '≲',
|
|
|
923 |
'lfisht' => '',
|
|
|
924 |
'lfloor' => '⌊',
|
|
|
925 |
'Lfr' => '',
|
|
|
926 |
'lfr' => '',
|
|
|
927 |
'lg' => '≶',
|
|
|
928 |
'lgE' => '',
|
|
|
929 |
'lHar' => '',
|
|
|
930 |
'lhard' => '↽',
|
|
|
931 |
'lharu' => '↼',
|
|
|
932 |
'lharul' => '',
|
|
|
933 |
'lhblk' => '▄',
|
|
|
934 |
'Ll' => '⋘',
|
|
|
935 |
'll' => '≪',
|
|
|
936 |
'llarr' => '⇇',
|
|
|
937 |
'llcorner' => '⌞',
|
|
|
938 |
'Lleftarrow' => '⇚',
|
|
|
939 |
'llhard' => '',
|
|
|
940 |
'lltri' => '',
|
|
|
941 |
'lmoust' => '',
|
|
|
942 |
'lmoustache' => '',
|
|
|
943 |
'lnap' => '',
|
|
|
944 |
'lnapprox' => '',
|
|
|
945 |
'lnE' => '≨',
|
|
|
946 |
'lne' => '≨',
|
|
|
947 |
'lneq' => '≨',
|
|
|
948 |
'lneqq' => '≨',
|
|
|
949 |
'lnsim' => '⋦',
|
|
|
950 |
'loang' => '〘',
|
|
|
951 |
'loarr' => '',
|
|
|
952 |
'lobrk' => '〚',
|
|
|
953 |
'LongLeftArrow' => '',
|
|
|
954 |
'Longleftarrow' => '',
|
|
|
955 |
'longleftarrow' => '',
|
|
|
956 |
'LongLeftRightArrow' => '',
|
|
|
957 |
'Longleftrightarrow' => '',
|
|
|
958 |
'longleftrightarrow' => '',
|
|
|
959 |
'longmapsto' => '',
|
|
|
960 |
'LongRightArrow' => '',
|
|
|
961 |
'Longrightarrow' => '',
|
|
|
962 |
'longrightarrow' => '',
|
|
|
963 |
'looparrowleft' => '↫',
|
|
|
964 |
'looparrowright' => '↬',
|
|
|
965 |
'lopar' => '',
|
|
|
966 |
'Lopf' => '',
|
|
|
967 |
'loplus' => '',
|
|
|
968 |
'lotimes' => '',
|
|
|
969 |
'lowast' => '∗',
|
|
|
970 |
'lowbar' => '_',
|
|
|
971 |
'LowerLeftArrow' => '↙',
|
|
|
972 |
'LowerRightArrow' => '↘',
|
|
|
973 |
'loz' => '◊',
|
|
|
974 |
'lozenge' => '◊',
|
|
|
975 |
'lozf' => '',
|
|
|
976 |
'lpar' => '(',
|
|
|
977 |
'lparlt' => '',
|
|
|
978 |
'lrarr' => '⇆',
|
|
|
979 |
'lrcorner' => '⌟',
|
|
|
980 |
'lrhar' => '⇋',
|
|
|
981 |
'lrhard' => '',
|
|
|
982 |
'lrtri' => '',
|
|
|
983 |
'Lscr' => '',
|
|
|
984 |
'lscr' => '',
|
|
|
985 |
'Lsh' => '↰',
|
|
|
986 |
'lsh' => '↰',
|
|
|
987 |
'lsim' => '≲',
|
|
|
988 |
'lsime' => '',
|
|
|
989 |
'lsimg' => '',
|
|
|
990 |
'lsqb' => '[',
|
|
|
991 |
'lsquo' => '‘',
|
|
|
992 |
'lsquor' => '‚',
|
|
|
993 |
'Lt' => '≪',
|
|
|
994 |
'lt' => '<',
|
|
|
995 |
'ltcc' => '',
|
|
|
996 |
'ltcir' => '',
|
|
|
997 |
'ltdot' => '⋖',
|
|
|
998 |
'lthree' => '⋋',
|
|
|
999 |
'ltimes' => '⋉',
|
|
|
1000 |
'ltlarr' => '',
|
|
|
1001 |
'ltquest' => '',
|
|
|
1002 |
'ltri' => '◃',
|
|
|
1003 |
'ltrie' => '⊴',
|
|
|
1004 |
'ltrif' => '◂',
|
|
|
1005 |
'ltrPar' => '',
|
|
|
1006 |
'lurdshar' => '',
|
|
|
1007 |
'luruhar' => '',
|
|
|
1008 |
'lvertneqq' => '',
|
|
|
1009 |
'lvnE' => '',
|
|
|
1010 |
'macr' => '̄',
|
|
|
1011 |
'male' => '♂',
|
|
|
1012 |
'malt' => '✠',
|
|
|
1013 |
'maltese' => '✠',
|
|
|
1014 |
'Map' => '',
|
|
|
1015 |
'map' => '↦',
|
|
|
1016 |
'mapsto' => '↦',
|
|
|
1017 |
'marker' => '',
|
|
|
1018 |
'mcomma' => '',
|
|
|
1019 |
'mdash' => '—',
|
|
|
1020 |
'mDDot' => '∺',
|
|
|
1021 |
'measuredangle' => '∡',
|
|
|
1022 |
'Mfr' => '',
|
|
|
1023 |
'mfr' => '',
|
|
|
1024 |
'mho' => '℧',
|
|
|
1025 |
'micro' => 'µ',
|
|
|
1026 |
'mid' => '∣',
|
|
|
1027 |
'midast' => '∗',
|
|
|
1028 |
'midcir' => '',
|
|
|
1029 |
'middot' => '·',
|
|
|
1030 |
'minus' => '−',
|
|
|
1031 |
'minusb' => '⊟',
|
|
|
1032 |
'minusd' => '∸',
|
|
|
1033 |
'minusdu' => '',
|
|
|
1034 |
'MinusPlus' => '∓',
|
|
|
1035 |
'mlcp' => '',
|
|
|
1036 |
'mldr' => '',
|
|
|
1037 |
'mnplus' => '∓',
|
|
|
1038 |
'models' => '⊧',
|
|
|
1039 |
'Mopf' => '',
|
|
|
1040 |
'mp' => '∓',
|
|
|
1041 |
'Mscr' => '',
|
|
|
1042 |
'mscr' => '',
|
|
|
1043 |
'mstpos' => '∾',
|
|
|
1044 |
'mu' => 'μ',
|
|
|
1045 |
'multimap' => '⊸',
|
|
|
1046 |
'mumap' => '⊸',
|
|
|
1047 |
'nabla' => '∇',
|
|
|
1048 |
'nang' => '',
|
|
|
1049 |
'nap' => '≉',
|
|
|
1050 |
'napE' => '',
|
|
|
1051 |
'napid' => '',
|
|
|
1052 |
'napprox' => '≉',
|
|
|
1053 |
'natur' => '♮',
|
|
|
1054 |
'natural' => '♮',
|
|
|
1055 |
'nbsp' => ' ',
|
|
|
1056 |
'ncap' => '',
|
|
|
1057 |
'ncong' => '≇',
|
|
|
1058 |
'ncongdot' => '',
|
|
|
1059 |
'ncup' => '',
|
|
|
1060 |
'ndash' => '–',
|
|
|
1061 |
'ne' => '≠',
|
|
|
1062 |
'nearhk' => '',
|
|
|
1063 |
'neArr' => '⇗',
|
|
|
1064 |
'nearr' => '↗',
|
|
|
1065 |
'nearrow' => '↗',
|
|
|
1066 |
'nedot' => '',
|
|
|
1067 |
'nequiv' => '≢',
|
|
|
1068 |
'nesear' => '',
|
|
|
1069 |
'NestedGreaterGreater' => '≫',
|
|
|
1070 |
'NestedLessLess' => '≪',
|
|
|
1071 |
'nexist' => '∄',
|
|
|
1072 |
'nexists' => '∄',
|
|
|
1073 |
'Nfr' => '',
|
|
|
1074 |
'nfr' => '',
|
|
|
1075 |
'ngE' => '≱',
|
|
|
1076 |
'nge' => '',
|
|
|
1077 |
'ngeq' => '',
|
|
|
1078 |
'ngeqq' => '≱',
|
|
|
1079 |
'ngeqslant' => '≱',
|
|
|
1080 |
'nges' => '≱',
|
|
|
1081 |
'nGg' => '',
|
|
|
1082 |
'ngsim' => '≵',
|
|
|
1083 |
'nGt' => '',
|
|
|
1084 |
'ngt' => '≯',
|
|
|
1085 |
'ngtr' => '≯',
|
|
|
1086 |
'nGtv' => '',
|
|
|
1087 |
'nhArr' => '⇎',
|
|
|
1088 |
'nharr' => '↮',
|
|
|
1089 |
'nhpar' => '',
|
|
|
1090 |
'ni' => '∍',
|
|
|
1091 |
'nis' => '',
|
|
|
1092 |
'nisd' => '',
|
|
|
1093 |
'niv' => '∋',
|
|
|
1094 |
'nlArr' => '⇍',
|
|
|
1095 |
'nlarr' => '↚',
|
|
|
1096 |
'nldr' => '‥',
|
|
|
1097 |
'nlE' => '≰',
|
|
|
1098 |
'nle' => '',
|
|
|
1099 |
'nLeftarrow' => '⇍',
|
|
|
1100 |
'nleftarrow' => '↚',
|
|
|
1101 |
'nLeftrightarrow' => '⇎',
|
|
|
1102 |
'nleftrightarrow' => '↮',
|
|
|
1103 |
'nleq' => '',
|
|
|
1104 |
'nleqq' => '≰',
|
|
|
1105 |
'nleqslant' => '≰',
|
|
|
1106 |
'nles' => '≰',
|
|
|
1107 |
'nless' => '≮',
|
|
|
1108 |
'nLl' => '',
|
|
|
1109 |
'nlsim' => '≴',
|
|
|
1110 |
'nLt' => '',
|
|
|
1111 |
'nlt' => '≮',
|
|
|
1112 |
'nltri' => '⋪',
|
|
|
1113 |
'nltrie' => '⋬',
|
|
|
1114 |
'nLtv' => '',
|
|
|
1115 |
'nmid' => '∤',
|
|
|
1116 |
'Nopf' => 'ℕ',
|
|
|
1117 |
'Not' => '',
|
|
|
1118 |
'not' => '¬',
|
|
|
1119 |
'NotCongruent' => '≢',
|
|
|
1120 |
'NotDoubleVerticalBar' => '∦',
|
|
|
1121 |
'NotElement' => '∉',
|
|
|
1122 |
'NotEqual' => '≠',
|
|
|
1123 |
'NotExists' => '∄',
|
|
|
1124 |
'NotGreater' => '≯',
|
|
|
1125 |
'NotGreaterEqual' => '',
|
|
|
1126 |
'NotGreaterFullEqual' => '≰',
|
|
|
1127 |
'NotGreaterGreater' => '',
|
|
|
1128 |
'NotGreaterLess' => '≹',
|
|
|
1129 |
'NotGreaterSlantEqual' => '≱',
|
|
|
1130 |
'NotGreaterTilde' => '≵',
|
|
|
1131 |
'notin' => '∉',
|
|
|
1132 |
'notindot' => '',
|
|
|
1133 |
'notinE' => '',
|
|
|
1134 |
'notinva' => '',
|
|
|
1135 |
'notinvb' => '',
|
|
|
1136 |
'notinvc' => '',
|
|
|
1137 |
'NotLeftTriangle' => '⋪',
|
|
|
1138 |
'NotLeftTriangleEqual' => '⋬',
|
|
|
1139 |
'NotLess' => '≮',
|
|
|
1140 |
'NotLessEqual' => '',
|
|
|
1141 |
'NotLessFullEqual' => '≰',
|
|
|
1142 |
'NotLessGreater' => '≸',
|
|
|
1143 |
'NotLessLess' => '',
|
|
|
1144 |
'NotLessSlantEqual' => '≰',
|
|
|
1145 |
'NotLessTilde' => '≴',
|
|
|
1146 |
'notni' => '∌',
|
|
|
1147 |
'notniva' => '∌',
|
|
|
1148 |
'notnivb' => '',
|
|
|
1149 |
'notnivc' => '',
|
|
|
1150 |
'NotPrecedes' => '⊀',
|
|
|
1151 |
'NotPrecedesEqual' => '',
|
|
|
1152 |
'NotPrecedesSlantEqual' => '⋠',
|
|
|
1153 |
'NotReverseElement' => '∌',
|
|
|
1154 |
'NotRightTriangle' => '⋫',
|
|
|
1155 |
'NotRightTriangleEqual' => '⋭',
|
|
|
1156 |
'NotSquareSubsetEqual' => '⋢',
|
|
|
1157 |
'NotSquareSupersetEqual' => '⋣',
|
|
|
1158 |
'NotSubset' => '⊄',
|
|
|
1159 |
'NotSucceeds' => '⊁',
|
|
|
1160 |
'NotSucceedsEqual' => '',
|
|
|
1161 |
'NotSucceedsSlantEqual' => '⋡',
|
|
|
1162 |
'NotSuperset' => '⊅',
|
|
|
1163 |
'NotTilde' => '≁',
|
|
|
1164 |
'NotTildeEqual' => '≄',
|
|
|
1165 |
'NotTildeFullEqual' => '≇',
|
|
|
1166 |
'NotTildeTilde' => '≉',
|
|
|
1167 |
'NotVerticalBar' => '∤',
|
|
|
1168 |
'npar' => '∦',
|
|
|
1169 |
'nparallel' => '∦',
|
|
|
1170 |
'nparsl' => '',
|
|
|
1171 |
'npart' => '',
|
|
|
1172 |
'npolint' => '',
|
|
|
1173 |
'npr' => '⊀',
|
|
|
1174 |
'nprcue' => '⋠',
|
|
|
1175 |
'npre' => '',
|
|
|
1176 |
'nprec' => '⊀',
|
|
|
1177 |
'npreceq' => '',
|
|
|
1178 |
'nrArr' => '⇏',
|
|
|
1179 |
'nrarr' => '↛',
|
|
|
1180 |
'nrarrc' => '',
|
|
|
1181 |
'nrarrw' => '',
|
|
|
1182 |
'nRightarrow' => '⇏',
|
|
|
1183 |
'nrightarrow' => '↛',
|
|
|
1184 |
'nrtri' => '⋫',
|
|
|
1185 |
'nrtrie' => '⋭',
|
|
|
1186 |
'nsc' => '⊁',
|
|
|
1187 |
'nsccue' => '⋡',
|
|
|
1188 |
'nsce' => '',
|
|
|
1189 |
'Nscr' => '',
|
|
|
1190 |
'nscr' => '',
|
|
|
1191 |
'nshortmid' => '',
|
|
|
1192 |
'nshortparallel' => '',
|
|
|
1193 |
'nsim' => '≁',
|
|
|
1194 |
'nsime' => '≄',
|
|
|
1195 |
'nsimeq' => '≄',
|
|
|
1196 |
'nsmid' => '',
|
|
|
1197 |
'nspar' => '',
|
|
|
1198 |
'nsqsube' => '⋢',
|
|
|
1199 |
'nsqsupe' => '⋣',
|
|
|
1200 |
'nsub' => '⊄',
|
|
|
1201 |
'nsubE' => '⊈',
|
|
|
1202 |
'nsube' => '⊈',
|
|
|
1203 |
'nsubset' => '⊄',
|
|
|
1204 |
'nsubseteq' => '⊈',
|
|
|
1205 |
'nsubseteqq' => '⊈',
|
|
|
1206 |
'nsucc' => '⊁',
|
|
|
1207 |
'nsucceq' => '',
|
|
|
1208 |
'nsup' => '⊅',
|
|
|
1209 |
'nsupE' => '⊉',
|
|
|
1210 |
'nsupe' => '⊉',
|
|
|
1211 |
'nsupset' => '⊅',
|
|
|
1212 |
'nsupseteq' => '⊉',
|
|
|
1213 |
'nsupseteqq' => '⊉',
|
|
|
1214 |
'ntgl' => '≹',
|
|
|
1215 |
'ntlg' => '≸',
|
|
|
1216 |
'ntriangleleft' => '⋪',
|
|
|
1217 |
'ntrianglelefteq' => '⋬',
|
|
|
1218 |
'ntriangleright' => '⋫',
|
|
|
1219 |
'ntrianglerighteq' => '⋭',
|
|
|
1220 |
'ntvgl' => '≹',
|
|
|
1221 |
'ntvlg' => '≸',
|
|
|
1222 |
'nu' => 'ν',
|
|
|
1223 |
'num' => '#',
|
|
|
1224 |
'numsp' => ' ',
|
|
|
1225 |
'nvap' => '',
|
|
|
1226 |
'nVDash' => '⊯',
|
|
|
1227 |
'nVdash' => '⊮',
|
|
|
1228 |
'nvDash' => '⊭',
|
|
|
1229 |
'nvdash' => '⊬',
|
|
|
1230 |
'nvge' => '≱',
|
|
|
1231 |
'nvgt' => '≯',
|
|
|
1232 |
'nvhArr*' => '⇎',
|
|
|
1233 |
'nvinfin' => '',
|
|
|
1234 |
'nvlArr' => '⇍',
|
|
|
1235 |
'nvle' => '≰',
|
|
|
1236 |
'nvlt' => '≮',
|
|
|
1237 |
'nvltrie' => '',
|
|
|
1238 |
'nvrArr' => '⇏',
|
|
|
1239 |
'nvrtrie' => '',
|
|
|
1240 |
'nvsim' => '',
|
|
|
1241 |
'nwarhk' => '',
|
|
|
1242 |
'nwArr' => '⇖',
|
|
|
1243 |
'nwarr' => '↖',
|
|
|
1244 |
'nwarrow' => '↖',
|
|
|
1245 |
'nwnear' => '',
|
|
|
1246 |
'oast' => '⊛',
|
|
|
1247 |
'ocir' => '⊚',
|
|
|
1248 |
'odash' => '⊝',
|
|
|
1249 |
'odiv' => '',
|
|
|
1250 |
'odot' => '⊙',
|
|
|
1251 |
'odsold' => '',
|
|
|
1252 |
'ofcir' => '',
|
|
|
1253 |
'Ofr' => '',
|
|
|
1254 |
'ofr' => '',
|
|
|
1255 |
'ogon' => '̨',
|
|
|
1256 |
'ogt' => '',
|
|
|
1257 |
'ohbar' => '',
|
|
|
1258 |
'ohm' => 'Ω',
|
|
|
1259 |
'oint' => '∮',
|
|
|
1260 |
'olarr' => '↺',
|
|
|
1261 |
'olcir' => '',
|
|
|
1262 |
'olcross' => '',
|
|
|
1263 |
'olt' => '',
|
|
|
1264 |
'Omega' => 'Ω',
|
|
|
1265 |
'omega' => 'ω',
|
|
|
1266 |
'omicron' => 'ξ',
|
|
|
1267 |
'omid' => '',
|
|
|
1268 |
'ominus' => '⊖',
|
|
|
1269 |
'Oopf' => '',
|
|
|
1270 |
'opar' => '',
|
|
|
1271 |
'OpenCurlyDoubleQuote' => '“',
|
|
|
1272 |
'OpenCurlyQuote' => '‘',
|
|
|
1273 |
'operp' => '',
|
|
|
1274 |
'oplus' => '⊕',
|
|
|
1275 |
'Or' => '',
|
|
|
1276 |
'or' => '∨',
|
|
|
1277 |
'orarr' => '↻',
|
|
|
1278 |
'ord' => '',
|
|
|
1279 |
'order' => 'ℴ',
|
|
|
1280 |
'ordf' => 'ª',
|
|
|
1281 |
'ordm' => 'º',
|
|
|
1282 |
'origof' => '⊶',
|
|
|
1283 |
'oror' => '',
|
|
|
1284 |
'orslope' => '',
|
|
|
1285 |
'orv' => '',
|
|
|
1286 |
'oS' => '',
|
|
|
1287 |
'Oscr' => '',
|
|
|
1288 |
'oscr' => '',
|
|
|
1289 |
'oslash' => '⊘',
|
|
|
1290 |
'osol' => '⊘',
|
|
|
1291 |
'Otimes' => '',
|
|
|
1292 |
'otimes' => '⊗',
|
|
|
1293 |
'otimesas' => '',
|
|
|
1294 |
'ovbar' => '',
|
|
|
1295 |
'OverLine' => '̅',
|
|
|
1296 |
'par' => '∥',
|
|
|
1297 |
'para' => '¶',
|
|
|
1298 |
'parallel' => '∥',
|
|
|
1299 |
'parsim' => '',
|
|
|
1300 |
'parsl' => '',
|
|
|
1301 |
'part' => '∂',
|
|
|
1302 |
'PartialD' => '∂',
|
|
|
1303 |
'percnt' => '%',
|
|
|
1304 |
'period' => '.',
|
|
|
1305 |
'permil' => '‰',
|
|
|
1306 |
'perp' => '⊥',
|
|
|
1307 |
'pertenk' => '‱',
|
|
|
1308 |
'Pfr' => '',
|
|
|
1309 |
'pfr' => '',
|
|
|
1310 |
'Phi' => 'Φ',
|
|
|
1311 |
'phi' => 'φ',
|
|
|
1312 |
'phiv' => 'ϕ',
|
|
|
1313 |
'phmmat' => 'ℳ',
|
|
|
1314 |
'phone' => '☎',
|
|
|
1315 |
'Pi' => 'Π',
|
|
|
1316 |
'pi' => 'π',
|
|
|
1317 |
'pitchfork' => '⋔',
|
|
|
1318 |
'piv' => 'ϖ',
|
|
|
1319 |
'plank' => '',
|
|
|
1320 |
'plankv' => 'ℏ',
|
|
|
1321 |
'plus' => '+',
|
|
|
1322 |
'plusacir' => '',
|
|
|
1323 |
'plusb' => '⊞',
|
|
|
1324 |
'pluscir' => '',
|
|
|
1325 |
'plusdo' => '∔',
|
|
|
1326 |
'plusdu' => '',
|
|
|
1327 |
'pluse' => '',
|
|
|
1328 |
'PlusMinus' => '±',
|
|
|
1329 |
'plusmn' => '±',
|
|
|
1330 |
'plussim' => '',
|
|
|
1331 |
'plustwo' => '',
|
|
|
1332 |
'pm' => '±',
|
|
|
1333 |
'pointint' => '',
|
|
|
1334 |
'Popf' => 'ℙ',
|
|
|
1335 |
'pound' => '£',
|
|
|
1336 |
'Pr' => '',
|
|
|
1337 |
'pr' => '≺',
|
|
|
1338 |
'prap' => '≾',
|
|
|
1339 |
'prcue' => '≼',
|
|
|
1340 |
'prE' => '≼',
|
|
|
1341 |
'pre' => '≼',
|
|
|
1342 |
'prec' => '≺',
|
|
|
1343 |
'precapprox' => '≾',
|
|
|
1344 |
'preccurlyeq' => '≼',
|
|
|
1345 |
'Precedes' => '≺',
|
|
|
1346 |
'PrecedesEqual' => '≼',
|
|
|
1347 |
'PrecedesSlantEqual' => '≼',
|
|
|
1348 |
'PrecedesTilde' => '≾',
|
|
|
1349 |
'preceq' => '≼',
|
|
|
1350 |
'precnapprox' => '⋨',
|
|
|
1351 |
'precneqq' => '',
|
|
|
1352 |
'precnsim' => '⋨',
|
|
|
1353 |
'precsim' => '≾',
|
|
|
1354 |
'Prime' => '″',
|
|
|
1355 |
'prime' => '′',
|
|
|
1356 |
'prnap' => '⋨',
|
|
|
1357 |
'prnE' => '',
|
|
|
1358 |
'prnsim' => '⋨',
|
|
|
1359 |
'profalar' => '⌮',
|
|
|
1360 |
'profline' => '⌒',
|
|
|
1361 |
'profsurf' => '⌓',
|
|
|
1362 |
'prop' => '∝',
|
|
|
1363 |
'Proportion' => '∷',
|
|
|
1364 |
'Proportional' => '∝',
|
|
|
1365 |
'propto' => '∝',
|
|
|
1366 |
'prsim' => '≾',
|
|
|
1367 |
'prurel' => '⊰',
|
|
|
1368 |
'Pscr' => '',
|
|
|
1369 |
'pscr' => '',
|
|
|
1370 |
'Psi' => 'Ψ',
|
|
|
1371 |
'psi' => 'ψ',
|
|
|
1372 |
'puncsp' => ' ',
|
|
|
1373 |
'Qfr' => '',
|
|
|
1374 |
'qfr' => '',
|
|
|
1375 |
'qint' => '',
|
|
|
1376 |
'Qopf' => 'ℚ',
|
|
|
1377 |
'qprime' => '',
|
|
|
1378 |
'Qscr' => '',
|
|
|
1379 |
'qscr' => '',
|
|
|
1380 |
'quatint' => '',
|
|
|
1381 |
'quest' => '?',
|
|
|
1382 |
'questeq' => '≟',
|
|
|
1383 |
'quot' => '"',
|
|
|
1384 |
'rAarr' => '⇛',
|
|
|
1385 |
'race' => '',
|
|
|
1386 |
'radic' => '√',
|
|
|
1387 |
'raemptyv' => '',
|
|
|
1388 |
'Rang' => '》',
|
|
|
1389 |
'rang' => '〉',
|
|
|
1390 |
'rangd' => '',
|
|
|
1391 |
'range' => '',
|
|
|
1392 |
'rangle' => '〉',
|
|
|
1393 |
'raquo' => '»',
|
|
|
1394 |
'Rarr' => '↠',
|
|
|
1395 |
'rArr' => '⇒',
|
|
|
1396 |
'rarr' => '→',
|
|
|
1397 |
'rarrap' => '',
|
|
|
1398 |
'rarrbfs' => '',
|
|
|
1399 |
'rarrc' => '',
|
|
|
1400 |
'rarrfs' => '',
|
|
|
1401 |
'rarrhk' => '↪',
|
|
|
1402 |
'rarrlp' => '↬',
|
|
|
1403 |
'rarrpl' => '',
|
|
|
1404 |
'rarrsim' => '',
|
|
|
1405 |
'Rarrtl' => '',
|
|
|
1406 |
'rarrtl' => '↣',
|
|
|
1407 |
'rarrw' => '↝',
|
|
|
1408 |
'rAtail' => '',
|
|
|
1409 |
'ratail' => '↣',
|
|
|
1410 |
'ratio' => '∶',
|
|
|
1411 |
'RBarr' => '',
|
|
|
1412 |
'rBarr' => '',
|
|
|
1413 |
'rbarr' => '',
|
|
|
1414 |
'rbbrk' => '〕',
|
|
|
1415 |
'rbrace' => '}',
|
|
|
1416 |
'rbrack' => ']',
|
|
|
1417 |
'rbrke' => '',
|
|
|
1418 |
'rbrksld' => '',
|
|
|
1419 |
'rbrkslu' => '',
|
|
|
1420 |
'rceil' => '⌉',
|
|
|
1421 |
'rcub' => '}',
|
|
|
1422 |
'rdca' => '',
|
|
|
1423 |
'rdldhar' => '',
|
|
|
1424 |
'rdquo' => '”',
|
|
|
1425 |
'rdquor' => '‛',
|
|
|
1426 |
'rdsh' => '↳',
|
|
|
1427 |
'Re' => 'ℜ',
|
|
|
1428 |
'real' => 'ℜ',
|
|
|
1429 |
'rect' => '',
|
|
|
1430 |
'reg' => '¯',
|
|
|
1431 |
'ReverseElement' => '∋',
|
|
|
1432 |
'ReverseEquilibrium' => '⇋',
|
|
|
1433 |
'ReverseUpEquilibrium' => '',
|
|
|
1434 |
'rfisht' => '',
|
|
|
1435 |
'rfloor' => '⌋',
|
|
|
1436 |
'Rfr' => '',
|
|
|
1437 |
'rfr' => '',
|
|
|
1438 |
'rHar' => '',
|
|
|
1439 |
'rhard' => '⇁',
|
|
|
1440 |
'rharu' => '⇀',
|
|
|
1441 |
'rharul' => '',
|
|
|
1442 |
'rho' => 'ρ',
|
|
|
1443 |
'rhov' => 'ϱ',
|
|
|
1444 |
'RightAngleBracket' => '〉',
|
|
|
1445 |
'RightArrow' => '→',
|
|
|
1446 |
'Rightarrow' => '⇒',
|
|
|
1447 |
'rightarrow' => '→',
|
|
|
1448 |
'RightArrowLeftArrow' => '⇄',
|
|
|
1449 |
'rightarrowtail' => '↣',
|
|
|
1450 |
'RightCeiling' => '⌉',
|
|
|
1451 |
'RightDownVector' => '⇂',
|
|
|
1452 |
'RightFloor' => '⌋',
|
|
|
1453 |
'rightharpoondown' => '⇁',
|
|
|
1454 |
'rightharpoonup' => '⇀',
|
|
|
1455 |
'rightleftarrows' => '⇄',
|
|
|
1456 |
'rightleftharpoons' => '⇌',
|
|
|
1457 |
'rightrightarrows' => '⇉',
|
|
|
1458 |
'rightsquigarrow' => '↝',
|
|
|
1459 |
'RightTee' => '⊢',
|
|
|
1460 |
'RightTeeArrow' => '↦',
|
|
|
1461 |
'rightthreetimes' => '⋌',
|
|
|
1462 |
'RightTriangle' => '⊳',
|
|
|
1463 |
'RightTriangleEqual' => '⊵',
|
|
|
1464 |
'RightUpVector' => '↾',
|
|
|
1465 |
'RightVector' => '⇀',
|
|
|
1466 |
'ring' => '̊',
|
|
|
1467 |
'risingdotseq' => '≓',
|
|
|
1468 |
'rlarr' => '⇄',
|
|
|
1469 |
'rlhar' => '⇌',
|
|
|
1470 |
'rmoust' => '',
|
|
|
1471 |
'rmoustache' => '',
|
|
|
1472 |
'rnmid' => '',
|
|
|
1473 |
'roang' => '〙',
|
|
|
1474 |
'roarr' => '',
|
|
|
1475 |
'robrk' => '〛',
|
|
|
1476 |
'ropar' => '',
|
|
|
1477 |
'Ropf' => 'ℝ',
|
|
|
1478 |
'roplus' => '',
|
|
|
1479 |
'rotimes' => '',
|
|
|
1480 |
'rpar' => ')',
|
|
|
1481 |
'rpargt' => '',
|
|
|
1482 |
'rppolint' => '',
|
|
|
1483 |
'rrarr' => '⇉',
|
|
|
1484 |
'Rrightarrow' => '⇛',
|
|
|
1485 |
'Rscr' => '',
|
|
|
1486 |
'rscr' => 'ℛ',
|
|
|
1487 |
'Rsh' => '↱',
|
|
|
1488 |
'rsh' => '↱',
|
|
|
1489 |
'rsqb' => ']',
|
|
|
1490 |
'rsquo' => '’',
|
|
|
1491 |
'rsquor' => '‟',
|
|
|
1492 |
'rthree' => '⋌',
|
|
|
1493 |
'rtimes' => '⋊',
|
|
|
1494 |
'rtri' => '▹',
|
|
|
1495 |
'rtrie' => '⊵',
|
|
|
1496 |
'rtrif' => '▸',
|
|
|
1497 |
'rtriltri' => '',
|
|
|
1498 |
'ruluhar' => '',
|
|
|
1499 |
'rx' => '℞',
|
|
|
1500 |
'Sc' => '',
|
|
|
1501 |
'sc' => '≻',
|
|
|
1502 |
'scap' => '≿',
|
|
|
1503 |
'sccue' => '≽',
|
|
|
1504 |
'scE' => '≾',
|
|
|
1505 |
'sce' => '≽',
|
|
|
1506 |
'scnap' => '⋩',
|
|
|
1507 |
'scnE' => '',
|
|
|
1508 |
'scnsim' => '⋩',
|
|
|
1509 |
'scpolint' => '',
|
|
|
1510 |
'scsim' => '≿',
|
|
|
1511 |
'sdot' => '⋅',
|
|
|
1512 |
'sdotb' => '⊡',
|
|
|
1513 |
'sdote' => '',
|
|
|
1514 |
'searhk' => '',
|
|
|
1515 |
'seArr' => '⇘',
|
|
|
1516 |
'searr' => '↘',
|
|
|
1517 |
'searrow' => '↘',
|
|
|
1518 |
'sect' => '§',
|
|
|
1519 |
'semi' => ';',
|
|
|
1520 |
'seswar' => '',
|
|
|
1521 |
'setminus' => '∖',
|
|
|
1522 |
'setmn' => '∖',
|
|
|
1523 |
'sext' => '',
|
|
|
1524 |
'Sfr' => '',
|
|
|
1525 |
'sfr' => '',
|
|
|
1526 |
'sfrown' => '',
|
|
|
1527 |
'sharp' => '♯',
|
|
|
1528 |
'ShortLeftArrow' => '',
|
|
|
1529 |
'shortmid' => '',
|
|
|
1530 |
'shortparallel' => '',
|
|
|
1531 |
'ShortRightArrow' => '',
|
|
|
1532 |
'shy' => '­',
|
|
|
1533 |
'Sigma' => 'Σ',
|
|
|
1534 |
'sigma' => 'σ',
|
|
|
1535 |
'sigmav' => 'ς',
|
|
|
1536 |
'sim' => '∼',
|
|
|
1537 |
'simdot' => '',
|
|
|
1538 |
'sime' => '≃',
|
|
|
1539 |
'simeq' => '≃',
|
|
|
1540 |
'simg' => '',
|
|
|
1541 |
'simgE' => '',
|
|
|
1542 |
'siml' => '',
|
|
|
1543 |
'simlE' => '',
|
|
|
1544 |
'simne' => '≆',
|
|
|
1545 |
'simplus' => '',
|
|
|
1546 |
'simrarr' => '',
|
|
|
1547 |
'slarr' => '',
|
|
|
1548 |
'SmallCircle' => '∘',
|
|
|
1549 |
'smallfrown' => '',
|
|
|
1550 |
'smallsetminus' => '',
|
|
|
1551 |
'smallsmile' => '',
|
|
|
1552 |
'smashp' => '',
|
|
|
1553 |
'smeparsl' => '',
|
|
|
1554 |
'smid' => '',
|
|
|
1555 |
'smile' => '⌣',
|
|
|
1556 |
'smt' => '',
|
|
|
1557 |
'smte' => '',
|
|
|
1558 |
'smtes' => '',
|
|
|
1559 |
'sol' => '/',
|
|
|
1560 |
'solb' => '',
|
|
|
1561 |
'solbar' => '',
|
|
|
1562 |
'Sopf' => '',
|
|
|
1563 |
'spades' => '♠',
|
|
|
1564 |
'spadesuit' => '♠',
|
|
|
1565 |
'spar' => '',
|
|
|
1566 |
'sqcap' => '⊓',
|
|
|
1567 |
'sqcaps' => '',
|
|
|
1568 |
'sqcup' => '⊔',
|
|
|
1569 |
'sqcups' => '',
|
|
|
1570 |
'Sqrt' => '√',
|
|
|
1571 |
'sqsub' => '⊏',
|
|
|
1572 |
'sqsube' => '⊑',
|
|
|
1573 |
'sqsubset' => '⊏',
|
|
|
1574 |
'sqsubseteq' => '⊑',
|
|
|
1575 |
'sqsup' => '⊐',
|
|
|
1576 |
'sqsupe' => '⊒',
|
|
|
1577 |
'sqsupset' => '⊐',
|
|
|
1578 |
'sqsupseteq' => '⊒',
|
|
|
1579 |
'squ' => '□',
|
|
|
1580 |
'square' => '□',
|
|
|
1581 |
'SquareIntersection' => '⊓',
|
|
|
1582 |
'SquareSubset' => '⊏',
|
|
|
1583 |
'SquareSubsetEqual' => '⊑',
|
|
|
1584 |
'SquareSuperset' => '⊐',
|
|
|
1585 |
'SquareSupersetEqual' => '⊒',
|
|
|
1586 |
'SquareUnion' => '⊔',
|
|
|
1587 |
'squarf' => '■',
|
|
|
1588 |
'squarfb' => '',
|
|
|
1589 |
'squarfbl' => '',
|
|
|
1590 |
'squarfbr' => '◪',
|
|
|
1591 |
'squarfl' => '◧',
|
|
|
1592 |
'squarfr' => '◨',
|
|
|
1593 |
'squarft' => '',
|
|
|
1594 |
'squarftl' => '◩',
|
|
|
1595 |
'squarftr' => '',
|
|
|
1596 |
'squf' => '▪',
|
|
|
1597 |
'srarr' => '',
|
|
|
1598 |
'Sscr' => '',
|
|
|
1599 |
'sscr' => '',
|
|
|
1600 |
'ssetmn' => '',
|
|
|
1601 |
'ssmile' => '',
|
|
|
1602 |
'sstarf' => '⋆',
|
|
|
1603 |
'Star' => '⋆',
|
|
|
1604 |
'star' => '⋆',
|
|
|
1605 |
'starf' => '★',
|
|
|
1606 |
'straightepsilon' => '∊',
|
|
|
1607 |
'straightphi' => 'φ',
|
|
|
1608 |
'strns' => '',
|
|
|
1609 |
'Sub' => '⋐',
|
|
|
1610 |
'sub' => '⊂',
|
|
|
1611 |
'subdot' => '',
|
|
|
1612 |
'subE' => '⊆',
|
|
|
1613 |
'sube' => '⊆',
|
|
|
1614 |
'subedot' => '',
|
|
|
1615 |
'submult' => '',
|
|
|
1616 |
'subnE' => '⊊',
|
|
|
1617 |
'subne' => '⊊',
|
|
|
1618 |
'subplus' => '',
|
|
|
1619 |
'subrarr' => '',
|
|
|
1620 |
'Subset' => '⋐',
|
|
|
1621 |
'subset' => '⊂',
|
|
|
1622 |
'subseteq' => '⊆',
|
|
|
1623 |
'subseteqq' => '⊆',
|
|
|
1624 |
'SubsetEqual' => '⊆',
|
|
|
1625 |
'subsetneq' => '⊊',
|
|
|
1626 |
'subsetneqq' => '⊊',
|
|
|
1627 |
'subsim' => '',
|
|
|
1628 |
'subsub' => '',
|
|
|
1629 |
'subsup' => '',
|
|
|
1630 |
'succ' => '≻',
|
|
|
1631 |
'succapprox' => '≿',
|
|
|
1632 |
'succcurlyeq' => '≽',
|
|
|
1633 |
'Succeeds' => '≻',
|
|
|
1634 |
'SucceedsEqual' => '≽',
|
|
|
1635 |
'SucceedsSlantEqual' => '≽',
|
|
|
1636 |
'SucceedsTilde' => '≿',
|
|
|
1637 |
'succeq' => '≽',
|
|
|
1638 |
'succnapprox' => '⋩',
|
|
|
1639 |
'succneqq' => '',
|
|
|
1640 |
'succnsim' => '⋩',
|
|
|
1641 |
'succsim' => '≿',
|
|
|
1642 |
'SuchThat' => '∍',
|
|
|
1643 |
'Sum' => '∑',
|
|
|
1644 |
'sum' => '∑',
|
|
|
1645 |
'sung' => '♩',
|
|
|
1646 |
'Sup' => '⋑',
|
|
|
1647 |
'sup' => '⊃',
|
|
|
1648 |
'sup1' => '¹',
|
|
|
1649 |
'sup2' => '²',
|
|
|
1650 |
'sup3' => '³',
|
|
|
1651 |
'supdot' => '',
|
|
|
1652 |
'supdsub' => '',
|
|
|
1653 |
'supE' => '⊇',
|
|
|
1654 |
'supe' => '⊇',
|
|
|
1655 |
'supedot' => '',
|
|
|
1656 |
'Superset' => '⊃',
|
|
|
1657 |
'SupersetEqual' => '⊇',
|
|
|
1658 |
'suphsol' => '',
|
|
|
1659 |
'suphsub' => '',
|
|
|
1660 |
'suplarr' => '',
|
|
|
1661 |
'supmult' => '',
|
|
|
1662 |
'supnE' => '⊋',
|
|
|
1663 |
'supne' => '⊋',
|
|
|
1664 |
'supplus' => '',
|
|
|
1665 |
'Supset' => '⋑',
|
|
|
1666 |
'supset' => '⊃',
|
|
|
1667 |
'supseteq' => '⊇',
|
|
|
1668 |
'supseteqq' => '⊇',
|
|
|
1669 |
'supsetneq' => '⊋',
|
|
|
1670 |
'supsetneqq' => '⊋',
|
|
|
1671 |
'supsim' => '',
|
|
|
1672 |
'supsub' => '',
|
|
|
1673 |
'supsup' => '',
|
|
|
1674 |
'swarhk' => '',
|
|
|
1675 |
'swArr' => '⇙',
|
|
|
1676 |
'swarr' => '↙',
|
|
|
1677 |
'swarrow' => '↙',
|
|
|
1678 |
'swnwar' => '',
|
|
|
1679 |
'target' => '⌖',
|
|
|
1680 |
'tau' => 'τ',
|
|
|
1681 |
'tbrk' => '',
|
|
|
1682 |
'tdot' => '⃛',
|
|
|
1683 |
'telrec' => '⌕',
|
|
|
1684 |
'Tfr' => '',
|
|
|
1685 |
'tfr' => '',
|
|
|
1686 |
'there4' => '∴',
|
|
|
1687 |
'Therefore' => '∴',
|
|
|
1688 |
'therefore' => '∴',
|
|
|
1689 |
'Theta' => 'Θ',
|
|
|
1690 |
'theta' => 'θ',
|
|
|
1691 |
'thetav' => 'ϑ',
|
|
|
1692 |
'thickapprox' => '',
|
|
|
1693 |
'thicksim' => '',
|
|
|
1694 |
'thinsp' => ' ',
|
|
|
1695 |
'thkap' => '',
|
|
|
1696 |
'thksim' => '',
|
|
|
1697 |
'Tilde' => '∼',
|
|
|
1698 |
'tilde' => '̃',
|
|
|
1699 |
'TildeEqual' => '≃',
|
|
|
1700 |
'TildeFullEqual' => '≅',
|
|
|
1701 |
'TildeTilde' => '≈',
|
|
|
1702 |
'times' => '×',
|
|
|
1703 |
'timesb' => '⊠',
|
|
|
1704 |
'timesbar' => '',
|
|
|
1705 |
'timesd' => '',
|
|
|
1706 |
'tint' => '∭',
|
|
|
1707 |
'toea' => '',
|
|
|
1708 |
'top' => '⊤',
|
|
|
1709 |
'topbot' => '⌶',
|
|
|
1710 |
'topcir' => '',
|
|
|
1711 |
'Topf' => '',
|
|
|
1712 |
'topfork' => '',
|
|
|
1713 |
'tosa' => '',
|
|
|
1714 |
'tprime' => '‴',
|
|
|
1715 |
'trade' => '™',
|
|
|
1716 |
'triangle' => '▵',
|
|
|
1717 |
'triangledown' => '▿',
|
|
|
1718 |
'triangleleft' => '◃',
|
|
|
1719 |
'trianglelefteq' => '⊴',
|
|
|
1720 |
'triangleq' => '≜',
|
|
|
1721 |
'triangleright' => '▹',
|
|
|
1722 |
'trianglerighteq' => '⊵',
|
|
|
1723 |
'tridot' => '◬',
|
|
|
1724 |
'trie' => '≜',
|
|
|
1725 |
'triminus' => '',
|
|
|
1726 |
'TripleDot' => '⃛',
|
|
|
1727 |
'triplus' => '',
|
|
|
1728 |
'trisb' => '',
|
|
|
1729 |
'tritime' => '',
|
|
|
1730 |
'trpezium' => '',
|
|
|
1731 |
'Tscr' => '',
|
|
|
1732 |
'tscr' => '',
|
|
|
1733 |
'twixt' => '≬',
|
|
|
1734 |
'twoheadleftarrow' => '↞',
|
|
|
1735 |
'twoheadrightarrow' => '↠',
|
|
|
1736 |
'Uarr' => '↟',
|
|
|
1737 |
'uArr' => '⇑',
|
|
|
1738 |
'uarr' => '↑',
|
|
|
1739 |
'Uarrocir' => '',
|
|
|
1740 |
'udarr' => '⇅',
|
|
|
1741 |
'udhar' => '',
|
|
|
1742 |
'ufisht' => '',
|
|
|
1743 |
'Ufr' => '',
|
|
|
1744 |
'ufr' => '',
|
|
|
1745 |
'uHar' => '',
|
|
|
1746 |
'uharl' => '↿',
|
|
|
1747 |
'uharr' => '↾',
|
|
|
1748 |
'uhblk' => '▀',
|
|
|
1749 |
'ulcorn' => '⌜',
|
|
|
1750 |
'ulcorner' => '⌜',
|
|
|
1751 |
'ulcrop' => '⌏',
|
|
|
1752 |
'ultri' => '',
|
|
|
1753 |
'uml' => '̈',
|
|
|
1754 |
'UnderLine' => '̲',
|
|
|
1755 |
'Union' => '⋃',
|
|
|
1756 |
'UnionPlus' => '⊎',
|
|
|
1757 |
'Uopf' => '',
|
|
|
1758 |
'UpArrow' => '↑',
|
|
|
1759 |
'Uparrow' => '⇑',
|
|
|
1760 |
'uparrow' => '↑',
|
|
|
1761 |
'UpArrowDownArrow' => '⇅',
|
|
|
1762 |
'UpDownArrow' => '↕',
|
|
|
1763 |
'Updownarrow' => '⇕',
|
|
|
1764 |
'updownarrow' => '↕',
|
|
|
1765 |
'UpEquilibrium' => '',
|
|
|
1766 |
'upharpoonleft' => '↿',
|
|
|
1767 |
'upharpoonright' => '↾',
|
|
|
1768 |
'uplus' => '⊎',
|
|
|
1769 |
'UpperLeftArrow' => '↖',
|
|
|
1770 |
'UpperRightArrow' => '↗',
|
|
|
1771 |
'Upsi' => 'ϒ',
|
|
|
1772 |
'upsi' => 'υ',
|
|
|
1773 |
'Upsilon' => 'ϒ',
|
|
|
1774 |
'upsilon' => 'υ',
|
|
|
1775 |
'UpTee' => '⊥',
|
|
|
1776 |
'upuparrows' => '⇈',
|
|
|
1777 |
'urcorn' => '⌝',
|
|
|
1778 |
'urcorner' => '⌝',
|
|
|
1779 |
'urcrop' => '⌎',
|
|
|
1780 |
'urtri' => '',
|
|
|
1781 |
'Uscr' => '',
|
|
|
1782 |
'uscr' => '',
|
|
|
1783 |
'utdot' => '⋰',
|
|
|
1784 |
'utri' => '▵',
|
|
|
1785 |
'utrif' => '▴',
|
|
|
1786 |
'uuarr' => '⇈',
|
|
|
1787 |
'uwangle' => '',
|
|
|
1788 |
'vangrt' => '⊾',
|
|
|
1789 |
'varepsilon' => 'ε',
|
|
|
1790 |
'varkappa' => 'ϰ',
|
|
|
1791 |
'varnothing' => '∅',
|
|
|
1792 |
'varphi' => 'ϕ',
|
|
|
1793 |
'varpi' => 'ϖ',
|
|
|
1794 |
'varpropto' => '∝',
|
|
|
1795 |
'vArr' => '⇕',
|
|
|
1796 |
'varr' => '↕',
|
|
|
1797 |
'varrho' => 'ϱ',
|
|
|
1798 |
'varsigma' => 'ς',
|
|
|
1799 |
'varsubsetneq' => '',
|
|
|
1800 |
'varsubsetneqq' => '',
|
|
|
1801 |
'varsupsetneq' => '',
|
|
|
1802 |
'varsupsetneqq' => '',
|
|
|
1803 |
'vartheta' => 'ϑ',
|
|
|
1804 |
'vartriangleleft' => '⊲',
|
|
|
1805 |
'vartriangleright' => '⊳',
|
|
|
1806 |
'Vbar' => '',
|
|
|
1807 |
'vBar' => '',
|
|
|
1808 |
'vBarv' => '',
|
|
|
1809 |
'VDash' => '⊫',
|
|
|
1810 |
'Vdash' => '⊩',
|
|
|
1811 |
'vDash' => '⊨',
|
|
|
1812 |
'vdash' => '⊢',
|
|
|
1813 |
'Vdashl' => '',
|
|
|
1814 |
'Vee' => '⋁',
|
|
|
1815 |
'vee' => '∨',
|
|
|
1816 |
'veebar' => '⊻',
|
|
|
1817 |
'veeeq' => '≚',
|
|
|
1818 |
'vellip' => '⋮',
|
|
|
1819 |
'Verbar' => '‖',
|
|
|
1820 |
'verbar' => '|',
|
|
|
1821 |
'Vert' => '‖',
|
|
|
1822 |
'vert' => '|',
|
|
|
1823 |
'VerticalBar' => '∣',
|
|
|
1824 |
'VerticalTilde' => '≀',
|
|
|
1825 |
'Vfr' => '',
|
|
|
1826 |
'vfr' => '',
|
|
|
1827 |
'vltri' => '⊲',
|
|
|
1828 |
'vnsub' => '⊄',
|
|
|
1829 |
'vnsup' => '⊅',
|
|
|
1830 |
'Vopf' => '',
|
|
|
1831 |
'vprop' => '∝',
|
|
|
1832 |
'vrtri' => '⊳',
|
|
|
1833 |
'Vscr' => '',
|
|
|
1834 |
'vscr' => '',
|
|
|
1835 |
'vsubnE' => '',
|
|
|
1836 |
'vsubne' => '',
|
|
|
1837 |
'vsupnE' => '',
|
|
|
1838 |
'vsupne' => '',
|
|
|
1839 |
'Vvdash' => '⊪',
|
|
|
1840 |
'vzigzag' => '',
|
|
|
1841 |
'wedbar' => '',
|
|
|
1842 |
'Wedge' => '⋀',
|
|
|
1843 |
'wedge' => '∧',
|
|
|
1844 |
'wedgeq' => '≙',
|
|
|
1845 |
'weierp' => '℘',
|
|
|
1846 |
'Wfr' => '',
|
|
|
1847 |
'wfr' => '',
|
|
|
1848 |
'Wopf' => '',
|
|
|
1849 |
'wp' => '℘',
|
|
|
1850 |
'wr' => '≀',
|
|
|
1851 |
'wreath' => '≀',
|
|
|
1852 |
'Wscr' => '',
|
|
|
1853 |
'wscr' => '',
|
|
|
1854 |
'xcap' => '⋂',
|
|
|
1855 |
'xcirc' => '○',
|
|
|
1856 |
'xcup' => '⋃',
|
|
|
1857 |
'xdtri' => '▽',
|
|
|
1858 |
'Xfr' => '',
|
|
|
1859 |
'xfr' => '',
|
|
|
1860 |
'xhArr' => '',
|
|
|
1861 |
'xharr' => '',
|
|
|
1862 |
'Xi' => 'Ξ',
|
|
|
1863 |
'xi' => 'ξ',
|
|
|
1864 |
'xlArr' => '',
|
|
|
1865 |
'xlarr' => '',
|
|
|
1866 |
'xmap' => '',
|
|
|
1867 |
'xnis' => '',
|
|
|
1868 |
'xodot' => '⊙',
|
|
|
1869 |
'Xopf' => '',
|
|
|
1870 |
'xoplus' => '⊕',
|
|
|
1871 |
'xotime' => '⊗',
|
|
|
1872 |
'xrArr' => '',
|
|
|
1873 |
'xrarr' => '',
|
|
|
1874 |
'Xscr' => '',
|
|
|
1875 |
'xscr' => '',
|
|
|
1876 |
'xsqcup' => '⊔',
|
|
|
1877 |
'xuplus' => '⊎',
|
|
|
1878 |
'xutri' => '△',
|
|
|
1879 |
'xvee' => '⋁',
|
|
|
1880 |
'xwedge' => '⋀',
|
|
|
1881 |
'yen' => '¥',
|
|
|
1882 |
'Yfr' => '',
|
|
|
1883 |
'yfr' => '',
|
|
|
1884 |
'Yopf' => '',
|
|
|
1885 |
'Yscr' => '',
|
|
|
1886 |
'yscr' => '',
|
|
|
1887 |
'zeta' => 'ζ',
|
|
|
1888 |
'Zfr' => 'ℤ',
|
|
|
1889 |
'zfr' => '',
|
|
|
1890 |
'zigrarr' => '',
|
|
|
1891 |
'Zopf' => '',
|
|
|
1892 |
'Zscr' => '',
|
|
|
1893 |
'zscr' => ''
|
|
|
1894 |
);
|
|
|
1895 |
return $charset;
|
|
|
1896 |
|
|
|
1897 |
|
|
|
1898 |
|
|
|
1899 |
// cas particuliers pour la translitteration
|
|
|
1900 |
case 'translit':
|
|
|
1901 |
$GLOBALS['CHARSET'][$charset] = array (
|
|
|
1902 |
// latin
|
|
|
1903 |
128=>'euro', 131=>'f', 140=>'OE', 147=>'\'\'', 148=>'\'\'', 153=>'TM', 156=>'oe', 159=>'Y', 160=>' ',
|
|
|
1904 |
161=>'!', 162=>'c', 163=>'L', 164=>'O', 165=>'yen',166=>'|',
|
|
|
1905 |
167=>'p',169=>'(c)', 171=>'<<',172=>'-',173=>'-',174=>'(R)',
|
|
|
1906 |
176=>'o',177=>'+-',181=>'mu',182=>'p',183=>'.',187=>'>>', 192=>'A',
|
|
|
1907 |
193=>'A', 194=>'A', 195=>'A', 196=>'A', 197=>'A', 198=>'AE', 199=>'C',
|
|
|
1908 |
200=>'E', 201=>'E', 202=>'E', 203=>'E', 204=>'I', 205=>'I', 206=>'I',
|
|
|
1909 |
207=>'I', 209=>'N', 210=>'O', 211=>'O', 212=>'O', 213=>'O', 214=>'O',
|
|
|
1910 |
216=>'O', 217=>'U', 218=>'U', 219=>'U', 220=>'U', 223=>'ss', 224=>'a',
|
|
|
1911 |
225=>'a', 226=>'a', 227=>'a', 228=>'a', 229=>'a', 230=>'ae', 231=>'c',
|
|
|
1912 |
232=>'e', 233=>'e', 234=>'e', 235=>'e', 236=>'i', 237=>'i', 238=>'i',
|
|
|
1913 |
239=>'i', 241=>'n', 242=>'o', 243=>'o', 244=>'o', 245=>'o', 246=>'o',
|
|
|
1914 |
248=>'o', 249=>'u', 250=>'u', 251=>'u', 252=>'u', 255=>'y',
|
|
|
1915 |
|
|
|
1916 |
// turc
|
|
|
1917 |
286=>'G', 287=>'g', 304=>'I', 305=>'i', 350=>'S', 351=>'s',
|
|
|
1918 |
|
|
|
1919 |
// esperanto
|
|
|
1920 |
264 => 'Cx',265 => 'cx',
|
|
|
1921 |
284 => 'Gx',285 => 'gx',
|
|
|
1922 |
292 => 'Hx',293 => 'hx',
|
|
|
1923 |
308 => 'Jx',309 => 'jx',
|
|
|
1924 |
348 => 'Sx',349 => 'sx',
|
|
|
1925 |
364 => 'Ux',365 => 'ux',
|
|
|
1926 |
|
|
|
1927 |
// cyrillique
|
|
|
1928 |
1026=>'D%', 1027=>'G%', 8218=>'\'', 1107=>'g%', 8222=>'"', 8230=>'...',
|
|
|
1929 |
8224=>'/-', 8225=>'/=', 8364=>'EUR', 8240=>'0/00', 1033=>'LJ',
|
|
|
1930 |
8249=>'<', 1034=>'NJ', 1036=>'KJ', 1035=>'Ts', 1039=>'DZ', 1106=>'d%',
|
|
|
1931 |
8216=>'`', 8217=>'\'', 8220=>'"', 8221=>'"', 8226=>' o ', 8211=>'-',
|
|
|
1932 |
8212=>'--', 8212=>'~', 8482=>'(TM)', 1113=>'lj', 8250=>'>', 1114=>'nj',
|
|
|
1933 |
1116=>'kj', 1115=>'ts', 1119=>'dz', 1038=>'V%', 1118=>'v%', 1032=>'J%',
|
|
|
1934 |
1168=>'G3', 1025=>'IO', 1028=>'IE', 1031=>'YI', 1030=>'II',
|
|
|
1935 |
1110=>'ii', 1169=>'g3', 1105=>'io', 8470=>'No.', 1108=>'ie',
|
|
|
1936 |
1112=>'j%', 1029=>'DS', 1109=>'ds', 1111=>'yi', 1040=>'A', 1041=>'B',
|
|
|
1937 |
1042=>'V', 1043=>'G', 1044=>'D', 1045=>'E', 1046=>'ZH', 1047=>'Z',
|
|
|
1938 |
1048=>'I', 1049=>'J', 1050=>'K', 1051=>'L', 1052=>'M', 1053=>'N',
|
|
|
1939 |
1054=>'O', 1055=>'P', 1056=>'R', 1057=>'S', 1058=>'T', 1059=>'U',
|
|
|
1940 |
1060=>'F', 1061=>'H', 1062=>'C', 1063=>'CH', 1064=>'SH', 1065=>'SCH',
|
|
|
1941 |
1066=>'"', 1067=>'Y', 1068=>'\'', 1069=>'`E', 1070=>'YU', 1071=>'YA',
|
|
|
1942 |
1072=>'a', 1073=>'b', 1074=>'v', 1075=>'g', 1076=>'d', 1077=>'e',
|
|
|
1943 |
1078=>'zh', 1079=>'z', 1080=>'i', 1081=>'j', 1082=>'k', 1083=>'l',
|
|
|
1944 |
1084=>'m', 1085=>'n', 1086=>'o', 1087=>'p', 1088=>'r', 1089=>'s',
|
|
|
1945 |
1090=>'t', 1091=>'u', 1092=>'f', 1093=>'h', 1094=>'c', 1095=>'ch',
|
|
|
1946 |
1096=>'sh', 1097=>'sch', 1098=>'"', 1099=>'y', 1100=>'\'', 1101=>'`e',
|
|
|
1947 |
1102=>'yu', 1103=>'ya',
|
|
|
1948 |
|
|
|
1949 |
// vietnamien en translitteration de base
|
|
|
1950 |
7843=>"a",7841=>"a",7845=>"a",7847=>"a",7849=>"a",7851=>"a",7853=>"a",
|
|
|
1951 |
7855=>"a",7857=>"a",7859=>"a",7861=>"a",7863=>"a",
|
|
|
1952 |
7842=>"A",7840=>"A",7844=>"A",7846=>"A",7848=>"A",
|
|
|
1953 |
7850=>"A",7852=>"A",7854=>"A",7856=>"A",7858=>"A",7860=>"A",
|
|
|
1954 |
7862=>"A",7867=>"e",7869=>"e",7865=>"e",
|
|
|
1955 |
7871=>"e",7873=>"e",7875=>"e",7877=>"e",7879=>"e",
|
|
|
1956 |
7866=>"E",7868=>"E",7864=>"E",7870=>"E",7872=>"E",7874=>"E",
|
|
|
1957 |
7876=>"E",7878=>"E",7881=>"i",7883=>"i",
|
|
|
1958 |
7880=>"I",7882=>"I",
|
|
|
1959 |
7887=>"o",7885=>"o",7889=>"o",7891=>"o",7893=>"o",
|
|
|
1960 |
7895=>"o",7897=>"o",417=>"o",7899=>"o",7901=>"o",7903=>"o",7905=>"o",
|
|
|
1961 |
7907=>"o",7886=>"O",7884=>"O",
|
|
|
1962 |
7888=>"O",7890=>"O",7892=>"O",7894=>"O",7896=>"O",416=>"O",7898=>"O",
|
|
|
1963 |
7900=>"O",7902=>"O",7904=>"O",7906=>"O",7911=>"u",
|
|
|
1964 |
361=>"u",7909=>"u",432=>"u",7913=>"u",7915=>"u",7917=>"u",7919=>"u",
|
|
|
1965 |
7921=>"u",7910=>"U",360=>"U",7908=>"U",431=>"U",
|
|
|
1966 |
7912=>"U",7914=>"U",7916=>"U",7918=>"U",7920=>"U",253=>"y",7923=>"y",
|
|
|
1967 |
7927=>"y",7929=>"y",7925=>"y",221=>"Y",7922=>"Y",7926=>"Y",7928=>"Y",
|
|
|
1968 |
7924=>"Y",273=>"d"
|
|
|
1969 |
|
|
|
1970 |
);
|
|
|
1971 |
return $charset;
|
|
|
1972 |
|
|
|
1973 |
// translitteration complexe
|
|
|
1974 |
case 'translitcomplexe':
|
|
|
1975 |
load_charset('translit');
|
|
|
1976 |
$trans = $GLOBALS['CHARSET']['translit'];
|
|
|
1977 |
|
|
|
1978 |
$translit_c = array (
|
|
|
1979 |
// vietnamien
|
|
|
1980 |
225=>"a'", 224=>"a`",7843=>"a?",227=>"a~",7841=>"a.",
|
|
|
1981 |
226=>"a^",7845=>"a^'",7847=>"a^`",7849=>"a^?",7851=>"a^~",7853=>"a^.",259=>"a(",
|
|
|
1982 |
7855=>"a('",7857=>"a(`",7859=>"a(?",7861=>"a(~",7863=>"a(.",193=>"A'",192=>"A`",
|
|
|
1983 |
7842=>"A?",195=>"A~",7840=>"A.",194=>"A^",7844=>"A^'",7846=>"A^`",7848=>"A^?",
|
|
|
1984 |
7850=>"A^~",7852=>"A^.",258=>"A(",7854=>"A('",7856=>"A(`",7858=>"A(?",7860=>"A(~",
|
|
|
1985 |
7862=>"A(.",233=>"e'",232=>"e`",7867=>"e?",7869=>"e~",7865=>"e.",234=>"e^",
|
|
|
1986 |
7871=>"e^'",7873=>"e^`",7875=>"e^?",7877=>"e^~",7879=>"e^.",201=>"E'",200=>"E`",
|
|
|
1987 |
7866=>"E?",7868=>"E~",7864=>"E.",202=>"E^",7870=>"E^'",7872=>"E^`",7874=>"E^?",
|
|
|
1988 |
7876=>"E^~",7878=>"E^.",237=>"i'",236=>"i`",7881=>"i?",297=>"i~",7883=>"i.",
|
|
|
1989 |
205=>"I'",204=>"I`",7880=>"I?",296=>"I~",7882=>"I.",243=>"o'",242=>"o`",
|
|
|
1990 |
7887=>"o?",245=>"o~",7885=>"o.",244=>"o^",7889=>"o^'",7891=>"o^`",7893=>"o^?",
|
|
|
1991 |
7895=>"o^~",7897=>"o^.",417=>"o+",7899=>"o+'",7901=>"o+`",7903=>"o+?",7905=>"o+~",
|
|
|
1992 |
7907=>"o+.",211=>"O'",210=>"O`",7886=>"O?",213=>"O~",7884=>"O.",212=>"O^",
|
|
|
1993 |
7888=>"O^'",7890=>"O^`",7892=>"O^?",7894=>"O^~",7896=>"O^.",416=>"O+",7898=>"O+'",
|
|
|
1994 |
7900=>"O+`",7902=>"O+?",7904=>"O+~",7906=>"O+.",250=>"u'",249=>"u`",7911=>"u?",
|
|
|
1995 |
361=>"u~",7909=>"u.",432=>"u+",7913=>"u+'",7915=>"u+`",7917=>"u+?",7919=>"u+~",
|
|
|
1996 |
7921=>"u+.",218=>"U'",217=>"U`",7910=>"U?",360=>"U~",7908=>"U.",431=>"U+",
|
|
|
1997 |
7912=>"U+'",7914=>"U+`",7916=>"U+?",7918=>"U+~",7920=>"U+.",253=>"y'",7923=>"y`",
|
|
|
1998 |
7927=>"y?",7929=>"y~",7925=>"y.",221=>"Y'",7922=>"Y`",7926=>"Y?",7928=>"Y~",
|
|
|
1999 |
7924=>"Y.",273=>"d-",208=>"D-",
|
|
|
2000 |
|
|
|
2001 |
// allemand
|
|
|
2002 |
228=>'ae',246=>'oe',252=>'ue',196=>'Ae',214=>'Oe',220=>'Ue'
|
|
|
2003 |
);
|
|
|
2004 |
foreach($translit_c as $u=>$t)
|
|
|
2005 |
$trans[$u] = $t;
|
|
|
2006 |
$GLOBALS['CHARSET'][$charset] = $trans;
|
|
|
2007 |
return $charset;
|
|
|
2008 |
|
|
|
2009 |
|
|
|
2010 |
default:
|
|
|
2011 |
$GLOBALS['CHARSET'][$charset] = array();
|
|
|
2012 |
return $charset;
|
|
|
2013 |
}
|
|
|
2014 |
}
|
|
|
2015 |
|
|
|
2016 |
//
|
|
|
2017 |
// Verifier qu'on peut utiliser mb_string
|
|
|
2018 |
//
|
|
|
2019 |
function init_mb_string() {
|
|
|
2020 |
static $mb;
|
|
|
2021 |
|
|
|
2022 |
// verifier que tout est present (fonctions mb_string pour php >= 4.0.6)
|
|
|
2023 |
// et que le charset interne est connu de mb_string
|
|
|
2024 |
if (!$mb) {
|
|
|
2025 |
if (function_exists('mb_internal_encoding')
|
|
|
2026 |
AND function_exists('mb_detect_order')
|
|
|
2027 |
AND function_exists('mb_substr')
|
|
|
2028 |
AND function_exists('mb_strlen')
|
|
|
2029 |
AND function_exists('mb_encode_mimeheader')
|
|
|
2030 |
AND function_exists('mb_encode_numericentity')
|
|
|
2031 |
AND function_exists('mb_decode_numericentity')
|
|
|
2032 |
AND mb_detect_order(lire_meta('charset'))
|
|
|
2033 |
) {
|
|
|
2034 |
mb_internal_encoding('utf-8');
|
|
|
2035 |
$mb = 1;
|
|
|
2036 |
} else
|
|
|
2037 |
$mb = -1;
|
|
|
2038 |
}
|
|
|
2039 |
|
|
|
2040 |
return ($mb == 1);
|
|
|
2041 |
}
|
|
|
2042 |
|
|
|
2043 |
// Detecter les versions buggees d'iconv
|
|
|
2044 |
function test_iconv() {
|
|
|
2045 |
static $iconv_ok;
|
|
|
2046 |
|
|
|
2047 |
if (!$iconv_ok) {
|
|
|
2048 |
if (!function_exists('iconv'))
|
|
|
2049 |
$iconv_ok = -1;
|
|
|
2050 |
else {
|
|
|
2051 |
if (utf_32_to_unicode(@iconv('utf-8', 'utf-32', 'chaine de test')) == 'chaine de test')
|
|
|
2052 |
$iconv_ok = 1;
|
|
|
2053 |
else
|
|
|
2054 |
$iconv_ok = -1;
|
|
|
2055 |
}
|
|
|
2056 |
}
|
|
|
2057 |
return ($iconv_ok == 1);
|
|
|
2058 |
}
|
|
|
2059 |
|
|
|
2060 |
// Test de fonctionnement du support UTF-8 dans PCRE
|
|
|
2061 |
// (contournement bug Debian Woody)
|
|
|
2062 |
function test_pcre_unicode() {
|
|
|
2063 |
static $pcre_ok = 0;
|
|
|
2064 |
|
|
|
2065 |
if (!$pcre_ok) {
|
|
|
2066 |
$s = " ".chr(195).chr(169)."t".chr(195).chr(169)." ";
|
|
|
2067 |
if (preg_match(',\W\w\w\w\W,u', $s)) $pcre_ok = 1;
|
|
|
2068 |
else $pcre_ok = -1;
|
|
|
2069 |
}
|
|
|
2070 |
return $pcre_ok == 1;
|
|
|
2071 |
}
|
|
|
2072 |
|
|
|
2073 |
// Plages alphanumeriques (incomplet...)
|
|
|
2074 |
function pcre_lettres_unicode() {
|
|
|
2075 |
static $plage_unicode;
|
|
|
2076 |
|
|
|
2077 |
if (!$plage_unicode) {
|
|
|
2078 |
if (test_pcre_unicode()) {
|
|
|
2079 |
// cf. http://www.unicode.org/charts/
|
|
|
2080 |
$plage_unicode = '\w' // iso-latin
|
|
|
2081 |
. '\x{100}-\x{24f}' // europeen etendu
|
|
|
2082 |
. '\x{300}-\x{1cff}' // des tas de trucs
|
|
|
2083 |
;
|
|
|
2084 |
}
|
|
|
2085 |
else {
|
|
|
2086 |
// fallback a trois sous
|
|
|
2087 |
$plage_unicode = '\w';
|
|
|
2088 |
}
|
|
|
2089 |
}
|
|
|
2090 |
return $plage_unicode;
|
|
|
2091 |
}
|
|
|
2092 |
|
|
|
2093 |
// Plage ponctuation de 0x2000 a 0x206F
|
|
|
2094 |
// (i.e. de 226-128-128 a 226-129-176)
|
|
|
2095 |
function plage_punct_unicode() {
|
|
|
2096 |
return '\xE2(\x80[\x80-\xBF]|\x81[\x80-\xAF])';
|
|
|
2097 |
}
|
|
|
2098 |
|
|
|
2099 |
//
|
|
|
2100 |
// Transformer les é en {
|
|
|
2101 |
//
|
|
|
2102 |
function html2unicode($texte) {
|
|
|
2103 |
static $trans;
|
|
|
2104 |
if (!$trans) {
|
|
|
2105 |
global $CHARSET;
|
|
|
2106 |
load_charset('html');
|
|
|
2107 |
foreach ($CHARSET['html'] as $key => $val) {
|
|
|
2108 |
$trans["&$key;"] = $val;
|
|
|
2109 |
}
|
|
|
2110 |
}
|
|
|
2111 |
|
|
|
2112 |
return strtr($texte, $trans);
|
|
|
2113 |
}
|
|
|
2114 |
|
|
|
2115 |
//
|
|
|
2116 |
// Transformer les é en {
|
|
|
2117 |
//
|
|
|
2118 |
function mathml2unicode($texte) {
|
|
|
2119 |
static $trans;
|
|
|
2120 |
if (!$trans) {
|
|
|
2121 |
global $CHARSET;
|
|
|
2122 |
load_charset('mathml');
|
|
|
2123 |
|
|
|
2124 |
foreach ($CHARSET['mathml'] as $key => $val)
|
|
|
2125 |
$trans["&$key;"] = $val;
|
|
|
2126 |
}
|
|
|
2127 |
|
|
|
2128 |
return strtr($texte, $trans);
|
|
|
2129 |
}
|
|
|
2130 |
|
|
|
2131 |
|
|
|
2132 |
//
|
|
|
2133 |
// Transforme une chaine en entites unicode 
|
|
|
2134 |
//
|
|
|
2135 |
function charset2unicode($texte, $charset='AUTO', $forcer = false) {
|
|
|
2136 |
static $trans;
|
|
|
2137 |
|
|
|
2138 |
if ($charset == 'AUTO')
|
|
|
2139 |
$charset = lire_meta('charset');
|
|
|
2140 |
|
|
|
2141 |
switch ($charset) {
|
|
|
2142 |
case 'utf-8':
|
|
|
2143 |
return utf_8_to_unicode($texte);
|
|
|
2144 |
|
|
|
2145 |
case 'iso-8859-1':
|
|
|
2146 |
// corriger caracteres non-conformes issus de Windows (CP-1252)
|
|
|
2147 |
$faux_latin = array(
|
|
|
2148 |
chr(138) => "Š", // Scaron
|
|
|
2149 |
chr(140) => "Œ", // OElig
|
|
|
2150 |
chr(142) => "Ž", // Zcaron
|
|
|
2151 |
chr(154) => "š", // scaron
|
|
|
2152 |
chr(156) => "œ", // oelig
|
|
|
2153 |
chr(158) => "ž" // zcaron
|
|
|
2154 |
);
|
|
|
2155 |
$texte = strtr($texte, $faux_latin);
|
|
|
2156 |
|
|
|
2157 |
// On commente cet appel tant qu'il reste des spip v<1.5 dans la nature
|
|
|
2158 |
// pour que le filtre |entites_unicode donne des backends lisibles sur ces spips.
|
|
|
2159 |
if (!$forcer) return $texte;
|
|
|
2160 |
|
|
|
2161 |
default:
|
|
|
2162 |
// mbstring presente ?
|
|
|
2163 |
if (init_mb_string()) {
|
|
|
2164 |
if ($order = mb_detect_order() # mb_string connait-il $charset?
|
|
|
2165 |
AND mb_detect_order($charset)) {
|
|
|
2166 |
$s = mb_convert_encoding($texte, 'utf-8', $charset);
|
|
|
2167 |
if ($s && $s != $texte) return utf_8_to_unicode($s);
|
|
|
2168 |
}
|
|
|
2169 |
mb_detect_order($order); # remettre comme precedemment
|
|
|
2170 |
}
|
|
|
2171 |
|
|
|
2172 |
// Sinon, peut-etre connaissons-nous ce charset ?
|
|
|
2173 |
if (!isset($trans[$charset])) {
|
|
|
2174 |
global $CHARSET;
|
|
|
2175 |
load_charset($charset);
|
|
|
2176 |
foreach ($CHARSET[$charset] as $key => $val) {
|
|
|
2177 |
$trans[$charset][chr($key)] = '&#'.$val.';';
|
|
|
2178 |
}
|
|
|
2179 |
}
|
|
|
2180 |
if (count($trans[$charset]))
|
|
|
2181 |
return strtr($texte, $trans[$charset]);
|
|
|
2182 |
|
|
|
2183 |
// Sinon demander a iconv (malgre le fait qu'il coupe quand un
|
|
|
2184 |
// caractere n'appartient pas au charset, mais c'est un probleme
|
|
|
2185 |
// surtout en utf-8, gere ci-dessus)
|
|
|
2186 |
if (test_iconv()) {
|
|
|
2187 |
$s = iconv($charset, 'utf-32le', $texte);
|
|
|
2188 |
if ($s) return utf_32_to_unicode($s);
|
|
|
2189 |
}
|
|
|
2190 |
|
|
|
2191 |
// Au pire ne rien faire
|
|
|
2192 |
spip_log("erreur charset $charset non supporte");
|
|
|
2193 |
return $texte;
|
|
|
2194 |
}
|
|
|
2195 |
}
|
|
|
2196 |
|
|
|
2197 |
//
|
|
|
2198 |
// Transforme les entites unicode  dans le charset specifie
|
|
|
2199 |
//
|
|
|
2200 |
function unicode2charset($texte, $charset='AUTO') {
|
|
|
2201 |
static $CHARSET_REVERSE;
|
|
|
2202 |
if ($charset == 'AUTO')
|
|
|
2203 |
$charset = lire_meta('charset');
|
|
|
2204 |
|
|
|
2205 |
switch($charset) {
|
|
|
2206 |
case 'utf-8':
|
|
|
2207 |
return unicode_to_utf_8($texte);
|
|
|
2208 |
break;
|
|
|
2209 |
|
|
|
2210 |
default:
|
|
|
2211 |
$charset = load_charset($charset);
|
|
|
2212 |
|
|
|
2213 |
if (!is_array($CHARSET_REVERSE[$charset])) {
|
|
|
2214 |
$CHARSET_REVERSE[$charset] = array_flip($GLOBALS['CHARSET'][$charset]);
|
|
|
2215 |
}
|
|
|
2216 |
|
|
|
2217 |
$trans = array();
|
|
|
2218 |
// Construire la table de remplacements
|
|
|
2219 |
// 1. Entites decimales (type "{")
|
|
|
2220 |
if (preg_match_all(',&#([0-9]+);,', $texte, $regs, PREG_PATTERN_ORDER)) {
|
|
|
2221 |
$entites = array_flip($regs[1]);
|
|
|
2222 |
foreach ($entites as $e => $v) {
|
|
|
2223 |
if ($s = ($e < 128) ? $e : $CHARSET_REVERSE[$charset][intval($e)])
|
|
|
2224 |
$trans['&#'.$e.';'] = chr($s);
|
|
|
2225 |
}
|
|
|
2226 |
}
|
|
|
2227 |
// 2. Entites hexadecimales (type "
")
|
|
|
2228 |
if (preg_match_all(',&#x([0-9a-zA-Z]+);,', $texte, $regs, PREG_PATTERN_ORDER)) {
|
|
|
2229 |
$entites = array_flip($regs[1]);
|
|
|
2230 |
foreach ($entites as $e => $v) {
|
|
|
2231 |
$h = hexdec($e);
|
|
|
2232 |
if ($s = ($h < 128) ? $h : $CHARSET_REVERSE[$charset][$h])
|
|
|
2233 |
$trans['&#x'.$e.';'] = chr($s);
|
|
|
2234 |
}
|
|
|
2235 |
}
|
|
|
2236 |
$texte = strtr($texte, $trans);
|
|
|
2237 |
return $texte;
|
|
|
2238 |
}
|
|
|
2239 |
}
|
|
|
2240 |
|
|
|
2241 |
|
|
|
2242 |
// Importer un texte depuis un charset externe vers le charset du site
|
|
|
2243 |
// (les caracteres non resolus sont transformes en {)
|
|
|
2244 |
function importer_charset($texte, $charset = 'AUTO') {
|
|
|
2245 |
return unicode2charset(charset2unicode($texte, $charset, true));
|
|
|
2246 |
}
|
|
|
2247 |
|
|
|
2248 |
// UTF-8
|
|
|
2249 |
function utf_8_to_unicode($source) {
|
|
|
2250 |
|
|
|
2251 |
// mb_string : methode rapide
|
|
|
2252 |
if (init_mb_string()) {
|
|
|
2253 |
$convmap = array(0x7F, 0xFFFFFF, 0x0, 0xFFFFFF);
|
|
|
2254 |
return mb_encode_numericentity($source, $convmap, 'UTF-8');
|
|
|
2255 |
}
|
|
|
2256 |
|
|
|
2257 |
// Sinon methode pas a pas
|
|
|
2258 |
static $decrement;
|
|
|
2259 |
static $shift;
|
|
|
2260 |
|
|
|
2261 |
// Cf. php.net, par Ronen. Adapte pour compatibilite php3
|
|
|
2262 |
if (!is_array($decrement)) {
|
|
|
2263 |
// array used to figure what number to decrement from character order value
|
|
|
2264 |
// according to number of characters used to map unicode to ascii by utf-8
|
|
|
2265 |
$decrement[4] = 240;
|
|
|
2266 |
$decrement[3] = 224;
|
|
|
2267 |
$decrement[2] = 192;
|
|
|
2268 |
$decrement[1] = 0;
|
|
|
2269 |
// the number of bits to shift each charNum by
|
|
|
2270 |
$shift[1][0] = 0;
|
|
|
2271 |
$shift[2][0] = 6;
|
|
|
2272 |
$shift[2][1] = 0;
|
|
|
2273 |
$shift[3][0] = 12;
|
|
|
2274 |
$shift[3][1] = 6;
|
|
|
2275 |
$shift[3][2] = 0;
|
|
|
2276 |
$shift[4][0] = 18;
|
|
|
2277 |
$shift[4][1] = 12;
|
|
|
2278 |
$shift[4][2] = 6;
|
|
|
2279 |
$shift[4][3] = 0;
|
|
|
2280 |
}
|
|
|
2281 |
|
|
|
2282 |
$pos = 0;
|
|
|
2283 |
$len = strlen ($source);
|
|
|
2284 |
$encodedString = '';
|
|
|
2285 |
while ($pos < $len) {
|
|
|
2286 |
$char = '';
|
|
|
2287 |
$ischar = false;
|
|
|
2288 |
$asciiPos = ord (substr ($source, $pos, 1));
|
|
|
2289 |
if (($asciiPos >= 240) && ($asciiPos <= 255)) {
|
|
|
2290 |
// 4 chars representing one unicode character
|
|
|
2291 |
$thisLetter = substr ($source, $pos, 4);
|
|
|
2292 |
$pos += 4;
|
|
|
2293 |
}
|
|
|
2294 |
else if (($asciiPos >= 224) && ($asciiPos <= 239)) {
|
|
|
2295 |
// 3 chars representing one unicode character
|
|
|
2296 |
$thisLetter = substr ($source, $pos, 3);
|
|
|
2297 |
$pos += 3;
|
|
|
2298 |
}
|
|
|
2299 |
else if (($asciiPos >= 192) && ($asciiPos <= 223)) {
|
|
|
2300 |
// 2 chars representing one unicode character
|
|
|
2301 |
$thisLetter = substr ($source, $pos, 2);
|
|
|
2302 |
$pos += 2;
|
|
|
2303 |
}
|
|
|
2304 |
else {
|
|
|
2305 |
// 1 char (lower ascii)
|
|
|
2306 |
$thisLetter = substr ($source, $pos, 1);
|
|
|
2307 |
$pos += 1;
|
|
|
2308 |
$char = $thisLetter;
|
|
|
2309 |
$ischar = true;
|
|
|
2310 |
}
|
|
|
2311 |
|
|
|
2312 |
if ($ischar)
|
|
|
2313 |
$encodedString .= $char;
|
|
|
2314 |
else { // process the string representing the letter to a unicode entity
|
|
|
2315 |
$thisLen = strlen ($thisLetter);
|
|
|
2316 |
$thisPos = 0;
|
|
|
2317 |
$decimalCode = 0;
|
|
|
2318 |
while ($thisPos < $thisLen) {
|
|
|
2319 |
$thisCharOrd = ord (substr ($thisLetter, $thisPos, 1));
|
|
|
2320 |
if ($thisPos == 0) {
|
|
|
2321 |
$charNum = intval ($thisCharOrd - $decrement[$thisLen]);
|
|
|
2322 |
$decimalCode += ($charNum << $shift[$thisLen][$thisPos]);
|
|
|
2323 |
} else {
|
|
|
2324 |
$charNum = intval ($thisCharOrd - 128);
|
|
|
2325 |
$decimalCode += ($charNum << $shift[$thisLen][$thisPos]);
|
|
|
2326 |
}
|
|
|
2327 |
$thisPos++;
|
|
|
2328 |
}
|
|
|
2329 |
$encodedLetter = "&#". ereg_replace('^0+', '', $decimalCode) . ';';
|
|
|
2330 |
$encodedString .= $encodedLetter;
|
|
|
2331 |
}
|
|
|
2332 |
}
|
|
|
2333 |
return $encodedString;
|
|
|
2334 |
}
|
|
|
2335 |
|
|
|
2336 |
// UTF-32 ne sert plus que si on passe par iconv, c'est-a-dire quand
|
|
|
2337 |
// mb_string est absente ou ne connait pas notre charset
|
|
|
2338 |
// mais on l'optimise quand meme par mb_string
|
|
|
2339 |
// => tout ca sera osolete quand on sera surs d'avoir mb_string
|
|
|
2340 |
function utf_32_to_unicode($source) {
|
|
|
2341 |
|
|
|
2342 |
// mb_string : methode rapide
|
|
|
2343 |
if (init_mb_string()) {
|
|
|
2344 |
$convmap = array(0x7F, 0xFFFFFF, 0x0, 0xFFFFFF);
|
|
|
2345 |
$source = mb_encode_numericentity($source, $convmap, 'UTF-32LE');
|
|
|
2346 |
return str_replace(chr(0), '', $source);
|
|
|
2347 |
}
|
|
|
2348 |
|
|
|
2349 |
// Sinon methode lente
|
|
|
2350 |
$texte = '';
|
|
|
2351 |
while ($source) {
|
|
|
2352 |
$words = unpack("V*", substr($source, 0, 1024));
|
|
|
2353 |
$source = substr($source, 1024);
|
|
|
2354 |
foreach ($words as $word) {
|
|
|
2355 |
if ($word < 128)
|
|
|
2356 |
$texte .= chr($word);
|
|
|
2357 |
// ignorer le BOM - http://www.unicode.org/faq/utf_bom.html
|
|
|
2358 |
else if ($word != 65279)
|
|
|
2359 |
$texte .= '&#'.$word.';';
|
|
|
2360 |
}
|
|
|
2361 |
}
|
|
|
2362 |
return $texte;
|
|
|
2363 |
|
|
|
2364 |
}
|
|
|
2365 |
|
|
|
2366 |
// Ce bloc provient de php.net, auteur Ronen
|
|
|
2367 |
function caractere_utf_8($num) {
|
|
|
2368 |
if($num<128)
|
|
|
2369 |
return chr($num);
|
|
|
2370 |
if($num<2048)
|
|
|
2371 |
return chr(($num>>6)+192).chr(($num&63)+128);
|
|
|
2372 |
if($num<65536)
|
|
|
2373 |
return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128);
|
|
|
2374 |
if($num<1114112)
|
|
|
2375 |
return chr($num>>18+240).chr((($num>>12)&63)+128).chr(($num>>6)&63+128). chr($num&63+128);
|
|
|
2376 |
return '';
|
|
|
2377 |
}
|
|
|
2378 |
|
|
|
2379 |
function unicode_to_utf_8($texte) {
|
|
|
2380 |
while (preg_match(',�*([0-9]+);,', $texte, $regs)) {
|
|
|
2381 |
$s = caractere_utf_8($regs[1]);
|
|
|
2382 |
$texte = str_replace($regs[0], $s, $texte);
|
|
|
2383 |
}
|
|
|
2384 |
return $texte;
|
|
|
2385 |
}
|
|
|
2386 |
|
|
|
2387 |
// convertit les Ĉ en \u0108
|
|
|
2388 |
function unicode_to_javascript($texte) {
|
|
|
2389 |
while (preg_match(',�*([0-9]+);,', $texte, $regs) AND !$vu[$regs[1]]) {
|
|
|
2390 |
$num = $regs[1];
|
|
|
2391 |
$vu[$num] = true;
|
|
|
2392 |
$s = '\u'.sprintf("%04x", $num);
|
|
|
2393 |
$texte = str_replace($regs[0], $s, $texte);
|
|
|
2394 |
}
|
|
|
2395 |
return $texte;
|
|
|
2396 |
}
|
|
|
2397 |
|
|
|
2398 |
// convertit les %uxxxx (envoyes par javascript)
|
|
|
2399 |
function javascript_to_unicode ($texte) {
|
|
|
2400 |
while (ereg("%u([0-9A-F][0-9A-F][0-9A-F][0-9A-F])", $texte, $regs))
|
|
|
2401 |
$texte = str_replace($regs[0],"&#".hexdec($regs[1]).";", $texte);
|
|
|
2402 |
return $texte;
|
|
|
2403 |
}
|
|
|
2404 |
// convertit les %E9 (envoyes par le browser) en chaine du charset du site (binaire)
|
|
|
2405 |
function javascript_to_binary ($texte) {
|
|
|
2406 |
while (ereg("%([0-9A-F][0-9A-F])", $texte, $regs))
|
|
|
2407 |
$texte = str_replace($regs[0],chr(hexdec($regs[1])), $texte);
|
|
|
2408 |
return $texte;
|
|
|
2409 |
}
|
|
|
2410 |
|
|
|
2411 |
|
|
|
2412 |
//
|
|
|
2413 |
// Translitteration charset => ascii (pour l'indexation)
|
|
|
2414 |
// Attention les caracteres non reconnus sont renvoyes en utf-8
|
|
|
2415 |
//
|
|
|
2416 |
function translitteration($texte, $charset='AUTO', $complexe='') {
|
|
|
2417 |
static $trans;
|
|
|
2418 |
if ($charset == 'AUTO')
|
|
|
2419 |
$charset = lire_meta('charset');
|
|
|
2420 |
|
|
|
2421 |
$table_translit ='translit'.$complexe;
|
|
|
2422 |
|
|
|
2423 |
// 1. Passer le charset et les é en utf-8
|
|
|
2424 |
$texte = unicode_to_utf_8(html2unicode(charset2unicode($texte, $charset, true)));
|
|
|
2425 |
|
|
|
2426 |
// 2. Translitterer grace a la table predefinie
|
|
|
2427 |
if (!$trans[$complexe]) {
|
|
|
2428 |
global $CHARSET;
|
|
|
2429 |
load_charset($table_translit);
|
|
|
2430 |
foreach ($CHARSET[$table_translit] as $key => $val)
|
|
|
2431 |
$trans[$complexe][caractere_utf_8($key)] = $val;
|
|
|
2432 |
}
|
|
|
2433 |
|
|
|
2434 |
return strtr($texte, $trans[$complexe]);
|
|
|
2435 |
}
|
|
|
2436 |
|
|
|
2437 |
function translitteration_complexe($texte) {
|
|
|
2438 |
return translitteration($texte,'AUTO','complexe');
|
|
|
2439 |
}
|
|
|
2440 |
|
|
|
2441 |
// Reconnaitre le BOM utf-8 (0xEFBBBF)
|
|
|
2442 |
function bom_utf8($texte) {
|
|
|
2443 |
return (substr($texte, 0,3) == chr(0xEF).chr(0xBB).chr(0xBF));
|
|
|
2444 |
}
|
|
|
2445 |
|
|
|
2446 |
// Transcode une page (probablement attrapee sur le web) en essayant
|
|
|
2447 |
// par tous les moyens de deviner son charset (y compris headers HTTP)
|
|
|
2448 |
function transcoder_page($texte, $headers='') {
|
|
|
2449 |
|
|
|
2450 |
// Reconnaitre le BOM utf-8 (0xEFBBBF)
|
|
|
2451 |
if (bom_utf8($texte))
|
|
|
2452 |
$charset = 'utf-8';
|
|
|
2453 |
// charset precise par le contenu (xml)
|
|
|
2454 |
else if (preg_match(',<[?]xml[^>]*encoding[^>]*=[^>]*([-_a-z0-9]+?),Uims', $texte, $regs))
|
|
|
2455 |
$charset = trim(strtolower($regs[1]));
|
|
|
2456 |
// charset precise par le contenu (html)
|
|
|
2457 |
else if (preg_match(',<(meta|html|body)[^>]*charset[^>]*=[^>]*([-_a-z0-9]+?),Uims', $texte, $regs))
|
|
|
2458 |
$charset = trim(strtolower($regs[2]));
|
|
|
2459 |
// charset de la reponse http
|
|
|
2460 |
else if (preg_match(',charset=([-_a-z0-9]+),i', $headers, $regs))
|
|
|
2461 |
$charset = trim(strtolower($regs[1]));
|
|
|
2462 |
|
|
|
2463 |
// normaliser les noms du shif-jis japonais
|
|
|
2464 |
if (preg_match(',^(x|shift)[_-]s?jis$,i', $charset))
|
|
|
2465 |
$charset = 'shift-jis';
|
|
|
2466 |
|
|
|
2467 |
if ($charset) {
|
|
|
2468 |
spip_log("charset source detecte : $charset");
|
|
|
2469 |
} else {
|
|
|
2470 |
// valeur par defaut
|
|
|
2471 |
$charset = 'iso-8859-1';
|
|
|
2472 |
spip_log("pas de charset detecte, on suppose : $charset");
|
|
|
2473 |
}
|
|
|
2474 |
|
|
|
2475 |
return importer_charset($texte, $charset);
|
|
|
2476 |
}
|
|
|
2477 |
|
|
|
2478 |
// Initialisation
|
|
|
2479 |
$GLOBALS['CHARSET'] = Array();
|
|
|
2480 |
|
|
|
2481 |
?>
|