SoC 2006/Internationalization
From AbiWiki
- 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_*
- 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].
- Upgrading the Printing architecture of AbiWord.
- Fixing the existing pango graphics class viz,gr_UnixGraphicsPango
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 products 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 products 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 otherfeatures which can be integrated with Pango to provide a complete solution with high quality text handling and graphics rendering.
- BIODATA:*
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 IITs, IEEE, IE ISTE etc.
Contributors
- Main.DomLachowicz - 24 May 2006