Bevorzugt jemand proportionale Schriftarten? [geschlossen]


51

Ich las den Wikipedia-Artikel über Programmierstil und bemerkte etwas in einem Argument gegen vertikal ausgerichteten Code:

Verlassen Sie sich auf Schriften mit gleichem Abstand. Bei der tabellarischen Formatierung wird davon ausgegangen, dass der Editor eine Schriftart mit fester Breite verwendet. Die meisten modernen Code-Editoren unterstützen proportionale Schriftarten, und der Programmierer kann es aus Gründen der Lesbarkeit vorziehen, eine proportionale Schriftart zu verwenden .

Um ehrlich zu sein, ich glaube nicht, dass ich jemals einen Programmierer getroffen habe, der eine proportionale Schriftart bevorzugt. Ich kann mir auch keine wirklich guten Gründe für ihre Verwendung vorstellen. Warum sollte jemand eine proportionale Schrift bevorzugen?


11
Ich mag proportionale Schriftarten zum Lesen, aber ich verwende strikt monospaced Schriftarten für Code. Immer, immer, immer.
Frank Shearar

12
Um auch Wikipedia zu zitieren: [citation needed]:)
Dr. Hannibal Lecter

7
Vor vielen Jahren sagte ein Professor, den ich am College hatte, scherzhaft: "... weil es nicht programmiert, es sei denn, es ist ein neuer Kurier."
Steven Evers

12
Mein Grund für die Verwendung einer proportionalen Schriftart ist sehr einfach. Es ist nicht mehr die 1980er Jahre. Wir sind von den Charakterterminals weitergezogen. Zeitungen, Bücher und Websites verwenden aus Gründen der Lesbarkeit im Allgemeinen keine Monospace-Schriftarten. Ich denke, sie haben einen Punkt.
Timwi

4
Verdana 11px ist großartig.
Czarek Tomczak

Antworten:


47

Gemeinsame Punkte gegen proportionale Schriftarten, kommentiert.

  • Sie können Code mit proportionalen Schriftarten nicht genau vertikal ausrichten. Ich meine, Sie könnten Code mit proportionalen Schriftarten genau vertikal ausrichten, wenn alle elastische Tabstopps verwenden , aber leider ...
  • Bei einigen proportionalen Schriftarten ist es schwierig, bestimmte Zeichengruppen zu unterscheiden. (zB mrnm). Allerdings sind auch nicht alle Programmierschriften perfekt: Courier New hat identische Buchstaben 'O' und '0' sowie identische Buchstaben '1' und 'l'.
  • Einige IDEs haben schlechte Unterstützung für nicht-fester Breite Schriftarten (wie oben erwähnten Visual Studio oder Python IDLE). In einigen Kontexten kann man auch einfach keinen verwenden. (zB Terminals.)
  • Wenn Sie eine proportionale Schriftart für die Codierung auswählen, werden Sie in endlose heilige Kriege verwickelt. Hier besteht jedoch das Problem zwischen der Tastatur und dem Stuhl.

Weist auf proportionale Schriftarten hin

Ich persönlich habe sowohl die Ubuntu-Schrift als auch WenQuanYi Zen Hei Mono mit Vergnügen verwendet und bin nicht in der Lage, die eine der anderen vorzuziehen. :)

Ubuntu
WenQuanYi Zen Hei Mono
Ubuntu 10 und WenQuanYi Zen Hei Mono 9 im Vergleich. Es gibt hier keinen klaren Gewinner, wenn Sie mich fragen.

Das heißt, Schriften sind wie Essen. Manche mögen sie gut gerundet, andere mögen sie scharf und scharf - es gibt keine richtige Schriftart, oder wir alle würden sie jetzt verwenden. Yay für Wahl!


Ich wusste nicht, dass die Ubuntu-Schriftart veröffentlicht wurde. Ich denke, dass es dort gut funktioniert.
Alan Pearce

+1 für das Anzeigen von WenQuanYi Zen Hei Mono, diese Schriftart ist erstaunlich. Ich werde es mit ziemlicher Sicherheit in meiner Diplomarbeit verwenden. Kommt darauf an, wie gut es gedruckt aussieht - auf dem Bildschirm sieht es fantastisch aus und nimmt nicht viel horizontalen Platz ein, was beim Drucken sehr wichtig ist.
Konrad Rudolph

9
Wirklich, es gibt nur einen großen Fettpunkt gegen Proportional: Sie können sich nicht wirklich ausrichten, weil sich niemand um elastische Tabstops kümmert. Was äußerst seltsam ist, da es sowohl den monospaced Die-Hard als auch denjenigen zugute kommt, die es tatsächlich vorziehen, gut aussehende Schriften mit variabler Breite zu lesen. Komm schon, Welt! Elastische Tabstops!
Roman Starkov

7
@romkyns: Nehmen Sie einen Einrückungsstil an, der sich nicht auf andere Zeilen stützt. Einfach.
Zan Lynx

4
@ZanLynx Ich habe es getan, weil ich proportionale Schriftarten mehr mag als vertikale Ausrichtung an anderen Stellen als dem Zeilenanfang.
Roman Starkov

29

Es gibt einen Grund, der es praktisch unmöglich macht, andere Schriften als Monospace für die Codierung zu verwenden, der jedoch in anderen Antworten nicht erwähnt wurde: rechteckige Auswahlen .

Diese Funktion, die beim Arbeiten mit normalem Text oftmals nicht sehr nützlich und wenig bekannt ist, ist für Entwickler von entscheidender Bedeutung. Sie können sich eine Vielzahl von Szenarien vorstellen: Entfernen von //Kommentaren in mehreren Zeilen, Hinzufügen von Klammern oder anderen Zeichen usw. Dies ist umso wertvoller, als die erweiterte Unterstützung von rechteckigen Auswahlen wie in Visual Studio 2010, in dem Sie nicht nur Text auswählen und entfernen können. aber auswählen und ersetzen.

Nehmen wir ein Beispiel:

private IEnumerable<SELove> StackExchangeRocks()
{
    var howILoveSEWebsites = new []
    {
        new SELove { SiteName = "Stack Overflow", MyReputation = 5269,  MyRating = Rating.Outstanding, },
        new SELove { SiteName = "Programmers",    MyReputation = 16937, MyRating = Rating.Outstanding, },
        new SELove { SiteName = "Super User",     MyReputation = 650,   MyRating = Rating.QuiteGood,   },
        new SELove { SiteName = "Server Fault",   MyReputation = 489,   MyRating = Rating.Good,        },
        // Initialize other websites here.
    };

    return howILoveSEWebsites.OrderByDescending(c => c.MyRating);
}

private class SELove
{
    public string SiteName { get; set; }
    public int MyReputation { get; set; }
    public Rating MyRating { get; set; }
}

private enum Rating
{
    Outstanding,
    Good,
    QuiteGood,
}

In diesem Legacy-Code möchte ich die In-Code-Bewertung durch eine Methode ersetzen, mit der meine Bewertung von Stack Exchange-Websites selbst geladen wird, da immer aktuelle Daten verfügbar sind. Ich habe begonnen, die MyReputationEigenschaft umzugestalten , und jetzt möchte ich die Initialisierung im Bereich entfernen. Stellen Sie sich vor, ich habe nicht vier, sondern alle 84 SE-Websites.

Folgendes passiert bei der Verwendung von Consolas , einer Monospace-Schriftart. Ich drücke die Rücktaste, und das ist alles, ich kann die verbleibende Zeit damit verbringen, etwas wirklich Nützliches zu tun.

Das Bild zeigt, dass bei Consolas das Rechteck die Reputationseigenschaft auswählt.

Und hier das Gleiche mit Segoe UI . Autsch!

Das Bild zeigt, dass mit der Segoe-Benutzeroberfläche einige Reputationseigenschaften nur teilweise ausgewählt werden, während in anderen Zeilen der Anfang der Bewertungseigenschaft ausgewählt wird.


9
Dies ist darauf zurückzuführen, dass Sie einen Abstand verwendet haben, der mit der Monspace-Schriftart übereinstimmt. Wenn Sie den richtigen Abstand mit der Proportionalschrift hätten, hätten Sie dieses Problem nicht.
Kos,

6
@Kos: Anstatt also beispielsweise drei Tabulatoren zu drücken, würden Sie fünfzehn Mal die Leertaste drücken, und dann bemerken, dass Sie zu viel eingegeben und das letzte Leerzeichen entfernt haben? Scheint ein bisschen zu kompliziert, findest du nicht?
Arseni Mourzenko

6
Eclipse unterstützt die Verwendung einer anderen Schriftart für den rechteckigen Auswahlmodus, wodurch dies weniger problematisch wird.
Nicholas

8
@Kos RE: "richtiger Abstand mit der proportionalen Schriftart": Wenn jedoch ein anderer Programmierer eine andere Schriftart für dieselbe Datei verwendet, wird sie nicht ausgerichtet. Wenn alle Editoren Monospace-Schriftarten verwenden, wird diese immer ausgerichtet (vorausgesetzt, der Code missbraucht keine Tabulatoren zur Ausrichtung).
Max Nanasy

5
Ich verwende seit 2 Jahren eine proportionale Schriftart ohne elastische Tabstopps. Ich verwende keine rechteckigen Auswahlen, da es in den meisten IDEs noch etwas gibt, das diese vollständig ersetzt: Mehrzeilige Auswahl. In diesem Beispiel würde ich "MyReputation =" auswählen und dann "Nächstes Vorkommen auswählen" CTRL-Din SublimeText und VSCode ALT-Jin IntelliJ / JetBrains-Editoren verwenden. Als nächstes SHIFT-CTRL-RIGHT ARROWerweitern Sie die Auswahl auf das nächste Token auf der rechten Seite und fertig. Der Hauptvorteil ist, dass niemand Dinge zum Bearbeiten ausrichten muss. Nachteil, wenn Sie etwas ausgerichtet haben, wird es nicht mehr sein.
Hay

15

Früher habe ich eine proportionale Schriftart verwendet, vor allem, weil ich finde, dass die Zeichensetzung eigentlich einfacher zu unterscheiden ist, aber mit der Zeit habe ich aufgegeben, weil es niemand anderes tut und jeder unbewusst von Schriften mit einem mono-Abstand ausgeht (wie der Wikipedia-Artikel erwähnt und versucht, tabellarisch zu arbeiten) Formatierung, ASCII-Kunst in Kommentaren usw.).

Außerdem machen Probleme in Visual Studio , die Microsoft nicht beheben möchte, die Verwendung gut gestalteter proportionaler Schriftarten ohnehin unmöglich.


9
Lieben Sie Ihren Kommentar Mini-Kampf mit Microsoft über diesen Fehler. Und ihre fröhliche Antwort lautet im Grunde: "Hi! Danke! Schön, Sie kennenzulernen! Wir werden nichts tun. Okay, danke schön, mit Ihnen zu plaudern!" Stellen Sie sich vor, dass die Leute im wirklichen Leben so gehandelt haben ...
danio

2
Sie erhalten ein positives Echo der Sympathie, denn obwohl ich aus genau den von Ihnen genannten Gründen keine Schriftart mit proportionaler Breite verwende, sehnt sich mein innerer Typograf ständig nach angemessener Editorunterstützung, sowohl beim Design als auch bei der Programmierung.
Jon Purdy

Seltsam, ich dachte nur, dass Interpunktion tatsächlich schwieriger zu unterscheiden ist (insbesondere Punkt), weil sie weniger Platz beansprucht. Ich erinnere mich auch, dass Notepad ++ Comic Sans MS am längsten für Kommentare verwendete.
DisgruntledGoat

6
Wenn die Interpunktion in einer Monospace-Schriftart schwer zu identifizieren ist, gibt es andere Monospace-Schriftarten. Dies bedeutet nicht, dass Sie eine proportionale Schriftart verwenden müssen.
Niemand

Genau für eine bessere Interpunktion, habe ich manchmal EnvyCode verwenden A oder B .
Zanlok

9

Persönlich ist mir das egal. Solange Sie meine Tabulatoren ausgerichtet und die Schrift lesbar halten, ist es mir egal, ob ich Monospace, Proportional oder einen anderen Abstand von der Wand verwende. Beginnen Sie einfach nicht damit, meine Tabulatoren durch Leerzeichen zu ersetzen, und Sie haben keinen Streit mit mir.


3
Ich stimme vollkommen zu. Und mit Tabulatoren (im Gegensatz zu fest codierten Leerzeichen) können Sie zwischen Monospace- und Proportional-Schriftarten wechseln und die Tabulatorenbreite entsprechend anpassen. Was ich allerdings noch zu sehen habe, ist ein Editor, in dem Sie die Tabulatorbreite in Einheiten von EMs einstellen können.
August Karlstrom

6

Ich verwende eine proportionale Schriftart (Arial ist die beste, die ich bisher gefunden habe, Verdana ist die zweitbeste) und ehrlich gesagt bin ich immer noch amüsiert, dass die Leute Schriftarten mit fester Breite verwenden. warum sollten Sie die Lesbarkeit so opfern wollen? Ich könnte verstehen, ob die Formatierung von Tabellen wünschenswert wäre, aber das ist es nicht, da dies unabhängig von der Schriftart einen Alptraum für die Wartung darstellt.


4
Ich bin überrascht, dass du Arial und Verdana magst. Ich finde sie etwas rau und unprofessionell. Haben Sie Calibri ausprobiert?
Timwi

2
Ich benutze 8pt Verdana. Lange Bezeichnernamen sind leichter zu lesen. Ich kann 70 Codezeilen anzeigen, ohne zu scrollen, und die Zeilen sind viel kürzer, sodass der Code eine schmale Spalte ist, wie in einer Zeitung. Dadurch kann ich die Ansicht des Editors in zwei vertikale Spalten aufteilen: Ich zeige die Deklaration in einer Ansicht an und schreibe Code in einer anderen. Auch beim Debuggen ist der Bildschirm voll mit Debugging-Fenstern, die Codeansicht passt in den kleinen Raum. Durch die Verwendung proportionaler Schriftarten wird der Wunsch beseitigt, Objekte vertikal auszurichten und ASCII-Kästchen mit Sternchen um die Kommentare zu setzen.
Calmarius

2
Ich sehe 147 Codezeilen in Visual Studio auf einem 1920x1200-Monitor, der für einen Hochformatmodus um 90 ° gedreht wurde und die Lucida Console-Schriftart verwendet.
Zanlok

158 Zeilen mit Monaco-Schrift in Vim ... Mein Bildschirm ist nicht einmal HD
Mark K Cowan

4

Ich erinnere mich, dass in Bjarne Stroustrups Buch The C ++ Programming Language Schriften mit angemessenem Abstand für den Code verwendet wurden. (Ich kann keine Beispielseiten im Web finden.)

Ich erinnere mich nicht an die genauen Gründe, aber ich denke, er erwähnte diese und eine andere Änderung (ich denke die C ++ - Sprache selbst) als eine neue Einführung in dieses Buch.

Persönlich bevorzuge ich feste Räume. Consolas ist mein Favorit.


1
Überprüfen von Seite 5 meiner Special Edition: Proportionalschriftarten werden im Allgemeinen als besser für Text angesehen, da sie weniger unlogische Zeilenumbrüche ermöglichen und sich die meisten Menschen daran gewöhnen. Ich finde es einfach zu lesen. Stroustrup präsentiert hier Code, ohne zu versuchen, ihn zu erstellen, und das könnte die Dinge anders machen.
David Thornley

4
@ David, ja, er präsentiert Code. Aber es wird zum "Lesen" angeboten, und die eigentliche Frage von Fixed vs Proportional ist für das "Lesen" von Code, IMHO.
Nivas

4

Für Sprachen mit kurzen Linien und viel Freiraum bevorzuge ich monospaced Schriftarten. Ich finde, dass Schriftarten mit variabler Breite die Lesbarkeit verbessern können, wenn Sie lange Zeilen und eine dichte Syntax haben.

Das Problem bei den meisten proportionalen Schriftarten ist, dass sie nicht für die Programmierung entwickelt wurden. Diese Seite zeigt einige Schriften, die waren.

Schriftart zuschneiden


4
Toten Link zu Google Code :(
Florian Castellane

2

Smalltalk-Umgebungen wie Pharo verwenden proportionale Schriftarten und aufgrund des Sprachstils sieht es dort sehr gut aus. Aber in C-Sprachen wie Go oder anderen wie Erlang oder Python bevorzuge ich monospaced Schriftarten.


2

Vor einiger Zeit habe ich eine gute, lesbare Schriftart für Eclipse gefunden und unter XP habe ich Verdana für einige Zeit verwendet. Consolas hat das entschieden, weil es wirklich hervorragend für die Programmierung ist.

Das sind meine Erkenntnisse:

  • Die meisten proportionalen Schriftarten sind für Prosa und nur wenig Interpunktion (die wiederum normalerweise aus einem oder selten zwei Zeichen besteht) ausgelegt. Die C-Sprachfamilie hat viele Interpunktionszeichen, die meiner Meinung nach einfach nicht gut aussehen und schwerer zu lesen sind als nötig.
  • Zeichen variabler Länge bedeuten, dass die Länge der Zeilen variiert. Dies macht es nahezu unmöglich zu erraten, wo der Cursor beim Navigieren mit den Pfeiltasten enden wird. Ich fand das nervig.
  • Auch der vertikale Abstand spielt eine Rolle. Dies kann normalerweise nicht einfach überschrieben werden, und die meisten proportionalen Schriftarten haben weniger Platz zwischen den Zeilen, als ich möchte.
  • Sehr wenige IDEs werden mit proportionalen Schriftarten getestet. Dies macht Platz für subtile Fehler wie das Platzieren des Cursors an der falschen Stelle, das falsche Neupinseln von Zeichen und dergleichen.

Daher fand ich, dass es die Mühe für mich nicht wert war.


Hinweis zur Ausrichtung und zu anderen Layouts: Ich habe Eclipse so eingestellt, dass jede Datei bei jedem Speichern automatisch formatiert wird, sodass alle ausgefallenen Layouts automatisch zurückgesetzt werden. Eclipse verwendet Tabulatoren anstelle mehrerer Leerzeichen, die auch bei proportionalen Schriftarten korrekt positioniert werden können. Daher Formatierer Layouts können übereinander, aber wir verwenden , um die Standard - Formatierungskonfiguration , die nicht hat.

Ich glaube, dass die Durchsetzung der automatischen Formatierung für alle Benutzer bei jedem Speichervorgang die Fehlalarme im Quellcodeverwaltungssystem minimiert, wenn forensische Analysen durchgeführt werden.


0

Niemals, niemals, weil ich mit Monospaced-Schriftarten verschiedene Attribute vergleichen kann.

Vergleichen Sie:

name1 = ["William", "Shakespear", 1564, "Peotry"]

name2 = ["John", "Locke", 1632, "Philosophie"]

name3 = ["Jonathan", "Littell", 1967, "Prosa"]

Zu:

name1=["William",  "Shakespear", 1564, "Peotry"     ]
name2=["John",     "Locke",      1632, "Philosophy" ]
name3=["Jonathan", "Littell",    1967, "Prose"      ]

Die proportionalen Schriftarten können keine äquivalenten Attribute genau übereinander platzieren.


2
Ich bin gespannt, in welchem ​​Umfeld dies für Sie ein Problem darstellt. Sie können Registerkarten mit proportionaler und fester Schriftbreite verwenden, um sie in Spalten anzuordnen. Das Problem tritt auf, wenn Sie Leerzeichen anstelle von Tabulatoren verwenden.
Versuch

2
@temptar: Betrachten Sie "iii12345", "AAA12345" und "nnn12354" übereinander. Der Fehler ("345") ist viel leichter zu erkennen. Sie können keine Tabulatoren in die Mitte eines Werts setzen.
Adam Matan

1
@temptar Tabs werden von Python nicht empfohlen, und ihre Breite variiert in verschiedenen Editoren, was zu einer fehlerhaften Codeausrichtung führen kann.
Adam Matan

2
@Adam Matan Genau aus diesem Grund sollten Sie keine ausgefallenen Formatierungen vornehmen.
August Karlstrom

0

Obwohl ich der Meinung bin, dass proportionale Schriften hübscher sind, ist es bei einigen von ihnen, insbesondere bei serifenlosen Schriften, unmöglich, den Unterschied zwischen einem "I" und einem "L" zu erkennen. Warten Sie, wie habe ich diese Variable noch einmal benannt?


2
Verdana hat zur leichteren Unterscheidung Serifen auf I.
Calmarius

1
0 und O ist ein weiteres großes Problem. Auch "vs" und. vs auch. Manchmal sind & und $ ein Problem (besorgniserregend in Perl / PHP). Leider gebe ich bei bestehenden Projekten mit Tabs, die mit bösen Leerzeichen gemischt sind, normalerweise die Lucida-Konsole auf und benutze sie. Wenn Sie jedoch nach der Benennung von Variablen fragen, verwenden Sie nicht die moderne Codevervollständigung oder kopieren / fügen sie zumindest so ein, wie Sie es sollten.
Zanlok

Eine proportionale Schriftart, die ich kenne und die eindeutige 0Oo1lLiI hat, ist TeXs "Latin Modern Mono Prop", ein proportional beabstandeter Verwandter von "Latin Modern Mono", der absolut für Code entwickelt wurde (für Drucke ohne Bildschirm, finde ich das Rendering jedoch etwas unscharf). . Interpunktion ist immer noch ein Problem, hat zu wenig Abstand für seine Bedeutung im Code IMHO und erzeugt Ambigutionen, z. B. zwei einfache Anführungszeichen gegen ein doppeltes Anführungszeichen: '' vs ",'' vs "
Beni Cherniavsky-Paskin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.