Locale:...ACGREEK(3)

πŸ¦‹ Locale::RecodeData::MACGREEK(3) β€” the MACGREEK era, bestie

okay so listen, this is Locale::RecodeData::MACGREEK, and it's a Perl thing from the User Contributed Perl Documentation corner of the universe, and it is literally just here to do conversion routines for MACGREEK. that's the whole vibe. πŸ’…


✨ NAME ✨

Locale::RecodeData::MACGREEK β€” conversion routines for MACGREEK. yes bestie, that's it, that's the name, and it ate. πŸŽ€


🌸 SYNOPSIS 🌸

This module is internal to libintl.  Do not use directly!
🫢 fr fr, this is not your moment. this module is internal to libintl and you should not use it directly. like, it's giving backstage-pass energy only. no cap. πŸ’€

🧚 DESCRIPTION 🧚

so this module is generated, right? it's not hand-written, it's built, and what it contains is the conversion tables and routines for MACGREEK. that's the whole job. tables, routines, MACGREEK, done. ✨


πŸ’œ COMMENTS πŸ’œ

the following comments have been extracted from the original charmap, and honestly they're iconic:

 This charmap has been generated automatically from GNU libiconv
 conversions.
πŸ™ˆ and please note that aliases listed above are not necessarily valid! like, don't come for me, the charmap said what it said. πŸ’…

πŸ‘‘ CHARACTER TABLE πŸ‘‘

okay so the following table is sorted in the same order as the original charmap. all character codes are in hexadecimal β€” hex girl summer, we love to see it. 🌈

and a tiny but important note: please read ISO-10646 as ISO-10646-UCS4. that's the assignment, bestie, don't skip it. ⭐

okay so quick refresher before we dive back in πŸ’… the table has three columns and they go, left to right: Local (the byte value you're actually poking at), ISO-10646 (the big fancy codepoint number, zero-padded to eight digits because it loves being extra) and Description (the official name, shouted in all caps because Unicode does not do lowercase energy).

Here's the top of the run, the whole control-character zone:

        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)

like… 00 to 1F is genuinely the "we don't really print these, we do things with them" zone 😭 every single one has a little three-letter nickname in brackets and honestly the nicknames ate β€” BEL for BELL, LF for LINE FEED, ESC for ESCAPE, iconic behaviour only.


then we hit the printable zone and it's smooth sailing the whole way through, all the way to 7E:

           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

the way 20 through 7E is just… the alphabet doing its thing plus every punctuation mark you've ever rage-typed. 2D being HYPHEN-MINUS is lowkey the most cursed one there and nobody talks about it 🫢 also 5F LOW LINE living right next to 60 GRAVE ACCENT β€” besties fr fr.


and then πŸŽ€ the plot thickens πŸŽ€ 7F and the 80–9F stretch, which is where things get spicy:

           7F |  0000007F | DELETE (DEL)
           80 |  000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
           81 |  000000B9 | SUPERSCRIPT ONE
           82 |  000000B2 | SUPERSCRIPT TWO
           83 |  000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
           84 |  000000B3 | SUPERSCRIPT THREE
           85 |  000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
           86 |  000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
           87 |  00000385 | GREEK DIALYTIKA TONOS
           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 |  00000384 | GREEK TONOS
           8C |  000000A8 | DIAERESIS
           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 |  000000A3 | POUND SIGN
           93 |  00002122 | TRADE MARK SIGN
           94 |  000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
           95 |  000000EF | LATIN SMALL LETTER I WITH DIAERESIS
           96 |  00002022 | BULLET
           97 |  000000BD | VULGAR FRACTION ONE HALF
           98 |  00002030 | PER MILLE SIGN
           99 |  000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
           9A |  000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
           9B |  000000A6 | BROKEN BAR
           9C |  000000AD | SOFT HYPHEN
           9D |  000000F9 | LATIN SMALL LETTER U WITH GRAVE
           9E |  000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
           9F |  000000FC | LATIN SMALL LETTER U WITH DIAERESIS

no but seriously, look at this range πŸ’€ it's accented capitals, superscript digits, a couple of Greek bits, POUND SIGN, TRADE MARK SIGN, BULLET, VULGAR FRACTION ONE HALF, PER MILLE SIGN, BROKEN BAR and SOFT HYPHEN all crammed in together. that's not a character table that's a group chat. and 97 is literally named VULGAR FRACTION ONE HALF β€” vulgar!! whoever named that was in a Mood πŸ’…


and then from A0 we're full Greek-adjacent chaos with the odd Latin and typography guest star:

           A0 |  00002020 | DAGGER
           A1 |  00000393 | GREEK CAPITAL LETTER GAMMA
           A2 |  00000394 | GREEK CAPITAL LETTER DELTA
           A3 |  00000398 | GREEK CAPITAL LETTER THETA
           A4 |  0000039B | GREEK CAPITAL LETTER LAMDA
           A5 |  0000039E | GREEK CAPITAL LETTER XI
           A6 |  000003A0 | GREEK CAPITAL LETTER PI
           A7 |  000000DF | LATIN SMALL LETTER SHARP S
           A8 |  000000AE | REGISTERED SIGN
           A9 |  000000A9 | COPYRIGHT SIGN
           AA |  000003A3 | GREEK CAPITAL LETTER SIGMA
           AB |  000003AA | GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
           AC |  000000A7 | SECTION SIGN
           AD |  00002260 | NOT EQUAL TO
           AE |  000000B0 | DEGREE SIGN
           AF |  00000387 | GREEK ANO TELEIA
           B0 |  00000391 | GREEK CAPITAL LETTER ALPHA
           B1 |  000000B1 | PLUS-MINUS SIGN
           B2 |  00002264 | LESS-THAN OR EQUAL TO
           B3 |  00002265 | GREATER-THAN OR EQUAL TO
           B4 |  000000A5 | YEN SIGN
           B5 |  00000392 | GREEK CAPITAL LETTER BETA
           B6 |  00000395 | GREEK CAPITAL LETTER EPSILON
           B7 |  00000396 | GREEK CAPITAL LETTER ZETA
           B8 |  00000397 | GREEK CAPITAL LETTER ETA
           B9 |  00000399 | GREEK CAPITAL LETTER IOTA
           BA |  0000039A | GREEK CAPITAL LETTER KAPPA
           BB |  0000039C | GREEK CAPITAL LETTER MU
           BC |  000003A6 | GREEK CAPITAL LETTER PHI
           BD |  000003AB | GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
           BE |  000003A8 | GREEK CAPITAL LETTER PSI
           BF |  000003A9 | GREEK CAPITAL LETTER OMEGA
           C0 |  000003AC | GREEK SMALL LETTER ALPHA WITH TONOS
           C1 |  0000039D | GREEK CAPITAL LETTER NU
           C2 |  000000AC | NOT SIGN
           C3 |  0000039F | GREEK CAPITAL LETTER OMICRON
           C4 |  000003A1 | GREEK CAPITAL LETTER RHO
           C5 |  00002248 | ALMOST EQUAL TO
           C6 |  000003A4 | GREEK CAPITAL LETTER TAU
           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 |  000003A5 | GREEK CAPITAL LETTER UPSILON
           CC |  000003A7 | GREEK CAPITAL LETTER CHI
           CD |  00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS
           CE |  00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS
           CF |  00000153 | LATIN SMALL LIGATURE OE

okay the way A1 through C6 is just… the entire Greek capital alphabet marathoning through, with DAGGER at A0 kicking the door open first πŸ”₯ and then AD NOT EQUAL TO, B2 LESS-THAN OR EQUAL TO, B3 GREATER-THAN OR EQUAL TO and C5 ALMOST EQUAL TO are the maths girlies showing up to the party uninvited but honestly welcome. C7 and C8 with their whole LEFT-POINTING DOUBLE ANGLE QUOTATION MARK / RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK thing β€” the longest names in the building, we respect the commitment πŸ‘‘


and here's where we run up to:

           D0 |  00002013 | EN DASH
           D1 |  00002015 | HORIZONTAL BAR
           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 |  00000389 | GREEK CAPITAL LETTER ETA WITH TONOS
           D8 |  0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS
           D9 |  0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS
           DA |  0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS
           DB |  000003AD | GREEK SMALL LETTER EPSILON WITH TONOS
           DC |  000003AE | GREEK SMALL LETTER ETA WITH TONOS
           DD |  000003AF | GREEK SMALL LETTER IOTA WITH TONOS
           DE |  000003CC | GREEK SMALL LETTER OMICRON WITH TONOS
           DF |  0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS
           E0 |  000003CD | GREEK SMALL LETTER UPSILON WITH TONOS
           E1 |  000003B1 | GREEK SMALL LETTER ALPHA
           E2 |  000003B2 | GREEK SMALL LETTER BETA
           E3 |  000003C8 | GREEK SMALL LETTER PSI
           E4 |  000003B4 | GREEK SMALL LETTER DELTA
           E5 |  000003B5 | GREEK SMALL LETTER EPSILON
           E6 |  000003C6 | GREEK SMALL LETTER PHI
           E7 |  000003B3 | GREEK SMALL LETTER GAMMA
           E8 |  000003B7 | GREEK SMALL LETTER ETA
           E9 |  000003B9 | GREEK SMALL LETTER IOTA
           EA |  000003BE | GREEK SMALL LETTER XI
           EB |  000003BA | GREEK SMALL LETTER KAPPA
           EC |  000003BB | GREEK SMALL LETTER LAMDA

the typography girlies really took over D0–D6 β€” EN DASH, HORIZONTAL BAR, all four curly quote marks and DIVISION SIGN β€” and then it's tonos town, bestie 😭 D7 right through E0 is capital letters with tonos, DB–DE flips to small letters with tonos, and then from E1 onward it's plain small Greek letters just vibing alphabetically-ish.

and we're mid-Greek-small-letters right now β€” EC GREEK SMALL LETTER LAMDA is literally where the table cuts off in this chunk, so don't you dare think that's the end of it. the table keeps rolling and you already know there's more rows waiting to be read, so go on, scroll, we're picking it up right there. πŸ¦‹

okay so we're picking up right where the table left off β€” last chunk of the character table, bestie, and then we're done for real πŸŽ€

           ED |  000003BC | GREEK SMALL LETTER MU
           EE |  000003BD | GREEK SMALL LETTER NU
           EF |  000003BF | GREEK SMALL LETTER OMICRON
           F0 |  000003C0 | GREEK SMALL LETTER PI
           F1 |  000003CE | GREEK SMALL LETTER OMEGA WITH TONOS
           F2 |  000003C1 | GREEK SMALL LETTER RHO
           F3 |  000003C3 | GREEK SMALL LETTER SIGMA
           F4 |  000003C4 | GREEK SMALL LETTER TAU
           F5 |  000003B8 | GREEK SMALL LETTER THETA
           F6 |  000003C9 | GREEK SMALL LETTER OMEGA
           F7 |  000003C2 | GREEK SMALL LETTER FINAL SIGMA
           F8 |  000003C7 | GREEK SMALL LETTER CHI
           F9 |  000003C5 | GREEK SMALL LETTER UPSILON
           FA |  000003B6 | GREEK SMALL LETTER ZETA
           FB |  000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA
           FC |  000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA
           FD |  00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
           FE |  000003B0 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS

and that's the whole thing, the table ate and left no crumbs πŸ’… every byte from ED to FE accounted for, 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!

okay not me pointing out that the manpage literally glitches at the end there β€” See the source code for details!code for details! β€” that little echo is in the original, so I'm keeping it, periodt. if you were wondering "is that a typo or a curse" β€” it's giving both πŸ™ˆ

πŸ¦‹ SEE ALSO


alright that's a wrap on the whole page 🌸 go forth, recode your Cyrillic/Greek-adjacent bytes with confidence, and remember: the table never lies, only your terminal encoding does πŸ’–

this iconic little document is shipped with perl v5.42.0, dated 2025-01-22 β€” mwah, kisses to whoever builds perl docs at 3am 🫢