web-dev-qa-db-ja.com

プロポーショナルフォントを好む人はいますか?

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

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

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

53
Jason Baker

プロポーショナルフォントに対する共通のポイント、コメント

  • プロポーショナルフォントでコードを垂直方向に正確に揃えることはできません。つまり、誰もが elastic tabstops を使用している場合、 could コードをプロポーショナルフォントで垂直方向に正確に配置しますが、残念ながら...
  • 一部のプロポーショナルフォントは、一部の文字グループを区別するのを難しくします。 (例:mrnm)。ただし、すべてのプログラミングフォントが完璧であるとは限りません。 Courier Newには、同一の「O」と「0」、および同一の「1」と「l」があります。
  • 一部のIDEは、固定幅以外のフォントのサポートが不十分です(- 前述の Visual StudioまたはPythonのIDLEなど)。また、状況によっては、使用できない場合もあります。 (例:端末)
  • コーディングにプロポーショナルフォントを選択すると、無限の神聖な戦争が起こります。ただし、ここではキーボードと椅子の間に問題があります。

プロポーショナルフォントに有利な点

  • 一部の文字は他の文字よりも幅が広いです。 mまたはn と同じスペースにiを詰め込むと、本当に 良いものを設計するのが困難になります。読み取り可能な等幅フォント
  • ちょうど良い文字間の間隔を改善しました。 this Proggy Clear screenshotrnWIllを比較して、フォントの間隔が間違っている例を確認してください。
  • ほとんどのプログラマーフォントには、イタリック体やボールド体がありません。これにより、効果的な構文強調表示を使用することが難しくなります。
  • とにかく、垂直配置はワームの缶です。タブかスペースか、タブとスペースか?

個人的に、私は the 'Ubuntu' font とWenQuanYi Zen Hei Monoの両方を喜んで使用しており、どちらか一方を優先することはできません。 :)

Ubuntu
WenQuanYi Zen Hei Mono
Ubuntu 10とWenQuanYi Zen Hei Mono 9を比較。あなたが私に尋ねれば、ここには明確な勝者はありません。

つまり、フォントは食べ物のようなものです。丸みのあるものが好きな人もいれば、辛くてスパイシーな人もいます。適切なフォントが1つもないか、私たち全員が今使っているでしょう。いいね!

47
badp

モノスペース以外のフォントをコーディングに使用することが実質的に不可能になる理由がありますが、他の回答では言及されていません:rectangular selections

この機能は、通常はあまり役に立たず、通常のテキストを操作するときにあまり知られていないことが多く、開発者にとって不可欠です。数行の//コメントを削除する、かっこやその他の文字を追加するなど、さまざまなシナリオを想像できます。これは、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つではなく、84のSE Webサイトをすべて持っていると想像してください。

モノスペースフォントのConsolasを使用すると、次のようになります。 Backspaceキーを押すだけで、残りの時間を費やして、実際に役立つことを実行できます。

The image shows that with Consolas, the rectangle selects reputation property.

そして、ここではSegoe UIと同じです。痛い!

The image shows that with Segoe UI, some reputation properties are selected only partially, while on other lines, the beginning of rating property is selected.

30

私はプロポーショナルフォントを使用していましたが、主に句読点が実際に区別しやすいことがわかったためですが、他の誰もそれをせず、誰もが無意識に等間隔フォントを想定しているため、あきらめてきました(Wikipediaの記事で言及されているように、表形式でフォーマット、コメントのアスキーアートなど)。

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

15
Dean Harding

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

9
Aeo

私はプロポーショナルフォントを使用し(Arialはこれまでに見つけた中で最も優れており、Verdanaは次点の次点です)、正直なところ、固定幅のフォントを使用していることにまだ戸惑っています。なぜそのような読みやすさを犠牲にしたいのですか?表形式のフォーマットが望ましいかどうかは理解できましたが、フォントに関係なくメンテナンスの悪夢になるため、望ましくありません。

6
rwallace

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

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

Trim font

4
user287424

Bjarne Stroustrupの本C++プログラミング言語で覚えていますが、コードには拡張間隔フォントが使用されました。 (ウェブ上でサンプルページを見つけることができません)

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

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

4
Nivas

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

2
themue

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

これらは私の発見です:

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

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


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

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

2
user1249

モノスペースフォントを使用すると、さまざまな属性を比較できます。

比較:

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

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

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

To:

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

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

0
Adam Matan

プロポーショナルフォントの方がきれいだと思いますが、一部のフォント、特にサンセリフフォントでは、「I」と「l」の違いがわかりません。待って、もう一度その変数に名前を付けましたか?

0
Billjk