<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://vion.tail5ecd76.ts.net/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AUnicode_table</id>
	<title>Модуль:Unicode table - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://vion.tail5ecd76.ts.net/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AUnicode_table"/>
	<link rel="alternate" type="text/html" href="https://vion.tail5ecd76.ts.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Unicode_table&amp;action=history"/>
	<updated>2026-11-08T02:51:43Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://vion.tail5ecd76.ts.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Unicode_table&amp;diff=7334&amp;oldid=prev</id>
		<title>wp&gt;ru.wikipedia: Импорт из русской Википедии, версия 151349812</title>
		<link rel="alternate" type="text/html" href="https://vion.tail5ecd76.ts.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Unicode_table&amp;diff=7334&amp;oldid=prev"/>
		<updated>2026-01-25T04:21:34Z</updated>

		<summary type="html">&lt;p&gt;Импорт из русской Википедии, версия 151349812&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Модуль для создания таблиц с симолами Unicode&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local unicodeData = require(&amp;#039;Module:Unicode/data&amp;#039;).getData&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local str_char = string.char&lt;br /&gt;
local tbl_concat = table.concat&lt;br /&gt;
local txt_split = mw.text.split&lt;br /&gt;
local txt_trim = mw.text.trim&lt;br /&gt;
&lt;br /&gt;
local bytemarkers = { {0x7FF,192}, {0xFFFF,224}, {0x1FFFFF,240} }&lt;br /&gt;
&lt;br /&gt;
local function utf8(decimal)&lt;br /&gt;
	if decimal &amp;lt; 128 then&lt;br /&gt;
		return str_char(decimal)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local charbytes = {}&lt;br /&gt;
	&lt;br /&gt;
	for bytes, vals in ipairs(bytemarkers) do&lt;br /&gt;
		if decimal &amp;lt;= vals[1] then&lt;br /&gt;
			for b = bytes + 1, 2, -1 do&lt;br /&gt;
				local mod = decimal % 64&lt;br /&gt;
				decimal = (decimal - mod) / 64&lt;br /&gt;
				charbytes[b] = str_char(128 + mod)&lt;br /&gt;
			end&lt;br /&gt;
			charbytes[1] = str_char(vals[2] + decimal)&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return tbl_concat(charbytes)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildTable(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local min = tonumber(args.min)&lt;br /&gt;
	local max = tonumber(args.max)&lt;br /&gt;
	&lt;br /&gt;
	if not min or not max then&lt;br /&gt;
		error(&amp;#039;Параметры `min` и `max` должны быть числами&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if min &amp;gt;= max then&lt;br /&gt;
		error(&amp;#039;Параметр `max` должен быть больше `min`&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if min &amp;lt; 0 then -- max в любом случае больше `min`&lt;br /&gt;
		error(&amp;#039;Параметр `max` и `min` должны быть положительными числами&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local output = {}&lt;br /&gt;
	&lt;br /&gt;
	local wiktionary = yesno(txt_trim(args.wiktionary or &amp;#039;&amp;#039;), false)&lt;br /&gt;
	&lt;br /&gt;
	local subst = yesno(txt_trim(args.subst or &amp;#039;&amp;#039;), false)&lt;br /&gt;
	&lt;br /&gt;
	local unicodeChart = &amp;#039;[http://www.unicode.org/charts/PDF/U&amp;#039; .. string.format(&amp;quot;%03x&amp;quot;, min):upper() &lt;br /&gt;
		.. &amp;#039;0.pdf Официальная таблица символов Консорциума Юникода]&amp;#039; .. (subst and &amp;#039;{{pdf}}&amp;#039; or frame:expandTemplate{ title = &amp;#039;pdf&amp;#039; })&lt;br /&gt;
	local page = args.page&lt;br /&gt;
	local title = args.title&lt;br /&gt;
	&lt;br /&gt;
	local class = args.class or &amp;#039;wikitable&amp;#039;&lt;br /&gt;
	local style = args.style or args.css or &amp;#039;border-collapse: collapse; background: #FFFFFF;&amp;#039;&lt;br /&gt;
		.. &amp;#039;font-size:large; text-align: center;&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	local ref_label = &amp;#039;&amp;#039;&lt;br /&gt;
	local note_label = &amp;#039;&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	local _reserved = args.reserved&lt;br /&gt;
	local reserved = {} -- hash-map&lt;br /&gt;
	&lt;br /&gt;
	if _reserved then&lt;br /&gt;
		ref_label = ref_label .. (subst and &amp;#039;{{ref label|Reserved|1|^}}&amp;#039; or frame:expandTemplate{ title = &amp;#039;ref label&amp;#039;, args = { &amp;#039;Reserved&amp;#039;, &amp;#039;1&amp;#039;, &amp;#039;^&amp;#039; } })&lt;br /&gt;
		note_label = note_label .. (subst and &amp;#039;\n:1.{{note label|Reserved|1|^}}Серые клетки обозначают зарезервированные кодовые позиции.&amp;#039;&lt;br /&gt;
			or &amp;#039;\n:1.&amp;#039; .. frame:expandTemplate{ title = &amp;#039;note label&amp;#039;, args = { &amp;#039;Reserved&amp;#039;, &amp;#039;1&amp;#039;, &amp;#039;^&amp;#039; } }	.. &amp;#039;Серые клетки обозначают зарезервированные кодовые позиции.&amp;#039;)&lt;br /&gt;
		for _, v in ipairs(txt_split(_reserved, &amp;#039;,&amp;#039;, true)) do&lt;br /&gt;
			local ind = txt_trim(v)&lt;br /&gt;
			if ind ~= &amp;#039;&amp;#039; and tonumber(ind) then&lt;br /&gt;
				reserved[tonumber(ind)] = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local header = &amp;quot;&amp;#039;&amp;#039;&amp;#039;[[&amp;quot; .. page .. &amp;#039;|&amp;#039; .. (title or page) .. &amp;quot;]]&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
		.. ref_label .. &amp;#039;&amp;lt;br/&amp;gt;&amp;#039; .. unicodeChart&lt;br /&gt;
	&lt;br /&gt;
	output[#output + 1] = &amp;#039;{| class=&amp;quot;&amp;#039; .. class .. &amp;#039;&amp;quot; style=&amp;quot;&amp;#039; .. style .. &amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
	output[#output + 1] = &amp;#039;| colspan=&amp;quot;17&amp;quot; style=&amp;quot;background: #F8F8F8; font-size: small;&amp;quot; |&amp;#039; .. header&lt;br /&gt;
	output[#output + 1] = &amp;#039;|- style=&amp;quot;background: #F8F8F8; font-size: small&amp;quot;&amp;#039;&lt;br /&gt;
	output[#output + 1] = &amp;#039;| style=&amp;quot;width: 45pt&amp;quot; | &amp;amp;nbsp;&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	local hexNumbers = { &amp;#039;0&amp;#039;, &amp;#039;1&amp;#039;, &amp;#039;2&amp;#039;, &amp;#039;3&amp;#039;, &amp;#039;4&amp;#039;, &amp;#039;5&amp;#039;, &amp;#039;6&amp;#039;, &amp;#039;7&amp;#039;, &amp;#039;8&amp;#039;, &amp;#039;9&amp;#039;, &amp;#039;A&amp;#039;, &amp;#039;B&amp;#039;, &amp;#039;C&amp;#039;, &amp;#039;D&amp;#039;, &amp;#039;E&amp;#039;, &amp;#039;F&amp;#039; }&lt;br /&gt;
	&lt;br /&gt;
	for _, num in ipairs(hexNumbers) do&lt;br /&gt;
		output[#output + 1] = &amp;#039;| style=&amp;quot;width:20pt&amp;quot; | &amp;#039; .. num&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local font_family = args[&amp;quot;font-family&amp;quot;]&lt;br /&gt;
	&lt;br /&gt;
	for ind = min, max do&lt;br /&gt;
		if font_family then&lt;br /&gt;
			output[#output + 1] = &amp;#039;|- style=&amp;quot;font-family: &amp;#039; .. font_family&lt;br /&gt;
		else&lt;br /&gt;
			output[#output + 1] = &amp;#039;|-&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		output[#output + 1] = &amp;#039;| style=&amp;quot;background: #F8F8F8; font-size: small; height: 22.5pt&amp;quot; | U+&amp;#039; &lt;br /&gt;
			.. string.format(&amp;quot;%03x&amp;quot;, ind):upper() .. &amp;#039;x&amp;#039;&lt;br /&gt;
		&lt;br /&gt;
		for _, num in ipairs(hexNumbers) do&lt;br /&gt;
			local charHex = string.format(&amp;quot;%03x&amp;quot;, ind):upper() .. num&lt;br /&gt;
			local charNum = tonumber(&amp;#039;0x&amp;#039; .. charHex)&lt;br /&gt;
			if reserved[charNum] then&lt;br /&gt;
				output[#output + 1] = &amp;#039;| title=&amp;quot;Reserved&amp;quot; style=&amp;quot;background-color: #CCCCCC;&amp;quot; |&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				output[#output + 1] = &amp;#039;| title=&amp;quot;U+&amp;#039; .. charHex .. &amp;#039;: &amp;#039; .. ((unicodeData(charHex) or {})[1] or &amp;#039;&amp;#039;) .. &amp;#039;&amp;quot;| &amp;#039;&lt;br /&gt;
					.. (wiktionary and (&amp;#039;[[wikt:&amp;#039; .. utf8(charNum) .. &amp;#039;|&amp;#039; .. utf8(charNum) .. &amp;#039;]]&amp;#039;) or utf8(charNum))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	output[#output + 1] = &amp;#039;|-&amp;#039;&lt;br /&gt;
	output[#output + 1] = &amp;quot;| colspan=\&amp;quot;17\&amp;quot; style=\&amp;quot;background: #F8F8F8; font-size: small; text-align: left\&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Примечания&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
	output[#output + 1] = note_label&lt;br /&gt;
	output[#output + 1] = &amp;#039;|}&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	return tbl_concat(output, &amp;#039;\n&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.test()&lt;br /&gt;
	mw.log(utf8(96))&lt;br /&gt;
	-- mw.log(string.format(&amp;quot;%03x&amp;quot;, 60):upper())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>wp&gt;ru.wikipedia</name></author>
	</entry>
</feed>