Atril, the document viewer, has had a massive overhaul and is better in every single way. Yes, all ways. Better!
In particular accessibility support for visually impaired users is considerably improved.
Caret navigation has been added.
Full changelog:
### atril 1.20.0
* Translations update
* require GTK+ 3.22 and GLib 2.50
* build: remove pre-GTK+3 option (how did I miss that?)
* epub: make minizip support more BSD variants
* update copyright year to 2018
### atril 1.19.6
* Translations update
* Revert "libview: Update the current page also when pending scroll is to find a location"
* previewer: add style class atril-previewer-window
* WidthOfScreen and HeightOfScreen implementation
### atril 1.19.5
* Translations update
* shell: show caret navigation in menu
* ev-link-accessible: Improve efficiency of methods to get start and end indices
* Expose form fields as AtkObject children of the page
* Expose images as AtkObject children of the page
* Expose links as AtkObject children of the page
* ev-view-accessible: Add a method to determine if a given doc rect is showing
* ev-page-cache: Add method to check if a given page has been cached
* libview: Update the caret cursor when jumping to a find result
* libview: Update ATK_STATE_SHOWING when the visible page range changes
* libview: Implement AtkComponent for pages
* libview: Fix shift+click text selection
* a11y: ensure text cached when you request an EvPageAccessible
* a11y: managing atk states on EvPageAccessible
* a11y: add if applies ATK_RELATION_FLOWS_TO/FROM on EvPageAccessible
* a11y: move AtkHyperText implementation from EvViewAccessible to EvPageAccessible
* a11y: move AtkText implementation from EvViewAccessible to EvPageAccessible
* a11y: expose EvPageAccessible as children of EvViewAccessible
* a11y: new EvPageAccessible
* libview: Fix some broken aspects EvViewAccessible text support
* libview: Take caret navigation into account when getting AtkHyperlink indices
* a11y: cleaning implementation for atk_text_get_caret_offset
* a11y: fixing implementation for atk_text_set_caret_offset
* view: set_caret_cursor_position should emit "cursor-moved" if applies
* Remove support for deprecated atk_text_get_text_{before,after}_offset()
* a11y: implement AtkDocument on EvViewAccessible
* a11y: with caret navigation enabled, accessibility current page is cursor page
* ev-view-accessible: call document_changed_cb when setting the model
* Some text fixes for caret message area
* ev-view-accessible: Fix a crash in ev_view_accessible_get_link
* ev-view-accessible: Clear the cached data when the current page
* shell: remove view_actions_focus_out_cb
* shell: Remove ev_window_set_view_accels_sensitivity
* shell: forward accels to the focused widget
* Use a global array for view accel action
* fix crash when selecting text in djvu documents
### atril 1.19.4
* Translations update
* shell: fix stock item for message area
* docs: libview: Re-add type builtins section
* Fix crashes of epub documents with caret-navigation
* Store the caret cursor position in document metadata
* libview: Add ev_view_set_caret_cursor_position
* libview: Update the current page also when pending scroll is to find a location
* libview: Do not schedule a redraw when enabling/disabling caret navigation
* libview: Stop caret cursor blinking when cursor is not in a visible page
* shell: Enable/disable the caret navigation with F7
* libview: Add ev_view_supports_caret_navigation()
* ev-link-accesible: Return the index/offset after the last character in the link
* help: Remove references to removed selection mode
* libview: Fix selections starting/ending in page margins
* libview: Reduce the pages to scan for selections
* libview: Remove unused rectangle selection mode
* libview: Rework ev_view_accessible_get_selection
* libview: do not redraw the whole view when caret cursor moves
* libview: Update the cursor area after positioning the cursor when moving between lines
* ev-view-accessible: Fix ev_view_accesssible_get_n_selections
* ev-view-accessibl: Fix get_caret_offset when the caret navigation is enabled
* libview: Use error bell and return early when moving between lines fails
* libview: do not schedule a resize in ensure_rectangle_is_visible
* libview: Stop the cursor blink when there are selections active
* libview: Deprecate ev_view_scroll in favor of g_signal_emit_by_name
* ev-window: Use g_signal_emit_by name instead of ev_view_scroll
* previewer: Remove scroll accelerators
* ev-window: Remove scroll accelerators
* libview: Add more scroll key bindings to EvView
* libview: Fix second parameter type of scroll signal for h, j, k and l bindings
* libview: Use merge_selection_region passing NULL to clear the selections
* ev-pixbuf-cache: Clear the selection region also when clearing the job selection
* ev-pixbuf-cache: fix the condition for when a new selection is needed
* ev-view-accessible: Rewrite get_run_attributes to return the text attributes from the document
* pdf: Implement ev_document_text_get_text_attrs()
* libview: Get text attributes from backend and save them in page cache
* libdocument: Add ev_document_text_get_text_attrs()
* libview: Emit the AtkText text-caret-moved and text-selection-changed signals
* libview: clear the selection when cursor is moved
* libview: Do not show the caret cursor when there are active selections
* libview: Return NULL instead of empty regions from the pixbuf cache
* libview: Don't draw the caret cursor when the view is not focused
* libview: Fix moving caret cursor between lines in multicolumn documents
* libview: Pre-cache some prev/next pages to the current page range.
* ev-pixbuf-cache: schedule prev or next jobs first depending on the scroll direction
* ev-pixbuf-cache: Schedule jobs to render previous pages in inverse order
* libview: Added 'cursor-moved' signal to notify when the caret cursor has been moved.
* libview: Avoid unnecessary region copies when selecting text
* libview: Use a larger damage area to redraw selections
* libview: Don't queue a redraw when damaged region hasn't changed
* libview: Invalidate union of old and new selection
* libview: Move the caret cursor when clicking outside a selection
* libview: Remove unused in_selection member from SelectionInfo struct
* libview: Keep the offset inside a line when moving the caret between lines
* libview: Position the caret cursor at beginning/end of the line
* libview: Do not schedule a redraw when selecting all text
* libview: Use prepend + reverse instead of append to create selections list
* libview: Use GSlice to allocate EvViewSelection
* libview: Text selection using the caret cursor.
* libview: Update the caret cursor after selecting text with the mouse
* libview: Take page border into account when computing selections
* libview: Fix a crash when selecting more than one page
* libview: Make sure the cursor blinks after moving it by a click
* libview: merge get_caret_cursor_rect_from_offset and get_caret_cursor_area
* libview: Notify about caret navigation errors using the error bell.
* libview: Do not redraw after a click if cursor position hasn't changed
* libview: Use GtkBindings for caret navigation
* libview: Rename EvView::binding-activated signal as EvView::scroll
* libview: Position the caret cursor by clicking
* libview: Use EvPixbufCache to find selection region
* libview: Split ev_pixbuf_cache_get_selection_surface into two functions
* libview: Draw selection highlight from region
* libview: Fix the damage area used to redraw the caret cursor
* libview: Actually update the page when moving the care from a different page
* libview: Avoid to update the current page and scroll to the cursor position,
if the caret cursor was not updated
* libview: Make caret cursor blink
* libview: Use logical attributes instead text layout to move the caret cursor
* libview: Add a way to get the text logical attributes from the page cache
* libview: Initial implementation of caret navigation
* libview: Refactor code for drawing page and selection surfaces
### atril 1.19.3
* Translations update
* shell: disable ViewDualOddLeft in menus for epubs
* libview: only access the relevant page cache for the height request
* Activate shortcut keys for dual and continuous layout
* ev-view: Forward key events to the focused form field
* Add shortcut keys for fit-page and fit-width options
* shell: Do not open single page pdfs in dual mode by default
* libview: Don't update current_page to negative number
* libview: Make page layout a mode
* libview: Add new zoom mode that optimizes for readability
* Rename Fit Page Width as Fit Width
* Rename Best Fit mode as Fit Page
* Move dual page with odd pages left to the view menu
* libview: drop deprecated usage of gtk_container_set_resize_mode
### atril 1.19.2
* Translations update
* shell: Check if doc implements Annotations interface before cast
* Refreshing annotations' sidebar upon deletion
* libdocument: Make ev_mapping_list_remove void
* page-cache: Add flags parameter to ev_page_cache_mark_dirty()
* pdf: Reset the annotation mapping when there are no more annotations
* Add an option to remove annotations to the view popup menu
* libview: add ev_view_remove_annotation
* pdf: Implement remove_annotation virtual func
* libdocument: add ev_mapping_list_remove
* libdocument: Add remove_annotation to DocumentAnnotations.
* pdf: Make annotation names unique
* pdf: Add support for adding other types of annotations
* libview: Rename ev_view_set_focused_element and make it public internally
* Change the opacity of the annotation window
* Change color of annotation window
* libview: Grab focus for form fields and links on mouse press
* libdocument: Added ev_mapping_list_get
* pdf: Add activation link for Fields that have it.
* libview: Handle activation link of a Form Field if present
* libdocument: Add activation_link to EvFormField struct
* ev-properties-licence: don't use deprecated GtkAlignment
* libview: : avoid deprecated gtk_adjustment_changed
* ev-job-find: mark two methods as skip
* ev-jobs: have ev_job_failed_from_error shadow ev_job_failed
* libview: add missing transfer and element-type annotations
* ev-mapping-list: make a boxed type
* libdocument: add missing transfer and element-type annotations
* gtk 3.22: avoid deprecated gdk_screen_get_monitor... functions:
* avoid gdk_screen_get_primary_monitor/gdk_screen_get_monitor_scale_factor
* ev-document-misc.c: avoid deprecated gdk_screen_get_width/height_mm
* dvi: Mitigate command injection attacks by quoting filename
* mdvi-lib: Fix compilation warning (const-correctness)
* libmisc: set width chars for page label
* libview: Scroll small pages in non-continuous mode
* libview: Enable GDK_SMOOTH_SCROLL events for view
* libview: Ctrl+mouse wheel zoom should be pointer-centered, not window-centered
* ev-view: Add pan gesture to switch page
* ev-view: explicitly require a GtkScrolledWindow as the parent widget
* ev-view: Add pinch/zoom gesture to handle document zooming
### atril 1.19.1
* sidebar-thumbnails: fix unwanted move to start after fullscreen
* sidebar-thumbnails: preload one extra visible range while scrolling
* sidebar-thumbnails: keep thumbnails already rendered
* sidebar-thumbnails: fix clunky scrolling
* update copyright year in Caja extension
* annotations-sidebar: Clean up the styling
* ev-annotation-window: Fix setting the color of the window border
* libview: fix annotation window focus change after creation
* libview: Fix focus on ev_annotation_window
* libview: Don't change the font color of the annotation window
* shell: Use GdkRGBA for annotations
* libdocument: Add EvAnnotation API using GdkRGBA
* libdocument: Use the new deprecation macros
* Add deprecation macros
* fix runtime warnings caused by previous HDPI commit
* Take monitor scale factor into account when calculating zoom.
* Add hi-dpi support for main view.
* shell: Ditch gimpcellrenderertoggle
* sidebar-layers: Make it actually usable and fix a runtime warning
* libview: setting annotation window icons sizes
* libview: save changes to a dropdown in an embedded form
* libdocument: adjust rendering of shadow for active and inactive pages
* avoid deprecated gdk_screen_make_display_name
* ev-window: remove deprecated GtkToolbar-shadow-type
* annotation-properties-dialog: don't use a headerbar
* avoid deprecated gdk_display_get_screen and gdk_display_get_n_screens
* ev-window: don't use deprecated gtk_show_uri
* Translations update
* avoid deprecated gdk_screen_get_number
* Restore Polish translation credits from GNOME
### atril 1.19.0
* Translations update
* update copyright year to 2017
* build: properly clean the generated .caja-extension file
* build: require cairo >= 1.10.0 and drop some old code
* shell: remove unused code from utils
* ev-view: avoid deprecated gtk_drag_begin
* egg-editable-toolbar: avoid deprecated gtk_drag_begin
* message-area: replace some GtkStock deprecations
* ev-sidebar: avoid deprecated GTK_STOCK_CLOSE icon
* password-view: replace some GtkStock deprecations
* password-view: don't use deprecated GtkAlignment
* toolbar-editor: don't use deprecated GtkAlignment
Epigraphs are the pithy quotations often found at the start (or
end) of a chapter. Both single epigraphs and lists of epigraphs
are catered for. Various aspects are easily configurable.
This LaTeX package provides a flexible mechanism for
translating individual words into different languages. For
example, it can be used to translate a word like "figure" into,
say, the German word "Abbildung". Such a translation mechanism
is useful when the author of some package would like to
localize the package such that texts are correctly translated
into the language preferred by the user. This package is not
intended to be used to automatically translate more than a few
words.
4.13
- typos in 'tcolorbox-tutorial-poster' corrected
- new options:
'grow sidewards by'
- library 'breakable':
* Warning for discarded zero height box content added
- library 'listings':
* Documentation for 'text side listing', 'listing side text',
'comment side listing', 'listing side comment' supplemented with notes.
- library 'skins':
* Options given by '/tcb/graphics options' and '/tikz/fill image options'
are now fully expanded while applied to underlying '\includegraphics'
* new option:
'graphics orientation'
4.12
- color implementation changed to fix problems with expl3
(thanks to Ulrike Fischer)
- Documentation typo corrected ('tcbsetmanagedlayers' instead of
'tcbsetmanagedlayer')
- Bug fix: 'borderline south' and 'borderline north' created
'Missing character' messages for breakable boxes
- library 'theorems':
* new options 'theorem label supplement',
'theorem full label supplement'
2018/03/28 v1.6.2
* [udesoftec-biblatex.sty] Corrected headline showing last
chapter instead of bibliography
* [udesoftec.cls] fixed german heading for list of abbreviations
* [udesoftec-doc.pdf] corrected TeXnicCenter Configuration
* Bumping version number
2017/12/08 v1.6.1 (unreleased)
* Internal fixes due to new build tool
* Bumping version number
1.21
* Fixed typo in \intertext, the interface for specifying the space above
and below now works as advertised.
1.20
* fixed \null\, bug in (l|r|)gathered versions, bringing it in line with
amsmath
Reported in https://tex.stackexchange.com/a/397718/3929
Bug fix update:
---------------
Fixed compatibility issues with LuaTeX which arised after non-backward-compatible updates to LuaTeX.
Config file:
* Fixed log file warnings when used outside preamble by wrapping \PassOptionsToPackage call into preamble check.
Package:
* Added check if \sa at requestedpage is undefined or empty, which can happen with newer versions of LuaLaTeX.
* Updated page handling to new graphics driver version.
Also fixed the following reported bugs: (see https://bitbucket.org/martin_scharrer/standalone/issues)
* Issue #22: Removed processing of AUX file with \globaldefs.
* Issue #25: Changed how papersize special is added for dvips.
* Issue #26: Adding '-units PixelsPerInch' to 'convert' call so that generated PNGs have correct units parameter.
* Issue #30: Replaced jobname with subjobname in DVIPS precommand.
* Issue #31: Added \makeatother before inputting .sta files so that the subpreamble-changed test works with files
using \makeatletter.
* Issue #40: Corrected order of border option in manual.
Update to two packages in the collection:
pdftexcmds : add support for MD5 sum commands in XeTeX
(using new primitives added to XeTeX last year)
accsupp : support for Luatex added (separate from pdftex option,
so the luatex85 compatibility package no longer required)
Updated Oberdiek bundle
use rb (binary) file reading for md5 checksum for issue #34 (pdftexcmds)
fix test for etec.src for issue #33 (iflang)
Skip patching with newer graphics (fixes#29) (grffile)
Merge pull request #25 from yudai-nkt/comment-with-doublecaretnotation
(hologo)
Comment out the BibTeX-like entry with ^^A (hologo)
pkgsrc changes:
- Fix an error pointed out by gcc-6.4.0 via
patches/patch-filter_pdftoopvp_OPVPOutputDev.cxx:
filter/pdftoopvp/OPVPOutputDev.cxx: In member function 'void OPVPOutputDev::doUpdateFont(GfxState*)':
filter/pdftoopvp/OPVPOutputDev.cxx:532:46: error: invalid conversion from 'const Ref*' to 'Ref*' [-fpermissive]
id = new SplashOutFontFileID(gfxFont->getID());
~~~~~~~~~~~~~~^~
filter/pdftoopvp/OPVPOutputDev.cxx:69:3: note: initializing argument 1 of 'SplashOutFontFileID::SplashOutFontFileID(Ref*)'
SplashOutFontFileID(Ref *rA) { r = *rA; substIdx = -1; }
^~~~~~~~~~~~~~~~~~~
Changes:
1.20.3
------
- braille: Do not remove read permission on cups-brf. Thanks
to Samuel Thibault for this patch (Pull request #32).
- braille: Get braille table descriptions from liblouis
metadata. Thanks to Samuel Thibault for this patch (Pull
request #31).
- braille: Select liblouis tables based on metadata before
using file names. Thanks to Samuel Thibault for this patch
(Pull request #30).
- cups-browsed: The new method of identifying remote CUPS
queues via the "printer-type" TXT record field does not work
for printers discovered by legacy CUPS broadcast (CUPS 1.5.x
or older). Now consider also printers without TXT record
(not discovered via DNS-SD) as remote CUPS queues (Issue
#34).
- gstoraster: Improved detection whether input is PostScript
or PDF by skipping over possible headers. Thanks to Rod
Schmidt (schmidtrod at q dot com) for the patch.
1.20.2
------
- cups-browsed: If the user modifies/overwrites a print queue
created by cups-browsed, it will now automatically released
from the control of cups-browsed, so the modified queue does
not get removed by cups-browsed on shutdown. (Ubuntu bug
#1731417).
- cups-browsed: The configuration setting
"CreateIPPPrinterQueues LocalOnly" suppressed also the
automatic generation of local queues for remote CUPS
printers whereas this option is only intended for physical
IPP printers.
- cups-browsed: Identify remote CUPS queues by the
"printer-type" TXT record entry and not by the
"ipp(s)://<host>/printers/<name>" URIs, there are also IPP
network printers with such URIs (HP LaserJet Professional
M1212nf MFP in Ubuntu bug #1731417).
- .gitignore: Added filter/braille/filters/brftopagedbrf
- cups-browsed, foomatic-rip: Fixed several typos. Thanks to
Didier Raboud for the patches.
pkgsrc changes:
- Directly override VERSION in files/mupdf.pc in the post-build phase
(to avoid an extra manual step for every mupdf update)
- Get rid of OPJ_STATIC patch hunk in patches/patch-source_fitz_load-jpx.c (it
is no more needed, because the `-DOPJ_STATIC' is now passed in Makefile-s
when the bundled openjpeg is used).
- Pass HAVE_LIBCRYPTO=no to avoid requiring openssl>=1.1.0.
Changes:
1.13.0
------
* This is primarily a bugfix release.
* New "mutool sign" tool for showing and verifying digital signatures.
* Chinese, Japanese, Korean, Cyrillic, and Greek font support in mutool create.
* Improvements to annotation editing API.
* jsclasses: Define \Cjascale for scaling of Japanese fonts.
* morisawa package is moved to separate bundle.
* All files are converted to UTF-8. If you want ISO-2022-JP encoded
files (for older TeX environment), visit GitHub and download files in
jis/ subdirectory.
* okumacro: \kenten adapted to pTeX p3.7.2.
Update to hyperref, special thanks to Ulrike Fischer for providing
fixes to several issues.
2018-02-06 6.86b David Carlisle
* 6.86b
* Fix packaging of luatex.dtx (reported on tex.sx)
2017-09-29 6.86a David Carlisle
* 6.86a
* bump version and fix documentation markup
* fixes to xsl and other minor build adjustments
* send driver message just to log, issue #9
* add \and to the list of commands locally made safe in pdf title
info, issue #44
* for issue #50 add pdf source zip from
texmf-dist/doc/latex/hyperref-docsrc
2017-09-29 6.86a David Carlisle
* 6.86a
* Make driver auto detect info not message (so just log not
terminal) issue #9
* Make \and locally "; " while making pdf info string issue #44
2017-09-29 6.856a Ulrike Fischer
* 6.86a
* don't define \noboundary as text command / issue 37 (#45)
* changed default pdfversion from 2 to 5, along the default
settings in the current tex systems
* change with pdfa version to 4 only if the current version is
smaller, see issue #38
* removed \noboundary from puarenc.def, see issue #37
* Issue #38: change version to 1.4 with pdfa only if it is smaller
(#43)
* changed default pdfversion from 2 to 5, along the default
settings in the current tex systems
* change with pdfa version to 4 only if the current version is
smaller, see issue #38
* issue #25, added \HyPsd at EscapeTeX#1% to correctly escape
non-ascii in heading (#42)
* code to amend issue #40 (missing pdfhighlight option for
xetex/dvipdfmx) (#41)
* corrected typo in hpdftex.def
* exchanged code for pdfhighlight by \Hy at setpdfhighlight in
hpdftex.def
* exchanged code for pdfhighlight by \Hy at setpdfhighlight in
hluatex.def
* added \Hy at setpdfhighlight to hdvipdfm/hxetex.def
* glossaries.sty:
- bug fix (if \makeindex is used without \makeglossaries,
corrupted glossary information is written to the .idx file)
* makeglossaries-lite.lua:
- corrected check for double-quotes in \@istfilename
(from \jobname when the .tex file name contains spaces)
- added check for nil codepage
Small update to geometry:
No changes in functionality but updated so that:
* now works with lualatex without needing the liatex85 compatibility package
* Support moved to github https://github.com/davidcarlisle/geometry
3.05
* Fix issue 28 (works now with lualatex: actually from 3.05 fmtcount
does not test any longer for what compiler is used but only for what
multilingual package --- such as polyglossia or babel --- are used).
* Fix pull request 29 (Fix European Portuguese cardinal
numbers). Portuguese formatting prior to 3.05 is renamed brazilian,
and the portuguese is fixed to reflect European Portuguese
spelling.
This is version 2.603 of exam.cls.
It removes an incompatibility with colortbl.sty that
was created in version 2.6.
Version 2.6 of the exam documentclass.
Grading tables and point tables can now have multiple rows or
multiple columns, there's a new option for two-sided documents
to have points either always in the outer margin or always in
the inner margin, and when filling space with lines or dotted
lines those lines can be in color.
There are also fixes for several obscure bugs.
Major changes in version 2.6 since 2.5:
- New package options 'notables' and 'nofigures' have been added.
- New macros \efloattype, \efloatheading, \efloatpreamble, and
\efloatpostamble have been added.
- A percent sign (%) is now allowed at the end of \end{<environment>}, too.
- Two bugs have been fixed regarding the usage of UTF-8 characters in
floating environments.
2.28
* datatool.sty:
- added \xdtlgetrowindex
- \DTLloadrawdb: changed \xdef to \protected at xdef
- some bug fixes
* datatool-base.sty:
- added \DTLformatlist and accompanying commands
\DTLlistformatsep, \DTLlistformatoxford,
\DTLlistformatlastsep, \DTLandname and \DTLlistformatitem.
* datagidx.sty:
- changed initialisation of label in \datagidx at setfieldvalues
- \datagidxstripaccents now changes \add at accent@,
\@text at composite@x and \@tabacckludge
- added \datagidxextendedtoascii
- \printterms uses \twocolumn if balance=false and columns=2
0.21
Improved page referencing. Amongst other things, compression and
sorting of page references now works correctly in documents with
multiple page numbering schemes. Numerous bug fixes and package
compatiblity fixes.
0.21.1
Bug-fix release.
Fixes:
- compress option
- \cpagerefrange with hyperref
- beamer "compatibility" (documents will compile; as was the case in all
previous cleveref versions, there's still no guarantee
everyting will work correctly with beamer)
Bug-fix release:
- fix bug in \cpageref + hyperref
- allow \crefalias'ing of appendix reference types
- fix misleading \namecref undefined reference warning
- make sub-reference types inherit from format components
rather than low-level formats
- fix spelling mistakes in Dutch translations
3.6c
I was made aware of a situation where an extra page with lots of "spsp"
would appear at the end of a lengthy document.
This has now been fixed
3.6b
Several years ago Apostolos Syropoulos sent me an extension to support
XeTeX. I integrated it into changebar, but unfortunately I seem to have
never gotten round to upload that version.
3.18
- More bidi in luatex: captions (required only in multilingual
docs) and tabular (required for R tables). Also an experimental
support for captions in xetex and pdftex (tabular is not yet
supported).
- New ini files: ar-DZ, ar-MA, ar-SY
- Fix - \begin{hyphenrules} didn't work with polyglossia.
- Fix - switch.def was loaded twice.
3.17
- A tool for bidi footnotes.
- Fix -- \ragged... didn't work for bidi.
3.16
- New package option layout for bidi documents.
- Quotes in TU encoding
- Fix - \<language>date did not work correctly
- Fix - with some languages (eg, british), using
\babelfont raised an error.
3.15
New command \babelfont (in Unicode engines) to define
language/script dependent fonts. Related to it, new
keys (script, language) in \babelprovide.
A common mistake is to leave some space(s) in
\captions<lang>, which go to the document. Now babel
removes them.
A couple of fixes:
- Error with hyphenrules in \babelprovide in some cases.
- \hyphenrules doesn't set \languagename any more (which
was against the documented behavior).
New in v. 2.10:
* Introduce option (modifier and boolean switch) to let [n]swissgerman
expand the �<9F>-related shortcuts "s and "z to digraphs (<ss>, <sz>)
* Document the existence and use of the experimental hyphenation
patterns for German (dehyph-exptl)
* Improve the manual
This is a bug fix release: \date shouldn't have been redefined in French.
Please note that babel-french 3.4 requires luatex 1.0 or newer to be used
with the luatex engine.
3.4a
- New command \frenchdate (like \spanishdate);
- Both options "french" and "acadian" can now be used simultaneously
in a document;
- New command \FBsetspaces to help customising spaces added before
high punctuation and inside quotes;
- \FBthousandsep (used in French by numprint) is now a kern;
- babel-french now requires eTeX.
Upstream changes (from NEWS):
== Ruby-GNOME2 3.2.5: 2018-05-02
This is a bug fix release of 3.2.4.
=== Changes
==== Document
* Fixes
* Fixed typos.
[GitHub#1158][Patch by kojix2]
[GitHub#1160][Patch by kojix2]
==== Ruby/GLib2
* Fixes
* Fixed a GC related crash bug.
[GitHub#1162][Reported by Izumi Tsutsui]
==== Ruby/GObjectIntrospection
* Improvements
* Disabled NULL check for GObject Introspection < 1.42. Because
GObject Introspection < 1.42 doesn't support "(nullable)"
annotation yet.
==== Ruby/GdkPixbuf2
* Improvements
* (({GdkPixbuf::Pixbuf#composite})): Suppressed wrong warning.
[GitHub#1156][Reported by Chaistrin]
[GitHub#1157][Patch by cedlemo]
* Fixes
* Added a missing white space into message.
[GitHub#1155][Reported by Robert A. Heiler]
* (({GdkPixbuf::Pixbuf#composite})): Fixed a bug that width and
height are ignored.
[Patch by cedlemo]
==== Ruby/GTK3
* Improvements
* (({Gtk::TextBuffer#initialize})): Accepted "property-name" form.
[GitHub#1161][Reported by kojix2]
==== Ruby/Poppler
* Improvements
* Added a workaround for poppler-glib 0.63 bug.
[GitHub#1159][Reported by HIGUCHI Daisuke]
=== Thanks
* Robert A. Heiler
* Chaistrin
* cedlemo
* kojix2
* Izumi Tsutsui
* HIGUCHI Daisuke
Release 0.64.0
core:
* Workaround form field text not being drawn on broken files. Bug #103245
* Add read only setter for form fields
* Add support for Link Hide action
* Add support for Next actions in Links
* Fix parsing of Annot focus out actions
* Fix PDFDoc::checkHeader() for PDFs smaller than 1 KiB. Bug #105674
* Add const to several classes and members
* gfile: Fix build on some platforms
* Fix issues with on malformed documents. Bug #105972, #105969, #106059, #106061
* Several small code improvements
qt5:
* Allow setting of Form visibility status
* Allow setting of Form read only status
* Add support for Link Hide action
* Add support for Next actions in Links
* ArthurOutputDev: Implement axialShadedFill
* ArthurOutputDev: Implement drawImageMask. Bug #105531
* ArthurOutputDev: Implement Type3 font support
utils:
* pdfsig: Add -dump which writes signatures to disk. Bug #104881
glib:
* less deprecated calls
build system:
* bring back the option to disable GObject introspection
* Add iconv include dir when compiling
* Make it possible to build poppler without fontconfig. Default for Android
The package allows the user to manually markup changes of text,
such as additions, deletions, or replacements. Changed text is
shown in a different colour; deleted text is crossed out. The
package allows definition of additional authors and their
associated colour. It also allows you to define a markup for
authors or annotations. A bash script is provided for removing
the changes.
Release 0.63.0
core:
* CairoOutputDev: support embedding CCITT image data. Bug #103399
* CairoOutputDev: limit image size when printing. Bug #103399
* CairoOutputDev: use GOOD instead of BEST as the default cairo filter for scaling. Bug #103136
* Error out on save if file has changed since we opened it. Bug #103793
* PDFDoc: use %c instead of \x to output binary. Bug #103873
* Fix index out of bounds undefined behaviour in PSTokenizer. Bug #103583
* Fix opening files with OutlineItem loops. Bug #102914
* Fix some bugs in StructTreeRoot parsing of parent tree. Bug #103912
* Remove error for wrong child type for tagged pdf. Bug #103587
* FoFiTrueType::readPostTable() from xpdf 4.00. Bug #102880
* GfxFontDict: merge reference generation from xpdf 4.00. Bug #104565
* Reset lastAbortCheck on updateLevel reset
* PDFDoc::setup: Fail early if base stream length is 0. Bug #103552
* Check curStr is actually a Stream before doing Stream operations. Bug #104518
* Fix new Object API porting bug. Bug #104517
* Check return code of getChar(), abort reading on error. Bug #104502
* TextPage: Add horizontal scaling to font matrix. Bug #105259
* Fix EmbedStream replay. Bug #103446
* Fix memory leak on error condition
* Fix assert on malformed documents. Bug #104354
* Fix abort in Gfx::opBeginMarkedContent if args[1] is not a name. Bug #104468
* GfxGouraudTriangleShading::parse: Don't abort on malformed documents. Bug #104567
* GfxFunctionShading::parse: Fix abort in malformed document. Bug #104581
* Remove the extern C from glib.h. Bug #103621
* Don't let ArthurOutputDev be friend of SplashPath anymore
* Fix undefined sanitizer warning about qsort
* Form.h: include time.h for time_t
* Various code improvements
qt5:
* Add cancellation support to renderToImage and textList
* Do not assume all Screen annotation actions are Renditions. KDE bug #388175
* qt5: Implement operator= for PageTransition
* ArthurOutputDev: 'clip' should intersect new and old clipping path
* ArthurOutputDev: Implement updateBlendMode
* ArthurOutputDev: Replace the QPainter by a stack of QPainters
* ArthurOutputDev: Rudimentary support for transparency groups
* Remove stale libcms1 code. Bug #104358
* demo: don't crash if page is malformed
* Fix warnings due to the use of deprecated overloads of Poppler::Page::Search in tests.
utils:
* pdfimages: Fix for files with flate encoded inline images. Bug #103446
* pdftocairo: Remove stale libcms1 code. Bug #104358
* pdfimages: Fix build without libtiff and libpng
* pdfseparate: Fix buffer size warning due to missing space for null terminator
build system:
* Enable building all libs as static libs
* Enable no-missing-field-initializers
* Remove unused FindLIBOPENJPEG.cmake
* add "--owner root:0 --group root:0" options to tar command in dist target. Bug #104398
* Add python3 support to gtkdoc.py
* gtkdoc.py: Make it work with newer gtk-doc. Bug #105075
cpp:
* Add page::text_list
Upstream changes (from NEWS):
== Ruby-GNOME2 3.2.4: 2018-04-09
This is a bug fix release of 3.2.3.
=== Changes
==== Ruby/GLib2
* Fixes
* Fixed a bug that some constants aren't defined. If a content
name is the same constant name at the top level such as
(({Gtk::Object})), the constant isn't defined.
[GitHub#1154][Debian#894816][mikutter#1199]
[Reported by Akira Ouchi][Forwarded by HIGUCHI Daisuke]
==== RubyRsvg2
* Improvements
* Windows: Upgraded bundled librsvg to 2.42.3.
=== Thanks
* Akira Ouchi
* HIGUCHI Daisuke
== Ruby-GNOME2 3.2.3: 2018-04-03
This is a bug fix release of 3.2.2.
=== Changes
==== Ruby/GObjectIntrospection
* Fixes
* Fixed a crash bug when (({GLib::Bytes})) is passed as an argument.
== Ruby-GNOME2 3.2.2: 2018-04-02
This is a release to support Ruby 2.5 on Windows.
=== Changes
==== All
* Windows: Added Ruby 2.5 support.
[GitHub#1148][Reported by Andy Meneely]
* Red Hat: Use (({pkgconfig(name)})) style.
[GitHub#1117][Patch by Mamoru TASAKA]
==== Ruby/GLib2
* Improvements
* (({GLib::Bytes#to_s})): Changed to return a frozen string to
reduce data copy.
* Migrated to (({TypedData})) from (({Data})).
==== Ruby/GObjectIntrospection
* Improvements
* Added (({nil})) argument check.
* (({GObjectIntrospection::Loader#rubyish_method_name})):
Added (({:n_in_args_offset})) option.
* Suppressed a needless copy of (({GLib::Bytes})).
* Added filename array support.
[GitHub#1151][Patch by cedlemo]
* Fixes
* Fixed a overflow bug on 32bit.
[Debian#766020][Reported by Mario Lang]
[GitHub#1137][Forwarded by HIGUCHI Daisuke]
==== Ruby/GTK2
* Fixes
* Fix the wrong number of arguments.
[GitHub#1133][Reported by Mamoru TASAKA]
==== Ruby/GDK3
* Improvements
* Ensured loading GDK 3.
[GitHub#1126][Patch by cedlemo]
* Fixes
* (({Gdk::Screen.default})): Fixed a GC related crash.
* (({Gtk::Widget#style_context})): Fixed a GC related crash.
[GitHub#1149][Reported by Valentin Pelloin]
==== Ruby/GTK3
* Improvements
* Added a tool palette demo.
[GitHub#1116][Patch by cedlemo]
* Added a shortcut demo.
[GitHub#1120][Patch by cedlemo]
* Updated demo.
[Reported by Titouan Teyssier]
[GitHub#1139][Patch by Titouan Teyssier]
* Updated README.
[GitHub#1127][Patch by cedlemo]
* Fixes
* (({Gtk::Container#add_child(child)})): Made workable again.
==== Ruby/Poppler
* Fixes
* (({Poppler::Page#thumbnail_size})): Fixed return value.
[GitHub:rcairo/rcairo#51][Reported by Mamoru TASAKA]
==== Ruby/Gnumeric
* Improvements
* Improved .typelib for Gnumeric detection.
[GitHub#1118][Reported by cedlemo]
=== Thanks
* cedlemo
* Mamoru TASAKA
* Titouan Teyssier
* Mario Lang
* HIGUCHI Daisuke
* Andy Meneely
* Valentin Pelloin
pkgsrc changes:
- Get rid of extra `/' in patches/patch-config-scripts_cups-opsys.m4
(NFCI, pointed out by mkpatches).
- Add to patches/patch-scheduler_auth.c a backport of issue #5283 to fix build
without PAM. This will be not needed in cups-2.2.8.
Changes:
CUPS v2.2.7
-----------
- NOTICE: Raw print queues are now deprecated (Issue #5269)
- Fixed an Avahi crash bug in the scheduler (Issue #5268)
- The IPP Everywhere PPD generator did not include the `cupsJobPassword`
keyword, when supported (Issue #5265)
- Systemd did not restart cupsd when configuration changes were made that
required a restart (Issue #5263)
- The Lexmark Optra E310 printer needs the "no-reattach" USB quirk rule
(Issue #5259)
- The scheduler could crash while adding an IPP Everywhere printer (Issue #5258)
- Label printers supported by the rastertolabel driver don't support SNMP, so
don't delay printing to test it (Issue #5256)
- Fixed a compile issue when PAM is not available (Issue #5253)
- Documentation fixes (Issue #5252)
- Star Micronics printers need the "unidir" USB quirk rule (Issue #5251)
- The scheduler now supports using temporary print queues for older IPP/1.1
print queues like those shared by CUPS 1.3 and earlier (Issue #5241)
- Fixed printing to some IPP Everywhere printers (Issue #5238)
- Kerberized printing to another CUPS server did not work correctly
(Issue #5233)
- The `cupsRasterWritePixels` function did not correctly swap bytes for some
formats (Issue #5225)
- Added a USB quirk rule for Canon MP280 series printers (Issue #5221)
- The `ppdInstallableConflict` tested too many constraints (Issue #5213)
- More fixes for printing to old CUPS servers (Issue #5211)
- The `cupsCopyDest` function now correctly copies the `is_default` value
(Issue #5208)
- The scheduler did not work with older versions of uClibc (Issue #5188)
- The scheduler now substitutes default values for invalid job attributes when
running in "relaxed conformance" mode (Issue #5186)
- Fixed PAM module detection and added support for the common PAM definitions
(Issue #5185)
- Fixed a journald support bug in the scheduler (Issue #5181)
- The cups-driverd program incorrectly stopped scanning PPDs as soon as a loop
was seen (Issue #5170)
- Fixed group validation on OpenBSD (Issue #5166)
- Fixed the `ippserver` sample code when threading is disabled or unavailable
(Issue #5154)
- The `cupsEnumDests` function did not include options from the lpoptions files
(Issue #5144)
- The `SSLOptions` directive now supports `MinTLS` and `MaxTLS` options to
control the minimum and maximum TLS versions that will be allowed,
respectively (Issue #5119)
- The scheduler did not write out dirty configuration and state files if there
were open client connections (Issue #5118)
- The `lpadmin` command now provides a better error message when an unsupported
System V interface script is used (Issue #5111)
- The `lp` and `lpr` commands now provide better error messages when the default
printer cannot be found (Issue #5096)
- No longer support backslash, question mark, or quotes in printer names
(Issue #4966)
- The CUPS library now supports the latest HTTP Digest authentication
specification including support for SHA-256 (Issue #4862)
- The `lpstat` command now reports when new jobs are being held (Issue #4761)
- The `lpoptions` command incorrectly saved default options (Issue #4717)
- The `ppdLocalizeIPPReason` function incorrectly returned a localized version
of "none" (rdar://36566269)
- TLS connections now properly timeout (rdar://34938533)
- The IPP backend did not properly detect failed PDF prints (rdar://34055474)
- Temporary files are now placed in the correct directory for sandboxed
applications on macOS (rdar://problem/37789645)
v0.42.3:
Bug fixes:
* Fix floating-point number error to fix floating box layout
* Don't optimize resume_at when splitting lines with trailing spaces
* Fix table layout with no overflow
* Fix inline box breaking function
* Split replaced_min_content_width and replaced_max_content_width
* Respect text direction and don't translate rtl columns twice
* Get only first line's width of inline children to get linebox width
Changelog:
8.0.2:
Version 8.0.2 contains two small bug fixes: proper handling of pages
with no content, and better handling of files with loops following cross
reference tables.
8.0.1:
This is a very minor update from 8.0.0. It just contains two small
enhancements that missed the train: handle zlib streams with data checksum
errors, and, in the command line tool, allow specification of page numbers
counting from the end in page ranges.
Version 9.23:
Ghostscript now has a family of 'pdfimage' devices (pdfimage8, pdfimage24 and pdfimage32) which produce rendered output wrapped up as an image in a PDF. Additionally, there is a 'pclm' device which produces PCLm format output.
There is now a ColorAccuracy parameter allowing the user to decide between speed or accuracy in ICC color transforms.
JPEG Passthrough: devices which support it can now receive the 'raw' JPEG stream from the interpreter. The main use of this is the pdfwrite/ps2write family of devices that can now take JPEG streams from the input file(s) and write them unchanged to the output (thus avoiding additional quantization effects).
PDF transparency performance improvements
IMPORTANT: We are in the process of forking LittleCMS. LCMS2 is not thread safe, and cannot be made thread safe without breaking the ABI. Our fork will be thread safe, and include performance enhancements (these changes have all be been offered and rejected upstream). We will maintain compatibility between Ghostscript and LCMS2 for a time, but not in perpetuity. Our fork will be available as its own package separately from Ghostscript (and MuPDF).
We have continued the focus on code hygiene in this release cleaning up security issues, ignored return values, and compiler warnings.
The usual round of bug fixes, compatibility changes, and incremental improvements.
Release Notes:
HPLIP 3.18.3 - This release has the following changes:
Added support for the following new Printers:
- HP DesignJet Z2600 PostScript
- HP DesignJet Z5600 PostScript
- HP PageWide XL 8000ps Printer
- HP PageWide XL 8000 Blueprinter
- HP PageWide XL 5000 Printer
- HP PageWide XL 5000 MFP
- HP PageWide XL 5000 Blueprinter
- HP PageWide XL 4500 Printer
- HP PageWide XL 4500 MFP
- HP PageWide XL 4000 Printer
- HP PageWide XL 4000 MFP
- HP PageWide XL 5100ps
- HP PageWide XL 5100ps MFP
- HP PageWide XL 5100ps MFP Blueprinter
- HP PageWide XL 6000ps
- HP PageWide XL 6000ps MFP
Added support for the following new Distros:
- Manjaro Linux 17.1.4 (64 bit)
- Fedora 27 (64 bit)
- Linux Mint 18.3 (32 bit and 64 bit)
Launchpad fixes:
- 1736221 : hplip-3.17.11 source tarball contains compiled binaries
- 1741214 : scan.py - scans cannot be saved as JPEG since python-pillow-4.2.0
pkgsrc change:
* Add missing ALTERNATIVES forgot from 2015.
v2.1.0 (15th Februar 2018)
- Support extra encrypted PDF variants (thanks to Gyuchang Jun)
- various bug fixes
Changes:
1.20.1
------
- libcupsfilters: Silenced warning when using CUPS < 2.x by
eliminating the use of a recently introduced CUPS library
function (Bugzilla bug #1421).
- braille: Fix some missing options on indexv4. Thanks to
Samuel Thibault for this patch (Pull request #21).
- braille: Fix disabling margins on indexv4 in graphic
mode. Thanks to Samuel Thibault for this patch (Pull request
#20).
- braille: Fix installation of brftopagedbrf. Thanks to Samuel
Thibault for this patch (Pull request #18, Issue #17).
- cups-browsed: Fixed crash when CUPS reports a print queue
without "device-uri" attribute when cups-browsed polls a
list of local CUPS queues (Issue #16).
1.20.0
------
- libcupsfilters: Let the PPD generator prefer the English
translation file from CUPS for the human-readable strings in
the PPD files.
- libcupsfilters: The PPD generator lists all page sizes with
human-readable names now, including proprietary names of the
printer.
- cups-browsed, driverless: Fixed get-printer-attributes call
on driverless printers for generating the PPD, explicitly
requesting the media-col-database attribute as otherwise
borderless page sizes do not appear.
- libcupsfilters: Fixed loading option/choice strings lists
from driverless printers for PPD file generation. Especially
proprietary media types appear correctly now.
- libcupsfilters: Completed color space support in the PPD
generator: Added DeviceGray/RGB/CMYK, default to 8 bit for
SRGB and to 16 bit for AdobeRGB, avoid duplicate listings of
the same color space.
1.19.0
------
- libcupsfilters: Let the PPD generator add the options "Print
Optimization", "Print Rendering Intent" and "Print Scaling"
if appropriate IPP attributes are found.
- libcupsfilters: Let the PPD generator read out the maximum
of info about color spaces and this way not only reliably
the correct choices are added to the ColorModel option but
also the maximum supported bit depth (8 or 16 bit) is used.
- libcupsfilters: Overtaken new features from CUPS' PPD
generator: Presets, Finishing Templates, and extraction of
media sizes from "media-col-database"
- libcupsfilters: Improvements on header of generated PPDs:
use cups-filters version number, "drvless.ppd" PCFileName,
APSupplies and cupsChargeInfoURI from CUPS.
- libcupsfilters: Let the PPD generator use the IPP string
tables in the translation files of CUPS 2.3.x or newer
(English strings only). Let all options in the PPD have
human-readable option and choice names. In case of CUPS
2.2.x or older (or if the CUPS translation are missing) we
fall back to internal tables.
- cups-browsed: Improved debug output when checking IPP
attributes of IPP printers.
- .gitignore: Ignore also core files.
- cups-browsed: Support use of PPD files generated by CUPS for
IPP Printers. Works only if the the local queue created by
cups-browsed replaces a temporary queue from CUPS.
Configurable via "UseCUPSGeneratedPPDs" directive in
cups-browsed.conf.
1.18.0
------
- braille: Add support for page-ranges option. Thanks to
Samuel Thibault for this patch (Pull request #12).
- braille: Fix supporting docx and LO file names with
spaces. Thanks to Samuel Thibault for this patch (Pull
request #11).
- .gitignore: Updated and cleaned up.
- Build system: Make sure that "make dist" always includes all
files of the repository, plus the files generated by
./autogen.sh, independent of the system configuration and
the used ./configure options.
- pdftoijs, pdftoopvp: Build pdftoijs and pdftoopvp only on
demand (via "--enable-ijs" and "--enable-opvp" on the
./configure command line). There are actually no known
printer drivers using these filters. If no one complains
about the missing filters they will get completely removed.
- Build system: Set default path for pdftops to
/usr/bin/pdftops also for cross-compiling (Bug #1417).
- cups-browsed: Set "printer-location" as an attribute and not
as an option when creating/updating a CUPS queue (Bug
#1413).
- braille: Fix handling non-printable characters in BRF
files. Thanks to Samuel Thibault for this patch.
- braille: Fix printing backslashes in BRF files. Thanks to
Samuel Thibault for this patch.
- braille: use application/vnd.cups-brf instead of
text/vnd.cups-brf. Thanks to Samuel Thibault for this patch.
- braille: Make sure liblouis emits pure BRF output. Thanks to
Samuel Thibault for this patch.
- braille: Spaces at the head of lines were not getting
embossed, because bash would eat them in the read
command. IFS allows to avoid the issue. Thanks to Samuel
Thibault for this patch.
- gstoraster: Emit proper error message if Ghostscript is
missing. Thanks to Peter De Wachter (pdewacht at gmail dot
com) for the patch (Bug #1415).
- braille: Old bash does not like quotes, like in '$(("123" +
0))'. Removed unneeded quotes. Thanks to Samuel Thibault for
this patch.
- braille: Index V5 embossers are compatible with the V4
protocol so we do not need driver changes, we just need to
advertise the support. Thanks to Samuel Thibault for this
patch.
Changelog:
2018-02-25 Jay Berkenbilt <ejb@ql.org>
* 8.0.0: release
2018-02-17 Jay Berkenbilt <ejb@ql.org>
* Fix QPDFObjectHandle::getUTF8Val() to properly handle strings
that are encoded with PDF Doc Encoding. Fixes#179.
* Add qpdf_check_pdf to the "C" API. This method just attempts to
read the entire file and produce no output, making possible to
assess whether the file has any errors that qpdf can detect.
* Major enhancements to handling of type errors within the qpdf
library. This fix is intended to eliminate those annoying cases
where qpdf would exit with a message like "operation for
dictionary object attemped on object of wrong type" without
providing any context. Now qpdf keeps enough context to be able to
issue a proper warning and to handle such conditions in a sensible
way. This should greatly increase the number of bad files that
qpdf can recover, and it should make it much easier to figure out
what's broken when a file contains errors.
* Error message fix: replace "file position" with "offset" in
error messages that report lexical or parsing errors. Sometimes
it's an offset in an object stream or a content stream rather than
a file position, so this makes the error message less confusing in
those cases. It still requires some knowledge to find the exact
position of the error, since when it's not a file offset, it's
probably an offset into a stream after uncompressing it.
* Error message fix: correct some cases in which the object that
contained a lexical error was omitted from the error message.
* Error message fix: improve file name in the error message when
there is a parser error inside an object stream.
2018-02-11 Jay Berkenbilt <ejb@ql.org>
* Add QPDFObjectHandle::filterPageContents method to provide a
different interface for applying token filters to page contents
without modifying the ultimate output.
2018-02-04 Jay Berkenbilt <ejb@ql.org>
* Changes listed on today's date are numerous and reflect
significant enhancements to qpdf's lexical layer. While many
nuances are discussed and a handful of small bugs were fixed, it
should be emphasized that none of these issues have any impact on
any output or behavior of qpdf under "normal" operation. There are
some changes that have an effect on content stream normalization
as with qdf mode or on code that interacts with PDF files
lexically using QPDFTokenizer. There are no incompatible changes
for normal operation. There are a few changes that will affect the
exact error messages issued on certain bad files, and there is a
small non-compatible enhancement regarding the behavior of
manually constructed QPDFTokenizer::Token objects. Users of the
qpdf command line tool will see no changes other than the addition
of a new command-line flag and possibly some improved error
messages.
* Significant lexer (tokenizer) enhancements. These are changes to
the QPDFTokenizer class. These changes are of concern only to
people who are operating with PDF files at the lexical layer using
qpdf. They have little or no impact on most high-level interfaces
or the command-line tool.
New token types tt_space and tt_comment to recognize whitespace
and comments. this makes it possible to tokenize a PDF file or
stream and preserve everything about it.
For backward compatibility, space and comment tokens are not
returned by the tokenizer unless QPDFTokenizer.includeIgnorable()
is called.
Better handling of null bytes. These are now included in space
tokens rather than being their own "tt_word" tokens. This should
have no impact on any correct PDF file and has no impact on
output, but it may change offsets in some error messages when
trying to parse contents of bad files. Under default operation,
qpdf does not attempt to parse content streams, so this change is
mostly invisible.
Bug fix to handling of bad tokens at ends of streams. Now, when
allowEOF() has been called, these are treated as bad tokens
(tt_bad or an exception, depending on invocation), and a
separate tt_eof token is returned. Before the bad token
contents were returned as the value of a tt_eof token. tt_eof
tokens are always empty now.
Fix a bug that would, on rare occasions, report the offset in an
error message in the wrong space because of spaces or comments
adjacent to a bad token.
Clarify in comments exactly where the input source is positioned
surrounding calls to readToken and getToken.
* Add a new token type for inline images. This token type is only
returned by QPDFTokenizer immediately following a call to
expectInlineImage(). This change includes internal refactoring of
a handful of places that all separately handled inline images, The
logic of detecting inline images in content streams is now handled
in one place in the code. Also we are more flexible about what
characters may surround the EI operator that marks the end of an
inline image.
* New method QPDFObjectHandle::parsePageContents() to improve upon
QPDFObjectHandle::parseContentStream(). The parseContentStream
method used to operate on a single content stream, but was fixed
to properly handle pages with contents split across multiple
streams in an earlier release. The new method parsePageContents()
can be called on the page object rather than the value of the
page dictionary's /Contents key. This removes a few lines of
boiler-plate code from any code that uses parseContentStream, and
it also enables creation of more helpful error messages if
problems are encountered as the error messages can include
information about which page the streams come from.
* Update content stream parsing example
(examples/pdf-parse-content.cc) to use new
QPDFObjectHandle::parsePageContents() method in favor of the older
QPDFObjectHandle::parseContentStream() method.
* Bug fix: change where the trailing newline is added to a stream
in QDF mode when content normalization is enabled (the default for
QDF mode). Before, the content normalizer ensured that the output
ended with a trailing newline, but this had the undesired side
effect of including the newline in the stream data for purposes of
length computation. QPDFWriter already appends a newline without
counting in length for better readability. Ordinarily this makes
no difference, but in the rare case of a page's contents being
split in the middle of a token, the old behavior could cause the
extra newline to be interprted as part of the token. This bug
could only be triggered in qdf mode, which is a mode intended for
manual inspection of PDF files' contents, so it is very unlikely
to have caused any actual problems for people using qpdf for
production use. Even if it did, it would be very unusual for a PDF
file to actually be adversely affected by this issue.
* Add support for coalescing a page's contents into a single
stream if they are represented as an array of streams. This can be
performed from the command line using the --coalesce-contents
option. Coalescing content streams can simplify things for
software that wants to operate on a page's content streams without
having to handle weird edge cases like content streams split in
the middle of tokens. Note that
QPDFObjectHandle::parsePageContents and
QPDFObjectHandle::parseContentStream already handled split content
streams. This is mainly to set the stage for new methods of
operating on page contents. The new method
QPDFObjectHandle::pipeContentStreams will pipe all of a page's
content streams though a single pipeline. The new method
QPDFObjectHandle.coalesceContentStreams, when called on a page
object, will do nothing if the page's contents are a single
stream, but if they are an array of streams, it will replace the
page's contents with a single stream whose contents are the
concatenation of the original streams.
* A few library routines throw exceptions if called on non-page
objects. These constraints have been relaxed somewhat to make qpdf
more tolerant of files whose page dictionaries are not properly
marked as such. Mostly exceptions about page operations being
called on non page objects will only be thrown in cases where the
operation had no chance of succeeding anyway. This change has no
impact on any default mode operations, but it could allow
applications that use page-level APIs in QPDFObjectHandle to be
more tolerant of certain types of damaged files.
* Add QPDFObjectHandle::TokenFilter class and methods to use it to
perform lexical filtering on content streams. You can call
QPDFObjectHandle::addTokenFilter on stream object, or you can call
the higher level QPDFObjectHandle::addContentTokenFilter on a page
object to cause the stream's contents to passed through a token
filter while being retrieved by QPDFWriter or any other consumer.
For details on using TokenFilter, please see comments in
QPDFObjectHandle.hh.
* Enhance the string, type QPDFTokenizer::Token constructor to
initialize a raw value in addition to a value. Tokens have a
value, which is a canonical representation, and a raw value. For
all tokens except strings and names, the raw value and the value
are the same. For strings, the value excludes the outer delimiters
and has non-printing characters normalized. For names, the value
resolves non-printing characters. In order to better facilitate
token filters that mostly preserve contents and to enable
developers to be mostly unconcerned about the nuances of token
values and raw values, creating string and name tokens now
properly handles this subtlety of values and raw values. When
constructing string tokens, take care to avoid passing in the
outer delimiters. This has always been the case, but it is now
clarified in comments in QPDFObjectHandle.hh::TokenFilter. This
has no impact on any existing code unless there's some code
somewhere that was relying on Token::getRawValue() returning an
empty string for a manually constructed token. The token class's
operator== method still only looks at type and value, not raw
value. For example, string tokens for <41> and (A) would still be
equal because both are representations of the string "A".
* Add QPDFObjectHandle::isDataModified method. This method just
returns true if addTokenFilter has been called on the stream. It
enables a caller to determine whether it is safe to optimize away
piping of stream data in cases where the input and output are
expected to be the same. QPDFWriter uses this internally to skip
the optimization of not re-compressing already compressed streams
if addTokenFilter has been called. Most developers will not have
to worry about this as it is used internally in the library in the
places that need it. If you are manually retrieving stream data
with QPDFObjectHandle::getStreamData or
QPDFObjectHandle::pipeStreamData, you don't need to worry about
this at all.
* Provide heavily annoated examples/pdf-filter-tokens.cc example
that illustrates use of some simple token filters.
* When normalizing content streams, as in qdf mode, issue warning
about bad tokens. Content streams are only normalized when this is
explicitly requested, so this has no impact on normal operation.
However, in qdf mode, if qpdf detects a bad token, it means that
either there's a bug in qpdf's lexer, that the file is damaged, or
that the page's contents are split in a weird way. In any of those
cases, qpdf could potentially damage the stream's contents by
replacing carrige returns with newlines or otherwise messing with
spaces. The mostly likely case of this would be an inline image's
compressed data being divided across two streams and having the
compressed data in the second stream contain a carriage return as
part of its binary data. If you are using qdf mode just to look at
PDF files in text editors, this usually doesn't matter. In cases
of contents split across multiple streams, coalescing streams
would eliminate the problem, so the warning mentions this. Prior
to this enhancement, the chances of qdf mode writing incorrect
data were already very low. This change should make it nearly
impossible for qdf mode to unknowingly write invalid data.
2018-02-04 Jay Berkenbilt <ejb@ql.org>
* Add QPDFWriter::setLinearizationPass1Filename method and
--linearize-pass1 command line option to allow specification of a
file into which QPDFWriter will write its intermediate
linearization pass 1 file. This is useful only for debugging qpdf.
qpdf creates linearized files by computing the output in two
passes. Ordinarily the first pass is discarded and not written
anywhere. This option allows it to be inspected.
7.1.1: release
* Bug fix: properly linearize files whose /ID has a length of
other than 16 bytes.
* Rename some test files to avoid files with three dots in their
names.
* Fix various build and compilation issues on some platforms and
compilers.
* Fix a few typos and clarify a few comments in header files.
Changelog:
2018-01-14 Jay Berkenbilt <ejb@ql.org>
* 7.1.0: release
* Allow raw encryption key to be specified in libary and command
line with the QPDF::setPasswordIsHexKey method and
--password-is-hex-key option. Allow encryption key to be displayed
with --show-encryption-key option. Thanks to Didier Stevens
<didier.stevens@gmail.com> for the idea and contribution of one
implementation of this idea. See his blog post at
https://blog.didierstevens.com/2017/12/28/cracking-encrypted-pdfs-part-3/
for a discussion of using this for cracking encrypted PDFs. I hope
that a future release of qpdf will include some additional
recovery options that may also make use of this capability.
2018-01-13 Jay Berkenbilt <ejb@ql.org>
* Fix lexical error: the PDF specification allows floating point
numbers to end with ".". Fixes#165.
* Fix link order in the build to avoid conflicts when building
from source while an older version of qpdf is installed. Fixes#158.
* Add support for TIFF predictor for LZW and Flate streams. Now
all predictor functions are supported. Fixes#171.
2017-12-25 Jay Berkenbilt <ejb@ql.org>
* Clarify documentation around options that control parsing but
not output creation. Two options: --suppress-recovery and
--ignore-xref-streams, were documented in the "Advanced
Transformation Options" section of the manual and --help output
even though they are not related to output. These are now
described in a separate section called "Advanced Parsing Options."
* Implement remaining PNG filters for decode. Prior versions could
decode only the "up" filter. Now all PNG filters (sub, up,
average, Paeth, optimal) are supported for decoding. Thanks to
Tobias Hoffmann for providing a test PDF file that has images with
all PNG filters along with different numbers of bits per sample
and samples per pixel, and thanks to Casey Rojas for providing
implementations of the remaining PNG filters.
The implementation of the remaining PNG filters changed the
interface to the private Pl_PNGFilter class, but this class's
header file is not in the installation, and there is no public
interface to the class. Within the library, the class is never
allocated on the stack; it is only ever dynamically allocated. As
such, this does not actually break binary compatibility of the
library.
Version 0.42.1
Bug fixes:
Don't crash when using @font-config.
Fix text-indent with text-align: justify.
Fix string(*, start).
Handle named pages with pseudo-class.
Fix running headers.
Avoid infinite loops in inline_line_width.
Fix margins, borders and padding in column layouts.
From v. 4.54c to 4.55
Correct bug that $search_path_separator wasn't defined under msys.
Ensure that all configuration variables do have sensible default
definitions (which wasn't always the case previously).
Allow optional timeout in pvc mode after a period of inactivity.
(See documentation for -pvctimeout option.)
Compensate for problems caused by time offset between system time on
system running latexmk and file times on remote file system.
(It caused wrong behavior when a document uses biber, MiKTeX
is used, the aux_dir is on a remote file system, and the system
time on the host of the file system differs from the system time on
the system running latexmk.)
fvextra provides several extensions to fancyvrb, including
automatic line breaking and improved math mode. It also patches
some fancyvrb internals. Parts of fvextra were originally
developed as part of pythontex and minted.
This is a bundle of lua scripts and LaTeX packages for
conversion of LaTeX files to ebook formats such as epub, mobi
and epub3. tex4ht is used as conversion engine.
Release 0.62.0
core:
* Stop supporting lcms1, you really want to use lcms2 :)
* Stop supporting openjpeg1, you really want to use openjpeg2 :)
* Open files that state 8 bits as third field of W. Bug #103469
* GfxLabColorSpace::parse: Fix crash in broken documents. Bug #103582
* Fix leak if parseDA fails
* Include glibc.h where needed
* Document the meaning of the 'type' integer of a shading
* Fix UTF test fail
* INSTALL: add debug options
qt5:
* Add API to let the rendering process callback to get a partial rendering. Bug #103372
qt4:
* Remove the Qt4 frontend
utils:
* Support unicode on windows console
* pdfsig: install man page
* sort encoding list
glib:
* demo: fix warning
From v. 4.54 to 4.54c
Work-around for when bsd_glob is not available on old installations of
Perl. (Note that with these old installations, clean-up operations
may not work when file or directory names contain spaces.)
The actual fix as been done by "pkglint -F */*/buildlink3.mk", and was
reviewed manually.
There are some .include lines that still are indented with zero spaces
although the surrounding .if is indented. This is existing practice.
pkgsrc changes:
- Remove patches/patch-image.c, patches/patch-index.c, patches/patch-page.c,
patches/patch-plugin.h, patches/patch-render.c, patches/patch-select.c,
patches/patch-utils.c . They were all applied upstream and no more needed.
Changes:
0.3.2
-----
* Compatible with mupdf 1.12
* Adapt to new plugin interface
Version 0.42
New features:
* Support relative file URIs when using CLI.
Bug fixes:
* Fix slow performance for pre-formatted boxes with a lot of children.
* Don't crash when rendering some tables.
* Fix rendering of floats in inlines.
* Split lines carefully.
* Fix root when frozen with Pyinstaller.
* Handle SVGs containing images embedded as data URIs.
* Fix border-radius rendering problem with some PDF readers.
* Fix pipenv support.
* Smartly handle replaced boxes with percentage width in auto-width parents.
* Don't ignore CSS @page rules that are imported by an @import rule.
Unsorted entries in PLIST files have generated a pkglint warning for at
least 12 years. Somewhat more recently, pkglint has learned to sort
PLIST files automatically. Since pkglint 5.4.23, the sorting is only
done in obvious, simple cases. These have been applied by running:
pkglint -Cnone,PLIST -Wnone,plist-sort -r -F
This has been a pkglint warning for several years now, and pkglint can even
fix it automatically. And it did for this commit.
Only in lang/mercury, two passes of autofixing were necessary because there
were nested variables.