Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OTL table problems #25

Closed
tiroj opened this issue Oct 23, 2020 · 11 comments
Closed

OTL table problems #25

tiroj opened this issue Oct 23, 2020 · 11 comments

Comments

@tiroj
Copy link
Contributor

tiroj commented Oct 23, 2020

Erwin Denissen has reported problems with the OpenType Layout contents in the output of the current build system, which were not present in the earlier builds from VOLT sources. I have confirmed the problems by analysing the Version 1.17 Build 009 fonts in OTMaster.

In summary:

  1. Only the DFLT/dflt and latn/dflt script and language system combination has correct OTL.

  2. Other latn language system tags are missing GPOS (no kerning).

  3. Other latn language system tags have duplicate lookup references for each feature (probably functionally not an issue, but redundant data.

Investigating possible causes starting at the VFJ sources, but concerned that problems might be further down the tool chain in the automated build process.

@tiroj
Copy link
Contributor Author

tiroj commented Oct 23, 2020

(2) may be a non-issue, and actually an intended efficiency. Because the kerning is identical for all the language system entries, the GPOS is applied as default for all latn text, regardless of language setting. At least, that's what I am seeing in HarfBuzz-enabled InDesign. Would want to confirm behaviour in other environments.

@tiroj
Copy link
Contributor Author

tiroj commented Oct 23, 2020

re. (3) it looks like lookups that are unique to the language system tag, e.g. locl feature lookups, occur only once, while lookups that are shared with dflt and other language system tags are duplicated.

@tiroj
Copy link
Contributor Author

tiroj commented Oct 23, 2020

.fea code in the VFJ sources looks correct, e.g. for the c2sc feature, the lookups are referenced as follows:

feature c2sc {
    script latn;
    language dflt;
    lookup latn.c2sc;
    lookup xxxx.c2sc;
    language CAT;
    lookup latn.c2sc;
    lookup xxxx.c2sc;
    language NLD;
    lookup latn.c2sc;
    lookup xxxx.c2sc;
    language MOL;
    lookup latn.c2sc;
    lookup xxxx.c2sc;
    language ROM;
    lookup latn.c2sc;
    lookup xxxx.c2sc;
    language TRK;
    lookup latn.c2sc;
    lookup xxxx.c2sc;
} c2sc;

[The latn. lookups contain substitutions involving only Latin alphabetic characters; the xxxx. lookups contain numeral substitions. This is future-proofing lookups for extension to other scripts: the xxxx. lookups are applied across all scripts.]

@davelab6
Copy link
Contributor

concerned that problems might be further down the tool chain in the automated build process.

The aim of an libre build process is to make debugging problems more transparent :)

@tiroj
Copy link
Contributor Author

tiroj commented Oct 25, 2020

I understand the aim, but transparent to whom? Practically, one person's transparent container may be someone else's black box, because one has to know how to examine the contents, which at the moment I don't. So while I am okay using a libre build process, it isn't my build process, and I don't really have a good understanding of the moving parts inside the box. One of those moving parts is duplicating lookup entries for non-dflt language system tags. If I knew which, I would post an issue in the appropriate tool repo. Seeking insight from someone for whom this is actually transparent.

@khaledhosny
Copy link

That is either feaLib or the tool that generated the feature code, I’m not sure which is at fault here. I think what is happening is that, when

Does changing c2sc to the following fix the duplication issue?

feature c2sc {
    script latn;
    language dflt;
    lookup latn.c2sc;
    lookup xxxx.c2sc;
    language CAT;
    language NLD;
    language MOL;
    language ROM;
    language TRK;
} c2sc;

If it does, then either this how the feature code should be written, or feaLib is literally interpreting the feature file spec that says the effect of setting language without exclude_dflt is that “the current default lookups are automatically included into the language system”. May be makeotf checks for duplicates but feaLib does not.

@tiroj
Copy link
Contributor Author

tiroj commented Oct 26, 2020

Thanks, Khaled. I'll experiment as you propose. Would I need to edit all the feature code accordingly?

The current fea code is as converted from earlier VOLT version using Volto. Is this an issue we might need to consider in how Volto writes the code?

@tiroj
Copy link
Contributor Author

tiroj commented Oct 26, 2020

[At least, the fea code in the VFJ source is based on a Volto conversion. For the build process, this goes via UFO, and I have not yet confirmed whether the fea code written to the UFO is identical to that in the VFJ.]

@khaledhosny
Copy link

The current fea code is as converted from earlier VOLT version using Volto. Is this an issue we might need to consider in how Volto writes the code?

Yes. I think Volto should be appending exclude_dflt to the language statements, since VOLT does not have the described implicit lookups inheritance from dflt.

@tiroj
Copy link
Contributor Author

tiroj commented Oct 28, 2020

I've confirmed that revising the .fea code for the c2sc feature as @khaledhosny suggested removes the duplicate lookup mappings, so will proceed to do likewise for all the features and push updated sources and fonts shortly.

Khaled, I will also open a Volto issue.

@tiroj
Copy link
Contributor Author

tiroj commented Oct 28, 2020

Fixed: v1.19 b011

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants