1
0
Fork 0
pysilfont/docs/examples.md

237 lines
7.5 KiB
Markdown
Raw Permalink Normal View History

# Pysilfont example scripts
In addition to the main pysilfont [scripts](scripts.md), there are many further scripts under pysilfont/examples and its sub-directories.
They are not maintained in the same way as the main scripts, and come in many categories including:
- Scripts under development
- Examples of how to do things
- Deprecated scripts
- Left-overs from previous development plans!
Note - all FontForge-based scripts need updating, since FontForge (as "FF") is no longer a supported tool for execute()
Some are documented below.
## Table of scripts
| Command | Status | Description |
| ------- | ------ | ----------- |
| [accesslibplist.py](#accesslibplist) | ? | Demo script for accessing fields in lib.plist |
| [chaindemo.py](#chaindemo) | ? | Demo of how to chain calls to multiple scripts together |
| [ffchangeglyphnames](#ffchangeglyphnames) | ? | Update glyph names in a ttf font based on csv file |
| [ffcopyglyphs](#ffcopyglyphs) | ? | Copy glyphs from one font to another, without using ffbuilder |
| [ffremovealloverlaps](#ffremovealloverlaps) | ? | Remove overlap on all glyphs in a ttf font |
| [FFmapGdlNames.py](#ffmapgdlnames) | ? | Write mapping of graphite names to new graphite names |
| [FFmapGdlNames2.py](#ffmapgdlnames2) | ? | Write mapping of graphite names to new graphite names |
| [FLWriteXml.py](#flwritexml) | ? | Outputs attachment point information and notes as XML file for TTFBuilder |
| [FTaddEmptyOT.py](#ftaddemptyot) | ? | Add empty Opentype tables to ttf font |
| [FTMLnorm.py](#ftmlnorm) | ? | Normalize an FTML file |
| [psfaddGlyphDemo.py](#psfaddglyphdemo) | ? | Demo script to add a glyph to a UFO font |
| [psfexpandstroke.py](#psfexpandstroke) | ? | Expands an unclosed UFO stroke font into monoline forms with a fixed width |
| [psfexportnamesunicodesfp.py](#psfexportnamesunicodesfp) | ? | Outputs an unsorted csv file containing the names of all the glyphs in the default layer |
| [psfgenftml.py](#psfgenftml) | ? | generate ftml tests from glyph_data.csv and UFO |
| [psftoneletters.py](#psftoneletters) | ? | Creates Latin script tone letters (pitch contours) |
| [xmlDemo.py](#xmldemo) | ? | Demo script for use of ETWriter |
---
#### accesslibplist
Usage: **` python accesslibplist.py ...`**
_([Standard options](docs.md#standard-command-line-options) may also apply)_
Demo script for accessing fields in lib.plist
---
#### chaindemo
Usage: **` python chaindemo.py ...`**
_([Standard options](docs.md#standard-command-line-options) also apply)_
Demo of how to chain calls to multiple scripts together.
Running
`python chaindemo.py infont outfont --featfile feat.csv --uidsfile uids.csv`
will run execute() against psfnormalize, psfsetassocfeat and psfsetassocuids passing the font, parameters
and logger objects from one call to the next. So:
- the font is only opened once and written once
- there is a single log file produced
---
#### ffchangeglyphnames
Usage: **`ffchangeglyphnames [-i INPUT] [--reverse] ifont [ofont]`**
_([Standard options](docs.md#standard-command-line-options) also apply)_
Update the glyph names in a ttf font based on csv file.
Example usage:
```
ffchangeglyphnames -i glyphmap.csv font.ttf
```
will update the glyph names in the font based on mapping file glyphmap.csv
If \-\-reverse is used, it change names in reverse.
---
#### ffcopyglyphs
Usage: **`ffcopyglyphs -i INPUT [-r RANGE] [--rangefile RANGEFILE] [-n NAME] [--namefile NAMEFILE] [-a] [-f] [-s SCALE] ifont [ofont]`**
_([Standard options](docs.md#standard-command-line-options) also apply)_
_This section is Work In Progress!_
optional arguments:
```
-h, --help show this help message and exit
-i INPUT, --input INPUT
Font to get glyphs from
-r RANGE, --range RANGE
StartUnicode..EndUnicode no spaces, e.g. 20..7E
--rangefile RANGEFILE
File with USVs e.g. 20 or a range e.g. 20..7E or both
-n NAME, --name NAME Include glyph named name
--namefile NAMEFILE File with glyph names
-a, --anchors Copy across anchor points
-f, --force Overwrite existing glyphs in the font
-s SCALE, --scale SCALE
Scale glyphs by this factor
```
---
#### ffremovealloverlaps
Usage: **`ffremovealloverlaps ifont [ofont]`**
_([Standard options](docs.md#standard-command-line-options) also apply)_
Remove overlap on all glyphs in a ttf font
---
#### FFmapGdlNames
Usage: **` python FFmapGdlNames2.py ...`**
_([Standard options](docs.md#standard-command-line-options) may also apply)_
Write mapping of graphite names to new graphite names based on:
- two ttf files
- the gdl files produced by makeGdl run against those fonts
This could be different versions of makeGdl
- a csv mapping glyph names used in original ttf to those in the new font
---
#### FFmapGdlNames2
Usage: **` python FFmapGdlNames.py ...`**
_([Standard options](docs.md#standard-command-line-options) may also apply)_
Write mapping of graphite names to new graphite names based on:
- an original ttf font
- the gdl file produced by makeGdl when original font was produced
- a csv mapping glyph names used in original ttf to those in the new font
- pysilfont's gdl library - so assumes pysilfonts makeGdl will be used with new font
---
#### FLWriteXml
Usage: **` python FLWriteXml.py ...`**
_([Standard options](docs.md#standard-command-line-options) may also apply)_
Outputs attachment point information and notes as XML file for TTFBuilder
---
#### FTaddEmptyOT
Usage: **` python FTaddEmptyOT.py ...`**
_([Standard options](docs.md#standard-command-line-options) may also apply)_
Add empty Opentype tables to ttf font
---
#### FTMLnorm
Usage: **` python FTMLnorm.py ...`**
_([Standard options](docs.md#standard-command-line-options) may also apply)_
Normalize an FTML file
---
#### psfaddGlyphDemo
Usage: **` python psfaddGlyphDemo.py ...`**
_([Standard options](docs.md#standard-command-line-options) may also apply)_
Demo script to add a glyph to a UFO font
---
#### psfexpandstroke
Usage: **`psfexpandstroke infont outfont expansion`**
_([Standard options](docs.md#standard-command-line-options) also apply)_
Expands the outlines (typically unclosed) in an UFO stroke font into monoline forms with a fixed width.
Example that expands the stokes in a UFO font `SevdaStrokeMaster-Regular.ufo` by 13 units on both sides, giving them a total width of 26 units, and writes the result to `Sevda-Regular.ufo`.
```
psfexpandstroke SevdaStrokeMaster-Regular.ufo Sevda-Regular.ufo 13
```
Note that this only expands the outlines - it does not remove any resulting overlap.
---
#### psfexportnamesunicodesfp
Usage: **` python psfexportnamesunicodesfp.py ...`**
_([Standard options](docs.md#standard-command-line-options) may also apply)_
Outputs an unsorted csv file containing the names of all the glyphs in the default layer and their primary unicode values.
Format name,usv
---
#### psfgenftml
Usage: **` python psfgenftml.py ...`**
_([Standard options](docs.md#standard-command-line-options) may also apply)_
generate ftml tests from glyph_data.csv and UFO
---
#### psftoneletters
Usage: **`psftoneletters infont outfont`**
_([Standard options](docs.md#standard-command-line-options) also apply)_
This uses the parameters from the UFO lib.plist org.sil.lcg.toneLetters key to create Latin script tone letters (pitch contours).
Example usage:
```
psftoneletters Andika-Regular.ufo Andika-Regular.ufo
```
---
#### xmlDemo
Usage: **` python xmlDemo.py ...`**
_([Standard options](docs.md#standard-command-line-options) may also apply)_
Demo script for use of ETWriter