Comments (14)
Same error happens when:
==== building src/NotoSerif-ItalicMM.glyphs ====
==== building src/NotoSerif-RomanMM.glyphs ====
Inputs also for these two additional builds are attached.
NotoSerif.zip
from fontmake.
I think the problem here is that the Glyphs source contains conflicting kerning rules, which are rejected on UFO load by defcon. We didn't have this problem with RoboFab (the conflicting kerning rules are removed when the feature is written), but interpolation via MutatorMath uses defcon so we have to deal with this earlier than on feature write.
@adrientetar do you know of some tool that can remove conflicting kerning in defcon or elsewhere?
from fontmake.
I don't.
Btw kerning is normally loaded lazily but needs to be processed on open when converting from a legacy ufo version.
from fontmake.
Hm. This is still a bit of a pain to deal with because robofab doesn't support ufo3.
FYI @behdad it's starting to look like we need to scrap use of robofab universally in favor of defcon, if only for compatibility with MutatorMath (this would also apply to Roboto, if we want to use it there).
from fontmake.
Sounds like more work than we previously planned. However, I'm all for
doing "the right thing".
On Wed, Feb 17, 2016 at 3:06 PM, James Godfrey-Kittle <
[email protected]> wrote:
Hm. This is still a bit of a pain to deal with because robofab doesn't
support ufo3.FYI @behdad https://github.com/behdad it's starting to look like we
need to scrap use of robofab universally in favor of defcon, if only for
compatibility with MutatorMath (this would also apply to Roboto, if we want
to use it there).β
Reply to this email directly or view it on GitHub
#13 (comment).
Marek Z Jeziorek [ θ马 ] | [email protected] | 312 725-6958
from fontmake.
Great idea (cc @graphicore), ufo3 has things like layers standardized so you don't need to use robofont extensions to the spec anywhere. defcon itself has many refinements in the ufo3 branch and, as you found out, validates data.
If you're doing this I'll work on getting our patches upstreamed.
from fontmake.
from fontmake.
FYI @behdad it's starting to look like we need to scrap use of robofab universally in favor of defcon, if only for compatibility with MutatorMath (this would also apply to Roboto, if we want to use it there).
Correct.
I'll take a look into this issue. I'm new to defcon, but see what I can figure out.
from fontmake.
But, kerning is still validated by defcon on UFO save so using defcon doesn't really help us here. It's looking to me like we have no choice but to remove the duplicate kerning earlier if we use MutatorMath. Of course we can still switch to defcon since it seems like the right thing to do.
from fontmake.
So, is the kerning data in one of the masters invalid? Then that's a source bug. @jamesgk can you make defcon report the invalid pairs? validateKerning definitely generates those, but they are lost in the exception.
It also occurs to me that:
- defcon's validateKerning can be improved a bit. I'll send PR for that separately,
- mathFont.mathKerning._processMathOne() needs to be more sophisticated to handle adding two kernsets with differing groups, half-class exceptions, etc. I'll send a PR for that as well as I work it out this week.
from fontmake.
So, is the kerning data in one of the masters invalid? Then that's a source bug.
So, is it OK if fontmake chokes on invalid kerning? My concern is that Glyphs does not.
@jamesgk can you make defcon report the invalid pairs? validateKerning definitely generates those, but they are lost in the exception.
They are passed on by defcon via an attribute of the exception object; we can print that out in glyphs2ufo where mutatorMath is called.
from fontmake.
BTW, there are quite a lot (948) of these conflicting rules in Noto Sans Ethiopic. The first 10:
public.kern1.@MMK_L_li_ethiopic, qa_ethiopic (-140) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qu_ethiopic (-140) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qi_ethiopic (-140) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qee_ethiopic (-140) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qe_ethiopic (-140) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qo_ethiopic (-60) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qwa_ethiopic (-140) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qwi_ethiopic (-140) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qwe_ethiopic (-70) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qho_ethiopic (-73) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
...
from fontmake.
Thanks. I'll take a look.
On Tue, Mar 1, 2016 at 8:27 AM, James Godfrey-Kittle <
[email protected]> wrote:
BTW, there are quite a lot (948) of these conflicting rules in Noto Sans
Ethiopic. The first 10:public.kern1.@MMK_L_li_ethiopic, qa_ethiopic (-140) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qu_ethiopic (-140) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qi_ethiopic (-140) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qee_ethiopic (-140) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qe_ethiopic (-140) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qo_ethiopic (-60) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qwa_ethiopic (-140) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qwi_ethiopic (-140) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qwe_ethiopic (-70) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
public.kern1.@MMK_L_li_ethiopic, qho_ethiopic (-73) conflicts with hhi_ethiopic, public.kern2.@MMK_R_qa_ethiopic (-62)
...β
Reply to this email directly or view it on GitHub
#13 (comment).
behdad
http://behdad.org/
from fontmake.
The original issue here should be fixed. New issues can be spun off e.g. for migration to defcon (one already exists in ufoLib for updating validateKerning).
from fontmake.
Related Issues (20)
- Generating fonts from Designspace failed: Tried to end an empty contour. HOT 6
- Incorrect `opsz` range in Designspace file generated from Glyphs project HOT 11
- Curious choice of namerecord format HOT 2
- Latin languagesystem breaks variable font build HOT 2
- fontmake -o ufo -i makes UFO file called "*.ttf" HOT 1
- fontmake -i destroys geometry when off curve points coincide with on curve points
- Compatibility checker should skip skipped glyphs in DS HOT 1
- Deal with Designspace v5
- How to generate a font from png bitmap or svg through fontmake
- Reading UFO failed if feature.fea saved with BOM mark HOT 1
- fails to build mononoki font from glyphs file (Loading Glyphs file failed: 'NoneType' object has no attribute 'groups')
- OTF export looks...awful? HOT 2
- Error "Expected glyph class definition or statement: got NAME condition" HOT 1
- Building variable fonts from non-default layer sources HOT 8
- Add support for custom naming-table entries in Glyphs instances HOT 1
- STAT table in features is overwritten by generic STAT table HOT 7
- Only load the sources relevant for a set of locations
- Building fallback font fails when building cmap: 'H' format requires 0 <= number <= 65535
- `fsType` output doesnβt honor source UFO metadata for OS/2 table HOT 15
- Sources with no kerning or GPOS features are inconsistent between variable and static instance TTFs HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fontmake.