में पूर्ण चौड़ाई या अर्धविड्थ है या नहीं, मैं एक टर्मिनल (कंसोल) एप्लिकेशन लिख रहा हूं जो मनमाने ढंग से यूनिकोड टेक्स्ट को लपेटने वाला है।यह निर्धारित करता है कि एक यूनिकोड कैरेक्टर सी ++
टर्मिनलों आमतौर पर एक मोनोस्पेस्ड (निश्चित चौड़ाई) फ़ॉन्ट का उपयोग कर रहे हैं, इसलिए एक पाठ को लपेटने के लिए, यह वर्णों की गिनती करने और यह देखने के लिए मुश्किल से अधिक है कि कोई शब्द किसी पंक्ति में फिट हो या नहीं और उसके अनुसार कार्य करें।
समस्या यह है कि यूनिकोड तालिका में पूर्णदर्शी वर्ण हैं जो टर्मिनल में 2 वर्णों की चौड़ाई लेते हैं।
इन्हें गिनने से 1 यूनिकोड चरित्र दिखाई देगा, लेकिन मुद्रित चरित्र 2 "सामान्य" (अर्धविड्थ) वर्ण चौड़ा है, रैपिंग दिनचर्या तोड़ रहा है क्योंकि यह चौड़ाई को दो बार लेने वाले वर्णों से अवगत नहीं है।
उदाहरण के लिए, यह एक पूर्ण-चौड़ाई चरित्र (U + 3004, JIS प्रतीक)
〄 12
यह यहां 2 पात्रों की पूरी चौड़ाई नहीं ले करता है, हालांकि यह पूर्वस्वरूपित है, लेकिन यह दो बार का उपयोग करता है एक टर्मिनल में एक पश्चिमी चरित्र की चौड़ाई।
इससे निपटने के लिए, मुझे पूर्ण चौड़ाई या अर्धविड्थ पात्रों के बीच अंतर करना होगा, लेकिन मुझे C++ में ऐसा करने का कोई तरीका नहीं मिल रहा है। क्या समस्या के आसपास आने के लिए यूनिकोड टेबल में सभी फ़ुलविड्थ वर्णों को जानना वाकई आवश्यक है?
प्रासंगिक http://www.icu-project.org/apiref/icu4c/uchar_8h.html#a3376f0d34bb23c54671859f1978b4226 और http://www.unicode.org/reports/tr11/ –
किस ओएस/प्लेटफ़ॉर्म के लिए? –
क्षमा करें मुझे याद आया। ओएस लिनक्स है। – Noice