# HP Roman

In computing HP Roman is a family of character sets consisting of HP Roman Extension, HP Roman-8, HP Roman-9 and several variants. Originally introduced by Hewlett-Packard around 1978, revisions and adaptations were published several times up to 1999. The 1985 revisions were later standardized as IBM codepages 1050 and 1051. Supporting many European languages, the character sets were used by various HP workstations, terminals, calculators as well as many printers, also from third-parties.

## Overview

HP Roman is a family of single byte character encodings supporting several Latin script based languages of Europe. It was originally introduced by Hewlett-Packard around 1978 as 7- and 8-bit HP Roman Extension for some of their computer terminals and printers. Early versions of the 8-bit variant were also used by some HP workstations in 1978/1979. Several revisions led to more characters being added before the 8-bit variant of the character set became officially known as HP Roman-8 in 1983. Soon later, this became the default character set of the HP-UX operating system and the page description language PCL for inkjet and laser printers in 1984. The character set was again expanded in 1985. A modified adaptation of the 1984 definition of Roman-8 was used in the HP Portable series of computers, whereas a derivation of the updated 1985 definition of Roman-8 was used in several early RPL calculators and corresponding thermal printers since 1986. The latest off-spring of the family is HP Roman-9, which was introduced in 1999 to include the euro sign. PCL Ventura International is based on HP Roman-8.

## Character set
### Roman Extension

The character set was originally introduced by Hewlett-Packard as extended ASCII 7-bit codepage named HP Roman Extension, which existed at least since 1978. This character set was used as a secondary character set in conjunction with the primary character set, which was identical to ASCII, except for character 127, which was a medium shaded box instead of the delete character. The first 32 characters, that normally functioned as C0 control codes, also had graphical non-control alternatives, that could appear during self-test or display functions mode. Switching between character sets was done using the Shift Out and Shift In characters, or alternatively, on systems supporting 8-bit mode, using the high bit of the character. Before the name "Roman-8" was established for the 8-bit variant in 1983, this was sometimes called "8-bit Roman Extension" or "HP Roman-8 Extension". Over the years both variants were revised to include more characters. The final 1985 revision of the secondary character set was also standardized by IBM in 1989 as code page 1050 (CP1050 or ibm-1050).
Although strictly speaking not part of Roman Extension, the following table shows those rows of the primary character set that differed from ASCII. Note that the first two rows are normally the same and only appear as graphical characters in special circumstances, as described above. Although some of the Unicode control pictures conventionally use three characters rather than two, those "diagonal lettering glyphs are only exemplary; alternate representations may be, and often are used in the visible display of control codes".
HP Roman Primary (1982) :
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 0x | $^N$$_U$ | $^S$$_H$ | $^S$$_X$ | $^E$$_X$ | $^E$$_T$ | $^E$$_Q$ | $^A$$_K$ | 🔔︎ | $^B$$_S$ | $^H$$_T$ | $^L$$_F$ | $^V$$_T$ | $^F$$_F$ | $^C$$_R$ | $^S$$_O$ | $^S$$_I$ |
| 1x | $^D$$_L$ | $^D$$_1$ | $^D$$_2$ | $^D$$_3$ | $^D$$_4$ | $^N$$_K$ | $^S$$_Y$ | $^E$$_B$ | $^C$$_N$ | $^E$$_M$ | $^S$$_B$ | $^E$$_C$ | $^F$$_S$ | $^G$$_S$ | $^R$$_S$ | $^U$$_S$ |
| 7x | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | ▒ |
The following table shows the 1982 version; a current variant is shown in the Roman-8 section below. The table assumes 8-bit mode is used; if not, subtract 128 (80$_{16}$) from the character code.
HP Roman Extension (1982) :
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| Ax | | | | | | | | | ´ | ˋ | | ¨ | ˜ | | | ₤ |
| Bx | ‾ | | | ˚ | | ç | Ñ | ñ | ¡ | ¿ | ¤ | £ | | § | | |
| Cx | â | ê | ô | û | á | é | ó | ú | à | è | ò | ù | ä | ë | ö | ü |
| Dx | Å | î | Ø | Æ | å | í | ø | æ | Ä | ì | Ö | Ü | É | ï | ß | |
* 1 2 In Unicode, the pound / lira symbol is unified as U+00A3 £ and whether this character has a single or double bar is merely considered a typographical variation of the same character. U+20A4 ₤ exists solely for compatibility with this character set, HP Roman-8, in which the singly barred glyph is coded as BB$_{16}$ and the doubly barred glyph as AF$_{16}$.

### Roman-8

HP Roman-8 is an 8-bit single byte character encoding that is mainly used on HP-UX and many Hewlett-Packard and PCL compatible printers. The name Roman-8 appeared in 1983, but a precursor of the character set was already used by the HP 250 and HP 300 workstations since 1978/1979 as 8-bit Roman Extension.
The original 1983/1984 version of Roman-8 still had some code points undefined. In a 1985 revision code points 177 (Ý), 178 (ý), 242 (·), 243 (µ), 244 (¶) and 245 (¾) were added and the appearance of code point 228 was changed from a stroked d (đ) to an eth (ð). This final revision of the character set was also standardized as codepage 1051 by IBM in 1989.
In contrast to the newer HP Roman-9, HP Roman-8 does not provide a code point for the euro sign.
The following table shows the latest 1985 definition of the HP Roman-8 character set (with some remarks regarding former definitions and alternative interpretations). Each character is shown with a potential Unicode equivalent and its decimal code, however, sources differ in the recommended translations for some of the codes even among definitions from Hewlett-Packard and IBM.
HP Roman-8 :
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 0x | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI |
| 1x | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
| 2x | SP | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
| 3x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
| 4x | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| 5x | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
| 6x | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
| 7x | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | ▒ |
| 8x | | | | | | | | | | | | | | | | |
| 9x | | | | | | | | | | | | | | | | |
| Ax | NBSP | À | Â | È | Ê | Ë | Î | Ï | ´ | ˋ/` | ˆ | ¨ | ˜ | Ù | Û | ₤ |
| Bx | ¯/‾ | Ý | ý | °/˚ | Ç | ç | Ñ | ñ | ¡ | ¿ | ¤ | £ | ¥ | § | ƒ | ¢ |
| Cx | â | ê | ô | û | á | é | ó | ú | à | è | ò | ù | ä | ë | ö | ü |
| Dx | Å | î | Ø | Æ | å | í | ø | æ | Ä | ì | Ö | Ü | É | ï | ß/β | Ô |
| Ex | Á | Ã | ã | Ð | ð/đ | Í | Ì | Ó | Ò | Õ | õ | Š | š | Ú | Ÿ | ÿ |
| Fx | Þ | þ | · | µ/μ | ¶ | ¾ | SHY/- | ¼ | ½ | ª | º | « | ■ | » | ± | |
* ↑ While this character would display as "▒", it was also the character sent by the delete key of HP terminals, so it could be mapped to U+007F DEL instead.
* ↑ See note on Roman Extension above

#### Names

This character set has over the years acquired a number of different names, such as:
* HP Roman-8: derived from the PCL specification.
* hp-roman8: the IETF/IANA name; many others have followed suit. Since IANA character set identifiers aren't case-sensitive, the above can also be written as HP-Roman8.
* Roman 8
* HP_ROMAN8
* ROMAN8
* HP Roman
* roman8
* Code page 1051 and hence CP1051 or IBM-1051.

### Modified Roman-8

In 1984, Hewlett-Packard introduced the HP 110 / HP Portable personal computer followed by the HP 110 Plus / HP Portable Plus in 1985. In "HP mode" they supported a derivation of the 1984 revision of 8-bit HP Roman-8 (still lacking the six additional characters at code points 177 to 178 and 242 to 245, and with code point 228 still resembling a stroked d (đ)), but with 32 additional graphical symbols at code points 128 to 159, including a rich set of box-drawing characters.
Modified HP Roman-8 (1984), variant I (HP 110/110 Plus) :
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 7x | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | ▒ |
| 8x | ◄ | ▲ | ▼ | ► | ╝ | ╗ | ╔ | ╚ | ╣ | ╩ | ╦ | ╠ | ═ | ║ | ╬ | ♦ |
| 9x | ↑ | ▀ | ▄ | ↓ | ┘ | ┐ | ┌ | └ | ┤ | ┴ | ┬ | ├ | ─ | │ | ┼ | █ |
| Ax | NBSP | À | Â | È | Ê | Ë | Î | Ï | ´ | ˋ/` | ˆ | ¨ | ˜ | Ù | Û | ₤ |
* ↑ See note on Roman Extension above
In 1986, Hewlett-Packard introduced the HP-18C calculator and HP 82240A thermo printer, which internally used an extended variant of the 1985 revision of the 8-bit HP Roman-8 character set (now with the six additional characters defined and with code point 228 already changed to an eth (ð)), but with the code points 127 (0x7F) and 160 (0xA0) as well as the control codes in the range 128 to 159 (0x80 to 0x9F) being replaced by additional displayable characters, some of which were derived from the HP-41C/CV/CX's FOCAL character set and others incorporated into the revised FOCAL character set used by the HP-42S calculator, although at different code points. On the HP-28 series, characters above 147 (0x93) could not be displayed on the calculator, only be printed.
There is no official code point definition for the euro sign in this modified character set. The HP 49/50 series of calculators use a different character set based on ECMA-94 / ISO 8859-1 which includes the euro symbol.
Modified HP Roman-8 (1986), variant II (HP 82240A/B & HP-28C/S) :
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 0x | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI |
| 1x | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
| 7x | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | ▒ |
| 8x | NBSP | ÷ | × | √ | ∫ | Σ | ▶ | π | ∂ | ≤ | ≥ | ≠ | α | → | ← | µ/μ |
| 9x | ␊ | ° | « | » | ⊦ | ₁ | ₂ | ² | ³ | ᵢ | ⱼ | ‥ | ⁱ | ʲ | ᵏ | ⁿ |
| Ax | ∡/∠ | À | Â | È | Ê | Ë | Î | Ï | ´ | ˋ/` | ˆ | ¨ | ˜ | Ù | Û | ₤ |
* ↑ The glyph at code point 148 (⊦) in this variant of HP Roman-8 is called APPEND character in Hewlett-Packard terminology. In the HP-41C/CV/CX and HP-42S series of calculators, it is used to indicate that the following characters will be appended to the alpha register rather than replacing the existing contents of the register. However, these calculators use the FOCAL character set, where the glyph is located at code point 127.
* ↑ See note on Roman Extension above

### Roman-9

HP Roman-9 (also known as HP Roman 9, hp-roman9, roman9 or R9) is a slight modification of the 8-bit HP Roman-8 character set where the general currency sign (¤) at code point 186 (0xBA) was replaced by the euro sign (€). It was introduced in early 1999. As of 2017, HP Roman-9 still has no known code page number assigned to it.
HP Roman-9 :
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| Bx | ¯/‾ | Ý | ý | °/˚ | Ç | ç | Ñ | ñ | ¡ | ¿ | € | £ | ¥ | § | ƒ | ¢ |