Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Components: Rotated or scaled components #36

Closed
pichotta opened this issue Jun 16, 2020 · 3 comments
Closed

Components: Rotated or scaled components #36

pichotta opened this issue Jun 16, 2020 · 3 comments
Labels
question Further information is requested

Comments

@pichotta
Copy link
Collaborator

pichotta commented Jun 16, 2020

Hi @m4rc1e,

The current OpenSans sources have quite a few complex component transformations. Glyphs that have components which have been scaled, rotated, or both. This treatment has been reported to cause issues with VTT hinting.

for e.g. there are about 300 occurrences the Regular. However, many of them exist within the larger Noto glyph repertoire (3,818) and many may not have a big impact on the file size of the subset of the generated OpenSans (1,150).

Which ones of these would you like decomposed? or none? We could handle this in a branch.

  1. rotated components
  2. scaled components
  3. scaled and rotated components

(cc: @davelab6, @moyogo, @djrrb, @mikedug)

Example from Regular:
oe in uni1D14
uni046B in uni2DFE
g.salt in uni1D77.salt
afii10094 in uniA67A
afii10074 in uniA675
uni0281 in uni02B6
uni1C87 in uni2DFA
adieresis in uni1DF2
uni0271 in uni1DAC
greater in uni02C3
F in TurnedF
afii10068 in uni2DE2
uni025B in uni1D4B
g.salt in gcomb.salt
E in uni1D31
v in uni1D65
r in rcomb
afii10085 in uniA677
r in uni1D63
X in uniA670
X in uniA670
X in uniA670
X in uniA670
X in uniA670
X in uniA670
X in uniA670
X in uniA670
afii10073 in uni2DE5
gamma in uni1D5E
U in uni1D41
chi in uni1D6A
g in uni1D77
h in uni02B0
afii10065 in uni2DF6
k in kinferior
j in subscriptj
m in uni026F
v in uni1D20
K in uni1D37
phi in uni1D69
W in uni1D42
B in uni1D2F
u in ucomb
uni2C6D in uni2C70
l in linferior
c in ccomb
uni1D09 in uni1D4E
udieresis in uni1DF4
uniAB52 in uniAB5F
i in icomb
I.salt in uni1D35.salt
m in minferior
v in uni028C
d in uni1D48
s in uni02E2
d in dcomb
uni0275 in uni1DB1
Hbar in uniA7F8
e in uni1D49
r in rbelowcomb
uniFE20 in uniFE27
u in uni1D58
m in mcomb
S in uniA644
afii10088 in uni2DF0
M in uni1D39
eth in ethcomb
R in uni1D3F
i in imod
uni029F in uni1DAB
v in vcomb
eopenreversed in uni1D9F
uniA649 in uni2DF8
oe in uniA7F9
afii10093 in uniA679
I.salt in uniA7F7.salt
dagger in turneddagger
afii10082 in uni2DEC
G in turnedSansSerifG
a in uni1D43
uni029Ddotless in uni1DA8dotless
afii10094 in uniA69D
semicolon in turnedsemicolon
ampersand in ampersandturned
h in hinferior
uni0465 in uniA69F
n in ncomb
t in tinferior
i in uni1D62
p in uni1DEE
k in uni1D4F
t in uni1D57
afii10089 in uni2DF1
beta in uni1D66
uniA700 in uniA706
question in questiondown
f in uni1DA0
k in kturned
uni0273 in uni1DAF
uni1D17 in uni1D55
gamma in uni1D67
uni0289 in uni1DB6
uni1D02 in uni1D46
h in hcomb
semicolon in reversedsemicolon
g in gcomb
oe in uniAB42
eng in uni1D51
p in pinferior
uni0254 in uni1D53
phi in uni1D60
T in uni1D40
uni0473 in uni2DF4
uni0251 in uni1DE7
uni0283 in uni1DEF
afii10096 in uniA655
o in ocomb
uni0266 in uni02B1
afii10066 in uni2DE0
c in uni1D12
uni0283 in uni1DB4
uni0259 in uni1D4A
n in nsuperior
afii10091 in uni2DF3
beta in uni1DE9
afii10104 in uniA676
afii10084 in uni2DEE
h in uni0265
uni0294 in uni0295
B in uni1D2E
uni0279 in uni02B4
V in Vmod
l in uni02E1
ccedilla in ccedillacomb
T in uniA7B1
delta in uni1D5F
z in zcomb
uni0280 in uni0281
r in uni0279
uniA64B in uni2DF9
uni0261 in uni1DA2
uni0250 in uni1D44
O in uni1D3C
w in uni1DF1
afii10072 in uni2DE4
quotedblbase in uni2E42
comma in turnedcomma
uniA77D in uniA77E
z in uni1DBB
afii10088 in uniA661
a in uni2090
x in uni02E3
undertie in invertedundertie
afii10081 in uni2DEB
o in uni1D11
uniA668 in uniA66E
uniA668 in uniA66E
uniA668 in uniA66E
uniA668 in uniA66E
uniA668 in uniA66E
uniA668 in uniA66E
uniA668 in uniA66E
t in tcomb
A in uni1D2C
uni026A in uni1DA6
o in uni1D52
uniAB37 in uniAB5D
ae in aecomb
afii10092 in uniA69C
uni0461 in uniA67B
k in kcomb
uni026D in uni1DA9
y in uni028E
e in uni0258
uni0265 in uni1DA3
uni1D25 in uni1D5C
u in uni1D64
f in uni1DEB
afii10078 in uni2DE8
afii10067 in uni2DE1
N in uni1D3A
c in uni1D9C
uni02E9 in uniA712
uni01AB in uni1DB5
oe in uniAB40
w in uni028D
e in ecomb
L in turnedSansSerifL
uniA727 in uniAB5C
eth in uni1D9E
delta in uni018D
y in uni02B8
uni026B in uniAB5E
uni0270 in uni1DAD
H in uni1D34
K in uniA7B0
G in uni1D33
afii10040 in uniA660
uni02E8 in uniA713
oe in uniAB41
iota in turnediota
l in lcomb
w in uni02B7
s in uniA645
c in uniAB62
uni02E6 in uniA715
uni0274 in Ncomb
uni0222 in uni1D3D
x in xcomb
b in uni1D47
n in ninferior
uni0295 in uni02E4
jdotless in uni02B2dotless
uniAB50 in uniAB51
a in acomb
uni0272 in uni1DAE
paragraph in reversedparagraph
j in uni02B2
uniFE20 in uniFE28
uni029F in Lcomb
P in uni1D3E
breve in uniAB5B
hungarumlaut in uni02F5
uni02C4 in uni02C5
uni025F in uni1DA1
rho in uni1D68
uni1D16 in uni1D54
uni0280 in Rcomb
longs in longscomb
uni0278 in uni1DB2
L in uniA780
beta in uni1D5D
x in uni2093
afii10083 in uni2DED
J.salt in uni1D36.salt
A in Turneda
afii10080 in uni2DEA
u in uni1DF0
uni1AB9 in uni1DF0
comma in uni2E41
a in uni0250
interrobang in invertedinterrobang
uni028B in uni1DB9
uni02C0 in uni02C1
J in uni1D36
Y in turnedSansSerifY
I in uni1D35
bracketleft in uniA671
bracketleft in uniA671
Ohm in Ohminverted
uni029D in uni1DA8
o in uni2092
afii10069 in uni2DE3
uni0251 in uni1D45
uni0262 in Gcomb
uniA735 in aocomb
chi in uni1D61
udieresis in uni1D1E
uni1D7B in uni1DA7
uni1D85 in uni1DAA
L in uni1D38
uni0282 in uni1DB3
uni1D1C in uni1DB8
F in uniA7FB
afii10070 in uni2DF7
theta in uni1DBF
afii10101 in uniA674
P in uniA7FC
uni0274 in uni1DB0
b in uni1DE8
iotaLatin in uni1DA5
AE in uni1D2D
uni0255 in uni1D9D
afii10090 in uni2DF2
idotless in uni1D62dotless
uni018E in uni1D32
uni0251 in uni0252
s in scomb
D in uni1D30
less in uni02C2
m in uni1D50
uni046D in uni2DFF
uni0263 in uni02E0
n in uni1D1D
afii10087 in uni2DEF
oslash in uni1D13
uni028C in uni1DBA
uni028A in uni1DB7
uni0252 in uni1D9B
r in uni02B3
uni027B in uni02B5
uni0268 in uni1DA4
uni0259 in uni2094
uni0467 in uni2DFD
Q in RotatedQ
v in uni1D5B
m in uni1D1F
uniA657 in uni2DFC
uniA75B in rrotundacomb
e in uni2091
o in uni1DED
uni1AB9 in uni1DED
M in uniA7FD
uniA76F in uniA770
uni1D79 in uniA77F
afii10096 in uni2DFB
afii10079 in uni2DE9
uni0290 in uni1DBC
uni0259 in uni1DEA
afii10079 in uni1D78
I in uniA7F7
afii10092 in uniA678
uni0292 in uni1DBE
uni1D1D in uni1D59
uniAB38 in uni1DEC
afii10076 in uni2DE6
s in sinferior
odieresis in uni1DF3
uni0291 in uni1DBD
question in reversedquestionmark
uni1D0D in Mcomb
uniFE22 in uniFE2A
g in uni1D4D
afii10077 in uni2DE7
uni026F in uni1D5A
uniA739 in avcomb
uniA77A in insulardcomb
t in tturned
L in reversedSansSerifL
p in uni1D56
uni1D08 in uni1D4C

@pichotta pichotta added the question Further information is requested label Jun 16, 2020
@mikedug
Copy link
Collaborator

mikedug commented Jun 17, 2020

Hi

I ran OpenSans[wght].ttf in the VTT Autohinter Light.

from

https://github.com/TypeNetwork/opensans-1/tree/master/fonts/variable

VTT Light Autohinter reports the following glyphs with errors. note below, this was the latest information I had from Microsoft regarding these errors. I can follow up to see if there is a fix. If the fonts are to be prepared for VTT Hinting, I would recommend making these glyphs as uniques.

I can take a look at the other Variable fonts in this share to list out the problematic glyphs.

let me if this is helpful.


OpenSans[wght].ttf

Glyf Pgm, glyph 535 (Unicode 0x207f), line 4: Composite, Cannot change composite definition in a variation font.
Glyf Pgm, glyph 1012 (Unicode 0x2095), line 4: Composite, Cannot change composite definition in a variation font.
Glyf Pgm, glyph 1023 (Unicode 0x2096), line 4: Composite, Cannot change composite definition in a variation font.
Glyf Pgm, glyph 1027 (Unicode 0x2097), line 4: Composite, Cannot change composite definition in a variation font.
Glyf Pgm, glyph 1032 (Unicode 0x2098), line 4: Composite, Cannot change composite definition in a variation font.
Glyf Pgm, glyph 1040 (Unicode 0x2099), line 4: Composite, Cannot change composite definition in a variation font.
Glyf Pgm, glyph 1059 (Unicode 0x209a), line 4: Composite, Cannot change composite definition in a variation font.
Glyf Pgm, glyph 1096 (Unicode 0x209b), line 4: Composite, Cannot change composite definition in a variation font.
Glyf Pgm, glyph 1115 (Unicode 0x209c), line 4: Composite, Cannot change composite definition in a variation font.

6TH FEBRUARY 2020
This error is telling that the composite code is changing which is bad for a variation font. During assembly of a variation font, VTT checks to make sure the existing binary of glyph composite signature does not change after compile. The autohinter rewrites the text composite signature from the binary and in this case when it’s assembled it is different from what was there before in binary. After some investigation there appears to be a rounding issue in VTT. Still working on a fix.

@moyogo
Copy link
Collaborator

moyogo commented Jun 17, 2020

For the transformed components, they can be decomposed in the sources or with fontmake/ufo2ft when building the TTFs with the ufo2ft decomposeComponents filter (for example c81d7a2 in the decompose-transformed-components branch).

@pichotta
Copy link
Collaborator Author

@moyogo
I compared the Regular with the Italic and the list of transformed components are different by approx 33 glyphs. The /O for example in the Italic is listed twice.

Here are the two lists.

OS-romans_complexComponents.txt

OS-italics_complexComponents.txt

There are two glyphs shared by both slopes that has a different unicode as the reference. I will open two Issues to deal with in the second phase, after the normal subsetted set is complete.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants