デフォルトの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に変換するなど、さまざまなことを試しましたが、オプション--range=0x0-0x7fでASCII文字のみを変換しようとしましたが、どれも完璧に動作するようには見えませんでした。デフォルトより大きなフォントを生成しているため、デフォルトのグリフを使用できないためだと感じています。

これはフォントを変更したかった理由の1つでしたが、より小さいフォントサイズで動作するかどうかを確認しようとします。


1
とても良いBURGを試してみてください。テーマはたくさんあります
エクステンダー

ただし、OPはテーマGRUBではなくフォントを変更したいと考えています。関係ない。
WindowsEscapist

回答:


8

理論的に grub-mkfontは、複数のフォントを渡すことができます。この場合、Unifontや、より広い範囲の別のフォントへのリンクを同時に渡すことができます。生成されるGrubフォントは、両方の入力フォントのカバレッジの組み合わせになります。

注:Grubブート時フォントローダーの最近のパフォーマンスの改善は、Grubフォントファイル内のグリフが特定の昇順でなければならないことを意味しますが、残念ながら変更はgrub-mkfont同時にユーティリティに加えられませんでした!これは現在バグです:

  • バグ#729470 「grub-mkfontはgrubが使用できないフォントを出力します(フォント文字は昇順ではありません:0 <= 0)」

ところで、もし興味があるなら、このバグは、GrubブートメニューでUbuntu Font Familyの開発中のUbuntu Monoフォントの使用を調査し、あなたがちょうど当たったのとまったく同じ問題にぶつかった実験のために発見されました!


1
Ubuntu Monoフォントがgrubに読み込まれるまで休ませます-とにかくそもそも私が望んでいたことです:)どうもありがとう。
ラッセバレンティーニ

9

基本的には、範囲演算子を使用して、新しいgrubフォントに含まれる文字を制限します。範囲演算子を使用しない場合は、ターゲットフォントからエラーのあるまたは不適切なボックス要素を含むすべてのグリフを取得します。

例えば:

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

ASCII文字のみのフォントを生成します。フォントにないものはすべて、デフォルトのフォントに適切に減衰するため、ボックスと矢印はデフォルトから来ます。詳細については、このWebサイトを参照してください。

http://grub.enbug.org/gfxterm


1
それは理にかなっていますが、おそらくユニコードフォントがまったくロードされていないため、私はまだ奇妙なグリフを持っていますか?デフォルトのフォントを元に戻し、もう一度試してみます。
ラッセバレンティーニ

1
おそらく、最初にコンソールフォントをロードしてから、ttf ascii専用フォントをロードする必要があります。
マーティンオーウェンズ-doctormo-

1
複数のフォントをロードしようとしましたか?Unicodeフォント/usr/share/grub/unicode.pf2には、必要なボックス文字と矢印文字が含まれている必要があります。目的の効果が得られるまで、loadfontを使用して次々にフォントをロードできるはずです。
マーティンオーウェンズ-doctormo-

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ファイルで上記を試しましたが、この特定の問題には役立ちませんでした。しかし、同様の問題の解決策をありがとうございます:)。
ラッセバレンティーニ

3

-vフラグを指定してgrub-mkfontを実行すると、取得するグリフの数が表示されます。千を超える場合は、境界文字がそこにあるはずです。範囲を制限しても事態は悪化するだけです。DejaVuSansMonoフォントはすべての文字を正しく表示し、.pf2には3000個以上のグリフがあります。他の多くのフォントでは矢印は正しく表示されますが、境界線は表示されません。


2

ユニコードフォントを使用します。これはほぼ問題なく動作します(arialuni.ttfなど、必要に応じてすべての文字を表示します)。私の問題は文字間隔が少し大きいことです...


1

デフォルトのフォントと目的のフォントの両方をロードすることで、これを正しく表示できます。

次に、フォントを目的のフォントに設定します。

ボックスの文字が見つからない場合、ロードされる通常のフォントがデフォルトとして機能し、必要な文字が提供されます。


0

私はこのスレッドが古いことを知っていますが、今日読んでいて、まだ提供されていない別の答えを思い付きました...ここにあります:

フォントを変更した後、GRUBで奇妙な文字が表示されるのは、それらの文字が.pf2ファイルの作成に使用した.ttfファイルに存在しなかったためです。

境界線の作成に使用される文字は次のとおりです。

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

.ttfファイルでよく見られるその他の文字は、次の矢印です。

  • U + 2191
  • U + 2193

FontForge(オープンソースソフトウェア)を使用して、使用しようとしている.ttfに含まれている文字を含む.ttfからこれらの文字をコピーして貼り付けることができます。FontForgeで新しい.ttfを生成した後、grub-mkfontを使用して、すべての適切な文字を含む.pf2ファイルを作成できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.