Зарезервированные коды символов в Unicode - PullRequest
1 голос
/ 20 марта 2012

Почему в Юникоде есть несколько зарезервированных кодов символов?
См. Юникод для двух языков - Каннада и Тамил .Оба языка очень старые, и я думаю, что нет никаких шансов получить новые символы для этих языков.
РЕДАКТИРОВАТЬ: Тогда почему они тратят некоторые коды символов, делая его зарезервированными кодами символов?
Почему они не размещают зарезервированныекоды символов в конце каждого языкового набора символов?

1 Ответ

3 голосов
/ 20 марта 2012

Это связано с тем, как консорциум Unicode распределяет свои выделенные блоки, сценарии и кодовые точки. Например, в Block=Tamil его запуск выполняется следующим образом:

$ unichars '\p{Block=Tamil}' | head -20
U+00B82 ‭ ◌ஂ  GC=Mn SC=Tamil        TAMIL SIGN ANUSVARA
U+00B83 ‭ ஃ  GC=Lo SC=Tamil        TAMIL SIGN VISARGA
U+00B85 ‭ அ  GC=Lo SC=Tamil        TAMIL LETTER A
U+00B86 ‭ ஆ  GC=Lo SC=Tamil        TAMIL LETTER AA
U+00B87 ‭ இ  GC=Lo SC=Tamil        TAMIL LETTER I
U+00B88 ‭ ஈ  GC=Lo SC=Tamil        TAMIL LETTER II
U+00B89 ‭ உ  GC=Lo SC=Tamil        TAMIL LETTER U
U+00B8A ‭ ஊ  GC=Lo SC=Tamil        TAMIL LETTER UU
U+00B8E ‭ எ  GC=Lo SC=Tamil        TAMIL LETTER E
U+00B8F ‭ ஏ  GC=Lo SC=Tamil        TAMIL LETTER EE
U+00B90 ‭ ஐ  GC=Lo SC=Tamil        TAMIL LETTER AI
U+00B92 ‭ ஒ  GC=Lo SC=Tamil        TAMIL LETTER O
U+00B93 ‭ ஓ  GC=Lo SC=Tamil        TAMIL LETTER OO
U+00B94 ‭ ஔ  GC=Lo SC=Tamil        TAMIL LETTER AU
U+00B95 ‭ க  GC=Lo SC=Tamil        TAMIL LETTER KA
U+00B99 ‭ ங  GC=Lo SC=Tamil        TAMIL LETTER NGA
U+00B9A ‭ ச  GC=Lo SC=Tamil        TAMIL LETTER CA
U+00B9C ‭ ஜ  GC=Lo SC=Tamil        TAMIL LETTER JA
U+00B9E ‭ ஞ  GC=Lo SC=Tamil        TAMIL LETTER NYA
U+00B9F ‭ ட  GC=Lo SC=Tamil        TAMIL LETTER TTA

Они имеют тенденцию резервировать смежные строки из 4, 8 или 16 кодовых точек для всех одинаковых «видов» символов. Да, есть пробелы, но это похоже на то, как в файловой системе, когда вы выделяете сектор (или блок, если у вас нет отдельных секторов в блоке) для одного файла, даже если этот файл не использует все в своем (последний) сектор, вы не можете отдавать эти неиспользованные байты другому процессу. Вещи, как правило, дополняются, чтобы заблокировать границы в любом случае.

Мы не рискуем исчерпать коды.

Здесь начало выделенной области начинается со «Знаков», как показано первыми назначенными кодовыми точками в этом блоке. Разрыв может представлять собой переход от одного типа персонажа к другому. Если вы проверите первые пять кодовых точек в блоке для их свойств, вы увидите, что эти неназначенные кодовые точки все еще имеют свойство правильного блока:

$ uniprops -a U+00B80 U+00B81 U+00B82 U+00B83 U+00B84 U+00B85
U+0B80 ‹U+0B80› \N{U+0B80}
    \pC \p{Cn}
    All Any InTamil C Other Cn Unassigned Zzzz Unknown
    Age=Unassigned Bidi_Class=L Bidi_Class=Left_To_Right BC=L Block=Tamil Canonical_Combining_Class=0 Canonical_Combining_Class=Not_Reordered
       CCC=NR Canonical_Combining_Class=NR Decomposition_Type=None DT=None East_Asian_Width=Neutral Grapheme_Cluster_Break=Other GCB=XX
       Grapheme_Cluster_Break=XX Hangul_Syllable_Type=NA Hangul_Syllable_Type=Not_Applicable HST=NA Joining_Group=No_Joining_Group
       JG=NoJoiningGroup Joining_Type=Non_Joining JT=U Joining_Type=U Line_Break=Unknown LB=XX Line_Break=XX Numeric_Type=None NT=None
       Numeric_Value=NaN NV=NaN Present_In=Unassigned IN=Unassigned Script=Unknown SC=Zzzz Script=Zzzz Sentence_Break=Other SB=XX
       Sentence_Break=XX Word_Break=Other WB=XX Word_Break=XX
U+0B81 ‹U+0B81› \N{U+0B81}
    \pC \p{Cn}
    All Any InTamil C Other Cn Unassigned Zzzz Unknown
    Age=Unassigned Bidi_Class=L Bidi_Class=Left_To_Right BC=L Block=Tamil Canonical_Combining_Class=0 Canonical_Combining_Class=Not_Reordered
       CCC=NR Canonical_Combining_Class=NR Decomposition_Type=None DT=None East_Asian_Width=Neutral Grapheme_Cluster_Break=Other GCB=XX
       Grapheme_Cluster_Break=XX Hangul_Syllable_Type=NA Hangul_Syllable_Type=Not_Applicable HST=NA Joining_Group=No_Joining_Group
       JG=NoJoiningGroup Joining_Type=Non_Joining JT=U Joining_Type=U Line_Break=Unknown LB=XX Line_Break=XX Numeric_Type=None NT=None
       Numeric_Value=NaN NV=NaN Present_In=Unassigned IN=Unassigned Script=Unknown SC=Zzzz Script=Zzzz Sentence_Break=Other SB=XX
       Sentence_Break=XX Word_Break=Other WB=XX Word_Break=XX
U+0B82 ‹◌ஂ› \N{TAMIL SIGN ANUSVARA}
    \w \pM \p{Mn}
    All Any Alnum Alpha Alphabetic Assigned InTamil Tamil Is_Tamil Case_Ignorable CI M Mn Gr_Ext Grapheme_Extend Graph GrExt ID_Continue IDC
       Mark Nonspacing_Mark Print Taml Word XID_Continue XIDC X_POSIX_Alnum X_POSIX_Alpha X_POSIX_Graph X_POSIX_Print X_POSIX_Word
    Age=1.1 Bidi_Class=Nonspacing_Mark BC=NSM Bidi_Class=NSM Block=Tamil Canonical_Combining_Class=0 Canonical_Combining_Class=Not_Reordered
       CCC=NR Canonical_Combining_Class=NR Decomposition_Type=None DT=None East_Asian_Width=Neutral Grapheme_Cluster_Break=EX
       Grapheme_Cluster_Break=Extend GCB=EX Hangul_Syllable_Type=NA Hangul_Syllable_Type=Not_Applicable HST=NA Joining_Group=No_Joining_Group
       JG=NoJoiningGroup Joining_Type=T Joining_Type=Transparent JT=T Line_Break=CM Line_Break=Combining_Mark LB=CM Numeric_Type=None NT=None
       Numeric_Value=NaN NV=NaN Present_In=1.1 IN=1.1 Present_In=2.0 IN=2.0 Present_In=2.1 IN=2.1 Present_In=3.0 IN=3.0 Present_In=3.1 IN=3.1
       Present_In=3.2 IN=3.2 Present_In=4.0 IN=4.0 Present_In=4.1 IN=4.1 Present_In=5.0 IN=5.0 Present_In=5.1 IN=5.1 Present_In=5.2 IN=5.2
       Present_In=6.0 IN=6.0 Script=Tamil SC=Taml Script=Taml Sentence_Break=EX Sentence_Break=Extend SB=EX Word_Break=Extend WB=Extend
U+0B83 ‹ஃ› \N{TAMIL SIGN VISARGA}
    \w \pL \p{L_} \p{Lo}
    All Any Alnum Alpha Alphabetic Assigned InTamil Tamil Is_Tamil L Lo Gr_Base Grapheme_Base Graph GrBase ID_Continue IDC ID_Start IDS Letter
       L_ Other_Letter Print Taml Word XID_Continue XIDC XID_Start XIDS X_POSIX_Alnum X_POSIX_Alpha X_POSIX_Graph X_POSIX_Print X_POSIX_Word
    Age=1.1 Bidi_Class=L Bidi_Class=Left_To_Right BC=L Block=Tamil Canonical_Combining_Class=0 Canonical_Combining_Class=Not_Reordered CCC=NR
       Canonical_Combining_Class=NR Decomposition_Type=None DT=None East_Asian_Width=Neutral Grapheme_Cluster_Break=Other GCB=XX
       Grapheme_Cluster_Break=XX Hangul_Syllable_Type=NA Hangul_Syllable_Type=Not_Applicable HST=NA Joining_Group=No_Joining_Group
       JG=NoJoiningGroup Joining_Type=Non_Joining JT=U Joining_Type=U Line_Break=AL Line_Break=Alphabetic LB=AL Numeric_Type=None NT=None
       Numeric_Value=NaN NV=NaN Present_In=1.1 IN=1.1 Present_In=2.0 IN=2.0 Present_In=2.1 IN=2.1 Present_In=3.0 IN=3.0 Present_In=3.1 IN=3.1
       Present_In=3.2 IN=3.2 Present_In=4.0 IN=4.0 Present_In=4.1 IN=4.1 Present_In=5.0 IN=5.0 Present_In=5.1 IN=5.1 Present_In=5.2 IN=5.2
       Present_In=6.0 IN=6.0 Script=Tamil SC=Taml Script=Taml Sentence_Break=LE Sentence_Break=OLetter SB=LE Word_Break=ALetter WB=LE
       Word_Break=LE
U+0B84 ‹U+0B84› \N{U+0B84}
    \pC \p{Cn}
    All Any InTamil C Other Cn Unassigned Zzzz Unknown
    Age=Unassigned Bidi_Class=L Bidi_Class=Left_To_Right BC=L Block=Tamil Canonical_Combining_Class=0 Canonical_Combining_Class=Not_Reordered
       CCC=NR Canonical_Combining_Class=NR Decomposition_Type=None DT=None East_Asian_Width=Neutral Grapheme_Cluster_Break=Other GCB=XX
       Grapheme_Cluster_Break=XX Hangul_Syllable_Type=NA Hangul_Syllable_Type=Not_Applicable HST=NA Joining_Group=No_Joining_Group
       JG=NoJoiningGroup Joining_Type=Non_Joining JT=U Joining_Type=U Line_Break=Unknown LB=XX Line_Break=XX Numeric_Type=None NT=None
       Numeric_Value=NaN NV=NaN Present_In=Unassigned IN=Unassigned Script=Unknown SC=Zzzz Script=Zzzz Sentence_Break=Other SB=XX
       Sentence_Break=XX Word_Break=Other WB=XX Word_Break=XX
U+0B85 ‹அ› \N{TAMIL LETTER A}
    \w \pL \p{L_} \p{Lo}
    All Any Alnum Alpha Alphabetic Assigned InTamil Tamil Is_Tamil L Lo Gr_Base Grapheme_Base Graph GrBase ID_Continue IDC ID_Start IDS Letter
       L_ Other_Letter Print Taml Word XID_Continue XIDC XID_Start XIDS X_POSIX_Alnum X_POSIX_Alpha X_POSIX_Graph X_POSIX_Print X_POSIX_Word
    Age=1.1 Bidi_Class=L Bidi_Class=Left_To_Right BC=L Block=Tamil Canonical_Combining_Class=0 Canonical_Combining_Class=Not_Reordered CCC=NR
       Canonical_Combining_Class=NR Decomposition_Type=None DT=None East_Asian_Width=Neutral Grapheme_Cluster_Break=Other GCB=XX
       Grapheme_Cluster_Break=XX Hangul_Syllable_Type=NA Hangul_Syllable_Type=Not_Applicable HST=NA Joining_Group=No_Joining_Group
       JG=NoJoiningGroup Joining_Type=Non_Joining JT=U Joining_Type=U Line_Break=AL Line_Break=Alphabetic LB=AL Numeric_Type=None NT=None
       Numeric_Value=NaN NV=NaN Present_In=1.1 IN=1.1 Present_In=2.0 IN=2.0 Present_In=2.1 IN=2.1 Present_In=3.0 IN=3.0 Present_In=3.1 IN=3.1
       Present_In=3.2 IN=3.2 Present_In=4.0 IN=4.0 Present_In=4.1 IN=4.1 Present_In=5.0 IN=5.0 Present_In=5.1 IN=5.1 Present_In=5.2 IN=5.2
       Present_In=6.0 IN=6.0 Script=Tamil SC=Taml Script=Taml Sentence_Break=LE Sentence_Break=OLetter SB=LE Word_Break=ALetter WB=LE
       Word_Break=LE

Если вы посмотрите на другие выделенные блоки, вы увидите то же самое. Нет смысла разбивать блоки на несвязанные вещи.

Как я уже сказал, это не значит, что им не хватит места, поэтому я не знаю, что здесь за дело.

Кстати, вы можете получить Unicode, например, unichars , uniprops , uninames из моего инструмента командной строки Unicode , либо индивидуально оттуда, либо весь пакет доступен через CPAN Unicode::Tussle suite .

...