TextOutputDev: Honor the selection rectangle passed to TextPage::getSelectionWords()

Make TextPage::getSelectionWords() return a list of TextWordSelection
instead of a list of TextWord so that it's possible to know which
characters of the word are inside the given selection rectangle.
Adapt the glib frontend to the new API and use the selection bounds
instead of the whole word to build the list of characters in
poppler_page_get_text_layout() and poppler_page_get_text_attributes(),
which ensures the number of glyphs returned is in sync with the number
of characters returned by poppler_page_get_text().

https://bugs.freedesktop.org/show_bug.cgi?id=71160
glib: Add API to get text, text layout and text attributes for a given area
glib-demo: Add an area selector to text demo

And use the for_area variants of the API to get the text, text layout
and text attributes.
Update copyrights
Warn the user if he provides a wrong range
0.24.4
regtest: Use number of tests run to show the progress

Instead of using the number of document tested. We don't really need to
set a number to a particular document, we only want to know the progress
of the whole process. This ensures that the progress is shown in the
correct order. It also simplifies the code a bit.
Also improved the output formatting to make it easier to read.
regtest: Do not consider docs with no refs as skipped

Handle them differently as new docs, and show them in the summary
suggesting to use create-refs command to include them in the test
suite.
regtest: Do not store the current line in Printer but only its length

We are not using the line text anymore, but only the length.
regtest: Remove unused method _check_exit_status2

It was used when the backends ran in parallel odd and even pages, but
it's no longer used since threads support was added.
regtest: Read test results in chunks to get the md5 digest

Some backends can generate huge results, like huge postscript files that
we don't want to load in memory to get the md5. So, instead of creating
thr md5 object with the entire file, we feed it with chunks of data
using the update method. This improves a lot the memory consumption and
performance as well.
regtest: Do not buffer stderr output

Some buggy documents can produce a huge stderr output because of parsing
errors or whatever. We could give a file directly to Popen to write the
stderr file, but we only want to create the file when there's output,
because it's what we use to know whether the command produced output or
not. So, instead of buffering the whole output and then write it to the
file, now we read from the pipe while the command is running, writing
the output in chunks to the file. This improves a lot the memory
consumption when running some tests.
Limit use of ZapfDingbats character names

Some PDFs use names from ZapfDingbats (a1-a206) without intending for
them to be used for text extraction.  Only use these character names
to locate glyphs or for text extraction with ZapfDingbats fonts.

Bug #60243
glib-demo: Show number of charcters and text layout units in text demo

It helps to easily detect the cases where these values mismatch.
Tagged-PDF: Text content extraction from structure elements

Implement StructElement::getText(), by using MCOutputDev. This output device
captures pieces of text (aka "spans") which have the same attributes into
a list of TextSpan objects.

https://bugs.freedesktop.org/show_bug.cgi?id=64815
annots: Remove unused typeUnknown AnnotBorderType from AnnotBorder

Also make the AnnotBorder constructor protected to make sure it's not
possible to create AnnotBorder instances.
annots: Add helper function Annot::setLineStyleForBorder

It sets the line dash and width based on the given AnnotBorder. Use it
only when the border width is greater than 0 for FreeText annotations
and always for annotations that use the border to set the line width and
dash, but don't draw a border.
annots: Use a default border for annots that can have a BS entry

According to the spec if neither the Border nor the BS entry is present,
the border shall be drawn as a solid line with a width of 1 point.
However, acroread seems to ignore the Border entry for annots that can't
have a BS entry.
annots: Make Annot::setBorder receive an AnnotBorder object

Instead of receiving AnnotBorderArray. Also implement writeToObject in
both AnnotBorderArray and AnnotBorderBS to make sure that
Annot::setBorder will work for both cases.
glib: Add implementation of Square and Circle annotations

Square and Circle only differ in the constructor which defines
the subtype.  Therefore, it uses the same name than Poppler's
Geometry class.

https://bugs.freedesktop.org/show_bug.cgi?id=70983