PERLUNIPROPS(1)
✨ NAME ✨
perluniprops — it's the index of Unicode Version 16.0.0 character properties in Perl, bestie 💖
🎀 DESCRIPTION 🎀
Okay so this doc is all about the part of the Unicode database that deals with character properties — meaning the portion that's defined on single code points. (The section "Other information in the Unicode data base" further down just briefly name-drops the other stuff Unicode gives you, no biggie.)
Perl can give you access to all non-provisional Unicode character properties, though ngl not all of them are turned on by default 🙈 The ones left out are the Unihan properties plus certain deprecated or Unicode-internal properties. (If your install wants, it can recompile Perl's tables to change this. See "Unicode character properties that are NOT accepted by Perl".)
For most purposes, you get at Unicode properties from the Perl core through regular expression matches, which is exactly what the next section is about. But for some special purposes — and to reach the properties that just don't work for regex matching — every Unicode character property Perl handles is accessible through the standard Unicode::UCD module, as described in the section "Properties accessible through Unicode::UCD".
Perl also hands you some extra extensions and short-cut synonyms for Unicode properties. Slay ✨
Real talk though: this document only lists all the available properties, it does not try to explain what each one actually means. There's a brief description of each Perl extension; peep "Other Properties" in perlunicode for the tea on those. There's also some detail about Blocks, Scripts, General_Category, and Bidi_Class in perlunicode, but if you want the intricacies of the official Unicode properties, go straight to the Unicode standard. A great place to start is <http://www.unicode.org/reports/tr44/> 📚
Also bestie, you can literally define your own properties; see "User-Defined Character Properties" in perlunicode 💅
🦋 Properties accessible through \p{} and \P{} 🦋
The Perl regex \p{} and \P{} constructs are the way to access most of the Unicode character properties. The table below shows all of these constructs, both the single and the compound forms 👑
Compound forms are made of two components, separated by an equals sign or a colon. The first component is the property name, and the second is the particular value of the property you're matching against. For example, \p{Script_Extensions: Greek} and \p{Script_Extensions=Greek} both mean "match characters whose Script_Extensions property value is Greek". (Script_Extensions is the glow-up version of the Script property, iykyk.)
Single forms, like \p{Greek}, are mostly Perl-defined shortcuts for their equivalent compound forms, and the table shows you those equivalences. (In our example, \p{Greek} is just a shortcut for \p{Script_Extensions=Greek}.) There are also a few Perl-defined single forms that are not shortcuts for any compound form — one of them is \p{Word} — and those are in the table too.
When Perl parses these constructs, it always ignores upper/lower case differences everywhere inside the {braces}. So \p{Greek} means the exact same thing as \p{greek}. ⚠️ But heads up: changing the case of the p or the P before the left brace completely flips the meaning — from "match" (for \p{}) to "doesn't match" (for \P{}). The casing in this document is purely for legibility, no cap.
Also, white space, hyphens, and underscores are normally ignored everywhere between the {braces}, which means you can freely add or remove them even if the /x modifier hasn't been specified on the regex. <em>But</em> in the table below, a T at the beginning of an entry means tighter (stricter) rules apply to that entry:
Single form (\p{name}) tighter rules:
White space, hyphens, and underscores ARE significant — except for:
- white space adjacent to a non-word character
- underscores separating digits in numbers
So that means, for example, you can freely add or remove white space adjacent to (but still within) the braces without affecting the meaning 💅
Compound form (\p{name=value} or \p{name:value}) tighter rules:
The tighter rules given above for the single form apply to everything to the right of the colon or equals; the looser rules still apply to everything to the left.
So that means, for example, you can freely add or remove white space adjacent to (but within) the braces and the colon or equal sign 🫶
Some properties are considered obsolete by Unicode, but they're still available. There are several flavors of obsolescence, and they are not the same vibe:
Stabilized
A property may be stabilized. That determination does not mean the property should or shouldn't be used — instead it's a declaration that the property will not be maintained nor extended for newly encoded characters. These get an S in the table.
Deprecated
A property may be deprecated — maybe because its original intent got replaced by another property, or because its specification was somehow defective. This means its use is strongly discouraged, so much so that a warning will be issued if you use it, unless the regex is in the scope of a no warnings 'deprecated' statement. A D flags each such entry in the table, and the entry for the longest, most descriptive version of the property will give you the reason it's deprecated, and maybe some advice too. Perl may issue such a warning even for properties that aren't officially deprecated by Unicode, when there used to be characters or code points matched by them, but no longer. That's to warn you that your program may not work like it did on earlier Unicode releases 😭
A deprecated property may be made unavailable in a future Perl version, so it's best to move away from them.
A deprecated property may also be stabilized, but that fact is not shown.
Obsolete
Properties marked with an O in the table are considered (plain) obsolete. Generally this designation goes to properties that Unicode once used for internal purposes (but not any longer). 💀
Discouraged
This one is not actually a Unicode-specified obsolescence — it applies to certain Perl extensions that are present for backwards compatibility but are discouraged from being used. They're not obsolete, but their meanings are not stable. Future Unicode versions could force any of these extensions to be removed without warning, replaced by another property with the same name that means something different. An X flags each such entry in the table. Use the equivalent shown instead, bestie 🙏
In particular, matches in the Block property have single forms defined by Perl that begin with In_, Is_, or even with no prefix at all. Like all DISCOURAGED forms, these are not stable. For example, \p{Block=Deseret} can currently be written as \p{In_Deseret}, \p{Is_Deseret}, or \p{Deseret}. But a new Unicode version may come along that would force Perl to change the meaning of one or more of these, and your program would no longer be correct 😬 Currently there are no such conflicts with the form that begins In_, but there are many with the other two shortcuts, and Unicode continues to define new properties that begin with "In", so it's quite possible that a conflict will occur in the future. The compound form is guaranteed to not become obsolete, and its meaning is clearer anyway. See "Blocks" in perlunicode for more on this.
User-defined properties must begin withInorIs. These override any Unicode property of the same name. 👑
The table below has two columns. The left column contains the \p{} constructs to look up, possibly preceded by the flags mentioned above; the right column contains information about them, like a description, or synonyms. The table shows both the single and compound forms for each property that has them. If the left column is a short name for a property, the right column will give its longer, more descriptive name; and if the left column is the longest name, the right column will show any equivalent shortest name, in both single and compound forms if applicable. 🎀
If braces are not needed to specify a property (e.g., \pL), the left column contains both forms, with and without braces.
The right column will also caution you if a property means something different than what might normally be expected. 👀
All single forms are Perl extensions; a few compound forms are as well, and are noted as such.
Numbers in (parentheses) indicate the total number of Unicode code points matched by the property. For the entries that give the longest, most descriptive version of the property, the count is followed by a list of some of the code points matched by it. That list includes all the matched characters in the 0-255 range, enclosed in the familiar [brackets] the same as a regular expression bracketed character class. Following that, the next few higher matching ranges are also given. To avoid visual ambiguity, the SPACE character is represented as \x20.
For emphasis, those properties that match no code points at all are listed as well, in a separate section following the table. 🫶
Most properties match the same code points regardless of whether /i case-insensitive matching is specified or not. But a few properties are affected. These are shown with the notation (/i= other_property) in the second column. Under case-insensitive matching they match the same code points as the property other_property.
There is no description given for most non-Perl defined properties (See <http://www.unicode.org/reports/tr44/> for that).
For compactness, * is used as a wildcard instead of showing all possible combinations. For example, entries like:
\p{Gc: *} \p{General_Category: *}
mean that Gc is a synonym for General_Category, and anything that is valid for the latter is also valid for the former. Similarly,
\p{Is_*} \p{*}
okay so the whole "Is" thing</p> — bestie, listen — it works like this: if and only if \p{Foo} actually exists, then \p{Is_Foo} and \p{IsFoo} are also valid, and they all mean the literal exact same thing. no difference, no cap. 💅
and it's the same situation with \p{Foo=Bar} — that one equals \p{Is_Foo=Bar} and also equals \p{IsFoo=Bar}. iconic family reunion honestly. 🫶
oh and that little * up there? it's restricted to stuff that does NOT start with an underscore. so like, keep that in mind. 🙈
now, the binary properties have their own little slang going on:
Yes,T, andTrueare all just synonyms forYNo,F, andFalseare all just synonyms forN
the table writes them as Y* and N* to show that these extra spellings are in play, and it doesn't give the other possibilities their own separate entries. 🎀
⚠️ heads up though: not every property that has valuesYesandNois binary. those ones spell out all their values with no wild card at all, and their description has a"NOT"clause that makes it super clear they're not binary. those also require the compound form to match them — meanwhile actual true binary properties get both the single form and the compound form. so yeah, subtle but real. 💀
also also: all the non-essential underscores get yeeted when the short names are displayed down below. gone. not invited. 🧚
✨ Legend summary ✨
*— it's a wild-card, bestie 🌈(\d+)— when this shows up in the info column, it's telling you the number of Unicode code points matched by that propertyD— this one is deprecated (rip, lowkey sad 🥀)O— this one is obsoleteS— this one is stabilizedT— tighter (stricter) name matching applies here, so watch ur spellingX— using this form is discouraged, and it might not even be stable 👀
and now, the moment we've all been waiting for, the table itself:
NAME INFO
the way that header is just sitting there setting the whole vibe for what's about to come… we love a structured queen. 👑
okay bestie we're still deep in the big property table and there is so much more to go 💅 quick heads up: a few rows in the original list carry a little X or T marker sitting in the left column, and I'm keeping those exactly where they are so nothing goes missing.
\p{Adlam}→\p{Script_Extensions=Adlam}(short way to write it:\p{Adlm}; and NOT\p{Block=Adlam}) (92)\p{Adlm}→ this one is\p{Adlam}(=\p{Script_Extensions=Adlam}), and again NOT\p{Block=Adlam}(92)X\p{Aegean_Numbers}→\p{Block=Aegean_Numbers}(64)T\p{Age: 1.1}(also spelled\p{Age=V1_1}) (33_979) — code point's usage was introduced in version 1.1. (33_979:U+0000..01F5, U+01FA..0217, U+0250..02A8, U+02B0..02DE, U+02E0..02E9, U+0300..0345 ...)T\p{Age: 2.0}(also spelled\p{Age=V2_0}) (144_521) — code point's usage was introduced in version 2.0, and go peek at thePresent_Inproperty too. (144_521:U+0591..05A1, U+05A3..05AF, U+05C4, U+0F00..0F47, U+0F49..0F69, U+0F71..0F8B ...)T\p{Age: 2.1}(also spelled\p{Age=V2_1}) (2) — code point's usage was introduced in version 2.1, plus see thePresent_Inproperty. (2:U+20AC, U+FFFC)T\p{Age: 3.0}(also spelled\p{Age=V3_0}) (10_307) — code point's usage was introduced in version 3.0, and also see thePresent_Inproperty. (10_307:U+01F6..01F9, U+0218..021F, U+0222..0233, U+02A9..02AD, U+02DF, U+02EA..02EE ...)T\p{Age: 3.1}(also spelled\p{Age=V3_1}) (44_978) — code point's usage was introduced in version 3.1, and see thePresent_Inproperty as well. (44_978:U+03F4..03F5, U+FDD0..FDEF, U+10300..1031E, U+10320..10323, U+10330..1034A, U+10400..10425 ...)T\p{Age: 3.2}(also spelled\p{Age=V3_2}) (1016) — code point's usage was introduced in version 3.2, and thePresent_Inproperty says hi too. (1016:U+0220, U+034F, U+0363..036F, U+03D8..03D9, U+03F6, U+048A..048B ...)T\p{Age: 4.0}(also spelled\p{Age=V4_0}) (1226) — code point's usage was introduced in version 4.0, and don't sleep on thePresent_Inproperty either. (1226:U+0221, U+0234..0236, U+02AE..02AF, U+02EF..02FF, U+0350..0357, U+035D..035F ...)T\p{Age: 4.1}(also spelled\p{Age=V4_1}) (1273) — code point's usage was introduced in version 4.1, and yes,Present_Inis also a property. (1273:U+0237..0241, U+0358..035C, U+03FC..03FF, U+04F6..04F7, U+05A2, U+05C5..05C7 ...)T\p{Age: 5.0}(also spelled\p{Age=V5_0}) (1369) — code point's usage was introduced in version 5.0, and check out thePresent_Inproperty too. (1369:U+0242..024F, U+037B..037D, U+04CF, U+04FA..04FF, U+0510..0513, U+05BA ...)T\p{Age: 5.1}(also spelled\p{Age=V5_1}) (1624) — code point's usage was introduced in version 5.1, and thePresent_Inproperty is right there waiting. (1624:U+0370..0373, U+0376..0377, U+03CF, U+0487, U+0514..0523, U+0606..060A ...)T\p{Age: 5.2}(also spelled\p{Age=V5_2}) (6648) — code point's usage was introduced in version 5.2, and also see thePresent_Inproperty. (6648:U+0524..0525, U+0800..082D, U+0830..083E, U+0900, U+094E, U+0955 ...)T\p{Age: 6.0}(also spelled\p{Age=V6_0}) (2088) — code point's usage was introduced in version 6.0, and yeah,Present_Inis a whole property you can look at. (2088:U+0526..0527, U+0620, U+065F, U+0840..085B, U+085E, U+093A..093B ...)T\p{Age: 6.1}(also spelled\p{Age=V6_1}) (732) — code point's usage was introduced in version 6.1, and see also thePresent_Inproperty. (732:U+058F, U+0604, U+08A0, U+08A2..08AC, U+08E4..08FE, U+0AF0 ...)T\p{Age: 6.2}(also spelled\p{Age=V6_2}) (1) — code point's usage was introduced in version 6.2, and see also thePresent_Inproperty. (1:U+20BA)T\p{Age: 6.3}(also spelled\p{Age=V6_3}) (5) — code point's usage was introduced in version 6.3, and see also thePresent_Inproperty. (5:U+061C, U+2066..2069)T\p{Age: 7.0}(also spelled\p{Age=V7_0}) (2834) — code point's usage was introduced in version 7.0, and see also thePresent_Inproperty. (2834:U+037F, U+0528..052F, U+058D..058E, U+0605, U+08A1, U+08AD..08B2 ...)T\p{Age: 8.0}(also spelled\p{Age=V8_0}) (7716) — code point's usage was introduced in version 8.0, and see also thePresent_Inproperty. (7716:U+08B3..08B4, U+08E3, U+0AF9, U+0C5A, U+0D5F, U+13F5 ...)T\p{Age: 9.0}(also spelled\p{Age=V9_0}) (7500) — code point's usage was introduced in version 9.0, and see also thePresent_Inproperty. (7500:U+08B6..08BD, U+08D4..08E2, U+0C80, U+0D4F, U+0D54..0D56, U+0D58..0D5E ...)T\p{Age: 10.0}(also spelled\p{Age=V10_0}) (8518) — code point's usage was introduced in version 10.0, and see also thePresent_Inproperty. (8518:U+0860..086A, U+09FC..09FD, U+0AFA..0AFF, U+0D00, U+0D3B..0D3C, U+1CF7 ...)T\p{Age: 11.0}(also spelled\p{Age=V11_0}) (684) — code point's usage was introduced in version 11.0, and see also thePresent_Inproperty. (684:U+0560, U+0588, U+05EF, U+07FD..07FF, U+08D3, U+09FE ...)T\p{Age: 12.0}(also spelled\p{Age=V12_0}) (554) — code point's usage was introduced in version 12.0, and see also thePresent_Inproperty. (554:U+0C77, U+0E86, U+0E89, U+0E8C, U+0E8E..0E93, U+0E98 ...)T\p{Age: 12.1}(also spelled\p{Age=V12_1}) (1) — code point's usage was introduced in version 12.1, and see also thePresent_Inproperty. (1:U+32FF)T\p{Age: 13.0}(also spelled\p{Age=V13_0}) (5930) — code point's usage was introduced in version 13.0, and see also thePresent_Inproperty. (5930:U+08BE..08C7, U+0B55, U+0D04, U+0D81, U+1ABF..1AC0, U+2B97 ...)T\p{Age: 14.0}(also spelled\p{Age=V14_0}) (838) — code point's usage was introduced in version 14.0, and see also thePresent_Inproperty. (838:U+061D, U+0870..088E, U+0890..0891, U+0898..089F, U+08B5, U+08C8..08D2 ...)T\p{Age: 15.0}(also spelled\p{Age=V15_0}) (4489) — code point's usage was introduced in version 15.0, and see also thePresent_Inproperty. (4489:U+0CF3, U+0ECE, U+10EFD..10EFF, U+1123F..11241, U+11B00..11B09, U+11F00..11F10 ...)T\p{Age: 15.1}(also spelled\p{Age=V15_1}) (627) — code point's usage was introduced in version 15.1, and see also thePresent_Inproperty. (627:U+2FFC..2FFF, U+31EF, U+2EBF0..2EE5D)T\p{Age: 16.0}(also spelled\p{Age=V16_0}) (5185) — code point's usage was introduced in version 16.0, and see also thePresent_Inproperty. (5185:U+0897, U+1B4E..1B4F, U+1B7F, U+1C89..1C8A, U+2427..2429, U+31E4..31E5 ...)\p{Age: NA}(also spelled\p{Age=Unassigned}) — (819_467 plus all above-Unicode code points)\p{Age: Unassigned}— code point's usage has not been assigned in any Unicode release thus far. (Short:\p{Age=NA}) (819_467 plus all above-Unicode code points:U+0378..0379, U+0380..0383, U+038B, U+038D, U+03A2, U+0530 ...)\p{Aghb}→\p{Caucasian_Albanian}(=\p{Script_Extensions=Caucasian_Albanian}) (NOT\p{Block=Caucasian_Albanian}) (56)\p{AHex}→\p{PosixXDigit}(=\p{ASCII_Hex_Digit=Y}) (22)\p{AHex: *}→\p{ASCII_Hex_Digit: *}🎀\p{Ahom}→\p{Script_Extensions=Ahom}(NOT\p{Block=Ahom}) (65)X\p{Alchemical}→\p{Alchemical_Symbols}(=\p{Block=Alchemical_Symbols}) (128)X\p{Alchemical_Symbols}→\p{Block=Alchemical_Symbols}(short version:\p{InAlchemical}) (128)\p{All}— literally every code point, even the ones above Unicode. Same asqr/./s(1_114_112 plus all above-Unicode code points:U+0000..infinity)\p{Alnum}→\p{XPosixAlnum}(143_519)
and bestie the list literally keeps going, so hold on to your keyboard 🦋
…and we're BACK in the property list bestie, no thoughts just vibes and Unicode 💅 continuing right where we left off:
\p{Alpha}→\p{XPosixAlpha}(=\p{Alphabetic=Y}) — 142_759 code points ✨\p{Alpha: *}→ same energy as\p{Alphabetic: *}🎀\p{Alphabetic}→\p{XPosixAlpha}(=\p{Alphabetic=Y}) — 142_759\p{Alphabetic: N*}(short:\p{Alpha=N},\P{Alpha}) — 971_353 plus all above-Unicode code points:
[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@\[\\\]\^_`\{\|\}~\x7f-\xa9\xab-\xb4\xb6-\xb9\xbb-\xbf\xd7\xf7], U+02C2..02C5, U+02D2..02DF, U+02E5..02EB, U+02ED, U+02EF..0344 ...
\p{Alphabetic: Y*}(short:\p{Alpha=Y},\p{Alpha}) — 142_759:
[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff], U+0100..02C1, U+02C6..02D1, U+02E0..02E4, U+02EC, U+02EE ...
X\p{Alphabetic_PF}→\p{Alphabetic_Presentation_Forms}(=\p{Block=Alphabetic_Presentation_Forms}) — 80X\p{Alphabetic_Presentation_Forms}→\p{Block=Alphabetic_Presentation_Forms}(short:\p{InAlphabeticPF}) — 80\p{Anatolian_Hieroglyphs}→\p{Script_Extensions=Anatolian_Hieroglyphs}(short:\p{Hluw}; ⚠️ NOT\p{Block=Anatolian_Hieroglyphs}) — 583X\p{Ancient_Greek_Music}→\p{Ancient_Greek_Musical_Notation}(=\p{Block=Ancient_Greek_Musical_Notation}) — 80X\p{Ancient_Greek_Musical_Notation}→\p{Block=Ancient_Greek_Musical_Notation}(short:\p{InAncientGreekMusic}) — 80X\p{Ancient_Greek_Numbers}→\p{Block=Ancient_Greek_Numbers}— 80X\p{Ancient_Symbols}→\p{Block=Ancient_Symbols}— 64\p{Any}— literally All Unicode code points 🌈 (1_114_112: U+0000..10FFFF) like… everything, the whole buffet\p{Arab}→\p{Arabic}(=\p{Script_Extensions=Arabic}) (⚠️ NOT\p{Block=Arabic}) — 1421\p{Arabic}→\p{Script_Extensions=Arabic}(short:\p{Arab}; ⚠️ NOT\p{Block=Arabic}) — 1421X\p{Arabic_Ext_A}→\p{Arabic_Extended_A}(=\p{Block=Arabic_Extended_A}) — 96X\p{Arabic_Ext_B}→\p{Arabic_Extended_B}(=\p{Block=Arabic_Extended_B}) — 48X\p{Arabic_Ext_C}→\p{Arabic_Extended_C}(=\p{Block=Arabic_Extended_C}) — 64X\p{Arabic_Extended_A}→\p{Block=Arabic_Extended_A}(short:\p{InArabicExtA}) — 96X\p{Arabic_Extended_B}→\p{Block=Arabic_Extended_B}(short:\p{InArabicExtB}) — 48X\p{Arabic_Extended_C}→\p{Block=Arabic_Extended_C}(short:\p{InArabicExtC}) — 64X\p{Arabic_Math}→\p{Arabic_Mathematical_Alphabetic_Symbols}(=\p{Block=Arabic_Mathematical_Alphabetic_Symbols}) — 256X\p{Arabic_Mathematical_Alphabetic_Symbols}→\p{Block=Arabic_Mathematical_Alphabetic_Symbols}(short:\p{InArabicMath}) — 256X\p{Arabic_PF_A}→\p{Arabic_Presentation_Forms_A}(=\p{Block=Arabic_Presentation_Forms_A}) — 688X\p{Arabic_PF_B}→\p{Arabic_Presentation_Forms_B}(=\p{Block=Arabic_Presentation_Forms_B}) — 144X\p{Arabic_Presentation_Forms_A}→\p{Block=Arabic_Presentation_Forms_A}(short:\p{InArabicPFA}) — 688X\p{Arabic_Presentation_Forms_B}→\p{Block=Arabic_Presentation_Forms_B}(short:\p{InArabicPFB}) — 144X\p{Arabic_Sup}→\p{Arabic_Supplement}(=\p{Block=Arabic_Supplement}) — 48X\p{Arabic_Supplement}→\p{Block=Arabic_Supplement}(short:\p{InArabicSup}) — 48\p{Armenian}→\p{Script_Extensions=Armenian}(short:\p{Armn}; ⚠️ NOT\p{Block=Armenian}) — 97\p{Armi}→\p{Imperial_Aramaic}(=\p{Script_Extensions=Imperial_Aramaic}) (⚠️ NOT\p{Block=Imperial_Aramaic}) — 31\p{Armn}→\p{Armenian}(=\p{Script_Extensions=Armenian}) (⚠️ NOT\p{Block=Armenian}) — 97X\p{Arrows}→\p{Block=Arrows}— 112\p{ASCII}→\p{Block=Basic_Latin}— 128\p{ASCII_Hex_Digit}→\p{PosixXDigit}(=\p{ASCII_Hex_Digit=Y}) — 22\p{ASCII_Hex_Digit: N*}(short:\p{AHex=N},\P{AHex}) — 1_114_090 plus all above-Unicode code points:
[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/:;<=>?\@G-Z\[\\\]\^_`g-z\{\|\}~\x7f-\xff], U+0100..infinity
\p{ASCII_Hex_Digit: Y*}(short:\p{AHex=Y},\p{AHex}) — 22:[0-9A-Fa-f]\p{Assigned}— All assigned code points (294_579: U+0000..0377, U+037A..037F, U+0384..038A, U+038C, U+038E..03A1, U+03A3..052F ...)\p{Avestan}→\p{Script_Extensions=Avestan}(short:\p{Avst}; ⚠️ NOT\p{Block=Avestan}) — 64\p{Avst}→\p{Avestan}(=\p{Script_Extensions=Avestan}) (⚠️ NOT\p{Block=Avestan}) — 64\p{Bali}→\p{Balinese}(=\p{Script_Extensions=Balinese}) (⚠️ NOT\p{Block=Balinese}) — 127\p{Balinese}→\p{Script_Extensions=Balinese}(short:\p{Bali}; ⚠️ NOT\p{Block=Balinese}) — 127\p{Bamu}→\p{Bamum}(=\p{Script_Extensions=Bamum}) (⚠️ NOT\p{Block=Bamum}) — 657\p{Bamum}→\p{Script_Extensions=Bamum}(short:\p{Bamu}; ⚠️ NOT\p{Block=Bamum}) — 657X\p{Bamum_Sup}→\p{Bamum_Supplement}(=\p{Block=Bamum_Supplement}) — 576X\p{Bamum_Supplement}→\p{Block=Bamum_Supplement}(short:\p{InBamumSup}) — 576X\p{Basic_Latin}→\p{ASCII}(=\p{Block=Basic_Latin}) — 128\p{Bass}→\p{Bassa_Vah}(=\p{Script_Extensions=Bassa_Vah}) (⚠️ NOT\p{Block=Bassa_Vah}) — 36\p{Bassa_Vah}→\p{Script_Extensions=Bassa_Vah}(short:\p{Bass}; ⚠️ NOT\p{Block=Bassa_Vah}) — 36\p{Batak}→\p{Script_Extensions=Batak}(short:\p{Batk}; ⚠️ NOT\p{Block=Batak}) — 56\p{Batk}→\p{Batak}(=\p{Script_Extensions=Batak}) (⚠️ NOT\p{Block=Batak}) — 56\p{Bc: *}→ same energy as\p{Bidi_Class: *}🦋\p{Beng}→\p{Bengali}(=\p{Script_Extensions=Bengali}) (⚠️ NOT\p{Block=Bengali}) — 114\p{Bengali}→\p{Script_Extensions=Bengali}(short:\p{Beng}; ⚠️ NOT\p{Block=Bengali}) — 114\p{Bhaiksuki}→\p{Script_Extensions=Bhaiksuki}(short:\p{Bhks}; ⚠️ NOT\p{Block=Bhaiksuki}) — 97\p{Bhks}→\p{Bhaiksuki}(=\p{Script_Extensions=Bhaiksuki}) (⚠️ NOT\p{Block=Bhaiksuki}) — 97\p{Bidi_C}→\p{Bidi_Control}(=\p{Bidi_Control=Y}) — 12\p{Bidi_C: *}→ same energy as\p{Bidi_Control: *}💜\p{Bidi_Class: AL}→\p{Bidi_Class=Arabic_Letter}— 1767\p{Bidi_Class: AN}→\p{Bidi_Class=Arabic_Number}— 73\p{Bidi_Class: Arabic_Letter}(short:\p{Bc=AL}) — 1767: U+0608, U+060B, U+060D, U+061B..064A, U+066D..066F, U+0671..06D5 ...\p{Bidi_Class: Arabic_Number}(short:\p{Bc=AN}) — 73: U+0600..0605, U+0660..0669, U+066B..066C, U+06DD, U+0890..0891, U+08E2 ...\p{Bidi_Class: B}→\p{Bidi_Class=Paragraph_Separator}— 7\p{Bidi_Class: BN}→\p{Bidi_Class=Boundary_Neutral}— 4016\p{Bidi_Class: Boundary_Neutral}(short:\p{Bc=BN}) — 4016:
[^\t\n\cK\f\r\x1c-\x7e\x85\xa0-\xac\xae-\xff], U+180E, U+200B..200D, U+2060..2065, U+206A..206F, U+FDD0..FDEF ...
\p{Bidi_Class: Common_Separator}(short:\p{Bc=CS}) — 15:
[,.\/:\xa0], U+060C, U+202F, U+2044, U+FE50, U+FE52 ...
\p{Bidi_Class: CS}→\p{Bidi_Class=Common_Separator}— 15\p{Bidi_Class: EN}→\p{Bidi_Class=European_Number}— 178\p{Bidi_Class: ES}→\p{Bidi_Class=European_Separator}— 12\p{Bidi_Class: ET}→\p{Bidi_Class=European_Terminator}— 92\p{Bidi_Class: European_Number}(short:\p{Bc=EN}) — 178:
[0-9\xb2-\xb3\xb9], U+06F0..06F9, U+2070, U+2074..2079, U+2080..2089, U+2488..249B ...
\p{Bidi_Class: European_Separator}(short:\p{Bc=ES}) — 12:
[+\-], U+207A..207B, U+208A..208B, U+2212, U+FB29, U+FE62..FE63 ...
\p{Bidi_Class: European_Terminator}(short:\p{Bc=ET}) — 92:
[#\$\%\xa2-\xa5\xb0-\xb1], U+058F, U+0609..060A, U+066A, U+09F2..09F3, U+09FB ...
\p{Bidi_Class: First_Strong_Isolate}(short:\p{Bc=FSI}) — 1: U+2068\p{Bidi_Class: FSI}→\p{Bidi_Class=First_Strong_Isolate}— 1\p{Bidi_Class: L}→\p{Bidi_Class=Left_To_Right}— 1_095_513 plus all above-Unicode code points\p{Bidi_Class: Left_To_Right}(short:\p{Bc=L}) — 1_095_513 plus all above-Unicode code points:
[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff], U+0100..02B8, U+02BB..02C1, U+02D0..02D1, U+02E0..02E4, U+02EE ...
we are so deep in the B's and it's giving alphabet marathon 🏃♀️💨 still more coming, don't you dare close the tab
\p{Bidi_Class: Left_To_Right_Embedding}(Short:\p{Bc=LRE}) (1:U+202A)\p{Bidi_Class: Left_To_Right_Isolate}(Short:\p{Bc=LRI}) (1:U+2066)\p{Bidi_Class: Left_To_Right_Override}(Short:\p{Bc=LRO}) (1:U+202D)\p{Bidi_Class: LRE}=\p{Bidi_Class=Left_To_Right_Embedding}(1)\p{Bidi_Class: LRI}=\p{Bidi_Class=Left_To_Right_Isolate}(1)\p{Bidi_Class: LRO}=\p{Bidi_Class=Left_To_Right_Override}(1)\p{Bidi_Class: Nonspacing_Mark}(Short:\p{Bc=NSM}) (2028:U+0300..036F,U+0483..0489,U+0591..05BD,U+05BF,U+05C1..05C2,U+05C4..05C5...)\p{Bidi_Class: NSM}=\p{Bidi_Class=Nonspacing_Mark}(2028)\p{Bidi_Class: ON}=\p{Bidi_Class=Other_Neutral}(6751)\p{Bidi_Class: Other_Neutral}(Short:\p{Bc=ON}) (6751:`[!\"&\'\(\)*;<=>?\@\[\\\]\^_`\{\|\}~\xa1\xa6-\xa9\xab-\xac\xae-\xaf\xb4\xb6-\xb8\xbb-\xbf\xd7\xf7]`,U+02B9..02BA,U+02C2..02CF,U+02D2..02DF,U+02E5..02ED,U+02EF..02FF...)\p{Bidi_Class: Paragraph_Separator}(Short:\p{Bc=B}) (7:[\n\r\x1c-\x1e\x85],U+2029)\p{Bidi_Class: PDF}=\p{Bidi_Class=Pop_Directional_Format}(1)\p{Bidi_Class: PDI}=\p{Bidi_Class=Pop_Directional_Isolate}(1)\p{Bidi_Class: Pop_Directional_Format}(Short:\p{Bc=PDF}) (1:U+202C)\p{Bidi_Class: Pop_Directional_Isolate}(Short:\p{Bc=PDI}) (1:U+2069)\p{Bidi_Class: R}=\p{Bidi_Class=Right_To_Left}(3631)\p{Bidi_Class: Right_To_Left}(Short:\p{Bc=R}) (3631:U+0590,U+05BE,U+05C0,U+05C3,U+05C6,U+05C8..05FF...)\p{Bidi_Class: Right_To_Left_Embedding}(Short:\p{Bc=RLE}) (1:U+202B)\p{Bidi_Class: Right_To_Left_Isolate}(Short:\p{Bc=RLI}) (1:U+2067)\p{Bidi_Class: Right_To_Left_Override}(Short:\p{Bc=RLO}) (1:U+202E)\p{Bidi_Class: RLE}=\p{Bidi_Class=Right_To_Left_Embedding}(1)\p{Bidi_Class: RLI}=\p{Bidi_Class=Right_To_Left_Isolate}(1)\p{Bidi_Class: RLO}=\p{Bidi_Class=Right_To_Left_Override}(1)\p{Bidi_Class: S}=\p{Bidi_Class=Segment_Separator}(3)\p{Bidi_Class: Segment_Separator}(Short:\p{Bc=S}) (3:[\t\cK\x1f])\p{Bidi_Class: White_Space}(Short:\p{Bc=WS}) (17:[\f\x20],U+1680,U+2000..200A,U+2028,U+205F,U+3000)\p{Bidi_Class: WS}=\p{Bidi_Class=White_Space}(17)
ok bestie the bidi class list is DONE, we ate 🍓 now let's slide into Bidi_Control — she's short but she's important, don't sleep on her 💅
\p{Bidi_Control}=\p{Bidi_Control=Y}(Short:\p{BidiC}) (12)\p{Bidi_Control: N*}(Short:\p{BidiC=N},\P{BidiC}) (1_114_100 plus all above-Unicode code points:U+0000..061B,U+061D..200D,U+2010..2029,U+202F..2065,U+206A..infinity)\p{Bidi_Control: Y*}(Short:\p{BidiC=Y},\p{BidiC}) (12:U+061C,U+200E..200F,U+202A..202E,U+2066..2069)
and now… mirror mirror on the wall 🪞 it's Bidi_M time, no cap
\p{Bidi_M}=\p{Bidi_Mirrored}(=\p{Bidi_Mirrored=Y}) (554)\p{Bidi_M: *}=\p{Bidi_Mirrored: *}\p{Bidi_Mirrored}=\p{Bidi_Mirrored=Y}(Short:\p{BidiM}) (554)\p{Bidi_Mirrored: N*}(Short:\p{BidiM=N},\P{BidiM}) (1_113_558 plus all above-Unicode code points:`[\x00-\x20!\"#\$\%&\'*+,\-.\/0-9:;=?\@A-Z\\\^_`a-z\|~\x7f-\xaa\xac-\xba\xbc-\xff]`,U+0100..0F39,U+0F3E..169A,U+169D..2038,U+203B..2044,U+2047..207C...)\p{Bidi_Mirrored: Y*}(Short:\p{BidiM=Y},\p{BidiM}) (554:[\(\)<>\[\]\{\}\xab\xbb],U+0F3A..0F3D,U+169B..169C,U+2039..203A,U+2045..2046,U+207D..207E...)
next up, brackets that know their partner 😭 the Bidi_Paired_Bracket_Type girlies:
\p{Bidi_Paired_Bracket_Type: C}=\p{Bidi_Paired_Bracket_Type=Close}(64)\p{Bidi_Paired_Bracket_Type: Close}(Short:\p{Bpt=C}) (64:[\)\]\}],U+0F3B,U+0F3D,U+169C,U+2046,U+207E...)\p{Bidi_Paired_Bracket_Type: N}=\p{Bidi_Paired_Bracket_Type=None}(1_113_984 plus all above-Unicode code points)\p{Bidi_Paired_Bracket_Type: None}(Short:\p{Bpt=N}) (1_113_984 plus all above-Unicode code points:`[\x00-\x20!\"#\$\%&\'*+,\-.\/0-9:;<=>?\@A-Z\\\^_`a-z\|~\x7f-\xff]`,U+0100..0F39,U+0F3E..169A,U+169D..2044,U+2047..207C,U+207F..208C...)\p{Bidi_Paired_Bracket_Type: O}=\p{Bidi_Paired_Bracket_Type=Open}(64)\p{Bidi_Paired_Bracket_Type: Open}(Short:\p{Bpt=O}) (64:[\(\[\{],U+0F3A,U+0F3C,U+169B,U+2045,U+207D...)
quick lil queen, one line only, she's lowkey iconic 🎀
\p{Blank}=\p{XPosixBlank}(18)
OK AND NOW THE MAIN EVENT 🫶 the Block properties — yes \p{Blk} is the same thing, they're twins, periodt:
\p{Blk: *}=\p{Block: *}\p{Block: Adlam}(NOT\p{Adlam}NOR\p{Is_Adlam}) (96:U+1E900..1E95F)\p{Block: Aegean_Numbers}(64:U+10100..1013F)\p{Block: Ahom}(NOT\p{Ahom}NOR\p{Is_Ahom}) (80:U+11700..1174F)\p{Block: Alchemical}=\p{Block=Alchemical_Symbols}(128)\p{Block: Alchemical_Symbols}(Short:\p{Blk=Alchemical}) (128:U+1F700..1F77F)\p{Block: Alphabetic_PF}=\p{Block=Alphabetic_Presentation_Forms}(80)\p{Block: Alphabetic_Presentation_Forms}(Short:\p{Blk=AlphabeticPF}) (80:U+FB00..FB4F)\p{Block: Anatolian_Hieroglyphs}(NOT\p{Anatolian_Hieroglyphs}NOR\p{Is_Anatolian_Hieroglyphs}) (640:U+14400..1467F)\p{Block: Ancient_Greek_Music}=\p{Block=Ancient_Greek_Musical_Notation}(80)\p{Block: Ancient_Greek_Musical_Notation}(Short:\p{Blk=AncientGreekMusic}) (80:U+1D200..1D24F)\p{Block: Ancient_Greek_Numbers}(80:U+10140..1018F)\p{Block: Ancient_Symbols}(64:U+10190..101CF)\p{Block: Arabic}(NOT\p{Arabic}NOR\p{Is_Arabic}) (256:U+0600..06FF)\p{Block: Arabic_Ext_A}=\p{Block=Arabic_Extended_A}(96)\p{Block: Arabic_Ext_B}=\p{Block=Arabic_Extended_B}(48)\p{Block: Arabic_Ext_C}=\p{Block=Arabic_Extended_C}(64)\p{Block: Arabic_Extended_A}(Short:\p{Blk=ArabicExtA}) (96:U+08A0..08FF)\p{Block: Arabic_Extended_B}(Short:\p{Blk=ArabicExtB}) (48:U+0870..089F)\p{Block: Arabic_Extended_C}(Short:\p{Blk=ArabicExtC}) (64:U+10EC0..10EFF)\p{Block: Arabic_Math}=\p{Block=Arabic_Mathematical_Alphabetic_Symbols}(256)\p{Block: Arabic_Mathematical_Alphabetic_Symbols}(Short:\p{Blk=ArabicMath}) (256:U+1EE00..1EEFF)\p{Block: Arabic_PF_A}=\p{Block=Arabic_Presentation_Forms_A}(688)\p{Block: Arabic_PF_B}=\p{Block=Arabic_Presentation_Forms_B}(144)\p{Block: Arabic_Presentation_Forms_A}(Short:\p{Blk=ArabicPFA}) (688:U+FB50..FDFF)\p{Block: Arabic_Presentation_Forms_B}(Short:\p{Blk=ArabicPFB}) (144:U+FE70..FEFF)\p{Block: Arabic_Sup}=\p{Block=Arabic_Supplement}(48)\p{Block: Arabic_Supplement}(Short:\p{Blk=ArabicSup}) (48:U+0750..077F)\p{Block: Armenian}(NOT\p{Armenian}NOR\p{Is_Armenian}) (96:U+0530..058F)\p{Block: Arrows}(112:U+2190..21FF)\p{Block: ASCII}=\p{Block=Basic_Latin}(128)\p{Block: Avestan}(NOT\p{Avestan}NOR\p{Is_Avestan}) (64:U+10B00..10B3F)\p{Block: Balinese}(NOT\p{Balinese}NOR\p{Is_Balinese}) (128:U+1B00..1B7F)\p{Block: Bamum}(NOT\p{Bamum}NOR\p{Is_Bamum}) (96:U+A6A0..A6FF)\p{Block: Bamum_Sup}=\p{Block=Bamum_Supplement}(576)\p{Block: Bamum_Supplement}(Short:\p{Blk=BamumSup}) (576:U+16800..16A3F)\p{Block: Basic_Latin}(Short:\p{Blk=ASCII}) (128:[\x00-\x7f])\p{Block: Bassa_Vah}(NOT\p{Bassa_Vah}NOR\p{Is_Bassa_Vah}) (48:U+16AD0..16AFF)\p{Block: Batak}(NOT\p{Batak}NOR\p{Is_Batak}) (64:U+1BC0..1BFF)\p{Block: Bengali}(NOT\p{Bengali}NOR\p{Is_Bengali}) (128:U+0980..09FF)\p{Block: Bhaiksuki}(NOT\p{Bhaiksuki}NOR\p{Is_Bhaiksuki}) (112:U+11C00..11C6F)\p{Block: Block_Elements}(32:U+2580..259F)\p{Block: Bopomofo}(NOT\p{Bopomofo}NOR\p{Is_Bopomofo}) (48:U+3100..312F)\p{Block: Bopomofo_Ext}=\p{Block=Bopomofo_Extended}(32)\p{Block: Bopomofo_Extended}(Short:\p{Blk=BopomofoExt}) (32:U+31A0..31BF)\p{Block: Box_Drawing}(128:U+2500..257F)\p{Block: Brahmi}(NOT\p{Brahmi}NOR\p{Is_Brahmi}) (128:U+11000..1107F)\p{Block: Braille}=\p{Block=Braille_Patterns}(256)\p{Block: Braille_Patterns}(Short:\p{Blk=Braille}) (256:U+2800..28FF)\p{Block: Buginese}(NOT\p{Buginese}NOR\p{Is_Buginese}) (32:U+1A00..1A1F)\p{Block: Buhid}(NOT\p{Buhid}NOR\p{Is_Buhid}) (32:U+1740..175F)\p{Block: Byzantine_Music}=\p{Block=Byzantine_Musical_Symbols}(256)\p{Block: Byzantine_Musical_Symbols}(Short:\p{Blk=ByzantineMusic}) (256:U+1D000..1D0FF)\p{Block: Canadian_Syllabics}=\p{Block=Unified_Canadian_Aboriginal_Syllabics}\p{Block: Carian}—64code points,U+102A0..102DF. 💀 And no, bestie, it is NOT\p{Carian}NOR\p{Is_Carian}— those are the script names. Block needs theBlock:drip. 🎀\p{Block: Caucasian_Albanian}—64code points,U+10530..1056F. Again: NOT\p{Caucasian_Albanian}NOR\p{Is_Caucasian_Albanian}. 🦋\p{Block: Chakma}—80code points,U+11100..1114F. NOT\p{Chakma}NOR\p{Is_Chakma}, periodt. 💅\p{Block: Cham}—96code points,U+AA00..AA5F. NOT\p{Cham}NOR\p{Is_Cham}. 🔥\p{Block: Cherokee}—96code points,U+13A0..13FF. NOT\p{Cherokee}NOR\p{Is_Cherokee}— the block and the script are two different girls. 👑\p{Block: Cherokee_Sup}and\p{Block=Cherokee_Supplement}— same block,80code points, two ways in. 🌸\p{Block: Cherokee_Supplement}— short form\p{Blk=CherokeeSup},80code points,U+AB70..ABBF. ✨\p{Block: Chess_Symbols}—112code points,U+1FA00..1FA6F. Yes queen, an entire block for chess pieces. ♟️🌈\p{Block: Chorasmian}—48code points,U+10FB0..10FDF. NOT\p{Chorasmian}NOR\p{Is_Chorasmian}. 🦋\p{Block: CJK}and\p{Block=CJK_Unified_Ideographs}— the big one,20_992code points. 👑 (note the underscore in the number, that's how they write it, don't @ me)\p{Block: CJK_Compat}and\p{Block=CJK_Compatibility}—256code points, aliases of each other. 🎀\p{Block: CJK_Compat_Forms}and\p{Block=CJK_Compatibility_Forms}—32code points. 💜\p{Block: CJK_Compat_Ideographs}and\p{Block=CJK_Compatibility_Ideographs}—512code points. 🌈\p{Block: CJK_Compat_Ideographs_Sup}and\p{Block=CJK_Compatibility_Ideographs_Supplement}—544code points. ✨\p{Block: CJK_Compatibility}— short form\p{Blk=CJKCompat},256code points,U+3300..33FF. 🫶\p{Block: CJK_Compatibility_Forms}— short form\p{Blk=CJKCompatForms},32code points,U+FE30..FE4F. 🎀\p{Block: CJK_Compatibility_Ideographs}— short form\p{Blk=CJKCompatIdeographs},512code points,U+F900..FAFF. 💖\p{Block: CJK_Compatibility_Ideographs_Supplement}— short form\p{Blk=CJKCompatIdeographsSup},544code points,U+2F800..2FA1F. 💅\p{Block: CJK_Ext_A}and\p{Block=CJK_Unified_Ideographs_Extension_A}—6592code points. 🔥\p{Block: CJK_Ext_B}and\p{Block=CJK_Unified_Ideographs_Extension_B}—42_720code points. That's not a typo, it's literally forty-two thousand plus. 😭\p{Block: CJK_Ext_C}and\p{Block=CJK_Unified_Ideographs_Extension_C}—4160code points. ✨\p{Block: CJK_Ext_D}and\p{Block=CJK_Unified_Ideographs_Extension_D}—224code points. 🦋\p{Block: CJK_Ext_E}and\p{Block=CJK_Unified_Ideographs_Extension_E}—5776code points. 🌸\p{Block: CJK_Ext_F}and\p{Block=CJK_Unified_Ideographs_Extension_F}—7488code points. 💜\p{Block: CJK_Ext_G}and\p{Block=CJK_Unified_Ideographs_Extension_G}—4944code points. 👑\p{Block: CJK_Ext_H}and\p{Block=CJK_Unified_Ideographs_Extension_H}—4192code points. 🎀\p{Block: CJK_Ext_I}and\p{Block=CJK_Unified_Ideographs_Extension_I}—624code points. 💖\p{Block: CJK_Radicals_Sup}and\p{Block=CJK_Radicals_Supplement}—128code points. 🌈\p{Block: CJK_Radicals_Supplement}— short form\p{Blk=CJKRadicalsSup},128code points,U+2E80..2EFF. ✨\p{Block: CJK_Strokes}—48code points,U+31C0..31EF. 💅\p{Block: CJK_Symbols}and\p{Block=CJK_Symbols_And_Punctuation}—64code points. 🫶\p{Block: CJK_Symbols_And_Punctuation}— short form\p{Blk=CJKSymbols},64code points,U+3000..303F. 🎀\p{Block: CJK_Unified_Ideographs}— short form\p{Blk=CJK},20_992code points,U+4E00..9FFF. The moment. 👑\p{Block: CJK_Unified_Ideographs_Extension_A}— short form\p{Blk=CJKExtA},6592code points,U+3400..4DBF. 🔥\p{Block: CJK_Unified_Ideographs_Extension_B}— short form\p{Blk=CJKExtB},42_720code points,U+20000..2A6DF. 😭\p{Block: CJK_Unified_Ideographs_Extension_C}— short form\p{Blk=CJKExtC},4160code points,U+2A700..2B73F. ✨\p{Block: CJK_Unified_Ideographs_Extension_D}— short form\p{Blk=CJKExtD},224code points,U+2B740..2B81F. 🦋\p{Block: CJK_Unified_Ideographs_Extension_E}— short form\p{Blk=CJKExtE},5776code points,U+2B820..2CEAF. 🌸\p{Block: CJK_Unified_Ideographs_Extension_F}— short form\p{Blk=CJKExtF},7488code points,U+2CEB0..2EBEF. 💜\p{Block: CJK_Unified_Ideographs_Extension_G}— short form\p{Blk=CJKExtG},4944code points,U+30000..3134F. 👑\p{Block: CJK_Unified_Ideographs_Extension_H}— short form\p{Blk=CJKExtH},4192code points,U+31350..323AF. 🎀\p{Block: CJK_Unified_Ideographs_Extension_I}— short form\p{Blk=CJKExtI},624code points,U+2EBF0..2EE5F. 💖\p{Block: Combining_Diacritical_Marks}— short form\p{Blk=Diacriticals},112code points,U+0300..036F. 🌈\p{Block: Combining_Diacritical_Marks_Extended}— short form\p{Blk=DiacriticalsExt},80code points,U+1AB0..1AFF. ✨\p{Block: Combining_Diacritical_Marks_For_Symbols}— short form\p{Blk=DiacriticalsForSymbols},48code points,U+20D0..20FF. 💅\p{Block: Combining_Diacritical_Marks_Supplement}— short form\p{Blk=DiacriticalsSup},64code points,U+1DC0..1DFF. 🫶\p{Block: Combining_Half_Marks}— short form\p{Blk=HalfMarks},16code points,U+FE20..FE2F. 🎀\p{Block: Combining_Marks_For_Symbols}and\p{Block=Combining_Diacritical_Marks_For_Symbols}— same thing,48code points. 💖\p{Block: Common_Indic_Number_Forms}— short form\p{Blk=IndicNumberForms},16code points,U+A830..A83F. 🌸\p{Block: Compat_Jamo}and\p{Block=Hangul_Compatibility_Jamo}—96code points. ✨\p{Block: Control_Pictures}—64code points,U+2400..243F. 🔥\p{Block: Coptic}—128code points,U+2C80..2CFF. NOT\p{Coptic}NOR\p{Is_Coptic}. 💀\p{Block: Coptic_Epact_Numbers}—32code points,U+102E0..102FF. 🦋\p{Block: Counting_Rod}and\p{Block=Counting_Rod_Numerals}—32code points. 🎀\p{Block: Counting_Rod_Numerals}— short form\p{Blk=CountingRod},32code points,U+1D360..1D37F. ✨\p{Block: Cuneiform}—1024code points,U+12000..123FF. NOT\p{Cuneiform}NOR\p{Is_Cuneiform}. 🫶\p{Block: Cuneiform_Numbers}and\p{Block=Cuneiform_Numbers_And_Punctuation}—128code points. 🌈\p{Block: Cuneiform_Numbers_And_Punctuation}— short form\p{Blk=CuneiformNumbers},128code points,U+12400..1247F. 💜\p{Block: Currency_Symbols}—48code points,U+20A0..20CF. 💸 the money block fr fr\p{Block: Cypriot_Syllabary}—64code points,U+10800..1083F. 🎀\p{Block: Cypro_Minoan}—112code points,U+12F90..12FFF. NOT\p{Cypro_Minoan}NOR\p{Is_Cypro_Minoan}. 🦋\p{Block: Cyrillic}—256code points,U+0400..04FF. NOT\p{Cyrillic}NOR\p{Is_Cyrillic}. 👑\p{Block: Cyrillic_Ext_A}and\p{Block=Cyrillic_Extended_A}—32code points. ✨\p{Block: Cyrillic_Ext_B}and\p{Block=Cyrillic_Extended_B}—96code points. 🌸\p{Block: Cyrillic_Ext_C}and\p{Block=Cyrillic_Extended_C}—16code points. 💅\p{Block: Cyrillic_Ext_D}and\p{Block=Cyrillic_Extended_D}—96code points. 🫶\p{Block: Cyrillic_Extended_A}— short form\p{Blk=CyrillicExtA},32code points,U+2DE0..2DFF. 🎀\p{Block: Cyrillic_Extended_B}— short form\p{Blk=CyrillicExtB},96code points,U+A640..A69F. 💖\p{Block: Cyrillic_Extended_C}— short form\p{Blk=CyrillicExtC},16code points,U+1C80..1C8F. ✨\p{Block: Cyrillic_Extended_D}— short form\p{Blk=CyrillicExtD},96code points,U+1E030..1E08F. 🌈\p{Block: Cyrillic_Sup}and\p{Block=Cyrillic_Supplement}—48code points. 🦋\p{Block: Cyrillic_Supplement}— short form\p{Blk=CyrillicSup},48code points,U+0500..052F. 💜\p{Block: Cyrillic_Supplementary}and\p{Block=Cyrillic_Supplement}—48code points. (Yes, "Supplementary" and "Supplement" both point at the same block — iconic behaviour honestly.) 👑\p{Block: Deseret}—80code points,U+10400..1044F. ✨\p{Block: Devanagari}—128code points,U+0900..097F. NOT\p{Devanagari}NOR\p{Is_Devanagari}. 🎀\p{Block: Devanagari_Ext}and\p{Block=Devanagari_Extended}—32code points. 🌸\p{Block: Devanagari_Ext_A}and\p{Block=Devanagari_Extended_A}—96code points. 💅\p{Block: Devanagari_Extended}— short form\p{Blk=DevanagariExt},32code points,U+A8E0..A8FF. 🫶\p{Block: Devanagari_Extended_A}— short form\p{Blk=DevanagariExtA},96code points,U+11B00..11B5F. 💖\p{Block: Diacriticals}and\p{Block=Combining_Diacritical_Marks}—112code points. 🌈\p{Block: Diacriticals_Ext}and\p{Block=Combining_Diacritical_Marks_Extended}—80code points. ✨\p{Block: Diacriticals_For_Symbols}and\p{Block=Combining_Diacritical_Marks_For_Symbols}—48code points. 🦋\p{Block: Diacriticals_Sup}and\p{Block=Combining_Diacritical_Marks_Supplement}—64code points. 💜\p{Block: Dingbats}—192code points,U+2700..27BF. ✨\p{Block: Dives_Akuru}—96code points,U+11900..1195F. NOT\p{Dives_Akuru}NOR\p{Is_Dives_Akuru}. 🎀\p{Block: Dogra}—80code points,U+11800..1184F. NOT\p{Dogra}NOR\p{Is_Dogra}. 🌸\p{Block: Domino}and\p{Block=Domino_Tiles}—112code points. 🁣🁤 obsessed\p{Block: Domino_Tiles}— short form\p{Blk=Domino},112code points,U+1F030..1F09F. 💅\p{Block: Duployan}—160code points,U+1BC00..1BC9F. NOT\p{Duployan}NOR\p{Is_Duployan}. 🫶\p{Block: Early_Dynastic_Cuneiform}—208code points,U+12480..1254F. 💖\p{Block: Egyptian_Hieroglyph_Format_Controls}—48code points,U+13430..1345F. 🌈\p{Block: Egyptian_Hieroglyphs}—1072code points,U+13000..1342F. NOT\p{Egyptian_Hieroglyphs}NOR\p{Is_Egyptian_Hieroglyphs}. 🦋\p{Block: Egyptian_Hieroglyphs_Ext_A}and\p{Block=Egyptian_Hieroglyphs_Extended_A}—4000code points. ✨\p{Block: Egyptian_Hieroglyphs_Extended_A}— short form\p{Blk=EgyptianHieroglyphsExtA},4000code points,U+13460..143FF. 💜\p{Block: Elbasan}—48code points,U+10500..1052F. NOT\p{Elbasan}NOR\p{Is_Elbasan}. 🎀\p{Block: Elymaic}—32code points,U+10FE0..10FFF. NOT\p{Elymaic}NOR\p{Is_Elymaic}. 🌸\p{Block: Emoticons}—80code points,U+1F600..1F64F. 😭💖 the vibe check block\p{Block: Enclosed_Alphanum}and\p{Block=Enclosed_Alphanumerics}—160code points. 💅\p{Block: Enclosed_Alphanum_Sup}and\p{Block=Enclosed_Alphanumeric_Supplement}—256code points. 🫶
okay continuing the block tour, no we are not done yet, there are SO many of these and every single one matters 💅
\p{Block: Enclosed_Alphanumeric_Supplement}— short form\p{Blk=EnclosedAlphanumSup}— 256 chars,U+1F100..1F1FF\p{Block: Enclosed_Alphanumerics}— short form\p{Blk=EnclosedAlphanum}— 160 chars,U+2460..24FF\p{Block: Enclosed_CJK}and\p{Block=Enclosed_CJK_Letters_And_Months}— 256\p{Block: Enclosed_CJK_Letters_And_Months}— short form\p{Blk=EnclosedCJK}— 256 chars,U+3200..32FF\p{Block: Enclosed_Ideographic_Sup}and\p{Block=Enclosed_Ideographic_Supplement}— 256\p{Block: Enclosed_Ideographic_Supplement}— short form\p{Blk=EnclosedIdeographicSup}— 256 chars,U+1F200..1F2FF\p{Block: Ethiopic}— 🚫 NOT\p{Ethiopic}NOR\p{Is_Ethiopic}— 384 chars,U+1200..137F\p{Block: Ethiopic_Ext}and\p{Block=Ethiopic_Extended}— 96\p{Block: Ethiopic_Ext_A}and\p{Block=Ethiopic_Extended_A}— 48\p{Block: Ethiopic_Ext_B}and\p{Block=Ethiopic_Extended_B}— 32\p{Block: Ethiopic_Extended}— short form\p{Blk=EthiopicExt}— 96 chars,U+2D80..2DDF\p{Block: Ethiopic_Extended_A}— short form\p{Blk=EthiopicExtA}— 48 chars,U+AB00..AB2F\p{Block: Ethiopic_Extended_B}— short form\p{Blk=EthiopicExtB}— 32 chars,U+1E7E0..1E7FF\p{Block: Ethiopic_Sup}and\p{Block=Ethiopic_Supplement}— 32\p{Block: Ethiopic_Supplement}— short form\p{Blk=EthiopicSup}— 32 chars,U+1380..139F\p{Block: Garay}— 🚫 NOT\p{Garay}NOR\p{Is_Garay}— 80 chars,U+10D40..10D8F\p{Block: General_Punctuation}— short form\p{Blk=Punctuation}; 🚫 NOT\p{Punct}NOR\p{Is_Punctuation}— 112 chars,U+2000..206F\p{Block: Geometric_Shapes}— 96 chars,U+25A0..25FF\p{Block: Geometric_Shapes_Ext}and\p{Block=Geometric_Shapes_Extended}— 128\p{Block: Geometric_Shapes_Extended}— short form\p{Blk=GeometricShapesExt}— 128 chars,U+1F780..1F7FF\p{Block: Georgian}— 🚫 NOT\p{Georgian}NOR\p{Is_Georgian}— 96 chars,U+10A0..10FF\p{Block: Georgian_Ext}and\p{Block=Georgian_Extended}— 48\p{Block: Georgian_Extended}— short form\p{Blk=GeorgianExt}— 48 chars,U+1C90..1CBF\p{Block: Georgian_Sup}and\p{Block=Georgian_Supplement}— 48\p{Block: Georgian_Supplement}— short form\p{Blk=GeorgianSup}— 48 chars,U+2D00..2D2F\p{Block: Glagolitic}— 🚫 NOT\p{Glagolitic}NOR\p{Is_Glagolitic}— 96 chars,U+2C00..2C5F\p{Block: Glagolitic_Sup}and\p{Block=Glagolitic_Supplement}— 48\p{Block: Glagolitic_Supplement}— short form\p{Blk=GlagoliticSup}— 48 chars,U+1E000..1E02F\p{Block: Gothic}— 🚫 NOT\p{Gothic}NOR\p{Is_Gothic}— 32 chars,U+10330..1034F\p{Block: Grantha}— 🚫 NOT\p{Grantha}NOR\p{Is_Grantha}— 128 chars,U+11300..1137F\p{Block: Greek}and\p{Block=Greek_And_Coptic}— 🚫 NOT\p{Greek}NOR\p{Is_Greek}— 144\p{Block: Greek_And_Coptic}— short form\p{Blk=Greek}; 🚫 NOT\p{Greek}NOR\p{Is_Greek}— 144 chars,U+0370..03FF\p{Block: Greek_Ext}and\p{Block=Greek_Extended}— 256\p{Block: Greek_Extended}— short form\p{Blk=GreekExt}— 256 chars,U+1F00..1FFF\p{Block: Gujarati}— 🚫 NOT\p{Gujarati}NOR\p{Is_Gujarati}— 128 chars,U+0A80..0AFF\p{Block: Gunjala_Gondi}— 🚫 NOT\p{Gunjala_Gondi}NOR\p{Is_Gunjala_Gondi}— 80 chars,U+11D60..11DAF\p{Block: Gurmukhi}— 🚫 NOT\p{Gurmukhi}NOR\p{Is_Gurmukhi}— 128 chars,U+0A00..0A7F\p{Block: Gurung_Khema}— 🚫 NOT\p{Gurung_Khema}NOR\p{Is_Gurung_Khema}— 64 chars,U+16100..1613F\p{Block: Half_And_Full_Forms}and\p{Block=Halfwidth_And_Fullwidth_Forms}— 240\p{Block: Half_Marks}and\p{Block=Combining_Half_Marks}— 16\p{Block: Halfwidth_And_Fullwidth_Forms}— short form\p{Blk=HalfAndFullForms}— 240 chars,U+FF00..FFEF\p{Block: Hangul}and\p{Block=Hangul_Syllables}— 🚫 NOT\p{Hangul}NOR\p{Is_Hangul}—11_184\p{Block: Hangul_Compatibility_Jamo}— short form\p{Blk=CompatJamo}— 96 chars,U+3130..318F\p{Block: Hangul_Jamo}— short form\p{Blk=Jamo}— 256 chars,U+1100..11FF\p{Block: Hangul_Jamo_Extended_A}— short form\p{Blk=JamoExtA}— 32 chars,U+A960..A97F\p{Block: Hangul_Jamo_Extended_B}— short form\p{Blk=JamoExtB}— 80 chars,U+D7B0..D7FF\p{Block: Hangul_Syllables}— short form\p{Blk=Hangul}; 🚫 NOT\p{Hangul}NOR\p{Is_Hangul}—11_184chars,U+AC00..D7AF\p{Block: Hanifi_Rohingya}— 🚫 NOT\p{Hanifi_Rohingya}NOR\p{Is_Hanifi_Rohingya}— 64 chars,U+10D00..10D3F\p{Block: Hanunoo}— 🚫 NOT\p{Hanunoo}NOR\p{Is_Hanunoo}— 32 chars,U+1720..173F\p{Block: Hatran}— 🚫 NOT\p{Hatran}NOR\p{Is_Hatran}— 32 chars,U+108E0..108FF\p{Block: Hebrew}— 🚫 NOT\p{Hebrew}NOR\p{Is_Hebrew}— 112 chars,U+0590..05FF\p{Block: High_Private_Use_Surrogates}— short form\p{Blk=HighPUSurrogates}— 128 chars,U+DB80..DBFF\p{Block: High_PU_Surrogates}and\p{Block=High_Private_Use_Surrogates}— 128\p{Block: High_Surrogates}— 896 chars,U+D800..DB7F\p{Block: Hiragana}— 🚫 NOT\p{Hiragana}NOR\p{Is_Hiragana}— 96 chars,U+3040..309F\p{Block: IDC}and\p{Block=Ideographic_Description_Characters}— 🚫 NOT\p{ID_Continue}NOR\p{Is_IDC}— 16\p{Block: Ideographic_Description_Characters}— short form\p{Blk=IDC}; 🚫 NOT\p{ID_Continue}NOR\p{Is_IDC}— 16 chars,U+2FF0..2FFF\p{Block: Ideographic_Symbols}and\p{Block=Ideographic_Symbols_And_Punctuation}— 32\p{Block: Ideographic_Symbols_And_Punctuation}— short form\p{Blk=IdeographicSymbols}— 32 chars,U+16FE0..16FFF\p{Block: Imperial_Aramaic}— 🚫 NOT\p{Imperial_Aramaic}NOR\p{Is_Imperial_Aramaic}— 32 chars,U+10840..1085F\p{Block: Indic_Number_Forms}and\p{Block=Common_Indic_Number_Forms}— 16\p{Block: Indic_Siyaq_Numbers}— 80 chars,U+1EC70..1ECBF\p{Block: Inscriptional_Pahlavi}— 🚫 NOT\p{Inscriptional_Pahlavi}NOR\p{Is_Inscriptional_Pahlavi}— 32 chars,U+10B60..10B7F\p{Block: Inscriptional_Parthian}— 🚫 NOT\p{Inscriptional_Parthian}NOR\p{Is_Inscriptional_Parthian}— 32 chars,U+10B40..10B5F\p{Block: IPA_Ext}and\p{Block=IPA_Extensions}— 96\p{Block: IPA_Extensions}— short form\p{Blk=IPAExt}— 96 chars,U+0250..02AF\p{Block: Jamo}and\p{Block=Hangul_Jamo}— 256\p{Block: Jamo_Ext_A}and\p{Block=Hangul_Jamo_Extended_A}— 32\p{Block: Jamo_Ext_B}and\p{Block=Hangul_Jamo_Extended_B}— 80\p{Block: Javanese}— 🚫 NOT\p{Javanese}NOR\p{Is_Javanese}— 96 chars,U+A980..A9DF\p{Block: Kaithi}— 🚫 NOT\p{Kaithi}NOR\p{Is_Kaithi}— 80 chars,U+11080..110CF\p{Block: Kaktovik_Numerals}— 32 chars,U+1D2C0..1D2DF\p{Block: Kana_Ext_A}and\p{Block=Kana_Extended_A}— 48\p{Block: Kana_Ext_B}and\p{Block=Kana_Extended_B}— 16\p{Block: Kana_Extended_A}— short form\p{Blk=KanaExtA}— 48 chars,U+1B100..1B12F\p{Block: Kana_Extended_B}— short form\p{Blk=KanaExtB}— 16 chars,U+1AFF0..1AFFF\p{Block: Kana_Sup}and\p{Block=Kana_Supplement}— 256\p{Block: Kana_Supplement}— short form\p{Blk=KanaSup}— 256 chars,U+1B000..1B0FF\p{Block: Kanbun}— 16 chars,U+3190..319F\p{Block: Kangxi}and\p{Block=Kangxi_Radicals}— 224\p{Block: Kangxi_Radicals}— short form\p{Blk=Kangxi}— 224 chars,U+2F00..2FDF\p{Block: Kannada}— 🚫 NOT\p{Kannada}NOR\p{Is_Kannada}— 128 chars,U+0C80..0CFF\p{Block: Katakana}— 🚫 NOT\p{Katakana}NOR\p{Is_Katakana}— 96 chars,U+30A0..30FF\p{Block: Katakana_Ext}and\p{Block=Katakana_Phonetic_Extensions}— 16\p{Block: Katakana_Phonetic_Extensions}— short form\p{Blk=KatakanaExt}— 16 chars,U+31F0..31FF\p{Block: Kawi}— 🚫 NOT\p{Kawi}NOR\p{Is_Kawi}— 96 chars,U+11F00..11F5F\p{Block: Kayah_Li}— 48 chars,U+A900..A92F\p{Block: Kharoshthi}— 🚫 NOT\p{Kharoshthi}NOR\p{Is_Kharoshthi}— 96 chars,U+10A00..10A5F\p{Block: Khitan_Small_Script}— 🚫 NOT\p{Khitan_Small_Script}NOR\p{Is_Khitan_Small_Script}— 512 chars,U+18B00..18CFF\p{Block: Khmer}— 🚫 NOT\p{Khmer}NOR\p{Is_Khmer}— 128 chars,U+1780..17FF\p{Block: Khmer_Symbols}— 32 chars,U+19E0..19FF\p{Block: Khojki}— 🚫 NOT\p{Khojki}NOR\p{Is_Khojki}— 80 chars,U+11200..1124F\p{Block: Khudawadi}— 🚫 NOT\p{Khudawadi}NOR\p{Is_Khudawadi}— 80 chars,U+112B0..112FF\p{Block: Kirat_Rai}— 🚫 NOT\p{Kirat_Rai}NOR\p{Is_Kirat_Rai}— 64 chars,U+16D40..16D7F\p{Block: Lao}— 🚫 NOT\p{Lao}NOR\p{Is_Lao}— 128 chars,U+0E80..0EFF\p{Block: Latin_1}and\p{Block=Latin_1_Supplement}— 128\p{Block: Latin_1_Sup}and\p{Block=Latin_1_Supplement}— 128\p{Block: Latin_1_Supplement}— short form\p{Blk=Latin1}— 128 chars,[\x80-\xff]\p{Block: Latin_Ext_A}and\p{Block=Latin_Extended_A}— 128\p{Block: Latin_Ext_Additional}and\p{Block=Latin_Extended_Additional}— 256\p{Block: Latin_Ext_B}and\p{Block=Latin_Extended_B}— 208\p{Block: Latin_Ext_C}and\p{Block=Latin_Extended_C}— 32\p{Block: Latin_Ext_D}and\p{Block=Latin_Extended_D}— 224
still going bestie, don't close the tab 🫶
okay bestie, continuing the block-name buffet — no skips, no cap. These are all the \p{Block: ...} aliases with their counts and ranges, and some of them are NOT the same as the script property, so watch your step. 🫶
\p{Block: Latin_Ext_E},\p{Block=Latin_Extended_E}— 64. 💖\p{Block: Latin_Ext_F},\p{Block=Latin_Extended_F}— 64. 💖\p{Block: Latin_Ext_G},\p{Block=Latin_Extended_G}— 256. 💖\p{Block: Latin_Extended_A}(Short:\p{Blk=LatinExtA}) — 128:U+0100..017F. ✨\p{Block: Latin_Extended_Additional}(Short:\p{Blk=LatinExtAdditional}) — 256:U+1E00..1EFF. ✨\p{Block: Latin_Extended_B}(Short:\p{Blk=LatinExtB}) — 208:U+0180..024F. ✨\p{Block: Latin_Extended_C}(Short:\p{Blk=LatinExtC}) — 32:U+2C60..2C7F. ✨\p{Block: Latin_Extended_D}(Short:\p{Blk=LatinExtD}) — 224:U+A720..A7FF. ✨\p{Block: Latin_Extended_E}(Short:\p{Blk=LatinExtE}) — 64:U+AB30..AB6F. ✨\p{Block: Latin_Extended_F}(Short:\p{Blk=LatinExtF}) — 64:U+10780..107BF. ✨\p{Block: Latin_Extended_G}(Short:\p{Blk=LatinExtG}) — 256:U+1DF00..1DFFF. ✨\p{Block: Lepcha}— heads up: NOT\p{Lepcha}NOR\p{Is_Lepcha}💅 — 80:U+1C00..1C4F.\p{Block: Letterlike_Symbols}— 80:U+2100..214F. 🎀\p{Block: Limbu}— NOT\p{Limbu}NOR\p{Is_Limbu}💅 — 80:U+1900..194F.\p{Block: Linear_A}— NOT\p{Linear_A}NOR\p{Is_Linear_A}💅 — 384:U+10600..1077F.\p{Block: Linear_B_Ideograms}— 128:U+10080..100FF. 🦋\p{Block: Linear_B_Syllabary}— 128:U+10000..1007F. 🦋\p{Block: Lisu}— NOT\p{Lisu}NOR\p{Is_Lisu}💅 — 48:U+A4D0..A4FF.\p{Block: Lisu_Sup},\p{Block=Lisu_Supplement}— 16. 🌸\p{Block: Lisu_Supplement}(Short:\p{Blk=LisuSup}) — 16:U+11FB0..11FBF. 🌸\p{Block: Low_Surrogates}— 1024:U+DC00..DFFF. 💀\p{Block: Lycian}— NOT\p{Lycian}NOR\p{Is_Lycian}💅 — 32:U+10280..1029F.\p{Block: Lydian}— NOT\p{Lydian}NOR\p{Is_Lydian}💅 — 32:U+10920..1093F.\p{Block: Mahajani}— NOT\p{Mahajani}NOR\p{Is_Mahajani}💅 — 48:U+11150..1117F.\p{Block: Mahjong},\p{Block=Mahjong_Tiles}— 48. 🀄\p{Block: Mahjong_Tiles}(Short:\p{Blk=Mahjong}) — 48:U+1F000..1F02F. 🀄\p{Block: Makasar}— NOT\p{Makasar}NOR\p{Is_Makasar}💅 — 32:U+11EE0..11EFF.\p{Block: Malayalam}— NOT\p{Malayalam}NOR\p{Is_Malayalam}💅 — 128:U+0D00..0D7F.\p{Block: Mandaic}— NOT\p{Mandaic}NOR\p{Is_Mandaic}💅 — 32:U+0840..085F.\p{Block: Manichaean}— NOT\p{Manichaean}NOR\p{Is_Manichaean}💅 — 64:U+10AC0..10AFF.\p{Block: Marchen}— NOT\p{Marchen}NOR\p{Is_Marchen}💅 — 80:U+11C70..11CBF.\p{Block: Masaram_Gondi}— NOT\p{Masaram_Gondi}NOR\p{Is_Masaram_Gondi}💅 — 96:U+11D00..11D5F.\p{Block: Math_Alphanum},\p{Block=Mathematical_Alphanumeric_Symbols}— 1024. 🔥\p{Block: Math_Operators},\p{Block=Mathematical_Operators}— 256. 🔥\p{Block: Mathematical_Alphanumeric_Symbols}(Short:\p{Blk=MathAlphanum}) — 1024:U+1D400..1D7FF. 🔥\p{Block: Mathematical_Operators}(Short:\p{Blk=MathOperators}) — 256:U+2200..22FF. 🔥\p{Block: Mayan_Numerals}— 32:U+1D2E0..1D2FF. 🌈\p{Block: Medefaidrin}— NOT\p{Medefaidrin}NOR\p{Is_Medefaidrin}💅 — 96:U+16E40..16E9F.\p{Block: Meetei_Mayek}— NOT\p{Meetei_Mayek}NOR\p{Is_Meetei_Mayek}💅 — 64:U+ABC0..ABFF.\p{Block: Meetei_Mayek_Ext},\p{Block=Meetei_Mayek_Extensions}— 32. 🌸\p{Block: Meetei_Mayek_Extensions}(Short:\p{Blk=MeeteiMayekExt}) — 32:U+AAE0..AAFF. 🌸\p{Block: Mende_Kikakui}— NOT\p{Mende_Kikakui}NOR\p{Is_Mende_Kikakui}💅 — 224:U+1E800..1E8DF.\p{Block: Meroitic_Cursive}— NOT\p{Meroitic_Cursive}NOR\p{Is_Meroitic_Cursive}💅 — 96:U+109A0..109FF.\p{Block: Meroitic_Hieroglyphs}— NOT\p{Meroitic_Hieroglyphs}NOR\p{Is_Meroitic_Hieroglyphs}💅 — 32:U+10980..1099F.\p{Block: Miao}— NOT\p{Miao}NOR\p{Is_Miao}💅 — 160:U+16F00..16F9F.\p{Block: Misc_Arrows},\p{Block=Miscellaneous_Symbols_And_Arrows}— 256. ✨\p{Block: Misc_Math_Symbols_A},\p{Block=Miscellaneous_Mathematical_Symbols_A}— 48. ✨\p{Block: Misc_Math_Symbols_B},\p{Block=Miscellaneous_Mathematical_Symbols_B}— 128. ✨\p{Block: Misc_Pictographs},\p{Block=Miscellaneous_Symbols_And_Pictographs}— 768. ✨\p{Block: Misc_Symbols},\p{Block=Miscellaneous_Symbols}— 256. ✨\p{Block: Misc_Technical},\p{Block=Miscellaneous_Technical}— 256. ✨\p{Block: Miscellaneous_Mathematical_Symbols_A}(Short:\p{Blk=MiscMathSymbolsA}) — 48:U+27C0..27EF. ✨\p{Block: Miscellaneous_Mathematical_Symbols_B}(Short:\p{Blk=MiscMathSymbolsB}) — 128:U+2980..29FF. ✨\p{Block: Miscellaneous_Symbols}(Short:\p{Blk=MiscSymbols}) — 256:U+2600..26FF. ✨\p{Block: Miscellaneous_Symbols_And_Arrows}(Short:\p{Blk=MiscArrows}) — 256:U+2B00..2BFF. ✨\p{Block: Miscellaneous_Symbols_And_Pictographs}(Short:\p{Blk=MiscPictographs}) — 768:U+1F300..1F5FF. ✨\p{Block: Miscellaneous_Technical}(Short:\p{Blk=MiscTechnical}) — 256:U+2300..23FF. ✨\p{Block: Modi}— NOT\p{Modi}NOR\p{Is_Modi}💅 — 96:U+11600..1165F.\p{Block: Modifier_Letters},\p{Block=Spacing_Modifier_Letters}— 80. 🎀\p{Block: Modifier_Tone_Letters}— 32:U+A700..A71F. 🎀\p{Block: Mongolian}— NOT\p{Mongolian}NOR\p{Is_Mongolian}💅 — 176:U+1800..18AF.\p{Block: Mongolian_Sup},\p{Block=Mongolian_Supplement}— 32. 🌸\p{Block: Mongolian_Supplement}(Short:\p{Blk=MongolianSup}) — 32:U+11660..1167F. 🌸\p{Block: Mro}— NOT\p{Mro}NOR\p{Is_Mro}💅 — 48:U+16A40..16A6F.\p{Block: Multani}— NOT\p{Multani}NOR\p{Is_Multani}💅 — 48:U+11280..112AF.\p{Block: Music},\p{Block=Musical_Symbols}— 256. 🎵\p{Block: Musical_Symbols}(Short:\p{Blk=Music}) — 256:U+1D100..1D1FF. 🎵\p{Block: Myanmar}— NOT\p{Myanmar}NOR\p{Is_Myanmar}💅 — 160:U+1000..109F.\p{Block: Myanmar_Ext_A},\p{Block=Myanmar_Extended_A}— 32. 🌺\p{Block: Myanmar_Ext_B},\p{Block=Myanmar_Extended_B}— 32. 🌺\p{Block: Myanmar_Ext_C},\p{Block=Myanmar_Extended_C}— 48. 🌺\p{Block: Myanmar_Extended_A}(Short:\p{Blk=MyanmarExtA}) — 32:U+AA60..AA7F. 🌺\p{Block: Myanmar_Extended_B}(Short:\p{Blk=MyanmarExtB}) — 32:U+A9E0..A9FF. 🌺\p{Block: Myanmar_Extended_C}(Short:\p{Blk=MyanmarExtC}) — 48:U+116D0..116FF. 🌺\p{Block: Nabataean}— NOT\p{Nabataean}NOR\p{Is_Nabataean}💅 — 48:U+10880..108AF.\p{Block: Nag_Mundari}— NOT\p{Nag_Mundari}NOR\p{Is_Nag_Mundari}💅 — 48:U+1E4D0..1E4FF.\p{Block: Nandinagari}— NOT\p{Nandinagari}NOR\p{Is_Nandinagari}💅 — 96:U+119A0..119FF.\p{Block: NB},\p{Block=No_Block}— 815_056 plus all above-Unicode code points. 😭\p{Block: New_Tai_Lue}— NOT\p{New_Tai_Lue}NOR\p{Is_New_Tai_Lue}💅 — 96:U+1980..19DF.\p{Block: Newa}— NOT\p{Newa}NOR\p{Is_Newa}💅 — 128:U+11400..1147F.\p{Block: NKo}— NOT\p{Nko}NOR\p{Is_NKo}💅 — 64:U+07C0..07FF.\p{Block: No_Block}(Short:\p{Blk=NB}) — 815_056 plus all above-Unicode code points:U+2FE0..2FEF,U+10200..1027F,U+103E0..103FF,U+107C0..107FF,U+108B0..108DF,U+10940..1097F... 😭\p{Block: Number_Forms}— 64:U+2150..218F. 🔢\p{Block: Nushu}— NOT\p{Nushu}NOR\p{Is_Nushu}💅 — 400:U+1B170..1B2FF.\p{Block: Nyiakeng_Puachue_Hmong}— NOT\p{Nyiakeng_Puachue_Hmong}NOR\p{Is_Nyiakeng_Puachue_Hmong}💅 — 80:U+1E100..1E14F.\p{Block: OCR},\p{Block=Optical_Character_Recognition}— 32. 🔍\p{Block: Ogham}— NOT\p{Ogham}NOR\p{Is_Ogham}💅 — 32:U+1680..169F.\p{Block: Ol_Chiki}— 48:U+1C50..1C7F. 🌿\p{Block: Ol_Onal}— NOT\p{Ol_Onal}NOR\p{Is_Ol_Onal}💅 — 48:U+1E5D0..1E5FF.\p{Block: Old_Hungarian}— NOT\p{Old_Hungarian}NOR\p{Is_Old_Hungarian}💅 — 128:U+10C80..10CFF.\p{Block: Old_Italic}— NOT\p{Old_Italic}NOR\p{Is_Old_Italic}💅 — 48:U+10300..1032F.\p{Block: Old_North_Arabian}— 32:U+10A80..10A9F. 🏺\p{Block: Old_Permic}— NOT\p{Old_Permic}NOR\p{Is_Old_Permic}💅 — 48:U+10350..1037F.\p{Block: Old_Persian}— NOT\p{Old_Persian}NOR\p{Is_Old_Persian}💅 — 64:U+103A0..103DF.\p{Block: Old_Sogdian}— NOT\p{Old_Sogdian}NOR\p{Is_Old_Sogdian}💅 — 48:U+10F00..10F2F.\p{Block: Old_South_Arabian}— 32:U+10A60..10A7F. 🏺\p{Block: Old_Turkic}— NOT\p{Old_Turkic}NOR\p{Is_Old_Turkic}💅 — 80:U+10C00..10C4F.\p{Block: Old_Uyghur}— NOT\p{Old_Uyghur}NOR\p{Is_Old_Uyghur}💅 — 64:U+10F70..10FAF.\p{Block: Optical_Character_Recognition}(Short:\p{Blk=OCR}) — 32:U+2440..245F. 🔍\p{Block: Oriya}— NOT\p{Oriya}NOR\p{Is_Oriya}💅 — 128:U+0B00..0B7F.
okay bestie we're still deep in the block list 💅 same rules as always: when a line screams NOT, that means the bare name and the Is_ version are not it — you have to use the Block: spelling or you get nothing. no cap. 🫶
\p{Block: Ornamental_Dingbats}(48:U+1F650..1F67F) — dingbats but make them ornamental, we love a decorative moment ✨\p{Block: Osage}(NOT\p{Osage}NOR\p{Is_Osage}) (80:U+104B0..104FF) — eighty code points and zero tolerance for shortcut names, respectfully 🚫\p{Block: Osmanya}(NOT\p{Osmanya}NOR\p{Is_Osmanya}) (48:U+10480..104AF) — same deal,Block:or bust 🦋\p{Block: Ottoman_Siyaq_Numbers}(80:U+1ED00..1ED4F) — numbers, ottoman, siyaq. the name is literally the whole personality 💜\p{Block: Pahawh_Hmong}(NOT\p{Pahawh_Hmong}NOR\p{Is_Pahawh_Hmong}) (144:U+16B00..16B8F) — 144 of them and none of them answer to the casual version 😭\p{Block: Palmyrene}(32:U+10860..1087F) — a tidy lil 32, no drama, no NOT clause, we stan a low-maintenance block 🌸\p{Block: Pau_Cin_Hau}(NOT\p{Pau_Cin_Hau}NOR\p{Is_Pau_Cin_Hau}) (64:U+11AC0..11AFF) — sixty-four, and again with the name gatekeeping 🙈\p{Block: Phags_Pa}(NOT\p{Phags_Pa}NOR\p{Is_Phags_Pa}) (64:U+A840..A87F) — the way this one also refuses the plain spelling… consistent queen 👑\p{Block: Phaistos}/\p{Block=Phaistos_Disc}(48) — two spellings, one block, count is 48 and no range on this line 🎀\p{Block: Phaistos_Disc}(Short:\p{Blk=Phaistos}) (48:U+101D0..101FF) — here's the full tea: 48 code points,U+101D0..101FF, and the short form is literally justPhaistos✨\p{Block: Phoenician}(NOT\p{Phoenician}NOR\p{Is_Phoenician}) (32:U+10900..1091F) — only 32 but it's still not answering to the nickname 💅\p{Block: Phonetic_Ext}/\p{Block=Phonetic_Extensions}(128) — alias line! 128 code points, and yesExtis just the abbreviation doing its thing 🦋\p{Block: Phonetic_Ext_Sup}/\p{Block=Phonetic_Extensions_Supplement}(64) — 64 here, and the long name is the fully-spelled-out version 💜\p{Block: Phonetic_Extensions}(Short:\p{Blk=PhoneticExt}) (128:U+1D00..1D7F) — the real one, 128 code points acrossU+1D00..1D7F, short formPhoneticExt🌸\p{Block: Phonetic_Extensions_Supplement}(Short:\p{Blk=PhoneticExtSup}) (64:U+1D80..1DBF) — 64 code points,U+1D80..1DBF, nicknamePhoneticExtSup🎀\p{Block: Playing_Cards}(96:U+1F0A0..1F0FF) — 96 code points of pure card-shark energy,U+1F0A0..1F0FF🔥\p{Block: Private_Use}/\p{Block=Private_Use_Area}(NOT\p{Private_Use}NOR\p{Is_Private_Use}) (6400) — 6400 code points and a whole double-NOT situation, do not freehand this one 😤\p{Block: Private_Use_Area}(Short:\p{Blk=PUA}; NOT\p{Private_Use}NOR\p{Is_Private_Use}) (6400:U+E000..F8FF) — the full version, 6400 code points,U+E000..F8FF, short form is the iconicPUA👑\p{Block: Psalter_Pahlavi}(NOT\p{Psalter_Pahlavi}NOR\p{Is_Psalter_Pahlavi}) (48:U+10B80..10BAF) — 48, and once again the plain name is not invited 💀\p{Block: PUA}/\p{Block=Private_Use_Area}(NOT\p{Private_Use}NOR\p{Is_Private_Use}) (6400) — same 6400, spelled the short way, same two names you can't use 🙈\p{Block: Punctuation}/\p{Block=General_Punctuation}(NOT\p{Punct}NOR\p{Is_Punctuation}) (112) — 112 code points of punctuation, and ngl the NOT clause here is spicy because\p{Punct}feels so right and is so wrong 😭\p{Block: Rejang}(NOT\p{Rejang}NOR\p{Is_Rejang}) (48:U+A930..A95F) — 48 code points,U+A930..A95F,Block:form only 🦋\p{Block: Rumi}/\p{Block=Rumi_Numeral_Symbols}(32) — alias line, 32 code points, numeral symbols hiding behind the short name 🌸\p{Block: Rumi_Numeral_Symbols}(Short:\p{Blk=Rumi}) (32:U+10E60..10E7F) — 32 code points,U+10E60..10E7F, nicknameRumi🎀\p{Block: Runic}(NOT\p{Runic}NOR\p{Is_Runic}) (96:U+16A0..16FF) — 96 code points and still not answering to\p{Runic}, the audacity 💅\p{Block: Samaritan}(NOT\p{Samaritan}NOR\p{Is_Samaritan}) (64:U+0800..083F) — 64 code points,U+0800..083F, plain name denied 🚫\p{Block: Saurashtra}(NOT\p{Saurashtra}NOR\p{Is_Saurashtra}) (96:U+A880..A8DF) — 96,U+A880..A8DF, same energy as always 💜\p{Block: Sharada}(NOT\p{Sharada}NOR\p{Is_Sharada}) (96:U+11180..111DF) — 96 code points,U+11180..111DF, no shortcuts bestie ✨\p{Block: Shavian}(NOT\p{Shavian}NOR\p{Is_Shavian}) (48:U+10450..1047F) — 48 code points,U+10450..1047F,Block:form or nothing 🔥\p{Block: Shorthand_Format_Controls}(16:U+1BCA0..1BCAF) — only 16,U+1BCA0..1BCAF, a tiny lil block and we're obsessed with her 🌸\p{Block: Siddham}(NOT\p{Siddham}NOR\p{Is_Siddham}) (128:U+11580..115FF) — 128 code points,U+11580..115FF, the NOT/NOR duo strikes again 😭\p{Block: Sinhala}(NOT\p{Sinhala}NOR\p{Is_Sinhala}) (128:U+0D80..0DFF) — 128,U+0D80..0DFF, yes you have to type the wholeBlock:thing 🎀\p{Block: Sinhala_Archaic_Numbers}(32:U+111E0..111FF) — 32 code points,U+111E0..111FF, archaic numbers doing their archival era 💜\p{Block: Small_Form_Variants}(Short:\p{Blk=SmallForms}) (32:U+FE50..FE6F) — 32 code points,U+FE50..FE6F, nicknameSmallForms🦋\p{Block: Small_Forms}/\p{Block=Small_Form_Variants}(32) — alias line, 32, pointing right back at the variants 🌸\p{Block: Small_Kana_Ext}/\p{Block=Small_Kana_Extension}(64) — 64 code points,Extdoing the abbreviation thing again ✨\p{Block: Small_Kana_Extension}(Short:\p{Blk=SmallKanaExt}) (64:U+1B130..1B16F) — 64 code points,U+1B130..1B16F, nicknameSmallKanaExt🎀\p{Block: Sogdian}(NOT\p{Sogdian}NOR\p{Is_Sogdian}) (64:U+10F30..10F6F) — 64,U+10F30..10F6F, plain-name deniers stay undefeated 💅\p{Block: Sora_Sompeng}(NOT\p{Sora_Sompeng}NOR\p{Is_Sora_Sompeng}) (48:U+110D0..110FF) — 48 code points,U+110D0..110FF, both alternatives are a hard no 😤\p{Block: Soyombo}(NOT\p{Soyombo}NOR\p{Is_Soyombo}) (96:U+11A50..11AAF) — 96,U+11A50..11AAF,Block:spelling required bestie 🫶\p{Block: Spacing_Modifier_Letters}(Short:\p{Blk=ModifierLetters}) (80:U+02B0..02FF) — 80 code points,U+02B0..02FF, short form is the tidyModifierLetters✨\p{Block: Specials}(16:U+FFF0..FFFF) — 16 code points,U+FFF0..FFFF. they're called Specials, they're near the top of the BMP, they're iconic, no notes 👑\p{Block: Sundanese}(NOT\p{Sundanese}NOR\p{Is_Sundanese}) (64:U+1B80..1BBF) — 64,U+1B80..1BBF, the NOT/NOR clause said hi 🌸\p{Block: Sundanese_Sup}/\p{Block=Sundanese_Supplement}(16) — alias line, 16 code points,Supfor the win 🦋\p{Block: Sundanese_Supplement}(Short:\p{Blk=SundaneseSup}) (16:U+1CC0..1CCF) — 16 code points,U+1CC0..1CCF, nicknameSundaneseSup🎀\p{Block: Sunuwar}(NOT\p{Sunuwar}NOR\p{Is_Sunuwar}) (64:U+11BC0..11BFF) — 64,U+11BC0..11BFF, still not accepting the casual version 💜\p{Block: Sup_Arrows_A}/\p{Block=Supplemental_Arrows_A}(16) — alias line, 16 code points, arrows but supplemental ✨\p{Block: Sup_Arrows_B}/\p{Block=Supplemental_Arrows_B}(128) — alias line, 128 code points this time 🔥\p{Block: Sup_Arrows_C}/\p{Block=Supplemental_Arrows_C}(256) — alias line, 256 code points, the arrows really said three parts 😭\p{Block: Sup_Math_Operators}/\p{Block=Supplemental_Mathematical_Operators}(256) — alias line, 256 code points of math-flavoured operators ➗\p{Block: Sup_PUA_A}/\p{Block=Supplementary_Private_Use_Area_A}(65_536) — sixty-five thousand five hundred thirty-six code points. yes, with the underscore in65_536. that's a whole chunk of the map, bestie 💀\p{Block: Sup_PUA_B}/\p{Block=Supplementary_Private_Use_Area_B}(65_536) — another65_536, another alias line, another giant chunk 🫶\p{Block: Sup_Punctuation}/\p{Block=Supplemental_Punctuation}(128) — alias line, 128 code points of the short spelling 🌸\p{Block: Sup_Symbols_And_Pictographs}/\p{Block=Supplemental_Symbols_And_Pictographs}(256) — alias line, 256 code points, symbols and pictographs, the full range 🎀\p{Block: Super_And_Sub}/\p{Block=Superscripts_And_Subscripts}(48) — alias line, 48 code points,Super_And_Subis genuinely such a cute abbreviation 🦋\p{Block: Superscripts_And_Subscripts}(Short:\p{Blk=SuperAndSub}) (48:U+2070..209F) — 48 code points,U+2070..209F, nicknameSuperAndSub✨\p{Block: Supplemental_Arrows_A}(Short:\p{Blk=SupArrowsA}) (16:U+27F0..27FF) — 16 code points,U+27F0..27FF, nicknameSupArrowsA💜\p{Block: Supplemental_Arrows_B}(Short:\p{Blk=SupArrowsB}) (128:U+2900..297F) — 128 code points,U+2900..297F, nicknameSupArrowsB🌈\p{Block: Supplemental_Arrows_C}(Short:\p{Blk=SupArrowsC}) (256:U+1F800..1F8FF) — 256 code points,U+1F800..1F8FF, nicknameSupArrowsC🔥\p{Block: Supplemental_Mathematical_Operators}(Short:\p{Blk=SupMathOperators}) (256:U+2A00..2AFF) — 256 code points,U+2A00..2AFF, nicknameSupMathOperators🎀\p{Block: Supplemental_Punctuation}(Short:\p{Blk=SupPunctuation}) (128:U+2E00..2E7F) — 128 code points,U+2E00..2E7F, nicknameSupPunctuation🌸\p{Block: Supplemental_Symbols_And_Pictographs}(Short:\p{Blk=SupSymbolsAndPictographs}) (256:U+1F900..1F9FF) — 256 code points,U+1F900..1F9FF, nicknameSupSymbolsAndPictographs(she's long but she's worth it) 🦋\p{Block: Supplementary_Private_Use_Area_A}(Short:\p{Blk=SupPUAA}) (65_536:U+F0000..FFFFF) — 65_536 code points,U+F0000..FFFFF, nicknameSupPUAA👑\p{Block: Supplementary_Private_Use_Area_B}(Short:\p{Blk=SupPUAB}) (65_536:U+100000..10FFFF) — 65_536 code points,U+100000..10FFFF, nicknameSupPUAB. this one literally runs to the end of the code space 😭\p{Block: Sutton_SignWriting}(688:U+1D800..1DAAF) — 688 code points,U+1D800..1DAAF, a chunky one and no NOT clause in sight 🎀\p{Block: Syloti_Nagri}(NOT\p{Syloti_Nagri}NOR\p{Is_Syloti_Nagri}) (48:U+A800..A82F) — 48 code points,U+A800..A82F,Block:form required 💅\p{Block: Symbols_And_Pictographs_Ext_A}/\p{Block=Symbols_And_Pictographs_Extended_A}(144) — alias line, 144 code points,ExtvsExtendeddoing its lil dance ✨\p{Block: Symbols_And_Pictographs_Extended_A}(Short:\p{Blk=SymbolsAndPictographsExtA}) (144:U+1FA70..1FAFF) — 144 code points,U+1FA70..1FAFF, nicknameSymbolsAndPictographsExtA🌈\p{Block: Symbols_For_Legacy_Computing}(256:U+1FB00..1FBFF) — 256 code points,U+1FB00..1FBFF, the legacy-computing symbols, honestly iconic for the retro girlies 🖥️\p{Block: Symbols_For_Legacy_Computing_Sup}/\p{Block=Symbols_For_Legacy_Computing_Supplement}(704) — alias line, 704 code points,Supis short for Supplement as per usual 🦋\p{Block: Symbols_For_Legacy_Computing_Supplement}(Short:\p{Blk=SymbolsForLegacyComputingSup}) (704:U+1CC00..1CEBF) — 704 code points,U+1CC00..1CEBF, and that nickname is a whole sentence, we respect the commitment 💜\p{Block: Syriac}(NOT\p{Syriac}NOR\p{Is_Syriac}) (80:U+0700..074F) — 80 code points,U+0700..074F, plain name denied, you know the drill 🌸\p{Block: Syriac_Sup}/\p{Block=Syriac_Supplement}(16) — alias line, 16 code points, supplement spelled the short way 🎀\p{Block: Syriac_Supplement}(Short:\p{Blk=SyriacSup}) (16:U+0860..086F) — 16 code points,U+0860..086F, nicknameSyriacSup✨\p{Block: Tagalog}(NOT\p{Tagalog}NOR\p{Is_Tagalog}) (32:U+1700..171F) — 32 code points,U+1700..171F,Block:form only bestie 🫶\p{Block: Tagbanwa}(NOT\p{Tagbanwa}NOR\p{Is_Tagbanwa}) (32:U+1760..177F) — 32 code points,U+1760..177F, same rules, no exceptions 💅\p{Block: Tags}(128:U+E0000..E007F) — 128 code points,U+E0000..E007F. not a NOT clause, not a short form, just Tags, sitting way up in the astral plane minding her business 👑\p{Block: Tai_Le}(NOT\p{Tai_Le}NOR\p{Is_Tai_Le}) (48:U+1950..197F) — 48 code points,U+1950..197F, no casual spelling allowed 🔥\p{Block: Tai_Tham}(NOT\p{Tai_Tham}NOR\p{Is_Tai_Tham}) (144:U+1A20..1AAF) — 144 code points,U+1A20..1AAF, the NOT/NOR duo back at it 😤\p{Block: Tai_Viet}(NOT\p{Tai_Viet}NOR\p{Is_Tai_Viet}) (96:U+AA80..AADF) — 96 code points,U+AA80..AADF, plain version stays uninvited 💀\p{Block: Tai_Xuan_Jing}/\p{Block=Tai_Xuan_Jing_Symbols}(96) — alias line, 96 code points, symbols lurking in the long name 🌸\p{Block: Tai_Xuan_Jing_Symbols}(Short:\p{Blk=TaiXuanJing}) (96:U+1D300..1D35F) — 96 code points,U+1D300..1D35F, nicknameTaiXuanJing🎀\p{Block: Takri}(NOT\p{Takri}NOR\p{Is_Takri}) (80:U+11680..116CF) — 80 code points,U+11680..116CF,Block:spelling or you're out 🦋\p{Block: Tamil}(NOT\p{Tamil}NOR\p{Is_Tamil}) (128:U+0B80..0BFF) — 128 code points,U+0B80..0BFF, and yeah even a name this famous needs theBlock:prefix here ✨\p{Block: Tamil_Sup}/\p{Block=Tamil_Supplement}(64) — alias line, 64 code points,Supstrikes again 💜\p{Block: Tamil_Supplement}(Short:\p{Blk=TamilSup}) (64:U+11FC0..11FFF) — 64 code points,U+11FC0..11FFF, nicknameTamilSup🌈\p{Block: Tangsa}(NOT\p{Tangsa}NOR\p{Is_Tangsa}) (96:U+16A70..16ACF) — 96 code points,U+16A70..16ACF, still with the NOT clause, still not sorry 🫶\p{Block: Tangut}(NOT\p{Tangut}NOR\p{Is_Tangut}) (6144:U+17000..187FF) — 6144 code points,U+17000..187FF, a big one and it won't answer to\p{Tangut}. the duality 😭\p{Block: Tangut_Components}(768:U+18800..18AFF) — 768 code points,U+18800..18AFF, components doing their supporting-role main character thing 🎀\p{Block: Tangut_Sup}/\p{Block=Tangut_Supplement}(128) — alias line, 128 code points, the supplement in short form 🌸\p{Block: Tangut_Supplement}(Short:\p{Blk=TangutSup}) (128:U+18D00..18D7F) — 128 code points,U+18D00..18D7F, nicknameTangutSup🦋\p{Block: Telugu}(NOT\p{Telugu}NOR\p{Is_Telugu}) (128:U+0C00..0C7F) — 128 code points,U+0C00..0C7F,Block:form required, no notes 💅\p{Block: Thaana}(NOT\p{Thaana}NOR\p{Is_Thaana}) (64:U+0780..07BF) — 64 code points,U+0780..07BF, both alternatives denied 🔥\p{Block: Thai}(NOT\p{Thai}NOR\p{Is_Thai}) (128:U+0E00..0E7F) — 128 code points,U+0E00..0E7F, yes evenThaineeds the full form here, iykyk 👑\p{Block: Tibetan}(NOT\p{Tibetan}NOR\p{Is_Tibetan}) (256:U+0F00..0FFF) — 256 code points,U+0F00..0FFF, plain name stays in the drafts folder 💀\p{Block: Tifinagh}(NOT\p{Tifinagh}NOR\p{Is_Tifinagh}) (80:U+2D30..2D7F) — 80 code points,U+2D30..2D7F, NOT/NOR, the usual deal 🌸\p{Block: Tirhuta}(NOT\p{Tirhuta}NOR\p{Is_Tirhuta}) (96:U+11480..114DF) — 96 code points,U+11480..114DF,Block:prefix is non-negotiable 🎀\p{Block: Todhri}(NOT\p{Todhri}NOR\p{Is_Todhri}) (64:U+105C0..105FF) — 64 code points,U+105C0..105FF, still refusing the informal spelling ✨\p{Block: Toto}(NOT\p{Toto}NOR\p{Is_Toto}) (48:U+1E290..1E2BF) — 48 code points,U+1E290..1E2BF. it's called Toto and you still can't call it\p{Toto}, we're screaming 😭\p{Block: Transport_And_Map}/\p{Block=Transport_And_Map_Symbols}(128) — alias line, 128 code points,Andgets the full word, cute 🌈\p{Block: Transport_And_Map_Symbols}(Short:\p{Blk=TransportAndMap}) (128:U+1F680..1F6FF) — 128 code points,U+1F680..1F6FF, nicknameTransportAndMap. 🚀🗺️ certified vibe 🫶
and that's where this chunk ends bestie — the list keeps going, we're not done, so don't go anywhere 💖
\p{Block: Tulu_Tigalari}— 128 code points,U+11380..113FF. And ⚠️ it is NOT\p{Tulu_Tigalari}NOR\p{Is_Tulu_Tigalari}, okay?\p{Block: UCAS}— same energy as\p{Block=Unified_Canadian_Aboriginal_Syllabics}— 640.\p{Block: UCAS_Ext}— aka\p{Block=Unified_Canadian_Aboriginal_Syllabics_Extended}— 80.\p{Block: UCAS_Ext_A}— aka\p{Block=Unified_Canadian_Aboriginal_Syllabics_Extended_A}— 16.\p{Block: Ugaritic}— 32 code points,U+10380..1039F. NOT\p{Ugaritic}NOR\p{Is_Ugaritic}🫶\p{Block: Unified_Canadian_Aboriginal_Syllabics}— Short form:\p{Blk=UCAS}— 640,U+1400..167F.\p{Block: Unified_Canadian_Aboriginal_Syllabics_Extended}— Short:\p{Blk=UCASExt}— 80,U+18B0..18FF.\p{Block: Unified_Canadian_Aboriginal_Syllabics_Extended_A}— Short:\p{Blk=UCASExtA}— 16,U+11AB0..11ABF.\p{Block: Vai}— 320,U+A500..A63F. NOT\p{Vai}NOR\p{Is_Vai}✨\p{Block: Variation_Selectors}— Short:\p{Blk=VS}— 16,U+FE00..FE0F. And NOT\p{Variation_Selector}NOR\p{Is_VS}, bestie, watch out 💅\p{Block: Variation_Selectors_Supplement}— Short:\p{Blk=VSSup}— 240,U+E0100..E01EF.\p{Block: Vedic_Ext}— same as\p{Block=Vedic_Extensions}— 48.\p{Block: Vedic_Extensions}— Short:\p{Blk=VedicExt}— 48,U+1CD0..1CFF.\p{Block: Vertical_Forms}— 16,U+FE10..FE1F.\p{Block: Vithkuqi}— 80,U+10570..105BF. NOT\p{Vithkuqi}NOR\p{Is_Vithkuqi}🦋\p{Block: VS}— aka\p{Block=Variation_Selectors}— 16. NOT\p{Variation_Selector}NOR\p{Is_VS}.\p{Block: VS_Sup}— aka\p{Block=Variation_Selectors_Supplement}— 240.\p{Block: Wancho}— 64,U+1E2C0..1E2FF. NOT\p{Wancho}NOR\p{Is_Wancho}🌸\p{Block: Warang_Citi}— 96,U+118A0..118FF. NOT\p{Warang_Citi}NOR\p{Is_Warang_Citi}.\p{Block: Yezidi}— 64,U+10E80..10EBF. NOT\p{Yezidi}NOR\p{Is_Yezidi}.\p{Block: Yi_Radicals}— 64,U+A490..A4CF.\p{Block: Yi_Syllables}— 1168,U+A000..A48F.\p{Block: Yijing}— aka\p{Block=Yijing_Hexagram_Symbols}— 64.\p{Block: Yijing_Hexagram_Symbols}— Short:\p{Blk=Yijing}— 64,U+4DC0..4DFF.\p{Block: Zanabazar_Square}— 80,U+11A00..11A4F. NOT\p{Zanabazar_Square}NOR\p{Is_Zanabazar_Square}💜\p{Block: Znamenny_Music}— aka\p{Block=Znamenny_Musical_Notation}— 208.\p{Block: Znamenny_Musical_Notation}— Short:\p{Blk=ZnamennyMusic}— 208,U+1CF00..1CFCF.
Okay and now the entries that only get one column, so they're marked for you. Slay.
- X —
\p{Block_Elements}— same as\p{Block=Block_Elements}— 32. \p{Bopo}— aka\p{Bopomofo}, which equals\p{Script_Extensions=Bopomofo}— 122. And NOT\p{Block=Bopomofo}🎀\p{Bopomofo}— aka\p{Script_Extensions=Bopomofo}— Short:\p{Bopo}— 122. NOT\p{Block=Bopomofo}.- X —
\p{Bopomofo_Ext}— aka\p{Bopomofo_Extended}, which equals\p{Block=Bopomofo_Extended}— 32. - X —
\p{Bopomofo_Extended}— aka\p{Block=Bopomofo_Extended}— Short:\p{InBopomofoExt}— 32. - X —
\p{Box_Drawing}— aka\p{Block=Box_Drawing}— 128. \p{Bpt: *}— aka\p{Bidi_Paired_Bracket_Type: *}.\p{Brah}— aka\p{Brahmi}, which equals\p{Script_Extensions=Brahmi}— 115. NOT\p{Block=Brahmi}✨\p{Brahmi}— aka\p{Script_Extensions=Brahmi}— Short:\p{Brah}— 115. NOT\p{Block=Brahmi}.\p{Brai}— aka\p{Braille}, which equals\p{Script_Extensions=Braille}— 256.\p{Braille}— aka\p{Script_Extensions=Braille}— Short:\p{Brai}— 256.- X —
\p{Braille_Patterns}— aka\p{Block=Braille_Patterns}— Short:\p{InBraille}— 256. \p{Bugi}— aka\p{Buginese}, which equals\p{Script_Extensions=Buginese}— 31. NOT\p{Block=Buginese}🦋\p{Buginese}— aka\p{Script_Extensions=Buginese}— Short:\p{Bugi}— 31. NOT\p{Block=Buginese}.\p{Buhd}— aka\p{Buhid}, which equals\p{Script_Extensions=Buhid}— 22. NOT\p{Block=Buhid}.\p{Buhid}— aka\p{Script_Extensions=Buhid}— Short:\p{Buhd}— 22. NOT\p{Block=Buhid}.- X —
\p{Byzantine_Music}— aka\p{Byzantine_Musical_Symbols}, which equals\p{Block=Byzantine_Musical_Symbols}— 256. - X —
\p{Byzantine_Musical_Symbols}— aka\p{Block=Byzantine_Musical_Symbols}— Short:\p{InByzantineMusic}— 256. \p{C}— aka\pC— aka\p{Other}, which equals\p{General_Category=Other}— 959_284 plus all above-Unicode code points. 💀 that's a lot, bestie\p{Cakm}— aka\p{Chakma}, which equals\p{Script_Extensions=Chakma}— 91. NOT\p{Block=Chakma}.\p{Canadian_Aboriginal}— aka\p{Script_Extensions=Canadian_Aboriginal}— Short:\p{Cans}— 726.- X —
\p{Canadian_Syllabics}— aka\p{Unified_Canadian_Aboriginal_Syllabics}, which equals\p{Block=Unified_Canadian_Aboriginal_Syllabics}— 640.
And now, babes, we enter the Canonical_Combining_Class zone. Buckle in. 🧚
- T —
\p{Canonical_Combining_Class: 0}— aka\p{Canonical_Combining_Class=Not_Reordered}— 1_113_178 plus all above-Unicode code points. - T —
\p{Canonical_Combining_Class: 1}— aka\p{Canonical_Combining_Class=Overlay}— 32. - T —
\p{Canonical_Combining_Class: 6}— aka\p{Canonical_Combining_Class=Han_Reading}— 2. - T —
\p{Canonical_Combining_Class: 7}— aka\p{Canonical_Combining_Class=Nukta}— 27. - T —
\p{Canonical_Combining_Class: 8}— aka\p{Canonical_Combining_Class=Kana_Voicing}— 2. - T —
\p{Canonical_Combining_Class: 9}— aka\p{Canonical_Combining_Class=Virama}— 69. - T —
\p{Canonical_Combining_Class: 10}— aka\p{Canonical_Combining_Class=CCC10}— 1. \p{Canonical_Combining_Class: CCC10}— Short:\p{Ccc=CCC10}— 1:U+05B0.- T —
\p{Canonical_Combining_Class: 11}— aka\p{Canonical_Combining_Class=CCC11}— 1. \p{Canonical_Combining_Class: CCC11}— Short:\p{Ccc=CCC11}— 1:U+05B1.- T —
\p{Canonical_Combining_Class: 12}— aka\p{Canonical_Combining_Class=CCC12}— 1. \p{Canonical_Combining_Class: CCC12}— Short:\p{Ccc=CCC12}— 1:U+05B2.- T —
\p{Canonical_Combining_Class: 13}— aka\p{Canonical_Combining_Class=CCC13}— 1. \p{Canonical_Combining_Class: CCC13}— Short:\p{Ccc=CCC13}— 1:U+05B3.- T —
\p{Canonical_Combining_Class: 14}— aka\p{Canonical_Combining_Class=CCC14}— 1. \p{Canonical_Combining_Class: CCC14}— Short:\p{Ccc=CCC14}— 1:U+05B4.- T —
\p{Canonical_Combining_Class: 15}— aka\p{Canonical_Combining_Class=CCC15}— 1. \p{Canonical_Combining_Class: CCC15}— Short:\p{Ccc=CCC15}— 1:U+05B5.- T —
\p{Canonical_Combining_Class: 16}— aka\p{Canonical_Combining_Class=CCC16}— 1. \p{Canonical_Combining_Class: CCC16}— Short:\p{Ccc=CCC16}— 1:U+05B6.- T —
\p{Canonical_Combining_Class: 17}— aka\p{Canonical_Combining_Class=CCC17}— 1. \p{Canonical_Combining_Class: CCC17}— Short:\p{Ccc=CCC17}— 1:U+05B7.- T —
\p{Canonical_Combining_Class: 18}— aka\p{Canonical_Combining_Class=CCC18}— 2. \p{Canonical_Combining_Class: CCC18}— Short:\p{Ccc=CCC18}— 2:U+05B8,U+05C7.- T —
\p{Canonical_Combining_Class: 19}— aka\p{Canonical_Combining_Class=CCC19}— 2. \p{Canonical_Combining_Class: CCC19}— Short:\p{Ccc=CCC19}— 2:U+05B9..05BA.- T —
\p{Canonical_Combining_Class: 20}— aka\p{Canonical_Combining_Class=CCC20}— 1. \p{Canonical_Combining_Class: CCC20}— Short:\p{Ccc=CCC20}— 1:U+05BB.- T —
\p{Canonical_Combining_Class: 21}— aka\p{Canonical_Combining_Class=CCC21}— 1. \p{Canonical_Combining_Class: CCC21}— Short:\p{Ccc=CCC21}— 1:U+05BC.- T —
\p{Canonical_Combining_Class: 22}— aka\p{Canonical_Combining_Class=CCC22}— 1. \p{Canonical_Combining_Class: CCC22}— Short:\p{Ccc=CCC22}— 1:U+05BD.- T —
\p{Canonical_Combining_Class: 23}— aka\p{Canonical_Combining_Class=CCC23}— 1. \p{Canonical_Combining_Class: CCC23}— Short:\p{Ccc=CCC23}— 1:U+05BF.- T —
\p{Canonical_Combining_Class: 24}— aka\p{Canonical_Combining_Class=CCC24}— 1. \p{Canonical_Combining_Class: CCC24}— Short:\p{Ccc=CCC24}— 1:U+05C1.- T —
\p{Canonical_Combining_Class: 25}— aka\p{Canonical_Combining_Class=CCC25}— 1. \p{Canonical_Combining_Class: CCC25}— Short:\p{Ccc=CCC25}— 1:U+05C2.- T —
\p{Canonical_Combining_Class: 26}— aka\p{Canonical_Combining_Class=CCC26}— 1. \p{Canonical_Combining_Class: CCC26}— Short:\p{Ccc=CCC26}— 1:U+FB1E.- T —
\p{Canonical_Combining_Class: 27}— aka\p{Canonical_Combining_Class=CCC27}— 2. \p{Canonical_Combining_Class: CCC27}— Short:\p{Ccc=CCC27}— 2:U+064B,U+08F0.- T —
\p{Canonical_Combining_Class: 28}— aka\p{Canonical_Combining_Class=CCC28}— 2. \p{Canonical_Combining_Class: CCC28}— Short:\p{Ccc=CCC28}— 2:U+064C,U+08F1.- T —
\p{Canonical_Combining_Class: 29}— aka\p{Canonical_Combining_Class=… and the page literally cuts off there mid-identifier 😭 bestie we are NOT done, the next part picks this up, don't panic 🫶 \p{Canonical_Combining_Class: CCC29}(short:\p{Ccc=CCC29}) — 2 code points:U+064D,U+08F2🦋
okay so from here the pattern is: some entries hand you the number and the short alias on the same line, then a lil nested line gives you the spelled-out form. others just give you the number plus a name and dip. same property either way, so use whichever one your heart desires 💖
T\p{Canonical_Combining_Class: 30}\p{Canonical_Combining_Class=CCC30}(2)\p{Canonical_Combining_Class: CCC30}(short:\p{Ccc=CCC30}) —U+0618,U+064E
T\p{Canonical_Combining_Class: 31}\p{Canonical_Combining_Class=CCC31}(2)\p{Canonical_Combining_Class: CCC31}(short:\p{Ccc=CCC31}) —U+0619,U+064F
T\p{Canonical_Combining_Class: 32}\p{Canonical_Combining_Class=CCC32}(2)\p{Canonical_Combining_Class: CCC32}(short:\p{Ccc=CCC32}) —U+061A,U+0650
T\p{Canonical_Combining_Class: 33}\p{Canonical_Combining_Class=CCC33}(1)\p{Canonical_Combining_Class: CCC33}(short:\p{Ccc=CCC33}) —U+0651
T\p{Canonical_Combining_Class: 34}\p{Canonical_Combining_Class=CCC34}(1)\p{Canonical_Combining_Class: CCC34}(short:\p{Ccc=CCC34}) —U+0652
T\p{Canonical_Combining_Class: 35}\p{Canonical_Combining_Class=CCC35}(1)\p{Canonical_Combining_Class: CCC35}(short:\p{Ccc=CCC35}) —U+0670
T\p{Canonical_Combining_Class: 36}\p{Canonical_Combining_Class=CCC36}(1)\p{Canonical_Combining_Class: CCC36}(short:\p{Ccc=CCC36}) —U+0711
T\p{Canonical_Combining_Class: 84}\p{Canonical_Combining_Class=CCC84}(1)\p{Canonical_Combining_Class: CCC84}(short:\p{Ccc=CCC84}) —U+0C55
T\p{Canonical_Combining_Class: 91}\p{Canonical_Combining_Class=CCC91}(1)\p{Canonical_Combining_Class: CCC91}(short:\p{Ccc=CCC91}) —U+0C56
T\p{Canonical_Combining_Class: 103}\p{Canonical_Combining_Class=CCC103}(2)\p{Canonical_Combining_Class: CCC103}(short:\p{Ccc=CCC103}) —U+0E38..0E39
T\p{Canonical_Combining_Class: 107}\p{Canonical_Combining_Class=CCC107}(4)\p{Canonical_Combining_Class: CCC107}(short:\p{Ccc=CCC107}) —U+0E48..0E4B
T\p{Canonical_Combining_Class: 118}\p{Canonical_Combining_Class=CCC118}(2)\p{Canonical_Combining_Class: CCC118}(short:\p{Ccc=CCC118}) —U+0EB8..0EB9
T\p{Canonical_Combining_Class: 122}\p{Canonical_Combining_Class=CCC122}(4)\p{Canonical_Combining_Class: CCC122}(short:\p{Ccc=CCC122}) —U+0EC8..0ECB
T\p{Canonical_Combining_Class: 129}\p{Canonical_Combining_Class=CCC129}(1)\p{Canonical_Combining_Class: CCC129}(short:\p{Ccc=CCC129}) —U+0F71
T\p{Canonical_Combining_Class: 130}\p{Canonical_Combining_Class=CCC130}(6)\p{Canonical_Combining_Class: CCC130}(short:\p{Ccc=CCC130}) —U+0F72,U+0F7A..0F7D,U+0F80
T\p{Canonical_Combining_Class: 132}\p{Canonical_Combining_Class=CCC132}(1)\p{Canonical_Combining_Class: CCC132}(short:\p{Ccc=CCC132}) —U+0F74
T\p{Canonical_Combining_Class: 133}\p{Canonical_Combining_Class=CCC133}(0)\p{Canonical_Combining_Class: CCC133}(short:\p{Ccc=CCC133}) — 0 💀
and now the numbered-but-named era, where the class value IS the name, no alias line needed 👑
T\p{Canonical_Combining_Class: 200}\p{Canonical_Combining_Class=Attached_Below_Left}(0)T\p{Canonical_Combining_Class: 202}\p{Canonical_Combining_Class=Attached_Below}(5)T\p{Canonical_Combining_Class: 214}\p{Canonical_Combining_Class=Attached_Above}(1)T\p{Canonical_Combining_Class: 216}\p{Canonical_Combining_Class=Attached_Above_Right}(9)T\p{Canonical_Combining_Class: 218}\p{Canonical_Combining_Class=Below_Left}(2)T\p{Canonical_Combining_Class: 220}\p{Canonical_Combining_Class=Below}(182)T\p{Canonical_Combining_Class: 222}\p{Canonical_Combining_Class=Below_Right}(4)T\p{Canonical_Combining_Class: 224}\p{Canonical_Combining_Class=Left}(2)T\p{Canonical_Combining_Class: 226}\p{Canonical_Combining_Class=Right}(1)T\p{Canonical_Combining_Class: 228}\p{Canonical_Combining_Class=Above_Left}(5)T\p{Canonical_Combining_Class: 230}\p{Canonical_Combining_Class=Above}(517)T\p{Canonical_Combining_Class: 232}\p{Canonical_Combining_Class=Above_Right}(7)T\p{Canonical_Combining_Class: 233}\p{Canonical_Combining_Class=Double_Below}(4)T\p{Canonical_Combining_Class: 234}\p{Canonical_Combining_Class=Double_Above}(5)T\p{Canonical_Combining_Class: 240}\p{Canonical_Combining_Class=Iota_Subscript}(1)
and here's the alias round-up — same classes, just said out loud 💅 (note the two-way street: short ↔ long, both directions listed, because Unicode said "why not both")
\p{Canonical_Combining_Class: A}\p{Canonical_Combining_Class=Above}(517)\p{Canonical_Combining_Class: Above}(short:\p{Ccc=A}) (517:U+0300..0314,U+033D..0344,U+0346,U+034A..034C,U+0350..0352,U+0357...)\p{Canonical_Combining_Class: Above_Left}(short:\p{Ccc=AL}) (5:U+05AE,U+18A9,U+1DF7..1DF8,U+302B)\p{Canonical_Combining_Class: Above_Right}(short:\p{Ccc=AR}) (7:U+0315,U+031A,U+0358,U+1DF6,U+302C,U+1E4EC..1E4ED)\p{Canonical_Combining_Class: AL}\p{Canonical_Combining_Class=Above_Left}(5)\p{Canonical_Combining_Class: AR}\p{Canonical_Combining_Class=Above_Right}(7)\p{Canonical_Combining_Class: ATA}\p{Canonical_Combining_Class=Attached_Above}(1)\p{Canonical_Combining_Class: ATAR}\p{Canonical_Combining_Class=Attached_Above_Right}(9)\p{Canonical_Combining_Class: ATB}\p{Canonical_Combining_Class=Attached_Below}(5)\p{Canonical_Combining_Class: ATBL}\p{Canonical_Combining_Class=Attached_Below_Left}(0)\p{Canonical_Combining_Class: Attached_Above}(short:\p{Ccc=ATA}) (1:U+1DCE)\p{Canonical_Combining_Class: Attached_Above_Right}(short:\p{Ccc=ATAR}) (9:U+031B,U+0F39,U+1D165..1D166,U+1D16E..1D172)\p{Canonical_Combining_Class: Attached_Below}(short:\p{Ccc=ATB}) (5:U+0321..0322,U+0327..0328,U+1DD0)\p{Canonical_Combining_Class: Attached_Below_Left}(short:\p{Ccc=ATBL}) (0)\p{Canonical_Combining_Class: B}\p{Canonical_Combining_Class=Below}(182)\p{Canonical_Combining_Class: Below}(short:\p{Ccc=B}) (182:U+0316..0319,U+031C..0320,U+0323..0326,U+0329..0333,U+0339..033C,U+0347..0349...)\p{Canonical_Combining_Class: Below_Left}(short:\p{Ccc=BL}) (2:U+1DFA,U+302A)\p{Canonical_Combining_Class: Below_Right}(short:\p{Ccc=BR}) (4:U+059A,U+05AD,U+1939,U+302D)\p{Canonical_Combining_Class: BL}\p{Canonical_Combining_Class=Below_Left}(2)\p{Canonical_Combining_Class: BR}\p{Canonical_Combining_Class=Below_Right}(4)\p{Canonical_Combining_Class: DA}\p{Canonical_Combining_Class=Double_Above}(5)\p{Canonical_Combining_Class: DB}\p{Canonical_Combining_Class=Double_Below}(4)\p{Canonical_Combining_Class: Double_Above}(short:\p{Ccc=DA}) (5:U+035D..035E,U+0360..0361,U+1DCD)\p{Canonical_Combining_Class: Double_Below}(short:\p{Ccc=DB}) (4:U+035C,U+035F,U+0362,U+1DFC)\p{Canonical_Combining_Class: Han_Reading}(short:\p{Ccc=HANR}) (2:U+16FF0..16FF1)\p{Canonical_Combining_Class: HANR}\p{Canonical_Combining_Class=Han_Reading}(2)\p{Canonical_Combining_Class: Iota_Subscript}(short:\p{Ccc=IS}) (1:U+0345)\p{Canonical_Combining_Class: IS}\p{Canonical_Combining_Class=Iota_Subscript}(1)\p{Canonical_Combining_Class: Kana_Voicing}(short:\p{Ccc=KV}) (2:U+3099..309A)\p{Canonical_Combining_Class: KV}\p{Canonical_Combining_Class=Kana_Voicing}(2)\p{Canonical_Combining_Class: L}\p{Canonical_Combining_Class=Left}(2)\p{Canonical_Combining_Class: Left}(short:\p{Ccc=L}) (2:U+302E..302F)\p{Canonical_Combining_Class: NK}\p{Canonical_Combining_Class=Nukta}(27)\p{Canonical_Combining_Class: Not_Reordered}(short:\p{Ccc=NR}) (1_113_178 plus all above-Unicode code points:U+0000..02FF,U+034F,U+0370..0482,U+0488..0590,U+05BE,U+05C0...)\p{Canonical_Combining_Class: NR}\p{Canonical_Combining_Class=Not_Reordered}(1_113_178 plus all above-Unicode code points)\p{Canonical_Combining_Class: Nukta}(short:\p{Ccc=NK}) (27:U+093C,U+09BC,U+0A3C,U+0ABC,U+0B3C,U+0C3C...)\p{Canonical_Combining_Class: OV}\p{Canonical_Combining_Class=Overlay}(32)\p{Canonical_Combining_Class: Overlay}(short:\p{Ccc=OV}) (32:U+0334..0338,U+1CD4,U+1CE2..1CE8,
U+20D2..20D3, U+20D8..20DA, U+20E5..20E6 ...)
(yeah that's the tail end of a range list from the last part, still going, she's long 💀)
\p{Canonical_Combining_Class: R},\p{Canonical_Combining_Class=Right}— (1) ✨\p{Canonical_Combining_Class: Right}— (Short:\p{Ccc=R}) (1:U+1D16D)\p{Canonical_Combining_Class: Virama}— (Short:\p{Ccc=VR}) (69:U+094D,U+09CD,U+0A4D,U+0ACD,U+0B4D,U+0BCD...)\p{Canonical_Combining_Class: VR},\p{Canonical_Combining_Class=Virama}— (69)\p{Cans},\p{Canadian_Aboriginal}— (=\p{Script_Extensions=Canadian_Aboriginal}) (726) 🦋\p{Cari},\p{Carian}— (=\p{Script_Extensions=Carian}) (NOT\p{Block=Carian}) (53)\p{Carian},\p{Script_Extensions=Carian}— (Short:\p{Cari}; NOT\p{Block=Carian}) (53)\p{Case_Ignorable},\p{Case_Ignorable=Y}— (Short:\p{CI}) (2749)\p{Case_Ignorable: N*}— (Short:\p{CI=N},\P{CI}) (1_111_363 plus all above-Unicode code points:[\x00-\x20!\"#\$\%&\(\)*+,\-\/0-9;<=>?\@A-Z\[\\\]_a-z\{\|\}~\x7f-\xa7\xa9-\xac\xae\xb0-\xb3\xb5-\xb6\xb9-\xff],U+0100..02AF,U+0370..0373,U+0376..0379,U+037B..0383,U+0386...)\p{Case_Ignorable: Y*}— (Short:\p{CI=Y},\p{CI}) (2749:[\'.:\^\x60\xa8\xad\xaf\xb4\xb7-\xb8],U+02B0..036F,U+0374..0375,U+037A,U+0384..0385,U+0387...)
ok that backtick-in-a-range is not a typo, it's literally \x60 doing its thing, do not @ me 🫶
\p{Cased},\p{Cased=Y}— (4578) 💖\p{Cased: N*}— (Single:\P{Cased}) (1_109_534 plus all above-Unicode code points:[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@\[\\\]\^_\x60\{\|\}~\x7f-\xa9\xab-\xb4\xb6-\xb9\xbb-\xbf\xd7\xf7],U+01BB,U+01C0..01C3,U+0294,U+02B9..02BF,U+02C2..02DF...)\p{Cased: Y*}— (Single:\p{Cased}) (4578:[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..01BA,U+01BC..01BF,U+01C4..0293,U+0295..02B8,U+02C0..02C1...)\p{Cased_Letter},\p{General_Category=Cased_Letter}— (Short:\p{LC}) (4147)\p{Category: *},\p{General_Category: *}— (the wildcard-y one, no count, she's just vibes ✨)\p{Caucasian_Albanian},\p{Script_Extensions=Caucasian_Albanian}— (Short:\p{Aghb}; NOT\p{Block=Caucasian_Albanian}) (56)\p{Cc},\p{XPosixCntrl}— (=\p{General_Category=Control}) (65)\p{Ccc: *},\p{Canonical_Combining_Class: *}— (another wildcard situation 🌀)\p{CE},\p{Composition_Exclusion}— (=\p{Composition_Exclusion=Y}) (81)\p{CE: *},\p{Composition_Exclusion: *}— (wildcard again, bestie)\p{Cf},\p{Format}— (=\p{General_Category=Format}) (170)\p{Chakma},\p{Script_Extensions=Chakma}— (Short:\p{Cakm}; NOT\p{Block=Chakma}) (91)\p{Cham},\p{Script_Extensions=Cham}— (NOT\p{Block=Cham}) (83)\p{Changes_When_Casefolded},\p{Changes_When_Casefolded=Y}— (Short:\p{CWCF}) (1533)\p{Changes_When_Casefolded: N*}— (Short:\p{CWCF=N},\P{CWCF}) (1_112_579 plus all above-Unicode code points:[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@\[\\\]\^_\x60a-z\{\|\}~\x7f-\xb4\xb6-\xbf\xd7\xe0-\xff],U+0101,U+0103,U+0105,U+0107,U+0109...)\p{Changes_When_Casefolded: Y*}— (Short:\p{CWCF=Y},\p{CWCF}) (1533:[A-Z\xb5\xc0-\xd6\xd8-\xdf],U+0100,U+0102,U+0104,U+0106,U+0108...)\p{Changes_When_Casemapped},\p{Changes_When_Casemapped=Y}— (Short:\p{CWCM}) (2981)\p{Changes_When_Casemapped: N*}— (Short:\p{CWCM=N},\P{CWCM}) (1_111_131 plus all above-Unicode code points:[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@\[\\\]\^_\x60\{\|\}~\x7f-\xb4\xb6-\xbf\xd7\xf7],U+0138,U+018D,U+01AA..01AB,U+01BA..01BB,U+01BE...)\p{Changes_When_Casemapped: Y*}— (Short:\p{CWCM=Y},\p{CWCM}) (2981:[A-Za-z\xb5\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..0137,U+0139..018C,U+018E..01A9,U+01AC..01B9,U+01BC..01BD...)\p{Changes_When_Lowercased},\p{Changes_When_Lowercased=Y}— (Short:\p{CWL}) (1460)\p{Changes_When_Lowercased: N*}— (Short:\p{CWL=N},\P{CWL}) (1_112_652 plus all above-Unicode code points:[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@\[\\\]\^_\x60a-z\{\|\}~\x7f-\xbf\xd7\xdf-\xff],U+0101,U+0103,U+0105,U+0107,U+0109...)\p{Changes_When_Lowercased: Y*}— (Short:\p{CWL=Y},\p{CWL}) (1460:[A-Z\xc0-\xd6\xd8-\xde],U+0100,U+0102,U+0104,U+0106,U+0108...)\p{Changes_When_NFKC_Casefolded},\p{Changes_When_NFKC_Casefolded=Y}— (Short:\p{CWKCF}) (10_554) 🔥\p{Changes_When_NFKC_Casefolded: N*}— (Short:\p{CWKCF=N},\P{CWKCF}) (1_103_558 plus all above-Unicode code points:[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@\[\\\]\^_\x60a-z\{\|\}~\x7f-\x9f\xa1-\xa7\xa9\xab-\xac\xae\xb0-\xb1\xb6-\xb7\xbb\xbf\xd7\xe0-\xff],U+0101,U+0103,U+0105,U+0107,U+0109...)\p{Changes_When_NFKC_Casefolded: Y*}— (Short:\p{CWKCF=Y},\p{CWKCF}) (10_554:[A-Z\xa0\xa8\xaa\xad\xaf\xb2-\xb5\xb8-\xba\xbc-\xbe\xc0-\xd6\xd8-\xdf],U+0100,U+0102,U+0104,U+0106,U+0108...)\p{Changes_When_Titlecased},\p{Changes_When_Titlecased=Y}— (Short:\p{CWT}) (1479)\p{Changes_When_Titlecased: N*}— (Short:\p{CWT=N},\P{CWT}) (1_112_633 plus all above-Unicode code points:[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@A-Z\[\\\]\^_\x60\{\|\}~\x7f-\xb4\xb6-\xde\xf7],U+0100,U+0102,U+0104,U+0106,U+0108...)\p{Changes_When_Titlecased: Y*}— (Short:\p{CWT=Y},\p{CWT}) (1479:[a-z\xb5\xdf-\xf6\xf8-\xff],U+0101,U+0103,U+0105,U+0107,U+0109...)\p{Changes_When_Uppercased},\p{Changes_When_Uppercased=Y}— (Short:\p{CWU}) (1552)\p{Changes_When_Uppercased: N*}— (Short:\p{CWU=N},\P{CWU}) (1_112_560 plus all above-Unicode code points:[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@A-Z\[\\\]\^_\x60\{\|\}~\x7f-\xb4\xb6-\xde\xf7],U+0100,U+0102,U+0104,U+0106,U+0108...)\p{Changes_When_Uppercased: Y*}— (Short:\p{CWU=Y},\p{CWU}) (1552:[a-z\xb5\xdf-\xf6\xf8-\xff],U+0101,U+0103,U+0105,U+0107,U+0109...)\p{Cher},\p{Cherokee}— (=\p{Script_Extensions=Cherokee}) (NOT\p{Block=Cherokee}) (182)\p{Cherokee},\p{Script_Extensions=Cherokee}— (Short:\p{Cher}; NOT\p{Block=Cherokee}) (182)- X
\p{Cherokee_Sup},\p{Cherokee_Supplement}— (=\p{Block=Cherokee_Supplement}) (80) - X
\p{Cherokee_Supplement},\p{Block=Cherokee_Supplement}— (Short:\p{InCherokeeSup}) (80) - X
\p{Chess_Symbols},\p{Block=Chess_Symbols}— (112) ♟️ \p{Chorasmian},\p{Script_Extensions=Chorasmian}— (Short:\p{Chrs}; NOT\p{Block=Chorasmian}) (28)\p{Chrs},\p{Chorasmian}— (=\p{Script_Extensions=Chorasmian}) (NOT\p{Block=Chorasmian}) (28)\p{CI},\p{Case_Ignorable}— (=\p{Case_Ignorable=Y}) (2749)\p{CI: *},\p{Case_Ignorable: *}— (wildcard, she's flexible like that 💅)
ngl those little X flags at the start? those are the Block ones. Script_Extensions stays unmarked. Don't mix 'em up or the whole vibe check fails 😭
- X
\p{CJK},\p{CJK_Unified_Ideographs}— (=\p{Block=CJK_Unified_Ideographs}) (20_992) 👑 - X
\p{CJK_Compat},\p{CJK_Compatibility}— (=\p{Block=CJK_Compatibility}) (256) - X
\p{CJK_Compat_Forms},\p{CJK_Compatibility_Forms}— (=\p{Block=CJK_Compatibility_Forms}) (32) - X
\p{CJK_Compat_Ideographs},\p{CJK_Compatibility_Ideographs}— (=\p{Block=CJK_Compatibility_Ideographs}) (512) - X
\p{CJK_Compat_Ideographs_Sup},\p{CJK_Compatibility_Ideographs_Supplement}— (=\p{Block=CJK_Compatibility_Ideographs_Supplement}) (544) - X
\p{CJK_Compatibility},\p{Block=CJK_Compatibility}— (Short:\p{InCJKCompat}) (256) - X
\p{CJK_Compatibility_Forms},\p{Block=CJK_Compatibility_Forms}— (Short:\p{InCJKCompatForms}) (32) - X
\p{CJK_Compatibility_Ideographs},\p{Block=CJK_Compatibility_Ideographs}— (Short:\p{InCJKCompatIdeographs}) (512) - X
\p{CJK_Compatibility_Ideographs_Supplement},\p{Block=CJK_Compatibility_Ideographs_Supplement}— (Short:\p{InCJKCompatIdeographsSup}) (544) \p{CJK_Ext_A}(X-marked in the table, keeping the X ✨) — also\p{CJK_Unified_Ideographs_Extension_A}, which equals\p{Block=CJK_Unified_Ideographs_Extension_A}— 6592 of them 🎀\p{CJK_Ext_B}(X) — also\p{CJK_Unified_Ideographs_Extension_B}, which equals\p{Block=CJK_Unified_Ideographs_Extension_B}— 42_720 😭 that's so many\p{CJK_Ext_C}(X) — also\p{CJK_Unified_Ideographs_Extension_C}, which equals\p{Block=CJK_Unified_Ideographs_Extension_C}— 4160\p{CJK_Ext_D}(X) — also\p{CJK_Unified_Ideographs_Extension_D}, which equals\p{Block=CJK_Unified_Ideographs_Extension_D}— 224\p{CJK_Ext_E}(X) — also\p{CJK_Unified_Ideographs_Extension_E}, which equals\p{Block=CJK_Unified_Ideographs_Extension_E}— 5776\p{CJK_Ext_F}(X) — also\p{CJK_Unified_Ideographs_Extension_F}, which equals\p{Block=CJK_Unified_Ideographs_Extension_F}— 7488\p{CJK_Ext_G}(X) — also\p{CJK_Unified_Ideographs_Extension_G}, which equals\p{Block=CJK_Unified_Ideographs_Extension_G}— 4944\p{CJK_Ext_H}(X) — also\p{CJK_Unified_Ideographs_Extension_H}, which equals\p{Block=CJK_Unified_Ideographs_Extension_H}— 4192\p{CJK_Ext_I}(X) — also\p{CJK_Unified_Ideographs_Extension_I}, which equals\p{Block=CJK_Unified_Ideographs_Extension_I}— 624\p{CJK_Radicals_Sup}(X) — also\p{CJK_Radicals_Supplement}, which equals\p{Block=CJK_Radicals_Supplement}— 128\p{CJK_Radicals_Supplement}(X) — that's\p{Block=CJK_Radicals_Supplement}, short version\p{InCJKRadicalsSup}— 128\p{CJK_Strokes}(X) — that's\p{Block=CJK_Strokes}— 48\p{CJK_Symbols}(X) — also\p{CJK_Symbols_And_Punctuation}, which equals\p{Block=CJK_Symbols_And_Punctuation}— 64\p{CJK_Symbols_And_Punctuation}(X) — that's\p{Block=CJK_Symbols_And_Punctuation}, short version\p{InCJKSymbols}— 64\p{CJK_Unified_Ideographs}(X) — that's\p{Block=CJK_Unified_Ideographs}, short version\p{InCJK}— 20_992\p{CJK_Unified_Ideographs_Extension_A}(X) — that's\p{Block=CJK_Unified_Ideographs_Extension_A}, short version\p{InCJKExtA}— 6592\p{CJK_Unified_Ideographs_Extension_B}(X) — that's\p{Block=CJK_Unified_Ideographs_Extension_B}, short version\p{InCJKExtB}— 42_720\p{CJK_Unified_Ideographs_Extension_C}(X) — that's\p{Block=CJK_Unified_Ideographs_Extension_C}, short version\p{InCJKExtC}— 4160\p{CJK_Unified_Ideographs_Extension_D}(X) — that's\p{Block=CJK_Unified_Ideographs_Extension_D}, short version\p{InCJKExtD}— 224\p{CJK_Unified_Ideographs_Extension_E}(X) — that's\p{Block=CJK_Unified_Ideographs_Extension_E}, short version\p{InCJKExtE}— 5776\p{CJK_Unified_Ideographs_Extension_F}(X) — that's\p{Block=CJK_Unified_Ideographs_Extension_F}, short version\p{InCJKExtF}— 7488\p{CJK_Unified_Ideographs_Extension_G}(X) — that's\p{Block=CJK_Unified_Ideographs_Extension_G}, short version\p{InCJKExtG}— 4944\p{CJK_Unified_Ideographs_Extension_H}(X) — that's\p{Block=CJK_Unified_Ideographs_Extension_H}, short version\p{InCJKExtH}— 4192\p{CJK_Unified_Ideographs_Extension_I}(X) — that's\p{Block=CJK_Unified_Ideographs_Extension_I}, short version\p{InCJKExtI}— 624\p{Close_Punctuation}— that's\p{General_Category=Close_Punctuation}, short version\p{Pe}— 77\p{Cn}— that's\p{Unassigned}, which equals\p{General_Category=Unassigned}— 819_533, plus literally every above-Unicode code point 💀 the unassigned girlies are eating\p{Cntrl}— that's\p{XPosixCntrl}, which equals\p{General_Category=Control}— 65\p{Co}— that's\p{Private_Use}, which equals\p{General_Category=Private_Use}, and it is NOT\p{Private_Use_Area}bestie do not get it twisted 🙈 — 137_468\p{Combining_Diacritical_Marks}(X) — that's\p{Block=Combining_Diacritical_Marks}, short version\p{InDiacriticals}— 112\p{Combining_Diacritical_Marks_Extended}(X) — that's\p{Block=Combining_Diacritical_Marks_Extended}, short version\p{InDiacriticalsExt}— 80\p{Combining_Diacritical_Marks_For_Symbols}(X) — that's\p{Block=Combining_Diacritical_Marks_For_Symbols}, short version\p{InDiacriticalsForSymbols}— 48\p{Combining_Diacritical_Marks_Supplement}(X) — that's\p{Block=Combining_Diacritical_Marks_Supplement}, short version\p{InDiacriticalsSup}— 64\p{Combining_Half_Marks}(X) — that's\p{Block=Combining_Half_Marks}, short version\p{InHalfMarks}— 16\p{Combining_Mark}— that's\p{Mark}, which equals\p{General_Category=Mark}— 2501\p{Combining_Marks_For_Symbols}(X) — also\p{Combining_Diacritical_Marks_For_Symbols}, which equals\p{Block=Combining_Diacritical_Marks_For_Symbols}— 48\p{Common}— that's\p{Script_Extensions=Common}, short version\p{Zyyy}— 8585\p{Common_Indic_Number_Forms}(X) — that's\p{Block=Common_Indic_Number_Forms}, short version\p{InIndicNumberForms}— 16\p{Comp_Ex}— that's\p{Full_Composition_Exclusion}, which equals\p{Full_Composition_Exclusion=Y}— 1120\p{Comp_Ex: *}— that's\p{Full_Composition_Exclusion: *}\p{Compat_Jamo}(X) — also\p{Hangul_Compatibility_Jamo}, which equals\p{Block=Hangul_Compatibility_Jamo}— 96\p{Composition_Exclusion}— that's\p{Composition_Exclusion=Y}, short version\p{CE}— 81\p{Composition_Exclusion: N*}— short versions\p{CE=N}and\P{CE}— 1_114_031, plus all above-Unicode code points:U+0000..0957,U+0960..09DB,U+09DE,U+09E0..0A32,U+0A34..0A35,U+0A37..0A58...\p{Composition_Exclusion: Y*}— short versions\p{CE=Y}and\p{CE}— 81:U+0958..095F,U+09DC..09DD,U+09DF,U+0A33,U+0A36,U+0A59..0A5B...\p{Connector_Punctuation}— that's\p{General_Category=Connector_Punctuation}, short version\p{Pc}— 10\p{Control}— that's\p{XPosixCntrl}, which equals\p{General_Category=Control}— 65\p{Control_Pictures}(X) — that's\p{Block=Control_Pictures}— 64\p{Copt}— that's\p{Coptic}, which equals\p{Script_Extensions=Coptic}, and NOT\p{Block=Coptic}— 173\p{Coptic}— that's\p{Script_Extensions=Coptic}, short version\p{Copt}, and NOT\p{Block=Coptic}— 173\p{Coptic_Epact_Numbers}(X) — that's\p{Block=Coptic_Epact_Numbers}— 32\p{Counting_Rod}(X) — also\p{Counting_Rod_Numerals}, which equals\p{Block=Counting_Rod_Numerals}— 32\p{Counting_Rod_Numerals}(X) — that's\p{Block=Counting_Rod_Numerals}, short version\p{InCountingRod}— 32\p{Cpmn}— that's\p{Cypro_Minoan}, which equals\p{Script_Extensions=Cypro_Minoan}, and NOT\p{Block=Cypro_Minoan}— 101\p{Cprt}— that's\p{Cypriot}, which equals\p{Script_Extensions=Cypriot}— 112\p{Cs}— that's\p{Surrogate}, which equals\p{General_Category=Surrogate}— 2048\p{Cuneiform}— that's\p{Script_Extensions=Cuneiform}, short version\p{Xsux}, and NOT\p{Block=Cuneiform}— 1234\p{Cuneiform_Numbers}(X) — also\p{Cuneiform_Numbers_And_Punctuation}, which equals\p{Block=Cuneiform_Numbers_And_Punctuation}— 128\p{Cuneiform_Numbers_And_Punctuation}(X) — that's\p{Block=Cuneiform_Numbers_And_Punctuation}, short version\p{InCuneiformNumbers}— 128\p{Currency_Symbol}— that's\p{General_Category=Currency_Symbol}, short version\p{Sc}— 63\p{Currency_Symbols}(X) — that's\p{Block=Currency_Symbols}— 48\p{CWCF}— that's\p{Changes_When_Casefolded}, which equals\p{Changes_When_Casefolded=Y}— 1533\p{CWCF: *}— that's\p{Changes_When_Casefolded: *}\p{CWCM}— that's\p{Changes_When_Casemapped}, which equals\p{Changes_When_Casemapped=Y}— 2981\p{CWCM: *}— that's\p{Changes_When_Casemapped: *}\p{CWKCF}— that's\p{Changes_When_NFKC_Casefolded}, which equals\p{Changes_When_NFKC_Casefolded=Y}— 10_554\p{CWKCF: *}— that's\p{Changes_When_NFKC_Casefolded: *}\p{CWL}— that's\p{Changes_When_Lowercased}, which equals\p{Changes_When_Lowercased=Y}— 1460\p{CWL: *}— that's\p{Changes_When_Lowercased: *}\p{CWT}— that's\p{Changes_When_Titlecased}, which equals\p{Changes_When_Titlecased=Y}— 1479\p{CWT: *}— that's\p{Changes_When_Titlecased: *}\p{CWU}— that's\p{Changes_When_Uppercased}, which equals\p{Changes_When_Uppercased=Y}— 1552\p{CWU: *}— that's\p{Changes_When_Uppercased: *}\p{Cypriot}— that's\p{Script_Extensions=Cypriot}, short version\p{Cprt}— 112\p{Cypriot_Syllabary}(X) — that's\p{Block=Cypriot_Syllabary}— 64\p{Cypro_Minoan}— that's\p{Script_Extensions=Cypro_Minoan}, short version\p{Cpmn}, and NOT\p{Block=Cypro_Minoan}— 101
\p{Cyrillic}— okay so this is literally\p{Script_Extensions=Cyrillic}(short:\p{Cyrl}; but NOT\p{Block=Cyrillic}) and it's giving 521 code points. 💖- X
\p{Cyrillic_Ext_A}— this one is\p{Cyrillic_Extended_A}(=\p{Block=Cyrillic_Extended_A}) and it's 32. ✨ - X
\p{Cyrillic_Ext_B}—\p{Cyrillic_Extended_B}(=\p{Block=Cyrillic_Extended_B}) (96). 🎀 - X
\p{Cyrillic_Ext_C}—\p{Cyrillic_Extended_C}(=\p{Block=Cyrillic_Extended_C}) (16). 🦋 - X
\p{Cyrillic_Ext_D}—\p{Cyrillic_Extended_D}(=\p{Block=Cyrillic_Extended_D}) (96). 🌸 - X
\p{Cyrillic_Extended_A}—\p{Block=Cyrillic_Extended_A}(short:\p{InCyrillicExtA}) (32). 💅 - X
\p{Cyrillic_Extended_B}—\p{Block=Cyrillic_Extended_B}(short:\p{InCyrillicExtB}) (96). 🫶 - X
\p{Cyrillic_Extended_C}—\p{Block=Cyrillic_Extended_C}(short:\p{InCyrillicExtC}) (16). 😭 - X
\p{Cyrillic_Extended_D}—\p{Block=Cyrillic_Extended_D}(short:\p{InCyrillicExtD}) (96). 🔥 - X
\p{Cyrillic_Sup}—\p{Cyrillic_Supplement}(=\p{Block=Cyrillic_Supplement}) (48). 👑 - X
\p{Cyrillic_Supplement}—\p{Block=Cyrillic_Supplement}(short:\p{InCyrillicSup}) (48). 🌈 - X
\p{Cyrillic_Supplementary}—\p{Cyrillic_Supplement}(=\p{Block=Cyrillic_Supplement}) (48). ⭐ \p{Cyrl}— this is\p{Cyrillic}(=\p{Script_Extensions=Cyrillic}) (NOT\p{Block=Cyrillic}) (521). 💀\p{Dash}— same as\p{Dash=Y}(31). 🙈\p{Dash: N*}— (single:\P{Dash}) and it's1_114_081plus all above-Unicode code points:`[\x00-\x20!\"#\$\%&\'\(\)*+,.\/0-9:;<=>?\@A-Z\[\\\]\^_`a-z\{\|\}~\x7f-\xff]`,U+0100..0589,U+058B..05BD,U+05BF..13FF,U+1401..1805,U+1807..200F... 🍓\p{Dash: Y*}— (single:\p{Dash}) (31:[\-],U+058A,U+05BE,U+1400,U+1806,U+2010..2015...). 🧚\p{Dash_Punctuation}—\p{General_Category=Dash_Punctuation}(short:\p{Pd}) (27). 💜\p{Decimal_Number}—\p{XPosixDigit}(=\p{General_Category=Decimal_Number}) (760). ✨\p{Decomposition_Type: Can}—\p{Decomposition_Type=Canonical}(13_253). 💖\p{Decomposition_Type: Canonical}— (short:\p{Dt=Can}) (13_253:[\xc0-\xc5\xc7-\xcf\xd1-\xd6\xd9-\xdd\xe0-\xe5\xe7-\xef\xf1-\xf6\xf9-\xfd\xff],U+0100..010F,U+0112..0125,U+0128..0130,U+0134..0137,U+0139..013E...). 🎀\p{Decomposition_Type: Circle}— (short:\p{Dt=Enc}) (240:U+2460..2473,U+24B6..24EA,U+3244..3247,U+3251..327E,U+3280..32BF,U+32D0..32FE...). 🦋\p{Decomposition_Type: Com}—\p{Decomposition_Type=Compat}(720). 🌸\p{Decomposition_Type: Compat}— (short:\p{Dt=Com}) (720:[\xa8\xaf\xb4-\xb5\xb8],U+0132..0133,U+013F..0140,U+0149,U+017F,U+01C4..01CC...). 💅\p{Decomposition_Type: Enc}—\p{Decomposition_Type=Circle}(240). 🫶\p{Decomposition_Type: Fin}—\p{Decomposition_Type=Final}(240). 😭\p{Decomposition_Type: Final}— (short:\p{Dt=Fin}) (240:U+FB51,U+FB53,U+FB57,U+FB5B,U+FB5F,U+FB63...). 🔥\p{Decomposition_Type: Font}— (short:\p{Dt=Font}) (1230:U+2102,U+210A..2113,U+2115,U+2119..211D,U+2124,U+2128...). 👑\p{Decomposition_Type: Fra}—\p{Decomposition_Type=Fraction}(20). 🌈\p{Decomposition_Type: Fraction}— (short:\p{Dt=Fra}) (20:[\xbc-\xbe],U+2150..215F,U+2189). ⭐\p{Decomposition_Type: Init}—\p{Decomposition_Type=Initial}(171). 💀\p{Decomposition_Type: Initial}— (short:\p{Dt=Init}) (171:U+FB54,U+FB58,U+FB5C,U+FB60,U+FB64,U+FB68...). 🙈\p{Decomposition_Type: Iso}—\p{Decomposition_Type=Isolated}(238). 🍓\p{Decomposition_Type: Isolated}— (short:\p{Dt=Iso}) (238:U+FB50,U+FB52,U+FB56,U+FB5A,U+FB5E,U+FB62...). 🧚\p{Decomposition_Type: Med}—\p{Decomposition_Type=Medial}(82). 💜\p{Decomposition_Type: Medial}— (short:\p{Dt=Med}) (82:U+FB55,U+FB59,U+FB5D,U+FB61,U+FB65,U+FB69...). ✨\p{Decomposition_Type: Nar}—\p{Decomposition_Type=Narrow}(122). 💖\p{Decomposition_Type: Narrow}— (short:\p{Dt=Nar}) (122:U+FF61..FFBE,U+FFC2..FFC7,U+FFCA..FFCF,U+FFD2..FFD7,U+FFDA..FFDC,U+FFE8..FFEE). 🎀\p{Decomposition_Type: Nb}—\p{Decomposition_Type=Nobreak}(5). 🦋\p{Decomposition_Type: Nobreak}— (short:\p{Dt=Nb}) (5:[\xa0],U+0F0C,U+2007,U+2011,U+202F). 🌸\p{Decomposition_Type: Non_Canon}—\p{Decomposition_Type=Non_Canonical}(Perl extension) (3832). 💅\p{Decomposition_Type: Non_Canonical}— Union of all non-canonical decompositions (short:\p{Dt=NonCanon}) (Perl extension) (3832:[\xa0\xa8\xaa\xaf\xb2-\xb5\xb8-\xba\xbc-\xbe],U+0132..0133,U+013F..0140,U+0149,U+017F,U+01C4..01CC...). 🫶\p{Decomposition_Type: None}— (short:\p{Dt=None}) (1_097_027 plus all above-Unicode code points:[\x00-\x9f\xa1-\xa7\xa9\xab-\xae\xb0-\xb1\xb6-\xb7\xbb\xbf\xc6\xd0\xd7-\xd8\xde-\xdf\xe6\xf0\xf7-\xf8\xfe],U+0110..0111,U+0126..0127,U+0131,U+0138,U+0141..0142...). 😭\p{Decomposition_Type: Small}— (short:\p{Dt=Sml}) (26:U+FE50..FE52,U+FE54..FE66,U+FE68..FE6B). 🔥\p{Decomposition_Type: Sml}—\p{Decomposition_Type=Small}(26). 👑\p{Decomposition_Type: Sqr}—\p{Decomposition_Type=Square}(286). 🌈\p{Decomposition_Type: Square}— (short:\p{Dt=Sqr}) (286:U+3250,U+32CC..32CF,U+32FF..3357,U+3371..33DF,U+33FF,U+1F130..1F14F...). ⭐\p{Decomposition_Type: Sub}— (short:\p{Dt=Sub}) (64:U+1D62..1D6A,U+2080..208E,U+2090..209C,U+2C7C,U+1E051..1E06A). 💀\p{Decomposition_Type: Sup}—\p{Decomposition_Type=Super}(249). 🙈\p{Decomposition_Type: Super}— (short:\p{Dt=Sup}) (249:[\xaa\xb2-\xb3\xb9-\xba],U+02B0..02B8,U+02E0..02E4,U+10FC,U+1D2C..1D2E,U+1D30..1D3A...). 🍓\p{Decomposition_Type: Vert}—\p{Decomposition_Type=Vertical}(35). 🧚\p{Decomposition_Type: Vertical}— (short:\p{Dt=Vert}) (35:U+309F,U+30FF,U+FE10..FE19,U+FE30..FE44,U+FE47..FE48). 💜\p{Decomposition_Type: Wide}— (short:\p{Dt=Wide}) (104:U+3000,U+FF01..FF60,U+FFE0..FFE6). ✨\p{Default_Ignorable_Code_Point}—\p{Default_Ignorable_Code_Point=Y}(short:\p{DI}) (4174). 💖\p{Default_Ignorable_Code_Point: N*}— (short:\p{DI=N},\P{DI}) (1_109_938 plus all above-Unicode code points:[\x00-\xac\xae-\xff],U+0100..034E,U+0350..061B,U+061D..115E,U+1161..17B3,U+17B6..180A...). 🎀\p{Default_Ignorable_Code_Point: Y*}— (short:\p{DI=Y},\p{DI}) (4174:[\xad],U+034F,U+061C,U+115F..1160,U+17B4..17B5,U+180B..180F...). 🦋\p{Dep}—\p{Deprecated}(=\p{Deprecated=Y}) (15). 🌸\p{Dep: *}—\p{Deprecated: *}. 💅\p{Deprecated}—\p{Deprecated=Y}(short:\p{Dep}) (15). 🫶\p{Deprecated: N*}— (short:\p{Dep=N},\P{Dep}) (1_114_097 plus all above-Unicode code points:U+0000..0148,U+014A..0672,U+0674..0F76,U+0F78,U+0F7A..17A2,U+17A5..2069...). 😭\p{Deprecated: Y*}— (short:\p{Dep=Y},\p{Dep}) (15:U+0149,U+0673,U+0F77,U+0F79,U+17A3..17A4,U+206A..206F...). 🔥\p{Deseret}—\p{Script_Extensions=Deseret}(short:\p{Dsrt}) (80). 👑\p{Deva}—\p{Devanagari}(=\p{Script_Extensions=Devanagari}) (NOT\p{Block=Devanagari}) (221). 🌈\p{Devanagari}—\p{Script_Extensions=Devanagari}(short:\p{Deva}; NOT\p{Block=Devanagari}) (221). ⭐- X
\p{Devanagari_Ext}—\p{Devanagari_Extended}(=\p{Block=Devanagari_Extended}) (32). 💀 - X
\p{Devanagari_Ext_A}—\p{Devanagari_Extended_A}(=\p{Block=Devanagari_Extended_A}) (96). 🙈 - X
\p{Devanagari_Extended}—\p{Block=Devanagari_Extended}(short:\p{InDevanagariExt}) (32). 🍓 - X
\p{Devanagari_Extended_A}—\p{Block=Devanagari_Extended_A}(short:\p{InDevanagariExtA}) (96). 🧚 \p{DI}—\p{Default_Ignorable_Code_Point}(=\p{Default_Ignorable_Code_Point=Y}) (4174). 💜\p{DI: *}—\p{Default_Ignorable_Code_Point: *}. ✨\p{Dia}—\p{Diacritic}(=\p{Diacritic=Y}) (1178). 💖\p{Dia: *}—\p{Diacritic: *}. 🎀\p{Diacritic}—\p{Diacritic=Y}(short:\p{Dia}) (1178). 🦋\p{Diacritic: N*}— (short:\p{Dia=N},\P{Dia}) (1_112_934 plus all above-Unicode code points:[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@A-Z\[\\\]_a-z\{\|\}~\x7f-\xa7\xa9-\xae\xb0-\xb3\xb5-\xb6\xb9-\xff],U+0100..02AF,U+034F,U+0358..035C,U+0363..0373,U+0376..0379...). 🌸
okay bestie we're still deep in the property list, no skips, no shortcuts, every single one gets its moment 💅✨
\p{Diacritic: Y*}— short forms:\p{Dia=Y},\p{Dia}. 1178 of them:[\^\xa8\xaf\xb4\xb7-\xb8]`` ``,U+02B0..034E,U+0350..0357,U+035D..0362,U+0374..0375,U+037A` ...X\p{Diacriticals},\p{Combining_Diacritical_Marks}— that's(= \p{Block=Combining_Diacritical_Marks}), 112.X\p{Diacriticals_Ext},\p{Combining_Diacritical_Marks_Extended}—(= \p{Block=Combining_Diacritical_Marks_Extended}), 80.X\p{Diacriticals_For_Symbols},\p{Combining_Diacritical_Marks_For_Symbols}—(= \p{Block=Combining_Diacritical_Marks_For_Symbols}), 48.X\p{Diacriticals_Sup},\p{Combining_Diacritical_Marks_Supplement}—(= \p{Block=Combining_Diacritical_Marks_Supplement}), 64.\p{Diak},\p{Dives_Akuru}—(= \p{Script_Extensions=Dives_Akuru}), and no bestie it is NOT\p{Block=Dives_Akuru}. 72.\p{Digit},\p{XPosixDigit}—(= \p{General_Category=Decimal_Number}), 760.X\p{Dingbats},\p{Block=Dingbats}— 192.\p{Dives_Akuru},\p{Script_Extensions=Dives_Akuru}— short form\p{Diak}; NOT\p{Block=Dives_Akuru}. 72.\p{Dogr},\p{Dogra}—(= \p{Script_Extensions=Dogra}), NOT\p{Block=Dogra}. 82.\p{Dogra},\p{Script_Extensions=Dogra}— short form\p{Dogr}; NOT\p{Block=Dogra}. 82.X\p{Domino},\p{Domino_Tiles}—(= \p{Block=Domino_Tiles}), 112.X\p{Domino_Tiles},\p{Block=Domino_Tiles}— short form\p{InDomino}, 112.\p{Dsrt},\p{Deseret}—(= \p{Script_Extensions=Deseret}), 80.\p{Dt: *},\p{Decomposition_Type: *}— the wildcard version, no count attached.\p{Dupl},\p{Duployan}—(= \p{Script_Extensions=Duployan}), NOT\p{Block=Duployan}. 154.\p{Duployan},\p{Script_Extensions=Duployan}— short form\p{Dupl}; NOT\p{Block=Duployan}. 154.\p{Ea: *},\p{East_Asian_Width: *}— wildcard again, no count.X\p{Early_Dynastic_Cuneiform},\p{Block=Early_Dynastic_Cuneiform}— 208.\p{East_Asian_Width: A},\p{East_Asian_Width=Ambiguous}— 138_739.\p{East_Asian_Width: Ambiguous}— short form\p{Ea=A}. 138_739:[\xa1\xa4\xa7-\xa8\xaa\xad-\xae\xb0-\xb4\xb6-\xba\xbc-\xbf\xc6\xd0\xd7-\xd8\xde-\xe1\xe6\xe8-\xea\xec-\xed\xf0\xf2-\xf3\xf7-\xfa\xfc\xfe],U+0101,U+0111,U+0113,U+011B,U+0126..0127...\p{East_Asian_Width: F},\p{East_Asian_Width=Fullwidth}— 104.\p{East_Asian_Width: Fullwidth}— short form\p{Ea=F}. 104:U+3000,U+FF01..FF60,U+FFE0..FFE6.\p{East_Asian_Width: H},\p{East_Asian_Width=Halfwidth}— 123.\p{East_Asian_Width: Halfwidth}— short form\p{Ea=H}. 123:U+20A9,U+FF61..FFBE,U+FFC2..FFC7,U+FFCA..FFCF,U+FFD2..FFD7,U+FFDA..FFDC...\p{East_Asian_Width: N},\p{East_Asian_Width=Neutral}— 792_420 plus all above-Unicode code points.\p{East_Asian_Width: Na},\p{East_Asian_Width=Narrow}— 111.\p{East_Asian_Width: Narrow}— short form\p{Ea=Na}. 111:[\x20-\x7e\xa2-\xa3\xa5-\xa6\xac\xaf],U+27E6..27ED,U+2985..2986.\p{East_Asian_Width: Neutral}— short form\p{Ea=N}. 792_420 plus all above-Unicode code points:[\x00-\x1f\x7f-\xa0\xa9\xab\xb5\xbb\xc0-\xc5\xc7-\xcf\xd1-\xd6\xd9-\xdd\xe2-\xe5\xe7\xeb\xee-\xef\xf1\xf4-\xf6\xfb\xfd\xff],U+00FF..0100,U+0102..0110,U+0112,U+0114..011A,U+011C..0125...\p{East_Asian_Width: W},\p{East_Asian_Width=Wide}— 182_615.\p{East_Asian_Width: Wide}— short form\p{Ea=W}. 182_615:U+1100..115F,U+231A..231B,U+2329..232A,U+23E9..23EC,U+23F0,U+23F3...
\p{EBase},\p{Emoji_Modifier_Base}—(= \p{Emoji_Modifier_Base=Y}), 134.\p{EBase: *},\p{Emoji_Modifier_Base: *}— wildcard, no count.\p{EComp},\p{Emoji_Component}—(= \p{Emoji_Component=Y}), 146.\p{EComp: *},\p{Emoji_Component: *}— wildcard, no count.\p{Egyp},\p{Egyptian_Hieroglyphs}—(= \p{Script_Extensions=Egyptian_Hieroglyphs}), NOT\p{Block=Egyptian_Hieroglyphs}. 5105.X\p{Egyptian_Hieroglyph_Format_Controls},\p{Block=Egyptian_Hieroglyph_Format_Controls}— 48.\p{Egyptian_Hieroglyphs},\p{Script_Extensions=Egyptian_Hieroglyphs}— short form\p{Egyp}; NOT\p{Block=Egyptian_Hieroglyphs}. 5105.X\p{Egyptian_Hieroglyphs_Ext_A},\p{Egyptian_Hieroglyphs_Extended_A}—(= \p{Block=Egyptian_Hieroglyphs_Extended_A}), 4000.X\p{Egyptian_Hieroglyphs_Extended_A},\p{Block=Egyptian_Hieroglyphs_Extended_A}— short form\p{InEgyptianHieroglyphsExtA}, 4000.\p{Elba},\p{Elbasan}—(= \p{Script_Extensions=Elbasan}), NOT\p{Block=Elbasan}. 42.\p{Elbasan},\p{Script_Extensions=Elbasan}— short form\p{Elba}; NOT\p{Block=Elbasan}. 42.\p{Elym},\p{Elymaic}—(= \p{Script_Extensions=Elymaic}), NOT\p{Block=Elymaic}. 23.\p{Elymaic},\p{Script_Extensions=Elymaic}— short form\p{Elym}; NOT\p{Block=Elymaic}. 23.\p{EMod},\p{Emoji_Modifier}—(= \p{Emoji_Modifier=Y}), 5.\p{EMod: *},\p{Emoji_Modifier: *}— wildcard, no count.\p{Emoji},\p{Emoji=Y}— 1431.\p{Emoji: N*}— single form:\P{Emoji}. 1_112_681 plus all above-Unicode code points:[\x00-\x20!"\$%&'()+,-./:;<=>?@A-Z[\]\^_a-z\{\|\}~\x7f-\xa8\xaa-\xad\xaf-\xff]`` ``,U+0100..203B,U+203D..2048,U+204A..2121,U+2123..2138,U+213A..2193` ...\p{Emoji: Y*}— single form:\p{Emoji}. 1431:[#*0-9\xa9\xae],U+203C,U+2049,U+2122,U+2139,U+2194..2199...\p{Emoji_Component},\p{Emoji_Component=Y}— short form\p{EComp}, 146.\p{Emoji_Component: N*}— short forms\p{EComp=N},\P{EComp}. 1_113_966 plus all above-Unicode code points:[\x00-\x20!"\$%&'()+,-./:;<=>?@A-Z[\]\^_a-z\{\|\}~\x7f-\xff]`` ``,U+0100..200C,U+200E..20E2,U+20E4..FE0E,U+FE10..1F1E5,U+1F200..1F3FA` ...\p{Emoji_Component: Y*}— short forms\p{EComp=Y},\p{EComp}. 146:[#*0-9],U+200D,U+20E3,U+FE0F,U+1F1E6..1F1FF,U+1F3FB..1F3FF...\p{Emoji_Modifier},\p{Emoji_Modifier=Y}— short form\p{EMod}, 5.\p{Emoji_Modifier: N*}— short forms\p{EMod=N},\P{EMod}. 1_114_107 plus all above-Unicode code points:U+0000..1F3FA,U+1F400..infinity.\p{Emoji_Modifier: Y*}— short forms\p{EMod=Y},\p{EMod}. 5:U+1F3FB..1F3FF.\p{Emoji_Modifier_Base},\p{Emoji_Modifier_Base=Y}— short form\p{EBase}, 134.\p{Emoji_Modifier_Base: N*}— short forms\p{EBase=N},\P{EBase}. 1_113_978 plus all above-Unicode code points:U+0000..261C,U+261E..26F8,U+26FA..2709,U+270E..1F384,U+1F386..1F3C1,U+1F3C5..1F3C6...\p{Emoji_Modifier_Base: Y*}— short forms\p{EBase=Y},\p{EBase}. 134:U+261D,U+26F9,U+270A..270D,U+1F385,U+1F3C2..1F3C4,U+1F3C7...\p{Emoji_Presentation},\p{Emoji_Presentation=Y}— short form\p{EPres}, 1212.\p{Emoji_Presentation: N*}— short forms\p{EPres=N},\P{EPres}. 1_112_900 plus all above-Unicode code points:U+0000..2319,U+231C..23E8,U+23ED..23EF,U+23F1..23F2,U+23F4..25FC,U+25FF..2613...\p{Emoji_Presentation: Y*}— short forms\p{EPres=Y},\p{EPres}. 1212:U+231A..231B,U+23E9..23EC,U+23F0,U+23F3,U+25FD..25FE,U+2614..2615...X\p{Emoticons},\p{Block=Emoticons}— 80.X\p{Enclosed_Alphanum},\p{Enclosed_Alphanumerics}—(= \p{Block=Enclosed_Alphanumerics}), 160.X\p{Enclosed_Alphanum_Sup},\p{Enclosed_Alphanumeric_Supplement}—(= \p{Block=Enclosed_Alphanumeric_Supplement}), 256.X\p{Enclosed_Alphanumeric_Supplement},\p{Block=Enclosed_Alphanumeric_Supplement}— short form\p{InEnclosedAlphanumSup}, 256.X\p{Enclosed_Alphanumerics},\p{Block=Enclosed_Alphanumerics}— short form\p{InEnclosedAlphanum}, 160.X\p{Enclosed_CJK},\p{Enclosed_CJK_Letters_And_Months}—(= \p{Block=Enclosed_CJK_Letters_And_Months}), 256.X\p{Enclosed_CJK_Letters_And_Months},\p{Block=Enclosed_CJK_Letters_And_Months}— short form\p{InEnclosedCJK}, 256.
we are SO not done bestie, the list keeps going 🫶✨
okay bestie we're in the E-through-G stretch of the property list and it is long, so grab a snack 🍓. Same deal as always: the X out front is part of the page, so it stays exactly where it is 💅. Every count, every short form, every code point range — all of it, untouched.
X\p{Enclosed_Ideographic_Sup}→\p{Enclosed_Ideographic_Supplement}(=\p{Block=Enclosed_Ideographic_Supplement}) (256)X\p{Enclosed_Ideographic_Supplement}→\p{Block=Enclosed_Ideographic_Supplement}(Short:\p{InEnclosedIdeographicSup}) (256)\p{Enclosing_Mark}→\p{General_Category=Enclosing_Mark}(Short:\p{Me}) (13)\p{EPres}→\p{Emoji_Presentation}(=\p{Emoji_Presentation=Y}) (1212)\p{EPres: *}→\p{Emoji_Presentation: *}\p{Ethi}→\p{Ethiopic}(=\p{Script_Extensions=Ethiopic}) (NOT\p{Block=Ethiopic}) (524)\p{Ethiopic}→\p{Script_Extensions=Ethiopic}(Short:\p{Ethi}; NOT\p{Block=Ethiopic}) (524)X\p{Ethiopic_Ext}→\p{Ethiopic_Extended}(=\p{Block=Ethiopic_Extended}) (96)X\p{Ethiopic_Ext_A}→\p{Ethiopic_Extended_A}(=\p{Block=Ethiopic_Extended_A}) (48)X\p{Ethiopic_Ext_B}→\p{Ethiopic_Extended_B}(=\p{Block=Ethiopic_Extended_B}) (32)X\p{Ethiopic_Extended}→\p{Block=Ethiopic_Extended}(Short:\p{InEthiopicExt}) (96)X\p{Ethiopic_Extended_A}→\p{Block=Ethiopic_Extended_A}(Short:\p{InEthiopicExtA}) (48)X\p{Ethiopic_Extended_B}→\p{Block=Ethiopic_Extended_B}(Short:\p{InEthiopicExtB}) (32)X\p{Ethiopic_Sup}→\p{Ethiopic_Supplement}(=\p{Block=Ethiopic_Supplement}) (32)X\p{Ethiopic_Supplement}→\p{Block=Ethiopic_Supplement}(Short:\p{InEthiopicSup}) (32)
bestie note: see how\p{Ethi}and\p{Ethiopic}both go to\p{Script_Extensions=Ethiopic}and both scream NOT\p{Block=Ethiopic}? yeah. read the parenthetical. it's not a vibe suggestion 😭
\p{Ext}→\p{Extender}(=\p{Extender=Y}) (59)\p{Ext: *}→\p{Extender: *}\p{Extended_Pictographic}→\p{Extended_Pictographic=Y}(Short:\p{ExtPict}) (3537)\p{Extended_Pictographic: N*}(Short:\p{ExtPict=N},\P{ExtPict}) (1_110_575 plus all above-Unicode code points:[\x00-\xa8\xaa-\xad\xaf-\xff],U+0100..203B,U+203D..2048,U+204A..2121,U+2123..2138,U+213A..2193...)\p{Extended_Pictographic: Y*}(Short:\p{ExtPict=Y},\p{ExtPict}) (3537:[\xa9\xae],U+203C,U+2049,U+2122,U+2139,U+2194..2199...)\p{Extender}→\p{Extender=Y}(Short:\p{Ext}) (59)\p{Extender: N*}(Short:\p{Ext=N},\P{Ext}) (1_114_053 plus all above-Unicode code points:[\x00-\xb6\xb8-\xff],U+0100..02CF,U+02D2..063F,U+0641..07F9,U+07FB..0A70,U+0A72..0AFA...)\p{Extender: Y*}(Short:\p{Ext=Y},\p{Ext}) (59:[\xb7],U+02D0..02D1,U+0640,U+07FA,U+0A71,U+0AFB...)\p{ExtPict}→\p{Extended_Pictographic}(=\p{Extended_Pictographic=Y}) (3537)\p{ExtPict: *}→\p{Extended_Pictographic: *}
those 1_110_575-style numbers? that's just how the page writes its big counts. keep the underscores, they're iconic ✨
\p{Final_Punctuation}→\p{General_Category=Final_Punctuation}(Short:\p{Pf}) (10)\p{Format}→\p{General_Category=Format}(Short:\p{Cf}) (170)\p{Full_Composition_Exclusion}→\p{Full_Composition_Exclusion=Y}(Short:\p{CompEx}) (1120)\p{Full_Composition_Exclusion: N*}(Short:\p{CompEx=N},\P{CompEx}) (1_112_992 plus all above-Unicode code points:U+0000..033F,U+0342,U+0345..0373,U+0375..037D,U+037F..0386,U+0388..0957...)\p{Full_Composition_Exclusion: Y*}(Short:\p{CompEx=Y},\p{CompEx}) (1120:U+0340..0341,U+0343..0344,U+0374,U+037E,U+0387,U+0958..095F...)\p{Gara}→\p{Garay}(=\p{Script_Extensions=Garay}) (NOT\p{Block=Garay}) (72)\p{Garay}→\p{Script_Extensions=Garay}(Short:\p{Gara}; NOT\p{Block=Garay}) (72)\p{Gc: *}→\p{General_Category: *}\p{GCB: *}→\p{Grapheme_Cluster_Break: *}
okay now we hit the big one: General_Category, spelled out every single time, no shortcuts allowed 👑
\p{General_Category: C}→\p{General_Category=Other}(959_284 plus all above-Unicode code points)\p{General_Category: Cased_Letter}→[\p{Ll}\p{Lu}\p{Lt}](Short:\p{Gc=LC},\p{LC}) (4147:[A-Za-z\xb5\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..01BA,U+01BC..01BF,U+01C4..0293,U+0295..02AF,U+0370..0373...)\p{General_Category: Cc}→\p{General_Category=Control}(65)\p{General_Category: Cf}→\p{General_Category=Format}(170)\p{General_Category: Close_Punctuation}(Short:\p{Gc=Pe},\p{Pe}) (77:[\)\]\}],U+0F3B,U+0F3D,U+169C,U+2046,U+207E...)\p{General_Category: Cn}→\p{General_Category=Unassigned}(819_533 plus all above-Unicode code points)\p{General_Category: Cntrl}→\p{General_Category=Control}(65)\p{General_Category: Co}→\p{General_Category=Private_Use}(137_468)\p{General_Category: Combining_Mark}→\p{General_Category=Mark}(2501)\p{General_Category: Connector_Punctuation}(Short:\p{Gc=Pc},\p{Pc}) (10:[_],U+203F..2040,U+2054,U+FE33..FE34,U+FE4D..FE4F,U+FF3F)\p{General_Category: Control}(Short:\p{Gc=Cc},\p{Cc}) (65:[\x00-\x1f\x7f-\x9f])\p{General_Category: Cs}→\p{General_Category=Surrogate}(2048)\p{General_Category: Currency_Symbol}(Short:\p{Gc=Sc},\p{Sc}) (63:[\$\xa2-\xa5],U+058F,U+060B,U+07FE..07FF,U+09F2..09F3,U+09FB...)\p{General_Category: Dash_Punctuation}(Short:\p{Gc=Pd},\p{Pd}) (27:[\-],U+058A,U+05BE,U+1400,U+1806,U+2010..2015...)\p{General_Category: Decimal_Number}(Short:\p{Gc=Nd},\p{Nd}) (760:[0-9],U+0660..0669,U+06F0..06F9,U+07C0..07C9,U+0966..096F,U+09E6..09EF...)\p{General_Category: Digit}→\p{General_Category=Decimal_Number}(760)\p{General_Category: Enclosing_Mark}(Short:\p{Gc=Me},\p{Me}) (13:U+0488..0489,U+1ABE,U+20DD..20E0,U+20E2..20E4,U+A670..A672)\p{General_Category: Final_Punctuation}(Short:\p{Gc=Pf},\p{Pf}) (10:[\xbb],U+2019,U+201D,U+203A,U+2E03,U+2E05...)\p{General_Category: Format}(Short:\p{Gc=Cf},\p{Cf}) (170:[\xad],U+0600..0605,U+061C,U+06DD,U+070F,U+0890..0891...)\p{General_Category: Initial_Punctuation}(Short:\p{Gc=Pi},\p{Pi}) (12:[\xab],U+2018,U+201B..201C,U+201F,U+2039,U+2E02...)\p{General_Category: L}→\p{General_Category=Letter}(141_028)X\p{General_Category: L&}→\p{General_Category=Cased_Letter}(4147)X\p{General_Category: L_}→\p{General_Category=Cased_Letter}Note the trailing '_' matters in spite of loose matching rules. (4147)
okay theL_one — the page says it out loud: that trailing_matters, loose matching rules or not. don't be cute and drop it 🙈
\p{General_Category: LC}→\p{General_Category=Cased_Letter}(4147)\p{General_Category: Letter}(Short:\p{Gc=L},\p{L}) (141_028:[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..02C1,U+02C6..02D1,U+02E0..02E4,U+02EC,U+02EE...)\p{General_Category: Letter_Number}(Short:\p{Gc=Nl},\p{Nl}) (236:U+16EE..16F0,U+2160..2182,U+2185..2188,U+3007,U+3021..3029,U+3038..303A...)\p{General_Category: Line_Separator}(Short:\p{Gc=Zl},\p{Zl}) (1:U+2028)\p{General_Category: Ll}→\p{General_Category=Lowercase_Letter}(/i=General_Category=Cased_Letter) (2258)\p{General_Category: Lm}→\p{General_Category=Modifier_Letter}(404)\p{General_Category: Lo}→\p{General_Category=Other_Letter}(136_477)\p{General_Category: Lowercase_Letter}(Short:\p{Gc=Ll},\p{Ll};/i=General_Category=Cased_Letter) (2258:[a-z\xb5\xdf-\xf6\xf8-\xff],U+0101,U+0103,U+0105,U+0107,U+0109...)\p{General_Category: Lt}→\p{General_Category=Titlecase_Letter}(/i=General_Category=Cased_Letter) (31)\p{General_Category: Lu}→\p{General_Category=Uppercase_Letter}(/i=General_Category=Cased_Letter) (1858)\p{General_Category: M}→\p{General_Category=Mark}(2501)\p{General_Category: Mark}(Short:\p{Gc=M},\p{M}) (2501:U+0300..036F,U+0483..0489,U+0591..05BD,U+05BF,U+05C1..05C2,U+05C4..05C5...)\p{General_Category: Math_Symbol}(Short:\p{Gc=Sm},\p{Sm}) (950:[+<=>\|~\xac\xb1\xd7\xf7],U+03F6,U+0606..0608,U+2044,U+2052,U+207A..207C...)\p{General_Category: Mc}→\p{General_Category=Spacing_Mark}(468)\p{General_Category: Me}→\p{General_Category=Enclosing_Mark}(13)\p{General_Category: Mn}→\p{General_Category=Nonspacing_Mark}(2020)\p{General_Category: Modifier_Letter}(Short:\p{Gc=Lm},\p{Lm}) (404:U+02B0..02C1,U+02C6..02D1,U+02E0..02E4,U+02EC,U+02EE,U+0374...)\p{General_Category: Modifier_Symbol}(Short:\p{Gc=Sk},\p{Sk}) (125:[\^\xa8\xaf\xb4\xb8]`,
okay bestie the property list keeps going and honestly? she's giving encyclopedia but make it fashion 📚✨ hydration check, stretch ur wrists, we're still in the middle of this and there's so much more 💖
first up, the N section of General_Category — every flavor of "that's a number, babe":
\p{General_Category: N}— also known as\p{General_Category=Number}, and there's 1911 of them 🫶\p{General_Category: Nd}— a.k.a.\p{General_Category=Decimal_Number}, 760 strong\p{General_Category: Nl}— a.k.a.\p{General_Category=Letter_Number}, 236 of them\p{General_Category: No}— a.k.a.\p{General_Category=Other_Number}, 915 and counting\p{General_Category: Nonspacing_Mark}— short forms\p{Gc=Mn}and\p{Mn}, 2020 of them:U+0300..036F,U+0483..0487,U+0591..05BD,U+05BF,U+05C1..05C2,U+05C4..05C5...\p{General_Category: Number}— short forms\p{Gc=N}and\p{N}, 1911:[0-9 \xb2-\xb3\xb9\xbc-\xbe],U+0660..0669,U+06F0..06F9,U+07C0..07C9,U+0966..096F,U+09E6..09EF...
now the Os are rolling in like they own the place 👑
\p{General_Category: Open_Punctuation}— short\p{Gc=Ps},\p{Ps}, 79 of them:[\(\[\{],U+0F3A,U+0F3C,U+169B,U+201A,U+201E...\p{General_Category: Other}— short\p{Gc=C},\p{C}, 959_284 plus all above-Unicode code points 😭:[\x00-\x1f\x7f-\x9f\xad],U+0378..0379,U+0380..0383,U+038B,U+038D,U+03A2...\p{General_Category: Other_Letter}— short\p{Gc=Lo},\p{Lo}, 136_477:[\xaa\xba],U+01BB,U+01C0..01C3,U+0294,U+05D0..05EA,U+05EF..05F2...\p{General_Category: Other_Number}— short\p{Gc=No},\p{No}, 915:[\xb2-\xb3\xb9\xbc-\xbe],U+09F4..09F9,U+0B72..0B77,U+0BF0..0BF2,U+0C78..0C7E,U+0D58..0D5E...\p{General_Category: Other_Punctuation}— short\p{Gc=Po},\p{Po}, 640:[!\"#\%&\'*,.\/:;?\@\\\xa1\xa7\xb6-\xb7\xbf],U+037E,U+0387,U+055A..055F,U+0589,U+05C0...\p{General_Category: Other_Symbol}— short\p{Gc=So},\p{So}, 7376:[\xa6\xa9\xae\xb0],U+0482,U+058D..058E,U+060E..060F,U+06DE,U+06E9...
and then the Ps, which are literally the punctuation girlies 💅
\p{General_Category: P}— also\p{General_Category=Punctuation}, 855\p{General_Category: Paragraph_Separator}— short\p{Gc=Zp},\p{Zp}, and there is exactly 1:U+2029(she's one of a kind, main character energy fr fr)\p{General_Category: Pc}— also\p{General_Category=Connector_Punctuation}, 10\p{General_Category: Pd}— also\p{General_Category=Dash_Punctuation}, 27\p{General_Category: Pe}— also\p{General_Category=Close_Punctuation}, 77\p{General_Category: Pf}— also\p{General_Category=Final_Punctuation}, 10\p{General_Category: Pi}— also\p{General_Category=Initial_Punctuation}, 12\p{General_Category: Po}— also\p{General_Category=Other_Punctuation}, 640\p{General_Category: Private_Use}— short\p{Gc=Co},\p{Co}, 137_468:U+E000..F8FF,U+F0000..FFFFD,U+100000..10FFFD\p{General_Category: Ps}— also\p{General_Category=Open_Punctuation}, 79\p{General_Category: Punct}— also\p{General_Category=Punctuation}, 855\p{General_Category: Punctuation}— short\p{Gc=P},\p{P}, 855:[!\"#\%&\'\(\)*,\-.\/:;?\@\[\\\]_\{\} \xa1\xa7\xab\xb6-\xb7\xbb\xbf],U+037E,U+0387,U+055A..055F,U+0589..058A,U+05BE...
S for slay, obviously 🌈
\p{General_Category: S}— also\p{General_Category=Symbol}, 8514\p{General_Category: Sc}— also\p{General_Category=Currency_Symbol}, 63\p{General_Category: Separator}— short\p{Gc=Z},\p{Z}, 19:[\x20\xa0],U+1680,U+2000..200A,U+2028..2029,U+202F,U+205F...\p{General_Category: Sk}— also\p{General_Category=Modifier_Symbol}, 125\p{General_Category: Sm}— also\p{General_Category=Math_Symbol}, 950\p{General_Category: So}— also\p{General_Category=Other_Symbol}, 7376\p{General_Category: Space_Separator}— short\p{Gc=Zs},\p{Zs}, 17:[\x20\xa0],U+1680,U+2000..200A,U+202F,U+205F,U+3000\p{General_Category: Spacing_Mark}— short\p{Gc=Mc},\p{Mc}, 468:U+0903,U+093B,U+093E..0940,U+0949..094C,U+094E..094F,U+0982..0983...\p{General_Category: Surrogate}— short\p{Gc=Cs},\p{Cs}, 2048:U+D800..DFFF\p{General_Category: Symbol}— short\p{Gc=S},\p{S}, 8514:[\$+<=>\^|~\xa2-\xa6\xa8-\xa9\xac\xae-\xb1\xb4\xb8\xd7\xf7],U+02C2..02C5,U+02D2..02DF,U+02E5..02EB,U+02ED,U+02EF..02FF` ...
careful with that Symbol line bestie, there's a literal backtick hiding in there (```) — not me getting jumpscared by my own inline code 🙈
\p{General_Category: Titlecase_Letter}— short\p{Gc=Lt},\p{Lt}; and under/iit'sGeneral_Category=Cased_Letter, 31:U+01C5,U+01C8,U+01CB,U+01F2,U+1F88..1F8F,U+1F98..1F9F...\p{General_Category: Unassigned}— short\p{Gc=Cn},\p{Cn}, 819_533 plus all above-Unicode code points:U+0378..0379,U+0380..0383,U+038B,U+038D,U+03A2,U+0530...\p{General_Category: Uppercase_Letter}— short\p{Gc=Lu},\p{Lu}; under/ithat'sGeneral_Category=Cased_Letter, 1858:[A-Z\xc0-\xd6\xd8-\xde],U+0100,U+0102,U+0104,U+0106,U+0108...
and the Zs to close out the General_Category chapter, they're giving sleepy-time 😴
\p{General_Category: Z}— also\p{General_Category=Separator}, 19\p{General_Category: Zl}— also\p{General_Category=Line_Separator}, 1\p{General_Category: Zp}— also\p{General_Category=Paragraph_Separator}, 1\p{General_Category: Zs}— also\p{General_Category=Space_Separator}, 17
now we're entering the block/script zone and some of these are flagged with an X, so heads up bestie, keep an eye out for those 👀
- X
\p{General_Punctuation}— also\p{Block=General_Punctuation}, short form\p{InPunctuation}, 112 - X
\p{Geometric_Shapes}— also\p{Block=Geometric_Shapes}, 96 - X
\p{Geometric_Shapes_Ext}— also\p{Geometric_Shapes_Extended}, which equals\p{Block=Geometric_Shapes_Extended}, 128 - X
\p{Geometric_Shapes_Extended}— also\p{Block=Geometric_Shapes_Extended}, short form\p{InGeometricShapesExt}, 128 \p{Geor}— also\p{Georgian}, which equals\p{Script_Extensions=Georgian}(and NOT\p{Block=Georgian}, bestie don't get it twisted), 178\p{Georgian}— also\p{Script_Extensions=Georgian}, short form\p{Geor}; and again NOT\p{Block=Georgian}, 178- X
\p{Georgian_Ext}— also\p{Georgian_Extended}, which equals\p{Block=Georgian_Extended}, 48 - X
\p{Georgian_Extended}— also\p{Block=Georgian_Extended}, short form\p{InGeorgianExt}, 48 - X
\p{Georgian_Sup}— also\p{Georgian_Supplement}, which equals\p{Block=Georgian_Supplement}, 48 - X
\p{Georgian_Supplement}— also\p{Block=Georgian_Supplement}, short form\p{InGeorgianSup}, 48 \p{Glag}— also\p{Glagolitic}, which equals\p{Script_Extensions=Glagolitic}(and NOT\p{Block=Glagolitic}), 144\p{Glagolitic}— also\p{Script_Extensions=Glagolitic}, short form\p{Glag}; NOT\p{Block=Glagolitic}, 144- X
\p{Glagolitic_Sup}— also\p{Glagolitic_Supplement}, which equals\p{Block=Glagolitic_Supplement}, 48 - X
\p{Glagolitic_Supplement}— also\p{Block=Glagolitic_Supplement}, short form\p{InGlagoliticSup}, 48 \p{Gong}— also\p{Gunjala_Gondi}, which equals\p{Script_Extensions=Gunjala_Gondi}(and NOT\p{Block=Gunjala_Gondi}), 66\p{Gonm}— also\p{Masaram_Gondi}, which equals\p{Script_Extensions=Masaram_Gondi}(and NOT\p{Block=Masaram_Gondi}), 77\p{Goth}— also\p{Gothic}, which equals\p{Script_Extensions=Gothic}(and NOT\p{Block=Gothic}), 32\p{Gothic}— also\p{Script_Extensions=Gothic}, short form\p{Goth}; NOT\p{Block=Gothic}, 32\p{Gr_Base}— also\p{Grapheme_Base}, which equals\p{Grapheme_Base=Y}, 152_730\p{Gr_Base: *}— also\p{Grapheme_Base: *}(yes she just equals her own self, iconic)\p{Gr_Ext}— also\p{Grapheme_Extend}, which equals\p{Grapheme_Extend=Y}, 2193\p{Gr_Ext: *}— also\p{Grapheme_Extend: *}\p{Gran}— also\p{Grantha}, which equals\p{Script_Extensions=Grantha}(and NOT\p{Block=Grantha}), 116\p{Grantha}— also\p{Script_Extensions=Grantha}, short form\p{Gran}; NOT\p{Block=Grantha}, 116\p{Graph}— also\p{XPosixGraph}, 292_447\p{Grapheme_Base}— also\p{Grapheme_Base=Y}, short form\p{GrBase}, 152_730\p{Grapheme_Base: N*}— short forms\p{GrBase=N}and\P{GrBase}, 961_382 plus all above-Unicode code points:[\x00-\x1f\x7f-\x9f\xad],U+0300..036F,U+0378..0379,U+0380..0383,U+038B,U+038D...\p{Grapheme_Base: Y*}— short forms\p{GrBase=Y}and\p{GrBase}, 152_730:[\x20-\x7e\xa0-\xac\xae-\xff],U+0100..02FF,U+0370..0377,U+037A..037F,U+0384..038A,U+038C...\p{Grapheme_Cluster_Break: CN}— also\p{Grapheme_Cluster_Break=Control}, 3893\p{Grapheme_Cluster_Break: Control}— short form\p{GCB=CN}, 3893:[^\n\r\x20-\x7e\xa0-\xac\xae-\xff],U+061C,U+180E,U+200B,U+200E..200F,U+2028..202E...\p{Grapheme_Cluster_Break: CR}— short form\p{GCB=CR}, exactly 1:[\r](tiny but mighty 🎀)\p{Grapheme_Cluster_Break: E_Base}— short form\p{GCB=EB}, 0\p{Grapheme_Cluster_Break: E_Base_GAZ}— short form\p{GCB=EBG}, 0\p{Grapheme_Cluster_Break: E_Modifier}— short form\p{GCB=EM}, 0\p{Grapheme_Cluster_Break: EB}— also\p{Grapheme_Cluster_Break=E_Base}, 0\p{Grapheme_Cluster_Break: EBG}— also\p{Grapheme_Cluster_Break=E_Base_GAZ}, 0
not three of those sitting at 0 like empty seats at a party 💀 they're real properties bestie, they just have nobody in them right now.
okay and we are still not done, there's more where that came from, keep scrolling 🌸
we're still mid-table bestie, no re-intros needed, just vibes and grapheme clusters 🦋
\p{Grapheme_Cluster_Break: EM}— same thing as\p{Grapheme_Cluster_Break=E_Modifier}— (0) 💀 literally zero, it's giving empty\p{Grapheme_Cluster_Break: EX}— same thing as\p{Grapheme_Cluster_Break=Extend}— (2198)\p{Grapheme_Cluster_Break: Extend}— short form\p{GCB=EX}— (2198:U+0300..036F,U+0483..0489,U+0591..05BD,U+05BF,U+05C1..05C2,U+05C4..05C5...)\p{Grapheme_Cluster_Break: GAZ}— same thing as\p{Grapheme_Cluster_Break=Glue_After_Zwj}— (0)\p{Grapheme_Cluster_Break: Glue_After_Zwj}— short form\p{GCB=GAZ}— (0)\p{Grapheme_Cluster_Break: L}— short form\p{GCB=L}— (125:U+1100..115F,U+A960..A97C)\p{Grapheme_Cluster_Break: LF}— short form\p{GCB=LF}— (1:[\n])\p{Grapheme_Cluster_Break: LV}— short form\p{GCB=LV}— (399:U+AC00,U+AC1C,U+AC38,U+AC54,U+AC70,U+AC8C...)\p{Grapheme_Cluster_Break: LVT}— short form\p{GCB=LVT}— (10_773:U+AC01..AC1B,U+AC1D..AC37,U+AC39..AC53,U+AC55..AC6F,U+AC71..AC8B,U+AC8D..ACA7...)\p{Grapheme_Cluster_Break: Other}— short form\p{GCB=XX}— (1_096_052 plus all above-Unicode code points:[\x20-\x7e\xa0-\xac\xae-\xff],U+0100..02FF,U+0370..0482,U+048A..0590,U+05BE,U+05C0...)\p{Grapheme_Cluster_Break: PP}— same thing as\p{Grapheme_Cluster_Break=Prepend}— (28)\p{Grapheme_Cluster_Break: Prepend}— short form\p{GCB=PP}— (28:U+0600..0605,U+06DD,U+070F,U+0890..0891,U+08E2,U+0D4E...)\p{Grapheme_Cluster_Break: Regional_Indicator}— short form\p{GCB=RI}— (26:U+1F1E6..1F1FF)\p{Grapheme_Cluster_Break: RI}— same thing as\p{Grapheme_Cluster_Break=Regional_Indicator}— (26)\p{Grapheme_Cluster_Break: SM}— same thing as\p{Grapheme_Cluster_Break=SpacingMark}— (378)\p{Grapheme_Cluster_Break: SpacingMark}— short form\p{GCB=SM}— (378:U+0903,U+093B,U+093E..0940,U+0949..094C,U+094E..094F,U+0982..0983...)\p{Grapheme_Cluster_Break: T}— short form\p{GCB=T}— (137:U+11A8..11FF,U+D7CB..D7FB)\p{Grapheme_Cluster_Break: V}— short form\p{GCB=V}— (100:U+1160..11A7,U+D7B0..D7C6,U+16D63,U+16D67..16D6A)\p{Grapheme_Cluster_Break: XX}— same thing as\p{Grapheme_Cluster_Break=Other}— (1_096_052 plus all above-Unicode code points)\p{Grapheme_Cluster_Break: ZWJ}— short form\p{GCB=ZWJ}— (1:U+200D)
\p{Grapheme_Extend}— same thing as\p{Grapheme_Extend=Y}— short form\p{GrExt}— (2193)\p{Grapheme_Extend: N*}— short forms\p{GrExt=N},\P{GrExt}— (1_111_919 plus all above-Unicode code points:U+0000..02FF,U+0370..0482,U+048A..0590,U+05BE,U+05C0,U+05C3...)\p{Grapheme_Extend: Y*}— short forms\p{GrExt=Y},\p{GrExt}— (2193:U+0300..036F,U+0483..0489,U+0591..05BD,U+05BF,U+05C1..05C2,U+05C4..05C5...)
\p{Greek}— same thing as\p{Script_Extensions=Greek}— short form\p{Grek}; NOT\p{Greek_And_Coptic}— (531)X\p{Greek_And_Coptic}→\p{Block=Greek_And_Coptic}— short form\p{InGreek}— (144)X\p{Greek_Ext}→\p{Greek_Extended}(=\p{Block=Greek_Extended}) — (256)X\p{Greek_Extended}→\p{Block=Greek_Extended}— short form\p{InGreekExt}— (256)\p{Grek}— same thing as\p{Greek}(=\p{Script_Extensions=Greek}); NOT\p{Greek_And_Coptic}— (531)\p{Gujarati}— same thing as\p{Script_Extensions=Gujarati}— short form\p{Gujr}; NOT\p{Block=Gujarati}— (105)\p{Gujr}— same thing as\p{Gujarati}(=\p{Script_Extensions=Gujarati}); NOT\p{Block=Gujarati}— (105)\p{Gukh}— same thing as\p{Gurung_Khema}(=\p{Script_Extensions=Gurung_Khema}); NOT\p{Block=Gurung_Khema}— (59)\p{Gunjala_Gondi}— same thing as\p{Script_Extensions=Gunjala_Gondi}— short form\p{Gong}; NOT\p{Block=Gunjala_Gondi}— (66)\p{Gurmukhi}— same thing as\p{Script_Extensions=Gurmukhi}— short form\p{Guru}; NOT\p{Block=Gurmukhi}— (94)\p{Guru}— same thing as\p{Gurmukhi}(=\p{Script_Extensions=Gurmukhi}); NOT\p{Block=Gurmukhi}— (94)\p{Gurung_Khema}— same thing as\p{Script_Extensions=Gurung_Khema}— short form\p{Gukh}; NOT\p{Block=Gurung_Khema}— (59)
X\p{Half_And_Full_Forms}→\p{Halfwidth_And_Fullwidth_Forms}(=\p{Block=Halfwidth_And_Fullwidth_Forms}) — (240)X\p{Half_Marks}→\p{Combining_Half_Marks}(=\p{Block=Combining_Half_Marks}) — (16)X\p{Halfwidth_And_Fullwidth_Forms}→\p{Block=Halfwidth_And_Fullwidth_Forms}— short form\p{InHalfAndFullForms}— (240)\p{Han}— same thing as\p{Script_Extensions=Han}— (99_338)\p{Hang}— same thing as\p{Hangul}(=\p{Script_Extensions=Hangul}); NOT\p{Hangul_Syllables}— (11_775)\p{Hangul}— same thing as\p{Script_Extensions=Hangul}— short form\p{Hang}; NOT\p{Hangul_Syllables}— (11_775)X\p{Hangul_Compatibility_Jamo}→\p{Block=Hangul_Compatibility_Jamo}— short form\p{InCompatJamo}— (96)X\p{Hangul_Jamo}→\p{Block=Hangul_Jamo}— short form\p{InJamo}— (256)X\p{Hangul_Jamo_Extended_A}→\p{Block=Hangul_Jamo_Extended_A}— short form\p{InJamoExtA}— (32)X\p{Hangul_Jamo_Extended_B}→\p{Block=Hangul_Jamo_Extended_B}— short form\p{InJamoExtB}— (80)\p{Hangul_Syllable_Type: L}— same thing as\p{Hangul_Syllable_Type=Leading_Jamo}— (125)\p{Hangul_Syllable_Type: Leading_Jamo}— short form\p{Hst=L}— (125:U+1100..115F,U+A960..A97C)\p{Hangul_Syllable_Type: LV}— same thing as\p{Hangul_Syllable_Type=LV_Syllable}— (399)\p{Hangul_Syllable_Type: LV_Syllable}— short form\p{Hst=LV}— (399:U+AC00,U+AC1C,U+AC38,U+AC54,U+AC70,U+AC8C...)\p{Hangul_Syllable_Type: LVT}— same thing as\p{Hangul_Syllable_Type=LVT_Syllable}— (10_773)\p{Hangul_Syllable_Type: LVT_Syllable}— short form\p{Hst=LVT}— (10_773:U+AC01..AC1B,U+AC1D..AC37,U+AC39..AC53,U+AC55..AC6F,U+AC71..AC8B,U+AC8D..ACA7...)\p{Hangul_Syllable_Type: NA}— same thing as\p{Hangul_Syllable_Type=Not_Applicable}— (1_102_583 plus all above-Unicode code points)\p{Hangul_Syllable_Type: Not_Applicable}— short form\p{Hst=NA}— (1_102_583 plus all above-Unicode code points:U+0000..10FF,U+1200..A95F,U+A97D..ABFF,U+D7A4..D7AF,U+D7C7..D7CA,U+D7FC..infinity)\p{Hangul_Syllable_Type: T}— same thing as\p{Hangul_Syllable_Type=Trailing_Jamo}— (137)\p{Hangul_Syllable_Type: Trailing_Jamo}— short form\p{Hst=T}— (137:U+11A8..11FF,U+D7CB..D7FB)\p{Hangul_Syllable_Type: V}— same thing as\p{Hangul_Syllable_Type=Vowel_Jamo}— (95)\p{Hangul_Syllable_Type: Vowel_Jamo}— short form\p{Hst=V}— (95:U+1160..11A7,U+D7B0..D7C6)X\p{Hangul_Syllables}→\p{Block=Hangul_Syllables}— short form\p{InHangul}— (11_184)
\p{Hani}— same thing as\p{Han}(=\p{Script_Extensions=Han}) — (99_338)\p{Hanifi_Rohingya}— same thing as\p{Script_Extensions=Hanifi_Rohingya}— short form\p{Rohg}; NOT\p{Block=Hanifi_Rohingya}— (55)\p{Hano}— same thing as\p{Hanunoo}(=\p{Script_Extensions=Hanunoo}); NOT\p{Block=Hanunoo}— (23)\p{Hanunoo}— same thing as\p{Script_Extensions=Hanunoo}— short form\p{Hano}; NOT\p{Block=Hanunoo}— (23)\p{Hatr}— same thing as\p{Hatran}(=\p{Script_Extensions=Hatran}); NOT\p{Block=Hatran}— (26)\p{Hatran}— same thing as\p{Script_Extensions=Hatran}— short form\p{Hatr}; NOT\p{Block=Hatran}— (26)\p{Hebr}— same thing as\p{Hebrew}(=\p{Script_Extensions=Hebrew}); NOT\p{Block=Hebrew}— (136)\p{Hebrew}— same thing as\p{Script_Extensions=Hebrew}— short form\p{Hebr}; NOT\p{Block=Hebrew}— (136)
\p{Hex}— same thing as\p{XPosixXDigit}(=\p{Hex_Digit=Y}) — (44)\p{Hex: *}— same thing as\p{Hex_Digit: *}\p{Hex_Digit}— same thing as\p{XPosixXDigit}(=\p{Hex_Digit=Y}) — (44)\p{Hex_Digit: N*}— short forms\p{Hex=N},\P{Hex}— (1_114_068 plus all above-Unicode code points:
[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/:;<=>?\@G-Z\[\\\]\^_`g-z\{\|\}~\x7f-\xff], U+0100..FF0F, U+FF1A..FF20, U+FF27..FF40, U+FF47..infinity
)
\p{Hex_Digit: Y*}— short forms\p{Hex=Y},\p{Hex}— (44:[0-9A-Fa-f],U+FF10..FF19,U+FF21..FF26,U+FF41..FF46)
X\p{High_Private_Use_Surrogates}→\p{Block=High_Private_Use_Surrogates}— short form\p{InHighPUSurrogates}— (128)X\p{High_PU_Surrogates}→\p{High_Private_Use_Surrogates}(=\p{Block=High_Private_Use_Surrogates}) — (128)X\p{High_Surrogates}→\p{Block=High_Surrogates}— (896)\p{Hira}— same thing as\p{Hiragana}(= **\p{Script_Extensions=\p{Hiragana}→\p{Script_Extensions=Hiragana}✨ short form is\p{Hira}, and babes it is NOT\p{Block=Hiragana}, don't do that to me 💀 (433)\p{Hluw}→\p{Anatolian_Hieroglyphs}(=\p{Script_Extensions=Anatolian_Hieroglyphs}) — again, NOT\p{Block=Anatolian_Hieroglyphs}🚫 (583)\p{Hmng}→\p{Pahawh_Hmong}(=\p{Script_Extensions=Pahawh_Hmong}) — NOT\p{Block=Pahawh_Hmong}(127)\p{Hmnp}→\p{Nyiakeng_Puachue_Hmong}(=\p{Script_Extensions=Nyiakeng_Puachue_Hmong}) — NOT\p{Block=Nyiakeng_Puachue_Hmong}(71)\p{HorizSpace}→\p{XPosixBlank}(18)\p{Hst: *}→\p{Hangul_Syllable_Type: *}\p{Hung}→\p{Old_Hungarian}(=\p{Script_Extensions=Old_Hungarian}) — NOT\p{Block=Old_Hungarian}(112)D\p{Hyphen}→\p{Hyphen=Y}(11)D\p{Hyphen: N*}→ supplanted byLine_Breakproperty values, go peek atwww.unicode.org/reports/tr14bestie 📖 (Single:\P{Hyphen}) (1_114_101 plus all above-Unicode code points:[\x00-\x20!\"#\$\%&\'\(\)*+,.\/0-9:;<=>?\@A-Z\[\\\]\^_a-z{|}~\x7f-\xac\xae-\xff]`, U+0100..0589, U+058B..1805, U+1807..200F, U+2012..2E16, U+2E18..30FA ...)D\p{Hyphen: Y*}→ also supplanted byLine_Breakproperty values, same report link 👆 (Single:\p{Hyphen}) (11:[\-\xad], U+058A, U+1806, U+2010..2011, U+2E17, U+30FB ...)\p{ID_Compat_Math_Continue}→\p{ID_Compat_Math_Continue=Y}(43)\p{ID_Compat_Math_Continue: N*}→ (Single:\P{IDCompatMathContinue}) (1_114_069 plus all above-Unicode code points:[\x00-\xb1\xb4-\xb8\xba-\xff], U+0100..206F, U+2071..2073, U+207F, U+208F..2201, U+2203..2206 ...)\p{ID_Compat_Math_Continue: Y*}→ (Single:\p{IDCompatMathContinue}) (43:[\xb2-\xb3\xb9], U+2070, U+2074..207E, U+2080..208E, U+2202, U+2207 ...)\p{ID_Compat_Math_Start}→\p{ID_Compat_Math_Start=Y}(13)\p{ID_Compat_Math_Start: N*}→ (Single:\P{IDCompatMathStart}) (1_114_099 plus all above-Unicode code points: U+0000..2201, U+2203..2206, U+2208..221D, U+221F..1D6C0, U+1D6C2..1D6DA, U+1D6DC..1D6FA ...)\p{ID_Compat_Math_Start: Y*}→ (Single:\p{IDCompatMathStart}) (13: U+2202, U+2207, U+221E, U+1D6C1, U+1D6DB, U+1D6FB ...)\p{ID_Continue}→\p{ID_Continue=Y}(Short:\p{IDC}) — and NOT\p{Ideographic_Description_Characters}, they are NOT the same thing bestie, I know the names are close but chill 🫠 (144_541)\p{ID_Continue: N*}→ (Short:\p{IDC=N},\P{IDC}) (969_571 plus all above-Unicode code points:[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/:;<=>?\@\[\\\]\^{|}~\x7f-\xa9\xab-\xb4\xb6\xb8-\xb9\xbb-\xbf\xd7\xf7]`, U+02C2..02C5, U+02D2..02DF, U+02E5..02EB, U+02ED, U+02EF..02FF ...)\p{ID_Continue: Y*}→ (Short:\p{IDC=Y},\p{IDC}) (144_541:[0-9A-Z_a-z\xaa\xb5\xb7\xba\xc0-\xd6\xd8-\xf6\xf8-\xff], U+0100..02C1, U+02C6..02D1, U+02E0..02E4, U+02EC, U+02EE ...)\p{ID_Start}→\p{ID_Start=Y}(Short:\p{IDS}) (141_269)\p{ID_Start: N*}→ (Short:\p{IDS=N},\P{IDS}) (972_843 plus all above-Unicode code points:[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@\[\\\]\^_{|}~\x7f-\xa9\xab-\xb4\xb6-\xb9\xbb-\xbf\xd7\xf7]`, U+02C2..02C5, U+02D2..02DF, U+02E5..02EB, U+02ED, U+02EF..036F ...)\p{ID_Start: Y*}→ (Short:\p{IDS=Y},\p{IDS}) (141_269:[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff], U+0100..02C1, U+02C6..02D1, U+02E0..02E4, U+02EC, U+02EE ...)\p{IDC}→\p{ID_Continue}(=\p{ID_Continue=Y}) — and again NOT\p{Ideographic_Description_Characters}okay?? 😭 (144_541)\p{IDC: *}→\p{ID_Continue: *}\p{Identifier_Status: Allowed}→ (112_778:[\'\-.0-9:A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\xff], U+0100..0131, U+0134..013E, U+0141..0148, U+014A..017E, U+018F ...)\p{Identifier_Status: Restricted}→ (1_001_334 plus all above-Unicode code points:[\x00-\x20!\"#\$\%&\(\)*+,\/;<=>?\@\[\\\]\^{|}~\x7f-\xb6\xb8-\xbf\xd7\xf7]`, U+0132..0133, U+013F..0140, U+0149, U+017F..018E, U+0190..019F ...)\p{Identifier_Type: Default_Ignorable}→ (398:[\xad], U+034F, U+061C, U+115F..1160, U+17B4..17B5, U+180B..180F ...)\p{Identifier_Type: Deprecated}→ (15: U+0149, U+0673, U+0F77, U+0F79, U+17A3..17A4, U+206A..206F ...)\p{Identifier_Type: Exclusion}→ (21_647: U+03E2..03EF, U+0800..082D, U+0830..083E, U+1680..169C, U+16A0..16F8, U+1700..1715 ...)\p{Identifier_Type: Inclusion}→ (17:[\'\-.:\xb7], U+0375, U+058A, U+05F3..05F4, U+06FD..06FE, U+0F0B ...)\p{Identifier_Type: Limited_Use}→ (5271: U+0700..070D, U+070F..074A, U+074D..074F, U+07C0..07FA, U+07FD..07FF, U+0840..085B ...)\p{Identifier_Type: Not_Character}→ (959_108 plus all above-Unicode code points:[^\t\n\cK\f\r\x20-\x7e\x85\xa0-\xff], U+0378..0379, U+0380..0383, U+038B, U+038D, U+03A2 ...)\p{Identifier_Type: Not_NFKC}→ (4957:[\xa0\xa8\xaa\xaf\xb2-\xb5\xb8-\xba\xbc-\xbe], U+0132..0133, U+013F..0140, U+017F, U+01C4..01CC, U+01F1..01F3 ...)\p{Identifier_Type: Not_XID}→ (9008:[\t\n\cK\f\r\x20!\"#\$\%&\(\)*+,\/;<=>?\@\[\\\]\^{|}~\x85\xa1-\xa7\xa9\xab-\xac\xae\xb0-\xb1\xb6\xbb\xbf\xd7\xf7]`, U+02C2..02C5, U+02D2..02D7, U+02DE..02DF, U+02E5..02EB, U+02ED ...)\p{Identifier_Type: Obsolete}→ (1626: U+018D, U+01AA..01AB, U+01B9..01BB, U+01BE..01BF, U+01F6..01F7, U+021C..021D ...)\p{Identifier_Type: Recommended}→ (112_761:[0-9A-Z_a-z\xc0-\xd6\xd8-\xf6\xf8-\xff], U+0100..0131, U+0134..013E, U+0141..0148, U+014A..017E, U+018F ...)\p{Identifier_Type: Technical}→ (1661: U+0180, U+018D, U+01AA..01AB, U+01BA..01BB, U+01BE, U+01C0..01C3 ...)\p{Identifier_Type: Uncommon_Use}→ (432: U+0181..018C, U+018E, U+0190..019F, U+01A2..01A9, U+01AC..01AE, U+01B1..01B8 ...)\p{Ideo}→\p{Ideographic}(=\p{Ideographic=Y}) (106_477)\p{Ideo: *}→\p{Ideographic: *}\p{Ideographic}→\p{Ideographic=Y}(Short:\p{Ideo}) (106_477)\p{Ideographic: N*}→ (Short:\p{Ideo=N},\P{Ideo}) (1_007_635 plus all above-Unicode code points: U+0000..3005, U+3008..3020, U+302A..3037, U+303B..33FF, U+4DC0..4DFF, U+A000..F8FF ...)\p{Ideographic: Y*}→ (Short:\p{Ideo=Y},\p{Ideo}) (106_477: U+3006..3007, U+3021..3029, U+3038..303A, U+3400..4DBF, U+4E00..9FFF, U+F900..FA6D ...)X\p{Ideographic_Description_Characters}→\p{Block=Ideographic_Description_Characters}(Short:\p{InIDC}) (16)X\p{Ideographic_Symbols}→\p{Ideographic_Symbols_And_Punctuation}(=\p{Block=Ideographic_Symbols_And_Punctuation}) (32)X\p{Ideographic_Symbols_And_Punctuation}→\p{Block=Ideographic_Symbols_And_Punctuation}(Short:\p{InIdeographicSymbols}) (32)\p{IDS}→\p{ID_Start}(=\p{ID_Start=Y}) (141_269)\p{IDS: *}→\p{ID_Start: *}\p{IDS_Binary_Operator}→\p{IDS_Binary_Operator=Y}(Short:\p{IDSB}) (13)\p{IDS_Binary_Operator: N*}→ (Short:\p{IDSB=N},\P{IDSB}) (1_114_099 plus all above-Unicode code points: U+0000..2FEF, U+2FF2..2FF3, U+2FFE..31EE, U+31F0..infinity)\p{IDS_Binary_Operator: Y*}→ (Short:\p{IDSB=Y},\p{IDSB}) (13: U+2FF0..2FF1, U+2FF4..2FFD, U+31EF)\p{IDS_Trinary_Operator}→\p{IDS_Trinary_Operator=Y}(Short:\p{IDST}) (2)\p{IDS_Trinary_Operator: N*}→ (Short:\p{IDST=N},\P{IDST}) (1_114_110 plus all above-Unicode code points: U+0000..2FF1, U+2FF4..infinity)\p{IDS_Trinary_Operator: Y*}→ (Short:\p{IDST=Y},\p{IDST}) (2: U+2FF2..2FF3)
okay bestie we're still deep in the property list, hydrate 💧, stretch, and let's keep going because there is so much left
\p{IDS_Unary_Operator}— same thing as\p{IDS_Unary_Operator=Y}(Short:\p{IDSU}). 2 code points. tiny but iconic ✨\p{IDS_Unary_Operator: N*}— Short:\p{IDSU=N},\P{IDSU}. this one is HUGE: 1_114_110 plus all above-Unicode code points, aka U+0000..2FFD and U+3000..infinity. it's giving "everything except the two special ones" 💀\p{IDS_Unary_Operator: Y*}— Short:\p{IDSU=Y},\p{IDSU}. 2: U+2FFE..2FFF.\p{IDSB}— same as\p{IDS_Binary_Operator}(=\p{IDS_Binary_Operator=Y}). 13 code points.\p{IDSB: *}— same as\p{IDS_Binary_Operator: *}.\p{IDST}— same as\p{IDS_Trinary_Operator}(=\p{IDS_Trinary_Operator=Y}). 2 code points.\p{IDST: *}— same as\p{IDS_Trinary_Operator: *}.\p{IDSU}— same as\p{IDS_Unary_Operator}(=\p{IDS_Unary_Operator=Y}). 2 code points.\p{IDSU: *}— same as\p{IDS_Unary_Operator: *}.\p{Imperial_Aramaic}— same as\p{Script_Extensions=Imperial_Aramaic}(Short:\p{Armi}; NOT\p{Block=Imperial_Aramaic}). 31 code points. bestie that NOT is load-bearing, read it twice 🙈\p{In: *}— same as\p{Present_In: *}(Perl extension).- X
\p{In_*}— same as\p{Block: *}. \p{InCB: *}— same as\p{Indic_Conjunct_Break: *}.\p{Indic_Conjunct_Break: Consonant}— Short:\p{InCB=Consonant}. 240: U+0915..0939, U+0958..095F, U+0978..097F, U+0995..09A8, U+09AA..09B0, U+09B2 ...\p{Indic_Conjunct_Break: Extend}— Short:\p{InCB=Extend}. 2192: U+0300..036F, U+0483..0489, U+0591..05BD, U+05BF, U+05C1..05C2, U+05C4..05C5 ...\p{Indic_Conjunct_Break: Linker}— Short:\p{InCB=Linker}. 6: U+094D, U+09CD, U+0ACD, U+0B4D, U+0C4D, U+0D4D.\p{Indic_Conjunct_Break: None}— Short:\p{InCB=None}. 1_111_674 plus all above-Unicode code points: U+0000..02FF, U+0370..0482, U+048A..0590, U+05BE, U+05C0, U+05C3 ...- X
\p{Indic_Number_Forms}— same as\p{Common_Indic_Number_Forms}(=\p{Block=Common_Indic_Number_Forms}). 16 code points.
okay now we're in the Indic_Positional_Category era of the list and there are a lot of them, so buckle up 💅
\p{Indic_Positional_Category: Bottom}— Short:\p{InPC=Bottom}. 368: U+093C, U+0941..0944, U+094D, U+0952, U+0956..0957, U+0962..0963 ...\p{Indic_Positional_Category: Bottom_And_Left}— Short:\p{InPC=BottomAndLeft}. 1: U+A9BF.\p{Indic_Positional_Category: Bottom_And_Right}— Short:\p{InPC=BottomAndRight}. 4: U+1B3B, U+A9BE, U+A9C0, U+11942.\p{Indic_Positional_Category: Left}— Short:\p{InPC=Left}. 70: U+093F, U+094E, U+09BF, U+09C7..09C8, U+0A3F, U+0ABF ...\p{Indic_Positional_Category: Left_And_Right}— Short:\p{InPC=LeftAndRight}. 24: U+09CB..09CC, U+0B4B, U+0BCA..0BCC, U+0D4A..0D4C, U+0DDC, U+0DDE ...\p{Indic_Positional_Category: NA}— Short:\p{InPC=NA}. 1_112_820 plus all above-Unicode code points: U+0000..08FF, U+0904..0939, U+093D, U+0950, U+0953..0954, U+0958..0961 ...\p{Indic_Positional_Category: Overstruck}— Short:\p{InPC=Overstruck}. 10: U+1CD4, U+1CE2..1CE8, U+10A01, U+10A06.\p{Indic_Positional_Category: Right}— Short:\p{InPC=Right}. 313: U+0903, U+093B, U+093E, U+0940, U+0949..094C, U+094F ...\p{Indic_Positional_Category: Top}— Short:\p{InPC=Top}. 445: U+0900..0902, U+093A, U+0945..0948, U+0951, U+0955, U+0981 ...\p{Indic_Positional_Category: Top_And_Bottom}— Short:\p{InPC=TopAndBottom}. 10: U+0C48, U+0F73, U+0F76..0F79, U+0F81, U+1B3C, U+1112E..1112F.\p{Indic_Positional_Category: Top_And_Bottom_And_Left}— Short:\p{InPC=TopAndBottomAndLeft}. 2: U+103C, U+1171E.\p{Indic_Positional_Category: Top_And_Bottom_And_Right}— Short:\p{InPC=TopAndBottomAndRight}. 1: U+1B3D.\p{Indic_Positional_Category: Top_And_Left}— Short:\p{InPC=TopAndLeft}. 6: U+0B48, U+0DDA, U+17BE, U+1C29, U+114BB, U+115B9.\p{Indic_Positional_Category: Top_And_Left_And_Right}— Short:\p{InPC=TopAndLeftAndRight}. 4: U+0B4C, U+0DDD, U+17BF, U+115BB.\p{Indic_Positional_Category: Top_And_Right}— Short:\p{InPC=TopAndRight}. 15: U+0AC9, U+0B57, U+0CC0, U+0CC7..0CC8, U+0CCA..0CCB, U+1925..1926 ...\p{Indic_Positional_Category: Visual_Order_Left}— Short:\p{InPC=VisualOrderLeft}. 19: U+0E40..0E44, U+0EC0..0EC4, U+19B5..19B7, U+19BA, U+AAB5..AAB6, U+AAB9 ...- X
\p{Indic_Siyaq_Numbers}— same as\p{Block=Indic_Siyaq_Numbers}. 80 code points.
and now, Indic_Syllabic_Category — the longest sub-squad in this whole stretch, no cap 🫶
\p{Indic_Syllabic_Category: Avagraha}— Short:\p{InSC=Avagraha}. 18: U+093D, U+09BD, U+0ABD, U+0B3D, U+0C3D, U+0CBD ...\p{Indic_Syllabic_Category: Bindu}— Short:\p{InSC=Bindu}. 99: U+0900..0902, U+0981..0982, U+09FC, U+0A01..0A02, U+0A70, U+0A81..0A82 ...\p{Indic_Syllabic_Category: Brahmi_Joining_Number}— Short:\p{InSC=BrahmiJoiningNumber}. 20: U+11052..11065.\p{Indic_Syllabic_Category: Cantillation_Mark}— Short:\p{InSC=CantillationMark}. 60: U+0951..0952, U+0A51, U+0AFA, U+0AFC, U+1CD0..1CD2, U+1CD4..1CE1 ...\p{Indic_Syllabic_Category: Consonant}— Short:\p{InSC=Consonant}. 2338: U+0915..0939, U+0958..095F, U+0978..097F, U+0995..09A8, U+09AA..09B0, U+09B2 ...\p{Indic_Syllabic_Category: Consonant_Dead}— Short:\p{InSC=ConsonantDead}. 14: U+09CE, U+0C5D, U+0CDD, U+0D54..0D56, U+0D7A..0D7F, U+1CF2..1CF3.\p{Indic_Syllabic_Category: Consonant_Final}— Short:\p{InSC=ConsonantFinal}. 70: U+1930..1931, U+1933..1939, U+19C1..19C7, U+1A58..1A59, U+1B03, U+1B81 ...\p{Indic_Syllabic_Category: Consonant_Head_Letter}— Short:\p{InSC=ConsonantHeadLetter}. 5: U+0F88..0F8C.\p{Indic_Syllabic_Category: Consonant_Initial_Postfixed}— Short:\p{InSC=ConsonantInitialPostfixed}. 1: U+1A5A.\p{Indic_Syllabic_Category: Consonant_Killer}— Short:\p{InSC=ConsonantKiller}. 2: U+0E4C, U+17CD.\p{Indic_Syllabic_Category: Consonant_Medial}— Short:\p{InSC=ConsonantMedial}. 35: U+0A75, U+0EBC..0EBD, U+103B..103E, U+105E..1060, U+1082, U+1A55..1A56 ...\p{Indic_Syllabic_Category: Consonant_Placeholder}— Short:\p{InSC=ConsonantPlaceholder}. 22:[\-\xa0\xd7], U+0980, U+0A72..0A73, U+104B, U+104E, U+1900 ...\p{Indic_Syllabic_Category: Consonant_Preceding_Repha}— Short:\p{InSC=ConsonantPrecedingRepha}. 5: U+0D4E, U+113D1, U+11941, U+11D46, U+11F02.\p{Indic_Syllabic_Category: Consonant_Prefixed}— Short:\p{InSC=ConsonantPrefixed}. 10: U+111C2..111C3, U+1193F, U+11A3A, U+11A84..11A89.\p{Indic_Syllabic_Category: Consonant_Subjoined}— Short:\p{InSC=ConsonantSubjoined}. 94: U+0F8D..0F97, U+0F99..0FBC, U+1929..192B, U+1A57, U+1A5B..1A5E, U+1BA1..1BA3 ...\p{Indic_Syllabic_Category: Consonant_Succeeding_Repha}— Short:\p{InSC=ConsonantSucceedingRepha}. 1: U+17CC.\p{Indic_Syllabic_Category: Consonant_With_Stacker}— Short:\p{InSC=ConsonantWithStacker}. 8: U+0CF1..0CF2, U+1CF5..1CF6, U+11003..11004, U+11460..11461.\p{Indic_Syllabic_Category: Gemination_Mark}— Short:\p{InSC=GeminationMark}. 5: U+0A71, U+0AFB, U+11237, U+113D2, U+11A98.\p{Indic_Syllabic_Category: Invisible_Stacker}— Short:\p{InSC=InvisibleStacker}. 14: U+1039, U+17D2, U+1A60, U+1BAB, U+AAF6, U+10A3F ...\p{Indic_Syllabic_Category: Joiner}— Short:\p{InSC=Joiner}. 1: U+200D.\p{Indic_Syllabic_Category: Modifying_Letter}— Short:\p{InSC=ModifyingLetter}. 1: U+0B83.\p{Indic_Syllabic_Category: Non_Joiner}— Short:\p{InSC=NonJoiner}. 1: U+200C.\p{Indic_Syllabic_Category: Nukta}— Short:\p{InSC=Nukta}. 33: U+093C, U+09BC, U+0A3C, U+0ABC, U+0AFD..0AFF, U+0B3C ...\p{Indic_Syllabic_Category: Number}— Short:\p{InSC=Number}. 541:[0-9], U+0966..096F, U+09E6..09EF, U+0A66..0A6F, U+0AE6..0AEF, U+0B66..0B6F ...\p{Indic_Syllabic_Category: Number_Joiner}— Short:\p{InSC=NumberJoiner}. 1: U+1107F.\p{Indic_Syllabic_Category: Other}— Short:\p{InSC=Other}. 1_109_264 plus all above-Unicode code points:
[\x00-\x20!\"#\$\%&\'\(\)*+,.
\/:;<=>?\@A-Z\[\\\]\^_`a-z\{\|\}~\x7f-
and yes, that last one literally runs off the edge of the page — it keeps going past U+007F, so hold that thought, bestie, we pick it up in the next chunk 💅
(...picking up mid-list from the entry before, here's the rest of that code point run: \x9f\xa1-\xb1\xb4-\xd6\xd8-\xff], U+0100..08FF, U+0950, U+0953..0954, U+0964..0965, U+0970..0971 ...) — okay bestie, we're so back 💅)
\p{Indic_Syllabic_Category: Pure_Killer}(short:\p{InSC=PureKiller}) — 29 of them:U+0D3B..0D3C,U+0E3A,U+0E4E,U+0EBA,U+0F84,U+103A...\p{Indic_Syllabic_Category: Register_Shifter}(short:\p{InSC=RegisterShifter}) — just 2:U+17C9..17CA\p{Indic_Syllabic_Category: Reordering_Killer}(short:\p{InSC=ReorderingKiller}) — also 2:U+1BF2..1BF3\p{Indic_Syllabic_Category: Syllable_Modifier}(short:\p{InSC=SyllableModifier}) — 26:[\xb2-\xb3],U+09FE,U+0ECE,U+0F35,U+0F37,U+0FC6...\p{Indic_Syllabic_Category: Tone_Letter}(short:\p{InSC=ToneLetter}) — 7:U+1970..1974,U+AAC0,U+AAC2\p{Indic_Syllabic_Category: Tone_Mark}(short:\p{InSC=ToneMark}) — 42:U+0E48..0E4B,U+0EC8..0ECB,U+1037,U+1063..1064,U+1069..106D,U+1087..108D...\p{Indic_Syllabic_Category: Virama}(short:\p{InSC=Virama}) — 27:U+094D,U+09CD,U+0A4D,U+0ACD,U+0B4D,U+0BCD...\p{Indic_Syllabic_Category: Visarga}(short:\p{InSC=Visarga}) — 38:U+0903,U+0983,U+0A03,U+0A83,U+0B03,U+0C03...\p{Indic_Syllabic_Category: Vowel}(short:\p{InSC=Vowel}) — 30:U+1963..196D,U+A85E..A861,U+A866,U+A922..A92A,U+11150..11154\p{Indic_Syllabic_Category: Vowel_Dependent}(short:\p{InSC=VowelDependent}) — 731, she's thriving:U+093A..093B,U+093E..094C,U+094E..094F,U+0955..0957,U+0962..0963,U+09BE..09C4...\p{Indic_Syllabic_Category: Vowel_Independent}(short:\p{InSC=VowelIndependent}) — 515:U+0904..0914,U+0960..0961,U+0972..0977,U+0985..098C,U+098F..0990,U+0993..0994...\p{Inherited}— same thing as\p{Script_Extensions=Inherited}(short:\p{Zinh}), 558 code points\p{Initial_Punctuation}— aka\p{General_Category=Initial_Punctuation}(short:\p{Pi}), 12 of them\p{InPC: *}— that's the short way of saying\p{Indic_Positional_Category: *}\p{InSC: *}— and this one is\p{Indic_Syllabic_Category: *}\p{Inscriptional_Pahlavi}— same as\p{Script_Extensions=Inscriptional_Pahlavi}(short:\p{Phli}; NOT\p{Block=Inscriptional_Pahlavi}), 27 code points. Read that NOT, bestie, it matters 🙈\p{Inscriptional_Parthian}— same as\p{Script_Extensions=Inscriptional_Parthian}(short:\p{Prti}; NOT\p{Block=Inscriptional_Parthian}), 30\p{IPA_Ext}(flaggedX) — same as\p{IPA_Extensions}(which equals\p{Block=IPA_Extensions}), 96\p{IPA_Extensions}(flaggedX) — same as\p{Block=IPA_Extensions}(short:\p{InIPAExt}), 96\p{Is_*}— same as\p{*}, with any exceptions individually noted starting with the word NOT. And heads up: if an entry has flag(s) at its beginning, like "D", the "Is_" form has the same flag(s) 🫶\p{Ital}— that's\p{Old_Italic}(which equals\p{Script_Extensions=Old_Italic}) and NOT\p{Block=Old_Italic}, 39\p{Jamo}(flaggedX) — same as\p{Hangul_Jamo}(=\p{Block=Hangul_Jamo}), 256\p{Jamo_Ext_A}(flaggedX) — same as\p{Hangul_Jamo_Extended_A}(=\p{Block=Hangul_Jamo_Extended_A}), 32\p{Jamo_Ext_B}(flaggedX) — same as\p{Hangul_Jamo_Extended_B}(=\p{Block=Hangul_Jamo_Extended_B}), 80\p{Java}—\p{Javanese}(=\p{Script_Extensions=Javanese}), NOT\p{Block=Javanese}, 91\p{Javanese}—\p{Script_Extensions=Javanese}(short:\p{Java}; NOT\p{Block=Javanese}), 91\p{Jg: *}— shorthand for\p{Joining_Group: *}\p{Join_C}—\p{Join_Control}(=\p{Join_Control=Y}), 2\p{Join_C: *}—\p{Join_Control: *}\p{Join_Control}—\p{Join_Control=Y}(short:\p{JoinC}), 2\p{Join_Control: N*}(short:\p{JoinC=N},\P{JoinC}) — 1_114_110 plus all above-Unicode code points:U+0000..200B,U+200E..infinity😭 that infinity is doing so much\p{Join_Control: Y*}(short:\p{JoinC=Y},\p{JoinC}) — 2:U+200C..200D\p{Joining_Group: African_Feh}(short:\p{Jg=AfricanFeh}) — 1:U+08BB\p{Joining_Group: African_Noon}(short:\p{Jg=AfricanNoon}) — 1:U+08BD\p{Joining_Group: African_Qaf}(short:\p{Jg=AfricanQaf}) — 2:U+08BC,U+08C4\p{Joining_Group: Ain}(short:\p{Jg=Ain}) — 9:U+0639..063A,U+06A0,U+06FC,U+075D..075F,U+08B3,U+08C3\p{Joining_Group: Alaph}(short:\p{Jg=Alaph}) — 1:U+0710\p{Joining_Group: Alef}(short:\p{Jg=Alef}) — 29:U+0622..0623,U+0625,U+0627,U+0671..0673,U+0675,U+0773..0774...\p{Joining_Group: Beh}(short:\p{Jg=Beh}) — 27:U+0628,U+062A..062B,U+066E,U+0679..0680,U+0750..0756,U+08A0..08A1...\p{Joining_Group: Beth}(short:\p{Jg=Beth}) — 2:U+0712,U+072D\p{Joining_Group: Burushaski_Yeh_Barree}(short:\p{Jg=BurushaskiYehBarree}) — 2:U+077A..077B\p{Joining_Group: Dal}(short:\p{Jg=Dal}) — 16:U+062F..0630,U+0688..0690,U+06EE,U+0759..075A,U+08AE,U+10EC2\p{Joining_Group: Dalath_Rish}(short:\p{Jg=DalathRish}) — 4:U+0715..0716,U+072A,U+072F\p{Joining_Group: E}(short:\p{Jg=E}) — 1:U+0725\p{Joining_Group: Farsi_Yeh}(short:\p{Jg=FarsiYeh}) — 7:U+063D..063F,U+06CC,U+06CE,U+0775..0776\p{Joining_Group: Fe}(short:\p{Jg=Fe}) — 1:U+074F\p{Joining_Group: Feh}(short:\p{Jg=Feh}) — 10:U+0641,U+06A1..06A6,U+0760..0761,U+08A4\p{Joining_Group: Final_Semkath}(short:\p{Jg=FinalSemkath}) — 1:U+0724\p{Joining_Group: Gaf}(short:\p{Jg=Gaf}) — 17:U+063B..063C,U+06A9,U+06AB,U+06AF..06B4,U+0762..0764,U+088D...\p{Joining_Group: Gamal}(short:\p{Jg=Gamal}) — 3:U+0713..0714,U+072E\p{Joining_Group: Hah}(short:\p{Jg=Hah}) — 22:U+062C..062E,U+0681..0687,U+06BF,U+0757..0758,U+076E..076F,U+0772...\p{Joining_Group: Hamza_On_Heh_Goal}— that's\p{Joining_Group=Teh_Marbuta_Goal}, 1\p{Joining_Group: Hanifi_Rohingya_Kinna_Ya}(short:\p{Jg=HanifiRohingyaKinnaYa}) — 4:U+10D19,U+10D1E,U+10D20,U+10D23\p{Joining_Group: Hanifi_Rohingya_Pa}(short:\p{Jg=HanifiRohingyaPa}) — 3:U+10D02,U+10D09,U+10D1C\p{Joining_Group: He}(short:\p{Jg=He}) — 1:U+0717\p{Joining_Group: Heh}(short:\p{Jg=Heh}) — 1:U+0647\p{Joining_Group: Heh_Goal}(short:\p{Jg=HehGoal}) — 2:U+06C1..06C2\p{Joining_Group: Heth}(short:\p{Jg=Heth}) — 1:U+071A\p{Joining_Group: Kaf}(short:\p{Jg=Kaf}) — 7:U+0643,U+06AC..06AE,U+077F,U+08B4,U+10EC4\p{Joining_Group: Kaph}(short:\p{Jg=Kaph}) — 1:U+071F\p{Joining_Group: Kashmiri_Yeh}(short:\p{Jg=KashmiriYeh}) — 1:U+0620\p{Joining_Group: Khaph}(short:\p{Jg=Khaph}) — 1:U+074E\p{Joining_Group: Knotted_Heh}(short:\p{Jg=KnottedHeh}) — 2:U+06BE,U+06FF\p{Joining_Group: Lam}(short:\p{Jg=Lam}) — 8:U+0644,U+06B5..06B8,U+076A,U+08A6,U+08C7\p{Joining_Group: Lamadh}(short:\p{Jg=Lamadh}) — 1:U+0720\p{Joining_Group: Malayalam_Bha}(short:\p{Jg=MalayalamBha}) — 1:U+0866\p{Joining_Group: Malayalam_Ja}(short:\p{Jg=MalayalamJa}) — 1:U+0861\p{Joining_Group: Malayalam_Lla}(short:\p{Jg=MalayalamLla}) — 1:U+0868\p{Joining_Group: Malayalam_Llla}(short:\p{Jg=MalayalamLlla}) — 1:U+0869\p{Joining_Group: Malayalam_Nga}(short:\p{Jg=MalayalamNga}) — 1:U+0860\p{Joining_Group: Malayalam_Nna}(short:\p{Jg=MalayalamNna}) — 1:U+0864\p{Joining_Group: Malayalam_Nnna}(short:\p{Jg=MalayalamNnna}) — 1:U+0865\p{Joining_Group: Malayalam_Nya}(short:\p{Jg=MalayalamNya}) — 1:U+0862\p{Joining_Group: Malayalam_Ra}(short:\p{Jg=MalayalamRa}) — 1:U+0867\p{Joining_Group: Malayalam_Ssa}(short:\p{Jg=MalayalamSsa}) — 1:U+086A\p{Joining_Group: Malayalam_Tta}(short:\p{Jg=MalayalamTta}) — 1:U+0863\p{Joining_Group: Manichaean_Aleph}(short:\p{Jg=ManichaeanAleph}) — 1:U+10AC0\p{Joining_Group: Manichaean_Ayin}(short:\p{Jg=ManichaeanAyin}) — 2:U+10AD9..10ADA\p{Joining_Group: Manichaean_Beth}(short:\p{Jg=ManichaeanBeth}) — 2:U+10AC1..10AC2\p{Joining_Group: Manichaean_Daleth}(short:\p{Jg=ManichaeanDaleth}) — 1:U+10AC5\p{Joining_Group: Manichaean_Dhamedh}(short:\p{Jg=ManichaeanDhamedh}) — 1:U+10AD4\p{Joining_Group: Manichaean_Five}(short:\p{Jg=ManichaeanFive}) — 1:U+10AEC
okay and the alphabet keeps going, we are literally only at the M's of the Joining_Group list, pray for us 💀
\p{Joining_Group: Manichaean_Gimel}(short:\p{Jg=ManichaeanGimel}) — 2 code points:U+10AC3..10AC4\p{Joining_Group: Manichaean_Heth}(short:\p{Jg=ManichaeanHeth}) — 1 code point:U+10ACD\p{Joining_Group: Manichaean_Hundred}(short:\p{Jg=ManichaeanHundred}) — 1 code point:U+10AEF\p{Joining_Group: Manichaean_Kaph}(short:\p{Jg=ManichaeanKaph}) — 3 code points:U+10AD0..10AD2\p{Joining_Group: Manichaean_Lamedh}(short:\p{Jg=ManichaeanLamedh}) — 1 code point:U+10AD3\p{Joining_Group: Manichaean_Mem}(short:\p{Jg=ManichaeanMem}) — 1 code point:U+10AD6\p{Joining_Group: Manichaean_Nun}(short:\p{Jg=ManichaeanNun}) — 1 code point:U+10AD7\p{Joining_Group: Manichaean_One}(short:\p{Jg=ManichaeanOne}) — 1 code point:U+10AEB\p{Joining_Group: Manichaean_Pe}(short:\p{Jg=ManichaeanPe}) — 2 code points:U+10ADB..10ADC\p{Joining_Group: Manichaean_Qoph}(short:\p{Jg=ManichaeanQoph}) — 3 code points:U+10ADE..10AE0\p{Joining_Group: Manichaean_Resh}(short:\p{Jg=ManichaeanResh}) — 1 code point:U+10AE1\p{Joining_Group: Manichaean_Sadhe}(short:\p{Jg=ManichaeanSadhe}) — 1 code point:U+10ADD\p{Joining_Group: Manichaean_Samekh}(short:\p{Jg=ManichaeanSamekh}) — 1 code point:U+10AD8\p{Joining_Group: Manichaean_Taw}(short:\p{Jg=ManichaeanTaw}) — 1 code point:U+10AE4\p{Joining_Group: Manichaean_Ten}(short:\p{Jg=ManichaeanTen}) — 1 code point:U+10AED\p{Joining_Group: Manichaean_Teth}(short:\p{Jg=ManichaeanTeth}) — 1 code point:U+10ACE\p{Joining_Group: Manichaean_Thamedh}(short:\p{Jg=ManichaeanThamedh}) — 1 code point:U+10AD5\p{Joining_Group: Manichaean_Twenty}(short:\p{Jg=ManichaeanTwenty}) — 1 code point:U+10AEE\p{Joining_Group: Manichaean_Waw}(short:\p{Jg=ManichaeanWaw}) — 1 code point:U+10AC7\p{Joining_Group: Manichaean_Yodh}(short:\p{Jg=ManichaeanYodh}) — 1 code point:U+10ACF\p{Joining_Group: Manichaean_Zayin}(short:\p{Jg=ManichaeanZayin}) — 2 code points:U+10AC9..10ACA\p{Joining_Group: Meem}(short:\p{Jg=Meem}) — 4 code points:U+0645,U+0765..0766,U+08A7\p{Joining_Group: Mim}(short:\p{Jg=Mim}) — 1 code point:U+0721\p{Joining_Group: No_Joining_Group}(short:\p{Jg=NoJoiningGroup}) —1_113_759code points plus all above-Unicode code points:U+0000..061F,U+0621,U+0640,U+064B..066D,U+0670,U+0674...\p{Joining_Group: Noon}(short:\p{Jg=Noon}) — 9 code points:U+0646,U+06B9..06BC,U+0767..0769,U+0889\p{Joining_Group: Nun}(short:\p{Jg=Nun}) — 1 code point:U+0722\p{Joining_Group: Nya}(short:\p{Jg=Nya}) — 1 code point:U+06BD\p{Joining_Group: Pe}(short:\p{Jg=Pe}) — 1 code point:U+0726\p{Joining_Group: Qaf}(short:\p{Jg=Qaf}) — 6 code points:U+0642,U+066F,U+06A7..06A8,U+08A5,U+08B5\p{Joining_Group: Qaph}(short:\p{Jg=Qaph}) — 1 code point:U+0729\p{Joining_Group: Reh}(short:\p{Jg=Reh}) — 19 code points:U+0631..0632,U+0691..0699,U+06EF,U+075B,U+076B..076C,U+0771...\p{Joining_Group: Reversed_Pe}(short:\p{Jg=ReversedPe}) — 1 code point:U+0727\p{Joining_Group: Rohingya_Yeh}(short:\p{Jg=RohingyaYeh}) — 1 code point:U+08AC\p{Joining_Group: Sad}(short:\p{Jg=Sad}) — 6 code points:U+0635..0636,U+069D..069E,U+06FB,U+08AF\p{Joining_Group: Sadhe}(short:\p{Jg=Sadhe}) — 1 code point:U+0728\p{Joining_Group: Seen}(short:\p{Jg=Seen}) — 11 code points:U+0633..0634,U+069A..069C,U+06FA,U+075C,U+076D,U+0770...\p{Joining_Group: Semkath}(short:\p{Jg=Semkath}) — 1 code point:U+0723\p{Joining_Group: Shin}(short:\p{Jg=Shin}) — 1 code point:U+072B\p{Joining_Group: Straight_Waw}(short:\p{Jg=StraightWaw}) — 1 code point:U+08B1\p{Joining_Group: Swash_Kaf}(short:\p{Jg=SwashKaf}) — 1 code point:U+06AA\p{Joining_Group: Syriac_Waw}(short:\p{Jg=SyriacWaw}) — 1 code point:U+0718\p{Joining_Group: Tah}(short:\p{Jg=Tah}) — 7 code points:U+0637..0638,U+069F,U+088B..088C,U+08A3,U+10EC3\p{Joining_Group: Taw}(short:\p{Jg=Taw}) — 1 code point:U+072C\p{Joining_Group: Teh_Marbuta}(short:\p{Jg=TehMarbuta}) — 3 code points:U+0629,U+06C0,U+06D5\p{Joining_Group: Teh_Marbuta_Goal}(short:\p{Jg=TehMarbutaGoal}) — 1 code point:U+06C3\p{Joining_Group: Teth}(short:\p{Jg=Teth}) — 2 code points:U+071B..071C\p{Joining_Group: Thin_Yeh}(short:\p{Jg=ThinYeh}) — 1 code point:U+0886\p{Joining_Group: Vertical_Tail}(short:\p{Jg=VerticalTail}) — 1 code point:U+088E\p{Joining_Group: Waw}(short:\p{Jg=Waw}) — 16 code points:U+0624,U+0648,U+0676..0677,U+06C4..06CB,U+06CF,U+0778..0779...\p{Joining_Group: Yeh}(short:\p{Jg=Yeh}) — 10 code points:U+0626,U+0649..064A,U+0678,U+06D0..06D1,U+0777,U+08A8..08A9...\p{Joining_Group: Yeh_Barree}(short:\p{Jg=YehBarree}) — 2 code points:U+06D2..06D3\p{Joining_Group: Yeh_With_Tail}(short:\p{Jg=YehWithTail}) — 1 code point:U+06CD\p{Joining_Group: Yudh}(short:\p{Jg=Yudh}) — 1 code point:U+071D\p{Joining_Group: Yudh_He}(short:\p{Jg=YudhHe}) — 1 code point:U+071E\p{Joining_Group: Zain}(short:\p{Jg=Zain}) — 1 code point:U+0719\p{Joining_Group: Zhain}(short:\p{Jg=Zhain}) — 1 code point:U+074D
okay bestie, deep breath, that was the whole Manichaean-to-Zhain alphabet arc 😭 now we slide straight into Joining_Type, which is the same energy but shorter 🦋
\p{Joining_Type: C}— same thing as\p{Joining_Type=Join_Causing}(7)\p{Joining_Type: D}— same thing as\p{Joining_Type=Dual_Joining}(612)\p{Joining_Type: Dual_Joining}(short:\p{Jt=D}) — 612 code points:U+0620,U+0626,U+0628,U+062A..062E,U+0633..063F,U+0641..0647...\p{Joining_Type: Join_Causing}(short:\p{Jt=C}) — 7 code points:U+0640,U+07FA,U+0883..0885,U+180A,U+200D\p{Joining_Type: L}— same thing as\p{Joining_Type=Left_Joining}(5)\p{Joining_Type: Left_Joining}(short:\p{Jt=L}) — 5 code points:U+A872,U+10ACD,U+10AD7,U+10D00,U+10FCB\p{Joining_Type: Non_Joining}(short:\p{Jt=U}) —1_111_150code points plus all above-Unicode code points:[\x00-\xac\xae-\xff],U+0100..02FF,U+0370..0482,U+048A..0590,U+05BE,U+05C0...\p{Joining_Type: R}— same thing as\p{Joining_Type=Right_Joining}(153)\p{Joining_Type: Right_Joining}(short:\p{Jt=R}) — 153 code points:U+0622..0625,U+0627,U+0629,U+062F..0632,U+0648,U+0671..0673...\p{Joining_Type: T}— same thing as\p{Joining_Type=Transparent}(2185)\p{Joining_Type: Transparent}(short:\p{Jt=T}) — 2185 code points:[\xad],U+0300..036F,U+0483..0489,U+0591..05BD,U+05BF,U+05C1..05C2...\p{Joining_Type: U}— same thing as\p{Joining_Type=Non_Joining}(1_111_150plus all above-Unicode code points)\p{Jt: *}— that's\p{Joining_Type: *}
and now we're into the K-club 🎀 scripts, blocks and aliases, where the little X out front is doing its own thing, so watch for it 💅
\p{Kaithi}— that's\p{Script_Extensions=Kaithi}(short:\p{Kthi}; and bestie, NOT\p{Block=Kaithi}) — 89 code pointsX\p{Kaktovik_Numerals}— that's\p{Block=Kaktovik_Numerals}(32)\p{Kali}— that's\p{Kayah_Li}(which equals\p{Script_Extensions=Kayah_Li}) (48)\p{Kana}— that's\p{Katakana}(which equals\p{Script_Extensions=Katakana}) — and NOT\p{Block=Katakana}(375)X\p{Kana_Ext_A}— that's\p{Kana_Extended_A}(which equals\p{Block=Kana_Extended_A}) (48)X\p{Kana_Ext_B}— that's\p{Kana_Extended_B}(which equals\p{Block=Kana_Extended_B}) (16)X\p{Kana_Extended_A}— that's\p{Block=Kana_Extended_A}(short:\p{InKanaExtA}) (48)X\p{Kana_Extended_B}— that's\p{Block=Kana_Extended_B}(short:\p{InKanaExtB}) (16)X\p{Kana_Sup}— that's\p{Kana_Supplement}(which equals\p{Block=Kana_Supplement}) (256)X\p{Kana_Supplement}— that's\p{Block=Kana_Supplement}(short:\p{InKanaSup}) (256)X\p{Kanbun}— that's\p{Block=Kanbun}(16)X\p{Kangxi}— that's\p{Kangxi_Radicals}(which equals\p{Block=Kangxi_Radicals}) (224)X\p{Kangxi_Radicals}— that's\p{Block=Kangxi_Radicals}(short:\p{InKangxi}) (224)\p{Kannada}— that's\p{Script_Extensions=Kannada}(short:\p{Knda}; and NOT\p{Block=Kannada}) (107)\p{Katakana}— that's\p{Script_Extensions=Katakana}(short:\p{Kana}; and NOT\p{Block=Katakana}) (375)X\p{Katakana_Ext}— that's\p{Katakana_Phonetic_Extensions}(which equals\p{Block=Katakana_Phonetic_Extensions}) (16)X\p{Katakana_Phonetic_Extensions}— that's\p{Block=Katakana_Phonetic_Extensions}(short:\p{InKatakanaExt}) (16)\p{Kawi}— that's\p{Script_Extensions=Kawi}(and NOT\p{Block=Kawi}) (87)\p{Kayah_Li}— that's\p{Script_Extensions=Kayah_Li}(short:\p{Kali}) (48)\p{kEH_NoMirror}— that's\p{kEH_NoMirror=Y}(4)\p{kEH_NoMirror: N*}— (single:\P{kEHNoMirror}) —1_114_108plus all above-Unicode code points:U+0000..13080,U+13082..13083,U+13085..130BA,U+130BC,U+130BE..infinity\p{kEH_NoMirror: Y*}— (single:\p{kEHNoMirror}) — 4 code points:U+13081,U+13084,U+130BB,U+130BD\p{kEH_NoRotate}— that's\p{kEH_NoRotate=Y}(44)\p{kEH_NoRotate: N*}— (single:\P{kEHNoRotate}) —1_114_068plus all above-Unicode code points:U+0000..13020,U+13022..1303E,U+13040..130AC,U+130AE..130B6,U+130B8..13130,U+13132..131B0...\p{kEH_NoRotate: Y*}— (single:\p{kEHNoRotate}) — 44 code points:U+13021,U+1303F,U+130AD,U+130B7,U+13131,U+131B1...
okay bestie we are BACK and we're mid-table, mid-alphabet, mid-vibe — the K's are wrapping up and then the L's arrive with a whole entourage. 💖
quick refresher on how to read these rows, because it matters: the thing on the left is what you type, the = bit is what it's actually an alias for, Short: is the nickname, NOT is the thing it is absolutely not, and the number in parentheses is how many code points live inside. and if a row starts with a lone X? that's the original table's own marker and I am NOT touching it, it stays exactly where it was. 🫶
\p{Khar}→\p{Kharoshthi}(=\p{Script_Extensions=Kharoshthi}) (NOT\p{Block=Kharoshthi}) (68)\p{Kharoshthi}→\p{Script_Extensions=Kharoshthi}(Short:\p{Khar}; NOT\p{Block=Kharoshthi}) (68)\p{Khitan_Small_Script}→\p{Script_Extensions=Khitan_Small_Script}(Short:\p{Kits}; NOT\p{Block=Khitan_Small_Script}) (472)\p{Khmer}→\p{Script_Extensions=Khmer}(Short:\p{Khmr}; NOT\p{Block=Khmer}) (146)- X
\p{Khmer_Symbols}→\p{Block=Khmer_Symbols}(32) \p{Khmr}→\p{Khmer}(=\p{Script_Extensions=Khmer}) (NOT\p{Block=Khmer}) (146)\p{Khoj}→\p{Khojki}(=\p{Script_Extensions=Khojki}) (NOT\p{Block=Khojki}) (85)\p{Khojki}→\p{Script_Extensions=Khojki}(Short:\p{Khoj}; NOT\p{Block=Khojki}) (85)\p{Khudawadi}→\p{Script_Extensions=Khudawadi}(Short:\p{Sind}; NOT\p{Block=Khudawadi}) (81)\p{Kirat_Rai}→\p{Script_Extensions=Kirat_Rai}(Short:\p{Krai}; NOT\p{Block=Kirat_Rai}) (58)\p{Kits}→\p{Khitan_Small_Script}(=\p{Script_Extensions=Khitan_Small_Script}) (NOT\p{Block=Khitan_Small_Script}) (472)\p{Knda}→\p{Kannada}(=\p{Script_Extensions=Kannada}) (NOT\p{Block=Kannada}) (107)\p{Krai}→\p{Kirat_Rai}(=\p{Script_Extensions=Kirat_Rai}) (NOT\p{Block=Kirat_Rai}) (58)\p{Kthi}→\p{Kaithi}(=\p{Script_Extensions=Kaithi}) (NOT\p{Block=Kaithi}) (89)
see how the short names bounce back and forth with the long names? they're the same girl, two outfits. and every single one of them is screaming NOT the Block at you, so do not go mixing up your scripts and your blocks, bestie, that's how you end up with zero matches and a whole lot of confusion. 😭
\p{L}\pL→\p{Letter}(=\p{General_Category=Letter}) (141_028)- X
\p{L&}→\p{Cased_Letter}(=\p{General_Category=Cased_Letter}) (4147) - X
\p{L_}→\p{Cased_Letter}(=\p{General_Category=Cased_Letter}) Note the trailing '_' matters in spite of loose matching rules. (4147)
⚠️ okay the\p{L_}one is the drama of this whole page. that trailing underscore is load-bearing. loose matching rules are out here being all "eh, close enough" for everything else, but not here — that_matters, periodt. 👑
\p{Lana}→\p{Tai_Tham}(=\p{Script_Extensions=Tai_Tham}) (NOT\p{Block=Tai_Tham}) (127)\p{Lao}→\p{Script_Extensions=Lao}(NOT\p{Block=Lao}) (83)\p{Laoo}→\p{Lao}(=\p{Script_Extensions=Lao}) (NOT\p{Block=Lao}) (83)\p{Latin}→\p{Script_Extensions=Latin}(Short:\p{Latn}) (1555)
and now the Latin extended cinematic universe. buckle up. 🌈
- X
\p{Latin_1}→\p{Latin_1_Supplement}(=\p{Block=Latin_1_Supplement}) (128) - X
\p{Latin_1_Sup}→\p{Latin_1_Supplement}(=\p{Block=Latin_1_Supplement}) (128) - X
\p{Latin_1_Supplement}→\p{Block=Latin_1_Supplement}(Short:\p{InLatin1}) (128) - X
\p{Latin_Ext_A}→\p{Latin_Extended_A}(=\p{Block=Latin_Extended_A}) (128) - X
\p{Latin_Ext_Additional}→\p{Latin_Extended_Additional}(=\p{Block=Latin_Extended_Additional}) (256) - X
\p{Latin_Ext_B}→\p{Latin_Extended_B}(=\p{Block=Latin_Extended_B}) (208) - X
\p{Latin_Ext_C}→\p{Latin_Extended_C}(=\p{Block=Latin_Extended_C}) (32) - X
\p{Latin_Ext_D}→\p{Latin_Extended_D}(=\p{Block=Latin_Extended_D}) (224) - X
\p{Latin_Ext_E}→\p{Latin_Extended_E}(=\p{Block=Latin_Extended_E}) (64) - X
\p{Latin_Ext_F}→\p{Latin_Extended_F}(=\p{Block=Latin_Extended_F}) (64) - X
\p{Latin_Ext_G}→\p{Latin_Extended_G}(=\p{Block=Latin_Extended_G}) (256) - X
\p{Latin_Extended_A}→\p{Block=Latin_Extended_A}(Short:\p{InLatinExtA}) (128) - X
\p{Latin_Extended_Additional}→\p{Block=Latin_Extended_Additional}(Short:\p{InLatinExtAdditional}) (256) - X
\p{Latin_Extended_B}→\p{Block=Latin_Extended_B}(Short:\p{InLatinExtB}) (208) - X
\p{Latin_Extended_C}→\p{Block=Latin_Extended_C}(Short:\p{InLatinExtC}) (32) - X
\p{Latin_Extended_D}→\p{Block=Latin_Extended_D}(Short:\p{InLatinExtD}) (224) - X
\p{Latin_Extended_E}→\p{Block=Latin_Extended_E}(Short:\p{InLatinExtE}) (64) - X
\p{Latin_Extended_F}→\p{Block=Latin_Extended_F}(Short:\p{InLatinExtF}) (64) - X
\p{Latin_Extended_G}→\p{Block=Latin_Extended_G}(Short:\p{InLatinExtG}) (256)
notice the pattern? Latin_Ext_X is the short-hand spelling and Latin_Extended_X is the full spelling, and the \p{In...} forms are the block nicknames. three ways to say the same thing, all of them valid, all of them iconic. ✨
\p{Latn}→\p{Latin}(=\p{Script_Extensions=Latin}) (1555)\p{Lb: *}→\p{Line_Break: *}\p{LC}→\p{Cased_Letter}(=\p{General_Category=Cased_Letter}) (4147)\p{Lepc}→\p{Lepcha}(=\p{Script_Extensions=Lepcha}) (NOT\p{Block=Lepcha}) (74)\p{Lepcha}→\p{Script_Extensions=Lepcha}(Short:\p{Lepc}; NOT\p{Block=Lepcha}) (74)\p{Letter}→\p{General_Category=Letter}(Short:\p{L}) (141_028)\p{Letter_Number}→\p{General_Category=Letter_Number}(Short:\p{Nl}) (236)- X
\p{Letterlike_Symbols}→\p{Block=Letterlike_Symbols}(80) \p{Limb}→\p{Limbu}(=\p{Script_Extensions=Limbu}) (NOT\p{Block=Limbu}) (69)\p{Limbu}→\p{Script_Extensions=Limbu}(Short:\p{Limb}; NOT\p{Block=Limbu}) (69)\p{Lina}→\p{Linear_A}(=\p{Script_Extensions=Linear_A}) (NOT\p{Block=Linear_A}) (386)\p{Linb}→\p{Linear_B}(=\p{Script_Extensions=Linear_B}) (268)
okay and now. the moment. \p{Line_Break: ...} has entered the chat. 💀 this is the line-breaking family, and yes there are like a million of them, and yes the short forms use a colon while the long forms use an equals sign, and yes that's just how it is, we don't make the rules, we just slay within them. 🎀
\p{Line_Break: AI}→\p{Line_Break=Ambiguous}(718)\p{Line_Break: AK}→\p{Line_Break=Aksara}(329)\p{Line_Break: Aksara}→ (Short:\p{Lb=AK}) (329: U+1B05..1B33, U+1B45..1B4C, U+A984..A9B2, U+11005..11037, U+11071..11072, U+11075 ...)\p{Line_Break: Aksara_Prebase}→ (Short:\p{Lb=AP}) (6: U+11003..11004, U+113D1, U+1193F, U+11941, U+11F02)\p{Line_Break: Aksara_Start}→ (Short:\p{Lb=AS}) (214: U+1B50..1B59, U+1BC0..1BE5, U+A9D0..A9D9, U+AA00..AA28, U+AA50..AA59, U+11066..1106F ...)\p{Line_Break: AL}→\p{Line_Break=Alphabetic}(26_679)\p{Line_Break: Alphabetic}→ (Short:\p{Lb=AL}) (26_679: the whole squad is down below 👇)
[#&*<=>\@A-Z\^_`a-z~\xa6\xa9\xac\xae-\xaf\xb5\xc0-\xd6\xd8-\xf6\xf8-\xff], U+0100..02C6, U+02CE..02CF, U+02D1..02D7, U+02DC, U+02DE ...
\p{Line_Break: Ambiguous}→ (Short:\p{Lb=AI}) (718: [\xa7-\xa8\xaa\xb2-\xb3\xb6-\xba\xbc-\xbe\xd7\xf7], U+02C7, U+02C9..02CB, U+02CD, U+02D0, U+02D8..02DB ...)\p{Line_Break: AP}→\p{Line_Break=Aksara_Prebase}(6)\p{Line_Break: AS}→\p{Line_Break=Aksara_Start}(214)\p{Line_Break: B2}→\p{Line_Break=Break_Both}(3)\p{Line_Break: BA}→\p{Line_Break=Break_After}(272)\p{Line_Break: BB}→\p{Line_Break=Break_Before}(55)\p{Line_Break: BK}→\p{Line_Break=Mandatory_Break}(4)\p{Line_Break: Break_After}→ (Short:\p{Lb=BA}) (272: [\t|\xad], U+058A, U+05BE, U+0964..0965, U+0E5A..0E5B, U+0F0B ...)\p{Line_Break: Break_Before}→ (Short:\p{Lb=BB}) (55: [\xb4], U+02C8, U+02CC, U+02DF, U+0C77, U+0C84 ...)\p{Line_Break: Break_Both}→ (Short:\p{Lb=B2}) (3: U+2014, U+2E3A..2E3B)\p{Line_Break: Break_Symbols}→ (Short:\p{Lb=SY}) (1: [/])\p{Line_Break: Carriage_Return}→ (Short:\p{Lb=CR}) (1: [\r])\p{Line_Break: CB}→\p{Line_Break=Contingent_Break}(1)\p{Line_Break: CJ}→\p{Line_Break=Conditional_Japanese_Starter}(60)\p{Line_Break: CL}→\p{Line_Break=Close_Punctuation}(94)\p{Line_Break: Close_Parenthesis}→ (Short:\p{Lb=CP}) (6: [)]], U+2E56, U+2E58, U+2E5A, U+2E5C)\p{Line_Break: Close_Punctuation}→ (Short:\p{Lb=CL}) (94: [}], U+0F3B, U+0F3D, U+169C, U+2046, U+207E ...)\p{Line_Break: CM}→\p{Line_Break=Combining_Mark}(2470)\p{Line_Break: Combining_Mark}→ (Short:\p{Lb=CM}) (2470: [^\t\n\cK\f\r\x20-\x7e\x85\xa0-\xff], U+0300..034E, U+0350..035B, U+0363..036F, U+0483..0489, U+0591..05BD ...)\p{Line_Break: Complex_Context}→ (Short:\p{Lb=SA}) (757: U+0E01..0E3A, U+0E40..0E4E, U+0E81..0E82, U+0E84, U+0E86..0E8A, U+0E8C..0EA3 ...)\p{Line_Break: Conditional_Japanese_Starter}→ (Short:\p{Lb=CJ}) (60: U+3041, U+3043, U+3045, U+3047, U+3049, U+3063 ...)\p{Line_Break: Contingent_Break}→ (Short:\p{Lb=CB}) (1: U+FFFC)\p{Line_Break: CP}→\p{Line_Break=Close_Parenthesis}(6)\p{Line_Break: CR}→\p{Line_Break=Carriage_Return}(1)\p{Line_Break: E_Base}→ (Short:\p{Lb=EB}) (134: U+261D, U+26F9, U+270A..270D, U+1F385, U+1F3C2..1F3C4, U+1F3C7 ...)\p{Line_Break: E_Modifier}→ (Short:\p{Lb=EM}) (5: U+1F3FB..1F3FF)\p{Line_Break: EB}→\p{Line_Break=E_Base}(134)\p{Line_Break: EM}→\p{Line_Break=E_Modifier}(5)\p{Line_Break: EX}→\p{Line_Break=Exclamation}(40)
and that's where we're pausing, right on the E's, because there's more alphabet to get through and honestly the \p{Line_Break: ...} girlies have a LOT more to say. 🔥
okay bestie the Line_Break saga continues and honestly? it never ends 😭 every single one, coming right up 💅
\p{Line_Break: Exclamation}— (Short:\p{Lb=EX}) (40:[!?],U+05C6,U+061B,U+061D..061F,U+06D4,U+07F9...)\p{Line_Break: GL}—\p{Line_Break=Glue}(41)\p{Line_Break: Glue}— (Short:\p{Lb=GL}) (41:[\xa0],U+034F,U+035C..0362,U+0F08,U+0F0C,U+0F12...)\p{Line_Break: H2}— (Short:\p{Lb=H2}) (399:U+AC00,U+AC1C,U+AC38,U+AC54,U+AC70,U+AC8C...)\p{Line_Break: H3}— (Short:\p{Lb=H3}) (10_773:U+AC01..AC1B,U+AC1D..AC37,U+AC39..AC53,U+AC55..AC6F,U+AC71..AC8B,U+AC8D..ACA7...)\p{Line_Break: Hebrew_Letter}— (Short:\p{Lb=HL}) (75:U+05D0..05EA,U+05EF..05F2,U+FB1D,U+FB1F..FB28,U+FB2A..FB36,U+FB38..FB3C...)\p{Line_Break: HL}—\p{Line_Break=Hebrew_Letter}(75)\p{Line_Break: HY}—\p{Line_Break=Hyphen}(1)\p{Line_Break: Hyphen}— (Short:\p{Lb=HY}) (1:[\-])\p{Line_Break: ID}—\p{Line_Break=Ideographic}(172_421)\p{Line_Break: Ideographic}— (Short:\p{Lb=ID}) (172_421:U+1B5C,U+1B61..1B6A,U+1B74..1B7C,U+231A..231B,U+23F0..23F3,U+2600..2603...)\p{Line_Break: IN}—\p{Line_Break=Inseparable}(6)\p{Line_Break: Infix_Numeric}— (Short:\p{Lb=IS}) (10:[,.:;],U+037E,U+0589,U+060C..060D,U+07F8,U+2044)\p{Line_Break: Inseparable}— (Short:\p{Lb=IN}) (6:U+2024..2026,U+22EF,U+FE19,U+10AF6)\p{Line_Break: Inseperable}—\p{Line_Break=Inseparable}(6) — yes the typo is real, it's an alias, leave it alone bestie 🫶\p{Line_Break: IS}—\p{Line_Break=Infix_Numeric}(10)\p{Line_Break: JL}— (Short:\p{Lb=JL}) (125:U+1100..115F,U+A960..A97C)\p{Line_Break: JT}— (Short:\p{Lb=JT}) (137:U+11A8..11FF,U+D7CB..D7FB)\p{Line_Break: JV}— (Short:\p{Lb=JV}) (95:U+1160..11A7,U+D7B0..D7C6)\p{Line_Break: LF}—\p{Line_Break=Line_Feed}(1)\p{Line_Break: Line_Feed}— (Short:\p{Lb=LF}) (1:[\n])\p{Line_Break: Mandatory_Break}— (Short:\p{Lb=BK}) (4:[\cK\f],U+2028..2029)\p{Line_Break: Next_Line}— (Short:\p{Lb=NL}) (1:[\x85])\p{Line_Break: NL}—\p{Line_Break=Next_Line}(1)\p{Line_Break: Nonstarter}— (Short:\p{Lb=NS}) (35:U+17D6,U+203C..203D,U+2047..2049,U+3005,U+301C,U+303B..303C...)\p{Line_Break: NS}—\p{Line_Break=Nonstarter}(35)\p{Line_Break: NU}—\p{Line_Break=Numeric}(695)\p{Line_Break: Numeric}— (Short:\p{Lb=NU}) (695:[0-9],U+0600..0605,U+0660..0669,U+066B..066C,U+06DD,U+06F0..06F9...)\p{Line_Break: OP}—\p{Line_Break=Open_Punctuation}(95)\p{Line_Break: Open_Punctuation}— (Short:\p{Lb=OP}) (95:[\(\[\{ \xa1\xbf],U+0F3A,U+0F3C,U+169B,U+201A,U+201E...)\p{Line_Break: PO}—\p{Line_Break=Postfix_Numeric}(38)\p{Line_Break: Postfix_Numeric}— (Short:\p{Lb=PO}) (38:[\%\xa2 \xb0],U+0609..060B,U+066A,U+09F2..09F3,U+09F9,U+0D79...)\p{Line_Break: PR}—\p{Line_Break=Prefix_Numeric}(67)\p{Line_Break: Prefix_Numeric}— (Short:\p{Lb=PR}) (67:[\$+\\\xa3-\xa5\xb1],U+058F,U+07FE..07FF,U+09FB,U+0AF1,U+0BF9...)\p{Line_Break: QU}—\p{Line_Break=Quotation}(39)\p{Line_Break: Quotation}— (Short:\p{Lb=QU}) (39:[\"\'\xab\xbb],U+2018..2019,U+201B..201D,U+201F,U+2039..203A,U+275B..2760...)\p{Line_Break: Regional_Indicator}— (Short:\p{Lb=RI}) (26:U+1F1E6..1F1FF)\p{Line_Break: RI}—\p{Line_Break=Regional_Indicator}(26)\p{Line_Break: SA}—\p{Line_Break=Complex_Context}(757)- D
\p{Line_Break: SG}—\p{Line_Break=Surrogate}(2048) \p{Line_Break: SP}—\p{Line_Break=Space}(1)\p{Line_Break: Space}— (Short:\p{Lb=SP}) (1:[\x20])- D
\p{Line_Break: Surrogate}— Surrogates should never appear in well-formed text, and therefore shouldn't be the basis for line breaking (Short:\p{Lb=SG}) (2048:U+D800..DFFF)
⚠️ bestie listen. Surrogates should never appear in well-formed text, and therefore shouldn't be the basis for line breaking. that's not me being dramatic, that's the manpage. periodt 💅
\p{Line_Break: SY}—\p{Line_Break=Break_Symbols}(1)\p{Line_Break: Unknown}— (Short:\p{Lb=XX}) (895_121 plus all above-Unicode code points:U+0378..0379,U+0380..0383,U+038B,U+038D,U+03A2,U+0530...)\p{Line_Break: VF}—\p{Line_Break=Virama_Final}(2)\p{Line_Break: VI}—\p{Line_Break=Virama}(7)\p{Line_Break: Virama}— (Short:\p{Lb=VI}) (7:U+1B44,U+A9C0,U+11046,U+1134D,U+113D0,U+1193E...)\p{Line_Break: Virama_Final}— (Short:\p{Lb=VF}) (2:U+1BF2..1BF3)\p{Line_Break: WJ}—\p{Line_Break=Word_Joiner}(2)\p{Line_Break: Word_Joiner}— (Short:\p{Lb=WJ}) (2:U+2060,U+FEFF)\p{Line_Break: XX}—\p{Line_Break=Unknown}(895_121 plus all above-Unicode code points)\p{Line_Break: ZW}—\p{Line_Break=ZWSpace}(1)\p{Line_Break: ZWJ}— (Short:\p{Lb=ZWJ}) (1:U+200D)\p{Line_Break: ZWSpace}— (Short:\p{Lb=ZW}) (1:U+200B)
and then we're out of Line_Break and into the next era, bestie 🦋
\p{Line_Separator}—\p{General_Category=Line_Separator}(Short:\p{Zl}) (1)\p{Linear_A}—\p{Script_Extensions=Linear_A}(Short:\p{Lina}; NOT\p{Block=Linear_A}) (386)\p{Linear_B}—\p{Script_Extensions=Linear_B}(Short:\p{Linb}) (268)- X
\p{Linear_B_Ideograms}—\p{Block=Linear_B_Ideograms}(128) - X
\p{Linear_B_Syllabary}—\p{Block=Linear_B_Syllabary}(128) \p{Lisu}—\p{Script_Extensions=Lisu}(NOT\p{Block=Lisu}) (53)- X
\p{Lisu_Sup}—\p{Lisu_Supplement}(=\p{Block=Lisu_Supplement}) (16) - X
\p{Lisu_Supplement}—\p{Block=Lisu_Supplement}(Short:\p{InLisuSup}) (16) \p{Ll}—\p{Lowercase_Letter}(=\p{General_Category=Lowercase_Letter}) (/i=General_Category=Cased_Letter) (2258)\p{Lm}—\p{Modifier_Letter}(=\p{General_Category=Modifier_Letter}) (404)\p{Lo}—\p{Other_Letter}(=\p{General_Category=Other_Letter}) (136_477)\p{LOE}—\p{Logical_Order_Exception}(=\p{Logical_Order_Exception=Y}) (19)\p{LOE: *}—\p{Logical_Order_Exception: *}\p{Logical_Order_Exception}—\p{Logical_Order_Exception=Y}(Short:\p{LOE}) (19)\p{Logical_Order_Exception: N*}— (Short:\p{LOE=N},\P{LOE}) (1_114_093 plus all above-Unicode code points:U+0000..0E3F,U+0E45..0EBF,U+0EC5..19B4,U+19B8..19B9,U+19BB..AAB4,U+AAB7..AAB8...)\p{Logical_Order_Exception: Y*}— (Short:\p{LOE=Y},\p{LOE}) (19:U+0E40..0E44,U+0EC0..0EC4,U+19B5..19B7,U+19BA,U+AAB5..AAB6,U+AAB9...)- X
\p{Low_Surrogates}—\p{Block=Low_Surrogates}(1024) \p{Lower}—\p{XPosixLower}(=\p{Lowercase=Y}) (/i=Cased=Yes) (2569)\p{Lower: *}—\p{Lowercase: *}\p{Lowercase}—\p{XPosixLower}(=\p{Lowercase=Y}) (/i=Cased=Yes) (2569)\p{Lowercase: N*}— (Short:\p{Lower=N},\P{Lower}; /i=Cased=No) (1_111_543 plus all above-Unicode code points:[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@A-Z\[\\\]\^_{|}~\x7f-\xa9\xab-\xb4\xb6-\xb9\xbb-\xde\xf7],U+0100,U+0102,U+0104,U+0106,U+0108` ...)\p{Lowercase: Y*}— (Short:\p{Lower=Y},\p{Lower}; /i=Cased=Yes) (2569:[a-z\xaa\xb5\xba\xdf-\xf6\xf8-\xff],U+0101,U+0103,U+0105,U+0107,U+0109...)\p{Lowercase_Letter}—\p{General_Category=Lowercase_Letter}(Short:\p{Ll}; /i=General_Category=Cased_Letter) (2258)\p{Lt}—\p{Titlecase_Letter}(=\p{General_Category=Titlecase_Letter}) (/i=General_Category=Cased_Letter) (31)\p{Lu}—\p{Uppercase_Letter}(=\p{General_Category=Uppercase_Letter}) (/i=General_Category=Cased_Letter) (1858)\p{Lyci}—\p{Lycian}(=\p{Script_Extensions=Lycian}) (NOT\p{Block=Lycian}) (30)\p{Lycian}—\p{Script_Extensions=Lycian}(Short:\p{Lyci}; NOT\p{Block=Lycian}) (30)\p{Lydi}—\p{Lydian}(=\p{Script_Extensions=Lydian}) (NOT\p{Block=Lydian}) (29)\p{Lydian}—\p{Script_Extensions=Lydian}(Short:\p{Lydi}; NOT\p{Block=Lydian}) (29)\p{M},\pM—\p{Mark}(=\p{General_Category=Mark}) (2501)\p{Mahajani}—\p{Script_Extensions=Mahajani}(Short:\p{Mahj}; NOT\p{Block=Mahajani}) (62)\p{Mahj}—\p{Mahajani}(=\p{Script_Extensions=Mahajani}) (NOT\p{Block=Mahajani}) (62)- X
\p{Mahjong}—\p{Mahjong_Tiles}(=\p{Block=Mahjong_Tiles}) (48) - X
\p{Mahjong_Tiles}—\p{Block=Mahjong_Tiles}(Short:\p{InMahjong}) (48) \p{Maka}—\p{Makasar}(=\p{Script_Extensions=Makasar}) (NOT\p{Block=Makasar}) (25)
ngl the way these keep going alphabetically is giving ✨commitment✨ and we are so not done yet 💀 stay with me bestie, the M's are just getting started 🎀
\p{Makasar}→\p{Script_Extensions=Makasar}(Short:\p{Maka}; NOT\p{Block=Makasar}) (25) — script tea only, the block is a whole different girl 🦋\p{Malayalam}→\p{Script_Extensions=Malayalam}(Short:\p{Mlym}; NOT\p{Block=Malayalam}) (127) — 127 and not one of them is a block name, okurr ✨\p{Mand}→\p{Mandaic}(=\p{Script_Extensions=Mandaic}) (NOT\p{Block=Mandaic}) (30) — the nickname version, still not a block 💅\p{Mandaic}→\p{Script_Extensions=Mandaic}(Short:\p{Mand}; NOT\p{Block=Mandaic}) (30) — same 30 bestie, just spelled out 🎀\p{Mani}→\p{Manichaean}(=\p{Script_Extensions=Manichaean}) (NOT\p{Block=Manichaean}) (52) — cute lil four-letter situation 🌸\p{Manichaean}→\p{Script_Extensions=Manichaean}(Short:\p{Mani}; NOT\p{Block=Manichaean}) (52) — 52, and again, block says no 💀\p{Marc}→\p{Marchen}(=\p{Script_Extensions=Marchen}) (NOT\p{Block=Marchen}) (68) — Marc and Marchen are literally the same girl, one's just wearing a shorter skirt 💜\p{Marchen}→\p{Script_Extensions=Marchen}(Short:\p{Marc}; NOT\p{Block=Marchen}) (68) — 68, iconic 🦋\p{Mark}→\p{General_Category=Mark}(Short:\p{M}) (2501) — the big one, the general category, 2501 strong and the shorthand is just\p{M}like a main character with one letter 👑\p{Masaram_Gondi}→\p{Script_Extensions=Masaram_Gondi}(Short:\p{Gonm}; NOT\p{Block=Masaram_Gondi}) (77) — yes the short name goes backwards alphabetically, that's just how she is 🙈\p{Math}→\p{Math=Y}(2312) — 2312 math-y babes, no block talk here, she's a binary property fr fr 🔥\p{Math: N*}— this one's a single form, so its shorthand is\P{Math}💅 — 1_111_800 plus all above-Unicode code points, and the ranges go:
[\x00-\x20!\"#\$\%&\'\(\)*,\-.\/0-9:;?\@A-Z\[\\\]_`a-z\{\}\x7f-\xab\xad-\xb0\xb2-\xd6\xd8-\xf6\xf8-\xff], U+0100..03CF, U+03D3..03D4, U+03D6..03EF, U+03F2..03F3, U+03F7..0605 ...
\p{Math: Y*}— also a single form, shorthand\p{Math}✨ — (2312: [+<=>\^|~\xac\xb1\xd7\xf7], U+03D0..03D2, U+03D5, U+03F0..03F1, U+03F4..03F6, U+0606..0608 ...)- X
\p{Math_Alphanum}→\p{Mathematical_Alphanumeric_Symbols}(=\p{Block=Mathematical_Alphanumeric_Symbols}) (1024) — (that little X flag up front? same one the whole table uses, carried over exactly, no notes 💅) - X
\p{Math_Operators}→\p{Mathematical_Operators}(=\p{Block=Mathematical_Operators}) (256) — 256, no short form, she's just vibing 🦋 \p{Math_Symbol}→\p{General_Category=Math_Symbol}(Short:\p{Sm}) (950) — 950 symbols, and the two-letter flex is\p{Sm}🎀- X
\p{Mathematical_Alphanumeric_Symbols}→\p{Block=Mathematical_Alphanumeric_Symbols}(Short:\p{InMathAlphanum}) (1024) — full block name, short form\p{InMathAlphanum}, 1024 💜 - X
\p{Mathematical_Operators}→\p{Block=Mathematical_Operators}(Short:\p{InMathOperators}) (256) — 256, and yes theInprefix is the block short-name vibe 💅 - X
\p{Mayan_Numerals}→\p{Block=Mayan_Numerals}(32) — 32 numerals, no short name at all, she's mysterious like that 🌸 \p{Mc}→\p{Spacing_Mark}(=\p{General_Category=Spacing_Mark}) (468) — 468 spacing marks, and\p{Mc}is the glow-up shortie ✨\p{MCM}→\p{Modifier_Combining_Mark}(=\p{Modifier_Combining_Mark=Y}) (14) — only 14 of these, rare queens 👑\p{MCM: *}→\p{Modifier_Combining_Mark: *}— the wildcard version,*doing its thing, no count listed 🎀\p{Me}→\p{Enclosing_Mark}(=\p{General_Category=Enclosing_Mark}) (13) — thirteen. that's it. that's the whole squad 💀\p{Medefaidrin}→\p{Script_Extensions=Medefaidrin}(Short:\p{Medf}; NOT\p{Block=Medefaidrin}) (91) — 91, and the block is not invited to this party 🙈\p{Medf}→\p{Medefaidrin}(=\p{Script_Extensions=Medefaidrin}) (NOT\p{Block=Medefaidrin}) (91) — same 91, just the four-letter edit 💅\p{Meetei_Mayek}→\p{Script_Extensions=Meetei_Mayek}(Short:\p{Mtei}; NOT\p{Block=Meetei_Mayek}) (79) — 79, and once again the block is a separate entity 🦋- X
\p{Meetei_Mayek_Ext}→\p{Meetei_Mayek_Extensions}(=\p{Block=Meetei_Mayek_Extensions}) (32) — the abbreviated name pointing at the full block, 32 💜 - X
\p{Meetei_Mayek_Extensions}→\p{Block=Meetei_Mayek_Extensions}(Short:\p{InMeeteiMayekExt}) (32) — full name, short form\p{InMeeteiMayekExt}, still 32 ✨ \p{Mend}→\p{Mende_Kikakui}(=\p{Script_Extensions=Mende_Kikakui}) (NOT\p{Block=Mende_Kikakui}) (213) — 213 of them, and nope, not the block 🎀\p{Mende_Kikakui}→\p{Script_Extensions=Mende_Kikakui}(Short:\p{Mend}; NOT\p{Block=Mende_Kikakui}) (213) — same 213, spelled all the way out 🌸\p{Merc}→\p{Meroitic_Cursive}(=\p{Script_Extensions=Meroitic_Cursive}) (NOT\p{Block=Meroitic_Cursive}) (90) — 90 cursive baddies 💅\p{Mero}→\p{Meroitic_Hieroglyphs}(=\p{Script_Extensions=Meroitic_Hieroglyphs}) (NOT\p{Block=Meroitic_Hieroglyphs}) (33) — 33 hieroglyphs, and do not confuse her with\p{Merc}, they are different girls 🙈\p{Meroitic_Cursive}→\p{Script_Extensions=Meroitic_Cursive}(Short:\p{Merc}; NOT\p{Block=Meroitic_Cursive}) (90) — 90, block still not it 🦋\p{Meroitic_Hieroglyphs}→\p{Script_Extensions=Meroitic_Hieroglyphs}(Short:\p{Mero}; NOT\p{Block=Meroitic_Hieroglyphs}) (33) — 33, same energy 💜\p{Miao}→\p{Script_Extensions=Miao}(NOT\p{Block=Miao}) (149) — 149, no short name given, she's self-titled ✨- X
\p{Misc_Arrows}→\p{Miscellaneous_Symbols_And_Arrows}(=\p{Block=Miscellaneous_Symbols_And_Arrows}) (256) — arrows!! 256 of them, "Misc" is doing so much heavy lifting here 💀 - X
\p{Misc_Math_Symbols_A}→\p{Miscellaneous_Mathematical_Symbols_A}(=\p{Block=Miscellaneous_Mathematical_Symbols_A}) (48) — 48, and yes that's a whole lotta name for 48 things 🎀 - X
\p{Misc_Math_Symbols_B}→\p{Miscellaneous_Mathematical_Symbols_B}(=\p{Block=Miscellaneous_Mathematical_Symbols_B}) (128) — the B one, 128 this time, sisters fr fr 🌸 - X
\p{Misc_Pictographs}→\p{Miscellaneous_Symbols_And_Pictographs}(=\p{Block=Miscellaneous_Symbols_And_Pictographs}) (768) — 768 pictographs, this is where the emoji-adjacent girlies live 🔥 - X
\p{Misc_Symbols}→\p{Miscellaneous_Symbols}(=\p{Block=Miscellaneous_Symbols}) (256) — 256 symbols of the miscellaneous variety 💅 - X
\p{Misc_Technical}→\p{Miscellaneous_Technical}(=\p{Block=Miscellaneous_Technical}) (256) — 256 technical bits, very "I know a guy" energy 🦋 - X
\p{Miscellaneous_Mathematical_Symbols_A}→\p{Block=Miscellaneous_Mathematical_Symbols_A}(Short:\p{InMiscMathSymbolsA}) (48) — full name this time, short form\p{InMiscMathSymbolsA}, 48 💜 - X
\p{Miscellaneous_Mathematical_Symbols_B}→\p{Block=Miscellaneous_Mathematical_Symbols_B}(Short:\p{InMiscMathSymbolsB}) (128) —\p{InMiscMathSymbolsB}, 128 ✨ - X
\p{Miscellaneous_Symbols}→\p{Block=Miscellaneous_Symbols}(Short:\p{InMiscSymbols}) (256) —\p{InMiscSymbols}, 256 🎀 - X
\p{Miscellaneous_Symbols_And_Arrows}→\p{Block=Miscellaneous_Symbols_And_Arrows}(Short:\p{InMiscArrows}) (256) —\p{InMiscArrows}, 256, same 256 as her abbreviation twin 🌸 - X
\p{Miscellaneous_Symbols_And_Pictographs}→\p{Block=Miscellaneous_Symbols_And_Pictographs}(Short:\p{InMiscPictographs}) (768) —\p{InMiscPictographs}, 768 🦋 - X
\p{Miscellaneous_Technical}→\p{Block=Miscellaneous_Technical}(Short:\p{InMiscTechnical}) (256) —\p{InMiscTechnical}, 256, closing out the Misc-ellaneous run 💅 \p{Mlym}→\p{Malayalam}(=\p{Script_Extensions=Malayalam}) (NOT\p{Block=Malayalam}) (127) — 127, and yes she's the shortie for\p{Malayalam}from way back up there 💜\p{Mn}→\p{Nonspacing_Mark}(=\p{General_Category=Nonspacing_Mark}) (2020) — 2020, two-letter shortie\p{Mn}, she's a general category queen 👑\p{Modi}→\p{Script_Extensions=Modi}(NOT\p{Block=Modi}) (89) — 89, and once again not the block 🎀\p{Modifier_Combining_Mark}→\p{Modifier_Combining_Mark=Y}(Short:\p{MCM}) (14) — the long-form twin of\p{MCM, 14 total ✨\p{Modifier_Combining_Mark: N*}— (Short:\p{MCM=N},\P{MCM}) — (1_114_098 plus all above-Unicode code points: U+0000..0653, U+0656..0657, U+0659..06DB, U+06DD..06E2, U+06E4..06E6, U+06E9..08C9 ...) — note it's\P{MCM}with a capital P bestie, that's the not version 💀\p{Modifier_Combining_Mark: Y*}— (Short:\p{MCM=Y},\p{MCM}) — (14: U+0654..0655, U+0658, U+06DC, U+06E3, U+06E7..06E8, U+08CA..08CB ...) — only 14, lowercase\p{MCM}this time 🎀\p{Modifier_Letter}→\p{General_Category=Modifier_Letter}(Short:\p{Lm}) (404) — 404 letters, short form\p{Lm}🦋- X
\p{Modifier_Letters}→\p{Spacing_Modifier_Letters}(=\p{Block=Spacing_Modifier_Letters}) (80) — plural, different girl, block energy, 80 💅 \p{Modifier_Symbol}→\p{General_Category=Modifier_Symbol}(Short:\p{Sk}) (125) — 125 symbols, shortie\p{Sk}💜- X
\p{Modifier_Tone_Letters}→\p{Block=Modifier_Tone_Letters}(32) — 32 tone letters, no short name, she's just out here 🎀 \p{Mong}→\p{Mongolian}(=\p{Script_Extensions=Mongolian}) (NOT\p{Block=Mongolian}) (178) — 178, block not included 🙈\p{Mongolian}→\p{Script_Extensions=Mongolian}(Short:\p{Mong}; NOT\p{Block=Mongolian}) (178) — same 178, full name edition ✨- X
\p{Mongolian_Sup}→\p{Mongolian_Supplement}(=\p{Block=Mongolian_Supplement}) (32) — "Sup" is short for Supplement here, 32 🌸 - X
\p{Mongolian_Supplement}→\p{Block=Mongolian_Supplement}(Short:\p{InMongolianSup}) (32) —\p{InMongolianSup}, 32 🦋 \p{Mro}→\p{Script_Extensions=Mro}(NOT\p{Block=Mro}) (43) — 43, and yes the short name is also\p{Mro}-adjacent, keep reading 💅\p{Mroo}→\p{Mro}(=\p{Script_Extensions=Mro}) (NOT\p{Block=Mro}) (43) — two o's, same 43, she points at\p{Mro}which points at the script extensions 🎀\p{Mtei}→\p{Meetei_Mayek}(=\p{Script_Extensions=Meetei_Mayek}) (NOT\p{Block=Meetei_Mayek}) (79) — 79, the shortie from earlier making a second appearance 💜\p{Mult}→\p{Multani}(=\p{Script_Extensions=Multani}) (NOT\p{Block=Multani}) (48) — 48, block says no 🌸\p{Multani}→\p{Script_Extensions=Multani}(Short:\p{Mult}; NOT\p{Block=Multani}) (48) — 48 again, full spelling 🦋- X
\p{Music}→\p{Musical_Symbols}(=\p{Block=Musical_Symbols}) (256) — 256 musical symbols, and\p{Music}is the vibey nickname 🎵 - X
\p{Musical_Symbols}→\p{Block=Musical_Symbols}(Short:\p{InMusic}) (256) —\p{InMusic}, 256, same as her nickname twin 💅 \p{Myanmar}→\p{Script_Extensions=Myanmar}(Short:\p{Mymr}; NOT\p{Block=Myanmar}) (244) — 244, block not it 🎀- X
\p{Myanmar_Ext_A}→\p{Myanmar_Extended_A}(=\p{Block=Myanmar_Extended_A}) (32) — "Ext" = Extended, 32 ✨ - X
\p{Myanmar_Ext_B}→\p{Myanmar_Extended_B}(=\p{Block=Myanmar_Extended_B}) (32) — the B one, 32, sisters fr fr 🌸
okay bestie we are still DEEP in the property alphabet 💅 and we have officially hit the M's. this stretch is long, so hydrate, stretch your fingers, and let's go 🫶
- X
\p{Myanmar_Ext_C},\p{Myanmar_Extended_C}(=\p{Block=Myanmar_Extended_C}) (48) - X
\p{Myanmar_Extended_A},\p{Block=Myanmar_Extended_A}(short:\p{InMyanmarExtA}) (32) - X
\p{Myanmar_Extended_B},\p{Block=Myanmar_Extended_B}(short:\p{InMyanmarExtB}) (32) - X
\p{Myanmar_Extended_C},\p{Block=Myanmar_Extended_C}(short:\p{InMyanmarExtC}) (48) \p{Mymr},\p{Myanmar}(=\p{Script_Extensions=Myanmar}) (NOT\p{Block=Myanmar}) (244)\p{N},\pN,\p{Number}(=\p{General_Category=Number}) (1911) — yes the single letter works, iconic\p{Na=*},\p{Name=*}— the wildcard glow-up\p{Nabataean},\p{Script_Extensions=Nabataean}(short:\p{Nbat}; NOT\p{Block=Nabataean}) (40)\p{Nag_Mundari},\p{Script_Extensions=Nag_Mundari}(short:\p{Nagm}; NOT\p{Block=Nag_Mundari}) (42)\p{Nagm},\p{Nag_Mundari}(=\p{Script_Extensions=Nag_Mundari}) (NOT\p{Block=Nag_Mundari}) (42)\p{Name=*}— she's the combination of the Name and Name_Alias properties, and she has special loose matching rules, for which see Unicode UAX #44 📖\p{Nand},\p{Nandinagari}(=\p{Script_Extensions=Nandinagari}) (NOT\p{Block=Nandinagari}) (86)\p{Nandinagari},\p{Script_Extensions=Nandinagari}(short:\p{Nand}; NOT\p{Block=Nandinagari}) (86)\p{Narb},\p{Old_North_Arabian}(=\p{Script_Extensions=Old_North_Arabian}) (32)- X
\p{NB},\p{No_Block}(=\p{Block=No_Block}) (815_056 plus all above-Unicode code points) — bestie that's a LOT of code points 😭 \p{Nbat},\p{Nabataean}(=\p{Script_Extensions=Nabataean}) (NOT\p{Block=Nabataean}) (40)\p{NChar},\p{Noncharacter_Code_Point}(=\p{Noncharacter_Code_Point=Y}) (66)\p{NChar: *},\p{Noncharacter_Code_Point: *}— star wildcard, she contains multitudes ✨\p{Nd},\p{XPosixDigit}(=\p{General_Category=Decimal_Number}) (760)\p{New_Tai_Lue},\p{Script_Extensions=New_Tai_Lue}(short:\p{Talu}; NOT\p{Block=New_Tai_Lue}) (83)\p{Newa},\p{Script_Extensions=Newa}(NOT\p{Block=Newa}) (97)\p{NFC_QC: *},\p{NFC_Quick_Check: *}— yes,QCis the cute nickname forQuick_Check💅\p{NFC_Quick_Check: M},\p{NFC_Quick_Check=Maybe}(132)\p{NFC_Quick_Check: Maybe}(short:\p{NFCQC=M}) (132:U+0300..0304,U+0306..030C,U+030F,U+0311,U+0313..0314,U+031B...)\p{NFC_Quick_Check: N},\p{NFC_Quick_Check=No}(NOT\P{NFC_Quick_Check}NOR\P{NFC_QC}) (1120) — read that negation twice, it matters fr fr\p{NFC_Quick_Check: No}(short:\p{NFCQC=N}; NOT\P{NFC_Quick_Check}NOR\P{NFC_QC}) (1120:U+0340..0341,U+0343..0344,U+0374,U+037E,U+0387,U+0958..095F...)\p{NFC_Quick_Check: Y},\p{NFC_Quick_Check=Yes}(NOT\p{NFC_Quick_Check}NOR\p{NFC_QC}) (1_112_860 plus all above-Unicode code points)\p{NFC_Quick_Check: Yes}(short:\p{NFCQC=Y}; NOT\p{NFC_Quick_Check}NOR\p{NFC_QC}) (1_112_860 plus all above-Unicode code points:U+0000..02FF,U+0305,U+030D..030E,U+0310,U+0312,U+0315..031A...)\p{NFD_QC: *},\p{NFD_Quick_Check: *}\p{NFD_Quick_Check: N},\p{NFD_Quick_Check=No}(NOT\P{NFD_Quick_Check}NOR\P{NFD_QC}) (13_253)\p{NFD_Quick_Check: No}(short:\p{NFDQC=N}; NOT\P{NFD_Quick_Check}NOR\P{NFD_QC}) (13_253:[\xc0-\xc5\xc7-\xcf\xd1-\xd6\xd9-\xdd\xe0-\xe5\xe7-\xef\xf1-\xf6\xf9-\xfd\xff],U+0100..010F,U+0112..0125,U+0128..0130,U+0134..0137,U+0139..013E...)\p{NFD_Quick_Check: Y},\p{NFD_Quick_Check=Yes}(NOT\p{NFD_Quick_Check}NOR\p{NFD_QC}) (1_100_859 plus all above-Unicode code points)\p{NFD_Quick_Check: Yes}(short:\p{NFDQC=Y}; NOT\p{NFD_Quick_Check}NOR\p{NFD_QC}) (1_100_859 plus all above-Unicode code points:[\x00-\xbf\xc6\xd0\xd7-\xd8\xde-\xdf\xe6\xf0\xf7-\xf8\xfe],U+0110..0111,U+0126..0127,U+0131..0133,U+0138,U+013F..0142...)\p{NFKC_QC: *},\p{NFKC_Quick_Check: *}\p{NFKC_Quick_Check: M},\p{NFKC_Quick_Check=Maybe}(132)\p{NFKC_Quick_Check: Maybe}(short:\p{NFKCQC=M}) (132:U+0300..0304,U+0306..030C,U+030F,U+0311,U+0313..0314,U+031B...)\p{NFKC_Quick_Check: N},\p{NFKC_Quick_Check=No}(NOT\P{NFKC_Quick_Check}NOR\P{NFKC_QC}) (4964)\p{NFKC_Quick_Check: No}(short:\p{NFKCQC=N}; NOT\P{NFKC_Quick_Check}NOR\P{NFKC_QC}) (4964:[\xa0\xa8\xaa\xaf\xb2-\xb5\xb8-\xba\xbc-\xbe],U+0132..0133,U+013F..0140,U+0149,U+017F,U+01C4..01CC...)\p{NFKC_Quick_Check: Y},\p{NFKC_Quick_Check=Yes}(NOT\p{NFKC_Quick_Check}NOR\p{NFKC_QC}) (1_109_016 plus all above-Unicode code points)\p{NFKC_Quick_Check: Yes}(short:\p{NFKCQC=Y}; NOT\p{NFKC_Quick_Check}NOR\p{NFKC_QC}) (1_109_016 plus all above-Unicode code points:[\x00-\x9f\xa1-\xa7\xa9\xab-\xae\xb0-\xb1\xb6-\xb7\xbb\xbf-\xff],U+0100..0131,U+0134..013E,U+0141..0148,U+014A..017E,U+0180..01C3...)\p{NFKD_QC: *},\p{NFKD_Quick_Check: *}\p{NFKD_Quick_Check: N},\p{NFKD_Quick_Check=No}(NOT\P{NFKD_Quick_Check}NOR\P{NFKD_QC}) (17_085)\p{NFKD_Quick_Check: No}(short:\p{NFKDQC=N}; NOT\P{NFKD_Quick_Check}NOR\P{NFKD_QC}) (17_085:[\xa0\xa8\xaa\xaf\xb2-\xb5\xb8-\xba\xbc-\xbe\xc0-\xc5\xc7-\xcf\xd1-\xd6\xd9-\xdd\xe0-\xe5\xe7-\xef\xf1-\xf6\xf9-\xfd\xff],U+0100..010F,U+0112..0125,U+0128..0130,U+0132..0137,U+0139..0140...)\p{NFKD_Quick_Check: Y},\p{NFKD_Quick_Check=Yes}(NOT\p{NFKD_Quick_Check}NOR\p{NFKD_QC}) (1_097_027 plus all above-Unicode code points)\p{NFKD_Quick_Check: Yes}(short:\p{NFKDQC=Y}; NOT\p{NFKD_Quick_Check}NOR\p{NFKD_QC}) (1_097_027 plus all above-Unicode code points:[\x00-\x9f\xa1-\xa7\xa9\xab-\xae\xb0-\xb1\xb6-\xb7\xbb\xbf\xc6\xd0\xd7-\xd8\xde-\xdf\xe6\xf0\xf7-\xf8\xfe],U+0110..0111,U+0126..0127,U+0131,U+0138,U+0141..0142...)\p{Nko},\p{Script_Extensions=Nko}(NOT\p{Block=NKo}) (67)\p{Nkoo},\p{Nko}(=\p{Script_Extensions=Nko}) (NOT\p{Block=NKo}) (67)\p{Nl},\p{Letter_Number}(=\p{General_Category=Letter_Number}) (236)\p{No},\p{Other_Number}(=\p{General_Category=Other_Number}) (915)- X
\p{No_Block},\p{Block=No_Block}(short:\p{InNB}) (815_056 plus all above-Unicode code points) \p{Noncharacter_Code_Point},\p{Noncharacter_Code_Point=Y}(short:\p{NChar}) (66)\p{Noncharacter_Code_Point: N*}(short:\p{NChar=N},\P{NChar}) (1_114_046 plus all above-Unicode code points:U+0000..FDCF,U+FDF0..FFFD,U+10000..1FFFD,U+20000..2FFFD,U+30000..3FFFD,U+40000..4FFFD...)\p{Noncharacter_Code_Point: Y*}(short:\p{NChar=Y},\p{NChar}) (66:U+FDD0..FDEF,U+FFFE..FFFF,U+1FFFE..1FFFF,U+2FFFE..2FFFF,U+3FFFE..3FFFF,U+4FFFE..4FFFF...)\p{Nonspacing_Mark},\p{General_Category=Nonspacing_Mark}(short:\p{Mn}) (2020)\p{Nshu},\p{Nushu}(=\p{Script_Extensions=Nushu}) (NOT\p{Block=Nushu}) (397)\p{Nt: *},\p{Numeric_Type: *}—Ntis the lil nickname forNumeric_Type🎀\p{Number},\p{General_Category=Number}(short:\p{N}) (1911)- X
\p{Number_Forms},\p{Block=Number_Forms}(64) \p{Numeric_Type: De},\p{Numeric_Type=Decimal}(760)\p{Numeric_Type: Decimal}(short:\p{Nt=De}) (760:[0-9],U+0660..0669,U+06F0..06F9,U+07C0..07C9,U+0966..096F,U+09E6..09EF...)\p{Numeric_Type: Di},\p{Numeric_Type=Digit}(128)\p{Numeric_Type: Digit}(short:\p{Nt=Di}) (128:[\xb2-\xb3\xb9],U+1369..1371,U+19DA,U+2070,U+2074..2079,U+2080..2089...)\p{Numeric_Type: None}(short:\p{Nt=None}) (1_112_110 plus all
okay so we are STILL in the middle of this thing and the table is just going. and going. 💀 no heading, no reset, we're just sliding right back in.
First up: the tail end of that entry that got cut off — it's still listing what lands in that bucket, and it's spelling out the above-Unicode ones too:
above-Unicode code points: [\x00-\x20!
\"#\$\%&\'\(\)*+,\-.\/:;<=>?\@A-Z\[\\\]
\^_`a-z\{\|\}~\x7f-\xb1\xb4-\xb8\xba-
\xbb\xbf-\xff], U+0100..065F,
U+066A..06EF, U+06FA..07BF,
U+07CA..0965, U+0970..09E5 ...)
and then the last member of the Numeric_Type squad shows up — and note this one's a continuation line too, so the front half of it lives on the line above:
\p{Numeric_Type: Nu} \p{Numeric_Type=Numeric} (1114)
Numeric_Type = done ✅ and now we pivot to Numeric_Value, and bestie... it is a LOT. Every single line starts with a T, every line hands you the long form and then the short form in (Short: ...), then a count in parens, then a lil peek at some of the code points. Same shape, over and over, and honestly? we love a consistent format 💅
And it opens with fractions, because of course it does. Yes, these are real Unicode characters whose whole personality is 1/320. It's giving "one person on the committee was a completionist" 🎀
T \p{Numeric_Value: -1/2} (Short: \p{Nv=-1/2}) (1: U+0F33)
T \p{Numeric_Value: 0} (Short: \p{Nv=0}) (96: [0], U+0660,
U+06F0, U+07C0, U+0966, U+09E6 ...)
T \p{Numeric_Value: 1/320} (Short: \p{Nv=1/320}) (2: U+11FC0,
U+11FD4)
T \p{Numeric_Value: 1/160} (Short: \p{Nv=1/160}) (2: U+0D58, U+11FC1)
T \p{Numeric_Value: 1/80} (Short: \p{Nv=1/80}) (1: U+11FC2)
T \p{Numeric_Value: 1/64} (Short: \p{Nv=1/64}) (1: U+11FC3)
T \p{Numeric_Value: 1/40} (Short: \p{Nv=1/40}) (2: U+0D59, U+11FC4)
T \p{Numeric_Value: 1/32} (Short: \p{Nv=1/32}) (1: U+11FC5)
T \p{Numeric_Value: 3/80} (Short: \p{Nv=3/80}) (2: U+0D5A, U+11FC6)
T \p{Numeric_Value: 3/64} (Short: \p{Nv=3/64}) (1: U+11FC7)
T \p{Numeric_Value: 1/20} (Short: \p{Nv=1/20}) (2: U+0D5B, U+11FC8)
T \p{Numeric_Value: 1/16} (Short: \p{Nv=1/16}) (6: U+09F4, U+0B75,
U+0D76, U+A833, U+11FC9..11FCA)
T \p{Numeric_Value: 1/12} (Short: \p{Nv=1/12}) (1: U+109F6)
T \p{Numeric_Value: 1/10} (Short: \p{Nv=1/10}) (3: U+0D5C, U+2152,
U+11FCB)
T \p{Numeric_Value: 1/9} (Short: \p{Nv=1/9}) (1: U+2151)
and the fractions just keep coming, getting chunkier as they go 🌸
T \p{Numeric_Value: 1/8} (Short: \p{Nv=1/8}) (7: U+09F5, U+0B76,
U+0D77, U+215B, U+A834, U+11FCC ...)
T \p{Numeric_Value: 1/7} (Short: \p{Nv=1/7}) (1: U+2150)
T \p{Numeric_Value: 3/20} (Short: \p{Nv=3/20}) (2: U+0D5D, U+11FCD)
T \p{Numeric_Value: 1/6} (Short: \p{Nv=1/6}) (4: U+2159, U+109F7,
U+12461, U+1ED3D)
T \p{Numeric_Value: 3/16} (Short: \p{Nv=3/16}) (5: U+09F6, U+0B77,
U+0D78, U+A835, U+11FCE)
T \p{Numeric_Value: 1/5} (Short: \p{Nv=1/5}) (3: U+0D5E, U+2155,
U+11FCF)
T \p{Numeric_Value: 1/4} (Short: \p{Nv=1/4}) (14: [\xbc], U+09F7,
U+0B72, U+0D73, U+A830, U+10140 ...)
T \p{Numeric_Value: 1/3} (Short: \p{Nv=1/3}) (6: U+2153, U+109F9,
U+10E7D, U+1245A, U+1245D, U+12465)
T \p{Numeric_Value: 3/8} (Short: \p{Nv=3/8}) (1: U+215C)
T \p{Numeric_Value: 2/5} (Short: \p{Nv=2/5}) (1: U+2156)
T \p{Numeric_Value: 5/12} (Short: \p{Nv=5/12}) (1: U+109FA)
T \p{Numeric_Value: 1/2} (Short: \p{Nv=1/2}) (19: [\xbd], U+0B73,
U+0D74, U+0F2A, U+2CFD, U+A831 ...)
T \p{Numeric_Value: 7/12} (Short: \p{Nv=7/12}) (1: U+109FC)
T \p{Numeric_Value: 3/5} (Short: \p{Nv=3/5}) (1: U+2157)
T \p{Numeric_Value: 5/8} (Short: \p{Nv=5/8}) (1: U+215D)
T \p{Numeric_Value: 2/3} (Short: \p{Nv=2/3}) (7: U+2154, U+10177,
U+109FD, U+10E7E, U+1245B, U+1245E ...)
T \p{Numeric_Value: 3/4} (Short: \p{Nv=3/4}) (9: [\xbe], U+09F8,
U+0B74, U+0D75, U+A832, U+10178 ...)
T \p{Numeric_Value: 4/5} (Short: \p{Nv=4/5}) (1: U+2158)
T \p{Numeric_Value: 5/6} (Short: \p{Nv=5/6}) (3: U+215A, U+109FF,
U+1245C)
T \p{Numeric_Value: 7/8} (Short: \p{Nv=7/8}) (1: U+215E)
T \p{Numeric_Value: 11/12} (Short: \p{Nv=11/12}) (1: U+109BC)
and then we hit the integers, and this is where it gets spicy 🫶 notice how the halves keep popping back in — 3/2, 5/2, 7/2 — tucked right in between the whole numbers like they're sneaking past the bouncer. also 0 is in there at the top with a count of 96, and [0] sitting in its sample list like hi bestie 👋
T \p{Numeric_Value: 1} (Short: \p{Nv=1}) (152: [1\xb9], U+0661,
U+06F1, U+07C1, U+0967, U+09E7 ...)
T \p{Numeric_Value: 3/2} (Short: \p{Nv=3/2}) (1: U+0F2B)
T \p{Numeric_Value: 2} (Short: \p{Nv=2}) (154: [2\xb2], U+0662,
U+06F2, U+07C2, U+0968, U+09E8 ...)
T \p{Numeric_Value: 5/2} (Short: \p{Nv=5/2}) (1: U+0F2C)
T \p{Numeric_Value: 3} (Short: \p{Nv=3}) (152: [3\xb3], U+0663,
U+06F3, U+07C3, U+0969, U+09E9 ...)
T \p{Numeric_Value: 7/2} (Short: \p{Nv=7/2}) (1: U+0F2D)
T \p{Numeric_Value: 4} (Short: \p{Nv=4}) (143: [4], U+0664,
U+06F4, U+07C4, U+096A, U+09EA ...)
T \p{Numeric_Value: 9/2} (Short: \p{Nv=9/2}) (1: U+0F2E)
T \p{Numeric_Value: 5} (Short: \p{Nv=5}) (141: [5], U+0665,
U+06F5, U+07C5, U+096B, U+09EB ...)
T \p{Numeric_Value: 11/2} (Short: \p{Nv=11/2}) (1: U+0F2F)
T \p{Numeric_Value: 6} (Short: \p{Nv=6}) (125: [6], U+0666,
U+06F6, U+07C6, U+096C, U+09EC ...)
T \p{Numeric_Value: 13/2} (Short: \p{Nv=13/2}) (1: U+0F30)
T \p{Numeric_Value: 7} (Short: \p{Nv=7}) (125: [7], U+0667,
U+06F7, U+07C7, U+096D, U+09ED ...)
T \p{Numeric_Value: 15/2} (Short: \p{Nv=15/2}) (1: U+0F31)
T \p{Numeric_Value: 8} (Short: \p{Nv=8}) (120: [8], U+0668,
U+06F8, U+07C8, U+096E, U+09EE ...)
T \p{Numeric_Value: 17/2} (Short: \p{Nv=17/2}) (1: U+0F32)
T \p{Numeric_Value: 9} (Short: \p{Nv=9}) (126: [9], U+0669,
U+06F9, U+07C9, U+096F, U+09EF ...)
T \p{Numeric_Value: 10} (Short: \p{Nv=10}) (63: U+0BF0, U+0D70,
U+1372, U+2169, U+2179, U+2469 ...)
T \p{Numeric_Value: 11} (Short: \p{Nv=11}) (9: U+216A, U+217A,
U+246A, U+247E, U+2492, U+24EB ...)
T \p{Numeric_Value: 12} (Short: \p{Nv=12}) (9: U+216B, U+217B,
U+246B, U+247F, U+2493, U+24EC ...)
T \p{Numeric_Value: 13} (Short: \p{Nv=13}) (7: U+246C, U+2480,
U+2494, U+24ED, U+16E8D, U+1D2CD ...)
T \p{Numeric_Value: 14} (Short: \p{Nv=14}) (7: U+246D, U+2481,
U+2495, U+24EE, U+16E8E, U+1D2CE ...)
T \p{Numeric_Value: 15} (Short: \p{Nv=15}) (7: U+246E, U+2482,
U+2496, U+24EF, U+16E8F, U+1D2CF ...)
T \p{Numeric_Value: 16} (Short: \p{Nv=16}) (8: U+09F9, U+246F,
U+2483, U+2497, U+24F0, U+16E90 ...)
T \p{Numeric_Value: 17} (Short: \p{Nv=17}) (8: U+16EE, U+2470,
U+2484, U+2498, U+24F1, U+16E91 ...)
T \p{Numeric_Value: 18} (Short: \p{Nv=18}) (8: U+16EF, U+2471,
U+2485, U+2499, U+24F2, U+16E92 ...)
T \p{Numeric_Value: 19} (Short: \p{Nv=19}) (8: U+16F0, U+2472,
U+2486, U+249A, U+24F3, U+16E93 ...)
T \p{Numeric_Value: 20} (Short: \p{Nv=20}) (36: U+1373, U+2473,
U+2487, U+249B, U+24F4, U+3039 ...)
and then 21 through 49 is just row after row of (1: ...) — one lonely code point each and that's the entire entry. it's giving "these are numbered and we must respect them" 💅
T \p{Numeric_Value: 21} (Short: \p{Nv=21}) (1: U+3251)
T \p{Numeric_Value: 22} (Short: \p{Nv=22}) (1: U+3252)
T \p{Numeric_Value: 23} (Short: \p{Nv=23}) (1: U+3253)
T \p{Numeric_Value: 24} (Short: \p{Nv=24}) (1: U+3254)
T \p{Numeric_Value: 25} (Short: \p{Nv=25}) (1: U+3255)
T \p{Numeric_Value: 26} (Short: \p{Nv=26}) (1: U+3256)
T \p{Numeric_Value: 27} (Short: \p{Nv=27}) (1: U+3257)
T \p{Numeric_Value: 28} (Short: \p{Nv=28}) (1: U+3258)
T \p{Numeric_Value: 29} (Short: \p{Nv=29}) (1: U+3259)
T \p{Numeric_Value: 30} (Short: \p{Nv=30}) (19: U+1374, U+303A,
U+324A, U+325A, U+5345, U+10112 ...)
T \p{Numeric_Value: 31} (Short: \p{Nv=31}) (1: U+325B)
T \p{Numeric_Value: 32} (Short: \p{Nv=32}) (1: U+325C)
T \p{Numeric_Value: 33} (Short: \p{Nv=33}) (1: U+325D)
T \p{Numeric_Value: 34} (Short: \p{Nv=34}) (1: U+325E)
T \p{Numeric_Value: 35} (Short: \p{Nv=35}) (1: U+325F)
T \p{Numeric_Value: 36} (Short: \p{Nv=36}) (1: U+32B1)
T \p{Numeric_Value: 37} (Short: \p{Nv=37}) (1: U+32B2)
T \p{Numeric_Value: 38} (Short: \p{Nv=38}) (1: U+32B3)
T \p{Numeric_Value: 39} (Short: \p{Nv=39}) (1: U+32B4)
T \p{Numeric_Value: 40} (Short: \p{Nv=40}) (18: U+1375, U+324B,
U+32B5, U+534C, U+10113, U+102ED ...)
T \p{Numeric_Value: 41} (Short: \p{Nv=41}) (1: U+32B6)
T \p{Numeric_Value: 42} (Short: \p{Nv=42}) (1: U+32B7)
T \p{Numeric_Value: 43} (Short: \p{Nv=43}) (1: U+32B8)
T \p{Numeric_Value: 44} (Short: \p{Nv=44}) (1: U+32B9)
T \p{Numeric_Value: 45} (Short: \p{Nv=45}) (1: U+32BA)
T \p{Numeric_Value: 46} (Short: \p{Nv=46}) (1: U+32BB)
T \p{Numeric_Value: 47} (Short: \p{Nv=47}) (1: U+32BC)
T \p{Numeric_Value: 48} (Short: \p{Nv=48}) (1: U+32BD)
T \p{Numeric_Value: 49} (Short: \p{Nv=49}) (1: U+32BE)
T \p{Numeric_Value: 50} (Short: \p{Nv=50}) (29: U+1376, U+216C,
U+217C, U+2186, U+324C, U+32BF ...)
and now the big round numbers roll in like the credits at the end of a movie 🎬 watch the counts get fatter — 100 has 35, 1000 has 22 — and then it just. stops. mid-line. right there at 2000.
T \p{Numeric_Value: 60} (Short: \p{Nv=60}) (13: U+1377, U+324D,
U+10115, U+102EF, U+109CE, U+10E6E ...)
T \p{Numeric_Value: 70} (Short: \p{Nv=70}) (13: U+1378, U+324E,
U+10116, U+102F0, U+109CF, U+10E6F ...)
T \p{Numeric_Value: 80} (Short: \p{Nv=80}) (12: U+1379, U+324F,
U+10117, U+102F1, U+10E70, U+11062 ...)
T \p{Numeric_Value: 90} (Short: \p{Nv=90}) (12: U+137A, U+10118,
U+102F2, U+10341, U+10E71, U+11063 ...)
T \p{Numeric_Value: 100} (Short: \p{Nv=100}) (35: U+0BF1, U+0D71,
U+137B, U+216D, U+217D, U+4F70 ...)
T \p{Numeric_Value: 200} (Short: \p{Nv=200}) (7: U+7695, U+1011A,
U+102F4, U+109D3, U+10E73, U+1EC84 ...)
T \p{Numeric_Value: 300} (Short: \p{Nv=300}) (7: U+1011B, U+1016B,
U+102F5, U+109D4, U+10E74, U+1EC85 ...)
T \p{Numeric_Value: 400} (Short: \p{Nv=400}) (7: U+1011C, U+102F6,
U+109D5, U+10E75, U+1EC86, U+1ED16 ...)
T \p{Numeric_Value: 500} (Short: \p{Nv=500}) (16: U+216E, U+217E,
U+1011D, U+10145, U+1014C, U+10153 ...)
T \p{Numeric_Value: 600} (Short: \p{Nv=600}) (7: U+1011E, U+102F8,
U+109D7, U+10E77, U+1EC88, U+1ED18 ...)
T \p{Numeric_Value: 700} (Short: \p{Nv=700}) (6: U+1011F, U+102F9,
U+109D8, U+10E78, U+1EC89, U+1ED19)
T \p{Numeric_Value: 800} (Short: \p{Nv=800}) (6: U+10120, U+102FA,
U+109D9, U+10E79, U+1EC8A, U+1ED1A)
T \p{Numeric_Value: 900} (Short: \p{Nv=900}) (7: U+10121, U+102FB,
U+1034A, U+109DA, U+10E7A, U+1EC8B ...)
T \p{Numeric_Value: 1000} (Short: \p{Nv=1000}) (22: U+0BF2, U+0D72,
U+216F, U+217F..2180, U+4EDF, U+5343 ...)
T \p{Numeric_Value: 2000} (Short: \p{Nv=2000}) (5: U+10123, U+109DC,
and THAT'S where this part ends — mid-2000, with an open paren and a trailing comma, which is honestly so rude of it 😭 the rest of that list is still coming, so hold that thought bestie 💖
okay bestie we are STILL in the property table and this stretch is the numbers arc 🔢✨ like genuinely, if it's a digit, a tally stick, or an ancient counting system, Unicode has a numeric value for it and we're about to read every single one.
tiny vibe check on the format so you don't get lost: that leading T is just this table's row tag, Short: hands you the short alias, and the number in parens at the end is how many code points live in that set. the ... means the list got cut off. that's the whole lore 🫶
T \p{Numeric_Value: 3000} (Short: \p{Nv=3000}) (4: U+10124, U+109DD,
U+1EC8E, U+1ED1E)
T \p{Numeric_Value: 4000} (Short: \p{Nv=4000}) (4: U+10125, U+109DE,
U+1EC8F, U+1ED1F)
T \p{Numeric_Value: 5000} (Short: \p{Nv=5000}) (8: U+2181, U+10126,
U+10146, U+1014E, U+10172, U+109DF ...)
T \p{Numeric_Value: 6000} (Short: \p{Nv=6000}) (4: U+10127, U+109E0,
U+1EC91, U+1ED21)
T \p{Numeric_Value: 7000} (Short: \p{Nv=7000}) (4: U+10128, U+109E1,
U+1EC92, U+1ED22)
T \p{Numeric_Value: 8000} (Short: \p{Nv=8000}) (4: U+10129, U+109E2,
U+1EC93, U+1ED23)
T \p{Numeric_Value: 9000} (Short: \p{Nv=9000}) (4: U+1012A, U+109E3,
U+1EC94, U+1ED24)
T \p{Numeric_Value: 10000} (= 1.0e+04) (Short: \p{Nv=10000}) (13:
U+137C, U+2182, U+4E07, U+842C, U+1012B,
U+10155 ...)
see how 10000 is the first one that gets a whole = 1.0e+04 in the middle? main character behavior honestly 👑
and from here on out everything is in the thousands and up, so the counts go full scientific notation and some of these sets are a single code point. one. singular. iconic.
T \p{Numeric_Value: 20000} (= 2.0e+04) (Short: \p{Nv=20000}) (4:
U+1012C, U+109E5, U+1EC96, U+1ED26)
T \p{Numeric_Value: 30000} (= 3.0e+04) (Short: \p{Nv=30000}) (4:
U+1012D, U+109E6, U+1EC97, U+1ED27)
T \p{Numeric_Value: 40000} (= 4.0e+04) (Short: \p{Nv=40000}) (4:
U+1012E, U+109E7, U+1EC98, U+1ED28)
T \p{Numeric_Value: 50000} (= 5.0e+04) (Short: \p{Nv=50000}) (7:
U+2187, U+1012F, U+10147, U+10156,
U+109E8, U+1EC99 ...)
T \p{Numeric_Value: 60000} (= 6.0e+04) (Short: \p{Nv=60000}) (4:
U+10130, U+109E9, U+1EC9A, U+1ED2A)
T \p{Numeric_Value: 70000} (= 7.0e+04) (Short: \p{Nv=70000}) (4:
U+10131, U+109EA, U+1EC9B, U+1ED2B)
T \p{Numeric_Value: 80000} (= 8.0e+04) (Short: \p{Nv=80000}) (4:
U+10132, U+109EB, U+1EC9C, U+1ED2C)
T \p{Numeric_Value: 90000} (= 9.0e+04) (Short: \p{Nv=90000}) (4:
U+10133, U+109EC, U+1EC9D, U+1ED2D)
T \p{Numeric_Value: 100000} (= 1.0e+05) (Short: \p{Nv=100000}) (5:
U+2188, U+109ED, U+1EC9E, U+1ECA0,
U+1ECB4)
T \p{Numeric_Value: 200000} (= 2.0e+05) (Short: \p{Nv=200000}) (2:
U+109EE, U+1EC9F)
T \p{Numeric_Value: 216000} (= 2.2e+05) (Short: \p{Nv=216000}) (1:
U+12432)
T \p{Numeric_Value: 300000} (= 3.0e+05) (Short: \p{Nv=300000}) (1:
U+109EF)
T \p{Numeric_Value: 400000} (= 4.0e+05) (Short: \p{Nv=400000}) (1:
U+109F0)
T \p{Numeric_Value: 432000} (= 4.3e+05) (Short: \p{Nv=432000}) (1:
U+12433)
T \p{Numeric_Value: 500000} (= 5.0e+05) (Short: \p{Nv=500000}) (1:
U+109F1)
T \p{Numeric_Value: 600000} (= 6.0e+05) (Short: \p{Nv=600000}) (1:
U+109F2)
T \p{Numeric_Value: 700000} (= 7.0e+05) (Short: \p{Nv=700000}) (1:
U+109F3)
T \p{Numeric_Value: 800000} (= 8.0e+05) (Short: \p{Nv=800000}) (1:
U+109F4)
T \p{Numeric_Value: 900000} (= 9.0e+05) (Short: \p{Nv=900000}) (1:
U+109F5)
216000 and 432000 being lone little singletons is SO specific and I love that for them 🥺
then it keeps climbing, and by the end we're at ten quadrillion. yes bestie, Unicode really said "we contain multitudes."
T \p{Numeric_Value: 1000000} (= 1.0e+06) (Short: \p{Nv=1000000}) (2:
U+5146, U+16B5E)
T \p{Numeric_Value: 10000000} (= 1.0e+07) (Short: \p{Nv=10000000})
(1: U+1ECA1)
T \p{Numeric_Value: 20000000} (= 2.0e+07) (Short: \p{Nv=20000000})
(1: U+1ECA2)
T \p{Numeric_Value: 100000000} (= 1.0e+08) (Short: \p{Nv=100000000})
(3: U+4EBF, U+5104, U+16B5F)
T \p{Numeric_Value: 1000000000} (= 1.0e+09) (Short: \p{Nv=
1000000000}) (1: U+79ED)
T \p{Numeric_Value: 10000000000} (= 1.0e+10) (Short: \p{Nv=
10000000000}) (1: U+16B60)
T \p{Numeric_Value: 1000000000000} (= 1.0e+12) (Short: \p{Nv=
1000000000000}) (1: U+16B61)
T \p{Numeric_Value: 10000000000000000} (= 1.0e+16) (Short: \p{Nv=
10000000000000000}) (1: U+4EAC)
notice how once the numbers get long enough the \p{Nv= literally wraps onto its own line. it's giving ✨struggling✨ and same honestly 😭
and then. AND THEN. NaN shows up like it owns the place 👀 it's got a count of 1_112_110 plus all above-Unicode code points, and then just dumps an absolutely feral pile of ranges and code points at you. read it slowly, it's a whole mood.
\p{Numeric_Value: NaN} (Short: \p{Nv=NaN}) (1_112_110 plus all
above-Unicode code points: [\x00-\x20!
\"#\$\%&\'\(\)*+,\-.\/:;<=>?\@A-Z\[\\\]
\^_`a-z\{\|\}~\x7f-\xb1\xb4-\xb8\xba-
\xbb\xbf-\xff], U+0100..065F,
U+066A..06EF, U+06FA..07BF,
U+07CA..0965, U+0970..09E5 ...)
\p{Nushu} \p{Script_Extensions=Nushu} (Short:
\p{Nshu}; NOT \p{Block=Nushu}) (397)
\p{Nv: *} \p{Numeric_Value: *}
\p{Nyiakeng_Puachue_Hmong} \p{Script_Extensions=
Nyiakeng_Puachue_Hmong} (Short:
\p{Hmnp}; NOT \p{Block=
Nyiakeng_Puachue_Hmong}) (71)
and we've made it to the N section of the alphabet, which means we're officially over the hump. also lowkey obsessed with how often this table yells NOT \p{Block=...} at you — it is NOT playing, it wants you to know it is NOT the block property, periodt 💅
next up: the O's. so many O's. and a few rows tagged with X (same deal as T — it's just the table's row marker, keep it exactly as written).
X \p{OCR} \p{Optical_Character_Recognition} (=
\p{Block=Optical_Character_Recognition})
(32)
\p{Ogam} \p{Ogham} (= \p{Script_Extensions=Ogham})
(NOT \p{Block=Ogham}) (29)
\p{Ogham} \p{Script_Extensions=Ogham} (Short:
\p{Ogam}; NOT \p{Block=Ogham}) (29)
\p{Ol_Chiki} \p{Script_Extensions=Ol_Chiki} (Short:
\p{Olck}) (48)
\p{Ol_Onal} \p{Script_Extensions=Ol_Onal} (Short:
\p{Onao}; NOT \p{Block=Ol_Onal}) (46)
\p{Olck} \p{Ol_Chiki} (= \p{Script_Extensions=
Ol_Chiki}) (48)
\p{Old_Hungarian} \p{Script_Extensions=Old_Hungarian}
(Short: \p{Hung}; NOT \p{Block=
Old_Hungarian}) (112)
\p{Old_Italic} \p{Script_Extensions=Old_Italic} (Short:
\p{Ital}; NOT \p{Block=Old_Italic}) (39)
\p{Old_North_Arabian} \p{Script_Extensions=Old_North_Arabian}
(Short: \p{Narb}) (32)
\p{Old_Permic} \p{Script_Extensions=Old_Permic} (Short:
\p{Perm}; NOT \p{Block=Old_Permic}) (50)
\p{Old_Persian} \p{Script_Extensions=Old_Persian} (Short:
\p{Xpeo}; NOT \p{Block=Old_Persian}) (50)
\p{Old_Sogdian} \p{Script_Extensions=Old_Sogdian} (Short:
\p{Sogo}; NOT \p{Block=Old_Sogdian}) (40)
\p{Old_South_Arabian} \p{Script_Extensions=Old_South_Arabian}
(Short: \p{Sarb}) (32)
\p{Old_Turkic} \p{Script_Extensions=Old_Turkic} (Short:
\p{Orkh}; NOT \p{Block=Old_Turkic}) (75)
\p{Old_Uyghur} \p{Script_Extensions=Old_Uyghur} (Short:
\p{Ougr}; NOT \p{Block=Old_Uyghur}) (28)
\p{Onao} \p{Ol_Onal} (= \p{Script_Extensions=
Ol_Onal}) (NOT \p{Block=Ol_Onal}) (46)
\p{Open_Punctuation} \p{General_Category=Open_Punctuation}
(Short: \p{Ps}) (79)
the way \p{Ogam}, \p{Ogham}, \p{Ol_Chiki}, \p{Olck}, \p{Ol_Onal}, \p{Onao} all bounce off each other as aliases? it's giving friend group 🌈
and here's the rest of the O block, including the one row that just casually declares (959_284 plus all above-Unicode code points) like that's a normal Tuesday 💀
X \p{Optical_Character_Recognition} \p{Block=
Optical_Character_Recognition} (Short:
\p{InOCR}) (32)
\p{Oriya} \p{Script_Extensions=Oriya} (Short:
\p{Orya}; NOT \p{Block=Oriya}) (97)
\p{Orkh} \p{Old_Turkic} (= \p{Script_Extensions=
Old_Turkic}) (NOT \p{Block=Old_Turkic})
(75)
X \p{Ornamental_Dingbats} \p{Block=Ornamental_Dingbats} (48)
\p{Orya} \p{Oriya} (= \p{Script_Extensions=Oriya})
(NOT \p{Block=Oriya}) (97)
\p{Osage} \p{Script_Extensions=Osage} (Short:
\p{Osge}; NOT \p{Block=Osage}) (76)
\p{Osge} \p{Osage} (= \p{Script_Extensions=Osage})
(NOT \p{Block=Osage}) (76)
\p{Osma} \p{Osmanya} (= \p{Script_Extensions=
Osmanya}) (NOT \p{Block=Osmanya}) (40)
\p{Osmanya} \p{Script_Extensions=Osmanya} (Short:
\p{Osma}; NOT \p{Block=Osmanya}) (40)
\p{Other} \p{General_Category=Other} (Short: \p{C})
(959_284 plus all above-Unicode code
points)
\p{Other_Letter} \p{General_Category=Other_Letter} (Short:
\p{Lo}) (136_477)
\p{Other_Number} \p{General_Category=Other_Number} (Short:
\p{No}) (915)
\p{Other_Punctuation} \p{General_Category=Other_Punctuation}
(Short: \p{Po}) (640)
\p{Other_Symbol} \p{General_Category=Other_Symbol} (Short:
\p{So}) (7376)
Other_Letter with 136_477 is the biggest single count in this whole chunk and it's literally called "Other". the humility?? we love a modest queen 🎀
and now we slide into the P's, which is where things get delightfully fussy — Pat_Syn, Pat_WS, Pattern_Syntax, Pattern_Syntax: N*, and the legendary \p{P} / \pP / \p{Punct} trio that comes with a NOT \p{General_Punctuation} warning attached. read that one twice, bestie, it's important 🫶
X \p{Ottoman_Siyaq_Numbers} \p{Block=Ottoman_Siyaq_Numbers} (80)
\p{Ougr} \p{Old_Uyghur} (= \p{Script_Extensions=
Old_Uyghur}) (NOT \p{Block=Old_Uyghur})
(28)
\p{P} \pP \p{Punct} (= \p{General_Category=
Punctuation}) (NOT
\p{General_Punctuation}) (855)
\p{Pahawh_Hmong} \p{Script_Extensions=Pahawh_Hmong} (Short:
\p{Hmng}; NOT \p{Block=Pahawh_Hmong})
(127)
\p{Palm} \p{Palmyrene} (= \p{Script_Extensions=
Palmyrene}) (32)
\p{Palmyrene} \p{Script_Extensions=Palmyrene} (Short:
\p{Palm}) (32)
\p{Paragraph_Separator} \p{General_Category=Paragraph_Separator}
(Short: \p{Zp}) (1)
\p{Pat_Syn} \p{Pattern_Syntax} (= \p{Pattern_Syntax=
Y}) (2760)
\p{Pat_Syn: *} \p{Pattern_Syntax: *}
\p{Pat_WS} \p{Pattern_White_Space} (=
\p{Pattern_White_Space=Y}) (11)
\p{Pat_WS: *} \p{Pattern_White_Space: *}
\p{Pattern_Syntax} \p{Pattern_Syntax=Y} (Short: \p{PatSyn})
(2760)
\p{Pattern_Syntax: N*} (Short: \p{PatSyn=N}, \P{PatSyn})
(1_111_352 plus all above-Unicode code
\p{Paragraph_Separator} with a count of (1). ONE. there is exactly one and I simply must know their name 🥹
also peep the * versions — \p{Nv: *}, \p{Pat_Syn: *}, \p{Pat_WS: *} — they're in here too, sitting pretty with no count at all.
and that's exactly where this part cuts off, mid-line, mid-thought, on all above-Unicode code 😭 don't close the tab bestie, the P section keeps going and we're SO close to being done with the alphabet 💖
okay continuing 💅 we are STILL deep in the giant property list and I am not skipping a single one of these, bestie, we're going all the way down. buckle up 🎀
- (this first bit is the tail end of the entry we were already sitting in the middle of — its code point list just kept going like this:)
points: [\x00-\x200-9A-Z_a-z\x7f-\xa0\xa8\xaa\xad\xaf\xb2-\xb5\xb7-\xba\xbc-\xbe\xc0-\xd6\xd8-\xf6\xf8-\xff], U+0100..200F, U+2028..202F, U+203F..2040, U+2054, U+205F..218F ...)
\p{Pattern_Syntax: Y*}— short forms are\p{PatSyn=Y}and\p{PatSyn}💖 — 2760 code points:
[!\"#\$\%&\'\(\)*+,\-.\/:;<=>?\@\[\\\]\^`\{\|\}~\xa1-\xa7\xa9\xab-\xac\xae\xb0-\xb1\xb6\xbb\xbf\xd7\xf7], U+2010..2027, U+2030..203E, U+2041..2053, U+2055..205E, U+2190..245F ...)
\p{Pattern_White_Space}— same thing as\p{Pattern_White_Space=Y}(short:\p{PatWS}) — 11 code points ✨\p{Pattern_White_Space: N*}— short:\p{PatWS=N}, and\P{PatWS}is the exact same vibe. Count is 1_114_101, plus all above-Unicode code points:[^\t\n\cK\f\r\x20\x85],U+0100..200D,U+2010..2027,U+202A..infinity\p{Pattern_White_Space: Y*}— short:\p{PatWS=Y}, and\p{PatWS}points here too. 11 code points:[\t\n\cK\f\r\x20\x85],U+200E..200F,U+2028..2029\p{Pau_Cin_Hau}— same as\p{Script_Extensions=Pau_Cin_Hau}(short:\p{Pauc}; and it is NOT\p{Block=Pau_Cin_Hau}, do not let anyone tell you otherwise 🙅) — 57\p{Pauc}—\p{Pau_Cin_Hau}(=\p{Script_Extensions=Pau_Cin_Hau}) (again: NOT\p{Block=Pau_Cin_Hau}) — 57\p{Pc}—\p{Connector_Punctuation}(=\p{General_Category=Connector_Punctuation}) — 10\p{PCM}—\p{Prepended_Concatenation_Mark}(=\p{Prepended_Concatenation_Mark=Y}) — 13\p{PCM: *}—\p{Prepended_Concatenation_Mark: *}🦋\p{Pd}—\p{Dash_Punctuation}(=\p{General_Category=Dash_Punctuation}) — 27\p{Pe}—\p{Close_Punctuation}(=\p{General_Category=Close_Punctuation}) — 77\p{PerlSpace}—\p{PosixSpace}— 6\p{PerlWord}—\p{PosixWord}— 63\p{Perm}—\p{Old_Permic}(=\p{Script_Extensions=Old_Permic}) (NOT\p{Block=Old_Permic}) — 50\p{Pf}—\p{Final_Punctuation}(=\p{General_Category=Final_Punctuation}) — 10\p{Phag}—\p{Phags_Pa}(=\p{Script_Extensions=Phags_Pa}) (NOT\p{Block=Phags_Pa}) — 61\p{Phags_Pa}—\p{Script_Extensions=Phags_Pa}(short:\p{Phag}; NOT\p{Block=Phags_Pa}) — 61- X
\p{Phaistos}—\p{Phaistos_Disc}(=\p{Block=Phaistos_Disc}) — 48 - X
\p{Phaistos_Disc}—\p{Block=Phaistos_Disc}(short:\p{InPhaistos}) — 48 \p{Phli}—\p{Inscriptional_Pahlavi}(=\p{Script_Extensions=Inscriptional_Pahlavi}) (NOT\p{Block=Inscriptional_Pahlavi}) — 27\p{Phlp}—\p{Psalter_Pahlavi}(=\p{Script_Extensions=Psalter_Pahlavi}) (NOT\p{Block=Psalter_Pahlavi}) — 30\p{Phnx}—\p{Phoenician}(=\p{Script_Extensions=Phoenician}) (NOT\p{Block=Phoenician}) — 29\p{Phoenician}—\p{Script_Extensions=Phoenician}(short:\p{Phnx}; NOT\p{Block=Phoenician}) — 29- X
\p{Phonetic_Ext}—\p{Phonetic_Extensions}(=\p{Block=Phonetic_Extensions}) — 128 - X
\p{Phonetic_Ext_Sup}—\p{Phonetic_Extensions_Supplement}(=\p{Block=Phonetic_Extensions_Supplement}) — 64 - X
\p{Phonetic_Extensions}—\p{Block=Phonetic_Extensions}(short:\p{InPhoneticExt}) — 128 - X
\p{Phonetic_Extensions_Supplement}—\p{Block=Phonetic_Extensions_Supplement}(short:\p{InPhoneticExtSup}) — 64 \p{Pi}—\p{Initial_Punctuation}(=\p{General_Category=Initial_Punctuation}) — 12- X
\p{Playing_Cards}—\p{Block=Playing_Cards}— 96 🃏 \p{Plrd}—\p{Miao}(=\p{Script_Extensions=Miao}) (NOT\p{Block=Miao}) — 149\p{Po}—\p{Other_Punctuation}(=\p{General_Category=Other_Punctuation}) — 640\p{PosixAlnum}— 62:[0-9A-Za-z]\p{PosixAlpha}— 52:[A-Za-z]\p{PosixBlank}— 2:[\t\x20]\p{PosixCntrl}— ASCII control characters, 33 of them: ACK, BEL, BS, CAN, CR, DC1, DC2, DC3, DC4, DEL, DLE, ENQ, EOM, EOT, ESC, ETB, ETX, FF, FS, GS, HT, LF, NAK, NUL, RS, SI, SO, SOH, STX, SUB, SYN, US, VT\p{PosixDigit}— 10:[0-9]\p{PosixGraph}— 94:
[!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@A-Z\[\\\]\^_`a-z\{\|\}~]
\p{PosixLower}— (/i= PosixAlpha) — 26:[a-z]\p{PosixPrint}— 95:[\x20-\x7e]\p{PosixPunct}— 32:
[!\"#\$\%&\'\(\)*+,\-.\/:;<=>?\@\[\\\]\^_`\{\|\}~]
\p{PosixSpace}— (short:\p{PerlSpace}) — 6:[\t\n\cK\f\r\x20]\p{PosixUpper}— (/i= PosixAlpha) — 26:[A-Z]\p{PosixWord}— that's\w, but restricted to ASCII (short:\p{PerlWord}) — 63:[0-9A-Z_a-z]\p{PosixXDigit}—\p{ASCII_Hex_Digit=Y}(short:\p{AHex}) — 22\p{Prepended_Concatenation_Mark}—\p{Prepended_Concatenation_Mark=Y}(short:\p{PCM}) — 13\p{Prepended_Concatenation_Mark: N*}— (short:\p{PCM=N}, and\P{PCM}) — 1_114_099, plus all above-Unicode code points:U+0000..05FF,U+0606..06DC,U+06DE..070E,U+0710..088F,U+0892..08E1,U+08E3..110BC...\p{Prepended_Concatenation_Mark: Y*}— (short:\p{PCM=Y}, and\p{PCM}) — 13:U+0600..0605,U+06DD,U+070F,U+0890..0891,U+08E2,U+110BD...- T
\p{Present_In: 1.1}—\p{Age=V1_1}(short:\p{In=1.1}) (Perl extension) — 33_979 \p{Present_In: V1_1}—\p{Present_In=1.1}(=\p{Age=V1_1}) (Perl extension) — 33_979- T
\p{Present_In: 2.0}— "code point's usage introduced in version 2.0 or earlier" (short:\p{In=2.0}) (Perl extension) — 178_500:U+0000..01F5,U+01FA..0217,U+0250..02A8,U+02B0..02DE,U+02E0..02E9,U+0300..0345... \p{Present_In: V2_0}—\p{Present_In=2.0}(Perl extension) — 178_500- T
\p{Present_In: 2.1}— "code point's usage introduced in version 2.1 or earlier" (short:\p{In=2.1}) (Perl extension) — 178_502:U+0000..01F5,U+01FA..0217,U+0250..02A8,U+02B0..02DE,U+02E0..02E9,U+0300..0345... \p{Present_In: V2_1}—\p{Present_In=2.1}(Perl extension) — 178_502- T
\p{Present_In: 3.0}— "code point's usage introduced in version 3.0 or earlier" (short:\p{In=3.0}) (Perl extension) — 188_809:U+0000..021F,U+0222..0233,U+0250..02AD,U+02B0..02EE,U+0300..034E,U+0360..0362... \p{Present_In: V3_0}—\p{Present_In=3.0}(Perl extension) — 188_809- T
\p{Present_In: 3.1}— "code point's usage introduced in version 3.1 or earlier" (short:\p{In=3.1}) (Perl extension) — 233_787:U+0000..021F,U+0222..0233,U+0250..02AD,U+02B0..02EE,U+0300..034E,U+0360..0362... \p{Present_In: V3_1}—\p{Present_In=3.1}(Perl extension) — 233_787- T
\p{Present_In: 3.2}— "code point's usage introduced in version 3.2 or earlier" (short:\p{In=3.2}) (Perl extension) — 234_803:U+0000..0220,U+0222..0233,U+0250..02AD,U+02B0..02EE,U+0300..034F,U+0360..036F... \p{Present_In: V3_2}—\p{Present_In=3.2}(Perl extension) — 234_803- T
\p{Present_In: 4.0}— "code point's usage introduced in version 4.0 or earlier" (short:\p{In=4.0}) (Perl extension) — 236_029:U+0000..0236,U+0250..0357,U+035D..036F,U+0374..0375,U+037A,U+037E... \p{Present_In: V4_0}—\p{Present_In=4.0}(Perl extension) — 236_029- T
\p{Present_In: 4.1}— "code point's usage introduced in version 4.1 or earlier" (short:\p{In=4.1}) (Perl extension) — 237_302:U+0000..0241,U+0250..036F,U+0374..0375,U+037A,U+037E,U+0384..038A... \p{Present_In: V4_1}—\p{Present_In=4.1}(Perl extension) — 237_302- T
\p{Present_In: 5.0}— "code point's usage introduced in version 5.0 or earlier" (short:\p{In=5.0}) (Perl extension) — 238_671:U+0000..036F,U+0374..0375,U+037A..037E,U+0384..038A,U+038C,U+038E..03A1... \p{Present_In: V5_0}—\p{Present_In=5.0}(Perl extension) — 238_671
Okay bestie, buckle up, because this stretch of the table is aggressively full of Present_In — Unicode keeps dropping new versions and Perl keeps receipts on every single one. ✨ Nothing skipped, nothing merged, all the counts and ranges exactly as they came. 💅
T\p{Present_In: 5.1}— a code point whose usage was introduced in version 5.1 or earlier (Short:\p{In=5.1}) (Perl extension) (240_295:U+0000..0377,U+037A..037E,U+0384..038A,U+038C,U+038E..03A1,U+03A3..0523...)- also written
\p{Present_In: V5_1},\p{Present_In=5.1}(Perl extension) (240_295)
- also written
T\p{Present_In: 5.2}— code point's usage introduced in version 5.2 or earlier (Short:\p{In=5.2}) (Perl extension) (246_943:U+0000..0377,U+037A..037E,U+0384..038A,U+038C,U+038E..03A1,U+03A3..0525...)- also written
\p{Present_In: V5_2},\p{Present_In=5.2}(Perl extension) (246_943)
- also written
T\p{Present_In: 6.0}— code point's usage introduced in version 6.0 or earlier (Short:\p{In=6.0}) (Perl extension) (249_031:U+0000..0377,U+037A..037E,U+0384..038A,U+038C,U+038E..03A1,U+03A3..0527...)- also written
\p{Present_In: V6_0},\p{Present_In=6.0}(Perl extension) (249_031)
- also written
T\p{Present_In: 6.1}— code point's usage introduced in version 6.1 or earlier (Short:\p{In=6.1}) (Perl extension) (249_763:U+0000..0377,U+037A..037E,U+0384..038A,U+038C,U+038E..03A1,U+03A3..0527...)- also written
\p{Present_In: V6_1},\p{Present_In=6.1}(Perl extension) (249_763)
- also written
T\p{Present_In: 6.2}— code point's usage introduced in version 6.2 or earlier (Short:\p{In=6.2}) (Perl extension) (249_764:U+0000..0377,U+037A..037E,U+0384..038A,U+038C,U+038E..03A1,U+03A3..0527...)- also written
\p{Present_In: V6_2},\p{Present_In=6.2}(Perl extension) (249_764)
- also written
T\p{Present_In: 6.3}— code point's usage introduced in version 6.3 or earlier (Short:\p{In=6.3}) (Perl extension) (249_769:U+0000..0377,U+037A..037E,U+0384..038A,U+038C,U+038E..03A1,U+03A3..0527...)- also written
\p{Present_In: V6_3},\p{Present_In=6.3}(Perl extension) (249_769)
- also written
T\p{Present_In: 7.0}— code point's usage introduced in version 7.0 or earlier (Short:\p{In=7.0}) (Perl extension) (252_603:U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...)- also written
\p{Present_In: V7_0},\p{Present_In=7.0}(Perl extension) (252_603)
- also written
T\p{Present_In: 8.0}— code point's usage introduced in version 8.0 or earlier (Short:\p{In=8.0}) (Perl extension) (260_319:U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...)- also written
\p{Present_In: V8_0},\p{Present_In=8.0}(Perl extension) (260_319)
- also written
T\p{Present_In: 9.0}— code point's usage introduced in version 9.0 or earlier (Short:\p{In=9.0}) (Perl extension) (267_819:U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...)- also written
\p{Present_In: V9_0},\p{Present_In=9.0}(Perl extension) (267_819)
- also written
T\p{Present_In: 10.0}— code point's usage introduced in version 10.0 or earlier (Short:\p{In=10.0}) (Perl extension) (276_337:U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...)- also written
\p{Present_In: V10_0},\p{Present_In=10.0}(Perl extension) (276_337)
- also written
T\p{Present_In: 11.0}— code point's usage introduced in version 11.0 or earlier (Short:\p{In=11.0}) (Perl extension) (277_021:U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...)- also written
\p{Present_In: V11_0},\p{Present_In=11.0}(Perl extension) (277_021)
- also written
T\p{Present_In: 12.0}— code point's usage introduced in version 12.0 or earlier (Short:\p{In=12.0}) (Perl extension) (277_575:U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...)- also written
\p{Present_In: V12_0},\p{Present_In=12.0}(Perl extension) (277_575)
- also written
T\p{Present_In: 12.1}— code point's usage introduced in version 12.1 or earlier (Short:\p{In=12.1}) (Perl extension) (277_576:U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...)- also written
\p{Present_In: V12_1},\p{Present_In=12.1}(Perl extension) (277_576)
- also written
T\p{Present_In: 13.0}— code point's usage introduced in version 13.0 or earlier (Short:\p{In=13.0}) (Perl extension) (283_506:U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...)- also written
\p{Present_In: V13_0},\p{Present_In=13.0}(Perl extension) (283_506)
- also written
T\p{Present_In: 14.0}— code point's usage introduced in version 14.0 or earlier (Short:\p{In=14.0}) (Perl extension) (284_344:U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...)- also written
\p{Present_In: V14_0},\p{Present_In=14.0}(Perl extension) (284_344)
- also written
T\p{Present_In: 15.0}— code point's usage introduced in version 15.0 or earlier (Short:\p{In=15.0}) (Perl extension) (288_833:U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...)- also written
\p{Present_In: V15_0},\p{Present_In=15.0}(Perl extension) (288_833)
- also written
T\p{Present_In: 15.1}— code point's usage introduced in version 15.1 or earlier (Short:\p{In=15.1}) (Perl extension) (289_460:U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...)- also written
\p{Present_In: V15_1},\p{Present_In=15.1}(Perl extension) (289_460)
- also written
T\p{Present_In: 16.0}— code point's usage introduced in version 16.0 or earlier (Short:\p{In=16.0}) (Perl extension) (294_645:U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...)- also written
\p{Present_In: V16_0},\p{Present_In=16.0}(Perl extension) (294_645)
- also written
\p{Present_In: NA}— same energy as\p{Present_In=Unassigned}(=\p{Age=Unassigned}) (Perl extension) (819_467plus all above-Unicode code points)\p{Present_In: Unassigned}— this one's\p{Age=Unassigned}(Short:\p{In=NA}) (Perl extension) (819_467plus all above-Unicode code points)\p{Print}— aka\p{XPosixPrint}(292_464)\p{Private_Use}— that's\p{General_Category=Private_Use}(Short:\p{Co}; NOT\p{Private_Use_Area}) (137_468)
X\p{Private_Use_Area}— that's\p{Block=Private_Use_Area}(Short:\p{InPUA}) (6400)\p{Prti}—\p{Inscriptional_Parthian}(=\p{Script_Extensions=Inscriptional_Parthian}) (NOT\p{Block=Inscriptional_Parthian}) (30)\p{Ps}—\p{Open_Punctuation}(=\p{General_Category=Open_Punctuation}) (79)\p{Psalter_Pahlavi}—\p{Script_Extensions=Psalter_Pahlavi}(Short:\p{Phlp}; NOT\p{Block=Psalter_Pahlavi}) (30)X\p{PUA}—\p{Private_Use_Area}(=\p{Block=Private_Use_Area}) (6400)\p{Punct}—\p{General_Category=Punctuation}(Short:\p{P}; NOT\p{General_Punctuation}) (855)\p{Punctuation}—\p{Punct}(=\p{General_Category=Punctuation}) (NOT\p{General_Punctuation}) (855)\p{Qaac}—\p{Coptic}(=\p{Script_Extensions=Coptic}) (NOT\p{Block=Coptic}) (173)\p{Qaai}—\p{Inherited}(=\p{Script_Extensions=Inherited}) (558)\p{QMark}—\p{Quotation_Mark}(=\p{Quotation_Mark=Y}) (30)\p{QMark: *}—\p{Quotation_Mark: *}\p{Quotation_Mark}—\p{Quotation_Mark=Y}(Short:\p{QMark}) (30)\p{Quotation_Mark: N*}— (Short:\p{QMark=N},\P{QMark}) —1_114_082plus all above-Unicode code points:
[\x00-\x20!#\$\%&\(\)*+,\-.\/0-9:;<=>?\@A-Z\[\\\]\^_`a-z\{\|\}~\x7f-\xaa\xac-\xba\xbc-\xff], U+0100..2017, U+2020..2038, U+203B..2E41, U+2E43..300B, U+3010..301C ...
\p{Quotation_Mark: Y*}— (Short:\p{QMark=Y},\p{QMark}) (30:[\"\'\xab\xbb],U+2018..201F,U+2039..203A,U+2E42,U+300C..300F,U+301D..301F...)\p{Radical}—\p{Radical=Y}(329)\p{Radical: N*}— (Single:\P{Radical}) (1_113_783plus all\p{Radical: N*}(still wrapping up from the last part, bestie) — and it also sweeps in all the above-Unicode code points:U+0000..2E7F,U+2E9A,U+2EF4..2EFF,U+2FD6..infinity).\p{Radical: Y*}— single form:\p{Radical}. 329 code points:U+2E80..2E99,U+2E9B..2EF3,U+2F00..2FD5. ✨\p{Regional_Indicator},\p{Regional_Indicator=Y}— short form:\p{RI}. 26 of them.\p{Regional_Indicator: N*}— short forms:\p{RI=N}and\P{RI}. 1_114_086 plus literally every above-Unicode code point:U+0000..1F1E5,U+1F200..infinity.\p{Regional_Indicator: Y*}— short forms:\p{RI=Y}and\p{RI}. 26:U+1F1E6..1F1FF.\p{Rejang},\p{Script_Extensions=Rejang}— short form:\p{Rjng}. And NOT\p{Block=Rejang}. 37.\p{RI}— =\p{Regional_Indicator}(which =\p{Regional_Indicator=Y}). 26.\p{RI: *}— =\p{Regional_Indicator: *}.\p{Rjng}— =\p{Rejang}(=\p{Script_Extensions=Rejang}). NOT\p{Block=Rejang}. 37.\p{Rohg}— =\p{Hanifi_Rohingya}(=\p{Script_Extensions=Hanifi_Rohingya}). NOT\p{Block=Hanifi_Rohingya}. 55.- X
\p{Rumi}— =\p{Rumi_Numeral_Symbols}(=\p{Block=Rumi_Numeral_Symbols}). 32. - X
\p{Rumi_Numeral_Symbols}— =\p{Block=Rumi_Numeral_Symbols}, short form:\p{InRumi}. 32. \p{Runic},\p{Script_Extensions=Runic}— short form:\p{Runr}. NOT\p{Block=Runic}. 89.\p{Runr}— =\p{Runic}(=\p{Script_Extensions=Runic}). NOT\p{Block=Runic}. 89.
okay we made it to the S's, bestie, and this is where it gets iconic 💅
\p{S},\pS— =\p{Symbol}(=\p{General_Category=Symbol}). 8514 code points, no cap.\p{Samaritan},\p{Script_Extensions=Samaritan}— short form:\p{Samr}. NOT\p{Block=Samaritan}. 62.\p{Samr}— =\p{Samaritan}(=\p{Script_Extensions=Samaritan}). NOT\p{Block=Samaritan}. 62.\p{Sarb}— =\p{Old_South_Arabian}(=\p{Script_Extensions=Old_South_Arabian}). 32.\p{Saur}— =\p{Saurashtra}(=\p{Script_Extensions=Saurashtra}). NOT\p{Block=Saurashtra}. 82.\p{Saurashtra},\p{Script_Extensions=Saurashtra}— short form:\p{Saur}. NOT\p{Block=Saurashtra}. 82.\p{SB: *}— =\p{Sentence_Break: *}.\p{Sc}— =\p{Currency_Symbol}(=\p{General_Category=Currency_Symbol}). 63.\p{Sc: *}— =\p{Script: *}.\p{Script: Adlam}— short form:\p{Sc=Adlm}. 88:U+1E900..1E94B,U+1E950..1E959,U+1E95E..1E95F.\p{Script: Adlm}— =\p{Script=Adlam}. 88.\p{Script: Aghb}— =\p{Script=Caucasian_Albanian}. 53.\p{Script: Ahom}— =\p{Script_Extensions=Ahom}, short forms:\p{Sc=Ahom}and\p{Ahom}. 65.\p{Script: Anatolian_Hieroglyphs}— =\p{Script_Extensions=Anatolian_Hieroglyphs}, short forms:\p{Sc=Hluw}and\p{Hluw}. 583.\p{Script: Arab}— =\p{Script=Arabic}. 1373.\p{Script: Arabic}— short form:\p{Sc=Arab}. 1373:U+0600..0604,U+0606..060B,U+060D..061A,U+061C..061E,U+0620..063F,U+0641..064A...\p{Script: Armenian}— short form:\p{Sc=Armn}. 96:U+0531..0556,U+0559..058A,U+058D..058F,U+FB13..FB17.\p{Script: Armi}— =\p{Script=Imperial_Aramaic}(=\p{Script_Extensions=Imperial_Aramaic}). 31.\p{Script: Armn}— =\p{Script=Armenian}. 96.\p{Script: Avestan}— short form:\p{Sc=Avst}. 61:U+10B00..10B35,U+10B39..10B3F.\p{Script: Avst}— =\p{Script=Avestan}. 61.\p{Script: Bali}— =\p{Script=Balinese}(=\p{Script_Extensions=Balinese}). 127.\p{Script: Balinese}— =\p{Script_Extensions=Balinese}, short forms:\p{Sc=Bali}and\p{Bali}. 127.\p{Script: Bamu}— =\p{Script=Bamum}(=\p{Script_Extensions=Bamum}). 657.\p{Script: Bamum}— =\p{Script_Extensions=Bamum}, short forms:\p{Sc=Bamu}and\p{Bamu}. 657.\p{Script: Bass}— =\p{Script=Bassa_Vah}(=\p{Script_Extensions=Bassa_Vah}). 36.\p{Script: Bassa_Vah}— =\p{Script_Extensions=Bassa_Vah}, short forms:\p{Sc=Bass}and\p{Bass}. 36.\p{Script: Batak}— =\p{Script_Extensions=Batak}, short forms:\p{Sc=Batk}and\p{Batk}. 56.\p{Script: Batk}— =\p{Script=Batak}(=\p{Script_Extensions=Batak}). 56.\p{Script: Beng}— =\p{Script=Bengali}. 96.\p{Script: Bengali}— short form:\p{Sc=Beng}. 96:U+0980..0983,U+0985..098C,U+098F..0990,U+0993..09A8,U+09AA..09B0,U+09B2...\p{Script: Bhaiksuki}— =\p{Script_Extensions=Bhaiksuki}, short forms:\p{Sc=Bhks}and\p{Bhks}. 97.\p{Script: Bhks}— =\p{Script=Bhaiksuki}(=\p{Script_Extensions=Bhaiksuki}). 97.\p{Script: Bopo}— =\p{Script=Bopomofo}. 77.\p{Script: Bopomofo}— short form:\p{Sc=Bopo}. 77:U+02EA..02EB,U+3105..312F,U+31A0..31BF.\p{Script: Brah}— =\p{Script=Brahmi}(=\p{Script_Extensions=Brahmi}). 115.\p{Script: Brahmi}— =\p{Script_Extensions=Brahmi}, short forms:\p{Sc=Brah}and\p{Brah}. 115.\p{Script: Brai}— =\p{Script=Braille}(=\p{Script_Extensions=Braille}). 256.\p{Script: Braille}— =\p{Script_Extensions=Braille}, short forms:\p{Sc=Brai}and\p{Brai}. 256.\p{Script: Bugi}— =\p{Script=Buginese}. 30.\p{Script: Buginese}— short form:\p{Sc=Bugi}. 30:U+1A00..1A1B,U+1A1E..1A1F.\p{Script: Buhd}— =\p{Script=Buhid}. 20.\p{Script: Buhid}— short form:\p{Sc=Buhd}. 20:U+1740..1753.\p{Script: Cakm}— =\p{Script=Chakma}. 71.\p{Script: Canadian_Aboriginal}— =\p{Script_Extensions=Canadian_Aboriginal}, short forms:\p{Sc=Cans}and\p{Cans}. 726.\p{Script: Cans}— =\p{Script=Canadian_Aboriginal}(=\p{Script_Extensions=Canadian_Aboriginal}). 726.\p{Script: Cari}— =\p{Script=Carian}. 49.\p{Script: Carian}— short form:\p{Sc=Cari}. 49:U+102A0..102D0.\p{Script: Caucasian_Albanian}— short form:\p{Sc=Aghb}. 53:U+10530..10563,U+1056F.\p{Script: Chakma}— short form:\p{Sc=Cakm}. 71:U+11100..11134,U+11136..11147.\p{Script: Cham}— =\p{Script_Extensions=Cham}, short forms:\p{Sc=Cham}and\p{Cham}. 83.\p{Script: Cher}— =\p{Script=Cherokee}. 172.\p{Script: Cherokee}— short form:\p{Sc=Cher}. 172:U+13A0..13F5,U+13F8..13FD,U+AB70..ABBF.\p{Script: Chorasmian}— =\p{Script_Extensions=Chorasmian}, short forms:\p{Sc=Chrs}and\p{Chrs}. 28.\p{Script: Chrs}— =\p{Script=Chorasmian}(=\p{Script_Extensions=Chorasmian}). 28.\p{Script: Common}— short form:\p{Sc=Zyyy}. 9053, and the set starts like this:
[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@\[\\\]\^_`\{\|\}~\x7f-\xa9\xab-\xb9\xbb-\xbf\xd7\xf7], U+02B9..02DF, U+02E5..02E9, U+02EC..02FF, U+0374, U+037E ...
\p{Script: Copt}— =\p{Script=Coptic}. 137.\p{Script: Coptic}— short form:\p{Sc=Copt}. 137:U+03E2..03EF,U+2C80..2CF3,U+2CF9..2CFF.\p{Script: Cpmn}— =\p{Script=Cypro_Minoan}. 99.\p{Script: Cprt}— =\p{Script=Cypriot}. 55.\p{Script: Cuneiform}— =\p{Script_Extensions=Cuneiform}, short forms:\p{Sc=Xsux}and\p{Xsux}. 1234.\p{Script: Cypriot}— short form:\p{Sc=Cprt}. 55:U+10800..10805,U+10808,U+1080A..10835,U+10837..10838,U+1083C,U+1083F.\p{Script: Cypro_Minoan}— short form:\p{Sc=Cpmn}. 99:U+12F90..12FF2.\p{Script: Cyrillic}— short form:\p{Sc=Cyrl}. 508:U+0400..0484,U+0487..052F,U+1C80..1C8A,U+1D2B,U+1D78,U+2DE0..2DFF...\p{Script: Cyrl}— =\p{Script=Cyrillic}. 508.\p{Script: Deseret}— =\p{Script_Extensions=Deseret}, short forms:\p{Sc=Dsrt}and\p{Dsrt}. 80.\p{Script: Deva}— =\p{Script=Devanagari}. 164.\p{Script: Devanagari}— short form:\p{Sc=Deva}. 164:U+0900..0950,U+0955..0963,U+0966..097F,U+A8E0..A8FF,U+11B00..11B09.\p{Script: Diak}— =\p{Script=Dives_Akuru}(=\p{Script_Extensions=Dives_Akuru}). 72.\p{Script: Dives_Akuru}— =\p{Script_Extensions=Dives_Akuru}, short forms:\p{Sc=Diak}and\p{Diak}. 72.\p{Script: Dogr}— =\p{Script=Dogra}. 60.\p{Script: Dogra}— short form:\p{Sc=Dogr}. 60:U+11800..1183B.\p{Script: Dsrt}— =\p{Script=Deseret}(=\p{Script_Extensions=Deseret}). 80.\p{Script: Dupl}— =\p{Script=Duployan}. 143.\p{Script: Duployan}— short form:\p{Sc=Dupl}. 143:U+1BC00..1BC6A,U+1BC70..1BC7C,U+1BC80..1BC88,U+1BC90..1BC99,U+1BC9C..1BC9F.\p{Script: Egyp}— =\p{Script=Egyptian_Hieroglyphs}(=\p{Script_Extensions=Egyptian_Hieroglyphs}). 5105.\p{Script: Egyptian_Hieroglyphs}— =\p{Script_Extensions=Egyptian_Hieroglyphs}, short forms:\p{Sc=Egyp}and\p{Egyp}. 5105.\p{Script: Elba}— =\p{Script=Elbasan}. 40.\p{Script: Elbasan}— short form:\p{Sc=Elba}. 40:U+10500..10527.\p{Script: Elym}— =\p{Script=Elymaic}(=
okay bestie we're back and still deep in the script list — no thoughts, just property names 💅 same deal as always: the canonical names get the full code point rundown, and the aliases just point you at their main character. let's keep it moving 🦋
\p{Script: Elymaic}·\p{Script_Extensions=Elymaic}— Short:\p{Sc=Elym},\p{Elym}(23)\p{Script: Ethi}→\p{Script=Ethiopic}(523)\p{Script: Ethiopic}— Short:\p{Sc=Ethi}(523:U+1200..1248, U+124A..124D, U+1250..1256, U+1258, U+125A..125D, U+1260..1288 ...)\p{Script: Gara}→\p{Script=Garay}(69)\p{Script: Garay}— Short:\p{Sc=Gara}(69:U+10D40..10D65, U+10D69..10D85, U+10D8E..10D8F)\p{Script: Geor}→\p{Script=Georgian}(173)\p{Script: Georgian}— Short:\p{Sc=Geor}(173:U+10A0..10C5, U+10C7, U+10CD, U+10D0..10FA, U+10FC..10FF, U+1C90..1CBA ...)\p{Script: Glag}→\p{Script=Glagolitic}(134)\p{Script: Glagolitic}— Short:\p{Sc=Glag}(134:U+2C00..2C5F, U+1E000..1E006, U+1E008..1E018, U+1E01B..1E021, U+1E023..1E024, U+1E026..1E02A)\p{Script: Gong}→\p{Script=Gunjala_Gondi}(63)\p{Script: Gonm}→\p{Script=Masaram_Gondi}(75)\p{Script: Goth}→\p{Script=Gothic}(27)\p{Script: Gothic}— Short:\p{Sc=Goth}(27:U+10330..1034A) 🦇\p{Script: Gran}→\p{Script=Grantha}(85)\p{Script: Grantha}— Short:\p{Sc=Gran}(85:U+11300..11303, U+11305..1130C, U+1130F..11310, U+11313..11328, U+1132A..11330, U+11332..11333 ...)\p{Script: Greek}— Short:\p{Sc=Grek}(518:U+0370..0373, U+0375..0377, U+037A..037D, U+037F, U+0384, U+0386 ...)\p{Script: Grek}→\p{Script=Greek}(518)\p{Script: Gujarati}— Short:\p{Sc=Gujr}(91:U+0A81..0A83, U+0A85..0A8D, U+0A8F..0A91, U+0A93..0AA8, U+0AAA..0AB0, U+0AB2..0AB3 ...)\p{Script: Gujr}→\p{Script=Gujarati}(91)\p{Script: Gukh}→\p{Script=Gurung_Khema}(58)\p{Script: Gunjala_Gondi}— Short:\p{Sc=Gong}(63:U+11D60..11D65, U+11D67..11D68, U+11D6A..11D8E, U+11D90..11D91, U+11D93..11D98, U+11DA0..11DA9)\p{Script: Gurmukhi}— Short:\p{Sc=Guru}(80:U+0A01..0A03, U+0A05..0A0A, U+0A0F..0A10, U+0A13..0A28, U+0A2A..0A30, U+0A32..0A33 ...)\p{Script: Guru}→\p{Script=Gurmukhi}(80)\p{Script: Gurung_Khema}— Short:\p{Sc=Gukh}(58:U+16100..16139)\p{Script: Han}— Short:\p{Sc=Han}(99_030:U+2E80..2E99, U+2E9B..2EF3, U+2F00..2FD5, U+3005, U+3007, U+3021..3029 ...) — okay 99_030 bestie, that's a whole situation, no cap 😭\p{Script: Hang}→\p{Script=Hangul}(11_739)\p{Script: Hangul}— Short:\p{Sc=Hang}(11_739:U+1100..11FF, U+302E..302F, U+3131..318E, U+3200..321E, U+3260..327E, U+A960..A97C ...)\p{Script: Hani}→\p{Script=Han}(99_030)\p{Script: Hanifi_Rohingya}— Short:\p{Sc=Rohg}(50:U+10D00..10D27, U+10D30..10D39)\p{Script: Hano}→\p{Script=Hanunoo}(21)\p{Script: Hanunoo}— Short:\p{Sc=Hano}(21:U+1720..1734)\p{Script: Hatr}→\p{Script=Hatran}(=\p{Script_Extensions=Hatran}) (26)\p{Script: Hatran}·\p{Script_Extensions=Hatran}— Short:\p{Sc=Hatr},\p{Hatr}(26)\p{Script: Hebr}→\p{Script=Hebrew}(134)\p{Script: Hebrew}— Short:\p{Sc=Hebr}(134:U+0591..05C7, U+05D0..05EA, U+05EF..05F4, U+FB1D..FB36, U+FB38..FB3C, U+FB3E ...)\p{Script: Hira}→\p{Script=Hiragana}(381)\p{Script: Hiragana}— Short:\p{Sc=Hira}(381:U+3041..3096, U+309D..309F, U+1B001..1B11F, U+1B132, U+1B150..1B152, U+1F200) 🌸\p{Script: Hluw}→\p{Script=Anatolian_Hieroglyphs}(=\p{Script_Extensions=Anatolian_Hieroglyphs}) (583)\p{Script: Hmng}→\p{Script=Pahawh_Hmong}(=\p{Script_Extensions=Pahawh_Hmong}) (127)\p{Script: Hmnp}→\p{Script=Nyiakeng_Puachue_Hmong}(=\p{Script_Extensions=Nyiakeng_Puachue_Hmong}) (71)\p{Script: Hung}→\p{Script=Old_Hungarian}(108)\p{Script: Imperial_Aramaic}·\p{Script_Extensions=Imperial_Aramaic}— Short:\p{Sc=Armi},\p{Armi}(31)\p{Script: Inherited}— Short:\p{Sc=Zinh}(657:U+0300..036F, U+0485..0486, U+064B..0655, U+0670, U+0951..0954, U+1AB0..1ACE ...) — the "i don't belong to a script, i'm just vibes" bucket ✨\p{Script: Inscriptional_Pahlavi}·\p{Script_Extensions=Inscriptional_Pahlavi}— Short:\p{Sc=Phli},\p{Phli}(27)\p{Script: Inscriptional_Parthian}·\p{Script_Extensions=Inscriptional_Parthian}— Short:\p{Sc=Prti},\p{Prti}(30)\p{Script: Ital}→\p{Script=Old_Italic}(=\p{Script_Extensions=Old_Italic}) (39)\p{Script: Java}→\p{Script=Javanese}(90)\p{Script: Javanese}— Short:\p{Sc=Java}(90:U+A980..A9CD, U+A9D0..A9D9, U+A9DE..A9DF)\p{Script: Kaithi}— Short:\p{Sc=Kthi}(68:U+11080..110C2, U+110CD)\p{Script: Kali}→\p{Script=Kayah_Li}(47)\p{Script: Kana}→\p{Script=Katakana}(321)\p{Script: Kannada}— Short:\p{Sc=Knda}(91:U+0C80..0C8C, U+0C8E..0C90, U+0C92..0CA8, U+0CAA..0CB3, U+0CB5..0CB9, U+0CBC..0CC4 ...)\p{Script: Katakana}— Short:\p{Sc=Kana}(321:U+30A1..30FA, U+30FD..30FF, U+31F0..31FF, U+32D0..32FE, U+3300..3357, U+FF66..FF6F ...)\p{Script: Kawi}·\p{Script_Extensions=Kawi}— Short:\p{Sc=Kawi},\p{Kawi}(87)\p{Script: Kayah_Li}— Short:\p{Sc=Kali}(47:U+A900..A92D, U+A92F)\p{Script: Khar}→\p{Script=Kharoshthi}(=\p{Script_Extensions=Kharoshthi}) (68)\p{Script: Kharoshthi}·\p{Script_Extensions=Kharoshthi}— Short:\p{Sc=Khar},\p{Khar}(68)\p{Script: Khitan_Small_Script}·\p{Script_Extensions=Khitan_Small_Script}— Short:\p{Sc=Kits},\p{Kits}(472)\p{Script: Khmer}·\p{Script_Extensions=Khmer}— Short:\p{Sc=Khmr},\p{Khmr}(146)\p{Script: Khmr}→\p{Script=Khmer}(=\p{Script_Extensions=Khmer}) (146)\p{Script: Khoj}→\p{Script=Khojki}(65)\p{Script: Khojki}— Short:\p{Sc=Khoj}(65:U+11200..11211, U+11213..11241)\p{Script: Khudawadi}— Short:\p{Sc=Sind}(69:U+112B0..112EA, U+112F0..112F9)\p{Script: Kirat_Rai}·\p{Script_Extensions=Kirat_Rai}— Short:\p{Sc=Krai},\p{Krai}(58)\p{Script: Kits}→\p{Script=Khitan_Small_Script}(=\p{Script_Extensions=Khitan_Small_Script}) (472)\p{Script: Knda}→\p{Script=Kannada}(91)\p{Script: Krai}→\p{Script=Kirat_Rai}(=\p{Script_Extensions=Kirat_Rai}) (58)\p{Script: Kthi}→\p{Script=Kaithi}(68)\p{Script: Lana}→\p{Script=Tai_Tham}(=\p{Script_Extensions=Tai_Tham}) (127)\p{Script: Lao}·\p{Script_Extensions=Lao}— Short:\p{Sc=Lao},\p{Lao}(83)\p{Script: Laoo}→\p{Script=Lao}(=\p{Script_Extensions=Lao}) (83)\p{Script: Latin}— Short:\p{Sc=Latn}(1487:[A-Za-z\xaa\xba\xc0-\xd6\xd8-\xf6\xf8-\xff], U+0100..02B8, U+02E0..02E4, U+1D00..1D25, U+1D2C..1D5C, U+1D62..1D65 ...) — yes bestie that first bit really is a bracket expression in there, we don't make the rules 💀\p{Script: Latn}→\p{Script=Latin}(1487)\p{Script: Lepc}→\p{Script=Lepcha}(=\p{Script_Extensions=Lepcha}) (74)\p{Script: Lepcha}·\p{Script_Extensions=Lepcha}— Short:\p{Sc=Lepc},\p{Lepc}(74)\p{Script: Limb}→\p{Script=Limbu}(68)\p{Script: Limbu}— Short:\p{Sc=Limb}(68:U+1900..191E, U+1920..192B, U+1930..193B, U+1940, U+1944..194F)\p{Script: Lina}→\p{Script=Linear_A}(341)\p{Script: Linb}→\p{Script=Linear_B}(211)\p{Script: Linear_A}— Short:\p{Sc=Lina}(341:U+10600..10736, U+10740..10755, U+10760..10767)\p{Script: Linear_B}— Short:\p{Sc=Linb}(211:U+10000..1000B, U+1000D..10026, U+10028..1003A, U+1003C..1003D, U+1003F..1004D, U+10050..1005D ...)\p{Script: Lisu}— Short:\p{Sc=Lisu}(49:U+A4D0..A4FF, U+11FB0)\p{Script: Lyci}→\p{Script=Lycian}(29)\p{Script: Lycian}— Short:\p{Sc=Lyci}(29:U+10280..1029C)\p{Script: Lydi}→\p{Script=Lydian}(27)\p{Script: Lydian}— Short:\p{Sc=Lydi}(27:U+10920..10939, U+1093F)\p{Script: Mahajani}— Short:\p{Sc=Mahj}(39:U+11150..11176)\p{Script: Mahj}→\p{Script=Mahajani}(39)\p{Script: Maka}→\p{Script=Makasar}(=\p{Script_Extensions=Makasar}) (25)\p{Script: Makasar}·\p{Script_Extensions=Makasar}— Short:\p{Sc=Maka},\p{Maka}(25)\p{Script: Malayalam}— Short:\p{Sc=Mlym}(118:U+0D00..0D0C, U+0D0E..0D10, U+0D12..0D44,
okay we're still in the script list, no thoughts just vibes, bestie keep scrolling with me 🌸
\p{Script: Mand}aka\p{Script=Mandaic}(29) — canonical form\p{Script: Mandaic}(Short:\p{Sc=Mand}) (29:U+0840..085B,U+085E)\p{Script: Mani}aka\p{Script=Manichaean}(51) — canonical form\p{Script: Manichaean}(Short:\p{Sc=Mani}) (51:U+10AC0..10AE6,U+10AEB..10AF6)\p{Script: Marc}aka\p{Script=Marchen}(=\p{Script_Extensions=Marchen}) (68) — canonical form\p{Script: Marchen}·\p{Script_Extensions=Marchen}(Short:\p{Sc=Marc},\p{Marc}) (68) 💅\p{Script: Masaram_Gondi}(Short:\p{Sc=Gonm}) (75:U+11D00..11D06,U+11D08..11D09,U+11D0B..11D36,U+11D3A,U+11D3C..11D3D,U+11D3F..11D47...)\p{Script: Medefaidrin}·\p{Script_Extensions=Medefaidrin}(Short:\p{Sc=Medf},\p{Medf}) (91) — canonical form\p{Script: Medf}aka\p{Script=Medefaidrin}(=\p{Script_Extensions=Medefaidrin}) (91)\p{Script: Meetei_Mayek}·\p{Script_Extensions=Meetei_Mayek}(Short:\p{Sc=Mtei},\p{Mtei}) (79) ✨\p{Script: Mend}aka\p{Script=Mende_Kikakui}(=\p{Script_Extensions=Mende_Kikakui}) (213) — canonical form\p{Script: Mende_Kikakui}·\p{Script_Extensions=Mende_Kikakui}(Short:\p{Sc=Mend},\p{Mend}) (213)\p{Script: Merc}aka\p{Script=Meroitic_Cursive}(=\p{Script_Extensions=Meroitic_Cursive}) (90)\p{Script: Mero}aka\p{Script=Meroitic_Hieroglyphs}(32) — canonical form\p{Script: Meroitic_Cursive}·\p{Script_Extensions=Meroitic_Cursive}(Short:\p{Sc=Merc},\p{Merc}) (90) 🦋\p{Script: Meroitic_Hieroglyphs}(Short:\p{Sc=Mero}) (32:U+10980..1099F)\p{Script: Miao}·\p{Script_Extensions=Miao}(Short:\p{Sc=Miao},\p{Miao}) (149)\p{Script: Mlym}aka\p{Script=Malayalam}(118)\p{Script: Modi}(Short:\p{Sc=Modi}) (79:U+11600..11644,U+11650..11659)\p{Script: Mong}aka\p{Script=Mongolian}(168) — canonical form\p{Script: Mongolian}(Short:\p{Sc=Mong}) (168:U+1800..1801,U+1804,U+1806..1819,U+1820..1878,U+1880..18AA,U+11660..1166C) 👑\p{Script: Mro}·\p{Script_Extensions=Mro}(Short:\p{Sc=Mro},\p{Mro}) (43) — canonical form\p{Script: Mroo}aka\p{Script=Mro}(=\p{Script_Extensions=Mro}) (43)\p{Script: Mtei}aka\p{Script=Meetei_Mayek}(=\p{Script_Extensions=Meetei_Mayek}) (79)\p{Script: Mult}aka\p{Script=Multani}(38) — canonical form\p{Script: Multani}(Short:\p{Sc=Mult}) (38:U+11280..11286,U+11288,U+1128A..1128D,U+1128F..1129D,U+1129F..112A9)\p{Script: Myanmar}(Short:\p{Sc=Mymr}) (243:U+1000..109F,U+A9E0..A9FE,U+AA60..AA7F,U+116D0..116E3) — canonical form\p{Script: Mymr}aka\p{Script=Myanmar}(243) 💖\p{Script: Nabataean}·\p{Script_Extensions=Nabataean}(Short:\p{Sc=Nbat},\p{Nbat}) (40)\p{Script: Nag_Mundari}·\p{Script_Extensions=Nag_Mundari}(Short:\p{Sc=Nagm},\p{Nagm}) (42) — canonical form\p{Script: Nagm}aka\p{Script=Nag_Mundari}(=\p{Script_Extensions=Nag_Mundari}) (42)\p{Script: Nand}aka\p{Script=Nandinagari}(65) — canonical form\p{Script: Nandinagari}(Short:\p{Sc=Nand}) (65:U+119A0..119A7,U+119AA..119D7,U+119DA..119E4)\p{Script: Narb}aka\p{Script=Old_North_Arabian}(=\p{Script_Extensions=Old_North_Arabian}) (32)\p{Script: Nbat}aka\p{Script=Nabataean}(=\p{Script_Extensions=Nabataean}) (40)\p{Script: New_Tai_Lue}·\p{Script_Extensions=New_Tai_Lue}(Short:\p{Sc=Talu},\p{Talu}) (83) 🌈\p{Script: Newa}·\p{Script_Extensions=Newa}(Short:\p{Sc=Newa},\p{Newa}) (97)\p{Script: Nko}(Short:\p{Sc=Nko}) (62:U+07C0..07FA,U+07FD..07FF) — canonical form\p{Script: Nkoo}aka\p{Script=Nko}(62)\p{Script: Nshu}aka\p{Script=Nushu}(=\p{Script_Extensions=Nushu}) (397)\p{Script: Nushu}·\p{Script_Extensions=Nushu}(Short:\p{Sc=Nshu},\p{Nshu}) (397) 🎀\p{Script: Nyiakeng_Puachue_Hmong}·\p{Script_Extensions=Nyiakeng_Puachue_Hmong}(Short:\p{Sc=Hmnp},\p{Hmnp}) (71)\p{Script: Ogam}aka\p{Script=Ogham}(=\p{Script_Extensions=Ogham}) (29) — canonical form\p{Script: Ogham}·\p{Script_Extensions=Ogham}(Short:\p{Sc=Ogam},\p{Ogam}) (29)\p{Script: Ol_Chiki}·\p{Script_Extensions=Ol_Chiki}(Short:\p{Sc=Olck},\p{Olck}) (48)\p{Script: Ol_Onal}(Short:\p{Sc=Onao}) (44:U+1E5D0..1E5FA,U+1E5FF) — canonical form\p{Script: Olck}aka\p{Script=Ol_Chiki}(=\p{Script_Extensions=Ol_Chiki}) (48) 💜\p{Script: Old_Hungarian}(Short:\p{Sc=Hung}) (108:U+10C80..10CB2,U+10CC0..10CF2,U+10CFA..10CFF)\p{Script: Old_Italic}·\p{Script_Extensions=Old_Italic}(Short:\p{Sc=Ital},\p{Ital}) (39)\p{Script: Old_North_Arabian}·\p{Script_Extensions=Old_North_Arabian}(Short:\p{Sc=Narb},\p{Narb}) (32)\p{Script: Old_Permic}(Short:\p{Sc=Perm}) (43:U+10350..1037A)\p{Script: Old_Persian}·\p{Script_Extensions=Old_Persian}(Short:\p{Sc=Xpeo},\p{Xpeo}) (50)\p{Script: Old_Sogdian}·\p{Script_Extensions=Old_Sogdian}(Short:\p{Sc=Sogo},\p{Sogo}) (40)\p{Script: Old_South_Arabian}·\p{Script_Extensions=Old_South_Arabian}(Short:\p{Sc=Sarb},\p{Sarb}) (32)\p{Script: Old_Turkic}(Short:\p{Sc=Orkh}) (73:U+10C00..10C48)\p{Script: Old_Uyghur}(Short:\p{Sc=Ougr}) (26:U+10F70..10F89) 🔥\p{Script: Onao}aka\p{Script=Ol_Onal}(44)\p{Script: Oriya}(Short:\p{Sc=Orya}) (91:U+0B01..0B03,U+0B05..0B0C,U+0B0F..0B10,U+0B13..0B28,U+0B2A..0B30,U+0B32..0B33...) — canonical form\p{Script: Orkh}aka\p{Script=Old_Turkic}(73)\p{Script: Orya}aka\p{Script=Oriya}(91)\p{Script: Osage}(Short:\p{Sc=Osge}) (72:U+104B0..104D3,U+104D8..104FB) — canonical form\p{Script: Osge}aka\p{Script=Osage}(72) 🌸\p{Script: Osma}aka\p{Script=Osmanya}(=\p{Script_Extensions=Osmanya}) (40) — canonical form\p{Script: Osmanya}·\p{Script_Extensions=Osmanya}(Short:\p{Sc=Osma},\p{Osma}) (40)\p{Script: Ougr}aka\p{Script=Old_Uyghur}(26)\p{Script: Pahawh_Hmong}·\p{Script_Extensions=Pahawh_Hmong}(Short:\p{Sc=Hmng},\p{Hmng}) (127)\p{Script: Palm}aka\p{Script=Palmyrene}(=\p{Script_Extensions=Palmyrene}) (32) — canonical form\p{Script: Palmyrene}·\p{Script_Extensions=Palmyrene}(Short:\p{Sc=Palm},\p{Palm}) (32)\p{Script: Pau_Cin_Hau}·\p{Script_Extensions=Pau_Cin_Hau}(Short:\p{Sc=Pauc},\p{Pauc}) (57) — canonical form\p{Script: Pauc}aka\p{Script=Pau_Cin_Hau}(=\p{Script_Extensions=Pau_Cin_Hau}) (57)\p{Script: Perm}aka\p{Script=Old_Permic}(43) 🫶\p{Script: Phag}aka\p{Script=Phags_Pa}(56) — canonical form\p{Script: Phags_Pa}(Short:\p{Sc=Phag}) (56:U+A840..A877)\p{Script: Phli}aka\p{Script=Inscriptional_Pahlavi}(=\p{Script_Extensions=Inscriptional_Pahlavi}) (27)\p{Script: Phlp}aka\p{Script=Psalter_Pahlavi}(29)\p{Script: Phnx}aka\p{Script=Phoenician}(=\p{Script_Extensions=Phoenician}) (29) — canonical form\p{Script: Phoenician}·\p{Script_Extensions=Phoenician}(Short:\p{Sc=Phnx},\p{Phnx}) (29)\p{Script: Plrd}aka\p{Script=Miao}(=\p{Script_Extensions=Miao}) (149)\p{Script: Prti}aka\p{Script=Inscriptional_Parthian}(=\p{Script_Extensions=Inscriptional_Parthian}) (30) ✨\p{Script: Psalter_Pahlavi}(Short:\p{Sc=Phlp}) (29:U+10B80..10B91,U+10B99..10B9C,U+10BA9..10BAF)\p{Script: Qaac}aka\p{Script=Coptic}(137)\p{Script: Qaai}aka\p{Script=Inherited}(657) 💀\p{Script: Rejang}·\p{Script_Extensions=Rejang}(Short:\p{Sc=Rjng},\p{Rjng}) (37) — canonical form\p{Script: Rjng}aka\p{Script=Rejang}(=\p{Script_Extensions=Rejang}) (37)\p{Script: Rohg}aka\p{Script=Hanifi_Rohingya}(50)\p{Script: Runic}(Short:\p{Sc=Runr}) (86:U+16A0..16EA,U+16EE..16F8) — canonical form\p{Script: Runr}aka\p{Script=Runic}(86) 🦋\p{Script: Samaritan}(Short:\p{Sc=Samr}) (61:U+0800..082D,U+0830..083E) — canonical form\p{Script: Samr}aka\p{Script=Samaritan}(61)\p{Script: Sarb}aka\p{Script=Old_South_Arabian}(=\p{Script_Extensions=Old_South_Arabian}) (32)\p{Script: Saur}aka\p{Script=Saurashtra}(=\p{Script_Extensions=Saurashtra}) (82) — canonical form\p{Script: Saurashtra}·\p{Script_Extensions=Saurashtra}(Short:\p{Sc=Saur},\p{Saur}) (82)\p{Script: Sgnw}aka\p{Script=SignWriting}(=\p{Script_Extensions=SignWriting}) (672)\p{Script: Sharada}(Short:\p{Sc=Shrd}) (96:U+11180..111DF) 🌟\p{Script: Shavian}(Short:\p{Sc=Shaw}) (48:U+10450..1047F) — canonical form\p{Script: Shaw}aka\p{Script=Shavian}(48)
okay we're still deep in the big script list and it's giving ✨encyclopedia✨ — here come the S's, the T's, and then the \p{Script_Extensions: ...} girlies start pulling up. every single one of these is a real property name you can drop into \p{}, bestie. let's go 💅
\p{Script: Shrd}→\p{Script=Sharada}— (96) ✨\p{Script: Sidd}→\p{Script=Siddham}(=\p{Script_Extensions=Siddham}) — (92) 💫\p{Script: Siddham}→\p{Script_Extensions=Siddham}, short:\p{Sc=Sidd},\p{Sidd}— (92) 💫\p{Script: SignWriting}→\p{Script_Extensions=SignWriting}, short:\p{Sc=Sgnw},\p{Sgnw}— (672) 🫶\p{Script: Sind}→\p{Script=Khudawadi}— (69) 🌸\p{Script: Sinh}→\p{Script=Sinhala}— (111) 🦋\p{Script: Sinhala}— short:\p{Sc=Sinh}— (111:U+0D81..0D83,U+0D85..0D96,U+0D9A..0DB1,U+0DB3..0DBB,U+0DBD,U+0DC0..0DC6...) 🦋\p{Script: Sogd}→\p{Script=Sogdian}— (42) ✨\p{Script: Sogdian}— short:\p{Sc=Sogd}— (42:U+10F30..10F59) ✨\p{Script: Sogo}→\p{Script=Old_Sogdian}(=\p{Script_Extensions=Old_Sogdian}) — (40) 💖\p{Script: Sora}→\p{Script=Sora_Sompeng}(=\p{Script_Extensions=Sora_Sompeng}) — (35) 🎀\p{Script: Sora_Sompeng}→\p{Script_Extensions=Sora_Sompeng}, short:\p{Sc=Sora},\p{Sora}— (35) 🎀\p{Script: Soyo}→\p{Script=Soyombo}(=\p{Script_Extensions=Soyombo}) — (83) 🌈\p{Script: Soyombo}→\p{Script_Extensions=Soyombo}, short:\p{Sc=Soyo},\p{Soyo}— (83) 🌈\p{Script: Sund}→\p{Script=Sundanese}(=\p{Script_Extensions=Sundanese}) — (72) 💜\p{Script: Sundanese}→\p{Script_Extensions=Sundanese}, short:\p{Sc=Sund},\p{Sund}— (72) 💜\p{Script: Sunu}→\p{Script=Sunuwar}— (44) 🌸\p{Script: Sunuwar}— short:\p{Sc=Sunu}— (44:U+11BC0..11BE1,U+11BF0..11BF9) 🌸\p{Script: Sylo}→\p{Script=Syloti_Nagri}— (45) ✨\p{Script: Syloti_Nagri}— short:\p{Sc=Sylo}— (45:U+A800..A82C) ✨\p{Script: Syrc}→\p{Script=Syriac}— (88) 💫\p{Script: Syriac}— short:\p{Sc=Syrc}— (88:U+0700..070D,U+070F..074A,U+074D..074F,U+0860..086A) 💫
and now the T's, where the abbreviations get chaotic fr fr 😭
\p{Script: Tagalog}— short:\p{Sc=Tglg}— (23:U+1700..1715,U+171F) 🦋\p{Script: Tagb}→\p{Script=Tagbanwa}— (18) 🌸\p{Script: Tagbanwa}— short:\p{Sc=Tagb}— (18:U+1760..176C,U+176E..1770,U+1772..1773) 🌸\p{Script: Tai_Le}— short:\p{Sc=Tale}— (35:U+1950..196D,U+1970..1974) 🎀\p{Script: Tai_Tham}→\p{Script_Extensions=Tai_Tham}, short:\p{Sc=Lana},\p{Lana}— (127) ✨\p{Script: Tai_Viet}→\p{Script_Extensions=Tai_Viet}, short:\p{Sc=Tavt},\p{Tavt}— (72) 💖\p{Script: Takr}→\p{Script=Takri}— (68) 🌈\p{Script: Takri}— short:\p{Sc=Takr}— (68:U+11680..116B9,U+116C0..116C9) 🌈\p{Script: Tale}→\p{Script=Tai_Le}— (35) 🎀\p{Script: Talu}→\p{Script=New_Tai_Lue}(=\p{Script_Extensions=New_Tai_Lue}) — (83) 💜\p{Script: Tamil}— short:\p{Sc=Taml}— (123:U+0B82..0B83,U+0B85..0B8A,U+0B8E..0B90,U+0B92..0B95,U+0B99..0B9A,U+0B9C...) 👑\p{Script: Taml}→\p{Script=Tamil}— (123) 👑\p{Script: Tang}→\p{Script=Tangut}— (6914) 😭\p{Script: Tangsa}→\p{Script_Extensions=Tangsa}, short:\p{Sc=Tnsa},\p{Tnsa}— (89) ✨\p{Script: Tangut}— short:\p{Sc=Tang}— (6914:U+16FE0,U+17000..187F7,U+18800..18AFF,U+18D00..18D08) 😭\p{Script: Tavt}→\p{Script=Tai_Viet}(=\p{Script_Extensions=Tai_Viet}) — (72) 💖\p{Script: Telu}→\p{Script=Telugu}— (100) 💫\p{Script: Telugu}— short:\p{Sc=Telu}— (100:U+0C00..0C0C,U+0C0E..0C10,U+0C12..0C28,U+0C2A..0C39,U+0C3C..0C44,U+0C46..0C48...) 💫\p{Script: Tfng}→\p{Script=Tifinagh}— (59) 🦋\p{Script: Tglg}→\p{Script=Tagalog}— (23) 🦋\p{Script: Thaa}→\p{Script=Thaana}— (50) 🌸\p{Script: Thaana}— short:\p{Sc=Thaa}— (50:U+0780..07B1) 🌸\p{Script: Thai}— short:\p{Sc=Thai}— (86:U+0E01..0E3A,U+0E40..0E5B) 🎀\p{Script: Tibetan}— short:\p{Sc=Tibt}— (207:U+0F00..0F47,U+0F49..0F6C,U+0F71..0F97,U+0F99..0FBC,U+0FBE..0FCC,U+0FCE..0FD4...) 🏔️\p{Script: Tibt}→\p{Script=Tibetan}— (207) 🏔️\p{Script: Tifinagh}— short:\p{Sc=Tfng}— (59:U+2D30..2D67,U+2D6F..2D70,U+2D7F) 🦋\p{Script: Tirh}→\p{Script=Tirhuta}— (82) ✨\p{Script: Tirhuta}— short:\p{Sc=Tirh}— (82:U+11480..114C7,U+114D0..114D9) ✨\p{Script: Tnsa}→\p{Script=Tangsa}(=\p{Script_Extensions=Tangsa}) — (89) 🌈\p{Script: Todhri}— short:\p{Sc=Todr}— (52:U+105C0..105F3) 💜\p{Script: Todr}→\p{Script=Todhri}— (52) 💜\p{Script: Toto}— short:\p{Sc=Toto}— (31:U+1E290..1E2AE) 🍓\p{Script: Tulu_Tigalari}— short:\p{Sc=Tutg}— (80:U+11380..11389,U+1138B,U+1138E,U+11390..113B5,U+113B7..113C0,U+113C2...) 🌸\p{Script: Tutg}→\p{Script=Tulu_Tigalari}— (80) 🌸
U time, U time 🫶
\p{Script: Ugar}→\p{Script=Ugaritic}(=\p{Script_Extensions=Ugaritic}) — (31) ✨\p{Script: Ugaritic}→\p{Script_Extensions=Ugaritic}, short:\p{Sc=Ugar},\p{Ugar}— (31) ✨\p{Script: Unknown}→\p{Script_Extensions=Unknown}, short:\p{Sc=Zzzz},\p{Zzzz}— (959_049 plus all above-Unicode code points) 💀
okay that 959_049 with the underscore?? the manpage said what it said and we're keeping it exactly, no editing bestie 💅
\p{Script: Vai}→\p{Script_Extensions=Vai}, short:\p{Sc=Vai},\p{Vai}— (300) 🎀\p{Script: Vaii}→\p{Script=Vai}(=\p{Script_Extensions=Vai}) — (300) 🎀\p{Script: Vith}→\p{Script=Vithkuqi}(=\p{Script_Extensions=Vithkuqi}) — (70) 🌈\p{Script: Vithkuqi}→\p{Script_Extensions=Vithkuqi}, short:\p{Sc=Vith},\p{Vith}— (70) 🌈\p{Script: Wancho}→\p{Script_Extensions=Wancho}, short:\p{Sc=Wcho},\p{Wcho}— (59) 💖\p{Script: Wara}→\p{Script=Warang_Citi}(=\p{Script_Extensions=Warang_Citi}) — (84) ✨\p{Script: Warang_Citi}→\p{Script_Extensions=Warang_Citi}, short:\p{Sc=Wara},\p{Wara}— (84) ✨\p{Script: Wcho}→\p{Script=Wancho}(=\p{Script_Extensions=Wancho}) — (59) 💖\p{Script: Xpeo}→\p{Script=Old_Persian}(=\p{Script_Extensions=Old_Persian}) — (50) 👑\p{Script: Xsux}→\p{Script=Cuneiform}(=\p{Script_Extensions=Cuneiform}) — (1234) 🔥
Xsux for Cuneiform is lowkey the most unhinged abbreviation-to-name jump in this whole list and I respect it so much 😭
\p{Script: Yezi}→\p{Script=Yezidi}— (47) 🌸\p{Script: Yezidi}— short:\p{Sc=Yezi}— (47:U+10E80..10EA9,U+10EAB..10EAD,U+10EB0..10EB1) 🌸\p{Script: Yi}— short:\p{Sc=Yi}— (1220:U+A000..A48C,U+A490..A4C6) 💫\p{Script: Yiii}→\p{Script=Yi}— (1220) 💫\p{Script: Zanabazar_Square}→\p{Script_Extensions=Zanabazar_Square}, short:\p{Sc=Zanb},\p{Zanb}— (72) 🎀\p{Script: Zanb}→\p{Script=Zanabazar_Square}(=\p{Script_Extensions=Zanabazar_Square}) — (72) 🎀\p{Script: Zinh}→\p{Script=Inherited}— (657) 🌈\p{Script: Zyyy}→\p{Script=Common}— (9053) 👑
Zyyy= Common andZinh= Inherited, and yes those four-letter codes are giving absolute chaos but they're correct, no notes 💅
\p{Script: Zzzz}→\p{Script=Unknown}(=\p{Script_Extensions=Unknown}) — (959_049 plus all above-Unicode code points) 💀
and now, entering stage left: the \p{Script_Extensions: block 🌈 she's basically the same cast but with the extension-flavoured aliases, and the short forms here use Scx instead of Sc — that's the whole vibe check, iykyk ✨
\p{Script_Extensions: Adlam}— short:\p{Scx=Adlm},\p{Adlm}— (92:U+061F,U+0640,U+204F,U+2E41,U+1E900..1E94B,U+1E950..1E959...) 💖\p{Script_Extensions: Adlm}→\p{Script_Extensions=Adlam}— (92) 💖\p{Script_Extensions: Aghb}→\p{Script_Extensions=Caucasian_Albanian}— (56) ✨\p{Script_Extensions: Ahom}— short:\p{Scx=Ahom},\p{Ahom}— (65:U+11700..1171A,U+1171D..1172B,U+11730..11746) 🎀\p{Script_Extensions: Anatolian_Hieroglyphs}— short:\p{Scx=Hluw},\p{Hluw}— (583:U+14400..14646) 👑\p{Script_Extensions: Arab}→\p{Script_Extensions=Arabic}— (1421) 💫\p{Script_Extensions: Arabic}— short:\p{Scx=Arab},\p{Arab}— (1421:U+0600..0604,U+0606..06DC,U+06DE..06FF,U+0750..077F,U+0870..088E,U+0890..0891...) 💫\p{Script_Extensions: Armenian}— short:\p{Scx=Armn},\p{Armn}— (97:U+0308,U+0531..0556,U+0559..058A,U+058D..058F,U+FB13..FB17) 🌸\p{Script_Extensions: Armi}→\p{Script_Extensions=Imperial_Aramaic}— (31) ✨\p{Script_Extensions: Armn}→\p{Script_Extensions=Armenian}— (97) 🌸\p{Script_Extensions: Avestan}— short:\p{Scx=Avst},\p{Avst}— (64:[\xb7],U+2E30..2E31,U+10B00..10B35,U+10B39..10B3F) 🌈\p{Script_Extensions: Avst}→\p{Script_Extensions=Avestan}— (64) 🌈\p{Script_Extensions: Bali}→\p{Script_Extensions=Balinese}— (127) 💜\p{Script_Extensions: Balinese}— short:\p{Scx=Bali},\p{Bali}— (127:U+1B00..1B4C,U+1B4E..1B7F) 💜\p{Script_Extensions: Bamu}→\p{Script_Extensions=Bamum}— (657) 🍓\p{Script_Extensions: Bamum}— short:\p{Scx=Bamu},\p{Bamu}— (657:U+A6A0..A6F7,U+16800..16A38) 🍓\p{Script_Extensions: Bass}→\p{Script_Extensions=Bassa_Vah}— (36) 🎀\p{Script_Extensions: Bassa_Vah}— short:\p{Scx=Bass},\p{Bass}— (36:U+16AD0..16AED,U+16AF0..16AF5) 🎀\p{Script_Extensions: Batak}— short:\p{Scx=Batk},\p{Batk}— (56:U+1BC0..1BF3,U+1BFC..1BFF) ✨\p{Script_Extensions: Batk}→\p{Script_Extensions=Batak}— (56) ✨\p{Script_Extensions: Beng}→\p{Script_Extensions=Bengali}— (114) 💫\p{Script_Extensions: Bengali}— short:\p{Scx=Beng},\p{Beng}
okay bestie we are literally mid-entry rn 😭 the last script's code point list was so long it wrapped its whole self down into this part, so here's the rest of it, no context, just vibes:
- (114:
U+02BC,U+0951..0952,U+0964..0965,U+0980..0983,U+0985..098C,U+098F..0990...)
and we're BACK in the Script_Extensions list 💅 reminder that these come in little pairs — short alias first, then the full name — and the number in the parens is how many code points belong to it. buckle up 🦋
\p{Script_Extensions: Bhaiksuki}(Short:\p{Scx=Bhks},\p{Bhks}) — 97 of them:U+11C00..11C08,U+11C0A..11C36,U+11C38..11C45,U+11C50..11C6C— full government name first, queen behavior 👑\p{Script_Extensions: Bhks}\p{Script_Extensions=Bhaiksuki}— (97) — same girl, two more outfits. and yes, the second one uses=, not:. that's just how she's written ✨\p{Script_Extensions: Bopo}\p{Script_Extensions=Bopomofo}— (122) — say it with me: Bopomofo. iconic name, no notes 🎀\p{Script_Extensions: Bopomofo}(Short:\p{Scx=Bopo},\p{Bopo}) — (122:U+02C7,U+02C9..02CB,U+02D9,U+02EA..02EB,U+3001..3003,U+3008..3011...)\p{Script_Extensions: Brah}\p{Script_Extensions=Brahmi}— (115)\p{Script_Extensions: Brahmi}(Short:\p{Scx=Brah},\p{Brah}) — (115:U+11000..1104D,U+11052..11075,U+1107F) — tidy little list, we love a range that just ends 💖\p{Script_Extensions: Brai}\p{Script_Extensions=Braille}— (256)\p{Script_Extensions: Braille}(Short:\p{Scx=Brai},\p{Brai}) — (256:U+2800..28FF) — 256, one perfect contiguous block, she's giving clean ✨\p{Script_Extensions: Bugi}\p{Script_Extensions=Buginese}— (31)\p{Script_Extensions: Buginese}(Short:\p{Scx=Bugi},\p{Bugi}) — (31:U+1A00..1A1B,U+1A1E..1A1F,U+A9CF) — one lone code point way off atU+A9CFdoing her own thing 💅\p{Script_Extensions: Buhd}\p{Script_Extensions=Buhid}— (22)\p{Script_Extensions: Buhid}(Short:\p{Scx=Buhd},\p{Buhd}) — (22:U+1735..1736,U+1740..1753)\p{Script_Extensions: Cakm}\p{Script_Extensions=Chakma}— (91)\p{Script_Extensions: Canadian_Aboriginal}(Short:\p{Scx=Cans},\p{Cans}) — (726:U+1400..167F,U+18B0..18F5,U+11AB0..11ABF) — 726, she's not playing around 🫶\p{Script_Extensions: Cans}\p{Script_Extensions=Canadian_Aboriginal}— (726)\p{Script_Extensions: Cari}\p{Script_Extensions=Carian}— (53)\p{Script_Extensions: Carian}(Short:\p{Scx=Cari},\p{Cari}) — (53:[\xb7],U+205A,U+205D,U+2E31,U+102A0..102D0) — okay[\xb7]in brackets, that's a set containing just the one char, cute 🎀\p{Script_Extensions: Caucasian_Albanian}(Short:\p{Scx=Aghb},\p{Aghb}) — (56:U+0304,U+0331,U+035E,U+10530..10563,U+1056F) — long name, short aliasAghb, and she did NOT abbreviate for the property name, respect 🫡\p{Script_Extensions: Chakma}(Short:\p{Scx=Cakm},\p{Cakm}) — (91:U+09E6..09EF,U+1040..1049,U+11100..11134,U+11136..11147)\p{Script_Extensions: Cham}(Short:\p{Scx=Cham},\p{Cham}) — (83:U+AA00..AA36,U+AA40..AA4D,U+AA50..AA59,U+AA5C..AA5F) — four ranges, all lined up, ate 💅\p{Script_Extensions: Cher}\p{Script_Extensions=Cherokee}— (182)\p{Script_Extensions: Cherokee}(Short:\p{Scx=Cher},\p{Cher}) — (182:U+0300..0302,U+0304,U+030B..030C,U+0323..0324,U+0330..0331,U+13A0..13F5...)\p{Script_Extensions: Chorasmian}(Short:\p{Scx=Chrs},\p{Chrs}) — (28:U+10FB0..10FCB)\p{Script_Extensions: Chrs}\p{Script_Extensions=Chorasmian}— (28) — that'sChrsbtw, notChr, don't get it twisted 😭\p{Script_Extensions: Common}(Short:\p{Scx=Zyyy},\p{Zyyy}) — 8585 of them and this is THE big one, she's the main character of this whole list, no cap:
[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@\[\\\]\^_`\{\|\}~\x7f-\xa9\xab-\xb6\xb8-\xb9\xbb-\xbf\xd7\xf7], U+02B9..02BB, U+02BD..02C6, U+02C8, U+02CC, U+02CE..02D6 ...
okay that's a LOT of backslash escaping, bestie is fighting for her life in there 😭 the Zyyy short form is real and yes it's four letters of pure chaos.
\p{Script_Extensions: Copt}\p{Script_Extensions=Coptic}— (173)\p{Script_Extensions: Coptic}(Short:\p{Scx=Copt},\p{Copt}) — (173:[\xb7],U+0300,U+0304..0305,U+0307,U+0374..0375,U+03E2..03EF...)\p{Script_Extensions: Cpmn}\p{Script_Extensions=Cypro_Minoan}— (101)\p{Script_Extensions: Cprt}\p{Script_Extensions=Cypriot}— (112)\p{Script_Extensions: Cuneiform}(Short:\p{Scx=Xsux},\p{Xsux}) — (1234:U+12000..12399,U+12400..1246E,U+12470..12474,U+12480..12543) — 1234 code points, and the short name isXsuxwhich is just delightful to say out loud 🫶\p{Script_Extensions: Cypriot}(Short:\p{Scx=Cprt},\p{Cprt}) — (112:U+10100..10102,U+10107..10133,U+10137..1013F,U+10800..10805,U+10808,U+1080A..10835...)\p{Script_Extensions: Cypro_Minoan}(Short:\p{Scx=Cpmn},\p{Cpmn}) — (101:U+10100..10101,U+12F90..12FF2) — she sharesU+10100..10101with Cypriot and honestly good for them, collaborative queens ✨\p{Script_Extensions: Cyrillic}(Short:\p{Scx=Cyrl},\p{Cyrl}) — (521:U+02BC,U+0300..0302,U+0304,U+0306,U+0308,U+030B...)\p{Script_Extensions: Cyrl}\p{Script_Extensions=Cyrillic}— (521)\p{Script_Extensions: Deseret}(Short:\p{Scx=Dsrt},\p{Dsrt}) — (80:U+10400..1044F) — one clean block, 80 chars, she's giving minimalism 💅\p{Script_Extensions: Deva}\p{Script_Extensions=Devanagari}— (221)\p{Script_Extensions: Devanagari}(Short:\p{Scx=Deva},\p{Deva}) — (221:U+02BC,U+0900..0952,U+0955..097F,U+1CD0..1CF6,U+1CF8..1CF9,U+20F0...)\p{Script_Extensions: Diak}\p{Script_Extensions=Dives_Akuru}— (72) —DiakforDives_Akuruis lowkey a jump scare if you're not ready for it 😭\p{Script_Extensions: Dives_Akuru}(Short:\p{Scx=Diak},\p{Diak}) — (72:U+11900..11906,U+11909,U+1190C..11913,U+11915..11916,U+11918..11935,U+11937..11938...)\p{Script_Extensions: Dogr}\p{Script_Extensions=Dogra}— (82)\p{Script_Extensions: Dogra}(Short:\p{Scx=Dogr},\p{Dogr}) — (82:U+0964..096F,U+A830..A839,U+11800..1183B)\p{Script_Extensions: Dsrt}\p{Script_Extensions=Deseret}— (80) — Deseret came back for a second lap, we stan a two-parter 💖\p{Script_Extensions: Dupl}\p{Script_Extensions=Duployan}— (154)\p{Script_Extensions: Duployan}(Short:\p{Scx=Dupl},\p{Dupl}) — (154:[\xb7],U+0307..0308,U+030A,U+0323..0324,U+2E3C,U+1BC00..1BC6A...)\p{Script_Extensions: Egyp}\p{Script_Extensions=Egyptian_Hieroglyphs}— (5105) — five thousand plus, she's enormous, we love a big list 🔥\p{Script_Extensions: Egyptian_Hieroglyphs}(Short:\p{Scx=Egyp},\p{Egyp}) — (5105:U+13000..13455,U+13460..143FA) — only two ranges for 5105 code points, that's efficiency 💅\p{Script_Extensions: Elba}\p{Script_Extensions=Elbasan}— (42)\p{Script_Extensions: Elbasan}(Short:\p{Scx=Elba},\p{Elba}) — (42:[\xb7],U+0305,U+10500..10527)\p{Script_Extensions: Elym}\p{Script_Extensions=Elymaic}— (23)\p{Script_Extensions: Elymaic}(Short:\p{Scx=Elym},\p{Elym}) — (23:U+10FE0..10FF6)\p{Script_Extensions: Ethi}\p{Script_Extensions=Ethiopic}— (524)\p{Script_Extensions: Ethiopic}(Short:\p{Scx=Ethi},\p{Ethi}) — (524:U+030E,U+1200..1248,U+124A..124D,U+1250..1256,U+1258,U+125A..125D...) — look at all those little gaps, she's got range (literally) ✨\p{Script_Extensions: Gara}\p{Script_Extensions=Garay}— (72)\p{Script_Extensions: Garay}(Short:\p{Scx=Gara},\p{Gara}) — (72:U+060C,U+061B,U+061F,U+10D40..10D65,U+10D69..10D85,U+10D8E..10D8F) — three lone code points at the front and three ranges at the back, she's a whole sandwich 🥪\p{Script_Extensions: Geor}\p{Script_Extensions=Georgian}— (178)\p{Script_Extensions: Georgian}(Short:\p{Scx=Geor},\p{Geor}) — (178:[\xb7],U+0589,U+10A0..10C5,U+10C7,U+10CD,U+10D0..10FF...)\p{Script_Extensions: Glag}\p{Script_Extensions=Glagolitic}— (144)\p{Script_Extensions: Glagolitic}(Short:\p{Scx=Glag},\p{Glag}) — (144:[\xb7],U+0303,U+0305,U+0484,U+0487,U+0589...)\p{Script_Extensions: Gong}\p{Script_Extensions=Gunjala_Gondi}— (66)\p{Script_Extensions: Gonm}\p{Script_Extensions=Masaram_Gondi}— (77) — okayGongvsGonm, one letter apart, do NOT mix them up bestie I'm begging 🙈\p{Script_Extensions: Goth}\p{Script_Extensions=Gothic}— (32)\p{Script_Extensions: Gothic}(Short:\p{Scx=Goth},\p{Goth}) — (32:[\xb7],U+0304..0305,U+0308,U+0331,U+10330..1034A)\p{Script_Extensions: Gran}\p{Script_Extensions=Grantha}— (116)\p{Script_Extensions: Grantha}(Short:\p{Scx=Gran},\p{Gran}) — (116:U+0951..0952,U+0964..0965,U+0BE6..0BF3,U+1CD0,U+1CD2..1CD3,U+1CF2..1CF4...)\p{Script_Extensions: Greek}(Short:\p{Scx=Grek},\p{Grek}) — (531:[\xb7],U+0300..0301,U+0304,U+0306,U+0308,U+0313...)\p{Script_Extensions: Grek}\p{Script_Extensions=Greek}— (531) — Greek gets her long form first, then her aliases, no cap 💅\p{Script_Extensions: Gujarati}(Short:\p{Scx=Gujr},\p{Gujr}) — (105:U+0951..0952,U+0964..0965,U+0A81..0A83,U+0A85..0A8D,U+0A8F..0A91,U+0A93..0AA8...)\p{Script_Extensions: Gujr}\p{Script_Extensions=Gujarati}— (105)\p{Script_Extensions: Gukh}\p{Script_Extensions=Gurung_Khema}— (59)\p{Script_Extensions: Gunjala_Gondi}(Short:\p{Scx=Gong},\p{Gong}) — (66:[\xb7],U+0964..0965,U+11D60..11D65,U+11D67..11D68,U+11D6A..11D8E,U+11D90..11D91...) — here she is again, this time with her full name up front ✨\p{Script_Extensions: Gurmukhi}(Short:\p{Scx=Guru},\p{Guru}) — (94:U+0951..0952,U+0964..0965,U+0A01..0A03,U+0A05..0A0A,U+0A0F..0A10,U+0A13..0A28...)\p{Script_Extensions: Guru}\p{Script_Extensions=Gurmukhi}— (94)\p{Script_Extensions: Gurung_Khema}(Short:\p{Scx=Gukh},\p{Gukh}) — (59:U+0965,U+16100..16139) — one loneU+0965then a big block, she's got a little intro before the drop 🎀\p{Script_Extensions: Han}(Short:\p{Scx=Han},\p{Han}) — 99_338 of them — okay THIS is the moment. ninety-nine THOUSAND. the underscore in99_338is a separator, not a typo, and she is the biggest thing in this entire list, main character energy fr fr 👑\p{Script_Extensions: Hang}\p{Script_Extensions=Hangul}— (11_775)\p{Script_Extensions: Hangul}(Short:\p{Scx=Hang},\p{Hang}) — (11_775:U+1100..11FF,U+3001..3003,U+3008..3011,U+3013..301F,U+302E..3030,U+3037...) — eleven thousand plus, and again the11_775underscore situation 💅\p{Script_Extensions: Hani}\p{Script_Extensions=Han}— (99_338) —Haniis Han's other short form, in caseHanwasn't enough for you 😭\p{Script_Extensions: Hanifi_Rohingya}(Short:\p{Scx=Rohg}, — and she cuts off right there, bestie, mid-parenthesis, because this part ends 💀
no closing, no goodbye — the list just keeps going and so do we. next part picks up right where Rohg left off, iykyk 🦋
okay so we are STILL deep in the \p{Script_Extensions} zone 🌸 and the alphabetical rollout is not slowing down for anybody, she has <em>endurance</em>, she is that girl. Picking up right where we left off — last time the Rohg line got cut mid-wrap, so it finishes out like this:
\p{Rohg}— 55:U+060C,U+061B,U+061F,U+0640,U+06D4,U+10D00..10D27...
and then it's straight into the H's, no pause, no water break 💅
\p{Script_Extensions: Hano},\p{Script_Extensions=Hanunoo}— 23\p{Script_Extensions: Hanunoo}(short:\p{Scx=Hano},\p{Hano}) — 23:U+1720..1736\p{Script_Extensions: Hatr},\p{Script_Extensions=Hatran}— 26\p{Script_Extensions: Hatran}(short:\p{Scx=Hatr},\p{Hatr}) — 26:U+108E0..108F2,U+108F4..108F5,U+108FB..108FF\p{Script_Extensions: Hebr},\p{Script_Extensions=Hebrew}— 136\p{Script_Extensions: Hebrew}(short:\p{Scx=Hebr},\p{Hebr}) — 136:U+0307..0308,U+0591..05C7,U+05D0..05EA,U+05EF..05F4,U+FB1D..FB36,U+FB38..FB3C...\p{Script_Extensions: Hira},\p{Script_Extensions=Hiragana}— 433\p{Script_Extensions: Hiragana}(short:\p{Scx=Hira},\p{Hira}) — 433:U+3001..3003,U+3008..3011,U+3013..301F,U+3030..3035,U+3037,U+303C..303D...\p{Script_Extensions: Hluw},\p{Script_Extensions=Anatolian_Hieroglyphs}— 583 👑\p{Script_Extensions: Hmng},\p{Script_Extensions=Pahawh_Hmong}— 127\p{Script_Extensions: Hmnp},\p{Script_Extensions=Nyiakeng_Puachue_Hmong}— 71\p{Script_Extensions: Hung},\p{Script_Extensions=Old_Hungarian}— 112\p{Script_Extensions: Imperial_Aramaic}(short:\p{Scx=Armi},\p{Armi}) — 31:U+10840..10855,U+10857..1085F\p{Script_Extensions: Inherited}(short:\p{Scx=Zinh},\p{Zinh}) — 558:U+030F,U+0312,U+0314..031F,U+0321..0322,U+0326..032C,U+032F...\p{Script_Extensions: Inscriptional_Pahlavi}(short:\p{Scx=Phli},\p{Phli}) — 27:U+10B60..10B72,U+10B78..10B7F\p{Script_Extensions: Inscriptional_Parthian}(short:\p{Scx=Prti},\p{Prti}) — 30:U+10B40..10B55,U+10B58..10B5F\p{Script_Extensions: Ital},\p{Script_Extensions=Old_Italic}— 39\p{Script_Extensions: Java},\p{Script_Extensions=Javanese}— 91\p{Script_Extensions: Javanese}(short:\p{Scx=Java},\p{Java}) — 91:U+A980..A9CD,U+A9CF..A9D9,U+A9DE..A9DF\p{Script_Extensions: Kaithi}(short:\p{Scx=Kthi},\p{Kthi}) — 89:U+0966..096F,U+2E31,U+A830..A839,U+11080..110C2,U+110CD\p{Script_Extensions: Kali},\p{Script_Extensions=Kayah_Li}— 48\p{Script_Extensions: Kana},\p{Script_Extensions=Katakana}— 375\p{Script_Extensions: Kannada}(short:\p{Scx=Knda},\p{Knda}) — 107:U+0951..0952,U+0964..0965,U+0C80..0C8C,U+0C8E..0C90,U+0C92..0CA8,U+0CAA..0CB3...\p{Script_Extensions: Katakana}(short:\p{Scx=Kana},\p{Kana}) — 375:U+0305,U+0323,U+3001..3003,U+3008..3011,U+3013..301F,U+3030..3035...\p{Script_Extensions: Kawi}(short:\p{Scx=Kawi},\p{Kawi}) — 87:U+11F00..11F10,U+11F12..11F3A,U+11F3E..11F5A\p{Script_Extensions: Kayah_Li}(short:\p{Scx=Kali},\p{Kali}) — 48:U+A900..A92F\p{Script_Extensions: Khar},\p{Script_Extensions=Kharoshthi}— 68\p{Script_Extensions: Kharoshthi}(short:\p{Scx=Khar},\p{Khar}) — 68:U+10A00..10A03,U+10A05..10A06,U+10A0C..10A13,U+10A15..10A17,U+10A19..10A35,U+10A38..10A3A...\p{Script_Extensions: Khitan_Small_Script}(short:\p{Scx=Kits},\p{Kits}) — 472:U+16FE4,U+18B00..18CD5,U+18CFF\p{Script_Extensions: Khmer}(short:\p{Scx=Khmr},\p{Khmr}) — 146:U+1780..17DD,U+17E0..17E9,U+17F0..17F9,U+19E0..19FF\p{Script_Extensions: Khmr},\p{Script_Extensions=Khmer}— 146\p{Script_Extensions: Khoj},\p{Script_Extensions=Khojki}— 85\p{Script_Extensions: Khojki}(short:\p{Scx=Khoj},\p{Khoj}) — 85:U+0AE6..0AEF,U+A830..A839,U+11200..11211,U+11213..11241\p{Script_Extensions: Khudawadi}(short:\p{Scx=Sind},\p{Sind}) — 81:U+0964..0965,U+A830..A839,U+112B0..112EA,U+112F0..112F9\p{Script_Extensions: Kirat_Rai}(short:\p{Scx=Krai},\p{Krai}) — 58:U+16D40..16D79\p{Script_Extensions: Kits},\p{Script_Extensions=Khitan_Small_Script}— 472\p{Script_Extensions: Knda},\p{Script_Extensions=Kannada}— 107\p{Script_Extensions: Krai},\p{Script_Extensions=Kirat_Rai}— 58\p{Script_Extensions: Kthi},\p{Script_Extensions=Kaithi}— 89\p{Script_Extensions: Lana},\p{Script_Extensions=Tai_Tham}— 127\p{Script_Extensions: Lao}(short:\p{Scx=Lao},\p{Lao}) — 83:U+0E81..0E82,U+0E84,U+0E86..0E8A,U+0E8C..0EA3,U+0EA5,U+0EA7..0EBD...\p{Script_Extensions: Laoo},\p{Script_Extensions=Lao}— 83\p{Script_Extensions: Latin}(short:\p{Scx=Latn},\p{Latn}) — 1555:[A-Za-z\xaa\xb7\xba\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..02B8,U+02BC,U+02C7,U+02C9..02CB,U+02CD...\p{Script_Extensions: Latn},\p{Script_Extensions=Latin}— 1555\p{Script_Extensions: Lepc},\p{Script_Extensions=Lepcha}— 74\p{Script_Extensions: Lepcha}(short:\p{Scx=Lepc},\p{Lepc}) — 74:U+1C00..1C37,U+1C3B..1C49,U+1C4D..1C4F\p{Script_Extensions: Limb},\p{Script_Extensions=Limbu}— 69\p{Script_Extensions: Limbu}(short:\p{Scx=Limb},\p{Limb}) — 69:U+0965,U+1900..191E,U+1920..192B,U+1930..193B,U+1940,U+1944..194F\p{Script_Extensions: Lina},\p{Script_Extensions=Linear_A}— 386\p{Script_Extensions: Linb},\p{Script_Extensions=Linear_B}— 268\p{Script_Extensions: Linear_A}(short:\p{Scx=Lina},\p{Lina}) — 386:U+10107..10133,U+10600..10736,U+10740..10755,U+10760..10767\p{Script_Extensions: Linear_B}(short:\p{Scx=Linb},\p{Linb}) — 268:U+10000..1000B,U+1000D..10026,U+10028..1003A,U+1003C..1003D,U+1003F..1004D,U+10050..1005D...\p{Script_Extensions: Lisu}(short:\p{Scx=Lisu},\p{Lisu}) — 53:U+02BC,U+02CD,U+300A..300B,U+A4D0..A4FF,U+11FB0\p{Script_Extensions: Lyci},\p{Script_Extensions=Lycian}— 30\p{Script_Extensions: Lycian}(short:\p{Scx=Lyci},\p{Lyci}) — 30:U+205A,U+10280..1029C\p{Script_Extensions: Lydi},\p{Script_Extensions=Lydian}— 29\p{Script_Extensions: Lydian}(short:\p{Scx=Lydi},\p{Lydi}) — 29:[\xb7],U+2E31,U+10920..10939,U+1093F\p{Script_Extensions: Mahajani}(short:\p{Scx=Mahj},\p{Mahj}) — 62:[\xb7],U+0964..096F,U+A830..A839,U+11150..11176\p{Script_Extensions: Mahj},\p{Script_Extensions=Mahajani}— 62\p{Script_Extensions: Maka},\p{Script_Extensions=Makasar}— 25\p{Script_Extensions: Makasar}(short:\p{Scx=Maka},\p{Maka}) — 25:U+11EE0..11EF8\p{Script_Extensions: Malayalam}(short:\p{Scx=Mlym},\p{Mlym}) — 127:U+0951..0952,U+0964..0965,U+0D00..0D0C,U+0D0E..0D10,U+0D12..0D44,U+0D46..0D48...\p{Script_Extensions: Mand},\p{Script_Extensions=Mandaic}— 30\p{Script_Extensions: Mandaic}(short:\p{Scx=Mand},\p{Mand}) — 30:U+0640,U+0840..085B,U+085E\p{Script_Extensions: Mani},\p{Script_Extensions=Manichaean}— 52\p{Script_Extensions: Manichaean}(short:\p{Scx=Mani},\p{Mani}) — 52:U+0640,U+10AC0..10AE6,U+10AEB..10AF6\p{Script_Extensions: Marc},\p{Script_Extensions=Marchen}— 68\p{Script_Extensions: Marchen}(short:\p{Scx=Marc},\p{Marc}) — 68:U+11C70..11C8F,U+11C92..11CA7,U+11CA9..11CB6\p{Script_Extensions: Masaram_Gondi}(short:\p{Scx=Gonm},\p{Gonm}) — 77:U+0964..0965,U+11D00..11D06,U+11D08..11D09,U+11D0B..11D36,U+11D3A,U+11D3C..11D3D...\p{Script_Extensions: Medefaidrin}(short:\p{Scx=Medf},\p{Medf}) — 91:U+16E40..16E9A\p{Script_Extensions: Medf},\p{Script_Extensions=Medefaidrin}— 91\p{Script_Extensions: Meetei_Mayek}(short:\p{Scx=Mtei},\p{Mtei}) — 79:U+AAE0..AAF6,U+ABC0..ABED,U+ABF0..ABF9\p{Script_Extensions: Mend},\p{Script_Extensions=Mende_Kikakui}— 213\p{Script_Extensions: Mende_Kikakui}(short:\p{Scx=Mend},\p{Mend}) — 213:U+1E800..1E8C4,U+1E8C7..1E8D6\p{Script_Extensions: Merc},\p{Script_Extensions=Meroitic_Cursive}— 90\p{Script_Extensions: Mero},\p{Script_Extensions=Meroitic_Hieroglyphs}— 33\p{Script_Extensions: Meroitic_Cursive}(short:\p{Scx=Merc},\p{Merc}) — 90:U+109A0..109B7,U+109BC..109CF,U+109D2..109FF\p{Script_Extensions: Meroitic_Hieroglyphs}(short:\p{Scx=Mero},\p{Mero}) — 33:U+205D,U+10980..1099F\p{Script_Extensions: Miao}(short:\p{Scx=Miao},\p{Miao}) — 149:U+16F00..16F4A,U+16F4F..16F87,U+16F8F..16F9F\p{Script_Extensions: Mlym},\p{Script_Extensions=Malayalam}— 127\p{Script_Extensions: Modi}(short:\p{Scx=Modi},\p{Modi}) — 89:
(finishing the code points from the last one we were on: U+A830..A839, U+11600..11644, U+11650..11659 — and now onward bestie, the Mongolian-to-Sundanese stretch 💅)
\p{Script_Extensions: Mong}/\p{Script_Extensions=Mongolian}— 178 code points. Also spelled\p{Script_Extensions: Mongolian}, short names\p{Scx=Mong},\p{Mong}:U+1800..1819,U+1820..1878,U+1880..18AA,U+202F,U+3001..3002,U+3008..300B...\p{Script_Extensions: Mro}— 43 code points. Short names\p{Scx=Mro},\p{Mro}:U+16A40..16A5E,U+16A60..16A69,U+16A6E..16A6F\p{Script_Extensions: Mroo}/\p{Script_Extensions=Mro}— the same 43, just vibing under the four-letter alias 🦋\p{Script_Extensions: Mtei}/\p{Script_Extensions=Meetei_Mayek}— 79 of them ✨\p{Script_Extensions: Mult}/\p{Script_Extensions=Multani}— 48\p{Script_Extensions: Multani}— 48 code points. Short names\p{Scx=Mult},\p{Mult}:U+0A66..0A6F,U+11280..11286,U+11288,U+1128A..1128D,U+1128F..1129D,U+1129F..112A9\p{Script_Extensions: Myanmar}— 244 code points. Short names\p{Scx=Mymr},\p{Mymr}:U+1000..109F,U+A92E,U+A9E0..A9FE,U+AA60..AA7F,U+116D0..116E3\p{Script_Extensions: Mymr}/\p{Script_Extensions=Myanmar}— 244 🫶\p{Script_Extensions: Nabataean}— 40. Short names\p{Scx=Nbat},\p{Nbat}:U+10880..1089E,U+108A7..108AF\p{Script_Extensions: Nag_Mundari}— 42. Short names\p{Scx=Nagm},\p{Nagm}:U+1E4D0..1E4F9\p{Script_Extensions: Nagm}/\p{Script_Extensions=Nag_Mundari}— 42\p{Script_Extensions: Nand}/\p{Script_Extensions=Nandinagari}— 86\p{Script_Extensions: Nandinagari}— 86 code points. Short names\p{Scx=Nand},\p{Nand}:U+0964..0965,U+0CE6..0CEF,U+1CE9,U+1CF2,U+1CFA,U+A830..A835...\p{Script_Extensions: Narb}/\p{Script_Extensions=Old_North_Arabian}— 32\p{Script_Extensions: Nbat}/\p{Script_Extensions=Nabataean}— 40\p{Script_Extensions: New_Tai_Lue}— 83. Short names\p{Scx=Talu},\p{Talu}:U+1980..19AB,U+19B0..19C9,U+19D0..19DA,U+19DE..19DF\p{Script_Extensions: Newa}— 97. Short names\p{Scx=Newa},\p{Newa}:U+11400..1145B,U+1145D..11461\p{Script_Extensions: Nko}— 67. Short names\p{Scx=Nko},\p{Nko}:U+060C,U+061B,U+061F,U+07C0..07FA,U+07FD..07FF,U+FD3E..FD3F\p{Script_Extensions: Nkoo}/\p{Script_Extensions=Nko}— 67\p{Script_Extensions: Nshu}/\p{Script_Extensions=Nushu}— 397 😭 that's a lot of Nushu\p{Script_Extensions: Nushu}— 397. Short names\p{Scx=Nshu},\p{Nshu}:U+16FE1,U+1B170..1B2FB\p{Script_Extensions: Nyiakeng_Puachue_Hmong}— 71. Short names\p{Scx=Hmnp},\p{Hmnp}:U+1E100..1E12C,U+1E130..1E13D,U+1E140..1E149,U+1E14E..1E14F\p{Script_Extensions: Ogam}/\p{Script_Extensions=Ogham}— 29\p{Script_Extensions: Ogham}— 29. Short names\p{Scx=Ogam},\p{Ogam}:U+1680..169C\p{Script_Extensions: Ol_Chiki}— 48. Short names\p{Scx=Olck},\p{Olck}:U+1C50..1C7F\p{Script_Extensions: Ol_Onal}— 46. Short names\p{Scx=Onao},\p{Onao}:U+0964..0965,U+1E5D0..1E5FA,U+1E5FF\p{Script_Extensions: Olck}/\p{Script_Extensions=Ol_Chiki}— 48\p{Script_Extensions: Old_Hungarian}— 112. Short names\p{Scx=Hung},\p{Hung}:U+205A,U+205D,U+2E31,U+2E41,U+10C80..10CB2,U+10CC0..10CF2...\p{Script_Extensions: Old_Italic}— 39. Short names\p{Scx=Ital},\p{Ital}:U+10300..10323,U+1032D..1032F\p{Script_Extensions: Old_North_Arabian}— 32. Short names\p{Scx=Narb},\p{Narb}:U+10A80..10A9F\p{Script_Extensions: Old_Permic}— 50. Short names\p{Scx=Perm},\p{Perm}:[\xb7],U+0300,U+0306..0308,U+0313,U+0483,U+10350..1037A\p{Script_Extensions: Old_Persian}— 50. Short names\p{Scx=Xpeo},\p{Xpeo}:U+103A0..103C3,U+103C8..103D5\p{Script_Extensions: Old_Sogdian}— 40. Short names\p{Scx=Sogo},\p{Sogo}:U+10F00..10F27\p{Script_Extensions: Old_South_Arabian}— 32. Short names\p{Scx=Sarb},\p{Sarb}:U+10A60..10A7F\p{Script_Extensions: Old_Turkic}— 75. Short names\p{Scx=Orkh},\p{Orkh}:U+205A,U+2E30,U+10C00..10C48\p{Script_Extensions: Old_Uyghur}— 28. Short names\p{Scx=Ougr},\p{Ougr}:U+0640,U+10AF2,U+10F70..10F89\p{Script_Extensions: Onao}/\p{Script_Extensions=Ol_Onal}— 46\p{Script_Extensions: Oriya}— 97. Short names\p{Scx=Orya},\p{Orya}:U+0951..0952,U+0964..0965,U+0B01..0B03,U+0B05..0B0C,U+0B0F..0B10,U+0B13..0B28...\p{Script_Extensions: Orkh}/\p{Script_Extensions=Old_Turkic}— 75\p{Script_Extensions: Orya}/\p{Script_Extensions=Oriya}— 97\p{Script_Extensions: Osage}— 76. Short names\p{Scx=Osge},\p{Osge}:U+0301,U+0304,U+030B,U+0358,U+104B0..104D3,U+104D8..104FB\p{Script_Extensions: Osge}/\p{Script_Extensions=Osage}— 76\p{Script_Extensions: Osma}/\p{Script_Extensions=Osmanya}— 40\p{Script_Extensions: Osmanya}— 40. Short names\p{Scx=Osma},\p{Osma}:U+10480..1049D,U+104A0..104A9\p{Script_Extensions: Ougr}/\p{Script_Extensions=Old_Uyghur}— 28\p{Script_Extensions: Pahawh_Hmong}— 127. Short names\p{Scx=Hmng},\p{Hmng}:U+16B00..16B45,U+16B50..16B59,U+16B5B..16B61,U+16B63..16B77,U+16B7D..16B8F\p{Script_Extensions: Palm}/\p{Script_Extensions=Palmyrene}— 32\p{Script_Extensions: Palmyrene}— 32. Short names\p{Scx=Palm},\p{Palm}:U+10860..1087F\p{Script_Extensions: Pau_Cin_Hau}— 57. Short names\p{Scx=Pauc},\p{Pauc}:U+11AC0..11AF8\p{Script_Extensions: Pauc}/\p{Script_Extensions=Pau_Cin_Hau}— 57\p{Script_Extensions: Perm}/\p{Script_Extensions=Old_Permic}— 50\p{Script_Extensions: Phag}/\p{Script_Extensions=Phags_Pa}— 61\p{Script_Extensions: Phags_Pa}— 61. Short names\p{Scx=Phag},\p{Phag}:U+1802..1803,U+1805,U+202F,U+3002,U+A840..A877\p{Script_Extensions: Phli}/\p{Script_Extensions=Inscriptional_Pahlavi}— 27\p{Script_Extensions: Phlp}/\p{Script_Extensions=Psalter_Pahlavi}— 30\p{Script_Extensions: Phnx}/\p{Script_Extensions=Phoenician}— 29\p{Script_Extensions: Phoenician}— 29. Short names\p{Scx=Phnx},\p{Phnx}:U+10900..1091B,U+1091F\p{Script_Extensions: Plrd}/\p{Script_Extensions=Miao}— 149\p{Script_Extensions: Prti}/\p{Script_Extensions=Inscriptional_Parthian}— 30\p{Script_Extensions: Psalter_Pahlavi}— 30. Short names\p{Scx=Phlp},\p{Phlp}:U+0640,U+10B80..10B91,U+10B99..10B9C,U+10BA9..10BAF\p{Script_Extensions: Qaac}/\p{Script_Extensions=Coptic}— 173\p{Script_Extensions: Qaai}/\p{Script_Extensions=Inherited}— 558 👑 the biggest one so far, no cap\p{Script_Extensions: Rejang}— 37. Short names\p{Scx=Rjng},\p{Rjng}:U+A930..A953,U+A95F\p{Script_Extensions: Rjng}/\p{Script_Extensions=Rejang}— 37\p{Script_Extensions: Rohg}/\p{Script_Extensions=Hanifi_Rohingya}— 55\p{Script_Extensions: Runic}— 89. Short names\p{Scx=Runr},\p{Runr}:U+16A0..16F8\p{Script_Extensions: Runr}/\p{Script_Extensions=Runic}— 89\p{Script_Extensions: Samaritan}— 62. Short names\p{Scx=Samr},\p{Samr}:U+0800..082D,U+0830..083E,U+2E31\p{Script_Extensions: Samr}/\p{Script_Extensions=Samaritan}— 62\p{Script_Extensions: Sarb}/\p{Script_Extensions=Old_South_Arabian}— 32\p{Script_Extensions: Saur}/\p{Script_Extensions=Saurashtra}— 82\p{Script_Extensions: Saurashtra}— 82. Short names\p{Scx=Saur},\p{Saur}:U+A880..A8C5,U+A8CE..A8D9\p{Script_Extensions: Sgnw}/\p{Script_Extensions=SignWriting}— 672\p{Script_Extensions: Sharada}— 109. Short names\p{Scx=Shrd},\p{Shrd}:U+0951,U+1CD7,U+1CD9,U+1CDC..1CDD,U+1CE0,U+A830..A835...\p{Script_Extensions: Shavian}— 49. Short names\p{Scx=Shaw},\p{Shaw}:[\xb7],U+10450..1047F\p{Script_Extensions: Shaw}/\p{Script_Extensions=Shavian}— 49\p{Script_Extensions: Shrd}/\p{Script_Extensions=Sharada}— 109\p{Script_Extensions: Sidd}/\p{Script_Extensions=Siddham}— 92\p{Script_Extensions: Siddham}— 92. Short names\p{Scx=Sidd},\p{Sidd}:U+11580..115B5,U+115B8..115DD\p{Script_Extensions: SignWriting}— 672 🤯 Short names\p{Scx=Sgnw},\p{Sgnw}:U+1D800..1DA8B,U+1DA9B..1DA9F,U+1DAA1..1DAAF\p{Script_Extensions: Sind}/\p{Script_Extensions=Khudawadi}— 81\p{Script_Extensions: Sinh}/\p{Script_Extensions=Sinhala}— 114\p{Script_Extensions: Sinhala}— 114. Short names\p{Scx=Sinh},\p{Sinh}:U+0964..0965,U+0D81..0D83,U+0D85..0D96,U+0D9A..0DB1,U+0DB3..0DBB,U+0DBD...\p{Script_Extensions: Sogd}/\p{Script_Extensions=Sogdian}— 43\p{Script_Extensions: Sogdian}— 43. Short names\p{Scx=Sogd},\p{Sogd}:U+0640,U+10F30..10F59\p{Script_Extensions: Sogo}/\p{Script_Extensions=Old_Sogdian}— 40\p{Script_Extensions: Sora}/\p{Script_Extensions=Sora_Sompeng}— 35\p{Script_Extensions: Sora_Sompeng}— 35. Short names\p{Scx=Sora},\p{Sora}:U+110D0..110E8,U+110F0..110F9\p{Script_Extensions: Soyo}/\p{Script_Extensions=Soyombo}— 83\p{Script_Extensions: Soyombo}— 83. Short names\p{Scx=Soyo},\p{Soyo}:U+11A50..11AA2\p{Script_Extensions: Sund}/\p{Script_Extensions=Sundanese}— 72
and yes bestie we're STILL going, the S's are endless, hold my boba 🧋
okay bestie we are still deep in the Script_Extensions alphabet and honestly? it's giving ✨commitment✨ do not scroll, every single line down here is a real \p{...} you can drop straight into a regex 💅
\p{Script_Extensions: Sundanese}(Short:\p{Scx=Sund},\p{Sund}) (72:U+1B80..1BBF,U+1CC0..1CC7)\p{Script_Extensions: Sunu}\p{Script_Extensions=Sunuwar}(51)\p{Script_Extensions: Sunuwar}(Short:\p{Scx=Sunu},\p{Sunu}) (51:U+0300..0301,U+0303,U+030D,U+0310,U+032D,U+0331...)\p{Script_Extensions: Sylo}\p{Script_Extensions=Syloti_Nagri}(57)\p{Script_Extensions: Syloti_Nagri}(Short:\p{Scx=Sylo},\p{Sylo}) (57:U+0964..0965,U+09E6..09EF,U+A800..A82C)\p{Script_Extensions: Syrc}\p{Script_Extensions=Syriac}(119)\p{Script_Extensions: Syriac}(Short:\p{Scx=Syrc},\p{Syrc}) (119:U+0303..0304,U+0307..0308,U+030A,U+0320,U+0323..0325,U+032D..032E...)
bestie every one of these comes in two flavours — the long pretty name and the four-letter short code — and they're the same thing, so pick whichever your fingers vibe with 🦋
\p{Script_Extensions: Tagalog}(Short:\p{Scx=Tglg},\p{Tglg}) (25:U+1700..1715,U+171F,U+1735..1736)\p{Script_Extensions: Tagb}\p{Script_Extensions=Tagbanwa}(20)\p{Script_Extensions: Tagbanwa}(Short:\p{Scx=Tagb},\p{Tagb}) (20:U+1735..1736,U+1760..176C,U+176E..1770,U+1772..1773)\p{Script_Extensions: Tai_Le}(Short:\p{Scx=Tale},\p{Tale}) (50:U+0300..0301,U+0307..0308,U+030C,U+1040..1049,U+1950..196D,U+1970..1974)\p{Script_Extensions: Tai_Tham}(Short:\p{Scx=Lana},\p{Lana}) (127:U+1A20..1A5E,U+1A60..1A7C,U+1A7F..1A89,U+1A90..1A99,U+1AA0..1AAD)\p{Script_Extensions: Tai_Viet}(Short:\p{Scx=Tavt},\p{Tavt}) (72:U+AA80..AAC2,U+AADB..AADF)\p{Script_Extensions: Takr}\p{Script_Extensions=Takri}(80)\p{Script_Extensions: Takri}(Short:\p{Scx=Takr},\p{Takr}) (80:U+0964..0965,U+A830..A839,U+11680..116B9,U+116C0..116C9)\p{Script_Extensions: Tale}\p{Script_Extensions=Tai_Le}(50)\p{Script_Extensions: Talu}\p{Script_Extensions=New_Tai_Lue}(83)\p{Script_Extensions: Tamil}(Short:\p{Scx=Taml},\p{Taml}) (133:U+0951..0952,U+0964..0965,U+0B82..0B83,U+0B85..0B8A,U+0B8E..0B90,U+0B92..0B95...)\p{Script_Extensions: Taml}\p{Script_Extensions=Tamil}(133)\p{Script_Extensions: Tang}\p{Script_Extensions=Tangut}(6931)\p{Script_Extensions: Tangsa}(Short:\p{Scx=Tnsa},\p{Tnsa}) (89:U+16A70..16ABE,U+16AC0..16AC9)\p{Script_Extensions: Tangut}(Short:\p{Scx=Tang},\p{Tang}) (6931:U+2FF0..2FFF,U+31EF,U+16FE0,U+17000..187F7,U+18800..18AFF,U+18D00..18D08)\p{Script_Extensions: Tavt}\p{Script_Extensions=Tai_Viet}(72)\p{Script_Extensions: Telu}\p{Script_Extensions=Telugu}(106)\p{Script_Extensions: Telugu}(Short:\p{Scx=Telu},\p{Telu}) (106:U+0951..0952,U+0964..0965,U+0C00..0C0C,U+0C0E..0C10,U+0C12..0C28,U+0C2A..0C39...)\p{Script_Extensions: Tfng}\p{Script_Extensions=Tifinagh}(63)\p{Script_Extensions: Tglg}\p{Script_Extensions=Tagalog}(25)\p{Script_Extensions: Thaa}\p{Script_Extensions=Thaana}(66)\p{Script_Extensions: Thaana}(Short:\p{Scx=Thaa},\p{Thaa}) (66:U+060C,U+061B..061C,U+061F,U+0660..0669,U+0780..07B1,U+FDF2...)\p{Script_Extensions: Thai}(Short:\p{Scx=Thai},\p{Thai}) (90:U+02BC,U+02D7,U+0303,U+0331,U+0E01..0E3A,U+0E40..0E5B)\p{Script_Extensions: Tibetan}(Short:\p{Scx=Tibt},\p{Tibt}) (211:U+0F00..0F47,U+0F49..0F6C,U+0F71..0F97,U+0F99..0FBC,U+0FBE..0FCC,U+0FCE..0FD4...)\p{Script_Extensions: Tibt}\p{Script_Extensions=Tibetan}(211)\p{Script_Extensions: Tifinagh}(Short:\p{Scx=Tfng},\p{Tfng}) (63:U+0302,U+0304,U+0307,U+0309,U+2D30..2D67,U+2D6F..2D70...)\p{Script_Extensions: Tirh}\p{Script_Extensions=Tirhuta}(97)\p{Script_Extensions: Tirhuta}(Short:\p{Scx=Tirh},\p{Tirh}) (97:U+0951..0952,U+0964..0965,U+1CF2,U+A830..A839,U+11480..114C7,U+114D0..114D9)\p{Script_Extensions: Tnsa}\p{Script_Extensions=Tangsa}(89)\p{Script_Extensions: Todhri}(Short:\p{Scx=Todr},\p{Todr}) (58:U+0301,U+0304,U+0307,U+0311,U+0313,U+035E...)\p{Script_Extensions: Todr}\p{Script_Extensions=Todhri}(58)\p{Script_Extensions: Toto}(Short:\p{Scx=Toto},\p{Toto}) (32:U+02BC,U+1E290..1E2AE)\p{Script_Extensions: Tulu_Tigalari}(Short:\p{Scx=Tutg},\p{Tutg}) (99:U+0CE6..0CEF,U+1CF2,U+1CF4,U+A830..A835,U+A8F1,U+11380..11389...)\p{Script_Extensions: Tutg}\p{Script_Extensions=Tulu_Tigalari}(99)\p{Script_Extensions: Ugar}\p{Script_Extensions=Ugaritic}(31)\p{Script_Extensions: Ugaritic}(Short:\p{Scx=Ugar},\p{Ugar}) (31:U+10380..1039D,U+1039F)
not the Unknown one being absolutely enormous 😭 it's the "we literally do not know what this is" bucket and it's eating everyone alive:
\p{Script_Extensions: Unknown}(Short:\p{Scx=Zzzz},\p{Zzzz}) (959_049 plus all above-Unicode code points:U+0378..0379,U+0380..0383,U+038B,U+038D,U+03A2,U+0530...)\p{Script_Extensions: Vai}(Short:\p{Scx=Vai},\p{Vai}) (300:U+A500..A62B)\p{Script_Extensions: Vaii}\p{Script_Extensions=Vai}(300)\p{Script_Extensions: Vith}\p{Script_Extensions=Vithkuqi}(70)\p{Script_Extensions: Vithkuqi}(Short:\p{Scx=Vith},\p{Vith}) (70:U+10570..1057A,U+1057C..1058A,U+1058C..10592,U+10594..10595,U+10597..105A1,U+105A3..105B1...)\p{Script_Extensions: Wancho}(Short:\p{Scx=Wcho},\p{Wcho}) (59:U+1E2C0..1E2F9,U+1E2FF)\p{Script_Extensions: Wara}\p{Script_Extensions=Warang_Citi}(84)\p{Script_Extensions: Warang_Citi}(Short:\p{Scx=Wara},\p{Wara}) (84:U+118A0..118F2,U+118FF)\p{Script_Extensions: Wcho}\p{Script_Extensions=Wancho}(59)\p{Script_Extensions: Xpeo}\p{Script_Extensions=Old_Persian}(50)\p{Script_Extensions: Xsux}\p{Script_Extensions=Cuneiform}(1234)\p{Script_Extensions: Yezi}\p{Script_Extensions=Yezidi}(60)\p{Script_Extensions: Yezidi}(Short:\p{Scx=Yezi},\p{Yezi}) (60:U+060C,U+061B,U+061F,U+0660..0669,U+10E80..10EA9,U+10EAB..10EAD...)\p{Script_Extensions: Yi}(Short:\p{Scx=Yi},\p{Yi}) (1246:U+3001..3002,U+3008..3011,U+3014..301B,U+30FB,U+A000..A48C,U+A490..A4C6...)\p{Script_Extensions: Yiii}\p{Script_Extensions=Yi}(1246)\p{Script_Extensions: Zanabazar_Square}(Short:\p{Scx=Zanb},\p{Zanb}) (72:U+11A00..11A47)\p{Script_Extensions: Zanb}\p{Script_Extensions=Zanabazar_Square}(72)\p{Script_Extensions: Zinh}\p{Script_Extensions=Inherited}(558)\p{Script_Extensions: Zyyy}\p{Script_Extensions=Common}(8585)\p{Script_Extensions: Zzzz}\p{Script_Extensions=Unknown}(959_049 plus all above-Unicode code points)
and that's a wrap on the long names — now the shortcut era begins 🎀 note the wildcard versions, those match everything in the property, no cap:
\p{Scx: *}\p{Script_Extensions: *}\p{SD}\p{Soft_Dotted}(=\p{Soft_Dotted=Y}) (50)\p{SD: *}\p{Soft_Dotted: *}
then we slide straight into Sentence_Break, which is exactly what it sounds like — where does a sentence actually end, bestie, because it's not just periods 🫶
\p{Sentence_Break: AT}\p{Sentence_Break=ATerm}(4)\p{Sentence_Break: ATerm}(Short:\p{SB=AT}) (4:[.],U+2024,U+FE52,U+FF0E)\p{Sentence_Break: CL}\p{Sentence_Break=Close}(195)\p{Sentence_Break: Close}(Short:\p{SB=CL}) (195:[\"\'\(\)\[\]\{\}\xab\xbb],U+0F3A..0F3D,U+169B..169C,U+2018..201F,U+2039..203A,U+2045..2046...)\p{Sentence_Break: CR}(Short:\p{SB=CR}) (1:[\r])\p{Sentence_Break: EX}\p{Sentence_Break=Extend}(2601)\p{Sentence_Break: Extend}(Short:\p{SB=EX}) (2601:U+0300..036F,U+0483..0489,U+0591..05BD,U+05BF,U+05C1..05C2,U+05C4..05C5...)\p{Sentence_Break: FO}\p{Sentence_Break=Format}(60)\p{Sentence_Break: Format}(Short:\p{SB=FO}) (60:[\xad],U+061C,U+070F,U+180E,U+200B,U+200E..200F...)\p{Sentence_Break: LE}\p{Sentence_Break=OLetter}(136_908)\p{Sentence_Break: LF}(Short:\p{SB=LF}) (1:[\n])\p{Sentence_Break: LO}\p{Sentence_Break=Lower}(2522)\p{Sentence_Break: Lower}(Short:\p{SB=LO}) (2522:[a-z\xaa\xb5\xba\xdf-\xf6\xf8-\xff],U+0101,U+0103,U+0105,U+0107,U+0109...)\p{Sentence_Break: NU}\p{Sentence_Break=Numeric}(775)\p{Sentence_Break: Numeric}(Short:\p{SB=NU}) (775:[0-9],U+0600..0605,U+0660..0669,U+066B..066C,U+06DD,U+06F0..06F9...)\p{Sentence_Break: OLetter}(Short:\p{SB=LE}) (136_908:U+01BB,U+01C0..01C3,U+0294,U+02B9..02BF,U+02C6..02D1,U+02EC...)\p{Sentence_Break: Other}(Short:\p{SB=XX}) (968_862 plus all above-Unicode code points:[^\t\n\cK\f\r\x20!\"\'\(\),\-.0-9:;?A-Z\[\]a-z\{\}\x85\xa0\xaa-\xab\xad\xb5\xba-\xbb\xc0-\xd6\xd8-\xf6\xf8-\xff],U+02C2..02C5,U+02D2..02DF,U+02E5..02EB,U+02ED,U+02EF..02FF...)\p{Sentence_Break: SC}\p{Sentence_Break=SContinue}(31)\p{Sentence_Break: SContinue}(Short:\p{SB=SC}) (31:[,\-:;],U+037E,U+055D,U+060C..060D,U+07F8,U+1802...)\p{Sentence_Break: SE}\p{Sentence_Break=Sep}(3)
okay continuing the sacred scroll 📜 here's the next alphabet-wave of properties, no skips, no cuts, every single one accounted for:
\p{Sentence_Break: Sep}— short version is\p{SB=SE}, and it's giving 3 characters:[\x85],U+2028..2029.\p{Sentence_Break: Sp}— short:\p{SB=Sp}, and this one's got 20 members:[\t\cK\f\x20\xa0],U+1680,U+2000..200A,U+202F,U+205F,U+3000.\p{Sentence_Break: ST}— same thing as\p{Sentence_Break=STerm}, 166 of them.\p{Sentence_Break: STerm}— short:\p{SB=ST}, 166 total:[!?],U+0589,U+061D..061F,U+06D4,U+0700..0702,U+07F9 ....\p{Sentence_Break: UP}— aka\p{Sentence_Break=Upper}, 1963 characters deep.\p{Sentence_Break: Upper}— short:\p{SB=UP}, and it's 1963 strong:[A-Z\xc0-\xd6 \xd8-\xde],U+0100,U+0102,U+0104,U+0106,U+0108 ....\p{Sentence_Break: XX}— also\p{Sentence_Break=Other}, and it's a massive 968_862 plus literally every above-Unicode code point. the catch-all ate fr fr.\p{Sentence_Terminal}— same as\p{Sentence_Terminal=Y}, short form\p{STerm}, 170 of them.\p{Sentence_Terminal: N*}— short:\p{STerm=N}, and also written\P{STerm}. This one is 1_113_942 plus all above-Unicode code points:[\x00-\x20\"#\$\%&\'\(\)*+,\-\/0-9:;<=>\@A-Z\[\\\]\^_`a-z\{\|\}~\x7f-\xff],U+0100..0588,U+058A..061C,U+0620..06D3,U+06D5..06FF,U+0703..07F8...\p{Sentence_Terminal: Y*}— short:\p{STerm=Y}, and plain\p{STerm}also lands here. 170 members:[!.?],U+0589,U+061D..061F,U+06D4,U+0700..0702,U+07F9 ....\p{Separator}— that's\p{General_Category=Separator}, short:\p{Z}, 19 in the club.\p{Sgnw}— this is\p{SignWriting}, which equals\p{Script_Extensions=SignWriting}, 672 characters. 💅\p{Sharada}—\p{Script_Extensions=Sharada}, short:\p{Shrd}; and heads up bestie, it is NOT\p{Block=Sharada}— 109 members.\p{Shavian}—\p{Script_Extensions=Shavian}, short:\p{Shaw}; NOT\p{Block=Shavian}— 49 of them.\p{Shaw}— same as\p{Shavian}(=\p{Script_Extensions=Shavian}), and again NOT\p{Block=Shavian}— 49.- X
\p{Shorthand_Format_Controls}— that's\p{Block=Shorthand_Format_Controls}, 16. \p{Shrd}— this is\p{Sharada}(=\p{Script_Extensions=Sharada}), and NOT\p{Block=Sharada}— 109.\p{Sidd}— equals\p{Siddham}(=\p{Script_Extensions=Siddham}), NOT\p{Block=Siddham}, 92.\p{Siddham}—\p{Script_Extensions=Siddham}, short:\p{Sidd}; NOT\p{Block=Siddham}— 92.\p{SignWriting}—\p{Script_Extensions=SignWriting}, short:\p{Sgnw}, 672.\p{Sind}— that's\p{Khudawadi}(=\p{Script_Extensions=Khudawadi}), and NOT\p{Block=Khudawadi}— 81.\p{Sinh}— equals\p{Sinhala}(=\p{Script_Extensions=Sinhala}), NOT\p{Block=Sinhala}— 114.\p{Sinhala}—\p{Script_Extensions=Sinhala}, short:\p{Sinh}; NOT\p{Block=Sinhala}— 114.- X
\p{Sinhala_Archaic_Numbers}—\p{Block=Sinhala_Archaic_Numbers}, 32. \p{Sk}— that's\p{Modifier_Symbol}(=\p{General_Category=Modifier_Symbol}), 125.\p{Sm}—\p{Math_Symbol}(=\p{General_Category=Math_Symbol}), 950. math girlies rise 🧮- X
\p{Small_Form_Variants}—\p{Block=Small_Form_Variants}, short:\p{InSmallForms}, 32. - X
\p{Small_Forms}— equals\p{Small_Form_Variants}(=\p{Block=Small_Form_Variants}), 32. - X
\p{Small_Kana_Ext}—\p{Small_Kana_Extension}(=\p{Block=Small_Kana_Extension}), 64. - X
\p{Small_Kana_Extension}—\p{Block=Small_Kana_Extension}, short:\p{InSmallKanaExt}, 64. \p{So}—\p{Other_Symbol}(=\p{General_Category=Other_Symbol}), 7376.\p{Soft_Dotted}—\p{Soft_Dotted=Y}, short:\p{SD}, 50.\p{Soft_Dotted: N*}— short:\p{SD=N}, and also\P{SD}. 1_114_062 plus all above-Unicode code points:[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@A-Z\[\\\]\^_`a-hk-z\{\|\}~\x7f-\xff],U+0100..012E,U+0130..0248,U+024A..0267,U+0269..029C,U+029E..02B1...\p{Soft_Dotted: Y*}— short:\p{SD=Y}, and just\p{SD}works too. 50 members:[i-j],U+012F,U+0249,U+0268,U+029D,U+02B2 ....\p{Sogd}— that's\p{Sogdian}(=\p{Script_Extensions=Sogdian}), NOT\p{Block=Sogdian}— 43.\p{Sogdian}—\p{Script_Extensions=Sogdian}, short:\p{Sogd}; NOT\p{Block=Sogdian}— 43.\p{Sogo}— equals\p{Old_Sogdian}(=\p{Script_Extensions=Old_Sogdian}), NOT\p{Block=Old_Sogdian}— 40.\p{Sora}— that's\p{Sora_Sompeng}(=\p{Script_Extensions=Sora_Sompeng}), NOT\p{Block=Sora_Sompeng}— 35.\p{Sora_Sompeng}—\p{Script_Extensions=Sora_Sompeng}, short:\p{Sora}; NOT\p{Block=Sora_Sompeng}— 35.\p{Soyo}— equals\p{Soyombo}(=\p{Script_Extensions=Soyombo}), NOT\p{Block=Soyombo}— 83.\p{Soyombo}—\p{Script_Extensions=Soyombo}, short:\p{Soyo}; NOT\p{Block=Soyombo}— 83.\p{Space}— that's\p{White_Space}(=\p{White_Space=Y}), 25.\p{Space: *}— same as\p{White_Space: *}.\p{Space_Separator}—\p{General_Category=Space_Separator}, short:\p{Zs}, 17.\p{SpacePerl}— equals\p{XPosixSpace}, 25.\p{Spacing_Mark}—\p{General_Category=Spacing_Mark}, short:\p{Mc}, 468.- X
\p{Spacing_Modifier_Letters}—\p{Block=Spacing_Modifier_Letters}, short:\p{InModifierLetters}, 80. - X
\p{Specials}—\p{Block=Specials}, 16. \p{STerm}— this is\p{Sentence_Terminal}(=\p{Sentence_Terminal=Y}), 170.\p{STerm: *}— same as\p{Sentence_Terminal: *}.\p{Sund}— that's\p{Sundanese}(=\p{Script_Extensions=Sundanese}), NOT\p{Block=Sundanese}— 72.\p{Sundanese}—\p{Script_Extensions=Sundanese}, short:\p{Sund}; NOT\p{Block=Sundanese}— 72.- X
\p{Sundanese_Sup}— equals\p{Sundanese_Supplement}(=\p{Block=Sundanese_Supplement}), 16. - X
\p{Sundanese_Supplement}—\p{Block=Sundanese_Supplement}, short:\p{InSundaneseSup}, 16. \p{Sunu}— that's\p{Sunuwar}(=\p{Script_Extensions=Sunuwar}), NOT\p{Block=Sunuwar}— 51.\p{Sunuwar}—\p{Script_Extensions=Sunuwar}, short:\p{Sunu}; NOT\p{Block=Sunuwar}— 51.- X
\p{Sup_Arrows_A}— equals\p{Supplemental_Arrows_A}(=\p{Block=Supplemental_Arrows_A}), 16. - X
\p{Sup_Arrows_B}— equals\p{Supplemental_Arrows_B}(=\p{Block=Supplemental_Arrows_B}), 128. - X
\p{Sup_Arrows_C}— equals\p{Supplemental_Arrows_C}(=\p{Block=Supplemental_Arrows_C}), 256. - X
\p{Sup_Math_Operators}— that's\p{Supplemental_Mathematical_Operators}(=\p{Block=Supplemental_Mathematical_Operators}), 256. - X
\p{Sup_PUA_A}— equals\p{Supplementary_Private_Use_Area_A}(=\p{Block=Supplementary_Private_Use_Area_A}), 65_536. - X
\p{Sup_PUA_B}— equals\p{Supplementary_Private_Use_Area_B}(=\p{Block=Supplementary_Private_Use_Area_B}), 65_536. - X
\p{Sup_Punctuation}— that's\p{Supplemental_Punctuation}(=\p{Block=Supplemental_Punctuation}), 128. - X
\p{Sup_Symbols_And_Pictographs}— equals\p{Supplemental_Symbols_And_Pictographs}(=\p{Block=Supplemental_Symbols_And_Pictographs}), 256. - X
\p{Super_And_Sub}— that's\p{Superscripts_And_Subscripts}(=\p{Block=Superscripts_And_Subscripts}), 48. - X
\p{Superscripts_And_Subscripts}—\p{Block=Superscripts_And_Subscripts}, short:\p{InSuperAndSub}, 48. - X
\p{Supplemental_Arrows_A}—\p{Block=Supplemental_Arrows_A}, short:\p{InSupArrowsA}, 16. - X
\p{Supplemental_Arrows_B}—\p{Block=Supplemental_Arrows_B}, short:\p{InSupArrowsB}, 128. - X
\p{Supplemental_Arrows_C}—\p{Block=Supplemental_Arrows_C}, short:\p{InSupArrowsC}, 256. - X
\p{Supplemental_Mathematical_Operators}—\p{Block=Supplemental_Mathematical_Operators}, short:\p{InSupMathOperators}, 256. - X
\p{Supplemental_Punctuation}—\p{Block=Supplemental_Punctuation}, short:\p{InSupPunctuation}, 128. - X
\p{Supplemental_Symbols_And_Pictographs}—\p{Block=Supplemental_Symbols_And_Pictographs}, short:\p{InSupSymbolsAndPictographs}, 256. - X
\p{Supplementary_Private_Use_Area_A}—\p{Block=Supplementary_Private_Use_Area_A}, short:\p{InSupPUAA}, 65_536. - X
\p{Supplementary_Private_Use_Area_B}—\p{Block=Supplementary_Private_Use_Area_B}, short:\p{InSupPUAB}, 65_536. \p{Surrogate}— that's\p{General_Category=Surrogate}, short:\p{Cs}, 2048.- X
\p{Sutton_SignWriting}—\p{Block=Sutton_SignWriting}, 688. \p{Sylo}— equals\p{Syloti_Nagri}(=\p{Script_Extensions=- …
Syloti_Nagri}) (NOT \p{Block=Syloti_Nagri}) (57) \p{Syloti_Nagri}—\p{Script_Extensions=Syloti_Nagri}(Short:\p{Sylo}; NOT\p{Block=Syloti_Nagri}) (57) — slay, bestie 💅\p{Symbol}—\p{General_Category=Symbol}(Short:\p{S}) (8514) — that's a lot of symbols, no cap ✨- X
\p{Symbols_And_Pictographs_Ext_A}—\p{Symbols_And_Pictographs_Extended_A}(=\p{Block=Symbols_And_Pictographs_Extended_A}) (144) — the X is giving mystery 🔥 - X
\p{Symbols_And_Pictographs_Extended_A}—\p{Block=Symbols_And_Pictographs_Extended_A}(144) — iconic ✨ - X
\p{Symbols_For_Legacy_Computing}—\p{Block=Symbols_For_Legacy_Computing}(256) — legacy but still cute 💖 - X
\p{Symbols_For_Legacy_Computing_Sup}—\p{Symbols_For_Legacy_Computing_Supplement}(=\p{Block=Symbols_For_Legacy_Computing_Supplement}) (704) — sup means supplement, iykyk 🧚 - X
\p{Symbols_For_Legacy_Computing_Supplement}—\p{Block=Symbols_For_Legacy_Computing_Supplement}(Short:\p{InSymbolsForLegacyComputingSup}) (704) — the short name is a mouthful, fr fr 😭 \p{Syrc}—\p{Syriac}(=\p{Script_Extensions=Syriac}) (NOT\p{Block=Syriac}) (119) — short and sweet 💜\p{Syriac}—\p{Script_Extensions=Syriac}(Short:\p{Syrc}; NOT\p{Block=Syriac}) (119) — don't confuse it with the block, bestie 🫶- X
\p{Syriac_Sup}—\p{Syriac_Supplement}(=\p{Block=Syriac_Supplement}) (16) — tiny but mighty 🌸 - X
\p{Syriac_Supplement}—\p{Block=Syriac_Supplement}(Short:\p{InSyriacSup}) (16) — 16 code points, periodt 💅 \p{Tagalog}—\p{Script_Extensions=Tagalog}(Short:\p{Tglg}; NOT\p{Block=Tagalog}) (25) — Tagalog, slay 💅\p{Tagb}—\p{Tagbanwa}(=\p{Script_Extensions=Tagbanwa}) (NOT\p{Block=Tagbanwa}) (20) — short for Tagbanwa, iconic ✨\p{Tagbanwa}—\p{Script_Extensions=Tagbanwa}(Short:\p{Tagb}; NOT\p{Block=Tagbanwa}) (20) — not the block, no cap 🧢- X
\p{Tags}—\p{Block=Tags}(128) — just Tags, simple 💅 \p{Tai_Le}—\p{Script_Extensions=Tai_Le}(Short:\p{Tale}; NOT\p{Block=Tai_Le}) (50) — Tai Le is giving script energy 🌈\p{Tai_Tham}—\p{Script_Extensions=Tai_Tham}(Short:\p{Lana}; NOT\p{Block=Tai_Tham}) (127) — Lana is the shortie 💖\p{Tai_Viet}—\p{Script_Extensions=Tai_Viet}(Short:\p{Tavt}; NOT\p{Block=Tai_Viet}) (72) — Tai Viet, slay 💅- X
\p{Tai_Xuan_Jing}—\p{Tai_Xuan_Jing_Symbols}(=\p{Block=Tai_Xuan_Jing_Symbols}) (96) — symbols of destiny ✨ - X
\p{Tai_Xuan_Jing_Symbols}—\p{Block=Tai_Xuan_Jing_Symbols}(Short:\p{InTaiXuanJing}) (96) — the block version, periodt 💅 \p{Takr}—\p{Takri}(=\p{Script_Extensions=Takri}) (NOT\p{Block=Takri}) (80) — Takri shortie 🎀\p{Takri}—\p{Script_Extensions=Takri}(Short:\p{Takr}; NOT\p{Block=Takri}) (80) — not the block, bestie 🫶\p{Tale}—\p{Tai_Le}(=\p{Script_Extensions=Tai_Le}) (NOT\p{Block=Tai_Le}) (50) — back to Tai Le 💖\p{Talu}—\p{New_Tai_Lue}(=\p{Script_Extensions=New_Tai_Lue}) (NOT\p{Block=New_Tai_Lue}) (83) — New Tai Lue, new vibe 🌸\p{Tamil}—\p{Script_Extensions=Tamil}(Short:\p{Taml}; NOT\p{Block=Tamil}) (133) — Tamil, iconic ✨- X
\p{Tamil_Sup}—\p{Tamil_Supplement}(=\p{Block=Tamil_Supplement}) (64) — supplement era 💅 - X
\p{Tamil_Supplement}—\p{Block=Tamil_Supplement}(Short:\p{InTamilSup}) (64) — 64 code points, no cap 🧢 \p{Taml}—\p{Tamil}(=\p{Script_Extensions=Tamil}) (NOT\p{Block=Tamil}) (133) — short for Tamil, slay 💅\p{Tang}—\p{Tangut}(=\p{Script_Extensions=Tangut}) (NOT\p{Block=Tangut}) (6931) — whoa 6931, that's a lot of Tangut 😭\p{Tangsa}—\p{Script_Extensions=Tangsa}(Short:\p{Tnsa}; NOT\p{Block=Tangsa}) (89) — Tangsa, cute 🎀\p{Tangut}—\p{Script_Extensions=Tangut}(Short:\p{Tang}; NOT\p{Block=Tangut}) (6931) — again 6931, periodt 💅- X
\p{Tangut_Components}—\p{Block=Tangut_Components}(768) — components, iconic ✨ - X
\p{Tangut_Sup}—\p{Tangut_Supplement}(=\p{Block=Tangut_Supplement}) (128) — supplement vibes 💖 - X
\p{Tangut_Supplement}—\p{Block=Tangut_Supplement}(Short:\p{InTangutSup}) (128) — the block, no cap 🧢 \p{Tavt}—\p{Tai_Viet}(=\p{Script_Extensions=Tai_Viet}) (NOT\p{Block=Tai_Viet}) (72) — short for Tai Viet 💅\p{Telu}—\p{Telugu}(=\p{Script_Extensions=Telugu}) (NOT\p{Block=Telugu}) (106) — Telugu shortie ✨\p{Telugu}—\p{Script_Extensions=Telugu}(Short:\p{Telu}; NOT\p{Block=Telugu}) (106) — not the block, bestie 🫶\p{Term}—\p{Terminal_Punctuation}(=\p{Terminal_Punctuation=Y}) (291) — punctuation but make it terminal 💅\p{Term: *}—\p{Terminal_Punctuation: *}— the wildcard version, iykyk 🧚\p{Terminal_Punctuation}—\p{Terminal_Punctuation=Y}(Short:\p{Term}) (291) — yes, punctuation 💖\p{Terminal_Punctuation: N*}(Short:\p{Term=N},\P{Term}) (1_113_821 plus all above-Unicode code points:`[\x00-\x20\"#\$\%&\'\(\)*+\-\/0-9<=>\@A-Z\[\\\]\^_`a-z\{\|\}~\x7f-\xff]`, U+0100..037D, U+037F..0386, U+0388..0588, U+058A..05C2, U+05C4..060B ...) — this one is a whole mood, so many code points 😭\p{Terminal_Punctuation: Y*}(Short:\p{Term=Y},\p{Term}) (291:[!,.:;?], U+037E, U+0387, U+0589, U+05C3, U+060C ...) — yes punctuation, slay 💅\p{Tfng}—\p{Tifinagh}(=\p{Script_Extensions=Tifinagh}) (NOT\p{Block=Tifinagh}) (63) — Tifinagh shortie ✨\p{Tglg}—\p{Tagalog}(=\p{Script_Extensions=Tagalog}) (NOT\p{Block=Tagalog}) (25) — short for Tagalog 💖\p{Thaa}—\p{Thaana}(=\p{Script_Extensions=Thaana}) (NOT\p{Block=Thaana}) (66) — Thaana shortie 🎀\p{Thaana}—\p{Script_Extensions=Thaana}(Short:\p{Thaa}; NOT\p{Block=Thaana}) (66) — not the block, bestie 🫶\p{Thai}—\p{Script_Extensions=Thai}(NOT\p{Block=Thai}) (90) — Thai, iconic ✨\p{Tibetan}—\p{Script_Extensions=Tibetan}(Short:\p{Tibt}; NOT\p{Block=Tibetan}) (211) — Tibetan, slay 💅\p{Tibt}—\p{Tibetan}(=\p{Script_Extensions=Tibetan}) (NOT\p{Block=Tibetan}) (211) — short for Tibetan 💖\p{Tifinagh}—\p{Script_Extensions=Tifinagh}(Short:\p{Tfng}; NOT\p{Block=Tifinagh}) (63) — Tifinagh, cute 🌸\p{Tirh}—\p{Tirhuta}(=\p{Script_Extensions=Tirhuta}) (NOT\p{Block=Tirhuta}) (97) — Tirhuta shortie ✨\p{Tirhuta}—\p{Script_Extensions=Tirhuta}(Short:\p{Tirh}; NOT\p{Block=Tirhuta}) (97) — not the block, no cap 🧢\p{Title}—\p{Titlecase}(/i= Cased=Yes) (31) — title case but make it a property 💅\p{Titlecase}— (=\p{Gc=Lt}) (Short:\p{Title}; /i= Cased=Yes) (31: U+01C5, U+01C8, U+01CB, U+01F2, U+1F88..1F8F, U+1F98..1F9F ...) — iconic list of code points ✨\p{Titlecase_Letter}—\p{General_Category=Titlecase_Letter}(Short:\p{Lt}; /i= General_Category=Cased_Letter) (31) — titlecase letter, periodt 💅\p{Tnsa}—\p{Tangsa}(=\p{Script_Extensions=Tangsa}) (NOT\p{Block=Tangsa}) (89) — short for Tangsa 💖\p{Todhri}—\p{Script_Extensions=Todhri}(Short:\p{Todr}; NOT\p{Block=Todhri}) (58) — Todhri, slay 💅\p{Todr}—\p{Todhri}(=\p{Script_Extensions=Todhri}) (NOT\p{Block=Todhri}) (58) — short for Todhri ✨\p{Toto}—\p{Script_Extensions=Toto}(NOT\p{Block=Toto}) (32) — Toto, cute 🎀- X
\p{Transport_And_Map}—\p{Transport_And_Map_Symbols}(=\p{Block=Transport_And_Map_Symbols}) (128) — transport and map, iconic 🗺️ - X
\p{Transport_And_Map_Symbols}—\p{Block=Transport_And_Map_Symbols}(Short:\p{InTransportAndMap}) (128) — the block version 💅 \p{Tulu_Tigalari}—\p{Script_Extensions=Tulu_Tigalari}(Short:\p{Tutg}; NOT\p{Block=Tulu_Tigalari}) (99) — Tulu Tigalari, slay ✨\p{Tutg}—\p{Tulu_Tigalari}(=\p{Script_Extensions=Tulu_Tigalari}) (NOT\p{Block=Tulu_Tigalari}) (99) — shortie 💖- X
\p{UCAS}—\p{Unified_Canadian_Aboriginal_Syllabics}(=\p{Block=Unified_Canadian_Aboriginal_Syllabics}) (640) — UCAS, iconic 🇨🇦 - X
\p{UCAS_Ext}—\p{Unified_Canadian_Aboriginal_Syllabics_Extended}(=\p{Block=Unified_Canadian_Aboriginal_Syllabics_Extended}) (80) — extended, periodt 💅 - X
\p{UCAS_Ext_A}—\p{Unified_Canadian_Aboriginal_Syllabics_Extended_A}(=\p{Block=Unified_Canadian_Aboriginal_Syllabics_Extended_A}) (16) — extended A, cute 🌸 \p{Ugar}—\p{Ugaritic}(=\p{Script_Extensions=Ugaritic}) (NOT\p{Block=Ugaritic}) (31) — Ugaritic shortie ✨\p{Ugaritic}—\p{Script_Extensions=Ugaritic}(Short:\p{Ugar}; NOT\p{Block=Ugaritic}) (31) — not the block, bestie 🫶\p{UIdeo}—\p{Unified_Ideograph}(=\p{Unified_Ideograph=Y}) (97_680) — whoa 97,680, that's a lot 😭\p{UIdeo: *}—\p{Unified_Ideograph: *}— wildcard version, iykyk 🧚\p{Unassigned}—\p{General_Category=Unassigned}(Short:\p{Cn}) (819_533 plus all above-Unicode code points) — unassigned but still valid, periodt 💅\p{Unicode}—\p{Any}(1_114_112) — all of Unicode, slay 👑- X
\p{Unified_Canadian_Aboriginal_Syllabics}—\p{Block=Unified_Canadian_Aboriginal_Syllabics}(Short:\p{InUCAS}) (640) — the block version, no cap 🧢 - X
\p{Unified_Canadian_Aboriginal_Syllabics_Extended}—\p{Block=Unified_Canadian_Aboriginal_Syllabics_Extended}(Short:\p{InUCASExt}) (80) — extended block, slay ✨ - X
\p{Unified_Canadian_Aboriginal_Syllabics_Extended_A}—\p{Block=Unified_Canadian_Aboriginal_Syllabics_Extended_A}(Short:\p{InUCASExtA}) (16) — extended A block, periodt 💅 \p{Unified_Ideograph}— same thing as\p{Unified_Ideograph=Y}(short version:\p{UIdeo}). Count: 97_680. ✨\p{Unified_Ideograph: N*}— the not-version (short:\p{UIdeo=N}, or literally just\P{UIdeo}). Count: 1_016_432 plus all above-Unicode code points:U+0000..33FF, U+4DC0..4DFF, U+A000..FA0D, U+FA10, U+FA12, U+FA15..FA1E ...\p{Unified_Ideograph: Y*}— the yes-version (short:\p{UIdeo=Y},\p{UIdeo}). Count: 97_680:U+3400..4DBF, U+4E00..9FFF, U+FA0E..FA0F, U+FA11, U+FA13..FA14, U+FA1F ...\p{Unknown}— which is\p{Script_Extensions=Unknown}(short:\p{Zzzz}). Count: 959_049 plus all above-Unicode code points. 💀\p{Upper}— same as\p{XPosixUpper}, which is the same as\p{Uppercase=Y}(/i=Cased=Yes). Count: 1978.\p{Upper: *}— this one is just\p{Uppercase: *}wearing a different name tag. 🎀\p{Uppercase}— same as\p{XPosixUpper}, which is the same as\p{Uppercase=Y}(/i=Cased=Yes). Count: 1978.\p{Uppercase: N*}— (short:\p{Upper=N},\P{Upper};/i=Cased=No). Count: 1_112_134 plus all above-Unicode code points:[\x00-\x20!"#\$%&'()*+,-./0-9:;<=>?@[\]\^_`a-z{|}~\x7f-\xbf\xd7\xdf-\xff], U+0101, U+0103, U+0105, U+0107, U+0109 ...(yes there's a literal backtick hanging out in that character class, bestie, iykyk 🙈)\p{Uppercase: Y*}— (short:\p{Upper=Y},\p{Upper};/i=Cased=Yes). Count: 1978:[A-Z\xc0-\xd6\xd8-\xde], U+0100, U+0102, U+0104, U+0106, U+0108 ...\p{Uppercase_Letter}— same as\p{General_Category=Uppercase_Letter}(short:\p{Lu};/i=General_Category=Cased_Letter). Count: 1858.\p{Vai}— that's\p{Script_Extensions=Vai}— and NOT\p{Block=Vai}, okay? don't get it twisted 💅 Count: 300.\p{Vaii}— same as\p{Vai}, which is\p{Script_Extensions=Vai}(NOT\p{Block=Vai}). Count: 300.\p{Variation_Selector}— same as\p{Variation_Selector=Y}(short:\p{VS}; NOT\p{Variation_Selectors}). Count: 260.\p{Variation_Selector: N*}— (short:\p{VS=N},\P{VS}). Count: 1_113_852 plus all above-Unicode code points:U+0000..180A, U+180E, U+1810..FDFF, U+FE10..E00FF, U+E01F0..infinity😭\p{Variation_Selector: Y*}— (short:\p{VS=Y},\p{VS}). Count: 260:U+180B..180D, U+180F, U+FE00..FE0F, U+E0100..E01EF- X
\p{Variation_Selectors}— same as\p{Block=Variation_Selectors}(short:\p{InVS}). Count: 16. (theXout front is the table's own flag on this entry — i'm noting it exactly as it appears 🫶) - X
\p{Variation_Selectors_Supplement}— same as\p{Block=Variation_Selectors_Supplement}(short:\p{InVSSup}). Count: 240. - X
\p{Vedic_Ext}— same as\p{Vedic_Extensions}, which is\p{Block=Vedic_Extensions}. Count: 48. - X
\p{Vedic_Extensions}— same as\p{Block=Vedic_Extensions}(short:\p{InVedicExt}). Count: 48. - X
\p{Vertical_Forms}— same as\p{Block=Vertical_Forms}. Count: 16. \p{Vertical_Orientation: R}— same as\p{Vertical_Orientation=Rotated}. Count: 782_609 plus all above-Unicode code points.\p{Vertical_Orientation: Rotated}— (short:\p{Vo=R}). Count: 782_609 plus all above-Unicode code points:[\x00-\xa6\xa8\xaa-\xad\xaf-\xb0\xb2-\xbb\xbf-\xd6\xd8-\xf6\xf8-\xff], U+0100..02E9, U+02EC..10FF, U+1200..1400, U+1680..18AF, U+1900..2015 ...\p{Vertical_Orientation: Tr}— same as\p{Vertical_Orientation=Transformed_Rotated}. Count: 47.\p{Vertical_Orientation: Transformed_Rotated}— (short:\p{Vo=Tr}). Count: 47:U+2329..232A, U+3008..3011, U+3014..301F, U+3030, U+30A0, U+30FC ...\p{Vertical_Orientation: Transformed_Upright}— (short:\p{Vo=Tu}). Count: 148:U+3001..3002, U+3041, U+3043, U+3045, U+3047, U+3049 ...\p{Vertical_Orientation: Tu}— same as\p{Vertical_Orientation=Transformed_Upright}. Count: 148.\p{Vertical_Orientation: U}— same as\p{Vertical_Orientation=Upright}. Count: 331_308.\p{Vertical_Orientation: Upright}— (short:\p{Vo=U}). Count: 331_308:[\xa7\xa9\xae\xb1\xbc-\xbe\xd7\xf7], U+02EA..02EB, U+1100..11FF, U+1401..167F, U+18B0..18FF, U+2016 ...\p{VertSpace}— that's\v. Count: 7:[\n\cK\f\r\x85], U+2028..2029\p{Vith}— same as\p{Vithkuqi}, which is\p{Script_Extensions=Vithkuqi}(NOT\p{Block=Vithkuqi}). Count: 70.\p{Vithkuqi}— same as\p{Script_Extensions=Vithkuqi}(short:\p{Vith}; NOT\p{Block=Vithkuqi}). Count: 70.\p{Vo: *}— just\p{Vertical_Orientation: *}, bestie. 🌈\p{VS}— same as\p{Variation_Selector}, which is\p{Variation_Selector=Y}(NOT\p{Variation_Selectors}). Count: 260.\p{VS: *}— that's\p{Variation_Selector: *}. 🎀- X
\p{VS_Sup}— same as\p{Variation_Selectors_Supplement}, which is\p{Block=Variation_Selectors_Supplement}. Count: 240. \p{Wancho}— same as\p{Script_Extensions=Wancho}(short:\p{Wcho}; NOT\p{Block=Wancho}). Count: 59.\p{Wara}— same as\p{Warang_Citi}, which is\p{Script_Extensions=Warang_Citi}(NOT\p{Block=Warang_Citi}). Count: 84.\p{Warang_Citi}— same as\p{Script_Extensions=Warang_Citi}(short:\p{Wara}; NOT\p{Block=Warang_Citi}). Count: 84.\p{WB: *}— just\p{Word_Break: *}. ✨\p{Wcho}— same as\p{Wancho}, which is\p{Script_Extensions=Wancho}(NOT\p{Block=Wancho}). Count: 59.\p{White_Space}— same as\p{White_Space=Y}(short:\p{Space}). Count: 25.\p{White_Space: N*}— (short:\p{Space=N},\P{Space}). Count: 1_114_087 plus all above-Unicode code points:[^\t\n\cK\f\r\x20\x85\xa0], U+0100..167F, U+1681..1FFF, U+200B..2027, U+202A..202E, U+2030..205E ...\p{White_Space: Y*}— (short:\p{Space=Y},\p{Space}). Count: 25:[\t\n\cK\f\r\x20\x85\xa0], U+1680, U+2000..200A, U+2028..2029, U+202F, U+205F ...\p{Word}— same as\p{XPosixWord}. Count: 144_667. 👑\p{Word_Break: ALetter}— (short:\p{WB=LE}). Count: 33_791:[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff], U+0100..02D7, U+02DE..02FF, U+0370..0374, U+0376..0377, U+037A..037D ...\p{Word_Break: CR}— (short:\p{WB=CR}). Count: 1:[\r]\p{Word_Break: Double_Quote}— (short:\p{WB=DQ}). Count: 1:[\"]\p{Word_Break: DQ}— same as\p{Word_Break=Double_Quote}. Count: 1.\p{Word_Break: E_Base}— (short:\p{WB=EB}). Count: 0. 💀\p{Word_Break: E_Base_GAZ}— (short:\p{WB=EBG}). Count: 0. 💀\p{Word_Break: E_Modifier}— (short:\p{WB=EM}). Count: 0. 💀\p{Word_Break: EB}— same as\p{Word_Break=E_Base}. Count: 0.\p{Word_Break: EBG}— same as\p{Word_Break=E_Base_GAZ}. Count: 0.\p{Word_Break: EM}— same as\p{Word_Break=E_Modifier}. Count: 0.\p{Word_Break: EX}— same as\p{Word_Break=ExtendNumLet}. Count: 11.\p{Word_Break: Extend}— (short:\p{WB=Extend}). Count: 2605:U+0300..036F, U+0483..0489, U+0591..05BD, U+05BF, U+05C1..05C2, U+05C4..05C5 ...\p{Word_Break: ExtendNumLet}— (short:\p{WB=EX}). Count: 11:[_], U+202F, U+203F..2040, U+2054, U+FE33..FE34, U+FE4D..FE4F ...\p{Word_Break: FO}— same as\p{Word_Break=Format}. Count: 58.\p{Word_Break: Format}— (short:\p{WB=FO}). Count: 58:[\xad], U+061C, U+180E, U+200E..200F, U+202A..202E, U+2060..2064 ...\p{Word_Break: GAZ}— same as\p{Word_Break=Glue_After_Zwj}. Count: 0.\p{Word_Break: Glue_After_Zwj}— (short:\p{WB=GAZ}). Count: 0.\p{Word_Break: Hebrew_Letter}— (short:\p{WB=HL}). Count: 75:U+05D0..05EA, U+05EF..05F2, U+FB1D, U+FB1F..FB28, U+FB2A..FB36, U+FB38..FB3C ...\p{Word_Break: HL}— same as\p{Word_Break=Hebrew_Letter}. Count: 75.\p{Word_Break: KA}— same as\p{Word_Break=Katakana}. Count: 331.\p{Word_Break: Katakana}— (short:\p{WB=KA}). Count: 331:U+3031..3035, U+309B..309C, U+30A0..30FA, U+30FC..30FF, U+31F0..31FF, U+32D0..32FE ...\p{Word_Break: LE}— same as\p{Word_Break=ALetter}. Count: 33_791.\p{Word_Break: LF}— (short:\p{WB=LF}). Count: 1:[\n]\p{Word_Break: MB}— same as\p{Word_Break=MidNumLet}. Count: 7.\p{Word_Break: MidLetter}— (short:\p{WB=ML}). Count: 9:[:\xb7], U+0387, U+055F, U+05F4, U+2027, U+FE13 ...\p{Word_Break: MidNum}— (short:\p{WB=MN}). Count: 13:[,;], U+037E, U+0589, U+060C..060D, U+066C, U+07F8 ...\p{Word_Break: MidNumLet}— (short:\p{WB=MB}). Count: 7:[.], U+2018..2019, U+2024, U+FE52, U+FF07, U+FF0E\p{Word_Break: ML}— same as\p{Word_Break=MidLetter}. Count: 9.\p{Word_Break: MN}— same as\p{Word_Break=MidNum}. Count: 13.\p{Word_Break: Newline}— (short:\p{WB=NL}). Count: 5:[\cK\f\x85], U+2028..2029\p{Word_Break: NL}— same as\p{Word_Break=Newline}. Count: 5.\p{Word_Break: NU}— same as\p{Word_Break=Numeric}. Count: 774.\p{Word_Break: Numeric}— (short:\p{WB=NU}). Count: 774:[0-9], U+0600..0605, U+0660..0669, U+066B, U+06DD, U+06F0..06F9 ...\p{Word_Break: Other}— (short:\p{WB=XX}). Count: 1_076_388 plus all above-Unicode code points:[^\n\cK\f\r\x20\"\',.0-9:;A-Z_a-z\x85\xaa\xad\xb5\xb7\xba\xc0-\xd6\xd8-\xf6\xf8-\xff], U+02D8..02DD, U+0375, U+0378..0379, U+0380..0385, U+038B ...\p{Word_Break: Regional_Indicator}— (short:\p{WB=RI}). Count: 26:U+1F1E6..1F1FF. 🦋
\p{Word_Break: RI} \p{Word_Break=Regional_Indicator} (26)
\p{Word_Break: Single_Quote} (Short: \p{WB=SQ}) (1: [\'])
\p{Word_Break: SQ} \p{Word_Break=Single_Quote} (1)
\p{Word_Break: WSegSpace} (Short: \p{WB=WSegSpace}) (14: [\x20],
U+1680, U+2000..2006, U+2008..200A,
U+205F, U+3000)
\p{Word_Break: XX} \p{Word_Break=Other} (1_076_388 plus all
above-Unicode code points)
\p{Word_Break: ZWJ} (Short: \p{WB=ZWJ}) (1: U+200D)
\p{WSpace} \p{White_Space} (= \p{White_Space=Y}) (25)
\p{WSpace: *} \p{White_Space: *}
\p{XDigit} \p{XPosixXDigit} (= \p{Hex_Digit=Y}) (44)
\p{XID_Continue} \p{XID_Continue=Y} (Short: \p{XIDC})
(144_522)
\p{XID_Continue: N*} (Short: \p{XIDC=N}, \P{XIDC}) (969_590
plus all above-Unicode code points:
[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/:;<=>?
\@\[\\\]\^`\{\|\}~\x7f-\xa9\xab-\xb4
\xb6\xb8-\xb9\xbb-\xbf\xd7\xf7],
U+02C2..02C5, U+02D2..02DF,
U+02E5..02EB, U+02ED, U+02EF..02FF ...)
\p{XID_Continue: Y*} (Short: \p{XIDC=Y}, \p{XIDC}) (144_522:
[0-9A-Z_a-z\xaa\xb5\xb7\xba\xc0-\xd6
\xd8-\xf6\xf8-\xff], U+0100..02C1,
U+02C6..02D1, U+02E0..02E4, U+02EC,
U+02EE ...)
\p{XID_Start} \p{XID_Start=Y} (Short: \p{XIDS}) (141_246)
\p{XID_Start: N*} (Short: \p{XIDS=N}, \P{XIDS}) (972_866
plus all above-Unicode code points:
[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=
>?\@\[\\\]\^_`\{\|\}~\x7f-\xa9\xab-\xb4
\xb6-\xb9\xbb-\xbf\xd7\xf7],
U+02C2..02C5, U+02D2..02DF,
U+02E5..02EB, U+02ED, U+02EF..036F ...)
\p{XID_Start: Y*} (Short: \p{XIDS=Y}, \p{XIDS}) (141_246:
[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6
\xf8-\xff], U+0100..02C1, U+02C6..02D1,
U+02E0..02E4, U+02EC, U+02EE ...)
\p{XIDC} \p{XID_Continue} (= \p{XID_Continue=Y})
(144_522)
\p{XIDC: *} \p{XID_Continue: *}
\p{XIDS} \p{XID_Start} (= \p{XID_Start=Y}) (141_246)
\p{XIDS: *} \p{XID_Start: *}
\p{Xpeo} \p{Old_Persian} (= \p{Script_Extensions=
Old_Persian}) (NOT \p{Block=
Old_Persian}) (50)
\p{XPerlSpace} \p{XPosixSpace} (25)
\p{XPosixAlnum} Alphabetic and (decimal) Numeric (Short:
\p{Alnum}) (143_519: [0-9A-Za-z\xaa\xb5
\xba\xc0-\xd6\xd8-\xf6\xf8-\xff],
U+0100..02C1, U+02C6..02D1,
U+02E0..02E4, U+02EC, U+02EE ...)
\p{XPosixAlpha} \p{Alphabetic=Y} (Short: \p{Alpha})
(142_759)
\p{XPosixBlank} \h, Horizontal white space (Short:
\p{Blank}) (18: [\t\x20\xa0], U+1680,
U+2000..200A, U+202F, U+205F, U+3000)
\p{XPosixCntrl} \p{General_Category=Control} Control
characters (Short: \p{Cc}) (65)
\p{XPosixDigit} \p{General_Category=Decimal_Number} [0-9]
+ all other decimal digits (Short:
\p{Nd}) (760)
\p{XPosixGraph} Characters that are graphical (Short:
\p{Graph}) (292_447: [!\"#\$\%&\'
\(\)*+,\-.\/0-9:;<=>?\@A-Z\[\\\]\^_`a-z
\{\|\}~\xa1-\xff], U+0100..0377,
U+037A..037F, U+0384..038A, U+038C,
U+038E..03A1 ...)
\p{XPosixLower} \p{Lowercase=Y} (Short: \p{Lower}; /i=
Cased=Yes) (2569)
\p{XPosixPrint} Characters that are graphical plus space
characters (but no controls) (Short:
\p{Print}) (292_464: [\x20-\x7e\xa0-
\xff], U+0100..0377, U+037A..037F,
U+0384..038A, U+038C, U+038E..03A1 ...)
\p{XPosixPunct} \p{Punct} + ASCII-range \p{Symbol} (864:
[!\"#\$\%&\'\(\)*+,\-.\/:;<=>?\@\[\\\]
\^_`\{\|\}~\xa1\xa7\xab\xb6-\xb7\xbb
\xbf], U+037E, U+0387, U+055A..055F,
U+0589..058A, U+05BE ...)
\p{XPosixSpace} \s including beyond ASCII and vertical tab
(Short: \p{SpacePerl}) (25: [\t\n\cK\f
\r\x20\x85\xa0], U+1680, U+2000..200A,
U+2028..2029, U+202F, U+205F ...)
\p{XPosixUpper} \p{Uppercase=Y} (Short: \p{Upper}; /i=
Cased=Yes) (1978)
\p{XPosixWord} \w, including beyond ASCII; = \p{Alnum} +
\pM + \p{Pc} + \p{Join_Control} (Short:
\p{Word}) (144_667: [0-9A-Z_a-z\xaa\xb5
\xba\xc0-\xd6\xd8-\xf6\xf8-\xff],
U+0100..02C1, U+02C6..02D1,
U+02E0..02E4, U+02EC, U+02EE ...)
\p{XPosixXDigit} \p{Hex_Digit=Y} (Short: \p{Hex}) (44)
\p{Xsux} \p{Cuneiform} (= \p{Script_Extensions=
Cuneiform}) (NOT \p{Block=Cuneiform})
(1234)
\p{Yezi} \p{Yezidi} (= \p{Script_Extensions=
Yezidi}) (NOT \p{Block=Yezidi}) (60)
\p{Yezidi} \p{Script_Extensions=Yezidi} (Short:
\p{Yezi}; NOT \p{Block=Yezidi}) (60)
\p{Yi} \p{Script_Extensions=Yi} (1246)
X \p{Yi_Radicals} \p{Block=Yi_Radicals} (64)
X \p{Yi_Syllables} \p{Block=Yi_Syllables} (1168)
\p{Yiii} \p{Yi} (= \p{Script_Extensions=Yi}) (1246)
X \p{Yijing} \p{Yijing_Hexagram_Symbols} (= \p{Block=
Yijing_Hexagram_Symbols}) (64)
X \p{Yijing_Hexagram_Symbols} \p{Block=Yijing_Hexagram_Symbols}
(Short: \p{InYijing}) (64)
\p{Z} \pZ \p{Separator} (= \p{General_Category=
Separator}) (19)
\p{Zanabazar_Square} \p{Script_Extensions=Zanabazar_Square}
(Short: \p{Zanb}; NOT \p{Block=
Zanabazar_Square}) (72)
\p{Zanb} \p{Zanabazar_Square} (=
\p{Script_Extensions=Zanabazar_Square})
(NOT \p{Block=Zanabazar_Square}) (72)
\p{Zinh} \p{Inherited} (= \p{Script_Extensions=
Inherited}) (558)
\p{Zl} \p{Line_Separator} (= \p{General_Category=
Line_Separator}) (1)
X \p{Znamenny_Music} \p{Znamenny_Musical_Notation} (= \p{Block=
Znamenny_Musical_Notation}) (208)
X \p{Znamenny_Musical_Notation} \p{Block=Znamenny_Musical_Notation}
(Short: \p{InZnamennyMusic}) (208)
\p{Zp} \p{Paragraph_Separator} (=
\p{General_Category=
Paragraph_Separator}) (1)
\p{Zs} \p{Space_Separator} (=
\p{General_Category=Space_Separator})
(17)
\p{Zyyy} \p{Common} (= \p{Script_Extensions=
Common}) (8585)
\p{Zzzz} \p{Unknown} (= \p{Script_Extensions=
Unknown}) (959_049 plus all above-
Unicode code points)
💀 Legal "\p{}" and "\P{}" constructs that match no characters 💀
okay bestie this part is so unserious — Unicode literally has property-value pairs that match absolutely nothing right now. Why do they exist? Two reasons, and neither is a scam: either they're obsolete, or they were added for symmetry with other forms and no language using them has been encoded yet. So they're sitting there, valid to write, matching zero code points. In this version of Unicode, these are the ones that match nothing:
\p{Canonical_Combining_Class=Attached_Below_Left}\p{Canonical_Combining_Class=CCC133}\p{Grapheme_Cluster_Break=E_Base}\p{Grapheme_Cluster_Break=E_Base_GAZ}\p{Grapheme_Cluster_Break=E_Modifier}\p{Grapheme_Cluster_Break=Glue_After_Zwj}\p{Word_Break=E_Base}\p{Word_Break=E_Base_GAZ}\p{Word_Break=E_Modifier}\p{Word_Break=Glue_After_Zwj}
fr fr if you're matching against one of these and wondering why your regex never fires, it's not you, it's the property. It's empty by design. 💅
📚 Properties accessible through Unicode::UCD 📚
So you wanna peek at the value of any Unicode character property (heads up: not the Perl extensions, just the real Unicode ones) for a single code point? That's a "charprop()" in Unicode::UCD job. And if you want everything all at once, "charprops_all()" in Unicode::UCD hands you the values of all the Unicode properties for a given code point. Chef's kiss. 🎀
Besides those, every single Unicode character property mentioned above — except the ones flagged as being for internal use by Perl — is also reachable through "prop_invlist()" in Unicode::UCD.
Now, real talk: because of what these properties are, not all of them are suitable for regular expression matches, and same goes for prop_invlist(). The rest of the non-provisional, non-internal ones are accessible via "prop_invmap()" in Unicode::UCD — with the exception of any that this Perl installation didn't include (peep below to see which ones those are). 👀
For compatibility with other parts of Perl, all the single forms given in the table in the section above are recognized. BUT — and this is the plot twist 🫣 — there are some ambiguities between certain Perl extensions and the Unicode properties, and every single one of them is silently resolved in favor of the official Unicode property. To avoid surprises, you should only use prop_invmap() for the forms listed in the table below, which leaves out the non-recommended ones.
The affected forms are the Perl single-form equivalents of Unicode properties — like how "\p{sc}" is a single-form equivalent of "\p{gc=sc}", which prop_invmap() treats as the "Script" property, whose short name is "sc". The table flags the current ambiguities in the INFO column, and those entries begin with the word "NOT". 🚩
okay so before we get into the big table, lemme set the vibe real quick 🫶
The standard Unicode properties listed below are all documented over at http://www.unicode.org/reports/tr44/; and Perl_Decimal_Digit? that one's documented in "prop_invmap()" in Unicode::UCD. The other Perl extensions are chillin' in "Other Properties" in perlunicode; ✨
now let's talk about how to actually read this table, because the way it's structured is honestly giving organized 💅
- The first column is a name for the property.
- The second column is an alternative name, if any, plus possibly some annotations.
And about that alternative name — it's the property's full name, unless that would simply repeat the first column, in which case the second column instead indicates the property's short name (if different). The annotations are given only in the entry for the full name, so don't go looking for them twice 🔍
The annotations for binary properties include a list of the first few ranges that the property matches. And to avoid any ambiguity, the SPACE character is represented as "\x20". not me obsessing over that little detail 😭
If a property is obsolete, etc, the entry will be flagged with the same characters used in the table in the section above, likeDorS. So if you see those letters, that's the flag, bestie — pay attention 👀
and here's the header, so you know what's what:
NAME INFO
the table itself is coming, stay with me 🌈
Age— bare name, no alias drama, she's justAge.AHex— short forASCII_Hex_Digit.All— (Perl extension). Every code point, even the ones living above Unicode. Same asqr/./s. Range:U+0000..infinity✨Alnum— alias forXPosixAlnum. (Perl extension)Alpha— short forAlphabetic.Alphabetic— (Short:Alpha).[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..02C1,U+02C6..02D1,U+02E0..02E4,U+02EC,U+02EE...Any— (Perl extension). All Unicode code points, no notes.U+0000..10FFFFASCII— alias forBlock=Basic_Latin. (Perl extension).[\x00-\x7f]ASCII_Hex_Digit— (Short:AHex).[0-9A-Fa-f]Assigned— (Perl extension). Every code point that's actually assigned to something.U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...Bc— short forBidi_Class.Bidi_C— short forBidi_Control.Bidi_Class— (Short:bc).Bidi_Control— (Short:Bidi_C).U+061C,U+200E..200F,U+202A..202E,U+2066..2069Bidi_M— short forBidi_Mirrored.Bidi_Mirrored— (Short:Bidi_M).[\(\)<>\[\]\{\}\xab\xbb],U+0F3A..0F3D,U+169B..169C,U+2039..203A,U+2045..2046,U+207D..207E...Bidi_Mirroring_Glyph— (Short:bmg).Bidi_Paired_Bracket— (Short:bpb).Bidi_Paired_Bracket_Type— (Short:bpt).Blank— alias forXPosixBlank. (Perl extension)Blk— short forBlock.Block— (Short:blk).Bmg— short forBidi_Mirroring_Glyph.Bpb— short forBidi_Paired_Bracket.Bpt— short forBidi_Paired_Bracket_Type.Canonical_Combining_Class— (Short:ccc).Case_Folding— (Short:cf).Case_Ignorable— (Short:CI).[\'.:\^`\xa8\xad\xaf\xb4\xb7-\xb8],U+02B0..036F,U+0374..0375,U+037A,U+0384..0385,U+0387...Cased—[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..01BA,U+01BC..01BF,U+01C4..0293,U+0295..02B8,U+02C0..02C1...Category— alias forGeneral_Category.Ccc— short forCanonical_Combining_Class.CE— short forComposition_Exclusion.Cf— this one meansCase_Folding; NOTcfmeaningGeneral_Category=Format. Read it twice bestie, it trips people up 💀Changes_When_Casefolded— (Short:CWCF).[A-Z\xb5\xc0-\xd6\xd8-\xdf],U+0100,U+0102,U+0104,U+0106,U+0108...Changes_When_Casemapped— (Short:CWCM).[A-Za-z\xb5\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..0137,U+0139..018C,U+018E..01A9,U+01AC..01B9,U+01BC..01BD...Changes_When_Lowercased— (Short:CWL).[A-Z\xc0-\xd6\xd8-\xde],U+0100,U+0102,U+0104,U+0106,U+0108...Changes_When_NFKC_Casefolded— (Short:CWKCF).[A-Z\xa0\xa8\xaa\xad\xaf\xb2-\xb5\xb8-\xba\xbc-\xbe\xc0-\xd6\xd8-\xdf],U+0100,U+0102,U+0104,U+0106,U+0108...Changes_When_Titlecased— (Short:CWT).[a-z\xb5\xdf-\xf6\xf8-\xff],U+0101,U+0103,U+0105,U+0107,U+0109...Changes_When_Uppercased— (Short:CWU).[a-z\xb5\xdf-\xf6\xf8-\xff],U+0101,U+0103,U+0105,U+0107,U+0109...CI— short forCase_Ignorable.Cntrl— alias forXPosixCntrl(=General_Category=Control). (Perl extension)Comp_Ex— short forFull_Composition_Exclusion.Composition_Exclusion— (Short:CE).U+0958..095F,U+09DC..09DD,U+09DF,U+0A33,U+0A36,U+0A59..0A5B...CWCF— short forChanges_When_Casefolded.CWCM— short forChanges_When_Casemapped.CWKCF— short forChanges_When_NFKC_Casefolded.CWL— short forChanges_When_Lowercased.CWT— short forChanges_When_Titlecased.CWU— short forChanges_When_Uppercased.Dash—[\-],U+058A,U+05BE,U+1400,U+1806,U+2010..2015...Decomposition_Mapping— (Short:dm).Decomposition_Type— (Short:dt).Default_Ignorable_Code_Point— (Short:DI).[\xad],U+034F,U+061C,U+115F..1160,U+17B4..17B5,U+180B..180F...Dep— short forDeprecated.Deprecated— (Short:Dep).U+0149,U+0673,U+0F77,U+0F79,U+17A3..17A4,U+206A..206F...DI— short forDefault_Ignorable_Code_Point.Dia— short forDiacritic.Diacritic— (Short:Dia).[\^`\xa8\xaf\xb4\xb7-\xb8],U+02B0..034E,U+0350..0357,U+035D..0362,U+0374..0375,U+037A...Digit— alias forXPosixDigit(=General_Category=Decimal_Number). (Perl extension)Dm— short forDecomposition_Mapping.Dt— short forDecomposition_Type.Ea— short forEast_Asian_Width.East_Asian_Width— (Short:ea).EBase— short forEmoji_Modifier_Base.EComp— short forEmoji_Component.EMod— short forEmoji_Modifier.Emoji—[#*0-9\xa9\xae],U+203C,U+2049,U+2122,U+2139,U+2194..2199... ✨🦋Emoji_Component— (Short:EComp).[#*0-9],U+200D,U+20E3,U+FE0F,U+1F1E6..1F1FF,U+1F3FB..1F3FF...Emoji_Modifier— (Short:EMod).U+1F3FB..1F3FFEmoji_Modifier_Base— (Short:EBase).U+261D,U+26F9,U+270A..270D,U+1F385,U+1F3C2..1F3C4,U+1F3C7...Emoji_Presentation— (Short:EPres).U+231A..231B,U+23E9..23EC,U+23F0,U+23F3,U+25FD..25FE,U+2614..2615...EPres— short forEmoji_Presentation.EqUIdeo— short forEquivalent_Unified_Ideograph.Equivalent_Unified_Ideograph— (Short:EqUIdeo).Ext— short forExtender.Extended_Pictographic— (Short:ExtPict).[\xa9\xae],U+203C,U+2049,U+2122,U+2139,U+2194..2199...Extender— (Short:Ext).[\xb7],U+02D0..02D1,U+0640,U+07FA,U+0A71,U+0AFB...ExtPict— short forExtended_Pictographic.Full_Composition_Exclusion— (Short:Comp_Ex).U+0340..0341,U+0343..0344,U+0374,U+037E,U+0387,U+0958..095F...Gc— short forGeneral_Category.GCB— short forGrapheme_Cluster_Break.General_Category— (Short:gc).Gr_Base— short forGrapheme_Base.Gr_Ext— short forGrapheme_Extend.Graph— alias forXPosixGraph. (Perl extension)Grapheme_Base— (Short:Gr_Base).[\x20-\x7e\xa0-\xac\xae-\xff],U+0100..02FF,U+0370..0377,U+037A..037F,U+0384..038A,U+038C...Grapheme_Cluster_Break— (Short:GCB).Grapheme_Extend— (Short:Gr_Ext).U+0300..036F,U+0483..0489,U+0591..05BD,U+05BF,U+05C1..05C2,U+05C4..05C5...Hangul_Syllable_Type— (Short:hst).Hex— short forHex_Digit.Hex_Digit— (Short:Hex).[0-9A-Fa-f],U+FF10..FF19,U+FF21..FF26,U+FF41..FF46HorizSpace— alias forXPosixBlank. (Perl extension)Hst— short forHangul_Syllable_Type.D Hyphen— (yes, thatDis right there in the listing, don't @ me)[\-\xad],U+058A,U+1806,U+2010..2011,U+2E17,U+30FB... Supplanted byLine_Breakproperty values; seewww.unicode.org/reports/tr14ID_Compat_Math_Continue—[\xb2-\xb3\xb9],U+2070,U+2074..207E,U+2080..208E,U+2202,U+2207...ID_Compat_Math_Start—U+2202,U+2207,U+221E,U+1D6C1,U+1D6DB,U+1D6FB...ID_Continue— (Short:IDC).[0-9A-Z_a-z\xaa\xb5\xb7\xba\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..02C1,U+02C6..02D1,U+02E0..02E4,U+02EC,U+02EE...ID_Start— (Short:IDS).[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..02C1,U+02C6..02D1,U+02E0..02E4,U+02EC,U+02EE...IDC— short forID_Continue.Identifier_Status— bare name, no short form, she's mysterious like that.Identifier_Type— same, bare name, no alias.Ideo— short forIdeographic.Ideographic— (Short:Ideo).U+3006..3007,U+3021..3029,U+3038..303A,U+3400..4DBF,U+4E00..9FFF,U+F900..FA6D...IDS— short forID_Start.IDS_Binary_Operator— (Short:IDSB).U+2FF0..2FF1,U+2FF4..2FFD,U+31EFIDS_Trinary_Operator— (Short:IDST).U+2FF2..2FF3IDS_Unary_Operator— (Short:IDSU).U+2FFE..2FFFIDSB— short forIDS_Binary_Operator.IDST— short forIDS_Trinary_Operator.IDSU— short forIDS_Unary_Operator.In— alias forPresent_In. (Perl extension)InCB— short forIndic_Conjunct_Break.Indic_Conjunct_Break— (Short:InCB).Indic_Positional_Category— (Short:InPC).Indic_Syllabic_Category— (Short:InSC).InPC— short forIndic_Positional_Category.InSC— short forIndic_Syllabic_Category.Isc— short forISO_Comment; NOTiscmeaningGeneral_Category=Other. Same energy as theCfthing — do not get got 💅ISO_Comment— (Short:isc).Jg— short forJoining_Group.Join_C— short forJoin_Control.Join_Control— (Short:Join_C).U+200C..200DJoining_Group— (Short:jg).Joining_Type— (Short:jt).Jt— short forJoining_Type.kEH_Cat— bare name, just vibes and a long-form key.kEH_Core— bare name, no alias.kEH_Desc— bare name, no alias.kEH_Func— bare name, no alias.kEH_FVal— bare name, no alias.kEH_HG— bare name, no alias.kEH_IFAO— bare name, no alias.kEH_JSesh— no extra deets, just a name, and she's serving mystery 💅kEH_NoMirror— coversU+13081,U+13084,U+130BB,U+130BD✨kEH_NoRotate— coversU+13021,U+1303F,U+130AD,U+130B7,U+13131,U+131B1... 🌀kEH_UniK— another one with no description, iconic 🦋Lb— alias forLine_Break🌸Lc—Lowercase_Mapping; NOT'lc'meaning'General_Category=Cased_Letter'🚨Line_Break— short form:lb💖LOE— alias forLogical_Order_Exception✨Logical_Order_Exception— short form:LOE. coversU+0E40..0E44,U+0EC0..0EC4,U+19B5..19B7,U+19BA,U+AAB5..AAB6,U+AAB9... 🎀Lower— alias forLowercase🌈Lowercase— short form:Lower. covers[a-z\xaa\xb5\xba\xdf-\xf6\xf8-\xff],U+0101,U+0103,U+0105,U+0107,U+0109... 💜Lowercase_Mapping— short form:lc🌸Math— covers[+<=>\^\|~\xac\xb1\xd7\xf7],U+03D0..03D2,U+03D5,U+03F0..03F1,U+03F4..03F6,U+0606..0608... ➗MCM— alias forModifier_Combining_Mark🎀Modifier_Combining_Mark— short form:MCM. coversU+0654..0655,U+0658,U+06DC,U+06E3,U+06E7..06E8,U+08CA..08CB... ✨Na— alias forName🌸Na1— alias forUnicode_1_Name💖Name— short form:na🦋Name_Alias— just vibing, no extra details 💅NChar— alias forNoncharacter_Code_Point✨NFC_QC— alias forNFC_Quick_Check🎀NFC_Quick_Check— short form:NFC_QC💖NFD_QC— alias forNFD_Quick_Check🌸NFD_Quick_Check— short form:NFD_QC🌈NFKC_Casefold— short form:NFKC_CF💜NFKC_CF— alias forNFKC_Casefold✨NFKC_QC— alias forNFKC_Quick_Check🎀NFKC_Quick_Check— short form:NFKC_QC💖NFKC_SCF— alias forNFKC_Simple_Casefold🌸NFKC_Simple_Casefold— short form:NFKC_SCF🦋NFKD_QC— alias forNFKD_Quick_Check✨NFKD_Quick_Check— short form:NFKD_QC💅Noncharacter_Code_Point— short form:NChar. coversU+FDD0..FDEF,U+FFFE..FFFF,U+1FFFE..1FFFF,U+2FFFE..2FFFF,U+3FFFE..3FFFF,U+4FFFE..4FFFF... 🚫Nt— alias forNumeric_Type🔢Numeric_Type— short form:nt💖Numeric_Value— short form:nv✨Nv— alias forNumeric_Value🌸Pat_Syn— alias forPattern_Syntax🎀Pat_WS— alias forPattern_White_Space💜Pattern_Syntax— short form:Pat_Syn. covers`[!\"#\$\%&\'\(\)*+,\-.\/:;<=>?\@\[\\\]\^`\{\|\}~\xa1-\xa7\xa9\xab-\xac\xae\xb0-\xb1\xb6\xbb\xbf\xd7\xf7]`,U+2010..2027,U+2030..203E,U+2041..2053,U+2055..205E,U+2190..245F... 🔣Pattern_White_Space— short form:Pat_WS. covers[\t\n\cK\f\r\x20\x85],U+200E..200F,U+2028..2029🌸PCM— alias forPrepended_Concatenation_Mark🎀Perl_Decimal_Digit— (Perl extension) 💅PerlSpace—PosixSpace. (Perl extension) ✨PerlWord—PosixWord. (Perl extension) 💖PosixAlnum— (Perl extension). covers[0-9A-Za-z]🌈PosixAlpha— (Perl extension). covers[A-Za-z]🌸PosixBlank— (Perl extension). covers[\t\x20]💜PosixCntrl— (Perl extension). ASCII control characters:ACK,BEL,BS,CAN,CR,DC1,DC2,DC3,DC4,DEL,DLE,ENQ,EOM,EOT,ESC,ETB,ETX,FF,FS,GS,HT,LF,NAK,NUL,RS,SI,SO,SOH,STX,SUB,SYN,US,VT😈PosixDigit— (Perl extension). covers[0-9]🔢PosixGraph— (Perl extension). covers`[!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@A-Z\[\\\]\^_`a-z\{\|\}~]`🎨PosixLower— (Perl extension). covers[a-z]🌸PosixPrint— (Perl extension). covers[\x20-\x7e]🖨️PosixPunct— (Perl extension). covers`[!\"#\$\%&\'\(\)*+,\-.\/:;<=>?\@\[\\\]\^_`\{\|\}~]`✨PosixSpace— (Perl extension). covers[\t\n\cK\f\r\x20]🌬️PosixUpper— (Perl extension). covers[A-Z]🔠PosixWord— (Perl extension).\w, restricted to ASCII. covers[0-9A-Z_a-z]📝PosixXDigit—ASCII_Hex_Digit. (Perl extension). covers[0-9A-Fa-f]🔢Prepended_Concatenation_Mark— short form:PCM. coversU+0600..0605,U+06DD,U+070F,U+0890..0891,U+08E2,U+110BD... 🎀Present_In— short form:In. (Perl extension) 💖Print—XPosixPrint. (Perl extension) 🖨️Punct—General_Category=Punctuation. (Perl extension). covers[!\"#\%&\'\(\)*,\-.\/:;?\@\[\\\]_\{\}\xa1\xa7\xab\xb6-\xb7\xbb\xbf],U+037E,U+0387,U+055A..055F,U+0589..058A,U+05BE... ❗QMark— alias forQuotation_Mark❝Quotation_Mark— short form:QMark. covers[\"\'\xab\xbb],U+2018..201F,U+2039..203A,U+2E42,U+300C..300F,U+301D..301F... 💬Radical— coversU+2E80..2E99,U+2E9B..2EF3,U+2F00..2FD5🀄Regional_Indicator— short form:RI. coversU+1F1E6..1F1FF🌍RI— alias forRegional_Indicator🇺🇳SB— alias forSentence_Break✂️Sc—Script; NOT'sc'meaning'General_Category=Currency_Symbol'💰Scf— alias forSimple_Case_Folding🔡Script— short form:sc📜Script_Extensions— short form:scx🧬Scx— alias forScript_Extensions🧬SD— alias forSoft_Dotted🦋Sentence_Break— short form:SB✂️Sentence_Terminal— short form:STerm. covers[!.?],U+0589,U+061D..061F,U+06D4,U+0700..0702,U+07F9... 🛑Sfc— alias forSimple_Case_Folding🔡Simple_Case_Folding— short form:scf🔡Simple_Lowercase_Mapping— short form:slc🔽Simple_Titlecase_Mapping— short form:stc🔤Simple_Uppercase_Mapping— short form:suc🔼Slc— alias forSimple_Lowercase_Mapping🔽Soft_Dotted— short form:SD. covers[i-j],U+012F,U+0249,U+0268,U+029D,U+02B2... 🦋Space— alias forWhite_Space🌌SpacePerl—XPosixSpace. (Perl extension) ✨Stc— alias forSimple_Titlecase_Mapping🔤STerm— alias forSentence_Terminal🛑Suc— alias forSimple_Uppercase_Mapping🔼Tc— alias forTitlecase_Mapping🔠Term— alias forTerminal_Punctuation❗Terminal_Punctuation— short form:Term. covers[!,.:;?],U+037E,U+0387,U+0589,U+05C3,U+060C... 🛑Title—Titlecase. (Perl extension) 🔠Titlecase— short form:Title. (Perl extension). (=\p{Gc=Lt}). coversU+01C5,U+01C8,U+01CB,U+01F2,U+1F88..1F8F,U+1F98..1F9F... 👑Titlecase_Mapping— short form:tc🔠Uc— alias forUppercase_Mapping🔼UIdeo— alias forUnified_Ideograph🈚Unicode—Any. (Perl extension) 🌐Unicode_1_Name— short form:na1📛Unified_Ideograph— short form:UIdeo. coversU+3400..4DBF,U+4E00..9FFF,U+FA0E..FA0F,U+FA11,U+FA13..FA14,U+FA1F... 🀄Upper— alias forUppercase🔠Uppercase— short form:Upper. covers[A-Z\xc0-\xd6\xd8-\xde],U+0100,U+0102,U+0104,U+0106,U+0108... 🔼Uppercase_Mapping— short form:uc🔼Variation_Selector— short form:VS. coversU+180B..180D,U+180F,U+FE00..FE0F,U+E0100..E01EF🎛️Vertical_Orientation— short form:vo↕️VertSpace— (Perl extension).\v. covers[\n\cK\f\r\x85],U+2028..2029🌊Vo— alias forVertical_Orientation↕️VS— alias forVariation_Selector🎛️WB— alias forWord_Break✂️White_Space— short form:WSpace. covers[\t\n\cK\f\r\x20\x85\xa0],U+1680,U+2000..200A,U+2028..2029,U+202F,U+205F... 🌬️Word—XPosixWord. (Perl extension) 📝Word_Break— short form:WB✂️WSpace— alias forWhite_Space🌬️XDigit—XPosixXDigit(=Hex_Digit). (Perl extension) 🔢XID_Continue— short form:XIDC. covers[0-9A-Z_a-z\xaa\xb5\xb7\xba\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..02C1,U+02C6..02D1,U+02E0..02E4,U+02EC,U+02EE... 🆔XID_Start— short form:XIDS. covers[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..02C1,U+02C6..02D1,U+02E0..02E4,U+02EC,U+02EE... 🆔XIDC— alias forXID_Continue🆔XIDS— alias forXID_Start🆔XPerlSpace—XPosixSpace. (Perl extension) ✨XPosixAlnum— short form:Alnum. (Perl extension). Alphabetic and (decimal) Numeric. covers[0-9A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..02C1,U+02C6..02D1,U+02E0..02E4,U+02EC,U+02EE... 🔤XPosixAlpha—Alphabetic. (Perl extension). covers[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..02C1,U+02C6..02D1,U+02E0..02E4,U+02EC,U+02EE... 🔠XPosixBlank— short form:Blank. (Perl extension).\h, Horizontal white space. covers[\t\x20\xa0],U+1680,U+2000..200A,U+202F,U+205F,U+3000⬜XPosixCntrl—General_Category=Control(short form:Cntrl). (Perl extension). Control characters. covers[\x00-\x1f\x7f-\x9f]😈XPosixDigit—General_Category=Decimal_Number(short form:Digit). (Perl extension).[0-9]+ all other decimal digits. covers[0-9],U+0660..0669,U+06F0..06F9,U+07C0..07C9,U+0966..096F,U+09E6..09EF... 🔢XPosixGraph— short form:Graph. (Perl extension). Characters that are graphical. covers`[!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@A-Z\[\\\]\^_`a-z\{\|\}~\xa1-\xff]`,U+0100..0377,🎨XPosixLower— Lowercase, bestie. (Perl extension.) That's[a-z\xaa\xb5\xba\xdf-\xf6\xf8-\xff], plusU+0101,U+0103,U+0105,U+0107,U+0109…XPosixPrint— (Short:Print.) (Perl extension.) The characters that are graphical plus the space characters (but like, no controls, absolutely not).[\x20-\x7e\xa0-\xff],U+0100..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1…XPosixPunct— (Perl extension.) It's giving\p{Punct}+ the ASCII-range\p{Symbol}. So:[!\"#\$\%&\'\(\)*+,\-.\/:;<=>?\@\[\\\]\^_`\{\|\}~\xa1\xa7\xab\xb6-\xb7\xbb\xbf],U+037E,U+0387,U+055A..055F,U+0589..058A,U+05BE…XPosixSpace— (Perl extension.)\sbut reaching beyond ASCII and vertical tab, periodt.[\t\n\cK\f\r\x20\x85\xa0],U+1680,U+2000..200A,U+2028..2029,U+202F,U+205F…XPosixUpper— Uppercase. (Perl extension.)[A-Z\xc0-\xd6\xd8-\xde],U+0100,U+0102,U+0104,U+0106,U+0108…XPosixWord— (Short:Word.) (Perl extension.) It's\w, but including beyond ASCII; =\p{Alnum}+\pM+\p{Pc}+\p{Join_Control}.[0-9A-Z_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..02C1,U+02C6..02D1,U+02E0..02E4,U+02EC,U+02EE…XPosixXDigit—Hex_Digit(Short:XDigit). (Perl extension.)[0-9A-Fa-f],U+FF10..FF19,U+FF21..FF26,U+FF41..FF46
✨ Properties accessible through other means ✨
Okay so some properties you can also grab through core function calls, no regex needed. These ones:
Lowercase_Mapping lc() and lcfirst()
Titlecase_Mapping ucfirst()
Uppercase_Mapping uc()
Also, Case_Folding is reachable through the /i modifier in regular expressions, the \F transliteration escape, and the fc operator. Slay.
Besides being able to say \p{Name=...}, the Name and Name_Aliases properties are accessible through the \N{} interpolation in double-quoted strings and regular expressions; and functions charnames::viacode(), charnames::vianame(), and charnames::string_vianame() (which require a use charnames (); to be specified.
Finally, most properties related to decomposition are accessible via Unicode::Normalize.
💀 Unicode character properties that are NOT accepted by Perl 💀
Not me getting an error for a few character properties in Unicode when they're used in a regular expression 😭. The non-Unihan ones are listed below, with the reasons they are not accepted, perhaps with work-arounds. The short names for the properties are listed enclosed in (parentheses). As described after the list, an installation can change the defaults and choose to accept any of these. The list is machine generated based on the choices made for the installation that generated this document.
Expands_On_NFC(XO_NFC)Expands_On_NFD(XO_NFD)Expands_On_NFKC(XO_NFKC)Expands_On_NFKD(XO_NFKD)
Deprecated by Unicode. These are characters that expand to more than one character in the specified normalization form, but whether they actually take up more bytes or not depends on the encoding being used. For example, a UTF-8 encoded character may expand to a different number of bytes than a UTF-32 encoded character.
Grapheme_Link(Gr_Link)
Duplicates ccc=vr (Canonical_Combining_Class=Virama)
Jamo_Short_Name(JSN)Other_Alphabetic(OAlpha)Other_Default_Ignorable_Code_Point(ODI)Other_Grapheme_Extend(OGr_Ext)Other_ID_Continue(OIDC)Other_ID_Start(OIDS)Other_Lowercase(OLower)Other_Math(OMath)Other_Uppercase(OUpper)
Used by Unicode internally for generating other properties and not intended to be used stand-alone
Script=Katakana_Or_Hiragana(sc=Hrkt)
Obsolete. All code points previously matched by this have been moved to Script=Common. Consider instead using Script_Extensions=Katakana or Script_Extensions=Hiragana (or both)
Script_Extensions=Katakana_Or_Hiragana(scx=Hrkt)
All code points that would be matched by this are matched by either Script_Extensions=Katakana or Script_Extensions=Hiragana
An installation can choose to allow any of these to be matched by downloading the Unicode database from <http://www.unicode.org/Public/> to $Config{privlib}/unicore/ in the Perl source tree, changing the controlling lists contained in the program $Config{privlib}/unicore/mktables and then re-compiling and installing. (%Config is available from the Config module).
Also, perl can be recompiled to operate on an earlier version of the Unicode standard. Further information is at $Config{privlib}/unicore/README.perl.
🌈 Other information in the Unicode data base 🌈
The Unicode data base is delivered in two different formats. The XML version is valid for more modern Unicode releases. The other version is a collection of files. The two are intended to give equivalent information. Perl uses the older form; this allows you to recompile Perl to use early Unicode releases. (iykyk 💅)
The only non-character property that Perl currently supports is Named Sequences, in which a sequence of code points is given a name and generally treated as a single entity. (Perl supports these via the \N{...} double-quotish construct, charnames::string_vianame(name) in charnames, and namedseq() in Unicode::UCD.
Below is a list of the files in the Unicode data base that Perl doesn't currently use, along with very brief descriptions of their purposes. Some of the names of the files have been shortened from those that Unicode uses, in order to allow them to be distinguishable from similarly named files on file systems for which only the first 8 characters of a name are significant.
auxiliary/GraphemeBreakTest.htmlauxiliary/LineBreakTest.htmlauxiliary/SentenceBreakTest.htmlauxiliary/WordBreakTest.html
Documentation of validation Tests
BidiCharacterTest.txtBidiTest.txt
Validation Tests
CJKRadicals.txt
Maps the kRSUnicode property values to corresponding code points
confusables.txtconfusablesSummary.txtDoNotEmit.txtintentional.txt
Currently unused by Perl
emoji/ReadMe.txtReadMe.txt
Documentation
EmojiSources.txt
Maps certain Unicode code points to their legacy Japanese cell-phone values
extracted/DName.txt
This file adds no new information not already present in other files
Index.txt
Alphabetical index of Unicode characters
NamedSqProv.txt
Named sequences proposed for inclusion in a later version of the Unicode Standard; if you need them now, you can append this file to NamedSequences.txt and recompile perl
NamesList.html
Describes the format and contents of NamesList.txt
NamesList.txt
Annotated list of characters
NormalizationCorrections.txt
Documentation of corrections already incorporated into the Unicode data base
NushuSources.txt
Specifies source material for Nushu characters
StandardizedVariants.html
Obsoleted as of Unicode 9.0, but previously provided a visual display of the standard variant sequences derived from StandardizedVariants.txt.
StandardizedVariants.txt
Certain glyph variations for character display are standardized. This lists the non-Unihan ones; the Unihan ones are also not used by Perl, and are in a separate Unicode data base <http://www.unicode.org/ivd>
TangutSources.txt
Specifies source mappings for Tangut ideographs and components. This data file also includes informative radical-stroke values that are used internally by Unicode
USourceData.txt
Documentation of status and cross reference of proposals for encoding by Unicode of Unihan characters
USourceGlyphs.pdf
Pictures of the characters in USourceData.txt
👀 SEE ALSO 👀
- <http://www.unicode.org/reports/tr44/>
- perlrecharclass
- perlunicode
and that's the whole page, bestie!! 🎀✨ you literally made it to the end of PERLUNIPROPS(1) and I'm so proud of you fr fr 🫶💖
this lil masterpiece is from perl v5.42.3, dated 2026-08-03, and it's iconic, no cap 💅👑
📦 where this page comes from
- fedora 43: perl-doc 5.42.3-524.fc43 · (GPL-1.0-or-later OR Artistic-1.0-Perl) AND Unicode-3.0 AND LicenseRef-Fedora-UltraPermissive
- fedora 44: perl-doc 5.42.3-525.fc44 · (GPL-1.0-or-later OR Artistic-1.0-Perl) AND Unicode-3.0 AND LicenseRef-Fedora-UltraPermissive
- 💖 girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms