New algorithm: Italify – optically corrected obliques

2»

Comments

  • Thomas Phinney
    Thomas Phinney Posts: 3,125
    Just to clarify: inflection points are only a problem for outline interpolation if both the angle, and the relative proportions of the distance of the off-curve points, changes.

    In neither of the models being discussed will this usually be a problem. If the points are vertical, then the angle is constant. In Sebastian’s model — unless I greatly misunderstand! — then those formerly vertical points are now at the italic angle, but consistently so.

    The only time Sebastian’s model would become a problem in this sense would be if one were doing a variable font and it had a continuous axis for italic or slope.
  • SCarewe
    SCarewe Posts: 44
    edited March 31
    @Typedesigner

    You are just repeating yourself. Yes, we know that nodes on extremes are a good practice, for a multitude of reasons.

    However, as explained, these reasons are not necessarily applicable in slanted fonts. Or do you have a concrete, objective reason why they should be technically necessary in slanted fonts?
  • Simon Cozens
    Simon Cozens Posts: 828
    I agree with Sebastian. "This is bad because stuff breaks" is dogma that may change over time as "stuff" evolves. "Specific application X version Y has obvious rendering failure Z if you don't put nodes at extremes" is testable.
  • SCarewe
    SCarewe Posts: 44
    edited March 31
    Sorry Thomas and John, I didn't see your comments. I was replying to "Typedesigner". Thanks for your input!

    Matt's tool indeed has a slightly different approach, but the same core idea, from what I gathered when talking to him.

    Thomas: Yes, the consistency is what I'm trying to achieve as much as possible. That's why keeping the nodes on slanted extremes makes the most sense; It keeps everything as consistent as possible from a mathematical point of view and prepares the outlines best for interpolation and related operations afterwards.

    By the way, since you mention a continuous slant axis: Slanted extremes are actually much better here. See this thread on the Glyphs forum, specifically this post.
  • Typedesigner
    Typedesigner Posts: 101
    edited March 31
    @SCarewe

    You’ve made your point clear several times. Whether or not you create a script that doesn’t generate extreme points in italic fonts is up to you. However, you wrote that your script isn’t finished yet, and that you don't know if you'll make it available to FontLab 8 users. This is why the whole discussion feels very theoretical to me.

    If you do decide to release your script to FontLab 8 users, we'll be able to test it in practice. In principle, I think the idea of a script that corrects italic slant is a good one. However, the next version of FontLab may offer this feature, rendering third-party scripts unnecessary. 
  • Nick Shinn
    Nick Shinn Posts: 2,341
    edited March 31
    There is also the question of whether missing extrema points will be “flagged” by apps as a problem (even if it’s not), which can put the wind up font users.
  • Thomas Phinney
    Thomas Phinney Posts: 3,125
    I should add that my degree of focus on variable fonts definitely informs my thinking.
    SCarewe said:

    Thomas: Yes, the consistency is what I'm trying to achieve as much as possible. That's why keeping the nodes on slanted extremes makes the most sense; It keeps everything as consistent as possible from a mathematical point of view…
    I simply disagree; you are ignoring the fact that one can have a different idea of what is “consistent.” (I am not claiming your approach is inconsistent; rather that there are different kinds of consistency.)
    and prepares the outlines best for interpolation and related operations afterwards.
    By the way, since you mention a continuous slant axis: Slanted extremes are actually much better here. See this thread on the Glyphs forum, specifically this post.
    I disagree with the first point, and I think the example is not very good. The example from the Glyphs App forum is pretty simple because all it does is slant. So it isn’t hard to maintain the ratio of BCP distances on the node that slants. Are you familiar with this requirement, to avoid kinking, in these situations? It is not only about italics; it is why one is better off minimizing use of slanted control points on smooth curves in variable fonts — especially ones with more than two or three masters. (By “minimize” I do not mean “never do”—just choose your uses carefully.)

    Have you actually tried doing a variable font with a continuous italic axis, and say weight and width axes as well? Your approach is possible, but avoiding kinks while doing it would be considerably more difficult.

    This is literally the #1 thing I explored in my Master’s thesis. So I am genuinely more than a little familiar with it, and my analysis was vetted by experts (notably external thesis adviser Tom Rickner, who led development of the first TrueType fonts, and created some of the first GX Variations and MM fonts).
  • Thomas Phinney
    Thomas Phinney Posts: 3,125
    edited April 1
    Also, did you read the whole thread associated with that post? Rainer quite correctly explains why slanting the control points differently on one master is potentially risky — and how to avoid problems while doing so.
  • SCarewe
    SCarewe Posts: 44
    edited April 1
    Thanks for the extra details, Thomas! I wasn't aware of this. Is there any way I could read your master's thesis (or the excerpts dealing with this topic)? In the projects I have worked on, the slanted extremes have always worked better, but you're prompting me to check again.

    Yes, I am of course aware of kinks and what causes them. However, I've found that maintaining handle ratios is fairly easy when using slanted extremes, so I've not run into this issue. I would intuitively think that my algorithm maintains the handle ratios. I will, however, investigate again.
  • Thomas Phinney
    Thomas Phinney Posts: 3,125
    The last font I shipped had a continuous slant axis, so yeah, it was on my mind.

    And probably 90% of my recent and future work will be variable-centric.

    I was as confused as you by why some of your stuff got marked as off topic. I mean, I might sometimes disagree with something you write, but it sure isn’t off topic!
  • Typedesigner
    Typedesigner Posts: 101
    edited April 2

    I disagree with the first point, and I think the example is not very good. The example from the Glyphs App forum is pretty simple because all it does is slant. So it isn’t hard to maintain the ratio of BCP distances on the node that slants. Are you familiar with this requirement, to avoid kinking, in these situations? It is not only about italics; it is why one is better off minimizing use of slanted control points on smooth curves in variable fonts — especially ones with more than two or three masters. (By “minimize” I do not mean “never do”—just choose your uses carefully.)
    Exactly, that's what I think, too.
  • SCarewe
    SCarewe Posts: 44
    edited April 2
    Edit: "Typedesigner", why are you editing your posts to say completely different things? The text below is a response to what you wrote before, which you've now repeated again after my post.

    --

    Both are difficult to say. It's in very active development. Currently it's at a stage where I can use it reasonably, with guidance and manual intervention for certain unsolved cases. That's part of the reason I'm only offering it as a service, the other is that that gives me opportunity to test the algorithm on as many cases as possible and to improve it accordingly. For a quote and more details, just get in touch, ideally with a specific project.

    I hope to have a publicly available plugin published by the end of the year, but that's very optimistic. In terms of pricing, I am thinking of a 150€ one-time purchase. Any input on this would be most welcome.
  • Typedesigner
    Typedesigner Posts: 101
    edited April 2
    When do you plan to finish your script, and how much will it cost?
  • Typedesigner
    Typedesigner Posts: 101
    edited April 2
    SCarewe said:
    Both are difficult to say. It's in very active development. Currently it's at a stage where I can use it reasonably, with guidance and manual intervention for certain unsolved cases. That's part of the reason I'm only offering it as a service, the other is that that gives me opportunity to test the algorithm on as many cases as possible and to improve it accordingly. For a quote and more details, just get in touch, ideally with a specific project.

    I hope to have a publicly available plugin published by the end of the year, but that's very optimistic. In terms of pricing, I am thinking of a 150€ one-time purchase. Any input on this would be most welcome.

    Could you please explain how your script differs from the cursivizing feature in the Glyphs app?
    https://glyphsapp.com/learn/easy-oblique
  • SCarewe
    SCarewe Posts: 44
    Cursivy relies on stem info and guessing what contours constitute a stem.
    Italify doesn't do any guesswork or rely on heuristics for curve correction. That's the main advantage. Italify relies strictly on geometry and not on stems.

    I personally really dislike Cursivy's results. You can check out Inter's atrocious italics for an example (compare the bowls of bdpq, a, g, o, etc.)

    Roboto's italics are generated with a similar approach and exhibit similar problems. There are links to all these examples on the Italify website.
  • Typedesigner
    Typedesigner Posts: 101
    Thank you for this information. Could you explain how your script differs from Briem's notes, particularly regarding curve compensation, which requires extreme points for italics?
  • SCarewe
    SCarewe Posts: 44
    edited April 2
    For obvious reasons, I can't explain how exactly my algorithm works. What I can say, in contrast to Karow's/Briem's "algorithm", is that my approach doesn't rely on rotation at all.

    I can highlight some of the consequences, though: Italify is overlap-agnostic, and corrects curves with intermediate points between the extremes (or even curves without extremes).

    All this is illustrated on the website.