Locale:...:CP1253(3)

πŸ¦‹ Locale::RecodeData::CP1253(3) β€” ok bestie, let's talk CP1253

So this is a page from the User Contributed Perl Documentation section, and the star of the show is Locale::RecodeData::CP1253. Say hi πŸ‘‹


✨ NAME ✨

Locale::RecodeData::CP1253 β€” literally just conversion routines for CP1253. That's the whole vibe. πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

Okay so before you get any ideas β€” this module is internal to libintl. Do not use it directly! I'm serious, bestie, it's not for you, it's for the machinery. 🫢


🌸 DESCRIPTION 🌸

This module is generated (not hand-written, so don't come for its handwriting) and it contains the conversion tables and routines for CP1253. That's it, that's the job. ✨


πŸ’œ COMMENTS πŸ’œ

These comments got extracted from the original charmap, and I'm presenting them to you unedited because I respect the source material:

 version: 1.0
 repertoiremap: mnemonic,ds
  source: UNICODE 1.0
 alias MS-GREEK
⚠️ Please note that aliases listed above are not necessarily valid! Like, they're listed, sure, but that doesn't mean they work. Don't @ me. 😭

πŸ”₯ CHARACTER TABLE πŸ”₯

Okay so the table below is sorted in the same order as the original charmap. All character codes are in hexadecimal, no cap. And when you see 'ISO-10646', please read it as 'ISO-10646-UCS4' β€” that's the read, that's the assignment, iykyk. πŸ’€


...[more coming, bestie β€” this page is long so hold tight] πŸ’–

okay so here's the actual table and it is a whole meal πŸ’… three columns, and they mean exactly what they look like:

  • Local β€” the byte, written in hex (like 41, C5, FE)
  • ISO-10646 β€” the code point it maps to, eight hex digits
  • Description β€” the official name of that character, i.e. what it's actually called

no cap, that's it. now the top of it, aka the invisible 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)

the entire 00–1F run is invisible-vibe-ruiners only 😭 NULL (NUL) at the very top, BELL (BEL) at 07 which is literally the OG notification, and then your separators stacking down FILE SEPARATOR (IS4), GROUP SEPARATOR (IS3), RECORD SEPARATOR (IS2) and UNIT SEPARATOR (IS1) at the bottom. you won't see any of these on screen but they are doing the most behind the scenes.


and then we hit the stuff you can actually see, the printable era ✨

           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

SPACE at 20 starting us off 🫢 then the punctuation party, and then DIGIT ZERO through DIGIT NINE β€” and yes bestie the digits start at 30, that is not a typo, that's just hex being hex πŸ’€

           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

COMMERCIAL AT is the @ and it's giving main character energy, obviously πŸ‘‘ then the whole LATIN CAPITAL LETTER A β†’ LATIN CAPITAL LETTER Z run, capped off with the brackets, REVERSE SOLIDUS at 5C, CIRCUMFLEX ACCENT and 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)

lowercase girlies takeover 🌸 LATIN SMALL LETTER A all the way to LATIN SMALL LETTER Z, then the curly braces, VERTICAL LINE, TILDE, and DELETE (DEL) at 7F slamming the door on the low half of the table. iconic.


okay now 80 and up is where this encoding starts actually being itself πŸ¦‹ and heads up: the table doesn't have a row for every byte up here. it literally just skips some β€” no 81, no 88, no 8A, no 8C/8D/8E/8F/90, no 98, no 9A. so don't come for me, I'm just reading the table πŸ’€

           80 |  000020AC | EURO SIGN
           82 |  0000201A | SINGLE LOW-9 QUOTATION MARK
           83 |  00000192 | LATIN SMALL LETTER F WITH HOOK
           84 |  0000201E | DOUBLE LOW-9 QUOTATION MARK
           85 |  00002026 | HORIZONTAL ELLIPSIS
           86 |  00002020 | DAGGER
           87 |  00002021 | DOUBLE DAGGER
           89 |  00002030 | PER MILLE SIGN
           8B |  00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
           91 |  00002018 | LEFT SINGLE QUOTATION MARK
           92 |  00002019 | RIGHT SINGLE QUOTATION MARK
           93 |  0000201C | LEFT DOUBLE QUOTATION MARK
           94 |  0000201D | RIGHT DOUBLE QUOTATION MARK
           95 |  00002022 | BULLET
           96 |  00002013 | EN DASH
           97 |  00002014 | EM DASH
           99 |  00002122 | TRADE MARK SIGN
           9B |  0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK

EURO SIGN πŸ’Ά opening the high half, then all the typography glow-up goodies: the low-9 quotes, HORIZONTAL ELLIPSIS, DAGGER and DOUBLE DAGGER, PER MILLE SIGN, the pointing angle quotes, the curly single and double quotes, BULLET, EN DASH, EM DASH and the TRADE MARK SIGN. also LATIN SMALL LETTER F WITH HOOK is just vibing in there at 83 with a code point of 00000192, iykyk.

and then 9C–9F aren't in the table either, so we jump straight to A0 where the Greek of it all begins πŸ‡¬πŸ‡·βœ¨

           A0 |  000000A0 | NO-BREAK SPACE
           A1 |  00000385 | GREEK DIALYTIKA TONOS
           A2 |  00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS
           A3 |  000000A3 | POUND SIGN
           A4 |  000000A4 | CURRENCY SIGN
           A5 |  000000A5 | YEN SIGN
           A6 |  000000A6 | BROKEN BAR
           A7 |  000000A7 | SECTION SIGN
           A8 |  000000A8 | DIAERESIS
           A9 |  000000A9 | COPYRIGHT SIGN
           AB |  000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
           AC |  000000AC | NOT SIGN
           AD |  000000AD | SOFT HYPHEN
           AE |  000000AE | REGISTERED SIGN
           AF |  00002015 | HORIZONTAL BAR
           B0 |  000000B0 | DEGREE SIGN
           B1 |  000000B1 | PLUS-MINUS SIGN
           B2 |  000000B2 | SUPERSCRIPT TWO
           B3 |  000000B3 | SUPERSCRIPT THREE
           B4 |  00000384 | GREEK TONOS
           B5 |  000000B5 | MICRO SIGN
           B6 |  000000B6 | PILCROW SIGN
           B7 |  000000B7 | MIDDLE DOT
           B8 |  00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS
           B9 |  00000389 | GREEK CAPITAL LETTER ETA WITH TONOS
           BA |  0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS
           BB |  000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
           BC |  0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS
           BD |  000000BD | VULGAR FRACTION ONE HALF
           BE |  0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS
           BF |  0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS

(also no row for AA, did you clock that? it just isn't there πŸŽ€)

NO-BREAK SPACE leads the parade, then GREEK DIALYTIKA TONOS, GREEK CAPITAL LETTER ALPHA WITH TONOS β€” and it keeps interleaving the money signs (POUND SIGN, CURRENCY SIGN, YEN SIGN) with Greek capitals wearing tonos: epsilon, eta, iota, omicron, upsilon, omega. plus the little legend GREEK TONOS at B4 doing the accent work πŸ’… and VULGAR FRACTION ONE HALF at BD because why not, king.


and now the big Greek moment, capitals edition πŸ‘‘

           C0 |  00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
           C1 |  00000391 | GREEK CAPITAL LETTER ALPHA
           C2 |  00000392 | GREEK CAPITAL LETTER BETA
           C3 |  00000393 | GREEK CAPITAL LETTER GAMMA
           C4 |  00000394 | GREEK CAPITAL LETTER DELTA
           C5 |  00000395 | GREEK CAPITAL LETTER EPSILON
           C6 |  00000396 | GREEK CAPITAL LETTER ZETA
           C7 |  00000397 | GREEK CAPITAL LETTER ETA
           C8 |  00000398 | GREEK CAPITAL LETTER THETA
           C9 |  00000399 | GREEK CAPITAL LETTER IOTA
           CA |  0000039A | GREEK CAPITAL LETTER KAPPA
           CB |  0000039B | GREEK CAPITAL LETTER LAMDA
           CC |  0000039C | GREEK CAPITAL LETTER MU
           CD |  0000039D | GREEK CAPITAL LETTER NU
           CE |  0000039E | GREEK CAPITAL LETTER XI
           CF |  0000039F | GREEK CAPITAL LETTER OMICRON
           D0 |  000003A0 | GREEK CAPITAL LETTER PI
           D1 |  000003A1 | GREEK CAPITAL LETTER RHO
           D3 |  000003A3 | GREEK CAPITAL LETTER SIGMA
           D4 |  000003A4 | GREEK CAPITAL LETTER TAU
           D5 |  000003A5 | GREEK CAPITAL LETTER UPSILON
           D6 |  000003A6 | GREEK CAPITAL LETTER PHI
           D7 |  000003A7 | GREEK CAPITAL LETTER CHI
           D8 |  000003A8 | GREEK CAPITAL LETTER PSI
           D9 |  000003A9 | GREEK CAPITAL LETTER OMEGA
           DA |  000003AA | GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
           DB |  000003AB | GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
           DC |  000003AC | GREEK SMALL LETTER ALPHA WITH TONOS
           DD |  000003AD | GREEK SMALL LETTER EPSILON WITH TONOS
           DE |  000003AE | GREEK SMALL LETTER ETA WITH TONOS
           DF |  000003AF | GREEK SMALL LETTER IOTA WITH TONOS

notice C0 is a small letter with dialytika and tonos sitting right above all the capitals, and then C1 00000391 starts the alpha–omega run proper. GREEK CAPITAL LETTER LAMDA is spelled LAMDA in the table, don't come at me, I'm copying it exact βœ‹ and there's no row for D2 β€” it goes RHO β†’ SIGMA. the table said what it said πŸ¦‹


final chunk, lowercase Greek + all the accents, and this is where she really ate πŸ’œ

           E0 |  000003B0 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
           E1 |  000003B1 | GREEK SMALL LETTER ALPHA
           E2 |  000003B2 | GREEK SMALL LETTER BETA
           E3 |  000003B3 | GREEK SMALL LETTER GAMMA
           E4 |  000003B4 | GREEK SMALL LETTER DELTA
           E5 |  000003B5 | GREEK SMALL LETTER EPSILON
           E6 |  000003B6 | GREEK SMALL LETTER ZETA
           E7 |  000003B7 | GREEK SMALL LETTER ETA
           E8 |  000003B8 | GREEK SMALL LETTER THETA
           E9 |  000003B9 | GREEK SMALL LETTER IOTA
           EA |  000003BA | GREEK SMALL LETTER KAPPA
           EB |  000003BB | GREEK SMALL LETTER LAMDA
           EC |  000003BC | GREEK SMALL LETTER MU
           ED |  000003BD | GREEK SMALL LETTER NU
           EE |  000003BE | GREEK SMALL LETTER XI
           EF |  000003BF | GREEK SMALL LETTER OMICRON
           F0 |  000003C0 | GREEK SMALL LETTER PI
           F1 |  000003C1 | GREEK SMALL LETTER RHO
           F2 |  000003C2 | GREEK SMALL LETTER FINAL SIGMA
           F3 |  000003C3 | GREEK SMALL LETTER SIGMA
           F4 |  000003C4 | GREEK SMALL LETTER TAU
           F5 |  000003C5 | GREEK SMALL LETTER UPSILON
           F6 |  000003C6 | GREEK SMALL LETTER PHI
           F7 |  000003C7 | GREEK SMALL LETTER CHI
           F8 |  000003C8 | GREEK SMALL LETTER PSI
           F9 |  000003C9 | GREEK SMALL LETTER OMEGA
           FA |  000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA
           FB |  000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA
           FC |  000003CC | GREEK SMALL LETTER OMICRON WITH TONOS
           FD |  000003CD | GREEK SMALL LETTER UPSILON WITH TONOS
           FE |  000003CE | GREEK SMALL LETTER OMEGA WITH TONOS

E0 is GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS β€” the longest name on the block and honestly she earned it 😭 β€” then E1 000003B1 kicks off the lowercase alpha-through-omega run. and clock this: F2 is GREEK SMALL LETTER FINAL SIGMA while F3 is plain GREEK SMALL LETTER SIGMA. both of them. the table gives you options, periodt πŸ’… then the dialytika versions at FA and FB, and it closes out at FE with omicron, upsilon and omega all wearing tonos.

and that's the whole table, every last row of it 🌈 keep scrolling because there's more page after this bestie πŸ’–

πŸ‘‘ AUTHOR πŸ‘‘

Okay bestie, so the copyright tea: 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! β€” yes, that lil' duplication is literally in the original, so we're keeping it fr fr, no cap. πŸ’…


πŸ¦‹ SEE ALSO πŸ¦‹

  • Locale::RecodeData(3) β€” the data side of the recoding operation, go look πŸ‘€
  • Locale::Recode(3) β€” the actual recoding module, the main character ✨
  • perl(1) β€” you know her, you love her, the icon herself πŸͺ

And that's a wrap on the whole page, bestie!! πŸŽ€ Go forth and recode your CP1253 bytes with confidence. πŸ’–

This lil' beauty is from perl v5.42.0, dated 2025-01-22 β€” the whole Locale:...:CP1253(3) situation, perlΓ© v5.42.0 flavour. Slay, stay hydrated, and remember: the vibe check is forever. 🌈🫢