Ikarus auto italic

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

  • 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: 57
    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. 


  • 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: 246
    edited June 6
    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,186
    Briem’s method is programmatic, so also potentially something that could be implemented as an algorithm in font tools.
  • jeremy tribby
    jeremy tribby Posts: 246
    edited June 6
    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,883
    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: 57
    i will check what mac OS works for ikarus. i am out of office. 
  • 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,429
    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: 246
    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: 246
    edited June 8
    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

  • 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,186
    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: 645
    edited June 8
    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: 246
    edited June 8
    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: 246
    edited June 8
    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,186
    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: 246
    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 :)
  • donat raetzo
    donat raetzo Posts: 57
    do you happen to know what the last version macOS is to support Ikarus? I would guess somewhere between 7 and 9?


    (i can't edit/write outside this quote, sorry)

    IIRC i had a Mac Quadra 700 with a 68’000 chip running Ikarus-M, probably OS 7? the latest Ikarus-M i know of was for Mac PowerPC, OS 9, which can be run in classic mode up to OSX 10.4.11, with issues (messed up metrics).

  • jeremy tribby
    jeremy tribby Posts: 246
    edited June 19
    I have tried Italify; it is based on slanting by X% and rotating by Y% but it fails on a bunch of shapes while trying to maintain path compatibility. That is a pretty annoying problem to solve; it's pretty niche too, as it's very few letters I would want to slant and rotate as a basis for the italic; mostly very round ones. it is one of five strategies I am aware of that could be implemented in Glyphs
    @donat raetzo  thank you! I have an old Power Mac 8500 in storage and am tempted to go look for it and see if it boots, although who knows if I have a compatible monitor even if it does. I'm trying to get Basilisk II to run on my Macbook with Apple Silicon (seems like support was added to Basilisk in February) but not having luck so far. then there would be the problem of actually obtaining Ikarus, but lets see if I can get an environment running first...