Немає символів поля після зміни шрифту 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, але жодна з них, здавалося, не змусила його працювати ідеально. У мене таке відчуття, що це тому, що я генерую шрифт більшого розміру, ніж типовий, і тому гліфи за замовчуванням не можна використовувати.

Я спробую побачити, чи зможу я змусити його працювати з меншим розміром шрифту, хоча це було однією з причин, що я хотів змінити шрифт.


1
Спробуйте BURG дуже приємно і має багато тем
Extender

Але ОП хоче змінити шрифт - не тему GRUB. Нерелевантні.
WindowsEscapist

Відповіді:


8

Теоретично grub-mkfont дозволяє передавати кілька шрифтів. У цьому випадку, якщо ви можете одночасно передати посилання на Unifont або інший шрифт із ширшим покриттям. Вироблений шрифт Grub буде поєднанням покриття обох вхідних шрифтів.

Примітка: недавнє поліпшення продуктивності завантажувача шрифтів під час завантаження Grub означає, що гліфи у файлі шрифту Grub повинні бути у певному порядку зростання, але, на жаль, зміни не grub-mkfontвідбулися одночасно до утиліти! Зараз це помилка:

  • Помилка №729470 "grub-mkfont видає шрифти, які grub не може використовувати (символи шрифту не у порядку зростання: 0 <= 0)"

BTW, якщо вас цікавить, ця помилка була виявлена ​​через експерименти з дослідженням використання шрифта Ubuntu Mono в розробці шрифту Ubuntu Mono у завантажувальних меню Grub і потрапляння точно тієї самої проблеми, яку ви тільки що потрапили!


1
Я дам йому відпочити, поки вони не отримають шрифт Ubuntu Mono, завантажений у груб, - це я все-таки пробував у першу чергу :) Дякую.
LasseValentini

9

В основному, вам потрібно скористатися оператором діапазону, щоб обмежити символи, які містить ваш новий шрифт grub. Якщо ви не використовуєте оператора діапазону, ви збираєтеся отримати цілі шрифти, включаючи помилкові або неправильні елементи вікна з вашого цільового шрифту.

Наприклад:

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
Ви спробували завантажити кілька шрифтів? шрифт unicode /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

1
Здається, що моя основна проблема полягає в тому, що я хочу використовувати шрифт OpenType (ttf), а не шрифт, призначений для консолей. Я спробував сказане вище з файлом ttf, але це не допомогло в цій конкретній проблемі. Дуже дякую за рішення подібної проблеми, хоча :).
LasseValentini

3

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


2

використовуйте шрифт unicode .. Це спрацювало майже чудово (наприклад, arialuni.ttf, показує всі необхідні символи) .. Моя проблема полягає в трохи більшому проміжку символів ... і це відбувається з кожним тестованим шрифтом.


1

Це можна правильно відобразити, завантаживши як шрифт за замовчуванням, так і потрібний шрифт.

Потім встановіть шрифт на потрібний шрифт.

Якщо символи в полі не знайдені, звичайний шрифт, який також завантажується, буде діяти за замовчуванням, і потрібні символи будуть надані.


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-файлу, який містить усі відповідні символи.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.