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
Locale::RecodeData(3)β the data-side sibling, go read it bestieLocale::Recode(3)β the actual recoding engine, the main characterperl(1)β yes, that one. you know it. iykyk
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 π«Ά
π¦ where this page comes from
- opensuse-leap 16.0: perl-libintl-perl 1.350.0-160000.2.2 Β· GPL-3.0-or-later
- opensuse-leap 16.0: perl-libintl-perl 1.350.0-160000.2.2 Β· GPL-3.0-or-later
- opensuse-leap 16.0: perl-libintl-perl 1.350.0-160000.2.2 Β· GPL-3.0-or-later
- opensuse-leap 16.0: perl-libintl-perl 1.350.0-160000.2.2 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms