Condividi tramite


Uso del fallback dei tipi di carattere

Nota

In questo argomento tutte le osservazioni su ScriptShape si applicano allo stesso modo a ScriptShapeOpenType.

 

L'applicazione deve usare il fallback del tipo di carattere durante la visualizzazione del testo se alcuni caratteri in una stringa non sono supportati nel tipo di carattere o se l'applicazione usa uno script complesso non supportato dal tipo di carattere. Il requisito per il fallback del tipo di carattere viene rilevato durante il processo di layout per il testo, quando l'applicazione chiama la funzione ScriptShape . Per informazioni sulla visualizzazione del testo, vedere Visualizzazione di testo con Uniscribe.

Determinare la necessità di fallback del tipo di carattere per i caratteri non supportati

Se alcuni caratteri di una stringa non sono supportati in un tipo di carattere richiesto, una chiamata dell'applicazione a ScriptShape ha esito positivo. Tuttavia, l'applicazione deve analizzare il buffer di output del glifo per verificare la presenza di glifi mancanti. L'indice del glifo mancante può essere determinato per un tipo di carattere specifico chiamando ScriptGetFontProperties. Se un glifo specifico non è disponibile, l'applicazione deve eseguire il fallback a un tipo di carattere diverso per un glifo o eseguire il rendering di un simbolo grafico che indica che non è disponibile alcun glifo.

Determinare la necessità di fallback dei tipi di carattere per script complessi non supportati

Il tipo di carattere preferito da un'applicazione per la visualizzazione potrebbe non supportare uno script complesso richiesto dal testo. In questo caso, la chiamata dell'applicazione a ScriptShape ha esito negativo e il codice di errore E_SCRIPT_NOT_IN_FONT.

Assegnare un tipo di carattere di fallback

Dopo aver determinato che è necessario il fallback del tipo di carattere, l'applicazione deve assegnare un tipo di carattere di fallback. L'applicazione può provare le tecniche seguenti:

  • Chiamare ScriptShape per ogni tipo di carattere in un elenco di tipi di carattere fino a quando una chiamata non restituisce un risultato accettabile.
  • Chiamare ScriptShape con ogni tipo di carattere in un elenco fino a quando non sarà possibile determinare che nessun tipo di carattere avrà esito positivo. Se il codice di errore è sempre E_SCRIPT_NOT_IN_FONT, uno script complesso non è supportato dai tipi di carattere. Eseguire il rendering di un simbolo grafico che indica che non è disponibile alcun glifo oppure specificare nuovamente lo script come non definito (nessuna elaborazione script) e riavviarlo. Per impostare lo script come non definito, impostare il membro eScript della struttura SCRIPT_ANALYSIS su SCRIPT_UNDEFINED.
  • Chiamare ScriptShape con ogni tipo di carattere in un elenco fino a quando non sarà possibile determinare che nessun tipo di carattere avrà esito positivo. Se il codice di errore indica che alcuni caratteri vengono mappati a glifi mancanti, suddividere la stringa in intervalli più piccoli. È possibile assegnare tipi di carattere diversi a intervalli secondari in modo che sia possibile eseguire il rendering di più caratteri.

Generare informazioni sul glifo

Dopo che l'applicazione ha assegnato un tipo di carattere che ha esito positivo nelle chiamate a ScriptShape, può effettuare chiamate a ScriptPlace per generare informazioni di avanzamento del glifo e offset bidimensionale dall'output di ScriptShape. Il tipo di carattere dovrebbe avere esito positivo in queste chiamate. Un errore del tipo di carattere in una chiamata a ScriptPlace dopo l'esito positivo in una chiamata a ScriptShape indica un tipo di carattere interrotto.

Uso di Uniscribe