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
"[feature x] table maps the character sequence" #347
Comments
This may be a single instance of a generic issue: features that describe actions on characters rather than on glyphs (for characters). General review of feature descriptions for this issue might be a good idea. |
Proposed changes for partial fix, covering features_ae.htm: 'afrc':
'akhn':
'ccmp':
'cjct':
'dnom':
'dtls':
|
What is the “Application” here? Are there any OpenType implementation that does the described behavior? What if the user wanted to apply the feature to things other than figures and slash? |
I think the same thing that is meant by "the application" in every other feature description: any application that supports the feature. Whether, in fact, there is an actual application that supports it is a separate question. |
That is still not clear to me, in the case of, say, web browser, is it the responsibility of the web page author, the browser engine, or the OpenType layout engine to enforce this constraint? Or is it a mere recommendation and applications are free not to implement it? |
As far as the OT spec itself is concerned, applications are not required to support any particular features. (Just like Unicode conformance doesn't require applications to support any particular characters.) But, I think you've raised a valid question (which had occurred to me while I made the revision): Does a user control what span of characters a discretionary feature is applied to? Or should an application do that? For most discretionary features, it can be entirely up to the user. In this particular case, it's less clear: what should happen if a user applied the feature only to "/", or only to digits after "/"? In this case, I think the intent of the vendor that registered the feature was for an app to apply the feature over a complete digits-slash-digits span. (Whether or not that's a useful model is a separate question.) But this is all a separate topic from this issue. Please open a separate issue if you think it needs further discussion. |
A final note on discussion of 'afrc': looking at 'frac', that seems to suggest that the user determines the string the feature is applied to, like most discretionary features. So, that might have also been the intent when 'afrc' was registered. |
Proposed changes for partial fix, covering features_fj: 'frac':
NOTE: The above changes are meant to pertain specifically to this issue. The draft attempts to retain the intent of the current 'frac' description. It is not attempting to address separate issues raised in #580. 'hlig':
'hngl':
|
Proposed changes for partial fix, covering features_ko: 'ljmo':
(This also includes a fix for a separate issue pertaining to jamo sequences and 'ccmp'.) 'lnum':
'numr':
'onum':
'ordn':
'ornm':
|
Proposed changes for partial fix, covering features_pt: 'pcap':
'sinf':
'smcp':
'stch':
'tjmo':
(This also includes a fix for a separate issue pertaining to jamo sequences and 'ccmp'.) |
Proposed changes for partial fix, covering features_uz: 'vjmo':
(This also includes a fix for a separate issue pertaining to jamo sequences and 'ccmp'.) |
Proposed changes for the next version in features_ae, features_fj, features_ko, features_pt and features_uz are given in five preceding comments. |
The proposed new texts quite frequently use the phrase “default glyph”. If I understand correctly, this phrase means the glyph IDs that are obtained by mapping code points through cmap tables. In complex scripts it’s quite common that glyph IDs that are the result of applying one lookup become inputs for the next lookup. Therefore, it cannot be assumed that the inputs for lookups are always default glyphs. |
@NorbertLindenberg : understood. Of the revised feature descriptions, it's only an issue particularly for 'cjct', and I made a point to work around that in that case. In some cases—akhn, ljmo, ornm, stch, tjmo, vjmo—the intent really is to act on the default glyph for a character. For most discretionary features, the prototypical case is to act on the default glyph mapped from the cmap, and I think it's not unreasonable to describe the "recommended" implementation that way. But perhaps in some of these cases it would also work not to mention "default". |
See bug #290. |
Per review feedback, removed "default" in descriptions for the following features:
|
On frac and afrc: The run for application of the frac feature is usually user-selected, either manually or via markup. I have seen some fonts that use more complex contextual GSUB to try to identify fraction strings within a text, such that the frac feature could be applied to a whole document and correctly identify, by context, what are fractions and what are not. This has always seemed to me frightening and beyond what OTL contextual substitutions were designed to handle. The afrc feature description presumes that the default form of fraction in a font will be the slash form, and the alternative will be the stacked form with horizontal bar. Would it be incorrect for a font to have default stacked fractions? Use of the term 'nut fraction' is perhaps too specific, since a nut fraction was historically so called because it was roughly an en width, but that presumes a single numerator and single denominator. A stacked fraction could have e.g. multiple denominators, and hence be wider than a nut. The afrc feature presumes stacked fractions will be handled via a ligature substitution, probably because at the time no one had figured out a way to handle arbitrary fractions in stacked form (outside of TeX or other specialised math layout software and fonts). But I was nutso enough to try it. |
I think that prototypical case is a bit Latin-centric, and even for such 'simple' scripts the output of preceding feature lookups sometimes needs to be accounted for. For complex cripts, by the time you get to discretionary features, orthographic unit shaping has already taken place, as has reordering, so the glyph run is a long way from the cmap output. In developing GSUB, I tend to refer to 'input glyphs', which is the state of the glyph run at the point where the specific feature lookup is applied. This could be the cmap output, or the orthographic unit shaping output, or the output from any preceding feature lookup. |
"The 'ccmp' table maps the character sequence"
ccmp is about glyph composition and decomposition, and acts (like any other feature) on glyph sequences, not character sequences.
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.
The text was updated successfully, but these errors were encountered: