Composer en arabe sous InDesign CS4
July 13, 2010 | Snippets | fr
Comme l'avait souligné Thomas Phinney dans son célèbre billet « World-Ready Composer in Adobe CS4 », InDesign embarque depuis la CS4 une ribambelle d'outils secrets capables de gérer l'écriture de droite à gauche propre à certaines langues, la bidirectionnalité et autres fonctionnalités qu'on pensait jusqu'alors réservées à InDesign ME. Ces goodies restent peu documentés mais sont déjà largement expérimentables grâce au scripting.
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 !
Comments
Is there a way to get Wordalizer to work with Arabic text?
Hi Khaled,
I answer you in the Wordalizer FAQ's thread:
http://www.indiscripts.com/post/201...
Merci beaucoup pour ce script, je commençais à désespérer de devoir installer Indesign ME !
Bonjour,
J'essaie de télécharger le script.
Résultat : j'ai 1 fichier texte !!!!!
Comment faire ?
Merci
@ obin
Clic droit >
Enregistrer la cible sous...
@+
Marc
Bonjour et merci pour ce script super efficace (et très bien expliqué...) Voilà c'est dit.
Sinon, puisque vous êtes miraculeux, sauriez-vous également comment faire avec Illustrator CS5 (non ME) pour gérer le problème... ?
merci d'avance
laurent