I am using Layer.anchorsTraversingComponents() heavily but it does not pick up everything. How is it deciding not to show certain anchors? What is the best way to retrieve those which are not shown in the list?

It stopes when it finds an anchor with underscore or if a Mark glyph has anchors.

Yes, especially those with underscore are the problem. I want to import but cannot find them.

What are you trying to do?

Tibetan syllable composition using GPOS. I embedded all the necessary anchors in my smart components and I want to be able to take any of them out at my will. Can you make the algorithm greedier and only skip when there is a duplicate? If there are multiple bottom anchors, then it either chooses the bottommost one or show both somehow, maybe with a suffix.

The marks are ignored because a lot people reuse marks for bottom and top position. Then a more greedy anchor decomposition is really dangerous.
It should work if you have no anchors in the intermediate components, only in the smart component.

Well, everything is smart component and they are all full of anchors. I am asking this because I need the anchors that are not considered necessary by Glyphs.

can you send me an email with an example?

It seems like layer.anchorsTraversingComponents() has changed its logic in the recent versions. It’s picking up different ones from what it used to before. Can I just have a way to extract anchors from arbitrary components?