Newsletter, February 2023
Color Glyph Rendering

This month was quiet on the main branches, but an exciting and long-requested feature is coming: color glyph rendering. This will allow Gio to display text using many color emoji fonts, as well as some bitmap fonts. I have a working prototype, but editing text with emoji revealed that our text editor desperately needs to support UAX#29 grapheme clusters in order for cursor positioning within emoji to make sense. I’m tackling that problem right now. I’d like to thank Plato Team for supporting this project.

You can view a screenshot of Gio rendering emoji from my work here.


This month, Gio thanks the following organizations and community members for their ongoing support!

Supporting the whole team:

Supporting a maintainer:

Sponsorship money given to Gio enables Elias and I to cover the costs of running Gio’s infrastructure, to pay for some of our time spent maintaining and improving Gio, and to plan for funding significant feature work. You can support Gio by contributing on OpenCollective or GitHub Sponsors.

Changes by repo

Below you can find summaries and details of all changes across the official project repositories.

core gio

Dominik greatly improved list scrolling efficiency in core this month. Thanks Dominik!

Dominik Honnef:

  • widget/material: use more efficient way of scrolling lists. 5f818bc5
  • layout: add API for efficiently scrolling to and by items. The majority of scrolling happens by manipulating the index of the first displayed item instead of by just manipulating the offset. This lets us avoid having to render all items that were scrolled past. 8af44726

Elias Naur:

  • go.*: bump bb12508a


Dominik made the Resize component smarter, Sebastien improved the internals of the Linux implementation of explorer, and Lothar made the background color of component.SurfaceStyle overridable. Thanks to you all!

Sebastien Binet:

  • explorer: refactor importFile{,s} for Linux. This CL refactors importFile{,s} for Linux. it also prepares for the ability to modify the “label” of the file(s) opening dialog. (so this can be adapted for localization/internationalization.) a8f5094

Dominik Honnef:

  • resize: maintain ratio when changing constraints. Before this change, changing the constraints (e.g. by resizing a window) would have the following behavior: 6822f59

Lothar May:

  • component: add Fill color field to SurfaceStyle. 05b40af

Chris Waldon:

  • outlay(grid): update scrolling logic. This helps with scrolling jankiness, thanks to Ortwin Wittmann for the suggested fix. ea2f4a8


Thanks for reading!

Chris Waldon