🆕 TalkingLeaves plugin is now available

Explore the world’s languages and writing systems, and see what your font is missing!

TalkingLeaves is free and open-source, so please contribute any ideas or bug reports.


Looks great, thank you for sharing!

We are looking into making plugins like this easier to install and update from the Plugin Manager without manually using pip from the command line. Let us know if there are any specific things that would be important to you for a plugin installation with additional requirements.

Hey @justinpenner
thats great plugin
thank you

I think the ideal approach would begin with integrating pip into the Plugin Manager, so that plugins can include a requirements.txt, and the plugin can assume that requirements are installed by the time the plugin is loaded for the first time. From a user perspective, I don’t think I would care too much about knowing which dependencies a plugin comes with. But if you want to be transparent about it, you could have a small dialog that informs the user which packages are about to be installed, and then shows the live output from pip in a text box so they can see any errors and see when it’s finished.

It would also be nice if you can come up with a way to give each plugin its own site-packages folder to avoid conflicts. Maybe you could wrap importlib into the GlyphsApp.plugins library, like this:

from GlyphsApp.plugins import import_forPlugin_, import_from_forPlugin_

# import hyperglot
hyperglot = import_forPlugin_('hyperglot', 'TalkingLeavesPlugin')

# from hyperglot.languages import Languages
Languages = import_from_forPlugin_('Languages', 'hyperglot.languages', 'TalkingLeavesPlugin')

Once all that is done, you could remove the Modules tab from Plugin Manager as it would be irrelevant.

I’m not sure about the best solution for updating dependencies. It might be best to include an API that allows plugins to check for updates on individual/all of their dependencies, so they don’t get updated unless the plugin chooses to.

A plugin caused a crash

The Plugin TalkingLeaves.glyphsPlugin has caused a crash. Please update it by opening the Plugin Manager or re-downloading it from the original source.


Traceback (most recent call last):
File "vanillaBase.py", line 539, in action_
File "TalkingLeaves.py", line 410, in addGlyphsCallback
File "GlyphsApp/GlyphsApp/__init__.py", line 1993, in append
NameError: There is a glyph with the name "tah-ar.isol" already in the font.
App:3.3-3301 Plugin:(null)-(null) System:11.7.10

AlsoCrash glyphs

A plugin caused a crash

The Plugin TalkingLeaves.glyphsPlugin has caused a crash. Please update it by opening the Plugin Manager or re-downloading it from the original source.

NameError: There is a glyph with the name “sheen-ar.isol” already in the font.

It crash when a glyph already present
It cant ignore

Thanks for reporting this. It seems the problem is linked to Arabic isolated forms which exist in Unicode for compatibility purposes but are not treated as characters in Glyphs.

The crashes are fixed now if you download and install the plugin again. Arabic languages in TalkingLeaves will still show some characters as missing after you click Add selected glyphs. They all get added to your font, but TalkingLeaves thinks they are still missing because Glyphs removed the codepoints. I’ll fix that part of the problem soon.

I’m working on the better pip integration.


Sounds good, Im waiting for it

It’s fixed now. I also added marks, numerals, and punctuation to the Missing column – for languages that have them defined.

1 Like

No Justin. thats not so good
For example what a difference between meem-ar.isol and meem-ar
and many character that plugin add for isol
Ignore same character in basic shapes and basic
Also you do not add all arabic mark. many of them not in the list. (For this part can user select what add and what not?)

All of these character are present but plugin show them as missing

Did you download the plugin again and reinstall? It’s working for me. If I select Northern Pashto and then Add selected glyphs, then Northern Pashto disappears (or it shows as complete if “Show supported” is enabled).

The language definitions come from Hyperglot, which has Arabic isolated characters included for some Arabic languages. For example, Hyperglot’s definition of Northern Pashto includes ﻡ U+FEE1 ARABIC LETTER MEEM ISOLATED FORM. If you paste that character into Glyphs > Add glyphs, Glyphs converts it to a non-encoded glyph so it becomes meem-ar.isol in your project. TalkingLeaves does the same thing.

Since Hyperglot is saying that you need both the default and isolated forms of meem for Northern Pashto, you may need to do some research to find out whether those two glyphs should look the same or not. My understanding is that in Arabic, the isolated forms sometimes need to be different from the default forms, because the defaults are used when there are no adjacent characters, whereas the isolated forms are used when the adjacent character(s) don’t join. And since Glyphs converts Arabic isolated and ligature characters to unencoded glyphs, that seems to imply that those glyphs should not have codepoints in modern fonts. But I have never designed an Arabic font, so some of my assumptions could be wrong.

As for the other Arabic forms (init/medi/fina) and any others that do not have Unicode equivalents, they are not included in Hyperglot’s database. I am hoping to find a way to include them in TalkingLeaves, but I currently do not know of any reliable databases that define minimum glyphs sets for each Arabic language including alternate forms.