PERLUNIPROPS(1perl)
๐ perluniprops โ the Unicode property index, but make it slay ๐
okay bestie, so this is perluniprops, part of the Perl Programmers Reference Guide. It's literally the index of Unicode Version 17.0.0 character properties in Perl, and I'm gonna walk you through every single bit of it, no cap. ๐ฆ
โจ NAME โจ
perluniprops โ index of Unicode Version 17.0.0 character properties in Perl. Periodt. ๐
๐ธ DESCRIPTION ๐ธ
So this doc is all about the part of the Unicode database that deals with character properties โ aka the part that's defined on single code points. (There's a little section called "Other information in the Unicode data base" further down that briefly mentions the other stuff Unicode gives you. Foreshadowing, iykyk.)
Perl can hand you access to all non-provisional Unicode character properties, though ngl not all of them are turned on by default. The ones that get left out are the Unihan properties plus certain deprecated or Unicode-internal properties. (Your install could recompile Perl's tables to change all that โ see "Unicode character properties that are NOT accepted by Perl" if you're curious.)
For most purposes, you get at Unicode properties from the Perl core through regular expression matches โ that's the next section, keep up. ๐
But for some special purposes, and to reach the properties that just don't vibe with regex matching, all the Unicode character properties Perl handles are accessible through the standard Unicode::UCD module โ see the section "Properties accessible through Unicode::UCD".
Perl also gives you some extra extensions and short-cut synonyms for Unicode properties, because of course it does. โจ
Real talk: this document just 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 โ check "Other Properties" in perlunicode for the tea on those. There's some detail about Blocks, Scripts, General_Category, and Bidi_Class in perlunicode, but if you want the full intricacies of the official Unicode properties, go read the Unicode standard itself. A good starting place is <http://www.unicode.org/reports/tr44/>.
Also!! You can define your own properties. See "User-Defined Character Properties" in perlunicode. Main character energy fr fr. ๐
Properties accessible through \p{} and \P{}
The Perl regex \p{} and \P{} constructs give you access to most of the Unicode character properties. The table below shows all these constructs, both single and compound forms. ๐
Compound forms have two components, separated by an equals sign or a colon. First component = the property name. Second component = the particular value of the property you're matching against. So for example, \p{Script_Extensions: Greek} and \p{Script_Extensions=Greek} both mean "match characters whose Script_Extensions property value is Greek". (And plot twist: Script_Extensions is an improved version of the Script property. glow up ๐
)
Single forms, like \p{Greek}, are mostly Perl-defined shortcuts for their equivalent compound forms, and the table shows these 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 a compound form โ one such is \p{Word}. Those are in the table too.
When Perl parses these constructs, it always ignores Upper/lower case differences everywhere within the {braces}. So \p{Greek} means the exact same thing as \p{greek}. But โ and this is important bestie โ changing the case of the p or the P before the left brace completely changes the meaning of the construct, from "match" (for \p{}) to "doesn't match" (for \P{}). Casing in this document is just for improved legibility, okay?
Also, white space, hyphens, and underscores are normally ignored everywhere between the {braces}, so you can freely add or remove them even if the /x modifier hasn't been specified on the regex. ๐
But!! 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
That means, for example, you can freely add or remove white space adjacent to (but 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 like, you can freely add or remove white space adjacent to (but within) the braces and the colon or equal sign. Slay.
๐ Obsolescence, but make it organized ๐
Some properties are considered obsolete by Unicode but are still available. There are several varieties of obsolescence, and you need to know them all:
Stabilized
A property may be stabilized. This designation doesn't 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 are marked with an 'S' in the table.
Deprecated
A property may be deprecated, maybe because its original intent got replaced by another property, or because its spec was somehow defective. This means its use is strongly discouraged โ so much so that a warning will be issued if it's used, 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 tell you why it's deprecated, plus maybe some advice.
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. This is 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 bestie, it is best to move away from them. ๐ซถ
A deprecated property may also be stabilized, but this 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 isn't actually a Unicode-specified obsolescence โ it applies to certain Perl extensions that exist for backwards compatibility but are discouraged from being used. These are 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 totally different. ๐ญ An 'X' flags each such entry in the table. Use the equivalent shown instead!
Here's the specific tea: 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 keeps defining new properties that begin with In, so it's quite possible a conflict will pop up in the future. The compound form is guaranteed to not become obsolete, and its meaning is clearer anyway. See "Blocks" in perlunicode for more info. ๐
User-defined properties must begin with In or Is. These override any Unicode property of the same name. (main character behaviour, honestly ๐)
๐ How to read the table ๐
The table below has two columns:
- Left column โ contains the
\p{}constructs to look up, possibly preceded by the flags mentioned above. - Right column โ contains info 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 gives its longer, more descriptive name. And if the left column is the longest name, the right column shows any equivalent shortest name, in both single and compound forms if applicable.
If braces aren't 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 too, and those get 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:
- The list includes all the matched characters in the 0-255 range, enclosed in the familiar
[brackets]just like a regex 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. (sneaky but fair ๐ )
For emphasis, those properties that match no code points at all are listed too, 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. (Yes, the original says "code pode points". We love a typo that ate. ๐ญ keeping the meaning tho)
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 here's the little Is-prefix situation, and it's honestly so simple: if and only if \p{Foo} exists, then \p{Is_Foo} and \p{IsFoo} are also valid, and all three mean the exact same thing. same vibe, three looks ๐
And similarly, \p{Foo=Bar} means the same as \p{Is_Foo=Bar} and \p{IsFoo=Bar}. (And the * up in there is restricted to something not beginning with an underscore, fyi.)
Now for binary properties, the synonyms go crazy: Yes, T, and True are all synonyms for Y. And No, F, and False are all synonyms for N. The table shows Y* and N* to indicate exactly this, and it doesn't bother with separate entries for the other possibilities. ๐
๐จ BESTIE WARNING ๐จ not all properties that have valuesYesandNoare binary!! Those ones spell out all of their values without using this wild card, and they carry a"NOT"clause in their description that highlights the fact that they are not binary. They also require the compound form to match them, whereas true binary properties have both single and compound forms available. don't get caught lacking ๐
Also keep in mind: all non-essential underscores are removed in the display of the short names below. (aesthetic. we love a clean look.)
Legend summary:
*is a wild-card(\d+)in the info column gives the number of Unicode code points matched by this propertyDmeans this is deprecatedOmeans this is obsoleteSmeans this is stabilizedTmeans tighter (stricter) name matching appliesXmeans use of this form is discouraged, and may not be stable?means this property is considered provisional by Unicode, and may be changed or removed in some future version of the Unicode Standard
and now, the moment we've all been waiting for โ presenting the table head โจ
NAME INFO
\p{Adlam}โ same set as\p{Script_Extensions=Adlam}(short form:\p{Adlm}; and it is NOT\p{Block=Adlam}, don't get it twisted bestie) โ full count:92๐\p{Adlm}โ the cute shorthand for\p{Adlam}(=\p{Script_Extensions=Adlam}) and again NOT\p{Block=Adlam}โ92๐ฆX\p{Aegean_Numbers}โ literally just\p{Block=Aegean_Numbers}โ64๐
okay bestie, breathe. the next stretch is the Age era and there are a LOT of them. I'm not skipping a single one, we're getting through every last release ๐
T\p{Age: 1.1}โ the colon-flavored way of saying\p{Age=V1_1}โ33_979๐ฐ๏ธT\p{Age: 2.0}โ same set as\p{Age=V2_0}โ144_521T\p{Age: 6.1}โ same set as\p{Age=V6_1}โ732T\p{Age: 6.2}โ same set as\p{Age=V6_2}โ literally1๐ญ\p{Age: Unassigned}โ this code point's usage has not been assigned in any Unicode release thus far. (short:\p{Age=NA}) โ814_664, plus every single above-Unicode code point:U+0378..0379, U+0380..0383, U+038B, U+038D, U+03A2, U+0530 ...๐\p{Age: V1_1}โ this 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 ...\p{Age: V2_0}โ this code point's usage was introduced in version 2.0; also go peep the PropertyPresent_In๐ โ144_521:U+0591..05A1, U+05A3..05AF, U+05C4, U+0F00..0F47, U+0F49..0F69, U+0F71..0F8B ...T\p{Age: 2.1}โ same set as\p{Age=V2_1}โ2\p{Age: V2_1}โ usage introduced in version 2.1; also see the PropertyPresent_Inโ2:U+20AC, U+FFFCT\p{Age: 3.0}โ same set as\p{Age=V3_0}โ10_307\p{Age: V3_0}โ usage introduced in version 3.0; also see the PropertyPresent_Inโ10_307:U+01F6..01F9, U+0218..021F, U+0222..0233, U+02A9..02AD, U+02DF, U+02EA..02EE ...T\p{Age: 3.1}โ same set as\p{Age=V3_1}โ44_978\p{Age: V3_1}โ usage introduced in version 3.1; also see the PropertyPresent_Inโ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}โ same set as\p{Age=V3_2}โ1016\p{Age: V3_2}โ usage introduced in version 3.2; also see the PropertyPresent_Inโ1016:U+0220, U+034F, U+0363..036F, U+03D8..03D9, U+03F6, U+048A..048B ...T\p{Age: 4.0}โ same set as\p{Age=V4_0}โ1226\p{Age: V4_0}โ usage introduced in version 4.0; also see the PropertyPresent_Inโ1226:U+0221, U+0234..0236, U+02AE..02AF, U+02EF..02FF, U+0350..0357, U+035D..035F ...T\p{Age: 4.1}โ same set as\p{Age=V4_1}โ1273\p{Age: V4_1}โ usage introduced in version 4.1; also see the PropertyPresent_Inโ1273:U+0237..0241, U+0358..035C, U+03FC..03FF, U+04F6..04F7, U+05A2, U+05C5..05C7 ...T\p{Age: 5.0}โ same set as\p{Age=V5_0}โ1369\p{Age: V5_0}โ usage introduced in version 5.0; also see the PropertyPresent_Inโ1369:U+0242..024F, U+037B..037D, U+04CF, U+04FA..04FF, U+0510..0513, U+05BA ...T\p{Age: 5.1}โ same set as\p{Age=V5_1}โ1624\p{Age: V5_1}โ usage introduced in version 5.1; also see the PropertyPresent_Inโ1624:U+0370..0373, U+0376..0377, U+03CF, U+0487, U+0514..0523, U+0606..060A ...T\p{Age: 5.2}โ same set as\p{Age=V5_2}โ6648\p{Age: V5_2}โ usage introduced in version 5.2; also see the PropertyPresent_Inโ6648:U+0524..0525, U+0800..082D, U+0830..083E, U+0900, U+094E, U+0955 ...T\p{Age: 6.0}โ same set as\p{Age=V6_0}โ2088\p{Age: V6_0}โ usage introduced in version 6.0; also see the PropertyPresent_Inโ2088:U+0526..0527, U+0620, U+065F, U+0840..085B, U+085E, U+093A..093B ...\p{Age: V6_1}โ usage introduced in version 6.1; also see the PropertyPresent_Inโ732:U+058F, U+0604, U+08A0, U+08A2..08AC, U+08E4..08FE, U+0AF0 ...\p{Age: V6_2}โ usage introduced in version 6.2; also see the PropertyPresent_Inโ1:U+20BAT\p{Age: 6.3}โ same set as\p{Age=V6_3}โ5\p{Age: V6_3}โ usage introduced in version 6.3; also see the PropertyPresent_Inโ5:U+061C, U+2066..2069T\p{Age: 7.0}โ same set as\p{Age=V7_0}โ2834\p{Age: V7_0}โ usage introduced in version 7.0; also see the PropertyPresent_Inโ2834:U+037F, U+0528..052F, U+058D..058E, U+0605, U+08A1, U+08AD..08B2 ...T\p{Age: 8.0}โ same set as\p{Age=V8_0}โ7716\p{Age: V8_0}โ usage introduced in version 8.0; also see the PropertyPresent_Inโ7716:U+08B3..08B4, U+08E3, U+0AF9, U+0C5A, U+0D5F, U+13F5 ...T\p{Age: 9.0}โ same set as\p{Age=V9_0}โ7500\p{Age: V9_0}โ usage introduced in version 9.0; also see the PropertyPresent_Inโ7500:U+08B6..08BD, U+08D4..08E2, U+0C80, U+0D4F, U+0D54..0D56, U+0D58..0D5E ...T\p{Age: 10.0}โ same set as\p{Age=V10_0}โ8518\p{Age: V10_0}โ usage introduced in version 10.0; also see the PropertyPresent_Inโ8518:U+0860..086A, U+09FC..09FD, U+0AFA..0AFF, U+0D00, U+0D3B..0D3C, U+1CF7 ...T\p{Age: 11.0}โ same set as\p{Age=V11_0}โ684\p{Age: V11_0}โ usage introduced in version 11.0; also see the PropertyPresent_Inโ684:U+0560, U+0588, U+05EF, U+07FD..07FF, U+08D3, U+09FE ...T\p{Age: 12.0}โ same set as\p{Age=V12_0}โ554\p{Age: V12_0}โ usage introduced in version 12.0; also see the PropertyPresent_Inโ554:U+0C77, U+0E86, U+0E89, U+0E8C, U+0E8E..0E93, U+0E98 ...T\p{Age: 12.1}โ same set as\p{Age=V12_1}โ1\p{Age: V12_1}โ usage introduced in version 12.1; also see the PropertyPresent_Inโ1:U+32FFT\p{Age: 13.0}โ same set as\p{Age=V13_0}โ5930\p{Age: V13_0}โ usage introduced in version 13.0; also see the PropertyPresent_Inโ5930:U+08BE..08C7, U+0B55, U+0D04, U+0D81, U+1ABF..1AC0, U+2B97 ...T\p{Age: 14.0}โ same set as\p{Age=V14_0}โ838\p{Age: V14_0}โ usage introduced in version 14.0; also see the PropertyPresent_Inโ838:U+061D, U+0870..088E, U+0890..0891, U+0898..089F, U+08B5, U+08C8..08D2 ...T\p{Age: 15.0}โ same set as\p{Age=V15_0}โ4489\p{Age: V15_0}โ usage introduced in version 15.0; also see the PropertyPresent_Inโ4489:U+0CF3, U+0ECE, U+10EFD..10EFF, U+1123F..11241, U+11B00..11B09, U+11F00..11F10 ...T\p{Age: 15.1}โ same set as\p{Age=V15_1}โ627\p{Age: V15_1}โ usage introduced in version 15.1; also see the PropertyPresent_Inโ627:U+2FFC..2FFF, U+31EF, U+2EBF0..2EE5DT\p{Age: 16.0}โ same set as\p{Age=V16_0}โ5185\p{Age: V16_0}โ usage introduced in version 16.0; also see the PropertyPresent_Inโ5185:U+0897, U+1B4E..1B4F, U+1B7F, U+1C89..1C8A, U+2427..2429, U+31E4..31E5 ...T\p{Age: 17.0}โ same set as\p{Age=V17_0}โ4803\p{Age: V17_0}โ usage introduced in version 17.0; also see the PropertyPresent_Inโ4803:U+088F, U+0C5C, U+0CDC, U+1ACF..1ADD, U+1AE0..1AEB, U+20C1 ...\p{Age: NA}โ same thing as\p{Age=Unassigned}โ814_664plus all the above-Unicode code points ๐ซ
okay Age era = complete, we ate that entire list, nothing skipped, periodt ๐
\p{Aghb}โ\p{Caucasian_Albanian}(=\p{Script_Extensions=Caucasian_Albanian}) and 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:\p{All}โ literally every code point, including the ones vibing above Unicode. Same asqr/./s(1_114_112 plus all above-Unicode code points:U+0000..infinity)\p{Alnum}โ that's\p{XPosixAlnum}(148_191)\p{Alpha}โ that's\p{XPosixAlpha}(=\p{Alphabetic=Y}) (147_421)\p{Alpha: *}โ same as\p{Alphabetic: *}\p{Alphabetic}โ that's\p{XPosixAlpha}(=\p{Alphabetic=Y}) (147_421)\p{Alphabetic: N*}โ short form:\p{Alpha=N},\P{Alpha}(966_691 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 form:\p{Alpha=Y},\p{Alpha}(147_421:[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}โ that's\p{Alphabetic_Presentation_Forms}(=\p{Block=Alphabetic_Presentation_Forms}) (80) - X
\p{Alphabetic_Presentation_Forms}โ that's\p{Block=Alphabetic_Presentation_Forms}(short form:\p{InAlphabeticPF}) (80) \p{Anatolian_Hieroglyphs}โ that's\p{Script_Extensions=Anatolian_Hieroglyphs}(short form:\p{Hluw}; NOT\p{Block=Anatolian_Hieroglyphs}) (583)- X
\p{Ancient_Greek_Music}โ that's\p{Ancient_Greek_Musical_Notation}(=\p{Block=Ancient_Greek_Musical_Notation}) (80) - X
\p{Ancient_Greek_Musical_Notation}โ that's\p{Block=Ancient_Greek_Musical_Notation}(short form:\p{InAncientGreekMusic}) (80) - X
\p{Ancient_Greek_Numbers}โ that's\p{Block=Ancient_Greek_Numbers}(80) - X
\p{Ancient_Symbols}โ that's\p{Block=Ancient_Symbols}(64) \p{Any}โ every single Unicode code point (1_114_112:U+0000..10FFFF)\p{Arab}โ that's\p{Arabic}(=\p{Script_Extensions=Arabic}) (NOT\p{Block=Arabic}) (1461)\p{Arabic}โ that's\p{Script_Extensions=Arabic}(short form:\p{Arab}; NOT\p{Block=Arabic}) (1461)- X
\p{Arabic_Ext_A}โ that's\p{Arabic_Extended_A}(=\p{Block=Arabic_Extended_A}) (96) - X
\p{Arabic_Ext_B}โ that's\p{Arabic_Extended_B}(=\p{Block=Arabic_Extended_B}) (48) - X
\p{Arabic_Ext_C}โ that's\p{Arabic_Extended_C}(=\p{Block=Arabic_Extended_C}) (64) - X
\p{Arabic_Extended_A}โ that's\p{Block=Arabic_Extended_A}(short form:\p{InArabicExtA}) (96) - X
\p{Arabic_Extended_B}โ that's\p{Block=Arabic_Extended_B}(short form:\p{InArabicExtB}) (48) - X
\p{Arabic_Extended_C}โ that's\p{Block=Arabic_Extended_C}(short form:\p{InArabicExtC}) (64) - X
\p{Arabic_Math}โ that's\p{Arabic_Mathematical_Alphabetic_Symbols}(=\p{Block=Arabic_Mathematical_Alphabetic_Symbols}) (256) - X
\p{Arabic_Mathematical_Alphabetic_Symbols}โ that's\p{Block=Arabic_Mathematical_Alphabetic_Symbols}(short form:\p{InArabicMath}) (256) - X
\p{Arabic_PF_A}โ that's\p{Arabic_Presentation_Forms_A}(=\p{Block=Arabic_Presentation_Forms_A}) (688) - X
\p{Arabic_PF_B}โ that's\p{Arabic_Presentation_Forms_B}(=\p{Block=Arabic_Presentation_Forms_B}) (144) - X
\p{Arabic_Presentation_Forms_A}โ that's\p{Block=Arabic_Presentation_Forms_A}(short form:\p{InArabicPFA}) (688) - X
\p{Arabic_Presentation_Forms_B}โ that's\p{Block=Arabic_Presentation_Forms_B}(short form:\p{InArabicPFB}) (144) - X
\p{Arabic_Sup}โ that's\p{Arabic_Supplement}(=\p{Block=Arabic_Supplement}) (48) - X
\p{Arabic_Supplement}โ that's\p{Block=Arabic_Supplement}(short form:\p{InArabicSup}) (48) \p{Armenian}โ that's\p{Script_Extensions=Armenian}(short form:\p{Armn}; NOT\p{Block=Armenian}) (97)\p{Armi}โ that's\p{Imperial_Aramaic}(=\p{Script_Extensions=Imperial_Aramaic}) (NOT\p{Block=Imperial_Aramaic}) (31)\p{Armn}โ that's\p{Armenian}(=\p{Script_Extensions=Armenian}) (NOT\p{Block=Armenian}) (97)- X
\p{Arrows}โ that's\p{Block=Arrows}(112) \p{ASCII}โ that's\p{Block=Basic_Latin}(128)\p{ASCII_Hex_Digit}โ that's\p{PosixXDigit}(=\p{ASCII_Hex_Digit=Y}) (22)\p{ASCII_Hex_Digit: N*}โ short form:\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 form:\p{AHex=Y},\p{AHex}(22:[0-9A-Fa-f])\p{Assigned}โ every code point that's actually been assigned (299_382:U+0000..0377, U+037A..037F, U+0384..038A, U+038C, U+038E..03A1, U+03A3..052F ...)\p{Avestan}โ that's\p{Script_Extensions=Avestan}(short form:\p{Avst}; NOT\p{Block=Avestan}) (64)\p{Avst}โ that's\p{Avestan}(=\p{Script_Extensions=Avestan}) (NOT\p{Block=Avestan}) (64)\p{Bali}โ that's\p{Balinese}(=\p{Script_Extensions=Balinese}) (NOT\p{Block=Balinese}) (127)\p{Balinese}โ that's\p{Script_Extensions=Balinese}(short form:\p{Bali}; NOT\p{Block=Balinese}) (127)\p{Bamu}โ that's\p{Bamum}(=\p{Script_Extensions=Bamum}) (NOT\p{Block=Bamum}) (657)\p{Bamum}โ that's\p{Script_Extensions=Bamum}(short form:\p{Bamu}; NOT\p{Block=Bamum}) (657)- X
\p{Bamum_Sup}โ that's\p{Bamum_Supplement}(=\p{Block=Bamum_Supplement}) (576) - X
\p{Bamum_Supplement}โ that's\p{Block=Bamum_Supplement}(short form:\p{InBamumSup}) (576) - X
\p{Basic_Latin}โ that's\p{ASCII}(=\p{Block=Basic_Latin}) (128) \p{Bass}โ that's\p{Bassa_Vah}(=\p{Script_Extensions=Bassa_Vah}) (NOT\p{Block=Bassa_Vah}) (36)\p{Bassa_Vah}โ that's\p{Script_Extensions=Bassa_Vah}(short form:\p{Bass}; NOT\p{Block=Bassa_Vah}) (36)\p{Batak}โ that's\p{Script_Extensions=Batak}(short form:\p{Batk}; NOT\p{Block=Batak}) (56)\p{Batk}โ that's\p{Batak}(=\p{Script_Extensions=Batak}) (NOT\p{Block=Batak}) (56)\p{Bc: *}โ same as\p{Bidi_Class: *}\p{Beng}โ that's\p{Bengali}(=\p{Script_Extensions=Bengali}) (NOT\p{Block=Bengali}) (114)\p{Bengali}โ that's\p{Script_Extensions=Bengali}(short form:\p{Beng}; NOT\p{Block=Bengali}) (114)\p{Berf}โ that's\p{Beria_Erfe}(=\p{Script_Extensions=Beria_Erfe}) (NOT\p{Block=Beria_Erfe}) (50)\p{Beria_Erfe}โ that's\p{Script_Extensions=Beria_Erfe}(short form:\p{Berf}; NOT\p{Block=Beria_Erfe}) (50)\p{Bhaiksuki}โ that's\p{Script_Extensions=Bhaiksuki}(short form:\p{Bhks}; NOT\p{Block=Bhaiksuki}) (97)\p{Bhks}โ that's\p{Bhaiksuki}(=\p{Script_Extensions=Bhaiksuki}) (NOT\p{Block=Bhaiksuki}) (97)\p{Bidi_C}โ that's\p{Bidi_Control}(=\p{Bidi_Control=Y}) (12)\p{Bidi_C: *}โ same as\p{Bidi_Control: *}\p{Bidi_Class: AL}โ that's\p{Bidi_Class=Arabic_Letter}(1731)\p{Bidi_Class: AN}โ that's\p{Bidi_Class=Arabic_Number}(73)\p{Bidi_Class: Arabic_Letter}โ short form:\p{Bc=AL}(1731:U+0608, U+060B, U+060D, U+061B..064A, U+066D..066F, U+0671..06D5 ...)\p{Bidi_Class: Arabic_Number}โ short form:\p{Bc=AN}(73:U+0600..0605, U+0660..0669, U+066B..066C, U+06DD, U+0890..0891, U+08E2 ...)\p{Bidi_Class: B}โ that's\p{Bidi_Class=Paragraph_Separator}(7)\p{Bidi_Class: BN}โ that's\p{Bidi_Class=Boundary_Neutral}(4016)\p{Bidi_Class: Boundary_Neutral}โ short form:\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 form:\p{Bc=CS}(15:[,.\/:\xa0], U+060C, U+202F, U+2044, U+FE50, U+FE52 ...)\p{Bidi_Class: CS}โ that's\p{Bidi_Class=Common_Separator}(15)\p{Bidi_Class: EN}โ that's\p{Bidi_Class=European_Number}(178)\p{Bidi_Class: ES}โ that's\p{Bidi_Class=European_Separator}(12)\p{Bidi_Class: ET}โ that's\p{Bidi_Class=European_Terminator}(92)\p{Bidi_Class: European_Number}โ short form:\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 form:\p{Bc=ES}(12:[+\-], U+207A..207B, U+208A..208B, U+2212, U+FB29, U+FE62..FE63 ...)\p{Bidi_Class: European_Terminator}โ short form:\p{Bc=ET}(92: `[#\$%\xa2-\xa5\xb0-\xb1], U+058F, U+0609..060A, U+066A, U+09F2..09F3,\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_407 plus all above-Unicode code points)\p{Bidi_Class: Left_To_Right}(Short:\p{Bc=L}) (1_095_407 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...)
okay that's a LOT of code points bestie, she's thriving ๐
\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}) (2067: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}(2067)\p{Bidi_Class: ON}ยท\p{Bidi_Class=Other_Neutral}(6854)\p{Bidi_Class: Other_Neutral}(Short:\p{Bc=ON}) (6854:[!\"&\'\(\)*;<=>?\@\[\\\]\^_`\{\|\}~\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)
and now the Bidi_Control girlies, slaying with their one single code point each ๐
\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)
not me noticing U+206A..infinity ๐ญ the range literally never ends, fr fr.
\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...)
Bidi_Paired_Bracket_Type?? brackets that know their partner, that's giving soulmate energy ๐ซถ
\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...)
\p{Blank}ยท\p{XPosixBlank}(18)
kay bestie, deep breath, entering BLOCK territory ๐ the alias situation down here is unhinged and you HAVE to read the little notes, they matter.
\p{Blk: *}ยท\p{Block: *}
READ THIS, no skimming โ Some blocks look identical to a script name but are NOT that thing. The classic glow-up trap:\p{Block: Adlam}is NOT\p{Adlam}and NOT\p{Is_Adlam}. Block โ script, periodt.
\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)
see the pattern? every time it's like "yes she's named after the script but she is NOT the script" ๐ญ iconic but devious.
\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: Beria_Erfe}(NOT\p{Beria_Erfe}NOR\p{Is_Beria_Erfe}) (64:U+16EA0..16EDF)\p{Block: Bhaiksuki}(NOT\p{Bhaiksuki}NOR\p{Is_Bhaiksuki}) (112:U+11C00..11C6F)\p{Block: Block_Elements}(32:U+2580..259F)
a block named Block_Elements, we love a self-aware queen ๐
\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)
and the blocks list keeps going, bestie โ grab a snack, we're only getting started ๐
okay bestie, we're still deep in the block properties list and it's giving Unicode encyclopedia, but we're gonna slay through it together, no cap ๐ โจ these are all the blocks starting with B, C, and D, and yes there are a lot, but every single one matters. periodt.
\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}โ (640)\p{Block: Carian}โ (NOT\p{Carian}NOR\p{Is_Carian}) (64:U+102A0..102DF)\p{Block: Caucasian_Albanian}โ (NOT\p{Caucasian_Albanian}NOR\p{Is_Caucasian_Albanian}) (64:U+10530..1056F)\p{Block: Chakma}โ (NOT\p{Chakma}NOR\p{Is_Chakma}) (80:U+11100..1114F)\p{Block: Cham}โ (NOT\p{Cham}NOR\p{Is_Cham}) (96:U+AA00..AA5F)\p{Block: Cherokee}โ (NOT\p{Cherokee}NOR\p{Is_Cherokee}) (96:U+13A0..13FF)\p{Block: Cherokee_Sup}\p{Block=Cherokee_Supplement}โ (80)\p{Block: Cherokee_Supplement}(Short:\p{Blk=CherokeeSup}) โ (80:U+AB70..ABBF)\p{Block: Chess_Symbols}โ (112:U+1FA00..1FA6F)\p{Block: Chorasmian}โ (NOT\p{Chorasmian}NOR\p{Is_Chorasmian}) (48:U+10FB0..10FDF)\p{Block: CJK}\p{Block=CJK_Unified_Ideographs}โ (20_992)\p{Block: CJK_Compat}\p{Block=CJK_Compatibility}โ (256)\p{Block: CJK_Compat_Forms}\p{Block=CJK_Compatibility_Forms}โ (32)\p{Block: CJK_Compat_Ideographs}\p{Block=CJK_Compatibility_Ideographs}โ (512)\p{Block: CJK_Compat_Ideographs_Sup}\p{Block=CJK_Compatibility_Ideographs_Supplement}โ (544)\p{Block: CJK_Compatibility}(Short:\p{Blk=CJKCompat}) โ (256:U+3300..33FF)\p{Block: CJK_Compatibility_Forms}(Short:\p{Blk=CJKCompatForms}) โ (32:U+FE30..FE4F)\p{Block: CJK_Compatibility_Ideographs}(Short:\p{Blk=CJKCompatIdeographs}) โ (512:U+F900..FAFF)\p{Block: CJK_Compatibility_Ideographs_Supplement}(Short:\p{Blk=CJKCompatIdeographsSup}) โ (544:U+2F800..2FA1F)\p{Block: CJK_Ext_A}\p{Block=CJK_Unified_Ideographs_Extension_A}โ (6592)\p{Block: CJK_Ext_B}\p{Block=CJK_Unified_Ideographs_Extension_B}โ (42_720)\p{Block: CJK_Ext_C}\p{Block=CJK_Unified_Ideographs_Extension_C}โ (4160)\p{Block: CJK_Ext_D}\p{Block=CJK_Unified_Ideographs_Extension_D}โ (224)\p{Block: CJK_Ext_E}\p{Block=CJK_Unified_Ideographs_Extension_E}โ (5776)\p{Block: CJK_Ext_F}\p{Block=CJK_Unified_Ideographs_Extension_F}โ (7488)\p{Block: CJK_Ext_G}\p{Block=CJK_Unified_Ideographs_Extension_G}โ (4944)\p{Block: CJK_Ext_H}\p{Block=CJK_Unified_Ideographs_Extension_H}โ (4192)\p{Block: CJK_Ext_I}\p{Block=CJK_Unified_Ideographs_Extension_I}โ (624)\p{Block: CJK_Ext_J}\p{Block=CJK_Unified_Ideographs_Extension_J}โ (4304)\p{Block: CJK_Radicals_Sup}\p{Block=CJK_Radicals_Supplement}โ (128)\p{Block: CJK_Radicals_Supplement}(Short:\p{Blk=CJKRadicalsSup}) โ (128:U+2E80..2EFF)\p{Block: CJK_Strokes}โ (48:U+31C0..31EF)\p{Block: CJK_Symbols}\p{Block=CJK_Symbols_And_Punctuation}โ (64)\p{Block: CJK_Symbols_And_Punctuation}(Short:\p{Blk=CJKSymbols}) โ (64:U+3000..303F)\p{Block: CJK_Unified_Ideographs}(Short:\p{Blk=CJK}) โ (20_992:U+4E00..9FFF)\p{Block: CJK_Unified_Ideographs_Extension_A}(Short:\p{Blk=CJKExtA}) โ (6592:U+3400..4DBF)\p{Block: CJK_Unified_Ideographs_Extension_B}(Short:\p{Blk=CJKExtB}) โ (42_720:U+20000..2A6DF)\p{Block: CJK_Unified_Ideographs_Extension_C}(Short:\p{Blk=CJKExtC}) โ (4160:U+2A700..2B73F)\p{Block: CJK_Unified_Ideographs_Extension_D}(Short:\p{Blk=CJKExtD}) โ (224:U+2B740..2B81F)\p{Block: CJK_Unified_Ideographs_Extension_E}(Short:\p{Blk=CJKExtE}) โ (5776:U+2B820..2CEAF)\p{Block: CJK_Unified_Ideographs_Extension_F}(Short:\p{Blk=CJKExtF}) โ (7488:U+2CEB0..2EBEF)\p{Block: CJK_Unified_Ideographs_Extension_G}(Short:\p{Blk=CJKExtG}) โ (4944:U+30000..3134F)\p{Block: CJK_Unified_Ideographs_Extension_H}(Short:\p{Blk=CJKExtH}) โ (4192:U+31350..323AF)\p{Block: CJK_Unified_Ideographs_Extension_I}(Short:\p{Blk=CJKExtI}) โ (624:U+2EBF0..2EE5F)\p{Block: CJK_Unified_Ideographs_Extension_J}(Short:\p{Blk=CJKExtJ}) โ (4304:U+323B0..3347F)\p{Block: Combining_Diacritical_Marks}(Short:\p{Blk=Diacriticals}) โ (112:U+0300..036F)\p{Block: Combining_Diacritical_Marks_Extended}(Short:\p{Blk=DiacriticalsExt}) โ (80:U+1AB0..1AFF)\p{Block: Combining_Diacritical_Marks_For_Symbols}(Short:\p{Blk=DiacriticalsForSymbols}) โ (48:U+20D0..20FF)\p{Block: Combining_Diacritical_Marks_Supplement}(Short:\p{Blk=DiacriticalsSup}) โ (64:U+1DC0..1DFF)\p{Block: Combining_Half_Marks}(Short:\p{Blk=HalfMarks}) โ (16:U+FE20..FE2F)\p{Block: Combining_Marks_For_Symbols}\p{Block=Combining_Diacritical_Marks_For_Symbols}โ (48)\p{Block: Common_Indic_Number_Forms}(Short:\p{Blk=IndicNumberForms}) โ (16:U+A830..A83F)\p{Block: Compat_Jamo}\p{Block=Hangul_Compatibility_Jamo}โ (96)\p{Block: Control_Pictures}โ (64:U+2400..243F)\p{Block: Coptic}โ (NOT\p{Coptic}NOR\p{Is_Coptic}) (128:U+2C80..2CFF)\p{Block: Coptic_Epact_Numbers}โ (32:U+102E0..102FF)\p{Block: Counting_Rod}\p{Block=Counting_Rod_Numerals}โ (32)\p{Block: Counting_Rod_Numerals}(Short:\p{Blk=CountingRod}) โ (32:U+1D360..1D37F)\p{Block: Cuneiform}โ (NOT\p{Cuneiform}NOR\p{Is_Cuneiform}) (1024:U+12000..123FF)\p{Block: Cuneiform_Numbers}\p{Block=Cuneiform_Numbers_And_Punctuation}โ (128)\p{Block: Cuneiform_Numbers_And_Punctuation}(Short:\p{Blk=CuneiformNumbers}) โ (128:U+12400..1247F)\p{Block: Currency_Symbols}โ (48:U+20A0..20CF)\p{Block: Cypriot_Syllabary}โ (64:U+10800..1083F)\p{Block: Cypro_Minoan}โ (NOT\p{Cypro_Minoan}NOR\p{Is_Cypro_Minoan}) (112:U+12F90..12FFF)\p{Block: Cyrillic}โ (NOT\p{Cyrillic}NOR\p{Is_Cyrillic}) (256:U+0400..04FF)\p{Block: Cyrillic_Ext_A}\p{Block=Cyrillic_Extended_A}โ (32)\p{Block: Cyrillic_Ext_B}\p{Block=Cyrillic_Extended_B}โ (96)\p{Block: Cyrillic_Ext_C}\p{Block=Cyrillic_Extended_C}โ (16)\p{Block: Cyrillic_Ext_D}\p{Block=Cyrillic_Extended_D}โ (96)\p{Block: Cyrillic_Extended_A}(Short:\p{Blk=CyrillicExtA}) โ (32:U+2DE0..2DFF)\p{Block: Cyrillic_Extended_B}(Short:\p{Blk=CyrillicExtB}) โ (96:U+A640..A69F)\p{Block: Cyrillic_Extended_C}(Short:\p{Blk=CyrillicExtC}) โ (16:U+1C80..1C8F)\p{Block: Cyrillic_Extended_D}(Short:\p{Blk=CyrillicExtD}) โ (96:U+1E030..1E08F)\p{Block: Cyrillic_Sup}\p{Block=Cyrillic_Supplement}โ (48)\p{Block: Cyrillic_Supplement}(Short:\p{Blk=CyrillicSup}) โ (48:U+0500..052F)\p{Block: Cyrillic_Supplementary}\p{Block=Cyrillic_Supplement}โ (48)\p{Block: Deseret}โ (80:U+10400..1044F)\p{Block: Devanagari}โ (NOT\p{Devanagari}NOR\p{Is_Devanagari}) (128:U+0900..097F)\p{Block: Devanagari_Ext}\p{Block=Devanagari_Extended}โ (32)\p{Block: Devanagari_Ext_A}\p{Block=Devanagari_Extended_A}โ (96)\p{Block: Devanagari_Extended}(Short:\p{Blk=DevanagariExt}) โ (32:U+A8E0..A8FF)\p{Block: Devanagari_Extended_A}(Short:\p{Blk=DevanagariExtA}) โ (96:U+11B00..11B5F)\p{Block: Diacriticals}\p{Block=Combining_Diacritical_Marks}โ (112)\p{Block: Diacriticals_Ext}\p{Block=Combining_Diacritical_Marks_Extended}โ (80)\p{Block: Diacriticals_For_Symbols}\p{Block=Combining_Diacritical_Marks_For_Symbols}โ (48)\p{Block: Diacriticals_Sup}\p{Block=Combining_Diacritical_Marks_Supplement}โ (64)\p{Block: Dingbats}โ (192:U+2700..27BF)\p{Block: Dives_Akuru}โ (NOT\p{Dives_Akuru}NOR\p{Is_Dives_Akuru}) (96:U+11900..1195F)\p{Block: Dogra}โ (NOT\p{Dogra}NOR\p{Is_Dogra}) (80:U+11800..1184F)\p{Block: Domino}\p{Block=Domino_Tiles}โ (112)\p{Block: Domino_Tiles}(Short:\p{Blk=Domino}) โ (112:U+1F030..1F09F)\p{Block: Duployan}โ (NOT\p{Duployan}NOR\p{Is_Duployan})
โฆand the last block wraps up at (160: U+1BC00..1BC9F) ๐
okay bestie, we're deep in the Block list now, alphabetically cruising, and it just keeps going. no cap. every one of these is a thing you can hand to Perl with \p{Block: ...}, and the number in the parens is how many code points live in there. let's get it ๐
\p{Block: Early_Dynastic_Cuneiform}โ(208: U+12480..1254F). ancient tablet scribe energy fr โ๏ธ\p{Block: Egyptian_Hieroglyph_Format_Controls}โ(48: U+13430..1345F)๐\p{Block: Egyptian_Hieroglyphs}โ(1072: U+13000..1342F). and girlypop, heads up: this one is NOT\p{Egyptian_Hieroglyphs}NOR\p{Is_Egyptian_Hieroglyphs}. so don't come for me ๐ โโ๏ธ\p{Block: Egyptian_Hieroglyphs_Ext_A}/\p{Block=Egyptian_Hieroglyphs_Extended_A}โ(4000)โจ\p{Block: Egyptian_Hieroglyphs_Extended_A}โ(4000: U+13460..143FF), short form\p{Blk=EgyptianHieroglyphsExtA}๐\p{Block: Elbasan}โ(48: U+10500..1052F), and it's NOT\p{Elbasan}NOR\p{Is_Elbasan}\p{Block: Elymaic}โ(32: U+10FE0..10FFF), NOT\p{Elymaic}NOR\p{Is_Elymaic}\p{Block: Emoticons}โ(80: U+1F600..1F64F)๐ญ literally the emoticon block, iconic\p{Block: Enclosed_Alphanum}/\p{Block=Enclosed_Alphanumerics}โ(160)โญ\p{Block: Enclosed_Alphanum_Sup}/\p{Block=Enclosed_Alphanumeric_Supplement}โ(256)\p{Block: Enclosed_Alphanumeric_Supplement}โ(256: U+1F100..1F1FF), short form\p{Blk=EnclosedAlphanumSup}\p{Block: Enclosed_Alphanumerics}โ(160: U+2460..24FF), short form\p{Blk=EnclosedAlphanum}\p{Block: Enclosed_CJK}/\p{Block=Enclosed_CJK_Letters_And_Months}โ(256)\p{Block: Enclosed_CJK_Letters_And_Months}โ(256: U+3200..32FF), short form\p{Blk=EnclosedCJK}\p{Block: Enclosed_Ideographic_Sup}/\p{Block=Enclosed_Ideographic_Supplement}โ(256)\p{Block: Enclosed_Ideographic_Supplement}โ(256: U+1F200..1F2FF), short form\p{Blk=EnclosedIdeographicSup}\p{Block: Ethiopic}โ(384: U+1200..137F), NOT\p{Ethiopic}NOR\p{Is_Ethiopic}\p{Block: Ethiopic_Ext}/\p{Block=Ethiopic_Extended}โ(96)\p{Block: Ethiopic_Ext_A}/\p{Block=Ethiopic_Extended_A}โ(48)\p{Block: Ethiopic_Ext_B}/\p{Block=Ethiopic_Extended_B}โ(32)\p{Block: Ethiopic_Extended}โ(96: U+2D80..2DDF), short form\p{Blk=EthiopicExt}\p{Block: Ethiopic_Extended_A}โ(48: U+AB00..AB2F), short form\p{Blk=EthiopicExtA}\p{Block: Ethiopic_Extended_B}โ(32: U+1E7E0..1E7FF), short form\p{Blk=EthiopicExtB}\p{Block: Ethiopic_Sup}/\p{Block=Ethiopic_Supplement}โ(32)\p{Block: Ethiopic_Supplement}โ(32: U+1380..139F), short form\p{Blk=EthiopicSup}
\p{Block: Garay}โ(80: U+10D40..10D8F), NOT\p{Garay}NOR\p{Is_Garay}๐ฆ\p{Block: General_Punctuation}โ(112: U+2000..206F), short form\p{Blk=Punctuation}, and it is NOT\p{Punct}NOR\p{Is_Punctuation}โ\p{Block: Geometric_Shapes}โ(96: U+25A0..25FF)๐บ๐ต\p{Block: Geometric_Shapes_Ext}/\p{Block=Geometric_Shapes_Extended}โ(128)\p{Block: Geometric_Shapes_Extended}โ(128: U+1F780..1F7FF), short form\p{Blk=GeometricShapesExt}\p{Block: Georgian}โ(96: U+10A0..10FF), NOT\p{Georgian}NOR\p{Is_Georgian}\p{Block: Georgian_Ext}/\p{Block=Georgian_Extended}โ(48)\p{Block: Georgian_Extended}โ(48: U+1C90..1CBF), short form\p{Blk=GeorgianExt}\p{Block: Georgian_Sup}/\p{Block=Georgian_Supplement}โ(48)\p{Block: Georgian_Supplement}โ(48: U+2D00..2D2F), short form\p{Blk=GeorgianSup}\p{Block: Glagolitic}โ(96: U+2C00..2C5F), NOT\p{Glagolitic}NOR\p{Is_Glagolitic}\p{Block: Glagolitic_Sup}/\p{Block=Glagolitic_Supplement}โ(48)\p{Block: Glagolitic_Supplement}โ(48: U+1E000..1E02F), short form\p{Blk=GlagoliticSup}\p{Block: Gothic}โ(32: U+10330..1034F), NOT\p{Gothic}NOR\p{Is_Gothic}\p{Block: Grantha}โ(128: U+11300..1137F), NOT\p{Grantha}NOR\p{Is_Grantha}\p{Block: Greek}/\p{Block=Greek_And_Coptic}โ(144), and NOT\p{Greek}NOR\p{Is_Greek}๐ฌ๐ท (jk it's not just Greek, that's literally the whole point of the NOT)\p{Block: Greek_And_Coptic}โ(144: U+0370..03FF), short form\p{Blk=Greek}, NOT\p{Greek}NOR\p{Is_Greek}\p{Block: Greek_Ext}/\p{Block=Greek_Extended}โ(256)\p{Block: Greek_Extended}โ(256: U+1F00..1FFF), short form\p{Blk=GreekExt}\p{Block: Gujarati}โ(128: U+0A80..0AFF), NOT\p{Gujarati}NOR\p{Is_Gujarati}\p{Block: Gunjala_Gondi}โ(80: U+11D60..11DAF), NOT\p{Gunjala_Gondi}NOR\p{Is_Gunjala_Gondi}\p{Block: Gurmukhi}โ(128: U+0A00..0A7F), NOT\p{Gurmukhi}NOR\p{Is_Gurmukhi}\p{Block: Gurung_Khema}โ(64: U+16100..1613F), NOT\p{Gurung_Khema}NOR\p{Is_Gurung_Khema}
\p{Block: Half_And_Full_Forms}/\p{Block=Halfwidth_And_Fullwidth_Forms}โ(240)\p{Block: Half_Marks}/\p{Block=Combining_Half_Marks}โ(16)\p{Block: Halfwidth_And_Fullwidth_Forms}โ(240: U+FF00..FFEF), short form\p{Blk=HalfAndFullForms}\p{Block: Hangul}/\p{Block=Hangul_Syllables}โ(11_184), and NOT\p{Hangul}NOR\p{Is_Hangul}โจ\p{Block: Hangul_Compatibility_Jamo}โ(96: U+3130..318F), short form\p{Blk=CompatJamo}\p{Block: Hangul_Jamo}โ(256: U+1100..11FF), short form\p{Blk=Jamo}\p{Block: Hangul_Jamo_Extended_A}โ(32: U+A960..A97F), short form\p{Blk=JamoExtA}\p{Block: Hangul_Jamo_Extended_B}โ(80: U+D7B0..D7FF), short form\p{Blk=JamoExtB}\p{Block: Hangul_Syllables}โ(11_184: U+AC00..D7AF), short form\p{Blk=Hangul}, NOT\p{Hangul}NOR\p{Is_Hangul}\p{Block: Hanifi_Rohingya}โ(64: U+10D00..10D3F), NOT\p{Hanifi_Rohingya}NOR\p{Is_Hanifi_Rohingya}\p{Block: Hanunoo}โ(32: U+1720..173F), NOT\p{Hanunoo}NOR\p{Is_Hanunoo}\p{Block: Hatran}โ(32: U+108E0..108FF), NOT\p{Hatran}NOR\p{Is_Hatran}\p{Block: Hebrew}โ(112: U+0590..05FF), NOT\p{Hebrew}NOR\p{Is_Hebrew}\p{Block: High_Private_Use_Surrogates}โ(128: U+DB80..DBFF), short form\p{Blk=HighPUSurrogates}\p{Block: High_PU_Surrogates}/\p{Block=High_Private_Use_Surrogates}โ(128)\p{Block: High_Surrogates}โ(896: U+D800..DB7F)\p{Block: Hiragana}โ(96: U+3040..309F), NOT\p{Hiragana}NOR\p{Is_Hiragana}๐\p{Block: IDC}/\p{Block=Ideographic_Description_Characters}โ(16), and NOT\p{ID_Continue}NOR\p{Is_IDC}\p{Block: Ideographic_Description_Characters}โ(16: U+2FF0..2FFF), short form\p{Blk=IDC}, NOT\p{ID_Continue}NOR\p{Is_IDC}\p{Block: Ideographic_Symbols}/\p{Block=Ideographic_Symbols_And_Punctuation}โ(32)\p{Block: Ideographic_Symbols_And_Punctuation}โ(32: U+16FE0..16FFF), short form\p{Blk=IdeographicSymbols}\p{Block: Imperial_Aramaic}โ(32: U+10840..1085F), NOT\p{Imperial_Aramaic}NOR\p{Is_Imperial_Aramaic}\p{Block: Indic_Number_Forms}/\p{Block=Common_Indic_Number_Forms}โ(16)\p{Block: Indic_Siyaq_Numbers}โ(80: U+1EC70..1ECBF)๐ข\p{Block: Inscriptional_Pahlavi}โ(32: U+10B60..10B7F), NOT\p{Inscriptional_Pahlavi}NOR\p{Is_Inscriptional_Pahlavi}\p{Block: Inscriptional_Parthian}โ(32: U+10B40..10B5F), NOT\p{Inscriptional_Parthian}NOR\p{Is_Inscriptional_Parthian}\p{Block: IPA_Ext}/\p{Block=IPA_Extensions}โ(96)\p{Block: IPA_Extensions}โ(96: U+0250..02AF), short form\p{Blk=IPAExt}๐ฃ๏ธ\p{Block: Jamo}/\p{Block=Hangul_Jamo}โ(256)\p{Block: Jamo_Ext_A}/\p{Block=Hangul_Jamo_Extended_A}โ(32)\p{Block: Jamo_Ext_B}/\p{Block=Hangul_Jamo_Extended_B}โ(80)\p{Block: Javanese}โ(96: U+A980..A9DF), NOT\p{Javanese}NOR\p{Is_Javanese}\p{Block: Kaithi}โ(80: U+11080..110CF), NOT\p{Kaithi}NOR\p{Is_Kaithi}\p{Block: Kaktovik_Numerals}โ(32: U+1D2C0..1D2DF)\p{Block: Kana_Ext_A}/\p{Block=Kana_Extended_A}โ(48)\p{Block: Kana_Ext_B}/\p{Block=Kana_Extended_B}โ(16)\p{Block: Kana_Extended_A}โ(48: U+1B100..1B12F), short form\p{Blk=KanaExtA}\p{Block: Kana_Extended_B}โ(16: U+1AFF0..1AFFF), short form\p{Blk=KanaExtB}\p{Block: Kana_Sup}/\p{Block=Kana_Supplement}โ(256)\p{Block: Kana_Supplement}โ(256: U+1B000..1B0FF), short form\p{Blk=KanaSup}\p{Block: Kanbun}โ(16: U+3190..319F)\p{Block: Kangxi}/\p{Block=Kangxi_Radicals}โ(224)\p{Block: Kangxi_Radicals}โ(224: U+2F00..2FDF), short form\p{Blk=Kangxi}๐\p{Block: Kannada}โ(128: U+0C80..0CFF), NOT\p{Kannada}NOR\p{Is_Kannada}\p{Block: Katakana}โ(96: U+30A0..30FF), NOT\p{Katakana}NOR\p{Is_Katakana}\p{Block: Katakana_Ext}/\p{Block=Katakana_Phonetic_Extensions}โ(16)\p{Block: Katakana_Phonetic_Extensions}โ(16: U+31F0..31FF), short form\p{Blk=KatakanaExt}\p{Block: Kawi}โ(96: U+11F00..11F5F), NOT\p{Kawi}NOR\p{Is_Kawi}\p{Block: Kayah_Li}โ(48: U+A900..A92F)\p{Block: Kharoshthi}โ(96: U+10A00..10A5F), NOT\p{Kharoshthi}NOR\p{Is_Kharoshthi}\p{Block: Khitan_Small_Script}โ(512: U+18B00..18CFF), NOT\p{Khitan_Small_Script}NOR\p{Is_Khitan_Small_Script}\p{Block: Khmer}โ(NOT \p{Khmer} NOR \p{Is_Khmer})and(128:โฆand yeah, that's literally where this part ends, mid-range, hanging. see you in the next one bestie ๐
โฆU+1780..17FF) โ okay that was the tail end of the last entry, and now we are SO back ๐
\p{Block: Khmer_Symbols}โ 32 of 'em,U+19E0..19FF๐ธ\p{Block: Khojki}โ 80 of 'em,U+11200..1124F. And no, bestie, it is not\p{Khojki}and not\p{Is_Khojki}๐\p{Block: Khudawadi}โ 80 of 'em,U+112B0..112FF. Also not\p{Khudawadi}, and not\p{Is_Khudawadi}either ๐\p{Block: Kirat_Rai}โ 64 of 'em,U+16D40..16D7F. not\p{Kirat_Rai}, not\p{Is_Kirat_Rai}โจ\p{Block: Lao}โ 128 of 'em,U+0E80..0EFF. not\p{Lao}, not\p{Is_Lao}๐ฆ\p{Block: Latin_1}โ aka\p{Block=Latin_1_Supplement}, 128 of 'em ๐\p{Block: Latin_1_Sup}โ aka\p{Block=Latin_1_Supplement}, 128 of 'em ๐\p{Block: Latin_1_Supplement}โ short version is\p{Blk=Latin1}, 128 of 'em,[\x80-\xff]๐\p{Block: Latin_Ext_A}โ aka\p{Block=Latin_Extended_A}, 128 of 'em โจ\p{Block: Latin_Ext_Additional}โ aka\p{Block=Latin_Extended_Additional}, 256 of 'em ๐\p{Block: Latin_Ext_B}โ aka\p{Block=Latin_Extended_B}, 208 of 'em ๐\p{Block: Latin_Ext_C}โ aka\p{Block=Latin_Extended_C}, 32 of 'em ๐\p{Block: Latin_Ext_D}โ aka\p{Block=Latin_Extended_D}, 224 of 'em ๐ฆ\p{Block: Latin_Ext_E}โ aka\p{Block=Latin_Extended_E}, 64 of 'em ๐ธ\p{Block: Latin_Ext_F}โ aka\p{Block=Latin_Extended_F}, 64 of 'em โญ\p{Block: Latin_Ext_G}โ aka\p{Block=Latin_Extended_G}, 256 of 'em ๐ฅ\p{Block: Latin_Extended_A}โ short version\p{Blk=LatinExtA}, 128 of 'em,U+0100..017F๐\p{Block: Latin_Extended_Additional}โ short version\p{Blk=LatinExtAdditional}, 256 of 'em,U+1E00..1EFF๐\p{Block: Latin_Extended_B}โ short version\p{Blk=LatinExtB}, 208 of 'em,U+0180..024F๐\p{Block: Latin_Extended_C}โ short version\p{Blk=LatinExtC}, 32 of 'em,U+2C60..2C7F๐\p{Block: Latin_Extended_D}โ short version\p{Blk=LatinExtD}, 224 of 'em,U+A720..A7FF๐\p{Block: Latin_Extended_E}โ short version\p{Blk=LatinExtE}, 64 of 'em,U+AB30..AB6F๐\p{Block: Latin_Extended_F}โ short version\p{Blk=LatinExtF}, 64 of 'em,U+10780..107BF๐\p{Block: Latin_Extended_G}โ short version\p{Blk=LatinExtG}, 256 of 'em,U+1DF00..1DFFF๐
ok the Latin family ate and left no crumbs, but we are NOT done, keep scrolling bestie ๐ซถ
\p{Block: Lepcha}โ 80 of 'em,U+1C00..1C4F. not\p{Lepcha}, not\p{Is_Lepcha}๐ธ\p{Block: Letterlike_Symbols}โ 80 of 'em,U+2100..214Fโจ\p{Block: Limbu}โ 80 of 'em,U+1900..194F. not\p{Limbu}, not\p{Is_Limbu}๐\p{Block: Linear_A}โ 384 of 'em,U+10600..1077F. not\p{Linear_A}, not\p{Is_Linear_A}๐\p{Block: Linear_B_Ideograms}โ 128 of 'em,U+10080..100FF๐ฆ\p{Block: Linear_B_Syllabary}โ 128 of 'em,U+10000..1007F๐ฆ\p{Block: Lisu}โ 48 of 'em,U+A4D0..A4FF. not\p{Lisu}, not\p{Is_Lisu}๐\p{Block: Lisu_Sup}โ aka\p{Block=Lisu_Supplement}, 16 of 'em ๐\p{Block: Lisu_Supplement}โ short version\p{Blk=LisuSup}, 16 of 'em,U+11FB0..11FBF๐\p{Block: Low_Surrogates}โ 1024 of 'em,U+DC00..DFFF๐ญ\p{Block: Lycian}โ 32 of 'em,U+10280..1029F. not\p{Lycian}, not\p{Is_Lycian}โจ\p{Block: Lydian}โ 32 of 'em,U+10920..1093F. not\p{Lydian}, not\p{Is_Lydian}โจ\p{Block: Mahajani}โ 48 of 'em,U+11150..1117F. not\p{Mahajani}, not\p{Is_Mahajani}๐ธ\p{Block: Mahjong}โ aka\p{Block=Mahjong_Tiles}, 48 of 'em ๐\p{Block: Mahjong_Tiles}โ short version\p{Blk=Mahjong}, 48 of 'em,U+1F000..1F02F๐\p{Block: Makasar}โ 32 of 'em,U+11EE0..11EFF. not\p{Makasar}, not\p{Is_Makasar}๐\p{Block: Malayalam}โ 128 of 'em,U+0D00..0D7F. not\p{Malayalam}, not\p{Is_Malayalam}๐\p{Block: Mandaic}โ 32 of 'em,U+0840..085F. not\p{Mandaic}, not\p{Is_Mandaic}๐ธ\p{Block: Manichaean}โ 64 of 'em,U+10AC0..10AFF. not\p{Manichaean}, not\p{Is_Manichaean}โญ\p{Block: Marchen}โ 80 of 'em,U+11C70..11CBF. not\p{Marchen}, not\p{Is_Marchen}๐ฆ\p{Block: Masaram_Gondi}โ 96 of 'em,U+11D00..11D5F. not\p{Masaram_Gondi}, not\p{Is_Masaram_Gondi}๐\p{Block: Math_Alphanum}โ aka\p{Block=Mathematical_Alphanumeric_Symbols}, 1024 of 'em ๐ฅ\p{Block: Math_Operators}โ aka\p{Block=Mathematical_Operators}, 256 of 'em ๐ฅ\p{Block: Mathematical_Alphanumeric_Symbols}โ short version\p{Blk=MathAlphanum}, 1024 of 'em,U+1D400..1D7FF๐\p{Block: Mathematical_Operators}โ short version\p{Blk=MathOperators}, 256 of 'em,U+2200..22FF๐\p{Block: Mayan_Numerals}โ 32 of 'em,U+1D2E0..1D2FF๐บ\p{Block: Medefaidrin}โ 96 of 'em,U+16E40..16E9F. not\p{Medefaidrin}, not\p{Is_Medefaidrin}๐\p{Block: Meetei_Mayek}โ 64 of 'em,U+ABC0..ABFF. not\p{Meetei_Mayek}, not\p{Is_Meetei_Mayek}โจ\p{Block: Meetei_Mayek_Ext}โ aka\p{Block=Meetei_Mayek_Extensions}, 32 of 'em ๐\p{Block: Meetei_Mayek_Extensions}โ short version\p{Blk=MeeteiMayekExt}, 32 of 'em,U+AAE0..AAFF๐\p{Block: Mende_Kikakui}โ 224 of 'em,U+1E800..1E8DF. not\p{Mende_Kikakui}, not\p{Is_Mende_Kikakui}๐\p{Block: Meroitic_Cursive}โ 96 of 'em,U+109A0..109FF. not\p{Meroitic_Cursive}, not\p{Is_Meroitic_Cursive}๐ธ\p{Block: Meroitic_Hieroglyphs}โ 32 of 'em,U+10980..1099F. not\p{Meroitic_Hieroglyphs}, not\p{Is_Meroitic_Hieroglyphs}๐ธ\p{Block: Miao}โ 160 of 'em,U+16F00..16F9F. not\p{Miao}, not\p{Is_Miao}๐ฆ\p{Block: Misc_Arrows}โ aka\p{Block=Miscellaneous_Symbols_And_Arrows}, 256 of 'em ๐น\p{Block: Misc_Math_Symbols_A}โ aka\p{Block=Miscellaneous_Mathematical_Symbols_A}, 48 of 'em โ\p{Block: Misc_Math_Symbols_B}โ aka\p{Block=Miscellaneous_Mathematical_Symbols_B}, 128 of 'em โ\p{Block: Misc_Pictographs}โ aka\p{Block=Miscellaneous_Symbols_And_Pictographs}, 768 of 'em ๐\p{Block: Misc_Symbols}โ aka\p{Block=Miscellaneous_Symbols}, 256 of 'em โจ\p{Block: Misc_Symbols_Sup}โ aka\p{Block=Miscellaneous_Symbols_Supplement}, 64 of 'em โจ\p{Block: Misc_Technical}โ aka\p{Block=Miscellaneous_Technical}, 256 of 'em ๐ง\p{Block: Miscellaneous_Mathematical_Symbols_A}โ short version\p{Blk=MiscMathSymbolsA}, 48 of 'em,U+27C0..27EF๐\p{Block: Miscellaneous_Mathematical_Symbols_B}โ short version\p{Blk=MiscMathSymbolsB}, 128 of 'em,U+2980..29FF๐\p{Block: Miscellaneous_Symbols}โ short version\p{Blk=MiscSymbols}, 256 of 'em,U+2600..26FF๐\p{Block: Miscellaneous_Symbols_And_Arrows}โ short version\p{Blk=MiscArrows}, 256 of 'em,U+2B00..2BFF๐น\p{Block: Miscellaneous_Symbols_And_Pictographs}โ short version\p{Blk=MiscPictographs}, 768 of 'em,U+1F300..1F5FF๐\p{Block: Miscellaneous_Symbols_Supplement}โ short version\p{Blk=MiscSymbolsSup}, 64 of 'em,U+1CEC0..1CEFFโจ\p{Block: Miscellaneous_Technical}โ short version\p{Blk=MiscTechnical}, 256 of 'em,U+2300..23FF๐ง\p{Block: Modi}โ 96 of 'em,U+11600..1165F. not\p{Modi}, not\p{Is_Modi}๐\p{Block: Modifier_Letters}โ aka\p{Block=Spacing_Modifier_Letters}, 80 of 'em ๐\p{Block: Modifier_Tone_Letters}โ 32 of 'em,U+A700..A71F๐ต\p{Block: Mongolian}โ 176 of 'em,U+1800..18AF. not\p{Mongolian}, not\p{Is_Mongolian}โญ\p{Block: Mongolian_Sup}โ aka\p{Block=Mongolian_Supplement}, 32 of 'em โญ\p{Block: Mongolian_Supplement}โ short version\p{Blk=MongolianSup}, 32 of 'em,U+11660..1167Fโญ\p{Block: Mro}โ 48 of 'em,U+16A40..16A6F. not\p{Mro}, not\p{Is_Mro}๐ธ\p{Block: Multani}โ 48 of 'em,U+11280..112AF. not\p{Multani}, not\p{Is_Multani}๐ธ\p{Block: Music}โ aka\p{Block=Musical_Symbols}, 256 of 'em ๐ถ\p{Block: Musical_Symbols}โ short version\p{Blk=Music}, 256 of 'em,U+1D100..1D1FF๐ถ\p{Block: Myanmar}โ 160 of 'em,U+1000..109F. not\p{Myanmar}, not\p{Is_Myanmar}๐ฆ\p{Block: Myanmar_Ext_A}โ aka\p{Block=Myanmar_Extended_A}, 32 of 'em ๐\p{Block: Myanmar_Ext_B}โ aka\p{Block=Myanmar_Extended_B}, 32 of 'em ๐\p{Block: Myanmar_Ext_C}โ aka\p{Block=Myanmar_Extended_C}, 48 of 'em ๐\p{Block: Myanmar_Extended_A}โ short version\p{Blk=MyanmarExtA}, 32 of 'em,U+AA60..AA7F๐\p{Block: Myanmar_Extended_B}โ short version\p{Blk=MyanmarExtB}, 32 of 'em,U+A9E0..A9FF๐\p{Block: Myanmar_Extended_C}โ short version\p{Blk=MyanmarExtC}, 48 of 'em,U+116D0..116FF๐\p{Block: Nabataean}โ 48 of 'em,U+10880..108AF. not\p{Nabataean}, not\p{Is_Nabataean}๐๏ธ\p{Block: Nag_Mundari}โ 48 of 'em,U+1E4D0..1E4FF. not\p{Nag_Mundari}, not\p{Is_Nag_Mundari}๐ธ\p{Block: Nandinagari}โ 96 of 'em,U+119A0..119FF. not\p{Nandinagari}, not\p{Is_Nandinagari}๐ธ\p{Block: NB}โ aka\p{Block=No_Block}, 810_304 of 'em plus all above-Unicode code points ๐ญ\p{Block: New_Tai_Lue}โ 96 of 'em,U+1980..19DF. not\p{New_Tai_Lue}, not\p{Is_New_Tai_Lue}๐ฆ\p{Block: Newa}โ 128 of 'em,U+11400..1147F. not\p{Newa}, not\p{Is_Newa}โจ\p{Block: NKo}โ 64 of 'em,U+07C0..07FF. And watch the casing, bestie: not\p{Nko}, not\p{Is_NKo}๐\p{Block: No_Block}โ short version\p{Blk=NB}, and it's a chunky one: 810_304 of 'em plus all above-Unicode code points ๐ญ โ specificallyU+2FE0..2FEF,U+10200..1027F,U+103E0..103FF,U+107C0..107FF,U+108B0..108DF,U+10960..1097F... ๐\p{Block: Number_Forms}โ 64 of 'em,U+2150..218F๐ข\p{Block: Nushu}โ 400 of 'em,U+1B170..1B2FF. not\p{Nushu}, not\p{Is_Nushu}๐ธ\p{Block: Nyiakeng_Puachue_Hmong}โ 80 of 'em,U+1E100..1E14F. not\p{Nyiakeng_Puachue_Hmong}, not\p{Is_Nyiakeng_Puachue_Hmong}๐\p{Block: OCR}โ aka\p{Block=Optical_Character_Recognition}, 32 of 'em ๐๏ธ\p{Block: Ogham}โ 32 of 'em,U+1680..169F. not\p{Ogham}, not\p{Is_Ogham}๐ชจ\p{Block: Ol_Chiki}โ 48 of 'em,U+1C50..1C7F๐ฟ\p{Block: Ol_Onal}โ bestie this one has OPINIONS ๐ญ it is NOT\p{Ol_Onal} NOR\p{Is_Ol_Onal}. 48 code points,U+1E5D0..1E5FF. โจ\p{Block: Old_Hungarian}โ NOT\p{Old_Hungarian}NOR\p{Is_Old_Hungarian}. 128 code points,U+10C80..10CFF. ๐\p{Block: Old_Italic}โ NOT\p{Old_Italic}NOR\p{Is_Old_Italic}. 48 code points,U+10300..1032F. ๐\p{Block: Old_North_Arabian}โ 32 code points,U+10A80..10A9F. No weird aliases here, we love a low-drama block. โจ\p{Block: Old_Permic}โ NOT\p{Old_Permic}NOR\p{Is_Old_Permic}. 48 code points,U+10350..1037F. ๐ฆ\p{Block: Old_Persian}โ NOT\p{Old_Persian}NOR\p{Is_Old_Persian}. 64 code points,U+103A0..103DF. ๐\p{Block: Old_Sogdian}โ NOT\p{Old_Sogdian}NOR\p{Is_Old_Sogdian}. 48 code points,U+10F00..10F2F. ๐ธ\p{Block: Old_South_Arabian}โ 32 code points,U+10A60..10A7F. quiet, unbothered, no alias discourse. ๐\p{Block: Old_Turkic}โ NOT\p{Old_Turkic}NOR\p{Is_Old_Turkic}. 80 code points,U+10C00..10C4F. ๐ฅ\p{Block: Old_Uyghur}โ NOT\p{Old_Uyghur}NOR\p{Is_Old_Uyghur}. 64 code points,U+10F70..10FAF. ๐\p{Block: Optical_Character_Recognition}โ !!! short name is\p{Blk=OCR}โจ 32 code points,U+2440..245F. The acronym ATE.\p{Block: Oriya}โ NOT\p{Oriya}NOR\p{Is_Oriya}. 128 code points,U+0B00..0B7F. ๐\p{Block: Ornamental_Dingbats}โ 48 code points,U+1F650..1F67F. The name alone is giving main character energy, no notes. ๐\p{Block: Osage}โ NOT\p{Osage}NOR\p{Is_Osage}. 80 code points,U+104B0..104FF. ๐ฆ\p{Block: Osmanya}โ NOT\p{Osmanya}NOR\p{Is_Osmanya}. 48 code points,U+10480..104AF. ๐\p{Block: Ottoman_Siyaq_Numbers}โ 80 code points,U+1ED00..1ED4F. numbers but make it historical fr fr. ๐\p{Block: Pahawh_Hmong}โ NOT\p{Pahawh_Hmong}NOR\p{Is_Pahawh_Hmong}. 144 code points,U+16B00..16B8F. ๐ธ\p{Block: Palmyrene}โ 32 code points,U+10860..1087F. clean, no alias chaos. โจ\p{Block: Pau_Cin_Hau}โ NOT\p{Pau_Cin_Hau}NOR\p{Is_Pau_Cin_Hau}. 64 code points,U+11AC0..11AFF. ๐\p{Block: Phags_Pa}โ NOT\p{Phags_Pa}NOR\p{Is_Phags_Pa}. 64 code points,U+A840..A87F. ๐ฅ\p{Block: Phaistos}/\p{Block=Phaistos_Disc}โ two names, one block, 48 code points. iykyk ๐\p{Block: Phaistos_Disc}โ short name:\p{Blk=Phaistos}. 48 code points,U+101D0..101FF. ๐\p{Block: Phoenician}โ NOT\p{Phoenician}NOR\p{Is_Phoenician}. 32 code points,U+10900..1091F. ๐ฆ\p{Block: Phonetic_Ext}/\p{Block=Phonetic_Extensions}โ same block, two spellings, 128 code points. โจ\p{Block: Phonetic_Ext_Sup}/\p{Block=Phonetic_Extensions_Supplement}โ also same block, 64 code points. the way these abbreviations just keep abbreviating ๐ญ\p{Block: Phonetic_Extensions}โ short name:\p{Blk=PhoneticExt}. 128 code points,U+1D00..1D7F. ๐\p{Block: Phonetic_Extensions_Supplement}โ short name:\p{Blk=PhoneticExtSup}. 64 code points,U+1D80..1DBF. ๐ธ\p{Block: Playing_Cards}โ 96 code points,U+1F0A0..1F0FF. slay, literally a deck of cards in Unicode bestie ๐ดโจ\p{Block: Private_Use}/\p{Block=Private_Use_Area}โ NOT\p{Private_Use}NOR\p{Is_Private_Use}. 6400 code points. ๐\p{Block: Private_Use_Area}โ short name:\p{Blk=PUA}; NOT\p{Private_Use}NOR\p{Is_Private_Use}. 6400 code points,U+E000..F8FF. ๐\p{Block: Psalter_Pahlavi}โ NOT\p{Psalter_Pahlavi}NOR\p{Is_Psalter_Pahlavi}. 48 code points,U+10B80..10BAF. ๐\p{Block: PUA}/\p{Block=Private_Use_Area}โ NOT\p{Private_Use}NOR\p{Is_Private_Use}. 6400 code points. ๐\p{Block: Punctuation}/\p{Block=General_Punctuation}โ NOT\p{Punct}NOR\p{Is_Punctuation}. 112 code points. the way this block name is a whole trap for anyone sleepwalking through their regex ๐ญ\p{Block: Rejang}โ NOT\p{Rejang}NOR\p{Is_Rejang}. 48 code points,U+A930..A95F. ๐ฆ\p{Block: Rumi}/\p{Block=Rumi_Numeral_Symbols}โ same thing, 32 code points. โจ\p{Block: Rumi_Numeral_Symbols}โ short name:\p{Blk=Rumi}. 32 code points,U+10E60..10E7F. ๐\p{Block: Runic}โ NOT\p{Runic}NOR\p{Is_Runic}. 96 code points,U+16A0..16FF. ๐ฅ\p{Block: Samaritan}โ NOT\p{Samaritan}NOR\p{Is_Samaritan}. 64 code points,U+0800..083F. ๐ธ\p{Block: Saurashtra}โ NOT\p{Saurashtra}NOR\p{Is_Saurashtra}. 96 code points,U+A880..A8DF. ๐\p{Block: Sharada}โ NOT\p{Sharada}NOR\p{Is_Sharada}. 96 code points,U+11180..111DF. ๐\p{Block: Sharada_Sup}/\p{Block=Sharada_Supplement}โ same block, aliased, 32 code points. โจ\p{Block: Sharada_Supplement}โ short name:\p{Blk=SharadaSup}. 32 code points,U+11B60..11B7F. ๐ฆ\p{Block: Shavian}โ NOT\p{Shavian}NOR\p{Is_Shavian}. 48 code points,U+10450..1047F. ๐\p{Block: Shorthand_Format_Controls}โ 16 code points,U+1BCA0..1BCAF. tiny but mighty fr fr. ๐\p{Block: Siddham}โ NOT\p{Siddham}NOR\p{Is_Siddham}. 128 code points,U+11580..115FF. ๐ฅ\p{Block: Sidetic}โ NOT\p{Sidetic}NOR\p{Is_Sidetic}. 32 code points,U+10940..1095F. ๐ธ\p{Block: Sinhala}โ NOT\p{Sinhala}NOR\p{Is_Sinhala}. 128 code points,U+0D80..0DFF. ๐\p{Block: Sinhala_Archaic_Numbers}โ 32 code points,U+111E0..111FF. โจ\p{Block: Small_Form_Variants}โ short name:\p{Blk=SmallForms}. 32 code points,U+FE50..FE6F. ๐\p{Block: Small_Forms}/\p{Block=Small_Form_Variants}โ yes bestie, same block, 32 code points. ๐\p{Block: Small_Kana_Ext}/\p{Block=Small_Kana_Extension}โ same block, 64 code points. โจ\p{Block: Small_Kana_Extension}โ short name:\p{Blk=SmallKanaExt}. 64 code points,U+1B130..1B16F. ๐ฆ\p{Block: Sogdian}โ NOT\p{Sogdian}NOR\p{Is_Sogdian}. 64 code points,U+10F30..10F6F. ๐\p{Block: Sora_Sompeng}โ NOT\p{Sora_Sompeng}NOR\p{Is_Sora_Sompeng}. 48 code points,U+110D0..110FF. ๐ธ\p{Block: Soyombo}โ NOT\p{Soyombo}NOR\p{Is_Soyombo}. 96 code points,U+11A50..11AAF. ๐ฅ\p{Block: Spacing_Modifier_Letters}โ short name:\p{Blk=ModifierLetters}. 80 code points,U+02B0..02FF. ๐\p{Block: Specials}โ 16 code points,U+FFF0..FFFF. iconic name, no alias drama. โจ\p{Block: Sundanese}โ NOT\p{Sundanese}NOR\p{Is_Sundanese}. 64 code points,U+1B80..1BBF. ๐\p{Block: Sundanese_Sup}/\p{Block=Sundanese_Supplement}โ same block, 16 code points. โจ\p{Block: Sundanese_Supplement}โ short name:\p{Blk=SundaneseSup}. 16 code points,U+1CC0..1CCF. ๐\p{Block: Sunuwar}โ NOT\p{Sunuwar}NOR\p{Is_Sunuwar}. 64 code points,U+11BC0..11BFF. ๐ฆ\p{Block: Sup_Arrows_A}/\p{Block=Supplemental_Arrows_A}โ same block, 16 code points. ๐\p{Block: Sup_Arrows_B}/\p{Block=Supplemental_Arrows_B}โ same block, 128 code points. ๐ธ\p{Block: Sup_Arrows_C}/\p{Block=Supplemental_Arrows_C}โ same block, 256 code points. ๐ฅ\p{Block: Sup_Math_Operators}/\p{Block=Supplemental_Mathematical_Operators}โ same block, 256 code points. math girlies rise โจ\p{Block: Sup_PUA_A}/\p{Block=Supplementary_Private_Use_Area_A}โ same block, 65_536 code points. a whole 65k, no cap. ๐\p{Block: Sup_PUA_B}/\p{Block=Supplementary_Private_Use_Area_B}โ same block, 65_536 code points. ๐\p{Block: Sup_Punctuation}/\p{Block=Supplemental_Punctuation}โ same block, 128 code points. โจ\p{Block: Sup_Symbols_And_Pictographs}/\p{Block=Supplemental_Symbols_And_Pictographs}โ same block, 256 code points. ๐\p{Block: Super_And_Sub}/\p{Block=Superscripts_And_Subscripts}โ same block, 48 code points. ๐ฆ\p{Block: Superscripts_And_Subscripts}โ short name:\p{Blk=SuperAndSub}. 48 code points,U+2070..209F. ๐\p{Block: Supplemental_Arrows_A}โ short name:\p{Blk=SupArrowsA}. 16 code points,U+27F0..27FF. ๐ธ\p{Block: Supplemental_Arrows_B}โ short name:\p{Blk=SupArrowsB}. 128 code points,U+2900..297F. ๐ฅ\p{Block: Supplemental_Arrows_C}โ short name:\p{Blk=SupArrowsC}. 256 code points,U+1F800..1F8FF. ๐\p{Block: Supplemental_Mathematical_Operators}โ short name:\p{Blk=SupMathOperators}. 256 code points,U+2A00..2AFF. โจ\p{Block: Supplemental_Punctuation}โ short name:\p{Blk=SupPunctuation}. 128 code points,U+2E00..2E7F. ๐\p{Block: Supplemental_Symbols_And_Pictographs}โ short name:\p{Blk=SupSymbolsAndPictographs}. 256 code points,U+1F900..1F9FF. the emojis bestie ๐\p{Block: Supplementary_Private_Use_Area_A}โ short name:\p{Blk=SupPUAA}. 65_536 code points,U+F0000..FFFFF. ๐\p{Block: Supplementary_Private_Use_Area_B}โ short name:\p{Blk=SupPUAB}. 65_536 code points,U+100000..10FFFF. ๐\p{Block: Sutton_SignWriting}โ 688 code points,U+1D800..1DAAF. no alias tomfoolery, just a huge block slaying. โจ\p{Block: Syloti_Nagri}โ NOT\p{Syloti_Nagri}NOR\p{Is_Syloti_Nagri}. 48 code points,U+A800..A82F. ๐ฆ\p{Block: Symbols_And_Pictographs_Ext_A}/\p{Block=Symbols_And_Pictographs_Extended_A}โ same block, 144 code points. ๐\p{Block: Symbols_And_Pictographs_Extended_A}โ short name:\p{Blk=SymbolsAndPictographsExtA}. 144 code points,U+1FA70..1FAFF. ๐ธ\p{Block: Symbols_For_Legacy_Computing}โ 256 code points,U+1FB00..1FBFF. ๐ฅ\p{Block: Symbols_For_Legacy_Computing_Sup}/\p{Block=Symbols_For_Legacy_Computing_Supplement}โ same block, 704 code points. ๐\p{Block: Symbols_For_Legacy_Computing_Supplement}โ short name:\p{Blk=SymbolsForLegacyComputingSup}. 704 code points,U+1CC00..1CEBF. that short name is a whole paragraph bestie ๐ญ\p{Block: Syriac}โ NOT\p{Syriac}NOR\p{Is_Syriac}. 80 code points,U+0700..074F. ๐\p{Block: Syriac_Sup}/\p{Block=Syriac_Supplement}โ same block, 16 code points. โจ\p{Block: Syriac_Supplement}โ short name:\p{Blk=SyriacSup}. 16 code points,U+0860..086F. ๐ฆ\p{Block: Tagalog}โ NOT\p{Tagalog}NOR\p{Is_Tagalog}. 32 code points,U+1700..171F. ๐\p{Block: Tagbanwa}โ NOT\p{Tagbanwa}NOR\p{Is_Tagbanwa}. 32 code points,U+1760..177F. ๐ธ\p{Block: Tags}โ 128 code points,U+E0000..E007F. ๐ฅ\p{Block: Tai_Le}โ NOT\p{Tai_Le}NOR\p{Is_Tai_Le}. 48 code points,U+1950..197F. ๐\p{Block: Tai_Tham}โ NOT\p{Tai_Tham}NOR\p{Is_Tai_Tham}. 144 code points,U+1A20..1AAF. ๐\p{Block: Tai_Viet}โ NOT\p{Tai_Viet}NOR\p{Is_Tai_Viet}. 96 code points,U+AA80..AADF. โจ\p{Block: Tai_Xuan_Jing}/\p{Block=Tai_Xuan_Jing_Symbols}โ same block, 96 code points. ๐ฆ\p{Block: Tai_Xuan_Jing_Symbols}โ short name:\p{Blk=TaiXuanJing}. 96 code points,U+1D300..1D35F. ๐\p{Block: Tai_Yo}โ NOT\p{Tai_Yo}NOR\p{Is_Tai_Yo}. 64 code points,U+1E6C0..1E6FF. ๐ธ\p{Block: Takri}โ NOT\p{Takri}NOR\p{Is_Takri}. 80 code points,U+11680..116CF. ๐ฅ\p{Block: Tamil}โ NOT\p{Tamil}NOR\p{Is_Tamil}. 128 code points,U+0B80..0BFF. ๐
okay bestie we are BACK in the block list, deep in the T's, and it's giving "my alphabet is gorgeous and enormous" ๐
no thoughts, just \p{Block: ...} until the heat death of the universe. Picking up exactly where we left off:
\p{Block: Tamil_Sup}ยท\p{Block=Tamil_Supplement}โ (64)\p{Block: Tamil_Supplement}โ (Short:\p{Blk=TamilSup}) (64:U+11FC0..11FFF)\p{Block: Tangsa}โ (NOT\p{Tangsa}NOR\p{Is_Tangsa}) (96:U+16A70..16ACF)\p{Block: Tangut}โ (NOT\p{Tangut}NOR\p{Is_Tangut}) (6144:U+17000..187FF)\p{Block: Tangut_Components}โ (768:U+18800..18AFF)\p{Block: Tangut_Components_Sup}ยท\p{Block=Tangut_Components_Supplement}โ (128)\p{Block: Tangut_Components_Supplement}โ (Short:\p{Blk=TangutComponentsSup}) (128:U+18D80..18DFF)\p{Block: Tangut_Sup}ยท\p{Block=Tangut_Supplement}โ (128)\p{Block: Tangut_Supplement}โ (Short:\p{Blk=TangutSup}) (128:U+18D00..18D7F)\p{Block: Telugu}โ (NOT\p{Telugu}NOR\p{Is_Telugu}) (128:U+0C00..0C7F)\p{Block: Thaana}โ (NOT\p{Thaana}NOR\p{Is_Thaana}) (64:U+0780..07BF)\p{Block: Thai}โ (NOT\p{Thai}NOR\p{Is_Thai}) (128:U+0E00..0E7F)\p{Block: Tibetan}โ (NOT\p{Tibetan}NOR\p{Is_Tibetan}) (256:U+0F00..0FFF)\p{Block: Tifinagh}โ (NOT\p{Tifinagh}NOR\p{Is_Tifinagh}) (80:U+2D30..2D7F)\p{Block: Tirhuta}โ (NOT\p{Tirhuta}NOR\p{Is_Tirhuta}) (96:U+11480..114DF)\p{Block: Todhri}โ (NOT\p{Todhri}NOR\p{Is_Todhri}) (64:U+105C0..105FF)\p{Block: Tolong_Siki}โ (NOT\p{Tolong_Siki}NOR\p{Is_Tolong_Siki}) (64:U+11DB0..11DEF)\p{Block: Toto}โ (NOT\p{Toto}NOR\p{Is_Toto}) (48:U+1E290..1E2BF)\p{Block: Transport_And_Map}ยท\p{Block=Transport_And_Map_Symbols}โ (128)\p{Block: Transport_And_Map_Symbols}โ (Short:\p{Blk=TransportAndMap}) (128:U+1F680..1F6FF)\p{Block: Tulu_Tigalari}โ (NOT\p{Tulu_Tigalari}NOR\p{Is_Tulu_Tigalari}) (128:U+11380..113FF)\p{Block: UCAS}ยท\p{Block=Unified_Canadian_Aboriginal_Syllabics}โ (640)\p{Block: UCAS_Ext}ยท\p{Block=Unified_Canadian_Aboriginal_Syllabics_Extended}โ (80)\p{Block: UCAS_Ext_A}ยท\p{Block=Unified_Canadian_Aboriginal_Syllabics_Extended_A}โ (16)\p{Block: Ugaritic}โ (NOT\p{Ugaritic}NOR\p{Is_Ugaritic}) (32:U+10380..1039F)\p{Block: Unified_Canadian_Aboriginal_Syllabics}โ (Short:\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}โ (NOT\p{Vai}NOR\p{Is_Vai}) (320:U+A500..A63F)\p{Block: Variation_Selectors}โ (Short:\p{Blk=VS}; NOT\p{Variation_Selector}NOR\p{Is_VS}) (16:U+FE00..FE0F)\p{Block: Variation_Selectors_Supplement}โ (Short:\p{Blk=VSSup}) (240:U+E0100..E01EF)\p{Block: Vedic_Ext}ยท\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}โ (NOT\p{Vithkuqi}NOR\p{Is_Vithkuqi}) (80:U+10570..105BF)\p{Block: VS}ยท\p{Block=Variation_Selectors}โ (NOT\p{Variation_Selector}NOR\p{Is_VS}) (16)\p{Block: VS_Sup}ยท\p{Block=Variation_Selectors_Supplement}โ (240)\p{Block: Wancho}โ (NOT\p{Wancho}NOR\p{Is_Wancho}) (64:U+1E2C0..1E2FF)\p{Block: Warang_Citi}โ (NOT\p{Warang_Citi}NOR\p{Is_Warang_Citi}) (96:U+118A0..118FF)\p{Block: Yezidi}โ (NOT\p{Yezidi}NOR\p{Is_Yezidi}) (64:U+10E80..10EBF)\p{Block: Yi_Radicals}โ (64:U+A490..A4CF)\p{Block: Yi_Syllables}โ (1168:U+A000..A48F)\p{Block: Yijing}ยท\p{Block=Yijing_Hexagram_Symbols}โ (64)\p{Block: Yijing_Hexagram_Symbols}โ (Short:\p{Blk=Yijing}) (64:U+4DC0..4DFF)\p{Block: Zanabazar_Square}โ (NOT\p{Zanabazar_Square}NOR\p{Is_Zanabazar_Square}) (80:U+11A00..11A4F)\p{Block: Znamenny_Music}ยท\p{Block=Znamenny_Musical_Notation}โ (208)\p{Block: Znamenny_Musical_Notation}โ (Short:\p{Blk=ZnamennyMusic}) (208:U+1CF00..1CFCF)
and that's the last of the Block:-flavoured ones in this stretch ๐ now the list switches it up: the first name drops the Block: prefix, everything is smooshed into one alphabetical soup, and some lines come with a little marker chilling on the left. Big heads up bestie, a ton of these have full dramatic "(NOT ...)" energy because the cute short name is not the same thing as the block, okay? iykyk.
- X
\p{Block_Elements}ยท\p{Block=Block_Elements}โ (32) \p{Bopo}ยท\p{Bopomofo}โ (=\p{Script_Extensions=Bopomofo}) (NOT\p{Block=Bopomofo}) (122)\p{Bopomofo}ยท\p{Script_Extensions=Bopomofo}โ (Short:\p{Bopo}; NOT\p{Block=Bopomofo}) (122)- X
\p{Bopomofo_Ext}ยท\p{Bopomofo_Extended}โ (=\p{Block=Bopomofo_Extended}) (32) - X
\p{Bopomofo_Extended}ยท\p{Block=Bopomofo_Extended}โ (Short:\p{InBopomofoExt}) (32) - X
\p{Box_Drawing}ยท\p{Block=Box_Drawing}โ (128) \p{Bpt: *}ยท\p{Bidi_Paired_Bracket_Type: *}\p{Brah}ยท\p{Brahmi}โ (=\p{Script_Extensions=Brahmi}) (NOT\p{Block=Brahmi}) (115)\p{Brahmi}ยท\p{Script_Extensions=Brahmi}โ (Short:\p{Brah}; NOT\p{Block=Brahmi}) (115)\p{Brai}ยท\p{Braille}โ (=\p{Script_Extensions=Braille}) (256)\p{Braille}ยท\p{Script_Extensions=Braille}โ (Short:\p{Brai}) (256)- X
\p{Braille_Patterns}ยท\p{Block=Braille_Patterns}โ (Short:\p{InBraille}) (256) \p{Bugi}ยท\p{Buginese}โ (=\p{Script_Extensions=Buginese}) (NOT\p{Block=Buginese}) (31)\p{Buginese}ยท\p{Script_Extensions=Buginese}โ (Short:\p{Bugi}; NOT\p{Block=Buginese}) (31)\p{Buhd}ยท\p{Buhid}โ (=\p{Script_Extensions=Buhid}) (NOT\p{Block=Buhid}) (22)\p{Buhid}ยท\p{Script_Extensions=Buhid}โ (Short:\p{Buhd}; NOT\p{Block=Buhid}) (22)- X
\p{Byzantine_Music}ยท\p{Byzantine_Musical_Symbols}โ (=\p{Block=Byzantine_Musical_Symbols}) (256) - X
\p{Byzantine_Musical_Symbols}ยท\p{Block=Byzantine_Musical_Symbols}โ (Short:\p{InByzantineMusic}) (256) \p{C}ยท\pCยท\p{Other}โ (=\p{General_Category=Other}) (954_481 plus all above-Unicode code points)\p{Cakm}ยท\p{Chakma}โ (=\p{Script_Extensions=Chakma}) (NOT\p{Block=Chakma}) (91)\p{Canadian_Aboriginal}ยท\p{Script_Extensions=Canadian_Aboriginal}โ (Short:\p{Cans}) (726)- X
\p{Canadian_Syllabics}ยท\p{Unified_Canadian_Aboriginal_Syllabics}โ (=\p{Block=Unified_Canadian_Aboriginal_Syllabics}) (640)
ok not\p{C}being a certified void moment ๐ that's954_481code points plus literally every above-Unicode code point, like it ate and left no crumbs, no cap.
and now, bestie, we've slid into the Canonical_Combining_Class crew, which is giving deeply specific numbering-system energy ๐ข some lines have a marker on the left, and each numbered one gets its own named twin right underneath, so keep your eyes on both, fr fr:
- T
\p{Canonical_Combining_Class: 0}ยท\p{Canonical_Combining_Class=Not_Reordered}โ (1_113_144 plus all above-Unicode code points) - T
\p{Canonical_Combining_Class: 1}ยท\p{Canonical_Combining_Class=Overlay}โ (32) - T
\p{Canonical_Combining_Class: 6}ยท\p{Canonical_Combining_Class=Han_Reading}โ (2) - T
\p{Canonical_Combining_Class: 7}ยท\p{Canonical_Combining_Class=Nukta}โ (27) - T
\p{Canonical_Combining_Class: 8}ยท\p{Canonical_Combining_Class=Kana_Voicing}โ (2) - T
\p{Canonical_Combining_Class: 9}ยท\p{Canonical_Combining_Class=Virama}โ (69) - T
\p{Canonical_Combining_Class: 10}ยท\p{Canonical_Combining_Class=CCC10}โ (1) \p{Canonical_Combining_Class: CCC10}โ (Short:\p{Ccc=CCC10}) (1:U+05B0)- T
\p{Canonical_Combining_Class: 11}ยท\p{Canonical_Combining_Class=CCC11}โ (1) \p{Canonical_Combining_Class: CCC11}โ (Short:\p{Ccc=CCC11}) (1:U+05B1)- T
\p{Canonical_Combining_Class: 12}ยท\p{Canonical_Combining_Class=CCC12}โ (1) \p{Canonical_Combining_Class: CCC12}โ (Short:\p{Ccc=CCC12}) (1:U+05B2)- T
\p{Canonical_Combining_Class: 13}ยท\p{Canonical_Combining_Class=CCC13}โ (1) \p{Canonical_Combining_Class: CCC13}โ (Short:\p{Ccc=CCC13}) (1:U+05B3)- T
\p{Canonical_Combining_Class: 14}ยท\p{Canonical_Combining_Class=CCC14}โ (1) \p{Canonical_Combining_Class: CCC14}โ (Short:\p{Ccc=CCC14}) (1:U+05B4)- T
\p{Canonical_Combining_Class: 15}ยท\p{Canonical_Combining_Class=CCC15}โ (1) \p{Canonical_Combining_Class: CCC15}โ (Short:\p{Ccc=CCC15}) (1:U+05B5)- T
\p{Canonical_Combining_Class: 16}ยท\p{Canonical_Combining_Class=CCC16}โ (1) \p{Canonical_Combining_Class: CCC16}โ (Short:\p{Ccc=CCC16}) (1:U+05B6)- T
\p{Canonical_Combining_Class: 17}ยท\p{Canonical_Combining_Class=CCC17}โ (1) \p{Canonical_Combining_Class: CCC17}โ (Short:\p{Ccc=CCC17}) (1:U+05B7)- T
\p{Canonical_Combining_Class: 18}ยท\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}ยท\p{Canonical_Combining_Class=CCC19}โ (2)
and the numbering absolutely keeps rolling from there, so hold that thought, bestie โ CCC19 is nowhere near the end of this saga ๐ฅ
- 19 โจ โ
\p{Canonical_Combining_Class: 19}and\p{Canonical_Combining_Class=CCC19}are the same girlies. Short form:\p{Canonical_Combining_Class: CCC19}, aka\p{Ccc=CCC19}โ 2 code points, and they areU+05B9..05BA. - 20 โ
\p{Canonical_Combining_Class: 20}/\p{Canonical_Combining_Class=CCC20}, short\p{Ccc=CCC20}โ 1 code point:U+05BB. - 21 โ
\p{Canonical_Combining_Class: 21}/\p{Canonical_Combining_Class=CCC21}, short\p{Ccc=CCC21}โ 1 code point:U+05BC. - 22 โ
\p{Canonical_Combining_Class: 22}/\p{Canonical_Combining_Class=CCC22}, short\p{Ccc=CCC22}โ 1 code point:U+05BD. - 23 โ
\p{Canonical_Combining_Class: 23}/\p{Canonical_Combining_Class=CCC23}, short\p{Ccc=CCC23}โ 1 code point:U+05BF. - 24 โ
\p{Canonical_Combining_Class: 24}/\p{Canonical_Combining_Class=CCC24}, short\p{Ccc=CCC24}โ 1 code point:U+05C1. - 25 โ
\p{Canonical_Combining_Class: 25}/\p{Canonical_Combining_Class=CCC25}, short\p{Ccc=CCC25}โ 1 code point:U+05C2. - 26 โ
\p{Canonical_Combining_Class: 26}/\p{Canonical_Combining_Class=CCC26}, short\p{Ccc=CCC26}โ 1 code point:U+FB1E. - 27 โ
\p{Canonical_Combining_Class: 27}/\p{Canonical_Combining_Class=CCC27}, short\p{Ccc=CCC27}โ 2 code points:U+064B, U+08F0. - 28 โ
\p{Canonical_Combining_Class: 28}/\p{Canonical_Combining_Class=CCC28}, short\p{Ccc=CCC28}โ 2 code points:U+064C, U+08F1. - 29 โ
\p{Canonical_Combining_Class: 29}/\p{Canonical_Combining_Class=CCC29}, short\p{Ccc=CCC29}โ 2 code points:U+064D, U+08F2. - 30 โ
\p{Canonical_Combining_Class: 30}/\p{Canonical_Combining_Class=CCC30}, short\p{Ccc=CCC30}โ 2 code points:U+0618, U+064E. - 31 โ
\p{Canonical_Combining_Class: 31}/\p{Canonical_Combining_Class=CCC31}, short\p{Ccc=CCC31}โ 2 code points:U+0619, U+064F. - 32 โ
\p{Canonical_Combining_Class: 32}/\p{Canonical_Combining_Class=CCC32}, short\p{Ccc=CCC32}โ 2 code points:U+061A, U+0650. - 33 โ
\p{Canonical_Combining_Class: 33}/\p{Canonical_Combining_Class=CCC33}, short\p{Ccc=CCC33}โ 1 code point:U+0651. - 34 โ
\p{Canonical_Combining_Class: 34}/\p{Canonical_Combining_Class=CCC34}, short\p{Ccc=CCC34}โ 1 code point:U+0652. - 35 โ
\p{Canonical_Combining_Class: 35}/\p{Canonical_Combining_Class=CCC35}, short\p{Ccc=CCC35}โ 1 code point:U+0670. - 36 โ
\p{Canonical_Combining_Class: 36}/\p{Canonical_Combining_Class=CCC36}, short\p{Ccc=CCC36}โ 1 code point:U+0711. - 84 โ
\p{Canonical_Combining_Class: 84}/\p{Canonical_Combining_Class=CCC84}, short\p{Ccc=CCC84}โ 1 code point:U+0C55. - 91 โ
\p{Canonical_Combining_Class: 91}/\p{Canonical_Combining_Class=CCC91}, short\p{Ccc=CCC91}โ 1 code point:U+0C56. - 103 โ
\p{Canonical_Combining_Class: 103}/\p{Canonical_Combining_Class=CCC103}, short\p{Ccc=CCC103}โ 2 code points:U+0E38..0E39. - 107 โ
\p{Canonical_Combining_Class: 107}/\p{Canonical_Combining_Class=CCC107}, short\p{Ccc=CCC107}โ 4 code points:U+0E48..0E4B. - 118 โ
\p{Canonical_Combining_Class: 118}/\p{Canonical_Combining_Class=CCC118}, short\p{Ccc=CCC118}โ 2 code points:U+0EB8..0EB9. - 122 โ
\p{Canonical_Combining_Class: 122}/\p{Canonical_Combining_Class=CCC122}, short\p{Ccc=CCC122}โ 4 code points:U+0EC8..0ECB. - 129 โ
\p{Canonical_Combining_Class: 129}/\p{Canonical_Combining_Class=CCC129}, short\p{Ccc=CCC129}โ 1 code point:U+0F71. - 130 โ
\p{Canonical_Combining_Class: 130}/\p{Canonical_Combining_Class=CCC130}, short\p{Ccc=CCC130}โ 6 code points:U+0F72, U+0F7A..0F7D, U+0F80. - 132 โ
\p{Canonical_Combining_Class: 132}/\p{Canonical_Combining_Class=CCC132}, short\p{Ccc=CCC132}โ 1 code point:U+0F74. - 133 โ
\p{Canonical_Combining_Class: 133}/\p{Canonical_Combining_Class=CCC133}, short\p{Ccc=CCC133}โ 0 code points. Empty set, she's giving nothing ๐.
okay and now the numbery ones that also got a word name, bestie โ these hit different โจ
\p{Canonical_Combining_Class: 200}=\p{Canonical_Combining_Class=Attached_Below_Left}โ 0 code points.\p{Canonical_Combining_Class: 202}=\p{Canonical_Combining_Class=Attached_Below}โ 5 of them.\p{Canonical_Combining_Class: 214}=\p{Canonical_Combining_Class=Attached_Above}โ 1.\p{Canonical_Combining_Class: 216}=\p{Canonical_Combining_Class=Attached_Above_Right}โ 9.\p{Canonical_Combining_Class: 218}=\p{Canonical_Combining_Class=Below_Left}โ 2.\p{Canonical_Combining_Class: 220}=\p{Canonical_Combining_Class=Below}โ 186. she ate, honestly ๐ฅ\p{Canonical_Combining_Class: 222}=\p{Canonical_Combining_Class=Below_Right}โ 4.\p{Canonical_Combining_Class: 224}=\p{Canonical_Combining_Class=Left}โ 2.\p{Canonical_Combining_Class: 226}=\p{Canonical_Combining_Class=Right}โ 1.\p{Canonical_Combining_Class: 228}=\p{Canonical_Combining_Class=Above_Left}โ 5.\p{Canonical_Combining_Class: 230}=\p{Canonical_Combining_Class=Above}โ 546. main character energy, no cap ๐\p{Canonical_Combining_Class: 232}=\p{Canonical_Combining_Class=Above_Right}โ 7.\p{Canonical_Combining_Class: 233}=\p{Canonical_Combining_Class=Double_Below}โ 4.\p{Canonical_Combining_Class: 234}=\p{Canonical_Combining_Class=Double_Above}โ 6.\p{Canonical_Combining_Class: 240}=\p{Canonical_Combining_Class=Iota_Subscript}โ 1.
and here's where the short names come in to slay ๐ every one of these gets a cute abbreviation, and the abbrev and the long name are literally the same property, iykyk:
\p{Canonical_Combining_Class: A}=\p{Canonical_Combining_Class=Above}โ 546.\p{Canonical_Combining_Class: Above}(short:\p{Ccc=A}) โ 546 code points: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 code points:U+05AE, U+18A9, U+1DF7..1DF8, U+302B.\p{Canonical_Combining_Class: Above_Right}(short:\p{Ccc=AR}) โ 7 code points: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 code point:U+1DCE.\p{Canonical_Combining_Class: Attached_Above_Right}(short:\p{Ccc=ATAR}) โ 9 code points:U+031B, U+0F39, U+1D165..1D166, U+1D16E..1D172.\p{Canonical_Combining_Class: Attached_Below}(short:\p{Ccc=ATB}) โ 5 code points:U+0321..0322, U+0327..0328, U+1DD0.\p{Canonical_Combining_Class: Attached_Below_Left}(short:\p{Ccc=ATBL}) โ 0 code points.\p{Canonical_Combining_Class: B}=\p{Canonical_Combining_Class=Below}โ 186.\p{Canonical_Combining_Class: Below}(short:\p{Ccc=B}) โ 186 code points: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 code points:U+1DFA, U+302A.\p{Canonical_Combining_Class: Below_Right}(short:\p{Ccc=BR}) โ 4 code points: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}โ 6.\p{Canonical_Combining_Class: DB}=\p{Canonical_Combining_Class=Double_Below}โ 4.\p{Canonical_Combining_Class: Double_Above}(short:\p{Ccc=DA}
(6: U+035D..035E, U+0360..0361, U+1AEB, U+1DCD)
\p{Canonical_Combining_Class: Double_Below}โ short form\p{Ccc=DB}. only 4 members bestie:U+035C,U+035F,U+0362,U+1DFCโจ\p{Canonical_Combining_Class: Han_Reading}โ short form\p{Ccc=HANR}. 2 of them:U+16FF0..16FF1๐\p{Canonical_Combining_Class: HANR}/\p{Canonical_Combining_Class=Han_Reading}โ same 2, just spelled different ways ๐ซ\p{Canonical_Combining_Class: Iota_Subscript}โ short form\p{Ccc=IS}. 1 single member,U+0345, the one and only main character ๐\p{Canonical_Combining_Class: IS}/\p{Canonical_Combining_Class=Iota_Subscript}โ that same loner, 1 of it ๐ธ\p{Canonical_Combining_Class: Kana_Voicing}โ short form\p{Ccc=KV}. 2 members:U+3099..309A๐ฆ\p{Canonical_Combining_Class: KV}/\p{Canonical_Combining_Class=Kana_Voicing}โ yep, same 2 ๐\p{Canonical_Combining_Class: L}/\p{Canonical_Combining_Class=Left}โ 2 members, this is the alias-pair version ๐\p{Canonical_Combining_Class: Left}โ short form\p{Ccc=L}. 2 members:U+302E..302F๐ท\p{Canonical_Combining_Class: NK}/\p{Canonical_Combining_Class=Nukta}โ 27 members in this crew ๐ฅ\p{Canonical_Combining_Class: Not_Reordered}โ short form\p{Ccc=NR}. a whole 1_113_144 code points plus every single above-Unicode code point, like: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}โ same deal, 1_113_144 plus all above-Unicode code points ๐\p{Canonical_Combining_Class: Nukta}โ short form\p{Ccc=NK}. 27 members:U+093C,U+09BC,U+0A3C,U+0ABC,U+0B3C,U+0C3C... โจ\p{Canonical_Combining_Class: OV}/\p{Canonical_Combining_Class=Overlay}โ 32 of these ๐\p{Canonical_Combining_Class: Overlay}โ short form\p{Ccc=OV}. 32 members:U+0334..0338,U+1CD4,U+1CE2..1CE8,U+20D2..20D3,U+20D8..20DA,U+20E5..20E6... ๐\p{Canonical_Combining_Class: R}/\p{Canonical_Combining_Class=Right}โ 1 member only ๐ฅบ\p{Canonical_Combining_Class: Right}โ short form\p{Ccc=R}. 1 member:U+1D16Dโญ\p{Canonical_Combining_Class: Virama}โ short form\p{Ccc=VR}. 69 of them:U+094D,U+09CD,U+0A4D,U+0ACD,U+0B4D,U+0BCD... ๐\p{Canonical_Combining_Class: VR}/\p{Canonical_Combining_Class=Virama}โ the same 69 ๐\p{Cans}/\p{Canadian_Aboriginal}โ equals\p{Script_Extensions=Canadian_Aboriginal}. 726 members ๐\p{Cari}/\p{Carian}โ equals\p{Script_Extensions=Carian}. and it is NOT\p{Block=Carian}, so don't get it twisted ๐ค 53 members\p{Carian}/\p{Script_Extensions=Carian}โ short form\p{Cari}; NOT\p{Block=Carian}. 53 members ๐\p{Case_Ignorable}/\p{Case_Ignorable=Y}โ short form\p{CI}. 2794 members ๐ญ that's a lot of besties\p{Case_Ignorable: N*}โ short forms\p{CI=N},\P{CI}. 1_111_318 plus all above-Unicode code points, and look at this character class:
[\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 forms\p{CI=Y},\p{CI}. 2794 members:
[\'.:\^\xa8\xad\xaf\xb4\xb7-\xb8], U+02B0..036F, U+0374..0375, U+037A, U+0384..0385, U+0387 ...
\p{Cased}/\p{Cased=Y}โ 4632 members ๐ซถ\p{Cased: N*}โ single form:\P{Cased}. 1_109_480 plus all above-Unicode code points:
[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@\[\\\]\^_`\{\|\}~\x7f-\xa9\xab-\xb4\xb6-\xb9\xbb-\xbf\xd7\xf7], U+01BB, U+01C0..01C3, U+0294..0295, U+02B9..02BF, U+02C2..02DF ...
\p{Cased: Y*}โ single form:\p{Cased}. 4632 members:
[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff], U+0100..01BA, U+01BC..01BF, U+01C4..0293, U+0296..02B8, U+02C0..02C1 ...
\p{Cased_Letter}/\p{General_Category=Cased_Letter}โ short form\p{LC}. 4200 members ๐\p{Category: *}/\p{General_Category: *}โ yes bestie, this is literally the same property under two names ๐\p{Caucasian_Albanian}/\p{Script_Extensions=Caucasian_Albanian}โ short form\p{Aghb}; NOT\p{Block=Caucasian_Albanian}. 56 members ๐ธ\p{Cc}/\p{XPosixCntrl}โ equals\p{General_Category=Control}. 65 members โจ\p{Ccc: *}/\p{Canonical_Combining_Class: *}โ same thing, different nickname ๐\p{CE}/\p{Composition_Exclusion}โ equals\p{Composition_Exclusion=Y}. 81 members ๐\p{CE: *}/\p{Composition_Exclusion: *}โ the wildcard version, still one and the same ๐ฆ\p{Cf}/\p{Format}โ equals\p{General_Category=Format}. 170 members ๐\p{Chakma}/\p{Script_Extensions=Chakma}โ short form\p{Cakm}; NOT\p{Block=Chakma}. 91 members โญ\p{Cham}/\p{Script_Extensions=Cham}โ and nope, NOT\p{Block=Cham}. 83 members ๐ฅ\p{Changes_When_Casefolded}/\p{Changes_When_Casefolded=Y}โ short form\p{CWCF}. 1561 members ๐\p{Changes_When_Casefolded: N*}โ short forms\p{CWCF=N},\P{CWCF}. 1_112_551 plus all above-Unicode code points:
[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@\[\\\]\^_`a-z\{\|\}~\x7f-\xb4\xb6-\xbf\xd7\xe0-\xff], U+0101, U+0103, U+0105, U+0107, U+0109 ...
\p{Changes_When_Casefolded: Y*}โ short forms\p{CWCF=Y},\p{CWCF}. 1561 members:
[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 form\p{CWCM}. 3037 members ๐ซ\p{Changes_When_Casemapped: N*}โ short forms\p{CWCM=N},\P{CWCM}. 1_111_075 plus all above-Unicode code points:
[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@\[\\\]\^_`\{\|\}~\x7f-\xb4\xb6-\xbf\xd7\xf7], U+0138, U+018D, U+01AA..01AB, U+01BA..01BB, U+01BE ...
\p{Changes_When_Casemapped: Y*}โ short forms\p{CWCM=Y},\p{CWCM}. 3037 members:
[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 form\p{CWL}. 1488 members ๐\p{Changes_When_Lowercased: N*}โ short forms\p{CWL=N},\P{CWL}. 1_112_624 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 ...
\p{Changes_When_Lowercased: Y*}โ short forms\p{CWL=Y},\p{CWL}. 1488 members:
[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 form\p{CWKCF}. 10_583 members ๐\p{Changes_When_NFKC_Casefolded: N*}โ short forms\p{CWKCF=N},\P{CWKCF}. 1_103_529 plus all above-Unicode code points:
[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@\[\\\]\^_`a-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 forms\p{CWKCF=Y},\p{CWKCF}. 10_583 members:
[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 form\p{CWT}. 1507 members โจ\p{Changes_When_Titlecased: N*}โ short forms\p{CWT=N},\P{CWT}. 1_112_605 plus all above-Unicode code points:
[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@A-Z\[\\\]\^_`\{\|\}~\x7f-\xb4\xb6-\xde\xf7], U+0100, U+0102, U+0104, U+0106, U+0108 ...
\p{Changes_When_Titlecased: Y*}โ short forms\p{CWT=Y},\p{CWT}. 1507 members:
[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 form\p{CWU}. 1580 members ๐\p{Changes_When_Uppercased: N*}โ short forms\p{CWU=N},\P{CWU}. 1_112_532 plus all above-Unicode code points:
[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@A-Z\[\\\]\^_`\{\|\}~\x7f-\xb4\xb6-\xde\xf7], U+0100, U+0102, U+0104, U+0106, U+0108 ...
\p{Changes_When_Uppercased: Y*}โ short forms\p{CWU=Y},\p{CWU}. 1580 members:
[a-z\xb5\xdf-\xf6\xf8-\xff], U+0101, U+0103, U+0105, U+0107, U+0109 ...
\p{Cher}/\p{Cherokee}โ equals\p{Script_Extensions=Cherokee}. and hello, NOT\p{Block=Cherokee}๐ 182 members\p{Cherokee}/\p{Script_Extensions=Cherokee}โ short form\p{Cher}; NOT\p{Block=Cherokee}. 182 members ๐ฆX\p{Cherokee_Sup}/\p{Cherokee_Supplement}โ equals `\p{Block=
๐ซ heads up bestie โ this part starts mid-entry, so that very first line is literally just the leftover tail of the one before it: Cherokee_Supplement}) (80). Nothing new, just a closing paren doing its little thing. Carry on ๐
Also, quick note on the X marks: wherever the original listing has one, I'm keeping it right there at the front of the bullet, untouched, no editorialising. Periodt ๐
X\p{Cherokee_Supplement}โ same thing as\p{Block=Cherokee_Supplement}(short form:\p{InCherokeeSup}) โ count:(80)๐ธX\p{Chess_Symbols}โ also written\p{Block=Chess_Symbols}โ count:(112)โ๏ธ\p{Chorasmian}โ equals\p{Script_Extensions=Chorasmian}(short form:\p{Chrs}; and bestie,NOT \p{Block=Chorasmian}, ok? do not mix those up ๐ค) โ count:(28)โจ\p{Chrs}โ aka\p{Chorasmian}, which is\p{Script_Extensions=Chorasmian}(and again:NOT \p{Block=Chorasmian}) โ count:(28)๐ฆ\p{CI}โ that's\p{Case_Ignorable}, which equals\p{Case_Ignorable=Y}โ count:(2794)๐\p{CI: *}โ that's\p{Case_Ignorable: *}๐X\p{CJK}โ short for\p{CJK_Unified_Ideographs}(which equals\p{Block=CJK_Unified_Ideographs}) โ count:(20_992)๐X\p{CJK_Compat}โ short for\p{CJK_Compatibility}(equals\p{Block=CJK_Compatibility}) โ count:(256)โจX\p{CJK_Compat_Forms}โ short for\p{CJK_Compatibility_Forms}(equals\p{Block=CJK_Compatibility_Forms}) โ count:(32)๐X\p{CJK_Compat_Ideographs}โ short for\p{CJK_Compatibility_Ideographs}(equals\p{Block=CJK_Compatibility_Ideographs}) โ count:(512)๐ซถX\p{CJK_Compat_Ideographs_Sup}โ short for\p{CJK_Compatibility_Ideographs_Supplement}(equals\p{Block=CJK_Compatibility_Ideographs_Supplement}) โ count:(544)๐X\p{CJK_Compatibility}โ that's\p{Block=CJK_Compatibility}(short form:\p{InCJKCompat}) โ count:(256)๐ธX\p{CJK_Compatibility_Forms}โ that's\p{Block=CJK_Compatibility_Forms}(short form:\p{InCJKCompatForms}) โ count:(32)๐ฆX\p{CJK_Compatibility_Ideographs}โ that's\p{Block=CJK_Compatibility_Ideographs}(short form:\p{InCJKCompatIdeographs}) โ count:(512)โญX\p{CJK_Compatibility_Ideographs_Supplement}โ that's\p{Block=CJK_Compatibility_Ideographs_Supplement}(short form:\p{InCJKCompatIdeographsSup}) โ count:(544)๐ฅX\p{CJK_Ext_A}โ short for\p{CJK_Unified_Ideographs_Extension_A}(equals\p{Block=CJK_Unified_Ideographs_Extension_A}) โ count:(6592)๐X\p{CJK_Ext_B}โ short for\p{CJK_Unified_Ideographs_Extension_B}(equals\p{Block=CJK_Unified_Ideographs_Extension_B}) โ count:(42_720)๐ญX\p{CJK_Ext_C}โ short for\p{CJK_Unified_Ideographs_Extension_C}(equals\p{Block=CJK_Unified_Ideographs_Extension_C}) โ count:(4160)โจX\p{CJK_Ext_D}โ short for\p{CJK_Unified_Ideographs_Extension_D}(equals\p{Block=CJK_Unified_Ideographs_Extension_D}) โ count:(224)๐X\p{CJK_Ext_E}โ short for\p{CJK_Unified_Ideographs_Extension_E}(equals\p{Block=CJK_Unified_Ideographs_Extension_E}) โ count:(5776)๐ซถX\p{CJK_Ext_F}โ short for\p{CJK_Unified_Ideographs_Extension_F}(equals\p{Block=CJK_Unified_Ideographs_Extension_F}) โ count:(7488)๐X\p{CJK_Ext_G}โ short for\p{CJK_Unified_Ideographs_Extension_G}(equals\p{Block=CJK_Unified_Ideographs_Extension_G}) โ count:(4944)๐ธX\p{CJK_Ext_H}โ short for\p{CJK_Unified_Ideographs_Extension_H}(equals\p{Block=CJK_Unified_Ideographs_Extension_H}) โ count:(4192)๐ฆX\p{CJK_Ext_I}โ short for\p{CJK_Unified_Ideographs_Extension_I}(equals\p{Block=CJK_Unified_Ideographs_Extension_I}) โ count:(624)โญX\p{CJK_Ext_J}โ short for\p{CJK_Unified_Ideographs_Extension_J}(equals\p{Block=CJK_Unified_Ideographs_Extension_J}) โ count:(4304)๐ฅX\p{CJK_Radicals_Sup}โ short for\p{CJK_Radicals_Supplement}(equals\p{Block=CJK_Radicals_Supplement}) โ count:(128)๐X\p{CJK_Radicals_Supplement}โ that's\p{Block=CJK_Radicals_Supplement}(short form:\p{InCJKRadicalsSup}) โ count:(128)โจX\p{CJK_Strokes}โ that's\p{Block=CJK_Strokes}โ count:(48)๐X\p{CJK_Symbols}โ short for\p{CJK_Symbols_And_Punctuation}(equals\p{Block=CJK_Symbols_And_Punctuation}) โ count:(64)๐ซถX\p{CJK_Symbols_And_Punctuation}โ that's\p{Block=CJK_Symbols_And_Punctuation}(short form:\p{InCJKSymbols}) โ count:(64)๐X\p{CJK_Unified_Ideographs}โ that's\p{Block=CJK_Unified_Ideographs}(short form:\p{InCJK}) โ count:(20_992)๐ธX\p{CJK_Unified_Ideographs_Extension_A}โ that's\p{Block=CJK_Unified_Ideographs_Extension_A}(short form:\p{InCJKExtA}) โ count:(6592)๐ฆX\p{CJK_Unified_Ideographs_Extension_B}โ that's\p{Block=CJK_Unified_Ideographs_Extension_B}(short form:\p{InCJKExtB}) โ count:(42_720)โญX\p{CJK_Unified_Ideographs_Extension_C}โ that's\p{Block=CJK_Unified_Ideographs_Extension_C}(short form:\p{InCJKExtC}) โ count:(4160)๐ฅX\p{CJK_Unified_Ideographs_Extension_D}โ that's\p{Block=CJK_Unified_Ideographs_Extension_D}(short form:\p{InCJKExtD}) โ count:(224)๐X\p{CJK_Unified_Ideographs_Extension_E}โ that's\p{Block=CJK_Unified_Ideographs_Extension_E}(short form:\p{InCJKExtE}) โ count:(5776)โจX\p{CJK_Unified_Ideographs_Extension_F}โ that's\p{Block=CJK_Unified_Ideographs_Extension_F}(short form:\p{InCJKExtF}) โ count:(7488)๐X\p{CJK_Unified_Ideographs_Extension_G}โ that's\p{Block=CJK_Unified_Ideographs_Extension_G}(short form:\p{InCJKExtG}) โ count:(4944)๐ซถX\p{CJK_Unified_Ideographs_Extension_H}โ that's\p{Block=CJK_Unified_Ideographs_Extension_H}(short form:\p{InCJKExtH}) โ count:(4192)๐X\p{CJK_Unified_Ideographs_Extension_I}โ that's\p{Block=CJK_Unified_Ideographs_Extension_I}(short form:\p{InCJKExtI}) โ count:(624)๐ธX\p{CJK_Unified_Ideographs_Extension_J}โ that's\p{Block=CJK_Unified_Ideographs_Extension_J}(short form:\p{InCJKExtJ}) โ count:(4304)๐ฆ\p{Close_Punctuation}โ same as\p{General_Category=Close_Punctuation}(short form:\p{Pe}) โ count:(77)โญ\p{Cn}โ that's\p{Unassigned}(equals\p{General_Category=Unassigned}) โ count:(814_730 plus all above-Unicode code points)๐ญ\p{Cntrl}โ that's\p{XPosixCntrl}(equals\p{General_Category=Control}) โ count:(65)๐ฅ\p{Co}โ that's\p{Private_Use}(equals\p{General_Category=Private_Use}), and bestie, note theNOT \p{Private_Use_Area}ok?? โ count:(137_468)๐X\p{Combining_Diacritical_Marks}โ that's\p{Block=Combining_Diacritical_Marks}(short form:\p{InDiacriticals}) โ count:(112)โจX\p{Combining_Diacritical_Marks_Extended}โ that's\p{Block=Combining_Diacritical_Marks_Extended}(short form:\p{InDiacriticalsExt}) โ count:(80)๐X\p{Combining_Diacritical_Marks_For_Symbols}โ that's\p{Block=Combining_Diacritical_Marks_For_Symbols}(short form:\p{InDiacriticalsForSymbols}) โ count:(48)๐ซถX\p{Combining_Diacritical_Marks_Supplement}โ that's\p{Block=Combining_Diacritical_Marks_Supplement}(short form:\p{InDiacriticalsSup}) โ count:(64)๐X\p{Combining_Half_Marks}โ that's\p{Block=Combining_Half_Marks}(short form:\p{InHalfMarks}) โ count:(16)๐ธ\p{Combining_Mark}โ that's\p{Mark}(equals\p{General_Category=Mark}) โ count:(2543)๐ฆX\p{Combining_Marks_For_Symbols}โ that's\p{Combining_Diacritical_Marks_For_Symbols}(equals\p{Block=Combining_Diacritical_Marks_For_Symbols}) โ count:(48)โญ\p{Common}โ that's\p{Script_Extensions=Common}(short form:\p{Zyyy}) โ count:(8655)๐ฅX\p{Common_Indic_Number_Forms}โ that's\p{Block=Common_Indic_Number_Forms}(short form:\p{InIndicNumberForms}) โ count:(16)๐\p{Comp_Ex}โ that's\p{Full_Composition_Exclusion}(equals\p{Full_Composition_Exclusion=Y}) โ count:(1120)โจ\p{Comp_Ex: *}โ that's\p{Full_Composition_Exclusion: *}๐X\p{Compat_Jamo}โ that's\p{Hangul_Compatibility_Jamo}(equals\p{Block=Hangul_Compatibility_Jamo}) โ count:(96)๐ซถ\p{Composition_Exclusion}โ that's\p{Composition_Exclusion=Y}(short form:\p{CE}) โ count:(81)๐\p{Composition_Exclusion: N*}โ (short form:\p{CE=N},\P{CE}) โ count:(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 form:\p{CE=Y},\p{CE}) โ count:(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 form:\p{Pc}) โ count:(10)โญ\p{Control}โ that's\p{XPosixCntrl}(equals\p{General_Category=Control}) โ count:(65)๐ฅX\p{Control_Pictures}โ that's\p{Block=Control_Pictures}โ count:(64)๐\p{Copt}โ that's\p{Coptic}(equals\p{Script_Extensions=Coptic}), and once more for the people in the back:NOT \p{Block=Coptic}๐ค โ count:(173)โจ\p{Coptic}โ that's\p{Script_Extensions=Coptic}(short form:\p{Copt}; andNOT \p{Block=Coptic}, ok bestie) โ count:(173)๐X\p{Coptic_Epact_Numbers}โ that's\p{Block=Coptic_Epact_Numbers}โ count:(32)๐ซถX\p{Counting_Rod}โ short for\p{Counting_Rod_Numerals}(equals\p{Block=Counting_Rod_Numerals}) โ count:(32)๐X\p{Counting_Rod_Numerals}โ that's\p{Block=Counting_Rod_Numerals}(short form:\p{InCountingRod}) โ count:(32)๐ธ
and yeah we are STILL going, the list is nowhere near done, don't you dare close the tab bestie ๐
\p{Cpmn}โ bestie this one's\p{Cypro_Minoan(=\p{Script_Extensions=Cypro_Minoan}) ๐ and it is NOT\p{Block=Cypro_Minoan}, okay?? (101)\p{Cprt}โ that's\p{Cypriot}(=\p{Script_Extensions=Cypriot}) โจ (112)\p{Cs}โ\p{Surrogate}(=\p{General_Category=Surrogate}) ๐ซฅ (2048)\p{Cuneiform}โ\p{Script_Extensions=Cuneiform}(short:\p{Xsux}; and it is NOT\p{Block=Cuneiform}) ๐บ (1234)X\p{Cuneiform_Numbers}โ aka\p{Cuneiform_Numbers_And_Punctuation}(=\p{Block=Cuneiform_Numbers_And_Punctuation}) (128)X\p{Cuneiform_Numbers_And_Punctuation}โ that's\p{Block=Cuneiform_Numbers_And_Punctuation}(short:\p{InCuneiformNumbers}) (128)\p{Currency_Symbol}โ\p{General_Category=Currency_Symbol}(short:\p{Sc}) ๐ฐ (64)X\p{Currency_Symbols}โ\p{Block=Currency_Symbols}(48)\p{CWCF}โ\p{Changes_When_Casefolded}(=\p{Changes_When_Casefolded=Y}) (1561)\p{CWCF: *}โ\p{Changes_When_Casefolded: *}\p{CWCM}โ\p{Changes_When_Casemapped}(=\p{Changes_When_Casemapped=Y}) (3037)\p{CWCM: *}โ\p{Changes_When_Casemapped: *}\p{CWKCF}โ\p{Changes_When_NFKC_Casefolded}(=\p{Changes_When_NFKC_Casefolded=Y}) (10_583)\p{CWKCF: *}โ\p{Changes_When_NFKC_Casefolded: *}\p{CWL}โ\p{Changes_When_Lowercased}(=\p{Changes_When_Lowercased=Y}) (1488)\p{CWL: *}โ\p{Changes_When_Lowercased: *}\p{CWT}โ\p{Changes_When_Titlecased}(=\p{Changes_When_Titlecased=Y}) (1507)\p{CWT: *}โ\p{Changes_When_Titlecased: *}\p{CWU}โ\p{Changes_When_Uppercased}(=\p{Changes_When_Uppercased=Y}) (1580)\p{CWU: *}โ\p{Changes_When_Uppercased: *}\p{Cypriot}โ\p{Script_Extensions=Cypriot}(short:\p{Cprt}) (112)X\p{Cypriot_Syllabary}โ\p{Block=Cypriot_Syllabary}(64)\p{Cypro_Minoan}โ\p{Script_Extensions=Cypro_Minoan}(short:\p{Cpmn}; NOT\p{Block=Cypro_Minoan}, gorl) (101)\p{Cyrillic}โ\p{Script_Extensions=Cyrillic}(short:\p{Cyrl}; NOT\p{Block=Cyrillic}) (521)X\p{Cyrillic_Ext_A}โ\p{Cyrillic_Extended_A}(=\p{Block=Cyrillic_Extended_A}) (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}โ\p{Cyrillic}(=\p{Script_Extensions=Cyrillic}) (NOT\p{Block=Cyrillic}) (521)\p{Dash}โ\p{Dash=Y}๐ (31)\p{Dash: N*}โ single code point version is\P{Dash}๐ and it's1_114_081plus all above-Unicode code points, and the set is A LOT, bestie:
[\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 code point version is\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}) (770)\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) ๐ (3833)\p{Decomposition_Type: Non_Canonical}โ union of all non-canonical decompositions (short:\p{Dt=NonCanon}) (Perl extension) (3833:[\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_026 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}(250)\p{Decomposition_Type: Super}โ (short:\p{Dt=Sup}) (250:[\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)
Devanagari said "I contain multitudes" and honestly bestie it did โ but notice how the manpage keeps yelling NOT \p{Block=Devanagari}, so like, respect the parentheses. ๐ซถ
\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}) (1247)\p{Dia: *},\p{Diacritic: *}\p{Diacritic},\p{Diacritic=Y}(Short:\p{Dia}) (1247)\p{Diacritic: N*}(Short:\p{Dia=N},\P{Dia}) (1_112_865 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 ...)\p{Diacritic: Y*}(Short:\p{Dia=Y},\p{Dia}) (1247:[\^`\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}(=\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}) (NOT\p{Block=Dives_Akuru}) (72)\p{Digit},\p{XPosixDigit}(=\p{General_Category=Decimal_Number}) (770)- X
\p{Dingbats},\p{Block=Dingbats}(192) \p{Dives_Akuru},\p{Script_Extensions=Dives_Akuru}(Short:\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:\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:\p{InDomino}) (112) \p{Dsrt},\p{Deseret}(=\p{Script_Extensions=Deseret}) (80)\p{Dt: *},\p{Decomposition_Type: *}\p{Dupl},\p{Duployan}(=\p{Script_Extensions=Duployan}) (NOT\p{Block=Duployan}) (154)\p{Duployan},\p{Script_Extensions=Duployan}(Short:\p{Dupl}; NOT\p{Block=Duployan}) (154)\p{Ea: *},\p{East_Asian_Width: *}- 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:\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:\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:\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_263 plus all above-Unicode code points)\p{East_Asian_Width: Na},\p{East_Asian_Width=Narrow}(111)\p{East_Asian_Width: Narrow}(Short:\p{Ea=Na}) (111:[\x20-\x7e\xa2-\xa3\xa5-\xa6\xac\xaf], U+27E6..27ED, U+2985..2986)\p{East_Asian_Width: Neutral}(Short:\p{Ea=N}) (792_263 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_772)\p{East_Asian_Width: Wide}(Short:\p{Ea=W}) (182_772: U+1100..115F, U+231A..231B, U+2329..232A, U+23E9..23EC, U+23F0, U+23F3 ...)
okay the East Asian Width block really said "let me give you every single variant" and honestly? iconic. Fullwidth, Halfwidth, Narrow, Wide, Neutral, Ambiguous โ all present, all accounted for, no crumbs left. ๐
\p{EBase},\p{Emoji_Modifier_Base}(=\p{Emoji_Modifier_Base=Y}) (134)\p{EBase: *},\p{Emoji_Modifier_Base: *}\p{EComp},\p{Emoji_Component}(=\p{Emoji_Component=Y}) (146)\p{EComp: *},\p{Emoji_Component: *}\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:\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:\p{InEgyptianHieroglyphsExtA}) (4000) \p{Elba},\p{Elbasan}(=\p{Script_Extensions=Elbasan}) (NOT\p{Block=Elbasan}) (42)\p{Elbasan},\p{Script_Extensions=Elbasan}(Short:\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:\p{Elym}; NOT\p{Block=Elymaic}) (23)\p{EMod},\p{Emoji_Modifier}(=\p{Emoji_Modifier=Y}) (5)\p{EMod: *},\p{Emoji_Modifier: *}\p{Emoji},\p{Emoji=Y}(1438)\p{Emoji: N*}(Single:\P{Emoji}) (1_112_674 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:\p{Emoji}) (1438:[#*0-9\xa9\xae], U+203C, U+2049, U+2122, U+2139, U+2194..2199 ...)\p{Emoji_Component},\p{Emoji_Component=Y}(Short:\p{EComp}) (146)\p{Emoji_Component: N*}(Short:\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:\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:\p{EMod}) (5)\p{Emoji_Modifier: N*}(Short:\p{EMod=N},\P{EMod}) (1_114_107
...plus literally every code point above Unicode's range, fr fr: U+0000..1F3FA, U+1F400..infinity) ๐ okay back to the list bestie, we're so not done
\p{Emoji_Modifier: Y*}(short:\p{EMod=Y},\p{EMod}) โ 5:U+1F3FB..1F3FFโจ\p{Emoji_Modifier_Base},\p{Emoji_Modifier_Base=Y}(short:\p{EBase}) โ 134 ๐\p{Emoji_Modifier_Base: N*}(short:\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:\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:\p{EPres}) โ 1219 ๐ซถ\p{Emoji_Presentation: N*}(short:\p{EPres=N},\P{EPres}) โ 1_112_893 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:\p{EPres=Y},\p{EPres}) โ 1219:U+231A..231B, U+23E9..23EC, U+23F0, U+23F3, U+25FD..25FE, U+2614..2615 ...
okay real talk, some of these lines start with an X โ that's straight out of the table, I'm not touching it, it stays exactly where it is ๐
X\p{Emoticons}=\p{Block=Emoticons}โ 80X\p{Enclosed_Alphanum}=\p{Enclosed_Alphanumerics}(which is\p{Block=Enclosed_Alphanumerics}) โ 160X\p{Enclosed_Alphanum_Sup}=\p{Enclosed_Alphanumeric_Supplement}(which is\p{Block=Enclosed_Alphanumeric_Supplement}) โ 256X\p{Enclosed_Alphanumeric_Supplement}=\p{Block=Enclosed_Alphanumeric_Supplement}(short:\p{InEnclosedAlphanumSup}) โ 256X\p{Enclosed_Alphanumerics}=\p{Block=Enclosed_Alphanumerics}(short:\p{InEnclosedAlphanum}) โ 160X\p{Enclosed_CJK}=\p{Enclosed_CJK_Letters_And_Months}(which is\p{Block=Enclosed_CJK_Letters_And_Months}) โ 256X\p{Enclosed_CJK_Letters_And_Months}=\p{Block=Enclosed_CJK_Letters_And_Months}(short:\p{InEnclosedCJK}) โ 256X\p{Enclosed_Ideographic_Sup}=\p{Enclosed_Ideographic_Supplement}(which is\p{Block=Enclosed_Ideographic_Supplement}) โ 256X\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}(which is\p{Emoji_Presentation=Y}) โ 1219\p{EPres: *}=\p{Emoji_Presentation: *}โ no count, just vibes\p{Ethi}=\p{Ethiopic}(which is\p{Script_Extensions=Ethiopic}) โ and NOT\p{Block=Ethiopic, fr, do not get it twisted โ 524 ๐ญ (yes it's written\p{Block=Ethiopic}in the table, bestie, I promise)\p{Ethiopic}=\p{Script_Extensions=Ethiopic}(short:\p{Ethi}; and again NOT\p{Block=Ethiopic}) โ 524
wait. hold up. I typed that first one wrong and I'm not leaving a typo in your manual. squared up:
\p{Ethi}=\p{Ethiopic}(which is\p{Script_Extensions=Ethiopic}) (NOT\p{Block=Ethiopic}) โ 524 ๐\p{Ethiopic}=\p{Script_Extensions=Ethiopic}(short:\p{Ethi}; NOT\p{Block=Ethiopic}) โ 524
periodt, moving on ๐ง
X\p{Ethiopic_Ext}=\p{Ethiopic_Extended}(which is\p{Block=Ethiopic_Extended}) โ 96X\p{Ethiopic_Ext_A}=\p{Ethiopic_Extended_A}(which is\p{Block=Ethiopic_Extended_A}) โ 48X\p{Ethiopic_Ext_B}=\p{Ethiopic_Extended_B}(which is\p{Block=Ethiopic_Extended_B}) โ 32X\p{Ethiopic_Extended}=\p{Block=Ethiopic_Extended}(short:\p{InEthiopicExt}) โ 96X\p{Ethiopic_Extended_A}=\p{Block=Ethiopic_Extended_A}(short:\p{InEthiopicExtA}) โ 48X\p{Ethiopic_Extended_B}=\p{Block=Ethiopic_Extended_B}(short:\p{InEthiopicExtB}) โ 32X\p{Ethiopic_Sup}=\p{Ethiopic_Supplement}(which is\p{Block=Ethiopic_Supplement}) โ 32X\p{Ethiopic_Supplement}=\p{Block=Ethiopic_Supplement}(short:\p{InEthiopicSup}) โ 32
\p{Ext}=\p{Extender}(which is\p{Extender=Y}) โ 62\p{Ext: *}=\p{Extender: *}\p{Extended_Pictographic},\p{Extended_Pictographic=Y}(short:\p{ExtPict}) โ 2848 ๐\p{Extended_Pictographic: N*}(short:\p{ExtPict=N},\P{ExtPict}) โ 1_111_264 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}) โ 2848:[\xa9\xae], U+203C, U+2049, U+2122, U+2139, U+2194..2199 ...\p{Extender}=\p{Extender=Y}(short:\p{Ext}) โ 62\p{Extender: N*}(short:\p{Ext=N},\P{Ext}) โ 1_114_050 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}) โ 62:[\xb7], U+02D0..02D1, U+0640, U+07FA, U+0A71, U+0AFB ...\p{ExtPict}=\p{Extended_Pictographic}(which is\p{Extended_Pictographic=Y}) โ 2848\p{ExtPict: *}=\p{Extended_Pictographic: *}
\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}(which is\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've hit the big one, General_Category, aka the main character of this entire table ๐
\p{General_Category: C}=\p{General_Category=Other}โ 954_481 plus all above-Unicode code points\p{General_Category: Cased_Letter}=[\p{Ll}\p{Lu}\p{Lt}](short:\p{Gc=LC},\p{LC}) โ 4200:[A-Za-z\xb5\xc0-\xd6\xd8-\xf6\xf8-\xff], U+0100..01BA, U+01BC..01BF, U+01C4..0293, U+0296..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}โ 814_730 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}โ 2543\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}) โ 64:[\$\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}) โ 770:[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}โ 770\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}โ 145_672
and now the cursed little trio ๐
X\p{General_Category: L&}=\p{General_Category=Cased_Letter}โ 4200X\p{General_Category: L_}=\p{General_Category=Cased_Letter}โ and listen: Note the trailing_matters in spite of loose matching rules. (4200) yes bestie that underscore is load-bearing, do not be cute about it ๐ค\p{General_Category: LC}=\p{General_Category=Cased_Letter}โ 4200\p{General_Category: Letter}(short:\p{Gc=L},\p{L}) โ 145_672:[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff], U+0100..02C1, U+02C6..02D1,
okay so remember that Letter entry from literally two seconds ago? it wraps up right here, and then the entire General_Category roster just keeps unspooling โ every synonym, every short form, every /i= note, every count. all of it. no skips, no vibes-based summarising, we're going the whole way ๐
U+02E0..02E4, U+02EC, U+02EE ...)
\p{General_Category: Letter_Number} (Short: \p{Gc=Nl}, \p{Nl})
(239: 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)
(2283)
\p{General_Category: Lm} \p{General_Category=Modifier_Letter} (410)
\p{General_Category: Lo} \p{General_Category=Other_Letter}
(141_062)
\p{General_Category: Lowercase_Letter} (Short: \p{Gc=Ll}, \p{Ll};
/i= General_Category=Cased_Letter)
(2283: [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)
(1886)
\p{General_Category: M} \p{General_Category=Mark} (2543)
\p{General_Category: Mark} (Short: \p{Gc=M}, \p{M}) (2543:
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}) (960:
[+<=>\|~\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} (471)
\p{General_Category: Me} \p{General_Category=Enclosing_Mark} (13)
\p{General_Category: Mn} \p{General_Category=Nonspacing_Mark}
(2059)
\p{General_Category: Modifier_Letter} (Short: \p{Gc=Lm}, \p{Lm})
(410: 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],
U+02C2..02C5, U+02D2..02DF,
U+02E5..02EB, U+02ED, U+02EF..02FF ...)
\p{General_Category: N} \p{General_Category=Number} (1924)
\p{General_Category: Nd} \p{General_Category=Decimal_Number} (770)
\p{General_Category: Nl} \p{General_Category=Letter_Number} (239)
\p{General_Category: No} \p{General_Category=Other_Number} (915)
\p{General_Category: Nonspacing_Mark} (Short: \p{Gc=Mn}, \p{Mn})
(2059: U+0300..036F, U+0483..0487,
U+0591..05BD, U+05BF, U+05C1..05C2,
U+05C4..05C5 ...)
\p{General_Category: Number} (Short: \p{Gc=N}, \p{N}) (1924: [0-9
\xb2-\xb3\xb9\xbc-\xbe], U+0660..0669,
U+06F0..06F9, U+07C0..07C9,
U+0966..096F, U+09E6..09EF ...)
\p{General_Category: Open_Punctuation} (Short: \p{Gc=Ps}, \p{Ps})
(79: [\(\[\{], U+0F3A, U+0F3C, U+169B,
U+201A, U+201E ...)
\p{General_Category: Other} (Short: \p{Gc=C}, \p{C}) (954_481 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})
(141_062: [\xaa\xba], U+01BB,
U+01C0..01C3, U+0294..0295,
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})
(641: [!\"#\%&\'*,.\/:;?\@\\\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})
(7468: [\xa6\xa9\xae\xb0], U+0482,
U+058D..058E, U+060E..060F, U+06DE,
U+06E9 ...)
\p{General_Category: P} \p{General_Category=Punctuation} (856)
\p{General_Category: Paragraph_Separator} (Short: \p{Gc=Zp},
\p{Zp}) (1: U+2029)
\p{General_Category: Pc} \p{General_Category=
Connector_Punctuation} (10)
\p{General_Category: Pd} \p{General_Category=Dash_Punctuation} (27)
\p{General_Category: Pe} \p{General_Category=Close_Punctuation}
(77)
\p{General_Category: Pf} \p{General_Category=Final_Punctuation}
(10)
\p{General_Category: Pi} \p{General_Category=Initial_Punctuation}
(12)
\p{General_Category: Po} \p{General_Category=Other_Punctuation}
(641)
\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} \p{General_Category=Open_Punctuation} (79)
\p{General_Category: Punct} \p{General_Category=Punctuation} (856)
\p{General_Category: Punctuation} (Short: \p{Gc=P}, \p{P}) (856:
[!\"#\%&\'\(\)*,\-.\/:;?\@\[\\\]_\{\}
\xa1\xa7\xab\xb6-\xb7\xbb\xbf], U+037E,
U+0387, U+055A..055F, U+0589..058A,
U+05BE ...)
\p{General_Category: S} \p{General_Category=Symbol} (8617)
\p{General_Category: Sc} \p{General_Category=Currency_Symbol} (64)
\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} \p{General_Category=Modifier_Symbol} (125)
\p{General_Category: Sm} \p{General_Category=Math_Symbol} (960)
\p{General_Category: So} \p{General_Category=Other_Symbol} (7468)
\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})
(471: 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}) (8617:
[\$+<=>\^`\|~\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 ...)
\p{General_Category: Titlecase_Letter} (Short: \p{Gc=Lt}, \p{Lt};
/i= General_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})
(814_730 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};
/i= General_Category=Cased_Letter)
(1886: [A-Z\xc0-\xd6\xd8-\xde], U+0100,
U+0102, U+0104, U+0106, U+0108 ...)
\p{General_Category: Z} \p{General_Category=Separator} (19)
\p{General_Category: Zl} \p{General_Category=Line_Separator} (1)
\p{General_Category: Zp} \p{General_Category=Paragraph_Separator}
(1)
\p{General_Category: Zs} \p{General_Category=Space_Separator} (17)
okay breathe ๐ซถ that was the entire General_Category family tree and it ate. letters (Ll, Lm, Lo, Lt, Lu), marks (Mc, Me, Mn, M), numbers (Nd, Nl, No, N), punctuation in every flavour (Pc, Pd, Pe, Pf, Pi, Po, Ps, P, Punct, Punctuation), symbols (Sc, Sk, Sm, So, S), separators (Zl, Zp, Zs, Z), and the cursed-adjacent trio Other, Unassigned, Surrogate ๐ซ . all of it, one long love letter to Unicode.
a few things I need you to NOT mess with, bestie:
- counts like
141_062,954_481and814_730โ those underscores are literally what's printed, they are not a typo, do not "fix" them ๐ - the lines that carry
/i= General_Category=Cased_Letterโ that bit is glued onto the line, it stays glued on - every wrapped continuation (
U+0101, U+0103, U+0105, U+0107, U+0109 ...)etc.) is part of the same entry, not a new one. it's giving โจline-wrappedโจ, not a second thing
and then โ no transition, just vibes โ we slide straight into the block/script zone ๐ญ
heads up before you scroll: some entries begin with a lone X, some begin with nothing but space, and the indentation is not uniform. copy it exactly how it sits. don't tidy it.
X \p{General_Punctuation} \p{Block=General_Punctuation} (Short:
\p{InPunctuation}) (112)
X \p{Geometric_Shapes} \p{Block=Geometric_Shapes} (96)
X \p{Geometric_Shapes_Ext} \p{Geometric_Shapes_Extended} (=
\p{Block=Geometric_Shapes_Extended})
(128)
X \p{Geometric_Shapes_Extended} \p{Block=Geometric_Shapes_Extended}
(Short: \p{InGeometricShapesExt}) (128)
\p{Geor} \p{Georgian} (= \p{Script_Extensions=
Georgian}) (NOT \p{Block=Georgian}) (178)
\p{Georgian} \p{Script_Extensions=Georgian} (Short:
\p{Geor}; NOT \p{Block=Georgian}) (178)
X \p{Georgian_Ext} \p{Georgian_Extended} (= \p{Block=
Georgian_Extended}) (48)
X \p{Georgian_Extended} \p{Block=Georgian_Extended} (Short:
\p{InGeorgianExt}) (48)
X \p{Georgian_Sup} \p{Georgian_Supplement} (= \p{Block=
Georgian_Supplement}) (48)
X \p{Georgian_Supplement} \p{Block=Georgian_Supplement} (Short:
\p{InGeorgianSup}) (48)
\p{Glag} \p{Glagolitic} (= \p{Script_Extensions=
Glagolitic}) (NOT \p{Block=Glagolitic})
(144)
\p{Glagolitic} \p{Script_Extensions=Glagolitic} (Short:
\p{Glag}; NOT \p{Block=Glagolitic}) (144)
X \p{Glagolitic_Sup} \p{Glagolitic_Supplement} (= \p{Block=
Glagolitic_Supplement}) (48)
X \p{Glagolitic_Supplement} \p{Block=Glagolitic_Supplement} (Short:
\p{InGlagoliticSup}) (48)
\p{Gong} \p{Gunjala_Gondi} (= \p{Script_Extensions=
Gunjala_Gondi}) (NOT \p{Block=
Gunjala_Gondi}) (66)
\p{Gonm} \p{Masaram_Gondi} (= \p{Script_Extensions=
the way \p{Geor} and \p{Georgian} are just chillin there next to \p{Block=Georgian}, and the page is out here SCREAMING NOT \p{Block=Georgian} at you โ bestie, that NOT is not decorative, it is the whole point ๐. same energy on \p{Glag} / \p{Glagolitic} vs \p{Block=Glagolitic}, and on \p{Gong} / \p{Gonm} vs \p{Block=Gunjala_Gondi}.
also peep how the X lines do the block thing, and the non-X ones do the Script_Extensions thing โ that contrast is highkey the whole personality of this chunk, and every short alias (\p{InPunctuation}, \p{InGeometricShapesExt}, \p{InGeorgianExt}, \p{InGeorgianSup}, \p{InGlagoliticSup}) is right there in the parens, so nothing's getting lost on my watch ๐
and the list just keeps spilling over into the next chunk, mid-parenthesis, exactly like this โ
(and we are straight-up mid-line rn, so let's finish the thought before we lose it ๐ )
- (the tail end of the entry that started just above) โ
Masaram_Gondi}) (NOT \p{Block=Masaram_Gondi}) (77). So it closes out by spelling out NOT\p{Block=Masaram_Gondi}, and the count for that one is 77.
\p{Goth}โ this is\p{Gothic}, which is\p{Script_Extensions=Gothic}(NOT\p{Block=Gothic}, do not get it twisted bestie). Count: 32.\p{Gothic}โ that's\p{Script_Extensions=Gothic}(short form:\p{Goth}; NOT\p{Block=Gothic}). Count: 32.
\p{Gr_Base}โ\p{Grapheme_Base}, which equals\p{Grapheme_Base=Y}. Count: 157_494.\p{Gr_Base: *}โ\p{Grapheme_Base: *}(no headcount for this one, it's just the star form of the same thing).\p{Gr_Ext}โ\p{Grapheme_Extend}, which equals\p{Grapheme_Extend=Y}. Count: 2232.\p{Gr_Ext: *}โ\p{Grapheme_Extend: *}(again, no count, just the star form).\p{Gran}โ\p{Grantha}, aka\p{Script_Extensions=Grantha}(NOT\p{Block=Grantha}). Count: 116.\p{Grantha}โ\p{Script_Extensions=Grantha}(short form:\p{Gran}; NOT\p{Block=Grantha}). Count: 116.\p{Graph}โ this one maps to\p{XPosixGraph}. Count: 297_250.
๐ธ the Grapheme_Base girls
\p{Grapheme_Base}โ\p{Grapheme_Base=Y}(short form:\p{GrBase}). Count: 157_494.\p{Grapheme_Base: N*}โ short forms:\p{GrBase=N},\P{GrBase}(yes, capitalP, that's the not-this version ๐). Count: 956_618 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},\p{GrBase}. Count: 157_494:[\x20-\x7e\xa0-\xac\xae-\xff],U+0100..02FF,U+0370..0377,U+037A..037F,U+0384..038A,U+038C...
โจ Grapheme_Cluster_Break, aka the girlies with all the two-letter short names
\p{Grapheme_Cluster_Break: CN}โ\p{Grapheme_Cluster_Break=Control}. Count: 3893.\p{Grapheme_Cluster_Break: Control}โ short form:\p{GCB=CN}. Count: 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}. Count: 1:[\r].\p{Grapheme_Cluster_Break: E_Base}โ short form:\p{GCB=EB}. Count: 0 (yeah, empty, she's retired ๐).\p{Grapheme_Cluster_Break: E_Base_GAZ}โ short form:\p{GCB=EBG}. Count: 0.\p{Grapheme_Cluster_Break: E_Modifier}โ short form:\p{GCB=EM}. Count: 0.\p{Grapheme_Cluster_Break: EB}โ\p{Grapheme_Cluster_Break=E_Base}. Count: 0.\p{Grapheme_Cluster_Break: EBG}โ\p{Grapheme_Cluster_Break=E_Base_GAZ}. Count: 0.\p{Grapheme_Cluster_Break: EM}โ\p{Grapheme_Cluster_Break=E_Modifier}. Count: 0.\p{Grapheme_Cluster_Break: EX}โ\p{Grapheme_Cluster_Break=Extend}. Count: 2237.\p{Grapheme_Cluster_Break: Extend}โ short form:\p{GCB=EX}. Count: 2237:U+0300..036F,U+0483..0489,U+0591..05BD,U+05BF,U+05C1..05C2,U+05C4..05C5...\p{Grapheme_Cluster_Break: GAZ}โ\p{Grapheme_Cluster_Break=Glue_After_Zwj}. Count: 0.\p{Grapheme_Cluster_Break: Glue_After_Zwj}โ short form:\p{GCB=GAZ}. Count: 0.\p{Grapheme_Cluster_Break: L}โ short form:\p{GCB=L}. Count: 125:U+1100..115F,U+A960..A97C.\p{Grapheme_Cluster_Break: LF}โ short form:\p{GCB=LF}. Count: 1:[\n].\p{Grapheme_Cluster_Break: LV}โ short form:\p{GCB=LV}. Count: 399:U+AC00,U+AC1C,U+AC38,U+AC54,U+AC70,U+AC8C...\p{Grapheme_Cluster_Break: LVT}โ short form:\p{GCB=LVT}. Count: 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}. Count: 1_096_011 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}โ\p{Grapheme_Cluster_Break=Prepend}. Count: 27.\p{Grapheme_Cluster_Break: Prepend}โ short form:\p{GCB=PP}. Count: 27: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}. Count: 26:U+1F1E6..1F1FF(yes queen, the flag emoji girlies ๐บ๐ณ๐บ๐ธ).\p{Grapheme_Cluster_Break: RI}โ\p{Grapheme_Cluster_Break=Regional_Indicator}. Count: 26.\p{Grapheme_Cluster_Break: SM}โ\p{Grapheme_Cluster_Break=SpacingMark}. Count: 381.\p{Grapheme_Cluster_Break: SpacingMark}โ short form:\p{GCB=SM}. Count: 381: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}. Count: 137:U+11A8..11FF,U+D7CB..D7FB.\p{Grapheme_Cluster_Break: V}โ short form:\p{GCB=V}. Count: 100:U+1160..11A7,U+D7B0..D7C6,U+16D63,U+16D67..16D6A.\p{Grapheme_Cluster_Break: XX}โ\p{Grapheme_Cluster_Break=Other}. Count: 1_096_011 plus all above-Unicode code points.\p{Grapheme_Cluster_Break: ZWJ}โ short form:\p{GCB=ZWJ}. Count: 1:U+200D.
๐ฆ Grapheme_Extend, part two (the N* and Y* girlies)
\p{Grapheme_Extend}โ\p{Grapheme_Extend=Y}(short form:\p{GrExt}). Count: 2232.\p{Grapheme_Extend: N*}โ short forms:\p{GrExt=N},\P{GrExt}. Count: 1_111_880 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}. Count: 2232:U+0300..036F,U+0483..0489,U+0591..05BD,U+05BF,U+05C1..05C2,U+05C4..05C5...
\p{Greek}โ\p{Script_Extensions=Greek}(short form:\p{Grek}; NOT\p{Greek_And_Coptic}โ those are two different things, bestie!). Count: 531.X\p{Greek_And_Coptic}โ\p{Block=Greek_And_Coptic}(short form:\p{InGreek}). Count: 144. (this one's wearing theXmarker, same as the legend above explains)X\p{Greek_Ext}โ\p{Greek_Extended}, which equals\p{Block=Greek_Extended}. Count: 256.X\p{Greek_Extended}โ\p{Block=Greek_Extended}(short form:\p{InGreekExt}). Count: 256.\p{Grek}โ\p{Greek}, which equals\p{Script_Extensions=Greek}(NOT\p{Greek_And_Coptic}). Count: 531.\p{Gujarati}โ\p{Script_Extensions=Gujarati}(short form:\p{Gujr}; NOT\p{Block=Gujarati}). Count: 105.\p{Gujr}โ\p{Gujarati}, which equals\p{Script_Extensions=Gujarati}(NOT\p{Block=Gujarati}). Count: 105.\p{Gukh}โ\p{Gurung_Khema}, which equals\p{Script_Extensions=Gurung_Khema}(NOT\p{Block=Gurung_Khema}). Count: 59.\p{Gunjala_Gondi}โ\p{Script_Extensions=Gunjala_Gondi}(short form:\p{Gong}; NOT\p{Block=Gunjala_Gondi}). Count: 66.\p{Gurmukhi}โ\p{Script_Extensions=Gurmukhi}(short form:\p{Guru}; NOT\p{Block=Gurmukhi}). Count: 94.\p{Guru}โ\p{Gurmukhi}, which equals\p{Script_Extensions=Gurmukhi}(NOT\p{Block=Gurmukhi}). Count: 94.\p{Gurung_Khema}โ\p{Script_Extensions=Gurung_Khema}(short form:\p{Gukh}; NOT\p{Block=Gurung_Khema}). Count: 59.
X\p{Half_And_Full_Forms}โ\p{Halfwidth_And_Fullwidth_Forms}, which equals\p{Block=Halfwidth_And_Fullwidth_Forms}. Count: 240.X\p{Half_Marks}โ\p{Combining_Half_Marks}, which equals\p{Block=Combining_Half_Marks}. Count: 16.X\p{Halfwidth_And_Fullwidth_Forms}โ\p{Block=Halfwidth_And_Fullwidth_Forms}(short form:\p{InHalfAndFullForms}). Count: 240.\p{Han}โ\p{Script_Extensions=Han}. Count: 103_659 (yeah, she's huge, main character energy ๐).\p{Hang}โ\p{Hangul}, which equals\p{Script_Extensions=Hangul}(NOT\p{Hangul_Syllables}โ different vibe entirely). Count: 11_775.\p{Hangul}โ\p{Script_Extensions=Hangul}(short form:\p{Hang}; NOT\p{Hangul_Syllables}). Count: 11_775.X\p{Hangul_Compatibility_Jamo}โ\p{Block=Hangul_Compatibility_Jamo}(short form:\p{InCompatJamo}). Count: 96.X\p{Hangul_Jamo}โ\p{Block=Hangul_Jamo}(short form:\p{InJamo}). Count: 256.X\p{Hangul_Jamo_Extended_A}โ\p{Block=Hangul_Jamo_Extended_A}(short form:\p{InJamoExtA}). Count: 32.X\p{Hangul_Jamo_Extended_B}โ\p{Block=Hangul_Jamo_Extended_B}(short form:\p{InJamoExtB}). Count: 80.
๐ Hangul_Syllable_Type, the whole squad
\p{Hangul_Syllable_Type: L}โ\p{Hangul_Syllable_Type=Leading_Jamo}. Count: 125.\p{Hangul_Syllable_Type: Leading_Jamo}โ short form:\p{Hst=L}. Count: 125:U+1100..115F,U+A960..A97C.\p{Hangul_Syllable_Type: LV}โ\p{Hangul_Syllable_Type=LV_Syllable}. Count: 399.\p{Hangul_Syllable_Type: LV_Syllable}โ short form:\p{Hst=LV}. Count: 399:U+AC00,U+AC1C,U+AC38,U+AC54,U+AC70,U+AC8C...\p{Hangul_Syllable_Type: LVT}โ\p{Hangul_Syllable_Type=LVT_Syllable}. Count: 10_773.\p{Hangul_Syllable_Type: LVT_Syllable}โ short form:\p{Hst=LVT}. Count: 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}โ\p{Hangul_Syllable_Type=Not_Applicable}. Count: 1_102_583 plus all above-Unicode code points.\p{Hangul_Syllable_Type: Not_Applicable}โ short form:\p{Hst=NA}. Count: 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}โ\p{Hangul_Syllable_Type=Trailing_Jamo}. Count: 137.\p{Hangul_Syllable_Type: Trailing_Jamo}โ short form:\p{Hst=T}. Count: 137:U+11A8..11FF,U+D7CB..D7FB.\p{Hangul_Syllable_Type: V}โ\p{Hangul_Syllable_Type=Vowel_Jamo}. Count: 95.\p{Hangul_Syllable_Type: Vowel_Jamo}โ that's (Short:\p{Hst=V}) and there's95of them living atU+1160..11A7,U+D7B0..D7C6๐ vowel jamo besties rise upX\p{Hangul_Syllables}โ maps to\p{Block=Hangul_Syllables}(Short:\p{InHangul}) and it's11_184code points of solid squishy syllable block vibes ๐\p{Hani}โ girlypop this one is\p{Han}(=\p{Script_Extensions=Han}) and it's a whole103_659, an absolute main character in the CJK world ๐\p{Hanifi_Rohingya}โ so this equals\p{Script_Extensions=Hanifi_Rohingya}(Short:\p{Rohg}; and NOT\p{Block=Hanifi_Rohingya}, okay?? don't get it twisted bestie) โ55๐ฆ\p{Hano}โ this is\p{Hanunoo}(=\p{Script_Extensions=Hanunoo}) (NOT\p{Block=Hanunoo}) โ23โจ\p{Hanunoo}โ this is\p{Script_Extensions=Hanunoo}(Short:\p{Hano}; NOT\p{Block=Hanunoo}) โ23โจ
not me listingHanoandHanunooback to back and them being the exact same23code points ๐ the way they're each other's short nameโฆ iconic, no notes
\p{Hatr}โ equals\p{Hatran}(=\p{Script_Extensions=Hatran}) (NOT\p{Block=Hatran}) โ26๐ธ\p{Hatran}โ equals\p{Script_Extensions=Hatran}(Short:\p{Hatr}; NOT\p{Block=Hatran}) โ26๐ธ\p{Hebr}โ this is\p{Hebrew}(=\p{Script_Extensions=Hebrew}) (NOT\p{Block=Hebrew}) โ136๐\p{Hebrew}โ this is\p{Script_Extensions=Hebrew}(Short:\p{Hebr}; NOT\p{Block=Hebrew}) โ136๐\p{Hex}โ it's\p{XPosixXDigit}(=\p{Hex_Digit=Y}) โ44โจ\p{Hex: *}โ that's just\p{Hex_Digit: *}(the lil*wildcard moment, iykyk)\p{Hex_Digit}โ it's\p{XPosixXDigit}(=\p{Hex_Digit=Y}) โ44โจ\p{Hex_Digit: N*}โ (Short:\p{Hex=N},\P{Hex}) and bestie it's1_114_068plus all above-Unicode code points, likeโฆ the whole universe minus the hex digits fr fr. Here's the exact set so you can look at it and go "oh":
[\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:\p{Hex=Y},\p{Hex}) and yes queen only44:[0-9A-Fa-f],U+FF10..FF19,U+FF21..FF26,U+FF41..FF46๐X\p{High_Private_Use_Surrogates}โ maps to\p{Block=High_Private_Use_Surrogates}(Short:\p{InHighPUSurrogates}) โ128๐X\p{High_PU_Surrogates}โ maps to\p{High_Private_Use_Surrogates}(=\p{Block=High_Private_Use_Surrogates}) โ128๐X\p{High_Surrogates}โ maps to\p{Block=High_Surrogates}โ896๐
like okay high surrogates, we get it, you have 896
\p{Hira}โ this is\p{Hiragana}(=\p{Script_Extensions=Hiragana}) (NOT\p{Block=Hiragana}) โ433๐ธ\p{Hiragana}โ this is\p{Script_Extensions=Hiragana}(Short:\p{Hira}; NOT\p{Block=Hiragana}) โ433๐ธ\p{Hluw}โ this is\p{Anatolian_Hieroglyphs}(=\p{Script_Extensions=Anatolian_Hieroglyphs}) (NOT\p{Block=Anatolian_Hieroglyphs}) โ583๐ฆ\p{Hmng}โ this is\p{Pahawh_Hmong}(=\p{Script_Extensions=Pahawh_Hmong}) (NOT\p{Block=Pahawh_Hmong}) โ127โจ\p{Hmnp}โ this is\p{Nyiakeng_Puachue_Hmong}(=\p{Script_Extensions=Nyiakeng_Puachue_Hmong}) (NOT\p{Block=Nyiakeng_Puachue_Hmong}) โ71โจ\p{HorizSpace}โ this is\p{XPosixBlank}โ18๐ซถ horizontal space girlies stand UP\p{Hst: *}โ that's\p{Hangul_Syllable_Type: *}(wildcard*again, we love a one-line shortcut)\p{Hung}โ this is\p{Old_Hungarian}(=\p{Script_Extensions=Old_Hungarian}) (NOT\p{Block=Old_Hungarian}) โ112๐D\p{Hyphen}โ this is\p{Hyphen=Y}โ11โ ๏ธ and heads up, it's been Supplanted by Line_Break property values; seewww.unicode.org/reports/tr14so likeโฆ it's giving deprecated, don't build your whole personality on itD\p{Hyphen: N*}โ yep, also Supplanted by Line_Break property values; seewww.unicode.org/reports/tr14(Single:\P{Hyphen}) โ1_114_101plus 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*}โ same deal bestie, Supplanted by Line_Break property values; seewww.unicode.org/reports/tr14(Single:\p{Hyphen}) โ11:[\-\xad],U+058A,U+1806,U+2010..2011,U+2E17,U+30FB ...\p{ID_Compat_Math_Continue}โ this is\p{ID_Compat_Math_Continue=Y}โ43๐งฎ\p{ID_Compat_Math_Continue: N*}โ (Single:\P{IDCompatMathContinue}) and it's1_114_069plus 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}โ this is\p{ID_Compat_Math_Start=Y}โ13๐งฎ\p{ID_Compat_Math_Start: N*}โ (Single:\P{IDCompatMathStart}) โ1_114_099plus 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}โ this is\p{ID_Continue=Y}(Short:\p{IDC}; and just so we're clear, NOT\p{Ideographic_Description_Characters}okay bestie) โ149_240๐\p{ID_Continue: N*}โ (Short:\p{IDC=N},\P{IDC}) โ964_872plus all above-Unicode code points, and listen, this one's a chunky girl:
[\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}) โ149_240:[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}โ this is\p{ID_Start=Y}(Short:\p{IDS}) โ145_916โจ\p{ID_Start: N*}โ (Short:\p{IDS=N},\P{IDS}) โ968_196plus all above-Unicode code points, exact vibes below:
[\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}) โ145_916:[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}โ this is\p{ID_Continue}(=\p{ID_Continue=Y}) (NOT\p{Ideographic_Description_Characters}) โ149_240๐\p{IDC: *}โ that's\p{ID_Continue: *}(wildcard again, we stay winning)\p{Identifier_Status: Allowed}โ33_791:[\'\-.0-9:A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..0113,U+0116..012B,U+012E..0131,U+0134..0137,U+0139..013E ...โ\p{Identifier_Status: Restricted}โ1_080_321plus all above-Unicode code points, so basically everyone else:
[\x00-\x20!\"#\$\%&\(\)*+,\/;<=>?\@\[\\\]\^`\{\|\}~\x7f-\xb6\xb8-\xbf\xd7\xf7], U+0114..0115, U+012C..012D, U+0132..0133, U+0138, U+013F..0140 ...
\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}โ22_048:U+03E2..03EF,U+0800..082D,U+0830..083E,U+1680..169C,U+16A0..16F8,U+1700..1715 ...\p{Identifier_Type: Inclusion}โ18:[\'\-.:\xb7],U+02BB..02BC,U+058A,U+05F3..05F4,U+06FD..06FE,U+0F0B ...๐ซถ\p{Identifier_Type: Limited_Use}โ5285:U+02EA..02EB,U+0700..070D,U+070F..074A,U+074D..074F,U+07C0..07FA,U+07FD..07FF ...๐ธ\p{Identifier_Type: Not_Character}โ954_305plus all above-Unicode code points, huge:
[^\t\n\cK\f\r\x20-\x7e\x85\xa0-\xff], U+0378..0379, U+0380..0383, U+038B, U+038D, U+03A2 ...
954_305 "not a character" girliesโฆ the way most things are simply not characters ๐
\p{Identifier_Type: Not_NFKC}โ4958:[\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}โ9113, and here's the full roster:
[\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}โ1941:U+0138,U+018D,U+01AA..01AB,U+01B9..01BB,U+01BE..01BF,U+01F6..01F7 ...๐\p{Identifier_Type: Recommended}โ33_773:[0-9A-Z_a-z\xc0-\xd6\xd8-\xf6\xf8-\xff],U+0100..0113,U+0116..012B,U+012E..0131,U+0134..0137,U+0139..013E ...๐ the good girlies\p{Identifier_Type: Technical}โ1864:U+0180,U+018D,U+01AA..01AB,U+01BA..01BB,U+01BE,U+01C0..01C3 ...๐ง
โฆand we are still in the big property list, going letter by letter like the dedicated besties we are ๐ nobody is skimming, nobody is skipping, we do every single one.
\p{Identifier_Type: Uncommon_Use}โ that's83_221code points:U+0114..0115,U+012C..012D,U+014E..014F,U+0156..0157,U+0162..0163,U+0182..0185...\p{Ideo},\p{Ideographic}(=\p{Ideographic=Y}) โ110_943, and yeah those two are straight up the same thing ๐ซถ\p{Ideo: *},\p{Ideographic: *}โ the star-flavoured spelling of the same little squad โจ\p{Ideographic},\p{Ideographic=Y}โ Short:\p{Ideo}.110_943bestie.\p{Ideographic: N*}โ Short:\p{Ideo=N},\P{Ideo}. Count:1_003_169plus 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}.110_943: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}.16of them ๐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}) โ145_916, absolute main character numbers ๐\p{IDS: *},\p{ID_Start: *}โ the wildcard versions, same energy ๐ธ\p{IDS_Binary_Operator},\p{IDS_Binary_Operator=Y}โ Short:\p{IDSB}.13, smol but mighty ๐\p{IDS_Binary_Operator: N*}โ Short:\p{IDSB=N},\P{IDSB}.1_114_099plus 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. literally two ๐ญ\p{IDS_Trinary_Operator: N*}โ Short:\p{IDST=N},\P{IDST}.1_114_110plus 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\p{IDS_Unary_Operator},\p{IDS_Unary_Operator=Y}โ Short:\p{IDSU}.2. also two, we love a tiny set ๐ฆ\p{IDS_Unary_Operator: N*}โ Short:\p{IDSU=N},\P{IDSU}.1_114_110plus all above-Unicode code points:U+0000..2FFD,U+3000..infinity\p{IDS_Unary_Operator: Y*}โ Short:\p{IDSU=Y},\p{IDSU}.2:U+2FFE..2FFF\p{IDSB},\p{IDS_Binary_Operator}(=\p{IDS_Binary_Operator=Y}) โ13.\p{IDSB: *},\p{IDS_Binary_Operator: *}โ star spellings, periodt โจ\p{IDST},\p{IDS_Trinary_Operator}(=\p{IDS_Trinary_Operator=Y}) โ2.\p{IDST: *},\p{IDS_Trinary_Operator: *}โ the*forms again ๐\p{IDSU},\p{IDS_Unary_Operator}(=\p{IDS_Unary_Operator=Y}) โ2.\p{IDSU: *},\p{IDS_Unary_Operator: *}โ yep, wildcards ๐\p{Imperial_Aramaic},\p{Script_Extensions=Imperial_Aramaic}โ Short:\p{Armi}; and hello, this is NOT\p{Block=Imperial_Aramaic}, do not get it twisted bestie ๐ค. Count:31.\p{In: *},\p{Present_In: *}โ and this one is a Perl extension, home-grown, iconic ๐X\p{In_*},\p{Block: *}โ the underline-then-star trio energy โจ\p{InCB: *},\p{Indic_Conjunct_Break: *}โ wildcard versions of everything InCB, slay.\p{Indic_Conjunct_Break: Consonant}โ Short:\p{InCB=Consonant}.911: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}.2217: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}.20:U+094D,U+09CD,U+0ACD,U+0B4D,U+0C4D,U+0D4D...\p{Indic_Conjunct_Break: None}โ Short:\p{InCB=None}.1_110_964plus 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},\p{Common_Indic_Number_Forms}(=\p{Block=Common_Indic_Number_Forms}) โ16code points, cute.\p{Indic_Positional_Category: Bottom}โ Short:\p{InPC=Bottom}.370: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. one single code point carrying the whole category ๐\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},\p{Indic_Positional_Category=Not_Applicable}โ1_112_813plus all above-Unicode code points. yeah, Not Applicable, and it applies to basically everything ๐\p{Indic_Positional_Category: Not_Applicable}โ Short:\p{InPC=NA}.1_112_813plus 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}.316:U+0903,U+093B,U+093E,U+0940,U+0949..094C,U+094F...\p{Indic_Positional_Category: Top}โ Short:\p{InPC=Top}.447: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},\p{Block=Indic_Siyaq_Numbers}โ80.\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}.2341: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{Indic_Syllabic_Category: Consonant_Placeholder}โ short form\p{InSC=ConsonantPlaceholder}โจ โ 21 of them:[\-\xa0\xd7],U+0980,U+0A72..0A73,U+104B,U+104E,U+1CFA... - ๐
\p{Indic_Syllabic_Category: Consonant_Preceding_Repha}โ short form\p{InSC=ConsonantPrecedingRepha}โ 6 of them:U+0D4E,U+113D1,U+11941,U+11A86,U+11D46,U+11F02 - ๐
\p{Indic_Syllabic_Category: Consonant_Prefixed}โ short form\p{InSC=ConsonantPrefixed}โ 8 of them:U+111C2..111C3,U+1193F,U+11A84..11A85,U+11A87..11A89 - ๐
\p{Indic_Syllabic_Category: Consonant_Subjoined}โ short form\p{InSC=ConsonantSubjoined}โ 94 of them: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 form\p{InSC=ConsonantSucceedingRepha}โ just 1:U+17CC - ๐
\p{Indic_Syllabic_Category: Consonant_With_Stacker}โ short form\p{InSC=ConsonantWithStacker}โ 9 of them:U+0CF1..0CF2,U+1CF5..1CF6,U+11003..11004,U+11460..11461,U+11A3A - ๐
\p{Indic_Syllabic_Category: Gemination_Mark}โ short form\p{InSC=GeminationMark}โ 5 of them:U+0A71,U+0AFB,U+11237,U+113D2,U+11A98 - ๐
\p{Indic_Syllabic_Category: Invisible_Stacker}โ short form\p{InSC=InvisibleStacker}โ 14 of them:U+1039,U+17D2,U+1A60,U+1BAB,U+AAF6,U+10A3F... - ๐
\p{Indic_Syllabic_Category: Joiner}โ short form\p{InSC=Joiner}โ 1 single baddie:U+200D(you KNOW her) - ๐
\p{Indic_Syllabic_Category: Modifying_Letter}โ short form\p{InSC=ModifyingLetter}โ 1:U+0B83 - ๐
\p{Indic_Syllabic_Category: Non_Joiner}โ short form\p{InSC=NonJoiner}โ 1:U+200C - ๐
\p{Indic_Syllabic_Category: Nukta}โ short form\p{InSC=Nukta}โ 33 of them:U+093C,U+09BC,U+0A3C,U+0ABC,U+0AFD..0AFF,U+0B3C... - ๐
\p{Indic_Syllabic_Category: Number}โ short form\p{InSC=Number}โ 541 of them:[0-9],U+0966..096F,U+09E6..09EF,U+0A66..0A6F,U+0AE6..0AEF,U+0B66..0B6F... - ๐
\p{Indic_Syllabic_Category: Number_Joiner}โ short form\p{InSC=NumberJoiner}โ 1:U+1107F - ๐
\p{Indic_Syllabic_Category: Other}โ short form\p{InSC=Other}โ this one is MASSIVE, bestie: 1_109_256 of them, plus every single above-Unicode code point:
[\x00-\x20!\"#\$\%&\'\(\)*+,.\/:;<=>?\@A-Z\[\\\]\^_`a-z\{\|\}~\x7f-\x9f\xa1-\xb1\xb4-\xd6\xd8-\xff],
U+0100..08FF, U+0950, U+0953..0954, U+0964..0965, U+0970..0971 ...
- ๐
\p{Indic_Syllabic_Category: Pure_Killer}โ short form\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 form\p{InSC=RegisterShifter}โ 2:U+17C9..17CA - ๐
\p{Indic_Syllabic_Category: Reordering_Killer}โ short form\p{InSC=ReorderingKiller}โ 2:U+1BF2..1BF3 - ๐
\p{Indic_Syllabic_Category: Syllable_Modifier}โ short form\p{InSC=SyllableModifier}โ 26 of them:[\xb2-\xb3],U+09FE,U+0ECE,U+0F35,U+0F37,U+0FC6... - ๐
\p{Indic_Syllabic_Category: Tone_Letter}โ short form\p{InSC=ToneLetter}โ 7 of them:U+1970..1974,U+AAC0,U+AAC2 - ๐
\p{Indic_Syllabic_Category: Tone_Mark}โ short form\p{InSC=ToneMark}โ 42 of them:U+0E48..0E4B,U+0EC8..0ECB,U+1037,U+1063..1064,U+1069..106D,U+1087..108D... - ๐
\p{Indic_Syllabic_Category: Virama}โ short form\p{InSC=Virama}โ 27 of them:U+094D,U+09CD,U+0A4D,U+0ACD,U+0B4D,U+0BCD... - ๐
\p{Indic_Syllabic_Category: Visarga}โ short form\p{InSC=Visarga}โ 38 of them:U+0903,U+0983,U+0A03,U+0A83,U+0B03,U+0C03... - ๐
\p{Indic_Syllabic_Category: Vowel}โ short form\p{InSC=Vowel}โ 30 of them:U+1963..196D,U+A85E..A861,U+A866,U+A922..A92A,U+11150..11154 - ๐
\p{Indic_Syllabic_Category: Vowel_Dependent}โ short form\p{InSC=VowelDependent}โ 739 of them: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 form\p{InSC=VowelIndependent}โ 513 of them:U+0904..0914,U+0960..0961,U+0972..0977,U+0985..098C,U+098F..0990,U+0993..0994...
- ๐ฆ
\p{Inherited}โ this one IS\p{Script_Extensions=Inherited}(short form:\p{Zinh}) โ 586 of them - ๐ฆ
\p{Initial_Punctuation}โ yep, it's\p{General_Category=Initial_Punctuation}(short form:\p{Pi}) โ 12 of them - ๐ฆ
\p{InPC: *}โ that's just\p{Indic_Positional_Category: *} - ๐ฆ
\p{InSC: *}โ and that's just\p{Indic_Syllabic_Category: *} - ๐ฆ
\p{Inscriptional_Pahlavi}โ real talk, this is\p{Script_Extensions=Inscriptional_Pahlavi}(short form:\p{Phli}; NOT\p{Block=Inscriptional_Pahlavi}) โ 27 of them - ๐ฆ
\p{Inscriptional_Parthian}โ same energy, it's\p{Script_Extensions=Inscriptional_Parthian}(short form:\p{Prti}; NOT\p{Block=Inscriptional_Parthian}) โ 30 of them - ๐
X\p{IPA_Ext}โ the real one is\p{IPA_Extensions}(=\p{Block=IPA_Extensions}) โ 96 of them. (littleXflag at the front, don't miss it) - ๐
X\p{IPA_Extensions}โ and THIS one is\p{Block=IPA_Extensions}(short form:\p{InIPAExt}) โ 96 of them - ๐
\p{Is_*}โ it means\p{*}. (Any exceptions are individually noted beginning with the word NOT.) If an entry has flag(s) at its beginning, like "D", the "Is_" form has the same flag(s). fr fr, the flag carries over โ no cap. - ๐ฆ
\p{Ital}โ it's\p{Old_Italic}(=\p{Script_Extensions=Old_Italic}) โ and big NOT\p{Block=Old_Italic}โ 39 of them - ๐
X\p{Jamo}โ it's\p{Hangul_Jamo}(=\p{Block=Hangul_Jamo}) โ 256 of them - ๐
X\p{Jamo_Ext_A}โ it's\p{Hangul_Jamo_Extended_A}(=\p{Block=Hangul_Jamo_Extended_A}) โ 32 of them - ๐
X\p{Jamo_Ext_B}โ it's\p{Hangul_Jamo_Extended_B}(=\p{Block=Hangul_Jamo_Extended_B}) โ 80 of them - ๐ฆ
\p{Java}โ it's\p{Javanese}(=\p{Script_Extensions=Javanese}) (and NOT\p{Block=Javanese}) โ 91 of them - ๐ฆ
\p{Javanese}โ it's\p{Script_Extensions=Javanese}(short form:\p{Java}; NOT\p{Block=Javanese}) โ 91 of them - ๐ฆ
\p{Jg: *}โ it's\p{Joining_Group: *} - ๐ฆ
\p{Join_C}โ it's\p{Join_Control}(=\p{Join_Control=Y}) โ 2 of them - ๐ฆ
\p{Join_C: *}โ it's\p{Join_Control: *} - ๐ฆ
\p{Join_Control}โ it's\p{Join_Control=Y}(short form:\p{JoinC}) โ 2 of them - ๐ฆ
\p{Join_Control: N*}โ (short forms:\p{JoinC=N},\P{JoinC}) โ 1_114_110 of them plus all above-Unicode code points:U+0000..200B,U+200E..infinity - ๐ฆ
\p{Join_Control: Y*}โ (short forms:\p{JoinC=Y},\p{JoinC}) โ 2:U+200C..200D - ๐
\p{Joining_Group: African_Feh}โ short form\p{Jg=AfricanFeh}โ 1:U+08BB - ๐
\p{Joining_Group: African_Noon}โ short form\p{Jg=AfricanNoon}โ 1:U+08BD - ๐
\p{Joining_Group: African_Qaf}โ short form\p{Jg=AfricanQaf}โ 2:U+08BC,U+08C4 - ๐
\p{Joining_Group: Ain}โ short form\p{Jg=Ain}โ 9 of them:U+0639..063A,U+06A0,U+06FC,U+075D..075F,U+08B3,U+08C3 - ๐
\p{Joining_Group: Alaph}โ short form\p{Jg=Alaph}โ 1:U+0710 - ๐
\p{Joining_Group: Alef}โ short form\p{Jg=Alef}โ 29 of them:U+0622..0623,U+0625,U+0627,U+0671..0673,U+0675,U+0773..0774... - ๐
\p{Joining_Group: Beh}โ short form\p{Jg=Beh}โ 27 of them:U+0628,U+062A..062B,U+066E,U+0679..0680,U+0750..0756,U+08A0..08A1... - ๐
\p{Joining_Group: Beth}โ short form\p{Jg=Beth}โ 2:U+0712,U+072D - ๐
\p{Joining_Group: Burushaski_Yeh_Barree}โ short form\p{Jg=BurushaskiYehBarree}โ 2:U+077A..077B - ๐
\p{Joining_Group: Dal}โ short form\p{Jg=Dal}โ 16 of them:U+062F..0630,U+0688..0690,U+06EE,U+0759..075A,U+08AE,U+10EC2 - ๐
\p{Joining_Group: Dalath_Rish}โ short form\p{Jg=DalathRish}โ 4:U+0715..0716,U+072A,U+072F - ๐
\p{Joining_Group: E}โ short form\p{Jg=E}โ 1:U+0725 - ๐
\p{Joining_Group: Farsi_Yeh}โ short form\p{Jg=FarsiYeh}โ 7 of them:U+063D..063F,U+06CC,U+06CE,U+0775..0776 - ๐
\p{Joining_Group: Fe}โ short form\p{Jg=Fe}โ 1:U+074F - ๐
\p{Joining_Group: Feh}โ short form\p{Jg=Feh}โ 10 of them:U+0641,U+06A1..06A6,U+0760..0761,U+08A4 - ๐
\p{Joining_Group: Final_Semkath}โ short form\p{Jg=FinalSemkath}โ 1:U+0724 - ๐
\p{Joining_Group: Gaf}โ short form\p{Jg=Gaf}โ 17 of them:U+063B..063C,U+06A9,U+06AB,U+06AF..06B4,U+0762..0764,U+088D... - ๐
\p{Joining_Group: Gamal}โ short form\p{Jg=Gamal}โ 3:U+0713..0714,U+072E - ๐
\p{Joining_Group: Hah}โ short form\p{Jg=Hah}โ 22 of them:U+062C..062E,U+0681..0687,U+06BF,U+0757..0758,U+076E..076F,U+0772... - ๐
\p{Joining_Group: Hamza_On_Heh_Goal}โ it's actually\p{Joining_Group=Teh_Marbuta_Goal}โ 1 - ๐
\p{Joining_Group: Hanifi_Rohingya_Kinna_Ya}โ short form\p{Jg=HanifiRohingyaKinnaYa}โ 4:U+10D19,U+10D1E,U+10D20,U+10D23 - ๐
\p{Joining_Group: Hanifi_Rohingya_Pa}โ short form\p{Jg=HanifiRohingyaPa}โ 3:U+10D02,U+10D09,
U+10D1C)
and that's the tail end of the last one, bestie. Now, the Joining_Group saga continues, and it's a LOT, but we're gonna get through it together, fr fr. Every single one, no skips. ๐
\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)๐
okay these next ones are all Manichaean, and there's like a million of them, no cap ๐ but they're kinda iconic ngl
\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)๐\p{Joining_Group: Manichaean_Gimel}(Short:\p{Jg=ManichaeanGimel})(2: U+10AC3..10AC4)โญ\p{Joining_Group: Manichaean_Heth}(Short:\p{Jg=ManichaeanHeth})(1: U+10ACD)๐\p{Joining_Group: Manichaean_Hundred}(Short:\p{Jg=ManichaeanHundred})(1: U+10AEF)๐\p{Joining_Group: Manichaean_Kaph}(Short:\p{Jg=ManichaeanKaph})(3: U+10AD0..10AD2)๐\p{Joining_Group: Manichaean_Lamedh}(Short:\p{Jg=ManichaeanLamedh})(1: U+10AD3)๐ง\p{Joining_Group: Manichaean_Mem}(Short:\p{Jg=ManichaeanMem})(1: U+10AD6)๐\p{Joining_Group: Manichaean_Nun}(Short:\p{Jg=ManichaeanNun})(1: U+10AD7)๐\p{Joining_Group: Manichaean_One}(Short:\p{Jg=ManichaeanOne})(1: U+10AEB)โจ\p{Joining_Group: Manichaean_Pe}(Short:\p{Jg=ManichaeanPe})(2: U+10ADB..10ADC)๐\p{Joining_Group: Manichaean_Qoph}(Short:\p{Jg=ManichaeanQoph})(3: U+10ADE..10AE0)๐ฆ\p{Joining_Group: Manichaean_Resh}(Short:\p{Jg=ManichaeanResh})(1: U+10AE1)๐ธ\p{Joining_Group: Manichaean_Sadhe}(Short:\p{Jg=ManichaeanSadhe})(1: U+10ADD)๐\p{Joining_Group: Manichaean_Samekh}(Short:\p{Jg=ManichaeanSamekh})(1: U+10AD8)๐ซถ\p{Joining_Group: Manichaean_Taw}(Short:\p{Jg=ManichaeanTaw})(1: U+10AE4)๐ญ\p{Joining_Group: Manichaean_Ten}(Short:\p{Jg=ManichaeanTen})(1: U+10AED)๐ฅ\p{Joining_Group: Manichaean_Teth}(Short:\p{Jg=ManichaeanTeth})(1: U+10ACE)๐\p{Joining_Group: Manichaean_Thamedh}(Short:\p{Jg=ManichaeanThamedh})(1: U+10AD5)๐\p{Joining_Group: Manichaean_Twenty}(Short:\p{Jg=ManichaeanTwenty})(1: U+10AEE)โญ\p{Joining_Group: Manichaean_Waw}(Short:\p{Jg=ManichaeanWaw})(1: U+10AC7)๐\p{Joining_Group: Manichaean_Yodh}(Short:\p{Jg=ManichaeanYodh})(1: U+10ACF)๐\p{Joining_Group: Manichaean_Zayin}(Short:\p{Jg=ManichaeanZayin})(2: U+10AC9..10ACA)๐\p{Joining_Group: Meem}(Short:\p{Jg=Meem})(4: U+0645, U+0765..0766, U+08A7)๐ง\p{Joining_Group: Mim}(Short:\p{Jg=Mim})(1: U+0721)๐\p{Joining_Group: No_Joining_Group}(Short:\p{Jg=NoJoiningGroup})(1_113_756 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})(10: U+0646, U+06B9..06BC, U+0767..0769, U+0889, U+088F)โจ\p{Joining_Group: Nun}(Short:\p{Jg=Nun})(1: U+0722)๐\p{Joining_Group: Nya}(Short:\p{Jg=Nya})(1: U+06BD)๐ฆ\p{Joining_Group: Pe}(Short:\p{Jg=Pe})(1: U+0726)๐ธ\p{Joining_Group: Qaf}(Short:\p{Jg=Qaf})(6: U+0642, U+066F, U+06A7..06A8, U+08A5, U+08B5)๐\p{Joining_Group: Qaph}(Short:\p{Jg=Qaph})(1: U+0729)๐ซถ\p{Joining_Group: Reh}(Short:\p{Jg=Reh})(19: 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: U+0727)๐ฅ\p{Joining_Group: Rohingya_Yeh}(Short:\p{Jg=RohingyaYeh})(1: U+08AC)๐\p{Joining_Group: Sad}(Short:\p{Jg=Sad})(6: U+0635..0636, U+069D..069E, U+06FB, U+08AF)๐\p{Joining_Group: Sadhe}(Short:\p{Jg=Sadhe})(1: U+0728)โญ\p{Joining_Group: Seen}(Short:\p{Jg=Seen})(11: U+0633..0634, U+069A..069C, U+06FA, U+075C, U+076D, U+0770 ...)๐\p{Joining_Group: Semkath}(Short:\p{Jg=Semkath})(1: U+0723)๐\p{Joining_Group: Shin}(Short:\p{Jg=Shin})(1: U+072B)๐\p{Joining_Group: Straight_Waw}(Short:\p{Jg=StraightWaw})(1: U+08B1)๐ง\p{Joining_Group: Swash_Kaf}(Short:\p{Jg=SwashKaf})(1: U+06AA)๐\p{Joining_Group: Syriac_Waw}(Short:\p{Jg=SyriacWaw})(1: U+0718)๐\p{Joining_Group: Tah}(Short:\p{Jg=Tah})(7: U+0637..0638, U+069F, U+088B..088C, U+08A3, U+10EC3)โจ\p{Joining_Group: Taw}(Short:\p{Jg=Taw})(1: U+072C)๐\p{Joining_Group: Teh_Marbuta}(Short:\p{Jg=TehMarbuta})(3: U+0629, U+06C0, U+06D5)๐ฆ\p{Joining_Group: Teh_Marbuta_Goal}(Short:\p{Jg=TehMarbutaGoal})(1: U+06C3)๐ธ\p{Joining_Group: Teth}(Short:\p{Jg=Teth})(2: U+071B..071C)๐\p{Joining_Group: Thin_Noon}(Short:\p{Jg=ThinNoon})(1: U+10EC6)๐ซถ\p{Joining_Group: Thin_Yeh}(Short:\p{Jg=ThinYeh})(1: U+0886)๐ญ\p{Joining_Group: Vertical_Tail}(Short:\p{Jg=VerticalTail})(1: U+088E)๐ฅ\p{Joining_Group: Waw}(Short:\p{Jg=Waw})(16: U+0624, U+0648, U+0676..0677, U+06C4..06CB, U+06CF, U+0778..0779 ...)๐\p{Joining_Group: Yeh}(Short:\p{Jg=Yeh})(11: 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: U+06D2..06D3)โญ\p{Joining_Group: Yeh_With_Tail}(Short:\p{Jg=YehWithTail})(1: U+06CD)๐\p{Joining_Group: Yudh}(Short:\p{Jg=Yudh})(1: U+071D)๐\p{Joining_Group: Yudh_He}(Short:\p{Jg=YudhHe})(1: U+071E)๐\p{Joining_Group: Zain}(Short:\p{Jg=Zain})(1: U+0719)๐ง\p{Joining_Group: Zhain}(Short:\p{Jg=Zhain})(1: U+074D)๐
and now for the Joining_Type entries, which are a whole different vibe โจ
\p{Joining_Type: C}\p{Joining_Type=Join_Causing}(7)๐\p{Joining_Type: D}\p{Joining_Type=Dual_Joining}(615)โจ\p{Joining_Type: Dual_Joining}(Short:\p{Jt=D})(615: 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: U+0640, U+07FA, U+0883..0885, U+180A, U+200D)๐ฆ\p{Joining_Type: L}\p{Joining_Type=Left_Joining}(5)๐ธ\p{Joining_Type: Left_Joining}(Short:\p{Jt=L})(5: U+A872, U+10ACD, U+10AD7, U+10D00, U+10FCB)๐\p{Joining_Type: Non_Joining}(Short:\p{Jt=U})(1_111_108 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}\p{Joining_Type=Right_Joining}(153)๐ญ\p{Joining_Type: Right_Joining}(Short:\p{Jt=R})(153: U+0622..0625, U+0627, U+0629, U+062F..0632, U+0648, U+0671..0673 ...)๐ฅ\p{Joining_Type: T}\p{Joining_Type=Transparent}(2224)๐\p{Joining_Type: Transparent}(Short:\p{Jt=T})(2224: [\xad], U+0300..036F, U+0483..0489, U+0591..05BD, U+05BF, U+05C1..05C2 ...)๐\p{Joining_Type: U}\p{Joining_Type=Non_Joining}(1_111_108 plus all above-Unicode code points)โญ\p{Jt: *}\p{Joining_Type: *}๐
and finally, some script and block love ๐
\p{Kaithi}\p{Script_Extensions=Kaithi}(Short:\p{Kthi}; NOT\p{Block=Kaithi})(89)๐X \p{Kaktovik_Numerals}\p{Block=Kaktovik_Numerals}(32)๐\p{Kali}โ that's just\p{Kayah_Li}(= \p{Script_Extensions=Kayah_Li}, iykyk) (48)\p{Kana}โ aka\p{Katakana}(= \p{Script_Extensions=Katakana}) โ and babes, that isNOT \p{Block=Katakana}๐ซถ (375)X\p{Kana_Ext_A}โ\p{Kana_Extended_A}(= \p{Block=Kana_Extended_A}) (48)X\p{Kana_Ext_B}โ\p{Kana_Extended_B}(= \p{Block=Kana_Extended_B}) (16)X\p{Kana_Extended_A}โ\p{Block=Kana_Extended_A}(short form:\p{InKanaExtA}) (48)X\p{Kana_Extended_B}โ\p{Block=Kana_Extended_B}(short form:\p{InKanaExtB}) (16)X\p{Kana_Sup}โ\p{Kana_Supplement}(= \p{Block=Kana_Supplement}) (256)X\p{Kana_Supplement}โ\p{Block=Kana_Supplement}(short form:\p{InKanaSup}) (256)X\p{Kanbun}โ\p{Block=Kanbun}(16)X\p{Kangxi}โ\p{Kangxi_Radicals}(= \p{Block=Kangxi_Radicals}) (224)X\p{Kangxi_Radicals}โ\p{Block=Kangxi_Radicals}(short form:\p{InKangxi}) (224)\p{Kannada}โ\p{Script_Extensions=Kannada}(short form:\p{Knda}; and no,NOT \p{Block=Kannada}) (108)\p{Katakana}โ\p{Script_Extensions=Katakana}(short form:\p{Kana}; againNOT \p{Block=Katakana}) (375)X\p{Katakana_Ext}โ\p{Katakana_Phonetic_Extensions}(= \p{Block=Katakana_Phonetic_Extensions}) (16)X\p{Katakana_Phonetic_Extensions}โ\p{Block=Katakana_Phonetic_Extensions}(short form:\p{InKatakanaExt}) (16)\p{Kawi}โ\p{Script_Extensions=Kawi}(NOT \p{Block=Kawi}) (87) โจ\p{Kayah_Li}โ\p{Script_Extensions=Kayah_Li}(short form:\p{Kali}) (48)?\p{kEH_Core: C}โ (4403:U+13000..1305C,U+1305F..13069,U+1306B,U+1306D..13091,U+13093..13096,U+13098..130B8...)?\p{kEH_Core: L}โ (96:U+1305D..1305E,U+1306A,U+1306C,U+13092,U+13097,U+130B9...)?\p{kEH_Core: N}โ (1_109_613 plus all above-Unicode code points:U+0000..12FFF,U+13430..13460,U+1346E,U+13475,U+13488,U+13495...)\p{kEH_NoMirror}โ\p{kEH_NoMirror=Y}(4)\p{kEH_NoMirror: N*}โ (single form:\P{kEHNoMirror}) (1_114_108 plus all above-Unicode code points:U+0000..13080,U+13082..13083,U+13085..130BA,U+130BC,U+130BE..infinity)\p{kEH_NoMirror: Y*}โ (single form:\p{kEHNoMirror}) (4:U+13081,U+13084,U+130BB,U+130BD)\p{kEH_NoRotate}โ\p{kEH_NoRotate=Y}(44)\p{kEH_NoRotate: N*}โ (single form:\P{kEHNoRotate}) (1_114_068 plus 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 form:\p{kEHNoRotate}) (44:U+13021,U+1303F,U+130AD,U+130B7,U+13131,U+131B1...)\p{Khar}โ\p{Kharoshthi}(= \p{Script_Extensions=Kharoshthi}) (NOT \p{Block=Kharoshthi}) (68)\p{Kharoshthi}โ\p{Script_Extensions=Kharoshthi}(short form:\p{Khar};NOT \p{Block=Kharoshthi}) (68)\p{Khitan_Small_Script}โ\p{Script_Extensions=Khitan_Small_Script}(short form:\p{Kits};NOT \p{Block=Khitan_Small_Script}) (472)\p{Khmer}โ\p{Script_Extensions=Khmer}(short form:\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 form:\p{Khoj};NOT \p{Block=Khojki}) (85)\p{Khudawadi}โ\p{Script_Extensions=Khudawadi}(short form:\p{Sind};NOT \p{Block=Khudawadi}) (81)\p{Kirat_Rai}โ\p{Script_Extensions=Kirat_Rai}(short form:\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}) (108)\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)\p{L},\pLโ\p{Letter}(= \p{General_Category=Letter}) (145_672) ๐X\p{L&}โ\p{Cased_Letter}(= \p{General_Category=Cased_Letter}) (4200)X\p{L_}โ\p{Cased_Letter}(= \p{General_Category=Cased_Letter}) โ heads up, the trailing_matters in spite of loose matching rules, so do NOT come for me ๐ (4200)\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 form:\p{Latn}) (1559)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 form:\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 form:\p{InLatinExtA}) (128)X\p{Latin_Extended_Additional}โ\p{Block=Latin_Extended_Additional}(short form:\p{InLatinExtAdditional}) (256)X\p{Latin_Extended_B}โ\p{Block=Latin_Extended_B}(short form:\p{InLatinExtB}) (208)X\p{Latin_Extended_C}โ\p{Block=Latin_Extended_C}(short form:\p{InLatinExtC}) (32)X\p{Latin_Extended_D}โ\p{Block=Latin_Extended_D}(short form:\p{InLatinExtD}) (224)X\p{Latin_Extended_E}โ\p{Block=Latin_Extended_E}(short form:\p{InLatinExtE}) (64)X\p{Latin_Extended_F}โ\p{Block=Latin_Extended_F}(short form:\p{InLatinExtF}) (64)X\p{Latin_Extended_G}โ\p{Block=Latin_Extended_G}(short form:\p{InLatinExtG}) (256)\p{Latn}โ\p{Latin}(= \p{Script_Extensions=Latin}) (1559)\p{Lb: *}โ\p{Line_Break: *}\p{LC}โ\p{Cased_Letter}(= \p{General_Category=Cased_Letter}) (4200)\p{Lepc}โ\p{Lepcha}(= \p{Script_Extensions=Lepcha}) (NOT \p{Block=Lepcha}) (74)\p{Lepcha}โ\p{Script_Extensions=Lepcha}(short form:\p{Lepc};NOT \p{Block=Lepcha}) (74)\p{Letter}โ\p{General_Category=Letter}(short form:\p{L}) (145_672) ๐\p{Letter_Number}โ\p{General_Category=Letter_Number}(short form:\p{Nl}) (239)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 form:\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)\p{Line_Break: AI}โ\p{Line_Break=Ambiguous}(718)\p{Line_Break: AK}โ\p{Line_Break=Aksara}(329)\p{Line_Break: Aksara}โ (short form:\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 form:\p{Lb=AP}) (6:U+11003..11004,U+113D1,U+1193F,U+11941,U+11F02)\p{Line_Break: Aksara_Start}โ (short form:\p{Lb=AS}) (214:U+1B50..1B59,U+1BC0..1BE5,U+A9D0..A9D9,U+AA00..AA28,
(picking up mid-list, still inside a code point enumeration, we never left ๐)
U+AA50..AA59, U+11066..1106F ...)
\p{Line_Break: AL} \p{Line_Break=Alphabetic} (26_954)
okay so the Line_Break family is HUGE, it's basically the whole rest of this chunk, and that first line is just the tail end of the code point list for the entry right above it. don't panic, it's continuity, not a new vibe. ๐ซถ
notice the format bestie: the short alias sits on the left, the canonical name sits on the right, and the parenthetical is count: sample code points ... with a little ... meaning "and so on forever, you get it". every entry does this. okay let's GO.
โจ Line_Break, the whole entire alphabet soup โจ
๐ฆ Alphabetic & Ambiguous
\p{Line_Break: Alphabetic} (Short: \p{Lb=AL}) (26_954: [#&*<=>\@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 ...)
Alphabetic is doing the absolute most with 26_954 code points, and yes the short form is \p{Lb=AL}. then Ambiguous rolls up with 718 and the short form \p{Lb=AI}. cute little range party in the brackets, love that for them. ๐
๐ฅ The two-letter baddies (aliases only)
\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} (263)
\p{Line_Break: BB} \p{Line_Break=Break_Before} (55)
\p{Line_Break: BK} \p{Line_Break=Mandatory_Break} (4)
these are "left side, right side, number, that's it" entries. no sample code points, no drama. AP, AS, B2, BA, BB, BK โ short and iconic, and every one of them expands into a full name. iykyk. โจ
๐ The breaks, but make it verbose
\p{Line_Break: Break_After} (Short: \p{Lb=BA}) (263: [\t\|\xad],
U+0964..0965, U+0E5A..0E5B, U+0F0B,
U+0F34, U+0F7F ...)
\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])
Break_After has 263 members and yes \t and \xad are right there in the bracket. Break_Before has 55, Break_Both has just 3 (three!! tiny!!), Break_Symbols has literally 1 and it's [\/], and Carriage_Return has 1 and it's [\r]. main character energy from the tiny ones honestly. ๐
๐ธ C-club: CB, CJ, CL
\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: 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: Contingent_Break} (Short: \p{Lb=CB}) (1: U+FFFC)
\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
...)
see how Conditional_Japanese_Starter shows up twice? once abbreviated in that funky wrapped \p{Lb= shape, once with the (Short:) note and the actual code points. same for the rest โ alias line, then the real line. Contingent_Break = 1 code point and it's U+FFFC, Close_Parenthesis = 6, Close_Punctuation = 94. no cap, these numbers are all over the place and i respect it. ๐
๐ง Combining_Mark, Complex_Context, and friends
\p{Line_Break: CM} \p{Line_Break=Combining_Mark} (2512)
\p{Line_Break: Combining_Mark} (Short: \p{Lb=CM}) (2512: [^\t\n
\cK\f\r\x20-\x7e\x85\xa0-\xff],
U+0300..035B, U+0363..036F,
U+0483..0489, U+0591..05BD, U+05BF ...)
\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: CP} \p{Line_Break=Close_Parenthesis} (6)
\p{Line_Break: CR} \p{Line_Break=Carriage_Return} (1)
ok Combining_Mark ate, 2512 code points and the negated set [^\t\n\cK\f\r\x20-\x7e\x85\xa0-\xff] is genuinely giving "everything except these". Complex_Context brings 757. and there's the reverse-direction pairs again: CP โ Close_Parenthesis, CR โ Carriage_Return. the table does this both ways and honestly? slay. ๐
๐ Emoji-coded: E_Base, E_Modifier, EX, GL
\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)
\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+035C..0362, U+0F08, U+0F0C, U+0F12,
U+0FD9..0FDA ...)
<E_Base> over here is 134 members and it's all hand/thumb/skin-tone territory, then E_Modifier is literally the five skin tone modifiers U+1F3FB..1F3FF. E_Base and E_Modifier get short forms EB and EM. Exclamation is 40 with [!?] first, Glue is 41 starting with [\xa0]. obsessed with how the emoji stuff is just casually in the line break table. ๐ญ๐
๐ Hangul + Hebrew + hyphens
\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: HH} \p{Line_Break=Unambiguous_Hyphen} (11)
\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: [\-])
H2 = 399, H3 = 10_773 (that underscore is the digits separator, don't @ me), and both have their short form printed as \p{Lb=H2} / \p{Lb=H3} with no long name to expand into. Hebrew_Letter = 75. then hyphens everywhere: HH โ Unambiguous_Hyphen (11), HY โ Hyphen (1, just [\-]). one single hyphen carrying the whole category, that's iconic. ๐
โญ ID through IS (including a little typo cameo)
\p{Line_Break: ID} \p{Line_Break=Ideographic} (172_561)
\p{Line_Break: Ideographic} (Short: \p{Lb=ID}) (172_561: 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)
\p{Line_Break: IS} \p{Line_Break=Infix_Numeric} (10)
Ideographic is the giant of this group with 172_561 code points, no notes. then Inseparable with its 6, and โ bestie, look โ there's Inseperable sitting right there with the exact same 6, and yeah it's spelled Inseperable, and yeah that's in the table, we do not "fix" it, we preserve it with love. ๐ซถ Infix_Numeric = 10, starts with [,.:;]. ๐
๐ฆ Hangul jamo + control-ish friends
\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)
JL = 125, JT = 137, JV = 95, all of them with clean two-range bodies. then Line_Feed shows up as 1 and it's [\n] โ yeah, the humble newline. Mandatory_Break = 4 with [\cK\f] plus U+2028..2029. Next_Line = 1 and it's [\x85]. โจ
๐ N through P (numbers, punctuation, currency vibes)
\p{Line_Break: Nonstarter} (Short: \p{Lb=NS}) (37: U+17D6,
U+203C..203D, U+2047..2049, U+3005,
U+301C, U+303B..303C ...)
\p{Line_Break: NS} \p{Line_Break=Nonstarter} (37)
\p{Line_Break: NU} \p{Line_Break=Numeric} (705)
\p{Line_Break: Numeric} (Short: \p{Lb=NU}) (705: [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 ...)
Nonstarter = 37, Numeric = 705 starting with the very relatable [0-9], Open_Punctuation = 95, Postfix_Numeric = 38, Prefix_Numeric = 67 opening with [\$+\\\xa3-\xa5\xb1]. money and punctuation and digits all tangled in one table. the range aesthetic is unreal. ๐ฅ
๐ธ Q through S (quotes, flags, and the D flag shows up)
\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])
Quotation is 39 and starts with [\"\'\xab\xbb], Regional_Indicator is 26 (U+1F1E6..1F1FF, the flag alphabet, we love her), RI and SA do their alias thing, and then โ peep the D in the left margin. there it is. it's a flag, it's printed in the column, and this chunk has it twice. ๐
and the second one is not a one-liner, it comes with a whole sentence attached:
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)
okay bestie this one is real: <<surrogates should never appear in well-formed text, and therefore shouldn't be the basis for line breaking>>. that's straight from the table, thatDis sitting there for a reason, and it covers2048code points,U+D800..DFFF. do not treat this as a cute little category, treat it as a "read the sentence" category. ๐
and then Space right after is 1 and it's [\x20]. whiplash, honestly. ๐ซถ
๐ง S through Z (symbols, viramas, joiners, and the mystery bin)
\p{Line_Break: SY} \p{Line_Break=Break_Symbols} (1)
\p{Line_Break: Unambiguous_Hyphen} (Short: \p{Lb=HH}) (11: U+058A,
U+05BE, U+1400, U+2010, U+2012..2013,
U+2E17 ...)
\p{Line_Break: Unknown} (Short: \p{Lb=XX}) (894_650 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} (894_650 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)
Unknown is the absolute unit here: 894_650 plus all above-Unicode code points, and it has the alias XX doing the exact same job with the exact same description. Virama = 7, Virama_Final = 2, Word_Joiner = 2 (U+2060, U+FEFF), and the tiny ones โ ZW = 1 with U+200B, ZWJ = 1 with U+200D. one code point holding an entire category down. that's range-queen behavior. ๐
โจ and now the non-Line_Break entries start rolling in โจ
๐ Line_Separator
\p{Line_Separator} \p{General_Category=Line_Separator}
(Short: \p{Zl}) (1)
one single code point, short form \p{Zl}, and it maps straight onto \p{General_Category=Line_Separator}. quiet, elegant, no notes. ๐ธ
๐ฆ Linear_A, Linear_B, and the X flag
\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)
bestie, read theLinear_Aline carefully: the short form is\p{Lina}and the table literally yellsNOT \p{Block=Linear_A}. like, it went out of its way. respect the all-caps. ๐
Linear_B is 268 with short form \p{Linb}, and then the X flag appears in the margin on both Linear_B_Ideograms (128) and Linear_B_Syllabary (128) โ those two resolve to \p{Block=...} instead of a script extension. the flags are the whole plot here. โจ
๐ Lisu, Lisu_Sup, Lisu_Supplement
\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)
another NOT \p{Block=...} warning, this time on \p{Lisu} (53 code points). then the X-flagged Lisu_Sup and Lisu_Supplement are the same thing: \p{Lisu_Supplement} equals \p{Block=Lisu_Supplement}, 16 each, with short form \p{InLisuSup}. same property, two names, one X. iykyk. ๐ซถ
๐ Ll and Lm, the General_Category girlies
\p{Ll} \p{Lowercase_Letter} (=
\p{General_Category=Lowercase_Letter})
(/i= General_Category=Cased_Letter)
(2283)
\p{Lm} \p{Modifier_Letter} (=
\p{General_Category=Modifier_Letter})
(410)
\p{Ll} is \p{Lowercase_Letter}, which equals \p{General_Category=Lowercase_Letter}, with 2283 code points โ and don't sleep on the /i= line, because under /i matching, Ll maps to General_Category=Cased_Letter. not "Lowercase_Letter", Cased_Letter. that's the whole flex of that parenthetical, and that's why it's written that way. ๐
\p{Lm} is \p{Modifier_Letter} = \p{General_Category=Modifier_Letter}, 410 code points, no /i= note, because not every letter gets one. ๐
and we are still deep in the list, obviously, because there are so many more of these and the table is nowhere near done with us. ๐
okay bestie weโre still knee-deep in the Unicode property list and honestly? itโs giving phone book but make it โจmagicalโจ. Ls and Ms only, every alias and count intact, no cap ๐
\p{Lo},\p{Other_Letter}(=\p{General_Category=Other_Letter}) โ (141_062)\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) โ (2595)\p{Lower: *},\p{Lowercase: *}\p{Lowercase},\p{XPosixLower}(=\p{Lowercase=Y}) (/i=Cased=Yes) โ (2595)\p{Lowercase: N*}(Short:\p{Lower=N},\P{Lower}; /i=Cased=No) โ (1_111_517 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) โ (2595:[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) โ (2283)\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) โ (1886)\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}) โ (2543)\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)\p{Makasar},\p{Script_Extensions=Makasar}(Short:\p{Maka}; NOT\p{Block=Makasar}) โ (25)\p{Malayalam},\p{Script_Extensions=Malayalam}(Short:\p{Mlym}; NOT\p{Block=Malayalam}) โ (127)\p{Mand},\p{Mandaic}(=\p{Script_Extensions=Mandaic}) (NOT\p{Block=Mandaic}) โ (30)\p{Mandaic},\p{Script_Extensions=Mandaic}(Short:\p{Mand}; NOT\p{Block=Mandaic}) โ (30)\p{Mani},\p{Manichaean}(=\p{Script_Extensions=Manichaean}) (NOT\p{Block=Manichaean}) โ (52)\p{Manichaean},\p{Script_Extensions=Manichaean}(Short:\p{Mani}; NOT\p{Block=Manichaean}) โ (52)\p{Marc},\p{Marchen}(=\p{Script_Extensions=Marchen}) (NOT\p{Block=Marchen}) โ (68)\p{Marchen},\p{Script_Extensions=Marchen}(Short:\p{Marc}; NOT\p{Block=Marchen}) โ (68)\p{Mark},\p{General_Category=Mark}(Short:\p{M}) โ (2543)\p{Masaram_Gondi},\p{Script_Extensions=Masaram_Gondi}(Short:\p{Gonm}; NOT\p{Block=Masaram_Gondi}) โ (77)\p{Math},\p{Math=Y}โ (2322)\p{Math: N*}(Single:\P{Math}) โ (1_111_790 plus all above-Unicode code points:[\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*}(Single:\p{Math}) โ (2322:[+<=>\^\|~\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) - X
\p{Math_Operators},\p{Mathematical_Operators}(=\p{Block=Mathematical_Operators}) โ (256) \p{Math_Symbol},\p{General_Category=Math_Symbol}(Short:\p{Sm}) โ (960)- X
\p{Mathematical_Alphanumeric_Symbols},\p{Block=Mathematical_Alphanumeric_Symbols}(Short:\p{InMathAlphanum}) โ (1024) - X
\p{Mathematical_Operators},\p{Block=Mathematical_Operators}(Short:\p{InMathOperators}) โ (256) - X
\p{Mayan_Numerals},\p{Block=Mayan_Numerals}โ (32) \p{Mc},\p{Spacing_Mark}(=\p{General_Category=Spacing_Mark}) โ (471)\p{MCM},\p{Modifier_Combining_Mark}(=\p{Modifier_Combining_Mark=Y}) โ (14)\p{MCM: *},\p{Modifier_Combining_Mark: *}\p{Me},\p{Enclosing_Mark}(=\p{General_Category=Enclosing_Mark}) โ (13)\p{Medefaidrin},\p{Script_Extensions=Medefaidrin}(Short:\p{Medf}; NOT\p{Block=Medefaidrin}) โ (91)\p{Medf},\p{Medefaidrin}(=\p{Script_Extensions=Medefaidrin}) (NOT\p{Block=Medefaidrin}) โ (91)\p{Meetei_Mayek},\p{Script_Extensions=Meetei_Mayek}(Short:\p{Mtei}; NOT\p{Block=Meetei_Mayek}) โ (79)- X
\p{Meetei_Mayek_Ext},\p{Meetei_Mayek_Extensions}(=\p{Block=Meetei_Mayek_Extensions}) โ (32) - X
\p{Meetei_Mayek_Extensions},\p{Block=Meetei_Mayek_Extensions}(Short:\p{InMeeteiMayekExt}) โ (32) \p{Mend},\p{Mende_Kikakui}(=\p{Script_Extensions=Mende_Kikakui}) (NOT\p{Block=Mende_Kikakui}) โ (213)\p{Mende_Kikakui},\p{Script_Extensions=Mende_Kikakui}(Short:\p{Mend}; NOT\p{Block=Mende_Kikakui}) โ (213)\p{Merc},\p{Meroitic_Cursive}(=\p{Script_Extensions=Meroitic_Cursive}) (NOT\p{Block=Meroitic_Cursive}) โ (90)\p{Mero},\p{Meroitic_Hieroglyphs}(=\p{Script_Extensions=Meroitic_Hieroglyphs}) (NOT\p{Block=Meroitic_Hieroglyphs}) โ (33)\p{Meroitic_Cursive},\p{Script_Extensions=Meroitic_Cursive}(Short:\p{Merc}; NOT\p{Block=Meroitic_Cursive}) โ (90)\p{Meroitic_Hieroglyphs},\p{Script_Extensions=Meroitic_Hieroglyphs}(Short:\p{Mero}; NOT\p{Block=Meroitic_Hieroglyphs}) โ (33)\p{Miao},\p{Script_Extensions=Miao}(NOT\p{Block=Miao}) โ (149)- X
\p{Misc_Arrows},\p{Miscellaneous_Symbols_And_Arrows}(=\p{Block=Miscellaneous_Symbols_And_Arrows}) โ (256) - X
\p{Misc_Math_Symbols_A},\p{Miscellaneous_Mathematical_Symbols_A}(=\p{Block=Miscellaneous_Mathematical_Symbols_A}) โ (48) - X
\p{Misc_Math_Symbols_B},\p{Miscellaneous_Mathematical_Symbols_B}(=\p{Block=Miscellaneous_Mathematical_Symbols_B}) โ (128) - X
\p{Misc_Pictographs},\p{Miscellaneous_Symbols_And_Pictographs}(=\p{Block=Miscellaneous_Symbols_And_Pictographs}) โ (768) - X
\p{Misc_Symbols},\p{Miscellaneous_Symbols}(=\p{Block=Miscellaneous_Symbols}) โ (256) - X
\p{Misc_Symbols_Sup},\p{Miscellaneous_Symbols_Supplement}(=\p{Block=Miscellaneous_Symbols_Supplement}) โ (64) - X
\p{Misc_Technical},\p{Miscellaneous_Technical}(=\p{Block=Miscellaneous_Technical}) โ (256) - X
\p{Miscellaneous_Mathematical_Symbols_A},\p{Block=Miscellaneous_Mathematical_Symbols_A}(Short:\p{InMiscMathSymbolsA}) โ (48) - X
\p{Miscellaneous_Mathematical_Symbols_B},\p{Block=Miscellaneous_Mathematical_Symbols_B}
and weโre literally stopping mid-entry on Miscellaneous_Mathematical_Symbols_B because the next part has the rest โ donโt go anywhere, bestie ๐
- wrapping up the one that got split: short form
\p{InMiscMathSymbolsB}ยท 128 code points ๐ซ - X
\p{Miscellaneous_Symbols},\p{Block=Miscellaneous_Symbols}โ short form\p{InMiscSymbols}ยท 256 code points - X
\p{Miscellaneous_Symbols_And_Arrows},\p{Block=Miscellaneous_Symbols_And_Arrows}โ short form\p{InMiscArrows}ยท 256 code points ๐น - X
\p{Miscellaneous_Symbols_And_Pictographs},\p{Block=Miscellaneous_Symbols_And_Pictographs}โ short form\p{InMiscPictographs}ยท 768 code points - X
\p{Miscellaneous_Symbols_Supplement},\p{Block=Miscellaneous_Symbols_Supplement}โ short form\p{InMiscSymbolsSup}ยท 64 code points - X
\p{Miscellaneous_Technical},\p{Block=Miscellaneous_Technical}โ short form\p{InMiscTechnical}ยท 256 code points โ๏ธ \p{Mlym},\p{Malayalam}โ same as\p{Script_Extensions=Malayalam}, and NOT\p{Block=Malayalam}, bestie, do not mix those up ยท 127\p{Mn},\p{Nonspacing_Mark}โ same as\p{General_Category=Nonspacing_Mark}ยท 2059\p{Modi}โ same as\p{Script_Extensions=Modi}, and NOT\p{Block=Modi}ยท 89\p{Modifier_Combining_Mark},\p{Modifier_Combining_Mark=Y}โ short form\p{MCM}ยท 14\p{Modifier_Combining_Mark: N*}โ short forms\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... ๐ซ\p{Modifier_Combining_Mark: Y*}โ short forms\p{MCM=Y},\p{MCM}ยท 14:U+0654..0655,U+0658,U+06DC,U+06E3,U+06E7..06E8,U+08CA..08CB...\p{Modifier_Letter},\p{General_Category=Modifier_Letter}โ short form\p{Lm}ยท 410- X
\p{Modifier_Letters},\p{Spacing_Modifier_Letters}โ which is the same as\p{Block=Spacing_Modifier_Letters}ยท 80 \p{Modifier_Symbol},\p{General_Category=Modifier_Symbol}โ short form\p{Sk}ยท 125- X
\p{Modifier_Tone_Letters},\p{Block=Modifier_Tone_Letters}ยท 32 \p{Mong},\p{Mongolian}โ same as\p{Script_Extensions=Mongolian}, and NOT\p{Block=Mongolian}ยท 178\p{Mongolian}โ same as\p{Script_Extensions=Mongolian}, short form\p{Mong}, and again NOT\p{Block=Mongolian}ยท 178- X
\p{Mongolian_Sup},\p{Mongolian_Supplement}โ same as\p{Block=Mongolian_Supplement}ยท 32 - X
\p{Mongolian_Supplement},\p{Block=Mongolian_Supplement}โ short form\p{InMongolianSup}ยท 32 \p{Mro}โ same as\p{Script_Extensions=Mro}, and NOT\p{Block=Mro}ยท 43\p{Mroo},\p{Mro}โ same as\p{Script_Extensions=Mro}, and NOT\p{Block=Mro}ยท 43\p{Mtei},\p{Meetei_Mayek}โ same as\p{Script_Extensions=Meetei_Mayek}, and NOT\p{Block=Meetei_Mayek}ยท 79\p{Mult},\p{Multani}โ same as\p{Script_Extensions=Multani}, and NOT\p{Block=Multani}ยท 48\p{Multani}โ same as\p{Script_Extensions=Multani}, short form\p{Mult}, and NOT\p{Block=Multani}ยท 48- X
\p{Music},\p{Musical_Symbols}โ same as\p{Block=Musical_Symbols}ยท 256 ๐ผ - X
\p{Musical_Symbols},\p{Block=Musical_Symbols}โ short form\p{InMusic}ยท 256 \p{Myanmar}โ same as\p{Script_Extensions=Myanmar}, short form\p{Mymr}, and NOT\p{Block=Myanmar}ยท 244- X
\p{Myanmar_Ext_A},\p{Myanmar_Extended_A}โ same as\p{Block=Myanmar_Extended_A}ยท 32 - X
\p{Myanmar_Ext_B},\p{Myanmar_Extended_B}โ same as\p{Block=Myanmar_Extended_B}ยท 32 - X
\p{Myanmar_Ext_C},\p{Myanmar_Extended_C}โ same as\p{Block=Myanmar_Extended_C}ยท 48 - X
\p{Myanmar_Extended_A},\p{Block=Myanmar_Extended_A}โ short form\p{InMyanmarExtA}ยท 32 - X
\p{Myanmar_Extended_B},\p{Block=Myanmar_Extended_B}โ short form\p{InMyanmarExtB}ยท 32 - X
\p{Myanmar_Extended_C},\p{Block=Myanmar_Extended_C}โ short form\p{InMyanmarExtC}ยท 48 \p{Mymr},\p{Myanmar}โ same as\p{Script_Extensions=Myanmar}, and NOT\p{Block=Myanmar}ยท 244\p{N},\pN,\p{Number}โ same as\p{General_Category=Number}ยท 1924 ๐ข\p{Na=*},\p{Name=*}\p{Nabataean}โ same as\p{Script_Extensions=Nabataean}, short form\p{Nbat}, and NOT\p{Block=Nabataean}ยท 40\p{Nag_Mundari}โ same as\p{Script_Extensions=Nag_Mundari}, short form\p{Nagm}, and NOT\p{Block=Nag_Mundari}ยท 42\p{Nagm},\p{Nag_Mundari}โ same as\p{Script_Extensions=Nag_Mundari}, and NOT\p{Block=Nag_Mundari}ยท 42\p{Name=*}โ this bad boy is a combination of the Name and Name_Alias properties, and it has special loose matching rules, for which see Unicode UAX #44 ๐\p{Nand},\p{Nandinagari}โ same as\p{Script_Extensions=Nandinagari}, and NOT\p{Block=Nandinagari}ยท 87\p{Nandinagari}โ same as\p{Script_Extensions=Nandinagari}, short form\p{Nand}, and NOT\p{Block=Nandinagari}ยท 87\p{Narb},\p{Old_North_Arabian}โ same as\p{Script_Extensions=Old_North_Arabian}ยท 32- X
\p{NB},\p{No_Block}โ same as\p{Block=No_Block}ยท 810_304 plus all above-Unicode code points ๐ฎโ๐จ \p{Nbat},\p{Nabataean}โ same as\p{Script_Extensions=Nabataean}, and NOT\p{Block=Nabataean}ยท 40\p{NChar},\p{Noncharacter_Code_Point}โ same as\p{Noncharacter_Code_Point=Y}ยท 66\p{NChar: *},\p{Noncharacter_Code_Point: *}\p{Nd},\p{XPosixDigit}โ same as\p{General_Category=Decimal_Number}ยท 770\p{New_Tai_Lue}โ same as\p{Script_Extensions=New_Tai_Lue}, short form\p{Talu}, and NOT\p{Block=New_Tai_Lue}ยท 83\p{Newa}โ same as\p{Script_Extensions=Newa}, and NOT\p{Block=Newa}ยท 106\p{NFC_QC: *},\p{NFC_Quick_Check: *}\p{NFC_Quick_Check: M},\p{NFC_Quick_Check=Maybe}ยท 132\p{NFC_Quick_Check: Maybe}โ short form\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}โ and heads up, this is NOT\P{NFC_Quick_Check}NOR\P{NFC_QC}ยท 1120\p{NFC_Quick_Check: No}โ short form\p{NFCQC=N}, and again 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}โ careful bestie, this one is NOT\p{NFC_Quick_Check}NOR\p{NFC_QC}(yes, same letters, different meaning, iconic behavior honestly) ยท 1_112_860 plus all above-Unicode code points\p{NFC_Quick_Check: Yes}โ short form\p{NFCQC=Y}, and 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 form\p{NFDQC=N}, and 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 form\p{NFDQC=Y}, and 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 form\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}ยท 4965\p{NFKC_Quick_Check: No}โ short form\p{NFKCQC=N}, and NOT\P{NFKC_Quick_Check}NOR\P{NFKC_QC}ยท 4965:[\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_015 plus all above-Unicode code points\p{NFKC_Quick_Check: Yes}โ short form\p{NFKCQC=Y}, and NOT\p{NFKC_Quick_Check}NOR\p{NFKC_QC}ยท 1_109_015 plus all above-Unicode code
okay continuing the drip ๐ง we are deep in the property list and it is giving very thorough. quick note before we go: if one of the lines below starts with X or T, that's just the page's own little marker doing its thing in that column โ we keep it exactly where it lives, no cap โจ
and first up, a loose thread from the entry right before this one โ its code point list wraps up like this:
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
...)
cool cool cool, and now the list just keeps going:
\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_086)\p{NFKD_Quick_Check: No}(short:\p{NFKDQC=N}; NOT\P{NFKD_Quick_Check}NOR\P{NFKD_QC})* (17_086:
[\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_026 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_026 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 ...
)
and that's the NFKD quick-check block done, we love a clean finish ๐ now we roll into the N's:
\p{Nko}โ\p{Script_Extensions=Nko}(NOT\p{Block=NKo}) ๐ (67)\p{Nkoo}โ\p{Nko}(=\p{Script_Extensions=Nko}) (NOT\p{Block=NKo}) (67) โ yes bestie,Nkoois just an alias of an alias, the lore goes deep\p{Nl}โ\p{Letter_Number}(=\p{General_Category=Letter_Number}) (239)\p{No}โ\p{Other_Number}(=\p{General_Category=Other_Number}) (915)- X
\p{No_Block}โ\p{Block=No_Block}(short:\p{InNB}) (810_304 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}) (2059)\p{Nshu}โ\p{Nushu}(=\p{Script_Extensions=Nushu}) (NOT\p{Block=Nushu}) ๐ (397)\p{Nt: *}โ\p{Numeric_Type: *}\p{Number}โ\p{General_Category=Number}(short:\p{N}) (1924)- X
\p{Number_Forms}โ\p{Block=Number_Forms}(64)
okay now the numeric stuff kicks in and honestly? it's a whole lewk โจ
\p{Numeric_Type: De}โ\p{Numeric_Type=Decimal}(770)\p{Numeric_Type: Decimal}(short:\p{Nt=De}) (770:[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_089 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{Numeric_Type: Nu}โ\p{Numeric_Type=Numeric}(1125)\p{Numeric_Type: Numeric}(short:\p{Nt=Nu}) (1125:[\xbc-\xbe],U+09F4..09F9,U+0B72..0B77,U+0BF0..0BF2,U+0C78..0C7E,U+0D58..0D5E...)
and now the Numeric_Value era โ every single one of these carries the T marker, and they come at you in value order. buckle up bestie, this is a long runway ๐ซถ
- T
\p{Numeric_Value: -1/2}(short:\p{Nv=-1/2}) (1:U+0F33) - T
\p{Numeric_Value: 0}(short:\p{Nv=0}) (97:[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) - 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}) (20:[\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) - T
\p{Numeric_Value: 1}(short:\p{Nv=1}) (158:[1\xb9],U+0661,U+06F1,U+07C1,U+0967,U+09E7...) - T
\p{Numeric_Value: 3/2}(short:\p{Nv=3/2}) (2:U+0F2B,U+16FF5) - T
\p{Numeric_Value: 2}(short:\p{Nv=2}) (158:[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}) (154:[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}) (144:[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}) (142:[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}) (126:[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}) (126:[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}) (121:[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}) (127:[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...)
and we keep rolling, alphabet besties ๐
okay so we're still deep in the tables bestie, and the numeric values are just... going ๐
they start reasonable and then they simply do not stop. also heads up: the original table has these little marker letters hanging out in the first column (T, X, and sometimes nothing at all), so I'm leaving them exactly where they are, no notes, no edits, periodt. โจ
T\p{Numeric_Value: 19}(short:\p{Nv=19}) โ 8 of them:U+16F0,U+2472,U+2486,U+249A,U+24F3,U+16E93, ...T\p{Numeric_Value: 20}(short:\p{Nv=20}) โ 36 of them:U+1373,U+2473,U+2487,U+249B,U+24F4,U+3039, ...T\p{Numeric_Value: 21}(short:\p{Nv=21}) โ literally one:U+3251T\p{Numeric_Value: 22}(short:\p{Nv=22}) โ one:U+3252T\p{Numeric_Value: 23}(short:\p{Nv=23}) โ one:U+3253T\p{Numeric_Value: 24}(short:\p{Nv=24}) โ one:U+3254T\p{Numeric_Value: 25}(short:\p{Nv=25}) โ one:U+3255T\p{Numeric_Value: 26}(short:\p{Nv=26}) โ one:U+3256T\p{Numeric_Value: 27}(short:\p{Nv=27}) โ one:U+3257T\p{Numeric_Value: 28}(short:\p{Nv=28}) โ one:U+3258T\p{Numeric_Value: 29}(short:\p{Nv=29}) โ one:U+3259
look at those little solo code points, each one carrying a whole number by itself, main character energy honestly ๐
T\p{Numeric_Value: 30}(short:\p{Nv=30}) โ 19 of them:U+1374,U+303A,U+324A,U+325A,U+5345,U+10112, ...T\p{Numeric_Value: 31}(short:\p{Nv=31}) โ one:U+325BT\p{Numeric_Value: 32}(short:\p{Nv=32}) โ one:U+325CT\p{Numeric_Value: 33}(short:\p{Nv=33}) โ one:U+325DT\p{Numeric_Value: 34}(short:\p{Nv=34}) โ one:U+325ET\p{Numeric_Value: 35}(short:\p{Nv=35}) โ one:U+325FT\p{Numeric_Value: 36}(short:\p{Nv=36}) โ one:U+32B1T\p{Numeric_Value: 37}(short:\p{Nv=37}) โ one:U+32B2T\p{Numeric_Value: 38}(short:\p{Nv=38}) โ one:U+32B3T\p{Numeric_Value: 39}(short:\p{Nv=39}) โ one:U+32B4T\p{Numeric_Value: 40}(short:\p{Nv=40}) โ 18 of them:U+1375,U+324B,U+32B5,U+534C,U+10113,U+102ED, ...T\p{Numeric_Value: 41}(short:\p{Nv=41}) โ one:U+32B6T\p{Numeric_Value: 42}(short:\p{Nv=42}) โ one:U+32B7T\p{Numeric_Value: 43}(short:\p{Nv=43}) โ one:U+32B8T\p{Numeric_Value: 44}(short:\p{Nv=44}) โ one:U+32B9T\p{Numeric_Value: 45}(short:\p{Nv=45}) โ one:U+32BAT\p{Numeric_Value: 46}(short:\p{Nv=46}) โ one:U+32BBT\p{Numeric_Value: 47}(short:\p{Nv=47}) โ one:U+32BCT\p{Numeric_Value: 48}(short:\p{Nv=48}) โ one:U+32BDT\p{Numeric_Value: 49}(short:\p{Nv=49}) โ one:U+32BET\p{Numeric_Value: 50}(short:\p{Nv=50}) โ 29 of them:U+1376,U+216C,U+217C,U+2186,U+324C,U+32BF, ...
okay fifty and we're officially in "round numbers have entourages" territory ๐ญ the vibes shift hard from here, everybody's bringing friends now.
T\p{Numeric_Value: 60}(short:\p{Nv=60}) โ 13 of them:U+1377,U+324D,U+10115,U+102EF,U+109CE,U+10E6E, ...T\p{Numeric_Value: 70}(short:\p{Nv=70}) โ 13 of them:U+1378,U+324E,U+10116,U+102F0,U+109CF,U+10E6F, ...T\p{Numeric_Value: 80}(short:\p{Nv=80}) โ 12 of them:U+1379,U+324F,U+10117,U+102F1,U+10E70,U+11062, ...T\p{Numeric_Value: 90}(short:\p{Nv=90}) โ 12 of them:U+137A,U+10118,U+102F2,U+10341,U+10E71,U+11063, ...T\p{Numeric_Value: 100}(short:\p{Nv=100}) โ 35 of them:U+0BF1,U+0D71,U+137B,U+216D,U+217D,U+4F70, ...T\p{Numeric_Value: 200}(short:\p{Nv=200}) โ 7 of them:U+7695,U+1011A,U+102F4,U+109D3,U+10E73,U+1EC84, ...T\p{Numeric_Value: 300}(short:\p{Nv=300}) โ 7 of them:U+1011B,U+1016B,U+102F5,U+109D4,U+10E74,U+1EC85, ...T\p{Numeric_Value: 400}(short:\p{Nv=400}) โ 7 of them:U+1011C,U+102F6,U+109D5,U+10E75,U+1EC86,U+1ED16, ...T\p{Numeric_Value: 500}(short:\p{Nv=500}) โ 16 of them:U+216E,U+217E,U+1011D,U+10145,U+1014C,U+10153, ...T\p{Numeric_Value: 600}(short:\p{Nv=600}) โ 7 of them:U+1011E,U+102F8,U+109D7,U+10E77,U+1EC88,U+1ED18, ...T\p{Numeric_Value: 700}(short:\p{Nv=700}) โ 6 of them:U+1011F,U+102F9,U+109D8,U+10E78,U+1EC89,U+1ED19T\p{Numeric_Value: 800}(short:\p{Nv=800}) โ 6 of them:U+10120,U+102FA,U+109D9,U+10E79,U+1EC8A,U+1ED1AT\p{Numeric_Value: 900}(short:\p{Nv=900}) โ 7 of them:U+10121,U+102FB,U+1034A,U+109DA,U+10E7A,U+1EC8B, ...
then we hit four digits and it's giving very much "the numbers got a glow up" ๐
T\p{Numeric_Value: 1000}(short:\p{Nv=1000}) โ 22 of them:U+0BF2,U+0D72,U+216F,U+217F..2180,U+4EDF,U+5343, ...T\p{Numeric_Value: 2000}(short:\p{Nv=2000}) โ 5 of them:U+10123,U+109DC,U+1EC8D,U+1ED1D,U+1ED3AT\p{Numeric_Value: 3000}(short:\p{Nv=3000}) โ 4 of them:U+10124,U+109DD,U+1EC8E,U+1ED1ET\p{Numeric_Value: 4000}(short:\p{Nv=4000}) โ 4 of them:U+10125,U+109DE,U+1EC8F,U+1ED1FT\p{Numeric_Value: 5000}(short:\p{Nv=5000}) โ 8 of them:U+2181,U+10126,U+10146,U+1014E,U+10172,U+109DF, ...T\p{Numeric_Value: 6000}(short:\p{Nv=6000}) โ 4 of them:U+10127,U+109E0,U+1EC91,U+1ED21T\p{Numeric_Value: 7000}(short:\p{Nv=7000}) โ 4 of them:U+10128,U+109E1,U+1EC92,U+1ED22T\p{Numeric_Value: 8000}(short:\p{Nv=8000}) โ 4 of them:U+10129,U+109E2,U+1EC93,U+1ED23T\p{Numeric_Value: 9000}(short:\p{Nv=9000}) โ 4 of them:U+1012A,U+109E3,U+1EC94,U+1ED24
and now the big ones, where the table starts spelling out scientific notation at us like it's showing off โ and tbh, it should ๐ซถ
T\p{Numeric_Value: 10000}(which is= 1.0e+04) (short:\p{Nv=10000}) โ 13 of them:U+137C,U+2182,U+4E07,U+842C,U+1012B,U+10155, ...T\p{Numeric_Value: 20000}(which is= 2.0e+04) (short:\p{Nv=20000}) โ 4 of them:U+1012C,U+109E5,U+1EC96,U+1ED26T\p{Numeric_Value: 30000}(which is= 3.0e+04) (short:\p{Nv=30000}) โ 4 of them:U+1012D,U+109E6,U+1EC97,U+1ED27T\p{Numeric_Value: 40000}(which is= 4.0e+04) (short:\p{Nv=40000}) โ 4 of them:U+1012E,U+109E7,U+1EC98,U+1ED28T\p{Numeric_Value: 50000}(which is= 5.0e+04) (short:\p{Nv=50000}) โ 7 of them:U+2187,U+1012F,U+10147,U+10156,U+109E8,U+1EC99, ...T\p{Numeric_Value: 60000}(which is= 6.0e+04) (short:\p{Nv=60000}) โ 4 of them:U+10130,U+109E9,U+1EC9A,U+1ED2AT\p{Numeric_Value: 70000}(which is= 7.0e+04) (short:\p{Nv=70000}) โ 4 of them:U+10131,U+109EA,U+1EC9B,U+1ED2BT\p{Numeric_Value: 80000}(which is= 8.0e+04) (short:\p{Nv=80000}) โ 4 of them:U+10132,U+109EB,U+1EC9C,U+1ED2CT\p{Numeric_Value: 90000}(which is= 9.0e+04) (short:\p{Nv=90000}) โ 4 of them:U+10133,U+109EC,U+1EC9D,U+1ED2DT\p{Numeric_Value: 100000}(which is= 1.0e+05) (short:\p{Nv=100000}) โ 5 of them:U+2188,U+109ED,U+1EC9E,U+1ECA0,U+1ECB4T\p{Numeric_Value: 200000}(which is= 2.0e+05) (short:\p{Nv=200000}) โ 2 of them:U+109EE,U+1EC9FT\p{Numeric_Value: 216000}(which is= 2.2e+05) (short:\p{Nv=216000}) โ one:U+12432T\p{Numeric_Value: 300000}(which is= 3.0e+05) (short:\p{Nv=300000}) โ one:U+109EFT\p{Numeric_Value: 400000}(which is= 4.0e+05) (short:\p{Nv=400000}) โ one:U+109F0T\p{Numeric_Value: 432000}(which is= 4.3e+05) (short:\p{Nv=432000}) โ one:U+12433T\p{Numeric_Value: 500000}(which is= 5.0e+05) (short:\p{Nv=500000}) โ one:U+109F1T\p{Numeric_Value: 600000}(which is= 6.0e+05) (short:\p{Nv=600000}) โ one:U+109F2T\p{Numeric_Value: 700000}(which is= 7.0e+05) (short:\p{Nv=700000}) โ one:U+109F3T\p{Numeric_Value: 800000}(which is= 8.0e+05) (short:\p{Nv=800000}) โ one:U+109F4T\p{Numeric_Value: 900000}(which is= 9.0e+05) (short:\p{Nv=900000}) โ one:U+109F5T\p{Numeric_Value: 1000000}(which is= 1.0e+06) (short:\p{Nv=1000000}) โ one:U+16B5ET\p{Numeric_Value: 10000000}(which is= 1.0e+07) (short:\p{Nv=10000000}) โ one:U+1ECA1T\p{Numeric_Value: 20000000}(which is= 2.0e+07) (short:\p{Nv=20000000}) โ one:U+1ECA2T\p{Numeric_Value: 100000000}(which is= 1.0e+08) (short:\p{Nv=100000000}) โ 3 of them:U+4EBF,U+5104,U+16B5FT\p{Numeric_Value: 1000000000}(which is= 1.0e+09) (short:\p{Nv=1000000000}) โ one:U+79EDT\p{Numeric_Value: 10000000000}(which is= 1.0e+10) (short:\p{Nv=10000000000}) โ one:U+16B60T\p{Numeric_Value: 1000000000000}(which is= 1.0e+12) (short:\p{Nv=1000000000000}) โ 2 of them:U+5146,U+16B61T\p{Numeric_Value: 10000000000000000}(which is= 1.0e+16) (short:\p{Nv=10000000000000000}) โ one:U+4EAC
one code point for ten quadrillion?? iconic behaviour honestly, that single character is carrying more weight than my whole to-do list ๐ญ
and THEN, the chaos entry, no marker, just vibes โ this one isn't a number at all, it's the "not a number" club and the guest list is unhinged:
\p{Numeric_Value: NaN}(short:\p{Nv=NaN}) โ 1_112_089 of them, plus every single above-Unicode code point. The list starts like this:
[\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 ...
like bestie that is a LOT of characters who simply refuse to have a numeric value ๐
and now, script/block leftovers, alphabet soup era, we're at the N's and O's:
\p{Nushu}โ same as\p{Script_Extensions=Nushu}(short:\p{Nshu}; and NOT\p{Block=Nushu}) โ 397 of them\p{Nv: *}โ same as\p{Numeric_Value: *}\p{Nyiakeng_Puachue_Hmong}โ same as\p{Script_Extensions=Nyiakeng_Puachue_Hmong}(short:\p{Hmnp}; and NOT\p{Block=Nyiakeng_Puachue_Hmong}) โ 71 of themX\p{OCR}โ same as\p{Optical_Character_Recognition}(which equals\p{Block=Optical_Character_Recognition}) โ 32 of them
and the O squad, going in order, no skipping, no shortcuts ๐
\p{Ogam}โ same as\p{Ogham}(which equals\p{Script_Extensions=Ogham}) (NOT\p{Block=Ogham}) โ 29 of them\p{Ogham}โ same as\p{Script_Extensions=Ogham}(short:\p{Ogam}; and NOT\p{Block=Ogham}) โ 29 of them\p{Ol_Chiki}โ same as\p{Script_Extensions=Ol_Chiki}(short:\p{Olck}) โ 48 of them\p{Ol_Onal}โ same as\p{Script_Extensions=Ol_Onal}(short:\p{Onao}; and NOT\p{Block=Ol_Onal}) โ 46 of them\p{Olck}โ same as\p{Ol_Chiki}(which equals\p{Script_Extensions=Ol_Chiki}) โ 48 of them\p{Old_Hungarian}โ same as\p{Script_Extensions=Old_Hungarian}(short:\p{Hung}; and NOT\p{Block=Old_Hungarian}) โ 112 of them\p{Old_Italic}โ same as\p{Script_Extensions=Old_Italic}(short:\p{Ital}; and NOT\p{Block=Old_Italic}) โ 39 of them\p{Old_North_Arabian}โ same as\p{Script_Extensions=Old_North_Arabian}(short:\p{Narb}) โ 32 of them\p{Old_Permic}โ same as\p{Script_Extensions=Old_Permic}(short:\p{Perm}; and NOT\p{Block=Old_Permic}) โ 50 of them
okay bestie we're officially at the Old_ names and the list is still going, so hydrate and stretch, we're not done yet ๐
\p{Old_Persian}โ literally the same as\p{Script_Extensions=Old_Persian}. Short glow-up version is\p{Xpeo}, and it is NOT\p{Block=Old_Persian}, bestie, please don't mix those two (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}โ this one is\p{Ol_Onal}, which is itself\p{Script_Extensions=Ol_Onal}(NOT\p{Block=Ol_Onal}, never that) (46) โญ\p{Open_Punctuation}โ =\p{General_Category=Open_Punctuation}(short:\p{Ps}) (79) ๐X\p{Optical_Character_Recognition}โ this one is\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}โ that's just\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}) (954_481 plus all above-Unicode code points) ๐ญ\p{Other_Letter}โ =\p{General_Category=Other_Letter}(short:\p{Lo}) (141_062) ๐\p{Other_Number}โ =\p{General_Category=Other_Number}(short:\p{No}) (915) ๐ข\p{Other_Punctuation}โ =\p{General_Category=Other_Punctuation}(short:\p{Po}) (641) โ\p{Other_Symbol}โ =\p{General_Category=Other_Symbol}(short:\p{So}) (7468) ๐จ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โ that's\p{Punct}, which is\p{General_Category=Punctuation}โ and NOT\p{General_Punctuation}, those are two completely different girls (856) ๐\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) โ yeah, literally one, she's the only one ๐\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 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:\p{PatSyn=Y},\p{PatSyn}) โ 2760 of them:
[!\"#\$\%&\'\(\)*+,\-.\/:;<=>?\@\[\\\]\^`\{\|\}~\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}โ =\p{Pattern_White_Space=Y}(short:\p{PatWS}) (11) ๐ฌ๏ธ\p{Pattern_White_Space: N*}โ (short:\p{PatWS=N},\P{PatWS}) (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},\p{PatWS}) (11:[\t\n\cK\f\r\x20\x85],U+200E..200F,U+2028..2029) ๐\p{Pau_Cin_Hau}โ =\p{Script_Extensions=Pau_Cin_Hau}(short:\p{Pauc}; NOT\p{Block=Pau_Cin_Hau}) (57) ๐ธ\p{Pauc}โ =\p{Pau_Cin_Hau}(=\p{Script_Extensions=Pau_Cin_Hau}) (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}) (641) โ\p{PosixAlnum}โ (62:[0-9A-Za-z]) ๐ก\p{PosixAlpha}โ (52:[A-Za-z]) ๐ค\p{PosixBlank}โ (2:[\t\x20]) ๐ฌ๏ธ\p{PosixCntrl}โ ASCII control characters (33: 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 of them, and yeah there's a backtick in there so here it is in all her glory:
[!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@A-Z\[\\\]\^_`a-z\{\|\}~]
\p{PosixLower}โ (/i= PosixAlpha) (26:[a-z]) ๐ธ\p{PosixPrint}โ (95:[\x20-\x7e]) ๐จ๏ธ\p{PosixPunct}โ (32, backtick girl again so fence time):
[!\"#\$\%&\'\(\)*+,\-.\/:;<=>?\@\[\\\]\^_`\{\|\}~]
\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},\P{PCM}) (1_114_099 plus all above-Unicode code
okay so this next bit is literally the tail end of a code point list that started in the entry right before this one, and it wraps up like this:
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 forms are\p{PCM=Y}and just plain\p{PCM}โจ and there are13of them:U+0600..0605,U+06DD,U+070F,U+0890..0891,U+08E2,U+110BD...
and now bestie, buckle up, because here comes the \p{Present_In} saga ๐ every single version of Unicode that ever dropped, tracked so you know when a code point first showed up. each of these is a Perl extension, no cap ๐ซถ
\p{Present_In: 1.1}โ this one's just the same thing as\p{Age=V1_1}(short:\p{In=1.1}) (Perl extension) โ33_979code points\p{Present_In: V1_1}โ equivalent to\p{Present_In=1.1}, which is\p{Age=V1_1}(Perl extension) โ33_979
\p{Present_In: 2.0}โ code point's usage introduced in version 2.0 or earlier (short:\p{In=2.0}) (Perl extension) โ178_500code points:
U+0000..01F5, U+01FA..0217,
U+0250..02A8, U+02B0..02DE,
U+02E0..02E9, U+0300..0345 ...
\p{Present_In: V2_0}โ same as\p{Present_In=2.0}(Perl extension) โ178_500
\p{Present_In: 2.1}โ code point's usage introduced in version 2.1 or earlier (short:\p{In=2.1}) (Perl extension) โ178_502code points:
U+0000..01F5, U+01FA..0217,
U+0250..02A8, U+02B0..02DE,
U+02E0..02E9, U+0300..0345 ...
\p{Present_In: V2_1}โ same as\p{Present_In=2.1}(Perl extension) โ178_502
\p{Present_In: 3.0}โ code point's usage introduced in version 3.0 or earlier (short:\p{In=3.0}) (Perl extension) โ188_809code points:
U+0000..021F, U+0222..0233,
U+0250..02AD, U+02B0..02EE,
U+0300..034E, U+0360..0362 ...
\p{Present_In: V3_0}โ same as\p{Present_In=3.0}(Perl extension) โ188_809
\p{Present_In: 3.1}โ code point's usage introduced in version 3.1 or earlier (short:\p{In=3.1}) (Perl extension) โ233_787code points:
U+0000..021F, U+0222..0233,
U+0250..02AD, U+02B0..02EE,
U+0300..034E, U+0360..0362 ...
\p{Present_In: V3_1}โ same as\p{Present_In=3.1}(Perl extension) โ233_787
\p{Present_In: 3.2}โ code point's usage introduced in version 3.2 or earlier (short:\p{In=3.2}) (Perl extension) โ234_803code points:
U+0000..0220, U+0222..0233,
U+0250..02AD, U+02B0..02EE,
U+0300..034F, U+0360..036F ...
\p{Present_In: V3_2}โ same as\p{Present_In=3.2}(Perl extension) โ234_803
\p{Present_In: 4.0}โ code point's usage introduced in version 4.0 or earlier (short:\p{In=4.0}) (Perl extension) โ236_029code points:
U+0000..0236, U+0250..0357,
U+035D..036F, U+0374..0375,
U+037A, U+037E ...
\p{Present_In: V4_0}โ same as\p{Present_In=4.0}(Perl extension) โ236_029
\p{Present_In: 4.1}โ code point's usage introduced in version 4.1 or earlier (short:\p{In=4.1}) (Perl extension) โ237_302code points:
U+0000..0241, U+0250..036F,
U+0374..0375, U+037A, U+037E,
U+0384..038A ...
\p{Present_In: V4_1}โ same as\p{Present_In=4.1}(Perl extension) โ237_302
\p{Present_In: 5.0}โ code point's usage introduced in version 5.0 or earlier (short:\p{In=5.0}) (Perl extension) โ238_671code points:
U+0000..036F, U+0374..0375,
U+037A..037E, U+0384..038A,
U+038C, U+038E..03A1 ...
\p{Present_In: V5_0}โ same as\p{Present_In=5.0}(Perl extension) โ238_671
\p{Present_In: 5.1}โ code point's usage introduced in version 5.1 or earlier (short:\p{In=5.1}) (Perl extension) โ240_295code points:
U+0000..0377, U+037A..037E,
U+0384..038A, U+038C,
U+038E..03A1, U+03A3..0523 ...
\p{Present_In: V5_1}โ same as\p{Present_In=5.1}(Perl extension) โ240_295
\p{Present_In: 5.2}โ code point's usage introduced in version 5.2 or earlier (short:\p{In=5.2}) (Perl extension) โ246_943code points:
U+0000..0377, U+037A..037E,
U+0384..038A, U+038C,
U+038E..03A1, U+03A3..0525 ...
\p{Present_In: V5_2}โ same as\p{Present_In=5.2}(Perl extension) โ246_943
\p{Present_In: 6.0}โ code point's usage introduced in version 6.0 or earlier (short:\p{In=6.0}) (Perl extension) โ249_031code points:
U+0000..0377, U+037A..037E,
U+0384..038A, U+038C,
U+038E..03A1, U+03A3..0527 ...
\p{Present_In: V6_0}โ same as\p{Present_In=6.0}(Perl extension) โ249_031
\p{Present_In: 6.1}โ code point's usage introduced in version 6.1 or earlier (short:\p{In=6.1}) (Perl extension) โ249_763code points:
U+0000..0377, U+037A..037E,
U+0384..038A, U+038C,
U+038E..03A1, U+03A3..0527 ...
\p{Present_In: V6_1}โ same as\p{Present_In=6.1}(Perl extension) โ249_763
\p{Present_In: 6.2}โ code point's usage introduced in version 6.2 or earlier (short:\p{In=6.2}) (Perl extension) โ249_764code points:
U+0000..0377, U+037A..037E,
U+0384..038A, U+038C,
U+038E..03A1, U+03A3..0527 ...
\p{Present_In: V6_2}โ same as\p{Present_In=6.2}(Perl extension) โ249_764
\p{Present_In: 6.3}โ code point's usage introduced in version 6.3 or earlier (short:\p{In=6.3}) (Perl extension) โ249_769code points:
U+0000..0377, U+037A..037E,
U+0384..038A, U+038C,
U+038E..03A1, U+03A3..0527 ...
\p{Present_In: V6_3}โ same as\p{Present_In=6.3}(Perl extension) โ249_769
\p{Present_In: 7.0}โ code point's usage introduced in version 7.0 or earlier (short:\p{In=7.0}) (Perl extension) โ252_603code points:
U+0000..0377, U+037A..037F,
U+0384..038A, U+038C,
U+038E..03A1, U+03A3..052F ...
\p{Present_In: V7_0}โ same as\p{Present_In=7.0}(Perl extension) โ252_603
\p{Present_In: 8.0}โ code point's usage introduced in version 8.0 or earlier (short:\p{In=8.0}) (Perl extension) โ260_319code points:
U+0000..0377, U+037A..037F,
U+0384..038A, U+038C,
U+038E..03A1, U+03A3..052F ...
\p{Present_In: V8_0}โ same as\p{Present_In=8.0}(Perl extension) โ260_319
\p{Present_In: 9.0}โ code point's usage introduced in version 9.0 or earlier (short:\p{In=9.0}) (Perl extension) โ267_819code points:
U+0000..0377, U+037A..037F,
U+0384..038A, U+038C,
U+038E..03A1, U+03A3..052F ...
\p{Present_In: V9_0}โ same as\p{Present_In=9.0}(Perl extension) โ267_819
\p{Present_In: 10.0}โ code point's usage introduced in version 10.0 or earlier (short:\p{In=10.0}) (Perl extension) โ276_337code points:
U+0000..0377, U+037A..037F,
U+0384..038A, U+038C,
U+038E..03A1, U+03A3..052F ...
\p{Present_In: V10_0}โ same as\p{Present_In=10.0}(Perl extension) โ276_337
\p{Present_In: 11.0}โ code point's usage introduced in version 11.0 or earlier (short:\p{In=11.0}) (Perl extension) โ277_021code points:
U+0000..0377, U+037A..037F,
U+0384..038A, U+038C,
U+038E..03A1, U+03A3..052F ...
\p{Present_In: V11_0}โ same as\p{Present_In=11.0}(Perl extension) โ277_021
\p{Present_In: 12.0}โ code point's usage introduced in version 12.0 or earlier (short:\p{In=12.0}) (Perl extension) โ277_575code points:
U+0000..0377, U+037A..037F,
U+0384..038A, U+038C,
U+038E..03A1, U+03A3..052F ...
\p{Present_In: V12_0}โ same as\p{Present_In=12.0}(Perl extension) โ277_575
\p{Present_In: 12.1}โ code point's usage introduced in version 12.1 or earlier (short:\p{In=12.1}) (Perl extension) โ277_576code points:
U+0000..0377, U+037A..037F,
U+0384..038A, U+038C,
U+038E..03A1, U+03A3..052F ...
\p{Present_In: V12_1}โ same as\p{Present_In=12.1}(Perl extension) โ277_576
\p{Present_In: 13.0}โ code point's usage introduced in version 13.0 or earlier (short:\p{In=13.0}) (Perl extension) โ283_506code points:
U+0000..0377, U+037A..037F,
U+0384..038A, U+038C,
U+038E..03A1, U+03A3..052F ...
\p{Present_In: V13_0}โ same as\p{Present_In=13.0}(Perl extension) โ283_506
\p{Present_In: 14.0}โ code point's usage introduced in version 14.0 or earlier (short:\p{In=14.0}) (Perl extension) โ284_344code points:
U+0000..0377, U+037A..037F,
U+0384..038A, U+038C,
U+038E..03A1, U+03A3..052F ...
\p{Present_In: V14_0}โ same as\p{Present_In=14.0}(Perl extension) โ284_344
\p{Present_In: 15.0}โ code point's usage introduced in version โฆTยท\p{Present_In: 15.0}โ the code point's usage got introduced in version 15.0 or earlier. Short form:\p{In=15.0}โจ (Perl extension). It's giving 288_833 code points:U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...\p{Present_In: V15_0},\p{Present_In=15.0}โ same thing, different spelling ๐ช (Perl extension) โ288_833.
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...\p{Present_In: V15_1},\p{Present_In=15.1}โ Perl extension โ289_460.
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...\p{Present_In: V16_0},\p{Present_In=16.0}โ Perl extension โ294_645.
Tยท\p{Present_In: 17.0}โ code point's usage introduced in version 17.0 or earlier. Short:\p{In=17.0}๐ฅ (Perl extension) โ 299_448:U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...\p{Present_In: V17_0},\p{Present_In=17.0}โ Perl extension โ299_448.
\p{Present_In: NA},\p{Present_In=Unassigned}โ this is\p{Age=Unassigned}in a trench coat ๐งฅ (Perl extension) โ 814_664 plus literally every above-Unicode code point.\p{Present_In: Unassigned},\p{Age=Unassigned}โ Short:\p{In=NA}๐ (Perl extension) โ814_664plus all above-Unicode code points.\p{Print}โ same energy as\p{XPosixPrint}๐จ๏ธ โ 297_267.\p{Private_Use}โ aka\p{General_Category=Private_Use}, Short:\p{Co}. And this is NOT\p{Private_Use_Area}bestie, do not mix them up ๐ญ โ 137_468.Xยท\p{Private_Use_Area}โ same as\p{Block=Private_Use_Area}, Short:\p{InPUA}๐ โ 6400.\p{Prti}โ i.e.\p{Inscriptional_Parthian}, which is\p{Script_Extensions=Inscriptional_Parthian}. NOT\p{Block=Inscriptional_Parthian}๐จ โ 30.\p{Ps}โ i.e.\p{Open_Punctuation}, which is\p{General_Category=Open_Punctuation}๐ซถ โ 79.\p{Psalter_Pahlavi}โ i.e.\p{Script_Extensions=Psalter_Pahlavi}, Short:\p{Phlp}. NOT\p{Block=Psalter_Pahlavi}๐ โ 30.Xยท\p{PUA}โ i.e.\p{Private_Use_Area}, which is\p{Block=Private_Use_Area}๐ โ 6400.\p{Punct}โ i.e.\p{General_Category=Punctuation}, Short:\p{P}. NOT\p{General_Punctuation}โผ๏ธ โ 856.\p{Punctuation}โ i.e.\p{Punct}, which is\p{General_Category=Punctuation}. NOT\p{General_Punctuation}๐ค โ 856.\p{Qaac}โ i.e.\p{Coptic}, which is\p{Script_Extensions=Coptic}. NOT\p{Block=Coptic}๐ โ 173.\p{Qaai}โ i.e.\p{Inherited}, which is\p{Script_Extensions=Inherited}๐งฌ โ 586.\p{QMark}โ i.e.\p{Quotation_Mark}, which is\p{Quotation_Mark=Y}๐ฃ๏ธ โ 30.\p{QMark: *}โ same as\p{Quotation_Mark: *}๐.\p{Quotation_Mark}โ i.e.\p{Quotation_Mark=Y}, Short:\p{QMark}โจ โ 30.\p{Quotation_Mark: N*}โ Short:\p{QMark=N},\P{QMark}. This one is so big: 1_114_082 plus all above-Unicode code points ๐ and it literally looks like this:
[\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}โ i.e.\p{Radical=Y}๐ โ 329.\p{Radical: N*}โ (Single:\P{Radical}) โ 1_113_783 plus all above-Unicode code points:U+0000..2E7F,U+2E9A,U+2EF4..2EFF,U+2FD6..infinity๐.\p{Radical: Y*}โ (Single:\p{Radical}) โ 329:U+2E80..2E99,U+2E9B..2EF3,U+2F00..2FD5๐.\p{Regional_Indicator}โ i.e.\p{Regional_Indicator=Y}, Short:\p{RI}๐บ๐ณ โ 26.\p{Regional_Indicator: N*}โ Short:\p{RI=N},\P{RI}โ 1_114_086 plus all above-Unicode code points:U+0000..1F1E5,U+1F200..infinity๐ซ.\p{Regional_Indicator: Y*}โ Short:\p{RI=Y},\p{RI}๐ฆ โ 26:U+1F1E6..1F1FF.\p{Rejang}โ i.e.\p{Script_Extensions=Rejang}, Short:\p{Rjng}. NOT\p{Block=Rejang}๐ซ โ 37.\p{RI}โ i.e.\p{Regional_Indicator}, which is\p{Regional_Indicator=Y}๐ธ โ 26.\p{RI: *}โ same as\p{Regional_Indicator: *}๐.\p{Rjng}โ i.e.\p{Rejang}, which is\p{Script_Extensions=Rejang}. NOT\p{Block=Rejang}๐ญ โ 37.\p{Rohg}โ i.e.\p{Hanifi_Rohingya}, which is\p{Script_Extensions=Hanifi_Rohingya}. NOT\p{Block=Hanifi_Rohingya}๐งก โ 55.Xยท\p{Rumi}โ i.e.\p{Rumi_Numeral_Symbols}, which is\p{Block=Rumi_Numeral_Symbols}๐ข โ 32.Xยท\p{Rumi_Numeral_Symbols}โ i.e.\p{Block=Rumi_Numeral_Symbols}, Short:\p{InRumi}๐ โ 32.\p{Runic}โ i.e.\p{Script_Extensions=Runic}, Short:\p{Runr}. NOT\p{Block=Runic}๐ชจ โ 89.\p{Runr}โ i.e.\p{Runic}, which is\p{Script_Extensions=Runic}. NOT\p{Block=Runic}โก โ 89.\p{S},\pS,\p{Symbol}โ all the same girl, i.e.\p{General_Category=Symbol}๐ โ 8617.\p{Samaritan}โ i.e.\p{Script_Extensions=Samaritan}, Short:\p{Samr}. NOT\p{Block=Samaritan}๐๏ธ โ 62.\p{Samr}โ i.e.\p{Samaritan}, which is\p{Script_Extensions=Samaritan}. NOT\p{Block=Samaritan}๐ค โ 62.\p{Sarb}โ i.e.\p{Old_South_Arabian}, which is\p{Script_Extensions=Old_South_Arabian}๐บ โ 32.\p{Saur}โ i.e.\p{Saurashtra}, which is\p{Script_Extensions=Saurashtra}. NOT\p{Block=Saurashtra}๐ฆ โ 82.\p{Saurashtra}โ i.e.\p{Script_Extensions=Saurashtra}, Short:\p{Saur}. NOT\p{Block=Saurashtra}๐ฟ โ 82.\p{SB: *}โ same as\p{Sentence_Break: *}๐.\p{Sc}โ i.e.\p{Currency_Symbol}, which is\p{General_Category=Currency_Symbol}๐ฐ โ 64.
bestie don't be fooled:\p{Sc}here is the currency one. TheSc:with a colon right below is a whole different thing. wild, I know ๐ญ
\p{Sc: *}โ same as\p{Script: *}๐.\p{Script: Adlam}โ Short:\p{Sc=Adlm}๐ โ 88:U+1E900..1E94B,U+1E950..1E959,U+1E95E..1E95F.\p{Script: Adlm}โ i.e.\p{Script=Adlam}โ 88.\p{Script: Aghb}โ i.e.\p{Script=Caucasian_Albanian}๐๏ธ โ 53.\p{Script: Ahom}โ i.e.\p{Script_Extensions=Ahom}, Short:\p{Sc=Ahom},\p{Ahom}๐ โ 65.\p{Script: Anatolian_Hieroglyphs}โ i.e.\p{Script_Extensions=Anatolian_Hieroglyphs}, Short:\p{Sc=Hluw},\p{Hluw}๐ฟ โ 583.\p{Script: Arab}โ i.e.\p{Script=Arabic}โ๏ธ โ 1413.\p{Script: Arabic}โ Short:\p{Sc=Arab}๐ โ 1413:U+0600..0604,U+0606..060B,U+060D..061A,U+061C..061E,U+0620..063F,U+0641..064A...\p{Script: Armenian}โ Short:\p{Sc=Armn}๐ ฐ๏ธ โ 96:U+0531..0556,U+0559..058A,U+058D..058F,U+FB13..FB17.\p{Script: Armi}โ i.e.\p{Script=Imperial_Aramaic}, which is\p{Script_Extensions=Imperial_Aramaic}๐ โ 31.\p{Script: Armn}โ i.e.\p{Script=Armenian}โ 96.\p{Script: Avestan}โ Short:\p{Sc=Avst}๐ฅ โ 61:U+10B00..10B35,U+10B39..10B3F.\p{Script: Avst}โ i.e.\p{Script=Avestan}โ 61.\p{Script: Bali}โ i.e.\p{Script=Balinese}, which is\p{Script_Extensions=Balinese}๐บ โ 127.\p{Script: Balinese}โ i.e.\p{Script_Extensions=Balinese}, Short:\p{Sc=Bali},\p{Bali}๐๏ธ โ 127.\p{Script: Bamu}โ i.e.\p{Script=Bamum}, which is\p{Script_Extensions=Bamum}๐ โ 657.\p{Script: Bamum}โ i.e.\p{Script_Extensions=Bamum}, Short:\p{Sc=Bamu},\p{Bamu}๐ โ 657.\p{Script: Bass}โ i.e.\p{Script=Bassa_Vah}, which is\p{Script_Extensions=Bassa_Vah}๐ซถ โ 36.\p{Script: Bassa_Vah}โ i.e.\p{Script_Extensions=Bassa_Vah}, Short:\p{Sc=Bass},\p{Bass}๐ โ 36.\p{Script: Batak}โ i.e.\p{Script_Extensions=Batak}, Short:\p{Sc=Batk},\p{Batk}๐ฆ โ 56.\p{Script: Batk}โ i.e.\p{Script=Batak}, which is\p{Script_Extensions=Batak}๐ โ 56.\p{Script: Beng}โ i.e.\p{Script=Bengali}๐ชท โ 96.\p{Script: Bengali}โ Short:\p{Sc=Beng}๐ธ โ 96:U+0980..0983,U+0985..098C,U+098F..0990,U+0993..09A8,U+09AA..09B0,U+09B2...\p{Script: Berf}โ i.e.\p{Script=Beria_Erfe}, which is\p{Script_Extensions=Beria_Erfe}๐ช โ 50.\p{Script: Beria_Erfe}โ i.e.\p{Script_Extensions=Beria_Erfe}, Short:\p{Sc=Berf},\p{Berf}๐๏ธ โ 50.\p{Script: Bhaiksuki}โ i.e.\p{Script_Extensions=Bhaiksuki}, Short:\p{Sc=Bhks},\p{Bhks}๐ โ 97.\p{Script: Bhks}โ i.e.\p{Script=Bhaiksuki}, which is\p{Script_Extensions=Bhaiksuki}๐๏ธ โ 97.\p{Script: Bopo}โ i.e.\p{Script=Bopomofo}๐ โ 77.\p{Script: Bopomofo}โ Short:\p{Sc=Bopo}๐งง โ 77:U+02EA..02EB,U+3105..312F,U+31A0..31BF.\p{Script: Brah},\p{Script=Brahmi}(=\p{Script_Extensions=Brahmi}) (115) โ the four-letter nickname era begins โจ\p{Script: Brahmi},\p{Script_Extensions=Brahmi}(Short:\p{Sc=Brah},\p{Brah}) (115) โ same script, full-name fit ๐\p{Script: Brai},\p{Script=Braille}(=\p{Script_Extensions=Braille}) (256) โ accessible queen, we stan ๐ซถ\p{Script: Braille},\p{Script_Extensions=Braille}(Short:\p{Sc=Brai},\p{Brai}) (256) โ yes bestie, she gets a Short: line too ๐\p{Script: Bugi},\p{Script=Buginese}(30) โ tiny but mighty ๐ฆ\p{Script: Buginese}(Short:\p{Sc=Bugi}) (30: U+1A00..1A1B, U+1A1E..1A1F) โ code points listed, no crumbs โจ\p{Script: Buhd},\p{Script=Buhid}(20) โ twenty and thriving ๐\p{Script: Buhid}(Short:\p{Sc=Buhd}) (20: U+1740..1753) โ look at that neat little block ๐ธ\p{Script: Cakm},\p{Script=Chakma}(71) โ short form, long form, both slay ๐\p{Script: Canadian_Aboriginal},\p{Script_Extensions=Canadian_Aboriginal}(Short:\p{Sc=Cans},\p{Cans}) (726) โ 726 and not slowing down ๐ฅ\p{Script: Cans},\p{Script=Canadian_Aboriginal}(=\p{Script_Extensions=Canadian_Aboriginal}) (726) โ and the alias said "same energy" ๐\p{Script: Cari},\p{Script=Carian}(49) โ 49 code points of Carian main character energy ๐\p{Script: Carian}(Short:\p{Sc=Cari}) (49: U+102A0..102D0) โ one gorgeous unbroken range, we love to see it ๐\p{Script: Caucasian_Albanian}(Short:\p{Sc=Aghb}) (53: U+10530..10563, U+1056F) โ long name, short name, tidy footprint ๐ง\p{Script: Chakma}(Short:\p{Sc=Cakm}) (71: U+11100..11134, U+11136..11147) โ note the little gap, it's on purpose ๐\p{Script: Cham},\p{Script_Extensions=Cham}(Short:\p{Sc=Cham},\p{Cham}) (83) โ Cham with the matching Short: tokens โญ\p{Script: Cher},\p{Script=Cherokee}(172) โ short form Cher, iconic ๐\p{Script: Cherokee}(Short:\p{Sc=Cher}) (172: U+13A0..13F5, U+13F8..13FD, U+AB70..ABBF) โ three ranges, all accounted for ๐\p{Script: Chorasmian},\p{Script_Extensions=Chorasmian}(Short:\p{Sc=Chrs},\p{Chrs}) (28) โ 28, small but booked and busy โจ\p{Script: Chrs},\p{Script=Chorasmian}(=\p{Script_Extensions=Chorasmian}) (28) โ the alias is giving equal rights ๐\p{Script: Common}(Short:\p{Sc=Zyyy}) (9123: the set is literally this:
[\x00-\x20!\"#\$\%&\'\(\)*+,\-.\/0-9:;<=>?\@\[\\\]\^_`\{\|\}~\x7f-\xa9\xab-\xb9\xbb-\xbf\xd7\xf7]
then U+02B9..02DF, U+02E5..02E9, U+02EC..02FF, U+0374, U+037E ...)
okay bestie this one is a whole encyclopedia โ 9123 code points, that's the communal closet everyone borrows from ๐ซถ
\p{Script: Copt},\p{Script=Coptic}(137) โ short form Copt, Coptic when it's being formal ๐\p{Script: Coptic}(Short:\p{Sc=Copt}) (137: U+03E2..03EF, U+2C80..2CF3, U+2CF9..2CFF) โ three ranges, zero notes ๐\p{Script: Cpmn},\p{Script=Cypro_Minoan}(99) โ Cypro_Minoan said "call me Cpmn" โญ\p{Script: Cprt},\p{Script=Cypriot}(55) โ Cypriot, four letters plus a t ๐ฆ\p{Script: Cuneiform},\p{Script_Extensions=Cuneiform}(Short:\p{Sc=Xsux},\p{Xsux}) (1234) โ 1234, the numbers literally counting themselves ๐ฅ\p{Script: Cypriot}(Short:\p{Sc=Cprt}) (55: U+10800..10805, U+10808, U+1080A..10835, U+10837..10838, U+1083C, U+1083F) โ six separate pieces and every one of them listed ๐\p{Script: Cypro_Minoan}(Short:\p{Sc=Cpmn}) (99: U+12F90..12FF2) โ one clean range, chef's kiss ๐\p{Script: Cyrillic}(Short:\p{Sc=Cyrl}) (508: U+0400..0484, U+0487..052F, U+1C80..1C8A, U+1D2B, U+1D78, U+2DE0..2DFF ...) โ 508 and the list keeps going, as always โจ\p{Script: Cyrl},\p{Script=Cyrillic}(508) โ the four-letter shortcut for the big one ๐\p{Script: Deseret},\p{Script_Extensions=Deseret}(Short:\p{Sc=Dsrt},\p{Dsrt}) (80) โ Deseret with full Short: luxury ๐ธ\p{Script: Deva},\p{Script=Devanagari}(164) โ Deva is the nickname, Devanagari is the government name ๐\p{Script: Devanagari}(Short:\p{Sc=Deva}) (164: U+0900..0950, U+0955..0963, U+0966..097F, U+A8E0..A8FF, U+11B00..11B09) โ five ranges, all present and accounted for ๐ซถ\p{Script: Diak},\p{Script=Dives_Akuru}(=\p{Script_Extensions=Dives_Akuru}) (72) โ Dives_Akuru, but cute in Diak ๐ฆ\p{Script: Dives_Akuru},\p{Script_Extensions=Dives_Akuru}(Short:\p{Sc=Diak},\p{Diak}) (72) โ symmetry, we love her ๐\p{Script: Dogr},\p{Script=Dogra}(60) โ Dogra with the four-letter friend โญ\p{Script: Dogra}(Short:\p{Sc=Dogr}) (60: U+11800..1183B) โ one range, no drama ๐\p{Script: Dsrt},\p{Script=Deseret}(=\p{Script_Extensions=Deseret}) (80) โ the reverse view, same 80 โจ\p{Script: Dupl},\p{Script=Duployan}(143) โ Duployan sounding very fancy, Dupl keeping it short ๐\p{Script: Duployan}(Short:\p{Sc=Dupl}) (143: U+1BC00..1BC6A, U+1BC70..1BC7C, U+1BC80..1BC88, U+1BC90..1BC99, U+1BC9C..1BC9F) โ five ranges, perfectly lined up ๐\p{Script: Egyp},\p{Script=Egyptian_Hieroglyphs}(=\p{Script_Extensions=Egyptian_Hieroglyphs}) (5105) โ 5105, hieroglyph royalty fr fr ๐ฅ\p{Script: Egyptian_Hieroglyphs},\p{Script_Extensions=Egyptian_Hieroglyphs}(Short:\p{Sc=Egyp},\p{Egyp}) (5105) โ long name, short name, same 5105 ๐\p{Script: Elba},\p{Script=Elbasan}(40) โ Elbasan, but make it Elba ๐ฆ\p{Script: Elbasan}(Short:\p{Sc=Elba}) (40: U+10500..10527) โ tidy little block, no crumbs ๐\p{Script: Elym},\p{Script=Elymaic}(=\p{Script_Extensions=Elymaic}) (23) โ 23 code points, pocket-sized icon โจ\p{Script: Elymaic},\p{Script_Extensions=Elymaic}(Short:\p{Sc=Elym},\p{Elym}) (23) โ both directions, all documented ๐ธ\p{Script: Ethi},\p{Script=Ethiopic}(523) โ Ethiopic with the short handle Ethi โญ\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 ...) โ 523 and still going, the ellipsis said "more later" ๐ซถ\p{Script: Gara},\p{Script=Garay}(69) โ Garay, but the shorthand said Gara ๐\p{Script: Garay}(Short:\p{Sc=Gara}) (69: U+10D40..10D65, U+10D69..10D85, U+10D8E..10D8F) โ three ranges, all listed ๐\p{Script: Geor},\p{Script=Georgian}(173) โ Georgian with the Geor glow-up โจ\p{Script: Georgian}(Short:\p{Sc=Geor}) (173: U+10A0..10C5, U+10C7, U+10CD, U+10D0..10FA, U+10FC..10FF, U+1C90..1CBA ...) โ single code points AND ranges, she does both ๐\p{Script: Glag},\p{Script=Glagolitic}(134) โ Glagolitic, affectionately Glag ๐ฆ\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) โ six ranges, meticulous behavior ๐\p{Script: Gong},\p{Script=Gunjala_Gondi}(63) โ Gunjala_Gondi over here going by Gong โญ\p{Script: Gonm},\p{Script=Masaram_Gondi}(75) โ Masaram_Gondi, nickname Gonm ๐ธ\p{Script: Goth},\p{Script=Gothic}(27) โ Gothic, but Goth when we're in a hurry ๐\p{Script: Gothic}(Short:\p{Sc=Goth}) (27: U+10330..1034A) โ 27, one range, done โจ\p{Script: Gran},\p{Script=Grantha}(85) โ Grantha, four-letter era as Gran ๐\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 ...) โ gaps included, nothing skipped, and an ellipsis on top ๐ซถ\p{Script: Greek}(Short:\p{Sc=Grek}) (518: U+0370..0373, U+0375..0377, U+037A..037D, U+037F, U+0384, U+0386 ...) โ 518, the classics stay booked ๐\p{Script: Grek},\p{Script=Greek}(518) โ Grek, the short spelling, same legendary 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 ...) โ lots of little ranges and an ellipsis saying there's more ๐ธ\p{Script: Gujr},\p{Script=Gujarati}(91) โ the shortcut version of the same 91 ๐\p{Script: Gukh},\p{Script=Gurung_Khema}(58) โ Gurung_Khema going by Gukh, relatable ๐\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) โ six ranges, all present ๐ฆ\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 ...) โ 80 with the little gaps listed out in full โญ\p{Script: Guru},\p{Script=Gurmukhi}(80) โ Guru is literally the Short: name, and it ate ๐\p{Script: Gurung_Khema}(Short:\p{Sc=Gukh}) (58: U+16100..16139) โ one range, 58, immaculate โจ\p{Script: Han}(Short:\p{Sc=Han}) (103_351: U+2E80..2E99, U+2E9B..2EF3, U+2F00..2FD5, U+3005, U+3007, U+3021..3029 ...) โ 103_351 code points. the main character, genuinely ๐\p{Script: Hang},\p{Script=Hangul}(11_739) โ Hangul, but hang loose with Hang ๐ฆ\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 ...) โ 11_739 and the ellipsis is still holding the door open ๐ฅ\p{Script: Hani},\p{Script=Han}(103_351) โ Hani, another doorway into the 103_351 ๐\p{Script: Hanifi_Rohingya}(Short:\p{Sc=Rohg}) (50: U+10D00..10D27, U+10D30..10D39) โ two ranges, 50, clean ๐\p{Script: Hano},\p{Script=Hanunoo}(21) โ Hanunoo with the Hano shorty โญ\p{Script: Hanunoo}(Short:\p{Sc=Hano}) (21: U+1720..1734) โ 21 code points, one cute block ๐ธ\p{Script: Hatr},\p{Script=Hatran}(=\p{Script_Extensions=Hatran}) (26) โ Hatran, aka Hatr when you're close like that ๐\p{Script: Hatran},\p{Script_Extensions=Hatran}(Short:\p{Sc=Hatr},\p{Hatr}) (26) โ 26, both spellings, all documented ๐ซถ\p{Script: Hebr},\p{Script=Hebrew}(134) โ Hebrew with the four-letter Hebr ๐ฆ\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 ...) โ six entries and an ellipsis, thorough queen โจ\p{Script: Hira},\p{Script=Hiragana}(381) โ Hiragana's nickname is Hira, and it's precious ๐\p{Script: Hiragana}(Short:\p{Sc=Hira}) (381: U+3041..3096, U+309D..309F, U+1B001..1B11F, U+1B132, U+1B150..1B152, U+1F200) โ 381 across six spans, no skips ๐\p{Script: Hluw},\p{Script=Anatolian_Hieroglyphs}(=\p{Script_Extensions=Anatolian_Hieroglyphs}) (583) โ Anatolian_Hieroglyphs with the wild Hluw alias ๐ฅ\p{Script: Hmng},\p{Script=Pahawh_Hmong}(=\p{Script_Extensions=Pahawh_Hmong}) (127) โ Pahawh_Hmong, four letters of Hmng energy โญ\p{Script: Hmnp},\p{Script=Nyiakeng_Puachue_Hmong}(=\p{Script_Extensions=Nyiakeng_Puachue_Hmong}) (71) โ Nyiakeng_Puachue_Hmong, alphabet-soup name, iconic ๐\p{Script: Hung},\p{Script=Old_Hungarian}(108) โ Old_Hungarian, but you can just call it Hung ๐\p{Script: Imperial_Aramaic},\p{Script_Extensions=Imperial_Aramaic}(Short:\p{Sc=Armi},\p{Armi}) (31) โ 31 code points, imperial behavior only ๐\p{Script: Inherited}(Short:\p{Sc=Zinh}) (684: U+0300..036F, U+0485..0486, U+064B..0655, U+0670, U+0951..0954, U+1AB0..1ADD ...) โ 684, living up to the name and collecting everything ๐ซถ\p{Script: Inscriptional_Pahlavi},\p{Script_Extensions=Inscriptional_Pahlavi}(Short:\p{Sc=Phli},\p{Phli}) (27) โ long name, short token Phli, 27 points ๐ธ\p{Script: Inscriptional_Parthian},\p{Script_Extensions=Inscriptional_Parthian}(Short:\p{Sc=Prti},\p{Prti}) (30) โ Inscriptional_Parthian, Prti for short, 30 strong โจ\p{Script: Ital},\p{Script=Old_Italic}(=\p{Script_Extensions=Old_Italic}) (39) โ Old_Italic going by Ital, very chic ๐\p{Script: Java},\p{Script=Javanese}(90) โ Javanese, alias Java, and no that's not the island's fault ๐\p{Script: Javanese}(Short:\p{Sc=Java}) (90: U+A980..A9CD,
โฆand we're picking up mid-entry again โ the one above closes out with U+A9D0..A9D9, U+A9DE..A9DF) ๐
and then the roll call just keeps on rolling, bestie.
\p{Script: Kaithi}โ short name:\p{Sc=Kthi}. 68 code points:U+11080..110C2,U+110CD. Two ranges, no drama, we love a compact queen. โจ\p{Script: Kali}โ aka\p{Script=Kayah_Li}. 47 code points, count only. ๐ฆ\p{Script: Kana}โ aka\p{Script=Katakana}. 321 code points. Plot twist:Kanais the little short-name that points at the wholeKatakanasituation. ๐\p{Script: Kannada}โ short name:\p{Sc=Knda}. 92 code points:U+0C80..0C8C,U+0C8E..0C90,U+0C92..0CA8,U+0CAA..0CB3,U+0CB5..0CB9,U+0CBC..0CC4... and yes that trailing...is doing SO much work. ๐ญ\p{Script: Katakana}โ short name:\p{Sc=Kana}. 321 code points:U+30A1..30FA,U+30FD..30FF,U+31F0..31FF,U+32D0..32FE,U+3300..3357,U+FF66..FF6F... same 321 asKanaabove, because it ISKanaabove. ๐ธ\p{Script: Kawi}โ this one is also\p{Script_Extensions=Kawi}, same thing. Short names:\p{Sc=Kawi},\p{Kawi}. 87 code points. ๐\p{Script: Kayah_Li}โ short name:\p{Sc=Kali}. 47 code points:U+A900..A92D,U+A92F. Notice a certain gap in there โ iconic, honestly. ๐\p{Script: Khar}โ aka\p{Script=Kharoshthi}, which is also literally the same as\p{Script_Extensions=Kharoshthi}. 68 code points. ๐ฅ\p{Script: Kharoshthi}โ same set as\p{Script_Extensions=Kharoshthi}. Short names:\p{Sc=Khar},\p{Khar}. 68 code points. โจ\p{Script: Khitan_Small_Script}โ matches\p{Script_Extensions=Khitan_Small_Script}. Short names:\p{Sc=Kits},\p{Kits}. 472 code points, big number energy. ๐\p{Script: Khmer}โ matches\p{Script_Extensions=Khmer}. Short names:\p{Sc=Khmr},\p{Khmr}. 146 code points. ๐ซถ\p{Script: Khmr}โ aka\p{Script=Khmer}, which again equals\p{Script_Extensions=Khmer}. 146 code points. ๐\p{Script: Khoj}โ aka\p{Script=Khojki}. 65 code points. โญ\p{Script: Khojki}โ short name:\p{Sc=Khoj}. 65 code points:U+11200..11211,U+11213..11241. ๐\p{Script: Khudawadi}โ short name:\p{Sc=Sind}. 69 code points:U+112B0..112EA,U+112F0..112F9. ๐ง\p{Script: Kirat_Rai}โ matches\p{Script_Extensions=Kirat_Rai}. Short names:\p{Sc=Krai},\p{Krai}. 58 code points. ๐\p{Script: Kits}โ aka\p{Script=Khitan_Small_Script}, which equals\p{Script_Extensions=Khitan_Small_Script}. 472 code points. Same 472 as before, it's the same set, she's just wearing a shorter name. ๐\p{Script: Knda}โ aka\p{Script=Kannada}. 92 code points. ๐\p{Script: Krai}โ aka\p{Script=Kirat_Rai}, which equals\p{Script_Extensions=Kirat_Rai}. 58 code points. ๐ธ\p{Script: Kthi}โ aka\p{Script=Kaithi}. 68 code points. ๐ฅ\p{Script: Lana}โ aka\p{Script=Tai_Tham}, which equals\p{Script_Extensions=Tai_Tham}. 127 code points. ๐
\p{Script: Lao}โ matches\p{Script_Extensions=Lao}. Short names:\p{Sc=Lao},\p{Lao}. 83 code points. ๐\p{Script: Laoo}โ aka\p{Script=Lao}, which equals\p{Script_Extensions=Lao}. 83 code points. โจ\p{Script: Latin}โ short name:\p{Sc=Latn}. 1492 code points:[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... she's the main character of this whole list, no cap. ๐\p{Script: Latn}โ aka\p{Script=Latin}. 1492 code points. ๐\p{Script: Lepc}โ aka\p{Script=Lepcha}, which equals\p{Script_Extensions=Lepcha}. 74 code points. ๐ฆ\p{Script: Lepcha}โ matches\p{Script_Extensions=Lepcha}. Short names:\p{Sc=Lepc},\p{Lepc}. 74 code points. ๐\p{Script: Limb}โ aka\p{Script=Limbu}. 68 code points. โญ\p{Script: Limbu}โ short name:\p{Sc=Limb}. 68 code points:U+1900..191E,U+1920..192B,U+1930..193B,U+1940,U+1944..194F. ๐\p{Script: Lina}โ aka\p{Script=Linear_A}. 341 code points. ๐ง\p{Script: Linb}โ aka\p{Script=Linear_B}. 211 code points. ๐\p{Script: Linear_A}โ short name:\p{Sc=Lina}. 341 code points:U+10600..10736,U+10740..10755,U+10760..10767. ๐ฅ\p{Script: Linear_B}โ short name:\p{Sc=Linb}. 211 code points:U+10000..1000B,U+1000D..10026,U+10028..1003A,U+1003C..1003D,U+1003F..1004D,U+10050..1005D... the...is back and she's thriving. ๐ญ\p{Script: Lisu}โ short name:\p{Sc=Lisu}. 49 code points:U+A4D0..A4FF,U+11FB0. ๐ซถ\p{Script: Lyci}โ aka\p{Script=Lycian}. 29 code points. โจ\p{Script: Lycian}โ short name:\p{Sc=Lyci}. 29 code points:U+10280..1029C. ๐ธ\p{Script: Lydi}โ aka\p{Script=Lydian}. 27 code points. ๐\p{Script: Lydian}โ short name:\p{Sc=Lydi}. 27 code points:U+10920..10939,U+1093F. ๐ฆ
\p{Script: Mahajani}โ short name:\p{Sc=Mahj}. 39 code points:U+11150..11176. ๐\p{Script: Mahj}โ aka\p{Script=Mahajani}. 39 code points. โญ\p{Script: Maka}โ aka\p{Script=Makasar}, which equals\p{Script_Extensions=Makasar}. 25 code points. ๐\p{Script: Makasar}โ matches\p{Script_Extensions=Makasar}. Short names:\p{Sc=Maka},\p{Maka}. 25 code points. ๐ง\p{Script: Malayalam}โ short name:\p{Sc=Mlym}. 118 code points:U+0D00..0D0C,U+0D0E..0D10,U+0D12..0D44,U+0D46..0D48,U+0D4A..0D4F,U+0D54..0D63... yes the gaps matter, don't @ me. ๐\p{Script: Mand}โ aka\p{Script=Mandaic}. 29 code points. ๐\p{Script: Mandaic}โ short name:\p{Sc=Mand}. 29 code points:U+0840..085B,U+085E. ๐ฅ\p{Script: Mani}โ aka\p{Script=Manichaean}. 51 code points. ๐\p{Script: Manichaean}โ short name:\p{Sc=Mani}. 51 code points:U+10AC0..10AE6,U+10AEB..10AF6. โจ\p{Script: Marc}โ aka\p{Script=Marchen}, which equals\p{Script_Extensions=Marchen}. 68 code points. ๐ธ\p{Script: Marchen}โ matches\p{Script_Extensions=Marchen}. Short names:\p{Sc=Marc},\p{Marc}. 68 code points. ๐\p{Script: Masaram_Gondi}โ short name:\p{Sc=Gonm}. 75 code points:U+11D00..11D06,U+11D08..11D09,U+11D0B..11D36,U+11D3A,U+11D3C..11D3D,U+11D3F..11D47... ๐ฆ\p{Script: Medefaidrin}โ matches\p{Script_Extensions=Medefaidrin}. Short names:\p{Sc=Medf},\p{Medf}. 91 code points. ๐\p{Script: Medf}โ aka\p{Script=Medefaidrin}, which equals\p{Script_Extensions=Medefaidrin}. 91 code points. ๐ง\p{Script: Meetei_Mayek}โ matches\p{Script_Extensions=Meetei_Mayek}. Short names:\p{Sc=Mtei},\p{Mtei}. 79 code points. ๐\p{Script: Mend}โ aka\p{Script=Mende_Kikakui}, which equals\p{Script_Extensions=Mende_Kikakui}. 213 code points. ๐\p{Script: Mende_Kikakui}โ matches\p{Script_Extensions=Mende_Kikakui}. Short names:\p{Sc=Mend},\p{Mend}. 213 code points. ๐ฅ\p{Script: Merc}โ aka\p{Script=Meroitic_Cursive}, which equals\p{Script_Extensions=Meroitic_Cursive}. 90 code points. โญ\p{Script: Mero}โ aka\p{Script=Meroitic_Hieroglyphs}. 32 code points. ๐\p{Script: Meroitic_Cursive}โ matches\p{Script_Extensions=Meroitic_Cursive}. Short names:\p{Sc=Merc},\p{Merc}. 90 code points. ๐\p{Script: Meroitic_Hieroglyphs}โ short name:\p{Sc=Mero}. 32 code points:U+10980..1099F. โจ\p{Script: Miao}โ matches\p{Script_Extensions=Miao}. Short names:\p{Sc=Miao},\p{Miao}. 149 code points. ๐ธ\p{Script: Mlym}โ aka\p{Script=Malayalam}. 118 code points. ๐\p{Script: Modi}โ short name:\p{Sc=Modi}. 79 code points:U+11600..11644,U+11650..11659. ๐ฆ\p{Script: Mong}โ aka\p{Script=Mongolian}. 168 code points. ๐\p{Script: Mongolian}โ short name:\p{Sc=Mong}. 168 code points:U+1800..1801,U+1804,U+1806..1819,U+1820..1878,U+1880..18AA,U+11660..1166C. ๐\p{Script: Mro}โ matches\p{Script_Extensions=Mro}. Short names:\p{Sc=Mro},\p{Mro}. 43 code points. ๐ง\p{Script: Mroo}โ aka\p{Script=Mro}, which equals\p{Script_Extensions=Mro}. 43 code points. ๐\p{Script: Mtei}โ aka\p{Script=Meetei_Mayek}, which equals\p{Script_Extensions=Meetei_Mayek}. 79 code points. ๐\p{Script: Mult}โ aka\p{Script=Multani}. 38 code points. ๐ฅ\p{Script: Multani}โ short name:\p{Sc=Mult}. 38 code points:U+11280..11286,U+11288,U+1128A..1128D,U+1128F..1129D,U+1129F..112A9. โญ\p{Script: Myanmar}โ short name:\p{Sc=Mymr}. 243 code points:U+1000..109F,U+A9E0..A9FE,U+AA60..AA7F,U+116D0..116E3. ๐\p{Script: Mymr}โ aka\p{Script=Myanmar}. 243 code points. โจ
\p{Script: Nabataean}โ matches\p{Script_Extensions=Nabataean}. Short names:\p{Sc=Nbat},\p{Nbat}. 40 code points. ๐ธ\p{Script: Nag_Mundari}โ matches\p{Script_Extensions=Nag_Mundari}. Short names:\p{Sc=Nagm},\p{Nagm}. 42 code points. ๐\p{Script: Nagm}โ aka\p{Script=Nag_Mundari}, which equals\p{Script_Extensions=Nag_Mundari}. 42 code points. ๐ฆ\p{Script: Nand}โ aka\p{Script=Nandinagari}. 65 code points. ๐\p{Script: Nandinagari}โ short name:\p{Sc=Nand}. 65 code points:U+119A0..119A7,U+119AA..119D7,U+119DA..119E4. ๐ง\p{Script: Narb}โ aka\p{Script=Old_North_Arabian}, which equals\p{Script_Extensions=Old_North_Arabian}. 32 code points. ๐\p{Script: Nbat}โ aka\p{Script=Nabataean}, which equals\p{Script_Extensions=Nabataean}. 40 code points. ๐\p{Script: New_Tai_Lue}โ matches\p{Script_Extensions=New_Tai_Lue}. Short names:\p{Sc=Talu},\p{Talu}. 83 code points. ๐\p{Script: Newa}โ short name:\p{Sc=Newa}. 97 code points:U+11400..1145B,U+1145D..11461. ๐ฅ\p{Script: Nko}โ short name:\p{Sc=Nko}. 62 code points:U+07C0..07FA,U+07FD..07FF. โญ\p{Script: Nkoo}โ aka\p{Script=Nko}. 62 code points. ๐\p{Script: Nshu}โ aka\p{Script=Nushu}, which equals\p{Script_Extensions=Nushu}. 397 code points. โจ\p{Script: Nushu}โ matches\p{Script_Extensions=Nushu}. Short names:\p{Sc=Nshu},\p{Nshu}. 397 code points. ๐ธ\p{Script: Nyiakeng_Puachue_Hmong}โ matches\p{Script_Extensions=Nyiakeng_Puachue_Hmong}. Short names:\p{Sc=Hmnp},\p{Hmnp}. 71 code points. ๐
\p{Script: Ogam}โ aka\p{Script=Ogham}, which equals\p{Script_Extensions=Ogham}. 29 code points. ๐ฆ\p{Script: Ogham}โ matches\p{Script_Extensions=Ogham}. Short names:\p{Sc=Ogam},\p{Ogam}. 29 code points. ๐\p{Script: Ol_Chiki}โ matches\p{Script_Extensions=Ol_Chiki}. Short names:\p{Sc=Olck},\p{Olck}. 48 code points. ๐ง\p{Script: Ol_Onal}โ short name:\p{Sc=Onao}. 44 code points:U+1E5D0..1E5FA,U+1E5FF. ๐\p{Script: Olck}โ aka\p{Script=Ol_Chiki}, which equals\p{Script_Extensions=Ol_Chiki}. 48 code points. ๐\p{Script: Old_Hungarian}โ short name:\p{Sc=Hung}. 108 code points:U+10C80..10CB2,U+10CC0..10CF2,U+10CFA..10CFF. ๐
and bestie the list truly does not stop, we're not even close to done ๐
\p{Script: Old_Italic},\p{Script_Extensions=Old_Italic}โ (Short:\p{Sc=Ital},\p{Ital}) (39) ๐ the grand old Italic era, we stan\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) ๐ ancient baddie energy fr\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},\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...) โ yes bestie the...is literally IN the source, it's not me being lazy ๐\p{Script: Orkh},\p{Script=Old_Turkic}โ (73)\p{Script: Orya},\p{Script=Oriya}โ (91)\p{Script: Osage}โ (Short:\p{Sc=Osge}) (72:U+104B0..104D3,U+104D8..104FB)\p{Script: Osge},\p{Script=Osage}โ (72)\p{Script: Osma},\p{Script=Osmanya}โ (=\p{Script_Extensions=Osmanya}) (40)\p{Script: Osmanya},\p{Script_Extensions=Osmanya}โ (Short:\p{Sc=Osma},\p{Osma}) (40)\p{Script: Ougr},\p{Script=Old_Uyghur}โ (26)\p{Script: Pahawh_Hmong},\p{Script_Extensions=Pahawh_Hmong}โ (Short:\p{Sc=Hmng},\p{Hmng}) (127) ๐\p{Script: Palm},\p{Script=Palmyrene}โ (=\p{Script_Extensions=Palmyrene}) (32)\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)\p{Script: Pauc},\p{Script=Pau_Cin_Hau}โ (=\p{Script_Extensions=Pau_Cin_Hau}) (57)\p{Script: Perm},\p{Script=Old_Permic}โ (43)\p{Script: Phag},\p{Script=Phags_Pa}โ (56)\p{Script: Phags_Pa}โ (Short:\p{Sc=Phag}) (56:U+A840..A877)\p{Script: Phli},\p{Script=Inscriptional_Pahlavi}โ (=\p{Script_Extensions=Inscriptional_Pahlavi}) (27)\p{Script: Phlp},\p{Script=Psalter_Pahlavi}โ (29)\p{Script: Phnx},\p{Script=Phoenician}โ (=\p{Script_Extensions=Phoenician}) (29)\p{Script: Phoenician},\p{Script_Extensions=Phoenician}โ (Short:\p{Sc=Phnx},\p{Phnx}) (29) ๐ฅ\p{Script: Plrd},\p{Script=Miao}โ (=\p{Script_Extensions=Miao}) (149)\p{Script: Prti},\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},\p{Script=Coptic}โ (137)\p{Script: Qaai},\p{Script=Inherited}โ (684) โ that's a LOT, lowkey the biggest one so far ๐\p{Script: Rejang},\p{Script_Extensions=Rejang}โ (Short:\p{Sc=Rjng},\p{Rjng}) (37)\p{Script: Rjng},\p{Script=Rejang}โ (=\p{Script_Extensions=Rejang}) (37)\p{Script: Rohg},\p{Script=Hanifi_Rohingya}โ (50)\p{Script: Runic}โ (Short:\p{Sc=Runr}) (86:U+16A0..16EA,U+16EE..16F8) โจ\p{Script: Runr},\p{Script=Runic}โ (86)\p{Script: Samaritan}โ (Short:\p{Sc=Samr}) (61:U+0800..082D,U+0830..083E)\p{Script: Samr},\p{Script=Samaritan}โ (61)\p{Script: Sarb},\p{Script=Old_South_Arabian}โ (=\p{Script_Extensions=Old_South_Arabian}) (32)\p{Script: Saur},\p{Script=Saurashtra}โ (=\p{Script_Extensions=Saurashtra}) (82)\p{Script: Saurashtra},\p{Script_Extensions=Saurashtra}โ (Short:\p{Sc=Saur},\p{Saur}) (82)\p{Script: Sgnw},\p{Script=SignWriting}โ (=\p{Script_Extensions=SignWriting}) (672)\p{Script: Sharada}โ (Short:\p{Sc=Shrd}) (104:U+11180..111DF,U+11B60..11B67)\p{Script: Shavian}โ (Short:\p{Sc=Shaw}) (48:U+10450..1047F)\p{Script: Shaw},\p{Script=Shavian}โ (48)\p{Script: Shrd},\p{Script=Sharada}โ (104)\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: Sidetic},\p{Script_Extensions=Sidetic}โ (Short:\p{Sc=Sidt},\p{Sidt}) (26)\p{Script: Sidt},\p{Script=Sidetic}โ (=\p{Script_Extensions=Sidetic}) (26)\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)\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: Tai_Yo},\p{Script_Extensions=Tai_Yo}โ (Short:\p{Sc=Tayo},\p{Tayo}) (55)\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}โ (7059)\p{Script: Tangsa},\p{Script_Extensions=Tangsa}โ (Short:\p{Sc=Tnsa},\p{Tnsa}) (89)\p{Script: Tangut}โ (Short:\p{Sc=Tang}) (7059:U+16FE0,U+17000..18AFF,U+18D00..18D1E,U+18D80..18DF2) โ 7059?! that's not a vibe check that's a vibe warrant ๐ญ iconic tho\p{Script: Tavt},\p{Script=Tai_Viet}โ (=\p{Script_Extensions=Tai_Viet}) (72)\p{Script: Tayo},\p{Script=Tai_Yo}โ (=\p{Script_Extensions=Tai_Yo}) (55)\p{Script: Telu},\p{Script=Telugu}โ (101)\p{Script: Telugu}โ (Short:\p{Sc=Telu}) (101: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) โ cute short list bestie, blink and you'll miss it ๐\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)
bestie we are STILL deep in the script list and honestly? character development โจ same deal as always: the number in the parentheses is the count, the = means "yeah this one is that other one", and the Short: ones are the lil four-letter shortcuts you can use instead of typing out the whole name. everything here slots straight into \p{...} or \P{...}. periodt ๐
\p{Script: Tolong_Siki}/\p{Script_Extensions=Tolong_Siki}โ short forms:\p{Sc=Tols},\p{Tols}โ(54)\p{Script: Tols}/\p{Script=Tolong_Siki}(which is just\p{Script_Extensions=Tolong_Siki}again) โ(54)\p{Script: Toto}โ short form:\p{Sc=Toto}โ(31: U+1E290..1E2AE)\p{Script: Tulu_Tigalari}โ short form:\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)
\p{Script: Ugar}/\p{Script=Ugaritic}(=\p{Script_Extensions=Ugaritic}) โ(31)\p{Script: Ugaritic}/\p{Script_Extensions=Ugaritic}โ short forms:\p{Sc=Ugar},\p{Ugar}โ(31)\p{Script: Unknown}/\p{Script_Extensions=Unknown}โ short forms:\p{Sc=Zzzz},\p{Zzzz}โ(954_246 plus all above-Unicode code points)๐ that's not a typo, that is a wild amount of code points\p{Script: Vai}/\p{Script_Extensions=Vai}โ short forms:\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 forms:\p{Sc=Vith},\p{Vith}โ(70)\p{Script: Wancho}/\p{Script_Extensions=Wancho}โ short forms:\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 forms:\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)\p{Script: Yezi}/\p{Script=Yezidi}โ(47)\p{Script: Yezidi}โ short form:\p{Sc=Yezi}โ(47: U+10E80..10EA9, U+10EAB..10EAD, U+10EB0..10EB1)\p{Script: Yi}โ short form:\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 forms:\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}โ(684)\p{Script: Zyyy}/\p{Script=Common}โ(9123)\p{Script: Zzzz}/\p{Script=Unknown}(=\p{Script_Extensions=Unknown}) โ(954_246 plus all above-Unicode code points)๐ yeah the shorthand and the longhand for Unknown really do both pull in everything above Unicode too, no cap
okay and now we crash straight into the Script_Extensions block, bestie โ buckle up ๐
\p{Script_Extensions: Adlam}โ short forms:\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 forms:\p{Scx=Ahom},\p{Ahom}โ(65: U+11700..1171A, U+1171D..1172B, U+11730..11746)\p{Script_Extensions: Anatolian_Hieroglyphs}โ short forms:\p{Scx=Hluw},\p{Hluw}โ(583: U+14400..14646)\p{Script_Extensions: Arab}/\p{Script_Extensions=Arabic}โ(1461)\p{Script_Extensions: Arabic}โ short forms:\p{Scx=Arab},\p{Arab}โ(1461: U+0600..0604, U+0606..06DC, U+06DE..06FF, U+0750..077F, U+0870..0891, U+0897..08E1 ...)\p{Script_Extensions: Armenian}โ short forms:\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 forms:\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 forms:\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 forms:\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 forms:\p{Scx=Bass},\p{Bass}โ(36: U+16AD0..16AED, U+16AF0..16AF5)\p{Script_Extensions: Batak}โ short forms:\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 forms:\p{Scx=Beng},\p{Beng}โ(114: U+02BC, U+0951..0952, U+0964..0965, U+0980..0983, U+0985..098C, U+098F..0990 ...)\p{Script_Extensions: Berf}/\p{Script_Extensions=Beria_Erfe}โ(50)\p{Script_Extensions: Beria_Erfe}โ short forms:\p{Scx=Berf},\p{Berf}โ(50: U+16EA0..16EB8, U+16EBB..16ED3)\p{Script_Extensions: Bhaiksuki}โ short forms:\p{Scx=Bhks},\p{Bhks}โ(97: U+11C00..11C08, U+11C0A..11C36, U+11C38..11C45, U+11C50..11C6C)\p{Script_Extensions: Bhks}/\p{Script_Extensions=Bhaiksuki}โ(97)\p{Script_Extensions: Bopo}/\p{Script_Extensions=Bopomofo}โ(122)\p{Script_Extensions: Bopomofo}โ short forms:\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 forms:\p{Scx=Brah},\p{Brah}โ(115: U+11000..1104D, U+11052..11075, U+1107F)\p{Script_Extensions: Brai}/\p{Script_Extensions=Braille}โ(256)\p{Script_Extensions: Braille}โ short forms:\p{Scx=Brai},\p{Brai}โ(256: U+2800..28FF)\p{Script_Extensions: Bugi}/\p{Script_Extensions=Buginese}โ(31)\p{Script_Extensions: Buginese}โ short forms:\p{Scx=Bugi},\p{Bugi}โ(31: U+1A00..1A1B, U+1A1E..1A1F, U+A9CF)\p{Script_Extensions: Buhd}/\p{Script_Extensions=Buhid}โ(22)\p{Script_Extensions: Buhid}โ short forms:\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 forms:\p{Scx=Cans},\p{Cans}โ(726: U+1400..167F, U+18B0..18F5, U+11AB0..11ABF)\p{Script_Extensions: Cans}/\p{Script_Extensions=Canadian_Aboriginal}โ(726)\p{Script_Extensions: Cari}/\p{Script_Extensions=Carian}โ(53)\p{Script_Extensions: Carian}โ short forms:\p{Scx=Cari},\p{Cari}โ(53: [\xb7], U+205A, U+205D, U+2E31, U+102A0..102D0)\p{Script_Extensions: Caucasian_Albanian}โ short forms:\p{Scx=Aghb},\p{Aghb}โ(56: U+0304, U+0331, U+035E, U+10530..10563, U+1056F)\p{Script_Extensions: Chakma}โ short forms:\p{Scx=Cakm},\p{Cakm}โ(91: U+09E6..09EF, U+1040..1049, U+11100..11134, U+11136..11147)\p{Script_Extensions: Cham}โ short forms:\p{Scx=Cham},\p{Cham}โ(83: U+AA00..AA36, U+AA40..AA4D, U+AA50..AA59, U+AA5C..AA5F)\p{Script_Extensions: Cher}/\p{Script_Extensions=Cherokee}โ(182)\p{Script_Extensions: Cherokee}โ short forms:\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 forms:\p{Scx=Chrs},\p{Chrs}โ(28: U+10FB0..10FCB)\p{Script_Extensions: Chrs}/\p{Script_Extensions=Chorasmian}โ(28)
okay lowkey this next one has a backtick hanging out inside the character class, so imma just drop it in a code block verbatim so nothing gets mangled ๐
\p{Script_Extensions: Common} (Short: \p{Scx=Zyyy}, \p{Zyyy}) (8655: [\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 ...)
\p{Script_Extensions: Copt}/\p{Script_Extensions=Coptic}โ(173)\p{Script_Extensions: Coptic}โ short forms:\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 forms:\p{Scx=Xsux},\p{Xsux}โ(1234: U+12000..12399, U+12400..1246E, U+12470..12474, U+12480..12543)\p{Script_Extensions: Cypriot}โ short forms:\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 forms:\p{Scx=Cpmn},\p{Cpmn}โ(101: U+10100..10101, U+12F90..12FF2)\p{Script_Extensions: Cyrillic}โ short forms:\p{Scx=Cyrl},\p{Cyrl}โ(521: U+02BC, U+0300..0302, U+0304, U+0306, U+0308, U+030B ...)
and we're still going, bestie โ the list does NOT let up ๐
\p{Script_Extensions: Cyrl}\p{Script_Extensions=Cyrillic}โ 521 of them, and every single one is a slay ๐\p{Script_Extensions: Deseret}(Short:\p{Scx=Dsrt},\p{Dsrt}) โ 80 babes,U+10400..1044F๐ฆ\p{Script_Extensions: Deva}\p{Script_Extensions=Devanagari}โ 221, iconique\p{Script_Extensions: Devanagari}(Short:\p{Scx=Deva},\p{Deva}) โ 221 and it's giving: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 bestie\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 of them, no cap\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, the short-name twin of the one above, periodt\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, literally the biggest main character energy in this whole list ๐ญ\p{Script_Extensions: Egyptian_Hieroglyphs}(Short:\p{Scx=Egyp},\p{Egyp}) โ 5105:U+13000..13455,U+13460..143FA๐\p{Script_Extensions: Elba}\p{Script_Extensions=Elbasan}โ 42, small but mighty\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... ๐\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๐\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, two Gondi besties back to back, we love a themed moment ๐ซถ\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... it's giving ancient, it's giving iconic ๐\p{Script_Extensions: Grek}\p{Script_Extensions=Greek}โ 531, yes the same 531, that's the point bestie\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... ๐\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โจ\p{Script_Extensions: Han}(Short:\p{Scx=Han},\p{Han}) โ 103_659. bestie. ONE HUNDRED AND THREE THOUSAND, SIX HUNDRED AND FIFTY-NINE. ๐ญ๐[\xb7],U+2E80..2E99,U+2E9B..2EF3,U+2F00..2FD5,U+2FF0..2FFF,U+3001..3003...\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... ๐ฅ\p{Script_Extensions: Hani}\p{Script_Extensions=Han}โ 103_659, again, because Han said "I contain multitudes" and meant it\p{Script_Extensions: Hanifi_Rohingya}(Short:\p{Scx=Rohg},\p{Rohg}) โ 55:U+060C,U+061B,U+061F,U+0640,U+06D4,U+10D00..10D27... ๐ฆ\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, and that full name is a mouthful, so thank u for the short one ๐\p{Script_Extensions: Hmng}\p{Script_Extensions=Pahawh_Hmong}โ 127\p{Script_Extensions: Hmnp}\p{Script_Extensions=Nyiakeng_Puachue_Hmong}โ 71, the longest name in the group chat fr fr\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}) โ 586:U+030F,U+0312,U+0314..0322,U+0326..032C,U+032F,U+0332..0341... ๐\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}) โ 108: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})
okay so we are picking up literally mid-parenthesis ๐ซ the previous entry's codepoint list wrapped over and got chopped, so here's the tail end of it, pure and unedited:
(81: U+0964..0965, U+A830..A839, U+112B0..112EA, U+112F0..112F9)
aaaand then we're right back into the Script_Extensions lineup, still chugging along alphabetically, still not skipping a single one, bestie. Every count, every range, every short form, exactly as it was written. Buckle up ๐
\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)โ Kits as a short form is so cute I cannot ๐ญ\p{Script_Extensions: Knda} \p{Script_Extensions=Kannada} (108)\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}) (1559: [A-Za-z\xaa\xb7\xba\xc0-\xd6\xd8-\xf6\xf8-\xff], U+0100..02B8, U+02BC, U+02C7, U+02C9..02CB, U+02CD ...)โ 1559, the way that's the biggest number you've seen in this whole list so far ๐\p{Script_Extensions: Latn} \p{Script_Extensions=Latin} (1559)\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: U+A830..A839, U+11600..11644, U+11650..11659)\p{Script_Extensions: Mong} \p{Script_Extensions=Mongolian} (178)\p{Script_Extensions: Mongolian} (Short: \p{Scx=Mong}, \p{Mong}) (178: U+1800..1819, U+1820..1878, U+1880..18AA, U+202F, U+3001..3002, U+3008..300B ...)\p{Script_Extensions: Mro} (Short: \p{Scx=Mro}, \p{Mro}) (43: U+16A40..16A5E, U+16A60..16A69, U+16A6E..16A6F)\p{Script_Extensions: Mroo} \p{Script_Extensions=Mro} (43)\p{Script_Extensions: Mtei} \p{Script_Extensions=Meetei_Mayek} (79)\p{Script_Extensions: Mult} \p{Script_Extensions=Multani} (48)\p{Script_Extensions: Multani} (Short: \p{Scx=Mult}, \p{Mult}) (48: U+0A66..0A6F, U+11280..11286, U+11288, U+1128A..1128D, U+1128F..1129D, U+1129F..112A9)\p{Script_Extensions: Myanmar} (Short: \p{Scx=Mymr}, \p{Mymr}) (244: 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} (Short: \p{Scx=Nbat}, \p{Nbat}) (40: U+10880..1089E, U+108A7..108AF)\p{Script_Extensions: Nag_Mundari} (Short: \p{Scx=Nagm}, \p{Nagm}) (42: U+1E4D0..1E4F9)\p{Script_Extensions: Nagm} \p{Script_Extensions=Nag_Mundari} (42)\p{Script_Extensions: Nand} \p{Script_Extensions=Nandinagari} (87)\p{Script_Extensions: Nandinagari} (Short: \p{Scx=Nand}, \p{Nand}) (87: U+0951, U+0964..0965, U+0CE6..0CEF, U+1CE9, U+1CF2, U+1CFA ...)\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} (Short: \p{Scx=Talu}, \p{Talu}) (83: U+1980..19AB, U+19B0..19C9, U+19D0..19DA, U+19DE..19DF)\p{Script_Extensions: Newa} (Short: \p{Scx=Newa}, \p{Newa}) (106: U+0951..0952, U+1CD5, U+1CD7..1CD8, U+1CE2, U+1CE9, U+1CEB ...)\p{Script_Extensions: Nko} (Short: \p{Scx=Nko}, \p{Nko}) (67: 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)\p{Script_Extensions: Nushu} (Short: \p{Scx=Nshu}, \p{Nshu}) (397: U+16FE1, U+1B170..1B2FB)\p{Script_Extensions: Nyiakeng_Puachue_Hmong} (Short: \p{Scx=Hmnp}, \p{Hmnp}) (71: U+1E100..1E12C, U+1E130..1E13D, U+1E140..1E149, U+1E14E..1E14F)โ say the whole name out loud, it's a whole moment ๐\p{Script_Extensions: Ogam} \p{Script_Extensions=Ogham} (29)\p{Script_Extensions: Ogham} (Short: \p{Scx=Ogam}, \p{Ogam}) (29: U+1680..169C)\p{Script_Extensions: Ol_Chiki} (Short: \p{Scx=Olck}, \p{Olck}) (48: U+1C50..1C7F)\p{Script_Extensions: Ol_Onal} (Short: \p{Scx=Onao}, \p{Onao}) (46: U+0964..0965, U+1E5D0..1E5FA, U+1E5FF)\p{Script_Extensions: Olck} \p{Script_Extensions=Ol_Chiki} (48)\p{Script_Extensions: Old_Hungarian} (Short: \p{Scx=Hung}, \p{Hung}) (112: U+205A, U+205D, U+2E31, U+2E41, U+10C80..10CB2, U+10CC0..10CF2 ...)\p{Script_Extensions: Old_Italic} (Short: \p{Scx=Ital}, \p{Ital}) (39: U+10300..10323, U+1032D..1032F)\p{Script_Extensions: Old_North_Arabian} (Short: \p{Scx=Narb}, \p{Narb}) (32: U+10A80..10A9F)\p{Script_Extensions: Old_Permic} (Short: \p{Scx=Perm}, \p{Perm}) (50: [\xb7], U+0300, U+0306..0308, U+0313, U+0483, U+10350..1037A)\p{Script_Extensions: Old_Persian} (Short: \p{Scx=Xpeo}, \p{Xpeo}) (50: U+103A0..103C3, U+103C8..103D5)\p{Script_Extensions: Old_Sogdian} (Short: \p{Scx=Sogo}, \p{Sogo}) (40: U+10F00..10F27)\p{Script_Extensions: Old_South_Arabian} (Short: \p{Scx=Sarb}, \p{Sarb}) (32: U+10A60..10A7F)\p{Script_Extensions: Old_Turkic} (Short: \p{Scx=Orkh}, \p{Orkh})
and yeah, that last one got cut off mid-thought ๐ญ no count, no ranges, just vibes โ we'll grab the rest of it in the next part, promise. stay tuned, we're literally so close to the end of the O's ๐ฆ
okay bestie we are deep in the Script_Extensions list and honestly? iconic. we're picking up right where the last part cut off, mid-entry, no cap ๐
first, the tail end of the entry that was already rolling before the page break:
(75: U+205A, U+2E30, U+10C00..10C48)
and now, the next chunk of the alphabet. buckle up, it's a long one ๐ฆ
\p{Script_Extensions: Old_Uyghur}(Short:\p{Scx=Ougr},\p{Ougr}) โ 28 code points:U+0640,U+10AF2,U+10F70..10F89\p{Script_Extensions: Onao}\p{Script_Extensions=Ol_Onal}โ 46 code points\p{Script_Extensions: Oriya}(Short:\p{Scx=Orya},\p{Orya}) โ 97 code points: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 code points\p{Script_Extensions: Orya}\p{Script_Extensions=Oriya}โ 97 code points\p{Script_Extensions: Osage}(Short:\p{Scx=Osge},\p{Osge}) โ 76 code points:U+0301,U+0304,U+030B,U+0358,U+104B0..104D3,U+104D8..104FB\p{Script_Extensions: Osge}\p{Script_Extensions=Osage}โ 76 code points\p{Script_Extensions: Osma}\p{Script_Extensions=Osmanya}โ 40 code points\p{Script_Extensions: Osmanya}(Short:\p{Scx=Osma},\p{Osma}) โ 40 code points:U+10480..1049D,U+104A0..104A9\p{Script_Extensions: Ougr}\p{Script_Extensions=Old_Uyghur}โ 28 code points\p{Script_Extensions: Pahawh_Hmong}(Short:\p{Scx=Hmng},\p{Hmng}) โ 127 code points:U+16B00..16B45,U+16B50..16B59,U+16B5B..16B61,U+16B63..16B77,U+16B7D..16B8F\p{Script_Extensions: Palm}\p{Script_Extensions=Palmyrene}โ 32 code points\p{Script_Extensions: Palmyrene}(Short:\p{Scx=Palm},\p{Palm}) โ 32 code points:U+10860..1087F\p{Script_Extensions: Pau_Cin_Hau}(Short:\p{Scx=Pauc},\p{Pauc}) โ 57 code points:U+11AC0..11AF8\p{Script_Extensions: Pauc}\p{Script_Extensions=Pau_Cin_Hau}โ 57 code points\p{Script_Extensions: Perm}\p{Script_Extensions=Old_Permic}โ 50 code points\p{Script_Extensions: Phag}\p{Script_Extensions=Phags_Pa}โ 61 code points\p{Script_Extensions: Phags_Pa}(Short:\p{Scx=Phag},\p{Phag}) โ 61 code points:U+1802..1803,U+1805,U+202F,U+3002,U+A840..A877\p{Script_Extensions: Phli}\p{Script_Extensions=Inscriptional_Pahlavi}โ 27 code points\p{Script_Extensions: Phlp}\p{Script_Extensions=Psalter_Pahlavi}โ 30 code points\p{Script_Extensions: Phnx}\p{Script_Extensions=Phoenician}โ 29 code points\p{Script_Extensions: Phoenician}(Short:\p{Scx=Phnx},\p{Phnx}) โ 29 code points:U+10900..1091B,U+1091F\p{Script_Extensions: Plrd}\p{Script_Extensions=Miao}โ 149 code points\p{Script_Extensions: Prti}\p{Script_Extensions=Inscriptional_Parthian}โ 30 code points
not me still typing "P" words at this point ๐ญ the alphabet is so long and we're only on P. stay with me bestie, we got this ๐ซถ
\p{Script_Extensions: Psalter_Pahlavi}(Short:\p{Scx=Phlp},\p{Phlp}) โ 30 code points:U+0640,U+10B80..10B91,U+10B99..10B9C,U+10BA9..10BAF\p{Script_Extensions: Qaac}\p{Script_Extensions=Coptic}โ 173 code points\p{Script_Extensions: Qaai}\p{Script_Extensions=Inherited}โ 586 code points\p{Script_Extensions: Rejang}(Short:\p{Scx=Rjng},\p{Rjng}) โ 37 code points:U+A930..A953,U+A95F\p{Script_Extensions: Rjng}\p{Script_Extensions=Rejang}โ 37 code points\p{Script_Extensions: Rohg}\p{Script_Extensions=Hanifi_Rohingya}โ 55 code points\p{Script_Extensions: Runic}(Short:\p{Scx=Runr},\p{Runr}) โ 89 code points:U+16A0..16F8\p{Script_Extensions: Runr}\p{Script_Extensions=Runic}โ 89 code points\p{Script_Extensions: Samaritan}(Short:\p{Scx=Samr},\p{Samr}) โ 62 code points:U+0800..082D,U+0830..083E,U+2E31\p{Script_Extensions: Samr}\p{Script_Extensions=Samaritan}โ 62 code points\p{Script_Extensions: Sarb}\p{Script_Extensions=Old_South_Arabian}โ 32 code points\p{Script_Extensions: Saur}\p{Script_Extensions=Saurashtra}โ 82 code points\p{Script_Extensions: Saurashtra}(Short:\p{Scx=Saur},\p{Saur}) โ 82 code points:U+A880..A8C5,U+A8CE..A8D9\p{Script_Extensions: Sgnw}\p{Script_Extensions=SignWriting}โ 672 code points\p{Script_Extensions: Sharada}(Short:\p{Scx=Shrd},\p{Shrd}) โ 119 code points:U+0951,U+1CD7,U+1CD9,U+1CDC..1CDD,U+1CE0,U+1CEA...\p{Script_Extensions: Shavian}(Short:\p{Scx=Shaw},\p{Shaw}) โ 49 code points:[\xb7],U+10450..1047F\p{Script_Extensions: Shaw}\p{Script_Extensions=Shavian}โ 49 code points\p{Script_Extensions: Shrd}\p{Script_Extensions=Sharada}โ 119 code points\p{Script_Extensions: Sidd}\p{Script_Extensions=Siddham}โ 92 code points\p{Script_Extensions: Siddham}(Short:\p{Scx=Sidd},\p{Sidd}) โ 92 code points:U+11580..115B5,U+115B8..115DD\p{Script_Extensions: Sidetic}(Short:\p{Scx=Sidt},\p{Sidt}) โ 26 code points:U+10940..10959\p{Script_Extensions: Sidt}\p{Script_Extensions=Sidetic}โ 26 code points\p{Script_Extensions: SignWriting}(Short:\p{Scx=Sgnw},\p{Sgnw}) โ 672 code points:U+1D800..1DA8B,U+1DA9B..1DA9F,U+1DAA1..1DAAF\p{Script_Extensions: Sind}\p{Script_Extensions=Khudawadi}โ 81 code points\p{Script_Extensions: Sinh}\p{Script_Extensions=Sinhala}โ 114 code points\p{Script_Extensions: Sinhala}(Short:\p{Scx=Sinh},\p{Sinh}) โ 114 code points: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 code points\p{Script_Extensions: Sogdian}(Short:\p{Scx=Sogd},\p{Sogd}) โ 43 code points:U+0640,U+10F30..10F59\p{Script_Extensions: Sogo}\p{Script_Extensions=Old_Sogdian}โ 40 code points\p{Script_Extensions: Sora}\p{Script_Extensions=Sora_Sompeng}โ 35 code points\p{Script_Extensions: Sora_Sompeng}(Short:\p{Scx=Sora},\p{Sora}) โ 35 code points:U+110D0..110E8,U+110F0..110F9\p{Script_Extensions: Soyo}\p{Script_Extensions=Soyombo}โ 83 code points\p{Script_Extensions: Soyombo}(Short:\p{Scx=Soyo},\p{Soyo}) โ 83 code points:U+11A50..11AA2\p{Script_Extensions: Sund}\p{Script_Extensions=Sundanese}โ 72 code points\p{Script_Extensions: Sundanese}(Short:\p{Scx=Sund},\p{Sund}) โ 72 code points:U+1B80..1BBF,U+1CC0..1CC7\p{Script_Extensions: Sunu}\p{Script_Extensions=Sunuwar}โ 51 code points\p{Script_Extensions: Sunuwar}(Short:\p{Scx=Sunu},\p{Sunu}) โ 51 code points:U+0300..0301,U+0303,U+030D,U+0310,U+032D,U+0331...\p{Script_Extensions: Sylo}\p{Script_Extensions=Syloti_Nagri}โ 57 code points\p{Script_Extensions: Syloti_Nagri}(Short:\p{Scx=Sylo},\p{Sylo}) โ 57 code points:U+0964..0965,U+09E6..09EF,U+A800..A82C\p{Script_Extensions: Syrc}\p{Script_Extensions=Syriac}โ 119 code points\p{Script_Extensions: Syriac}(Short:\p{Scx=Syrc},\p{Syrc}) โ 119 code points:U+0303..0304,U+0307..0308,U+030A,U+0323..0325,U+032D..032E,U+0330..0331...
we made it out of S alive, that's a whole era of unicode history right there ๐ T is next and T is giving "takes forever" fr fr
\p{Script_Extensions: Tagalog}(Short:\p{Scx=Tglg},\p{Tglg}) โ 25 code points:U+1700..1715,U+171F,U+1735..1736\p{Script_Extensions: Tagb}\p{Script_Extensions=Tagbanwa}โ 20 code points\p{Script_Extensions: Tagbanwa}(Short:\p{Scx=Tagb},\p{Tagb}) โ 20 code points:U+1735..1736,U+1760..176C,U+176E..1770,U+1772..1773\p{Script_Extensions: Tai_Le}(Short:\p{Scx=Tale},\p{Tale}) โ 50 code points: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 code points: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 code points:U+AA80..AAC2,U+AADB..AADF\p{Script_Extensions: Tai_Yo}(Short:\p{Scx=Tayo},\p{Tayo}) โ 55 code points:U+1E6C0..1E6DE,U+1E6E0..1E6F5,U+1E6FE..1E6FF\p{Script_Extensions: Takr}\p{Script_Extensions=Takri}โ 80 code points\p{Script_Extensions: Takri}(Short:\p{Scx=Takr},\p{Takr}) โ 80 code points:U+0964..0965,U+A830..A839,U+11680..116B9,U+116C0..116C9\p{Script_Extensions: Tale}\p{Script_Extensions=Tai_Le}โ 50 code points\p{Script_Extensions: Talu}\p{Script_Extensions=New_Tai_Lue}โ 83 code points\p{Script_Extensions: Tamil}(Short:\p{Scx=Taml},\p{Taml}) โ 133 code points: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 code points\p{Script_Extensions: Tang}\p{Script_Extensions=Tangut}โ 7076 code points ๐\p{Script_Extensions: Tangsa}(Short:\p{Scx=Tnsa},\p{Tnsa}) โ 89 code points:U+16A70..16ABE,U+16AC0..16AC9\p{Script_Extensions: Tangut}(Short:\p{Scx=Tang},\p{Tang}) โ 7076 code points:U+2FF0..2FFF,U+31EF,U+16FE0,U+17000..18AFF,U+18D00..18D1E,U+18D80..18DF2\p{Script_Extensions: Tavt}\p{Script_Extensions=Tai_Viet}โ 72 code points\p{Script_Extensions: Tayo}\p{Script_Extensions=Tai_Yo}โ 55 code points\p{Script_Extensions: Telu}\p{Script_Extensions=Telugu}โ 110 code points\p{Script_Extensions: Telugu}(Short:\p{Scx=Telu},\p{Telu}) โ 110 code points: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}โ 66 code points\p{Script_Extensions: Tglg}\p{Script_Extensions=Tagalog}โ 25 code points\p{Script_Extensions: Thaa}\p{Script_Extensions=Thaana}โ 66 code points\p{Script_Extensions: Thaana}(Short:\p{Scx=Thaa},\p{Thaa}) โ 66 code points: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 code points: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 code points: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 code points\p{Script_Extensions: Tifinagh}(Short:\p{Scx=Tfng},\p{Tfng})
โฆannnnd we're back mid-wrap, finishing the sentence from last time ๐ the Tirhuta crew's character list carries right on:
(66: U+0302, U+0304, U+0306..0309, U+0323, U+2D30..2D67, U+2D6F..2D70 ...)
okay so, the rest of the Script_Extensions girlies, still in alphabetical order because we are not chaotic (ok maybe a little) ๐ฆ:
\p{Script_Extensions: Tirh},\p{Script_Extensions=Tirhuta}โ (99)\p{Script_Extensions: Tirhuta}โ short:\p{Scx=Tirh},\p{Tirh}โ (99:U+0951..0952, U+0964..0965, U+1CD5, U+1CE2, U+1CF2, U+A830..A839 ...)\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: Tolong_Siki}โ short:\p{Scx=Tols},\p{Tols}โ (54:U+11DB0..11DDB, U+11DE0..11DE9)\p{Script_Extensions: Tols},\p{Script_Extensions=Tolong_Siki}โ (54)\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)\p{Script_Extensions: Unknown}โ short:\p{Scx=Zzzz},\p{Zzzz}โ (954_246 plus all above-Unicode code points:U+0378..0379, U+0380..0383, U+038B, U+038D, U+03A2, U+0530 ...) โ bestie this one is enormous, it's giving "everything we haven't labeled yet" ๐ญ\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}โ (586)\p{Script_Extensions: Zyyy},\p{Script_Extensions=Common}โ (8655)\p{Script_Extensions: Zzzz},\p{Script_Extensions=Unknown}โ (954_246 plus all above-Unicode code points)\p{Scx: *},\p{Script_Extensions: *}โ the whole squad, no filter, everybody's invited โจ
and then the list just keeps rolling, still alphabetical, still unbothered ๐:
\p{SD},\p{Soft_Dotted}(=\p{Soft_Dotted=Y}) โ (50)\p{SD: *},\p{Soft_Dotted: *}\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}โ (2643)\p{Sentence_Break: Extend}โ short:\p{SB=EX}โ (2643: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}โ (141_501)\p{Sentence_Break: LF}โ short:\p{SB=LF}โ (1:[\n])\p{Sentence_Break: LO},\p{Sentence_Break=Lower}โ (2548)\p{Sentence_Break: Lower}โ short:\p{SB=LO}โ (2548:[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}โ (785)\p{Sentence_Break: Numeric}โ short:\p{SB=NU}โ (785:[0-9], U+0600..0605, U+0660..0669, U+066B..066C, U+06DD, U+06F0..06F9 ...)\p{Sentence_Break: OLetter}โ short:\p{SB=LE}โ (141_501:U+01BB, U+01C0..01C3, U+0294..0295, U+02B9..02BF, U+02C6..02D1, U+02EC ...)\p{Sentence_Break: Other}โ short:\p{SB=XX}โ (964_163 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)\p{Sentence_Break: Sep}โ short:\p{SB=SE}โ (3:[\x85], U+2028..2029)\p{Sentence_Break: Sp}โ short:\p{SB=Sp}โ (20:[\t\cK\f\x20\xa0], U+1680, U+2000..200A, U+202F, U+205F, U+3000)\p{Sentence_Break: ST},\p{Sentence_Break=STerm}โ (166)\p{Sentence_Break: STerm}โ short:\p{SB=ST}โ (166:[!?], U+0589, U+061D..061F, U+06D4, U+0700..0702, U+07F9 ...)\p{Sentence_Break: UP},\p{Sentence_Break=Upper}โ (1991)\p{Sentence_Break: Upper}โ short:\p{SB=UP}โ (1991:[A-Z\xc0-\xd6\xd8-\xde], U+0100, U+0102, U+0104, U+0106, U+0108 ...)\p{Sentence_Break: XX},\p{Sentence_Break=Other}โ (964_163 plus all above-Unicode code points)\p{Sentence_Terminal},\p{Sentence_Terminal=Y}โ short:\p{STerm}โ (170)\p{Sentence_Terminal: N*}โ short:\p{STerm=N},\P{STerm}โ (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 ...`) โ over a million code points bestie, it's giving "literally everything else" ๐\p{Sentence_Terminal: Y*}โ short:\p{STerm=Y},\p{STerm}โ (170:[!.?], U+0589, U+061D..061F, U+06D4, U+0700..0702, U+07F9 ...)\p{Separator},\p{General_Category=Separator}โ short:\p{Z}โ (19)\p{Sgnw},\p{SignWriting}(=\p{Script_Extensions=SignWriting}) โ (672)\p{Sharada},\p{Script_Extensions=Sharada}โ short:\p{Shrd}; NOT\p{Block=Sharada}โ (119) โ okay the "NOT" is doing a lot of heavy lifting here, don't mix those two up bestie ๐X\p{Sharada_Sup},\p{Sharada_Supplement}(=\p{Block=Sharada_Supplement}) โ (32)X\p{Sharada_Supplement},\p{Block=Sharada_Supplement}โ short:\p{InSharadaSup}โ (32)\p{Shavian},\p{Script_Extensions=Shavian}โ short:\p{Shaw}; NOT\p{Block=Shavian}โ (49)\p{Shaw},\p{Shavian}(=\p{Script_Extensions=Shavian}) โ (NOT\p{Block=Shavian}) โ (49)X\p{Shorthand_Format_Controls},\p{Block=Shorthand_Format_Controls}โ (16)\p{Shrd},\p{Sharada}(=\p{Script_Extensions=Sharada}) โ (NOT\p{Block=Sharada}) โ (119)\p{Sidd},\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{Sidetic},\p{Script_Extensions=Sidetic}โ short:\p{Sidt}; NOT\p{Block=Sidetic}โ (26)\p{Sidt},\p{Sidetic}(=\p{Script_Extensions=Sidetic}) โ (NOT\p{Block=Sidetic}) โ (26)\p{SignWriting},\p{Script_Extensions=SignWriting}โ short:\p{Sgnw}โ (672)\p{Sind},\p{Khudawadi}(=\p{Script_Extensions=Khudawadi}) โ (NOT\p{Block=Khudawadi}) โ (81)\p{Sinh},\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},\p{Modifier_Symbol}(=\p{General_Category=Modifier_Symbol}) โ (125)\p{Sm},\p{Math_Symbol}(=\p{General_Category=Math_Symbol}) โ (960)
okay bestie we are still deep in the great big list of \p{} names and this stretch is lowkey iconic โ we go from Small Forms all the way down to New Tai Lue, which means we cleared the entire S section and are speedrunning the T section. no cap, alphabetically we're eating. ๐โโ๏ธ๐จ
- X
\p{Small_Form_Variants}ยท\p{Block=Small_Form_Variants}(short:\p{InSmallForms}) โ 32 - X
\p{Small_Forms}ยท\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}) โ 7468\p{Soft_Dotted}ยท\p{Soft_Dotted=Y}(short:\p{SD}) โ 50
bestie the next one is a whole โจsituationโจ โ it's got a wild character class in it and honestly it ate, so here it is in its own little box:
\p{Soft_Dotted: N*}(short:\p{SD=N},\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 ...
and its little sister:
\p{Soft_Dotted: Y*}(short:\p{SD=Y},\p{SD}) โ 50:[i-j],U+012F,U+0249,U+0268,U+029D,U+02B2...
okay now we hit the script zone, and the man page is VERY loud about one thing here, so listen up: these are Script_Extensions deals, and it is not the block, okay?? NOT the block. it says so every single time. iykyk ๐
\p{Sogd}ยท\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}ยท\p{Old_Sogdian}(=\p{Script_Extensions=Old_Sogdian}) (NOT\p{Block=Old_Sogdian}) โ 40\p{Sora}ยท\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}ยท\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}ยท\p{White_Space}(=\p{White_Space=Y}) โ 25\p{Space: *}ยท\p{White_Space: *}\p{Space_Separator}ยท\p{General_Category=Space_Separator}(short:\p{Zs}) โ 17\p{SpacePerl}ยท\p{XPosixSpace}โ 25\p{Spacing_Mark}ยท\p{General_Category=Spacing_Mark}(short:\p{Mc}) โ 471
and we keep rolling, bestie, because the blocks are back and they brought their whole extended family ๐ฆ
- X
\p{Spacing_Modifier_Letters}ยท\p{Block=Spacing_Modifier_Letters}(short:\p{InModifierLetters}) โ 80 - X
\p{Specials}ยท\p{Block=Specials}โ 16 \p{STerm}ยท\p{Sentence_Terminal}(=\p{Sentence_Terminal=Y}) โ 170\p{STerm: *}ยท\p{Sentence_Terminal: *}\p{Sund}ยท\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}ยท\p{Sundanese_Supplement}(=\p{Block=Sundanese_Supplement}) โ 16 - X
\p{Sundanese_Supplement}ยท\p{Block=Sundanese_Supplement}(short:\p{InSundaneseSup}) โ 16 \p{Sunu}ยท\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}ยท\p{Supplemental_Arrows_A}(=\p{Block=Supplemental_Arrows_A}) โ 16 - X
\p{Sup_Arrows_B}ยท\p{Supplemental_Arrows_B}(=\p{Block=Supplemental_Arrows_B}) โ 128 - X
\p{Sup_Arrows_C}ยท\p{Supplemental_Arrows_C}(=\p{Block=Supplemental_Arrows_C}) โ 256 - X
\p{Sup_Math_Operators}ยท\p{Supplemental_Mathematical_Operators}(=\p{Block=Supplemental_Mathematical_Operators}) โ 256 - X
\p{Sup_PUA_A}ยท\p{Supplementary_Private_Use_Area_A}(=\p{Block=Supplementary_Private_Use_Area_A}) โ 65_536 - X
\p{Sup_PUA_B}ยท\p{Supplementary_Private_Use_Area_B}(=\p{Block=Supplementary_Private_Use_Area_B}) โ 65_536 - X
\p{Sup_Punctuation}ยท\p{Supplemental_Punctuation}(=\p{Block=Supplemental_Punctuation}) โ 128 - X
\p{Sup_Symbols_And_Pictographs}ยท\p{Supplemental_Symbols_And_Pictographs}(=\p{Block=Supplemental_Symbols_And_Pictographs}) โ 256 - X
\p{Super_And_Sub}ยท\p{Superscripts_And_Subscripts}(=\p{Block=Superscripts_And_Subscripts}) โ 48 - X
\p{Superscripts_And_Subscripts}ยท\p{Block=Superscripts_And_Subscripts}(short:\p{InSuperAndSub}) โ 48
not me realizing the short names for these are basically the long names with the vowels yeeted out ๐ญ \p{InSupArrowsA}, \p{InSupPUAA}โฆ the abbreviations really said "we're doing our best" and honestly? valid.
- 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}ยท\p{General_Category=Surrogate}(short:\p{Cs}) โ 2048- X
\p{Sutton_SignWriting}ยท\p{Block=Sutton_SignWriting}โ 688 \p{Sylo}ยท\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\p{Symbol}ยท\p{General_Category=Symbol}(short:\p{S}) โ 8617- X
\p{Symbols_And_Pictographs_Ext_A}ยท\p{Symbols_And_Pictographs_Extended_A}(=\p{Block=Symbols_And_Pictographs_Extended_A}) โ 144 - X
\p{Symbols_And_Pictographs_Extended_A}ยท\p{Block=Symbols_And_Pictographs_Extended_A}โ 144 - X
\p{Symbols_For_Legacy_Computing}ยท\p{Block=Symbols_For_Legacy_Computing}โ 256 - X
\p{Symbols_For_Legacy_Computing_Sup}ยท\p{Symbols_For_Legacy_Computing_-Supplement}(=\p{Block=Symbols_For_Legacy_Computing_-Supplement}) โ 704 - X
\p{Symbols_For_Legacy_Computing_Supplement}ยท\p{Block=Symbols_For_Legacy_Computing_Supplement}(short:\p{InSymbolsForLegacyComputingSup}) โ 704
heads up bestie: that-\in\p{Symbols_For_Legacy_Computing_-Supplement}is literally in the page, exactly like that. do not come for me, i copied it character for character ๐
\p{Syrc}ยท\p{Syriac}(=\p{Script_Extensions=Syriac}) (NOT\p{Block=Syriac}) โ 119\p{Syriac}ยท\p{Script_Extensions=Syriac}(short:\p{Syrc}; NOT\p{Block=Syriac}) โ 119- X
\p{Syriac_Sup}ยท\p{Syriac_Supplement}(=\p{Block=Syriac_Supplement}) โ 16 - X
\p{Syriac_Supplement}ยท\p{Block=Syriac_Supplement}(short:\p{InSyriacSup}) โ 16 \p{Tagalog}ยท\p{Script_Extensions=Tagalog}(short:\p{Tglg}; NOT\p{Block=Tagalog}) โ 25\p{Tagb}ยท\p{Tagbanwa}(=\p{Script_Extensions=Tagbanwa}) (NOT\p{Block=Tagbanwa}) โ 20\p{Tagbanwa}ยท\p{Script_Extensions=Tagbanwa}(short:\p{Tagb}; NOT\p{Block=Tagbanwa}) โ 20- X
\p{Tags}ยท\p{Block=Tags}โ 128 \p{Tai_Le}ยท\p{Script_Extensions=Tai_Le}(short:\p{Tale}; NOT\p{Block=Tai_Le}) โ 50\p{Tai_Tham}ยท\p{Script_Extensions=Tai_Tham}(short:\p{Lana}; NOT\p{Block=Tai_Tham}) โ 127\p{Tai_Viet}ยท\p{Script_Extensions=Tai_Viet}(short:\p{Tavt}; NOT\p{Block=Tai_Viet}) โ 72- X
\p{Tai_Xuan_Jing}ยท\p{Tai_Xuan_Jing_Symbols}(=\p{Block=Tai_Xuan_Jing_Symbols}) โ 96 - X
\p{Tai_Xuan_Jing_Symbols}ยท\p{Block=Tai_Xuan_Jing_Symbols}(short:\p{InTaiXuanJing}) โ 96 \p{Tai_Yo}ยท\p{Script_Extensions=Tai_Yo}(short:\p{Tayo}; NOT\p{Block=Tai_Yo}) โ 55\p{Takr}ยท\p{Takri}(=\p{Script_Extensions=Takri}) (NOT\p{Block=Takri}) โ 80\p{Takri}ยท\p{Script_Extensions=Takri}(short:\p{Takr}; NOT\p{Block=Takri}) โ 80\p{Tale}ยท\p{Tai_Le}(=\p{Script_Extensions=Tai_Le}) (NOT\p{Block=Tai_Le}) โ 50\p{Talu}ยท\p{New_Tai_Lue}(=\p{Script_Extensions=New_Tai_Lue}) (NOT\p{Block=New_Tai_Lue}) โ 83
and yeah, that's the vibe for this chunk โ we are so close to the end of the T names, bestie, don't you dare close the terminal now ๐๐
okay we're deep in the T's now and rolling straight into U and V โ alphabet's almost done, stay with me bestie ๐
(the ones with an X up front just keep the X, and everything in the trailing ( ) is the count / sample list, don't skip it ๐)
- X
\p{Tamil_Sup}โ\p{Tamil_Supplement}(=\p{Block=Tamil_Supplement}) (64) - X
\p{Tamil_Supplement}โ\p{Block=Tamil_Supplement}(Short:\p{InTamilSup}) (64) \p{Taml}โ\p{Tamil}(=\p{Script_Extensions=Tamil}) (NOT\p{Block=Tamil}) (133)\p{Tang}โ\p{Tangut}(=\p{Script_Extensions=Tangut}) (NOT\p{Block=Tangut}) (7076)\p{Tangsa}โ\p{Script_Extensions=Tangsa}(Short:\p{Tnsa}; NOT\p{Block=Tangsa}) (89)\p{Tangut}โ\p{Script_Extensions=Tangut}(Short:\p{Tang}; NOT\p{Block=Tangut}) (7076) โ okay 7076?? she's big big, we love a maximalist ๐- X
\p{Tangut_Components}โ\p{Block=Tangut_Components}(768) - X
\p{Tangut_Components_Sup}โ\p{Tangut_Components_Supplement}(=\p{Block=Tangut_Components_Supplement}) (128) - X
\p{Tangut_Components_Supplement}โ\p{Block=Tangut_Components_Supplement}(Short:\p{InTangutComponentsSup}) (128) - X
\p{Tangut_Sup}โ\p{Tangut_Supplement}(=\p{Block=Tangut_Supplement}) (128) - X
\p{Tangut_Supplement}โ\p{Block=Tangut_Supplement}(Short:\p{InTangutSup}) (128) \p{Tavt}โ\p{Tai_Viet}(=\p{Script_Extensions=Tai_Viet}) (NOT\p{Block=Tai_Viet}) (72)\p{Tayo}โ\p{Tai_Yo}(=\p{Script_Extensions=Tai_Yo}) (NOT\p{Block=Tai_Yo}) (55)\p{Telu}โ\p{Telugu}(=\p{Script_Extensions=Telugu}) (NOT\p{Block=Telugu}) (110)\p{Telugu}โ\p{Script_Extensions=Telugu}(Short:\p{Telu}; NOT\p{Block=Telugu}) (110)\p{Term}โ\p{Terminal_Punctuation}(=\p{Terminal_Punctuation=Y}) (291)\p{Term: *}โ\p{Terminal_Punctuation: *}\p{Terminal_Punctuation}โ\p{Terminal_Punctuation=Y}(Short:\p{Term}) (291)\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 ...)
\p{Terminal_Punctuation: Y*}โ (Short:\p{Term=Y},\p{Term}) (291: [!,.:;?], U+037E, U+0387, U+0589, U+05C3, U+060C ...)\p{Tfng}โ\p{Tifinagh}(=\p{Script_Extensions=Tifinagh}) (NOT\p{Block=Tifinagh}) (66)\p{Tglg}โ\p{Tagalog}(=\p{Script_Extensions=Tagalog}) (NOT\p{Block=Tagalog}) (25)\p{Thaa}โ\p{Thaana}(=\p{Script_Extensions=Thaana}) (NOT\p{Block=Thaana}) (66)\p{Thaana}โ\p{Script_Extensions=Thaana}(Short:\p{Thaa}; NOT\p{Block=Thaana}) (66)\p{Thai}โ\p{Script_Extensions=Thai}(NOT\p{Block=Thai}) (90)\p{Tibetan}โ\p{Script_Extensions=Tibetan}(Short:\p{Tibt}; NOT\p{Block=Tibetan}) (211)\p{Tibt}โ\p{Tibetan}(=\p{Script_Extensions=Tibetan}) (NOT\p{Block=Tibetan}) (211)\p{Tifinagh}โ\p{Script_Extensions=Tifinagh}(Short:\p{Tfng}; NOT\p{Block=Tifinagh}) (66)\p{Tirh}โ\p{Tirhuta}(=\p{Script_Extensions=Tirhuta}) (NOT\p{Block=Tirhuta}) (99)\p{Tirhuta}โ\p{Script_Extensions=Tirhuta}(Short:\p{Tirh}; NOT\p{Block=Tirhuta}) (99)\p{Title}โ\p{Titlecase}(/i= Cased=Yes) (31)\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 ...)\p{Titlecase_Letter}โ\p{General_Category=Titlecase_Letter}(Short:\p{Lt}; /i= General_Category=Cased_Letter) (31)\p{Tnsa}โ\p{Tangsa}(=\p{Script_Extensions=Tangsa}) (NOT\p{Block=Tangsa}) (89)
\p{Todhri}โ\p{Script_Extensions=Todhri}(Short:\p{Todr}; NOT\p{Block=Todhri}) (58)\p{Todr}โ\p{Todhri}(=\p{Script_Extensions=Todhri}) (NOT\p{Block=Todhri}) (58)\p{Tolong_Siki}โ\p{Script_Extensions=Tolong_Siki}(Short:\p{Tols}; NOT\p{Block=Tolong_Siki}) (54)\p{Tols}โ\p{Tolong_Siki}(=\p{Script_Extensions=Tolong_Siki}) (NOT\p{Block=Tolong_Siki}) (54)\p{Toto}โ\p{Script_Extensions=Toto}(NOT\p{Block=Toto}) (32)- X
\p{Transport_And_Map}โ\p{Transport_And_Map_Symbols}(=\p{Block=Transport_And_Map_Symbols}) (128) - X
\p{Transport_And_Map_Symbols}โ\p{Block=Transport_And_Map_Symbols}(Short:\p{InTransportAndMap}) (128) \p{Tulu_Tigalari}โ\p{Script_Extensions=Tulu_Tigalari}(Short:\p{Tutg}; NOT\p{Block=Tulu_Tigalari}) (99)\p{Tutg}โ\p{Tulu_Tigalari}(=\p{Script_Extensions=Tulu_Tigalari}) (NOT\p{Block=Tulu_Tigalari}) (99)- X
\p{UCAS}โ\p{Unified_Canadian_Aboriginal_Syllabics}(=\p{Block=Unified_Canadian_Aboriginal_Syllabics}) (640) - X
\p{UCAS_Ext}โ\p{Unified_Canadian_Aboriginal_Syllabics_Extended}(=\p{Block=Unified_Canadian_Aboriginal_Syllabics_Extended}) (80) - X
\p{UCAS_Ext_A}โ\p{Unified_Canadian_Aboriginal_Syllabics_Extended_A}(=\p{Block=Unified_Canadian_Aboriginal_Syllabics_Extended_A}) (16) \p{Ugar}โ\p{Ugaritic}(=\p{Script_Extensions=Ugaritic}) (NOT\p{Block=Ugaritic}) (31)\p{Ugaritic}โ\p{Script_Extensions=Ugaritic}(Short:\p{Ugar}; NOT\p{Block=Ugaritic}) (31)\p{UIdeo}โ\p{Unified_Ideograph}(=\p{Unified_Ideograph=Y}) (101_996) โ six digits bestie, she's crowded, iconic ๐ซถ\p{UIdeo: *}โ\p{Unified_Ideograph: *}\p{Unassigned}โ\p{General_Category=Unassigned}(Short:\p{Cn}) (814_730 plus all above-Unicode code points)\p{Unicode}โ\p{Any}(1_114_112)- X
\p{Unified_Canadian_Aboriginal_Syllabics}โ\p{Block=Unified_Canadian_Aboriginal_Syllabics}(Short:\p{InUCAS}) (640) - X
\p{Unified_Canadian_Aboriginal_Syllabics_Extended}โ\p{Block=Unified_Canadian_Aboriginal_Syllabics_Extended}(Short:\p{InUCASExt}) (80) - X
\p{Unified_Canadian_Aboriginal_Syllabics_Extended_A}โ\p{Block=Unified_Canadian_Aboriginal_Syllabics_Extended_A}(Short:\p{InUCASExtA}) (16) \p{Unified_Ideograph}โ\p{Unified_Ideograph=Y}(Short:\p{UIdeo}) (101_996)\p{Unified_Ideograph: N*}โ (Short:\p{UIdeo=N},\P{UIdeo})
(1_012_116 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*}โ (Short:\p{UIdeo=Y},\p{UIdeo})
(101_996: U+3400..4DBF, U+4E00..9FFF, U+FA0E..FA0F, U+FA11, U+FA13..FA14, U+FA1F ...)
\p{Unknown}โ\p{Script_Extensions=Unknown}(Short:\p{Zzzz}) (954_246 plus all above-Unicode code points)\p{Upper}โ\p{XPosixUpper}(=\p{Uppercase=Y}) (/i= Cased=Yes) (2006)\p{Upper: *}โ\p{Uppercase: *}\p{Uppercase}โ\p{XPosixUpper}(=\p{Uppercase=Y}) (/i= Cased=Yes) (2006)\p{Uppercase: N*}โ (Short:\p{Upper=N},\P{Upper}; /i= Cased=No)
(1_112_106 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 ...)
\p{Uppercase: Y*}โ (Short:\p{Upper=Y},\p{Upper}; /i= Cased=Yes)
(2006: [A-Z\xc0-\xd6\xd8-\xde], U+0100, U+0102, U+0104, U+0106, U+0108 ...)
\p{Uppercase_Letter}โ\p{General_Category=Uppercase_Letter}(Short:\p{Lu}; /i= General_Category=Cased_Letter) (1886)\p{Vai}โ\p{Script_Extensions=Vai}(NOT\p{Block=Vai}) (300)\p{Vaii}โ\p{Vai}(=\p{Script_Extensions=Vai}) (NOT\p{Block=Vai}) (300)\p{Variation_Selector}โ\p{Variation_Selector=Y}(Short:\p{VS}; NOT\p{Variation_Selectors}) (260)\p{Variation_Selector: N*}โ (Short:\p{VS=N},\P{VS})
(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}) (260: U+180B..180D, U+180F, U+FE00..FE0F, U+E0100..E01EF)
bestie notice how theN*ones keep ending ininfinityor "plus all above-Unicode code points" โ that's not a typo, that's the whole range past the end of Unicode, so copy it exactly ๐ญ no cap.
and that's a wrap on V ๐ โ still going, don't go anywhere
okay continuing, bestie โ we're still deep in the property list and nothing gets left behind ๐ not one alias, not one code point range, not one NOT, periodt. buckle up:
\p{Variation_Selectors}โ long form is\p{Block=Variation_Selectors}(Short:\p{InVS}) โ 16. Also, this one's flagged with anXin the table.\p{Variation_Selectors_Supplement}โ long form\p{Block=Variation_Selectors_Supplement}(Short:\p{InVSSup}) โ 240. AlsoX-flagged.\p{Vedic_Ext}โ same thing as\p{Vedic_Extensions}(which is\p{Block=Vedic_Extensions}) โ 48.X-flagged too.\p{Vedic_Extensions}โ long form\p{Block=Vedic_Extensions}(Short:\p{InVedicExt}) โ 48. Yep,X-flagged.\p{Vertical_Forms}โ long form\p{Block=Vertical_Forms}โ 16.X-flagged, last one in this little cluster ๐\p{Vertical_Orientation: R}โ same as\p{Vertical_Orientation=Rotated}โ 782_413 plus all above-Unicode code points.\p{Vertical_Orientation: Rotated}(Short:\p{Vo=R}) โ 782_413 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}โ equals\p{Vertical_Orientation=Transformed_Rotated}โ 51.\p{Vertical_Orientation: Transformed_Rotated}(Short:\p{Vo=Tr}) โ 51:U+2018..2019, U+201C..201D, U+2329..232A, U+3008..3011, U+3014..301F, U+3030 ...\p{Vertical_Orientation: Transformed_Upright}(Short:\p{Vo=Tu}) โ 162:U+3001..3002, U+3041, U+3043, U+3045, U+3047, U+3049 ...\p{Vertical_Orientation: Tu}โ equals\p{Vertical_Orientation=Transformed_Upright}โ 162.\p{Vertical_Orientation: U}โ equals\p{Vertical_Orientation=Upright}โ 331_486.\p{Vertical_Orientation: Upright}(Short:\p{Vo=U}) โ 331_486:[\xa7\xa9\xae\xb1\xbc-\xbe\xd7\xf7], U+02EA..02EB, U+1100..11FF, U+1401..167F, U+18B0..18FF, U+2016 ...\p{VertSpace}โ same as\vโ 7:[\n\cK\f\r\x85], U+2028..2029\p{Vith}โ that's\p{Vithkuqi}(=\p{Script_Extensions=Vithkuqi}) โ 70, and โ ๏ธ NOT\p{Block=Vithkuqi}.\p{Vithkuqi}โ\p{Script_Extensions=Vithkuqi}(Short:\p{Vith}) โ 70, and again โ ๏ธ NOT\p{Block=Vithkuqi}.\p{Vo: *}โ equals\p{Vertical_Orientation: *}\p{VS}โ that's\p{Variation_Selector}(=\p{Variation_Selector=Y}) โ 260, and ๐จ NOT\p{Variation_Selectors}(plural, bestie, they are different things).\p{VS: *}โ equals\p{Variation_Selector: *}\p{VS_Sup}โ that's\p{Variation_Selectors_Supplement}(=\p{Block=Variation_Selectors_Supplement}) โ 240.X-flagged.\p{Wancho}โ\p{Script_Extensions=Wancho}(Short:\p{Wcho}) โ 59, โ ๏ธ NOT\p{Block=Wancho}.\p{Wara}โ that's\p{Warang_Citi}(=\p{Script_Extensions=Warang_Citi}) โ 84, โ ๏ธ NOT\p{Block=Warang_Citi}.\p{Warang_Citi}โ\p{Script_Extensions=Warang_Citi}(Short:\p{Wara}) โ 84, โ ๏ธ NOT\p{Block=Warang_Citi}.\p{WB: *}โ equals\p{Word_Break: *}\p{Wcho}โ that's\p{Wancho}(=\p{Script_Extensions=Wancho}) โ 59, โ ๏ธ NOT\p{Block=Wancho}.\p{White_Space}โ\p{White_Space=Y}(Short:\p{Space}) โ 25\p{White_Space: N*}(Short:\p{Space=N},\P{Space}) โ 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}) โ 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}โ 149_366
now entering Word_Break territory, bestie, it's a whole โจeraโจ of the alphabet:
\p{Word_Break: ALetter}(Short:\p{WB=LE}) โ 33_973:[A-Za-z\xaa\xb5\xb8\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}) โ 1:[\r]\p{Word_Break: Double_Quote}(Short:\p{WB=DQ}) โ 1:[\"]\p{Word_Break: DQ}โ equals\p{Word_Break=Double_Quote}โ 1\p{Word_Break: E_Base}(Short:\p{WB=EB}) โ 0\p{Word_Break: E_Base_GAZ}(Short:\p{WB=EBG}) โ 0\p{Word_Break: E_Modifier}(Short:\p{WB=EM}) โ 0\p{Word_Break: EB}โ equals\p{Word_Break=E_Base}โ 0\p{Word_Break: EBG}โ equals\p{Word_Break=E_Base_GAZ}โ 0\p{Word_Break: EM}โ equals\p{Word_Break=E_Modifier}โ 0\p{Word_Break: EX}โ equals\p{Word_Break=ExtendNumLet}โ 11\p{Word_Break: Extend}(Short:\p{WB=Extend}) โ 2647: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}) โ 11:[_], U+202F, U+203F..2040, U+2054, U+FE33..FE34, U+FE4D..FE4F ...\p{Word_Break: FO}โ equals\p{Word_Break=Format}โ 58\p{Word_Break: Format}(Short:\p{WB=FO}) โ 58:[\xad], U+061C, U+180E, U+200E..200F, U+202A..202E, U+2060..2064 ...\p{Word_Break: GAZ}โ equals\p{Word_Break=Glue_After_Zwj}โ 0\p{Word_Break: Glue_After_Zwj}(Short:\p{WB=GAZ}) โ 0\p{Word_Break: Hebrew_Letter}(Short:\p{WB=HL}) โ 75:U+05D0..05EA, U+05EF..05F2, U+FB1D, U+FB1F..FB28, U+FB2A..FB36, U+FB38..FB3C ...\p{Word_Break: HL}โ equals\p{Word_Break=Hebrew_Letter}โ 75\p{Word_Break: KA}โ equals\p{Word_Break=Katakana}โ 331\p{Word_Break: Katakana}(Short:\p{WB=KA}) โ 331:U+3031..3035, U+309B..309C, U+30A0..30FA, U+30FC..30FF, U+31F0..31FF, U+32D0..32FE ...\p{Word_Break: LE}โ equals\p{Word_Break=ALetter}โ 33_973\p{Word_Break: LF}(Short:\p{WB=LF}) โ 1:[\n]\p{Word_Break: MB}โ equals\p{Word_Break=MidNumLet}โ 7\p{Word_Break: MidLetter}(Short:\p{WB=ML}) โ 9:[:\xb7], U+0387, U+055F, U+05F4, U+2027, U+FE13 ...\p{Word_Break: MidNum}(Short:\p{WB=MN}) โ 13:[,;], U+037E, U+0589, U+060C..060D, U+066C, U+07F8 ...\p{Word_Break: MidNumLet}(Short:\p{WB=MB}) โ 7:[.], U+2018..2019, U+2024, U+FE52, U+FF07, U+FF0E\p{Word_Break: ML}โ equals\p{Word_Break=MidLetter}โ 9\p{Word_Break: MN}โ equals\p{Word_Break=MidNum}โ 13\p{Word_Break: Newline}(Short:\p{WB=NL}) โ 5:[\cK\f\x85], U+2028..2029\p{Word_Break: NL}โ equals\p{Word_Break=Newline}โ 5\p{Word_Break: NU}โ equals\p{Word_Break=Numeric}โ 784\p{Word_Break: Numeric}(Short:\p{WB=NU}) โ 784:[0-9], U+0600..0605, U+0660..0669, U+066B, U+06DD, U+06F0..06F9 ...\p{Word_Break: Other}(Short:\p{WB=XX}) โ 1_076_154 plus all above-Unicode code points:[^\n\cK\f\r\x20\"\',.0-9:;A-Z_a-z\x85\xaa\xad\xb5\xb7-\xb8\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}) โ 26:U+1F1E6..1F1FF\p{Word_Break: RI}โ equals\p{Word_Break=Regional_Indicator}โ 26\p{Word_Break: Single_Quote}(Short:\p{WB=SQ}) โ 1:[\']\p{Word_Break: SQ}โ equals\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}โ equals\p{Word_Break=Other}โ 1_076_154 plus all above-Unicode code points\p{Word_Break: ZWJ}(Short:\p{WB=ZWJ}) โ 1:U+200D\p{WSpace}โ that's\p{White_Space}(=\p{White_Space=Y}) โ 25\p{WSpace: *}โ equals\p{White_Space: *}\p{XDigit}โ that's\p{XPosixXDigit}(=\p{Hex_Digit=Y}) โ 44\p{XID_Continue}โ\p{XID_Continue=Y}(Short:\p{XIDC}) โ 149_221\p{XID_Continue: N*}(Short:\p{XIDC=N},\P{XIDC}) โ 964_891 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}) โ 149_221:[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}) โ 145_893\p{XID_Start: N*}(Short:\p{XIDS=N},\P{XIDS}) โ 968_219 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}) โ 145_893:[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}โ that's\p{XID_Continue}(=\p{XID_Continue=Y}) โ 149_221\p{XIDC: *}โ equals\p{XID_Continue: *}\p{XIDS}โ that's\p{XID_Start}(=\p{XID_Start=Y}) โ 145_893\p{XIDS: *}โ equals\p{XID_Start: *}\p{Xpeo}โ that's\p{Old_Persian}(=\p{Script_Extensions=โฆand the line runs right off the edge of this part, bestie ๐ซถ
okay bestie we are STILL in the big property table โ we're down at the X's and Y's, which means we're almost at the end of the alphabet and honestly that's finale energy ๐ same deal as every line before: property name on the left, what it actually resolves to on the right, count in the cute little parens.
...Old_Persian})โ (NOT\p{Block=Old_Persian}) (50) โจ this is literally just the tail end of theOld_Persianentry wrapping over from the previous part, don't panic\p{XPerlSpace}โ\p{XPosixSpace}(25)\p{XPosixAlnum}โ Alphabetic and (decimal) Numeric (Short:\p{Alnum}) (148_191:[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}) (147_421)\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}) (770)\p{XPosixGraph}โ Characters that are graphical (Short:\p{Graph}) (297_250:[!\"#\$\%&\'\(\)*+,\-.\/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) (2595)\p{XPosixPrint}โ Characters that are graphical plus space characters (but no controls) (Short:\p{Print}) (297_267:[\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}(865:[!\"#\$\%&\'\(\)*+,\-.\/:;<=>?\@\[\\\]\^_`\{\|\}~\xa1\xa7\xab\xb6-\xb7\xbb\xbf],U+037E,U+0387,U+055A..055F,U+0589..058A,U+05BE...)\p{XPosixSpace}โ\sincluding 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) (2006)\p{XPosixWord}โ\w, including beyond ASCII; =\p{Alnum}+\pM+\p{Pc}+\p{Join_Control}(Short:\p{Word}) (149_366:[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}) (586)\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}) (8655)\p{Zzzz}โ\p{Unknown}(=\p{Script_Extensions=Unknown}) (954_246 plus all above-Unicode code points)
that X sitting at the front of some of those lines is the marker column, same as it was for the rest of this table ๐ซถ it's not part of the property name, don't type it, bestie.
๐ Legal \p{} and \P{} constructs that match no characters
Not every "legal" thing actually pulls up a match, and Unicode is messy like that ๐ Some property-value pairs currently don't match anything at all. It generally happens for one of two reasons: either they're obsolete, or they exist purely for symmetry with other forms and, like, no language has been encoded yet that uses them. It's giving placeholder energy fr fr. In this version of Unicode, the following match zero code points:
\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}
So if you write one of those and get nothing back, that's not you being bad at regex, that's Unicode being Unicode ๐
๐ง Properties accessible through Unicode::UCD
Want the value of any Unicode (that's not including Perl extensions) character property mentioned above, for any single code point? Bestie, it's all sitting right there:
charprop()inUnicode::UCDgives you that value for a single code point โจcharprops_all()inUnicode::UCDreturns the values of all the Unicode properties for a given code point ๐
And it doesn't stop there:
- Besides those, all the Unicode character properties mentioned above โ except the ones marked as for internal use by Perl โ are also reachable through
prop_invlist()inUnicode::UCD. - Due to their nature, not all Unicode character properties are suitable for regular expression matches, nor for
prop_invlist(). The remaining non-provisional, non-internal ones are accessible viaprop_invmap()inUnicode::UCDโ except for the ones this particular Perl installation hasn't included. (Scroll down, it tells you which 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 some Perl extensions and the Unicode properties, and every single one of them is silently resolved in favor of the official Unicode property. Silent. No warning, no note, nothing ๐ญ To avoid surprises, you should only use
prop_invmap()for forms listed in the table below, which omits the non-recommended ones. The affected forms are the Perl single form equivalents of Unicode properties โ like\p{sc}being a single-form equivalent of\p{gc=sc}, whichprop_invmap()treats as the"Script"property, whose short name is"sc". The table calls out the current ambiguities in the INFO column, and they start with the word"NOT". - The standard Unicode properties listed below are documented in
<http://www.unicode.org/reports/tr44/>;Perl_Decimal_Digitis documented inprop_invmap()inUnicode::UCD. The other Perl extensions live in"Other Properties"in perlunicode. - Real talk about how to read the table coming up: the first column is a name for the property; the second column is an alternative name, if any, plus possibly some annotations. That alternative name is the property's full name โ unless that would just repeat the first column, in which case the second column tells you the property's short name (if it's different). The annotations only appear in the entry for the full name. For binary properties, the annotations include a list of the first few ranges that the property matches. And to avoid any ambiguity, the SPACE character is written as
\x20๐ซถ - If a property is obsolete, etc, the entry gets flagged with the same characters used in the table in the section above, like
DorS. ๐ฉ
And here's the literal header of that table, bestie โ the actual rows are where we're headed next:
NAME INFO
Ageโ which Unicode version a code point showed up in โจ (the property itself, not an alias)AHexโ literally justASCII_Hex_Digit, same thing bestie ๐Allโ (Perl extension). Every code point that exists, even the ones past Unicode's edges. Same asqr/./s. Range isU+0000..infinity๐AlnumโXPosixAlnum. (Perl extension) ๐AlphaโAlphabetic, just shorter ๐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 the Unicode code points.U+0000..10FFFF๐ฆASCIIโBlock=Basic_Latin. (Perl extension).[\x00-\x7f]โ the og 128, iconic ๐ASCII_Hex_Digit(Short:AHex) โ[0-9A-Fa-f]โญAssignedโ (Perl extension). Every code point that's actually been assigned to something.U+0000..0377,U+037A..037F,U+0384..038A,U+038C,U+038E..03A1,U+03A3..052F...BcโBidi_Class, shortie version ๐ธBidi_CโBidi_ControlBidi_Class(Short:bc) โ the bidi class property ๐Bidi_Control(Short:Bidi_C) โU+061C,U+200E..200F,U+202A..202E,U+2066..2069Bidi_MโBidi_MirroredBidi_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) โ yes the short form isbmg๐Bidi_Paired_Bracket(Short:bpb)Bidi_Paired_Bracket_Type(Short:bpt)BlankโXPosixBlank. (Perl extension) ๐ซถBlkโBlockBlock(Short:blk)BmgโBidi_Mirroring_GlyphBpbโBidi_Paired_BracketBptโBidi_Paired_Bracket_TypeCanonical_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+0296..02B8,U+02C0..02C1...CategoryโGeneral_CategoryCccโCanonical_Combining_ClassCEโComposition_ExclusionCfโCase_Foldingโ and NOT thecfthat meansGeneral_Category=Format, okay?? don't get it twisted ๐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โCase_IgnorableCjkMandarinโkMandarinCjkTotalStrokesโkTotalStrokesCjkUnihanCore2020โkUnihanCore2020CntrlโXPosixCntrl(which is=General_Category=Control). (Perl extension)Comp_ExโFull_Composition_ExclusionComposition_Exclusion(Short:CE) โU+0958..095F,U+09DC..09DD,U+09DF,U+0A33,U+0A36,U+0A59..0A5B...CWCFโChanges_When_CasefoldedCWCMโChanges_When_CasemappedCWKCFโChanges_When_NFKC_CasefoldedCWLโChanges_When_LowercasedCWTโChanges_When_TitlecasedCWUโChanges_When_UppercasedDashโ[\-],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โDeprecatedDeprecated(Short:Dep) โU+0149,U+0673,U+0F77,U+0F79,U+17A3..17A4,U+206A..206F...DIโDefault_Ignorable_Code_PointDiaโDiacriticDiacritic(Short:Dia) โ[\^+ "" +\xa8\xaf\xb4\xb7-\xb8],U+02B0..034E,U+0350..0357,U+035D..0362,U+0374..0375,U+037A` ...DigitโXPosixDigit(which is=General_Category=Decimal_Number). (Perl extension)DmโDecomposition_MappingDtโDecomposition_TypeEaโEast_Asian_WidthEast_Asian_Width(Short:ea)EBaseโEmoji_Modifier_BaseECompโEmoji_ComponentEModโEmoji_ModifierEmojiโ[#*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โEmoji_PresentationEqUIdeoโEquivalent_Unified_IdeographEquivalent_Unified_Ideograph(Short:EqUIdeo)ExtโExtenderExtended_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โExtended_PictographicFull_Composition_Exclusion(Short:Comp_Ex) โU+0340..0341,U+0343..0344,U+0374,U+037E,U+0387,U+0958..095F...GcโGeneral_CategoryGCBโGrapheme_Cluster_BreakGeneral_Category(Short:gc)Gr_BaseโGrapheme_BaseGr_ExtโGrapheme_ExtendGraphโXPosixGraph. (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โHex_DigitHex_Digit(Short:Hex) โ[0-9A-Fa-f],U+FF10..FF19,U+FF21..FF26,U+FF41..FF46HorizSpaceโXPosixBlank. (Perl extension)HstโHangul_Syllable_TypeHyphenโ โ ๏ธ heads up, this one carries theDmarker, meaning it's deprecated, so don't build your whole personality around it ๐ โ[\-\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โID_ContinueIdentifier_StatusIdentifier_TypeIdeoโIdeographicIdeographic(Short:Ideo) โU+3006..3007,U+3021..3029,U+3038..303A,U+3400..4DBF,U+4E00..9FFF,U+F900..FA6D...IDSโID_StartIDS_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โIDS_Binary_OperatorIDSTโIDS_Trinary_OperatorIDSUโIDS_Unary_OperatorInโPresent_In. (Perl extension) ๐ซInCBโIndic_Conjunct_BreakIndic_Conjunct_Break(Short:InCB)Indic_Positional_Category(Short:InPC)Indic_Syllabic_Category(Short:InSC)InPCโIndic_Positional_CategoryInSCโIndic_Syllabic_CategoryIscโISO_Commentโ and NOT theiscthat meansGeneral_Category=Other, okay bestie, they are different, iykyk ๐ISO_Comment(Short:isc)JgโJoining_GroupJoin_CโJoin_ControlJoin_Control(Short:Join_C) โU+200C..200DJoining_Group(Short:jg)Joining_Type(Short:jt)
okay bestie we're still going down the big list, zero skips, all the details intact ๐ buckle up, it's a long one but every single name stays.
Jtโ short forJoining_Type?kEH_AltSeqkEH_Cat?kEH_CorekEH_Desc?kEH_Func?kEH_FValkEH_HGkEH_IFAOkEH_JSeshkEH_NoMirrorโ values likeU+13081,U+13084,U+130BB,U+130BDkEH_NoRotateโ values likeU+13021,U+1303F,U+130AD,U+130B7,U+13131,U+131B1โฆ?kEH_UniKkMandarinkTotalStrokeskUnihanCore2020Lbโ short forLine_BreakLcโ short forLowercase_Mapping. And bestie, listen: this is NOTlc, which meansGeneral_Category=Cased_Letter. They are different, do not mix them, I'm begging ๐Line_Break(Short:lb)LOEโ short forLogical_Order_ExceptionLogical_Order_Exception(Short:LOE). Values likeU+0E40..0E44,U+0EC0..0EC4,U+19B5..19B7,U+19BA,U+AAB5..AAB6,U+AAB9โฆLowerโ short forLowercaseLowercase(Short:Lower).[a-z\xaa\xb5\xba\xdf-\xf6\xf8-\xff],U+0101,U+0103,U+0105,U+0107,U+0109โฆLowercase_Mapping(Short:lc)Mathโ[+<=>\^\|~\xac\xb1\xd7\xf7],U+03D0..03D2,U+03D5,U+03F0..03F1,U+03F4..03F6,U+0606..0608โฆMCMโ short forModifier_Combining_MarkModifier_Combining_Mark(Short:MCM).U+0654..0655,U+0658,U+06DC,U+06E3,U+06E7..06E8,U+08CA..08CBโฆNaโ short forNameNa1โ short forUnicode_1_NameName(Short:na)Name_AliasNCharโ short forNoncharacter_Code_PointNFC_QCโ short forNFC_Quick_CheckNFC_Quick_Check(Short:NFC_QC)NFD_QCโ short forNFD_Quick_CheckNFD_Quick_Check(Short:NFD_QC)NFKC_Casefold(Short:NFKC_CF)NFKC_CFโ short forNFKC_CasefoldNFKC_QCโ short forNFKC_Quick_CheckNFKC_Quick_Check(Short:NFKC_QC)NFKC_SCFโ short forNFKC_Simple_CasefoldNFKC_Simple_Casefold(Short:NFKC_SCF)NFKD_QCโ short forNFKD_Quick_CheckNFKD_Quick_Check(Short:NFKD_QC)Noncharacter_Code_Point(Short:NChar).U+FDD0..FDEF,U+FFFE..FFFF,U+1FFFE..1FFFF,U+2FFFE..2FFFF,U+3FFFE..3FFFF,U+4FFFE..4FFFFโฆNtโ short forNumeric_TypeNumeric_Type(Short:nt)Numeric_Value(Short:nv)Nvโ short forNumeric_ValuePat_Synโ short forPattern_SyntaxPat_WSโ short forPattern_White_SpacePattern_Syntax(Short:Pat_Syn).[!\"#\$\%&\'\(\)*+,\-\.\/:;<=>?\@\[\\\]\^`\{\|\}~\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:Pat_WS).[\t\n\cK\f\r\x20\x85],U+200E..200F,U+2028..2029PCMโ short forPrepended_Concatenation_MarkPerl_Decimal_Digitโ (Perl extension)PerlSpaceโPosixSpace. (Perl extension)PerlWordโPosixWord. (Perl extension)PosixAlnumโ (Perl extension).[0-9A-Za-z]PosixAlphaโ (Perl extension).[A-Za-z]PosixBlankโ (Perl extension).[\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,VTPosixDigitโ (Perl extension).[0-9]PosixGraphโ (Perl extension).[!\"#\$\%&\'\(\)*+,\-\.\/0-9:;<=>?\@A-Z\[\\\]\^_`a-z\{\|\}~]PosixLowerโ (Perl extension).[a-z]PosixPrintโ (Perl extension).[\x20-\x7e]PosixPunctโ (Perl extension).[!\"#\$\%&\'\(\)*+,\-\.\/:;<=>?\@\[\\\]\^_`\{\|\}~]PosixSpaceโ (Perl extension).[\t\n\cK\f\r\x20]PosixUpperโ (Perl extension).[A-Z]PosixWordโ (Perl extension).\w, restricted to ASCII.[0-9A-Z_a-z]PosixXDigitโASCII_Hex_Digit. (Perl extension).[0-9A-Fa-f]Prepended_Concatenation_Mark(Short:PCM).U+0600..0605,U+06DD,U+070F,U+0890..0891,U+08E2,U+110BDโฆPresent_In(Short:In). (Perl extension)PrintโXPosixPrint. (Perl extension)PunctโGeneral_Category=Punctuation. (Perl extension).[!\"#\%&\'\(\)*,\-.\/:;?\@\[\\\]_\{\}\xa1\xa7\xab\xb6-\xb7\xbb\xbf],U+037E,U+0387,U+055A..055F,U+0589..058A,U+05BEโฆQMarkโ short forQuotation_MarkQuotation_Mark(Short:QMark).[\"\'\xab\xbb],U+2018..201F,U+2039..203A,U+2E42,U+300C..300F,U+301D..301FโฆRadicalโU+2E80..2E99,U+2E9B..2EF3,U+2F00..2FD5Regional_Indicator(Short:RI).U+1F1E6..1F1FFRIโ short forRegional_IndicatorSBโ short forSentence_BreakScโ short forScript. Once again bestie: NOTsc, becausescmeansGeneral_Category=Currency_Symbol. Two different things, stay sharp ๐Scfโ short forSimple_Case_FoldingScript(Short:sc)Script_Extensions(Short:scx)Scxโ short forScript_ExtensionsSDโ short forSoft_DottedSentence_Break(Short:SB)Sentence_Terminal(Short:STerm).[!.?],U+0589,U+061D..061F,U+06D4,U+0700..0702,U+07F9โฆSfcโ short forSimple_Case_FoldingSimple_Case_Folding(Short:scf)Simple_Lowercase_Mapping(Short:slc)Simple_Titlecase_Mapping(Short:stc)Simple_Uppercase_Mapping(Short:suc)Slcโ short forSimple_Lowercase_MappingSoft_Dotted(Short:SD).[i-j],U+012F,U+0249,U+0268,U+029D,U+02B2โฆSpaceโWhite_SpaceSpacePerlโXPosixSpace. (Perl extension)Stcโ short forSimple_Titlecase_MappingSTermโ short forSentence_TerminalSucโ short forSimple_Uppercase_MappingTcโ short forTitlecase_MappingTermโ short forTerminal_PunctuationTerminal_Punctuation(Short:Term).[!,.:;?],U+037E,U+0387,U+0589,U+05C3,U+060CโฆTitleโTitlecase. (Perl extension)Titlecase(Short:Title). (Perl extension). (= \p{Gc=Lt}).U+01C5,U+01C8,U+01CB,U+01F2,U+1F88..1F8F,U+1F98..1F9FโฆTitlecase_Mapping(Short:tc)Ucโ short forUppercase_MappingUIdeoโ short forUnified_IdeographUnicodeโAny. (Perl extension)Unicode_1_Name(Short:na1)Unified_Ideograph(Short:UIdeo).U+3400..4DBF,U+4E00..9FFF,U+FA0E..FA0F,U+FA11,U+FA13..FA14,U+FA1FโฆUpperโUppercaseUppercase(Short:Upper).[A-Z\xc0-\xd6\xd8-\xde],U+0100,U+0102,U+0104,U+0106,U+0108โฆUppercase_Mapping(Short:uc)Variation_Selector(Short:VS).U+180B..180D,U+180F,U+FE00..FE0F,U+E0100..E01EFVertical_Orientation(Short:vo)VertSpaceโ (Perl extension).\v.[\n\cK\f\r\x85],U+2028..2029Voโ short forVertical_OrientationVSโ short forVariation_SelectorWBโ short forWord_BreakWhite_Space(Short:WSpace).[\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:WB)WSpaceโWhite_SpaceXDigitโXPosixXDigit(=Hex_Digit). (Perl extension)XID_Continue(Short:XIDC).[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:XIDS).[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โ short forXID_ContinueXIDSโ short forXID_StartXPerlSpaceโXPosixSpace. (Perl extension)XPosixAlnum(Short:Alnum). (Perl extension). Alphabetic and (decimal) Numeric.[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).[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:Blank). (Perl extension).\h, Horizontal white space.[\t\x20\xa0],U+1680,U+2000..200A,U+202F,U+205F,U+3000XPosixCntrlโGeneral_Category=Control(Short:Cntrl). (Perl extension). Control characters.[\x00-\x1f\x7f-\x9f]XPosixDigitโGeneral_Category=Decimal_Number(Short:Digit). (Perl extension).[0-9]+ all other decimal digits.[0-9],U+0660..0669,U+06F0..06F9,U+07C0..07C9,U+0966..096F,U+09E6..09EFโฆ
...
XPosixGraph(Short:Graph). (Perl extension). Characters that are graphical.[!\"#\$\%&'\(\)*+,\-.\/0-9:;<=>?\@A-Z\[\\\]\^_`a-z\{\|\}~\xa1-\xff], U+0100..0377, U+037A..037F, U+0384..038A, U+038C, U+038E..03A1 ...XPosixLowerโ Lowercase. (Perl extension).[a-z\xaa\xb5\xba\xdf-\xf6\xf8-\xff], U+0101, U+0103, U+0105, U+0107, U+0109 ...XPosixPrint(Short:Print). (Perl extension). Characters that are graphical plus space characters (but like, no controls bestie, we don't do controls).[\x20-\x7e\xa0-\xff], U+0100..0377, U+037A..037F, U+0384..038A, U+038C, U+038E..03A1 ...XPosixPunct(Perl extension). Literally\p{Punct}+ ASCII-range\p{Symbol}.[!\"#\$\%&'\(\)*+,\-.\/:;<=>?\@\[\\\]\^_{|}~\xa1\xa7\xab\xb6-\xb7\xbb\xbf], U+037E, U+0387, U+055A..055F, U+0589..058A, U+05BE ...`XPosixSpace(Perl extension). It's\sbut โจplusโจ beyond ASCII, and vertical tab too.[\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). That's\w, but going beyond ASCII, and it =\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 of these properties don't even need \p{} โ you can pull them through core function calls instead. Besties, here they are:
Lowercase_Mappingโ that'slc()andlcfirst()Titlecase_Mappingโ that'sucfirst()Uppercase_Mappingโ that'suc()
Also pookie, Case_Folding is reachable through the /i modifier in regular expressions, the \F transliteration escape, and the fc operator. Three roads, one destination ๐
And besides being able to just say \p{Name=...} out loud, the Name and Name_Aliases properties also come through the \N{} interpolation in double-quoted strings and regular expressions; plus the functions charnames::viacode(), charnames::vianame(), and charnames::string_vianame() (which, heads up, require a use charnames (); to be specified).
Finally โ and this is the last one, promise โ most properties related to decomposition are accessible via Unicode::Normalize. ๐ง
๐ซ Unicode character properties that are NOT accepted by Perl
So. Not every Unicode property gets to come to the party. ๐ญ Perl will straight up generate an error for a few character properties in Unicode when you use them in a regular expression. The non-Unihan ones are listed below, with the reasons they aren't accepted, and sometimes with work-arounds. The short names for the properties are listed wrapped 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, bestie. ๐ 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)
These get used by Unicode internally for generating other properties and are not intended to be used stand-alone. It's giving backstage-pass-only energy. ๐
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). Slay with the alternatives instead ๐
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.) Yeah, it's a whole thing. ๐ซถ
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, bestie. 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. Iconic, honestly.
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. (iykyk ๐ญ)
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/>
perlrecharclassperlunicode
And that's a wrap on this whole entire page, bestie!! ๐๐ You made it to the end, which is genuinely main character energy. Keep slaying those properties. โจ
This was perl v5.44.0, dated 2026-10-17, straight from PERLUNIPROPS(1perl). Bye pookie, go write some regexes ๐
๐ฆ๐ธ
๐ฆ where this page comes from
- arch rolling: perl 5.44.0-1 ยท Artistic-1.0-Perl AND GPL-1.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms