[varLib.avarPlanner] Add --samples
This commit is contained in:
parent
ffc1cd4801
commit
758fbb7d74
@ -58,8 +58,13 @@ def getGlyphsetBlackness(glyphset, frequencies=None):
|
|||||||
|
|
||||||
|
|
||||||
def planWeightAxis(
|
def planWeightAxis(
|
||||||
font, minValue, defaultValue, maxValue, weights=WEIGHTS, frequencies=None
|
font, minValue, defaultValue, maxValue, weights=None, samples=None, frequencies=None
|
||||||
):
|
):
|
||||||
|
if weights is None:
|
||||||
|
weights = WEIGHTS
|
||||||
|
if samples is None:
|
||||||
|
samples = SAMPLES
|
||||||
|
|
||||||
log.info("Weight min %g / default %g / max %g", minValue, defaultValue, maxValue)
|
log.info("Weight min %g / default %g / max %g", minValue, defaultValue, maxValue)
|
||||||
|
|
||||||
if "avar" in font:
|
if "avar" in font:
|
||||||
@ -92,10 +97,10 @@ def planWeightAxis(
|
|||||||
bias = -1 if extremeValue < defaultValue else 0
|
bias = -1 if extremeValue < defaultValue else 0
|
||||||
|
|
||||||
log.info("Planning target weights %s.", sorted(targetWeights))
|
log.info("Planning target weights %s.", sorted(targetWeights))
|
||||||
log.info("Sampling %u points in range %g,%g.", SAMPLES, rangeMin, rangeMax)
|
log.info("Sampling %u points in range %g,%g.", samples, rangeMin, rangeMax)
|
||||||
weightBlackness = axisWeightAverage.copy()
|
weightBlackness = axisWeightAverage.copy()
|
||||||
for sample in range(1, SAMPLES + 1):
|
for sample in range(1, samples + 1):
|
||||||
weight = rangeMin + (rangeMax - rangeMin) * sample / (SAMPLES + 1)
|
weight = rangeMin + (rangeMax - rangeMin) * sample / (samples + 1)
|
||||||
log.info("Sampling weight %g.", weight)
|
log.info("Sampling weight %g.", weight)
|
||||||
glyphset = font.getGlyphSet(location={"wght": weight})
|
glyphset = font.getGlyphSet(location={"wght": weight})
|
||||||
weightBlackness[weight] = getGlyphsetBlackness(glyphset, frequencies) / (
|
weightBlackness[weight] = getGlyphsetBlackness(glyphset, frequencies) / (
|
||||||
@ -151,6 +156,7 @@ def main(args=None):
|
|||||||
description="Plan `avar` table for variable font",
|
description="Plan `avar` table for variable font",
|
||||||
)
|
)
|
||||||
parser.add_argument("font", metavar="font.ttf", help="Font file.")
|
parser.add_argument("font", metavar="font.ttf", help="Font file.")
|
||||||
|
parser.add_argument("-s", "--samples", type=int, help="Number of samples.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-p", "--plot", action="store_true", help="Plot the resulting mapping."
|
"-p", "--plot", action="store_true", help="Plot the resulting mapping."
|
||||||
)
|
)
|
||||||
@ -189,7 +195,11 @@ def main(args=None):
|
|||||||
|
|
||||||
if wghtAxis:
|
if wghtAxis:
|
||||||
out, outNormalized = planWeightAxis(
|
out, outNormalized = planWeightAxis(
|
||||||
font, wghtAxis.minValue, wghtAxis.defaultValue, wghtAxis.maxValue
|
font,
|
||||||
|
wghtAxis.minValue,
|
||||||
|
wghtAxis.defaultValue,
|
||||||
|
wghtAxis.maxValue,
|
||||||
|
samples=options.samples,
|
||||||
)
|
)
|
||||||
|
|
||||||
if options.plot:
|
if options.plot:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user