ไม่มีอักขระกล่องหลังจากเปลี่ยนแบบอักษร 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

แต่ OP ต้องการเปลี่ยนแบบอักษร - ไม่ใช่ GRUB ของธีม ที่ไม่เกี่ยวข้อง
WindowsEscapist

คำตอบ:


8

ในทางทฤษฎี grub-mkfontอนุญาตให้ส่งผ่านแบบอักษรหลายแบบได้ ในกรณีนี้หากคุณสามารถส่งลิงก์ไปยังUnifontหรือฟอนต์อื่นที่มีพื้นที่ครอบคลุมมากกว่าในเวลาเดียวกัน แบบอักษร Grub ที่ผลิตจะเป็นการรวมกันของความครอบคลุมของทั้งแบบอักษรอินพุต

หมายเหตุ: การปรับปรุงประสิทธิภาพล่าสุดของตัวโหลดฟอนต์เวลาบูตของ Grub หมายความว่า glyphs ในไฟล์ฟอนต์ Grub ต้องอยู่ในลำดับจากน้อยไปหามาก แต่น่าเสียดายที่การเปลี่ยนแปลงไม่ได้เกิดขึ้นกับgrub-mkfontยูทิลิตี้ในเวลาเดียวกัน! นี่เป็นข้อบกพร่องแล้ว:

  • Bug # 729470 "grub-mkfont แสดงผลฟอนต์ที่ grub ไม่สามารถใช้ได้ (ตัวอักษรไม่เรียงตามลำดับ: 0 <= 0)"

BTW ถ้าคุณสนใจข้อผิดพลาดนี้ถูกค้นพบเนื่องจากการทดลองกับการตรวจสอบการใช้แบบอักษร Ubuntu FamilyในการพัฒนาตัวอักษรUbuntu Monoในเมนูการบูต Grub และตีปัญหาเดียวกันกับที่คุณเพิ่งตี!


1
ฉันจะให้มันพักจนกว่าพวกเขาจะได้รับแบบอักษร Ubuntu Mono ที่โหลดลงในด้วง - นั่นคือสิ่งที่ฉันเป็นหลังจากนั้นในตอนแรกต่อไป :) ขอบคุณมาก
LasseValentini

9

โดยทั่วไปสิ่งที่คุณต้องการทำคือใช้ตัวดำเนินการช่วงเพื่อ จำกัด อักขระที่แบบอักษรด้วงใหม่ของคุณมี หากคุณไม่ได้ใช้ตัวดำเนินการช่วงคุณจะได้รับร่ายมนตร์ทั้งหมดรวมถึงองค์ประกอบของกล่องที่ผิดพลาดหรือไม่ถูกต้องจากแบบอักษรเป้าหมายของคุณ

ตัวอย่างเช่น:

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 เท่านั้น
Martin Owens -doctormo-

1
คุณลองโหลดแบบอักษรหลายชุดแล้วหรือยัง แบบอักษรยูนิโค้ด /usr/share/grub/unicode.pf2 ควรมีกล่องอักขระและลูกศรที่คุณต้องการ คุณควรจะสามารถโหลดแบบอักษรโดยใช้ loadfont ทีละแบบจนกว่าคุณจะได้รับผลที่ต้องการ
Martin Owens -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 ด้านบน แต่ไม่ได้ช่วยแก้ไขปัญหานี้ ขอบคุณมากสำหรับวิธีแก้ไขปัญหาที่คล้ายกัน :)
LasseValentini

3

หากคุณเรียกใช้grub-mkfontด้วยแฟล็ก-vมันจะแสดงจำนวนร่ายมนตร์ที่คุณได้รับ หากคุณได้รับมากกว่าหนึ่งพันตัวอักษรชายแดนควรจะอยู่ในนั้น การ จำกัด ช่วงจะทำให้สิ่งเลวร้ายลงเท่านั้น ฟอนต์ DejaVuSansMono แสดงอักขระทั้งหมดอย่างถูกต้องและมีร่ายมนตร์มากกว่า 3,000 อักขระใน. 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 ของคุณที่มีอักขระที่เหมาะสมทั้งหมด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.