Into the Coding Period

Well, I have made the base upon which I would be working through the coding period. After discussion and research, I have come to the conclusion that to implement the basic testing features, very essential to the fonts can be implemented using the not-so-difficult bitmap comparision method. Resolution checks can also be done, through the functions provided by the python fontforge library. I have setup a CI with my git repository, and currently I am writing unit tests for my modules, which I am very likely to finish by today evening. After that I am going to hit back at the basic comparision methods and see if I can enhance it by adding more tests!


fontCompare  I finally made the basic GUI, structure, along with the basic testing facility, and have pushed the changes to my git repository. Am currently working out comparing documents, and making glyph consistency tests.

My First Testing Script!

Well, past two days I’ve tried to implement the basic testing feature, which compares, two fonts, by generating bitmaps of glyphs. I have basically used a method provided by fontforge, to export the glyphs with the desired pixel size and depth. Then  using the Pillow library in python I compared the pixels bit by bit, and generated a score on a scale of 0-100, with 100 being the ideal case (identical) and 0 being the worst case (completely dissimilar). This I have done over the entire set of glyphs in the font . The runtime of comparing 1000 glyphs was around 4-5 seconds, which I think is doable currently (however I am trying to optimise this!).

Google Summer of Code 2013 – The first 5 days

I was really happy to know that the project for improving aesthetics of Indian fonts got selected for this cycle of GSoC, and equally excited that I would be doing it. Basically this project focussed on making a tool (a scripting extension) to some font development software, which would assess the aesthetics of a font-under-development by comparing it image-wise with the standard font or the standards set for the same. After the comparision was made we would be assigning scores, based on how close our current font is close to the desired goal.

For the Scripting support I had two options to go for. Font Forge supported a native scripting as well as scripting in python. I chose python because it is more global, widely understood and popular and would allow people to contribute to, without having to fuss about a new scripting. The scripting in python is based on a fontforge library, which would be available i we compiled and installed FontForge with the python-extension enabled. The library is well documented too. The second most important choice I have to make is what I should be using for comparing two bitmaps. Comparision of two bitmaps (as far as glyph-wise comparision goes) could be done quite easily using the Python Image Library (PIL) which is now known updated as Pillow, but for rendering sample texts for comparision purpose, I need to use the inbuilt method of printSample() supported by the fontforge library. But, it does not render bitmaps. Instead  it generates pdf files. I am not sure whether, it would be efficient to render bitmaps from this pdf files, and then compare.

I am currently seeing the possibility of rendering text independently of fontforge by using Freetype library and its performance as compared to rendering pdf files into bitmaps. Defining the standards is what makes this tool what it is, so I needed to be really sure when I was choosing how to set the standards. I referred the UTRRS (hosted by fedora) but the standards were not as rich as I had wanted for Indic scripts, then I came across GIST( Graphic and Intelligence based Script Technology ) a part of CDAC (Centre for Development of Advanced Computing). I came across this document, which provided me a rich classified set of standards, for almost every Indic script, including persian and arabic scripts as well. So I would be making standard font profiles based on the standards set by the IFSOC (Indian Script FOnt Code) standards, and then compare it with our current font profiles, to get a mathematical measure of similarity by testing it under the common styling effects such as Bold, Italic, size change, resolution change etc. To make it user friendlier as possible I would make a Qt GUI interface (which I am currently doing) based on PyQt4 library, so that the user can visually see the scores, and select which all tests he chooses to perform, and even manually set standard font profiles (only for advanced users!)