Module:Unicode data: Difference between revisions
Jump to navigation
Jump to search
Split noncharacter per request
imported>Stuwisi m (1 revision imported) |
w>Pppery (Split noncharacter per request) |
||
Line 87: | Line 87: | ||
{ 0x1B170, 0x1B2FB, "NUSHU CHARACTER-%04X" }, -- Nushu | { 0x1B170, 0x1B2FB, "NUSHU CHARACTER-%04X" }, -- Nushu | ||
{ 0x20000, 0x2A6DF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension B | { 0x20000, 0x2A6DF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension B | ||
{ 0x2A700, | { 0x2A700, 0x2B739, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension C | ||
{ 0x2B740, 0x2B81D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension D | { 0x2B740, 0x2B81D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension D | ||
{ 0x2B820, 0x2CEA1, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension E | { 0x2B820, 0x2CEA1, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension E | ||
Line 97: | Line 97: | ||
end}, | end}, | ||
{ 0x30000, 0x3134A, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension G | { 0x30000, 0x3134A, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension G | ||
{ 0x31350, 0x323AF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension H | |||
{ 0x2EBF0, 0x2EE5D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension I | |||
{ 0xF0000, 0xFFFFD, "<private-use-%04X>" }, -- Plane 15 Private Use | { 0xF0000, 0xFFFFD, "<private-use-%04X>" }, -- Plane 15 Private Use | ||
{ 0x100000, 0x10FFFD, "<private-use-%04X>" } -- Plane 16 Private Use | { 0x100000, 0x10FFFD, "<private-use-%04X>" } -- Plane 16 Private Use | ||
Line 124: | Line 126: | ||
--]] | --]] | ||
function p.is_noncharacter(codepoint) | |||
function p. | |||
-- U+FDD0-U+FDEF and all code points ending in FFFE or FFFF are Unassigned | -- U+FDD0-U+FDEF and all code points ending in FFFE or FFFF are Unassigned | ||
-- (Cn) and specifically noncharacters: | -- (Cn) and specifically noncharacters: | ||
-- https://www.unicode.org/faq/private_use.html#nonchar4 | -- https://www.unicode.org/faq/private_use.html#nonchar4 | ||
return 0xFDD0 <= codepoint and (codepoint <= 0xFDEF | |||
or floor(codepoint % 0x10000) >= 0xFFFE) then | or floor(codepoint % 0x10000) >= 0xFFFE) | ||
end | |||
-- https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf, section 4.8 | |||
function p.lookup_name(codepoint) | |||
if p.is_noncharacter(codepoint) then | |||
return ("<noncharacter-%04X>"):format(codepoint) | return ("<noncharacter-%04X>"):format(codepoint) | ||
end | end | ||
Line 160: | Line 167: | ||
end | end | ||
function p.lookup_image(codepoint) | function p.lookup_image(codepoint) | ||
local data = loader[('images/%03X'):format(codepoint / 0x1000)] | local data = loader[('images/%03X'):format(codepoint / 0x1000)] | ||
Line 169: | Line 174: | ||
end | end | ||
end | end | ||
local planes = { | local planes = { | ||
Line 480: | Line 484: | ||
return result | return result | ||
end | end | ||
--[[--------------------------< I S _ R T L _ F R A M E >------------------------------------------------------ | |||
external entry from an {{#invoke:}} to determine if a string of text is rtl. Strips html and html-like tags so | |||
that those tags don't corrupt the is-rtl-is-not-rtl determination; this added for the cases where the rtl text | |||
has <br /> tags. | |||
]] | |||
function p.is_rtl_frame (frame) | |||
local str = frame.args[1]; -- get the string from the {{#invoke:}} frame | |||
str = str:gsub ('%b<>', ''); -- strip any html and html-like tags | |||
return p.is_rtl (str); -- return if whatever remains rtl; false else | |||
end | |||
local function get_codepoint(args, arg) | local function get_codepoint(args, arg) |