libdraw: redo default font construction to be hidpi-safe

If $font is not set, the default font is constructed from
font data linked into every libdraw binary. That process
was different from the usual openfont code, and so it was
not hidpi-aware, resulting in very tiny fonts out of the box
on hidpi systems, until users set $font.

Fix this by using openfont to construct the default font,
by recognizing the name *default* when looking for
font and subfont file contents. Then all the hidpi scaling
applies automatically.

As a side effect, the concept of a 'default subfont' is gone,
as are display->defaultsubfont, getdefont, and memgetdefont.
This commit is contained in:
Russ Cox 2018-11-15 23:52:05 -05:00
parent 3ebbb99ce3
commit 16d0081989
20 changed files with 374 additions and 587 deletions

View file

@ -1,6 +1,6 @@
.TH GRAPHICS 3
.SH NAME
Display, Point, Rectangle, Cursor, initdraw, geninitdraw, drawerror, initdisplay, closedisplay, getdefont, getwindow, gengetwindow, flushimage, bufimage, lockdisplay, unlockdisplay, cursorswitch, cursorset, openfont, buildfont, freefont, Pfmt, Rfmt, strtochan, chantostr, chantodepth \- interactive graphics
Display, Point, Rectangle, Cursor, initdraw, geninitdraw, drawerror, initdisplay, closedisplay, getwindow, gengetwindow, flushimage, bufimage, lockdisplay, unlockdisplay, cursorswitch, cursorset, openfont, buildfont, freefont, Pfmt, Rfmt, strtochan, chantostr, chantodepth \- interactive graphics
.SH SYNOPSIS
.nf
.PP
@ -38,9 +38,6 @@ Display* initdisplay(char *devdir, char *win, void(*errfun)(Display*, char*))
void closedisplay(Display *d)
.PP
.B
Font* getdefont(Display *d)
.PP
.B
int flushimage(Display *d, int vis)
.PP
.B
@ -398,11 +395,7 @@ names the directory, default
in which the files associated with the window reside.
.I Closedisplay
disconnects the display and frees the associated data structures.
.I Getdefont
builds a
.B Font
structure from in-core data describing a default font.
None of these routines is needed by most programs, since
Neither of these routines is needed by most programs, since
.I initdraw
calls them as needed.
.PP

View file

@ -152,7 +152,6 @@ Memsubfont* allocmemsubfont(char *name, int n, int height,
Memsubfont* openmemsubfont(char *name)
void freememsubfont(Memsubfont *f)
Point memsubfontwidth(Memsubfont *f, char *s)
Memsubfont* getmemdefont(void)
Point memimagestring(Memimage *dst, Point p, Memimage *color,
Point cp, Memsubfont *f, char *cs, Drawop op)
.PP
@ -354,7 +353,6 @@ Similarly,
.IR openmemsubfont ,
.IR freememsubfont ,
.IR memsubfontwidth ,
.IR getmemdefont ,
and
.I memimagestring
are the
@ -364,7 +362,6 @@ analogues of
.IR openfont ,
.IR freesubfont ,
.IR strsubfontwidth ,
.IR getdefont ,
and
.B string
(see