conf/90082: [syscons] [patch] curses ACS line graphics support for
olli at secnetix.de
Wed Dec 7 10:12:19 PST 2005
>Synopsis: [syscons] [patch] curses ACS line graphics support for iso15 fonts
>Arrival-Date: Wed Dec 07 18:10:01 GMT 2005
>Originator: Oliver Fromme
>Release: FreeBSD 6.0-STABLE i386
secnetix GmbH & Co. KG, Munich, Germany
The solution presented in this PR has been developed
and tested under RELENG_6 (6.0-STABLE), but it is
believed to apply to all versions from RELENG_4 to
Most users in western and central Europe use the
"iso15" syscons fonts. Those fonts don't contain
the line drawing characters which are present in
e.g. the cp437 fonts and are used by various
console-based "GUI" programs, including sysinstall,
the famous midnight commander and others. Instead,
simple ASCII characters such as "+" and "-" are
used, which looks ugly.
In the past years, a lot of users have complained
about that problem (e.g. on the German BSD mailing
lists; note that German requires an iso15 font).
It was often mentioned that Linux does not suffer
from the same problem.
The fix below consists of a script that adds the
missing characters to the existing iso15-8x*.fnt
font files. In conjunction with an appropriate
termcap entry, the problem is solved.
Enable one of the "iso15" fonts (vidcontrol -l) and
set TERM=cons25l1. Then run sysinstall,midnight
commander or any other curses based program that
uses line drawing characters for window borders or
The following script merges line drawing characters from
the cp437 fonts into the iso15 fonts. The following
files are modified:
The script must be run in a directory containing the
existing font files, i.e. either in
or in the source tree:
The new characters are placed in an unused range of the
iso15 fonts, beginning at position 128 (0x80). All
existing characters are preserved, so the change should
be without any risk.
The "cons25l1" entry in the termcap must be changed
like this (and don't forget to rebuilt termcap.db with
cap_mkdb(1), and logout+login after the change so the
TERMCAP variable in your environment gets updated):
Note: The termcap source directory is /usr/src/share/termcap.
Here's the script to modify the fonts:
CP437_SRC="218 192 191 217 195 180 193 194 196 179 197
4 176 27 26 25 24 177 219 243 242 227"
for H in 8 14 16; do
DD_ARGS="if=$CP437 of=$ISO15 bs=$H count=1 conv=notrunc"
uudecode -p $CP437.fnt > $CP437
uudecode -p $ISO15.fnt > $ISO15
for SRC in $CP437_SRC; do
dd $DD_ARGS skip=$SRC seek=$DST 2>/dev/null
DST=$(( $DST + 1 ))
uuencode $ISO15 $ISO15 > $ISO15.fnt
rm $CP437 $ISO15
More information about the freebsd-bugs