[Project-ideas] GSoC idea for improving the aesthetic quality of Indian Scripts

Mayank Jha mayank25080562 at gmail.com
Wed Apr 24 01:23:46 PDT 2013


Final GSOC proposal draft.

*Name:* Mayank Jha


 *Email Address :* *mayank25080562 at gmail.com*


 *Project Title: * To make a testing application for assessing the quality
of Open Type fonts for Indic scripts.


 *Synopsis: *

I am personally interested in doing this project because, I have been using
applications like MS Word, Photoshop, GIMP etc, throughout and require
varied fonts with nice looks and appearance.

However unfortunately whenever it came to Hindi my choices got narrowed to
3 or 4 fonts only as compared to at least 40-50 choices for the Roman
script. Thus, making this tool would allow font developers to contribute
more good quality Open Type fonts for Indic script. I am also willing to
widen the scope so that the same could be done for fonts of other languages
scripts .



 *How is your Project going to benefit language Computing ?: *

This project is going to benefit language computing by increasing the
number of OpenType fonts available, in turn increasing its usage in
mainstream.


 *Any previous experience with GSoC or similar program ?*

None. This would be my first experience with GSoC.


 *Why would you like to do a project with us?*

Trying to increase the number of Hindi fonts in mainstream is what I have
wanted to do since long. I think this is an opportunity for me to do this,
and hence I am eager to do this project with you.


 *How many hours per week can you commit to the project?*

I can devote 40 hours per week .


 *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*

I have no other obligations during this summer and I would be able to
commit the said amount of hours to the project.


 *Are you comfortable with virtual communication using English as the
primary language?*

Yes.




 *Implementation details of the project:*



 I will be implementing the testing support for the Devanagri script. There
exists a current application called fontQA but that runs only inside
FontLabs, which is not freely available, therefore it is very difficult to
try, modify and test it.

Therefore I plan to make a script to start with based on the Font Forge
framework. The idea of the script, would be extract the data from the font
in the following fashion:


 We would be analysing the font's shaping engine algorithm, as to how it
actually parses the input from the user into glyphs by using the GPOS &
GSUB methods, to achieve this we can use a standard text similar to “A
quick brown fox jumps over the lazy dog.” which uses the characteristic
properties unique to the type of font.

Standard properties of a font can't be altered by the developer, while the
dynamic properties are those which can be modified at developer's will.


 I think the best way to test fonts based on these properties in the script
would be from *classes*, one for standard properties and the other for
dynamic properties, with appropriate methods built inside to check for the
properties and their values.


 Retrieving static properties would be easy, since most of them would be
numerical values like font weight, point size etc.

To check for the dynamic properties, one needs to look at when and how the
actual shaping of the glyph takes place after the glyph buffer for the text
has been created.


 When a rendering engine handles a chunk of text (usually a syllable), the
processing is divided into a set of predefined “features”, which are
“applied” one after the other in a standardized way. What differentiates
one font from the other in the manner in which these “features” are
applied. We could implement this by making methods inside the class to
check for these. How one must go about making these methods depends largely
on the rendering engine used (I would be using Pango for my case) and the
parameters which exhibit each instance of applying these features.


 These “features” for Devanagri script are well described for the
Uniscribe, W3C specifications!


 The points kept in mind would be the OpenType specifications for the
script, and will have scope for addition. These are again specified, at the
unicode standards.







 *Phases/milestones with dates:*


 *May 27 - June 5*: I am going to interact with the developers about the
better choices (if any ).


 *June 5 – June 10 :* Get to understand the codebase of Font Forge
scripting extension, make some scripts to get a feel as to how it works.


 *June 10 – June 17: *Read the documentation for GSUB and GPOS tables, make
scripts for modifying the fonts using them and have a better understanding
for how it works.


 *June 18 – June 24 :* I would be making the first protoype of the script,
including the methods for, basic standard properties of the script in my
class .


 *June 25 – July 7 :* I would be making the first protoype of the script,
including the methods for, basic standard properties of the script in my
class .


 *July 8 – July 14 : * Testing the class with the basic methods throroughly
to avoid any crashes or bugs. See if the basic model of the script works as
intended.


 *July 15 – August 1 : *Research on the rule-sets to be used for better
analysis of the fonts.


 *July 15 – August 5:*Addition of the methods based on the rule-sets for
testing the dynamic methods pertaining to the fonts.


 *August 6 – August 15 *: * *Thorough testing of the script. Check whether
the script can differentiate between any two fonts of the same script and
resolve any discrepancy if any between the actual and expected results.


 *August 15 – September 1 :* Documenting of the entire code, to enable
other developers extend this by class inheritance for fonts of other
scripts. Making the code look neater and ordered to enhance readability of
the code.


 September 2 – September 22 : Backup time for unexpected and unforeseen
delays.


 *September 23: *Pencils down


 *September 23 – October 8 [after GSOC]: *The script will be sent to the
Font Forge community and reviewed. Shortcomings if any would be taken care
of. Efforts will be made for people with knowledge of other Indic scripts
to contribute to it and include more testing rules and expand it.


 *About Me:*

I am Mayank Jha, a 2nd year undergraduate student pursuing Computer Science
and Engineering at National Institute of Technology, Durgapur, India. I am
a FOSS enthusiast, and contributor.

I was introduced to the concept of Open Source an year ago by the GLUG
(GNU/Linux Users' Group) of our college and since then Ive tried to
actively associate with the same.

My contributions to the open source world include making a plugin or geany
to submit codes to SPOJ from the editor itself.


 https://github.com/mjnovice/geany-plugins/tree/master/codesubmit



 Ive also made a game using the pygame library called fierytower.

http://www.pygame.org/project-fierytower-2496-.html


 Apart from that Ive sent patches to rekonq, konversation, kate,
plasma-desktop and trojita.

I am skilled in C, C++, Qt, Python and HTML. I have the experience of
building font forge from source and tried modifying a devanagri script font
using it.

I am hardworking and passionate about what I do,and am confident of
devoting 40 hrs a week to my work. To avoid delays Ive kept some backup
time. Even after the GSOC programme I would be closely associated with my
testing script and answer to the queries of other developers so that they
too can contribute in the languages they know well.


 Coding, Youtubing, Eating, Sleeping, Movies, MJ music, - that pretty much
sums up my life.


Please point out any technical errors if any .
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ankur.org.in/pipermail/project-ideas-ankur.org.in/attachments/20130424/ac5a1cba/attachment-0003.htm>


More information about the Project-ideas mailing list