I've been doing a lot of localization work recently and ran into a problem. How do I select a reasonable default font for the locale the script is running in?
There is no API for this, but there are a couple of other ways that seem to do the trick, at least in CS5+.
Code: Select allStdlib.getDefaultFont = function() {
var str;
if (isMac()) {
str = localize("$$$/Project/Effects/Icon/Font/Name/Mac=Lucida Grande");
} else {
str = localize("$$$/Project/Effects/Icon/Font/Name/Win=Tahoma");
}
var font = Stdlib.determineFont(str);
if (!font) {
var f = Stdlib.getApplicationProperty(sTID('fontLargeName'));
if (f != undefined) {
font = Stdlib.determineFont(f);
}
}
return font;
};
If someone else has figured out something better, please let me know...
Default Font
Default Font
Here's a way of getting the default TypeTool font. It's fairly well behaved and should only fail
if there is already a TypeTool preset called "__temp__".
Code: Select all//
// This attemps gets the default Type Tool font. Since there is no
// direct API for this, we have to save the current type tool settings,
// reset the settings, then restore the saved settings.
// This will fail if there already exists a tool preset called
// "__temp__". Working around this shortcoming would make things even
// more complex than they already are
//
function getDefaultTypeToolFont () {
var str = undefined;
var typeTool = "typeCreateOrEditTool";
try {
// get the current tool
var ref = new ActionReference();
ref.putEnumerated(cTID("capp"), cTID("Ordn"), cTID("Trgt") );
var desc = executeActionGet(ref);
var tid = desc.getEnumerationType(sTID('tool'));
var currentTool = typeIDToStringID(tid);
// switch to the type tool
if (currentTool != typeTool) {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putClass(sTID(typeTool));
desc.putReference(cTID('null'), ref);
executeAction(cTID('slct'), desc, DialogModes.NO);
}
var ref = new ActionReference();
ref.putEnumerated(cTID("capp"), cTID("Ordn"), cTID("Trgt") );
var desc = executeActionGet(ref);
var tdesc = desc.hasKey(cTID('CrnT')) ?
desc.getObjectValue(cTID('CrnT')) : undefined;
if (tdesc) {
// save the current type tool settings
var desc4 = new ActionDescriptor();
var ref4 = new ActionReference();
ref4.putClass( sTID('toolPreset') );
desc4.putReference( cTID('null'), ref4 );
var ref5 = new ActionReference();
ref5.putProperty( cTID('Prpr'), cTID('CrnT') );
ref5.putEnumerated( cTID('capp'), cTID('Ordn'), cTID('Trgt') );
desc4.putReference( cTID('Usng'), ref5 );
desc4.putString( cTID('Nm '), "__temp__" );
// this will fail if there is already a preset called __temp__
executeAction( cTID('Mk '), desc4, DialogModes.NO );
// reset the type tool
var desc2 = new ActionDescriptor();
var ref2 = new ActionReference();
ref2.putProperty( cTID('Prpr'), cTID('CrnT') );
ref2.putEnumerated( cTID('capp'), cTID('Ordn'), cTID('Trgt') );
desc2.putReference( cTID('null'), ref2 );
executeAction( cTID('Rset'), desc2, DialogModes.NO );
// get the current type tool settings
var ref = new ActionReference();
ref.putEnumerated(cTID("capp"), cTID("Ordn"), cTID("Trgt") );
var desc = executeActionGet(ref);
var tdesc = desc.getObjectValue(cTID('CrnT'));
// get the default type tool font
var charOpts = tdesc.getObjectValue(sTID("textToolCharacterOptions"));
var styleOpts = charOpts.getObjectValue(cTID("TxtS"));
str = styleOpts.getString(sTID("fontPostScriptName"));
// restore the type tool settings
var desc9 = new ActionDescriptor();
var ref10 = new ActionReference();
ref10.putName( sTID('toolPreset'), "__temp__" );
desc9.putReference( cTID('null'), ref10 );
executeAction( cTID('slct'), desc9, DialogModes.NO );
// delete the temp setting
var desc11 = new ActionDescriptor();
var ref12 = new ActionReference();
ref12.putEnumerated( sTID('toolPreset'), cTID('Ordn'), cTID('Trgt') );
desc11.putReference( cTID('null'), ref12 );
executeAction( cTID('Dlt '), desc11, DialogModes.NO );
}
// switch back to the original tool
if (currentTool != typeTool) {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putClass(tid);
desc.putReference(cTID('null'), ref);
executeAction(cTID('slct'), desc, DialogModes.NO);
}
} catch (e) {
return undefined;
}
return str;
};
if there is already a TypeTool preset called "__temp__".
Code: Select all//
// This attemps gets the default Type Tool font. Since there is no
// direct API for this, we have to save the current type tool settings,
// reset the settings, then restore the saved settings.
// This will fail if there already exists a tool preset called
// "__temp__". Working around this shortcoming would make things even
// more complex than they already are
//
function getDefaultTypeToolFont () {
var str = undefined;
var typeTool = "typeCreateOrEditTool";
try {
// get the current tool
var ref = new ActionReference();
ref.putEnumerated(cTID("capp"), cTID("Ordn"), cTID("Trgt") );
var desc = executeActionGet(ref);
var tid = desc.getEnumerationType(sTID('tool'));
var currentTool = typeIDToStringID(tid);
// switch to the type tool
if (currentTool != typeTool) {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putClass(sTID(typeTool));
desc.putReference(cTID('null'), ref);
executeAction(cTID('slct'), desc, DialogModes.NO);
}
var ref = new ActionReference();
ref.putEnumerated(cTID("capp"), cTID("Ordn"), cTID("Trgt") );
var desc = executeActionGet(ref);
var tdesc = desc.hasKey(cTID('CrnT')) ?
desc.getObjectValue(cTID('CrnT')) : undefined;
if (tdesc) {
// save the current type tool settings
var desc4 = new ActionDescriptor();
var ref4 = new ActionReference();
ref4.putClass( sTID('toolPreset') );
desc4.putReference( cTID('null'), ref4 );
var ref5 = new ActionReference();
ref5.putProperty( cTID('Prpr'), cTID('CrnT') );
ref5.putEnumerated( cTID('capp'), cTID('Ordn'), cTID('Trgt') );
desc4.putReference( cTID('Usng'), ref5 );
desc4.putString( cTID('Nm '), "__temp__" );
// this will fail if there is already a preset called __temp__
executeAction( cTID('Mk '), desc4, DialogModes.NO );
// reset the type tool
var desc2 = new ActionDescriptor();
var ref2 = new ActionReference();
ref2.putProperty( cTID('Prpr'), cTID('CrnT') );
ref2.putEnumerated( cTID('capp'), cTID('Ordn'), cTID('Trgt') );
desc2.putReference( cTID('null'), ref2 );
executeAction( cTID('Rset'), desc2, DialogModes.NO );
// get the current type tool settings
var ref = new ActionReference();
ref.putEnumerated(cTID("capp"), cTID("Ordn"), cTID("Trgt") );
var desc = executeActionGet(ref);
var tdesc = desc.getObjectValue(cTID('CrnT'));
// get the default type tool font
var charOpts = tdesc.getObjectValue(sTID("textToolCharacterOptions"));
var styleOpts = charOpts.getObjectValue(cTID("TxtS"));
str = styleOpts.getString(sTID("fontPostScriptName"));
// restore the type tool settings
var desc9 = new ActionDescriptor();
var ref10 = new ActionReference();
ref10.putName( sTID('toolPreset'), "__temp__" );
desc9.putReference( cTID('null'), ref10 );
executeAction( cTID('slct'), desc9, DialogModes.NO );
// delete the temp setting
var desc11 = new ActionDescriptor();
var ref12 = new ActionReference();
ref12.putEnumerated( sTID('toolPreset'), cTID('Ordn'), cTID('Trgt') );
desc11.putReference( cTID('null'), ref12 );
executeAction( cTID('Dlt '), desc11, DialogModes.NO );
}
// switch back to the original tool
if (currentTool != typeTool) {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putClass(tid);
desc.putReference(cTID('null'), ref);
executeAction(cTID('slct'), desc, DialogModes.NO);
}
} catch (e) {
return undefined;
}
return str;
};
-
- Posts: 5
- Joined: Mon Jul 09, 2018 11:30 am
- Location: Virgin Islands
Default Font
I kind of messed up my notepad, and I dont know what the default font is can anyone help me? Just check your notepad. Please...
Re: Default Font
Consolas / Normal / 11 / West (Script)