Почему не все/все Юникод справа и слева стрелки совпадают (в частности, "черные" стрелки)?
Юникод имеет кучу стрелок, но многие из них не имеют соответствующих правых и левых версий. В частности, "черные" стрелки, которые кажутся наиболее очевидными (для меня) для использования в задачах, связанных с навигацией, не имеют левой и правой версии, которая обычно "соответствует:" ➡ обычно не похожа на ⬅.
Существует четкая свобода выбора для шрифтов, здесь: для некоторых шрифтов они соответствуют. Но даже страницы в FileFormat.info показывают, что символы выглядят иначе: сравните правая стрелка от левая стрелка.
Любая идея, что дает? Кажется довольно очевидным (для меня), что вы хотите совпадения (во всех четырех основных направлениях) для любой стрелки, включенной в Unicode. Для этого конкретного типа стрелки вверх и down стрелки совпадают. Есть даже соответствующие стрелки для "углов".
Примечание. Я разместил связанный комментарий по этому связанному вопросу: не может найти стрелку правой руки в формате unicode
Ответы
Ответ 1
В Unicode 1.1.0 была введена правая стрелка вместе со всеми другими Dingbats. У него было достаточно времени, чтобы стать "настроенным" как "дингбат", чтобы он не соответствовал левой стрелке, введенной в 4.0.0. Должны ли они соответствовать? Конечно. Но не все символьные шрифты охватывают как Dingbats, так и различные символы и стрелки.
Ответ 2
Обратите внимание, что в файле Unicode NamesList есть следующие комментарии:
➡ 27A1 BLACK RIGHTWARDS ARROW
* fonts may harmonize this glyph with the style for other black arrows
x (leftwards black arrow - 2B05)
⬅ 2B05 LEFTWARDS BLACK ARROW
x (black rightwards arrow - 27A1)
Итак, это означает, что шрифты приветствуются, но не требуются, чтобы они выглядели как другие черные стрелки. Вот как проверить все черные стрелки с помощью uninames script:
$ uninames BLACK WARDS ARROW
➡ 27A1 BLACK RIGHTWARDS ARROW
* fonts may harmonize this glyph with the style for other black arrows
x (leftwards black arrow - 2B05)
➤ 27A4 BLACK RIGHTWARDS ARROWHEAD
➥ 27A5 HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
➦ 27A6 HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
➧ 27A7 SQUAT BLACK RIGHTWARDS ARROW
➨ 27A8 HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
➵ 27B5 BLACK-FEATHERED RIGHTWARDS ARROW
➸ 27B8 HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
⤝ 291D LEFTWARDS ARROW TO BLACK DIAMOND
⤞ 291E RIGHTWARDS ARROW TO BLACK DIAMOND
⤟ 291F LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
⤠ 2920 RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
⬅ 2B05 LEFTWARDS BLACK ARROW
x (black rightwards arrow - 27A1)
⬆ 2B06 UPWARDS BLACK ARROW
⬇ 2B07 DOWNWARDS BLACK ARROW
Обратите внимание, что эти кодовые точки не отмечены как биди-зеркальные. Они не встречаются в файле BidiMirroring, который имеет только следующие:
$ grep ARROW BidiMirroring.txt
# 29A8; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
# 29A9; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
# 29AA; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
# 29AB; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
# 29AC; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
# 29AD; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
# 29AE; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
# 29AF; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
# 2A17; INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
Если вы проверите эти два свойства кода с помощью uniprops script, вы увидите, где они немного отличаются:
$ uniprops -a 27A1 2B05
U+27A1 ‹➡› \N{BLACK RIGHTWARDS ARROW}
\pS \p{So}
All Any Assigned InDingbats Common Zyyy Dingbats So S Gr_Base Grapheme_Base Graph GrBase Other_Symbol Pat_Syn Pattern_Syntax PatSyn Print Symbol
X_POSIX_Graph X_POSIX_Print
Age=1.1 Bidi_Class=ON Bidi_Class=Other_Neutral BC=ON Block=Dingbats Canonical_Combining_Class=0 Canonical_Combining_Class=Not_Reordered CCC=NR
Canonical_Combining_Class=NR Script=Common 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 SC=Zyyy Script=Zyyy
Sentence_Break=Other SB=XX Sentence_Break=XX Word_Break=Other WB=XX Word_Break=XX
U+2B05 ‹⬅› \N{LEFTWARDS BLACK ARROW}
\pS \p{So}
All Any Assigned InMiscellaneousSymbolsAndArrows Common Zyyy So S Gr_Base Grapheme_Base Graph GrBase Miscellaneous_Symbols_And_Arrows Other_Symbol
Pat_Syn Pattern_Syntax PatSyn Print Symbol X_POSIX_Graph X_POSIX_Print
Age=4.0 Bidi_Class=ON Bidi_Class=Other_Neutral BC=ON Block=Miscellaneous_Symbols_And_Arrows Canonical_Combining_Class=0
Canonical_Combining_Class=Not_Reordered CCC=NR Canonical_Combining_Class=NR Script=Common 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=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 SC=Zyyy Script=Zyyy Sentence_Break=Other SB=XX Sentence_Break=XX Word_Break=Other WB=XX Word_Break=XX
Ответ 3
У меня был тот же вопрос, почему эти две стрелки не совпадают. Кажется глупым. Anywho, есть лучший выбор совпадающих стрелок в разделе дополнение-c, и весь список здесь все разделы