local range = {}

range.kanji =
	'一-鿿' .. -- CJK Unified Ideographs
	'⺀-⿟' .. -- CJK Radicals Supplement + Kangxi Radicals
	'㐀-䶿' .. -- CJK Unified Ideographs Extension A
	'豈-﫿' .. -- CJK Compatibility Ideographs
	'𠀀-𮿯' .. -- CJK Unified Ideographs Extension B-F + CJK Compatibility Ideographs Supplement
	'𰀀-𲎯' -- CJK Unified Ideographs Extension G-H

range.kana_overlap =
	'゙-゜' .. -- Hiragana
	'ー' -- Katakana

local hiragana_exclusive =
	'ぁ-ゖゝゞ' .. -- Hiragana
	'𛀁𛀆𛄟' .. -- Kana Supplement + Kana Extended-A
	'𛄲𛅐-𛅒' -- Small Kana Extension
	
range.hiragana = range.kana_overlap .. hiragana_exclusive

local katakana_exclusive =
	'ァ-ヺヽヾ' .. -- Katakana
	'ㇰ-ㇿ' .. -- Katakana Phonetic Extensions
	'ヲ-゚' .. -- Halfwidth and Fullwidth Forms
	'𚿰-𚿾' .. -- Kana Extended-B
	'𛀀𛄠-𛄢' .. -- Kana Supplement + Kana Extended-A
	'𛅕𛅤-𛅧' -- Small Kana Extension
	
range.katakana = range.kana_overlap .. katakana_exclusive

range.hentaigana =
	'𛀑-𛄞' -- Kana Supplement + Kana Extended-A

range.kana = range.kana_overlap .. hiragana_exclusive .. katakana_exclusive .. range.hentaigana

range.ideograph =
	'〃々-〇〱-〵〻〼' .. -- CJK Symbols and Punctuation
	'㈠-㉟㊀-㋿' .. -- Enclosed CJK Letters and Months
	'㍘-㏿' .. -- CJK Compatibility
	'🈂-🋿' -- Enclosed Ideographic Supplement
	
range.kana_graph =
	'ゟヿ' .. -- Hiragana + Katakana
	'㌀-㍗' .. -- CJK Compatibility
	'🈀🈁' -- Enclosed Ideographic Supplement

range.punctuation =
	' -。〈-】〔-〟〽' .. -- CJK Symbols and Punctuation
	'゠・' .. -- Katakana
	'!-/:-@[-`{-・¢-○' -- Halfwidth and Fullwidth Forms

range.latin = require("Module:scripts").getByCode("Latnx"):getCharacters()

range.numbers =
	'0-9' .. -- Basic Latin
	'0-9' -- Halfwidth and Fullwidth Forms

return range