Как делать собственные шрифты для EPOC: Статьи о Psion

Как делать собственные шрифты для EPOC

Эта процедура не совсем простая, и не существует такой программы, которая позволила бы одним нажатием на клавишу изготовить шрифт для Psion. Вам придется кое-что настроить для того, чтобы все получилось. Но это не сложно: главное - быть аккуратным и не надо торопиться.
Описанная далее технология построена на конвертере шрифтов Font Design Utilities. К сожалению, к нему никакой документации, а также некоторых файлов не прилагается, поэтому пришлось ковыряться своими силами и доходить своим умом.

Как создать новый шрифт и подключить его к Psion

Сначала скачайте архив с необходимыми файлами (не волнуйтесь, он без вирусов). В нем содержатся все нужные для изготовления шрифта программы и данные. Вся процедура создания шрифта делается на настольном компьютере!

 .........
 .*****...
 **..***..
 **...**..
 ..***....
 .**.**.**
 **...**..
 **..*.**.
 **....**.
 ********.
 .******..
 .........
Шрифты в системе EPOC не похожи на шрифты TTF, которые используются в Windows. Они отличаются тем, что не векторные, а точечные, и для каждого размера шрифта существует свой набор точечных изображений всех букв. Слева, к примеру, вы видите изображение символа "&".

И таких - целая таблица, да еще разных размеров.
Сама процедура конвертации TTF-шрифта в шрифт для Psion состоит из следующих частей:
1. Сначала TTF-файл конвертируется из векторного файла в файл специального формата, где появляются описания символов, а строки "звездочка-точка" записаны в 16-ричном формате.
2. Затем этот файл конвертируется в наглядную карту "звездочка-точка".
3. Так делается для каждого размера шрифта, который необходимо получить.
4. Все полученные файлы с картами собираются в один единый.
5. Он обрабатывается с учетом специальной информации и на выходе получается файл шрифта, который использует Psion.

Итак, начнем. Мы сделаем шрифт из прилагаемого к архиву шрифта Skazka.ttf (это шрифт SkazkaForSerge). Обратите, пожалуйста, внимание, что для того, чтобы получился шрифт, куда входили бы и русские буквы, то надо использовать TTF-файл обычного формата, а не Unicode! По крайней мере, у меня из Unicode-вского шрифта русские буквы не получились. Skazka.ttf - нормальный шрифт, с русскими буквами у него в порядке.
ВНИМАНИЕ! Файлы в архиве настроены на то, чтобы сделать шрифт SkazkaForSerge. В этом случае править ничего не надо! А вот если вы хотите (а вы хотите) сделать нужный вам шрифт из другого TTF-шрифта, то читайте дальнейший текст на предмет того, что нужно поправить.

Сначала отредактируем BAT-файл, предназначенный для запуска конвертации и изготовления нужных карт. Те параметры, которые вам надо будет поправить, помечены красным. Зеленым - наши комментарии. Как уже говорилось в начале, в полноценном шрифте для EPOC должны быть наборы изображений символов для разных уровней масштабирования. Мы будем делать символы размером 1, 2, 3, 4, 8, 11, 13, 15, 18, 22, 27 и 32 точки. Это вполне правильная шкала. Самые мелкие шрифты нужны для предпросмотра страницы при печати. Итак, откройте в Блокноте или другом текстовом редакторе файл MAKEFONT.BAT из архива.
call makebdf Skaz 1 4553256 Skazka
call makebdf Skaz 2 4553257 Skazka
call makebdf Skaz 3 4553258 Skazka
call makebdf Skaz 4 4553259 Skazka
call makebdf Skaz 8 4553056 Skazka
call makebdf Skaz 11 4553057 Skazka
call makebdf Skaz 13 4553058 Skazka
call makebdf Skaz 15 4553059 Skazka
call makebdf Skaz 18 4553060 Skazka
call makebdf Skaz 22 4553061 Skazka
call makebdf Skaz 27 4553062 Skazka
call makebdf Skaz 32 4553063 Skazka
cpp -P Skazka.gd Skazka.i
fnttran Skazka.i Skazka.gdr
Здесь: слово Skaz меняем, к примеру, на My (чтобы получались промежуточные файлы с картами my**.gd), слово Skazka меняем на имя файла TTF-шрифта без расширения (то есть если ваш исходный файл называется myfont.ttf, то это будет слово Myfont). То же самое касается изменений Skazka.gd -> Myfont.gd (файл настроек, который будем править следующим шагом) и т.д. (Skazka.i, Skazka.gdr). Семизначные цифры, выделенные фиолетовым цветом (идентификатор фонта), не трогаем, но если вы будете создавать еще один шрифт (второй, третий и т.д.), то читайте ниже раздел об очередных шрифтах. Сохраняем файл.

Если вы обрабатываете шрифт с символами (а не обычный шрифт с буквами, в том числе и русскими), то необходимо будет отредактировать файл MAKEDBF.BAT:
ttf2bdf -r 75 -m win1251.map -p %2 -o %1%2.bdf %4.ttf
bdf2epoc %1%2.bdf %1%2 %3 > %1%2.gd

Надо исправить имя файла символьной таблицы на symbol.map (этот файл прилагается в архиве). Напоминаю, что это надо делать только в случае символьного шрифта и не надо в случае обыкновенного!

Теперь необходимо будет отредактировать файл с инструкциями для компилятора. Открываем файл SKAZKA.GD:
#include "Skaz1.gd"
#include "Skaz2.gd"
#include "Skaz3.gd"
#include "Skaz4.gd"
#include "Skaz8.gd"
#include "Skaz11.gd"
#include "Skaz13.gd"
#include "Skaz15.gd"
#include "Skaz18.gd"
#include "Skaz22.gd"
#include "Skaz27.gd"
#include "Skaz32.gd"
// в этих строках определяются файлы, которые получатся при конвертировании TTF-шрифта в карту.
// Поменяйте их названия на my1.gd ... my32.gd (помните предыдущий файл?)

Typeface SkazkaForSerge
// Это название гарнитуры. Оно должно быть в одно слово, например, MyFont. Пробелов быть не должно.

   Name "SkazkaForSerge" Proportional
// Это имя шрифта. Оно должно соответствовать имени TTF-шрифта,
// который используется в Windows, например, "My cool font". Может содержать пробелы.
// Это имя будет показываться и на Psion в списке шрифтов.

   FontBitmaps
      Skaz1
      Skaz2
      Skaz3
      Skaz4
      Skaz8
      Skaz11
      Skaz13
      Skaz15
      Skaz18
      Skaz18 HeightFactor 2 WidthFactor 2
      Skaz18 HeightFactor 4 WidthFactor 4
      Skaz22
      Skaz22 HeightFactor 2 WidthFactor 2
      Skaz22 HeightFactor 4 WidthFactor 4
      Skaz27
      Skaz27 HeightFactor 2 WidthFactor 2
      Skaz27 HeightFactor 3 WidthFactor 3
      Skaz27 HeightFactor 4 WidthFactor 4
      Skaz27 HeightFactor 5 WidthFactor 5
      Skaz32
      Skaz32 HeightFactor 2 WidthFactor 2
      Skaz32 HeightFactor 3 WidthFactor 3
      Skaz32 HeightFactor 4 WidthFactor 4
      Skaz32 HeightFactor 5 WidthFactor 5
// Здесь шли параметры имен. Поправьте их на соответствующие именам
// файлов, то есть, на my1 ... my32. Остальные параметры не трогайте.

   EndFontBitmaps
EndTypeface

FontStoreFile
   CollectionUid 268438417
// Этот номер оставьте неизменным для первого шрифта, а если будете генерировать новый,
// то прочитайте ниже раздел насчет очередных шрифтов.

   KPixelAspectRatio 1000
   CopyrightInfo
      "My font for EPOC"
// Здесь можно ввести строку копирайта.

   EndCopyrightInfo
   Typefaces
      SkazkaForSerge
// Здесь укажите название гарнитуры, которое мы придумали выше.

   EndTypefaces
EndFontStoreFile
Все, теперь сохраните файл под именем MYFONT.GD. Файл инструкций готов.

Готово! Еще раз проверьте, правильно ли внесены изменения. А теперь запускайте файл MAKEFONT.BAT и ждите, пока работают программы. Когда работа будет закончена, в директории вы обнаружите файл SKAZKA.GDR (или MYFONT.GDR, если вы делаете свой шрифт). Поздравляем! Это и есть шрифт для Psion. С помощью PsiWin перетащите его на КПК в директорию C:\System\Fonts\. Теперь сделайте мягкий сброс машинки, надавив под крышкой отверстие около резервной батарейки тонким предметом (скрепкой, к примеру).
Так выглядит наш шрифт на Psion (10072 байт)
После перезагрузки Psion обнаружит новый шрифт и теперь он будет доступен в программах! При распечатке на бумаге тоже все выглядит правильно.


Как удалить установленный шрифт
Вот здесь немного сложнее из-за того, что файл шрифта постоянно открыт системой, поэтому его нельзя просто стереть. Но, оказывается, можно запросто переименовать папку C:\System\Fonts\ в любое другое имя. Тогда в нее можно будет зайти, удалить ненужный шрифт и переименовать обратно в Fonts. После этого делаем мягкий сброс - и шрифта как не бывало!

Добавление очередных шрифтов
Вот объяснение цифрам, которые были выделены фиолетовым цветом. Каждая из них - это уникальный идентификатор (UID) того или иного набора шрифта. Шрифт (и все остальные ресурсы) в КПК определяется именно по UID. Следовательно, для каждого набора (гарнитуры, размера) есть свой UID, и он единственный. Если вы создаете новый шрифт, то прежде надо проверить, не занят ли такой UID. Это можно сделать с помощью программы FontTest. Запустите ее и нажмите кнопку "UID". Сначала тестируем 7-ми значные UID-ы символьных наборов. Попробуйте проверить, не заняты ли UID-ы пространства, которое имеет значения на 32 больше, чем те, что мы использовали. То есть, прибавьте к цифрам из интервала 4553256 - 4553063, к примеру, число 32. Теперь введите его (4553288) в поле ввода и если программа скажет, что такой UID не найден, то он свободен и его можно использовать. Если занят - прибавьте 64 и проверяйте дальше: самое главное - это проверить все семизначные идентификаторы шрифта. Так надо убедиться, что свободны все UID-ы.

UID-ы берутся не с потолка! Для программ, которые разрабатываются для дистрибуции, UID нужно официально запрашивать у Psion. Но мы-то делаем шрифт для личного пользования? Вот официальное разъяснение компании Psion для разработчиков: "Приложения, которые изготовляются для личного использования, не нуждаются в резервировании официальных UID и любой UID из интервала между &01000000 и &0FFFFFFF может быть использован. Однако если два приложения, использующие одинаковые UID пересекутся, это может привести к тому, что будут показываться неправильные иконки или получатся неправильные ассоциации, которые при запуске выдают сообщение "Not found" - как правило, не более того". Как видим, выбранные нами UID как раз попадают в пользовательский интервал (который, к тому же, ОЧЕНЬ велик). В исключительном случае с минимальной вероятностью в одну сколько-то миллионную возможен небольшой конфликт, который в любом случае выразится не более, чем в графических глюках (его несложно поправить, удалив фонт и выбрав другие UID).

Это было касаемо UID символьных наборов. Теперь что касается UID для самого шрифта (9-ти значная цифра CollectionUid). Вот этот UID нужно получать по запросу у Symbian. Проблема для вас решена! MyPsion.Ru сделал официальный запрос и получил в свое (а теперь - в ваше личное) распоряжение 5 UID-ов, которых хватит на изготовление еще пяти шрифтов. Вот они: с номера 268474528 по 268474532 включительно. Помните, что они предназначены только для личного использования.

Послесловие
Если вы найдете какие-то ошибки в приведенной инструкции или у вас есть комментарии - пишите webmaster@mypsion.ru.

Дата статьи: 20 ноября 2000 г

« Назад в каталог | Обсудить в конференции »
[На главную] [Обновления] [Новости] [Клуб] [Обзоры программ] [Советы] [Обзоры железа] [SIBO] [Конференция] [Статьи] [Базы] [Ссылки] [Поиск]