2008-08-18 9 views
12

मैं वास्तव में एक आनुपातिक फ़ॉन्ट आईडीई देखना चाहता हूं, भले ही मुझे इसे स्वयं बनाना है (शायद विजुअल स्टूडियो के विस्तार के रूप में)। मेरा मूल रूप से मतलब है कि एमएस वर्ड शैली कोड का संपादन है जो The C++ Programming Language book में टाइपोग्राफ़िकल शैली की तरह दिखता है।आनुपातिक फ़ॉन्ट आईडीई

मैं अपने इंडेंट्स के लिए टैब स्टॉप सेट करना चाहता हूं और फ़ंक्शन हस्ताक्षर और असाइनमेंट कथन की पंक्तियां सेट करना चाहता हूं, जिन्हें निश्चित वर्ण स्थितियों के बजाय बिंदुओं में निर्दिष्ट किया जा सकता है। मुझे बोल्ड और इटालिक्स भी पसंद आएगा। विभिन्न फ़ॉन्ट आकार और स्टाइल शीट भी शांत होंगी।

क्या किसी ने वहां ऐसा कुछ देखा है या किसी को निर्माण शुरू करने का सबसे अच्छा तरीका पता है?

+0

मैं स्क्रैच से पायथन कोड रेंडरर के लिए प्रोटोटाइप का निर्माण कर रहा हूं। सिद्धांत के बावजूद यह एक आसान काम की तरह दिखता है, इसे वास्तविक संपादक में बदलने के लिए महीनों/साल लग सकते हैं। लेकिन मुझे यकीन है कि मुझे एएससीआईआई पात्रों से परे इटालिक्स या कुछ भी नहीं चाहिए। मेरे लिए सबसे महत्वपूर्ण है, यह सिस्टम फोंट से स्वतंत्र होना चाहिए और इसलिए मैं विशेष सॉफ्टवेयर के बिना फ़ॉन्ट बना/संपादित कर सकता हूं। इसे फ़ॉन्ट की नई परिभाषाओं की भी आवश्यकता है, और इसी तरह। मैं सिंटैक्स हाइलाइटिंग जैसी कई अन्य चीजों के बारे में भी नहीं बताता ... –

उत्तर

16

मैं अभी भी एक लोकप्रिय संपादक या आईडीई लागू elastic tabstops देखना चाहते हैं।

+1

वाह! मैंने इसे पहले कभी नहीं देखा है और मैं इसे पहले से ही हर आईडीई पर उपयोग करना चाहता हूं। –

1

जब मैंने अंततः ग्रहण (कुछ समय पहले अब देखा था) पर देखा था, तो यह आपको काम करने के लिए किसी भी स्थापित फ़ॉन्ट को चुनने की अनुमति देता है। इतना यकीन नहीं है कि यह टैब स्टॉप का उपयोग करके इंडेंटिंग की धारणा का समर्थन करता है या नहीं।

यह शांत देखा, लेकिन निश्चित रूप से कोड को पढ़ने के लिए कठिन था ...

4

मुझे उम्मीद है कि आप उस सुझाव के लिए नीचे-संशोधित हो जाएंगे और इस विचार के लिए कुछ वास्तविक अर्थ उठाएंगे।

कोड संपादकों में पारंपरिक 'गैर आनुपातिक' फ़ॉन्ट आवश्यकता का मुख्य लाभ कोड स्वरूपण करने के बोझ को कम करना है।

लेकिन आधुनिक आईडीई में होने वाली सभी इंटरैक्टिव स्वचालित स्वरूपण के साथ, यह वास्तव में संभव है कि आनुपातिक फ़ॉन्ट कोड की पठनीयता में सुधार कर सके (इसे बाधित करने के बजाय, क्योंकि मुझे यकीन है कि कई शुद्धवादी उम्मीद करेंगे)।

Roedy Green नामक एक चरित्र (अपने 'how to write unmaintainable code' लेखों के लिए प्रसिद्ध) ने जावा पर आधारित सैद्धांतिक संपादक/भाषा के बारे में लिखा और Bali कहा। इसमें गैर आनुपातिक फोंट बिल्कुल शामिल नहीं थे, लेकिन इसमें गैर-वर्दी फ़ॉन्ट-आकार रखने का विचार शामिल था।

इसके अलावा, इस शॉर्ट Joel Spolsky post एक समाधान के लिए पोस्ट, लोचदार टैब बंद हो जाता है (जैसा कि एक अन्य टिप्पणीकर्ता द्वारा उल्लिखित है) जो गैर आनुपातिक (और परिवर्तनीय आकार) फ़ॉन्ट्स के समर्थन में मदद करेगा।

1

सोरेन: यह तरह का साफ, आईएमओ है। लेकिन क्या लोग वास्तव में इस तरह की टिप्पणी करते हैं? लाइन टिप्पणियों के अंत के लिए, मैं हमेशा उपयोग की जाने वाली भाषा के आधार पर // या/* या समकक्ष एक ही स्थान का उपयोग करता हूं। मैं घोषणाओं या टिप्पणियों या कुछ भी लाइनों को लाइन करने की कोशिश नहीं करता, और एकमात्र जगह जिसे मैंने कभी देखा है वह पाठ्यपुस्तकों में है।

2

@Thomas ओवेन्स

लेकिन लोग वास्तव में लाइन टिप्पणी करते उस तरह? ... मैंने कभी भी लाइन अप घोषणाओं या टिप्पणियों या को कुछ भी करने का प्रयास नहीं किया है, और केवल एक ही स्थान जहां मैंने कभी भी देखा है जो पाठ्यपुस्तकों में है।

हाँ लोग टिप्पणियां और घोषणाएं और सभी प्रकार की चीजें लाइन करते हैं। लगातार अच्छी तरह से स्वरूपित कोड पढ़ने के लिए आसान है और पढ़ने के लिए आसान कोड को बनाए रखना आसान है।

1

@ ब्रायन एनसिंक: मुझे पढ़ने के लिए आसान स्वरूपित कोड नहीं मिला है।

int var1 = 1 //Comment 
int longerVar = 2 //Comment 
int anotherVar = 4 //Command 

बनाम

int var2  = 1 //Comment 
int longerVar = 2 //Comment 
int anotherVar = 4 //Comment 

मैं पहली बार लाइनों आसान दूसरी लाइनों की तुलना में पढ़ने के लिए मिल जाए, व्यक्तिगत रूप से।

3

@Thomas ओवेन्स

मैं कोड है कि इस तरह से प्रारूपित पढ़ने में आसान नहीं मिल रहा है।

यह ठीक है, यह सिर्फ एक व्यक्तिगत वरीयता है और हम असहमत हो सकते हैं। इसे जिस तरीके से आप सोचते हैं उसे प्रारूपित करें और मैं इसका सम्मान करूंगा। मैं अक्सर खुद से पूछता हूं 'मुझे यह कैसे प्रारूपित करना चाहिए?' मेरा जवाब हमेशा पठनीयता में सुधार के लिए प्रारूपित करना है, जिसे मैं स्वीकार करता हूं वह व्यक्तिपरक हो सकता है।

अपने नमूने के बारे में, मुझे दायीं तरफ उस अच्छी तरह से गठबंधन कॉलम होने की तरह, बाईं ओर दिए गए कोड में त्वरित "इंडेक्स" की तरह। ऐसा कहकर, मैं शायद इस तरह की हर पंक्ति पर टिप्पणी करने से बचूंगा क्योंकि कोड को उस स्पष्टीकरण की आवश्यकता नहीं है। और अगर ऐसा होता है तो मैं कोड के ऊपर एक पैराग्राफ लिखता हूं।

लेकिन मूल पोस्टर से इस उदाहरण पर विचार करें। मेरी राय में दूसरी बार टिप्पणियों को स्पॉट करना आसान है।

for (size-type i = 0; i<v.size(); i++) { // rehash: 
    size-type ii = has(v[i].key)%b.size9); // hash 
    v[i].next = b[ii]; // link 
    b[ii] = &v[i]; 
} 

for (size-type i = 0; i<v.size(); i++) {  // rehash: 
    size-type ii = has(v[i].key)%b.size9); // hash 
    v[i].next = b[ii];      // link 
    b[ii] = &v[i]; 
} 
+0

महान उदाहरण - पहले उदाहरण में '// लिंक' टिप्पणी खो जाती है। कोड का एक आकस्मिक स्कैन इसे पूरी तरह से याद कर सकता है। – slim

+0

यह मेरे लिए एक अच्छा उदाहरण नहीं है, हमारे मानकों को टिप्पणियों की अपनी लाइन प्राप्त करने की आवश्यकता होती है, और वे वैसे भी एक अलग रंग हैं। मैं प्रति पंक्ति अधिक पात्रों के बजाय होगा। – dwidel

5

Thinking with Style वर्ड या लेखक की तरह अपने पसंदीदा पाठ हेरफेर सॉफ्टवेयर का उपयोग करने का सुझाव देते हैं। समृद्ध एक्सएमएल में अपना प्रोग्राम कोड बनाएं और एक्सएसएलटी के साथ कंपाइलर-प्रासंगिक खंड निकालें। "ऑफिस" सॉफ्टवेयर सभी उन्नत टेक्स्ट-मैनिपुलेशन और स्वरूपण सुविधाओं को प्रदान करेगा।

+0

यह प्रीटी साफ है।मुझे एक वर्ड प्रोसेसिंग पैकेज के शीर्ष पर बनाया गया एक पूर्ण उड़ा हुआ आईडीई देखना होगा, जिसमें इंटेलिजेंस और एडवांस्ड कोड खनन/सर्च फीचर्स, संकलन/लॉन्चिंग/डिबगिंग सपोर्ट जैसे स्वचालित कोड इंटेलिजेंस फीचर्स के साथ पूरा किया गया है, जिसमें प्रोग्रामर भीड़ का अधिकांश हिस्सा आया है एक आईडीई –

-1

आनुपातिक फ़ॉन्ट्स के साथ बड़ी समस्या यह है कि वे कोड के ऊर्ध्वाधर संरेखण को नष्ट कर देते हैं और कोड लिखने पर यह काफी बड़ा नुकसान होता है।

ऊर्ध्वाधर संरेखण कोड के आयताकार ब्लॉक में हेरफेर करना संभव बनाता है जो आसानी से प्रदर्शन करने के लिए ब्लॉक ऑपरेशन जैसे कट, कॉपी, पेस्ट, डिलीट और इंडेंट, अनइंडेंट इत्यादि की अनुमति देकर कई लाइनों को फैलाता है।

एक उदाहरण के रूप कोड के इस स्निपेट पर विचार करें: एक मोनो स्थान दिया गया है फॉन्ट में

a1 = a111; 
B2 = aaaa; 
c3 = AAAA; 
w4 = wwWW; 
W4 = WWWW; 

= और ; सभी लाइन अप।

अब

अगर यह पाठ वर्ड में loded और है पाठ प्रभावी रूप से इस में बदल जाता है एक आनुपातिक फ़ॉन्ट का उपयोग कर प्रदर्शन:

नोट: अतिरिक्त सफेद स्थान को दिखाने के लिए जोड़ा कैसे = और ; अब लाइन अप:

a1 = a1 1 1; 
B2 = aaaa; 
c3 = A A A A; 
w4 = w w W W; 
W4 = W W W W; 
कोड के उन लोगों के लिए अच्छा ब्लॉक चला प्रभावी ढंग से गायब हो जाते हैं लंबवत संरेखण के साथ

इसके अलावा कर्सर को लंबवत स्थानांतरित करने की गारंटी नहीं है (यानी कॉलम संख्या हमेशा एक पंक्ति से दूसरे तक स्थिर नहीं होती है) यह समान दिखने वाली रेखाओं में हेरफेर करने के लिए डिज़ाइन की गई मैक्रो स्क्रिप्ट को फेंकना और अधिक कठिन बनाता है।

+1

से उम्मीद करने के लिए मेरे प्रश्न में मैं कहता हूं कि "मैं अपने इंडेंट्स के लिए टैब स्टॉप सेट करना चाहता हूं और फ़ंक्शन हस्ताक्षर और असाइनमेंट कथन की पंक्तियां जोड़ना चाहता हूं।" एक आनुपातिक संपादक प्रतिलिपि/पेस्ट और कर्सर नेविगेशन (नीचे हमेशा एक ही कॉलम पर बने रहेंगे) पर निश्चित स्थान से/वैकल्पिक रूप से परिवर्तित करने के बारे में स्मार्ट (वैकल्पिक रूप से) स्मार्ट हो सकता है –

+0

नमूना छद्म कोड में मैंने दिया कि केवल कोई टैब नहीं है और एक सफेद स्थान , इसलिए स्क्रीन पर टेक्स्ट लाइन को बनाने के लिए कोई भी टैब स्टॉप नहीं जा रहा है। का स्थान; लाइन से लाइन में और कम से कम मेरे लिए और जिस तरह से मैं कोड करता हूं, वह एक शो स्टॉपर होगा। – jussij

+3

"=" और ";" अक्षर अब लाइन अप नहीं: यह सच है, लेकिन मुझे लगता है कि यह एक अच्छा उदाहरण नहीं है। वास्तव में, आपके पास असाइनमेंट स्टेटमेंट की कई पंक्तियां कितनी बार होती हैं, जिसमें सभी वैरिएबल नाम समान लंबाई वाले होते हैं, और बाकी सभी बयानों में भी वही लंबाई होती है? यदि उनके पास अलग-अलग लंबाई हैं, और आप "=" अक्षरों को लाइन अप करना चाहते हैं, तो आप एक टैब का उपयोग कर सकते हैं, जैसा कि वह चाहता है, और सब कुछ वैसे भी काम करता है। (और यदि आप अपने ";" लाइन टर्मिनेटर को अस्तर बनाने में समय व्यतीत कर रहे हैं ... ठीक है, आपका समय शायद कहीं और बेहतर खर्च किया गया है।) – Beska

2

मुझे आश्चर्य है कि कोई भी वास्तव में आपके प्रश्न का उत्तर क्यों नहीं देता है, और स्वीकृत उत्तर में वास्तव में आपके प्रश्न के साथ कुछ भी क्यों नहीं है। लेकिन वैसे भी ...

एक आनुपातिक फ़ॉन्ट आईडीई

ग्रहण में आप किसी फ़ॉन्ट आपके सिस्टम पर cchoose कर सकते हैं।

सेट टैब मेरी इंडेंट

ग्रहण में आप स्वत: खरोज कॉन्फ़िगर कर सकते हैं के लिए बंद हो जाता है, यह स्थापित करने के लिए "केवल टैब" भी शामिल है।

समारोह हस्ताक्षर और काम के बयानों की पंक्तियों अस्तर

ग्रहण में, स्वत: खरोज कि नहीं करता है।

जो निश्चित वर्ण स्थितियों के बजाय बिंदुओं में निर्दिष्ट किया जा सकता है।

क्षमा करें, मुझे नहीं लगता कि ग्रहण आपकी मदद कर सकता है। लेकिन यह खुला स्रोत है। ;-)

बोल्ड और इटैलिक

ग्रहण करता है।

विभिन्न फ़ॉन्ट आकार और यहां तक ​​कि स्टाइल शीट होगा शांत

मुझे लगता है कि ग्रहण केवल (उदाहरण के जावा स्रोत फ़ाइल के लिए) प्रत्येक फ़ाइल प्रकार के लिए एक फ़ॉन्ट और फ़ॉन्ट आकार का उपयोग करता है, लेकिन आप अलग अलग "शैली हो सकता है चादरें "विभिन्न फाइल प्रकारों के लिए।

+0

स्वीकार्य उत्तर सबसे नज़दीकी है जो मैं चाहता हूं ("क्या कोई किसी को निर्माण शुरू करने का सबसे अच्छा तरीका जानता है?")। मैं सिर्फ निश्चित-लंबाई टैब डालना नहीं चाहता हूं। मैं एक वर्ड प्रोसेसर में प्रति-रेखा आधार पर परिवर्तनीय-लंबाई टैब चाहता हूं। मैं नहीं चाहता कि आईडीई मेरे लिए इंडेंट करे- मेरे इंडेंट जटिल हैं –

+0

आह। :) मुझे आपकी छवि से यह नहीं मिला, यह मेरे लिए सादे पुराने इंडेंटेशन की तरह दिखता है। – myplacedk

0

लोग सभी टिप्पणियों के बारे में शिकायत कर रहे हैं जो अस्तर नहीं कर रहे हैं।

मुझे लगता है कि एक बहुत ही सरल समाधान है: इकाई अंतरिक्ष को फ़ॉन्ट में सबसे व्यापक चरित्र के रूप में परिभाषित करें। अब, स्पेस को छोड़कर आनुपातिक रूप से सभी वर्णों को स्थान दें। अंतरिक्ष जितना अधिक कमरा लेता है ताकि अगले चरित्र को लाइन किया जा सके, जहां यह होगा कि रेखा पर सभी पूर्ववर्ती वर्ण फ़ॉन्ट में सबसे व्यापक थे।

अर्थात्:

iiii_space_Foo

xxxx_space_Foo

, "फू" लाइन अप होगा "मैं" के बाद "x" तुलना में बहुत व्यापक रहने के बाद अंतरिक्ष के साथ।

तो इसे लोचदार रिक्त स्थान कहते हैं। टैब-स्टॉप के बजाए।

आप एक स्मार्ट संपादक है, तो टिप्पणी विशेष रूप से इलाज है, लेकिन यह सिर्फ ग्रेवी है

+1

दुर्भाग्यवश आनुपातिक-चौड़ाई वाले फ़ॉन्ट का उपयोग करने के उद्देश्य को हरा देगा। बस ऐसा करने का प्रयास करें, शायद निश्चित-चौड़ाई वाले फ़ॉन्ट की तुलना में इसे पढ़ना कठिन होगा। – Karl

+1

यह चित्रकार पर "मसौदे" मोड में दस्तावेजों को प्रिंट करते समय मैकिंतोश क्या करता था; यह मोनोस्पेस्ड फोंट का उपयोग करके प्रिंट करेगा, लेकिन रिक्त स्थान जोड़ देगा ताकि मुद्रित दस्तावेज़ में शब्द एक समान स्थान के साथ उतना ही कम हो जाएंगे जितना कि वे आनुपातिक फ़ॉन्ट के साथ करेंगे। परिणाम केवल भयानक के रूप में वर्णित किया जा सकता है। – supercat

1

आपके प्रश्न के खरोज हिस्सा है, एक वास्तविक उत्पाद में आज किया जा रहा है, हालांकि संभवतः के लिए और भी अधिक से अधिक स्वचालन की आप से स्तर कल्पना की गई है, मैं जो उत्पाद उल्लेख करता हूं वह XSLT IDE है, लेकिन वही स्वरूपण सिद्धांत अधिकांश (लेकिन सभी नहीं) पारंपरिक कोड वाक्यविन्यास के साथ काम करेंगे।

यह वास्तव में video में देखा जाना चाहिए यह सब की भावना (संगीत वापस ट्रैक के बारे में खेद) प्राप्त करने के लिए है। एक हल्का एक्सएमएल संपादक स्पिन-ऑफ उत्पाद भी है, XMLQuire, जो एक प्रौद्योगिकी प्रदर्शक के रूप में कार्य करता है।

नीचे दिया गया स्क्रीनशॉट इस एक्सएसएलटी आईडीई में काफी जटिल स्वरूपण नियमों के साथ स्वरूपित एक्सएमएल दिखाता है, जहां बाएं हाशिए का उपयोग करते हुए सभी इंडेंटेशन शब्द-प्रोसेसर शैली का प्रदर्शन किया जाता है - स्पेस या टैब वर्ण नहीं।

enter image description here

इस स्वरूपण अवधारणा पर जोर देना, सभी पात्रों को दिखाने के लिए जहां बाएं मार्जिन खरोज रखने के लिए फैली प्रकाश डाला गया है। मैं अवधि वर्चुअल प्रारूपण का उपयोग इस वर्णन करने के लिए - यह, लोचदार टैब बंद हो जाता है की तरह नहीं है, क्योंकि वहाँ बस कोई टैब, सिर्फ मार्जिन जानकारी जो 'पैरा' स्वरूपण का हिस्सा है कर रहे हैं (आरटीएफ कोड यहाँ उपयोग किया जाता है)। सिंटैक्स रंग के समान पास में लगातार पार्सर सुधार होता है।

एक आनुपातिक फ़ॉन्ट यहां इस्तेमाल नहीं किया गया है, लेकिन यह काफी आसानी से हो सकता था - क्योंकि खरोज TWIPS में सेट है। संपादन अनुभव काफी आकर्षक है क्योंकि, जैसा कि आप कोड (इस मामले में एक्सएमएल) को रीफैक्टर करते हैं, शायद ड्रैग और ड्रॉप के माध्यम से, या एक विशेषता मान की लंबाई बढ़ाकर, इंडेंटेशन केवल फिट होने के लिए फिर से बहता है - कोई टैब- प्रेस करने के लिए कुंजी या 'reformat' बटन।

तो, खरोज वहाँ है, लेकिन फ़ॉन्ट काम एक अधिक जटिल समस्या है। मैंने इसका प्रयोग किया है, लेकिन पाया है कि अगर आपके द्वारा टाइप किए जाने वाले फोंट को फिर से चुना जाता है, तो कोड की क्षैतिज स्थानांतरण बहुत विचलित हो जाती है - संभवतः उपयोगकर्ता द्वारा शुरू किए गए 'प्रारूप फोंट' कमांड की आवश्यकता होगी। इस उत्पाद में एनोट/हैंडराइटिंग तकनीक भी एनोटेटिंग कोड के लिए अंतर्निहित है, लेकिन मैंने अभी तक लाइव रिलीज में इसका फायदा उठाना नहीं है।

0

मुझे सी # में 'var' कीवर्ड का उपयोग के बारे में तर्क याद करते हैं। लोगों ने इसे नफरत की, और सोचा कि यह कोड को कम स्पष्ट कर देगा। उदाहरण के लिए, आप की तरह कुछ में प्रकार पता नहीं सकता है:

var x = GetResults("Main"); 
foreach(var y in x) 
{ 
    WriteResult(x); 
} 

उनका तर्क था, कि यदि आप देखते हैं एक्स एक सरणी, एक सूची या किसी भी अन्य IEnumerable था couln't। या वाई का प्रकार क्या था। मेरी राय में अस्पष्टता var का उपयोग करने से उत्पन्न नहीं हुई, लेकिन अस्पष्ट चर नामों को चुनने से। क्यों सिर्फ टाइप नहीं:

var electionResults = GetRegionalElactionResults("Main"); 
foreach(var result in electionResults) 
{ 
    Write(result); // you can see what you're writing!! 
} 

"लेकिन आप अभी भी electionResults के प्रकार के नहीं देख सकते हैं!" - क्या यह वास्तव में मायने रखता है? यदि आप GetRegionalElectionResults के रिटर्न प्रकार को बदलना चाहते हैं, तो आप ऐसा कर सकते हैं। कोई भी IENumerable करेंगे।

अब

फास्ट आगे करने के लिए। लोग एन समान कोड टिप्पणी संरेखित करना चाहते हैं:

int var2  = 1; //The number of days since startup, including the first 
int longerVar = 2; //The number of free days per week 
int anotherVar = 38; //The number of working hours per week 

तो बिना टिप्पणी सब कुछ स्पष्ट नहीं है। और यदि आप मानों को संरेखित नहीं करते हैं, तो आप उन्हें variales से अलग नहीं कर सकते हैं। लेकिन क्या आप?इसके बारे में क्या (कृपया गोलियों को अनदेखा करें)

  • int daysSinceStartup = 1; // पहले
  • int freeDaysPerWeek = 2;
  • int workingHoursPerWeek = 38;

यदि आपको हर लाइन पर कोई टिप्पणी की आवश्यकता है, तो आप कुछ गलत कर रहे हैं। "लेकिन आपको अभी भी मूल्यों को संरेखित करने की आवश्यकता है" - क्या आप? 38 को 2 के साथ क्या करना है? GetRegionalElectionResults()

  • जहां परिणाम में परिणाम से

    • वर regionsWithIncrease =
      • :

        सी # अधिकांश कोड ब्लॉक में आसानी से (या acually, चार रिक्त स्थान के गुणज) केवल टैब का उपयोग गठबंधन किया जा सकता है .TotalCount> परिणाम> पिछला कुल मिलाकर & &

        • परिणाम। भविष्यवाणी कुल मिलाकर> 0 // बस नए क्षेत्र
      • परिणाम का चयन करें। क्षेत्र;
    • foreach (regionsWithIncrease में वर क्षेत्र)
    • {
      • लिखें (क्षेत्र);
    • }

    आप का उपयोग कभी नहीं करना चाहिए लाइन करने के लिए लाइन टिप्पणियों और आप शायद ही कभी खड़ी बातें संरेखित करने की आवश्यकता चाहिए। शायद ही कभी नहीं। तो मैं समझता हूं कि आप में से कुछ लोग एक मोनोस्पेस्ड फ़ॉन्ट पसंद करते हैं। मैं फ़ॉन्ट नोटो सैन्स या स्रोत संस प्रो की पठनीयता पसंद करते हैं। ये फोंट Google से स्वतंत्र रूप से उपलब्ध हैं, और कैलिब्ररी जैसा दिखते हैं, लेकिन प्रोग्रामिंग के लिए डिज़ाइन किए गए हैं और इस प्रकार सभी नेक्शरी विशेषताएं हैं:

    • बिग:; । , तो आप स्पष्ट रूप से अंतर देख सकते हैं
    • स्पष्ट रूप से अलग 0oo और विशिष्ट Il |