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 bareACUTE ACCENTand<mint>AB</mint>is a bareDIAERESISโ standalone diacritics, living their best separate lives, mapping to000000B4and000000A8respectively ๐ฆ<mint>A9</mint>gets a whole parenthetical:MODIFIER LETTER GRAVE ACCENT (Mandarin Chinese fourth tone)at000002CB, and<mint>AA</mint>/<mint>AC</mint>are000002C6/000002DCโ the only three rows in this chunk that jump up into the000002xxrange ๐<mint>AF</mint>isLIRA SIGNat000020A4, the other row that leaps out of the000000xxneighbourhood ๐<mint>BE</mint>isLATIN SMALL LETTER F WITH HOOKat00000192โ the weirdo, the outlier, the one that doesn't belong to any tidy block, and honestly? main character energy ๐<mint>DE</mint>isLATIN SMALL LETTER SHARP S (German)โ the ร, the icon, the one German letter that refuses to be replaced byssquietly ๐<mint>E3</mint>/<mint>E4</mint>areLATIN CAPITAL LETTER ETH (Icelandic)andLATIN 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 ๐โจ
๐ฆ 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