dadv: (Default)
Choose your future ([personal profile] dadv) wrote2010-03-04 07:51 pm
Entry tags:

xpdf и русский текст в закладках (оглавлении)

Наконец-то неумение xpdf отображать что-либо кроме ASCII в PDF Bookmarks (оглавления в PDF часто делаются посредством закладок) замучало меня достаточно, чтобы победить лень и пропатчить его, научив.

Суть проблемы в том, что xpdf не умеет рисовать unicode в закладках. Нашел в сети патч, реализующий это умение средствами Pango и прикрутил к порту, заодно добавив в него возможность менять шрифт закладок. В меню конфигурации порта добавил новую настройку для включения этой фичи, по умолчанию выключенную. При её включении xpdf начинает зависеть от glib2 и pango и рисовать-таки русские оглавления.

По умолчанию он делает это шрифтом "Sans 12", что бы это имя шрифта ни означало в вашей системе. Имя заменяется выставлением переменной окружения XPBKP_FONT (XPdf BookmarK Pango FONT), а размер переменной XPBKP_SIZE, например:

export XPBKP_FONT=Serif
export XPBKP_SIZE=10


Или:

export XPBKP_FONT=Times
export XPBKP_SIZE=8


Применять патч:

cd /usr/ports/graphics/xpdf
fetch http://www.grosbein.net/freebsd/patches/xpdf.diff.gz
gunzip xpdf.diff.gz
patch -p1 < xpdf.diff
make clean config all deinstall install

Если в /etc/make.conf есть настройка WITHOUT_GNOME, она безусловно запрещает сборку с этой фичей.

Патч "грязный" в том смысле, что он предполагает стандартные пути установки glib2 и pango, вместо того чтобы заставлять configure из дистрибутива xpdf определять эти пути динамически через pkg-config -- этот канонический путь потребовал бы от меня лишней работы, которую лениво делать введения зависимости xpdf от autoconf и перегенерации скрипта configure при сборке, что значительно увеличивает время пересборки без особенных выгод. Но патч в таком виде не годится для сабмита в PR.

[identity profile] dkreincarnation.livejournal.com 2011-06-18 03:39 pm (UTC)(link)
Вот спасибо! Все работает!
От меня
Изменение зума Ctrl+скролл

bind ctrl-mousePress4 any zoomIn
bind ctrl-mousePress5 any zoomOut