Brak znaków w polu po zmianie domyślnej czcionki Grub


13

Byłem w stanie zmienić domyślną czcionkę Grub, używając

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

a następnie dodając następujący wiersz do / etc / default / grub:

GRUB_FONT=/boot/grub/grubfont.pf2

I oczywiście

sudo update-grub

Pojawiła się nowa czcionka i wszystko (pamiętaj, aby wybrać czcionkę o stałej szerokości). Ale znaki „pola” (wokół wpisów) nigdy nie są wyświetlane poprawnie. Myślę, że większość czcionek po prostu nie ma tego zestawu znaków. Czy jest jakiś sposób na dodanie tych znaków? Może nawet skopiujesz je z domyślnej czcionki unicode.pf2? Jeśli nie jest to naprawdę możliwe, czy znasz jakieś czcionki, które mają te znaki?

Aktualizacja:

Próbowałem wielu różnych rzeczy, takich jak konwersja z ttf na bdf, a następnie do pf2, i próbowałem konwertować tylko znaki ascii z opcją --range=0x0-0x7f, ale żadna z nich nie sprawiała, że ​​działał idealnie. Mam wrażenie, że dzieje się tak, ponieważ generuję czcionkę większą niż domyślna, dlatego domyślnych glifów nie można używać.

Spróbuję sprawdzić, czy uda mi się sprawić, by czcionka działała z mniejszym rozmiarem czcionki, chociaż był to jeden z powodów, dla których chciałem zmienić czcionkę.


1
Wypróbuj BURG, który jest bardzo ładny i ma wiele motywów
Extender

Ale OP chce zmienić czcionkę - nie GRUB motywu. Nieistotny.
WindowsEscapist

Odpowiedzi:


8

Teoretycznie grub-mkfont pozwala na przekazywanie wielu czcionek. W takim przypadku, jeśli możesz przekazać link do Unifont lub innej czcionki o szerszym zasięgu w tym samym czasie. Wytworzona czcionka Grub będzie kombinacją pokrycia obu czcionek wejściowych.

Uwaga: niedawna poprawa wydajności programu ładującego czcionki Grub podczas uruchamiania oznacza, że ​​glify w pliku czcionek Grub muszą być w określonej kolejności rosnącej, ale niestety zmiana nie została wprowadzona w grub-mkfontnarzędziu w tym samym czasie! To jest teraz błąd:

  • Błąd # 729470 „grub-mkfont wyświetla czcionki, których grub nie może używać (znaki czcionek nie są w porządku rosnącym: 0 <= 0)”

BTW, jeśli jesteś zainteresowany, ten błąd został odkryty z powodu eksperymentów z badaniem wykorzystania czcionek Ubuntu Mono w fazie rozwoju w menu rozruchowym Grub i napotkaniem dokładnie tego samego problemu, który właśnie trafiłeś!


1
Pozwolę mu odpocząć, dopóki nie załadują czcionki Ubuntu Mono do gruba - i tak przede wszystkim tego chciałem :) Dziękuję bardzo.
LasseValentini

9

Zasadniczo chcesz użyć operatora zakresu, aby ograniczyć liczbę znaków zawartych w nowej czcionce grub. Jeśli nie użyjesz operatora zakresu, otrzymasz wszystkie glify, w tym błędne lub niepoprawne elementy ramki z docelowej czcionki.

Na przykład:

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

Wygeneruje czcionkę zawierającą tylko znaki ASCII, wszystko, czego nie ma, powinno z wdziękiem rozpaść się na czcionkę domyślną, więc pola i strzałki powinny pochodzić z domyślnej. Więcej informacji można znaleźć na tej stronie:

http://grub.enbug.org/gfxterm


1
To miałoby sens, ale wciąż mam dziwne glify, może dlatego, że czcionka Unicode nie jest w ogóle ładowana? Spróbuję przywrócić domyślną czcionkę i spróbuj ponownie.
LasseValentini,

1
Być może powinieneś najpierw załadować czcionkę konsoli, a następnie załadować tylko czcionkę ttf ascii.
Martin Owens -doctormo-

1
Czy próbowałeś załadować wiele czcionek? czcionka Unicode /usr/share/grub/unicode.pf2 powinna zawierać potrzebne pola i strzałki. Powinieneś być w stanie załadować czcionki za pomocą loadfont jedna po drugiej, aż uzyskasz pożądany efekt.
Martin Owens -doctormo-

5

IIRC Wpadłem na to, co opisujesz, używając wszystkich glifów:


(źródło: xrmb2.net )

Może to problem grub-mkfont, może ma to związek z czcionką, nie wiem. :(

Co dla mnie zadziałało:

  1. Używanie gbdfeddo generowania pliku „bdf” z czcionki konsoli (np. „/Usr/share/consolefonts/Lat15-VGA16.psf”): Plik> Importuj> Czcionka konsoli, a następnie Plik> Zapisz jako ...
  2. Konwertowanie tylko znaków ASCII za pomocą grub-mkfont:

    grub-mkfont --output=out.pf2 --range=0x0-0x7f out.bdf

1
Wydaje się, że moim głównym problemem jest to, że chcę użyć czcionki OpenType (ttf), a nie czcionki zaprojektowanej dla konsol. Próbowałem powyższego z plikiem ttf, ale to nie pomogło w tym konkretnym problemie. Wielkie dzięki za rozwiązanie podobnego problemu :).
LasseValentini,

3

Jeśli uruchomisz grub-mkfont z flagą -v , pokaże ci ile masz glifów. Jeśli dostaniesz więcej niż tysiąc, powinna tam być postać graniczna. Ograniczenie zasięgu tylko pogorszy sytuację. Czcionka DejaVuSansMono wyświetla poprawnie wszystkie znaki i ma ponad 3000 glifów w .pf2. Wiele innych czcionek ma odpowiednie strzałki, ale nie obramowanie.


2

użyj czcionki Unicode. To działało prawie dobrze (takie jak arialuni.ttf, pokazuje wszystkie znaki zgodnie z wymaganiami) .. Mój problem dotyczy nieco większych odstępów między znakami ... i tak się dzieje z każdą testowaną czcionką.


1

Aby uzyskać prawidłowe wyświetlanie, można załadować zarówno czcionkę domyślną, jak i żądaną.

Następnie ustaw czcionkę na żądaną.

Gdy znaki dla skrzynki nie zostaną znalezione, załadowana również standardowa czcionka będzie działać domyślnie i zostaną dostarczone wymagane znaki.


0

Zdaję sobie sprawę, że ten wątek jest starożytny, ale czytałem go dzisiaj i wpadłem na inną odpowiedź, której jeszcze nie podano ... więc oto:

Jeśli w GRUB-ie pojawiają się nieparzyste znaki po zmianie czcionek, to dlatego, że te znaki nie istniały w pliku .ttf, którego użyto do utworzenia pliku .pf2.

Znaki użyte do utworzenia ramki to:

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

Innymi często brakującymi znakami w pliku .ttf są strzałki, które są:

  • U + 2191
  • U + 2193

Możesz użyć FontForge (oprogramowanie open source), aby skopiować i wkleić te znaki z pliku .ttf, który zawiera znaki zawarte w pliku .ttf, którego próbujesz użyć, a który nie. Po wygenerowaniu nowego pliku .ttf za pomocą FontForge możesz użyć grub-mkfont, aby utworzyć plik .pf2 zawierający wszystkie odpowiednie znaki.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.