Recursive: Inkonsistente Grundlinie von Rec Mono-Schriftarten zwischen normal und kursiv/fett in Sublime Text unter Windows 10

Erstellt am 3. Nov. 2020  ·  11Kommentare  ·  Quelle: arrowtype/recursive

Problembeschreibung

In Sublime Text 3.2.2 sind die kursiven und fetten Versionen der „Rec Mono“-Schriften (Ordner Recursive_Code, Version 1.066) im Vergleich zur regulären Schriftversion deutlich nach unten verschoben. Dies geschieht bei allen Schriftgrößen. Gleiches gilt für benutzerdefinierte Schriftarten, die über https://github.com/arrowtype/recursive-code-config (Version 1.065) generiert werden. Das Problem tritt in VS Code oder Atom mit denselben Schriftartdateien nicht auf. Auch die vorgenerierten statischen Versionen (Recursive_Desktop-Ordner) haben dieses Problem in Sublime Text nicht, aber sie scheinen größere Diskrepanzen zwischen öffnenden und schließenden Klammern bei bestimmten Schriftgrößen zu haben als die "Rec Mono"-Versionen (#297).

Screenshots

Beispiel mit "Reg Mono Linear":

screenshot

Umfeld

  • Betriebssystem: Windows 10 v2004
  • Anwendung: Erhabener Text 3.2.2
  • Schriftarten: Rec Mono-Schriften v1.066 aus dem Ordner Recursive_Code und Rec Mono Custom v1.065

Zusätzlicher Kontext

Ich bin mir nicht sicher, ob dieses Problem dasselbe ist oder mit #308 zusammenhängt.

Hilfreichster Kommentar

Ich habe gerade die neuen Schriftartendateien aus der ZIP-Datei ausprobiert und kann bestätigen, dass jetzt alles bei mir funktioniert.
Vielen Dank für die Behebung dieses Problems und für diese großartige Schriftart im Allgemeinen!

Ich denke, dieses Thema kann jetzt geschlossen werden.

Alle 11 Kommentare

Autsch, das ist eine schmerzhafte Fehlausrichtung! 😅 Vielen Dank, dass Sie sich die Zeit genommen haben, eine Ausgabe zu schreiben und einige klare Screenshots einzufügen.

Ich werde versuchen, mir das so schnell wie möglich anzusehen – ich werde überprüfen, ob die vertikalen Metriken gleich sind oder nicht und ob einige der Stile Punkte haben, die irgendwie viel höher oder niedriger sind.

Ich bin auch in einem anderen Projekt auf ein ähnliches Problem wie #297 gestoßen und habe festgestellt, dass sich öffnende und schließende Satzzeichen manchmal nur gegenseitig als Komponenten verwenden können, da Textrenderer diese Rotation aus irgendeinem Grund durcheinander bringen. Also werde ich wahrscheinlich beide Probleme gleichzeitig untersuchen (und hoffentlich beheben).

Das Problem tritt in VS Code oder Atom mit denselben Schriftartdateien nicht auf.

Ich bin mir nicht 100% sicher, ob dies das gleiche Problem ist, aber es scheint definitiv auch in VSCode zu passieren:

image
Beachten Sie, wie die Zeilen mit Kommentaren (=kursiv/gelockt) etwas tiefer als die anderen positioniert sind. Sie können sehen, wie es herumspringt, wenn es in Kursivschrift wechselt.

Es ist auch in Windows Terminal sehr offensichtlich, wenn Sie die Terminalschriftart von Regular auf Bold ändern - großer Zeilenhöhenunterschied:
image
image

Wenn ich mir das ansehe, mache ich mir ein paar Notizen.

Bemerkenswerte Unterschiede zwischen Rec Mono Duotone, Regular & Bold

Es ist bemerkenswert, dass es in den Schlüsseldateneinträgen, die vertikale Metriken für Schriftarten festlegen sollen, _keine_ Unterschiede gibt (und nicht sein sollten):

    <sTypoAscender value="950"/>
    <sTypoDescender value="-250"/>
    <sTypoLineGap value="0"/>
    <usWinAscent value="1207"/>
    <usWinDescent value="271"/>

Es scheint jedoch möglich, dass Windows-Codeumgebungen die minimalen und maximalen Y-Koordinaten betrachten und die Zeilenhöhen teilweise darauf basierend festlegen. Aus den head Tabellen:

-    <yMin value="-367"/>
-    <yMax value="1134"/>
+    <yMin value="-400"/>
+    <yMax value="1160"/>


Full Diffs für Rg/Bold, Tabellenkopf, hhea, OS/2(Zum erweitern klicken)

▶ fdiff --include head,hhea,OS/2 "fonts/ArrowType-Recursive-1.069/Recursive_Code/Duotone/RecMonoDuotone-Regular-1.069.ttf" "fonts/ArrowType-Recursive-1.069/Recursive_Code/Duotone/RecMonoDuotone-Bold-1.069.ttf"
--- fonts/ArrowType-Recursive-1.069/Recursive_Code/Duotone/RecMonoDuotone-Regular-1.069.ttf     2020-12-11T12:09:06.882925-05:00
+++ fonts/ArrowType-Recursive-1.069/Recursive_Code/Duotone/RecMonoDuotone-Bold-1.069.ttf        2020-12-11T12:09:20.501704-05:00
@@ -5,20 +5,20 @@
     <!-- Most of this table will be recalculated by the compiler -->
     <tableVersion value="1.0"/>
     <fontRevision value="1.069"/>
-    <checkSumAdjustment value="0xa107dc67"/>
+    <checkSumAdjustment value="0xabb94723"/>
     <magicNumber value="0x5f0f3cf5"/>
     <flags value="00000000 00000001"/>
     <unitsPerEm value="1000"/>
-    <created value="Fri Dec 11 17:09:05 2020"/>
-    <modified value="Fri Dec 11 17:09:06 2020"/>
-    <xMin value="-1772"/>
-    <yMin value="-367"/>
-    <xMax value="704"/>
-    <yMax value="1134"/>
-    <macStyle value="00000000 00000000"/>
+    <created value="Fri Dec 11 17:09:19 2020"/>
+    <modified value="Fri Dec 11 17:09:20 2020"/>
+    <xMin value="-1752"/>
+    <yMin value="-400"/>
+    <xMax value="690"/>
+    <yMax value="1160"/>
+    <macStyle value="00000000 00000001"/>
     <lowestRecPPEM value="6"/>
     <fontDirectionHint value="2"/>
-    <indexToLocFormat value="0"/>
+    <indexToLocFormat value="1"/>
     <glyphDataFormat value="0"/>
   </head>

@@ -28,9 +28,9 @@
     <descent value="-250"/>
     <lineGap value="0"/>
     <advanceWidthMax value="600"/>
-    <minLeftSideBearing value="-1772"/>
-    <minRightSideBearing value="-336"/>
-    <xMaxExtent value="704"/>
+    <minLeftSideBearing value="-1752"/>
+    <minRightSideBearing value="-345"/>
+    <xMaxExtent value="690"/>
     <caretSlopeRise value="1"/>
     <caretSlopeRun value="0"/>
     <caretOffset value="0"/>
@@ -47,7 +47,7 @@
          will be recalculated by the compiler -->
     <version value="4"/>
     <xAvgCharWidth value="599"/>
-    <usWeightClass value="400"/>
+    <usWeightClass value="750"/>
     <usWidthClass value="5"/>
     <fsType value="00000000 00001000"/>
     <ySubscriptXSize value="650"/>
@@ -78,7 +78,7 @@
     <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
     <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
     <achVendID value="ARRW"/>
-    <fsSelection value="00000000 11000000"/>
+    <fsSelection value="00000000 00100000"/>
     <usFirstCharIndex value="13"/>
     <usLastCharIndex value="64260"/>
     <sTypoAscender value="950"/>

Normal vs. Kursiv

In Rec Mono Duotone, Regular vs Italic ist der yMax-Wert der einzige potenziell aussagekräftige Unterschied:

-    <xMax value="704"/>
-    <yMax value="1134"/>
-    <macStyle value="00000000 00000000"/>
+    <xMax value="745"/>
+    <yMax value="1128"/>


Vollständige Diffs für Rg/Ital, Tabellenkopf,hhea,OS/2(Zum erweitern klicken)

▶ fdiff --include head,hhea,OS/2 "fonts/ArrowType-Recursive-1.069/Recursive_Code/Duotone/RecMonoDuotone-Regular-1.069.ttf" "fonts/ArrowType-Recursive-1.069/Recursive_Code/Duotone/RecMonoDuotone-Bold-1.069.ttf"
--- fonts/ArrowType-Recursive-1.069/Recursive_Code/Duotone/RecMonoDuotone-Regular-1.069.ttf     2020-12-11T12:09:06.882925-05:00
+++ fonts/ArrowType-Recursive-1.069/Recursive_Code/Duotone/RecMonoDuotone-Bold-1.069.ttf        2020-12-11T12:09:20.501704-05:00
@@ -5,20 +5,20 @@
     <!-- Most of this table will be recalculated by the compiler -->
     <tableVersion value="1.0"/>
     <fontRevision value="1.069"/>
-    <checkSumAdjustment value="0xa107dc67"/>
+    <checkSumAdjustment value="0xabb94723"/>
     <magicNumber value="0x5f0f3cf5"/>
     <flags value="00000000 00000001"/>
     <unitsPerEm value="1000"/>
-    <created value="Fri Dec 11 17:09:05 2020"/>
-    <modified value="Fri Dec 11 17:09:06 2020"/>
-    <xMin value="-1772"/>
-    <yMin value="-367"/>
-    <xMax value="704"/>
-    <yMax value="1134"/>
-    <macStyle value="00000000 00000000"/>
+    <created value="Fri Dec 11 17:09:19 2020"/>
+    <modified value="Fri Dec 11 17:09:20 2020"/>
+    <xMin value="-1752"/>
+    <yMin value="-400"/>
+    <xMax value="690"/>
+    <yMax value="1160"/>
+    <macStyle value="00000000 00000001"/>
     <lowestRecPPEM value="6"/>
     <fontDirectionHint value="2"/>
-    <indexToLocFormat value="0"/>
+    <indexToLocFormat value="1"/>
     <glyphDataFormat value="0"/>
   </head>

@@ -28,9 +28,9 @@
     <descent value="-250"/>
     <lineGap value="0"/>
     <advanceWidthMax value="600"/>
-    <minLeftSideBearing value="-1772"/>
-    <minRightSideBearing value="-336"/>
-    <xMaxExtent value="704"/>
+    <minLeftSideBearing value="-1752"/>
+    <minRightSideBearing value="-345"/>
+    <xMaxExtent value="690"/>
     <caretSlopeRise value="1"/>
     <caretSlopeRun value="0"/>
     <caretOffset value="0"/>
@@ -47,7 +47,7 @@
          will be recalculated by the compiler -->
     <version value="4"/>
     <xAvgCharWidth value="599"/>
-    <usWeightClass value="400"/>
+    <usWeightClass value="750"/>
     <usWidthClass value="5"/>
     <fsType value="00000000 00001000"/>
     <ySubscriptXSize value="650"/>
@@ -78,7 +78,7 @@
     <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
     <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
     <achVendID value="ARRW"/>
-    <fsSelection value="00000000 11000000"/>
+    <fsSelection value="00000000 00100000"/>
     <usFirstCharIndex value="13"/>
     <usLastCharIndex value="64260"/>
     <sTypoAscender value="950"/>
(venv) 
~/type-repos/recursive  add-ufo2ft-comp-filters ✗                                      13h34m ✖ ⚑  
▶ fdiff --include head,hhea,OS/2 "fonts/ArrowType-Recursive-1.069/Recursive_Code/Duotone/RecMonoDuotone-Regular-1.069.ttf" "fonts/ArrowType-Recursive-1.069/Recursive_Code/Duotone/RecMonoDuotone-Italic-1.069.ttf"
--- fonts/ArrowType-Recursive-1.069/Recursive_Code/Duotone/RecMonoDuotone-Regular-1.069.ttf     2020-12-11T12:09:06.882925-05:00
+++ fonts/ArrowType-Recursive-1.069/Recursive_Code/Duotone/RecMonoDuotone-Italic-1.069.ttf      2020-12-11T12:09:14.084596-05:00
@@ -5,20 +5,20 @@
     <!-- Most of this table will be recalculated by the compiler -->
     <tableVersion value="1.0"/>
     <fontRevision value="1.069"/>
-    <checkSumAdjustment value="0xa107dc67"/>
+    <checkSumAdjustment value="0x2041ccf7"/>
     <magicNumber value="0x5f0f3cf5"/>
     <flags value="00000000 00000001"/>
     <unitsPerEm value="1000"/>
-    <created value="Fri Dec 11 17:09:05 2020"/>
-    <modified value="Fri Dec 11 17:09:06 2020"/>
-    <xMin value="-1772"/>
+    <created value="Fri Dec 11 17:09:12 2020"/>
+    <modified value="Fri Dec 11 17:09:13 2020"/>
+    <xMin value="-1785"/>
     <yMin value="-367"/>
-    <xMax value="704"/>
-    <yMax value="1134"/>
-    <macStyle value="00000000 00000000"/>
+    <xMax value="745"/>
+    <yMax value="1128"/>
+    <macStyle value="00000000 00000010"/>
     <lowestRecPPEM value="6"/>
     <fontDirectionHint value="2"/>
-    <indexToLocFormat value="0"/>
+    <indexToLocFormat value="1"/>
     <glyphDataFormat value="0"/>
   </head>

@@ -28,11 +28,11 @@
     <descent value="-250"/>
     <lineGap value="0"/>
     <advanceWidthMax value="600"/>
-    <minLeftSideBearing value="-1772"/>
-    <minRightSideBearing value="-336"/>
-    <xMaxExtent value="704"/>
-    <caretSlopeRise value="1"/>
-    <caretSlopeRun value="0"/>
+    <minLeftSideBearing value="-1785"/>
+    <minRightSideBearing value="-414"/>
+    <xMaxExtent value="745"/>
+    <caretSlopeRise value="667"/>
+    <caretSlopeRun value="167"/>
     <caretOffset value="0"/>
     <reserved0 value="0"/>
     <reserved1 value="0"/>
@@ -52,11 +52,11 @@
     <fsType value="00000000 00001000"/>
     <ySubscriptXSize value="650"/>
     <ySubscriptYSize value="600"/>
-    <ySubscriptXOffset value="0"/>
+    <ySubscriptXOffset value="-13"/>
     <ySubscriptYOffset value="75"/>
     <ySuperscriptXSize value="650"/>
     <ySuperscriptYSize value="600"/>
-    <ySuperscriptXOffset value="0"/>
+    <ySuperscriptXOffset value="59"/>
     <ySuperscriptYOffset value="350"/>
     <yStrikeoutSize value="45"/>
     <yStrikeoutPosition value="282"/>
@@ -69,7 +69,7 @@
       <bContrast value="0"/>
       <bStrokeVariation value="0"/>
       <bArmStyle value="0"/>
-      <bLetterForm value="0"/>
+      <bLetterForm value="11"/>
       <bMidline value="0"/>
       <bXHeight value="0"/>
     </panose>
@@ -78,7 +78,7 @@
     <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
     <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
     <achVendID value="ARRW"/>
-    <fsSelection value="00000000 11000000"/>
+    <fsSelection value="00000000 00000001"/>
     <usFirstCharIndex value="13"/>
     <usLastCharIndex value="64260"/>
     <sTypoAscender value="950"/>

Nächste Schritte

Es ist natürlich möglich, dass dies durch etwas anderes verursacht wird, aber das erste, was ich teste, ist das Festlegen konsistenter yMin- und yMax-Werte.

  • [x] finde yMin & yMax aller Stile (möglicherweise in den Quellen, da die Tabelle VF head spezifische Werte für die Standardquelle Sans Linear Light enthält)
  • [x] yMin- und yMax-Werte so einstellen, dass sie für alle Instanzen gleich sind
  • [x] Testen Sie dies in Sublime unter Windows 10

(Ich mache mir hier ein paar Notizen.)

Nachdem ich alle Quellen im Font-Prep-Ordner überprüft habe, habe ich festgestellt, dass

  • Die FamilienminY ist -455
  • Die Familie maxY ist 1208

Mit der vorherigen Version von Rec Mono Duotone (1.070) habe ich die Probleme unter Windows 10 reproduziert:

image

Leider bleibt das Problem bestehen, selbst nachdem die Min- und Max-Y-Werte für alle Schriftarten gleich festgelegt wurden:

image

Dieser Test wurde in https://github.com/arrowtype/recursive-code-config/tree/c3535664790abb8866a6c1acdad122749223f42c durchgeführt.

Mir ist klar, dass der ursprüngliche Kommentar in dieser Ausgabe hilfreich zeigt, dass die normalen (nicht "Code") Schriftarten _do_ richtig ausgerichtet sind, also sollte ich die Code-Schriftarten wirklich von den normalen Schriftarten unterscheiden. Fortsetzung folgt!

RecursiveMonoLnrSt-Italic.ttf (normal) vs RecMonoLinear-Italic-1.070.ttf (Code).

Rec Mono schließt die BASE Tabelle aus, während sie in der normalen Schriftart enthalten ist. Dies könnte die Ursache des Problems sein, aber ich muss weiter recherchieren.

Die fsSelection ist auch anders – ich sollte FontBakery auf den Rec Mono-Fonts ausführen, um noch einmal zu überprüfen, ob sie hier falsch eingestellt sind.

-    <fsSelection value="00000001 10000001"/>
+    <fsSelection value="00000000 00000001"/>

Es scheint vorläufig, dass dieses Problem die gleiche Lösung wie #308 haben könnte. Beim Testen der variablen Schriftart sieht dies vielversprechend aus:

image

Ich muss jedoch noch Tests der Code-Schriftarten durchführen, um dieses Problem zu bestätigen und hoffentlich zu schließen.

Schießen. Leider hat die Lösung von Problem 308 daran noch nichts geändert.

Ich werde das im Hinterkopf behalten und versuchen, es zu lösen, aber ich werde es wahrscheinlich nicht sofort knacken.

Ich weiß, dass dies wahrscheinlich niemand hören möchte, aber im Moment schlage ich folgende Problemumgehungen vor:

  1. Verwenden Sie die standardmäßigen rekursiven Schriftarten (nicht die "Code"-Schriftarten). Dadurch wird das „Duotone“-Theme nicht zugelassen, aber es wird (meistens) besser gerendert. Wenn diese installiert sind, können Sie sie entweder mit Recursive Mn Lnr St (Linear) oder Recursive Mn Csl St (Casual) aktivieren. Wenn Sie Stilsets oder Code-Ligaturen aktivieren möchten, können Sie dies bevorzugt im Format "font_options": ["ss01", "ss05", "dlig"]. tun (Vorsicht: einige Code-Ligaturen wie <= funktionieren in Sublime trotz woanders arbeiten.)
  2. Verwenden Sie VS-Code. Hier scheint es gut zu laufen. (Verzeihung!)
  3. Verwenden Sie eine andere Schriftart. (Verzeihung!)

image

image

Okay, ich glaube, ich habe das vielleicht geknackt (!).

image

Ich setze das fsSelection Bit 7 (_Use Typo Metrics_).

@jwortmann (oder jemand anderes) würde es Ihnen etwas neuesten Commit für rekursiven Code zu testen?

Der Einfachheit halber hier eine Zip-Datei davon:
rec_mono_code-patch-2020_02_19.zip

(Stellen Sie sicher, dass Sie über die vorherigen Versionen installieren)

image

Ich habe gerade die neuen Schriftartendateien aus der ZIP-Datei ausprobiert und kann bestätigen, dass jetzt alles bei mir funktioniert.
Vielen Dank für die Behebung dieses Problems und für diese großartige Schriftart im Allgemeinen!

Ich denke, dieses Thema kann jetzt geschlossen werden.

YESSS danke für die Bestätigung! Ich werde diese jetzt als "Hotfix" der Veröffentlichung hinzufügen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen