Orantılı yazı tiplerini tercih eden var mı? [kapalı]


51

Programlama stili hakkındaki wikipedia makalesini okuyordum ve dikey olarak hizalanmış koda karşı bir tartışmada bir şey fark ettim:

Tek aralıklı fontta güven; tablo biçiminde biçimlendirme, düzenleyicinin sabit genişlikte bir yazı tipi kullandığını varsayar. Çoğu modern kod düzenleyici orantılı yazı tiplerini destekler ve programlayıcı okunabilirlik için orantılı yazı tipini kullanmayı tercih edebilir .

Dürüst olmak gerekirse, orantılı bir font tercih eden bir programcıyla tanıştığımı sanmıyorum. Bunları kullanmak için gerçekten iyi bir sebep düşünemiyorum. Neden biri orantılı bir fontu tercih etsin?


11
Okumak için orantılı yazı tiplerini seviyorum, ancak kod için kesinlikle tek aralıklı yazı tiplerini kullanıyorum. Her zaman, her zaman, her zaman.
Frank Shearar

12
Ayrıca Wikipedia'dan alıntı yapmak için: [citation needed]:)
dr Hannibal Lecter

7
Yıllar önce, kolejde yarı şaka yapan bir profesör "yeni kurye olmadığı sürece programlama yapmıyordu" dedi.
Steven Evers

12
Orantılı bir yazı tipi kullanmamın nedeni çok basit. Artık 1980'lerde değil. Karakter terminallerinden taşındık. Gazeteler, kitaplar ve web siteleri genellikle okunaklılık nedeniyle tek boşluklu fontlar kullanmaz. Bir noktalarının olduğunu düşünüyorum.
Timwi

4
Verdana 11 piksel harika.
Czarek Tomczak

Yanıtlar:


47

Oransal fontlara karşı ortak noktalar yorumladı.

  • Kodu tam olarak orantılı yazı tipleriyle dikey olarak hizalayamazsınız. Ne demek olabilir herkes kullandıysa doğrusu, orantılı yazı tipleri ile dikey kodu hizalamak elastik tabstops heyhat ama ...
  • Bazı orantılı fontlar, bazı karakter gruplarını ayırt etmeyi zorlaştırır. (örneğin, mrnm). Bununla birlikte, tüm programlama fontları da mükemmel değildir: Courier New 'O' ve '0' ile aynı '1' ve 'l' ile aynıdır.
  • Bazı IDE'ler sabit genişlikte olmayan fontlar için (örneğin yukarıda belirtilen Visual Studio veya Python's IDLE gibi) zayıf bir desteğe sahiptir . Bazı bağlamlarda, bir tane de kullanamazsınız. (örneğin, terminaller.)
  • Kodlama için orantılı bir yazı tipi seçmeniz sonsuz kutsal savaşlara girmenizi sağlayacaktır. Bununla birlikte, burada klavye ile sandalye arasında bir sorun var.

Oransal font lehine puanlar

Şahsen ben hem 'Ubuntu' yazı tipini hem de WenQuanYi Zen Hei Mono'yu zevkle kullanıyorum ve kendimi bir başkasını tercih edemiyorum. :)

Ubuntu
WenQuanYi Zen Hei Mono
Ubuntu 10 ve WenQuanYi Zen Hei Mono 9 karşılaştırıldı. Bana sorarsan burada açık bir kazanan yok.

Bununla birlikte, yazı tipleri yemek gibidir. Bazıları iyi yuvarlaklaştırılmış, bazıları sıcak ve baharatlı gibi - bir tane doğru yazı tipi yok, yoksa hepimiz şu anda kullanıyor oluruz. Seçim için Yay!


Ubuntu yazı tipinin serbest bırakıldığını anlamadım. Bence orada iyi çalışıyor.
Alan Pearce

Bana gösterilen +1 WenQuanYi Zen Hei Mono, bu yazı tipi harika. Neredeyse kesinlikle onu tezimde kullanacağım. Basılı olarak ne kadar iyi göründüğüne bağlı olarak - ekranda şaşırtıcı görünüyor ve çok fazla yatay yer almıyor, bu da baskıda çok önemli.
Konrad Rudolph

9
Gerçekten, orantılı karşı sadece büyük bir yağlanma noktası var: gerçekten hizalanamazsınız çünkü hiç kimse elastik tablaları umursamıyor. Hem tek parça kalıplara hem de gerçekten iyi görünümlü değişken genişlikli fontları okumayı tercih edenler için ne kadar faydalı olduğu göz önüne alındığında, tamamen gariptir . Hadi dünya! Elastik tablar!
Roman Starkov

7
@romkyns: Diğer satırlarla sıraya dayanmayan bir girinti stili benimseyin. Basit.
Zan Lynx,

4
@ZanLynx Yaptım çünkü orantılı fontları, çizginin başlangıcı dışındaki yerlerde dikey hizalamayı sevdiğimden daha fazla seviyorum.
Roman Starkov

29

Dikdörtgen seçimler : kodlama için monospace dışındaki fontları kullanmayı neredeyse imkansız kılan bir neden var .

Bu özellik, genellikle çok kullanışlı olmayan ve normal metinle çalışırken çok bilinmeyen, geliştiriciler için çok önemlidir. Çok sayıda senaryo hayal edebilirsiniz: //birkaç satırdaki yorumları kaldırmak , parantez veya diğer karakterleri eklemek, vb. ancak onu seçip değiştirin.

Bir örnek alalım:

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

Bu eski kodda, kodumu derecelendirmeyi, derecelendirmemi Stack Exchange web sitelerinden yükleyecek bir yöntemle değiştirmek istiyorum, her zaman güncel bir veriye sahip olmak istiyorum. MyReputationÖzelliği yeniden düzenlemeye başladım ve şimdi kapsamayı başlatma işlemini kaldırmak istiyorum. Dört tane olmadığımı, 84 SE web sitesinin hepsinin olduğunu hayal edin.

İşte bir monospace fontu olan Consolas kullanırken ne olur ? Backspace tuşuna basın ve hepsi bu kadar, kalan zamanı gerçekten işe yarar bir şey yapmak için harcayabilirim.

Resimde, Consolas ile dikdörtgenin itibar özelliğini seçtiğini göstermektedir.

Ve burada Segoe UI ile aynı şey . Ah!

Resim, Segoe UI ile bazı itibar özelliklerinin sadece kısmen seçildiğini, diğer satırlarda derecelendirme başlangıcının seçildiğini göstermektedir.


9
Bu, canavar yazı tipiyle eşleştirmek için olan boşlukları kullandığınız için oldu. Orantılı yazı tipiyle w / r / t arasında uygun boşluk varsa, bu sorun olmazdı.
İstanköy

6
@Kos: yani, üç sekmeye basmak yerine, çok fazla yazdığınıza dikkat edip boşluk tuşuna on beş kez basıp son boşluğu silmek ister misiniz? Biraz fazla karmaşık görünüyor, sence de öyle değil mi?
Arseni Mourzenko

6
Eclipse aslında dikdörtgen seçim modu için farklı bir font kullanmayı destekliyor ve bu da problemi azaltıyor.
Nicholas

8
@Kos RE: "orantılı font ile uygun boşluk bırakma": Fakat eğer farklı bir programcı aynı dosya üzerinde farklı bir font kullanıyorsa, sıralanmayacaktır. Tüm editörler monospace fontları kullanıyorsa, her zaman sıralanır (kodun hizalama sekmelerini kötüye kullanmadığı varsayılarak).
Max Nanasy

5
2 yıl boyunca elastik tablar olmadan orantılı bir font kullanıyorum. Dikdörtgen seçimler kullanmıyorum çünkü çoğu IDE'de tamamen yerini alacak başka bir şey var: çoklu karet seçimi. Bu örnekte "MyReputation =" CTRL-Dyi seçeceğim, ALT-Jsonra da SubJimeText ve VSCode'da, IntelliJ / JetBrains editörlerinde , bir sonraki tekrarlamayı seç düğmesine basacaktım . Ardından, SHIFT-CTRL-RIGHT ARROWseçimi sağdaki sonraki tokene genişletmek için bu yapılır. Ana avantaj, hiç kimsenin düzenlemeleri için bir şeyler düzenlemesi gerekmemesidir. Dezavantaj, uyumlu bir şeyiniz varsa, artık olmayacak.
Hay

15

Çoğunlukla noktalama işaretini ayırt etmenin daha kolay olduğunu düşündüğüm için orantılı bir font kullandım, ancak zamanla pes ettim çünkü başka hiç kimse yapmıyor ve bilinçsizce herkes mono aralıklı fontlar varsayıyor (wikipedia makalesinde dediği gibi, tabular yapmayı deniyor) biçimlendirme, yorum ve benzeri sanat.

Ayrıca, Visual Studio'da Microsoft'un düzeltmek istemediği sorunlar, temelde iyi tasarlanmış orantılı fontları kullanmayı imkansız kılıyor.


9
Bu hataya microsoft ile mini savaş yorumunuzu seviyorum. Ve onların temelde verdiği neşeli tepkileri "Merhaba! Teşekkürler! Tanıştığımıza memnun oldum! İnsanların gerçek hayatta böyle davrandığını hayal edin ...
danio

2
Belirttiğiniz bazı nedenlerden ötürü orantılı genişlikte bir yazı tipi kullanmamama rağmen, iç tipografim tasarım ve programlamada uygun editör desteği için sürekli özlem duyduğundan, sempati için bir puan kazanırsınız.
Jon Purdy

Garip, sadece noktalama işaretlerinin ayırt edilmesinin daha zor olduğunu düşünüyordum (özellikle tam duraklar) çünkü daha az yer kaplar. Ayrıca Notepad ++ 'un Comic Sans MS'i en uzun süre yorumlarda kullandığını da hatırlıyorum.
DisgruntledGoat

6
Noktalama işaretini bir monospace fontunda tanımlaması zor bulursanız, diğer monospace fontları da vardır - orantılı bir font kullanmanız gerektiği anlamına gelmez.
Kimse

Tam olarak daha iyi noktalama işaretleri için bazen EnvyCode A veya B kullanıyorum .
zanlok

9

Şahsen umrumda değil. Sekmelerimi hizalı tuttuğunuz ve fontu okunaklı tuttuğunuz sürece, tek boşluklu, orantılı veya başka bir duvar dışı boşluk kullanmam daha az umrumda değildi. Sekmelerimi boşluklarla değiştirmeye başlama, sadece benimle kavga edemezsin.


3
Tamamen katılıyorum. Ve sekmelerle (kodlanmış alanların aksine) tek boşluklu ve orantılı fontlar arasında geçiş yapabilir ve sekme genişliğini buna göre ayarlayabilirsiniz. Yine de görmedim, sekme genişliğini EM cinsinden ayarlayabileceğiniz bir editör.
Ağustos Karlstrom

6

Orantılı bir yazı tipi kullanıyorum (Arial şu ​​ana kadar bulduğum en iyisi, Verdana yakın bir koşucu) ve dürüst olmak gerekirse, insanların sabit genişlikli yazı tipleri kullanmasına hala şaşırdım; neden böyle bir okunabilirliği feda etmek istiyorsun? Tablo biçiminde biçimlendirmenin istenip istenmediğini anlayabiliyorum, ancak yazı tipinden bağımsız olarak bir bakım kabusu yarattığı için değil.


4
Arial ve Verdana'yı sevdiğine şaşırdım. Onları biraz kaba ve profesyonelce buluyorum. Calibri'yi denedin mi?
Timwi

2
8pt Verdana kullanıyorum. Uzun tanımlayıcı adlarını okumak daha kolaydır. Kaydırmadan 70 satır kod görüntüleyebilirim ve satırlar çok daha kısadır, bu nedenle kod, bir gazetede olduğu gibi dar bir sütundur. Bu, editörün görüşünü iki dikey sütuna bölmeme izin veriyor: bildirimi bir görünümde görüyorum ve diğerine kod yazıyorum. Ayrıca hata ayıklama sırasında, ekran hata ayıklama pencereleriyle doludur, kod görünümü küçük alana sığar. Orantılı yazı tiplerini kullanmak, şeyleri dikey olarak hizalama ve yorumların içine ascii yıldız kutuları koyma isteğini ortadan kaldırır.
Calmarius

2
Lucida Console yazı tipini kullanarak Visual Studio'da bir portre modu için 90 ° döndürülmüş 1920x1200 monitörde 147 kod satırı görüyorum.
zanlok

Vim'de Monako yazı tipiyle 158 satır ... Benim ekranım bile HD değil
Mark K Cowan

4

Bjarne Stroustrup'un kitabında hatırlıyorum C ++ Programlama Dili , propotianitely aralıklı fontlar kod için kullanıldı. (Web üzerinde örnek sayfa bulamıyorum)

Sebepleri tam olarak hatırlamıyorum, fakat bu ve diğer değişikliklerden bahsettiğini düşünüyorum (C ++ dilinin kendisi) bu kitapta yeni bir giriş olarak.

Şahsen ben sabit alanları tercih ederim. Konsollarım benim favorim.


1
Özel Sürümümün 5. sayfasını kontrol etme: orantılı fontlar genellikle metin için daha iyi olarak kabul edilir, bunların kullanılması daha az mantıksız satır sonlarına izin verir ve çoğu insan buna alışır. Okumasını kolay buluyorum. Stroustrup burada kod sunuyor, oluşturmaya çalışmıyor ve bu işleri farklı kılabilir.
David Thornley,

4
@David, evet, kod sunuyor. Ancak, "okuma" için sunulmuştur ve sabit - orantılı sabit sorusu IMHO "okuma" kodudur.
Nivas,

4

Kısa çizgiler ve çok fazla boş alan bulunan diller için tek boşluklu fontları tercih ederim. Değişken genişlikli fontların, uzun satırların ve yoğun söz diziminin olduğu yerlerde okunabilirliği artırabileceğini buluyorum.

Orantılı yazı tipleriyle ilgili sorun, programlama için tasarlanmamış olmalarıdır. Bu sayfa olan bazı yazı tiplerini gösterir.

Yazı tipini kırp


4
Google Koduna ölü bağlantı :(
Florian Castellane

2

Pharo gibi küçük ortamlar orantılı yazı tiplerini kullanır ve dil stili nedeniyle orada çok iyi görünür. Ancak Go ya da Erlang ya da Python gibi C tarzı dillerde monospaced yazı tiplerini tercih ederim.


2

Bir süre önce Eclipse için iyi ve okunabilir bir yazı tipi bulmak için biraz zaman harcadım ve XP altında bir süredir Verdana kullandım. Konsollar bunu çözdü çünkü programlama için gerçekten mükemmel.

Bunlar benim bulgularım:

  • Orantılı yazı tipleri, nesir ve yalnızca küçük noktalama işaretleri için tasarlanmıştır (sırayla genellikle bir veya nadiren iki karakterdir). C dilleri ailesinin birçok noktalama işareti vardır, ki bence - bence - iyi görünmüyor ve gereğinden fazla okumak zor.
  • Değişken uzunluklu karakterler, satır uzunluğunun değiştiği anlamına gelir. Bu, ok düğmelerini kullanarak gezinirken imlecin nerede biteceğini tahmin etmeyi imkansız hale getirir. Bu can sıkıcı buldum.
  • Dikey boşluklar da önemlidir. Bu normalde kolayca geçersiz kılınabilecek bir şey değildir ve çoğu orantılı font, satırlar arasında istediğimden daha az yer tutar.
  • Çok az sayıda IDE, orantılı fontlarla test edilir. Bu, imleci yanlış yere koymak, hatalı şekilde yeniden karakter yazmak ve benzeri şeyleri yapmak için ince böceklere yer açar.

Bu yüzden benim için belaya değmeyeceğini öğrendim.


Hizalama ve diğer düzenler hakkında not: Eclipse'i her kaydetme işleminde her dosyayı otomatik biçimlendirecek şekilde ayarladım, böylece tüm süslü düzenler otomatik olarak sıfırlanır. Eclipse, birden çok boşluk yerine sekmeler kullanır ve bunlar, orantılı fontlarla bile doğru şekilde konumlandırılabilir. Dolayısıyla biçimlendirici düzenleri birbirinin üzerinde olabilir , ancak buna sahip olmayan standart biçimlendirici yapılandırmasını kullanıyoruz.

Her tasarrufta herkes için otomatik biçimlendirmenin uygulanmasının, adli analiz yaparken, kaynak kontrol sistemindeki yanlış pozitifleri en aza indirdiğine inanıyorum.


0

Asla, asla, çünkü Monospaced fontları farklı özellikleri karşılaştırmamı sağlıyor.

Karşılaştırmak:

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

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

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

Kime:

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

Orantılı yazı tipleri, eşdeğer özellikleri tam olarak üst üste yerleştiremezler.


2
Bunun sizin için hangi ortamdan kaynaklandığını bilmekle ilgileniyorum. Sütunları hizalamak için hem orantılı hem de sabit genişlikli yazı tiplerine sahip sekmeleri kullanabilirsiniz. Sorunun ortaya çıktığı yer sekme yerine boşluk kullanıyorsanız.
temptar

2
@temptar: "iii12345", "AAA12345" ve "nnn12354" değerlerini üst üste yerleştirin. Hata ("345") bulmak çok kolaydır. sekmeleri bir değerin ortasına koyamazsınız.
Adam Matan

1
@temptar Sekmeleri Python tarafından önerilmez ve genişlikleri yanlış düzenlenmiş kodlara yol açabilecek farklı düzenleyicilerde değişiklik gösterir.
Adam Matan

2
@Adam Matan İşte bu yüzden süslü biçimlendirme yapmamanız gerekiyor.
Ağustos Karlstrom

0

Orantılı yazı tiplerinin daha güzel olduğunu hissediyorum, bazılarında, özellikle de sans-serif yazı tiplerinin "ben" ile "l" arasındaki farkı görmesi imkansız. Bekle, bu değişkeni tekrar ne adlandırdım?


2
Verdana, farklılaşmayı kolaylaştırmak için bende dizileri var.
Calmarius

1
0 ve O başka bir büyük sorundur. Ayrıca 'vs' ve. yanı sıra, vs. Bazen ve ve $ bir problemdir (perl / php için endişe vericidir) Bununla birlikte, Verdana, 0 s'de harika olmasa da, yukarıdakilerin çoğu için iyidir. Ne yazık ki, kötü alanlarda karışık sekmeleri olan mevcut projelerde, genellikle Lucida Console'dan vazgeçiyorum ve kullanıyorum. Değişken isimlendirmesi hakkında soru soruyorsanız, modern kod tamamlama özelliğini kullanmıyorsunuz veya en azından istediğiniz gibi kopyala / yapıştır kullanmıyorsunuz.
zanlok

İnanılmaz bir 0Oo1lLiI olduğunu bildiğim orantılı bir yazı tipi, kod için kesinlikle tasarlanan “Latin Modern Mono” nun orantılı olarak aralıklı bir akrabası olan “Latin Modern Mono Pervane” dir. . Noktalama hala bir sorun, IMHO kodundaki önemi nedeniyle çok az boşluk bırakıyor ve belirsizlikler yaratıyor, örneğin iki tek fiyat teklifi yerine bir çift fiyat teklifi: '' vs ",'' vs "
Beni Cherniavsky-Paskin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.