Warum beim Entwerfen von Schriftarten Extrempunkte hinzufügen?

9

Es ist anscheinend wichtig, beim Entwerfen der Glyphen einer Schriftart Ankerpunkte am horizontalen und vertikalen Ende Ihrer Pfade hinzuzufügen. Die meisten Schrifteditoren haben Funktionen, um diese für Sie hinzuzufügen, und geben Ihnen eine Fehlermeldung, wenn Sie sie weglassen.

Aber manchmal ist es einfacher und natürlicher, solche Pfade zu zeichnen:

Geben Sie hier die Bildbeschreibung ein

Beachten Sie die unterschiedlichen Winkel und das Fehlen von Punkten an den meisten Extrema.

Das Folgende ist ein besserer Weg, aber wenn Sie mit so etwas wie dem ersten Bild beginnen, bedeutet dies einen zusätzlichen Schritt im Prozess (manchmal muss das Original zurückverfolgt werden):

Geben Sie hier die Bildbeschreibung ein

Warum müssen wir überhaupt Extrema-Punkte hinzufügen und welche praktischen Probleme werde ich haben, wenn ich es nicht tue?

Cai
quelle

Antworten:

7

Wie bereits erwähnt, werden Extrema für das Rendern von Schriftarten und insbesondere für Hinweise benötigt.

Um dies zu verstehen, schauen wir uns zunächst an, was ungefähr passiert, wenn eine Glyphe mit Extrema als Anker (grün) in einem regulären Pixelraster automatisch angezeigt wird¹: Damit eine Schrift schön und klar aussieht, sollten vertikale und horizontale Striche genau in das Pixelraster fallen. Ein willkürlich platziertes Glyphen² erfüllt dieses Kriterium normalerweise nicht, und daher verzerrt der Renderer es leicht zu diesem Zweck, nämlich durch Verschieben der Extrema, da sie die vertikalen und horizontalen Striche definieren:

Illustration des entscheidenden Teils des Andeutungsprozesses

Dieser Prozess erfordert eine Vermutung durch den Renderer, weshalb der Designer eine Reihe von Dingen definieren kann (markierte Stämme, blaue Werte), die den Renderer bei diesem Prozess unterstützen. Beachten Sie, dass dies nur einer der ersten Schritte ist und danach viel los ist, worüber wir uns bei dieser Frage nicht kümmern müssen.

Nehmen wir zunächst an, wir hätten nicht nur Extrema verwendet, um die Glyphe zu definieren, sondern auch einige diagonale Anker dazwischen. Dann müssten diese Anker schrittweise verschoben werden, wenn die Extrema verschoben werden, was wiederum Rätselraten erfordert. Im Gegensatz zum Verschieben der Extrema kann der Schriftdesigner aufgrund der Komplexität der Situation jedoch nicht viel tun, um dies zu unterstützen. Das Verschieben dieser überschüssigen Anker ist daher eine erhebliche Fehlerquelle, insbesondere wenn sich die Anker in der Nähe der Extrema befinden.

Schließlich können wir auf die Frage zurückkommen und überlegen, was passiert, wenn wir keine Anker an den Extrema definieren. In diesem Fall muss der Renderer die Extrema automatisch bestimmen (was leicht möglich ist), bevor er sie und alle anderen Anker mit sich bewegt. Da das, was Sie natürlich als Anker wählen würden, für viele Arten von Schriften nahe am Extrem liegt, besteht aus den oben genannten Gründen die Gefahr von Vermutungen.

Um das Obige etwas zusammenzufassen: Extrema spielt beim Rendern sowieso eine entscheidende Rolle und daher ist es besser, wenn Ihre Glyphe darauf aufgebaut ist, damit der Renderer nicht raten muss.

Zitate

Aus dem Patent US 7068276 B2 - Verfahren und Systeme zum Hinweis auf Schriftarten :

Der nachstehend beschriebene algorithmische Ansatz versucht, explizite Kurvenknoten unter Verwendung von Merkmalen wie Konturrichtung und Vorhandensein von Extrema abzugleichen.

Aus FontForges Wiki zum Hinweis :

Konturen müssen die richtige Richtung haben, sonst wird das Einrasten in blaue Zonen beeinträchtigt. Je weniger Punkte die (genaue) Form bilden, desto besser. Mit H / V-Stielen angedeutete Kurven sollten jedoch Punkte an den Extrema aufweisen, da sie sonst nicht gerissen werden. Es ist nicht relevant, wenn ein solcher Punkt "implizit" ist.


¹ Bei Subpixel-Hinweisen
ist es nicht viel anders. ² Dies ist eine umfassende Vereinfachung, da die Platzierung von Glyphen mit Hinweisen komplizierter ist. aber es reicht für dieses Beispiel

Wrzlprmft
quelle
3

Hier sind drei Gründe, warum "Punkte in Extrema" die bevorzugte Methode beim Arbeiten mit Bezierkurven ist. Insbesondere bei der Arbeit an Schriftzügen habe ich gesehen, dass dies als wesentlich beschrieben wird :

  1. Es verbessert (stark) Autohinting und PostScript-Interpretation . In der Tat ist das Setzen von Punkten auf Extrema einer der ersten Schritte beim Einrichten manueller Hinweise.
  2. Form später viel einfacher zu bearbeiten . Das spätere Bearbeiten der Kurven ist mit extremen Punkten viel einfacher. Das Verschieben von Punkten in Extrema neigt dazu, die Kurven mit minimalem zusätzlichen Aufwand hübsch zu halten.
  3. Insgesamt weniger Punkte . Extremum-Punkte erzielen in der Regel dieselben Formen mit weniger zusätzlichen Punkten ... was auch zu kleineren Dateigrößen führt.

Aus diesen Gründen verfügen viele Designprogramme für Schriftartensoftware über Werkzeuge zum Hervorheben und Fixieren von Punkten, die nicht bei Maxima und Minima (den Extrema) liegen.

Wenn ich das alles sage, habe ich lange daran gearbeitet, alle meine Punkte auf das Äußerste zu setzen, und es ist mir nie ganz gelungen, aber ich betrachte mich nicht als Bezier Ninja!

mayersdesign
quelle
Ich bekomme den Hinweis, obwohl ich beim Lesen der Spezifikationen glaube, dass es sich um ein symmetrisches Rundungsproblem handelt. In nicht verwandten Nachrichten sollte man Wendepunkte vermeiden. Allerdings bekomme ich die 2 anderen Gründe nicht. Sie werden aber trotzdem oft zitiert. Wenn dies zutrifft, haben gedrehte Elemente unterschiedliche optimale Beziergriffe, was angesichts der Konstanz des Objekts bei allen Ausrichtungen nicht wahr erscheint. Diese Punkte sind also wirklich Fehler in den Autorenwerkzeugen und / oder Fehler im menschlichen Gehirn.
Joojaa
Wenn Sie sich für 2 und 3 entscheiden, verwenden Sie lieber Wendepunkte und möglicherweise Punkte mit der höchsten Krümmung (siehe meine Antwort ). (CC @joojaa)
Wrzlprmft
@Wrzlprmft Ja, dem stimme ich zu, da Wendepunkte global zur Form sind. Auch Font-Engines mögen keine Kurven, die sich spiegeln, so dass 2 Vögel gleichzeitig getötet werden.
Joojaa