summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-02-01 23:11:10 +0000
committerKarl Berry <karl@freefriends.org>2023-02-01 23:11:10 +0000
commitabaa8cf5f9d5ae5230529d86c8b5d221c59949fa (patch)
tree22918f9597053e2faae4c7ef380e30ebfa315884
parentdb397219dfec65ea2187159a82b824311d3aacdb (diff)
dvisvgm 3.0.2
git-svn-id: svn://tug.org/texlive/trunk@65711 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Build/source/texk/dvisvgm/TLpatches/TL-Changes13
-rw-r--r--Build/source/texk/dvisvgm/TLpatches/patch-04-configure8
-rw-r--r--Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles31
-rwxr-xr-xBuild/source/texk/dvisvgm/configure22
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/NEWS6
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/aminclude_static.am2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/configure.ac2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.14
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.cpp8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.hpp3
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PDFHandler.cpp42
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PDFHandler.hpp2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/fonts/Base14Fonts.cpp5
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/fonts/Base14Fonts.hpp2
-rw-r--r--Build/source/texk/dvisvgm/version.ac2
17 files changed, 90 insertions, 66 deletions
diff --git a/Build/source/texk/dvisvgm/TLpatches/TL-Changes b/Build/source/texk/dvisvgm/TLpatches/TL-Changes
index 415d9d2abd6..277e08771e4 100644
--- a/Build/source/texk/dvisvgm/TLpatches/TL-Changes
+++ b/Build/source/texk/dvisvgm/TLpatches/TL-Changes
@@ -7,10 +7,11 @@ Changes applied to the original dvisvgm source as obtained from:
Update version in ./version.ac.
Update DATE and copyrights in configure.ac.
+ver=3.NEW.VER
mv dvisvgm-src dvisvgm-prev
-tar xf dvisvgm-VER.tar.gz
-mv dvisvgm-VER dvisvgm-src
-tar xf dvisvgm-VER.tar.gz # again, so we can compare orig release to ours
+tar xf dvisvgm-$ver.tar.gz
+mv dvisvgm-$ver dvisvgm-src
+tar xf dvisvgm-$ver.tar.gz # again, so we can compare orig release to ours
# remove common and generated files:
cd dvisvgm-src
@@ -43,6 +44,6 @@ patch -d dvisvgm-src -p1 <TLpatches/patch-08-makefiles
autoreconf
# before committing, update patches:
-diff -u2 dvisvgm-3.0.1/configure.ac ./ >TLpatches/patch-04-configure
-for m in `(cd ./dvisvgm-src && find -name Makefile.am)`; do \
- diff -u2 dvisvgm-{3.0.1,src}/$m; done >TLpatches/patch-08-makefiles
+diff -u2 dvisvgm-$ver/configure.ac ./ >TLpatches/patch-04-configure
+for m in `(cd ./dvisvgm-src && find -name Makefile.am -o -name defs.am)`; do \
+ diff -u2 dvisvgm-{$ver,src}/$m; done >TLpatches/patch-08-makefiles
diff --git a/Build/source/texk/dvisvgm/TLpatches/patch-04-configure b/Build/source/texk/dvisvgm/TLpatches/patch-04-configure
index b1579ed6822..948f16eb4d6 100644
--- a/Build/source/texk/dvisvgm/TLpatches/patch-04-configure
+++ b/Build/source/texk/dvisvgm/TLpatches/patch-04-configure
@@ -1,5 +1,5 @@
---- dvisvgm-3.0.1/configure.ac 2023-01-10 05:23:42.000000000 -0800
-+++ ./configure.ac 2023-01-19 15:35:24.739713575 -0800
+--- dvisvgm-3.0.2/configure.ac 2023-01-29 23:25:49.000000000 -0800
++++ ./configure.ac 2023-01-19 17:55:07.781367630 -0800
@@ -1,15 +1,32 @@
-# This file is part of dvisvgm
-# Copyright (C) 2005-2023 Martin Gieseking <martin.gieseking@uos.de>
@@ -7,8 +7,8 @@
-# Process this file with autoconf to produce a configure script.
-
-AC_PREREQ([2.69])
--AC_INIT([dvisvgm],[3.0.1],[martin.gieseking@uos.de])
-+dnl $Id: configure.ac 64941 2022-11-05 15:43:53Z karl $
+-AC_INIT([dvisvgm],[3.0.2],[martin.gieseking@uos.de])
++dnl $Id: configure.ac 65593 2023-01-20 01:55:04Z karl $
+dnl Process this file with autoconf to produce a configure script
+dnl for dvisvgm in TeX Live.
+dnl
diff --git a/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles b/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles
index 377c0243c72..a9d592c59c6 100644
--- a/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles
+++ b/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles
@@ -1,5 +1,5 @@
---- dvisvgm-3.0.1/./Makefile.am 2023-01-10 05:22:18.000000000 -0800
-+++ dvisvgm-src/./Makefile.am 2023-01-19 15:27:47.262096221 -0800
+--- dvisvgm-3.0.2/./Makefile.am 2023-01-17 00:55:33.000000000 -0800
++++ dvisvgm-src/./Makefile.am 2023-02-01 15:05:49.038254644 -0800
@@ -4,9 +4,9 @@
## Process this file with automake.
@@ -12,8 +12,27 @@
+SUBDIRS = libs src #not for TL: m4 tests doc
ACLOCAL_AMFLAGS = -I m4
---- dvisvgm-3.0.1/./libs/Makefile.am 2023-01-10 05:22:18.000000000 -0800
-+++ dvisvgm-src/./libs/Makefile.am 2023-01-19 15:14:57.121900128 -0800
+--- dvisvgm-3.0.2/./libs/defs.am 2022-12-06 08:13:36.000000000 -0800
++++ dvisvgm-src/./libs/defs.am 2023-02-01 15:07:30.036487762 -0800
+@@ -5,6 +5,14 @@
+
+ if !HAVE_POTRACE
+-POTRACE_CFLAGS = -I$(dvisvgm_srcdir)/libs/potrace
+-POTRACE_LIBS = ../libs/potrace/libpotrace.a
++# Gets automake warnings:
++# dvisvgm-src/src/../libs/defs.am:9: warning: POTRACE_LIBS was already defined in condition TRUE, which includes condition !HAVE_POTRACE and !TEXLIVE_BUILD ...
++# dvisvgm-src/src/Makefile.am:14: 'dvisvgm-src/src/../libs/defs.am' included from here
++# configure.ac:51: ... 'POTRACE_LIBS' previously defined here
++#if !TEXLIVE_BUILD
++#POTRACE_CFLAGS = -I$(dvisvgm_srcdir)/libs/potrace
++#POTRACE_LIBS = ../libs/potrace/libpotrace.a
++#else
++POTRACE_CFLAGS = $(POTRACE_INCLUDES)
++#endif TEXLIVE_BUILD
+ endif
+
+--- dvisvgm-3.0.2/./libs/Makefile.am 2023-01-17 00:55:33.000000000 -0800
++++ dvisvgm-src/./libs/Makefile.am 2023-02-01 15:05:49.038254644 -0800
@@ -4,5 +4,9 @@
## Process this file with automake.
@@ -25,8 +44,8 @@
+endif
if ENABLE_WOFF
---- dvisvgm-3.0.1/./src/Makefile.am 2023-01-10 05:22:18.000000000 -0800
-+++ dvisvgm-src/./src/Makefile.am 2023-01-19 15:45:32.415222210 -0800
+--- dvisvgm-3.0.2/./src/Makefile.am 2023-01-17 00:55:33.000000000 -0800
++++ dvisvgm-src/./src/Makefile.am 2023-02-01 15:05:49.038254644 -0800
@@ -17,8 +17,6 @@
$(noinst_LTLIBRARIES) \
../libs/clipper/libclipper.a \
diff --git a/Build/source/texk/dvisvgm/configure b/Build/source/texk/dvisvgm/configure
index affaffa697c..52bcf808b95 100755
--- a/Build/source/texk/dvisvgm/configure
+++ b/Build/source/texk/dvisvgm/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for dvisvgm (TeX Live) 3.0.1.
+# Generated by GNU Autoconf 2.71 for dvisvgm (TeX Live) 3.0.2.
#
# Report bugs to <tex-k@tug.org>.
#
@@ -629,8 +629,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='dvisvgm (TeX Live)'
PACKAGE_TARNAME='dvisvgm--tex-live-'
-PACKAGE_VERSION='3.0.1'
-PACKAGE_STRING='dvisvgm (TeX Live) 3.0.1'
+PACKAGE_VERSION='3.0.2'
+PACKAGE_STRING='dvisvgm (TeX Live) 3.0.2'
PACKAGE_BUGREPORT='tex-k@tug.org'
PACKAGE_URL=''
@@ -1445,7 +1445,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures dvisvgm (TeX Live) 3.0.1 to adapt to many kinds of systems.
+\`configure' configures dvisvgm (TeX Live) 3.0.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1517,7 +1517,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of dvisvgm (TeX Live) 3.0.1:";;
+ short | recursive ) echo "Configuration of dvisvgm (TeX Live) 3.0.2:";;
esac
cat <<\_ACEOF
@@ -1657,7 +1657,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-dvisvgm (TeX Live) configure 3.0.1
+dvisvgm (TeX Live) configure 3.0.2
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2419,7 +2419,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by dvisvgm (TeX Live) $as_me 3.0.1, which was
+It was created by dvisvgm (TeX Live) $as_me 3.0.2, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -9030,7 +9030,7 @@ fi
# Define the identity of the package.
PACKAGE='dvisvgm--tex-live-'
- VERSION='3.0.1'
+ VERSION='3.0.2'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -21326,7 +21326,7 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
-dvisvgm (TeX Live) config.lt 3.0.1
+dvisvgm (TeX Live) config.lt 3.0.2
configured by $0, generated by GNU Autoconf 2.71.
Copyright (C) 2011 Free Software Foundation, Inc.
@@ -24831,7 +24831,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by dvisvgm (TeX Live) $as_me 3.0.1, which was
+This file was extended by dvisvgm (TeX Live) $as_me 3.0.2, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -24899,7 +24899,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-dvisvgm (TeX Live) config.status 3.0.1
+dvisvgm (TeX Live) config.status 3.0.2
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in
index 8e0a97bfa38..25134d16089 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in
@@ -15,7 +15,7 @@
@SET_MAKE@
# aminclude_static.am generated automatically by Autoconf
-# from AX_AM_MACROS_STATIC on Tue Jan 10 14:41:23 CET 2023
+# from AX_AM_MACROS_STATIC on Mon Jan 30 08:25:52 CET 2023
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/NEWS b/Build/source/texk/dvisvgm/dvisvgm-src/NEWS
index d1f6981d0bf..73e94d8cac0 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/NEWS
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/NEWS
@@ -1,3 +1,9 @@
+dvisvgm-3.0.2 (2023-01-30)
+- fixed computation of font sizes in new PDF handler (GH issue #220)
+- fixed viewBox coordinates determined by new PDF handler (GH issue #223)
+- improved detection of font names used in PDF files (GH issue #224)
+- minor code improvements
+
dvisvgm-3.0.1 (2023-01-10)
- added support for the 64-bit GS library in TeX Live
(patch sent by Akira Kakuto)
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/aminclude_static.am b/Build/source/texk/dvisvgm/dvisvgm-src/aminclude_static.am
index da2bc19bda7..fa78c284abf 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/aminclude_static.am
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/aminclude_static.am
@@ -1,6 +1,6 @@
# aminclude_static.am generated automatically by Autoconf
-# from AX_AM_MACROS_STATIC on Tue Jan 10 14:41:23 CET 2023
+# from AX_AM_MACROS_STATIC on Mon Jan 30 08:25:52 CET 2023
# Code coverage
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac b/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac
index 7fa9e9b18f5..27e1e2ec396 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac
@@ -4,7 +4,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
-AC_INIT([dvisvgm],[3.0.1],[martin.gieseking@uos.de])
+AC_INIT([dvisvgm],[3.0.2],[martin.gieseking@uos.de])
DATE="January 2023"
AC_CONFIG_SRCDIR(src)
AC_CONFIG_HEADERS([config.h])
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1
index 06705cef777..dc17575416b 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1
@@ -4,10 +4,10 @@
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 2022-10-14
.\" Manual: dvisvgm Manual
-.\" Source: dvisvgm 3.0.1
+.\" Source: dvisvgm 3.0.2
.\" Language: English
.\"
-.TH "DVISVGM" "1" "2022\-10\-14" "dvisvgm 3\&.0\&.1" "dvisvgm Manual"
+.TH "DVISVGM" "1" "2022\-10\-14" "dvisvgm 3\&.0\&.2" "dvisvgm Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.cpp
index 7eeaadeb9da..bc6f88d322b 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.cpp
@@ -325,18 +325,18 @@ int FontManager::registerFont (uint32_t fontnum, const string &filename, int fon
/** Registers a native font that is referenced by its name instead of a DVI font number.
* @param[in] fname filename/path of the font file
+ * @param[in] fontname font name used if the font file doesn't provide one
* @param[in] ptsize font size in PS points
* return global ID assigned to the font */
-int FontManager::registerFont (const std::string &fname, double ptsize) {
+int FontManager::registerFont (const string &fname, string fontname, double ptsize) {
if (fname.empty())
return -1;
- string fontname;
if (fname.size() > 6 && fname.substr(0,6) == "sys://") {
fontname = fname.substr(6);
if (!find_base14_font(fontname))
return -1;
}
- else if (!FileSystem::exists(fname) || (fontname = FontEngine::instance().getPSName(fname)).empty())
+ else if (!FileSystem::exists(fname) || (fontname.empty() && (fontname = FontEngine::instance().getPSName(fname)).empty()))
return -1;
int id = fontID(fontname, ptsize);
if (id >= 0)
@@ -345,7 +345,7 @@ int FontManager::registerFont (const std::string &fname, double ptsize) {
id = fontID(fontname);
if (id < 0) {
nativeFont = util::make_unique<NativeFontImpl>(fname, fontname, ptsize);
- _name2id.emplace(std::move(fontname), _fonts.size());
+ _name2id.emplace(std::move(fontname), int(_fonts.size()));
}
else {
auto *nf = font_cast<NativeFont*>(getFontById(id));
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.hpp
index eeaa1949de9..503813a86d5 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.hpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.hpp
@@ -57,8 +57,7 @@ class FontManager {
int registerFont (uint32_t fontnum, const std::string &fontname, uint32_t checksum, double dsize, double scale);
int registerFont (uint32_t fontnum, const std::string &fname, double ptsize, const FontStyle &style, Color color);
int registerFont (uint32_t fontnum, const std::string &fname, int fontIndex, double ptsize, const FontStyle &style, Color color);
-// int registerFont (const std::string &fname, int fontIndex, double ptsize, const FontStyle &style, Color color);
- int registerFont (const std::string &fname, double ptsize);
+ int registerFont (const std::string &fname, std::string fontname, double ptsize);
Font* getFont (int n) const;
Font* getFont (const std::string &name) const;
Font* getFont (const std::string &name, double ptsize);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PDFHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PDFHandler.cpp
index 9703124e2c7..ba88e698525 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PDFHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PDFHandler.cpp
@@ -139,19 +139,6 @@ string PDFHandler::mutoolVersion () {
}
-/** Returns the bounding box of a selected PDF page. */
-BoundingBox PDFHandler::bbox (string &fname, int pageno) {
- BoundingBox bbox;
- string arraystr = mtShow(fname, "pages/" + to_string(pageno) + "/MediaBox");
- if (arraystr.substr(0, 4) == "null")
- arraystr = mtShow(fname, "pages/" + to_string(pageno) + "/Parent/MediaBox");
- auto vec = parse_pdf_array<double>(arraystr);
- if (vec.size() == 4)
- bbox = BoundingBox(vec[0], vec[1], vec[2], vec[3]);
- return bbox;
-}
-
-
/** Converts a single page of a PDF file to SVG. If no context element is given,
* the SVG page contents are added to a page group element of the SVG tree.
* Otherwise, they are added to the context element which is not inserted into
@@ -220,15 +207,12 @@ void PDFHandler::finishFile () {
void PDFHandler::initPage (int pageno, unique_ptr<SVGElement> context) {
_pageno = pageno;
- _bbox = bbox(_fname, pageno);
- if (context) {
+ if (!context)
+ _svg->newPage(_pageno);
+ else {
_context = context.get();
_svg->pushPageContext(std::move(context));
}
- else {
- _svg->newPage(_pageno);
- _svg->setBBox(_bbox);
- }
// collect sequence of images referenced on current page
collectObjects();
_imgSeq.clear();
@@ -287,7 +271,8 @@ void PDFHandler::elementClosed (XMLElement *trcElement) {
struct Handler {
const char *name;
void (PDFHandler::*func)(XMLElement*);
- } handlers[9] = {
+ } handlers[10] = {
+ {"page", &PDFHandler::doPage},
{"stroke_path", &PDFHandler::doStrokePath},
{"fill_path", &PDFHandler::doFillPath},
{"fill_image", &PDFHandler::doFillImage},
@@ -309,6 +294,13 @@ void PDFHandler::elementClosed (XMLElement *trcElement) {
}
+void PDFHandler::doPage (XMLElement *trcPageElement) {
+ auto vec = parse_attr_value<vector<double>>(trcPageElement, "mediabox");
+ if (vec.size() == 4)
+ _bbox = BoundingBox(vec[0], vec[1], vec[2], vec[3]);
+}
+
+
/** Returns a color object from color data given in the trace XML.
* @param[in] colorspace currently supported: DeviceGray, DeviceRGB, DeviceCMYK
* @param[in] value color components depending on color space */
@@ -645,8 +637,9 @@ void PDFHandler::doFillText (XMLElement *trcFillTextElement) {
filename = it->second.fname;
if (filename.empty())
filename = "sys://"+fontname;
- double ptsize = abs(trm[0]);
- int fontID = FontManager::instance().registerFont(filename, ptsize);
+ double ptsize = matrix_extent({trm[0], trm[1], 0, trm[2], trm[3]});
+ ptsize = round(10*ptsize)/10;
+ int fontID = FontManager::instance().registerFont(filename, fontname, ptsize);
if (fontID >= 0) {
auto font = font_cast<NativeFont*>(FontManager::instance().getFontById(fontID));
if (font != _currentFont) {
@@ -789,7 +782,6 @@ void PDFHandler::collectObjects () {
_objDict = parse_pdf_dict<ObjID>(mtShow("pages/" + to_string(_pageno) + "/Resources/XObject"));
// replace referenced font IDs by actual IDs used for extracted fonts
for (auto &entry : _objDict) {
- string objtype = mtShow(to_string(entry.second.num)+"/Type", SearchPattern(R"(/(\w+))", "$1"));
// store filenames of non-font object in object map
auto fnameIt = _extractedFiles.find(entry.second.num);
entry.second.fname = fnameIt != _extractedFiles.end() ? tmpdir+fnameIt->second : "";
@@ -798,6 +790,10 @@ void PDFHandler::collectObjects () {
if (entry.second.substr(0, 5) == "font-") {
string filepath = tmpdir+entry.second; // path to font file
string fontname = strip_subset_prefix(FontEngine::instance().getPSName(filepath));
+ // If the extracted font file doesn't contain a font name,
+ // try to get it from the corresponding PDF object.
+ if (fontname.empty())
+ fontname = mtShow(to_string(entry.first)+"/FontName", SearchPattern(R"(/(\w+))", "$1"));
_objDict.emplace(fontname, ObjID(entry.first, 0, filepath));
}
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PDFHandler.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PDFHandler.hpp
index fd34ce05685..3400a1d69d7 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PDFHandler.hpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PDFHandler.hpp
@@ -57,7 +57,6 @@ class PDFHandler {
const BoundingBox& bbox () const {return _bbox;}
std::unique_ptr<SVGElement> convert (const std::string &fname, int pageno, std::unique_ptr<SVGElement> context=nullptr);
static std::string mutoolVersion ();
- static BoundingBox bbox (std::string &fname, int pageno);
static bool available () {return !mutoolVersion().empty();}
protected:
@@ -77,6 +76,7 @@ class PDFHandler {
void collectObjects ();
void elementOpened (XMLElement *trcElement);
void elementClosed (XMLElement *trcElement);
+ void doPage (XMLElement *trcPageElement);
void doClipPath (XMLElement *trcClipPathElement);
void doClipStrokePath (XMLElement *trcClipStrokePathElement);
void doClipText (XMLElement *trcClipTextElement);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp
index bac95b3093d..11489113f3c 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp
@@ -179,7 +179,7 @@ uint32_t RangeMap::valueAt (uint32_t c) const {
/** Returns the number of values mapped. */
size_t RangeMap::numValues () const {
- return std::accumulate(_ranges.begin(), _ranges.end(), 0, [](size_t sum, const Range &range) {
+ return std::accumulate(_ranges.begin(), _ranges.end(), size_t(0), [](size_t sum, const Range &range) {
return sum+range.max()-range.min()+1;
});
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/fonts/Base14Fonts.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/fonts/Base14Fonts.cpp
index 07f4850bc1b..6f316ffca97 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/fonts/Base14Fonts.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/fonts/Base14Fonts.cpp
@@ -2,7 +2,7 @@
** Base14Fonts.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2022 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2023 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -38,6 +38,9 @@ extern const MemoryFontData NimbusSans_Italic_cff;
extern const MemoryFontData NimbusSans_Regular_cff;
extern const MemoryFontData StandardSymbolsPS_cff;
+/** Returns the CFF font data for a given name of a Base 14 font.
+ * If 'fontname' doesn't specify one of the 14 PDF base fonts,
+ * the function returns nullptr. */
const MemoryFontData* find_base14_font (const string &fontname) {
struct FontData {
const char *name;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/fonts/Base14Fonts.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/fonts/Base14Fonts.hpp
index 4e410fdc61c..8746f593d6f 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/fonts/Base14Fonts.hpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/fonts/Base14Fonts.hpp
@@ -2,7 +2,7 @@
** Base14Fonts.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2022 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2023 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
diff --git a/Build/source/texk/dvisvgm/version.ac b/Build/source/texk/dvisvgm/version.ac
index de7b777843e..3fda0f22dc2 100644
--- a/Build/source/texk/dvisvgm/version.ac
+++ b/Build/source/texk/dvisvgm/version.ac
@@ -9,4 +9,4 @@ dnl
dnl --------------------------------------------------------
dnl
dnl m4-include this file to define the current dvisvgm version
-m4_define([dvisvgm_version], [3.0.1])
+m4_define([dvisvgm_version], [3.0.2])