import paps-0.7.1-4.el9
This commit is contained in:
commit
1fa265d24a
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
SOURCES/paps-0.6.8.tar.gz
|
||||||
|
SOURCES/paps-0.7.1.tar.gz
|
2
.paps.metadata
Normal file
2
.paps.metadata
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
83646b0de89deb8321f260c2c5a665bc7c8f5928 SOURCES/paps-0.6.8.tar.gz
|
||||||
|
2454b902540afe5d653fc5f1eea743d037ce3c98 SOURCES/paps-0.7.1.tar.gz
|
24
SOURCES/29-paps.conf
Normal file
24
SOURCES/29-paps.conf
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||||
|
<fontconfig>
|
||||||
|
|
||||||
|
<match target="pattern">
|
||||||
|
<test name="prgname" compare="eq">
|
||||||
|
<string>paps</string>
|
||||||
|
</test>
|
||||||
|
<edit name="scalable" mode="assign">
|
||||||
|
<bool>true</bool>
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
|
||||||
|
<match target="pattern">
|
||||||
|
<test name="prgname" compare="eq">
|
||||||
|
<string>texttopaps</string>
|
||||||
|
</test>
|
||||||
|
<edit name="scalable" mode="assign">
|
||||||
|
<bool>true</bool>
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
|
||||||
|
</fontconfig>
|
||||||
|
|
82
SOURCES/paps-0.6.6-lcnumeric.patch
Normal file
82
SOURCES/paps-0.6.6-lcnumeric.patch
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
diff -ruN paps-0.6.6.orig/src/libpaps.c paps-0.6.6/src/libpaps.c
|
||||||
|
--- paps-0.6.6.orig/src/libpaps.c 2007-03-27 20:25:00.000000000 +0900
|
||||||
|
+++ paps-0.6.6/src/libpaps.c 2007-03-27 20:31:15.000000000 +0900
|
||||||
|
@@ -28,6 +28,7 @@
|
||||||
|
#include <freetype/ftglyph.h>
|
||||||
|
#include <freetype/ftoutln.h>
|
||||||
|
#include <errno.h>
|
||||||
|
+#include <locale.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
@@ -263,7 +264,7 @@
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Outline support */
|
||||||
|
- g_string_append_printf(paps->header,
|
||||||
|
+ paps_string_append_printf(paps->header,
|
||||||
|
"/conicto {\n"
|
||||||
|
" /to_y exch def\n"
|
||||||
|
" /to_x exch def\n"
|
||||||
|
@@ -691,3 +692,28 @@
|
||||||
|
return points * 1.0 / 72 * PAPS_DPI * PANGO_SCALE;
|
||||||
|
}
|
||||||
|
|
||||||
|
+void
|
||||||
|
+paps_string_append_printf(GString *string,
|
||||||
|
+ const gchar *fmt,
|
||||||
|
+ ...)
|
||||||
|
+{
|
||||||
|
+ gchar *buffer, *lc_numeric;
|
||||||
|
+ gint length;
|
||||||
|
+ va_list args;
|
||||||
|
+
|
||||||
|
+ va_start(args, fmt);
|
||||||
|
+
|
||||||
|
+ lc_numeric = g_strdup(setlocale(LC_NUMERIC, NULL));
|
||||||
|
+ setlocale(LC_NUMERIC, "C");
|
||||||
|
+
|
||||||
|
+ length = g_vasprintf(&buffer, fmt, args);
|
||||||
|
+ g_string_append_len(string, buffer, length);
|
||||||
|
+
|
||||||
|
+ setlocale(LC_NUMERIC, lc_numeric);
|
||||||
|
+
|
||||||
|
+ g_free(buffer);
|
||||||
|
+ g_free(lc_numeric);
|
||||||
|
+
|
||||||
|
+ va_end(args);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
diff -ruN paps-0.6.6.orig/src/libpaps.h paps-0.6.6/src/libpaps.h
|
||||||
|
--- paps-0.6.6.orig/src/libpaps.h 2007-03-27 20:25:00.000000000 +0900
|
||||||
|
+++ paps-0.6.6/src/libpaps.h 2007-03-27 20:31:02.000000000 +0900
|
||||||
|
@@ -124,4 +124,8 @@
|
||||||
|
*/
|
||||||
|
double paps_postscript_points_to_pango(double points);
|
||||||
|
|
||||||
|
+void paps_string_append_printf(GString *string,
|
||||||
|
+ const gchar *fmt,
|
||||||
|
+ ...) G_GNUC_PRINTF (2, 3);
|
||||||
|
+
|
||||||
|
#endif /* LIBPAPS */
|
||||||
|
diff -ruN paps-0.6.6.orig/src/paps.c paps-0.6.6/src/paps.c
|
||||||
|
--- paps-0.6.6.orig/src/paps.c 2007-03-27 20:25:00.000000000 +0900
|
||||||
|
+++ paps-0.6.6/src/paps.c 2007-03-27 20:31:33.000000000 +0900
|
||||||
|
@@ -992,7 +992,7 @@
|
||||||
|
y_top = page_layout->page_height - page_layout->top_margin - page_layout->header_height - page_layout->header_sep / 2;
|
||||||
|
y_bot = page_layout->bottom_margin - page_layout->footer_height;
|
||||||
|
|
||||||
|
- g_string_append_printf(ps_pages_string,
|
||||||
|
+ paps_string_append_printf(ps_pages_string,
|
||||||
|
"%f %f moveto %f %f lineto 0 setlinewidth stroke\n",
|
||||||
|
x_pos, y_top,
|
||||||
|
x_pos, y_bot);
|
||||||
|
@@ -1154,7 +1154,7 @@
|
||||||
|
|
||||||
|
/* header separator */
|
||||||
|
line_pos = page_layout->page_height - page_layout->top_margin - page_layout->header_height - page_layout->header_sep / 2;
|
||||||
|
- g_string_append_printf(ps_pages_string,
|
||||||
|
+ paps_string_append_printf(ps_pages_string,
|
||||||
|
"%d %f moveto %d %f lineto 0 setlinewidth stroke\n",
|
||||||
|
page_layout->left_margin, line_pos,
|
||||||
|
page_layout->page_width - page_layout->right_margin, line_pos);
|
35
SOURCES/paps-0.6.8-shared.patch
Normal file
35
SOURCES/paps-0.6.8-shared.patch
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
diff -ruN paps-0.6.8.orig/src/Makefile.am paps-0.6.8/src/Makefile.am
|
||||||
|
--- paps-0.6.8.orig/src/Makefile.am 2006-04-17 16:42:08.000000000 +0900
|
||||||
|
+++ paps-0.6.8/src/Makefile.am 2007-11-16 11:50:07.000000000 +0900
|
||||||
|
@@ -1,15 +1,15 @@
|
||||||
|
man_MANS = paps.1
|
||||||
|
-lib_LIBRARIES = libpaps.a
|
||||||
|
-libpaps_a_SOURCES = libpaps.c
|
||||||
|
-libpaps_a_inc_HEADERS = libpaps.h
|
||||||
|
-libpaps_a_incdir = $(includedir)
|
||||||
|
+lib_LTLIBRARIES = libpaps.la
|
||||||
|
+libpaps_la_SOURCES = libpaps.c
|
||||||
|
+libpapsinc_HEADERS = libpaps.h
|
||||||
|
+libpapsincdir = $(includedir)
|
||||||
|
|
||||||
|
bin_PROGRAMS = paps
|
||||||
|
paps_CFLAGS = -Wall
|
||||||
|
paps_SOURCES = paps.c
|
||||||
|
-paps_LDADD = $(lib_LIBRARIES) $(all_libraries)
|
||||||
|
+paps_LDADD = $(lib_LTLIBRARIES) $(all_libraries)
|
||||||
|
paps_LDFLAGS = `pkg-config --libs pangoft2`
|
||||||
|
-paps_DEPENDENCIES = $(lib_LIBRARIES)
|
||||||
|
+paps_DEPENDENCIES = $(lib_LTLIBRARIES)
|
||||||
|
|
||||||
|
EXTRA_DIST = test_libpaps.c paps.1
|
||||||
|
|
||||||
|
@@ -21,7 +21,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
test_libpaps_SOURCES = test_libpaps.c
|
||||||
|
-test_libpaps_LDADD = $(lib_LIBRARIES) $(all_libraries)
|
||||||
|
+test_libpaps_LDADD = $(lib_LTLIBRARIES) $(all_libraries)
|
||||||
|
test_libpaps_LDFLAGS = `pkg-config --libs pangoft2`
|
||||||
|
-test_libpaps_DEPENDENCIES = $(lib_LIBRARIES)
|
||||||
|
+test_libpaps_DEPENDENCIES = $(lib_LTLIBRARIES)
|
||||||
|
|
35
SOURCES/paps-0.6.8-wordwrap.patch
Normal file
35
SOURCES/paps-0.6.8-wordwrap.patch
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
|
||||||
|
--- paps-0.6.8.orig/src/paps.c 2007-04-13 14:04:14.000000000 +0900
|
||||||
|
+++ paps-0.6.8/src/paps.c 2007-11-16 12:28:11.000000000 +0900
|
||||||
|
@@ -723,9 +723,12 @@ split_text_into_paragraphs (PangoContext
|
||||||
|
pango_layout_set_alignment (para->layout,
|
||||||
|
page_layout->pango_dir == PANGO_DIRECTION_LTR
|
||||||
|
? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT);
|
||||||
|
- pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
|
||||||
|
-
|
||||||
|
- pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
|
||||||
|
+ if (page_layout->do_wordwrap) {
|
||||||
|
+ pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
|
||||||
|
+ pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
|
||||||
|
+ } else {
|
||||||
|
+ pango_layout_set_width (para->layout, -1);
|
||||||
|
+ }
|
||||||
|
para->height = 0;
|
||||||
|
|
||||||
|
result = g_list_prepend (result, para);
|
||||||
|
@@ -754,9 +757,13 @@ split_text_into_paragraphs (PangoContext
|
||||||
|
pango_layout_set_alignment (para->layout,
|
||||||
|
page_layout->pango_dir == PANGO_DIRECTION_LTR
|
||||||
|
? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT);
|
||||||
|
- pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
|
||||||
|
+ if (page_layout->do_wordwrap) {
|
||||||
|
+ pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
|
||||||
|
+ pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
|
||||||
|
+ } else {
|
||||||
|
+ pango_layout_set_width (para->layout, -1);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
|
||||||
|
para->height = 0;
|
||||||
|
|
||||||
|
last_para = next;
|
13
SOURCES/paps-854897-manpage.patch
Normal file
13
SOURCES/paps-854897-manpage.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff -pruN paps-0.6.8.orig/src/paps.1 paps-0.6.8/src/paps.1
|
||||||
|
--- paps-0.6.8.orig/src/paps.1 2007-01-19 20:05:27.000000000 +0900
|
||||||
|
+++ paps-0.6.8/src/paps.1 2012-09-06 18:04:01.000000000 +0900
|
||||||
|
@@ -64,6 +64,9 @@ Draw page header for each page.
|
||||||
|
.B \-\-markup
|
||||||
|
Interpret the text as pango markup.
|
||||||
|
.TP
|
||||||
|
+.B \-\-encoding=ENCODING
|
||||||
|
+Assume the documentation encoding is ENCODING.
|
||||||
|
+.TP
|
||||||
|
.B \-\-lpi
|
||||||
|
Set the lines per inch. This determines the line spacing.
|
||||||
|
.TP
|
40
SOURCES/paps-a3.patch
Normal file
40
SOURCES/paps-a3.patch
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
--- paps-0.6.8/src/paps.c.orig 2015-02-26 14:17:29.351338514 +0530
|
||||||
|
+++ paps-0.6.8/src/paps.c 2015-02-26 14:17:29.351338514 +0530
|
||||||
|
@@ -45,7 +45,8 @@
|
||||||
|
typedef enum {
|
||||||
|
PAPER_TYPE_A4 = 0,
|
||||||
|
PAPER_TYPE_US_LETTER = 1,
|
||||||
|
- PAPER_TYPE_US_LEGAL = 2
|
||||||
|
+ PAPER_TYPE_US_LEGAL = 2,
|
||||||
|
+ PAPER_TYPE_A3 = 3
|
||||||
|
} paper_type_t ;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
@@ -56,7 +57,8 @@
|
||||||
|
const paper_size_t paper_sizes[] = {
|
||||||
|
{ 595.28, 841.89}, /* A4 */
|
||||||
|
{ 612, 792}, /* US letter */
|
||||||
|
- { 612, 1008} /* US legal */
|
||||||
|
+ { 612, 1008}, /* US legal */
|
||||||
|
+ { 842, 1190} /* A3 */
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
@@ -190,6 +192,8 @@
|
||||||
|
paper_type = PAPER_TYPE_US_LETTER;
|
||||||
|
else if (g_ascii_strcasecmp(value, "a4") == 0)
|
||||||
|
paper_type = PAPER_TYPE_A4;
|
||||||
|
+ else if (g_ascii_strcasecmp(value, "a3") == 0)
|
||||||
|
+ paper_type = PAPER_TYPE_A3;
|
||||||
|
else {
|
||||||
|
retval = FALSE;
|
||||||
|
fprintf(stderr, "Unknown page size name: %s.\n", value);
|
||||||
|
@@ -300,7 +304,7 @@
|
||||||
|
{"rtl", 0, 0, G_OPTION_ARG_NONE, &do_rtl, "Do rtl layout.", NULL},
|
||||||
|
{"paper", 0, 0, G_OPTION_ARG_CALLBACK, _paps_arg_paper_cb,
|
||||||
|
"Choose paper size. Known paper sizes are legal,\n"
|
||||||
|
- " letter, a4. (Default: a4)", "PAPER"},
|
||||||
|
+ " letter, a3, a4. (Default: a4)", "PAPER"},
|
||||||
|
{"bottom-margin", 0, 0, G_OPTION_ARG_INT, &bottom_margin, "Set bottom margin in postscript point units (1/72inch). (Default: 36)", "NUM"},
|
||||||
|
{"top-margin", 0, 0, G_OPTION_ARG_INT, &top_margin, "Set top margin. (Default: 36)", "NUM"},
|
||||||
|
{"right-margin", 0, 0, G_OPTION_ARG_INT, &right_margin, "Set right margin. (Default: 36)", "NUM"},
|
24
SOURCES/paps-autoconf262.patch
Normal file
24
SOURCES/paps-autoconf262.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
diff -pruN paps-0.6.8.orig/acinclude.m4 paps-0.6.8/acinclude.m4
|
||||||
|
--- paps-0.6.8.orig/acinclude.m4 2006-11-29 05:11:50.000000000 +0900
|
||||||
|
+++ paps-0.6.8/acinclude.m4 2008-05-16 20:36:03.000000000 +0900
|
||||||
|
@@ -76,9 +76,9 @@ AC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEA
|
||||||
|
# Require the specified program to be found for the DX_CURRENT_FEATURE to work.
|
||||||
|
AC_DEFUN([DX_REQUIRE_PROG], [
|
||||||
|
AC_PATH_TOOL([$1], [$2])
|
||||||
|
-if test "$DX_FLAG_[]DX_CURRENT_FEATURE$$1" = 1; then
|
||||||
|
+if test "$DX_FLAG_DX_CURRENT_FEATURE$$1" = 1; then
|
||||||
|
AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION])
|
||||||
|
- AC_SUBST([DX_FLAG_[]DX_CURRENT_FEATURE], 0)
|
||||||
|
+ AC_SUBST([DX_FLAG_DX_CURRENT_FEATURE], 0)
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
@@ -101,7 +101,7 @@ test "$DX_FLAG_$1" = "$2" \
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
# Turn off the DX_CURRENT_FEATURE if the required feature is off.
|
||||||
|
AC_DEFUN([DX_CLEAR_DEPEND], [
|
||||||
|
-test "$DX_FLAG_$1" = "$2" || AC_SUBST([DX_FLAG_[]DX_CURRENT_FEATURE], 0)
|
||||||
|
+test "$DX_FLAG_$1" = "$2" || AC_SUBST([DX_FLAG_DX_CURRENT_FEATURE], 0)
|
||||||
|
])
|
||||||
|
|
||||||
|
# DX_FEATURE_ARG(FEATURE, DESCRIPTION,
|
77
SOURCES/paps-correct-fsf-address.patch
Normal file
77
SOURCES/paps-correct-fsf-address.patch
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
diff -pruN paps-0.6.8.orig/COPYING.LIB paps-0.6.8/COPYING.LIB
|
||||||
|
--- paps-0.6.8.orig/COPYING.LIB 2005-12-21 04:35:27.000000000 +0900
|
||||||
|
+++ paps-0.6.8/COPYING.LIB 2012-11-23 14:30:46.297512335 +0900
|
||||||
|
@@ -1,16 +1,15 @@
|
||||||
|
- GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||||
|
- Version 2, June 1991
|
||||||
|
+ GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||||
|
+ Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1991 Free Software Foundation, Inc.
|
||||||
|
- 59 Temple Place - Suite 330
|
||||||
|
- Boston, MA 02111-1307, USA.
|
||||||
|
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
[This is the first released version of the library GPL. It is
|
||||||
|
numbered 2 because it goes with version 2 of the ordinary GPL.]
|
||||||
|
|
||||||
|
- Preamble
|
||||||
|
+ Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
@@ -100,7 +99,7 @@ works together with the library.
|
||||||
|
Note that it is possible for a library to be covered by the ordinary
|
||||||
|
General Public License rather than by this special one.
|
||||||
|
|
||||||
|
- GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||||
|
+ GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License Agreement applies to any software library which
|
||||||
|
@@ -412,7 +411,7 @@ decision will be guided by the two goals
|
||||||
|
of all derivatives of our free software and of promoting the sharing
|
||||||
|
and reuse of software generally.
|
||||||
|
|
||||||
|
- NO WARRANTY
|
||||||
|
+ NO WARRANTY
|
||||||
|
|
||||||
|
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||||
|
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||||
|
@@ -435,8 +434,9 @@ FAILURE OF THE LIBRARY TO OPERATE WITH A
|
||||||
|
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
|
DAMAGES.
|
||||||
|
|
||||||
|
- END OF TERMS AND CONDITIONS
|
||||||
|
- How to Apply These Terms to Your New Libraries
|
||||||
|
+ END OF TERMS AND CONDITIONS
|
||||||
|
+
|
||||||
|
+ How to Apply These Terms to Your New Libraries
|
||||||
|
|
||||||
|
If you develop a new library, and you want it to be of the greatest
|
||||||
|
possible use to the public, we recommend making it free software that
|
||||||
|
@@ -453,18 +453,18 @@ convey the exclusion of warranty; and ea
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
- modify it under the terms of the GNU Lesser General Public
|
||||||
|
+ modify it under the terms of the GNU Library General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
- Lesser General Public License for more details.
|
||||||
|
+ Library General Public License for more details.
|
||||||
|
|
||||||
|
- You should have received a copy of the GNU Lesser General Public
|
||||||
|
+ You should have received a copy of the GNU Library General Public
|
||||||
|
License along with this library; if not, write to the Free Software
|
||||||
|
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
80
SOURCES/paps-cpilpi.patch
Normal file
80
SOURCES/paps-cpilpi.patch
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
|
||||||
|
--- paps-0.6.8.orig/src/paps.c 2008-11-07 08:27:54.000000000 +0900
|
||||||
|
+++ paps-0.6.8/src/paps.c 2008-11-07 08:29:08.000000000 +0900
|
||||||
|
@@ -92,8 +92,8 @@ typedef struct {
|
||||||
|
gchar *filename;
|
||||||
|
gchar *header_font_desc;
|
||||||
|
gchar *owner;
|
||||||
|
- gint lpi;
|
||||||
|
- gint cpi;
|
||||||
|
+ gdouble lpi;
|
||||||
|
+ gdouble cpi;
|
||||||
|
} page_layout_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
@@ -378,6 +378,7 @@ int main(int argc, char *argv[])
|
||||||
|
page_height = 792;
|
||||||
|
font = g_strdup(MAKE_FONT_NAME ("Courier", DEFAULT_FONT_SIZE));
|
||||||
|
header_font_desc = g_strdup(MAKE_FONT_NAME ("Courier", HEADER_FONT_SCALE));
|
||||||
|
+ do_stretch_chars = TRUE;
|
||||||
|
|
||||||
|
if (argc < 6 || argc > 7) {
|
||||||
|
fprintf(stderr, "ERROR: %s job-id user title copies options [file]\n", prgname);
|
||||||
|
@@ -595,7 +596,8 @@ int main(int argc, char *argv[])
|
||||||
|
/* calculate x-coordinate scale */
|
||||||
|
if (page_layout.cpi > 0.0L)
|
||||||
|
{
|
||||||
|
- double scale;
|
||||||
|
+ gint font_size;
|
||||||
|
+
|
||||||
|
fontmap = pango_ft2_font_map_new ();
|
||||||
|
fontset = pango_font_map_load_fontset (fontmap, pango_context, font_description, get_language ());
|
||||||
|
metrics = pango_fontset_get_metrics (fontset);
|
||||||
|
@@ -607,13 +609,10 @@ int main(int argc, char *argv[])
|
||||||
|
pango_font_metrics_unref (metrics);
|
||||||
|
g_object_unref (G_OBJECT (fontmap));
|
||||||
|
|
||||||
|
- // Now figure out how to scale the font to get that size
|
||||||
|
- scale = 1 / page_layout.cpi * 72.0 * PANGO_SCALE / max_width;
|
||||||
|
-
|
||||||
|
+ font_size = pango_font_description_get_size (font_description);
|
||||||
|
// update the font size to that width
|
||||||
|
- pango_font_description_set_size (font_description, (int)(atoi(DEFAULT_FONT_SIZE) * PANGO_SCALE * scale));
|
||||||
|
+ pango_font_description_set_size (font_description, font_size * page_layout.scale_x);
|
||||||
|
pango_context_set_font_description (pango_context, font_description);
|
||||||
|
-
|
||||||
|
}
|
||||||
|
|
||||||
|
page_layout.scale_x = page_layout.scale_y = 1.0;
|
||||||
|
@@ -1001,6 +1000,7 @@ output_pages(FILE *OUT,
|
||||||
|
int column_y_pos = 0;
|
||||||
|
int page_idx = 1;
|
||||||
|
int pango_column_height = page_layout->column_height * page_layout->pt_to_pixel * PANGO_SCALE;
|
||||||
|
+ int height = 0;
|
||||||
|
LineLink *prev_line_link = NULL;
|
||||||
|
|
||||||
|
start_page(OUT, page_idx);
|
||||||
|
@@ -1038,17 +1038,17 @@ output_pages(FILE *OUT,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ if (page_layout->lpi > 0.0L)
|
||||||
|
+ height = (int)(1.0 / page_layout->lpi * 72.0 * page_layout->pt_to_pixel * PANGO_SCALE);
|
||||||
|
+ else
|
||||||
|
+ height = line_link->logical_rect.height;
|
||||||
|
draw_line_to_page(OUT,
|
||||||
|
column_idx,
|
||||||
|
- column_y_pos+line_link->logical_rect.height,
|
||||||
|
+ column_y_pos+height,
|
||||||
|
page_layout,
|
||||||
|
line);
|
||||||
|
|
||||||
|
- if (page_layout->lpi > 0.0L)
|
||||||
|
- column_y_pos += (int)(1.0 / page_layout->lpi * 72.0 * page_layout->pt_to_pixel * PANGO_SCALE);
|
||||||
|
- else
|
||||||
|
- column_y_pos += line_link->logical_rect.height;
|
||||||
|
-
|
||||||
|
+ column_y_pos += height;
|
||||||
|
pango_lines = pango_lines->next;
|
||||||
|
prev_line_link = line_link;
|
||||||
|
}
|
325
SOURCES/paps-cups.patch
Normal file
325
SOURCES/paps-cups.patch
Normal file
@ -0,0 +1,325 @@
|
|||||||
|
diff -pruN paps-0.6.8.orig/configure.in paps-0.6.8/configure.in
|
||||||
|
--- paps-0.6.8.orig/configure.in 2007-01-19 20:06:10.000000000 +0900
|
||||||
|
+++ paps-0.6.8/configure.in 2008-11-07 08:21:19.000000000 +0900
|
||||||
|
@@ -7,6 +7,19 @@ AC_LANG_C
|
||||||
|
AC_PROG_CC
|
||||||
|
AM_PROG_LIBTOOL
|
||||||
|
|
||||||
|
+dnl ======================================================
|
||||||
|
+dnl check for CUPS
|
||||||
|
+dnl ======================================================
|
||||||
|
+AC_PATH_PROG(CUPS_CONFIG, cups-config, no)
|
||||||
|
+if test "$CUPS_CONFIG" = "no"; then
|
||||||
|
+ AC_MSG_ERROR([Please install cups development packages/files])
|
||||||
|
+fi
|
||||||
|
+CUPS_CFLAGS=`$CUPS_CONFIG --cflags | sed -e 's/-O[0-9]*//' -e 's/-m[^\t]*//g'`
|
||||||
|
+CUPS_LIBS=`$CUPS_CONFIG --libs`
|
||||||
|
+
|
||||||
|
+AC_SUBST(CUPS_CFLAGS)
|
||||||
|
+AC_SUBST(CUPS_LIBS)
|
||||||
|
+
|
||||||
|
DX_HTML_FEATURE(ON)
|
||||||
|
DX_CHM_FEATURE(OFF)
|
||||||
|
DX_CHI_FEATURE(OFF)
|
||||||
|
diff -pruN paps-0.6.8.orig/src/Makefile.am paps-0.6.8/src/Makefile.am
|
||||||
|
--- paps-0.6.8.orig/src/Makefile.am 2008-11-07 08:21:05.000000000 +0900
|
||||||
|
+++ paps-0.6.8/src/Makefile.am 2008-11-07 08:21:19.000000000 +0900
|
||||||
|
@@ -5,10 +5,10 @@ libpapsinc_HEADERS = libpaps.h
|
||||||
|
libpapsincdir = $(includedir)
|
||||||
|
|
||||||
|
bin_PROGRAMS = paps
|
||||||
|
-paps_CFLAGS = -Wall
|
||||||
|
+paps_CFLAGS = -Wall $(CUPS_CFLAGS)
|
||||||
|
paps_SOURCES = paps.c
|
||||||
|
paps_LDADD = $(lib_LTLIBRARIES) $(all_libraries)
|
||||||
|
-paps_LDFLAGS = `pkg-config --libs pangoft2`
|
||||||
|
+paps_LDFLAGS = `pkg-config --libs pangoft2` $(CUPS_LIBS)
|
||||||
|
paps_DEPENDENCIES = $(lib_LTLIBRARIES)
|
||||||
|
|
||||||
|
EXTRA_DIST = test_libpaps.c paps.1
|
||||||
|
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
|
||||||
|
--- paps-0.6.8.orig/src/paps.c 2008-11-07 08:21:05.000000000 +0900
|
||||||
|
+++ paps-0.6.8/src/paps.c 2008-11-07 08:26:28.000000000 +0900
|
||||||
|
@@ -31,6 +31,8 @@
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <locale.h>
|
||||||
|
+#include <cups/cups.h>
|
||||||
|
+#include <cups/ppd.h>
|
||||||
|
|
||||||
|
#define BUFSIZE 1024
|
||||||
|
#define DEFAULT_FONT_FAMILY "Monospace"
|
||||||
|
@@ -86,9 +88,11 @@ typedef struct {
|
||||||
|
gboolean do_wordwrap;
|
||||||
|
gboolean do_use_markup;
|
||||||
|
gboolean do_stretch_chars;
|
||||||
|
+ gboolean cups_mode;
|
||||||
|
PangoDirection pango_dir;
|
||||||
|
gchar *filename;
|
||||||
|
gchar *header_font_desc;
|
||||||
|
+ gchar *owner;
|
||||||
|
gint lpi;
|
||||||
|
gint cpi;
|
||||||
|
} page_layout_t;
|
||||||
|
@@ -320,8 +324,8 @@ int main(int argc, char *argv[])
|
||||||
|
int num_pages = 1;
|
||||||
|
int gutter_width = 40;
|
||||||
|
int total_gutter_width;
|
||||||
|
- int page_width = paper_sizes[0].width;
|
||||||
|
- int page_height = paper_sizes[0].height;
|
||||||
|
+ int page_width = -1;
|
||||||
|
+ int page_height = -1;
|
||||||
|
int do_tumble = -1; /* -1 means not initialized */
|
||||||
|
int do_duplex = -1;
|
||||||
|
gchar *paps_header = NULL;
|
||||||
|
@@ -331,6 +335,8 @@ int main(int argc, char *argv[])
|
||||||
|
int max_width = 0, w;
|
||||||
|
GIConv cvh = NULL;
|
||||||
|
GOptionGroup *options;
|
||||||
|
+ gboolean cups_mode = FALSE;
|
||||||
|
+ gchar *page_owner = NULL;
|
||||||
|
|
||||||
|
/* Set locale from environment. */
|
||||||
|
setlocale(LC_ALL, "");
|
||||||
|
@@ -348,6 +354,130 @@ int main(int argc, char *argv[])
|
||||||
|
g_option_context_add_main_entries(ctxt, entries, NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ /* check if the process is being invoked as CUPS filter */
|
||||||
|
+ G_STMT_START {
|
||||||
|
+ gchar *prgname = g_path_get_basename(argv[0]);
|
||||||
|
+ cups_option_t *options = NULL;
|
||||||
|
+ ppd_file_t *ppd;
|
||||||
|
+ ppd_size_t *pagesize;
|
||||||
|
+ int num_options;
|
||||||
|
+ const char *val;
|
||||||
|
+
|
||||||
|
+ if (strncmp(prgname, "texttopaps", 10) == 0 ||
|
||||||
|
+ getenv("CUPS_SERVER") != NULL) {
|
||||||
|
+ g_set_prgname(prgname);
|
||||||
|
+ /* argument format should be job-id user title copies options [file] */
|
||||||
|
+ cups_mode = TRUE;
|
||||||
|
+ /* set default values */
|
||||||
|
+ page_layout.lpi = 6.0L;
|
||||||
|
+ page_layout.cpi = 10.0L;
|
||||||
|
+ left_margin = 18;
|
||||||
|
+ right_margin = 18;
|
||||||
|
+ top_margin = 36;
|
||||||
|
+ bottom_margin = 36;
|
||||||
|
+ page_width = 612;
|
||||||
|
+ page_height = 792;
|
||||||
|
+ font = g_strdup(MAKE_FONT_NAME ("Courier", DEFAULT_FONT_SIZE));
|
||||||
|
+ header_font_desc = g_strdup(MAKE_FONT_NAME ("Courier", HEADER_FONT_SCALE));
|
||||||
|
+
|
||||||
|
+ if (argc < 6 || argc > 7) {
|
||||||
|
+ fprintf(stderr, "ERROR: %s job-id user title copies options [file]\n", prgname);
|
||||||
|
+ exit(1);
|
||||||
|
+ }
|
||||||
|
+ if (argc == 6) {
|
||||||
|
+ filename_in = "stdin";
|
||||||
|
+ IN = stdin;
|
||||||
|
+ } else {
|
||||||
|
+ filename_in = argv[6];
|
||||||
|
+ if ((IN = fopen(filename_in, "rb")) == NULL) {
|
||||||
|
+ fprintf(stderr, "ERROR: unable to open print file -\n");
|
||||||
|
+ exit(1);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ title = argv[3];
|
||||||
|
+ page_owner = argv[2];
|
||||||
|
+ num_options = cupsParseOptions(argv[5], 0, &options);
|
||||||
|
+
|
||||||
|
+ if ((val = cupsGetOption("prettyprint", num_options, options)) != NULL &&
|
||||||
|
+ g_ascii_strcasecmp(val, "no") &&
|
||||||
|
+ g_ascii_strcasecmp(val, "off") &&
|
||||||
|
+ g_ascii_strcasecmp(val, "false")) {
|
||||||
|
+ /* XXX: need to support the keywords highlighting */
|
||||||
|
+ }
|
||||||
|
+ ppd = ppdOpenFile(getenv("PPD"));
|
||||||
|
+ ppdMarkDefaults(ppd);
|
||||||
|
+ cupsMarkOptions(ppd, num_options, options);
|
||||||
|
+
|
||||||
|
+ if ((pagesize = ppdPageSize(ppd, NULL)) != NULL) {
|
||||||
|
+ page_width = pagesize->width;
|
||||||
|
+ page_height = pagesize->length;
|
||||||
|
+ top_margin = pagesize->length - pagesize->top;
|
||||||
|
+ bottom_margin = pagesize->bottom;
|
||||||
|
+ left_margin = pagesize->left;
|
||||||
|
+ right_margin = pagesize->width - pagesize->right;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if ((val = cupsGetOption("landscape", num_options, options)) != NULL) {
|
||||||
|
+ if (g_ascii_strcasecmp(val, "no") &&
|
||||||
|
+ g_ascii_strcasecmp(val, "off") &&
|
||||||
|
+ g_ascii_strcasecmp(val, "false"))
|
||||||
|
+ do_landscape = TRUE;
|
||||||
|
+ }
|
||||||
|
+ /* XXX: need to support orientation-requested? */
|
||||||
|
+ if ((val = cupsGetOption("page-left", num_options, options)) != NULL) {
|
||||||
|
+ left_margin = (int)atof(val);
|
||||||
|
+ }
|
||||||
|
+ if ((val = cupsGetOption("page-right", num_options, options)) != NULL) {
|
||||||
|
+ right_margin = (int)atof(val);
|
||||||
|
+ }
|
||||||
|
+ if ((val = cupsGetOption("page-bottom", num_options, options)) != NULL) {
|
||||||
|
+ bottom_margin = (int)atof(val);
|
||||||
|
+ }
|
||||||
|
+ if ((val = cupsGetOption("page-top", num_options, options)) != NULL) {
|
||||||
|
+ top_margin = (int)atof(val);
|
||||||
|
+ }
|
||||||
|
+ if (ppdIsMarked(ppd, "Duplex", "DuplexNoTumble") ||
|
||||||
|
+ ppdIsMarked(ppd, "Duplex", "DuplexTumble") ||
|
||||||
|
+ ppdIsMarked(ppd, "JCLDuplex", "DuplexNoTumble") ||
|
||||||
|
+ ppdIsMarked(ppd, "JCLDuplex", "DuplexTumble") ||
|
||||||
|
+ ppdIsMarked(ppd, "EFDuplex", "DuplexNoTumble") ||
|
||||||
|
+ ppdIsMarked(ppd, "EFDuplex", "DuplexTumble") ||
|
||||||
|
+ ppdIsMarked(ppd, "KD03Duplex", "DuplexNoTumble") ||
|
||||||
|
+ ppdIsMarked(ppd, "KD03Duplex", "DuplexTumble")) {
|
||||||
|
+ do_duplex = TRUE;
|
||||||
|
+ }
|
||||||
|
+ if ((val = cupsGetOption("wrap", num_options, options)) != NULL) {
|
||||||
|
+ do_wordwrap = !g_ascii_strcasecmp(val, "true") ||
|
||||||
|
+ !g_ascii_strcasecmp(val, "on") ||
|
||||||
|
+ !g_ascii_strcasecmp(val, "yes");
|
||||||
|
+ }
|
||||||
|
+ if ((val = cupsGetOption("columns", num_options, options)) != NULL) {
|
||||||
|
+ num_columns = atoi(val);
|
||||||
|
+ }
|
||||||
|
+ if ((val = cupsGetOption("cpi", num_options, options)) != NULL) {
|
||||||
|
+ page_layout.cpi = atof(val);
|
||||||
|
+ }
|
||||||
|
+ if ((val = cupsGetOption("lpi", num_options, options)) != NULL) {
|
||||||
|
+ page_layout.lpi = atof(val);
|
||||||
|
+ }
|
||||||
|
+ if (getenv("CHARSET") != NULL) {
|
||||||
|
+ char *charset = getenv("CHARSET");
|
||||||
|
+ /* Map CUPS charset names to real ones.
|
||||||
|
+ * http://cups.org/newsgroups.php?s9797+gcups.general+v9797+T1
|
||||||
|
+ */
|
||||||
|
+ if (!g_ascii_strcasecmp(charset, "windows-932")) {
|
||||||
|
+ charset = "WINDOWS-31J";
|
||||||
|
+ }
|
||||||
|
+ if (g_ascii_strcasecmp(charset, "utf-8") &&
|
||||||
|
+ g_ascii_strcasecmp(charset, "utf8")) {
|
||||||
|
+ encoding = g_strdup(charset);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ } G_STMT_END;
|
||||||
|
+
|
||||||
|
+ if (!cups_mode) {
|
||||||
|
+
|
||||||
|
/* Parse command line */
|
||||||
|
if (!g_option_context_parse(ctxt, &argc, &argv, &error))
|
||||||
|
{
|
||||||
|
@@ -374,6 +504,8 @@ int main(int argc, char *argv[])
|
||||||
|
IN = stdin;
|
||||||
|
}
|
||||||
|
title = filename_in;
|
||||||
|
+
|
||||||
|
+ } /* if (!cups_mode) */
|
||||||
|
|
||||||
|
paps = paps_new();
|
||||||
|
pango_context = paps_get_pango_context (paps);
|
||||||
|
@@ -392,8 +524,10 @@ int main(int argc, char *argv[])
|
||||||
|
pango_context_set_font_description (pango_context, font_description);
|
||||||
|
|
||||||
|
/* Page layout */
|
||||||
|
- page_width = paper_sizes[(int)paper_type].width;
|
||||||
|
- page_height = paper_sizes[(int)paper_type].height;
|
||||||
|
+ if (page_width < 0)
|
||||||
|
+ page_width = paper_sizes[(int)paper_type].width;
|
||||||
|
+ if (page_height < 0)
|
||||||
|
+ page_height = paper_sizes[(int)paper_type].height;
|
||||||
|
|
||||||
|
if (num_columns == 1)
|
||||||
|
total_gutter_width = 0;
|
||||||
|
@@ -456,6 +590,8 @@ int main(int argc, char *argv[])
|
||||||
|
page_layout.pango_dir = pango_dir;
|
||||||
|
page_layout.filename = filename_in;
|
||||||
|
page_layout.header_font_desc = header_font_desc;
|
||||||
|
+ page_layout.owner = page_owner;
|
||||||
|
+ page_layout.cups_mode = cups_mode;
|
||||||
|
|
||||||
|
/* calculate x-coordinate scale */
|
||||||
|
if (page_layout.cpi > 0.0L)
|
||||||
|
@@ -756,6 +892,12 @@ split_text_into_paragraphs (PangoContext
|
||||||
|
if (wc == (gunichar)-1)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "%s: Invalid character in input\n", g_get_prgname ());
|
||||||
|
+ if (page_layout->cups_mode)
|
||||||
|
+ {
|
||||||
|
+ /* try to continue parsing texts */
|
||||||
|
+ p = next;
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
wc = 0;
|
||||||
|
}
|
||||||
|
if (!*p || !wc || wc == '\n' || wc == '\f')
|
||||||
|
@@ -925,21 +1067,32 @@ void print_postscript_header(FILE *OUT,
|
||||||
|
int orientation = page_layout->page_width > page_layout->page_height;
|
||||||
|
int bb_page_width = page_layout->page_width;
|
||||||
|
int bb_page_height = page_layout->page_height;
|
||||||
|
+ char *owner = NULL;
|
||||||
|
|
||||||
|
/* Keep bounding box non-rotated to make ggv happy */
|
||||||
|
- if (orientation)
|
||||||
|
+ /* ensure the correct bounding box for CUPS */
|
||||||
|
+ if (orientation && !page_layout->cups_mode)
|
||||||
|
{
|
||||||
|
int tmp = bb_page_width;
|
||||||
|
bb_page_width = bb_page_height;
|
||||||
|
bb_page_height = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (page_layout->owner)
|
||||||
|
+ {
|
||||||
|
+ owner = g_strdup_printf("%%%%For: %s\n", page_layout->owner);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ owner = g_strdup("");
|
||||||
|
+ }
|
||||||
|
fprintf(OUT,
|
||||||
|
"%%!PS-Adobe-3.0\n"
|
||||||
|
+ "%s"
|
||||||
|
"%%%%Title: %s\n"
|
||||||
|
"%%%%Creator: paps version 0.6.7 by Dov Grobgeld\n"
|
||||||
|
"%%%%Pages: (atend)\n"
|
||||||
|
- "%%%%BoundingBox: 0 0 %d %d\n"
|
||||||
|
+ "%%%%BoundingBox: 0 0 %d %d\n%s"
|
||||||
|
"%%%%BeginProlog\n"
|
||||||
|
"%%%%Orientation: %s\n"
|
||||||
|
"/papsdict 1 dict def\n"
|
||||||
|
@@ -961,7 +1114,7 @@ void print_postscript_header(FILE *OUT,
|
||||||
|
" pagewidth\n"
|
||||||
|
" /pagewidth pageheight def\n"
|
||||||
|
" /pageheight exch def\n"
|
||||||
|
- " /orientation 3 def\n"
|
||||||
|
+ " /orientation %d def\n"
|
||||||
|
" } if\n"
|
||||||
|
" 2 dict\n"
|
||||||
|
" dup /PageSize [pagewidth pageheight] put\n"
|
||||||
|
@@ -986,11 +1139,21 @@ void print_postscript_header(FILE *OUT,
|
||||||
|
" 90 rotate\n"
|
||||||
|
" 0 pageheight neg translate\n"
|
||||||
|
"} def\n",
|
||||||
|
+ /*
|
||||||
|
+ * Put %%cupsRotation tag to prevent the rotation in pstops.
|
||||||
|
+ * This breaks paps's behavior to make it in landscape say.
|
||||||
|
+ * (RH#222137)
|
||||||
|
+ */
|
||||||
|
+ (page_layout->cups_mode ? "%cupsRotation: 0\n" : ""),
|
||||||
|
title,
|
||||||
|
bb_page_width,
|
||||||
|
bb_page_height,
|
||||||
|
- orientation_names[orientation]
|
||||||
|
+ owner,
|
||||||
|
+ orientation_names[orientation],
|
||||||
|
+ /* For landscape, rotate page to portrait orientation for CUPS (RH#222137) */
|
||||||
|
+ page_layout->cups_mode ? 2 : 3
|
||||||
|
);
|
||||||
|
+ g_free(owner);
|
||||||
|
|
||||||
|
fprintf(OUT,
|
||||||
|
"%% User settings\n"
|
94
SOURCES/paps-dsc-compliant.patch
Normal file
94
SOURCES/paps-dsc-compliant.patch
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
diff -pruN paps-0.6.8.orig/src/libpaps.c paps-0.6.8/src/libpaps.c
|
||||||
|
--- paps-0.6.8.orig/src/libpaps.c 2008-05-14 23:07:14.000000000 +0900
|
||||||
|
+++ paps-0.6.8/src/libpaps.c 2008-05-14 23:11:12.000000000 +0900
|
||||||
|
@@ -118,7 +118,6 @@ gchar *paps_get_postscript_header_strdup
|
||||||
|
gchar *ret_str;
|
||||||
|
g_string_append_printf(paps->header,
|
||||||
|
"end end\n"
|
||||||
|
- "%%%%EndPrologue\n"
|
||||||
|
);
|
||||||
|
ret_str = g_strdup(paps->header->str);
|
||||||
|
g_string_truncate(paps->header, old_len);
|
||||||
|
@@ -247,7 +246,6 @@ static void
|
||||||
|
add_postscript_prologue(paps_private_t *paps)
|
||||||
|
{
|
||||||
|
g_string_append_printf(paps->header,
|
||||||
|
- "%%%%BeginProlog\n"
|
||||||
|
"/papsdict 1 dict def\n"
|
||||||
|
"papsdict begin\n"
|
||||||
|
"\n"
|
||||||
|
@@ -272,10 +270,10 @@ add_postscript_prologue(paps_private_t *
|
||||||
|
"/start_ol { gsave } bind def\n"
|
||||||
|
"/end_ol { closepath fill grestore } bind def\n"
|
||||||
|
/* Specify both x and y. */
|
||||||
|
- "/draw_char { fontdict begin gsave %f dup scale last_x last_y translate load exec end grestore} def\n"
|
||||||
|
- "/goto_xy { fontdict begin /last_y exch def /last_x exch def end } def\n"
|
||||||
|
- "/goto_x { fontdict begin /last_x exch def end } def\n"
|
||||||
|
- "/fwd_x { fontdict begin /last_x exch last_x add def end } def\n"
|
||||||
|
+ "/draw_char { fontdict begin gsave %f dup scale last_x cvi last_y cvi translate load exec end grestore} def\n"
|
||||||
|
+ "/goto_xy { fontdict begin /last_y exch string_y cvs def /last_x exch string_x cvs def end } def\n"
|
||||||
|
+ "/goto_x { fontdict begin /last_x exch string_x cvs def end } def\n"
|
||||||
|
+ "/fwd_x { fontdict begin /last_x exch last_x cvi add string_x cvs def end } def\n"
|
||||||
|
"/c /curveto load def\n"
|
||||||
|
"/x /conicto load def\n"
|
||||||
|
"/l /lineto load def\n"
|
||||||
|
@@ -344,7 +342,7 @@ add_postscript_prologue(paps_private_t *
|
||||||
|
|
||||||
|
/* Open up dictionaries */
|
||||||
|
g_string_append(paps->header,
|
||||||
|
- "/fontdict 1 dict def\n"
|
||||||
|
+ "/fontdict 1 dict dup begin 16 string dup /string_x exch def /last_x exch def 16 string dup /string_y exch def /last_y exch def end def\n"
|
||||||
|
"papsdict begin fontdict begin\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
|
||||||
|
--- paps-0.6.8.orig/src/paps.c 2008-05-14 23:07:14.000000000 +0900
|
||||||
|
+++ paps-0.6.8/src/paps.c 2008-05-14 23:12:53.000000000 +0900
|
||||||
|
@@ -659,7 +659,7 @@ int main(int argc, char *argv[])
|
||||||
|
fprintf(OUT, "%s", paps_header);
|
||||||
|
g_free(paps_header);
|
||||||
|
|
||||||
|
- fprintf(OUT, "%%%%EndPrologue\n");
|
||||||
|
+ fprintf(OUT, "%%%%EndSetup\n");
|
||||||
|
fprintf(OUT, "%s", ps_pages_string->str);
|
||||||
|
print_postscript_trailer(OUT, num_pages);
|
||||||
|
|
||||||
|
@@ -1089,8 +1089,9 @@ void print_postscript_header(FILE *OUT,
|
||||||
|
"%%%%Creator: paps version 0.6.7 by Dov Grobgeld\n"
|
||||||
|
"%%%%Pages: (atend)\n"
|
||||||
|
"%%%%BoundingBox: 0 0 %d %d\n%s"
|
||||||
|
- "%%%%BeginProlog\n"
|
||||||
|
"%%%%Orientation: %s\n"
|
||||||
|
+ "%%%%EndComments\n"
|
||||||
|
+ "%%%%BeginProlog\n"
|
||||||
|
"/papsdict 1 dict def\n"
|
||||||
|
"papsdict begin\n"
|
||||||
|
"\n"
|
||||||
|
@@ -1134,7 +1135,8 @@ void print_postscript_header(FILE *OUT,
|
||||||
|
"/turnpage {\n"
|
||||||
|
" 90 rotate\n"
|
||||||
|
" 0 pageheight neg translate\n"
|
||||||
|
- "} def\n",
|
||||||
|
+ "} def\n"
|
||||||
|
+ "%%%%EndProlog\n",
|
||||||
|
/*
|
||||||
|
* Put %%cupsRotation tag to prevent the rotation in pstops.
|
||||||
|
* This breaks paps's behavior to make it in landscape say.
|
||||||
|
@@ -1150,6 +1152,7 @@ void print_postscript_header(FILE *OUT,
|
||||||
|
g_free(owner);
|
||||||
|
|
||||||
|
fprintf(OUT,
|
||||||
|
+ "%%%%BeginSetup\n"
|
||||||
|
"%% User settings\n"
|
||||||
|
"/pagewidth %d def\n"
|
||||||
|
"/pageheight %d def\n"
|
||||||
|
@@ -1232,8 +1235,8 @@ void print_postscript_trailer(FILE *OUT,
|
||||||
|
int num_pages)
|
||||||
|
{
|
||||||
|
fprintf(OUT,
|
||||||
|
- "%%%%Pages: %d\n"
|
||||||
|
"%%%%Trailer\n"
|
||||||
|
+ "%%%%Pages: %d\n"
|
||||||
|
"%%%%EOF\n",
|
||||||
|
num_pages
|
||||||
|
);
|
66
SOURCES/paps-exitcode.patch
Normal file
66
SOURCES/paps-exitcode.patch
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
|
||||||
|
--- paps-0.6.8.orig/src/paps.c 2008-09-01 15:54:11.000000000 +0900
|
||||||
|
+++ paps-0.6.8/src/paps.c 2008-09-01 15:54:47.000000000 +0900
|
||||||
|
@@ -365,7 +365,7 @@ int main(int argc, char *argv[])
|
||||||
|
if (!IN)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Failed to open %s!\n", filename_in);
|
||||||
|
- exit(-1);
|
||||||
|
+ exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
@@ -499,7 +499,7 @@ int main(int argc, char *argv[])
|
||||||
|
if (cvh == NULL)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s: Invalid encoding: %s\n", g_get_prgname (), encoding);
|
||||||
|
- exit(-1);
|
||||||
|
+ exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -559,7 +559,7 @@ read_file (FILE *file,
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s: Error reading file.\n", g_get_prgname ());
|
||||||
|
g_string_free (inbuf, TRUE);
|
||||||
|
- return NULL;
|
||||||
|
+ exit(1);
|
||||||
|
}
|
||||||
|
else if (bp == NULL)
|
||||||
|
break;
|
||||||
|
@@ -573,7 +573,7 @@ read_file (FILE *file,
|
||||||
|
if (g_iconv (handle, &ib, &iblen, &ob, &oblen) == -1)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "%s: Error while converting strings.\n", g_get_prgname ());
|
||||||
|
- return NULL;
|
||||||
|
+ exit(1);
|
||||||
|
}
|
||||||
|
obuffer[BUFSIZE * 6 - 1 - oblen] = 0;
|
||||||
|
}
|
||||||
|
@@ -637,7 +637,7 @@ split_text_into_paragraphs (PangoContext
|
||||||
|
if (wtext == NULL)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "Failed to convert UTF-8 to UCS-4.\n");
|
||||||
|
- return NULL;
|
||||||
|
+ exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
len = g_utf8_strlen (para->text, para->length);
|
||||||
|
@@ -650,7 +650,7 @@ split_text_into_paragraphs (PangoContext
|
||||||
|
{
|
||||||
|
fprintf (stderr, "Failed to allocate a memory.\n");
|
||||||
|
g_free (wtext);
|
||||||
|
- return NULL;
|
||||||
|
+ exit(1);
|
||||||
|
}
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
@@ -665,7 +665,7 @@ split_text_into_paragraphs (PangoContext
|
||||||
|
if (newtext == NULL)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "Failed to convert UCS-4 to UTF-8.\n");
|
||||||
|
- return NULL;
|
||||||
|
+ exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
pango_layout_set_text (para->layout, newtext, -1);
|
342
SOURCES/paps-fix-cpi.patch
Normal file
342
SOURCES/paps-fix-cpi.patch
Normal file
@ -0,0 +1,342 @@
|
|||||||
|
diff --git a/src/libpaps.c b/src/libpaps.c
|
||||||
|
index b6363a7..1b80257 100644
|
||||||
|
--- a/src/libpaps.c
|
||||||
|
+++ b/src/libpaps.c
|
||||||
|
@@ -55,6 +55,9 @@ typedef struct {
|
||||||
|
double last_pos_x;
|
||||||
|
double scale_x;
|
||||||
|
double scale_y;
|
||||||
|
+ double width;
|
||||||
|
+ double height;
|
||||||
|
+ double cpi;
|
||||||
|
} paps_private_t;
|
||||||
|
|
||||||
|
|
||||||
|
@@ -88,6 +91,26 @@ paps_t *paps_new()
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
+paps_set_paper_size(paps_t *paps_,
|
||||||
|
+ gdouble width,
|
||||||
|
+ gdouble height)
|
||||||
|
+{
|
||||||
|
+ paps_private_t *paps = (paps_private_t *)paps_;
|
||||||
|
+
|
||||||
|
+ paps->width = width;
|
||||||
|
+ paps->height = height;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+paps_set_cpi(paps_t *paps_,
|
||||||
|
+ gdouble cpi)
|
||||||
|
+{
|
||||||
|
+ paps_private_t *paps = (paps_private_t *)paps_;
|
||||||
|
+
|
||||||
|
+ paps->cpi = cpi;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
paps_set_scale(paps_t *paps_,
|
||||||
|
gdouble scale_x,
|
||||||
|
gdouble scale_y)
|
||||||
|
@@ -401,7 +424,7 @@ static void draw_contour(paps_private_t *paps,
|
||||||
|
FT_Face ft_face = pango_ft2_font_get_face(font);
|
||||||
|
int num_glyphs = glyphs->num_glyphs;
|
||||||
|
int glyph_idx;
|
||||||
|
-
|
||||||
|
+
|
||||||
|
for (glyph_idx=0; glyph_idx<num_glyphs; glyph_idx++)
|
||||||
|
{
|
||||||
|
PangoGlyphGeometry geometry = glyphs->glyphs[glyph_idx].geometry;
|
||||||
|
@@ -410,7 +433,11 @@ static void draw_contour(paps_private_t *paps,
|
||||||
|
glyph_pos_x = x_pos + 1.0*geometry.x_offset * scale;
|
||||||
|
glyph_pos_y = line_start_pos_y - 1.0*geometry.y_offset * scale;
|
||||||
|
|
||||||
|
- x_pos += geometry.width * scale * paps->scale_x;
|
||||||
|
+ if (paps->cpi > 0.0L) {
|
||||||
|
+ x_pos += (1 / paps->cpi * 72.0);
|
||||||
|
+ } else {
|
||||||
|
+ x_pos += geometry.width * scale * paps->scale_x;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (glyphs->glyphs[glyph_idx].glyph == PANGO_GLYPH_EMPTY)
|
||||||
|
continue;
|
||||||
|
diff --git a/src/libpaps.h b/src/libpaps.h
|
||||||
|
index 0b74321..cbb4042 100644
|
||||||
|
--- a/src/libpaps.h
|
||||||
|
+++ b/src/libpaps.h
|
||||||
|
@@ -53,10 +53,16 @@ void paps_free(paps_t *paps);
|
||||||
|
* @param scale_y y-coordinate scale
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
-void
|
||||||
|
-paps_set_scale(paps_t *paps,
|
||||||
|
- gdouble scale_x,
|
||||||
|
- gdouble scale_y);
|
||||||
|
+void paps_set_scale(paps_t *paps,
|
||||||
|
+ gdouble scale_x,
|
||||||
|
+ gdouble scale_y);
|
||||||
|
+
|
||||||
|
+void paps_set_paper_size(paps_t *paps_,
|
||||||
|
+ gdouble width,
|
||||||
|
+ gdouble height);
|
||||||
|
+
|
||||||
|
+void paps_set_cpi(paps_t *paps_,
|
||||||
|
+ gdouble cpi);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* libpaps may currently be used only with a PangoContext that it
|
||||||
|
diff --git a/src/paps.c b/src/paps.c
|
||||||
|
index 334d547..72dbaad 100644
|
||||||
|
--- a/src/paps.c
|
||||||
|
+++ b/src/paps.c
|
||||||
|
@@ -33,6 +33,8 @@
|
||||||
|
#include <locale.h>
|
||||||
|
#include <cups/cups.h>
|
||||||
|
#include <cups/ppd.h>
|
||||||
|
+#include <math.h>
|
||||||
|
+#include <wchar.h>
|
||||||
|
|
||||||
|
#define BUFSIZE 1024
|
||||||
|
#define DEFAULT_FONT_FAMILY "Monospace"
|
||||||
|
@@ -594,6 +596,8 @@ int main(int argc, char *argv[])
|
||||||
|
page_layout.owner = page_owner;
|
||||||
|
page_layout.cups_mode = cups_mode;
|
||||||
|
|
||||||
|
+ paps_set_paper_size(paps, page_width, page_height);
|
||||||
|
+
|
||||||
|
/* calculate x-coordinate scale */
|
||||||
|
if (page_layout.cpi > 0.0L)
|
||||||
|
{
|
||||||
|
@@ -606,7 +610,7 @@ int main(int argc, char *argv[])
|
||||||
|
w = pango_font_metrics_get_approximate_digit_width (metrics);
|
||||||
|
if (w > max_width)
|
||||||
|
max_width = w;
|
||||||
|
- page_layout.scale_x = 1 / page_layout.cpi * 72.0 * PANGO_SCALE / max_width;
|
||||||
|
+ page_layout.scale_x = 1 / page_layout.cpi * 72.0 * (gdouble)PANGO_SCALE / (gdouble)max_width;
|
||||||
|
pango_font_metrics_unref (metrics);
|
||||||
|
g_object_unref (G_OBJECT (fontmap));
|
||||||
|
|
||||||
|
@@ -614,6 +618,8 @@ int main(int argc, char *argv[])
|
||||||
|
// update the font size to that width
|
||||||
|
pango_font_description_set_size (font_description, font_size * page_layout.scale_x);
|
||||||
|
pango_context_set_font_description (pango_context, font_description);
|
||||||
|
+
|
||||||
|
+ paps_set_cpi(paps, page_layout.cpi);
|
||||||
|
}
|
||||||
|
|
||||||
|
page_layout.scale_x = page_layout.scale_y = 1.0;
|
||||||
|
@@ -727,119 +733,6 @@ read_file (FILE *file,
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
-#if 0
|
||||||
|
-/* Take a UTF8 string and break it into paragraphs on \n characters.
|
||||||
|
- *
|
||||||
|
- * Sorry. I couldn't figure out what this version was supposed to do
|
||||||
|
- *
|
||||||
|
- */
|
||||||
|
-static GList *
|
||||||
|
-split_text_into_paragraphs (PangoContext *pango_context,
|
||||||
|
- page_layout_t *page_layout,
|
||||||
|
- int paint_width, /* In pixels */
|
||||||
|
- char *text)
|
||||||
|
-{
|
||||||
|
- char *p = text;
|
||||||
|
- char *next;
|
||||||
|
- gunichar wc;
|
||||||
|
- GList *result = NULL;
|
||||||
|
- char *last_para = text;
|
||||||
|
-
|
||||||
|
- while (p != NULL && *p)
|
||||||
|
- {
|
||||||
|
- wc = g_utf8_get_char (p);
|
||||||
|
- next = g_utf8_next_char (p);
|
||||||
|
- if (wc == (gunichar)-1)
|
||||||
|
- {
|
||||||
|
- fprintf (stderr, "%s: Invalid character in input\n", g_get_prgname ());
|
||||||
|
- wc = 0;
|
||||||
|
- }
|
||||||
|
- if (!*p || !wc || wc == '\n' || wc == '\f')
|
||||||
|
- {
|
||||||
|
- Paragraph *para = g_new (Paragraph, 1);
|
||||||
|
- para->text = last_para;
|
||||||
|
- para->length = p - last_para;
|
||||||
|
- para->layout = pango_layout_new (pango_context);
|
||||||
|
-
|
||||||
|
- if (cpi > 0.0L && page_layout->do_wordwrap)
|
||||||
|
- {
|
||||||
|
- PangoRectangle ink_rect, logical_rect;
|
||||||
|
- wchar_t *wtext, *wnewtext;
|
||||||
|
- gchar *newtext;
|
||||||
|
- size_t i, len, wwidth = 0, n;
|
||||||
|
-
|
||||||
|
- wtext = g_utf8_to_ucs4 (para->text, para->length, NULL, NULL, NULL);
|
||||||
|
- if (wtext == NULL)
|
||||||
|
- {
|
||||||
|
- fprintf (stderr, "Failed to convert UTF-8 to UCS-4.\n");
|
||||||
|
- exit(1);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- len = g_utf8_strlen (para->text, para->length);
|
||||||
|
- /* the amount of characters to be able to put on the line against CPI */
|
||||||
|
- n = page_layout->column_width / 72.0 * cpi;
|
||||||
|
- if (len > n)
|
||||||
|
- {
|
||||||
|
- wnewtext = g_new (wchar_t, wcslen (wtext) + 1);
|
||||||
|
- if (wnewtext == NULL)
|
||||||
|
- {
|
||||||
|
- fprintf (stderr, "Failed to allocate a memory.\n");
|
||||||
|
- g_free (wtext);
|
||||||
|
- exit(1);
|
||||||
|
- }
|
||||||
|
- for (i = 0; i < len; i++)
|
||||||
|
- {
|
||||||
|
- wwidth += wcwidth (wtext[i]);
|
||||||
|
- if (wwidth > n)
|
||||||
|
- break;
|
||||||
|
- wnewtext[i] = wtext[i];
|
||||||
|
- }
|
||||||
|
- wnewtext[i] = 0L;
|
||||||
|
-
|
||||||
|
- newtext = g_ucs4_to_utf8 ((const gunichar *)wnewtext, i, NULL, NULL, NULL);
|
||||||
|
- if (newtext == NULL)
|
||||||
|
- {
|
||||||
|
- fprintf (stderr, "Failed to convert UCS-4 to UTF-8.\n");
|
||||||
|
- exit(1);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- pango_layout_set_text (para->layout, newtext, -1);
|
||||||
|
- pango_layout_get_extents (para->layout, &ink_rect, &logical_rect);
|
||||||
|
- /* update paint_width to wrap_against CPI */
|
||||||
|
- paint_width = logical_rect.width / PANGO_SCALE;
|
||||||
|
- g_free (newtext);
|
||||||
|
- g_free (wnewtext);
|
||||||
|
- }
|
||||||
|
- g_free (wtext);
|
||||||
|
- }
|
||||||
|
- pango_layout_set_text (para->layout, para->text, para->length);
|
||||||
|
- pango_layout_set_justify (para->layout, page_layout->do_justify);
|
||||||
|
- pango_layout_set_alignment (para->layout,
|
||||||
|
- page_layout->pango_dir == PANGO_DIRECTION_LTR
|
||||||
|
- ? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT);
|
||||||
|
- pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
|
||||||
|
- if (page_layout->do_wordwrap)
|
||||||
|
- pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
|
||||||
|
- para->height = 0;
|
||||||
|
-
|
||||||
|
- if (wc == '\f')
|
||||||
|
- para->formfeed = 1;
|
||||||
|
- else
|
||||||
|
- para->formfeed = 0;
|
||||||
|
-
|
||||||
|
- last_para = next;
|
||||||
|
-
|
||||||
|
- result = g_list_prepend (result, para);
|
||||||
|
- }
|
||||||
|
- if (!wc) /* incomplete character at end */
|
||||||
|
- break;
|
||||||
|
- p = next;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- return g_list_reverse (result);
|
||||||
|
-}
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
/* Take a UTF8 string and break it into paragraphs on \n characters
|
||||||
|
*/
|
||||||
|
static GList *
|
||||||
|
@@ -905,18 +798,85 @@ split_text_into_paragraphs (PangoContext *pango_context,
|
||||||
|
para->text = last_para;
|
||||||
|
para->length = p - last_para;
|
||||||
|
para->layout = pango_layout_new (pango_context);
|
||||||
|
- // pango_layout_set_font_description (para->layout, font_description);
|
||||||
|
- pango_layout_set_text (para->layout, para->text, para->length);
|
||||||
|
+
|
||||||
|
+ if (page_layout->cpi > 0.0L && page_layout->do_wordwrap) {
|
||||||
|
+ /* figuring out the correct width from the pango_font_metrics_get_approximate_width()
|
||||||
|
+ * is really hard and pango_layout_set_wrap() doesn't work properly then.
|
||||||
|
+ * Those are not reliable to render the characters exactly according to the given CPI.
|
||||||
|
+ * So Re-calculate the width to wrap up to be comfortable with CPI.
|
||||||
|
+ */
|
||||||
|
+ wchar_t *wtext = NULL, *wnewtext = NULL;
|
||||||
|
+ gchar *newtext = NULL;
|
||||||
|
+ gsize len, col, i, wwidth = 0;
|
||||||
|
+ PangoRectangle ink_rect, logical_rect;
|
||||||
|
+
|
||||||
|
+ wtext = (wchar_t *)g_utf8_to_ucs4(para->text, para->length, NULL, NULL, NULL);
|
||||||
|
+ if (wtext == NULL) {
|
||||||
|
+ fprintf(stderr, "%s: Unable to convert UTF-8 to UCS-4.\n", g_get_prgname());
|
||||||
|
+ fail:
|
||||||
|
+ g_free(wtext);
|
||||||
|
+ g_free(wnewtext);
|
||||||
|
+ g_free(newtext);
|
||||||
|
+ if (page_layout->cups_mode) {
|
||||||
|
+ /* try to continue parsing text */
|
||||||
|
+ p = next;
|
||||||
|
+ continue;
|
||||||
|
+ } else {
|
||||||
|
+ exit(1);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ len = g_utf8_strlen(para->text, para->length);
|
||||||
|
+ /* the amount of characters that can be put on the line against CPI */
|
||||||
|
+ col = page_layout->column_width / 72.0 * page_layout->cpi;
|
||||||
|
+ if (len > col) {
|
||||||
|
+ /* need to wrap up them */
|
||||||
|
+ wnewtext = g_new(wchar_t, wcslen(wtext) + 1);
|
||||||
|
+ if (wnewtext == NULL) {
|
||||||
|
+ fprintf(stderr, "%s: Unable to allocate the memory.\n", g_get_prgname());
|
||||||
|
+ goto fail;
|
||||||
|
+ }
|
||||||
|
+ for (i = 0; i < len; i++) {
|
||||||
|
+ wwidth += wcwidth(wtext[i]);
|
||||||
|
+ if (wwidth > col)
|
||||||
|
+ break;
|
||||||
|
+ wnewtext[i] = wtext[i];
|
||||||
|
+ }
|
||||||
|
+ wnewtext[i] = 0L;
|
||||||
|
+
|
||||||
|
+ newtext = g_ucs4_to_utf8((const gunichar *)wnewtext, i, NULL, NULL, NULL);
|
||||||
|
+ if (newtext == NULL) {
|
||||||
|
+ fprintf(stderr, "%s: Unable to convert UCS-4 to UTF-8.\n", g_get_prgname());
|
||||||
|
+ goto fail;
|
||||||
|
+ }
|
||||||
|
+ pango_layout_set_text(para->layout, newtext, -1);
|
||||||
|
+ pango_layout_get_extents(para->layout, &ink_rect, &logical_rect);
|
||||||
|
+ paint_width = logical_rect.width / PANGO_SCALE;
|
||||||
|
+ g_free(wnewtext);
|
||||||
|
+ g_free(newtext);
|
||||||
|
+
|
||||||
|
+ para->length = i;
|
||||||
|
+ next = g_utf8_offset_to_pointer(para->text, para->length);
|
||||||
|
+ wc = g_utf8_prev_char(next);
|
||||||
|
+ } else {
|
||||||
|
+ pango_layout_set_text(para->layout, para->text, para->length);
|
||||||
|
+ }
|
||||||
|
+ g_free(wtext);
|
||||||
|
+
|
||||||
|
+ pango_layout_set_width(para->layout, -1);
|
||||||
|
+ } else {
|
||||||
|
+ pango_layout_set_text (para->layout, para->text, para->length);
|
||||||
|
+ if (page_layout->do_wordwrap) {
|
||||||
|
+ pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
|
||||||
|
+ pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
|
||||||
|
+ } else {
|
||||||
|
+ pango_layout_set_width (para->layout, -1);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
pango_layout_set_justify (para->layout, page_layout->do_justify);
|
||||||
|
pango_layout_set_alignment (para->layout,
|
||||||
|
page_layout->pango_dir == PANGO_DIRECTION_LTR
|
||||||
|
? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT);
|
||||||
|
- if (page_layout->do_wordwrap) {
|
||||||
|
- pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
|
||||||
|
- pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
|
||||||
|
- } else {
|
||||||
|
- pango_layout_set_width (para->layout, -1);
|
||||||
|
- }
|
||||||
|
|
||||||
|
para->height = 0;
|
||||||
|
|
31
SOURCES/paps-fix-loop-in-split.patch
Normal file
31
SOURCES/paps-fix-loop-in-split.patch
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
From 6c3fa9959dd454938378ade2fec8e84cee7d6916 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Akira TAGOH <tagoh@redhat.com>
|
||||||
|
Date: Tue, 27 Jul 2010 12:19:30 +0900
|
||||||
|
Subject: [PATCH 1/2] Fix rhbz#618483: texttopaps becoms runaway memory hog
|
||||||
|
|
||||||
|
* src/paps.c (split_text_into_paragraphs): fix a infinite loop
|
||||||
|
when non-printable characters are in the text.
|
||||||
|
---
|
||||||
|
src/paps.c | 5 ++++-
|
||||||
|
1 files changed, 4 insertions(+), 1 deletions(-)
|
||||||
|
|
||||||
|
* paps.c: Erased --justify option since it is not implemented in
|
||||||
|
diff --git a/src/paps.c b/src/paps.c
|
||||||
|
index 72dbaad..dcef349 100644
|
||||||
|
--- a/src/paps.c
|
||||||
|
+++ b/src/paps.c
|
||||||
|
@@ -835,7 +835,10 @@ split_text_into_paragraphs (PangoContext *pango_context,
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
for (i = 0; i < len; i++) {
|
||||||
|
- wwidth += wcwidth(wtext[i]);
|
||||||
|
+ gssize w = wcwidth(wtext[i]);
|
||||||
|
+
|
||||||
|
+ if (w >= 0)
|
||||||
|
+ wwidth += w;
|
||||||
|
if (wwidth > col)
|
||||||
|
break;
|
||||||
|
wnewtext[i] = wtext[i];
|
||||||
|
--
|
||||||
|
1.7.1.1
|
||||||
|
|
26
SOURCES/paps-fix-non-weak-symbol.patch
Normal file
26
SOURCES/paps-fix-non-weak-symbol.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
diff -pruN paps-0.6.8.orig/src/Makefile.am paps-0.6.8/src/Makefile.am
|
||||||
|
--- paps-0.6.8.orig/src/Makefile.am 2012-11-23 14:22:51.506176037 +0900
|
||||||
|
+++ paps-0.6.8/src/Makefile.am 2012-11-23 14:25:41.828410416 +0900
|
||||||
|
@@ -8,13 +8,14 @@ bin_PROGRAMS = paps
|
||||||
|
paps_CFLAGS = -Wall $(CUPS_CFLAGS)
|
||||||
|
paps_SOURCES = paps.c
|
||||||
|
paps_LDADD = $(lib_LTLIBRARIES) $(all_libraries)
|
||||||
|
-paps_LDFLAGS = `pkg-config --libs pangoft2` $(CUPS_LIBS)
|
||||||
|
+paps_LDFLAGS = $(CUPS_LIBS)
|
||||||
|
paps_DEPENDENCIES = $(lib_LTLIBRARIES)
|
||||||
|
|
||||||
|
EXTRA_DIST = test_libpaps.c paps.1
|
||||||
|
|
||||||
|
# set the include path found by configure
|
||||||
|
INCLUDES= $(all_includes) `pkg-config --cflags pangoft2`
|
||||||
|
+LIBS = `pkg-config --libs pangoft2`
|
||||||
|
|
||||||
|
# Test program
|
||||||
|
noinst_PROGRAMS = test_libpaps
|
||||||
|
@@ -22,6 +23,5 @@ noinst_PROGRAMS = test_libpaps
|
||||||
|
|
||||||
|
test_libpaps_SOURCES = test_libpaps.c
|
||||||
|
test_libpaps_LDADD = $(lib_LTLIBRARIES) $(all_libraries)
|
||||||
|
-test_libpaps_LDFLAGS = `pkg-config --libs pangoft2`
|
||||||
|
test_libpaps_DEPENDENCIES = $(lib_LTLIBRARIES)
|
||||||
|
|
15
SOURCES/paps-fix-paper-size-truncate.patch
Normal file
15
SOURCES/paps-fix-paper-size-truncate.patch
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
|
||||||
|
--- paps-0.6.8.orig/src/paps.c 2015-04-24 11:49:53.220718394 +0900
|
||||||
|
+++ paps-0.6.8/src/paps.c 2015-04-24 11:51:30.847718394 +0900
|
||||||
|
@@ -532,9 +532,9 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
|
/* Page layout */
|
||||||
|
if (page_width < 0)
|
||||||
|
- page_width = paper_sizes[(int)paper_type].width;
|
||||||
|
+ page_width = (paper_sizes[(int)paper_type].width + 0.5);
|
||||||
|
if (page_height < 0)
|
||||||
|
- page_height = paper_sizes[(int)paper_type].height;
|
||||||
|
+ page_height = (paper_sizes[(int)paper_type].height + 0.5);
|
||||||
|
|
||||||
|
if (num_columns == 1)
|
||||||
|
total_gutter_width = 0;
|
77
SOURCES/paps-fix-tab-width.patch
Normal file
77
SOURCES/paps-fix-tab-width.patch
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
@@ -, +, @@
|
||||||
|
---
|
||||||
|
src/libpaps.c | 40 +++++++++++++++++++++++++++++-----------
|
||||||
|
1 file changed, 29 insertions(+), 11 deletions(-)
|
||||||
|
--- a/src/libpaps.c
|
||||||
|
+++ a/src/libpaps.c
|
||||||
|
@@ -251,7 +251,6 @@ gchar *paps_layout_line_to_postscript_strdup(paps_t *paps_,
|
||||||
|
{
|
||||||
|
paps_private_t *paps = (paps_private_t*)paps_;
|
||||||
|
GString *layout_str = g_string_new("");
|
||||||
|
- gchar *ret_str;
|
||||||
|
|
||||||
|
add_line_to_postscript(paps,
|
||||||
|
layout_str,
|
||||||
|
@@ -259,10 +258,7 @@ gchar *paps_layout_line_to_postscript_strdup(paps_t *paps_,
|
||||||
|
pos_y,
|
||||||
|
layout_line);
|
||||||
|
|
||||||
|
- ret_str = layout_str->str;
|
||||||
|
- g_string_free(layout_str, FALSE);
|
||||||
|
-
|
||||||
|
- return ret_str;
|
||||||
|
+ return g_string_free(layout_str, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
@@ -408,9 +404,26 @@ static void draw_contour(paps_private_t *paps,
|
||||||
|
{
|
||||||
|
GSList *runs_list;
|
||||||
|
double scale = 72.0 / PANGO_SCALE / PAPS_DPI;
|
||||||
|
+ PangoGlyphUnit avg_width = 1;
|
||||||
|
|
||||||
|
g_string_append(layout_str, "(");
|
||||||
|
-
|
||||||
|
+
|
||||||
|
+ if (paps->cpi > 0.0L)
|
||||||
|
+ {
|
||||||
|
+ /* calculate approximate width per a character */
|
||||||
|
+ for (runs_list = pango_line->runs; runs_list != NULL; runs_list = g_slist_next(runs_list))
|
||||||
|
+ {
|
||||||
|
+ PangoLayoutRun *run = runs_list->data;
|
||||||
|
+ PangoGlyphString *glyphs = run->glyphs;
|
||||||
|
+ int i;
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < glyphs->num_glyphs; i++)
|
||||||
|
+ {
|
||||||
|
+ if (glyphs->glyphs[i].glyph != PANGO_GLYPH_EMPTY)
|
||||||
|
+ avg_width = MAX (avg_width, glyphs->glyphs[i].geometry.width);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
/* Loop over the runs and output font info */
|
||||||
|
runs_list = pango_line->runs;
|
||||||
|
double x_pos = line_start_pos_x;
|
||||||
|
@@ -433,11 +446,16 @@ static void draw_contour(paps_private_t *paps,
|
||||||
|
glyph_pos_x = x_pos + 1.0*geometry.x_offset * scale;
|
||||||
|
glyph_pos_y = line_start_pos_y - 1.0*geometry.y_offset * scale;
|
||||||
|
|
||||||
|
- if (paps->cpi > 0.0L) {
|
||||||
|
- x_pos += (1 / paps->cpi * 72.0);
|
||||||
|
- } else {
|
||||||
|
- x_pos += geometry.width * scale * paps->scale_x;
|
||||||
|
- }
|
||||||
|
+ if (paps->cpi > 0.0L)
|
||||||
|
+ {
|
||||||
|
+ double n = ((double)geometry.width) / avg_width;
|
||||||
|
+
|
||||||
|
+ x_pos += n * (1 / paps->cpi * 72.0);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ x_pos += geometry.width * scale * paps->scale_x;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (glyphs->glyphs[glyph_idx].glyph == PANGO_GLYPH_EMPTY)
|
||||||
|
continue;
|
||||||
|
--
|
15
SOURCES/paps-ft-header.patch
Normal file
15
SOURCES/paps-ft-header.patch
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
diff -pruN paps-0.6.8.orig/src/libpaps.c paps-0.6.8/src/libpaps.c
|
||||||
|
--- paps-0.6.8.orig/src/libpaps.c 2014-03-20 12:10:50.000000000 +0900
|
||||||
|
+++ paps-0.6.8/src/libpaps.c 2014-03-20 12:11:54.000000000 +0900
|
||||||
|
@@ -25,8 +25,9 @@
|
||||||
|
|
||||||
|
#include <pango/pango.h>
|
||||||
|
#include <pango/pangoft2.h>
|
||||||
|
-#include <freetype/ftglyph.h>
|
||||||
|
-#include <freetype/ftoutln.h>
|
||||||
|
+#include <ft2build.h>
|
||||||
|
+#include FT_GLYPH_H
|
||||||
|
+#include FT_OUTLINE_H
|
||||||
|
#include <errno.h>
|
||||||
|
#include <locale.h>
|
||||||
|
#include <stdlib.h>
|
37
SOURCES/paps-langinfo.patch
Normal file
37
SOURCES/paps-langinfo.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
|
||||||
|
--- paps-0.6.8.orig/src/paps.c 2008-09-01 15:07:03.000000000 +0900
|
||||||
|
+++ paps-0.6.8/src/paps.c 2008-09-01 15:49:10.000000000 +0900
|
||||||
|
@@ -25,6 +25,7 @@
|
||||||
|
#include <pango/pangoft2.h>
|
||||||
|
#include "libpaps.h"
|
||||||
|
#include <errno.h>
|
||||||
|
+#include <langinfo.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
@@ -331,6 +332,9 @@ int main(int argc, char *argv[])
|
||||||
|
GIConv cvh = NULL;
|
||||||
|
GOptionGroup *options;
|
||||||
|
|
||||||
|
+ /* Set locale from environment. */
|
||||||
|
+ setlocale(LC_ALL, "");
|
||||||
|
+
|
||||||
|
/* Prerequisite when using glib. */
|
||||||
|
g_type_init();
|
||||||
|
|
||||||
|
@@ -480,6 +484,15 @@ int main(int argc, char *argv[])
|
||||||
|
page_layout.scale_x = page_layout.scale_y = 1.0;
|
||||||
|
|
||||||
|
|
||||||
|
+ if (encoding == NULL)
|
||||||
|
+ {
|
||||||
|
+ encoding = g_strdup(nl_langinfo(CODESET));
|
||||||
|
+ if (!strcmp(encoding, "UTF-8"))
|
||||||
|
+ {
|
||||||
|
+ g_free(encoding);
|
||||||
|
+ encoding = NULL;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
if (encoding != NULL)
|
||||||
|
{
|
||||||
|
cvh = g_iconv_open ("UTF-8", encoding);
|
8
SOURCES/paps.convs
Normal file
8
SOURCES/paps.convs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Use the texttopaps filter (from the paps package) in preference to
|
||||||
|
# the texttops filter shipped as part of CUPS. This is so that we
|
||||||
|
# have full UTF-8 support.
|
||||||
|
#
|
||||||
|
# To use the default CUPS texttops filter instead, remove this file
|
||||||
|
# (or the package it belongs to).
|
||||||
|
|
||||||
|
text/plain application/postscript 30 texttopaps
|
443
SPECS/paps.spec
Normal file
443
SPECS/paps.spec
Normal file
@ -0,0 +1,443 @@
|
|||||||
|
Name: paps
|
||||||
|
Version: 0.7.1
|
||||||
|
Release: 4%{?dist}
|
||||||
|
|
||||||
|
License: LGPLv2+
|
||||||
|
URL: http://paps.sourceforge.net/
|
||||||
|
Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz
|
||||||
|
Source1: paps.convs
|
||||||
|
Source2: 29-paps.conf
|
||||||
|
Source3: http://downloads.sourceforge.net/%{name}/%{name}-0.6.8.tar.gz
|
||||||
|
BuildRequires: make
|
||||||
|
BuildRequires: pango-devel automake autoconf libtool doxygen cups-devel intltool
|
||||||
|
## https://sourceforge.net/tracker/index.php?func=detail&aid=1832897&group_id=153049&atid=786241
|
||||||
|
Patch0: paps-0.6.8-shared.patch
|
||||||
|
## https://sourceforge.net/tracker/index.php?func=detail&aid=1832924&group_id=153049&atid=786241
|
||||||
|
Patch1: paps-0.6.8-wordwrap.patch
|
||||||
|
## https://sourceforge.net/tracker/index.php?func=detail&aid=1832926&group_id=153049&atid=786241
|
||||||
|
Patch2: paps-langinfo.patch
|
||||||
|
## https://sourceforge.net/tracker/index.php?func=detail&aid=1832929&group_id=153049&atid=786241
|
||||||
|
Patch3: paps-0.6.6-lcnumeric.patch
|
||||||
|
## https://sourceforge.net/tracker/index.php?func=detail&aid=1832935&group_id=153049&atid=786241
|
||||||
|
Patch4: paps-exitcode.patch
|
||||||
|
## rhbz#854897
|
||||||
|
Patch5: paps-854897-manpage.patch
|
||||||
|
## Fedora specific patch to integrate with CUPS
|
||||||
|
Patch50: paps-cups.patch
|
||||||
|
Patch51: paps-cpilpi.patch
|
||||||
|
## rhbz#424951
|
||||||
|
Patch52: paps-dsc-compliant.patch
|
||||||
|
Patch53: paps-autoconf262.patch
|
||||||
|
## rhbz#524883
|
||||||
|
Patch54: paps-fix-cpi.patch
|
||||||
|
## rhbz#618483
|
||||||
|
Patch55: paps-fix-loop-in-split.patch
|
||||||
|
## rhbz#857592
|
||||||
|
Patch56: paps-fix-tab-width.patch
|
||||||
|
Patch57: paps-fix-non-weak-symbol.patch
|
||||||
|
Patch58: paps-correct-fsf-address.patch
|
||||||
|
## rhbz#1078519
|
||||||
|
Patch59: %{name}-ft-header.patch
|
||||||
|
## rhbz#1196997
|
||||||
|
Patch60: %{name}-a3.patch
|
||||||
|
## rhbz#1214939
|
||||||
|
Patch61: %{name}-fix-paper-size-truncate.patch
|
||||||
|
|
||||||
|
Summary: Plain Text to PostScript converter
|
||||||
|
%description
|
||||||
|
paps is a PostScript converter from plain text file using Pango.
|
||||||
|
|
||||||
|
%package -n texttopaps
|
||||||
|
Summary: CUPS filter based on paps
|
||||||
|
Obsoletes: %{name}-libs < %{version}
|
||||||
|
Obsoletes: %{name}-devel < %{version}
|
||||||
|
Requires: cups-filesystem fontpackages-filesystem
|
||||||
|
%description -n texttopaps
|
||||||
|
|
||||||
|
paps is a PostScript converter from plain text file using Pango.
|
||||||
|
|
||||||
|
This package contains a CUPS filter based on paps.
|
||||||
|
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -q -a 3
|
||||||
|
pushd %{name}-0.6.8
|
||||||
|
%patch0 -p1 -b .shared
|
||||||
|
%patch1 -p1 -b .wordwrap
|
||||||
|
%patch2 -p1 -b .langinfo
|
||||||
|
%patch3 -p1 -b .lcnumeric
|
||||||
|
%patch4 -p1 -b .exitcode
|
||||||
|
%patch5 -p1 -b .manpage
|
||||||
|
%patch50 -p1 -b .cups
|
||||||
|
%patch51 -p1 -b .cpilpi
|
||||||
|
%patch52 -p1 -b .dsc
|
||||||
|
%patch53 -p1 -b .autoconf262
|
||||||
|
%patch54 -p1 -b .fixcpi
|
||||||
|
%patch55 -p1 -b .loop
|
||||||
|
%patch56 -p1 -b .tab
|
||||||
|
%patch57 -p1 -b .weak-symbol
|
||||||
|
%patch58 -p1 -b .fsf
|
||||||
|
%patch59 -p1 -b .ft-header
|
||||||
|
%patch60 -p1 -b .a3
|
||||||
|
%patch61 -p1 -b .paper-size
|
||||||
|
libtoolize -f -c
|
||||||
|
autoreconf -f -i
|
||||||
|
popd
|
||||||
|
|
||||||
|
|
||||||
|
%build
|
||||||
|
%configure --disable-static
|
||||||
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
|
pushd %{name}-0.6.8
|
||||||
|
%configure --disable-static
|
||||||
|
make %{?_smp_mflags}
|
||||||
|
popd
|
||||||
|
|
||||||
|
%install
|
||||||
|
pushd %{name}-0.6.8
|
||||||
|
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="/usr/bin/install -p"
|
||||||
|
|
||||||
|
# remove unnecessary files
|
||||||
|
rm $RPM_BUILD_ROOT%{_libdir}/libpaps.la
|
||||||
|
|
||||||
|
# make a symlink for CUPS filter
|
||||||
|
install -d $RPM_BUILD_ROOT%{_cups_serverbin}/filter # Not libdir
|
||||||
|
mv $RPM_BUILD_ROOT%{_bindir}/paps $RPM_BUILD_ROOT%{_cups_serverbin}/filter/texttopaps
|
||||||
|
mv $RPM_BUILD_ROOT%{_mandir}/man1/paps.1 $RPM_BUILD_ROOT%{_mandir}/man1/texttopaps.1
|
||||||
|
|
||||||
|
install -d $RPM_BUILD_ROOT%{_datadir}/cups/mime
|
||||||
|
install -p -m0644 %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/cups/mime/
|
||||||
|
|
||||||
|
install -d $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d
|
||||||
|
install -p -m0644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d/
|
||||||
|
|
||||||
|
rm -rf $RPM_BUILD_ROOT%{_includedir}
|
||||||
|
rm $RPM_BUILD_ROOT%{_libdir}/libpaps.so
|
||||||
|
popd
|
||||||
|
|
||||||
|
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="/usr/bin/install -p"
|
||||||
|
|
||||||
|
%ldconfig_scriptlets libs
|
||||||
|
|
||||||
|
%files
|
||||||
|
%doc AUTHORS COPYING.LIB README
|
||||||
|
%{_bindir}/paps
|
||||||
|
%{_mandir}/man1/paps.1*
|
||||||
|
|
||||||
|
%files -n texttopaps
|
||||||
|
%doc %{name}-0.6.8/COPYING.LIB %{name}-0.6.8/AUTHORS %{name}-0.6.8/README
|
||||||
|
%{_mandir}/man1/texttopaps.1*
|
||||||
|
%{_libdir}/libpaps.so.*
|
||||||
|
%{_cups_serverbin}/filter/texttopaps
|
||||||
|
%{_datadir}/cups/mime/paps.convs
|
||||||
|
%{_sysconfdir}/fonts/conf.d/29-paps.conf
|
||||||
|
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 0.7.1-4
|
||||||
|
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||||
|
Related: rhbz#1991688
|
||||||
|
|
||||||
|
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 0.7.1-3
|
||||||
|
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
|
||||||
|
|
||||||
|
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.1-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Oct 8 2020 Akira TAGOH <tagoh@redhat.com> - 0.7.1-1
|
||||||
|
- New upstream release.
|
||||||
|
Resolves: rhbz#1254352
|
||||||
|
- Sub-package texttopaps with old code.
|
||||||
|
|
||||||
|
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-46
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-45
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-44
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-43
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-42
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-41
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sat Jan 20 2018 Björn Esser <besser82@fedoraproject.org> - 0.6.8-40
|
||||||
|
- Rebuilt for switch to libxcrypt
|
||||||
|
|
||||||
|
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-39
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-38
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-37
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-36
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-35
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Apr 24 2015 Akira TAGOH <tagoh@redhat.com> - 0.6.8-34
|
||||||
|
- Fix wrong paper size due to the integer cast.
|
||||||
|
|
||||||
|
* Mon Mar 2 2015 Akira TAGOH <tagoh@redhat.com> - 0.6.8-33
|
||||||
|
- Support A3 paper size.
|
||||||
|
|
||||||
|
* Sat Feb 21 2015 Till Maas <opensource@till.name> - 0.6.8-32
|
||||||
|
- Rebuilt for Fedora 23 Change
|
||||||
|
https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code
|
||||||
|
|
||||||
|
* Fri Oct 31 2014 Akira TAGOH <tagoh@redhat.com> - 0.6.8-31
|
||||||
|
- Add a fontconfig config to force the scalable font.
|
||||||
|
|
||||||
|
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-30
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jun 06 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-29
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Mar 20 2014 Akira TAGOH <tagoh@redhat.com> - 0.6.8-28
|
||||||
|
- Fix FTBFS against freetype's header files location change. (#1078519)
|
||||||
|
|
||||||
|
* Mon Dec 16 2013 Akira TAGOH <tagoh@redhat.com> - 0.6.8-27
|
||||||
|
- Move the place of paps.convs to %%{_datadir}/cups/mime. (#1042984)
|
||||||
|
|
||||||
|
* Wed Jul 31 2013 Akira TAGOH <tagoh@redhat.com> - 0.6.8-26
|
||||||
|
- Fix the width calculation with CPI enabled. (#990228)
|
||||||
|
|
||||||
|
* Thu Apr 18 2013 Akira TAGOH <tagoh@redhat.com> - 0.6.8-25
|
||||||
|
- Rebuilt for aarch64 support. (#926309)
|
||||||
|
|
||||||
|
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-24
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Nov 23 2012 Akira TAGOH <tagoh@redhat.com> - 0.6.8-23
|
||||||
|
- the spec file cleanup
|
||||||
|
- Fix the undefined symbol issue in libpaps.so.0
|
||||||
|
- Correct FSF address in the COPYING.LIB
|
||||||
|
|
||||||
|
* Mon Sep 24 2012 Akira TAGOH <tagoh@redhat.com> - 0.6.8-22
|
||||||
|
- Ensure the latest version of paps-libs are installed.
|
||||||
|
|
||||||
|
* Fri Sep 21 2012 Akira TAGOH <tagoh@redhat.com> - 0.6.8-21
|
||||||
|
- Fix wrong width for whitespaces when enabling CPI feature. (#857592)
|
||||||
|
|
||||||
|
* Thu Sep 6 2012 Akira TAGOH <tagoh@redhat.com> - 0.6.8-20
|
||||||
|
- Add a missing description of --encoding in manpage. (#854897)
|
||||||
|
|
||||||
|
* Fri Jul 20 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-19
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jan 11 2012 Akira TAGOH <tagoh@redhat.com> - 0.6.8-18
|
||||||
|
- Use %%{_cups_serverbin} instead of the hardcoded path. (#772240)
|
||||||
|
|
||||||
|
* Mon Dec 5 2011 Akira TAGOH <tagoh@redhat.com> - 0.6.8-17
|
||||||
|
- Add ldconfig in %%post/%%postun for paps-libs (#759880)
|
||||||
|
|
||||||
|
* Fri Jun 24 2011 Akira TAGOH <tagoh@redhat.com> - 0.6.8-16
|
||||||
|
- Fix FTBFS issue. (#716211)
|
||||||
|
|
||||||
|
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-15
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jul 27 2010 Akira TAGOH <tagoh@redhat.com> - 0.6.8-14
|
||||||
|
- Fix the infinite loop in splitting paragraphs (#618483)
|
||||||
|
|
||||||
|
* Fri Mar 12 2010 Akira TAGOH <tagoh@redhat.com> - 0.6.8-13
|
||||||
|
- Fix the directory's group ownership. (#572733)
|
||||||
|
|
||||||
|
* Tue Dec 8 2009 Akira TAGOH <tagoh@redhat.com> - 0.6.8-12
|
||||||
|
- Add paps.convs to behaves the cups filter without the hardcoded thing
|
||||||
|
in cups. (#545031)
|
||||||
|
|
||||||
|
* Wed Oct 14 2009 Akira TAGOH <tagoh@redhat.com> - 0.6.8-11
|
||||||
|
- Fix code that deal with CPI parameter to be accurate. (#524883)
|
||||||
|
|
||||||
|
* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-10
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-9
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Nov 17 2008 Akira TAGOH <tagoh@redhat.com> - 0.6.8-8
|
||||||
|
- Courier font to be a default font for texttopaps. (#469325)
|
||||||
|
|
||||||
|
* Mon Sep 1 2008 Akira TAGOH <tagoh@redhat.com> - 0.6.8-7
|
||||||
|
- paps-langinfo.patch: Updated.
|
||||||
|
- paps-exitcode.patch: Updated.
|
||||||
|
|
||||||
|
* Fri May 16 2008 Akira TAGOH <tagoh@redhat.com> - 0.6.8-6
|
||||||
|
- paps-cups.patch: Fix printing with -o landscape in CUPS. (#222137)
|
||||||
|
- paps-autoconf262.patch: Fix an error on autoreconf.
|
||||||
|
|
||||||
|
* Tue Feb 12 2008 Akira TAGOH <tagoh@redhat.com> - 0.6.8-5
|
||||||
|
- Rebuild for gcc-4.3.
|
||||||
|
|
||||||
|
* Wed Jan 23 2008 Akira TAGOH <tagoh@redhat.com> - 0.6.8-4
|
||||||
|
- Fix an exception on ghostscript. (#429275)
|
||||||
|
|
||||||
|
* Tue Jan 15 2008 Akira TAGOH <tagoh@redhat.com> - 0.6.8-3
|
||||||
|
- Put %%%%Pages: after %%%%Trailer. (#424951)
|
||||||
|
|
||||||
|
* Thu Jan 10 2008 Akira TAGOH <tagoh@redhat.com> - 0.6.8-2
|
||||||
|
- paps-0.6.8-dsc-compliant.patch: Patch out to be DSC compliant. (#424951)
|
||||||
|
|
||||||
|
* Fri Nov 30 2007 Akira TAGOH <tagoh@redhat.com> - 0.6.8-1
|
||||||
|
- New upstream release.
|
||||||
|
- Remove patches merged and unnecessary anymore:
|
||||||
|
- paps-makefile.patch
|
||||||
|
- paps-formfeed.patch
|
||||||
|
- paps-0.6.6-encoding.patch
|
||||||
|
- paps-typo-font-scale.patch
|
||||||
|
- paps-0.6.6-segfault.patch
|
||||||
|
- paps-0.6.6-font-option.patch
|
||||||
|
- paps-0.6.6-lcctype.patch
|
||||||
|
- paps-0.6.8-shared.patch: Enable building shared library.
|
||||||
|
- paps-0.6.8-wordwrap.patch: Update a bit to get it working without an wordwrap
|
||||||
|
mode.
|
||||||
|
- Add paps-libs and paps-devel package.
|
||||||
|
- paps-cups.patch: Update.
|
||||||
|
- paps-cpilpi.patch: Update.
|
||||||
|
- Fix the wrong rendering with CPI option. (#237202)
|
||||||
|
- Fix the unnecessary rotation with the landscape option when paps is running
|
||||||
|
as CUPS filter. (#222137)
|
||||||
|
|
||||||
|
* Thu Aug 23 2007 Akira TAGOH <tagoh@redhat.com> - 0.6.6-21
|
||||||
|
- Rebuild
|
||||||
|
|
||||||
|
* Fri Aug 10 2007 Akira TAGOH <tagoh@redhat.com>
|
||||||
|
- Update License tag.
|
||||||
|
|
||||||
|
* Wed May 30 2007 Akira TAGOH <tagoh@redhat.com> - 0.6.6-20
|
||||||
|
- Fix to not do wordwrap when 'wrap=false' is given. (#240588)
|
||||||
|
|
||||||
|
* Tue Mar 27 2007 Akira TAGOH <tagoh@redhat.com> - 0.6.6-19
|
||||||
|
- Fix PostScript breakage following the non-monetary numeric format from
|
||||||
|
current locale. (#231916)
|
||||||
|
|
||||||
|
* Wed Mar 7 2007 Akira TAGOH <tagoh@redhat.com> - 0.6.6-18
|
||||||
|
- default to lpi=6 and cpi=10 if paps is bringing up as cups filter. (#223862)
|
||||||
|
|
||||||
|
* Tue Jan 23 2007 Akira TAGOH <tagoh@redhat.com>
|
||||||
|
- Better the encoding guess by looking at current locale. (#212154)
|
||||||
|
|
||||||
|
* Mon Dec 4 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-17
|
||||||
|
- Fix a segfault on non-printable character. (#216296)
|
||||||
|
|
||||||
|
* Sat Sep 30 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-16
|
||||||
|
- paps-0.6.6-exitcode.patch: exit immediately with proper exit code
|
||||||
|
when unrecoverable error occurs. (#208592)
|
||||||
|
|
||||||
|
* Fri Sep 29 2006 Tim Waugh <twaugh@redhat.com> - 0.6.6-15
|
||||||
|
- Avoid using iconv when not needed (bug #206259).
|
||||||
|
|
||||||
|
* Thu Sep 14 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-14
|
||||||
|
- paps-cups.patch: try to parse input even if any invalid character appears.
|
||||||
|
(#206259)
|
||||||
|
|
||||||
|
* Thu Aug 31 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-13
|
||||||
|
- paps-formfeed.patch: fixed to not insert an extra line in next page.
|
||||||
|
(#202731)
|
||||||
|
|
||||||
|
* Thu Aug 17 2006 Tim Waugh <twaugh@redhat.com> - 0.6.6-12
|
||||||
|
- Map CUPS charset names to real ones (bug #197577).
|
||||||
|
|
||||||
|
* Mon Jul 17 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-11
|
||||||
|
- add an owner info to PS.
|
||||||
|
|
||||||
|
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 0.6.6-10.2
|
||||||
|
- rebuild
|
||||||
|
|
||||||
|
* Tue Jul 4 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-10
|
||||||
|
- paps-0.6.6-cpilpi.patch: add --cpi and --lpi option to support the characters
|
||||||
|
per inch and the lines per inch.
|
||||||
|
- paps-cups.patch: add cpi and lpi support.
|
||||||
|
|
||||||
|
* Thu Jun 29 2006 Tim Waugh <twaugh@redhat.com> - 0.6.6-9
|
||||||
|
- Fixed font-option patch.
|
||||||
|
- Adjusted CUPS patch: CUPS invokes the filter with the destination
|
||||||
|
printer name in argv[0], not the binary name.
|
||||||
|
- CUPS filter lives in CUPS_SERVERBIN, which is /usr/lib/cups on all
|
||||||
|
architectures -- not %%{_libdir}/cups.
|
||||||
|
|
||||||
|
* Thu Jun 29 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-8
|
||||||
|
- use dist tag.
|
||||||
|
- paps-cups.patch: applied to work paps as CUPS filter.
|
||||||
|
- paps-0.6.6-encoding.patch: null-terminates the output.
|
||||||
|
|
||||||
|
* Tue Jun 27 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-7
|
||||||
|
- rebuilt to import into Core.
|
||||||
|
|
||||||
|
* Wed Jun 21 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-6
|
||||||
|
- paps-0.6.6-wordwrap.patch: applied to do a wordwrap.
|
||||||
|
|
||||||
|
* Tue Jun 20 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-5
|
||||||
|
- paps-typo-font-scale.patch: backported from CVS.
|
||||||
|
- paps-0.6.6-font-option.patch: integrated --font-family and --font-scale
|
||||||
|
options to --font.
|
||||||
|
- paps-0.6.6-lcctype.patch: follow LC_CTYPE to determine the default language.
|
||||||
|
|
||||||
|
* Fri Jun 16 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-4
|
||||||
|
- added libtool and doxygen to BuildReq.
|
||||||
|
- removed NEWS file which is empty.
|
||||||
|
|
||||||
|
* Mon Jun 12 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-3
|
||||||
|
- use make install DESTDIR=... instead of %%makeinstall
|
||||||
|
- add automake and autoconf to BuildReq.
|
||||||
|
|
||||||
|
* Thu May 25 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-2
|
||||||
|
- paps-0.6.6-encoding.patch: support --encoding option to be able to convert
|
||||||
|
the input file to UTF-8.
|
||||||
|
- paps-0.6.6-segfault.patch: fixed a possible segfault issue when reading is
|
||||||
|
failed.
|
||||||
|
|
||||||
|
* Fri May 19 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-1
|
||||||
|
- New upstream release.
|
||||||
|
|
||||||
|
* Mon Apr 17 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.5-1
|
||||||
|
- New upstream release.
|
||||||
|
- paps-0.6.3-fix-pagesize.patch: removed. it has been merged in upstream.
|
||||||
|
- paps-0.6.3-goption.patch: removed. it has been merged in upstream.
|
||||||
|
- paps-0.6.3-header.patch: removed. it has been merged in upstream.
|
||||||
|
- paps-makefile.patch: rework to be applied.
|
||||||
|
|
||||||
|
* Fri Mar 31 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.3-4
|
||||||
|
- paps-0.6.3-formfeed.patch: applied to deal with the formfeed mark properly.
|
||||||
|
- paps-0.6.3-goption.patch: rewritten option parser using GOption. and segfault
|
||||||
|
gone as well. (#187205)
|
||||||
|
- paps-0.6.3-header.patch: applied to support the output of the page header.
|
||||||
|
|
||||||
|
* Fri Mar 24 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.3-3
|
||||||
|
- paps-0.6.3-fix-pagesize.patch: fixed displaying the beginning of line at out of page. (#176207)
|
||||||
|
|
||||||
|
* Thu Mar 2 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.3-2
|
||||||
|
- rebuilt.
|
||||||
|
|
||||||
|
* Wed Jan 11 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.3-1
|
||||||
|
- New upstream release.
|
||||||
|
- paps-0.6.2-fix-bufferoverflow.patch: removed.
|
||||||
|
|
||||||
|
* Wed Dec 21 2005 Akira TAGOH <tagoh@redhat.com> - 0.6.2-1
|
||||||
|
- New upstream release.
|
||||||
|
- the bitmap font is now ignored. (#176206)
|
||||||
|
- paps-0.6.2-fix-bufferoverflow.patch: applied to fix the buffer overflow.
|
||||||
|
|
||||||
|
* Tue Dec 13 2005 Akira TAGOH <tagoh@redhat.com> - 0.6.1-1
|
||||||
|
- New upstream release.
|
||||||
|
- paps-0.6.1-makefile.patch: applied to install docs on the proper dir.
|
||||||
|
|
||||||
|
* Fri Nov 4 2005 Akira TAGOH <tagoh@redhat.com> - 0.5-1
|
||||||
|
- New upstream release.
|
||||||
|
|
||||||
|
* Tue Oct 18 2005 Akira TAGOH <tagoh@redhat.com> - 0.3-1
|
||||||
|
- Initial package.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user