fontFeatures
fontFeatures copied to clipboard
Python library for manipulating OpenType font features
Came across this when round-tripping OTF > UFO > OTF. I'm extracting UFOs from Opentype files with [ufo-extractor](https://github.com/robotools/extractor). fontFeatures will output aalt features like these: ``` feature aalt { script...
The GDEF table seems to always be a series of empty lists. Is this intentional / any way to parse the full GDEF table? Test code with Roboto: ```python from...
On Windows 10 22H2 19045.3086, Python 3.10.5, running otf2fea in PowerShell opens a window to choose how to open the file in an editor, which shows the Python code of...
As you may notice we still have a test fail. I'm not sure how to fix it as the results are identical, markClass names shouldn't matter to a roundtrip?
Currently the only thing that otf2fea / fontFeatures.ttLib.GPOSUnparser is missing is support for mark to ligature rules. The reason I haven't implemented them is that I am not sure how...
It seems that `languagesystem` statements in a feature file are not respected. Please check the following example: ``` import fontFeatures.feaLib fea = """ languagesystem tml2 dflt; feature haln { sub...
Build the same ff, apply one of them to a certain font using .buildBinaryFeatures(), then somehow the results of .asFea() aren’t the same anymore. Is this an intended behavior? Can...
https://github.com/simoncozens/fontFeatures/blob/f31cdadf7aa3eae1fb3953b692840ef3fc04c82b/fontFeatures/feaLib/FontFeatures.py#L13-L14 Is this `< 2` assuming a `DFLT dflt` is always present next to a non-default language system based on the commented code below? https://github.com/simoncozens/fontFeatures/blob/f31cdadf7aa3eae1fb3953b692840ef3fc04c82b/fontFeatures/__init__.py#L216-L220
https://github.com/simoncozens/fontFeatures/blob/f31cdadf7aa3eae1fb3953b692840ef3fc04c82b/fontFeatures/__init__.py#L577 https://github.com/simoncozens/fontFeatures/blob/f31cdadf7aa3eae1fb3953b692840ef3fc04c82b/fontFeatures/__init__.py#L594 Seems it’s now expected also to be `list[list[str]]`.
Deshaper
Still heavy wip. This PR adds the ability to reverse a shaped buffer e.g Buffer: الله After deshaping: ا ل ل ه It basically does the reverse of the shaperLib/HB...