arrayTools: Various array and rectangle tools¶
Routines for calculating bounding boxes, point in rectangle calculations and so on.
-
fontTools.misc.arrayTools.
calcBounds
(array)[source]¶ Calculate the bounding rectangle of a 2D points array.
- Parameters
array – A sequence of 2D tuples.
- Returns
A four-item tuple representing the bounding rectangle
(xMin, yMin, xMax, yMax)
.
-
fontTools.misc.arrayTools.
calcIntBounds
(array, round=<function otRound>)[source]¶ Calculate the integer bounding rectangle of a 2D points array.
Values are rounded to closest integer towards
+Infinity
using thefontTools.misc.fixedTools.otRound()
function by default, unless an optionalround
function is passed.- Parameters
array – A sequence of 2D tuples.
round – A rounding function of type
f(x: float) -> int
.
- Returns
(xMin, yMin, xMax, yMax)
.- Return type
A four-item tuple of integers representing the bounding rectangle
-
fontTools.misc.arrayTools.
updateBounds
(bounds, p, min=<built-in function min>, max=<built-in function max>)[source]¶ Add a point to a bounding rectangle.
- Parameters
bounds – A bounding rectangle expressed as a tuple
(xMin, yMin, xMax, yMax)
.p – A 2D tuple representing a point.
min – functions to compute the minimum and maximum.
max – functions to compute the minimum and maximum.
- Returns
The updated bounding rectangle
(xMin, yMin, xMax, yMax)
.
-
fontTools.misc.arrayTools.
pointInRect
(p, rect)[source]¶ Test if a point is inside a bounding rectangle.
- Parameters
p – A 2D tuple representing a point.
rect – A bounding rectangle expressed as a tuple
(xMin, yMin, xMax, yMax)
.
- Returns
True
if the point is inside the rectangle,False
otherwise.
-
fontTools.misc.arrayTools.
pointsInRect
(array, rect)[source]¶ Determine which points are inside a bounding rectangle.
- Parameters
array – A sequence of 2D tuples.
rect – A bounding rectangle expressed as a tuple
(xMin, yMin, xMax, yMax)
.
- Returns
A list containing the points inside the rectangle.
-
fontTools.misc.arrayTools.
vectorLength
(vector)[source]¶ Calculate the length of the given vector.
- Parameters
vector – A 2D tuple.
- Returns
The Euclidean length of the vector.
-
fontTools.misc.arrayTools.
asInt16
(array)[source]¶ Round a list of floats to 16-bit signed integers.
- Parameters
array – List of float values.
- Returns
A list of rounded integers.
-
fontTools.misc.arrayTools.
normRect
(rect)[source]¶ Normalize a bounding box rectangle.
This function “turns the rectangle the right way up”, so that the following holds:
xMin <= xMax and yMin <= yMax
- Parameters
rect – A bounding rectangle expressed as a tuple
(xMin, yMin, xMax, yMax)
.- Returns
A normalized bounding rectangle.
-
fontTools.misc.arrayTools.
scaleRect
(rect, x, y)[source]¶ Scale a bounding box rectangle.
- Parameters
rect – A bounding rectangle expressed as a tuple
(xMin, yMin, xMax, yMax)
.x – Factor to scale the rectangle along the X axis.
Y – Factor to scale the rectangle along the Y axis.
- Returns
A scaled bounding rectangle.
-
fontTools.misc.arrayTools.
offsetRect
(rect, dx, dy)[source]¶ Offset a bounding box rectangle.
- Parameters
rect – A bounding rectangle expressed as a tuple
(xMin, yMin, xMax, yMax)
.dx – Amount to offset the rectangle along the X axis.
dY – Amount to offset the rectangle along the Y axis.
- Returns
An offset bounding rectangle.
-
fontTools.misc.arrayTools.
insetRect
(rect, dx, dy)[source]¶ Inset a bounding box rectangle on all sides.
- Parameters
rect – A bounding rectangle expressed as a tuple
(xMin, yMin, xMax, yMax)
.dx – Amount to inset the rectangle along the X axis.
dY – Amount to inset the rectangle along the Y axis.
- Returns
An inset bounding rectangle.
-
fontTools.misc.arrayTools.
sectRect
(rect1, rect2)[source]¶ Test for rectangle-rectangle intersection.
- Parameters
rect1 – First bounding rectangle, expressed as tuples
(xMin, yMin, xMax, yMax)
.rect2 – Second bounding rectangle.
- Returns
A boolean and a rectangle. If the input rectangles intersect, returns
True
and the intersecting rectangle. ReturnsFalse
and(0, 0, 0, 0)
if the input rectangles don’t intersect.
-
fontTools.misc.arrayTools.
unionRect
(rect1, rect2)[source]¶ Determine union of bounding rectangles.
- Parameters
rect1 – First bounding rectangle, expressed as tuples
(xMin, yMin, xMax, yMax)
.rect2 – Second bounding rectangle.
- Returns
The smallest rectangle in which both input rectangles are fully enclosed.
-
fontTools.misc.arrayTools.
rectCenter
(rect)[source]¶ Determine rectangle center.
- Parameters
rect – Bounding rectangle, expressed as tuples
(xMin, yMin, xMax, yMax)
.- Returns
A 2D tuple representing the point at the center of the rectangle.
-
fontTools.misc.arrayTools.
intRect
(rect)[source]¶ Round a rectangle to integer values.
Guarantees that the resulting rectangle is NOT smaller than the original.
- Parameters
rect – Bounding rectangle, expressed as tuples
(xMin, yMin, xMax, yMax)
.- Returns
A rounded bounding rectangle.
-
class
fontTools.misc.arrayTools.
Vector
(values, keep=False)[source]¶ A math-like vector.
Represents an n-dimensional numeric vector.
Vector
objects support vector addition and subtraction, scalar multiplication and division, negation, rounding, and comparison tests.-
values
¶ Sequence of values stored in the vector.
-
-
fontTools.misc.arrayTools.
pairwise
(iterable, reverse=False)[source]¶ Iterate over current and next items in iterable.
- Parameters
iterable – An iterable
reverse – If true, iterate in reverse order.
- Returns
A iterable yielding two elements per iteration.
Example
>>> tuple(pairwise([])) () >>> tuple(pairwise([], reverse=True)) () >>> tuple(pairwise([0])) ((0, 0),) >>> tuple(pairwise([0], reverse=True)) ((0, 0),) >>> tuple(pairwise([0, 1])) ((0, 1), (1, 0)) >>> tuple(pairwise([0, 1], reverse=True)) ((1, 0), (0, 1)) >>> tuple(pairwise([0, 1, 2])) ((0, 1), (1, 2), (2, 0)) >>> tuple(pairwise([0, 1, 2], reverse=True)) ((2, 1), (1, 0), (0, 2)) >>> tuple(pairwise(['a', 'b', 'c', 'd'])) (('a', 'b'), ('b', 'c'), ('c', 'd'), ('d', 'a')) >>> tuple(pairwise(['a', 'b', 'c', 'd'], reverse=True)) (('d', 'c'), ('c', 'b'), ('b', 'a'), ('a', 'd'))