## Appendix E. Data Explorer Fonts

All fonts used by Data Explorer are stored as files in the `/usr/share/dx/fonts` directory. Users can add their own fonts by creating a file in the correct format and using the DXFONTS environment variable to list the directory or directories where the additional font files are stored.

Fonts are stored in the standard Data Explorer file format. A font file must contain the following information (for more information on the Data Explorer file format, see Appendix B. "Importing Data: File Formats").

The font is a group that contains 256 fields, one for each ASCII character value, and two attributes describing the height of the font. For example:

     object "myfont" class group
        member 0 value "empty"
        member 1 value "control-a"
       .
       ∶
        member 65 value "A"
        member 66 value "B"
       .
       ∶
        member 255 value "empty"
        attribute "font ascent" number 0.75
        attribute "font descent" number 0.25

The attributes describe the maximum height above and below the baseline for all characters in this font. The values should be positive floating point numbers and they should add to 1.0.

Each member of the group must be a field.

Each field must contain a 2-D or 3-D "positions" component, and a "connections" component with element type "lines" or "triangles".

     object "positions1" class array type float rank 1 shape 3  items 3
       data follows  0.1 0.5 0.0   0.3 0.6 0.0    0.5 0.5 0.0
     object "connections1" class array type int rank 1 shape 2 items 2
       data follows  0 1   1 2
       attribute "element type" string "lines"
       attribute "ref" string "positions"

The character positions are assumed to have their horizontal (X) origin at the left edge and their vertical (Y) origin at the baseline.

Each field must have a "char width" attribute describing the character width for spacing when combining characters into strings.

     object "circumflex" class field
       component "positions" value "positions1"
       component "connections1" value "connections1"
       attribute "char width" number 0.55

The fields can contain other components (such as "colors" or "normals" ), although the standard Data Explorer modules will not process this information.

Those ASCII codes for which there is no representation should be empty fields:

    object "empty" class field

A space character can be generated by making an empty field with a positive width:

     object "wide" class field
       attribute "char width" number 0.3
     object "myfont" class group
      .
      ∶
       member 32 value "wide"
      .
      ∶

Overstrike characters can be generated by making a field with a zero or negative width:

     object "umlaut" class field
       component "connections" value "con1"
       component "positions"   value "pos1"
       component "char width"  number 0.0

The following fonts are supplied with Data Explorer, and may be found in this directory `/usr/share/dx/fonts`. Each one is a Data Explorer format file. If you would like to look at the structure of a font file, simply Import the data using the Import module, and Export it in text format.

`default fonts` | area | an area font (same as pitman)
| fixed | a fixed width font (same as roman_sfix)
| variable | a variable width font (same as roman_s)
`cyrilic font` | cyril_d | a cyrilic double-line font
`Gothic fonts` | gothiceng_t | an English gothic triple-line font
| gothicger_t | a German gothic triple-line font
| gothicit_t | an Italian gothic triple-line font
`Greek fonts` | greek_s | a Greek single-line font
| greek_d | a Greek double-line font
`italic fonts` | italic_d | an italic double-line font
| italic_t | an italic triple-line font
`area (filled) font` | pitman | an area typewriter style font that includes European National Language characters
`Roman fonts` | roman_s | a Roman single-line sans serif font
| roman_d | a Roman double-line sans serif font
| roman_dser | a Roman double-line serif font
| roman_tser | a Roman triple-line serif font
| roman_ext | an extended character set Roman single-line sans-serif font that includes European National Language characters
`script fonts` | script_s | a script single-line font
| script_d | a script double-line font

The default font directory is `/usr/share/dx/fonts.` For user-added fonts, the DXFONTS variable can contain a colon-separated list of directories to search for fonts before searching the default directory. A font file name must be the same as the font name. For example, the font "cursive" should be stored in the "cursive.dx" file, and the `font` parameter to the Caption module should be "cursive" to use this font. The names of user-supplied fonts should be all lowercase.

Since font files are in the standard Data Explorer file format, in addition to being used by Caption, Plot, AutoAxes, and ColorBar, they can be read into Data Explorer with Import and processed like any other group. Individual characters can be selected with Select, colored with Color, and displayed with ShowConnections. Newly constructed fonts can be exported with Export.

Table 8 and Table 9 illustrate those characters that are part of the roman_ext font. The appearance of a character may differ from that illustrated in the tables.

Table 8. roman_ext Font Characters (Part 1)

Octal Value | 40 | 60 | 100 | 120 | 140 | 160 | 200
--- | --- | --- | --- | --- | --- | --- | ---
0 | Blank | 0 | @ | P | ' | p | Ç
1 | ! | 1 | A | Q | a | q | ü
2 | " | 2 | B | R | b | r | é
3 | # | 3 | C | S | c | s | â
4 | $ | 4 | D | T | d | t | ä
5 | % | 5 | E | U | e | u | à
6 | & | 6 | F | V | f | v | å
7 | ' | 7 | G | W | g | w | ç
10 | ( | 8 | H | X | h | x | ê
11 | ) | 9 | I | Y | i | y | ë
12 | * | : | J | Z | j | z | è
13 | + | ; | K | [ | k | { | ï
14 | , | < | L | \ | l | &splitvbar; | î
15 | - | = | M | ] | m | } | ì
16 | . | > | N | -^ | n | ~ | Ä
17 | / | ? | O | _ | o | &ballot; | &angstrom;

Table 9. roman_ext Font Characters (Part 2)

Octal Value | 220 | 240 | 260 | 300 | 320 | 340 | 360
--- | --- | --- | --- | --- | --- | --- | ---
0 | É | á |  | α | ρ | ι |
1 | æ | í |  | B | σ | κ |
2 | Æ | ó |  | γ | τ | λ |
3 | ô | ú |  | δ | υ | μ |
4 | ö | ñ |  | ε | φ | ν |
5 | ò | ñ |  | ζ | χ | ξ |
6 | û | a |  | η | ψ | ο |
7 | ù | o |  | θ | ω | π |
8 | ÿ | &invq; |  | Ι | α | ρ |
9 | Ö |  |  | &Kappa | β | σ |
10 | Ü |  |  | &Lambda | γ | τ |
11 | ¢ |  |  | Μ | δ | υ |
12 | £ |  |  | Ν | ε | φ |
13 | ¥ | ¡ |  | Ξ | ζ | χ |
14 | &peseta; | " |  | Ο | η | ψ |
15 | &florin; | " | &integral; | Π | θ | ω |

Table 10. Additional Symbols \001 - \035

1 | apostrophe curly open | '
2 | apostrophe curly close | '
3 | backslash | \
4 | bullet | *
5 | cent | ¢
6 | copyright | ©
7 | cross product | ×
10 | degree | °
11 | emdash | --
12 | endash | -
13 | exclamation | ¡
14 | franc | &florin;
15 | guillemet open | "
16 | guillemet close | "
17 | guillemet single open |
20 | guillemet single close |
21 | infinity | &infinity;
22 | integral | &integral;
23 | interrogatory | &invq;
24 | minus | -
25 | notequal | <>
26 | plusminus | ±
27 | pound | £
30 | quote Open | "
31 | quote close | "
32 | registered | ®
33 | similar | &similar;
34 | trademark | (TM)
35 | yen | ¥

The octal values for the English and Greek character sets in the pitman (or area) font are the same as those illustrated in Table 8 and Table 9. European National Languages characters are provided using single octal values or using a combination of values (see Table 11). For example, ä is produced using `252a`, and î is produced using `\221\237`. Additional special symbols are provided with octal values 001 to 035 (see Table 10).

The following illustrates how you could produce a caption that contains the string "Jag är här på semester".

    caption = Caption("Jag \252ar h\252ar p\213a semester"; font="pitman");
    camera = AutoCamera (caption);
    Display(caption,camera);

Table 11. European National Language Symbols and Characters \200 to \255

200 | aBar |  |
201 | accentAcute | ´ | To type a acute, enter \201a. To type i acute, enter\201\237.
202 | AccentAcute | ´ | (Uppercase except I)
203 | IAccentAcute | Í | (Uppercase I Acute) To type A acute, enter \202A.
204 | accentGrave | ` | (lowercase)
205 | AccentGrave | ` | (Uppercase except I)
206 | IAccentGrave | Ì | (Uppercase I)
207 | accentHungarian |  | (Double quote accent over o and u)
210 | AccentHungarian |  | (Double quote accent over O and U)
211 | ae | æ | (Ligature)
212 | AE | Æ | (Ligature)
213 | angstrom |  | (Lowercase)
214 | Angstrom |  | (Uppercase)
215 | breve |  | (Lowercase)
216 | Breve |  | (Uppercase)
217 | c cedilla | ç | (Lowercase c cedilla)
220 | C cedilla | Ç | (Uppercase C cedilla)
221 | widecircumflex | ^ | (Looks better than ASCII Circumflex when used as a lowercase accent)
222 | WideCircumflex | ^ | (Uppercase except for I and O)
223 | WideCircumflex | Î | (Uppercase I)
224 | WideCircumflex | Ô | (Uppercase O)
225 | Clicka |  | (Used in Lithuanian over C, S, Z, c, s, and z; also called hacek or caron)
226 | CommaRomanian |  | (Used in Romanian under S, T, s, and t)
227 | enya |  | (Lowercase for Spanish n, and Portuguese a and o)
230 | Enya |  | (Uppercase for Spanish N, and Portuguese A and O)
231 | eth | ð | (Icelandic)
232 | Eth | Ð | (Icelandic)
233 | hookLithuanian |  | (Cedilla-like hook used under Lithuanian a, e, and u)
234 | ihookLithuanian |  | (Cedilla-like hook used under Lithuanian i)
235 | HookLithuanian |  | (Cedilla-like hook used under Lithuanian A, E, and U)
236 | IHookLithuanian |  | (Cedilla-like hook used under Lithuanian I)
237 | i dotless |  | (Dotless i to be accented with acute, grave, etc.)
240 | l slash |  | (Slashed l used in Polish)
241 | L slash |  | (Slashed L used in Polish)
242 | macron |  | (Lowercase)
243 | Macron |  | (Uppercase)
244 | oBar |  |
245 | o slash | ø | (Danish slashed o)
246 | O slash | Ø | (Danish slashed O)
247 | Overdot | . | (Dot placed over Polish Z and z)
250 | thorn | þ | (Icelandic)
251 | Thorn | Þ | (Icelandic)
252 | umlaut | ¨aut; | (Lowercase, also called diaresis)
253 | Umlaut | ¨aut; | (Uppercase, except for I and O)
254 | IUmlaut | ¨aut; | (I umlaut)
255 | OUmlaut | ¨aut; | (O umlaut)

[ OpenDX Home at IBM | OpenDX.org ]