SCRIPT_PROPERTIES-Struktur (usp10.h)
Enthält Informationen zur speziellen Verarbeitung für jedes Skript.
Syntax
typedef struct {
DWORD langid : 16;
DWORD fNumeric : 1;
DWORD fComplex : 1;
DWORD fNeedsWordBreaking : 1;
DWORD fNeedsCaretInfo : 1;
DWORD bCharSet : 8;
DWORD fControl : 1;
DWORD fPrivateUseArea : 1;
DWORD fNeedsCharacterJustify : 1;
DWORD fInvalidGlyph : 1;
DWORD fInvalidLogAttr : 1;
DWORD fCDM : 1;
DWORD fAmbiguousCharSet : 1;
DWORD fClusterSizeVaries : 1;
DWORD fRejectInvalid : 1;
} SCRIPT_PROPERTIES;
Member
langid
Sprachbezeichner für die Sprache, die dem Skript zugeordnet ist. Wenn ein Skript für viele Sprachen verwendet wird, stellt dieses Element eine Standardsprache dar. Beispielsweise wird die westliche Schrift durch LANG_ENGLISH dargestellt, obwohl sie auch für Französisch, Deutsch und andere europäische Sprachen verwendet wird.
fNumeric
Wert, der angibt, ob ein Skript nur Ziffern und die anderen Zeichen enthält, die zum Schreiben von Zahlen durch die Regeln des bidirektionalen Unicode-Algorithmus verwendet werden. Beispielsweise werden Währungssymbole, das Tausendertrennzeichen und das Dezimaltrennzeichen als numerisch klassifiziert, wenn sie an oder zwischen Ziffern angrenzen. Mögliche Werte für dieses Element werden in der folgenden Tabelle definiert.
fComplex
Wert, der ein komplexes Skript für eine Sprache angibt, die eine spezielle Strukturierung oder ein spezielles Layout erfordert. Mögliche Werte werden in der folgenden Tabelle definiert.
fNeedsWordBreaking
Wert, der den Typ der Wortumbruchplatzierung für eine Sprache angibt. Mögliche Werte werden in der folgenden Tabelle definiert.
Wert | Bedeutung |
---|---|
|
Die Sprache verfügt über eine Wortumbruchplatzierung, die erfordert, dass die Anwendung ScriptBreak aufruft, und die Zeichenpositionen enthält, die durch das fWordStop-Element in SCRIPT_LOGATTR gekennzeichnet sind. |
|
Word Platzierung von Unterbrechungen wird durch Suchen nach Zeichen identifiziert, die durch das fWhiteSpace-Element in SCRIPT_LOGATTR gekennzeichnet sind, oder nach Glyphen, die durch den Wert SCRIPT_JUSTIFY_BLANK oder SCRIPT_JUSTIFY_ARABIC_BLANK für den uJustification-Member von SCRIPT_VISATTR gekennzeichnet sind. |
fNeedsCaretInfo
Wert, der angibt, ob eine Sprache, z. B. Thai oder Indisch, die Caretplatzierung auf Clustergrenzen einschränkt. Mögliche Werte werden in der folgenden Tabelle definiert. Um gültige Caretpositionen zu bestimmen, überprüft die Anwendung den fCharStop-Wert in den logischen Attributen, die von ScriptBreak abgerufen werden, oder vergleicht benachbarte Werte im pwLogClust-Array , das von ScriptShape abgerufen wurde.
Wert | Bedeutung |
---|---|
|
Die Sprache schränkt die Caretplatzierung auf Clustergrenzen ein. |
|
Die Sprache schränkt die Caretplatzierung nicht auf Clustergrenzen ein. |
bCharSet
Nominaler Zeichensatz, der dem Skript zugeordnet ist. Bei der Erstellung einer Schriftart, die für die Anzeige des Skripts geeignet ist, kann dieser Zeichensatz als Wert des lfCharSet-Elements von LOGFONT verwendet werden.
Bei einem neuen Skript, für das kein Zeichensatz definiert ist, sollte die Anwendung in der Regel bCharSet auf DEFAULT_CHARSET festlegen. Weitere Informationen finden Sie in der Beschreibung von Member fAmbiguousCharSet.
fControl
Wert, der angibt, ob im Skript nur Steuerzeichen verwendet werden. Mögliche Werte werden in der folgenden Tabelle definiert. Beachten Sie, dass jedes Steuerelementzeichen nicht in einer SCRIPT_CONTROL-Struktur endet.
Wert | Bedeutung |
---|---|
|
Legen Sie im Skript nur Steuerzeichen fest. |
|
Legen Sie im Skript nicht nur Steuerzeichen fest. |
fPrivateUseArea
Wert, der die Verwendung eines privaten Verwendungsbereichs angibt, ein spezieller Satz von Zeichen, der privat für den Unicode-Bereich U+E000 bis U+F8FF definiert ist. Mögliche Werte werden in der folgenden Tabelle definiert.
Wert | Bedeutung |
---|---|
|
Verwenden Sie einen privaten Nutzungsbereich. |
|
Verwenden Sie keinen privaten Nutzungsbereich. |
fNeedsCharacterJustify
Wert, der die Verarbeitung der Begründung für das Skript angibt, indem alle Leerzeichen zwischen Buchstaben erhöht werden, nicht nur die Leerzeichen zwischen Wörtern. Mögliche Werte werden in der folgenden Tabelle definiert. Beim Ausführen einer zeichenübergreifenden Begründung fügt Uniscribe zusätzlichen Abstand nur nach Glyphen ein, die mit dem SCRIPT_JUSTIFY_CHARACTER-Wert für den uJustification-Member von SCRIPT_VISATTR gekennzeichnet sind.
Wert | Bedeutung |
---|---|
|
Verwenden Sie die Zeichenausrichtung. |
|
Verwenden Sie keine Zeichenausrichtung. |
fInvalidGlyph
Wert, der angibt, ob ScriptShape eine ungültige Glyphe für ein Skript generiert, um ungültige Sequenzen darzustellen. Mögliche Werte werden in der folgenden Tabelle definiert. Die Anwendung kann den Glyphenindex der ungültigen Glyphe für eine bestimmte Schriftart abrufen, indem sie ScriptGetFontProperties aufruft.
Wert | Bedeutung |
---|---|
|
Generieren Sie eine ungültige Glyphe, um ungültige Sequenzen darzustellen. |
|
Generieren Sie keine ungültige Glyphe, um ungültige Sequenzen darzustellen. |
fInvalidLogAttr
Wert, der angibt, ob ScriptBreak ungültige Kombinationen für ein Skript markiert, indem fInvalid im Puffer für logische Attribute festgelegt wird. Mögliche Werte werden in der folgenden Tabelle definiert.
Wert | Bedeutung |
---|---|
|
Markieren Sie ungültige Kombinationen für das Skript. |
|
Markieren Sie keine ungültigen Kombinationen für das Skript. |
fCDM
Wert, der angibt, ob ein Skript ein Element enthält, das von ScriptItemize analysiert wurde, einschließlich Kombination diakritischer Markierungen (U+0300 bis U+36F). Mögliche Werte werden in der folgenden Tabelle definiert.
fAmbiguousCharSet
Wert, der angibt, ob ein Skript Zeichen enthält, die von mehr als einem Zeichensatz unterstützt werden. Mögliche Werte werden in der folgenden Tabelle definiert.
Wert | Bedeutung |
---|---|
|
Das Skript enthält Zeichen, die von mehr als einem Zeichensatz unterstützt werden. In diesem Fall sollte das bCharSet-Element dieser Struktur ignoriert werden, und das lfCharSet-Element von LOGFONT sollte auf DEFAULT_CHARSET festgelegt werden. Weitere Informationen finden Sie im Abschnitt Hinweise. |
|
Das Skript enthält keine Zeichen, die von mehr als einem Zeichensatz unterstützt werden. |
fClusterSizeVaries
Wert, der angibt, ob ein Skript, z. B. Arabisch, eine kontextbezogene Strukturierung verwenden kann, die dazu führt, dass eine Zeichenfolge beim Entfernen von Zeichen vergrößert wird. Mögliche Werte werden in der folgenden Tabelle definiert.
Wert | Bedeutung |
---|---|
|
Verwenden Sie eine variable Clustergröße für die kontextbezogene Strukturierung. |
|
Verwenden Sie keine variable Clustergröße für die kontextbezogene Strukturierung. |
fRejectInvalid
Wert, der angibt, ob ein Skript, z. B. Thai, ungültige Sequenzen ablehnen soll, die üblicherweise dazu führen, dass ein Editor-Programm, z. B. Editor, piept und Tastatureingaben ignoriert. Mögliche Werte werden in der folgenden Tabelle definiert.
Wert | Bedeutung |
---|---|
|
Lehnen Sie ungültige Sequenzen ab. |
|
Weisen Sie keine ungültigen Sequenzen zurück. |
Hinweise
Diese Struktur wird von der ScriptGetProperties-Funktion gefüllt.
Viele Uniscribe-Skripts entsprechen nicht direkt 8-Bit-Zeichensätzen. Wenn einige Der Zeichen in einem Skript von mehr als einem Zeichensatz unterstützt werden, wird das fAmbiguousCharSet-Element festgelegt. Die Anwendung sollte weitere Verarbeitungsschritte durchführen, um den Zeichensatz zu bestimmen, der beim Anfordern einer für die Ausführung geeigneten Schriftart verwendet werden soll. Es kann z. B. feststellen, dass die Ausführung aus mehreren Sprachen besteht, und die Ausführung aufteilen, sodass für jede Sprache eine andere Schriftart verwendet wird.
Die Anwendung verwendet den folgenden Code während der Initialisierung, um einen Zeiger auf das SCRIPT_PROPERTIES-Array abzurufen.
const SCRIPT_PROPERTIES **ppScriptProperties; // Array of pointers
// to properties
int iMaxScript;
HRESULT hr;
hr = ScriptGetProperties(&ppScriptProperties, &iMaxScript);
Anschließend kann die Anwendung die Eigenschaften des Skripts eines Elements überprüfen, wie im nächsten Beispiel gezeigt.
hr = ScriptItemize(pwcInChars, cInChars, cMaxItems, psControl, psState, pItems, pcItems);
//...
if (ppScriptProperties[pItems[iItem].a.eScript]->fNeedsCaretInfo)
{
// Use ScriptBreak to restrict the caret from entering clusters (for example).
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Kopfzeile | usp10.h |