Sifferformer
Arabiska och många andra språk har klassiska former för tal som skiljer sig från de konventionella västerländska siffror som oftast används på datorer. För att undvika tvetydigheter vid namngivning av dessa former använder det här dokumentet följande namn från Unicode-standarden.
Unicode-namnet på siffrorna | Land/region där används |
---|---|
Europeiska siffror | Europa, Amerika och många andra länder/regioner |
Arabic-Indic siffror | Arabiska länder/regioner (även om många använder europeiska siffror) |
Andra nationella siffror: indiciska siffror, thailändska siffror och liknande | Olika länder/regioner |
Unicode tillhandahåller separata kodpunkter för varje sifferform. För att få åtkomst till specialspråkssiffriga former kan ditt program därför använda relevanta Unicode-teckenkoder för siffrorna ovan, U+0030 till U+0039. Dessa koder visas alltid med lämplig form, beroende på teckensnittstillgänglighet.
Unicode-teckenkoderna U+0030 till U+0039 representerar nominellt de europeiska siffrorna 0 till och med 9, men deras sifferform kan ändras. GDI- och DirectWrite-text-API:er tillhandahåller mekanismer för program för att styra det här beteendet. (Se till exempel ScriptApplyDigitSubstitution eller IDWriteTextAnalysisSink::SetNumberSubstitution.) Beteendet i vissa gränssnittskontroller och användargränssnittsramverk kan svara på användarinställningar för ersättning av siffror. LOCALE_IDIGITSUBSTITUTION LCTYPE kan användas för att hämta standardinställningarna för ersättning av siffror för olika nationella inställningar eller den aktuella användarens skrivbordsinställningar för sifferersättning.
Interna siffror
Interna siffror är de sifferformer som användaren har valt i egenskapsbladet Number i den regionala delen och språkalternativen på Kontrollpanelen. För att hitta den sifferpresentation som användaren föredrar använder programmet funktionen GetLocaleInfo eller GetLocaleInfoEx med LOCALE_SNATIVEDIGITS konstant som representerar språkinformationen.
Not
Vanligtvis genereras Unicode-siffriga koder i körningsoperativsystemrutiner. Därför måste vanliga körningsoperativsystem uppgraderas för att programmet ska kunna inspektera LOCALE_SNATIVEDIGITS på rätt sätt.
Ersättning av siffror
Programmet kan använda sifferersättning för att tala om för operativsystemet hur man skriver ut siffror U+0030 till U+0039. Den LOCALE_IDIGITSUBSTITUTION konstanten styr den här åtgärden.
Sifferformning för en enskild funktion
Funktionerna ExtTextOut, GetCharacterPlacementoch GCP_RESULTS har flaggor som styr ersättningen av Unicode-koderna U+0030 till U+0039 under funktionsanropets varaktighet. Dessa flaggor åsidosätter regionala inställningar på Kontrollpanelen, men återställ inte inställningarna. Dessutom åsidosätter de inte Unicode-koderna NADS och NODS. Följande flaggor är tillgängliga.
Flaggor | Siffror som används | Används i |
---|---|---|
ETO_NUMERICSLATIN | Europeiska siffror | ExtTextOut |
ETO_NUMERICSLOCAL | Siffror som är lämpliga för nationella inställningar | ExtTextOut |
GCP_NUMERICSLATIN | Europeiska siffror | GetCharacterPlacement |
GCP_NUMERICSLOCAL | Siffror som är lämpliga för nationella inställningar | GetCharacterPlacement |
GCPCLASS_LATINNUMBER | Europeiska siffror | GCP_RESULTS |
GCPCLASS_LOCALNUMBER | Siffror som är lämpliga för nationella inställningar | GCP_RESULTS |
Relaterade ämnen