Skip to content

Instantly share code, notes, and snippets.

@jessefreeman
Created November 17, 2011 04:30
Show Gist options
  • Save jessefreeman/1372365 to your computer and use it in GitHub Desktop.
Save jessefreeman/1372365 to your computer and use it in GitHub Desktop.
This is a simple script to create a font as a sprite sheet for use in a game.
// this script is a variation of http://blogs.adobe.com/jkost/2010/09/add-file-name-as-text-layer.html
if ( documents.length > 0 )
{
var originalRulerUnits = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
try
{
var docRef = activeDocument;
var characters = ["!","\"","#","$","%","\'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","'","]","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"];
for( var i = 0; i < characters.length; i++)
{
// Now create a text layer at the front
var myLayerRef = docRef.artLayers.add();
myLayerRef.kind = LayerKind.TEXT;
myLayerRef.name = characters[i];
var myTextRef = myLayerRef.textItem;
myTextRef.contents = characters[i];
var x = myLayerRef.bounds[0];
var width = myLayerRef.bounds[2] - x;
var y = myLayerRef.bounds[1];
var height = myLayerRef.bounds[3] - y;
//alert(myLayerRef.bounds, width);
// off set the text to be in the middle
myTextRef.position = new Array( docRef.width/2, docRef.height/2 );
myTextRef.size = 20;
myLayerRef.rasterize(RasterizeType.TEXTCONTENTS);
}
docRef.trim();
}
catch( e )
{
// An error occurred. Restore ruler units, then propagate the error back
// to the user
preferences.rulerUnits = originalRulerUnits;
throw e;
}
if (documents.length > 0)
{
// --------------------------
var activeLayer = docRef.activeLayer;
numLayers = docRef.artLayers.length;
var cols = docRef.width;
var spriteX = docRef.width;
// resize the canvas
newX = numLayers * spriteX;
docRef.resizeCanvas( newX, docRef.height, AnchorPosition.TOPLEFT );
// move the layers around
for (i=0; i < numLayers; i++)
{
docRef.artLayers[i].visible = 1;
var movX = spriteX*i;
try
{
docRef.artLayers[i].translate(movX, 0);
}
catch(e)
{
//nothing
}
}
}
// Everything went Ok. Restore ruler units
preferences.rulerUnits = originalRulerUnits;
}
else
{
alert( "You must have a document open to create a font sprite sheet." );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment