92
Adobe ® Experience Cloud Scene7 FXG

Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Adobe® Experience Cloud

Scene7 FXG

Page 2: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Contents

Scene7 FXG 2.0..................................................................................................................6

What's New in Scene7 FXG 2.0.........................................................................................7

FXG Basic Concepts...........................................................................................................8

FXG Rendering..................................................................................................................9The Rasterization Model..................................................................................................................................................9

Types of Graphics Elements...........................................................................................................................................9

Painting Shapes...........................................................................................................................................................................................9

Painting Strokes........................................................................................................................................................................................10

Painting Raster Images...........................................................................................................................................................................10

Clipping, Masking, and Object Opacity............................................................................................................................................10

Basic Data Types.............................................................................................................11Basic Data Type Categories..........................................................................................................................................11

Invalid Identifiers for FXG 2.0......................................................................................................................................13

Document Structure.......................................................................................................15Defining an FXG Document Fragment....................................................................................................................15

Element Types..................................................................................................................................................................15

The Graphic (Root) Element........................................................................................................................................16

The Group Element.........................................................................................................................................................17

Group Instances Versus Definitions..........................................................................................................................18

Symbols, Instances, and the Library Element........................................................................................................19

The Library Element........................................................................................................................................................20

The Definition Element.................................................................................................................................................20

ThePlaceObject Element..............................................................................................................................................20

Scene7 FXGLast updated 10/23/2017

Page 3: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Coordinate Space Transformations..............................................................................22User Coordinate Systems.............................................................................................................................................22

Transformations as Instance Group Properties....................................................................................................22

Transform Element.........................................................................................................................................................23

Matrix Element.................................................................................................................................................................23

Shapes_ Bounds, Fill, and Stroke Calculations.....................................................................................................24

FXG Paths........................................................................................................................26Path Element.....................................................................................................................................................................26

Path Data............................................................................................................................................................................27

moveto.........................................................................................................................................................................................................28

closepath......................................................................................................................................................................................................29

lineto..............................................................................................................................................................................................................29

Curve Commands.....................................................................................................................................................................................30

Basic FXG Shapes............................................................................................................32Rect Element.....................................................................................................................................................................32

Ellipse Element.................................................................................................................................................................34

Line Element.....................................................................................................................................................................35

FXG Text..........................................................................................................................38RichText Element.............................................................................................................................................................38

div Element........................................................................................................................................................................41

Paragraph Element.........................................................................................................................................................42

a Element............................................................................................................................................................................42

Link Format Elements....................................................................................................................................................43

TextLayoutFormat Element.........................................................................................................................................44

tcy Element........................................................................................................................................................................44

img Element......................................................................................................................................................................45

span Element....................................................................................................................................................................45

br Element..........................................................................................................................................................................45

tab Element.......................................................................................................................................................................46

Scene7 FXGLast updated 10/23/2017

Contents

Page 4: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Text Box..............................................................................................................................................................................46

Fidelity.................................................................................................................................................................................47

Text Rendering.................................................................................................................................................................47

Font References...............................................................................................................................................................47

Units of Measurement...................................................................................................................................................47

Text Character Set...........................................................................................................................................................48

Whitespace Handling.....................................................................................................................................................48

Text Formatting...............................................................................................................................................................49

Inheritance Model...........................................................................................................................................................49

Formatting Attributes....................................................................................................................................................49

Character-Level Attributes....................................................................................................................................................................49

Paragraph-Level Attributes...................................................................................................................................................................56

Container-Level Attributes....................................................................................................................................................................60

Bitmaps............................................................................................................................63Specifying a Source File................................................................................................................................................63

BitmapImage Element...................................................................................................................................................64

FXG Fills, Strokes, Visibility, and Blend Modes............................................................66Fills........................................................................................................................................................................................66

Fills, Strokes, and Transforms......................................................................................................................................66

SolidColor Element.........................................................................................................................................................66

LinearGradient Element................................................................................................................................................67

RadialGradient Element................................................................................................................................................69

Bitmap Strokes, Color, Masking, and Transforms.......................................................71Strokes.................................................................................................................................................................................71

General Stroke Properties......................................................................................................................................................................71

SolidColorStroke Element......................................................................................................................................................................72

LinearGradientStroke Element.............................................................................................................................................................73

RadialGradientStroke Element.............................................................................................................................................................74

GradientEntry Element...........................................................................................................................................................................75

Visibility of Graphical Elements..................................................................................................................................77

Scene7 FXGLast updated 10/23/2017

Page 5: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Blend Modes and Opacity......................................................................................................................................................................77

Blend Modes...............................................................................................................................................................................................78

Color Transformations...................................................................................................................................................79

Masking...............................................................................................................................................................................81

Clipping, Alpha, and Luminosity.........................................................................................................................................................81

Specifying a Mask.....................................................................................................................................................................................82

Determining the Type of Mask............................................................................................................................................................82

Reference Points.............................................................................................................83

Naming............................................................................................................................86

Versioning.......................................................................................................................87

Color Management (S7FXG Only)..................................................................................88s7:ColorSettings (S7FXG Only)....................................................................................................................................88

s7:DocumentSetup (S7FXG Only)..............................................................................................................................88

s7:ColorDefinitions (S7FXG Only)..............................................................................................................................89

s7:Color (S7FXG Only)....................................................................................................................................................89

Scene7 Variables (S7FXG Only)..................................................................................................................................90

Server and Plug-In Limitations......................................................................................91Server-side limitations...................................................................................................................................................91

Plug-In Limitations..........................................................................................................................................................91

Scene7 FXGLast updated 10/23/2017

Contents

Page 6: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Scene7 FXG 2.0This document outlines the Scene7 version of the FXG 2.0 specification. Scene7 FXG 2.0 adds private attributes in flm, ATE,and the Scene7 namespace.

Note: Throughout this document, features that are specific to Scene7 FXG are marked S7FXG Only.

Scene7 FXG differs from FXG because it must support web-to-print capabilities. These capabilities include color management,CMYK color spaces, Scene7 embedded URLs, and print settings.

FXG 2.0 describes an XML-based graphics interchange format for the Adobe Flash platform. FXG contains high-level graphicaland text primitives that can be used to create, group, transform and visually modify basic vector and bitmap shapes. Thisspecification delves into the technical details governing every element of FXG 2.0.

For information about the FXG Server protocol, see FXG Server Protocol.

6Scene7 FXG 2.0

Page 7: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

What's New in Scene7 FXG 2.0Following is a description of what is new in Scene7 FXG 2.0.

• Support for TLF text (except for a few attributes)

Scene7 FXG 2.0 supports TLF text. Most of the attributes and elements of the TLF specification are supported.

• Color model that supports CMYK, gray, lab, spot, and globally defined colors

To make handling color spaces other than RGB easier, Scene7 FXG 2.0 supports CMYK, gray, lab, and spot colors, as well asglobally defined process colors.

• Clipping, alpha, and luminosity masking (not with text elements)

Scene7 FXG 2.0 supports three different forms of masking: clipping, alpha, and luminosity.

• New fit modes for BitmapImage

Scene7 FXG 2.0 supports these new fit modes for BitmapImage: clip and repeat.

• Better implementation of gradients, allowing colors at different points to have different color spaces

The mid-point attribute has been added to the GradientEntry element. This attribute allows one-to-one mapping betweenScene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have colorspecified in different color spaces.

• Improved support of text on path and text inside path (using reference ids)

In FXG 1.0, path data was emitted as a private attribute in the TextGraphic element. Consequently, users had to modify pathdata at two places in order to modify the path. Moreover, attributes such as x, y, scaleX, scaleY, rotation, if the user changedthem on the path element, would not automatically affect the text element placement. With the current approach, however,this workflow is much smoother.

• Support for Adobe Illustrator-type point text

There are few basic differences between FXG point text and Illustrator point text. With the addition of the new private attributes7:aiPointText=<true/false>, users can have both workflows. They can treat point text as it is treated in Illustrator.

7What's New in Scene7 FXG 2.0

Page 8: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

FXG Basic ConceptsThis topic defines basic FXG concepts.

DefinitionConcept

FXG provides common, basic shapes with the Path, Rect, and Ellipse elements forgraphical objects. FXG provides fine control over the coordinate system in which graphicalobjects are defined and the transformations that are applied during rendering.

Graphical objects

FXG allows users to define and reuse multiple symbols within a single FXG document.A symbol defines a named grouping element containing graphical elements, grouping

Symbols

elements, and other symbols. After a symbol is defined in an FXG file, it can be referencedby name in the same file.

Symbols can be used at different sizes and orientations. They can be restyled to fit in withthe rest of the graphical composition.

Symbols cannot contain graphical objects directly. Instead, Symbols can contain Graphicgrouping elements, that can, in turn, define individual graphical objects. Symbols canalso contain instances of other symbol definitions.

FXG allows the declarative specification of filters, either singly or in combination, thatcan be applied to any grouping element in the FXG document. These are specified in sucha way that the graphics are still scalable and displayable at different resolutions.

Raster effects

FXG includes text elements that can render a set of shapes based on a Unicode stringcombined with a referenced font. Fonts are referenced by family, weight, and style; theyrely on the rendering environment to provide the matching font definition.

Text and fonts

8FXG Basic Concepts

Page 9: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

FXG RenderingThe FXG rendering model is intended to mirror the rendering model of the Flash Player as of version 10.

Implementations of FXG are expected to behave as though they implement a rendering (or imaging) model corresponding tothe player's model. A real implementation is not required to implement the model in this way, but the result of any implementationshould match the reference rendering of the Flash Player.

FXG is also intended for support on Flash Player 9. Some features of FXG rely on rendering and API enhancements added inFlash Player 10. These features degrade gracefully when compiled for Player 9. In some cases, the rendering is correct but lessoptimized. In some cases, the rendering is a best approximation.

In practice, an actual implementation deviates slightly due to limitations of the environment. (For example, a limited range ofcolors might be supported, or a particular tool or technology might be mapping an FXG document to an existing renderingmodel). Implementation can also deviate slightly due to practical limitations in implementing a precise mathematical model(for realistic performance, for example, curves are approximated by straight lines).

Following is a general description of the portion of the Flash rendering model supported in FXG. While this document is intendedto be complete, where details are unclear, the Flash Player should serve as the reference implementation.

The Rasterization Model

FXG rasterizes all elements on screen at the same time using a single rasterization pass.

This approach is different from a traditional painters model approach in which each element is painted onto the surface insuccession, from back to front. In an FXG processor, a rasterizer sweeps across each scanline, rendering only those elementsthat are visible at each pixel of the output image. Elements (and portions of elements) that are completely obscured by elementswith a higher depth are never considered in the rasterization. Compared to the painters model approach, the use of a singlerasterization pass makes for subtle differences in the way that the edge of a shape is composited with the background, especiallywhen two edges are coincident.

The FXG rasterization model matches Flash Player's closed-open model.

Elements in an FXG document fragment have an implicit depth. A processor assigns depth by walking the document in adepth-first order, assigning each leaf node an incrementing depth as it goes. Each element effectively paints above its previoussiblings in the document. Additionally, children are painted above their parent.

Types of Graphics Elements

FXG supports three fundamental types of graphics elements that can be rendered onto the canvas.

• Shapes represent some combination of straight line and curves.• Text represents some combination of character glyphs.• Raster images represent an array of values that specify the paint color and opacity (often termed alpha) at a series of points

on a rectangular grid.

Raster images are pulled from a Scene7 IS or IR server. Scene7 FXG supports embedded FXGs.

Painting Shapes

Shapes can be filled (paint applied to the interior of the shape) and stroked (paint applied along the outline of the shape).

9FXG Rendering

Page 10: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

A stroke operation is centered on the outline of the object; thus, in effect, half of the stroke paint falls on the interior of the shapeand the other half falls on the outside.

Each fill and stroke operation has its own opacity settings. You can fill or stroke a shape with a semi-transparently drawn solidcolor, with different opacity values for the fill and stroke operations.

Painting Strokes

The stroke of a shape is painted as a separate operation above the fill of the shape but below the next highest element.<Rect width="200" height="200"> <fill> <SolidColor color="#FF0000" /> </fill> <stroke> <SolidColorStroke weight="10" color="#0000FF" alpha="0.5" /> </stroke></Rect>

In general, strokes in FXG are not affected by the transform of the user coordinate space that the shape is defined in. Instead, aprocessor typically first transforms the points of a path into document space, then applies the properties of the stroke to thepath to define the stroke's paint region.

The weight of a stroke is transformed based on the scale factor between document and user coordinates of its parent groupelement. To define the rendered width of a stroke in document space, a processor first extracts the x and y scale factor from thestroke's user space composite matrix (sx,sy) and transforms the weight w, as the following example shows:

weight_in_document_space = sqrt(2 * ( (w*sx)^2 + (w*sy)^2))

FXG supports the following built-in types of paint that can be used in fill operations and stroke operations:

• Solid color• Gradient (linear and radial)

Painting Raster Images

When a raster image is rendered, the original samples are “resampled” using standard algorithms to produce samples at thepositions required on the output device.

Clipping, Masking, and Object Opacity

FXG allows any grouping element to limit the painting of its child elements to a subregion of the output device by masking.

See Masking.

Masking uses a separate grouping element to define a region of the output device to which paint can be applied. Any paintingoperation executed within the scope of the clipping must be rendered such that only those parts of the device that fall withinthe region defined by the masking element are affected by the painting operation. A masking element is treated as a 1-bit maskwhen applied. Pixels left unfilled by the masking element are left unfilled by the masked element, while pixels with anynon-transparent fill value in the masking element are filled as though the masked element had no mask applied.

10FXG Rendering

Page 11: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Basic Data TypesThis section describes basic data types for elements and attributes of FXG 2.0 and also the names FXG 2.0 does not allow asvalid identifiers.

Basic Data Type Categories

This topic describes the basic data type categories for FXG's elements and attributes.

DescriptionData type category

An angle value is an arbitrary <number> specified as degrees. Angles are clockwise.<angle>

A <boolean> is specified as data type that can have one of two values: true orfalse. Typically, these values are used for logical operations.

<boolean>

<color> is assumed to be a specification for a color in the sRGB color space.<color> is a component of the definitions of fills, strokes, and text color.

<color>

A <color> is a numerical RGB specification in hexadecimal notation. It is specifiedby a # immediately followed by six hexadecimal characters, like so: #RRGGBB.

In Scene7 FXG 2.0, it is possible to specify color values in other colorspaces such asCMYK, Gray, Lab, Spot Colors, and RGB by using private attributes in S7 namespace.These attributes are described in Color Management (S7FXG Only).

A <coordinate> represents a <length> in the local coordinate system that is thegiven distance from the origin of the local coordinate system along the relevant axis(the x-axis for x coordinates; the y-axis for y coordinates).

<coordinate>

A text string for the id property that matches the regular expression[A-Za-z][A-Za-z0-9_]. ActionScript keywords as well as FXG element namesare not allowed as valid identifiers.

<identifier>

An <integer> is specified as an optional sign character (+ or -) followed by oneor more digits (0 – 9). If the sign character is not present, the number is non-negative.

<integer>

Unless stated otherwise for a particular attribute or property, the range for an<integer> encompasses (at a minimum) -2147483648 to 2147483647.

A length is a distance measurement. The format of a <length> is a <number>.<length>

A <number> is specified either in decimal notation or scientific notation. Decimalnotation consists of either an <integer> or an optional sign character followed

<number> (real number value)

by zero or more digits followed by a dot (.) followed by one or more digits. Scientificnotation consists of a decimal-number immediately followed by the letter e or Eimmediately followed by an <integer>.

11Basic Data Types

Page 12: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionData type category

Unless stated otherwise for a particular attribute or property, a <number> has thecapacity for at least a single-precision floating point number and has a range (at aminimum) of -3.4e+38F to +3.4e+38F.

The format of a percentage value is a <number> immediately followed by a %.Percentage values are always relative to another value; for example, a length. Each

<percentage>

attribute or property that allows percentages also defines the reference distancemeasurement to which the percentage refers.

To specify colors in color spaces other than RGB, this attribute can be used at allplaces where color can be used. The valid values of this attribute are: CMYK, RGB,Gray, defined (for spot or global named process colors), and Lab.

s7:baseColorSpace

If this attribute is absent, the color attribute of FXG 2.0 specification is used fordefining color in RGB color space.

This attribute specifies color values for each component of the color space establishedusing s7:colorspace. It is a numerical specification in hexadecimal notation. It

s7:baseColorValue

is specified by a # immediately followed by n hexadecimal characters, where n canbe anything that is a multiple of 2. The maximum useful length of characters isdouble the number of colors in the current color space. Remaining characters areignored. If the number of characters specified is less than the double the number ofcolors in the current color space, those missing color components are assumed tobe zero.

If s7:colorspace value is defined, this attribute specifies the name of the definedcolor. This color can be a spot color or a global named process color. Thisinformation is retrieved from s7:ColorDefinitions element.

s7:ColorName (S7FXG Only)

To specify colors in color spaces other than RGB, this attribute can be used at allplaces where color can be used. The valid values of this attribute are: CMYK, RGB,Gray, defined (for spot or global named process colors), and Lab.

s7:ColorSpace (S7FXG Only)

If this attribute is absent, the color attribute of FXG 2.0 specification is used fordefining color in RGB color space.

Note: Lab here means that it uses D50 lab color space.

This attribute specifies color values for each component of the color space establishedusing s7:colorspace. It is a numerical specification in hexadecimal notation. It

s7:ColorValue (S7FXG Only)

is specified by a # immediately followed by n hexadecimal characters, where n canbe anything that is a multiple of 2. The maximum useful length of characters isdouble the number of colors in the current color space. Remaining characters areignored. If the number of characters specified is less than the double the number of

12Basic Data Types

Page 13: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionData type category

colors in the current color space, those missing color components are assumed tobe zero.

This attribute can be used with any tag without affecting the rendering aspect. It isused by the DOM manipulation feature as a key to perform operations on whatevertag that contains it.

s7:elementID (S7FXG Only)

Invalid Identifiers for FXG 2.0

This topic lists the names that FXG 2.0 does not allow as valid identifiers.

IdentifierCategory

as, each, false, final, get, include, internal, is, native, null, set,super, to, use

ActionScript keywords

FXG element and property names • a• Application• BevelFilter• BitmapFill• BitmapImage• BlurFilter• br• CDATASection• ColorMatrixFilter• colorTransform• ColorTransform• content• Definition• DesignLayer• div• DropShadowFilter• Ellipse• fill• filters• GlowFilter• GradientBevelFilter• GradientEntry• GradientGlowFilter• Graphic• Group

13Basic Data Types

Page 14: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

IdentifierCategory

• img• kPrivElement• kUnknownElement• Library• Line• LinearGradient• LinearGradientStroke• linkActiveFormat• linkHoverFormat• linkNormalFormat• mask• matrix• Matrix• p• Path• PlaceObject• Private• RadialGradient• RadialGradientStroke• Rect• RichText• segments• SolidColor• SolidColorStroke• span• State• states• stroke• tab• tcy• TextLayoutFormat• transform• Transform• VariantContent

14Basic Data Types

Page 15: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Document StructureThis section describes the logical structure of FXG documents.

Defining an FXG Document Fragment

An FXG document fragment consists of a single definition and an optional library that is contained within a Graphic element.

An FXG document fragment can be one of the following:

• An empty definition (a single Graphic element)• A very simple FXG document fragment containing a Graphic definition with a single graphics element such as a Rect• A complex, deeply nested collection of container elements and graphics elements

An FXG document fragment can stand by itself as a self-contained file or resource, in which case the FXG document fragmentis an FXG document, or it can be embedded inline as a fragment within a parent XML document.

FXG documents contain references to external bitmaps and references to platform fonts by family name and style name, butare otherwise self-contained.

FXG elements must be scoped within an XML document under the FXG namespace. The FXG 1.0 and 2.0 namespace is \*.

Element Types

The structure of an FXG document can be thought of as object-graph based.

In other words, an FXG document is modeled to represent the scene graph of a runtime rendering of the document. Elementsin an FXG document fall into four categories: control, object definition, object instance, and relationship.

DefinitionElement Type

Control elements define how a section of the document should be processed. For example,a definition element dictates that its content represents a definition of a group rather than

Control Elements

an instance of a group, and should not be rendered in the output. FXG control elementsare:

• Library• Definition

Object definition elements define a fragment of FXG that can be instantiated elsewhere.Certain features of FXG are only supported on definition elements. Others are illegal on

Object definition elements

definition elements. The Graphic tag in an FXG file is considered to be an object definitionelement because it defines the entire document. Any immediate child of a definitionelement is considered to be an object definition.

Object instance elements create an instance of an element whose behavior is definedelsewhere, either within the FXG document, or globally by the FXG format. For elements

Object instance elements

that can appear both as definition elements and as instance elements, there are certainattributes and elements that are only valid on instances (and some that are illegal oninstances). The naming ID attribute can only be placed on object instance elements.

15Document Structure

Page 16: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DefinitionElement Type

Group elements can serve as both object definition and instance at the same time. In thiscase, all attributes and children are legal.

Some elements in FXG exist to define the relationship between two object elements. The<mask> element, for example, defines its child (a group instance) to be the clipping maskfor its parent (a graphical element instance).

Relationship elements

The Graphic (Root) Element

The Graphic element serves as the root for any FXG document. Except as the root element, it cannot appear anywhere else inan FXG document.

The Graphic element root definition has no explicitly defined name; any name associated with the definition by a particularenvironment is derived externally from the surrounding context. The MXML compiler, for example, associates the definitioncontained within an FXG file with the name of the file.

The Graphic element can optionally contain a single child <Library/> element, <mask/> element, or graphical element. Therules governing the ordering of <Library/> and <mask/> elements are as follows:

• <Library> tag is always first, and optional• <mask> tag is always first, and optional• If both <Library> and <mask> are present, <Library> is first and <mask> is second

The Graphic element is functionally equivalent to a Group definition element. It can define children, but cannot be named,or define filters or transforms. See the group element below for more information.

This table lists children and attributes of the Graphic element.

LibraryChildren

Group

<mask>

Any graphical element

scaleGridLeftAttributes

scaleGridRight

scaleGridTop

scaleGridBottom

viewWidth

viewHeight

version

mask

16Document Structure

Page 17: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

flm:isolated <Boolean> (S7FXG Only): Default is false ifthe alpha value is 1.0; otherwise it is true. Used for transparencygroups.

flm:knockout <Boolean> (S7FXG Only): Default is false.Used for transparency groups.

The Group Element

The Group element is a container element for grouping together related graphics elements.

A group of elements, as well as individual objects, can be given a name by using the id attribute. Named groups are needed ininteractive environments for animation and runtime modification.

The following example shows a Graphic element:

<Graphic> <Group id="trainBody"> <Ellipse x="20" y="100" width="40" height="40" id="backWheel" /> <Ellipse x="80" y="100" width="40" height="40" id="frontWheel" /> </Group><Graphic>

A Group element defines a new local coordinate space for its immediate child elements. The new coordinate space is transformedby geometry transformation that is optionally defined on the Group element.

A Group element can contain other Group elements nested within it, to an arbitrary depth.

A Group element can contain zero or more graphical elements as children.

The order of the graphical object and group element children of a Group determine their depth order when rendered.

This table lists children and attributes of the Graphic element.

transformChildren

filters

mask

Group

Any graphical element

rotation <angle>; defaults to 0Attributes

scaleX <number>; defaults to 1

scaleY <number>; defaults to 1

x <number>; defaults to 0

y <number>; defaults to 0

blendMode <string> (add, alpha, darken, difference,erase, hardlight, invert, layer, lighten, multiply,normal, overlay, screen, shader, subtract, colordodge,

17Document Structure

Page 18: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

colorburn, exclusion, softlight, hue, saturation,color, luminosity, auto); defaults to auto

alpha <number>; defaults to 1

id <string, optional>; no default

maskType <string> (clip, alpha); defaults to clip

visible <boolean>; defaults to True

scaleGridLeft <number>; defaults to 1

scaleGridRight <number>; defaults to 1

scaleGridTop <number>; defaults to 1

scaleGridBottom <number>; defaults to 1

flm:isolated <Boolean> (S7FXG Only): Default is falseif the alpha value value is 1.0; otherwise, it is true. Used fortransparency groups.

flm:knockout <Boolean> (S7FXG Only): Default is false.Used for transparency groups.

Group Instances Versus Definitions

The Group tag can appear inside the Graphic tag, inside other Group tags, or inside a Definition tag in the Library sectionof an FXG document.

When a Group is used inside a Definition tag, it is considered a symbol definition. When it is used inside a Graphic or otherGroup, it is considered an instance group. Groups have three optional child elements that are only legal on instance groups, noton symbol definitions.

An Instance Group element can optionally contain exactly one element named transform. If present, this element mustcontain exactly one child element of type Transform.

Note: FXG is modeled after MXML, and MXML is produced by combining rules with a type system that occasionally resultsin situations like the nesting of exactly on Transform child allowed inside a transform element.

An Instance Group element can optionally contain exactly one element named filters. If present, this element must containzero or more child elements matching filter types.

An Instance Group element can optionally contain exactly one element named mask. If present, the children of this elementare the same as the mask element that can appear as the child of Graphic. For more information, see Masking.

An Instance Group element can optionally define an id attribute. An id attribute cannot be defined on a Group definition.For more information, see Naming.

The transform and filters and mask child elements, if present, can appear anywhere in the child order. Their position withinthe parent group does not affect the rendering.

18Document Structure

Page 19: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Symbols, Instances, and the Library Element

An FXG document can define one or more symbols that can be instantiated multiple times at various locations within thedocument.

Symbols are Group elements defined and named within the Library section of the document. For example, to define a filledrectangle for use elsewhere in the document, you first define a Group in the Library and give it a name, as the following exampleshows:

<Library> <Definition name="BlueRect"> <Group> <Rect width="200" height="200"> <fill> <SolidColor color="#0000FF" /> </fill> </Rect> </Group> </Definition></Library>

Defined symbols can be referenced elsewhere in the document by using the Definition name as a tag name. The follow-ingexample places the symbol that was defined in the previous code snippet:

<Graphic> <BlueRect x="25" y="30" /></Graphic>

Symbols can only be used in places where Group tags are legal.

When an FXG renderer encounters an unknown tag, it attempts to resolve it as a defined symbol. An unknown tag can beresolved as a defined symbol if:

• It is a direct child of a Graphic or Group tag• It is within the FXG namespace• The localname of the element matches the value of the name attribute of a definition element in the Library section of the

document

The <Definition /> tag can never be nested at any time, but references to the definition (i.e., the symbol) can be referencedin other definitions. For example, the following nested definition is illegal:

<Library> <Definition name="A"> <Definition name="B"/> </Definition></Library>

While the referencing of one symbol inside another definition is legal, like so:

<Library> <Definition name="A/> <Definition name="B"> <A/> </Definition></Library>

Symbols can only be used in places where Group tags are legal. All of the attributes that are legal on a Group instance elementare legal on a symbol. An FXG renderer applies the values of these attributes to the top-level Group element inside thecorresponding Group definition for this instance.

19Document Structure

Page 20: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

The Library Element

The Library element is a container element for definitions.

The Library element can only be placed as a child of the root of the FXG document. It defines symbols that can be referencedby name anywhere in the document (as appropriate). The Library element must be declared prior to its use. An error shouldbe emitted as soon as an unknown Library element is referenced.

The Library element contains zero or more definition child elements. It’s one child is: Definition.

The Definition Element

The Definition element represents a single definition in the FXG document library.

It must contain exactly one child element, which in FXG 2.0 must be a Group element.

The Definition element creates an enclosed scope for id attribute values defined within its element subtree. Within theDefinition, all id attribute values must be unique. id attribute values defined within the Definition can duplicate id attributevalues defined inside other Definitions or elsewhere in the document. The Definition element must be declared prior toits use. An error should be emitted as soon as an unknown Definition is referenced.

This table lists children and attributes of the Definition element.

GroupChildren

name <Identifier>: The name of the symbol that is used to reference it when declaring aninstance in the file. It is required.

Attributes

ThePlaceObject Element

Any Group defined in a Definition tag in the Library section of an FXG document defines a template object that can be reused(i.e., "instanced") in the FXG document with a PlaceObject element.

The PlaceObject element references another element and indicates that the graphical contents of that element areincluded/drawn at that given point in the document.

A PlaceObject is how a symbol instance is specified in an FXG graphic.

The term PlaceObject is a conceptual term used for the purposes of this specification. It never actually appears inside an FXGdocument. To create an instance of a Group that is defined in the Library, an FXG document contains an element whoselocalname matches the name attribute of the definition being referred to.

Other than the localname of the element, the schema of the instance element must exactly match the schema and use of thePlaceObject tag as described here.

The rendered effect of a PlaceObject element is as if the PlaceObject element itself were replaced by a deep clone of thecontents of the referenced definition.

By default, the instanced content is rendered into a rectangular region at the origin of the PlaceObjects's parent coordinatesystem with a width and height that matches the width and height of the instanced content. This rectangular region can be

20Document Structure

Page 21: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

modified by an optional two-dimensional transformation defined on the PlaceObject tag. The 2D transformation can bespecified as a 2D matrix, as part of a child transform assigned as a child element to the PlaceObject.

A PlaceObject element can optionally contain exactly one element named transform. If present, this element must containexactly one child element of type Transform.

A PlaceObject element can optionally contain exactly one element named filters. If present, this element must contain zeroor more child elements matching filter types.

A PlaceObject element can optionally contain exactly one element named mask. If present, the children of this element arethe same as the mask element that can appear as the child of Graphic. For more information, see Masking.

The transform filters and mask child elements, if present, can appear in any order.

This table lists children and attributes of the PlaceObject element.

transformChildren

filters

mask

id <Identifier>; for more information, see Naming.Attributes

21Document Structure

Page 22: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Coordinate Space TransformationsThis chapter examines coordinate space transformations.

User Coordinate Systems

FXG defines two coordinate system concepts: the document coordinate system and the user coordinate system.

The document coordinate system refers to the coordinate system of the root Graphic tag of the FXG document. By default, itsorigin sits at the top left of the document, and it extends downward along the positive y axis to the right along the positive xaxis. One unit corresponds to 1 point on the paper or screen.

When the FXG document is embedded or referenced (for example, by an MXML application), the surrounding context candefine a different document coordinate system.

The user coordinate system refers to the coordinate system defined on any individual element in the document. The usercoordinate system at the root Graphic element is identical to the document coordinate system.

By default, each grouping instance element and graphic element defines its user coordinate system to be identical to that of itsparent. Any geometry transform defined on the element (through attributes or child transform elements) transforms its parent'suser coordinate system into a new system.

All attributes of elements in FXG are defined in units of the current user coordinate system. So the coordinates of the segmentsof a Path element are relative to its coordinate system. To determine the position of the Path segments in document coordinates,you would multiply its x and y by the geometry transform of the Path and each of its parent elements until you reached theroot graphic element.

Some fills and strokes in FXG have their own user coordinate system. As with Groups, the default coordinate system is alignedwith the coordinate system of their most immediate parent instance. As appropriate, fills and strokes support geometry transformsthat can modify their coordinate space.

Transformations as Instance Group Properties

Transformations are considered instance group properties, and can only be defined on shape elements and Groups or onPlaceObject tags.

Specifically, transformations cannot be defined on Groups whose parent element is a Definition element, or on the topmostGraphic element. For more information about instances and definitions, see Group Instances Versus Definitions.

Transformations can be defined on an element in one of two ways: through discrete transform attributes, or through a childTransformation and Matrix element. It is illegal to specify both a child element matrix transformation and one or moretransform attributes on the same Group instance.

Discrete transforms can be specified with these attributes: x,y, scaleX, scaleY, and rotation. These attributes are combinedto create a 2D transform matrix to define the Group's coordinate space as follows:

• Scale by scaleX, scaleY• Rotate by rotation• Translate by x,y

<Group x="32" rotation="45" scaleX="0.5" scaleY="0.5" > <Rectangle width="200" height="200" /></Group>

22Coordinate Space Transformations

Page 23: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Alternatively, an element can define the coefficients of a 3x3 2D matrix as part of a transform child element:

<Group> <transform> <Transform> <matrix> <Matrix a="0.5" d="0.5" tx="32" /> </matrix> </Transform> </transform> <Rect width="200" height="200" /> </Group>

For more details, see Matrix Element.

Transform Element

The Transform element serves as a grouping element to define the matrix-based transformations that are applied to a groupingelement and all of its descendants.

A Transform element appears as the only child of a <transform> element, which is an optional child element of a shape orinstance grouping element.

The Transform can optionally contain exactly one child element named colorTransform. If present, this element mustcontain exactly one child element of type ColorTransform. For information about the colorTransform element, see ColorTransformations.

The Transform can optionally contain exactly one child element named matrix. If present, this element must contain exactlyone child element of type Matrix.

The order of the colorTransform and matrix child elements is irrelevant.

Transformable elements can define their coordinate space transformation using either the discrete transform attributes, or usinga matrix/Matrix element inside a child transform/Transform element, but not both. If the grouping element specifies oneor more transform attributes, it is legal for it to contain a transform/Transform element, but not legal for that Transformelement to contain a matrix/Matrix element.

This table lists children and attributes of the Transform element.

MatrixChildren

colorTransform

NoneAttributes

Matrix Element

The Matrix element represents a 3x3 2D affine transform matrix.

It can appear as a child of a matrix element inside a Transform element.

The Matrix element assumes the bottom-left and bottom-center coefficients in the matrix are zero (using column vectors).The other coefficients can be specified as attributes.

23Coordinate Space Transformations

Page 24: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

The following example shows how the attributes map to coefficients:

a b txc d ty0 0 1

This table lists children and attributes of the Matrix element.

NoneChildren

a <number>: The top-left coefficient of the matrix.Attributes

b <number>: The top-center coefficient of the matrix.

c <number>: The center-left coefficient of the matrix.

d <number>: The center-center coefficient of the matrix.

tx <number>: The top-right coefficient of the matrix.

ty <number>: The center-right coefficient of the matrix.

Shapes_ Bounds, Fill, and Stroke Calculations

Every element has natural bounds, defined in its own coordinate space.

For all shapes, the natural bounds are [unstroked path minX, unstroked path minY], [unstroked path maxX,unstroked path maxY].

• For a rect, this means the natural bounds are [0,0], [width,height]• For an ellipse, this means the natural bounds are [0,0], [width,height]

Note: x,y, like all transformation properties, do not affect the natural bounds of the element.

Every element has natural stroke bounds, defined in its own coordinate space. For all shapes, the natural stroke bounds are[stroked path minX, stroked path minY], [stroked path maxX, stroked path maxY]

• For a rect, this means the natural stroke bounds are [0-strokeWeight/2,0-strokeWeight/2],[width+stroke-Weight/2,height+strokeWeight/2]

• For an ellipse, this means the natural stroke bounds are [0-strokeWeight/2,0-strokeWeight/2],[width+stroke-Weight/2,height+strokeWeight/2]

Note: x,y, like all transformation properties, do not affect the natural stroke bounds of the element.

Every element has a transform matrix associated with it. This can be defined via an explicit matrix or via the discreet transformproperties, or it can be left as the default.

• For all elements, the default transform is [1,0,0,1,0,0]• Every fill type has a fill rect, defined in the fill's own coordinate space as:

• For a linear gradient, the default fill rect is [0,0], [1,1]• For a radial gradient, the default fill rect is [.5], [.5,.5]• For a solid fill, the fill rect is infinite.

24Coordinate Space Transformations

Page 25: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

• For a bitmap fill, the default fill rect is [0,0], [source bitmap width, source bitmap height].

Every stroke type has a stroke rect.

• These mirror the fill rects of the corresponding fill type.

Every fill type has a transform matrix associated with it. This can be defined via an explicit matrix, or via the discreet transformproperties. Or it can be left as the default.

• For a linear gradient, the default transform matrix is [element natural bounds width, 0, 0, element naturalbounds height, element natural bounds left, element natural bounds top]

• For a radial gradient, the default transform matrix is [element natural bounds width, 0, 0, element naturalbounds height, element natural bounds horizontal center, element natural bounds vertical

center]

• For a solid fill, the transform matrix is irrelevant, but defaults to the identity.• If a fill type defines discreet transform properties, they replace only that component of the default transform matrix.

If only the scaleX is defined, only the scaleX portion of the default transform matrix is replaced. If the x is defined, the txportion of the default transform matrix is replaced.

• If a fill type defines an explicit matrix, the explicit matrix replaces the entire default transform matrix.

Every stroke type has a transform matrix associated with it. These mirror the behavior of the fill type transforms, except thatwhen determining the default, the filled element's natural stroke bounds are used instead.

Every fill and stroke type has a policy for how to render pixels that fall outside the fill bounds. Based on the position in the fill'sown coordinate space for a point that lies outside the fill bounds:

• SolidColor: N/A• LinearGradient: The gradient tiles vertically, and extends horizontally.• RadialGradient: The gradient extends both vertically and horizontally (takes on the ending value of the gradient).

The fill and stroke are defined in their own coordinate space, which is a child of the element's coordinate space. To render a fillor stroke in document space, concatenate the transform matrix of every ancestor of the element with the element's own transformmatrix with the fill or stroke's own transform matrix.

25Coordinate Space Transformations

Page 26: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

FXG PathsPaths represent the outline of a shape that can be filled and/or stroked.

A path is described using the concept of a current point. In an analogy with drawing on paper, the current point can be thoughtof as the location of the pen. The position of the pen can be changed, and the outline of a shape (open or closed) can be tracedby dragging the pen in either straight lines or curves.

Paths represent the geometry of the outline of an object, defined in terms of the following elements:

• moveto: Set a new current point• lineto: Draw a straight line• curveto: Draw a curve using a cubic or quadratic Bézier• arcto and closepath: Close the current shape by drawing a line to the last moveto element

Compound paths (that is, a path with multiple sub-paths) are possible to allow effects such as "donut holes" in objects.

Path Element

A path is defined in FXG using the Path element.

As with all vector shape elements in FXG, the Path element can optionally define fill and stroke types using child elements. APath element can specify its winding, or fill rule for intersecting or overlapping paths, to be either evenOdd or nonZero. Theactual Path itself can be defined in compact form, using the data attribute and setting that to a series of coordinate points.

A Path element can optionally contain exactly one element named fill. If present, this element must contain exactly one fill typechild element.

A Path element can optionally contain exactly one element named stroke. If present, this element must contain exactly onestroke type child element.

If no fill or stroke is defined on the Path, the Path is still preserved upon output but is invisible.

Path elements are transformable elements. They support all of the transform attributes and children (see Coordinate SpaceTransformations), as well as the color transform attributes and children (see Color Transformations).

Path elements support blendModes and masks (<<<see “Masking” on page 59>>>).

A Path element can optionally contain exactly one element named transform. If present, this element must contain exactly oneTransform element.

A Path element can optionally contain exactly one element named filters. If present, this element must contain one or morefilter type elements.

A Path element can optionally contain exactly one element named mask. If present, this element must contain a mask description(see Masking).

This table lists children and attributes of the Path element.

fillChildren

stroke

transform

mask

26FXG Paths

Page 27: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

data <path data>: The definition of the outline of a shape. See Path Data.Attributes

x <number>: Defaults to 0.

y <number>: Defaults to 0.

rotation <angle>: Defaults to 0.

scaleX <number>: Defaults to 1.

scaleY <number>: Defaults to 1.

blendMode <string> (add, alpha, darken, difference, erase, hardlight, invert,layer, lighten, multiply, normal, overlay, screen, shader, subtract, colordodge,colorburn, exclusion, softlight, hue, saturation, color, luminosity, auto):Defaults to auto.

visible <boolean>: Defaults to true.

alpha <number>: Defaults to 1.

winding <string> (evenOdd, nonZero): Fill rule for intersecting or overlapping pathsegments. Defaults to evenOdd.

s7:textPathID <number> (S7FXG Only): In case the path element is used as base fortext on path or text in path this attribute contains a unique ID. The same ID is present inthe RichText element as s7:onPathRef or s7:inPathRef attribute. This links the twoelements, Path and RichText.

s7:fillOverprint <boolean> (S7FXG Only): Defaults to false. Specifies the overprintfor fill.

s7:fillOverprintMode <boolean> (S7FXG Only): Defaults to true. Specifies theoverprintMode for fill.

s7:strokeOverprint <boolean> (S7FXG Only): Defaults to false. Specifies theoverprint for stroke.

s7:strokeOverprintMode <Boolean> (S7FXG Only): Defaults to true. Specifies theoverprintMode for stroke.

s7:referencePoint <string> (northWest, north, northEast, west, center, east,southWest, south, southEast, none, inherit) (S7FXG Only): Defaults to none. Specifiesthe reference position on the bounding box of the object. This position is referred to whenapplying different transformations such as rotation and scaling to the object.

Path Data

A Path is defined by including a Path element that contains a data=(path data) attribute, where the data attribute containsthe moveto, line, curve (both cubic and quadratic Béziers), arc, and closepath instructions.

The example below specifies a Path in the shape of a triangle. (The M indicates a moveto command; the L indicates linetocommands; and the z indicates a closepath command).<Path data="M 100 100 L 300 100 L 200 300 z"> <fill>

27FXG Paths

Page 28: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

<SolidColor color="#FF0000" /> </fill> <stroke> <SolidColorStroke weight="3" color="#0000FF" /> </stroke></Path>

Path data can contain newline characters and thus can be broken up into multiple lines to improve readability. Because of linelength limitations with certain related tools, it is recommended that FXG generators split long Path data strings across multiplelines, with each line not exceeding 255 characters. Note that newline characters are only allowed at certain places within Pathdata.

The syntax of Path data is borrowed from the SVG specification, and was designed originally to be concise. Compact Path dataminimizes file sizes and prevents the Path data from overwhelming human readers trying to understand overall file structure.FXG only supports the short, concise syntax.

The Path data syntax is a prefix notation (i.e., commands followed by parameters). The only allowable decimal point is a UnicodeUNICODE FULL STOP (".") character (also referred to in Unicode as PERIOD, dot and decimal point); no other delimitercharacters are allowed. (For example, the following is an invalid numeric value in a path data stream: 13,000.56. Instead, use thefollowing: 13000.56.) All of the path operator parameters are numbers.

Superfluous white space and separators such as commas can be eliminated (e.g., M 100 100 L 200 200, which contains unnecessaryspaces and could be expressed more compactly as M100 100L200 200).

For the relative versions of the commands, all coordinate values are relative to the current point at the start of the command.

In the sections that follow, this notation is used:

• (): grouping of parameters• +: 1 or more of the given parameter(s) is required

moveto

The moveto command (M or m) establishes a new current point.

The effect is as if a pen were lifted and moved to a new location. A Path data segment (if there is one) must begin with a movetocommand. Subsequent moveto commands (for example, when the moveto is not the first command) represent the start of anew sub-path and are optional.

When a moveto is used in the middle of the data for an FXG Path, the previous sub-path is implicitly closed. An implicitlyclosed path is filled as though there were a final lineTo segment from the final point of the path to the starting point. Thisimplicit line segment is not stroked.

DescriptionParametersCommand

Start a new sub-path at the given (x,y) coordinate. M (uppercase)indicates that absolute coordinates follow; m (lowercase) indicates

(x y)+M (absolute)

m (relative)that relative coordinates follow. If a relative moveto (m) appears asthe first element of the Path, it is treated as a pair of absolutecoordinates. If a moveto is followed by multiple pairs of coordinates,the subsequent pairs are treated as implicit lineto commands.

28FXG Paths

Page 29: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

closepath

The closepath command (Z or z) ends the current sub-path and causes an automatic straight line to be drawn from the currentpoint to the initial point of the current sub-path.

The pen position after processing a closepath command is the initial point of the newly closed sub-path. Subsequent commandsare evaluated relative to that pen point.

A closepath command is functionally equivalent to a lineTo command that ends in the same point that began the currentsub-path. Specifically, when a sub-path ends on the same point it began on, the Path is considered closed, and an appropriatejoin is rendered between the starting and ending segment.

A moveTo command implicitly begins a new sub-path. If a moveTo command appears in a Path's data without immediatelyfollowing a closepath command, the previous sub-path is implicitly closed with an unstroked straight line segment from theending point to the starting point of the sub-path.

If the final element in a sub-path's data is not a closepath command, it is implicitly closed.

DescriptionParametersCommand

Close the current sub-path by drawing astraight line from the current point tocurrent sub-path's initial point.

(none)Z or z

lineto

The lineto commands draw straight lines from the current point to a new point.

DescriptionParametersCommand

Draw a line from the current point to thegiven (x,y) coordinate that becomes the

(x y)+L (absolute) l (relative)

new current point. L (uppercase) indicatesthat absolute coordinates will follow. l(lowercase) indicates that relativecoordinates will follow. Any number ofcoordinate pairs can be specified to drawa polyline. At the end of the command,the new current point is set to the finalset of coordinates provided.

Draw a horizontal line from the currentpoint (cpx, cpy) to (x, cpy). H

x+H (absolute) h (relative)

(uppercase) indicates that absolutecoordinates will follow. h (lowercase)indicates that relative coordinates willfollow. Multiple x values can be provided(although usually this doesn't make

29FXG Paths

Page 30: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionParametersCommand

sense). At the end of the command, thenew current point becomes (x, cpy) forthe final value of x.

Draw a vertical line from the currentpoint (cpx, cpy) to (cpx, y). V

y+V (absolute) v (relative)

(uppercase) indicates that absolutecoor-dinates will follow. v (lowercase)indicates that relative coordinates willfollow. Multiple y values can be provided(although usually this doesn't makesense). At the end of the command, thenew current point becomes (cpx, y) forthe final value of y.

Curve Commands

The following groups of commands draw curves.

• Cubic Bézier commands (C, c, S and s). A cubic Bézier segment is defined by a start point, an end point, and two controlpoints.

• Quadratic Bézier commands (Q, q, T and t). A quadratic Bézier segment is defined by a start point, an end point, and onecontrol point.

The cubic Bézier commands are as follows:

DescriptionParametersCommand

Draws a cubic Bézier curve from the current point to (x,y) using (x1,y1) asthe control point at the beginning of the curve and (x2,y2) as the control point

(x1 y1 x2 y2 x

y)+

C (absolute)

c (relative)at the end of the curve. C (uppercase) indicates that absolute coordinates willfollow. c (lowercase) indicates that relative coordinates will follow. Multiplesets of coordinates can be specified to draw a polyBézier. At the end of thecommand, the new current point becomes the final (x,y) coordinate pair usedin the polyBézier.

Draws a cubic Bézier curve from the current point to (x,y). The first controlpoint is assumed to be the reflection of the second control point on the

(x2 y2 x y)+S (absolute)

s (relative)previous command relative to the current point. (If there is no previouscommand or if the previous command was not an C, c, S or s, assume thefirst control point is coincident with the current point.) (x2,y2) is the secondcontrol point (i.e., the control point at the end of the curve). S (uppercase)indicates that absolute coordinates will follow. s (lowercase) indicates that

30FXG Paths

Page 31: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionParametersCommand

relative coordinates will follow. Multiple sets of coordinates can be specifiedto draw a polyBézier. At the end of the command, the new current pointbecomes the final (x,y) coordinate pair used in the polyBézier.

The quadratic Bézier commands are as follows:

DescriptionParametersCommand

Draws a quadratic Bézier curve from the current point to (x,y) using (x1,y1)as the control point. Q (uppercase) indicates that absolute coordinates will

(x1 y1 x y)+Q (absolute)

q (relative)follow. q (lowercase) indicates that relative coordinates will follow. Multiplesets of coordinates can be specified to draw a polyBézier. At the end of thecommand, the new current point becomes the final (x,y) coordinate pair usedin the polyBézier.

Draws a quadratic Bézier curve from the current point to (x,y). The controlpoint is assumed to be the reflection of the control point on the previous

(x y)+T (absolute)

t (relative)command relative to the current point. (If there is no previous command orif the previous command was not a Q, q, T or t, assume the control point iscoincident with the current point.) T (uppercase) indicates that absolutecoordinates will follow. t (lowercase) indicates that relative coordinates willfollow. At the end of the command, the new current point becomes the final(x,y) coordinate pair used in the polyBézier.

31FXG Paths

Page 32: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Basic FXG ShapesThis section describes the basic shape elements contained in FXG.

• Rectangles (including optional rounded corners)• Ellipses• Lines

Mathematically, these shape elements are equivalent to a Path element that would construct the same shape (with the smallexception that they require elliptical arc segments, which Paths don't support). The basic shapes can be stroked and filled.

Like Paths, Shapes are transformable elements. They support all of the transform attributes and child elements. For moreinformation, see Coordinate Space Transformations. They also support color transforms and associated properties/attributes.For more information, see Color Transformations.

Rect Element

The Rect element defines a rectangle that is axis-aligned with the current coordinate system.

This table lists children and attributes of the Rect element.

transformChildren

filters

fill

stroke

mask

width <length>: The width of the rectangle. A negative value is an error. Defaults to 0.Attributes

height <length>: The height of the rectangle. A negative value is an error. Defaults to 0.

radiusX <length>: For rounded rectangles, a convenience property that sets the x-axis radius ofthe ellipse used to round off all four corners of the rectangle. A negative value is an error. See the notesbelow about what happens if the attribute is not specified. Defaults to 0.

radiusY <length>: For rounded rectangles, a convenience property that sets the y-axis radius ofthe ellipse used to round off all four corners of the rectangle. A negative value is an error. See the notesbelow about what happens if the attribute is not specified. Defaults to 0.

topLeftRadiusX <length>: For rounded rectangles, set the x-axis radius of the top-left corner. Anegative value is an error. See the notes below about what happens if the attribute is not specified.Defaults to undefined (NaN).

topLeftRadiusY <length>: For rounded rectangles, set the y-axis radius of the top-left corner. Anegative value is an error. See the notes below about what happens if the attribute is not specified.Defaults to undefined (NaN).

topRightRadiusX <length>: For rounded rectangles, set the x-axis radius of the top-right corner.A negative value is an error. See the notes below about what happens if the attribute is not specified.Defaults to undefined (NaN).

32Basic FXG Shapes

Page 33: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

topRightRadiusY <length>: For rounded rectangles, set the y-axis radius of the top-right corner.A negative value is an error. See the notes below about what happens if the attribute is not specified.Defaults to undefined (NaN).

bottomLeftRadiusX <length>: For rounded rectangles, set the x-axis radius of the bottom-leftcorner. A negative value is an error. See the notes below about what happens if the attribute is notspecified. Defaults to undefined (NaN).

bottomLeftRadiusY <length>: For rounded rectangles, set the y-axis radius of the bottom-leftcorner. A negative value is an error. See the notes below about what happens if the attribute is notspecified. Defaults to undefined (NaN).

bottomRightRadiusX <length>: For rounded rectangles, set the x-axis radius of the bottom-rightcorner. A negative value is an error. See the notes below about what happens if the attribute is notspecified. Defaults to undefined (NaN).

bottomRightRadiusY <length>: For rounded rectangles, set the y-axis radius of the bottom-rightcorner. A negative value is an error. See the notes below about what happens if the attribute is notspecified. Defaults to undefined (NaN).

x <number>: Defaults to 0.

y <number>: Defaults to 0.

rotation <angle>: Defaults to 0.

scaleX <number>: Defaults to 1.

scaleY <number>: Defaults to 1.

blendMode <string> (add, alpha, darken, difference, erase, hardlight, invert, layer,lighten, multiply, normal, overlay, screen, shader, subtract, colordodge, colorburn,exclusion, softlight, hue, saturation, color, luminosity, auto): Defaults to auto.

visible <boolean>: Defaults to true.

alpha <number>: Defaults to 1.

s7:fillOverprint <boolean> (S7FXG Only): Defaults to false. Specifies the overprint for fill.

s7:fillOverprintMode <boolean> (S7FXG Only): Defaults to true. Specifies the overprintModefor fill.

s7:strokeOverprint <boolean> (S7FXG Only): Defaults to false. Specifies the overprint forstroke.

s7:strokeOverprintMode <boolean> (S7FXG Only): Defaults to true. Specifies the overprintModefor stroke.

s7:referencePoint <string> (northWest, north, northEast, west, center, east,southWest, south, southEast, none, inherit) (S7FXG Only): Defaults to none. Specifies thereference position on the bounding box of the object. This position is referred to when applyingdifferent transformations such as rotation and scaling to the object.

The rules governing the behavior of the explicit corner properties and the shortcut properties are as follows:

33Basic FXG Shapes

Page 34: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

A fallback mechanism is in place for all 10 properties. If a corner's radiusX value but not its radiusY value is specified, theFXG processor will set the corner's radiusY value as equal to the radiusX value. For example, given a Rect element with thefollowing markup, all corners will have an x-value and y-value of 20.

<Rect radiusX="20" />

Similarly, if a corner's explicit radiusX property is set but not its explicit radiusY counterpart, the FXG processor will set thecorner's radiusY value as equal to the corner's radiusX value. For example, given the following Rect element, all of the cornerswill be uniformly rounded with x and y values of 20.

<Rect topLeftRadiusX="20" topRightRadiusX="20" bottomLeftRadiusX="20" bottomRightRadiusX="20"

/>

Explicit properties (topLeftRadiusX/Y, topRightRadiusX/Y, bottomLeftRadiusX/Y, bottomRightRadiusX/Y)always "win out" over shortcut properties. For example, given a Rect element with the following markup, the topLeftRadiuswill have an x-value of 20, while the remaining corners will have x-values of 30.

<Rect topLeftRadiusX="20" radiusX="30" />

Even with the fallback mechanism in place, explicit properties always win out. For example, given a Rect element with thefollowing markup, because topLeftRadiusX has been set but topLeftRadiusY has not been set, topLeftRadiusY will fallbackto equal topLeftRadiusX. Thus, topLeftRadiusY will have a value of 20, while the remaining corners will have a y-valueof 10.

<Rect topLeftRadiusX="20" radiusY="10" />

If a corner's radiusX value is not specified or is specified as zero, the FXG processor will evaluate the Rect as if no roundingwas specified for the corner (resulting in a square corner).

If any corner's radiusX value is greater than half the width of the rectangle, the FXG processor treats the Rect element withthe effective value for that corner's radiusX as half the width of the rectangle. Similarly, if a corner's radiusY is greater thanhalf the height of the rectangle, the FXG processor treats the Rect element with the effective value for that corner's radiusY ashalf the height of the rectangle.

It will be up to the FXG processors to ensure the values for all eight explicit properties or either of the two shortcut propertiesare written out properly such that the user's drawing of a rounded Rectangle in the tool of their choice is rendered correctly. Inall cases, scaling should be preserved.

Ellipse Element

The Ellipse element defines an ellipse that is axis-aligned with the current user coordinate system based on a boundingrectangle.

The bounding rectangle defines the bounds of the actual Ellipse path. Any stroke applied to the Ellipse can extend beyond thebounding rectangle, according to the painting rules of the stroke.

This table lists children and attributes of the Ellipse element.

transformChildren

filters

fill

stroke

34Basic FXG Shapes

Page 35: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

mask

width <length>: The x-axis length of the ellipse path bounding rectangle. Defaults to 0.Attributes

height <length>: The y-axis length of the ellipse path bounding rectangle. Defaults to 0.

x <number>: Defaults to 0.

y <number>: Defaults to 0.

rotation <angle>: Defaults to 0.

scaleX <number>: Defaults to 1.

scaleY <number>: Defaults to 1.

blendMode <string> (add, alpha, darken, difference, erase, hardlight, invert, layer,lighten, multiply, normal, overlay, screen, shader, subtract, colordodge, colorburn,exclusion, softlight, hue, saturation, color, luminosity, auto): Defaults to auto.

visible <boolean>: Defaults to true.

alpha <number>: Defaults to 1.

s7:fillOverprint <boolean> (S7FXG Only): Defaults to false. Specifies the overprint forfill.

s7:fillOverprintMode <boolean> (S7FXG Only): Defaults to true. Specifies theoverprintMode for fill.

s7:strokeOverprint <boolean> (S7FXG Only): Defaults to false. Specifies the overprintfor stroke.

s7:strokeOverprintMode <boolean> (S7FXG Only): Defaults to true. Specifies theoverprintMode for stroke.

s7:referencePoint <string> (northWest, north, northEast, west, center, east,southWest, south, southEast, none, inherit) (S7FXG Only): Defaults to none. Specifies thereference position on the bounding box of the object. This position is referred to when applyingdifferent transformations such as rotation and scaling to the object.

The arc of an Ellipse element begins at the "3 o'clock" point on the radius and progresses towards the "9 o'clock" point. Thestarting point and direction of the arc are affected by the user space transform in the same manner as the geometry of the element.

Line Element

The Line element defines a line that is axis-aligned with the current coordinate system.

This table lists children and attributes of the Line element.

transformChildren

filters

fill

35Basic FXG Shapes

Page 36: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

stroke

mask

xFrom <number>: The x-axis starting point of the line.Defaults to 0.

Attributes

yFrom <number>: The y-axis starting point of the line.Defaults to 0.

xTo <number>: The x-axis ending point of the line. Defaultsto 0.

yTo <number>: The y-axis ending point of the line. Defaultsto 0.

x <number>: Defaults to 0.

y <number>: Defaults to 0.

rotation <angle> (<angle>): Defaults to 0.

scaleX <number>: Defaults to 1.

scaleY <number>: Defaults to 1.

blendMode <string> (add, alpha, darken, difference,erase, hardlight, invert, layer, lighten, multiply,normal, overlay, screen, shader, subtract, colordodge,colorburn, exclusion, softlight, hue, saturation,color, luminosity, auto): Defaults to auto.

alpha <number>: Defaults to 1.

id

maskType: Defaults to clip.

visible <Boolean>: Defaults to true.

s7:fillOverprint <Boolean> (S7FXG Only): Defaults tofalse. Specifies the overprint for fill.

s7:fillOverprintMode <Boolean> (S7FXG Only):Defaults to true. Specifies the overprintMode for fill.

s7:strokeOverprint <Boolean> (S7FXG Only): Defaultsto false. Specifies the overprint for stroke.

s7:strokeOverprintMode <Boolean> (S7FXG Only):Defaults to true. Specifies the overprintMode for stroke.

s7:referencePoint <string> (northWest, north,northEast, west, center, east, southWest, south,southEast, none, inherit) (S7FXG Only): Defaults to none.Specifies the reference position on the bounding box of the

36Basic FXG Shapes

Page 37: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

object. This position is referred to when applying differenttransformations such as rotation and scaling to the object.

37Basic FXG Shapes

Page 38: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

FXG TextThis section defines a simple, conservative text representation based on a subset of the new capabilities of Flash Player 10'sadvanced text support.

RichText Element

Text in FXG is defined with the RichText element.

A RichText element can have <transform>, <content>, <filters>, and <mask> as children. <transform> (for detailedinformation, see RichText Element). <content> is the content of the RichText element. In the simplest case, a RichTextlooks like the following:

<RichText fontFamily="Verdana" fontWeight="bold"><content>Hello, World</content></RichText>

When a transform is applied, it looks like the following:

<RichText fontFamily="Verdana" fontWeight="bold"> <transform>...</transform> <content>Hello, World</content></RichText>

The text content in a RichText tag needs to be contiguous and contained in a <content> property. The following is legal:

<RichText fontFamily="Verdana" fontWeight="bold"> <content>Hello, World</content> <transform>...</transform></RichText>

The following is not legal:

<RichText fontFamily="Verdana" fontWeight="bold"> <content>Hello, World</content> <transform>...</transform> <content>Hello again</content></RichText>

The ordering of child tags of a RichText element is not significant, so the transform tag can also appear before the content tag,as in this example:

<RichText fontFamily="Verdana" fontWeight="bold"> <transform>...</transform> <content>Hello, World</content></RichText>

The contents of a content property can be:

• <div>• <p>• <tcy>• <a>• <img>• <span>• <br>• <tab>• <linkNormalFormat>• <linkHoverFormat>

38FXG Text

Page 39: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

• <linkActiveFormat>• Raw text

Any tag that may contain a <p> tag may also contain any of the descendants of the <p> tag (<span>, <br>, <tab>, <img>, <a>,etc.), through implication.

In this specification, the phrase "implied tags" means that, in addition to the explicit legal contents stated in the specificationclause, all of the implied are also legal. Rules for reconstituting implied elements are listed below.

The preceding examples are simple, single-format text with implied <p> and <span> elements. The following example is identicalto the previous example:

<RichText fontFamily="Verdana" fontWeight="bold"> <transform>...</transform> <content><p><span>Hello, World</span></p></content></RichText>

The following example has multiple text formats, with one implied span and one explicit span:

<RichText fontFamily="Verdana" fontWeight="bold"> <content>Hello, <span fontWeight="normal">World</span></content></RichText>

The equivalent verbose example is as follows:

<RichText fontFamily="Verdana" fontWeight="bold"> <content> <p><span>Hello, </span><span fontWeight="normal">World</span></p> </content></RichText>

The following example shows multiple paragraphs:

<RichText fontFamily="Verdana"> <content>First paragraph <p textIndent="15">Second para</p> Third Para</content></RichText>

The equivalent verbose version of the same example is as follows:

<RichText fontFamily="Verdana"> <content> <p><span>First paragraph </span></p> <p textIndent="15"><span>Second para</span></p> <p><span> Third Para</span></p> </content></RichText>

A <p> always starts a new paragraph.

Any text content (including spans) that comes before the <p> and is not part of <p> is placed in a paragraph automatically.Likewise, any text that follows the </p> is placed in a paragraph. However, if the text content before <p>...</p> or after<p>...</p> is all whitespace in a single span, it is not placed in a paragraph automatically. It is removed. In XML DOMterminology, any text node that is a direct child of the <content> property is removed if it is all whitespace.

If the <content> element has text content and no paragraph, a paragraph is automatically generated for the text.

A RichText element can also be empty. A RichText element can have an empty <content/> property as well. The value ofthe <content> property is one <p> tag with one empty <span/> tag in it.

By default, the parts of a RichText are transparent where text does not get inked.

39FXG Text

Page 40: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

You can apply the following attributes RichText (the following attributes are the same as for all graphic element types andGroup):

DescriptionAttribute

Defaults to 0.rotation <angle>

Defaults to 1.scaleX <number>

Defaults to 1.scaleY <number>

The horizontal placement of the left edge of the text box, relative to the parentgrouping element. Defaults to 0.

x <number>

The vertical placement of the top edge of the text box, relative to the parent groupingelement. Defaults to 0.

y <number>

Defaults to auto.blendMode <string> (normal, add,alpha, darken, difference, erase,hardlight, invert, layer, lighten,multiply, normal, subtract, screen,overlay, colordodge, colorburn,exclusion, softlight, hue,saturation, color, luminosity, auto)

Defaults to 1.alpha <number> (AS Alpha)

Optional, no default ("" empty string).id <string> ( AS Identifier)

Defaults to clip.maskType <string> (clip, alpha)

Whether or not the text box is visible. Defaults to true.visible <boolean>

Width of the RichText element. If no width is specified, one is calculated by theclient based on the content (see Text Box for a full discussion). Defaults to 0.

width <number>

Note: The Flash Player limits the width of a line to 10000 pixels. Seeflash.text.engine.TextLine.MAX_LINE_WIDTH.

Height of the RichText element. If no height is specified, one is calculated by theclient based on the content. (See Text Box for a full discussion). Defaults to 0.

height <number>

When warping text, you can set the following attributes. Each attribute contains a particular set of values.

40FXG Text

Page 41: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DefaultValuesAttribute

noneStyle s7:warpStyle • none• arc• arcLower• arcUpper• arch• bulge• shellLower• shellUpper• flag• wave• fish• rise• fishEye• inflate• squeeze• twist

horizontalDirection s7:warpDirection • horizontal• vertical

0.5-1 to 1Bend s7:warpBend

0-1 to 1Horizontal Distortions7:warpHorizontalDistortion

0-1 to 1Verticle Distortions7:warpVerticalDistortion

Note: For inflate and fishEye, changing the s7:warpDirection flag between horizontal and vertical does not haveany effect on the output.

For more information about creating and using warped text, see the Adobe Illustrator documentation.

See also Using warped text.

div Element

The <div> tag is similar in function to the <div> tag in HTML.

The main purpose of a <div> element is to group together text for applying attributes.

Allowed children:

• <div>

41FXG Text

Page 42: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

• <p>• <tcy>• <a>• <img>• <span>• <br>• <tab>• <linkNormalFormat>• <linkHoverFormat>• <linkActiveFormat>• Raw text

Paragraph Element

The <p> element is for use in RichText elements that have multiple paragraphs.

A <p> starts a new paragraph. A <p> can be a child of a RichText or <div>. Every <p> has at least one <span> that can beimplied. Character sequences that are direct children of <p> are in an implied <span>.

Allowed children are:

• <tcy>• <a>• <img>• <span>• <br>• <tab>• <linkNormalFormat>• <linkHoverFormat>• <linkActiveFormat>• Raw text

a Element

An <a> element represents a link for associating a uri with text in a paragraph.

A link element may have a uri (attribute), a set of rollover formats (child tags), and a set of attributes used for indicating a linkthat has been activated.

Allowed children:

• <tcy>• <img>• <span>• <br>• <tab>• <linkNormalFormat>

42FXG Text

Page 43: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

• <linkHoverFormat>• <linkActiveFormat>• Raw text

Note: Links do not nest, so this is not legal:

<a>My <tcy>TCY <a>NESTEDLINK</a></tcy>LINK</a>

The link format tags (see below) must be the first children in the containing element. Link formats must be defined before theanchor text spans.

The following attributes are specific to the <a> element:

DescriptionAttribute

uri associated with the text. The uri is either absolute or relative to the SWF and not the contentfile.

href <string>

Controls where the link will appear. Any string value is allowed but the values of: _self, _blank,_parent, _top, or the name of the window or frame are allowed.

target <string>

• _self replaces the current html page. So, if it is in a frame or frameset, it loads within thatframe. If it is the full browser, it opens to replace the html page it came from.

• _blank opens a new browser window with no name.• _parent replaces the html page it came from.• _top loads in the current browser by replacing anything within the browser, such as a frameset.

If a String other then _self, _blank, _parent, _top, or the name of the window or frame arepassed in, the value is treated as _blank.

Link Format Elements

Link Format elements determine the appearance of text.

DescriptionElement

Defines the appearance of text used in normal state.linkNormalFormat element

Defines the appearance of text used in hover state.linkHoverFormat element

Defines the appearance of text used in active state.linkActiveFormat element

Note: All three of the above elements can be in any of the link's parents as well.

Links are stateful. Normally when links are applied, the format of the text is linkNormalFormat with any formats set directlyon the link taking precedence. Any attributes on a child element always take precedence over the attributes on a parent element.

43FXG Text

Page 44: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

For this reason, span element attributes take precedence over any link element formats. When the mouse "hovers" over the link,linkHoverFormat is used. When the link is clicked, linkActiveFormat is used.

Link format elements contain one and only one TextLayoutFormat child that specifies the formatting attributes that will beapplied to any links within the parent element, depending on the link state.

Below is an example of a link specified in this way:

<a href="http://www.4literature.net/Nathaniel_Hawthorne/Ethan_Brand/" target="_self"><linkHoverFormat><TextLayoutFormat color="#ff0000"/></linkHoverFormat><linkActiveFormat><TextLayoutFormat color="#00ff00" textDecoration="underline"/></linkActiveFormat><linkNormalFormat><TextLayoutFormat color="#0000ff"/></linkNormalFormat><span>Ethan Brand</span></a>

If these link format elements are children of an ancestor element (for instance, the TextFlow) rather than the link elementitself, they will be inherited by all links in the ancestor.

Link formats may contain TextLayoutFormat children.

TextLayoutFormat Element

The TextLayoutFormat element holds the formatting attributes for the link format.

A TextLayoutFormat may appear in a link format element (linkNormalFormat, linkActiveFormat, or linkHoverFormat).A TextLayoutFormat may have any formatting attribute and only character-level attributes are applied to link format elements.TextLayoutFormats have no children.

tcy Element

The tcy element holds text that is tate-chu-yoko (horizontal text within a vertical text flow).

A tcy element may appear in a horizontal text flow, but it does not appear rotated relative to the text flow. Traditionally, it isused to make small blocks of non-Japanese text or numbers such as dates more readable. tcy can be applied to horizontal text,but has no effect on drawing style unless and until it is turned vertically.

Allowed children:

• <a>• <img>• <span>• <br>• <tab>• <linkNormalFormat>• <linkHoverFormat>• <linkActiveFormat>• Raw text

TCY elements may not be nested, so the following is illegal:

<tcy>TCY<a>LINK<tcy>NESTED TCY</tcy></a></tcy>

44FXG Text

Page 45: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

img Element

An <img> element is used for specifying a graphic that appears in the text.

The images appear inline in the text, as if they are a special character. An image may appear as the content of a paragraph, link,or tcy element.

Allowed children: none

The following attributes are specific to the <img> element:

DescriptionAttribute

How wide the image is considered to be. This affects how much space is left for it in thetext. If a percent, it represents a percentage of the measured or default width.

width<number, percent, or

"auto">

How wide the image is considered to be. This affects how much space is left for it in thetext. If a percent, it is a percentage of the measured or default height.

* height<number, percent,

or "auto">

The image source. Usually a string containing the URL to the image. When compiling,it is possible for this to be an embed directive. Paths to images are either absolute orrelative to the SWF and not the markup content file. The source attribute is optional.

* source<string>

span Element

All character sequences in the <content> value are contained in one or more <span> elements.

Explicit span elements can be used for formatting runs of characters within a paragraph. A <span> may appear in a <p> orimplied paragraph, and within a <tcy> or <a>. A <span> element can be empty.

Unlike in XHTML, spans must not be nested. The reason for this is the increased cost in the number of objects required torepresent the text.

Allowed children are:

• <br>• <tab>• Raw text

br Element

The <br/> element behaves as a Unicode line separator character.

It does not end the paragraph; it merely forces a line break at the position where it appears. As defined by Unicode spec: "A lineseparator indicates that a line break should occur at this point; although the text continues on the next line, it does not start anew paragraph—no interparagraph line spacing or paragraph indentation is applied."

45FXG Text

Page 46: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

<br/> elements are always a child of <span> elements, although the <span> element can be implied. The <br> element musthave no children (empty tag).

Allowed children: none

Allowed attributes: none

tab Element

A <tab> element behaves as a Unicode tab character.

How it is treated depends on the tab setting that is applied to the paragraph that the tab is in. A tab is always a child of <span>elements, though the <span> element may be implied. The <tab> element must have no children (empty tag).

Allowed children: none

Allowed attributes: none

Text Box

A RichText element defines a text box, specified in the parent Group element's coordinate space, to contain the provided text.

The text box is specified using the x/y and width/height attributes on the RichText element.

When you measure the text, it has a logical extent that is calculated using the font metrics. When you draw, it inks pixels. Thepixels that are inked don't exactly correspond to the logical bounds because characters can hang over the left or right edge.Hanging over the left edge can happen, for instance, for a capital J where the hook on the J typically extends leftwards. Hangingover the right edge can also happen if the text is italic. Calculations of the text box dimensions are done based on the logicalextent and not the inked bounds.

Note: Text is clipped in TLF clients if the logical bounds of the text, as calculated based on font metrics, exceeds the boundsof the text box. If the logical bounds of the text falls within the text box, no clipping is applied. This is an optimization becauseclipping is expensive in the Flash Player. This means that you may have text whose logical bounds falls within the text box,but whose ink bounds falls outside. In these cases, for example, characters with a left side bearing like J or italic charactersthat draw to the right, are not clipped. If the logical bounds exceeds the text box, for example, because all the lines don't fit,that's the situation where clipping is applied.

If no width/height is specified on the RichText element, or if the specified width or height is 0, a width and height is calculatedbased on the text content. This is done using the following logic for horizontal text:

• If the width is specified, but the height is not, the container height is set to the height required to fit the text (i.e., text wraps tothe width of the container, and the total height of the text becomes the container height).

• If the width is not specified, the text breaks only at line breaks and at the paragraph end. The width of the container is then setto the width of the longest line.

• If neither width nor height are specified, the width is set as described above, and then the height is set based on the width.• If the height is specified, and the text exceeds what will fit, the remaining text is preserved but does not appear in the container;

it is clipped. The client can choose to add scroll bars to view the additional text, but scroll bars are not part of FXG.

For vertical text, all the logic remains the same, but switch width and height in the preceding description.

You should note the following:

• This is not an optimal fit case where the width is calculated to fit a specified height.

46FXG Text

Page 47: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

• There are some cases in which width and/or height are not specified and a large amount of incoming text is supplied. In thiscase, the client must determine a reasonable break off point for how much of the text to compose before setting the width andheight in order to avoid slowdowns.

Note: When the width of the text box is not specified, and the text is justified (textAlign="justify"), then the justifysetting is ignored both in TLF and in Illustrator. This is true for horizontal text (blockProgression="tb"). Likewise,when blockProgression="rl", text justification is not applied if the height is not specified.

Note: How lines are aligned with width and/or height not specified in Illustrator is not the same as how this is done in TLF.In TLF, text is center or right-aligned relative to the calculated bounds, which is based on the unaligned size of the text. InAI, there is a "point text" feature which is similar but which allows left/center/right alignment of multiple lines relative toan origin point. Therefore, a point text multi-line example that mixes textAlign center or right lines will not appear quitethe same in TLF. The lines will be placed differently relative to each other.

Fidelity

It is not a goal to preserve appearance or layout between clients.

The meaning of the text is preserved, and the attributes that are understood by the client are preserved, but the text will re-layoutfor each client. The line breaks are likely to be different, which glyphs are used to render the text can be different, and the fontsused can be different. The clients preserve the meaning of the text and the logical settings, and use them to drive the layoutaccording to their own rules. Hence a text snippet that can be five lines in one client could be three in a different client, andseven in still another one.

Text Rendering

Text is rendered as a graphic element similar to paths and shapes, but with a restricted subset of rendering options.

RichText elements are always rendered using a solid fill color, modified by any opacity, blend mode, and color transformationdefined by parent elements, and clipped to any clipping content defined on its parent elements. RichText content is only filled,not stroked.

With Flash Player 10, previous problems rendering text in device fonts with containers that have been rotated or skewed arefixed, and alpha with device text also works.

Font References

FXG documents refer to fonts via their family name in the fontFamily attribute of the RichText tag.

It is the processor's job to resolve font family names to font implementations, typically using the local machine's installed fontlist. FXG 2.0 does not support the ability to refer directly to a font definition file on disk. Fonts in FXG are always by name.Fonts cannot be embedded or linked to FXG. All applications using FXG should have consistent mechanisms for mapping fromthe font reference to a font installed in the host OS or editing application. In Scene7 FXG 2.0, fontFamily contains the RTFname of the font being used to render the text.

Units of Measurement

FXG has based its text functionality as that which is defined within TLF.

47FXG Text

Page 48: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

TLF processes text-related units as pixel values, as opposed to points. Attribute values such as fontSize, lineHeight, andtrackingRight/trackingLeft are all calculated based on point values.

Text Character Set

The full Unicode 5.0 character set is supported, including surrogate characters and Unicode control characters.

Support for characters, however, is dependent on the font that is being used for rendering. Please consult the Unicode spec formore information (http://unicode.org/versions/Unicode5.0.0/). For info specifically on the Unicode control characters, seehttp://www.unicode.org/versions/Unicode5.0.0/ch16.pdf.

Entity support applies to all of FXG. The following standard XML entities are supported:

• lt• gt• quot• apos• amp

Whitespace Handling

When handling whitespace, it is difficult to tell which characters in the text are there for pretty-printing the XML, and whichare part of the text content.

Flex counts all characters that appear in the text content as actual desired text content. XHTML takes a different approach andassumes that users can add newlines, tabs, and spaces that are really there only for viewing and editing the file in XML, and theydon't want to see the characters in the actual text when displayed in the document. This is controlled with thewhiteSpaceCollapse property.

For example, these two snippets are equivalent:

<RichText fontFamily="Verdana" fontWeight="bold" whiteSpaceCollapse="collapse"> <content> <p>First para, separated into several lines in the XML.</p> <p>Second para.</p> </content></RichText>

The whitespace (indenting and newlines) inside the <p>...</p> tags is there only for pretty-printing. By using collapse mode,that pretty-printing is removed, resulting in this equivalent snippet:

<RichText fontFamily="Verdana" fontWeight="bold" whiteSpaceCollapse="preserve"> <content><p><span>First para, separated into several lines in the XML.</span><p><span>Second para.</span></p></content></RichText>

Note that the newlines in the original XML snippet turned into single spaces.

Note: Adobe recommends that you use the <p> tag–not the <br> tag– for line breaks, when used in conjunction withcopy-fitting.

48FXG Text

Page 49: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

The <br/> tag is used most often in collapse mode to ensure that line breaks happen where intended. For example, supposeyou started with this snippet:

<RichText fontFamily="Verdana" fontWeight="bold"><content> <p>First line.

Second line.</p></content></RichText>

The intention is to have a line separated by two line breaks, followed by a second line. However, because the default value of thewhiteSpaceCollapse attribute on RichText is collapse, the newlines are replaced by a single space. The following is anequivalent snippet:

<RichText fontFamily="Verdana" fontWeight="bold" whiteSpaceCollapse="preserve"><content> <p><span>First line. Second line.</span></p></content></RichText>

To get the desired results, you must use explicit <br/> tags.

<RichText fontFamily="Verdana" fontWeight="bold"><content> <p>First line.<br/> <br/> Second line.</p></content></RichText>

Text Formatting

Formatting properties are set directly on the element as XML attributes.

Properties can be inherited from the parent, but they are not applied in styles as in CSS. Any formatting attribute can be appliedto any text element (RichText, div, p, span, a, tcy).

Inheritance Model

Most attributes inherit by default.

If an element does not explicitly define an attribute, its value will be inherited from its parent. Attributes that do not inherit aremarked as non-inheriting in the attribute's description. In order to get inheritance of a non-inheriting attribute, you can set itsvalue explicitly to inherit. The value of inherit is ignored when used in a RichText attribute. The attribute gets its schema-defineddefault value (equivalent to omitting the attribute). The value of inherit is ignored when used with an inheriting attribute. Theattribute gets its inherited default value (equivalent to omitting the attribute).

Formatting Attributes

The Formatting attributes comprise character-level attributes and paragraph-level attributes.

Character-Level Attributes

The character-level attributes can be applied to any text element and affect the lowest level (span level) of the text, except wherenoted.

49FXG Text

Page 50: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionAttribute

Specifies which of the baselines of the line containing the element thedominantBaseline snaps to, thus determining the vertical position of the elementin the line.

alignmentBaseline<roman,

ascent, descent,

ideographicTop,

ideographicCenter, Default is useDominantBaseline.ideographicBottom,

useDominantBaseline>

Rotates characters in span of text. Units in degrees.ATE:C_charRotation <angle>

(S7FXG Only) Defaults to 0 degrees.

Scales characters in span of text horizontally.ATE:C_horizontalScale

<number> (S7FXG Only) Defaults to 1.

Values allowed are no, auto, metric, optical, metricRomanOnly.ATE:C_kerning <string> (S7FXGOnly).

Scales characters in span of text vertically.ATE:C_verticalScale <number>

(S7FXG Only) Defaults to 1.

Alpha (transparency) value for the background. A value of 0 is fully transparent, anda value of 1 is fully opaque.

backgroundAlpha<number>

backgroundAlpha is non-inheriting.

Default value is 1.

Background color of the text. Can be either transparent or an integer containing three8-bit RGB components.

backgroundColor<color,

transparent>

backgroundColor is non-inheriting.

Default is transparent.

Indicates the baseline shift for the element in points. The element is shiftedperpendicular to the baseline by this amount. In horizontal text, a positive baseline

baselineShift<number,

percent, superscript,

subscript> shift moves the element up, and a negative baseline shift moves the element down.The default value is 0.0, indicating no shift.

A value of superscript shifts the text up by an amount specified in the font, andapplies a transform to the fontSize also based on preferences in the font.

A value of subscript shifts the text down by an amount specified in the font, andalso transforms the fontSize.

Percent shifts the text by a percentage of the fontSize. Minimum/maximum are-1000/1000; min/max percentage values are -1000%/1000%.

50FXG Text

Page 51: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionAttribute

Controls where a line can legally break.breakOpportunity<auto, any,

none, all>Auto means line breaking opportunities are based on standard Unicode characterproperties, such as breaking between words and on hyphens.

Any indicates that the line may end at any character. This value is typically used whenRoman text is embedded in Asian text and it is desirable for breaks to happen in themiddle of words.

None means that no characters in the range are treated as line break opportunities.

All means that all characters in the range are treated as mandatory line breakopportunities, so you get one character per line. Useful for creating effects like text ona path.

Default is auto.

The color of the text. Default is #000000.color <color>

Default uses the normal digit case from the font.digitCase<string>(default,

lining, oldStyle)Lining uses the lining digit case from the font.

oldStyle uses the old style digit case from the font.

Default is default.

Specifies how wide digits are when the text is set.digitWidth<string>(default,

proportional, tabular)Proportional means that the proportional widths from the font are used, anddifferent digits will have different widths.

Tabular means that every digit has the same width.

Default means that the normal width from the font is used.

Default is default.

Specifies which of the baselines of the element snaps to the alignmentBaseline todetermine the vertical position of the element on the line.

dominantBaseline<auto, roman,

ascent, descent,

ideographicTop, A value of auto gets resolved based on the textRotation of the span and the localeof the parent paragraph. A textRotation of rotate270 resolves toideographicCenter.

ideographicCenter,

ideographicBottom>

A locale of Japanese (ja) or Chinese (zh-XX, zh_XX, etc.), resolves toideographicCenter, whereas all others are resolved to roman.

Default is auto.

By default there are no patterns of the dashes and gaps. This attribute defines thedash/gap pattern of the stroke with the first value being the dash of the stroke and

flm:dashPattern <Array> (S7FXGOnly)

51FXG Text

Page 52: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionAttribute

second being the gap in between the dashes. The array can be extended for multiplevalues in the same manner with alternate values being specified as dash and gap.

The font family name used to render the text. The font family name may also be acomma-delimited list of font families, in which case the client should evaluate them

fontFamily <string>

in order. If no font is supplied, the client will pick one that is a variant of the Arialfamily, dependent on the platform. Which font is used for rendering the text is up tothe client and also depends on the glyphs that are being rendered and the fonts thatare available.

Default value is Arial.

The size of the glyphs that is used to render the text, specified in points.fontSize <number>

Default is 12. Minimum is 1 pixel. Maximum is 720 points.

The style of the glyphs that is used to render the text. Legal values are normal anditalic.

fontStyle <string> (normal,italic)

Default is normal.

The boldness or lightness of the glyphs that is used to render the text.fontWeight <string>(normal,bold) Default is normal.

If on, pair kerns are honored. If off, no font-based kerning is applied. If auto, kerningis applied to all characters except Kanji, Hiragana, or Katakana.

kerning <string> (on, off, auto)

The default is auto. Otherwise, characters are drawn with no pair kerning adjustments.

The ligature level used for this text. Controls which ligatures in the font will be used.ligatureLevel<minimum,

common, uncommon, exotic>minimum turns on rlig.

common is rlig + clig + liga.

uncommon is rlig + clig + liga + dlig.

exotic is rlig + clig + liga + dlig + hlig.

There is no way to turn the various ligature features on independently.

Default is common.

The distance from the baseline of the previous or the next line to the baseline of thecurrent line is equal to the maximum amount of the leading applied to any character

lineHeight <percent> |

<number>

in the line. This is either a number or a percent. This can be specified in absolute pointsor as a percentage.

52FXG Text

Page 53: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionAttribute

Default is 120%. Minimum/maximum value for number is -720/720.Minimum/maximum value percent is -1000%/1000%.

True if text has strikethrough applied. False otherwise.lineThrough <boolean>

Default is false.

The locale of the text. Controls case transformations and shaping. Standard localeidentifiers as described in Unicode Technical Standard #35 are used. For example en,

locale<string>

en_US, and en-US are all English. ja is Japanese. Locale applied at the paragraph andhigher level impacts resolution of auto values for dominantBaseline,justificationRule, justificationStyle, and leadingModel. See individualattributes for resolution values.

Specifies the cap of the stroke.s7:caps <String> (none, round,square) (S7FXG Only) Defaults to round.

If s7:colorspace value is defined, specifies the name of the defined color. Thiscolor can be a spot color or a global named process color. This information is retrievedfrom the s7:colorDefinitions element.

s7:colorName (S7FXG Only)

To specify colors in color spaces other than RGB, this attribute can be used. Validvalues are CMYK, RGB, Gray, defined (for spot or global named process colors), and

s7:colorspace (S7FXG Only)

Lab. If this attribute is absent, the color attribute of FXG 2.0 specification is used fordefining color in RGB color space.

Note: Lab here means it uses D50 lab color space.

Specifies color values for each component of the color space established usings7:colorspace. It is specified by a # immediately followed by n hexadecimal

s7:colorValue (S7FXG Only)

characters, where n can be anything that is a multiple of 2. The maximum useful lengthof characters is double the number of colors in the current color space. Remainingcharacters are ignored. If the number of characters specified is less than double thenumber of colors in the current color space, those color components are assumed tobe zero.

Specifies fill for text.s7:fill <boolean> (S7FXG Only)

Defaults to true.

Specifies the overprint for fill.s7:fillOverprint <boolean>

(S7FXG Only) Defaults to false.

53FXG Text

Page 54: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionAttribute

Specifies the join of the stroke.s7:joints <string> (miter,round, bevel) (S7FXG Only) Defaults to round.

The maximum size of the glyphs used to render the text, specified in point sizes.s7:maxFontSize: <number>

(S7FXG Only) Default is 12. Minimum is 1 point. Maximum 720 points.

If specified and different than fontSize, copy fit text is enabled.

Specifies the limit of the miter when the join is a miter join for the stroke.s7:miterLimit <number> (S7FXGOnly) Defaults to 4.

Specifies the stroke for text.s7:stroke <boolean> (S7FXGOnly) Defaults to false.

This attribute is the same as s7:colorName, except it defines the name of the colorfor the stroke.

s7:strokeColorName

This attribute is the same as s7:colorspace, except it defines the colorspace of thestroke.

s7:strokeColorspace

This attribute is same as s7:colorValue, except it defines the value of the color beingused for the stroke.

s7:strokeColorValue

Specifies the overprint for stroke.s7:strokeOverprint <boolean>

(S7FXG Only) Defaults to false.

Specifies the weight of the stroke for text in points.s7:weight <number> (S7FXG Only)

Defaults to 1 point.

The alpha value applied to the text.textAlpha <number>

Default is 1.0.

The decoration to apply to the text.textDecoration <string> (none,underline) Default is none.

Note: For TLF, in horizontal text (blockProgression="tb"), the underlineis always drawn below the text. In vertical text (blockProgression="rl"),the underline is drawn to the left if the paragraph's locale is Chinese (starts with"zh"), and to the right otherwise.

54FXG Text

Page 55: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionAttribute

The rotation of the text, in 90 degree increments.textRotation<auto, rotate0,

rotate90, rotate180,

rotate270>Default is auto.

Space added to the left of each character.trackingLeft <number,

percent> A number tracks by a pixel amount. Minimum/maximum values are 1000/1000.

Percent is a percent of the current fontSize, and may be negative, to bringcharacters closer together. Legal values for percentages are -1000% to 1000%.

Default is 0.

Space added to the right of each character.trackingRight <number,

percent> A number tracks by a pixel amount. Minimum/maximum values are 1000/1000.

Percent is a percent of the current fontSize, and may be negative, to bringcharacters closer together. Legal values for percentages are -1000% to 1000%.

Default is 0.

Controls the case in which the text appears.typographicCase<default,

capsToSmallCaps, uppercase, Default is "normal" for the font that is chosen (what you get without applying anyfeatures or case changes).lowercase,

lowercaseToSmallCaps>smallCaps converts all characters to uppercase and applies c2sc.

uppercase and lowercase are case conversions.

caps turns on case.

lowercaseToSmallCaps converts all characters to uppercase, and for those charactersthat have been converted, applies c2sc.

Default is default.

This is an enumerated value.whiteSpaceCollapse <string>

(preserve, collapse) A value of collapse converts line feeds, newlines, and tabs to spaces and collapsesadjacent spaces to one. See text collapse examples for details on collapse handling.Leading and trailing whitespace is trimmed.

A value of preserve passes whitespace through unchanged, except as noted earlier,when the whitespace would result in an implied <p> and <span> that is all whitespace,in which case the whitespace is removed.

Default is collapse.

55FXG Text

Page 56: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Paragraph-Level Attributes

Paragraph-level attributes can be applied to any element, and affect the formatting of paragraphs, except where noted.

Applying these attributes to elements contained within the paragraph (a, tcy, span) is legal but does not affect the text becausethe appearance of the paragraphs is driven by the value of these attributes on the paragraph element itself. (Note that the valuesmay have been applied via inheritance from a parent element.) An FXG 2.0 processor may ignore attributes applied tonon-paragraph level tags (a, tcy, span) and may discard those attributes in round-tripping scenarios.

DescriptionAttribute

Turns on or off the hyphenation.ATE: P_autoHyphenate <Boolean> (S7FXG Only)

Default is true.

Specifies the maximum number of consecutive lines on whichhyphenation may occur. Zero means unlimited consecutive hyphensare allowed at ends of lines.

ATE: P_consecutiveHyphenLimit <number>

(S7FXG Only)

Specifies the length of the word, after which it is considered forhyphenation.

ATE: P_hyphenatedWordSize <number> (S7FXGOnly)

Specifies whether capitalized words are hyphenated.ATE: P_hyphenationCapitalized <Boolean>

(S7FXG Only)

Any value from 0 - 1. A value closer to 0 provides better spacing. Avalue closer to 1 results in fewer hyphens.

ATE: P_hyphenationPreference <number>

(S7FXG Only)

Specifies a distance from the right edge of a paragraph, demarcatinga portion of the line where hyphenation is not allowed. A setting of0 allows all hyphenation.

ATE: P_hyphenationZone <number in pts>

(S7FXG Only)

Specifies the minimum number of characters at the end of a wordthat can be broken by a hyphen.

ATE: P_postHyphenSize <number> (S7FXG Only)

Specifies the minimum number of characters at the beginning of aword that can be broken by a hyphen.

ATE: P_preHyphenSize <number> (S7FXG Only)

Controls the dominant writing direction for the paragraph(left-to-right or right-to-left), and how characters with no implicit

direction <String> (ltr, rtl)

writing direction, such as punctuation, are treated. Also controls thedirection of the columns, which are set according to the value of thedirection attribute of the RichText element.

Default is left-to-right (ltr).

Set up the justifier.justificationRule<auto, space, eastAsian>

56FXG Text

Page 57: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionAttribute

EastAsian enables justification for Japanese.

A value of auto is resolved based on the locale of the paragraph.

Values for Japanese (ja) and Chinese (zh-XX, zh_XX, etc.) resolve toeastAsian, while all other locales resolve to space.

Default is auto.

A value of auto is resolved based on the locale of the paragraph.justificationStyle<auto,

prioritizeLeastAdjustment, pushInKinsoku,

pushOutOnly>Currently, all locales resolve to pushInKinsoku. However, this valueis only used in conjunction with a justificationRule value ofeastAsian, so it is only applicable to ja and all zh locales.

PrioritizeLeastAdjustment bases justification on eitherexpanding or compressing the line, whichever gives a result closestto the desired width. PushInKinsoku bases justification oncompressing kinsoku at the end of the line, or expanding it if thereis no kinsoku or if that space is insufficient.

PushOutOnly bases justification on expanding the line.

Default is auto.

Specifies the leading basis (baseline to which the<code>lineHeight</code> property refers) and the leading

leadingModel<auto, romanUp,

ideographicTopUp, ideographicCenterUp,

direction (which determines whether lineHeight property refersascentDescentUp, ideographicTop-Down,

to the distance of a line's baseline from that of the line before it or theline after it).

ideographicCenterDown,

approximateTextField>

Locale values of Japanese (ja) and Chinese (zh-XX, zh_XX, etc.)resolve to ideographicTopDown, and other locales resolve toromanUp. A value of approximateTextField approximates theline spacing that is done in Flash's TextField object as requestedby the Flex and Flash Authoring teams.

Default is auto, which is resolved based on locale.

The indentation applied to the end edge (right edge if direction isltr, left edge otherwise). Measured in points. Legal values range from0 to 1000.

paragraphEndIndent <number | inherit>

Default is 0.

The "space after" the paragraph. As in CSS, adjacent vertical spacecollapses (see note for paragraphSpaceBefore). No "space after"

paragraphSpaceAfter <number | inherit>

is necessary if the paragraph falls at the bottom of the RichText.Legal values range from 0 to 1000.

57FXG Text

Page 58: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionAttribute

Default is 0. Minimum is 0.

The "space before" the paragraph.paragraphSpaceBefore <number | inherit>

As in CSS, adjacent vertical space collapses. For two adjoiningparagraphs (A, B), where A has paragraphSpaceAfter 12 and Bhas paragraphSpaceBefore 24, the total space between theparagraphs will be 24, the maximum of the two, and not 36, the sum.If the paragraph comes at the top of the column, no extra space is leftbefore it. Legal values range from 0 to 1000.

Default is 0. Minimum is 0.

The indentation applied to the start edge (left edge if direction is ltr,right edge otherwise). Measured in points. Legal values range from0 to 1000.

paragraphStartIndent <number | inherit>

Default is 0.

Array of tab stops. By default there are no tabs. Each tab stop has a:tabStops <Array>

• Position in pixels, relative to the start of the line.• Alignment<start, center, end, decimal>.• DecimalAlignmentToken<String>, which is used when you

want to align the text with a particular character or substring withinit (for instance, to a decimal point).

In TLF markup, tabStops take the following condensed string-basedform: A sequence of tab stops, where each tab stop is delimited byone or more spaces. Tab stops may appear in any order. They do notneed to be sorted by position.

A tab stop takes the following string-based form: <alignmenttype><alignment position>|<alignment token>.

The alignment type is a single character, and can be S, E, C, or D (orlowercase equivalents): S/s for start, E/e for end, C/c for center, D/dfor decimal. The alignment type is optional, and if it is not specifiedwill default to S.

The alignment position is a number, and is specified according toFXG spec for numbers (decimal or scientific notation). The alignmentposition is required. The vertical bar is used to separate the alignmentposition from the alignment token, and should only be present if thealignment token is present. The alignment token is optional if thealignment type is D, and should not be present if the alignment typeis anything other than D. The alignment token may be any sequenceof characters terminated by the space that ends the tab stop (for the

58FXG Text

Page 59: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionAttribute

last tab stop, the terminating space is optional; end of alignment tokenis implied). A space may be part of the alignment token if it escapedwith a backslash. A backslash may be part of the alignment token ifit is es-caped with another backslash. If the alignment type is D, andthe alignment token is not specified, it will take on the default valueof '.'.

Note: When using <tab>, <tabStop> should be assigned avalue. If not, results are undefined in the current implementationof some products.

The alignment of the text relative to the text box edges. start is theedge specified by the direction property (left for direction=ltr;

textAlign <String> (start, end, left, center,right, justify)

right for direction=rtl). Likewise, end is specified by thedirection property (right edge if direction=ltr; left edge ifdirection=rtl).

Default is start.

The alignment of the last line of the paragraph. Applies if textAlignis justify. To make a paragraph set all lines justified, set textAlignand textAlignLast to justify.

textAlignLast <String> (start, end, left,center, right, justify)

Default is start.

The indentation of the first line of text in a paragraph. The indent isrelative to the start edge. Measured in points.

textIndent <Number>

Can be negative. Minimum/maximum values are -1000/1000.

Default is 0.

Applies when justificationRule is space.textJustify<interWord, distribute>

interWord spreads justification space out to spaces in the line.

distribute spreads it out to letters as well as spaces.

The algorithm in the Player for how the adjustments are dividedbetween spaces and letters when textJustify is set to distributeis to apply as much as possible to the spaces, where the optimal widthof a justifying space is the width of the space glyph in the font, and itcan go down to 1/2 that width and up to 2x that width.

Default is interWord.

59FXG Text

Page 60: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Container-Level Attributes

Container-level attributes can be applied to any text element, but when applied to the RichText element they affect the entiretext flow.

Container-level attributes are expected on RichText and div tags. Applying them to other text elements has no effect. An FXG2.0 processor may ignore attributes applied to other text elements and may discard those attributes in round-tripping scenarios.

DescriptionAttribute

Controls the direction in which lines are stacked. In Latin text,this is tb, because lines start at the top and proceed downward.

blockProgression <string> (tb, rl)

In vertical Chinese or Japanese, this is rl, because lines shouldstart at the right side of the container and proceed leftward.

Note: After FXG 1.0, the lr value was removed. SomeFXG processors may still reference the lr value.

Number of columns. The column number overrides the othercolumn settings. Value is an integer, or auto if unspecified. If

columnCount<auto, integer>

an integer, the range of legal values is 0 to 50. If columnCountis not specified but columnWidth is, columnWidth is used tocreate as many columns as can fit in the container.columnCount is non-inheriting.

Default is auto.

Space between columns in points. Does not include space beforethe first column or after the last column (padding). Legal valuesrange from 0 to 1000.

columnGap<number>

columnGap is non-inheriting.

Default value is 0.

Width of columns in points. If you specify the width of thecolumns but not the count, TextLayout creates as many

columnWidth<auto, number>

columns of that width as possible given the container widthand columnGap settings. Any remainder space is left after thelast column.

columnWidth is non-inheriting.

Legal values are 0 to 8000.

Default is auto.

Specifies the position of the first line of text in the container(first in each column) relative to the top of the container. The

firstBaselineOffset<auto, ascent, lineHeight,

number>

60FXG Text

Page 61: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionAttribute

first line may appear at the position of the line's ascent, or belowby the lineHeight of the first line. Or it may be offset by apoint amount. The default value (auto) specifies that the linetop be aligned to the container top inset. The baseline dependsthe container's locale. ideographicBottom is used for Chineseand Japanese locales. Otherwise, roman in used.

Minimum/maximum values are 0/1000.

Default is auto.

Inset from bottom edge to content area. Units in points.paddingBottom <number>

Minimum/maximum values area 0/1000. Non-inheriting.

Defaults to 0.

Inset from left edge to content area. Units in points.paddingLeft <number>

Minimum/maximum values are 0/1000. Non-inheriting.

Defaults to 0.

Inset from right edge to content area. Units in points.paddingRight <number>

Minimum/maximum values are 0/1000. Non-inheriting.

Defaults to 0.

Inset from top edge to content area. Units in points.paddingTop <number>

Defaults to 0.

Minimum/maximum values 0/1000. Non-inheriting.

Index of this text frame in the story's list of text frames.s7:frameIndex <number> (S7FXG Only)

ID of the path that represents the outline of the shape for textin a path.

s7:inPahtRef <number> (S7FXG Only)

Text on a path alignment.s7:onPathAlignment <ascender, descender,

center, baseline> (S7FXG Only) Defaults to baseline.

Text on a path effect.s7:onPathEffect <rainbow, skew, 3dribbon,

stairstepeffect, gravity> (S7FXG Only) Defaults to rainbow.

Whether or not the flip bit should be set for text on a path.s7:onPathFlip <boolean> (S7FXG Only)

Defaults to false.

61FXG Text

Page 62: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionAttribute

Text on a path range in the format <start>,<end>.s7:onPathRange <string> (S7FXG Only)

Defaults to 0,<length of path>.

ID of the path that represents the outline of the shape for texton a path.

s7:onPathRef <number> (S7FXG Only)

Specifies the reference position on the bounding box of theobject. This position is referred to when applying differenttransformations such as rotation and scaling to the object.

s7:referencePoint <string> (northWest, north,northEast, west, center, east, southWest, south,southEast, none, inherit) (S7FXG Only)

Defaults to none.

Number of rows in this text frame.s7:rowCount <number> (S7FXG Only)

Defaults to 1.

Space between rows in points. Does not include space beforethe first row or after the last row (padding). Legal values rangefrom 0 to 1000. s7:rowGap is non-inheriting.

s7:rowGap <number> (S7FXG Only)

Default value is 0.

Whether text is shown in row major order or column majororder in the text frame (with multiple rows and columns).

s7:rowMajorOrder <boolean> (S7FXG Only)

Defaults to true.

Index of the story in the document's list of stories, that flowsthrough this text frame.

s7:storyIndex <number> (S7FXG Only)

Vertical alignment of the lines within the container. The linesmay appear at the top of the container, centered within the

verticalAlign<top, middle, bottom, justify,

inherit>

container, at the bottom, or evenly spread out across the depthof the container.

verticalAlign is non-inheriting.

Default is top.

62FXG Text

Page 63: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

BitmapsScene7 FXG 2.0 does not support bitmap fills.

Only embedded bitmaps that come from Scene7 servers are supported.

Specifying a Source File

Use DOM manipulation to embed full IS URLs in FXG bitmap tags.

Following is an example of sample image that can be used as a reference:

http://s7bermuda.macromedia.com:8080/is/image/sample/0

Here is the sample with some more IS modifiers:

http://s7bermuda.macromedia.com:8080/is/image/sample/0?rotate=45&wid=700&crop=0,250,350,450

The above URL can be embedded inside an FXG’s bitmap tag using DOM manipulation with a format like the following:

http://s7bermuda.macromedia.com:8080/is/agm/sample/fxg/is_req1.fxg?&setAttr.test=%7Bsource%3d@Embed%28%27is%28sample/0%3Fwid%3d700%26rotate%3d45%26crop%3d0,250,350,450%29%27%29%7D

The unencoded source attribute that is passed using DOM looks something like this:

source=@Embed('is(sample/0?rotate=45&wid=700&crop=0,250,350,450)')

Note: The use of @Embed(' ') enclosing the IS resource URL.

Here is another sample:

http://s7kita.macromedia.com:8080/is/image/s7d7/1?layer=0&src=(/is/image/DeluxeForms/ugc/10854558.tif)

The preceding IS URL can be embedded inside the FXG using DOM manipulation, as follows:

http://s7kita.macromedia.com:8080/is/agm/GlennsGeminiTestCo/std_fxg_simple?setAttr.std_bl_bm=%7Bvisible%3dtrue%26source%3d@Embed%28%27is%28s7d7/1%3flayer%3d0%26src%3d%28/is/image/DeluxeForms/ugc/10854558.tif%29%29%27%29%7D

This more complicated IS URL

http://s7bermuda.macromedia.com:8080/is/image/s7d4/1?layer=0&src=(is/image/Successories/4078_new_train?%26$logo%3dis%28Successories/logo%3fsc1%3d1%29%26$verse%3dis%28Successories/ar_ae_4078_4078_13%3fscl%3d1%29%26$eng4%3dLine%204%26$eng3%3dLine%203%26$eng2%3dErika%20Clayton%26$eng1%3dPresented%20To%26$no_custom_msg%3dis%28Successories/clear_background%3fscl%3d1%29)

can be embedded with DOM manipulation like so:

http://s7bermuda.macromedia.com:8080/is/agm/s7d4/fxg/is_req1.fxg?&setAttr.test=%7Bx=140%26y=100%26source=@Embed%28%27is%28s7d4/1?src=%28is/image/Successories/4078_new_train?%26$logo%3dis%28Successories/logo%3fsc1%3d1%29%26$verse%3dis%28Successories/ar_ae_4078_4078_13%3fscl%3d1%29%26$eng4%3dLine%204%26$eng3%3dLine%203%26$eng2%3dErika%20Clayton%26$eng1%3dPresented%20To%26$no_custom_msg%3dis%28Successories/clear_background%3fscl%3d1%29%29%29%27%29%7D

Embedding full URLs can be complicated and difficult to debug. Here are some points to note while constructing the URLs:

• Make sure to pass in the full URL within @Embed(' .... ').• Watch out for any URLs that are already encoded so you double-encode while using DOM manipulation.• It is better to use curly brackets, {}, for the outer DOM command and use parentheses, (), for the IS URLs so there is no conflict.

For example, in

setAttr.test={...full IS url with ()'s }

make sure you encode the URL before passing into DOM.

• To debug a broken URL, first break down the URL into smaller pieces. Then add one parameter at a time to arrive at the exactcause of the issue.

63Bitmaps

Page 64: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

BitmapImage Element

A BitmapImage element defines a rectangular region in its parent element's coordinate space, filled with bitmap data drawnfrom a source file.

Rendering

The BitmapImage element renders its source image into a rectangle defined in its parent coordinate system. The default imagerectangle has its top/left at the origin, with its width/height defaulting to the size of the source image. The image rectangle canbe modified by setting the width/height attributes on the BitmapImage element.

A BitmapImage is identical to a Rectangle element with the same width and height, with no stroke and a BitmapFill applied.

Fit

The fit attribute controls how it fills the rectangle defined by the width and height of the BitmapImage. Legal values are thefollowing:

Use minScaleFactor for both dimensions. Uses the larger of two resultant sidesto populate the photo-hole – this may introduce white space).

fit

Use xScaleFactor for both dimensions.hfit

Use yScaleFactor for both dimensions.vfit

Use maxScaleFactor for both dimensions. Uses the smaller side’s scale factorwhich causes a fit in the given dimension to apply to the larger side which isclipped to accommodate the photo-hole – you should not see any white space.

crop

Use xScaleFactor for x dimension and yScaleFactor for y dimension (defaultvalue).

stretch

Use xScaleFactor for x dimension and no scale factor for y dimension (s7fxg1workflow only).

hstretch

Use yScaleFactor for y dimension and no scale factor for x dimension (s7fxg1workflow only).

vstretch

Behaves similar to fit, but instead of introducing white space, the size of theresponse image is reduced to avoid white space.

constrain

Embeds the image as repeated tiles if the source image is smaller than thephoto-hole (s7fxg2 workflow only). If the source image is larger than the

repeat

photo-hole, you can use DOM Manipulation to scale it down so repeating canoccur within the photo-hole. The following is an example that uses thistechnique:

64Bitmaps

Page 65: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

The smaller the source image versus the size of the photo-hole, the more timesthis is repeated within the same photo-hole.

As with other shape fills, any transforms that are defined on the BitmapImage or its parents modifies the image further.

This table lists children and attributes of the BitmapImage element.

NoneChildren

x <number>: The left edge of the image rectangle, in the parent coordinate system. Defaultsto 0.

Attributes

y <number>: The top edge of the image rectangle, in the parent coordinate system. Defaultsto 0.

width <number>: The width of the image rectangle, in the parent coordinate system. Defaultsto the width of the source image data.

height <number>: The height of the image rectangle, in the parent coordinate system. Defaultsto the height of the source image data.

rotation <number>: Defaults to 0.

scaleX <number>: Defaults to 1.

scaleY <number>: Defaults to 1.

source <embed reference>: An embedded reference to the file defining the image data torender. Must be a PNG, JPG, or GIF file. Required attribute. No default.

visible <boolean>: Whether or not the BitmapImage is visible. Defaults to true.

alpha <number>: Defaults to 1.

blendMode <string> (add, alpha, darken, difference, erase, hardlight, invert,layer, lighten, multiply, normal, overlay, screen, shader, subtract, colordodge,colorburn, exclusion, softlight, hue, saturation, color, luminosity, auto): Defaultsto auto.

s7:fit <string> (stretch, constrain, crop, fit, hFit, vFit, clip, repeat): Defaultsto scale.

s7:referencePoint <string> (northWest, north, northEast, west, center, east,southWest, south, southEast, none, inherit) (S7FXG Only): Defaults to none. Specifiesthe reference position on the bounding box of the object. This position is referred to whenapplying different transformations such as rotation and scaling to the object.

65Bitmaps

Page 66: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

FXG Fills, Strokes, Visibility, and Blend ModesPaths and basic shapes can be filled (painting the interior of the object) and stroked (painting along the outline of the object).

In general terms, filling and stroking can be thought of as painting operations.

With FXG, you can fill a path or shape with:

• A solid color• A solid color with opacity• A gradient (linear or radial)• A bitmap image (possibly tiled)

You can stroke a path or shape with:

• A solid color• A solid color with opacity• A gradient (linear or radial)

Fills

Paths and basic shapes can be filled, which means painting the interior of the object.

Paths and shapes are by default left unfilled. To create a filled shape, the element must have a child element of type fill. Thefill element must have a single child element that must be one of the fill types listed below. The following example specifiesa solid red color fill for a rectangle:

<Rect x="20" y="20" width="300" height="300"> <fill> <SolidColor color="#FF0000" /> </fill></Rect>

FXG shapes and paths are filled with an even-odd fill rule by default. This rule determines the "insideness" of a point on thecanvas by drawing a ray from that point to infinity in any direction and counting the number of path segments from the givenshape that the ray crosses. If this number is odd, the point is inside and is filled. If even, the point is outside. Paths can specifywinding="nonZero" to apply the non-zero fill rule. (For more information, see FXG paths.)

Fills, Strokes, and Transforms

Fills and strokes generally define a default bounding area that they fill, clipped by the path they are filling.

Fills and strokes can define their own user coordinate space, which defaults to the coordinate space of the object they are filling.

Similar to a Group, a fill or stroke can modify its coordinate space with transform attributes and child elements that is concatenatedwith its parent element's transforms to define a fill region in document coordinates. The default transform for fills, and the rulesby which discrete transform parameters are applied to the default transform, are described in Shapes: Bounds, Fill, and StrokeCalculations.

SolidColor Element

The SolidColor element fills a path or shape with a single solid color, or solid color with opacity.

66FXG Fills, Strokes, Visibility, and Blend Modes

Page 67: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

This table lists children and attributes of the SolidColor element.

NoneChildren

alpha <number>: A real number value ranging from 0 to 1 specifying the opacityof the fill, with 1 being opaque. Defaults to 1.

Attributes

color <color>: An RGB value (in the form #RRGGBB) that defines the singlecolor value to fill the shape with. Defaults to #000000.

s7:colorName (S7FXG Only): If the s7:colorspace value is defined, thisattribute specifies the name of the defined color. This color can be a spot color ora global named process color. This information is retrieved from thes7:colorDefinitions element.

s7:colorspace (S7FXG Only): To specify colors in color spaces other thanRGB, this attribute can be used. The valid values of this attribute are CMYK, RGB,Gray, defined (for spot or global named process colors), and Lab. If this attributeis absent, the color attribute of the FXG 2.0 specification is used for defining thecolor in RGB color space.

Note: Lab means it uses D50 lab color space.

s7:colorValue (S7FXG Only): This attribute specifies color values for eachcomponent of the color space established using S7:colorspace. It is specifiedby a # immediately followed by n hexadecimal characters, where n can be anymultiple of 2. The maximum useful length of characters is double the number ofcolors in the current color space. Remaining characters are ignored. If the numberof characters specified is less than double the number of colors in the currentcolor space, those color components are assumed to be zero.

LinearGradient Element

The LinearGradient element fills a path or shape with a continuously smooth color transition between a list of colors alonga vector.

The gradient vector is the vector stretching from (0,0) to (1,0) in the shape's coordinate system, transformed by any matrixtransformation defined on the LinearGradient.

LinearGradient transform

The gradient vector can be modified using either discreet transform attributes on the LinearGradient element, or by providingan explicit 2D matrix transform as a child element. Discrete transform attributes are useful for hand authoring or for runtimemanipulation of the gradient. The child matrix element is useful for tools and for more complex transforms than can be expressedby the discrete attributes.

The discrete transform attributes x, y, scaleX, and rotation are combined at runtime, if specified, to create a transformmatrix that is applied to the vector stretching from (0,0) to (1,0). The vector is first scaled in the X direction by scaleX, rotatedby rotation, and translated by x/y.

67FXG Fills, Strokes, Visibility, and Blend Modes

Page 68: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Alternatively, the LinearGradient can optionally have a child element of type matrix. If this child element exists, it must havea single child element of type Matrix.

If no matrix is specified, a default transform is applied (for more information, see Shapes: Bounds, fill, and stroke calculations.If the fill defines discrete transform attributes, the attributes replace only that component of the default transform matrix. Forexample, if only the scaleX is defined, only the scaleX portion of the default transform matrix is replaced. If the x is defined,the tx portion of the default transform matrix is replaced.

It is illegal to define both discrete transform attributes and child matrix element on the same LinearGradient.

spreadMethod attribute

LinearGradient elements support three methods for determining the fill colors for pixels that lay outside the gradient vector:

• pad: Pixels take on the color of the closest point on the gradient vector.• reflect: The gradient is repeated infinitely, reversing its direction with each repeat.• repeat: The gradient is repeated infinitely.

Gradient entries

The colors, opacities, and their positions used in the gradient vector are defined by the GradientElement children of theLinearGradient element. These children must appear in positional order. For any child GradientEntry element, its ratioattribute must be higher than the ratio attribute of the previous GradientEntry sibling. For more information, see<<<GradientEntry element>>>.

This table lists children and attributes of the LinearGradient element.

GradientEntryChildren

matrix

x <number>: The horizontal translation of the gradient transform.Attributes

y <number>: The vertical translation of the gradient transform.

scaleX <number>: The horizontal scale of the gradient transform that defines the width ofthe (unrotated) gradient.

rotation <number> (<angle>): The rotation of the gradient transform.

spreadMethod <string> (pad, reflect, repeat): How to choose the fill of pixels outsidethe gradient vector.

interpolationMethod <string> (rgb, linearRGB): How to interpolate between entriesof the gradient.

s7:referencePoint <String> (northWest, north, northEast, west, center, east,southWest, south, southEast, none, inherit) (S7FXG Only): Defaults to none. Specifiesthe reference position on the bounding box of the object that is referred for applying differenttransformations like rotation and scaling on the object.

68FXG Fills, Strokes, Visibility, and Blend Modes

Page 69: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

RadialGradient Element

The RadialGradient element fills a path or shape with a continuously smooth color transition between a list of colors alongthe radius of a circle.

The circle used is the circle bounded by the box stretching from (-0.5, -0.5) to (0.5,0.5). Like LinearGradient, it is transformedby the matrix transform defined on the gradient.

RadialGradient supports all the same transform attributes and child elements as LinearGradient. Additionally, becauseits rendering is defined by a box and not a horizontal vector, it supports a scaleY attribute that is used along with scaleX toscale the bounding box before the other transform attributes are applied.

RadialGradient elements also define the attribute focalPointRatio. This defines where along the horizontal axis (of theuntransformed box) the focal point of the radial gradient lies. A value of 1 places it at the right hand edge of the box (at 0.5,0).A value of -1 places it at the left hand edge of the box (at -0.5,0).

RadialGradient elements use child GradientEntry elements the same way that LinearGradient elements do.

This table lists children and attributes of the RadialGradient element.

GradientEntryChildren

matrix

x <number>: The horizontal translation of the gradient transform that defines the horizontalcenter of the gradient.

Attributes

y <number>: The vertical translation of the gradient transform that defines the vertical centerof the gradient.

scaleX <number>: The horizontal scale of the gradient transform that defines the width ofthe (unrotated) gradient.

scaleY <number>: The vertical scale of the gradient transform that defines the width of the(unrotated) gradient.

rotation <number> (<angle>): The rotation of the gradient transform.

spreadMethod <string> (pad, reflect, repeat): How to choose the fill of pixels outsidethe gradient vector.

interpolationMethod <string> (rgb, linearRGB): How to interpolate between entriesof the gradient.

focalPointRatio <number>: The placement of the focal point of the radial gradient alongthe horizontal center axis of the gradient bounding box. A value of 1 lies against the right edgeof the box. A value of -1 lies against the left edge. The default value of 0 places it in the middleof the box.

flm:focalY <number> (S7FXG Only): The placement of the focal point of the radial gradientalong the vertical center axis of the gradient bounding box. A value of 1 lies against the bottomedge of the box. A value of -1 lies against the left edge. The default value of 0 places it in thecenter of the box.

69FXG Fills, Strokes, Visibility, and Blend Modes

Page 70: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

s7:referencePoint <String> (northWest, north, northEast, west, center, east,southWest, south, southEast, none, inherit) (S7FXG Only): Specifies the referenceposition on the bounding box of the object that is referred for applying different transformationssuch as rotation and scaling on the object. Defaults to none.

70FXG Fills, Strokes, Visibility, and Blend Modes

Page 71: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Bitmap Strokes, Color, Masking, and TransformsThis section examines bitmap strokes, color, masking, and transforms.

Strokes

A stroke applied to a shape or path paints a filled region along the screen whose midpoint lies directly on the path.

General Stroke Properties

The general stroke properties are weight, scale mode, end caps, and joint style.

Weight

The width of the stroke is defined in pixels by the weight property. Strokes with a transformed weight less than 1 are alwaysrounded up to a single pixel weight when rendered.

The paint of the stroke is defined to be at a higher depth than the paint of any fill applied to the shape. This means that if thestroke is painted with a non-opaque value, the fill is seen beneath the half of the stroke that overlaps the shape.

The stroke is painted as though it were a filled shape itself, defined by the silhouette of the stroke region. This means that wherethe stroke overlaps itself, it is only painted a single time. Specifically, if the stroke is painted with a non-opaque value, theoverlapping region appears the same as a non-overlapping region rather than as a region painted twice with semi-transparentpaint.

The default weight of any stroke is 1 pixel. A stroke weight of 0 pixels is treated as a "hairline" stroke. Rendering a 0-weightstroke is device dependent, although in Flash, a "hairline" stroke is drawn as a 1-pixel stroke that never scales regardless if thepath or shape is scaled.

Additionally, anti-aliasing of strokes is device dependent. In Flash, however, vertical and horizontal strokes are always pixelsnapped, which results in no anti-aliasing. Strokes following a non-vertical or non-horizontal orientation are anti-aliased.

Scale mode

A stroke is extrapolated from a path or shape after the points have been converted into document coordinate space. Generally,the local transform of the shape isn't applied to the stroke. However, during painting, the weight of the paint applied to thetransformed shape is adjusted to match the scale factor in the shape's transform matrix. How the scale factor affects the weightof the stroke is controlled by the stroke's scale mode. Strokes support the following scale modes:

• normal: Scale the stroke outline using the scale component of the current coordinate transformation.• none: No scale is applied to the stroke weight.• vertical: The weight of the stroke is scaled by the vertical scale component of the transform applied to the shape. The

horizontal scale component has no effect on the stroke weight.• horizontal: The weight of the stroke is scaled by the horizontal scale component of the transform applied to the shape. The

vertical scale component has no effect on the stroke weight.

When the weight is scaled, a processor first extracts the x and y scale factor from the stroke's user space composite matrix (sx,sy)and transforms the weight w, as the following example shows:

t = sqrt(((w*sx)^2 + (w*sy)^2) / 2) weight_in_document_space = Max(1,t);

71Bitmap Strokes, Color, Masking, and Transforms

Page 72: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

When the scaleMode attribute is set to horizontal, the sy value in the above equation is constant at 1. When the scaleModeattribute is set to vertical, the sx value is held constant at 1.

End caps

FXG strokes support three types of end caps when painting strokes, specified with the caps attribute. Legal values are:

• none: The stroke ends exactly where the path ends.• round: The stroke end is capped with a half circle whose diameter matches the weight of the stroke.• square: The stroke end is capped with a half square whose side length matches the weight of the stroke.

Joint style

FXG strokes support three ways of rendering the joints between path segments, specified with the joints attribute. Legal valuesare:

• bevel: The joint is capped by the line running through the joint perpendicular to the line bisecting the joint angle.• miter: The joint is rendered by slicing the stroke of the two joining segments with the outer edge of the opposite segment's

stroke.• round: The joint is rendered with a circle whose diameter matches the weight of the stroke centered on the joint.

FXG strokes also support the miterLimit attribute. This is a numeric value that imposes a limit on the ratio between the miterlength and the stroke weight. When the limit is exceeded, the join is clipped at the miterLimit. Valid values range from 0 to255. The default value is 3.

SolidColorStroke Element

The SolidColorStroke element represents a stroke painted with a solid color, or a solid color with opacity. It is similar tothe SolidColor fill type.

This table lists children and attributes of the SolidColorStroke element.

NoneChildren

alpha <number>: A real number value ranging from 0 to 1 specifying the opacity of thestroke, with 1 being opaque. Defaults to 1.

Attributes

caps <string> (round, square, none): Specifies the type of caps at the end of lines.Defaults to round.

color <color>: An RGB value (in the form #rrggbb) that defines the single color valueto stroke the shape with. Defaults to #000000.

joints <string> (round, miter, bevel): Specifies the type of joint appearance used atangles. Defaults to round.

miterLimit <number>: Indicates the limit at which a miter is cut off. Valid values rangefrom 1 to 255. Defaults to 3.

pixelHinting <boolean>: Specifies whether to hint strokes to full pixels. This valueaffects both the position of anchors of a curve and the line stroke size itself. Defaults tofalse.

72Bitmap Strokes, Color, Masking, and Transforms

Page 73: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

s7:colorName (S7FXG Only): If s7:colorspace value is defined, this attribute specifiesthe name of the defined color. This color can be a spot color or a global named process color;this information is retrieved from yjr s7:colorDefinitions element.

s7:colorspace (S7FXG Only): To specify colors in color spaces other than RGB, thisattribute can be used. The valid values of this attribute are CMYK, RGB, Gray, defined (forspot or global named process colors), and Lab. If this attribute is absent, the color attributeof FXG 2.0 specification is used for defining color in RGB color space.

Note: Lab here means it uses D50 lab color space.

s7:colorValue (S7FXG Only): This attribute specifies color values for each componentof the color space established using S7:colorspace. It is specified by a # immediatelyfollowed by n hexadecimal characters, where n can be any multiple of 2. The maximumuseful length of characters is double the number of colors in the current color space.Remaining characters are ignored. If the number of characters specified is less than doublethe number of colors in the current color space, those color components are assumed to bezero.

scaleMode <string> (normal, none, horizontal, vertical): A value that specifieswhich scale mode to use. Defaults to normal.

weight <number>: The line weight, in pixels. Defaults to 1.

LinearGradientStroke Element

The LinearGradientStroke paints a stroke along a path or shape with a continuously smooth color transition between a listof colors along a vector.

The LinearGradientStroke operates almost identically to the LinearGradient fill type. As with the fill, by default, aLinearGradientStroke is transformed to fill the bounding box of the path being stroked. Otherwise its rendering behavioris identical to that of the LinearGradientFill.

This table lists children and attributes of the LinearGradientFill element.

matrixChildren

GradientEntry

x <number>: The horizontal translation of the gradient transform that defines thehorizontal center of the gradient.

Attributes

y <number>: The vertical translation of the gradient transform that defines the verticalcenter of the gradient.

scaleX <number>: The horizontal scale of the gradient transform that defines the widthof the (unrotated) gradient.

rotation <number> (<angle>): The rotation of the gradient transform.

spreadMethod <string> (pad, reflect, repeat): How to choose the fill of pixelsoutside the gradient vector. Defaults to pad.

73Bitmap Strokes, Color, Masking, and Transforms

Page 74: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

interpolationMethod <string> (rgb, linearRGB): How to interpolate betweenentries of the gradient. Defaults to rgb.

scaleMode <string> (normal, none, vertical, horizontal): A value that specifieswhich scale mode to use. Defaults to normal.

caps <string> (none, round, square): A value that specifies the type of caps at the endof lines. Defaults to none.

joints <string> (bevel, miter, round): A value that specifies the type of jointappearance used at angles. Defaults to round.

miterLimit <number>: A number that indicates the limit at which a miter is cut off.Valid values range from 1 to 255. Default value is 3.

caps <string> (round, square, none): The type of caps at the end of lines.

weight <number>: The line weight, in pixels. Defaults to 1.

pixelHinting <boolean>: Specifies whether to hint strokes to full pixels. This valueaffects both the position of anchors of a curve and the line stroke size itself. Defaults tofalse.

s7:referencePoint <String> (northWest, north, northEast, west, center,east, southWest, south, southEast, none, inherit) (S7FXG Only): Specifies thereference position on the bounding box of the object which will be referred for applyingdifferent transformations such as rotation and scaling on the object. Defaults to none.

RadialGradientStroke Element

The RadialGradientStroke element paints a stroke along a path or shape with a continuously smooth color transitionbetween a list of colors along the radius of a circle.

The RadialGradientStroke operates almost identically to the RadialGradient fill type. As with the fill, by default aRadialGradientStroke is transformed to fill the bounding box of the path being stroked. The bounding box is computedby computing the bounding box of the anchor points of the path, and expanding its borders outward in each direction by halfthe weight of the stroke.

Otherwise, its rendering behavior is identical to that of the RadialGradientFill.

This table lists children and attributes of the RadialGradientStroke element.

matrixChildren

GradientEntry

x <number>: The horizontal translation of the gradient transform that defines the horizontalcenter of the gradient.

Attributes

y <number>: The vertical translation of the gradient transform that defines the vertical centerof the gradient.

scaleX <number>: The horizontal scale of the gradient transform that defines the width ofthe (unrotated) gradient.

74Bitmap Strokes, Color, Masking, and Transforms

Page 75: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

scaleY <number>: The vertical scale of the gradient transform that defines the width of the(unrotated) gradient.

rotation <number> (<angle>): The rotation of the gradient transform.

spreadMethod <string> (pad, reflect, repeat): How to choose the fill of pixels outsidethe gradient vector. Defaults to pad.

interpolationMethod <string> (rgb, linearRGB): How to interpolate between entriesof the gradient. Defaults to rgb.

focalPointRatio <number>: The placement of the focal point of the radial gradient alongthe horizontal center axis of the gradient bounding box. A value of 1 lies against. Defaults to 0.

scaleMode <string> (normal, none, vertical, horizontal): A value that specifies whichscale mode to use. Defaults to normal.

caps <string> (none, round, square): A value that specifies the type of caps at the end oflines. Defaults to round.

joints <string> (bevel, miter, round): A value that specifies the type of caps at the endof lines. Defaults to round.

miterLimit <number>: A number that indicates the limit at which a miter is cut off. Validvalues range from 1 to 255. Default value is 3.

weight <number>: The line weight, in pixels. Defaults to 1.

pixelHinting <boolean>: Specifies whether to hint strokes to full pixels. This value affectsboth the position of anchors of a curve and the line stroke size itself. Defaults to false.

s7:referencePoint <String> (northWest, north, northEast, west, center, east,southWest, south, southEast, none, inherit) (S7FXG Only): Specifies the referenceposition on the bounding box of the object which will be referred for applying differenttransformations such as rotation and scaling on the object. Defaults to none.

GradientEntry Element

The GradientEntry element defines a stop in the list of colors used to render a gradient in a fill or stroke.

A GradientEntry element must appear as a direct child of one of the four gradient fill or stroke types.

Each entry defines three values used in the gradient rendering: an RGB color value, an opacity value, and a position along thegradient vector (defined by the ratio attribute). When rendering the gradient, the entry specifies that the rendering at its ratiomust exactly match its color and opacity. The gradient uses its assigned interpolation method to transition the color betweenthe entry and its nearest neighbors.

GradientEntry elements can leave their ratio unspecified. If no ratio is assigned, the Gradient automatically determines anappropriate value when rendering. If the first entry in a gradient has no specified ratio, it is assumed to be 0. If the last entry hasno ratio, it assumed to be 1. If the gradient contains other entries with no ratio specified, they are distributed evenly betweenthe ratios of the most immediate entries before and after that have definite values.

75Bitmap Strokes, Color, Masking, and Transforms

Page 76: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

In the following example, there are two gradient entries with no specified ratio. Their nearest left and right neighbors with ratiosspecified define a range from 0.1 to 0.7. The two unspecified gradients would be distributed across this range, placing them at0.3 and 0.5:

<LinearGradient ... > <GradientEntry ratio="0" /> <GradientEntry ratio="0.1" /> <GradientEntry /> <GradientEntry /> <GradientEntry ratio="0.7" /></LinearGradient>

In the following example, none of the entries have specified ratios. The first entry is automatically placed at ratio 0, and the lastat ratio 1. That leaves three unspecified ratios to be distributed across the defined range 0-1, placing them at 0.25, 0.50, and 0.75:

<LinearGradient ... > <GradientEntry /> <GradientEntry /> <GradientEntry /> <GradientEntry /> <GradientEntry /></LinearGradient>

Each GradientEntry must either have no defined ratio or have a ratio larger than that specified by any of its previous siblingGradientEntry elements.

Note: Flash Player supports up to fifteen GradientEntry elements in its definition. When more than fifteenGradientEntry elements are encountered, it is up to the individual FXG processors to determine how to handle thosecases (options include only ignoring the entries after 15, throwing an exception, etc.).

This table lists children and attributes of the GradientEntry element.

NoneChildren

color <color>: An RGB value specifying the color that should be used at that point inthe gradient. Defaults to #000000.

Attributes

alpha <number>: A number from 0-1 specifying the opacity that should be used at thatpoint in the gradient. Defaults to 1.

ratio <number>: A value from 0-1 specifying where on the gradient the entry shouldbe pinned. This attribute is required.

flm:midPoint <number> (Scene7 FXG Only): Specifies the distance in percentagebetween two gradient entries where the color will be the average of two end points. Defaultis 0.5.

s7:colorName (S7FXG Only): If s7:colorspace value is defined, this attribute specifiesthe name of the defined color. This color can be a spot color or a global named processcolor; this information is retrieved from yjr s7:colorDefinitions element.

s7:colorspace (S7FXG Only): To specify colors in color spaces other than RGB, thisattribute can be used. The valid values of this attribute are CMYK, RGB, Gray, defined(for spot or global named process colors), and Lab. If this attribute is absent, the colorattribute of FXG 2.0 specification is used for defining color in RGB color space.

76Bitmap Strokes, Color, Masking, and Transforms

Page 77: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Note: Lab here means it uses D50 lab color space.

s7:colorValue (S7FXG Only): This attribute specifies color values for each componentof the color space established using S7:colorspace. It is specified by a # immediatelyfollowed by n hexadecimal characters, where n can be any multiple of 2. The maximumuseful length of characters is double the number of colors in the current color space.Remaining characters are ignored. If the number of characters specified is less than doublethe number of colors in the current color space, those color components are assumed tobe zero.

Visibility of Graphical Elements

The visibility of a graphical element is defined by the visible attribute of the element and all of its parent elements.

FXG elements can control whether or not they are visible by specifying a visible attribute, which defaults to true. If any parentof the element is hidden, that element is not rendered. Non-visible graphical elements still exist and are considered for anybounding box calculations necessary to render the document.

For example, if the size of the root Graphic element is left unspecified, it is calculated as the bounding box of all of the contentin the document, including any non-visible content. To prevent non-visible elements from affecting the bounding box calculations,the global bounding box can be specified explicitly.

Blend Modes and Opacity

FXG elements can control how their content is composited with the background by specifying a blendMode attribute.

Grouping elements are rendered in one of two different ways, depending on their blend mode. A grouping element with a blendmode of normal acts only as a transformation on the elements contained within. Its 2D transform, color transform, and opacityare multiplied down into its child elements, where they are combined with any local values to render the child element into thecurrent surface. This has a visible effect on the use of opacity in an FXG document, as the following example shows:

<Group blendMode="normal" opacity="0.5"> <Rect x="100" y="100" width="100" height="100"> <fill> <SolidColor color="#FF0000" /> </fill> </Rect> <Rect x="0" y="0" width="200" height="200"> <fill> <SolidColor color="#0000FF" /> </fill> </Rect></Group>

The opacity of the group would multiply down into the two child rectangles. The larger, frontmost blue rectangle would renderwith a 50-percent opacity, revealing the smaller red rectangle underneath.

All other blend modes force the group to act as a temporary compositing surface onto which its child elements are rendered.The surface is initialized to transparent black, and the child elements are composited in. The temporary sur-face is then compositedinto the grouping element's parent's surface, applying the grouping element's opacity, color transform, and 2D transform in theprocess.

77Bitmap Strokes, Color, Masking, and Transforms

Page 78: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

When alpha is set on a grouping element whose blend mode is normal, it acts as if the children of the group had their alphasindividually set. This is different from the standard behavior of the CS tools, in which the alpha applies to the entire group, notto the individual children. Due to this somewhat nonstandard behavior, a special blendMode, called auto, is defined for groups.This blendMode acts as blendMode=normal when the alpha of the group is 0 or 1, and blendMode=layer when the alphaof the group is strictly between 0 and 1. When a group does not have a specific blendMode and its static appearance would bethe same whether the blendMode is normal or layer (e.g., because no children have blendModes that require blending againstitems outside the group), we recommend using blendMode=auto.

Shape elements are affected similarly by their blendMode setting. A shape with a blendMode of normal composite transformsinto the fill and stroke of the shape, which are rendered into the current surface. Any other blendMode type effectively rendersits fill and stroke into a temporary compositing surface, which is then composited into the parent surface using the shape's colortransform.

On a shape element, blendMode=auto acts the same as blendMode=normal.

The default blendMode of an element is auto.

Blend Modes

This table describes the blend modes that FXG supports.

DescriptionBlend mode

For grouping elements, acts the same as blendMode=normal when the alpha of the group is0 or 1, and blendMode=layer when the alpha of the group is strictly between 0 and 1. Forshape elements, acts the same as blendMode=normal.

auto

The element content appears in front of the background. Pixel values of the element overridethose of the background. Where the element is transparent, the background is visible.

normal

The element content is precomposed in a temporary buffer before it is processed further.layer

Multiplies the values of the element's constituent colors by the colors of the background color,and then normalizes by dividing by 0xFF, resulting in darker colors.

multiply

Multiplies the complement (inverse) of the display object color by the complement of thebackground color, resulting in a bleaching effect. This setting is commonly used for highlightsor to remove black areas of the display object.

screen

Selects the lighter of the constituent colors of the element and the color of the background (thecolors with the larger values).

lighten

Selects the darker of the constituent colors of the element and the colors of the background(the colors with the smaller values).

darken

Compares the constituent colors of the element with the colors of its background, and subtractsthe darker of the values of the two constituent colors from the lighter value.

difference

78Bitmap Strokes, Color, Masking, and Transforms

Page 79: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

DescriptionBlend mode

Adds the values of the constituent colors of the element to the colors of its background, applyinga ceiling of 0xFF.

add

Subtracts the values of the constituent colors in the element from the values of the backgroundcolor, applying a floor of 0.

subtract

Inverts the background.invert

Applies the alpha value of each pixel of the element to the background.alpha

Erases the background based on the alpha value of the element.erase

Adjusts the color of each pixel based on the darkness of the background. If the background islighter than 50% gray, the element and background colors are screened, which results in a

overlay

lighter color. If the background is darker than 50% gray, the colors are multiplied, which resultsin a darker color.

Adjusts the color of each pixel based on the darkness of the element. If the element is lighterthan 50% gray, the element and background colors are screened, which results in a lighter color.

hardlight

If the element is darker than 50% gray, the colors are multiplied, which results in a darker color.This setting is commonly used for shading effects.

Color Transformations

Color Transformations are a high performance way to modify the color of an FXG group or shape element.

A color transform can be used, for example, to tint a group, adjust its brightness, or modify its opacity.

Rendering

Color transforms are applied to the rendering of a group or shape element after any bitmap filters are applied. Color transformsaffect the output of a filter (such as tinting the drop shadow). They are applied before the group element is composited with itsbackground. Blend modes use the transformed color value when combining the group with the background content.

A ColorTransform element can specify multipliers and offsets for each individual channel of the RGBA rendering of a groupelement. It is similar to a 5x5 matrix where only the diagonal (scale) values and right column (translation) are exposed. All othercoefficients are set to zero.

Color attributes versus color transforms

Group and shape elements support both color transform child elements, as well as convenient color transform attributes(specifically, alpha). As with the geometry transform, an individual element can use either attributes or child elements to defineits color transform, but not both. The alpha attribute corresponds to the alpha multiplier in the ColorTransform. There areno convenience attributes for defining the other coefficients of the matrix.

79Bitmap Strokes, Color, Masking, and Transforms

Page 80: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

ColorTransform elements are only legal on shapes and Group instances, either an in-place group or a PlaceObject tag.They cannot be placed in a group whose direct parent is in a definition element.

Defining a color transform

The following example shows how a group defines a color transform:

<Group> <transform> <Transform> <colorTransform> <ColorTransform redMultiplier="0.5" redOffset="20" /> </colorTransform> </Transform> </transform></Group>

An element can optionally have a single child element of type transform. If present, the transform element must have a singlechild element of type Transform. The Transform element can optionally have a single child element of type colorTransform.The colorTransform element must have a single child element of type ColorTransform.

colorTransform element

This table lists children and attributes of the colorTransform element.

NoneChildren

alphaMultiplier <number>: A decimal value that is multiplied with the alphatransparency channel value. Defaults to 1.

Attributes

alphaOffset <number>: A number from -255 to 255 that is added to the alphatransparency channel value after it has been multiplied by the alphaMultiplier value.Defaults to 0.

blueMultiplier <number>: A decimal value that is multiplied with the blue transparencychannel value. Defaults to 1.

blueOffset <number>: A number from -255 to 255 that is added to the blue transparencychannel value after it has been multiplied by the blueMultiplier value. Defaults to 0.

greenMultiplier <number>: A decimal value that is multiplied with the greentransparency channel value. Defaults to 1.

greenOffset <number>: A number from -255 to 255 that is added to the greentransparency channel value after it has been multiplied by the greenMultiplier value.Defaults to 0.

redMultiplier <number>: A decimal value that is multiplied with the red transparencychannel value. Defaults to 1.

redOffset <number>: A number from -255 to 255 that is added to the red transparencychannel value after it has been multiplied by the redMultiplier value. Defaults to 0.

80Bitmap Strokes, Color, Masking, and Transforms

Page 81: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Masking

FXG supports applying a clipping mask to any instance group element.

clipping mask is a subtree of graphical FXG, contained in a Group tag, and defines the region in which the group's content isrendered.

Clipping, Alpha, and Luminosity

FXG supports three different forms of masking: clipping, alpha, and luminosity.

Clip masking

When masking in clip mode, a clipping mask is reduced to 1-bit. This means that a mask does not affect the opacity of a pixelin the source content. It either leaves the value unmodified if the corresponding pixel in the mask is has a non-zero alpha value,or makes it fully transparent if the mask pixel value has an alpha value of zero.

When clip masking is used, only the actual path, shape vectors, and fills defined by the mask are used to determine the effecton the source content. Strokes and bitmap filters defined on the mask are ignored. Any filled region in the mask is consideredfilled, and renders the source content. The type and parameters of the fill is irrelevant. A solid color fill, gradient fill, or bitmapfill in a mask all render the underlying source content, regardless of the alpha values of the mask fill.

BitmapImage elements are treated as bitmap filled rectangles when used in a clipping mask. As a result, the alpha channel ofthe source bitmap is irrelevant when part of a mask. The bitmap affects the mask in the same manner as solid filled rectangle ofequivalent dimensions.

RichText elements are not supported as part of a clip mask. Text must be rasterized, or the mask must be converted to an alphaor luminosity mask.

Alpha masking

In alpha mode, the opacity of each pixel in the source content is multiplied by the opacity of the corresponding region of themask. For example, a pixel in the source content with an opacity of 1 that is masked by a region of opacity of 0.5 has a resultingopacity of 0.5. A source pixel with an opacity of 0.8 masked by a region with opacity of 0.5 has a resulting opacity of 0.4.

Conceptually, alpha masking is equivalent to rendering the transformed mask and source content into separate RGBA surfaces,and multiplying the alpha channel of the mask content into the alpha channel of the source content. All of the mask content isrendered into its surface before compositing into the source content's surface. As a result, all FXG features, such as strokes,bitmap filters, and fill opacity affect the final composited content.

When in alpha mode, the alpha channel of any bitmap data is composited normally into the mask alpha channel, and will affectthe final rendered content. This holds true for both BitmapImage elements and bitmap filled shapes and paths.

Luminosity masking

Luminosity masking is very similar to alpha masking in that all of the mask artwork is rendered into a separate mask layer anda new alpha value is calculated and applied. Alpha masks simply use the alpha value of the rendered Alpha and RGB color valuesfor blending. But luminosity masks convert the Alpha and RGB pixels using a filter that calculates a modified alpha and setsthat value back as the alpha value of the masked element. After that the normal alpha soft masking processing can be completed.The basic formula for calculating the luminosity alpha is:

luminosity = alpha * (.3*red + .59*green + .11*blue)

81Bitmap Strokes, Color, Masking, and Transforms

Page 82: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Optionally, luminosity masks have two boolean parameters to control the polarity of the mask as well as how values outside ofthe mask bounds are evaluated:

• luminosityInvert: <ASBoolean>

Determines whether the polarity of the luminosity mask is inverted or not. Defaults to false.

• luminosityClip: <ASBoolean>

Determines whether the values outside of the mask bounds are opaque or transparent. Defaults to false.

A luminosity mask is defined by setting maskType=luminosity. When this option exists, the luminosityClip andluminosityInvert attributes are settable to control the luminosity mask. luminosityClip and luminosityInvert donot have any bearing when set on clip or alpha masks.

Specifying a Mask

A Group, Graphic Path, or shape object can support masks by defining a single child element of type mask.

If the mask child element exists, it must contain a single child element, either a Group instance element or a PlaceObjectelement.

The path data of the specified mask defines the clipping mask.

The masking element inherits the target group's coordinate space as if it were a direct child element. It can be further modifiedwith the standard group transform attributes or child elements. The masking element is not rendered in the output.

Determining the Type of Mask

The maskType attribute determines the type of masking used.

Legal values are clip, alpha, and luminosity. The default value is clip.

<Group maskType="clip"> <mask> <Group x="10" y="10" scaleX="3" scaleY="3"> <Ellipse x="20" y="20" width="30" height="10"> <fill> <SolidColor color="#000000" /> </fill> </Ellipse> </Group> </mask> <Rect width="150" height="150"> <fill> <SolidColor color="#FF0000" /> </fill> </Rect></Group>

82Bitmap Strokes, Color, Masking, and Transforms

Page 83: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Reference PointsA Reference Point specifies the point on the bounding box of the object that is referred to when applying transformations likerotation or scaling.

s7:referencePoint Defines the reference point. Nine points on the bounding box can be used as reference points:

• northWest• north• northEast• west• center• east• southWest• south• southEast

There are two other values that are supported for this APD:

• none• inherit

When FXG is exported for a document using Illustrator or InDesign, the normal FXG coordinate system is used. No referencepoint is defined, s7:referencePoint is set to the default of none. To provide a reference point, change the default value ofthis APD to one of the nine points of the bounding box.

After setting the reference point at the top of the page or group level or group level to something other than none, sets7:referencePoint=inherit for the children to use the same reference point. Otherwise, children do not inherit the valuefrom the parent and can have their own reference point.

Example

There is an rectangular object in a document of width 100 and height 100, and the top-left corner at 100,100. It is representedin FXG as:

<Rect x="100" y="100" width="100" height="100" s7:referencePoint=”none” .....>...</Rect>

If s7:referencePoint is set to northWest, its top left point aligns to the referencePoint 100,100. Any transformationare applied using this reference point. But, if s7:referencePoint is set as center, then, the center of the rectangle is positionedat 100, 100. In this case, the top left of the rectangle is situated at 50,50 because the center of the rectangle is 100,100.

Any transformation applied to this rectangle is relative to its center point. So, if s7:referencePoint=southeast, top-leftcorner of the rectangle is at 0,0 because the bottom-right corner is at 100,100.

<Rect x="100" y="100" width="100" height="100"s7:referencePoint=”northWest/centre/southEast” ...>...</Rect>

83Reference Points

Page 84: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

To use a reference point without any displacement of the object, update the x and y values of the rectangle so there is no changein the placement of the object. For example, if center is the reference point and the rectangle is at the same location as before,FXG should be updated with new x and y values as shown below:

<Rect x="150" y="150" width="100" height="100" s7:referencePoint=”center” ...>...</Rect>

If the reference point is southeast with no displacement:

<Rect x="200" y="200" width="100" height="100" s7:referencePoint=”southEast” ...>...</Rect>

After setting the referencePoint and updating the x and y values (if required), any transformation can be applied on thisobject in relation to this point.

When you use this feature with an element that does not have an explicit width and height defined (such as groups, paths orline elements) and any value from one of the nine points of the bounding box is set as s7:referencePoint, the boundingbox is expected to be drawn in accordance to that reference point.

In that case, the x and y values for the first object are ignored. If the x and y values of the first object are 0,0, the user does notexperience any change. But, if there is an offset in the x,y values for the first object of the group from the origin of the group,the x and y values of the for the first object are ignored when drawing the group. However, these values are used for drawingother objects in respect to the first object, such as when using the top-left point of the bounding box of the group and drawingother objects with respect to that point.

In other words, the top-left point of the bounding box of all the objects in the group behave as the northWest Reference pointfor the group. Similarly, the bottom-right point of the bounding box of every object in the group acts as the southEast Referencepoint for the group.

For example, if a group of objects contains two rectangles, FXG looks something like:

<Group x="75" y="75" s7:referencePoint="none" rotation="0"> <Rect x="25" y="25" width="100" height="100" s7:referencePoint="none"> </Rect> <Rect x="125" y="125" width="100" height="100" s7:referencePoint="none"> </Rect></Group>

When s7:referencePoint is set as northWest for the group without any modification in x and y, the group’s bounding boxstarts from the specified x and y position and ignore the offset of the first object.

<Group x="75" y="75" s7:referencePoint="northWest" rotation="0"> <Rect x="25" y="25" width="100" height="100" s7:referencePoint="none"> </Rect> <Rect x="125" y="125" width="100" height="100" s7:referencePoint="none"> </Rect></Group>

In this case, the group starts from 75,75 as its origin and ignores the first object's offset of 25,25 from group’s origin. Becauseother objects are drawn with respect to the first object, the position of other objects does not change with respect to the firstobject. The whole group is displaced by -25,-25 because the first object's offset is ignored.

To prevent displacement of the group, modify the x and y values to take the offset into account. In this example, modify x andy values to 100,100 in the group definition to include the 25,25 offset of the first object while defining s7:referencePointas northWest. Then, FXG look like this:

<Group x="100" y="100" s7:referencePoint="northWest" rotation="0"> <Rect x="25" y="25" width="100" height="100" s7:referencePoint="none"> </Rect> <Rect x="125" y="125" width="100" height="100" s7:referencePoint="none">

84Reference Points

Page 85: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

</Rect></Group>

In this case, no displacement of the group occurs because the offset for the first object has been taken into account.

85Reference Points

Page 86: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

NamingWhen developers write code to manipulate an FXG document in an interactive environment, they want to limit the amountthat their code depends on the structure of the document to function.

While some structure can be dictated by how the developer codes against it, portions of the FXG are irrelevant to the task thatthe code is trying to accomplish.

Forcing the code to traverse irrelevant structure to reach the portion it does care about it a recipe for fragile brittle code.

Defining contracts

FXG allows a document author to identify specific elements in the document by name. An interactive environment supportingFXG (such as Flex) can provide APIs for the developer to reference specifically named elements, insulating them from changesin the overall structure of the document. A designer and developer will typically agree upon a set of required elements names(and potentially types). This agreement defines a contract between the design and the logic.

Setting the id attribute

An id attribute on an element assigns a well-defined name to that element. The value of an id attribute must be unique withinthe definition scope in which it appears. The FXG document creates its own definition scope. Each definition tag within theFXG library creates a new definition scope. ids are never visible across definitions scopes. The same id value can appear in themain document structure as well as within a library definition.

The value of the id attribute must be a valid ActionScript identifier. An id value should not contain spaces, start with anumber, be a single number, or be a reserved ActionScript keyword.

Where id attributes can appear

The elements defined by FXG fall into three broad categories:

• Content elements

Elements such as Group, Rect, and SolidColor define actual content that typically appears in or directly affects the renderingof an FXG document. These are the bulk of the elements defined.

• Relationship elements

Elements such as fill, stroke, and transform exist to define a relationship between a parent element and a child element.fill, for example, indicates that the SolidColor element it contains is used as the fill for the Rect it is contained by.

• Control elements

Elements such as mxml, library, and definition control how a section of the document is processed, and don't directlydefine content.

FXG processors are generally meant to expose FXG as content, necessarily as a document model. When exposing FXG as content,relationships and control structure generally are exposed as context, rather than as objects that can be named (unlike a documentmodel, where each element is exposed as an element, independent of its function). As a result, id names are only allowed oncontent elements.

86Naming

Page 87: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

VersioningThe FXG format includes a version number for identifying what revision of this specification the document conforms to.

The version number is specified as a required version attribute on the root Graphics tag of any FXG file.

Version numbers

The version number must be read as a decimal value. The integer portion of the version represents the major version of thedocument; the fractional portion corresponds to the minor version.

The values of versions should be compared as real values, not an integer values. Thus a version attribute of 5.200 represents amajor version 5, with a minor version of 2. The numbers 5.200 and 5.2 represent equivalent version numbers. The number 5.2is a newer version number than 5.100.

Responding to version numbers

Each FXG processor implements/conforms to one or more versions (major.minor). An FXG processor should treat unknownmajor and minor versions as follows:

• An unknown major version number represents a change to the FXG syntax such that a parser based on an earlier major versionnumber could not be expected to reasonably understand and represent the file.

Alternatively, a different major version number might represent such a significant change to the content that can appear inan FXG file that a parser based on an earlier major version would fail to understand a significant portion of the content in thefile. Processors discovering a later major version number should report the version mismatch to the user. Processors may offerto attempt to process the file regardless.

• An unknown minor version number represents a small change to the FXG format.

The change can be one of syntax or content. A processor based on an earlier minor version number should be able to renderthe file with little or no loss of fidelity.

Processors discovering a later minor version number must ignore unknown attributes and elements for rendering and shouldpreserve them in round-tripping use cases. Known elements that are descendents of an unknown element must be ignored forrendering and should be preserved for round-tripping.

Processors that discover attribute values that are out of range or have unexpected values (e.g., an enum value that does not matchthe enumeration constraint for the version the processor conforms to) should ignore those values or substitute default valuesfor rendering, and must preserve the original values for round-tripping use cases.

Processors discovering a later minor version may report the version mismatch and may report unknown elements, unknownattributes, or known attributes with unexpected values, to the user after processing. The recommended best practice is to avoidsending the user too many notifications; you should keep the reporting of unknowns to a minimum.

Processors must preserve and write (export) the original version number when round-tripping unknown elements or attributes.For example, a user imports/opens a 1.1 file with a 1.0 processor. The 1.1 file contains a <Foo> tag, which is unknown to 1.0processors. The 1.0 processor shows the contents of the file, ignoring the <Foo> tag and all of its children. The user adds sometext to the file in a way that does not disturb the <Foo> tag or its contents (as far as the 1.0 processor can tell). The user thensaves the FXG file again. If the saved file includes the <Foo> tag, it must have the original version number also, which is 1.1.

87Versioning

Page 88: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Color Management (S7FXG Only)Scene FXG must support output to raster for Web and vector for print.

To provide color consistency, the S7FXG renderer uses Adobe Color Management (ACE). The S7FXG color managementelement contains the color management settings for the document. Color profiles are not embedded into the FXG document.

s7:ColorSettings (S7FXG Only)

The s7:ColorSettings element contains the profile names for all three device color spaces (if defined in the original document)and the conversion options.

The [ColorSettings] are part of the Private data section at the end of the FXG document. Here is an example of thes7:ColorSettings element:

<Private> <s7:ColorSettings blackpointCompensation="true" cmykProfileName="U.S. Web Coated (SWOP) v2" grayProfileName="" renderingIntent="relativeColorimetric" rgbProfileName="sRGB IEC61966-2.1" /></Private>

This table lists children and attributes of the s7:ColorSettings element.

NoneChildren

blackpointCompensation <boolean>: Specifies whether black point compensation isenabled or not. Default value is false.

Attributes

renderingIntent <string> (perceptual, relativeColorimetric, saturation,absoluteColorimetric): Specifies the rendering Intent to be used with the profiles. Defaultvalue is relativeColorimetric.

grayProfileName <string>: Specifies the name of the profile to be used with Device Graycolor space. If the attribute is absent or contains an empty string, uncalibrated Device Gray isused.

rgbProfileName <string>: Specifies the name of the profile to be used with Device RGBcolor space. If the attribute is absent or contains an empty string, uncalibrated Device RGB isused.

cmykProfileName <string>: Specifies the name of the profile to be used with Device CMYKcolor space. If the attribute is absent or contains an empty string, uncalibrated Device CMYKis used.

s7:DocumentSetup (S7FXG Only)

The s7:DocumentSetup element is used to define the color mode of the document.

Here's an example of this element:

<Private> <s7:DocumentSetup colorModel="rgb" /></Private>

88Color Management (S7FXG Only)

Page 89: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

This table lists children and attributes of the s7:DocumentSetup element.

Children

colorModel <string> ("rgb", "cmyk"): Specifies the colorModel of the document.Attributes

s7:ColorDefinitions (S7FXG Only)

The s7:ColorDefinitions element contains s7:Color elements that provide definitions of all defined colors in the document.

Here is an example of this element:

<Private> <s7:ColorDefinitions> <s7:Color baseColorValue="#001C756B" baseColorspace="cmyk" color-Name="DashCircle1.1.color1" colorType="spot"/> <s7:Color baseColorValue="#008CFF1E" baseColorspace="cmyk" color-Name="DashCircle1.5.color1" colorType="spot"/> <s7:Color baseColorValue="#0059FF00" baseColorspace="cmyk" colorName="HKS 72 Z" colorType="spot"/> <s7:Color baseColorValue="#FFED45" baseColorspace="rgb" colorName="PANTONE 113 EC" colorType="namedProcess"/> <s7:Color baseColorValue="#FFDB80" baseColorspace="rgb" colorName="PANTONE 134 UP" colorType="namedProcess"/> <s7:Color baseColorValue="#B56D19" baseColorspace="rgb" colorName="PANTONE 139 EC" colorType="namedProcess"/> </s7:ColorDefinitions></Private>

s7:Color (S7FXG Only)

The s7:Color element provides definition of a single defined color.

This table lists children and attributes of the s7:Color element.

NoneChildren

baseColorspace <string> (gray, rgb, cmyk, lab): This attribute specifies the base colorspace for the defined color.

Attributes

baseColorValue: This specifies color values for each component of the color space establishedusing baseColorspace. It is a numerical specification in hexadecimal notation. It is specifiedby a # immediately followed by n hexadecimal characters. n can be anything that is a multiple of2. The maximum useful length of characters is double the number of colors in the current colorspace. Remaining characters are ignored. If the number of characters specified is less than doublethe number of colors in the current color space, those color components are assumed to be zero.

colorName <string>: Specifies the name of the color. It must be unique in the scope of theFXG document.

colorType <string> (spot, namedProcess): Specifies whether this defined color is a spotcolor or global named Process color.

89Color Management (S7FXG Only)

Page 90: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Scene7 Variables (S7FXG Only)

Scene7 protocol allows for variable substitution at rendering time to dynamically change the contents of the output document.

S7FXG will use an internal DTD to define XML entities that can be used as variables throughout the XML document, as follows:

<!DOCTYPE example [ <!ENTITY copyright-notice "Copyright &copy; 2006, XYZ Enterprises">]><RichText fontFamily="Verdana" fontWeight="bold"><content> <p>&copyright-notice;<br/> <br/> Second line.</p></content></RichText>

90Color Management (S7FXG Only)

Page 91: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Server and Plug-In LimitationsThis section describes FXG 2.0 server and plug-in limitations in Illustrator and InDesign.

Server-side limitations

Scene7 FXG has the following server-side limitations.

• Only the Gaussian Blur, DropShadow, and Glow filters are supported.

• An FXG file with color values of more than nine characters is not considered a valid FXG file. The server ignores the colorvalue without giving an error message.

• The server handles hyphenation slightly different in Adobe Illustrator and Adobe InDesign.

• The server does not handle the first baseline offset feature.

• SWF file output does not support overprinting.

• Raster formats, such as png, jpg, and gif, do not support overprinting.

• SWF file output does not handle vertical text nor character rotation.

• The blending modes ColorBurn, Lighten, Screen, Color Dodge, Overlay, SoftLight, HardLight, and Differenceare not handled in SWF file output.

• The image server is not capable of handling images that contain spot colors.

Plug-In Limitations

InDesign and Illustrator have the following plug-in limitations.

InDesign Plug-In Limitations

The InDesign FXG plug-in for Windows and Macintosh has the following limitations.

• By selecting or deselecting the Print Layer option, a layer in InDesign can printed or not printed. However, Print Layer optioninformation is not emitted in FXG. Therefore, layers are always published in PDF.

• When the eye icon beside a layer in an InDesign file is deselected, the content does not get emitted altogether in the FXG file.• Text written on a closed path through InDesign gets flipped when the exported FXG is published through the AGM-Server.

This limitation results from the way that text is emitted by the InDesign plug-in. (Workaround: When the Flip option in theType on a Path Options dialog box is selected, the same gets emitted as s7onPathFlip=”true” in FXG. This needs to bechanged to s7onPathFlip=”false” to get the expected output as displayed in InDesign CS5.)

• Overset text in InDesign files is not exported in FXG.• In-path data is not supported (it was not supported in FXG 1.0 either). Text within a non-rectangular object will always reflow

within the rectangular frame holding the object.• An InDesign file containing default ligatures is emitted with additional notdef character. (Workaround: Default ligatures

will automatically be detected by the server and converted to ligatures in the generated output. Hence you can deselect theLigatures option in the Character palette while creating text containing ligatures.)

• Colors of objects linked in the InDesign file are converted to the DeviceRGB colorspace.

91Server and Plug-In Limitations

Page 92: Adobe Experience Cloud Scene7 FXG · Scene7 FXG and Illustrator and InDesign. As in InDesign, different gradient entries within a single gradient can have color ... •Support for

Illustrator Plug-In Limitations

The Illustrator FXG plug-in for Windows and Macintosh has the following known limitations:

• The "Darkness" setting for drop shadows is not supported.

92Server and Plug-In Limitations