RKerning
class RKerning()
A Kerning object. This object normally created as part of a
BaseFont
. An orphan Kerning object can be created
like this:
>>> groups = RKerning()
This object behaves like a Python dictionary. Most of the
dictionary functionality comes from BaseDict
, look at
that object for the required environment implementation details.
Kerning uses :func:normalizers.normalizeKerningKey
to normalize the
key of the dict
, and :func:normalizers.normalizeKerningValue
to normalize the the value of the dict
.
addObserver(observer, methodName, notification)
Add an observer object. that will receive notification for the given methodName.
getRepresentation(name, **kwargs)
Get a representation by name.
Optionally arguments could be provided if the representation factory requires arguments.
undo(undoTitle='')
Capture the current state of the object and create a undo item in a with
statement.
Optionally an undoTitle
can be provided.
clear()
Removes all information from Kerning, resetting the Kerning to an empty dictionary. :
>>> font.kerning.clear()
find(pair, default=None)
Returns the value for the kerning pair - even if the pair only exists implicitly (one or both sides may be members of a kerning group).
pair is a tuple
of two string
, and the returned
values will either be integer/float
or None
if no pair was found. :
>>> font.kerning[("A", "V")]
-25
get(pair, default=None)
Returns the value for the kerning pair.
pair is a tuple
of two string
, and the returned
values will either be integer/float
or None
if no pair was found. :
>>> font.kerning[("A", "V")]
-25
It is important to understand that any changes to the returned value will not be reflected in the Kerning object. If one wants to make a change to the value, one should do the following:
>>> value = font.kerning[("A", "V")]
>>> value += 10
>>> font.kerning[("A", "V")] = value
interpolate(factor, minKerning, maxKerning, round=True, suppressError=True)
Interpolates all pairs between two BaseKerning
objects:
minKerning and maxKerning. The interpolation occurs on a 0 to 1.0 range where minKerning is located at 0 and maxKerning is located at 1.0. The kerning data is replaced by the interpolated kerning.
- factor is the interpolation value. It may be less than 0
and greater than 1.0. It may be an
integer/float
,tuple
orlist
. If it is atuple
orlist
, the first number indicates the x factor and the second number indicates the y factor. - round is a
bool
indicating if the result should be rounded toint
. The default behavior is to round interpolated kerning. -
suppressError is a
bool
indicating if incompatible data should be ignored or if an error should be raised when such incompatibilities are found. The default behavior is to ignore incompatible data.myKerning.interpolate(kerningOne, kerningTwo)
items()
Returns a list of tuple
of each pair and value. Pairs are a
tuple
of two string
and values are integer/float
.
The initial list will be unordered.
>>> font.kerning.items()
[(("A", "V"), -30), (("A", "W"), -10)]
normalizeKerningKey(value)
Normalizes kerning key.
- value must be a
tuple
orlist
. - value must contain only two members.
- value items must be
string
. - value items must be at least one character long.
- Returned value will be a two member
tuple
of unencodedunicode
strings.
keys()
Returns a list
of all the pairs in Kerning. This list will be
unordered.:
>>> font.kerning.keys()
[("A", "Y"), ("A", "V"), ("A", "W")]
pop(pair, default=None)
Removes the pair from the Kerning and returns the value as an int
.
If no pair is found, default is returned. pair is a
tuple
of two string
. This must return either
default or a integer/float
.
>>> font.kerning.pop(("A", "V"))
-20
>>> font.kerning.pop(("A", "W"))
-10.5
remove(pair)
Removes a pair from the Kerning. pair will
be a tuple
of two string
.
This is a backwards compatibility method.
round(multiple=1)
Rounds the kerning values to increments of multiple,
which will be an int
.
The default behavior is to round to increments of 1.
scaleBy(factor)
Scales all kerning values by factor. factor will be an
integer/float
, tuple
or list
. The first value of the
factor will be used to scale the kerning values.
>>> myKerning.scaleBy(2)
>>> myKerning.scaleBy((2,3))
update(otherKerning)
Updates the Kerning based on otherKerning. otherKerning is a dict
of
kerning information. If a pair from otherKerning is in Kerning, the pair
value will be replaced by the value from otherKerning. If a pair
from otherKerning is not in the Kerning, it is added to the pairs. If Kerning
contains a pair that is not in otherKerning, it is not changed.
>>> font.kerning.update(newKerning)
normalizeKerningValue(value)
Normalizes kerning value.
- value must be an
integer/float
. - Returned value is the same type as input value.
values()
Returns a list
of each pair’s values, the values will be
integer/float
.
The list will be unordered.
>>> font.kerning.items()
[-20, -15, 5, 3.5]