An attribute is basically a key and a value assigned to the key. The collection may represent something like a style run, a logical style, etc. These are generally used to describe features that will contribute to some graphical representation such as a font. The set of possible keys is unbounded and can be anything. Typically View implementations will respond to attribute definitions and render something to represent the attributes.
Attributes can potentially resolve in a hierarchy.
If a key doesn't resolve locally, and a resolving parent exists, the key will be resolved through the parent. CharacterAttribute This interface is the type signature that is expected to be present on any attribute key that contributes to character level presentation. This interface is the type signature that is expected to be present on any attribute key that contributes to presentation of color. This interface is the type signature that is expected to be present on any attribute key that contributes to the determination of what font to use to render some text. This interface is the type signature that is expected to be present on any attribute key that contributes to the paragraph level presentation.