From 20aadad26c0c2e230d9e14d284a76a10f22084fb Mon Sep 17 00:00:00 2001 From: Erik van Blokland Date: Fri, 22 Feb 2008 10:09:52 +0000 Subject: [PATCH] Script with examples of the new RFont.psHints attribute. Setting and getting values. git-svn-id: http://svn.robofab.com/trunk@38 b5fa9d6c-a76f-4ffd-b3cb-f825fc41095c --- Scripts/RoboFabIntro/postScriptHintData.py | 99 ++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Scripts/RoboFabIntro/postScriptHintData.py diff --git a/Scripts/RoboFabIntro/postScriptHintData.py b/Scripts/RoboFabIntro/postScriptHintData.py new file mode 100644 index 000000000..5354d3cae --- /dev/null +++ b/Scripts/RoboFabIntro/postScriptHintData.py @@ -0,0 +1,99 @@ +#FLM: Get and set font level PostScript hint data. +from robofab.world import CurrentFont + +""" + This script shows the way to get to the font level postscript hint values. + These values were available from the fl layer, but not in RoboFab. + Now they're available in RoboFab in a slightly easier to use format. + The values also export to UFO and import from UFO. + + Check the FontLab FontInfo panel / Hinting Settings + +""" + +f = CurrentFont() + +# the fontlevel postscript hint data is accessible through the psHints attribute + +print +print "This script shows the attributes of psHints:", f.psHints + +# now let's have a look at the values +# blueScale, blueShift, blueFuzz and forceBold are all single values. + +print "blueScale", f.psHints.blueScale +f.psHints.blueScale = .5 +print "blueScale changed", f.psHints.blueScale + +print "blueShift", f.psHints.blueShift +f.psHints.blueShift = 5 +print "blueShift changed", f.psHints.blueShift + +print "blueFuzz", f.psHints.blueFuzz +f.psHints.blueFuzz = 0 +print "blueFuzz changed", f.psHints.blueFuzz + +print "forceBold", f.psHints.forceBold +f.psHints.forceBold = 1 +print "forceBold changed", f.psHints.forceBold + + +# the following values are represented as lists. +# Important Note: you can only set the whole list, not individual items. +# So get the list, make changes to it, then set the list +# Zones are represented as tuples of integers, so it's easier to +# see which values belong together. FL stores the values as +# a single list of numbers. + +# T1 spec says blueValues, FL says Primary Alignment Zones, under "Set Local Alignment Zones". +print "blueValues", f.psHints.blueValues +# remove the last zone +f.psHints.blueValues = f.psHints.blueValues[:-1] +print "blueValues changed", f.psHints.blueValues +# add a new zone +f.psHints.blueValues = f.psHints.blueValues + [(750, 770)] +print "blueValues changed", f.psHints.blueValues + +# T1 spec says otherBlues, FL says Secondary Alignment Zones, under "Set Local Alignment Zones". +print "otherBlues", f.psHints.otherBlues +# remove the last zone +f.psHints.otherBlues = f.psHints.otherBlues[:-1] +print "otherBlues changed", f.psHints.otherBlues +# add a new zone +f.psHints.otherBlues = f.psHints.otherBlues + [(750, 770)] +print "otherBlues changed", f.psHints.otherBlues + +# T1 spec says familyBlues, FL says Primary Alignment Zones, under "Set Family Alignment Zones". +print "familyBlues", f.psHints.familyBlues +# remove the last zone +f.psHints.familyBlues = f.psHints.familyBlues[:-1] +print "familyBlues changed", f.psHints.familyBlues +# add a new zone +f.psHints.familyBlues = f.psHints.familyBlues + [(750, 770)] +print "familyBlues changed", f.psHints.familyBlues + +# T1 spec says familyOtherBlues, FL says Seconday Alignment Zones, under "Set Family Alignment Zones". +print "familyOtherBlues", f.psHints.familyOtherBlues +# remove the last zone +f.psHints.familyOtherBlues = f.psHints.familyOtherBlues[:-1] +print "familyOtherBlues changed", f.psHints.familyOtherBlues +# add a new zone +f.psHints.familyOtherBlues = f.psHints.familyOtherBlues + [(750, 770)] +print "familyOtherBlues changed", f.psHints.familyOtherBlues + +# The horizontal stems are represented as a list of single values. +print "hStems", f.psHints.hStems +f.psHints.hStems = f.psHints.hStems[:-1] +print "hStems changed", f.psHints.hStems +# add a new stem +f.psHints.hStems = f.psHints.hStems + [100] +print "hStems changed", f.psHints.hStems + +# The vertical stems are represented as a list of single values. +print "vStems", f.psHints.vStems +f.psHints.vStems = f.psHints.vStems[:-1] +print "vStems changed", f.psHints.vStems +# add a new stem +f.psHints.vStems = f.psHints.vStems + [100] +print "vStems changed", f.psHints.vStems +