суббота, 22 сентября 2007 г.

Русификация E17

немного писал об этом ранее, но видимо пришла пора обновить пару-тройку букв сего славного опуса, да и кое-что там уже неактуально.

локализация Е17-го состоит из нескольких этапов:
а) установка Вашей locale,
б) установка шрифта, поддерживающего Вашу locale,
в) пересборка тех "ежей" (файлов edj), которые мешают жить

Теперь в картинках и по пунктам:
а) Configuration Panel -> Language -> Language Settings -> и выставляем свою локаль, что очень важно, поскольку на /etc/X11/xorg.conf Е преспокойно забивает



б) Configuration Panel -> Appearance -> Fonts -> для начала выделяем всё в левом столбце (Shift + left mouse button) и указываем нужный шрифт по аналогии с картинкой (отмечаем для себя, что 17-ый кладёт болт на настройки fontconfig-а для своего интерфейса и EFL программ)


в) не дай Боже у кого-то логин/пасс с кирилицей и стоит Entrance как логин-менеджер - надо сразу рихтовать темы Entrance (http://rootshell.be/~sda00/notes.html), а далее - по обстоятельствам и по потребности.

есть и кое-какие мелочи, что несут кучу несуразиц в корректное отображение текста. во-первых на сентябрь 2007-го года в самом проекте Е с выбором шрифтов имеет место быть бардак. шрифт по умолчанию - Vera - не поддерживает utf-8 (кирилицу в utf-8 если быть более объективным), посему многие ответственные товарищи (спасибо Виктору Кожухарову, как я могу предположить) стали активно продвигать семейство DejaVu, и ноне имеем полный "ужас", вплоть до того, что компоненты одного и того же приложения/библиотеки собраны (в edj файлах) с поддержкой разных шрифтов.

теперь о сокращениях, которые будут использоваться далее:
prefix = каталог установки E17-го (например /opt/e17)
EFL = Enlightenment Foundation Libraries

сведения о используемом шрифте для каждого EFL приложения описываются в .edc файле двумя блоками. первый - глобальный, описывает шрифт и его сокращение (через пробел) для будущего быстрого вызова (// - комментарии):

fonts {
// font: "DejaVuSans.ttf" "Winter";
font: "DejaVuSans.ttf" "CarbonNormal";
// font: "DejaVuSans-Bold.ttf" "WinterBold";
font: "DejaVuSans-Bold.ttf" "CarbonBold";
}


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

text {
text: "Enlightenment";
font: "CarbonBold";
size: 16;
min: 1 1;
align: 0.5 0.5;
}

или

style {
*****
base: "font=CarbonNormal font_size=10 align=center color=#000 style=shadow shadow_color=#ffffff80 wrap=word";
****
}

а самое интересное тут в том, что вывод текста в EFL приложении может осуществляться как с помощью etk/ewl/evas/esmart, так и непосредственно edje (именно как EFL) способен использовать ttf-ку, ежели может до неё "дотянуться" (посмотрите как организована работа со шрифтами у любого модуля! ttf-ка просто "зашивается" в edj файл). и самое обидное - что после апдейтов всё приходится восстанавливать, поэтому я как-то давно уже написал себе скриптик по автоматизации этого процесса (может выложу когда приделаю к нему хоть какой-то дружелюбный интерфейс). в общем пока разработчики не заменят все шрифты на семейство DejaVu - хорошего не будет.

красивых и лёгких рецептов по русификации всего и вся из E17-го пока не придумал (есть пара намёток, но сырые). если кто имеет желание мне в этом помочь - буду только рад.

что же делать если появились "кракозяблики"? - смотреть кто их "родитель" (искать тему/стиль "родителя" - edj файл - и пересобирать его с заменой шрифта), смотреть на каких EFL построен "родитель" и вбивать нужный шрифт в эти EFL. если есть вагон свободного времени и желание "покрыть свет матом" - идём в $prefix и выкидываем "Верочку" (шрифт Vera) к свиньям собачьим.

рассмотрим на примере Emphasis - очередной "морды" к mpd. прыгаем в $prefix/share/emphasis и радостно обнаруживаем, что сие чудо пользует glade интерфейс без намёка на шрифт:

[sda@black emphasis]$ pwd
/opt/e17/share/emphasis

[sda@black emphasis]$ l
total 84
drwxr-xr-x 3 sda root 4096 2007-09-20 11:28 .
drwxr-xr-x 37 sda root 4096 2007-09-20 11:44 ..
-rw-r--r-- 1 sda root 12378 2007-09-20 11:28 config.glade
-rw-r--r-- 1 sda root 49603 2007-09-20 11:28 emphasis.glade
drwxr-xr-x 2 sda root 4096 2007-09-20 11:28 images


ок. отсосали - требуем долива! прыгаем в каталог с исходниками emphasis и делаем less config.log, роясь в поисках или прямого указания на EFL или в параметрах использования $PKG_CONFIG, повезло!

configure:21501: $PKG_CONFIG --exists --print-errors "
ecore >= 0.9.9.022
ecore-config
etk >= 0.1.0.002
enhance >= 0.0.1
libxml-2.0 >= 2.6.0
libmpd >= 0.12.0
"


ничего удивительного. прыгаем в $prefix/share/etk/themes
и перекраиваем default.edj:

$ edje_decc default.edj
$ cd default
$ rm ./*.ttf

потом копируем туда свой любимый шрифт (в нашем примере - DejaVu) и рихтуем default.edc:

fonts {
font: "DejaVuSans.ttf" "DejaVuSans";
font: "DejaVuSans-Bold.ttf" "DejaVuSans-Bold";
font: "DejaVuSans-Oblique.ttf" "DejaVuSans-Oblique";
font: "DejaVuSans-BoldOblique.ttf" "DejaVuSans-BoldObliqu";
font: "DejaVuSansMono.ttf" "DejaVuSansMono";
}


вот вроде и управились. собираем edj обратно и заменяем исходник (можно результат нашей рихтовки переименовать в допустим default_etk_my.edj, положить в ~/.e/etk/themes и, используя etk_prefs, выбрать к всеобщему удовольствию). оцениваем результаты:

13 комментариев:

Анонимный комментирует...

Извините, что от анонимуса :) Меня Nicke1odeoN звать.
Здравствуйте, уважаемый sda00!
Хочу поблагодарить за хорошие познавательные статьи про E17.
У меня Слака12, поставил это пакетом, собирал какой-то неизвестный мастер :) Собрано на первый взгляд очень хорошо, ничего не глючит, всё нормально.
Начал русифицировать. ./build.sh матерится ошибкой: edje_cc: Error. unable to load image... Missing PNG modules...
Битый час маюсь, скомпилил даже из сырцов libpng12-dev. Расковырял пакет дебиана, переинсталил. Не берет. В итоге склоняюсь к тому, что Evas без png... Но если он был компилен без PNG, то как собирали остальное? =/
Выложите пожалуйста перекомпиленную тему default =)
Со мной также можно связаться по емелe NickelodeoN $sabaka mail.ru

sda комментирует...

NickelodeoN

приветствую,
ответ ушёл на e-mail.

Анонимный комментирует...

Nicke1odeoN:
sda, спасибо за ответ.
Уточняю, по поводу своих действий:
Хочу собрать тему default.edj с нормальным шрифтом
Вот весь листинг ошибки:
root@laptop[/usr/share/enlightenment/data/themes/default]# ./build.sh
edje_cc: Error. unable to load image for image "e17_reflection_shadow_overlay.png" part entry to default.edj. Missing PNG or JPEG loader modules for Evas or file does not exist, or is not readable.

Не знаю на что грешить и куда копать.
И таки, если у Вас имеется русифицированная тема default.edj я думаю, её стоит выложить, бо полезно будет всем новичкам, а так же можно отправить Растерману её, дабы положил рядом с темой компиленой с Vera-font.

sda комментирует...

у Вас в
/usr/share/enlightenment/data/themes/default
есть файл:
e17_sm_reflection_shadow_overlay.png
просто сделайте симлинк:

ln -s \
./e17_sm_reflection_shadow_overlay.png \
./e17_reflection_shadow_overlay.png

после чего всё спокойно соберётся. Причина данной ошибки по-видимому кроется в недрах edje_cc/edje_decc (возможно, что в glibc) по-разному обрабатывающим макросы edj файлов.

"Беда" из этой же серии очень сильно мешает при сборке на той же OpenBSD например. Но, по сравнению с прочими "нюансами", - мелочи.

Опять же нет смысла выкладывать несколько тем default с разными шрифтами - надо imo - отказываться от Vera глобально, чего я своими багрепортами и добиваюсь. Пользуйте мои темы или Darkness Виктора Кожухарова, где DejaVu используется как шрифт по умолчанию.

Удачи.

Анонимный комментирует...

АААА!!! Урааа!!
Спасибо огромное, собралося!!
А по поводу Vera.
1. Разумеется, это не дело, надо его исключать, но сыр в том, что разработчики, как я понял, не спешат с этим.
2. Мне может показалось, но Vera, при всем том, сколько она мне хлопот доставила - выглядит симпотичнее, нежели DejaVu, сейчас буду рассматривать детальнее, скорее всего действительно показалось :)

То есть один из компроммисов - сделать клоны тем с DejaVu...

Анонимный комментирует...

Товарищи, если вас не затруднит, вышлите русифицированную дефолтную тему (если кто-нибудь её русифицировал, конечно =) на skiminok1986@yandex.ru. Либо подскажите что я делаю не так и как надо делать :)
Итак: в файле default.edc поменял шрифты:
fonts {
font: "DejaVuSans.ttf" "Edje-Vera";
font: "DejaVuSans-Bold.ttf" "Edje-Vera-Bold";
}
Я так понимаю, что потом к шрифтам в инструкции вызова шрифтов идёт обращение к нему по сокращению. Т.к. я оставил сокращения стандартными, то все шрифты должны были поменяться на DejaVuSans.

Но, собрав тему, я увидел всё те же квадратики.

Ответ, пожалуйста, вышлите на мыло.

sukiminoku-san

basilz комментирует...

Причина данной ошибки по-видимому кроется в недрах edje_cc/edje_decc (возможно, что в glibc) по-разному обрабатывающим макросы edj файлов.
Скорее, причина кроется в том, что в build.sh нужно передавать дефайн в стиле gcc вроде -DE17_PROFILE=MEDIUM_PC

sda комментирует...

basilz
мне кажется, что вы заблуждаетесь. "профили" компа как таковые явно используются только в дефолтной теме Entrance и сам механизм создания "профилей" для PC пока декларируется как "not usable". на обработку макросов edje это не влияет и не должно влиять в принципе.

basilz комментирует...

sda
Если мы не об одном и том же, то скорее ошибаюсь )
Вчера пробовал пересобирать default.edj и столкнулся с тем, что при сборке edje_cc не находит некоторые файлы с картинками. Тогда я внимательно посмотрел в файл default.edc и увидел там кучу #ifdef-#endif для условной компиляции. Добавил в командную строку -DE17_PROFILE=MEDIUM_PC , и тема собралась без запинки.

sda комментирует...

Добавил в командную строку -DE17_PROFILE=MEDIUM_PC , и тема собралась без запинки.

видимо говорим об одном и том же. сборка дефолтной темы рассматривается лишь как часть сборки Е17-го. т.е. скрипт build.sh (равно как и макрос default.edc) не предусматривают самостоятельной сборки означенной темы, что подразумевает как передачу дополнительных параметров, так и некую "кривизну" макроса default.edc (или же отсутствие инструкций в edje_cc для обработки подобных случаев). imho.

Анонимный комментирует...

интересно, а сильно сложно доработать шрифт Вера, чтобы он умел по русски писать?)
п.с наверно глупость написал)

--
tibalt

Abu комментирует...

Наблюдаю за е17 уже, пожалуй, третий год. Вначале было все достаточно прекрасно кроме создания иконок. Но зато были красивые модули (гаджеты? постоянно путаюсь ((: ) которые было возможно размещать по рабочему столу.

Потом, где-то через год, были дебиановые пакеты из которых все работало, только вот все гаджеты-модули поимели привязку к одной панели и меня не устраивло лишь то, как глючно изображался Korgac из Kontacta - пытался открыть отдельное окошко при запуске, открывал и получался артефакт на столе в виде малюсенгького окошка с кнопкой закрытия. И шрифты была возможность выбирать.

Теперь же - шрифты я воткнул грубой силой, некоторые приложения самого e17 работают под Wmaker'ом, а в родной среде запускаться отказываются, с иконками в iBar'e тоже непонятно - на что ни нажму - e17 рушится.

Буду ждать 4-го года ((: и дальнейшего развития проекта.

sda комментирует...

Abu - приветствую!

Что-то не так в Вашем Датском королевстве :). Пакеты для Дебиана вроде как можно собирать прям из cvs дерева. Кто-то из мэйнтейнеров Debian-а этим занимается не первый год. С недавних (очень недавних) пор модули опять можно раскидывать по столу :). Появился tiling. Что именно у Вас падает? Если не трудно - то мне на мыло (sda00NO_SPAM_@_ALLOWEDhimki.net).

Или же (простите мне моё хвастовство) попробуйте OpenSUSE и мои репозитории. О проблемах с Е забудуте (надеюсь).