Locale:...AC_SAMI(3)

πŸ¦‹ Locale::RecodeData::MAC_SAMI(3) πŸ¦‹

okay so first things first, bestie β€” this is Locale:...AC_SAMI(3) from the User Contributed Perl Documentation, and we're literally about to get into it. ✨

πŸ’– NAME πŸ’–

Locale::RecodeData::MAC_SAMI β€” the conversion routines for MAC-SAMI. that's it, that's the whole vibe. πŸŽ€

🌸 SYNOPSIS 🌸

This module is internal to libintl.  Do not use directly!
🚨 no cap, this one is internal to libintl and you should NOT use it directly. like, the module itself is telling you not to. respect the boundaries, bestie. πŸ™ˆ

✨ DESCRIPTION ✨

so this module is generated β€” not hand-written, it just exists β€” and what it's holding is the conversion tables and routines for MAC-SAMI. that's the whole deal. generated code, conversion tables, routines, MAC-SAMI. slay. πŸ’…

🧚 COMMENTS 🧚

okay so the following comments were extracted from the original charmap, and I'm giving them to you exactly, untouched, because iykyk and we do not mess with the source material:

source:  http://www.indigo.ie/egt/standards/se/mac-sami.html
author:  Regnor Jernsletten E<lt>Regnor.Jernsletten@sami.uit.noE<gt>
date:    2001-07-31
comment: Macintosh sami standard.

look at that pedigree though β€” a source URL, an author, a date from 2001-07-31, and the comment "Macintosh sami standard." iconic. πŸ”₯

⚠️ and please please PLEASE note: the aliases listed above are not necessarily valid! not me warning you about that. just because it's listed doesn't mean it's good. vibe check failed, basically. πŸ’€

πŸ‘‘ CHARACTER TABLE πŸ‘‘

The following table is sorted in the same order as the original charmap. 🫢

All character codes are in hexadecimal. ⭐

And super important, bestie: please read 'ISO-10646' as 'ISO-10646-UCS4'. like, whenever you see it, mentally swap it. that's the assignment. 🌈


okay bestie, eyes on the prize β€” this is the actual byte-by-byte receipts table, and it's long. Three columns, and the headers are Local, ISO-10646, Description. That's the local encoding byte, the code point it maps to, and the name of the character. Do not skip a single row, because your fave is thorough and so are you πŸ’…

        Local | ISO-10646 | Description
       -------+-----------+-------------------------------------------------
           00 |  00000000 | NULL
           01 |  00000001 | START OF HEADING
           02 |  00000002 | START OF TEXT
           03 |  00000003 | END OF TEXT
           04 |  00000004 | END OF TRANSMISSION
           05 |  00000005 | ENQUIRY
           06 |  00000006 | ACKNOWLEDGE
           07 |  00000007 | BELL
           08 |  00000008 | BACKSPACE
           09 |  00000009 | HORIZONTAL TABULATION
           0A |  0000000A | LINE FEED
           0B |  0000000B | VERTICAL TABULATION
           0C |  0000000C | FORM FEED
           0D |  0000000D | CARRIAGE RETURN
           0E |  0000000E | SHIFT OUT
           0F |  0000000F | SHIFT IN
           10 |  00000010 | DATA LINK ESCAPE
           11 |  00000011 | DEVICE CONTROL ONE
           12 |  00000012 | DEVICE CONTROL TWO
           13 |  00000013 | DEVICE CONTROL THREE
           14 |  00000014 | DEVICE CONTROL FOUR
           15 |  00000015 | NEGATIVE ACKNOWLEDGE
           16 |  00000016 | SYNCHRONOUS IDLE
           17 |  00000017 | END OF TRANSMISSION BLOCK
           18 |  00000018 | CANCEL
           19 |  00000019 | END OF MEDIUM
           1A |  0000001A | SUBSTITUTE
           1B |  0000001B | ESCAPE
           1C |  0000001C | FILE SEPARATOR
           1D |  0000001D | GROUP SEPARATOR
           1E |  0000001E | RECORD SEPARATOR
           1F |  0000001F | UNIT SEPARATOR
           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
           80 |  000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
           81 |  000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
           82 |  000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
           83 |  000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
           84 |  000000D1 | LATIN CAPITAL LETTER N WITH TILDE
           85 |  000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
           86 |  000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
           87 |  000000E1 | LATIN SMALL LETTER A WITH ACUTE
           88 |  000000E0 | LATIN SMALL LETTER A WITH GRAVE
           89 |  000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
           8A |  000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
           8B |  000000E3 | LATIN SMALL LETTER A WITH TILDE
           8C |  000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
           8D |  000000E7 | LATIN SMALL LETTER C WITH CEDILLA
           8E |  000000E9 | LATIN SMALL LETTER E WITH ACUTE
           8F |  000000E8 | LATIN SMALL LETTER E WITH GRAVE
           90 |  000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
           91 |  000000EB | LATIN SMALL LETTER E WITH DIAERESIS
           92 |  000000ED | LATIN SMALL LETTER I WITH ACUTE
           93 |  000000EC | LATIN SMALL LETTER I WITH GRAVE
           94 |  000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
           95 |  000000EF | LATIN SMALL LETTER I WITH DIAERESIS
           96 |  000000F1 | LATIN SMALL LETTER N WITH TILDE
           97 |  000000F3 | LATIN SMALL LETTER O WITH ACUTE
           98 |  000000F2 | LATIN SMALL LETTER O WITH GRAVE
           99 |  000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
           9A |  000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
           9B |  000000F5 | LATIN SMALL LETTER O WITH TILDE
           9C |  000000FA | LATIN SMALL LETTER U WITH ACUTE
           9D |  000000F9 | LATIN SMALL LETTER U WITH GRAVE
           9E |  000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
           9F |  000000FC | LATIN SMALL LETTER U WITH DIAERESIS
           A0 |  000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
           A1 |  000000B0 | DEGREE SIGN
           A2 |  0000010C | LATIN CAPITAL LETTER C WITH CARON
           A3 |  000000A3 | POUND SIGN
           A4 |  000000A7 | SECTION SIGN
           A5 |  00002022 | BULLET
           A6 |  000000B6 | PILCROW SIGN
           A7 |  000000DF | LATIN SMALL LETTER SHARP S (German)
           A8 |  000000AE | REGISTERED SIGN
           A9 |  000000A9 | COPYRIGHT SIGN
           AA |  00002122 | TRADE MARK SIGN
           AB |  000000B4 | ACUTE ACCENT
           AC |  000000A8 | DIAERESIS
           AD |  00002260 | NOT EQUAL TO
           AE |  000000C6 | LATIN CAPITAL LETTER AE
           AF |  000000D8 | LATIN CAPITAL LETTER O WITH STROKE
           B0 |  00000110 | LATIN CAPITAL LETTER D WITH STROKE
           B1 |  0000014A | LATIN CAPITAL LETTER ENG
           B2 |  0000821E | LATIN CAPITAL LETTER H WITH CARON
           B3 |  0000821F | LATIN SMALL LETTER H WITH CARON
           B4 |  00000160 | LATIN CAPITAL LETTER S WITH CARON
           B5 |  00000166 | LATIN CAPITAL LETTER T WITH STROKE
           B6 |  00002202 | PARTIAL DIFFERENTIAL
           B7 |  0000017D | LATIN CAPITAL LETTER Z WITH CARON
           B8 |  0000010D | LATIN SMALL LETTER C WITH CARON
           B9 |  00000111 | LATIN SMALL LETTER D WITH STROKE
           BA |  0000014B | LATIN SMALL LETTER ENG
           BB |  00000161 | LATIN SMALL LETTER S WITH CARON
           BC |  00000167 | LATIN SMALL LETTER T WITH STROKE
           BD |  0000017E | LATIN SMALL LETTER Z WITH CARON
           BE |  000000E6 | LATIN SMALL LETTER AE
           BF |  000000F8 | LATIN SMALL LETTER O WITH STROKE
           C0 |  000000BF | INVERTED QUESTION MARK
           C1 |  000000A1 | INVERTED EXCLAMATION MARK
           C2 |  000000AC | NOT SIGN
           C3 |  0000221A | SQUARE ROOT
           C4 |  00000192 | LATIN SMALL LETTER F WITH HOOK
           C5 |  00002248 | ALMOST EQUAL TO
           C6 |  00002206 | INCREMENT
           C7 |  000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
           C8 |  000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
           C9 |  00002026 | HORIZONTAL ELLIPSIS
           CA |  000000A0 | NO-BREAK SPACE
           CB |  000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
           CC |  000000C3 | LATIN CAPITAL LETTER A WITH TILDE
           CD |  000000D5 | LATIN CAPITAL LETTER O WITH TILDE
           CE |  00000152 | LATIN CAPITAL LETTER LIGATURE OE
           CF |  00000153 | LATIN SMALL LETTER LIGATURE OE
           D0 |  00002013 | EN DASH
           D1 |  00002014 | EM DASH
           D2 |  0000201C | LEFT DOUBLE QUOTATION MARK
           D3 |  0000201D | RIGHT DOUBLE QUOTATION MARK
           D4 |  00002018 | LEFT SINGLE QUOTATION MARK
           D5 |  00002019 | RIGHT SINGLE QUOTATION MARK
           D6 |  000000F7 | DIVISION SIGN
           D7 |  000025CA | LOZENGE
           D8 |  000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
           D9 |  00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
           DA |  00002044 | FRACTION SLASH
           DB |  000000A4 | CURRENCY SIGN
           DC |  000000D0 | LATIN CAPITAL LETTER ETH
           DD |  000000F0 | LATIN SMALL LETTER ETH
           DE |  000000DE | LATIN CAPITAL LETTER THORN
           DF |  000000FE | LATIN SMALL LETTER THORN
           E0 |  000000FD | LATIN SMALL LETTER Y WITH ACUTE
           E1 |  000000B7 | MIDDLE DOT
           E2 |  0000201A | SINGLE LOW-9 QUOTATION MARK
           E3 |  0000201E | DOUBLE LOW-9 QUOTATION MARK
           E4 |  00002030 | PER MILLE SIGN
           E5 |  000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
           E6 |  000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
           E7 |  000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
           E8 |  000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
           E9 |  000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
           EA |  000000CD | LATIN CAPITAL LETTER I WITH ACUTE
           EB |  000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
           EC |  000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS

bestie I need you to breathe. That's the table up to EC and it keeps going, so hydrate and keep scrolling 🫢✨


ngl, don't try to memorise this. That is not the vibe. The table is here so you can look up any single byte and see exactly which ISO-10646 code point it's pointing at, and what the character is called. That's it. That's the job πŸ’…

a couple things to clock as you skim, since they're right there and kind of iconic:

  • the low half β€” 00 through 7F β€” maps clean and tidy, one byte to one code point, straight through NULL up to DELETE. 20 is SPACE, 41 is LATIN CAPITAL LETTER A, 7F is DELETE. Cute, predictable, no drama 🌸
  • then it gets spicy β€” from 80 onward the local byte and the ISO-10646 value stop matching, so the third column is literally doing the translating for you. 80 is 000000C4 (LATIN CAPITAL LETTER A WITH DIAERESIS), A5 is 00002022 (BULLET), AA is 00002122 (TRADE MARK SIGN) πŸ‘‘
  • notice the jumpy ordering β€” like 87 is LATIN SMALL LETTER A WITH ACUTE while 88 is LATIN SMALL LETTER A WITH GRAVE and 89 is LATIN SMALL LETTER A WITH CIRCUMFLEX. Not alphabetical, not numerical, just how it is. Don't fight the table, the table always wins πŸ’€
  • watch for the ones with parentheticals β€” A7 is LATIN SMALL LETTER SHARP S (German). The note is part of the name, keep it πŸ“Œ
  • CA is NO-BREAK SPACE and 20 is SPACE. They are not the same thing and if you conflate them your output will look cursed 😭
  • the punctuation girlies at the end</> are a whole mood β€” D0 EN DASH, D1 EM DASH, D2 LEFT DOUBLE QUOTATION MARK, D3 RIGHT DOUBLE QUOTATION MARK, D4 LEFT SINGLE QUOTATION MARK, D5 RIGHT SINGLE QUOTATION MARK. Typography said let me COOK πŸ“

and yes, AC really is 000000A8 | DIAERESIS while D8 is 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS β€” they are different rows, they are different things, do not merge them in your head or in your code, periodt πŸ’…

okay keep going, the table is still going, and so are we πŸ¦‹

...and we're back in the table, bestie β€” same deal as before, byte on the left, codepoint in the middle, name on the right. Keep scrolling, we're almost at the end πŸ’…

  • ED β†’ 000000CC β€” LATIN CAPITAL LETTER I WITH GRAVE
  • EE β†’ 000000D3 β€” LATIN CAPITAL LETTER O WITH ACUTE
  • EF β†’ 000000D4 β€” LATIN CAPITAL LETTER O WITH CIRCUMFLEX
  • F0 β†’ 0000F8FF β€” APPLE SIGN
  • F1 β†’ 000000D2 β€” LATIN CAPITAL LETTER O WITH GRAVE
  • F2 β†’ 000000DA β€” LATIN CAPITAL LETTER U WITH ACUTE
  • F3 β†’ 000000DB β€” LATIN CAPITAL LETTER U WITH CIRCUMFLEX
  • F4 β†’ 000000D9 β€” LATIN CAPITAL LETTER U WITH GRAVE
  • F5 β†’ 00000131 β€” LATIN SMALL LETTER DOTLESS I
  • F6 β†’ 000001B7 β€” LATIN CAPITAL LETTER EZH
  • F7 β†’ 00000292 β€” LATIN SMALL LETTER EZH
  • F8 β†’ 000001EE β€” LATIN CAPITAL LETTER EZH WITH CARON
  • F9 β†’ 000001EF β€” LATIN SMALL LETTER EZH WITH CARON
  • FA β†’ 000001E4 β€” LATIN CAPITAL LETTER G WITH STROKE
  • FB β†’ 000001E5 β€” LATIN SMALLL LETTER G WITH STROKE
  • FC β†’ 000001E6 β€” LATIN CAPITAL LETTER G WITH CARON
  • FD β†’ 000001E7 β€” LATIN SMALL LETTER G WITH CARON
  • FE β†’ 000001E8 β€” LATIN CAPITAL LETTER K WITH CARON
  • FF β†’ 000001E9 β€” LATIN SMALL LETTER K WITH CARON
ok yes FB really does say SMALLL up there, that's not me being quirky, that's literally what the page says β€” leaving it exactly as found, no cap πŸ™ˆ

🌸 AUTHOR 🌸

Copyright (C) 2002-2017 Guido Flohr <http://www.guido-flohr.net/> (<mailto:guido.flohr@cantanea.com>), all rights reserved. See the source code for details!code for details!

that details!code for details! double-take is in the original too, bestie β€” we do not touch the sacred text, we just point at it 🫢

πŸŽ€ SEE ALSO πŸŽ€


and that's the whole page, bestie!! you made it to the bottom, iconic behaviour honestly πŸ‘‘πŸ’– this one's perl v5.42.0, stamped 2025-01-22 β€” go forth and decode those SΓ‘mi bytes, fr fr βœ¨πŸ¦‹