# \[PATCH 0/6\] fbcon: Clean up glyph handling on redraws

- From: Thomas Zimmermann \<tzimmermann@suse.de\>
- Date: 2026-10-27 13:37:20 
- List: linux-fbdev
- Page: https://ratatoskr.run/linux-fbdev/2026/10/17810878
- Thread: https://ratatoskr.run/dri-devel/2026/10/17810878/t.md

```text
Fbcon's drawing functions open-code much of the glyph handling. Use
font helpers instead. Makes fbcon more consistent and easier to
understand.

Patch 1 updates fbcon to use unsigned char for glyph buffers. This
is consistent with the font code and font_data_t.

Patches 2 and 3 update font rotation to return rotated glyphs as
font_data_t. A rotated font can now use the same interfaces as the
unrotated source font. Fbcon uses this to ref count the font buffer.

Patches 4 to 6 update various parts of fbcon to use font helpers
instead of open-coding access to font_data_t. Having the rotated
font as font_data_t makes this convenient.

Tested with fbcon on DRM's bochs driver (qemu).

Thomas Zimmermann (6):
  fbcon: Use unsigned char for glyph data
  lib/fonts: Provide internal helpers for allocating font_data_t
  lib/fonts, fbcon: Use font_data_t for rotated fonts
  fbcon: Refactor size calculation for cursor buffers
  fbcon: Look up glyphs using the font interface
  fbcon: Handle characters with no glyph defined in a consistent way

 drivers/video/fbdev/core/bitblit.c      | 82 +++++++++++++++----------
 drivers/video/fbdev/core/fbcon.c        |  3 +-
 drivers/video/fbdev/core/fbcon.h        |  5 +-
 drivers/video/fbdev/core/fbcon_ccw.c    | 56 +++++++++++------
 drivers/video/fbdev/core/fbcon_cw.c     | 57 ++++++++++-------
 drivers/video/fbdev/core/fbcon_rotate.c | 19 +++---
 drivers/video/fbdev/core/fbcon_ud.c     | 77 +++++++++++++++--------
 include/linux/font.h                    |  5 +-
 lib/fonts/font.h                        | 12 ++++
 lib/fonts/font_rotate.c                 | 32 ++++------
 lib/fonts/fonts.c                       | 63 ++++++++++++-------
 11 files changed, 254 insertions(+), 157 deletions(-)

-- 
2.56.0

```
