# FontLab/Scripting
## About

This chapter is about making and using Python macros within FontLab and FontLab Studio, the Font creation tools from FontLab.

## Goals

The aim is to support two learning paths:
* To give non-programming font designers a complete and efficient tutorial to get useful scripting work done.
* To give programmers, who are not font designers, an efficient tour of the APIs so they can write scripts for a font designer.
"Efficient" covers several points:
* That all the materials needed are in one place, so the reader doesn't have to trawl for fragmented info (i.e. it's done here once for everybody)
* That the material is presented in the appropriate sequence to achieve a given purpose. (need to collate a list of tutorial examples)
* Compatibility between versions of FontLab, Python and OS's are given, so a working combination can be assembled in every case.
* Application configuration (options, modes) necessary for each task are included, either for manual setup or as part of the scripting.

## About the Draft Outline

* Please add comments on goals, sequence, content and structure.
* This contents outline is a flat text for now, so we can just throw stuff in. Items will find their place as the content shapes up.
* When the outline has stopped morphing and is stable, a chapter hierarchy will be created out of it (e.g. FontLab/Scripting/sub-chaptername/sub-sub-chaptername). The tree will be stable when any new page you can think of has a natural and obvious place in the hierarchy.
* Place comments in italics to distinguish them from actual content.
* Bullets are used instead of numbered points to make structure shuffling easy.

## Outline Contents

* FontLab & Python version compatibility
* Macro Setup (Jul 18, 2006)
* Creating Macros
* Using Macros
* System Macros
* Tal Leming's Script browser
* Python Language
** The Python home page
** Wikibook Programming:Python
** List of pages with Python programs
* FontLab API
** The Unofficial FontLab 4.5 Python reference
* RoboFab API
** RoboFab Home Page
** The LettError RoboFab Wiki and Feedback page
* General Macros
** Application Configuration
*** Process standardization
**** Font Import
**** Editing Environment
**** Font Generation
** Font Validation
*** FontFont's FontQA framework
** Family Generation
* Specialized Macros
** Ben Kiel's RoboFab Macros and Article
** Erik van Blokland's Superpolator
** Adam Twardoch's FontLab on steroids starter pack.
** Glyph Transfer
*** Scripted transfer between VFBs
*** Transfer via XML
**** TTX
**** UFO
**** ftxdumperfuser
** Glyph Statistics
* External Resources
** The FontLab Scripting mail list and archive
** FontLab Studio 5 Windows & Mac mailing lists.

## Categorization note

Suggest this goes in the Computer Software/Software Guides/ bookshelf as it is about scripting within a specific application. The scripting language used is Python, so arguably it is a sub-specialization of Python, but against that is the fact that Python is being used to call the application-specific font APIs in FontLab and RoboFab. These make it a font-specific dialect of Python. It could be placed in Language guides as its own category (Font Processing), or in Domain-specific languages, though this is stretching it as it uses pure Python. However, most people other than font designers would not choose this context to learn pure Python, so its not just Python. The categorization options would appear to be:
* Computer Software/Software Guides/FontLab Scripting
* Domain-specific languages/Font Processing/FontLab Scripting
* Programming Languages/FontLab Scripting
* Another option which has now been done, is to roll this book into a larger one about FontLab in general. i.e. /FontLab/Scripting/
* This makes the category choice simple. i.e. Computer Software/Software Guides/FontLab