Как найти, какие буквы Юникода выглядят хорошо в URL - PullRequest
0 голосов
/ 29 мая 2019

Для некоторых примеров:

Эти символы слишком короткие или перекрывают окружающие символы:

/b5/ີ/foo
/31/ั/foo
/39/᤹/foo
/a3/ᮣ/foo

Они слишком длинные, чтобы поместиться в слот моноширинного символа:

/4b/ോ/foo
/23/ᠣ/fo
/61/ᡡ/foo
/86/ᢆ/foo
/ba/຺/foo

Тогда пустые / пробельные / невидимые символы также будут считаться теми, которые не вписываются в URL.

Интересно, есть ли простой способ выяснить, какие символы попадают в эти слоты:

  1. Хорошо вписывается в URL (латинские символы, китайские символы и т. Д.).
  2. Слишком большой для моноширинного пространства (китайские символы, приведенные выше примеры и т. Д.).
  3. Объединение символов или совпадений с окружающими символами URL (примеры выше).

Может быть, путем проверки какого-либо свойства символа Unicode, есть способ сказать это программно, поэтому мне не нужно проходить через каждый символиндивидуально и визуально проверьте, к какой категории он относится.

В основном я ищу, какие символы нужно либо (а) поместить на другого персонажа (гребень)начальные символы), или (b) необходимо добавить некоторые дополнительные отступы, как в примерах выше, чтобы их можно было увидеть в URL).

1 Ответ

0 голосов
/ 29 мая 2019

Проблема плохо определена. Вы утверждаете, что последние пять не подходят, но для меня они отображаются в одном столбце, что в точности соответствует тому, как указано в Unicode. Также см .: https://stackoverflow.com/a/56216985/46395

use 5.030;
use Unicode::GCString qw();

for (
    "\N{WORD JOINER}",                  # U+2060
    "\N{LATIN SMALL LETTER L}",         # U+006C
    "\N{CJK UNIFIED IDEOGRAPH-4E2D}",   # U+4E2D

    "\N{LAO VOWEL SIGN II}",                # U+0EB5
    "\N{THAI CHARACTER MAI HAN-AKAT}",      # U+0E31
    "\N{LIMBU SIGN MUKPHRENG}",             # U+1939
    "\N{SUNDANESE CONSONANT SIGN PANYIKU}", # U+1BA3

    "\N{MALAYALAM VOWEL SIGN OO}",                  # U+0D4B
    "\N{MONGOLIAN LETTER O}",                       # U+1823
    "\N{MONGOLIAN LETTER SIBE U}",                  # U+1861
    "\N{MONGOLIAN LETTER ALI GALI THREE BALUDA}",   # U+1886
    "\N{LAO SIGN PALI VIRAMA}",                     # U+0EBA
) {
    say Unicode::GCString->new($_)->columns
}
__END__
0
1
2
0
0
0
0
1
1
1
1
1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...