- install Atom
- install Script package via
Atom > Preferences > Install
- install DrawBot
- install free trial of Gitbox or GitHub app for Mac or GitHub app for Windows
- set up an account on GitHub
A very brief intro to Python 2 and its use in font engineering and type design.
- basic concepts
- expressions
- variables
- types
- mutable vs. immutable types
- methods
- assignment
- commands
- blocks (indentation)
- environments (Python interactive mode, Python command, Atom with Script package, font editors, …)
- note on naming variables
- basic types (
None
,int
(integer),float
,bool
(boolean),tuple
) - arithmetic operations (
+
,-
,*
,/
,%
,()
), priority - comparisons (
==
,<
,>
,!=
,<>
,<=
,>=
,in
,not in
,is
,is not
) - boolean operations (
and
,or
,not
,()
) - basic commands
- assignments (
=
,+=
,-=
) - comment
- assignments (
- ☕️
- conditionals (
if
,elif
,else
)- note on indentation
- nested conditionals
- strings (
str
)- accessing items in strings
- string operations (
+
,*
) - escape and special characters (
\"
,\n
,\t
,\\
) - multi-line strings
- unicode strings
- formatting strings (also with a tuple)
- string methods (
startswith
,endswith
,join
,split
)
- tuples (
tuple
)- accessing items in tuples
- modifying tuples
- packing, unpacking
- error messages
- task: try to code and run simple Python scripts in Atom
- lists (
list
)- creating lists
- assignment does not create new list
- accessing list items
- nested lists
- list operations (
+
,*
,in
) - list and string slicing
- list methods (
append
,extend
,insert
,sort
,reverse
,index
) - list functions (
sorted
,reversed
,sum
,len
,range
,min
,max
) - removing items from lists
- iterative loops (
for
)- looping over list or range
- nesting loops
- loops with conditionals nested
- using indexes
- mention
while
loops
- task: write scripts with loops
- ☕️
- dictionaries (
dict
)- creating new dictionary
- adding an item to a dict, changing an item
- what can be a key
- dictionary methods (
keys
,values
,items
) - iterating over dictionary (conversion to
list
happens) - testing if key exists (
in
)
- built-in functions
- re-typing (
int
,str
,list
, …) enumerate
zip
and creatingdict
fromlists
abs
- re-typing (
- introduction to Drawbot
- task: write scripts for DrawBot
- 🍺🍟
- functions (
def
)- parameters
- returning value
- modules (
import
) - note on name spaces
- ☕️ tea break
- explain Git
- task: work with this repo
- clone this repo
- create your own forder within the repo
- push the changes to the GitHub
- pull other students’ commits
- task: advanced code with DrawBot
- introduction to Glyphs API (alternatively Robofab)
- task: write scripts for Glyphs
- ☕️ tea break
- task: write scripts for Glyphs
- 🚀home
set
typewhile
loopbreak
,else
,continue
statements used with loops- dealing with exceptions (
try
,except
) object
oriented programming
- GitHub - hosting of Git repos – free public repos, large community
- BitBucket – free private and public repos
- Python documentation
- Robodocs
- Stack Overflow
- Robofab