Polotno
Design Format

TextElement

Documentation for the TextElement type in the Polotno design JSON Schema.

Type Information

Base Type: object

Properties

PropertyTypeDescription
idstringUnique identifier for the element.
type"text"No description provided
namestringDisplay name for the element.
customunknownCustom data attached to the element.
xnumberX position in pixels.
ynumberY position in pixels.
widthnumberWidth in pixels.
heightnumberHeight in pixels (0 until measured/rendered).
rotationnumberRotation angle in degrees.
opacitynumberOpacity level (0-1).
animationsArray<Animation>Animation configurations.
blurEnabledbooleanWhether blur effect is enabled.
blurRadiusnumberBlur radius in pixels.
brightnessEnabledbooleanWhether brightness effect is enabled.
brightnessnumberBrightness level (-1 to 1).
sepiaEnabledbooleanWhether sepia effect is enabled.
grayscaleEnabledbooleanWhether grayscale effect is enabled.
filtersobjectApplied image filters keyed by filter name.
shadowEnabledbooleanWhether shadow is enabled.
shadowBlurnumberShadow blur radius in pixels.
shadowOffsetXnumberShadow horizontal offset in pixels.
shadowOffsetYnumberShadow vertical offset in pixels.
shadowColorstringShadow color.
shadowOpacitynumberShadow opacity (0-1).
visiblebooleanWhether the element is visible.
draggablebooleanWhether the element can be dragged.
resizablebooleanWhether the element can be resized.
selectablebooleanWhether the element can be selected.
removablebooleanWhether the element can be removed.
contentEditablebooleanWhether the element content can be edited.
styleEditablebooleanWhether the element style can be edited.
alwaysOnTopbooleanWhether the element stays on top of others.
showInExportbooleanWhether the element appears in exports.
textstringVisible text shown on canvas.
placeholderstringPlaceholder text shown when empty.
fontSizenumberFont size in pixels.
fontFamilystringFont family name.
fontStylestringFont style: 'normal' or 'italic'.
fontWeightstringFont weight: 'normal', 'bold', or numeric string.
textDecorationstringText decoration (e.g. underline, line-through).
textTransformstringText transform: uppercase, lowercase, capitalize, none.
fillstringText color.
alignstringHorizontal alignment (commonly left
verticalAlignstringVertical alignment: top, middle, bottom.
strokeWidthnumberStroke width in pixels.
strokestringStroke color.
lineHeightnumber | stringLine height multiplier or 'auto'.
letterSpacingnumberLetter spacing as a fraction of font size.
backgroundEnabledbooleanWhether the text background is enabled.
backgroundColorstringText background color.
backgroundOpacitynumberText background opacity (0-1).
backgroundCornerRadiusnumberText background corner radius.
backgroundPaddingnumberText background padding.
curveEnabledbooleanWhether the text curve effect is enabled.
curvePowernumberText curve power (-1 to 1, 0 = straight).
legacyBackgroundbooleanInternal compatibility flag stamped by the v2→v3 migration.

JSON Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the element."
    },
    "type": {
      "type": "string",
      "const": "text"
    },
    "name": {
      "default": "",
      "description": "Display name for the element.",
      "type": "string"
    },
    "custom": {
      "description": "Custom data attached to the element."
    },
    "x": {
      "default": 0,
      "description": "X position in pixels.",
      "type": "number"
    },
    "y": {
      "default": 0,
      "description": "Y position in pixels.",
      "type": "number"
    },
    "width": {
      "default": 100,
      "description": "Width in pixels.",
      "type": "number"
    },
    "height": {
      "default": 0,
      "description": "Height in pixels (0 until measured/rendered).",
      "type": "number"
    },
    "rotation": {
      "default": 0,
      "description": "Rotation angle in degrees.",
      "type": "number"
    },
    "opacity": {
      "default": 1,
      "description": "Opacity level (0-1).",
      "type": "number"
    },
    "animations": {
      "default": [],
      "description": "Animation configurations.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "delay": {
            "default": 0,
            "description": "Delay before the animation starts, in milliseconds.",
            "type": "number"
          },
          "duration": {
            "default": 500,
            "description": "Animation duration in milliseconds.",
            "type": "number"
          },
          "enabled": {
            "default": true,
            "description": "Whether the animation is enabled.",
            "type": "boolean"
          },
          "type": {
            "type": "string",
            "enum": [
              "enter",
              "exit",
              "loop"
            ],
            "description": "Animation phase."
          },
          "name": {
            "default": "none",
            "description": "Animation name identifier.",
            "type": "string"
          },
          "data": {
            "default": {},
            "description": "Animation-specific data."
          }
        },
        "required": [
          "type"
        ]
      }
    },
    "blurEnabled": {
      "default": false,
      "description": "Whether blur effect is enabled.",
      "type": "boolean"
    },
    "blurRadius": {
      "default": 10,
      "description": "Blur radius in pixels.",
      "type": "number"
    },
    "brightnessEnabled": {
      "default": false,
      "description": "Whether brightness effect is enabled.",
      "type": "boolean"
    },
    "brightness": {
      "default": 0,
      "description": "Brightness level (-1 to 1).",
      "type": "number"
    },
    "sepiaEnabled": {
      "default": false,
      "description": "Whether sepia effect is enabled.",
      "type": "boolean"
    },
    "grayscaleEnabled": {
      "default": false,
      "description": "Whether grayscale effect is enabled.",
      "type": "boolean"
    },
    "filters": {
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "object",
        "properties": {
          "intensity": {
            "default": 1,
            "description": "Filter intensity (-1 to 1).",
            "type": "number"
          }
        }
      },
      "description": "Applied image filters keyed by filter name."
    },
    "shadowEnabled": {
      "default": false,
      "description": "Whether shadow is enabled.",
      "type": "boolean"
    },
    "shadowBlur": {
      "default": 5,
      "description": "Shadow blur radius in pixels.",
      "type": "number"
    },
    "shadowOffsetX": {
      "default": 0,
      "description": "Shadow horizontal offset in pixels.",
      "type": "number"
    },
    "shadowOffsetY": {
      "default": 0,
      "description": "Shadow vertical offset in pixels.",
      "type": "number"
    },
    "shadowColor": {
      "default": "black",
      "description": "Shadow color.",
      "type": "string"
    },
    "shadowOpacity": {
      "default": 1,
      "description": "Shadow opacity (0-1).",
      "type": "number"
    },
    "visible": {
      "default": true,
      "description": "Whether the element is visible.",
      "type": "boolean"
    },
    "draggable": {
      "default": true,
      "description": "Whether the element can be dragged.",
      "type": "boolean"
    },
    "resizable": {
      "default": true,
      "description": "Whether the element can be resized.",
      "type": "boolean"
    },
    "selectable": {
      "default": true,
      "description": "Whether the element can be selected.",
      "type": "boolean"
    },
    "removable": {
      "default": true,
      "description": "Whether the element can be removed.",
      "type": "boolean"
    },
    "contentEditable": {
      "default": true,
      "description": "Whether the element content can be edited.",
      "type": "boolean"
    },
    "styleEditable": {
      "default": true,
      "description": "Whether the element style can be edited.",
      "type": "boolean"
    },
    "alwaysOnTop": {
      "default": false,
      "description": "Whether the element stays on top of others.",
      "type": "boolean"
    },
    "showInExport": {
      "default": true,
      "description": "Whether the element appears in exports.",
      "type": "boolean"
    },
    "text": {
      "default": "",
      "description": "Visible text shown on canvas.",
      "type": "string"
    },
    "placeholder": {
      "default": "",
      "description": "Placeholder text shown when empty.",
      "type": "string"
    },
    "fontSize": {
      "default": 14,
      "description": "Font size in pixels.",
      "type": "number"
    },
    "fontFamily": {
      "default": "Roboto",
      "description": "Font family name.",
      "type": "string"
    },
    "fontStyle": {
      "default": "normal",
      "description": "Font style: 'normal' or 'italic'.",
      "type": "string"
    },
    "fontWeight": {
      "default": "normal",
      "description": "Font weight: 'normal', 'bold', or numeric string.",
      "type": "string"
    },
    "textDecoration": {
      "default": "",
      "description": "Text decoration (e.g. underline, line-through).",
      "type": "string"
    },
    "textTransform": {
      "default": "none",
      "description": "Text transform: uppercase, lowercase, capitalize, none.",
      "type": "string"
    },
    "fill": {
      "default": "black",
      "description": "Text color.",
      "type": "string"
    },
    "align": {
      "default": "center",
      "description": "Horizontal alignment (commonly left | center | right | justify).",
      "type": "string"
    },
    "verticalAlign": {
      "default": "top",
      "description": "Vertical alignment: top, middle, bottom.",
      "type": "string"
    },
    "strokeWidth": {
      "default": 0,
      "description": "Stroke width in pixels.",
      "type": "number"
    },
    "stroke": {
      "default": "black",
      "description": "Stroke color.",
      "type": "string"
    },
    "lineHeight": {
      "default": 1.2,
      "description": "Line height multiplier or 'auto'.",
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string"
        }
      ]
    },
    "letterSpacing": {
      "default": 0,
      "description": "Letter spacing as a fraction of font size.",
      "type": "number"
    },
    "backgroundEnabled": {
      "default": false,
      "description": "Whether the text background is enabled.",
      "type": "boolean"
    },
    "backgroundColor": {
      "default": "#7ED321",
      "description": "Text background color.",
      "type": "string"
    },
    "backgroundOpacity": {
      "default": 1,
      "description": "Text background opacity (0-1).",
      "type": "number"
    },
    "backgroundCornerRadius": {
      "default": 0.5,
      "description": "Text background corner radius.",
      "type": "number"
    },
    "backgroundPadding": {
      "default": 0.5,
      "description": "Text background padding.",
      "type": "number"
    },
    "curveEnabled": {
      "default": false,
      "description": "Whether the text curve effect is enabled.",
      "type": "boolean"
    },
    "curvePower": {
      "default": 0.5,
      "description": "Text curve power (-1 to 1, 0 = straight).",
      "type": "number"
    },
    "legacyBackground": {
      "description": "Internal compatibility flag stamped by the v2→v3 migration.",
      "type": "boolean"
    }
  },
  "required": [
    "id",
    "type"
  ]
}

On this page