opened
dpk
username_0
Need:

* A version of f with a shorter hook for use in German (and probably Dutch, etc). E.g. in the word Auflage, because of the morpheme boundary (Auf|lage), it is technically wrong to use an fl ligature, and an f with a shorter hook should come before the l instead. Also for combinations like få, fä, fü, the umlaut can be uncomfortably close to the hook of the f (or just collide with it) and a ligature for those combinations is probably the wrong thing to do. Then we’ll also need a version of ff ending in the short hooked version (Stoff|farbe, Schiff|bau), but no fff, thankfully, as there’s always a morpheme boundary there.
* fh, fb (halfback), etc with the crossbar connecting to the following character like in fl … then also ffh (offhand), ffb (offbeat).
* An fj ligature would be nice to have, for better support of languages where that’s a common combination (and loanwords in English like fjord).

But I’ll need to get comfortable with glyph editing to add these.

EB Garamond has a comprehensive set, including feature files that handle language specific rules in some detail.
More and better ligatures
issue
created
dpk
username_0
As an example for what the f with shorter hook might look like:

```xml
<?xml version="1.0"?>
<glyph name="f.deu" format="1">
  <advance width="321"/>
  <unicode hex="0066"/>
  <outline>
    <contour>
      <point x="324" y="680" type="line" smooth="yes"/>
      <point x="320.754" y="660.562"/>
      <point x="321" y="650"/>
      <point x="305" y="649" type="curve" smooth="yes"/>
      <point x="286.011" y="647.813"/>
      <point x="278" y="670"/>
      <point x="263" y="670" type="curve" smooth="yes"/>
      <point x="226.654" y="670"/>
      <point x="204" y="627"/>
      <point x="191" y="605" type="curve" smooth="yes"/>
      <point x="180.762" y="587.674"/>
      <point x="175.333" y="550.005"/>
      <point x="176" y="504" type="curve" smooth="yes"/>
      <point x="177" y="435" type="line" smooth="yes"/>
      <point x="177" y="424"/>
      <point x="178" y="415"/>
      <point x="192" y="415" type="curve" smooth="yes"/>
      <point x="266" y="415" type="line" smooth="yes"/>
      <point x="271" y="415"/>
      <point x="279" y="411"/>
      <point x="280" y="406" type="curve" smooth="yes"/>
      <point x="281" y="405"/>
      <point x="287" y="361"/>
      <point x="287" y="361" type="curve" smooth="yes"/>
      <point x="286" y="356"/>
      <point x="283" y="353"/>
      <point x="275" y="353" type="curve" smooth="yes"/>
      <point x="190" y="354" type="line" smooth="yes"/>
      <point x="182" y="354"/>
      <point x="177" y="345"/>
      <point x="177" y="341" type="curve" smooth="yes"/>
      <point x="177" y="128" type="line" smooth="yes"/>
      <point x="177" y="33"/>
      <point x="181" y="33"/>
      <point x="246" y="34" type="curve" smooth="yes"/>
      <point x="258" y="34"/>
      <point x="270" y="35"/>
      <point x="280" y="34" type="curve" smooth="yes"/>
      <point x="291" y="33"/>
      <point x="292" y="24"/>
      <point x="293" y="13" type="curve" smooth="yes"/>
      <point x="293" y="5"/>
      <point x="289" y="-3"/>
      <point x="284" y="-3" type="curve" smooth="yes"/>
      <point x="220" y="-1"/>
      <point x="94" y="0"/>
      <point x="32" y="-3" type="curve" smooth="yes"/>
      <point x="26" y="-3"/>
      <point x="24" y="6"/>
      <point x="24" y="13" type="curve" smooth="yes"/>
      <point x="24" y="16"/>
      <point x="24" y="21"/>
      <point x="26" y="24" type="curve" smooth="yes"/>
      <point x="29" y="32"/>
      <point x="37" y="31"/>
      <point x="44" y="31" type="curve" smooth="yes"/>
      <point x="93" y="31"/>
      <point x="97" y="51"/>
      <point x="97" y="132" type="curve" smooth="yes"/>
      <point x="97" y="340" type="line" smooth="yes"/>
      <point x="95" y="351"/>
      <point x="91" y="355"/>
      <point x="85" y="356" type="curve" smooth="yes"/>
      <point x="22" y="356" type="line" smooth="yes"/>
      <point x="15" y="356"/>
      <point x="16" y="382"/>
      <point x="22" y="386" type="curve" smooth="yes"/>
      <point x="53" y="393"/>
      <point x="76" y="401"/>
      <point x="97" y="413" type="curve"/>
      <point x="97" y="436"/>
      <point x="97.685" y="442.015"/>
      <point x="99" y="467" type="curve" smooth="yes"/>
      <point x="103" y="543"/>
      <point x="118.798" y="596.267"/>
      <point x="173" y="656" type="curve" smooth="yes"/>
      <point x="222" y="710"/>
      <point x="267" y="726"/>
      <point x="295" y="726" type="curve" smooth="yes"/>
      <point x="298" y="726"/>
      <point x="318.667" y="725.222"/>
      <point x="321" y="719" type="curve" smooth="yes"/>
      <point x="324" y="711"/>
    </contour>
  </outline>
</glyph>
```

But this is just a draft glyph drawn up by someone who knows very little about font editing. But it doesn’t collide with l (Auflage) or b (Laufband), for instance
comment
created
dpk
username_0
fj will probably make it into 2.0 — I just designed it (and dcroat) in all weights and styles 🎉
comment
created
dpk
username_0
[The specimen from the SB Berlin](https://tw.staatsbibliothek-berlin.de/ma10568) appears to include a shorter-hooked f to use as a basis for the design.
comment