===== Fonts =====
**newRPL** fully supports font customization: each part of the [[manual:chapter2:interface#the-display-interface|display interface]] uses its own font, as well as selected environments such as the command line or the forms engine.
Since text support in **newRPL** is based on [[http://home.unicode.org|Unicode 10.0]], fonts support up to 65536 different glyphs and represent up to 1048576 different code points. Fonts can be any size and be fixed-width or proportional.
A font object is represented on the stack as ''FONTDATA xx yyy...'', where ''yyy...'' is a string of characters (''A''-''Z'', ''a''-''z'', ''$'' and ''#'') encoding the glyphs and the translation table that associates glyphs to Unicode code points while ''xx'' is the length (padded to a multiple of 4 bytes) of the aforementioned block, expressed in nibbles.
The installation of a font on the system is performed by storing the font object into a special variable, whose name will become the name of the font. The command ''[[manual:chapter6:fonts:cmd_fntsto|FNTSTO]]'' executes this operation. A font object can be recalled to the stack by the ''[[manual:chapter6:fonts:cmd_fntrcl|FNTRCL]]'' command and uninstalled using the ''[[manual:chapter6:fonts:cmd_fntpg|FNTPG]]'' command.
**newRPL** already provides 11 system fonts which are always available and can't be uninstalled. Smaller sizes are suited for soft keys, while larger sizes are preferable for stack display; however nothing prevents using large sizes for soft keys and small sizes for stack display.
^ Size ^ Name ^ Notes ^
| 5 pixels | **Font5A** | |
| ::: | **Font5B** | |
| ::: | **Font5C** | |
| 6 pixels | **Font6A** | Default for Menu, Status Area and Plots |
| ::: | **Font6B** | |
| 7 pixels | **Font7A** | |
| 8 pixels | **Font8A** | |
| ::: | **Font8B** | |
| ::: | **Font8C** | Default for Stack (1st level), Stack (other levels), Forms and Command Line |
| ::: | **Font8D** | |
| 10 pixels | **Font10A** | Based on HP48 font |
These are the independent areas and environments that can be customized with fonts:
* **Stack (1st level)**: this area usually contains the expression currently input or the last result computed. Given its relevance, it can be emphasized with a different font from the rest of the stack;
* **Stack (other levels)**: a smaller font can be used to maximize the amount of data displayed in the other levels of the stack;
* **Command line**: this is the area where instructions are currently typed before being interpreted by **newRPL**;
* **Menus**: usually small fonts are used here, however some users might prefer a larger font. it's not possible to choose different fonts for Menu 1 and 2;
* **Status Area**: same as above. A larger font provides readability at the cost of less space for stack display;
* **Plot objects**: to maximize real estate for plots a very small font might be preferable;
* **Forms**: another environment where the ratio between readability and amount of information displayed can be tailored to the user's preferences.
==== Font related commands ====
{{page>manual:chapter6:fonts&nofooter&noeditbtn&inline}}