Accessibility

Composite Characters

Composite characters are simply a combination of two or more component character shapes - usually, but not limited to, a base character and one or more diacritical marks that are placed above and/or below the base character.

Floating Accents
Floating accents are the diacritical marks supplied in some fonts that may be used to build composite characters. The actual width used for the floating accent is not important, the key is that they should be constructed that the width of the accent character will be centered (by the application) on the width of the base character. The accent is positioned so that it looks correct (which is usually a compromise) when it is placed (with widths centered) over each of the chosen base characters.

While this is the method that Adobe uses to create composite characters, Adobe is not aware of any applications that use these components to construct composite glyphs. One likely use is that a font creation tool may reference the floating accents for use in building composite characters using the Type 1 operator "seac" (even though its use is deprecated, see below).

When creating the floating accents, it is Adobe's practice to only create them with the accents positioned for lowercase characters. If accents for uppercase glyphs were needed, these would need to be added to the character set.

Zero-Width Accents
Along the same idea as floating accents, these accents have a zero advance width so the user (as opposed to an application) can type a base character and then an accent, which is positioned over the base character. Rather than use a width of zero, it is best to use a width of 1 unit. This value is so small that it will not affect character positioning a perceptible amount, but it will achieve the desired effect.

The Type 1 "seac" operator
For many years, Adobe built accented characters using the Type 1 operator "seac", which stands for "Standard Encoding Accented Character". This was a shorthand method to reference two characters and to build a third, composite character. As the name suggests, this operator is dependent on the component characters being in the Adobe Standard Encoding format, which is a very limiting constraint.

The Preferred Method for Building Composite Characters

Adobe no longer uses the seac operator, and discourages other font developers from using it. The recommended method is to build characters/glyphs using subroutines ("Subrs" in Type 1 language). The subroutines are something that a designer's font creation software should handle for them).

Thus, for example, a font may have the base character and the accent both expressed as subroutines in the font's Private dictionary. Then, for example, the "e" character will consist of a reference to the "e" subroutine, and the "e-acute" character will reference the subroutine to draw the "e" and then draw the acute accent by referencing the acute accent subroutine. In the CFF/Type 2 charstring format, the seac operator is not supported.

Type 1 spec erratum concerning the "seac" operator:
The supplement to the Type 1 specification: Adobe Technical Note #5015, Type 1 Font Format Supplement (PDF: 187 KB) corrects the Type 1 specification book by stating that the adx, ady offset (between the base and the accented characters) is actually the distance between sidebearing points, rather than between origin points.