| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
package Aion::Format::Html; |
|
2
|
|
|
|
|
|
|
|
|
3
|
1
|
|
|
1
|
|
121885
|
use common::sense; |
|
|
1
|
|
|
|
|
1
|
|
|
|
1
|
|
|
|
|
6
|
|
|
4
|
|
|
|
|
|
|
|
|
5
|
1
|
|
|
1
|
|
68
|
use Exporter qw/import/; |
|
|
1
|
|
|
|
|
1
|
|
|
|
1
|
|
|
|
|
3756
|
|
|
6
|
|
|
|
|
|
|
our @EXPORT = our @EXPORT_OK = grep { |
|
7
|
|
|
|
|
|
|
*{$Aion::Format::Html::{$_}}{CODE} && !/^(_|(NaN|import)\z)/n |
|
8
|
|
|
|
|
|
|
} keys %Aion::Format::Html::; |
|
9
|
|
|
|
|
|
|
|
|
10
|
|
|
|
|
|
|
# Экранирует символы html |
|
11
|
|
|
|
|
|
|
my %HTML_SIM = (qw/< < > > & & \' ' " "/, "\n" => ' ', "\t" => ' '); |
|
12
|
|
|
|
|
|
|
sub to_html (;$) { |
|
13
|
1
|
50
|
|
1
|
1
|
486
|
my ($s) = @_? @_: $_; |
|
14
|
1
|
|
|
|
|
6
|
$s =~ s/[<>&\'\"]/$HTML_SIM{$&}/ge; |
|
|
2
|
|
|
|
|
7
|
|
|
15
|
1
|
|
|
|
|
4
|
$s |
|
16
|
|
|
|
|
|
|
} |
|
17
|
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
our %ENTITIES = ( |
|
19
|
|
|
|
|
|
|
# |
|
20
|
|
|
|
|
|
|
# Управляющие символы C0 и основная латиница |
|
21
|
|
|
|
|
|
|
# U+0000—U+007F |
|
22
|
|
|
|
|
|
|
# Данный диапазон Юникода полностью соответствует стандарту ASCII за исключением соглашения о наложении литер через возврат на шаг.[3] |
|
23
|
|
|
|
|
|
|
# Символ Назначение Мнемоника HTML Код |
|
24
|
|
|
|
|
|
|
# |
|
25
|
|
|
|
|
|
|
# U+0000—U+001F — управляющие символы C0 |
|
26
|
|
|
|
|
|
|
# табуляция — HT (ANSI), ГТ (ГОСТ) 	 5.0 U+0009 |
|
27
|
|
|
|
|
|
|
Tab => 9, |
|
28
|
|
|
|
|
|
|
# перевод строки — LF (ANSI), ПС (ГОСТ) 
 5.0 U+000A
|
|
29
|
|
|
|
|
|
|
NewLine => 10, |
|
30
|
|
|
|
|
|
|
# |
|
31
|
|
|
|
|
|
|
# U+0032—U+007E — основная латиница |
|
32
|
|
|
|
|
|
|
# |
|
33
|
|
|
|
|
|
|
# пробел U+0020 |
|
34
|
|
|
|
|
|
|
# ! восклицательный знак ! 5.0 U+0021 ! |
|
35
|
|
|
|
|
|
|
excl => 33, |
|
36
|
|
|
|
|
|
|
# " двойная кавычка[4] " 5.0 U+0022 " " 2.0 |
|
37
|
|
|
|
|
|
|
quot => 34, |
|
38
|
|
|
|
|
|
|
QUOT => 34, |
|
39
|
|
|
|
|
|
|
# # знак номера («решётка» или «диез») # 5.0 U+0023 # |
|
40
|
|
|
|
|
|
|
num => 35, |
|
41
|
|
|
|
|
|
|
# $ знак доллара $ 5.0 U+0024 $ |
|
42
|
|
|
|
|
|
|
dollar => 36, |
|
43
|
|
|
|
|
|
|
# % знак процента % 5.0 U+0025 % |
|
44
|
|
|
|
|
|
|
percnt => 37, |
|
45
|
|
|
|
|
|
|
# & амперсанд & 5.0 U+0026 & & 1.0/2.0 |
|
46
|
|
|
|
|
|
|
amp => 38, |
|
47
|
|
|
|
|
|
|
AMP => 38, |
|
48
|
|
|
|
|
|
|
# ' одинарная кавычка (занимающий позицию апостроф)[5] ' 5.0 U+0027 ' |
|
49
|
|
|
|
|
|
|
apos => 39, |
|
50
|
|
|
|
|
|
|
# ( левая круглая скобка ( 5.0 U+0028 ( |
|
51
|
|
|
|
|
|
|
lpar => 40, |
|
52
|
|
|
|
|
|
|
# ) правая круглая скобка ) 5.0 U+0029 ) |
|
53
|
|
|
|
|
|
|
rpar => 41, |
|
54
|
|
|
|
|
|
|
# * звёздочка (может быть как высоко, так и среднерасположенной)[6][7] * 5.0 U+002A * * |
|
55
|
|
|
|
|
|
|
ast => 42, |
|
56
|
|
|
|
|
|
|
midast => 42, |
|
57
|
|
|
|
|
|
|
# + знак плюс + 5.0 U+002B + |
|
58
|
|
|
|
|
|
|
plus => 43, |
|
59
|
|
|
|
|
|
|
# , запятая[8] , 5.0 U+002C , |
|
60
|
|
|
|
|
|
|
comma => 44, |
|
61
|
|
|
|
|
|
|
# - чёрточка-минус (не рекомендован к использованию)[9][10] U+002D - |
|
62
|
|
|
|
|
|
|
# . точка[11] . 5.0 U+002E . |
|
63
|
|
|
|
|
|
|
period => 46, |
|
64
|
|
|
|
|
|
|
# / косая черта (солидус)[12][13] / 5.0 U+002F / |
|
65
|
|
|
|
|
|
|
sol => 47, |
|
66
|
|
|
|
|
|
|
# |
|
67
|
|
|
|
|
|
|
# |
|
68
|
|
|
|
|
|
|
# U+0030—U+0039 — цифры 0—9[14] |
|
69
|
|
|
|
|
|
|
# |
|
70
|
|
|
|
|
|
|
# : двоеточие : 5.0 U+003A : |
|
71
|
|
|
|
|
|
|
colon => 58, |
|
72
|
|
|
|
|
|
|
# ; точка с запятой ; 5.0 U+003B ; |
|
73
|
|
|
|
|
|
|
semi => 59, |
|
74
|
|
|
|
|
|
|
# < знак меньше < 5.0 U+003C < < 1.0/2.0 |
|
75
|
|
|
|
|
|
|
LT => 60, |
|
76
|
|
|
|
|
|
|
lt => 60, |
|
77
|
|
|
|
|
|
|
# = знак равенства = 5.0 U+003D = |
|
78
|
|
|
|
|
|
|
equals => 61, |
|
79
|
|
|
|
|
|
|
# > знак больше > 5.0 U+003E > > 1.0/2.0 |
|
80
|
|
|
|
|
|
|
GT => 62, |
|
81
|
|
|
|
|
|
|
gt => 62, |
|
82
|
|
|
|
|
|
|
# ? знак вопроса ? 5.0 U+003F ? |
|
83
|
|
|
|
|
|
|
quest => 63, |
|
84
|
|
|
|
|
|
|
# @ коммерческий «эт» @ 5.0 U+0040 @ |
|
85
|
|
|
|
|
|
|
commat => 64, |
|
86
|
|
|
|
|
|
|
# |
|
87
|
|
|
|
|
|
|
# |
|
88
|
|
|
|
|
|
|
# U+0041—U+005A — заглавные латинские буквы A—Z[15] |
|
89
|
|
|
|
|
|
|
# |
|
90
|
|
|
|
|
|
|
# [ левая квадратная скобка [ 5.0 U+005B [ [ |
|
91
|
|
|
|
|
|
|
lbrack => 91, |
|
92
|
|
|
|
|
|
|
lsqb => 91, |
|
93
|
|
|
|
|
|
|
# \ обратная косая черта[16] \ 5.0 U+005C \ |
|
94
|
|
|
|
|
|
|
bsol => 92, |
|
95
|
|
|
|
|
|
|
# ] правая квадратная скобка ] 5.0 U+005D ] ] |
|
96
|
|
|
|
|
|
|
rsqb => 93, |
|
97
|
|
|
|
|
|
|
rbrack => 93, |
|
98
|
|
|
|
|
|
|
# ^ карет — (может быть как высоко, так и среднерасположенным)[17][18] ^ 5.0 U+005E ^ |
|
99
|
|
|
|
|
|
|
Hat => 94, |
|
100
|
|
|
|
|
|
|
# _ занимающее позицию подчёркивание (должно стыковаться по горизонтали)[19] _ 5.0 U+005F _ _ |
|
101
|
|
|
|
|
|
|
lowbar => 95, |
|
102
|
|
|
|
|
|
|
UnderBar => 95, |
|
103
|
|
|
|
|
|
|
# ` занимающий позицию обратный апостроф (грейв)[20] ` 5.0 U+0060 ` ` |
|
104
|
|
|
|
|
|
|
grave => 96, |
|
105
|
|
|
|
|
|
|
DiacriticalGrave => 96, |
|
106
|
|
|
|
|
|
|
# |
|
107
|
|
|
|
|
|
|
# U+0061—U+007A — строчные латинские буквы a—z[21] |
|
108
|
|
|
|
|
|
|
# { левая фигурная скобка { 5.0 U+007B { { |
|
109
|
|
|
|
|
|
|
lcub => 123, |
|
110
|
|
|
|
|
|
|
lbrace => 123, |
|
111
|
|
|
|
|
|
|
# | вертикальная черта[22] | 5.0 U+007C | | | |
|
112
|
|
|
|
|
|
|
verbar => 124, |
|
113
|
|
|
|
|
|
|
vert => 124, |
|
114
|
|
|
|
|
|
|
VerticalLine => 124, |
|
115
|
|
|
|
|
|
|
# } правая фигурная скобка } 5.0 U+007D } } |
|
116
|
|
|
|
|
|
|
rcub => 125, |
|
117
|
|
|
|
|
|
|
rbrace => 125, |
|
118
|
|
|
|
|
|
|
# ~ занимающая позицию тильда (может быть как высоко, так и среднерасположенной, не рекомендуется к использованию)[23][24] U+007E ~ |
|
119
|
|
|
|
|
|
|
# |
|
120
|
|
|
|
|
|
|
# U+007F — управляющие символы C0 |
|
121
|
|
|
|
|
|
|
# Управляющие символы C1 и дополнение из Latin-1 |
|
122
|
|
|
|
|
|
|
# U+0080—U+00FF |
|
123
|
|
|
|
|
|
|
# Исторически в диапазон U+00A0—U+00FF («Дополнение из Latin‑1») переносились литеры из соответствующих позиций Latin‑1 (ISO 8859‑1), пока не стало объявлено, что стандарт Latin‑1 включён в Юникод полностью — как ASCII (U+0000—U+007F), так и данный диапазон (U+0080—U+00FF), за исключением соглашения о наложении литер через возврат на шаг. |
|
124
|
|
|
|
|
|
|
# Символ Назначение Мнемоника HTML Код |
|
125
|
|
|
|
|
|
|
# U+0080—U+009F — управляющие символы C1 |
|
126
|
|
|
|
|
|
|
# U+00A0—U+00FF — дополнение из Latin‑1 |
|
127
|
|
|
|
|
|
|
# |
|
128
|
|
|
|
|
|
|
# неразрывный пробел   5.0 U+00A0 3.2 |
|
129
|
|
|
|
|
|
|
NonBreakingSpace => 160, |
|
130
|
|
|
|
|
|
|
nbsp => 160, |
|
131
|
|
|
|
|
|
|
# ¡ перевёрнутый восклицательный знак ¡ 3.2 U+00A1 ¡ |
|
132
|
|
|
|
|
|
|
iexcl => 161, |
|
133
|
|
|
|
|
|
|
# ¢ символ цента ¢ 3.2 U+00A2 ¢ |
|
134
|
|
|
|
|
|
|
cent => 162, |
|
135
|
|
|
|
|
|
|
# £ символ фунта £ 3.2 U+00A3 £ |
|
136
|
|
|
|
|
|
|
pound => 163, |
|
137
|
|
|
|
|
|
|
# ¤ знак валюты ¤ 3.2 U+00A4 ¤ |
|
138
|
|
|
|
|
|
|
curren => 164, |
|
139
|
|
|
|
|
|
|
# ¥ символ иены и юаня ¥ 3.2 U+00A5 ¥ |
|
140
|
|
|
|
|
|
|
yen => 165, |
|
141
|
|
|
|
|
|
|
# ¦ разорванная вертикальная черта &brkbar; нестандарт U+00A6 ¦ |
|
142
|
|
|
|
|
|
|
brkbar => 166, |
|
143
|
|
|
|
|
|
|
# ¦ 3.2 |
|
144
|
|
|
|
|
|
|
brvbar => 166, |
|
145
|
|
|
|
|
|
|
# § знак параграфа § 3.2 U+00A7 § |
|
146
|
|
|
|
|
|
|
sect => 167, |
|
147
|
|
|
|
|
|
|
# ¨ диерезис, трема умлаут (все занимают позицию) ¨ 5.0 U+00A8 ¨ ¨ 5.0 ¨ 5.0 ¨ 3.2 |
|
148
|
|
|
|
|
|
|
die => 168, |
|
149
|
|
|
|
|
|
|
Dot => 168, |
|
150
|
|
|
|
|
|
|
DoubleDot => 168, |
|
151
|
|
|
|
|
|
|
uml => 168, |
|
152
|
|
|
|
|
|
|
# © знак охраны авторского права © 5.0 U+00A9 © © 3.2 |
|
153
|
|
|
|
|
|
|
COPY => 169, |
|
154
|
|
|
|
|
|
|
copy => 169, |
|
155
|
|
|
|
|
|
|
# ª порядковый индикатор (женский род) ª 3.2 U+00AA ª |
|
156
|
|
|
|
|
|
|
ordf => 170, |
|
157
|
|
|
|
|
|
|
# « направленная влево двойная угловая кавычка « 3.2 U+00AB « |
|
158
|
|
|
|
|
|
|
laquo => 171, |
|
159
|
|
|
|
|
|
|
# ¬ знак «отрицание» ¬ 3.2 U+00AC ¬ |
|
160
|
|
|
|
|
|
|
not => 172, |
|
161
|
|
|
|
|
|
|
# мягкий перенос (обозначает место возможного переноса: при отсутствии переноса невидим, при наличии — виден как дефис перед разрывом строки). В примере, по отсутствию переноса, невидим. 3.2 U+00AD |
|
162
|
|
|
|
|
|
|
shy => 173, |
|
163
|
|
|
|
|
|
|
# ® знак правовой охраны товарного знака ® 5.0 U+00AE ® ® 5.0 ® 3.2 |
|
164
|
|
|
|
|
|
|
REG => 174, |
|
165
|
|
|
|
|
|
|
circledR => 174, |
|
166
|
|
|
|
|
|
|
reg => 174, |
|
167
|
|
|
|
|
|
|
# ¯ занимающий позицию макрон &hibar; нестандарт U+00AF ¯ ¯on; нестандарт ¯ 5.0 ¯ 3.2 |
|
168
|
|
|
|
|
|
|
hibar => 175, |
|
169
|
|
|
|
|
|
|
macron => 175, |
|
170
|
|
|
|
|
|
|
strns => 175, |
|
171
|
|
|
|
|
|
|
macr => 175, |
|
172
|
|
|
|
|
|
|
# ° занимающий позицию знак градуса °ree; нестандарт U+00B0 ° ° 3.2 |
|
173
|
|
|
|
|
|
|
degree => 176, |
|
174
|
|
|
|
|
|
|
deg => 176, |
|
175
|
|
|
|
|
|
|
# ± плюс-минус ± 5.0 U+00B1 ± ± 5.0 ± 3.2 |
|
176
|
|
|
|
|
|
|
pm => 177, |
|
177
|
|
|
|
|
|
|
PlusMinus => 177, |
|
178
|
|
|
|
|
|
|
plusmn => 177, |
|
179
|
|
|
|
|
|
|
# ² верхний индекс «2» ² 3.2 U+00B2 ² |
|
180
|
|
|
|
|
|
|
sup2 => 178, |
|
181
|
|
|
|
|
|
|
# ³ верхний индекс «3» ³ 3.2 U+00B3 ³ |
|
182
|
|
|
|
|
|
|
sup3 => 179, |
|
183
|
|
|
|
|
|
|
# ´ занимающий позицию акут ´ 5.0 U+00B4 ´ ´ 3.2 |
|
184
|
|
|
|
|
|
|
DiacriticalAcute => 180, |
|
185
|
|
|
|
|
|
|
acute => 180, |
|
186
|
|
|
|
|
|
|
# µ дольный префикс микро микрон — устаревшее обозначение микрометра µ 3.2 U+00B5 µ |
|
187
|
|
|
|
|
|
|
micro => 181, |
|
188
|
|
|
|
|
|
|
# ¶ знак абзаца ¶ 3.2 U+00B6 ¶ |
|
189
|
|
|
|
|
|
|
para => 182, |
|
190
|
|
|
|
|
|
|
# · интерпункт · 5.0 U+00B7 · · 5.0 · 3.2 |
|
191
|
|
|
|
|
|
|
middot => 183, |
|
192
|
|
|
|
|
|
|
CenterDot => 183, |
|
193
|
|
|
|
|
|
|
centerdot => 183, |
|
194
|
|
|
|
|
|
|
# ¸ занимающая позицию седиль ¸ 5.0 U+00B8 ¸ ¸ 3.2 |
|
195
|
|
|
|
|
|
|
Cedilla => 184, |
|
196
|
|
|
|
|
|
|
cedil => 184, |
|
197
|
|
|
|
|
|
|
# ¹ верхний индекс «1» ¹ 3.2 U+00B9 ¹ |
|
198
|
|
|
|
|
|
|
sup1 => 185, |
|
199
|
|
|
|
|
|
|
# º порядковый индикатор (мужской род) º 3.2 U+00BA º |
|
200
|
|
|
|
|
|
|
ordm => 186, |
|
201
|
|
|
|
|
|
|
# » направленная вправо двойная угловая кавычка » 3.2 U+00BB » |
|
202
|
|
|
|
|
|
|
raquo => 187, |
|
203
|
|
|
|
|
|
|
# ¼ простая дробь «одна четвёртая» ¼ 3.2 U+00BC ¼ |
|
204
|
|
|
|
|
|
|
frac14 => 188, |
|
205
|
|
|
|
|
|
|
# ½ простая дробь «одна вторая» ½ 5.0 U+00BD ½ ½ 3.2 |
|
206
|
|
|
|
|
|
|
half => 189, |
|
207
|
|
|
|
|
|
|
frac12 => 189, |
|
208
|
|
|
|
|
|
|
# ¾ простая дробь «три четверти» ¾ 3.2 U+00BE ¾ |
|
209
|
|
|
|
|
|
|
frac34 => 190, |
|
210
|
|
|
|
|
|
|
# ¿ перевёрнутый знак вопроса ¿ 3.2 U+00BF ¿ |
|
211
|
|
|
|
|
|
|
iquest => 191, |
|
212
|
|
|
|
|
|
|
# À латинская заглавная A с грависом («тупым ударением») À 2.0 U+00C0 À |
|
213
|
|
|
|
|
|
|
Agrave => 192, |
|
214
|
|
|
|
|
|
|
# Á латинская заглавная A с акутом («острым ударением») Á 2.0 U+00C1 Á |
|
215
|
|
|
|
|
|
|
Aacute => 193, |
|
216
|
|
|
|
|
|
|
# Â латинская заглавная A с циркумфлексом Â 2.0 U+00C2 Â |
|
217
|
|
|
|
|
|
|
Acirc => 194, |
|
218
|
|
|
|
|
|
|
# Ã латинская заглавная A с тильдой Ã 2.0 U+00C3 Ã |
|
219
|
|
|
|
|
|
|
Atilde => 195, |
|
220
|
|
|
|
|
|
|
# Ä латинская заглавная A с тремой Ä 2.0 U+00C4 Ä |
|
221
|
|
|
|
|
|
|
Auml => 196, |
|
222
|
|
|
|
|
|
|
# Å латинская заглавная A с кружком сверху Å 2.0 U+00C5 Å |
|
223
|
|
|
|
|
|
|
Aring => 197, |
|
224
|
|
|
|
|
|
|
# Æ латинская заглавная лигатура AE Æ 2.0 U+00C6 Æ |
|
225
|
|
|
|
|
|
|
AElig => 198, |
|
226
|
|
|
|
|
|
|
# Ç латинская заглавная C с седилью Ç 2.0 U+00C7 Ç |
|
227
|
|
|
|
|
|
|
Ccedil => 199, |
|
228
|
|
|
|
|
|
|
# È латинская заглавная E с грависом È 2.0 U+00C8 È |
|
229
|
|
|
|
|
|
|
Egrave => 200, |
|
230
|
|
|
|
|
|
|
# É латинская заглавная E с акутом É 2.0 U+00C9 É |
|
231
|
|
|
|
|
|
|
Eacute => 201, |
|
232
|
|
|
|
|
|
|
# Ê латинская заглавная E с циркумфлексом Ê 2.0 U+00CA Ê |
|
233
|
|
|
|
|
|
|
Ecirc => 202, |
|
234
|
|
|
|
|
|
|
# Ë латинская заглавная E с тремой Ë 2.0 U+00CB Ë |
|
235
|
|
|
|
|
|
|
Euml => 203, |
|
236
|
|
|
|
|
|
|
# Ì латинская заглавная I с грависом Ì 2.0 U+00CC Ì |
|
237
|
|
|
|
|
|
|
Igrave => 204, |
|
238
|
|
|
|
|
|
|
# Í латинская заглавная I с акутом Í 2.0 U+00CD Í |
|
239
|
|
|
|
|
|
|
Iacute => 205, |
|
240
|
|
|
|
|
|
|
# Î латинская заглавная I с циркумфлексом Î 2.0 U+00CE Î |
|
241
|
|
|
|
|
|
|
Icirc => 206, |
|
242
|
|
|
|
|
|
|
# Ï латинская заглавная I с тремой Ï 2.0 U+00CF Ï |
|
243
|
|
|
|
|
|
|
Iuml => 207, |
|
244
|
|
|
|
|
|
|
# Ð латинская заглавная буква «eth» Ð 2.0 U+00D0 Ð |
|
245
|
|
|
|
|
|
|
ETH => 208, |
|
246
|
|
|
|
|
|
|
# Ñ латинская заглавная N с тильдой Ñ 2.0 U+00D1 Ñ |
|
247
|
|
|
|
|
|
|
Ntilde => 209, |
|
248
|
|
|
|
|
|
|
# Ò латинская заглавная O с грависом Ò 2.0 U+00D2 Ò |
|
249
|
|
|
|
|
|
|
Ograve => 210, |
|
250
|
|
|
|
|
|
|
# Ó латинская заглавная O с акутом Ó 2.0 U+00D3 Ó |
|
251
|
|
|
|
|
|
|
Oacute => 211, |
|
252
|
|
|
|
|
|
|
# Ô латинская заглавная O с циркумфлексом Ô 2.0 U+00D4 Ô |
|
253
|
|
|
|
|
|
|
Ocirc => 212, |
|
254
|
|
|
|
|
|
|
# Õ латинская заглавная O с тильдой Õ 2.0 U+00D5 Õ |
|
255
|
|
|
|
|
|
|
Otilde => 213, |
|
256
|
|
|
|
|
|
|
# Ö латинская заглавная O с тремой Ö 2.0 U+00D6 Ö |
|
257
|
|
|
|
|
|
|
Ouml => 214, |
|
258
|
|
|
|
|
|
|
# × знак умножения × 3.2 U+00D7 × |
|
259
|
|
|
|
|
|
|
times => 215, |
|
260
|
|
|
|
|
|
|
# Ø латинская заглавная O диагонально перечёркнутая Ø 2.0 U+00D8 Ø |
|
261
|
|
|
|
|
|
|
Oslash => 216, |
|
262
|
|
|
|
|
|
|
# Ù латинская заглавная U с грависом Ù 2.0 U+00D9 Ù |
|
263
|
|
|
|
|
|
|
Ugrave => 217, |
|
264
|
|
|
|
|
|
|
# Ú латинская заглавная U с акутом Ú 2.0 U+00DA Ú |
|
265
|
|
|
|
|
|
|
Uacute => 218, |
|
266
|
|
|
|
|
|
|
# Û латинская заглавная U с циркумфлексом Û 2.0 U+00DB Û |
|
267
|
|
|
|
|
|
|
Ucirc => 219, |
|
268
|
|
|
|
|
|
|
# Ü латинская заглавная U с тремой Ü 2.0 U+00DC Ü |
|
269
|
|
|
|
|
|
|
Uuml => 220, |
|
270
|
|
|
|
|
|
|
# Ý латинская заглавная Y с акутом Ý 2.0 U+00DD Ý |
|
271
|
|
|
|
|
|
|
Yacute => 221, |
|
272
|
|
|
|
|
|
|
# Þ латинская заглавная буква Торн (THORN) Þ 2.0 U+00DE Þ |
|
273
|
|
|
|
|
|
|
THORN => 222, |
|
274
|
|
|
|
|
|
|
# ß латинская строчная эсцет ß 2.0 U+00DF ß |
|
275
|
|
|
|
|
|
|
szlig => 223, |
|
276
|
|
|
|
|
|
|
# à латинская строчная «a» с грависом à 2.0 U+00E0 à |
|
277
|
|
|
|
|
|
|
agrave => 224, |
|
278
|
|
|
|
|
|
|
# á латинская строчная «a» с акутом á 2.0 U+00E1 á |
|
279
|
|
|
|
|
|
|
aacute => 225, |
|
280
|
|
|
|
|
|
|
# â латинская строчная «a» с циркумфлексом â 2.0 U+00E2 â |
|
281
|
|
|
|
|
|
|
acirc => 226, |
|
282
|
|
|
|
|
|
|
# ã латинская строчная «a» с тильдой ã 2.0 U+00E3 ã |
|
283
|
|
|
|
|
|
|
atilde => 227, |
|
284
|
|
|
|
|
|
|
# ä латинская строчная «a» с тремой ä 2.0 U+00E4 ä |
|
285
|
|
|
|
|
|
|
auml => 228, |
|
286
|
|
|
|
|
|
|
# å латинская строчная «a» с кружком сверху å 2.0 U+00E5 å |
|
287
|
|
|
|
|
|
|
aring => 229, |
|
288
|
|
|
|
|
|
|
# æ латинская строчная лигатура «ae» æ 2.0 U+00E6 æ |
|
289
|
|
|
|
|
|
|
aelig => 230, |
|
290
|
|
|
|
|
|
|
# ç латинская строчная «c» с седилью ç 2.0 U+00E7 ç |
|
291
|
|
|
|
|
|
|
ccedil => 231, |
|
292
|
|
|
|
|
|
|
# è латинская строчная «e» с грависом è 2.0 U+00E8 è |
|
293
|
|
|
|
|
|
|
egrave => 232, |
|
294
|
|
|
|
|
|
|
# é латинская строчная «e» с акутом é 2.0 U+00E9 é |
|
295
|
|
|
|
|
|
|
eacute => 233, |
|
296
|
|
|
|
|
|
|
# ê латинская строчная «e» с циркумфлексом ê 2.0 U+00EA ê |
|
297
|
|
|
|
|
|
|
ecirc => 234, |
|
298
|
|
|
|
|
|
|
# ë латинская строчная «e» с тремой ë 2.0 U+00EB ë |
|
299
|
|
|
|
|
|
|
euml => 235, |
|
300
|
|
|
|
|
|
|
# ì латинская строчная «i» с грависом ì 2.0 U+00EC ì |
|
301
|
|
|
|
|
|
|
igrave => 236, |
|
302
|
|
|
|
|
|
|
# í латинская строчная «i» с акутом í 2.0 U+00ED í |
|
303
|
|
|
|
|
|
|
iacute => 237, |
|
304
|
|
|
|
|
|
|
# î латинская строчная «i» с циркумфлексом î 2.0 U+00EE î |
|
305
|
|
|
|
|
|
|
icirc => 238, |
|
306
|
|
|
|
|
|
|
# ï латинская строчная «i» с тремой ï 2.0 U+00EF ï |
|
307
|
|
|
|
|
|
|
iuml => 239, |
|
308
|
|
|
|
|
|
|
# ð латинская строчная «eth» ð 2.0 U+00F0 ð |
|
309
|
|
|
|
|
|
|
eth => 240, |
|
310
|
|
|
|
|
|
|
# ñ латинская строчная «n» с тильдой ñ 2.0 U+00F1 ñ |
|
311
|
|
|
|
|
|
|
ntilde => 241, |
|
312
|
|
|
|
|
|
|
# ò латинская строчная «o» с грависом ò 2.0 U+00F2 ò |
|
313
|
|
|
|
|
|
|
ograve => 242, |
|
314
|
|
|
|
|
|
|
# ó латинская строчная «o» с акутом ó 2.0 U+00F3 ó |
|
315
|
|
|
|
|
|
|
oacute => 243, |
|
316
|
|
|
|
|
|
|
# ô латинская строчная «o» с циркумфлексом ô 2.0 U+00F4 ô |
|
317
|
|
|
|
|
|
|
ocirc => 244, |
|
318
|
|
|
|
|
|
|
# õ латинская строчная «o» с тильдой õ 2.0 U+00F5 õ |
|
319
|
|
|
|
|
|
|
otilde => 245, |
|
320
|
|
|
|
|
|
|
# ö латинская строчная «o» с тремой ö 2.0 U+00F6 ö |
|
321
|
|
|
|
|
|
|
ouml => 246, |
|
322
|
|
|
|
|
|
|
# ÷ знак деления ÷ 5.0 (?) U+00F7 ÷ ÷ 3.2 |
|
323
|
|
|
|
|
|
|
div => 247, |
|
324
|
|
|
|
|
|
|
divide => 247, |
|
325
|
|
|
|
|
|
|
# ø латинская строчная «o» диагонально перечёркнутая ø 2.0 U+00F8 ø |
|
326
|
|
|
|
|
|
|
oslash => 248, |
|
327
|
|
|
|
|
|
|
# ù латинская строчная «u» с грависом ù 2.0 U+00F9 ù |
|
328
|
|
|
|
|
|
|
ugrave => 249, |
|
329
|
|
|
|
|
|
|
# ú латинская строчная «u» с акутом ú 2.0 U+00FA ú |
|
330
|
|
|
|
|
|
|
uacute => 250, |
|
331
|
|
|
|
|
|
|
# û латинская строчная «u» с циркумфлексом û 2.0 U+00FB û |
|
332
|
|
|
|
|
|
|
ucirc => 251, |
|
333
|
|
|
|
|
|
|
# ü латинская строчная «u» с тремой ü 2.0 U+00FC ü |
|
334
|
|
|
|
|
|
|
uuml => 252, |
|
335
|
|
|
|
|
|
|
# ý латинская строчная «y» с акутом ý 2.0 U+00FD ý |
|
336
|
|
|
|
|
|
|
yacute => 253, |
|
337
|
|
|
|
|
|
|
# þ латинская строчная «торн» (thorn) þ 2.0 U+00FE þ |
|
338
|
|
|
|
|
|
|
thorn => 254, |
|
339
|
|
|
|
|
|
|
# ÿ латинская строчная «y» с тремой ÿ 2.0 U+00FF ÿ |
|
340
|
|
|
|
|
|
|
yuml => 255, |
|
341
|
|
|
|
|
|
|
# |
|
342
|
|
|
|
|
|
|
# |
|
343
|
|
|
|
|
|
|
# Расширение латиницы — A |
|
344
|
|
|
|
|
|
|
# U+0100—U+017F |
|
345
|
|
|
|
|
|
|
# Символ Назначение Мнемоника HTML Код |
|
346
|
|
|
|
|
|
|
# |
|
347
|
|
|
|
|
|
|
# Ā латинская заглавная «A» с макроном Ā 5.0 U+0100 Ā |
|
348
|
|
|
|
|
|
|
Amacr => 256, |
|
349
|
|
|
|
|
|
|
# ā латинская строчная «a» с макроном ā 5.0 U+0101 ā |
|
350
|
|
|
|
|
|
|
amacr => 257, |
|
351
|
|
|
|
|
|
|
# Ă латинская заглавная «A» с бреве Ă 5.0 U+0102 Ă |
|
352
|
|
|
|
|
|
|
Abreve => 258, |
|
353
|
|
|
|
|
|
|
# ă латинская строчная «a» с бреве ă 5.0 U+0103 ă |
|
354
|
|
|
|
|
|
|
abreve => 259, |
|
355
|
|
|
|
|
|
|
# Ą латинская заглавная «A» с огонэком Ą 5.0 U+0104 Ą |
|
356
|
|
|
|
|
|
|
Aogon => 260, |
|
357
|
|
|
|
|
|
|
# ą латинская строчная «a» с огонэком ą 5.0 U+0105 ą |
|
358
|
|
|
|
|
|
|
aogon => 261, |
|
359
|
|
|
|
|
|
|
# Ć латинская заглавная «C» с акутом Ć 5.0 U+0106 Ć |
|
360
|
|
|
|
|
|
|
Cacute => 262, |
|
361
|
|
|
|
|
|
|
# ć латинская строчная «c» с акутом ć 5.0 U+0107 ć |
|
362
|
|
|
|
|
|
|
cacute => 263, |
|
363
|
|
|
|
|
|
|
# Ĉ латинская заглавная «C» с циркумфлексом Ĉ 5.0 U+0108 Ĉ |
|
364
|
|
|
|
|
|
|
Ccirc => 264, |
|
365
|
|
|
|
|
|
|
# ĉ латинская строчная «c» с циркумфлексом ĉ 5.0 U+0109 ĉ |
|
366
|
|
|
|
|
|
|
ccirc => 265, |
|
367
|
|
|
|
|
|
|
# Ċ латинская заглавная «C» с точкой сверху Ċ 5.0 U+010A Ċ |
|
368
|
|
|
|
|
|
|
Cdot => 266, |
|
369
|
|
|
|
|
|
|
# ċ латинская строчная «c» с точкой сверху ċ 5.0 U+010B ċ |
|
370
|
|
|
|
|
|
|
cdot => 267, |
|
371
|
|
|
|
|
|
|
# Č латинская заглавная «C» с птичкой Č 5.0 U+010C Č |
|
372
|
|
|
|
|
|
|
Ccaron => 268, |
|
373
|
|
|
|
|
|
|
# č латинская строчная «c» с птичкой č 5.0 U+010D č |
|
374
|
|
|
|
|
|
|
ccaron => 269, |
|
375
|
|
|
|
|
|
|
# Ď латинская заглавная «D» с птичкой Ď 5.0 U+010E Ď |
|
376
|
|
|
|
|
|
|
Dcaron => 270, |
|
377
|
|
|
|
|
|
|
# ď латинская строчная «d» с птичкой (в шрифтах предпочтителен вариант с апострофом) ď 5.0 U+010F ď |
|
378
|
|
|
|
|
|
|
dcaron => 271, |
|
379
|
|
|
|
|
|
|
# Đ латинская заглавная «D» с горизонтальным штрихом. На вид может не отличаться от Eth (Ð, U+00D0, Ð) Đ 5.0 U+0110 Đ |
|
380
|
|
|
|
|
|
|
Dstrok => 272, |
|
381
|
|
|
|
|
|
|
ETH => 272, |
|
382
|
|
|
|
|
|
|
# đ латинская строчная «d» с горизонтальным штрихом. На вид может не отличаться от eth (ð, U+00F0, ð) đ 5.0 U+0111 đ |
|
383
|
|
|
|
|
|
|
dstrok => 273, |
|
384
|
|
|
|
|
|
|
eth => 273, |
|
385
|
|
|
|
|
|
|
# Ē латинская заглавная «E» с макроном Ē 5.0 U+0112 Ē |
|
386
|
|
|
|
|
|
|
Emacr => 274, |
|
387
|
|
|
|
|
|
|
# ē латинская строчная «e» с макроном ē 5.0 U+0113 ē |
|
388
|
|
|
|
|
|
|
emacr => 275, |
|
389
|
|
|
|
|
|
|
# Ĕ латинская заглавная «E» с бреве U+0114 Ĕ |
|
390
|
|
|
|
|
|
|
# ĕ латинская строчная «e» с бреве U+0115 ĕ |
|
391
|
|
|
|
|
|
|
# Ė латинская заглавная «E» с точкой сверху Ė 5.0 U+0116 Ė |
|
392
|
|
|
|
|
|
|
Edot => 278, |
|
393
|
|
|
|
|
|
|
# ė латинская строчная «e» с точкой сверху ė 5.0 U+0117 ė |
|
394
|
|
|
|
|
|
|
edot => 279, |
|
395
|
|
|
|
|
|
|
# Ę латинская заглавная «E» с огонэком Ę 5.0 U+0118 Ę |
|
396
|
|
|
|
|
|
|
Eogon => 280, |
|
397
|
|
|
|
|
|
|
# ę латинская строчная «e» с огонэком ę 5.0 U+0119 ę |
|
398
|
|
|
|
|
|
|
eogon => 281, |
|
399
|
|
|
|
|
|
|
# Ě латинская заглавная «E» с птичкой Ě 5.0 U+011A Ě |
|
400
|
|
|
|
|
|
|
Ecaron => 282, |
|
401
|
|
|
|
|
|
|
# ě латинская строчная «e» с птичкой ě 5.0 U+011B ě |
|
402
|
|
|
|
|
|
|
ecaron => 283, |
|
403
|
|
|
|
|
|
|
# Ĝ латинская заглавная «G» с циркумфлексом Ĝ 5.0 U+011C Ĝ |
|
404
|
|
|
|
|
|
|
Gcirc => 284, |
|
405
|
|
|
|
|
|
|
# ĝ латинская строчная «g» с циркумфлексом ĝ 5.0 U+011D ĝ |
|
406
|
|
|
|
|
|
|
gcirc => 285, |
|
407
|
|
|
|
|
|
|
# Ğ латинская заглавная «G» с бреве Ğ 5.0 U+011E Ğ |
|
408
|
|
|
|
|
|
|
Gbreve => 286, |
|
409
|
|
|
|
|
|
|
# ğ латинская строчная «g» с бреве ğ 5.0 U+011F ğ |
|
410
|
|
|
|
|
|
|
gbreve => 287, |
|
411
|
|
|
|
|
|
|
# Ġ латинская заглавная «G» с точкой сверху Ġ 5.0 U+0120 Ġ |
|
412
|
|
|
|
|
|
|
Gdot => 288, |
|
413
|
|
|
|
|
|
|
# ġ латинская строчная «g» с точкой сверху ġ 5.0 U+0121 ġ |
|
414
|
|
|
|
|
|
|
gdot => 289, |
|
415
|
|
|
|
|
|
|
# Ģ латинская заглавная «G» с цедилью Ģ 5.0 U+0122 Ģ |
|
416
|
|
|
|
|
|
|
Gcedil => 290, |
|
417
|
|
|
|
|
|
|
# ģ латинская строчная «g» с цедилью U+0123 ģ |
|
418
|
|
|
|
|
|
|
# Ĥ латинская заглавная «H» с циркумфлексом Ĥ 5.0 U+0124 Ĥ |
|
419
|
|
|
|
|
|
|
Hcirc => 292, |
|
420
|
|
|
|
|
|
|
# ĥ латинская строчная «h» с циркумфлексом ĥ 5.0 U+0125 ĥ |
|
421
|
|
|
|
|
|
|
hcirc => 293, |
|
422
|
|
|
|
|
|
|
# Ħ латинская заглавная «H» с горизонтальным штрихом Ħ 5.0 U+0126 Ħ |
|
423
|
|
|
|
|
|
|
Hstrok => 294, |
|
424
|
|
|
|
|
|
|
# ħ латинская строчная «h» с горизонтальным штрихом ħ 5.0 U+0127 ħ |
|
425
|
|
|
|
|
|
|
hstrok => 295, |
|
426
|
|
|
|
|
|
|
# Ĩ латинская заглавная «I» с тильдой Ĩ 5.0 U+0128 Ĩ |
|
427
|
|
|
|
|
|
|
Itilde => 296, |
|
428
|
|
|
|
|
|
|
# ĩ латинская строчная «i» с тильдой ĩ 5.0 U+0129 ĩ |
|
429
|
|
|
|
|
|
|
itilde => 297, |
|
430
|
|
|
|
|
|
|
# Ī латинская заглавная «I» с макроном Ī 5.0 U+012A Ī |
|
431
|
|
|
|
|
|
|
Imacr => 298, |
|
432
|
|
|
|
|
|
|
# ī латинская строчная «i» с макроном ī 5.0 U+012B ī |
|
433
|
|
|
|
|
|
|
imacr => 299, |
|
434
|
|
|
|
|
|
|
# Ĭ латинская заглавная «I» с бреве U+012C Ĭ |
|
435
|
|
|
|
|
|
|
# ĭ латинская строчная «i» с бреве U+012D ĭ |
|
436
|
|
|
|
|
|
|
# Į латинская заглавная «I» с огонэком Į 5.0 U+012E Į |
|
437
|
|
|
|
|
|
|
Iogon => 302, |
|
438
|
|
|
|
|
|
|
# į латинская строчная «i» с огонэком į 5.0 U+012F į |
|
439
|
|
|
|
|
|
|
iogon => 303, |
|
440
|
|
|
|
|
|
|
# İ латинская заглавная «I» с точкой сверху İ 5.0 U+0130 İ |
|
441
|
|
|
|
|
|
|
Idot => 304, |
|
442
|
|
|
|
|
|
|
# ı латинская строчная «i» без точки сверху ı 5.0 U+0131 ı ı |
|
443
|
|
|
|
|
|
|
imath => 305, |
|
444
|
|
|
|
|
|
|
inodot => 305, |
|
445
|
|
|
|
|
|
|
# IJ латинская заглавная лигатура «IJ» IJ 5.0 U+0132 IJ |
|
446
|
|
|
|
|
|
|
IJlig => 306, |
|
447
|
|
|
|
|
|
|
# ij латинская строчная лигатура «ij» ij 5.0 U+0133 ij |
|
448
|
|
|
|
|
|
|
ijlig => 307, |
|
449
|
|
|
|
|
|
|
# Ĵ латинская заглавная «J» с циркумфлексом Ĵ 5.0 U+0134 Ĵ |
|
450
|
|
|
|
|
|
|
Jcirc => 308, |
|
451
|
|
|
|
|
|
|
# ĵ латинская строчная «j» с циркумфлексом ĵ 5.0 U+0135 ĵ |
|
452
|
|
|
|
|
|
|
jcirc => 309, |
|
453
|
|
|
|
|
|
|
# Ķ латинская заглавная «K» с цедилью Ķ 5.0 U+0136 Ķ |
|
454
|
|
|
|
|
|
|
Kcedil => 310, |
|
455
|
|
|
|
|
|
|
# ķ латинская строчная «k» с цедилью ķ 5.0 U+0137 ķ |
|
456
|
|
|
|
|
|
|
kcedil => 311, |
|
457
|
|
|
|
|
|
|
# ĸ латинская строчная «kra» (гренландское «к») ĸ 5.0 U+0138 ĸ |
|
458
|
|
|
|
|
|
|
kgreen => 312, |
|
459
|
|
|
|
|
|
|
# Ĺ латинская заглавная «L» с акутом Ĺ 5.0 U+0139 Ĺ |
|
460
|
|
|
|
|
|
|
Lacute => 313, |
|
461
|
|
|
|
|
|
|
# ĺ латинская строчная «l» с акутом ĺ 5.0 U+013A ĺ |
|
462
|
|
|
|
|
|
|
lacute => 314, |
|
463
|
|
|
|
|
|
|
# Ļ латинская заглавная «L» с цедилью Ļ 5.0 U+013B Ļ |
|
464
|
|
|
|
|
|
|
Lcedil => 315, |
|
465
|
|
|
|
|
|
|
# ļ латинская строчная «l» с цедилью ļ 5.0 U+013C ļ |
|
466
|
|
|
|
|
|
|
lcedil => 316, |
|
467
|
|
|
|
|
|
|
# Ľ латинская заглавная «L» с птичкой (в шрифтах предпочтителен вариант с апострофом) Ľ 5.0 U+013D Ľ |
|
468
|
|
|
|
|
|
|
Lcaron => 317, |
|
469
|
|
|
|
|
|
|
# ľ латинская строчная «l» с птичкой (в шрифтах предпочтителен вариант с апострофом) ľ 5.0 U+013E ľ |
|
470
|
|
|
|
|
|
|
lcaron => 318, |
|
471
|
|
|
|
|
|
|
# Ŀ латинская заглавная «L» с точкой посередине Ŀ 5.0 U+013F Ŀ |
|
472
|
|
|
|
|
|
|
Lmidot => 319, |
|
473
|
|
|
|
|
|
|
# ŀ латинская строчная «l» с точкой посередине ŀ 5.0 U+0140 ŀ |
|
474
|
|
|
|
|
|
|
lmidot => 320, |
|
475
|
|
|
|
|
|
|
# Ł латинская заглавная «L» с горизонтальным штрихом Ł 5.0 U+0141 Ł |
|
476
|
|
|
|
|
|
|
Lstrok => 321, |
|
477
|
|
|
|
|
|
|
# ł латинская строчная «l» с горизонтальным штрихом ł 5.0 U+0142 ł |
|
478
|
|
|
|
|
|
|
lstrok => 322, |
|
479
|
|
|
|
|
|
|
# Ń латинская заглавная «N» с акутом Ń 5.0 U+0143 Ń |
|
480
|
|
|
|
|
|
|
Nacute => 323, |
|
481
|
|
|
|
|
|
|
# ń латинская строчная «n» с акутом ń 5.0 U+0144 ń |
|
482
|
|
|
|
|
|
|
nacute => 324, |
|
483
|
|
|
|
|
|
|
# Ņ латинская заглавная «N» с цедилью Ņ 5.0 U+0145 Ņ |
|
484
|
|
|
|
|
|
|
Ncedil => 325, |
|
485
|
|
|
|
|
|
|
# ņ латинская строчная «n» с цедилью ņ 5.0 U+0146 ņ |
|
486
|
|
|
|
|
|
|
ncedil => 326, |
|
487
|
|
|
|
|
|
|
# Ň латинская заглавная «N» с птичкой Ň 5.0 U+0147 Ň |
|
488
|
|
|
|
|
|
|
Ncaron => 327, |
|
489
|
|
|
|
|
|
|
# ň латинская строчная «n» с птичкой ň 5.0 U+0148 ň |
|
490
|
|
|
|
|
|
|
ncaron => 328, |
|
491
|
|
|
|
|
|
|
# ʼn латинская строчная «n» предшествуемая апострофом ʼn 5.0 U+0149 ʼn |
|
492
|
|
|
|
|
|
|
napos => 329, |
|
493
|
|
|
|
|
|
|
# Ŋ латинская заглавная «ENG» Ŋ 5.0 U+014A Ŋ |
|
494
|
|
|
|
|
|
|
ENG => 330, |
|
495
|
|
|
|
|
|
|
# ŋ латинская строчная «eng» ŋ 5.0 U+014B ŋ |
|
496
|
|
|
|
|
|
|
eng => 331, |
|
497
|
|
|
|
|
|
|
# Ō латинская заглавная «O» с макроном Ō 5.0 U+014C Ō |
|
498
|
|
|
|
|
|
|
Omacr => 332, |
|
499
|
|
|
|
|
|
|
# ō латинская строчная «o» с макроном ō 5.0 U+014D ō |
|
500
|
|
|
|
|
|
|
omacr => 333, |
|
501
|
|
|
|
|
|
|
# Ŏ латинская заглавная «O» с бреве U+014E Ŏ |
|
502
|
|
|
|
|
|
|
# ŏ латинская строчная «o» с бреве U+014F ŏ |
|
503
|
|
|
|
|
|
|
# Ő латинская заглавная «O» с двойным акутом Ő 5.0 U+0150 Ő |
|
504
|
|
|
|
|
|
|
Odblac => 336, |
|
505
|
|
|
|
|
|
|
# ő латинская строчная «o» с двойным акутом ő 5.0 U+0151 ő |
|
506
|
|
|
|
|
|
|
odblac => 337, |
|
507
|
|
|
|
|
|
|
# Œ латинская заглавная лигатура «OE» Œ 4.0 U+0152 Œ |
|
508
|
|
|
|
|
|
|
OElig => 338, |
|
509
|
|
|
|
|
|
|
# œ латинская строчная лигатура «oe» œ 4.0 U+0153 œ |
|
510
|
|
|
|
|
|
|
oelig => 339, |
|
511
|
|
|
|
|
|
|
# Ŕ латинская заглавная «R» с акутом Ŕ 5.0 U+0154 Ŕ |
|
512
|
|
|
|
|
|
|
Racute => 340, |
|
513
|
|
|
|
|
|
|
# ŕ латинская строчная «r» с акутом ŕ 5.0 U+0155 ŕ |
|
514
|
|
|
|
|
|
|
racute => 341, |
|
515
|
|
|
|
|
|
|
# Ŗ латинская заглавная «R» с цедилью Ŗ 5.0 U+0156 Ŗ |
|
516
|
|
|
|
|
|
|
Rcedil => 342, |
|
517
|
|
|
|
|
|
|
# ŗ латинская строчная «r» с цедилью ŗ 5.0 U+0157 ŗ |
|
518
|
|
|
|
|
|
|
rcedil => 343, |
|
519
|
|
|
|
|
|
|
# Ř латинская заглавная «R» с птичкой Ř 5.0 U+0158 Ř |
|
520
|
|
|
|
|
|
|
Rcaron => 344, |
|
521
|
|
|
|
|
|
|
# ř латинская строчная «r» с птичкой ř 5.0 U+0159 ř |
|
522
|
|
|
|
|
|
|
rcaron => 345, |
|
523
|
|
|
|
|
|
|
# Ś латинская заглавная «S» с акутом Ś 5.0 U+015A Ś |
|
524
|
|
|
|
|
|
|
Sacute => 346, |
|
525
|
|
|
|
|
|
|
# ś латинская строчная «s» с акутом ś 5.0 U+015B ś |
|
526
|
|
|
|
|
|
|
sacute => 347, |
|
527
|
|
|
|
|
|
|
# Ŝ латинская заглавная «S» с циркумфлексом Ŝ 5.0 U+015C Ŝ |
|
528
|
|
|
|
|
|
|
Scirc => 348, |
|
529
|
|
|
|
|
|
|
# ŝ латинская строчная «s» с циркумфлексом ŝ 5.0 U+015D ŝ |
|
530
|
|
|
|
|
|
|
scirc => 349, |
|
531
|
|
|
|
|
|
|
# Ş латинская заглавная «S» с цедилью Ş 5.0 U+015E Ş |
|
532
|
|
|
|
|
|
|
Scedil => 350, |
|
533
|
|
|
|
|
|
|
# ş латинская строчная «s» с цедилью ş 5.0 U+015F ş |
|
534
|
|
|
|
|
|
|
scedil => 351, |
|
535
|
|
|
|
|
|
|
# Š латинская заглавная «S» с птичкой Š 4.0 U+0160 Š |
|
536
|
|
|
|
|
|
|
Scaron => 352, |
|
537
|
|
|
|
|
|
|
# š латинская строчная «s» с птичкой š 4.0 U+0161 š |
|
538
|
|
|
|
|
|
|
scaron => 353, |
|
539
|
|
|
|
|
|
|
# Ţ латинская заглавная «T» с цедилью Ţ 5.0 U+0162 Ţ |
|
540
|
|
|
|
|
|
|
Tcedil => 354, |
|
541
|
|
|
|
|
|
|
# ţ латинская строчная «t» с цедилью ţ 5.0 U+0163 ţ |
|
542
|
|
|
|
|
|
|
tcedil => 355, |
|
543
|
|
|
|
|
|
|
# Ť латинская заглавная «T» с птичкой Ť 5.0 U+0164 Ť |
|
544
|
|
|
|
|
|
|
Tcaron => 356, |
|
545
|
|
|
|
|
|
|
# ť латинская строчная «t» с птичкой (в шрифтах предпочтителен вариант с апострофом) ť 5.0 U+0165 ť |
|
546
|
|
|
|
|
|
|
tcaron => 357, |
|
547
|
|
|
|
|
|
|
# Ŧ латинская заглавная «T» с горизонтальным штрихом Ŧ 5.0 U+0166 Ŧ |
|
548
|
|
|
|
|
|
|
Tstrok => 358, |
|
549
|
|
|
|
|
|
|
# ŧ латинская строчная «t» с горизонтальным штрихом ŧ 5.0 U+0167 ŧ |
|
550
|
|
|
|
|
|
|
tstrok => 359, |
|
551
|
|
|
|
|
|
|
# Ũ латинская заглавная «U» с тильдой Ũ 5.0 U+0168 Ũ |
|
552
|
|
|
|
|
|
|
Utilde => 360, |
|
553
|
|
|
|
|
|
|
# ũ латинская строчная «u» с тильдой ũ 5.0 U+0169 ũ |
|
554
|
|
|
|
|
|
|
utilde => 361, |
|
555
|
|
|
|
|
|
|
# Ū латинская заглавная «U» с макроном Ū 5.0 U+016A Ū |
|
556
|
|
|
|
|
|
|
Umacr => 362, |
|
557
|
|
|
|
|
|
|
# ū латинская строчная «u» с макроном ū 5.0 U+016B ū |
|
558
|
|
|
|
|
|
|
umacr => 363, |
|
559
|
|
|
|
|
|
|
# Ŭ латинская заглавная «U» с бреве Ŭ 5.0 U+016C Ŭ |
|
560
|
|
|
|
|
|
|
Ubreve => 364, |
|
561
|
|
|
|
|
|
|
# ŭ латинская строчная «u» с бреве ŭ 5.0 U+016D ŭ |
|
562
|
|
|
|
|
|
|
ubreve => 365, |
|
563
|
|
|
|
|
|
|
# Ů латинская заглавная «U» с кольцом сверху Ů 5.0 U+016E Ů |
|
564
|
|
|
|
|
|
|
Uring => 366, |
|
565
|
|
|
|
|
|
|
# ů латинская строчная «u» с кольцом сверху ů 5.0 U+016F ů |
|
566
|
|
|
|
|
|
|
uring => 367, |
|
567
|
|
|
|
|
|
|
# Ű латинская заглавная «U» с двойным акутом Ű 5.0 U+0170 Ű |
|
568
|
|
|
|
|
|
|
Udblac => 368, |
|
569
|
|
|
|
|
|
|
# ű латинская строчная «u» с двойным акутом ű 5.0 U+0171 ű |
|
570
|
|
|
|
|
|
|
udblac => 369, |
|
571
|
|
|
|
|
|
|
# Ų латинская заглавная «U» с огонэком Ų 5.0 U+0172 Ų |
|
572
|
|
|
|
|
|
|
Uogon => 370, |
|
573
|
|
|
|
|
|
|
# ų латинская строчная «u» с огонэком ų 5.0 U+0173 ų |
|
574
|
|
|
|
|
|
|
uogon => 371, |
|
575
|
|
|
|
|
|
|
# Ŵ латинская заглавная «W» с циркумфлексом Ŵ 5.0 U+0174 Ŵ |
|
576
|
|
|
|
|
|
|
Wcirc => 372, |
|
577
|
|
|
|
|
|
|
# ŵ латинская строчная «w» с циркумфлексом ŵ 5.0 U+0175 ŵ |
|
578
|
|
|
|
|
|
|
wcirc => 373, |
|
579
|
|
|
|
|
|
|
# Ŷ латинская заглавная «Y» с циркумфлексом Ŷ 5.0 U+0176 Ŷ |
|
580
|
|
|
|
|
|
|
Ycirc => 374, |
|
581
|
|
|
|
|
|
|
# ŷ латинская строчная «y» с циркумфлексом ŷ 5.0 U+0177 ŷ |
|
582
|
|
|
|
|
|
|
ycirc => 375, |
|
583
|
|
|
|
|
|
|
# Ÿ латинская заглавная «Y» с тремой Ÿ 4.0 U+0178 Ÿ |
|
584
|
|
|
|
|
|
|
Yuml => 376, |
|
585
|
|
|
|
|
|
|
# Ź латинская заглавная «Z» с акутом Ź 5.0 U+0179 Ź |
|
586
|
|
|
|
|
|
|
Zacute => 377, |
|
587
|
|
|
|
|
|
|
# ź латинская строчная «z» с акутом ź 5.0 U+017A ź |
|
588
|
|
|
|
|
|
|
zacute => 378, |
|
589
|
|
|
|
|
|
|
# Ż латинская заглавная «Z» с точкой сверху Ż 5.0 U+017B Ż |
|
590
|
|
|
|
|
|
|
Zdot => 379, |
|
591
|
|
|
|
|
|
|
# ż латинская строчная «z» с точкой сверху ż 5.0 U+017C ż |
|
592
|
|
|
|
|
|
|
zdot => 380, |
|
593
|
|
|
|
|
|
|
# Ž латинская заглавная «Z» с птичкой Ž 5.0 U+017D Ž |
|
594
|
|
|
|
|
|
|
Zcaron => 381, |
|
595
|
|
|
|
|
|
|
# ž латинская строчная «z» с птичкой ž 5.0 U+017E ž |
|
596
|
|
|
|
|
|
|
zcaron => 382, |
|
597
|
|
|
|
|
|
|
# ſ латинская строчная «долгая s» U+017F ſ |
|
598
|
|
|
|
|
|
|
# |
|
599
|
|
|
|
|
|
|
# |
|
600
|
|
|
|
|
|
|
# Расширение латиницы — B |
|
601
|
|
|
|
|
|
|
# U+0180—U+024F |
|
602
|
|
|
|
|
|
|
# Символ Назначение Мнемоника HTML Код |
|
603
|
|
|
|
|
|
|
# |
|
604
|
|
|
|
|
|
|
# ƒ • латинская строчная f с хвостиком снизу (иногда называется рукописной f, на самом деле прямая или курсив) |
|
605
|
|
|
|
|
|
|
# • знак флорина |
|
606
|
|
|
|
|
|
|
# • символ функции |
|
607
|
|
|
|
|
|
|
# • это не регулярная курсивная латинская f (𝑓, U+1D453), хотя, в зависимости от шрифта, может выглядеть очень похоже ƒ 4.0 U+0192 ƒ |
|
608
|
|
|
|
|
|
|
fnof => 402, |
|
609
|
|
|
|
|
|
|
# Ƶ латинская заглавная «Z» с горизонтальным штрихом Ƶ 5.0 U+01B5 Ƶ |
|
610
|
|
|
|
|
|
|
imped => 437, |
|
611
|
|
|
|
|
|
|
# ǵ латинская строчная «g» с акутом ǵ 5.0 U+01F5 ǵ |
|
612
|
|
|
|
|
|
|
gacute => 501, |
|
613
|
|
|
|
|
|
|
# ȷ латинская строчная «j» без точки сверху ȷ 5.0 U+0237 ȷ |
|
614
|
|
|
|
|
|
|
jmath => 567, |
|
615
|
|
|
|
|
|
|
# |
|
616
|
|
|
|
|
|
|
# |
|
617
|
|
|
|
|
|
|
# Занимающие позицию модификаторы букв |
|
618
|
|
|
|
|
|
|
# U+02B0—U+02FF |
|
619
|
|
|
|
|
|
|
# Символ Назначение Мнемоника HTML Код |
|
620
|
|
|
|
|
|
|
# |
|
621
|
|
|
|
|
|
|
# ˆ занимающий позицию акцент перевёрнутая птичка/circumflex accent ˆ 4.0 U+02C6 ˆ |
|
622
|
|
|
|
|
|
|
circ => 710, |
|
623
|
|
|
|
|
|
|
# ˇ занимающий позицию акцент птичка (гачек) ˇ 5.0 U+02C7 ˇ ˇ |
|
624
|
|
|
|
|
|
|
caron => 711, |
|
625
|
|
|
|
|
|
|
Hacek => 711, |
|
626
|
|
|
|
|
|
|
# ˘ занимающий позицию бреве ˘ 5.0 U+02D8 ˘ ˘ |
|
627
|
|
|
|
|
|
|
Breve => 728, |
|
628
|
|
|
|
|
|
|
breve => 728, |
|
629
|
|
|
|
|
|
|
# ˙ занимающая позицию точка сверху ˙ 5.0 U+02D9 ˙ ˙ |
|
630
|
|
|
|
|
|
|
dot => 729, |
|
631
|
|
|
|
|
|
|
DiacriticalDot => 729, |
|
632
|
|
|
|
|
|
|
# ˚ занимающий позицию кружок сверху ˚ 5.0 U+02DA ˚ |
|
633
|
|
|
|
|
|
|
ring => 730, |
|
634
|
|
|
|
|
|
|
# ˛ занимающий позицию огонэк ˛ 5.0 U+02DB ˛ |
|
635
|
|
|
|
|
|
|
ogon => 731, |
|
636
|
|
|
|
|
|
|
# ˜ занимающая позицию малая тильда ˜ 5.0 U+02DC ˜ ˜ 4.0 |
|
637
|
|
|
|
|
|
|
DiacriticalTilde => 732, |
|
638
|
|
|
|
|
|
|
tilde => 732, |
|
639
|
|
|
|
|
|
|
# ˝ занимающий позицию двойной акут ˝ 5.0 U+02DD ˝ ˝ |
|
640
|
|
|
|
|
|
|
DiacriticalDoubleAcute => 733, |
|
641
|
|
|
|
|
|
|
dblac => 733, |
|
642
|
|
|
|
|
|
|
# |
|
643
|
|
|
|
|
|
|
# |
|
644
|
|
|
|
|
|
|
# Комбинируемые диакритические знаки |
|
645
|
|
|
|
|
|
|
# U+0300—U+036F |
|
646
|
|
|
|
|
|
|
# Символ Назначение Мнемоника HTML Код |
|
647
|
|
|
|
|
|
|
# |
|
648
|
|
|
|
|
|
|
# ́ комбинируемый знак ударения (аку́т — ставится непосредственно после буквы, над которой должен изображаться) U+0301 ́ |
|
649
|
|
|
|
|
|
|
# ̑ комбинируемый перевёрнутый бре́вис (ставится непосредственно после буквы, над которой должен изображаться) ̑ 5.0 U+0311 ̑ |
|
650
|
|
|
|
|
|
|
DownBreve => 785, |
|
651
|
|
|
|
|
|
|
# |
|
652
|
|
|
|
|
|
|
# |
|
653
|
|
|
|
|
|
|
# Греческие и коптские символы |
|
654
|
|
|
|
|
|
|
# U+0370 — U+03FF |
|
655
|
|
|
|
|
|
|
# Включает Греческий алфавит. |
|
656
|
|
|
|
|
|
|
# |
|
657
|
|
|
|
|
|
|
# Символ Назначение Мнемоника HTML Код |
|
658
|
|
|
|
|
|
|
# |
|
659
|
|
|
|
|
|
|
# Α греческая заглавная альфа Α 4.0 U+0391 Α |
|
660
|
|
|
|
|
|
|
Alpha => 913, |
|
661
|
|
|
|
|
|
|
# Β греческая заглавная бета Β 4.0 U+0392 Β |
|
662
|
|
|
|
|
|
|
Beta => 914, |
|
663
|
|
|
|
|
|
|
# Γ греческая заглавная гамма Γ 4.0 U+0393 Γ |
|
664
|
|
|
|
|
|
|
Gamma => 915, |
|
665
|
|
|
|
|
|
|
# Δ греческая заглавная дельта Δ 4.0 U+0394 Δ |
|
666
|
|
|
|
|
|
|
Delta => 916, |
|
667
|
|
|
|
|
|
|
# Ε греческая заглавная эпсилон Ε 4.0 U+0395 Ε |
|
668
|
|
|
|
|
|
|
Epsilon => 917, |
|
669
|
|
|
|
|
|
|
# Ζ греческая заглавная дзета Ζ 4.0 U+0396 Ζ |
|
670
|
|
|
|
|
|
|
Zeta => 918, |
|
671
|
|
|
|
|
|
|
# Η греческая заглавная эта Η 4.0 U+0397 Η |
|
672
|
|
|
|
|
|
|
Eta => 919, |
|
673
|
|
|
|
|
|
|
# Θ греческая заглавная тета Θ 4.0 U+0398 Θ |
|
674
|
|
|
|
|
|
|
Theta => 920, |
|
675
|
|
|
|
|
|
|
# Ι греческая заглавная йота Ι 4.0 U+0399 Ι |
|
676
|
|
|
|
|
|
|
Iota => 921, |
|
677
|
|
|
|
|
|
|
# Κ греческая заглавная каппа Κ 4.0 U+039A Κ |
|
678
|
|
|
|
|
|
|
Kappa => 922, |
|
679
|
|
|
|
|
|
|
# Λ греческая заглавная лямбда Λ 4.0 U+039B Λ |
|
680
|
|
|
|
|
|
|
Lambda => 923, |
|
681
|
|
|
|
|
|
|
# Μ греческая заглавная мю Μ 4.0 U+039C Μ |
|
682
|
|
|
|
|
|
|
Mu => 924, |
|
683
|
|
|
|
|
|
|
# Ν греческая заглавная ню Ν 4.0 U+039D Ν |
|
684
|
|
|
|
|
|
|
Nu => 925, |
|
685
|
|
|
|
|
|
|
# Ξ греческая заглавная кси Ξ 4.0 U+039E Ξ |
|
686
|
|
|
|
|
|
|
Xi => 926, |
|
687
|
|
|
|
|
|
|
# Ο греческая заглавная омикрон Ο 4.0 U+039F Ο |
|
688
|
|
|
|
|
|
|
Omicron => 927, |
|
689
|
|
|
|
|
|
|
# Π греческая заглавная пи Π 4.0 U+03A0 Π |
|
690
|
|
|
|
|
|
|
Pi => 928, |
|
691
|
|
|
|
|
|
|
# Ρ греческая заглавная ро Ρ 4.0 U+03A1 Ρ |
|
692
|
|
|
|
|
|
|
Rho => 929, |
|
693
|
|
|
|
|
|
|
# Σ греческая заглавная сигма Σ 4.0 U+03A3 Σ |
|
694
|
|
|
|
|
|
|
Sigma => 931, |
|
695
|
|
|
|
|
|
|
# Τ греческая заглавная тау Τ 4.0 U+03A4 Τ |
|
696
|
|
|
|
|
|
|
Tau => 932, |
|
697
|
|
|
|
|
|
|
# Υ греческая заглавная ипсилон Υ 4.0 U+03A5 Υ |
|
698
|
|
|
|
|
|
|
Upsilon => 933, |
|
699
|
|
|
|
|
|
|
# Φ греческая заглавная фи Φ 4.0 U+03A6 Φ |
|
700
|
|
|
|
|
|
|
Phi => 934, |
|
701
|
|
|
|
|
|
|
# Χ греческая заглавная хи Χ 4.0 U+03A7 Χ |
|
702
|
|
|
|
|
|
|
Chi => 935, |
|
703
|
|
|
|
|
|
|
# Ψ греческая заглавная пси Ψ 4.0 U+03A8 Ψ |
|
704
|
|
|
|
|
|
|
Psi => 936, |
|
705
|
|
|
|
|
|
|
# Ω • греческая заглавная омега |
|
706
|
|
|
|
|
|
|
# • Ом (единица электрического сопротивления) — рекомендуется вместо ранее введённого специального символа «Ом» U+2126 (Ω, Ω) Ω 5.0 U+03A9 Ω Ω 4.0 |
|
707
|
|
|
|
|
|
|
ohm => 937, |
|
708
|
|
|
|
|
|
|
Omega => 937, |
|
709
|
|
|
|
|
|
|
# α греческая строчная альфа α 4.0 U+03B1 α |
|
710
|
|
|
|
|
|
|
alpha => 945, |
|
711
|
|
|
|
|
|
|
# β греческая строчная бета β 4.0 U+03B2 β |
|
712
|
|
|
|
|
|
|
beta => 946, |
|
713
|
|
|
|
|
|
|
# γ греческая строчная гамма γ 4.0 U+03B3 γ |
|
714
|
|
|
|
|
|
|
gamma => 947, |
|
715
|
|
|
|
|
|
|
# δ греческая строчная дельта δ 4.0 U+03B4 δ |
|
716
|
|
|
|
|
|
|
delta => 948, |
|
717
|
|
|
|
|
|
|
# ε греческая строчная эпсилон ε 5.0 U+03B5 ε ε 4.0 |
|
718
|
|
|
|
|
|
|
epsi => 949, |
|
719
|
|
|
|
|
|
|
epsilon => 949, |
|
720
|
|
|
|
|
|
|
# ζ греческая строчная дзета ζ 4.0 U+03B6 ζ |
|
721
|
|
|
|
|
|
|
zeta => 950, |
|
722
|
|
|
|
|
|
|
# η греческая строчная эта η 4.0 U+03B7 η |
|
723
|
|
|
|
|
|
|
eta => 951, |
|
724
|
|
|
|
|
|
|
# θ греческая строчная тета θ 4.0 U+03B8 θ |
|
725
|
|
|
|
|
|
|
theta => 952, |
|
726
|
|
|
|
|
|
|
# ι греческая строчная йота ι 4.0 U+03B9 ι |
|
727
|
|
|
|
|
|
|
iota => 953, |
|
728
|
|
|
|
|
|
|
# κ греческая строчная каппа κ 4.0 U+03BA κ |
|
729
|
|
|
|
|
|
|
kappa => 954, |
|
730
|
|
|
|
|
|
|
# λ греческая строчная лямбда λ 4.0 U+03BB λ |
|
731
|
|
|
|
|
|
|
lambda => 955, |
|
732
|
|
|
|
|
|
|
# μ греческая строчная мю μ 4.0 U+03BC μ |
|
733
|
|
|
|
|
|
|
mu => 956, |
|
734
|
|
|
|
|
|
|
# ν греческая строчная ню ν 4.0 U+03BD ν |
|
735
|
|
|
|
|
|
|
nu => 957, |
|
736
|
|
|
|
|
|
|
# ξ греческая строчная кси ξ 4.0 U+03BE ξ |
|
737
|
|
|
|
|
|
|
xi => 958, |
|
738
|
|
|
|
|
|
|
# ο греческая строчная омикрон ο 4.0 U+03BF ο |
|
739
|
|
|
|
|
|
|
omicron => 959, |
|
740
|
|
|
|
|
|
|
# π греческая строчная пи π 4.0 U+03C0 π |
|
741
|
|
|
|
|
|
|
pi => 960, |
|
742
|
|
|
|
|
|
|
# ρ греческая строчная ро ρ 4.0 U+03C1 ρ |
|
743
|
|
|
|
|
|
|
rho => 961, |
|
744
|
|
|
|
|
|
|
# ς греческая строчная сигма конечная ς 5.0 U+03C2 ς ς 5.0 ς 4.0 |
|
745
|
|
|
|
|
|
|
sigmav => 962, |
|
746
|
|
|
|
|
|
|
varsigma => 962, |
|
747
|
|
|
|
|
|
|
sigmaf => 962, |
|
748
|
|
|
|
|
|
|
# σ греческая строчная сигма σ 4.0 U+03C3 σ |
|
749
|
|
|
|
|
|
|
sigma => 963, |
|
750
|
|
|
|
|
|
|
# τ греческая строчная тау τ 4.0 U+03C4 τ |
|
751
|
|
|
|
|
|
|
tau => 964, |
|
752
|
|
|
|
|
|
|
# υ греческая строчная ипсилон υ 5.0 U+03C5 υ υ 4.0 |
|
753
|
|
|
|
|
|
|
upsi => 965, |
|
754
|
|
|
|
|
|
|
upsilon => 965, |
|
755
|
|
|
|
|
|
|
# φ греческая строчная фи φ 4.0 U+03C6 φ |
|
756
|
|
|
|
|
|
|
phi => 966, |
|
757
|
|
|
|
|
|
|
# χ греческая строчная хи χ 4.0 U+03C7 χ |
|
758
|
|
|
|
|
|
|
chi => 967, |
|
759
|
|
|
|
|
|
|
# ψ греческая строчная пси ψ 4.0 U+03C8 ψ |
|
760
|
|
|
|
|
|
|
psi => 968, |
|
761
|
|
|
|
|
|
|
# ω греческая строчная омега ω 4.0 U+03C9 ω |
|
762
|
|
|
|
|
|
|
omega => 969, |
|
763
|
|
|
|
|
|
|
# ϑ греческая символьная тета ϑ 5.0 U+03D1 ϑ ϑ 5.0 ϑ 4.0 |
|
764
|
|
|
|
|
|
|
thetav => 977, |
|
765
|
|
|
|
|
|
|
vartheta => 977, |
|
766
|
|
|
|
|
|
|
thetasym => 977, |
|
767
|
|
|
|
|
|
|
# ϒ греческий ипсилон с хвостиком ϒ 5.0 U+03D2 ϒ ϒ 4.0 |
|
768
|
|
|
|
|
|
|
Upsi => 978, |
|
769
|
|
|
|
|
|
|
upsih => 978, |
|
770
|
|
|
|
|
|
|
# ϕ греческая символьная фи ϕ 5.0 U+03D5 ϕ ϕ 5.0 ϕ 5.0 |
|
771
|
|
|
|
|
|
|
straightphi => 981, |
|
772
|
|
|
|
|
|
|
varphi => 981, |
|
773
|
|
|
|
|
|
|
phiv => 981, |
|
774
|
|
|
|
|
|
|
# ϖ греческая символьная пи ϖ 5.0 U+03D6 ϖ ϖ 4.0 |
|
775
|
|
|
|
|
|
|
varpi => 982, |
|
776
|
|
|
|
|
|
|
piv => 982, |
|
777
|
|
|
|
|
|
|
# Ϝ греческая заглавная дигамма Ϝ 5.0 U+03DC Ϝ |
|
778
|
|
|
|
|
|
|
Gammad => 988, |
|
779
|
|
|
|
|
|
|
# ϝ греческая строчная дигамма ϝ 5.0 U+03DD ϝ ϝ 5.0 |
|
780
|
|
|
|
|
|
|
gammad => 989, |
|
781
|
|
|
|
|
|
|
digamma => 989, |
|
782
|
|
|
|
|
|
|
# ϰ греческая символьная каппа ϰ 5.0 U+03F0 ϰ ϰ 5.0 |
|
783
|
|
|
|
|
|
|
varkappa => 1008, |
|
784
|
|
|
|
|
|
|
kappav => 1008, |
|
785
|
|
|
|
|
|
|
# ϱ греческая символьная ро ϱ 5.0 U+03F1 ϱ ϱ 5.0 |
|
786
|
|
|
|
|
|
|
varrho => 1009, |
|
787
|
|
|
|
|
|
|
rhov => 1009, |
|
788
|
|
|
|
|
|
|
# ϵ греческая символьный эпсилон (прямой эпсилон, лунный эпсилон) ϵ 5.0 U+03F5 ϵ ϵ 5.0 ϵ 5.0 |
|
789
|
|
|
|
|
|
|
straightepsilon => 1013, |
|
790
|
|
|
|
|
|
|
varepsilon => 1013, |
|
791
|
|
|
|
|
|
|
epsiv => 1013, |
|
792
|
|
|
|
|
|
|
# ϶ греческая обратный эпсилон (обращённый лунный эпсилон) ϶ 5.0 U+03F6 ϶ ϶ 5.0 |
|
793
|
|
|
|
|
|
|
backepsilon => 1014, |
|
794
|
|
|
|
|
|
|
bepsi => 1014, |
|
795
|
|
|
|
|
|
|
# |
|
796
|
|
|
|
|
|
|
# |
|
797
|
|
|
|
|
|
|
# Общая пунктуация |
|
798
|
|
|
|
|
|
|
# Символ Назначение Мнемоника Код |
|
799
|
|
|
|
|
|
|
# |
|
800
|
|
|
|
|
|
|
# пробел длины N (длинный пробел, примерно с короткое тире) |
|
801
|
|
|
|
|
|
|
ensp => 8194, |
|
802
|
|
|
|
|
|
|
# пробел длины M (очень длинный пробел, примерно с длинное тире) |
|
803
|
|
|
|
|
|
|
emsp => 8195, |
|
804
|
|
|
|
|
|
|
# узкий пробел |
|
805
|
|
|
|
|
|
|
thinsp => 8201, |
|
806
|
|
|
|
|
|
|
# zero width non-joiner — запрет склейки (лигатуры) соседних символов |
|
807
|
|
|
|
|
|
|
zwnj => 8204, |
|
808
|
|
|
|
|
|
|
# zero width joiner — запрос на склейку (лигатуру) соседних символов |
|
809
|
|
|
|
|
|
|
zwj => 8205, |
|
810
|
|
|
|
|
|
|
# left-to-right mark — признак начала текста, читаемого слева‑направо |
|
811
|
|
|
|
|
|
|
lrm => 8206, |
|
812
|
|
|
|
|
|
|
# right-to-left mark — признак начала текста, читаемого справа‑налево |
|
813
|
|
|
|
|
|
|
rlm => 8207, |
|
814
|
|
|
|
|
|
|
# ‑ неразрывный (неразделяемый) дефис / non-breaking hyphen ‑ |
|
815
|
|
|
|
|
|
|
# – короткое тире (тире длины N) – – |
|
816
|
|
|
|
|
|
|
ndash => 8211, |
|
817
|
|
|
|
|
|
|
# — длинное тире (тире длины M) — — |
|
818
|
|
|
|
|
|
|
mdash => 8212, |
|
819
|
|
|
|
|
|
|
# ‘ одинарная кавычка типа «верхняя перевёрнутая девятка» ‘ ‘ |
|
820
|
|
|
|
|
|
|
lsquo => 8216, |
|
821
|
|
|
|
|
|
|
# ’ одинарная кавычка типа «верхняя девятка» ’ ’ |
|
822
|
|
|
|
|
|
|
rsquo => 8217, |
|
823
|
|
|
|
|
|
|
# ‚ одинарная кавычка типа «нижняя девятка» ‚ ‚ |
|
824
|
|
|
|
|
|
|
sbquo => 8218, |
|
825
|
|
|
|
|
|
|
# ‛ одинарная кавычка типа «верхняя обращённая девятка» ‛ |
|
826
|
|
|
|
|
|
|
# “ двойная кавычка типа «верхняя перевёрнутая девятка» “ “ |
|
827
|
|
|
|
|
|
|
ldquo => 8220, |
|
828
|
|
|
|
|
|
|
# ” двойная кавычка типа «верхняя девятка» ” ” |
|
829
|
|
|
|
|
|
|
rdquo => 8221, |
|
830
|
|
|
|
|
|
|
# „ двойная кавычка типа «нижняя девятка» „ „ |
|
831
|
|
|
|
|
|
|
bdquo => 8222, |
|
832
|
|
|
|
|
|
|
# ‟ двойная кавычка типа «верхняя обращённая девятка» ‟ |
|
833
|
|
|
|
|
|
|
# † типографский крестик † † |
|
834
|
|
|
|
|
|
|
dagger => 8224, |
|
835
|
|
|
|
|
|
|
# ‡ двойной типографский крестик ‡ ‡ |
|
836
|
|
|
|
|
|
|
Dagger => 8225, |
|
837
|
|
|
|
|
|
|
# • маркер списка (буллит) • • |
|
838
|
|
|
|
|
|
|
bull => 8226, |
|
839
|
|
|
|
|
|
|
# … горизонтальное многоточие … … |
|
840
|
|
|
|
|
|
|
hellip => 8230, |
|
841
|
|
|
|
|
|
|
# ‰ проми́лле ‰ ‰ |
|
842
|
|
|
|
|
|
|
permil => 8240, |
|
843
|
|
|
|
|
|
|
# ′ штрих ′ ′ |
|
844
|
|
|
|
|
|
|
prime => 8242, |
|
845
|
|
|
|
|
|
|
# ″ двойной штрих ″ ″ |
|
846
|
|
|
|
|
|
|
Prime => 8243, |
|
847
|
|
|
|
|
|
|
# ‹ направленная влево одинарная угловая кавычка (предложена, но ещё не стандартизирована ISO, практически всюду есть) ‹ ‹ |
|
848
|
|
|
|
|
|
|
lsaquo => 8249, |
|
849
|
|
|
|
|
|
|
# › направленная вправо одинарная угловая кавычка (предложена, но ещё не стандартизирована ISO, практически всюду есть) › › |
|
850
|
|
|
|
|
|
|
rsaquo => 8250, |
|
851
|
|
|
|
|
|
|
# ‾ занимающее позицию надчёркивание ‾ ‾ |
|
852
|
|
|
|
|
|
|
oline => 8254, |
|
853
|
|
|
|
|
|
|
# ⁄ комбинируемый символ «дробь-черта» (1⁄2 → ½, 3⁄4 → ¾, 12⁄23 → 12⁄23, при необходимости последовательность цифр ограничивается пробелом нулевой длины () или неразрывным пробелом нулевой длины (): 1234⁄56 → 1234⁄56, 299⁄100 → 299⁄100) ⁄ ⁄ |
|
854
|
|
|
|
|
|
|
frasl => 8260, |
|
855
|
|
|
|
|
|
|
# |
|
856
|
|
|
|
|
|
|
# |
|
857
|
|
|
|
|
|
|
# Знаки валют |
|
858
|
|
|
|
|
|
|
# Символ Назначение Мнемоника Код |
|
859
|
|
|
|
|
|
|
# |
|
860
|
|
|
|
|
|
|
# € евро € € |
|
861
|
|
|
|
|
|
|
euro => 8364, |
|
862
|
|
|
|
|
|
|
# ₽ рубль ₽ |
|
863
|
|
|
|
|
|
|
# |
|
864
|
|
|
|
|
|
|
# |
|
865
|
|
|
|
|
|
|
# Буквоподобные символы |
|
866
|
|
|
|
|
|
|
# Символ Назначение Мнемоника Код |
|
867
|
|
|
|
|
|
|
# |
|
868
|
|
|
|
|
|
|
# ℑ готическая заглавная I (регулярная латинская готическая буква) = мнимая часть ℑ ℑ |
|
869
|
|
|
|
|
|
|
image => 8465, |
|
870
|
|
|
|
|
|
|
# № Знак номера № (HTML 5.0) № |
|
871
|
|
|
|
|
|
|
numero => 8470, |
|
872
|
|
|
|
|
|
|
# ℘ эллиптическая функция Вейерштрасса или множество всех подмножеств. Отдельный символ, >не рукописная заглавная P (𝒫, 𝒫) ℘ ℘ |
|
873
|
|
|
|
|
|
|
weierp => 8472, |
|
874
|
|
|
|
|
|
|
# ℜ готическая заглавная R (регулярная латинская готическая буква) = вещественная часть ℜ ℜ |
|
875
|
|
|
|
|
|
|
real => 8476, |
|
876
|
|
|
|
|
|
|
# ™ товарный знак ™ — есть не всюду ™ ™ |
|
877
|
|
|
|
|
|
|
TRADE => 8482, |
|
878
|
|
|
|
|
|
|
trade => 8482, |
|
879
|
|
|
|
|
|
|
# ℵ математическая буква Алеф = бесконечный кардинал — в отличие от еврейской буквы Алеф (א, א) читается слева направо ℵ ℵ |
|
880
|
|
|
|
|
|
|
alefsym => 8501, |
|
881
|
|
|
|
|
|
|
# |
|
882
|
|
|
|
|
|
|
# |
|
883
|
|
|
|
|
|
|
# Формы чисел |
|
884
|
|
|
|
|
|
|
# Символ Назначение Мнемоника Код |
|
885
|
|
|
|
|
|
|
# |
|
886
|
|
|
|
|
|
|
# ⅓ простая дробь «одна треть» ⅓ (HTML 5.0) ⅓ |
|
887
|
|
|
|
|
|
|
frac13 => 8531, |
|
888
|
|
|
|
|
|
|
# |
|
889
|
|
|
|
|
|
|
# |
|
890
|
|
|
|
|
|
|
# Стрелки |
|
891
|
|
|
|
|
|
|
# Символ Назначение Мнемоника Код |
|
892
|
|
|
|
|
|
|
# |
|
893
|
|
|
|
|
|
|
# ← влево ← ← |
|
894
|
|
|
|
|
|
|
larr => 8592, |
|
895
|
|
|
|
|
|
|
# ↑ вверх ↑ ↑ |
|
896
|
|
|
|
|
|
|
uarr => 8593, |
|
897
|
|
|
|
|
|
|
# → вправо → → |
|
898
|
|
|
|
|
|
|
rarr => 8594, |
|
899
|
|
|
|
|
|
|
# ↓ вниз ↓ ↓ |
|
900
|
|
|
|
|
|
|
darr => 8595, |
|
901
|
|
|
|
|
|
|
# ↔ влево-вправо ↔ ↔ |
|
902
|
|
|
|
|
|
|
harr => 8596, |
|
903
|
|
|
|
|
|
|
# ↵ вниз с углом вправо = возврат каретки ↵ ↵ |
|
904
|
|
|
|
|
|
|
crarr => 8629, |
|
905
|
|
|
|
|
|
|
# ⇐ двойная стрелка влево ⇐ ⇐ |
|
906
|
|
|
|
|
|
|
lArr => 8656, |
|
907
|
|
|
|
|
|
|
# ⇑ двойная вверх ⇑ ⇑ |
|
908
|
|
|
|
|
|
|
uArr => 8657, |
|
909
|
|
|
|
|
|
|
# ⇒ двойная вправо ⇒ ⇒ |
|
910
|
|
|
|
|
|
|
rArr => 8658, |
|
911
|
|
|
|
|
|
|
# ⇓ двойная вниз ⇓ ⇓ |
|
912
|
|
|
|
|
|
|
dArr => 8659, |
|
913
|
|
|
|
|
|
|
# ⇔ двойная влево-вправо ⇔ ⇔ |
|
914
|
|
|
|
|
|
|
hArr => 8660, |
|
915
|
|
|
|
|
|
|
# ◄ влево ◄ |
|
916
|
|
|
|
|
|
|
# ▲ вверх ▲ |
|
917
|
|
|
|
|
|
|
# ► вправо ► |
|
918
|
|
|
|
|
|
|
# ▼ вниз ▼ |
|
919
|
|
|
|
|
|
|
# |
|
920
|
|
|
|
|
|
|
# |
|
921
|
|
|
|
|
|
|
# Математические операции |
|
922
|
|
|
|
|
|
|
# Символ Назначение Мнемоника Код |
|
923
|
|
|
|
|
|
|
# |
|
924
|
|
|
|
|
|
|
# ∀ квантор всеобщности (для всех…) ∀ ∀ |
|
925
|
|
|
|
|
|
|
forall => 8704, |
|
926
|
|
|
|
|
|
|
# ∂ частная производная ∂ ∂ |
|
927
|
|
|
|
|
|
|
part => 8706, |
|
928
|
|
|
|
|
|
|
# ∃ квантор существования (существует…) ∃ ∃ |
|
929
|
|
|
|
|
|
|
exist => 8707, |
|
930
|
|
|
|
|
|
|
# ∅ пустое множество (диаметр) ∅ ∅ |
|
931
|
|
|
|
|
|
|
empty => 8709, |
|
932
|
|
|
|
|
|
|
# ∇ набла ∇ ∇ |
|
933
|
|
|
|
|
|
|
nabla => 8711, |
|
934
|
|
|
|
|
|
|
# ∈ принадлежит ∈ ∈ |
|
935
|
|
|
|
|
|
|
isin => 8712, |
|
936
|
|
|
|
|
|
|
# ∉ не принадлежит ∉ ∉ |
|
937
|
|
|
|
|
|
|
notin => 8713, |
|
938
|
|
|
|
|
|
|
# ∋ содержит ∋ ∋ |
|
939
|
|
|
|
|
|
|
ni => 8715, |
|
940
|
|
|
|
|
|
|
# ∏ произведение по множеству ∏ ∏ |
|
941
|
|
|
|
|
|
|
prod => 8719, |
|
942
|
|
|
|
|
|
|
# ∑ сумма по множеству ∑ ∑ |
|
943
|
|
|
|
|
|
|
sum => 8721, |
|
944
|
|
|
|
|
|
|
# − минус — не чёрточка-минус из ASCII, имеет те же размеры и такое же расположение горизонтального штриха, что и «+» − − |
|
945
|
|
|
|
|
|
|
minus => 8722, |
|
946
|
|
|
|
|
|
|
# ∕ деление (не косая черта из ASCII) ∕ |
|
947
|
|
|
|
|
|
|
# ∖ разность множеств (не обратная косая черта из ASCII) ∖ (HTML 5.0) |
|
948
|
|
|
|
|
|
|
setmn => 34598, |
|
949
|
|
|
|
|
|
|
# ∖ (HTML 5.0) |
|
950
|
|
|
|
|
|
|
setminus => 34598, |
|
951
|
|
|
|
|
|
|
# ∖ (HTML 5.0) |
|
952
|
|
|
|
|
|
|
Backslash => 8726, |
|
953
|
|
|
|
|
|
|
# ∖ (HTML 5.0) |
|
954
|
|
|
|
|
|
|
ssetmn => 8726, |
|
955
|
|
|
|
|
|
|
# ∖ (HTML 5.0) ∖ |
|
956
|
|
|
|
|
|
|
smallsetminus => 8726, |
|
957
|
|
|
|
|
|
|
# ∗ звёздочка (гарантированно не приподнятая над строкой) ∗ ∗ |
|
958
|
|
|
|
|
|
|
lowast => 8727, |
|
959
|
|
|
|
|
|
|
# √ квадратный корень = знак радикала √ √ |
|
960
|
|
|
|
|
|
|
radic => 8730, |
|
961
|
|
|
|
|
|
|
# ∝ пропорционально к ∝ ∝ |
|
962
|
|
|
|
|
|
|
prop => 8733, |
|
963
|
|
|
|
|
|
|
# ∞ бесконечность ∞ ∞ |
|
964
|
|
|
|
|
|
|
infin => 8734, |
|
965
|
|
|
|
|
|
|
# ∠ угол ∠ ∠ |
|
966
|
|
|
|
|
|
|
ang => 8736, |
|
967
|
|
|
|
|
|
|
# ∧ конъюнкция (логическое И) = wedge ∧ ∧ |
|
968
|
|
|
|
|
|
|
and => 8743, |
|
969
|
|
|
|
|
|
|
# ∨ дизъюнкция (логическое ИЛИ) = vee ∨ ∨ |
|
970
|
|
|
|
|
|
|
or => 8744, |
|
971
|
|
|
|
|
|
|
# ∩ пересечение = cap ∩ ∩ |
|
972
|
|
|
|
|
|
|
cap => 8745, |
|
973
|
|
|
|
|
|
|
# ∪ объединение = cup ∪ ∪ |
|
974
|
|
|
|
|
|
|
cup => 8746, |
|
975
|
|
|
|
|
|
|
# ∫ интеграл ∫ ∫ |
|
976
|
|
|
|
|
|
|
int => 8747, |
|
977
|
|
|
|
|
|
|
# ∴ следовательно, тем самым = therefore ∴ ∴ |
|
978
|
|
|
|
|
|
|
there4 => 8756, |
|
979
|
|
|
|
|
|
|
# ∼ эквивалентно (для бесконечно малых/больших) = similar to ∼ ∼ |
|
980
|
|
|
|
|
|
|
sim => 8764, |
|
981
|
|
|
|
|
|
|
# ≅ конгруэнтно = is approximately equal (congruent) to ≅ ≅ |
|
982
|
|
|
|
|
|
|
cong => 8773, |
|
983
|
|
|
|
|
|
|
# ≈ примерно равно = is almost equal (asymptotic) to ≈ ≈ |
|
984
|
|
|
|
|
|
|
asymp => 8776, |
|
985
|
|
|
|
|
|
|
# ≠ не равно = is not equal to ≠ ≠ |
|
986
|
|
|
|
|
|
|
ne => 8800, |
|
987
|
|
|
|
|
|
|
# ≡ тождественно равно, логически эквивалентно = is equivalent to ≡ ≡ |
|
988
|
|
|
|
|
|
|
equiv => 8801, |
|
989
|
|
|
|
|
|
|
# ≤ меньше или равно = is less or equal to ≤ ≤ |
|
990
|
|
|
|
|
|
|
le => 8804, |
|
991
|
|
|
|
|
|
|
# ≥ больше или равно = is greater or equal to ≥ ≥ |
|
992
|
|
|
|
|
|
|
ge => 8805, |
|
993
|
|
|
|
|
|
|
# ⊂ подмножество = is subset of ⊂ ⊂ |
|
994
|
|
|
|
|
|
|
sub => 8834, |
|
995
|
|
|
|
|
|
|
# ⊃ включает в себя = is superset of ⊃ ⊃ |
|
996
|
|
|
|
|
|
|
sup => 8835, |
|
997
|
|
|
|
|
|
|
# ⊄ не является подмножеством = is not subset of ⊄ ⊄ |
|
998
|
|
|
|
|
|
|
nsub => 8836, |
|
999
|
|
|
|
|
|
|
# ⊆ подмножество или эквивалентно = is subset of or equivalent to ⊆ ⊆ |
|
1000
|
|
|
|
|
|
|
sube => 8838, |
|
1001
|
|
|
|
|
|
|
# ⊇ включает в себя или эквивалентно = is superset of or equivalent to ⊇ ⊇ |
|
1002
|
|
|
|
|
|
|
supe => 8839, |
|
1003
|
|
|
|
|
|
|
# ⊕ плюс в круге = прямая сумма ⊕ ⊕ |
|
1004
|
|
|
|
|
|
|
oplus => 8853, |
|
1005
|
|
|
|
|
|
|
# ⊗ умножение [косым] крестом в круге = тензорное произведение ⊗ ⊗ |
|
1006
|
|
|
|
|
|
|
otimes => 8855, |
|
1007
|
|
|
|
|
|
|
# ⊥ up tack = ортогонально к = перпендикулярно ⊥ ⊥ |
|
1008
|
|
|
|
|
|
|
perp => 8869, |
|
1009
|
|
|
|
|
|
|
# ⋅ умножение точкой = скалярное произведение ⋅ ⋅ |
|
1010
|
|
|
|
|
|
|
sdot => 8901, |
|
1011
|
|
|
|
|
|
|
# |
|
1012
|
|
|
|
|
|
|
# |
|
1013
|
|
|
|
|
|
|
# Технические символы |
|
1014
|
|
|
|
|
|
|
# Символ Назначение Мнемоника Код |
|
1015
|
|
|
|
|
|
|
# |
|
1016
|
|
|
|
|
|
|
# ⌈ левая скобка округления вверх = apl upstile ⌈ ⌈ |
|
1017
|
|
|
|
|
|
|
lceil => 8968, |
|
1018
|
|
|
|
|
|
|
# ⌉ правая скобка округления вверх ⌉ ⌉ |
|
1019
|
|
|
|
|
|
|
rceil => 8969, |
|
1020
|
|
|
|
|
|
|
# ⌊ левая скобка округления вниз = apl downstile ⌊ ⌊ |
|
1021
|
|
|
|
|
|
|
lfloor => 8970, |
|
1022
|
|
|
|
|
|
|
# ⌋ правая скобка округления вниз ⌋ ⌋ |
|
1023
|
|
|
|
|
|
|
rfloor => 8971, |
|
1024
|
|
|
|
|
|
|
# ⟨ угловая скобка влево = бра 〈 〈 |
|
1025
|
|
|
|
|
|
|
lang => 9001, |
|
1026
|
|
|
|
|
|
|
# ⟩ угловая скобка вправо = кет 〉 〉 |
|
1027
|
|
|
|
|
|
|
rang => 9002, |
|
1028
|
|
|
|
|
|
|
# |
|
1029
|
|
|
|
|
|
|
# |
|
1030
|
|
|
|
|
|
|
# Геометрические фигуры |
|
1031
|
|
|
|
|
|
|
# Символ Назначение Мнемоника Код |
|
1032
|
|
|
|
|
|
|
# |
|
1033
|
|
|
|
|
|
|
# ◊ ромб ◊ ◊ |
|
1034
|
|
|
|
|
|
|
loz => 9674, |
|
1035
|
|
|
|
|
|
|
# |
|
1036
|
|
|
|
|
|
|
# |
|
1037
|
|
|
|
|
|
|
# Различные символы |
|
1038
|
|
|
|
|
|
|
# Символ Назначение Мнемоника Код |
|
1039
|
|
|
|
|
|
|
# |
|
1040
|
|
|
|
|
|
|
# ♠ «пики» (карточная масть) ♠ ♠ |
|
1041
|
|
|
|
|
|
|
spades => 9824, |
|
1042
|
|
|
|
|
|
|
# ♣ «трефы» (карточная масть) ♣ ♣ |
|
1043
|
|
|
|
|
|
|
clubs => 9827, |
|
1044
|
|
|
|
|
|
|
# ♥ «червы» (карточная масть) ♥ ♥ |
|
1045
|
|
|
|
|
|
|
hearts => 9829, |
|
1046
|
|
|
|
|
|
|
# ♦ «бубны» (карточная масть) ♦ ♦ |
|
1047
|
|
|
|
|
|
|
diams => 9830, |
|
1048
|
|
|
|
|
|
|
); |
|
1049
|
|
|
|
|
|
|
|
|
1050
|
32
|
|
|
32
|
|
32
|
sub _set(@) { +{ map { $_ => 1 } @_ } } |
|
|
99
|
|
|
|
|
177
|
|
|
1051
|
|
|
|
|
|
|
|
|
1052
|
|
|
|
|
|
|
# Теги не имеющие закрывающего тега |
|
1053
|
|
|
|
|
|
|
our %SINGLE_TAG = %{ _set qw/area base br col embed hr img input link meta param source track wbr/ }; |
|
1054
|
|
|
|
|
|
|
|
|
1055
|
|
|
|
|
|
|
# закрывается, если приходит или |
|
1056
|
|
|
|
|
|
|
our %TOP_CLOSE_TAG = ( |
|
1057
|
|
|
|
|
|
|
li => _set(qw/ol ul/), |
|
1058
|
|
|
|
|
|
|
caption => _set(qw/table/), |
|
1059
|
|
|
|
|
|
|
thead => _set(qw/table/), |
|
1060
|
|
|
|
|
|
|
tbody => _set(qw/table/), |
|
1061
|
|
|
|
|
|
|
tfoot => _set(qw/table/), |
|
1062
|
|
|
|
|
|
|
tr => _set(qw/table thead tbody tfoot caption/), |
|
1063
|
|
|
|
|
|
|
td => _set(qw/table thead tbody tfoot caption/), |
|
1064
|
|
|
|
|
|
|
th => _set(qw/table thead tbody tfoot caption/), |
|
1065
|
|
|
|
|
|
|
dt => _set(qw/dl/), |
|
1066
|
|
|
|
|
|
|
dd => _set(qw/dl/), |
|
1067
|
|
|
|
|
|
|
rt => _set(qw/ruby/), |
|
1068
|
|
|
|
|
|
|
rp => _set(qw/ruby/), |
|
1069
|
|
|
|
|
|
|
option => _set(qw/optgroup select/), |
|
1070
|
|
|
|
|
|
|
optgroup => _set(qw/select/), |
|
1071
|
|
|
|
|
|
|
); |
|
1072
|
|
|
|
|
|
|
|
|
1073
|
|
|
|
|
|
|
# |
закрывает открытые | и | и |
|
1074
|
|
|
|
|
|
|
our %TOP_NEW_TAG = ( |
|
1075
|
|
|
|
|
|
|
head => _set(qw/body/), |
|
1076
|
|
|
|
|
|
|
tr => _set(qw/tr thead tbody tfoot/), |
|
1077
|
|
|
|
|
|
|
td => _set(qw/tr thead tbody tfoot td th/), |
|
1078
|
|
|
|
|
|
|
th => _set(qw/tr thead tbody tfoot td th/), |
|
1079
|
|
|
|
|
|
|
col => _set(qw/tr thead tbody tfoot td th colgroup/), |
|
1080
|
|
|
|
|
|
|
colgroup => _set(qw/thead tbody tfoot caption colgroup/), |
|
1081
|
|
|
|
|
|
|
caption => _set(qw/thead tbody tfoot caption/), |
|
1082
|
|
|
|
|
|
|
thead => _set(qw/thead tbody tfoot caption/), |
|
1083
|
|
|
|
|
|
|
tbody => _set(qw/thead tbody tfoot caption/), |
|
1084
|
|
|
|
|
|
|
tfoot => _set(qw/thead tbody tfoot caption/), |
|
1085
|
|
|
|
|
|
|
li => _set(qw/li/), |
|
1086
|
|
|
|
|
|
|
dt => _set(qw/dt dd/), |
|
1087
|
|
|
|
|
|
|
dd => _set(qw/dt dd/), |
|
1088
|
|
|
|
|
|
|
rt => _set(qw/rt rp/), |
|
1089
|
|
|
|
|
|
|
rp => _set(qw/rt rp/), |
|
1090
|
|
|
|
|
|
|
option => _set(qw/option optgroup/), |
|
1091
|
|
|
|
|
|
|
optgroup => _set(qw/optgroup/), |
|
1092
|
|
|
|
|
|
|
); |
|
1093
|
|
|
|
|
|
|
|
|
1094
|
|
|
|
|
|
|
# Проверяет, что тег – одиночный |
|
1095
|
|
|
|
|
|
|
sub is_single_tag(;$) { |
|
1096
|
0
|
|
0
|
0
|
0
|
0
|
exists $SINGLE_TAG{$_[0] // $_} |
|
1097
|
|
|
|
|
|
|
} |
|
1098
|
|
|
|
|
|
|
|
|
1099
|
|
|
|
|
|
|
# Забрасывает тег в стек и возвращает закрытые |
|
1100
|
|
|
|
|
|
|
sub in_tag(\@$$) { |
|
1101
|
0
|
|
|
0
|
0
|
0
|
my ($S, $tag, $atag) = @_; |
|
1102
|
|
|
|
|
|
|
|
|
1103
|
|
|
|
|
|
|
# Выбрасываем из стека предыдущий тег |
|
1104
|
0
|
|
|
|
|
0
|
my @ret; |
|
1105
|
|
|
|
|
|
|
push @ret, pop @$S while @$S and |
|
1106
|
0
|
|
0
|
|
|
0
|
($TOP_NEW_TAG{ $S->[$#$S][0] })->{$tag}; |
|
1107
|
|
|
|
|
|
|
|
|
1108
|
0
|
0
|
|
|
|
0
|
push @$S, [$tag, $atag] unless exists $SINGLE_TAG{$tag}; |
|
1109
|
|
|
|
|
|
|
|
|
1110
|
|
|
|
|
|
|
@ret |
|
1111
|
0
|
|
|
|
|
0
|
} |
|
1112
|
|
|
|
|
|
|
|
|
1113
|
|
|
|
|
|
|
# Выбрасывает тег из стека. Возвращает выдавленные им и выбрасывает исключение, если такого в стеке нет |
|
1114
|
|
|
|
|
|
|
sub out_tag(\@$) { |
|
1115
|
0
|
|
|
0
|
0
|
0
|
my ($S, $tag) = @_; |
|
1116
|
|
|
|
|
|
|
|
|
1117
|
|
|
|
|
|
|
# Это одиночный тег - он не может быть закрывающим |
|
1118
|
0
|
0
|
|
|
|
0
|
die "$tag> is a single tag - it cannot be a closing tag" if exists $SINGLE_TAG{$tag}; |
|
1119
|
|
|
|
|
|
|
|
|
1120
|
|
|
|
|
|
|
# закрываем предыдущий, если нужно |
|
1121
|
0
|
|
|
|
|
0
|
my @ret; |
|
1122
|
|
|
|
|
|
|
push @ret, pop @$S while @$S and |
|
1123
|
0
|
|
0
|
|
|
0
|
($TOP_CLOSE_TAG{$S->[$#$S][0]})->{$tag}; |
|
1124
|
|
|
|
|
|
|
|
|
1125
|
0
|
0
|
|
|
|
0
|
die "$tag>, but stack is empty!" unless @$S; |
|
1126
|
|
|
|
|
|
|
|
|
1127
|
|
|
|
|
|
|
# тег равен закрывающему |
|
1128
|
0
|
0
|
|
|
|
0
|
die "<$S->[$#$S][0]> in stack ne $tag>!" if $S->[$#$S][0] ne $tag; |
|
1129
|
|
|
|
|
|
|
|
|
1130
|
0
|
|
|
|
|
0
|
push @ret, pop @$S; |
|
1131
|
|
|
|
|
|
|
|
|
1132
|
|
|
|
|
|
|
@ret |
|
1133
|
0
|
|
|
|
|
0
|
} |
|
1134
|
|
|
|
|
|
|
|
|
1135
|
|
|
|
|
|
|
|
|
1136
|
|
|
|
|
|
|
# Разбивает текст на страницы с учётом html-тегов |
|
1137
|
|
|
|
|
|
|
# |
|
1138
|
|
|
|
|
|
|
# 1. html-тег должен быть так же разнесён на страницы. |
|
1139
|
|
|
|
|
|
|
# |
|
1140
|
|
|
|
|
|
|
sub split_on_pages(@) { |
|
1141
|
1
|
|
|
1
|
1
|
2728
|
my ($html, $symbols_on_page, $by) = @_; |
|
1142
|
|
|
|
|
|
|
|
|
1143
|
|
|
|
|
|
|
# На какое расстояние страница может быть больше |
|
1144
|
1
|
50
|
33
|
|
|
9
|
$by //= $symbols_on_page / 3 < 1000 ? int($symbols_on_page / 3): 1000; |
|
1145
|
1
|
|
|
|
|
1
|
my $max = $symbols_on_page + $by; |
|
1146
|
|
|
|
|
|
|
|
|
1147
|
1
|
|
|
|
|
2
|
my @pages; # массив страниц |
|
1148
|
|
|
|
|
|
|
my @page; # массив элементов текста и тегов текущей страницы |
|
1149
|
1
|
|
|
|
|
1
|
my $c = 0; # количество символов в текущей странице |
|
1150
|
1
|
|
|
|
|
1
|
my $i_page = 0; # индекс элемента @page который привысил размер страницы |
|
1151
|
1
|
|
|
|
|
2
|
my $c_page = 0; # количество символов @page по $i_page |
|
1152
|
1
|
|
|
|
|
1
|
my $is_proposal = 0; # В конце текущей страницы обнаружен конец предложения |
|
1153
|
1
|
|
|
|
|
3
|
my $re_proposal = qr/[.?!…]/; |
|
1154
|
1
|
|
|
|
|
1
|
my @S; # массив открывающих тегов [tag, ''] |
|
1155
|
|
|
|
|
|
|
|
|
1156
|
|
|
|
|
|
|
# Функция фиксирует страницу и сбрасывает счётчики |
|
1157
|
|
|
|
|
|
|
my $make_page = sub { |
|
1158
|
2
|
|
|
2
|
|
6
|
push @pages, join "", @page, map { "$_->[0]>" } reverse @S; |
|
|
0
|
|
|
|
|
0
|
|
|
1159
|
2
|
|
|
|
|
4
|
$i_page = $c = $is_proposal = 0; |
|
1160
|
2
|
|
|
|
|
3
|
@page = map $_->[1], @S; |
|
1161
|
1
|
|
|
|
|
4
|
}; |
|
1162
|
|
|
|
|
|
|
|
|
1163
|
1
|
|
|
|
|
148
|
for(grep length, split m{( |
|
1164
|
|
|
|
|
|
|
<[a-z] [^<>]* > |
|
1165
|
|
|
|
|
|
|
| \s* [a-z]\w* \s* > |
|
1166
|
|
|
|
|
|
|
| &(?: [a-z]\w* | \# \d+ | \#x[0-9a-f]+ ) ;? |
|
1167
|
|
|
|
|
|
|
| \n # Абзац |
|
1168
|
|
|
|
|
|
|
| $re_proposal+ # Предложение |
|
1169
|
|
|
|
|
|
|
| \b # Слово |
|
1170
|
|
|
|
|
|
|
)}xiu, $html) { |
|
1171
|
|
|
|
|
|
|
|
|
1172
|
12
|
50
|
|
|
|
25
|
if(/^&/) {$c++} # html-символ |
|
|
0
|
50
|
|
|
|
0
|
|
|
|
|
50
|
|
|
|
|
|
|
1173
|
|
|
|
|
|
|
elsif(/^<\/\s*([a-z]\w*)/) { # закрывающий тег |
|
1174
|
0
|
|
|
|
|
0
|
my $tag = lc $1; |
|
1175
|
0
|
|
|
|
|
0
|
eval { out_tag @S, $tag }; |
|
|
0
|
|
|
|
|
0
|
|
|
1176
|
0
|
0
|
|
|
|
0
|
next if $@; |
|
1177
|
|
|
|
|
|
|
# превращаем в |
|
1178
|
0
|
0
|
|
|
|
0
|
$_ = "" if $tag eq "p"; |
|
1179
|
|
|
|
|
|
|
} |
|
1180
|
0
|
|
|
|
|
0
|
elsif(/^<([a-z]\w*)/) { in_tag @S, lc $1, $_ } # тег |
|
1181
|
12
|
|
|
|
|
11
|
else {$c += length} # текст |
|
1182
|
|
|
|
|
|
|
|
|
1183
|
12
|
|
|
|
|
14
|
push @page, $_; # накапливаем символы в массиве @page |
|
1184
|
|
|
|
|
|
|
|
|
1185
|
12
|
100
|
|
|
|
17
|
next if $c < $symbols_on_page; # страницу не набрали - тогда на next |
|
1186
|
|
|
|
|
|
|
|
|
1187
|
4
|
100
|
|
|
|
6
|
$c_page = $c, $i_page = @page if !$i_page; |
|
1188
|
|
|
|
|
|
|
|
|
1189
|
|
|
|
|
|
|
# Просматриваем вперёд пока не найдём границу или не достигнем ограничения |
|
1190
|
4
|
50
|
100
|
|
|
35
|
if(/^\n/) { $make_page->() } # Абзац |
|
|
0
|
100
|
|
|
|
0
|
|
|
|
|
100
|
|
|
|
|
|
|
1191
|
1
|
|
|
|
|
2
|
elsif(!$is_proposal && /^$re_proposal/) { $i_page = @page; $c_page = $c; $is_proposal = 1 } |
|
|
1
|
|
|
|
|
2
|
|
|
|
1
|
|
|
|
|
1
|
|
|
1192
|
|
|
|
|
|
|
elsif($c >= $max) { |
|
1193
|
|
|
|
|
|
|
# Если следующий за предложением или словом элемент - пробелы, то добавляем их к странице |
|
1194
|
1
|
50
|
|
|
|
5
|
$c_page -= length $page[$i_page++] if $page[$i_page] =~ /^\s/; |
|
1195
|
1
|
|
|
|
|
7
|
my @x = splice @page, $i_page; |
|
1196
|
1
|
|
|
|
|
3
|
$make_page->(); |
|
1197
|
1
|
|
|
|
|
2
|
push @page, @x; |
|
1198
|
1
|
|
|
|
|
2
|
$c -= $c_page; |
|
1199
|
|
|
|
|
|
|
} |
|
1200
|
|
|
|
|
|
|
} |
|
1201
|
|
|
|
|
|
|
|
|
1202
|
1
|
50
|
|
|
|
5
|
$make_page->() if @page; |
|
1203
|
|
|
|
|
|
|
|
|
1204
|
|
|
|
|
|
|
# Если размер последней страницы меньше чем 2/3, то добавляем её к предпоследней |
|
1205
|
1
|
50
|
33
|
|
|
6
|
$pages[$#pages - 1] .= pop @pages if @pages > 1 and length($pages[$#pages]) < $symbols_on_page * 2 / 3; |
|
1206
|
|
|
|
|
|
|
|
|
1207
|
|
|
|
|
|
|
#my $len = 0; $len += length for @pages; |
|
1208
|
|
|
|
|
|
|
#die "Суммарный размер страниц не изменился: " . length($html) . " == $len pages=" . @pages . " ->\n\n$html" if $len == length $html; |
|
1209
|
|
|
|
|
|
|
|
|
1210
|
1
|
|
|
|
|
23
|
my ($end1) = $html =~ m!([^<>\s]{1,13})\s*(?\w[^<>]*>\s*)*$!a; |
|
1211
|
1
|
|
|
|
|
8
|
my ($end2) = $pages[$#pages] =~ m!([^<>\s]{1,13})\s*(?\w[^<>]*>\s*)*$!a; |
|
1212
|
1
|
50
|
|
|
|
2
|
die "Концы текста и последней страницы не сходятся! `$end1` <> `$end2`" if $end1 ne $end2; |
|
1213
|
|
|
|
|
|
|
|
|
1214
|
1
|
|
|
|
|
11
|
return @pages; |
|
1215
|
|
|
|
|
|
|
} |
|
1216
|
|
|
|
|
|
|
|
|
1217
|
|
|
|
|
|
|
our %TAG2SPACE = ( |
|
1218
|
|
|
|
|
|
|
"br" => "\n", |
|
1219
|
|
|
|
|
|
|
"dd" => "\n ", |
|
1220
|
|
|
|
|
|
|
"table" => "\n", |
|
1221
|
|
|
|
|
|
|
"tr" => "\n| ", |
|
1222
|
|
|
|
|
|
|
"td" => "\t| ", |
|
1223
|
|
|
|
|
|
|
"th" => "\t| ", |
|
1224
|
|
|
|
|
|
|
"ol" => "\n", |
|
1225
|
|
|
|
|
|
|
"ul" => "\n", |
|
1226
|
|
|
|
|
|
|
"li" => "\n* ", |
|
1227
|
|
|
|
|
|
|
"img" => " ", |
|
1228
|
|
|
|
|
|
|
"p" => "\n", |
|
1229
|
|
|
|
|
|
|
"div" => "\n", |
|
1230
|
|
|
|
|
|
|
); |
|
1231
|
|
|
|
|
|
|
|
|
1232
|
|
|
|
|
|
|
our %CLOSE_TAG2SPACE = ( |
|
1233
|
|
|
|
|
|
|
"div" => "\n", |
|
1234
|
|
|
|
|
|
|
"p" => "\n", |
|
1235
|
|
|
|
|
|
|
"table" => "\n", |
|
1236
|
|
|
|
|
|
|
"ol" => "\n", |
|
1237
|
|
|
|
|
|
|
"ul" => "\n", |
|
1238
|
|
|
|
|
|
|
); |
|
1239
|
|
|
|
|
|
|
|
|
1240
|
|
|
|
|
|
|
our %WITH_CLOSE_TAG2SPACE = ( |
|
1241
|
|
|
|
|
|
|
"p" => "\n", |
|
1242
|
|
|
|
|
|
|
"br" => "\n", |
|
1243
|
|
|
|
|
|
|
"img" => " ", |
|
1244
|
|
|
|
|
|
|
); |
|
1245
|
|
|
|
|
|
|
|
|
1246
|
|
|
|
|
|
|
|
|
1247
|
|
|
|
|
|
|
# переводит html в text |
|
1248
|
|
|
|
|
|
|
sub from_html (;$) { |
|
1249
|
2
|
50
|
|
2
|
1
|
136021
|
local ($_) = @_? @_: $_; |
|
1250
|
|
|
|
|
|
|
|
|
1251
|
|
|
|
|
|
|
# 1. Убираем энтитиес: |
|
1252
|
|
|
|
|
|
|
my $ent = sub { |
|
1253
|
|
|
|
|
|
|
exists $+{word}? (exists $ENTITIES{$+{word}}? chr $ENTITIES{$+{word}}: $&): |
|
1254
|
|
|
|
|
|
|
exists $+{num}? chr $+{num}: |
|
1255
|
1
|
50
|
|
1
|
|
19
|
exists $+{hex}? chr hex $+{hex}: "" |
|
|
|
0
|
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
1256
|
2
|
|
|
|
|
8
|
}; |
|
1257
|
2
|
|
|
|
|
10
|
s{&( |
|
1258
|
|
|
|
|
|
|
(?\w+) |
|
1259
|
|
|
|
|
|
|
|\#(?\d+) |
|
1260
|
|
|
|
|
|
|
|\#x(?[a-f\d]+) |
|
1261
|
|
|
|
|
|
|
);? |
|
1262
|
1
|
|
|
|
|
3
|
}{$ent->()}genix; |
|
1263
|
|
|
|
|
|
|
|
|
1264
|
2
|
|
|
|
|
3
|
my $pre; |
|
1265
|
|
|
|
|
|
|
|
|
1266
|
|
|
|
|
|
|
my $to = sub { |
|
1267
|
6
|
100
|
|
6
|
|
22
|
my $s1 = $pre? $+{s1}: ($+{s1} eq ""? "": " "); |
|
|
|
50
|
|
|
|
|
|
|
1268
|
|
|
|
|
|
|
|
|
1269
|
|
|
|
|
|
|
my $x = |
|
1270
|
|
|
|
|
|
|
exists $+{space}? ($pre? $+{space}: " "): |
|
1271
|
|
|
|
|
|
|
exists $+{nbsp}? " ": |
|
1272
|
|
|
|
|
|
|
exists $+{xhr}? $+{xhr}: |
|
1273
|
|
|
|
|
|
|
exists $+{tag}? do { |
|
1274
|
3
|
|
|
|
|
20
|
my $tag = lc $+{tag}; |
|
1275
|
3
|
50
|
|
|
|
7
|
$pre = 1 if $tag eq "pre"; |
|
1276
|
3
|
50
|
|
|
|
11
|
exists $+{close}? $WITH_CLOSE_TAG2SPACE{$tag}: $TAG2SPACE{$tag} |
|
1277
|
|
|
|
|
|
|
}: |
|
1278
|
6
|
50
|
|
|
|
43
|
exists $+{ctag}? do { |
|
|
|
50
|
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
1279
|
2
|
|
|
|
|
7
|
my $tag = lc $+{ctag}; |
|
1280
|
2
|
50
|
|
|
|
27
|
$pre = 0 if $tag eq "pre"; |
|
1281
|
|
|
|
|
|
|
|
|
1282
|
2
|
|
|
|
|
4
|
$CLOSE_TAG2SPACE{$tag} |
|
1283
|
|
|
|
|
|
|
}: |
|
1284
|
|
|
|
|
|
|
""; |
|
1285
|
|
|
|
|
|
|
|
|
1286
|
6
|
50
|
33
|
|
|
28
|
my $s2 = $pre? $+{s2}: ($+{s2} eq "" || $s1? "": " "); |
|
|
|
50
|
|
|
|
|
|
|
1287
|
|
|
|
|
|
|
|
|
1288
|
6
|
100
|
|
|
|
35
|
$x =~ /\n/ ? $x: join "", $s1, $x, $s2 |
|
1289
|
2
|
|
|
|
|
7
|
}; |
|
1290
|
|
|
|
|
|
|
|
|
1291
|
2
|
|
|
|
|
15
|
s{ |
|
1292
|
|
|
|
|
|
|
(? \s*) ( |
|
1293
|
|
|
|
|
|
|
|
|
1294
|
|
|
|
|
|
|
<(script|style|template)\b [^<>]*> .*? \g1 \s* > |
|
1295
|
|
|
|
|
|
|
| ]*> (? .*? ) |
|
1296
|
|
|
|
|
|
|
| < (? [a-z]\w* ) [^<>]*? (? / )? \s*> |
|
1297
|
|
|
|
|
|
|
| (? [a-z]\w* ) \s*> |
|
1298
|
|
|
|
|
|
|
| |
|
1299
|
|
|
|
|
|
|
|
|
1300
|
|
|
|
|
|
|
) (? \s*) |
|
1301
|
|
|
|
|
|
|
| (? [\ \t\n\r\f]+) |
|
1302
|
|
|
|
|
|
|
| (? \xa0) |
|
1303
|
6
|
|
|
|
|
7
|
}{$to->()}genisx; |
|
1304
|
|
|
|
|
|
|
|
|
1305
|
2
|
|
|
|
|
26
|
$_ |
|
1306
|
|
|
|
|
|
|
} |
|
1307
|
|
|
|
|
|
|
|
|
1308
|
|
|
|
|
|
|
# Все, кроме запрещённых: |
|
1309
|
|
|
|
|
|
|
# applet, script, style, embed, object, param, |
|
1310
|
|
|
|
|
|
|
# video, audio, source, track, frame, frameset, iframe, comment |
|
1311
|
|
|
|
|
|
|
# html, head, body, title, meta, base, basefont, bgsound, link |
|
1312
|
|
|
|
|
|
|
# form, keygen, output, textarea, select, option, optgroup, legend, label, input |
|
1313
|
|
|
|
|
|
|
# plaintext, xmp |
|
1314
|
|
|
|
|
|
|
# А так же удаляет атрибуты начинающиеся на "on", name, for, formaction и др.. |
|
1315
|
|
|
|
|
|
|
my %SAFE_TAG = map {$_=>1} qw/ |
|
1316
|
|
|
|
|
|
|
a |
|
1317
|
|
|
|
|
|
|
abbr |
|
1318
|
|
|
|
|
|
|
acronym |
|
1319
|
|
|
|
|
|
|
address |
|
1320
|
|
|
|
|
|
|
|
|
1321
|
|
|
|
|
|
|
area |
|
1322
|
|
|
|
|
|
|
article |
|
1323
|
|
|
|
|
|
|
aside |
|
1324
|
|
|
|
|
|
|
|
|
1325
|
|
|
|
|
|
|
b |
|
1326
|
|
|
|
|
|
|
bdi |
|
1327
|
|
|
|
|
|
|
bdo |
|
1328
|
|
|
|
|
|
|
|
|
1329
|
|
|
|
|
|
|
blockquote |
|
1330
|
|
|
|
|
|
|
big |
|
1331
|
|
|
|
|
|
|
|
|
1332
|
|
|
|
|
|
|
blink |
|
1333
|
|
|
|
|
|
|
br |
|
1334
|
|
|
|
|
|
|
button |
|
1335
|
|
|
|
|
|
|
|
|
1336
|
|
|
|
|
|
|
canvas |
|
1337
|
|
|
|
|
|
|
caption |
|
1338
|
|
|
|
|
|
|
center |
|
1339
|
|
|
|
|
|
|
cite |
|
1340
|
|
|
|
|
|
|
code |
|
1341
|
|
|
|
|
|
|
col |
|
1342
|
|
|
|
|
|
|
colgroup |
|
1343
|
|
|
|
|
|
|
command |
|
1344
|
|
|
|
|
|
|
|
|
1345
|
|
|
|
|
|
|
datalist |
|
1346
|
|
|
|
|
|
|
dd |
|
1347
|
|
|
|
|
|
|
del |
|
1348
|
|
|
|
|
|
|
details |
|
1349
|
|
|
|
|
|
|
dfn |
|
1350
|
|
|
|
|
|
|
dir |
|
1351
|
|
|
|
|
|
|
div |
|
1352
|
|
|
|
|
|
|
dl |
|
1353
|
|
|
|
|
|
|
dt |
|
1354
|
|
|
|
|
|
|
|
|
1355
|
|
|
|
|
|
|
em |
|
1356
|
|
|
|
|
|
|
|
|
1357
|
|
|
|
|
|
|
figcaption |
|
1358
|
|
|
|
|
|
|
figure |
|
1359
|
|
|
|
|
|
|
font |
|
1360
|
|
|
|
|
|
|
footer |
|
1361
|
|
|
|
|
|
|
|
|
1362
|
|
|
|
|
|
|
h1 |
|
1363
|
|
|
|
|
|
|
h2 |
|
1364
|
|
|
|
|
|
|
h3 |
|
1365
|
|
|
|
|
|
|
h4 |
|
1366
|
|
|
|
|
|
|
h5 |
|
1367
|
|
|
|
|
|
|
h6 |
|
1368
|
|
|
|
|
|
|
header |
|
1369
|
|
|
|
|
|
|
hgroup |
|
1370
|
|
|
|
|
|
|
hr |
|
1371
|
|
|
|
|
|
|
|
|
1372
|
|
|
|
|
|
|
i |
|
1373
|
|
|
|
|
|
|
img |
|
1374
|
|
|
|
|
|
|
|
|
1375
|
|
|
|
|
|
|
ins |
|
1376
|
|
|
|
|
|
|
isindex |
|
1377
|
|
|
|
|
|
|
|
|
1378
|
|
|
|
|
|
|
kbd |
|
1379
|
|
|
|
|
|
|
keygen |
|
1380
|
|
|
|
|
|
|
|
|
1381
|
|
|
|
|
|
|
li |
|
1382
|
|
|
|
|
|
|
|
|
1383
|
|
|
|
|
|
|
main |
|
1384
|
|
|
|
|
|
|
map |
|
1385
|
|
|
|
|
|
|
marquee |
|
1386
|
|
|
|
|
|
|
mark |
|
1387
|
|
|
|
|
|
|
menu |
|
1388
|
|
|
|
|
|
|
|
|
1389
|
|
|
|
|
|
|
meter |
|
1390
|
|
|
|
|
|
|
|
|
1391
|
|
|
|
|
|
|
nav |
|
1392
|
|
|
|
|
|
|
nobr |
|
1393
|
|
|
|
|
|
|
noembed |
|
1394
|
|
|
|
|
|
|
noframes |
|
1395
|
|
|
|
|
|
|
noscript |
|
1396
|
|
|
|
|
|
|
|
|
1397
|
|
|
|
|
|
|
ol |
|
1398
|
|
|
|
|
|
|
|
|
1399
|
|
|
|
|
|
|
p |
|
1400
|
|
|
|
|
|
|
pre |
|
1401
|
|
|
|
|
|
|
progress |
|
1402
|
|
|
|
|
|
|
|
|
1403
|
|
|
|
|
|
|
q |
|
1404
|
|
|
|
|
|
|
|
|
1405
|
|
|
|
|
|
|
rp |
|
1406
|
|
|
|
|
|
|
rt |
|
1407
|
|
|
|
|
|
|
ruby |
|
1408
|
|
|
|
|
|
|
|
|
1409
|
|
|
|
|
|
|
s |
|
1410
|
|
|
|
|
|
|
samp |
|
1411
|
|
|
|
|
|
|
section |
|
1412
|
|
|
|
|
|
|
small |
|
1413
|
|
|
|
|
|
|
span |
|
1414
|
|
|
|
|
|
|
strike |
|
1415
|
|
|
|
|
|
|
strong |
|
1416
|
|
|
|
|
|
|
sub |
|
1417
|
|
|
|
|
|
|
summary |
|
1418
|
|
|
|
|
|
|
sup |
|
1419
|
|
|
|
|
|
|
|
|
1420
|
|
|
|
|
|
|
table |
|
1421
|
|
|
|
|
|
|
tbody |
|
1422
|
|
|
|
|
|
|
td |
|
1423
|
|
|
|
|
|
|
tfoot |
|
1424
|
|
|
|
|
|
|
th |
|
1425
|
|
|
|
|
|
|
thead |
|
1426
|
|
|
|
|
|
|
time |
|
1427
|
|
|
|
|
|
|
|
|
1428
|
|
|
|
|
|
|
tr |
|
1429
|
|
|
|
|
|
|
tt |
|
1430
|
|
|
|
|
|
|
|
|
1431
|
|
|
|
|
|
|
u |
|
1432
|
|
|
|
|
|
|
ul |
|
1433
|
|
|
|
|
|
|
|
|
1434
|
|
|
|
|
|
|
var |
|
1435
|
|
|
|
|
|
|
|
|
1436
|
|
|
|
|
|
|
wbr |
|
1437
|
|
|
|
|
|
|
/; |
|
1438
|
|
|
|
|
|
|
|
|
1439
|
|
|
|
|
|
|
my %SAFE_ATTR = map {$_=>1} qw/ |
|
1440
|
|
|
|
|
|
|
pubdate datetime |
|
1441
|
|
|
|
|
|
|
open optimum |
|
1442
|
|
|
|
|
|
|
|
|
1443
|
|
|
|
|
|
|
dir lang language style tabindex title high low hreflang icon |
|
1444
|
|
|
|
|
|
|
|
|
1445
|
|
|
|
|
|
|
max min |
|
1446
|
|
|
|
|
|
|
|
|
1447
|
|
|
|
|
|
|
href media ping rel rev name type |
|
1448
|
|
|
|
|
|
|
|
|
1449
|
|
|
|
|
|
|
class |
|
1450
|
|
|
|
|
|
|
|
|
1451
|
|
|
|
|
|
|
src |
|
1452
|
|
|
|
|
|
|
|
|
1453
|
|
|
|
|
|
|
alt crossorigin decoding height width importance intrinsicsize loading sizes srcset |
|
1454
|
|
|
|
|
|
|
|
|
1455
|
|
|
|
|
|
|
align border hspace vspace longdesc axis char charoff summary |
|
1456
|
|
|
|
|
|
|
|
|
1457
|
|
|
|
|
|
|
colspan rowspan |
|
1458
|
|
|
|
|
|
|
|
|
1459
|
|
|
|
|
|
|
border cite bgcolor color |
|
1460
|
|
|
|
|
|
|
|
|
1461
|
|
|
|
|
|
|
coords |
|
1462
|
|
|
|
|
|
|
/; |
|
1463
|
|
|
|
|
|
|
|
|
1464
|
|
|
|
|
|
|
# срезает у html-я опасные, а так же неведомые теги |
|
1465
|
|
|
|
|
|
|
sub safe_html($;$) { |
|
1466
|
4
|
|
|
4
|
1
|
3759
|
(local $_, my $link) = @_; |
|
1467
|
|
|
|
|
|
|
|
|
1468
|
|
|
|
|
|
|
my $f = sub { |
|
1469
|
9
|
100
|
|
9
|
|
43
|
return "" if !exists $SAFE_TAG{lc $2}; |
|
1470
|
6
|
100
|
|
|
|
17
|
return "$2>" if $1 ne ""; |
|
1471
|
4
|
|
|
|
|
6
|
my $tag = $2; |
|
1472
|
4
|
|
|
|
|
6
|
my $x = $3; |
|
1473
|
4
|
|
|
|
|
5
|
my @attrs; |
|
1474
|
4
|
|
|
|
|
14
|
while($x =~ / |
|
1475
|
|
|
|
|
|
|
\b (? [a-z][a-z\d]*) ( \s*=\s* ( (? ") (? [^"]*)" | (? ') (? [^']*)' | (? \S*) ) )? |
|
1476
|
|
|
|
|
|
|
/gixn) { |
|
1477
|
|
|
|
|
|
|
push @attrs, $+{val} eq ""? " $+{attr}" |
|
1478
|
|
|
|
|
|
|
: join "", " ", $+{attr}, "=", $+{quot}, |
|
1479
|
|
|
|
|
|
|
lc $+{attr} ~~ [qw/src href/] |
|
1480
|
|
|
|
|
|
|
? Aion::Format::Url::normalize_url($+{val}, $link) |
|
1481
|
|
|
|
|
|
|
: $+{val}, |
|
1482
|
|
|
|
|
|
|
$+{quot} |
|
1483
|
2
|
0
|
|
|
|
12
|
if exists $SAFE_ATTR{lc $+{attr}}; |
|
|
|
0
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
1484
|
|
|
|
|
|
|
} |
|
1485
|
|
|
|
|
|
|
|
|
1486
|
4
|
50
|
|
|
|
6
|
push @attrs, " target=_blank" if lc $tag eq "a"; |
|
1487
|
|
|
|
|
|
|
|
|
1488
|
4
|
|
|
|
|
19
|
"<$tag@attrs>" |
|
1489
|
4
|
|
|
|
|
17
|
}; |
|
1490
|
|
|
|
|
|
|
|
|
1491
|
4
|
|
|
|
|
32
|
s{<(/\s*)?([a-z][a-z\d:-]*)([^<>]*)>|}{ $f->() }igse; |
|
|
9
|
|
|
|
|
12
|
|
|
1492
|
|
|
|
|
|
|
|
|
1493
|
4
|
|
|
|
|
35
|
$_ |
|
1494
|
|
|
|
|
|
|
} |
|
1495
|
|
|
|
|
|
|
|
|
1496
|
|
|
|
|
|
|
1; |
|
1497
|
|
|
|
|
|
|
|
|
1498
|
|
|
|
|
|
|
__END__ |