Is there a script command that can reassign the adobe paragraph composer to 'World paragraph composer'?

The InDesign ExtendScript API(12.0) does not seem to have a command.

I basically want to change the type of composer in multiple documents (basically in multiple books. Each book containing approximately 50 documents).

2 Answers 2


You can set the composer by writing to a story's (or another text item's) composer property. The tricky part is to find out what to set it to, as this is also dependent on your locale and differs if you use international versions of InDesign. That's why you need to resort to language independent identifiers. There are scripts out there that can generate all these identifiers for you, however, if you just need this one for the composer property, here you go:

myStory.composer = "$ID/HL Composer Optyca";  // world paragraph composer

// or alternatively, here are the other three common composer values
// myStory.composer = "$ID/HL Single Optyca";  // world single line composer
// myStory.composer = "$ID/HL Composer";  // Adobe paragraph composer
// myStory.composer = "$ID/HL Single";  // Adobe single line composer
  • What does $ID/HL mean?
    – One Face
    Commented May 24, 2020 at 1:49
  • There are multiple stories in each document. But the text is contained in only one story. Is there a way to apply the composer for the entire document?
    – One Face
    Commented May 24, 2020 at 1:53
  • 1
    Sure, get all the stories of the document (myDoc.stories) and then just loop over them and assign the the composer value to each one. Not idea what HL in $ID/HL actually stands for.
    – mdomino
    Commented May 24, 2020 at 15:18
  • I did a document.ChangeComposer() which automatically changed the composer to world paragraph composer. Will the locale affect this function?
    – One Face
    Commented May 25, 2020 at 4:54
  • 1
    Interesting, didn't know about this method. This seems not to allow any parameters and always sets it to "optyca" which corresponds to world format. This would then be locale independent. So, in this specific case, this method should be the fastest for your purposes, I guess.
    – mdomino
    Commented May 25, 2020 at 18:55

There is an property called Composer in multiple classes of the API that allows changing the composer.

The Paragraph class, Story class, etc... has this property.

The Document class does not seem to have this Composer property. However, it has a method called changeComposer(). On applying this method, the composer changed to Adobe World-Ready Paragraph Composer.

Hope this helps

  • A few notes: Using the string "Adobe World-Ready Paragraph Composer" does work language independent. This might of course not be a problem, if you only ever use a US english version. Going via app.changeGrepPreferences.composer is probably much slower then setting the value of a paragraph directly. And lastly, if you need to change entire documents, it will be much faster to change these properties in regard to the stories, not each single paragraph, as a story is the largest text entity in an InDesign document, so will need to change fewer of those. See my answer for details.
    – mdomino
    Commented May 23, 2020 at 17:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.