Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java ME (J2ME) > Использование Windows шрифтов в J2ME |
Автор: magdelphi 17.6.2008, 21:12 | ||||
Magdelphi 2008 Использование Windows шрифтов в J2ME Предоставляемые возможности вывода текста в MIDP не позволяют в полной возможности воплотить задуманные решения. Столкнувшись в очередной раз с этим ограничением и не найдя готового решения написал небольшое приложение на Delphi и java класс позволяющий использовать всё многообразие шрифтов Windows. Утилита FontGen.exe позволяет создать образы шрифтов с учётом размеров и стилей который сохраняется в файле font.png . Также создается файл font.dat с описанием расположения символов и служебной информацией. Рассмотрим формат файла font.dat
Дальше поместив эти файлы в папку res j2me приложения используйте класс FontClass
Пример использования Архив с FontGen.exe, FontClass и примером прилагаю |
Автор: Samuil 18.6.2008, 10:12 |
magdelphi, Молодец! Я думаю эту тему надо дабавить в ФАК! Информация Важна для начинающих и не только! |
Автор: eugine_s 18.6.2008, 12:52 |
Нормальная утилита. Вот возможные доработки: 1) На выходной картинке слишком большие отступы между символами. Они не нужны - только место занимают. (Создал шрифт MSSansSerif 10 жирный - размер получился 3680 x 16 - имхо, это очень много для шрифта.) Символы нужно рисовать на картинке в плотную, без всяких пробелов. А в программе, если нужно будет, то можешь сам добавить нужный отступ между символами. 2) Часть символов реально никогда не используется. На картинке они располагаются между английскими и русскими буквами. Их можно "выбросить". 3) Ну и еще такое: чем отличается английская А от русской А, английская B от русской B, C от С, а от а ...? Реально - ничем. Соотвественно на выходном картинке шрифта часть символов можно отбросить. |
Автор: magdelphi 18.6.2008, 18:29 |
Для этого большие интервалы между символами и сделал чтобы можно было легко выбрасывать и всталять, но меняя расположение символов не забудь изменить и логику работы в классе FontClass и без того работающего достаточно медленно. Зачем экономить память в ушеб быстродействию? Тем более 48кбайт по Memory monitor для моего примера это не много, а там шрифт ArialBlack 36. |
Автор: magdelphi 18.6.2008, 19:50 |
Можно конечно создать png для каждого символа. Тогда с памятью будет всё очень хорошо, но скорость? |
Автор: eugine_s 18.6.2008, 20:42 |
Я думаю это шутка была? Так как с памятью еще хуже будет. Советы я тебе дал, объяснил почему нужно это сделать. Твое дело прислушаться или нет. |
Автор: magdelphi 18.6.2008, 22:51 |
Нет не шутка, я имел ввиду можно к примеру, сделать не один а 4 файла для каждого шрифта 1-латиница 2-цифры 3-спецсимволы 4-кириллица, которые будут загружаться по мере необходимости. Единственная проблема скорость. |
Автор: smke444 21.7.2008, 09:56 |
Вот нарыл еще одну утилиту для создания автоматически PNG файла с любой последовательностью букв используя Windows шрифты, думаю многим пригодится ![]() ![]() |
Автор: igorka 19.9.2009, 23:08 |
Классная штука. Удобно. Но, есть однО бОльшое нО! Сони-эрики выкидывают java.lang.OutOfMemoryError при использовании шрифтов размером от 28 и больше((. А мне надо именно такой шрифт (28-й и 48-й). И еще если мне надо только 0-9 зачем мне в ресурсах держать весь алфавит? Автор, хелп!!! |
Автор: eugine_s 21.9.2009, 13:39 | ||
Возьми .png (который программа генерируте), открой в фотошопе и скопируй нужные символы (0-9) в новую картинку. Сохрани png. Сгенерируй описание png (можно сгенерировать или можно в программе захардкодить). Или smke444 выложил утилиту, которой можно ввести любую последовательность символов. |
Автор: igorka 21.9.2009, 15:01 |
Я просто обрезал пнг файл, оставил часть только до цифр. как сгенерить описание не разбирался, поэтому сделал именно так. Заработало. Утилита которую выложил smke444 упорно отказывается работать... ну и ладно. Кста, время отрисовки этих шрифтов просто жесть, даше на шустреньких SE очень медленно, представляю что будет на сименсах и моторах. Надо будет где-то оптимизировать. Как разберусь где, отпишусь. |
Автор: eugine_s 21.9.2009, 16:45 | ||
Какой размер картинки (.png) в пикселях? |
Автор: smke444 24.9.2009, 17:26 |
Хорошая новость – нарыл другую утилиту, на много лучше прежней, сие чудо называется PopCap Games Framework v1.3, качаем здесь http://sourceforge.net/projects/popcapframework/ Особенности : - рисует любую последовательность букв - работает коректно ( в font4mobile – были замечены глюки) - утилита проверки фонта / png картинки на валидность - пространство между буквами в картинке - 1 пикселЬ ! - и самое главное – прога генерирует dat файл со смешениями, ширинами букв в картинке !!! Пользуюсь только ей. ![]() |
Автор: aRixx 26.10.2009, 10:51 |
Развивая тему шрифтов. Статья про использование собственных векторных шрифтов: http://www.mobilab.ru/articles/113/ |
Автор: hamsterKSU 2.12.2009, 15:26 |
smke444, чето не пойму как ее юзать можно, там ведь только генератор или я чето не понимаю? |
Автор: mkol 14.11.2010, 15:47 |
В спецификации MIDP 3.0 добавлена возможность работы со шрифтами OpenType. |