Náhradní znaky a doplňkové znaky
Aplikace windows obvykle používají UTF-16 k reprezentaci Unicode znaková data. Použití 16 bitů umožňuje přímé znázornění 65 536 jedinečných znaků, ale tato základní vícejazyčná rovina (BMP) není téměř dostatečná k pokrytí všech symbolů použitých v lidských jazycích. Unicode verze 4.1 obsahuje více než 97 000 znaků s více než 70 000 znaky pro čínštinu.
Standard Unicode vytvořil 16 dalších "rovin" znaků, přičemž každá má stejnou velikost jako BMP. Většina bodů kódu nad rámec BMP ještě nemá přiřazené znaky, ale definice rovin dává Unicode potenciál definovat 1,114,112 znaků (tj. 216 * 17 znaků) v rozsahu bodů kódu U+0000 až U+10FFFF. Aby UTF-16 představoval tuto větší sadu znaků, standard Unicode definuje "doplňkové znaky".
O doplňkových znacích
Doplňkový znak je znak umístěný mimo BMP a "náhradní" je hodnota kódu UTF-16. Pro UTF-16 se vyžaduje "náhradní pár" k reprezentaci jednoho doplňkového znaku. První (vysoká) náhrada je 16bitová hodnota kódu v rozsahu U+D800 až U+DBFF. Druhá (nízká) náhrada je 16bitová hodnota kódu v rozsahu U+DC00 až U+DFFF. Pomocí náhradního mechanismu může UTF-16 podporovat všech 1 114 112 potenciálních znaků Unicode. Další podrobnosti o doplňkových znacích, náhradních a náhradních dvojicích najdete v tématu StandardníUnicode .
Poznámka
Systém Windows 2000 zavádí podporu základního vstupu, výstupu a jednoduchého řazení doplňkových znaků. Všechny systémové komponenty však nejsou kompatibilní s doplňkovými znaky.
Operační systém podporuje doplňkové znaky následujícími způsoby:
- Formát 12 tabulky cmap písma OpenType přímo podporuje 4 bajtový kód znaku. Další informace naleznete v specifikace písma OpenType.
- Systém Windows podporuje náhradní editory vstupních metod (IMEs).
- Rozhraní API GDI systému Windows podporuje tabulky ve formátu 12 cmap ve písmech, aby bylo možné správně zobrazit náhradní dotazy.
- Rozhraní API Uniscribe podporuje doplňkové znaky.
- ovládací prvky Systému Windows, včetně úpravy a formátovanéhopro úpravy , podporují doplňkové znaky.
- Modul HTML podporuje stránky HTML, které obsahují doplňkové znaky pro zobrazení, úpravy (prostřednictvím Aplikace Outlook Express) a odesílání formulářů.
- Tabulka řazení operačního systému podporuje doplňkové znaky.
Obecné pokyny pro vývoj softwaru pomocí doplňkových znaků
UTF-16 zpracovává doplňkové znaky jako náhradní dvojice. Operační systém zpracovává náhradní dvojici podobně jako způsob, jakým zpracovává nesložení značky. V době zobrazení se náhradní dvojice zobrazí jako jeden glyf pomocí uniscribe, jak je předepsáno standardem Unicode.
Systém Windows Vista zavádí tři nová makra, která pomáhají identifikovat náhradní a náhradní páry v řetězcích UTF-16. Jedná se o IS_HIGH_SURROGATE, IS_LOW_SURROGATEa IS_SURROGATE_PAIR.
Aplikace automaticky podporují doplňkové znaky, pokud podporují Unicode a používají systémové ovládací prvky a standardní funkce rozhraní API, například ExtTextOut a DrawText. Proto pokud vaše aplikace používá standardní systémové ovládací prvky nebo používá obecné ExtTextOut-type volání k zobrazení, doplňkové znaky by měly fungovat bez speciálního kódování.
Aplikace, které implementují vlastní podporu úprav tím, že pracují s pozicemi glyfů přizpůsobeným způsobem, můžou pro veškeré zpracování textu používat Uniscribe. Jednopis má samostatné funkce pro zpracování složitých skriptů, jako je zobrazení textu, testování a pohyb kurzoru. Aby aplikace získala tyto pokročilé funkce, musí volat funkce Uniscribe. Všimněte si, že aplikace používající funkce Uniscribe jsou plně vícejazyčné, ale to představuje snížení výkonu. Některé aplikace by proto měly provádět vlastní zpracování doplňkových znaků.
Vzhledem k tomu, že náhradní mechanismus představující doplňkové znaky je dobře definovaný, může vaše aplikace obsahovat kód pro zpracování náhradního textu UTF-16. Pokud aplikace narazí na oddělenou hodnotu UTF-16 od nižšího vyhrazeného náhradního rozsahu (nízké náhradní brány) nebo horního vyhrazeného náhradního rozsahu (vysoký náhradník), musí být hodnota jedna polovina náhradní dvojice. Aplikace tak může zjistit náhradní dvojici provedením jednoduché kontroly rozsahu. Pokud v dolním nebo horním rozsahu narazí na hodnotu UTF-16, musí sledovat 16bitovou šířku směrem dozadu nebo dopředu, aby získal zbytek znaku. Při psaní aplikace mějte na paměti, že CharNext a CharPrev přesunout o 16bitové body kódu, ne náhradní páry.
Poznámka
Samostatné náhradní body kódu mají buď vysokou náhradu bez sousední nízké náhrady, nebo naopak. Tyto body kódu jsou neplatné a nejsou podporovány. Jejich chování není definováno.
Pokud vyvíjíte písmo nebo poskytovatele editoru IME, mějte na paměti, že operační systémy starší než Windows XP ve výchozím nastavení zakazují podporu doplňkových znaků. Systém Windows XP a novější umožňují ve výchozím nastavení doplňkové znaky. Pokud zadáte písmo a balíček editoru IME, který vyžaduje doplňkové znaky, musí vaše aplikace nastavit následující hodnoty registru:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\LanguagePack]
SURROGATE=(REG_DWORD)0x00000002
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts\42]
IEFixedFontName=[Surrogate Font Face Name]
IEPropFontName=[Surrogate Font Face Name]
Související témata