Some weeks ago, I suggested implementation of Unicode to draw map
symbols and monsters. I now have most of this working. It runs on
TTY systems, both Unix and Win32, and on the X11, Qt, and Win32 tiled
ports. (Support is very limited on Qt, not because there's anything
wrong with Qt, but because the Qt port uses only tiles except on the
Rogue level.) I would now like to present how the monster accents
may be implemented.
Monster accents are supported on six levels, configured through a new
mon_accents option as follows:
Level 0: No accents; monsters display as in unmodified Nethack.
Level 1: Accents present in the default PC character set.
Level 2: Accents present in ISO-8859-1, identical to Unicode
characters U+00A0 through U+00FF; includes all of
Level 1.
Level 3: Accents present in the Unicode Latin Extended A block,
U+0100 through U+017F; plus Level 2.
Level 4: Accents present in the Unicode Latin Extended B block,
U+0180 through U+024F; plus Level 3.
Level 5: Accents present in the Unicode Latin Extended Additional
block, U+1E00 through U+1EFF; plus Level 4.
This scheme may need some refinement: I have encountered at least one
font that is fully populated through U+017F and in the U+1E00-1EFF
block, but has few glyphs in U+0180-024F, and hence can use only
Level 3.
Users of MSDOS and Windows (and OS/2?) can use Level 1 without any
special configuration. This offers variations on a, c, e, i, n, o, u,
y, A, C, E, N, O, and U.
Level 2 is special. When the accent level is exactly 2, it is assumed
that the user is using code page 850 (on MSDOS, Windows, and OS/2) or
the lat1-16 font (on the Linux console), and the map symbols are
modified to avoid characters not present in those fonts. This allows
accent level 2 to function even when Unicode is not available.
One problem that faces this effort is that the letters that we need are
not necessarily the letters we have. No monster appears as I, and the
letters l, z, Q, U, and X stand for only one monster each; but we have
lots of accented Is and Us. On the other hand, there are not enough
distinct symbols to distinguish all monsters of types d, f, v, D, F, M,
and Z.
A future Level 6 may assume support for combining glyphs, which would
make it possible to distinguish all monsters (maybe even non-alphabetic
ones) and mark them in a more regular and consistent fashion than this
bit of ad-hockery permits.
Here are the monsters and the proposed Unicode glyphs:
Letter: a
Assignments: Level 1
giant ant U+0061 a
killer bee U+00E0 à
soldier ant U+00E1 á
fire ant U+00E2 â
giant beetle U+00E3 ã
queen bee U+00E4 ä
Notes:
Circumflex means "fire" when available and appropriate.
Letter: b
Assignments: Level 4 Level 5
acid blob U+0062 b U+0062
quivering blob U+0062 b U+1E07 b-underline
gelatinous cube U+0180 b-stroke U+0180 b-stroke
Notes:
The gelatinous cube is distinguished first for being the most powerful
of this group.
U+0183 ("Latin small letter B with topbar") is difficult to distinguish
from its upper-case form (U+0182) and is skipped.
Letter: c
Assignments: Level 1 Level 3
chickatrice U+0063 c U+0063 c
cockatrice U+0063 c U+0107 c-acute
pyrolisk U+00E7 ç U+00E7 ç
Notes:
The pyrolisk is more distinct from the chickatrice and cockatrice than
those two monsters are from each other, and thus is distinguished at
level 1.
Letter: d
Assignments: Level 3 Level 5
jackal U+0064 d U+0064 d
fox U+0064 d U+0064 d
coyote U+0064 d U+0064 d
werejackal U+010F d-caron U+010F d-caron
little dog U+0064 d U+0064 d
dog U+0064 d U+1E0D d-underdot
large dog U+0064 d U+1E0F d-underline
dingo U+0064 d U+0064 d
wolf U+0064 d U+1E11 d-cedilla
werewolf U+010F d-caron U+010F d-caron
warg U+0064 d U+1E13 d-circum-below
winter wolf cub U+0111 d-stroke U+0111 d-stroke
winter wolf U+0111 d-stroke U+0111 d-stroke
hell hound pup U+0111 d-stroke U+1E0B d-overdot
hell hound U+0111 d-stroke U+1E0B d-overdot
Cerberus U+0111 d-stroke U+1E0B d-overdot
Notes:
There are not enough d's to go around, even at level 5. At level 3,
the werecanines are distinguished by a caron, and the canines with
breath weapons by a stroke. (The wererat is likewise r-caron at level
3.) At level 5, the weaker canines remain d and the werecanines as
d-caron. The overdot replaces the stroke to distinguish fire-breath
from frost-breath. Progression from plain to underdot to underline
distinguishes the three dogs; unfortunately, nothing similar is
available for cats. The coyote, wolf, and warg are the same color,
and so the wolf and warg get their own symbols.
Cerberus does not appear in an unmodified game.
Letter: e
Assignments: Level 1 Level 3
floating eye U+0065 e U+0065 e
gas spore U+00E8 e U+00E8 è
freezing sphere U+00E9 e U+00E9 é
flaming sphere U+00EA e U+00EA ê
shocking sphere U+00EB e U+00EB ë
beholder U+00EB e U+0113 e-macron
Notes:
Circumflex means "fire" when available and appropriate.
The beholder does not appear in an unmodified game, and so is not
granted a distinct symbol until level 3 (since the others exhaust
the available level 1 symbols). That may have to change when and if
the beholder ever comes to vanilla Nethack.
Letter: f
Assignments: Level 4 Level 5
kitten U+0066 f U+0066 f
housecat U+0066 f U+0066 f
large cat U+0066 f U+0066 f
jaguar U+0066 f U+1E1F f-overdot
lynx U+0066 f U+1E1F f-overdot
panther U+0192 f-hook U+0192 f-hook
tiger U+0192 f-hook U+0192 f-hook
Notes:
There are not enough f's to go around; indeed there are few f's at all.
U+0192 actually exists in the IBM character set, but trying to display
it at level 1 is more trouble than it's worth.
Priority is given to distinguishing the more powerful felines.
Letter: g
Assignments: Level 3
gremlin U+0067 g
gargoyle U+011D g-circumflex
winged gargoyle U+011F g-breve
Notes:
None.
Letter: h
Assignments: Level 3 Level 4 Level 5
hobbit U+0068 h U+0068 h U+0068 h
dwarf U+0068 h U+0068 h U+1E29 h-cedilla
bugbear U+0068 h U+0195 hv ligat U+0195 hv ligat
dwarf lord U+0127 h-stroke U+0127 h-stroke U+0127 h-stroke
dwarf king U+0127 h-stroke U+0127 h-stroke U+1E27 h-diares
mind flayer U+0125 h-circum U+0125 h-circum U+0125 h-circum
master mind flayer U+0125 h-circum U+021F h-caron U+021F h-caron
Notes:
Without accents, the dwarf king and the mind flayers are displayed
alike; distinguishing them is a high priority in this group. At
level 4, the master mind flayer's circumflex is turned over to
form a caron, and the bugbear gets a tail (U+0195 is officially
"Latin small letter HV"). At level 5, all h's are distinct. The
dwarf gets a pickaxe and the dwarf king gets a crown.
Letter: i
Assignments: Level 1 Level 3
homunculus U+0069 i U+0069 i
imp U+00EC ì U+00EC ì
manes U+00ED í U+00ED í
lemure U+00ED í U+0129 i-tilde
quasit U+00EE î U+00EE î
tengu U+00EF ï U+00EF ï
Notes:
The manes and the lemure are essentially the same monster, and so are
displayed alike until additional symbols become available at level 3.
Letter: j
Assignments: Level 3 Level 4
blue jelly U+006A j U+006A j
spotted jelly U+006A j U+01F0 j-caron
ochre jelly U+0135 j-circum U+0135 j-circum
Notes:
The ochre jelly is distinguished first, at level 3, because of its
swallowing attack.
Letter: k
Assignments: Level 3 Level 4
kobold U+006B k U+006B k
large kobold U+006B k U+0199 k-hook
kobold lord U+006B k U+01E9 k-caron
kobold shaman U+0137 k-cedilla U+0137 k-cedilla
Notes:
The kobold shaman is distinguished first, at level 3, because of its
spellcasting abilities.
Letter: m
Assignments: Level 5
small mimic U+006D m
large mimic U+1E3F m-acute
giant mimic U+1E41 m-overdot
Notes:
None.
Letter: n
Assignments: Level 1 Level 3
wood nymph U+006E n U+006E n
water nymph U+00F1 ñ U+00F1 ñ
mountain nymph U+006E n U+0148 n-caron
Notes:
The tilde is assigned to the water nymph to suggest waves.
Letter: o
Assignments: Level 1 Level 2
goblin U+006F o U+006F o
hobgoblin U+00F2 ò U+00F2 ò
orc U+006F o U+006F o
hill orc U+00F3 ó U+00F3 ó
Mordor orc U+00F4 ô U+00F4 ô
Uruk-hai U+00F4 ô U+00F8 ø
orc shaman U+00F5 õ U+00F5 õ
orc-captain U+00F6 ö U+00F6 ö
Notes:
The plain "orc" exists only to form corpses of orc zombies and mummies,
and does not normally appear in the game. No
...
read more »