Последнии версиия FPC не дружит с Lazarus

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Последнии версиия FPC не дружит с Lazarus

Сообщение alexs » 07.07.2006 14:03:21

беру текущую версию FPC из SVN компилирю ею Lazarus
в итоге не открываются существующие проекты
если брать версию FPC где-то месячной давности - то всё нормально
это у меня одного так?
и ещё
посоветуйте как из под linux заставить работать нормально модуль printers - зараза не хочет по русски печатать
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Sniper » 07.07.2006 21:08:03

Написано же:
Vincent writes "The Lazarus team is glad to announce the 0.9.16 release. This release is based on fpc 2.0.2."

Этим, как говорится, всё сказано.
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Re: Последнии версиия FPC не дружит с Lazarus

Сообщение debi12345 » 10.07.2006 21:37:43

alexs писал(а):б
посоветуйте как из под linux заставить работать нормально модуль printers - зараза не хочет по русски печатать

Прошу прощения за большой тест.
Вот кусок описания от MSEgui, авось чем-то поможет и в случае Лазаря :

--------

Проверка системы на наличие библиотек, используемых MSEgui ,
в контексте нашего проекта

/usr/lib/libXft.so –> если хотим антиалиасинг, автозамену и т.п. шрифтов – короче, весь сервис библотеки FreeType

Примечание:
Чтобы вся эта красота реально заработала – нужно установить TTF -шрифты, идеально подходят FreeSans , FreeSerif и FreeMono (пакет “ttf-freefont” )

/usr/lib/libXrender.so -> нужна, если будем использовать картинки, цветовые градиенты и т.п. ( MSEide использует таковые – например, для рисования градиентов в палитре цветов )

/usr/lib/libpq.so -> через нее будем работать с PosgterSQL -сервером

/usr/X11R6/lib/libX11.so и /usr/X11R6/lib/libICE.so –> их наличие обязательно (они 100% есть, если нормально работают Иксы ) !

Если перечисленных библиотек нет, то :
1. установите соответствующие пакеты;
2. создайте символические линки от более детализированых имен файлов, например:
# ln –s /usr/lib/libXrender.so.1 /usr/lib/libXrender.so

и от имени “root” выполните команду “ldconfig”.

-----

Проверка системы на наличие шрифтов, используемых MSEgui

Так как MSEgui внутри использует юникод, он может работать в любой национальной среде ( см. системную переменную “ LANG ” ), при условии, что в системе установлены шрифты с кодировкой ISO 10646-1, в которых представлены символы национального алфавита системы ( см. первую, до точки, часть значения “ LANG ”, у меня это “ ru_RU ” ). Опять-таки, проще всего этого добиться, установив те же “ ttf-freefonts ”.

Для подстраховки по части кодировок лучше импортировать эти шрифты из сервера шрифтов, так как этот сервер умеет на лету генерировать нужные кодировки:
* установить пакет « xfstt » ( сервер TrueType-шрифтов )
* в секцию ( /etc/X11/XF86Config-4: Files ) дописать импорт шрифтов из « xfstt » :
FontPath “unix/:7101”
* сказать серверу XFSTT , какие кодировки генерировать, для чего в /etc/init.d/xfstt , в конце секции анализа конфигурации, вписать строку :
userarg=”$userarg --encoding iso8859-1,koi8-r,windows-1251,iso10646-1,symbol-0”
* перезапустить «xfstt» ( /etc/init.d/xfstt restart ), а затем и все X11- сессии (Ctrl+Alt+BackSpace в каждой из сессий )
Примечание:
использование "$userarg" - лишь один из способов ( использованый в Debian Linux ) для передачи параметров команжной строки в запускаемый сервер ( демон ) "xfstt", в другом Linux-дистрибутиве может понадобиться другой способ

параметр "--encoding" задает, шрифты в каких кодировках сгенерировать, причем каждый шрифт занимает память, поэтому будем минималистами - зададим минимально необходимый набор кодировок для отображения стандартных X11-программ ( iso8859-1 ), стандартно русифицированных программ ( koi8-r), MSEgui-программ ( iso10646-1 ) и символов вроде стрелок, курсоров и и т.п. ( symbol-0 ); кодировка "windows-1251" здесь - на случай чтения русских MSWord-файлов в среде OpenOffice/StarOffice/KWord

« xfstt » при запуске ищет TrueType-шрифты в каталоге и подкаталогах “/usr/share/fonts/truetype/*” - находит, строит кэш, генерирует кодировки и подгружает - независимо от базовой конфигурации X11.

Поэтому добавить другой комплект TTF-шрифтов просто – скопируйте, например, шрифты от MicroSoft – в каталог “/usr/share/fonts/truetype/microsoft/”, и выполните в нем команды «mkfontscale `pwd`», «mkfontdir `pwd`» и «fс-cache `pwd`» (команды, может - даже и не нужны ).

Прямая ссылка на “/usr/share/fonts/truetype/ ”( и подкаталоги ) в (/etc/X11/XF86Config-4: Files ) может быть удалена.

Несколько слов о печати

В Линуксе для печати из GUI -приложений используeтся GhostScript – просто потому, что он умеет переводить полученные задания в формате PS на «язык» конкретного принтера (не обязательно поддерживающего PostScript ).

Чтобы использовать одни и те же шрифты для отображения и печати – нужно сказать PostScript , где находятся отображаемые шрифты.

Команда печати выглядит примерно так:
сat <file_to_print>.ps | \
gs -I/usr/share/fonts/truetype/ -q -sDEVICE=epson -dBATCH -dNOPAUSE -dSAFER \
-sOutputFile=- - | lpr -Plp

где:

"сat <file_to_print>.ps" – может быть заменено потоком данных для распечатки (в формате PS )

"-I/usr/share/fonts/truetype/" - нужно, если в файле печати есть ссылки на шрифты из этого каталога (и его подкаталогов)

"-sDEVICE=epson" – переводить в формат для распечатки на 9-игольчатом принтере системы команд “Epson”

( список поддерживаемых принтеров можно узнать командой «gs -- help», см. «Available devices» )

"lp -Plp" – печатать через LPD/LPRng-спулер, у которого использовать очередь печати “lp”, которая, кстати не должна делать прогон страницы ( PS -файл обычно содержит такую команду)

Местоположение TrueType -шрифтов можно также указать через “~/.bash_profile”, добавив строку:
export GS_FONTPATH=/usr/share/fonts/truetype/: $GS_FONTPATH

Кстати , PostScript сам просканирует подкаталоги «/usr/share/fonts/truetype/*» в поиске шрифтов .

Но просто информации о каталоге недостаточно, чтобы PostScript смог использовать TTF -шрифты, ведь он не понимает их имена. Придется использовать алиасы – см. файл
/usr/share/gs[-afpl,-esp]/<ver>/lib/Fontmap.GS

Можно добавить все видимые TTF -шрифты, и переназначить ( Helvetica / Times / Couries ) PS -шрифты на FreeFonts -* :
#!/bin/sh

SHORT=1
xfstt --gslist --sync | awk -v OPT=$SHORT '{
split($0,A,"\)[ \t]+\(/");
if ( /microsoft/) {
ff="MS"
} else {
ff="TTF"
}
if ( A[1] ~ / /) {
hasspace= 1
} else {
hasspace= 0
}
n2=A[1]")";
n1=A[1];
if ( hasspace == 1) {
gsub(" ","-",n1);
}
if ( OPT == 1 ) {
n= split(A[2],B,"/");
A[2]="("B[n];
} else {
A[2]="(/"A[2];
}
gsub("\(","",n1);
n11="/"ff"-"n1;
n12="/"n1;
gsub(/[ \t]+;[ \t]*$/,"\t;",A[2]);
print n11"\t"A[2];
print n12"\t"n11"\t;";
if ( hasspace == 1) {
print n2"\t"n11"\t;";
}
# --------------------
if ( n11 == "/TTF-Free-Sans" ) {
print "/Helvetica\t"n11"\t;";
}
if ( n11 == "/TTF-Free-Sans-Italic" ) {
print "/Helvetica-Oblique\t"n11"\t;";
}
if ( n11 == "/TTF-Free-Sans-Bold" ) {
print "/Helvetica-Bold\t"n11"\t;";
}
if ( n11 == "/TTF-Free-Sans-Bold-Italic" ) {
print "/Helvetica-BoldOblique\t"n11"\t;";
}
# --------------------
if ( n11 == "/TTF-Free-Monospaced" ) {
print "/Courier\t"n11"\t;";
}
if ( n11 == "/TTF-Free-Monospaced-Italic" ) {
print "/Courier-Oblique\t"n11"\t;";
}
if ( n11 == "/TTF-Free-Monospaced-Bold" ) {
print "/Courier-Bold\t"n11"\t;";
}
if ( n11 == "/TTF-Free-Monospaced-Bold-Italic" ) {
print "/Courier-BoldOblique\t"n11"\t;";
}
# --------------------
if ( n11 == "/TTF-Free-Serif" ) {
print "/Times-Roman\t"n11"\t;";
print "/Times\t"n11"\t;";
}
if ( n11 == "/TTF-Free-Serif-Italic" ) {
print "/Times-Italic\t"n11"\t;";
}
if ( n11 == "/TTF-Free-Serif-Bold" ) {
print "/Times-Bold\t"n11"\t;";
}
if ( n11 == "/TTF-Free-Serif-Bold-Italic" ) {
print "/Times-BoldItalic\t"n11"\t;";
}
# --------------------
}' > ./Fontmap.GS-free

exit 0
Или добавить все видимые TTF- шрифты , и преназначить (Helvetica/Times/Couries) PS- шрифты на шрифты от MicroSoft ( если таковые скопированы в ‘/usr/share/fonts/truetype/<MS-каталог>/' ):
#!/bin/sh

SHORT=1
xfstt --gslist --sync | awk -v OPT=$SHORT '{
split($0,A,"\)[ \t]+\(/");
if ( /microsoft/) {
ff="MS"
} else {
ff="TTF"
}
if ( A[1] ~ / /) {
hasspace= 1
} else {
hasspace= 0
}
n2=A[1]")";
n1=A[1];
if ( hasspace == 1) {
gsub(" ","-",n1);
}
if ( OPT == 1 ) {
n= split(A[2],B,"/");
A[2]="("B[n];
} else {
A[2]="(/"A[2];
}
gsub("\(","",n1);
n11="/"ff"-"n1;
n12="/"n1;
gsub(/[ \t]+;[ \t]*$/,"\t;",A[2]);
print n11"\t(/"A[2];
print n12"\t"n11"\t;";
if ( hasspace == 1) {
print n2"\t"n11"\t;";
}
# --------------------
if ( n11 == "/MS-Arial" ) {
print "/Helvetica\t"n11"\t;";
}
if ( n11 == "/MS-Arial-Italic" ) {
print "/Helvetica-Oblique\t"n11"\t;";
}
if ( n11 == "/MS-Arial-Bold" ) {
print "/Helvetica-Bold\t"n11"\t;";
}
if ( n11 == "/MS-Arial-Bold-Italic" ) {
print "/Helvetica-BoldOblique\t"n11"\t;";
}
# --------------------
if ( n11 == "/MS-Courier-New" ) {
print "/Courier\t"n11"\t;";
}
if ( n11 == "/MS-Courier-New-Italic" ) {
print "/Courier-Oblique\t"n11"\t;";
}
if ( n11 == "/MS-Courier-New-Bold" ) {
print "/Courier-Bold\t"n11"\t;";
}
if ( n11 == "/MS-Courier-New-Bold-Italic" ) {
print "/Courier-BoldOblique\t"n11"\t;";
}
# --------------------
if ( n11 == "/MS-Times-New-Roman" ) {
print "/Times-Roman\t"n11"\t;";
print "/Times\t"n11"\t;";
}
if ( n11 == "/MS-Times-New-Roman-Italic" ) {
print "/Times-Italic\t"n11"\t;";
}
if ( n11 == "/MS-Times-New-Roman-Bold" ) {
print "/Times-Bold\t"n11"\t;";
}
if ( n11 == "/MS-Times-New-Roman-Bold-Italic" ) {
print "/Times-BoldItalic\t"n11"\t;";
}
# --------------------
}' > ./Fontmap.GS-ms

exit 0
Вышеприведенные шрифты генерируют в каталоге запуска файлы « Fontmap . GS -*». Теперь остается просто вставить содержимое соответсвующего файла в конец «/usr/share/gs[-afpl,-esp]/<ver>/lib/Fontmap.GS». А можно даже полностью заменить содержимое этого файла (если шрифты от прежнего содержимого нигде не используются ). Правило – если алиасы персекаются (переопределяются), то задействуется самая последняя запись.

Опять-таки – почему использовать в PostScript не привычные PS ( Type 1 )–шрифты, а именно TrueType ? Просто потому, что TTF -шрифты содержат в себе начертания символов практически всех европейских языков, нужно лишь сказать «используй такой-то код для начертания такой-то буквы» . Задания печати ( в формате PS ), генерируемые MSEgui компонентом «tpostscriptprinter», содержат в себе таблицы перекодировки – что позволяет распечатать практически любые ( хоть китайские – лишь бы были в шрифте ! ) символы, вне зависимости от системной кодировки.

--------
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 86

Рейтинг@Mail.ru