setupcon cannot handle large fonts in FONT, "putfont: KDFONTOP: Invalid argument"
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
console-setup (Ubuntu) |
Confirmed
|
Undecided
|
Unassigned |
Bug Description
When I specify a large font file using the FONT variable in .console-setup, setupcon fails to load the font, reporting "putfont: KDFONTOP: Invalid argument". If I specify the same font by setting CODESET, FONTFACE, and FONTSIZE, the setupcon loads it fine.
For instance, if I have the following files:
bjh21@sole:~$ tail .console-
==> .console-
VERBOSE_OUTPUT="no"
ACTIVE_
CHARMAP="UTF-8"
CODESET="Uni2"
FONTFACE="Terminus"
FONTSIZE="32x16"
==> .console-
VERBOSE_OUTPUT="no"
ACTIVE_
CHARMAP="UTF-8"
FONT=Uni2-
==> .console-
VERBOSE_OUTPUT="no"
ACTIVE_
CHARMAP="UTF-8"
FONT=Uni2-
Running "setupcon test1" correctly loads Uni2-Terminus32x16, but "setupcon test2" does not, reporting "putfont: KDFONTOP: Invalid argument". "setupcon test3" works, demonstrating that not all uses of FONT are broken.
I've attached the verbose output from "setupcon -v test2".
ProblemType: Bug
DistroRelease: Ubuntu 18.04
Package: console-setup 1.178ubuntu2.9
ProcVersionSign
Uname: Linux 4.15.0-88-generic x86_64
ApportVersion: 2.20.9-0ubuntu7.11
Architecture: i386
CurrentDesktop: Unity:Unity7:ubuntu
Date: Thu Feb 27 20:40:08 2020
DistributionCha
# This is a distribution channel descriptor
# For more information see http://
canonical-
EcryptfsInUse: Yes
InstallationDate: Installed on 2010-06-09 (3550 days ago)
InstallationMedia: Ubuntu GNU/Linux 9.10 "Karmic" - Build i386 LIVE Binary 20100121-21:52
PackageArchitec
SourcePackage: console-setup
UpgradeStatus: No upgrade log present (probably fresh install)
I notice that the output from setupcon mentions loading the font twice. That seems to correspond to this fragment of code in setupcon:
# FONTFILES
FONTFILES= "$FONTFILES `findfile $fontdir $f`"
RES=`findfile $fontdir $f`
fdec= "${f%.gz} "
RES= `findfile $fontdir $fdec`
FONTFILES= "$FONTFILES $RES"
FONTFILES=''
if [ "$FONT" ]; then
for f in $FONT; do
if [ -z "$RES" ]; then
fi
done
fi
It looks to me like this will add each font file to FONTFILES twice, once in the first line of the loop body, and once in the last.