This module defines some helper functions for generating texts with
embedded attributes. Note that there is no need to use these functions.
In particular, if you set markup in labels that are subject to
internationalization, it can be of advantage to write out the markup
instead of using the functions in this module.

In order to display a string that may contain markup characters, use
escapeMarkup.

When you write markup directly, you can make use of the following
convenience tags:

The constuctor takes the size in points (pt) or a predefined
sizes. Setting the absolute size 12.5pt can be achieved by passing
FontSize (SizePoint 12.5) to markSpan. Next to predefined
absolute sizes such as SizeSmall the size can be changed by
asking for the next larger or smaller front with
SizeLarger and SizeSmaller, respectively.

list of attributes, the accelerator character found and the input string
without markup

Parse the marked-up text (see Markup
format) to create a plain-text string and an attribute list.

The attribute list is a list of lists of attribute. Each list describes
the attributes for the same span.

If accelMarker is not '\0' (a zero character), the given character
will mark the character following it as an accelerator. For example,
accelMarker might be an ampersand or underscore. All characters marked
as an accelerator will receive a UnderlineLow attribute, and the
first character so marked will be returned as accelChar. If no
accelerator character is found, the accelMarker character itself is
returned. Two accelMarker characters following each other produce a
single literal accelMarker character.