모듈:UnicodeBlock: 두 판 사이의 차이

편집 요약 없음
편집 요약 없음
 
(같은 사용자의 중간 판 34개는 보이지 않습니다)
1번째 줄: 1번째 줄:
local p = {}
local uniBlock = {
local html = mw.html
{'0000','007F','Basic Latin'},
local title_ = mw.title
{'0080','00FF','Latin-1 Supplement'},
local ustring = mw.ustring
{'0100','017F','Latin Extended-A'},
local getArgs = require('Module:Arguments').getArgs
{'0180','024F','Latin Extended-B'},
local unicodechar = require('모듈:unicode').unicodechar
{'0250','02AF','IPA Extensions'},
{'02B0','02FF','Spacing Modifier Letters'},
{'0300','036F','Combining Diacritical Marks'},
{'0370','03FF','Greek and Coptic'},
{'0400','04FF','Cyrillic'},
{'0500','052F','Cyrillic Supplement'},
{'0530','058F','Armenian'},
{'0590','05FF','Hebrew'},
{'0600','06FF','Arabic'},
{'0700','074F','Syriac'},
{'0750','077F','Arabic Supplement'},
{'0780','07BF','Thaana'},
{'07C0','07FF','NKo'},
{'0800','083F','Samaritan'},
{'0840','085F','Mandaic'},
{'08A0','08FF','Arabic Extended-A'},
{'0900','097F','Devanagari'},
{'0980','09FF','Bengali'},
{'0A00','0A7F','Gurmukhi'},
{'0A80','0AFF','Gujarati'},
{'0B00','0B7F','Oriya'},
{'0B80','0BFF','Tamil'},
{'0C00','0C7F','Telugu'},
{'0C80','0CFF','Kannada'},
{'0D00','0D7F','Malayalam'},
{'0D80','0DFF','Sinhala'},
{'0E00','0E7F','Thai'},
{'0E80','0EFF','Lao'},
{'0F00','0FFF','Tibetan'},
{'1000','109F','Myanmar'},
{'10A0','10FF','Georgian'},
{'1100','11FF','Hangul Jamo'},
{'1200','137F','Ethiopic'},
{'1380','139F','Ethiopic Supplement'},
{'13A0','13FF','Cherokee'},
{'1400','167F','Unified Canadian Aboriginal Syllabics'},
{'1680','169F','Ogham'},
{'16A0','16FF','Runic'},
{'1700','171F','Tagalog'},
{'1720','173F','Hanunoo'},
{'1740','175F','Buhid'},
{'1760','177F','Tagbanwa'},
{'1780','17FF','Khmer'},
{'1800','18AF','Mongolian'},
{'18B0','18FF','Unified Canadian Aboriginal Syllabics Extended'},
{'1900','194F','Limbu'},
{'1950','197F','Tai Le'},
{'1980','19DF','New Tai Lue'},
{'19E0','19FF','Khmer Symbols'},
{'1A00','1A1F','Buginese'},
{'1A20','1AAF','Tai Tham'},
{'1AB0','1AFF','Combining Diacritical Marks Extended'},
{'1B00','1B7F','Balinese'},
{'1B80','1BBF','Sundanese'},
{'1BC0','1BFF','Batak'},
{'1C00','1C4F','Lepcha'},
{'1C50','1C7F','Ol Chiki'},
{'1CC0','1CCF','Sundanese Supplement'},
{'1CD0','1CFF','Vedic Extensions'},
{'1D00','1D7F','Phonetic Extensions'},
{'1D80','1DBF','Phonetic Extensions Supplement'},
{'1DC0','1DFF','Combining Diacritical Marks Supplement'},
{'1E00','1EFF','Latin Extended Additional'},
{'1F00','1FFF','Greek Extended'},
{'2000','206F','General Punctuation'},
{'2070','209F','Superscripts and Subscripts'},
{'20A0','20CF','Currency Symbols'},
{'20D0','20FF','Combining Diacritical Marks for Symbols'},
{'2100','214F','Letterlike Symbols'},
{'2150','218F','Number Forms'},
{'2190','21FF','Arrows'},
{'2200','22FF','Mathematical Operators'},
{'2300','23FF','Miscellaneous Technical'},
{'2400','243F','Control Pictures'},
{'2440','245F','Optical Character Recognition'},
{'2460','24FF','Enclosed Alphanumerics'},
{'2500','257F','Box Drawing'},
{'2580','259F','Block Elements'},
{'25A0','25FF','Geometric Shapes'},
{'2600','26FF','Miscellaneous Symbols'},
{'2700','27BF','Dingbats'},
{'27C0','27EF','Miscellaneous Mathematical Symbols-A'},
{'27F0','27FF','Supplemental Arrows-A'},
{'2800','28FF','Braille Patterns'},
{'2900','297F','Supplemental Arrows-B'},
{'2980','29FF','Miscellaneous Mathematical Symbols-B'},
{'2A00','2AFF','Supplemental Mathematical Operators'},
{'2B00','2BFF','Miscellaneous Symbols and Arrows'},
{'2C00','2C5F','Glagolitic'},
{'2C60','2C7F','Latin Extended-C'},
{'2C80','2CFF','Coptic'},
{'2D00','2D2F','Georgian Supplement'},
{'2D30','2D7F','Tifinagh'},
{'2D80','2DDF','Ethiopic Extended'},
{'2DE0','2DFF','Cyrillic Extended-A'},
{'2E00','2E7F','Supplemental Punctuation'},
{'2E80','2EFF','CJK Radicals Supplement'},
{'2F00','2FDF','Kangxi Radicals'},
{'2FF0','2FFF','Ideographic Description Characters'},
{'3000','303F','CJK Symbols and Punctuation'},
{'3040','309F','Hiragana'},
{'30A0','30FF','Katakana'},
{'3100','312F','Bopomofo'},
{'3130','318F','Hangul Compatibility Jamo'},
{'3190','319F','Kanbun'},
{'31A0','31BF','Bopomofo Extended'},
{'31C0','31EF','CJK Strokes'},
{'31F0','31FF','Katakana Phonetic Extensions'},
{'3200','32FF','Enclosed CJK Letters and Months'},
{'3300','33FF','CJK Compatibility'},
{'3400','4DBF','CJK Unified Ideographs Extension A'},
{'4DC0','4DFF','Yijing Hexagram Symbols'},
{'4E00','9FFF','CJK Unified Ideographs'},
{'A000','A48F','Yi Syllables'},
{'A490','A4CF','Yi Radicals'},
{'A4D0','A4FF','Lisu'},
{'A500','A63F','Vai'},
{'A640','A69F','Cyrillic Extended-B'},
{'A6A0','A6FF','Bamum'},
{'A700','A71F','Modifier Tone Letters'},
{'A720','A7FF','Latin Extended-D'},
{'A800','A82F','Syloti Nagri'},
{'A830','A83F','Common Indic Number Forms'},
{'A840','A87F','Phags-pa'},
{'A880','A8DF','Saurashtra'},
{'A8E0','A8FF','Devanagari Extended'},
{'A900','A92F','Kayah Li'},
{'A930','A95F','Rejang'},
{'A960','A97F','Hangul Jamo Extended-A'},
{'A980','A9DF','Javanese'},
{'A9E0','A9FF','Myanmar Extended-B'},
{'AA00','AA5F','Cham'},
{'AA60','AA7F','Myanmar Extended-A'},
{'AA80','AADF','Tai Viet'},
{'AAE0','AAFF','Meetei Mayek Extensions'},
{'AB00','AB2F','Ethiopic Extended-A'},
{'AB30','AB6F','Latin Extended-E'},
{'AB70','ABBF','Cherokee Supplement'},
{'ABC0','ABFF','Meetei Mayek'},
{'AC00','D7AF','Hangul Syllables'},
{'D7B0','D7FF','Hangul Jamo Extended-B'},
{'D800','DB7F','High Surrogates'},
{'DB80','DBFF','High Private Use Surrogates'},
{'DC00','DFFF','Low Surrogates'},
{'E000','F8FF','Private Use Area'},
{'F900','FAFF','CJK Compatibility Ideographs'},
{'FB00','FB4F','Alphabetic Presentation Forms'},
{'FB50','FDFF','Arabic Presentation Forms-A'},
{'FE00','FE0F','Variation Selectors'},
{'FE10','FE1F','Vertical Forms'},
{'FE20','FE2F','Combining Half Marks'},
{'FE30','FE4F','CJK Compatibility Forms'},
{'FE50','FE6F','Small Form Variants'},
{'FE70','FEFF','Arabic Presentation Forms-B'},
{'FF00','FFEF','Halfwidth and Fullwidth Forms'},
{'FFF0','FFFF','Specials'},
{'10000','1007F','Linear B Syllabary'},
{'10080','100FF','Linear B Ideograms'},
{'10100','1013F','Aegean Numbers'},
{'10140','1018F','Ancient Greek Numbers'},
{'10190','101CF','Ancient Symbols'},
{'101D0','101FF','Phaistos Disc'},
{'10280','1029F','Lycian'},
{'102A0','102DF','Carian'},
{'102E0','102FF','Coptic Epact Numbers'},
{'10300','1032F','Old Italic'},
{'10330','1034F','Gothic'},
{'10350','1037F','Old Permic'},
{'10380','1039F','Ugaritic'},
{'103A0','103DF','Old Persian'},
{'10400','1044F','Deseret'},
{'10450','1047F','Shavian'},
{'10480','104AF','Osmanya'},
{'10500','1052F','Elbasan'},
{'10530','1056F','Caucasian Albanian'},
{'10600','1077F','Linear A'},
{'10800','1083F','Cypriot Syllabary'},
{'10840','1085F','Imperial Aramaic'},
{'10860','1087F','Palmyrene'},
{'10880','108AF','Nabataean'},
{'108E0','108FF','Hatran'},
{'10900','1091F','Phoenician'},
{'10920','1093F','Lydian'},
{'10980','1099F','Meroitic Hieroglyphs'},
{'109A0','109FF','Meroitic Cursive'},
{'10A00','10A5F','Kharoshthi'},
{'10A60','10A7F','Old South Arabian'},
{'10A80','10A9F','Old North Arabian'},
{'10AC0','10AFF','Manichaean'},
{'10B00','10B3F','Avestan'},
{'10B40','10B5F','Inscriptional Parthian'},
{'10B60','10B7F','Inscriptional Pahlavi'},
{'10B80','10BAF','Psalter Pahlavi'},
{'10C00','10C4F','Old Turkic'},
{'10C80','10CFF','Old Hungarian'},
{'10E60','10E7F','Rumi Numeral Symbols'},
{'11000','1107F','Brahmi'},
{'11080','110CF','Kaithi'},
{'110D0','110FF','Sora Sompeng'},
{'11100','1114F','Chakma'},
{'11150','1117F','Mahajani'},
{'11180','111DF','Sharada'},
{'111E0','111FF','Sinhala Archaic Numbers'},
{'11200','1124F','Khojki'},
{'11280','112AF','Multani'},
{'112B0','112FF','Khudawadi'},
{'11300','1137F','Grantha'},
{'11480','114DF','Tirhuta'},
{'11580','115FF','Siddham'},
{'11600','1165F','Modi'},
{'11680','116CF','Takri'},
{'11700','1173F','Ahom'},
{'118A0','118FF','Warang Citi'},
{'11AC0','11AFF','Pau Cin Hau'},
{'12000','123FF','Cuneiform'},
{'12400','1247F','Cuneiform Numbers and Punctuation'},
{'12480','1254F','Early Dynastic Cuneiform'},
{'13000','1342F','Egyptian Hieroglyphs'},
{'14400','1467F','Anatolian Hieroglyphs'},
{'16800','16A3F','Bamum Supplement'},
{'16A40','16A6F','Mro'},
{'16AD0','16AFF','Bassa Vah'},
{'16B00','16B8F','Pahawh Hmong'},
{'16F00','16F9F','Miao'},
{'1B000','1B0FF','Kana Supplement'},
{'1BC00','1BC9F','Duployan'},
{'1BCA0','1BCAF','Shorthand Format Controls'},
{'1D000','1D0FF','Byzantine Musical Symbols'},
{'1D100','1D1FF','Musical Symbols'},
{'1D200','1D24F','Ancient Greek Musical Notation'},
{'1D300','1D35F','Tai Xuan Jing Symbols'},
{'1D360','1D37F','Counting Rod Numerals'},
{'1D400','1D7FF','Mathematical Alphanumeric Symbols'},
{'1D800','1DAAF','Sutton SignWriting'},
{'1E800','1E8DF','Mende Kikakui'},
{'1EE00','1EEFF','Arabic Mathematical Alphabetic Symbols'},
{'1F000','1F02F','Mahjong Tiles'},
{'1F030','1F09F','Domino Tiles'},
{'1F0A0','1F0FF','Playing Cards'},
{'1F100','1F1FF','Enclosed Alphanumeric Supplement'},
{'1F200','1F2FF','Enclosed Ideographic Supplement'},
{'1F300','1F5FF','Miscellaneous Symbols and Pictographs'},
{'1F600','1F64F','Emoticons'},
{'1F650','1F67F','Ornamental Dingbats'},
{'1F680','1F6FF','Transport and Map Symbols'},
{'1F700','1F77F','Alchemical Symbols'},
{'1F780','1F7FF','Geometric Shapes Extended'},
{'1F800','1F8FF','Supplemental Arrows-C'},
{'1F900','1F9FF','Supplemental Symbols and Pictographs'},
{'20000','2A6DF','CJK Unified Ideographs Extension B'},
{'2A700','2B73F','CJK Unified Ideographs Extension C'},
{'2B740','2B81F','CJK Unified Ideographs Extension D'},
{'2B820','2CEAF','CJK Unified Ideographs Extension E'},
{'2F800','2FA1F','CJK Compatibility Ideographs Supplement'},
{'E0000','E007F','Tags'},
{'E0100','E01EF','Variation Selectors Supplement'},
{'F0000','FFFFF','Supplementary Private Use Area-A'},
{'100000','10FFFF','Supplementary Private Use Area-B'}
}


function p.test(frame) return 'asdf' end


p.strokeOrder = function(frame)
local p = {}
local func = require('Module:한자/획순').strokeOrder
function p.unicodeBlock(data)
return func(frame)
local char
end
if data == nil then
 
return ' '
local strokeOrder = require('Module:한자/획순').strokeOrder_
elseif type(data) == 'table' then
p.list = function(frame)
char = data.args[1]
local func = require('Module:한자/목록').list
return func(frame)
end
 
---@param str string
---@return string 'U+ABCD'
local function unicode(str)
return 'U+' .. ustring.upper(string.format("%x", ustring.codepoint(str)))
end
-----------------------------------------------------------------------------------------------------
local function renderVariant(text, hanja, lang)
local torender = html.create("span")
torender:addClass('variant')
:tag("span"):cssText("font-size: 11px; line-height: 1em;"):wikitext(text):done()
:tag("span"):attr("lang", lang):wikitext(hanja)
return torender
end
local function ThTd(th, td)
if td ~= '' then
local torender = html.create("tr")
torender:tag("th"):css("text-align", "left"):wikitext(th)
torender:tag("td"):wikitext(td)
return torender
end
end
local function Th(th, class)
local torender = html.create("tr")
if type(th) == 'table' then
torender:tag("th"):attr("colspan", "2"):addClass(class):css("text-align","center"):node(th)
else
else
torender:tag("th"):attr("colspan", "2"):addClass(class):css("text-align","center"):wikitext(th)
char = data
end
end
return torender
local codepoint = mw.ustring.codepoint(char)
end
local endN = #uniBlock
local function Td(td, class)
for n= 1, endN do
local torender = html.create("tr")
--local end_ = tonumber(uniBlock[n][2], 16)
if type(td) == 'table' then
if codepoint <= tonumber(uniBlock[n][2], 16) then
torender:tag("td"):attr("colspan", "2"):addClass(class):css("text-align","center"):node(td)
--local start_ = tonumber(uniBlock[n][1], 16)
else
--if start_ <= codepoint then
torender:tag("td"):attr("colspan", "2"):addClass(class):css("text-align","center"):wikitext(td)
return uniBlock[n][3]
end
--end
return torender
end
-----------------------------------------------------------------------------------------
-- 메인 상자
function p:render(lang)
local langTable = {}
if lang == "중국어" or lang == '간체자' then
        langTable = { 'simplified', 'traditional', 'japan' }
elseif lang == "일본어" or lang == '신자체' then
        langTable = { 'japan', 'traditional', 'simplified' }
else
langTable = { 'traditional', 'japan', 'simplified' }
end
local tabtitles = { ['traditional'] = '정자[韓/臺]', ['simplified'] = '간체자[中]', ['japan'] = '신자체[日]' }
    local torender = html.create("div")
    :addClass("libre hanja-info")
    :cssText('box-shadow: 0 0.5em 1em -0.125em rgb(10 10 10 / 10%), 0 0 0 1px rgb(10 10 10 / 2%); border-radius: .25rem;')
   
    local libre_tab = html.create("div"):addClass("libre-tab")
    local libre_tab_btns = html.create("div"):addClass("libre-tab-btns")
    local libre_tab_main = html.create("div"):addClass("libre-tab-main")
 
libre_tab_btns:tag("div"):addClass("libre-tab-btn libre-tab-btn-active"):wikitext(tabtitles[langTable[1]])
libre_tab_btns:tag("div"):addClass("libre-tab-btn"):wikitext(tabtitles[langTable[2]])
libre_tab_btns:tag("div"):addClass("libre-tab-btn"):wikitext(tabtitles[langTable[3]])
self:traditional(); self:japan(); self:simplified()
libre_tab_main:tag("div"):addClass("libre-tab-main-content libre-tab-main-content-active"):node(self[langTable[1]])
libre_tab_main:tag("div"):addClass("libre-tab-main-content"):node(self[langTable[2]])
libre_tab_main:tag("div"):addClass("libre-tab-main-content"):node(self[langTable[3]])
libre_tab:node(libre_tab_btns)
libre_tab:node(libre_tab_main)
torender:node(libre_tab)
return tostring(self.hanja_header)..tostring(torender)..unicodechar({ ['영어이름'] = '',
['문자'] = self.trad['한자'],})
end
 
function p:japan()
local render = html.create("table"):css("width", "100%")
 
local hanja_ = html.create("td"):attr("colspan", "2"):addClass("hanja"):css("text-align", "center")
hanja_:tag("span"):attr("lang", "ja"):wikitext(self.jap["한자"])
render:tag("tr"):node(hanja_)
 
render:node(ThTd("뜻(訓)", self.jap["뜻"]))
render:node(ThTd("훈독(訓読)", self.jap["훈독"]))
if self.jap["오음"] == '' and self.jap["한음"] == '' and self.jap["당음"] == '' and
self.jap["관용음"] == '' then
render:node(ThTd("음독(音読)", self.jap["음독"]))
else
render:node(Th("음독(音読)"))
render:node(ThTd("오음(吳音)", self.jap["오음"]))
render:node(ThTd("한음(漢音)", self.jap["한음"]))
render:node(ThTd("당음(唐音)", self.jap["당음"]))
render:node(ThTd("관용음", self.jap["관용음"]))
end
 
render:node(ThTd("[[부수]]", '[[' .. self.jap["부수"] .. ']]'))
render:node(ThTd("[[유니코드]]", unicode(self.jap["한자"])))
render:node(Td(strokeOrder(self.jap["획수"] .. "획", self.jap["한자"], "", self.jap["획순파일"], 'ja')))
self['japan'] = render
end
 
function p:simplified()
local render = html.create("table"):css("width", "100%")
 
local hanja_ = html.create("td"):attr("colspan", "2"):addClass("hanja"):css("text-align", "center")
hanja_:tag("span"):attr("lang", "zh-cn"):wikitext(self.simp["한자"])
 
render:tag("tr"):node(hanja_)
 
render:node(ThTd("뜻(訓)", self.simp["뜻"]))
render:node(ThTd("중국어 병음", self.simp["병음"]))
if self.simp["중고한어"] ~= "" then
render:node(ThTd("중고한어", self.simp["중고한어"]))
end
render:node(ThTd("[[부수]]", '[[' .. self.simp["부수"] .. ']]'))
render:node(ThTd("[[유니코드]]", unicode(self.simp["한자"])))
render:node(Td(strokeOrder(self.simp["획수"] .. "획", self.simp["한자"], "", self.simp["획순파일"])))
self['simplified'] = render
end
 
function p:traditional()
local render = html.create("table"):css("width", "100%")
local hanja_text = html.create("td"):attr("colspan", "2"):addClass("hanja"):css("text-align", "center")
hanja_text:tag("span"):attr("lang", "ko"):wikitext(self.trad["한자"])
 
if self.trad["대만식"] ~= "" then
hanja_text:node(renderVariant("대만", self.trad["대만식"], "zh-tw"))
end
render:tag("tr"):node(hanja_text)
 
render:node(ThTd("뜻(訓)", self.trad["뜻"]))
render:node(ThTd("소리(音)", self.trad["소리"]))
render:node(ThTd("[[부수]]", '[[' .. self.trad["부수"] .. ']]'))
render:node(ThTd("[[유니코드]]", unicode(self.trad["한자"])))
 
local bool
for k in pairs(self.trad["이체자"]) do
if self.trad["이체자"][k] ~= "" then
bool = true
break
end
end
 
if bool == true then
local hanja_variant = html.create("tr"):tag("th"):css("text-align","left"):wikitext("이체자")
local hanja_variants = html.create("span"):addClass('variants')
 
local i = 1
while  i < 6 do
if self.trad["이체자"][i] ~= '' then
hanja_variants:node(renderVariant(self.trad["이체자 이름"][i],self.trad["이체자"][i], "ko"))
end
i = i + 1
end
hanja_variant:tag("td"):node(hanja_variants)
render:node(hanja_variant)
end
render:node(Td(strokeOrder(self.trad["획수"] .. "획", self.trad["한자"], "", self.trad["획순파일"])))
 
self['traditional'] = render
end
 
function p.main(frame) return p:main_(frame) end
function p:main_(frame)
local args = getArgs(frame)
local css = args['css']
 
self.hanja_header = html.create('div'):addClass("hanja-info-head")
if args['모드'] == '한자만' then
self.hanja_header:tag('span'):addClass('hanja')
:wikitext('[[' ..args["한자"] ..']]' .. css)
return self.hanja_header
 
elseif args['모드'] == '신자체만' or args['모드'] == '일본어만' then
self.hanja_header:tag('span'):addClass('hanja'):attr('lang', 'ja'):css('font-family', 'Noto Serif CJK KR, serif')
:wikitext('[[' ..args['신자체'] ..']]' .. css)
return self.hanja_header
 
elseif args['모드'] == '훈음' then
local hanja, mean, sound
if args['한자 정보2'] then
hanja = args[1]; mean = args[2]; sound = args[3]
else
hanja = args['한자'] ; mean = args['뜻'] ; sound = args['소리']
end
self.hanja_header:tag('span'):addClass('hanja'):wikitext('[[' ..hanja ..']]')
if sound == " " then
self.hanja_header:tag('span'):addClass('mean'):wikitext(' ' .. mean)
else
self.hanja_header:tag('span'):addClass('mean'):wikitext(ustring.format(' %s <i>〔</i>%s</i>〕</i>', mean, sound))
end
self.hanja_header:wikitext(css)
return self.hanja_header
 
elseif args['모드'] == '풀이' then
return ''
end
 
self.trad = {
["한자"] = args["한자"] or " ",
["뜻"] = args["뜻"] or " ",
["소리"] = args["소리"] or '-',
["부수"] = args["부수"] or " ",
["획수"] = args["획수"] or " ",
["획순파일"] = args["획순파일"],
["대만식"] = args["정체자"] or args["대만식"] or "",
["이체자"] = {
args["약자"] or "", args["속자"] or "", args['본자'] or "",
args["이체자"] or args["이체자1"] or "",
args["이체자2"] or "", args["이체자3"] or "",
args["이체자4"] or "", args["이체자5"] or ""
},
["이체자 이름"] = {
"약자", "속자", "본자", "&nbsp;", "&nbsp;", "&nbsp;",
"&nbsp;", "&nbsp;"
}
}
self.jap = {
["한자"] = args["신자체"] or args["한자"] or " ",
["뜻"] = args["뜻"] or " ",
["훈독"] = args["훈독"] or "",
["음독"] = args["음독"] or "",
["오음"] = args["오음"] or "",
["한음"] = args["한음"] or "",
["당음"] = args["당음"] or "",
["관용음"] = args["관용음"] or "",
["획수"] = args["신자체 획수"] or args["획수"] or " ",
["획순파일"] = args["신자체 획순파일"] or
args["획순파일"],
["부수"] = args["신자체 부수"] or args["부수"] or " "
}
self.simp = {
["한자"] = args["간체자"] or args["한자"] or " ",
["뜻"] = args["뜻"] or " ",
["병음"] = args["병음"] or " ",
["중고한어"] = args["중고한어"] or "",
["획수"] = args["간체자 획수"] or args["획수"] or " ",
["획순파일"] = args["간체자 획순파일"] or
args["획순파일"],
["부수"] = args["간체자 부수"] or args["부수"] or " "
}
local currentPage = title_.getCurrentTitle().prefixedText
local index = ustring.find(currentPage, '/') or 0
local subPage
local rootPage
subPage = ustring.sub(currentPage, index+1, -1)
rootPage = ustring.sub(currentPage, 1, index-1)
 
self.hanjalink = ustring.codepoint(self.trad["한자"]); self.unicode = unicode(self.trad["한자"])
if self.hanjalink > 65535 then --유니코드 U+10000 초과
self.hanja_header:tag('span'):addClass('hanja'):wikitext(ustring.format('[[%s|%s]]', self.unicode, self.trad["한자"]))
else --아닐 때
self.hanja_header:tag('span'):addClass('hanja'):wikitext(ustring.format('[[%s]]', self.trad["한자"]))
end
if rootPage == '시리즈:리브레 한자사전' then
if self.trad["부수"] == subPage then -- 제부수일 때
self.hanja_header:wikitext(ustring.format('[[분류:%s| ]]', self.trad["부수"]))
else -- 제부수가 아닐 때
self.hanja_header:wikitext(ustring.format('[[분류:%s|-]]', self.trad["부수"]))
end
    if not args['상위문서x'] then self.hanja_header:wikitext(ustring.format('[[%s]]<br/>', rootPage)) end
if self.trad["소리"] == '-' or args['미분류'] then -- 소리가 없을 때
self.hanja_header:wikitext('[[분류:한자/문자|-]]')
else -- 소리 있을 때
self.hanja_header:wikitext(ustring.format('[[분류:한자/문자|%s]]', self.trad['소리']))
end
if self.hanjalink > 65535 then --유니코드 U+10000 초과
        self.hanja_header:wikitext(ustring.format('[[분류:%s| ]]', self.unicode))
else --아닐 때
          self.hanja_header:wikitext(ustring.format('[[분류:%s| ]]', self.trad["한자"]))
end
end
end
end
self.hanja_header:tag('span'):addClass('mean'):wikitext(ustring.format(' %s <i>〔</i>%s</i>〕</i>__NOTOC__', self.trad["뜻"], self.trad["소리"]) ..css)
return self:render(args["모드"])
end
end
------------------------------------------------------------------------------------
-- 함수 호출 축약형
p._ = p.unicodeBlock
return p
return p

2021년 12월 24일 (금) 00:55 기준 최신판

설명문서 [편집] [역사] [새로고침]

문자를 입력하면 유니코드 블록 위치가 출력됩니다.

Basic Latin

Basic Latin

Hangul Syllables

Greek and Coptic

{{#invoke:unicodeBlock|unicodeBlock|1}}
{{#invoke:unicodeBlock|unicodeBlock|Z}}
{{#invoke:unicodeBlock|_|한}}
{{#invoke:unicodeBlock|_|Σ}}
연습장이나 사용자 문서에서 틀의 사용이나 수정을 연습할 수 있습니다.
분류는 /설명문서에 넣어주세요.

local uniBlock = {
	{'0000','007F','Basic Latin'},
	{'0080','00FF','Latin-1 Supplement'},
	{'0100','017F','Latin Extended-A'},
	{'0180','024F','Latin Extended-B'},
	{'0250','02AF','IPA Extensions'},
	{'02B0','02FF','Spacing Modifier Letters'},
	{'0300','036F','Combining Diacritical Marks'},
	{'0370','03FF','Greek and Coptic'},
	{'0400','04FF','Cyrillic'},
	{'0500','052F','Cyrillic Supplement'},
	{'0530','058F','Armenian'},
	{'0590','05FF','Hebrew'},
	{'0600','06FF','Arabic'},
	{'0700','074F','Syriac'},
	{'0750','077F','Arabic Supplement'},
	{'0780','07BF','Thaana'},
	{'07C0','07FF','NKo'},
	{'0800','083F','Samaritan'},
	{'0840','085F','Mandaic'},
	{'08A0','08FF','Arabic Extended-A'},
	{'0900','097F','Devanagari'},
	{'0980','09FF','Bengali'},
	{'0A00','0A7F','Gurmukhi'},
	{'0A80','0AFF','Gujarati'},
	{'0B00','0B7F','Oriya'},
	{'0B80','0BFF','Tamil'},
	{'0C00','0C7F','Telugu'},
	{'0C80','0CFF','Kannada'},
	{'0D00','0D7F','Malayalam'},
	{'0D80','0DFF','Sinhala'},
	{'0E00','0E7F','Thai'},
	{'0E80','0EFF','Lao'},
	{'0F00','0FFF','Tibetan'},
	{'1000','109F','Myanmar'},
	{'10A0','10FF','Georgian'},
	{'1100','11FF','Hangul Jamo'},
	{'1200','137F','Ethiopic'},
	{'1380','139F','Ethiopic Supplement'},
	{'13A0','13FF','Cherokee'},
	{'1400','167F','Unified Canadian Aboriginal Syllabics'},
	{'1680','169F','Ogham'},
	{'16A0','16FF','Runic'},
	{'1700','171F','Tagalog'},
	{'1720','173F','Hanunoo'},
	{'1740','175F','Buhid'},
	{'1760','177F','Tagbanwa'},
	{'1780','17FF','Khmer'},
	{'1800','18AF','Mongolian'},
	{'18B0','18FF','Unified Canadian Aboriginal Syllabics Extended'},
	{'1900','194F','Limbu'},
	{'1950','197F','Tai Le'},
	{'1980','19DF','New Tai Lue'},
	{'19E0','19FF','Khmer Symbols'},
	{'1A00','1A1F','Buginese'},
	{'1A20','1AAF','Tai Tham'},
	{'1AB0','1AFF','Combining Diacritical Marks Extended'},
	{'1B00','1B7F','Balinese'},
	{'1B80','1BBF','Sundanese'},
	{'1BC0','1BFF','Batak'},
	{'1C00','1C4F','Lepcha'},
	{'1C50','1C7F','Ol Chiki'},
	{'1CC0','1CCF','Sundanese Supplement'},
	{'1CD0','1CFF','Vedic Extensions'},
	{'1D00','1D7F','Phonetic Extensions'},
	{'1D80','1DBF','Phonetic Extensions Supplement'},
	{'1DC0','1DFF','Combining Diacritical Marks Supplement'},
	{'1E00','1EFF','Latin Extended Additional'},
	{'1F00','1FFF','Greek Extended'},
	{'2000','206F','General Punctuation'},
	{'2070','209F','Superscripts and Subscripts'},
	{'20A0','20CF','Currency Symbols'},
	{'20D0','20FF','Combining Diacritical Marks for Symbols'},
	{'2100','214F','Letterlike Symbols'},
	{'2150','218F','Number Forms'},
	{'2190','21FF','Arrows'},
	{'2200','22FF','Mathematical Operators'},
	{'2300','23FF','Miscellaneous Technical'},
	{'2400','243F','Control Pictures'},
	{'2440','245F','Optical Character Recognition'},
	{'2460','24FF','Enclosed Alphanumerics'},
	{'2500','257F','Box Drawing'},
	{'2580','259F','Block Elements'},
	{'25A0','25FF','Geometric Shapes'},
	{'2600','26FF','Miscellaneous Symbols'},
	{'2700','27BF','Dingbats'},
	{'27C0','27EF','Miscellaneous Mathematical Symbols-A'},
	{'27F0','27FF','Supplemental Arrows-A'},
	{'2800','28FF','Braille Patterns'},
	{'2900','297F','Supplemental Arrows-B'},
	{'2980','29FF','Miscellaneous Mathematical Symbols-B'},
	{'2A00','2AFF','Supplemental Mathematical Operators'},
	{'2B00','2BFF','Miscellaneous Symbols and Arrows'},
	{'2C00','2C5F','Glagolitic'},
	{'2C60','2C7F','Latin Extended-C'},
	{'2C80','2CFF','Coptic'},
	{'2D00','2D2F','Georgian Supplement'},
	{'2D30','2D7F','Tifinagh'},
	{'2D80','2DDF','Ethiopic Extended'},
	{'2DE0','2DFF','Cyrillic Extended-A'},
	{'2E00','2E7F','Supplemental Punctuation'},
	{'2E80','2EFF','CJK Radicals Supplement'},
	{'2F00','2FDF','Kangxi Radicals'},
	{'2FF0','2FFF','Ideographic Description Characters'},
	{'3000','303F','CJK Symbols and Punctuation'},
	{'3040','309F','Hiragana'},
	{'30A0','30FF','Katakana'},
	{'3100','312F','Bopomofo'},
	{'3130','318F','Hangul Compatibility Jamo'},
	{'3190','319F','Kanbun'},
	{'31A0','31BF','Bopomofo Extended'},
	{'31C0','31EF','CJK Strokes'},
	{'31F0','31FF','Katakana Phonetic Extensions'},
	{'3200','32FF','Enclosed CJK Letters and Months'},
	{'3300','33FF','CJK Compatibility'},
	{'3400','4DBF','CJK Unified Ideographs Extension A'},
	{'4DC0','4DFF','Yijing Hexagram Symbols'},
	{'4E00','9FFF','CJK Unified Ideographs'},
	{'A000','A48F','Yi Syllables'},
	{'A490','A4CF','Yi Radicals'},
	{'A4D0','A4FF','Lisu'},
	{'A500','A63F','Vai'},
	{'A640','A69F','Cyrillic Extended-B'},
	{'A6A0','A6FF','Bamum'},
	{'A700','A71F','Modifier Tone Letters'},
	{'A720','A7FF','Latin Extended-D'},
	{'A800','A82F','Syloti Nagri'},
	{'A830','A83F','Common Indic Number Forms'},
	{'A840','A87F','Phags-pa'},
	{'A880','A8DF','Saurashtra'},
	{'A8E0','A8FF','Devanagari Extended'},
	{'A900','A92F','Kayah Li'},
	{'A930','A95F','Rejang'},
	{'A960','A97F','Hangul Jamo Extended-A'},
	{'A980','A9DF','Javanese'},
	{'A9E0','A9FF','Myanmar Extended-B'},
	{'AA00','AA5F','Cham'},
	{'AA60','AA7F','Myanmar Extended-A'},
	{'AA80','AADF','Tai Viet'},
	{'AAE0','AAFF','Meetei Mayek Extensions'},
	{'AB00','AB2F','Ethiopic Extended-A'},
	{'AB30','AB6F','Latin Extended-E'},
	{'AB70','ABBF','Cherokee Supplement'},
	{'ABC0','ABFF','Meetei Mayek'},
	{'AC00','D7AF','Hangul Syllables'},
	{'D7B0','D7FF','Hangul Jamo Extended-B'},
	{'D800','DB7F','High Surrogates'},
	{'DB80','DBFF','High Private Use Surrogates'},
	{'DC00','DFFF','Low Surrogates'},
	{'E000','F8FF','Private Use Area'},
	{'F900','FAFF','CJK Compatibility Ideographs'},
	{'FB00','FB4F','Alphabetic Presentation Forms'},
	{'FB50','FDFF','Arabic Presentation Forms-A'},
	{'FE00','FE0F','Variation Selectors'},
	{'FE10','FE1F','Vertical Forms'},
	{'FE20','FE2F','Combining Half Marks'},
	{'FE30','FE4F','CJK Compatibility Forms'},
	{'FE50','FE6F','Small Form Variants'},
	{'FE70','FEFF','Arabic Presentation Forms-B'},
	{'FF00','FFEF','Halfwidth and Fullwidth Forms'},
	{'FFF0','FFFF','Specials'},
	{'10000','1007F','Linear B Syllabary'},
	{'10080','100FF','Linear B Ideograms'},
	{'10100','1013F','Aegean Numbers'},
	{'10140','1018F','Ancient Greek Numbers'},
	{'10190','101CF','Ancient Symbols'},
	{'101D0','101FF','Phaistos Disc'},
	{'10280','1029F','Lycian'},
	{'102A0','102DF','Carian'},
	{'102E0','102FF','Coptic Epact Numbers'},
	{'10300','1032F','Old Italic'},
	{'10330','1034F','Gothic'},
	{'10350','1037F','Old Permic'},
	{'10380','1039F','Ugaritic'},
	{'103A0','103DF','Old Persian'},
	{'10400','1044F','Deseret'},
	{'10450','1047F','Shavian'},
	{'10480','104AF','Osmanya'},
	{'10500','1052F','Elbasan'},
	{'10530','1056F','Caucasian Albanian'},
	{'10600','1077F','Linear A'},
	{'10800','1083F','Cypriot Syllabary'},
	{'10840','1085F','Imperial Aramaic'},
	{'10860','1087F','Palmyrene'},
	{'10880','108AF','Nabataean'},
	{'108E0','108FF','Hatran'},
	{'10900','1091F','Phoenician'},
	{'10920','1093F','Lydian'},
	{'10980','1099F','Meroitic Hieroglyphs'},
	{'109A0','109FF','Meroitic Cursive'},
	{'10A00','10A5F','Kharoshthi'},
	{'10A60','10A7F','Old South Arabian'},
	{'10A80','10A9F','Old North Arabian'},
	{'10AC0','10AFF','Manichaean'},
	{'10B00','10B3F','Avestan'},
	{'10B40','10B5F','Inscriptional Parthian'},
	{'10B60','10B7F','Inscriptional Pahlavi'},
	{'10B80','10BAF','Psalter Pahlavi'},
	{'10C00','10C4F','Old Turkic'},
	{'10C80','10CFF','Old Hungarian'},
	{'10E60','10E7F','Rumi Numeral Symbols'},
	{'11000','1107F','Brahmi'},
	{'11080','110CF','Kaithi'},
	{'110D0','110FF','Sora Sompeng'},
	{'11100','1114F','Chakma'},
	{'11150','1117F','Mahajani'},
	{'11180','111DF','Sharada'},
	{'111E0','111FF','Sinhala Archaic Numbers'},
	{'11200','1124F','Khojki'},
	{'11280','112AF','Multani'},
	{'112B0','112FF','Khudawadi'},
	{'11300','1137F','Grantha'},
	{'11480','114DF','Tirhuta'},
	{'11580','115FF','Siddham'},
	{'11600','1165F','Modi'},
	{'11680','116CF','Takri'},
	{'11700','1173F','Ahom'},
	{'118A0','118FF','Warang Citi'},
	{'11AC0','11AFF','Pau Cin Hau'},
	{'12000','123FF','Cuneiform'},
	{'12400','1247F','Cuneiform Numbers and Punctuation'},
	{'12480','1254F','Early Dynastic Cuneiform'},
	{'13000','1342F','Egyptian Hieroglyphs'},
	{'14400','1467F','Anatolian Hieroglyphs'},
	{'16800','16A3F','Bamum Supplement'},
	{'16A40','16A6F','Mro'},
	{'16AD0','16AFF','Bassa Vah'},
	{'16B00','16B8F','Pahawh Hmong'},
	{'16F00','16F9F','Miao'},
	{'1B000','1B0FF','Kana Supplement'},
	{'1BC00','1BC9F','Duployan'},
	{'1BCA0','1BCAF','Shorthand Format Controls'},
	{'1D000','1D0FF','Byzantine Musical Symbols'},
	{'1D100','1D1FF','Musical Symbols'},
	{'1D200','1D24F','Ancient Greek Musical Notation'},
	{'1D300','1D35F','Tai Xuan Jing Symbols'},
	{'1D360','1D37F','Counting Rod Numerals'},
	{'1D400','1D7FF','Mathematical Alphanumeric Symbols'},
	{'1D800','1DAAF','Sutton SignWriting'},
	{'1E800','1E8DF','Mende Kikakui'},
	{'1EE00','1EEFF','Arabic Mathematical Alphabetic Symbols'},
	{'1F000','1F02F','Mahjong Tiles'},
	{'1F030','1F09F','Domino Tiles'},
	{'1F0A0','1F0FF','Playing Cards'},
	{'1F100','1F1FF','Enclosed Alphanumeric Supplement'},
	{'1F200','1F2FF','Enclosed Ideographic Supplement'},
	{'1F300','1F5FF','Miscellaneous Symbols and Pictographs'},
	{'1F600','1F64F','Emoticons'},
	{'1F650','1F67F','Ornamental Dingbats'},
	{'1F680','1F6FF','Transport and Map Symbols'},
	{'1F700','1F77F','Alchemical Symbols'},
	{'1F780','1F7FF','Geometric Shapes Extended'},
	{'1F800','1F8FF','Supplemental Arrows-C'},
	{'1F900','1F9FF','Supplemental Symbols and Pictographs'},
	{'20000','2A6DF','CJK Unified Ideographs Extension B'},
	{'2A700','2B73F','CJK Unified Ideographs Extension C'},
	{'2B740','2B81F','CJK Unified Ideographs Extension D'},
	{'2B820','2CEAF','CJK Unified Ideographs Extension E'},
	{'2F800','2FA1F','CJK Compatibility Ideographs Supplement'},
	{'E0000','E007F','Tags'},
	{'E0100','E01EF','Variation Selectors Supplement'},
	{'F0000','FFFFF','Supplementary Private Use Area-A'},
	{'100000','10FFFF','Supplementary Private Use Area-B'}
}


local p = {}
function p.unicodeBlock(data)
	local char
	if data == nil then
		return ' '
	elseif type(data) == 'table' then
		 char = data.args[1]
	else
		char = data
	end
	local codepoint = mw.ustring.codepoint(char)
	local endN = #uniBlock
	for n= 1, endN do
		--local end_ = tonumber(uniBlock[n][2], 16)
		if codepoint <= tonumber(uniBlock[n][2], 16) then
			--local start_ = tonumber(uniBlock[n][1], 16)
			--if start_ <= codepoint then
				return uniBlock[n][3]
			--end
		end
	end
end
-- 함수 호출 축약형
p._ = p.unicodeBlock
return p