[Цитировать]

    MBTY
  • 1499
  • Стаж: 9 лет 1 месяц
  • Сообщений: 86
  • Репутация:9

    [+] [-]
Всем нам известно, что 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

[Цитировать]

    MBTY
  • 1499
  • Стаж: 9 лет 1 месяц
  • Сообщений: 86
  • Репутация:9

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

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 8 месяцев
  • Сообщений: 1320
  • Репутация:127

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


Последний раз редактировалось: AZJIO (2021-01-29 16:39), всего редактировалось 1 раз

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 8 месяцев
  • Сообщений: 1320
  • Репутация:127

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

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 8 месяцев
  • Сообщений: 1320
  • Репутация:127

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

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 8 месяцев
  • Сообщений: 1320
  • Репутация:127

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

[Цитировать]

    Gvint64
  • 24573
  • Стаж: 4 года 5 месяцев
  • Сообщений: 617
  • Репутация:70

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

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 8 месяцев
  • Сообщений: 1320
  • Репутация:127

    [+] [-]
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

[Цитировать]

    Gvint64
  • 24573
  • Стаж: 4 года 5 месяцев
  • Сообщений: 617
  • Репутация:70

    [+] [-]
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


Последний раз редактировалось: Gvint64 (2020-10-25 20:25), всего редактировалось 38 раз(а)

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 8 месяцев
  • Сообщений: 1320
  • Репутация:127

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


Последний раз редактировалось: AZJIO (2020-10-11 09:34), всего редактировалось 1 раз

[Цитировать]

    Gvint64
  • 24573
  • Стаж: 4 года 5 месяцев
  • Сообщений: 617
  • Репутация:70

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


Показать сообщения:    

Текущее время: 31-Окт 10:31

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы