Pergunta

Suponha que você tenha uma string com o texto em dois ou mais scripts. Quando você usa uma função GDI como TextOut, (versões modernas de) Windows irá fazer "font-linking". Ou seja, GDI irá desenhar o que pode com a sua fonte selecionada e tirar o resto em uma fonte apropriada que escolhe automagicamente. Por exemplo, se parte de seu texto está em Inglês (usando o alfabeto romano), e parte dele é chinês (usando caracteres CJK), e você tem Arial selecionado, a parte Inglês vai ser desenhado em Arial, ea parte chinesa ser desenhado em outra fonte que tenha os glifos CJK.

A minha pergunta é, existe uma maneira de determinar quais fontes TextOut vai escolher (ou tenha escolhido) para a ligação da fonte?

Eu tenho que desenhar algum texto com o baixo nível Uniscribe API, que não faz automática font-ligando. Eu tenho implementado minha própria font-linking, mas às vezes o meu algoritmo escolhe uma fonte diferente do que TextOut faz para o mesmo texto. Eu estou tentando entender o algoritmo do Windows melhor, mas eu não sou muito bom em identificar fontes à vista (especialmente em scripts desconhecidos).

Foi útil?

Solução

A fonte é selecionada por uma entrada de registro. É bem descrito no este artigo Citando a parte relevante:.

Se vinculação fonte está ativado no seu dispositivo, você pode examinar o Registro enumerando as subchaves da chave de registro no HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ FontLink \ SystemLink para determinar os mapeamentos de ligado fontes para fontes de base. Você pode adicionar links usando Regedit para criar adicional subchaves.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top