User:Pranjaldaga/improving webfonts in silpa

From SMC Wiki

Google Summer of Code 2013 Proposal for Swathanthra Malalayalam Computing Project:"Internationalize SILPA project with Wikimedia jquery projects, Improve the webfonts module in Silpa using jquery.webfonts and provide more Indic and complex fonts as part of it."


Personal Information

Email Address                    ː pranjaldaga@gmail.com
Webpage                          : http://about.me/pranjaldaga
Blog URL                         ː http://pranjaldaga.wordpress.com/
Freenode IRC Nick                ː pranjaldaga
University and current education ː BTech Computer Science and Engineering, Vellore institute of Technology, Vellore


Why do you want to work with the Swathanthra Malayalam Computing?

The project which I aspire to take up for GSoC 2013 involves "Improving the webfonts module in Silpa and providing more Indic and complex fonts as part of it", which in my opinion, goes in harmony with the theme of the organisation. The slogan of the organization "എന്റെ കമ്പ്യൂട്ടറിനു് എന്റെ ഭാഷ" (My language for/on My Computer) surges an adrenaline rush through my body as a successful project under SMC will mean better language localization. Under proper guidance, I will be able to contribute something productive as I will get a chance to channelize my potential in the right direction. The major thing that attracts me to take a project in GSoC 2013 under Swathanthra Malayalam Computing (SMC) is that the application of this project in real life will help the world in moving an inch forward towards making Language Computing better.

Do you have any past involvement with the Swathanthra Malayalam Computing or another open source project as a contributor?

No.I was not familiar with SMC. I got to know about it through GSoC only. Well, I have been to the world of open source for quite a while and I have made some recent projects like Translate-It (https://github.com/pranjaldaga/Translate-It), FontsForWeb (https://github.com/pranjaldaga/FontsForWeb) etc. Also, I have submitted patches to SMC and various other organizations on github.

Did you participate with the past GSoC programs, if so which years, which organizations?

No, I have not participated in GSoC programs before.

Do you have other obligations between May and August ? Please note that we expect the Summer of Code to be a full time, 40 hour a week commitment

No, I have no other obligations between May and August. So, I can commit atleast 40 hours of work per week for the project.

Will you continue contributing/ supporting the Swathanthra Malayalam Computing after the GSoC 2013 program, if yes, which area(s), you are interested in?

I would continue to contribute to SMC after GSoC 2013 as I love Language Computing. I will try to be specific to those things which relate to styling like Webfonts as I think I can work better in this field.

Why should we choose you over other applicants?

Well, as I do not know the other applicants and their applications, so I really cannot comment over them, but I am confident enough, under proper guidance. I have worked on HTML, CSS, Ruby on Rails, Python, PHP, MySQL, Javascript, Django, node.js and also have a good amount of experience with frontend frameworks like jQuery, Twitter Bootstrap etc. I will be handful for Swathanthra Malayalam Computing (SMC) as I know I have the will power and the major knowledge required so as to be a good tool for the project, and by saying this I am not being pompous but these qualities are not possessed by everyone. I think prior work is very much important to take up any project and so I have created a github repositories recently Translate-It (https://github.com/pranjaldaga/Translate-It) which translates a given string from one given language to another using Google APIs and FontsForWeb (https://github.com/pranjaldaga/FontsForWeb) which creates fonts for several browsers.

Proposal Description

An overview of your proposal

According to http://flasksilpa-indic.rhcloud.com, SILPA (rewritten in Flask framework) is a web framework and a set of applications for processing Indian Languages in many ways. The following things can lead to a stable and better framework for SILPA:

For now there are 12 Indic scripts (or to be more precise languages), so in the first place we need to include more. The idea of creating a built in tool to input in Indian Language should also be extended to a framework. Internationalize SILPA using jquery.ime and jquery.i18n libraries from Wikimedia.

Currently Silpa provides 36 webfonts and the potential GSoC student needs to add more fonts to this collection. I think that this idea may be extended to scripts also. Also, to allow SILPA to be accessible in all the browsers, I think we not only need to develop .ttf fonts but also .eot fonts as IE 9 supports .eot fonts only. When I raised this issue on IRC, Jishnu Mohan (jishnu7) told me that woff must also be included. So, I'll go with all three of them i.e., ttf, eot and woff fonts. About providing font preview and download options, something like https://www.google.com/fonts/ maybe helpful with some changes in the interface of course.

Finally, feedback from the masses is really important. I thought of building stats including graph for public usage of the SILPA framework and the API


The need you believe it fulfills

After the completion of this project, SILPA would surely be seen as an internationalized(as Internationalization will adapt SILPA to different languages and technical requirement of target market), more extensive(as more scripts and fonts will be added), elegant(as the framework will become smoother, people can then input in the language they want)and flexible(previews and download options will be added). About the API support, I think that SILPA fonts should do a better job of allowing other applications to be built on top of their API and thus providing a clean API so that other sources can use the fonts from SILPA in their work. Also, improved documentation will help visitors use the developed resources in a fluid manner.

Any relevant experience you have

I have worked on HTML, CSS, Ruby on Rails, Python, PHP, MySQL, Javascript, Django, node.js, and also have a good amount of experience with Git and frontend frameworks like JQuery, Twitter Bootstrap etc. I'm currently working on the Flask framework as SILPA has been rewritten on that. Coming to project-specific experiences, I have recently created two git repositories in relation to Language Computing, FontsForWeb(https://github.com/pranjaldaga/FontsForWeb) and Translate-It(https://github.com/pranjaldaga/Translate-It).

How you intend to implement your proposal

Language Input depends on the recognition of the language in the framework as well as methods to input characters within the language. Most common ways of Indian language input in software is through usage of logical keyboards based on mapping the standard keyboard. Keyboard layouts for Indian languages also require much deliberation before implementation and usage. The INSCRIPT keyboard maps the standard QWERTY keyboard for Indic scripts. The keyboard overlay exploits the logical ordering of Indian scripts, bringing about a common structure among all the scripts, with the vowels on the left hand side, and consonants on the right.

The presentation of Indian Language scripts requires contextual processing for output and display, due to its complex nature. Main issues that need to be tackled are those of conjunct formation from more than one character and processing of such clusters within a document. For the requirements of Complex Text Layout, i.e. text rendering, processing logic for arrow keys, positioning of caret and cursor, backspace/delete processing etc. character clusters lend a new dimension. Some typical requirements of Indian script Complex Text Layout processing are that the arrow and mouse events should result in the caret being positioned at cluster boundaries, and not within the cluster. Deletion should remove the entire cluster containing more than one code point, while a backspace operation should be allowed to remove characters one by one. Combining characters also need to be considered while selection, cut/copy/paste and text break issues. To find a combination for Indian Languages, a text-processing engine for Indian scripts should be able to know character behaviour, as in whether it can be involved in a combination with its neighbours. This involves logic processing for finding a combination in a specific language. Such logic can be developed within the i18n implementation of BreakIterator. The BreakIterator is used to find a character boundary, based on logic provided on the particular script. This character boundary logic, accessed through interfaces, can aid the text-processing engine in finding valid character combinations.

To implement my proposal, I have exclusively created two Github Repositories https://github.com/pranjaldaga/FontsForWeb and https://github.com/pranjaldaga/Translate-It . Here is the CSS showing how the Webfont part will be implemented :

@font-face{ font-family: ; src: url('fonts/<fontname>.eot'); src: url('fonts/<fontname>.eot?iefix') format('eot'), url('fonts/<fontname>.woff') format('woff'), url('fonts/<fontname>.ttf') format('truetype'), url('fonts/<fontname>.svg#<fontname>') format('svg'); font-style: normal; font-weight: normal; }

Here is how the translation part will be implemented:

require 'rubygems' require 'translator'

  1. To translate 'Hello World' to Hindi

tr = Translator.new() tr.translate( 'Hello, World', 'hi') #=> "नमस्ते, दुनिया"

  1. To translate "नमस्ते, दुनिया" to English

tr.translate('नमस्ते, दुनिया', 'en','hi') #=> "Hello World"

  1. From Unknown language to english, from 0.1.2

tr.to_en('नमस्ते, दुनिया') #=> "Hello World"

A rough timeline for your progress with phases

Week by week timeline:

Duration Milestone
Before June 16 Before Official Coding Period Starts: Get to know the Flask framework better, brush up all the concepts which'll be useful for the project. Going through the codebase on github https://github.com/Project-SILPA/Silpa-Flask and discussing each and everything with the mentor.
June 17 CODING STARTS
June 17 – June 23 Increase the number of webfonts to SILPA from 36(current number) to a greater number. Also, extend this approach to Indic Scripts ,i.e., add more Indic scripts to currently available 12 Indic Scripts available in SILPA.
June 24 - July 7 Use JQuery.webfonts module to rewrite webfonts. Create a repository as per the same specification.
July 8 - July 14 Include all types of fonts like .ttf, .eot, .woff, .svg etc. and check its support for all well known browsers. Provide font preview and download options, something like https://www.google.com/fonts/ maybe helpful with some changes in the interface of course.
July 15 - July 28 Building up the API so that SILPA fonts do a better job of allowing other applications to be built on top of their API.
July 29 MID TERM EVALUATION SUBMISSION
July 30 - August 4 Analyse the work done till Mid term evaluation and look for any bugs or glitches and fix them. Work on the areas suggested by the mentor and refine the codes as far as possible.
August 5 - August 11 Start by designing a templating system integrating jquery.i18n and jquery.ime libraries from Wikimedia on the modules ported into Flask which will be provided by some other GSoC fellow as part of his/her project.
August 12 - August 18 Create a framework as well as a built-in tool so that the user can input in a given set of Indian languages.
August 19 - August 25 Build better stats including graph for public usage of internationalization and webfonts from the framework and the API.
August 26 - September 1 Test the framework and API, taking feedback and suggestions from different users for any kind of improvement possible.
September 2 - September 8 Fix any bugs left out. Scrub the code once again, start preparing documentation.
September 9 - September 15 Improve and finish off the documentation.
September 16 PENCILS DOWN
September 17 Submit final evaluation
September 27 Submit required code sample to Google.
October 1 Announcement of final result of Google Summer of Code 2013.

Any other details you feel we should consider

Overall GPA: 9.10/10, Major GPA: 9.38/10

Tell us something about you have created

1) I went through the codebase on the Github repository https://github.com/smc/silpa and submitted a patch https://github.com/smc/silpa/pull/1 which got merged also but after discussion on IRC Jishnu Mohan(jishnu7) told me that there is another Github repository https://github.com/Project-SILPA/Silpa-Flask which is rewritten using Flask framework, so I went through that also and submitted a patch https://github.com/Project-SILPA/Silpa-Flask/pull/9.

2) SnapBin!: A windows 8 app which is the fastest way to take quick notes and share them with someone! The whole idea is to snap 'SnapBin' alongside the app you're using, and take quick notes to share. This app was appreciated by the Windows App Excellence Lab (AEL) at the Windows 8 AppFest held at Bangalore. App URL:http://apps.microsoft.com/windows/en-us/app/snapbin/ee8c6b4d-d7c6-4620-9f8a-ff1c0fc7c344 Published at Windows Store under Category: Tools

3) FontsForWeb: FontsForWeb creates fonts for web browsers. Repo URL: https://github.com/pranjaldaga/FontsForWeb

4) Translate-It: Translate-It translates a given string from one given language to another using Google APIs. Repo URL: https://github.com/pranjaldaga/Translate-It

Have you communicated with a potential mentor? If so who?

Yes, I have communicated with Jishnu Mohan (jishnu7) on IRC regarding each aspect of the project step by step. Also, Hrishikesh K.B (stultus) has also helped me out a couple of times.

SMC Wiki link of your proposal

http://wiki.smc.org.in/User:Pranjaldaga/improving_webfonts_in_silpa