누구든지 비례 글꼴을 선호합니까? [닫은]


51

프로그래밍 스타일에 대한 wikipedia 기사를 읽고 수직 정렬 코드에 대한 논쟁에서 무언가를 발견했습니다.

고정 폭 글꼴에 의존 표 형식은 편집기가 고정 너비 글꼴을 사용한다고 가정합니다. 대부분의 최신 코드 편집기는 비례 글꼴을 지원하며 프로그래머는 가독성을 위해 비례 글꼴을 사용하는 것을 선호 할 수 있습니다 .

솔직히 말해서 비례 글꼴을 선호하는 프로그래머를 만난 적이 없다고 생각합니다. 그것들을 사용하는 이유도 생각할 수 없습니다. 왜 누군가가 비례 글꼴을 선호합니까?


11
나는 읽기에 비례 글꼴을 좋아하지만 코드에는 고정 폭 글꼴을 엄격하게 사용합니다. 항상, 항상, 항상
— Frank Shearar

12
또한 Wikipedia를 인용하려면 : [citation needed]:)
— Dr Hannibal Lecter

7
몇 년 전, 내가 대학에서 반 농담 한 교수는 "... 택배가 새롭지 않은 한 프로그래밍이 아니기 때문"이라고 말했다.
— Steven Evers

12
비례 글꼴을 사용하는 이유는 매우 간단합니다. 더 이상 1980 년대가 아닙니다. 캐릭터 터미널에서 넘어갔습니다. 신문, 서적 및 웹 사이트는 일반적으로 가독성을 위해 모노 스페이스 글꼴을 사용하지 않습니다. 나는 그들이 요점을 가지고 있다고 생각합니다.
— Timwi

4
Verdana 11px는 훌륭합니다.
— Czarek Tomczak

답변:


47

비례 글꼴에 대한 공통점은 논평했다.

  • 비례 글꼴을 사용하여 코드를 세로로 정확하게 정렬 할 수 없습니다. 모두가 탄력있는 tabstops를 사용하고 있다면 슬프게도 비례 글꼴과 코드를 정확하게 세로로 정렬 할 수 있습니다 ...
  • 일부 비례 글꼴로 인해 일부 문자 그룹을 구별하기가 어렵습니다. (예 : mrnm). 그러나 모든 프로그래밍 글꼴이 완벽한 것은 아닙니다. Courier New는 동일한 'O'와 '0'및 동일한 '1'과 'l'을 갖 습니다 .
  • 일부 IDE는 앞에서 언급 한 Visual Studio 또는 Python의 IDLE 과 같이 고정 너비가 아닌 글꼴을 제대로 지원하지 않습니다 . 일부 상황에서는 사용할 수 없습니다. (예 : 터미널)
  • 코딩을 위해 비례 글꼴을 선택하면 끝없는 거룩한 전쟁에 빠지게됩니다. 그러나 키보드와 의자 사이에 문제가 있습니다.

비례 글꼴을 선호하는 포인트

개인적으로 나는 'Ubuntu'글꼴 과 WenQuanYi Zen Hei Mono를 모두 즐겁게 사용했으며 서로를 선호하지 않습니다. :)

우분투
WenQuanYi 젠 헤이 모노
Ubuntu 10과 WenQuanYi Zen Hei Mono 9를 비교했습니다. 당신이 저에게 물어 보면 여기에 확실한 승자가 없습니다.

즉, 글꼴은 음식과 같습니다. 일부는 잘 둥글고, 일부는 뜨겁고 매운 것 같습니다. 올바른 글꼴이 없거나 지금은 모두 사용할 것입니다. 선택을위한 예!


우분투 글꼴이 출시되었음을 알지 못했습니다. 나는 그것이 잘 작동한다고 생각합니다.
— Alan Pearce

WenQuanYi Zen Hei Mono를 표시해 주셔서 +1입니다. 필자는 논문에서 거의 확실히 사용할 것이다. 인쇄물의 모양에 따라 다릅니다. 화면에서는 놀랍고 가로 방향이 그리 많지 않아 인쇄에 매우 중요합니다.
— Konrad Rudolph

9
실제로 비례에 대해 하나의 큰 뚱뚱한 점이 있습니다. 아무도 탄력있는 탭 스톱을 신경 쓰지 않기 때문에 실제로 정렬 할 수 없습니다. 고정 폭 다이-하드와 실제로 잘 보이는 가변 폭 글꼴을 읽는 것을 선호하는 사람들 모두 에게 이익이되는 점을 고려하면 완전히 이상 합니다. 어서, 세상! 탄력있는 탭 스톱!
— Roman Starkov

7
@romkyns : 다른 라인과 정렬하지 않는 들여 쓰기 스타일을 채택하십시오. 단순한.
— Zan Lynx

4
@ZanLynx 나는 줄의 시작 이외의 위치에서 세로 정렬을 좋아하는 것보다 비례 글꼴을 좋아하기 때문에 그렇게했습니다.
— Roman Starkov

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 웹 사이트 자체에서 내 등급을로드하고 항상 최신 데이터를 보유 할 수있는 방법으로 교체하고 싶습니다. MyReputation속성 을 리팩터링하기 시작 했으며 이제 범위 내에서 초기화를 제거하고 싶습니다. 내가 4 개가 아니라 84 개의 SE 웹 사이트를 모두 가지고 있다고 상상해보십시오.

모노 스페이스 글꼴 인 Consolas를 사용할 때 발생하는 상황은 다음과 같습니다 . Backspace를 누르면 나머지는 실제로 유용한 작업을 수행하는 데 남은 시간을 할애 할 수 있습니다.

이미지는 Consolas에서 사각형이 평판 특성을 선택 함을 보여줍니다.

그리고 여기 Segoe UI 와 같은 것입니다 . 아야!

이미지는 Segoe UI에서 일부 평판 특성이 일부만 선택되고 다른 라인에서는 등급 특성의 시작이 선택됨을 보여줍니다.


9
이것은 monspace 글꼴과 일치하는 간격을 사용했기 때문에 발생했습니다. 비례 글꼴이없는 적절한 간격이 있으면이 문제가 발생하지 않습니다.
— Kos

6
@ Kos : 그래서 세 개의 탭을 누르는 대신 너무 많이 입력하고 마지막 공백을 제거하는 것보다 스페이스 키를 15 번 누르십시오. 너무 복잡해 보이지 않습니까?
— Arseni Mourzenko 2

6
Eclipse는 실제로 사각형 선택 모드에 다른 글꼴 사용을 지원하므로 문제가 덜 발생합니다.
— Nicholas

8
@Kos RE : "비례 글꼴과의 적절한 간격": 그러나 다른 프로그래머가 같은 파일에서 다른 글꼴을 사용하면 정렬되지 않습니다. 모든 편집자가 고정 폭 글꼴을 사용하는 경우 코드가 정렬을 위해 탭을 남용하지 않는다고 가정하면 항상 정렬됩니다.
— Max Nanasy

5
탄력있는 탭 중지없이 2 년 동안 비례 글꼴을 사용하고 있습니다. 대부분의 IDE에서 다중 캐럿 선택을 완전히 대체하는 다른 것이 있기 때문에 사각형 선택을 사용하지 않습니다. 이 예에서는 "MyReputation ="을 선택한 다음 IntelliJ / JetBrains 편집기 CTRL-D에서 SublimeText 및 VSCode를 사용하여 다음 항목 선택을 누릅니다 ALT-J. 다음으로 SHIFT-CTRL-RIGHT ARROW선택을 오른쪽의 다음 토큰으로 확장하면 완료됩니다. 주요 이점은 편집 할 항목을 정렬 할 필요가 없다는 것입니다. 단점, 정렬 된 것이 있으면 더 이상 존재하지 않습니다.
— Hay

15

나는 비례 글꼴을 주로 사용했는데, 구두점은 실제로 구별하기가 더 쉽기 때문에 시간이 지남에 따라 아무도 그것을하지 않고 모든 사람이 무의식적으로 단 간격 글꼴을 가정하기 때문에 포기했습니다 (wikipedia 기사에서 언급했듯이 표 형식으로 시도) 댓글 형식의 ASCII 아트 등).

또한 Visual Studio의 문제는 Microsoft가 수정하고 싶지 않아 기본적으로 잘 설계된 비례 글꼴을 사용할 수 없게 만듭니다.


9
해당 버그에 대해 Microsoft와 의견을 나누십시오. 그리고 그들의 기운찬 반응은 기본적으로 "안녕! 사람들이 실제 생활에서 그렇게 행동했다고 상상해보십시오.
— danio

2
필자가 인용 한 바로 그 이유 중 일부에 비례 너비 글꼴을 사용하지는 않지만 내 내부 타이포 그래프는 디자인과 프로그래밍에서 적절한 편집기 지원을 위해 끊임없이 노력하고 있습니다.
— 존 퍼디

이상하게도, 문장 부호는 공간을 덜 차지하기 때문에 실제로 구분하기가 더 어렵다고 생각합니다 (특히 전체 정지). 또한 메모장 ++은 오랫동안 코멘트에 Comic Sans MS를 사용했음을 기억합니다.
— DisgruntledGoat

6
모노 스페이스 글꼴에서 문장 부호를 식별하기 어려운 경우 다른 모노 스페이스 글꼴이 있습니다. 이는 비례 글꼴을 사용해야한다는 의미는 아닙니다.
— 아무도

정확한 구두점을 위해 EnvyCode A 또는 B를 사용 하는 경우가 있습니다 .
— zanlok

9

개인적으로 상관하지 않습니다. 탭을 정렬하고 글꼴을 읽을 수있게 유지하는 한, 고정 폭, 비례 또는 기타 벽체 간격을 사용하는지는 신경 쓰지 않았습니다. 내 탭을 공백으로 바꾸지 마십시오. 나와 싸우지 않을 것입니다.


3
난 전적으로 동의합니다. 또한 하드 코딩 된 공백과 달리 탭을 사용하면 고정 폭 글꼴과 비례 글꼴을 전환하고 그에 따라 탭 너비를 조정할 수 있습니다. 그러나 아직 보지 못한 것은 탭 너비를 EM 단위로 설정할 수있는 편집기입니다.
— August Karlstrom

6

나는 비례 글꼴을 사용한다 (Arial은 지금까지 내가 찾은 최고 다. Verdana는 준우승자이다). 솔직히 나는 여전히 사람들이 고정 폭 글꼴을 사용하는 것을 좋아한다. 왜 그런 가독성을 희생하고 싶습니까? 표 형식이 바람직한 지 이해할 수는 있지만 글꼴에 관계없이 유지 보수의 악몽을 일으키기 때문에 바람직하지 않습니다.


4
나는 당신이 Arial과 Verdana처럼 놀랐습니다. 나는 그것들이 약간 거칠고 비전문적이라고 생각합니다. Calibri를 사용해 보셨습니까?
— Timwi

2
8pt Verdana를 사용하고 있습니다. 긴 식별자 이름을 쉽게 읽을 수 있습니다. 스크롤하지 않고 70 줄의 코드를 볼 수 있고 줄이 훨씬 짧으므로 코드는 신문과 같이 좁은 열입니다. 이를 통해 편집기의 뷰를 두 개의 수직 열로 나눌 수 있습니다. 한 뷰에서 선언을보고 다른 뷰에서 코드를 작성합니다. 또한 디버깅 할 때 화면에 디버깅 창이 가득 차고 코드보기가 작은 공간에 적합합니다. 비례 글꼴을 사용하면 사물을 세로로 정렬하고 주석 주위에 별표 상자를 넣을 필요가 없습니다.
— Calmarius

2
Lucida Console 글꼴을 사용하여 세로 모드에서 90x 회전 한 1920x1200 모니터의 Visual Studio에서 147 줄의 코드가 표시됩니다.
— zanlok

빔 모나코 글꼴로 158 명 선 ... 내 화면도 HD하지 않습니다
— 마크 K 코완

4

나는 Bjarne Stroustrup의 저서 C ++ 프로그래밍 언어 , 확률 적으로 간격을 둔 글꼴이 코드에 사용되었다는 것을 기억 합니다. (웹에서 샘플 페이지를 찾을 수 없습니다)

나는 정확한 이유를 기억하지 못하지만, 그가이 책에서 새로운 소개 로 이것을 바꾸고 다른 변화 (C ++ 언어 자체)를 언급했다고 생각합니다 .

개인적으로 저는 고정 된 공간을 선호합니다. Consolas는 내가 가장 좋아하는 것입니다.


1
내 스페셜 에디션의 5 페이지 확인 : 비례 글꼴은 일반적으로 텍스트에 더 나은 것으로 간주되며,이를 사용하면 비논리적 인 줄 바꿈이 줄어들고 대부분의 사람들이 익숙해집니다. 읽기 쉽다는 것을 알았습니다. Stroustrup은 코드를 작성하려고 시도하지 않고 여기에 코드를 제시하므로 상황이 다를 수 있습니다.
— David Thornley

4
@David, 예, 그는 코드를 제시하고 있습니다. 그러나, 그것은 "읽기"에 대해 제시되며 고정 대 비례에 대한 질문은 "읽기"코드, IMHO에 대한 것입니다.
— Nivas

4

짧은 줄과 열린 공간이 많은 언어의 경우 고정 폭 글꼴을 선호합니다. 가변 너비 글꼴은 긴 줄과 짙은 구문이있는 경우 가독성을 향상시킬 수 있습니다.

가장 비례적인 글꼴의 문제점은 프로그래밍 용으로 설계되지 않았다는 것입니다. 이 페이지 는 몇 가지 글꼴을 보여줍니다.

트림 글꼴


4
Google 코드와의 연결이
— Florian Castellane

2

Pharo와 같은 스몰 토크 환경은 비례 글꼴을 사용하며 언어 스타일로 인해 매우 좋습니다. 그러나 Go와 같은 C 스타일 언어 또는 Erlang 또는 Python과 같은 다른 언어에서는 고정 폭 글꼴을 선호합니다.


2

나는 한때 이클립스에 대한 읽기 쉽고 좋은 글꼴을 찾는 데 시간을 보냈으며 XP에서는 Verdana를 꽤 오랫동안 사용했습니다. Consolas는 진정으로 프로그래밍하기에 훌륭하기 때문에이를 해결했습니다.

이것들은 나의 발견입니다 :

  • 대부분의 비례 글꼴은 산문을 위해 디자인되었으며 구두점을 거의 사용하지 않습니다 (일반적으로 1 자 또는 2 자임). 언어의 C 제품군은이 많은 내 의견으로는 - - 간단하지 않습니다 구두점의 좋은보고 필요 이상으로 읽기 어렵습니다.
  • 가변 길이 문자는 줄 길이가 다양 함을 의미합니다. 화살표 버튼을 사용하여 탐색 할 때 커서가 어디에서 끝나는 지 추측하기가 거의 불가능합니다. 나는이 성가신 것을 발견했다.
  • 수직 간격도 중요합니다. 이것은 일반적으로 쉽게 재정의 할 수있는 것이 아니며 대부분의 비례 글꼴은 원하는 것보다 줄 간격이 적습니다.
  • 비례 글꼴로 테스트되는 IDE는 거의 없습니다. 이렇게하면 커서를 잘못된 위치에 놓거나 문자를 잘못 다시 칠하는 등의 미묘한 버그가 생길 수 있습니다.

따라서 나는 그것이 나를 위해 문제가 가치가 없다는 것을 알았습니다.


정렬 및 기타 레이아웃에 대한 참고 사항 : 모든 저장시 각 파일을 자동 형식화하도록 Eclipse를 설정 했으므로 모든 멋진 레이아웃이 자동으로 재설정됩니다. Eclipse는 여러 공백 대신 탭을 사용하며 비례 글꼴로도 올바르게 배치 할 수 있습니다. 따라서 포맷터 레이아웃 은 서로 다를 수 있지만 표준 포맷터 구성은 사용하지 않습니다.

법 의학적 분석을 수행 할 때 모든 저장시 모든 사람에 대해 자동 서식을 적용하면 소스 제어 시스템의 오 탐지를 최소화 할 수 있다고 생각합니다.


0

Monospaced 글꼴을 사용하면 다른 속성을 비교할 수 있으므로 절대로 사용하지 마십시오.

비교:

name1 = [ "윌리엄", "셰익스피어", 1564, "Peotry"]

name2 = [ "John", "Locke", 1632, "철학"]

name3 = [ "Jonathan", "Littell", 1967, "프로스"]

에:

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

비례 글꼴은 동일한 속성을 다른 속성 위에 정확히 배치 할 수 없습니다.


2
어떤 환경이 문제인지 알고 싶습니다. 비례 및 고정 폭 글꼴이 모두있는 탭을 사용하여 열로 정렬 할 수 있습니다. 문제는 탭 대신 공백을 사용하는 경우입니다.
— temptar

2
@temptar : "iii12345", "AAA12345"및 "nnn12354"를 서로 위에서 고려하십시오. 실수 ( "345")는 훨씬 쉽게 발견 할 수 있습니다. 값 중간에 탭을 넣을 수 없습니다.
— Adam Matan

1
@temptar 탭은 Python에서 권장하지 않으며 너비는 편집기마다 다르므로 코드가 잘못 정렬 될 수 있습니다.
— Adam Matan 2019

2
@Adam Matan 그렇기 때문에 멋진 형식을 지정해서는 안됩니다.
— August Karlstrom

0

비례 글꼴이 더 예쁘다고 느끼지만 일부 글꼴, 특히 산세 리프 글꼴에서는 "I"와 "l"의 차이를 볼 수 없습니다. 잠깐, 그 변수의 이름을 다시 무엇으로 했습니까?


2
Verdana는 쉽게 구별 할 수 있도록 serif를 가지고 있습니다.
— Calmarius

1
0과 O는 또 다른 중요한 문제입니다. 또한 'vs`및. vs도 마찬가지입니다. 때때로 &와 $는 문제가있다 (perl / php에서 걱정스러운). 그러나 Verdana는 0에서 위대하지는 않지만 위의 대부분에 적합하다. 슬프게도, 악의적 인 공간이 혼합 된 탭이있는 기존 프로젝트에서 나는 보통 Lucida Console을 포기하고 사용합니다. 그러나 변수 이름 지정을 요구하는 경우 최신 코드 완성을 사용하거나 최소한 복사 / 붙여 넣기를 사용하지 않는 것입니다.
— zanlok

분명한 0Oo1lLiI가있는 비례 글꼴 중 하나는 TeX의 "Latin Modern Mono Prop"로, 코드에 맞게 디자인 된 "Latin Modern Mono"에 비례하여 상대적으로 간격을두고 있습니다 (스크린 인쇄가 아닌 경우에는 렌더링이 약간 흐릿함). . 구두점은 여전히 ​​문제이며 코드 IMHO에서 그 중요성에 비해 간격이 너무 작으며 두 개의 작은 따옴표와 큰 따옴표와 같은 모호성을 만듭니다. ''vs ",'' vs "
— Beni Cherniavsky-Paskin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.