Ikarus auto italic

Options
This has been on my mind since connor davenport mentioned peter karow having an auto italic on typo.social. I had become aware of this after seeing victor gaultney's research on italics; he mentions talking to @James Montalbano about Ikarus-M (is that Ikarus Macintosh?) having an auto italic:

Montalbano (2017) reports that the IKARUS-M system for digital
design had a very effective italic correction feature that would
change the weight distribution of the outline before sloping. This
minimized stroke weight distortions and reduced the amount of
later manual adjustment required.

but I hadn't made the mental connection to karow when I first read that. the wikipedia entry for peter karow shows this image which was uploaded by volker schnebel:

undefined

does anyone have insight into this, or experience with it? was anything ever published? are there examples of fonts that were made with it? if karow came up with it, it must be very good. I have been attempting this kind thing myself, and it's pretty hard to generalize, though I do have some ideas and discarded prototypes. I don't think any auto-italic will get 100% of fonts 100% of the way there, but I think you could get a sans pretty close

Comments

  • James Montalbano
    Options
    It has been years since I used IkarusM, but IIRC the command was "Italic Balance" and as stated above was applied before the slant. I've often wondered why, with the many talented developers in the digital type world, that this feature had not made an appearance in more recent apps.
  • donat raetzo
    donat raetzo Posts: 55
    Options
    hi jeremy, 

    all my old fonts obliques and italics are done with ikarus kursivausgleich (german, cursive compensation). ikarus-M runs on old mac computers. ikarus works with its own IK-format (you need to convert your Type 1 font). i only work with mac-OS western-latin 1 character set for this – not sure whether ikaurs-M does work with other layouts. i suspect the IK-format is the reason why cursive compensation works so well. cursive compensation is controlled with a stem width value that you enter. this depends on the slant-degree you want.

    i my opinion you are right: results are not allways 100% finished italics, it will need some minor editing (often at the terminals). 

    i can't wait for a modern font editor doing this in this quality. i do not have any documentation. ikarus slants 250 glyphs in two seconds. 


  • LeMo aka PatternMan aka Frank E Blokland
    Options
    I will discuss whether we can implement the corrected ‘Italicizing’ as Dr. Karow himself describes it in Digital Typography & Artificial Intelligence (page 22), in DTL FoundryMaster, which we still plan to release for the end-user market.
  • jeremy tribby
    jeremy tribby Posts: 233
    edited June 6
    Options
    It has been years since I used IkarusM, but IIRC the command was "Italic Balance" and as stated above was applied before the slant
    interesting. gaultney described a manual version of this method as used by, IIRC, luc(as) de groot. I believe automating it would would rely on identifying counters and adjusting them in the opposite direction of the exterior of the shape
    karus-M runs on old mac computers. ikarus works with its own IK-format (you need to convert your Type 1 font). i only work with mac-OS western-latin 1 character set for this – not sure whether ikaurs-M does work with other layouts. i suspect the IK-format is the reason why cursive compensation works so well. cursive compensation is controlled with a stem width value that you enter. this depends on the slant-degree you want.
    I agree with you that the format probably plays a large part in it, based on what I know of Ikarus. at the same time, I think you could roughly calculate some of that extra information about curvature to to help assess what needs to be done, using a cubic bezier alone. do you happen to know what the last version macOS is to support Ikarus? I would guess somewhere between 7 and 9? I would love to use Ikarus, for fun more than anything. I look forward to taking a closer look at your fonts!
    I will discuss whether we can implement the corrected ‘Italicizing’ as Dr. Karow himself describes it in Digital Typography & Artificial Intelligence (page 22), in DTL FoundryMaster, which we still plan to release for the end-user market.
    I follow the development of FoundryMaster with great interest. features just like this one could be useful even for those whose workflow generally happens in other software
  • John Hudson
    John Hudson Posts: 3,034
    Options
    Briem’s method is programmatic, so also potentially something that could be implemented as an algorithm in font tools.
  • jeremy tribby
    jeremy tribby Posts: 233
    edited June 6
    Options
    Briem’s method is programmatic, so also potentially something that could be implemented as an algorithm in font tools.
    I have implemented this in a Glyphs script but haven't published it yet as there are a few tricky edge cases it is failing on, but I should have something to share soon. ultimately, though, I'd like to have a few options for how to modulate the curves as the Briem method isn't always ideal; I'm imagining a minimal vanilla UI. something that moves points around prior to slanting seems like an avenue worth investigating
  • Thomas Phinney
    Thomas Phinney Posts: 2,785
    Options
    I have long relied on Briem’s approach for most normal fonts. It has worked well for me as a starting point, usually gets me very close.
  • donat raetzo
    donat raetzo Posts: 55
    Options
    i will check what mac OS works for ikarus. i am out of office. 
  • LeMo aka PatternMan aka Frank E Blokland
    Options
    Just for the record: as for which version of IKARUS is running on a Mac, here in the DTL studio and at HQ we can still run Ikarus M in combination with Aristo A3 digitizers / lens cursors on two Power Macintosh G3 Desktop (Gossamer) machines (incorporated in the network) under Mac OS 9, and under SheepShaver on several newer Macs. On the Gossamer machines we also run the Mac OS version of the DTL FontMaster (FM) suite, which includes IkarusMaster. Additionally, we run the Windows version of FM under Wine(Skin) on multiple Macs, including Apple-silicon ones. Together with a few Wacom tablets / lens cursors, we run FM under Parallels Desktop (Intel). DTL FoundryMaster (including a new native Apple-silicon version), which fully supports the IKARUS format, runs on any more recent macOS. Finally, we have the UNIX-based, quite comprehensive, IKARUS V6 set of command tools and applications that run on any Mac. In addition, we have IKARUS-based editions, including even Ikarus D, that run on a number of native PCs. Hopefully I haven’t forgotten anything in this list.
  • Dave Crossland
    Dave Crossland Posts: 1,401
    Options
    The v1 era of Roboto was made in a "one man band" style by Christian Robertson, who did everything himself, assisting himself with a lot of scripts – one of which was an auto italic. 

    https://github.com/googlefonts/roboto/blob/main/scripts/lib/fontbuild/italics.py



  • jeremy tribby
    jeremy tribby Posts: 233
    Options
    that is great stuff; it looks like he's getting away from beziers and then reconstructing them entirely. I don't think there's any other auto italic approach like this in the commons, nice one dave
  • jeremy tribby
    jeremy tribby Posts: 233
    edited June 8
    Options
    revisited gaultney and it looks de groot's method adjusts after slanting:
    A different approach is advocated by Famira (2017), based on specific point
    movements and no rotation (Figure 4.85). Famira claims that this works as
    well as slope and rotate techniques. The steps, learned from de Groot, are to:
    • Slope the shape the full amount
    • Move the top point of the curve 5 units to the left
    • Move the right point of the curve 5 units down and 3 to the left
    • Apply corresponding changes to the bottom and left curves
    • Add extreme points
    maybe it was mário feliciano who described the method of moving them prior to slanting, a few years back, though I'm having trouble finding it now
    In any case, here's a quick test of what I suspect might be going on with the karow method. I moved the outer nodes by 10 units and the counters by 3, and then slant by 10 degrees. those values were in truth an arbitrary decision and the first numbers I tried

    perhaps that is the reason it ikarus needed stem width — I assume the fatter the letter, the more you'd need to move the outer nodes, and the less you'd need to move the counter nodes. the next step would be adding extremes, so the vertical strokes have straight off-curve points, which makes it a lot easier to fix up the shapes. "o" is a forgiving letter in the world of automatic/procedural italics, but for a first pass, just picking some random numbers, and slanting, this worked surprisingly well, I think
    edit: hmm did the GIF not work? here is a link if not https://imgur.com/a/BjCpfTs

  • James Montalbano
    Options
    I remember Ed Benguiat sharing his Photo-Mechanical technique for creating italics. For a 10° italic rotate 5° and then slant 5°. This was all done with film and a process camera.
  • John Hudson
    John Hudson Posts: 3,034
    Options
    Tim Ahren’s RMX Slanter should probably be mentioned here, in the general context of slant+correction techniques. I never find the curve correction to be adequate in terms of final results, but it is my preferred first-step slanter because it gets a bit further than an unadjusted mechanical slant.
  • George Thomas
    George Thomas Posts: 638
    edited June 8
    Options
    I asked Rainer at Glyphs about Robertson's script; this is his reply:
    "The same algorithm is implemented already as ‘Cursivy’ (spelt ‘Cursify’ in some versions) in Path > Transformations. It requires h + v stems set properly in Font Info > Masters."

  • jeremy tribby
    jeremy tribby Posts: 233
    edited June 8
    Options
    Tim Ahren’s RMX Slanter should probably be mentioned here, in the general context of slant+correction techniques. I never find the curve correction to be adequate in terms of final results, but it is my preferred first-step slanter because it gets a bit further than an unadjusted mechanical slant.
    if the RMX slanter does curve correction, it’s very subtle! I thought it mostly did its best to maintain the existing curves while adding points at extrema (and removing points that may have become unnecessary in the process). which I agree is a great place to start adjusting manually. I wouldn’t be surprised if it did some harmonization too
    I asked Rainer at Glyphs about Robertson's script; this is his reply:
    "The same algorithm is implemented already as ‘Cursivy’ (spelt ‘Cursify’ in some versions) in Path > Transformations. It requires h + v stems set properly in Font Info > Masters."
    aha. personally I have found “cursivy” to require too much manual adjustment afterward to be useful, but there is probably a style of font it works well on that I haven’t tried.. 

    I think any of these methods will require some manual adjustments, so there’s probably an element of personal preference where it comes to what state the curves are in before making those adjustments

    one thing I assume is true of karow’s method is that your paths already need to be drawn well for it to work. if it moves nodes prior to slanting, those nodes have to be there to begin with..
  • jeremy tribby
    jeremy tribby Posts: 233
    edited June 8
    Options
    I remember Ed Benguiat sharing his Photo-Mechanical technique for creating italics. For a 10° italic rotate 5° and then slant 5°. This was all done with film and a process camera.
    that method works particularly well on very round letters like /o and /s (even moreso with a photo process where you wouldn’t have to correct extreme points etc) but it gets tricky on letters with stems that are suddenly at an angle to the baseline from the rotation

    there is a similar method I have seen described by charles dix, which is to rotate the full 10 degrees, slant 10, then rotate back 10 degrees. it distorts the outline in the process, making it narrower and taller, but the curves  on round letters do look better than simply slanting by 10

    I am going to keep hacking away at my briem script, but I really think karow’s method is very clever, whatever it is exactly. the more I try what I know about it as a manual process (adjusting points before slanting), the more I want to try the real thing. thanks, james, for mentioning that detail about the order in which it slants and moves points
  • John Hudson
    John Hudson Posts: 3,034
    Options
    If the RMX slanter does curve correction, it’s very subtle
    Yes. I think it was perhaps less subtle in the earlier version of RMX tools for FontLab Studio 5, but even then it definitely wasn’t very aggressive.
  • jeremy tribby
    jeremy tribby Posts: 233
    Options
    It turns out Cursify in Glyphs may be a lot closer to Dr Karow's work than I had thought. I still haven't looked at that Roboto script in depth and wonder if it did all of these things, given that Rainer said to George Thomas that Cursify is the same. I found some useful undocumented methods in the Glyphs API

    You can slant:

    slantX_origin_doCorrection_checkSelection_(arg0, arg1, arg2, arg3)
    slantX_origin_correctContrast_correctShape_correctThickness_checkSelection_(arg0, arg1, arg2, arg3, arg4, arg5)

    But you can also perform the operation that happens prior to slanting:

    doSlantingCorrectionWithAngle_checkSelection_(arg0, arg1)
    doSlantingCorrectionWithAngle_correctContrast_correctShape_correctThickness_checkSelection_(arg0, arg1, arg2, arg3, arg4)
    doSlantingCorrectionWithAngle_checkSelection_correctContrast_correctShape_correctThickness_horizontalStem_verticalStem_center_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7)

    Correct contrast, correct shape, correct thickness are all true/false options in those method names. It can take stem width or (presumably) it can infer it with the other functions. Some options are better suited to some designs, for example "correct contrast" will make a monolinear sans look awful but performs quite well on a Times-looking design.


    Baseline:


    How it modifies it prior to slanting with "correct contrast" (better for higher contrast)


    How it modifies it prior to slanting without "correct contrast":


    I can see now that the plugin I am working on, with many different transformation options, needs more parameters for Cursify :)