Recent RSS
From:  Jürg Lehni
Date:  15. November 2012, 17:46

Adobe Illustrator CS6 has been available since late April 2012, so more and more users were starting to wonder when Scriptographer for CS6 will finally be released.

Aware that it is time for an official answer, I am finally taking time to formulate one. It was far from easy, but a decision has been made: I am not able to spend more time on making CS6 a reality, and instead will focus my time on creating a very decent alternative and escape route with Paper.js, a JavaScript library for the open web and the HTML5 canvas element that Jonathan Puckey and I have launched in 2011 and are very actively developing since.

The idea for Paper.js grew out of a research and teaching project at ECAL that we have been conducting during 2008 - 2011, in which we used Scriptographer to teach programming to visually thinking students in blocks of one-week workshops. In parallel to these workshops, as part of the research project we continuously improved, streamlined and simplified Scriptographer's API, added new functionality based on observations from the classes and wrote many tutorials and materials to facilitate the teaching. All this material has partly lead to Paper.js' success, since it allowed us to provide great documentation from day one.

Based on these experiences, we are now in the process of planning an online coding environment using Paper.js that sports a subset of the features that the Illustrator interface is offering, which was so beneficial when teaching programming since it allowed the inspection of the visual elements that the code produces.

I am currently using an early version of this environment for teaching at UCLA in Los Angeles, and results are so encouraging that we believe in a couple of months we will not be looking back anymore, and will be able to offer a decent replacement to the environment you came to love working with, with plenty of options to import and export graphics.

Since CS3, I have been regularly reaching out to Adobe, proposing to join forces in some way, as I thought they should be interested in our efforts. Unfortunately, they did not seem to be, or did not have the resources to spare. And with their own scripting environments based on automatic wrapping of native API still not receiving the love and attention to detail it deserves (their API is unstructured and hard to use), I just don't think that Adobe sees the necessity to invest energy there at this time. Personally I believe that is a mistake, and I have been trying to tell them so on multiple occasions. But given the quite fundamental changes that many of their applications have been undergoing in the past revisions, it is understandable that there were many more pressing issues.

For example, during the last decade, Illustrator for Mac went from OS 9 to OS X Carbon (yes, early versions of Scriptographer still run on Classic Mac OS!), from CodeWarrior to XCode, and now finally from 32 bit Carbon to 64 bit Cocoa. In CS5, the coordinate system was vertically flipped.

All these changes meant that with each new version, there was an increasing amount of time and effort to be spent to get Scriptographer functioning again. And unfortunately, the changes required to make Illustrator CS6 work on 64 bit Cocoa lead to the complete removal of ADM (Adobe Dialog Manager), the API that Scriptographer's whole user interface is built with. Even worse, there is no new API to replace it, developers are encouraged to either build UI in Flash, or use another cross-platform framework of their choice, and figure out how to integrate it in Illustrator, which is far from trivial.

So a large amount of time would have to be spent to port Scriptographer to CS6, work that will neither be pretty nor fun. Many people have suggested launching a Kickstarter campaign to raise the funds to facilitate such a transition. I considered doing so for a while, but then realised that with all other projects and commitments, I simply do not have the time to spare to do so, even with sufficient funds, as employing a programmer and coordinating it all would still be a huge effort.

But with all the source code open-sourced and available over at GitHub, anyone with the energy and time at hands to do so should feel free to take on the project and make it live on. I would be more than happy and willing to outline the changes required for CS6 which I have pretty much mapped out in my head already, and assist the process.

Developing Scriptographer has often been painful and more hard labor than anticipated, due to its ever changing host. While working on Paper.js with Jonathan, I came to realise again how much fun programming can and should be.

While it is hard to abandon one of my darlings, the benefits from doing so simply overweight the downsides, and it is with an unburdened heart that I look forward to the new endeavours.

Many thanks to all of you who supported this platform over the years! We hope we are not losing you as users. Why don't you move along with us to the new platform that is shaping with Paper.js!

To those who now feel betrayed or see the base for their work in danger: There is nothing wrong with using CS5 for the time being, which is what we will have to do as well, since many of our own works depend on it to function.

I apologize for the bad news, and hope you can all appreciate this decision.

PS: I have removed the donation button from this website now. If anybody has recently donated money in the hope of fueling the transition to CS6, please get in touch and I will send you a refund.

From:  Jürg Lehni
Date:  3. December 2010, 16:25

Version 2.9.070 just landed, fixing a row of nasty bugs that were introduced by the recent coordinate switch, but also adding a row of great new features, mostly related to the User Interface.

Interface Changes

It is now possible to navigate through the Scriptographer palette using only keyboard short-cuts, increasing the hacker-friendliness of the plugin a lot. When in the list of scripts, the arrow keys navigate the tree list of folders and files in the same way as we are used to for example from OS X's Finder: Up and Down navigate to the previous / next item in the list, while Left and Right collapse and expand folders. Hitting Enter then opens the currently selected script in the script editor of choice, and Cmd-E executes the script. New scripts can be created using Shift-Alt-Cmd-E, and all running scripts can be stopped using Cmd-., even when the interface is unresponsive due to a running loop. If you forgot about these short-cuts, just hover over the buttons in the palette to see them again.

So why don't you download it straight away and play around with the new features. And if you are curious, here a mini change-log for the most important changes and bug fixes.


  • Fix coordinate system adjustments when working with gradient colors
  • Fix coordinate system related crash on CS3
  • Fix coordinate system adjustments on CS2
  • Correct matrix orientation of PlacedFile, PlacedSymbol and Raster objects
  • Fix update flicker when modifying TextItem objects.
  • Cause screen redraw in tools when new items are created already in onMouseDown, not only when the first onMouseDrag happens.
  • Fix issue in Console where document would not point to the currently active document.
  • Change short-cuts to not collide with internally assigned ones for tab-switching.
  • Fix 'Unknown error' exception in Dialog.fileOpen on Windows.
From:  Jürg Lehni
Date:  3. October 2010, 22:23

Just in time for this week's Scriptographer workshop at the ECAL School of Art and Design in Lausanne, we finished work on the new version 2.9. Download while it's fresh!

In this release we added a few important changes that we would like to highlight here:

Coordinate System Switch

To go along with Adobe's switch of the coordinate system orientation in Illustrator CS5, we decided to make the top-down coordinate system the standard setting for new scripts. But since many existing scripts were written specifically for the bottom-up coordinate system that was standard until version 2.8 and CS4, we added a simple switch for users to turn on backward compatibility in their scripts:

script.coordinateSystem = 'bottom-up';

Hello Degrees, Goodbye Radians

And while we were in the process of yet another transition (maybe one day we will become as good at it as Apple), we figured this was a good moment to say goodbye to the confusing angle units in radians, and welcome the good old degrees as the new standard. Again, there is a switch for scripts to turn on radians instead and remain compatible with old code:

script.angleUnits = 'radians';

We have added these switches to all scripts on the Scriptographer website, to make them backwards compatible with the latest version.

Read in more detail about these changes in the tutorials about The Coordinate System and Vector Geometry.


Speaking of tutorials, we spent a lot of time improving the existing ones and writing new ones such as Working with Mouse Vectors, so you may want to have a close look at all the Tutorials.

New Relative Drawing Functions

We also added very convenient new relative drawing functions to the Path object, such as pathItem.lineBy(vector), pathItem.arcBy(vector) and pathItem.curveBy(throughVector, toVector). These define vector shapes relative to the current location using vectors, which in our experience results in much simpler and more readable code.

These are exciting times for Scriptographer users, as working with Scriptographer keeps getting simpler, and learning to do so too, thanks to a growing amount of resources available online. We think it is a good moment to join the community, as the API is getting more and more finalized and stable too.

On this occasion we would like to express a big thank you to ECAL for helping us with our focused efforts by means of a financed research project.

Yours truly, the Scriptographer Team (Florian, Jonathan, and Jürg)

1 Comment
From:  Jürg Lehni
Date:  20. July 2010, 15:36

Version 2.8.055 of Scriptographer was just released, including one new feature and a row of bug fixes:

The very convenient pathItem.getIntersections(other) function was added, which returns all intersections between two path items as CurveLocation objects, whether they are open or closed, simple or compound paths. Behind the scenes, this function performs a simple form of bezier clipping. CurveLocation objects are now used in many other places as well. See the reference for further information, and bear with us while we prepare tutorials to explain their function better. This is functionality that the Pathfinder does not offer itself. In fact, none of the Adobe Illustrator tools offer this exact functionality, so we believe this should open doors to a nice new family of scripts.

The release also fixes these known isues:

  • Fix wrong active components in prompt dialogs.
  • Fix an issue where list components were not correctly initialised based on their initially set value.
  • Fix an issues with keyboard short-cuts: Bringing up the main palette window and the console should work now when documents are open.
  • Fix various issues with SpinEdits positions and enabled / disabled states.
  • Fix an issue where displaying prompt dialogs would mess up the undo history.

As always, happy coding, and do not hesitate to get in touch if things do not work as they should or are not clear.

From:  Jürg Lehni
Date:  8. June 2010, 16:46

Here a short note to inform you that the new version 2.8.052 was just uploaded. The previously released 2.8.050 introduced a few regressions due to the many under the hood changes, which were quickly identified and fixed. There are not enough changes for a real change-log, but below a list of what was fixed.

If you encountered problems with the previous release, please test again with this one first before reporting.

  • Fixed a bug in document.getItems(attributes) that prevented attributes.type from being recognised correctly.
  • Fixed UI layout issues with older scripts that directly work with the ADM package, where certain items would appear to have their bounding rectangles set incorrectly.
  • Fixed an error in the undo history tracking code that prevented item deletion from being detected in some situations and therefore leading to item.isValid() falsely returning true for such items.
  • Got version for Mac CS to compile correctly again.
  • Fixed a row of issues in the code that generates the Reference templates and improved documentation for some of the new features.
08.08.14, 15:24
15.05.14, 14:23
02.03.14, 19:16
18.11.13, 14:48
22.03.13, 03:05
22.02.13, 15:45
10.01.17, 16:37
19.02.16, 06:03
19.02.16, 06:00
17.01.16, 11:00
12.01.16, 13:10
25.11.15, 08:19
Script of the Moment
The Allineatorium 15.05.14