Нет символов коробки после изменения шрифта Grub по умолчанию

13

Я смог изменить шрифт Grub по умолчанию, используя

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

и затем добавьте следующую строку в / etc / default / grub:

GRUB_FONT=/boot/grub/grubfont.pf2

И конечно

sudo update-grub

И новый шрифт действительно появился и все (не забудьте выбрать моноширинный шрифт). Но символы «коробки» (вокруг записей) никогда не отображаются правильно. Я думаю, что большинство шрифтов просто не имеют этого набора символов. Есть ли способ, которым я могу добавить эти символы? Может быть, даже скопировать их из шрифта unicode.pf2 по умолчанию? Если это на самом деле невозможно, знаете ли вы какие-нибудь шрифты с этими символами?

Обновить:

Я пробовал много разных вещей, таких как преобразование из ttf в bdf, а затем в pf2, и я пытался конвертировать только символы ascii с опцией --range=0x0-0x7f, но ни одна из них, казалось, не позволяла работать идеально. У меня такое ощущение, что это потому, что я генерирую шрифт большего размера, чем по умолчанию, и поэтому глифы по умолчанию использовать нельзя.

Я попытаюсь выяснить, смогу ли я заставить его работать с меньшим размером шрифта, хотя это было одной из причин, по которой я хотел изменить шрифт.

LasseValentini
источник
1
Попробуйте BURG, это очень приятно и имеет много тем
Extender
Но ОП хочет сменить шрифт - не тема GRUB. Ненужные.
WindowsEscapist

Ответы:

8

Теоретически grub-mkfont позволяет передавать несколько шрифтов. В этом случае вы можете одновременно передать ссылку на Unifont или другой шрифт с более широким охватом. Полученный шрифт Grub будет представлять собой комбинацию покрытия обоих входных шрифтов.

Примечание: недавнее улучшение производительности загрузчика шрифтов Grub во время загрузки означает, что глифы в файле шрифта Grub должны быть в определенном порядке возрастания, но, к сожалению, изменения не были внесены в grub-mkfontутилиту одновременно! Теперь это ошибка:

  • Ошибка # 729470 "grub-mkfont выводит шрифты, которые grub не может использовать (символы шрифта не в порядке возрастания: 0 <= 0)"

Кстати, если вам интересно, эта ошибка была обнаружена из-за экспериментов по исследованию использования шрифта Ubuntu Font Family в процессе разработки Ubuntu Mono в меню загрузки Grub и попадания в ту же проблему, о которой вы только что упоминали!

Сладен
источник
1
Я оставлю это, пока они не загрузят шрифт Ubuntu Mono в grub - это то, к чему я стремился в первую очередь :) В любом случае, большое спасибо.
LasseValentini
9

По сути, вы хотите использовать оператор диапазона, чтобы ограничить количество символов, содержащихся в вашем новом шрифте grub. Если вы не используете оператор диапазона, вы получите все глифы, включая ошибочные или неправильные элементы box, из целевого шрифта.

Например:

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

Сгенерирует шрифт только с ASCII-символами, все, что не имеет ваш шрифт, должно изящно распадаться на шрифт по умолчанию, поэтому поля и стрелки должны исходить по умолчанию. Пожалуйста, смотрите этот сайт для получения дополнительной информации:

http://grub.enbug.org/gfxterm

Мартин Оуэнс -доктормо-
источник
1
Это имело бы смысл, но у меня все еще есть странные символы, возможно, потому что шрифт Unicode вообще не загружен? Я попытаюсь установить шрифт по умолчанию обратно, и попробуйте это снова.
LasseValentini
1
Возможно, вам следует сначала загрузить консольный шрифт, а затем загрузить только шрифт ttf ascii.
Мартин Оуэнс -доктормо-
1
Вы пытались загрузить несколько шрифтов? шрифт Юникод /usr/share/grub/unicode.pf2 должен содержать нужные вам поля и символы со стрелками. Вы должны иметь возможность загружать шрифты, используя loadfont один за другим, пока не получите желаемый эффект.
Мартин Оуэнс -доктормо-
5

IIRC Я столкнулся с тем, что вы описываете при использовании всех глифов:


(источник: xrmb2.net )

Может быть, это проблема grub-mkfont, может быть, это связано со шрифтом, я не знаю. :(

Что сработало для меня:

  1. Использование gbdfedдля создания файла 'bdf' из шрифта консоли (например, '/usr/share/consolefonts/Lat15-VGA16.psf'): Файл> Импорт> Консольный шрифт, затем Файл> Сохранить как ...
  2. Преобразование только символов ASCII с помощью grub-mkfont:

    grub-mkfont --output=out.pf2 --range=0x0-0x7f out.bdf
htorque
источник
1
Кажется, что моя главная проблема в том, что я хочу использовать шрифт OpenType (ttf), а не шрифт, предназначенный для консолей. Я пробовал выше с файлом ttf, но это не помогло в этой конкретной проблеме. Большое спасибо за решение аналогичной проблемы, хотя :).
LasseValentini
3

Если вы запустите grub-mkfont с флагом -v, он покажет вам, сколько символов вы получили. Если вы получите больше тысячи, там должен быть пограничный персонаж. Ограничение диапазона только ухудшит ситуацию. Шрифт DejaVuSansMono правильно отображает все символы и содержит более 3000 символов в формате .pf2. Многие другие шрифты получают правильные стрелки, но не границу.

daithib8
источник
2

использовать шрифт Unicode ... Это работало почти нормально (например, arialuni.ttf, показывает все символы по мере необходимости) .. Моя проблема с небольшим большим интервалом между символами ... и это происходит с каждым протестированным шрифтом.

sarathkcm
источник
1

Вы можете заставить это отображаться правильно, загружая и шрифт по умолчанию и желаемый шрифт.

Затем установите шрифт на нужный шрифт.

Если символы для поля не найдены, стандартный загруженный шрифт также будет использоваться по умолчанию, и будут предоставлены необходимые символы.

mchid
источник
0

Я понимаю, что эта ветка древняя, но я читала ее сегодня и придумала еще один ответ, который еще не был предоставлен ... вот оно:

Если вы получаете нечетные символы в GRUB после изменения шрифтов, это потому, что эти символы не существуют в файле .ttf, который вы использовали для создания файла .pf2.

Символы, используемые для создания границы:

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

Другими обычно отсутствующими символами в файле .ttf являются стрелки, которые:

  • U + 2191
  • U + 2193

Вы можете использовать FontForge (программное обеспечение с открытым исходным кодом), чтобы скопировать и вставить эти символы из .ttf, который содержит символы, включенные в .ttf, который вы пытаетесь использовать, но этого не происходит. После создания нового .ttf с помощью FontForge вы можете использовать grub-mkfont для создания вашего файла .pf2, содержащего все соответствующие символы.

notorious.dds
источник