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":
Umfeld
Zusätzlicher Kontext
Ich bin mir nicht sicher, ob dieses Problem dasselbe ist oder mit #308 zusammenhängt.
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:
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:
Wenn ich mir das ansehe, mache ich mir ein paar Notizen.
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"/>
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"/>
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.
head
spezifische Werte für die Standardquelle Sans Linear Light enthält)(Ich mache mir hier ein paar Notizen.)
Nachdem ich alle Quellen im Font-Prep-Ordner überprüft habe, habe ich festgestellt, dass
Mit der vorherigen Version von Rec Mono Duotone (1.070) habe ich die Probleme unter Windows 10 reproduziert:
Leider bleibt das Problem bestehen, selbst nachdem die Min- und Max-Y-Werte für alle Schriftarten gleich festgelegt wurden:
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:
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:
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.)Okay, ich glaube, ich habe das vielleicht geknackt (!).
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)
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.
Aktualisiert in https://github.com/arrowtype/recursive/releases/tag/v1.074
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.