Created
November 17, 2011 04:30
-
-
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 file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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