Dela via


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

 

Om nationellt språkstöd

GetLocaleInfo

GetLocaleInfoEx