![]() I want to thank Fredrick Brennan and Jeremy Tan for the code reviews and suggestions, and KH Hussain and CVR for sharing the excitement. There’s a follow up pull request to update the Python scripting documentation as well. The merge request has landed in FontForge master branch this morning. From there you have a python environment that. With fresh eyes, I was able to fix remaining issues quickly, rebase the changes to current master and update the pull request. Install fontforge for windows, then search your install for a fontforge-console.bat, and double-click it. It was later attempted as part of Free Software Camp mentoring program in 2021 but that didn’t bear fruit.Ī couple of weeks ago, Fred followed up now that this functionality is found very useful so I set aside time again to finish the feature. I’ve tried to fix the issue but then was unable to spend more time to finish it as Real Life™ caught up c’est la vie. But it did not properly handle the cases when glyph1 or glyph2 were non-existent. This worked fine for our use case, typically ignoring the GSUB lookups of type sub glyph1 glyph2 by glyph3 where glyph3 does not exist in the font. 1: Fontforge now supports skipping non-existent glyphs when merging a comprehensive OpenType feature file. In the process, I had to touch the innards of FontForge’s low-level code and learn about it. ![]() FontForge uses its own GUI toolkit (neither GTK nor Qt) but with helpful pointers from Fredrick Brennan, I have developed the GUI to take a flag (default ‘off’ to retain backward compatibility) that allows the users to try skipping lookup rules that do not apply to the current font. Next, it was also needed to expose the same functionality in the graphical interface (via File→ Merge Feature info menu). Few days later, I have modified the core functionality and adapted the Python interface (specifically, the rgeFeature method) to do exactly that, preserving backward compatibility. One fine morning in 2020, I set out to read FontForge’s source code to study if functionality to safely skip lookups that do not apply to a font (because the glyphs specified in the lookup are not present in the font, for instance) can be added. For instance, the definitive OTL shaping rules for Malayalam has nearly 950 glyphs and lookup rules but a limited character set font like ‘Ezhuthu’ has about 740 glyphs. The challenge in reusing the larger set of rules in a ‘limited’ character set font was that FontForge would (rightly) throw errors that such-and-such glyph does not exist in the font and thus the lookup is invalid. When I wrote advanced definitive OpenType shaping rules for Malayalam and build scripts based on FontForge, I also wanted to reuse the comprehensive shaping rules in all the fonts RIT develop. It has excellent scripting abilities, especially Python library to manipulate fonts which I extensively use in producing & testing fonts. FontForge is the long standing libre font development tool: it can be used to design glyphs, import glyphs of many formats (svg, ps, pdf, …), write OpenType lookups or integrate Adobe feature files, and produce binary fonts (OTF, TTF, WOFF, …).
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |