Cursive attachment & marks

Hi,
I’m quite new to type design… and I’m liking the workflow in Glyphs so far and the support for RTL languages.

I’m designing an arabic typeface using cursive attachment… everything seemed to be going well until I started working on the marks and their positioning in relation to base glyphs and other marks. I’m testing the font in Indesign CS5 (ME version with Arabic support) and it seems that when I use the marks they break the cursive attachment feature (letters don’t attach at the “entry” & “exit” anchors)…

marks positioning is generated automatically using anchors.

i’m guessing it might be the order of features Glyphs generates… and one feature breaks the other… and if that’s the case… is there a way I can fix this?

I tried to follow the blog post about setting up the marks manually but that didn’t help

I’m using Version 1.3.17

thanks for your help and for the awesome app

cheers,
Haitham

Haitham: can you send the .glyphs file to support at this domain? We’ll have a look.

thanks mekkablue.
I sent the file to the support email address.

This problem has been fixed in the recent betas, which you can access by activating the Cutting Edge option in the application preferences. (You can revert to the latest stable version by re-downloading the app from the website.)

I had this exact problem and found out this post. As you suggested, I updated to latest beta version and problem is solved.

Now I’ve noticed that turning on the calt feature (at the bottom-left) doesn’t activate the Cursive Positioning (curs) text view anymore.

Also this is and was broken at the bottom preview too. Without this, It is hard to make the glyphs.

Can you paste the contents of your calt feature here?

As a workaround, you can insert the glyph manually via cmd-F.

Hi Rainer,

Please take a look at this picture to find out what is the problem:

https://dl.dropboxusercontent.com/u/5654479/PICS/CursivePositioning_PreviewProblem.png

The third line (snapshot of text edit) is showing the correct positioning of the glyphs. But as you see inside the Glyphs, it is not working correctly.

In you stable version the top text view was working, but now it is not moving the glyphs vertically anymore.

I suggest you to add either a “curs” button to the features, or include this in the “calt” feature as it was before.

here is the content of my font’s cult as you asked:

lookupflag IgnoreMarks;

sub [keheh-ar.init.alt kaf-ar.init.alt gaf-ar.init.alt] lam-ar.medi’ [alefMaksura-ar.fina yeh-ar.fina yeh-farsi.fina yehHamzaabove-ar.fina] by lam-ar.medi.yehkeh.alt;
sub [keheh-ar.init.alt kaf-ar.init.alt gaf-ar.init.alt] lam-ar.medi’ [alefMaksura-ar.fina yeh-ar.fina yeh-farsi.fina yehHamzaabove-ar.fina] by lam-ar.medi.yehkeh.alt;
sub [keheh-ar.init.alt kaf-ar.init.alt gaf-ar.init.alt] lam-ar.medi.yehkeh.alt [alefMaksura-ar.fina yeh-ar.fina yeh-farsi.fina yehHamzaabove-ar.fina]’ by [alefMaksura-ar.fina.seen.alt yeh-ar.fina.seen.alt yeh-farsi.fina.seen.alt yehHamzaabove-ar.fina.seen.alt];

sub dotlessbeh-ar.init’ [jeem-ar.medi tcheh-ar.medi hah-ar.medi khah-ar.medi] by dotlessbeh-ar.init.alt;
sub dotlessbeh-ar.init.alt [jeem-ar.medi tcheh-ar.medi hah-ar.medi khah-ar.medi]’ by [jeem-ar.medi.alt tcheh-ar.medi.alt hah-ar.medi.alt khah-ar.medi.alt];

sub [yehHamzaabove-ar.init dotlessbeh-ar.init beh-ar.init peh-ar.init teh-ar.init theh-ar.init meem-ar.init noon-ar.init yeh-ar.init yeh-farsi.init]’ [jeem-ar.medi tcheh-ar.medi hah-ar.medi khah-ar.medi] by [yehHamzaabove-ar.init.alt dotlessbeh-ar.init.alt beh-ar.init.alt peh-ar.init.alt teh-ar.init.alt theh-ar.init.alt meem-ar.init.alt noon-ar.init.alt yeh-ar.init.alt yeh-farsi.init.alt];
sub [yehHamzaabove-ar.init.alt dotlessbeh-ar.init.alt beh-ar.init.alt peh-ar.init.alt teh-ar.init.alt theh-ar.init.alt meem-ar.init.alt noon-ar.init.alt yeh-ar.init.alt yeh-farsi.init.alt] [jeem-ar.medi tcheh-ar.medi hah-ar.medi khah-ar.medi]’ by [jeem-ar.medi.alt tcheh-ar.medi.alt hah-ar.medi.alt khah-ar.medi.alt];

sub seen-ar.init’ tatweel-ar space by seen-ar.alt;
sub seen-ar.alt tatweel-ar’ by zerowidthspace;
sub sheen-ar.init’ tatweel-ar space by sheen-ar.alt;
sub sheen-ar.alt tatweel-ar’ by zerowidthspace;

sub kaf-ar.medi’ [lam-ar.medi lam-ar.fina alef-ar.fina alefhamzabelow-ar.fina alefMadda-ar.fina alefHamzaabove-ar.fina] by kaf-ar.medi.alt;
sub keheh-ar.medi’ [lam-ar.medi lam-ar.fina alef-ar.fina alefhamzabelow-ar.fina alefMadda-ar.fina alefHamzaabove-ar.fina] by keheh-ar.medi.alt;
sub gaf-ar.medi’ [lam-ar.medi lam-ar.fina alef-ar.fina alefhamzabelow-ar.fina alefMadda-ar.fina alefHamzaabove-ar.fina] by gaf-ar.medi.alt;

sub [keheh-ar.init.alt kaf-ar.init.alt gaf-ar.init.alt] lam-ar.medi’ [alef-ar.fina alefhamzabelow-ar.fina alefMadda-ar.fina alefHamzaabove-ar.fina] by lam-ar.medi.ke.alt;
sub [keheh-ar.init.alt kaf-ar.init.alt gaf-ar.init.alt] lam-ar.medi.ke.alt’ [alef-ar.fina alefhamzabelow-ar.fina alefMadda-ar.fina alefHamzaabove-ar.fina] by lam-ar.medi.ke.alt;

sub [keheh-ar.init.alt kaf-ar.init.alt gaf-ar.init.alt] lam-ar.medi.ke.alt [alef-ar.fina alefhamzabelow-ar.fina alefMadda-ar.fina alefHamzaabove-ar.fina]’ by [alef-ar.fina.alt alefhamzabelow-ar.fina.alt alefMadda-ar.fina.alt alefHamzaabove-ar.fina.alt];

sub [keheh-ar.init kaf-ar.init gaf-ar.init]’ [lam-ar.medi lam-ar.fina] by [keheh-ar.init.alt kaf-ar.init.alt gaf-ar.init.alt];
sub [keheh-ar.init.alt kaf-ar.init.alt gaf-ar.init.alt] lam-ar.medi’ by lam-ar.medi.alt;
sub [keheh-ar.init.alt kaf-ar.init.alt gaf-ar.init.alt] lam-ar.fina’ by lam-ar.fina.alt;

sub lam-ar.medi’ [alef-ar.fina alefhamzabelow-ar.fina alefMadda-ar.fina alefHamzaabove-ar.fina] by lam-ar.medi.la.alt;
sub lam-ar.medi.la.alt [alef-ar.fina alefhamzabelow-ar.fina alefMadda-ar.fina alefHamzaabove-ar.fina]’ by [alef-ar.fina.alt alefhamzabelow-ar.fina.alt alefMadda-ar.fina.alt alefHamzaabove-ar.fina.alt];

sub keheh-ar.init’ alef-ar.fina by keheh-ar.init.alef.alt;
sub gaf-ar.init’ alef-ar.fina by gaf-ar.init.alef.alt;
sub kaf-ar.init’ alef-ar.fina by kaf-ar.init.alef.alt;

sub ain-ar.init’ meem-ar.fina by ain-ar.meem.init.alt;
sub ain-ar.meem.init.alt meem-ar.fina’ by meem-ar.ain.fina.alt;
sub ghain-ar.init’ meem-ar.fina by ghain-ar.meem.init.alt;
sub ghain-ar.meem.init.alt meem-ar.fina’ by meem-ar.ain.fina.alt;
sub heh-ar.init’ meem-ar.fina by heh-ar.meem.init.alt;
sub heh-ar.meem.init.alt meem-ar.fina’ by meem-ar.ain.fina.alt;
sub hah-ar.init’ meem-ar.fina by hah-ar.meem.init.alt;
sub hah-ar.meem.init.alt meem-ar.fina’ by meem-ar.ain.fina.alt;
sub tcheh-ar.init’ meem-ar.fina by tcheh-ar.meem.init.alt;
sub tcheh-ar.meem.init.alt meem-ar.fina’ by meem-ar.ain.fina.alt;
sub khah-ar.init’ meem-ar.fina by khah-ar.meem.init.alt;
sub khah-ar.meem.init.alt meem-ar.fina’ by meem-ar.ain.fina.alt;
sub jeem-ar.init’ meem-ar.fina by jeem-ar.meem.init.alt;
sub jeem-ar.meem.init.alt meem-ar.fina’ by meem-ar.ain.fina.alt;
sub meem-ar.init’ meem-ar.fina by meem-ar.meem.init.alt;
sub meem-ar.meem.init.alt meem-ar.fina’ by meem-ar.ain.fina.alt;

sub [yehHamzaabove-ar.init dotlessbeh-ar.init beh-ar.init peh-ar.init teh-ar.init theh-ar.init noon-ar.init yeh-ar.init yeh-farsi.init]’ [meem-ar.fina] by [yehHamzaabove-ar.meem.init.alt dotlessbeh-ar.meem.init.alt beh-ar.meem.init.alt peh-ar.meem.init.alt teh-ar.meem.init.alt theh-ar.meem.init.alt noon-ar.meem.init.alt yeh-ar.meem.init.alt yeh-farsi.meem.init.alt];
sub [yehHamzaabove-ar.meem.init.alt dotlessbeh-ar.meem.init.alt beh-ar.meem.init.alt peh-ar.meem.init.alt teh-ar.meem.init.alt theh-ar.meem.init.alt noon-ar.meem.init.alt yeh-ar.meem.init.alt yeh-farsi.meem.init.alt] [meem-ar.fina]’ by [meem-ar.ain.fina.alt];

sub [dotlessbeh-ar.medi beh-ar.medi peh-ar.medi teh-ar.medi theh-ar.medi noon-ar.medi yeh-ar.medi yeh-farsi.medi yehHamzaabove-ar.medi]’ [alefMaksura-ar.fina yeh-ar.fina yeh-farsi.fina yehHamzaabove-ar.fina] by [dotlessbeh-ar.medi.yeh.alt beh-ar.medi.yeh.alt peh-ar.medi.yeh.alt teh-ar.medi.yeh.alt theh-ar.medi.yeh.alt noon-ar.medi.yeh.alt yeh-ar.medi.yeh.alt yeh-farsi.medi.yeh.alt yehHamzaabove-ar.medi.yeh.alt];
sub [dotlessbeh-ar.medi.yeh.alt beh-ar.medi.yeh.alt peh-ar.medi.yeh.alt teh-ar.medi.yeh.alt theh-ar.medi.yeh.alt noon-ar.medi.yeh.alt yeh-ar.medi.yeh.alt yeh-farsi.medi.yeh.alt yehHamzaabove-ar.medi.yeh.alt] [alefMaksura-ar.fina yeh-ar.fina yeh-farsi.fina yehHamzaabove-ar.fina]’ by [alefMaksura-ar.fina.seen.alt yeh-ar.fina.seen.alt yeh-farsi.fina.seen.alt yehHamzaabove-ar.fina.seen.alt];

sub [seen-ar.medi sheen-ar.medi dad-ar.medi heh-ar.medi kaf-ar.medi keheh-ar.medi lam-ar.medi sad-ar.medi]’ [alefMaksura-ar.fina yeh-ar.fina yeh-farsi.fina yehHamzaabove-ar.fina] by [seen-ar.medi.yeh.alt sheen-ar.medi.yeh.alt dad-ar.medi.yeh.alt heh-ar.medi.yeh.alt kaf-ar.medi.yeh.alt keheh-ar.medi.yeh.alt lam-ar.medi.yeh.alt sad-ar.medi.yeh.alt];
sub [seen-ar.medi.yeh.alt sheen-ar.medi.yeh.alt dad-ar.medi.yeh.alt heh-ar.medi.yeh.alt kaf-ar.medi.yeh.alt keheh-ar.medi.yeh.alt lam-ar.medi.yeh.alt sad-ar.medi.yeh.alt] [alefMaksura-ar.fina yeh-ar.fina yeh-farsi.fina yehHamzaabove-ar.fina]’ by [alefMaksura-ar.fina.seen.alt yeh-ar.fina.seen.alt yeh-farsi.fina.seen.alt yehHamzaabove-ar.fina.seen.alt];

sub [jeem-ar.medi.alt tcheh-ar.medi.alt hah-ar.medi.alt khah-ar.medi.alt] [alefMaksura-ar.fina yeh-ar.fina yeh-farsi.fina yehHamzaabove-ar.fina]’ by [alefMaksura-ar.fina.jeembeh.alt yeh-ar.fina.jeembeh.alt yeh-farsi.fina.jeembeh.alt yehHamzaabove-ar.fina.jeembeh.alt];

sub lam-ar.medi.alt [alefMaksura-ar.fina yeh-ar.fina yeh-farsi.fina yehHamzaabove-ar.fina]’ by [alefMaksura-ar.fina.jeembeh.alt yeh-ar.fina.jeembeh.alt yeh-farsi.fina.jeembeh.alt yehHamzaabove-ar.fina.jeembeh.alt];

sub [dad-ar.init sad-ar.init seen-ar.init sheen-ar.init]’ [alefMaksura-ar.fina yeh-ar.fina yeh-farsi.fina yehHamzaabove-ar.fina] by [dad-ar.init.yeh.alt sad-ar.init.yeh.alt seen-ar.init.yeh.alt sheen-ar.init.yeh.alt];
sub [dad-ar.init.yeh.alt sad-ar.init.yeh.alt seen-ar.init.yeh.alt sheen-ar.init.yeh.alt] [alefMaksura-ar.fina yeh-ar.fina yeh-farsi.fina yehHamzaabove-ar.fina]’ by [alefMaksura-ar.fina.seen.alt yeh-ar.fina.seen.alt yeh-farsi.fina.seen.alt yehHamzaabove-ar.fina.seen.alt];

sub [hah-ar.init jeem-ar.init khah-ar.init tcheh-ar.init]’ [alef-ar.fina alefHamzaabove-ar.fina alefMadda-ar.fina alefhamzabelow-ar.fina dal-ar.fina ddal-ar.fina gaf-ar.fina gaf-ar.medi kaf-ar.fina kaf-ar.medi keheh-ar.fina keheh-ar.medi lam-ar.fina lam-ar.medi thal-ar.fina lam-ar.fina.alt lam-ar.medi.alt lam-ar.medi.ke.alt lam-ar.medi.la.alt heh-ar.fina hehHamzaabove-ar.fina hehaltone-ar izafet-ar tehmarbuta-ar.fina] by [hah-ar.alef.init.alt jeem-ar.alef.init.alt khah-ar.alef.init.alt tcheh-ar.alef.init.alt];

Do I get this right: It works ok in InDesign? Just the preview in Glyphs does not work as expected?

Try changing your lookupflag line at the beginning to:
lookupflag IgnoreMarks RightToLeft;

It works fine in InDesign, Text Edit, even Safari, but Doesn’t work in Glyphs itself.

Could you send me the .glyphs file for testing?

I sent it.

Thank you.

fixed it

Great!

There was a couple of issues that I reported to you by email.

Thank you

I found a bog in this.

Now in Glyphs, make the text to be RTL, activate the calt and write some Arabic characters, then if you delete the first character (at right), the Glyph would always crashes.

I can’t reproduce this.
Can you send me the font again and send me the text you had in the edit view?

I sent it. Thanks!