категории | RSS

Сторонние шрифты на Symbian 8.1

Сторонние шрифты на Symbian 8.1
==================
Если вы решили установить сторонний шрифт, то будте готовы к тому, что в некоторых программах он будет работать некорректно. Так же возможны глюки в работе некоторых программ. И обьясняется это чаще всего не тем что шрифт кривой, как иногда можно прочитать в комментариях, а тем что не возможно в полной мере заменить одним сторонним шрифтом все семь стандартных, которые лежат в папке Z:/System/FONTS/. А иногда это можно обьяснить кривизной рук (а точнее не знанием основных правил работы с шрифтами) тех юзеров, которые пишут, что из-за кривого шрифта у них какие то проблемы со смартом.
В этой статье попробую поделится своим опытом в работе с шрифтами. Думаю статья будет полезна не только новичкам, но и тем кто давно пользуется смартами.
=========
1) Установка шрифтов
Установка в C:/System/FONTS
Почему то когда на форуме задают вопрос: Как правильно установить шрифт? чаще всего отвечают: Ставь в C:/System/FONTS. Но это только один из вариантов установки шрифта. И я бы не сказал, что самый лучшийsmile Единственным преимуществом этого варианта, есть то, что при установке другой флешки, или при работе телефона без флешки, у вас останется тот шрифт к которому вы привыкли. Но есть и очень серьезный минус: если случится какой то глюк шрифта, то формат почти неизбежен. При таких глюках можно попробывать использовать FONTSRename. Это файл Восстановлене системы, от нашего участника Canth, но я отредактировал его только для работы с шрифтами. Файлы из архива кладем на флешку (через картридер, или другой смарт) по указанным дирректориям и перегружаем смарт. Папки C:/System/FONTS и C:/Data/FONTS должны переименоватся на C:/System/FONTS1 и C:/Data/FONTS1. Если не переименовались - значит вас ждёт формат.
Отсюда вывод: Нельзя ставить непроверенные шрифты в телоsmile Сначала ставим шрифт на флешку, тестируем, настраиваем и только потом переносим в телефон.
Другие способы установки
Для работы шрифтов используются две папки !:/Data/FONTS и !:/System/FONTS. Поэтому вполне возможно устанавливать шрифты такими способами
1 C:/System/FONTS
2 E:/System/FONTS
3 C:/System/FONTS и C:/Data/FONTS
4 C:/System/FONTS и E:/Data/FONTS
5 E:/System/FONTS и E:/Data/FONTS
6 E:/System/FONTS и C:/Data/FONTS
Первые два способа предпологают, что все файлы шрифта кладутся в одну папку. При использовании остальных способов, файлы шрифта раскладываются в две папки. Я использую четвертый способ установки. Считаю его оптимальным.
2) Файлы шрифта
Из всех файлов, которые лежат у вас в папках FONTS, шрифтом является только файл с расширением TTF. Остальные файлы - это библиотеки, необходимые для работы шрифта, и файл настроек. Если вы устанавливаете шрифт по первому, или второму способу, то в папке !:/System/FONTS должны лежать такие файлы:
name. TTF
FontRouter.dll
FontRouter.ini

Если вы решили разложить файлы шрифта в две папки, то в !:/System/FONTS вы кладете FontRouter.dll, а в !:/Data/FONTS - name.TTF и FontRouter.ini. Файлов .TTF может быть несколько.
Иногда в папке FONTS могут быть файлы AGFAFONTRASTER.dll и FREETYPE.dll. Для нормальной работы шрифтов на os8.1 эти файлы не нужны(хотя возможны и исключения). Поэтому, если эти файлы у вас есть, переименуйте их, и перегрузите смарт. Если ни каких изменений в работе шрифта не появилось, то файлы можно снести.
AGFAFONTRASTER.dll, FREETYPE.dll и FontRouter.dll
Библиотеки FREETYPE.dll используются на os8 для возможности установки TTF шрифтов. На os8.1 они не нужны, но в некоторых случаях их использование позволяет добится более четкого отображения шрифта.
Файл AGFAFONTRASTER.dll лежит в папке Z:/System/FONTS/ поэтому в большинстве случаев наличие этого файла в папке FONTS совершенно не обязательно. Но иногда, что бы получить отображение жирности, этот файл можно положить в папку FONTS. Хотя вполне может быть, что жирность не отображается из-за того что используется не соответствующий файл FontRouter.dll и достаточно просто его заменить. Всего есть четыре такие библиотеки. Наиболее часто используют FontRouter.dll весом 28kb и 35kb.
Замена файла FontRouter.dll иногда может вызвать некорректное отображение шрифта. Вместо букв на экране будут отображатся совершено нечитаемые кракозябры

В этом случае поможет только X-plore. Перед экспериментами с шрифтами советую в X-plore отключить поддержку системных шрифтов(то есть в X-plore должениспользоватся его родной шрифт). В случае, если после перезагрузки на экране появится что-то нечитаемое, открываете X-plore и удаляете, или перемещаете в любую другую папку файл FontRouter.dll или FontRouter.ini и перегружаете телефон. Переименовывать эти файлы не советую, так как вполне возможно, что смарт зависнет намертво. Такое некорректное отображение возможно в том случае, если вы используете библиотеку FontRouter.dll весом 28kb при установке шрифта в две папки. Для этого варианта установки желательно использовать FontRouter.dll весом 35kb.
Исключения из правил
Как я уже писал, для нормальной работы шрифта на os8.1 вполне достаточно только библиотеки FontRouter.dll, но бывают случаи когда одной этой библиотеки мало, и приходится использовать ещё и FREETYPE.dll. Попробуйте установить в смарт шрифт из вашего компьютера ArialUnicode MS(22mb). Если при установке использовать только файл FontRouter.dll, то вы получите нечитаемые кракозябры. Для нормальной работы этого шрифта можете скачать файл ARIAL windows.zip отсюда, или добавить в папку FONTS библиотеки AGFAFONTRASTER.dllи FREETYPE.dll.
Тоже самое и с шрифтом
AxmaUNI_ for_N70. Это шрифт GDR, но заставить его работать на N70, я смог только положив в папку с шрифтом файл FREETYPE.dll, хотя для работы GDR шрифтов дополнительные библиотеки не нужны. Вот еще шрифт, который не хочет работать на os8.1 без FREETYPE.dll CODE2000 Uni.
3) FontRouter.ini
По настройке этого файла есть не мало информации, но я всё же немного повторюсь.
Правка метрики шрифта и символов
FixFontMetrics=0
FixCharMetrics=0
В некоторых случаях, когда шрифт обрезается, достаточно эти строки записать в таком виде
FixFontMetrics=1
FixCharMetrics=1
Так же такую запись этих строк можно использовать для нормального ввода текста в UcWeb. Нижняя строка при вводе текста не должна обрезатся, но возможно некорректное отображение шрифта в других программах. Например в Ded и в JbakTaskMan.
Отключение системных шрифтов
Почему то эти настройки совершенно не используются на ветеранских осях. Но иногда просто необходимо отключить системный шрифт. Делается это так:
;DisableFontFile=Z:/System/FONTS/NOSNR60.TTF
;DisableFontFile=Z:/System/FONTS/NSSB60.TTf
;DisableFontFile=Z:/System/FONTS/NSTSB60.TTF
;DisableFontFile=Z:/System/FONTS/S60ZDIGI.ttf
;DisableFontFile=Z:/System/FONTS/Ceurope.gdr
;DisableFontFile=Z:/System/FONTS/Browsereur.gdr
;DisableFontFile=Z:/System/FONTS/CalcEur.gdr
Если хотите поэкспериментировать, то добавте эти строки в свой файл FontRouter.ini и поочередно убирая символ ; из начала строк перегружайте смарт и наблюдайте за изменениями(не забудте заменить слэши)
Настройка карты шрифта
Добавляя различные параметры в строки идущие ниже [FontMap] можно заставить отображатся шрифт по разному:
LatinBold13=*@11:B - добавляется жирность.
LatinBold13=*@11:b - убирается жирность.
LatinBold13=*@11:I - добавляется наклон.
LatinBold13=*@11:i - убирается наклон.
LatinBold13=*@11:A - используется сглаживание
LatinBold13=*@11:a - не используется сглаживание
LatinBold13=*@11:W1 - увеличивает расстояние между символами
LatinBold13=*@11:W-1 - уменьшается расстояние между символами
LatinBold13=*@11:Y1 - поднимается шрифт.
LatinBold13=*@11:Y-1 - опускается шрифт.
LatinBold13=*@11:L1 - увеличивается расстояние между строками
LatinBold13=*@11:L-1 - уменьшается расстояние между строками
LatinBold13=*@11:C110 - изменение прозрачности в процентах
LatinBold13=*@11:Z110 - изменение размера в процентах
Изменяя число идущее после собаки можно изменить размер шрифта.
Карта шрифта
Ниже приведу список строк, которые обязательно должны быть в стандартном файле FontRouter.ini на os8.1. Отсутствие, какой то из строк не отразится на работе смарта. Это чревато только тем, что в какой то из программ, в которой используется отсутствующая строка, будет отображатся не сторонний, а системный шрифт:
LatinBold12=*@12
LatinBold13=*@13
LatinBold17=*@17
LatinBold19=*@19
LatinPlain12=*@12
font17=*@17
Alpi12=*@12
Albi12=*@12
Alp13=*@13
Alpi13=*@13
Albi13=*@13
alp17=*@17
Alb17b=*@17
albi17b=*@17
alpi17=*@17
Aco13=*@13
Aco21=*@21
Acalc21=*@21
Acb14=*@14
Acb30=*@30
Acp5=*@5
Увидеть все эти строки можно в Qreader, Yedit, OfficeSuite или FontViewer. Эти программы так же можно использовать для определения внутреннего имени стороннего шрифта. Об этом чуть ниже.
Так же желательно что бы в карте шрифтов были прописаны такие строки
CombinedChinesePlain12=*@12
CombinedChinesePlain16=*@16
Дело в том, что во многих программах задано использование этих шрифтов. И соответственно, как я уже писал выше, если они не будут прописаны в FontRouter.ini, в этих программах вы получите отображение стандартного шрифта.
Сокращенный вариант FontRouter.ini
Если вы используете один сторонний шрифт, можно использовать FontRouter.ini такого вида
[Global]
Enable=1
NativeFont=0
LogLevel=0
ForceAntiAliased=4
FixFontMetrics=0
FixCharMetrics=0
Chroma=100
ZoomRatio=105
ZoomMinSize=0
ZoomMaxSize=48
ExtraFontFile=/Data/FONTS/*.*
;**************
[FontMap]
*=*
=*

В большинстве программ с таким ini не будет ни каких проблем. Но если у вас стоит MobileAgent, который как впрочем почти все программы от Jbak, не очень корректно

работает со сторонними шрифтами, вам надо будет дописать в ini одну из этих строк:
LatinBold12=*@12
или
LatinPlain12=*@12
Используемая строка зависит от настроек шрифта в самом MobileAgent.
Если вы активно юзаете OfficeSuite, то советую дописать ещё и эту строчку:
DisableFontFile=Z:/System/FONTS/Ceurope.gdr. Добавив эту строку вы получите нормально работающее масштабирование в OfficeSuite. (! при отключении шрифта Ceurope.gdr могут возникнуть проблемы у тех кто пользуется играми N_GAGE. Такими как Asphalt2, SystemRush и другими.)
В итоге FontRouter.ini примет такой вид:
[Global]
Enable=1
NativeFont=0
LogLevel=0
ForceAntiAliased=4
FixFontMetrics=0
FixCharMetrics=0
Chroma=100
ZoomRatio=105
ZoomMinSize=0
ZoomMaxSize=48
DisableFontFile=Z:/System/FONTS/Ceurope.gdr
ExtraFontFile=/Data/FONTS/*.*
;**************
[FontMap]
LatinBold12=*@11
LatinPlain12=*@11
*=*
=*

Настраивать шрифт с таким ini, можно добавляя в строку *=* параметры о которых я писал выше. Где то так:
*=*:B:I:Y1
4) Определение шрифта используемого программой
Вообще то это дело хлопотное, и не всегда точно можно определить шрифт, который используется. Делать это можно двумя способами. И чаще всего приходится использовать оба.
Определение и замена шрифтов используемых программой в файлах app, dll, pyc
Используемые шрифты могут быть прописаны в файлах программы: app, dll, pyc...Открываем эти файлы с помощью Zntxhan, или MobileHex и ищем ресурсы с названиями шрифтов.
Зная какие шрифты использует программа, можно назначить ей для использования какой то определенный шрифт. Как я уже писал шрифты
CombinedChinesePlain12=*@12
CombinedChinesePlain16=*@16
используются многими программами. Например MobileHex, ADOBEREADER, Quickoffice, ThemeEdit, Zntxhan, TTPod...И вполне может получится, что настроив эти строки для одной программы, в другой мы получим некорректное отображение шрифта. Что бы этого избежать, в APP, или PYC файле мы изменяем прописанный шрифт. Например для MobileHex, можно заменить строки
CombinedChinesePlain12
CombinedChinesePlain16
на
MobileHex12
MobileHex16
Добавив эти строки в файл FontRouter.ini:
MobileHex12]=*@12
MobileHex16=*@16
можно настроить шрифт именно для MobileHex. Аналогичную замену можно делать для многих программ. Например в ImageDesigner. В файле config.ini записываем строки:
menu_font =
status_font =
в таком виде:
menu_font = ImageDesigner22
status_font = ImageDesigner21
Добавляем в FontRouter.ini:
ImageDesigner22=*@12
ImageDesigner21=*@11
и настраиваем шрифты для ImageDesigner.
( Для тех кто в танке: имена шрифтов:
MobileHex12
MobileHex16
ImageDesigner22
ImageDesigner21

взяты для примера. Можно задать любое название шрифта.)
Если вы хотите что бы в программе использовался какой то другой шрифт, то кладете в папку FONTS нужный вам файл TTF, и вместо звездочек вписываете внутреннее имя этого шрифта
MobileHex12=Tahoma@12
MobileHex16=Tahoma@16
ImageDesigner22=arial@11
ImageDesigner21=arial@12

(Tahoma и arial внутренние имена шрифтов).
FontRouter.log
Определить используемые программой шрифты можно с помощью FontRouter.log. Для этого создаем папку C:/Logs/FontRouter. В FontRouter.ini должна быть строка LogLevel=4 Теперь вся информация об используемых шрифтах будет записыватся в файл FontRouter.log . Но ее будет, так много что разобратся будет довольно сложно. Я делаю так. На одной панеле Griffon выбираю папку C:/Logs/FontRouter1, на второй - APP файл нужной программы. Переименовываю FontRouter1 в FontRouter, перехожу на вторую панель и кликаю на APPфайл. В этом случае создается FontRouter.log в котором прописаны шрифты только интересующей меня программы.
5) Внутреннее имя шрифта
Внутреннее имя шрифта это не то же самое, что и название файла. Иногда они совпадают, но в большинстве случаев отличаются. Если вы используете один сторонний шрифт то знать это имя вам совершенно не обязательно. Вместо него можно использовать символ *. Вот так:
LatinBold13=*@11
Но, если вы используете несколько шрифтов, то знать внутреннее имя шрифта необходимо. Для определения внутреннего имени шрифта, как я уже писал, можно использовать Qreader, Yedit, OfficeSuite. Открываете программу, и ищете настройки шрифта. Там и будут внутренние имена ваших шрифтов. Я для этого использую FontViewer, или смотрю в компе. Просто два клика на файле TTF и можно увидеть имя шрифта.
Что бы не прописывать внутренние имена во всех строках, можно перед названием файла наиболее используемого шрифта поставить единицу, или какой то другой символ, для того что бы этот шрифт стоял первым в папке FONTS. Например так:
1_Tahoma.ttf
Теперь во всех строках, в которых используется этот шрифт, вместо внутреннего имени, можно писать символ *.
6) Opera 8.65
Этот браузер очень криво работает со сторонними шрифтами. Попробуем разобратся в этой проблеме.
Для определения шрифтов используемых в Опере, можно открыть страницу сохраненную в html. Это для того что бы в FontRouter.log не попали лишиие шрифты к которым обращается Опера при открытии. Например открыв Обменник файлами на Dinomvideo, мы видим, что Опера на этой странице обращается к таким строкам в FontRouter.ini
LatinPlain12
Alpi12
Albi12
Alp13
Alpi13
Albi13
alp17
Alb17b
albi17b
alpi17
Aco13
Aco21
Теперь, добавляя поочередно во все строки тэг :I, можно узнать в каком месте, какой шрифт использует Опера.
Записываем строку в FontRouter.ini в таком виде:
Alpi12=*@11:I
перегружаем смарт, и смотрим, где шрифт стал наклонным. После перезагрузки видно, что Опера использует Alpi12 для отображения кириллических символов. Для отображения латинских символов и цифр Опера использует LatinPlain12. Это не есть хорошо, потому что эта строка используется многими программами и настраивая её под Оперу вы во многих программах получите некорректное отображение шрифта.
Теперь в файлах Оперы пытаемся найти где прописаны шрифты, которые она должна использовать по умолчанию. То что нас интересует находим по пути E:/System/LIBS/OprModel.dll. В этом файле есть такие строки
LatinBold12
LatinPlain12
LatinBold13
alp13
alp17
alb17b
alpi12
alpi13
alpi17
albi12
albi13
albi17
alp
alb
Latin
Редактируем файл OprModel.dll. Изменяем в нём первое три строки из списка например так:
OperaBold12
OperaPlain12
OperaBold13
Сохраняем файл и записываем все найденные строки в FontRouter.ini в таком виде:
;**************
;Opera
OperaPlain12=*@12:I
OperaBold12=*@12:I
OperaBold13=*@13:I
Alpi12=*@13:I
alp13=*@11:I
alp17=*@15:I
alb17b=*@13:I
alpi12=*@13:I
alpi13=*@13:I
alpi17=*@13:I
albi12=*@13:I
albi13=*@13:I
albi17=*@13:I
alp=*@13:I
alb=*@13:I
Latin=*@13:I
Если в вашем FontRouter.ini есть какая то из этих строк, удалите её, или добавте в начало строки символ ;.
После перезагрузки смарта в Опере весь текст будет отображатся курсивом. Удаляя поочередно параметр :I из строк смотрим где в Опере шрифт стал прямым. Ну а дальше уже всё простоsmile настраиваем размер, жирность и всё остальное прочее.
Сейчай во всех строках используется символ *. Это значит, что будет использоватся первый по списку шрифт из папки FONTS. Но можно назначить другой шрифт для использования только в Опере. Для этого кладем в папку FONTS файл TTF, который вы хотите использовать и во всех строках заменяем * на внутреннее имя шрифта. Вот так:
OperaPlain12=ComicSansMS@12
OperaBold12=ComicSansMS@12
OperaBold13=ComicSansMS@13
(для тех кто в танке уточняю - можно менять ВО ВСЕХ строках, которые используются в Опере, а не только в этих трех.
ComicSansMS это внутреннее имя моего шрифта. У вас оно конечно же будет другим.)
Можно заменить используемый Оперой шрифт немного прощеsmile без редактирования файла OprModel.dll.
В папку FONTS кладете файл TTF, который будет использоватся только в Опере.
Ищем файл E:/System/Data/Opera/Opera.ini и в самом низу дописываем строки:
[Font.Normal]
Height=16
FaceName=Comic Sans Ms

Повторяю: ComicSansMS в данном случае внутреннее имя вашего шрифта, который вы хотите использовать. Обратите внимание на то, чтобы этот файл TTF в папке FONTS не стоял на первом месте. Потому что в этом случае он будет использоватся системой, как основной.
7) Unicode шрифты
В последнее время на сайте появилось довольно много Unicode шрифтов. Вообще то все TTF шрифты, в независимости от веса и количества символов, являются Unicode шрифтами. Просто для того что бы как то обозначить что в данном шрифте очень много спецсимволов, и то что он поддерживает много языков, в название шрифта добавляется слово Uni, или в описании пишется, что это шрифт Unicode.
Unicode шрифты вполне корректно работают на os8.1, но иногда, после очередной перезагрузки почему то не включаются. С чем это связано не понятно, но очень похоже на какой то конфликт.
Для себя я эту проблему решил так :
файлы шрифтов TTF и FontRouter.ini кладу в E:/Data/FONTS
файлы AGFAFONTRASTER.dll, FontRouter.dll(35kb) и FreeType.dll(97kb) кладу в папку C:/System/FONTS
Пока еще ни разу шрифт не слетал. Я использую Этот шрифт, а он не хочет нормально работать без дополнительных библиотек, поэтому мне приходится ставить файлы AGFAFONTRASTER.dll и FreeType.dll
8) Удаление шрифтов
Для того что бы удалить шрифт достаточно переименовать папку FONTS, в которой лежит файл FontRouter.ini, например в FONTS1. Если папку переименовать не получается, открываем файл FontRouter.ini, и в строке Enable=1 единицу изменяем на ноль. Перегружаем смарт и удаляем шрифт.
=========
=========

P.S. Статья не законченаsmile и вряд ли я её уже закончу так как сменил смарт. Юзеров с ветеранскими смартами осталось мало, но всё же думаю, что статья кому нибудь пригодится.

Ussr1961
2011-01-05T05:10:29Z

Здесь находятся
всего 0. За сутки здесь было 0 человек

Комментарии 13

#13   _Yuri_    

Спасибо конечно за статью, но разбираться в шрифтах не хватает времени, тем более ветераны(мой N70) уходят в прошлое.Установлю лучше проверенный и рабочий BLOD_ttf


0 ответить

#13   pinkoff987    

Всё-таки я добью свой ветеран! wink Спасибо, теперь шрифтами займемся.


0 ответить

#13   DALI E50    

Спасибо за статью, очень полезная и познавательная получилась. Лично мне помогла разобраться с моими шрифтами. СПАСИБО!!!


0 ответить

#13   SMART-ZONE    

Хорошая работаsmileМолодецsmile


0 ответить

#13   Angel-iz-Ada    

Нифига себе статья не закончена wink


0 ответить

#13   Ussr1961    

Да всё правильно ты седлалsmile побольше бы таких толковых комментариев
========
Добавил про проблемы с играми в статью


* редактировал(а) Ussr1961 21:53 5 янв 2011

0 ответить

#13   kuharsanek    

Аркадий так я ж и написал "справедливости ради" чтоб те кто пользуется этими играми знали об этом, дабы избежать потом ненужных вопросов.


* редактировал(а) kuharsanek 10:13 5 янв 2011

0 ответить

#13   Ussr1961    

kuharsanek
Поэтому я и написал, что одним шрифтом невозможно заменить семь стандартных.
Тут уж приходится чем то жертвоватьsmile во всех программах не получится добится безпроблемой работы сторонего шрифтаsmile где то обязательно вылезет косяк.


0 ответить

#13   kuharsanek    

Если вы активно юзаете OfficeSuite, то советую дописать ещё и эту строчку:
DisableFontFile=Z:/System/FONTS/Ceurope.gdr. Добавив эту строку вы получите нормально работающее масштабирование в OfficeSuite.


Справедливости ради при отключении стандартного Ceurope.gdr могут возникнуть проблемы у тех кто пользуется играми N_GAGE к примеру Asphalt2, SystemRush и наверно другие, как то столкнулся с этим.


0 ответить

#13   MsDD    

Отличная статья Аркадий! Большое спасибо!


0 ответить

Яндекс.Метрика