The Mid-Term Report.

Proposal and the progress till midterm :

May 27 – June 5
: I am going to interact with the developers about the better choices (if any ).
What was done–> Upon discussion and some research I found that the fontforge would be the most feasible to build upon as it provides with a python scripting extension, with easy to understand library. It could also be downloaded separately in debian and redhat linux distros.
It was also decided that to testing the quality of the GPOS/GSUB tables of the fonts it would be better to focus on the aesthetics of the font alone. As the font rendering engines like HarfBuzz,https://github.com/behdad/harfbuzz already do those testing.

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

What was done–> I tried out the various functions of the the 5-6 main classes, to know what functions they performed.
June 10 – June 12: 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.

What was done–> I read the GPOS and GSUB methods and tried to understand what they actually mean, and ensured whether, they affect the beauty of the font. I concluded that since they are mere, methods for constructs, I could not comment on how the font would look by merely looking at these tables alone.

June 13 – June 17Research on the sets of pangrams for the scripts.

What was done–> Upon researching I got these basic panagrams, https://groups.google.com/forum/#!msg/chithakar/Nkec6GZEZ1k/-rjRz6lJA4QJ, although these contain only the basic chracters and constructs.

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

What was done–> I thought upon what classes would be used to make the testing application. I tried and tested a lot of examples and analysed the shortcomings and benefits of each before finalising my choice.
June 24 – July 8: I would be making the first protoype of the script, including the methods for, GPOS features of the script in my class.

What was done–> As stated earlier the GPOS methods were not of much help as far as extracting the data for making comparision went, so the only brute-force technique was bitmap comparision. So, i implemented my basic methods of the class responsible for bitmap comparision, using the PIL library.

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.

What was done–> Upon the advice of my mentor, I made a separate branch which used abstract replica of font or mockfont objects to perform the testing. The reasons for my choice was to make the user burden free of downloading the standard fonts as well,by using mockfonts I would be using only the set of standard characteristics, and the typeaces, and ignore, the GPOS/GUSB methods necessary for making the constructs, but unnecessary for doing the actual comparision.

Also I think, that by using mockfonts, I would be violating lesser copyrights, so it could enable my tool to test fonts against fonts with restrictive licensing.
 July 15 – August 2: Addition of the methods to check consistency of basic GSUB methods for Mandatory Presentation Forms by use of pangrams pertaining to the fonts.

What is being done–> Research is on for better panagrams, and as far as method goes, nothing much is to be done, as I again would be using bitmap comparision for achieving the same. Also I have decided to use the utlity hb-view provided with the harfbuzz font rendering engine, for the pupose of being able to compare standard docs and panagrams, which would cover the advanced discretionary tests. I have already made some progress with it, currently I am working on make it testable on travis.

mid-term deliverables
deliverables: The script would be now capable of handling GPOS features and GSUB features for Mandatory Presentation forms.

As of now in the present state the application meets the demands for the midterm deliverables.
Also my progress can be tracked on my blog and github repo, though there might be some inconsistency in the time at which it was done :P, as there were some unavoidable circumstances, so I shuffled the schedule a bit.

My github repo, https://github.com/mjnovice/FontCompare .

New Branch Mockfont

The past 3 days, I made a mock font object,  which makes a copy of the actual font file, and then make a comparision with the font under testing. Thus, we are not using any standard font for comparision but a set of standard values and bitmaps. I also corrected the present methods for evaluating scores by performing tests. The next 1-2 day I’d be making sure that the basic tests work flawlessly free from, any  short-comings, and also ponder upon its scope. Would be great once I get the feedback from the users!

Font Compare details

The application can be cloned directly from the git repository, using the command git clone https://github.com/mjnovice/FontCompare upon your terminals (provided you are using Linux :)). For you to be able to run and test the application, you must be running linux, any distro. The software requirements include Python>=2.7 , PyQt4 and the Pillow>=2.0 library. You won’t be needing to install them separately as the install instructions say. Currently FontCompare can support testing Basic Consistency of Glyphs, Basic  formatting features of Bold and Italics, Basic characteristics of fonts such as underline-width, bearing, ascent,descent etc. Score Bars depict the overall score, while the text window shows you the detailed glyph-wise analysis. You may use any two fonts, one of being standard while the other the font under test. I have been using two well known fonts Lohit Devanagri and Chandas both of which are licensed under GPL.

Long gap! Ready for initial testing

Nearly 12 days, since I last updated my progress. Sorry for the delay. Not to mention, I am had a wonderful during the time, meeting with some of my old friends and yes visiting some of my relatives! Yes, as far as FontCompare goes everything seems fine. I have added the unittests for every class and its function for myself to assess and set targets. Doing this was easy as I used the unittests module provided by python. So as of now my app is ready for initial testing(for Devanagri script.) Next 3-4 days I’d be working on using standard docs for testing, trying to improvise the glyph consistency methods, adding methods to test kerning and possibility of incorporating advanced usage based font testing.