Hi Frederic, tech@, This 16x32 font looks both wasteful in screen estate, and difficult to read on both desktop and laptop screens of average 100 PPI (2010-2020)
Can we actually (do better and) show more data, for example try using: 1) Default font size that is as close to minimum (and NOT maximum) as possible pixels per character? 2) Default typeface that is similar to (a subset of) misc from the X fonts (for future Unicode)? 3) Thin legible fonts on laptop / desktop screens (work) at one arm length (or at least pick this as default) instead of (NOT) big rectangular fonts for phone / tablet at nose distance (play)? 4) Tunables for user preference when the above do not align in this 2-years' resident font carver aesthetics / mood / vision quality? 5) Changes in direction of book fonts, NOT geoglyphs (alien road signs)? 6) Usable information display as higher priority over selected typeface? I do NOT like this idea of being stuck with that for the next 10 years. OpenBSD on 19-27" desktop is a very important use case for many people. I can make compromise and not care much for the font face, but the size as screen waste and lack of Unicode path really really annoys me a lot. Kind regards, Anton Lazarov Sat, 5 Jan 2019 01:50:22 +0200 Artturi Alm <artturi....@gmail.com> > Hi, > > guessing i'm not the only one wondering about these sizes, as w/current > snapshot the font does seem too big for me(on 2560x1440 display, for > which radeondrm(4) has never gotten the size right(giving only 1920x1200)). > > display.part of wsconsctl output w/the diff: > display.type=radeondrm > display.width=1920 > display.height=1200 > display.depth=32 > display.emulations=vt100 > display.col_x_row=120x37 > display.font_wxh=16x32 > display.screentypes=std > display.focus=4 > display.screen_on=250 > display.screen_off=0 > display.vblank=off > display.kbdact=on > display.msact=on > display.outact=on > > lazy(=ugly) not-so-minimal diff below. > > -Artturi > > > diff --git a/sbin/wsconsctl/display.c b/sbin/wsconsctl/display.c > index 6f789291142..9927a9d77c5 100644 > --- a/sbin/wsconsctl/display.c > +++ b/sbin/wsconsctl/display.c > @@ -42,6 +42,7 @@ > > u_int dpytype; > u_int width, height, depth; > +u_int cxr[2], fontwxh[2]; > int focus; > struct field_pc brightness, contrast, backlight; > int burnon, burnoff, vblank, kbdact, msact, outact; > @@ -55,6 +56,8 @@ struct field display_field_tab[] = { > { "height", &height, FMT_UINT, FLG_RDONLY }, > { "depth", &depth, FMT_UINT, FLG_RDONLY }, > { "emulations", &emuls, FMT_EMUL, FLG_RDONLY }, > + { "col_x_row", &cxr, FMT_UINTX, FLG_RDONLY }, > + { "font_wxh", &fontwxh, FMT_UINTX, FLG_RDONLY }, > { "screentypes", &screens, FMT_SCREEN, FLG_RDONLY }, > { "focus", &focus, FMT_INT, FLG_NORDBACK }, > { "brightness", &brightness, FMT_PC, FLG_MODIFY|FLG_INIT }, > @@ -85,6 +88,7 @@ display_get_values(int fd) > void *ptr; > unsigned long cmd; > int bon = 0, fbon = 0; > + int fson = 0; > > focus = gscr.idx = -1; > for (pf = display_field_tab; pf->name; pf++) { > @@ -102,6 +106,10 @@ display_get_values(int fd) > } else if (ptr == &emuls) { > fillioctl(WSDISPLAYIO_GETEMULTYPE); > emuls.idx=0; > + } else if (ptr == &cxr || ptr == &fontwxh) { > + fillioctl(WSDISPLAYIO_GETSCREENTYPE); > + ptr = &screens; > + screens.idx = 0; > } else if (ptr == &screens) { > fillioctl(WSDISPLAYIO_GETSCREENTYPE); > screens.idx=0; > @@ -168,6 +176,13 @@ display_get_values(int fd) > emuls.idx=fd; > } else if (ptr == &screens) { > screens.idx=fd; > + if (!fson) { > + cxr[0] = screens.ncols; > + cxr[1] = screens.nrows; > + fontwxh[0] = screens.fontwidth; > + fontwxh[1] = screens.fontheight; > + } > + fson++; > } else if (ptr == ¶m) { > struct field_pc *pc = pf->valp; > > diff --git a/sbin/wsconsctl/util.c b/sbin/wsconsctl/util.c > index b0ac4b3e23f..071baf31f85 100644 > --- a/sbin/wsconsctl/util.c > +++ b/sbin/wsconsctl/util.c > @@ -186,6 +186,7 @@ int name2int(char *, const struct nameint *, int); > void print_kmap(struct wskbd_map_data *); > void print_emul(struct wsdisplay_emultype *); > void print_screen(struct wsdisplay_screentype *); > +void print_uintx(u_int *); > > struct field * > field_by_name(struct field *field_tab, char *name) > @@ -316,6 +317,9 @@ pr_field(const char *pre, struct field *f, const char > *sep) > case FMT_CFG: > mousecfg_pr_field((struct wsmouse_parameters *) f->valp); > break; > + case FMT_UINTX: > + print_uintx((u_int *) f->valp); > + break; > default: > errx(1, "internal error: pr_field: no format %d", f->format); > break; > @@ -551,3 +555,9 @@ print_screen(struct wsdisplay_screentype *screens) > i = ioctl(fd, WSDISPLAYIO_GETSCREENTYPE, &s); > } > } > + > +void > +print_uintx(u_int *ux) > +{ > + printf("%ux%u", ux[0], ux[1]); > +} > diff --git a/sbin/wsconsctl/wsconsctl.h b/sbin/wsconsctl/wsconsctl.h > index 3a6e38d67e2..93d42ed600a 100644 > --- a/sbin/wsconsctl/wsconsctl.h > +++ b/sbin/wsconsctl/wsconsctl.h > @@ -49,6 +49,7 @@ struct field { > #define FMT_SCREEN 108 /* wsdisplay screen types */ > #define FMT_STRING 109 /* free string */ > #define FMT_CFG 201 /* wsmouse parameters */ > +#define FMT_UINTX 202 /* u_int x u_int */ > int format; > #define FLG_RDONLY 0x0001 /* variable cannot be modified */ > #define FLG_WRONLY 0x0002 /* variable cannot be displayed */ >