トップ 最新

かってきままな日々

2023-09-03 (Su) [長年日記]

_ GRUB2 デバッグ

端末でも antialiased font を使えるようにした。

それはともかく、g とか j とかの baseline より下が消える問題があって、 デバッグした。

各 glyph に height があって、

+.........
+.........
+.........
+.........
+.........
+.........
+.........
+.........
+.........
+.........
+.........
+.........
+__###_#..  ^
+_#___##..  |
+##____#..  |
+#_____#..  |
+#_____#..  |
+#_____#..  |
+##____#..  | height
+_##__##..  |
+__###_#++  |
+______#..  |
+______#..  |
+#____##..  |
+_#####_..  v
+.........
+.........
+.........
+.........
+.........
+.........
+.........
+.........
+.........
+.........
+.........
+.........
+##____##.  ^
+##___###.  |
+###__#_#.  |
+#_#__###.  |
+#_#__###.  |
+#_#_#_##.  | height
+#_###_##.  |
+#__##_##.  |
+#__##_##.  |
+#_____##.  |
+#_____##.  |
+#_____##+  v
+.........
+.........
+.........
+.........
+.........
+.........
+.........

glyph の height は↑こういうの。 font の max_height は、これらのうち最大のもの。

ascent/descent も glyph ごとにもあって、font 単位でもある。

で、描画時には font の max_height 分だけ確保して、 最上部より font の ascent だけ下のところを baseline と指定して文字を描画してる。 font の ascent と font の max_height はほとんど同じくらいの値になってるので、 baseline より下は描画されない。

↓具体的な値。Max height が 23 で Font ascent が 21。

WARNING: unsupported font feature parameters: 43c
Font name: Noto Sans Mono Regular 16
Max width: 29
Max height: 23
Font ascent: 21
Font descent: 7
Number of glyph: 3490

というわけで、font の ascent + descent 分だけ高さが必要になるので、 max_height をこれで上書きするようにした。

_ GRUB2 端末文字色を変える方法

set color_normal=red/black

こんな感じに設定できるらしい。文字色/背景色。

私の改造版でも問題なく色が付いた。 良かった〜〜 (なんでちゃんと付いてるのか理解できてない)