[symfont] Rename
This commit is contained in:
parent
5132bbe411
commit
c14aad81f4
@ -135,14 +135,14 @@ def test(glyphsets, glyphs=None, names=None):
|
||||
allVectors.append(contourVectors)
|
||||
for contour in contourPens:
|
||||
stats = GlyphStatistics(contour, glyphset=glyphset)
|
||||
size = abs(stats.Area) ** .5 * .5
|
||||
size = abs(stats.area) ** .5 * .5
|
||||
vector = (
|
||||
int(size),
|
||||
int(stats.MeanX),
|
||||
int(stats.MeanY),
|
||||
int(stats.StdDevX * 2),
|
||||
int(stats.StdDevY * 2),
|
||||
int(stats.Correlation * size),
|
||||
int(stats.meanX),
|
||||
int(stats.meanY),
|
||||
int(stats.stddevX * 2),
|
||||
int(stats.stddevY * 2),
|
||||
int(stats.correlation * size),
|
||||
)
|
||||
contourVectors.append(vector)
|
||||
#print(vector)
|
||||
|
@ -16,7 +16,6 @@ import math
|
||||
from fontTools.pens.basePen import BasePen
|
||||
from fontTools.pens.transformPen import TransformPen
|
||||
from fontTools.pens.momentsPen import MomentsPen
|
||||
from fontTools.pens.areaPen import AreaPen
|
||||
from fontTools.misc.transform import Scale
|
||||
from functools import partial
|
||||
from itertools import count
|
||||
@ -180,12 +179,12 @@ class GreenPen(BasePen):
|
||||
p1 = self.__startPoint
|
||||
self.value += self._funcs[1](p0[0],p0[1],p1[0],p1[1])
|
||||
|
||||
#AreaPen = partial(GreenPen, func=1)
|
||||
Moment1XPen = partial(GreenPen, func=x)
|
||||
Moment1YPen = partial(GreenPen, func=y)
|
||||
Moment2XXPen = partial(GreenPen, func=x*x)
|
||||
Moment2YYPen = partial(GreenPen, func=y*y)
|
||||
Moment2XYPen = partial(GreenPen, func=x*y)
|
||||
AreaPen = partial(GreenPen, func=1)
|
||||
MomentXPen = partial(GreenPen, func=x)
|
||||
MomentYPen = partial(GreenPen, func=y)
|
||||
MomentXXPen = partial(GreenPen, func=x*x)
|
||||
MomentYYPen = partial(GreenPen, func=y*y)
|
||||
MomentXYPen = partial(GreenPen, func=x*y)
|
||||
|
||||
|
||||
|
||||
@ -207,47 +206,47 @@ class GlyphStatistics(object):
|
||||
self._glyph.draw(transformer)
|
||||
self.m = m = pen
|
||||
|
||||
self.Area = area = m.area
|
||||
self.Moment1X = m.momentX
|
||||
self.Moment1Y = m.momentY
|
||||
self.Moment2XX = m.momentXX
|
||||
self.Moment2XY = m.momentXY
|
||||
self.Moment2YY = m.momentYY
|
||||
self.area = area = m.area
|
||||
self.momentX = m.momentX
|
||||
self.momentY = m.momentY
|
||||
self.momentXX = m.momentXX
|
||||
self.momentXY = m.momentXY
|
||||
self.momentYY = m.momentYY
|
||||
|
||||
if not area:
|
||||
self.MeanX = 0.
|
||||
self.MeanY = 0.
|
||||
self.VarianceX = 0.
|
||||
self.VarianceY = 0.
|
||||
self.StdDevX = 0.
|
||||
self.StdDevY = 0.
|
||||
self.Covariance = 0.
|
||||
self.Correlation = 0.
|
||||
self.Slant = 0.
|
||||
self.meanX = 0.
|
||||
self.meanY = 0.
|
||||
self.varianceX = 0.
|
||||
self.varianceY = 0.
|
||||
self.stddevX = 0.
|
||||
self.stddevY = 0.
|
||||
self.covariance = 0.
|
||||
self.correlation = 0.
|
||||
self.slant = 0.
|
||||
return
|
||||
|
||||
# Center of mass
|
||||
# https://en.wikipedia.org/wiki/Center_of_mass#A_continuous_volume
|
||||
self.MeanX = self.Moment1X / area
|
||||
self.MeanY = self.Moment1Y / area
|
||||
self.meanX = self.momentX / area
|
||||
self.meanY = self.momentY / area
|
||||
|
||||
# Var(X) = E[X^2] - E[X]^2
|
||||
self.VarianceX = self.Moment2XX / area - self.MeanX**2
|
||||
self.VarianceY = self.Moment2YY / area - self.MeanY**2
|
||||
self.varianceX = self.momentXX / area - self.meanX**2
|
||||
self.varianceY = self.momentYY / area - self.meanY**2
|
||||
|
||||
self.StdDevX = math.copysign(abs(self.VarianceX)**.5, self.VarianceX)
|
||||
self.StdDevY = math.copysign(abs(self.VarianceY)**.5, self.VarianceY)
|
||||
self.stddevX = math.copysign(abs(self.varianceX)**.5, self.varianceX)
|
||||
self.stddevY = math.copysign(abs(self.varianceY)**.5, self.varianceY)
|
||||
|
||||
# Covariance(X,Y) = ( E[X.Y] - E[X]E[Y] )
|
||||
self.Covariance = self.Moment2XY / area - self.MeanX*self.MeanY
|
||||
self.covariance = self.momentXY / area - self.meanX*self.meanY
|
||||
|
||||
# Correlation(X,Y) = Covariance(X,Y) / ( StdDev(X) * StdDev(Y)) )
|
||||
# Correlation(X,Y) = Covariance(X,Y) / ( stddev(X) * stddev(Y)) )
|
||||
# https://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient
|
||||
corr = self.Covariance / (self.StdDevX * self.StdDevY)
|
||||
self.Correlation = corr if abs(corr) > 1e-3 else 0
|
||||
correlation = self.covariance / (self.stddevX * self.stddevY)
|
||||
self.correlation = correlation if abs(correlation) > 1e-3 else 0
|
||||
|
||||
slant = self.Covariance / self.VarianceY
|
||||
self.Slant = slant if abs(slant) > 1e-3 else 0
|
||||
slant = self.covariance / self.varianceY
|
||||
self.slant = slant if abs(slant) > 1e-3 else 0
|
||||
|
||||
|
||||
def test(glyphset, upem, glyphs):
|
||||
|
Loading…
x
Reference in New Issue
Block a user