誰もプロポーショナルフォントを好むのですか?[閉まっている]


51

私は、プログラミングスタイルに関するウィキペディアの記事を読んでいて、垂直方向に配置されたコードに対する議論に何か気づきました。

等幅フォントへの依存。表形式は、エディターが固定幅フォントを使用することを前提としています。最新のコードエディタのほとんどはプロポーショナルフォントをサポートしており、プログラマは読みやすくするためにプロポーショナルフォントを使用することを好む場合があります。

正直に言うと、プロポーショナルフォントを好むプログラマーに出会ったことはないと思います。また、それらを使用する本当に良い理由も考えられません。なぜプロポーショナルフォントを好むのですか?


11
読書にはプロポーショナルフォントが好きですが、コードには厳密に等幅フォントを使用しています。常に、常に、常に。
フランクシェラー

12
ウィキペディアも引用:[citation needed]:)
ハンニバルレクター博士

7
何年も前に、私が大学で半ば冗談を言っていた教授は、「...それは新しい宅配便でない限りプログラミングではないからだ」と言った。
スティーブンエバーズ

12
プロポーショナルフォントを使用する理由は非常に単純です。もう1980年代ではありません。キャラクター端末から移動しました。新聞、書籍、およびWebサイトでは、通常、読みやすさの理由から等幅フォントは使用しません。彼らにはポイントがあると思う。
ティムウィ

4
Verdana 11pxは素晴らしいです。
チャレックトムザック

回答:


47

比例フォントに対する一般的なポイント、コメント。

  • プロポーショナルフォントを使用してコードを正確に垂直方向に整列させることはできません。つまり、誰もが弾性タブストップを使用していれば、コードを比例フォントで垂直方向に正確に揃えることができます、悲しいかな...
  • 一部のプロポーショナルフォントは、一部の文字グループを区別するのを困難にします。(例:mrnm)。ただし、すべてのプログラミングフォントが完全であるわけではありません。CourierNewには、同一の「O」と「0」、同一の「1」と「l」があります。
  • 一部のIDEでは、非固定幅フォントのサポートが不十分です(前述の Visual StudioやPythonのIDLEなど)。コンテキストによっては、使用できない場合もあります。(例:端末。)
  • コーディングにプロポーショナルフォントを選択すると、無限の聖戦に巻き込まれるでしょう。ただし、ここでは、キーボードと椅子の間に問題があります。

プロポーショナルフォントを支持するポイント

個人的には、「Ubuntu」フォントとWenQuanYi Zen Hei Monoの両方を喜んで使用してきましたが、どちらか一方を好むことはできませんでした。:)

Ubuntu
文泉Y禅平モノ
Ubuntu 10とWenQuanYi Zen Hei Mono 9の比較。あなたが私に尋ねると、ここには明確な勝者はありません。

とはいえ、フォントは食べ物のようなものです。丸みを帯びたようなものもあれば、辛くてスパイシーなものもあります-正しいフォントが1つも存在しないか、私たち全員が今それを使用しています。いいね!


Ubuntuフォントがリリースされたことに気づきませんでした。そこでうまくいくと思います。
アラン・ピアース

WenQuanYi Zen Hei Monoを見せてくれた+1、そのフォントはすごい。私はほぼ間違いなく論文でそれを使用します。印刷の見栄えに依存します。画面上では見た目が素晴らしく、水平位置をあまりとりません。これは印刷では非常に重要です。
コンラッドルドルフ

9
本当に、プロポーショナルに対する大きなファットポイントが1つだけあります。誰も伸縮性のあるタブストップを気にかけないので、実際に調整することはできません。モノスペースのダイハードと、見栄えの良い可変幅フォントを実際に読むことを好む人の両方にどのように役立つかを考えると、これはまったく奇妙です。さあ、世界!弾性タブストップ!
ローマンスターコフ

7
@romkyns:他の行との整列に依存しないインデントスタイルを採用します。シンプル。
ザンリンクス

4
@ZanLynx私がやったのは、行の先頭以外の場所での垂直方向の配置よりもプロポーショナルフォントが好きだからです。
ローマンスターコフ

29

コーディングに等幅以外のフォントを使用することを事実上不可能にする理由がありますが、他の回答では言及されていません:長方形の選択

この機能は、通常はあまり有用ではなく、通常のテキストを扱う場合にはあまり知られていないことが多く、開発者にとって不可欠です。//いくつかの行のコメントの削除、括弧やその他の文字の追加など、多数のシナリオを想像できます。これは、テキストの選択と削除ができないVisual Studio 2010のように、長方形選択の高度なサポートによりさらに価値があります。ただし、選択して置き換えます。

例を見てみましょう:

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,
}

このレガシコードでは、コード内の評価をStack Exchange Webサイト自体から評価をロードする方法に置き換えたいと思います。常に最新のデータを取得できます。MyReputationプロパティのリファクタリングを開始し、スコープ内の初期化を削除したいと思います。4つのSE Webサイトではなく、84のSE Webサイトがすべてあると想像してください。

固定幅フォントであるConsolasを使用すると、次のようになります。Backspaceを押すと、残りの時間を使って実際に役立つことをすることができます。

この画像は、Consolasでは、長方形が評価プロパティを選択することを示しています。

そして、ここではSegoe UIでも同じことが言えます。痛い!

この画像は、Segoe UIでは一部のレピュテーションプロパティが部分的にしか選択されていないのに対し、他の行では評価プロパティの先頭が選択されていることを示しています。


9
これは、monspaceフォントに一致する間隔を使用したために発生しました。プロポーショナルフォントの適切な間隔w / r / tがあれば、この問題は発生しません。
コス

6
@Kos:たとえば、3つのタブを押す代わりに、スペースキーを15回押すと、入力しすぎたことに気づき、最後のスペースを削除できますか?少し複雑すぎるようですね。
Arseni Mourzenko

6
Eclipseは実際には、長方形の選択モードに別のフォントを使用することをサポートしているため、これにより問題が少なくなります。
ニコラス

8
@Kos RE:「プロポーショナルフォントの適切な間隔」:ただし、別のプログラマが同じファイルで別のフォントを使用すると、整列しません。すべてのエディターが等幅フォントを使用する場合、常に整列します(コードが整列のためにタブを乱用しないと仮定します)。
マックスナナシー14

5
伸縮性のあるタブストップなしで2年間プロポーショナルフォントを使用しています。ほとんどのIDEで完全に置き換わるものが他にあるため、長方形の選択は使用しません。複数キャレット選択です。この例では、「MyReputation =」を選択し、IntelliJ / JetBrainsエディターCTRL-DでSublimeTextとVSCode を使用して[次の出現箇所を選択]を押しALT-Jます。次に、SHIFT-CTRL-RIGHT ARROW右側の次のトークンに選択を展開して完了です。主な利点は、編集するものを揃える必要がないことです。欠点は、何かが揃っている場合、それはもはやなくなります。
ヘイ

15

句読点は実際に区別しやすいため、主にプロポーショナルフォントを使用していましたが、時間が経つにつれて、誰もそれを行わず、誰もが無意識にモノスペースフォントを仮定しているため、放棄しました(ウィキペディアの記事で言及しているように、フォーマット、コメント内のアスキーアートなど)。

さらに、Microsoftが修正したくないVisual Studioの問題により、基本的に適切に設計されたプロポーショナルフォントを使用することは不可能になります。


9
そのバグに関するマイクロソフトとのコメントミニバトルが大好きです。そして、基本的に「こんにちは!ありがとう!はじめまして!何もしません。OK、ありがとうございます!人々は現実の生活の中でそのように行動した場合には想像...
ゼブラ

2
私はあなたが引用するまさにその理由のいくつかのために比例幅フォントを使用しませんが、私の内側のタイポグラファーは常にデザインとプログラミングにおいて適切なエディターのサポートを切望しているので、あなたは同情に賛成を得ます。
ジョンパーディ

奇妙なことに、句読点はスペースをあまり占有しないため、実際には区別するのが難しいと考えていました(特にフルストップ)。また、Notepad ++がコメントにComic Sans MSを最も長く使用したことも覚えています。
不機嫌なヤギ

6
等幅フォントで句読点を特定するのが難しい場合、他の等幅フォントがあります-比例フォントを使用する必要があるわけではありません。
誰も

句読点を改善するために、EnvyCode AまたはBを使用することがあります。
ザンロック

9

個人的には気にしません。タブを揃えてフォントを読みやすくする限り、モノスペース、プロポーショナル、またはその他の壁以外のスペースを使用するかどうかはあまり気にしません。タブをスペースに置き換えないでください。口論することはありません。


3
私は完全に同意します。また、(ハードコードされたスペースとは対照的に)タブを使用すると、等幅フォントとプロポーショナルフォントを切り替えて、それに応じてタブ幅を調整できます。ただし、まだ見たことがないのは、EMの単位でタブの幅を設定できるエディターです。
8月カールストロム

6

私はプロポーショナルフォントを使用しています(これまでのところ、Arialが最高です。Verdanaは次点です)。なぜそのような読みやすさを犠牲にしたいのですか?表形式が望ましいかどうかは理解できましたが、そうではありません。フォントに関係なくメンテナンスの悪夢が生じるからです。


4
私はあなたがArialとVerdanaのように驚いています。私はそれらが少し荒くてプロフェッショナルではないと思います。カリブリを試しましたか?
ティムウィ

2
8pt Verdanaを使用しています。長い識別子名は読みやすくなります。スクロールせずに70行のコードを表示でき、行がはるかに短いため、コードは新聞のように狭い列です。これにより、エディターのビューを2つの縦列に分割できます。1つのビューで宣言を表示し、別のビューでコードを記述します。また、デバッグ時には、画面にデバッグウィンドウがいっぱいになり、コードビューが小さなスペースに収まります。プロポーショナルフォントを使用すると、物事を垂直方向に整列させ、コメントの周りにアスタリスクのアスキーボックスを配置する必要がなくなります。
カルマリウス

2
Lucida Consoleフォントを使用して、ポートレートモードで90°回転した1920x1200モニター上のVisual Studioに147行のコードが表示されます。
ザンロック

VimのMonacoフォントを使用した158行...画面がHDでもない
マークKコーワン

4

Bjarne Stroustrupの本The C ++ Programming Languageで、コードにはプロポテナイト間隔フォントが使用されたことを覚えています。(ウェブ上でサンプルページを見つけることができません)

正確な理由は覚えていませんが、彼はこの本の新しい紹介として、これともう1つの変更(C ++言語自体だと思います)に言及したと思います。

個人的には、固定スペースのものが好きです。コンソラスは私のお気に入りです。


1
スペシャルエディションの5ページ目を確認してください。プロポーショナルフォントは、一般的にテキストにとって優れていると考えられています。読みやすいと思います。Stroustrupはここでコードを提示していますが、作成しようとはしていないため、物事が異なる場合があります。
デビッドソーンリー

4
@David、はい、彼はコードを提示しています。しかし、それは「読み取り」のために提示され、固定対比例のまさに問題は「読み取り」コード、私見です。
ニヴァス

4

短い行と多くのオープンスペースがある言語の場合、私は等幅フォントを好みます。可変幅フォントを使用すると、長い行と密集した構文がある場合に読みやすくなることがわかります。

ほとんどのプロポーショナルフォントの問題は、それらがプログラミング用に設計されていないことです。このページには、いくつかのフォントが表示されます。

トリムフォント


4
Googleコードへのデッドリンク:(
フロリアンカステラーヌ

2

PharoのようなSmalltalk環境はプロポーショナルフォントを使用し、言語スタイルにより非常に見栄えがよくなります。しかし、GoのようなCスタイル言語や、ErlangやPythonのような他の言語では、等幅フォントが好きです。


2

しばらく前から、Eclipse用の読みやすいフォントを見つけるのに少し時間を費やし、XPではかなり長い間Verdanaを使用していました。Consolasは、それがプログラミングにとって本当に素晴らしいため、それを解決しました。

これらは私の発見です:

  • ほとんどのプロポーショナルフォントは、散文用に設計されており、句読点はほとんどありません(通常は1文字または2文字です)。Cファミリーの言語には多くの句読点がありますが、これは単に-私の意見では-見た目が良くなく、必要以上に読みにくいです。
  • 可変長文字は、行の長さが異なることを意味します。これにより、矢印ボタンを使用してナビゲートするときにカーソルが終了する場所を推測することがほぼ不可能になります。これは迷惑です。
  • 垂直方向の間隔も重要です。通常、これは簡単に上書きできるものではなく、ほとんどのプロポーショナルフォントは、私が望むよりも行間のスペースが少なくなります。
  • プロポーショナルフォントでテストされているIDEはほとんどありません。これにより、カーソルを間違った位置に置いたり、文字を誤って再描画したりするなどの微妙なバグの余地ができます。

それゆえ、私はそれが私にとって悩みの価値がないことがわかりました。


配置およびその他のレイアウトに関する注意:すべての保存で各ファイルを自動フォーマットするようにEclipseを設定したため、すべての派手なレイアウトは自動的にリセットされます。Eclipseは複数のスペースではなくタブを使用し、これらはプロポーショナルフォントでも正しく配置できます。したがって、フォーマッタのレイアウト互いに重ねることできますが、それを持たない標準のフォーマッタ構成を使用します。

フォレンジック分析を行う場合、保存のたびに全員に自動フォーマットを強制することで、ソース管理システムでの誤検出が最小限に抑えられると思います。


0

Monospacedフォントを使用すると、さまざまな属性を比較できるため、決してありません。

比較する:

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

name2 = ["John"、 "Locke"、1632、 "Philosophy"]

name3 = ["Jonathan"、 "Littell"、1967、 "Prose"]

に:

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

プロポーショナルフォントでは、同等の属性を正確に上下に配置することはできません。


2
これがあなたにとってどの環境に問題があるのか​​知りたいです。タブをプロポーショナルフォントと固定幅フォントの両方で使用して、列に並べることができます。問題が発生するのは、タブの代わりにスペースを使用する場合です。
-temptar

2
@temptar:「iii12345」、「AAA12345」、および「nnn12354」を上下に並べて検討します。間違い(「345」)を見つけるのははるかに簡単です。値の途中にタブを配置することはできません。
アダムMatan

1
@temptarタブはPythonで推奨されておらず、その幅はエディターによって異なるため、コードが不揃いになる可能性があります。
アダムマタン

2
@Adam Matanこれはまさに、あなたが凝ったフォーマットをすべきではない理由です。
8月カールストロム

0

プロポーショナルフォントはもっときれいだと思いますが、特にサンセリフフォントの一部では、「I」と「l」の違いを見分けることはできません。待ってください、私はその変数に再び何の名前を付けましたか?


2
Verdanaには、区別を容易にするためにセリフが付いています。
カルマリウス

1
0とOは別の大きな問題です。また、 'vs `と。vsも。時々&と$が問題になります(perl / phpで気になります)。しかし、Verdanaは上記のほとんどに適していますが、0には向いていません。悲しいことに、タブに邪悪なスペースが混在している既存のプロジェクトでは、私は通常、Lucida Consoleをあきらめて使用しています。ただし、変数の命名について質問している場合は、最新のコード補完を使用していないか、少なくとも必要なコピー/貼り付けを行っていません。
ザンロック

私が知っているプロポーショナルフォントの1つである0Oo1lLiIは、TeXの「Latin Modern Mono Prop」であり、コード用に完全に設計された「Latin Modern Mono」に比例して配置されています。 。句読点は、まだ問題があるコードの私見ではその重要性のために、あまりにも少し間隔を持っており、一つの二重引用符対ambiguties例えば2つの単一引用符を作成します:「」「対、'' vs "
紅Cherniavsky-Paskin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.