Lista winnt@man.lodz.pl
[Lista archiwów] [Inne Listy]

Re: [WINNT] wyzsze znaki unicode: ① , ❾

To: winnt@man.lodz.pl
Subject: Re: [WINNT] wyzsze znaki unicode: ① , ❾
From: "Andrzej P. Wozniak" <uszer@poczta.onet.pl.invalid>
Date: Mon, 7 May 2018 11:51:34 +0200
Osoba podpisana jako JaNus <bez@adresu>
w artykule <news:5aede8b8$0$31362$65785112@news.neostrada.pl> pisze:

Mają one nr-y (szesnastkowo): od 2460 - 277F

To jest kilka zakresów Unikodu.

A jako że szesnastkowo, to w tych numerach (ich miejsca w tabeli)
unicode występują litery, więc nie działa typowy sposób ich wklepywania
[alt] z 4 cyfrową liczbą, system nie "łyka" w tym trybie liter.

Łyka, ale nie zawsze.

 W tabeli
znaków jest podpowiedziany skrót do ich uzyskania [alt]+X, ale mi nie
działa. Czemu?

Może masz stary system lub starą aplikację, a może coś musisz doinstalować
czy skonfigurować?

A teraz do rzeczy.

Podobny wątek był tu na przełomie listopada i grudnia 2012 r. i miał temat
"Wklepywania znaków kodami na klawiaturze numerycznej".

Informacja była wtedy rozrzucona po różnych wiadomościach wątku, np.
news:50c27d8e$0$26689$65785112@news.neostrada.pl
news:50c3801e$0$1230$65785112@news.neostrada.pl
Teraz jest podobnie, więc zbieram wszystko w jedno miejsce.

*I.* Zasady pisania chyba od Windows 98 do XP są trzy, wszystkie z lewym Alt:
1. Przytrzymujemy lewy Alt i wpisujemy z klawiatury numerycznej dziesiętny
  kod znaku w kodowaniu dosowym (OEM)[1], przykładowo Alt 160 to á.
2. Przytrzymujemy lewy Alt i wpisujemy z klawiatury numerycznej 0 (zero)
  i dziesiętny kod znaku w kodowaniu windowsowym (ANSI)[2], przykładowo
  Alt 0128 to euro, a Alt 0160 to non-breaking-space.
3. Przytrzymujemy lewy Alt i wpisujemy z klawiatury numerycznej + (plus)
  i szesnastkowy kod xxxx znaku U+xxxx z tablicy Unikodu (2 do 6 cyfr hex,
   mogą być z normalnej klawiatury)[3].

[1,2] Kodowanie dosowe i windowsowe (OEM i ANSI w nomenklaturze Microsoftu)
jest właściwe dla aktywnego układu klawiatury, np. IBM852 i windows-1250
dla układu polskiego (wg nazewnictwa internetowego zarejestrowanego w IANA).
W obu metodach można wprowadzać dowolną liczbę dziesiętną, brana jest jej
wartość modulo 256, czyli tylko najmłodszy bajt reprezentacji hex. Dlatego
Alt 9312 (lub Alt 09312) daje 96, czyli zawsze dostępny znak US-ASCII:
` U+0060 GRAVE ACCENT (dwie cyfry hex).

[3] Niektóre programy mimo włączenia zaawansowanych usług tekstowych mogą
zamiast wprowadzanych po klawiszu Alt i plusie cyfr hex A-F wywoływać
używane w menu programu skróty klawiszowe, np.:
Alt +A → &Add
Alt +E → &Edit
Alt +F → &Format
gdzie plus to znak wprowadzany, a nie przytrzymanie lewego klawisza Alt.
Przykładowo w Windows XP notatnik działa bez problemu mimo opcji &Edycja
w menu, ale Outlook Express upiera się przy menu.
Wprowadzanie kodów szesnastkowych jest możliwe, jeśli użytkownik ma
w rejestrze Windows w kluczu "HKEY_CURRENT_USER\Control Panel\Input Method"
dodany ciąg EnableHexNumpad z wartością 1. W razie potrzeby można tę
wartość dodać ręcznie lub doinstalować IME (Input Method Editor) np. razem
z obsługą języków dalekowschodnich (CJK).

*II.* W nowszych systemach są dodatkowe metody podane przez Grześka:
4. Przytrzymujemy lewy Alt i wpisujemy z klawiatury numerycznej dziesiętny
  kod znaku z tablicy Unikodu[4].
5. Wpisujemy kod hex i po jego wprowadzeniu naciskamy Alt X[5].

Te nowe metody nie działają w Windows XP i starszych systemach, mogą też
nie działać w aplikacjach pisanych dla tych systemów. Zapewne wymagana jest
nie tylko nowa wersja IME, ale też nowsza wersja USP (Uniscribe Unicode
script processor). Mogą być też różnice między wersjami 32- i 64-bitowymi
systemów i aplikacji. Sprawdzałem tylko 32-bit Windows XP, może ktoś zechce
uzupełnić te dane…

[4] Wygląda na to, że po wprowadzeniu windowsowej strony kodowej dla konsoli
(wiersza poleceń) metoda 4 zastąpiła metodę 1.
[4,5] Mile widziane wyniki testów w notatniku 32-bitowej Visty.

*III.* Tablice Unikodu są oczywiście dostępne u źródła http://unicode.org
Doskonały dostęp do tablic Unikodu daje aplikacja BabelMap opisana tutaj: http://www.babelstone.co.uk/Software/BabelMap.html
Numer wersji programu odpowiada numerowi wersji Unicode – obecnie jest to
już 10.0.

*IV.* Skorzystajmy z BabelMap i poszukajmy wspomnianych numerów w kółkach

A. Znaki z zakresu Unicode o nazwie Enclosed Alphanumerics:
U+2460 do U+2468 CIRCLED DIGIT od 1 do 9
U+2469 do U+2473 CIRCLED NUMBER od 10 do 20
Zatem jedynka w kółku to Alt +2460: ①
Zera są w innym miejscu tego zakresu:
U+24EA CIRCLED DIGIT ZERO
U+24FF NEGATIVE CIRCLED DIGIT ZERO

B. Kolejna grupa to znaki z zakresu Dingbats zgrupowane w trzy bloki:
– U+2776 do U+277F to DINGBAT NEGATIVE CIRCLE NUMBER od 1 do 10
– U+2780 do U+2789 to DINGBAT CIRCLED SANS-SERIF NUMBER od 1 do 10
– U+278A do U+2893 to DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER od 1 do 10
W tym przypadku jasna jedynka w kółku to Alt +2780: ➀

C. Brakujące w Dingbats zera w kółku dodano w zakresie Unicode o nazwie
Enclosed Alphanumeric Supplement
U+1F10B DINGBAT CIRCLED SANS-SERIF DIGIT ZERO
U+1F10C DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
Jak widać, jest tu już pięć cyfr hex, czyli znaki te mogą być niedostępne
w wielu popularnych fontach, a przynajmniej w ich starszych wersjach.

*V.* Wypada na koniec zauważyć, że:
* Nie każdy program potrafi użyć znaków z innego fontu, jeśli brakuje ich
w foncie wybranym. Nawet dobry program może tego nie zrobić, gdy wybrany
font zawiera pojedyncze znaki z jakiegoś ich zakresu zamiast ich kompletnego
zestawu dostępnego w innym foncie.
* Znaki powinny być używane zgodnie z ich przeznaczeniem, a nie służyć
do robienia szlaczków, utrudniania czytania czy wprowadzania w błąd (zob.
atak homograficzny).

Tyle na razie, jeśli coś pominąłem czy przekręciłem, proszę o uzupełnienie
lub poprawienie.

--
Andrzej P. Woźniak  uszer@pochta.onet.pl  (zamień miejscami z-h w adresie)
 …przed odesłaniem kogoś do jakiejś strony zawsze sprawdzam,
 czy to co na niej się znajduje jest zgodne z moją wiedzą.
-- Michał Kawecki na pl.comp.nowe-programy

<Pop. w Wątku] Aktualny Wątek [Nast. w Wątku>