SoC 2006/Internationalization

From AbiWiki

Jump to: navigation, search

Email: blackhawkDOTmitATgmailDOTcom


SUBMITTED TO Google Summer of Code, June 2006


MENTORING ORGANIZATION: AbiWord Community

MENTOR: Tomas Frydrych, Core Developer, AbiWord

PROJECT TITLE: Internationalization and Architecture Enhancement of Rendering Mechanism in AbiWord


Contents

Synopsis

The project deals with enabling and pushing Pango API down the existing graphics code base for internationalized text to implement complex text language support (e.g, Indic languages), bi-directional language support (i.e languages having a mix of both RTL text as well as LTR text e.g, Arabic, Hebrew etc.) and other text rendering features for AbiWord.


Benefits to the AbiWord Community / OSS Community

AbiWord is an elegant cross-platform light weight word processor which runs on virtually any operating system with minimal porting requirements. Since, this project deals with *internationalizing* AbiWord and enhancing its existing features for multiple locales, it reaches to a larger number of users across the globe.

But, the most striking feature of integrating Pango with AbiWord would be, making AbiWord a feasible option for the OLPC project.

Project Details

The project aims at working on the existing Graphics class using Pango library to implement multiple locale support for AbiWord. Currently, AbiWord cannot represent most of the Indic languages (viz, Devanagari, Punjabi, Tamil etc) and other scripts where a combination of glyphs is used to represent a character, generally termed as Ligature. Pango, as an API, supports this functionality, as it has been written for laying out and rendering of text, with an emphasis on internationalization. It forms the core of text and font handling for GTK+-2.x.

Some of the Planned/Potential features proposed for the program include:

  • Complete replacement and overhaul of the existing Graphics class

i.e, gr_UnixGraphics with gr_UnixGraphicsPango class for handling on-screen rendering as well as printing. [At present, the Pango class inherits from the base Unix class].

on the *gnome-print* front. At present gnome-print is already in use but there is a mismatch between the on-screen rendering and the print rendering, especially for composite characters. Hence, gnome-print work specific to the pango graphics class has to be done.

  • Implement features through which print can be enabled via

gnome-print from the command line.

  • Optimizing performance, of both, memory as well as speed, which

involves some compile time options to allow AbiWord to work well on low specifications systems too (viz, Embedded Devices).

  • Working on the existing code to make it optimized, stable and

feature complete.


Deliverables

Internationalization and Pango Intergration on AbiWord


Motivation

Gone are the days, where software used to speak only one human language at a time. Each country or region needed its own version. In some cases, internationally relevant features were shipped onto the English language products, while in other cases, the English and international versions were completely separate products, perhaps sharing some basic code, but often sharing little more than the product's name. Even if a piece of software was functionally suitable for use in more than one country, producing an appropriate language version of that product was difficult. This was because the menus, dialog boxes and messages which made that product's user interface (UI) were often written directly in the program source code (using printf type constructs). Luckily, today more and more software developers have realized that if they design their products from the beginning to understand the requirements of multi-locale computing, these products will reach global markets sooner, be less expensive, and probably be much more successful than products designed in the old fashioned way. Such multi-locale products can be called globally enabled. Globally enabled software is a software that supports a wide range of languages, human cultural conventions, fonts,encodings and other features that make it useful, not just in one country or region, but around the world.

Hence, the aim of this project is to make AbiWord, a globally enabled software product.


Project Schedule

  • 3 weeks : [Literature Survey]
    • Understanding the AbiWord Source Code Directory Structure.
    • Understanding the general application framewok with specific emphasis on the graphics framework.
  • 6-7 weeks:
    • Code Review and design.
    • Code Generation.
    • Bug Fixing/Triaging.
    • Testing.
  • 2 weeks:
    • Optimization.
  • 1 week:
    • Documentation.


Future Enhancements

Implementing a cross platform solution to the Graphics class using Cairo. Cairo provides sub-pixel text positioning and variety of other features which can be integrated with Pango to provide a complete solution with high quality text handling and graphics rendering.


Bio

I am a Senior Undergraduate Student in Computer Science and Engineering with a deep passion for Open Source. I have already undertaken, and am currently working on a similar open source project which involves Pango for internationalized text. Hence, my knowledge of Pango and prior work in this field will surely help me in successfully completing this project and achieving all the set goals on time. In tune with my interest in research and development, I have embarked upon a number of research projects which have received national and international recognition through institutes like IIT's, IEEE, IE ISTE etc.

Personal tools