GSoC at LibreOffice

I am going to be working with LibreOffice under the Google Summer of Code programme.
I am super excited about working with LibreOffice. LibreOffice is a huge project. It is used by hundreds of millions of people and is the default office suite of many Linux distributions.

My project is titled “Unification of low-level text layout using Harfbuzz”.
What is text layout? Text Layout is how the characters we type show up on the screen. But this is just a 10000ft view. Text layout and rendering are much more complex.

According to me, Text layout and rendering are crucial components for an office suite. It is one of the most visible part of an application UI. When text doesn’t look good, the UI degrades. It is especially important for word processors. LO word processor is called Writer.

In LO code, layout and rendering happens in something called the visual components library or VCL. VCL is responsible for all drawing, text rendering and operating system abstraction.

The state of the text rendering stack in LO is not exactly a pretty thing to deal with. There are different layout engines for different platforms such as Unix, MacOS, and Windows. This is a problem for the following reasons:

  1. No uniformity in rendered text across platforms. Differences introduced due to different implementations of the rendering stack. Same document opened on different platforms will look different.
  2. It is difficult to maintain so many implementations. High code complexity and higher chances of bugs creeping in. If there is a bug in the layout code, it has to be solved by someone who knows the layout code specific to that platform.
  3. Rendering is also affected by OS specific bugs.

My project is aimed at aimed at solving all these problems by unifying the layout code by creating a new layout engine which uses HarfBuzz for OpenType glyph shaping.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s