Locale:...CYRILLIC(3)

πŸ’… Locale::RecodeData::MACCYRILLIC(3)

okay so bestie, we're deep in the Locale::...CYRILLIC(3) manpage β€” say hi to Locale::RecodeData::MACCYRILLIC, the main character of this whole thing πŸŽ€

✨ NAME ✨

Locale::RecodeData::MACCYRILLIC β€” conversion routines for MACCYRILLIC, and yes that's literally the whole job description πŸ’–

🌸 SYNOPSIS 🌸

This module is internal to libintl.  Do not use directly!
🚨 bestie READ THIS ONE. This module is internal to libintl. Do not use it directly! like, not me watching you try to use it anyway 😭 it's giving "please don't touch the glass" energy, fr fr.

πŸ¦‹ DESCRIPTION πŸ¦‹

So this module is generated, okay? like it wasn't hand-written with love by some dev, it got auto-birthed ✨ and what it contains is the conversion tables and routines for MACCYRILLIC. that's the whole vibe. tables + routines. slay 🫢

πŸ’œ COMMENTS πŸ’œ

The following comments have been extracted from the original charmap, and they're kind of iconic ngl:

This charmap has been generated automatically from GNU libiconv
conversions.

and then the part we all need to hear:

⚠️ Please note that aliases listed above are not necessarily valid! like... do not just trust them blindly bestie, i'm begging πŸ™ˆ

πŸ”₯ CHARACTER TABLE πŸ”₯

okay so here's the tea on this table πŸ“:

  • The following table is sorted in the same order as the original charmap. no cap, same order, character for character of ordering 🧚
  • All character codes are in hexadecimal β€” so no decimal jumpscares, iykyk πŸ’€
  • Please read 'ISO-10646' as 'ISO-10646-UCS4' ⭐ like, whenever you see the short version, mentally expand it, it's the same thing with extra letters and extra attitude ✨

and that's where we're at β€” the table itself is up next, so don't go anywhere πŸ‘‘

...and we're straight into the table itself, no warm-up, because the ✨CHARACTER TABLE✨ waits for no one. Three columns, left to right: the local value, the ISO-10646 code point, and the description. Read across, find your character, live your truth 🫢

First up, 00 through 1F β€” the control-character zone, where everything is SHOUTING IN CAPS and rocking a three-letter nickname in parens:

           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)

Little detail bestie, do not "fix" it: 1C is the one with (IS4) and 1F is the one with (IS1). That's the order. Copy it exactly, no improvising πŸ’…

Next chunk, 20 to 3F β€” punctuation and vibes. SPACE kicks it off, and it's giving very much "keyboard, but make it a character list":

           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

30 through 39 are literally DIGIT ZERO up to DIGIT NINE, in order, no plot twist. Obsessed with the consistency honestly πŸŽ€

Then 40 to 5F β€” and no, 40 is COMMERCIAL AT, not just "at sign", the manpage said what it said 😌 followed by the entire capital alphabet, because someone had to type them all out:

           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 to 7F now β€” lowercase era πŸ’– plus the bracket-adjacent icons (LEFT CURLY BRACKET, VERTICAL LINE, RIGHT CURLY BRACKET), TILDE closing out the printable run, and then 7F slamming the door as DELETE (DEL):

           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)

Now the moment the Cyrillic girlies have been waiting for 🌸 80 through 9F is the capital-letter era β€” 80 maps to 00000410 (CYRILLIC CAPITAL LETTER A) and it just runs on through the alphabet, ending at 9F = CYRILLIC CAPITAL LETTER YA:

           80 |  00000410 | CYRILLIC CAPITAL LETTER A
           81 |  00000411 | CYRILLIC CAPITAL LETTER BE
           82 |  00000412 | CYRILLIC CAPITAL LETTER VE
           83 |  00000413 | CYRILLIC CAPITAL LETTER GHE
           84 |  00000414 | CYRILLIC CAPITAL LETTER DE
           85 |  00000415 | CYRILLIC CAPITAL LETTER IE
           86 |  00000416 | CYRILLIC CAPITAL LETTER ZHE
           87 |  00000417 | CYRILLIC CAPITAL LETTER ZE
           88 |  00000418 | CYRILLIC CAPITAL LETTER I
           89 |  00000419 | CYRILLIC CAPITAL LETTER SHORT I
           8A |  0000041A | CYRILLIC CAPITAL LETTER KA
           8B |  0000041B | CYRILLIC CAPITAL LETTER EL
           8C |  0000041C | CYRILLIC CAPITAL LETTER EM
           8D |  0000041D | CYRILLIC CAPITAL LETTER EN
           8E |  0000041E | CYRILLIC CAPITAL LETTER O
           8F |  0000041F | CYRILLIC CAPITAL LETTER PE
           90 |  00000420 | CYRILLIC CAPITAL LETTER ER
           91 |  00000421 | CYRILLIC CAPITAL LETTER ES
           92 |  00000422 | CYRILLIC CAPITAL LETTER TE
           93 |  00000423 | CYRILLIC CAPITAL LETTER U
           94 |  00000424 | CYRILLIC CAPITAL LETTER EF
           95 |  00000425 | CYRILLIC CAPITAL LETTER HA
           96 |  00000426 | CYRILLIC CAPITAL LETTER TSE
           97 |  00000427 | CYRILLIC CAPITAL LETTER CHE
           98 |  00000428 | CYRILLIC CAPITAL LETTER SHA
           99 |  00000429 | CYRILLIC CAPITAL LETTER SHCHA
           9A |  0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
           9B |  0000042B | CYRILLIC CAPITAL LETTER YERU
           9C |  0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
           9D |  0000042D | CYRILLIC CAPITAL LETTER E
           9E |  0000042E | CYRILLIC CAPITAL LETTER YU
           9F |  0000042F | CYRILLIC CAPITAL LETTER YA

Then A0 to BF is the mixed bag β€” punctuation besties (DAGGER, BULLET, PILCROW SIGN, TRADE MARK SIGN, NOT EQUAL TO, INFINITY, PARTIAL DIFFERENTIAL πŸ‘‘) hanging out with a whole crew of Cyrillic capitals and smalls. Keep your eyes peeled, there's CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I living at A7:

           A0 |  00002020 | DAGGER
           A1 |  000000B0 | DEGREE SIGN
           A2 |  000000A2 | CENT SIGN
           A3 |  000000A3 | POUND SIGN
           A4 |  000000A7 | SECTION SIGN
           A5 |  00002022 | BULLET
           A6 |  000000B6 | PILCROW SIGN
           A7 |  00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
           A8 |  000000AE | REGISTERED SIGN
           A9 |  000000A9 | COPYRIGHT SIGN
           AA |  00002122 | TRADE MARK SIGN
           AB |  00000402 | CYRILLIC CAPITAL LETTER DJE
           AC |  00000452 | CYRILLIC SMALL LETTER DJE
           AD |  00002260 | NOT EQUAL TO
           AE |  00000403 | CYRILLIC CAPITAL LETTER GJE
           AF |  00000453 | CYRILLIC SMALL LETTER GJE
           B0 |  0000221E | INFINITY
           B1 |  000000B1 | PLUS-MINUS SIGN
           B2 |  00002264 | LESS-THAN OR EQUAL TO
           B3 |  00002265 | GREATER-THAN OR EQUAL TO
           B4 |  00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
           B5 |  000000B5 | MICRO SIGN
           B6 |  00002202 | PARTIAL DIFFERENTIAL
           B7 |  00000408 | CYRILLIC CAPITAL LETTER JE
           B8 |  00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE
           B9 |  00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE
           BA |  00000407 | CYRILLIC CAPITAL LETTER YI
           BB |  00000457 | CYRILLIC SMALL LETTER YI
           BC |  00000409 | CYRILLIC CAPITAL LETTER LJE
           BD |  00000459 | CYRILLIC SMALL LETTER LJE
           BE |  0000040A | CYRILLIC CAPITAL LETTER NJE
           BF |  0000045A | CYRILLIC SMALL LETTER NJE

C0 to DF next β€” CYRILLIC SMALL LETTER JE opens it, then we're deep in the quotation-mark-and-Cyrillic cinematic universe: LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, HORIZONTAL ELLIPSIS, NO-BREAK SPACE, EN DASH, EM DASH, the curly double and single quotes at D2–D5, DIVISION SIGN, DOUBLE LOW-9 QUOTATION MARK, NUMERO SIGN, and CYRILLIC SMALL LETTER YA at DF. Chef's kiss, no notes 🧚

           C0 |  00000458 | CYRILLIC SMALL LETTER JE
           C1 |  00000405 | CYRILLIC CAPITAL LETTER DZE
           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 |  0000040B | CYRILLIC CAPITAL LETTER TSHE
           CC |  0000045B | CYRILLIC SMALL LETTER TSHE
           CD |  0000040C | CYRILLIC CAPITAL LETTER KJE
           CE |  0000045C | CYRILLIC SMALL LETTER KJE
           CF |  00000455 | CYRILLIC SMALL LETTER DZE
           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 |  0000201E | DOUBLE LOW-9 QUOTATION MARK
           D8 |  0000040E | CYRILLIC CAPITAL LETTER SHORT U
           D9 |  0000045E | CYRILLIC SMALL LETTER SHORT U
           DA |  0000040F | CYRILLIC CAPITAL LETTER DZHE
           DB |  0000045F | CYRILLIC SMALL LETTER DZHE
           DC |  00002116 | NUMERO SIGN
           DD |  00000401 | CYRILLIC CAPITAL LETTER IO
           DE |  00000451 | CYRILLIC SMALL LETTER IO
           DF |  0000044F | CYRILLIC SMALL LETTER YA

And we wrap this stretch with E0 through F0 β€” the small-letter era starts at E0 = 00000430 (CYRILLIC SMALL LETTER A) and marches straight down the lowercase alphabet, with CYRILLIC SMALL LETTER ER holding down F0 for now... πŸ‘€

           E0 |  00000430 | CYRILLIC SMALL LETTER A
           E1 |  00000431 | CYRILLIC SMALL LETTER BE
           E2 |  00000432 | CYRILLIC SMALL LETTER VE
           E3 |  00000433 | CYRILLIC SMALL LETTER GHE
           E4 |  00000434 | CYRILLIC SMALL LETTER DE
           E5 |  00000435 | CYRILLIC SMALL LETTER IE
           E6 |  00000436 | CYRILLIC SMALL LETTER ZHE
           E7 |  00000437 | CYRILLIC SMALL LETTER ZE
           E8 |  00000438 | CYRILLIC SMALL LETTER I
           E9 |  00000439 | CYRILLIC SMALL LETTER SHORT I
           EA |  0000043A | CYRILLIC SMALL LETTER KA
           EB |  0000043B | CYRILLIC SMALL LETTER EL
           EC |  0000043C | CYRILLIC SMALL LETTER EM
           ED |  0000043D | CYRILLIC SMALL LETTER EN
           EE |  0000043E | CYRILLIC SMALL LETTER O
           EF |  0000043F | CYRILLIC SMALL LETTER PE
           F0 |  00000440 | CYRILLIC SMALL LETTER ER
           F1 |  00000441 | CYRILLIC SMALL LETTER ES
           F2 |  00000442 | CYRILLIC SMALL LETTER TE
           F3 |  00000443 | CYRILLIC SMALL LETTER U
           F4 |  00000444 | CYRILLIC SMALL LETTER EF
           F5 |  00000445 | CYRILLIC SMALL LETTER HA
           F6 |  00000446 | CYRILLIC SMALL LETTER TSE
           F7 |  00000447 | CYRILLIC SMALL LETTER CHE
           F8 |  00000448 | CYRILLIC SMALL LETTER SHA
           F9 |  00000449 | CYRILLIC SMALL LETTER SHCHA
           FA |  0000044A | CYRILLIC SMALL LETTER HARD SIGN
           FB |  0000044B | CYRILLIC SMALL LETTER YERU
           FC |  0000044C | CYRILLIC SMALL LETTER SOFT SIGN
           FD |  0000044D | CYRILLIC SMALL LETTER E
           FE |  0000044E | CYRILLIC SMALL LETTER YU
           FF |  000000A4 | CURRENCY SIGN

okay so that's the tail end of the table bestie πŸ’– β€” we made it all the way to FF, and honestly? The last row is a little plot twist. Every other byte in this stretch is living its best Cyrillic life, and then FF shows up like "hey babes, I'm 000000A4" β€” that's the CURRENCY SIGN πŸ€‘. Not Cyrillic at all, just a currency symbol sliding into the last slot like it owns the place. Iconic behaviour, no notes. πŸ’…


πŸ‘‘ AUTHOR

All the credit goes to Guido Flohr, and the copyright line reads exactly like this:

  • 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, the "details!code for details!" bit is literally in the page like that β€” a tiny lil glitch gremlin πŸ™ˆ I'm just reporting what it says, not fixing it, because changing the facts is not the vibe πŸ’€)

So like β€” if you're gonna go read the actual source code, do that, because that's where the real details live. 🫢


🌈 SEE ALSO


aaaand that's the whole page, bestie! πŸŽ€ We did it! Every single byte accounted for, nothing skipped, nothing invented. This little masterpiece shipped as part of perl v5.42.0, dated 2025-01-22 β€” so go forth and decode those Cyrillic bytes with confidence. mwah πŸ’‹πŸŒΈπŸ¦‹