module ProjectM36.WCWidth where import Data.Set.Range import Data.Char wIDEEASTASIAN :: RangeSet Int wIDEEASTASIAN :: RangeSet Int wIDEEASTASIAN = forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b foldr forall a. (Ord a, Enum a) => (a, a) -> RangeSet a -> RangeSet a insertRange forall a. RangeSet a empty [ (Int 0x1100, Int 0x115f), -- Hangul Choseong Kiyeok ..Hangul Choseong Filler (Int 0x231a, Int 0x231b), -- Watch ..Hourglass (Int 0x2329, Int 0x232a), -- Left-pointing Angle Brac..Right-pointing Angle Bra (Int 0x23e9, Int 0x23ec), -- Black Right-pointing Dou..Black Down-pointing Doub (Int 0x23f0, Int 0x23f0), -- Alarm Clock ..Alarm Clock (Int 0x23f3, Int 0x23f3), -- Hourglass With Flowing S..Hourglass With Flowing S (Int 0x25fd, Int 0x25fe), -- White Medium Small Squar..Black Medium Small Squar (Int 0x2614, Int 0x2615), -- Umbrella With Rain Drops..Hot Beverage (Int 0x2648, Int 0x2653), -- Aries ..Pisces (Int 0x267f, Int 0x267f), -- Wheelchair Symbol ..Wheelchair Symbol (Int 0x2693, Int 0x2693), -- Anchor ..Anchor (Int 0x26a1, Int 0x26a1), -- High Voltage Sign ..High Voltage Sign (Int 0x26aa, Int 0x26ab), -- Medium White Circle ..Medium Black Circle (Int 0x26bd, Int 0x26be), -- Soccer Ball ..Baseball (Int 0x26c4, Int 0x26c5), -- Snowman Without Snow ..Sun Behind Cloud (Int 0x26ce, Int 0x26ce), -- Ophiuchus ..Ophiuchus (Int 0x26d4, Int 0x26d4), -- No Entry ..No Entry (Int 0x26ea, Int 0x26ea), -- Church ..Church (Int 0x26f2, Int 0x26f3), -- Fountain ..Flag In Hole (Int 0x26f5, Int 0x26f5), -- Sailboat ..Sailboat (Int 0x26fa, Int 0x26fa), -- Tent ..Tent (Int 0x26fd, Int 0x26fd), -- Fuel Pump ..Fuel Pump (Int 0x2705, Int 0x2705), -- White Heavy Check Mark ..White Heavy Check Mark (Int 0x270a, Int 0x270b), -- Raised Fist ..Raised Hand (Int 0x2728, Int 0x2728), -- Sparkles ..Sparkles (Int 0x274c, Int 0x274c), -- Cross Mark ..Cross Mark (Int 0x274e, Int 0x274e), -- Negative Squared Cross M..Negative Squared Cross M (Int 0x2753, Int 0x2755), -- Black Question Mark Orna..White Exclamation Mark O (Int 0x2757, Int 0x2757), -- Heavy Exclamation Mark S..Heavy Exclamation Mark S (Int 0x2795, Int 0x2797), -- Heavy Plus Sign ..Heavy Division Sign (Int 0x27b0, Int 0x27b0), -- Curly Loop ..Curly Loop (Int 0x27bf, Int 0x27bf), -- Double Curly Loop ..Double Curly Loop (Int 0x2b1b, Int 0x2b1c), -- Black Large Square ..White Large Square (Int 0x2b50, Int 0x2b50), -- White Medium Star ..White Medium Star (Int 0x2b55, Int 0x2b55), -- Heavy Large Circle ..Heavy Large Circle (Int 0x2e80, Int 0x2e99), -- Cjk Radical Repeat ..Cjk Radical Rap (Int 0x2e9b, Int 0x2ef3), -- Cjk Radical Choke ..Cjk Radical C-simplified (Int 0x2f00, Int 0x2fd5), -- Kangxi Radical One ..Kangxi Radical Flute (Int 0x2ff0, Int 0x2ffb), -- Ideographic Description ..Ideographic Description (Int 0x3000, Int 0x303e), -- Ideographic Space ..Ideographic Variation In (Int 0x3041, Int 0x3096), -- Hiragana Letter Small A ..Hiragana Letter Small Ke (Int 0x3099, Int 0x30ff), -- Combining Katakana-hirag..Katakana Digraph Koto (Int 0x3105, Int 0x312d), -- Bopomofo Letter B ..Bopomofo Letter Ih (Int 0x3131, Int 0x318e), -- Hangul Letter Kiyeok ..Hangul Letter Araeae (Int 0x3190, Int 0x31ba), -- Ideographic Annotation L..Bopomofo Letter Zy (Int 0x31c0, Int 0x31e3), -- Cjk Stroke T ..Cjk Stroke Q (Int 0x31f0, Int 0x321e), -- Katakana Letter Small Ku..Parenthesized Korean Cha (Int 0x3220, Int 0x3247), -- Parenthesized Ideograph ..Circled Ideograph Koto (Int 0x3250, Int 0x32fe), -- Partnership Sign ..Circled Katakana Wo (Int 0x3300, Int 0x4dbf), -- Square Apaato .. (Int 0x4e00, Int 0xa48c), -- Cjk Unified Ideograph-4e..Yi Syllable Yyr (Int 0xa490, Int 0xa4c6), -- Yi Radical Qot ..Yi Radical Ke (Int 0xa960, Int 0xa97c), -- Hangul Choseong Tikeut-m..Hangul Choseong Ssangyeo (Int 0xac00, Int 0xd7a3), -- Hangul Syllable Ga ..Hangul Syllable Hih (Int 0xf900, Int 0xfaff), -- Cjk Compatibility Ideogr.. (Int 0xfe10, Int 0xfe19), -- Presentation Form For Ve..Presentation Form For Ve (Int 0xfe30, Int 0xfe52), -- Presentation Form For Ve..Small Full Stop (Int 0xfe54, Int 0xfe66), -- Small Semicolon ..Small Equals Sign (Int 0xfe68, Int 0xfe6b), -- Small Reverse Solidus ..Small Commercial At (Int 0xff01, Int 0xff60), -- Fullwidth Exclamation Ma..Fullwidth Right White Pa (Int 0xffe0, Int 0xffe6), -- Fullwidth Cent Sign ..Fullwidth Won Sign (Int 0x16fe0, Int 0x16fe0), -- (nil) .. (Int 0x17000, Int 0x187ec), -- (nil) .. (Int 0x18800, Int 0x18af2), -- (nil) .. (Int 0x1b000, Int 0x1b001), -- Katakana Letter Archaic ..Hiragana Letter Archaic (Int 0x1f004, Int 0x1f004), -- Mahjong Tile Red Dragon ..Mahjong Tile Red Dragon (Int 0x1f0cf, Int 0x1f0cf), -- Playing Card Black Joker..Playing Card Black Joker (Int 0x1f18e, Int 0x1f18e), -- Negative Squared Ab ..Negative Squared Ab (Int 0x1f191, Int 0x1f19a), -- Squared Cl ..Squared Vs (Int 0x1f200, Int 0x1f202), -- Square Hiragana Hoka ..Squared Katakana Sa (Int 0x1f210, Int 0x1f23b), -- Squared Cjk Unified Ideo.. (Int 0x1f240, Int 0x1f248), -- Tortoise Shell Bracketed..Tortoise Shell Bracketed (Int 0x1f250, Int 0x1f251), -- Circled Ideograph Advant..Circled Ideograph Accept (Int 0x1f300, Int 0x1f320), -- Cyclone ..Shooting Star (Int 0x1f32d, Int 0x1f335), -- Hot Dog ..Cactus (Int 0x1f337, Int 0x1f37c), -- Tulip ..Baby Bottle (Int 0x1f37e, Int 0x1f393), -- Bottle With Popping Cork..Graduation Cap (Int 0x1f3a0, Int 0x1f3ca), -- Carousel Horse ..Swimmer (Int 0x1f3cf, Int 0x1f3d3), -- Cricket Bat And Ball ..Table Tennis Paddle And (Int 0x1f3e0, Int 0x1f3f0), -- House Building ..European Castle (Int 0x1f3f4, Int 0x1f3f4), -- Waving Black Flag ..Waving Black Flag (Int 0x1f3f8, Int 0x1f43e), -- Badminton Racquet And Sh..Paw Prints (Int 0x1f440, Int 0x1f440), -- Eyes ..Eyes (Int 0x1f442, Int 0x1f4fc), -- Ear ..Videocassette (Int 0x1f4ff, Int 0x1f53d), -- Prayer Beads ..Down-pointing Small Red (Int 0x1f54b, Int 0x1f54e), -- Kaaba ..Menorah With Nine Branch (Int 0x1f550, Int 0x1f567), -- Clock Face One Oclock ..Clock Face Twelve-thirty (Int 0x1f57a, Int 0x1f57a), -- (nil) .. (Int 0x1f595, Int 0x1f596), -- Reversed Hand With Middl..Raised Hand With Part Be (Int 0x1f5a4, Int 0x1f5a4), -- (nil) .. (Int 0x1f5fb, Int 0x1f64f), -- Mount Fuji ..Person With Folded Hands (Int 0x1f680, Int 0x1f6c5), -- Rocket ..Left Luggage (Int 0x1f6cc, Int 0x1f6cc), -- Sleeping Accommodation ..Sleeping Accommodation (Int 0x1f6d0, Int 0x1f6d2), -- Place Of Worship .. (Int 0x1f6eb, Int 0x1f6ec), -- Airplane Departure ..Airplane Arriving (Int 0x1f6f4, Int 0x1f6f6), -- (nil) .. (Int 0x1f910, Int 0x1f91e), -- Zipper-mouth Face .. (Int 0x1f920, Int 0x1f927), -- (nil) .. (Int 0x1f930, Int 0x1f930), -- (nil) .. (Int 0x1f933, Int 0x1f93e), -- (nil) .. (Int 0x1f940, Int 0x1f94b), -- (nil) .. (Int 0x1f950, Int 0x1f95e), -- (nil) .. (Int 0x1f980, Int 0x1f991), -- Crab .. (Int 0x1f9c0, Int 0x1f9c0), -- Cheese Wedge ..Cheese Wedge (Int 0x20000, Int 0x2fffd), -- Cjk Unified Ideograph-20.. (Int 0x30000, Int 0x3fffd) -- (nil) .. ] zEROWIDTH :: RangeSet Int zEROWIDTH :: RangeSet Int zEROWIDTH = forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b foldr forall a. (Ord a, Enum a) => (a, a) -> RangeSet a -> RangeSet a insertRange forall a. RangeSet a empty [ (Int 0x0300, Int 0x036f), -- Combining Grave Accent ..Combining Latin Small Le (Int 0x0483, Int 0x0489), -- Combining Cyrillic Titlo..Combining Cyrillic Milli (Int 0x0591, Int 0x05bd), -- Hebrew Accent Etnahta ..Hebrew Point Meteg (Int 0x05bf, Int 0x05bf), -- Hebrew Point Rafe ..Hebrew Point Rafe (Int 0x05c1, Int 0x05c2), -- Hebrew Point Shin Dot ..Hebrew Point Sin Dot (Int 0x05c4, Int 0x05c5), -- Hebrew Mark Upper Dot ..Hebrew Mark Lower Dot (Int 0x05c7, Int 0x05c7), -- Hebrew Point Qamats Qata..Hebrew Point Qamats Qata (Int 0x0610, Int 0x061a), -- Arabic Sign Sallallahou ..Arabic Small Kasra (Int 0x064b, Int 0x065f), -- Arabic Fathatan ..Arabic Wavy Hamza Below (Int 0x0670, Int 0x0670), -- Arabic Letter Superscrip..Arabic Letter Superscrip (Int 0x06d6, Int 0x06dc), -- Arabic Small High Ligatu..Arabic Small High Seen (Int 0x06df, Int 0x06e4), -- Arabic Small High Rounde..Arabic Small High Madda (Int 0x06e7, Int 0x06e8), -- Arabic Small High Yeh ..Arabic Small High Noon (Int 0x06ea, Int 0x06ed), -- Arabic Empty Centre Low ..Arabic Small Low Meem (Int 0x0711, Int 0x0711), -- Syriac Letter Superscrip..Syriac Letter Superscrip (Int 0x0730, Int 0x074a), -- Syriac Pthaha Above ..Syriac Barrekh (Int 0x07a6, Int 0x07b0), -- Thaana Abafili ..Thaana Sukun (Int 0x07eb, Int 0x07f3), -- Nko Combining Short High..Nko Combining Double Dot (Int 0x0816, Int 0x0819), -- Samaritan Mark In ..Samaritan Mark Dagesh (Int 0x081b, Int 0x0823), -- Samaritan Mark Epentheti..Samaritan Vowel Sign A (Int 0x0825, Int 0x0827), -- Samaritan Vowel Sign Sho..Samaritan Vowel Sign U (Int 0x0829, Int 0x082d), -- Samaritan Vowel Sign Lon..Samaritan Mark Nequdaa (Int 0x0859, Int 0x085b), -- Mandaic Affrication Mark..Mandaic Gemination Mark (Int 0x08d4, Int 0x08e1), -- (nil) .. (Int 0x08e3, Int 0x0902), -- Arabic Turned Damma Belo..Devanagari Sign Anusvara (Int 0x093a, Int 0x093a), -- Devanagari Vowel Sign Oe..Devanagari Vowel Sign Oe (Int 0x093c, Int 0x093c), -- Devanagari Sign Nukta ..Devanagari Sign Nukta (Int 0x0941, Int 0x0948), -- Devanagari Vowel Sign U ..Devanagari Vowel Sign Ai (Int 0x094d, Int 0x094d), -- Devanagari Sign Virama ..Devanagari Sign Virama (Int 0x0951, Int 0x0957), -- Devanagari Stress Sign U..Devanagari Vowel Sign Uu (Int 0x0962, Int 0x0963), -- Devanagari Vowel Sign Vo..Devanagari Vowel Sign Vo (Int 0x0981, Int 0x0981), -- Bengali Sign Candrabindu..Bengali Sign Candrabindu (Int 0x09bc, Int 0x09bc), -- Bengali Sign Nukta ..Bengali Sign Nukta (Int 0x09c1, Int 0x09c4), -- Bengali Vowel Sign U ..Bengali Vowel Sign Vocal (Int 0x09cd, Int 0x09cd), -- Bengali Sign Virama ..Bengali Sign Virama (Int 0x09e2, Int 0x09e3), -- Bengali Vowel Sign Vocal..Bengali Vowel Sign Vocal (Int 0x0a01, Int 0x0a02), -- Gurmukhi Sign Adak Bindi..Gurmukhi Sign Bindi (Int 0x0a3c, Int 0x0a3c), -- Gurmukhi Sign Nukta ..Gurmukhi Sign Nukta (Int 0x0a41, Int 0x0a42), -- Gurmukhi Vowel Sign U ..Gurmukhi Vowel Sign Uu (Int 0x0a47, Int 0x0a48), -- Gurmukhi Vowel Sign Ee ..Gurmukhi Vowel Sign Ai (Int 0x0a4b, Int 0x0a4d), -- Gurmukhi Vowel Sign Oo ..Gurmukhi Sign Virama (Int 0x0a51, Int 0x0a51), -- Gurmukhi Sign Udaat ..Gurmukhi Sign Udaat (Int 0x0a70, Int 0x0a71), -- Gurmukhi Tippi ..Gurmukhi Addak (Int 0x0a75, Int 0x0a75), -- Gurmukhi Sign Yakash ..Gurmukhi Sign Yakash (Int 0x0a81, Int 0x0a82), -- Gujarati Sign Candrabind..Gujarati Sign Anusvara (Int 0x0abc, Int 0x0abc), -- Gujarati Sign Nukta ..Gujarati Sign Nukta (Int 0x0ac1, Int 0x0ac5), -- Gujarati Vowel Sign U ..Gujarati Vowel Sign Cand (Int 0x0ac7, Int 0x0ac8), -- Gujarati Vowel Sign E ..Gujarati Vowel Sign Ai (Int 0x0acd, Int 0x0acd), -- Gujarati Sign Virama ..Gujarati Sign Virama (Int 0x0ae2, Int 0x0ae3), -- Gujarati Vowel Sign Voca..Gujarati Vowel Sign Voca (Int 0x0b01, Int 0x0b01), -- Oriya Sign Candrabindu ..Oriya Sign Candrabindu (Int 0x0b3c, Int 0x0b3c), -- Oriya Sign Nukta ..Oriya Sign Nukta (Int 0x0b3f, Int 0x0b3f), -- Oriya Vowel Sign I ..Oriya Vowel Sign I (Int 0x0b41, Int 0x0b44), -- Oriya Vowel Sign U ..Oriya Vowel Sign Vocalic (Int 0x0b4d, Int 0x0b4d), -- Oriya Sign Virama ..Oriya Sign Virama (Int 0x0b56, Int 0x0b56), -- Oriya Ai Length Mark ..Oriya Ai Length Mark (Int 0x0b62, Int 0x0b63), -- Oriya Vowel Sign Vocalic..Oriya Vowel Sign Vocalic (Int 0x0b82, Int 0x0b82), -- Tamil Sign Anusvara ..Tamil Sign Anusvara (Int 0x0bc0, Int 0x0bc0), -- Tamil Vowel Sign Ii ..Tamil Vowel Sign Ii (Int 0x0bcd, Int 0x0bcd), -- Tamil Sign Virama ..Tamil Sign Virama (Int 0x0c00, Int 0x0c00), -- Telugu Sign Combining Ca..Telugu Sign Combining Ca (Int 0x0c3e, Int 0x0c40), -- Telugu Vowel Sign Aa ..Telugu Vowel Sign Ii (Int 0x0c46, Int 0x0c48), -- Telugu Vowel Sign E ..Telugu Vowel Sign Ai (Int 0x0c4a, Int 0x0c4d), -- Telugu Vowel Sign O ..Telugu Sign Virama (Int 0x0c55, Int 0x0c56), -- Telugu Length Mark ..Telugu Ai Length Mark (Int 0x0c62, Int 0x0c63), -- Telugu Vowel Sign Vocali..Telugu Vowel Sign Vocali (Int 0x0c81, Int 0x0c81), -- Kannada Sign Candrabindu..Kannada Sign Candrabindu (Int 0x0cbc, Int 0x0cbc), -- Kannada Sign Nukta ..Kannada Sign Nukta (Int 0x0cbf, Int 0x0cbf), -- Kannada Vowel Sign I ..Kannada Vowel Sign I (Int 0x0cc6, Int 0x0cc6), -- Kannada Vowel Sign E ..Kannada Vowel Sign E (Int 0x0ccc, Int 0x0ccd), -- Kannada Vowel Sign Au ..Kannada Sign Virama (Int 0x0ce2, Int 0x0ce3), -- Kannada Vowel Sign Vocal..Kannada Vowel Sign Vocal (Int 0x0d01, Int 0x0d01), -- Malayalam Sign Candrabin..Malayalam Sign Candrabin (Int 0x0d41, Int 0x0d44), -- Malayalam Vowel Sign U ..Malayalam Vowel Sign Voc (Int 0x0d4d, Int 0x0d4d), -- Malayalam Sign Virama ..Malayalam Sign Virama (Int 0x0d62, Int 0x0d63), -- Malayalam Vowel Sign Voc..Malayalam Vowel Sign Voc (Int 0x0dca, Int 0x0dca), -- Sinhala Sign Al-lakuna ..Sinhala Sign Al-lakuna (Int 0x0dd2, Int 0x0dd4), -- Sinhala Vowel Sign Ketti..Sinhala Vowel Sign Ketti (Int 0x0dd6, Int 0x0dd6), -- Sinhala Vowel Sign Diga ..Sinhala Vowel Sign Diga (Int 0x0e31, Int 0x0e31), -- Thai Character Mai Han-a..Thai Character Mai Han-a (Int 0x0e34, Int 0x0e3a), -- Thai Character Sara I ..Thai Character Phinthu (Int 0x0e47, Int 0x0e4e), -- Thai Character Maitaikhu..Thai Character Yamakkan (Int 0x0eb1, Int 0x0eb1), -- Lao Vowel Sign Mai Kan ..Lao Vowel Sign Mai Kan (Int 0x0eb4, Int 0x0eb9), -- Lao Vowel Sign I ..Lao Vowel Sign Uu (Int 0x0ebb, Int 0x0ebc), -- Lao Vowel Sign Mai Kon ..Lao Semivowel Sign Lo (Int 0x0ec8, Int 0x0ecd), -- Lao Tone Mai Ek ..Lao Niggahita (Int 0x0f18, Int 0x0f19), -- Tibetan Astrological Sig..Tibetan Astrological Sig (Int 0x0f35, Int 0x0f35), -- Tibetan Mark Ngas Bzung ..Tibetan Mark Ngas Bzung (Int 0x0f37, Int 0x0f37), -- Tibetan Mark Ngas Bzung ..Tibetan Mark Ngas Bzung (Int 0x0f39, Int 0x0f39), -- Tibetan Mark Tsa -phru ..Tibetan Mark Tsa -phru (Int 0x0f71, Int 0x0f7e), -- Tibetan Vowel Sign Aa ..Tibetan Sign Rjes Su Nga (Int 0x0f80, Int 0x0f84), -- Tibetan Vowel Sign Rever..Tibetan Mark Halanta (Int 0x0f86, Int 0x0f87), -- Tibetan Sign Lci Rtags ..Tibetan Sign Yang Rtags (Int 0x0f8d, Int 0x0f97), -- Tibetan Subjoined Sign L..Tibetan Subjoined Letter (Int 0x0f99, Int 0x0fbc), -- Tibetan Subjoined Letter..Tibetan Subjoined Letter (Int 0x0fc6, Int 0x0fc6), -- Tibetan Symbol Padma Gda..Tibetan Symbol Padma Gda (Int 0x102d, Int 0x1030), -- Myanmar Vowel Sign I ..Myanmar Vowel Sign Uu (Int 0x1032, Int 0x1037), -- Myanmar Vowel Sign Ai ..Myanmar Sign Dot Below (Int 0x1039, Int 0x103a), -- Myanmar Sign Virama ..Myanmar Sign Asat (Int 0x103d, Int 0x103e), -- Myanmar Consonant Sign M..Myanmar Consonant Sign M (Int 0x1058, Int 0x1059), -- Myanmar Vowel Sign Vocal..Myanmar Vowel Sign Vocal (Int 0x105e, Int 0x1060), -- Myanmar Consonant Sign M..Myanmar Consonant Sign M (Int 0x1071, Int 0x1074), -- Myanmar Vowel Sign Geba ..Myanmar Vowel Sign Kayah (Int 0x1082, Int 0x1082), -- Myanmar Consonant Sign S..Myanmar Consonant Sign S (Int 0x1085, Int 0x1086), -- Myanmar Vowel Sign Shan ..Myanmar Vowel Sign Shan (Int 0x108d, Int 0x108d), -- Myanmar Sign Shan Counci..Myanmar Sign Shan Counci (Int 0x109d, Int 0x109d), -- Myanmar Vowel Sign Aiton..Myanmar Vowel Sign Aiton (Int 0x135d, Int 0x135f), -- Ethiopic Combining Gemin..Ethiopic Combining Gemin (Int 0x1712, Int 0x1714), -- Tagalog Vowel Sign I ..Tagalog Sign Virama (Int 0x1732, Int 0x1734), -- Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod (Int 0x1752, Int 0x1753), -- Buhid Vowel Sign I ..Buhid Vowel Sign U (Int 0x1772, Int 0x1773), -- Tagbanwa Vowel Sign I ..Tagbanwa Vowel Sign U (Int 0x17b4, Int 0x17b5), -- Khmer Vowel Inherent Aq ..Khmer Vowel Inherent Aa (Int 0x17b7, Int 0x17bd), -- Khmer Vowel Sign I ..Khmer Vowel Sign Ua (Int 0x17c6, Int 0x17c6), -- Khmer Sign Nikahit ..Khmer Sign Nikahit (Int 0x17c9, Int 0x17d3), -- Khmer Sign Muusikatoan ..Khmer Sign Bathamasat (Int 0x17dd, Int 0x17dd), -- Khmer Sign Atthacan ..Khmer Sign Atthacan (Int 0x180b, Int 0x180d), -- Mongolian Free Variation..Mongolian Free Variation (Int 0x1885, Int 0x1886), -- Mongolian Letter Ali Gal..Mongolian Letter Ali Gal (Int 0x18a9, Int 0x18a9), -- Mongolian Letter Ali Gal..Mongolian Letter Ali Gal (Int 0x1920, Int 0x1922), -- Limbu Vowel Sign A ..Limbu Vowel Sign U (Int 0x1927, Int 0x1928), -- Limbu Vowel Sign E ..Limbu Vowel Sign O (Int 0x1932, Int 0x1932), -- Limbu Small Letter Anusv..Limbu Small Letter Anusv (Int 0x1939, Int 0x193b), -- Limbu Sign Mukphreng ..Limbu Sign Sa-i (Int 0x1a17, Int 0x1a18), -- Buginese Vowel Sign I ..Buginese Vowel Sign U (Int 0x1a1b, Int 0x1a1b), -- Buginese Vowel Sign Ae ..Buginese Vowel Sign Ae (Int 0x1a56, Int 0x1a56), -- Tai Tham Consonant Sign ..Tai Tham Consonant Sign (Int 0x1a58, Int 0x1a5e), -- Tai Tham Sign Mai Kang L..Tai Tham Consonant Sign (Int 0x1a60, Int 0x1a60), -- Tai Tham Sign Sakot ..Tai Tham Sign Sakot (Int 0x1a62, Int 0x1a62), -- Tai Tham Vowel Sign Mai ..Tai Tham Vowel Sign Mai (Int 0x1a65, Int 0x1a6c), -- Tai Tham Vowel Sign I ..Tai Tham Vowel Sign Oa B (Int 0x1a73, Int 0x1a7c), -- Tai Tham Vowel Sign Oa A..Tai Tham Sign Khuen-lue (Int 0x1a7f, Int 0x1a7f), -- Tai Tham Combining Crypt..Tai Tham Combining Crypt (Int 0x1ab0, Int 0x1abe), -- Combining Doubled Circum..Combining Parentheses Ov (Int 0x1b00, Int 0x1b03), -- Balinese Sign Ulu Ricem ..Balinese Sign Surang (Int 0x1b34, Int 0x1b34), -- Balinese Sign Rerekan ..Balinese Sign Rerekan (Int 0x1b36, Int 0x1b3a), -- Balinese Vowel Sign Ulu ..Balinese Vowel Sign Ra R (Int 0x1b3c, Int 0x1b3c), -- Balinese Vowel Sign La L..Balinese Vowel Sign La L (Int 0x1b42, Int 0x1b42), -- Balinese Vowel Sign Pepe..Balinese Vowel Sign Pepe (Int 0x1b6b, Int 0x1b73), -- Balinese Musical Symbol ..Balinese Musical Symbol (Int 0x1b80, Int 0x1b81), -- Sundanese Sign Panyecek ..Sundanese Sign Panglayar (Int 0x1ba2, Int 0x1ba5), -- Sundanese Consonant Sign..Sundanese Vowel Sign Pan (Int 0x1ba8, Int 0x1ba9), -- Sundanese Vowel Sign Pam..Sundanese Vowel Sign Pan (Int 0x1bab, Int 0x1bad), -- Sundanese Sign Virama ..Sundanese Consonant Sign (Int 0x1be6, Int 0x1be6), -- Batak Sign Tompi ..Batak Sign Tompi (Int 0x1be8, Int 0x1be9), -- Batak Vowel Sign Pakpak ..Batak Vowel Sign Ee (Int 0x1bed, Int 0x1bed), -- Batak Vowel Sign Karo O ..Batak Vowel Sign Karo O (Int 0x1bef, Int 0x1bf1), -- Batak Vowel Sign U For S..Batak Consonant Sign H (Int 0x1c2c, Int 0x1c33), -- Lepcha Vowel Sign E ..Lepcha Consonant Sign T (Int 0x1c36, Int 0x1c37), -- Lepcha Sign Ran ..Lepcha Sign Nukta (Int 0x1cd0, Int 0x1cd2), -- Vedic Tone Karshana ..Vedic Tone Prenkha (Int 0x1cd4, Int 0x1ce0), -- Vedic Sign Yajurvedic Mi..Vedic Tone Rigvedic Kash (Int 0x1ce2, Int 0x1ce8), -- Vedic Sign Visarga Svari..Vedic Sign Visarga Anuda (Int 0x1ced, Int 0x1ced), -- Vedic Sign Tiryak ..Vedic Sign Tiryak (Int 0x1cf4, Int 0x1cf4), -- Vedic Tone Candra Above ..Vedic Tone Candra Above (Int 0x1cf8, Int 0x1cf9), -- Vedic Tone Ring Above ..Vedic Tone Double Ring A (Int 0x1dc0, Int 0x1df5), -- Combining Dotted Grave A..Combining Up Tack Above (Int 0x1dfb, Int 0x1dff), -- (nil) ..Combining Right Arrowhea (Int 0x20d0, Int 0x20f0), -- Combining Left Harpoon A..Combining Asterisk Above (Int 0x2cef, Int 0x2cf1), -- Coptic Combining Ni Abov..Coptic Combining Spiritu (Int 0x2d7f, Int 0x2d7f), -- Tifinagh Consonant Joine..Tifinagh Consonant Joine (Int 0x2de0, Int 0x2dff), -- Combining Cyrillic Lette..Combining Cyrillic Lette (Int 0x302a, Int 0x302d), -- Ideographic Level Tone M..Ideographic Entering Ton (Int 0x3099, Int 0x309a), -- Combining Katakana-hirag..Combining Katakana-hirag (Int 0xa66f, Int 0xa672), -- Combining Cyrillic Vzmet..Combining Cyrillic Thous (Int 0xa674, Int 0xa67d), -- Combining Cyrillic Lette..Combining Cyrillic Payer (Int 0xa69e, Int 0xa69f), -- Combining Cyrillic Lette..Combining Cyrillic Lette (Int 0xa6f0, Int 0xa6f1), -- Bamum Combining Mark Koq..Bamum Combining Mark Tuk (Int 0xa802, Int 0xa802), -- Syloti Nagri Sign Dvisva..Syloti Nagri Sign Dvisva (Int 0xa806, Int 0xa806), -- Syloti Nagri Sign Hasant..Syloti Nagri Sign Hasant (Int 0xa80b, Int 0xa80b), -- Syloti Nagri Sign Anusva..Syloti Nagri Sign Anusva (Int 0xa825, Int 0xa826), -- Syloti Nagri Vowel Sign ..Syloti Nagri Vowel Sign (Int 0xa8c4, Int 0xa8c5), -- Saurashtra Sign Virama .. (Int 0xa8e0, Int 0xa8f1), -- Combining Devanagari Dig..Combining Devanagari Sig (Int 0xa926, Int 0xa92d), -- Kayah Li Vowel Ue ..Kayah Li Tone Calya Plop (Int 0xa947, Int 0xa951), -- Rejang Vowel Sign I ..Rejang Consonant Sign R (Int 0xa980, Int 0xa982), -- Javanese Sign Panyangga ..Javanese Sign Layar (Int 0xa9b3, Int 0xa9b3), -- Javanese Sign Cecak Telu..Javanese Sign Cecak Telu (Int 0xa9b6, Int 0xa9b9), -- Javanese Vowel Sign Wulu..Javanese Vowel Sign Suku (Int 0xa9bc, Int 0xa9bc), -- Javanese Vowel Sign Pepe..Javanese Vowel Sign Pepe (Int 0xa9e5, Int 0xa9e5), -- Myanmar Sign Shan Saw ..Myanmar Sign Shan Saw (Int 0xaa29, Int 0xaa2e), -- Cham Vowel Sign Aa ..Cham Vowel Sign Oe (Int 0xaa31, Int 0xaa32), -- Cham Vowel Sign Au ..Cham Vowel Sign Ue (Int 0xaa35, Int 0xaa36), -- Cham Consonant Sign La ..Cham Consonant Sign Wa (Int 0xaa43, Int 0xaa43), -- Cham Consonant Sign Fina..Cham Consonant Sign Fina (Int 0xaa4c, Int 0xaa4c), -- Cham Consonant Sign Fina..Cham Consonant Sign Fina (Int 0xaa7c, Int 0xaa7c), -- Myanmar Sign Tai Laing T..Myanmar Sign Tai Laing T (Int 0xaab0, Int 0xaab0), -- Tai Viet Mai Kang ..Tai Viet Mai Kang (Int 0xaab2, Int 0xaab4), -- Tai Viet Vowel I ..Tai Viet Vowel U (Int 0xaab7, Int 0xaab8), -- Tai Viet Mai Khit ..Tai Viet Vowel Ia (Int 0xaabe, Int 0xaabf), -- Tai Viet Vowel Am ..Tai Viet Tone Mai Ek (Int 0xaac1, Int 0xaac1), -- Tai Viet Tone Mai Tho ..Tai Viet Tone Mai Tho (Int 0xaaec, Int 0xaaed), -- Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (Int 0xaaf6, Int 0xaaf6), -- Meetei Mayek Virama ..Meetei Mayek Virama (Int 0xabe5, Int 0xabe5), -- Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (Int 0xabe8, Int 0xabe8), -- Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (Int 0xabed, Int 0xabed), -- Meetei Mayek Apun Iyek ..Meetei Mayek Apun Iyek (Int 0xfb1e, Int 0xfb1e), -- Hebrew Point Judeo-spani..Hebrew Point Judeo-spani (Int 0xfe00, Int 0xfe0f), -- Variation Selector-1 ..Variation Selector-16 (Int 0xfe20, Int 0xfe2f), -- Combining Ligature Left ..Combining Cyrillic Titlo (Int 0x101fd, Int 0x101fd), -- Phaistos Disc Sign Combi..Phaistos Disc Sign Combi (Int 0x102e0, Int 0x102e0), -- Coptic Epact Thousands M..Coptic Epact Thousands M (Int 0x10376, Int 0x1037a), -- Combining Old Permic Let..Combining Old Permic Let (Int 0x10a01, Int 0x10a03), -- Kharoshthi Vowel Sign I ..Kharoshthi Vowel Sign Vo (Int 0x10a05, Int 0x10a06), -- Kharoshthi Vowel Sign E ..Kharoshthi Vowel Sign O (Int 0x10a0c, Int 0x10a0f), -- Kharoshthi Vowel Length ..Kharoshthi Sign Visarga (Int 0x10a38, Int 0x10a3a), -- Kharoshthi Sign Bar Abov..Kharoshthi Sign Dot Belo (Int 0x10a3f, Int 0x10a3f), -- Kharoshthi Virama ..Kharoshthi Virama (Int 0x10ae5, Int 0x10ae6), -- Manichaean Abbreviation ..Manichaean Abbreviation (Int 0x11001, Int 0x11001), -- Brahmi Sign Anusvara ..Brahmi Sign Anusvara (Int 0x11038, Int 0x11046), -- Brahmi Vowel Sign Aa ..Brahmi Virama (Int 0x1107f, Int 0x11081), -- Brahmi Number Joiner ..Kaithi Sign Anusvara (Int 0x110b3, Int 0x110b6), -- Kaithi Vowel Sign U ..Kaithi Vowel Sign Ai (Int 0x110b9, Int 0x110ba), -- Kaithi Sign Virama ..Kaithi Sign Nukta (Int 0x11100, Int 0x11102), -- Chakma Sign Candrabindu ..Chakma Sign Visarga (Int 0x11127, Int 0x1112b), -- Chakma Vowel Sign A ..Chakma Vowel Sign Uu (Int 0x1112d, Int 0x11134), -- Chakma Vowel Sign Ai ..Chakma Maayyaa (Int 0x11173, Int 0x11173), -- Mahajani Sign Nukta ..Mahajani Sign Nukta (Int 0x11180, Int 0x11181), -- Sharada Sign Candrabindu..Sharada Sign Anusvara (Int 0x111b6, Int 0x111be), -- Sharada Vowel Sign U ..Sharada Vowel Sign O (Int 0x111ca, Int 0x111cc), -- Sharada Sign Nukta ..Sharada Extra Short Vowe (Int 0x1122f, Int 0x11231), -- Khojki Vowel Sign U ..Khojki Vowel Sign Ai (Int 0x11234, Int 0x11234), -- Khojki Sign Anusvara ..Khojki Sign Anusvara (Int 0x11236, Int 0x11237), -- Khojki Sign Nukta ..Khojki Sign Shadda (Int 0x1123e, Int 0x1123e), -- (nil) .. (Int 0x112df, Int 0x112df), -- Khudawadi Sign Anusvara ..Khudawadi Sign Anusvara (Int 0x112e3, Int 0x112ea), -- Khudawadi Vowel Sign U ..Khudawadi Sign Virama (Int 0x11300, Int 0x11301), -- Grantha Sign Combining A..Grantha Sign Candrabindu (Int 0x1133c, Int 0x1133c), -- Grantha Sign Nukta ..Grantha Sign Nukta (Int 0x11340, Int 0x11340), -- Grantha Vowel Sign Ii ..Grantha Vowel Sign Ii (Int 0x11366, Int 0x1136c), -- Combining Grantha Digit ..Combining Grantha Digit (Int 0x11370, Int 0x11374), -- Combining Grantha Letter..Combining Grantha Letter (Int 0x11438, Int 0x1143f), -- (nil) .. (Int 0x11442, Int 0x11444), -- (nil) .. (Int 0x11446, Int 0x11446), -- (nil) .. (Int 0x114b3, Int 0x114b8), -- Tirhuta Vowel Sign U ..Tirhuta Vowel Sign Vocal (Int 0x114ba, Int 0x114ba), -- Tirhuta Vowel Sign Short..Tirhuta Vowel Sign Short (Int 0x114bf, Int 0x114c0), -- Tirhuta Sign Candrabindu..Tirhuta Sign Anusvara (Int 0x114c2, Int 0x114c3), -- Tirhuta Sign Virama ..Tirhuta Sign Nukta (Int 0x115b2, Int 0x115b5), -- Siddham Vowel Sign U ..Siddham Vowel Sign Vocal (Int 0x115bc, Int 0x115bd), -- Siddham Sign Candrabindu..Siddham Sign Anusvara (Int 0x115bf, Int 0x115c0), -- Siddham Sign Virama ..Siddham Sign Nukta (Int 0x115dc, Int 0x115dd), -- Siddham Vowel Sign Alter..Siddham Vowel Sign Alter (Int 0x11633, Int 0x1163a), -- Modi Vowel Sign U ..Modi Vowel Sign Ai (Int 0x1163d, Int 0x1163d), -- Modi Sign Anusvara ..Modi Sign Anusvara (Int 0x1163f, Int 0x11640), -- Modi Sign Virama ..Modi Sign Ardhacandra (Int 0x116ab, Int 0x116ab), -- Takri Sign Anusvara ..Takri Sign Anusvara (Int 0x116ad, Int 0x116ad), -- Takri Vowel Sign Aa ..Takri Vowel Sign Aa (Int 0x116b0, Int 0x116b5), -- Takri Vowel Sign U ..Takri Vowel Sign Au (Int 0x116b7, Int 0x116b7), -- Takri Sign Nukta ..Takri Sign Nukta (Int 0x1171d, Int 0x1171f), -- Ahom Consonant Sign Medi..Ahom Consonant Sign Medi (Int 0x11722, Int 0x11725), -- Ahom Vowel Sign I ..Ahom Vowel Sign Uu (Int 0x11727, Int 0x1172b), -- Ahom Vowel Sign Aw ..Ahom Sign Killer (Int 0x11c30, Int 0x11c36), -- (nil) .. (Int 0x11c38, Int 0x11c3d), -- (nil) .. (Int 0x11c3f, Int 0x11c3f), -- (nil) .. (Int 0x11c92, Int 0x11ca7), -- (nil) .. (Int 0x11caa, Int 0x11cb0), -- (nil) .. (Int 0x11cb2, Int 0x11cb3), -- (nil) .. (Int 0x11cb5, Int 0x11cb6), -- (nil) .. (Int 0x16af0, Int 0x16af4), -- Bassa Vah Combining High..Bassa Vah Combining High (Int 0x16b30, Int 0x16b36), -- Pahawh Hmong Mark Cim Tu..Pahawh Hmong Mark Cim Ta (Int 0x16f8f, Int 0x16f92), -- Miao Tone Right ..Miao Tone Below (Int 0x1bc9d, Int 0x1bc9e), -- Duployan Thick Letter Se..Duployan Double Mark (Int 0x1d167, Int 0x1d169), -- Musical Symbol Combining..Musical Symbol Combining (Int 0x1d17b, Int 0x1d182), -- Musical Symbol Combining..Musical Symbol Combining (Int 0x1d185, Int 0x1d18b), -- Musical Symbol Combining..Musical Symbol Combining (Int 0x1d1aa, Int 0x1d1ad), -- Musical Symbol Combining..Musical Symbol Combining (Int 0x1d242, Int 0x1d244), -- Combining Greek Musical ..Combining Greek Musical (Int 0x1da00, Int 0x1da36), -- Signwriting Head Rim ..Signwriting Air Sucking (Int 0x1da3b, Int 0x1da6c), -- Signwriting Mouth Closed..Signwriting Excitement (Int 0x1da75, Int 0x1da75), -- Signwriting Upper Body T..Signwriting Upper Body T (Int 0x1da84, Int 0x1da84), -- Signwriting Location Hea..Signwriting Location Hea (Int 0x1da9b, Int 0x1da9f), -- Signwriting Fill Modifie..Signwriting Fill Modifie (Int 0x1daa1, Int 0x1daaf), -- Signwriting Rotation Mod..Signwriting Rotation Mod (Int 0x1e000, Int 0x1e006), -- (nil) .. (Int 0x1e008, Int 0x1e018), -- (nil) .. (Int 0x1e01b, Int 0x1e021), -- (nil) .. (Int 0x1e023, Int 0x1e024), -- (nil) .. (Int 0x1e026, Int 0x1e02a), -- (nil) .. (Int 0x1e8d0, Int 0x1e8d6), -- Mende Kikakui Combining ..Mende Kikakui Combining (Int 0x1e944, Int 0x1e94a), -- (nil) .. (Int 0xe0100, Int 0xe01ef) -- Variation Selector-17 ..Variation Selector-256 ] basicZero :: RangeSet Int basicZero :: RangeSet Int basicZero = forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b foldr forall a. (Ord a, Enum a) => (a, a) -> RangeSet a -> RangeSet a insertRange forall a. RangeSet a empty [ (Int 0, Int 0), (Int 0x034f, Int 0x034f), (Int 0x200b, Int 0x200f), (Int 0x2028, Int 0x2029), (Int 0x202a, Int 0x202e), (Int 0x2060, Int 0x2063) ] ctrlChars :: RangeSet Int ctrlChars :: RangeSet Int ctrlChars = forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b foldr forall a. (Ord a, Enum a) => (a, a) -> RangeSet a -> RangeSet a insertRange forall a. RangeSet a empty [ (Int 1, Int 32), (Int 0x07f, Int 0x09F) ] wcwidth :: Char -> Int wcwidth :: Char -> Int wcwidth Char c | forall a. Ord a => a -> RangeSet a -> Bool queryPoint Int v RangeSet Int basicZero = Int 0 | forall a. Ord a => a -> RangeSet a -> Bool queryPoint Int v RangeSet Int ctrlChars = -Int 1 | forall a. Ord a => a -> RangeSet a -> Bool queryPoint Int v RangeSet Int wIDEEASTASIAN = Int 2 | forall a. Ord a => a -> RangeSet a -> Bool queryPoint Int v RangeSet Int zEROWIDTH = Int 0 | Bool otherwise = Int 1 where v :: Int v = Char -> Int ord Char c