Главная » Статьи » Мои статьи |
Сторонние шрифты на Symbian 8.1
Сторонние шрифты на Symbian 8.1 Если вы решили установить сторонний шрифт, то будте готовы к тому, что в некоторых программах он будет работать некорректно. Так же возможны глюки в работе некоторых программ. И обьясняется это чаще всего не тем что шрифт кривой, как иногда можно прочитать в комментариях, а тем что не возможно в полной мере заменить одним сторонним шрифтом все семь стандартных, которые лежат в папке Z:/System/FONTS/. А иногда это можно обьяснить кривизной рук (а точнее не знанием основных правил работы с шрифтами) тех юзеров, которые пишут, что из-за кривого шрифта у них какие то проблемы со смартом. В этой статье попробую поделится своим опытом в работе с шрифтами. Думаю статья будет полезна не только новичкам, но и тем кто давно пользуется смартами. ========= 1) Установка шрифтов ✔ Установка в C:/System/FONTS Почему то когда на форуме задают вопрос: Как правильно установить шрифт? чаще всего отвечают: Ставь в C:/System/FONTS. Но это только один из вариантов установки шрифта. И я бы не сказал, что самый лучший:) Единственным преимуществом этого варианта, есть то, что при установке другой флешки, или при работе телефона без флешки, у вас останется тот шрифт к которому вы привыкли. Но есть и очень серьезный минус: если случится какой то глюк шрифта, то формат почти неизбежен. При таких глюках можно попробывать использовать FONTSRename. Это файл Восстановлене системы, от нашего участника Canth, но я отредактировал его только для работы с шрифтами. Файлы из архива кладем на флешку (через картридер, или другой смарт) по указанным дирректориям и перегружаем смарт. Папки C:/System/FONTS и C:/Data/FONTS должны переименоватся на C:/System/FONTS1 и C:/Data/FONTS1. Если не переименовались - значит вас ждёт формат. Отсюда вывод: Нельзя ставить непроверенные шрифты в тело:) Сначала ставим шрифт на флешку, тестируем, настраиваем и только потом переносим в телефон. ✔ Другие способы установки Для работы шрифтов используются две папки !:/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 и удаляете, или перемещаете в любую другую папку файл 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. В итоге 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 из строк смотрим где в Опере шрифт стал прямым. Ну а дальше уже всё просто:) настраиваем размер, жирность и всё остальное прочее. Сейчай во всех строках используется символ *. Это значит, что будет использоватся первый по списку шрифт из папки FONTS. Но можно назначить другой шрифт для использования только в Опере. Для этого кладем в папку FONTS файл TTF, который вы хотите использовать и во всех строках заменяем * на внутреннее имя шрифта. Вот так: OperaPlain12=Comic Sans MS@12 OperaBold12=Comic Sans MS@12 OperaBold13=Comic Sans MS@13 (для тех кто в танке уточняю - можно менять ВО ВСЕХ строках, которые используются в Опере, а не только в этих трех. Comic Sans MS это внутреннее имя моего шрифта. У вас оно конечно же будет другим.) Можно заменить используемый Оперой шрифт немного проще:) без редактирования файла OprModel.dll. В папку FONTS кладете файл TTF, который будет использоватся только в Опере. Ищем файл E:/System/Data/Opera/Opera.ini и в самом низу дописываем строки: [Font.Normal] Height=16 FaceName=Comic Sans Ms Повторяю: Comic Sans MS в данном случае внутреннее имя вашего шрифта, который вы хотите использовать. Обратите внимание на то, чтобы этот файл 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. Статья не закончена:) и вряд ли я её уже закончу так как сменил смарт. Хотя юзеров с ветеранскими смартами осталось мало, но всё же думаю, что статья кому нибудь пригодится. | |
Просмотров: 6699 | Комментарии: 154 | Рейтинг: 0.0/0 |
Всего комментариев: 1 | ||
| ||