initial import

git-svn-id: http://svn.robofab.com/trunk@1 b5fa9d6c-a76f-4ffd-b3cb-f825fc41095c
This commit is contained in:
Erik van Blokland 2008-01-07 17:40:34 +00:00
commit 3646055ea2
1018 changed files with 94896 additions and 0 deletions

View File

@ -0,0 +1,6 @@
/makeDocumentation.py/1.7/Thu Sep 4 07:53:53 2003//
/ToDo.txt/1.32/Fri Oct 3 12:25:36 2003//
D/robofabManual////
D/robofabDocs////
/typotechnica.txt/1.12/Result of merge+Sun Jan 23 20:14:27 2005//
D/TextDoc////

View File

@ -0,0 +1 @@
R D/TextDoc////

View File

@ -0,0 +1 @@
projects/robofab/Documentation

1
Documentation/CVS/Root Normal file
View File

@ -0,0 +1 @@
:pserver:Erik@letterror.xs4all.nl:/Library/cvsroot

94
Documentation/ToDo.txt Normal file
View File

@ -0,0 +1,94 @@
RoboFab ToDo List
A list of things that need to be done before RoboThon. Add things to the list that need to be done. If something is absolutely necessary, add it to the 1.0 list. Otherwise, add it to the 2.0 list.
############
RoboFab 1.0: The Dawn of a New Age
############
BUGS to be fixed before release:
- I think we need to have a look at that "scheduledForDeletion" stuff. For example,
I think the following scenario may not work: delete "A", add new "A".
Documentation:
---------------
- nail down & document the UFO/GLIF formats, at least the basic stuff
(This is well underway at the wiki)
- write doc strings for all properties
- write doc strings for public stuff
- comment out doc strings on private stuff
General Stuff:
---------------
- write setup.py script.
- invent really really easy install script.
- include iGlyph (as an app anyway)
- remove all deprecated stuff
- remove lib magic, replace with less surprising plain dicts.
- Write tests.
The UFO, GLIF and Pens:
---------------
- Create test glyphs in the demo font that excercise vairous outline
features and edge cases.
- Write tests.
- Attempt to convert all 'fab pens to FontTools pens? We're very close --
I think the biggest thing to do is convert all addComponent() calls
and implementations. It will be worthwile: it will cause pretty massive
code deletion. (Getting closer!!)
FontLab
-------
- Write tests.
Objects:
---------------
Objects will need a complete inspection. Perhaps sort of "F* Up Everything
In The Font For Testing Purposes" script is in order.
- clean up all the unneeded stuff.
objectsBase:
- work out removeBPoint method (yeah, right)
objectsFL:
- get rid of all the getFoo methods in RGlyph? this should be a 1.1 change as it touches many modules.
objectsRF:
- test various contour methods.
- make sure ALL changes are flagging the font and needed objects as changed.
############
RoboFab 2.0: Bigger and Badder.
############
- Make RoboFab 1.0 better
objects:
-glyph.contours, glyph.anchors and glyph.components should return a
special list. this list would be a new style class subclassed from a dict
object. the main avantage of this would be that we could make normal list
methods work with the objects, ie glyph.contours.append(...), del
glyph.contours[X] instead of the crummy appendFoo and removeFoo
stuff that is in there now. This could also apply to contour.segments and
segment.points as well.
objectsFL:
- write better algo for writing kerning back into FL font.
objectsRF:
- work out save as. (waiting on new glifLib before proceeding.)
- rework NewFont. as it is now, it doesn't really work since a GlyphSet is
needed for some special methods, but when a new font is created it doesn't
have a path and therefore a GlyphSet. i (tal) have some ideas on how to fix
this, but i will wait until version 1.1. this will also need the save as method
mentioned above.
The UFO and GLIF:
---------------
- new/revised glifLib and glif format that supports more than one glyph in a file.
- Factor out format-specific info from font.info/fontinfo.plist into a to be
designed "targets" object and file. A "target" is a description for a specific
output file, or set of output files. This will need lots of experimentation
and careful design. Think of it as a "generate fonts" toolkit.

View File

@ -0,0 +1,99 @@
#FLM: Batch change font info
# Paul van der Laan, 2004/09/13
from robofab.interface.all.dialogs import GetFolder
from robofab.world import RFont, OpenFont, CurrentFont
import os
# Een functie om een map met files door te zoeken op vfb files
def collectSources(root):
files = []
ext = ['.vfb']
names = os.listdir(root)
for n in names:
if os.path.splitext(n)[1] in ext:
files.append(os.path.join(root, n))
return files
myID = 5116478
# main loop
mySource = GetFolder()
if mySource is not None:
myFiles = collectSources(mySource)
for myFile in myFiles:
myrfFont = None
try:
myrfFont = OpenFont(myFile)
myFont = fl.font
# myFont.width="Medium (normal)"
# myFamilyname = myFont.family_name
# myFont.family_name = myFamilyname
# myFont.font_name = myFont.family_name + "-" + myFont.style_name
# myFont.full_name = myFont.family_name + " " + myFont.style_name
# myFont.menu_name = myFont.family_name
# myFont.apple_name = myFont.family_name + "-" + myFont.style_name
# myFont.year=1999
# myFont.copyright="Designed by Paul van der Laan. Copyright (c) 1999 Type Invaders. Flex is a trademark of Type Invaders. Flex is protected by copyright law. Unauthorized copying or modification of any of its data is illegal. Modified by TEFF for exclusive use by Van Dale Lexicografie bv, 2004."
# myFont.notice=""
# myFont.designer="Paul van der Laan"
# myFont.designer_url="http://www.type-invaders.com"
# myFont.vendor_url="http://www.type-invaders.com"
# myFont.version_major = 0
# myFont.version_minor = 97
# myFont.version = "000.970"
# myID = myFont.unique_id
myFont.unique_id = myID
myFont.fond_id = int(str(myID)[-4:])
# myFont.vendor="INVD"
myID = myID + 1
# myFont.panose[0] = 2
# myFont.panose[1] = 0
# myFont.panose[2] = 5
# myFont.panose[3] = 6
# myFont.panose[4] = 2
# myFont.panose[5] = 0
# myFont.panose[6] = 0
# myFont.panose[7] = 2
# myFont.panose[8] = 0
# myFont.panose[9] = 4
# myFont.pcl_id = -1
# myFont.vp_id = -1
# myFont.ms_id= 2
# myFont.upm = 1000
# myFont.ascender[0] = 784
# myFont.descender[0] = -240
# myFont.cap_height[0] = 712
# myFont.x_height[0] = 498
# if myFont.style_name == "Italic":
# myFont.italic_angle = 12.0
# myFont.slant_angle = 0.0
# myFont.underline_position=-100
# myFont.underline_thickness=50
# myFont.ms_charset=0
# myFont.default_character="bullet"
myrfFont.update()
myrfFont.save()
finally:
if myrfFont is not None:
myrfFont.close(False)
print "Done"

View File

@ -0,0 +1,47 @@
#FLM: Batch version change
# Paul van der Laan, 2004/10/25
from robofab.interface.all.dialogs import GetFolder
from robofab.world import RFont, OpenFont, CurrentFont
import os
# Een functie om een map met files door te zoeken op vfb files
def collectSources(root):
files = []
ext = ['.vfb']
names = os.listdir(root)
for n in names:
if os.path.splitext(n)[1] in ext:
files.append(os.path.join(root, n))
return files
# main loop
mySource = GetFolder()
if mySource is not None:
myFiles = collectSources(mySource)
for myFile in myFiles:
myrfFont = None
try:
myrfFont = OpenFont(myFile)
myFamilyname = myrfFont.info.familyName
myStylename = myrfFont.info.styleName
myFamilyname = myFamilyname.replace("V01", "V02")
myrfFont.info.familyName = myFamilyname
myrfFont.info.fontName = myFamilyname + "-" + myStylename
myrfFont.info.fullName = myFamilyname + " " + myStylename
myrfFont.info.menuName = myFamilyname
myrfFont.info.fondName = myFamilyname + "-" + myStylename
print myFamilyname + "-" + myStylename
myrfFont.update()
myrfFont.save()
finally:
if myrfFont is not None:
myrfFont.close(False)
print "Done"

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,76 @@
#FLM: Batch export glyphs to rtf
# Paul van der Laan, 2004/11/02
from robofab.interface.all.dialogs import GetFolder, ProgressBar
from robofab.world import RFont, OpenFont
import os
mySize = 16
myLeading = 22
# Een functie om een map met files door te zoeken op vfb files
def collectSources(root):
files = []
ext = ['.vfb']
names = os.listdir(root)
for n in names:
if os.path.splitext(n)[1] in ext:
files.append(os.path.join(root, n))
return files
# main loop
mySource = GetFolder()
if mySource is not None:
myPath = mySource + ":glyph overview.rtf"
myrtfFile = open(myPath, "w")
myrtfFile.write("{\\rtf1\\mac\\ansicpg1252" + chr(13))
myPagebreak = ""
myFiles = collectSources(mySource)
for myFile in myFiles:
myFont = None
try:
myFont = OpenFont(myFile)
myflFont = fl.font
myEncoding = myflFont.encoding
myFontfam = myFont.info.familyName
myFontstyle = myFont.info.styleName
myList = [""] * len(myEncoding)
for myGlyph in myFont:
myGlyphname = myGlyph.name
myIndex = myEncoding.FindName(myGlyphname)
if myIndex is not -1:
myList[myIndex] = myGlyph.unicode
if myFont.info.designer is None:
myFont.info.designer = "-"
if myFont.info.year is None:
myFont.info.year = "1452"
myBar = ProgressBar('Exporting glyphs...', len(myList))
myLine = myPagebreak + "{\\fonttbl\\f0\\fnil\\cpg819 " + myFontfam + "-" + myFontstyle + ";}" + chr(13) + "\\f0\\sl-" + str(myLeading*20) + "\\fs" + str(mySize*2) + chr(13) + "\\par "
myrtfFile.write(myLine)
for myItem in range (0, len(myList)):
if myList[myItem]:
myHex = hex(myItem)[-2:]
myHex = myHex.replace("x", "0")
myWord = "\u" + str(myList[myItem]) + "\\'" + myHex + " "
myrtfFile.write(myWord)
myBar.tick()
myPagebreak = "\page" + chr(13)
myBar.close()
finally:
if myFont is not None:
myFont.close(False)
print "Generated glyph overview for", myFontfam + "-" + myFontstyle
myrtfFile.write(chr(13) + "}")
myrtfFile.close()
print "Done"
# \f0\fnil\fcharset77 AndaleMono; # \f1\fswiss\fcharset77 Helvetica; # \f2\fnil\fcharset77 Georgia;

View File

@ -0,0 +1,130 @@
#FLM: Batch font report
from robofab.interface.all.dialogs import GetFolder
from robofab.world import OpenFont, CurrentFont
import os
# Een functie om een map met files door te zoeken op vfb files
def collectSources(root):
files = []
ext = ['.vfb']
names = os.listdir(root)
for n in names:
if os.path.splitext(n)[1] in ext:
files.append(os.path.join(root, n))
return files
# main loop
myFolder = GetFolder()
myPath = myFolder + ":fontreport.txt"
myRecord = ["Filename", "Glyphs", "Kerning pairs", "Family name", "Weight", "Weight code", "Width", "Style", "Style name", "Font name", "Full name", "Menu name", "FOND name", "OT Family name", "OT Style name" ,"OT Mac name", "Year", "Copyright", "Trademark", "Notice", "Designer", "Designer URL", "Vendor URL", "Version", "Revision", "Version", "TrueType version", "TrueType unique ID", "Type 1 unique ID", "TrueType vendor", "PANOSE", "PCL ID", "VP ID", "MS ID", "UPM", "Ascender", "Descender", "Cap height", "X height", "Italic angle", "Slant angle", "Underline", "Thickness", "Monospaced", "MS Charset", "Default char", "Mac FOND ID", "Blue fuzz", "Blue scale", "Blue shift", "Blue values", "Other blues", "Family blues", "Other family blues", "Force bold", "Horizontal stems", "Vertical stems"]
myLen=len(myRecord)
myFile = open(myPath, "w")
for myItem in myRecord:
myFile.write(str(myItem + "\t"))
myFile.write("\r")
myFile.close()
if myFolder is not None:
myFiles = collectSources(myFolder)
for mySourcefile in myFiles:
myflFont = None
try:
myrfFont = OpenFont(mySourcefile)
myflFont = fl.font
for x in range(myLen):
myRecord[x]=""
if myflFont.file_name:
myFilename = str(myflFont.file_name).split(":")
myRecord[0] = myFilename[-1]
myRecord[1] = str(len(myflFont))
myRecord[2] = str(len(myrfFont.kerning.keys()))
if myflFont.family_name: myRecord[3] = str(myflFont.family_name)
if myflFont.weight: myRecord[4] = str(myflFont.weight)
myRecord[5] = str(myflFont.weight_code)
if myflFont.width: myRecord[6] = str(myflFont.width)
myRecord[7] = str(myflFont.font_style)
# 1=italic, 32=bold, 64=regular
if myflFont.style_name: myRecord[8] = str(myflFont.style_name)
if myflFont.font_name: myRecord[9] = str(myflFont.font_name)
if myflFont.full_name: myRecord[10] = str(myflFont.full_name)
if myflFont.menu_name: myRecord[11] = str(myflFont.menu_name)
if myflFont.apple_name: myRecord[12] = str(myflFont.apple_name)
if myflFont.pref_family_name: myRecord[13] = str(myflFont.pref_family_name)
if myflFont.pref_style_name: myRecord[14] = str(myflFont.pref_style_name)
if myflFont.mac_compatible: myRecord[15] = str(myflFont.mac_compatible)
myRecord[16] = str(myflFont.year)
if myflFont.copyright: myRecord[17] = str(myflFont.copyright)
if myflFont.trademark: myRecord[18] = str(myflFont.trademark)
if myflFont.notice: myRecord[19] = str(myflFont.notice)
if myflFont.designer: myRecord[20] = str(myflFont.designer)
if myflFont.designer_url: myRecord[21] = str(myflFont.designer_url)
if myflFont.vendor_url: myRecord[22] = str(myflFont.vendor_url)
myRecord[23] = str(myflFont.version_major)
myRecord[24] = str(myflFont.version_minor)
if myflFont.version: myRecord[25] = str(myflFont.version)
if myflFont.tt_version: myRecord[26] = str(myflFont.tt_version)
if myflFont.tt_u_id: myRecord[27] = str(myflFont.tt_u_id)
myRecord[28] = str(myflFont.unique_id)
if myflFont.vendor: myRecord[29] = str(myflFont.vendor)
if myflFont.panose: myRecord[30] = str(myflFont.panose)
myRecord[31] = str(myflFont.pcl_id)
myRecord[32] = str(myflFont.vp_id)
myRecord[33] = str(myflFont.ms_id)
myRecord[34] = str(myflFont.upm)
myRecord[35] = str(myflFont.ascender[0])
myRecord[36] = str(myflFont.descender[0])
myRecord[37] = str(myflFont.cap_height[0])
myRecord[38] = str(myflFont.x_height[0])
myRecord[39] = str(myflFont.italic_angle)
myRecord[40] = str(myflFont.slant_angle)
myRecord[41] = str(myflFont.underline_position)
myRecord[42] = str(myflFont.underline_thickness)
myRecord[43] = str(myflFont.is_fixed_pitch)
myRecord[44] = str(myflFont.ms_charset)
if myflFont.default_character: myRecord[45] = str(myflFont.default_character)
myRecord[46] = str(myflFont.fond_id)
myRecord[47] = str(myflFont.blue_fuzz[0])
myRecord[48] = str(myflFont.blue_scale[0])
myRecord[49] = str(myflFont.blue_shift[0])
myRecord[50] = str(myflFont.blue_values[0])
myRecord[51] = str(myflFont.other_blues[0])
myRecord[52] = str(myflFont.family_blues[0])
myRecord[53] = str(myflFont.family_other_blues[0])
myRecord[54] = str(myflFont.force_bold[0])
myRecord[55] = str(myflFont.stem_snap_h[0])
myRecord[56] = str(myflFont.stem_snap_v[0])
myFile = open(myPath, "r+")
myFile.seek(0,2)
for myItem in myRecord:
myFile.write(str(myItem + "\t"))
myFile.write("\r")
myFile.close()
finally:
if myrfFont is not None:
myrfFont.close(False)
print "Done"

View File

@ -0,0 +1,71 @@
#FLM: Batch generate Mac, Win & Unix
# Generates three formats at once:
# Macintosh PS Type 1
# Windows PS Type 1
# Unix PS Type 1
from robofab.interface.all.dialogs import GetFolder
from robofab.world import RFont, OpenFont
import os
# Een functie om een map met files door te zoeken op vfb files
def collectSources(root):
files = []
ext = ['.vfb']
names = os.listdir(root)
for n in names:
if os.path.splitext(n)[1] in ext:
files.append(os.path.join(root, n))
return files
# A little function for making folders. we'll need it later.
def makeFolder(path):
#if the path doesn't exist, make it!
if not os.path.exists(path):
os.makedirs(path)
# maak verschillende mapjes aan voor de fontformaten
def makeDestination(root):
basePath = os.path.join(root, 'Generated',)
macPath = os.path.join(root, 'Generated', 'mac ps type 1')
makeFolder(macPath)
winPath = os.path.join(root, 'Generated', 'win ps type 1')
makeFolder(winPath)
unixPath = os.path.join(root, 'Generated', 'unix ps type 1')
makeFolder(unixPath)
return basePath
# genereer de drie formaten
def generateOne(f, dstDir):
dstMac = os.path.join(dstDir, 'mac ps type 1')
f.generate('mactype1', dstMac)
dstWin = os.path.join(dstDir, 'win ps type 1')
f.generate('pctype1', dstWin)
dstUnix = os.path.join(dstDir, 'unix ps type 1')
f.generate('pctype1ascii', dstUnix)
print "%s - %s"%(f.info.uniqueID, f.info.fullName)
# print unique ID en naam in het output window
# dialog voor het selecteren van een folder
f = GetFolder()
if f is not None:
paths = collectSources(f)
dstDir = makeDestination(f)
print 'UniqueID Full fontname'
print '-------------------------------------------'
for f in paths:
font = None
try:
font = OpenFont(f)
generateOne(font, dstDir)
finally:
if font is not None:
fl.font.modified = 0
font.close(False)
print 'done'

View File

@ -0,0 +1,59 @@
#FLM: Batch generate Mac
from robofab.interface.all.dialogs import GetFolder
from robofab.world import RFont, OpenFont
import os
# Een functie om een map met files door te zoeken op vfb files
def collectSources(root):
files = []
ext = ['.vfb']
names = os.listdir(root)
for n in names:
if os.path.splitext(n)[1] in ext:
files.append(os.path.join(root, n))
return files
# A little function for making folders. we'll need it later.
def makeFolder(path):
#if the path doesn't exist, make it!
if not os.path.exists(path):
os.makedirs(path)
# maak verschillende mapjes aan voor de fontformaten
def makeDestination(root):
basePath = os.path.join(root, 'Generated',)
macPath = os.path.join(root, 'Generated', 'mac ps type 1')
makeFolder(macPath)
return basePath
# genereer de drie formaten
def generateOne(f, dstDir):
dstMac = os.path.join(dstDir, 'mac ps type 1')
f.generate('mactype1', dstMac)
print "%s - %s"%(f.info.uniqueID, f.info.fullName)
# print unique ID en naam in het output window
# dialog voor het selecteren van een folder
f = GetFolder()
if f is not None:
paths = collectSources(f)
dstDir = makeDestination(f)
print 'UniqueID Full fontname'
print '-------------------------------------------'
for f in paths:
font = None
try:
font = OpenFont(f)
generateOne(font, dstDir)
finally:
if font is not None:
fl.font.modified = 0
font.close(False)
print 'done'

View File

@ -0,0 +1,59 @@
#FLM: Batch generate Win TT
from robofab.interface.all.dialogs import GetFolder
from robofab.world import RFont, OpenFont
import os
# Een functie om een map met files door te zoeken op vfb files
def collectSources(root):
files = []
ext = ['.vfb']
names = os.listdir(root)
for n in names:
if os.path.splitext(n)[1] in ext:
files.append(os.path.join(root, n))
return files
# A little function for making folders. we'll need it later.
def makeFolder(path):
#if the path doesn't exist, make it!
if not os.path.exists(path):
os.makedirs(path)
# maak verschillende mapjes aan voor de fontformaten
def makeDestination(root):
basePath = os.path.join(root, 'Generated',)
macPath = os.path.join(root, 'Generated', 'win truetype')
makeFolder(macPath)
return basePath
# genereer de drie formaten
def generateOne(f, dstDir):
dstMac = os.path.join(dstDir, 'win truetype')
f.generate('otfttf', dstMac)
print "%s"%(f.info.fullName)
# print unique ID en naam in het output window
# dialog voor het selecteren van een folder
f = GetFolder()
if f is not None:
paths = collectSources(f)
dstDir = makeDestination(f)
print 'Full fontname'
print '-------------------------------------------'
for f in paths:
font = None
try:
font = OpenFont(f)
generateOne(font, dstDir)
finally:
if font is not None:
fl.font.modified = 0
font.close(False)
print 'done'

View File

@ -0,0 +1,66 @@
#FLM: Batch generate Win & Unix
# Generates two formats at once:
# Windows PS Type 1
# Unix PS Type 1
from robofab.interface.all.dialogs import GetFolder
from robofab.world import RFont, OpenFont
import os
# Een functie om een map met files door te zoeken op vfb files
def collectSources(root):
files = []
ext = ['.vfb']
names = os.listdir(root)
for n in names:
if os.path.splitext(n)[1] in ext:
files.append(os.path.join(root, n))
return files
# A little function for making folders. we'll need it later.
def makeFolder(path):
#if the path doesn't exist, make it!
if not os.path.exists(path):
os.makedirs(path)
# maak verschillende mapjes aan voor de fontformaten
def makeDestination(root):
basePath = os.path.join(root, 'Generated',)
winPath = os.path.join(root, 'Generated', 'win ps type 1')
makeFolder(winPath)
unixPath = os.path.join(root, 'Generated', 'unix ps type 1')
makeFolder(unixPath)
return basePath
# genereer de drie formaten
def generateOne(f, dstDir):
dstWin = os.path.join(dstDir, 'win ps type 1')
f.generate('pctype1', dstWin)
dstUnix = os.path.join(dstDir, 'unix ps type 1')
f.generate('pctype1ascii', dstUnix)
print "%s - %s"%(f.info.uniqueID, f.info.fullName)
# print unique ID en naam in het output window
# dialog voor het selecteren van een folder
f = GetFolder()
if f is not None:
paths = collectSources(f)
dstDir = makeDestination(f)
print 'UniqueID Full fontname'
print '-------------------------------------------'
for f in paths:
font = None
try:
font = OpenFont(f)
generateOne(font, dstDir)
finally:
if font is not None:
fl.font.modified = 0
font.close(False)
print 'done'

View File

@ -0,0 +1,74 @@
#FLM: Batch interpolate
# Paul van der Laan, 2004/08/11
from robofab.world import SelectFont, CurrentFont
from robofab.interface.all.dialogs import ProgressBar, GetFolder
myFolder = GetFolder()
# myPars = ((.21, "ExtraLight", 200), (.55, "Light", 300)) # Kievit factor, weight, weightcode
myPars = ((.36, "Medium", 500), (.63, "Bold", 700)) # Flex factor, weight, weightcode
myMin = SelectFont('Select source font one:')
if myMin:
myMax = SelectFont('Select source font two:')
if myMax:
for myInterpol in myPars:
myFactor = myInterpol[0]
myWeight = myInterpol[1]
myWeightcode = myInterpol[2]
myFamilyname = myMin.info.familyName # "Flex"
fl.CallCommand(fl_cmd.FileNew)
myDest = CurrentFont()
bar = ProgressBar('Interpolating...', len(myMin))
for myChar in myMin:
myCharname = myChar.name
myNewglyph = myDest.newGlyph(myCharname)
myNewglyph.interpolate(myFactor, myMin[myCharname], myMax[myCharname])
# myDest[myCharname].mark = 26
bar.tick()
bar.close()
myDest.update()
myMinkern = myMin.kerning
myMaxkern = myMax.kerning
myDestkern = myDest.kerning
myDestkern.interpolate(myMinkern,myMaxkern,myFactor,clearExisting=True)
myDest.info.familyName = myFamilyname
fl.font.weight = myWeight
fl.font.weight_code = myWeightcode
myStylename = myWeight + myMin.info.styleName[-3:]
myDest.info.styleName = myStylename
myDest.info.fontName = myMin.info.familyName + "-" + myStylename
myDest.info.fullName = myMin.info.familyName + " " + myStylename
myDest.info.menuName = myMin.info.familyName
myDest.info.fondName = myMin.info.familyName + "-" + myStylename
myDest.info.year = 1999
# myDest.info.copyright = u"2001 Mike Abbink. Produced by Type Invaders"
myDest.info.designer = "Paul van der Laan"
fl.font.upm = 1000
fl.font.ascender[0] = 730
fl.font.descender[0] = -270
fl.font.x_height[0] = 480
fl.font.cap_height[0] = 616
fl.font.default_character = "bullet"
myEncoding= os.path.join(fl.path, r"Encoding", r"MACROMAN.ENC")
fl.font.encoding.Load(myEncoding)
myDest.update()
myPath = myFolder + ":" + myFamilyname + "-" + myStylename + ".vfb"
fl.font.Save(myPath)
print myFamilyname + "-" + myStylename
myDest.close(False)
print "Done"

View File

@ -0,0 +1,40 @@
#FLM: Batch remove glyphs
# Paul van der Laan, 2004/10/25
from robofab.interface.all.dialogs import GetFolder
from robofab.world import RFont, OpenFont, CurrentFont
import os
myBlacklist = ("nbspace", ".notdef", ".null")
# Een functie om een map met files door te zoeken op vfb files
def collectSources(root):
files = []
ext = ['.vfb']
names = os.listdir(root)
for n in names:
if os.path.splitext(n)[1] in ext:
files.append(os.path.join(root, n))
return files
# main loop
mySource = GetFolder()
if mySource is not None:
myFiles = collectSources(mySource)
for myFile in myFiles:
myrfFont = None
try:
myrfFont = OpenFont(myFile)
for myGlyph in myBlacklist:
if myrfFont.has_key(myGlyph):
myrfFont.removeGlyph(myGlyph)
print myGlyph, "removed from", myrfFont.info.familyName + "-" + myrfFont.info.styleName
myrfFont.update()
myrfFont.save()
finally:
if myrfFont is not None:
myrfFont.close(False)
print "Done"

View File

@ -0,0 +1,44 @@
#FLM: Batch save as font info name
# Paul van der Laan, 2005/01/10
from robofab.interface.all.dialogs import GetFolder
from robofab.world import RFont, OpenFont, CurrentFont
import os
# Een functie om een map met files door te zoeken op vfb files
def collectSources(root):
files = []
ext = ['.vfb']
names = os.listdir(root)
for n in names:
if os.path.splitext(n)[1] in ext:
files.append(os.path.join(root, n))
return files
# main loop
mySource = GetFolder()
if mySource is not None:
myFiles = collectSources(mySource)
for myFile in myFiles:
myFont = None
try:
myFont = OpenFont(myFile)
myFamilyname = myFont.info.familyName
myStylename = myFont.info.styleName
myPath = mySource + ":" + myFamilyname + "-" + myStylename + ".vfb"
fl.font.Save(myPath)
print myFamilyname + "-" + myStylename
finally:
if myFont is not None:
myFont.close(False)
print "Done"

View File

@ -0,0 +1,78 @@
#FLM: Batch win rename Flex
# Paul van der Laan, 2004/09/13
from robofab.interface.all.dialogs import GetFolder
from robofab.world import RFont, OpenFont, CurrentFont
import os
# Een functie om een map met files door te zoeken op vfb files
def collectSources(root):
files = []
ext = ['.vfb']
names = os.listdir(root)
for n in names:
if os.path.splitext(n)[1] in ext:
files.append(os.path.join(root, n))
return files
# Rename
def renameFont(f, myDest):
if f.info.fontName:
f.info.fontStyle=64
myStylename = f.info.styleName
if "Italic" in myStylename:
myStylename = myStylename.replace("Italic", "")
f.info.fontstyle = 1
myFamilyname = f.info.familyName +
myStylename = "Regular"
if f.info.fontStyle == 1: myStylename = "Italic"
f.info.familyName = myFamilyname
# f.info.fontStyle = myFontstyle
f.info.styleName = myStylename
f.info.fontName = myFamilyname + "-" + myStylename
f.info.fullName = myFamilyname + " " + myStylename
f.info.menuName = myFamilyname
f.info.fondName = myFamilyname
font = fl.font
font.weight = "Regular"
font.weight_code = 400
font.width = "Medium (normal)"
f.update()
myPath = myDest + ":" + myFamilyname + "-" + myStylename + ".vfb"
fl.font.Save(myPath)
print myFamilyname + "-" + myStylename
# main loop
mySource = GetFolder()
myDest = GetFolder()
if mySource is not None:
myFiles = collectSources(mySource)
for myFile in myFiles:
myFont = None
try:
myFont = OpenFont(myFile)
renameFont(myFont, myDest)
finally:
if myFont is not None:
myFont.close(False)
print "Done"

View File

@ -0,0 +1,88 @@
#FLM: Batch win rename Kievit
# Paul van der Laan, 2004/09/13
from robofab.interface.all.dialogs import GetFolder
from robofab.world import RFont, OpenFont, CurrentFont
import os
# Een functie om een map met files door te zoeken op vfb files
def collectSources(root):
files = []
ext = ['.vfb']
names = os.listdir(root)
for n in names:
if os.path.splitext(n)[1] in ext:
files.append(os.path.join(root, n))
return files
# Rename
def renameFont(f, myDest):
if f.info.fontName:
f.info.fontStyle=64
myStylename="Regular"
myStyle = f.info.styleName
if "Italic" in myStyle:
myStyle = myStyle.replace("Italic", "")
myStylename = "Italic"
f.info.fontStyle = 1
myFamilyname = f.info.familyName + myStyle
f.info.familyName = myFamilyname
f.info.styleName = myStylename
f.info.fontName = myFamilyname + "-" + myStylename
f.info.fullName = myFamilyname + " " + myStylename
f.info.menuName = myFamilyname
f.info.fondName = myFamilyname
font = fl.font
font.width = "Medium (normal)"
font.tt_version = "Version 1.000 2001 initial release"
font.tt_u_id = "INVD: " + myFamilyname + " " + myStylename + ": 2001"
font.vendor = "INVD"
myFont.panose[0] = 2
myFont.panose[1] = 11
myFont.panose[2] = 0
myFont.panose[3] = 0
myFont.panose[4] = 0
myFont.panose[5] = 0
myFont.panose[6] = 0
myFont.panose[7] = 0
myFont.panose[8] = 0
myFont.panose[9] = 0
font.ms_id = 2
f.update()
myPath = myDest + ":" + myFamilyname + "-" + myStylename + ".vfb"
fl.font.Save(myPath)
print myFamilyname + "-" + myStylename
# main loop
mySource = GetFolder()
myDest = GetFolder()
if mySource is not None:
myFiles = collectSources(mySource)
for myFile in myFiles:
myFont = None
try:
myFont = OpenFont(myFile)
renameFont(myFont, myDest)
finally:
if myFont is not None:
myFont.close(False)
print "Done"

View File

@ -0,0 +1,80 @@
#FLM: Batch win rename Lexicon
# Paul van der Laan, 2004/09/13
from robofab.interface.all.dialogs import GetFolder
from robofab.world import RFont, OpenFont, CurrentFont
import os
# Een functie om een map met files door te zoeken op vfb files
def collectSources(root):
files = []
ext = ['.vfb']
names = os.listdir(root)
for n in names:
if os.path.splitext(n)[1] in ext:
files.append(os.path.join(root, n))
return files
# Rename
def renameFont(f, myDest):
if f.info.fontName:
myMenuname = f.info.menuName
myFamilyname = myMenuname[:11]
myStylename = myMenuname[11:]
if myStylename == "Sc":
myStylename = "SC"
if f.info.styleName:
if f.info.styleName == "Regular":
myStylename = "Roman" + myStylename
myFontstyle = 64
else:
myStylename = f.info.styleName + myStylename
myFontstyle = 1
f.info.familyName = myFamilyname
f.info.fontStyle = myFontstyle
f.info.styleName = myStylename
f.info.fontName = myFamilyname + "-" + myStylename
f.info.fullName = myFamilyname + " " + myStylename
f.info.menuName = myFamilyname
f.info.fondName = myFamilyname
font = fl.font
font.weight = "Regular"
font.weight_code = 400
font.width = "Medium (normal)"
f.update()
myPath = myDest + ":" + myFamilyname + "-" + myStylename + ".vfb"
fl.font.Save(myPath)
print myFamilyname + "-" + myStylename
# main loop
mySource = GetFolder()
myDest = GetFolder()
if mySource is not None:
myFiles = collectSources(mySource)
for myFile in myFiles:
myFont = None
try:
myFont = OpenFont(myFile)
renameFont(myFont, myDest)
finally:
if myFont is not None:
myFont.close(False)
print "Done"

View File

@ -0,0 +1,11 @@
from robofab.world import CurrentFont
myFont = CurrentFont()
myGlyphs = ['Amacron', 'amacron', 'Aogonek', 'aogonek', 'Ccaron', 'ccaron', 'Cacute', 'cacute', 'Zacute', 'zacute', 'Dcaron', 'dcaron', 'Emacron', 'emacron', 'Edotaccent', 'edotaccent', 'Ecaron', 'ecaron', 'Eogonek', 'eogonek', 'gcommaaccent', 'Iogonek', 'iogonek', 'Imacron', 'imacron', 'Kcommaaccent', 'Lcommaaccent', 'lcommaaccent', 'Lcaron', 'lcaron', 'Lacute', 'lacute', 'Ncommaaccent', 'ncommaaccent', 'Nacute', 'nacute', 'Ncaron', 'ncaron', 'Ohungarumlaut', 'ohungarumlaut', 'Omacron', 'omacron', 'Racute', 'racute', 'Rcaron', 'rcaron', 'Rcommaaccent', 'rcommaaccent', 'Sacute', 'sacute', 'Tcaron', 'tcaron', 'Umacron', 'umacron', 'Uring', 'uring', 'Uhungarumlaut', 'uhungarumlaut', 'Uogonek', 'uogonek', 'kcommaaccent', 'Zdotaccent', 'zdotaccent', 'Gcommaaccent', 'commaaccent', 'Abreve', 'Scedilla', 'abreve', 'scedilla', 'Tcommaaccent', 'tcommaaccent', 'Gbreve', 'gbreve', 'Idotaccent', 'Dcroat', 'dcroat', 'Scommaaccent', 'scommaaccent', 'uni021A', 'uni021B']
for myGlyph in myGlyphs:
if not myFont.has_key(myGlyph):
myFont.newGlyph(myGlyph)
myFont.update()
print "done"

View File

@ -0,0 +1,19 @@
#FLM: Add remove .sc in selected glyphnames
from robofab.world import CurrentFont
from robofab.interface.all.dialogs import ProgressBar
myFont = CurrentFont()
myGlyphs = myFont.selection
myBar = ProgressBar('Changing names...', len(myGlyphs))
for myGlyph in myGlyphs:
if myFont[myGlyph].name[-3:] == '.sc':
myFont[myGlyph].name = myFont[myGlyph].name[:-3]
else:
myFont[myGlyph].name += '.sc'
myFont[myGlyph].update()
myBar.tick()
myBar.close()
print "done"

View File

@ -0,0 +1,8 @@
from robofab.world import CurrentGlyph
myGlyph = CurrentGlyph()
print len(myGlyph)
for myPoint in myGlyph[0].bPoints:
print myPoint.anchor

View File

@ -0,0 +1,3 @@
from robofab.world import CurrentFont import os encfilename= os.path.join(fl.path, r"Encoding", r"WINCE.ENC") f = CurrentFont() f.info.fondID = 30915 f.naked().encoding.Load(encfilename) f.naked().ttinfo.os2_ul_code_page_range1 = 2
# 1= Latin 1 # 2= Latin 2 f.naked().ttinfo.os2_ul_code_page_range2 = 67108864 f.naked().ms_charset = 238
# Win ANSI=0 # 1252 Latin 2=238 f.update() print f.info.fullName

View File

@ -0,0 +1,19 @@
from robofab.world import SelectFont, CurrentFont
from robofab.interface.all.dialogs import ProgressBar
mySource = SelectFont('Select source font:')
if mySource:
myDest = SelectFont('Select destination font:')
if myDest:
for myGlyph in mySource:
myGlyphname=myGlyph.name
if len(mySource[myGlyphname].anchors) > 0:
myDestglyph = myDest[myGlyphname]
if len(myDestglyph.anchors) == 0:
myDestglyph.appendAnchor("nieuw", (50, 50))
myDestglyph.anchors[0].name = myGlyph.anchors[0].name
myDestglyph.anchors[0].x = myGlyph.anchors[0].x
myDestglyph.anchors[0].y = myGlyph.anchors[0].y
myDestglyph.mark = 26
myDestglyph.update()

View File

@ -0,0 +1,12 @@
from robofab.world import CurrentFont
myFont = CurrentFont()
for myGlyph in myFont:
myGlyphname = myGlyph.name
if myGlyph.mark == 0:
myFont.removeGlyph(myGlyphname)
myFont.update()
print "done"

View File

@ -0,0 +1,15 @@
from robofab.world import CurrentFont
myFont = fl.font
myrfFont = CurrentFont()
myEncoding = myFont.encoding
print
for myItem in range (0, len(myEncoding)):
if myFont.FindGlyph(myEncoding[myItem].name) is not -1:
# print myItem, myEncoding[myItem].name, hex(myEncoding[myItem].unicode)
myGlyphname = myEncoding[myItem].name
myGlyph = myrfFont[myGlyphname]
print myItem, myGlyphname, myGlyph.unicode
print

View File

@ -0,0 +1,6 @@
import os.path
encfilename= os.path.join(fl.path, r"Encoding", r"MACROMAN.ENC")
font = fl.font
font.encoding.Load(encfilename)
fl.UpdateFont()

View File

@ -0,0 +1,18 @@
from robofab.world import CurrentGlyph, CurrentFont
myFont = CurrentFont()
# myGlyph = CurrentGlyph()
myDict = {"fi": ["f", "i"], "fl": ["f", "l"]}
for myLig in myDict:
for myBasechar in myDict[myLig]:
print myLig, myBasechar
mySource = myFont["f"]
myDest = myFont["e"]
myDest.appendGlyph(mySource)
myDest.update()

View File

@ -0,0 +1,4 @@
myGlyph = fl.glyph
myGlyph.hhints.append(Hint(-124,48))
fl.UpdateGlyph(-1)

View File

@ -0,0 +1,18 @@
# deletes horizontal hint with position -135 in all glyphs
# myGlyph = fl.glyph
myFont = fl.font
myGlyphs = fl.font.glyphs
for g in range (0,len(myGlyphs)):
myGlyph = myFont[g]
myHints = myGlyph.hhints
for h in range(0,len(myHints)):
# print myGlyph, len(myHints)
if myHints[h].position == -124:
del myHints[h]
fl.UpdateGlyph(-1)
break
print "done"

View File

@ -0,0 +1,22 @@
myFont = fl.font
print "Blue fuzz", myFont.blue_fuzz[0]
print "Blue scale", myFont.blue_scale[0]
print "Blue shift", myFont.blue_shift[0]
print "Number of blue values", myFont.blue_values_num
print "Blue values", myFont.blue_values[0]
print "Number of other blues", myFont.other_blues_num
print "Other blues", myFont.other_blues[0]
print "Number of family blues", myFont.family_blues_num
print "Family blues", myFont.family_blues[0]
print "Number of other family blues", myFont.family_other_blues_num
print "Other family blues", myFont.family_other_blues[0]
print "Force bold", myFont.force_bold[0]
print "Number of horizontal stems", myFont.stem_snap_h_num
print "Horizontal stems", myFont.stem_snap_h[0]
print "Number of vertical stems", myFont.stem_snap_v_num
print "Vertical stems", myFont.stem_snap_v[0]

View File

@ -0,0 +1,23 @@
# principe van gewichten a -- b -- c
def interPola(b,c):
a = b**2.0/c
return a
def interPolb(a,c):
b = (a*c)**.5
return b
def interPolc(a,b):
c = b**2.0/a
return c
print
for n in range(0,100):
c = interPolb(66,66+n)
d = interPolb(c,166)
print 66+n,d
print interPolb(66,122)
print interPolc(66,90)

View File

@ -0,0 +1,9 @@
stems = [85, 106, 133,152]
minstem = 73.0
maxstem = 180.0
print ""
for stem in stems:
print 100/(maxstem-minstem) * (stem-minstem)
print ""

View File

@ -0,0 +1,20 @@
from robofab.world import SelectFont, CurrentFont
from robofab.interface.all.dialogs import ProgressBar
myFactor = .36
myMin = SelectFont('Select source font one:')
if myMin:
myMax = SelectFont('Select source font two:')
if myMax:
myDest = SelectFont('Select destination font:')
if myDest:
myMinkern = myMin.kerning
myMaxkern = myMax.kerning
myDestkern = myDest.kerning
myDestkern.interpolate(myMinkern,myMaxkern,myFactor,clearExisting=True)
myDest.update()
print "Done"

View File

@ -0,0 +1,9 @@
from robofab.world import CurrentFont
myFont = CurrentFont()
myKerning = myFont.kerning
for myPair in myKerning:
myComb = str(myPair).split()
myComb = "%s %s" %(myComb[0][2:-2], myComb[1][1:-2])
print myComb,myKerning[myPair]

View File

@ -0,0 +1,20 @@
from robofab.world import CurrentGlyph, CurrentFont
myFont = CurrentFont()
# myGlyph = CurrentGlyph()
myDict = {"fi": ["f", "i"], "fl": ["f", "l"]}
for myLig in myDict:
for myBasechar in myDict[myLig]:
myDest = myFont[myLig]
mySource = myFont[myBasechar]
myDest.appendGlyph(mySource)
myWidth = mySource.width
for contour in myDest.contours:
contour.move((-myWidth, 0))
myDest.leftMargin = myFont[myDict[myLig][0]].leftMargin
myDest.rightMargin = myFont[myDict[myLig][-1]].rightMargin
myDest.update()

View File

@ -0,0 +1,9 @@
from robofab.world import CurrentFont
myFont = CurrentFont()
mySel = myFont.selection
for myGlyph in mySel:
myFont[myGlyph].mark = 12
myFont.update()

View File

@ -0,0 +1,21 @@
# Een functie om een map met files door te zoeken op vfb files
def collectSources(root):
files = []
ext = ['.vfb']
names = os.listdir(root)
for n in names:
if os.path.splitext(n)[1] in ext:
files.append(os.path.join(root, n))
return files
# dialog voor het selecteren van een folder
f = GetFolder()
if f is not None:
paths = collectSources(f)
for f in paths:
font = None
try:
font = OpenFont(f)

View File

@ -0,0 +1 @@
from robofab.world import CurrentGlyph myGlyph = CurrentGlyph() myPen = myGlyph.getPen() myPen.moveTo((-10,0)) myPen.lineTo((500,0)) myPen.lineTo((500,50)) myPen.lineTo((-10,50)) myPen.lineTo((-10,0)) myPen.closePath() myGlyph.update()

View File

@ -0,0 +1,10 @@
#FLM: Remove overlap
myFont = fl.font
myGlyphs = fl.font.glyphs
for g in range (0,len(myGlyphs)):
myGlyph = myFont[g]
myGlyph.RemoveOverlap()
fl.UpdateGlyph(-1)
print "done"

View File

@ -0,0 +1,7 @@
path = "OS X:Users:paulus:Desktop:testfile.txt"
f = open(path, "r+")
f.seek(0,2)
f.write("hello!\tjajaja!\ren nu.")
f.close()

View File

@ -0,0 +1,4 @@
font = fl.font
myPath = "Mac OS X:Users:paulus:Desktop:" + "test.vfb"
font.Save(myPath)

View File

@ -0,0 +1,12 @@
from robofab.world import CurrentFont, CurrentGlyph
myFont = CurrentFont()
# myGlyph = CurrentGlyph()
mySelection=['Eth', 'Lslash', 'Scaron', 'Yacute', 'Thorn', 'Zcaron', 'dollar', 'percent', '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', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'cent', 'sterling', 'AE', 'Oslash', 'yen', 'florin', 'Agrave', 'Atilde', 'Otilde', 'OE', 'Ydieresis', 'currency', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave']
for myGlyph in mySelection:
myFont[myGlyph].scale((1,0.9), center=(0,0))
myFont[myGlyph].mark = 26
myFont.update()

View File

@ -0,0 +1,29 @@
from robofab.world import CurrentFont
myFont = CurrentFont()
print myFont.selection
# latin-1 accented
# myFont.selection = ['Scaron', 'scaron', 'Yacute', 'yacute', 'Zcaron', 'zcaron', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'Agrave', 'Atilde', 'Otilde', 'ydieresis', 'Ydieresis', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave']
# accents
# myFont.selection = ['grave', 'acute', 'dieresis', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron']
# latin-2 accented
# myFont.selection = ['Amacron', 'amacron', 'Aogonek', 'aogonek', 'Ccaron', 'ccaron', 'Cacute', 'cacute', 'Zacute', 'zacute', 'Dcaron', 'dcaron', 'Emacron', 'emacron', 'Edotaccent', 'edotaccent', 'Ecaron', 'ecaron', 'Eogonek', 'eogonek', 'gcommaaccent', 'Iogonek', 'iogonek', 'Imacron', 'imacron', 'Kcommaaccent', 'Lcommaaccent', 'lcommaaccent', 'Lcaron', 'lcaron', 'Lacute', 'lacute', 'Ncommaaccent', 'ncommaaccent', 'Nacute', 'nacute', 'Ncaron', 'ncaron', 'Ohungarumlaut', 'ohungarumlaut', 'Omacron', 'omacron', 'Racute', 'racute', 'Rcaron', 'rcaron', 'Rcommaaccent', 'rcommaaccent', 'Sacute', 'sacute', 'Tcaron', 'tcaron', 'Umacron', 'umacron', 'Uring', 'uring', 'Uhungarumlaut', 'uhungarumlaut', 'Uogonek', 'uogonek', 'kcommaaccent', 'Zdotaccent', 'zdotaccent', 'Gcommaaccent', 'Abreve', 'Scedilla', 'abreve', 'scedilla', 'Tcommaaccent', 'tcommaaccent', 'Gbreve', 'gbreve', 'Idotaccent', 'Scommaaccent', 'scommaaccent', 'uni021A', 'uni021B']
# latin-2 additional
# myFont.selection = ['commaaccent', 'Dcroat', 'dcroat']
# uc top
# myFont.selection = ['A', 'C', 'D', 'E', 'G', 'I', 'L', 'N', 'O', 'R', 'S', 'T', 'U', 'Y', 'Z']
# lc top
# myFont.selection = ['a', 'c', 'e', 'g', 'l', 'n', 'o', 'r', 's', 'u', 'y', 'z', 'dotlessi']
# bottom
# myFont.selection = ['A', 'C', 'E', 'G', 'I', 'K', 'L', 'N', 'O', 'R', 'S', 'T', 'U', 'a', 'c', 'e', 'i', 'k', 'l', 'n', 'o', 'r', 's', 't', 'u']
# right
# myFont.selection = ['L', 'd', 'l', 't']

View File

@ -0,0 +1,20 @@
from robofab.world import CurrentFont
myFont = CurrentFont()
myflFont = fl.font
myEncoding = myflFont.encoding
myList = [""] * len(myEncoding)
print ""
for myGlyph in myFont:
myGlyphname = myGlyph.name
myIndex = myEncoding.FindName(myGlyphname)
if myIndex is not -1:
myList[myIndex] = myGlyph.unicode
for myItem in range (0, len(myList)):
if myList[myItem] is not "":
myHex = hex(myItem)[-2:]
myHex = myHex.replace("x", "0")
print "\u" + str(myList[myItem]) + "\\'" + myHex

View File

@ -0,0 +1 @@
from robofab.world import CurrentFont myFont = CurrentFont() myflFont = fl.font myEncoding = myflFont.encoding print "" for myGlyph in myFont: myGlyphname = myGlyph.name myIndex = myEncoding.FindName(myGlyphname) print "\u" + str(myGlyph.unicode) + "\\'" + (hex(myIndex)[-2:]) print "done"

View File

@ -0,0 +1 @@
#FLM: Auto starting points from robofab.world import CurrentFont from robofab.interface.all.dialogs import ProgressBar f = CurrentFont() tickCount = len(f) bar = ProgressBar("Setting start points...", tickCount) tick = 0 for c in f: if c: bar.label(c.name) bar.tick(tick) c.correctDirection() c.autoContourOrder() for contour in c: contour.autoStartSegment() tick = tick + 1 bar.close() f.update() print 'done'

View File

@ -0,0 +1,16 @@
#FLM: Build accents for selected glyphs
from robofab.world import CurrentFont
from robofab.interface.all.dialogs import ProgressBar
myFont = CurrentFont()
myGlyphs = myFont.selection
myBar = ProgressBar('Building accents...', len(myGlyphs))
for myGlyph in myGlyphs:
myFont.generateGlyph(myGlyph, replace=True, printErrors=True)
myFont[myGlyph].update()
myBar.tick()
myBar.close()
print "done"

View File

@ -0,0 +1,21 @@
#FLM: Compare glyphs by width
from robofab.world import SelectFont, CurrentFont
from robofab.interface.all.dialogs import ProgressBar
myFont = CurrentFont()
myComparison = SelectFont("Select comparison font")
if myComparison is not None:
bar = ProgressBar('Comparing fonts...', len(myFont))
for myChar in myFont:
myCharname = myChar.name
if myComparison.has_key(myCharname):
if myChar.width <> myComparison[myCharname].width:
myFont[myCharname].mark = 26
bar.tick()
myFont.update()
bar.close()
# mark: red=1, blue=170, green=80, magenta=210, cyan=130

View File

@ -0,0 +1,26 @@
#FLM: Construct ligatures based on dictionary
from robofab.world import CurrentFont
myFont = CurrentFont()
# myDict = {"fi": ["f", "i"], "fl": ["f", "l"]}
myDict = {"P": ["X", "Z"], "Q": ["Y", "Z"]}
# myDict = {"fi": ["f", "i"], "fl": ["f", "l"], "germandbls": ["s", "s"]}
# myDict = {"g": ["H", "f"], "h": ["H", "F"], "j": ["H", "I"], "K": ["H", "H"]}
for myLig in myDict:
for myBasechar in myDict[myLig]:
myDest = myFont[myLig]
mySource = myFont[myBasechar]
myDest.appendGlyph(mySource)
myWidth = mySource.width
for contour in myDest.contours:
contour.move((-myWidth, 0))
myDest.leftMargin = myFont[myDict[myLig][0]].leftMargin
myDest.rightMargin = myFont[myDict[myLig][-1]].rightMargin
myDest.update()
print "Done"

View File

@ -0,0 +1,13 @@
#FLM: Copy all glyphs to mask layer
from robofab.world import CurrentFont
f = CurrentFont()
for c in f:
# go to the desired glyph
fl.EditGlyph(c.index)
# copy the desired glyph
fl.CallCommand(fl_cmd.MaskClear)
fl.CallCommand(fl_cmd.MaskCopy)

View File

@ -0,0 +1,20 @@
#FLM: Copy all glyphs to other font
# werkt helaas nog steeds niet...
from robofab.world import CurrentFont, CurrentGlyph
from robofab.interface.all.dialogs import SelectFont
mySource = CurrentFont()
myDest = SelectFont('Select a destination font:')
if myDest:
for myGlyph in mySource:
myGlyphname = myGlyph.name
if myDest.has_key(myGlyphname):
myDest.removeGlyph(myGlyphname)
myDest[myGlyphname].appendGlyph(mySource[myGlyphname])
# myDest[myGlyphname].mark = 52
myDest.update()
print "Done"

View File

@ -0,0 +1,22 @@
#FLM: Copy selected sidebearings from other font
from robofab.world import CurrentFont, SelectFont
from robofab.interface.all.dialogs import ProgressBar
myDestination = CurrentFont()
myGlyphs = myDestination.selection
myFont = SelectFont("Select source font")
if myFont is not None:
bar = ProgressBar('Copying sidebearings...', len(myGlyphs))
for myChar in myGlyphs:
if myFont.has_key(myChar):
myDestination[myChar].leftMargin = myFont[myChar].leftMargin
myDestination[myChar].rightMargin = myFont[myChar].rightMargin
# myDestination[myChar].width = myFont[myChar].width
myDestination[myChar].mark = 26
bar.tick()
myDestination.update()
bar.close()

View File

@ -0,0 +1,22 @@
#FLM: Copy selected sidebearings to other font
from robofab.world import CurrentFont, SelectFont
from robofab.interface.all.dialogs import ProgressBar
myFont = CurrentFont()
myGlyphs = myFont.selection
myDestination = SelectFont("Select destination font")
if myDestination is not None:
bar = ProgressBar('Copying sidebearings...', len(myGlyphs))
for myChar in myGlyphs:
if myDestination.has_key(myChar):
myDestination[myChar].leftMargin = myFont[myChar].leftMargin
# myDestination[myChar].rightMargin = myFont[myChar].rightMargin
myDestination[myChar].width = myFont[myChar].width
myDestination[myChar].mark = 26
bar.tick()
myDestination.update()
bar.close()

View File

@ -0,0 +1,20 @@
#FLM: Copy sidebearings to other font
from robofab.world import SelectFont
from robofab.interface.all.dialogs import ProgressBar
mySource = SelectFont("Select source font")
myDestination = SelectFont("Select destination font")
if mySource is not None and myDestination is not None:
bar = ProgressBar('Copying sidebearings...', len(mySource))
for myChar in mySource:
myCharname = myChar.name
if myDestination.has_key(myCharname):
myDestination[myCharname].leftMargin = myChar.leftMargin
myDestination[myCharname].rightMargin = myChar.rightMargin
myDestination[myCharname].mark = 26
bar.tick()
myDestination.update()
bar.close()

View File

@ -0,0 +1,32 @@
#FLM: Create dummy glyphs in selection
from robofab.world import SelectFont, CurrentFont
from robofab.interface.all.dialogs import ProgressBar
myFont = CurrentFont()
myGlyphs = myFont.selection
myGlyphwidth = 250
myLines = ((100,250,50),)
bar = ProgressBar('Creating dummy glyphs...', len(myGlyphs))
for myGlyph in myGlyphs:
myFont[myGlyph].width = myGlyphwidth
for myLine in myLines:
myPen = myFont[myGlyph].getPen()
myMargin = myLine[0]
myHeight = myLine[1]
myWeight = myLine[2]
myStrokewidth = myGlyphwidth - myMargin
myPen.moveTo((myMargin,myHeight))
myPen.lineTo((myStrokewidth,myHeight))
myPen.lineTo((myStrokewidth,myHeight+myWeight))
myPen.lineTo((myMargin,myHeight+myWeight))
myPen.lineTo((myMargin,myHeight))
myPen.closePath()
myFont[myGlyph].update()
bar.tick()
bar.close()
myFont.update()
print "done"

View File

@ -0,0 +1,31 @@
#FLM: Draw lines
from robofab.world import CurrentFont
# myLines = ((-10,692,57), (-10,-177,57)) # Fresco kader
myLines = ((-5,-124,48),)
myFont = CurrentFont()
for myGlyph in myFont:
myGlyphwidth = myFont[myGlyph.name].width
for myLine in myLines:
myPen = myGlyph.getPen()
myMargin = myLine[0]
myHeight = myLine[1]
myWeight = myLine[2]
myStrokewidth = myGlyphwidth - myMargin
myPen.moveTo((myMargin,myHeight))
myPen.lineTo((myStrokewidth,myHeight))
myPen.lineTo((myStrokewidth,myHeight+myWeight))
myPen.lineTo((myMargin,myHeight+myWeight))
myPen.lineTo((myMargin,myHeight))
myPen.closePath()
myGlyph.update()
myFont.update()
print "Done"

View File

@ -0,0 +1,40 @@
#FLM: Export glyphs naar tagged text OT
from robofab.world import CurrentFont
from robofab.interface.all.dialogs import GetFolder, ProgressBar
mySize = 44.0
myLeading = 48.0
myFont = CurrentFont()
myFontfam = myFont.info.otFamilyName
myFontstyle = myFont.info.otStyleName
myPagebreak = ""
myPath = GetFolder()
if myPath:
myPath += ":" + myFontfam + "-" + myFontstyle + ".txt"
myFile = open(myPath, "w")
try:
myFile.write("<ASCII-MAC>" + chr(10))
myFile.write("<vsn:2.000000><fset:InDesign-Roman><ctable:=<Black:COLOR:CMYK:Process:0.000000,0.000000,0.000000,1.000000>>" + chr(10))
myLine = myPagebreak + "<pstyle:><ct:Regular><cs:6.000000><cl:12.000000><cf:Andale Mono>" + myFontfam + "-" + myFontstyle + " glyph overview, generated 26 10 2004<cf:><cl:><cs:><ct:>" + chr(10) + "<pstyle:><ct:Regular><cs:6.000000><cl:12.000000><cf:Andale Mono>Version " + str(myFont.info.versionMajor) + "." + str(myFont.info.versionMinor) + ", designed by " + myFont.info.designer + ", " + str(myFont.info.year) + ".<cf:><cl:><cs:><ct:>" + chr(10) + "<pstyle:><ct:Regular><cs:9.000000><cl:14.000000><cf:Andale Mono><cf:><cl:><cs:><ct:>" + chr(10) + "<pstyle:><cs:" + str(mySize) + "><cl:" + str(myLeading) + "><cf:TEFF><ct:Pi> | <ct:><cf:>"
myFile.write(myLine)
myBar = ProgressBar('Exporting glyphs...', len(myFont))
for myGlyph in range(1,len(myFont)):
myLine = "<cf:" + myFontfam + "><ct:" + myFontstyle + "><pSG:" + str(myGlyph) + "><0xFFFD><pSG:><ct:><cf:><cf:TEFF><ct:Pi>| |<ct:><cf:>"
myFile.write(myLine)
myBar.tick()
myFile.write("<cl:><cs:>")
myPagebreak = "<cnxc:Page>"
myFile.close()
myBar.close()
print "Generated glyph overview for", myFontfam + "-" + myFontstyle
except:
myFile.close()
print "An error occurred"
print "Done"

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,45 @@
#FLM: Export glyphs naar RTF
from robofab.world import CurrentFont
from robofab.interface.all.dialogs import GetFolder, ProgressBar
mySize = 16
myLeading = 22
myFont = CurrentFont()
myflFont = fl.font
myEncoding = myflFont.encoding
myFontfam = myFont.info.familyName
myFontstyle = myFont.info.styleName
myList = [""] * len(myEncoding)
myPagebreak = ""
myPath = GetFolder()
if myPath:
myPath += ":" + myFontfam + "-" + myFontstyle + ".rtf"
for myGlyph in myFont:
myGlyphname = myGlyph.name
myIndex = myEncoding.FindName(myGlyphname)
if myIndex is not -1:
myList[myIndex] = myGlyph.unicode
myFile = open(myPath, "w")
myFile.write("{\\rtf1\\mac\\ansicpg1252" + chr(13) + "{\\fonttbl\\f0\\fnil\\cpg819 " + myFontfam + "-" + myFontstyle + ";}" + chr(13) + "\\f0\\sl-" + str(myLeading*20) + "\\fs" + str(mySize*2) + chr(13))
myBar = ProgressBar('Exporting glyphs...', len(myList))
for myItem in range (0, len(myList)):
if myList[myItem]:
myHex = hex(myItem)[-2:]
myHex = myHex.replace("x", "0")
myWord = "\u" + str(myList[myItem]) + "\\'" + myHex + " "
myFile.write(myWord)
myBar.tick()
myPagebreak = "\page "
myFile.write("}")
myFile.close()
myBar.close()
print "Generated glyph overview for", myFontfam + "-" + myFontstyle
print "Done"

View File

@ -0,0 +1,34 @@
#FLM: Export kerning naar tagged text OT
from robofab.world import CurrentFont
from robofab.interface.all.dialogs import GetFolder, ProgressBar
myFont = CurrentFont()
myKerning = myFont.kerning
myFontfam = myFont.info.familyName
myFontstyle = myFont.info.styleName
myPath = GetFolder()
if myPath:
myPath += ":" + myFontfam + "-" + myFontstyle + "_kern.txt"
myFile = open(myPath, "w")
myFile.write("<ASCII-MAC>" + chr(10))
myFile.write("<vsn:2.000000><fset:InDesign-Roman><ctable:=<Black:COLOR:CMYK:Process:0.000000,0.000000,0.000000,1.000000>>" + chr(10))
myBar = ProgressBar('Exporting kerning...', len(myKerning))
for myPair in myKerning:
myComb = str(myPair).split()
myLeft=myComb[0][2:-2]
myRight=myComb[1][1:-2]
myLeftid = myFont[myLeft].index
myRightid = myFont[myRight].index
myLine = "<pstyle:><pga:BaseLine><ct:" + myFontstyle + "><cs:11.000000><cl:14.100000><cf:" + myFontfam + "><pSG:" + str(myLeftid) + "><0xFFFD><pSG:><pSG:" + str(myRightid) + "><0xFFFD><pSG:><ct:><cs:><cl:><cf:><ct:Regular><cs:5.000000><cl:14.100000><cf:Andale Mono> " + str(myKerning[myPair]) + chr(10) + "<ct:><cs:><cl:><cf:><pga:>"
myFile.write(myLine)
myBar.tick()
myFile.close()
myBar.close()
print "Generated kerning file for", myFontfam, myFontstyle
print "Done"

View File

@ -0,0 +1,37 @@
#FLM: Export kerning naar tagged text PS
from robofab.world import CurrentFont
from robofab.interface.all.dialogs import GetFolder, ProgressBar
myDict = {"Eth": "<0x00D0>", "eth": "<0x00F0>", "Lslash": "<0x0141>", "lslash": "<0x0142>", "Scaron": "<0x0160>", "scaron": "<0x0161>", "Yacute": "<0x00DD>", "yacute": "<0x00FD>", "Thorn": "<0x00DE>", "thorn": "<0x00FE>", "Zcaron": "<0x017D>", "zcaron": "<0x017E>", "brokenbar": "<0x00A6>", "minus": "<0x2212>", "multiply": "<0x00D7>", "space": " ", "exclam": "!", "quotedbl": "\"", "numbersign": "#", "dollar": "$", "percent": "%", "ampersand": "&", "quotesingle": "'", "parenleft": "(", "parenright": ")", "asterisk": "*", "plus": "+", "comma": ",", "hyphen": "-", "period": ".", "slash": "/", "zero": "0", "one": "1", "two": "2", "three": "3", "four": "4", "five": "5", "six": "6", "seven": "7", "eight": "8", "nine": "9", "colon": ":", "semicolon": ";", "less": "\<", "equal": "=", "greater": "\>", "question": "?", "at": "@", "A": "A", "B": "B", "C": "C", "D": "D", "E": "E", "F": "F", "G": "G", "H": "H", "I": "I", "J": "J", "K": "K", "L": "L", "M": "M", "N": "N", "O": "O", "P": "P", "Q": "Q", "R": "R", "S": "S", "T": "T", "U": "U", "V": "V", "W": "W", "X": "X", "Y": "Y", "Z": "Z", "bracketleft": "[", "backslash": "\\\\", "bracketright": "]", "asciicircum": "^", "underscore": "_", "grave": "`", "a": "a", "b": "b", "c": "c", "d": "d", "e": "e", "f": "f", "g": "g", "h": "h", "i": "i", "j": "j", "k": "k", "l": "l", "m": "m", "n": "n", "o": "o", "p": "p", "q": "q", "r": "r", "s": "s", "t": "t", "u": "u", "v": "v", "w": "w", "x": "x", "y": "y", "z": "z", "braceleft": "{", "bar": "|", "braceright": "}", "asciitilde": "~", "Adieresis": "<0x00C4><0x00C4>", "Aring": "<0x00C5>", "Ccedilla": "<0x00C7>", "Eacute": "<0x00C9>", "Ntilde": "<0x00D1>", "Odieresis": "<0x00D6>", "Udieresis": "<0x00DC>", "aacute": "<0x00E1>", "agrave": "<0x00E0>", "acircumflex": "<0x00E2>", "adieresis": "<0x00E4>", "atilde": "<0x00E3>", "aring": "<0x00E5>", "ccedilla": "<0x00E7>", "eacute": "<0x00E9>", "egrave": "<0x00E8>", "ecircumflex": "<0x00EA>", "edieresis": "<0x00EB>", "iacute": "<0x00ED>", "igrave": "<0x00EC>", "icircumflex": "<0x00EE>", "idieresis": "<0x00EF>", "ntilde": "<0x00F1>", "oacute": "<0x00F3>", "ograve": "<0x00F2>", "ocircumflex": "<0x00F4>", "odieresis": "<0x00F6>", "otilde": "<0x00F5>", "uacute": "<0x00FA>", "ugrave": "<0x00F9>", "ucircumflex": "<0x00FB>", "udieresis": "<0x00FC>", "dagger": "<0x2020>", "degree": "<0x00B0>", "cent": "<0x00A2>", "sterling": "<0x00A3>", "section": "<0x00A7>", "bullet": "<0x2022>", "paragraph": "<0x00B6>", "germandbls": "<0x00DF>", "registered": "<0x00AE>", "copyright": "<0x00A9>", "trademark": "<0x2122>", "acute": "<0x00B4>", "dieresis": "<0x00A8>", "notequal": "<0x2260>", "AE": "<0x00C6>", "Oslash": "<0x00D8>", "plusminus": "<0x00B1>", "lessequal": "<0x2264>", "greaterequal": "<0x2265>", "yen": "<0x00A5>", "ordfeminine": "<0x00AA>", "ordmasculine": "<0x00BA>", "ae": "<0x00E6>", "oslash": "<0x00F8>", "questiondown": "<0x00BF>", "exclamdown": "<0x00A1>", "florin": "<0x0192>", "guillemotleft": "<0x00AB>", "guillemotright": "<0x00BB>", "ellipsis": "<0x2026>", "uni00A0": "<pSG:178><0xFFFD><pSG:>", "Agrave": "<0x00C0>", "Atilde": "<0x00C3>", "Otilde": "<0x00D5>", "OE": "<0x0152>", "oe": "<0x0153>", "endash": "<0x2013>", "emdash": "<0x2014>", "quotedblleft": "<0x201C>", "quotedblright": "<0x201D>", "quoteleft": "<0x2018>", "quoteright": "<0x2019>", "divide": "<0x00F7>", "ydieresis": "<0x00FF>", "Ydieresis": "<0x0178>", "Euro": "<0x20AC>", "guilsinglleft": "<0x2039>", "guilsinglright": "<0x203A>", "fi": "<0xFB01>", "fl": "<0xFB02>", "daggerdbl": "<0x2021>", "periodcentered": "<0x00B7>", "quotesinglbase": "<0x201A>", "quotedblbase": "<0x201E>", "perthousand": "<0x2030>", "Acircumflex": "<0x00C2>", "Ecircumflex": "<0x00CA>", "Aacute": "<0x00C1>", "Edieresis": "<0x00CB>", "Egrave": "<0x00C8>", "Iacute": "<0x00CD>", "Icircumflex": "<0x00CE>", "Idieresis": "<0x00CF>", "Igrave": "<0x00CC>", "Oacute": "<0x00D3>", "Ocircumflex": "<0x00D4>", "apple": "<pSG:215><0xFFFD><pSG:>", "Ograve": "<0x00D2>", "Uacute": "<0x00DA>", "Ucircumflex": "<0x00DB>", "Ugrave": "<0x00D9>", "dotlessi": "<0x0131>", "circumflex": "<0x02C6>", "tilde": "<0x02DC>", "macron": "<0x00AF>", "breve": "<0x02D8>", "dotaccent": "<0x02D9>", "ring": "<0x02DA>", "cedilla": "<0x00B8>", "hungarumlaut": "<0x02DD>", "ogonek": "<0x02DB>", "caron": "<0x02C7>", "currency": "<0x00A4>", "onehalf": "<0x00BD>", "onequarter": "<0x00BC>", "onesuperior": "<0x00B9>", "threequarters": "<0x00BE>", "threesuperior": "<0x00B3>", "twosuperior": "<0x00B2>", "mu": "<0x00B5>", "nbspace": "<pSG:178><0xFFFD><pSG:>", "fraction": "<0x2044>", "logicalnot": "<0x00AC>"}
myFont = CurrentFont()
myKerning = myFont.kerning
myFontfam = myFont.info.familyName
myFontstyle = myFont.info.styleName
myPath = GetFolder()
if myPath:
myPath += ":" + myFontfam + "-" + myFontstyle + "_kern.txt"
myFile = open(myPath, "w")
myFile.write("<ASCII-MAC>" + chr(10))
myFile.write("<vsn:2.000000><fset:InDesign-Roman><ctable:=<Black:COLOR:CMYK:Process:0.000000,0.000000,0.000000,1.000000>>" + chr(10))
myBar = ProgressBar('Exporting kerning...', len(myKerning))
for myPair in myKerning:
myComb = str(myPair).split()
myLeft=myComb[0][2:-2]
myRight=myComb[1][1:-2]
if myDict.has_key(myLeft) and myDict.has_key(myRight):
myLine = "<pstyle:><pga:BaseLine><ct:" + myFontstyle + "><cs:11.000000><cl:14.100000><cf:" + myFontfam + ">" + myDict[myLeft] + myDict[myRight] + "<ct:><cs:><cl:><cf:><ct:Regular><cs:5.000000><cl:14.100000><cf:Andale Mono> " + str(myKerning[myPair]) + chr(10) + "<ct:><cs:><cl:><cf:><pga:>"
myFile.write(myLine)
myBar.tick()
myFile.close()
myBar.close()
print "Generated kerning file for", myFontfam, myFontstyle
print "Done"

View File

@ -0,0 +1,16 @@
#FLM: Fun with colours
from robofab.world import CurrentFont
myFont = CurrentFont()
myColour = 1
while 1:
for myChar in myFont:
myChar.mark = myColour
myColour = myColour + 1
if myColour == 256:
myColour = 1
myFont.update()
# mark: red=1, blue=170, green=80, magenta=210, cyan=130

View File

@ -0,0 +1,26 @@
#FLM: Interpolate in current font
# Interpolate selected glyphs in the current font
# Paul van der Laan, 2004/08/12
from robofab.world import SelectFont, CurrentFont
from robofab.interface.all.dialogs import ProgressBar
factor = 1.37
myFont = CurrentFont()
myGlyphs = myFont.selection
myMin = SelectFont('Select source font one:')
if myMin:
myMax = SelectFont('Select source font two:')
if myMax:
bar = ProgressBar('Interpolating...', len(myGlyphs))
for myChar in myGlyphs:
myFont.removeGlyph(myChar)
myNewglyph = myFont.newGlyph(myChar)
myNewglyph.interpolate(factor, myMin[myChar], myMax[myChar])
myFont[myChar].mark = 26
bar.tick()
bar.close()
myFont.update()

View File

@ -0,0 +1,50 @@
#FLM: Interpolate in a new font
# Paul van der Laan, 2004/08/11
from robofab.world import SelectFont, CurrentFont, NewFont
from robofab.interface.all.dialogs import ProgressBar
import os.path
factor = .50
myMin = SelectFont('Select source font one:')
if myMin:
myMax = SelectFont('Select source font two:')
if myMax:
# fl.CallCommand(fl_cmd.FileNew)
myDest = NewFont()
bar = ProgressBar('Interpolating...', len(myMin))
for n in range (0,len(myMin)):
myCharname = myMin[n].name
myNewglyph = myDest.newGlyph(myCharname)
myNewglyph.interpolate(factor, myMin[myCharname], myMax[myCharname])
myDest[myCharname].mark = myMin[myCharname].mark
myDest[myCharname].unicode = myMin[myCharname].unicode
bar.tick()
bar.close()
myDest.update()
myMinkern = myMin.kerning
myMaxkern = myMax.kerning
myDestkern = myDest.kerning
myDestkern.interpolate(myMinkern,myMaxkern,factor,clearExisting=True)
myNotice = `int(factor * 100)` + "% interpolatie van " + myMin.info.fontName + " en " + myMax.info.fontName
myDest.info.notice=myNotice
myDest.info.familyName = myMin.info.familyName
myDest.info.styleName = "Interpol"
myDest.info.fontName = myMin.info.familyName + "-Interpol"
myDest.info.fullName = myMin.info.familyName + " Interpol"
myDest.info.menuName = myMin.info.familyName
myDest.info.fondName = myMin.info.familyName + "-Interpol"
# myFont = fl.font
# myEncoding= os.path.join(fl.path, r"Encoding", r"MACROMAN.ENC")
# myFont.encoding.Load(myEncoding)
myDest.update()
print `int(factor * 100)` + "% interpolation of " + myMin.info.fontName + " and " + myMax.info.fontName

View File

@ -0,0 +1,137 @@
#FLM: Print all font info FL Python
f = fl.font
if f.file_name:
print "File: " + str(f.file_name)
print "Number of glyphs: " + str(len(f))
print ""
if f.family_name:
print "Family Name: " + str(f.family_name)
if f.weight:
print "Weight: " + str(f.weight)
if f.weight_code:
print "Weight Code: " + str(f.weight_code)
if f.width:
print "Width: " + str(f.width)
if f.font_style:
print "Style: " + str(f.font_style)
# 1=italic, 32=bold, 64=regular
if f.style_name:
print "Style Name: " + str(f.style_name)
if f.font_name:
print "Font Name: " + str(f.font_name)
if f.full_name:
print "Full Name: " + str(f.full_name)
if f.menu_name:
print "Menu Name: " + str(f.menu_name)
if f.apple_name:
print "FOND Name: " + str(f.apple_name)
print ""
if f.pref_family_name:
print "OT Family Name: " + str(f.pref_family_name)
if f.pref_style_name:
print "OT Style Name: " + str(f.pref_style_name)
if f.mac_compatible:
print "OT Mac Name: " + str(f.mac_compatible)
print ""
if f.year:
print "Year: " + str(f.year)
if f.copyright:
print "Copyright: " + str(f.copyright)
if f.trademark:
print "Trademark: " + str(f.trademark)
if f.notice:
print "Notice: " + str(f.notice)
print ""
if f.designer:
print "Designer: " + str(f.designer)
if f.designer_url:
print "Designer URL: " + str(f.designer_url)
if f.vendor_url:
print "Vendor URL: " + str(f.vendor_url)
print ""
if f.version_major:
print "Version: " + str(f.version_major)
if f.version_minor:
print "Revision: " + str(f.version_minor)
if f.version:
print "Version: " + str(f.version)
if f.tt_version:
print "TrueType Version: " + str(f.tt_version)
print ""
if f.tt_u_id:
print "TrueType Unique ID: " + str(f.tt_u_id)
if f.unique_id:
print "Type 1 Unique ID: " + str(f.unique_id)
if f.vendor:
print "TrueType Vendor Code: " + str(f.vendor)
print ""
if f.panose:
print "PANOSE: " + str(f.panose)
print ""
if f.pcl_id:
print "PCL ID: " + str(f.pcl_id)
if f.vp_id:
print "VP ID: " + str(f.vp_id)
if f.ms_id:
print "MS ID: " + str(f.ms_id)
print ""
if f.upm:
print "UPM: " + str(f.upm)
print ""
if f.ascender:
print "Ascender: " + str(f.ascender[0])
if f.descender:
print "Descender: " + str(f.descender[0])
if f.cap_height:
print "Cap Height: " + str(f.cap_height[0])
if f.x_height:
print "X Height: " + str(f.x_height[0])
if f.italic_angle:
print "Italic Angle: " + str(f.italic_angle)
if f.slant_angle:
print "Slant Angle: " + str(f.slant_angle)
if f.underline_position:
print "Underline: " + str(f.underline_position)
if f.underline_thickness:
print "Thickness: " + str(f.underline_thickness)
print "Monospaced: " + str(f.is_fixed_pitch)
print ""
print "Microsoft Character Set: " + str(f.ms_charset)
if f.default_character:
print "PFM Default Character: " + str(f.default_character)
if f.fond_id:
print "Mac FOND ID: " + str(f.fond_id)
# if f.fontnames:
# print "f.fontnames " + str(f.fontnames)
# if f.note:
# print "f.note " + str(f.note)
# if f.pcl_chars_set:
# print "f.pcl_chars_set " + str(f.pcl_chars_set)
# if f.default_width:
# print "f.default_width " + str(f.default_width[0])
# if f.x_u_id_num:
# print "f.x_u_id_num " + str(f.x_u_id_num)
# if f.x_u_id:
# print "f.x_u_id " + str(f.x_u_id)
print "--- Done"
print ""
print ""

View File

@ -0,0 +1,100 @@
#FLM: Print all font info Robofab
from robofab.world import CurrentFont
# f = SelectFont()
f = CurrentFont()
print "Number of glyphs:", str(len(f))
print "Number of kerning pairs:", str(len(f.kerning.keys()))
if f.info.familyName:
print "f.info.familyName " + `f.info.familyName`
if f.info.fontStyle:
print "f.info.fontStyle " + `f.info.fontStyle`
if f.info.styleName:
print "f.info.styleName " + `f.info.styleName`
if f.info.fontName:
print "f.info.fontName " + `f.info.fontName`
if f.info.fullName:
print "f.info.fullName " + `f.info.fullName`
if f.info.menuName:
print "f.info.menuName " + `f.info.menuName`
if f.info.fondName:
print "f.info.fondName " + `f.info.fondName`
print ""
if f.info.otFamilyName:
print "f.info.otFamilyName " + `f.info.otFamilyName`
if f.info.otStyleName:
print "f.info.otStyleName " + `f.info.otStyleName`
if f.info.otMacName:
print "f.info.otMacName " + `f.info.otMacName`
print ""
if f.info.year:
print "f.info.year " + `f.info.year`
if f.info.copyright:
print "f.info.copyright " + `f.info.copyright.encode('latin-1')`
if f.info.trademark:
print "f.info.trademark " + `f.info.trademark.encode('latin-1')`
if f.info.notice:
print "f.info.notice " + `f.info.notice.encode('latin-1')`
print ""
if f.info.designer:
print "f.info.designer " + `f.info.designer.encode('latin-1')`
if f.info.designerURL:
print "f.info.designerURL " + `f.info.designerURL`
if f.info.vendorURL:
print "f.info.vendorURL " + `f.info.vendorURL`
print ""
if f.info.license:
print "f.info.license " + `f.info.license.encode('latin-1')`
if f.info.licenseURL:
print "f.info.licenseURL " + `f.info.licenseURL`
print ""
if f.info.versionMajor:
print "f.info.versionMajor " + `f.info.versionMajor`
if f.info.versionMinor:
print "f.info.versionMinor " + `f.info.versionMinor`
if f.info.ttVersion:
print "f.info.ttVersion " + `f.info.ttVersion`
print ""
if f.info.ttUniqueID:
print "f.info.ttUniqueID " + `f.info.ttUniqueID`
if f.info.uniqueID:
print "f.info.uniqueID " + `f.info.uniqueID`
if f.info.ttVendor:
print "f.info.ttVendor " + `f.info.ttVendor`
print ""
if f.info.unitsPerEm:
print "f.info.unitsPerEm " + `f.info.unitsPerEm`
print ""
if f.info.ascender:
print "f.info.ascender " + `f.info.ascender`
if f.info.capHeight:
print "f.info.capHeight " + `f.info.capHeight`
if f.info.italicAngle:
print "f.info.italicAngle " + `f.info.italicAngle`
if f.info.slantAngle:
print "f.info.slantAngle " + `f.info.slantAngle`
print ""
if f.info.fondID:
print "f.info.fondID " + `f.info.fondID`
print ""
if f.info.note:
print "f.info.note " + `f.info.note.encode('latin-1')`
print ""
if f.info.msCharSet:
print "f.info.msCharSet " + `f.info.msCharSet`
if f.info.selected:
print "f.info.selected " + `f.info.selected`
if f.info.defaultWidth:
print "f.info.defaultWidth " + `f.info.defaultWidth`
# print "f.info.parent " + `f.info.parent`
# print "f.info.weightName " + `f.info.weightName`
# print "f.info.weightValue " + `f.info.weightValue`
# print "f.info.widthName " + `f.info.widthName`
print "--- Done"
print ""
print ""

View File

@ -0,0 +1,13 @@
#FLM: Print kerning
from robofab.world import CurrentFont
myFont = CurrentFont()
myKerning = myFont.kerning
print ""
for myPair in myKerning:
myComb = str(myPair).split()
myComb = "hh/%s/%s" %(myComb[0][2:-2], myComb[1][1:-2])
print myComb,

View File

@ -0,0 +1,106 @@
#FLM: Unthread kerning and export as AFM files
from robofab.world import CurrentFont
from robofab.interface.all.dialogs import GetFolder, ProgressBar
theUppercase = ("Eth", "Lslash", "Scaron", "Yacute", "Thorn", "Zcaron", "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", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "AE", "Oslash", "Agrave", "Atilde", "Otilde", "OE", "Ydieresis", "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", "Ograve", "Uacute", "Ucircumflex", "Ugrave")
theLowercase = ("eth", "lslash", "scaron", "yacute", "thorn", "zcaron", "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", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "germandbls", "mu", "ae", "oslash", "oe", "ydieresis", "fi", "fl", "dotlessi")
theFigures = ("zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine")
thePunctuation = ("exclam", "numbersign", "dollar", "percent", "ampersand", "less", "greater", "question", "questiondown", "exclamdown", "perthousand", "onehalf", "onequarter", "onesuperior", "threequarters", "threesuperior", "twosuperior", "brokenbar", "minus", "multiply", "space", "quotedbl", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "colon", "semicolon", "equal", "at", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "braceleft", "bar", "braceright", "asciitilde", "dagger", "degree", "cent", "sterling", "section", "bullet", "paragraph", "registered", "copyright", "trademark", "acute", "dieresis", "plusminus", "yen", "ordfeminine", "ordmasculine", "logicalnot", "florin", "guillemotleft", "guillemotright", "ellipsis", "uni00A0", "endash", "emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "fraction", "Euro", "guilsinglleft", "guilsinglright", "daggerdbl", "periodcentered", "quotesinglbase", "quotedblbase", "circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "currency")
# myCollection = {"uc": theUppercase, "lc": theLowercase, "fig": theFigures, "inp": thePunctuation}
# myCollection = {"rest": theUppercase + theLowercase + thePunctuation, "fig": theFigures,}
myCollection = {"uc": theUppercase, "lc": theLowercase, "rest": thePunctuation + theFigures,}
myDict = {}
myFolder = GetFolder()
myFont = CurrentFont()
myflFont = fl.font
myKerning = myFont.kerning
if myFolder:
myBar = ProgressBar('Unthreading kerning...', len(myKerning))
for myPair in myKerning:
myComb = str(myPair).split()
myLeft = myComb[0][2:-2]
myRight = myComb[1][1:-2]
myLeftid = ""
myRightid = ""
for myGroup in myCollection:
if myLeft in myCollection[myGroup]:
myLeftid = str(myGroup)
if myRight in myCollection[myGroup]:
myRightid = str(myGroup)
if myRightid == "" or myLeftid == "":
myLeftid = "! UNKNOWN GLYPH"
myClass = myLeftid + "-" + myRightid
myLine = "KPX " + myLeft + " " + myRight + " " + str(myKerning[myPair])
if myDict.has_key(myClass):
myDict[myClass].append(myLine)
else:
myDict[myClass] = [myLine]
myBar.tick()
myBar.close()
myBar = ProgressBar('Writing...', len(myDict))
for myClass in myDict:
myPath = myFolder + ":" + myClass + "_kerning.afm"
myFile = open(myPath, "w")
myFile.write("StartFontMetrics 2.0" + chr(10))
myFile.write("Comment Copyright Paul van der Laan - Unthread kerning script" + chr(10))
myFile.write("Comment UniqueID " + str(myflFont.unique_id) + chr(10))
myFile.write("Comment Panose 2 11 9 3 4 0 0 2 0 4" + chr(10))
myFile.write("FullName " + myflFont.full_name + chr(10))
myFile.write("FontName " + myflFont.font_name + chr(10))
myFile.write("FamilyName " + myflFont.family_name + chr(10))
myFile.write("Weight " + myflFont.weight + chr(10))
myFile.write("Notice " + chr(10))
myFile.write("Version " + str(myflFont.version) + chr(10))
myFile.write("IsFixedPitch false" + chr(10))
myFile.write("ItalicAngle " + str(myflFont.italic_angle) + chr(10))
myFile.write("FontBBox -79 -261 1172 865" + chr(10))
myFile.write("Ascender " + str(myflFont.ascender[0]) + chr(10))
myFile.write("Descender " + str(myflFont.descender[0]) + chr(10))
myFile.write("XHeight " + str(myflFont.x_height[0]) + chr(10))
myFile.write("CapHeight " + str(myflFont.cap_height[0]) + chr(10))
myFile.write("UnderlinePosition " + str(myflFont.underline_position) + chr(10))
myFile.write("UnderlineThickness " + str(myflFont.underline_thickness) + chr(10))
myFile.write("EncodingScheme FontSpecific" + chr(10))
myFile.write("StartCharMetrics " + str(len(myFont)) + chr(10))
myChar = 1
for myGlyph in myFont:
myLine = "C " + str(myChar) + " ; WX "+ str(myGlyph.width) + " ; N " + str(myGlyph.name) + " ; B " + str(myGlyph.box)[1:-1] + chr(10)
myFile.write(myLine)
myChar += 1
myFile.write("EndCharMetrics" + chr(10))
myFile.write("StartKernData" + chr(10))
myFile.write("StartKernPairs " + str(len(myDict[myClass])) + chr(10))
for myPair in myDict[myClass]:
myFile.write(myPair + chr(10))
myFile.write("EndKernPairs" + chr(10))
myFile.write("EndKernData" + chr(10))
myFile.write("EndFontMetrics" + chr(10))
myFile.close()
print "Generated", myPath
myBar.tick()
myBar.close()
print "Done"

View File

@ -0,0 +1,13 @@
#FLM: Auto starting points
from robofab.world import CurrentGlyph
myGlyph = CurrentGlyph()
myGlyph.correctDirection()
myGlyph.autoContourOrder()
for contour in myGlyph:
contour.autoStartSegment()
myGlyph.update()
print "done"

View File

@ -0,0 +1,15 @@
#FLM: Build anchor for components
from robofab.world import CurrentGlyph
myGlyph=CurrentGlyph()
#if len(myGlyph.anchors) == 0:
# myGlyph.appendAnchor("nieuw", (50, 50))
myGlyph.appendAnchor("nieuw", (50, 50))
myGlyph.anchors[-1].name = "bottom"
myGlyph.anchors[-1].x = (myGlyph.box[2]+myGlyph.box[0])/2
myGlyph.anchors[-1].y = 0
myGlyph.update()

View File

@ -0,0 +1,10 @@
#FLM: Correct contour directions
from robofab.world import CurrentGlyph
glyph = CurrentGlyph()
glyph.correctDirection()
glyph.update()
print "Done"

View File

@ -0,0 +1,12 @@
#FLM: Decompose composites
from robofab.world import CurrentFont, CurrentGlyph
myFont = CurrentFont()
myGlyph = CurrentGlyph()
if myGlyph.components:
for c in range(0,len(myGlyph.components)):
myGlyph.components[0].decompose()
myGlyph.update()
print "Done"

View File

@ -0,0 +1,11 @@
#FLM: Remove overlap
from robofab.world import CurrentFont, CurrentGlyph
myFont = CurrentFont()
myGlyph = CurrentGlyph()
if myGlyph:
myGlyph.removeOverlap()
myGlyph.update()
print "Done"

View File

@ -0,0 +1,7 @@
#FLM: Select accents
from robofab.world import CurrentFont
myFont = CurrentFont()
myFont.selection = ['grave', 'acute', 'dieresis', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'commaaccent']

View File

@ -0,0 +1,7 @@
#FLM: Select Latin-1 accented glyphs
from robofab.world import CurrentFont
myFont = CurrentFont()
myFont.selection = ['Scaron', 'scaron', 'Yacute', 'yacute', 'Zcaron', 'zcaron', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'Agrave', 'Atilde', 'Otilde', 'ydieresis', 'Ydieresis', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave']

View File

@ -0,0 +1,7 @@
#FLM: Select Latin-2 accented lowercase
from robofab.world import CurrentFont
myFont = CurrentFont()
myFont.selection = ['amacron', 'aogonek', 'ccaron', 'cacute', 'zacute', 'dcaron', 'emacron', 'edotaccent', 'ecaron', 'eogonek', 'gcommaaccent', 'iogonek', 'imacron', 'lcommaaccent', 'lcaron', 'lacute', 'ncommaaccent', 'nacute', 'ncaron', 'ohungarumlaut', 'omacron', 'racute', 'rcaron', 'rcommaaccent', 'sacute', 'tcaron', 'umacron', 'uring', 'uhungarumlaut', 'uogonek', 'kcommaaccent', 'zdotaccent', 'abreve', 'scedilla', 'tcommaaccent', 'gbreve', 'scommaaccent', 'uni021B']

View File

@ -0,0 +1,7 @@
#FLM: Select Latin-2 accented glyphs
from robofab.world import CurrentFont
myFont = CurrentFont()
myFont.selection = ['Amacron', 'amacron', 'Aogonek', 'aogonek', 'Ccaron', 'ccaron', 'Cacute', 'cacute', 'Zacute', 'zacute', 'Dcaron', 'dcaron', 'Emacron', 'emacron', 'Edotaccent', 'edotaccent', 'Ecaron', 'ecaron', 'Eogonek', 'eogonek', 'gcommaaccent', 'Iogonek', 'iogonek', 'Imacron', 'imacron', 'Kcommaaccent', 'Lcommaaccent', 'lcommaaccent', 'Lcaron', 'lcaron', 'Lacute', 'lacute', 'Ncommaaccent', 'ncommaaccent', 'Nacute', 'nacute', 'Ncaron', 'ncaron', 'Ohungarumlaut', 'ohungarumlaut', 'Omacron', 'omacron', 'Racute', 'racute', 'Rcaron', 'rcaron', 'Rcommaaccent', 'rcommaaccent', 'Sacute', 'sacute', 'Tcaron', 'tcaron', 'Umacron', 'umacron', 'Uring', 'uring', 'Uhungarumlaut', 'uhungarumlaut', 'Uogonek', 'uogonek', 'kcommaaccent', 'Zdotaccent', 'zdotaccent', 'Gcommaaccent', 'Abreve', 'Scedilla', 'abreve', 'scedilla', 'Tcommaaccent', 'tcommaaccent', 'Gbreve', 'gbreve', 'Idotaccent', 'Scommaaccent', 'scommaaccent', 'uni021A', 'uni021B']

Binary file not shown.

View File

@ -0,0 +1,126 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.afmLib</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.afmLib</strong></big></big> (version $Id: afmLib.py,v 1.6 2003/05/24 12:50:47 jvr Exp $)</font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/afmLib.py">/code/fontTools/Lib/fontTools/afmLib.py</a></font></td></tr></table>
<p><tt>Module&nbsp;for&nbsp;reading&nbsp;and&nbsp;writing&nbsp;<a href="#AFM">AFM</a>&nbsp;files.</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="re.html">re</a><br>
</td><td width="25%" valign=top><a href="string.html">string</a><br>
</td><td width="25%" valign=top><a href="types.html">types</a><br>
</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="fontTools.afmLib.html#AFM">AFM</a>
</font></dt><dt><font face="helvetica, arial"><a href="exceptions.html#Exception">exceptions.Exception</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="fontTools.afmLib.html#error">error</a>
</font></dt></dl>
</dd>
</dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="AFM">class <strong>AFM</strong></a></font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="AFM-__delattr__"><strong>__delattr__</strong></a>(self, attr)</dt></dl>
<dl><dt><a name="AFM-__delitem__"><strong>__delitem__</strong></a>(self, key)</dt></dl>
<dl><dt><a name="AFM-__getattr__"><strong>__getattr__</strong></a>(self, attr)</dt></dl>
<dl><dt><a name="AFM-__getitem__"><strong>__getitem__</strong></a>(self, key)</dt></dl>
<dl><dt><a name="AFM-__init__"><strong>__init__</strong></a>(self, path<font color="#909090">=None</font>)</dt></dl>
<dl><dt><a name="AFM-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<dl><dt><a name="AFM-__setattr__"><strong>__setattr__</strong></a>(self, attr, value)</dt></dl>
<dl><dt><a name="AFM-__setitem__"><strong>__setitem__</strong></a>(self, key, value)</dt></dl>
<dl><dt><a name="AFM-addComment"><strong>addComment</strong></a>(self, comment)</dt></dl>
<dl><dt><a name="AFM-addComposite"><strong>addComposite</strong></a>(self, glyphName, components)</dt></dl>
<dl><dt><a name="AFM-chars"><strong>chars</strong></a>(self)</dt></dl>
<dl><dt><a name="AFM-comments"><strong>comments</strong></a>(self)</dt></dl>
<dl><dt><a name="AFM-has_char"><strong>has_char</strong></a>(self, char)</dt></dl>
<dl><dt><a name="AFM-has_kernpair"><strong>has_kernpair</strong></a>(self, pair)</dt></dl>
<dl><dt><a name="AFM-kernpairs"><strong>kernpairs</strong></a>(self)</dt></dl>
<dl><dt><a name="AFM-parseattr"><strong>parseattr</strong></a>(self, word, rest)</dt></dl>
<dl><dt><a name="AFM-parsechar"><strong>parsechar</strong></a>(self, rest)</dt></dl>
<dl><dt><a name="AFM-parsecomposite"><strong>parsecomposite</strong></a>(self, rest)</dt></dl>
<dl><dt><a name="AFM-parsekernpair"><strong>parsekernpair</strong></a>(self, rest)</dt></dl>
<dl><dt><a name="AFM-read"><strong>read</strong></a>(self, path)</dt></dl>
<dl><dt><a name="AFM-write"><strong>write</strong></a>(self, path, sep<font color="#909090">='<font color="#c040c0">\r</font>'</font>)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="error">class <strong>error</strong></a>(<a href="exceptions.html#Exception">exceptions.Exception</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
<dl><dt><a name="error-__getitem__"><strong>__getitem__</strong></a>(...)</dt></dl>
<dl><dt><a name="error-__init__"><strong>__init__</strong></a>(...)</dt></dl>
<dl><dt><a name="error-__str__"><strong>__str__</strong></a>(...)</dt></dl>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-readlines"><strong>readlines</strong></a>(path)</dt></dl>
<dl><dt><a name="-writelines"><strong>writelines</strong></a>(path, lines, sep<font color="#909090">='<font color="#c040c0">\r</font>'</font>)</dt></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>__version__</strong> = '$Id: afmLib.py,v 1.6 2003/05/24 12:50:47 jvr Exp $'<br>
<strong>charRE</strong> = &lt;_sre.SRE_Pattern object at 0x1916400&gt;<br>
<strong>componentRE</strong> = &lt;_sre.SRE_Pattern object at 0x116e470&gt;<br>
<strong>compositeRE</strong> = &lt;_sre.SRE_Pattern object at 0x131cb80&gt;<br>
<strong>identifierRE</strong> = &lt;_sre.SRE_Pattern object at 0x14f3708&gt;<br>
<strong>kernRE</strong> = &lt;_sre.SRE_Pattern object at 0x1175860&gt;<br>
<strong>preferredAttributeOrder</strong> = ['FontName', 'FullName', 'FamilyName', 'Weight', 'ItalicAngle', 'IsFixedPitch', 'FontBBox', 'UnderlinePosition', 'UnderlineThickness', 'Version', 'Notice', 'EncodingScheme', 'CapHeight', 'XHeight', 'Ascender', 'Descender']</td></tr></table>
</body></html>

View File

@ -0,0 +1,24 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.agl</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.agl</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/agl.py">/code/fontTools/Lib/fontTools/agl.py</a></font></td></tr></table>
<p><tt>#&nbsp;The&nbsp;table&nbsp;below&nbsp;is&nbsp;taken&nbsp;from<br>
#&nbsp;<a href="http://partners.adobe.com/asn/tech/type/aglfn13.txt">http://partners.adobe.com/asn/tech/type/aglfn13.txt</a></tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>AGL2UV</strong> = {'A': 65, 'AE': 198, 'AEacute': 508, 'Aacute': 193, 'Abreve': 258, 'Acircumflex': 194, 'Adieresis': 196, 'Agrave': 192, 'Alpha': 913, 'Alphatonos': 902, ...}<br>
<strong>AGLError</strong> = 'AGLError'<br>
<strong>UV2AGL</strong> = {32: 'space', 33: 'exclam', 34: 'quotedbl', 35: 'numbersign', 36: 'dollar', 37: 'percent', 38: 'ampersand', 39: 'quotesingle', 40: 'parenleft', 41: 'parenright', ...}</td></tr></table>
</body></html>

View File

@ -0,0 +1,26 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.agl_old</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.agl_old</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/Volumes/Kwak/Data/code/fonttools/Lib/fontTools/agl_old.py">/Volumes/Kwak/Data/code/fonttools/Lib/fontTools/agl_old.py</a></font></td></tr></table>
<p><tt>#&nbsp;The&nbsp;URLs&nbsp;in&nbsp;the&nbsp;text&nbsp;below&nbsp;are&nbsp;not&nbsp;correct.&nbsp;They&nbsp;should&nbsp;be:<br>
#&nbsp;&nbsp;&nbsp;<a href="http://partners.adobe.com/asn/developer/typeforum/unicodegn.html">http://partners.adobe.com/asn/developer/typeforum/unicodegn.html</a><br>
#&nbsp;&nbsp;&nbsp;<a href="http://partners.adobe.com/asn/developer/typeforum/corporateuse.txt">http://partners.adobe.com/asn/developer/typeforum/corporateuse.txt</a><br>
#</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>AGL2UV</strong> = {'A': 65, 'AE': 198, 'AEacute': 508, 'AEsmall': 63462, 'Aacute': 193, 'Aacutesmall': 63457, 'Abreve': 258, 'Acircumflex': 194, 'Acircumflexsmall': 63458, 'Acute': 63177, ...}<br>
<strong>AGLError</strong> = 'AGLError'<br>
<strong>UV2AGL</strong> = {32: 'space', 33: 'exclam', 34: 'quotedbl', 35: 'numbersign', 36: 'dollar', 37: 'percent', 38: 'ampersand', 39: 'quotesingle', 40: 'parenleft', 41: 'parenright', ...}</td></tr></table>
</body></html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,21 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.encodings.MacRoman</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.<a href="fontTools.encodings.html"><font color="#ffffff">encodings</font></a>.MacRoman</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/encodings/MacRoman.py">/code/fontTools/Lib/fontTools/encodings/MacRoman.py</a></font></td></tr></table>
<p></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>MacRoman</strong> = ['NUL', 'Eth', 'eth', 'Lslash', 'lslash', 'Scaron', 'scaron', 'Yacute', 'yacute', 'HT', 'LF', 'Thorn', 'thorn', 'CR', 'Zcaron', 'zcaron', 'DLE', 'DC1', 'DC2', 'DC3', ...]</td></tr></table>
</body></html>

View File

@ -0,0 +1,21 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.encodings.StandardEncoding</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.<a href="fontTools.encodings.html"><font color="#ffffff">encodings</font></a>.StandardEncoding</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/encodings/StandardEncoding.py">/code/fontTools/Lib/fontTools/encodings/StandardEncoding.py</a></font></td></tr></table>
<p></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>StandardEncoding</strong> = ['.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', ...]</td></tr></table>
</body></html>

View File

@ -0,0 +1,24 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: package fontTools.encodings</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.encodings</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/encodings/__init__.py">/code/fontTools/Lib/fontTools/encodings/__init__.py</a></font></td></tr></table>
<p><tt>Empty&nbsp;__init__.py&nbsp;file&nbsp;to&nbsp;signal&nbsp;Python&nbsp;this&nbsp;directory&nbsp;is&nbsp;a&nbsp;package.<br>
(It&nbsp;can't&nbsp;be&nbsp;completely&nbsp;empty&nbsp;since&nbsp;WinZip&nbsp;seems&nbsp;to&nbsp;skip&nbsp;empty&nbsp;files.)</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Package Contents</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="fontTools.encodings.MacRoman.html">MacRoman</a><br>
</td><td width="25%" valign=top><a href="fontTools.encodings.StandardEncoding.html">StandardEncoding</a><br>
</td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table>
</body></html>

View File

@ -0,0 +1,114 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.fondLib</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.fondLib</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/fondLib.py">/code/fontTools/Lib/fontTools/fondLib.py</a></font></td></tr></table>
<p></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="Carbon.Res.html">Carbon.Res</a><br>
<a href="os.html">os</a><br>
</td><td width="25%" valign=top><a href="sstruct.html">sstruct</a><br>
<a href="string.html">string</a><br>
</td><td width="25%" valign=top><a href="struct.html">struct</a><br>
</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="fontTools.fondLib.html#BitmapFontFile">BitmapFontFile</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.fondLib.html#FondSelector">FondSelector</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.fondLib.html#FontFamily">FontFamily</a>
</font></dt></dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="BitmapFontFile">class <strong>BitmapFontFile</strong></a></font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="BitmapFontFile-__init__"><strong>__init__</strong></a>(self, path, mode<font color="#909090">='r'</font>)</dt></dl>
<dl><dt><a name="BitmapFontFile-close"><strong>close</strong></a>(self)</dt></dl>
<dl><dt><a name="BitmapFontFile-getFONDs"><strong>getFONDs</strong></a>(self)</dt></dl>
<dl><dt><a name="BitmapFontFile-minimalparse"><strong>minimalparse</strong></a>(self)</dt></dl>
<dl><dt><a name="BitmapFontFile-parse"><strong>parse</strong></a>(self)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="FondSelector">class <strong>FondSelector</strong></a></font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="FondSelector-__init__"><strong>__init__</strong></a>(self, fondlist)</dt></dl>
<dl><dt><a name="FondSelector-checksel"><strong>checksel</strong></a>(self)</dt></dl>
<dl><dt><a name="FondSelector-close"><strong>close</strong></a>(self)</dt></dl>
<dl><dt><a name="FondSelector-listhit"><strong>listhit</strong></a>(self, isDbl)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="FontFamily">class <strong>FontFamily</strong></a></font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="FontFamily-__init__"><strong>__init__</strong></a>(self, theRes, mode<font color="#909090">='r'</font>)</dt></dl>
<dl><dt><a name="FontFamily-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<dl><dt><a name="FontFamily-getflags"><strong>getflags</strong></a>(self)</dt></dl>
<dl><dt><a name="FontFamily-minimalparse"><strong>minimalparse</strong></a>(self)</dt></dl>
<dl><dt><a name="FontFamily-parse"><strong>parse</strong></a>(self)</dt></dl>
<dl><dt><a name="FontFamily-save"><strong>save</strong></a>(self, destresfile<font color="#909090">=None</font>)</dt></dl>
<dl><dt><a name="FontFamily-setflags"><strong>setflags</strong></a>(self, flags)</dt></dl>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-makeLWFNfilename"><strong>makeLWFNfilename</strong></a>(name)</dt></dl>
<dl><dt><a name="-splitname"><strong>splitname</strong></a>(name, famname<font color="#909090">=None</font>)</dt></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>DEBUG</strong> = 0<br>
<strong>FONDheadersize</strong> = 52<br>
<strong>error</strong> = 'fondLib.error'<br>
<strong>headerformat</strong> = '<font color="#c040c0">\n\t</font>&gt;<font color="#c040c0">\n\t</font>ffFlags:<font color="#c040c0">\t</font>h<font color="#c040c0">\n\t</font>ffFamID:<font color="#c040c0">\t</font>h<font color="#c040c0">\n\t</font>ffFirstChar:<font color="#c040c0">\t</font>h<font color="#c040c0">\n\t</font>ffL...Max:<font color="#c040c0">\t</font>h<font color="#c040c0">\n\t</font>ffWTabOff:<font color="#c040c0">\t</font>l<font color="#c040c0">\n\t</font>ffKernOff:<font color="#c040c0">\t</font>l<font color="#c040c0">\n\t</font>ffStylOff:<font color="#c040c0">\t</font>l<font color="#c040c0">\n</font>'<br>
<strong>uppercase</strong> = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'</td></tr></table>
</body></html>

View File

@ -0,0 +1,40 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: package fontTools</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>fontTools</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/__init__.py">/code/fontTools/Lib/fontTools/__init__.py</a></font></td></tr></table>
<p></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Package Contents</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="fontTools.afmLib.html">afmLib</a><br>
<a href="fontTools.agl.html">agl</a><br>
<a href="fontTools.cffLib.html">cffLib</a><br>
</td><td width="25%" valign=top><a href="fontTools.encodings.html"><strong>encodings</strong>&nbsp;(package)</a><br>
<a href="fontTools.fondLib.html">fondLib</a><br>
<a href="fontTools.misc.html"><strong>misc</strong>&nbsp;(package)</a><br>
</td><td width="25%" valign=top><a href="fontTools.nfntLib.html">nfntLib</a><br>
<a href="fontTools.pens.html"><strong>pens</strong>&nbsp;(package)</a><br>
<a href="fontTools.t1Lib.html">t1Lib</a><br>
</td><td width="25%" valign=top><a href="fontTools.ttLib.html"><strong>ttLib</strong>&nbsp;(package)</a><br>
<a href="fontTools.ttx.html">ttx</a><br>
<a href="fontTools.unicode.html">unicode</a><br>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>version</strong> = '2.0b2'</td></tr></table>
</body></html>

View File

@ -0,0 +1,45 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.misc.arrayTools</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.<a href="fontTools.misc.html"><font color="#ffffff">misc</font></a>.arrayTools</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/misc/arrayTools.py">/code/fontTools/Lib/fontTools/misc/arrayTools.py</a></font></td></tr></table>
<p><tt>#&nbsp;Various&nbsp;array&nbsp;and&nbsp;rectangle&nbsp;tools,&nbsp;but&nbsp;mostly&nbsp;rectangles,&nbsp;hence&nbsp;the<br>
#&nbsp;name&nbsp;of&nbsp;this&nbsp;module&nbsp;(not).<br>
#</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-asInt16"><strong>asInt16</strong></a>(array)</dt><dd><tt>Round&nbsp;and&nbsp;cast&nbsp;to&nbsp;16&nbsp;bit&nbsp;integer.</tt></dd></dl>
<dl><dt><a name="-calcBounds"><strong>calcBounds</strong></a>(array)</dt><dd><tt>Return&nbsp;the&nbsp;bounding&nbsp;rectangle&nbsp;of&nbsp;a&nbsp;2D&nbsp;points&nbsp;array&nbsp;as&nbsp;a&nbsp;tuple:<br>
(xMin,&nbsp;yMin,&nbsp;xMax,&nbsp;yMax)</tt></dd></dl>
<dl><dt><a name="-insetRect"><strong>insetRect</strong></a>((xMin, yMin, xMax, yMax), dx, dy)</dt><dd><tt>Inset&nbsp;the&nbsp;rectangle&nbsp;by&nbsp;dx,&nbsp;dy&nbsp;on&nbsp;all&nbsp;sides.</tt></dd></dl>
<dl><dt><a name="-intRect"><strong>intRect</strong></a>((xMin, yMin, xMax, yMax))</dt><dd><tt>Return&nbsp;the&nbsp;rectangle,&nbsp;rounded&nbsp;off&nbsp;to&nbsp;integer&nbsp;values,&nbsp;but&nbsp;guaranteeing&nbsp;that<br>
the&nbsp;resulting&nbsp;rectangle&nbsp;is&nbsp;NOT&nbsp;smaller&nbsp;than&nbsp;the&nbsp;original.</tt></dd></dl>
<dl><dt><a name="-normRect"><strong>normRect</strong></a>((xMin, yMin, xMax, yMax))</dt><dd><tt>Normalize&nbsp;the&nbsp;rectangle&nbsp;so&nbsp;that&nbsp;the&nbsp;following&nbsp;holds:<br>
xMin&nbsp;&lt;=&nbsp;xMax&nbsp;and&nbsp;yMin&nbsp;&lt;=&nbsp;yMax</tt></dd></dl>
<dl><dt><a name="-offsetRect"><strong>offsetRect</strong></a>((xMin, yMin, xMax, yMax), dx, dy)</dt><dd><tt>Offset&nbsp;the&nbsp;rectangle&nbsp;by&nbsp;dx,&nbsp;dy.</tt></dd></dl>
<dl><dt><a name="-pointInRect"><strong>pointInRect</strong></a>((x, y), rect)</dt><dd><tt>Return&nbsp;True&nbsp;when&nbsp;point&nbsp;(x,&nbsp;y)&nbsp;is&nbsp;inside&nbsp;rect.</tt></dd></dl>
<dl><dt><a name="-pointsInRect"><strong>pointsInRect</strong></a>(array, rect)</dt><dd><tt>Find&nbsp;out&nbsp;which&nbsp;points&nbsp;or&nbsp;array&nbsp;are&nbsp;inside&nbsp;rect.&nbsp;<br>
Returns&nbsp;an&nbsp;array&nbsp;with&nbsp;a&nbsp;boolean&nbsp;for&nbsp;each&nbsp;point.</tt></dd></dl>
<dl><dt><a name="-rectCenter"><strong>rectCenter</strong></a>((xMin, yMin, xMax, yMax))</dt><dd><tt>Return&nbsp;the&nbsp;center&nbsp;of&nbsp;the&nbsp;rectangle&nbsp;as&nbsp;an&nbsp;(x,&nbsp;y)&nbsp;coordinate.</tt></dd></dl>
<dl><dt><a name="-scaleRect"><strong>scaleRect</strong></a>((xMin, yMin, xMax, yMax), x, y)</dt><dd><tt>Scale&nbsp;the&nbsp;rectangle&nbsp;by&nbsp;x,&nbsp;y.</tt></dd></dl>
<dl><dt><a name="-sectRect"><strong>sectRect</strong></a>((xMin1, yMin1, xMax1, yMax1), (xMin2, yMin2, xMax2, yMax2))</dt><dd><tt>Return&nbsp;a&nbsp;boolean&nbsp;and&nbsp;a&nbsp;rectangle.&nbsp;If&nbsp;the&nbsp;input&nbsp;rectangles&nbsp;intersect,&nbsp;return<br>
True&nbsp;and&nbsp;the&nbsp;intersecting&nbsp;rectangle.&nbsp;Return&nbsp;False&nbsp;and&nbsp;(0,&nbsp;0,&nbsp;0,&nbsp;0)&nbsp;if&nbsp;the&nbsp;input<br>
rectangles&nbsp;don't&nbsp;intersect.</tt></dd></dl>
<dl><dt><a name="-unionRect"><strong>unionRect</strong></a>((xMin1, yMin1, xMax1, yMax1), (xMin2, yMin2, xMax2, yMax2))</dt><dd><tt>Return&nbsp;the&nbsp;smallest&nbsp;rectangle&nbsp;in&nbsp;which&nbsp;both&nbsp;input&nbsp;rectangles&nbsp;are&nbsp;fully<br>
enclosed.&nbsp;In&nbsp;other&nbsp;words,&nbsp;return&nbsp;the&nbsp;total&nbsp;bounding&nbsp;rectangle&nbsp;of&nbsp;both&nbsp;input<br>
rectangles.</tt></dd></dl>
<dl><dt><a name="-updateBounds"><strong>updateBounds</strong></a>(bounds, (x, y), min<font color="#909090">=&lt;built-in function min&gt;</font>, max<font color="#909090">=&lt;built-in function max&gt;</font>)</dt><dd><tt>Return&nbsp;the&nbsp;bounding&nbsp;recangle&nbsp;of&nbsp;rectangle&nbsp;bounds&nbsp;and&nbsp;point&nbsp;(x,&nbsp;y).</tt></dd></dl>
<dl><dt><a name="-vectorLength"><strong>vectorLength</strong></a>(vector)</dt><dd><tt>Return&nbsp;the&nbsp;length&nbsp;of&nbsp;the&nbsp;given&nbsp;vector.</tt></dd></dl>
</td></tr></table>
</body></html>

View File

@ -0,0 +1,148 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.misc.bezierTools</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.<a href="fontTools.misc.html"><font color="#ffffff">misc</font></a>.bezierTools</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/misc/bezierTools.py">/code/fontTools/Lib/fontTools/misc/bezierTools.py</a></font></td></tr></table>
<p><tt>fontTools.misc.bezierTools.py&nbsp;--&nbsp;tools&nbsp;for&nbsp;working&nbsp;with&nbsp;bezier&nbsp;path&nbsp;segments.</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="Numeric.html">Numeric</a><br>
</td><td width="25%" valign=top></td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-acos"><strong>acos</strong></a>(...)</dt><dd><tt><a href="#-acos">acos</a>(x)<br>
&nbsp;<br>
Return&nbsp;the&nbsp;arc&nbsp;cosine&nbsp;(measured&nbsp;in&nbsp;radians)&nbsp;of&nbsp;x.</tt></dd></dl>
<dl><dt><a name="-calcCubicBounds"><strong>calcCubicBounds</strong></a>(pt1, pt2, pt3, pt4)</dt><dd><tt>Return&nbsp;the&nbsp;bounding&nbsp;rectangle&nbsp;for&nbsp;a&nbsp;cubic&nbsp;bezier&nbsp;segment.<br>
pt1&nbsp;and&nbsp;pt4&nbsp;are&nbsp;the&nbsp;"anchor"&nbsp;points,&nbsp;pt2&nbsp;and&nbsp;pt3&nbsp;are&nbsp;the&nbsp;"handles".<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-calcCubicBounds">calcCubicBounds</a>((0,&nbsp;0),&nbsp;(25,&nbsp;100),&nbsp;(75,&nbsp;100),&nbsp;(100,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0.0,&nbsp;0.0,&nbsp;100.0,&nbsp;75.0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-calcCubicBounds">calcCubicBounds</a>((0,&nbsp;0),&nbsp;(50,&nbsp;0),&nbsp;(100,&nbsp;50),&nbsp;(100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0.0,&nbsp;0.0,&nbsp;100.0,&nbsp;100.0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-calcCubicBounds">calcCubicBounds</a>((50,&nbsp;0),&nbsp;(0,&nbsp;100),&nbsp;(100,&nbsp;100),&nbsp;(50,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(35.566243270259356,&nbsp;0.0,&nbsp;64.433756729740679,&nbsp;75.0)</tt></dd></dl>
<dl><dt><a name="-calcCubicParameters"><strong>calcCubicParameters</strong></a>(pt1, pt2, pt3, pt4)</dt></dl>
<dl><dt><a name="-calcCubicPoints"><strong>calcCubicPoints</strong></a>(a, b, c, d)</dt></dl>
<dl><dt><a name="-calcQuadraticBounds"><strong>calcQuadraticBounds</strong></a>(pt1, pt2, pt3)</dt><dd><tt>Return&nbsp;the&nbsp;bounding&nbsp;rectangle&nbsp;for&nbsp;a&nbsp;qudratic&nbsp;bezier&nbsp;segment.<br>
pt1&nbsp;and&nbsp;pt3&nbsp;are&nbsp;the&nbsp;"anchor"&nbsp;points,&nbsp;pt2&nbsp;is&nbsp;the&nbsp;"handle".<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-calcQuadraticBounds">calcQuadraticBounds</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0.0,&nbsp;0.0,&nbsp;100.0,&nbsp;50.0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-calcQuadraticBounds">calcQuadraticBounds</a>((0,&nbsp;0),&nbsp;(100,&nbsp;0),&nbsp;(100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0.0,&nbsp;0.0,&nbsp;100.0,&nbsp;100.0)</tt></dd></dl>
<dl><dt><a name="-calcQuadraticParameters"><strong>calcQuadraticParameters</strong></a>(pt1, pt2, pt3)</dt></dl>
<dl><dt><a name="-calcQuadraticPoints"><strong>calcQuadraticPoints</strong></a>(a, b, c)</dt></dl>
<dl><dt><a name="-cos"><strong>cos</strong></a>(...)</dt><dd><tt><a href="#-cos">cos</a>(x)<br>
&nbsp;<br>
Return&nbsp;the&nbsp;cosine&nbsp;of&nbsp;x&nbsp;(measured&nbsp;in&nbsp;radians).</tt></dd></dl>
<dl><dt><a name="-printSegments"><strong>printSegments</strong></a>(segments)</dt><dd><tt>Helper&nbsp;for&nbsp;the&nbsp;doctests,&nbsp;displaying&nbsp;each&nbsp;segment&nbsp;in&nbsp;a&nbsp;list&nbsp;of<br>
segments&nbsp;on&nbsp;a&nbsp;single&nbsp;line&nbsp;as&nbsp;a&nbsp;tuple.</tt></dd></dl>
<dl><dt><a name="-solveCubic"><strong>solveCubic</strong></a>(a, b, c, d, abs<font color="#909090">=&lt;built-in function abs&gt;</font>, pow<font color="#909090">=&lt;built-in function pow&gt;</font>, sqrt<font color="#909090">=&lt;built-in function sqrt&gt;</font>, cos<font color="#909090">=&lt;built-in function cos&gt;</font>, acos<font color="#909090">=&lt;built-in function acos&gt;</font>, pi<font color="#909090">=3.1415926535897931</font>)</dt><dd><tt>Solve&nbsp;a&nbsp;cubic&nbsp;equation&nbsp;where&nbsp;a,&nbsp;b,&nbsp;c&nbsp;and&nbsp;d&nbsp;are&nbsp;real.<br>
&nbsp;&nbsp;&nbsp;&nbsp;a*x*x*x&nbsp;+&nbsp;b*x*x&nbsp;+&nbsp;c*x&nbsp;+&nbsp;d&nbsp;=&nbsp;0<br>
This&nbsp;function&nbsp;returns&nbsp;a&nbsp;list&nbsp;of&nbsp;roots.&nbsp;Note&nbsp;that&nbsp;the&nbsp;returned&nbsp;list<br>
is&nbsp;neither&nbsp;guaranteed&nbsp;to&nbsp;be&nbsp;sorted&nbsp;nor&nbsp;to&nbsp;contain&nbsp;unique&nbsp;values!</tt></dd></dl>
<dl><dt><a name="-solveQuadratic"><strong>solveQuadratic</strong></a>(a, b, c, sqrt<font color="#909090">=&lt;built-in function sqrt&gt;</font>)</dt><dd><tt>Solve&nbsp;a&nbsp;quadratic&nbsp;equation&nbsp;where&nbsp;a,&nbsp;b&nbsp;and&nbsp;c&nbsp;are&nbsp;real.<br>
&nbsp;&nbsp;&nbsp;&nbsp;a*x*x&nbsp;+&nbsp;b*x&nbsp;+&nbsp;c&nbsp;=&nbsp;0<br>
This&nbsp;function&nbsp;returns&nbsp;a&nbsp;list&nbsp;of&nbsp;roots.&nbsp;Note&nbsp;that&nbsp;the&nbsp;returned&nbsp;list<br>
is&nbsp;neither&nbsp;guaranteed&nbsp;to&nbsp;be&nbsp;sorted&nbsp;nor&nbsp;to&nbsp;contain&nbsp;unique&nbsp;values!</tt></dd></dl>
<dl><dt><a name="-splitCubic"><strong>splitCubic</strong></a>(pt1, pt2, pt3, pt4, where, isHorizontal)</dt><dd><tt>Split&nbsp;the&nbsp;cubic&nbsp;curve&nbsp;between&nbsp;pt1,&nbsp;pt2,&nbsp;pt3&nbsp;and&nbsp;pt4&nbsp;at&nbsp;position&nbsp;'where',<br>
which&nbsp;is&nbsp;an&nbsp;x&nbsp;coordinate&nbsp;if&nbsp;isHorizontal&nbsp;is&nbsp;False,&nbsp;a&nbsp;y&nbsp;coordinate&nbsp;if<br>
isHorizontal&nbsp;is&nbsp;True.&nbsp;Return&nbsp;a&nbsp;list&nbsp;of&nbsp;curve&nbsp;segments.<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitCubic">splitCubic</a>((0,&nbsp;0),&nbsp;(25,&nbsp;100),&nbsp;(75,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;150,&nbsp;False))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0,&nbsp;0),&nbsp;(25,&nbsp;100),&nbsp;(75,&nbsp;100),&nbsp;(100,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitCubic">splitCubic</a>((0,&nbsp;0),&nbsp;(25,&nbsp;100),&nbsp;(75,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;50,&nbsp;False))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(12.5,&nbsp;50.0),&nbsp;(31.25,&nbsp;75.0),&nbsp;(50.0,&nbsp;75.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;75.0),&nbsp;(68.75,&nbsp;75.0),&nbsp;(87.5,&nbsp;50.0),&nbsp;(100.0,&nbsp;0.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitCubic">splitCubic</a>((0,&nbsp;0),&nbsp;(25,&nbsp;100),&nbsp;(75,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;25,&nbsp;True))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(2.2937927384,&nbsp;9.17517095361),&nbsp;(4.79804488188,&nbsp;17.5085042869),&nbsp;(7.47413641001,&nbsp;25.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((7.47413641001,&nbsp;25.0),&nbsp;(31.2886200204,&nbsp;91.6666666667),&nbsp;(68.7113799796,&nbsp;91.6666666667),&nbsp;(92.52586359,&nbsp;25.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((92.52586359,&nbsp;25.0),&nbsp;(95.2019551181,&nbsp;17.5085042869),&nbsp;(97.7062072616,&nbsp;9.17517095361),&nbsp;(100.0,&nbsp;1.7763568394e-15))</tt></dd></dl>
<dl><dt><a name="-splitCubicAtT"><strong>splitCubicAtT</strong></a>(pt1, pt2, pt3, pt4, *ts)</dt><dd><tt>Split&nbsp;the&nbsp;cubic&nbsp;curve&nbsp;between&nbsp;pt1,&nbsp;pt2,&nbsp;pt3&nbsp;and&nbsp;pt4&nbsp;at&nbsp;one&nbsp;or&nbsp;more<br>
values&nbsp;of&nbsp;t.&nbsp;Return&nbsp;a&nbsp;list&nbsp;of&nbsp;curve&nbsp;segments.<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitCubicAtT">splitCubicAtT</a>((0,&nbsp;0),&nbsp;(25,&nbsp;100),&nbsp;(75,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;0.5))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(12.5,&nbsp;50.0),&nbsp;(31.25,&nbsp;75.0),&nbsp;(50.0,&nbsp;75.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;75.0),&nbsp;(68.75,&nbsp;75.0),&nbsp;(87.5,&nbsp;50.0),&nbsp;(100.0,&nbsp;0.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitCubicAtT">splitCubicAtT</a>((0,&nbsp;0),&nbsp;(25,&nbsp;100),&nbsp;(75,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;0.5,&nbsp;0.75))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(12.5,&nbsp;50.0),&nbsp;(31.25,&nbsp;75.0),&nbsp;(50.0,&nbsp;75.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;75.0),&nbsp;(59.375,&nbsp;75.0),&nbsp;(68.75,&nbsp;68.75),&nbsp;(77.34375,&nbsp;56.25))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((77.34375,&nbsp;56.25),&nbsp;(85.9375,&nbsp;43.75),&nbsp;(93.75,&nbsp;25.0),&nbsp;(100.0,&nbsp;0.0))</tt></dd></dl>
<dl><dt><a name="-splitLine"><strong>splitLine</strong></a>(pt1, pt2, where, isHorizontal)</dt><dd><tt>Split&nbsp;the&nbsp;line&nbsp;between&nbsp;pt1&nbsp;and&nbsp;pt2&nbsp;at&nbsp;position&nbsp;'where',&nbsp;which<br>
is&nbsp;an&nbsp;x&nbsp;coordinate&nbsp;if&nbsp;isHorizontal&nbsp;is&nbsp;False,&nbsp;a&nbsp;y&nbsp;coordinate&nbsp;if<br>
isHorizontal&nbsp;is&nbsp;True.&nbsp;Return&nbsp;a&nbsp;list&nbsp;of&nbsp;two&nbsp;line&nbsp;segments&nbsp;if&nbsp;the<br>
line&nbsp;was&nbsp;successfully&nbsp;split,&nbsp;or&nbsp;a&nbsp;list&nbsp;containing&nbsp;the&nbsp;original<br>
line.<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitLine">splitLine</a>((0,&nbsp;0),&nbsp;(100,&nbsp;100),&nbsp;50,&nbsp;True))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0,&nbsp;0),&nbsp;(50.0,&nbsp;50.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;50.0),&nbsp;(100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitLine">splitLine</a>((0,&nbsp;0),&nbsp;(100,&nbsp;100),&nbsp;100,&nbsp;True))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0,&nbsp;0),&nbsp;(100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitLine">splitLine</a>((0,&nbsp;0),&nbsp;(100,&nbsp;100),&nbsp;0,&nbsp;True))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0,&nbsp;0),&nbsp;(0.0,&nbsp;0.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitLine">splitLine</a>((0,&nbsp;0),&nbsp;(100,&nbsp;100),&nbsp;0,&nbsp;False))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0,&nbsp;0),&nbsp;(0.0,&nbsp;0.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(100,&nbsp;100))</tt></dd></dl>
<dl><dt><a name="-splitQuadratic"><strong>splitQuadratic</strong></a>(pt1, pt2, pt3, where, isHorizontal)</dt><dd><tt>Split&nbsp;the&nbsp;quadratic&nbsp;curve&nbsp;between&nbsp;pt1,&nbsp;pt2&nbsp;and&nbsp;pt3&nbsp;at&nbsp;position&nbsp;'where',<br>
which&nbsp;is&nbsp;an&nbsp;x&nbsp;coordinate&nbsp;if&nbsp;isHorizontal&nbsp;is&nbsp;False,&nbsp;a&nbsp;y&nbsp;coordinate&nbsp;if<br>
isHorizontal&nbsp;is&nbsp;True.&nbsp;Return&nbsp;a&nbsp;list&nbsp;of&nbsp;curve&nbsp;segments.<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitQuadratic">splitQuadratic</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;150,&nbsp;False))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitQuadratic">splitQuadratic</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;50,&nbsp;False))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(25.0,&nbsp;50.0),&nbsp;(50.0,&nbsp;50.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;50.0),&nbsp;(75.0,&nbsp;50.0),&nbsp;(100.0,&nbsp;0.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitQuadratic">splitQuadratic</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;25,&nbsp;False))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(12.5,&nbsp;25.0),&nbsp;(25.0,&nbsp;37.5))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((25.0,&nbsp;37.5),&nbsp;(62.5,&nbsp;75.0),&nbsp;(100.0,&nbsp;0.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitQuadratic">splitQuadratic</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;25,&nbsp;True))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(7.32233047034,&nbsp;14.6446609407),&nbsp;(14.6446609407,&nbsp;25.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((14.6446609407,&nbsp;25.0),&nbsp;(50.0,&nbsp;75.0),&nbsp;(85.3553390593,&nbsp;25.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((85.3553390593,&nbsp;25.0),&nbsp;(92.6776695297,&nbsp;14.6446609407),&nbsp;(100.0,&nbsp;-7.1054273576e-15))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;#&nbsp;XXX&nbsp;I'm&nbsp;not&nbsp;at&nbsp;all&nbsp;sure&nbsp;if&nbsp;the&nbsp;following&nbsp;behavior&nbsp;is&nbsp;desirable:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitQuadratic">splitQuadratic</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;50,&nbsp;True))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(25.0,&nbsp;50.0),&nbsp;(50.0,&nbsp;50.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;50.0),&nbsp;(50.0,&nbsp;50.0),&nbsp;(50.0,&nbsp;50.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;50.0),&nbsp;(75.0,&nbsp;50.0),&nbsp;(100.0,&nbsp;0.0))</tt></dd></dl>
<dl><dt><a name="-splitQuadraticAtT"><strong>splitQuadraticAtT</strong></a>(pt1, pt2, pt3, *ts)</dt><dd><tt>Split&nbsp;the&nbsp;quadratic&nbsp;curve&nbsp;between&nbsp;pt1,&nbsp;pt2&nbsp;and&nbsp;pt3&nbsp;at&nbsp;one&nbsp;or&nbsp;more<br>
values&nbsp;of&nbsp;t.&nbsp;Return&nbsp;a&nbsp;list&nbsp;of&nbsp;curve&nbsp;segments.<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitQuadraticAtT">splitQuadraticAtT</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;0.5))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(25.0,&nbsp;50.0),&nbsp;(50.0,&nbsp;50.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;50.0),&nbsp;(75.0,&nbsp;50.0),&nbsp;(100.0,&nbsp;0.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitQuadraticAtT">splitQuadraticAtT</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;0.5,&nbsp;0.75))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(25.0,&nbsp;50.0),&nbsp;(50.0,&nbsp;50.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;50.0),&nbsp;(62.5,&nbsp;50.0),&nbsp;(75.0,&nbsp;37.5))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((75.0,&nbsp;37.5),&nbsp;(87.5,&nbsp;25.0),&nbsp;(100.0,&nbsp;0.0))</tt></dd></dl>
<dl><dt><a name="-sqrt"><strong>sqrt</strong></a>(...)</dt><dd><tt><a href="#-sqrt">sqrt</a>(x)<br>
&nbsp;<br>
Return&nbsp;the&nbsp;square&nbsp;root&nbsp;of&nbsp;x.</tt></dd></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>__all__</strong> = ['calcQuadraticBounds', 'calcCubicBounds', 'splitLine', 'splitQuadratic', 'splitCubic', 'splitQuadraticAtT', 'splitCubicAtT', 'solveQuadratic', 'solveCubic']<br>
<strong>epsilon</strong> = 9.9999999999999998e-13<br>
<strong>pi</strong> = 3.1415926535897931</td></tr></table>
</body></html>

View File

@ -0,0 +1,41 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.misc.eexec</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.<a href="fontTools.misc.html"><font color="#ffffff">misc</font></a>.eexec</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/misc/eexec.py">/code/fontTools/Lib/fontTools/misc/eexec.py</a></font></td></tr></table>
<p><tt>fontTools.misc.eexec.py&nbsp;--&nbsp;Module&nbsp;implementing&nbsp;the&nbsp;eexec&nbsp;and&nbsp;<br>
charstring&nbsp;encryption&nbsp;algorithm&nbsp;as&nbsp;used&nbsp;by&nbsp;PostScript&nbsp;Type&nbsp;1&nbsp;fonts.</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="string.html">string</a><br>
</td><td width="25%" valign=top></td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-deHexString"><strong>deHexString</strong></a>(h)</dt></dl>
<dl><dt><a name="-decrypt"><strong>decrypt</strong></a>(cipherstring, R)</dt></dl>
<dl><dt><a name="-encrypt"><strong>encrypt</strong></a>(plainstring, R)</dt></dl>
<dl><dt><a name="-hexString"><strong>hexString</strong></a>(s)</dt></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>error</strong> = 'eexec.error'</td></tr></table>
</body></html>

View File

@ -0,0 +1,31 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: package fontTools.misc</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.misc</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/misc/__init__.py">/code/fontTools/Lib/fontTools/misc/__init__.py</a></font></td></tr></table>
<p><tt>Empty&nbsp;__init__.py&nbsp;file&nbsp;to&nbsp;signal&nbsp;Python&nbsp;this&nbsp;directory&nbsp;is&nbsp;a&nbsp;package.<br>
(It&nbsp;can't&nbsp;be&nbsp;completely&nbsp;empty&nbsp;since&nbsp;WinZip&nbsp;seems&nbsp;to&nbsp;skip&nbsp;empty&nbsp;files.)</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Package Contents</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="fontTools.misc.arrayTools.html">arrayTools</a><br>
<a href="fontTools.misc.bezierTools.html">bezierTools</a><br>
<a href="fontTools.misc.eexec.html">eexec</a><br>
</td><td width="25%" valign=top><a href="fontTools.misc.homeResFile.html">homeResFile</a><br>
<a href="fontTools.misc.psCharStrings.html">psCharStrings</a><br>
<a href="fontTools.misc.psLib.html">psLib</a><br>
</td><td width="25%" valign=top><a href="fontTools.misc.psOperators.html">psOperators</a><br>
<a href="fontTools.misc.textTools.html">textTools</a><br>
<a href="fontTools.misc.transform.html">transform</a><br>
</td><td width="25%" valign=top></td></tr></table></td></tr></table>
</body></html>

View File

@ -0,0 +1,672 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.misc.psCharStrings</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.<a href="fontTools.misc.html"><font color="#ffffff">misc</font></a>.psCharStrings</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/misc/psCharStrings.py">/code/fontTools/Lib/fontTools/misc/psCharStrings.py</a></font></td></tr></table>
<p><tt>psCharStrings.py&nbsp;--&nbsp;module&nbsp;implementing&nbsp;various&nbsp;kinds&nbsp;of&nbsp;CharStrings:&nbsp;<br>
CFF&nbsp;dictionary&nbsp;data&nbsp;and&nbsp;Type1/Type2&nbsp;CharStrings.</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="string.html">string</a><br>
</td><td width="25%" valign=top><a href="struct.html">struct</a><br>
</td><td width="25%" valign=top><a href="types.html">types</a><br>
</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="fontTools.misc.psCharStrings.html#ByteCodeBase">ByteCodeBase</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="fontTools.misc.psCharStrings.html#DictDecompiler">DictDecompiler</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psCharStrings.html#T2CharString">T2CharString</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="fontTools.misc.psCharStrings.html#T1CharString">T1CharString</a>
</font></dt></dl>
</dd>
</dl>
</dd>
<dt><font face="helvetica, arial"><a href="exceptions.html#Exception">exceptions.Exception</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="fontTools.misc.psCharStrings.html#CharStringCompileError">CharStringCompileError</a>
</font></dt></dl>
</dd>
<dt><font face="helvetica, arial"><a href="fontTools.misc.psCharStrings.html#SimpleT2Decompiler">SimpleT2Decompiler</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="fontTools.misc.psCharStrings.html#T2OutlineExtractor">T2OutlineExtractor</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="fontTools.misc.psCharStrings.html#T1OutlineExtractor">T1OutlineExtractor</a>
</font></dt></dl>
</dd>
</dl>
</dd>
</dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ByteCodeBase">class <strong>ByteCodeBase</strong></a></font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ByteCodeBase-read_byte"><strong>read_byte</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="ByteCodeBase-read_fixed1616"><strong>read_fixed1616</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="ByteCodeBase-read_longInt"><strong>read_longInt</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="ByteCodeBase-read_realNumber"><strong>read_realNumber</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="ByteCodeBase-read_shortInt"><strong>read_shortInt</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="ByteCodeBase-read_smallInt1"><strong>read_smallInt1</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="ByteCodeBase-read_smallInt2"><strong>read_smallInt2</strong></a>(self, b0, data, index)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="CharStringCompileError">class <strong>CharStringCompileError</strong></a>(<a href="exceptions.html#Exception">exceptions.Exception</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
<dl><dt><a name="CharStringCompileError-__getitem__"><strong>__getitem__</strong></a>(...)</dt></dl>
<dl><dt><a name="CharStringCompileError-__init__"><strong>__init__</strong></a>(...)</dt></dl>
<dl><dt><a name="CharStringCompileError-__str__"><strong>__str__</strong></a>(...)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="DictDecompiler">class <strong>DictDecompiler</strong></a>(<a href="fontTools.misc.psCharStrings.html#ByteCodeBase">ByteCodeBase</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="DictDecompiler-__init__"><strong>__init__</strong></a>(self, strings)</dt></dl>
<dl><dt><a name="DictDecompiler-arg_SID"><strong>arg_SID</strong></a>(self, name)</dt></dl>
<dl><dt><a name="DictDecompiler-arg_array"><strong>arg_array</strong></a>(self, name)</dt></dl>
<dl><dt><a name="DictDecompiler-arg_delta"><strong>arg_delta</strong></a>(self, name)</dt></dl>
<dl><dt><a name="DictDecompiler-arg_number"><strong>arg_number</strong></a>(self, name)</dt></dl>
<dl><dt><a name="DictDecompiler-decompile"><strong>decompile</strong></a>(self, data)</dt></dl>
<dl><dt><a name="DictDecompiler-do_operator"><strong>do_operator</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="DictDecompiler-getDict"><strong>getDict</strong></a>(self)</dt></dl>
<dl><dt><a name="DictDecompiler-handle_operator"><strong>handle_operator</strong></a>(self, operator, argType)</dt></dl>
<dl><dt><a name="DictDecompiler-pop"><strong>pop</strong></a>(self)</dt></dl>
<dl><dt><a name="DictDecompiler-popall"><strong>popall</strong></a>(self)</dt></dl>
<hr>
Data and other attributes defined here:<br>
<dl><dt><strong>operandEncoding</strong> = ['do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', ...]</dl>
<hr>
Methods inherited from <a href="fontTools.misc.psCharStrings.html#ByteCodeBase">ByteCodeBase</a>:<br>
<dl><dt><a name="DictDecompiler-read_byte"><strong>read_byte</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="DictDecompiler-read_fixed1616"><strong>read_fixed1616</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="DictDecompiler-read_longInt"><strong>read_longInt</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="DictDecompiler-read_realNumber"><strong>read_realNumber</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="DictDecompiler-read_shortInt"><strong>read_shortInt</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="DictDecompiler-read_smallInt1"><strong>read_smallInt1</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="DictDecompiler-read_smallInt2"><strong>read_smallInt2</strong></a>(self, b0, data, index)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="SimpleT2Decompiler">class <strong>SimpleT2Decompiler</strong></a></font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="SimpleT2Decompiler-__init__"><strong>__init__</strong></a>(self, localSubrs, globalSubrs)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-countHints"><strong>countHints</strong></a>(self)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-execute"><strong>execute</strong></a>(self, charString)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-op_callgsubr"><strong>op_callgsubr</strong></a>(self, index)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-op_callsubr"><strong>op_callsubr</strong></a>(self, index)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-op_cntrmask"><strong>op_cntrmask</strong></a> = <a href="#SimpleT2Decompiler-op_hintmask">op_hintmask</a>(self, index)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-op_endchar"><strong>op_endchar</strong></a>(self, index)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-op_hintmask"><strong>op_hintmask</strong></a>(self, index)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-op_hstem"><strong>op_hstem</strong></a>(self, index)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-op_hstemhm"><strong>op_hstemhm</strong></a>(self, index)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-op_return"><strong>op_return</strong></a>(self, index)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-op_vstem"><strong>op_vstem</strong></a>(self, index)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-op_vstemhm"><strong>op_vstemhm</strong></a>(self, index)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-pop"><strong>pop</strong></a>(self)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-popall"><strong>popall</strong></a>(self)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-push"><strong>push</strong></a>(self, value)</dt></dl>
<dl><dt><a name="SimpleT2Decompiler-reset"><strong>reset</strong></a>(self)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="T1CharString">class <strong>T1CharString</strong></a>(<a href="fontTools.misc.psCharStrings.html#T2CharString">T2CharString</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="fontTools.misc.psCharStrings.html#T1CharString">T1CharString</a></dd>
<dd><a href="fontTools.misc.psCharStrings.html#T2CharString">T2CharString</a></dd>
<dd><a href="fontTools.misc.psCharStrings.html#ByteCodeBase">ByteCodeBase</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="T1CharString-__init__"><strong>__init__</strong></a>(self, bytecode<font color="#909090">=None</font>, program<font color="#909090">=None</font>, subrs<font color="#909090">=None</font>)</dt></dl>
<dl><dt><a name="T1CharString-decompile"><strong>decompile</strong></a>(self)</dt></dl>
<dl><dt><a name="T1CharString-draw"><strong>draw</strong></a>(self, pen)</dt></dl>
<dl><dt><a name="T1CharString-getFixedEncoder"><strong>getFixedEncoder</strong></a>(self)</dt></dl>
<dl><dt><a name="T1CharString-getIntEncoder"><strong>getIntEncoder</strong></a>(self)</dt></dl>
<hr>
Data and other attributes defined here:<br>
<dl><dt><strong>opcodes</strong> = {'callothersubr': (12, 16), 'callsubr': (10,), 'closepath': (9,), 'div': (12, 12), 'dotsection': (12, 0), 'endchar': (14,), 'hlineto': (6,), 'hmoveto': (22,), 'hsbw': (13,), 'hstem': (1,), ...}</dl>
<dl><dt><strong>operandEncoding</strong> = ['do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', ...]</dl>
<dl><dt><strong>operators</strong> = {1: 'hstem', 3: 'vstem', 4: 'vmoveto', 5: 'rlineto', 6: 'hlineto', 7: 'vlineto', 8: 'rrcurveto', 9: 'closepath', 10: 'callsubr', 11: 'return', ...}</dl>
<hr>
Methods inherited from <a href="fontTools.misc.psCharStrings.html#T2CharString">T2CharString</a>:<br>
<dl><dt><a name="T1CharString-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<dl><dt><a name="T1CharString-compile"><strong>compile</strong></a>(self)</dt></dl>
<dl><dt><a name="T1CharString-do_operator"><strong>do_operator</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="T1CharString-fromXML"><strong>fromXML</strong></a>(self, (name, attrs, content))</dt></dl>
<dl><dt><a name="T1CharString-getBytes"><strong>getBytes</strong></a>(self, index, nBytes)</dt></dl>
<dl><dt><a name="T1CharString-getToken"><strong>getToken</strong></a>(self, index, len<font color="#909090">=&lt;built-in function len&gt;</font>, ord<font color="#909090">=&lt;built-in function ord&gt;</font>, getattr<font color="#909090">=&lt;built-in function getattr&gt;</font>, type<font color="#909090">=&lt;type 'type'&gt;</font>, StringType<font color="#909090">=&lt;type 'str'&gt;</font>)</dt></dl>
<dl><dt><a name="T1CharString-needsDecompilation"><strong>needsDecompilation</strong></a>(self)</dt></dl>
<dl><dt><a name="T1CharString-setBytecode"><strong>setBytecode</strong></a>(self, bytecode)</dt></dl>
<dl><dt><a name="T1CharString-setProgram"><strong>setProgram</strong></a>(self, program)</dt></dl>
<dl><dt><a name="T1CharString-toXML"><strong>toXML</strong></a>(self, xmlWriter)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psCharStrings.html#ByteCodeBase">ByteCodeBase</a>:<br>
<dl><dt><a name="T1CharString-read_byte"><strong>read_byte</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="T1CharString-read_fixed1616"><strong>read_fixed1616</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="T1CharString-read_longInt"><strong>read_longInt</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="T1CharString-read_realNumber"><strong>read_realNumber</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="T1CharString-read_shortInt"><strong>read_shortInt</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="T1CharString-read_smallInt1"><strong>read_smallInt1</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="T1CharString-read_smallInt2"><strong>read_smallInt2</strong></a>(self, b0, data, index)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="T1OutlineExtractor">class <strong>T1OutlineExtractor</strong></a>(<a href="fontTools.misc.psCharStrings.html#T2OutlineExtractor">T2OutlineExtractor</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="fontTools.misc.psCharStrings.html#T1OutlineExtractor">T1OutlineExtractor</a></dd>
<dd><a href="fontTools.misc.psCharStrings.html#T2OutlineExtractor">T2OutlineExtractor</a></dd>
<dd><a href="fontTools.misc.psCharStrings.html#SimpleT2Decompiler">SimpleT2Decompiler</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="T1OutlineExtractor-__init__"><strong>__init__</strong></a>(self, pen, subrs)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-doFlex"><strong>doFlex</strong></a>(self)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-endPath"><strong>endPath</strong></a>(self)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-exch"><strong>exch</strong></a>(self)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_callothersubr"><strong>op_callothersubr</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_callsubr"><strong>op_callsubr</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_closepath"><strong>op_closepath</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_dotsection"><strong>op_dotsection</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_endchar"><strong>op_endchar</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_hmoveto"><strong>op_hmoveto</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_hsbw"><strong>op_hsbw</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_hstem3"><strong>op_hstem3</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_pop"><strong>op_pop</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_rmoveto"><strong>op_rmoveto</strong></a>(self, index)</dt><dd><tt>#&nbsp;path&nbsp;constructors</tt></dd></dl>
<dl><dt><a name="T1OutlineExtractor-op_sbw"><strong>op_sbw</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_seac"><strong>op_seac</strong></a>(self, index)</dt><dd><tt>asb&nbsp;adx&nbsp;ady&nbsp;bchar&nbsp;achar&nbsp;seac</tt></dd></dl>
<dl><dt><a name="T1OutlineExtractor-op_setcurrentpoint"><strong>op_setcurrentpoint</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_vmoveto"><strong>op_vmoveto</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_vstem3"><strong>op_vstem3</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-popallWidth"><strong>popallWidth</strong></a>(self, evenOdd<font color="#909090">=0</font>)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-reset"><strong>reset</strong></a>(self)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psCharStrings.html#T2OutlineExtractor">T2OutlineExtractor</a>:<br>
<dl><dt><a name="T1OutlineExtractor-alternatingLineto"><strong>alternatingLineto</strong></a>(self, isHorizontal)</dt><dd><tt>#&nbsp;miscelaneous&nbsp;helpers</tt></dd></dl>
<dl><dt><a name="T1OutlineExtractor-closePath"><strong>closePath</strong></a>(self)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-countHints"><strong>countHints</strong></a>(self)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-hcurveto"><strong>hcurveto</strong></a>(self, args)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_abs"><strong>op_abs</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_add"><strong>op_add</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_and"><strong>op_and</strong></a>(self, index)</dt><dd><tt>#&nbsp;misc</tt></dd></dl>
<dl><dt><a name="T1OutlineExtractor-op_blend"><strong>op_blend</strong></a>(self, index)</dt><dd><tt>#&nbsp;MultipleMaster.&nbsp;Well...</tt></dd></dl>
<dl><dt><a name="T1OutlineExtractor-op_div"><strong>op_div</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_drop"><strong>op_drop</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_dup"><strong>op_dup</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_eq"><strong>op_eq</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_exch"><strong>op_exch</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_flex"><strong>op_flex</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_flex1"><strong>op_flex1</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_get"><strong>op_get</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_hflex"><strong>op_hflex</strong></a>(self, index)</dt><dd><tt>#&nbsp;path&nbsp;constructors,&nbsp;flex</tt></dd></dl>
<dl><dt><a name="T1OutlineExtractor-op_hflex1"><strong>op_hflex1</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_hhcurveto"><strong>op_hhcurveto</strong></a>(self, index)</dt><dd><tt>dy1?&nbsp;{dxa&nbsp;dxb&nbsp;dyb&nbsp;dxc}+&nbsp;hhcurveto</tt></dd></dl>
<dl><dt><a name="T1OutlineExtractor-op_hlineto"><strong>op_hlineto</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_hvcurveto"><strong>op_hvcurveto</strong></a>(self, index)</dt><dd><tt>dx1&nbsp;dx2&nbsp;dy2&nbsp;dy3&nbsp;{dya&nbsp;dxb&nbsp;dyb&nbsp;dxc&nbsp;dxd&nbsp;dxe&nbsp;dye&nbsp;dyf}*&nbsp;dxf?<br>
{dxa&nbsp;dxb&nbsp;dyb&nbsp;dyc&nbsp;dyd&nbsp;dxe&nbsp;dye&nbsp;dxf}+&nbsp;dyf?</tt></dd></dl>
<dl><dt><a name="T1OutlineExtractor-op_ifelse"><strong>op_ifelse</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_index"><strong>op_index</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_load"><strong>op_load</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_mul"><strong>op_mul</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_neg"><strong>op_neg</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_not"><strong>op_not</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_or"><strong>op_or</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_put"><strong>op_put</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_random"><strong>op_random</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_rcurveline"><strong>op_rcurveline</strong></a>(self, index)</dt><dd><tt>{dxa&nbsp;dya&nbsp;dxb&nbsp;dyb&nbsp;dxc&nbsp;dyc}+&nbsp;dxd&nbsp;dyd&nbsp;rcurveline</tt></dd></dl>
<dl><dt><a name="T1OutlineExtractor-op_rlinecurve"><strong>op_rlinecurve</strong></a>(self, index)</dt><dd><tt>{dxa&nbsp;dya}+&nbsp;dxb&nbsp;dyb&nbsp;dxc&nbsp;dyc&nbsp;dxd&nbsp;dyd&nbsp;rlinecurve</tt></dd></dl>
<dl><dt><a name="T1OutlineExtractor-op_rlineto"><strong>op_rlineto</strong></a>(self, index)</dt><dd><tt>#&nbsp;path&nbsp;constructors,&nbsp;lines</tt></dd></dl>
<dl><dt><a name="T1OutlineExtractor-op_roll"><strong>op_roll</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_rrcurveto"><strong>op_rrcurveto</strong></a>(self, index)</dt><dd><tt>{dxa&nbsp;dya&nbsp;dxb&nbsp;dyb&nbsp;dxc&nbsp;dyc}+&nbsp;rrcurveto</tt></dd></dl>
<dl><dt><a name="T1OutlineExtractor-op_sqrt"><strong>op_sqrt</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_store"><strong>op_store</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_sub"><strong>op_sub</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_vhcurveto"><strong>op_vhcurveto</strong></a>(self, index)</dt><dd><tt>dy1&nbsp;dx2&nbsp;dy2&nbsp;dx3&nbsp;{dxa&nbsp;dxb&nbsp;dyb&nbsp;dyc&nbsp;dyd&nbsp;dxe&nbsp;dye&nbsp;dxf}*&nbsp;dyf?&nbsp;vhcurveto&nbsp;(30)<br>
{dya&nbsp;dxb&nbsp;dyb&nbsp;dxc&nbsp;dxd&nbsp;dxe&nbsp;dye&nbsp;dyf}+&nbsp;dxf?&nbsp;vhcurveto</tt></dd></dl>
<dl><dt><a name="T1OutlineExtractor-op_vlineto"><strong>op_vlineto</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_vvcurveto"><strong>op_vvcurveto</strong></a>(self, index)</dt><dd><tt>dx1?&nbsp;{dya&nbsp;dxb&nbsp;dyb&nbsp;dyc}+&nbsp;vvcurveto</tt></dd></dl>
<dl><dt><a name="T1OutlineExtractor-rCurveTo"><strong>rCurveTo</strong></a>(self, pt1, pt2, pt3)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-rLineTo"><strong>rLineTo</strong></a>(self, point)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-rMoveTo"><strong>rMoveTo</strong></a>(self, point)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-vcurveto"><strong>vcurveto</strong></a>(self, args)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psCharStrings.html#SimpleT2Decompiler">SimpleT2Decompiler</a>:<br>
<dl><dt><a name="T1OutlineExtractor-execute"><strong>execute</strong></a>(self, charString)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_callgsubr"><strong>op_callgsubr</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_cntrmask"><strong>op_cntrmask</strong></a> = op_hintmask(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_hintmask"><strong>op_hintmask</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_hstem"><strong>op_hstem</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_hstemhm"><strong>op_hstemhm</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_return"><strong>op_return</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_vstem"><strong>op_vstem</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-op_vstemhm"><strong>op_vstemhm</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-pop"><strong>pop</strong></a>(self)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-popall"><strong>popall</strong></a>(self)</dt></dl>
<dl><dt><a name="T1OutlineExtractor-push"><strong>push</strong></a>(self, value)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="T2CharString">class <strong>T2CharString</strong></a>(<a href="fontTools.misc.psCharStrings.html#ByteCodeBase">ByteCodeBase</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="T2CharString-__init__"><strong>__init__</strong></a>(self, bytecode<font color="#909090">=None</font>, program<font color="#909090">=None</font>, private<font color="#909090">=None</font>, globalSubrs<font color="#909090">=None</font>)</dt></dl>
<dl><dt><a name="T2CharString-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<dl><dt><a name="T2CharString-compile"><strong>compile</strong></a>(self)</dt></dl>
<dl><dt><a name="T2CharString-decompile"><strong>decompile</strong></a>(self)</dt></dl>
<dl><dt><a name="T2CharString-do_operator"><strong>do_operator</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="T2CharString-draw"><strong>draw</strong></a>(self, pen)</dt></dl>
<dl><dt><a name="T2CharString-fromXML"><strong>fromXML</strong></a>(self, (name, attrs, content))</dt></dl>
<dl><dt><a name="T2CharString-getBytes"><strong>getBytes</strong></a>(self, index, nBytes)</dt></dl>
<dl><dt><a name="T2CharString-getFixedEncoder"><strong>getFixedEncoder</strong></a>(self)</dt></dl>
<dl><dt><a name="T2CharString-getIntEncoder"><strong>getIntEncoder</strong></a>(self)</dt></dl>
<dl><dt><a name="T2CharString-getToken"><strong>getToken</strong></a>(self, index, len<font color="#909090">=&lt;built-in function len&gt;</font>, ord<font color="#909090">=&lt;built-in function ord&gt;</font>, getattr<font color="#909090">=&lt;built-in function getattr&gt;</font>, type<font color="#909090">=&lt;type 'type'&gt;</font>, StringType<font color="#909090">=&lt;type 'str'&gt;</font>)</dt></dl>
<dl><dt><a name="T2CharString-needsDecompilation"><strong>needsDecompilation</strong></a>(self)</dt></dl>
<dl><dt><a name="T2CharString-setBytecode"><strong>setBytecode</strong></a>(self, bytecode)</dt></dl>
<dl><dt><a name="T2CharString-setProgram"><strong>setProgram</strong></a>(self, program)</dt></dl>
<dl><dt><a name="T2CharString-toXML"><strong>toXML</strong></a>(self, xmlWriter)</dt></dl>
<hr>
Data and other attributes defined here:<br>
<dl><dt><strong>opcodes</strong> = {'abs': (12, 9), 'add': (12, 10), 'and': (12, 3), 'blend': (16,), 'callgsubr': (29,), 'callsubr': (10,), 'cntrmask': (20,), 'div': (12, 12), 'drop': (12, 18), 'dup': (12, 27), ...}</dl>
<dl><dt><strong>operandEncoding</strong> = ['do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', ...]</dl>
<dl><dt><strong>operators</strong> = {1: 'hstem', 3: 'vstem', 4: 'vmoveto', 5: 'rlineto', 6: 'hlineto', 7: 'vlineto', 8: 'rrcurveto', 10: 'callsubr', 11: 'return', 14: 'endchar', ...}</dl>
<hr>
Methods inherited from <a href="fontTools.misc.psCharStrings.html#ByteCodeBase">ByteCodeBase</a>:<br>
<dl><dt><a name="T2CharString-read_byte"><strong>read_byte</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="T2CharString-read_fixed1616"><strong>read_fixed1616</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="T2CharString-read_longInt"><strong>read_longInt</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="T2CharString-read_realNumber"><strong>read_realNumber</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="T2CharString-read_shortInt"><strong>read_shortInt</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="T2CharString-read_smallInt1"><strong>read_smallInt1</strong></a>(self, b0, data, index)</dt></dl>
<dl><dt><a name="T2CharString-read_smallInt2"><strong>read_smallInt2</strong></a>(self, b0, data, index)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="T2OutlineExtractor">class <strong>T2OutlineExtractor</strong></a>(<a href="fontTools.misc.psCharStrings.html#SimpleT2Decompiler">SimpleT2Decompiler</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="T2OutlineExtractor-__init__"><strong>__init__</strong></a>(self, pen, localSubrs, globalSubrs, nominalWidthX, defaultWidthX)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-alternatingLineto"><strong>alternatingLineto</strong></a>(self, isHorizontal)</dt><dd><tt>#&nbsp;miscelaneous&nbsp;helpers</tt></dd></dl>
<dl><dt><a name="T2OutlineExtractor-closePath"><strong>closePath</strong></a>(self)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-countHints"><strong>countHints</strong></a>(self)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-endPath"><strong>endPath</strong></a>(self)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-hcurveto"><strong>hcurveto</strong></a>(self, args)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_abs"><strong>op_abs</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_add"><strong>op_add</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_and"><strong>op_and</strong></a>(self, index)</dt><dd><tt>#&nbsp;misc</tt></dd></dl>
<dl><dt><a name="T2OutlineExtractor-op_blend"><strong>op_blend</strong></a>(self, index)</dt><dd><tt>#&nbsp;MultipleMaster.&nbsp;Well...</tt></dd></dl>
<dl><dt><a name="T2OutlineExtractor-op_div"><strong>op_div</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_drop"><strong>op_drop</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_dup"><strong>op_dup</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_endchar"><strong>op_endchar</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_eq"><strong>op_eq</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_exch"><strong>op_exch</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_flex"><strong>op_flex</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_flex1"><strong>op_flex1</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_get"><strong>op_get</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_hflex"><strong>op_hflex</strong></a>(self, index)</dt><dd><tt>#&nbsp;path&nbsp;constructors,&nbsp;flex</tt></dd></dl>
<dl><dt><a name="T2OutlineExtractor-op_hflex1"><strong>op_hflex1</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_hhcurveto"><strong>op_hhcurveto</strong></a>(self, index)</dt><dd><tt>dy1?&nbsp;{dxa&nbsp;dxb&nbsp;dyb&nbsp;dxc}+&nbsp;hhcurveto</tt></dd></dl>
<dl><dt><a name="T2OutlineExtractor-op_hlineto"><strong>op_hlineto</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_hmoveto"><strong>op_hmoveto</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_hvcurveto"><strong>op_hvcurveto</strong></a>(self, index)</dt><dd><tt>dx1&nbsp;dx2&nbsp;dy2&nbsp;dy3&nbsp;{dya&nbsp;dxb&nbsp;dyb&nbsp;dxc&nbsp;dxd&nbsp;dxe&nbsp;dye&nbsp;dyf}*&nbsp;dxf?<br>
{dxa&nbsp;dxb&nbsp;dyb&nbsp;dyc&nbsp;dyd&nbsp;dxe&nbsp;dye&nbsp;dxf}+&nbsp;dyf?</tt></dd></dl>
<dl><dt><a name="T2OutlineExtractor-op_ifelse"><strong>op_ifelse</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_index"><strong>op_index</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_load"><strong>op_load</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_mul"><strong>op_mul</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_neg"><strong>op_neg</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_not"><strong>op_not</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_or"><strong>op_or</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_put"><strong>op_put</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_random"><strong>op_random</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_rcurveline"><strong>op_rcurveline</strong></a>(self, index)</dt><dd><tt>{dxa&nbsp;dya&nbsp;dxb&nbsp;dyb&nbsp;dxc&nbsp;dyc}+&nbsp;dxd&nbsp;dyd&nbsp;rcurveline</tt></dd></dl>
<dl><dt><a name="T2OutlineExtractor-op_rlinecurve"><strong>op_rlinecurve</strong></a>(self, index)</dt><dd><tt>{dxa&nbsp;dya}+&nbsp;dxb&nbsp;dyb&nbsp;dxc&nbsp;dyc&nbsp;dxd&nbsp;dyd&nbsp;rlinecurve</tt></dd></dl>
<dl><dt><a name="T2OutlineExtractor-op_rlineto"><strong>op_rlineto</strong></a>(self, index)</dt><dd><tt>#&nbsp;path&nbsp;constructors,&nbsp;lines</tt></dd></dl>
<dl><dt><a name="T2OutlineExtractor-op_rmoveto"><strong>op_rmoveto</strong></a>(self, index)</dt><dd><tt>#&nbsp;path&nbsp;constructors,&nbsp;moveto</tt></dd></dl>
<dl><dt><a name="T2OutlineExtractor-op_roll"><strong>op_roll</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_rrcurveto"><strong>op_rrcurveto</strong></a>(self, index)</dt><dd><tt>{dxa&nbsp;dya&nbsp;dxb&nbsp;dyb&nbsp;dxc&nbsp;dyc}+&nbsp;rrcurveto</tt></dd></dl>
<dl><dt><a name="T2OutlineExtractor-op_sqrt"><strong>op_sqrt</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_store"><strong>op_store</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_sub"><strong>op_sub</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_vhcurveto"><strong>op_vhcurveto</strong></a>(self, index)</dt><dd><tt>dy1&nbsp;dx2&nbsp;dy2&nbsp;dx3&nbsp;{dxa&nbsp;dxb&nbsp;dyb&nbsp;dyc&nbsp;dyd&nbsp;dxe&nbsp;dye&nbsp;dxf}*&nbsp;dyf?&nbsp;vhcurveto&nbsp;(30)<br>
{dya&nbsp;dxb&nbsp;dyb&nbsp;dxc&nbsp;dxd&nbsp;dxe&nbsp;dye&nbsp;dyf}+&nbsp;dxf?&nbsp;vhcurveto</tt></dd></dl>
<dl><dt><a name="T2OutlineExtractor-op_vlineto"><strong>op_vlineto</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_vmoveto"><strong>op_vmoveto</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_vvcurveto"><strong>op_vvcurveto</strong></a>(self, index)</dt><dd><tt>dx1?&nbsp;{dya&nbsp;dxb&nbsp;dyb&nbsp;dyc}+&nbsp;vvcurveto</tt></dd></dl>
<dl><dt><a name="T2OutlineExtractor-popallWidth"><strong>popallWidth</strong></a>(self, evenOdd<font color="#909090">=0</font>)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-rCurveTo"><strong>rCurveTo</strong></a>(self, pt1, pt2, pt3)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-rLineTo"><strong>rLineTo</strong></a>(self, point)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-rMoveTo"><strong>rMoveTo</strong></a>(self, point)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-reset"><strong>reset</strong></a>(self)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-vcurveto"><strong>vcurveto</strong></a>(self, args)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psCharStrings.html#SimpleT2Decompiler">SimpleT2Decompiler</a>:<br>
<dl><dt><a name="T2OutlineExtractor-execute"><strong>execute</strong></a>(self, charString)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_callgsubr"><strong>op_callgsubr</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_callsubr"><strong>op_callsubr</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_cntrmask"><strong>op_cntrmask</strong></a> = op_hintmask(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_hintmask"><strong>op_hintmask</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_hstem"><strong>op_hstem</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_hstemhm"><strong>op_hstemhm</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_return"><strong>op_return</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_vstem"><strong>op_vstem</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-op_vstemhm"><strong>op_vstemhm</strong></a>(self, index)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-pop"><strong>pop</strong></a>(self)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-popall"><strong>popall</strong></a>(self)</dt></dl>
<dl><dt><a name="T2OutlineExtractor-push"><strong>push</strong></a>(self, value)</dt></dl>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-buildOperatorDict"><strong>buildOperatorDict</strong></a>(operatorList)</dt></dl>
<dl><dt><a name="-calcSubrBias"><strong>calcSubrBias</strong></a>(subrs)</dt></dl>
<dl><dt><a name="-encodeFixed"><strong>encodeFixed</strong></a>(f, pack<font color="#909090">=&lt;built-in function pack&gt;</font>)</dt></dl>
<dl><dt><a name="-encodeFloat"><strong>encodeFloat</strong></a>(f)</dt></dl>
<dl><dt><a name="-encodeIntCFF"><strong>encodeIntCFF</strong></a> = encodeInt(value, fourByteOp<font color="#909090">='<font color="#c040c0">\x1d</font>'</font>, chr<font color="#909090">=&lt;built-in function chr&gt;</font>, pack<font color="#909090">=&lt;built-in function pack&gt;</font>, unpack<font color="#909090">=&lt;built-in function unpack&gt;</font>)</dt></dl>
<dl><dt><a name="-encodeIntT1"><strong>encodeIntT1</strong></a> = encodeInt(value, fourByteOp<font color="#909090">='<font color="#c040c0">\xff</font>'</font>, chr<font color="#909090">=&lt;built-in function chr&gt;</font>, pack<font color="#909090">=&lt;built-in function pack&gt;</font>, unpack<font color="#909090">=&lt;built-in function unpack&gt;</font>)</dt></dl>
<dl><dt><a name="-encodeIntT2"><strong>encodeIntT2</strong></a> = encodeInt(value, fourByteOp<font color="#909090">=None</font>, chr<font color="#909090">=&lt;built-in function chr&gt;</font>, pack<font color="#909090">=&lt;built-in function pack&gt;</font>, unpack<font color="#909090">=&lt;built-in function unpack&gt;</font>)</dt></dl>
<dl><dt><a name="-getIntEncoder"><strong>getIntEncoder</strong></a>(format)</dt></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>DEBUG</strong> = 0<br>
<strong>cffDictOperandEncoding</strong> = ['do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', ...]<br>
<strong>realNibbles</strong> = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'E', 'E-', None, '-']<br>
<strong>realNibblesDict</strong> = {None: 13, '-': 14, '.': 10, '0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, ...}<br>
<strong>t1OperandEncoding</strong> = ['do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', ...]<br>
<strong>t1Operators</strong> = [(1, 'hstem'), (3, 'vstem'), (4, 'vmoveto'), (5, 'rlineto'), (6, 'hlineto'), (7, 'vlineto'), (8, 'rrcurveto'), (9, 'closepath'), (10, 'callsubr'), (11, 'return'), (13, 'hsbw'), (14, 'endchar'), (21, 'rmoveto'), (22, 'hmoveto'), (30, 'vhcurveto'), (31, 'hvcurveto'), ((12, 0), 'dotsection'), ((12, 1), 'vstem3'), ((12, 2), 'hstem3'), ((12, 6), 'seac'), ...]<br>
<strong>t2OperandEncoding</strong> = ['do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', 'do_operator', ...]<br>
<strong>t2Operators</strong> = [(1, 'hstem'), (3, 'vstem'), (4, 'vmoveto'), (5, 'rlineto'), (6, 'hlineto'), (7, 'vlineto'), (8, 'rrcurveto'), (10, 'callsubr'), (11, 'return'), (14, 'endchar'), (16, 'blend'), (18, 'hstemhm'), (19, 'hintmask'), (20, 'cntrmask'), (21, 'rmoveto'), (22, 'hmoveto'), (23, 'vstemhm'), (24, 'rcurveline'), (25, 'rlinecurve'), (26, 'vvcurveto'), ...]</td></tr></table>
</body></html>

View File

@ -0,0 +1,272 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.misc.psLib</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.<a href="fontTools.misc.html"><font color="#ffffff">misc</font></a>.psLib</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/misc/psLib.py">/code/fontTools/Lib/fontTools/misc/psLib.py</a></font></td></tr></table>
<p></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="StringIO.html">StringIO</a><br>
</td><td width="25%" valign=top><a href="fontTools.misc.eexec.html">fontTools.misc.eexec</a><br>
</td><td width="25%" valign=top><a href="re.html">re</a><br>
</td><td width="25%" valign=top><a href="types.html">types</a><br>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#PSOperators">fontTools.misc.psOperators.PSOperators</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="fontTools.misc.psLib.html#PSInterpreter">PSInterpreter</a>
</font></dt></dl>
</dd>
<dt><font face="helvetica, arial"><a href="StringIO.html#StringIO">StringIO.StringIO</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="fontTools.misc.psLib.html#PSTokenizer">PSTokenizer</a>
</font></dt></dl>
</dd>
</dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="PSInterpreter">class <strong>PSInterpreter</strong></a>(<a href="fontTools.misc.psOperators.html#PSOperators">fontTools.misc.psOperators.PSOperators</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="PSInterpreter-__init__"><strong>__init__</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-call_procedure"><strong>call_procedure</strong></a>(self, proc)</dt></dl>
<dl><dt><a name="PSInterpreter-close"><strong>close</strong></a>(self)</dt><dd><tt>Remove&nbsp;circular&nbsp;references.</tt></dd></dl>
<dl><dt><a name="PSInterpreter-do_comment"><strong>do_comment</strong></a>(self, token)</dt></dl>
<dl><dt><a name="PSInterpreter-do_hexstring"><strong>do_hexstring</strong></a>(self, token)</dt></dl>
<dl><dt><a name="PSInterpreter-do_literal"><strong>do_literal</strong></a>(self, token)</dt></dl>
<dl><dt><a name="PSInterpreter-do_makearray"><strong>do_makearray</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-do_special"><strong>do_special</strong></a>(self, token)</dt></dl>
<dl><dt><a name="PSInterpreter-do_string"><strong>do_string</strong></a>(self, token)</dt></dl>
<dl><dt><a name="PSInterpreter-do_token"><strong>do_token</strong></a>(self, token, int<font color="#909090">=&lt;type 'int'&gt;</font>, float<font color="#909090">=&lt;type 'float'&gt;</font>, ps_name<font color="#909090">=&lt;class fontTools.misc.psOperators.ps_name at 0x15be5a0&gt;</font>, ps_integer<font color="#909090">=&lt;class fontTools.misc.psOperators.ps_integer at 0x15be6c0&gt;</font>, ps_real<font color="#909090">=&lt;class fontTools.misc.psOperators.ps_real at 0x15be6f0&gt;</font>)</dt></dl>
<dl><dt><a name="PSInterpreter-fillsystemdict"><strong>fillsystemdict</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-handle_object"><strong>handle_object</strong></a>(self, object)</dt></dl>
<dl><dt><a name="PSInterpreter-interpret"><strong>interpret</strong></a>(self, data, getattr<font color="#909090">=&lt;built-in function getattr&gt;</font>)</dt></dl>
<dl><dt><a name="PSInterpreter-pop"><strong>pop</strong></a>(self, *types)</dt></dl>
<dl><dt><a name="PSInterpreter-push"><strong>push</strong></a>(self, object)</dt></dl>
<dl><dt><a name="PSInterpreter-resolve_name"><strong>resolve_name</strong></a>(self, name)</dt></dl>
<dl><dt><a name="PSInterpreter-suckoperators"><strong>suckoperators</strong></a>(self, systemdict, klass)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psOperators.html#PSOperators">fontTools.misc.psOperators.PSOperators</a>:<br>
<dl><dt><a name="PSInterpreter-proc_bind"><strong>proc_bind</strong></a>(self, proc)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_anchorsearch"><strong>ps_anchorsearch</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_array"><strong>ps_array</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_astore"><strong>ps_astore</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_begin"><strong>ps_begin</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_bind"><strong>ps_bind</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_cleartomark"><strong>ps_cleartomark</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_closefile"><strong>ps_closefile</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_count"><strong>ps_count</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_currentdict"><strong>ps_currentdict</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_currentfile"><strong>ps_currentfile</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_cvn"><strong>ps_cvn</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_cvx"><strong>ps_cvx</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_def"><strong>ps_def</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_definefont"><strong>ps_definefont</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_dict"><strong>ps_dict</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_dup"><strong>ps_dup</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_eexec"><strong>ps_eexec</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_end"><strong>ps_end</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_eq"><strong>ps_eq</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_exch"><strong>ps_exch</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_exec"><strong>ps_exec</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_executeonly"><strong>ps_executeonly</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_findfont"><strong>ps_findfont</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_for"><strong>ps_for</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_forall"><strong>ps_forall</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_get"><strong>ps_get</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_getinterval"><strong>ps_getinterval</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_if"><strong>ps_if</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_ifelse"><strong>ps_ifelse</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_index"><strong>ps_index</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_known"><strong>ps_known</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_load"><strong>ps_load</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_matrix"><strong>ps_matrix</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_ne"><strong>ps_ne</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_noaccess"><strong>ps_noaccess</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_not"><strong>ps_not</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_pop"><strong>ps_pop</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_print"><strong>ps_print</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_put"><strong>ps_put</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_putinterval"><strong>ps_putinterval</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_readonly"><strong>ps_readonly</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_readstring"><strong>ps_readstring</strong></a>(self, ps_boolean<font color="#909090">=&lt;class fontTools.misc.psOperators.ps_boolean at 0x15be540&gt;</font>, len<font color="#909090">=&lt;built-in function len&gt;</font>)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_store"><strong>ps_store</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_string"><strong>ps_string</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_systemdict"><strong>ps_systemdict</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_type"><strong>ps_type</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_userdict"><strong>ps_userdict</strong></a>(self)</dt></dl>
<dl><dt><a name="PSInterpreter-ps_where"><strong>ps_where</strong></a>(self)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="PSTokenizer">class <strong>PSTokenizer</strong></a>(<a href="StringIO.html#StringIO">StringIO.StringIO</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="PSTokenizer-flush"><strong>flush</strong></a>(self)</dt></dl>
<dl><dt><a name="PSTokenizer-getnexttoken"><strong>getnexttoken</strong></a>(self, len<font color="#909090">=&lt;built-in function len&gt;</font>, ps_special<font color="#909090">='()&lt;&gt;[]{}%'</font>, stringmatch<font color="#909090">=&lt;built-in method match of _sre.SRE_Pattern object at 0x14ac020&gt;</font>, hexstringmatch<font color="#909090">=&lt;built-in method match of _sre.SRE_Pattern object at 0x162c6b0&gt;</font>, commentmatch<font color="#909090">=&lt;built-in method match of _sre.SRE_Pattern object at 0x15b2440&gt;</font>, endmatch<font color="#909090">=&lt;built-in method match of _sre.SRE_Pattern object at 0x15b2320&gt;</font>, whitematch<font color="#909090">=&lt;built-in method match of _sre.SRE_Pattern object at 0x15bb020&gt;</font>)</dt></dl>
<dl><dt><a name="PSTokenizer-skipwhite"><strong>skipwhite</strong></a>(self, whitematch<font color="#909090">=&lt;built-in method match of _sre.SRE_Pattern object at 0x15bb020&gt;</font>)</dt></dl>
<dl><dt><a name="PSTokenizer-starteexec"><strong>starteexec</strong></a>(self)</dt></dl>
<dl><dt><a name="PSTokenizer-stopeexec"><strong>stopeexec</strong></a>(self)</dt></dl>
<hr>
Methods inherited from <a href="StringIO.html#StringIO">StringIO.StringIO</a>:<br>
<dl><dt><a name="PSTokenizer-__init__"><strong>__init__</strong></a>(self, buf<font color="#909090">=''</font>)</dt></dl>
<dl><dt><a name="PSTokenizer-__iter__"><strong>__iter__</strong></a>(self)</dt></dl>
<dl><dt><a name="PSTokenizer-close"><strong>close</strong></a>(self)</dt><dd><tt>Free&nbsp;the&nbsp;memory&nbsp;buffer.</tt></dd></dl>
<dl><dt><a name="PSTokenizer-getvalue"><strong>getvalue</strong></a>(self)</dt><dd><tt>Retrieve&nbsp;the&nbsp;entire&nbsp;contents&nbsp;of&nbsp;the&nbsp;"file"&nbsp;at&nbsp;any&nbsp;time&nbsp;before<br>
the&nbsp;<a href="StringIO.html#StringIO">StringIO</a>&nbsp;object's&nbsp;<a href="#PSTokenizer-close">close</a>()&nbsp;method&nbsp;is&nbsp;called.<br>
&nbsp;<br>
The&nbsp;<a href="StringIO.html#StringIO">StringIO</a>&nbsp;object&nbsp;can&nbsp;accept&nbsp;either&nbsp;Unicode&nbsp;or&nbsp;8-bit&nbsp;strings,<br>
but&nbsp;mixing&nbsp;the&nbsp;two&nbsp;may&nbsp;take&nbsp;some&nbsp;care.&nbsp;If&nbsp;both&nbsp;are&nbsp;used,&nbsp;8-bit<br>
strings&nbsp;that&nbsp;cannot&nbsp;be&nbsp;interpreted&nbsp;as&nbsp;7-bit&nbsp;ASCII&nbsp;(that&nbsp;use&nbsp;the<br>
8th&nbsp;bit)&nbsp;will&nbsp;cause&nbsp;a&nbsp;UnicodeError&nbsp;to&nbsp;be&nbsp;raised&nbsp;when&nbsp;<a href="#PSTokenizer-getvalue">getvalue</a>()<br>
is&nbsp;called.</tt></dd></dl>
<dl><dt><a name="PSTokenizer-isatty"><strong>isatty</strong></a>(self)</dt></dl>
<dl><dt><a name="PSTokenizer-next"><strong>next</strong></a>(self)</dt></dl>
<dl><dt><a name="PSTokenizer-read"><strong>read</strong></a>(self, n<font color="#909090">=-1</font>)</dt></dl>
<dl><dt><a name="PSTokenizer-readline"><strong>readline</strong></a>(self, length<font color="#909090">=None</font>)</dt></dl>
<dl><dt><a name="PSTokenizer-readlines"><strong>readlines</strong></a>(self, sizehint<font color="#909090">=0</font>)</dt></dl>
<dl><dt><a name="PSTokenizer-seek"><strong>seek</strong></a>(self, pos, mode<font color="#909090">=0</font>)</dt></dl>
<dl><dt><a name="PSTokenizer-tell"><strong>tell</strong></a>(self)</dt></dl>
<dl><dt><a name="PSTokenizer-truncate"><strong>truncate</strong></a>(self, size<font color="#909090">=None</font>)</dt></dl>
<dl><dt><a name="PSTokenizer-write"><strong>write</strong></a>(self, s)</dt></dl>
<dl><dt><a name="PSTokenizer-writelines"><strong>writelines</strong></a>(self, list)</dt></dl>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-suckfont"><strong>suckfont</strong></a>(data)</dt></dl>
<dl><dt><a name="-unpack_item"><strong>unpack_item</strong></a>(item)</dt></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>StandardEncoding</strong> = ['.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', ...]<br>
<strong>commentRE</strong> = &lt;_sre.SRE_Pattern object at 0x15b2440&gt;<br>
<strong>endofthingPat</strong> = '[^][(){}&lt;&gt;/%<font color="#c040c0">\t\n\x0b\x0c\r</font> ]*'<br>
<strong>endofthingRE</strong> = &lt;_sre.SRE_Pattern object at 0x15b2320&gt;<br>
<strong>hexstringRE</strong> = &lt;_sre.SRE_Pattern object at 0x162c6b0&gt;<br>
<strong>notdef</strong> = '.notdef'<br>
<strong>ps_StandardEncoding</strong> = [&lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, ...]<br>
<strong>ps_error</strong> = 'ps_error'<br>
<strong>ps_special</strong> = '()&lt;&gt;[]{}%'<br>
<strong>ps_tokenerror</strong> = 'ps_tokenerror'<br>
<strong>skipwhiteRE</strong> = &lt;_sre.SRE_Pattern object at 0x15bb020&gt;<br>
<strong>stringPat</strong> = r'\((([^()]*\[()])|([^()]*\([^()]*\)))*[^()]*\)'<br>
<strong>stringRE</strong> = &lt;_sre.SRE_Pattern object at 0x14ac020&gt;<br>
<strong>whitespace</strong> = '<font color="#c040c0">\t\n\x0b\x0c\r</font> '</td></tr></table>
</body></html>

View File

@ -0,0 +1,531 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.misc.psOperators</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.<a href="fontTools.misc.html"><font color="#ffffff">misc</font></a>.psOperators</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/misc/psOperators.py">/code/fontTools/Lib/fontTools/misc/psOperators.py</a></font></td></tr></table>
<p></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#PSOperators">PSOperators</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_array">ps_array</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_boolean">ps_boolean</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_dict">ps_dict</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_file">ps_file</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_font">ps_font</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_integer">ps_integer</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_literal">ps_literal</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_mark">ps_mark</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_name">ps_name</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_null">ps_null</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_operator">ps_operator</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_procedure">ps_procedure</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_procmark">ps_procmark</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_real">ps_real</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.misc.psOperators.html#ps_string">ps_string</a>
</font></dt></dl>
</dd>
</dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="PSOperators">class <strong>PSOperators</strong></a></font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="PSOperators-proc_bind"><strong>proc_bind</strong></a>(self, proc)</dt></dl>
<dl><dt><a name="PSOperators-ps_anchorsearch"><strong>ps_anchorsearch</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_array"><strong>ps_array</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_astore"><strong>ps_astore</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_begin"><strong>ps_begin</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_bind"><strong>ps_bind</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_cleartomark"><strong>ps_cleartomark</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_closefile"><strong>ps_closefile</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_count"><strong>ps_count</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_currentdict"><strong>ps_currentdict</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_currentfile"><strong>ps_currentfile</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_cvn"><strong>ps_cvn</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_cvx"><strong>ps_cvx</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_def"><strong>ps_def</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_definefont"><strong>ps_definefont</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_dict"><strong>ps_dict</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_dup"><strong>ps_dup</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_eexec"><strong>ps_eexec</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_end"><strong>ps_end</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_eq"><strong>ps_eq</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_exch"><strong>ps_exch</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_exec"><strong>ps_exec</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_executeonly"><strong>ps_executeonly</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_findfont"><strong>ps_findfont</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_for"><strong>ps_for</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_forall"><strong>ps_forall</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_get"><strong>ps_get</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_getinterval"><strong>ps_getinterval</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_if"><strong>ps_if</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_ifelse"><strong>ps_ifelse</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_index"><strong>ps_index</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_known"><strong>ps_known</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_load"><strong>ps_load</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_matrix"><strong>ps_matrix</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_ne"><strong>ps_ne</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_noaccess"><strong>ps_noaccess</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_not"><strong>ps_not</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_pop"><strong>ps_pop</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_print"><strong>ps_print</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_put"><strong>ps_put</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_putinterval"><strong>ps_putinterval</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_readonly"><strong>ps_readonly</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_readstring"><strong>ps_readstring</strong></a>(self, ps_boolean<font color="#909090">=&lt;class fontTools.misc.psOperators.ps_boolean at 0x15be540&gt;</font>, len<font color="#909090">=&lt;built-in function len&gt;</font>)</dt></dl>
<dl><dt><a name="PSOperators-ps_store"><strong>ps_store</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_string"><strong>ps_string</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_systemdict"><strong>ps_systemdict</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_type"><strong>ps_type</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_userdict"><strong>ps_userdict</strong></a>(self)</dt></dl>
<dl><dt><a name="PSOperators-ps_where"><strong>ps_where</strong></a>(self)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_array">class <strong>ps_array</strong></a>(<a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ps_array-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<dl><dt><a name="ps_array-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><a name="ps_array-__init__"><strong>__init__</strong></a>(self, value)</dt></dl>
<hr>
Data and other attributes inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>literal</strong> = 1</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_boolean">class <strong>ps_boolean</strong></a>(<a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ps_boolean-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><a name="ps_boolean-__init__"><strong>__init__</strong></a>(self, value)</dt></dl>
<dl><dt><a name="ps_boolean-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<hr>
Data and other attributes inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>literal</strong> = 1</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_dict">class <strong>ps_dict</strong></a>(<a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ps_dict-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<dl><dt><a name="ps_dict-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><a name="ps_dict-__init__"><strong>__init__</strong></a>(self, value)</dt></dl>
<hr>
Data and other attributes inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>literal</strong> = 1</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_file">class <strong>ps_file</strong></a>(<a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><a name="ps_file-__init__"><strong>__init__</strong></a>(self, value)</dt></dl>
<dl><dt><a name="ps_file-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<hr>
Data and other attributes inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>literal</strong> = 1</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_font">class <strong>ps_font</strong></a>(<a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ps_font-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<dl><dt><a name="ps_font-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><a name="ps_font-__init__"><strong>__init__</strong></a>(self, value)</dt></dl>
<hr>
Data and other attributes inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>literal</strong> = 1</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_integer">class <strong>ps_integer</strong></a>(<a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ps_integer-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><a name="ps_integer-__init__"><strong>__init__</strong></a>(self, value)</dt></dl>
<dl><dt><a name="ps_integer-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<hr>
Data and other attributes inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>literal</strong> = 1</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_literal">class <strong>ps_literal</strong></a>(<a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ps_literal-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><a name="ps_literal-__init__"><strong>__init__</strong></a>(self, value)</dt></dl>
<dl><dt><a name="ps_literal-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<hr>
Data and other attributes inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>literal</strong> = 1</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_mark">class <strong>ps_mark</strong></a>(<a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ps_mark-__init__"><strong>__init__</strong></a>(self)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><a name="ps_mark-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<hr>
Data and other attributes inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>literal</strong> = 1</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_name">class <strong>ps_name</strong></a>(<a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ps_name-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<hr>
Data and other attributes defined here:<br>
<dl><dt><strong>literal</strong> = 0</dl>
<hr>
Methods inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><a name="ps_name-__init__"><strong>__init__</strong></a>(self, value)</dt></dl>
<dl><dt><a name="ps_name-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<hr>
Data and other attributes inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_null">class <strong>ps_null</strong></a>(<a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ps_null-__init__"><strong>__init__</strong></a>(self)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><a name="ps_null-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<hr>
Data and other attributes inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>literal</strong> = 1</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_object">class <strong>ps_object</strong></a></font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ps_object-__init__"><strong>__init__</strong></a>(self, value)</dt></dl>
<dl><dt><a name="ps_object-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<hr>
Data and other attributes defined here:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>literal</strong> = 1</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_operator">class <strong>ps_operator</strong></a>(<a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ps_operator-__init__"><strong>__init__</strong></a>(self, name, function)</dt></dl>
<dl><dt><a name="ps_operator-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<hr>
Data and other attributes defined here:<br>
<dl><dt><strong>literal</strong> = 0</dl>
<hr>
Data and other attributes inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_procedure">class <strong>ps_procedure</strong></a>(<a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ps_procedure-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<dl><dt><a name="ps_procedure-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<hr>
Data and other attributes defined here:<br>
<dl><dt><strong>literal</strong> = 0</dl>
<hr>
Methods inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><a name="ps_procedure-__init__"><strong>__init__</strong></a>(self, value)</dt></dl>
<hr>
Data and other attributes inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_procmark">class <strong>ps_procmark</strong></a>(<a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ps_procmark-__init__"><strong>__init__</strong></a>(self)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><a name="ps_procmark-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<hr>
Data and other attributes inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>literal</strong> = 1</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_real">class <strong>ps_real</strong></a>(<a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ps_real-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><a name="ps_real-__init__"><strong>__init__</strong></a>(self, value)</dt></dl>
<dl><dt><a name="ps_real-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<hr>
Data and other attributes inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>literal</strong> = 1</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ps_string">class <strong>ps_string</strong></a>(<a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="ps_string-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<hr>
Methods inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><a name="ps_string-__init__"><strong>__init__</strong></a>(self, value)</dt></dl>
<dl><dt><a name="ps_string-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<hr>
Data and other attributes inherited from <a href="fontTools.misc.psOperators.html#ps_object">ps_object</a>:<br>
<dl><dt><strong>access</strong> = 0</dl>
<dl><dt><strong>literal</strong> = 1</dl>
<dl><dt><strong>value</strong> = None</dl>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>StandardEncoding</strong> = ['.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', '.notdef', ...]<br>
<strong>notdef</strong> = '.notdef'<br>
<strong>ps_StandardEncoding</strong> = [&lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, &lt;name '.notdef'&gt;, ...]</td></tr></table>
</body></html>

View File

@ -0,0 +1,37 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.misc.textTools</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.<a href="fontTools.misc.html"><font color="#ffffff">misc</font></a>.textTools</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/misc/textTools.py">/code/fontTools/Lib/fontTools/misc/textTools.py</a></font></td></tr></table>
<p><tt>fontTools.misc.textTools.py&nbsp;--&nbsp;miscelaneous&nbsp;routines.</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="string.html">string</a><br>
</td><td width="25%" valign=top></td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-binary2num"><strong>binary2num</strong></a>(bin)</dt></dl>
<dl><dt><a name="-caselessSort"><strong>caselessSort</strong></a>(alist)</dt><dd><tt>Return&nbsp;a&nbsp;sorted&nbsp;copy&nbsp;of&nbsp;a&nbsp;list.&nbsp;If&nbsp;there&nbsp;are&nbsp;only&nbsp;strings&nbsp;<br>
in&nbsp;the&nbsp;list,&nbsp;it&nbsp;will&nbsp;not&nbsp;consider&nbsp;case.</tt></dd></dl>
<dl><dt><a name="-deHexStr"><strong>deHexStr</strong></a>(hexdata)</dt><dd><tt>Convert&nbsp;a&nbsp;hex&nbsp;string&nbsp;to&nbsp;binary&nbsp;data.</tt></dd></dl>
<dl><dt><a name="-hexStr"><strong>hexStr</strong></a>(data)</dt><dd><tt>Convert&nbsp;binary&nbsp;data&nbsp;to&nbsp;a&nbsp;hex&nbsp;string.</tt></dd></dl>
<dl><dt><a name="-num2binary"><strong>num2binary</strong></a>(l, bits<font color="#909090">=32</font>)</dt></dl>
<dl><dt><a name="-readHex"><strong>readHex</strong></a>(content)</dt><dd><tt>Convert&nbsp;a&nbsp;list&nbsp;of&nbsp;hex&nbsp;strings&nbsp;to&nbsp;binary&nbsp;data.</tt></dd></dl>
<dl><dt><a name="-safeEval"><strong>safeEval</strong></a>(data, eval<font color="#909090">=&lt;built-in function eval&gt;</font>)</dt><dd><tt>A&nbsp;safe&nbsp;replacement&nbsp;for&nbsp;eval.</tt></dd></dl>
</td></tr></table>
</body></html>

View File

@ -0,0 +1,285 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.misc.transform</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.<a href="fontTools.misc.html"><font color="#ffffff">misc</font></a>.transform</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/misc/transform.py">/code/fontTools/Lib/fontTools/misc/transform.py</a></font></td></tr></table>
<p><tt>Affine&nbsp;2D&nbsp;transformation&nbsp;matrix&nbsp;class.<br>
&nbsp;<br>
The&nbsp;<a href="#Transform">Transform</a>&nbsp;class&nbsp;implements&nbsp;various&nbsp;transformation&nbsp;matrix&nbsp;operations,<br>
both&nbsp;on&nbsp;the&nbsp;matrix&nbsp;itself,&nbsp;as&nbsp;well&nbsp;as&nbsp;on&nbsp;2D&nbsp;coordinates.<br>
&nbsp;<br>
<a href="#Transform">Transform</a>&nbsp;instances&nbsp;are&nbsp;effectively&nbsp;immutable:&nbsp;all&nbsp;methods&nbsp;that&nbsp;operate&nbsp;on&nbsp;the<br>
transformation&nbsp;itself&nbsp;always&nbsp;return&nbsp;a&nbsp;new&nbsp;instance.&nbsp;This&nbsp;has&nbsp;as&nbsp;the<br>
interesting&nbsp;side&nbsp;effect&nbsp;that&nbsp;<a href="#Transform">Transform</a>&nbsp;instances&nbsp;are&nbsp;hashable,&nbsp;ie.&nbsp;they&nbsp;can&nbsp;be<br>
used&nbsp;as&nbsp;dictionary&nbsp;keys.<br>
&nbsp;<br>
This&nbsp;module&nbsp;exports&nbsp;the&nbsp;following&nbsp;symbols:<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Transform">Transform</a>&nbsp;--&nbsp;this&nbsp;is&nbsp;the&nbsp;main&nbsp;class<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Identity&nbsp;&nbsp;--&nbsp;<a href="#Transform">Transform</a>&nbsp;instance&nbsp;set&nbsp;to&nbsp;the&nbsp;identity&nbsp;transformation<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Offset&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Convenience&nbsp;function&nbsp;that&nbsp;returns&nbsp;a&nbsp;translating&nbsp;transformation<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scale&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Convenience&nbsp;function&nbsp;that&nbsp;returns&nbsp;a&nbsp;scaling&nbsp;transformation<br>
&nbsp;<br>
Examples:<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>(2,&nbsp;0,&nbsp;0,&nbsp;3,&nbsp;0,&nbsp;0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.transformPoint((100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(200,&nbsp;300)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#-Scale">Scale</a>(2,&nbsp;3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.transformPoint((100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(200,&nbsp;300)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.transformPoint((0,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0,&nbsp;0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#-Offset">Offset</a>(2,&nbsp;3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.transformPoint((100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(102,&nbsp;103)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.transformPoint((0,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2,&nbsp;3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t2&nbsp;=&nbsp;t.scale(0.5)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t2.transformPoint((100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(52.0,&nbsp;53.0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;import&nbsp;math<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t3&nbsp;=&nbsp;t2.rotate(math.pi&nbsp;/&nbsp;2)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t3.transformPoint((0,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2.0,&nbsp;3.0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t3.transformPoint((100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(-48.0,&nbsp;53.0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;Identity.scale(0.5).translate(100,&nbsp;200).skew(0.1,&nbsp;0.2)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.transformPoints([(0,&nbsp;0),&nbsp;(1,&nbsp;1),&nbsp;(100,&nbsp;100)])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[(50.0,&nbsp;100.0),&nbsp;(50.550167336042726,&nbsp;100.60135501775433),&nbsp;(105.01673360427253,&nbsp;160.13550177543362)]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="fontTools.misc.transform.html#Transform">Transform</a>
</font></dt></dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Transform">class <strong>Transform</strong></a></font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>2x2&nbsp;transformation&nbsp;matrix&nbsp;plus&nbsp;offset,&nbsp;a.k.a.&nbsp;Affine&nbsp;transform.<br>
<a href="#Transform">Transform</a>&nbsp;instances&nbsp;are&nbsp;immutable:&nbsp;all&nbsp;transforming&nbsp;methods,&nbsp;eg.<br>
<a href="#Transform-rotate">rotate</a>(),&nbsp;return&nbsp;a&nbsp;new&nbsp;<a href="#Transform">Transform</a>&nbsp;instance.<br>
&nbsp;<br>
Examples:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[1&nbsp;0&nbsp;0&nbsp;1&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-scale">scale</a>(2)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[2&nbsp;0&nbsp;0&nbsp;2&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-scale">scale</a>(2.5,&nbsp;5.5)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[2.5&nbsp;0.0&nbsp;0.0&nbsp;5.5&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-scale">scale</a>(2,&nbsp;3).<a href="#Transform-transformPoint">transformPoint</a>((100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(200,&nbsp;300)<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="Transform-__cmp__"><strong>__cmp__</strong></a>(self, other)</dt><dd><tt><a href="#Transform">Transform</a>&nbsp;instances&nbsp;are&nbsp;comparable:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t1&nbsp;=&nbsp;Identity.<a href="#Transform-scale">scale</a>(2,&nbsp;3).<a href="#Transform-translate">translate</a>(4,&nbsp;6)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t2&nbsp;=&nbsp;Identity.<a href="#Transform-translate">translate</a>(8,&nbsp;18).<a href="#Transform-scale">scale</a>(2,&nbsp;3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t1&nbsp;==&nbsp;t2<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;<br>
&nbsp;<br>
But&nbsp;beware&nbsp;of&nbsp;floating&nbsp;point&nbsp;rounding&nbsp;errors:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t1&nbsp;=&nbsp;Identity.<a href="#Transform-scale">scale</a>(0.2,&nbsp;0.3).<a href="#Transform-translate">translate</a>(0.4,&nbsp;0.6)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t2&nbsp;=&nbsp;Identity.<a href="#Transform-translate">translate</a>(0.08,&nbsp;0.18).<a href="#Transform-scale">scale</a>(0.2,&nbsp;0.3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[0.2&nbsp;0.0&nbsp;0.0&nbsp;0.3&nbsp;0.08&nbsp;0.18]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t2<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[0.2&nbsp;0.0&nbsp;0.0&nbsp;0.3&nbsp;0.08&nbsp;0.18]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t1&nbsp;==&nbsp;t2<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-__getitem__"><strong>__getitem__</strong></a>(self, index)</dt><dd><tt><a href="#Transform">Transform</a>&nbsp;instances&nbsp;also&nbsp;behave&nbsp;like&nbsp;sequences&nbsp;of&nbsp;length&nbsp;6:<br>
&gt;&gt;&gt;&nbsp;list(Identity)<br>
[1,&nbsp;0,&nbsp;0,&nbsp;1,&nbsp;0,&nbsp;0]<br>
&gt;&gt;&gt;&nbsp;tuple(Identity)<br>
(1,&nbsp;0,&nbsp;0,&nbsp;1,&nbsp;0,&nbsp;0)<br>
&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-__getslice__"><strong>__getslice__</strong></a>(self, i, j)</dt><dd><tt><a href="#Transform">Transform</a>&nbsp;instances&nbsp;also&nbsp;behave&nbsp;like&nbsp;sequences&nbsp;and&nbsp;even&nbsp;support<br>
slicing:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#-Offset">Offset</a>(100,&nbsp;200)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[1&nbsp;0&nbsp;0&nbsp;1&nbsp;100&nbsp;200]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t[4:]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(100,&nbsp;200)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-__hash__"><strong>__hash__</strong></a>(self)</dt><dd><tt><a href="#Transform">Transform</a>&nbsp;instances&nbsp;are&nbsp;hashable,&nbsp;meaning&nbsp;you&nbsp;can&nbsp;use&nbsp;them&nbsp;as<br>
keys&nbsp;in&nbsp;dictionaries:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;d&nbsp;=&nbsp;{<a href="#-Scale">Scale</a>(12,&nbsp;13):&nbsp;None}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;d<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&lt;<a href="#Transform">Transform</a>&nbsp;[12&nbsp;0&nbsp;0&nbsp;13&nbsp;0&nbsp;0]&gt;:&nbsp;None}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;<br>
&nbsp;<br>
But&nbsp;again,&nbsp;beware&nbsp;of&nbsp;floating&nbsp;point&nbsp;rounding&nbsp;errors:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t1&nbsp;=&nbsp;Identity.<a href="#Transform-scale">scale</a>(0.2,&nbsp;0.3).<a href="#Transform-translate">translate</a>(0.4,&nbsp;0.6)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t2&nbsp;=&nbsp;Identity.<a href="#Transform-translate">translate</a>(0.08,&nbsp;0.18).<a href="#Transform-scale">scale</a>(0.2,&nbsp;0.3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[0.2&nbsp;0.0&nbsp;0.0&nbsp;0.3&nbsp;0.08&nbsp;0.18]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t2<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[0.2&nbsp;0.0&nbsp;0.0&nbsp;0.3&nbsp;0.08&nbsp;0.18]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;d&nbsp;=&nbsp;{t1:&nbsp;None}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;d<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&lt;<a href="#Transform">Transform</a>&nbsp;[0.2&nbsp;0.0&nbsp;0.0&nbsp;0.3&nbsp;0.08&nbsp;0.18]&gt;:&nbsp;None}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;d[t2]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Traceback&nbsp;(most&nbsp;recent&nbsp;call&nbsp;last):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;"&lt;stdin&gt;",&nbsp;line&nbsp;1,&nbsp;in&nbsp;?<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyError:&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[0.2&nbsp;0.0&nbsp;0.0&nbsp;0.3&nbsp;0.08&nbsp;0.18]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-__init__"><strong>__init__</strong></a>(self, xx<font color="#909090">=1</font>, xy<font color="#909090">=0</font>, yx<font color="#909090">=0</font>, yy<font color="#909090">=1</font>, dx<font color="#909090">=0</font>, dy<font color="#909090">=0</font>)</dt><dd><tt><a href="#Transform">Transform</a>'s&nbsp;constructor&nbsp;takes&nbsp;six&nbsp;arguments,&nbsp;all&nbsp;of&nbsp;which&nbsp;are<br>
optional,&nbsp;and&nbsp;can&nbsp;be&nbsp;used&nbsp;as&nbsp;keyword&nbsp;arguments:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#Transform">Transform</a>(12)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[12&nbsp;0&nbsp;0&nbsp;1&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#Transform">Transform</a>(dx=12)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[1&nbsp;0&nbsp;0&nbsp;1&nbsp;12&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#Transform">Transform</a>(yx=12)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[1&nbsp;0&nbsp;12&nbsp;1&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-__len__"><strong>__len__</strong></a>(self)</dt><dd><tt><a href="#Transform">Transform</a>&nbsp;instances&nbsp;also&nbsp;behave&nbsp;like&nbsp;sequences&nbsp;of&nbsp;length&nbsp;6:<br>
&gt;&gt;&gt;&nbsp;len(Identity)<br>
6<br>
&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<dl><dt><a name="Transform-inverse"><strong>inverse</strong></a>(self)</dt><dd><tt>Return&nbsp;the&nbsp;inverse&nbsp;transformation.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;Identity.<a href="#Transform-translate">translate</a>(2,&nbsp;3).<a href="#Transform-scale">scale</a>(4,&nbsp;5)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-transformPoint">transformPoint</a>((10,&nbsp;20))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(42,&nbsp;103)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;it&nbsp;=&nbsp;t.<a href="#Transform-inverse">inverse</a>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;it.<a href="#Transform-transformPoint">transformPoint</a>((42,&nbsp;103))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(10.0,&nbsp;20.0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-reverseTransform"><strong>reverseTransform</strong></a>(self, other)</dt><dd><tt>Return&nbsp;a&nbsp;new&nbsp;transformation,&nbsp;which&nbsp;is&nbsp;the&nbsp;other&nbsp;transformation<br>
transformed&nbsp;by&nbsp;self.&nbsp;<a href="#Transform-reverseTransform">reverseTransform</a>(other)&nbsp;is&nbsp;equivalent&nbsp;to<br>
other.<a href="#Transform-transform">transform</a>(self).<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>(2,&nbsp;0,&nbsp;0,&nbsp;3,&nbsp;1,&nbsp;6)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-reverseTransform">reverseTransform</a>((4,&nbsp;3,&nbsp;2,&nbsp;1,&nbsp;5,&nbsp;6))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[8&nbsp;6&nbsp;6&nbsp;3&nbsp;21&nbsp;15]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#Transform">Transform</a>(4,&nbsp;3,&nbsp;2,&nbsp;1,&nbsp;5,&nbsp;6).<a href="#Transform-transform">transform</a>((2,&nbsp;0,&nbsp;0,&nbsp;3,&nbsp;1,&nbsp;6))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[8&nbsp;6&nbsp;6&nbsp;3&nbsp;21&nbsp;15]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-rotate"><strong>rotate</strong></a>(self, angle)</dt><dd><tt>Return&nbsp;a&nbsp;new&nbsp;transformation,&nbsp;rotated&nbsp;by&nbsp;'angle'&nbsp;(radians).<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;import&nbsp;math<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-rotate">rotate</a>(math.pi&nbsp;/&nbsp;2)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[0&nbsp;1&nbsp;-1&nbsp;0&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-scale"><strong>scale</strong></a>(self, x<font color="#909090">=1</font>, y<font color="#909090">=None</font>)</dt><dd><tt>Return&nbsp;a&nbsp;new&nbsp;transformation,&nbsp;scaled&nbsp;by&nbsp;x,&nbsp;y.&nbsp;The&nbsp;'y'&nbsp;argument<br>
may&nbsp;be&nbsp;None,&nbsp;which&nbsp;implies&nbsp;to&nbsp;use&nbsp;the&nbsp;x&nbsp;value&nbsp;for&nbsp;y&nbsp;as&nbsp;well.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-scale">scale</a>(5)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[5&nbsp;0&nbsp;0&nbsp;5&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-scale">scale</a>(5,&nbsp;6)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[5&nbsp;0&nbsp;0&nbsp;6&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-skew"><strong>skew</strong></a>(self, x<font color="#909090">=0</font>, y<font color="#909090">=0</font>)</dt><dd><tt>Return&nbsp;a&nbsp;new&nbsp;transformation,&nbsp;skewed&nbsp;by&nbsp;x&nbsp;and&nbsp;y.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;import&nbsp;math<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-skew">skew</a>(math.pi&nbsp;/&nbsp;4)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[1.0&nbsp;0.0&nbsp;1.0&nbsp;1.0&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-toPS"><strong>toPS</strong></a>(self)</dt><dd><tt>Return&nbsp;a&nbsp;PostScript&nbsp;representation:<br>
&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;Identity.<a href="#Transform-scale">scale</a>(2,&nbsp;3).<a href="#Transform-translate">translate</a>(4,&nbsp;5)<br>
&gt;&gt;&gt;&nbsp;t.<a href="#Transform-toPS">toPS</a>()<br>
'[2&nbsp;0&nbsp;0&nbsp;3&nbsp;8&nbsp;15]'<br>
&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-transform"><strong>transform</strong></a>(self, other)</dt><dd><tt>Return&nbsp;a&nbsp;new&nbsp;transformation,&nbsp;transformed&nbsp;by&nbsp;another<br>
transformation.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>(2,&nbsp;0,&nbsp;0,&nbsp;3,&nbsp;1,&nbsp;6)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-transform">transform</a>((4,&nbsp;3,&nbsp;2,&nbsp;1,&nbsp;5,&nbsp;6))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[8&nbsp;9&nbsp;4&nbsp;3&nbsp;11&nbsp;24]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-transformPoint"><strong>transformPoint</strong></a>(self, (x, y))</dt><dd><tt><a href="#Transform">Transform</a>&nbsp;a&nbsp;point.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;t.<a href="#Transform-scale">scale</a>(2.5,&nbsp;5.5)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-transformPoint">transformPoint</a>((100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(250.0,&nbsp;550.0)</tt></dd></dl>
<dl><dt><a name="Transform-transformPoints"><strong>transformPoints</strong></a>(self, points)</dt><dd><tt><a href="#Transform">Transform</a>&nbsp;a&nbsp;list&nbsp;of&nbsp;points.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#-Scale">Scale</a>(2,&nbsp;3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-transformPoints">transformPoints</a>([(0,&nbsp;0),&nbsp;(0,&nbsp;100),&nbsp;(100,&nbsp;100),&nbsp;(100,&nbsp;0)])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[(0,&nbsp;0),&nbsp;(0,&nbsp;300),&nbsp;(200,&nbsp;300),&nbsp;(200,&nbsp;0)]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-translate"><strong>translate</strong></a>(self, x<font color="#909090">=0</font>, y<font color="#909090">=0</font>)</dt><dd><tt>Return&nbsp;a&nbsp;new&nbsp;transformation,&nbsp;translated&nbsp;(offset)&nbsp;by&nbsp;x,&nbsp;y.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-translate">translate</a>(20,&nbsp;30)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[1&nbsp;0&nbsp;0&nbsp;1&nbsp;20&nbsp;30]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-Offset"><strong>Offset</strong></a>(x<font color="#909090">=0</font>, y<font color="#909090">=0</font>)</dt><dd><tt>Return&nbsp;the&nbsp;identity&nbsp;transformation&nbsp;offset&nbsp;by&nbsp;x,&nbsp;y.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-Offset">Offset</a>(2,&nbsp;3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[1&nbsp;0&nbsp;0&nbsp;1&nbsp;2&nbsp;3]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="-Scale"><strong>Scale</strong></a>(x, y<font color="#909090">=None</font>)</dt><dd><tt>Return&nbsp;the&nbsp;identity&nbsp;transformation&nbsp;scaled&nbsp;by&nbsp;x,&nbsp;y.&nbsp;The&nbsp;'y'&nbsp;argument<br>
may&nbsp;be&nbsp;None,&nbsp;which&nbsp;implies&nbsp;to&nbsp;use&nbsp;the&nbsp;x&nbsp;value&nbsp;for&nbsp;y&nbsp;as&nbsp;well.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-Scale">Scale</a>(2,&nbsp;3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[2&nbsp;0&nbsp;0&nbsp;3&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>Identity</strong> = &lt;Transform [1 0 0 1 0 0]&gt;<br>
<strong>__all__</strong> = ['Transform', 'Identity', 'Offset', 'Scale']</td></tr></table>
</body></html>

View File

@ -0,0 +1,103 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.nfntLib</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.nfntLib</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/nfntLib.py">/code/fontTools/Lib/fontTools/nfntLib.py</a></font></td></tr></table>
<p></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="sstruct.html">sstruct</a><br>
</td><td width="25%" valign=top><a href="string.html">string</a><br>
</td><td width="25%" valign=top><a href="struct.html">struct</a><br>
</td><td width="25%" valign=top><a href="types.html">types</a><br>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="fontTools.nfntLib.html#Glyph">Glyph</a>
</font></dt><dt><font face="helvetica, arial"><a href="fontTools.nfntLib.html#NFNT">NFNT</a>
</font></dt></dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Glyph">class <strong>Glyph</strong></a></font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="Glyph-__init__"><strong>__init__</strong></a>(self, width, offset, pixels<font color="#909090">=None</font>, pixelDepth<font color="#909090">=1</font>)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="NFNT">class <strong>NFNT</strong></a></font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="NFNT-__getitem__"><strong>__getitem__</strong></a>(self, charNum)</dt></dl>
<dl><dt><a name="NFNT-__init__"><strong>__init__</strong></a>(self, data<font color="#909090">=None</font>)</dt></dl>
<dl><dt><a name="NFNT-__len__"><strong>__len__</strong></a>(self)</dt></dl>
<dl><dt><a name="NFNT-__setitem__"><strong>__setitem__</strong></a>(self, charNum, glyph)</dt></dl>
<dl><dt><a name="NFNT-charwidth"><strong>charwidth</strong></a>(self, ch)</dt></dl>
<dl><dt><a name="NFNT-compile"><strong>compile</strong></a>(self)</dt></dl>
<dl><dt><a name="NFNT-createQdBitImage"><strong>createQdBitImage</strong></a>(self)</dt></dl>
<dl><dt><a name="NFNT-decompile"><strong>decompile</strong></a>(self, data)</dt></dl>
<dl><dt><a name="NFNT-drawchar"><strong>drawchar</strong></a>(self, ch, destbits, xOffset, yOffset<font color="#909090">=0</font>)</dt></dl>
<dl><dt><a name="NFNT-drawstring"><strong>drawstring</strong></a>(self, astring, destbits, xOffset<font color="#909090">=0</font>, yOffset<font color="#909090">=0</font>)</dt></dl>
<dl><dt><a name="NFNT-getMissing"><strong>getMissing</strong></a>(self)</dt></dl>
<dl><dt><a name="NFNT-getcharbounds"><strong>getcharbounds</strong></a>(self, ch)</dt></dl>
<dl><dt><a name="NFNT-getcharboundsindex"><strong>getcharboundsindex</strong></a>(self, cindex)</dt></dl>
<dl><dt><a name="NFNT-packGlyphs"><strong>packGlyphs</strong></a>(self)</dt></dl>
<dl><dt><a name="NFNT-stringwidth"><strong>stringwidth</strong></a>(self, astring)</dt></dl>
<dl><dt><a name="NFNT-unpackGlyphs"><strong>unpackGlyphs</strong></a>(self)</dt></dl>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-dataFromFile"><strong>dataFromFile</strong></a>(pathOrFSSpec, nameOrID<font color="#909090">=''</font>, resType<font color="#909090">='NFNT'</font>)</dt></dl>
<dl><dt><a name="-fromFile"><strong>fromFile</strong></a>(pathOrFSSpec, nameOrID<font color="#909090">=''</font>, resType<font color="#909090">='NFNT'</font>)</dt></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>headerSize</strong> = 26<br>
<strong>nfntHeaderFormat</strong> = '<font color="#c040c0">\n\t</font>&gt; # big endian<font color="#c040c0">\n\t</font>fontType: h # font typ...<font color="#c040c0">\t</font>rowWords: h # row width of bit image / 2<font color="#c040c0">\n</font>'</td></tr></table>
</body></html>

View File

@ -0,0 +1,180 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.pens.basePen</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.<a href="fontTools.pens.html"><font color="#ffffff">pens</font></a>.basePen</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/pens/basePen.py">/code/fontTools/Lib/fontTools/pens/basePen.py</a></font></td></tr></table>
<p><tt>fontTools.pens.basePen.py&nbsp;--&nbsp;Tools&nbsp;and&nbsp;base&nbsp;classes&nbsp;to&nbsp;build&nbsp;pen&nbsp;objects.<br>
&nbsp;<br>
The&nbsp;Pen&nbsp;Protocol<br>
&nbsp;<br>
A&nbsp;Pen&nbsp;is&nbsp;a&nbsp;kind&nbsp;of&nbsp;object&nbsp;that&nbsp;standardizes&nbsp;the&nbsp;way&nbsp;how&nbsp;to&nbsp;"draw"&nbsp;outlines:<br>
it&nbsp;is&nbsp;a&nbsp;middle&nbsp;man&nbsp;between&nbsp;an&nbsp;outline&nbsp;and&nbsp;a&nbsp;drawing.&nbsp;In&nbsp;other&nbsp;words:<br>
it&nbsp;is&nbsp;an&nbsp;abstraction&nbsp;for&nbsp;drawing&nbsp;outlines,&nbsp;making&nbsp;sure&nbsp;that&nbsp;outline&nbsp;objects<br>
don't&nbsp;need&nbsp;to&nbsp;know&nbsp;the&nbsp;details&nbsp;about&nbsp;how&nbsp;and&nbsp;where&nbsp;they're&nbsp;being&nbsp;drawn,&nbsp;and<br>
that&nbsp;drawings&nbsp;don't&nbsp;need&nbsp;to&nbsp;know&nbsp;the&nbsp;details&nbsp;of&nbsp;how&nbsp;outlines&nbsp;are&nbsp;stored.<br>
&nbsp;<br>
The&nbsp;most&nbsp;basic&nbsp;pattern&nbsp;is&nbsp;this:<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;outline.draw(pen)&nbsp;&nbsp;#&nbsp;'outline'&nbsp;draws&nbsp;itself&nbsp;onto&nbsp;'pen'<br>
&nbsp;<br>
Pens&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;render&nbsp;outlines&nbsp;to&nbsp;the&nbsp;screen,&nbsp;but&nbsp;also&nbsp;to&nbsp;construct<br>
new&nbsp;outlines.&nbsp;Eg.&nbsp;an&nbsp;outline&nbsp;object&nbsp;can&nbsp;be&nbsp;both&nbsp;a&nbsp;drawable&nbsp;object&nbsp;(it&nbsp;has&nbsp;a<br>
draw()&nbsp;method)&nbsp;as&nbsp;well&nbsp;as&nbsp;a&nbsp;pen&nbsp;itself:&nbsp;you&nbsp;*build*&nbsp;an&nbsp;outline&nbsp;using&nbsp;pen<br>
methods.<br>
&nbsp;<br>
The&nbsp;<a href="#AbstractPen">AbstractPen</a>&nbsp;class&nbsp;defines&nbsp;the&nbsp;Pen&nbsp;protocol.&nbsp;It&nbsp;implements&nbsp;almost<br>
nothing&nbsp;(only&nbsp;no-op&nbsp;closePath()&nbsp;and&nbsp;endPath()&nbsp;methods),&nbsp;but&nbsp;is&nbsp;useful<br>
for&nbsp;documentation&nbsp;purposes.&nbsp;Subclassing&nbsp;it&nbsp;basically&nbsp;tells&nbsp;the&nbsp;reader:<br>
"this&nbsp;class&nbsp;implements&nbsp;the&nbsp;Pen&nbsp;protocol.".&nbsp;An&nbsp;examples&nbsp;of&nbsp;an&nbsp;<a href="#AbstractPen">AbstractPen</a><br>
subclass&nbsp;is&nbsp;fontTools.pens.transformPen.TransformPen.<br>
&nbsp;<br>
The&nbsp;<a href="#BasePen">BasePen</a>&nbsp;class&nbsp;is&nbsp;a&nbsp;base&nbsp;implementation&nbsp;useful&nbsp;for&nbsp;pens&nbsp;that&nbsp;actually<br>
draw&nbsp;(for&nbsp;example&nbsp;a&nbsp;pen&nbsp;renders&nbsp;outlines&nbsp;using&nbsp;a&nbsp;native&nbsp;graphics&nbsp;engine).<br>
<a href="#BasePen">BasePen</a>&nbsp;contains&nbsp;a&nbsp;lot&nbsp;of&nbsp;base&nbsp;functionality,&nbsp;making&nbsp;it&nbsp;very&nbsp;easy&nbsp;to&nbsp;build<br>
a&nbsp;pen&nbsp;that&nbsp;fully&nbsp;conforms&nbsp;to&nbsp;the&nbsp;pen&nbsp;protocol.&nbsp;Note&nbsp;that&nbsp;if&nbsp;you&nbsp;subclass<br>
<a href="#BasePen">BasePen</a>,&nbsp;you&nbsp;_don't_&nbsp;override&nbsp;moveTo(),&nbsp;lineTo(),&nbsp;etc.,&nbsp;but&nbsp;_moveTo(),<br>
_lineTo(),&nbsp;etc.&nbsp;See&nbsp;the&nbsp;<a href="#BasePen">BasePen</a>&nbsp;doc&nbsp;string&nbsp;for&nbsp;details.&nbsp;Examples&nbsp;of<br>
<a href="#BasePen">BasePen</a>&nbsp;subclasses&nbsp;are&nbsp;fontTools.pens.boundsPen.BoundsPen&nbsp;and<br>
fontTools.pens.cocoaPen.CocoaPen.<br>
&nbsp;<br>
Coordinates&nbsp;are&nbsp;usually&nbsp;expressed&nbsp;as&nbsp;(x,&nbsp;y)&nbsp;tuples,&nbsp;but&nbsp;generally&nbsp;any<br>
sequence&nbsp;of&nbsp;length&nbsp;2&nbsp;will&nbsp;do.</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="fontTools.pens.basePen.html#AbstractPen">AbstractPen</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="fontTools.pens.basePen.html#BasePen">BasePen</a>
</font></dt></dl>
</dd>
</dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="AbstractPen">class <strong>AbstractPen</strong></a></font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="AbstractPen-addComponent"><strong>addComponent</strong></a>(self, glyphName, transformation)</dt><dd><tt>Add&nbsp;a&nbsp;sub&nbsp;glyph.&nbsp;The&nbsp;'transformation'&nbsp;argument&nbsp;must&nbsp;be&nbsp;a&nbsp;6-tuple<br>
containing&nbsp;an&nbsp;affine&nbsp;transformation,&nbsp;or&nbsp;a&nbsp;Transform&nbsp;object&nbsp;from&nbsp;the<br>
fontTools.misc.transform&nbsp;module.&nbsp;More&nbsp;precisely:&nbsp;it&nbsp;should&nbsp;be&nbsp;a<br>
sequence&nbsp;containing&nbsp;6&nbsp;numbers.</tt></dd></dl>
<dl><dt><a name="AbstractPen-closePath"><strong>closePath</strong></a>(self)</dt><dd><tt>Close&nbsp;the&nbsp;current&nbsp;sub&nbsp;path.&nbsp;You&nbsp;must&nbsp;call&nbsp;either&nbsp;pen.<a href="#AbstractPen-closePath">closePath</a>()<br>
or&nbsp;pen.<a href="#AbstractPen-endPath">endPath</a>()&nbsp;after&nbsp;each&nbsp;sub&nbsp;path.</tt></dd></dl>
<dl><dt><a name="AbstractPen-curveTo"><strong>curveTo</strong></a>(self, *points)</dt><dd><tt>Draw&nbsp;a&nbsp;cubic&nbsp;bezier&nbsp;with&nbsp;an&nbsp;arbitrary&nbsp;number&nbsp;of&nbsp;control&nbsp;points.<br>
&nbsp;<br>
The&nbsp;last&nbsp;point&nbsp;specified&nbsp;is&nbsp;on-curve,&nbsp;all&nbsp;others&nbsp;are&nbsp;off-curve<br>
(control)&nbsp;points.&nbsp;If&nbsp;the&nbsp;number&nbsp;of&nbsp;control&nbsp;points&nbsp;is&nbsp;&gt;&nbsp;2,&nbsp;the<br>
segment&nbsp;is&nbsp;split&nbsp;into&nbsp;multiple&nbsp;bezier&nbsp;segments.&nbsp;This&nbsp;works<br>
like&nbsp;this:<br>
&nbsp;<br>
Let&nbsp;n&nbsp;be&nbsp;the&nbsp;number&nbsp;of&nbsp;control&nbsp;points&nbsp;(which&nbsp;is&nbsp;the&nbsp;number&nbsp;of<br>
arguments&nbsp;to&nbsp;this&nbsp;call&nbsp;minus&nbsp;1).&nbsp;If&nbsp;n==2,&nbsp;a&nbsp;plain&nbsp;vanilla&nbsp;cubic<br>
bezier&nbsp;is&nbsp;drawn.&nbsp;If&nbsp;n==1,&nbsp;we&nbsp;fall&nbsp;back&nbsp;to&nbsp;a&nbsp;quadratic&nbsp;segment&nbsp;and<br>
if&nbsp;n==0&nbsp;we&nbsp;draw&nbsp;a&nbsp;straight&nbsp;line.&nbsp;It&nbsp;gets&nbsp;interesting&nbsp;when&nbsp;n&gt;2:<br>
n-1&nbsp;PostScript-style&nbsp;cubic&nbsp;segments&nbsp;will&nbsp;be&nbsp;drawn&nbsp;as&nbsp;if&nbsp;it&nbsp;were<br>
one&nbsp;curve.&nbsp;See&nbsp;<a href="#-decomposeSuperBezierSegment">decomposeSuperBezierSegment</a>().<br>
&nbsp;<br>
The&nbsp;conversion&nbsp;algorithm&nbsp;used&nbsp;for&nbsp;n&gt;2&nbsp;is&nbsp;inspired&nbsp;by&nbsp;NURB<br>
splines,&nbsp;and&nbsp;is&nbsp;conceptually&nbsp;equivalent&nbsp;to&nbsp;the&nbsp;TrueType&nbsp;"implied<br>
points"&nbsp;principle.&nbsp;See&nbsp;also&nbsp;<a href="#-decomposeQuadraticSegment">decomposeQuadraticSegment</a>().</tt></dd></dl>
<dl><dt><a name="AbstractPen-endPath"><strong>endPath</strong></a>(self)</dt><dd><tt>End&nbsp;the&nbsp;current&nbsp;sub&nbsp;path,&nbsp;but&nbsp;don't&nbsp;close&nbsp;it.&nbsp;You&nbsp;must&nbsp;call<br>
either&nbsp;pen.<a href="#AbstractPen-closePath">closePath</a>()&nbsp;or&nbsp;pen.<a href="#AbstractPen-endPath">endPath</a>()&nbsp;after&nbsp;each&nbsp;sub&nbsp;path.</tt></dd></dl>
<dl><dt><a name="AbstractPen-lineTo"><strong>lineTo</strong></a>(self, pt)</dt><dd><tt>Draw&nbsp;a&nbsp;straight&nbsp;line&nbsp;from&nbsp;the&nbsp;current&nbsp;point&nbsp;to&nbsp;'pt'.</tt></dd></dl>
<dl><dt><a name="AbstractPen-moveTo"><strong>moveTo</strong></a>(self, pt)</dt><dd><tt>Begin&nbsp;a&nbsp;new&nbsp;sub&nbsp;path,&nbsp;set&nbsp;the&nbsp;current&nbsp;point&nbsp;to&nbsp;'pt'.&nbsp;You&nbsp;must<br>
end&nbsp;each&nbsp;sub&nbsp;path&nbsp;with&nbsp;a&nbsp;call&nbsp;to&nbsp;pen.<a href="#AbstractPen-closePath">closePath</a>()&nbsp;or&nbsp;pen.<a href="#AbstractPen-endPath">endPath</a>().</tt></dd></dl>
<dl><dt><a name="AbstractPen-qCurveTo"><strong>qCurveTo</strong></a>(self, *points)</dt><dd><tt>Draw&nbsp;a&nbsp;whole&nbsp;string&nbsp;of&nbsp;quadratic&nbsp;curve&nbsp;segments.<br>
&nbsp;<br>
The&nbsp;last&nbsp;point&nbsp;specified&nbsp;is&nbsp;on-curve,&nbsp;all&nbsp;others&nbsp;are&nbsp;off-curve<br>
points.<br>
&nbsp;<br>
This&nbsp;method&nbsp;implements&nbsp;TrueType-style&nbsp;curves,&nbsp;breaking&nbsp;up&nbsp;curves<br>
using&nbsp;'implied&nbsp;points':&nbsp;between&nbsp;each&nbsp;two&nbsp;consequtive&nbsp;off-curve&nbsp;points,<br>
there&nbsp;is&nbsp;one&nbsp;implied&nbsp;point&nbsp;exactly&nbsp;in&nbsp;the&nbsp;middle&nbsp;between&nbsp;them.&nbsp;See<br>
also&nbsp;<a href="#-decomposeQuadraticSegment">decomposeQuadraticSegment</a>().<br>
&nbsp;<br>
The&nbsp;last&nbsp;argument&nbsp;(normally&nbsp;the&nbsp;on-curve&nbsp;point)&nbsp;may&nbsp;be&nbsp;None.<br>
This&nbsp;is&nbsp;to&nbsp;support&nbsp;contours&nbsp;that&nbsp;have&nbsp;NO&nbsp;on-curve&nbsp;points&nbsp;(a&nbsp;rarely<br>
seen&nbsp;feature&nbsp;of&nbsp;TrueType&nbsp;outlines).</tt></dd></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="BasePen">class <strong>BasePen</strong></a>(<a href="fontTools.pens.basePen.html#AbstractPen">AbstractPen</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Base&nbsp;class&nbsp;for&nbsp;drawing&nbsp;pens.&nbsp;You&nbsp;must&nbsp;override&nbsp;_moveTo,&nbsp;_lineTo&nbsp;and<br>
_curveToOne.&nbsp;You&nbsp;may&nbsp;additionally&nbsp;override&nbsp;_closePath,&nbsp;_endPath,<br>
addComponent&nbsp;and/or&nbsp;_qCurveToOne.&nbsp;You&nbsp;should&nbsp;not&nbsp;override&nbsp;any&nbsp;other<br>
methods.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="BasePen-__init__"><strong>__init__</strong></a>(self, glyphSet)</dt></dl>
<dl><dt><a name="BasePen-addComponent"><strong>addComponent</strong></a>(self, glyphName, transformation)</dt><dd><tt>This&nbsp;default&nbsp;implementation&nbsp;simply&nbsp;transforms&nbsp;the&nbsp;points<br>
of&nbsp;the&nbsp;base&nbsp;glyph&nbsp;and&nbsp;draws&nbsp;it&nbsp;onto&nbsp;self.</tt></dd></dl>
<dl><dt><a name="BasePen-closePath"><strong>closePath</strong></a>(self)</dt></dl>
<dl><dt><a name="BasePen-curveTo"><strong>curveTo</strong></a>(self, *points)</dt></dl>
<dl><dt><a name="BasePen-endPath"><strong>endPath</strong></a>(self)</dt></dl>
<dl><dt><a name="BasePen-lineTo"><strong>lineTo</strong></a>(self, pt)</dt></dl>
<dl><dt><a name="BasePen-moveTo"><strong>moveTo</strong></a>(self, pt)</dt></dl>
<dl><dt><a name="BasePen-qCurveTo"><strong>qCurveTo</strong></a>(self, *points)</dt></dl>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-decomposeQuadraticSegment"><strong>decomposeQuadraticSegment</strong></a>(points)</dt><dd><tt>Split&nbsp;the&nbsp;quadratic&nbsp;curve&nbsp;segment&nbsp;described&nbsp;by&nbsp;'points'&nbsp;into&nbsp;a&nbsp;list<br>
of&nbsp;"atomic"&nbsp;quadratic&nbsp;segments.&nbsp;The&nbsp;'points'&nbsp;argument&nbsp;must&nbsp;be&nbsp;a&nbsp;sequence<br>
with&nbsp;length&nbsp;2&nbsp;or&nbsp;greater,&nbsp;containing&nbsp;(x,&nbsp;y)&nbsp;coordinates.&nbsp;The&nbsp;last&nbsp;point<br>
is&nbsp;the&nbsp;destination&nbsp;on-curve&nbsp;point,&nbsp;the&nbsp;rest&nbsp;of&nbsp;the&nbsp;points&nbsp;are&nbsp;off-curve<br>
points.&nbsp;The&nbsp;start&nbsp;point&nbsp;should&nbsp;not&nbsp;be&nbsp;supplied.<br>
&nbsp;<br>
This&nbsp;function&nbsp;returns&nbsp;a&nbsp;list&nbsp;of&nbsp;(pt1,&nbsp;pt2)&nbsp;tuples,&nbsp;which&nbsp;each&nbsp;specify&nbsp;a<br>
plain&nbsp;quadratic&nbsp;bezier&nbsp;segment.</tt></dd></dl>
<dl><dt><a name="-decomposeSuperBezierSegment"><strong>decomposeSuperBezierSegment</strong></a>(points)</dt><dd><tt>Split&nbsp;the&nbsp;SuperBezier&nbsp;described&nbsp;by&nbsp;'points'&nbsp;into&nbsp;a&nbsp;list&nbsp;of&nbsp;regular<br>
bezier&nbsp;segments.&nbsp;The&nbsp;'points'&nbsp;argument&nbsp;must&nbsp;be&nbsp;a&nbsp;sequence&nbsp;with&nbsp;length<br>
3&nbsp;or&nbsp;greater,&nbsp;containing&nbsp;(x,&nbsp;y)&nbsp;coordinates.&nbsp;The&nbsp;last&nbsp;point&nbsp;is&nbsp;the<br>
destination&nbsp;on-curve&nbsp;point,&nbsp;the&nbsp;rest&nbsp;of&nbsp;the&nbsp;points&nbsp;are&nbsp;off-curve&nbsp;points.<br>
The&nbsp;start&nbsp;point&nbsp;should&nbsp;not&nbsp;be&nbsp;supplied.<br>
&nbsp;<br>
This&nbsp;function&nbsp;returns&nbsp;a&nbsp;list&nbsp;of&nbsp;(pt1,&nbsp;pt2,&nbsp;pt3)&nbsp;tuples,&nbsp;which&nbsp;each<br>
specify&nbsp;a&nbsp;regular&nbsp;curveto-style&nbsp;bezier&nbsp;segment.</tt></dd></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>__all__</strong> = ['AbstractPen', 'BasePen', 'decomposeSuperBezierSegment', 'decomposeQuadraticSegment']</td></tr></table>
</body></html>

Some files were not shown because too many files have changed in this diff Show More