@imgly/codesign-mcp 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -1
- package/assets/docs/guide/SKILL.md +45 -53
- package/assets/docs/guide/animation/create/base.md +234 -243
- package/assets/docs/guide/animation/create/text.md +250 -231
- package/assets/docs/guide/animation/create.md +197 -231
- package/assets/docs/guide/animation/edit.md +196 -271
- package/assets/docs/guide/animation/types.md +182 -185
- package/assets/docs/guide/animation.md +9 -6
- package/assets/docs/guide/api/AssetAPI.md +7 -53
- package/assets/docs/guide/api/BlockAPI.md +725 -648
- package/assets/docs/guide/api/CreativeEngine.md +7 -16
- package/assets/docs/guide/api/EditorAPI.md +32 -93
- package/assets/docs/guide/api/EventAPI.md +1 -2
- package/assets/docs/guide/api/SceneAPI.md +47 -98
- package/assets/docs/guide/api/VariableAPI.md +1 -4
- package/assets/docs/guide/api/node/classes/assetapi.md +1090 -0
- package/assets/docs/guide/api/node/classes/blockapi.md +12965 -0
- package/assets/docs/guide/api/node/classes/creativeengine.md +319 -0
- package/assets/docs/guide/api/node/classes/editorapi.md +3417 -0
- package/assets/docs/guide/api/node/classes/engineactions.md +319 -0
- package/assets/docs/guide/api/node/classes/eventapi.md +56 -0
- package/assets/docs/guide/api/node/classes/sceneapi.md +1370 -0
- package/assets/docs/guide/api/node/classes/variableapi.md +143 -0
- package/assets/docs/guide/api/node/enumerations/compressionformat.md +23 -0
- package/assets/docs/guide/api/node/enumerations/compressionlevel.md +24 -0
- package/assets/docs/guide/api/node/functions/iscmykcolor.md +30 -0
- package/assets/docs/guide/api/node/functions/isrgbacolor.md +30 -0
- package/assets/docs/guide/api/node/functions/isspotcolor.md +30 -0
- package/assets/docs/guide/api/node/interfaces/addvideooptions.md +31 -0
- package/assets/docs/guide/api/node/interfaces/applyassetoptions.md +31 -0
- package/assets/docs/guide/api/node/interfaces/asset.md +30 -0
- package/assets/docs/guide/api/node/interfaces/assetbooleanproperty.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetcmykcolor.md +26 -0
- package/assets/docs/guide/api/node/interfaces/assetcolorproperty.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetcontentaspectratio.md +23 -0
- package/assets/docs/guide/api/node/interfaces/assetdefinition.md +31 -0
- package/assets/docs/guide/api/node/interfaces/assetenumproperty.md +26 -0
- package/assets/docs/guide/api/node/interfaces/assetfixedaspectratio.md +24 -0
- package/assets/docs/guide/api/node/interfaces/assetfixedsize.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetfreeaspectratio.md +22 -0
- package/assets/docs/guide/api/node/interfaces/assetnumberproperty.md +28 -0
- package/assets/docs/guide/api/node/interfaces/assetpayload.md +27 -0
- package/assets/docs/guide/api/node/interfaces/assetquerydata.md +32 -0
- package/assets/docs/guide/api/node/interfaces/assetresult.md +46 -0
- package/assets/docs/guide/api/node/interfaces/assetrgbcolor.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetsource.md +111 -0
- package/assets/docs/guide/api/node/interfaces/assetspotcolor.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetsqueryresult.md +31 -0
- package/assets/docs/guide/api/node/interfaces/assetstringproperty.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetstylepreset.md +39 -0
- package/assets/docs/guide/api/node/interfaces/assetstylepresetanimation.md +23 -0
- package/assets/docs/guide/api/node/interfaces/audiotrackinfo.md +32 -0
- package/assets/docs/guide/api/node/interfaces/blockevent.md +26 -0
- package/assets/docs/guide/api/node/interfaces/blockstateerror.md +26 -0
- package/assets/docs/guide/api/node/interfaces/blockstatepending.md +26 -0
- package/assets/docs/guide/api/node/interfaces/blockstateready.md +25 -0
- package/assets/docs/guide/api/node/interfaces/buffer.md +26 -0
- package/assets/docs/guide/api/node/interfaces/characterinkbox.md +29 -0
- package/assets/docs/guide/api/node/interfaces/cmykcolor.md +34 -0
- package/assets/docs/guide/api/node/interfaces/completeassetresult.md +46 -0
- package/assets/docs/guide/api/node/interfaces/configuration.md +38 -0
- package/assets/docs/guide/api/node/interfaces/dominantcolor.md +25 -0
- package/assets/docs/guide/api/node/interfaces/dominantcolorsoptions.md +23 -0
- package/assets/docs/guide/api/node/interfaces/engineactioninfo.md +24 -0
- package/assets/docs/guide/api/node/interfaces/engineactionsregistry.md +18 -0
- package/assets/docs/guide/api/node/interfaces/engineplugin.md +30 -0
- package/assets/docs/guide/api/node/interfaces/font.md +27 -0
- package/assets/docs/guide/api/node/interfaces/fontmetrics.md +32 -0
- package/assets/docs/guide/api/node/interfaces/gradientcolorstop.md +28 -0
- package/assets/docs/guide/api/node/interfaces/logger.md +39 -0
- package/assets/docs/guide/api/node/interfaces/pageduration.md +23 -0
- package/assets/docs/guide/api/node/interfaces/range.md +23 -0
- package/assets/docs/guide/api/node/interfaces/rgbacolor.md +32 -0
- package/assets/docs/guide/api/node/interfaces/rgbcolor.md +30 -0
- package/assets/docs/guide/api/node/interfaces/settings.md +126 -0
- package/assets/docs/guide/api/node/interfaces/size2.md +21 -0
- package/assets/docs/guide/api/node/interfaces/source.md +24 -0
- package/assets/docs/guide/api/node/interfaces/spotcolor.md +30 -0
- package/assets/docs/guide/api/node/interfaces/textdecorationconfig.md +31 -0
- package/assets/docs/guide/api/node/interfaces/textfontsizeoptions.md +24 -0
- package/assets/docs/guide/api/node/interfaces/textruninfo.md +33 -0
- package/assets/docs/guide/api/node/interfaces/transientresource.md +26 -0
- package/assets/docs/guide/api/node/interfaces/typeface.md +23 -0
- package/assets/docs/guide/api/node/interfaces/vec2.md +21 -0
- package/assets/docs/guide/api/node/interfaces/vec3.md +22 -0
- package/assets/docs/guide/api/node/type-aliases/addimageoptions.md +36 -0
- package/assets/docs/guide/api/node/type-aliases/animationbaselinedirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationblockswipetextdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationeasing.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationentry.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/animationgrowdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationjumploopdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationkenburnsdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationmergetextdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationoptions.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/animationspindirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationspinloopdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationtype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/animationtypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/animationtypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationtypewritertextwritingstyle.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationwipedirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/applicationmimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/assetcolor.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/assetfilter.md +47 -0
- package/assets/docs/guide/api/node/type-aliases/assetgroups.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/assetmetadata.md +42 -0
- package/assets/docs/guide/api/node/type-aliases/assetproperty.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/assetpropertyfilter.md +41 -0
- package/assets/docs/guide/api/node/type-aliases/assetpropertypath.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetanimationproperties.md +34 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetproperties.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetpropertyvalue.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetscalableproperty.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/assettransformpreset.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/asyncuriresolver.md +36 -0
- package/assets/docs/guide/api/node/type-aliases/audioexportoptions.md +43 -0
- package/assets/docs/guide/api/node/type-aliases/audiofromvideooptions.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/audiomimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/blendmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/blockenumtype.md +63 -0
- package/assets/docs/guide/api/node/type-aliases/blockstate.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/blurtype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/blurtypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/blurtypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/booleanoperation.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/boolpropertyname.md +79 -0
- package/assets/docs/guide/api/node/type-aliases/cameraclampingovershootmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/captionhorizontalalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/captionverticalalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/cmyk.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/color.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/colorpickercolormode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/colorpropertyname.md +31 -0
- package/assets/docs/guide/api/node/type-aliases/colorspace.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/contentfillmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmomovehandlevisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmoresizehandlesvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmorotatehandlesvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmoscalehandlesvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/createsceneoptions.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/cutoutoperation.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/cutouttype.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/defaultassetsourceid.md +37 -0
- package/assets/docs/guide/api/node/type-aliases/demoassetsourceid.md +33 -0
- package/assets/docs/guide/api/node/type-aliases/designblockid.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/designblocktype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/designblocktypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/designblocktypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/designunit.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/doubleclickselectionmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/doublepropertyname.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/dropshadowoptions.md +32 -0
- package/assets/docs/guide/api/node/type-aliases/editmode.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/effecttype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/effecttypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/effecttypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/engineactionid.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/enginecustomactionfunction.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/engineplugincontext.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/enumpropertyname.md +59 -0
- package/assets/docs/guide/api/node/type-aliases/enumvalues.md +59 -0
- package/assets/docs/guide/api/node/type-aliases/exportoptions.md +57 -0
- package/assets/docs/guide/api/node/type-aliases/fillpixelstreamorientation.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/filltype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/filltypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/filltypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/floatpropertyname.md +184 -0
- package/assets/docs/guide/api/node/type-aliases/fontsizeunit.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/fontstyle.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/fontweight.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/gradientstoprgba.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/heightmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/hexcolorstring.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/historyid.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/historyupdate.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/horizontalblockalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/horizontalcontentfillalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/horizontaltextalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/imagemimetype.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/intpropertyname.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/liststyle.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/locale.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/loglevel.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/mimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/objecttype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/objecttypelonghand.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/objecttypeshorthand.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/optionalprefix.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/pageguidessource.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/palettecolor.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/positionmode.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/positionxmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/positionymode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/propertytype.md +31 -0
- package/assets/docs/guide/api/node/type-aliases/rgba.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/rolestring.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/scenefontsizeunit.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/scenelayout.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/scenemode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/scope.md +50 -0
- package/assets/docs/guide/api/node/type-aliases/settingboolpropertyname.md +62 -0
- package/assets/docs/guide/api/node/type-aliases/settingcolorpropertyname.md +38 -0
- package/assets/docs/guide/api/node/type-aliases/settingenumpropertyname.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/settingenumtype.md +33 -0
- package/assets/docs/guide/api/node/type-aliases/settingenumvalues.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/settingfloatpropertyname.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/settingintpropertyname.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingkey.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/settingsbool.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingscolor.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/settingscolorrgba.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/settingsenum.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingsfloat.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingsint.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingsstring.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingstringpropertyname.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/settingtype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/settingvaluetype.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/shapetype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/shapetypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/shapetypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/shapevectorpathfillrule.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/sizemode.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/sortingorder.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/sourcesetpropertyname.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/splitoptions.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/stringpropertyname.md +43 -0
- package/assets/docs/guide/api/node/type-aliases/strokecap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokecornergeometry.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokedashendcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokedashstartcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokeendcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokeposition.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokestartcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokestyle.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/syncuriresolver.md +31 -0
- package/assets/docs/guide/api/node/type-aliases/textanimationwritingstyle.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/textcase.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/textdecorationline.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/textdecorationstyle.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/textverticalalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/timelinetrackvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/touchpinchaction.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/touchrotateaction.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/typefacedefinition.md +41 -0
- package/assets/docs/guide/api/node/type-aliases/verticalblockalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/verticalcontentfillalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/videoexportoptions.md +54 -0
- package/assets/docs/guide/api/node/type-aliases/videomimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/widthmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/xywh.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/zoomautofitaxis.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/zoomoptions.md +27 -0
- package/assets/docs/guide/api/node/variables/animation_types.md +21 -0
- package/assets/docs/guide/api/node/variables/animationbaselinedirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationblockswipetextdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationeasingvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationgrowdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationjumploopdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationkenburnsdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationmergetextdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationspindirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationspinloopdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationtypewritertextwritingstylevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationwipedirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/blendmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/blur_types.md +21 -0
- package/assets/docs/guide/api/node/variables/cameraclampingovershootmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/captionhorizontalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/captionverticalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/colorpickercolormodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/contentfillmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmomovehandlevisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmoresizehandlesvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmorotatehandlesvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmoscalehandlesvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/cutouttypevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/design_block_types.md +21 -0
- package/assets/docs/guide/api/node/variables/doubleclickselectionmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/effect_types.md +21 -0
- package/assets/docs/guide/api/node/variables/fill_types.md +21 -0
- package/assets/docs/guide/api/node/variables/fillpixelstreamorientationvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/heightmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/horizontalcontentfillalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/loglevel.md +37 -0
- package/assets/docs/guide/api/node/variables/mimetype.md +41 -0
- package/assets/docs/guide/api/node/variables/pageguidessourcevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/positionxmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/positionymodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenedesignunitvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenefontsizeunitvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenelayoutvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenemodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/shape_types.md +21 -0
- package/assets/docs/guide/api/node/variables/shapevectorpathfillrulevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokecapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokecornergeometryvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokedashendcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokedashstartcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokeendcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokepositionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokestartcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokestylevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/textanimationwritingstylevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/texthorizontalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/textverticalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/timelinetrackvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/touchpinchactionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/touchrotateactionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/verticalcontentfillalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/widthmodevalues.md +18 -0
- package/assets/docs/guide/api/types.md +5 -9
- package/assets/docs/guide/api-reference/overview.md +7 -7
- package/assets/docs/guide/automation/auto-resize.md +263 -300
- package/assets/docs/guide/automation/data-merge.md +246 -275
- package/assets/docs/guide/automation/design-generation.md +102 -31
- package/assets/docs/guide/automation/multi-image-generation.md +758 -0
- package/assets/docs/guide/automation/overview.md +21 -4
- package/assets/docs/guide/automation.md +10 -5
- package/assets/docs/guide/capabilities.md +6 -4
- package/assets/docs/guide/colors/adjust.md +247 -249
- package/assets/docs/guide/colors/apply.md +127 -138
- package/assets/docs/guide/colors/basics.md +126 -150
- package/assets/docs/guide/colors/conversion.md +171 -177
- package/assets/docs/guide/colors/create-color-palette.md +244 -245
- package/assets/docs/guide/colors/extract-colors.md +144 -0
- package/assets/docs/guide/colors/for-print/cmyk.md +292 -352
- package/assets/docs/guide/colors/for-print/spot.md +521 -578
- package/assets/docs/guide/colors/for-print.md +9 -4
- package/assets/docs/guide/colors/for-screen/p3.md +12 -10
- package/assets/docs/guide/colors/for-screen/srgb.md +107 -133
- package/assets/docs/guide/colors/for-screen.md +9 -4
- package/assets/docs/guide/colors/overview.md +6 -4
- package/assets/docs/guide/colors/replace.md +381 -419
- package/assets/docs/guide/colors.md +9 -4
- package/assets/docs/guide/compatibility.md +7 -5
- package/assets/docs/guide/concepts/architecture.md +17 -15
- package/assets/docs/guide/concepts/assets.md +152 -140
- package/assets/docs/guide/concepts/blocks.md +227 -323
- package/assets/docs/guide/concepts/buffers.md +147 -276
- package/assets/docs/guide/concepts/design-units.md +95 -145
- package/assets/docs/guide/concepts/editing-workflow.md +69 -183
- package/assets/docs/guide/concepts/events.md +80 -122
- package/assets/docs/guide/concepts/headless-mode.md +237 -0
- package/assets/docs/guide/concepts/pages.md +137 -127
- package/assets/docs/guide/concepts/resources.md +156 -217
- package/assets/docs/guide/concepts/scenes.md +191 -210
- package/assets/docs/guide/concepts/templating.md +118 -74
- package/assets/docs/guide/concepts/terminology.md +49 -47
- package/assets/docs/guide/concepts/undo-and-history.md +229 -303
- package/assets/docs/guide/concepts.md +9 -7
- package/assets/docs/guide/configuration.md +252 -380
- package/assets/docs/guide/conversion/overview.md +33 -4
- package/assets/docs/guide/conversion/to-base64.md +127 -167
- package/assets/docs/guide/conversion/to-pdf.md +24 -474
- package/assets/docs/guide/conversion/to-png.md +168 -211
- package/assets/docs/guide/conversion.md +9 -4
- package/assets/docs/guide/create-audio/audio/add-music.md +301 -327
- package/assets/docs/guide/create-audio/audio/add-sound-effects.md +475 -359
- package/assets/docs/guide/create-audio/audio/loop.md +232 -272
- package/assets/docs/guide/create-composition/add-background.md +237 -239
- package/assets/docs/guide/create-composition/blend-modes.md +118 -209
- package/assets/docs/guide/create-composition/collage.md +538 -320
- package/assets/docs/guide/create-composition/group-and-ungroup.md +216 -261
- package/assets/docs/guide/create-composition/layer-management.md +219 -257
- package/assets/docs/guide/create-composition/layout.md +513 -315
- package/assets/docs/guide/create-composition/lock-design.md +90 -109
- package/assets/docs/guide/create-composition/multi-page.md +133 -113
- package/assets/docs/guide/create-composition/overview.md +16 -4
- package/assets/docs/guide/create-composition/programmatic.md +288 -344
- package/assets/docs/guide/create-composition.md +10 -5
- package/assets/docs/guide/create-templates/add-dynamic-content/placeholders.md +443 -569
- package/assets/docs/guide/create-templates/add-dynamic-content/set-editing-constraints.md +567 -470
- package/assets/docs/guide/create-templates/add-dynamic-content/text-variables.md +179 -516
- package/assets/docs/guide/create-templates/add-dynamic-content.md +226 -224
- package/assets/docs/guide/create-templates/add-to-template-library.md +183 -193
- package/assets/docs/guide/create-templates/edit-or-remove.md +297 -303
- package/assets/docs/guide/create-templates/from-scratch.md +207 -268
- package/assets/docs/guide/create-templates/import/from-scene-file.md +158 -236
- package/assets/docs/guide/create-templates/import.md +145 -161
- package/assets/docs/guide/create-templates/lock.md +42 -295
- package/assets/docs/guide/create-templates/overview.md +33 -4
- package/assets/docs/guide/create-templates.md +9 -5
- package/assets/docs/guide/create-video/audio/adjust-speed.md +157 -207
- package/assets/docs/guide/create-video/audio/adjust-volume.md +116 -227
- package/assets/docs/guide/create-video/control.md +352 -193
- package/assets/docs/guide/create-video/limitations.md +175 -280
- package/assets/docs/guide/create-video.md +11 -10
- package/assets/docs/guide/edit-image/add-watermark.md +283 -330
- package/assets/docs/guide/edit-image/overview.md +29 -4
- package/assets/docs/guide/edit-image/remove-bg.md +283 -337
- package/assets/docs/guide/edit-image/replace-colors.md +424 -502
- package/assets/docs/guide/edit-image/transform/crop.md +463 -402
- package/assets/docs/guide/edit-image/transform/flip.md +353 -0
- package/assets/docs/guide/edit-image/transform/move.md +143 -100
- package/assets/docs/guide/edit-image/transform/resize.md +118 -88
- package/assets/docs/guide/edit-image/transform/rotate.md +132 -165
- package/assets/docs/guide/edit-image/transform/scale.md +230 -228
- package/assets/docs/guide/edit-image/transform.md +10 -5
- package/assets/docs/guide/edit-image.md +11 -7
- package/assets/docs/guide/edit-video/add-captions.md +344 -421
- package/assets/docs/guide/edit-video/add-watermark.md +312 -258
- package/assets/docs/guide/edit-video/join-and-arrange.md +237 -371
- package/assets/docs/guide/edit-video/redaction.md +419 -385
- package/assets/docs/guide/edit-video/split.md +243 -493
- package/assets/docs/guide/edit-video/transform/crop.md +21 -352
- package/assets/docs/guide/edit-video/transform/flip.md +102 -76
- package/assets/docs/guide/edit-video/transform/move.md +258 -310
- package/assets/docs/guide/edit-video/transform/resize.md +264 -428
- package/assets/docs/guide/edit-video/transform/rotate.md +265 -228
- package/assets/docs/guide/edit-video/transform/scale.md +320 -417
- package/assets/docs/guide/edit-video/transform.md +10 -6
- package/assets/docs/guide/edit-video/trim.md +448 -494
- package/assets/docs/guide/engine-interface.md +51 -62
- package/assets/docs/guide/export-save-publish/create-thumbnail.md +148 -184
- package/assets/docs/guide/export-save-publish/export/compress.md +161 -559
- package/assets/docs/guide/export-save-publish/export/overview.md +224 -373
- package/assets/docs/guide/export-save-publish/export/partial-export.md +386 -577
- package/assets/docs/guide/export-save-publish/export/size-limits.md +215 -310
- package/assets/docs/guide/export-save-publish/export/to-jpeg.md +132 -213
- package/assets/docs/guide/export-save-publish/export/to-pdf.md +139 -267
- package/assets/docs/guide/export-save-publish/export/to-png.md +121 -165
- package/assets/docs/guide/export-save-publish/export/to-raw-data.md +187 -234
- package/assets/docs/guide/export-save-publish/export/to-webp.md +160 -190
- package/assets/docs/guide/export-save-publish/export/with-color-mask.md +359 -203
- package/assets/docs/guide/export-save-publish/export.md +14 -11
- package/assets/docs/guide/export-save-publish/for-printing.md +141 -237
- package/assets/docs/guide/export-save-publish/for-social-media.md +124 -261
- package/assets/docs/guide/export-save-publish/pre-export-validation.md +436 -522
- package/assets/docs/guide/export-save-publish/save.md +167 -226
- package/assets/docs/guide/export-save-publish/store-custom-metadata.md +97 -162
- package/assets/docs/guide/file-format-support.md +9 -9
- package/assets/docs/guide/fills/color.md +370 -347
- package/assets/docs/guide/fills/image.md +167 -196
- package/assets/docs/guide/fills/overview.md +6 -4
- package/assets/docs/guide/fills/video.md +286 -438
- package/assets/docs/guide/fills.md +12 -8
- package/assets/docs/guide/filters-and-effects/apply.md +598 -664
- package/assets/docs/guide/filters-and-effects/blur.md +261 -159
- package/assets/docs/guide/filters-and-effects/chroma-key-green-screen.md +194 -293
- package/assets/docs/guide/filters-and-effects/create-custom-filters.md +548 -466
- package/assets/docs/guide/filters-and-effects/create-custom-lut-filter.md +176 -244
- package/assets/docs/guide/filters-and-effects/distortion.md +317 -384
- package/assets/docs/guide/filters-and-effects/duotone.md +221 -217
- package/assets/docs/guide/filters-and-effects/gradients.md +670 -813
- package/assets/docs/guide/filters-and-effects/overview.md +7 -7
- package/assets/docs/guide/filters-and-effects/support.md +97 -132
- package/assets/docs/guide/filters-and-effects.md +11 -6
- package/assets/docs/guide/get-started/agent-skills.md +20 -18
- package/assets/docs/guide/get-started/build-with-ai.md +7 -4
- package/assets/docs/guide/get-started/bun.md +219 -0
- package/assets/docs/guide/get-started/deno.md +161 -0
- package/assets/docs/guide/get-started/mcp-server.md +6 -4
- package/assets/docs/guide/get-started/overview.md +11 -6
- package/assets/docs/guide/get-started/vanilla-aws-lambda.md +506 -0
- package/assets/docs/guide/get-started/vanilla-clone-github-project.md +124 -0
- package/assets/docs/guide/get-started/vanilla.md +235 -0
- package/assets/docs/guide/guides/export-save-publish/export/audio.md +80 -66
- package/assets/docs/guide/guides.md +10 -9
- package/assets/docs/guide/import-media/asset-panel/refresh-assets.md +259 -288
- package/assets/docs/guide/import-media/concepts.md +20 -38
- package/assets/docs/guide/import-media/content-json-schema.md +145 -125
- package/assets/docs/guide/import-media/default-assets.md +113 -161
- package/assets/docs/guide/import-media/edit-or-remove-assets.md +391 -395
- package/assets/docs/guide/import-media/file-format-support.md +78 -61
- package/assets/docs/guide/import-media/from-remote-source/asset-versioning.md +273 -244
- package/assets/docs/guide/import-media/from-remote-source/remote-asset.md +152 -222
- package/assets/docs/guide/import-media/from-remote-source.md +9 -11
- package/assets/docs/guide/import-media/overview.md +5 -5
- package/assets/docs/guide/import-media/retrieve-mimetype.md +216 -108
- package/assets/docs/guide/import-media/size-limits.md +6 -4
- package/assets/docs/guide/import-media/source-sets.md +190 -251
- package/assets/docs/guide/import-media.md +10 -8
- package/assets/docs/guide/insert-media/audio.md +202 -195
- package/assets/docs/guide/insert-media/images.md +190 -188
- package/assets/docs/guide/insert-media/position-and-align.md +284 -551
- package/assets/docs/guide/insert-media/shapes-or-stickers.md +402 -418
- package/assets/docs/guide/insert-media/videos.md +236 -203
- package/assets/docs/guide/insert-media.md +10 -5
- package/assets/docs/guide/key-capabilities.md +36 -4
- package/assets/docs/guide/key-concepts.md +6 -4
- package/assets/docs/guide/licensing.md +6 -4
- package/assets/docs/guide/llms-txt.md +11 -7
- package/assets/docs/guide/open-the-editor/blank-canvas.md +102 -63
- package/assets/docs/guide/open-the-editor/from-image.md +157 -127
- package/assets/docs/guide/open-the-editor/from-template.md +131 -92
- package/assets/docs/guide/open-the-editor/from-video.md +204 -212
- package/assets/docs/guide/open-the-editor/import-design/from-archive.md +310 -360
- package/assets/docs/guide/open-the-editor/import-design/from-indesign.md +716 -513
- package/assets/docs/guide/open-the-editor/import-design/from-photoshop.md +667 -695
- package/assets/docs/guide/open-the-editor/import-design.md +228 -266
- package/assets/docs/guide/open-the-editor/load-scene.md +72 -68
- package/assets/docs/guide/open-the-editor/overview.md +6 -4
- package/assets/docs/guide/open-the-editor/uri-resolver.md +160 -251
- package/assets/docs/guide/open-the-editor.md +11 -9
- package/assets/docs/guide/outlines/overview.md +12 -4
- package/assets/docs/guide/outlines/shadows-and-glows.md +105 -410
- package/assets/docs/guide/outlines/strokes.md +218 -166
- package/assets/docs/guide/outlines.md +9 -4
- package/assets/docs/guide/overview.md +14 -6
- package/assets/docs/guide/performance.md +220 -113
- package/assets/docs/guide/plugins/print-ready-pdf.md +273 -368
- package/assets/docs/guide/plugins.md +10 -16
- package/assets/docs/guide/rules/asset-handling.md +7 -18
- package/assets/docs/guide/rules/common-pitfalls.md +25 -42
- package/assets/docs/guide/rules/content-fill-mode.md +4 -4
- package/assets/docs/guide/rules/enforce-brand-guidelines.md +398 -567
- package/assets/docs/guide/rules/lock-content.md +188 -231
- package/assets/docs/guide/rules/moderate-content.md +580 -571
- package/assets/docs/guide/rules/overview.md +345 -380
- package/assets/docs/guide/rules/silent-init-errors.md +4 -1
- package/assets/docs/guide/rules/verify-properties-before-use.md +2 -11
- package/assets/docs/guide/rules.md +10 -5
- package/assets/docs/guide/security.md +7 -5
- package/assets/docs/guide/serve-assets.md +57 -284
- package/assets/docs/guide/settings.md +96 -74
- package/assets/docs/guide/shapes.md +10 -5
- package/assets/docs/guide/stickers-and-shapes/combine.md +397 -583
- package/assets/docs/guide/stickers-and-shapes/create-cutout.md +181 -268
- package/assets/docs/guide/stickers-and-shapes/create-edit/create-shapes.md +418 -431
- package/assets/docs/guide/stickers-and-shapes/create-edit/create-stickers.md +147 -226
- package/assets/docs/guide/stickers-and-shapes/create-edit/edit-shapes.md +138 -123
- package/assets/docs/guide/stickers-and-shapes/insert-qr-code.md +151 -149
- package/assets/docs/guide/stickers.md +9 -4
- package/assets/docs/guide/text/add.md +470 -482
- package/assets/docs/guide/text/adjust-spacing.md +179 -214
- package/assets/docs/guide/text/auto-size.md +210 -271
- package/assets/docs/guide/text/edit.md +294 -309
- package/assets/docs/guide/text/effects.md +154 -190
- package/assets/docs/guide/text/emojis.md +199 -232
- package/assets/docs/guide/text/language-support.md +369 -382
- package/assets/docs/guide/text/overview.md +41 -4
- package/assets/docs/guide/text/styling.md +239 -273
- package/assets/docs/guide/text/text-designs.md +405 -544
- package/assets/docs/guide/text.md +10 -9
- package/assets/docs/guide/to-v1-19.md +12 -10
- package/assets/docs/guide/upgrade.md +8 -9
- package/assets/docs/guide/use-templates/apply-template.md +174 -163
- package/assets/docs/guide/use-templates/generate.md +171 -152
- package/assets/docs/guide/use-templates/overview.md +32 -4
- package/assets/docs/guide/use-templates/programmatic.md +266 -301
- package/assets/docs/guide/use-templates/replace-content.md +181 -171
- package/assets/docs/guide/what-is-cesdk.md +71 -282
- package/assets/docs/handbook/SKILL.md +24 -0
- package/dist/assets/inline.generated.d.ts.map +1 -1
- package/dist/assets/inline.generated.js +544 -406
- package/dist/assets/inline.generated.js.map +1 -1
- package/dist/assets/load-browser.d.ts +1 -1
- package/dist/assets/load-browser.js +1 -1
- package/dist/assets/load-browser.js.map +1 -1
- package/dist/assets/load-node.d.ts +1 -1
- package/dist/assets/load-node.js +1 -1
- package/dist/assets/load-node.js.map +1 -1
- package/dist/cli/http.d.ts.map +1 -1
- package/dist/cli/http.js +4 -28
- package/dist/cli/http.js.map +1 -1
- package/dist/cli/redirect-console.d.ts +1 -1
- package/dist/cli/redirect-console.d.ts.map +1 -1
- package/dist/cli/redirect-console.js +12 -3
- package/dist/cli/redirect-console.js.map +1 -1
- package/dist/cli/resolve-license.d.ts.map +1 -1
- package/dist/cli/resolve-license.js +8 -6
- package/dist/cli/resolve-license.js.map +1 -1
- package/dist/cli/stdio.d.ts +9 -0
- package/dist/cli/stdio.d.ts.map +1 -1
- package/dist/cli/stdio.js +48 -4
- package/dist/cli/stdio.js.map +1 -1
- package/dist/cli.js +10 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +11 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -1
- package/dist/config.js.map +1 -1
- package/dist/diagnostics/bundle.d.ts +10 -0
- package/dist/diagnostics/bundle.d.ts.map +1 -0
- package/dist/diagnostics/bundle.js +148 -0
- package/dist/diagnostics/bundle.js.map +1 -0
- package/dist/diagnostics/compose.d.ts +3 -0
- package/dist/diagnostics/compose.d.ts.map +1 -0
- package/dist/diagnostics/compose.js +15 -0
- package/dist/diagnostics/compose.js.map +1 -0
- package/dist/diagnostics/events.d.ts +34 -0
- package/dist/diagnostics/events.d.ts.map +1 -0
- package/dist/diagnostics/events.js +3 -0
- package/dist/diagnostics/events.js.map +1 -0
- package/dist/diagnostics/file-sink.d.ts +38 -0
- package/dist/diagnostics/file-sink.d.ts.map +1 -0
- package/dist/diagnostics/file-sink.js +157 -0
- package/dist/diagnostics/file-sink.js.map +1 -0
- package/dist/diagnostics/redact.d.ts +7 -0
- package/dist/diagnostics/redact.d.ts.map +1 -0
- package/dist/diagnostics/redact.js +43 -0
- package/dist/diagnostics/redact.js.map +1 -0
- package/dist/diagnostics/tool-call-adapter.d.ts +4 -0
- package/dist/diagnostics/tool-call-adapter.d.ts.map +1 -0
- package/dist/diagnostics/tool-call-adapter.js +21 -0
- package/dist/diagnostics/tool-call-adapter.js.map +1 -0
- package/dist/engine/cesdk-adapter.d.ts +5 -1
- package/dist/engine/cesdk-adapter.d.ts.map +1 -1
- package/dist/engine/cesdk-adapter.js +9 -2
- package/dist/engine/cesdk-adapter.js.map +1 -1
- package/dist/engine/index.d.ts +1 -0
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +4 -0
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/scene-resource-schemes.d.ts +2 -0
- package/dist/engine/scene-resource-schemes.d.ts.map +1 -0
- package/dist/engine/scene-resource-schemes.js +20 -0
- package/dist/engine/scene-resource-schemes.js.map +1 -0
- package/dist/http/server.d.ts +0 -6
- package/dist/http/server.d.ts.map +1 -1
- package/dist/http/server.js +1 -2
- package/dist/http/server.js.map +1 -1
- package/dist/server.d.ts +0 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -60
- package/dist/server.js.map +1 -1
- package/dist/test/scripts/changelog-add.d.ts +8 -0
- package/dist/test/scripts/changelog-add.d.ts.map +1 -0
- package/dist/test/scripts/changelog-add.js +50 -0
- package/dist/test/scripts/changelog-add.js.map +1 -0
- package/dist/test/scripts/changelog-collate.d.ts +38 -0
- package/dist/test/scripts/changelog-collate.d.ts.map +1 -0
- package/dist/test/scripts/changelog-collate.js +171 -0
- package/dist/test/scripts/changelog-collate.js.map +1 -0
- package/dist/test/test/changelog.test.d.ts +2 -0
- package/dist/test/test/changelog.test.d.ts.map +1 -0
- package/dist/test/test/changelog.test.js +293 -0
- package/dist/test/test/changelog.test.js.map +1 -0
- package/dist/test/test/cli/dispatcher.test.js +10 -3
- package/dist/test/test/cli/dispatcher.test.js.map +1 -1
- package/dist/test/test/cli/redirect-console.test.js +31 -0
- package/dist/test/test/cli/redirect-console.test.js.map +1 -1
- package/dist/test/test/cli/resolve-license.test.js +10 -1
- package/dist/test/test/cli/resolve-license.test.js.map +1 -1
- package/dist/test/test/cli/stdio-diagnostics.test.d.ts +2 -0
- package/dist/test/test/cli/stdio-diagnostics.test.d.ts.map +1 -0
- package/dist/test/test/cli/stdio-diagnostics.test.js +31 -0
- package/dist/test/test/cli/stdio-diagnostics.test.js.map +1 -0
- package/dist/test/test/config.test.js +17 -13
- package/dist/test/test/config.test.js.map +1 -1
- package/dist/test/test/diagnostics/bundle.test.d.ts +2 -0
- package/dist/test/test/diagnostics/bundle.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/bundle.test.js +53 -0
- package/dist/test/test/diagnostics/bundle.test.js.map +1 -0
- package/dist/test/test/diagnostics/compose.test.d.ts +2 -0
- package/dist/test/test/diagnostics/compose.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/compose.test.js +31 -0
- package/dist/test/test/diagnostics/compose.test.js.map +1 -0
- package/dist/test/test/diagnostics/file-sink.test.d.ts +2 -0
- package/dist/test/test/diagnostics/file-sink.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/file-sink.test.js +113 -0
- package/dist/test/test/diagnostics/file-sink.test.js.map +1 -0
- package/dist/test/test/diagnostics/redact.test.d.ts +2 -0
- package/dist/test/test/diagnostics/redact.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/redact.test.js +59 -0
- package/dist/test/test/diagnostics/redact.test.js.map +1 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.d.ts +2 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.js +34 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.js.map +1 -0
- package/dist/test/test/engine/cesdk-adapter.test.d.ts +2 -0
- package/dist/test/test/engine/cesdk-adapter.test.d.ts.map +1 -0
- package/dist/test/test/engine/cesdk-adapter.test.js +32 -0
- package/dist/test/test/engine/cesdk-adapter.test.js.map +1 -0
- package/dist/test/test/handbook-contract.test.js +6 -2
- package/dist/test/test/handbook-contract.test.js.map +1 -1
- package/dist/test/test/http/server.test.js +0 -36
- package/dist/test/test/http/server.test.js.map +1 -1
- package/dist/test/test/http/workspace-auth.test.js +0 -1
- package/dist/test/test/http/workspace-auth.test.js.map +1 -1
- package/dist/test/test/server.test.js +0 -40
- package/dist/test/test/server.test.js.map +1 -1
- package/dist/test/test/tools/edit-harness.d.ts +14 -0
- package/dist/test/test/tools/edit-harness.d.ts.map +1 -0
- package/dist/test/test/tools/edit-harness.js +30 -0
- package/dist/test/test/tools/edit-harness.js.map +1 -0
- package/dist/test/test/tools/edit.telemetry.test.d.ts +2 -0
- package/dist/test/test/tools/edit.telemetry.test.d.ts.map +1 -0
- package/dist/test/test/tools/edit.telemetry.test.js +46 -0
- package/dist/test/test/tools/edit.telemetry.test.js.map +1 -0
- package/dist/test/test/tools/export-harness.d.ts +13 -0
- package/dist/test/test/tools/export-harness.d.ts.map +1 -0
- package/dist/test/test/tools/export-harness.js +27 -0
- package/dist/test/test/tools/export-harness.js.map +1 -0
- package/dist/test/test/tools/export.telemetry.test.d.ts +2 -0
- package/dist/test/test/tools/export.telemetry.test.d.ts.map +1 -0
- package/dist/test/test/tools/export.telemetry.test.js +65 -0
- package/dist/test/test/tools/export.telemetry.test.js.map +1 -0
- package/dist/test/test/tools/import.test.d.ts +2 -0
- package/dist/test/test/tools/import.test.d.ts.map +1 -0
- package/dist/test/test/tools/import.test.js +122 -0
- package/dist/test/test/tools/import.test.js.map +1 -0
- package/dist/test/test/tools/index.test.js +78 -16
- package/dist/test/test/tools/index.test.js.map +1 -1
- package/dist/test/test/tools/load.integration.test.d.ts +2 -0
- package/dist/test/test/tools/load.integration.test.d.ts.map +1 -0
- package/dist/test/test/tools/load.integration.test.js +165 -0
- package/dist/test/test/tools/load.integration.test.js.map +1 -0
- package/dist/test/test/tools/load.test.d.ts +2 -0
- package/dist/test/test/tools/load.test.d.ts.map +1 -0
- package/dist/test/test/tools/load.test.js +387 -0
- package/dist/test/test/tools/load.test.js.map +1 -0
- package/dist/test/test/tools/preview-harness.d.ts +9 -0
- package/dist/test/test/tools/preview-harness.d.ts.map +1 -0
- package/dist/test/test/tools/preview-harness.js +23 -0
- package/dist/test/test/tools/preview-harness.js.map +1 -0
- package/dist/test/test/tools/preview.telemetry.test.d.ts +2 -0
- package/dist/test/test/tools/preview.telemetry.test.d.ts.map +1 -0
- package/dist/test/test/tools/preview.telemetry.test.js +36 -0
- package/dist/test/test/tools/preview.telemetry.test.js.map +1 -0
- package/dist/test/test/tools/schema-best-practices.d.ts +13 -0
- package/dist/test/test/tools/schema-best-practices.d.ts.map +1 -0
- package/dist/test/test/tools/schema-best-practices.js +169 -0
- package/dist/test/test/tools/schema-best-practices.js.map +1 -0
- package/dist/test/test/tools/schema-best-practices.test.d.ts +3 -0
- package/dist/test/test/tools/schema-best-practices.test.d.ts.map +1 -0
- package/dist/test/test/tools/schema-best-practices.test.js +194 -0
- package/dist/test/test/tools/schema-best-practices.test.js.map +1 -0
- package/dist/test/test/tools/spans.test.d.ts +2 -0
- package/dist/test/test/tools/spans.test.d.ts.map +1 -0
- package/dist/test/test/tools/spans.test.js +84 -0
- package/dist/test/test/tools/spans.test.js.map +1 -0
- package/dist/test/test/viewer/cesdk-cdn.test.d.ts +2 -0
- package/dist/test/test/viewer/cesdk-cdn.test.d.ts.map +1 -0
- package/dist/test/test/viewer/cesdk-cdn.test.js +19 -0
- package/dist/test/test/viewer/cesdk-cdn.test.js.map +1 -0
- package/dist/test/test/viewer/config-route.test.d.ts +2 -0
- package/dist/test/test/viewer/config-route.test.d.ts.map +1 -0
- package/dist/test/test/viewer/config-route.test.js +28 -0
- package/dist/test/test/viewer/config-route.test.js.map +1 -0
- package/dist/test/test/viewer/spa-version.test.d.ts +2 -0
- package/dist/test/test/viewer/spa-version.test.d.ts.map +1 -0
- package/dist/test/test/viewer/spa-version.test.js +14 -0
- package/dist/test/test/viewer/spa-version.test.js.map +1 -0
- package/dist/test/test/workspace/content-hash.test.d.ts +2 -0
- package/dist/test/test/workspace/content-hash.test.d.ts.map +1 -0
- package/dist/test/test/workspace/content-hash.test.js +17 -0
- package/dist/test/test/workspace/content-hash.test.js.map +1 -0
- package/dist/test/tsconfig.test.tsbuildinfo +1 -1
- package/dist/test/vitest.config.js +1 -1
- package/dist/test/vitest.config.js.map +1 -1
- package/dist/tools/asset-generate.d.ts.map +1 -1
- package/dist/tools/asset-generate.js +1 -8
- package/dist/tools/asset-generate.js.map +1 -1
- package/dist/tools/edit.d.ts +3 -0
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +145 -96
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/export.d.ts +3 -0
- package/dist/tools/export.d.ts.map +1 -1
- package/dist/tools/export.js +146 -108
- package/dist/tools/export.js.map +1 -1
- package/dist/tools/import.d.ts +12 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +144 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +44 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/load.d.ts +26 -0
- package/dist/tools/load.d.ts.map +1 -0
- package/dist/tools/load.js +400 -0
- package/dist/tools/load.js.map +1 -0
- package/dist/tools/preview.d.ts +3 -0
- package/dist/tools/preview.d.ts.map +1 -1
- package/dist/tools/preview.js +79 -44
- package/dist/tools/preview.js.map +1 -1
- package/dist/tools/result.d.ts +1 -1
- package/dist/tools/result.js +2 -2
- package/dist/tools/result.js.map +1 -1
- package/dist/tools/spans.d.ts +45 -0
- package/dist/tools/spans.d.ts.map +1 -0
- package/dist/tools/spans.js +77 -0
- package/dist/tools/spans.js.map +1 -0
- package/dist/tools/telemetry-wrapper.d.ts +4 -0
- package/dist/tools/telemetry-wrapper.d.ts.map +1 -0
- package/dist/tools/telemetry-wrapper.js +43 -0
- package/dist/tools/telemetry-wrapper.js.map +1 -0
- package/dist/viewer/cesdk-cdn.d.ts +16 -0
- package/dist/viewer/cesdk-cdn.d.ts.map +1 -0
- package/dist/viewer/cesdk-cdn.js +30 -0
- package/dist/viewer/cesdk-cdn.js.map +1 -0
- package/dist/viewer/router.d.ts +6 -0
- package/dist/viewer/router.d.ts.map +1 -1
- package/dist/viewer/router.js +4 -1
- package/dist/viewer/router.js.map +1 -1
- package/dist/viewer/spa-assets.generated.d.ts.map +1 -1
- package/dist/viewer/spa-assets.generated.js +2 -3
- package/dist/viewer/spa-assets.generated.js.map +1 -1
- package/dist/workspace/content-hash.d.ts +2 -0
- package/dist/workspace/content-hash.d.ts.map +1 -0
- package/dist/workspace/content-hash.js +15 -0
- package/dist/workspace/content-hash.js.map +1 -0
- package/package.json +18 -9
- package/assets/docs/guide/actions.md +0 -1038
- package/assets/docs/guide/animation/overview.md +0 -22
- package/assets/docs/guide/automation/batch-processing.md +0 -474
- package/assets/docs/guide/browser-support.md +0 -38
- package/assets/docs/guide/concepts/edit-modes.md +0 -431
- package/assets/docs/guide/concepts/headless-mode/browser.md +0 -291
- package/assets/docs/guide/create-audio/audio.md +0 -336
- package/assets/docs/guide/create-video/overview.md +0 -224
- package/assets/docs/guide/create-video/timeline-editor.md +0 -622
- package/assets/docs/guide/create-video/update-caption-presets.md +0 -676
- package/assets/docs/guide/edit-image/vectorize.md +0 -204
- package/assets/docs/guide/export-save-publish/export/to-html5.md +0 -474
- package/assets/docs/guide/export-save-publish/export/to-mp4.md +0 -364
- package/assets/docs/guide/get-started/vanilla-js/quickstart.md +0 -175
- package/assets/docs/guide/grid-and-rulers.md +0 -222
- package/assets/docs/guide/guides/text/rendering-internals.md +0 -796
- package/assets/docs/guide/import-media/asset-library.md +0 -23
- package/assets/docs/guide/import-media/asset-panel/basics.md +0 -324
- package/assets/docs/guide/import-media/asset-panel/customize.md +0 -478
- package/assets/docs/guide/import-media/asset-panel/thumbnails.md +0 -633
- package/assets/docs/guide/import-media/capture-from-camera/record-video.md +0 -137
- package/assets/docs/guide/import-media/capture-from-camera.md +0 -20
- package/assets/docs/guide/import-media/from-local-source/user-upload.md +0 -438
- package/assets/docs/guide/import-media/from-local-source.md +0 -20
- package/assets/docs/guide/import-media/from-remote-source/getty-images.md +0 -627
- package/assets/docs/guide/import-media/from-remote-source/imgly-premium-assets.md +0 -625
- package/assets/docs/guide/import-media/from-remote-source/pexels.md +0 -692
- package/assets/docs/guide/import-media/from-remote-source/soundstripe.md +0 -497
- package/assets/docs/guide/import-media/from-remote-source/third-party.md +0 -51
- package/assets/docs/guide/import-media/from-remote-source/unsplash.md +0 -914
- package/assets/docs/guide/import-media/from-remote-source/your-server.md +0 -764
- package/assets/docs/guide/open-the-editor/from-htmlcanvas.md +0 -228
- package/assets/docs/guide/open-the-editor/set-zoom-level.md +0 -303
- package/assets/docs/guide/plugins/asset-sources.md +0 -553
- package/assets/docs/guide/starterkits/3d-mockup-editor.md +0 -748
- package/assets/docs/guide/starterkits/advanced-editor.md +0 -698
- package/assets/docs/guide/starterkits/advanced-video-editor.md +0 -696
- package/assets/docs/guide/starterkits/ai-editor.md +0 -749
- package/assets/docs/guide/starterkits/airtable-image-editor.md +0 -672
- package/assets/docs/guide/starterkits/apparel-ui.md +0 -188
- package/assets/docs/guide/starterkits/assets.md +0 -27
- package/assets/docs/guide/starterkits/auto-resize.md +0 -586
- package/assets/docs/guide/starterkits/automated-video-generation.md +0 -692
- package/assets/docs/guide/starterkits/background-removal-editor.md +0 -480
- package/assets/docs/guide/starterkits/content-moderation.md +0 -863
- package/assets/docs/guide/starterkits/creative-automation.md +0 -28
- package/assets/docs/guide/starterkits/custom-built-uis.md +0 -26
- package/assets/docs/guide/starterkits/customization.md +0 -29
- package/assets/docs/guide/starterkits/cutout-lines-editor.md +0 -470
- package/assets/docs/guide/starterkits/data-merge.md +0 -850
- package/assets/docs/guide/starterkits/design-editor.md +0 -698
- package/assets/docs/guide/starterkits/design-generation.md +0 -719
- package/assets/docs/guide/starterkits/design-validation.md +0 -808
- package/assets/docs/guide/starterkits/editor-ui-configurations.md +0 -14
- package/assets/docs/guide/starterkits/export-options.md +0 -724
- package/assets/docs/guide/starterkits/export-using-renderer.md +0 -708
- package/assets/docs/guide/starterkits/extensibility.md +0 -28
- package/assets/docs/guide/starterkits/force-crop-editor.md +0 -675
- package/assets/docs/guide/starterkits/form-based-template-adoption.md +0 -522
- package/assets/docs/guide/starterkits/getty-images-editor.md +0 -700
- package/assets/docs/guide/starterkits/html5-ads-exporter.md +0 -719
- package/assets/docs/guide/starterkits/indesign-template-import.md +0 -580
- package/assets/docs/guide/starterkits/layouts-editor.md +0 -724
- package/assets/docs/guide/starterkits/mobile-ui.md +0 -185
- package/assets/docs/guide/starterkits/mockup-editor.md +0 -745
- package/assets/docs/guide/starterkits/multi-image-generation.md +0 -542
- package/assets/docs/guide/starterkits/page-sizes-editor.md +0 -657
- package/assets/docs/guide/starterkits/pexels-image-editor.md +0 -665
- package/assets/docs/guide/starterkits/photo-editor.md +0 -755
- package/assets/docs/guide/starterkits/photo-ui.md +0 -186
- package/assets/docs/guide/starterkits/photobook-ui.md +0 -188
- package/assets/docs/guide/starterkits/placeholders.md +0 -678
- package/assets/docs/guide/starterkits/player.md +0 -405
- package/assets/docs/guide/starterkits/plugins.md +0 -25
- package/assets/docs/guide/starterkits/postcard-editor.md +0 -202
- package/assets/docs/guide/starterkits/pptx-template-import.md +0 -581
- package/assets/docs/guide/starterkits/print-ready-pdf-editor.md +0 -746
- package/assets/docs/guide/starterkits/product-editor.md +0 -773
- package/assets/docs/guide/starterkits/psd-template-import.md +0 -580
- package/assets/docs/guide/starterkits/qr-code-editor.md +0 -470
- package/assets/docs/guide/starterkits/single-page-editor.md +0 -661
- package/assets/docs/guide/starterkits/start-with-image.md +0 -684
- package/assets/docs/guide/starterkits/start-with-video.md +0 -651
- package/assets/docs/guide/starterkits/t-shirt-designer.md +0 -742
- package/assets/docs/guide/starterkits/templating.md +0 -23
- package/assets/docs/guide/starterkits/theming.md +0 -662
- package/assets/docs/guide/starterkits/translation-internationalization.md +0 -662
- package/assets/docs/guide/starterkits/unsplash-editor.md +0 -839
- package/assets/docs/guide/starterkits/vectorizer-editor.md +0 -466
- package/assets/docs/guide/starterkits/version-history.md +0 -745
- package/assets/docs/guide/starterkits/video-animations.md +0 -853
- package/assets/docs/guide/starterkits/video-captions.md +0 -884
- package/assets/docs/guide/starterkits/video-editing.md +0 -25
- package/assets/docs/guide/starterkits/video-editor.md +0 -696
- package/assets/docs/guide/starterkits/video-export-options.md +0 -676
- package/assets/docs/guide/starterkits/viewer.md +0 -400
- package/assets/docs/guide/starterkits.md +0 -41
- package/assets/docs/guide/stickers-and-shapes/create-edit/vector-edit.md +0 -362
- package/assets/docs/guide/text/custom-fonts.md +0 -401
- package/assets/docs/guide/text/decorations.md +0 -330
- package/assets/docs/guide/text/enumerations.md +0 -258
- package/assets/docs/guide/to-v1-10.md +0 -131
- package/assets/docs/guide/to-v1-13.md +0 -165
- package/assets/docs/guide/to-v1-32.md +0 -110
- package/assets/docs/guide/to-v1-69.md +0 -468
- package/assets/docs/guide/to-v1-72.md +0 -193
- package/assets/docs/guide/use-templates/library.md +0 -450
- package/assets/docs/guide/user-interface/ai-integration/audio-generation.md +0 -428
- package/assets/docs/guide/user-interface/ai-integration/auto-captions.md +0 -337
- package/assets/docs/guide/user-interface/ai-integration/custom-provider.md +0 -853
- package/assets/docs/guide/user-interface/ai-integration/gateway-provider.md +0 -1045
- package/assets/docs/guide/user-interface/ai-integration/image-generation.md +0 -641
- package/assets/docs/guide/user-interface/ai-integration/integrate.md +0 -966
- package/assets/docs/guide/user-interface/ai-integration/proxy-server.md +0 -99
- package/assets/docs/guide/user-interface/ai-integration/text-generation.md +0 -498
- package/assets/docs/guide/user-interface/ai-integration/video-generation.md +0 -493
- package/assets/docs/guide/user-interface/ai-integration.md +0 -30
- package/assets/docs/guide/user-interface/appearance/change-ui-font.md +0 -316
- package/assets/docs/guide/user-interface/appearance/custom-labels.md +0 -509
- package/assets/docs/guide/user-interface/appearance/icons.md +0 -373
- package/assets/docs/guide/user-interface/appearance/theming.md +0 -665
- package/assets/docs/guide/user-interface/appearance.md +0 -23
- package/assets/docs/guide/user-interface/build-your-own-ui.md +0 -620
- package/assets/docs/guide/user-interface/customization/canvas-menu.md +0 -412
- package/assets/docs/guide/user-interface/customization/canvas.md +0 -281
- package/assets/docs/guide/user-interface/customization/color-palette.md +0 -413
- package/assets/docs/guide/user-interface/customization/crop-presets.md +0 -384
- package/assets/docs/guide/user-interface/customization/disable-or-enable.md +0 -676
- package/assets/docs/guide/user-interface/customization/dock.md +0 -399
- package/assets/docs/guide/user-interface/customization/force-crop.md +0 -289
- package/assets/docs/guide/user-interface/customization/inspector-bar.md +0 -371
- package/assets/docs/guide/user-interface/customization/navigation-bar.md +0 -516
- package/assets/docs/guide/user-interface/customization/page-format.md +0 -436
- package/assets/docs/guide/user-interface/customization/panel.md +0 -605
- package/assets/docs/guide/user-interface/customization/quick-start/add-action-buttons.md +0 -531
- package/assets/docs/guide/user-interface/customization/quick-start/add-dock-buttons.md +0 -358
- package/assets/docs/guide/user-interface/customization/quick-start/create-custom-components.md +0 -374
- package/assets/docs/guide/user-interface/customization/quick-start/reorder-components.md +0 -323
- package/assets/docs/guide/user-interface/customization/quick-start/show-hide-components.md +0 -294
- package/assets/docs/guide/user-interface/customization/quick-start.md +0 -12
- package/assets/docs/guide/user-interface/customization/reference/component-order-api.md +0 -519
- package/assets/docs/guide/user-interface/customization/reference/component-reference.md +0 -333
- package/assets/docs/guide/user-interface/customization/reference.md +0 -12
- package/assets/docs/guide/user-interface/customization.md +0 -39
- package/assets/docs/guide/user-interface/localization.md +0 -633
- package/assets/docs/guide/user-interface/overview.md +0 -167
- package/assets/docs/guide/user-interface/ui-extensions/add-custom-feature.md +0 -411
- package/assets/docs/guide/user-interface/ui-extensions/asset-library.md +0 -721
- package/assets/docs/guide/user-interface/ui-extensions/create-custom-panel.md +0 -331
- package/assets/docs/guide/user-interface/ui-extensions/customize-behaviour.md +0 -553
- package/assets/docs/guide/user-interface/ui-extensions/notifications-and-dialogs.md +0 -672
- package/assets/docs/guide/user-interface/ui-extensions/quick-actions.md +0 -415
- package/assets/docs/guide/user-interface/ui-extensions/register-new-component.md +0 -521
- package/assets/docs/guide/user-interface/ui-extensions.md +0 -26
- package/assets/docs/guide/user-interface.md +0 -25
- package/assets/prompts/evals-assetGenerate.md +0 -12
- package/assets/prompts/evals-brutalistCore.md +0 -34
- package/assets/prompts/evals-danskCatalogue.md +0 -31
- package/assets/prompts/evals-exportRoundTrip.md +0 -12
- package/assets/prompts/evals-inspectPriorCode.md +0 -16
- package/assets/prompts/evals-listProjectFiles.md +0 -6
- package/assets/prompts/evals-readAndExplainScript.md +0 -6
- package/assets/prompts/evals-resumeAcrossRestart.md +0 -15
- package/assets/prompts/evals-rewindRecovery.md +0 -10
- package/assets/prompts/evals-searchAcrossFiles.md +0 -6
- package/assets/prompts/evals-weddingCard.md +0 -20
- package/assets/prompts/explain.md +0 -6
- package/assets/prompts/review.md +0 -6
- package/dist/frontmatter.d.ts +0 -15
- package/dist/frontmatter.d.ts.map +0 -1
- package/dist/frontmatter.js +0 -46
- package/dist/frontmatter.js.map +0 -1
- package/dist/test/test/frontmatter.test.d.ts +0 -2
- package/dist/test/test/frontmatter.test.d.ts.map +0 -1
- package/dist/test/test/frontmatter.test.js +0 -55
- package/dist/test/test/frontmatter.test.js.map +0 -1
|
@@ -1,92 +1,79 @@
|
|
|
1
|
-
> This is one page of the CE.SDK
|
|
1
|
+
> This is one page of the CE.SDK Node.js documentation. For a complete overview, see the [Node.js Documentation Index](https://img.ly/docs/cesdk/node.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
|
|
2
2
|
|
|
3
3
|
**Navigation:** [Guides](./guides.md) > [Create and Edit Text](./text.md) > [Language Support](./text/language-support.md)
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Support right-to-left text, complex scripts, and multilingual typography in
|
|
8
|
-
your designs using CE.SDK's comprehensive text rendering capabilities.
|
|
9
|
-
|
|
10
|
-

|
|
7
|
+
Support right-to-left text, complex scripts, and multilingual typography programmatically in headless Node.js environments.
|
|
11
8
|
|
|
12
9
|
> **Reading time:** 15 minutes
|
|
13
10
|
>
|
|
14
11
|
> **Resources:**
|
|
15
12
|
>
|
|
16
13
|
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
17
|
-
>
|
|
18
|
-
> - [
|
|
19
|
-
>
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
EffectsAssetSource,
|
|
36
|
-
FiltersAssetSource,
|
|
37
|
-
PagePresetsAssetSource,
|
|
38
|
-
StickerAssetSource,
|
|
39
|
-
TextAssetSource,
|
|
40
|
-
TextComponentAssetSource,
|
|
41
|
-
TypefaceAssetSource,
|
|
42
|
-
UploadAssetSources,
|
|
43
|
-
VectorShapeAssetSource
|
|
44
|
-
} from '@cesdk/cesdk-js/plugins';
|
|
45
|
-
import { DesignEditorConfig } from './design-editor/plugin';
|
|
46
|
-
import packageJson from './package.json';
|
|
14
|
+
>
|
|
15
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-text-language-support-server-js)
|
|
16
|
+
>
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-text-language-support-server-js)
|
|
18
|
+
|
|
19
|
+
CE.SDK provides comprehensive multilingual text support through the Block API. We can create text blocks in any language and the engine automatically handles complex text rendering including right-to-left scripts, ligatures, diacritical marks, and bidirectional text. This enables programmatic generation of designs for global audiences without UI complexity.
|
|
20
|
+
|
|
21
|
+
```typescript file=@cesdk_web_examples/guides-text-language-support-server-js/server-js.ts reference-only
|
|
22
|
+
import CreativeEngine from "@cesdk/node";
|
|
23
|
+
import { config } from "dotenv";
|
|
24
|
+
import { writeFileSync, mkdirSync, existsSync } from "fs";
|
|
25
|
+
|
|
26
|
+
// Load environment variables
|
|
27
|
+
config();
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* CE.SDK Server Guide: Text and Language Support
|
|
31
|
+
*/
|
|
47
32
|
|
|
48
33
|
// Typeface definitions
|
|
49
34
|
const ROBOTO_BOLD = {
|
|
50
|
-
name:
|
|
35
|
+
name: "Roboto",
|
|
51
36
|
fonts: [
|
|
52
37
|
{
|
|
53
|
-
uri:
|
|
54
|
-
subFamily:
|
|
55
|
-
weight:
|
|
56
|
-
style:
|
|
57
|
-
}
|
|
58
|
-
]
|
|
38
|
+
uri: "https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmEU9vAw.ttf",
|
|
39
|
+
subFamily: "Bold",
|
|
40
|
+
weight: "bold" as const,
|
|
41
|
+
style: "normal" as const,
|
|
42
|
+
},
|
|
43
|
+
],
|
|
59
44
|
};
|
|
60
45
|
|
|
61
46
|
const NOTO_NASKH_ARABIC = {
|
|
62
|
-
name:
|
|
47
|
+
name: "Noto Naskh Arabic",
|
|
63
48
|
fonts: [
|
|
64
49
|
{
|
|
65
|
-
uri:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
50
|
+
uri: new URL("./assets/NotoNaskhArabic-Regular.ttf", import.meta.url)
|
|
51
|
+
.href,
|
|
52
|
+
subFamily: "Regular",
|
|
53
|
+
weight: "normal" as const,
|
|
54
|
+
style: "normal" as const,
|
|
55
|
+
},
|
|
56
|
+
],
|
|
71
57
|
};
|
|
72
58
|
|
|
73
59
|
const NOTO_SANS_KR = {
|
|
74
|
-
name:
|
|
60
|
+
name: "Noto Sans KR",
|
|
75
61
|
fonts: [
|
|
76
62
|
{
|
|
77
|
-
uri:
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
63
|
+
uri: new URL("./assets/NotoSansKR-VariableFont_wght.ttf", import.meta.url)
|
|
64
|
+
.href,
|
|
65
|
+
subFamily: "Regular",
|
|
66
|
+
weight: "normal" as const,
|
|
67
|
+
style: "normal" as const,
|
|
68
|
+
},
|
|
69
|
+
],
|
|
83
70
|
};
|
|
84
71
|
|
|
85
72
|
// Layout configuration
|
|
86
73
|
const LAYOUT = {
|
|
87
74
|
PAGE: { width: 800, height: 1200 },
|
|
88
75
|
TEXT: { x: 50, width: 700, defaultHeight: 140, fontSize: 20 },
|
|
89
|
-
SPACING: { gap: 16, startY: 50 }
|
|
76
|
+
SPACING: { gap: 16, startY: 50 },
|
|
90
77
|
};
|
|
91
78
|
|
|
92
79
|
// Typeface interface
|
|
@@ -95,11 +82,12 @@ interface Typeface {
|
|
|
95
82
|
fonts: Array<{
|
|
96
83
|
uri: string;
|
|
97
84
|
subFamily: string;
|
|
98
|
-
weight:
|
|
99
|
-
style:
|
|
85
|
+
weight: "normal" | "bold";
|
|
86
|
+
style: "normal" | "italic";
|
|
100
87
|
}>;
|
|
101
88
|
}
|
|
102
89
|
|
|
90
|
+
// Helper function to create text blocks
|
|
103
91
|
function createTextBlock(
|
|
104
92
|
engine: CreativeEngine,
|
|
105
93
|
page: number,
|
|
@@ -107,211 +95,269 @@ function createTextBlock(
|
|
|
107
95
|
typeface: Typeface,
|
|
108
96
|
yPosition: number,
|
|
109
97
|
height: number = LAYOUT.TEXT.defaultHeight,
|
|
110
|
-
alignment:
|
|
98
|
+
alignment: "Left" | "Center" | "Right" = "Left",
|
|
111
99
|
): void {
|
|
112
|
-
const textBlock = engine.block.create(
|
|
113
|
-
engine.block.setString(textBlock,
|
|
100
|
+
const textBlock = engine.block.create("text");
|
|
101
|
+
engine.block.setString(textBlock, "text/text", text);
|
|
102
|
+
engine.block.appendChild(page, textBlock);
|
|
114
103
|
engine.block.setPositionX(textBlock, LAYOUT.TEXT.x);
|
|
115
104
|
engine.block.setPositionY(textBlock, yPosition);
|
|
116
105
|
engine.block.setWidth(textBlock, LAYOUT.TEXT.width);
|
|
117
106
|
engine.block.setHeight(textBlock, height);
|
|
118
|
-
engine.block.setFloat(textBlock,
|
|
107
|
+
engine.block.setFloat(textBlock, "text/fontSize", LAYOUT.TEXT.fontSize);
|
|
119
108
|
engine.block.setTypeface(textBlock, typeface);
|
|
120
|
-
if (alignment !==
|
|
121
|
-
engine.block.setEnum(textBlock,
|
|
109
|
+
if (alignment !== "Left") {
|
|
110
|
+
engine.block.setEnum(textBlock, "text/horizontalAlignment", alignment);
|
|
122
111
|
}
|
|
123
|
-
engine.block.appendChild(page, textBlock);
|
|
124
112
|
}
|
|
125
113
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
style: 'normal'
|
|
177
|
-
}
|
|
178
|
-
]
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
cesdk.ui.updateAssetLibraryEntry('ly.img.typefaces', {
|
|
184
|
-
sourceIds: ['ly.img.typeface', 'multilingual-typefaces']
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
const engine = cesdk.engine;
|
|
188
|
-
|
|
189
|
-
// Create a blank scene with a white canvas
|
|
190
|
-
const scene = engine.scene.create();
|
|
191
|
-
const page = engine.block.create('page');
|
|
192
|
-
engine.block.setWidth(page, LAYOUT.PAGE.width);
|
|
193
|
-
engine.block.setHeight(page, LAYOUT.PAGE.height);
|
|
194
|
-
engine.block.appendChild(scene, page);
|
|
195
|
-
engine.scene.zoomToBlock(page);
|
|
196
|
-
|
|
197
|
-
// Create four text elements demonstrating multilingual font support
|
|
198
|
-
const textElements = [
|
|
199
|
-
{ text: 'RTL Arabic', typeface: ROBOTO_BOLD, height: 140 },
|
|
200
|
-
{
|
|
201
|
-
text: 'هذا مثال.',
|
|
202
|
-
typeface: NOTO_NASKH_ARABIC,
|
|
203
|
-
height: 160,
|
|
204
|
-
alignment: 'Right' as const
|
|
205
|
-
},
|
|
206
|
-
{ text: 'Korean', typeface: ROBOTO_BOLD, height: 140 },
|
|
207
|
-
{ text: '이는 한 예입니다.', typeface: NOTO_SANS_KR, height: 140 }
|
|
208
|
-
];
|
|
209
|
-
|
|
210
|
-
let currentY = LAYOUT.SPACING.startY;
|
|
211
|
-
for (const element of textElements) {
|
|
212
|
-
createTextBlock(
|
|
213
|
-
engine,
|
|
214
|
-
page,
|
|
215
|
-
element.text,
|
|
216
|
-
element.typeface,
|
|
217
|
-
currentY,
|
|
218
|
-
element.height,
|
|
219
|
-
element.alignment
|
|
220
|
-
);
|
|
221
|
-
currentY += element.height + LAYOUT.SPACING.gap;
|
|
222
|
-
}
|
|
114
|
+
// Initialize CE.SDK engine in headless mode
|
|
115
|
+
const engine = await CreativeEngine.init({
|
|
116
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL,
|
|
117
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
// Create a design scene with specific page dimensions
|
|
121
|
+
engine.scene.create("VerticalStack", {
|
|
122
|
+
page: { size: { width: LAYOUT.PAGE.width, height: LAYOUT.PAGE.height } },
|
|
123
|
+
});
|
|
124
|
+
const page = engine.block.findByType("page")[0];
|
|
125
|
+
|
|
126
|
+
try {
|
|
127
|
+
// Create four text elements demonstrating multilingual font support
|
|
128
|
+
const textElements = [
|
|
129
|
+
{ text: "RTL Arabic", typeface: ROBOTO_BOLD, height: 140 },
|
|
130
|
+
{
|
|
131
|
+
text: "هذا مثال.",
|
|
132
|
+
typeface: NOTO_NASKH_ARABIC,
|
|
133
|
+
height: 160,
|
|
134
|
+
alignment: "Right" as const,
|
|
135
|
+
},
|
|
136
|
+
{ text: "Korean", typeface: ROBOTO_BOLD, height: 140 },
|
|
137
|
+
{ text: "이는 한 예입니다.", typeface: NOTO_SANS_KR, height: 140 },
|
|
138
|
+
];
|
|
139
|
+
|
|
140
|
+
let currentY = LAYOUT.SPACING.startY;
|
|
141
|
+
for (const element of textElements) {
|
|
142
|
+
createTextBlock(
|
|
143
|
+
engine,
|
|
144
|
+
page,
|
|
145
|
+
element.text,
|
|
146
|
+
element.typeface,
|
|
147
|
+
currentY,
|
|
148
|
+
element.height,
|
|
149
|
+
element.alignment,
|
|
150
|
+
);
|
|
151
|
+
currentY += element.height + LAYOUT.SPACING.gap;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Zoom to show all content
|
|
155
|
+
engine.scene.zoomToBlock(page, { padding: 40 });
|
|
156
|
+
|
|
157
|
+
// Export the scene to PNG
|
|
158
|
+
const blob = await engine.block.export(page, { mimeType: "image/png" });
|
|
159
|
+
const buffer = Buffer.from(await blob.arrayBuffer());
|
|
160
|
+
|
|
161
|
+
// Ensure output directory exists
|
|
162
|
+
if (!existsSync("output")) {
|
|
163
|
+
mkdirSync("output");
|
|
223
164
|
}
|
|
165
|
+
|
|
166
|
+
// Save to file
|
|
167
|
+
writeFileSync("output/text-language-support.png", buffer);
|
|
168
|
+
console.log(
|
|
169
|
+
"✅ Exported multilingual text to output/text-language-support.png",
|
|
170
|
+
);
|
|
171
|
+
} finally {
|
|
172
|
+
engine.dispose();
|
|
224
173
|
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
This guide covers headless rendering of RTL text, font configuration for different scripts, complex script support, and variable bindings for multilingual content.
|
|
177
|
+
|
|
178
|
+
## Initialize Headless Engine
|
|
225
179
|
|
|
226
|
-
|
|
180
|
+
We initialize CE.SDK in headless mode for server-side text processing. The engine provides the same text rendering capabilities as the browser version but optimized for programmatic usage and image export.
|
|
181
|
+
|
|
182
|
+
```typescript highlight-setup
|
|
183
|
+
// Initialize CE.SDK engine in headless mode
|
|
184
|
+
const engine = await CreativeEngine.init({
|
|
185
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL,
|
|
186
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
// Create a design scene with specific page dimensions
|
|
190
|
+
engine.scene.create("VerticalStack", {
|
|
191
|
+
page: { size: { width: LAYOUT.PAGE.width, height: LAYOUT.PAGE.height } },
|
|
192
|
+
});
|
|
193
|
+
const page = engine.block.findByType("page")[0];
|
|
227
194
|
```
|
|
228
195
|
|
|
229
|
-
|
|
196
|
+
The headless engine creates scenes programmatically and exports designs to PNG, PDF, or other formats without browser dependencies.
|
|
197
|
+
|
|
198
|
+
## Right-to-Left Text Detection
|
|
199
|
+
|
|
200
|
+
We create text blocks with RTL content and the engine automatically detects text direction based on Unicode character properties. CE.SDK implements the Unicode Bidirectional Algorithm (UAX #9) to handle RTL languages like Arabic, Hebrew, Persian, and Urdu.
|
|
230
201
|
|
|
231
|
-
|
|
202
|
+
```typescript highlight-apply-fonts
|
|
203
|
+
// Create four text elements demonstrating multilingual font support
|
|
204
|
+
const textElements = [
|
|
205
|
+
{ text: "RTL Arabic", typeface: ROBOTO_BOLD, height: 140 },
|
|
206
|
+
{
|
|
207
|
+
text: "هذا مثال.",
|
|
208
|
+
typeface: NOTO_NASKH_ARABIC,
|
|
209
|
+
height: 160,
|
|
210
|
+
alignment: "Right" as const,
|
|
211
|
+
},
|
|
212
|
+
{ text: "Korean", typeface: ROBOTO_BOLD, height: 140 },
|
|
213
|
+
{ text: "이는 한 예입니다.", typeface: NOTO_SANS_KR, height: 140 },
|
|
214
|
+
];
|
|
215
|
+
|
|
216
|
+
let currentY = LAYOUT.SPACING.startY;
|
|
217
|
+
for (const element of textElements) {
|
|
218
|
+
createTextBlock(
|
|
219
|
+
engine,
|
|
220
|
+
page,
|
|
221
|
+
element.text,
|
|
222
|
+
element.typeface,
|
|
223
|
+
currentY,
|
|
224
|
+
element.height,
|
|
225
|
+
element.alignment,
|
|
226
|
+
);
|
|
227
|
+
currentY += element.height + LAYOUT.SPACING.gap;
|
|
228
|
+
}
|
|
229
|
+
```
|
|
232
230
|
|
|
233
|
-
|
|
231
|
+
The engine analyzes strong directional characters to determine text flow. Arabic and Hebrew letters establish right-to-left direction automatically. Mixed content with embedded LTR words renders correctly without additional configuration.
|
|
234
232
|
|
|
235
|
-
|
|
233
|
+
## Text Alignment for RTL Scripts
|
|
236
234
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
engine.block.
|
|
242
|
-
|
|
243
|
-
engine.block.appendChild(scene, page);
|
|
244
|
-
engine.scene.zoomToBlock(page);
|
|
235
|
+
CE.SDK defaults to 'Auto' alignment, which automatically aligns text based on script direction. RTL scripts (Arabic, Hebrew) align right, while LTR scripts align left. This eliminates the need to manually configure alignment for different writing systems.
|
|
236
|
+
|
|
237
|
+
```typescript highlight-text-alignment
|
|
238
|
+
if (alignment !== "Left") {
|
|
239
|
+
engine.block.setEnum(textBlock, "text/horizontalAlignment", alignment);
|
|
240
|
+
}
|
|
245
241
|
```
|
|
246
242
|
|
|
247
|
-
|
|
243
|
+
The alignment options:
|
|
248
244
|
|
|
249
|
-
|
|
245
|
+
- **'Auto'** (default) - Automatically aligns based on the text's script direction. RTL scripts align right, LTR scripts align left.
|
|
246
|
+
- **'Left'** - Always align text to the left
|
|
247
|
+
- **'Right'** - Always align text to the right
|
|
248
|
+
- **'Center'** - Center-align text (language-neutral)
|
|
249
|
+
|
|
250
|
+
With 'Auto' alignment, the Arabic text in our example automatically aligns to the right without explicit configuration:
|
|
251
|
+
|
|
252
|
+
```typescript
|
|
253
|
+
{
|
|
254
|
+
text: "هذا مثال.",
|
|
255
|
+
typeface: NOTO_NASKH_ARABIC,
|
|
256
|
+
height: 160,
|
|
257
|
+
// No alignment needed - Auto handles RTL automatically
|
|
258
|
+
}
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
You can still override alignment when needed:
|
|
262
|
+
|
|
263
|
+
```typescript
|
|
264
|
+
{
|
|
265
|
+
text: "Centered Title",
|
|
266
|
+
typeface: ROBOTO_BOLD,
|
|
267
|
+
height: 80,
|
|
268
|
+
alignment: "Center" as const // Override Auto for centering
|
|
269
|
+
}
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
To check the effective alignment when 'Auto' is set, use `getTextEffectiveHorizontalAlignment()`:
|
|
273
|
+
|
|
274
|
+
```typescript
|
|
275
|
+
const effectiveAlignment = engine.block.getTextEffectiveHorizontalAlignment(textBlock);
|
|
276
|
+
// Returns 'Left' or 'Right' based on text content, never 'Auto'
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
This approach simplifies multilingual templates - the same template works correctly for both LTR and RTL languages without alignment adjustments.
|
|
280
|
+
|
|
281
|
+
## Font Configuration for Language Support
|
|
250
282
|
|
|
251
283
|
To support specific languages and scripts, we define typefaces as constants with appropriate Unicode coverage. This example uses a constants-based approach for reusable typeface definitions that can be referenced throughout the code.
|
|
252
284
|
|
|
253
285
|
```typescript highlight-configure-fonts
|
|
254
286
|
// Typeface definitions
|
|
255
287
|
const ROBOTO_BOLD = {
|
|
256
|
-
name:
|
|
288
|
+
name: "Roboto",
|
|
257
289
|
fonts: [
|
|
258
290
|
{
|
|
259
|
-
uri:
|
|
260
|
-
subFamily:
|
|
261
|
-
weight:
|
|
262
|
-
style:
|
|
263
|
-
}
|
|
264
|
-
]
|
|
291
|
+
uri: "https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmEU9vAw.ttf",
|
|
292
|
+
subFamily: "Bold",
|
|
293
|
+
weight: "bold" as const,
|
|
294
|
+
style: "normal" as const,
|
|
295
|
+
},
|
|
296
|
+
],
|
|
265
297
|
};
|
|
266
298
|
|
|
267
299
|
const NOTO_NASKH_ARABIC = {
|
|
268
|
-
name:
|
|
300
|
+
name: "Noto Naskh Arabic",
|
|
269
301
|
fonts: [
|
|
270
302
|
{
|
|
271
|
-
uri:
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
303
|
+
uri: new URL("./assets/NotoNaskhArabic-Regular.ttf", import.meta.url)
|
|
304
|
+
.href,
|
|
305
|
+
subFamily: "Regular",
|
|
306
|
+
weight: "normal" as const,
|
|
307
|
+
style: "normal" as const,
|
|
308
|
+
},
|
|
309
|
+
],
|
|
277
310
|
};
|
|
278
311
|
|
|
279
312
|
const NOTO_SANS_KR = {
|
|
280
|
-
name:
|
|
313
|
+
name: "Noto Sans KR",
|
|
281
314
|
fonts: [
|
|
282
315
|
{
|
|
283
|
-
uri:
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
316
|
+
uri: new URL("./assets/NotoSansKR-VariableFont_wght.ttf", import.meta.url)
|
|
317
|
+
.href,
|
|
318
|
+
subFamily: "Regular",
|
|
319
|
+
weight: "normal" as const,
|
|
320
|
+
style: "normal" as const,
|
|
321
|
+
},
|
|
322
|
+
],
|
|
289
323
|
};
|
|
290
324
|
```
|
|
291
325
|
|
|
292
326
|
The example defines three typefaces as named constants:
|
|
293
327
|
|
|
294
|
-
- **
|
|
295
|
-
- **
|
|
296
|
-
- **
|
|
328
|
+
- **ROBOTO\_BOLD** - A web font for Latin script labels
|
|
329
|
+
- **NOTO\_NASKH\_ARABIC** - Optimized for Arabic script with proper contextual forms
|
|
330
|
+
- **NOTO\_SANS\_KR** - Variable font supporting Korean (Hangul) characters
|
|
297
331
|
|
|
298
332
|
Each typeface includes:
|
|
299
333
|
|
|
300
334
|
- **name** - The typeface family name
|
|
301
335
|
- **fonts** - Array of font objects with URIs and styles
|
|
302
|
-
- **uri** - Path to font file (
|
|
336
|
+
- **uri** - Path to font file (uses `new URL()` with `import.meta.url` for local assets)
|
|
303
337
|
- **weight** - Font weight (normal, bold, or numeric values)
|
|
304
338
|
- **style** - Font style (normal or italic)
|
|
305
339
|
|
|
340
|
+
Defining typefaces as constants provides several benefits:
|
|
341
|
+
|
|
342
|
+
- **Reusability** - Reference the same typeface multiple times without duplication
|
|
343
|
+
- **Maintainability** - Update font URIs or properties in one location
|
|
344
|
+
- **Type safety** - TypeScript can infer and validate typeface structure
|
|
345
|
+
- **Clarity** - Clear semantic names indicate which script each font supports
|
|
346
|
+
|
|
306
347
|
> **Note:** CE.SDK uses system fonts with Unicode support by default. Custom typefaces
|
|
307
348
|
> are useful when you need specific brand fonts or enhanced coverage for
|
|
308
349
|
> particular scripts.
|
|
309
350
|
|
|
310
|
-
|
|
351
|
+
## Applying Fonts Programmatically
|
|
352
|
+
|
|
353
|
+
Instead of manually configuring each text block, this example uses a helper function and data-driven approach to apply fonts efficiently.
|
|
311
354
|
|
|
312
|
-
|
|
355
|
+
### Helper Function
|
|
356
|
+
|
|
357
|
+
The `createTextBlock()` function encapsulates all text block setup logic, reducing code duplication:
|
|
313
358
|
|
|
314
359
|
```typescript highlight-helper-function
|
|
360
|
+
// Helper function to create text blocks
|
|
315
361
|
function createTextBlock(
|
|
316
362
|
engine: CreativeEngine,
|
|
317
363
|
page: number,
|
|
@@ -319,189 +365,110 @@ function createTextBlock(
|
|
|
319
365
|
typeface: Typeface,
|
|
320
366
|
yPosition: number,
|
|
321
367
|
height: number = LAYOUT.TEXT.defaultHeight,
|
|
322
|
-
alignment:
|
|
368
|
+
alignment: "Left" | "Center" | "Right" = "Left",
|
|
323
369
|
): void {
|
|
324
|
-
const textBlock = engine.block.create(
|
|
325
|
-
engine.block.setString(textBlock,
|
|
370
|
+
const textBlock = engine.block.create("text");
|
|
371
|
+
engine.block.setString(textBlock, "text/text", text);
|
|
372
|
+
engine.block.appendChild(page, textBlock);
|
|
326
373
|
engine.block.setPositionX(textBlock, LAYOUT.TEXT.x);
|
|
327
374
|
engine.block.setPositionY(textBlock, yPosition);
|
|
328
375
|
engine.block.setWidth(textBlock, LAYOUT.TEXT.width);
|
|
329
376
|
engine.block.setHeight(textBlock, height);
|
|
330
|
-
engine.block.setFloat(textBlock,
|
|
377
|
+
engine.block.setFloat(textBlock, "text/fontSize", LAYOUT.TEXT.fontSize);
|
|
331
378
|
engine.block.setTypeface(textBlock, typeface);
|
|
332
|
-
if (alignment !==
|
|
333
|
-
engine.block.setEnum(textBlock,
|
|
379
|
+
if (alignment !== "Left") {
|
|
380
|
+
engine.block.setEnum(textBlock, "text/horizontalAlignment", alignment);
|
|
334
381
|
}
|
|
335
|
-
engine.block.appendChild(page, textBlock);
|
|
336
382
|
}
|
|
337
383
|
```
|
|
338
384
|
|
|
339
|
-
|
|
340
|
-
// Create four text elements demonstrating multilingual font support
|
|
341
|
-
const textElements = [
|
|
342
|
-
{ text: 'RTL Arabic', typeface: ROBOTO_BOLD, height: 140 },
|
|
343
|
-
{
|
|
344
|
-
text: 'هذا مثال.',
|
|
345
|
-
typeface: NOTO_NASKH_ARABIC,
|
|
346
|
-
height: 160,
|
|
347
|
-
alignment: 'Right' as const
|
|
348
|
-
},
|
|
349
|
-
{ text: 'Korean', typeface: ROBOTO_BOLD, height: 140 },
|
|
350
|
-
{ text: '이는 한 예입니다.', typeface: NOTO_SANS_KR, height: 140 }
|
|
351
|
-
];
|
|
352
|
-
|
|
353
|
-
let currentY = LAYOUT.SPACING.startY;
|
|
354
|
-
for (const element of textElements) {
|
|
355
|
-
createTextBlock(
|
|
356
|
-
engine,
|
|
357
|
-
page,
|
|
358
|
-
element.text,
|
|
359
|
-
element.typeface,
|
|
360
|
-
currentY,
|
|
361
|
-
element.height,
|
|
362
|
-
element.alignment
|
|
363
|
-
);
|
|
364
|
-
currentY += element.height + LAYOUT.SPACING.gap;
|
|
365
|
-
}
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
This approach provides several benefits:
|
|
369
|
-
|
|
370
|
-
- **DRY Principle** - Eliminates repetitive block setup code
|
|
371
|
-
- **Easy to Extend** - Add new languages by appending to the configuration array
|
|
372
|
-
- **Maintainable** - Change layout spacing or dimensions in one place
|
|
373
|
-
|
|
374
|
-
The `engine.block.setTypeface()` method applies fonts at the block level. CE.SDK automatically uses the configured fonts to render text with proper glyph coverage for the languages in your content.
|
|
385
|
+
This function handles:
|
|
375
386
|
|
|
376
|
-
|
|
387
|
+
- Creating text blocks
|
|
388
|
+
- Setting text content and styling
|
|
389
|
+
- Applying typefaces
|
|
390
|
+
- Positioning and sizing
|
|
391
|
+
- Conditional alignment (only when not 'Left')
|
|
377
392
|
|
|
378
|
-
###
|
|
393
|
+
### Data-Driven Configuration
|
|
379
394
|
|
|
380
|
-
|
|
395
|
+
Text elements are defined as an array and processed in a loop:
|
|
381
396
|
|
|
382
397
|
```typescript highlight-apply-fonts
|
|
383
|
-
// Create four text elements demonstrating multilingual font support
|
|
384
|
-
const textElements = [
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
];
|
|
395
|
-
|
|
396
|
-
let currentY = LAYOUT.SPACING.startY;
|
|
397
|
-
for (const element of textElements) {
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
}
|
|
409
|
-
```
|
|
410
|
-
|
|
411
|
-
The engine implements the Unicode Bidirectional Algorithm (UAX #9), which:
|
|
412
|
-
|
|
413
|
-
- **Detects strong directional characters** - Characters like Arabic or Hebrew letters establish RTL flow
|
|
414
|
-
- **Handles neutral characters** - Spaces, punctuation, and numbers display correctly in context
|
|
415
|
-
- **Manages embedding** - LTR words (like English brand names) embed correctly within RTL text
|
|
416
|
-
|
|
417
|
-
This automatic detection works for:
|
|
418
|
-
|
|
419
|
-
- **Arabic** - Including Persian and Urdu variants
|
|
420
|
-
- **Hebrew** - Modern and Biblical Hebrew
|
|
421
|
-
- **Mixed content** - English or other LTR text within RTL paragraphs
|
|
422
|
-
|
|
423
|
-
### Text Alignment for RTL Languages
|
|
424
|
-
|
|
425
|
-
CE.SDK now defaults to 'Auto' alignment, which automatically aligns text based on script direction. RTL scripts (Arabic, Hebrew) align right, while LTR scripts align left. This eliminates the need to manually configure alignment for different writing systems.
|
|
426
|
-
|
|
427
|
-
```typescript highlight-text-alignment
|
|
428
|
-
if (alignment !== 'Left') {
|
|
429
|
-
engine.block.setEnum(textBlock, 'text/horizontalAlignment', alignment);
|
|
430
|
-
}
|
|
398
|
+
// Create four text elements demonstrating multilingual font support
|
|
399
|
+
const textElements = [
|
|
400
|
+
{ text: "RTL Arabic", typeface: ROBOTO_BOLD, height: 140 },
|
|
401
|
+
{
|
|
402
|
+
text: "هذا مثال.",
|
|
403
|
+
typeface: NOTO_NASKH_ARABIC,
|
|
404
|
+
height: 160,
|
|
405
|
+
alignment: "Right" as const,
|
|
406
|
+
},
|
|
407
|
+
{ text: "Korean", typeface: ROBOTO_BOLD, height: 140 },
|
|
408
|
+
{ text: "이는 한 예입니다.", typeface: NOTO_SANS_KR, height: 140 },
|
|
409
|
+
];
|
|
410
|
+
|
|
411
|
+
let currentY = LAYOUT.SPACING.startY;
|
|
412
|
+
for (const element of textElements) {
|
|
413
|
+
createTextBlock(
|
|
414
|
+
engine,
|
|
415
|
+
page,
|
|
416
|
+
element.text,
|
|
417
|
+
element.typeface,
|
|
418
|
+
currentY,
|
|
419
|
+
element.height,
|
|
420
|
+
element.alignment,
|
|
421
|
+
);
|
|
422
|
+
currentY += element.height + LAYOUT.SPACING.gap;
|
|
423
|
+
}
|
|
431
424
|
```
|
|
432
425
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
- **'Auto'** (default) - Automatically aligns based on the text's script direction. RTL scripts align right, LTR scripts align left.
|
|
436
|
-
- **'Left'** - Always align text to the left
|
|
437
|
-
- **'Right'** - Always align text to the right
|
|
438
|
-
- **'Center'** - Center-align text (language-neutral)
|
|
439
|
-
|
|
440
|
-
With 'Auto' alignment, the Arabic text in our example automatically aligns to the right without explicit configuration:
|
|
426
|
+
This approach uses three key patterns:
|
|
441
427
|
|
|
442
|
-
|
|
443
|
-
{
|
|
444
|
-
text: 'هذا مثال.',
|
|
445
|
-
typeface: NOTO_NASKH_ARABIC,
|
|
446
|
-
height: 160,
|
|
447
|
-
// No alignment needed - Auto handles RTL automatically
|
|
448
|
-
}
|
|
449
|
-
```
|
|
428
|
+
**1. Helper Function** - The `createTextBlock()` function creates and configures a text block with a single call. As a standalone function (not a class method), it takes the engine instance as the first parameter. Other parameters include text content, typeface, position, height, and optional alignment.
|
|
450
429
|
|
|
451
|
-
|
|
430
|
+
**2. Data-Driven Configuration** - Text elements are defined as an array of objects specifying content, typeface, height, and alignment. This declarative approach makes it easy to see all elements at a glance and modify them as needed.
|
|
452
431
|
|
|
453
|
-
|
|
454
|
-
{
|
|
455
|
-
text: 'Centered Title',
|
|
456
|
-
typeface: ROBOTO_BOLD,
|
|
457
|
-
height: 80,
|
|
458
|
-
alignment: 'Center' as const // Override Auto for centering
|
|
459
|
-
}
|
|
460
|
-
```
|
|
432
|
+
**3. Loop-Based Creation** - A for loop iterates through the configuration array, automatically calculating Y positions and creating each text block. The `currentY` variable tracks vertical position and updates after each element.
|
|
461
433
|
|
|
462
|
-
|
|
434
|
+
Benefits of this pattern:
|
|
463
435
|
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
```
|
|
436
|
+
- **DRY Principle** - Eliminates repetitive block setup code
|
|
437
|
+
- **Easy to Extend** - Add new languages by appending to the configuration array
|
|
438
|
+
- **Maintainable** - Change layout spacing or dimensions in one place
|
|
439
|
+
- **Educational** - Demonstrates best practices for managing multiple similar elements
|
|
469
440
|
|
|
470
|
-
|
|
441
|
+
The `engine.block.setTypeface()` method applies fonts at the block level. CE.SDK automatically uses the configured fonts to render text with proper glyph coverage for the languages in your content.
|
|
471
442
|
|
|
472
443
|
## Complex Script Support
|
|
473
444
|
|
|
474
|
-
CE.SDK automatically handles complex script features without
|
|
445
|
+
CE.SDK automatically handles complex script features without additional configuration. The text engine provides script-aware text shaping that applies:
|
|
475
446
|
|
|
476
447
|
### Arabic Script Features
|
|
477
448
|
|
|
478
|
-
|
|
449
|
+
The engine automatically applies Arabic-specific rendering:
|
|
479
450
|
|
|
480
451
|
- **Contextual letter forms** - Letters change shape based on position (initial, medial, final, isolated)
|
|
481
452
|
- **Required ligatures** - Mandatory character combinations render as single glyphs
|
|
482
453
|
- **Diacritical marks** - Tashkeel marks position correctly above and below letters
|
|
483
454
|
- **Kashida** - Text justification through letter elongation
|
|
484
455
|
|
|
485
|
-
These features work automatically when you use fonts that include the necessary OpenType tables.
|
|
486
|
-
|
|
487
456
|
### Other Complex Scripts
|
|
488
457
|
|
|
489
|
-
The text engine
|
|
458
|
+
The text engine supports additional writing systems:
|
|
490
459
|
|
|
491
460
|
- **Devanagari** (Hindi, Sanskrit) - Conjunct formations and half-forms
|
|
492
461
|
- **Thai** - Vowel and tone mark positioning above and below base characters
|
|
493
462
|
- **Japanese** - Kanji, hiragana, and katakana rendering
|
|
494
463
|
- **Southeast Asian scripts** - Khmer subscripts, Myanmar ligatures
|
|
495
464
|
|
|
496
|
-
All complex script features
|
|
497
|
-
|
|
498
|
-
## Creating Multilingual Design Templates
|
|
465
|
+
All complex script features apply automatically based on Unicode properties and font capabilities.
|
|
499
466
|
|
|
500
|
-
|
|
467
|
+
## Variables for Multilingual Content
|
|
501
468
|
|
|
502
|
-
|
|
469
|
+
We use variable bindings to create dynamic multilingual content. Variables enable language switching while maintaining proper text rendering for each script.
|
|
503
470
|
|
|
504
|
-
|
|
471
|
+
Variable benefits:
|
|
505
472
|
|
|
506
473
|
- **Dynamic language switching** - Update variable values to change content language
|
|
507
474
|
- **Consistent formatting** - Text styling and layout remain stable across languages
|
|
@@ -509,43 +476,61 @@ Benefits of using variables:
|
|
|
509
476
|
|
|
510
477
|
Variables are particularly useful for:
|
|
511
478
|
|
|
512
|
-
- **Localized
|
|
479
|
+
- **Localized materials** - Same design, different language content
|
|
513
480
|
- **A/B testing** - Test messaging across languages
|
|
514
481
|
- **Regional campaigns** - Deploy region-specific content from a single template
|
|
515
482
|
|
|
516
|
-
|
|
483
|
+
## Mixed-Direction Text
|
|
517
484
|
|
|
518
|
-
|
|
485
|
+
The engine handles mixed-direction text automatically through the Unicode Bidirectional Algorithm. LTR and RTL content coexist correctly within the same text block.
|
|
519
486
|
|
|
520
|
-
|
|
521
|
-
- **Direction changes** - RTL layouts may need mirrored designs
|
|
522
|
-
- **Font availability** - Ensure typefaces cover all target scripts
|
|
523
|
-
- **Line height** - Scripts with diacritics may need additional vertical space
|
|
487
|
+
When we create text mixing English (LTR) with Arabic or Hebrew (RTL), the engine:
|
|
524
488
|
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
### Font Selection Priority
|
|
489
|
+
- **Detects strong directional characters** - Establishes text flow based on Unicode BiDi class
|
|
490
|
+
- **Handles neutral characters** - Spaces, punctuation, and numbers display correctly in context
|
|
491
|
+
- **Manages embedding** - LTR words embed correctly within RTL paragraphs
|
|
530
492
|
|
|
531
|
-
|
|
493
|
+
The engine resolves bidirectional layout automatically without requiring Unicode directional formatting characters.
|
|
532
494
|
|
|
533
|
-
|
|
534
|
-
2. **System fonts** - Fonts available on the user's system
|
|
535
|
-
3. **Fallback glyphs** - Generic replacement characters when no font contains the glyph
|
|
495
|
+
## Exporting Multilingual Designs
|
|
536
496
|
|
|
537
|
-
|
|
497
|
+
We export scenes to various formats using `engine.block.export()`. The headless engine supports PNG, JPEG, PDF, and other formats for programmatic image generation.
|
|
538
498
|
|
|
539
|
-
|
|
499
|
+
```typescript highlight-export
|
|
500
|
+
// Export the scene to PNG
|
|
501
|
+
const blob = await engine.block.export(page, { mimeType: "image/png" });
|
|
502
|
+
const buffer = Buffer.from(await blob.arrayBuffer());
|
|
540
503
|
|
|
541
|
-
|
|
504
|
+
// Ensure output directory exists
|
|
505
|
+
if (!existsSync("output")) {
|
|
506
|
+
mkdirSync("output");
|
|
507
|
+
}
|
|
542
508
|
|
|
543
|
-
|
|
544
|
-
-
|
|
545
|
-
|
|
546
|
-
|
|
509
|
+
// Save to file
|
|
510
|
+
writeFileSync("output/text-language-support.png", buffer);
|
|
511
|
+
console.log(
|
|
512
|
+
"✅ Exported multilingual text to output/text-language-support.png",
|
|
513
|
+
);
|
|
514
|
+
```
|
|
547
515
|
|
|
548
|
-
|
|
516
|
+
Exported images preserve all multilingual text rendering including RTL layout, complex scripts, and mixed-direction content. This enables automated generation of localized designs for global markets.
|
|
517
|
+
|
|
518
|
+
## API Reference
|
|
519
|
+
|
|
520
|
+
| Method | Purpose |
|
|
521
|
+
|--------|---------|
|
|
522
|
+
| `engine.block.create('text')` | Create text block for multilingual content |
|
|
523
|
+
| `engine.block.setString(id, 'text/text', value)` | Set text content in any language |
|
|
524
|
+
| `engine.block.getString(id, 'text/text')` | Get text content |
|
|
525
|
+
| `engine.block.setEnum(id, 'text/horizontalAlignment', value)` | Set horizontal text alignment (Auto, Left, Right, Center) |
|
|
526
|
+
| `engine.block.getEnum(id, 'text/horizontalAlignment')` | Get horizontal text alignment |
|
|
527
|
+
| `engine.block.getTextEffectiveHorizontalAlignment(id)` | Get resolved alignment (Auto resolves to Left or Right) |
|
|
528
|
+
| `engine.block.setTypeface()` | Apply typeface to text block |
|
|
529
|
+
| `engine.block.getTypeface()` | Get current typeface of text block |
|
|
530
|
+
| `engine.block.setFloat(id, 'text/fontSize', value)` | Set font size |
|
|
531
|
+
| `engine.block.setTextColor()` | Set color for character range |
|
|
532
|
+
| `engine.variable.setString()` | Create or update text variable for multilingual content |
|
|
533
|
+
| `engine.block.export()` | Export block or scene to various formats |
|
|
549
534
|
|
|
550
535
|
## Troubleshooting
|
|
551
536
|
|
|
@@ -553,10 +538,10 @@ Testing with representative text samples in all target languages helps identify
|
|
|
553
538
|
|
|
554
539
|
**Issue**: Characters render as replacement glyphs (□ or ?) instead of the intended script.
|
|
555
540
|
|
|
556
|
-
**Solution**: The
|
|
541
|
+
**Solution**: The font lacks glyphs for the text content. Use fonts with appropriate Unicode coverage:
|
|
557
542
|
|
|
558
543
|
- Verify font supports required Unicode blocks
|
|
559
|
-
-
|
|
544
|
+
- Use Noto fonts family for comprehensive coverage
|
|
560
545
|
- Check font file format compatibility (TTF, OTF, WOFF2)
|
|
561
546
|
- Ensure font files are accessible with correct URIs
|
|
562
547
|
|
|
@@ -569,36 +554,38 @@ Testing with representative text samples in all target languages helps identify
|
|
|
569
554
|
- Verify alignment is set to 'Auto' (default) or explicitly 'Right'
|
|
570
555
|
- Use `engine.block.getTextEffectiveHorizontalAlignment(block)` to check resolved alignment
|
|
571
556
|
- Verify font includes bidirectional layout features
|
|
572
|
-
- Check that font supports RTL scripts
|
|
573
557
|
- Test with known RTL-compatible fonts (Noto Sans Arabic, Noto Sans Hebrew)
|
|
558
|
+
- Check that text content includes strong RTL directional characters
|
|
574
559
|
|
|
575
|
-
###
|
|
560
|
+
### Complex Script Features Display Incorrectly
|
|
576
561
|
|
|
577
|
-
**Issue**:
|
|
562
|
+
**Issue**: Ligatures or diacritical marks appear disconnected or mispositioned.
|
|
578
563
|
|
|
579
564
|
**Solution**: Use fonts specifically designed for the target script:
|
|
580
565
|
|
|
581
566
|
- Verify font includes GSUB/GPOS OpenType tables
|
|
582
567
|
- Use script-specific Noto fonts
|
|
583
568
|
- Check font includes required OpenType layout features
|
|
584
|
-
-
|
|
569
|
+
- Ensure font supports the specific script's shaping requirements
|
|
570
|
+
|
|
571
|
+
### Variable Substitution Not Working
|
|
572
|
+
|
|
573
|
+
**Issue**: Variable placeholders like `{{variable}}` display literally instead of substituting values.
|
|
585
574
|
|
|
586
|
-
|
|
575
|
+
**Solution**: Ensure variables are defined before creating text blocks:
|
|
587
576
|
|
|
588
|
-
|
|
577
|
+
- Call `engine.variable.setString()` before setting text content
|
|
578
|
+
- Verify variable names match exactly (case-sensitive)
|
|
579
|
+
- Check variable placeholders use double curly braces `{{name}}`
|
|
580
|
+
- Confirm variables are set in the same engine instance
|
|
589
581
|
|
|
590
|
-
**Solution**: The engine's automatic bidirectional handling should resolve most cases. If issues persist:
|
|
591
582
|
|
|
592
|
-
- Test with different fonts to verify bidirectional support
|
|
593
|
-
- Use Unicode directional formatting characters sparingly (RLM U+200F, LRM U+200E)
|
|
594
|
-
- Verify text editor preserves directional markers
|
|
595
|
-
- Check that text content includes proper strong directional characters
|
|
596
583
|
|
|
597
584
|
---
|
|
598
585
|
|
|
599
586
|
## More Resources
|
|
600
587
|
|
|
601
|
-
- **[
|
|
588
|
+
- **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
|
|
602
589
|
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
603
|
-
- **[Web Documentation](./
|
|
604
|
-
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
590
|
+
- **[Web Documentation](./node.md)** - Interactive documentation with examples
|
|
591
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|