12 maart 2017

Acroniemen in kleinkapitaal voor iedereen zonder OT fonts

.
Natuurlijk, er bestaat een prima GREP om in een alineastijl acroniemen (VN, AOW, VPRO) om te zetten in OpenType kleinkapitaal.

Maar: wanneer je een font gebruikt zonder ingebouwde (OpenType) kleinkapitalen werkt dit niet.

Daar had ik een scriptje voor die dit (op basis van een GREP zoek-actie, dat wel) toch kon doen: via een tekenstijl met kleinkapitaal.

Voortbordurend op het vorige script heb ik dit script nu ook als een menu-item voor je: wederom een startup script dan een menu voor je maakt Acroniemen omzetten onder het Zoek/vervang menu in het menu Bewerken:



Hier is de bron van het script:

#targetengine "Acroniemen"
// THE MAIN PROCESS
// -----------------------------------------------
var fcaTitle = "Acroniemen omzetten";
var fcaHandlers = {
'beforeDisplay' : function(ev)
{
if(app.documents.length==0){return}
var doc=app.documents[0]
},
'onInvoke' : function()
{
if(app.documents.length==0){return}
var doc=app.documents[0];
// Change the following to your style name!
var character_style_name = 'Acroniemen';
try{var range = app.selection[0].parentStory}
catch (err){var range = doc}
//comment out next line if you do not want styles.
var charStyle = GetCharacterStyle(character_style_name,doc);
app.findGrepPreferences = null;
app.findGrepPreferences.findWhat="(?<=\\W)\\u\\u+(?=\\W)";
var finds=range.findGrep();
for (var i=0;i<finds.length;i++){
finds[i].changecase(ChangecaseMode.lowercase);
//comment out next line if you do not want styles.
finds[i].applyCharacterStyle (charStyle)
//uncomment next line if you do not want styles.
//finds[i].capitalization=Capitalization.smallCaps;
}
function GetCharacterStyle(styleName,doc){
var charStyles=doc.allCharacterStyles;
for(var i=0;i<charStyles.length;i++){
if(charStyles[i].name==styleName){
return charStyles[i];
}
}
return doc.characterStyles.add({name:styleName,capitalization:Capitalization.smallCaps});
}
}
};
// THE MENU INSTALLER
// -----------------------------------------------
var fcaMenuInstaller = fcaMenuInstaller||
(function(mnuTitle,mnuHandlers)
{
// 1. Create the script menu action
var mnuAction = app.scriptMenuActions.add(mnuTitle);
// 2. Attach the event listener
var ev;
for( ev in mnuHandlers )
{
mnuAction.eventListeners.add(ev,mnuHandlers[ev]);
}
// 3. Create the menu item
var fileMenu = app.menus.item("$ID/Main").submenus.item("$ID/&Edit");
var refItem = fileMenu.menuItems.item("$ID/EditMenu_FindChange");
fileMenu.menuItems.add(mnuAction,LocationOptions.after,refItem);
return true;
})(fcaTitle, fcaHandlers);


Maar je kunt het hier ook kant-en-klaar downloaden om in de map Scripts/startup scripts te plaatsen:
https://www.dropbox.com/s/how4t5mcyig0snh/Acroniemen_menu2.jsx?dl=0
(Deze kant-en-klare versie toont een menu als alles klaar is, wel zo handig)




1 opmerking:

Patries zei
Deze reactie is verwijderd door de auteur.