Final GSOC proposal draft. *Name:* Mayank Jha
*Email Address :* *[email protected]* *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 .
_______________________________________________ Project-ideas mailing list [email protected] http://lists.ankur.org.in/listinfo.cgi/project-ideas-ankur.org.in
