PERLUNIPROPS(1perl)

๐Ÿ“ฆ
version 5.44.0 ยท 2 versions
, in arch rolling

๐Ÿ’– 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 values Yes and No are 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 property
  • D means this is deprecated
  • O means this is obsolete
  • S means this is stabilized
  • T means tighter (stricter) name matching applies
  • X means 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_521
  • T \p{Age: 6.1} โ€” same set as \p{Age=V6_1} โ€” 732
  • T \p{Age: 6.2} โ€” same set as \p{Age=V6_2} โ€” literally 1 ๐Ÿ˜ญ
  • \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 Property Present_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 Property Present_In โ€” 2: U+20AC, U+FFFC
  • T \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 Property Present_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 Property Present_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 Property Present_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 Property Present_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 Property Present_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 Property Present_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 Property Present_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 Property Present_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 Property Present_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 Property Present_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 Property Present_In โ€” 1: U+20BA
  • T \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 Property Present_In โ€” 5: U+061C, U+2066..2069
  • T \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 Property Present_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 Property Present_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 Property Present_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 Property Present_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 Property Present_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 Property Present_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 Property Present_In โ€” 1: U+32FF
  • T \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 Property Present_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 Property Present_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 Property Present_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 Property Present_In โ€” 627: U+2FFC..2FFF, U+31EF, U+2EBF0..2EE5D
  • T \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 Property Present_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 Property Present_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_664 plus 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 as qr/./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 ๐Ÿ˜ญ โ€” specifically U+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's 954_481 code 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 are U+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 the NOT \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}; and NOT \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's 1_114_081 plus 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} โ€” 80
  • X \p{Enclosed_Alphanum} = \p{Enclosed_Alphanumerics} (which is \p{Block=Enclosed_Alphanumerics}) โ€” 160
  • X \p{Enclosed_Alphanum_Sup} = \p{Enclosed_Alphanumeric_Supplement} (which is \p{Block=Enclosed_Alphanumeric_Supplement}) โ€” 256
  • X \p{Enclosed_Alphanumeric_Supplement} = \p{Block=Enclosed_Alphanumeric_Supplement} (short: \p{InEnclosedAlphanumSup}) โ€” 256
  • X \p{Enclosed_Alphanumerics} = \p{Block=Enclosed_Alphanumerics} (short: \p{InEnclosedAlphanum}) โ€” 160
  • X \p{Enclosed_CJK} = \p{Enclosed_CJK_Letters_And_Months} (which is \p{Block=Enclosed_CJK_Letters_And_Months}) โ€” 256
  • X \p{Enclosed_CJK_Letters_And_Months} = \p{Block=Enclosed_CJK_Letters_And_Months} (short: \p{InEnclosedCJK}) โ€” 256
  • X \p{Enclosed_Ideographic_Sup} = \p{Enclosed_Ideographic_Supplement} (which is \p{Block=Enclosed_Ideographic_Supplement}) โ€” 256
  • X \p{Enclosed_Ideographic_Supplement} = \p{Block=Enclosed_Ideographic_Supplement} (short: \p{InEnclosedIdeographicSup}) โ€” 256

  • \p{Enclosing_Mark} = \p{General_Category=Enclosing_Mark} (short: \p{Me}) โ€” 13
  • \p{EPres} = \p{Emoji_Presentation} (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}) โ€” 96
  • X \p{Ethiopic_Ext_A} = \p{Ethiopic_Extended_A} (which is \p{Block=Ethiopic_Extended_A}) โ€” 48
  • X \p{Ethiopic_Ext_B} = \p{Ethiopic_Extended_B} (which is \p{Block=Ethiopic_Extended_B}) โ€” 32
  • X \p{Ethiopic_Extended} = \p{Block=Ethiopic_Extended} (short: \p{InEthiopicExt}) โ€” 96
  • X \p{Ethiopic_Extended_A} = \p{Block=Ethiopic_Extended_A} (short: \p{InEthiopicExtA}) โ€” 48
  • X \p{Ethiopic_Extended_B} = \p{Block=Ethiopic_Extended_B} (short: \p{InEthiopicExtB}) โ€” 32
  • X \p{Ethiopic_Sup} = \p{Ethiopic_Supplement} (which is \p{Block=Ethiopic_Supplement}) โ€” 32
  • X \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} โ€” 4200
  • X \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_481 and 814_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, capital P, 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 the X marker, 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's 95 of them living at U+1160..11A7, U+D7B0..D7C6 ๐ŸŽ€ vowel jamo besties rise up
  • X \p{Hangul_Syllables} โ€” maps to \p{Block=Hangul_Syllables} (Short: \p{InHangul}) and it's 11_184 code points of solid squishy syllable block vibes ๐Ÿ’œ
  • \p{Hani} โ€” girlypop this one is \p{Han} (= \p{Script_Extensions=Han}) and it's a whole 103_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 listing Hano and Hanunoo back to back and them being the exact same 23 code 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's 1_114_068 plus 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 only 44: [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; see www.unicode.org/reports/tr14 so likeโ€ฆ it's giving deprecated, don't build your whole personality on it
  • D \p{Hyphen: N*} โ€” yep, also Supplanted by Line_Break property values; see www.unicode.org/reports/tr14 (Single: \P{Hyphen}) โ€” 1_114_101 plus all above-Unicode code points:
[\x00-\x20!\"#\$\%&\'\(\)*+,.\/0-9:;<=>?\@A-Z\[\\\]\^_`a-z\{\|\}~\x7f-\xac\xae-\xff], U+0100..0589, U+058B..1805, U+1807..200F, U+2012..2E16, U+2E18..30FA ...
  • D \p{Hyphen: Y*} โ€” same deal bestie, Supplanted by Line_Break property values; see www.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's 1_114_069 plus all above-Unicode code points: [\x00-\xb1\xb4-\xb8\xba-\xff], U+0100..206F, U+2071..2073, U+207F, U+208F..2201, U+2203..2206 ...
  • \p{ID_Compat_Math_Continue: Y*} โ€” (Single: \p{IDCompatMathContinue}) โ€” 43: [\xb2-\xb3\xb9], U+2070, U+2074..207E, U+2080..208E, U+2202, U+2207 ...
  • \p{ID_Compat_Math_Start} โ€” this is \p{ID_Compat_Math_Start=Y} โ€” 13 ๐Ÿงฎ
  • \p{ID_Compat_Math_Start: N*} โ€” (Single: \P{IDCompatMathStart}) โ€” 1_114_099 plus all above-Unicode code points: U+0000..2201, U+2203..2206, U+2208..221D, U+221F..1D6C0, U+1D6C2..1D6DA, U+1D6DC..1D6FA ...
  • \p{ID_Compat_Math_Start: Y*} โ€” (Single: \p{IDCompatMathStart}) โ€” 13: U+2202, U+2207, U+221E, U+1D6C1, U+1D6DB, U+1D6FB ...
  • \p{ID_Continue} โ€” 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_872 plus 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_196 plus 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_321 plus 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_305 plus 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's 83_221 code 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_943 bestie.
  • \p{Ideographic: N*} โ€” Short: \p{Ideo=N}, \P{Ideo}. Count: 1_003_169 plus all above-Unicode code points: U+0000..3005, U+3008..3020, U+302A..3037, U+303B..33FF, U+4DC0..4DFF, U+A000..F8FF ...
  • \p{Ideographic: Y*} โ€” Short: \p{Ideo=Y}, \p{Ideo}. 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}. 16 of 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_099 plus all above-Unicode code points: U+0000..2FEF, U+2FF2..2FF3, U+2FFE..31EE, U+31F0..infinity
  • \p{IDS_Binary_Operator: Y*} โ€” Short: \p{IDSB=Y}, \p{IDSB}. 13: U+2FF0..2FF1, U+2FF4..2FFD, U+31EF
  • \p{IDS_Trinary_Operator}, \p{IDS_Trinary_Operator=Y} โ€” Short: \p{IDST}. 2. literally two ๐Ÿ˜ญ
  • \p{IDS_Trinary_Operator: N*} โ€” Short: \p{IDST=N}, \P{IDST}. 1_114_110 plus all above-Unicode code points: U+0000..2FF1, U+2FF4..infinity
  • \p{IDS_Trinary_Operator: Y*} โ€” Short: \p{IDST=Y}, \p{IDST}. 2: U+2FF2..2FF3
  • \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_110 plus 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_964 plus all above-Unicode code points: U+0000..02FF, U+0370..0482, U+048A..0590, U+05BE, U+05C0, U+05C3 ...
  • X \p{Indic_Number_Forms}, \p{Common_Indic_Number_Forms} (= \p{Block=Common_Indic_Number_Forms}) โ€” 16 code 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_813 plus 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_813 plus all above-Unicode code points: U+0000..08FF, U+0904..0939, U+093D, U+0950, U+0953..0954, U+0958..0961 ...
  • \p{Indic_Positional_Category: Overstruck} โ€” Short: \p{InPC=Overstruck}. 10: U+1CD4, U+1CE2..1CE8, U+10A01, U+10A06
  • \p{Indic_Positional_Category: Right} โ€” Short: \p{InPC=Right}. 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. (little X flag 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 is NOT \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}; again NOT \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, that D is sitting there for a reason, and it covers 2048 code 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 the Linear_A line carefully: the short form is \p{Lina} and the table literally yells NOT \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, Nkoo is 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+3251
  • T \p{Numeric_Value: 22} (short: \p{Nv=22}) โ€” one: U+3252
  • T \p{Numeric_Value: 23} (short: \p{Nv=23}) โ€” one: U+3253
  • T \p{Numeric_Value: 24} (short: \p{Nv=24}) โ€” one: U+3254
  • T \p{Numeric_Value: 25} (short: \p{Nv=25}) โ€” one: U+3255
  • T \p{Numeric_Value: 26} (short: \p{Nv=26}) โ€” one: U+3256
  • T \p{Numeric_Value: 27} (short: \p{Nv=27}) โ€” one: U+3257
  • T \p{Numeric_Value: 28} (short: \p{Nv=28}) โ€” one: U+3258
  • T \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+325B
  • T \p{Numeric_Value: 32} (short: \p{Nv=32}) โ€” one: U+325C
  • T \p{Numeric_Value: 33} (short: \p{Nv=33}) โ€” one: U+325D
  • T \p{Numeric_Value: 34} (short: \p{Nv=34}) โ€” one: U+325E
  • T \p{Numeric_Value: 35} (short: \p{Nv=35}) โ€” one: U+325F
  • T \p{Numeric_Value: 36} (short: \p{Nv=36}) โ€” one: U+32B1
  • T \p{Numeric_Value: 37} (short: \p{Nv=37}) โ€” one: U+32B2
  • T \p{Numeric_Value: 38} (short: \p{Nv=38}) โ€” one: U+32B3
  • T \p{Numeric_Value: 39} (short: \p{Nv=39}) โ€” one: U+32B4
  • T \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+32B6
  • T \p{Numeric_Value: 42} (short: \p{Nv=42}) โ€” one: U+32B7
  • T \p{Numeric_Value: 43} (short: \p{Nv=43}) โ€” one: U+32B8
  • T \p{Numeric_Value: 44} (short: \p{Nv=44}) โ€” one: U+32B9
  • T \p{Numeric_Value: 45} (short: \p{Nv=45}) โ€” one: U+32BA
  • T \p{Numeric_Value: 46} (short: \p{Nv=46}) โ€” one: U+32BB
  • T \p{Numeric_Value: 47} (short: \p{Nv=47}) โ€” one: U+32BC
  • T \p{Numeric_Value: 48} (short: \p{Nv=48}) โ€” one: U+32BD
  • T \p{Numeric_Value: 49} (short: \p{Nv=49}) โ€” one: U+32BE
  • T \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+1ED19
  • T \p{Numeric_Value: 800} (short: \p{Nv=800}) โ€” 6 of them: U+10120, U+102FA, U+109D9, U+10E79, U+1EC8A, U+1ED1A
  • T \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+1ED3A
  • T \p{Numeric_Value: 3000} (short: \p{Nv=3000}) โ€” 4 of them: U+10124, U+109DD, U+1EC8E, U+1ED1E
  • T \p{Numeric_Value: 4000} (short: \p{Nv=4000}) โ€” 4 of them: U+10125, U+109DE, U+1EC8F, U+1ED1F
  • T \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+1ED21
  • T \p{Numeric_Value: 7000} (short: \p{Nv=7000}) โ€” 4 of them: U+10128, U+109E1, U+1EC92, U+1ED22
  • T \p{Numeric_Value: 8000} (short: \p{Nv=8000}) โ€” 4 of them: U+10129, U+109E2, U+1EC93, U+1ED23
  • T \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+1ED26
  • T \p{Numeric_Value: 30000} (which is = 3.0e+04) (short: \p{Nv=30000}) โ€” 4 of them: U+1012D, U+109E6, U+1EC97, U+1ED27
  • T \p{Numeric_Value: 40000} (which is = 4.0e+04) (short: \p{Nv=40000}) โ€” 4 of them: U+1012E, U+109E7, U+1EC98, U+1ED28
  • T \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+1ED2A
  • T \p{Numeric_Value: 70000} (which is = 7.0e+04) (short: \p{Nv=70000}) โ€” 4 of them: U+10131, U+109EA, U+1EC9B, U+1ED2B
  • T \p{Numeric_Value: 80000} (which is = 8.0e+04) (short: \p{Nv=80000}) โ€” 4 of them: U+10132, U+109EB, U+1EC9C, U+1ED2C
  • T \p{Numeric_Value: 90000} (which is = 9.0e+04) (short: \p{Nv=90000}) โ€” 4 of them: U+10133, U+109EC, U+1EC9D, U+1ED2D
  • T \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+1ECB4
  • T \p{Numeric_Value: 200000} (which is = 2.0e+05) (short: \p{Nv=200000}) โ€” 2 of them: U+109EE, U+1EC9F
  • T \p{Numeric_Value: 216000} (which is = 2.2e+05) (short: \p{Nv=216000}) โ€” one: U+12432
  • T \p{Numeric_Value: 300000} (which is = 3.0e+05) (short: \p{Nv=300000}) โ€” one: U+109EF
  • T \p{Numeric_Value: 400000} (which is = 4.0e+05) (short: \p{Nv=400000}) โ€” one: U+109F0
  • T \p{Numeric_Value: 432000} (which is = 4.3e+05) (short: \p{Nv=432000}) โ€” one: U+12433
  • T \p{Numeric_Value: 500000} (which is = 5.0e+05) (short: \p{Nv=500000}) โ€” one: U+109F1
  • T \p{Numeric_Value: 600000} (which is = 6.0e+05) (short: \p{Nv=600000}) โ€” one: U+109F2
  • T \p{Numeric_Value: 700000} (which is = 7.0e+05) (short: \p{Nv=700000}) โ€” one: U+109F3
  • T \p{Numeric_Value: 800000} (which is = 8.0e+05) (short: \p{Nv=800000}) โ€” one: U+109F4
  • T \p{Numeric_Value: 900000} (which is = 9.0e+05) (short: \p{Nv=900000}) โ€” one: U+109F5
  • T \p{Numeric_Value: 1000000} (which is = 1.0e+06) (short: \p{Nv=1000000}) โ€” one: U+16B5E
  • T \p{Numeric_Value: 10000000} (which is = 1.0e+07) (short: \p{Nv=10000000}) โ€” one: U+1ECA1
  • T \p{Numeric_Value: 20000000} (which is = 2.0e+07) (short: \p{Nv=20000000}) โ€” one: U+1ECA2
  • T \p{Numeric_Value: 100000000} (which is = 1.0e+08) (short: \p{Nv=100000000}) โ€” 3 of them: U+4EBF, U+5104, U+16B5F
  • T \p{Numeric_Value: 1000000000} (which is = 1.0e+09) (short: \p{Nv=1000000000}) โ€” one: U+79ED
  • T \p{Numeric_Value: 10000000000} (which is = 1.0e+10) (short: \p{Nv=10000000000}) โ€” one: U+16B60
  • T \p{Numeric_Value: 1000000000000} (which is = 1.0e+12) (short: \p{Nv=1000000000000}) โ€” 2 of them: U+5146, U+16B61
  • T \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 them
  • X \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 are 13 of 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_979 code 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_500 code 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_502 code 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_809 code 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_787 code 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_803 code 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_029 code 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_302 code 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_671 code 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_295 code 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_943 code 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_031 code 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_763 code 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_764 code 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_769 code 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_603 code 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_319 code 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_819 code 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_337 code 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_021 code 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_575 code 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_576 code 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_506 code 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_344 code 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_664 plus 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. The Sc: 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: Kana is the little short-name that points at the whole Katakana situation. ๐Ÿ‘‘
  • \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 as Kana above, because it IS Kana above. ๐ŸŒธ
  • \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 the N* ones keep ending in infinity or "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 an X in the table.
  • \p{Variation_Selectors_Supplement} โ€” long form \p{Block=Variation_Selectors_Supplement} (Short: \p{InVSSup}) โ†’ 240. Also X-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 the Old_Persian entry 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} โ€” \s including beyond ASCII and vertical tab (Short: \p{SpacePerl}) (25: [\t\n\cK\f\r\x20\x85\xa0], U+1680, U+2000..200A, U+2028..2029, U+202F, U+205F ...)
  • \p{XPosixUpper} โ€” \p{Uppercase=Y} (Short: \p{Upper}; /i= Cased=Yes) (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.

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() in Unicode::UCD gives you that value for a single code point โœจ
  • charprops_all() in Unicode::UCD returns 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() in Unicode::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 via prop_invmap() in Unicode::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}, which prop_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_Digit is documented in prop_invmap() in Unicode::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 D or S. ๐Ÿšฉ

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 just ASCII_Hex_Digit, same thing bestie ๐Ÿ’…
  • All โ€” (Perl extension). Every code point that exists, even the ones past Unicode's edges. Same as qr/./s. Range is U+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_Control
  • Bidi_Class (Short: bc) โ€” the bidi class property ๐Ÿ’œ
  • Bidi_Control (Short: Bidi_C) โ€” U+061C, U+200E..200F, U+202A..202E, U+2066..2069
  • Bidi_M โ€” Bidi_Mirrored
  • Bidi_Mirrored (Short: Bidi_M) โ€” [\(\)<>\[\]\{\}\xab\xbb], U+0F3A..0F3D, U+169B..169C, U+2039..203A, U+2045..2046, U+207D..207E ...
  • Bidi_Mirroring_Glyph (Short: bmg) โ€” yes the short form is bmg ๐Ÿ’€
  • Bidi_Paired_Bracket (Short: bpb)
  • Bidi_Paired_Bracket_Type (Short: bpt)
  • Blank โ€” XPosixBlank. (Perl extension) ๐Ÿซถ
  • Blk โ€” Block
  • Block (Short: blk)
  • Bmg โ€” Bidi_Mirroring_Glyph
  • Bpb โ€” Bidi_Paired_Bracket
  • Bpt โ€” Bidi_Paired_Bracket_Type
  • Canonical_Combining_Class (Short: ccc)
  • Case_Folding (Short: cf)
  • Case_Ignorable (Short: CI) โ€” [\'.:\^ + "" + \xa8\xad\xaf\xb4\xb7-\xb8], U+02B0..036F, U+0374..0375, U+037A, U+0384..0385, U+0387` ...
  • Cased โ€” [A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff], U+0100..01BA, U+01BC..01BF, U+01C4..0293, U+0296..02B8, U+02C0..02C1 ...
  • Category โ€” General_Category
  • Ccc โ€” Canonical_Combining_Class
  • CE โ€” Composition_Exclusion
  • Cf โ€” Case_Folding โ€” and NOT the cf that means General_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_Ignorable
  • CjkMandarin โ€” kMandarin
  • CjkTotalStrokes โ€” kTotalStrokes
  • CjkUnihanCore2020 โ€” kUnihanCore2020
  • Cntrl โ€” XPosixCntrl (which is =General_Category=Control). (Perl extension)
  • Comp_Ex โ€” Full_Composition_Exclusion
  • Composition_Exclusion (Short: CE) โ€” U+0958..095F, U+09DC..09DD, U+09DF, U+0A33, U+0A36, U+0A59..0A5B ...
  • CWCF โ€” Changes_When_Casefolded
  • CWCM โ€” Changes_When_Casemapped
  • CWKCF โ€” Changes_When_NFKC_Casefolded
  • CWL โ€” Changes_When_Lowercased
  • CWT โ€” Changes_When_Titlecased
  • CWU โ€” Changes_When_Uppercased
  • Dash โ€” [\-], U+058A, U+05BE, U+1400, U+1806, U+2010..2015 ...
  • Decomposition_Mapping (Short: dm)
  • Decomposition_Type (Short: dt)
  • Default_Ignorable_Code_Point (Short: DI) โ€” [\xad], U+034F, U+061C, U+115F..1160, U+17B4..17B5, U+180B..180F ...
  • Dep โ€” Deprecated
  • Deprecated (Short: Dep) โ€” U+0149, U+0673, U+0F77, U+0F79, U+17A3..17A4, U+206A..206F ...
  • DI โ€” Default_Ignorable_Code_Point
  • Dia โ€” Diacritic
  • Diacritic (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_Mapping
  • Dt โ€” Decomposition_Type
  • Ea โ€” East_Asian_Width
  • East_Asian_Width (Short: ea)
  • EBase โ€” Emoji_Modifier_Base
  • EComp โ€” Emoji_Component
  • EMod โ€” Emoji_Modifier
  • Emoji โ€” [#*0-9\xa9\xae], U+203C, U+2049, U+2122, U+2139, U+2194..2199 ...
  • Emoji_Component (Short: EComp) โ€” [#*0-9], U+200D, U+20E3, U+FE0F, U+1F1E6..1F1FF, U+1F3FB..1F3FF ...
  • Emoji_Modifier (Short: EMod) โ€” U+1F3FB..1F3FF
  • Emoji_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_Presentation
  • EqUIdeo โ€” Equivalent_Unified_Ideograph
  • Equivalent_Unified_Ideograph (Short: EqUIdeo)
  • Ext โ€” Extender
  • Extended_Pictographic (Short: ExtPict) โ€” [\xa9\xae], U+203C, U+2049, U+2122, U+2139, U+2194..2199 ...
  • Extender (Short: Ext) โ€” [\xb7], U+02D0..02D1, U+0640, U+07FA, U+0A71, U+0AFB ...
  • ExtPict โ€” Extended_Pictographic
  • Full_Composition_Exclusion (Short: Comp_Ex) โ€” U+0340..0341, U+0343..0344, U+0374, U+037E, U+0387, U+0958..095F ...
  • Gc โ€” General_Category
  • GCB โ€” Grapheme_Cluster_Break
  • General_Category (Short: gc)
  • Gr_Base โ€” Grapheme_Base
  • Gr_Ext โ€” Grapheme_Extend
  • Graph โ€” 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_Digit
  • Hex_Digit (Short: Hex) โ€” [0-9A-Fa-f], U+FF10..FF19, U+FF21..FF26, U+FF41..FF46
  • HorizSpace โ€” XPosixBlank. (Perl extension)
  • Hst โ€” Hangul_Syllable_Type
  • Hyphen โ€” โš ๏ธ heads up, this one carries the D marker, 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 by Line_Break property values; see www.unicode.org/reports/tr14
  • ID_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_Continue
  • Identifier_Status
  • Identifier_Type
  • Ideo โ€” Ideographic
  • Ideographic (Short: Ideo) โ€” U+3006..3007, U+3021..3029, U+3038..303A, U+3400..4DBF, U+4E00..9FFF, U+F900..FA6D ...
  • IDS โ€” ID_Start
  • IDS_Binary_Operator (Short: IDSB) โ€” U+2FF0..2FF1, U+2FF4..2FFD, U+31EF
  • IDS_Trinary_Operator (Short: IDST) โ€” U+2FF2..2FF3
  • IDS_Unary_Operator (Short: IDSU) โ€” U+2FFE..2FFF
  • IDSB โ€” IDS_Binary_Operator
  • IDST โ€” IDS_Trinary_Operator
  • IDSU โ€” IDS_Unary_Operator
  • In โ€” Present_In. (Perl extension) ๐Ÿ’ซ
  • InCB โ€” Indic_Conjunct_Break
  • Indic_Conjunct_Break (Short: InCB)
  • Indic_Positional_Category (Short: InPC)
  • Indic_Syllabic_Category (Short: InSC)
  • InPC โ€” Indic_Positional_Category
  • InSC โ€” Indic_Syllabic_Category
  • Isc โ€” ISO_Comment โ€” and NOT the isc that means General_Category=Other, okay bestie, they are different, iykyk ๐Ÿ™ˆ
  • ISO_Comment (Short: isc)
  • Jg โ€” Joining_Group
  • Join_C โ€” Join_Control
  • Join_Control (Short: Join_C) โ€” U+200C..200D
  • Joining_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 for Joining_Type
  • ? kEH_AltSeq
  • kEH_Cat
  • ? kEH_Core
  • kEH_Desc
  • ? kEH_Func
  • ? kEH_FVal
  • kEH_HG
  • kEH_IFAO
  • kEH_JSesh
  • kEH_NoMirror โ€” values like U+13081, U+13084, U+130BB, U+130BD
  • kEH_NoRotate โ€” values like U+13021, U+1303F, U+130AD, U+130B7, U+13131, U+131B1 โ€ฆ
  • ? kEH_UniK
  • kMandarin
  • kTotalStrokes
  • kUnihanCore2020
  • Lb โ€” short for Line_Break
  • Lc โ€” short for Lowercase_Mapping. And bestie, listen: this is NOT lc, which means General_Category=Cased_Letter. They are different, do not mix them, I'm begging ๐Ÿ™ˆ
  • Line_Break (Short: lb)
  • LOE โ€” short for Logical_Order_Exception
  • Logical_Order_Exception (Short: LOE). Values like U+0E40..0E44, U+0EC0..0EC4, U+19B5..19B7, U+19BA, U+AAB5..AAB6, U+AAB9 โ€ฆ
  • Lower โ€” short for Lowercase
  • Lowercase (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 for Modifier_Combining_Mark
  • Modifier_Combining_Mark (Short: MCM). U+0654..0655, U+0658, U+06DC, U+06E3, U+06E7..06E8, U+08CA..08CB โ€ฆ
  • Na โ€” short for Name
  • Na1 โ€” short for Unicode_1_Name
  • Name (Short: na)
  • Name_Alias
  • NChar โ€” short for Noncharacter_Code_Point
  • NFC_QC โ€” short for NFC_Quick_Check
  • NFC_Quick_Check (Short: NFC_QC)
  • NFD_QC โ€” short for NFD_Quick_Check
  • NFD_Quick_Check (Short: NFD_QC)
  • NFKC_Casefold (Short: NFKC_CF)
  • NFKC_CF โ€” short for NFKC_Casefold
  • NFKC_QC โ€” short for NFKC_Quick_Check
  • NFKC_Quick_Check (Short: NFKC_QC)
  • NFKC_SCF โ€” short for NFKC_Simple_Casefold
  • NFKC_Simple_Casefold (Short: NFKC_SCF)
  • NFKD_QC โ€” short for NFKD_Quick_Check
  • NFKD_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 for Numeric_Type
  • Numeric_Type (Short: nt)
  • Numeric_Value (Short: nv)
  • Nv โ€” short for Numeric_Value
  • Pat_Syn โ€” short for Pattern_Syntax
  • Pat_WS โ€” short for Pattern_White_Space
  • Pattern_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..2029
  • PCM โ€” short for Prepended_Concatenation_Mark
  • Perl_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, VT
  • PosixDigit โ€” (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 for Quotation_Mark
  • Quotation_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..2FD5
  • Regional_Indicator (Short: RI). U+1F1E6..1F1FF
  • RI โ€” short for Regional_Indicator
  • SB โ€” short for Sentence_Break
  • Sc โ€” short for Script. Once again bestie: NOT sc, because sc means General_Category=Currency_Symbol. Two different things, stay sharp ๐Ÿ’…
  • Scf โ€” short for Simple_Case_Folding
  • Script (Short: sc)
  • Script_Extensions (Short: scx)
  • Scx โ€” short for Script_Extensions
  • SD โ€” short for Soft_Dotted
  • Sentence_Break (Short: SB)
  • Sentence_Terminal (Short: STerm). [!.?], U+0589, U+061D..061F, U+06D4, U+0700..0702, U+07F9 โ€ฆ
  • Sfc โ€” short for Simple_Case_Folding
  • Simple_Case_Folding (Short: scf)
  • Simple_Lowercase_Mapping (Short: slc)
  • Simple_Titlecase_Mapping (Short: stc)
  • Simple_Uppercase_Mapping (Short: suc)
  • Slc โ€” short for Simple_Lowercase_Mapping
  • Soft_Dotted (Short: SD). [i-j], U+012F, U+0249, U+0268, U+029D, U+02B2 โ€ฆ
  • Space โ€” White_Space
  • SpacePerl โ€” XPosixSpace. (Perl extension)
  • Stc โ€” short for Simple_Titlecase_Mapping
  • STerm โ€” short for Sentence_Terminal
  • Suc โ€” short for Simple_Uppercase_Mapping
  • Tc โ€” short for Titlecase_Mapping
  • Term โ€” short for Terminal_Punctuation
  • Terminal_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 for Uppercase_Mapping
  • UIdeo โ€” short for Unified_Ideograph
  • Unicode โ€” 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 โ€” Uppercase
  • Uppercase (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..E01EF
  • Vertical_Orientation (Short: vo)
  • VertSpace โ€” (Perl extension). \v. [\n\cK\f\r\x85], U+2028..2029
  • Vo โ€” short for Vertical_Orientation
  • VS โ€” short for Variation_Selector
  • WB โ€” short for Word_Break
  • White_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_Space
  • XDigit โ€” 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 for XID_Continue
  • XIDS โ€” short for XID_Start
  • XPerlSpace โ€” 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+3000
  • XPosixCntrl โ€” 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 \s but โœจ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's lc() and lcfirst()
  • Titlecase_Mapping โ†’ that's ucfirst()
  • Uppercase_Mapping โ†’ that's uc()

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.html
  • auxiliary/LineBreakTest.html
  • auxiliary/SentenceBreakTest.html
  • auxiliary/WordBreakTest.html

Documentation of validation Tests

  • BidiCharacterTest.txt
  • BidiTest.txt

Validation Tests

  • CJKRadicals.txt

Maps the kRSUnicode property values to corresponding code points

  • confusables.txt
  • confusablesSummary.txt
  • DoNotEmit.txt
  • intentional.txt

Currently unused by Perl

  • emoji/ReadMe.txt
  • ReadMe.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


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