यूनिकोड वर्ण सही तरीके से क्यों नहीं प्रस्तुत कर रहे हैं


19

पृष्ठभूमि:

  • मेरे प्रॉम्प्ट में कुछ यूनिकोड वर्ण हैं (अनिवार्य रूप से स्थिति स्टेटस मार्कर)
  • मैं कट्टर linux पर xfce के तहत urxvt चला रहा हूँ।
  • मैं पावरलाइन फ़ॉन्ट के लिए DejaVu Sans मोनो का उपयोग कर रहा हूं, जो निर्दिष्ट है।

    URxvt*font: xft:DejaVu Sans Mono for Powerline:pixelsize=14

जब मैं urxvt शुरू करता हूँ तो यूनिकोड वर्ण सही ढंग से प्रस्तुत नहीं होता है।

उदाहरण के लिए

● एक के रूप में प्रस्तुत करता है

हालांकि, अगर मैं urxvtपहले टर्मिनल के अंदर से एक नई शुरुआत करता हूं तो सब कुछ सही ढंग से प्रस्तुत होता है।

दो टर्मिनलों के बीच वातावरण में कोई अंतर नहीं दिखाई देता है।

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

UPDATE : ऐसा लगता है कि xfce4 के लिए ऐप लॉन्चर में लोकेल को सही तरीके से सेट नहीं किया गया है, लेकिन संभवतः पहले टर्मिनल के अंदर का शेल यह खुद का लोकेल है, जिसका अर्थ है कि दोनों शेल का लोकेल समान है।

जोड़ने

export LANG=en_GB.UTF-8

.xit4 को xfce4 शुरू करने से पहले इसे ठीक करने के लिए लगता है। मुझे संदेह है कि यह सही तरीका नहीं है, लेकिन यह मेरे लिए काफी अच्छा काम करता है।

स्क्रीनशॉट समस्या को दर्शाता है:

यहाँ छवि विवरण दर्ज करें

नोट: मैंने इस प्रश्न को serverfault.com से स्थानांतरित किया - मुझे आशा है कि यह साइट अधिक उपयुक्त है


आप X कैसे शुरू करते हैं? आप "पहला" टर्मिनल कैसे शुरू करते हैं? ऐसा लगता है कि इन दोनों के लिए पर्यावरण अलग है।
урослав Рахматуллин

LC_ALL=ru_RU.utf8 urxvtवर्तमान X सत्र से चलाने का प्रयास करें । यदि रूसी (और अन्य यूनिकोड) चार्ट सही हो गए हैं तो आप उस स्थिति में हैं जब आपका वातावरण सी लोकेल के तहत चल रहा हो। तो के लिए लोकेल सेटिंग्स को चेक करें xfce। उदाहरण के लिए, यदि आप इसे .xinitrcचलाने से पहले स्थानीय सेट करने की कोशिश में शुरू कर रहे हैं जैसे LANG=ru_RU.utf8 exec startxfce4
अलेक्जेंडर I. ग्रेफोव

मुझे भी यही समस्या थी। यह उस तरह से हुआ जिस तरह से मैं शुरुआत कर रहा था। "निष्पादित प्रारंभ" करने के बजाय मैं अपने .zprofile में "startx" कर रहा था
समीर

जवाबों:


12

मैं पूरी तरह से निश्चित नहीं हूं कि समस्या का कारण क्या है, लेकिन नीचे दिए गए कदम मदद कर सकते हैं:

  1. पुष्टि करें कि स्थान ठीक से सेट है

    $ लोकल
    LANG = en_US.UTF-8
    LC_CTYPE = "en_US.UTF-8"
    LC_NUMERIC = "en_US.UTF-8"
    LC_TIME = "en_US.UTF-8"
    LC_COLLATE = "en_US.UTF-8"
    LC_MONETARY = "en_US.UTF-8"
    LC_MESSAGES = "en_US.UTF-8"
    LC_PAPER = "en_US.UTF-8"
    LC_NAME = "en_US.UTF-8"
    LC_ADDRESS = "en_US.UTF-8"
    LC_TELEPHONE = "en_US.UTF-8"
    LC_MEASUREMENT = "en_US.UTF-8"
    LC_IDENTIFICATION = "en_US.UTF-8"
    LC_ALL = en_US.UTF-8
    
  2. /Etc/locale.gen में वांछित स्थान सक्षम करें और चलाएं locale-gen

    $ cat /etc/locale.gen | grep UTF
    en_US.UTF-8 UTF-8
    nb_NO.UTF-8 UTF-8
    ru_RU.UTF-8 UTF-8
    
  3. सुनिश्चित करें कि वांछित फ़ॉन्ट लोड किया जा सकता है

    $ xset + fp / usr / शेयर / फोंट / सिरिलिक
    $ fc-cache
    चेक करने के लिए $ fc-list #

  4. "पहला टर्मिनल" शुरू करने से पहले .Xdeults (या समान) से सेटिंग लागू करें
    xrdb ~ / .Xdefaults


यह निश्चित रूप से लोकेल के साथ करना है (प्रश्न के लिए मेरा अपडेट देखें), इसलिए इस उत्तर को स्वीकार करें क्योंकि यह मुझे सही दिशा में इंगित करता है। Thnks।
sw1nn

इसका आम तौर पर ~ / .bash_profile (~ / .zprofile) में लोकेल सेटिंग करने के लिए एक भयानक विचार नहीं है, लेकिन ~ //xinitrc भी काम करेगा।
урослав Рахматуллин

अगर मैं एक वर्चुअल टर्मिनल (यानी एक्स के बिना) पर लॉगिन करता हूं तो यह सब काम करता है। शेल बिट ठीक काम कर रहा है, यह
sw1nn

शायद इसलिए कि X (या startxfce) एक गैर-लॉगिन शेल से शुरू होता है जो किसी प्रोफ़ाइल से LANG & co को नहीं पढ़ता है। बैश के लिए, ~ / .bashrc का उपयोग गैर-लॉगिन गोले के लिए सामान सेट करने के लिए किया जा सकता है। लेकिन जैसा कि मैंने कहा, ~ / .xinitrc में आपकी लोकेल सेटिंग्स और अन्य चर छोड़ने के साथ कुछ भी गलत नहीं है।
урослав Рахматуллин

अक्षर के बहुत अधिक पास होने के कारण भी यह समस्या सभी पात्रों को प्रभावित कर सकती है। उदाहरण के लिए, सेट URxvt.letterSpace: -10और सभी वर्ण बॉक्स के रूप में प्रदर्शित होते हैं
डेविसड

0

मेरे लिए यह urxvt में पावरलाइन ग्लिफ़ के साथ एक समस्या थी। बस पता चला कि लोकेल सेट करना localectl set-locale LANG=en_AU.UTF-8मेरे लिए समस्या को ठीक करता है, कम से कम पावरलाइन फ़ॉन्ट के साथ (अन्य फोंट की कोशिश नहीं की)

urxvt पावरलाइन प्रतीक

यह साथ काम नहीं कर रहा था en_US.UTF-8, मुझे पूरा यकीन है क्योंकि मैं इसे पुन: पेश कर सकता हूं ... अब यह अजीब है ... लेकिन यह अब काम करता है।

स्रोत

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.