Locale:...:MACTHAI(3)

πŸ’… Locale::RecodeData::MACTHAI(3) β€” the vibe

okay so, bestie, quick orientation: this is a page from the User Contributed Perl Documentation, section 3 β€” the manual name is Locale::RecodeData::MACTHAI. Yes the header line has a cute little Locale:...: ellipsis thing going on, but the actual module we're talking about is the MACTHAI one. Got it? Good. 🫢


✨ NAME ✨

Locale::RecodeData::MACTHAI β€” literally just the conversion routines for MACTHAI. That's the whole job. πŸŽ€


🌸 SYNOPSIS 🌸

⚠️ okay so this is the important bit, no cap:

This module is internal to libintl. Do not use directly!

Like, fr fr β€” it's giving backstage-pass-only energy. It's not for you, it's for libintl doing its thing. πŸ’€


πŸ¦‹ DESCRIPTION πŸ¦‹

So this module is generated β€” nobody hand-wrote it, it just exists β€” and it contains the conversion tables and routines for MACTHAI. That's it. That's the whole personality. ✨


πŸ’œ COMMENTS πŸ’œ

The following comments have been extracted from the original charmap:

 This charmap has been generated automatically from GNU libiconv
 conversions.

So yeah, automatically generated from GNU libiconv conversions β€” icon, honestly. πŸ‘‘

πŸ™ˆ tiny heads-up: please note that the aliases listed above are not necessarily valid! Like, don't just trust them blindly, bestie.

πŸ”₯ CHARACTER TABLE πŸ”₯

Here's the tea about the table that's coming: the following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. And when your eyes hit 'ISO-10646', you read it as 'ISO-10646-UCS4'. Periodt. πŸ’…


(...and that's the setup β€” the actual character table is up next, so stay tuned 🌈)

okay bestie, deep breath 🫢 β€” this is the part where the page stops explaining and just drops the entire table on you. And honestly? It ate. Because this is literally every byte in the MACTHAI locale, what ISO-10646 code point it turns into, and the official Unicode name of that character. Three columns, no cap:

  • Local β€” the actual byte, in hex, from 00 all the way to FA. πŸ‘‘
  • ISO-10646 β€” the code point it maps to, printed all 8 digits wide.
  • Description β€” the character's official name, plus its abbreviation in parens when it's got one.

Same header, every chunk. Let's go. πŸ’…

🍼 00–1F β€” the control characters (invisible main character energy)

Nothing to see here, but everything to feel β€” these are your classic control codes, and every single one keeps its plain ASCII meaning. Also yes, 10 is DATALINK ESCAPE (DLE) and not the more common DATA LINK ESCAPE β€” that's what the table says, so that's what we're saying. πŸ™ˆ

 Local | ISO-10646 | Description
-------+-----------+-------------------------------------------------
    00 |  00000000 | NULL (NUL)
    01 |  00000001 | START OF HEADING (SOH)
    02 |  00000002 | START OF TEXT (STX)
    03 |  00000003 | END OF TEXT (ETX)
    04 |  00000004 | END OF TRANSMISSION (EOT)
    05 |  00000005 | ENQUIRY (ENQ)
    06 |  00000006 | ACKNOWLEDGE (ACK)
    07 |  00000007 | BELL (BEL)
    08 |  00000008 | BACKSPACE (BS)
    09 |  00000009 | CHARACTER TABULATION (HT)
    0A |  0000000A | LINE FEED (LF)
    0B |  0000000B | LINE TABULATION (VT)
    0C |  0000000C | FORM FEED (FF)
    0D |  0000000D | CARRIAGE RETURN (CR)
    0E |  0000000E | SHIFT OUT (SO)
    0F |  0000000F | SHIFT IN (SI)
    10 |  00000010 | DATALINK ESCAPE (DLE)
    11 |  00000011 | DEVICE CONTROL ONE (DC1)
    12 |  00000012 | DEVICE CONTROL TWO (DC2)
    13 |  00000013 | DEVICE CONTROL THREE (DC3)
    14 |  00000014 | DEVICE CONTROL FOUR (DC4)
    15 |  00000015 | NEGATIVE ACKNOWLEDGE (NAK)
    16 |  00000016 | SYNCHRONOUS IDLE (SYN)
    17 |  00000017 | END OF TRANSMISSION BLOCK (ETB)
    18 |  00000018 | CANCEL (CAN)
    19 |  00000019 | END OF MEDIUM (EM)
    1A |  0000001A | SUBSTITUTE (SUB)
    1B |  0000001B | ESCAPE (ESC)
    1C |  0000001C | FILE SEPARATOR (IS4)
    1D |  0000001D | GROUP SEPARATOR (IS3)
    1E |  0000001E | RECORD SEPARATOR (IS2)
    1F |  0000001F | UNIT SEPARATOR (IS1)

✨ 20–7F β€” the classic ASCII era, fully iconic

This whole range is just regular ASCII, one for one β€” the byte 41 is LATIN CAPITAL LETTER A, periodt. The only little moment is at the end: 7F is DELETE (DEL), which is exactly where plain ASCII stops. 🌈

 Local | ISO-10646 | Description
-------+-----------+-------------------------------------------------
    20 |  00000020 | SPACE
    21 |  00000021 | EXCLAMATION MARK
    22 |  00000022 | QUOTATION MARK
    23 |  00000023 | NUMBER SIGN
    24 |  00000024 | DOLLAR SIGN
    25 |  00000025 | PERCENT SIGN
    26 |  00000026 | AMPERSAND
    27 |  00000027 | APOSTROPHE
    28 |  00000028 | LEFT PARENTHESIS
    29 |  00000029 | RIGHT PARENTHESIS
    2A |  0000002A | ASTERISK
    2B |  0000002B | PLUS SIGN
    2C |  0000002C | COMMA
    2D |  0000002D | HYPHEN-MINUS
    2E |  0000002E | FULL STOP
    2F |  0000002F | SOLIDUS
    30 |  00000030 | DIGIT ZERO
    31 |  00000031 | DIGIT ONE
    32 |  00000032 | DIGIT TWO
    33 |  00000033 | DIGIT THREE
    34 |  00000034 | DIGIT FOUR
    35 |  00000035 | DIGIT FIVE
    36 |  00000036 | DIGIT SIX
    37 |  00000037 | DIGIT SEVEN
    38 |  00000038 | DIGIT EIGHT
    39 |  00000039 | DIGIT NINE
    3A |  0000003A | COLON
    3B |  0000003B | SEMICOLON
    3C |  0000003C | LESS-THAN SIGN
    3D |  0000003D | EQUALS SIGN
    3E |  0000003E | GREATER-THAN SIGN
    3F |  0000003F | QUESTION MARK
    40 |  00000040 | COMMERCIAL AT
    41 |  00000041 | LATIN CAPITAL LETTER A
    42 |  00000042 | LATIN CAPITAL LETTER B
    43 |  00000043 | LATIN CAPITAL LETTER C
    44 |  00000044 | LATIN CAPITAL LETTER D
    45 |  00000045 | LATIN CAPITAL LETTER E
    46 |  00000046 | LATIN CAPITAL LETTER F
    47 |  00000047 | LATIN CAPITAL LETTER G
    48 |  00000048 | LATIN CAPITAL LETTER H
    49 |  00000049 | LATIN CAPITAL LETTER I
    4A |  0000004A | LATIN CAPITAL LETTER J
    4B |  0000004B | LATIN CAPITAL LETTER K
    4C |  0000004C | LATIN CAPITAL LETTER L
    4D |  0000004D | LATIN CAPITAL LETTER M
    4E |  0000004E | LATIN CAPITAL LETTER N
    4F |  0000004F | LATIN CAPITAL LETTER O
    50 |  00000050 | LATIN CAPITAL LETTER P
    51 |  00000051 | LATIN CAPITAL LETTER Q
    52 |  00000052 | LATIN CAPITAL LETTER R
    53 |  00000053 | LATIN CAPITAL LETTER S
    54 |  00000054 | LATIN CAPITAL LETTER T
    55 |  00000055 | LATIN CAPITAL LETTER U
    56 |  00000056 | LATIN CAPITAL LETTER V
    57 |  00000057 | LATIN CAPITAL LETTER W
    58 |  00000058 | LATIN CAPITAL LETTER X
    59 |  00000059 | LATIN CAPITAL LETTER Y
    5A |  0000005A | LATIN CAPITAL LETTER Z
    5B |  0000005B | LEFT SQUARE BRACKET
    5C |  0000005C | REVERSE SOLIDUS
    5D |  0000005D | RIGHT SQUARE BRACKET
    5E |  0000005E | CIRCUMFLEX ACCENT
    5F |  0000005F | LOW LINE
    60 |  00000060 | GRAVE ACCENT
    61 |  00000061 | LATIN SMALL LETTER A
    62 |  00000062 | LATIN SMALL LETTER B
    63 |  00000063 | LATIN SMALL LETTER C
    64 |  00000064 | LATIN SMALL LETTER D
    65 |  00000065 | LATIN SMALL LETTER E
    66 |  00000066 | LATIN SMALL LETTER F
    67 |  00000067 | LATIN SMALL LETTER G
    68 |  00000068 | LATIN SMALL LETTER H
    69 |  00000069 | LATIN SMALL LETTER I
    6A |  0000006A | LATIN SMALL LETTER J
    6B |  0000006B | LATIN SMALL LETTER K
    6C |  0000006C | LATIN SMALL LETTER L
    6D |  0000006D | LATIN SMALL LETTER M
    6E |  0000006E | LATIN SMALL LETTER N
    6F |  0000006F | LATIN SMALL LETTER O
    70 |  00000070 | LATIN SMALL LETTER P
    71 |  00000071 | LATIN SMALL LETTER Q
    72 |  00000072 | LATIN SMALL LETTER R
    73 |  00000073 | LATIN SMALL LETTER S
    74 |  00000074 | LATIN SMALL LETTER T
    75 |  00000075 | LATIN SMALL LETTER U
    76 |  00000076 | LATIN SMALL LETTER V
    77 |  00000077 | LATIN SMALL LETTER W
    78 |  00000078 | LATIN SMALL LETTER X
    79 |  00000079 | LATIN SMALL LETTER Y
    7A |  0000007A | LATIN SMALL LETTER Z
    7B |  0000007B | LEFT CURLY BRACKET
    7C |  0000007C | VERTICAL LINE
    7D |  0000007D | RIGHT CURLY BRACKET
    7E |  0000007E | TILDE
    7F |  0000007F | DELETE (DEL)

πŸŒ€ 80–9E β€” ok this is where it gets weird (affectionate)

High half time, and it's giving chaos in the best way. You've got your fancy punctuation β€” angle quotes, a HORIZONTAL ELLIPSIS, curly double and single quotes, a BULLET β€” and then a whole swarm of private-use code points in F88B–F899 that the page just labels E<lt>CJKE<gt>.

A little note on that: the E<lt> and E<gt> bits are just POD escaping for angle brackets, so in real life those labels read <CJKE>. Keeping them exactly as the page prints them though, because facts are facts. πŸ’–

Also: there's no 90 row. The table just skips it. Not me making stuff up β€” it's genuinely not there. πŸ’€

 Local | ISO-10646 | Description
-------+-----------+-------------------------------------------------
    80 |  000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
    81 |  000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
    82 |  00002026 | HORIZONTAL ELLIPSIS
    83 |  0000F88C | E<lt>CJKE<gt>
    84 |  0000F88F | E<lt>CJKE<gt>
    85 |  0000F892 | E<lt>CJKE<gt>
    86 |  0000F895 | E<lt>CJKE<gt>
    87 |  0000F898 | E<lt>CJKE<gt>
    88 |  0000F88B | E<lt>CJKE<gt>
    89 |  0000F88E | E<lt>CJKE<gt>
    8A |  0000F891 | E<lt>CJKE<gt>
    8B |  0000F894 | E<lt>CJKE<gt>
    8C |  0000F897 | E<lt>CJKE<gt>
    8D |  0000201C | LEFT DOUBLE QUOTATION MARK
    8E |  0000201D | RIGHT DOUBLE QUOTATION MARK
    8F |  0000F899 | E<lt>CJKE<gt>
    91 |  00002022 | BULLET
    92 |  0000F884 | E<lt>CJKE<gt>
    93 |  0000F889 | E<lt>CJKE<gt>
    94 |  0000F885 | E<lt>CJKE<gt>
    95 |  0000F886 | E<lt>CJKE<gt>
    96 |  0000F887 | E<lt>CJKE<gt>
    97 |  0000F888 | E<lt>CJKE<gt>
    98 |  0000F88A | E<lt>CJKE<gt>
    99 |  0000F88D | E<lt>CJKE<gt>
    9A |  0000F890 | E<lt>CJKE<gt>
    9B |  0000F893 | E<lt>CJKE<gt>
    9C |  0000F896 | E<lt>CJKE<gt>
    9D |  00002018 | LEFT SINGLE QUOTATION MARK
    9E |  00002019 | RIGHT SINGLE QUOTATION MARK

πŸ¦‹ A0–DA β€” the Thai letter block, absolute queen behaviour πŸ‘‘

A0 is a NO-BREAK SPACE (one last breather), and then from A1 onward it's wall-to-wall Thai characters, code points marching cleanly from 0E01 up to 0E3A. Consonants first β€” KO KAI through HO NOKHUK β€” then the vowel signs and marks from SARA A down to PHINTHU. Every one of these is named THAI CHARACTER something, and yes the names are in all caps, that's just how Unicode names roll. Periodt. πŸŽ€

 Local | ISO-10646 | Description
-------+-----------+-------------------------------------------------
    A0 |  000000A0 | NO-BREAK SPACE
    A1 |  00000E01 | THAI CHARACTER KO KAI
    A2 |  00000E02 | THAI CHARACTER KHO KHAI
    A3 |  00000E03 | THAI CHARACTER KHO KHUAT
    A4 |  00000E04 | THAI CHARACTER KHO KHWAI
    A5 |  00000E05 | THAI CHARACTER KHO KHON
    A6 |  00000E06 | THAI CHARACTER KHO RAKHANG
    A7 |  00000E07 | THAI CHARACTER NGO NGU
    A8 |  00000E08 | THAI CHARACTER CHO CHAN
    A9 |  00000E09 | THAI CHARACTER CHO CHING
    AA |  00000E0A | THAI CHARACTER CHO CHANG
    AB |  00000E0B | THAI CHARACTER SO SO
    AC |  00000E0C | THAI CHARACTER CHO CHOE
    AD |  00000E0D | THAI CHARACTER YO YING
    AE |  00000E0E | THAI CHARACTER DO CHADA
    AF |  00000E0F | THAI CHARACTER TO PATAK
    B0 |  00000E10 | THAI CHARACTER THO THAN
    B1 |  00000E11 | THAI CHARACTER THO NANGMONTHO
    B2 |  00000E12 | THAI CHARACTER THO PHUTHAO
    B3 |  00000E13 | THAI CHARACTER NO NEN
    B4 |  00000E14 | THAI CHARACTER DO DEK
    B5 |  00000E15 | THAI CHARACTER TO TAO
    B6 |  00000E16 | THAI CHARACTER THO THUNG
    B7 |  00000E17 | THAI CHARACTER THO THAHAN
    B8 |  00000E18 | THAI CHARACTER THO THONG
    B9 |  00000E19 | THAI CHARACTER NO NU
    BA |  00000E1A | THAI CHARACTER BO BAIMAI
    BB |  00000E1B | THAI CHARACTER PO PLA
    BC |  00000E1C | THAI CHARACTER PHO PHUNG
    BD |  00000E1D | THAI CHARACTER FO FA
    BE |  00000E1E | THAI CHARACTER PHO PHAN
    BF |  00000E1F | THAI CHARACTER FO FAN
    C0 |  00000E20 | THAI CHARACTER PHO SAMPHAO
    C1 |  00000E21 | THAI CHARACTER MO MA
    C2 |  00000E22 | THAI CHARACTER YO YAK
    C3 |  00000E23 | THAI CHARACTER RO RUA
    C4 |  00000E24 | THAI CHARACTER RU
    C5 |  00000E25 | THAI CHARACTER LO LING
    C6 |  00000E26 | THAI CHARACTER LU
    C7 |  00000E27 | THAI CHARACTER WO WAEN
    C8 |  00000E28 | THAI CHARACTER SO SALA
    C9 |  00000E29 | THAI CHARACTER SO RUSI
    CA |  00000E2A | THAI CHARACTER SO SUA
    CB |  00000E2B | THAI CHARACTER HO HIP
    CC |  00000E2C | THAI CHARACTER LO CHULA
    CD |  00000E2D | THAI CHARACTER O ANG
    CE |  00000E2E | THAI CHARACTER HO NOKHUK
    CF |  00000E2F | THAI CHARACTER PAIYANNOI
    D0 |  00000E30 | THAI CHARACTER SARA A
    D1 |  00000E31 | THAI CHARACTER MAI HAN-AKAT
    D2 |  00000E32 | THAI CHARACTER SARA AA
    D3 |  00000E33 | THAI CHARACTER SARA AM
    D4 |  00000E34 | THAI CHARACTER SARA I
    D5 |  00000E35 | THAI CHARACTER SARA II
    D6 |  00000E36 | THAI CHARACTER SARA UE
    D7 |  00000E37 | THAI CHARACTER SARA UEE
    D8 |  00000E38 | THAI CHARACTER SARA U
    D9 |  00000E39 | THAI CHARACTER SARA UU
    DA |  00000E3A | THAI CHARACTER PHINTHU

🌸 DB–EF β€” zero-widths, dashes, and the rest of the Thai marks

Bestie, this stretch is a journey. It opens with two invisible legends β€” ZERO WIDTH NO-BREAK SPACE at FEFF and ZERO WIDTH SPACE at 200B β€” then hits you with EN DASH and EM DASH, then the THAI CURRENCY SYMBOL BAHT, then the vowel signs SARA E through SARA AI MAIMALAI, then the diacritic marks all the way to NIKHAHIT. And then, completely unbothered, two icons sneak in: TRADE MARK SIGN and, breathing hard at the end of the block, THAI CHARACTER FONGMAN. πŸ”₯

 Local | ISO-10646 | Description
-------+-----------+-------------------------------------------------
    DB |  0000FEFF | ZERO WIDTH NO-BREAK SPACE
    DC |  0000200B | ZERO WIDTH SPACE
    DD |  00002013 | EN DASH
    DE |  00002014 | EM DASH
    DF |  00000E3F | THAI CURRENCY SYMBOL BAHT
    E0 |  00000E40 | THAI CHARACTER SARA E
    E1 |  00000E41 | THAI CHARACTER SARA AE
    E2 |  00000E42 | THAI CHARACTER SARA O
    E3 |  00000E43 | THAI CHARACTER SARA AI MAIMUAN
    E4 |  00000E44 | THAI CHARACTER SARA AI MAIMALAI
    E5 |  00000E45 | THAI CHARACTER LAKKHANGYAO
    E6 |  00000E46 | THAI CHARACTER MAIYAMOK
    E7 |  00000E47 | THAI CHARACTER MAITAIKHU
    E8 |  00000E48 | THAI CHARACTER MAI EK
    E9 |  00000E49 | THAI CHARACTER MAI THO
    EA |  00000E4A | THAI CHARACTER MAI TRI
    EB |  00000E4B | THAI CHARACTER MAI CHATTAWA
    EC |  00000E4C | THAI CHARACTER THANTHAKHAT
    ED |  00000E4D | THAI CHARACTER NIKHAHIT
    EE |  00002122 | TRADE MARK SIGN
    EF |  00000E4F | THAI CHARACTER FONGMAN

πŸ”’ F0–FA β€” Thai digits and the grand finale ⭐

Last stretch, and it's a clean one: THAI DIGIT ZERO through THAI DIGIT NINE, ticking up 0E50 to 0E59 like a countdown. Then FA lands on REGISTERED SIGN at 000000AE β€” and that's it, the table just stops there, no FB, no FC, nothing. The page said what it said. πŸ’…

 Local | ISO-10646 | Description
-------+-----------+-------------------------------------------------
    F0 |  00000E50 | THAI DIGIT ZERO
    F1 |  00000E51 | THAI DIGIT ONE
    F2 |  00000E52 | THAI DIGIT TWO
    F3 |  00000E53 | THAI DIGIT THREE
    F4 |  00000E54 | THAI DIGIT FOUR
    F5 |  00000E55 | THAI DIGIT FIVE
    F6 |  00000E56 | THAI DIGIT SIX
    F7 |  00000E57 | THAI DIGIT SEVEN
    F8 |  00000E58 | THAI DIGIT EIGHT
    F9 |  00000E59 | THAI DIGIT NINE
    FA |  000000AE | REGISTERED SIGN

okay so that's the whole character table, every single byte of it, and there's still more page to get through β€” keep scrolling bestie πŸ’œ

           FB |  000000A9 | COPYRIGHT SIGN

And that’s the character table fully wrapped, bestie πŸ’… β€” final row, no notes.


πŸ‘‘ AUTHOR πŸ’–

Copyright vibes, all official: Copyright (C) 2002-2017 Guido Flohr <http://www.guido-flohr.net/> and (<mailto:guido.flohr@cantanea.com>) β€” all rights reserved 🫢.

And yes, the page says to see the source code for details, with the exact text: See the source code for details!code for details! (the duplication is literally in there, ngl πŸ’€).

πŸ¦‹ SEE ALSO 🌈


That’s a wrap on the whole man page, bestie! πŸŽ€ Footer source/version and date, for the record: perl v5.42.0, dated 2025-01-22, with the footer page name Locale:...:MACTHAI(3). Periodt. πŸ’–