[Quote]

    MBTY
  • 1499
  • Longevity: 5 years 6 months
  • Posts: 77
  • REPUTATION:6

    [+] [-]
Всем нам известно, что G4D не поддерживает кириллицу, а потому все мы дополнительно используем unicode шрифт. Либо его оригинал (Unifont) на много килобайт либо урезанную версию только с кириллицей на 3кб.
Править этот шрифт очень сложно, потому что хз как это делать. Но недавно мне пришлось постичь эту науку, теперь делюсь познаниями + утилиткой, которую создал, чтобы не съехала кукушка при переводе буквы в длинный HEX код - Glyph 2 HEX
1) Нам интересно перерисовать букву Ж
2) Открываем файл шрифтов и видим что-то вроде:

Этого

.....................................
0413:0000FE6662606060606060F000000000
0414:00001E3666666666666666FFC3810000
0415:0000FE6662687868606266FE00000000
0416:0000DBDB5A5A7E7E5ADBDBDB00000000
0417:00007CC606063C060606C67C00000000
0418:0000C6C6C6CEDEF6E6C6C6C600000000
.....................................
3) Лезем на сайт https://www.compart.com/en/unicode и вбиваем там в поиске Ж. Узнаём, что код нашей буквы - 0416
4) Берем только жирный текст из строки 0416:0000DBDB5A5A7E7E5ADBDBDB00000000
5) Вставляем его в самую верхнюю строку Glyph 2 HEX и жмем VVVVV.
6) Получив это правим букву как хотим.
7) После рисования получаем вот что  
8) Вверху хранится строка оригинала - она правится юзером по желанию - по сути она для импорта в программу. Внизу - строка с кодом нарисованной в окне буквы. Вот нижнюю строку копируем в файл шрифта G4D на место оригинального символа.
9) Было 0416:0000DBDB5A5A7E7E5ADBDBDB00000000, а стало 0416:00DBDBDBDBDB5A3C3C5ADBDBDBDBDB00.
Сохраняем, проверяем.
Было.
 
Стало.
 
* В ходе всей работы было еще выявлено, что файл шрифтов должен закачиваться пустой строкой.

Неправильно

044D:00000000007CC6063E06C67C00000000
044E:0000000000CEDBDBFBDBDBCE00000000
044F:00000000007FC6C67E3666E700000000
0451:0000006C007CC6C6FCC0C67C00000000

Правильно

044D:00000000007CC6063E06C67C00000000
044E:0000000000CEDBDBFBDBDBCE00000000
044F:00000000007FC6C67E3666E700000000
0451:0000006C007CC6C6FCC0C67C00000000

 
* Сайт https://www.compart.com/en/unicode/ можно заюзать в обратную сторону. Стало интересно, что за символ под кодом 042F - правим ссылку на httрs://www.compart.com/en/unicode/U+042F-Скачать Glyph 2 HEX

[Quote]

    MBTY
  • 1499
  • Longevity: 5 years 6 months
  • Posts: 77
  • REPUTATION:6

    [+] [-]
Верхняя строка (код оригинали) она и для импорта и для сохранения оригинала. Запихнули оригинальную букву, нажали VVVVV, запороли - не беда. Снова жмём VVVVV и грузится картинка до того как всё запоролось.
Вообще, если рисуем шрифт "с нуля", то верхняя строка и не используется.
Ну и из неочевидного - для быстрой очистки "рисунка" в верхней строке можно вбить "0" и "VVVVV" - это приведет к очистке всего поля рисования

[Quote]

    AZJIO
  • 17953
  • Longevity: 3 years 1 month
  • Posts: 622
  • REPUTATION:75

    [+] [-]
Попробовал сделать копию программы на PureBasic, скачать (исходник в комплекте).


Last edited by AZJIO on 2021-01-29 16:39; edited 1 time in total

[Quote]

    AZJIO
  • 17953
  • Longevity: 3 years 1 month
  • Posts: 622
  • REPUTATION:75

    [+] [-]
Добавил бледную сетку.
Исправил "Вставить" (вставляло перевёрнутым)
Добавил "Предпросмотр".
В исходнике в строке 5 можно задать размер клетки от 18 до 55.
И попробуйте 00000000925438545492000000000000
Добавил "Открыть", открывает *.png,*.bmp и рисует их на холсте. То есть можно в графическом редакторе нарезать буквы и импортировать в код.

[Quote]

    AZJIO
  • 17953
  • Longevity: 3 years 1 month
  • Posts: 622
  • REPUTATION:75

    [+] [-]
Добавил импорт символа шрифта просто выбрав шрифт.
Добавлена возможность генерировать алфавит в коды

[Quote]

    AZJIO
  • 17953
  • Longevity: 3 years 1 month
  • Posts: 622
  • REPUTATION:75

    [+] [-]
В общем решил потестировать, увидев пример в menu.lst в версии 0.4.6a, там есть следующие строки
5173:10100810082000003FF8010001000100FFFE010002800280044008203018C006
542F:010000801FFC1004100410041FFC10001000100017FC24042404440487FC0404
673A:100011F011101110FD10111031103910551055109110111211121212120E1400
91CD:001000F83F000100FFFE01001FF011101FF011101FF001003FF80100FFFE0000
Удивило что число символов 64, вместо 32. Взял именно версию 0.4.6a (grldr), запустил в эмуляторе "WinSetupFromUSB-1-9" получаю пустую строку вместо слова "тест". Попробовал сделал пункт "А" вместо 91CD прописал 0410, то есть вместо "А" должен был появится иероглиф из примера, но опять не произошло.
Есть идеи?

[Quote]

    Gvint64
  • 24573
  • Longevity: 11 months
  • Posts: 198
  • REPUTATION:17

    [+] [-]
80807Удивило что число символов 64, вместо 32
aa Может так а может и нет - 32/2=16 байт - это размер шрифта 8х16. Кириллица должна быть только 8х16 ?

[Quote]

    AZJIO
  • 17953
  • Longevity: 3 years 1 month
  • Posts: 622
  • REPUTATION:75

    [+] [-]
Gvint64, я думаю Grub4Dos ничего не знает о кириллице или иероглифе, у него есть код символа и таблица-битмап, как его отображать. Если Grub4Dos может воспринимать битмап 32 или 64, значит мы автоматически можем задать шрифт в лучшем качестве, больше пиксел на букву, но опять же если это влияет только на ширину, мы можем задать более широкие символы (Verdana-широкие, Arial Narrow - узкий). Но если у нас кодировка 1251, как Grub4Dos узнает, что этот символ "А" с кодом ANSI отличающимся от аналогичного кода в таблице Юникода, чтобы его заменить битмапом, вроде как на загрузке он должен определять. На всякий случай пробую сохранить меню (menu.lst) в юникод 16LE (стандартный юникод для Windows) и он его не видит.
Тут же тестирую в UTF-8 и он видит букву "А", но не с битмапа
Но ради этого не думаю что откажусь от версии 0.4.4, потому что новая дольше загружается. Надо разобраться что поддерживает та и другая. 0.4.4 также видит UTF-8

[Quote]

    KisPavVlad
  • 16733
  • Longevity: 3 years 7 months
  • Posts: 426
  • REPUTATION:-11

    [+] [-]
Не срабатывает цветовая схема меню вот так:
color light-white/blue light-white/red
Всё черно-белое. Такое расположение ГРУБ не понимет чтоль? Если делать оба цвета одинаково, то нормально, но оно не катит по красоте.
И насколько нужен параметр "pxe detect"?


Last edited by KisPavVlad on 2020-10-11 08:55; edited 2 times in total

[Quote]

    Gvint64
  • 24573
  • Longevity: 11 months
  • Posts: 198
  • REPUTATION:17

    [+] [-]
AZJIO, aa По этому методу пробовал и impact и segoeui и т.д. - 16x16 и 20x20 ...

impact_16x16 gfxmenu

Шрифт 8x16


Вариант шрифта 8x16 для вставки в Menu.lst в UTF-8. graphicsmode

default 0
#режимы 640x480 и 800x600
graphicsmode -1 640:800 480:600 24:32
#шрифт встроен в тему gfx
gfxmenu /gfx/flash_gfx.gz
#font /fonts/unifont.hex.gz
#текст/фон курсор/фон низ/фон верх/фон
color yellow/black yellow/red light-cyan/black light-green/black
#картинка *.bmp сжата в gz
splashimage /img/ikesima.gz
title
....
....
....
0030:00007CC6C6CED6E6C6C6C67C00000000
004D:0000C6EEFEFED6C6C6C6C6C600000000
0054:00007E7E5A1818181818183C00000000
0056:0000C6C6C6C6C6C6C66C381000000000
0057:0000C6C6C6C6D6D6D6FEEE6C00000000
0058:0000C6C66C7C38387C6CC6C600000000
0059:0000666666663C181818183C00000000
005A:0000FEC6860C183060C2C6FE00000000
006D:0000000000ECFED6D6D6D6C600000000
0076:0000000000C6C6C6C6C66C3800000000
0077:0000000000C6C6D6D6D6FE6C00000000
0078:0000000000C66C3838386CC600000000
007C:00001818181818181818181800000000
0401:6C00FE6662687868606266FE00000000
0410:00001E3666C6C6FEC6C6C6C600000000
0411:0000FE6260607C66666666FC00000000
0412:0000FC6666667C66666666FC00000000
0413:0000FE6662606060606060F000000000
0414:00001E3666666666666666FFC3810000
0415:0000FE6662687868606266FE00000000
0416:0000DBDB5A5A7E7E5ADBDBDB00000000
0417:00007CC606063C060606C67C00000000
0418:0000C6C6C6CEDEF6E6C6C6C600000000
0419:6C38C6C6C6CEDEF6E6C6C6C600000000
041A:0000E6666C6C78786C6C66E600000000
041B:00001F3666666666666666CF00000000
041C:0000C6EEFEFED6C6C6C6C6C600000000
041D:0000C6C6C6C6FEC6C6C6C6C600000000
041E:00007CC6C6C6C6C6C6C6C67C00000000
041F:0000FEC6C6C6C6C6C6C6C6C600000000
0420:0000FC666666667C606060F000000000
0421:00007CC6C6C0C0C0C0C2C67C00000000
0422:0000FFDB991818181818183C00000000
0423:0000C6C6C6C6C67E0606C67C00000000
0424:00007EDBDBDBDBDBDB7E183C00000000
0425:0000C6C66C7C38387C6CC6C600000000
0426:0000C6C6C6C6C6C6C6C6C6FF03030000
0427:0000C6C6C6C6C67E0606060600000000
0428:0000D6D6D6D6D6D6D6D6D6FE00000000
0429:0000D6D6D6D6D6D6D6D6D6FE03030000
042A:0000F8F0B0303E333333337E00000000
042B:0000C3C3C3C3F3DBDBDBDBF300000000
042C:0000F06060607C66666666FC00000000
042D:00007CC606263E260606C67C00000000
042E:0000CEDBDBDBFBDBDBDBDBCE00000000
042F:00003F6666663E3E666666E700000000
0430:0000000000780C7CCCCCCC7600000000
0431:0002067CC0C0FCC6C6C6C67C00000000
0432:0000000000FC66667C6666FC00000000
0433:0000000000FE6262606060F000000000
0434:00000000001E3666666666FFC3C30000
0435:00000000007CC6C6FEC0C67C00000000
0436:0000000000D6D6547C54D6D600000000
0437:00000000007CC6063C06C67C00000000
0438:0000000000C6C6CED6E6C6C600000000
0439:0000006C38C6C6CED6E6C6C600000000
043A:0000000000E66C78786C66E600000000
043B:00000000001E3666666666E600000000
043C:0000000000C6EEFEFED6D6C600000000
043D:0000000000C6C6C6FEC6C6C600000000
043E:00000000007CC6C6C6C6C67C00000000
043F:0000000000FEC6C6C6C6C6C600000000
0440:0000000000DC66666666667C6060F000
0441:00000000007CC6C0C0C0C67C00000000
0442:00000000007E5A181818183C00000000
0443:0000000000C6C6C6C6C67E0606C67C00
0444:0000003C187EDBDBDBDBDB7E18183C00
0445:0000000000C66C3838386CC600000000
0446:0000000000C6C6C6C6C6C6FF03030000
0447:0000000000C6C6C6C67E060600000000
0448:0000000000D6D6D6D6D6D6FE00000000
0449:0000000000D6D6D6D6D6D6FE03030000
044A:0000000000F8B0B03E33337E00000000
044B:0000000000C6C6C6F6DEDEF600000000
044C:0000000000F060607C6666FC00000000
044D:00000000007CC6063E06C67C00000000
044E:0000000000CEDBDBFBDBDBCE00000000
044F:00000000007FC6C67E3666E700000000
0451:0000006C007CC6C6FCC0C67C00000000


Last edited by Gvint64 on 2020-10-25 20:25; edited 38 times in total

[Quote]

    AZJIO
  • 17953
  • Longevity: 3 years 1 month
  • Posts: 622
  • REPUTATION:75

    [+] [-]
Gvint64, ну да, если использовать тему gfxboot. Как я понял пример шрифта в MENU.LST должен поддерживаться без gfxboot, например тема упала, или сбой загрузки возвращает в неграфический режим.
Вообще я писал утилиту выше, но не пробовал её использовать в Grub4Dos. Если у автора работает, мне интересен именно вариант, предложенный автором темы. Я именно взял архив Grub4Dos версии 0.4.6a в котором был пример.
Разобрался, у меня же gfxboot используется, отключил и всё заработало. Но надо использовать graphicsmode из примера. И пока что с пунктами что-то не то, курсор перепрыгивает через эти пункты нарисованные шрифтом.


Last edited by AZJIO on 2020-10-11 09:34; edited 1 time in total

[Quote]

    Gvint64
  • 24573
  • Longevity: 11 months
  • Posts: 198
  • REPUTATION:17

    [+] [-]
80814тема упала, или сбой загрузки
Думаю в menu.lst можно попробовать совместить методы - к графическому добавить текстовый. Если упал графический подхватывается текстовый. Шрифт в сообщении выше.


Display posts:    

Current time is: 12-Apr 02:53

All times are UTC + 3


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum