Страница 1 из 1

Где находится таблица с шириной Hi-Res букв в PC версии?

СообщениеДобавлено: 10.12.2013, 00:21
Albeoris
Господа, собственно сабж.

Никак не могу найти информацию о том - где обитает таблица, описывающая ширину букв высокого разрешения? Для 320 есть sysfnt.twd А вот для sysfld00, sysfld01 найти не могу. Вроде бы, форматы схожие с FF7. Быть может, кто-нибудь подскажет? Хотя бы как она выглядит в памяти (если есть), чтобы можно было поковыряться отладчиком.

СообщениеДобавлено: 10.12.2013, 01:00
BukTop
В FF7 таблица находиться в файле Window.bin я менял только там.
Могу дать прогу, но сомневаюсь, что поможет.
Есть ещё один вариант, если он не решит проблему, то хотя бы поможет понять, в какую сторону копать.

СообщениеДобавлено: 10.12.2013, 07:52
Albeoris
С удовольствием приму и прогу и вариант. :)
Чувствую, мне придётся караптить файлы, чтобы выяснить - где же всё-таки поселилась эта зловредная табличка. =\

СообщениеДобавлено: 10.12.2013, 09:43
shikulja
Albeoris если будут результаты ты потом отпиши что как)
хотя бы для того чтобы не наступать на одни и те же грабли

СообщениеДобавлено: 12.12.2013, 00:11
Albeoris
Да, разумеется. :)
Но что-то мне подсказывает, что придётся лезть отладчиком. =\

Посмотрел - как сделали пираты. У них буквы отрисованы поверх тех, что примерно похожи по ширине. =\
Можно и так сделать, но хочется по-человечески...

СообщениеДобавлено: 12.12.2013, 21:31
BukTop
Свой первый шрифт, я делал так же. :D

СообщениеДобавлено: 16.12.2013, 06:37
Albeoris
Всё оказалось очень просто и примитивно. Просто я был слишком хорошего мнения о разработчиках SE.

В архиве main.fs
\data\eng\sysfnt.tdw - используется для HiRES шрифтов

В архиве menu.fs
\data\eng\menu\sysfnt.tdw - используется для обычных шрифтов

Таблицы ширин в них ОДИНАКОВЫЕ (что и смутило, думал, что ширины шрифтов, раз уж они хранятся отдельно, описаны целыми байтами, а не половинками - я ошибался).
Значения таблицы шрифтов из архива main.fs умножаются на 1,67. Округление в большую сторону.
http://yadi.sk/d/4Tm5CiXNENrNL

Хранятся числы точно также - начиная с 8 байта в файле sysfnt.tdw описаны ширины символов, начиная с пробела. По половинке байта на символ. Биты 0..4 - 1ый символ, 5..7 - 2ой символ.
Предположим у нас есть символы с шириной 22, 15, 11 и 7 пикселей. Тогда в таблице ширин будет записано:
22 / 1.67 = 13.19 => 14 (0xE)
15 / 1.67 = 8.999 => 9 (0x9)
11 / 1.67 = 6.599 => 7 (0x7)
07 / 1.67 = 4.199 => 5 (0x5)
---
9E57

Как видим, максимальная абсолютная погрешность - 1.66 пикселя. Иногда есть смысл округлить значение в меньшую сторону, чтобы избежать слишком большого расстояния между символами.

Posted after 14 hours 30 minutes 44 seconds:
Немного поправил табличу ширин:
Изображение

Хотя стоило бы по всему шрифту пройтись... Ну да ладно, это на будущее. Надо же что-то допиливать. :)
Изображение

СообщениеДобавлено: 16.12.2013, 21:50
BukTop
Хорошо, что всё получилось. :ok: