17 Mayıs 2023 Çarşamba

Unicode Düzlemleri (Plane) - Basic Multilingual Plane (BMP)

Giriş
Bu düzlem ilk Unicode standardından beri var. Daha sonra Unicode yetersiz kalınca diğer düzlemler de eklenmiş. İlk 65 bin küsur karaktere denk gelir. Açıklaması şöyle
The Basic Multilingual Plane (BMP) is the first and most commonly used 65,536 code points of Unicode, covering the codes of the characters for nearly all modern writing even across languages, from English to Mandarin and Hindi.
Açıklaması şöyle
The Unicode Standard has since been changed to allow for characters whose representation requires more than 16 bits. The range of Unicode code points is now U+0000 to U+10FFFF. The set of characters from U+0000 to U+FFFF is called the basic multilingual plane (BMP), and characters whose code points are greater than U+FFFF are called supplementary characters. Such characters are generally rare, but some are used, for example, as part of Chinese and Japanese personal names. To support supplementary characters without changing the char primitive data type and causing incompatibility with previous Java programs, supplementary characters are defined by a pair of Unicode code units called surrogates. 
Unicode karakterlerin sayısal değerlerinin ilk 7 biti Group, sonraki 8 biti Plane, sonraki 8 biti Row, en son 8 biti Cell olarak gruplanır. İlk Plane (group = 0, plane = 0) Basic Multilingual Plane (BMP) olarak adlandırılır. En çok kullanılan karakterler Basic Multilingual Plane alanına düşerler.

Basic Multilingual Plane kendi içinde alt bloklardan oluşuyor. Bir karakterin hangi blokta oluğunu öğrenmek için Java'da Character.UnicodeBlock.of (char) metodu kullanılabilir.

Türkçedeki her karakter aynı Unicode bloğuna ait değil. Çoğunluk BASIC_LATIN bloğunda olmasına rağmen bazı karakterler LATIN1_SUPPLEMENT  ve
LATIN_EXTENDED_A bloklarındalar.

2.1 BMP Basic Latin Block
BASIC_LATIN bloğundaki tüm karakterler UTF-8 encoding ile 1 byte yer kaplıyorlar. Yani bu block 0-127 arasındaki ASCII bloğu ile aynı.

2.BMP Latin-1 Supplement
Latin-1 Supplement 128'den 255'e kadar olan karakterleri içerir. Bu blok batı Avrupa dillerindeki karakterleri içindir. Basic Latin'den farklı olarak her karakter 8 bit uzunluğundadır. Bu block ISO-8859-1 ile aynı. ISO-8859-1 çok yeni bir standart değil. Örneğin Euro karakteri bu kodekte yok. ISO-8859-15 gibi daha yeni karakterleri içeren kodekler var.  Türkçe ISO-8859-9 kodekini kullanıyor.

CP1252'de Latin-1 gibi. Açıklaması şöyle
CP1252 is not a multibyte character set. It is a Windows variant of the Latin-1 or ISO-8859-1 character set.
İlginç Latin-1 Karakterleri
Acute Accent Karakteri
´ şeklinde gösterilir.
Name          Code point  Script  Block               UTF-8
GRAVE ACCENT  U+000060    Common  Basic Latin         60
ACUTE ACCENT  U+0000B4    Common  Latin 1 Supplement  C2 B4
Micro Karakteri
µ şeklinde gösterilir.

Diğer Karakterler
Aşağıdaki tabloda BASIC_LATIN bloğunda olmayan karakterler görülebilir.
Küçük "ı" ve büyük "I" harfleri farklı bloklarda. Aynı şekilde küçük "i" ve büyük "İ" harfleri de farklı bloklarda.

ç LATIN_1_SUPPLEMENT
ğ LATIN_EXTENDED_A
ı LATIN_EXTENDED_A
i BASIC_LATIN
ö LATIN_1_SUPPLEMENT
ş LATIN_EXTENDED_A
ü LATIN_1_SUPPLEMENT

Ç LATIN_1_SUPPLEMENT
Ğ LATIN_EXTENDED_A
I BASIC_LATIN
İ LATIN_EXTENDED_A
Ö LATIN_1_SUPPLEMENT
Ş LATIN_EXTENDED_A
Ü LATIN_1_SUPPLEMENT

2.BMP Latin Extended-A
Latin Extended-A bloğu 256'dan 383'e kadar Unicode karakterleri içerir.

2.4 BMP  General Punctuation
RIGHT-TO-LEFT OVERRIDE
Şöyle yaparız. Çıktı olarak "hello world!" alırız.
greet = "‮".toString.bind("hello world!")

Hiç yorum yok:

Yorum Gönder