2015-07-06 25 views
7

क्या पर्ल 6 में Unicode::GCString की columns विधि के बराबर कुछ है?पर्ल 6 और प्रिंट कॉलम

पर्ल 5 उदाहरण:

#!/usr/bin/env perl 
use warnings; 
use strict; 
use 5.10.0; 
use utf8; 
use open qw(:std :utf8); 
use Unicode::GCString; 

my $s = '合'; # U+5408 

say length $s;  # 1 

my $gcs = Unicode::GCString->new($s); 
say $gcs->columns; # 2 

उत्तर

4

Perl6 यूनिकोड समर्थन builtin है, देशी विश्वविद्यालय और एनएफसी/NFD/NFKC/NFKD सामान्यीकृत प्रकार के साथ।

जो मैं अस्पष्ट रूप से समझता हूं वह यह है कि यूनिकोड :: जीसीस्ट्रिंग :: कॉलम विधि पूर्व भाषा भाषा लाइनब्रेकिंग समर्थन निर्धारित करती है। 合 एक दूसरे के शीर्ष पर 2 "अक्षरों" से बना है (वे इसे "ग्रैफेम क्लस्टर" कहते हैं), इस प्रकार 2 कॉलम।

कहा जा रहा है कि, आंतरिक रूप से (MoarVM स्तर पर) perl6 यूनिकोड डेटाबेस तक पहुंच है जहां लाइनब्रैकिंग गुण संग्रहीत किए जाते हैं, लेकिन मेरे ज्ञान के लिए वर्तमान में कोई मॉड्यूल नहीं है, जैसे यूनिकोड :: यूसीडी उपलब्ध है East_Asian_Width गुण उपलब्ध कराने के लिए यूनिकोड :: जीसीस्ट्रिंग जैसे कुछ के लिए।

दूसरी ओर, यूनिकोड :: लाइनब्रैक से perl6 को परिवर्तित करना काफी आसान लगता है, नेटबैक के माध्यम से सोमबोक लाइब्रेरी तक पहुंच रहा है।

+0

उपरोक्त क्योंकि रीनी महत्वपूर्ण बात कर रही है - यह समस्या आगे बढ़ने के लिए उपयोगी रूप से आगे बढ़ने का प्रयास करने के लिए क्या करना है। मैं उन चीजों को संतुलित करने के लिए पहले इस टिप्पणी को पोस्ट कर रहा हूं जो मैं आगे कहने जा रहा हूं। – raiph

+0

एक ग्रैफेम वह है जो मानव आमतौर पर एक चरित्र को बुलाता है। तो 合 एक grapheme है, दो नहीं। इस प्रकार, हाल ही में राकुडो का उपयोग करके, 'कहें "合" .chars.say' रिटर्न 1. – raiph

+0

चर्चा के तहत कॉलम के अंतर्गत काम करने वाली चीज "[पूर्वी एशियाई] चरित्र की अंतर्निहित चौड़ाई की अवधारणा है। यह चौड़ाई या तो दो मानों का: संकीर्ण या चौड़ा। " (http://www.unicode.org/reports/tr11/tr11-29.html से) – raiph

संबंधित मुद्दे