-
Notifications
You must be signed in to change notification settings - Fork 21
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
'opbd' is weird #578
Comments
As Adobe registered this feature, they should provide clarification. |
These three features are some of the unimplemented featured and should be deprecated (they are unimplementable as they go against how OpenType shaping is done in virtually all implementations). I have only ever seen one font that has |
These are part of a speculative model of OTL implementation that Adobe envisaged in the early days of OpenType, in which some features referenced other features. It was based on a misunderstanding of the relationship of OTL feature tags to software UI, so the opbd feature would provide the UI for the lower level lfbd and rfbd features. Not sure what the folks at Adobe were smoking at the time. I agree with Khaled that these features as specified are unimplemented and probably unimplementable in the common OTL implementation model (so like the daffy size feature). opbd should be deprecated. The lfbd and rfbd should either be deprecated or rewritten in a way that makes them implementable. |
I asked Adobe, who registered these features, to investigate this issue. In the meantime, I've revised the opbd/lfbd/rtbd feature descriptions as part of work for #347 and #601. I'll repeat here the current drafts for these features (including unchanged portions that are relevant for this issue)—note that the revisions address only #347/#601 and do not attempt to address the issue reported here. opbd:
lfbd:
rtbd:
|
We are investigating. |
Adobe would like ‘opbd’ and its minions ‘lfbd’ & ‘rtbd’ to be marked as deprecated in the features registry. |
I am 100% okay with opbd being deprecated. The individual lfbd and rtbd features are, however, potentially useful without opbd if rewritten and, indeed, could constitute part of a model that might also involve tpbd (top) and (btbd) bottom optical bounds features for vertical text. The error of the original feature registration was the idea that a single feature was needed to be able to apply the others, as a kind of gateway between application function and the individual features and their lookups. The idea of using GPOS to define margin alignment isn't a terrible one in itself, especially for some scripts and styles that are not well served by algorithmic margin alignment such as currently available in InDesign. That said, implementation of GPOS optical margin alignment, in both fonts and applications, requires some significant work, which I'm not holding my breath awaiting. I would rather, however, consider these features potential or pending, rather than deprecated. It would be silly to formally deprecate them and then decide down the road that we'd actually like to use them. |
As part of a separate issue that required touching the “Application interface” fields, I’ve drafted a revision for ‘lfbd’ and ‘rtbd’ to say the following:
To allow for usage of ‘lfbd’ or ‘rtbd’ independent of ‘opbd’, I’ve have to revise that, but that would be doable. |
Note that an actual implementation would throw up a number of interesting practical issues. The lfbd and rtbd features should be applied, respectively, when text is left-aligned or right-aligned. That would imply not only margin alignment, but also column alignment, and even tab alignment. While margin and column widths may reasonably be assumed to be wide enough to merit text boundary alignment, tab distances may be close, and it may be necessary for software to use some kind of tolerance when determining whether to apply a boundary alignment feature. If text is justified (i.e. both left and right boundaries are aligned to margin, column edges, etc..) the output of the lfbd and rtbd features needs to be taken into account for linebreaking and other justification functions such as wordspacing tolerances or kashida insertion. Because of the amount of work involved in defining lfbd and rtbd GPOS lookups (and the current lack of any very convenient visual editing tool), I don't imagine it being something a lot of font makers would do for a lot of fonts (although that may be different if automated (paging Mr Cozens)). I can imagine it being most desirable in some display fonts with unusual glyph shapes, extending left and right swashes intended for line initial and final use, and similar things that don't submit well to algorithmic text boundary alignment. |
I still GPOS is a bad place for this information. GPOS arranges lookups in scripts and languages which makes sense while doing basic shaping, but by the time optical alignment is done (after line breaking and after/during justification), the script and language itemization of the text is probably gone, or makes no sense to be respected, but implementations need to still deal with all the complexity or do special casing (e.g. only check for Since these features are not used and have been used in the past 20 years, they should be deprecated for good and alternative explored based on the needs of implementations, may be a dedicated table like Apple’s Features like |
Good points, Khaled. As a counterpoint, one could say that optical bounds adjustments are just kerning to the space outside the text. :) |
I've heard input here and also in other contexts (mpeg-otspec list, offline discussion with Apple, MS.) Based on the combined input, I think there's general consensus to let 'opbd' be deprecated, but not to deprecate 'lfbd' and 'rtbd': there's still thinking that they are potentially useful and indication that they are, in fact, supported in some apps. |
Proposed revisions for next version: opbd:
lfbd:
rtbd:
|
This implies that the substitutions in an 'opbd' lookup are ignored: only its coverage table is consulted, and the substitutions are actually done by 'lfbd' and 'rtbd'. Is that the intended interpretation of 'opbd'? Is this an interoperable requirement in practice?
It also implies that the coverage tables of 'lfbd' and 'rtbd' lookups are either completely ignored or are filtered through the coverage table of 'opbd' lookups. If a glyph at the left end of a line is in the coverage table of a 'opbd' lookup but not in the coverage table of any 'lfbd' lookup, but a 'lfbd' lookup does contain a substitution for that glyph, does the 'lfbd' lookup apply to that glyph? If a glyph at the left end of a line is not in the coverage table of any 'opbd' but is in the coverage table of a 'lfbd' lookup, does the 'lfbd' lookup apply to that glyph?
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: