GSoC 2022: Font Selection Improvements

GSoC 2022: Font Selection Improvements

Organization

Inkscape

Project Name

Font Selection Improvements

About

This project aims to facilitate the font selection process in Inkscape. A designer has a large number of fonts installed on their computer. Browsing through a long list of fonts is overwhelming (it's slow and unnecessary). Why not limit the search for perfect fonts to some smaller set of fonts? Do we need to browse through the entire font list again and again? This project includes the addition of the following features:

  • Font collections
  • Fonts used in the document
  • Recently used fonts
  • Font search
  • On canvas preview of fonts

Code

Blogs

Timeline

Community Bonding Period

I utilized this time to increase my familiarity with the codebase and the files I'll be working with during the coding period.

Coding Period

I started with the Font Collections feature. Next, I added the Font Search. Then I worked on the Recently Used Fonts. In the end, I implemented the Document Fonts feature.

Summary

So far, I've been able to implement the following features:

  • Font Collections
  • Recently Used Fonts
  • Document Fonts
  • Font Search

To implement these features, I did the following things:

  • Created a custom data structure to implement the recently used fonts.
  • Created a custom widget to list the font collections and the fonts stored in them
  • Used the KMP search algorithm to increase the efficiency of the font search.
  • Developed the font collections manager dialogue.

Currently, I'm fixing bugs related to these features. Next, I plan to start working on the on-canvas preview of fonts.

Challenges Faced

  • To decide on the design of the Font Collections Manager dialogue.
  • To create static instances of the font collections, document fonts, and the recently used fonts.
  • The Gtk::TreeStore widget becomes very slow when dealing with the number of entries of the order 10^5.

Future Plans

  • To implement the on-canvas preview of fonts feature.
  • To refactor the code of the project.
  • To improve the efficiency of the code.
  • Add the font filtering options.
  • Fix related bugs