Locale:...P_ROMAN8(3)

๐Ÿ’… Locale:...P_ROMAN8(3) โ€” User Contributed Perl Documentation

okay so bestie, buckle up, because this is Locale::RecodeData::HP_ROMAN8, page Locale:...P_ROMAN8(3) from the User Contributed Perl Documentation. it's giving very "deep internals, do not touch" energy, and honestly? that's exactly what it is. ๐Ÿซถ


โœจ NAME โœจ

Locale::RecodeData::HP_ROMAN8 โ€” literally just conversion routines for HP_ROMAN8. that's the whole vibe check. ๐ŸŽ€


โœจ SYNOPSIS โœจ

โš ๏ธ bestie read this twice: this module is internal to libintl. Do not use directly! like, it said what it said. ๐Ÿ™ˆ

โœจ DESCRIPTION โœจ

so this module is generated โ€” not hand-written, no cap โ€” and it contains the conversion tables and routines for HP-ROMAN8. that's it, that's the description. short and iconic. โญ


โœจ COMMENTS โœจ

these comments were extracted straight out of the original charmap, copied here verbatim because we do not gatekeep provenance:

version: 1.0
 source: LaserJet IIP Printer User's Manual,
 HP part no 33471-90901, Hewlet-Packard, June 1989.
alias ROMAN8
alias R8

heads up though: please note that the aliases listed above are not necessarily valid! ๐Ÿ˜ญ like they're in the charmap, sure, but that doesn't mean they're legit to use. don't come for me, that's just what the page says. ๐Ÿ’€


โœจ CHARACTER TABLE โœจ

the table that follows is sorted in the same order as the original charmap โ€” no reshuffling, no "fixing", we keep it exactly how it was born. ๐ŸŒธ

also, all character codes are in hexadecimal. hex girlies rise. ๐Ÿ”ฅ

and one little naming note so nobody gets confused at the function: please read 'ISO-10646' as 'ISO-10646-UCS4'. it's giving "same thing, longer name", iykyk. ๐Ÿฆ‹

โ€ฆand the actual table is coming right up in the next part, so don't go anywhere ๐Ÿ’œ

So here's the table itself, bestie โ€” the whole vibe check of ROMAN8 laid out in one place ๐Ÿ’… Every row is <local byte> โ†’ <ISO-10646 code point> โ†’ the actual name of the character. Settle in, hydrate, this is a long one.

First up: the low control characters, 00 through 1F. Absolute bedrock, the OGs, the ones that predate everything and still run the world ๐ŸŒˆ

        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)

Ok notice how <cyan>1C</cyan> through <cyan>1F</cyan> are labelled FILE SEPARATOR (IS4), GROUP SEPARATOR (IS3), RECORD SEPARATOR (IS2), UNIT SEPARATOR (IS1) โ€” the numbering goes backwards while the bytes go forwards. Not me being chaotic, that's just what the table says ๐Ÿ™ˆ


Then <pink>20</pink> through <pink>7F</pink> โ€” the printable party zone plus <cyan>DEL</cyan> at the end, and note that these map to themselves in ISO-10646, straight down the line โœจ

           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 (DEL)

2D being HYPHEN-MINUS and 2E being FULL STOP โ€” the hyphen/period combo that lives in every filename you've ever typed. Respect the elders ๐Ÿซถ


Now the spicy zone: <hotpink>80</hotpink> to <hotpink>9F</hotpink>. These are still control-ish characters, and yeah, they do have ISO-10646 codepoints that match up exactly (00000080โ€“0000009F), with acronyms that go absolutely feral ๐Ÿ”ฅ

           80 |  00000080 | PADDING CHARACTER (PAD)
           81 |  00000081 | HIGH OCTET PRESET (HOP)
           82 |  00000082 | BREAK PERMITTED HERE (BPH)
           83 |  00000083 | NO BREAK HERE (NBH)
           84 |  00000084 | INDEX (IND)
           85 |  00000085 | NEXT LINE (NEL)
           86 |  00000086 | START OF SELECTED AREA (SSA)
           87 |  00000087 | END OF SELECTED AREA (ESA)
           88 |  00000088 | CHARACTER TABULATION SET (HTS)
           89 |  00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
           8A |  0000008A | LINE TABULATION SET (VTS)
           8B |  0000008B | PARTIAL LINE FORWARD (PLD)
           8C |  0000008C | PARTIAL LINE BACKWARD (PLU)
           8D |  0000008D | REVERSE LINE FEED (RI)
           8E |  0000008E | SINGLE-SHIFT TWO (SS2)
           8F |  0000008F | SINGLE-SHIFT THREE (SS3)
           90 |  00000090 | DEVICE CONTROL STRING (DCS)
           91 |  00000091 | PRIVATE USE ONE (PU1)
           92 |  00000092 | PRIVATE USE TWO (PU2)
           93 |  00000093 | SET TRANSMIT STATE (STS)
           94 |  00000094 | CANCEL CHARACTER (CCH)
           95 |  00000095 | MESSAGE WAITING (MW)
           96 |  00000096 | START OF GUARDED AREA (SPA)
           97 |  00000097 | END OF GUARDED AREA (EPA)
           98 |  00000098 | START OF STRING (SOS)
           99 |  00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
           9A |  0000009A | SINGLE CHARACTER INTRODUCER (SCI)
           9B |  0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
           9C |  0000009C | STRING TERMINATOR (ST)
           9D |  0000009D | OPERATING SYSTEM COMMAND (OSC)
           9E |  0000009E | PRIVACY MESSAGE (PM)
           9F |  0000009F | APPLICATION PROGRAM COMMAND (APC)

8C is PARTIAL LINE BACKWARD (PLU) โ€” iconic acronym/name mismatch, and 99 is the very extra SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI). The 90s control set really said "let's have twenty-eight different introducers" and honestly? Slay ๐Ÿ’€


And now <rainbow>the main character</rainbow> of the whole table: <pink>A0</pink> through <pink>E6</pink>, where ROMAN8 starts mapping local bytes to codepoints that are not equal to themselves anymore. This is the part everyone actually opens the page for ๐ŸŒธ

           A0 |  000000A0 | NO-BREAK SPACE
           A1 |  000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
           A2 |  000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
           A3 |  000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
           A4 |  000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
           A5 |  000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
           A6 |  000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
           A7 |  000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
           A8 |  000000B4 | ACUTE ACCENT
           A9 |  000002CB | MODIFIER LETTER GRAVE ACCENT (Mandarin Chinese fourth tone)
           AA |  000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT
           AB |  000000A8 | DIAERESIS
           AC |  000002DC | SMALL TILDE
           AD |  000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
           AE |  000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
           AF |  000020A4 | LIRA SIGN
           B0 |  000000AF | MACRON
           B1 |  000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
           B2 |  000000FD | LATIN SMALL LETTER Y WITH ACUTE
           B3 |  000000B0 | DEGREE SIGN
           B4 |  000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
           B5 |  000000E7 | LATIN SMALL LETTER C WITH CEDILLA
           B6 |  000000D1 | LATIN CAPITAL LETTER N WITH TILDE
           B7 |  000000F1 | LATIN SMALL LETTER N WITH TILDE
           B8 |  000000A1 | INVERTED EXCLAMATION MARK
           B9 |  000000BF | INVERTED QUESTION MARK
           BA |  000000A4 | CURRENCY SIGN
           BB |  000000A3 | POUND SIGN
           BC |  000000A5 | YEN SIGN
           BD |  000000A7 | SECTION SIGN
           BE |  00000192 | LATIN SMALL LETTER F WITH HOOK
           BF |  000000A2 | CENT SIGN
           C0 |  000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
           C1 |  000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
           C2 |  000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
           C3 |  000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
           C4 |  000000E1 | LATIN SMALL LETTER A WITH ACUTE
           C5 |  000000E9 | LATIN SMALL LETTER E WITH ACUTE
           C6 |  000000F3 | LATIN SMALL LETTER O WITH ACUTE
           C7 |  000000FA | LATIN SMALL LETTER U WITH ACUTE
           C8 |  000000E0 | LATIN SMALL LETTER A WITH GRAVE
           C9 |  000000E8 | LATIN SMALL LETTER E WITH GRAVE
           CA |  000000F2 | LATIN SMALL LETTER O WITH GRAVE
           CB |  000000F9 | LATIN SMALL LETTER U WITH GRAVE
           CC |  000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
           CD |  000000EB | LATIN SMALL LETTER E WITH DIAERESIS
           CE |  000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
           CF |  000000FC | LATIN SMALL LETTER U WITH DIAERESIS
           D0 |  000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
           D1 |  000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
           D2 |  000000D8 | LATIN CAPITAL LETTER O WITH STROKE
           D3 |  000000C6 | LATIN CAPITAL LETTER AE
           D4 |  000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
           D5 |  000000ED | LATIN SMALL LETTER I WITH ACUTE
           D6 |  000000F8 | LATIN SMALL LETTER O WITH STROKE
           D7 |  000000E6 | LATIN SMALL LETTER AE
           D8 |  000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
           D9 |  000000EC | LATIN SMALL LETTER I WITH GRAVE
           DA |  000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
           DB |  000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
           DC |  000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
           DD |  000000EF | LATIN SMALL LETTER I WITH DIAERESIS
           DE |  000000DF | LATIN SMALL LETTER SHARP S (German)
           DF |  000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
           E0 |  000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
           E1 |  000000C3 | LATIN CAPITAL LETTER A WITH TILDE
           E2 |  000000E3 | LATIN SMALL LETTER A WITH TILDE
           E3 |  000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
           E4 |  000000F0 | LATIN SMALL LETTER ETH (Icelandic)
           E5 |  000000CD | LATIN CAPITAL LETTER I WITH ACUTE
           E6 |  000000CC | LATIN CAPITAL LETTER I WITH GRAVE

Little things I'm obsessed with here, ngl:

  • <mint>A8</mint> is a bare ACUTE ACCENT and <mint>AB</mint> is a bare DIAERESIS โ€” standalone diacritics, living their best separate lives, mapping to 000000B4 and 000000A8 respectively ๐Ÿฆ‹
  • <mint>A9</mint> gets a whole parenthetical: MODIFIER LETTER GRAVE ACCENT (Mandarin Chinese fourth tone) at 000002CB, and <mint>AA</mint> / <mint>AC</mint> are 000002C6 / 000002DC โ€” the only three rows in this chunk that jump up into the 000002xx range ๐Ÿ’…
  • <mint>AF</mint> is LIRA SIGN at 000020A4, the other row that leaps out of the 000000xx neighbourhood ๐Ÿ‘‘
  • <mint>BE</mint> is LATIN SMALL LETTER F WITH HOOK at 00000192 โ€” the weirdo, the outlier, the one that doesn't belong to any tidy block, and honestly? main character energy ๐ŸŽ€
  • <mint>DE</mint> is LATIN SMALL LETTER SHARP S (German) โ€” the รŸ, the icon, the one German letter that refuses to be replaced by ss quietly ๐Ÿ“
  • <mint>E3</mint> / <mint>E4</mint> are LATIN CAPITAL LETTER ETH (Icelandic) and LATIN SMALL LETTER ETH (Icelandic) โ€” รฐ and รฐ, the Icelandic delegation showed up ๐Ÿ‡ฎ๐Ÿ‡ธ

And notice the ordering drama in C0โ€“CF: it goes circumflex (E2, EA, F4, FB), then acute (E1, E9, F3, FA), then grave (E0, E8, F2, F9), then diaeresis (E4, EB, F6, FC) โ€” four vowels, four accents, beautifully grouped ๐Ÿงš Not alphabetical, not by codepoint, just vibes.

That's E6, and the table is still going โ€” there are more local bytes to get through, so keep scrolling bestie, we're nowhere near done yet ๐Ÿ’–

           E7 |  000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
           E8 |  000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
           E9 |  000000D5 | LATIN CAPITAL LETTER O WITH TILDE
           EA |  000000F5 | LATIN SMALL LETTER O WITH TILDE
           EB |  00000160 | LATIN CAPITAL LETTER S WITH CARON
           EC |  00000161 | LATIN SMALL LETTER S WITH CARON
           ED |  000000DA | LATIN CAPITAL LETTER U WITH ACUTE
           EE |  00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
           EF |  000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
           F0 |  000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
           F1 |  000000FE | LATIN SMALL LETTER THORN (Icelandic)
           F2 |  000000B7 | MIDDLE DOT
           F3 |  000000B5 | MICRO SIGN
           F4 |  000000B6 | PILCROW SIGN
           F5 |  000000BE | VULGAR FRACTION THREE QUARTERS
           F6 |  00002014 | EM DASH
           F7 |  000000BC | VULGAR FRACTION ONE QUARTER
           F8 |  000000BD | VULGAR FRACTION ONE HALF
           F9 |  000000AA | FEMININE ORDINAL INDICATOR
           FA |  000000BA | MASCULINE ORDINAL INDICATOR
           FB |  000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
           FC |  000025A0 | BLACK SQUARE
           FD |  000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
           FE |  000000B1 | PLUS-MINUS SIGN

thatโ€™s the whole table, bestie โ€” every last byte accounted for ๐Ÿ’…โœจ


๐Ÿ’– 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! โ€” yes, thatโ€™s the exact wording, duplicate and all ๐Ÿ™ˆ

๐Ÿฆ‹ SEE ALSO ๐Ÿฆ‹

the friend group, no skips:


footer vibe check: source/version perl v5.42.0, dated 2025-01-22 โ€” bye bestie, go encode something iconic ๐Ÿ’–โœจ