Sem caracteres de caixa após alterar a fonte padrão do Grub

13

Consegui alterar a fonte padrão do Grub, usando

grub-mkfont -s 16 -o /boot/grub/grubfont.pf2 font.tty

e adicionando a seguinte linha ao / etc / default / grub:

GRUB_FONT=/boot/grub/grubfont.pf2

E claro

sudo update-grub

E a nova fonte apareceu e tudo mais (lembre-se de escolher uma fonte monoespaçada). Mas , os caracteres "caixa" (ao redor das entradas) nunca são exibidos corretamente. Eu acho que a maioria das fontes simplesmente não tem esse conjunto de caracteres. Existe alguma maneira de adicionar esses caracteres? Talvez até copie-os da fonte unicode.pf2 padrão? Se isso não for realmente possível, você conhece alguma fonte que tenha esses caracteres?

Atualizar:

Eu tentei muitas coisas diferentes, como converter de ttf para bdf e depois para pf2, e tentei converter apenas os caracteres ascii com a opção --range=0x0-0x7f, mas nenhum deles parecia fazê-lo funcionar perfeitamente. Sinto que é porque estou gerando uma fonte maior que a padrão e, portanto, os glifos padrão não podem ser usados.

Vou tentar ver se consigo fazê-lo funcionar com um tamanho de fonte menor, embora esse fosse um dos motivos pelos quais desejei alterar a fonte.

LasseValentini
fonte
1
Tente BURG é muito agradável e tem um monte de temas
Extender
Mas o OP quer mudar a fonte - não o tema GRUB. Irrelevante.
usar o seguinte comando

Respostas:

8

Em teoria, grub-mkfont permite a passagem de várias fontes. Nesse caso, se você pode passar um link para a Unifont ou outra fonte com cobertura mais ampla ao mesmo tempo. A fonte Grub produzida será uma combinação da cobertura das duas fontes de entrada.

Nota: uma recente melhoria no desempenho do carregador de fontes no momento da inicialização do Grub significa que os glifos em um arquivo de fonte do Grub devem estar em uma ordem crescente específica, mas infelizmente a alteração não foi feita no grub-mkfontutilitário ao mesmo tempo! Agora isso é um bug:

  • Bug # 729470 "grub-mkfont gera fontes que o grub não pode usar (caracteres de fonte não em ordem crescente: 0 <= 0)"

BTW, se você estiver interessado, esse bug foi descoberto por causa de experimentos com a investigação do uso da fonte Ubuntu Mono do Ubuntu Font Family em desenvolvimento nos menus de inicialização do Grub e com o problema exatamente o que você acabou de encontrar!

sladen
fonte
1
Deixarei descansar até que a fonte Ubuntu Mono seja carregada no grub - foi o que eu estava procurando em primeiro lugar :) De qualquer forma, muito obrigado.
LasseValentini
9

Basicamente, o que você deseja fazer é usar o operador range para limitar os caracteres que sua nova fonte grub contém. Se você não usar o operador de intervalo, obterá todos os glifos, incluindo os elementos de caixa incorretos ou incorretos da fonte de destino.

Por exemplo:

grub-mkfont -s 16 --range=0x0-0x7f -o /boot/grub/grubfont.pf2 font.tty

Irá gerar uma fonte com apenas caracteres ASCII, qualquer coisa que sua fonte não possua deve se deteriorar normalmente com a fonte padrão, de modo que caixas e setas venham do padrão. Consulte este site para obter mais informações:

http://grub.enbug.org/gfxterm

Martin Owens -doctormo-
fonte
1
Isso faria sentido, mas ainda estou tendo os glifos estranhos, talvez porque a fonte unicode não esteja carregada? Vou tentar definir a fonte padrão de volta e tentar novamente.
LasseValentini 11/11
1
Talvez você deva carregar uma fonte do console primeiro e, em seguida, carregar sua fonte apenas ttf ascii.
Martin Owens -doctormo-
1
Você já tentou carregar várias fontes? a fonte unicode /usr/share/grub/unicode.pf2 deve conter os caracteres de caixa e seta necessários. Você deve conseguir carregar as fontes usando o loadfont um após o outro até obter o efeito desejado.
Martin Owens -doctormo-
5

IIRC Encontrei o que você descreve ao usar todos os glifos:


(fonte: xrmb2.net )

Talvez seja um problema grub-mkfont, talvez tenha a ver com a fonte, eu não sei. :(

O que funcionou para mim:

  1. Usando gbdfedpara gerar o arquivo 'bdf' a partir de uma fonte do console (por exemplo, '/usr/share/consolefonts/Lat15-VGA16.psf'): Arquivo> Importar> Fonte do Console e, em seguida, Arquivo> Salvar como ...
  2. Convertendo apenas os caracteres ASCII com grub-mkfont:

    grub-mkfont --output=out.pf2 --range=0x0-0x7f out.bdf
htorque
fonte
1
Parece que meu principal problema é que eu quero usar uma fonte OpenType (ttf), e não uma fonte projetada para consoles. Eu tentei o acima com um arquivo ttf, mas não ajudou nesse problema em particular. Muito obrigado por uma solução para um problema semelhante embora :).
LasseValentini 7/11
3

Se você executar o grub-mkfont com o sinalizador -v, ele mostrará quantos glifos você obtém. Se você receber mais de mil, o caractere da borda deve estar lá. Limitar o alcance apenas tornará as coisas piores. A fonte DejaVuSansMono exibe todos os caracteres corretamente e possui mais de 3000 glifos no .pf2. Muitas outras fontes acertam as setas, mas não a borda.

daithib8
fonte
2

use uma fonte unicode .. Isso funcionou quase perfeitamente (como arialuni.ttf, mostra todos os caracteres conforme necessário) .. Meu problema é com o espaçamento de caracteres um pouco maior ... e isso acontece com todas as fontes que testei.

sarathkcm
fonte
1

Você pode obter isso para exibir corretamente ao carregar tanto a fonte padrão e a fonte desejada.

Em seguida, defina a fonte para a fonte desejada.

Quando os caracteres da caixa não forem encontrados, a fonte regular que também é carregada atuará como padrão e os caracteres necessários serão fornecidos.

mchid
fonte
0

Sei que esse tópico é antigo, mas eu estava lendo hoje e encontrei outra resposta ainda não fornecida ... então aqui está:

Se você estiver obtendo caracteres estranhos no GRUB após alterar as fontes, é porque esses caracteres não existiam no arquivo .ttf que você usou para criar o arquivo .pf2.

Os caracteres usados ​​para criar a borda são:

  • U + 2501
  • U + 2503
  • U + 250F
  • U + 2513
  • U + 2517
  • U + 251B

Os outros caracteres geralmente ausentes de um arquivo .ttf são as setas que são:

  • U + 2191
  • U + 2193

Você pode usar o FontForge (software de código aberto) para copiar e colar esses caracteres de um .ttf que possui os caracteres incluídos no .ttf que você está tentando usar e que não possui. Após gerar um novo .ttf com o FontForge, você pode usar o grub-mkfont para criar o arquivo .pf2 que possui todos os caracteres apropriados.

notorious.dds
fonte