Elaborazione di script complessi
Per fornire una giustificazione testuale, un'applicazione può usare uno dei due metodi. Per una semplice implementazione di giustificazione multilingue, l'applicazione deve chiamare ScriptJustify. Genera la matrice dx differenziale considerando kashida, quindi la spaziatura interword e quindi la spaziatura intercharacter. Per una giustificazione più sofisticata, l'applicazione può generare una matrice delta dx aggiornata usando la propria conoscenza del linguaggio e le informazioni recuperate da ScriptShape nella matrice SCRIPT_VISATTR .
Lo spazio di giustificazione o kashida deve essere inserito dove identificato dal membro uJustification di SCRIPT_VISATTR. Quando si esegue una giustificazione tra caratteri, l'applicazione deve inserire spazio aggiuntivo solo dopo i glifi contrassegnati con SCRIPT_JUSTIFY_CHARACTER.
L'applicazione esegue il posizionamento e l'hit testing tramite ScriptXtoCP e ScriptCPtoX. Per altre informazioni, vedere Managing Caret Placement and Hit Testing.For more information, see Managing Caret Placement and Hit Testing.
Per ottenere larghezze in modo indipendente dal tipo di carattere, l'applicazione chiama ScriptGetLogicalWidths. Passando la larghezza logica a ScriptApplyLogicalWidth, un blocco di testo può essere rieseguito negli stessi limiti con perdita di qualità accettabile anche quando il tipo di carattere originale non è disponibile. Genera una matrice di larghezze del glifo (larghezze avanzate) adatta per il passaggio a ScriptTextOut. Tale registrazione e riapplicazione di informazioni avanzate sulla larghezza in modo indipendente dal tipo di carattere può essere utile in situazioni come la metafiling in un formato definito dall'applicazione.
Nota
I metafile non supportano gli indici dei glifi. Per scrivere in un metafile avanzato, l'applicazione deve usare ExtTextOut e scrivere direttamente i caratteri logici. Usando questo meccanismo, la generazione e il posizionamento del glifo non si verificano finché il testo non viene riprodotto.
Per recuperare glifi specifici utilizzati per i valori predefiniti, kashida e così via, per il tipo di carattere corrente, l'applicazione deve chiamare ScriptGetFontProperties. Per determinare quali caratteri in un'esecuzione sono supportati dal tipo di carattere selezionato, l'applicazione chiama ScriptGetCMap. I caratteri che non sono disponibili hanno il glifo predefinito nel buffer del glifo. Si noti che questo metodo ha esito negativo se un tipo di carattere esegue il rendering di un carattere usando una combinazione di glifi anziché un singolo glifo. Ad esempio, 00C9; Il rendering della LETTERA MAIUSCOLA LATINA E WITH ACUTE può essere eseguito utilizzando un glifo maiuscolo E e un glifo acuto. Per determinare il supporto del tipo di carattere per una stringa che contiene questi tipi di punti di codice, l'applicazione può chiamare ScriptShape. Per altre informazioni, vedere Uso dei motori di modellazione.
La funzione ScriptCacheGetHeight restituisce l'altezza del tipo di carattere dalla cache dei tipi di carattere. ScriptGetProperties fornisce informazioni sull'elaborazione speciale necessaria per tutti gli script, indicizzati per script. Ad esempio, include il linguaggio primario associato allo script, i dati che indicano se lo script è numerico e i dati che indicano se lo script è uno script complesso.
ScriptGetGlyphABCWidth restituisce la larghezza ABC di un glifo specificato, che potrebbe essere utile per disegnare grafici glifi. Tuttavia, non deve essere usato per la normale formattazione del testo di script complessi.
Argomenti correlati