Roger Firth's IF pages

Home

Inform character sets

Email
Back up

If the print strings in your game include only symbols from the ASCII (or Basic Latin) character set -- values in the range 32..126 or $20..$7E -- then you probably don't need to read this. The information here is all about how to address the Extended Latin characters: mostly European accented letters with a few miscellaneous signs throw in for good measure. If you wish to display such characters, you have four options. Some carry disadvantages, which may affect which one you choose:

  1. Insert them literally -- for example cause célèbre -- using whatever means your text editor provides for extending the keyboard repertoire.
    Disadvantage: Your source file isn't portable between IBM PCs and Apple Macs. The word célèbre created on a PC might appear as cÈlËbre if that file was copied to a Mac, because the two physical machines use different character encoding.
     
  2. Use the Inform compiler's ability to embed internal character codes -- for example cause c@@170l@@182bre -- by typing @@ followed by a decimal number.
    Disadvantage: Your source file isn't portable between Z-machine and Glulx. The word c@@170l@@182bre compiles to célèbre on the Z-machine, but to cªl¶bre when the target is Glulx, because the two virtual machines use different character encoding. (But remember: character codes in the range @@32 to @@126 are the same in Glulx and the Z-machine. Thus, @@64 is "@", @@92 is "\", @@94 is "^" and @@126 is "~" in both environments.)
     
  3. Use the compiler's ability to embed escape sequences -- for example cause c@'el@`ebre -- by typing @ followed by a character pair.
     
  4. Use the compiler's ability to embed UniCode values -- for example cause c@{E9}l@{E8}bre -- by typing @{..} around a hexadecimal number.

So, from this wealth of possibilities, we can deduce a couple of guidelines:

Also, you might take a look at Wouter ten Brink's cross-VM mapchar.zip from the Archive.

These are the available Extended Latin characters.

Character

ZSCII charset

Glulx charset

Escape

UniCode

À (A grave)
Á (A acute)
 (A circumflex)
à (A tilde)
Ä (A diaeresis)
Å (A ring)
à (a grave)
á (a acute)
â (a circumflex)
ã (a tilde)
ä (a diaeresis)
å (a ring)

@@186
@@175
@@196
@@208
@@158
@@202
@@181
@@169
@@191
@@205
@@155
@@201

@@192
@@193
@@194
@@195
@@196
@@197
@@224
@@225
@@226
@@227
@@228
@@229

@`A
@'A
@^A
@~A
@:A
@oA
@`a
@'a
@^a
@~a
@:a
@oa

@{C0}
@{C1}
@{C2}
@{C3}
@{C4}
@{C5}
@{E0}
@{E1}
@{E2}
@{E3}
@{E4}
@{E5}

Æ (AE ligature)
æ (ae ligature)

@@212
@@211

@@198
@@230

@AE
@ae

@{C6}
@{E6}

Ç (C cedilla)
ç (c cedilla)

@@214
@@213

@@199
@@231

@cC
@cc

@{C7}
@{E7}

È (E grave)
É (E acute)
Ê (E circumflex)
Ë (E diaeresis)
è (e grave)
é (e acute)
ê (e circumflex)
ë (e diaeresis)

@@187
@@176
@@197
@@167
@@182
@@170
@@192
@@164

@@200
@@201
@@202
@@203
@@232
@@233
@@234
@@235

@`E
@'E
@^E
@:E
@`e
@'e
@^e
@:e

@{C8}
@{C9}
@{CA}
@{CB}
@{E8}
@{E9}
@{EA}
@{EB}

Ì (I grave)
Í (I acute)
Î (I circumflex)
Ï (I diaeresis)
ì (i grave)
í (i acute)
î (i circumflex)
ï (i diaeresis)

@@188
@@177
@@198
@@168
@@183
@@171
@@193
@@165

@@204
@@205
@@206
@@207
@@236
@@237
@@238
@@239

@`I
@'I
@^I
@:I
@`i
@'i
@^i
@:i

@{CC}
@{CD}
@{CE}
@{CF}
@{EC}
@{ED}
@{EE}
@{EF}

Ñ (N tilde)
ñ (n tilde)

@@209
@@206

@@209
@@241

@~N
@~n

@{D1}
@{F1}

Ò (O grave)
Ó (O acute)
Ô (O circumflex)
Õ (O tilde)
Ö (O diaeresis)
Ø (O slash)
ò (o grave)
ó (o acute)
ô (o circumflex)
õ (o tilde)
ö (o diaeresis)
ø (o slash)

@@189
@@178
@@199
@@210
@@159
@@204
@@184
@@172
@@194
@@207
@@156
@@203

@@210
@@211
@@212
@@213
@@214
@@216
@@242
@@243
@@244
@@245
@@246
@@248

@`O
@'O
@^O
@~O
@:O
@/O
@`o
@'o
@^o
@~o
@:o
@/o

@{D2}
@{D3}
@{D4}
@{D5}
@{D6}
@{D8}
@{F2}
@{F3}
@{F4}
@{F5}
@{F6}
@{F8}

OE (OE ligature)
oe (oe ligature)

@@221
@@220

-
-

@OE
@oe

-
-

Ù (U grave)
Ú (U acute)
Û (U circumflex)
Ü (U diaeresis)
ù (u grave)
ú (u acute)
û (u circumflex)
ü (u diaeresis)

@@190
@@179
@@200
@@160
@@185
@@173
@@195
@@157

@@217
@@218
@@219
@@220
@@249
@@250
@@251
@@252

@`U
@'U
@^U
@:U
@`u
@'u
@^u
@:u

@{D9}
@{DA}
@{DB}
@{DC}
@{F9}
@{FA}
@{FB}
@{FC}

Ý (Y acute)
ý (y acute)
ÿ (y diaeresis)

@@180
@@174
@@166

@@221
@@253
@@255

@'Y
@'y
@:y

@{DD}
@{FD}
@{FF}

Ð (Eth)
ð (eth)
Þ (Thorn)
þ (thorn)
ß (ss)

@@218
@@216
@@217
@@215
@@161

@@208
@@240
@@222
@@254
@@223

@Et
@et
@Th
@th
@ss

@{D0}
@{F0}
@{DE}
@{FE}
@{DF}

¡ (inverted !)
¿ (inverted ?)
« (left guillemet)
» (right guillemet)

@@222
@@223
@@163
@@162

@@161
@@191
@@171
@@187

@!!
@??
@<<
@>>

@{A1}
@{BF}
@{AB}
@{BB}

¢ (cent)
£ (pound)
¤ (currency)
¥ (yen)

-
@@219
-
-

@@162
@@163
@@164
@@165

-
@LL
-
-

@{A2}
@{A3}
@{A4}
@{A5}

§ (section)
¶ (paragraph/pilcrow)
© (copyright)
® (registered)

-
-
-
-

@@167
@@182
@@169
@@174

-
-
-
-

@{A7}
@{B6}
@{A9}
@{AE}

¦ (broken bar)
- (soft hyphen)
¬ (not)
¯ (macron/overline)
° (degree)
µ (micro/mu)
· (middle dot)
± (plus-or-minus)
× (multiplication)
÷ (division)

-
-
-
-
-
-
-
-
-
-

@@166
@@173
@@172
@@175
@@176
@@181
@@183
@@177
@@215
@@247

-
-
-
-
-
-
-
-
-
-

@{A6}
@{AD}
@{AC}
@{AF}
@{B0}
@{B5}
@{B7}
@{B1}
@{D7}
@{F7}

¼ (one-quarter)
½ (one-half)
¾ (three-quarters)

-
-
-

@@188
@@189
@@190

-
-
-

@{BC}
@{BD}
@{BE}

ª (feminine ordinal)
º (masculine ordinal)
¹ (superscript 1)
² (superscript 2)
³ (superscript 3)

-
-
-
-
-

@@170
@@186
@@185
@@178
@@179

-
-
-
-
-

@{AA}
@{BA}
@{B9}
@{B2}
@{B3}

¨ (diaeresis)
´ (acute)
¸ (cedilla)

-
-
-

@@168
@@180
@@184

-
-
-

@{A8}
@{B4}
@{B8}