Qual fonte o Bloco de notas usa para exibir, por exemplo, hebraico, quando afirma usar o Lucida Console, mas o Lucida Console não possui esses caracteres?

Qual fonte o Bloco de notas usa para exibir, por exemplo, hebraico, quando afirma usar o Lucida Console, mas o Lucida Console não possui esses caracteres?

Courier New tem o caractere \u05D0 letra hebraica aleph

algumas outras fontes também, como Miriam e David.

insira a descrição da imagem aqui

Posso colar isso no bloco de notas

Lucida Console não possui o personagem. O mapa de personagens mostra que Lucida Console não possui o personagem.

No entanto, o bloco de notas o exibe mesmo quando a fonte do Lucida Console está definida

insira a descrição da imagem aqui

Então, qual fonte o bloco de notas está usando?

Responder1

O Windows 7 possui uma tecnologia chamadafonte composta

que é usado para descrever links de fontes internacionais e lógica de fallback fonte

Ele permite que você tenha uma fonte virtual vinculada a muitas fontes com intervalos limitados de definições de caracteres.

A fonte composta padrão é chamadaInterface de usuário globale está localizado no arquivo
C:\Windows\Fonts\GlobalUserInterface.CompositeFont.

Você pode usar ótimoMapa Babelferramenta para brincar e entender a implementação de Unicode, fontes compostas e coisas relacionadas.

Verifique tambémSubstituição de fontesubseção deObservaçõesseção desteArtigo MSDNpara aprender algumas informações interessantes sobre como essa fonte composta é construída e quais são as regras de fallback.


Encontrar uma fonte para caractere (com base nas informações acima):

  1. Em qualquer editor/visualizador de texto simples, exiba o arquivo
    C:\Windows\Fonts\GlobalUserInterface.CompositeFont.
  2. Na tag <FontFamily.FamilyMaps>, encontre o intervalo de definição para o seu personagem.
  3. Pesquise a tag FontFamilyMapque contém seu intervalo em seu Unicodeatributo e obtenha a fonte (ou lista de fontes) fornecida para esse intervalo (está armazenada no atributo Target).
    Exemplo:no caso de personagem05D0o intervalo encontrado no arquivo é0590-05FF(Hebraico)
    e as substituições de fontes são:
    "Segoe UI, Tahoma, Arial, Arial Unicode MS, Microsoft Sans Serif, Lucida Sans Unicode"

    1. Se houvesse apenas uma fonte, você a possui. Caso contrário, vamos verificar a lista em ordem: execute o BabelMap
    2. Navegue até determinado personagem
    3. Alternar botões de opção deFonte CompostaparaFonte única
      ou alternativamente: vá ao menuFontes>Cobertura de fonte...e pressioneCalcularbotão
    4. Mude para as fontes na ordem em que aparecem na etapa3. A primeira fonte com o glifo exibido é a sua fonte.

Observação:existem 4 arquivos de fontes compostas disponíveis, mas verifiquei que o correto para o seu caso é GlobalUserInterface.CompositeFont.

Essa técnica é confiável porque, ao pesquisar as definições, você está fazendo o mesmo que o Windows.

Responder2

a resposta do miro é brilhante, só vou escrever de forma um pouco diferente

Existem quatro arquivos de fontes compostas.

Os quatro são

C:\Windows\Fonts>dir *composite* /s/b

C:\Windows\Fonts\GlobalMonospace.CompositeFont
C:\Windows\Fonts\GlobalSansSerif.CompositeFont
C:\Windows\Fonts\GlobalSerif.CompositeFont
C:\Windows\Fonts\GlobalUserInterface.CompositeFont

C:\Windows\Fonts>

Olhando para eles uma vez, vemos que, por exemplo, GlobalMonospace.CompositeFonttem 0590-06FF e as fontes substitutas listadas, apenas uma, é Courier New, que tem Aleph. Mas Miro determinou que esse não é o arquivo composto usado e que o arquivo usado éGlobalUserInterface.CompositeFont

Abra este arquivo C:\Windows\Fonts\GlobalUserInterface.CompositeFont

Aleph é \u05D0então você tem que rolar o arquivo para baixo para chegar onde estou mostrando na foto, mas essa é a seção para olhar

O arquivo de fonte composta lista uma família de fontes para atuar como fontes substitutas para vários intervalos de caracteres Unicode, incluindo 0590-06FF(que é o intervalo que inclui 05D0/aleph)

    <FontFamilyMap  
        Unicode          = "0000-052F, 0590-06FF, 0750-077F, 1D00-1FFF, 2C60-2C7F, FB00-FB0F, FB1D-FBFF" 
        Target           = "Segoe UI, Tahoma, Arial, Arial Unicode MS, Microsoft Sans Serif, Lucida Sans Unicode"
        Scale            = "1.0"/>

insira a descrição da imagem aqui

Charmap pode chegar até FFFF, o que é longe o suficiente. Charmap mostra que não está no segoeUI. Mas é em Tahoma.

insira a descrição da imagem aqui

Babelmap é interessante porque pode mostrar caracteres além de FFFF (não é necessário neste caso) e também pode mostrar quais fontes em seu sistema possuem um caractere Unicode específico. Mas para ver qual fonte é realmente usada na prática pelo bloco de notas, como fonte substituta, você precisa verificar o arquivo GlobalUserInterface.CompositeFont. Em seguida, procure no charmap ou babelmap a primeira fonte com o caractere glifo/unicode desejado.

O Babelmap tem fontes compostas, mas acho que são personalizadas, não especificamente as usadas pelo Windows. Mas seria útil usar o babelmap para pesquisar qual fonte possui um caractere unicode ou para verificar quais caracteres estão dentro de uma fonte, mesmo além do FFFF.

informação relacionada