aspirant В принципе все операции сборки-разборки можно руками сделать в hex-редакторе: вырезай куски заданной длины по заданному смещению, обзывай как надо... Потом редактируешь руками то, что нужно и все склеиваеши обычной командой copy /b. Тут только надо все аккуратно делать и потом прописать в trailer изменившиеся поля. То что файлы шрифтов имеют такие расширения, еще ни о чем не говорит. Я посмотрю, то что прикреплено.
Шрифты растровые. Первые 2 слова в файлах - ширина и высота фонта в пикселах. Поскольку всюду ширина = 8, значит кодировка идет байтами. Я тебе примерчик высылаю, с остальным наверное сам разберешься. Токмо пока непонятно, почему длина файла в 2 раза превышает расчетную. File ewbd.fnt from offset 1F8 -X---X-- 44 -X---X-- 44 -XXXXX-- 7C --X-X--- 28 ---X---- 10 -XXXX--- 78 -X---X-- 44 -XXXX--- 78 -X---X-- 44 -XXXX--- 78 --XXXX-- 3C -X------ 40 -X------ 40 -X------ 40 --XXXX-- 3C -XXXX--- 78 -X---X-- 44 -X---X-- 44 -X---X-- 44 -XXXX--- 78 -XXXXX-- 7C -X------ 40 -XXXX--- 78 -X------ 40 -XXXXX-- 7C -XXXXX-- 7C -X------ 40 -X------ 40 -XXX---- 70 -X------ 40
Чтобы определить шрифт, используемый на оборудовании, попробуй подредактировать по-очереди каждый из трех файлов (подредактировать можно грубо, например, забить несколько подряд идущих байтов 0xFF, чтобы вместо символов получились прямоугольнички).
Уважаемый, crypto, я пришел к следующим результатам: шрифты *.fnt, которые содержаться в WEWB.MSG в программе вообще не используются. На оборудовании надписи сделаны шрифтом Arial, это абсолютно точно. Проблема сейчас такая: русские буквы отображаются некорректно, я импортировал шрифт Arial в программу Raster Font Editor (см. выше), она показала все буквы и их hex-значения, содержащиеся в этом файле шрифта построчно (1 строка – сплошные квадратики, 2 строка – цифры и спец. символы, 3 строка – заглавные буквы английского алфавита, 4 строка – прописные буквы английского алфавита, 5 и 6 строки – непонятные символы, 7 строка – заглавные буквы русского алфавита, 8 строка – прописные буквы русского алфавита). Я сравнил hex-значения русских букв, которые я ввожу в качестве надписей на оборудовании, с теми, что выдал Raster Font Editor для шрифта Arial. Оказалось, что они как раз точно попадают на 7 и 8 строки (русский алфавит) Arial’а, но на экране отображаются символы из 5 и 6 строк (как раз тот «птичий язык»), причем порядковые номера символов в этих строках абсолютно симметричны (т.е., например, для буквы «Ч» отображается непонятный символ под тем же порядковым номером в строке 5, что и символ «Ч» в своей строке). Если вставлять hex-значения из 5 и 6 строк симметричные 7 и 8 строкам, то в программе отображаются русские буквы (проверил). Все бы хорошо, но начиная с русской буквы «р» прописные буквы не отображаются (отображаются опять непонятные символы), но если писать все заглавными – все отображается без проблем. Но писать все заглавными не хочется, хотелось бы сделать все по человечески Может кто-нибудь посоветует, что делать в этой ситуации. Что за шрифт в строках 5 и 6 (может быть это UNICODE?) и почему после буквы «р» прописные русские буквы не отображаются. P.S. кодовую страницу я уже поменял на 1251, но на текст на оборудовании это не повлияло (хотя здесь тоже Arial). Помогите, пожалуйста, если еще не совсем вас утомил Бьюсь уже два дня и уверен, что осталось совсем чуть-чуть..
aspirant А каким образом был получен этот результат? Можно поподробнее? Помогу, если смогу. Или кто-то еще присоединится...
Все как вы посоветовали, я заполнил эти шрифты "FF" и абсолютно это никак не отразилось, плюс к ним заполнял еще и EWBFNT.FON (и удалял его), который лежит в папке с программой. А когда вставляю hex-коды символов из шрифта Arial - все отлично отображает (см. пред. сообщ.), но только заглавными буквами и прописывать надо из 5 и 6 строк, а не из тех, где реально русские символы. Сегодня посоветовали приписать "204" в ключах "FontSubstitutes" и "FontMapper", но это тоже не помогло. Версию, что в 5 и 6 строках располагаются символы UNICODE тоже пришлось отбросить - узнал, что символ в UNICODE кодируется двумя байтами. Никак не пойму, почему же он берет русские символы не из тех строк и после символа "р" отображаются непонятные знаки.
aspirant Я нашел следующие шрифты (при инициализации) InstSpinFont StdFont EwbFont InstFont LabelFont ModelFont MacroFont MeterFont MacroFont MeterFont Явно Arial (из кода видно). Как по-твоему, какой из этих шрифтов искомый?
Странное дело, запустил я программу, стал размещать на ней элементы. Так у меня на этих елементах явно тот самый шрифт, который я тебе в качестве примера посылал. (надписи типа GND, VCC, 1A, 1Y и др. - правильно?), а никако
Странное дело, запустил я программу, стал размещать элементы. Так у меня на этих элементах явно тот самый шрифт, который я тебе в качестве примера посылал. (Надписи типа GND, VCC, 1A, 1Y и др. - правильно?), а никакой не Arial.
По логике, я бы назвал ModelFont. Но что это за шрифт? В качестве примера вы присылали ewbd.fnt, но там не было русского (по-моему я внимательно посмотрел), была только латиница (8x8 бит). Неужели вы пишете русскими буквами на оборудовании шрифтом ewbd.fnt? Только что еще раз просмотрел эти 3 шрифта, которые содержатся в ресурсах - ни в одном не нашел очертаний русских символов.
aspirant Может я непонятно высказался, но шрифт на микросхемах (надписи GND, 1A, 1Y) уж явно не в Arial. Или ты имел в виду другие элементы? А лучше выложи экранчик и отметь нужное!
aspirant Я попробую вечером проверить (как тебе советовал - путем правки шрифта), используется ли файл из ресурсов...
Уважаемый, crypto. Насколько я понял, на форум нельзя публиковать сообщения с вложениями больше 50Кб, поэтому вот мое сообщение со снимками экрана: http://slil.ru/23520662.
aspirant Так с ходу не скажу, поскольку похоже они какую-то внутреннюю перекодировку используют (хотя может я неправ). Предлагаю тупой метод: забиваешь в строки все символы от 0х80 до 0хFF и смотришь, что получилось - должна получиться табличка соответствия. И я все-таки не те элементы рассматривал.
Огромное спасибо за дельные советы и конкретную помощь, уважаемый crypto! А также спасибо всем, кого не затруднило ответить на мои сообщения. Проблема решена, тема закрыта.
aspirant Я так понимаю, и krokus тоже внес свою лепту. Приятно было помочь умному человеку. Обращайся, если что...
crypto Да, действительно, krokus внес свою лепту. Те строки, которые я глупо называл "строки 5, 6, 7 и 8", называются "Кодовая страница 866", за это спасибо krokus'y. В приложении картинка, которая ставит в соответствие символу hex-код по правилам как раз этой CP866 и на ней наглядно видно, что коды символов идут не подряд, а обрываются как раз на прописной русской букве "р", тогда как я, не зная про этот разрыв, писал так, будто все идет последовательно. Сейчас я учел это при переводе, прибавил величину разрыва, и русские буквы стали отображаться корректно. Еще раз, огромное спасибо, crypto и все остальные!