The problem has been solved (it seems). The problem was not the Class value as I hand edited the ttx file, reconstructed the otf but again did not work.
I deleted the anchors of this glyph, recreated them (exactly the same) and then as a miracle everything worked. This explains why nobody answered me when I asked the fontforge list yesterday. It looks like a bug of fontforge to me. I also fixed the stacking_above_AND_below. NewCM will have stellar support for diacritics stacking 😁 Thanks for your time, help and xetex support for stacking, cheers, Antonis. On 10/23/21 11:11 PM, Jonathan Kew wrote: > On 23/10/2021 16:48, Antonis Tsolomitis wrote: >> >> Thanks for the answer. >> >> Yes acute works. But where do you see the difference? I am looking >> the dialogs of >> fontforge and can not locate the difference. >> >> I have more trouble with diacritics stacking especially when stacking >> above AND below. >> x́ (x+ U+0301) works >> x̖ (x + U+0316) works as well, but >> x̖́ (x+ U+0301 + U+0316) fails. >> >> >> I have been trying to resolve these issues for a long time but >> without luck. The fontforge >> dialogs show correct stacking but xetex does not stack as expected an >> I have routinely failed >> to find the reasons. >> >> So at which dialogs do you see the difference between U+0301 and >> U+0300 ? >> And why simultaneous stack above and below fails? >> > > I haven't looked at FontForge dialogs; I used TTX (from the FontTools > package) to look at an XML dump of the .otf file, and noticed that for > the uni0300 glyph, the mark-to-base lookup has an attachment point > with class=1: > > <MarkRecord index="9"> > <Class value="1"/> > <MarkAnchor Format="1"> > <XCoordinate value="218"/> > <YCoordinate value="516"/> > </MarkAnchor> > </MarkRecord> > > whereas for uni0301 and other diacritics that should attach to the > "above" anchor of the base, the attachment has class=3: > > <MarkRecord index="10"> > <Class value="3"/> > <MarkAnchor Format="1"> > <XCoordinate value="284"/> > <YCoordinate value="522"/> > </MarkAnchor> > </MarkRecord> > > In the associated BaseArray, glyphs like uni2C9B appear to have only > anchors 3 (above) and 4 (below) defined: > > <BaseRecord index="876"> > <BaseAnchor index="0" empty="1"/> > <BaseAnchor index="1" empty="1"/> > <BaseAnchor index="2" empty="1"/> > <BaseAnchor index="3" Format="1"> > <XCoordinate value="272"/> > <YCoordinate value="453"/> > </BaseAnchor> > <BaseAnchor index="4" Format="1"> > <XCoordinate value="296"/> > <YCoordinate value="-20"/> > </BaseAnchor> > <BaseAnchor index="5" empty="1"/> > <BaseAnchor index="6" empty="1"/> > </BaseRecord> > > so I'm assuming that's why uni0300 fails to attach. > > I don't know exactly how this is exposed in the FontForge interface, > sorry.... > > As for combinations with above + below, you may need investigate mark > classes, and ensure that MarkToBase lookups for the "above" and > "below" classes are each set to ignore the other class of marks. So if > you have <x + U+0301 + U+0316>, the lookup that wants to handle <x + > uni0316> needs to *ignore* the uni0301 glyph that appears in between. > This is done using mark classes; see the documentation of the > MarkToBase lookup in > https://docs.microsoft.com/en-gb/typography/opentype/spec/gpos. > > Hope this helps -- sorry I don't know details of how to control all > this from FontForge, but I'm sure it has the capabilities somewhere... > > JK > >> Thanks for your help, >> >> Antonis. >> >> >> >> >> >> On 10/23/21 6:26 PM, Jonathan Kew wrote: >>> On 23/10/2021 14:37, Antonis Tsolomitis wrote: >>>> >>>> It is a long time now that NewComputerModern has build-in >>>> information for diacritics stacking. >>>> I have heard that xetex supports this but I can not make it work. >>>> The font is developed >>>> with fontforge and as you can see in the attached screenshot, >>>> fontforge shows stacking working. >>>> >>>> However xelatex just places, say the grave (uni0300) next and not >>>> above the character, say uni2C9B >>>> (as in screenshot). >>>> >>>> So I guess I have something wrong in the font that xetex does not >>>> like(?) >>> >>> >>> Do any other diacritics such as the acute (U+0301) or dieresis >>> (U+0308) work? From a quick look at the GPOS table in the font -- if >>> I'm reading it correctly -- it appears that uni0300 may have the >>> wrong attachment point class (whereas in uni0301 and uni0308, it >>> looks correct). >>> >>> JK >>> >>> >>> >>>> >>>> The font currently develops the coptic block for academic needs >>>> this is why I use uni2C9B. >>>> >>>> A sample file is >>>> >>>> \documentclass{article} >>>> \usepackage{fontspec} >>>> \setmainfont{NewCM10-Regular.otf} >>>> \begin{document} >>>> ⲛ̀ >>>> \end{document} >>>> >>>> However the font that contains this character (since it is under >>>> development) is here: >>>> https://myria.math.aegean.gr/~atsol/tmp/NewCM10-Regular.sfd >>>> <https://myria.math.aegean.gr/~atsol/tmp/NewCM10-Regular.sfd> >>>> https://myria.math.aegean.gr/~atsol/tmp/NewCM10-Regular.otf >>>> <https://myria.math.aegean.gr/~atsol/tmp/NewCM10-Regular.otf> >>>> >>>> thanks for any help, >>>> >>>> Antonis. >>>> >>> >> >