summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre/texlive-bin/PKGBUILD9
-rw-r--r--libre/texlive-bin/texlive-poppler-0.59.patch96
2 files changed, 57 insertions, 48 deletions
diff --git a/libre/texlive-bin/PKGBUILD b/libre/texlive-bin/PKGBUILD
index 1473b8863..12645ec17 100644
--- a/libre/texlive-bin/PKGBUILD
+++ b/libre/texlive-bin/PKGBUILD
@@ -6,10 +6,10 @@
pkgname=texlive-bin
pkgver=2017.44590
-pkgrel=3.parabola1
+pkgrel=7.parabola1
license=('GPL')
arch=('i686' 'x86_64' 'armv7h')
-makedepends=('cairo' 'pixman' 'graphite' 't1lib' 'gd' 'poppler=0.59.0'
+makedepends=('cairo' 'pixman' 'graphite' 't1lib' 'gd' 'poppler=0.60.1'
'libsigsegv' 'zziplib' 'libpng' 'libjpeg' 'freetype2'
'icu=59.1' 'harfbuzz' 'harfbuzz-icu' 'gmp' 'mpfr' 'potrace' 'libpaper'
'perl' 'clisp' 'ffcall')
@@ -19,7 +19,7 @@ source=("http://mirrors.kernel.org/archlinux/other/texlive/texlive-bin-source-${
"texlive-poppler-0.59.patch")
sha256sums=('4645b4d55fc500ba9be7156a6a330afb44fbf7fda40dfd73fe9cb16d207f2038'
'ee97f3e07e235dee4ad6d0c3e85c2260914c965e94d5ffbf481fa506df5f01ec'
- '8ff387b417b4da920d6ffc3f3d89e52796334693cb88b97bf1770931bf2791e5')
+ '76bc0528da33b1f980f85464c95d00736d9997ba7f8d11475c88f03e099e91b0')
prepare() {
cd "$srcdir/source"
@@ -106,7 +106,7 @@ build() {
package() {
pkgdesc="TeX Live binaries (Parabola rebranded)"
- depends=('cairo' 'pixman' 'graphite' 't1lib' 'gd' 'poppler=0.59.0'
+ depends=('cairo' 'pixman' 'graphite' 't1lib' 'gd' 'poppler=0.60.1'
'libsigsegv' 'zziplib' 'libpng' 'libjpeg' 'freetype2'
'icu=59.1' 'harfbuzz' 'harfbuzz-icu' 'gmp' 'mpfr' 'potrace' 'libpaper'
'libsynctex')
@@ -386,4 +386,3 @@ pn2pdf"
rm -f "$pkgdir"/usr/lib/pkgconfig/synctex.pc
rm -f "$pkgdir"/usr/share/man/man*/synctex.*
}
-
diff --git a/libre/texlive-bin/texlive-poppler-0.59.patch b/libre/texlive-bin/texlive-poppler-0.59.patch
index 82b1d4c97..401315a64 100644
--- a/libre/texlive-bin/texlive-poppler-0.59.patch
+++ b/libre/texlive-bin/texlive-poppler-0.59.patch
@@ -720,16 +720,39 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
pdf_puts(" ");
}
pdf_puts("]\n");
-@@ -396,7 +359,7 @@
+@@ -394,10 +357,29 @@
+ #define REPLACE_TYPE1C true
+
++static bool embeddableFont(Object * fontdesc)
++{
++ Object fontfile, ffsubtype;
++
++ if (!fontdesc->isDict())
++ return false;
++ fontfile = fontdesc->dictLookup("FontFile");
++ if (fontfile.isStream())
++ return true;
++ if (REPLACE_TYPE1C) {
++ fontfile = fontdesc->dictLookup("FontFile3");
++ if (!fontfile.isStream())
++ return false;
++ ffsubtype = fontfile.streamGetDict()->lookup("Subtype");
++ return ffsubtype.isName() && !strcmp(ffsubtype.getName(), "Type1C");
++ }
++ return false;
++}
++
static void copyFont(char *tag, Object * fontRef)
{
- PdfObject fontdict, subtype, basefont, fontdescRef, fontdesc, charset,
+- fontfile, ffsubtype, stemV;
+ Object fontdict, subtype, basefont, fontdescRef, fontdesc, charset,
- fontfile, ffsubtype, stemV;
++ stemV;
GfxFont *gfont;
fd_entry *fd;
-@@ -413,33 +376,49 @@
+ fm_entry *fontmap;
+@@ -413,33 +395,39 @@
}
// Only handle included Type1 (and Type1C) fonts; anything else will be copied.
// Type1C fonts are replaced by Type1 fonts, if REPLACE_TYPE1C is true.
@@ -747,23 +770,13 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
- && !strcmp(ffsubtype->getName(), "Type1C")))
- && (fontmap = lookup_fontmap(basefont->getName())) != NULL) {
+ fontdict = fontRef->fetch(xref);
++ fontdesc = Object(objNull);
+ if (fontdict.isDict()) {
+ subtype = fontdict.dictLookup("Subtype");
+ basefont = fontdict.dictLookup("BaseFont");
+ fontdescRef = fontdict.dictLookupNF("FontDescriptor");
+ if (fontdescRef.isRef()) {
+ fontdesc = fontdescRef.fetch(xref);
-+ if (fontdesc.isDict()) {
-+ fontfile = fontdesc.dictLookup("FontFile");
-+ if (!fontfile.isStream() && REPLACE_TYPE1C) {
-+ fontfile = fontdesc.dictLookup("FontFile3");
-+ ffsubtype = fontfile.streamGetDict()->lookup("Subtype");
-+ if (!(ffsubtype.isName() && !strcmp(ffsubtype.getName(), "Type1C"))) {
-+ // not a Type1-C font.
-+ fontfile = Object(objNull);
-+ }
-+ }
-+ }
+ }
+ }
+ if (!fixedinclusioncopyfont && fontdict.isDict()
@@ -772,7 +785,7 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
+ && basefont.isName()
+ && fontdescRef.isRef()
+ && fontdesc.isDict()
-+ && fontfile.isStream()
++ && embeddableFont(&fontdesc)
+ && (fontmap = lookup_fontmap(basefont.getName())) != NULL) {
// round /StemV value, since the PDF input is a float
// (see Font Descriptors in PDF reference), but we only store an
@@ -799,7 +812,7 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
pdf_printf(" %d 0 R ", addFont(fontRef->getRef(), fd,
addEncoding(gfont)));
} else {
-@@ -451,24 +430,24 @@
+@@ -451,24 +439,24 @@
static void copyFontResources(Object * obj)
{
@@ -829,7 +842,7 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
}
pdf_puts(">>\n");
}
-@@ -557,7 +536,7 @@
+@@ -557,7 +545,7 @@
static void copyObject(Object * obj)
{
@@ -838,7 +851,7 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
int i, l, c;
Ref ref;
char *p;
-@@ -601,8 +580,8 @@
+@@ -601,8 +589,8 @@
} else if (obj->isArray()) {
pdf_puts("[");
for (i = 0, l = obj->arrayGetLength(); i < l; ++i) {
@@ -849,16 +862,18 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
pdf_puts(" ");
copyObject(&obj1);
}
-@@ -612,7 +591,7 @@
+@@ -612,9 +600,8 @@
copyDict(obj);
pdf_puts(">>");
} else if (obj->isStream()) {
- initDictFromDict(obj1, obj->streamGetDict());
-+ obj1 = Object(obj->streamGetDict());
pdf_puts("<<\n");
- copyDict(&obj1);
+- copyDict(&obj1);
++ copyDict(obj->getStream()->getDictObject());
pdf_puts(">>\n");
-@@ -638,9 +617,8 @@
+ pdf_puts("stream\n");
+ copyStream(obj->getStream()->getUndecodedStream());
+@@ -638,9 +625,8 @@
InObj *r;
for (r = inObjList; r != 0; r = r->next) {
if (!r->written) {
@@ -869,7 +884,7 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
if (r->type == objFont) {
assert(!obj1.isStream());
pdfbeginobj(r->num, 2); // \pdfobjcompresslevel = 2 is for this
-@@ -656,7 +634,6 @@
+@@ -656,7 +642,6 @@
pdf_puts("\n");
pdfendobj();
}
@@ -877,7 +892,7 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
}
}
}
-@@ -839,8 +816,8 @@
+@@ -839,8 +824,8 @@
Page *page;
Ref *pageRef;
Dict *pageDict;
@@ -888,7 +903,7 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
bool writeSepGroup = false;
Object info;
char *key;
-@@ -867,8 +844,8 @@
+@@ -867,8 +852,8 @@
encodingList = 0;
page = pdf_doc->doc->getCatalog()->getPage(epdf_selected_page);
pageRef = pdf_doc->doc->getCatalog()->getPageRef(epdf_selected_page);
@@ -899,7 +914,7 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
rotate = page->getRotate();
PDFRectangle *pagebox;
// write the Page header
-@@ -886,7 +863,7 @@
+@@ -886,7 +871,7 @@
pdf_printf("/%s.PageNumber %i\n", pdfkeyprefix, (int) epdf_selected_page);
}
if ((suppress_ptex_info & MASK_SUPPRESS_PTEX_INFODICT) == 0) {
@@ -908,7 +923,7 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
if (info.isRef()) {
// the info dict must be indirect (PDF Ref p. 61)
pdf_printf("/%s.InfoDict ", pdfkeyprefix);
-@@ -942,14 +919,14 @@
+@@ -942,14 +927,14 @@
pdf_puts(stripzeros(s));
// Metadata validity check (as a stream it must be indirect)
@@ -927,7 +942,7 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
pdf_newline();
pdf_printf("/%s ", pageDictKeys[i]);
copyObject(&dictObj); // preserves indirection
-@@ -957,8 +934,8 @@
+@@ -957,8 +942,8 @@
}
// handle page group
@@ -938,7 +953,7 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
if (pdfpagegroupval == 0) {
// another pdf with page group was included earlier on the
// same page; copy the Group entry as is. See manual for
-@@ -972,11 +949,11 @@
+@@ -972,11 +957,11 @@
copyObject(&dictObj);
} else {
// write Group dict as a separate object, since the Page dict also refers to it
@@ -953,29 +968,24 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
pdf_printf("/Group %ld 0 R\n", (long)pdfpagegroupval);
}
}
-@@ -989,15 +966,15 @@
+@@ -989,14 +974,14 @@
pdftex_warn
("PDF inclusion: /Resources missing. 'This practice is not recommended' (PDF Ref)");
} else {
- initDictFromDict(obj1, page->getResourceDict());
-- if (!obj1->isDict())
-+ obj1 = Object(page->getResourceDict());
-+ if (!obj1.isDict())
++ Object *obj1 = page->getResourceDictObject();
+ if (!obj1->isDict())
pdftex_fail("PDF inclusion: invalid resources dict type <%s>",
-- obj1->getTypeName());
-+ obj1.getTypeName());
+ obj1->getTypeName());
pdf_newline();
pdf_puts("/Resources <<\n");
-- for (i = 0, l = obj1->dictGetLength(); i < l; ++i) {
+ for (i = 0, l = obj1->dictGetLength(); i < l; ++i) {
- obj1->dictGetVal(i, &obj2);
-- key = obj1->dictGetKey(i);
-+ for (i = 0, l = obj1.dictGetLength(); i < l; ++i) {
-+ obj2 = obj1.dictGetVal(i);
-+ key = obj1.dictGetKey(i);
++ obj2 = obj1->dictGetVal(i);
+ key = obj1->dictGetKey(i);
if (strcmp("Font", key) == 0)
copyFontResources(&obj2);
- else if (strcmp("ProcSet", key) == 0)
-@@ -1009,8 +986,8 @@
+@@ -1009,8 +994,8 @@
}
// write the page contents
@@ -986,7 +996,7 @@ diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexd
// Variant A: get stream and recompress under control
// of \pdfcompresslevel
-@@ -1021,36 +998,35 @@
+@@ -1021,36 +1006,35 @@
// Variant B: copy stream without recompressing
//