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


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.