Supponi di avere una stringa con testo in due o più script. Quando si utilizza una funzione GDI come TextOut
, (versioni moderne di) Windows eseguirà "collegamento font". Cioè, GDI disegnerà ciò che può con il font selezionato e trarrà il resto in un font appropriato che sceglie automaticamente. Ad esempio, se parte del testo è in inglese (utilizzando l'alfabeto romano), e parte di esso è cinese (utilizzando caratteri CJK) e hai selezionato Arial, la parte inglese verrà disegnata in Arial e la porzione cinese sarà essere disegnato in un altro font con glifi CJK.È possibile determinare i caratteri che Windows sceglie per il collegamento dei caratteri?
La mia domanda è, c'è un modo per determinare quali font TextOut
sceglieranno (o hanno scelto) per il collegamento dei font?
Devo disegnare del testo con l'API Uniscribe di basso livello, che non esegue il collegamento automatico dei font. Ho implementato il mio font-linking, ma a volte il mio algoritmo sceglie un font diverso da TextOut
per lo stesso testo. Sto cercando di capire meglio l'algoritmo di Windows, ma non sono molto bravo nell'identificare i caratteri a vista (specialmente negli script non familiari).
Grazie, questa è una risorsa eccellente. Ma ho letto in un altro blog che quelle chiavi del Registro di sistema sono lì solo per compatibilità con le versioni precedenti e che in realtà non guidano più il collegamento dei font. Ad esempio, sulla mia macchina TextOut eseguirà il collegamento dei font per i caratteri di base che non si trovano in quella parte del registro. E non è nemmeno un fallback di font, poiché i font che sono selezionati per gli altri script sono diversi a seconda del font di base. –
Verificare IMLangFontLink: http://msdn.microsoft.com/en-us/library/aa767872%28v=VS.85%29.aspx –
Ho utilizzato IMLangFontLink2 in una precedente iterazione, ma ha causato problemi quando ho mescolato gli script LTR con gli script RTL. Penso che sia una soluzione piuttosto vecchia e probabilmente rimane per compatibilità con le versioni precedenti. –