Tudo bem, acredito que recebo a estrutura dessa string binária. Está no formato de LOGFONT , que é dividido em 14 partes, incluindo os primeiros 20 bytes como 4 inteiros longos em little endians, os próximos 8 bytes como bytes e uma string.
No meu exemplo, F4 FF FF FF
significa que a altura é FFFFFFF4
em hexadecimal (long int), que é -11
em decimal. Convertê-lo em pixels seria 8.
O próximo 00 00 00 00
significa a largura. Definir como 0 seria calculado automaticamente.
Os próximos 8 bytes correspondem a lfEscapement
e lfOrientation
, o que realmente não importa.
Os próximos 4 bytes 90 01 00 00
é 190
(400 em decimal) é o peso. 400 correspondem a FW_NORMAL
.
Os próximos 3 bytes são lfItalic
, lfUnderline
e lfStrikeOut
. Bastante auto-explicativo.
O próximo byte seria lfCharSet
. Ele indica o conjunto de caracteres a ser usado de acordo com esta enumeração . 0x01
seria DEFAULT_CHARSET
.
Os próximos 4 bytes são para outra coisa: lfOutPrecision
, lfClipPrecision
, lfQuality
, lfPitchAndFamily
.
Depois vem a parte principal. Para os próximos 64 bytes, é uma string do nome da fonte que você deseja usar em 32 TCHARs. Para caracteres ASCII, simplesmente separe cada caractere por um 00
, já que o TCHAR é apenas Unicode de 16 bits.
Em conclusão, para alterar a fonte de cada parte da interface do usuário do sistema, modifique a entrada binária de acordo com a estrutura acima.
PS: A alteração do substituto de MS Shell Dlg
(2) não funcionaria para todos, já que nem todos os idiomas do Windows usam isso como a fonte da interface do usuário. Outro site mencionado em este comentário que substitui o nome da fonte Segoe UI
diretamente para a sua fonte desejada também não vai funcionar, e como um lado Efeito você também não será capaz de usar a fonte Segoe UI
.
A modificação de WindowMetrics
pode ser a única maneira correta de alterar a fonte do sistema.