วิธีการแสดง Unicode ใน terminal เสมือน Linux?


19

การอ่านข้อมูลใด ๆ ใน Unicode ไม่แสดงอย่างถูกต้องใน terminal Linux (หมายถึง terminal เสมือนที่เปิดขึ้นโดยไม่มี X windows)

ฉันอ่านในการสนทนาที่นี่ว่าการติดตั้งโปรแกรมเช่นJFBTERMและทำงานได้ดังนั้นฉันจึงสงสัยว่าถ้าไม่มีวิธีการกำหนดค่า (consolefonts?) เทอร์มินัลให้จัดการ unicode ได้อย่างถูกต้องโดยไม่ต้องใช้ซอฟต์แวร์เพิ่มเติมใด ๆ

บนเทอร์มินัล Windows (gnome-terminal, xterm ฯลฯ ) ดูเหมือนว่า:

คำพังเพยขั้ว

บน terminal เสมือนดูเหมือนว่านี้:

VT

บนเทอร์มินัลเสมือนด้วย JFBTERM ดูเหมือนว่า:

jbfterm

นี่คือภาพหน้าจอของผลลัพธ์locale:

สถานที่เกิดเหตุ

นี่คือผลลัพธ์ของshowconsolefont:

showconsolefont

ไม่มีใครรู้ว่ามันเป็นไปได้ที่จะประสบความสำเร็จเหมือนกันเพียงแค่กับ terminal เสมือนเริ่มต้น?

คำตอบ:


5

ฟอนต์คอนโซลสามารถโหลดแบบอักษรได้มากถึง 512 (ฉันคิดว่าหรืออะไรทำนองนั้น) ร่ายมนตร์ที่แตกต่างกัน โดยปกติจะมีเพียง 256 glyphs

ในการแสดงภาษาละติน, Cyrrilic, หรือภาษาอื่น ๆ ที่ใช้สัญลักษณ์ไม่ซับซ้อนน้อยกว่า 200 จะไม่มีปัญหา

อย่างไรก็ตามสำหรับสคริปต์ที่ซับซ้อนหรือสคริปต์ที่ต้องการสัญลักษณ์ที่แตกต่างกันมากมาย (เช่นภาษาญี่ปุ่น) คุณไม่มีความเป็นไปได้อื่นนอกจากการใช้เลย์เอาต์พิเศษเพื่อจัดการมัน

โปรดทราบว่าหากขีด จำกัด ของ 512 ควรเพียงพอสำหรับ ASCII และทั้งสองชุด Kana นั่นคือปัญหาของความกว้าง

CJK และ Kana พอดีกับสี่เหลี่ยมจัตุรัสมันมีความกว้างเป็นสองเท่าของตัวอักษรละติน นั่นไม่ใช่สิ่งที่คอนโซลสามารถจัดการได้นอกกรอบ

คุณสามารถหันไปใช้ "Halfwidth Katakana" ที่เก่าและน่าเกลียดได้ (และอาจหาแบบอักษรเก่า ๆ ของสิ่งนี้) หรือตั้งคอนโซลของคุณให้มีความกว้าง 40 คอลัมน์และมีตัวอักษรละตินกว้างเท่ากับ Kana

ฉันไม่รู้เกี่ยวกับฟอนต์คอนโซลใด ๆ กับ Kana; คุณควรวาดของคุณเอง (มีเครื่องมือให้ทำและคุณสามารถคัดลอกจุดของฟอนต์ภาษาญี่ปุ่นบิตแมป

นอกจากนี้คุณสามารถใช้iconvในการแปล kana เป็น ASCII


3

คุณต้องการแบบอักษรที่มีตัวอักษรเหล่านี้จริง ๆ Arch Linux Lat2-Terminus16สำหรับตัวอย่างที่แนะนำ

setfont Lat2-Terminus16จะลองมันเพียงแค่ออกคำสั่งต่อไปนี้ในคอนโซลเสมือน:

สำหรับส่วนที่เหลือการกระจายที่ทันสมัยที่สุดสนับสนุนแล้วออกจากกล่อง


2

นอกเหนือไปLANG/LC_ALL, stty iutf8เป็นสิ่งจำเป็นที่จะบอกสถานีที่ว่าจะทำอย่างไรที่คุณอาจต้องsetfontแล้วในการโหลดแบบอักษรที่มีประโยชน์และการทำแผนที่ หากคุณยังมีปัญหาตรวจสอบCONFIG_NLS_xxการตั้งค่าเคอร์เนลสำหรับการตั้งค่าคุณอาจจำเป็นต้องใช้modprobe nls_utf8หากไม่ได้โหลดโดยอัตโนมัติ (ฉันคิดว่านี่เป็นเพียงชื่อไฟล์ Unicode ที่จำเป็นเท่านั้น)

การแจกแจงลินุกซ์บางตัวจัดเตรียมunicode_startและunicode_stopสคริปต์เพื่อทำสิ่งนี้โดยอัตโนมัติ

หากlessเกิดปัญหาอาจต้องLESSCHARSETตั้งค่าตัวแปรสภาพแวดล้อม(หรือยกเลิกการตั้งค่าหากผิด)

UTF-8 และ Unicode FAQของ Markus Kuhn สำหรับ Unix / Linuxนั้นมีค่ายิ่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.