The ACI file also provides a mechanism to specify default handling for
certain CGM Version 3 elements that may not have a specific default treatment
according to the rules of CGM:1999 or the WebCGM profile.

The ACI file is designed as a set of initialization directives for a
viewer, and thus is intended to be associated with a viewer instance and
processed once per viewer invocation. The normative specification of methods
to associate an ACI file with a viewer is beyond the scope of this version of
WebCGM. Some recommedations are given in this chapter.

The use cases and requirements for the default-setting functionality of
the ACI include several scenarios that the ACI file should satisfy:

In Version 1 or Version 2 CGM files, it is not possible to control
things like LINE CAP, which is a Version 3 CGM element. Viewers have to
select a treatment at random. There is desire to be able to specify
consistent and uniform treatment.

In V3/V4 files, the CGM:1999-specified default for things like LINE CAP
is: 1, "unspecified". CGM:1999 did this so that behavior of viewers would
be backward compatible. I.e., the rendering of an otherwise identical
file would not change purely based on "V1" versus "V3" in the metafile
version. There is desire to be able to specify a consistent and uniform
default.

The CGM line types 1..5 (solid, dash, dot, dash-dot, dash-dot-dot) are
generic in the sense that they only need to be recognizably per the
description (e.g., dash-dot). Similarly for the 6 generic hatch styles.
There is desire to be able to specify consistent and uniform
treatment.

The WebCGM Application Configurable Items (ACI) file is an XML instance
specifying default values for various CGM Version 3 attribute and control
elements, font substitutions to be performed by WebCGM processors . It is
made up of a root element (<webcgmConfig>) followed by an
optional font map (<fontMap>) element and an optional default
attributes (<defaultAttributes>) element.

Methods to associate an ACI file with a viewer — being operating
system, viewer, and application dependent — are considered to be
beyond the scope of the normative specifications of this version of WebCGM.
To improve interoperability between the various providers of WebCGM 2.1
viewers, the following recommendations for associating an ACI file with a
WebCGM 2.1 viewer are included.

It is recommended ACI file have the extension ".aci" (all lowercase) on
all platforms.

To convey to a WebCGM 2.1 viewer the location of an ACI file, an
environment variable name WebCGM_ACI_File is defined. This environment
variable could be set at the time of the viewer installation or modified by a
user. On Windows this should be System environment variable that would apply
to all users.

If it is not feasible for a viewer to set an environment variable during
viewer installation, or if users are prohibited from doing so due to security
policies that are becoming commonplace in large organizations, then the
viewer should provide and document an alternative method for users to specify
the ACI file search path, for example in a viewer preferences or
configuration menu.

Attribute definitions:useFont="CDATA"
The default font to use when the specified font mapping cannot be
accomplished. If the font(s) of mapList
(substitutionList) are not available, and if
defaultFont (useFont) is not available, then the
fontMap element has no effect, and any viewer fallback action is
viewer dependent. The syntax and normalization rules of useFont
are the same as those of the substitutionList attribute, except
that useFont shall have exactly one font-family name or generic
name in its list.

The mapList element specifies, via its cgmFont
and substitutionList attributes, the font mapping to be
performed before rendering of the image. Subject to the value of the
forceSubstitution attribute (see below), if the metafile uses a
font whose name matches cgmFont (after normalization of both
font names as described below), then the viewer shall substitute the first
available font in the priority-ordered list of the
substitutionList attribute.

Attribute definitions:forceSubstitution= { yes | no }
If 'yes', then the subsitution is unconditional — it is attempted
regardless of whether or not the viewer has the font specified by
cgmFont available. If 'no', then the substitution is conditional
— the viewer only attempts the substitution if it does not have the
font specified by cgmFont available.cgmFont="CDATA"
The name of the font in the metafile for which font substitution is
requested. Before attempting to match a font used in the metafile to the
value (string) of cgmFont, both font names are normalized by a
WebCGM-specific normalization: convert to lower-case; and strip out all whitespace, UNDERSCORE, and HYPHEN
characters. Note: These normalization rules
are derived from and intended for the substantial volume of existing
metafiles that aim to invoke fonts from WebCGM's restricted core set of
thirteen specific fonts (see T.16.13 of section 6.5) and that contain
well-known and trivial deviations in the construction of those font names.
The rules may be less useful outside of that intended scope. The target
metafiles of these normalizations are most often, but not always, encoded in
WebCGM's default character encoding of ISO 8859-1. After this WebCGM-specific
normalization, correct and consistent results when comparing metafile font
names to the cgmFont value — for font names outside of
WebCGM's restricted core set of thirteen specific fonts — may require
that WebCGM processors convert to a unicode normalization
form before performing the comparison.substitutionList="CDATA"
A comma-separated, priority-ordered list of comprised of font-family names
(e.g., Arial) and generic names (e.g., san-serif). The processor shall use
the first name in the substitutionList that it has available.
The list syntax and normalization are derived from the specifications of CSS
2.0 [CSS20]. The values and syntax of the substitutionList
attribute, as well as the normalization of that attribute, are derived from
the definition of the font-family
property in CSS 2.0 [CSS20]:

the names in the list may be an actual font-family name, or one of the
five generic families: 'serif', 'sans-serif', 'cursive', 'fantasy', and
'monospace';

if the names contain whitespace characters, they must be quoted;

in the absence of quotes, whitespace is normalized by stripping leading
and trailing whitespace characters and compressing internal whitespace
strings to a single whitespace character.

The defaultAttributes element is the ACI mechanism to specify
default values for certain CGM attribute and control elements whose default
is otherwise under-specified in CGM:1999 and the WebCGM profile. This
element, when processed at initialization time, will set default values for
the applicable metafile elements. If the contents of the metafile, upon
interpretation, explicitly set the applicable metafile element (either via
METAFILE DEFAULTS REPLACEMENT or via the element itself in the body of the
picture), then that explicit intra-metafile setting supersedes the
defaultAttributes setting

Attribute definitions:limitVal="CDATA"
The mitre limit value is defined as a scale factor applied to current line
and edge width. Valid values are non-negative real numbers. (See T.18.15 in section 6.7 for more particulars
about MITRE LIMIT values.)

Attribute definitions:lineIndex="1|2|3|4|5"
The line type index is restricted to value of 1-5 as defined in ISO/IEC
8632:1999.

1 - solid

2 - dash

3 - dot

4 - dash-dot

5 - dash-dot-dot

dashLength="CDATA"
The dashLength attribute is a string that contains a list of
non-negative integers in the format of the WebCGMString List-of-number
subtype. The integers specify the lengths of each dash and gap in the
defined line pattern in abstract units, that are then normalized as a whole
pattern to the repeatLength attribute of
lineEdgeTypeDef. The first integer corresponds to solid, the
second to gap, the third to solid, etc.

repeatLength="CDATA"
The dash cycle repeat length defines the length of one complete repetition of
the dash pattern in NVDC units.