É possível determinar as fontes do Windows escolhe para font-linking?
-
19-09-2019 - |
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).
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.