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

Add a quadratic pen #9

Closed
ctrlcctrlv opened this issue Sep 12, 2020 · 12 comments
Closed

Add a quadratic pen #9

ctrlcctrlv opened this issue Sep 12, 2020 · 12 comments
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@ctrlcctrlv
Copy link
Collaborator

Would appreciate @eliheuer telling me his favorite style of quadratic pen so I can just implement that. The current pen is cubic Bézier only, attempting to use it in a quadratic glyph will cause an assertion error, intentionally.

@ctrlcctrlv ctrlcctrlv added this to the 1.0 milestone Sep 12, 2020
@ctrlcctrlv ctrlcctrlv self-assigned this Sep 12, 2020
@bghryct
Copy link

bghryct commented Sep 12, 2020

spoke with @arrowtype about this issue today. Robofont handles this by having you work in either a cubic workspace or a quadratic workspace. When you work in the quadratic workspace the pen still behaves like a cubic pen. Personally this is frustrating, and I would recommend a pen ui that functions slightly differently for quadratics for example holding a hotkey and clicking to produce a desired number of off curve points. Glyphs and Fontlab both use a convert path function. To draw quadratics in those programs I usually draw a contour with a cubic pen, hotkey convert the path to quadratics and edit it from there.

I haven't been able to find an application with "native" quadratic pen. If you succeeded in making one I'd be very grateful.

@ctrlcctrlv
Copy link
Collaborator Author

@bghryct Do you know any existing implementation that does what you want? I've personally never drawn in quadratic curves (just converted cubics) so I'm kind of lost as to what would actually help those who prefer quadratic curves.

@arrowtype
Copy link

To be honest, yes this would be very cool, BUT like you, the vast majority of designers draw with Cubic curves, so to me this seems like it should be far down on the list of priorities. There are a lot of other things that are more vital to a successful font editor, like a solid API experience, a support forum, documentation, extensions, etc etc.

FWIW, I list out my must-have extensions for RoboFont in this blog post: https://arrowtype.github.io/type-blog/2020-05-01--getting-started-in-type/#getting-started-in-robofont

Until an editor had basically every one of these features (either native or via extensions), my hot take is that it wouldn’t matter whether it had a native quadratic pen experience. But, others would obviously have different opinions.

@arrowtype
Copy link

This is a good description of how quadratics are handled in RoboFont:

https://robofont.com/documentation/how-tos/drawing-with-quadratic-curves/

@arrowtype
Copy link

(By the way, this is an awesome project and I definitely don’t mean to be salty in my comments here. I would love if there were a solid, cross-platform, open-source font editor! I just think that it’s important to prioritize for the things that make a font editor useful for new & daily users, before adding specialty features.)

@bghryct
Copy link

bghryct commented Sep 12, 2020

@ctrlcctrlv I think just the ability to convert back and forth is nice and would put Qglif on par with existing editors. I don't think there is an example pen that draws natively in quadratics. Everything else assumes you want to draw in cubic and then convert and edit if you want from there. Except for the Robofont example I mentioned, but speaking with @arrowtype who draws in Robofont more than I do, He said that it still has the ui "feel" of drawing with cubics, but getting the 'same' curve is sometimes a bit tricky as off curve points don't necessarily go where you're used to placing them.

So for me personally, the ideal quadratic pen would work in a similar way to the cubic pen but with more control over the additional off-curve point placement. This might be something that's much easier to explain visually in a quick video call at some point. It's also difficult to put into words the specific intangibles related to how one "feels" when drawing with different ui. Thanks for taking the time to think about this.

Also 100% with @arrowtype on the level of prioritization that this should take. His list of must haves is very good.
I would add @simoncozens supertool is a game changer for drawing in glyphs, and it's open source : )

That sort of functionality and the functionality of many of the plugin must haves he mentioned fall outside the scope of this particular thread I think so I'll stop rambling.

@ctrlcctrlv
Copy link
Collaborator Author

OK. So, even though I've marked this 1.0, for me just being able to remove the assert will be enough to close this (and then open a new issue for "Think about a better quadratic pen" with a longer time scale).

For sure, though ,my 1.0 will have multiple glyph types, at the very least Spiro and Cubic as I rely on both heavily in my own fonts. B-Splines are likely to feature as well. Other more exotic curves are on the agenda for later. I want as many curve types as possible. If they are somewhat useful and convertable to cubic Bezier I'm interested.

Really, I am making the font editor I want to use. If it turns out no one agrees with my chosen priorities, well, I'll still have a font editor I enjoy using. :-)

Many of @simoncozens' supertool features have been noted by me and are on the agenda after 1.0. That's one of the main reasons this project began actually. I realized that in FontForge we can't write scripts that manipulate the UI enough to do anything really cool like supertool. I have Skia and Skia PathOps at my disposal now so this is no longer true, not by a long shot.

@ctrlcctrlv
Copy link
Collaborator Author

And you guys, @arrowtype and @bghryct , should please both read https://github.com/mfeq/mfeq/blob/master/doc/Why.md if you're trying to grok what this project is about, why I am working on it and who it is for.

Basically I'm fed up of lack of progress in both FontForge and Runebender, and I think I can make progress much faster with Skia and Skia PathOps. Let's see if I'm right, my 1.0 is scheduled for Oct 1 and I plan to be using Qglif to make a font in November. 🙉

@arrowtype
Copy link

Thanks for writing & sharing that document! It seems like you’ve got the right goals and a sensible approach. Definitely, modularity will be key, and since you’re using UFO as the font format, it will mean that there is an existing set of APIs to manipulate fonts with Python, which is super helpful for me.

Can’t wait to see where you take this!

@ctrlcctrlv
Copy link
Collaborator Author

We're quite a bit closer as of 32defa4:

😃

@skef
Copy link

skef commented Sep 15, 2020

You should play with the FontForge pen tool in a quadratic layer. It behaves roughly as @davelab6 requests in fontforge/fontforge#3803 . (You may have to drag at first to get an off-curve point, but after that it interpolates whether or not you drag.)

@ctrlcctrlv ctrlcctrlv added the enhancement New feature or request label Jan 6, 2022
@davelab6
Copy link

Kindly, I believe this is of low priority. I think it matters a lot for making complex yet highest quality variable fonts, especially with HOI, but since the vast majority of font developers have years of habits with cubics, and don't care much for creating complex yet highest quality variable fonts, it is not very important.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

6 participants