2012-01-12 7 views
9

यूनिकोड दो प्रकार के समकक्ष 000 कैननिकल समकक्षता और संगतता समतुल्य परिभाषित करता है। संगतता समतुल्यता के लिए यूनिकोड तकनीकी अनुलग्नक # 15 में उदाहरण सुपरर्सक्रिप एक (यू +00 बी 9) और डिजिटल वन (यू +0031) है। यह उन पात्रों पर चर्चा नहीं करता है जो दृष्टिहीन रूप से अलग-अलग हैं।क्या लेटिन कैपिटल पत्र I (यू +0049) और रोमैन NUMERAL ONE (यू + 2160) में यूनिकोड संगतता समतुल्य है?

मुझे उत्सुकता है कि यदि दृश्य दृष्टिहीन रूप से भिन्न हैं तो मानक के तहत संगतता समतुल्यता है।

धन्यवाद ..

+1

"दृश्यमान रूप से अलग करने योग्य" एक व्यक्तिपरक संपत्ति है। पत्थर में नक्काशीदार पहला रोमन जो भी हेल्वेतिका 1 जैसा नहीं दिखता था। –

उत्तर

21

ᴇᴅɪᴛ: जोड़ा गया बिल्कुल क्या मूल प्रश्न तल पर की तलाश में है। यह वास्ताव में अच्छा है।


ʀᴏᴍᴀɴ ɴᴜᴍᴇʀᴀʟ ᴏɴᴇ और ʟᴀᴛɪɴ ᴄᴀᴘɪᴛᴀʟ ʟᴇᴛᴛᴇʀ ɪ के बारे में अपने प्रश्न का उत्तर हाँ है। यहां यह जांच करने के लिए एक त्वरित तरीका है:

$ perl -Mcharnames=:full -MUnicode::Normalize -le 'print 
    NFKD "\N{ROMAN NUMERAL ONE}" eq NFKD "\N{LATIN CAPITAL LETTER I}"' 
1 

हालांकि, के लिए कि क्या अक्षर हैं जो नेत्रहीन अप्रभेद्य हैं अनुकूलता तुल्यता है के रूप में अपने प्रश्न का उत्तर सबसे निश्चित रूप से नहीं है!

उदाहरण के लिए, ᴄʜᴇʀᴏᴋᴇᴇ ʟᴇᴛᴛᴇʀ ɢᴏ (Ꭺ) ʟᴀᴛɪɴ ᴄᴀᴘɪᴛᴀʟ ʟᴇᴛᴛᴇʀ ᴀ (ए) जैसा दिखता है, लेकिन निश्चित रूप से एनएफकेडी समतुल्य नहीं है। इसी प्रकार ɢʀᴇᴇᴋ ᴄᴀᴘɪᴛᴀʟ ʟᴇᴛᴛᴇʀ ᴀʟᴘʜᴀ (Α) और ᴄʏʀɪʟʟɪᴄ ᴄᴀᴘɪᴛᴀʟ ʟᴇᴛᴛᴇʀ ᴀ (ए) के साथ एनएफकेडी समकक्ष नहीं है। प्रभावशाली ढंग से बहुत से लोग हैं (ठीक है, मैं उन्हें गिन नहीं सकता :) ऐसे मुद्दों। केवल कोड अंक हैं NFKD-समतुल्य ʟᴀᴛɪɴ को ᴄᴀᴘɪᴛᴀʟ ʟᴇᴛᴛᴇʀ ᴀ, उदाहरण के लिए, कर रहे हैं:

U+00041 ‭ A GC=Lu SC=Latin  LATIN CAPITAL LETTER A 
U+01D2C ‭ ᴬ GC=Lm SC=Latin  MODIFIER LETTER CAPITAL A 
U+024B6 ‭ Ⓐ GC=So SC=Common  CIRCLED LATIN CAPITAL LETTER A 
U+0FF21 ‭ A GC=Lu SC=Latin  FULLWIDTH LATIN CAPITAL LETTER A 
U+1D400 ‭ GC=Lu SC=Common  MATHEMATICAL BOLD CAPITAL A 
U+1D434 ‭ GC=Lu SC=Common  MATHEMATICAL ITALIC CAPITAL A 
U+1D468 ‭ GC=Lu SC=Common  MATHEMATICAL BOLD ITALIC CAPITAL A 
U+1D49C ‭ GC=Lu SC=Common  MATHEMATICAL SCRIPT CAPITAL A 
U+1D4D0 ‭ GC=Lu SC=Common  MATHEMATICAL BOLD SCRIPT CAPITAL A 
U+1D504 ‭ GC=Lu SC=Common  MATHEMATICAL FRAKTUR CAPITAL A 
U+1D538 ‭ GC=Lu SC=Common  MATHEMATICAL DOUBLE-STRUCK CAPITAL A 
U+1D56C ‭ GC=Lu SC=Common  MATHEMATICAL BOLD FRAKTUR CAPITAL A 
U+1D5A0 ‭ GC=Lu SC=Common  MATHEMATICAL SANS-SERIF CAPITAL A 
U+1D5D4 ‭ GC=Lu SC=Common  MATHEMATICAL SANS-SERIF BOLD CAPITAL A 
U+1D608 ‭ GC=Lu SC=Common  MATHEMATICAL SANS-SERIF ITALIC CAPITAL A 
U+1D63C ‭ GC=Lu SC=Common  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A 
U+1D670 ‭ GC=Lu SC=Common  MATHEMATICAL MONOSPACE CAPITAL A 
U+1F130 ‭ GC=So SC=Common  SQUARED LATIN CAPITAL LETTER A 

इसी तरह, यहाँ कोड पॉइंट्स कि करने के लिए NFKD समतुल्य हैं ʟᴀᴛɪɴ ᴄᴀᴘɪᴛᴀʟ ʟᴇᴛᴛᴇʀ ɪ आप पर देख रहे थे:

U+00049 ‭ I GC=Lu SC=Latin  LATIN CAPITAL LETTER I 
U+01D35 ‭ ᴵ GC=Lm SC=Latin  MODIFIER LETTER CAPITAL I 
U+02110 ‭ ℐ GC=Lu SC=Common  SCRIPT CAPITAL I 
U+02111 ‭ ℑ GC=Lu SC=Common  BLACK-LETTER CAPITAL I 
U+02160 ‭ Ⅰ GC=Nl SC=Latin  ROMAN NUMERAL ONE 
U+024BE ‭ Ⓘ GC=So SC=Common  CIRCLED LATIN CAPITAL LETTER I 
U+0FF29 ‭ I GC=Lu SC=Latin  FULLWIDTH LATIN CAPITAL LETTER I 
U+1D408 ‭ GC=Lu SC=Common  MATHEMATICAL BOLD CAPITAL I 
U+1D43C ‭ GC=Lu SC=Common  MATHEMATICAL ITALIC CAPITAL I 
U+1D470 ‭ GC=Lu SC=Common  MATHEMATICAL BOLD ITALIC CAPITAL I 
U+1D4D8 ‭ GC=Lu SC=Common  MATHEMATICAL BOLD SCRIPT CAPITAL I 
U+1D540 ‭ GC=Lu SC=Common  MATHEMATICAL DOUBLE-STRUCK CAPITAL I 
U+1D574 ‭ GC=Lu SC=Common  MATHEMATICAL BOLD FRAKTUR CAPITAL I 
U+1D5A8 ‭ GC=Lu SC=Common  MATHEMATICAL SANS-SERIF CAPITAL I 
U+1D5DC ‭ GC=Lu SC=Common  MATHEMATICAL SANS-SERIF BOLD CAPITAL I 
U+1D610 ‭ GC=Lu SC=Common  MATHEMATICAL SANS-SERIF ITALIC CAPITAL I 
U+1D644 ‭ GC=Lu SC=Common  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I 
U+1D678 ‭ GC=Lu SC=Common  MATHEMATICAL MONOSPACE CAPITAL I 
U+1F138 ‭ GC=So SC=Common  SQUARED LATIN CAPITAL LETTER I 

ध्यान दें कि वहां एक उदाहरण के रूप में कोई ɢʀᴇᴇᴋ ᴄᴀᴘɪᴛᴀʟ ʟᴇᴛᴛᴇʀ ɪᴏᴛᴀ नहीं है।

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

मेरा मानना ​​है कि आईसीयू के पास \p{X-Confusable=A} जैसे विस्तारित, गैर-मानक संपत्ति है। मैंने इसके लिए अपनी डेटाफाइल डाउनलोड की है, लेकिन अभी तक इसके साथ बहुत कुछ नहीं खेला है।


अद्यतन

यह पता चला UTS #39, Unicode Security Mechanisms, आप के लिए वास्तव में क्या देख रहे है। यदि आप its raw, plaintext datafiles लाते हैं, तो आप यह निर्धारित करने में सक्षम होंगे कि कौन से कोड बिंदु एक दूसरे के साथ संभावित रूप से भ्रमित हैं।

उदाहरण के लिए, इस संदेश में पहले पाठ में, मैंने कोड बिंदुओं को समझाया जो एनएफकेडी ʟᴀᴛɪɴ ᴄᴀᴘɪᴛᴀʟ ʟᴇᴛᴛᴇʀ ɪ के बराबर थे, और इंगित किया कि उस सेट से कई संभावित confusables गायब थे। ऐसा इसलिए है क्योंकि एनएफकेडी मानचित्रण को confusables का पता लगाने के लिए डिज़ाइन नहीं किया गया है। हालांकि, यूटीएस # 3 9 की डेटाफाइल बहुत ही उद्देश्य के लिए डिज़ाइन की गई हैं।

मेरी ʟᴀᴛɪɴ ᴄᴀᴘɪᴛᴀʟ ʟᴇᴛᴛᴇʀ ɪ गणन फिर से करना करने के लिए, यह ucsort का उपयोग कर कि UTS # 39 समझे परस्पर इसके साथ भ्रम, हम इन सभी कोड अंक, unichars का उपयोग कर स्वरूपित और यूनिकोड मिलान एल्गोरिथ्म के क्रम में सॉर्ट को संभालने के लिए अद्यतन करने:

U+0007C ‭ | GC=Sm SC=Common  VERTICAL LINE 
U+02223 ‭ ∣ GC=Sm SC=Common  DIVIDES 
U+0FFE8 ‭ │ GC=So SC=Common  HALFWIDTH FORMS LIGHT VERTICAL 
U+00031 ‭ 1 GC=Nd SC=Common  DIGIT ONE 
U+1D7CF ‭ GC=Nd SC=Common  MATHEMATICAL BOLD DIGIT ONE 
U+1D7D9 ‭ GC=Nd SC=Common  MATHEMATICAL DOUBLE-STRUCK DIGIT ONE 
U+1D7E3 ‭ GC=Nd SC=Common  MATHEMATICAL SANS-SERIF DIGIT ONE 
U+1D7ED ‭ GC=Nd SC=Common  MATHEMATICAL SANS-SERIF BOLD DIGIT ONE 
U+1D7F7 ‭ GC=Nd SC=Common  MATHEMATICAL MONOSPACE DIGIT ONE 
U+00049 ‭ I GC=Lu SC=Latin  LATIN CAPITAL LETTER I 
U+0FF29 ‭ I GC=Lu SC=Latin  FULLWIDTH LATIN CAPITAL LETTER I 
U+02160 ‭ Ⅰ GC=Nl SC=Latin  ROMAN NUMERAL ONE 
U+02110 ‭ ℐ GC=Lu SC=Common  SCRIPT CAPITAL I 
U+02111 ‭ ℑ GC=Lu SC=Common  BLACK-LETTER CAPITAL I 
U+1D408 ‭ GC=Lu SC=Common  MATHEMATICAL BOLD CAPITAL I 
U+1D43C ‭ GC=Lu SC=Common  MATHEMATICAL ITALIC CAPITAL I 
U+1D470 ‭ GC=Lu SC=Common  MATHEMATICAL BOLD ITALIC CAPITAL I 
U+1D4D8 ‭ GC=Lu SC=Common  MATHEMATICAL BOLD SCRIPT CAPITAL I 
U+1D540 ‭ GC=Lu SC=Common  MATHEMATICAL DOUBLE-STRUCK CAPITAL I 
U+1D574 ‭ GC=Lu SC=Common  MATHEMATICAL BOLD FRAKTUR CAPITAL I 
U+1D5A8 ‭ GC=Lu SC=Common  MATHEMATICAL SANS-SERIF CAPITAL I 
U+1D5DC ‭ GC=Lu SC=Common  MATHEMATICAL SANS-SERIF BOLD CAPITAL I 
U+1D610 ‭ GC=Lu SC=Common  MATHEMATICAL SANS-SERIF ITALIC CAPITAL I 
U+1D644 ‭ GC=Lu SC=Common  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I 
U+1D678 ‭ GC=Lu SC=Common  MATHEMATICAL MONOSPACE CAPITAL I 
U+00196 ‭ Ɩ GC=Lu SC=Latin  LATIN CAPITAL LETTER IOTA 
U+0006C ‭ l GC=Ll SC=Latin  LATIN SMALL LETTER L 
U+0FF4C ‭ l GC=Ll SC=Latin  FULLWIDTH LATIN SMALL LETTER L 
U+0217C ‭ ⅼ GC=Nl SC=Latin  SMALL ROMAN NUMERAL FIFTY 
U+02113 ‭ ℓ GC=Ll SC=Common  SCRIPT SMALL L 
U+1D425 ‭ GC=Ll SC=Common  MATHEMATICAL BOLD SMALL L 
U+1D459 ‭ GC=Ll SC=Common  MATHEMATICAL ITALIC SMALL L 
U+1D48D ‭ GC=Ll SC=Common  MATHEMATICAL BOLD ITALIC SMALL L 
U+1D4C1 ‭ GC=Ll SC=Common  MATHEMATICAL SCRIPT SMALL L 
U+1D4F5 ‭ GC=Ll SC=Common  MATHEMATICAL BOLD SCRIPT SMALL L 
U+1D529 ‭ GC=Ll SC=Common  MATHEMATICAL FRAKTUR SMALL L 
U+1D55D ‭ GC=Ll SC=Common  MATHEMATICAL DOUBLE-STRUCK SMALL L 
U+1D591 ‭ GC=Ll SC=Common  MATHEMATICAL BOLD FRAKTUR SMALL L 
U+1D5C5 ‭ GC=Ll SC=Common  MATHEMATICAL SANS-SERIF SMALL L 
U+1D5F9 ‭ GC=Ll SC=Common  MATHEMATICAL SANS-SERIF BOLD SMALL L 
U+1D62D ‭ GC=Ll SC=Common  MATHEMATICAL SANS-SERIF ITALIC SMALL L 
U+1D661 ‭ GC=Ll SC=Common  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L 
U+1D695 ‭ GC=Ll SC=Common  MATHEMATICAL MONOSPACE SMALL L 
U+001C0 ‭ ǀ GC=Lo SC=Latin  LATIN LETTER DENTAL CLICK 
U+00399 ‭ Ι GC=Lu SC=Greek  GREEK CAPITAL LETTER IOTA 
U+1D6B0 ‭ GC=Lu SC=Common  MATHEMATICAL BOLD CAPITAL IOTA 
U+1D6EA ‭ GC=Lu SC=Common  MATHEMATICAL ITALIC CAPITAL IOTA 
U+1D724 ‭ GC=Lu SC=Common  MATHEMATICAL BOLD ITALIC CAPITAL IOTA 
U+1D75E ‭ GC=Lu SC=Common  MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA 
U+1D798 ‭ GC=Lu SC=Common  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA 
U+02C92 ‭ Ⲓ GC=Lu SC=Coptic  COPTIC CAPITAL LETTER IAUDA 
U+00406 ‭ І GC=Lu SC=Cyrillic  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I 
U+004C0 ‭ Ӏ GC=Lu SC=Cyrillic  CYRILLIC LETTER PALOCHKA 
U+005D5 ‭ ו GC=Lo SC=Hebrew  HEBREW LETTER VAV 
U+005DF ‭ ן GC=Lo SC=Hebrew  HEBREW LETTER FINAL NUN 
U+007CA ‭ ߊ GC=Lo SC=Nko   NKO LETTER A 
U+02D4F ‭ ⵏ GC=Lo SC=Tifinagh  TIFINAGH LETTER YAN 
U+0A4F2 ‭ ꓲ GC=Lo SC=Lisu   LISU LETTER I 

निफ्टी हालांकि यह भी बेहतर हो जाता है। डेटाफाइल में केवल एकल-कोडपॉइंट confusables शामिल नहीं है, लेकिन यह भी confusables है कि कुछ मामलों में कई कोड अंक की आवश्यकता हो सकती है। उदाहरण के लिए, यहां एक ऐसा सेट है, इस बार फ़ाइल-मूल प्रारूप में:

#  C̦  С̡  Ç  Ҫ 
     (‎ C̦ ‎) 0043 0326  LATIN CAPITAL LETTER C, COMBINING COMMA BELOW 
←  (‎ С̡ ‎) 0421 0321  CYRILLIC CAPITAL LETTER ES, COMBINING PALATALIZED HOOK BELOW 
←  (‎ Ç ‎) 00C7  LATIN CAPITAL LETTER C WITH CEDILLA # →Ҫ→→С̡→ 
←  (‎ Ҫ ‎) 04AA  CYRILLIC CAPITAL LETTER ES WITH DESCENDER  # →С̡→ 

क्या यह सूजन नहीं है? एकमात्र हिचकिचाहट तब तक है जब तक आप आईसीयू कक्षाओं का उपयोग नहीं करते हैं, आपको यूटीएस # 39 डेटाफाइल से अपना खुद का रोल करना होगा।

चूंकि कोई अन्य भाषा बाइंडिंग नहीं है, जिसके बारे में मुझे पता है, मैंने रीजिक्स इंजन में \p{X-Confusable=I} लिखने की आईसीयू शैली की नकल करने के लिए पर्ल बाइंडिंग बनाने के लिए अपनी ᴛᴏᴅᴏ सूची में जोड़ा है।

ध्यान दें कि आप भी दोनों UTS # 36 और UTS विचार करने के लिए # 39 है, जो आईसीयू SpoofChecker वर्ग आप के लिए संभालती चाह सकते हैं। यह विशेष रूप से यूआरआई-प्रकार की चीजों के लिए है (पढ़ें: इंटरनेट पहचानकर्ता, जो प्रतिबंधित चरित्र सेट का उपयोग करते हैं), न केवल किसी भी पुराने मनमाना पाठ।

3

जवाब @ dan04 द्वारा स्पष्ट सवाल का सही जवाब है, लेकिन अप्रत्यक्ष सवाल "अगर अक्षर हैं जो नेत्रहीन अप्रभेद्य हैं अनुकूलता तुल्यता है" एक और अधिक जटिल जवाब है।

एक नियम के रूप में, कैननिक रूप से समकक्ष वर्ण या चरित्र अनुक्रम समान दिखने वाले हैं। वे, एक ही सहज चरित्र के एन्कोडेड वर्णों के रूप में मोटे तौर पर बोल रहे हैं, अंतर प्रस्तुत करते हैं। हालांकि यह कई व्यावहारिक विचारों पर निर्भर करता है, और वास्तव में प्रस्तुतिकरण अलग-अलग हो सकते हैं।

दूसरी तरफ, पात्रों को दृष्टिहीन रूप से अलग किया जा सकता है भले ही उनके प्रस्तुतिकरण (ग्लिफ) प्रत्येक ज्ञात फ़ॉन्ट में समान हों। उदाहरण के लिए, पूंजी लैटिन अक्षर ए, पूंजी ग्रीक अक्षर अल्फा, और पूंजी सिरिलिक अक्षर ए में मौजूद किसी भी सामान्य फ़ॉन्ट में उनके लिए समान ग्लाइफ होते हैं, लेकिन वे अभी भी पूरी तरह से अलग वर्ण हैं, उनके बीच कोई समकक्ष मैपिंग नहीं है।

संगतता समकक्ष वर्ण प्रस्तुति में भिन्न हो सकते हैं, और वे अक्सर आंशिक रूप से करते हैं क्योंकि उनका अंतर अक्सर स्टाइलिस्ट होता है। लेकिन उन्हें अलग नहीं होना चाहिए।

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