AFDKO 2.0 : Post your feedback here

Miguel Sousa's picture

If you're using the new AFDKO (v2.0), we would like to hear your feedback. Please use this thread for your comments, wishes, concerns, bugs found, and/or anything related with the tools contained in the new AFDKO. Thanks!

Andreas has already started.

Read Roberts's picture

I am implementing support for the mark attachment lookups in the "Adobe FDK for OpenType", specifically the makeotf program. An area of difficulty is representing the mark-attachment rules within a contextual string, as one or more mark glyphs may appear between the base glyph and the attaching mark class. In order to make it easier to read and write such rules, I propose the following syntax. This differs from the previously published feature file syntax in requiring a lookup-type keyword in each statement. This makes it easier to distinguish glyphs which are part of the mark attachment rule from glyphs that are only part of a context.

1) Mark class definitions.

mark <glyph class list> <anchor x1 y1> @<mark class name;

Example:

mark [acute grave] <anchor 300, 0> @TOP_MARKS;
mark [dieresis umlaut] <anchor 40, 0> @TOP_MARKS;
mark [cedilla hook] <anchor 200, -50> @BOTTOM_MARKS;

Note that each mark class definition statement can specify only one anchor point. However, you can additional glyphs with different anchor points to a mark class definition by adding additional statements for that class.

2) cursive attachment (GPOS Lookup Type 3)


position cursive <base glyph or class> <anchor x1 y1> <anchor x1 y1>;

Example:

position cursive [m.final n.final] <anchor 0 -50> <anchor NULL>;

This defines a glyph class containing the two glyphs, n.final and m.final, designed for use at the end of words. The second anchor is NULL, as there is no exit attachment point.

3) Base to mark attachment (GPOS Lookup Type 4)


position base <base glyph or class> <anchor x1 y1> mark <mark class name>;

Example:

position base [a e o u] <anchor 300 500> mark @TOP_MARKS;
position base [a e o u] <anchor 300 -50> mark @BOTTOM_MARKS;

Note that each statement specifies only one attachment point on the base glyph or glyph class; you must provide as many statements for the base glyph or glyph class as there are real attachment points.

4) ligature to mark attachment (GPOS Lookup Type 5)


position ligature <base glyph or class>
<anchor x1 y1> <anchor x2 y2>... <anchor xn yn>
mark <mark class name #1>
<mark class name #2>...<mark class name #n>;

Example:

position ligature [oe ue] <anchor 350 400> <anchor 650 400>
mark @TOP_MARKS @TOP_MARKS;
position ligature [oe ue] <anchor 350 -50> <anchor NULL>
mark @BOTTOM_MARKS;

There must be as many anchors specified as there are ligature components. There must be as many attaching mark classes provided as there are non-NULL anchors. Each statement specifies only one attachment position on each ligature component; you must provided as many statements as the maximum of the number of attachment points on any ligature component.

5) Base to mark attachment (GPOS Lookup Type 6)


position mark <base glyph or class> <anchor x1 y1> mark <mark class name>;

Works just like the base-mark statement.

6) Contextual forms.

For all these statements, the contextual form allows glyph context strings before the lookup-type keyword, before the 'mark' keyword, and after the mark class(es).

position A1 A2 ..An
<lookup-type> <base glyph or class> <anchor x1 y1>+ B1 B2...Bn
mark <mark class>+ C1 C2...Cn;

The glyph or glyph class immediately following the lookup-type keyword is taken as the base glyph, and this must be immediately followed by the anchor clause(s).

The glyph class(es) immediately following the 'mark' keyword is assumed to be the attaching mark class, and must be of a mark class type.

If no glyph or glyph class items are marked as part of the contextual input string, then the attaching mark class will be used as the single item in the input string.

Any glyphs marked as part of the input string must be consecutive, and must include the attaching mark class.

Example:

position T base [a e o u] <anchor 300 500>
mark @TOP_MARKS' @BOTTOM_MARKS;

This contextual statement will match the single-glyph sequence of "@TOP_MARKS" when preceded by the backtrack string "T [a e o u]" and followed by the lookahead string "@BOTTOM_MARKS". It will advance the current context by just one glyph; subsequent rules will be trying to match at @BOTTOM_MARKS.


position T base [a e o u]' <anchor 300 500>
mark @TOP_MARKS' @BOTTOM_MARKS';

This contextual statement matches in the same context as above. The difference is that a sequence of three glyph or glyph classes ("[a e o u] @BOTTOM_MARKS @BOTTOM_MARKS") are marked with a suffix of single-quote to indicate that they are the input sequence. This statement will advance the current context by three glyphs; subsequent rules will be trying to match whatever follows @BOTTOM_MARKS.

wallacemalb's picture

Hi there, I dont know if I am writing in a proper board but I have got a problem with activation, link i receive in email is not working... http://typophile.com/?086ed9d92dbc6242a21d4a9e8b0,

Theunis de Jong's picture

Why are you posting this in a 2 year old thread?

riccard0's picture

And, if you can post, your account is active.

Syndicate content Syndicate content