Subproperties
Introduction
Sub-properties are properties of an object that are not displayed in the properties panel because they cannot be edited directly.
A good example of a sub-property is the width of a text object. While you can set a maximum width, the actual width depends on the text content, font family, font style, font size, and letter spacing. In simpler terms, the width of a text object depends on what you have typed in.
The most common form of responsive behavior is for objects to change their position and size when text is being entered.
Why do we need sub-properties?
The value of a regular property is either known (i.e. static value or computable expression) or connected to a variable (input field). Unlike a sub-property, you can simply use the value of a regular property as an argument in an expression. In the first case, you can either copy and paste the value (static) or the expression (assuming that there is no circular dependency). In the second case, you can directly refer to the variable (you will find it in the “Variables” tab of the Smart Expression Editor).
Here are a few notable sub-properties:
text1.left -> X-coordinate of the left edge text1.right -> X-coordinate of the right edge text1.top -> X-coordinate of the top edge text1.bottom -> X-coordinate of the bottom edge text1.height -> distance between top and bottom edge text1.width -> distance between left and right edge text1.lines[i].height -> height of line i (i=0 for first line) text1.lines[i].width -> width of line i (i=0 for first line)