Peter Kahrel et Thomas Silkjær — entre autres scripteurs de renom —, ont identifié très tôt les nouveaux paramètres « bidi » cachés sous les turbines d'InDesign CS4. Ces attributs sont visibles depuis le Scripting DOM mais invisibles à l'utilisateur lambda. On en trouve une bonne synthèse dans le billet « Right-to-left, Arabic, Hebrew, Hindi... in InDesign CS4 (none-ME) » de T. Silkjær, ainsi que dans le PDF « CS4 Right-to-left properties/enumeration » réalisé par P. Kahrel.

Note. — Rappelons aussi que de nombreux plugins se proposent de prendre en charge les fonctionnalités dites « World-Ready » dissimulées dans votre version d'InDesign. Notamment :
Word Tools chez In-Tools ;
ScribeDOOR chez WinSoft ;
idRTL chez Zartech ;
IndicPlus chez MetaDesign.

Ainsi dispose-t-on à notre insu d'une véritable boîte à outils pour composer correctement des textes en arabe, en hébreu, etc., dans la version classique d'InDesign, mais encore faut-il savoir scripter pour ouvrir cette boîte de Pandore ! Il n'a donc pas fallu longtemps pour que des scripts fleurissent dans les forums spécialisés.

Les utilisateurs anglo-américains n'ont probablement rencontré aucune difficulté pour faire fonctionner ces scripts, mais vous avez peut-être constaté qu'ils causaient une erreur chez vous si vous travaillez sur une suite localisée en français. Cela tient au fait que la propriété composer disponible dans les classes de type Text, les styles, etc., attend le nom d'un compositeur Adobe sous forme de chaîne localisée dans l'interface courante. En clair, une instruction du type : myParStyle.composer = "Adobe World-Ready Paragraph Composer"; provoquera une erreur incompréhensible si votre script ne s'exécute pas dans une UI anglophone.

Il s'ensuite que la plupart des scripts disponibles sur Internet, tels que le create_arabic_pstyle.jsx livré par Thomas Silkjær, ne sont pas exploitables à moins de relocaliser votre version d'InDesign.

Mais la bonne solution consiste plutôt à passer dans votre script la clé interne des deux compositeurs « World-Ready » — à savoir :"$ID/HL Composer Optyca" et "$ID/HL Single Optyca" — et de traduire ces clés dans la locale courante grâce à app.translateKeyString(). Le script fonctionnera alors dans n'importe quelle déclinaison d'InDesign CS4 ou plus.

À titre d'illustration, voici comment construire un style de paragraphe Formatage-Arabe dans votre document de travail. Une fois le script exécuté, il suffit d'appliquer ce style aux textes que vous souhaitez composer en arabe.

psName = 'Formatage-Arabe';
 
// localize "Adobe World-Ready Paragraph Composer" :
wrParagraphComposer = app.
    translateKeyString("$ID/HL Composer Optyca");
 
// localize "Adobe World-Ready Single-line Composer" :
wrSingleLineComposer = app.
    translateKeyString("$ID/HL Single Optyca");
 
function main()
    {
    if( !app.documents.length )
        {
        alert( "Veuillez ouvrir un document!" );
        return;
        }
 
    try {
        createArabicParStyle(app.activeDocument, psName);
        }
    catch(ex)
        {
        alert("Impossible de creer le style " +
            psName + " :\r" + ex );
        }
    }
 
function createArabicParStyle(doc, stylename)
    {
    var ps = doc.paragraphStyles.item(stylename);
 
    ps = (ps.isValid) ?
        ps.getElements()[0] :
        doc.paragraphStyles.add ({name: stylename});
 
    ps.properties = {
        composer: wrParagraphComposer, // wrSingleLineComposer
        paragraphDirection: ParagraphDirectionOptions.rightToLeftDirection,
        characterDirection: CharacterDirectionOptions.rightToLeftDirection,
        justification: Justification.rightJustified,
        paragraphJustification: ParagraphJustificationOptions.arabicJustification,
        diacriticPosition: DiacriticPositionOptions.opentypePosition,
        digitsType: DigitsTypeOptions.arabicDigits,
        kashidas: KashidasOptions.defaultKashidas
        };
    }
 
main();
 

Bien entendu, n'oubliez pas d'adapter le style résultant à vos besoins. Assurez-vous en particulier que sa police de caractères supporte les caractères arabes !