texlive[47014] Build/source/libs: poppler-0.63.0

commits+kakuto at tug.org commits+kakuto at tug.org
Sun Mar 18 22:59:39 CET 2018


Revision: 47014
          http://tug.org/svn/texlive?view=revision&revision=47014
Author:   kakuto
Date:     2018-03-18 22:59:37 +0100 (Sun, 18 Mar 2018)
Log Message:
-----------
poppler-0.63.0

Modified Paths:
--------------
    trunk/Build/source/libs/README
    trunk/Build/source/libs/poppler/ChangeLog
    trunk/Build/source/libs/poppler/Makefile.am
    trunk/Build/source/libs/poppler/Makefile.in
    trunk/Build/source/libs/poppler/TLpatches/ChangeLog
    trunk/Build/source/libs/poppler/TLpatches/TL-Changes
    trunk/Build/source/libs/poppler/TLpatches/patch-04-ctime
    trunk/Build/source/libs/poppler/configure
    trunk/Build/source/libs/poppler/poppler-src/CMakeLists.txt
    trunk/Build/source/libs/poppler/poppler-src/ChangeLog
    trunk/Build/source/libs/poppler/poppler-src/NEWS
    trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.cc
    trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.h
    trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiEncodings.cc
    trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiIdentifier.cc
    trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiTrueType.cc
    trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiType1.cc
    trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiType1C.cc
    trunk/Build/source/libs/poppler/poppler-src/goo/GooHash.cc
    trunk/Build/source/libs/poppler/poppler-src/goo/GooMutex.h
    trunk/Build/source/libs/poppler/poppler-src/goo/GooString.cc
    trunk/Build/source/libs/poppler/poppler-src/goo/GooTimer.cc
    trunk/Build/source/libs/poppler/poppler-src/goo/ImgWriter.h
    trunk/Build/source/libs/poppler/poppler-src/goo/PNGWriter.cc
    trunk/Build/source/libs/poppler/poppler-src/goo/TiffWriter.cc
    trunk/Build/source/libs/poppler/poppler-src/goo/gfile.cc
    trunk/Build/source/libs/poppler/poppler-src/goo/gfile.h
    trunk/Build/source/libs/poppler/poppler-src/goo/glibc.h
    trunk/Build/source/libs/poppler/poppler-src/goo/glibc_strtok_r.cc
    trunk/Build/source/libs/poppler/poppler-src/goo/gmem.cc
    trunk/Build/source/libs/poppler/poppler-src/goo/grandom.cc
    trunk/Build/source/libs/poppler/poppler-src/goo/gstrtod.cc
    trunk/Build/source/libs/poppler/poppler-src/gtkdoc.py
    trunk/Build/source/libs/poppler/poppler-src/poppler/Annot.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Annot.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/Array.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Array.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/BuiltinFontTables.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/CMap.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/CMap.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/CachedFile.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/CachedFile.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/Catalog.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Catalog.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/CurlCachedFile.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/DateInfo.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Decrypt.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Dict.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Dict.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/Error.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/ErrorCodes.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/FileSpec.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/FileSpec.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/FontEncodingTables.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/FontInfo.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/FontInfo.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/Form.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Form.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/Function.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Function.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/Gfx.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Gfx.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/GfxFont.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/GfxFont.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/GfxState.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/GfxState.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/GlobalParamsWin.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Hints.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Hints.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/JBIG2Stream.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/JPEG2000Stream.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Lexer.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Lexer.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/Linearization.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Link.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Link.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/Movie.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Movie.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/NameToUnicodeTable.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/Object.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/Outline.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Outline.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/OutputDev.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/OutputDev.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDocBuilder.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDocFactory.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/PSTokenizer.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Page.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Page.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/Parser.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Parser.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/Rendition.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Rendition.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/SignatureHandler.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Sound.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Sound.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/StdinCachedFile.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/StdinPDFDocBuilder.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Stream.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/Stream.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/StructElement.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/StructElement.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/UTF.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeTypeTable.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/XRef.cc
    trunk/Build/source/libs/poppler/poppler-src/poppler/XRef.h
    trunk/Build/source/libs/poppler/poppler-src/poppler/poppler-config.h.cmake
    trunk/Build/source/libs/poppler/version.ac

Added Paths:
-----------
    trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.cc

Modified: trunk/Build/source/libs/README
===================================================================
--- trunk/Build/source/libs/README	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/README	2018-03-18 21:59:37 UTC (rev 47014)
@@ -49,7 +49,7 @@
 pixman 0.34.0 - checked 04feb16
   http://cairographics.org/releases/
 
-poppler 0.62.0 - checked 9jan18
+poppler 0.63.0 - checked 18mar18
   http://poppler.freedesktop.org/ - used by luatex and xetex
   (requires C++11)
 

Modified: trunk/Build/source/libs/poppler/ChangeLog
===================================================================
--- trunk/Build/source/libs/poppler/ChangeLog	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/ChangeLog	2018-03-18 21:59:37 UTC (rev 47014)
@@ -1,3 +1,8 @@
+2018-03-18  Akira Kakuto  <kakuto at fuk.kindai.ac.jp>
+
+	Import poppler-0.63.0.
+	* Makefile.am, version.ac: Adjust.
+
 2018-03-14  Luigi Scarso  <luigi.scarso at gmail.com>
 
 	* configure.ac (HAVE_DCT_DECODER, HAVE_JPX_DECODER): hardwire to 1,

Modified: trunk/Build/source/libs/poppler/Makefile.am
===================================================================
--- trunk/Build/source/libs/poppler/Makefile.am	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/Makefile.am	2018-03-18 21:59:37 UTC (rev 47014)
@@ -122,6 +122,7 @@
 	@POPPLER_TREE@/poppler/StructTreeRoot.cc \
 	@POPPLER_TREE@/poppler/UTF.cc \
 	@POPPLER_TREE@/poppler/UnicodeMap.cc \
+	@POPPLER_TREE@/poppler/UnicodeMapFuncs.cc \
 	@POPPLER_TREE@/poppler/UnicodeTypeTable.cc \
 	@POPPLER_TREE@/poppler/ViewerPreferences.cc \
 	@POPPLER_TREE@/poppler/XRef.cc \

Modified: trunk/Build/source/libs/poppler/Makefile.in
===================================================================
--- trunk/Build/source/libs/poppler/Makefile.in	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/Makefile.in	2018-03-18 21:59:37 UTC (rev 47014)
@@ -190,6 +190,7 @@
 	@POPPLER_TREE@/poppler/StructTreeRoot.$(OBJEXT) \
 	@POPPLER_TREE@/poppler/UTF.$(OBJEXT) \
 	@POPPLER_TREE@/poppler/UnicodeMap.$(OBJEXT) \
+	@POPPLER_TREE@/poppler/UnicodeMapFuncs.$(OBJEXT) \
 	@POPPLER_TREE@/poppler/UnicodeTypeTable.$(OBJEXT) \
 	@POPPLER_TREE@/poppler/ViewerPreferences.$(OBJEXT) \
 	@POPPLER_TREE@/poppler/XRef.$(OBJEXT) \
@@ -531,6 +532,7 @@
 	@POPPLER_TREE@/poppler/StructTreeRoot.cc \
 	@POPPLER_TREE@/poppler/UTF.cc \
 	@POPPLER_TREE@/poppler/UnicodeMap.cc \
+	@POPPLER_TREE@/poppler/UnicodeMapFuncs.cc \
 	@POPPLER_TREE@/poppler/UnicodeTypeTable.cc \
 	@POPPLER_TREE@/poppler/ViewerPreferences.cc \
 	@POPPLER_TREE@/poppler/XRef.cc \
@@ -852,6 +854,9 @@
 @POPPLER_TREE@/poppler/UnicodeMap.$(OBJEXT):  \
 	@POPPLER_TREE@/poppler/$(am__dirstamp) \
 	@POPPLER_TREE@/poppler/$(DEPDIR)/$(am__dirstamp)
+ at POPPLER_TREE@/poppler/UnicodeMapFuncs.$(OBJEXT):  \
+	@POPPLER_TREE@/poppler/$(am__dirstamp) \
+	@POPPLER_TREE@/poppler/$(DEPDIR)/$(am__dirstamp)
 @POPPLER_TREE@/poppler/UnicodeTypeTable.$(OBJEXT):  \
 	@POPPLER_TREE@/poppler/$(am__dirstamp) \
 	@POPPLER_TREE@/poppler/$(DEPDIR)/$(am__dirstamp)
@@ -954,6 +959,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@@POPPLER_TREE@/poppler/$(DEPDIR)/StructTreeRoot.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@@POPPLER_TREE@/poppler/$(DEPDIR)/UTF.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@@POPPLER_TREE@/poppler/$(DEPDIR)/UnicodeMap.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote@@POPPLER_TREE@/poppler/$(DEPDIR)/UnicodeMapFuncs.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@@POPPLER_TREE@/poppler/$(DEPDIR)/UnicodeTypeTable.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@@POPPLER_TREE@/poppler/$(DEPDIR)/ViewerPreferences.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@@POPPLER_TREE@/poppler/$(DEPDIR)/XRef.Po at am__quote@

Modified: trunk/Build/source/libs/poppler/TLpatches/ChangeLog
===================================================================
--- trunk/Build/source/libs/poppler/TLpatches/ChangeLog	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/TLpatches/ChangeLog	2018-03-18 21:59:37 UTC (rev 47014)
@@ -1,3 +1,7 @@
+2018-03-18  Akira Kakuto  <kakuto at fuk.kindai.ac.jp>
+
+	* Import poppler-0.63.0.
+
 2018-01-15  Karl Berry  <karl at tug.org>
 
 	* patch-04-ctime: add.

Modified: trunk/Build/source/libs/poppler/TLpatches/TL-Changes
===================================================================
--- trunk/Build/source/libs/poppler/TLpatches/TL-Changes	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/TLpatches/TL-Changes	2018-03-18 21:59:37 UTC (rev 47014)
@@ -1,9 +1,12 @@
-Changes applied to the poppler-0.62.0 tree as obtained from:
+Changes applied to the poppler-0.63.0 tree as obtained from:
 	http://poppler.freedesktop.org/
 
 Removed unused dirs:
-	cmake cpp glib m4 qt4 qt5 test utils
+	cmake cpp glib qt5 test utils
 
+Removed unused files in splash:
+	only SplashTypes.h is used
+
 General idea:
 update version.ac
 mv poppler-src poppler-prev

Modified: trunk/Build/source/libs/poppler/TLpatches/patch-04-ctime
===================================================================
--- trunk/Build/source/libs/poppler/TLpatches/patch-04-ctime	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/TLpatches/patch-04-ctime	2018-03-18 21:59:37 UTC (rev 47014)
@@ -1,9 +1,10 @@
 	To make time_t work on FreeBSD 11.1, per Mojca.
 	http://tug.org/pipermail/tlbuild/2018q1/003931.html
-	
---- Form.h	(revision 46316)
-+++ Form.h	(working copy)
-@@ -31,6 +31,7 @@
+
+diff -ur poppler-0.63.0/poppler/Form.h poppler-src/poppler/Form.h
+--- poppler-0.63.0/poppler/Form.h	Mon Mar 19 03:23:49 2018
++++ poppler-src/poppler/Form.h	Mon Mar 19 06:18:51 2018
+@@ -33,6 +33,7 @@
  
  #include <set>
  #include <vector>

Modified: trunk/Build/source/libs/poppler/configure
===================================================================
--- trunk/Build/source/libs/poppler/configure	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/configure	2018-03-18 21:59:37 UTC (rev 47014)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for poppler (TeX Live) 0.62.0.
+# Generated by GNU Autoconf 2.69 for poppler (TeX Live) 0.63.0.
 #
 # Report bugs to <tex-k at tug.org>.
 #
@@ -580,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='poppler (TeX Live)'
 PACKAGE_TARNAME='poppler--tex-live-'
-PACKAGE_VERSION='0.62.0'
-PACKAGE_STRING='poppler (TeX Live) 0.62.0'
+PACKAGE_VERSION='0.63.0'
+PACKAGE_STRING='poppler (TeX Live) 0.63.0'
 PACKAGE_BUGREPORT='tex-k at tug.org'
 PACKAGE_URL=''
 
@@ -1307,7 +1307,7 @@
   # 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 poppler (TeX Live) 0.62.0 to adapt to many kinds of systems.
+\`configure' configures poppler (TeX Live) 0.63.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1374,7 +1374,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of poppler (TeX Live) 0.62.0:";;
+     short | recursive ) echo "Configuration of poppler (TeX Live) 0.63.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1487,7 +1487,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-poppler (TeX Live) configure 0.62.0
+poppler (TeX Live) configure 0.63.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2077,7 +2077,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by poppler (TeX Live) $as_me 0.62.0, which was
+It was created by poppler (TeX Live) $as_me 0.63.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -4000,7 +4000,7 @@
 
 # Define the identity of the package.
  PACKAGE='poppler--tex-live-'
- VERSION='0.62.0'
+ VERSION='0.63.0'
 
 
 # Some tools Automake needs.
@@ -7578,7 +7578,7 @@
 
 
 cat >>confdefs.h <<_ACEOF
-#define POPPLER_VERSION "0.62.0"
+#define POPPLER_VERSION "0.63.0"
 _ACEOF
 
 
@@ -8272,7 +8272,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by poppler (TeX Live) $as_me 0.62.0, which was
+This file was extended by poppler (TeX Live) $as_me 0.63.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -8338,7 +8338,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-poppler (TeX Live) config.status 0.62.0
+poppler (TeX Live) config.status 0.63.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 

Modified: trunk/Build/source/libs/poppler/poppler-src/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/CMakeLists.txt	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/CMakeLists.txt	2018-03-18 21:59:37 UTC (rev 47014)
@@ -30,7 +30,7 @@
 endif()
 
 set(POPPLER_MAJOR_VERSION "0")
-set(POPPLER_MINOR_VERSION "62")
+set(POPPLER_MINOR_VERSION "63")
 set(POPPLER_MICRO_VERSION "0")
 set(POPPLER_VERSION "${POPPLER_MAJOR_VERSION}.${POPPLER_MINOR_VERSION}.${POPPLER_MICRO_VERSION}")
 
@@ -378,6 +378,7 @@
   poppler/StructTreeRoot.cc
   poppler/StructElement.cc
   poppler/UnicodeMap.cc
+  poppler/UnicodeMapFuncs.cc
   poppler/UnicodeTypeTable.cc
   poppler/UTF.cc
   poppler/XRef.cc
@@ -482,7 +483,7 @@
 else()
 add_library(poppler ${poppler_SRCS})
 endif()
-set_target_properties(poppler PROPERTIES VERSION 73.0.0 SOVERSION 73)
+set_target_properties(poppler PROPERTIES VERSION 74.0.0 SOVERSION 74)
 if(MINGW)
     get_target_property(POPPLER_SOVERSION poppler SOVERSION)
     set_target_properties(poppler PROPERTIES SUFFIX "-${POPPLER_SOVERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}")
@@ -755,7 +756,7 @@
     COMMAND
         COMMAND git log --stat | fmt --split-only > ${CMAKE_BINARY_DIR}/ChangeLog
         COMMAND git archive --prefix=${ARCHIVE_NAME}/ HEAD > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar
-        COMMAND tar -C ${CMAKE_BINARY_DIR} -rf ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar ChangeLog --transform='s,,${ARCHIVE_NAME}/,'
-        COMMAND tar -C ${CMAKE_BINARY_DIR} -rf ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar glib/reference/html --transform='s,,${ARCHIVE_NAME}/,'
+        COMMAND tar -C ${CMAKE_BINARY_DIR} -rf ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar ChangeLog --transform='s,,${ARCHIVE_NAME}/,' --owner root:0 --group root:0
+        COMMAND tar -C ${CMAKE_BINARY_DIR} -rf ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar glib/reference/html --transform='s,,${ARCHIVE_NAME}/,' --owner root:0 --group root:0
         COMMAND xz -9 ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar
     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})

Modified: trunk/Build/source/libs/poppler/poppler-src/ChangeLog
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/ChangeLog	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/ChangeLog	2018-03-18 21:59:37 UTC (rev 47014)
@@ -1,3 +1,1318 @@
+commit f26285f361478219ea9d3c6de1529ecd5ff96ac9
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Sun Mar 18 19:23:49 2018 +0100
+
+    0.63
+
+ CMakeLists.txt         |  4 ++--
+ NEWS                   | 60
+ ++++++++++++++++++++++++++++++++++++++++++++++++++
+ cpp/CMakeLists.txt     |  2 +-
+ cpp/Doxyfile           |  2 +-
+ qt5/src/CMakeLists.txt |  2 +-
+ qt5/src/Doxyfile       |  2 +-
+ 6 files changed, 66 insertions(+), 6 deletions(-)
+
+commit 8b2079b7250e037599f6640539f8107d93314919
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Sun Mar 18 19:01:40 2018 +0100
+
+    Update copyrights
+
+ poppler/CairoOutputDev.cc | 2 +-
+ poppler/CairoOutputDev.h  | 2 +-
+ poppler/GfxFont.cc        | 2 +-
+ poppler/GfxFont.h         | 2 +-
+ poppler/Object.h          | 2 +-
+ poppler/StructElement.cc  | 1 +
+ poppler/StructTreeRoot.cc | 2 +-
+ poppler/StructTreeRoot.h  | 1 +
+ poppler/TextOutputDev.cc  | 2 +-
+ utils/pdfinfo.cc          | 2 +-
+ 10 files changed, 10 insertions(+), 8 deletions(-)
+
+commit 41321580f0a13309e5de44eb42851e3c82a5ef8f
+Author: Adam Reichold <adam.reichold at t-online.de>
+Date:   Sun Mar 4 09:17:00 2018 +0100
+
+    Use the detection idiom to handle the non-standard struct stat field
+    name for high-resolution mtime on Mac OS X.
+
+ goo/gfile.cc | 40 +++++++++++++++++++++++++++++++++++++---
+ 1 file changed, 37 insertions(+), 3 deletions(-)
+
+commit b14baefb406b8f08f0702edd686ebc7698cb7f15
+Author: Adam Reichold <adam.reichold at t-online.de>
+Date:   Mon Feb 12 08:09:00 2018 +0100
+
+    Explicitly anchor destructor of text_box_data to avoid linker errors
+    using Clang on Mac OS X.
+
+ cpp/poppler-page.cpp  | 3 +++
+ cpp/poppler-private.h | 3 +++
+ 2 files changed, 6 insertions(+)
+
+commit 4afe2fb10ab969bfd9895c0ba9d4990c5881b451
+Author: Carlos Garcia Campos <carlosgc at gnome.org>
+Date:   Sun Mar 4 10:28:57 2018 +0100
+
+    cairo: use GOOD instead of BEST as the default cairo filter for
+    scaling
+
+    The quality is good enough and the performance is much better.
+
+    https://bugs.freedesktop.org/show_bug.cgi?id=103136
+
+ poppler/CairoOutputDev.cc | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 41c61811fdd6efe2bef34d2ce26520fc6b3c4237
+Author: Jason Crain <jason at inspiresomeone.us>
+Date:   Fri Feb 23 23:21:03 2018 -0600
+
+    TextPage: Add horizontal scaling to font matrix
+
+    Drawing the text selection sometimes draws text reversed or expanded.
+    This is because the while the current font transformation matrix is
+    saved, the horizontal scaling is not. Include the effect of the
+    horizontal scaling in the transformation matrix.
+
+    https://bugs.freedesktop.org/show_bug.cgi?id=105259
+
+ poppler/TextOutputDev.cc | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 2740b3aca81a6a8c690540fc141e5923a1fff460
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Tue Feb 27 00:47:04 2018 +0100
+
+    cpp: Add since
+
+ cpp/poppler-page.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 42a6b8651f040f0960802e705b1aea82a956a63b
+Author: suzuki toshiya <mpsuzuki at hiroshima-u.ac.jp>
+Date:   Tue Feb 27 00:46:18 2018 +0100
+
+    cpp: Add page::text_list
+
+ cpp/poppler-page.cpp       | 91
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ cpp/poppler-page.h         | 55 ++++++++++++++++++++++++++++
+ cpp/poppler-private.h      |  9 +++++
+ cpp/tests/poppler-dump.cpp | 34 +++++++++++++++++
+ 4 files changed, 189 insertions(+)
+
+commit e25d4af6ed9b254db3096a2e483798734296376d
+Author: Adam Reichold <adam.reichold at t-online.de>
+Date:   Sun Feb 18 09:43:58 2018 +0100
+
+    Fix warnings due to unhandled link types in XML serialization of
+    annotations code in the Qt5 frontend.
+
+ qt5/src/poppler-annotation.cc | 20 ++++++++++++++------
+ 1 file changed, 14 insertions(+), 6 deletions(-)
+
+commit e015ab97c1ee3a4ea386ccc86385aad458827d96
+Author: Adam Reichold <adam.reichold at t-online.de>
+Date:   Sun Feb 18 09:42:58 2018 +0100
+
+    Fix warnings due to the use of deprecated overloads of
+    Poppler::Page::Search in tests of Qt5 frontend.
+
+ qt5/tests/check_search.cpp       | 38
+ +++++++++++++++++++-------------------
+ qt5/tests/stress-threads-qt5.cpp | 10 +++++-----
+ 2 files changed, 24 insertions(+), 24 deletions(-)
+
+commit 732903ecf1bdb085cac36eb29d330a7970670064
+Author: Adam Reichold <adam.reichold at t-online.de>
+Date:   Sun Feb 18 09:42:04 2018 +0100
+
+    Fix buffer size warning due to missing space for null terminator
+    in pdfseparate.
+
+ utils/pdfseparate.cc | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 791e024656212c65d798cb69a134cdd3e30cc79e
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Sun Feb 18 23:05:59 2018 +0100
+
+    Make it work with newer gtk-doc
+
+    Hopefully still works with older versions
+
+    Bug #105075
+
+ gtkdoc.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 948d392d9acc3d82b86a260c952095a603fe767f
+Author: William Bader <william at newspapersystems.com>
+Date:   Sun Feb 18 22:06:02 2018 +0100
+
+    Add python3 support to gtkdoc.py
+
+ gtkdoc.py | 19 +++++++++++++------
+ 1 file changed, 13 insertions(+), 6 deletions(-)
+
+commit 73130ae1125c86ebd0ee504d0681d9911ff2cfbd
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Wed Feb 14 17:40:23 2018 +0100
+
+    SplashGouraudPattern: Remove mode member variable
+
+    We don't need it anymore, was introduced in the initial overprint
+    implementation and was forgotten to be removed when merging xpdf 3.03
+
+ poppler/SplashOutputDev.cc | 9 ++-------
+ poppler/SplashOutputDev.h  | 5 ++---
+ 2 files changed, 4 insertions(+), 10 deletions(-)
+
+commit 37efb98d77c14c27a22806ec676c13f0a8b99490
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Wed Feb 14 17:43:41 2018 +0100
+
+    SplashOutputDev:: Remove unused maskBitmap member
+
+ poppler/SplashOutputDev.h | 1 -
+ 1 file changed, 1 deletion(-)
+
+commit e3cece1bfc00083637f709f7647b4711b5c6a084
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Fri Feb 2 23:17:11 2018 +0100
+
+    Fix some -Wshadow warnings
+
+    More to come, -Wshadow is interesting but if we enable it we still
+    get too many warnings for it to be useful
+
+ cpp/tests/poppler-dump.cpp     |  6 ++--
+ poppler/CachedFile.cc          |  8 +++---
+ poppler/CairoFontEngine.cc     | 64
+ +++++++++++++++++++++---------------------
+ poppler/CairoOutputDev.cc      |  5 ++--
+ poppler/CairoOutputDev.h       |  4 +--
+ poppler/Decrypt.cc             |  6 ++--
+ poppler/FontInfo.cc            |  5 ++--
+ poppler/Gfx.cc                 |  2 +-
+ poppler/GfxFont.cc             | 12 ++++----
+ poppler/GfxState.cc            | 31 +++++++++-----------
+ poppler/JBIG2Stream.cc         | 11 ++++----
+ poppler/PDFDoc.cc              |  4 +--
+ poppler/StructElement.cc       |  6 ++--
+ poppler/StructTreeRoot.cc      |  8 +++---
+ poppler/TextOutputDev.h        |  4 +--
+ poppler/XRef.cc                |  4 +--
+ qt5/src/ArthurOutputDev.cc     |  4 +--
+ qt5/src/poppler-annotation.cc  | 18 ++++++------
+ qt5/src/poppler-media.cc       |  4 +--
+ qt5/src/poppler-page.cc        | 24 ++++++++--------
+ qt5/tests/test-poppler-qt5.cpp | 10 ++++---
+ splash/SplashFTFontFile.cc     |  5 ++--
+ utils/ImageOutputDev.cc        |  8 +++---
+ utils/pdfinfo.cc               |  7 ++---
+ utils/pdftocairo.cc            | 22 +++++++--------
+ utils/pdftoppm.cc              | 20 ++++++-------
+ 26 files changed, 149 insertions(+), 153 deletions(-)
+
+commit 8cfe91ae51fa50e66217c6bbcb236ec3a267e45e
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Fri Feb 2 23:22:33 2018 +0100
+
+    CairoOutputDev: Remove two unused member variables
+
+ poppler/CairoOutputDev.h | 2 --
+ 1 file changed, 2 deletions(-)
+
+commit b1016f574ac63fa269ca5125827895220e1df883
+Author: Albert Astals Cid <albert.astals.cid at kdab.com>
+Date:   Thu Feb 1 22:46:33 2018 +0100
+
+    Qt5: Add cancellation support to renderToImage and textList
+
+ qt5/src/poppler-page.cc | 148
+ ++++++++++++++++++++++++++++--------------------
+ qt5/src/poppler-qt5.h   |  98 +++++++++++++++++++++++++++++++-
+ 2 files changed, 185 insertions(+), 61 deletions(-)
+
+commit 248aa0f5832ce063a9ae061dfcf54596e0ea5fba
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Sun Jan 28 00:25:38 2018 +0100
+
+    Fix build without libpng
+
+ utils/ImageOutputDev.cc | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit f93fa48839be2937cd7ce38c14884428416bcc4b
+Author: Andreas Gruenbacher <agruenba at redhat.com>
+Date:   Sat Jan 27 20:24:09 2018 +0100
+
+    Fix build without libtiff
+
+    Bug #104813
+
+ utils/ImageOutputDev.cc | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+commit f65f60e5d3f5e4109a79212a9994b5096a2a2a8d
+Author: Jason Crain <jason at inspiresomeone.us>
+Date:   Thu Jan 18 11:57:33 2018 -0600
+
+    GfxFontDict: merge reference generation from xpdf 4.00
+
+    The GfxFontDict constructor generates a fake indirect reference if the
+    font dictionary doesn't have a real indirect reference.  It sometimes
+    assigns the same reference to two different fonts leading to a wrong
+    font being used.  XPDF 4.00 fixes this by using the hash of the font
+    data to create the fake reference.
+
+    https://bugs.freedesktop.org/show_bug.cgi?id=104565
+
+ poppler/GfxFont.cc | 125
+ +++++++++++++++++++++++++++++++++++++++++++++++++----
+ poppler/GfxFont.h  |   4 ++
+ 2 files changed, 120 insertions(+), 9 deletions(-)
+
+commit 7342327039dfc750934f3ce7ff0bdb6bc585151c
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Wed Jan 17 22:33:42 2018 +0100
+
+    Form.h: include time.h for time_t
+
+ poppler/Form.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit a89e7474fcd9e7e6dd1330c585130346aa862598
+Author: suzuki toshiya <mpsuzuki at hiroshima-u.ac.jp>
+Date:   Wed Jan 17 00:22:55 2018 +0100
+
+    Enable building all libs as static libs
+
+    if the correct switch is used
+
+ cpp/CMakeLists.txt     | 2 +-
+ glib/CMakeLists.txt    | 4 ++--
+ qt5/src/CMakeLists.txt | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 7f550e88d86482adcfab6e054ff14588b32b692a
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Sun Jan 14 20:51:19 2018 +0100
+
+    Remove declare but unused Object instances
+
+ poppler/Annot.cc           | 36 ------------------------------------
+ poppler/CairoFontEngine.cc |  2 --
+ poppler/Catalog.cc         |  1 -
+ poppler/Form.cc            |  2 +-
+ poppler/Lexer.cc           |  1 -
+ poppler/Link.cc            |  2 --
+ poppler/PDFDoc.cc          |  1 -
+ poppler/SplashOutputDev.cc |  2 --
+ poppler/XRef.cc            |  1 -
+ qt5/src/ArthurOutputDev.cc |  1 -
+ utils/JSInfo.cc            |  1 -
+ utils/pdfinfo.cc           |  1 -
+ utils/pdfseparate.cc       |  1 -
+ 13 files changed, 1 insertion(+), 51 deletions(-)
+
+commit 4b237953b187f38c90b9a747f587cbc277db6d45
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Sun Jan 14 20:17:56 2018 +0100
+
+    pdfsig: Remove "int i = 0;" variable that was shadowing pevious i
+
+    And making us access the wrong sig_widgets element
+
+ utils/pdfsig.cc | 1 -
+ 1 file changed, 1 deletion(-)
+
+commit 08f2cddf18b6ccdc13861b52821cbbf2d3e48472
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Thu Jan 11 19:38:29 2018 +0100
+
+    GfxFunctionShading::parse: Fix abort in malformed document
+
+    Bug #104581
+
+ poppler/GfxState.cc | 32 ++++++++++++++++++++++----------
+ 1 file changed, 22 insertions(+), 10 deletions(-)
+
+commit 10831921281f75b4b2c05ab85f4093331788e6a8
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Thu Jan 11 00:27:50 2018 +0100
+
+    GfxGouraudTriangleShading::parse: Don't abort on malformed documents
+
+    Bug #104567
+
+ poppler/GfxState.cc | 18 ++++++++++++------
+ 1 file changed, 12 insertions(+), 6 deletions(-)
+
+commit a59f61641fcb36859b625749afb4561557e419f6
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Wed Jan 10 23:24:19 2018 +0100
+
+    PDFDoc::setup: Fail early if base stream length is 0
+
+    Bug #103552
+
+ poppler/PDFDoc.cc | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+commit 00c1566e8cc0dacd899ec6dd267265f4b714eae4
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Wed Jan 10 00:49:51 2018 +0100
+
+    UnicodeMapFuncs: Move implementation to .cpp
+
+    With that the last warning i got on poppler core is gone \o/
+
+ CMakeLists.txt             |  1 +
+ poppler/UnicodeMapFuncs.cc | 88
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ poppler/UnicodeMapFuncs.h  | 64 +++------------------------------
+ 3 files changed, 93 insertions(+), 60 deletions(-)
+
+commit bf6d79b5c6b5bdcc0d79b4eebd85840e8f2e30ef
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Wed Jan 10 00:49:33 2018 +0100
+
+    Forgot C for last commit
+
+ poppler/UTF.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ebf33c2b0c66c456683c189af1b297fe24adcf9d
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Wed Jan 10 00:40:38 2018 +0100
+
+    utf16CountUtf8Bytes: initialize codepoint to 0
+
+    Was tired of seeing the warning
+
+    I actually think the code is a little bit fishy for invalid values,
+    but since we only use it for win32 builds i'm not spending much more
+    time looking at it.
+
+ poppler/UTF.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 43ad7071aa126d3b6754421b544e114d87fdd82a
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Tue Jan 9 23:41:01 2018 +0100
+
+    qt5: Implement operator= for PageTransition
+
+ qt5/src/poppler-page-transition.cc | 10 ++++++++++
+ qt5/src/poppler-page-transition.h  |  5 ++++-
+ 2 files changed, 14 insertions(+), 1 deletion(-)
+
+commit c2711874a4afc00448c21e86fdaf0b7aec40b623
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Tue Jan 9 19:47:29 2018 +0100
+
+    Fix another clazy rule-of-three warning
+
+    We can just use the default copy assignemnt and constructor for Parent
+
+ poppler/StructTreeRoot.h | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+commit 30ccee028213efcf3d3a103ae6003bdcd15e1126
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Tue Jan 9 19:42:53 2018 +0100
+
+    Fix more Wmissing-field-initializer
+
+    by using the default initializer
+
+ goo/gfile.cc               | 6 +++---
+ poppler/GlobalParamsWin.cc | 4 ++--
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+commit ef4e450c921f4373955def51a74ebffd8f7b4599
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Tue Jan 9 19:36:16 2018 +0100
+
+    Enable no-missing-field-initializers
+
+ cmake/modules/PopplerMacros.cmake |  2 +-
+ glib/poppler-structure-element.cc | 29 +++++++++++++++--------------
+ poppler/GfxFont.cc                |  4 ++--
+ poppler/JBIG2Stream.cc            | 20 ++++++++++----------
+ test/gtk-test.cc                  |  2 +-
+ test/pdf-fullrewrite.cc           |  2 +-
+ utils/pdfdetach.cc                |  3 ++-
+ utils/pdffonts.cc                 |  4 ++--
+ utils/pdfimages.cc                |  4 ++--
+ utils/pdfinfo.cc                  |  4 ++--
+ utils/pdfseparate.cc              |  4 ++--
+ utils/pdfsig.cc                   |  4 ++--
+ utils/pdftocairo.cc               |  4 ++--
+ utils/pdftohtml.cc                |  4 ++--
+ utils/pdftoppm.cc                 |  4 ++--
+ utils/pdftops.cc                  |  4 ++--
+ utils/pdftotext.cc                |  4 ++--
+ utils/pdfunite.cc                 |  4 ++--
+ 18 files changed, 54 insertions(+), 52 deletions(-)
+
+commit efd2205a0bc9e838fd2184c329f8370aa292c346
+Author: suzuki toshiya <mpsuzuki at hiroshima-u.ac.jp>
+Date:   Tue Jan 9 00:03:59 2018 +0100
+
+    add "--owner root:0 --group root:0" options to tar command in
+    dist target
+
+    Because git-archive always uses root:root in the generated tarball,
+    the source tarballs (since 0.60.0) have 2 uid/gids in it.
+    "root:root" by git-archive, and normal users/group by normal tar.
+    For detail, please find the analysis at::
+    https://lists.freedesktop.org/archives/poppler/2017-December/012737.html
+
+    Bug #104398
+
+ CMakeLists.txt | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit cbd864b74fe368c1172974c7040c67ddfbc52cf6
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Mon Jan 8 23:48:57 2018 +0100
+
+    Fix abort in Gfx::opBeginMarkedContent if args[1] is not a name
+
+    Bug #104468
+
+ poppler/Gfx.cc | 23 ++++++++++++-----------
+ 1 file changed, 12 insertions(+), 11 deletions(-)
+
+commit 1aaf621f511ca4c235cb30a5ddbf050acd30fe91
+Author: Ben Timby <btimby at gmail.com>
+Date:   Mon Jan 8 23:42:40 2018 +0100
+
+    Check return code of getChar(), abort reading on error.
+
+    Bug #104502
+
+ poppler/PDFDoc.cc | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+commit ad7f6acd3c643b5bc0c9b7f91616f678b178a041
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Mon Jan 8 23:40:25 2018 +0100
+
+    (C) of last commit
+
+ poppler/Lexer.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 582153b68e076c0f2ae71392f7553181c466e849
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Mon Jan 8 23:34:13 2018 +0100
+
+    Lexer: Check curStr is actually a Stream before doing Stream
+    operations
+
+    Bug #104518
+
+ poppler/Lexer.cc | 14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
+
+commit dea6e03352084361e7c89cff7adaa53110c4e91a
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Mon Jan 8 23:25:39 2018 +0100
+
+    Fix new Object API porting bug
+
+    When doing the XRef::readXRefTable workaround of moving entries[1] to
+    entries[0] set the entries[1] object back to null
+
+    Bug #104517
+
+ poppler/XRef.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 4c9e1b66725051cd4726baf19d891c2d9c710868
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Mon Jan 8 23:09:13 2018 +0100
+
+    A few more nullptr
+
+ poppler/Link.h      | 2 +-
+ poppler/Object.h    | 4 ++--
+ poppler/OutputDev.h | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+commit e428033c2d7efbbbf89bb2f84c8998521ac7ef8e
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Mon Jan 8 22:55:00 2018 +0100
+
+    Run clang-tidy with modernize nullptr
+
+    Also add two enum values in the qt5 frontend to representate no flags
+    Also mark glib/gtk/cairo system includes so that gcc doesn't report
+    the issues in those headers
+
+ cmake/modules/PopplerMacros.cmake  |    2 +-
+ cpp/poppler-document.cpp           |   50 +-
+ cpp/poppler-image.cpp              |   20 +-
+ cpp/poppler-page.cpp               |    8 +-
+ cpp/poppler-private.cpp            |    2 +-
+ cpp/poppler-toc.cpp                |    4 +-
+ cpp/tests/poppler-dump.cpp         |    2 +-
+ cpp/tests/poppler-render.cpp       |    2 +-
+ fofi/FoFiBase.cc                   |   10 +-
+ fofi/FoFiEncodings.cc              |  396 +-
+ fofi/FoFiIdentifier.cc             |    2 +-
+ fofi/FoFiTrueType.cc               |   30 +-
+ fofi/FoFiType1.cc                  |   18 +-
+ fofi/FoFiType1C.cc                 |   28 +-
+ glib/CMakeLists.txt                |    4 +
+ glib/demo/info.cc                  |   12 +-
+ glib/poppler-action.cc             |   54 +-
+ glib/poppler-annot.cc              |   64 +-
+ glib/poppler-attachment.cc         |   12 +-
+ glib/poppler-cached-file-loader.cc |   16 +-
+ glib/poppler-document.cc           |  246 +-
+ glib/poppler-form-field.cc         |   30 +-
+ glib/poppler-input-stream.cc       |   14 +-
+ glib/poppler-layer.cc              |   16 +-
+ glib/poppler-media.cc              |   10 +-
+ glib/poppler-movie.cc              |    6 +-
+ glib/poppler-page.cc               |  124 +-
+ glib/poppler-structure-element.cc  |  200 +-
+ glib/poppler.cc                    |    8 +-
+ goo/GooHash.cc                     |   24 +-
+ goo/GooString.cc                   |   16 +-
+ goo/GooTimer.cc                    |    6 +-
+ goo/PNGWriter.cc                   |    6 +-
+ goo/TiffWriter.cc                  |   18 +-
+ goo/gfile.cc                       |   26 +-
+ goo/gmem.cc                        |   18 +-
+ goo/grandom.cc                     |    4 +-
+ goo/gstrtod.cc                     |   10 +-
+ poppler/Annot.cc                   |  300 +-
+ poppler/Array.cc                   |    2 +-
+ poppler/BuiltinFont.cc             |    2 +-
+ poppler/BuiltinFontTables.cc       | 8374
+ ++++++++++++++++++------------------
+ poppler/CMap.cc                    |   22 +-
+ poppler/CairoFontEngine.cc         |   42 +-
+ poppler/CairoOutputDev.cc          |  108 +-
+ poppler/CairoRescaleBox.cc         |    6 +-
+ poppler/Catalog.cc                 |   76 +-
+ poppler/CharCodeToUnicode.cc       |   28 +-
+ poppler/CurlCachedFile.cc          |    6 +-
+ poppler/DCTStream.cc               |   16 +-
+ poppler/DateInfo.cc                |    4 +-
+ poppler/Decrypt.cc                 |    4 +-
+ poppler/Dict.cc                    |    8 +-
+ poppler/Error.cc                   |    4 +-
+ poppler/FileSpec.cc                |   18 +-
+ poppler/FontEncodingTables.cc      |  980 ++---
+ poppler/FontInfo.cc                |   22 +-
+ poppler/Form.cc                    |   70 +-
+ poppler/Function.cc                |   26 +-
+ poppler/Gfx.cc                     |  146 +-
+ poppler/GfxFont.cc                 |  134 +-
+ poppler/GfxState.cc                |  346 +-
+ poppler/GlobalParams.cc            |   76 +-
+ poppler/GlobalParamsWin.cc         |  170 +-
+ poppler/Hints.cc                   |   18 +-
+ poppler/JArithmeticDecoder.cc      |    2 +-
+ poppler/JBIG2Stream.cc             |  202 +-
+ poppler/JPEG2000Stream.cc          |   22 +-
+ poppler/Lexer.cc                   |    8 +-
+ poppler/Linearization.cc           |   16 +-
+ poppler/Link.cc                    |   52 +-
+ poppler/MarkedContentOutputDev.cc  |   22 +-
+ poppler/Movie.cc                   |    2 +-
+ poppler/NameToCharCode.cc          |    4 +-
+ poppler/NameToUnicodeTable.h       |    4 +-
+ poppler/OptionalContent.cc         |   28 +-
+ poppler/Outline.cc                 |   10 +-
+ poppler/OutputDev.cc               |    6 +-
+ poppler/PDFDoc.cc                  |   84 +-
+ poppler/PSOutputDev.cc             |  162 +-
+ poppler/PSOutputDev.h              |    2 +-
+ poppler/Page.cc                    |   10 +-
+ poppler/PageLabelInfo.cc           |    2 +-
+ poppler/Parser.cc                  |   10 +-
+ poppler/PopplerCache.cc            |    4 +-
+ poppler/Rendition.cc               |    4 +-
+ poppler/SecurityHandler.cc         |   26 +-
+ poppler/SignatureHandler.cc        |   60 +-
+ poppler/Sound.cc                   |   10 +-
+ poppler/SplashOutputDev.cc         |  186 +-
+ poppler/StdinCachedFile.cc         |    2 +-
+ poppler/StdinPDFDocBuilder.cc      |    2 +-
+ poppler/Stream.cc                  |   70 +-
+ poppler/StructElement.cc           |   72 +-
+ poppler/StructElement.h            |   30 +-
+ poppler/StructTreeRoot.cc          |    4 +-
+ poppler/StructTreeRoot.h           |    2 +-
+ poppler/TextOutputDev.cc           |  224 +-
+ poppler/UTF.cc                     |    6 +-
+ poppler/UnicodeMap.cc              |   18 +-
+ poppler/UnicodeTypeTable.cc        |  938 ++--
+ poppler/XRef.cc                    |   38 +-
+ qt5/demos/abstractinfodock.h       |    2 +-
+ qt5/demos/documentobserver.cpp     |    2 +-
+ qt5/demos/embeddedfiles.h          |    2 +-
+ qt5/demos/fonts.h                  |    2 +-
+ qt5/demos/info.h                   |    2 +-
+ qt5/demos/metadata.h               |    2 +-
+ qt5/demos/navigationtoolbar.h      |    2 +-
+ qt5/demos/optcontent.cpp           |    2 +-
+ qt5/demos/optcontent.h             |    2 +-
+ qt5/demos/pageview.h               |    2 +-
+ qt5/demos/permissions.h            |    2 +-
+ qt5/demos/thumbnails.h             |    2 +-
+ qt5/demos/toc.cpp                  |    4 +-
+ qt5/demos/toc.h                    |    2 +-
+ qt5/demos/viewer.cpp               |    4 +-
+ qt5/src/ArthurOutputDev.cc         |    2 +-
+ qt5/src/poppler-annotation.cc      |   60 +-
+ qt5/src/poppler-base-converter.cc  |    8 +-
+ qt5/src/poppler-document.cc        |   18 +-
+ qt5/src/poppler-embeddedfile.cc    |   14 +-
+ qt5/src/poppler-form.cc            |    6 +-
+ qt5/src/poppler-link.cc            |    4 +-
+ qt5/src/poppler-media.cc           |    2 +-
+ qt5/src/poppler-movie.cc           |    2 +-
+ qt5/src/poppler-optcontent.cc      |   16 +-
+ qt5/src/poppler-optcontent.h       |    2 +-
+ qt5/src/poppler-page.cc            |   36 +-
+ qt5/src/poppler-pdf-converter.cc   |    2 +-
+ qt5/src/poppler-private.cc         |   16 +-
+ qt5/src/poppler-private.h          |    2 +-
+ qt5/src/poppler-ps-converter.cc    |   10 +-
+ qt5/src/poppler-qt5.h              |    8 +-
+ qt5/src/poppler-sound.cc           |    2 +-
+ qt5/tests/check_lexer.cpp          |    2 +-
+ qt5/tests/check_metadata.cpp       |    8 +-
+ qt5/tests/check_search.cpp         |    2 +-
+ qt5/tests/stress-threads-qt5.cpp   |   12 +-
+ qt5/tests/test-poppler-qt5.cpp     |    2 +-
+ splash/Splash.cc                   |  110 +-
+ splash/SplashBitmap.cc             |   18 +-
+ splash/SplashClip.cc               |   12 +-
+ splash/SplashFTFont.cc             |    8 +-
+ splash/SplashFTFontEngine.cc       |    8 +-
+ splash/SplashFTFontFile.cc         |   12 +-
+ splash/SplashFont.cc               |    8 +-
+ splash/SplashFontEngine.cc         |   22 +-
+ splash/SplashFontFile.cc           |    4 +-
+ splash/SplashPath.cc               |    8 +-
+ splash/SplashScreen.cc             |    4 +-
+ splash/SplashState.cc              |   22 +-
+ splash/SplashXPath.cc              |    8 +-
+ splash/SplashXPathScanner.cc       |    4 +-
+ test/CMakeLists.txt                |    5 +-
+ test/gtk-test.cc                   |   28 +-
+ test/pdf-fullrewrite.cc            |   14 +-
+ test/pdf-inspector.cc              |   22 +-
+ test/perf-test.cc                  |   66 +-
+ utils/HtmlFonts.cc                 |    8 +-
+ utils/HtmlLinks.cc                 |    6 +-
+ utils/HtmlOutputDev.cc             |   94 +-
+ utils/ImageOutputDev.cc            |   10 +-
+ utils/JSInfo.cc                    |    4 +-
+ utils/Win32Console.cc              |    2 +-
+ utils/parseargs.cc                 |    2 +-
+ utils/pdfdetach.cc                 |    8 +-
+ utils/pdffonts.cc                  |    6 +-
+ utils/pdfimages.cc                 |    8 +-
+ utils/pdfinfo.cc                   |    6 +-
+ utils/pdfseparate.cc               |   14 +-
+ utils/pdfsig.cc                    |   12 +-
+ utils/pdftocairo-win32.cc          |   22 +-
+ utils/pdftocairo.cc                |   34 +-
+ utils/pdftohtml.cc                 |   36 +-
+ utils/pdftoppm.cc                  |   20 +-
+ utils/pdftops.cc                   |    8 +-
+ utils/pdftotext.cc                 |   10 +-
+ utils/pdfunite.cc                  |   16 +-
+ 179 files changed, 7929 insertions(+), 7920 deletions(-)
+
+commit 2e47887616155dee566083e1aac9adab69aa4386
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Mon Jan 8 22:14:34 2018 +0100
+
+    Seems we don't need to set this cmake policies to OLD
+
+    builds fine without warnings
+
+ cmake/modules/PopplerDefaults.cmake | 8 --------
+ 1 file changed, 8 deletions(-)
+
+commit 1ae5d91467663576a5d11add69fa72a2d108f0ad
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Mon Jan 8 18:45:43 2018 +0100
+
+    Remove useless return in a void function
+
+ poppler/SplashOutputDev.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 8794789a72f845b009656e6d7ae6a00b709e09bc
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Mon Jan 8 18:07:38 2018 +0100
+
+    Delete lots of copy constructors and copy assignment operators
+
+    Fixes rule-of-three and copyable-polymorphic warnings reported
+    by clazy.
+
+    The default copy constructor and copy assignment operator are
+    only valid for simple classes so we delete them (i.e. make then
+    not exist)
+    when we have either a virtual class or a destructor, the code still
+    compiles
+    so this doesn't fix any bug, it is more a protection for when you
+    think you
+    can copy a class and don't realize the default copy constrcutor is
+    not doing
+    what you want and you get crashes. Hopefully this helps us in the
+    future :)
+
+ cpp/poppler-document-private.h         |  4 ++++
+ cpp/poppler-embedded-file-private.h    |  4 ++++
+ cpp/poppler-global.cpp                 |  3 +++
+ cpp/poppler-image-private.h            |  4 ++++
+ cpp/poppler-image.cpp                  |  4 +++-
+ cpp/poppler-page-private.h             |  4 ++++
+ cpp/poppler-toc-private.h              |  4 ++++
+ fofi/FoFiBase.h                        | 16 ++++++++++++++
+ fofi/FoFiIdentifier.cc                 |  4 ++++
+ goo/GooMutex.h                         |  5 ++++-
+ goo/ImgWriter.h                        |  6 +++++-
+ goo/gfile.h                            |  5 ++++-
+ poppler/Annot.h                        | 38
+ +++++++++++++++++++++++++++++++++-
+ poppler/Array.h                        |  5 ++++-
+ poppler/BuiltinFont.h                  | 18 ++++++++++++++++
+ poppler/CMap.h                         |  8 ++++++-
+ poppler/CachedFile.h                   |  9 +++++++-
+ poppler/CairoFontEngine.h              |  6 +++++-
+ poppler/CairoOutputDev.h               |  4 ++++
+ poppler/CairoRescaleBox.h              |  4 ++++
+ poppler/Catalog.h                      |  9 +++++++-
+ poppler/CharCodeToUnicode.h            |  8 ++++++-
+ poppler/Dict.h                         |  5 ++++-
+ poppler/FileSpec.h                     |  8 ++++++-
+ poppler/FontInfo.h                     |  4 +++-
+ poppler/Form.h                         |  8 ++++++-
+ poppler/Function.h                     |  5 ++++-
+ poppler/Gfx.cc                         |  5 ++++-
+ poppler/Gfx.h                          |  8 ++++++-
+ poppler/GfxFont.h                      | 11 +++++++++-
+ poppler/GfxState.cc                    |  2 ++
+ poppler/GfxState.h                     | 26 ++++++++++++++++++++++-
+ poppler/GlobalParams.cc                |  6 +++++-
+ poppler/GlobalParams.h                 |  5 ++++-
+ poppler/Hints.h                        |  5 ++++-
+ poppler/JArithmeticDecoder.h           | 18 ++++++++++++++++
+ poppler/JBIG2Stream.cc                 |  4 +++-
+ poppler/Lexer.h                        |  5 ++++-
+ poppler/Link.h                         | 10 +++++++++
+ poppler/MarkedContentOutputDev.h       |  4 ++++
+ poppler/Movie.h                        |  3 ++-
+ poppler/NameToCharCode.h               | 17 +++++++++++++++
+ poppler/OptionalContent.h              | 11 +++++++++-
+ poppler/Outline.h                      |  8 ++++++-
+ poppler/PDFDoc.h                       |  5 ++++-
+ poppler/PDFDocBuilder.h                |  8 +++++--
+ poppler/PDFDocFactory.h                |  5 ++++-
+ poppler/PSOutputDev.cc                 |  7 ++++++-
+ poppler/Page.h                         |  5 ++++-
+ poppler/PageLabelInfo.h                |  6 +++++-
+ poppler/Parser.h                       |  5 ++++-
+ poppler/PopplerCache.h                 | 18 +++++++++++++---
+ poppler/Rendition.h                    |  3 ++-
+ poppler/SecurityHandler.cc             |  5 ++++-
+ poppler/SecurityHandler.h              |  5 ++++-
+ poppler/Sound.h                        |  5 ++++-
+ poppler/SplashOutputDev.cc             |  4 +++-
+ poppler/Stream.h                       | 14 ++++++++++++-
+ poppler/StructElement.h                |  5 ++++-
+ poppler/StructTreeRoot.h               |  4 ++++
+ poppler/TextOutputDev.cc               |  2 ++
+ poppler/TextOutputDev.h                | 29 +++++++++++++++++++++++++-
+ poppler/UnicodeMap.h                   |  7 +++++++
+ poppler/XRef.cc                        |  5 ++++-
+ poppler/XRef.h                         |  9 +++++++-
+ qt5/demos/documentobserver.h           |  3 +++
+ qt5/src/poppler-annotation-private.h   |  5 ++++-
+ qt5/src/poppler-annotation.cc          | 14 ++++++++++++-
+ qt5/src/poppler-converter-private.h    |  5 ++++-
+ qt5/src/poppler-embeddedfile-private.h |  5 ++++-
+ qt5/src/poppler-link-private.h         |  5 ++++-
+ qt5/src/poppler-media.cc               |  5 ++++-
+ qt5/src/poppler-movie.cc               |  5 ++++-
+ qt5/src/poppler-optcontent-private.h   |  5 ++++-
+ qt5/src/poppler-page-transition.cc     |  3 +++
+ qt5/src/poppler-page-transition.h      |  3 ++-
+ qt5/src/poppler-private.h              | 18 +++++++---------
+ qt5/src/poppler-sound.cc               |  5 ++++-
+ splash/Splash.h                        |  5 ++++-
+ splash/SplashBitmap.h                  |  5 ++++-
+ splash/SplashClip.h                    |  5 ++++-
+ splash/SplashFTFontEngine.h            |  5 ++++-
+ splash/SplashFont.h                    |  5 ++++-
+ splash/SplashFontEngine.h              |  5 ++++-
+ splash/SplashFontFile.h                |  8 ++++++-
+ splash/SplashFontFileID.h              | 16 ++++++++++++++
+ splash/SplashPath.h                    | 17 +++++++++++++++
+ splash/SplashPattern.h                 |  4 ++++
+ splash/SplashScreen.h                  |  5 ++++-
+ splash/SplashState.h                   |  4 ++++
+ splash/SplashXPath.h                   |  4 ++++
+ splash/SplashXPathScanner.h            |  4 ++++
+ test/perf-test.cc                      |  4 ++++
+ utils/HtmlFonts.h                      |  4 +++-
+ utils/HtmlLinks.h                      |  5 ++++-
+ utils/HtmlOutputDev.cc                 |  4 +++-
+ utils/HtmlOutputDev.h                  | 13 ++++++++++--
+ 97 files changed, 626 insertions(+), 83 deletions(-)
+
+commit 4c7814342806b61fedbb2d45ce74462f9dbc20bc
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Thu Jan 4 23:12:54 2018 +0100
+
+    Fix assert on malformed documents
+
+    Bug #104354
+
+ poppler/GfxState.cc | 23 ++++++++++++-----------
+ 1 file changed, 12 insertions(+), 11 deletions(-)
+
+commit 6233710068e8406cb44741bdc74d1a0e2582e5cf
+Author: Adrian Johnson <ajohnson at redneon.com>
+Date:   Thu Jan 4 15:41:11 2018 +1030
+
+    Remove error for wrong child type for tagged pdf
+
+    It is harmless and as a few PDFs do this it just adds noise to
+    the output.
+
+    Bug #103587
+
+ poppler/StructTreeRoot.cc | 3 ---
+ 1 file changed, 3 deletions(-)
+
+commit 321538259a9c79a99ce846a6ea2d94dd7fa56f61
+Author: Adrian Johnson <ajohnson at redneon.com>
+Date:   Sun Nov 26 20:43:15 2017 +1030
+
+    Fix some bugs in StructTreeRoot parsing of parent tree
+
+    - Add support for parsing child nodes in the number tree
+    - Number tree keys do not have to be consecutive numbers. Use
+      map instead of vector for parentTree.
+    - Due to performance impact of iterating a map instead of
+      vector in parentTreeAdd, add a reverse mapping from Ref
+      to parentTree.
+    - Add mcid parameter to findParentElement() to enable finding
+      the parent when there are multiple MCIDs on the same page.
+    - Move RefCompare from pdfinfo.cc to Object.h so it can be
+      used by other files.
+
+    Bug #103912
+
+ poppler/Object.h          |   8 +++
+ poppler/StructElement.cc  |   2 +-
+ poppler/StructTreeRoot.cc | 121
+ +++++++++++++++++++++++++++-------------------
+ poppler/StructTreeRoot.h  |  14 ++++--
+ utils/pdfinfo.cc          |   6 ---
+ 5 files changed, 91 insertions(+), 60 deletions(-)
+
+commit c4cbb4fd5e062544bf34109140266d0b027a512b
+Author: Adrian Johnson <ajohnson at redneon.com>
+Date:   Mon Oct 30 19:21:41 2017 +1030
+
+    Fix pdfimages with flate encoded inline images
+
+    - Remove advance strem pos to end of image code from listImage().
+      getInlineImageLength() already does this.
+
+    - Always EmbedStream in getInlineImageLength() to get size of
+    stored image.
+      The type of encoding does not matter.
+
+    - Use same record EmbeddeStream code for all image types in
+    writeImage()
+
+    - Fix some memory leaks
+
+    Bug #103446
+
+ utils/ImageOutputDev.cc | 54
+ ++++++++++++-------------------------------------
+ 1 file changed, 13 insertions(+), 41 deletions(-)
+
+commit f87238296f7a81f131f2525c4ea3a26d14e8a7ff
+Author: Adrian Johnson <ajohnson at redneon.com>
+Date:   Wed Jan 3 08:36:58 2018 +1030
+
+    Fix EmbedStream replay
+
+    Bug #103446
+
+ poppler/Stream.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit e70990c5b2d95a9099b8f4a1c69ca9e5b2a559a4
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Wed Jan 3 00:46:42 2018 +0100
+
+    qt5: make the check for rendition a bit earlier
+
+ qt5/src/poppler-annotation.cc | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+commit 9f08b62ea283ea66b35cfc6dab3e7f45bc4170b9
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Wed Jan 3 00:32:23 2018 +0100
+
+    qt5: Do not assume all Screen annotation actions are Renditions
+
+    Fixes KDE bug #388175
+
+ qt5/src/poppler-annotation.cc | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+commit 15272137daf186114d8dfeb6898d8d90b3ccfd91
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Wed Jan 3 00:14:13 2018 +0100
+
+    Fix undefined sanitizer warning about qsort
+
+    Said the first parameter is defined by spec to not be null and
+    we where
+    passing null when there's no blocks, so add an if
+
+ poppler/TextOutputDev.cc | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+commit 066e6a3e0487f9e011f7b8d1ccff62def8db1e6c
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Wed Jan 3 00:15:14 2018 +0100
+
+    Welcome 2018
+
+ poppler/poppler-config.h.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit c9958ecb87de34b923a17521c8bb149569bacca8
+Author: Oliver Sander <oliver.sander at tu-dresden.de>
+Date:   Sat Oct 28 21:16:55 2017 +0200
+
+    ArthurOutputDev: Rudimentary support for transparency groups
+
+    This patch adds minimal support for transparency groups.  With it,
+    the Arthur backend can render highlight annotations.
+
+ qt5/src/ArthurOutputDev.cc | 46
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ qt5/src/ArthurOutputDev.h  | 15 +++++++++++++++
+ 2 files changed, 61 insertions(+)
+
+commit bda1d76fc3c9cf69b2b67d94278e136ac50c3e3b
+Author: Oliver Sander <oliver.sander at tu-dresden.de>
+Date:   Fri Dec 29 00:14:44 2017 +0100
+
+    ArthurOutputDev: Replace the QPainter by a stack of QPainters
+
+    This patch lays some groundwork for the support of transparency
+    groups.  Transparency groups temporarily create new painters.
+    These get painted upon, and then the resulting new painting
+    will be drawn at once onto the original PaintDevice.  To implement
+    this, we need a stack of painters rather than a single one.
+    The first painter on the stack is the original one.  Opening a
+    transparency group pushes a new painter onto the stack, and
+    all drawing operations always go to the painter on the top
+    of the stack.
+
+ qt5/src/ArthurOutputDev.cc | 88
+ +++++++++++++++++++++++-----------------------
+ qt5/src/ArthurOutputDev.h  |  7 +++-
+ 2 files changed, 50 insertions(+), 45 deletions(-)
+
+commit 71b04b79154a8edd27e73a2360d0c3a901246d8c
+Author: Oliver Sander <oliver.sander at tu-dresden.de>
+Date:   Fri Aug 11 22:23:46 2017 +0200
+
+    ArthurOutputDev: Implement updateBlendMode
+
+ qt5/src/ArthurOutputDev.cc | 52
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ qt5/src/ArthurOutputDev.h  |  1 +
+ 2 files changed, 53 insertions(+)
+
+commit 9b981f9123fe8c3c8662015de341cff76aa28b07
+Author: Thomas Freitag <Thomas.Freitag at alfa.de>
+Date:   Thu Dec 28 00:55:39 2017 +0100
+
+    FoFiTrueType::readPostTable() from xpdf 4.00
+
+    Bug #102880
+
+ fofi/FoFiTrueType.cc | 30 +++++++++++-------------------
+ 1 file changed, 11 insertions(+), 19 deletions(-)
+
+commit 00fc829352716b04d9ab59552daefffed20e2852
+Author: Thomas Freitag <Thomas.Freitag at alfa.de>
+Date:   Thu Dec 28 00:55:00 2017 +0100
+
+    Break loop if recursionLimit is reached
+
+ poppler/Parser.cc | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit e41ce80a27b735df8e2ccc17e15adea012543712
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Wed Dec 27 00:18:47 2017 +0100
+
+    OutlineItem: Store parent and refNum
+
+    This way when opening our children we make sure they are not also our
+    parent (i.e. there's a loop)
+
+    Fixes bug #102914
+
+ poppler/Outline.cc | 31 +++++++++++++++++--------------
+ poppler/Outline.h  |  6 ++++--
+ 2 files changed, 21 insertions(+), 16 deletions(-)
+
+commit ffefe1c038de555ed39c3d9eca6ef79ac1f97b86
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Tue Dec 26 23:57:21 2017 +0100
+
+    qt5: demo: don't crash if page is malformed
+
+ qt5/demos/pageview.cpp | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit 81461f4cddf6b8705e6cf24d20084fc71891bb91
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Sat Dec 23 11:20:43 2017 +0100
+
+    Remove another LCMS1 old ifdef
+
+ utils/pdftocairo.cc | 9 +--------
+ 1 file changed, 1 insertion(+), 8 deletions(-)
+
+commit 2556ec0705373a01feffe3ca0cd7147af2fdd2c9
+Author: suzuki toshiya <mpsuzuki at hiroshima-u.ac.jp>
+Date:   Sat Dec 23 11:19:17 2017 +0100
+
+    Remove libcms1 crumbs from pdftocairo and qt5 frontend
+
+    Bug #104358
+
+ qt5/src/poppler-document.cc | 5 +----
+ utils/pdftocairo.cc         | 6 +-----
+ 2 files changed, 2 insertions(+), 9 deletions(-)
+
+commit 48de59a92a5f88d10a1a53abf7f15f578104e1ed
+Author: Carlos Garcia Campos <cgarcia at igalia.com>
+Date:   Thu Dec 21 13:25:37 2017 +0100
+
+    regtest: Add an option to exit after n failures
+
+    Note that running jobs are not cancelled when max failures is reached,
+    so we usually end up getting more failures than the maximum.
+
+ regtest/HTMLReport.py         |  2 ++
+ regtest/Printer.py            | 15 ++++++++++++++
+ regtest/TestRun.py            | 46
+ +++++++++++++++++++++++++++++++++++++++++--
+ regtest/commands/run-tests.py |  8 +++++++-
+ 4 files changed, 68 insertions(+), 3 deletions(-)
+
+commit 79a096a48c735ac301ae4d7439bddf630a559a96
+Author: Vincent Le Garrec <legarrec.vincent at gmail.com>
+Date:   Thu Dec 21 00:57:48 2017 +0100
+
+    Fix index out of bounds undefined behaviour in PSTokenizer
+
+    Bug #103583
+
+ poppler/PSTokenizer.cc | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+commit c138ec620b5084348dc892bf9fd8228ed098970a
+Author: Oliver Sander <oliver.sander at tu-dresden.de>
+Date:   Tue Nov 28 16:40:40 2017 +0100
+
+    Arthur: 'clip' should intersect new and old clipping path
+
+    Previously, the 'clip' method of the ArthurOutputDev class
+    replaced the current clipping path with the one given in
+    the GfxState variable.  However, the expected behavior is
+    to intersect the new path with the old one, and use the
+    result as the new clipping path.
+
+ qt5/src/ArthurOutputDev.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 7b434a7ad9333a3b2250d636a517c58d9a12bca2
+Author: Pekka Vuorela <pekka.vuorela at jollamobile.com>
+Date:   Fri Dec 15 16:56:20 2017 +0200
+
+    Honor configuration for building glibc copy of strtok_r
+
+    config.h didn't get included and HAVE_STRTOK_R was never defined.
+    Now getting via glibc.h.
+
+ goo/glibc_strtok_r.cc | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit c2037af18095bb42dd43bafb42650df469e7e5ef
+Author: Oliver Sander <oliver.sander at tu-dresden.de>
+Date:   Wed Oct 18 23:23:50 2017 +0200
+
+    Don't let ArthurOutputDev be friend of SplashPath anymore
+
+    Now that ArthurOutputDev uses Qt glyph rendering, there is
+    not need for it to be friend of SplashPath anymore.
+
+ splash/SplashPath.h | 2 --
+ 1 file changed, 2 deletions(-)
+
+commit 33c3b391dfc3c10b1b63b0b82df4dcb47b71c53a
+Author: Fredrik Fornwall <fredrik at fornwall.net>
+Date:   Tue Dec 19 00:37:44 2017 +0100
+
+    PDFDoc: use %c instead of \x to output binary
+
+    Bug #103873
+
+ poppler/PDFDoc.cc | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 15dd674a384c80a8f3d4f0647f6617ba72d9bd26
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Thu Dec 14 15:11:31 2017 +0100
+
+    Remove unused FindLIBOPENJPEG.cmake
+
+ cmake/modules/FindLIBOPENJPEG.cmake | 64
+ -------------------------------------
+ 1 file changed, 64 deletions(-)
+
+commit 65dcc0b9c16c80e6718ada060d7ac0e2c0e39abf
+Author: Albert Astals Cid <albert.astals.cid at kdab.com>
+Date:   Wed Dec 13 10:40:50 2017 +0100
+
+    Reset lastAbortCheck on updateLevel reset
+
+    Otherwise we get to a point that the
+      if (updateLevel - lastAbortCheck > 10) {
+    branch is never executed because updateLevel got to 20000 but
+    lastAbortCheck is still at the last value
+
+ poppler/Gfx.cc | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 3690e96154b226025b465ac2260cf1ff2d269abd
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Wed Dec 13 00:07:20 2017 +0100
+
+    Remove the extern C from glib.h
+
+    Apparently this fixes build with MSVC
+
+    Bug #103621
+
+ goo/glibc.h | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+commit f5706275121409887b0e486b896b48cbcccb766a
+Author: Adrian Johnson <ajohnson at redneon.com>
+Date:   Sun Oct 22 10:26:55 2017 +1030
+
+    cairo: limit image size when printing
+
+    1 bpp image formats can have very large sizes. Even if the maximum
+    cairo image size is not exceeded, it still uses a huge amount
+    of memory
+    and is very slow.
+
+    This limits the image size when printing to 8192x8192 which is
+    sufficient for 300ppi at A2 size. Cairo >= 1.5.10 scales mime images
+    to the same dimensions as the cairo image, so the original mime image
+    can still be embedded.
+
+    Bug 103399
+
+ poppler/CairoOutputDev.cc | 35 ++++++++++++++++++++++++++++++++---
+ 1 file changed, 32 insertions(+), 3 deletions(-)
+
+commit 3f13dd5f04984be1912b4537ffbfacd892750915
+Author: Adrian Johnson <ajohnson at redneon.com>
+Date:   Sun Oct 22 09:37:01 2017 +1030
+
+    cairo: support embedding CCITT image data
+
+    Bug 103399
+
+ poppler/CairoOutputDev.cc | 46
+ +++++++++++++++++++++++++++++++++++++++++++---
+ poppler/CairoOutputDev.h  |  5 ++++-
+ poppler/Stream.cc         | 14 ++++++++++----
+ poppler/Stream.h          |  6 +++++-
+ 4 files changed, 62 insertions(+), 9 deletions(-)
+
+commit 3263fa4439e1a09dae6a0332a90b983d25bc218d
+Author: Thomas Freitag <Thomas.Freitag at alfa.de>
+Date:   Tue Dec 12 00:26:37 2017 +0100
+
+    windows version for Error out on save if file has changed since we
+    opened it
+
+ goo/gfile.cc | 14 +++++++++++++-
+ goo/gfile.h  |  6 ++++--
+ 2 files changed, 17 insertions(+), 3 deletions(-)
+
+commit e4ee1392136188fab0005a0bd7b30c6d9a16d97d
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Tue Dec 12 00:24:31 2017 +0100
+
+    Error out on save if file has changed since we opened it
+
+    In poppler we keep the fd of the file open so the XRef+FileStream can
+    locate objects. This is good since we save lots of memory for
+    not having
+    everything on memory all the time, but that means that when we want to
+    save we need the file to be exactly the same as it was when we created
+    the XRef otherwise we're going to be reading from the wrong part
+    of the
+    "new" file.
+
+    Bug #103793
+
+ goo/gfile.cc         | 18 +++++++++++++++++-
+ goo/gfile.h          | 10 ++++++++--
+ poppler/ErrorCodes.h | 16 ++++++++++++++++
+ poppler/PDFDoc.cc    | 11 +++++++++++
+ 4 files changed, 52 insertions(+), 3 deletions(-)
+
+commit f10359121568409e6062a82de696fe93be615a53
+Author: Albert Astals Cid <aacid at kde.org>
+Date:   Sun Dec 3 22:41:32 2017 +0100
+
+    Fix memory leak on error condition
+
+ poppler/Catalog.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
 commit 72e0a3a087f160d819f7697a8536bbee12240c7a
 Author: Albert Astals Cid <aacid at kde.org>
 Date:   Sun Dec 3 20:25:06 2017 +0100

Modified: trunk/Build/source/libs/poppler/poppler-src/NEWS
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/NEWS	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/NEWS	2018-03-18 21:59:37 UTC (rev 47014)
@@ -1,3 +1,63 @@
+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
+
 Release 0.62.0
         core:
          * Stop supporting lcms1, you really want to use lcms2 :)

Modified: trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -57,29 +57,29 @@
 
   if (!(f = fopen(fileName, "rb"))) {
     error(errIO, -1, "Cannot open '{0:s}'", fileName);
-    return NULL;
+    return nullptr;
   }
   if (fseek(f, 0, SEEK_END) != 0) {
     error(errIO, -1, "Cannot seek to end of '{0:s}'", fileName);
     fclose(f);
-    return NULL;
+    return nullptr;
   }
   n = (int)ftell(f);
   if (n < 0) {
     error(errIO, -1, "Cannot determine length of '{0:s}'", fileName);
     fclose(f);
-    return NULL;
+    return nullptr;
   }
   if (fseek(f, 0, SEEK_SET) != 0) {
     error(errIO, -1, "Cannot seek to start of '{0:s}'", fileName);
     fclose(f);
-    return NULL;
+    return nullptr;
   }
   buf = (char *)gmalloc(n);
   if ((int)fread(buf, 1, n, f) != n) {
     gfree(buf);
     fclose(f);
-    return NULL;
+    return nullptr;
   }
   fclose(f);
   *fileLen = n;

Modified: trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -6,6 +6,20 @@
 //
 //========================================================================
 
+//========================================================================
+//
+// Modified under the Poppler project - http://poppler.freedesktop.org
+//
+// All changes made under the Poppler project to this file are licensed
+// under GPL version 2 or later
+//
+// Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
+//
+// To see a description of the changes please see the Changelog file that
+// came with your tarball or type make ChangeLog if you are building from git
+//
+//========================================================================
+
 #ifndef FOFIBASE_H
 #define FOFIBASE_H
 
@@ -25,6 +39,8 @@
 
 class FoFiBase {
 public:
+  FoFiBase(const FoFiBase &) = delete;
+  FoFiBase& operator=(const FoFiBase &other) = delete;
 
   virtual ~FoFiBase();
 

Modified: trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiEncodings.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiEncodings.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiEncodings.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -34,38 +34,38 @@
 //------------------------------------------------------------------------
 
 const char * const fofiType1StandardEncoding[256] = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "space",
   "exclam",
   "quotedbl",
@@ -161,40 +161,40 @@
   "bar",
   "braceright",
   "asciitilde",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "exclamdown",
   "cent",
   "sterling",
@@ -210,12 +210,12 @@
   "guilsinglright",
   "fi",
   "fl",
-  NULL,
+  nullptr,
   "endash",
   "dagger",
   "daggerdbl",
   "periodcentered",
-  NULL,
+  nullptr,
   "paragraph",
   "bullet",
   "quotesinglbase",
@@ -224,9 +224,9 @@
   "guillemotright",
   "ellipsis",
   "perthousand",
-  NULL,
+  nullptr,
   "questiondown",
-  NULL,
+  nullptr,
   "grave",
   "acute",
   "circumflex",
@@ -235,100 +235,100 @@
   "breve",
   "dotaccent",
   "dieresis",
-  NULL,
+  nullptr,
   "ring",
   "cedilla",
-  NULL,
+  nullptr,
   "hungarumlaut",
   "ogonek",
   "caron",
   "emdash",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "AE",
-  NULL,
+  nullptr,
   "ordfeminine",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "Lslash",
   "Oslash",
   "OE",
   "ordmasculine",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "ae",
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
   "dotlessi",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "lslash",
   "oslash",
   "oe",
   "germandbls",
-  NULL,
-  NULL,
-  NULL,
-  NULL
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr
 };
 
 const char * const fofiType1ExpertEncoding[256] = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "space",
   "exclamsmall",
   "Hungarumlautsmall",
-  NULL,
+  nullptr,
   "dollaroldstyle",
   "dollarsuperior",
   "ampersandsmall",
@@ -357,28 +357,28 @@
   "threequartersemdash",
   "periodsuperior",
   "questionsmall",
-  NULL,
+  nullptr,
   "asuperior",
   "bsuperior",
   "centsuperior",
   "dsuperior",
   "esuperior",
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
   "isuperior",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "lsuperior",
   "msuperior",
   "nsuperior",
   "osuperior",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "rsuperior",
   "ssuperior",
   "tsuperior",
-  NULL,
+  nullptr,
   "ff",
   "fi",
   "fl",
@@ -385,7 +385,7 @@
   "ffi",
   "ffl",
   "parenleftinferior",
-  NULL,
+  nullptr,
   "parenrightinferior",
   "Circumflexsmall",
   "hyphensuperior",
@@ -420,67 +420,67 @@
   "onefitted",
   "rupiah",
   "Tildesmall",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "exclamdownsmall",
   "centoldstyle",
   "Lslashsmall",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "Scaronsmall",
   "Zcaronsmall",
   "Dieresissmall",
   "Brevesmall",
   "Caronsmall",
-  NULL,
+  nullptr,
   "Dotaccentsmall",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "Macronsmall",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "figuredash",
   "hypheninferior",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "Ogoneksmall",
   "Ringsmall",
   "Cedillasmall",
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
   "onequarter",
   "onehalf",
   "threequarters",
@@ -491,8 +491,8 @@
   "seveneighths",
   "onethird",
   "twothirds",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "zerosuperior",
   "onesuperior",
   "twosuperior",

Modified: trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiIdentifier.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiIdentifier.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiIdentifier.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -14,6 +14,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2013 Christoph Duelli <duelli at melosgmbh.de>
+// Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -36,6 +37,9 @@
 
 class Reader {
 public:
+  Reader() = default;
+  Reader(const Reader &) = delete;
+  Reader& operator=(const Reader &other) = delete;
 
   virtual ~Reader() {}
 
@@ -186,7 +190,7 @@
   FILE *fA;
 
   if (!(fA = fopen(fileName, "rb"))) {
-    return NULL;
+    return nullptr;
   }
   return new FileReader(fA);
 }

Modified: trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiTrueType.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiTrueType.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiTrueType.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -277,7 +277,7 @@
   ff = new FoFiTrueType(fileA, lenA, gFalse, faceIndexA);
   if (!ff->parsedOk) {
     delete ff;
-    return NULL;
+    return nullptr;
   }
   return ff;
 }
@@ -288,12 +288,12 @@
   int lenA;
 
   if (!(fileA = FoFiBase::readFile(fileName, &lenA))) {
-    return NULL;
+    return nullptr;
   }
   ff = new FoFiTrueType(fileA, lenA, gTrue, faceIndexA);
   if (!ff->parsedOk) {
     delete ff;
-    return NULL;
+    return nullptr;
   }
   return ff;
 }
@@ -301,11 +301,11 @@
 FoFiTrueType::FoFiTrueType(char *fileA, int lenA, GBool freeFileDataA, int faceIndexA):
   FoFiBase(fileA, lenA, freeFileDataA)
 {
-  tables = NULL;
+  tables = nullptr;
   nTables = 0;
-  cmaps = NULL;
+  cmaps = nullptr;
   nCmaps = 0;
-  nameToGID = NULL;
+  nameToGID = nullptr;
   parsedOk = gFalse;
   faceIndex = faceIndexA;
   gsubFeatureTable = 0;
@@ -472,10 +472,10 @@
 
   *nCIDs = 0;
   if (!getCFFBlock(&start, &length)) {
-    return NULL;
+    return nullptr;
   }
   if (!(ff = FoFiType1C::make(start, length))) {
-    return NULL;
+    return nullptr;
   }
   map = ff->getCIDToGIDMap(nCIDs);
   delete ff;
@@ -556,7 +556,7 @@
   // write the guts of the dictionary
   cvtEncoding(encoding, outputFunc, outputStream);
   cvtCharStrings(encoding, codeToGID, outputFunc, outputStream);
-  cvtSfnts(outputFunc, outputStream, NULL, gFalse, &maxUsedGlyph);
+  cvtSfnts(outputFunc, outputStream, nullptr, gFalse, &maxUsedGlyph);
 
   // end the dictionary and define the font
   (*outputFunc)(outputStream, "FontName currentdict end definefont pop\n", 40);
@@ -701,7 +701,7 @@
   (*outputFunc)(outputStream, "  end readonly def\n", 19);
 
   // write the guts of the dictionary
-  cvtSfnts(outputFunc, outputStream, NULL, needVerticalMetrics, &maxUsedGlyph);
+  cvtSfnts(outputFunc, outputStream, nullptr, needVerticalMetrics, &maxUsedGlyph);
 
   // end the dictionary and define the font
   (*outputFunc)(outputStream,
@@ -1061,7 +1061,7 @@
       ++nNewTables;
     }
   }
-  vmtxTab = NULL; // make gcc happy
+  vmtxTab = nullptr; // make gcc happy
   vmtxTabLength = 0;
   advance = 0; // make gcc happy
   if (needVerticalMetrics) {
@@ -1387,7 +1387,7 @@
     nTables = j;
     tables = (TrueTypeTable *)greallocn_checkoverflow(tables, nTables, sizeof(TrueTypeTable));
   }
-  if (!parsedOk || tables == NULL) {
+  if (!parsedOk || tables == nullptr) {
     return;
   }
 
@@ -1451,7 +1451,7 @@
 
 void FoFiTrueType::readPostTable() {
   GooString *name;
-  int tablePos, postFmt, stringIdx, stringPos, savedStringIdx;
+  int tablePos, postFmt, stringIdx, stringPos;
   GBool ok;
   int i, j, n, m;
 
@@ -1481,12 +1481,12 @@
     stringIdx = 0;
     stringPos = tablePos + 34 + 2*n;
     for (i = 0; i < n; ++i) {
+      ok = gTrue;
       j = getU16BE(tablePos + 34 + 2*i, &ok);
       if (j < 258) {
 	nameToGID->removeInt(macGlyphNames[j]);
 	nameToGID->add(new GooString(macGlyphNames[j]), i);
       } else {
-	savedStringIdx = stringIdx;
 	j -= 258;
 	if (j != stringIdx) {
 	  for (stringIdx = 0, stringPos = tablePos + 34 + 2*n;
@@ -1493,26 +1493,18 @@
 	       stringIdx < j;
 	       ++stringIdx, stringPos += 1 + getU8(stringPos, &ok)) ;
 	  if (!ok) {
-	    goto err;
+	    continue;
 	  }
 	}
 	m = getU8(stringPos, &ok);
 	if (!ok || !checkRegion(stringPos + 1, m)) {
-	  stringIdx = savedStringIdx;
-	  if (j < 258) {
-	    ok = gTrue;
-	    nameToGID->removeInt(macGlyphNames[j]);
-	    nameToGID->add(new GooString(macGlyphNames[0]), i);
-	  } else {
-	    goto err;
-	  }
-	} else {
-	  name = new GooString((char *)&file[stringPos + 1], m);
-	  nameToGID->removeInt(name);
-	  nameToGID->add(name, i);
-	  ++stringIdx;
-	  stringPos += 1 + m;
-        }
+	  continue;
+	}
+	name = new GooString((char *)&file[stringPos + 1], m);
+	nameToGID->removeInt(name);
+	nameToGID->add(name, i);
+	++stringIdx;
+	stringPos += 1 + m;
       }
     }
   } else if (postFmt == 0x00028000) {
@@ -1520,7 +1512,7 @@
     for (i = 0; i < nGlyphs; ++i) {
       j = getU8(tablePos + 32 + i, &ok);
       if (!ok) {
-	goto err;
+	continue;
       }
       if (j < 258) {
 	nameToGID->removeInt(macGlyphNames[j]);
@@ -1534,7 +1526,7 @@
  err:
   if (nameToGID) {
     delete nameToGID;
-    nameToGID = NULL;
+    nameToGID = nullptr;
   }
 }
 
@@ -1578,7 +1570,7 @@
 */
 int FoFiTrueType::setupGSUB(const char *scriptName)
 {
-  return setupGSUB(scriptName, NULL);
+  return setupGSUB(scriptName, nullptr);
 }
 
 /*
@@ -1603,7 +1595,7 @@
   int x;
   Guint pos;
 
-  if (scriptName == 0) {
+  if (scriptName == nullptr) {
     gsubFeatureTable = 0;
     return 0;
   }

Modified: trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiType1.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiType1.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiType1.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -54,7 +54,7 @@
   int lenA;
 
   if (!(fileA = FoFiBase::readFile(fileName, &lenA))) {
-    return NULL;
+    return nullptr;
   }
   return new FoFiType1(fileA, lenA, gTrue);
 }
@@ -62,8 +62,8 @@
 FoFiType1::FoFiType1(char *fileA, int lenA, GBool freeFileDataA):
   FoFiBase(fileA, lenA, freeFileDataA)
 {
-  name = NULL;
-  encoding = NULL;
+  name = nullptr;
+  encoding = nullptr;
   fontMatrix[0] = 0.001;
   fontMatrix[1] = 0;
   fontMatrix[2] = 0;
@@ -150,7 +150,7 @@
     // skip "/Encoding" + one whitespace char,
     // then look for 'def' preceded by PostScript whitespace
     p = line + 10;
-    line = NULL;
+    line = nullptr;
     for (; p < (char *)file + len; ++p) {
       if ((*p == ' ' || *p == '\t' || *p == '\x0a' ||
 	   *p == '\x0d' || *p == '\x0c' || *p == '\0') &&
@@ -176,7 +176,7 @@
 	// skip "/Encoding" + one whitespace char,
 	// then look for 'def' preceded by PostScript whitespace
 	p = line2 + 10;
-	line = NULL;
+	line = nullptr;
 	for (; p < (char *)file + len; ++p) {
 	  if ((*p == ' ' || *p == '\t' || *p == '\x0a' ||
 	       *p == '\x0d' || *p == '\x0c' || *p == '\0') &&
@@ -207,7 +207,7 @@
     ++line;
   }
   if (line >= (char *)file + len) {
-    return NULL;
+    return nullptr;
   }
   return line;
 }
@@ -243,7 +243,7 @@
 	       !strncmp(line, "/Encoding 256 array", 19)) {
       encoding = (char **)gmallocn(256, sizeof(char *));
       for (j = 0; j < 256; ++j) {
-	encoding[j] = NULL;
+	encoding[j] = nullptr;
       }
       continueLine = gFalse;
       for (j = 0, line = getNextLine(line);
@@ -324,7 +324,7 @@
 	  }
 	} else {
 	  if (strtok_r(buf, " \t", &tokptr) &&
-	      (p = strtok_r(NULL, " \t\n\r", &tokptr)) && !strcmp(p, "def")) {
+	      (p = strtok_r(nullptr, " \t\n\r", &tokptr)) && !strcmp(p, "def")) {
 	    break;
 	  }
 	}
@@ -339,7 +339,7 @@
 	if ((p2 = strchr(p, ']'))) {
 	  *p2 = '\0';
 	  for (j = 0; j < 6; ++j) {
-	    if ((p = strtok(j == 0 ? p : (char *)NULL, " \t\n\r"))) {
+	    if ((p = strtok(j == 0 ? p : (char *)nullptr, " \t\n\r"))) {
 	      fontMatrix[j] = atof(p);
 	    } else {
 	      break;

Modified: trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiType1C.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiType1C.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/fofi/FoFiType1C.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -51,7 +51,7 @@
   ff = new FoFiType1C(fileA, lenA, gFalse);
   if (!ff->parse()) {
     delete ff;
-    return NULL;
+    return nullptr;
   }
   return ff;
 }
@@ -62,12 +62,12 @@
   int lenA;
 
   if (!(fileA = FoFiBase::readFile(fileName, &lenA))) {
-    return NULL;
+    return nullptr;
   }
   ff = new FoFiType1C(fileA, lenA, gTrue);
   if (!ff->parse()) {
     delete ff;
-    return NULL;
+    return nullptr;
   }
   return ff;
 }
@@ -75,11 +75,11 @@
 FoFiType1C::FoFiType1C(char *fileA, int lenA, GBool freeFileDataA):
   FoFiBase(fileA, lenA, freeFileDataA)
 {
-  name = NULL;
-  encoding = NULL;
-  privateDicts = NULL;
-  fdSelect = NULL;
-  charset = NULL;
+  name = nullptr;
+  encoding = nullptr;
+  privateDicts = nullptr;
+  fdSelect = nullptr;
+  charset = nullptr;
   charsetLength = 0;
 }
 
@@ -112,7 +112,7 @@
 }
 
 char *FoFiType1C::getName() {
-  return name ? name->getCString() : (char *)NULL;
+  return name ? name->getCString() : (char *)nullptr;
 }
 
 char **FoFiType1C::getEncoding() {
@@ -125,10 +125,10 @@
 
   ok = gTrue;
   if (gid < 0 || gid >= charsetLength)
-    return NULL;
+    return nullptr;
   getString(charset[gid], buf, &ok);
   if (!ok) {
-    return NULL;
+    return nullptr;
   }
   return new GooString(buf);
 }
@@ -140,7 +140,7 @@
   // a CID font's top dict has ROS as the first operator
   if (topDict.firstOp != 0x0c1e) {
     *nCIDs = 0;
-    return NULL;
+    return nullptr;
   }
 
   // in a CID font, the charset data is the GID-to-CID mapping, so all
@@ -2412,7 +2412,7 @@
   } else {
     encoding = (char **)gmallocn(256, sizeof(char *));
     for (i = 0; i < 256; ++i) {
-      encoding[i] = NULL;
+      encoding[i] = nullptr;
     }
     pos = topDict.encodingOffset;
     encFormat = getU8(pos++, &parsedOk);
@@ -2545,7 +2545,7 @@
     }
     if (!parsedOk) {
       gfree(charset);
-      charset = NULL;
+      charset = nullptr;
       charsetLength = 0;
       return gFalse;
     }

Modified: trunk/Build/source/libs/poppler/poppler-src/goo/GooHash.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/goo/GooHash.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/goo/GooHash.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -56,7 +56,7 @@
   size = 7;
   tab = (GooHashBucket **)gmallocn(size, sizeof(GooHashBucket *));
   for (h = 0; h < size; ++h) {
-    tab[h] = NULL;
+    tab[h] = nullptr;
   }
   len = 0;
 }
@@ -149,7 +149,7 @@
   int h;
 
   if (!(p = find(key, &h))) {
-    return NULL;
+    return nullptr;
   }
   return p->val.p;
 }
@@ -169,7 +169,7 @@
   int h;
 
   if (!(p = find(key, &h))) {
-    return NULL;
+    return nullptr;
   }
   return p->val.p;
 }
@@ -191,7 +191,7 @@
   int h;
 
   if (!(p = find(key, &h))) {
-    return NULL;
+    return nullptr;
   }
   q = &tab[h];
   while (*q != p) {
@@ -237,7 +237,7 @@
   int h;
 
   if (!(p = find(key, &h))) {
-    return NULL;
+    return nullptr;
   }
   q = &tab[h];
   while (*q != p) {
@@ -279,7 +279,7 @@
 void GooHash::startIter(GooHashIter **iter) {
   *iter = new GooHashIter;
   (*iter)->h = -1;
-  (*iter)->p = NULL;
+  (*iter)->p = nullptr;
 }
 
 GBool GooHash::getNext(GooHashIter **iter, GooString **key, void **val) {
@@ -292,7 +292,7 @@
   while (!(*iter)->p) {
     if (++(*iter)->h == size) {
       delete *iter;
-      *iter = NULL;
+      *iter = nullptr;
       return gFalse;
     }
     (*iter)->p = tab[(*iter)->h];
@@ -312,7 +312,7 @@
   while (!(*iter)->p) {
     if (++(*iter)->h == size) {
       delete *iter;
-      *iter = NULL;
+      *iter = nullptr;
       return gFalse;
     }
     (*iter)->p = tab[(*iter)->h];
@@ -324,7 +324,7 @@
 
 void GooHash::killIter(GooHashIter **iter) {
   delete *iter;
-  *iter = NULL;
+  *iter = nullptr;
 }
 
 void GooHash::expand() {
@@ -337,7 +337,7 @@
   size = 2*size + 1;
   tab = (GooHashBucket **)gmallocn(size, sizeof(GooHashBucket *));
   for (h = 0; h < size; ++h) {
-    tab[h] = NULL;
+    tab[h] = nullptr;
   }
   for (i = 0; i < oldSize; ++i) {
     while (oldTab[i]) {
@@ -363,7 +363,7 @@
       return p;
     }
   }
-  return NULL;
+  return nullptr;
 }
 
 GooHashBucket *GooHash::find(const char *key, int *h) {
@@ -375,7 +375,7 @@
       return p;
     }
   }
-  return NULL;
+  return nullptr;
 }
 
 int GooHash::hash(GooString *key) {

Modified: trunk/Build/source/libs/poppler/poppler-src/goo/GooMutex.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/goo/GooMutex.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/goo/GooMutex.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -17,7 +17,7 @@
 //
 // Copyright (C) 2009 Kovid Goyal <kovid at kovidgoyal.net>
 // Copyright (C) 2013 Thomas Freitag <Thomas.Freitag at alfa.de>
-// Copyright (C) 2013 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2013, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2013 Adam Reichold <adamreichold at myopera.com>
 // Copyright (C) 2014 Bogdan Cristea <cristeab at gmail.com>
 // Copyright (C) 2014 Peter Breitenlohner <peb at mppmu.mpg.de>
@@ -81,6 +81,9 @@
   MutexLocker(GooMutex *mutexA) : mutex(mutexA) { gLockMutex(mutex); }
   ~MutexLocker() { gUnlockMutex(mutex); }
 
+  MutexLocker(const MutexLocker &) = delete;
+  MutexLocker& operator=(const MutexLocker &other) = delete;
+
 private:
   GooMutex *mutex;
 };

Modified: trunk/Build/source/libs/poppler/poppler-src/goo/GooString.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/goo/GooString.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/goo/GooString.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -114,7 +114,7 @@
   "s",
   "t",
   "w",
-  NULL
+  nullptr
 };
 
 //------------------------------------------------------------------------
@@ -185,9 +185,9 @@
 }
 
 GooString::GooString() {
-  s = NULL;
+  s = nullptr;
   length = 0;
-  Set(NULL);
+  Set(nullptr);
 
 #if __cplusplus >= 201103L
   static_assert(sizeof(GooString) == GooString::STR_FINAL_SIZE, "You should check memory alignment or STR_STATIC_SIZE calculation.");
@@ -195,19 +195,19 @@
 }
 
 GooString::GooString(const char *sA) {
-  s = NULL;
+  s = nullptr;
   length = 0;
   Set(sA, CALC_STRING_LEN);
 }
 
 GooString::GooString(const char *sA, int lengthA) {
-  s = NULL;
+  s = nullptr;
   length = 0;
   Set(sA, lengthA);
 }
 
 GooString::GooString(GooString *str, int idx, int lengthA) {
-  s = NULL;
+  s = nullptr;
   length = 0;
   assert(idx + lengthA <= str->length);
   Set(str->getCString() + idx, lengthA);
@@ -214,13 +214,13 @@
 }
 
 GooString::GooString(const GooString *str) {
-  s = NULL;
+  s = nullptr;
   length = 0;
   Set(str->getCString(), str->length);
 }
 
 GooString::GooString(GooString *str1, GooString *str2) {
-  s = NULL;
+  s = nullptr;
   length = 0;
   resize(str1->length + str2->length);
   memcpy(s, str1->getCString(), str1->length);

Modified: trunk/Build/source/libs/poppler/poppler-src/goo/GooTimer.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/goo/GooTimer.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/goo/GooTimer.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -32,7 +32,7 @@
 
 void GooTimer::start() {
 #ifdef HAVE_GETTIMEOFDAY
-  gettimeofday(&start_time, NULL);
+  gettimeofday(&start_time, nullptr);
 #elif defined(_WIN32)
   QueryPerformanceCounter(&start_time);
 #endif
@@ -41,7 +41,7 @@
 
 void GooTimer::stop() {
 #ifdef HAVE_GETTIMEOFDAY
-  gettimeofday(&end_time, NULL);
+  gettimeofday(&end_time, nullptr);
 #elif defined(_WIN32)
   QueryPerformanceCounter(&end_time);
 #endif
@@ -55,7 +55,7 @@
   struct timeval elapsed;
 
   if (active)
-    gettimeofday(&end_time, NULL);
+    gettimeofday(&end_time, nullptr);
 
   if (start_time.tv_usec > end_time.tv_usec) {
       end_time.tv_usec += USEC_PER_SEC;

Modified: trunk/Build/source/libs/poppler/poppler-src/goo/ImgWriter.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/goo/ImgWriter.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/goo/ImgWriter.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -5,7 +5,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright (C) 2009 Stefan Thomas <thomas at eload24.com>
-// Copyright (C) 2009, 2011 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2009, 2011, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2010 Adrian Johnson <ajohnson at redneon.com>
 // Copyright (C) 2010 Brian Cameron <brian.cameron at oracle.com>
 // Copyright (C) 2011 Thomas Freitag <Thomas.Freitag at alfa.de>
@@ -20,6 +20,10 @@
 class ImgWriter
 {
 public:
+  ImgWriter() = default;
+  ImgWriter(const ImgWriter &) = delete;
+  ImgWriter& operator=(const ImgWriter &other) = delete;
+
   virtual ~ImgWriter();
   virtual bool init(FILE *f, int width, int height, int hDPI, int vDPI) = 0;
 

Modified: trunk/Build/source/libs/poppler/poppler-src/goo/PNGWriter.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/goo/PNGWriter.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/goo/PNGWriter.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -41,9 +41,9 @@
 {
   priv = new PNGWriterPrivate;
   priv->format = formatA;
-  priv->icc_data = NULL;
+  priv->icc_data = nullptr;
   priv->icc_data_size = 0;
-  priv->icc_name = NULL;
+  priv->icc_name = nullptr;
   priv->sRGB_profile = false;
 }
 
@@ -82,7 +82,7 @@
 #endif
 
   /* initialize stuff */
-  priv->png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+  priv->png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr);
   if (!priv->png_ptr) {
     error(errInternal, -1, "png_create_write_struct failed");
     return false;

Modified: trunk/Build/source/libs/poppler/poppler-src/goo/TiffWriter.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/goo/TiffWriter.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/goo/TiffWriter.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -42,10 +42,10 @@
 TiffWriter::TiffWriter(Format formatA)
 {
   priv = new TiffWriterPrivate;
-  priv->f = NULL;
+  priv->f = nullptr;
   priv->numRows = 0;
   priv->curRow = 0;
-  priv->compressionString = NULL;
+  priv->compressionString = nullptr;
   priv->format = formatA;
 }
 
@@ -87,12 +87,12 @@
     { "dcs",	COMPRESSION_DCS,	"Kodak DCS encoding" },
     { "jbig",	COMPRESSION_JBIG,	"ISO JBIG" },
     { "jp2000",	COMPRESSION_JP2000,	"Leadtools JPEG2000" },
-    { NULL,	0,			NULL }
+    { nullptr,	0,			nullptr }
   };
 
   // Initialize
 
-  priv->f = NULL;
+  priv->f = nullptr;
   priv->curRow = 0;
 
   // Store the number of rows
@@ -103,20 +103,20 @@
 
   compression = COMPRESSION_NONE;
 
-  if (priv->compressionString == NULL || strcmp(priv->compressionString, "") == 0) {
+  if (priv->compressionString == nullptr || strcmp(priv->compressionString, "") == 0) {
     compression = COMPRESSION_NONE;
   } else {
     int i;
-    for (i = 0; compressionList[i].compressionName != NULL; i++) {
+    for (i = 0; compressionList[i].compressionName != nullptr; i++) {
       if (strcmp(priv->compressionString, compressionList[i].compressionName) == 0) {
 	compression = compressionList[i].compressionCode;
 	break;
       }
     }
-    if (compressionList[i].compressionName == NULL) {
+    if (compressionList[i].compressionName == nullptr) {
       fprintf(stderr, "TiffWriter: Unknown compression type '%.10s', using 'none'.\n", priv->compressionString);
       fprintf(stderr, "Known compression types (the tiff library might not support every type)\n");
-      for (i = 0; compressionList[i].compressionName != NULL; i++) {
+      for (i = 0; compressionList[i].compressionName != nullptr; i++) {
 	fprintf(stderr, "%10s %s\n", compressionList[i].compressionName, compressionList[i].compressionDescription);
       }
     }
@@ -157,7 +157,7 @@
 
   // Open the file
 
-  if (openedFile == NULL) {
+  if (openedFile == nullptr) {
     fprintf(stderr, "TiffWriter: No output file given.\n");
     return false;
   }

Modified: trunk/Build/source/libs/poppler/poppler-src/goo/gfile.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/goo/gfile.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/goo/gfile.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -19,12 +19,12 @@
 // Copyright (C) 2006 Kristian Høgsberg <krh at redhat.com>
 // Copyright (C) 2008 Adam Batkin <adam at batkin.net>
 // Copyright (C) 2008, 2010, 2012, 2013 Hib Eris <hib at hiberis.nl>
-// Copyright (C) 2009, 2012, 2014 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2009, 2012, 2014, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2009 Kovid Goyal <kovid at kovidgoyal.net>
-// Copyright (C) 2013 Adam Reichold <adamreichold at myopera.com>
+// Copyright (C) 2013, 2018 Adam Reichold <adamreichold at myopera.com>
 // Copyright (C) 2013, 2017 Adrian Johnson <ajohnson at redneon.com>
 // Copyright (C) 2013 Peter Breitenlohner <peb at mppmu.mpg.de>
-// Copyright (C) 2013 Thomas Freitag <Thomas.Freitag at alfa.de>
+// Copyright (C) 2013, 2017 Thomas Freitag <Thomas.Freitag at alfa.de>
 // Copyright (C) 2017 Christoph Cullmann <cullmann at kde.org>
 //
 // To see a description of the changes please see the Changelog file that
@@ -65,6 +65,40 @@
 #define PATH_MAX 1024
 #endif
 
+namespace {
+
+template< typename... >
+struct void_type
+{
+  using type = void;
+};
+
+template< typename... Args >
+using void_t = typename void_type< Args... >::type;
+
+template< typename Stat, typename = void_t<> >
+struct StatMtim
+{
+  static const struct timespec& value(const Stat& stbuf) {
+    return stbuf.st_mtim;
+  }
+};
+
+// Mac OS X uses a different field name than POSIX and this detects it.
+template< typename Stat >
+struct StatMtim< Stat, void_t< decltype ( Stat::st_mtimespec ) > >
+{
+  static const struct timespec& value(const Stat& stbuf) {
+    return stbuf.st_mtimespec;
+  }
+};
+
+inline const struct timespec& mtim(const struct stat& stbuf) {
+  return StatMtim< struct stat >::value(stbuf);
+}
+
+}
+
 //------------------------------------------------------------------------
 
 GooString *getCurrentDir() {
@@ -357,7 +391,7 @@
   }
   s->appendf("x_{0:d}_{1:d}_",
 	     (int)GetCurrentProcessId(), (int)GetCurrentThreadId());
-  t = (int)time(NULL);
+  t = (int)time(nullptr);
   for (i = 0; i < 1000; ++i) {
     s2 = s->copy()->appendf("{0:d}", t + i);
     if (!(f2 = fopen(s2->getCString(), "r"))) {
@@ -416,7 +450,7 @@
 #endif // HAVE_MKSTEMP
   if (fd < 0 || !(*f = fdopen(fd, mode))) {
     delete *name;
-    *name = NULL;
+    *name = nullptr;
     return gFalse;
   }
   return gTrue;
@@ -548,7 +582,7 @@
   }
   buf[i] = '\0';
   if (i == 0) {
-    return NULL;
+    return nullptr;
   }
   return buf;
 }
@@ -599,13 +633,17 @@
 
 #ifdef _WIN32
 
+GooFile::GooFile(HANDLE handleA) : handle(handleA) {
+  GetFileTime(handleA, nullptr, nullptr, &modifiedTimeOnOpen);
+}
+
 int GooFile::read(char *buf, int n, Goffset offset) const {
   DWORD m;
   
-  LARGE_INTEGER largeInteger = {0};
+  LARGE_INTEGER largeInteger = {};
   largeInteger.QuadPart = offset;
   
-  OVERLAPPED overlapped = {0};
+  OVERLAPPED overlapped = {};
   overlapped.Offset = largeInteger.LowPart;
   overlapped.OffsetHigh = largeInteger.HighPart;
 
@@ -624,11 +662,11 @@
   HANDLE handle = CreateFileA(fileName->getCString(),
                               GENERIC_READ,
                               FILE_SHARE_READ | FILE_SHARE_WRITE,
-                              NULL,
+                              nullptr,
                               OPEN_EXISTING,
-                              FILE_ATTRIBUTE_NORMAL, NULL);
+                              FILE_ATTRIBUTE_NORMAL, nullptr);
   
-  return handle == INVALID_HANDLE_VALUE ? NULL : new GooFile(handle);
+  return handle == INVALID_HANDLE_VALUE ? nullptr : new GooFile(handle);
 }
 
 GooFile* GooFile::open(const wchar_t *fileName) {
@@ -635,13 +673,21 @@
   HANDLE handle = CreateFileW(fileName,
                               GENERIC_READ,
                               FILE_SHARE_READ | FILE_SHARE_WRITE,
-                              NULL,
+                              nullptr,
                               OPEN_EXISTING,
-                              FILE_ATTRIBUTE_NORMAL, NULL);
+                              FILE_ATTRIBUTE_NORMAL, nullptr);
   
-  return handle == INVALID_HANDLE_VALUE ? NULL : new GooFile(handle);
+  return handle == INVALID_HANDLE_VALUE ? nullptr : new GooFile(handle);
 }
 
+bool GooFile::modificationTimeChangedSinceOpen() const
+{
+  struct _FILETIME lastModified;
+  GetFileTime(handle, nullptr, nullptr, &lastModified);
+
+  return modifiedTimeOnOpen.dwHighDateTime != lastModified.dwHighDateTime || modifiedTimeOnOpen.dwLowDateTime != lastModified.dwLowDateTime;
+}
+
 #else
 
 int GooFile::read(char *buf, int n, Goffset offset) const {
@@ -667,9 +713,25 @@
   int fd = ::open(fileName->getCString(), O_RDONLY);
 #endif
   
-  return fd < 0 ? NULL : new GooFile(fd);
+  return fd < 0 ? nullptr : new GooFile(fd);
 }
 
+GooFile::GooFile(int fdA)
+ : fd(fdA)
+{
+    struct stat statbuf;
+    fstat(fd, &statbuf);
+    modifiedTimeOnOpen = mtim(statbuf);
+}
+
+bool GooFile::modificationTimeChangedSinceOpen() const
+{
+    struct stat statbuf;
+    fstat(fd, &statbuf);
+
+    return modifiedTimeOnOpen.tv_sec != mtim(statbuf).tv_sec || modifiedTimeOnOpen.tv_nsec != mtim(statbuf).tv_nsec;
+}
+
 #endif // _WIN32
 
 //------------------------------------------------------------------------
@@ -749,7 +811,7 @@
 }
 
 GDirEntry *GDir::getNextEntry() {
-  GDirEntry *e = NULL;
+  GDirEntry *e = nullptr;
 
 #if defined(_WIN32)
   if (hnd != INVALID_HANDLE_VALUE) {

Modified: trunk/Build/source/libs/poppler/poppler-src/goo/gfile.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/goo/gfile.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/goo/gfile.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -16,7 +16,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2006 Kristian Høgsberg <krh at redhat.com>
-// Copyright (C) 2009, 2011, 2012 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2009, 2011, 2012, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2009 Kovid Goyal <kovid at kovidgoyal.net>
 // Copyright (C) 2013 Adam Reichold <adamreichold at myopera.com>
 // Copyright (C) 2013, 2017 Adrian Johnson <ajohnson at redneon.com>
@@ -23,6 +23,7 @@
 // Copyright (C) 2014 Bogdan Cristea <cristeab at gmail.com>
 // Copyright (C) 2014 Peter Breitenlohner <peb at mppmu.mpg.de>
 // Copyright (C) 2017 Christoph Cullmann <cullmann at kde.org>
+// Copyright (C) 2017 Thomas Freitag <Thomas.Freitag at alfa.de>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -136,6 +137,9 @@
 class GooFile
 {
 public:
+  GooFile(const GooFile &) = delete;
+  GooFile& operator=(const GooFile &other) = delete;
+
   int read(char *buf, int n, Goffset offset) const;
   Goffset size() const;
   
@@ -145,16 +149,23 @@
   static GooFile *open(const wchar_t *fileName);
   
   ~GooFile() { CloseHandle(handle); }
+
+  // Asuming than on windows you can't change files that are already open
+  bool modificationTimeChangedSinceOpen() const;
   
 private:
-  GooFile(HANDLE handleA): handle(handleA) {}
+  GooFile(HANDLE handleA);
   HANDLE handle;
+  struct _FILETIME modifiedTimeOnOpen;
 #else
   ~GooFile() { close(fd); }
+
+  bool modificationTimeChangedSinceOpen() const;
     
 private:
-  GooFile(int fdA) : fd(fdA) {}
+  GooFile(int fdA);
   int fd;
+  struct timespec modifiedTimeOnOpen;
 #endif // _WIN32
 };
 

Modified: trunk/Build/source/libs/poppler/poppler-src/goo/glibc.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/goo/glibc.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/goo/glibc.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -7,6 +7,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright (C) 2016, 2017 Adrian Johnson <ajohnson at redneon.com>
+// Copyright (C) 2017 Albert Astals Cid <aacid at kde.org>
 //
 //========================================================================
 
@@ -17,8 +18,6 @@
 
 #include <time.h>
 
-extern "C" {
-
 #ifndef HAVE_GMTIME_R
 struct tm *gmtime_r(const time_t *timep, struct tm *result);
 #endif
@@ -35,7 +34,5 @@
 char * strtok_r (char *s, const char *delim, char **save_ptr);
 #endif
 
-}
-
 #endif // GLIBC_H
 

Modified: trunk/Build/source/libs/poppler/poppler-src/goo/glibc_strtok_r.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/goo/glibc_strtok_r.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/goo/glibc_strtok_r.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -50,6 +50,7 @@
 // Copyright (C) 2012 Alexey Pavlov <alexpux at gmail.com>
 // Copyright (C) 2012 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2017 Adrian Johnson <ajohnson at redneon.com>
+// Copyright (C) 2017 Pekka Vuorela <pekka.vuorela at jollamobile.com>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -56,6 +57,8 @@
 //
 //========================================================================
 
+#include "glibc.h"
+
 #ifndef HAVE_STRTOK_R
 
 #include <string.h>

Modified: trunk/Build/source/libs/poppler/poppler-src/goo/gmem.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/goo/gmem.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/goo/gmem.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -105,11 +105,11 @@
   void *p;
 
   if (size == 0) {
-    return NULL;
+    return nullptr;
   }
   if (!(p = malloc(size))) {
     fprintf(stderr, "Out of memory\n");
-    if (checkoverflow) return NULL;
+    if (checkoverflow) return nullptr;
     else exit(1);
   }
   return p;
@@ -153,7 +153,7 @@
     if (p) {
       free(p);
     }
-    return NULL;
+    return nullptr;
   }
   if (p) {
     q = realloc(p, size);
@@ -162,7 +162,7 @@
   }
   if (!q) {
     fprintf(stderr, "Out of memory\n");
-    if (checkoverflow) return NULL;
+    if (checkoverflow) return nullptr;
     else exit(1);
   }
   return q;
@@ -181,12 +181,12 @@
   int n;
 
   if (nObjs == 0) {
-    return NULL;
+    return nullptr;
   }
   n = nObjs * objSize;
   if (objSize <= 0 || nObjs < 0 || nObjs >= INT_MAX / objSize) {
     fprintf(stderr, "Bogus memory allocation size\n");
-    if (checkoverflow) return NULL;
+    if (checkoverflow) return nullptr;
     else exit(1);
   }
   return gmalloc(n, checkoverflow);
@@ -204,7 +204,7 @@
   int n = a * b;
   if (b <= 0 || a < 0 || a >= INT_MAX / b) {
     fprintf(stderr, "Bogus memory allocation size\n");
-    if (checkoverflow) return NULL;
+    if (checkoverflow) return nullptr;
     else exit(1);
   }
   return gmallocn(n, c, checkoverflow);
@@ -225,7 +225,7 @@
     if (p) {
       gfree(p);
     }
-    return NULL;
+    return nullptr;
   }
   n = nObjs * objSize;
   if (objSize <= 0 || nObjs < 0 || nObjs >= INT_MAX / objSize) {
@@ -232,7 +232,7 @@
     fprintf(stderr, "Bogus memory allocation size\n");
     if (checkoverflow) {
       gfree(p);
-      return NULL;
+      return nullptr;
     } else {
       exit(1);
     }

Modified: trunk/Build/source/libs/poppler/poppler-src/goo/grandom.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/goo/grandom.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/goo/grandom.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -22,7 +22,7 @@
 
 static void initialize() {
   if (!initialized) {
-    seed = time(NULL);
+    seed = time(nullptr);
     initialized = gTrue;
   }
 }
@@ -49,7 +49,7 @@
 
 static void initialize() {
   if (!initialized) {
-    srand(time(NULL));
+    srand(time(nullptr));
     initialized = gTrue;
   }
 }

Modified: trunk/Build/source/libs/poppler/poppler-src/goo/gstrtod.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/goo/gstrtod.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/goo/gstrtod.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -34,7 +34,7 @@
   
 double gatof(const char *nptr)
 {
-  return gstrtod(nptr, NULL);
+  return gstrtod(nptr, nullptr);
 }
 
 double gstrtod(const char *nptr, char **endptr)
@@ -45,17 +45,17 @@
   const char *decimal_point;
   int decimal_point_len;
   const char *p, *decimal_point_pos;
-  const char *end = NULL; /* Silence gcc */
+  const char *end = nullptr; /* Silence gcc */
   int strtod_errno;
 
-  fail_pos = NULL;
+  fail_pos = nullptr;
 
   locale_data = localeconv ();
   decimal_point = locale_data->decimal_point;
   decimal_point_len = strlen (decimal_point);
 
-  decimal_point_pos = NULL;
-  end = NULL;
+  decimal_point_pos = nullptr;
+  end = nullptr;
 
   if (decimal_point[0] != '.' || decimal_point[1] != 0) {
     p = nptr;

Modified: trunk/Build/source/libs/poppler/poppler-src/gtkdoc.py
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/gtkdoc.py	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/gtkdoc.py	2018-03-18 21:59:37 UTC (rev 47014)
@@ -21,6 +21,7 @@
 import subprocess
 import sys
 
+PY2 = sys.version_info[0] == 2
 
 class GTKDoc(object):
 
@@ -194,14 +195,20 @@
 
         if print_output:
             if stdout:
-                try:
-                    sys.stdout.write(stdout.encode("utf-8"))
-                except UnicodeDecodeError:
+                if PY2:
+                    try:
+                        sys.stdout.write(stdout.encode("utf-8"))
+                    except UnicodeDecodeError:
+                        sys.stdout.write(stdout)
+                else:
                     sys.stdout.write(stdout)
             if stderr:
-                try:
-                    sys.stderr.write(stderr.encode("utf-8"))
-                except UnicodeDecodeError:
+                if PY2:
+                    try:
+                        sys.stderr.write(stderr.encode("utf-8"))
+                    except UnicodeDecodeError:
+                        sys.stderr.write(stderr)
+                else:
                     sys.stderr.write(stderr)
 
         if process.returncode != 0:
@@ -319,9 +326,9 @@
             ldflags = ' "-L%s" %s ' % (self.library_path, additional_ldflags) + ldflags
             current_ld_library_path = env.get('LD_LIBRARY_PATH')
             if current_ld_library_path:
-                env['RUN'] = 'LD_LIBRARY_PATH="%s:%s" ' % (self.library_path, current_ld_library_path)
+                env['LD_LIBRARY_PATH'] = '%s:%s' % (self.library_path, current_ld_library_path)
             else:
-                env['RUN'] = 'LD_LIBRARY_PATH="%s" ' % self.library_path
+                env['LD_LIBRARY_PATH'] = self.library_path
 
         if ldflags:
             env['LDFLAGS'] = '%s %s' % (ldflags, env.get('LDFLAGS', ''))

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Annot.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Annot.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Annot.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -114,7 +114,7 @@
 #define bezierCircle 0.55228475
 
 static AnnotLineEndingStyle parseAnnotLineEndingStyle(GooString *string) {
-  if (string != NULL) {
+  if (string != nullptr) {
     if (!string->cmp("Square")) {
       return annotLineEndingSquare;
     } else if (!string->cmp("Circle")) {
@@ -186,7 +186,7 @@
 }
 
 static PDFRectangle *parseDiffRectangle(Array *array, PDFRectangle *rect) {
-  PDFRectangle *newRect = NULL;
+  PDFRectangle *newRect = nullptr;
   if (array->getLength() == 4) {
     // deltas
     Object obj1;
@@ -224,7 +224,7 @@
                        type == Annot::actionPageOpening ?   "PO" :
                        type == Annot::actionPageClosing ?   "PC" :
                        type == Annot::actionPageVisible ?   "PV" :
-                       type == Annot::actionPageInvisible ? "PI" : NULL);
+                       type == Annot::actionPageInvisible ? "PI" : nullptr);
 
     Object actionObject = additionalActionsObject.dictLookup(key);
     if (actionObject.isDict())
@@ -242,7 +242,7 @@
     const char *key = (type == Annot::actionFieldModified ?  "K" :
                        type == Annot::actionFormatField ?    "F" :
                        type == Annot::actionValidateField ?  "V" :
-                       type == Annot::actionCalculateField ? "C" : NULL);
+                       type == Annot::actionCalculateField ? "C" : nullptr);
 
     Object actionObject = additionalActionsObject.dictLookup(key);
     if (actionObject.isDict())
@@ -284,12 +284,12 @@
 //------------------------------------------------------------------------
 
 AnnotPath::AnnotPath() {
-  coords = NULL;
+  coords = nullptr;
   coordsLength = 0;
 }
 
 AnnotPath::AnnotPath(Array *array) {
-  coords = NULL;
+  coords = nullptr;
   coordsLength = 0;
   parsePathArray(array);
 }
@@ -322,7 +322,7 @@
 AnnotCoord *AnnotPath::getCoord(int coord) const {
   if (coord >= 0 && coord < coordsLength)
     return coords[coord];
-  return NULL;
+  return nullptr;
 }
 
 void AnnotPath::parsePathArray(Array *array) {
@@ -398,7 +398,7 @@
   double quadArray[8];
 
   // default values
-  quadrilaterals = NULL;
+  quadrilaterals = nullptr;
   quadrilateralsLength = 0;
 
   if ((arrayLength % 8) == 0) {
@@ -514,7 +514,7 @@
 AnnotBorder::AnnotBorder() {
   width = 1;
   dashLength = 0;
-  dash = NULL;
+  dash = nullptr;
   style = borderSolid;
 }
 
@@ -892,7 +892,7 @@
 }
 
 GooString * AnnotAppearance::getStateKey(int i) {
-  GooString * res = NULL;
+  GooString * res = nullptr;
   Object obj1 = appearDict.dictLookupNF("N");
   if (obj1.isDict())
     res = new GooString(obj1.dictGetKey(i));
@@ -1018,10 +1018,10 @@
     if (colorComponents->getLength() > 0) {
       borderColor = new AnnotColor(colorComponents);
     } else {
-      borderColor = NULL;
+      borderColor = nullptr;
     }
   } else {
-    borderColor = NULL;
+    borderColor = nullptr;
   }
 
   obj1 = dict->lookup("BG");
@@ -1030,10 +1030,10 @@
     if (colorComponents->getLength() > 0) {
       backColor = new AnnotColor(colorComponents);
     } else {
-      backColor = NULL;
+      backColor = nullptr;
     }
   } else {
-    backColor = NULL;
+    backColor = nullptr;
   }
 
   obj1 = dict->lookup("CA");
@@ -1040,7 +1040,7 @@
   if (obj1.isString()) {
     normalCaption = new GooString(obj1.getString());
   } else {
-    normalCaption = NULL;
+    normalCaption = nullptr;
   }
 
   obj1 = dict->lookup("RC");
@@ -1047,7 +1047,7 @@
   if (obj1.isString()) {
     rolloverCaption = new GooString(obj1.getString());
   } else {
-    rolloverCaption = NULL;
+    rolloverCaption = nullptr;
   }
 
   obj1 = dict->lookup("AC");
@@ -1054,7 +1054,7 @@
   if (obj1.isString()) {
     alternateCaption = new GooString(obj1.getString());
   } else {
-    alternateCaption = NULL;
+    alternateCaption = nullptr;
   }
 
   obj1 = dict->lookup("IF");
@@ -1061,7 +1061,7 @@
   if (obj1.isDict()) {
     iconFit = new AnnotIconFit(obj1.getDict());
   } else {
-    iconFit = NULL;
+    iconFit = nullptr;
   }
 
   obj1 = dict->lookup("TP");
@@ -1198,10 +1198,10 @@
   ok = gTrue;
   doc = docA;
   xref = doc->getXRef();
-  appearStreams = NULL;
-  appearBBox = NULL;
-  appearState = NULL;
-  appearBuf = NULL;
+  appearStreams = nullptr;
+  appearBBox = nullptr;
+  appearState = nullptr;
+  appearBuf = nullptr;
   fontSize = 0;
 
   appearance.setToNull();
@@ -1255,7 +1255,7 @@
   if (obj1.isString()) {
     name = obj1.getString()->copy();
   } else {
-    name = NULL;
+    name = nullptr;
   }
 
   obj1 = dict->lookup("M");
@@ -1262,7 +1262,7 @@
   if (obj1.isString()) {
     modified = obj1.getString()->copy();
   } else {
-    modified = NULL;
+    modified = nullptr;
   }
 
   //----- get the flags
@@ -1310,13 +1310,13 @@
   if (obj1.isArray())
     border = new AnnotBorderArray(obj1.getArray());
   else
-    border = NULL;
+    border = nullptr;
 
   obj1 = dict->lookup("C");
   if (obj1.isArray()) {
     color = new AnnotColor(obj1.getArray());
   } else {
-    color = NULL;
+    color = nullptr;
   }
 
   obj1 = dict->lookup("StructParent");
@@ -1380,7 +1380,7 @@
   /* Set M to current time, unless we are updating M itself */
   if (strcmp(key, "M") != 0) {
     delete modified;
-    modified = timeToDateString(NULL);
+    modified = timeToDateString(nullptr);
 
     annotObj.dictSet("M", Object(modified->copy()));
   }
@@ -1447,7 +1447,7 @@
     update(new_border->getType() == AnnotBorder::typeArray ? "Border" : "BS", std::move(obj1));
     border = new_border;
   } else {
-    border = NULL;
+    border = nullptr;
   }
   invalidateAppearance();
 }
@@ -1461,7 +1461,7 @@
     update ("C", std::move(obj1));
     color = new_color;
   } else {
-    color = NULL;
+    color = nullptr;
   }
   invalidateAppearance();
 }
@@ -1493,7 +1493,7 @@
   appearState = new GooString(state);
 
   delete appearBBox;
-  appearBBox = NULL;
+  appearBBox = nullptr;
 
   update ("AS", Object(objName, state));
 
@@ -1511,13 +1511,13 @@
     appearStreams->removeAllStreams();
   }
   delete appearStreams;
-  appearStreams = NULL;
+  appearStreams = nullptr;
 
   delete appearState;
-  appearState = NULL;
+  appearState = nullptr;
 
   delete appearBBox;
-  appearBBox = NULL;
+  appearBBox = nullptr;
 
   appearance.setToNull();
 
@@ -1811,7 +1811,7 @@
 int Annot::getRotation() const
 {
   Page *pageobj = doc->getPage(page);
-  assert(pageobj != NULL);
+  assert(pageobj != nullptr);
 
   if (flags & flagNoRotate) {
     return (360 - pageobj->getRotate()) % 360;
@@ -1827,7 +1827,7 @@
 
   // draw the appearance stream
   Object obj = appearance.fetch(gfx->getXRef());
-  gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+  gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
       rect->x1, rect->y1, rect->x2, rect->y2, getRotation());
 }
 
@@ -1837,8 +1837,6 @@
 
 AnnotPopup::AnnotPopup(PDFDoc *docA, PDFRectangle *rect) :
     Annot(docA, rect) {
-  Object obj1;
-
   type = typePopup;
 
   annotObj.dictSet ("Subtype", Object(objName, "Popup"));
@@ -1916,7 +1914,7 @@
   if (obj1.isString()) {
     label = obj1.getString()->copy();
   } else {
-    label = NULL;
+    label = nullptr;
   }
 
   obj1 = dict->lookup("Popup");
@@ -1924,7 +1922,7 @@
   if (obj1.isDict() && obj2.isRef()) {
     popup = new AnnotPopup(docA, &obj1, &obj2);
   } else {
-    popup = NULL;
+    popup = nullptr;
   }
 
   obj1 = dict->lookup("CA");
@@ -1938,7 +1936,7 @@
   if (obj1.isString()) {
     date = obj1.getString()->copy();
   } else {
-    date = NULL;
+    date = nullptr;
   }
 
   obj1 = dict->lookupNF("IRT");
@@ -1953,7 +1951,7 @@
   if (obj1.isString()) {
     subject = obj1.getString()->copy();
   } else {
-    subject = NULL;
+    subject = nullptr;
   }
 
   obj1 = dict->lookup("RT");
@@ -2000,7 +1998,7 @@
   // associated with a page, then we need to remove that
   // popup annotation from the page. Otherwise we would have
   // dangling references to it.
-  if (popup != NULL && popup->getPageNum() != 0) {
+  if (popup != nullptr && popup->getPageNum() != 0) {
     Page *pageobj = doc->getPage(popup->getPageNum());
     if (pageobj) {
       pageobj->removeAnnot(popup);
@@ -2019,12 +2017,12 @@
     // add the new popup annotation to the same page.
     if (page != 0) {
       Page *pageobj = doc->getPage(page);
-      assert(pageobj != NULL); // pageobj should exist in doc (see setPage())
+      assert(pageobj != nullptr); // pageobj should exist in doc (see setPage())
 
       pageobj->addAnnot(popup);
     }
   } else {
-    popup = NULL;
+    popup = nullptr;
   }
 }
 
@@ -2047,7 +2045,7 @@
 
 void AnnotMarkup::removeReferencedObjects() {
   Page *pageobj = doc->getPage(page);
-  assert(pageobj != NULL); // We're called when removing an annot from a page
+  assert(pageobj != nullptr); // We're called when removing an annot from a page
 
   // Remove popup
   if (popup) {
@@ -2163,8 +2161,6 @@
 }
 
 void AnnotText::setOpen(GBool openA) {
-  Object obj1;
-
   open = openA;
   update ("Open", Object(open));
 }
@@ -2478,7 +2474,7 @@
       delete appearBuf;
 
       appearBuf = new GooString ("/GS0 gs\n/Fm0 Do");
-      Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL);
+      Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr);
       appearance = createForm(bbox, gFalse, resDict);
     }
     delete appearBuf;
@@ -2487,12 +2483,12 @@
   // draw the appearance stream
   Object obj = appearance.fetch(gfx->getXRef());
   if (appearBBox) {
-    gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+    gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
                    appearBBox->getPageXMin(), appearBBox->getPageYMin(),
                    appearBBox->getPageXMax(), appearBBox->getPageYMax(),
                    getRotation());
   } else {
-    gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+    gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
                    rect->x1, rect->y1, rect->x2, rect->y2, getRotation());
   }
 }
@@ -2502,8 +2498,6 @@
 //------------------------------------------------------------------------
 AnnotLink::AnnotLink(PDFDoc *docA, PDFRectangle *rect) :
     Annot(docA, rect) {
-  Object obj1;
-
   type = typeLink;
   annotObj.dictSet ("Subtype", Object(objName, "Link"));
   initialize (docA, annotObj.getDict());
@@ -2529,7 +2523,7 @@
 void AnnotLink::initialize(PDFDoc *docA, Dict *dict) {
   Object obj1;
 
-  action = NULL;
+  action = nullptr;
 
   // look for destination
   obj1 = dict->lookup("Dest");
@@ -2574,7 +2568,7 @@
   if (obj1.isArray()) {
     quadrilaterals = new AnnotQuadrilaterals(obj1.getArray(), rect);
   } else {
-    quadrilaterals = NULL;
+    quadrilaterals = nullptr;
   }
 
   obj1 = dict->lookup("BS");
@@ -2602,8 +2596,6 @@
 //------------------------------------------------------------------------
 AnnotFreeText::AnnotFreeText(PDFDoc *docA, PDFRectangle *rect, GooString *da) :
     AnnotMarkup(docA, rect) {
-  Object obj1;
-
   type = typeFreeText;
 
   annotObj.dictSet ("Subtype", Object(objName, "FreeText"));
@@ -2657,7 +2649,7 @@
   if (obj1.isString()) {
     styleString = obj1.getString()->copy();
   } else {
-    styleString = NULL;
+    styleString = nullptr;
   }
 
   obj1 = dict->lookup("CL");
@@ -2679,7 +2671,7 @@
       calloutLine = new AnnotCalloutLine(x1, y1, x2, y2);
     }
   } else {
-    calloutLine = NULL;
+    calloutLine = nullptr;
   }
 
   obj1 = dict->lookup("IT");
@@ -2711,7 +2703,7 @@
   if (obj1.isDict()) {
     borderEffect = new AnnotBorderEffect(obj1.getDict());
   } else {
-    borderEffect = NULL;
+    borderEffect = nullptr;
   }
 
   obj1 = dict->lookup("RD");
@@ -2718,7 +2710,7 @@
   if (obj1.isArray()) {
     rectangle = parseDiffRectangle(obj1.getArray(), rect);
   } else {
-    rectangle = NULL;
+    rectangle = nullptr;
   }
 
   obj1 = dict->lookup("LE");
@@ -2749,7 +2741,6 @@
 }
 
 void AnnotFreeText::setQuadding(AnnotFreeTextQuadding new_quadding) {
-  Object obj1;
   quadding = new_quadding;
   update ("Q", Object((int)quadding));
   invalidateAppearance();
@@ -2775,9 +2766,9 @@
   delete calloutLine;
 
   Object obj1;
-  if (line == NULL) {
+  if (line == nullptr) {
     obj1.setToNull();
-    calloutLine = NULL;
+    calloutLine = nullptr;
   } else {
     double x1 = line->getX1(), y1 = line->getY1();
     double x2 = line->getX2(), y2 = line->getY2();
@@ -2834,7 +2825,7 @@
 
 void AnnotFreeText::parseAppearanceString(GooString *da, double &fontsize, AnnotColor* &fontcolor) {
   fontsize = -1;
-  fontcolor = NULL;
+  fontcolor = nullptr;
   if (da) {
     GooList * daToks = new GooList();
     int i = FormFieldText::tokenizeDA(da, daToks, "Tf");
@@ -2845,7 +2836,7 @@
     }
     // Scan backwards: we are looking for the last set value
     for (i = daToks->getLength()-1; i >= 0; --i) {
-      if (fontcolor == NULL) {
+      if (fontcolor == nullptr) {
         if (!((GooString *)daToks->get(i))->cmp("g") && i >= 1) {
           fontcolor = new AnnotColor(gatof(( (GooString *)daToks->get(i-1) )->getCString()));
         } else if (!((GooString *)daToks->get(i))->cmp("rg") && i >= 3) {
@@ -2886,7 +2877,7 @@
   // Default values
   if (fontsize <= 0)
     fontsize = 10;
-  if (fontcolor == NULL)
+  if (fontcolor == nullptr)
     fontcolor = new AnnotColor(0, 0, 0); // Black
   if (!contents)
     contents = new GooString ();
@@ -2925,7 +2916,7 @@
   while (i < contents->getLength()) {
     GooString out;
     double linewidth, xpos;
-    layoutText(contents, &out, &i, font, &linewidth, textwidth/fontsize, NULL, gFalse);
+    layoutText(contents, &out, &i, font, &linewidth, textwidth/fontsize, nullptr, gFalse);
     linewidth *= fontsize;
     switch (quadding) {
     case quaddingCentered:
@@ -2960,7 +2951,7 @@
     delete appearBuf;
 
     appearBuf = new GooString ("/GS0 gs\n/Fm0 Do");
-    Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL);
+    Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr);
     appearance = createForm(bbox, gFalse, resDict);
   }
   delete appearBuf;
@@ -2977,7 +2968,7 @@
 
   // draw the appearance stream
   Object obj = appearance.fetch(gfx->getXRef());
-  gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+  gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
                  rect->x1, rect->y1, rect->x2, rect->y2, getRotation());
 }
 
@@ -2996,8 +2987,6 @@
 
 AnnotLine::AnnotLine(PDFDoc *docA, PDFRectangle *rect) :
     AnnotMarkup(docA, rect) {
-  Object obj1;
-
   type = typeLine;
   annotObj.dictSet ("Subtype", Object(objName, "Line"));
 
@@ -3065,7 +3054,7 @@
   if (obj1.isArray()) {
     interiorColor = new AnnotColor(obj1.getArray());
   } else {
-    interiorColor = NULL;
+    interiorColor = nullptr;
   }
 
   obj1 = dict->lookup("LL");
@@ -3134,9 +3123,9 @@
 
   obj1 = dict->lookup("Measure");
   if (obj1.isDict()) {
-    measure = NULL;
+    measure = nullptr;
   } else {
-    measure = NULL;
+    measure = nullptr;
   }
 
   obj1 = dict->lookup("CO");
@@ -3202,7 +3191,7 @@
     update ("IC", std::move(obj1));
     interiorColor = new_color;
   } else {
-    interiorColor = NULL;
+    interiorColor = nullptr;
   }
   invalidateAppearance();
 }
@@ -3289,7 +3278,7 @@
     while (i < contents->getLength()) {
       GooString out;
       double linewidth;
-      layoutText(contents, &out, &i, font, &linewidth, 0, NULL, gFalse);
+      layoutText(contents, &out, &i, font, &linewidth, 0, nullptr, gFalse);
       linewidth *= fontsize;
       if (linewidth > captionwidth) {
         captionwidth = linewidth;
@@ -3303,7 +3292,7 @@
     }
   } else {
     fontResDict = nullptr;
-    font = NULL;
+    font = nullptr;
   }
 
   // Draw main segment
@@ -3358,7 +3347,7 @@
     while (i < contents->getLength()) {
       GooString out;
       double linewidth, xpos;
-      layoutText(contents, &out, &i, font, &linewidth, 0, NULL, gFalse);
+      layoutText(contents, &out, &i, font, &linewidth, 0, nullptr, gFalse);
       linewidth *= fontsize;
       xpos = (captionwidth - linewidth) / 2;
       appearBuf->appendf("{0:.2f} {1:.2f} Td\n", xpos - xposPrev, -fontsize);
@@ -3400,7 +3389,7 @@
     delete appearBuf;
 
     appearBuf = new GooString ("/GS0 gs\n/Fm0 Do");
-    Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL);
+    Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr);
     appearance = createForm(bbox, gFalse, resDict);
   }
   delete appearBuf;
@@ -3418,12 +3407,12 @@
   // draw the appearance stream
   Object obj = appearance.fetch(gfx->getXRef());
   if (appearBBox) {
-    gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+    gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
                    appearBBox->getPageXMin(), appearBBox->getPageYMin(),
                    appearBBox->getPageXMax(), appearBBox->getPageYMax(),
                    getRotation());
   } else {
-    gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+    gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
                    rect->x1, rect->y1, rect->x2, rect->y2, getRotation());
   }
 }
@@ -3442,8 +3431,6 @@
 //------------------------------------------------------------------------
 AnnotTextMarkup::AnnotTextMarkup(PDFDoc *docA, PDFRectangle *rect, AnnotSubtype subType) :
     AnnotMarkup(docA, rect) {
-  Object obj1;
-
   switch (subType) {
     case typeHighlight:
       annotObj.dictSet ("Subtype", Object(objName, "Highlight"));
@@ -3500,7 +3487,7 @@
     quadrilaterals = new AnnotQuadrilaterals(obj1.getArray(), rect);
   } else {
     error(errSyntaxError, -1, "Bad Annot Text Markup QuadPoints");
-    quadrilaterals = NULL;
+    quadrilaterals = nullptr;
     ok = gFalse;
   }
 }
@@ -3695,11 +3682,11 @@
     bbox[1] = appearBBox->getPageYMin();
     bbox[2] = appearBBox->getPageXMax();
     bbox[3] = appearBBox->getPageYMax();
-    aStream = createForm(bbox, gTrue, NULL);
+    aStream = createForm(bbox, gTrue, nullptr);
     delete appearBuf;
 
     appearBuf = new GooString ("/GS0 gs\n/Fm0 Do");
-    Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", 1, blendMultiply ? "Multiply" : NULL);
+    Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", 1, blendMultiply ? "Multiply" : nullptr);
     if (ca == 1) {
       appearance = createForm(bbox, gFalse, resDict);
     } else {
@@ -3707,7 +3694,7 @@
       delete appearBuf;
 
       appearBuf = new GooString ("/GS0 gs\n/Fm0 Do");
-      Dict *resDict2 = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL);
+      Dict *resDict2 = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr);
       appearance = createForm(bbox, gFalse, resDict2);
     }
     delete appearBuf;
@@ -3716,12 +3703,12 @@
   // draw the appearance stream
   Object obj = appearance.fetch(gfx->getXRef());
   if (appearBBox) {
-    gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+    gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
                    appearBBox->getPageXMin(), appearBBox->getPageYMin(),
                    appearBBox->getPageXMax(), appearBBox->getPageYMax(),
                    getRotation());
   } else {
-    gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+    gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
                    rect->x1, rect->y1, rect->x2, rect->y2, getRotation());
   }
 }
@@ -3733,7 +3720,7 @@
 AnnotWidget::AnnotWidget(PDFDoc *docA, Object *dictObject, Object *obj) :
     Annot(docA, dictObject, obj) {
   type = typeWidget;
-  field = NULL;
+  field = nullptr;
   initialize(docA, dictObject->getDict());
 }
 
@@ -3781,10 +3768,10 @@
   if (obj1.isDict()) {
     appearCharacs = new AnnotAppearanceCharacs(obj1.getDict());
   } else {
-    appearCharacs = NULL;
+    appearCharacs = nullptr;
   }
 
-  action = NULL;
+  action = nullptr;
   obj1 = dict->lookup("A");
   if (obj1.isDict()) {
     action = LinkAction::parseAction(&obj1, doc->getCatalog()->getBaseURI());
@@ -3794,9 +3781,9 @@
 
   obj1 = dict->lookup("Parent");
   if (obj1.isDict()) {
-    parent = NULL;
+    parent = nullptr;
   } else {
-    parent = NULL;
+    parent = nullptr;
   }
 
   obj1 = dict->lookup("BS");
@@ -4008,13 +3995,13 @@
 
   // Compute the actual width and character count of the final string, based on
   // breakpoint, if this information is requested by the caller.
-  if (width != NULL || charCount != NULL) {
+  if (width != nullptr || charCount != nullptr) {
     char *s = outBuf->getCString();
     int len = outBuf->getLength();
 
-    if (width != NULL)
+    if (width != nullptr)
       *width = 0.0;
-    if (charCount != NULL)
+    if (charCount != nullptr)
       *charCount = 0;
 
     while (len > 0) {
@@ -4025,9 +4012,9 @@
         break;
       }
 
-      if (width != NULL)
+      if (width != nullptr)
         *width += dx;
-      if (charCount != NULL)
+      if (charCount != nullptr)
         *charCount += 1;
 
       s += n;
@@ -4104,7 +4091,7 @@
       }
     }
   } else {
-    daToks = NULL;
+    daToks = nullptr;
   }
 
   // force ZapfDingbats
@@ -4118,7 +4105,7 @@
     }
   }
   // get the font and font size
-  font = NULL;
+  font = nullptr;
   fontSize = 0;
   if (tfPos >= 0) {
     tok = (GooString *)daToks->get(tfPos);
@@ -4214,7 +4201,7 @@
         y = dy - 3;
         i = 0;
         while (i < text->getLength()) {
-          layoutText(text, convertedText, &i, font, &w, wMax / fontSize, NULL,
+          layoutText(text, convertedText, &i, font, &w, wMax / fontSize, nullptr,
                      forceZapfDingbats);
           y -= fontSize;
         }
@@ -4261,7 +4248,7 @@
     i = 0;
     xPrev = 0;
     while (i < text->getLength()) {
-      layoutText(text, convertedText, &i, font, &w, wMax / fontSize, NULL,
+      layoutText(text, convertedText, &i, font, &w, wMax / fontSize, nullptr,
                  forceZapfDingbats);
       w *= fontSize;
 
@@ -4314,7 +4301,7 @@
       }
 
       i = 0;
-      layoutText(text, convertedText, &i, font, NULL, 0.0, &charCount,
+      layoutText(text, convertedText, &i, font, nullptr, 0.0, &charCount,
                  forceZapfDingbats);
       if (charCount > comb)
         charCount = comb;
@@ -4391,7 +4378,7 @@
       // regular (non-comb) formatting
     } else {
       i = 0;
-      layoutText(text, convertedText, &i, font, &w, 0.0, NULL,
+      layoutText(text, convertedText, &i, font, &w, 0.0, nullptr,
                  forceZapfDingbats);
 
       // compute font autosize
@@ -4508,11 +4495,11 @@
       }
     }
   } else {
-    daToks = NULL;
+    daToks = nullptr;
   }
 
   // get the font and font size
-  font = NULL;
+  font = nullptr;
   fontSize = 0;
   if (tfPos >= 0) {
     tok = (GooString *)daToks->get(tfPos);
@@ -4545,7 +4532,7 @@
     wMax = 0;
     for (i = 0; i < fieldChoice->getNumChoices(); ++i) {
       j = 0;
-      if (fieldChoice->getChoice(i) == NULL) {
+      if (fieldChoice->getChoice(i) == nullptr) {
         error(errSyntaxError, -1, "Invalid annotation listbox");
         if (daToks) {
           deleteGooList(daToks, GooString);
@@ -4553,7 +4540,7 @@
         delete convertedText;
         return;
       }
-      layoutText(fieldChoice->getChoice(i), convertedText, &j, font, &w, 0.0, NULL, gFalse);
+      layoutText(fieldChoice->getChoice(i), convertedText, &j, font, &w, 0.0, nullptr, gFalse);
       if (w > wMax) {
         wMax = w;
       }
@@ -4591,7 +4578,7 @@
 
     // compute text width and start position
     j = 0;
-    layoutText(fieldChoice->getChoice(i), convertedText, &j, font, &w, 0.0, NULL, gFalse);
+    layoutText(fieldChoice->getChoice(i), convertedText, &j, font, &w, 0.0, nullptr, gFalse);
     w *= fontSize;
     switch (quadding) {
     case quaddingLeftJustified:
@@ -4668,7 +4655,7 @@
   double dy = rect->y2 - rect->y1;
 
   // radio buttons with no caption have a round border
-  GBool hasCaption = appearCharacs->getNormalCaption() != NULL;
+  GBool hasCaption = appearCharacs->getNormalCaption() != nullptr;
   if (field->getType() == formButton &&
       static_cast<FormFieldButton*>(field)->getButtonType() == formButtonRadio && !hasCaption) {
     double r = 0.5 * (dx < dy ? dx : dy);
@@ -4757,7 +4744,7 @@
 }
 
 void AnnotWidget::drawFormFieldButton(GfxResources *resources, GooString *da) {
-  GooString *caption = NULL;
+  GooString *caption = nullptr;
   if (appearCharacs)
     caption = appearCharacs->getNormalCaption();
 
@@ -4978,7 +4965,7 @@
     gfx->pushResources(dict);
     delete dict;
   }
-  gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+  gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
 		 rect->x1, rect->y1, rect->x2, rect->y2, getRotation());
   if (addDingbatsResource) {
     gfx->popResources();
@@ -4991,8 +4978,6 @@
 //------------------------------------------------------------------------
 AnnotMovie::AnnotMovie(PDFDoc *docA, PDFRectangle *rect, Movie *movieA) :
     Annot(docA, rect) {
-  Object obj1;
-
   type = typeMovie;
   annotObj.dictSet ("Subtype", Object(objName, "Movie"));
 
@@ -5021,7 +5006,7 @@
   if (obj1.isString()) {
     title = obj1.getString()->copy();
   } else {
-    title = NULL;
+    title = nullptr;
   }
 
   Object movieDict = dict->lookup("Movie");
@@ -5033,12 +5018,12 @@
       movie = new Movie (&movieDict);
     if (!movie->isOk()) {
       delete movie;
-      movie = NULL;
+      movie = nullptr;
       ok = gFalse;
     }
   } else {
     error(errSyntaxError, -1, "Bad Annot Movie");
-    movie = NULL;
+    movie = nullptr;
     ok = gFalse;
   }
 }
@@ -5118,7 +5103,7 @@
 
   // draw the appearance stream
   Object obj = appearance.fetch(gfx->getXRef());
-  gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+  gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
 		 rect->x1, rect->y1, rect->x2, rect->y2, getRotation());
 }
 
@@ -5127,8 +5112,6 @@
 //------------------------------------------------------------------------
 AnnotScreen::AnnotScreen(PDFDoc *docA, PDFRectangle *rect) :
     Annot(docA, rect) {
-  Object obj1;
-
   type = typeScreen;
 
   annotObj.dictSet ("Subtype", Object(objName, "Screen"));
@@ -5150,13 +5133,13 @@
 void AnnotScreen::initialize(PDFDoc *docA, Dict* dict) {
   Object obj1;
 
-  title = NULL;
+  title = nullptr;
   obj1 = dict->lookup("T");
   if (obj1.isString()) {
     title = obj1.getString()->copy();
   }
 
-  action = NULL;
+  action = nullptr;
   obj1 = dict->lookup("A");
   if (obj1.isDict()) {
     action = LinkAction::parseAction(&obj1, doc->getCatalog()->getBaseURI());
@@ -5163,7 +5146,7 @@
     if (action && action->getKind() == actionRendition && page == 0) {
       error (errSyntaxError, -1, "Invalid Rendition action: associated screen annotation without P");
       delete action;
-      action = NULL;
+      action = nullptr;
       ok = gFalse;
     }
   }
@@ -5170,7 +5153,7 @@
 
   additionalActions = dict->lookupNF("AA");
 
-  appearCharacs = NULL;
+  appearCharacs = nullptr;
   obj1 = dict->lookup("MK");
   if (obj1.isDict()) {
     appearCharacs = new AnnotAppearanceCharacs(obj1.getDict());
@@ -5180,7 +5163,7 @@
 LinkAction* AnnotScreen::getAdditionalAction(AdditionalActionsType type)
 {
   if (type == actionFocusIn || type == actionFocusOut) // not defined for screen annotation
-    return NULL;
+    return nullptr;
 
   return ::getAdditionalAction(type, &additionalActions, doc);
 }
@@ -5190,8 +5173,6 @@
 //------------------------------------------------------------------------
 AnnotStamp::AnnotStamp(PDFDoc *docA, PDFRectangle *rect) :
   AnnotMarkup(docA, rect) {
-  Object obj1;
-
   type = typeStamp;
   annotObj.dictSet ("Subtype", Object(objName, "Stamp"));
   initialize(docA, annotObj.getDict());
@@ -5235,8 +5216,6 @@
 //------------------------------------------------------------------------
 AnnotGeometry::AnnotGeometry(PDFDoc *docA, PDFRectangle *rect, AnnotSubtype subType) :
     AnnotMarkup(docA, rect) {
-  Object obj1;
-
   switch (subType) {
     case typeSquare:
       annotObj.dictSet ("Subtype", Object(objName, "Square"));
@@ -5281,7 +5260,7 @@
   if (obj1.isArray()) {
     interiorColor = new AnnotColor(obj1.getArray());
   } else {
-    interiorColor = NULL;
+    interiorColor = nullptr;
   }
 
   obj1 = dict->lookup("BS");
@@ -5296,10 +5275,10 @@
   if (obj1.isDict()) {
     borderEffect = new AnnotBorderEffect(obj1.getDict());
   } else {
-    borderEffect = NULL;
+    borderEffect = nullptr;
   }
 
-  geometryRect = NULL;
+  geometryRect = nullptr;
   obj1 = dict->lookup("RD");
   if (obj1.isArray()) {
     geometryRect = parseDiffRectangle(obj1.getArray(), rect);
@@ -5333,7 +5312,7 @@
     update ("IC", std::move(obj1));
     interiorColor = new_color;
   } else {
-    interiorColor = NULL;
+    interiorColor = nullptr;
   }
   invalidateAppearance();
 }
@@ -5430,7 +5409,7 @@
       delete appearBuf;
 
       appearBuf = new GooString ("/GS0 gs\n/Fm0 Do");
-      Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL);
+      Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr);
       appearance = createForm(bbox, gFalse, resDict);
     }
     delete appearBuf;
@@ -5438,7 +5417,7 @@
 
   // draw the appearance stream
   Object obj = appearance.fetch(gfx->getXRef());
-  gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+  gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
 		 rect->x1, rect->y1, rect->x2, rect->y2, getRotation());
 }
 
@@ -5447,8 +5426,6 @@
 //------------------------------------------------------------------------
 AnnotPolygon::AnnotPolygon(PDFDoc *docA, PDFRectangle *rect, AnnotSubtype subType) :
     AnnotMarkup(docA, rect) {
-  Object obj1;
-
   switch (subType) {
     case typePolygon:
       annotObj.dictSet ("Subtype", Object(objName, "Polygon"));
@@ -5530,7 +5507,7 @@
   if (obj1.isArray()) {
     interiorColor = new AnnotColor(obj1.getArray());
   } else {
-    interiorColor = NULL;
+    interiorColor = nullptr;
   }
 
   obj1 = dict->lookup("BS");
@@ -5545,7 +5522,7 @@
   if (obj1.isDict()) {
     borderEffect = new AnnotBorderEffect(obj1.getDict());
   } else {
-    borderEffect = NULL;
+    borderEffect = nullptr;
   }
 
   obj1 = dict->lookup("IT");
@@ -5618,7 +5595,7 @@
     update ("IC", std::move(obj1));
     interiorColor = new_color;
   } else {
-    interiorColor = NULL;
+    interiorColor = nullptr;
   }
   invalidateAppearance();
 }
@@ -5692,7 +5669,7 @@
       delete appearBuf;
 
       appearBuf = new GooString ("/GS0 gs\n/Fm0 Do");
-      Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL);
+      Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr);
       appearance = createForm(bbox, gFalse, resDict);
     }
     delete appearBuf;
@@ -5701,12 +5678,12 @@
   // draw the appearance stream
   Object obj = appearance.fetch(gfx->getXRef());
   if (appearBBox) {
-    gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+    gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
                    appearBBox->getPageXMin(), appearBBox->getPageYMin(),
                    appearBBox->getPageXMax(), appearBBox->getPageYMax(),
                    getRotation());
   } else {
-    gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+    gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
                    rect->x1, rect->y1, rect->x2, rect->y2, getRotation());
   }
 }
@@ -5716,8 +5693,6 @@
 //------------------------------------------------------------------------
 AnnotCaret::AnnotCaret(PDFDoc *docA, PDFRectangle *rect) :
     AnnotMarkup(docA, rect) {
-  Object obj1;
-
   type = typeCaret;
 
   annotObj.dictSet ("Subtype", Object(objName, "Caret"));
@@ -5752,7 +5727,7 @@
   if (obj1.isArray()) {
     caretRect = parseDiffRectangle(obj1.getArray(), rect);
   } else {
-    caretRect = NULL;
+    caretRect = nullptr;
   }
 }
 
@@ -5767,14 +5742,11 @@
 //------------------------------------------------------------------------
 AnnotInk::AnnotInk(PDFDoc *docA, PDFRectangle *rect) :
     AnnotMarkup(docA, rect) {
-  Object obj1;
-
   type = typeInk;
 
   annotObj.dictSet ("Subtype", Object(objName, "Ink"));
 
   // Store dummy path with one null vertex only
-  Object obj3, obj4;
   Array *inkList = new Array(doc->getXRef());
   Array *vList = new Array(doc->getXRef());
   vList->add(Object(0.));
@@ -5803,7 +5775,7 @@
     parseInkList(obj1.getArray());
   } else {
     inkListLength = 0;
-    inkList = NULL;
+    inkList = nullptr;
     error(errSyntaxError, -1, "Bad Annot Ink List");
     ok = gFalse;
   }
@@ -5906,7 +5878,7 @@
       delete appearBuf;
 
       appearBuf = new GooString ("/GS0 gs\n/Fm0 Do");
-      Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL);
+      Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr);
       appearance = createForm(bbox, gFalse, resDict);
     }
     delete appearBuf;
@@ -5915,12 +5887,12 @@
   // draw the appearance stream
   Object obj = appearance.fetch(gfx->getXRef());
   if (appearBBox) {
-    gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+    gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
                    appearBBox->getPageXMin(), appearBBox->getPageYMin(),
                    appearBBox->getPageXMax(), appearBBox->getPageYMax(),
                    getRotation());
   } else {
-    gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+    gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
                    rect->x1, rect->y1, rect->x2, rect->y2, getRotation());
   }
 }
@@ -5930,8 +5902,6 @@
 //------------------------------------------------------------------------
 AnnotFileAttachment::AnnotFileAttachment(PDFDoc *docA, PDFRectangle *rect, GooString *filename) :
     AnnotMarkup(docA, rect) {
-  Object obj1;
-
   type = typeFileAttachment;
 
   annotObj.dictSet("Subtype", Object(objName, "FileAttachment"));
@@ -6118,7 +6088,7 @@
       delete appearBuf;
 
       appearBuf = new GooString ("/GS0 gs\n/Fm0 Do");
-      Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL);
+      Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr);
       appearance = createForm(bbox, gFalse, resDict);
     }
     delete appearBuf;
@@ -6126,7 +6096,7 @@
 
   // draw the appearance stream
   Object obj = appearance.fetch(gfx->getXRef());
-  gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+  gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
 		 rect->x1, rect->y1, rect->x2, rect->y2, getRotation());
 }
 
@@ -6135,8 +6105,6 @@
 //------------------------------------------------------------------------
 AnnotSound::AnnotSound(PDFDoc *docA, PDFRectangle *rect, Sound *soundA) :
     AnnotMarkup(docA, rect) {
-  Object obj1;
-
   type = typeSound;
 
   annotObj.dictSet ("Subtype", Object(objName, "Sound"));
@@ -6271,7 +6239,7 @@
       delete appearBuf;
 
       appearBuf = new GooString ("/GS0 gs\n/Fm0 Do");
-      Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL);
+      Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr);
       appearance = createForm(bbox, gFalse, resDict);
     }
     delete appearBuf;
@@ -6279,7 +6247,7 @@
 
   // draw the appearance stream
   obj = appearance.fetch(gfx->getXRef());
-  gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color,
+  gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color,
 		 rect->x1, rect->y1, rect->x2, rect->y2, getRotation());
 }
 
@@ -6288,8 +6256,6 @@
 //------------------------------------------------------------------------
 Annot3D::Annot3D(PDFDoc *docA, PDFRectangle *rect) :
     Annot(docA, rect) {
-  Object obj1;
-
   type = type3D;
 
   annotObj.dictSet ("Subtype", Object(objName, "3D"));
@@ -6313,7 +6279,7 @@
   if (obj1.isDict()) {
     activation = new Activation(obj1.getDict());
   } else {
-    activation = NULL;
+    activation = nullptr;
   }
 }
 
@@ -6406,8 +6372,6 @@
 //------------------------------------------------------------------------
 AnnotRichMedia::AnnotRichMedia(PDFDoc *docA, PDFRectangle *rect) :
     Annot(docA, rect) {
-  Object obj1;
-
   type = typeRichMedia;
 
   annotObj.dictSet ("Subtype", Object(objName, "RichMedia"));
@@ -6431,7 +6395,7 @@
   if (obj1.isDict()) {
     content = new AnnotRichMedia::Content(obj1.getDict());
   } else {
-    content = NULL;
+    content = nullptr;
   }
 
   obj1 = dict->lookup("RichMediaSettings");
@@ -6438,7 +6402,7 @@
   if (obj1.isDict()) {
     settings = new AnnotRichMedia::Settings(obj1.getDict());
   } else {
-    settings = NULL;
+    settings = nullptr;
   }
 }
 
@@ -6455,7 +6419,7 @@
   if (obj1.isDict()) {
     activation = new AnnotRichMedia::Activation(obj1.getDict());
   } else {
-    activation = NULL;
+    activation = nullptr;
   }
 
   obj1 = dict->lookup("Deactivation");
@@ -6462,7 +6426,7 @@
   if (obj1.isDict()) {
     deactivation = new AnnotRichMedia::Deactivation(obj1.getDict());
   } else {
-    deactivation = NULL;
+    deactivation = nullptr;
   }
 }
 
@@ -6537,16 +6501,16 @@
       if (obj2.isDict()) {
         configurations[i] = new AnnotRichMedia::Configuration(obj2.getDict());
       } else {
-        configurations[i] = NULL;
+        configurations[i] = nullptr;
       }
     }
   } else {
     nConfigurations = 0;
-    configurations = NULL;
+    configurations = nullptr;
   }
 
   nAssets = 0;
-  assets = NULL;
+  assets = nullptr;
   obj1 = dict->lookup("Assets");
   if (obj1.isDict()) {
     Object obj2 = obj1.getDict()->lookup("Names");
@@ -6590,7 +6554,7 @@
 
 AnnotRichMedia::Configuration* AnnotRichMedia::Content::getConfiguration(int index) const {
   if (index < 0 || index >= nConfigurations)
-    return NULL;
+    return nullptr;
 
   return configurations[index];
 }
@@ -6601,13 +6565,13 @@
 
 AnnotRichMedia::Asset* AnnotRichMedia::Content::getAsset(int index) const {
   if (index < 0 || index >= nAssets)
-    return NULL;
+    return nullptr;
 
   return assets[index];
 }
 
 AnnotRichMedia::Asset::Asset()
-  : name(NULL)
+  : name(nullptr)
 {
 }
 
@@ -6637,11 +6601,11 @@
       if (obj2.isDict()) {
         instances[i] = new AnnotRichMedia::Instance(obj2.getDict());
       } else {
-        instances[i] = NULL;
+        instances[i] = nullptr;
       }
     }
   } else {
-    instances = NULL;
+    instances = nullptr;
   }
 
   obj1 = dict->lookup("Name");
@@ -6648,7 +6612,7 @@
   if (obj1.isString()) {
     name = new GooString(obj1.getString());
   } else {
-    name = NULL;
+    name = nullptr;
   }
 
   obj1 = dict->lookup("Subtype");
@@ -6710,7 +6674,7 @@
 
 AnnotRichMedia::Instance* AnnotRichMedia::Configuration::getInstance(int index) const {
   if (index < 0 || index >= nInstances)
-    return NULL;
+    return nullptr;
 
   return instances[index];
 }
@@ -6744,7 +6708,7 @@
   if (obj1.isDict()) {
     params = new AnnotRichMedia::Params(obj1.getDict());
   } else {
-    params = NULL;
+    params = nullptr;
   }
 }
 
@@ -6767,7 +6731,7 @@
   if (obj1.isString()) {
     flashVars = new GooString(obj1.getString());
   } else {
-    flashVars = NULL;
+    flashVars = nullptr;
   }
 }
 
@@ -6789,7 +6753,7 @@
   int i;
 
   doc = docA;
-  annots = NULL;
+  annots = nullptr;
   size = 0;
   nAnnots = 0;
 
@@ -6920,7 +6884,7 @@
       if (obj2.isNull())
         annot = new AnnotPopup(doc, dictObject, obj);
       else
-        annot = NULL;
+        annot = nullptr;
     } else {
       annot = new Annot(doc, dictObject, obj);
     }
@@ -6937,7 +6901,7 @@
       return annots[i];
     }
   }
-  return NULL;
+  return nullptr;
 }
 
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Annot.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Annot.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Annot.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -21,7 +21,7 @@
 // Copyright (C) 2008 Hugo Mercier <hmercier31 at gmail.com>
 // Copyright (C) 2008 Pino Toscano <pino at kde.org>
 // Copyright (C) 2008 Tomas Are Haavet <tomasare at gmail.com>
-// Copyright (C) 2009-2011, 2013, 2016, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2009-2011, 2013, 2016-2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2012, 2013 Fabio D'Urso <fabiodurso at hotmail.it>
 // Copyright (C) 2012, 2015 Tobias Koenig <tokoe at kdab.com>
 // Copyright (C) 2013 Thomas Freitag <Thomas.Freitag at alfa.de>
@@ -105,6 +105,9 @@
   AnnotPath(AnnotCoord **coords, int coordLength);
   ~AnnotPath();
 
+  AnnotPath(const AnnotPath &) = delete;
+  AnnotPath& operator=(const AnnotPath &other) = delete;
+
   double getX(int coord) const;
   double getY(int coord) const;
   AnnotCoord *getCoord(int coord) const;
@@ -126,6 +129,9 @@
   AnnotCalloutLine(double x1, double y1, double x2, double y2);
   virtual ~AnnotCalloutLine() { }
 
+  AnnotCalloutLine(const AnnotCalloutLine &) = delete;
+  AnnotCalloutLine& operator=(const AnnotCalloutLine &other) = delete;
+
   double getX1() const { return coord1.getX(); }
   double getY1() const { return coord1.getY(); }
   double getX2() const { return coord2.getX(); }
@@ -195,6 +201,9 @@
   AnnotQuadrilaterals(AnnotQuadrilateral **quads, int quadsLength);
   ~AnnotQuadrilaterals();
 
+  AnnotQuadrilaterals(const AnnotQuadrilaterals &) = delete;
+  AnnotQuadrilaterals& operator=(const AnnotQuadrilaterals &other) = delete;
+
   double getX1(int quadrilateral);
   double getY1(int quadrilateral);
   double getX2(int quadrilateral);
@@ -231,6 +240,9 @@
 
   virtual ~AnnotBorder();
 
+  AnnotBorder(const AnnotBorder &) = delete;
+  AnnotBorder& operator=(const AnnotBorder &other) = delete;
+
   virtual void setWidth(double new_width) { width = new_width; }
 
   virtual AnnotBorderType getType() const = 0;
@@ -429,6 +441,9 @@
   AnnotAppearanceCharacs(Dict *dict);
   ~AnnotAppearanceCharacs();
 
+  AnnotAppearanceCharacs(const AnnotAppearanceCharacs &) = delete;
+  AnnotAppearanceCharacs& operator=(const AnnotAppearanceCharacs &) = delete;
+
   int getRotation() { return rotation; }
   AnnotColor *getBorderColor() { return borderColor; }
   AnnotColor *getBackColor() { return backColor; }
@@ -1420,6 +1435,9 @@
     Params(Dict *dict);
     ~Params();
 
+    Params(const Params &) = delete;
+    Params& operator=(const Params &) = delete;
+
     GooString* getFlashVars() const;
 
   private:
@@ -1439,6 +1457,9 @@
     Instance(Dict *dict);
     ~Instance();
 
+    Instance(const Instance &) = delete;
+    Instance& operator=(const Instance &) = delete;
+
     Type getType() const;
     Params* getParams() const;
 
@@ -1460,6 +1481,9 @@
     Configuration(Dict *dict);
     ~Configuration();
 
+    Configuration(const Configuration &) = delete;
+    Configuration& operator=(const Configuration &) = delete;
+
     Type getType() const;
     GooString* getName() const;
     int getInstancesCount() const;
@@ -1480,6 +1504,9 @@
     Asset();
     ~Asset();
 
+    Asset(const Asset &) = delete;
+    Asset& operator=(const Asset &) = delete;
+
     GooString* getName() const;
     Object* getFileSpec() const;
 
@@ -1495,6 +1522,9 @@
     Content(Dict *dict);
     ~Content();
 
+    Content(const Content &) = delete;
+    Content& operator=(const Content &) = delete;
+
     int getConfigurationsCount() const;
     Configuration* getConfiguration(int index) const;
 
@@ -1549,6 +1579,9 @@
     Settings(Dict *dict);
     ~Settings();
 
+    Settings(const Settings &) = delete;
+    Settings& operator=(const Settings &) = delete;
+
     Activation* getActivation() const;
     Deactivation* getDeactivation() const;
 
@@ -1589,6 +1622,9 @@
 
   ~Annots();
 
+  Annots(const Annots &) = delete;
+  Annots& operator=(const Annots &) = delete;
+
   // Iterate through list of annotations.
   int getNumAnnots() { return nAnnots; }
   Annot *getAnnot(int i) { return annots[i]; }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Array.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Array.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Array.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -47,7 +47,7 @@
 
 Array::Array(XRef *xrefA) {
   xref = xrefA;
-  elems = NULL;
+  elems = nullptr;
   size = length = 0;
   ref = 1;
 #ifdef MULTITHREADED

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Array.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Array.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Array.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -16,7 +16,7 @@
 // Copyright (C) 2005 Kristian Høgsberg <krh at redhat.com>
 // Copyright (C) 2012 Fabio D'Urso <fabiodurso at hotmail.it>
 // Copyright (C) 2013 Thomas Freitag <Thomas.Freitag at alfa.de>
-// Copyright (C) 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2017 Adrian Johnson <ajohnson at redneon.com>
 //
 // To see a description of the changes please see the Changelog file that
@@ -50,6 +50,9 @@
   // Destructor.
   ~Array();
 
+  Array(const Array &) = delete;
+  Array& operator=(const Array &) = delete;
+
   // Get number of elements.
   int getLength() const { return length; }
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -26,7 +26,7 @@
   size = sizeA;
   tab = (BuiltinFontWidth **)gmallocn(size, sizeof(BuiltinFontWidth *));
   for (i = 0; i < size; ++i) {
-    tab[i] = NULL;
+    tab[i] = nullptr;
   }
   for (i = 0; i < sizeA; ++i) {
     h = hash(widths[i].name);

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -6,6 +6,20 @@
 //
 //========================================================================
 
+//========================================================================
+//
+// Modified under the Poppler project - http://poppler.freedesktop.org
+//
+// All changes made under the Poppler project to this file are licensed
+// under GPL version 2 or later
+//
+// Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
+//
+// To see a description of the changes please see the Changelog file that
+// came with your tarball or type make ChangeLog if you are building from git
+//
+//========================================================================
+
 #ifndef BUILTINFONT_H
 #define BUILTINFONT_H
 
@@ -42,6 +56,10 @@
 
   BuiltinFontWidths(BuiltinFontWidth *widths, int sizeA);
   ~BuiltinFontWidths();
+
+  BuiltinFontWidths(const BuiltinFontWidths &) = delete;
+  BuiltinFontWidths& operator=(const BuiltinFontWidths &) = delete;
+
   GBool getWidth(const char *name, Gushort *width);
 
 private:

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/BuiltinFontTables.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/BuiltinFontTables.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/BuiltinFontTables.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -12,4235 +12,4235 @@
 #include "BuiltinFontTables.h"
 
 static BuiltinFontWidth courierWidthsTab[] = {
-  { "Ntilde",                            600, NULL },
-  { "rcaron",                            600, NULL },
-  { "kcommaaccent",                      600, NULL },
-  { "Ncommaaccent",                      600, NULL },
-  { "Zacute",                            600, NULL },
-  { "comma",                             600, NULL },
-  { "cedilla",                           600, NULL },
-  { "plusminus",                         600, NULL },
-  { "circumflex",                        600, NULL },
-  { "dotaccent",                         600, NULL },
-  { "edotaccent",                        600, NULL },
-  { "asciitilde",                        600, NULL },
-  { "colon",                             600, NULL },
-  { "onehalf",                           600, NULL },
-  { "dollar",                            600, NULL },
-  { "Lcaron",                            600, NULL },
-  { "ntilde",                            600, NULL },
-  { "Aogonek",                           600, NULL },
-  { "ncommaaccent",                      600, NULL },
-  { "minus",                             600, NULL },
-  { "Iogonek",                           600, NULL },
-  { "zacute",                            600, NULL },
-  { "yen",                               600, NULL },
-  { "space",                             600, NULL },
-  { "Omacron",                           600, NULL },
-  { "questiondown",                      600, NULL },
-  { "emdash",                            600, NULL },
-  { "Agrave",                            600, NULL },
-  { "three",                             600, NULL },
-  { "numbersign",                        600, NULL },
-  { "lcaron",                            600, NULL },
-  { "A",                                 600, NULL },
-  { "B",                                 600, NULL },
-  { "C",                                 600, NULL },
-  { "aogonek",                           600, NULL },
-  { "D",                                 600, NULL },
-  { "E",                                 600, NULL },
-  { "onequarter",                        600, NULL },
-  { "F",                                 600, NULL },
-  { "G",                                 600, NULL },
-  { "H",                                 600, NULL },
-  { "I",                                 600, NULL },
-  { "J",                                 600, NULL },
-  { "K",                                 600, NULL },
-  { "iogonek",                           600, NULL },
-  { "L",                                 600, NULL },
-  { "backslash",                         600, NULL },
-  { "periodcentered",                    600, NULL },
-  { "M",                                 600, NULL },
-  { "N",                                 600, NULL },
-  { "omacron",                           600, NULL },
-  { "Tcommaaccent",                      600, NULL },
-  { "O",                                 600, NULL },
-  { "P",                                 600, NULL },
-  { "Q",                                 600, NULL },
-  { "Uhungarumlaut",                     600, NULL },
-  { "R",                                 600, NULL },
-  { "Aacute",                            600, NULL },
-  { "caron",                             600, NULL },
-  { "S",                                 600, NULL },
-  { "T",                                 600, NULL },
-  { "U",                                 600, NULL },
-  { "agrave",                            600, NULL },
-  { "V",                                 600, NULL },
-  { "W",                                 600, NULL },
-  { "equal",                             600, NULL },
-  { "question",                          600, NULL },
-  { "X",                                 600, NULL },
-  { "Y",                                 600, NULL },
-  { "Z",                                 600, NULL },
-  { "four",                              600, NULL },
-  { "a",                                 600, NULL },
-  { "Gcommaaccent",                      600, NULL },
-  { "b",                                 600, NULL },
-  { "c",                                 600, NULL },
-  { "d",                                 600, NULL },
-  { "e",                                 600, NULL },
-  { "f",                                 600, NULL },
-  { "g",                                 600, NULL },
-  { "bullet",                            600, NULL },
-  { "h",                                 600, NULL },
-  { "i",                                 600, NULL },
-  { "Oslash",                            600, NULL },
-  { "dagger",                            600, NULL },
-  { "j",                                 600, NULL },
-  { "k",                                 600, NULL },
-  { "l",                                 600, NULL },
-  { "m",                                 600, NULL },
-  { "n",                                 600, NULL },
-  { "tcommaaccent",                      600, NULL },
-  { "o",                                 600, NULL },
-  { "ordfeminine",                       600, NULL },
-  { "ring",                              600, NULL },
-  { "p",                                 600, NULL },
-  { "q",                                 600, NULL },
-  { "uhungarumlaut",                     600, NULL },
-  { "r",                                 600, NULL },
-  { "twosuperior",                       600, NULL },
-  { "aacute",                            600, NULL },
-  { "s",                                 600, NULL },
-  { "OE",                                600, NULL },
-  { "t",                                 600, NULL },
-  { "divide",                            600, NULL },
-  { "u",                                 600, NULL },
-  { "Ccaron",                            600, NULL },
-  { "v",                                 600, NULL },
-  { "w",                                 600, NULL },
-  { "x",                                 600, NULL },
-  { "y",                                 600, NULL },
-  { "z",                                 600, NULL },
-  { "Gbreve",                            600, NULL },
-  { "commaaccent",                       600, NULL },
-  { "hungarumlaut",                      600, NULL },
-  { "Idotaccent",                        600, NULL },
-  { "Nacute",                            600, NULL },
-  { "quotedbl",                          600, NULL },
-  { "gcommaaccent",                      600, NULL },
-  { "mu",                                600, NULL },
-  { "greaterequal",                      600, NULL },
-  { "Scaron",                            600, NULL },
-  { "Lslash",                            600, NULL },
-  { "semicolon",                         600, NULL },
-  { "oslash",                            600, NULL },
-  { "lessequal",                         600, NULL },
-  { "lozenge",                           600, NULL },
-  { "parenright",                        600, NULL },
-  { "ccaron",                            600, NULL },
-  { "Ecircumflex",                       600, NULL },
-  { "gbreve",                            600, NULL },
-  { "trademark",                         600, NULL },
-  { "daggerdbl",                         600, NULL },
-  { "nacute",                            600, NULL },
-  { "macron",                            600, NULL },
-  { "Otilde",                            600, NULL },
-  { "Emacron",                           600, NULL },
-  { "ellipsis",                          600, NULL },
-  { "scaron",                            600, NULL },
-  { "AE",                                600, NULL },
-  { "Ucircumflex",                       600, NULL },
-  { "lslash",                            600, NULL },
-  { "quotedblleft",                      600, NULL },
-  { "hyphen",                            600, NULL },
-  { "guilsinglright",                    600, NULL },
-  { "quotesingle",                       600, NULL },
-  { "eight",                             600, NULL },
-  { "exclamdown",                        600, NULL },
-  { "endash",                            600, NULL },
-  { "oe",                                600, NULL },
-  { "Abreve",                            600, NULL },
-  { "Umacron",                           600, NULL },
-  { "ecircumflex",                       600, NULL },
-  { "Adieresis",                         600, NULL },
-  { "copyright",                         600, NULL },
-  { "Egrave",                            600, NULL },
-  { "slash",                             600, NULL },
-  { "Edieresis",                         600, NULL },
-  { "otilde",                            600, NULL },
-  { "Idieresis",                         600, NULL },
-  { "parenleft",                         600, NULL },
-  { "one",                               600, NULL },
-  { "emacron",                           600, NULL },
-  { "Odieresis",                         600, NULL },
-  { "ucircumflex",                       600, NULL },
-  { "bracketleft",                       600, NULL },
-  { "Ugrave",                            600, NULL },
-  { "quoteright",                        600, NULL },
-  { "Udieresis",                         600, NULL },
-  { "perthousand",                       600, NULL },
-  { "Ydieresis",                         600, NULL },
-  { "umacron",                           600, NULL },
-  { "abreve",                            600, NULL },
-  { "Eacute",                            600, NULL },
-  { "adieresis",                         600, NULL },
-  { "egrave",                            600, NULL },
-  { "edieresis",                         600, NULL },
-  { "idieresis",                         600, NULL },
-  { "Eth",                               600, NULL },
-  { "ae",                                600, NULL },
-  { "asterisk",                          600, NULL },
-  { "odieresis",                         600, NULL },
-  { "Uacute",                            600, NULL },
-  { "ugrave",                            600, NULL },
-  { "five",                              600, NULL },
-  { "nine",                              600, NULL },
-  { "udieresis",                         600, NULL },
-  { "Zcaron",                            600, NULL },
-  { "Scommaaccent",                      600, NULL },
-  { "threequarters",                     600, NULL },
-  { "guillemotright",                    600, NULL },
-  { "Ccedilla",                          600, NULL },
-  { "ydieresis",                         600, NULL },
-  { "tilde",                             600, NULL },
-  { "at",                                600, NULL },
-  { "eacute",                            600, NULL },
-  { "underscore",                        600, NULL },
-  { "Euro",                              600, NULL },
-  { "Dcroat",                            600, NULL },
-  { "zero",                              600, NULL },
-  { "multiply",                          600, NULL },
-  { "eth",                               600, NULL },
-  { "Scedilla",                          600, NULL },
-  { "Racute",                            600, NULL },
-  { "Ograve",                            600, NULL },
-  { "partialdiff",                       600, NULL },
-  { "uacute",                            600, NULL },
-  { "braceleft",                         600, NULL },
-  { "Thorn",                             600, NULL },
-  { "zcaron",                            600, NULL },
-  { "scommaaccent",                      600, NULL },
-  { "ccedilla",                          600, NULL },
-  { "Dcaron",                            600, NULL },
-  { "dcroat",                            600, NULL },
-  { "scedilla",                          600, NULL },
-  { "Oacute",                            600, NULL },
-  { "Ocircumflex",                       600, NULL },
-  { "ogonek",                            600, NULL },
-  { "ograve",                            600, NULL },
-  { "racute",                            600, NULL },
-  { "Tcaron",                            600, NULL },
-  { "Eogonek",                           600, NULL },
-  { "thorn",                             600, NULL },
-  { "degree",                            600, NULL },
-  { "registered",                        600, NULL },
-  { "radical",                           600, NULL },
-  { "Aring",                             600, NULL },
-  { "percent",                           600, NULL },
-  { "six",                               600, NULL },
-  { "paragraph",                         600, NULL },
-  { "dcaron",                            600, NULL },
-  { "Uogonek",                           600, NULL },
-  { "two",                               600, NULL },
-  { "summation",                         600, NULL },
-  { "Igrave",                            600, NULL },
-  { "Lacute",                            600, NULL },
-  { "ocircumflex",                       600, NULL },
-  { "oacute",                            600, NULL },
-  { "Uring",                             600, NULL },
-  { "Lcommaaccent",                      600, NULL },
-  { "tcaron",                            600, NULL },
-  { "eogonek",                           600, NULL },
-  { "Delta",                             600, NULL },
-  { "Ohungarumlaut",                     600, NULL },
-  { "asciicircum",                       600, NULL },
-  { "aring",                             600, NULL },
-  { "grave",                             600, NULL },
-  { "uogonek",                           600, NULL },
-  { "bracketright",                      600, NULL },
-  { "ampersand",                         600, NULL },
-  { "Iacute",                            600, NULL },
-  { "lacute",                            600, NULL },
-  { "igrave",                            600, NULL },
-  { "Ncaron",                            600, NULL },
-  { "plus",                              600, NULL },
-  { "uring",                             600, NULL },
-  { "quotesinglbase",                    600, NULL },
-  { "lcommaaccent",                      600, NULL },
-  { "Yacute",                            600, NULL },
-  { "ohungarumlaut",                     600, NULL },
-  { "threesuperior",                     600, NULL },
-  { "acute",                             600, NULL },
-  { "section",                           600, NULL },
-  { "dieresis",                          600, NULL },
-  { "quotedblbase",                      600, NULL },
-  { "iacute",                            600, NULL },
-  { "ncaron",                            600, NULL },
-  { "florin",                            600, NULL },
-  { "yacute",                            600, NULL },
-  { "Rcommaaccent",                      600, NULL },
-  { "fi",                                600, NULL },
-  { "fl",                                600, NULL },
-  { "Acircumflex",                       600, NULL },
-  { "Cacute",                            600, NULL },
-  { "Icircumflex",                       600, NULL },
-  { "guillemotleft",                     600, NULL },
-  { "germandbls",                        600, NULL },
-  { "seven",                             600, NULL },
-  { "Amacron",                           600, NULL },
-  { "Sacute",                            600, NULL },
-  { "ordmasculine",                      600, NULL },
-  { "dotlessi",                          600, NULL },
-  { "sterling",                          600, NULL },
-  { "notequal",                          600, NULL },
-  { "Imacron",                           600, NULL },
-  { "rcommaaccent",                      600, NULL },
-  { "Zdotaccent",                        600, NULL },
-  { "acircumflex",                       600, NULL },
-  { "cacute",                            600, NULL },
-  { "Ecaron",                            600, NULL },
-  { "braceright",                        600, NULL },
-  { "icircumflex",                       600, NULL },
-  { "quotedblright",                     600, NULL },
-  { "amacron",                           600, NULL },
-  { "sacute",                            600, NULL },
-  { "imacron",                           600, NULL },
-  { "cent",                              600, NULL },
-  { "currency",                          600, NULL },
-  { "logicalnot",                        600, NULL },
-  { "zdotaccent",                        600, NULL },
-  { "Atilde",                            600, NULL },
-  { "breve",                             600, NULL },
-  { "bar",                               600, NULL },
-  { "fraction",                          600, NULL },
-  { "less",                              600, NULL },
-  { "ecaron",                            600, NULL },
-  { "guilsinglleft",                     600, NULL },
-  { "exclam",                            600, NULL },
-  { "period",                            600, NULL },
-  { "Rcaron",                            600, NULL },
-  { "Kcommaaccent",                      600, NULL },
-  { "greater",                           600, NULL },
-  { "atilde",                            600, NULL },
-  { "brokenbar",                         600, NULL },
-  { "quoteleft",                         600, NULL },
-  { "Edotaccent",                        600, NULL },
-  { "onesuperior",                       600, NULL }
+  { "Ntilde",                            600, nullptr },
+  { "rcaron",                            600, nullptr },
+  { "kcommaaccent",                      600, nullptr },
+  { "Ncommaaccent",                      600, nullptr },
+  { "Zacute",                            600, nullptr },
+  { "comma",                             600, nullptr },
+  { "cedilla",                           600, nullptr },
+  { "plusminus",                         600, nullptr },
+  { "circumflex",                        600, nullptr },
+  { "dotaccent",                         600, nullptr },
+  { "edotaccent",                        600, nullptr },
+  { "asciitilde",                        600, nullptr },
+  { "colon",                             600, nullptr },
+  { "onehalf",                           600, nullptr },
+  { "dollar",                            600, nullptr },
+  { "Lcaron",                            600, nullptr },
+  { "ntilde",                            600, nullptr },
+  { "Aogonek",                           600, nullptr },
+  { "ncommaaccent",                      600, nullptr },
+  { "minus",                             600, nullptr },
+  { "Iogonek",                           600, nullptr },
+  { "zacute",                            600, nullptr },
+  { "yen",                               600, nullptr },
+  { "space",                             600, nullptr },
+  { "Omacron",                           600, nullptr },
+  { "questiondown",                      600, nullptr },
+  { "emdash",                            600, nullptr },
+  { "Agrave",                            600, nullptr },
+  { "three",                             600, nullptr },
+  { "numbersign",                        600, nullptr },
+  { "lcaron",                            600, nullptr },
+  { "A",                                 600, nullptr },
+  { "B",                                 600, nullptr },
+  { "C",                                 600, nullptr },
+  { "aogonek",                           600, nullptr },
+  { "D",                                 600, nullptr },
+  { "E",                                 600, nullptr },
+  { "onequarter",                        600, nullptr },
+  { "F",                                 600, nullptr },
+  { "G",                                 600, nullptr },
+  { "H",                                 600, nullptr },
+  { "I",                                 600, nullptr },
+  { "J",                                 600, nullptr },
+  { "K",                                 600, nullptr },
+  { "iogonek",                           600, nullptr },
+  { "L",                                 600, nullptr },
+  { "backslash",                         600, nullptr },
+  { "periodcentered",                    600, nullptr },
+  { "M",                                 600, nullptr },
+  { "N",                                 600, nullptr },
+  { "omacron",                           600, nullptr },
+  { "Tcommaaccent",                      600, nullptr },
+  { "O",                                 600, nullptr },
+  { "P",                                 600, nullptr },
+  { "Q",                                 600, nullptr },
+  { "Uhungarumlaut",                     600, nullptr },
+  { "R",                                 600, nullptr },
+  { "Aacute",                            600, nullptr },
+  { "caron",                             600, nullptr },
+  { "S",                                 600, nullptr },
+  { "T",                                 600, nullptr },
+  { "U",                                 600, nullptr },
+  { "agrave",                            600, nullptr },
+  { "V",                                 600, nullptr },
+  { "W",                                 600, nullptr },
+  { "equal",                             600, nullptr },
+  { "question",                          600, nullptr },
+  { "X",                                 600, nullptr },
+  { "Y",                                 600, nullptr },
+  { "Z",                                 600, nullptr },
+  { "four",                              600, nullptr },
+  { "a",                                 600, nullptr },
+  { "Gcommaaccent",                      600, nullptr },
+  { "b",                                 600, nullptr },
+  { "c",                                 600, nullptr },
+  { "d",                                 600, nullptr },
+  { "e",                                 600, nullptr },
+  { "f",                                 600, nullptr },
+  { "g",                                 600, nullptr },
+  { "bullet",                            600, nullptr },
+  { "h",                                 600, nullptr },
+  { "i",                                 600, nullptr },
+  { "Oslash",                            600, nullptr },
+  { "dagger",                            600, nullptr },
+  { "j",                                 600, nullptr },
+  { "k",                                 600, nullptr },
+  { "l",                                 600, nullptr },
+  { "m",                                 600, nullptr },
+  { "n",                                 600, nullptr },
+  { "tcommaaccent",                      600, nullptr },
+  { "o",                                 600, nullptr },
+  { "ordfeminine",                       600, nullptr },
+  { "ring",                              600, nullptr },
+  { "p",                                 600, nullptr },
+  { "q",                                 600, nullptr },
+  { "uhungarumlaut",                     600, nullptr },
+  { "r",                                 600, nullptr },
+  { "twosuperior",                       600, nullptr },
+  { "aacute",                            600, nullptr },
+  { "s",                                 600, nullptr },
+  { "OE",                                600, nullptr },
+  { "t",                                 600, nullptr },
+  { "divide",                            600, nullptr },
+  { "u",                                 600, nullptr },
+  { "Ccaron",                            600, nullptr },
+  { "v",                                 600, nullptr },
+  { "w",                                 600, nullptr },
+  { "x",                                 600, nullptr },
+  { "y",                                 600, nullptr },
+  { "z",                                 600, nullptr },
+  { "Gbreve",                            600, nullptr },
+  { "commaaccent",                       600, nullptr },
+  { "hungarumlaut",                      600, nullptr },
+  { "Idotaccent",                        600, nullptr },
+  { "Nacute",                            600, nullptr },
+  { "quotedbl",                          600, nullptr },
+  { "gcommaaccent",                      600, nullptr },
+  { "mu",                                600, nullptr },
+  { "greaterequal",                      600, nullptr },
+  { "Scaron",                            600, nullptr },
+  { "Lslash",                            600, nullptr },
+  { "semicolon",                         600, nullptr },
+  { "oslash",                            600, nullptr },
+  { "lessequal",                         600, nullptr },
+  { "lozenge",                           600, nullptr },
+  { "parenright",                        600, nullptr },
+  { "ccaron",                            600, nullptr },
+  { "Ecircumflex",                       600, nullptr },
+  { "gbreve",                            600, nullptr },
+  { "trademark",                         600, nullptr },
+  { "daggerdbl",                         600, nullptr },
+  { "nacute",                            600, nullptr },
+  { "macron",                            600, nullptr },
+  { "Otilde",                            600, nullptr },
+  { "Emacron",                           600, nullptr },
+  { "ellipsis",                          600, nullptr },
+  { "scaron",                            600, nullptr },
+  { "AE",                                600, nullptr },
+  { "Ucircumflex",                       600, nullptr },
+  { "lslash",                            600, nullptr },
+  { "quotedblleft",                      600, nullptr },
+  { "hyphen",                            600, nullptr },
+  { "guilsinglright",                    600, nullptr },
+  { "quotesingle",                       600, nullptr },
+  { "eight",                             600, nullptr },
+  { "exclamdown",                        600, nullptr },
+  { "endash",                            600, nullptr },
+  { "oe",                                600, nullptr },
+  { "Abreve",                            600, nullptr },
+  { "Umacron",                           600, nullptr },
+  { "ecircumflex",                       600, nullptr },
+  { "Adieresis",                         600, nullptr },
+  { "copyright",                         600, nullptr },
+  { "Egrave",                            600, nullptr },
+  { "slash",                             600, nullptr },
+  { "Edieresis",                         600, nullptr },
+  { "otilde",                            600, nullptr },
+  { "Idieresis",                         600, nullptr },
+  { "parenleft",                         600, nullptr },
+  { "one",                               600, nullptr },
+  { "emacron",                           600, nullptr },
+  { "Odieresis",                         600, nullptr },
+  { "ucircumflex",                       600, nullptr },
+  { "bracketleft",                       600, nullptr },
+  { "Ugrave",                            600, nullptr },
+  { "quoteright",                        600, nullptr },
+  { "Udieresis",                         600, nullptr },
+  { "perthousand",                       600, nullptr },
+  { "Ydieresis",                         600, nullptr },
+  { "umacron",                           600, nullptr },
+  { "abreve",                            600, nullptr },
+  { "Eacute",                            600, nullptr },
+  { "adieresis",                         600, nullptr },
+  { "egrave",                            600, nullptr },
+  { "edieresis",                         600, nullptr },
+  { "idieresis",                         600, nullptr },
+  { "Eth",                               600, nullptr },
+  { "ae",                                600, nullptr },
+  { "asterisk",                          600, nullptr },
+  { "odieresis",                         600, nullptr },
+  { "Uacute",                            600, nullptr },
+  { "ugrave",                            600, nullptr },
+  { "five",                              600, nullptr },
+  { "nine",                              600, nullptr },
+  { "udieresis",                         600, nullptr },
+  { "Zcaron",                            600, nullptr },
+  { "Scommaaccent",                      600, nullptr },
+  { "threequarters",                     600, nullptr },
+  { "guillemotright",                    600, nullptr },
+  { "Ccedilla",                          600, nullptr },
+  { "ydieresis",                         600, nullptr },
+  { "tilde",                             600, nullptr },
+  { "at",                                600, nullptr },
+  { "eacute",                            600, nullptr },
+  { "underscore",                        600, nullptr },
+  { "Euro",                              600, nullptr },
+  { "Dcroat",                            600, nullptr },
+  { "zero",                              600, nullptr },
+  { "multiply",                          600, nullptr },
+  { "eth",                               600, nullptr },
+  { "Scedilla",                          600, nullptr },
+  { "Racute",                            600, nullptr },
+  { "Ograve",                            600, nullptr },
+  { "partialdiff",                       600, nullptr },
+  { "uacute",                            600, nullptr },
+  { "braceleft",                         600, nullptr },
+  { "Thorn",                             600, nullptr },
+  { "zcaron",                            600, nullptr },
+  { "scommaaccent",                      600, nullptr },
+  { "ccedilla",                          600, nullptr },
+  { "Dcaron",                            600, nullptr },
+  { "dcroat",                            600, nullptr },
+  { "scedilla",                          600, nullptr },
+  { "Oacute",                            600, nullptr },
+  { "Ocircumflex",                       600, nullptr },
+  { "ogonek",                            600, nullptr },
+  { "ograve",                            600, nullptr },
+  { "racute",                            600, nullptr },
+  { "Tcaron",                            600, nullptr },
+  { "Eogonek",                           600, nullptr },
+  { "thorn",                             600, nullptr },
+  { "degree",                            600, nullptr },
+  { "registered",                        600, nullptr },
+  { "radical",                           600, nullptr },
+  { "Aring",                             600, nullptr },
+  { "percent",                           600, nullptr },
+  { "six",                               600, nullptr },
+  { "paragraph",                         600, nullptr },
+  { "dcaron",                            600, nullptr },
+  { "Uogonek",                           600, nullptr },
+  { "two",                               600, nullptr },
+  { "summation",                         600, nullptr },
+  { "Igrave",                            600, nullptr },
+  { "Lacute",                            600, nullptr },
+  { "ocircumflex",                       600, nullptr },
+  { "oacute",                            600, nullptr },
+  { "Uring",                             600, nullptr },
+  { "Lcommaaccent",                      600, nullptr },
+  { "tcaron",                            600, nullptr },
+  { "eogonek",                           600, nullptr },
+  { "Delta",                             600, nullptr },
+  { "Ohungarumlaut",                     600, nullptr },
+  { "asciicircum",                       600, nullptr },
+  { "aring",                             600, nullptr },
+  { "grave",                             600, nullptr },
+  { "uogonek",                           600, nullptr },
+  { "bracketright",                      600, nullptr },
+  { "ampersand",                         600, nullptr },
+  { "Iacute",                            600, nullptr },
+  { "lacute",                            600, nullptr },
+  { "igrave",                            600, nullptr },
+  { "Ncaron",                            600, nullptr },
+  { "plus",                              600, nullptr },
+  { "uring",                             600, nullptr },
+  { "quotesinglbase",                    600, nullptr },
+  { "lcommaaccent",                      600, nullptr },
+  { "Yacute",                            600, nullptr },
+  { "ohungarumlaut",                     600, nullptr },
+  { "threesuperior",                     600, nullptr },
+  { "acute",                             600, nullptr },
+  { "section",                           600, nullptr },
+  { "dieresis",                          600, nullptr },
+  { "quotedblbase",                      600, nullptr },
+  { "iacute",                            600, nullptr },
+  { "ncaron",                            600, nullptr },
+  { "florin",                            600, nullptr },
+  { "yacute",                            600, nullptr },
+  { "Rcommaaccent",                      600, nullptr },
+  { "fi",                                600, nullptr },
+  { "fl",                                600, nullptr },
+  { "Acircumflex",                       600, nullptr },
+  { "Cacute",                            600, nullptr },
+  { "Icircumflex",                       600, nullptr },
+  { "guillemotleft",                     600, nullptr },
+  { "germandbls",                        600, nullptr },
+  { "seven",                             600, nullptr },
+  { "Amacron",                           600, nullptr },
+  { "Sacute",                            600, nullptr },
+  { "ordmasculine",                      600, nullptr },
+  { "dotlessi",                          600, nullptr },
+  { "sterling",                          600, nullptr },
+  { "notequal",                          600, nullptr },
+  { "Imacron",                           600, nullptr },
+  { "rcommaaccent",                      600, nullptr },
+  { "Zdotaccent",                        600, nullptr },
+  { "acircumflex",                       600, nullptr },
+  { "cacute",                            600, nullptr },
+  { "Ecaron",                            600, nullptr },
+  { "braceright",                        600, nullptr },
+  { "icircumflex",                       600, nullptr },
+  { "quotedblright",                     600, nullptr },
+  { "amacron",                           600, nullptr },
+  { "sacute",                            600, nullptr },
+  { "imacron",                           600, nullptr },
+  { "cent",                              600, nullptr },
+  { "currency",                          600, nullptr },
+  { "logicalnot",                        600, nullptr },
+  { "zdotaccent",                        600, nullptr },
+  { "Atilde",                            600, nullptr },
+  { "breve",                             600, nullptr },
+  { "bar",                               600, nullptr },
+  { "fraction",                          600, nullptr },
+  { "less",                              600, nullptr },
+  { "ecaron",                            600, nullptr },
+  { "guilsinglleft",                     600, nullptr },
+  { "exclam",                            600, nullptr },
+  { "period",                            600, nullptr },
+  { "Rcaron",                            600, nullptr },
+  { "Kcommaaccent",                      600, nullptr },
+  { "greater",                           600, nullptr },
+  { "atilde",                            600, nullptr },
+  { "brokenbar",                         600, nullptr },
+  { "quoteleft",                         600, nullptr },
+  { "Edotaccent",                        600, nullptr },
+  { "onesuperior",                       600, nullptr }
 };
 
 static BuiltinFontWidth courierBoldWidthsTab[] = {
-  { "Ntilde",                            600, NULL },
-  { "rcaron",                            600, NULL },
-  { "kcommaaccent",                      600, NULL },
-  { "Ncommaaccent",                      600, NULL },
-  { "Zacute",                            600, NULL },
-  { "comma",                             600, NULL },
-  { "cedilla",                           600, NULL },
-  { "plusminus",                         600, NULL },
-  { "circumflex",                        600, NULL },
-  { "dotaccent",                         600, NULL },
-  { "edotaccent",                        600, NULL },
-  { "asciitilde",                        600, NULL },
-  { "colon",                             600, NULL },
-  { "onehalf",                           600, NULL },
-  { "dollar",                            600, NULL },
-  { "Lcaron",                            600, NULL },
-  { "ntilde",                            600, NULL },
-  { "Aogonek",                           600, NULL },
-  { "ncommaaccent",                      600, NULL },
-  { "minus",                             600, NULL },
-  { "Iogonek",                           600, NULL },
-  { "zacute",                            600, NULL },
-  { "yen",                               600, NULL },
-  { "space",                             600, NULL },
-  { "Omacron",                           600, NULL },
-  { "questiondown",                      600, NULL },
-  { "emdash",                            600, NULL },
-  { "Agrave",                            600, NULL },
-  { "three",                             600, NULL },
-  { "numbersign",                        600, NULL },
-  { "lcaron",                            600, NULL },
-  { "A",                                 600, NULL },
-  { "B",                                 600, NULL },
-  { "C",                                 600, NULL },
-  { "aogonek",                           600, NULL },
-  { "D",                                 600, NULL },
-  { "E",                                 600, NULL },
-  { "onequarter",                        600, NULL },
-  { "F",                                 600, NULL },
-  { "G",                                 600, NULL },
-  { "H",                                 600, NULL },
-  { "I",                                 600, NULL },
-  { "J",                                 600, NULL },
-  { "K",                                 600, NULL },
-  { "iogonek",                           600, NULL },
-  { "backslash",                         600, NULL },
-  { "L",                                 600, NULL },
-  { "periodcentered",                    600, NULL },
-  { "M",                                 600, NULL },
-  { "N",                                 600, NULL },
-  { "omacron",                           600, NULL },
-  { "Tcommaaccent",                      600, NULL },
-  { "O",                                 600, NULL },
-  { "P",                                 600, NULL },
-  { "Q",                                 600, NULL },
-  { "Uhungarumlaut",                     600, NULL },
-  { "R",                                 600, NULL },
-  { "Aacute",                            600, NULL },
-  { "caron",                             600, NULL },
-  { "S",                                 600, NULL },
-  { "T",                                 600, NULL },
-  { "U",                                 600, NULL },
-  { "agrave",                            600, NULL },
-  { "V",                                 600, NULL },
-  { "W",                                 600, NULL },
-  { "X",                                 600, NULL },
-  { "question",                          600, NULL },
-  { "equal",                             600, NULL },
-  { "Y",                                 600, NULL },
-  { "Z",                                 600, NULL },
-  { "four",                              600, NULL },
-  { "a",                                 600, NULL },
-  { "Gcommaaccent",                      600, NULL },
-  { "b",                                 600, NULL },
-  { "c",                                 600, NULL },
-  { "d",                                 600, NULL },
-  { "e",                                 600, NULL },
-  { "f",                                 600, NULL },
-  { "g",                                 600, NULL },
-  { "bullet",                            600, NULL },
-  { "h",                                 600, NULL },
-  { "i",                                 600, NULL },
-  { "Oslash",                            600, NULL },
-  { "dagger",                            600, NULL },
-  { "j",                                 600, NULL },
-  { "k",                                 600, NULL },
-  { "l",                                 600, NULL },
-  { "m",                                 600, NULL },
-  { "n",                                 600, NULL },
-  { "tcommaaccent",                      600, NULL },
-  { "o",                                 600, NULL },
-  { "ordfeminine",                       600, NULL },
-  { "ring",                              600, NULL },
-  { "p",                                 600, NULL },
-  { "q",                                 600, NULL },
-  { "uhungarumlaut",                     600, NULL },
-  { "r",                                 600, NULL },
-  { "twosuperior",                       600, NULL },
-  { "aacute",                            600, NULL },
-  { "s",                                 600, NULL },
-  { "OE",                                600, NULL },
-  { "t",                                 600, NULL },
-  { "divide",                            600, NULL },
-  { "u",                                 600, NULL },
-  { "Ccaron",                            600, NULL },
-  { "v",                                 600, NULL },
-  { "w",                                 600, NULL },
-  { "x",                                 600, NULL },
-  { "y",                                 600, NULL },
-  { "z",                                 600, NULL },
-  { "Gbreve",                            600, NULL },
-  { "commaaccent",                       600, NULL },
-  { "hungarumlaut",                      600, NULL },
-  { "Idotaccent",                        600, NULL },
-  { "Nacute",                            600, NULL },
-  { "quotedbl",                          600, NULL },
-  { "gcommaaccent",                      600, NULL },
-  { "mu",                                600, NULL },
-  { "greaterequal",                      600, NULL },
-  { "Scaron",                            600, NULL },
-  { "Lslash",                            600, NULL },
-  { "semicolon",                         600, NULL },
-  { "oslash",                            600, NULL },
-  { "lessequal",                         600, NULL },
-  { "lozenge",                           600, NULL },
-  { "parenright",                        600, NULL },
-  { "ccaron",                            600, NULL },
-  { "Ecircumflex",                       600, NULL },
-  { "gbreve",                            600, NULL },
-  { "trademark",                         600, NULL },
-  { "daggerdbl",                         600, NULL },
-  { "nacute",                            600, NULL },
-  { "macron",                            600, NULL },
-  { "Otilde",                            600, NULL },
-  { "Emacron",                           600, NULL },
-  { "ellipsis",                          600, NULL },
-  { "scaron",                            600, NULL },
-  { "AE",                                600, NULL },
-  { "Ucircumflex",                       600, NULL },
-  { "lslash",                            600, NULL },
-  { "quotedblleft",                      600, NULL },
-  { "guilsinglright",                    600, NULL },
-  { "hyphen",                            600, NULL },
-  { "quotesingle",                       600, NULL },
-  { "eight",                             600, NULL },
-  { "exclamdown",                        600, NULL },
-  { "endash",                            600, NULL },
-  { "oe",                                600, NULL },
-  { "Abreve",                            600, NULL },
-  { "Umacron",                           600, NULL },
-  { "ecircumflex",                       600, NULL },
-  { "Adieresis",                         600, NULL },
-  { "copyright",                         600, NULL },
-  { "Egrave",                            600, NULL },
-  { "slash",                             600, NULL },
-  { "Edieresis",                         600, NULL },
-  { "otilde",                            600, NULL },
-  { "Idieresis",                         600, NULL },
-  { "parenleft",                         600, NULL },
-  { "one",                               600, NULL },
-  { "emacron",                           600, NULL },
-  { "Odieresis",                         600, NULL },
-  { "ucircumflex",                       600, NULL },
-  { "bracketleft",                       600, NULL },
-  { "Ugrave",                            600, NULL },
-  { "quoteright",                        600, NULL },
-  { "Udieresis",                         600, NULL },
-  { "perthousand",                       600, NULL },
-  { "Ydieresis",                         600, NULL },
-  { "umacron",                           600, NULL },
-  { "abreve",                            600, NULL },
-  { "Eacute",                            600, NULL },
-  { "adieresis",                         600, NULL },
-  { "egrave",                            600, NULL },
-  { "edieresis",                         600, NULL },
-  { "idieresis",                         600, NULL },
-  { "Eth",                               600, NULL },
-  { "ae",                                600, NULL },
-  { "asterisk",                          600, NULL },
-  { "odieresis",                         600, NULL },
-  { "Uacute",                            600, NULL },
-  { "ugrave",                            600, NULL },
-  { "nine",                              600, NULL },
-  { "five",                              600, NULL },
-  { "udieresis",                         600, NULL },
-  { "Zcaron",                            600, NULL },
-  { "Scommaaccent",                      600, NULL },
-  { "threequarters",                     600, NULL },
-  { "guillemotright",                    600, NULL },
-  { "Ccedilla",                          600, NULL },
-  { "ydieresis",                         600, NULL },
-  { "tilde",                             600, NULL },
-  { "at",                                600, NULL },
-  { "eacute",                            600, NULL },
-  { "underscore",                        600, NULL },
-  { "Euro",                              600, NULL },
-  { "Dcroat",                            600, NULL },
-  { "multiply",                          600, NULL },
-  { "zero",                              600, NULL },
-  { "eth",                               600, NULL },
-  { "Scedilla",                          600, NULL },
-  { "Ograve",                            600, NULL },
-  { "Racute",                            600, NULL },
-  { "partialdiff",                       600, NULL },
-  { "uacute",                            600, NULL },
-  { "braceleft",                         600, NULL },
-  { "Thorn",                             600, NULL },
-  { "zcaron",                            600, NULL },
-  { "scommaaccent",                      600, NULL },
-  { "ccedilla",                          600, NULL },
-  { "Dcaron",                            600, NULL },
-  { "dcroat",                            600, NULL },
-  { "Ocircumflex",                       600, NULL },
-  { "Oacute",                            600, NULL },
-  { "scedilla",                          600, NULL },
-  { "ogonek",                            600, NULL },
-  { "ograve",                            600, NULL },
-  { "racute",                            600, NULL },
-  { "Tcaron",                            600, NULL },
-  { "Eogonek",                           600, NULL },
-  { "thorn",                             600, NULL },
-  { "degree",                            600, NULL },
-  { "registered",                        600, NULL },
-  { "radical",                           600, NULL },
-  { "Aring",                             600, NULL },
-  { "percent",                           600, NULL },
-  { "six",                               600, NULL },
-  { "paragraph",                         600, NULL },
-  { "dcaron",                            600, NULL },
-  { "Uogonek",                           600, NULL },
-  { "two",                               600, NULL },
-  { "summation",                         600, NULL },
-  { "Igrave",                            600, NULL },
-  { "Lacute",                            600, NULL },
-  { "ocircumflex",                       600, NULL },
-  { "oacute",                            600, NULL },
-  { "Uring",                             600, NULL },
-  { "Lcommaaccent",                      600, NULL },
-  { "tcaron",                            600, NULL },
-  { "eogonek",                           600, NULL },
-  { "Delta",                             600, NULL },
-  { "Ohungarumlaut",                     600, NULL },
-  { "asciicircum",                       600, NULL },
-  { "aring",                             600, NULL },
-  { "grave",                             600, NULL },
-  { "uogonek",                           600, NULL },
-  { "bracketright",                      600, NULL },
-  { "Iacute",                            600, NULL },
-  { "ampersand",                         600, NULL },
-  { "igrave",                            600, NULL },
-  { "lacute",                            600, NULL },
-  { "Ncaron",                            600, NULL },
-  { "plus",                              600, NULL },
-  { "uring",                             600, NULL },
-  { "quotesinglbase",                    600, NULL },
-  { "lcommaaccent",                      600, NULL },
-  { "Yacute",                            600, NULL },
-  { "ohungarumlaut",                     600, NULL },
-  { "threesuperior",                     600, NULL },
-  { "acute",                             600, NULL },
-  { "section",                           600, NULL },
-  { "dieresis",                          600, NULL },
-  { "iacute",                            600, NULL },
-  { "quotedblbase",                      600, NULL },
-  { "ncaron",                            600, NULL },
-  { "florin",                            600, NULL },
-  { "yacute",                            600, NULL },
-  { "Rcommaaccent",                      600, NULL },
-  { "fi",                                600, NULL },
-  { "fl",                                600, NULL },
-  { "Acircumflex",                       600, NULL },
-  { "Cacute",                            600, NULL },
-  { "Icircumflex",                       600, NULL },
-  { "guillemotleft",                     600, NULL },
-  { "germandbls",                        600, NULL },
-  { "Amacron",                           600, NULL },
-  { "seven",                             600, NULL },
-  { "Sacute",                            600, NULL },
-  { "ordmasculine",                      600, NULL },
-  { "dotlessi",                          600, NULL },
-  { "sterling",                          600, NULL },
-  { "notequal",                          600, NULL },
-  { "Imacron",                           600, NULL },
-  { "rcommaaccent",                      600, NULL },
-  { "Zdotaccent",                        600, NULL },
-  { "acircumflex",                       600, NULL },
-  { "cacute",                            600, NULL },
-  { "Ecaron",                            600, NULL },
-  { "icircumflex",                       600, NULL },
-  { "braceright",                        600, NULL },
-  { "quotedblright",                     600, NULL },
-  { "amacron",                           600, NULL },
-  { "sacute",                            600, NULL },
-  { "imacron",                           600, NULL },
-  { "cent",                              600, NULL },
-  { "currency",                          600, NULL },
-  { "logicalnot",                        600, NULL },
-  { "zdotaccent",                        600, NULL },
-  { "Atilde",                            600, NULL },
-  { "breve",                             600, NULL },
-  { "bar",                               600, NULL },
-  { "fraction",                          600, NULL },
-  { "less",                              600, NULL },
-  { "ecaron",                            600, NULL },
-  { "guilsinglleft",                     600, NULL },
-  { "exclam",                            600, NULL },
-  { "period",                            600, NULL },
-  { "Rcaron",                            600, NULL },
-  { "Kcommaaccent",                      600, NULL },
-  { "greater",                           600, NULL },
-  { "atilde",                            600, NULL },
-  { "brokenbar",                         600, NULL },
-  { "quoteleft",                         600, NULL },
-  { "Edotaccent",                        600, NULL },
-  { "onesuperior",                       600, NULL }
+  { "Ntilde",                            600, nullptr },
+  { "rcaron",                            600, nullptr },
+  { "kcommaaccent",                      600, nullptr },
+  { "Ncommaaccent",                      600, nullptr },
+  { "Zacute",                            600, nullptr },
+  { "comma",                             600, nullptr },
+  { "cedilla",                           600, nullptr },
+  { "plusminus",                         600, nullptr },
+  { "circumflex",                        600, nullptr },
+  { "dotaccent",                         600, nullptr },
+  { "edotaccent",                        600, nullptr },
+  { "asciitilde",                        600, nullptr },
+  { "colon",                             600, nullptr },
+  { "onehalf",                           600, nullptr },
+  { "dollar",                            600, nullptr },
+  { "Lcaron",                            600, nullptr },
+  { "ntilde",                            600, nullptr },
+  { "Aogonek",                           600, nullptr },
+  { "ncommaaccent",                      600, nullptr },
+  { "minus",                             600, nullptr },
+  { "Iogonek",                           600, nullptr },
+  { "zacute",                            600, nullptr },
+  { "yen",                               600, nullptr },
+  { "space",                             600, nullptr },
+  { "Omacron",                           600, nullptr },
+  { "questiondown",                      600, nullptr },
+  { "emdash",                            600, nullptr },
+  { "Agrave",                            600, nullptr },
+  { "three",                             600, nullptr },
+  { "numbersign",                        600, nullptr },
+  { "lcaron",                            600, nullptr },
+  { "A",                                 600, nullptr },
+  { "B",                                 600, nullptr },
+  { "C",                                 600, nullptr },
+  { "aogonek",                           600, nullptr },
+  { "D",                                 600, nullptr },
+  { "E",                                 600, nullptr },
+  { "onequarter",                        600, nullptr },
+  { "F",                                 600, nullptr },
+  { "G",                                 600, nullptr },
+  { "H",                                 600, nullptr },
+  { "I",                                 600, nullptr },
+  { "J",                                 600, nullptr },
+  { "K",                                 600, nullptr },
+  { "iogonek",                           600, nullptr },
+  { "backslash",                         600, nullptr },
+  { "L",                                 600, nullptr },
+  { "periodcentered",                    600, nullptr },
+  { "M",                                 600, nullptr },
+  { "N",                                 600, nullptr },
+  { "omacron",                           600, nullptr },
+  { "Tcommaaccent",                      600, nullptr },
+  { "O",                                 600, nullptr },
+  { "P",                                 600, nullptr },
+  { "Q",                                 600, nullptr },
+  { "Uhungarumlaut",                     600, nullptr },
+  { "R",                                 600, nullptr },
+  { "Aacute",                            600, nullptr },
+  { "caron",                             600, nullptr },
+  { "S",                                 600, nullptr },
+  { "T",                                 600, nullptr },
+  { "U",                                 600, nullptr },
+  { "agrave",                            600, nullptr },
+  { "V",                                 600, nullptr },
+  { "W",                                 600, nullptr },
+  { "X",                                 600, nullptr },
+  { "question",                          600, nullptr },
+  { "equal",                             600, nullptr },
+  { "Y",                                 600, nullptr },
+  { "Z",                                 600, nullptr },
+  { "four",                              600, nullptr },
+  { "a",                                 600, nullptr },
+  { "Gcommaaccent",                      600, nullptr },
+  { "b",                                 600, nullptr },
+  { "c",                                 600, nullptr },
+  { "d",                                 600, nullptr },
+  { "e",                                 600, nullptr },
+  { "f",                                 600, nullptr },
+  { "g",                                 600, nullptr },
+  { "bullet",                            600, nullptr },
+  { "h",                                 600, nullptr },
+  { "i",                                 600, nullptr },
+  { "Oslash",                            600, nullptr },
+  { "dagger",                            600, nullptr },
+  { "j",                                 600, nullptr },
+  { "k",                                 600, nullptr },
+  { "l",                                 600, nullptr },
+  { "m",                                 600, nullptr },
+  { "n",                                 600, nullptr },
+  { "tcommaaccent",                      600, nullptr },
+  { "o",                                 600, nullptr },
+  { "ordfeminine",                       600, nullptr },
+  { "ring",                              600, nullptr },
+  { "p",                                 600, nullptr },
+  { "q",                                 600, nullptr },
+  { "uhungarumlaut",                     600, nullptr },
+  { "r",                                 600, nullptr },
+  { "twosuperior",                       600, nullptr },
+  { "aacute",                            600, nullptr },
+  { "s",                                 600, nullptr },
+  { "OE",                                600, nullptr },
+  { "t",                                 600, nullptr },
+  { "divide",                            600, nullptr },
+  { "u",                                 600, nullptr },
+  { "Ccaron",                            600, nullptr },
+  { "v",                                 600, nullptr },
+  { "w",                                 600, nullptr },
+  { "x",                                 600, nullptr },
+  { "y",                                 600, nullptr },
+  { "z",                                 600, nullptr },
+  { "Gbreve",                            600, nullptr },
+  { "commaaccent",                       600, nullptr },
+  { "hungarumlaut",                      600, nullptr },
+  { "Idotaccent",                        600, nullptr },
+  { "Nacute",                            600, nullptr },
+  { "quotedbl",                          600, nullptr },
+  { "gcommaaccent",                      600, nullptr },
+  { "mu",                                600, nullptr },
+  { "greaterequal",                      600, nullptr },
+  { "Scaron",                            600, nullptr },
+  { "Lslash",                            600, nullptr },
+  { "semicolon",                         600, nullptr },
+  { "oslash",                            600, nullptr },
+  { "lessequal",                         600, nullptr },
+  { "lozenge",                           600, nullptr },
+  { "parenright",                        600, nullptr },
+  { "ccaron",                            600, nullptr },
+  { "Ecircumflex",                       600, nullptr },
+  { "gbreve",                            600, nullptr },
+  { "trademark",                         600, nullptr },
+  { "daggerdbl",                         600, nullptr },
+  { "nacute",                            600, nullptr },
+  { "macron",                            600, nullptr },
+  { "Otilde",                            600, nullptr },
+  { "Emacron",                           600, nullptr },
+  { "ellipsis",                          600, nullptr },
+  { "scaron",                            600, nullptr },
+  { "AE",                                600, nullptr },
+  { "Ucircumflex",                       600, nullptr },
+  { "lslash",                            600, nullptr },
+  { "quotedblleft",                      600, nullptr },
+  { "guilsinglright",                    600, nullptr },
+  { "hyphen",                            600, nullptr },
+  { "quotesingle",                       600, nullptr },
+  { "eight",                             600, nullptr },
+  { "exclamdown",                        600, nullptr },
+  { "endash",                            600, nullptr },
+  { "oe",                                600, nullptr },
+  { "Abreve",                            600, nullptr },
+  { "Umacron",                           600, nullptr },
+  { "ecircumflex",                       600, nullptr },
+  { "Adieresis",                         600, nullptr },
+  { "copyright",                         600, nullptr },
+  { "Egrave",                            600, nullptr },
+  { "slash",                             600, nullptr },
+  { "Edieresis",                         600, nullptr },
+  { "otilde",                            600, nullptr },
+  { "Idieresis",                         600, nullptr },
+  { "parenleft",                         600, nullptr },
+  { "one",                               600, nullptr },
+  { "emacron",                           600, nullptr },
+  { "Odieresis",                         600, nullptr },
+  { "ucircumflex",                       600, nullptr },
+  { "bracketleft",                       600, nullptr },
+  { "Ugrave",                            600, nullptr },
+  { "quoteright",                        600, nullptr },
+  { "Udieresis",                         600, nullptr },
+  { "perthousand",                       600, nullptr },
+  { "Ydieresis",                         600, nullptr },
+  { "umacron",                           600, nullptr },
+  { "abreve",                            600, nullptr },
+  { "Eacute",                            600, nullptr },
+  { "adieresis",                         600, nullptr },
+  { "egrave",                            600, nullptr },
+  { "edieresis",                         600, nullptr },
+  { "idieresis",                         600, nullptr },
+  { "Eth",                               600, nullptr },
+  { "ae",                                600, nullptr },
+  { "asterisk",                          600, nullptr },
+  { "odieresis",                         600, nullptr },
+  { "Uacute",                            600, nullptr },
+  { "ugrave",                            600, nullptr },
+  { "nine",                              600, nullptr },
+  { "five",                              600, nullptr },
+  { "udieresis",                         600, nullptr },
+  { "Zcaron",                            600, nullptr },
+  { "Scommaaccent",                      600, nullptr },
+  { "threequarters",                     600, nullptr },
+  { "guillemotright",                    600, nullptr },
+  { "Ccedilla",                          600, nullptr },
+  { "ydieresis",                         600, nullptr },
+  { "tilde",                             600, nullptr },
+  { "at",                                600, nullptr },
+  { "eacute",                            600, nullptr },
+  { "underscore",                        600, nullptr },
+  { "Euro",                              600, nullptr },
+  { "Dcroat",                            600, nullptr },
+  { "multiply",                          600, nullptr },
+  { "zero",                              600, nullptr },
+  { "eth",                               600, nullptr },
+  { "Scedilla",                          600, nullptr },
+  { "Ograve",                            600, nullptr },
+  { "Racute",                            600, nullptr },
+  { "partialdiff",                       600, nullptr },
+  { "uacute",                            600, nullptr },
+  { "braceleft",                         600, nullptr },
+  { "Thorn",                             600, nullptr },
+  { "zcaron",                            600, nullptr },
+  { "scommaaccent",                      600, nullptr },
+  { "ccedilla",                          600, nullptr },
+  { "Dcaron",                            600, nullptr },
+  { "dcroat",                            600, nullptr },
+  { "Ocircumflex",                       600, nullptr },
+  { "Oacute",                            600, nullptr },
+  { "scedilla",                          600, nullptr },
+  { "ogonek",                            600, nullptr },
+  { "ograve",                            600, nullptr },
+  { "racute",                            600, nullptr },
+  { "Tcaron",                            600, nullptr },
+  { "Eogonek",                           600, nullptr },
+  { "thorn",                             600, nullptr },
+  { "degree",                            600, nullptr },
+  { "registered",                        600, nullptr },
+  { "radical",                           600, nullptr },
+  { "Aring",                             600, nullptr },
+  { "percent",                           600, nullptr },
+  { "six",                               600, nullptr },
+  { "paragraph",                         600, nullptr },
+  { "dcaron",                            600, nullptr },
+  { "Uogonek",                           600, nullptr },
+  { "two",                               600, nullptr },
+  { "summation",                         600, nullptr },
+  { "Igrave",                            600, nullptr },
+  { "Lacute",                            600, nullptr },
+  { "ocircumflex",                       600, nullptr },
+  { "oacute",                            600, nullptr },
+  { "Uring",                             600, nullptr },
+  { "Lcommaaccent",                      600, nullptr },
+  { "tcaron",                            600, nullptr },
+  { "eogonek",                           600, nullptr },
+  { "Delta",                             600, nullptr },
+  { "Ohungarumlaut",                     600, nullptr },
+  { "asciicircum",                       600, nullptr },
+  { "aring",                             600, nullptr },
+  { "grave",                             600, nullptr },
+  { "uogonek",                           600, nullptr },
+  { "bracketright",                      600, nullptr },
+  { "Iacute",                            600, nullptr },
+  { "ampersand",                         600, nullptr },
+  { "igrave",                            600, nullptr },
+  { "lacute",                            600, nullptr },
+  { "Ncaron",                            600, nullptr },
+  { "plus",                              600, nullptr },
+  { "uring",                             600, nullptr },
+  { "quotesinglbase",                    600, nullptr },
+  { "lcommaaccent",                      600, nullptr },
+  { "Yacute",                            600, nullptr },
+  { "ohungarumlaut",                     600, nullptr },
+  { "threesuperior",                     600, nullptr },
+  { "acute",                             600, nullptr },
+  { "section",                           600, nullptr },
+  { "dieresis",                          600, nullptr },
+  { "iacute",                            600, nullptr },
+  { "quotedblbase",                      600, nullptr },
+  { "ncaron",                            600, nullptr },
+  { "florin",                            600, nullptr },
+  { "yacute",                            600, nullptr },
+  { "Rcommaaccent",                      600, nullptr },
+  { "fi",                                600, nullptr },
+  { "fl",                                600, nullptr },
+  { "Acircumflex",                       600, nullptr },
+  { "Cacute",                            600, nullptr },
+  { "Icircumflex",                       600, nullptr },
+  { "guillemotleft",                     600, nullptr },
+  { "germandbls",                        600, nullptr },
+  { "Amacron",                           600, nullptr },
+  { "seven",                             600, nullptr },
+  { "Sacute",                            600, nullptr },
+  { "ordmasculine",                      600, nullptr },
+  { "dotlessi",                          600, nullptr },
+  { "sterling",                          600, nullptr },
+  { "notequal",                          600, nullptr },
+  { "Imacron",                           600, nullptr },
+  { "rcommaaccent",                      600, nullptr },
+  { "Zdotaccent",                        600, nullptr },
+  { "acircumflex",                       600, nullptr },
+  { "cacute",                            600, nullptr },
+  { "Ecaron",                            600, nullptr },
+  { "icircumflex",                       600, nullptr },
+  { "braceright",                        600, nullptr },
+  { "quotedblright",                     600, nullptr },
+  { "amacron",                           600, nullptr },
+  { "sacute",                            600, nullptr },
+  { "imacron",                           600, nullptr },
+  { "cent",                              600, nullptr },
+  { "currency",                          600, nullptr },
+  { "logicalnot",                        600, nullptr },
+  { "zdotaccent",                        600, nullptr },
+  { "Atilde",                            600, nullptr },
+  { "breve",                             600, nullptr },
+  { "bar",                               600, nullptr },
+  { "fraction",                          600, nullptr },
+  { "less",                              600, nullptr },
+  { "ecaron",                            600, nullptr },
+  { "guilsinglleft",                     600, nullptr },
+  { "exclam",                            600, nullptr },
+  { "period",                            600, nullptr },
+  { "Rcaron",                            600, nullptr },
+  { "Kcommaaccent",                      600, nullptr },
+  { "greater",                           600, nullptr },
+  { "atilde",                            600, nullptr },
+  { "brokenbar",                         600, nullptr },
+  { "quoteleft",                         600, nullptr },
+  { "Edotaccent",                        600, nullptr },
+  { "onesuperior",                       600, nullptr }
 };
 
 static BuiltinFontWidth courierBoldObliqueWidthsTab[] = {
-  { "Ntilde",                            600, NULL },
-  { "rcaron",                            600, NULL },
-  { "kcommaaccent",                      600, NULL },
-  { "Ncommaaccent",                      600, NULL },
-  { "Zacute",                            600, NULL },
-  { "comma",                             600, NULL },
-  { "cedilla",                           600, NULL },
-  { "plusminus",                         600, NULL },
-  { "circumflex",                        600, NULL },
-  { "dotaccent",                         600, NULL },
-  { "edotaccent",                        600, NULL },
-  { "asciitilde",                        600, NULL },
-  { "colon",                             600, NULL },
-  { "onehalf",                           600, NULL },
-  { "dollar",                            600, NULL },
-  { "Lcaron",                            600, NULL },
-  { "ntilde",                            600, NULL },
-  { "Aogonek",                           600, NULL },
-  { "ncommaaccent",                      600, NULL },
-  { "minus",                             600, NULL },
-  { "Iogonek",                           600, NULL },
-  { "zacute",                            600, NULL },
-  { "yen",                               600, NULL },
-  { "space",                             600, NULL },
-  { "Omacron",                           600, NULL },
-  { "questiondown",                      600, NULL },
-  { "emdash",                            600, NULL },
-  { "Agrave",                            600, NULL },
-  { "three",                             600, NULL },
-  { "numbersign",                        600, NULL },
-  { "lcaron",                            600, NULL },
-  { "A",                                 600, NULL },
-  { "B",                                 600, NULL },
-  { "C",                                 600, NULL },
-  { "aogonek",                           600, NULL },
-  { "D",                                 600, NULL },
-  { "E",                                 600, NULL },
-  { "onequarter",                        600, NULL },
-  { "F",                                 600, NULL },
-  { "G",                                 600, NULL },
-  { "H",                                 600, NULL },
-  { "I",                                 600, NULL },
-  { "J",                                 600, NULL },
-  { "K",                                 600, NULL },
-  { "iogonek",                           600, NULL },
-  { "backslash",                         600, NULL },
-  { "L",                                 600, NULL },
-  { "periodcentered",                    600, NULL },
-  { "M",                                 600, NULL },
-  { "N",                                 600, NULL },
-  { "omacron",                           600, NULL },
-  { "Tcommaaccent",                      600, NULL },
-  { "O",                                 600, NULL },
-  { "P",                                 600, NULL },
-  { "Q",                                 600, NULL },
-  { "Uhungarumlaut",                     600, NULL },
-  { "R",                                 600, NULL },
-  { "Aacute",                            600, NULL },
-  { "caron",                             600, NULL },
-  { "S",                                 600, NULL },
-  { "T",                                 600, NULL },
-  { "U",                                 600, NULL },
-  { "agrave",                            600, NULL },
-  { "V",                                 600, NULL },
-  { "W",                                 600, NULL },
-  { "X",                                 600, NULL },
-  { "question",                          600, NULL },
-  { "equal",                             600, NULL },
-  { "Y",                                 600, NULL },
-  { "Z",                                 600, NULL },
-  { "four",                              600, NULL },
-  { "a",                                 600, NULL },
-  { "Gcommaaccent",                      600, NULL },
-  { "b",                                 600, NULL },
-  { "c",                                 600, NULL },
-  { "d",                                 600, NULL },
-  { "e",                                 600, NULL },
-  { "f",                                 600, NULL },
-  { "g",                                 600, NULL },
-  { "bullet",                            600, NULL },
-  { "h",                                 600, NULL },
-  { "i",                                 600, NULL },
-  { "Oslash",                            600, NULL },
-  { "dagger",                            600, NULL },
-  { "j",                                 600, NULL },
-  { "k",                                 600, NULL },
-  { "l",                                 600, NULL },
-  { "m",                                 600, NULL },
-  { "n",                                 600, NULL },
-  { "tcommaaccent",                      600, NULL },
-  { "o",                                 600, NULL },
-  { "ordfeminine",                       600, NULL },
-  { "ring",                              600, NULL },
-  { "p",                                 600, NULL },
-  { "q",                                 600, NULL },
-  { "uhungarumlaut",                     600, NULL },
-  { "r",                                 600, NULL },
-  { "twosuperior",                       600, NULL },
-  { "aacute",                            600, NULL },
-  { "s",                                 600, NULL },
-  { "OE",                                600, NULL },
-  { "t",                                 600, NULL },
-  { "divide",                            600, NULL },
-  { "u",                                 600, NULL },
-  { "Ccaron",                            600, NULL },
-  { "v",                                 600, NULL },
-  { "w",                                 600, NULL },
-  { "x",                                 600, NULL },
-  { "y",                                 600, NULL },
-  { "z",                                 600, NULL },
-  { "Gbreve",                            600, NULL },
-  { "commaaccent",                       600, NULL },
-  { "hungarumlaut",                      600, NULL },
-  { "Idotaccent",                        600, NULL },
-  { "Nacute",                            600, NULL },
-  { "quotedbl",                          600, NULL },
-  { "gcommaaccent",                      600, NULL },
-  { "mu",                                600, NULL },
-  { "greaterequal",                      600, NULL },
-  { "Scaron",                            600, NULL },
-  { "Lslash",                            600, NULL },
-  { "semicolon",                         600, NULL },
-  { "oslash",                            600, NULL },
-  { "lessequal",                         600, NULL },
-  { "lozenge",                           600, NULL },
-  { "parenright",                        600, NULL },
-  { "ccaron",                            600, NULL },
-  { "Ecircumflex",                       600, NULL },
-  { "gbreve",                            600, NULL },
-  { "trademark",                         600, NULL },
-  { "daggerdbl",                         600, NULL },
-  { "nacute",                            600, NULL },
-  { "macron",                            600, NULL },
-  { "Otilde",                            600, NULL },
-  { "Emacron",                           600, NULL },
-  { "ellipsis",                          600, NULL },
-  { "scaron",                            600, NULL },
-  { "AE",                                600, NULL },
-  { "Ucircumflex",                       600, NULL },
-  { "lslash",                            600, NULL },
-  { "quotedblleft",                      600, NULL },
-  { "guilsinglright",                    600, NULL },
-  { "hyphen",                            600, NULL },
-  { "quotesingle",                       600, NULL },
-  { "eight",                             600, NULL },
-  { "exclamdown",                        600, NULL },
-  { "endash",                            600, NULL },
-  { "oe",                                600, NULL },
-  { "Abreve",                            600, NULL },
-  { "Umacron",                           600, NULL },
-  { "ecircumflex",                       600, NULL },
-  { "Adieresis",                         600, NULL },
-  { "copyright",                         600, NULL },
-  { "Egrave",                            600, NULL },
-  { "slash",                             600, NULL },
-  { "Edieresis",                         600, NULL },
-  { "otilde",                            600, NULL },
-  { "Idieresis",                         600, NULL },
-  { "parenleft",                         600, NULL },
-  { "one",                               600, NULL },
-  { "emacron",                           600, NULL },
-  { "Odieresis",                         600, NULL },
-  { "ucircumflex",                       600, NULL },
-  { "bracketleft",                       600, NULL },
-  { "Ugrave",                            600, NULL },
-  { "quoteright",                        600, NULL },
-  { "Udieresis",                         600, NULL },
-  { "perthousand",                       600, NULL },
-  { "Ydieresis",                         600, NULL },
-  { "umacron",                           600, NULL },
-  { "abreve",                            600, NULL },
-  { "Eacute",                            600, NULL },
-  { "adieresis",                         600, NULL },
-  { "egrave",                            600, NULL },
-  { "edieresis",                         600, NULL },
-  { "idieresis",                         600, NULL },
-  { "Eth",                               600, NULL },
-  { "ae",                                600, NULL },
-  { "asterisk",                          600, NULL },
-  { "odieresis",                         600, NULL },
-  { "Uacute",                            600, NULL },
-  { "ugrave",                            600, NULL },
-  { "nine",                              600, NULL },
-  { "five",                              600, NULL },
-  { "udieresis",                         600, NULL },
-  { "Zcaron",                            600, NULL },
-  { "Scommaaccent",                      600, NULL },
-  { "threequarters",                     600, NULL },
-  { "guillemotright",                    600, NULL },
-  { "Ccedilla",                          600, NULL },
-  { "ydieresis",                         600, NULL },
-  { "tilde",                             600, NULL },
-  { "at",                                600, NULL },
-  { "eacute",                            600, NULL },
-  { "underscore",                        600, NULL },
-  { "Euro",                              600, NULL },
-  { "Dcroat",                            600, NULL },
-  { "multiply",                          600, NULL },
-  { "zero",                              600, NULL },
-  { "eth",                               600, NULL },
-  { "Scedilla",                          600, NULL },
-  { "Ograve",                            600, NULL },
-  { "Racute",                            600, NULL },
-  { "partialdiff",                       600, NULL },
-  { "uacute",                            600, NULL },
-  { "braceleft",                         600, NULL },
-  { "Thorn",                             600, NULL },
-  { "zcaron",                            600, NULL },
-  { "scommaaccent",                      600, NULL },
-  { "ccedilla",                          600, NULL },
-  { "Dcaron",                            600, NULL },
-  { "dcroat",                            600, NULL },
-  { "Ocircumflex",                       600, NULL },
-  { "Oacute",                            600, NULL },
-  { "scedilla",                          600, NULL },
-  { "ogonek",                            600, NULL },
-  { "ograve",                            600, NULL },
-  { "racute",                            600, NULL },
-  { "Tcaron",                            600, NULL },
-  { "Eogonek",                           600, NULL },
-  { "thorn",                             600, NULL },
-  { "degree",                            600, NULL },
-  { "registered",                        600, NULL },
-  { "radical",                           600, NULL },
-  { "Aring",                             600, NULL },
-  { "percent",                           600, NULL },
-  { "six",                               600, NULL },
-  { "paragraph",                         600, NULL },
-  { "dcaron",                            600, NULL },
-  { "Uogonek",                           600, NULL },
-  { "two",                               600, NULL },
-  { "summation",                         600, NULL },
-  { "Igrave",                            600, NULL },
-  { "Lacute",                            600, NULL },
-  { "ocircumflex",                       600, NULL },
-  { "oacute",                            600, NULL },
-  { "Uring",                             600, NULL },
-  { "Lcommaaccent",                      600, NULL },
-  { "tcaron",                            600, NULL },
-  { "eogonek",                           600, NULL },
-  { "Delta",                             600, NULL },
-  { "Ohungarumlaut",                     600, NULL },
-  { "asciicircum",                       600, NULL },
-  { "aring",                             600, NULL },
-  { "grave",                             600, NULL },
-  { "uogonek",                           600, NULL },
-  { "bracketright",                      600, NULL },
-  { "Iacute",                            600, NULL },
-  { "ampersand",                         600, NULL },
-  { "igrave",                            600, NULL },
-  { "lacute",                            600, NULL },
-  { "Ncaron",                            600, NULL },
-  { "plus",                              600, NULL },
-  { "uring",                             600, NULL },
-  { "quotesinglbase",                    600, NULL },
-  { "lcommaaccent",                      600, NULL },
-  { "Yacute",                            600, NULL },
-  { "ohungarumlaut",                     600, NULL },
-  { "threesuperior",                     600, NULL },
-  { "acute",                             600, NULL },
-  { "section",                           600, NULL },
-  { "dieresis",                          600, NULL },
-  { "iacute",                            600, NULL },
-  { "quotedblbase",                      600, NULL },
-  { "ncaron",                            600, NULL },
-  { "florin",                            600, NULL },
-  { "yacute",                            600, NULL },
-  { "Rcommaaccent",                      600, NULL },
-  { "fi",                                600, NULL },
-  { "fl",                                600, NULL },
-  { "Acircumflex",                       600, NULL },
-  { "Cacute",                            600, NULL },
-  { "Icircumflex",                       600, NULL },
-  { "guillemotleft",                     600, NULL },
-  { "germandbls",                        600, NULL },
-  { "Amacron",                           600, NULL },
-  { "seven",                             600, NULL },
-  { "Sacute",                            600, NULL },
-  { "ordmasculine",                      600, NULL },
-  { "dotlessi",                          600, NULL },
-  { "sterling",                          600, NULL },
-  { "notequal",                          600, NULL },
-  { "Imacron",                           600, NULL },
-  { "rcommaaccent",                      600, NULL },
-  { "Zdotaccent",                        600, NULL },
-  { "acircumflex",                       600, NULL },
-  { "cacute",                            600, NULL },
-  { "Ecaron",                            600, NULL },
-  { "icircumflex",                       600, NULL },
-  { "braceright",                        600, NULL },
-  { "quotedblright",                     600, NULL },
-  { "amacron",                           600, NULL },
-  { "sacute",                            600, NULL },
-  { "imacron",                           600, NULL },
-  { "cent",                              600, NULL },
-  { "currency",                          600, NULL },
-  { "logicalnot",                        600, NULL },
-  { "zdotaccent",                        600, NULL },
-  { "Atilde",                            600, NULL },
-  { "breve",                             600, NULL },
-  { "bar",                               600, NULL },
-  { "fraction",                          600, NULL },
-  { "less",                              600, NULL },
-  { "ecaron",                            600, NULL },
-  { "guilsinglleft",                     600, NULL },
-  { "exclam",                            600, NULL },
-  { "period",                            600, NULL },
-  { "Rcaron",                            600, NULL },
-  { "Kcommaaccent",                      600, NULL },
-  { "greater",                           600, NULL },
-  { "atilde",                            600, NULL },
-  { "brokenbar",                         600, NULL },
-  { "quoteleft",                         600, NULL },
-  { "Edotaccent",                        600, NULL },
-  { "onesuperior",                       600, NULL }
+  { "Ntilde",                            600, nullptr },
+  { "rcaron",                            600, nullptr },
+  { "kcommaaccent",                      600, nullptr },
+  { "Ncommaaccent",                      600, nullptr },
+  { "Zacute",                            600, nullptr },
+  { "comma",                             600, nullptr },
+  { "cedilla",                           600, nullptr },
+  { "plusminus",                         600, nullptr },
+  { "circumflex",                        600, nullptr },
+  { "dotaccent",                         600, nullptr },
+  { "edotaccent",                        600, nullptr },
+  { "asciitilde",                        600, nullptr },
+  { "colon",                             600, nullptr },
+  { "onehalf",                           600, nullptr },
+  { "dollar",                            600, nullptr },
+  { "Lcaron",                            600, nullptr },
+  { "ntilde",                            600, nullptr },
+  { "Aogonek",                           600, nullptr },
+  { "ncommaaccent",                      600, nullptr },
+  { "minus",                             600, nullptr },
+  { "Iogonek",                           600, nullptr },
+  { "zacute",                            600, nullptr },
+  { "yen",                               600, nullptr },
+  { "space",                             600, nullptr },
+  { "Omacron",                           600, nullptr },
+  { "questiondown",                      600, nullptr },
+  { "emdash",                            600, nullptr },
+  { "Agrave",                            600, nullptr },
+  { "three",                             600, nullptr },
+  { "numbersign",                        600, nullptr },
+  { "lcaron",                            600, nullptr },
+  { "A",                                 600, nullptr },
+  { "B",                                 600, nullptr },
+  { "C",                                 600, nullptr },
+  { "aogonek",                           600, nullptr },
+  { "D",                                 600, nullptr },
+  { "E",                                 600, nullptr },
+  { "onequarter",                        600, nullptr },
+  { "F",                                 600, nullptr },
+  { "G",                                 600, nullptr },
+  { "H",                                 600, nullptr },
+  { "I",                                 600, nullptr },
+  { "J",                                 600, nullptr },
+  { "K",                                 600, nullptr },
+  { "iogonek",                           600, nullptr },
+  { "backslash",                         600, nullptr },
+  { "L",                                 600, nullptr },
+  { "periodcentered",                    600, nullptr },
+  { "M",                                 600, nullptr },
+  { "N",                                 600, nullptr },
+  { "omacron",                           600, nullptr },
+  { "Tcommaaccent",                      600, nullptr },
+  { "O",                                 600, nullptr },
+  { "P",                                 600, nullptr },
+  { "Q",                                 600, nullptr },
+  { "Uhungarumlaut",                     600, nullptr },
+  { "R",                                 600, nullptr },
+  { "Aacute",                            600, nullptr },
+  { "caron",                             600, nullptr },
+  { "S",                                 600, nullptr },
+  { "T",                                 600, nullptr },
+  { "U",                                 600, nullptr },
+  { "agrave",                            600, nullptr },
+  { "V",                                 600, nullptr },
+  { "W",                                 600, nullptr },
+  { "X",                                 600, nullptr },
+  { "question",                          600, nullptr },
+  { "equal",                             600, nullptr },
+  { "Y",                                 600, nullptr },
+  { "Z",                                 600, nullptr },
+  { "four",                              600, nullptr },
+  { "a",                                 600, nullptr },
+  { "Gcommaaccent",                      600, nullptr },
+  { "b",                                 600, nullptr },
+  { "c",                                 600, nullptr },
+  { "d",                                 600, nullptr },
+  { "e",                                 600, nullptr },
+  { "f",                                 600, nullptr },
+  { "g",                                 600, nullptr },
+  { "bullet",                            600, nullptr },
+  { "h",                                 600, nullptr },
+  { "i",                                 600, nullptr },
+  { "Oslash",                            600, nullptr },
+  { "dagger",                            600, nullptr },
+  { "j",                                 600, nullptr },
+  { "k",                                 600, nullptr },
+  { "l",                                 600, nullptr },
+  { "m",                                 600, nullptr },
+  { "n",                                 600, nullptr },
+  { "tcommaaccent",                      600, nullptr },
+  { "o",                                 600, nullptr },
+  { "ordfeminine",                       600, nullptr },
+  { "ring",                              600, nullptr },
+  { "p",                                 600, nullptr },
+  { "q",                                 600, nullptr },
+  { "uhungarumlaut",                     600, nullptr },
+  { "r",                                 600, nullptr },
+  { "twosuperior",                       600, nullptr },
+  { "aacute",                            600, nullptr },
+  { "s",                                 600, nullptr },
+  { "OE",                                600, nullptr },
+  { "t",                                 600, nullptr },
+  { "divide",                            600, nullptr },
+  { "u",                                 600, nullptr },
+  { "Ccaron",                            600, nullptr },
+  { "v",                                 600, nullptr },
+  { "w",                                 600, nullptr },
+  { "x",                                 600, nullptr },
+  { "y",                                 600, nullptr },
+  { "z",                                 600, nullptr },
+  { "Gbreve",                            600, nullptr },
+  { "commaaccent",                       600, nullptr },
+  { "hungarumlaut",                      600, nullptr },
+  { "Idotaccent",                        600, nullptr },
+  { "Nacute",                            600, nullptr },
+  { "quotedbl",                          600, nullptr },
+  { "gcommaaccent",                      600, nullptr },
+  { "mu",                                600, nullptr },
+  { "greaterequal",                      600, nullptr },
+  { "Scaron",                            600, nullptr },
+  { "Lslash",                            600, nullptr },
+  { "semicolon",                         600, nullptr },
+  { "oslash",                            600, nullptr },
+  { "lessequal",                         600, nullptr },
+  { "lozenge",                           600, nullptr },
+  { "parenright",                        600, nullptr },
+  { "ccaron",                            600, nullptr },
+  { "Ecircumflex",                       600, nullptr },
+  { "gbreve",                            600, nullptr },
+  { "trademark",                         600, nullptr },
+  { "daggerdbl",                         600, nullptr },
+  { "nacute",                            600, nullptr },
+  { "macron",                            600, nullptr },
+  { "Otilde",                            600, nullptr },
+  { "Emacron",                           600, nullptr },
+  { "ellipsis",                          600, nullptr },
+  { "scaron",                            600, nullptr },
+  { "AE",                                600, nullptr },
+  { "Ucircumflex",                       600, nullptr },
+  { "lslash",                            600, nullptr },
+  { "quotedblleft",                      600, nullptr },
+  { "guilsinglright",                    600, nullptr },
+  { "hyphen",                            600, nullptr },
+  { "quotesingle",                       600, nullptr },
+  { "eight",                             600, nullptr },
+  { "exclamdown",                        600, nullptr },
+  { "endash",                            600, nullptr },
+  { "oe",                                600, nullptr },
+  { "Abreve",                            600, nullptr },
+  { "Umacron",                           600, nullptr },
+  { "ecircumflex",                       600, nullptr },
+  { "Adieresis",                         600, nullptr },
+  { "copyright",                         600, nullptr },
+  { "Egrave",                            600, nullptr },
+  { "slash",                             600, nullptr },
+  { "Edieresis",                         600, nullptr },
+  { "otilde",                            600, nullptr },
+  { "Idieresis",                         600, nullptr },
+  { "parenleft",                         600, nullptr },
+  { "one",                               600, nullptr },
+  { "emacron",                           600, nullptr },
+  { "Odieresis",                         600, nullptr },
+  { "ucircumflex",                       600, nullptr },
+  { "bracketleft",                       600, nullptr },
+  { "Ugrave",                            600, nullptr },
+  { "quoteright",                        600, nullptr },
+  { "Udieresis",                         600, nullptr },
+  { "perthousand",                       600, nullptr },
+  { "Ydieresis",                         600, nullptr },
+  { "umacron",                           600, nullptr },
+  { "abreve",                            600, nullptr },
+  { "Eacute",                            600, nullptr },
+  { "adieresis",                         600, nullptr },
+  { "egrave",                            600, nullptr },
+  { "edieresis",                         600, nullptr },
+  { "idieresis",                         600, nullptr },
+  { "Eth",                               600, nullptr },
+  { "ae",                                600, nullptr },
+  { "asterisk",                          600, nullptr },
+  { "odieresis",                         600, nullptr },
+  { "Uacute",                            600, nullptr },
+  { "ugrave",                            600, nullptr },
+  { "nine",                              600, nullptr },
+  { "five",                              600, nullptr },
+  { "udieresis",                         600, nullptr },
+  { "Zcaron",                            600, nullptr },
+  { "Scommaaccent",                      600, nullptr },
+  { "threequarters",                     600, nullptr },
+  { "guillemotright",                    600, nullptr },
+  { "Ccedilla",                          600, nullptr },
+  { "ydieresis",                         600, nullptr },
+  { "tilde",                             600, nullptr },
+  { "at",                                600, nullptr },
+  { "eacute",                            600, nullptr },
+  { "underscore",                        600, nullptr },
+  { "Euro",                              600, nullptr },
+  { "Dcroat",                            600, nullptr },
+  { "multiply",                          600, nullptr },
+  { "zero",                              600, nullptr },
+  { "eth",                               600, nullptr },
+  { "Scedilla",                          600, nullptr },
+  { "Ograve",                            600, nullptr },
+  { "Racute",                            600, nullptr },
+  { "partialdiff",                       600, nullptr },
+  { "uacute",                            600, nullptr },
+  { "braceleft",                         600, nullptr },
+  { "Thorn",                             600, nullptr },
+  { "zcaron",                            600, nullptr },
+  { "scommaaccent",                      600, nullptr },
+  { "ccedilla",                          600, nullptr },
+  { "Dcaron",                            600, nullptr },
+  { "dcroat",                            600, nullptr },
+  { "Ocircumflex",                       600, nullptr },
+  { "Oacute",                            600, nullptr },
+  { "scedilla",                          600, nullptr },
+  { "ogonek",                            600, nullptr },
+  { "ograve",                            600, nullptr },
+  { "racute",                            600, nullptr },
+  { "Tcaron",                            600, nullptr },
+  { "Eogonek",                           600, nullptr },
+  { "thorn",                             600, nullptr },
+  { "degree",                            600, nullptr },
+  { "registered",                        600, nullptr },
+  { "radical",                           600, nullptr },
+  { "Aring",                             600, nullptr },
+  { "percent",                           600, nullptr },
+  { "six",                               600, nullptr },
+  { "paragraph",                         600, nullptr },
+  { "dcaron",                            600, nullptr },
+  { "Uogonek",                           600, nullptr },
+  { "two",                               600, nullptr },
+  { "summation",                         600, nullptr },
+  { "Igrave",                            600, nullptr },
+  { "Lacute",                            600, nullptr },
+  { "ocircumflex",                       600, nullptr },
+  { "oacute",                            600, nullptr },
+  { "Uring",                             600, nullptr },
+  { "Lcommaaccent",                      600, nullptr },
+  { "tcaron",                            600, nullptr },
+  { "eogonek",                           600, nullptr },
+  { "Delta",                             600, nullptr },
+  { "Ohungarumlaut",                     600, nullptr },
+  { "asciicircum",                       600, nullptr },
+  { "aring",                             600, nullptr },
+  { "grave",                             600, nullptr },
+  { "uogonek",                           600, nullptr },
+  { "bracketright",                      600, nullptr },
+  { "Iacute",                            600, nullptr },
+  { "ampersand",                         600, nullptr },
+  { "igrave",                            600, nullptr },
+  { "lacute",                            600, nullptr },
+  { "Ncaron",                            600, nullptr },
+  { "plus",                              600, nullptr },
+  { "uring",                             600, nullptr },
+  { "quotesinglbase",                    600, nullptr },
+  { "lcommaaccent",                      600, nullptr },
+  { "Yacute",                            600, nullptr },
+  { "ohungarumlaut",                     600, nullptr },
+  { "threesuperior",                     600, nullptr },
+  { "acute",                             600, nullptr },
+  { "section",                           600, nullptr },
+  { "dieresis",                          600, nullptr },
+  { "iacute",                            600, nullptr },
+  { "quotedblbase",                      600, nullptr },
+  { "ncaron",                            600, nullptr },
+  { "florin",                            600, nullptr },
+  { "yacute",                            600, nullptr },
+  { "Rcommaaccent",                      600, nullptr },
+  { "fi",                                600, nullptr },
+  { "fl",                                600, nullptr },
+  { "Acircumflex",                       600, nullptr },
+  { "Cacute",                            600, nullptr },
+  { "Icircumflex",                       600, nullptr },
+  { "guillemotleft",                     600, nullptr },
+  { "germandbls",                        600, nullptr },
+  { "Amacron",                           600, nullptr },
+  { "seven",                             600, nullptr },
+  { "Sacute",                            600, nullptr },
+  { "ordmasculine",                      600, nullptr },
+  { "dotlessi",                          600, nullptr },
+  { "sterling",                          600, nullptr },
+  { "notequal",                          600, nullptr },
+  { "Imacron",                           600, nullptr },
+  { "rcommaaccent",                      600, nullptr },
+  { "Zdotaccent",                        600, nullptr },
+  { "acircumflex",                       600, nullptr },
+  { "cacute",                            600, nullptr },
+  { "Ecaron",                            600, nullptr },
+  { "icircumflex",                       600, nullptr },
+  { "braceright",                        600, nullptr },
+  { "quotedblright",                     600, nullptr },
+  { "amacron",                           600, nullptr },
+  { "sacute",                            600, nullptr },
+  { "imacron",                           600, nullptr },
+  { "cent",                              600, nullptr },
+  { "currency",                          600, nullptr },
+  { "logicalnot",                        600, nullptr },
+  { "zdotaccent",                        600, nullptr },
+  { "Atilde",                            600, nullptr },
+  { "breve",                             600, nullptr },
+  { "bar",                               600, nullptr },
+  { "fraction",                          600, nullptr },
+  { "less",                              600, nullptr },
+  { "ecaron",                            600, nullptr },
+  { "guilsinglleft",                     600, nullptr },
+  { "exclam",                            600, nullptr },
+  { "period",                            600, nullptr },
+  { "Rcaron",                            600, nullptr },
+  { "Kcommaaccent",                      600, nullptr },
+  { "greater",                           600, nullptr },
+  { "atilde",                            600, nullptr },
+  { "brokenbar",                         600, nullptr },
+  { "quoteleft",                         600, nullptr },
+  { "Edotaccent",                        600, nullptr },
+  { "onesuperior",                       600, nullptr }
 };
 
 static BuiltinFontWidth courierObliqueWidthsTab[] = {
-  { "Ntilde",                            600, NULL },
-  { "rcaron",                            600, NULL },
-  { "kcommaaccent",                      600, NULL },
-  { "Ncommaaccent",                      600, NULL },
-  { "Zacute",                            600, NULL },
-  { "comma",                             600, NULL },
-  { "cedilla",                           600, NULL },
-  { "plusminus",                         600, NULL },
-  { "circumflex",                        600, NULL },
-  { "dotaccent",                         600, NULL },
-  { "edotaccent",                        600, NULL },
-  { "asciitilde",                        600, NULL },
-  { "colon",                             600, NULL },
-  { "onehalf",                           600, NULL },
-  { "dollar",                            600, NULL },
-  { "Lcaron",                            600, NULL },
-  { "ntilde",                            600, NULL },
-  { "Aogonek",                           600, NULL },
-  { "ncommaaccent",                      600, NULL },
-  { "minus",                             600, NULL },
-  { "Iogonek",                           600, NULL },
-  { "zacute",                            600, NULL },
-  { "yen",                               600, NULL },
-  { "space",                             600, NULL },
-  { "Omacron",                           600, NULL },
-  { "questiondown",                      600, NULL },
-  { "emdash",                            600, NULL },
-  { "Agrave",                            600, NULL },
-  { "three",                             600, NULL },
-  { "numbersign",                        600, NULL },
-  { "lcaron",                            600, NULL },
-  { "A",                                 600, NULL },
-  { "B",                                 600, NULL },
-  { "C",                                 600, NULL },
-  { "aogonek",                           600, NULL },
-  { "D",                                 600, NULL },
-  { "E",                                 600, NULL },
-  { "onequarter",                        600, NULL },
-  { "F",                                 600, NULL },
-  { "G",                                 600, NULL },
-  { "H",                                 600, NULL },
-  { "I",                                 600, NULL },
-  { "J",                                 600, NULL },
-  { "K",                                 600, NULL },
-  { "iogonek",                           600, NULL },
-  { "backslash",                         600, NULL },
-  { "L",                                 600, NULL },
-  { "periodcentered",                    600, NULL },
-  { "M",                                 600, NULL },
-  { "N",                                 600, NULL },
-  { "omacron",                           600, NULL },
-  { "Tcommaaccent",                      600, NULL },
-  { "O",                                 600, NULL },
-  { "P",                                 600, NULL },
-  { "Q",                                 600, NULL },
-  { "Uhungarumlaut",                     600, NULL },
-  { "R",                                 600, NULL },
-  { "Aacute",                            600, NULL },
-  { "caron",                             600, NULL },
-  { "S",                                 600, NULL },
-  { "T",                                 600, NULL },
-  { "U",                                 600, NULL },
-  { "agrave",                            600, NULL },
-  { "V",                                 600, NULL },
-  { "W",                                 600, NULL },
-  { "X",                                 600, NULL },
-  { "question",                          600, NULL },
-  { "equal",                             600, NULL },
-  { "Y",                                 600, NULL },
-  { "Z",                                 600, NULL },
-  { "four",                              600, NULL },
-  { "a",                                 600, NULL },
-  { "Gcommaaccent",                      600, NULL },
-  { "b",                                 600, NULL },
-  { "c",                                 600, NULL },
-  { "d",                                 600, NULL },
-  { "e",                                 600, NULL },
-  { "f",                                 600, NULL },
-  { "g",                                 600, NULL },
-  { "bullet",                            600, NULL },
-  { "h",                                 600, NULL },
-  { "i",                                 600, NULL },
-  { "Oslash",                            600, NULL },
-  { "dagger",                            600, NULL },
-  { "j",                                 600, NULL },
-  { "k",                                 600, NULL },
-  { "l",                                 600, NULL },
-  { "m",                                 600, NULL },
-  { "n",                                 600, NULL },
-  { "tcommaaccent",                      600, NULL },
-  { "o",                                 600, NULL },
-  { "ordfeminine",                       600, NULL },
-  { "ring",                              600, NULL },
-  { "p",                                 600, NULL },
-  { "q",                                 600, NULL },
-  { "uhungarumlaut",                     600, NULL },
-  { "r",                                 600, NULL },
-  { "twosuperior",                       600, NULL },
-  { "aacute",                            600, NULL },
-  { "s",                                 600, NULL },
-  { "OE",                                600, NULL },
-  { "t",                                 600, NULL },
-  { "divide",                            600, NULL },
-  { "u",                                 600, NULL },
-  { "Ccaron",                            600, NULL },
-  { "v",                                 600, NULL },
-  { "w",                                 600, NULL },
-  { "x",                                 600, NULL },
-  { "y",                                 600, NULL },
-  { "z",                                 600, NULL },
-  { "Gbreve",                            600, NULL },
-  { "commaaccent",                       600, NULL },
-  { "hungarumlaut",                      600, NULL },
-  { "Idotaccent",                        600, NULL },
-  { "Nacute",                            600, NULL },
-  { "quotedbl",                          600, NULL },
-  { "gcommaaccent",                      600, NULL },
-  { "mu",                                600, NULL },
-  { "greaterequal",                      600, NULL },
-  { "Scaron",                            600, NULL },
-  { "Lslash",                            600, NULL },
-  { "semicolon",                         600, NULL },
-  { "oslash",                            600, NULL },
-  { "lessequal",                         600, NULL },
-  { "lozenge",                           600, NULL },
-  { "parenright",                        600, NULL },
-  { "ccaron",                            600, NULL },
-  { "Ecircumflex",                       600, NULL },
-  { "gbreve",                            600, NULL },
-  { "trademark",                         600, NULL },
-  { "daggerdbl",                         600, NULL },
-  { "nacute",                            600, NULL },
-  { "macron",                            600, NULL },
-  { "Otilde",                            600, NULL },
-  { "Emacron",                           600, NULL },
-  { "ellipsis",                          600, NULL },
-  { "scaron",                            600, NULL },
-  { "AE",                                600, NULL },
-  { "Ucircumflex",                       600, NULL },
-  { "lslash",                            600, NULL },
-  { "quotedblleft",                      600, NULL },
-  { "guilsinglright",                    600, NULL },
-  { "hyphen",                            600, NULL },
-  { "quotesingle",                       600, NULL },
-  { "eight",                             600, NULL },
-  { "exclamdown",                        600, NULL },
-  { "endash",                            600, NULL },
-  { "oe",                                600, NULL },
-  { "Abreve",                            600, NULL },
-  { "Umacron",                           600, NULL },
-  { "ecircumflex",                       600, NULL },
-  { "Adieresis",                         600, NULL },
-  { "copyright",                         600, NULL },
-  { "Egrave",                            600, NULL },
-  { "slash",                             600, NULL },
-  { "Edieresis",                         600, NULL },
-  { "otilde",                            600, NULL },
-  { "Idieresis",                         600, NULL },
-  { "parenleft",                         600, NULL },
-  { "one",                               600, NULL },
-  { "emacron",                           600, NULL },
-  { "Odieresis",                         600, NULL },
-  { "ucircumflex",                       600, NULL },
-  { "bracketleft",                       600, NULL },
-  { "Ugrave",                            600, NULL },
-  { "quoteright",                        600, NULL },
-  { "Udieresis",                         600, NULL },
-  { "perthousand",                       600, NULL },
-  { "Ydieresis",                         600, NULL },
-  { "umacron",                           600, NULL },
-  { "abreve",                            600, NULL },
-  { "Eacute",                            600, NULL },
-  { "adieresis",                         600, NULL },
-  { "egrave",                            600, NULL },
-  { "edieresis",                         600, NULL },
-  { "idieresis",                         600, NULL },
-  { "Eth",                               600, NULL },
-  { "ae",                                600, NULL },
-  { "asterisk",                          600, NULL },
-  { "odieresis",                         600, NULL },
-  { "Uacute",                            600, NULL },
-  { "ugrave",                            600, NULL },
-  { "nine",                              600, NULL },
-  { "five",                              600, NULL },
-  { "udieresis",                         600, NULL },
-  { "Zcaron",                            600, NULL },
-  { "Scommaaccent",                      600, NULL },
-  { "threequarters",                     600, NULL },
-  { "guillemotright",                    600, NULL },
-  { "Ccedilla",                          600, NULL },
-  { "ydieresis",                         600, NULL },
-  { "tilde",                             600, NULL },
-  { "at",                                600, NULL },
-  { "eacute",                            600, NULL },
-  { "underscore",                        600, NULL },
-  { "Euro",                              600, NULL },
-  { "Dcroat",                            600, NULL },
-  { "multiply",                          600, NULL },
-  { "zero",                              600, NULL },
-  { "eth",                               600, NULL },
-  { "Scedilla",                          600, NULL },
-  { "Ograve",                            600, NULL },
-  { "Racute",                            600, NULL },
-  { "partialdiff",                       600, NULL },
-  { "uacute",                            600, NULL },
-  { "braceleft",                         600, NULL },
-  { "Thorn",                             600, NULL },
-  { "zcaron",                            600, NULL },
-  { "scommaaccent",                      600, NULL },
-  { "ccedilla",                          600, NULL },
-  { "Dcaron",                            600, NULL },
-  { "dcroat",                            600, NULL },
-  { "Ocircumflex",                       600, NULL },
-  { "Oacute",                            600, NULL },
-  { "scedilla",                          600, NULL },
-  { "ogonek",                            600, NULL },
-  { "ograve",                            600, NULL },
-  { "racute",                            600, NULL },
-  { "Tcaron",                            600, NULL },
-  { "Eogonek",                           600, NULL },
-  { "thorn",                             600, NULL },
-  { "degree",                            600, NULL },
-  { "registered",                        600, NULL },
-  { "radical",                           600, NULL },
-  { "Aring",                             600, NULL },
-  { "percent",                           600, NULL },
-  { "six",                               600, NULL },
-  { "paragraph",                         600, NULL },
-  { "dcaron",                            600, NULL },
-  { "Uogonek",                           600, NULL },
-  { "two",                               600, NULL },
-  { "summation",                         600, NULL },
-  { "Igrave",                            600, NULL },
-  { "Lacute",                            600, NULL },
-  { "ocircumflex",                       600, NULL },
-  { "oacute",                            600, NULL },
-  { "Uring",                             600, NULL },
-  { "Lcommaaccent",                      600, NULL },
-  { "tcaron",                            600, NULL },
-  { "eogonek",                           600, NULL },
-  { "Delta",                             600, NULL },
-  { "Ohungarumlaut",                     600, NULL },
-  { "asciicircum",                       600, NULL },
-  { "aring",                             600, NULL },
-  { "grave",                             600, NULL },
-  { "uogonek",                           600, NULL },
-  { "bracketright",                      600, NULL },
-  { "Iacute",                            600, NULL },
-  { "ampersand",                         600, NULL },
-  { "igrave",                            600, NULL },
-  { "lacute",                            600, NULL },
-  { "Ncaron",                            600, NULL },
-  { "plus",                              600, NULL },
-  { "uring",                             600, NULL },
-  { "quotesinglbase",                    600, NULL },
-  { "lcommaaccent",                      600, NULL },
-  { "Yacute",                            600, NULL },
-  { "ohungarumlaut",                     600, NULL },
-  { "threesuperior",                     600, NULL },
-  { "acute",                             600, NULL },
-  { "section",                           600, NULL },
-  { "dieresis",                          600, NULL },
-  { "iacute",                            600, NULL },
-  { "quotedblbase",                      600, NULL },
-  { "ncaron",                            600, NULL },
-  { "florin",                            600, NULL },
-  { "yacute",                            600, NULL },
-  { "Rcommaaccent",                      600, NULL },
-  { "fi",                                600, NULL },
-  { "fl",                                600, NULL },
-  { "Acircumflex",                       600, NULL },
-  { "Cacute",                            600, NULL },
-  { "Icircumflex",                       600, NULL },
-  { "guillemotleft",                     600, NULL },
-  { "germandbls",                        600, NULL },
-  { "Amacron",                           600, NULL },
-  { "seven",                             600, NULL },
-  { "Sacute",                            600, NULL },
-  { "ordmasculine",                      600, NULL },
-  { "dotlessi",                          600, NULL },
-  { "sterling",                          600, NULL },
-  { "notequal",                          600, NULL },
-  { "Imacron",                           600, NULL },
-  { "rcommaaccent",                      600, NULL },
-  { "Zdotaccent",                        600, NULL },
-  { "acircumflex",                       600, NULL },
-  { "cacute",                            600, NULL },
-  { "Ecaron",                            600, NULL },
-  { "icircumflex",                       600, NULL },
-  { "braceright",                        600, NULL },
-  { "quotedblright",                     600, NULL },
-  { "amacron",                           600, NULL },
-  { "sacute",                            600, NULL },
-  { "imacron",                           600, NULL },
-  { "cent",                              600, NULL },
-  { "currency",                          600, NULL },
-  { "logicalnot",                        600, NULL },
-  { "zdotaccent",                        600, NULL },
-  { "Atilde",                            600, NULL },
-  { "breve",                             600, NULL },
-  { "bar",                               600, NULL },
-  { "fraction",                          600, NULL },
-  { "less",                              600, NULL },
-  { "ecaron",                            600, NULL },
-  { "guilsinglleft",                     600, NULL },
-  { "exclam",                            600, NULL },
-  { "period",                            600, NULL },
-  { "Rcaron",                            600, NULL },
-  { "Kcommaaccent",                      600, NULL },
-  { "greater",                           600, NULL },
-  { "atilde",                            600, NULL },
-  { "brokenbar",                         600, NULL },
-  { "quoteleft",                         600, NULL },
-  { "Edotaccent",                        600, NULL },
-  { "onesuperior",                       600, NULL }
+  { "Ntilde",                            600, nullptr },
+  { "rcaron",                            600, nullptr },
+  { "kcommaaccent",                      600, nullptr },
+  { "Ncommaaccent",                      600, nullptr },
+  { "Zacute",                            600, nullptr },
+  { "comma",                             600, nullptr },
+  { "cedilla",                           600, nullptr },
+  { "plusminus",                         600, nullptr },
+  { "circumflex",                        600, nullptr },
+  { "dotaccent",                         600, nullptr },
+  { "edotaccent",                        600, nullptr },
+  { "asciitilde",                        600, nullptr },
+  { "colon",                             600, nullptr },
+  { "onehalf",                           600, nullptr },
+  { "dollar",                            600, nullptr },
+  { "Lcaron",                            600, nullptr },
+  { "ntilde",                            600, nullptr },
+  { "Aogonek",                           600, nullptr },
+  { "ncommaaccent",                      600, nullptr },
+  { "minus",                             600, nullptr },
+  { "Iogonek",                           600, nullptr },
+  { "zacute",                            600, nullptr },
+  { "yen",                               600, nullptr },
+  { "space",                             600, nullptr },
+  { "Omacron",                           600, nullptr },
+  { "questiondown",                      600, nullptr },
+  { "emdash",                            600, nullptr },
+  { "Agrave",                            600, nullptr },
+  { "three",                             600, nullptr },
+  { "numbersign",                        600, nullptr },
+  { "lcaron",                            600, nullptr },
+  { "A",                                 600, nullptr },
+  { "B",                                 600, nullptr },
+  { "C",                                 600, nullptr },
+  { "aogonek",                           600, nullptr },
+  { "D",                                 600, nullptr },
+  { "E",                                 600, nullptr },
+  { "onequarter",                        600, nullptr },
+  { "F",                                 600, nullptr },
+  { "G",                                 600, nullptr },
+  { "H",                                 600, nullptr },
+  { "I",                                 600, nullptr },
+  { "J",                                 600, nullptr },
+  { "K",                                 600, nullptr },
+  { "iogonek",                           600, nullptr },
+  { "backslash",                         600, nullptr },
+  { "L",                                 600, nullptr },
+  { "periodcentered",                    600, nullptr },
+  { "M",                                 600, nullptr },
+  { "N",                                 600, nullptr },
+  { "omacron",                           600, nullptr },
+  { "Tcommaaccent",                      600, nullptr },
+  { "O",                                 600, nullptr },
+  { "P",                                 600, nullptr },
+  { "Q",                                 600, nullptr },
+  { "Uhungarumlaut",                     600, nullptr },
+  { "R",                                 600, nullptr },
+  { "Aacute",                            600, nullptr },
+  { "caron",                             600, nullptr },
+  { "S",                                 600, nullptr },
+  { "T",                                 600, nullptr },
+  { "U",                                 600, nullptr },
+  { "agrave",                            600, nullptr },
+  { "V",                                 600, nullptr },
+  { "W",                                 600, nullptr },
+  { "X",                                 600, nullptr },
+  { "question",                          600, nullptr },
+  { "equal",                             600, nullptr },
+  { "Y",                                 600, nullptr },
+  { "Z",                                 600, nullptr },
+  { "four",                              600, nullptr },
+  { "a",                                 600, nullptr },
+  { "Gcommaaccent",                      600, nullptr },
+  { "b",                                 600, nullptr },
+  { "c",                                 600, nullptr },
+  { "d",                                 600, nullptr },
+  { "e",                                 600, nullptr },
+  { "f",                                 600, nullptr },
+  { "g",                                 600, nullptr },
+  { "bullet",                            600, nullptr },
+  { "h",                                 600, nullptr },
+  { "i",                                 600, nullptr },
+  { "Oslash",                            600, nullptr },
+  { "dagger",                            600, nullptr },
+  { "j",                                 600, nullptr },
+  { "k",                                 600, nullptr },
+  { "l",                                 600, nullptr },
+  { "m",                                 600, nullptr },
+  { "n",                                 600, nullptr },
+  { "tcommaaccent",                      600, nullptr },
+  { "o",                                 600, nullptr },
+  { "ordfeminine",                       600, nullptr },
+  { "ring",                              600, nullptr },
+  { "p",                                 600, nullptr },
+  { "q",                                 600, nullptr },
+  { "uhungarumlaut",                     600, nullptr },
+  { "r",                                 600, nullptr },
+  { "twosuperior",                       600, nullptr },
+  { "aacute",                            600, nullptr },
+  { "s",                                 600, nullptr },
+  { "OE",                                600, nullptr },
+  { "t",                                 600, nullptr },
+  { "divide",                            600, nullptr },
+  { "u",                                 600, nullptr },
+  { "Ccaron",                            600, nullptr },
+  { "v",                                 600, nullptr },
+  { "w",                                 600, nullptr },
+  { "x",                                 600, nullptr },
+  { "y",                                 600, nullptr },
+  { "z",                                 600, nullptr },
+  { "Gbreve",                            600, nullptr },
+  { "commaaccent",                       600, nullptr },
+  { "hungarumlaut",                      600, nullptr },
+  { "Idotaccent",                        600, nullptr },
+  { "Nacute",                            600, nullptr },
+  { "quotedbl",                          600, nullptr },
+  { "gcommaaccent",                      600, nullptr },
+  { "mu",                                600, nullptr },
+  { "greaterequal",                      600, nullptr },
+  { "Scaron",                            600, nullptr },
+  { "Lslash",                            600, nullptr },
+  { "semicolon",                         600, nullptr },
+  { "oslash",                            600, nullptr },
+  { "lessequal",                         600, nullptr },
+  { "lozenge",                           600, nullptr },
+  { "parenright",                        600, nullptr },
+  { "ccaron",                            600, nullptr },
+  { "Ecircumflex",                       600, nullptr },
+  { "gbreve",                            600, nullptr },
+  { "trademark",                         600, nullptr },
+  { "daggerdbl",                         600, nullptr },
+  { "nacute",                            600, nullptr },
+  { "macron",                            600, nullptr },
+  { "Otilde",                            600, nullptr },
+  { "Emacron",                           600, nullptr },
+  { "ellipsis",                          600, nullptr },
+  { "scaron",                            600, nullptr },
+  { "AE",                                600, nullptr },
+  { "Ucircumflex",                       600, nullptr },
+  { "lslash",                            600, nullptr },
+  { "quotedblleft",                      600, nullptr },
+  { "guilsinglright",                    600, nullptr },
+  { "hyphen",                            600, nullptr },
+  { "quotesingle",                       600, nullptr },
+  { "eight",                             600, nullptr },
+  { "exclamdown",                        600, nullptr },
+  { "endash",                            600, nullptr },
+  { "oe",                                600, nullptr },
+  { "Abreve",                            600, nullptr },
+  { "Umacron",                           600, nullptr },
+  { "ecircumflex",                       600, nullptr },
+  { "Adieresis",                         600, nullptr },
+  { "copyright",                         600, nullptr },
+  { "Egrave",                            600, nullptr },
+  { "slash",                             600, nullptr },
+  { "Edieresis",                         600, nullptr },
+  { "otilde",                            600, nullptr },
+  { "Idieresis",                         600, nullptr },
+  { "parenleft",                         600, nullptr },
+  { "one",                               600, nullptr },
+  { "emacron",                           600, nullptr },
+  { "Odieresis",                         600, nullptr },
+  { "ucircumflex",                       600, nullptr },
+  { "bracketleft",                       600, nullptr },
+  { "Ugrave",                            600, nullptr },
+  { "quoteright",                        600, nullptr },
+  { "Udieresis",                         600, nullptr },
+  { "perthousand",                       600, nullptr },
+  { "Ydieresis",                         600, nullptr },
+  { "umacron",                           600, nullptr },
+  { "abreve",                            600, nullptr },
+  { "Eacute",                            600, nullptr },
+  { "adieresis",                         600, nullptr },
+  { "egrave",                            600, nullptr },
+  { "edieresis",                         600, nullptr },
+  { "idieresis",                         600, nullptr },
+  { "Eth",                               600, nullptr },
+  { "ae",                                600, nullptr },
+  { "asterisk",                          600, nullptr },
+  { "odieresis",                         600, nullptr },
+  { "Uacute",                            600, nullptr },
+  { "ugrave",                            600, nullptr },
+  { "nine",                              600, nullptr },
+  { "five",                              600, nullptr },
+  { "udieresis",                         600, nullptr },
+  { "Zcaron",                            600, nullptr },
+  { "Scommaaccent",                      600, nullptr },
+  { "threequarters",                     600, nullptr },
+  { "guillemotright",                    600, nullptr },
+  { "Ccedilla",                          600, nullptr },
+  { "ydieresis",                         600, nullptr },
+  { "tilde",                             600, nullptr },
+  { "at",                                600, nullptr },
+  { "eacute",                            600, nullptr },
+  { "underscore",                        600, nullptr },
+  { "Euro",                              600, nullptr },
+  { "Dcroat",                            600, nullptr },
+  { "multiply",                          600, nullptr },
+  { "zero",                              600, nullptr },
+  { "eth",                               600, nullptr },
+  { "Scedilla",                          600, nullptr },
+  { "Ograve",                            600, nullptr },
+  { "Racute",                            600, nullptr },
+  { "partialdiff",                       600, nullptr },
+  { "uacute",                            600, nullptr },
+  { "braceleft",                         600, nullptr },
+  { "Thorn",                             600, nullptr },
+  { "zcaron",                            600, nullptr },
+  { "scommaaccent",                      600, nullptr },
+  { "ccedilla",                          600, nullptr },
+  { "Dcaron",                            600, nullptr },
+  { "dcroat",                            600, nullptr },
+  { "Ocircumflex",                       600, nullptr },
+  { "Oacute",                            600, nullptr },
+  { "scedilla",                          600, nullptr },
+  { "ogonek",                            600, nullptr },
+  { "ograve",                            600, nullptr },
+  { "racute",                            600, nullptr },
+  { "Tcaron",                            600, nullptr },
+  { "Eogonek",                           600, nullptr },
+  { "thorn",                             600, nullptr },
+  { "degree",                            600, nullptr },
+  { "registered",                        600, nullptr },
+  { "radical",                           600, nullptr },
+  { "Aring",                             600, nullptr },
+  { "percent",                           600, nullptr },
+  { "six",                               600, nullptr },
+  { "paragraph",                         600, nullptr },
+  { "dcaron",                            600, nullptr },
+  { "Uogonek",                           600, nullptr },
+  { "two",                               600, nullptr },
+  { "summation",                         600, nullptr },
+  { "Igrave",                            600, nullptr },
+  { "Lacute",                            600, nullptr },
+  { "ocircumflex",                       600, nullptr },
+  { "oacute",                            600, nullptr },
+  { "Uring",                             600, nullptr },
+  { "Lcommaaccent",                      600, nullptr },
+  { "tcaron",                            600, nullptr },
+  { "eogonek",                           600, nullptr },
+  { "Delta",                             600, nullptr },
+  { "Ohungarumlaut",                     600, nullptr },
+  { "asciicircum",                       600, nullptr },
+  { "aring",                             600, nullptr },
+  { "grave",                             600, nullptr },
+  { "uogonek",                           600, nullptr },
+  { "bracketright",                      600, nullptr },
+  { "Iacute",                            600, nullptr },
+  { "ampersand",                         600, nullptr },
+  { "igrave",                            600, nullptr },
+  { "lacute",                            600, nullptr },
+  { "Ncaron",                            600, nullptr },
+  { "plus",                              600, nullptr },
+  { "uring",                             600, nullptr },
+  { "quotesinglbase",                    600, nullptr },
+  { "lcommaaccent",                      600, nullptr },
+  { "Yacute",                            600, nullptr },
+  { "ohungarumlaut",                     600, nullptr },
+  { "threesuperior",                     600, nullptr },
+  { "acute",                             600, nullptr },
+  { "section",                           600, nullptr },
+  { "dieresis",                          600, nullptr },
+  { "iacute",                            600, nullptr },
+  { "quotedblbase",                      600, nullptr },
+  { "ncaron",                            600, nullptr },
+  { "florin",                            600, nullptr },
+  { "yacute",                            600, nullptr },
+  { "Rcommaaccent",                      600, nullptr },
+  { "fi",                                600, nullptr },
+  { "fl",                                600, nullptr },
+  { "Acircumflex",                       600, nullptr },
+  { "Cacute",                            600, nullptr },
+  { "Icircumflex",                       600, nullptr },
+  { "guillemotleft",                     600, nullptr },
+  { "germandbls",                        600, nullptr },
+  { "Amacron",                           600, nullptr },
+  { "seven",                             600, nullptr },
+  { "Sacute",                            600, nullptr },
+  { "ordmasculine",                      600, nullptr },
+  { "dotlessi",                          600, nullptr },
+  { "sterling",                          600, nullptr },
+  { "notequal",                          600, nullptr },
+  { "Imacron",                           600, nullptr },
+  { "rcommaaccent",                      600, nullptr },
+  { "Zdotaccent",                        600, nullptr },
+  { "acircumflex",                       600, nullptr },
+  { "cacute",                            600, nullptr },
+  { "Ecaron",                            600, nullptr },
+  { "icircumflex",                       600, nullptr },
+  { "braceright",                        600, nullptr },
+  { "quotedblright",                     600, nullptr },
+  { "amacron",                           600, nullptr },
+  { "sacute",                            600, nullptr },
+  { "imacron",                           600, nullptr },
+  { "cent",                              600, nullptr },
+  { "currency",                          600, nullptr },
+  { "logicalnot",                        600, nullptr },
+  { "zdotaccent",                        600, nullptr },
+  { "Atilde",                            600, nullptr },
+  { "breve",                             600, nullptr },
+  { "bar",                               600, nullptr },
+  { "fraction",                          600, nullptr },
+  { "less",                              600, nullptr },
+  { "ecaron",                            600, nullptr },
+  { "guilsinglleft",                     600, nullptr },
+  { "exclam",                            600, nullptr },
+  { "period",                            600, nullptr },
+  { "Rcaron",                            600, nullptr },
+  { "Kcommaaccent",                      600, nullptr },
+  { "greater",                           600, nullptr },
+  { "atilde",                            600, nullptr },
+  { "brokenbar",                         600, nullptr },
+  { "quoteleft",                         600, nullptr },
+  { "Edotaccent",                        600, nullptr },
+  { "onesuperior",                       600, nullptr }
 };
 
 static BuiltinFontWidth helveticaWidthsTab[] = {
-  { "Ntilde",                            722, NULL },
-  { "rcaron",                            333, NULL },
-  { "kcommaaccent",                      500, NULL },
-  { "Ncommaaccent",                      722, NULL },
-  { "Zacute",                            611, NULL },
-  { "comma",                             278, NULL },
-  { "cedilla",                           333, NULL },
-  { "plusminus",                         584, NULL },
-  { "circumflex",                        333, NULL },
-  { "dotaccent",                         333, NULL },
-  { "edotaccent",                        556, NULL },
-  { "asciitilde",                        584, NULL },
-  { "colon",                             278, NULL },
-  { "onehalf",                           834, NULL },
-  { "dollar",                            556, NULL },
-  { "Lcaron",                            556, NULL },
-  { "ntilde",                            556, NULL },
-  { "Aogonek",                           667, NULL },
-  { "ncommaaccent",                      556, NULL },
-  { "minus",                             584, NULL },
-  { "Iogonek",                           278, NULL },
-  { "zacute",                            500, NULL },
-  { "yen",                               556, NULL },
-  { "space",                             278, NULL },
-  { "Omacron",                           778, NULL },
-  { "questiondown",                      611, NULL },
-  { "emdash",                           1000, NULL },
-  { "Agrave",                            667, NULL },
-  { "three",                             556, NULL },
-  { "numbersign",                        556, NULL },
-  { "lcaron",                            299, NULL },
-  { "A",                                 667, NULL },
-  { "B",                                 667, NULL },
-  { "C",                                 722, NULL },
-  { "aogonek",                           556, NULL },
-  { "D",                                 722, NULL },
-  { "E",                                 667, NULL },
-  { "onequarter",                        834, NULL },
-  { "F",                                 611, NULL },
-  { "G",                                 778, NULL },
-  { "H",                                 722, NULL },
-  { "I",                                 278, NULL },
-  { "J",                                 500, NULL },
-  { "K",                                 667, NULL },
-  { "iogonek",                           222, NULL },
-  { "backslash",                         278, NULL },
-  { "L",                                 556, NULL },
-  { "periodcentered",                    278, NULL },
-  { "M",                                 833, NULL },
-  { "N",                                 722, NULL },
-  { "omacron",                           556, NULL },
-  { "Tcommaaccent",                      611, NULL },
-  { "O",                                 778, NULL },
-  { "P",                                 667, NULL },
-  { "Q",                                 778, NULL },
-  { "Uhungarumlaut",                     722, NULL },
-  { "R",                                 722, NULL },
-  { "Aacute",                            667, NULL },
-  { "caron",                             333, NULL },
-  { "S",                                 667, NULL },
-  { "T",                                 611, NULL },
-  { "U",                                 722, NULL },
-  { "agrave",                            556, NULL },
-  { "V",                                 667, NULL },
-  { "W",                                 944, NULL },
-  { "X",                                 667, NULL },
-  { "question",                          556, NULL },
-  { "equal",                             584, NULL },
-  { "Y",                                 667, NULL },
-  { "Z",                                 611, NULL },
-  { "four",                              556, NULL },
-  { "a",                                 556, NULL },
-  { "Gcommaaccent",                      778, NULL },
-  { "b",                                 556, NULL },
-  { "c",                                 500, NULL },
-  { "d",                                 556, NULL },
-  { "e",                                 556, NULL },
-  { "f",                                 278, NULL },
-  { "g",                                 556, NULL },
-  { "bullet",                            350, NULL },
-  { "h",                                 556, NULL },
-  { "i",                                 222, NULL },
-  { "Oslash",                            778, NULL },
-  { "dagger",                            556, NULL },
-  { "j",                                 222, NULL },
-  { "k",                                 500, NULL },
-  { "l",                                 222, NULL },
-  { "m",                                 833, NULL },
-  { "n",                                 556, NULL },
-  { "tcommaaccent",                      278, NULL },
-  { "o",                                 556, NULL },
-  { "ordfeminine",                       370, NULL },
-  { "ring",                              333, NULL },
-  { "p",                                 556, NULL },
-  { "q",                                 556, NULL },
-  { "uhungarumlaut",                     556, NULL },
-  { "r",                                 333, NULL },
-  { "twosuperior",                       333, NULL },
-  { "aacute",                            556, NULL },
-  { "s",                                 500, NULL },
-  { "OE",                               1000, NULL },
-  { "t",                                 278, NULL },
-  { "divide",                            584, NULL },
-  { "u",                                 556, NULL },
-  { "Ccaron",                            722, NULL },
-  { "v",                                 500, NULL },
-  { "w",                                 722, NULL },
-  { "x",                                 500, NULL },
-  { "y",                                 500, NULL },
-  { "z",                                 500, NULL },
-  { "Gbreve",                            778, NULL },
-  { "commaaccent",                       250, NULL },
-  { "hungarumlaut",                      333, NULL },
-  { "Idotaccent",                        278, NULL },
-  { "Nacute",                            722, NULL },
-  { "quotedbl",                          355, NULL },
-  { "gcommaaccent",                      556, NULL },
-  { "mu",                                556, NULL },
-  { "greaterequal",                      549, NULL },
-  { "Scaron",                            667, NULL },
-  { "Lslash",                            556, NULL },
-  { "semicolon",                         278, NULL },
-  { "oslash",                            611, NULL },
-  { "lessequal",                         549, NULL },
-  { "lozenge",                           471, NULL },
-  { "parenright",                        333, NULL },
-  { "ccaron",                            500, NULL },
-  { "Ecircumflex",                       667, NULL },
-  { "gbreve",                            556, NULL },
-  { "trademark",                        1000, NULL },
-  { "daggerdbl",                         556, NULL },
-  { "nacute",                            556, NULL },
-  { "macron",                            333, NULL },
-  { "Otilde",                            778, NULL },
-  { "Emacron",                           667, NULL },
-  { "ellipsis",                         1000, NULL },
-  { "scaron",                            500, NULL },
-  { "AE",                               1000, NULL },
-  { "Ucircumflex",                       722, NULL },
-  { "lslash",                            222, NULL },
-  { "quotedblleft",                      333, NULL },
-  { "guilsinglright",                    333, NULL },
-  { "hyphen",                            333, NULL },
-  { "quotesingle",                       191, NULL },
-  { "eight",                             556, NULL },
-  { "exclamdown",                        333, NULL },
-  { "endash",                            556, NULL },
-  { "oe",                                944, NULL },
-  { "Abreve",                            667, NULL },
-  { "Umacron",                           722, NULL },
-  { "ecircumflex",                       556, NULL },
-  { "Adieresis",                         667, NULL },
-  { "copyright",                         737, NULL },
-  { "Egrave",                            667, NULL },
-  { "slash",                             278, NULL },
-  { "Edieresis",                         667, NULL },
-  { "otilde",                            556, NULL },
-  { "Idieresis",                         278, NULL },
-  { "parenleft",                         333, NULL },
-  { "one",                               556, NULL },
-  { "emacron",                           556, NULL },
-  { "Odieresis",                         778, NULL },
-  { "ucircumflex",                       556, NULL },
-  { "bracketleft",                       278, NULL },
-  { "Ugrave",                            722, NULL },
-  { "quoteright",                        222, NULL },
-  { "Udieresis",                         722, NULL },
-  { "perthousand",                      1000, NULL },
-  { "Ydieresis",                         667, NULL },
-  { "umacron",                           556, NULL },
-  { "abreve",                            556, NULL },
-  { "Eacute",                            667, NULL },
-  { "adieresis",                         556, NULL },
-  { "egrave",                            556, NULL },
-  { "edieresis",                         556, NULL },
-  { "idieresis",                         278, NULL },
-  { "Eth",                               722, NULL },
-  { "ae",                                889, NULL },
-  { "asterisk",                          389, NULL },
-  { "odieresis",                         556, NULL },
-  { "Uacute",                            722, NULL },
-  { "ugrave",                            556, NULL },
-  { "nine",                              556, NULL },
-  { "five",                              556, NULL },
-  { "udieresis",                         556, NULL },
-  { "Zcaron",                            611, NULL },
-  { "Scommaaccent",                      667, NULL },
-  { "threequarters",                     834, NULL },
-  { "guillemotright",                    556, NULL },
-  { "Ccedilla",                          722, NULL },
-  { "ydieresis",                         500, NULL },
-  { "tilde",                             333, NULL },
-  { "at",                               1015, NULL },
-  { "eacute",                            556, NULL },
-  { "underscore",                        556, NULL },
-  { "Euro",                              556, NULL },
-  { "Dcroat",                            722, NULL },
-  { "multiply",                          584, NULL },
-  { "zero",                              556, NULL },
-  { "eth",                               556, NULL },
-  { "Scedilla",                          667, NULL },
-  { "Ograve",                            778, NULL },
-  { "Racute",                            722, NULL },
-  { "partialdiff",                       476, NULL },
-  { "uacute",                            556, NULL },
-  { "braceleft",                         334, NULL },
-  { "Thorn",                             667, NULL },
-  { "zcaron",                            500, NULL },
-  { "scommaaccent",                      500, NULL },
-  { "ccedilla",                          500, NULL },
-  { "Dcaron",                            722, NULL },
-  { "dcroat",                            556, NULL },
-  { "Ocircumflex",                       778, NULL },
-  { "Oacute",                            778, NULL },
-  { "scedilla",                          500, NULL },
-  { "ogonek",                            333, NULL },
-  { "ograve",                            556, NULL },
-  { "racute",                            333, NULL },
-  { "Tcaron",                            611, NULL },
-  { "Eogonek",                           667, NULL },
-  { "thorn",                             556, NULL },
-  { "degree",                            400, NULL },
-  { "registered",                        737, NULL },
-  { "radical",                           453, NULL },
-  { "Aring",                             667, NULL },
-  { "percent",                           889, NULL },
-  { "six",                               556, NULL },
-  { "paragraph",                         537, NULL },
-  { "dcaron",                            643, NULL },
-  { "Uogonek",                           722, NULL },
-  { "two",                               556, NULL },
-  { "summation",                         600, NULL },
-  { "Igrave",                            278, NULL },
-  { "Lacute",                            556, NULL },
-  { "ocircumflex",                       556, NULL },
-  { "oacute",                            556, NULL },
-  { "Uring",                             722, NULL },
-  { "Lcommaaccent",                      556, NULL },
-  { "tcaron",                            317, NULL },
-  { "eogonek",                           556, NULL },
-  { "Delta",                             612, NULL },
-  { "Ohungarumlaut",                     778, NULL },
-  { "asciicircum",                       469, NULL },
-  { "aring",                             556, NULL },
-  { "grave",                             333, NULL },
-  { "uogonek",                           556, NULL },
-  { "bracketright",                      278, NULL },
-  { "Iacute",                            278, NULL },
-  { "ampersand",                         667, NULL },
-  { "igrave",                            278, NULL },
-  { "lacute",                            222, NULL },
-  { "Ncaron",                            722, NULL },
-  { "plus",                              584, NULL },
-  { "uring",                             556, NULL },
-  { "quotesinglbase",                    222, NULL },
-  { "lcommaaccent",                      222, NULL },
-  { "Yacute",                            667, NULL },
-  { "ohungarumlaut",                     556, NULL },
-  { "threesuperior",                     333, NULL },
-  { "acute",                             333, NULL },
-  { "section",                           556, NULL },
-  { "dieresis",                          333, NULL },
-  { "iacute",                            278, NULL },
-  { "quotedblbase",                      333, NULL },
-  { "ncaron",                            556, NULL },
-  { "florin",                            556, NULL },
-  { "yacute",                            500, NULL },
-  { "Rcommaaccent",                      722, NULL },
-  { "fi",                                500, NULL },
-  { "fl",                                500, NULL },
-  { "Acircumflex",                       667, NULL },
-  { "Cacute",                            722, NULL },
-  { "Icircumflex",                       278, NULL },
-  { "guillemotleft",                     556, NULL },
-  { "germandbls",                        611, NULL },
-  { "Amacron",                           667, NULL },
-  { "seven",                             556, NULL },
-  { "Sacute",                            667, NULL },
-  { "ordmasculine",                      365, NULL },
-  { "dotlessi",                          278, NULL },
-  { "sterling",                          556, NULL },
-  { "notequal",                          549, NULL },
-  { "Imacron",                           278, NULL },
-  { "rcommaaccent",                      333, NULL },
-  { "Zdotaccent",                        611, NULL },
-  { "acircumflex",                       556, NULL },
-  { "cacute",                            500, NULL },
-  { "Ecaron",                            667, NULL },
-  { "icircumflex",                       278, NULL },
-  { "braceright",                        334, NULL },
-  { "quotedblright",                     333, NULL },
-  { "amacron",                           556, NULL },
-  { "sacute",                            500, NULL },
-  { "imacron",                           278, NULL },
-  { "cent",                              556, NULL },
-  { "currency",                          556, NULL },
-  { "logicalnot",                        584, NULL },
-  { "zdotaccent",                        500, NULL },
-  { "Atilde",                            667, NULL },
-  { "breve",                             333, NULL },
-  { "bar",                               260, NULL },
-  { "fraction",                          167, NULL },
-  { "less",                              584, NULL },
-  { "ecaron",                            556, NULL },
-  { "guilsinglleft",                     333, NULL },
-  { "exclam",                            278, NULL },
-  { "period",                            278, NULL },
-  { "Rcaron",                            722, NULL },
-  { "Kcommaaccent",                      667, NULL },
-  { "greater",                           584, NULL },
-  { "atilde",                            556, NULL },
-  { "brokenbar",                         260, NULL },
-  { "quoteleft",                         222, NULL },
-  { "Edotaccent",                        667, NULL },
-  { "onesuperior",                       333, NULL }
+  { "Ntilde",                            722, nullptr },
+  { "rcaron",                            333, nullptr },
+  { "kcommaaccent",                      500, nullptr },
+  { "Ncommaaccent",                      722, nullptr },
+  { "Zacute",                            611, nullptr },
+  { "comma",                             278, nullptr },
+  { "cedilla",                           333, nullptr },
+  { "plusminus",                         584, nullptr },
+  { "circumflex",                        333, nullptr },
+  { "dotaccent",                         333, nullptr },
+  { "edotaccent",                        556, nullptr },
+  { "asciitilde",                        584, nullptr },
+  { "colon",                             278, nullptr },
+  { "onehalf",                           834, nullptr },
+  { "dollar",                            556, nullptr },
+  { "Lcaron",                            556, nullptr },
+  { "ntilde",                            556, nullptr },
+  { "Aogonek",                           667, nullptr },
+  { "ncommaaccent",                      556, nullptr },
+  { "minus",                             584, nullptr },
+  { "Iogonek",                           278, nullptr },
+  { "zacute",                            500, nullptr },
+  { "yen",                               556, nullptr },
+  { "space",                             278, nullptr },
+  { "Omacron",                           778, nullptr },
+  { "questiondown",                      611, nullptr },
+  { "emdash",                           1000, nullptr },
+  { "Agrave",                            667, nullptr },
+  { "three",                             556, nullptr },
+  { "numbersign",                        556, nullptr },
+  { "lcaron",                            299, nullptr },
+  { "A",                                 667, nullptr },
+  { "B",                                 667, nullptr },
+  { "C",                                 722, nullptr },
+  { "aogonek",                           556, nullptr },
+  { "D",                                 722, nullptr },
+  { "E",                                 667, nullptr },
+  { "onequarter",                        834, nullptr },
+  { "F",                                 611, nullptr },
+  { "G",                                 778, nullptr },
+  { "H",                                 722, nullptr },
+  { "I",                                 278, nullptr },
+  { "J",                                 500, nullptr },
+  { "K",                                 667, nullptr },
+  { "iogonek",                           222, nullptr },
+  { "backslash",                         278, nullptr },
+  { "L",                                 556, nullptr },
+  { "periodcentered",                    278, nullptr },
+  { "M",                                 833, nullptr },
+  { "N",                                 722, nullptr },
+  { "omacron",                           556, nullptr },
+  { "Tcommaaccent",                      611, nullptr },
+  { "O",                                 778, nullptr },
+  { "P",                                 667, nullptr },
+  { "Q",                                 778, nullptr },
+  { "Uhungarumlaut",                     722, nullptr },
+  { "R",                                 722, nullptr },
+  { "Aacute",                            667, nullptr },
+  { "caron",                             333, nullptr },
+  { "S",                                 667, nullptr },
+  { "T",                                 611, nullptr },
+  { "U",                                 722, nullptr },
+  { "agrave",                            556, nullptr },
+  { "V",                                 667, nullptr },
+  { "W",                                 944, nullptr },
+  { "X",                                 667, nullptr },
+  { "question",                          556, nullptr },
+  { "equal",                             584, nullptr },
+  { "Y",                                 667, nullptr },
+  { "Z",                                 611, nullptr },
+  { "four",                              556, nullptr },
+  { "a",                                 556, nullptr },
+  { "Gcommaaccent",                      778, nullptr },
+  { "b",                                 556, nullptr },
+  { "c",                                 500, nullptr },
+  { "d",                                 556, nullptr },
+  { "e",                                 556, nullptr },
+  { "f",                                 278, nullptr },
+  { "g",                                 556, nullptr },
+  { "bullet",                            350, nullptr },
+  { "h",                                 556, nullptr },
+  { "i",                                 222, nullptr },
+  { "Oslash",                            778, nullptr },
+  { "dagger",                            556, nullptr },
+  { "j",                                 222, nullptr },
+  { "k",                                 500, nullptr },
+  { "l",                                 222, nullptr },
+  { "m",                                 833, nullptr },
+  { "n",                                 556, nullptr },
+  { "tcommaaccent",                      278, nullptr },
+  { "o",                                 556, nullptr },
+  { "ordfeminine",                       370, nullptr },
+  { "ring",                              333, nullptr },
+  { "p",                                 556, nullptr },
+  { "q",                                 556, nullptr },
+  { "uhungarumlaut",                     556, nullptr },
+  { "r",                                 333, nullptr },
+  { "twosuperior",                       333, nullptr },
+  { "aacute",                            556, nullptr },
+  { "s",                                 500, nullptr },
+  { "OE",                               1000, nullptr },
+  { "t",                                 278, nullptr },
+  { "divide",                            584, nullptr },
+  { "u",                                 556, nullptr },
+  { "Ccaron",                            722, nullptr },
+  { "v",                                 500, nullptr },
+  { "w",                                 722, nullptr },
+  { "x",                                 500, nullptr },
+  { "y",                                 500, nullptr },
+  { "z",                                 500, nullptr },
+  { "Gbreve",                            778, nullptr },
+  { "commaaccent",                       250, nullptr },
+  { "hungarumlaut",                      333, nullptr },
+  { "Idotaccent",                        278, nullptr },
+  { "Nacute",                            722, nullptr },
+  { "quotedbl",                          355, nullptr },
+  { "gcommaaccent",                      556, nullptr },
+  { "mu",                                556, nullptr },
+  { "greaterequal",                      549, nullptr },
+  { "Scaron",                            667, nullptr },
+  { "Lslash",                            556, nullptr },
+  { "semicolon",                         278, nullptr },
+  { "oslash",                            611, nullptr },
+  { "lessequal",                         549, nullptr },
+  { "lozenge",                           471, nullptr },
+  { "parenright",                        333, nullptr },
+  { "ccaron",                            500, nullptr },
+  { "Ecircumflex",                       667, nullptr },
+  { "gbreve",                            556, nullptr },
+  { "trademark",                        1000, nullptr },
+  { "daggerdbl",                         556, nullptr },
+  { "nacute",                            556, nullptr },
+  { "macron",                            333, nullptr },
+  { "Otilde",                            778, nullptr },
+  { "Emacron",                           667, nullptr },
+  { "ellipsis",                         1000, nullptr },
+  { "scaron",                            500, nullptr },
+  { "AE",                               1000, nullptr },
+  { "Ucircumflex",                       722, nullptr },
+  { "lslash",                            222, nullptr },
+  { "quotedblleft",                      333, nullptr },
+  { "guilsinglright",                    333, nullptr },
+  { "hyphen",                            333, nullptr },
+  { "quotesingle",                       191, nullptr },
+  { "eight",                             556, nullptr },
+  { "exclamdown",                        333, nullptr },
+  { "endash",                            556, nullptr },
+  { "oe",                                944, nullptr },
+  { "Abreve",                            667, nullptr },
+  { "Umacron",                           722, nullptr },
+  { "ecircumflex",                       556, nullptr },
+  { "Adieresis",                         667, nullptr },
+  { "copyright",                         737, nullptr },
+  { "Egrave",                            667, nullptr },
+  { "slash",                             278, nullptr },
+  { "Edieresis",                         667, nullptr },
+  { "otilde",                            556, nullptr },
+  { "Idieresis",                         278, nullptr },
+  { "parenleft",                         333, nullptr },
+  { "one",                               556, nullptr },
+  { "emacron",                           556, nullptr },
+  { "Odieresis",                         778, nullptr },
+  { "ucircumflex",                       556, nullptr },
+  { "bracketleft",                       278, nullptr },
+  { "Ugrave",                            722, nullptr },
+  { "quoteright",                        222, nullptr },
+  { "Udieresis",                         722, nullptr },
+  { "perthousand",                      1000, nullptr },
+  { "Ydieresis",                         667, nullptr },
+  { "umacron",                           556, nullptr },
+  { "abreve",                            556, nullptr },
+  { "Eacute",                            667, nullptr },
+  { "adieresis",                         556, nullptr },
+  { "egrave",                            556, nullptr },
+  { "edieresis",                         556, nullptr },
+  { "idieresis",                         278, nullptr },
+  { "Eth",                               722, nullptr },
+  { "ae",                                889, nullptr },
+  { "asterisk",                          389, nullptr },
+  { "odieresis",                         556, nullptr },
+  { "Uacute",                            722, nullptr },
+  { "ugrave",                            556, nullptr },
+  { "nine",                              556, nullptr },
+  { "five",                              556, nullptr },
+  { "udieresis",                         556, nullptr },
+  { "Zcaron",                            611, nullptr },
+  { "Scommaaccent",                      667, nullptr },
+  { "threequarters",                     834, nullptr },
+  { "guillemotright",                    556, nullptr },
+  { "Ccedilla",                          722, nullptr },
+  { "ydieresis",                         500, nullptr },
+  { "tilde",                             333, nullptr },
+  { "at",                               1015, nullptr },
+  { "eacute",                            556, nullptr },
+  { "underscore",                        556, nullptr },
+  { "Euro",                              556, nullptr },
+  { "Dcroat",                            722, nullptr },
+  { "multiply",                          584, nullptr },
+  { "zero",                              556, nullptr },
+  { "eth",                               556, nullptr },
+  { "Scedilla",                          667, nullptr },
+  { "Ograve",                            778, nullptr },
+  { "Racute",                            722, nullptr },
+  { "partialdiff",                       476, nullptr },
+  { "uacute",                            556, nullptr },
+  { "braceleft",                         334, nullptr },
+  { "Thorn",                             667, nullptr },
+  { "zcaron",                            500, nullptr },
+  { "scommaaccent",                      500, nullptr },
+  { "ccedilla",                          500, nullptr },
+  { "Dcaron",                            722, nullptr },
+  { "dcroat",                            556, nullptr },
+  { "Ocircumflex",                       778, nullptr },
+  { "Oacute",                            778, nullptr },
+  { "scedilla",                          500, nullptr },
+  { "ogonek",                            333, nullptr },
+  { "ograve",                            556, nullptr },
+  { "racute",                            333, nullptr },
+  { "Tcaron",                            611, nullptr },
+  { "Eogonek",                           667, nullptr },
+  { "thorn",                             556, nullptr },
+  { "degree",                            400, nullptr },
+  { "registered",                        737, nullptr },
+  { "radical",                           453, nullptr },
+  { "Aring",                             667, nullptr },
+  { "percent",                           889, nullptr },
+  { "six",                               556, nullptr },
+  { "paragraph",                         537, nullptr },
+  { "dcaron",                            643, nullptr },
+  { "Uogonek",                           722, nullptr },
+  { "two",                               556, nullptr },
+  { "summation",                         600, nullptr },
+  { "Igrave",                            278, nullptr },
+  { "Lacute",                            556, nullptr },
+  { "ocircumflex",                       556, nullptr },
+  { "oacute",                            556, nullptr },
+  { "Uring",                             722, nullptr },
+  { "Lcommaaccent",                      556, nullptr },
+  { "tcaron",                            317, nullptr },
+  { "eogonek",                           556, nullptr },
+  { "Delta",                             612, nullptr },
+  { "Ohungarumlaut",                     778, nullptr },
+  { "asciicircum",                       469, nullptr },
+  { "aring",                             556, nullptr },
+  { "grave",                             333, nullptr },
+  { "uogonek",                           556, nullptr },
+  { "bracketright",                      278, nullptr },
+  { "Iacute",                            278, nullptr },
+  { "ampersand",                         667, nullptr },
+  { "igrave",                            278, nullptr },
+  { "lacute",                            222, nullptr },
+  { "Ncaron",                            722, nullptr },
+  { "plus",                              584, nullptr },
+  { "uring",                             556, nullptr },
+  { "quotesinglbase",                    222, nullptr },
+  { "lcommaaccent",                      222, nullptr },
+  { "Yacute",                            667, nullptr },
+  { "ohungarumlaut",                     556, nullptr },
+  { "threesuperior",                     333, nullptr },
+  { "acute",                             333, nullptr },
+  { "section",                           556, nullptr },
+  { "dieresis",                          333, nullptr },
+  { "iacute",                            278, nullptr },
+  { "quotedblbase",                      333, nullptr },
+  { "ncaron",                            556, nullptr },
+  { "florin",                            556, nullptr },
+  { "yacute",                            500, nullptr },
+  { "Rcommaaccent",                      722, nullptr },
+  { "fi",                                500, nullptr },
+  { "fl",                                500, nullptr },
+  { "Acircumflex",                       667, nullptr },
+  { "Cacute",                            722, nullptr },
+  { "Icircumflex",                       278, nullptr },
+  { "guillemotleft",                     556, nullptr },
+  { "germandbls",                        611, nullptr },
+  { "Amacron",                           667, nullptr },
+  { "seven",                             556, nullptr },
+  { "Sacute",                            667, nullptr },
+  { "ordmasculine",                      365, nullptr },
+  { "dotlessi",                          278, nullptr },
+  { "sterling",                          556, nullptr },
+  { "notequal",                          549, nullptr },
+  { "Imacron",                           278, nullptr },
+  { "rcommaaccent",                      333, nullptr },
+  { "Zdotaccent",                        611, nullptr },
+  { "acircumflex",                       556, nullptr },
+  { "cacute",                            500, nullptr },
+  { "Ecaron",                            667, nullptr },
+  { "icircumflex",                       278, nullptr },
+  { "braceright",                        334, nullptr },
+  { "quotedblright",                     333, nullptr },
+  { "amacron",                           556, nullptr },
+  { "sacute",                            500, nullptr },
+  { "imacron",                           278, nullptr },
+  { "cent",                              556, nullptr },
+  { "currency",                          556, nullptr },
+  { "logicalnot",                        584, nullptr },
+  { "zdotaccent",                        500, nullptr },
+  { "Atilde",                            667, nullptr },
+  { "breve",                             333, nullptr },
+  { "bar",                               260, nullptr },
+  { "fraction",                          167, nullptr },
+  { "less",                              584, nullptr },
+  { "ecaron",                            556, nullptr },
+  { "guilsinglleft",                     333, nullptr },
+  { "exclam",                            278, nullptr },
+  { "period",                            278, nullptr },
+  { "Rcaron",                            722, nullptr },
+  { "Kcommaaccent",                      667, nullptr },
+  { "greater",                           584, nullptr },
+  { "atilde",                            556, nullptr },
+  { "brokenbar",                         260, nullptr },
+  { "quoteleft",                         222, nullptr },
+  { "Edotaccent",                        667, nullptr },
+  { "onesuperior",                       333, nullptr }
 };
 
 static BuiltinFontWidth helveticaBoldWidthsTab[] = {
-  { "Ntilde",                            722, NULL },
-  { "rcaron",                            389, NULL },
-  { "kcommaaccent",                      556, NULL },
-  { "Ncommaaccent",                      722, NULL },
-  { "Zacute",                            611, NULL },
-  { "comma",                             278, NULL },
-  { "cedilla",                           333, NULL },
-  { "plusminus",                         584, NULL },
-  { "circumflex",                        333, NULL },
-  { "dotaccent",                         333, NULL },
-  { "edotaccent",                        556, NULL },
-  { "asciitilde",                        584, NULL },
-  { "colon",                             333, NULL },
-  { "onehalf",                           834, NULL },
-  { "dollar",                            556, NULL },
-  { "Lcaron",                            611, NULL },
-  { "ntilde",                            611, NULL },
-  { "Aogonek",                           722, NULL },
-  { "ncommaaccent",                      611, NULL },
-  { "minus",                             584, NULL },
-  { "Iogonek",                           278, NULL },
-  { "zacute",                            500, NULL },
-  { "yen",                               556, NULL },
-  { "space",                             278, NULL },
-  { "Omacron",                           778, NULL },
-  { "questiondown",                      611, NULL },
-  { "emdash",                           1000, NULL },
-  { "Agrave",                            722, NULL },
-  { "three",                             556, NULL },
-  { "numbersign",                        556, NULL },
-  { "lcaron",                            400, NULL },
-  { "A",                                 722, NULL },
-  { "B",                                 722, NULL },
-  { "C",                                 722, NULL },
-  { "aogonek",                           556, NULL },
-  { "D",                                 722, NULL },
-  { "E",                                 667, NULL },
-  { "onequarter",                        834, NULL },
-  { "F",                                 611, NULL },
-  { "G",                                 778, NULL },
-  { "H",                                 722, NULL },
-  { "I",                                 278, NULL },
-  { "J",                                 556, NULL },
-  { "K",                                 722, NULL },
-  { "iogonek",                           278, NULL },
-  { "backslash",                         278, NULL },
-  { "L",                                 611, NULL },
-  { "periodcentered",                    278, NULL },
-  { "M",                                 833, NULL },
-  { "N",                                 722, NULL },
-  { "omacron",                           611, NULL },
-  { "Tcommaaccent",                      611, NULL },
-  { "O",                                 778, NULL },
-  { "P",                                 667, NULL },
-  { "Q",                                 778, NULL },
-  { "Uhungarumlaut",                     722, NULL },
-  { "R",                                 722, NULL },
-  { "Aacute",                            722, NULL },
-  { "caron",                             333, NULL },
-  { "S",                                 667, NULL },
-  { "T",                                 611, NULL },
-  { "U",                                 722, NULL },
-  { "agrave",                            556, NULL },
-  { "V",                                 667, NULL },
-  { "W",                                 944, NULL },
-  { "X",                                 667, NULL },
-  { "question",                          611, NULL },
-  { "equal",                             584, NULL },
-  { "Y",                                 667, NULL },
-  { "Z",                                 611, NULL },
-  { "four",                              556, NULL },
-  { "a",                                 556, NULL },
-  { "Gcommaaccent",                      778, NULL },
-  { "b",                                 611, NULL },
-  { "c",                                 556, NULL },
-  { "d",                                 611, NULL },
-  { "e",                                 556, NULL },
-  { "f",                                 333, NULL },
-  { "g",                                 611, NULL },
-  { "bullet",                            350, NULL },
-  { "h",                                 611, NULL },
-  { "i",                                 278, NULL },
-  { "Oslash",                            778, NULL },
-  { "dagger",                            556, NULL },
-  { "j",                                 278, NULL },
-  { "k",                                 556, NULL },
-  { "l",                                 278, NULL },
-  { "m",                                 889, NULL },
-  { "n",                                 611, NULL },
-  { "tcommaaccent",                      333, NULL },
-  { "o",                                 611, NULL },
-  { "ordfeminine",                       370, NULL },
-  { "ring",                              333, NULL },
-  { "p",                                 611, NULL },
-  { "q",                                 611, NULL },
-  { "uhungarumlaut",                     611, NULL },
-  { "r",                                 389, NULL },
-  { "twosuperior",                       333, NULL },
-  { "aacute",                            556, NULL },
-  { "s",                                 556, NULL },
-  { "OE",                               1000, NULL },
-  { "t",                                 333, NULL },
-  { "divide",                            584, NULL },
-  { "u",                                 611, NULL },
-  { "Ccaron",                            722, NULL },
-  { "v",                                 556, NULL },
-  { "w",                                 778, NULL },
-  { "x",                                 556, NULL },
-  { "y",                                 556, NULL },
-  { "z",                                 500, NULL },
-  { "Gbreve",                            778, NULL },
-  { "commaaccent",                       250, NULL },
-  { "hungarumlaut",                      333, NULL },
-  { "Idotaccent",                        278, NULL },
-  { "Nacute",                            722, NULL },
-  { "quotedbl",                          474, NULL },
-  { "gcommaaccent",                      611, NULL },
-  { "mu",                                611, NULL },
-  { "greaterequal",                      549, NULL },
-  { "Scaron",                            667, NULL },
-  { "Lslash",                            611, NULL },
-  { "semicolon",                         333, NULL },
-  { "oslash",                            611, NULL },
-  { "lessequal",                         549, NULL },
-  { "lozenge",                           494, NULL },
-  { "parenright",                        333, NULL },
-  { "ccaron",                            556, NULL },
-  { "Ecircumflex",                       667, NULL },
-  { "gbreve",                            611, NULL },
-  { "trademark",                        1000, NULL },
-  { "daggerdbl",                         556, NULL },
-  { "nacute",                            611, NULL },
-  { "macron",                            333, NULL },
-  { "Otilde",                            778, NULL },
-  { "Emacron",                           667, NULL },
-  { "ellipsis",                         1000, NULL },
-  { "scaron",                            556, NULL },
-  { "AE",                               1000, NULL },
-  { "Ucircumflex",                       722, NULL },
-  { "lslash",                            278, NULL },
-  { "quotedblleft",                      500, NULL },
-  { "guilsinglright",                    333, NULL },
-  { "hyphen",                            333, NULL },
-  { "quotesingle",                       238, NULL },
-  { "eight",                             556, NULL },
-  { "exclamdown",                        333, NULL },
-  { "endash",                            556, NULL },
-  { "oe",                                944, NULL },
-  { "Abreve",                            722, NULL },
-  { "Umacron",                           722, NULL },
-  { "ecircumflex",                       556, NULL },
-  { "Adieresis",                         722, NULL },
-  { "copyright",                         737, NULL },
-  { "Egrave",                            667, NULL },
-  { "slash",                             278, NULL },
-  { "Edieresis",                         667, NULL },
-  { "otilde",                            611, NULL },
-  { "Idieresis",                         278, NULL },
-  { "parenleft",                         333, NULL },
-  { "one",                               556, NULL },
-  { "emacron",                           556, NULL },
-  { "Odieresis",                         778, NULL },
-  { "ucircumflex",                       611, NULL },
-  { "bracketleft",                       333, NULL },
-  { "Ugrave",                            722, NULL },
-  { "quoteright",                        278, NULL },
-  { "Udieresis",                         722, NULL },
-  { "perthousand",                      1000, NULL },
-  { "Ydieresis",                         667, NULL },
-  { "umacron",                           611, NULL },
-  { "abreve",                            556, NULL },
-  { "Eacute",                            667, NULL },
-  { "adieresis",                         556, NULL },
-  { "egrave",                            556, NULL },
-  { "edieresis",                         556, NULL },
-  { "idieresis",                         278, NULL },
-  { "Eth",                               722, NULL },
-  { "ae",                                889, NULL },
-  { "asterisk",                          389, NULL },
-  { "odieresis",                         611, NULL },
-  { "Uacute",                            722, NULL },
-  { "ugrave",                            611, NULL },
-  { "nine",                              556, NULL },
-  { "five",                              556, NULL },
-  { "udieresis",                         611, NULL },
-  { "Zcaron",                            611, NULL },
-  { "Scommaaccent",                      667, NULL },
-  { "threequarters",                     834, NULL },
-  { "guillemotright",                    556, NULL },
-  { "Ccedilla",                          722, NULL },
-  { "ydieresis",                         556, NULL },
-  { "tilde",                             333, NULL },
-  { "dbldaggerumlaut",                   556, NULL },
-  { "at",                                975, NULL },
-  { "eacute",                            556, NULL },
-  { "underscore",                        556, NULL },
-  { "Euro",                              556, NULL },
-  { "Dcroat",                            722, NULL },
-  { "multiply",                          584, NULL },
-  { "zero",                              556, NULL },
-  { "eth",                               611, NULL },
-  { "Scedilla",                          667, NULL },
-  { "Ograve",                            778, NULL },
-  { "Racute",                            722, NULL },
-  { "partialdiff",                       494, NULL },
-  { "uacute",                            611, NULL },
-  { "braceleft",                         389, NULL },
-  { "Thorn",                             667, NULL },
-  { "zcaron",                            500, NULL },
-  { "scommaaccent",                      556, NULL },
-  { "ccedilla",                          556, NULL },
-  { "Dcaron",                            722, NULL },
-  { "dcroat",                            611, NULL },
-  { "Ocircumflex",                       778, NULL },
-  { "Oacute",                            778, NULL },
-  { "scedilla",                          556, NULL },
-  { "ogonek",                            333, NULL },
-  { "ograve",                            611, NULL },
-  { "racute",                            389, NULL },
-  { "Tcaron",                            611, NULL },
-  { "Eogonek",                           667, NULL },
-  { "thorn",                             611, NULL },
-  { "degree",                            400, NULL },
-  { "registered",                        737, NULL },
-  { "radical",                           549, NULL },
-  { "Aring",                             722, NULL },
-  { "percent",                           889, NULL },
-  { "six",                               556, NULL },
-  { "paragraph",                         556, NULL },
-  { "dcaron",                            743, NULL },
-  { "Uogonek",                           722, NULL },
-  { "two",                               556, NULL },
-  { "summation",                         600, NULL },
-  { "Igrave",                            278, NULL },
-  { "Lacute",                            611, NULL },
-  { "ocircumflex",                       611, NULL },
-  { "oacute",                            611, NULL },
-  { "Uring",                             722, NULL },
-  { "Lcommaaccent",                      611, NULL },
-  { "tcaron",                            389, NULL },
-  { "eogonek",                           556, NULL },
-  { "Delta",                             612, NULL },
-  { "Ohungarumlaut",                     778, NULL },
-  { "asciicircum",                       584, NULL },
-  { "aring",                             556, NULL },
-  { "grave",                             333, NULL },
-  { "uogonek",                           611, NULL },
-  { "bracketright",                      333, NULL },
-  { "Iacute",                            278, NULL },
-  { "ampersand",                         722, NULL },
-  { "igrave",                            278, NULL },
-  { "lacute",                            278, NULL },
-  { "Ncaron",                            722, NULL },
-  { "plus",                              584, NULL },
-  { "uring",                             611, NULL },
-  { "quotesinglbase",                    278, NULL },
-  { "lcommaaccent",                      278, NULL },
-  { "Yacute",                            667, NULL },
-  { "ohungarumlaut",                     611, NULL },
-  { "threesuperior",                     333, NULL },
-  { "acute",                             333, NULL },
-  { "section",                           556, NULL },
-  { "dieresis",                          333, NULL },
-  { "iacute",                            278, NULL },
-  { "quotedblbase",                      500, NULL },
-  { "ncaron",                            611, NULL },
-  { "florin",                            556, NULL },
-  { "yacute",                            556, NULL },
-  { "Rcommaaccent",                      722, NULL },
-  { "fi",                                611, NULL },
-  { "fl",                                611, NULL },
-  { "Acircumflex",                       722, NULL },
-  { "Cacute",                            722, NULL },
-  { "Icircumflex",                       278, NULL },
-  { "guillemotleft",                     556, NULL },
-  { "germandbls",                        611, NULL },
-  { "Amacron",                           722, NULL },
-  { "seven",                             556, NULL },
-  { "Sacute",                            667, NULL },
-  { "ordmasculine",                      365, NULL },
-  { "dotlessi",                          278, NULL },
-  { "sterling",                          556, NULL },
-  { "notequal",                          549, NULL },
-  { "Imacron",                           278, NULL },
-  { "rcommaaccent",                      389, NULL },
-  { "Zdotaccent",                        611, NULL },
-  { "acircumflex",                       556, NULL },
-  { "cacute",                            556, NULL },
-  { "Ecaron",                            667, NULL },
-  { "icircumflex",                       278, NULL },
-  { "braceright",                        389, NULL },
-  { "quotedblright",                     500, NULL },
-  { "amacron",                           556, NULL },
-  { "sacute",                            556, NULL },
-  { "imacron",                           278, NULL },
-  { "cent",                              556, NULL },
-  { "currency",                          556, NULL },
-  { "logicalnot",                        584, NULL },
-  { "zdotaccent",                        500, NULL },
-  { "Atilde",                            722, NULL },
-  { "breve",                             333, NULL },
-  { "bar",                               280, NULL },
-  { "fraction",                          167, NULL },
-  { "less",                              584, NULL },
-  { "ecaron",                            556, NULL },
-  { "guilsinglleft",                     333, NULL },
-  { "exclam",                            333, NULL },
-  { "period",                            278, NULL },
-  { "Rcaron",                            722, NULL },
-  { "Kcommaaccent",                      722, NULL },
-  { "greater",                           584, NULL },
-  { "atilde",                            556, NULL },
-  { "brokenbar",                         280, NULL },
-  { "quoteleft",                         278, NULL },
-  { "Edotaccent",                        667, NULL },
-  { "onesuperior",                       333, NULL }
+  { "Ntilde",                            722, nullptr },
+  { "rcaron",                            389, nullptr },
+  { "kcommaaccent",                      556, nullptr },
+  { "Ncommaaccent",                      722, nullptr },
+  { "Zacute",                            611, nullptr },
+  { "comma",                             278, nullptr },
+  { "cedilla",                           333, nullptr },
+  { "plusminus",                         584, nullptr },
+  { "circumflex",                        333, nullptr },
+  { "dotaccent",                         333, nullptr },
+  { "edotaccent",                        556, nullptr },
+  { "asciitilde",                        584, nullptr },
+  { "colon",                             333, nullptr },
+  { "onehalf",                           834, nullptr },
+  { "dollar",                            556, nullptr },
+  { "Lcaron",                            611, nullptr },
+  { "ntilde",                            611, nullptr },
+  { "Aogonek",                           722, nullptr },
+  { "ncommaaccent",                      611, nullptr },
+  { "minus",                             584, nullptr },
+  { "Iogonek",                           278, nullptr },
+  { "zacute",                            500, nullptr },
+  { "yen",                               556, nullptr },
+  { "space",                             278, nullptr },
+  { "Omacron",                           778, nullptr },
+  { "questiondown",                      611, nullptr },
+  { "emdash",                           1000, nullptr },
+  { "Agrave",                            722, nullptr },
+  { "three",                             556, nullptr },
+  { "numbersign",                        556, nullptr },
+  { "lcaron",                            400, nullptr },
+  { "A",                                 722, nullptr },
+  { "B",                                 722, nullptr },
+  { "C",                                 722, nullptr },
+  { "aogonek",                           556, nullptr },
+  { "D",                                 722, nullptr },
+  { "E",                                 667, nullptr },
+  { "onequarter",                        834, nullptr },
+  { "F",                                 611, nullptr },
+  { "G",                                 778, nullptr },
+  { "H",                                 722, nullptr },
+  { "I",                                 278, nullptr },
+  { "J",                                 556, nullptr },
+  { "K",                                 722, nullptr },
+  { "iogonek",                           278, nullptr },
+  { "backslash",                         278, nullptr },
+  { "L",                                 611, nullptr },
+  { "periodcentered",                    278, nullptr },
+  { "M",                                 833, nullptr },
+  { "N",                                 722, nullptr },
+  { "omacron",                           611, nullptr },
+  { "Tcommaaccent",                      611, nullptr },
+  { "O",                                 778, nullptr },
+  { "P",                                 667, nullptr },
+  { "Q",                                 778, nullptr },
+  { "Uhungarumlaut",                     722, nullptr },
+  { "R",                                 722, nullptr },
+  { "Aacute",                            722, nullptr },
+  { "caron",                             333, nullptr },
+  { "S",                                 667, nullptr },
+  { "T",                                 611, nullptr },
+  { "U",                                 722, nullptr },
+  { "agrave",                            556, nullptr },
+  { "V",                                 667, nullptr },
+  { "W",                                 944, nullptr },
+  { "X",                                 667, nullptr },
+  { "question",                          611, nullptr },
+  { "equal",                             584, nullptr },
+  { "Y",                                 667, nullptr },
+  { "Z",                                 611, nullptr },
+  { "four",                              556, nullptr },
+  { "a",                                 556, nullptr },
+  { "Gcommaaccent",                      778, nullptr },
+  { "b",                                 611, nullptr },
+  { "c",                                 556, nullptr },
+  { "d",                                 611, nullptr },
+  { "e",                                 556, nullptr },
+  { "f",                                 333, nullptr },
+  { "g",                                 611, nullptr },
+  { "bullet",                            350, nullptr },
+  { "h",                                 611, nullptr },
+  { "i",                                 278, nullptr },
+  { "Oslash",                            778, nullptr },
+  { "dagger",                            556, nullptr },
+  { "j",                                 278, nullptr },
+  { "k",                                 556, nullptr },
+  { "l",                                 278, nullptr },
+  { "m",                                 889, nullptr },
+  { "n",                                 611, nullptr },
+  { "tcommaaccent",                      333, nullptr },
+  { "o",                                 611, nullptr },
+  { "ordfeminine",                       370, nullptr },
+  { "ring",                              333, nullptr },
+  { "p",                                 611, nullptr },
+  { "q",                                 611, nullptr },
+  { "uhungarumlaut",                     611, nullptr },
+  { "r",                                 389, nullptr },
+  { "twosuperior",                       333, nullptr },
+  { "aacute",                            556, nullptr },
+  { "s",                                 556, nullptr },
+  { "OE",                               1000, nullptr },
+  { "t",                                 333, nullptr },
+  { "divide",                            584, nullptr },
+  { "u",                                 611, nullptr },
+  { "Ccaron",                            722, nullptr },
+  { "v",                                 556, nullptr },
+  { "w",                                 778, nullptr },
+  { "x",                                 556, nullptr },
+  { "y",                                 556, nullptr },
+  { "z",                                 500, nullptr },
+  { "Gbreve",                            778, nullptr },
+  { "commaaccent",                       250, nullptr },
+  { "hungarumlaut",                      333, nullptr },
+  { "Idotaccent",                        278, nullptr },
+  { "Nacute",                            722, nullptr },
+  { "quotedbl",                          474, nullptr },
+  { "gcommaaccent",                      611, nullptr },
+  { "mu",                                611, nullptr },
+  { "greaterequal",                      549, nullptr },
+  { "Scaron",                            667, nullptr },
+  { "Lslash",                            611, nullptr },
+  { "semicolon",                         333, nullptr },
+  { "oslash",                            611, nullptr },
+  { "lessequal",                         549, nullptr },
+  { "lozenge",                           494, nullptr },
+  { "parenright",                        333, nullptr },
+  { "ccaron",                            556, nullptr },
+  { "Ecircumflex",                       667, nullptr },
+  { "gbreve",                            611, nullptr },
+  { "trademark",                        1000, nullptr },
+  { "daggerdbl",                         556, nullptr },
+  { "nacute",                            611, nullptr },
+  { "macron",                            333, nullptr },
+  { "Otilde",                            778, nullptr },
+  { "Emacron",                           667, nullptr },
+  { "ellipsis",                         1000, nullptr },
+  { "scaron",                            556, nullptr },
+  { "AE",                               1000, nullptr },
+  { "Ucircumflex",                       722, nullptr },
+  { "lslash",                            278, nullptr },
+  { "quotedblleft",                      500, nullptr },
+  { "guilsinglright",                    333, nullptr },
+  { "hyphen",                            333, nullptr },
+  { "quotesingle",                       238, nullptr },
+  { "eight",                             556, nullptr },
+  { "exclamdown",                        333, nullptr },
+  { "endash",                            556, nullptr },
+  { "oe",                                944, nullptr },
+  { "Abreve",                            722, nullptr },
+  { "Umacron",                           722, nullptr },
+  { "ecircumflex",                       556, nullptr },
+  { "Adieresis",                         722, nullptr },
+  { "copyright",                         737, nullptr },
+  { "Egrave",                            667, nullptr },
+  { "slash",                             278, nullptr },
+  { "Edieresis",                         667, nullptr },
+  { "otilde",                            611, nullptr },
+  { "Idieresis",                         278, nullptr },
+  { "parenleft",                         333, nullptr },
+  { "one",                               556, nullptr },
+  { "emacron",                           556, nullptr },
+  { "Odieresis",                         778, nullptr },
+  { "ucircumflex",                       611, nullptr },
+  { "bracketleft",                       333, nullptr },
+  { "Ugrave",                            722, nullptr },
+  { "quoteright",                        278, nullptr },
+  { "Udieresis",                         722, nullptr },
+  { "perthousand",                      1000, nullptr },
+  { "Ydieresis",                         667, nullptr },
+  { "umacron",                           611, nullptr },
+  { "abreve",                            556, nullptr },
+  { "Eacute",                            667, nullptr },
+  { "adieresis",                         556, nullptr },
+  { "egrave",                            556, nullptr },
+  { "edieresis",                         556, nullptr },
+  { "idieresis",                         278, nullptr },
+  { "Eth",                               722, nullptr },
+  { "ae",                                889, nullptr },
+  { "asterisk",                          389, nullptr },
+  { "odieresis",                         611, nullptr },
+  { "Uacute",                            722, nullptr },
+  { "ugrave",                            611, nullptr },
+  { "nine",                              556, nullptr },
+  { "five",                              556, nullptr },
+  { "udieresis",                         611, nullptr },
+  { "Zcaron",                            611, nullptr },
+  { "Scommaaccent",                      667, nullptr },
+  { "threequarters",                     834, nullptr },
+  { "guillemotright",                    556, nullptr },
+  { "Ccedilla",                          722, nullptr },
+  { "ydieresis",                         556, nullptr },
+  { "tilde",                             333, nullptr },
+  { "dbldaggerumlaut",                   556, nullptr },
+  { "at",                                975, nullptr },
+  { "eacute",                            556, nullptr },
+  { "underscore",                        556, nullptr },
+  { "Euro",                              556, nullptr },
+  { "Dcroat",                            722, nullptr },
+  { "multiply",                          584, nullptr },
+  { "zero",                              556, nullptr },
+  { "eth",                               611, nullptr },
+  { "Scedilla",                          667, nullptr },
+  { "Ograve",                            778, nullptr },
+  { "Racute",                            722, nullptr },
+  { "partialdiff",                       494, nullptr },
+  { "uacute",                            611, nullptr },
+  { "braceleft",                         389, nullptr },
+  { "Thorn",                             667, nullptr },
+  { "zcaron",                            500, nullptr },
+  { "scommaaccent",                      556, nullptr },
+  { "ccedilla",                          556, nullptr },
+  { "Dcaron",                            722, nullptr },
+  { "dcroat",                            611, nullptr },
+  { "Ocircumflex",                       778, nullptr },
+  { "Oacute",                            778, nullptr },
+  { "scedilla",                          556, nullptr },
+  { "ogonek",                            333, nullptr },
+  { "ograve",                            611, nullptr },
+  { "racute",                            389, nullptr },
+  { "Tcaron",                            611, nullptr },
+  { "Eogonek",                           667, nullptr },
+  { "thorn",                             611, nullptr },
+  { "degree",                            400, nullptr },
+  { "registered",                        737, nullptr },
+  { "radical",                           549, nullptr },
+  { "Aring",                             722, nullptr },
+  { "percent",                           889, nullptr },
+  { "six",                               556, nullptr },
+  { "paragraph",                         556, nullptr },
+  { "dcaron",                            743, nullptr },
+  { "Uogonek",                           722, nullptr },
+  { "two",                               556, nullptr },
+  { "summation",                         600, nullptr },
+  { "Igrave",                            278, nullptr },
+  { "Lacute",                            611, nullptr },
+  { "ocircumflex",                       611, nullptr },
+  { "oacute",                            611, nullptr },
+  { "Uring",                             722, nullptr },
+  { "Lcommaaccent",                      611, nullptr },
+  { "tcaron",                            389, nullptr },
+  { "eogonek",                           556, nullptr },
+  { "Delta",                             612, nullptr },
+  { "Ohungarumlaut",                     778, nullptr },
+  { "asciicircum",                       584, nullptr },
+  { "aring",                             556, nullptr },
+  { "grave",                             333, nullptr },
+  { "uogonek",                           611, nullptr },
+  { "bracketright",                      333, nullptr },
+  { "Iacute",                            278, nullptr },
+  { "ampersand",                         722, nullptr },
+  { "igrave",                            278, nullptr },
+  { "lacute",                            278, nullptr },
+  { "Ncaron",                            722, nullptr },
+  { "plus",                              584, nullptr },
+  { "uring",                             611, nullptr },
+  { "quotesinglbase",                    278, nullptr },
+  { "lcommaaccent",                      278, nullptr },
+  { "Yacute",                            667, nullptr },
+  { "ohungarumlaut",                     611, nullptr },
+  { "threesuperior",                     333, nullptr },
+  { "acute",                             333, nullptr },
+  { "section",                           556, nullptr },
+  { "dieresis",                          333, nullptr },
+  { "iacute",                            278, nullptr },
+  { "quotedblbase",                      500, nullptr },
+  { "ncaron",                            611, nullptr },
+  { "florin",                            556, nullptr },
+  { "yacute",                            556, nullptr },
+  { "Rcommaaccent",                      722, nullptr },
+  { "fi",                                611, nullptr },
+  { "fl",                                611, nullptr },
+  { "Acircumflex",                       722, nullptr },
+  { "Cacute",                            722, nullptr },
+  { "Icircumflex",                       278, nullptr },
+  { "guillemotleft",                     556, nullptr },
+  { "germandbls",                        611, nullptr },
+  { "Amacron",                           722, nullptr },
+  { "seven",                             556, nullptr },
+  { "Sacute",                            667, nullptr },
+  { "ordmasculine",                      365, nullptr },
+  { "dotlessi",                          278, nullptr },
+  { "sterling",                          556, nullptr },
+  { "notequal",                          549, nullptr },
+  { "Imacron",                           278, nullptr },
+  { "rcommaaccent",                      389, nullptr },
+  { "Zdotaccent",                        611, nullptr },
+  { "acircumflex",                       556, nullptr },
+  { "cacute",                            556, nullptr },
+  { "Ecaron",                            667, nullptr },
+  { "icircumflex",                       278, nullptr },
+  { "braceright",                        389, nullptr },
+  { "quotedblright",                     500, nullptr },
+  { "amacron",                           556, nullptr },
+  { "sacute",                            556, nullptr },
+  { "imacron",                           278, nullptr },
+  { "cent",                              556, nullptr },
+  { "currency",                          556, nullptr },
+  { "logicalnot",                        584, nullptr },
+  { "zdotaccent",                        500, nullptr },
+  { "Atilde",                            722, nullptr },
+  { "breve",                             333, nullptr },
+  { "bar",                               280, nullptr },
+  { "fraction",                          167, nullptr },
+  { "less",                              584, nullptr },
+  { "ecaron",                            556, nullptr },
+  { "guilsinglleft",                     333, nullptr },
+  { "exclam",                            333, nullptr },
+  { "period",                            278, nullptr },
+  { "Rcaron",                            722, nullptr },
+  { "Kcommaaccent",                      722, nullptr },
+  { "greater",                           584, nullptr },
+  { "atilde",                            556, nullptr },
+  { "brokenbar",                         280, nullptr },
+  { "quoteleft",                         278, nullptr },
+  { "Edotaccent",                        667, nullptr },
+  { "onesuperior",                       333, nullptr }
 };
 
 static BuiltinFontWidth helveticaBoldObliqueWidthsTab[] = {
-  { "Ntilde",                            722, NULL },
-  { "rcaron",                            389, NULL },
-  { "kcommaaccent",                      556, NULL },
-  { "Ncommaaccent",                      722, NULL },
-  { "Zacute",                            611, NULL },
-  { "comma",                             278, NULL },
-  { "cedilla",                           333, NULL },
-  { "plusminus",                         584, NULL },
-  { "circumflex",                        333, NULL },
-  { "dotaccent",                         333, NULL },
-  { "edotaccent",                        556, NULL },
-  { "asciitilde",                        584, NULL },
-  { "colon",                             333, NULL },
-  { "onehalf",                           834, NULL },
-  { "dollar",                            556, NULL },
-  { "Lcaron",                            611, NULL },
-  { "ntilde",                            611, NULL },
-  { "Aogonek",                           722, NULL },
-  { "ncommaaccent",                      611, NULL },
-  { "minus",                             584, NULL },
-  { "Iogonek",                           278, NULL },
-  { "zacute",                            500, NULL },
-  { "yen",                               556, NULL },
-  { "space",                             278, NULL },
-  { "Omacron",                           778, NULL },
-  { "questiondown",                      611, NULL },
-  { "emdash",                           1000, NULL },
-  { "Agrave",                            722, NULL },
-  { "three",                             556, NULL },
-  { "numbersign",                        556, NULL },
-  { "lcaron",                            400, NULL },
-  { "A",                                 722, NULL },
-  { "B",                                 722, NULL },
-  { "C",                                 722, NULL },
-  { "aogonek",                           556, NULL },
-  { "D",                                 722, NULL },
-  { "E",                                 667, NULL },
-  { "onequarter",                        834, NULL },
-  { "F",                                 611, NULL },
-  { "G",                                 778, NULL },
-  { "H",                                 722, NULL },
-  { "I",                                 278, NULL },
-  { "J",                                 556, NULL },
-  { "K",                                 722, NULL },
-  { "iogonek",                           278, NULL },
-  { "backslash",                         278, NULL },
-  { "L",                                 611, NULL },
-  { "periodcentered",                    278, NULL },
-  { "M",                                 833, NULL },
-  { "N",                                 722, NULL },
-  { "omacron",                           611, NULL },
-  { "Tcommaaccent",                      611, NULL },
-  { "O",                                 778, NULL },
-  { "P",                                 667, NULL },
-  { "Q",                                 778, NULL },
-  { "Uhungarumlaut",                     722, NULL },
-  { "R",                                 722, NULL },
-  { "Aacute",                            722, NULL },
-  { "caron",                             333, NULL },
-  { "S",                                 667, NULL },
-  { "T",                                 611, NULL },
-  { "U",                                 722, NULL },
-  { "agrave",                            556, NULL },
-  { "V",                                 667, NULL },
-  { "W",                                 944, NULL },
-  { "X",                                 667, NULL },
-  { "question",                          611, NULL },
-  { "equal",                             584, NULL },
-  { "Y",                                 667, NULL },
-  { "Z",                                 611, NULL },
-  { "four",                              556, NULL },
-  { "a",                                 556, NULL },
-  { "Gcommaaccent",                      778, NULL },
-  { "b",                                 611, NULL },
-  { "c",                                 556, NULL },
-  { "d",                                 611, NULL },
-  { "e",                                 556, NULL },
-  { "f",                                 333, NULL },
-  { "g",                                 611, NULL },
-  { "bullet",                            350, NULL },
-  { "h",                                 611, NULL },
-  { "i",                                 278, NULL },
-  { "Oslash",                            778, NULL },
-  { "dagger",                            556, NULL },
-  { "j",                                 278, NULL },
-  { "k",                                 556, NULL },
-  { "l",                                 278, NULL },
-  { "m",                                 889, NULL },
-  { "n",                                 611, NULL },
-  { "tcommaaccent",                      333, NULL },
-  { "o",                                 611, NULL },
-  { "ordfeminine",                       370, NULL },
-  { "ring",                              333, NULL },
-  { "p",                                 611, NULL },
-  { "q",                                 611, NULL },
-  { "uhungarumlaut",                     611, NULL },
-  { "r",                                 389, NULL },
-  { "twosuperior",                       333, NULL },
-  { "aacute",                            556, NULL },
-  { "s",                                 556, NULL },
-  { "OE",                               1000, NULL },
-  { "t",                                 333, NULL },
-  { "divide",                            584, NULL },
-  { "u",                                 611, NULL },
-  { "Ccaron",                            722, NULL },
-  { "v",                                 556, NULL },
-  { "w",                                 778, NULL },
-  { "x",                                 556, NULL },
-  { "y",                                 556, NULL },
-  { "z",                                 500, NULL },
-  { "Gbreve",                            778, NULL },
-  { "commaaccent",                       250, NULL },
-  { "hungarumlaut",                      333, NULL },
-  { "Idotaccent",                        278, NULL },
-  { "Nacute",                            722, NULL },
-  { "quotedbl",                          474, NULL },
-  { "gcommaaccent",                      611, NULL },
-  { "mu",                                611, NULL },
-  { "greaterequal",                      549, NULL },
-  { "Scaron",                            667, NULL },
-  { "Lslash",                            611, NULL },
-  { "semicolon",                         333, NULL },
-  { "oslash",                            611, NULL },
-  { "lessequal",                         549, NULL },
-  { "lozenge",                           494, NULL },
-  { "parenright",                        333, NULL },
-  { "ccaron",                            556, NULL },
-  { "Ecircumflex",                       667, NULL },
-  { "gbreve",                            611, NULL },
-  { "trademark",                        1000, NULL },
-  { "daggerdbl",                         556, NULL },
-  { "nacute",                            611, NULL },
-  { "macron",                            333, NULL },
-  { "Otilde",                            778, NULL },
-  { "Emacron",                           667, NULL },
-  { "ellipsis",                         1000, NULL },
-  { "scaron",                            556, NULL },
-  { "AE",                               1000, NULL },
-  { "Ucircumflex",                       722, NULL },
-  { "lslash",                            278, NULL },
-  { "quotedblleft",                      500, NULL },
-  { "guilsinglright",                    333, NULL },
-  { "hyphen",                            333, NULL },
-  { "quotesingle",                       238, NULL },
-  { "eight",                             556, NULL },
-  { "exclamdown",                        333, NULL },
-  { "endash",                            556, NULL },
-  { "oe",                                944, NULL },
-  { "Abreve",                            722, NULL },
-  { "Umacron",                           722, NULL },
-  { "ecircumflex",                       556, NULL },
-  { "Adieresis",                         722, NULL },
-  { "copyright",                         737, NULL },
-  { "Egrave",                            667, NULL },
-  { "slash",                             278, NULL },
-  { "Edieresis",                         667, NULL },
-  { "otilde",                            611, NULL },
-  { "Idieresis",                         278, NULL },
-  { "parenleft",                         333, NULL },
-  { "one",                               556, NULL },
-  { "emacron",                           556, NULL },
-  { "Odieresis",                         778, NULL },
-  { "ucircumflex",                       611, NULL },
-  { "bracketleft",                       333, NULL },
-  { "Ugrave",                            722, NULL },
-  { "quoteright",                        278, NULL },
-  { "Udieresis",                         722, NULL },
-  { "perthousand",                      1000, NULL },
-  { "Ydieresis",                         667, NULL },
-  { "umacron",                           611, NULL },
-  { "abreve",                            556, NULL },
-  { "Eacute",                            667, NULL },
-  { "adieresis",                         556, NULL },
-  { "egrave",                            556, NULL },
-  { "edieresis",                         556, NULL },
-  { "idieresis",                         278, NULL },
-  { "Eth",                               722, NULL },
-  { "ae",                                889, NULL },
-  { "asterisk",                          389, NULL },
-  { "odieresis",                         611, NULL },
-  { "Uacute",                            722, NULL },
-  { "ugrave",                            611, NULL },
-  { "nine",                              556, NULL },
-  { "five",                              556, NULL },
-  { "udieresis",                         611, NULL },
-  { "Zcaron",                            611, NULL },
-  { "Scommaaccent",                      667, NULL },
-  { "threequarters",                     834, NULL },
-  { "guillemotright",                    556, NULL },
-  { "Ccedilla",                          722, NULL },
-  { "ydieresis",                         556, NULL },
-  { "tilde",                             333, NULL },
-  { "at",                                975, NULL },
-  { "eacute",                            556, NULL },
-  { "underscore",                        556, NULL },
-  { "Euro",                              556, NULL },
-  { "Dcroat",                            722, NULL },
-  { "multiply",                          584, NULL },
-  { "zero",                              556, NULL },
-  { "eth",                               611, NULL },
-  { "Scedilla",                          667, NULL },
-  { "Ograve",                            778, NULL },
-  { "Racute",                            722, NULL },
-  { "partialdiff",                       494, NULL },
-  { "uacute",                            611, NULL },
-  { "braceleft",                         389, NULL },
-  { "Thorn",                             667, NULL },
-  { "zcaron",                            500, NULL },
-  { "scommaaccent",                      556, NULL },
-  { "ccedilla",                          556, NULL },
-  { "Dcaron",                            722, NULL },
-  { "dcroat",                            611, NULL },
-  { "Ocircumflex",                       778, NULL },
-  { "Oacute",                            778, NULL },
-  { "scedilla",                          556, NULL },
-  { "ogonek",                            333, NULL },
-  { "ograve",                            611, NULL },
-  { "racute",                            389, NULL },
-  { "Tcaron",                            611, NULL },
-  { "Eogonek",                           667, NULL },
-  { "thorn",                             611, NULL },
-  { "degree",                            400, NULL },
-  { "registered",                        737, NULL },
-  { "radical",                           549, NULL },
-  { "Aring",                             722, NULL },
-  { "percent",                           889, NULL },
-  { "six",                               556, NULL },
-  { "paragraph",                         556, NULL },
-  { "dcaron",                            743, NULL },
-  { "Uogonek",                           722, NULL },
-  { "two",                               556, NULL },
-  { "summation",                         600, NULL },
-  { "Igrave",                            278, NULL },
-  { "Lacute",                            611, NULL },
-  { "ocircumflex",                       611, NULL },
-  { "oacute",                            611, NULL },
-  { "Uring",                             722, NULL },
-  { "Lcommaaccent",                      611, NULL },
-  { "tcaron",                            389, NULL },
-  { "eogonek",                           556, NULL },
-  { "Delta",                             612, NULL },
-  { "Ohungarumlaut",                     778, NULL },
-  { "asciicircum",                       584, NULL },
-  { "aring",                             556, NULL },
-  { "grave",                             333, NULL },
-  { "uogonek",                           611, NULL },
-  { "bracketright",                      333, NULL },
-  { "Iacute",                            278, NULL },
-  { "ampersand",                         722, NULL },
-  { "igrave",                            278, NULL },
-  { "lacute",                            278, NULL },
-  { "Ncaron",                            722, NULL },
-  { "plus",                              584, NULL },
-  { "uring",                             611, NULL },
-  { "quotesinglbase",                    278, NULL },
-  { "lcommaaccent",                      278, NULL },
-  { "Yacute",                            667, NULL },
-  { "ohungarumlaut",                     611, NULL },
-  { "threesuperior",                     333, NULL },
-  { "acute",                             333, NULL },
-  { "section",                           556, NULL },
-  { "dieresis",                          333, NULL },
-  { "iacute",                            278, NULL },
-  { "quotedblbase",                      500, NULL },
-  { "ncaron",                            611, NULL },
-  { "florin",                            556, NULL },
-  { "yacute",                            556, NULL },
-  { "Rcommaaccent",                      722, NULL },
-  { "fi",                                611, NULL },
-  { "fl",                                611, NULL },
-  { "Acircumflex",                       722, NULL },
-  { "Cacute",                            722, NULL },
-  { "Icircumflex",                       278, NULL },
-  { "guillemotleft",                     556, NULL },
-  { "germandbls",                        611, NULL },
-  { "Amacron",                           722, NULL },
-  { "seven",                             556, NULL },
-  { "Sacute",                            667, NULL },
-  { "ordmasculine",                      365, NULL },
-  { "dotlessi",                          278, NULL },
-  { "sterling",                          556, NULL },
-  { "notequal",                          549, NULL },
-  { "Imacron",                           278, NULL },
-  { "rcommaaccent",                      389, NULL },
-  { "Zdotaccent",                        611, NULL },
-  { "acircumflex",                       556, NULL },
-  { "cacute",                            556, NULL },
-  { "Ecaron",                            667, NULL },
-  { "icircumflex",                       278, NULL },
-  { "braceright",                        389, NULL },
-  { "quotedblright",                     500, NULL },
-  { "amacron",                           556, NULL },
-  { "sacute",                            556, NULL },
-  { "imacron",                           278, NULL },
-  { "cent",                              556, NULL },
-  { "currency",                          556, NULL },
-  { "logicalnot",                        584, NULL },
-  { "zdotaccent",                        500, NULL },
-  { "Atilde",                            722, NULL },
-  { "breve",                             333, NULL },
-  { "bar",                               280, NULL },
-  { "fraction",                          167, NULL },
-  { "less",                              584, NULL },
-  { "ecaron",                            556, NULL },
-  { "guilsinglleft",                     333, NULL },
-  { "exclam",                            333, NULL },
-  { "period",                            278, NULL },
-  { "Rcaron",                            722, NULL },
-  { "Kcommaaccent",                      722, NULL },
-  { "greater",                           584, NULL },
-  { "atilde",                            556, NULL },
-  { "brokenbar",                         280, NULL },
-  { "quoteleft",                         278, NULL },
-  { "Edotaccent",                        667, NULL },
-  { "onesuperior",                       333, NULL }
+  { "Ntilde",                            722, nullptr },
+  { "rcaron",                            389, nullptr },
+  { "kcommaaccent",                      556, nullptr },
+  { "Ncommaaccent",                      722, nullptr },
+  { "Zacute",                            611, nullptr },
+  { "comma",                             278, nullptr },
+  { "cedilla",                           333, nullptr },
+  { "plusminus",                         584, nullptr },
+  { "circumflex",                        333, nullptr },
+  { "dotaccent",                         333, nullptr },
+  { "edotaccent",                        556, nullptr },
+  { "asciitilde",                        584, nullptr },
+  { "colon",                             333, nullptr },
+  { "onehalf",                           834, nullptr },
+  { "dollar",                            556, nullptr },
+  { "Lcaron",                            611, nullptr },
+  { "ntilde",                            611, nullptr },
+  { "Aogonek",                           722, nullptr },
+  { "ncommaaccent",                      611, nullptr },
+  { "minus",                             584, nullptr },
+  { "Iogonek",                           278, nullptr },
+  { "zacute",                            500, nullptr },
+  { "yen",                               556, nullptr },
+  { "space",                             278, nullptr },
+  { "Omacron",                           778, nullptr },
+  { "questiondown",                      611, nullptr },
+  { "emdash",                           1000, nullptr },
+  { "Agrave",                            722, nullptr },
+  { "three",                             556, nullptr },
+  { "numbersign",                        556, nullptr },
+  { "lcaron",                            400, nullptr },
+  { "A",                                 722, nullptr },
+  { "B",                                 722, nullptr },
+  { "C",                                 722, nullptr },
+  { "aogonek",                           556, nullptr },
+  { "D",                                 722, nullptr },
+  { "E",                                 667, nullptr },
+  { "onequarter",                        834, nullptr },
+  { "F",                                 611, nullptr },
+  { "G",                                 778, nullptr },
+  { "H",                                 722, nullptr },
+  { "I",                                 278, nullptr },
+  { "J",                                 556, nullptr },
+  { "K",                                 722, nullptr },
+  { "iogonek",                           278, nullptr },
+  { "backslash",                         278, nullptr },
+  { "L",                                 611, nullptr },
+  { "periodcentered",                    278, nullptr },
+  { "M",                                 833, nullptr },
+  { "N",                                 722, nullptr },
+  { "omacron",                           611, nullptr },
+  { "Tcommaaccent",                      611, nullptr },
+  { "O",                                 778, nullptr },
+  { "P",                                 667, nullptr },
+  { "Q",                                 778, nullptr },
+  { "Uhungarumlaut",                     722, nullptr },
+  { "R",                                 722, nullptr },
+  { "Aacute",                            722, nullptr },
+  { "caron",                             333, nullptr },
+  { "S",                                 667, nullptr },
+  { "T",                                 611, nullptr },
+  { "U",                                 722, nullptr },
+  { "agrave",                            556, nullptr },
+  { "V",                                 667, nullptr },
+  { "W",                                 944, nullptr },
+  { "X",                                 667, nullptr },
+  { "question",                          611, nullptr },
+  { "equal",                             584, nullptr },
+  { "Y",                                 667, nullptr },
+  { "Z",                                 611, nullptr },
+  { "four",                              556, nullptr },
+  { "a",                                 556, nullptr },
+  { "Gcommaaccent",                      778, nullptr },
+  { "b",                                 611, nullptr },
+  { "c",                                 556, nullptr },
+  { "d",                                 611, nullptr },
+  { "e",                                 556, nullptr },
+  { "f",                                 333, nullptr },
+  { "g",                                 611, nullptr },
+  { "bullet",                            350, nullptr },
+  { "h",                                 611, nullptr },
+  { "i",                                 278, nullptr },
+  { "Oslash",                            778, nullptr },
+  { "dagger",                            556, nullptr },
+  { "j",                                 278, nullptr },
+  { "k",                                 556, nullptr },
+  { "l",                                 278, nullptr },
+  { "m",                                 889, nullptr },
+  { "n",                                 611, nullptr },
+  { "tcommaaccent",                      333, nullptr },
+  { "o",                                 611, nullptr },
+  { "ordfeminine",                       370, nullptr },
+  { "ring",                              333, nullptr },
+  { "p",                                 611, nullptr },
+  { "q",                                 611, nullptr },
+  { "uhungarumlaut",                     611, nullptr },
+  { "r",                                 389, nullptr },
+  { "twosuperior",                       333, nullptr },
+  { "aacute",                            556, nullptr },
+  { "s",                                 556, nullptr },
+  { "OE",                               1000, nullptr },
+  { "t",                                 333, nullptr },
+  { "divide",                            584, nullptr },
+  { "u",                                 611, nullptr },
+  { "Ccaron",                            722, nullptr },
+  { "v",                                 556, nullptr },
+  { "w",                                 778, nullptr },
+  { "x",                                 556, nullptr },
+  { "y",                                 556, nullptr },
+  { "z",                                 500, nullptr },
+  { "Gbreve",                            778, nullptr },
+  { "commaaccent",                       250, nullptr },
+  { "hungarumlaut",                      333, nullptr },
+  { "Idotaccent",                        278, nullptr },
+  { "Nacute",                            722, nullptr },
+  { "quotedbl",                          474, nullptr },
+  { "gcommaaccent",                      611, nullptr },
+  { "mu",                                611, nullptr },
+  { "greaterequal",                      549, nullptr },
+  { "Scaron",                            667, nullptr },
+  { "Lslash",                            611, nullptr },
+  { "semicolon",                         333, nullptr },
+  { "oslash",                            611, nullptr },
+  { "lessequal",                         549, nullptr },
+  { "lozenge",                           494, nullptr },
+  { "parenright",                        333, nullptr },
+  { "ccaron",                            556, nullptr },
+  { "Ecircumflex",                       667, nullptr },
+  { "gbreve",                            611, nullptr },
+  { "trademark",                        1000, nullptr },
+  { "daggerdbl",                         556, nullptr },
+  { "nacute",                            611, nullptr },
+  { "macron",                            333, nullptr },
+  { "Otilde",                            778, nullptr },
+  { "Emacron",                           667, nullptr },
+  { "ellipsis",                         1000, nullptr },
+  { "scaron",                            556, nullptr },
+  { "AE",                               1000, nullptr },
+  { "Ucircumflex",                       722, nullptr },
+  { "lslash",                            278, nullptr },
+  { "quotedblleft",                      500, nullptr },
+  { "guilsinglright",                    333, nullptr },
+  { "hyphen",                            333, nullptr },
+  { "quotesingle",                       238, nullptr },
+  { "eight",                             556, nullptr },
+  { "exclamdown",                        333, nullptr },
+  { "endash",                            556, nullptr },
+  { "oe",                                944, nullptr },
+  { "Abreve",                            722, nullptr },
+  { "Umacron",                           722, nullptr },
+  { "ecircumflex",                       556, nullptr },
+  { "Adieresis",                         722, nullptr },
+  { "copyright",                         737, nullptr },
+  { "Egrave",                            667, nullptr },
+  { "slash",                             278, nullptr },
+  { "Edieresis",                         667, nullptr },
+  { "otilde",                            611, nullptr },
+  { "Idieresis",                         278, nullptr },
+  { "parenleft",                         333, nullptr },
+  { "one",                               556, nullptr },
+  { "emacron",                           556, nullptr },
+  { "Odieresis",                         778, nullptr },
+  { "ucircumflex",                       611, nullptr },
+  { "bracketleft",                       333, nullptr },
+  { "Ugrave",                            722, nullptr },
+  { "quoteright",                        278, nullptr },
+  { "Udieresis",                         722, nullptr },
+  { "perthousand",                      1000, nullptr },
+  { "Ydieresis",                         667, nullptr },
+  { "umacron",                           611, nullptr },
+  { "abreve",                            556, nullptr },
+  { "Eacute",                            667, nullptr },
+  { "adieresis",                         556, nullptr },
+  { "egrave",                            556, nullptr },
+  { "edieresis",                         556, nullptr },
+  { "idieresis",                         278, nullptr },
+  { "Eth",                               722, nullptr },
+  { "ae",                                889, nullptr },
+  { "asterisk",                          389, nullptr },
+  { "odieresis",                         611, nullptr },
+  { "Uacute",                            722, nullptr },
+  { "ugrave",                            611, nullptr },
+  { "nine",                              556, nullptr },
+  { "five",                              556, nullptr },
+  { "udieresis",                         611, nullptr },
+  { "Zcaron",                            611, nullptr },
+  { "Scommaaccent",                      667, nullptr },
+  { "threequarters",                     834, nullptr },
+  { "guillemotright",                    556, nullptr },
+  { "Ccedilla",                          722, nullptr },
+  { "ydieresis",                         556, nullptr },
+  { "tilde",                             333, nullptr },
+  { "at",                                975, nullptr },
+  { "eacute",                            556, nullptr },
+  { "underscore",                        556, nullptr },
+  { "Euro",                              556, nullptr },
+  { "Dcroat",                            722, nullptr },
+  { "multiply",                          584, nullptr },
+  { "zero",                              556, nullptr },
+  { "eth",                               611, nullptr },
+  { "Scedilla",                          667, nullptr },
+  { "Ograve",                            778, nullptr },
+  { "Racute",                            722, nullptr },
+  { "partialdiff",                       494, nullptr },
+  { "uacute",                            611, nullptr },
+  { "braceleft",                         389, nullptr },
+  { "Thorn",                             667, nullptr },
+  { "zcaron",                            500, nullptr },
+  { "scommaaccent",                      556, nullptr },
+  { "ccedilla",                          556, nullptr },
+  { "Dcaron",                            722, nullptr },
+  { "dcroat",                            611, nullptr },
+  { "Ocircumflex",                       778, nullptr },
+  { "Oacute",                            778, nullptr },
+  { "scedilla",                          556, nullptr },
+  { "ogonek",                            333, nullptr },
+  { "ograve",                            611, nullptr },
+  { "racute",                            389, nullptr },
+  { "Tcaron",                            611, nullptr },
+  { "Eogonek",                           667, nullptr },
+  { "thorn",                             611, nullptr },
+  { "degree",                            400, nullptr },
+  { "registered",                        737, nullptr },
+  { "radical",                           549, nullptr },
+  { "Aring",                             722, nullptr },
+  { "percent",                           889, nullptr },
+  { "six",                               556, nullptr },
+  { "paragraph",                         556, nullptr },
+  { "dcaron",                            743, nullptr },
+  { "Uogonek",                           722, nullptr },
+  { "two",                               556, nullptr },
+  { "summation",                         600, nullptr },
+  { "Igrave",                            278, nullptr },
+  { "Lacute",                            611, nullptr },
+  { "ocircumflex",                       611, nullptr },
+  { "oacute",                            611, nullptr },
+  { "Uring",                             722, nullptr },
+  { "Lcommaaccent",                      611, nullptr },
+  { "tcaron",                            389, nullptr },
+  { "eogonek",                           556, nullptr },
+  { "Delta",                             612, nullptr },
+  { "Ohungarumlaut",                     778, nullptr },
+  { "asciicircum",                       584, nullptr },
+  { "aring",                             556, nullptr },
+  { "grave",                             333, nullptr },
+  { "uogonek",                           611, nullptr },
+  { "bracketright",                      333, nullptr },
+  { "Iacute",                            278, nullptr },
+  { "ampersand",                         722, nullptr },
+  { "igrave",                            278, nullptr },
+  { "lacute",                            278, nullptr },
+  { "Ncaron",                            722, nullptr },
+  { "plus",                              584, nullptr },
+  { "uring",                             611, nullptr },
+  { "quotesinglbase",                    278, nullptr },
+  { "lcommaaccent",                      278, nullptr },
+  { "Yacute",                            667, nullptr },
+  { "ohungarumlaut",                     611, nullptr },
+  { "threesuperior",                     333, nullptr },
+  { "acute",                             333, nullptr },
+  { "section",                           556, nullptr },
+  { "dieresis",                          333, nullptr },
+  { "iacute",                            278, nullptr },
+  { "quotedblbase",                      500, nullptr },
+  { "ncaron",                            611, nullptr },
+  { "florin",                            556, nullptr },
+  { "yacute",                            556, nullptr },
+  { "Rcommaaccent",                      722, nullptr },
+  { "fi",                                611, nullptr },
+  { "fl",                                611, nullptr },
+  { "Acircumflex",                       722, nullptr },
+  { "Cacute",                            722, nullptr },
+  { "Icircumflex",                       278, nullptr },
+  { "guillemotleft",                     556, nullptr },
+  { "germandbls",                        611, nullptr },
+  { "Amacron",                           722, nullptr },
+  { "seven",                             556, nullptr },
+  { "Sacute",                            667, nullptr },
+  { "ordmasculine",                      365, nullptr },
+  { "dotlessi",                          278, nullptr },
+  { "sterling",                          556, nullptr },
+  { "notequal",                          549, nullptr },
+  { "Imacron",                           278, nullptr },
+  { "rcommaaccent",                      389, nullptr },
+  { "Zdotaccent",                        611, nullptr },
+  { "acircumflex",                       556, nullptr },
+  { "cacute",                            556, nullptr },
+  { "Ecaron",                            667, nullptr },
+  { "icircumflex",                       278, nullptr },
+  { "braceright",                        389, nullptr },
+  { "quotedblright",                     500, nullptr },
+  { "amacron",                           556, nullptr },
+  { "sacute",                            556, nullptr },
+  { "imacron",                           278, nullptr },
+  { "cent",                              556, nullptr },
+  { "currency",                          556, nullptr },
+  { "logicalnot",                        584, nullptr },
+  { "zdotaccent",                        500, nullptr },
+  { "Atilde",                            722, nullptr },
+  { "breve",                             333, nullptr },
+  { "bar",                               280, nullptr },
+  { "fraction",                          167, nullptr },
+  { "less",                              584, nullptr },
+  { "ecaron",                            556, nullptr },
+  { "guilsinglleft",                     333, nullptr },
+  { "exclam",                            333, nullptr },
+  { "period",                            278, nullptr },
+  { "Rcaron",                            722, nullptr },
+  { "Kcommaaccent",                      722, nullptr },
+  { "greater",                           584, nullptr },
+  { "atilde",                            556, nullptr },
+  { "brokenbar",                         280, nullptr },
+  { "quoteleft",                         278, nullptr },
+  { "Edotaccent",                        667, nullptr },
+  { "onesuperior",                       333, nullptr }
 };
 
 static BuiltinFontWidth helveticaObliqueWidthsTab[] = {
-  { "Ntilde",                            722, NULL },
-  { "rcaron",                            333, NULL },
-  { "kcommaaccent",                      500, NULL },
-  { "Ncommaaccent",                      722, NULL },
-  { "Zacute",                            611, NULL },
-  { "comma",                             278, NULL },
-  { "cedilla",                           333, NULL },
-  { "plusminus",                         584, NULL },
-  { "circumflex",                        333, NULL },
-  { "dotaccent",                         333, NULL },
-  { "edotaccent",                        556, NULL },
-  { "asciitilde",                        584, NULL },
-  { "colon",                             278, NULL },
-  { "onehalf",                           834, NULL },
-  { "dollar",                            556, NULL },
-  { "Lcaron",                            556, NULL },
-  { "ntilde",                            556, NULL },
-  { "Aogonek",                           667, NULL },
-  { "ncommaaccent",                      556, NULL },
-  { "minus",                             584, NULL },
-  { "Iogonek",                           278, NULL },
-  { "zacute",                            500, NULL },
-  { "yen",                               556, NULL },
-  { "space",                             278, NULL },
-  { "Omacron",                           778, NULL },
-  { "questiondown",                      611, NULL },
-  { "emdash",                           1000, NULL },
-  { "Agrave",                            667, NULL },
-  { "three",                             556, NULL },
-  { "numbersign",                        556, NULL },
-  { "lcaron",                            299, NULL },
-  { "A",                                 667, NULL },
-  { "B",                                 667, NULL },
-  { "C",                                 722, NULL },
-  { "aogonek",                           556, NULL },
-  { "D",                                 722, NULL },
-  { "E",                                 667, NULL },
-  { "onequarter",                        834, NULL },
-  { "F",                                 611, NULL },
-  { "G",                                 778, NULL },
-  { "H",                                 722, NULL },
-  { "I",                                 278, NULL },
-  { "J",                                 500, NULL },
-  { "K",                                 667, NULL },
-  { "iogonek",                           222, NULL },
-  { "backslash",                         278, NULL },
-  { "L",                                 556, NULL },
-  { "periodcentered",                    278, NULL },
-  { "M",                                 833, NULL },
-  { "N",                                 722, NULL },
-  { "omacron",                           556, NULL },
-  { "Tcommaaccent",                      611, NULL },
-  { "O",                                 778, NULL },
-  { "P",                                 667, NULL },
-  { "Q",                                 778, NULL },
-  { "Uhungarumlaut",                     722, NULL },
-  { "R",                                 722, NULL },
-  { "Aacute",                            667, NULL },
-  { "caron",                             333, NULL },
-  { "S",                                 667, NULL },
-  { "T",                                 611, NULL },
-  { "U",                                 722, NULL },
-  { "agrave",                            556, NULL },
-  { "V",                                 667, NULL },
-  { "W",                                 944, NULL },
-  { "X",                                 667, NULL },
-  { "question",                          556, NULL },
-  { "equal",                             584, NULL },
-  { "Y",                                 667, NULL },
-  { "Z",                                 611, NULL },
-  { "four",                              556, NULL },
-  { "a",                                 556, NULL },
-  { "Gcommaaccent",                      778, NULL },
-  { "b",                                 556, NULL },
-  { "c",                                 500, NULL },
-  { "d",                                 556, NULL },
-  { "e",                                 556, NULL },
-  { "f",                                 278, NULL },
-  { "g",                                 556, NULL },
-  { "bullet",                            350, NULL },
-  { "h",                                 556, NULL },
-  { "i",                                 222, NULL },
-  { "Oslash",                            778, NULL },
-  { "dagger",                            556, NULL },
-  { "j",                                 222, NULL },
-  { "k",                                 500, NULL },
-  { "l",                                 222, NULL },
-  { "m",                                 833, NULL },
-  { "n",                                 556, NULL },
-  { "tcommaaccent",                      278, NULL },
-  { "o",                                 556, NULL },
-  { "ordfeminine",                       370, NULL },
-  { "ring",                              333, NULL },
-  { "p",                                 556, NULL },
-  { "q",                                 556, NULL },
-  { "uhungarumlaut",                     556, NULL },
-  { "r",                                 333, NULL },
-  { "twosuperior",                       333, NULL },
-  { "aacute",                            556, NULL },
-  { "s",                                 500, NULL },
-  { "OE",                               1000, NULL },
-  { "t",                                 278, NULL },
-  { "divide",                            584, NULL },
-  { "u",                                 556, NULL },
-  { "Ccaron",                            722, NULL },
-  { "v",                                 500, NULL },
-  { "w",                                 722, NULL },
-  { "x",                                 500, NULL },
-  { "y",                                 500, NULL },
-  { "z",                                 500, NULL },
-  { "Gbreve",                            778, NULL },
-  { "commaaccent",                       250, NULL },
-  { "hungarumlaut",                      333, NULL },
-  { "Idotaccent",                        278, NULL },
-  { "Nacute",                            722, NULL },
-  { "quotedbl",                          355, NULL },
-  { "gcommaaccent",                      556, NULL },
-  { "mu",                                556, NULL },
-  { "greaterequal",                      549, NULL },
-  { "Scaron",                            667, NULL },
-  { "Lslash",                            556, NULL },
-  { "semicolon",                         278, NULL },
-  { "oslash",                            611, NULL },
-  { "lessequal",                         549, NULL },
-  { "lozenge",                           471, NULL },
-  { "parenright",                        333, NULL },
-  { "ccaron",                            500, NULL },
-  { "Ecircumflex",                       667, NULL },
-  { "gbreve",                            556, NULL },
-  { "trademark",                        1000, NULL },
-  { "daggerdbl",                         556, NULL },
-  { "nacute",                            556, NULL },
-  { "macron",                            333, NULL },
-  { "Otilde",                            778, NULL },
-  { "Emacron",                           667, NULL },
-  { "ellipsis",                         1000, NULL },
-  { "scaron",                            500, NULL },
-  { "AE",                               1000, NULL },
-  { "Ucircumflex",                       722, NULL },
-  { "lslash",                            222, NULL },
-  { "quotedblleft",                      333, NULL },
-  { "guilsinglright",                    333, NULL },
-  { "hyphen",                            333, NULL },
-  { "quotesingle",                       191, NULL },
-  { "eight",                             556, NULL },
-  { "exclamdown",                        333, NULL },
-  { "endash",                            556, NULL },
-  { "oe",                                944, NULL },
-  { "Abreve",                            667, NULL },
-  { "Umacron",                           722, NULL },
-  { "ecircumflex",                       556, NULL },
-  { "Adieresis",                         667, NULL },
-  { "copyright",                         737, NULL },
-  { "Egrave",                            667, NULL },
-  { "slash",                             278, NULL },
-  { "Edieresis",                         667, NULL },
-  { "otilde",                            556, NULL },
-  { "Idieresis",                         278, NULL },
-  { "parenleft",                         333, NULL },
-  { "one",                               556, NULL },
-  { "emacron",                           556, NULL },
-  { "Odieresis",                         778, NULL },
-  { "ucircumflex",                       556, NULL },
-  { "bracketleft",                       278, NULL },
-  { "Ugrave",                            722, NULL },
-  { "quoteright",                        222, NULL },
-  { "Udieresis",                         722, NULL },
-  { "perthousand",                      1000, NULL },
-  { "Ydieresis",                         667, NULL },
-  { "umacron",                           556, NULL },
-  { "abreve",                            556, NULL },
-  { "Eacute",                            667, NULL },
-  { "adieresis",                         556, NULL },
-  { "egrave",                            556, NULL },
-  { "edieresis",                         556, NULL },
-  { "idieresis",                         278, NULL },
-  { "Eth",                               722, NULL },
-  { "ae",                                889, NULL },
-  { "asterisk",                          389, NULL },
-  { "odieresis",                         556, NULL },
-  { "Uacute",                            722, NULL },
-  { "ugrave",                            556, NULL },
-  { "nine",                              556, NULL },
-  { "five",                              556, NULL },
-  { "udieresis",                         556, NULL },
-  { "Zcaron",                            611, NULL },
-  { "Scommaaccent",                      667, NULL },
-  { "threequarters",                     834, NULL },
-  { "guillemotright",                    556, NULL },
-  { "Ccedilla",                          722, NULL },
-  { "ydieresis",                         500, NULL },
-  { "tilde",                             333, NULL },
-  { "at",                               1015, NULL },
-  { "eacute",                            556, NULL },
-  { "underscore",                        556, NULL },
-  { "Euro",                              556, NULL },
-  { "Dcroat",                            722, NULL },
-  { "multiply",                          584, NULL },
-  { "zero",                              556, NULL },
-  { "eth",                               556, NULL },
-  { "Scedilla",                          667, NULL },
-  { "Ograve",                            778, NULL },
-  { "Racute",                            722, NULL },
-  { "partialdiff",                       476, NULL },
-  { "uacute",                            556, NULL },
-  { "braceleft",                         334, NULL },
-  { "Thorn",                             667, NULL },
-  { "zcaron",                            500, NULL },
-  { "scommaaccent",                      500, NULL },
-  { "ccedilla",                          500, NULL },
-  { "Dcaron",                            722, NULL },
-  { "dcroat",                            556, NULL },
-  { "Ocircumflex",                       778, NULL },
-  { "Oacute",                            778, NULL },
-  { "scedilla",                          500, NULL },
-  { "ogonek",                            333, NULL },
-  { "ograve",                            556, NULL },
-  { "racute",                            333, NULL },
-  { "Tcaron",                            611, NULL },
-  { "Eogonek",                           667, NULL },
-  { "thorn",                             556, NULL },
-  { "degree",                            400, NULL },
-  { "registered",                        737, NULL },
-  { "radical",                           453, NULL },
-  { "Aring",                             667, NULL },
-  { "percent",                           889, NULL },
-  { "six",                               556, NULL },
-  { "paragraph",                         537, NULL },
-  { "dcaron",                            643, NULL },
-  { "Uogonek",                           722, NULL },
-  { "two",                               556, NULL },
-  { "summation",                         600, NULL },
-  { "Igrave",                            278, NULL },
-  { "Lacute",                            556, NULL },
-  { "ocircumflex",                       556, NULL },
-  { "oacute",                            556, NULL },
-  { "Uring",                             722, NULL },
-  { "Lcommaaccent",                      556, NULL },
-  { "tcaron",                            317, NULL },
-  { "eogonek",                           556, NULL },
-  { "Delta",                             612, NULL },
-  { "Ohungarumlaut",                     778, NULL },
-  { "asciicircum",                       469, NULL },
-  { "aring",                             556, NULL },
-  { "grave",                             333, NULL },
-  { "uogonek",                           556, NULL },
-  { "bracketright",                      278, NULL },
-  { "Iacute",                            278, NULL },
-  { "ampersand",                         667, NULL },
-  { "igrave",                            278, NULL },
-  { "lacute",                            222, NULL },
-  { "Ncaron",                            722, NULL },
-  { "plus",                              584, NULL },
-  { "uring",                             556, NULL },
-  { "quotesinglbase",                    222, NULL },
-  { "lcommaaccent",                      222, NULL },
-  { "Yacute",                            667, NULL },
-  { "ohungarumlaut",                     556, NULL },
-  { "threesuperior",                     333, NULL },
-  { "acute",                             333, NULL },
-  { "section",                           556, NULL },
-  { "dieresis",                          333, NULL },
-  { "iacute",                            278, NULL },
-  { "quotedblbase",                      333, NULL },
-  { "ncaron",                            556, NULL },
-  { "florin",                            556, NULL },
-  { "yacute",                            500, NULL },
-  { "Rcommaaccent",                      722, NULL },
-  { "fi",                                500, NULL },
-  { "fl",                                500, NULL },
-  { "Acircumflex",                       667, NULL },
-  { "Cacute",                            722, NULL },
-  { "Icircumflex",                       278, NULL },
-  { "guillemotleft",                     556, NULL },
-  { "germandbls",                        611, NULL },
-  { "Amacron",                           667, NULL },
-  { "seven",                             556, NULL },
-  { "Sacute",                            667, NULL },
-  { "ordmasculine",                      365, NULL },
-  { "dotlessi",                          278, NULL },
-  { "sterling",                          556, NULL },
-  { "notequal",                          549, NULL },
-  { "Imacron",                           278, NULL },
-  { "rcommaaccent",                      333, NULL },
-  { "Zdotaccent",                        611, NULL },
-  { "acircumflex",                       556, NULL },
-  { "cacute",                            500, NULL },
-  { "Ecaron",                            667, NULL },
-  { "icircumflex",                       278, NULL },
-  { "braceright",                        334, NULL },
-  { "quotedblright",                     333, NULL },
-  { "amacron",                           556, NULL },
-  { "sacute",                            500, NULL },
-  { "imacron",                           278, NULL },
-  { "cent",                              556, NULL },
-  { "currency",                          556, NULL },
-  { "logicalnot",                        584, NULL },
-  { "zdotaccent",                        500, NULL },
-  { "Atilde",                            667, NULL },
-  { "breve",                             333, NULL },
-  { "bar",                               260, NULL },
-  { "fraction",                          167, NULL },
-  { "less",                              584, NULL },
-  { "ecaron",                            556, NULL },
-  { "guilsinglleft",                     333, NULL },
-  { "exclam",                            278, NULL },
-  { "period",                            278, NULL },
-  { "Rcaron",                            722, NULL },
-  { "Kcommaaccent",                      667, NULL },
-  { "greater",                           584, NULL },
-  { "atilde",                            556, NULL },
-  { "brokenbar",                         260, NULL },
-  { "quoteleft",                         222, NULL },
-  { "Edotaccent",                        667, NULL },
-  { "onesuperior",                       333, NULL }
+  { "Ntilde",                            722, nullptr },
+  { "rcaron",                            333, nullptr },
+  { "kcommaaccent",                      500, nullptr },
+  { "Ncommaaccent",                      722, nullptr },
+  { "Zacute",                            611, nullptr },
+  { "comma",                             278, nullptr },
+  { "cedilla",                           333, nullptr },
+  { "plusminus",                         584, nullptr },
+  { "circumflex",                        333, nullptr },
+  { "dotaccent",                         333, nullptr },
+  { "edotaccent",                        556, nullptr },
+  { "asciitilde",                        584, nullptr },
+  { "colon",                             278, nullptr },
+  { "onehalf",                           834, nullptr },
+  { "dollar",                            556, nullptr },
+  { "Lcaron",                            556, nullptr },
+  { "ntilde",                            556, nullptr },
+  { "Aogonek",                           667, nullptr },
+  { "ncommaaccent",                      556, nullptr },
+  { "minus",                             584, nullptr },
+  { "Iogonek",                           278, nullptr },
+  { "zacute",                            500, nullptr },
+  { "yen",                               556, nullptr },
+  { "space",                             278, nullptr },
+  { "Omacron",                           778, nullptr },
+  { "questiondown",                      611, nullptr },
+  { "emdash",                           1000, nullptr },
+  { "Agrave",                            667, nullptr },
+  { "three",                             556, nullptr },
+  { "numbersign",                        556, nullptr },
+  { "lcaron",                            299, nullptr },
+  { "A",                                 667, nullptr },
+  { "B",                                 667, nullptr },
+  { "C",                                 722, nullptr },
+  { "aogonek",                           556, nullptr },
+  { "D",                                 722, nullptr },
+  { "E",                                 667, nullptr },
+  { "onequarter",                        834, nullptr },
+  { "F",                                 611, nullptr },
+  { "G",                                 778, nullptr },
+  { "H",                                 722, nullptr },
+  { "I",                                 278, nullptr },
+  { "J",                                 500, nullptr },
+  { "K",                                 667, nullptr },
+  { "iogonek",                           222, nullptr },
+  { "backslash",                         278, nullptr },
+  { "L",                                 556, nullptr },
+  { "periodcentered",                    278, nullptr },
+  { "M",                                 833, nullptr },
+  { "N",                                 722, nullptr },
+  { "omacron",                           556, nullptr },
+  { "Tcommaaccent",                      611, nullptr },
+  { "O",                                 778, nullptr },
+  { "P",                                 667, nullptr },
+  { "Q",                                 778, nullptr },
+  { "Uhungarumlaut",                     722, nullptr },
+  { "R",                                 722, nullptr },
+  { "Aacute",                            667, nullptr },
+  { "caron",                             333, nullptr },
+  { "S",                                 667, nullptr },
+  { "T",                                 611, nullptr },
+  { "U",                                 722, nullptr },
+  { "agrave",                            556, nullptr },
+  { "V",                                 667, nullptr },
+  { "W",                                 944, nullptr },
+  { "X",                                 667, nullptr },
+  { "question",                          556, nullptr },
+  { "equal",                             584, nullptr },
+  { "Y",                                 667, nullptr },
+  { "Z",                                 611, nullptr },
+  { "four",                              556, nullptr },
+  { "a",                                 556, nullptr },
+  { "Gcommaaccent",                      778, nullptr },
+  { "b",                                 556, nullptr },
+  { "c",                                 500, nullptr },
+  { "d",                                 556, nullptr },
+  { "e",                                 556, nullptr },
+  { "f",                                 278, nullptr },
+  { "g",                                 556, nullptr },
+  { "bullet",                            350, nullptr },
+  { "h",                                 556, nullptr },
+  { "i",                                 222, nullptr },
+  { "Oslash",                            778, nullptr },
+  { "dagger",                            556, nullptr },
+  { "j",                                 222, nullptr },
+  { "k",                                 500, nullptr },
+  { "l",                                 222, nullptr },
+  { "m",                                 833, nullptr },
+  { "n",                                 556, nullptr },
+  { "tcommaaccent",                      278, nullptr },
+  { "o",                                 556, nullptr },
+  { "ordfeminine",                       370, nullptr },
+  { "ring",                              333, nullptr },
+  { "p",                                 556, nullptr },
+  { "q",                                 556, nullptr },
+  { "uhungarumlaut",                     556, nullptr },
+  { "r",                                 333, nullptr },
+  { "twosuperior",                       333, nullptr },
+  { "aacute",                            556, nullptr },
+  { "s",                                 500, nullptr },
+  { "OE",                               1000, nullptr },
+  { "t",                                 278, nullptr },
+  { "divide",                            584, nullptr },
+  { "u",                                 556, nullptr },
+  { "Ccaron",                            722, nullptr },
+  { "v",                                 500, nullptr },
+  { "w",                                 722, nullptr },
+  { "x",                                 500, nullptr },
+  { "y",                                 500, nullptr },
+  { "z",                                 500, nullptr },
+  { "Gbreve",                            778, nullptr },
+  { "commaaccent",                       250, nullptr },
+  { "hungarumlaut",                      333, nullptr },
+  { "Idotaccent",                        278, nullptr },
+  { "Nacute",                            722, nullptr },
+  { "quotedbl",                          355, nullptr },
+  { "gcommaaccent",                      556, nullptr },
+  { "mu",                                556, nullptr },
+  { "greaterequal",                      549, nullptr },
+  { "Scaron",                            667, nullptr },
+  { "Lslash",                            556, nullptr },
+  { "semicolon",                         278, nullptr },
+  { "oslash",                            611, nullptr },
+  { "lessequal",                         549, nullptr },
+  { "lozenge",                           471, nullptr },
+  { "parenright",                        333, nullptr },
+  { "ccaron",                            500, nullptr },
+  { "Ecircumflex",                       667, nullptr },
+  { "gbreve",                            556, nullptr },
+  { "trademark",                        1000, nullptr },
+  { "daggerdbl",                         556, nullptr },
+  { "nacute",                            556, nullptr },
+  { "macron",                            333, nullptr },
+  { "Otilde",                            778, nullptr },
+  { "Emacron",                           667, nullptr },
+  { "ellipsis",                         1000, nullptr },
+  { "scaron",                            500, nullptr },
+  { "AE",                               1000, nullptr },
+  { "Ucircumflex",                       722, nullptr },
+  { "lslash",                            222, nullptr },
+  { "quotedblleft",                      333, nullptr },
+  { "guilsinglright",                    333, nullptr },
+  { "hyphen",                            333, nullptr },
+  { "quotesingle",                       191, nullptr },
+  { "eight",                             556, nullptr },
+  { "exclamdown",                        333, nullptr },
+  { "endash",                            556, nullptr },
+  { "oe",                                944, nullptr },
+  { "Abreve",                            667, nullptr },
+  { "Umacron",                           722, nullptr },
+  { "ecircumflex",                       556, nullptr },
+  { "Adieresis",                         667, nullptr },
+  { "copyright",                         737, nullptr },
+  { "Egrave",                            667, nullptr },
+  { "slash",                             278, nullptr },
+  { "Edieresis",                         667, nullptr },
+  { "otilde",                            556, nullptr },
+  { "Idieresis",                         278, nullptr },
+  { "parenleft",                         333, nullptr },
+  { "one",                               556, nullptr },
+  { "emacron",                           556, nullptr },
+  { "Odieresis",                         778, nullptr },
+  { "ucircumflex",                       556, nullptr },
+  { "bracketleft",                       278, nullptr },
+  { "Ugrave",                            722, nullptr },
+  { "quoteright",                        222, nullptr },
+  { "Udieresis",                         722, nullptr },
+  { "perthousand",                      1000, nullptr },
+  { "Ydieresis",                         667, nullptr },
+  { "umacron",                           556, nullptr },
+  { "abreve",                            556, nullptr },
+  { "Eacute",                            667, nullptr },
+  { "adieresis",                         556, nullptr },
+  { "egrave",                            556, nullptr },
+  { "edieresis",                         556, nullptr },
+  { "idieresis",                         278, nullptr },
+  { "Eth",                               722, nullptr },
+  { "ae",                                889, nullptr },
+  { "asterisk",                          389, nullptr },
+  { "odieresis",                         556, nullptr },
+  { "Uacute",                            722, nullptr },
+  { "ugrave",                            556, nullptr },
+  { "nine",                              556, nullptr },
+  { "five",                              556, nullptr },
+  { "udieresis",                         556, nullptr },
+  { "Zcaron",                            611, nullptr },
+  { "Scommaaccent",                      667, nullptr },
+  { "threequarters",                     834, nullptr },
+  { "guillemotright",                    556, nullptr },
+  { "Ccedilla",                          722, nullptr },
+  { "ydieresis",                         500, nullptr },
+  { "tilde",                             333, nullptr },
+  { "at",                               1015, nullptr },
+  { "eacute",                            556, nullptr },
+  { "underscore",                        556, nullptr },
+  { "Euro",                              556, nullptr },
+  { "Dcroat",                            722, nullptr },
+  { "multiply",                          584, nullptr },
+  { "zero",                              556, nullptr },
+  { "eth",                               556, nullptr },
+  { "Scedilla",                          667, nullptr },
+  { "Ograve",                            778, nullptr },
+  { "Racute",                            722, nullptr },
+  { "partialdiff",                       476, nullptr },
+  { "uacute",                            556, nullptr },
+  { "braceleft",                         334, nullptr },
+  { "Thorn",                             667, nullptr },
+  { "zcaron",                            500, nullptr },
+  { "scommaaccent",                      500, nullptr },
+  { "ccedilla",                          500, nullptr },
+  { "Dcaron",                            722, nullptr },
+  { "dcroat",                            556, nullptr },
+  { "Ocircumflex",                       778, nullptr },
+  { "Oacute",                            778, nullptr },
+  { "scedilla",                          500, nullptr },
+  { "ogonek",                            333, nullptr },
+  { "ograve",                            556, nullptr },
+  { "racute",                            333, nullptr },
+  { "Tcaron",                            611, nullptr },
+  { "Eogonek",                           667, nullptr },
+  { "thorn",                             556, nullptr },
+  { "degree",                            400, nullptr },
+  { "registered",                        737, nullptr },
+  { "radical",                           453, nullptr },
+  { "Aring",                             667, nullptr },
+  { "percent",                           889, nullptr },
+  { "six",                               556, nullptr },
+  { "paragraph",                         537, nullptr },
+  { "dcaron",                            643, nullptr },
+  { "Uogonek",                           722, nullptr },
+  { "two",                               556, nullptr },
+  { "summation",                         600, nullptr },
+  { "Igrave",                            278, nullptr },
+  { "Lacute",                            556, nullptr },
+  { "ocircumflex",                       556, nullptr },
+  { "oacute",                            556, nullptr },
+  { "Uring",                             722, nullptr },
+  { "Lcommaaccent",                      556, nullptr },
+  { "tcaron",                            317, nullptr },
+  { "eogonek",                           556, nullptr },
+  { "Delta",                             612, nullptr },
+  { "Ohungarumlaut",                     778, nullptr },
+  { "asciicircum",                       469, nullptr },
+  { "aring",                             556, nullptr },
+  { "grave",                             333, nullptr },
+  { "uogonek",                           556, nullptr },
+  { "bracketright",                      278, nullptr },
+  { "Iacute",                            278, nullptr },
+  { "ampersand",                         667, nullptr },
+  { "igrave",                            278, nullptr },
+  { "lacute",                            222, nullptr },
+  { "Ncaron",                            722, nullptr },
+  { "plus",                              584, nullptr },
+  { "uring",                             556, nullptr },
+  { "quotesinglbase",                    222, nullptr },
+  { "lcommaaccent",                      222, nullptr },
+  { "Yacute",                            667, nullptr },
+  { "ohungarumlaut",                     556, nullptr },
+  { "threesuperior",                     333, nullptr },
+  { "acute",                             333, nullptr },
+  { "section",                           556, nullptr },
+  { "dieresis",                          333, nullptr },
+  { "iacute",                            278, nullptr },
+  { "quotedblbase",                      333, nullptr },
+  { "ncaron",                            556, nullptr },
+  { "florin",                            556, nullptr },
+  { "yacute",                            500, nullptr },
+  { "Rcommaaccent",                      722, nullptr },
+  { "fi",                                500, nullptr },
+  { "fl",                                500, nullptr },
+  { "Acircumflex",                       667, nullptr },
+  { "Cacute",                            722, nullptr },
+  { "Icircumflex",                       278, nullptr },
+  { "guillemotleft",                     556, nullptr },
+  { "germandbls",                        611, nullptr },
+  { "Amacron",                           667, nullptr },
+  { "seven",                             556, nullptr },
+  { "Sacute",                            667, nullptr },
+  { "ordmasculine",                      365, nullptr },
+  { "dotlessi",                          278, nullptr },
+  { "sterling",                          556, nullptr },
+  { "notequal",                          549, nullptr },
+  { "Imacron",                           278, nullptr },
+  { "rcommaaccent",                      333, nullptr },
+  { "Zdotaccent",                        611, nullptr },
+  { "acircumflex",                       556, nullptr },
+  { "cacute",                            500, nullptr },
+  { "Ecaron",                            667, nullptr },
+  { "icircumflex",                       278, nullptr },
+  { "braceright",                        334, nullptr },
+  { "quotedblright",                     333, nullptr },
+  { "amacron",                           556, nullptr },
+  { "sacute",                            500, nullptr },
+  { "imacron",                           278, nullptr },
+  { "cent",                              556, nullptr },
+  { "currency",                          556, nullptr },
+  { "logicalnot",                        584, nullptr },
+  { "zdotaccent",                        500, nullptr },
+  { "Atilde",                            667, nullptr },
+  { "breve",                             333, nullptr },
+  { "bar",                               260, nullptr },
+  { "fraction",                          167, nullptr },
+  { "less",                              584, nullptr },
+  { "ecaron",                            556, nullptr },
+  { "guilsinglleft",                     333, nullptr },
+  { "exclam",                            278, nullptr },
+  { "period",                            278, nullptr },
+  { "Rcaron",                            722, nullptr },
+  { "Kcommaaccent",                      667, nullptr },
+  { "greater",                           584, nullptr },
+  { "atilde",                            556, nullptr },
+  { "brokenbar",                         260, nullptr },
+  { "quoteleft",                         222, nullptr },
+  { "Edotaccent",                        667, nullptr },
+  { "onesuperior",                       333, nullptr }
 };
 
 static BuiltinFontWidth symbolWidthsTab[] = {
-  { "bracketleftex",                     384, NULL },
-  { "alpha",                             631, NULL },
-  { "union",                             768, NULL },
-  { "infinity",                          713, NULL },
-  { "comma",                             250, NULL },
-  { "copyrightsans",                     790, NULL },
-  { "plusminus",                         549, NULL },
-  { "arrowup",                           603, NULL },
-  { "apple",                             790, NULL },
-  { "parenleftbt",                       384, NULL },
-  { "notelement",                        713, NULL },
-  { "colon",                             278, NULL },
-  { "beta",                              549, NULL },
-  { "braceleftbt",                       494, NULL },
-  { "Lambda",                            686, NULL },
-  { "Phi",                               763, NULL },
-  { "minus",                             549, NULL },
-  { "space",                             250, NULL },
-  { "Sigma",                             592, NULL },
-  { "approxequal",                       549, NULL },
-  { "minute",                            247, NULL },
-  { "circleplus",                        768, NULL },
-  { "Omicron",                           722, NULL },
-  { "three",                             500, NULL },
-  { "numbersign",                        500, NULL },
-  { "lambda",                            549, NULL },
-  { "phi",                               521, NULL },
-  { "aleph",                             823, NULL },
-  { "Tau",                               611, NULL },
-  { "spade",                             753, NULL },
-  { "logicaland",                        603, NULL },
-  { "sigma",                             603, NULL },
-  { "propersuperset",                    713, NULL },
-  { "omicron",                           549, NULL },
-  { "question",                          444, NULL },
-  { "equal",                             549, NULL },
-  { "Epsilon",                           611, NULL },
-  { "emptyset",                          823, NULL },
-  { "diamond",                           753, NULL },
-  { "four",                              500, NULL },
-  { "Mu",                                889, NULL },
-  { "parenlefttp",                       384, NULL },
-  { "club",                              753, NULL },
-  { "bullet",                            460, NULL },
-  { "Omega",                             768, NULL },
-  { "tau",                               439, NULL },
-  { "Upsilon",                           690, NULL },
-  { "bracelefttp",                       494, NULL },
-  { "heart",                             753, NULL },
-  { "divide",                            549, NULL },
-  { "epsilon",                           439, NULL },
-  { "logicalor",                         603, NULL },
-  { "parenleftex",                       384, NULL },
-  { "greaterequal",                      549, NULL },
-  { "mu",                                576, NULL },
-  { "Nu",                                722, NULL },
-  { "therefore",                         863, NULL },
-  { "notsubset",                         713, NULL },
-  { "omega",                             686, NULL },
-  { "semicolon",                         278, NULL },
-  { "element",                           713, NULL },
-  { "upsilon",                           576, NULL },
-  { "existential",                       549, NULL },
-  { "integralbt",                        686, NULL },
-  { "lessequal",                         549, NULL },
-  { "phi1",                              603, NULL },
-  { "lozenge",                           494, NULL },
-  { "trademarkserif",                    890, NULL },
-  { "parenright",                        333, NULL },
-  { "reflexsuperset",                    713, NULL },
-  { "sigma1",                            439, NULL },
-  { "nu",                                521, NULL },
-  { "Gamma",                             603, NULL },
-  { "angleright",                        329, NULL },
-  { "ellipsis",                         1000, NULL },
-  { "Rho",                               556, NULL },
-  { "parenrightbt",                      384, NULL },
-  { "radicalex",                         500, NULL },
-  { "eight",                             500, NULL },
-  { "angleleft",                         329, NULL },
-  { "arrowdbldown",                      603, NULL },
-  { "congruent",                         549, NULL },
-  { "Theta",                             741, NULL },
-  { "intersection",                      768, NULL },
-  { "Pi",                                768, NULL },
-  { "slash",                             278, NULL },
-  { "registerserif",                     790, NULL },
-  { "parenleft",                         333, NULL },
-  { "one",                               500, NULL },
-  { "gamma",                             411, NULL },
-  { "bracketleft",                       333, NULL },
-  { "rho",                               549, NULL },
-  { "circlemultiply",                    768, NULL },
-  { "Chi",                               722, NULL },
-  { "theta",                             521, NULL },
-  { "pi",                                549, NULL },
-  { "integraltp",                        686, NULL },
-  { "Eta",                               722, NULL },
-  { "product",                           823, NULL },
-  { "nine",                              500, NULL },
-  { "five",                              500, NULL },
-  { "propersubset",                      713, NULL },
-  { "bracketrightbt",                    384, NULL },
-  { "trademarksans",                     786, NULL },
-  { "dotmath",                           250, NULL },
-  { "integralex",                        686, NULL },
-  { "chi",                               549, NULL },
-  { "parenrighttp",                      384, NULL },
-  { "eta",                               603, NULL },
-  { "underscore",                        500, NULL },
-  { "Euro",                              750, NULL },
-  { "multiply",                          549, NULL },
-  { "zero",                              500, NULL },
-  { "partialdiff",                       494, NULL },
-  { "angle",                             768, NULL },
-  { "arrowdblleft",                      987, NULL },
-  { "braceleft",                         480, NULL },
-  { "parenrightex",                      384, NULL },
-  { "Rfraktur",                          795, NULL },
-  { "Zeta",                              611, NULL },
-  { "braceex",                           494, NULL },
-  { "arrowdblup",                        603, NULL },
-  { "arrowdown",                         603, NULL },
-  { "Ifraktur",                          686, NULL },
-  { "degree",                            400, NULL },
-  { "Iota",                              333, NULL },
-  { "perpendicular",                     658, NULL },
-  { "radical",                           549, NULL },
-  { "asteriskmath",                      500, NULL },
-  { "percent",                           833, NULL },
-  { "zeta",                              494, NULL },
-  { "six",                               500, NULL },
-  { "two",                               500, NULL },
-  { "weierstrass",                       987, NULL },
-  { "summation",                         713, NULL },
-  { "bracketrighttp",                    384, NULL },
-  { "carriagereturn",                    658, NULL },
-  { "suchthat",                          439, NULL },
-  { "arrowvertex",                       603, NULL },
-  { "Delta",                             612, NULL },
-  { "iota",                              329, NULL },
-  { "arrowhorizex",                     1000, NULL },
-  { "bracketrightex",                    384, NULL },
-  { "bracketright",                      333, NULL },
-  { "ampersand",                         778, NULL },
-  { "plus",                              549, NULL },
-  { "proportional",                      713, NULL },
-  { "delta",                             494, NULL },
-  { "copyrightserif",                    790, NULL },
-  { "bracerightmid",                     494, NULL },
-  { "arrowleft",                         987, NULL },
-  { "second",                            411, NULL },
-  { "arrowdblboth",                     1042, NULL },
-  { "florin",                            500, NULL },
-  { "Psi",                               795, NULL },
-  { "bracerightbt",                      494, NULL },
-  { "bracketleftbt",                     384, NULL },
-  { "seven",                             500, NULL },
-  { "braceleftmid",                      494, NULL },
-  { "notequal",                          549, NULL },
-  { "psi",                               686, NULL },
-  { "equivalence",                       549, NULL },
-  { "universal",                         713, NULL },
-  { "arrowdblright",                     987, NULL },
-  { "braceright",                        480, NULL },
-  { "reflexsubset",                      713, NULL },
-  { "Xi",                                645, NULL },
-  { "theta1",                            631, NULL },
-  { "logicalnot",                        713, NULL },
-  { "Kappa",                             722, NULL },
-  { "similar",                           549, NULL },
-  { "bar",                               200, NULL },
-  { "fraction",                          167, NULL },
-  { "less",                              549, NULL },
-  { "registersans",                      790, NULL },
-  { "omega1",                            713, NULL },
-  { "exclam",                            333, NULL },
-  { "Upsilon1",                          620, NULL },
-  { "bracerighttp",                      494, NULL },
-  { "xi",                                493, NULL },
-  { "period",                            250, NULL },
-  { "Alpha",                             722, NULL },
-  { "arrowright",                        987, NULL },
-  { "greater",                           549, NULL },
-  { "bracketlefttp",                     384, NULL },
-  { "kappa",                             549, NULL },
-  { "gradient",                          713, NULL },
-  { "integral",                          274, NULL },
-  { "arrowboth",                        1042, NULL },
-  { "Beta",                              667, NULL }
+  { "bracketleftex",                     384, nullptr },
+  { "alpha",                             631, nullptr },
+  { "union",                             768, nullptr },
+  { "infinity",                          713, nullptr },
+  { "comma",                             250, nullptr },
+  { "copyrightsans",                     790, nullptr },
+  { "plusminus",                         549, nullptr },
+  { "arrowup",                           603, nullptr },
+  { "apple",                             790, nullptr },
+  { "parenleftbt",                       384, nullptr },
+  { "notelement",                        713, nullptr },
+  { "colon",                             278, nullptr },
+  { "beta",                              549, nullptr },
+  { "braceleftbt",                       494, nullptr },
+  { "Lambda",                            686, nullptr },
+  { "Phi",                               763, nullptr },
+  { "minus",                             549, nullptr },
+  { "space",                             250, nullptr },
+  { "Sigma",                             592, nullptr },
+  { "approxequal",                       549, nullptr },
+  { "minute",                            247, nullptr },
+  { "circleplus",                        768, nullptr },
+  { "Omicron",                           722, nullptr },
+  { "three",                             500, nullptr },
+  { "numbersign",                        500, nullptr },
+  { "lambda",                            549, nullptr },
+  { "phi",                               521, nullptr },
+  { "aleph",                             823, nullptr },
+  { "Tau",                               611, nullptr },
+  { "spade",                             753, nullptr },
+  { "logicaland",                        603, nullptr },
+  { "sigma",                             603, nullptr },
+  { "propersuperset",                    713, nullptr },
+  { "omicron",                           549, nullptr },
+  { "question",                          444, nullptr },
+  { "equal",                             549, nullptr },
+  { "Epsilon",                           611, nullptr },
+  { "emptyset",                          823, nullptr },
+  { "diamond",                           753, nullptr },
+  { "four",                              500, nullptr },
+  { "Mu",                                889, nullptr },
+  { "parenlefttp",                       384, nullptr },
+  { "club",                              753, nullptr },
+  { "bullet",                            460, nullptr },
+  { "Omega",                             768, nullptr },
+  { "tau",                               439, nullptr },
+  { "Upsilon",                           690, nullptr },
+  { "bracelefttp",                       494, nullptr },
+  { "heart",                             753, nullptr },
+  { "divide",                            549, nullptr },
+  { "epsilon",                           439, nullptr },
+  { "logicalor",                         603, nullptr },
+  { "parenleftex",                       384, nullptr },
+  { "greaterequal",                      549, nullptr },
+  { "mu",                                576, nullptr },
+  { "Nu",                                722, nullptr },
+  { "therefore",                         863, nullptr },
+  { "notsubset",                         713, nullptr },
+  { "omega",                             686, nullptr },
+  { "semicolon",                         278, nullptr },
+  { "element",                           713, nullptr },
+  { "upsilon",                           576, nullptr },
+  { "existential",                       549, nullptr },
+  { "integralbt",                        686, nullptr },
+  { "lessequal",                         549, nullptr },
+  { "phi1",                              603, nullptr },
+  { "lozenge",                           494, nullptr },
+  { "trademarkserif",                    890, nullptr },
+  { "parenright",                        333, nullptr },
+  { "reflexsuperset",                    713, nullptr },
+  { "sigma1",                            439, nullptr },
+  { "nu",                                521, nullptr },
+  { "Gamma",                             603, nullptr },
+  { "angleright",                        329, nullptr },
+  { "ellipsis",                         1000, nullptr },
+  { "Rho",                               556, nullptr },
+  { "parenrightbt",                      384, nullptr },
+  { "radicalex",                         500, nullptr },
+  { "eight",                             500, nullptr },
+  { "angleleft",                         329, nullptr },
+  { "arrowdbldown",                      603, nullptr },
+  { "congruent",                         549, nullptr },
+  { "Theta",                             741, nullptr },
+  { "intersection",                      768, nullptr },
+  { "Pi",                                768, nullptr },
+  { "slash",                             278, nullptr },
+  { "registerserif",                     790, nullptr },
+  { "parenleft",                         333, nullptr },
+  { "one",                               500, nullptr },
+  { "gamma",                             411, nullptr },
+  { "bracketleft",                       333, nullptr },
+  { "rho",                               549, nullptr },
+  { "circlemultiply",                    768, nullptr },
+  { "Chi",                               722, nullptr },
+  { "theta",                             521, nullptr },
+  { "pi",                                549, nullptr },
+  { "integraltp",                        686, nullptr },
+  { "Eta",                               722, nullptr },
+  { "product",                           823, nullptr },
+  { "nine",                              500, nullptr },
+  { "five",                              500, nullptr },
+  { "propersubset",                      713, nullptr },
+  { "bracketrightbt",                    384, nullptr },
+  { "trademarksans",                     786, nullptr },
+  { "dotmath",                           250, nullptr },
+  { "integralex",                        686, nullptr },
+  { "chi",                               549, nullptr },
+  { "parenrighttp",                      384, nullptr },
+  { "eta",                               603, nullptr },
+  { "underscore",                        500, nullptr },
+  { "Euro",                              750, nullptr },
+  { "multiply",                          549, nullptr },
+  { "zero",                              500, nullptr },
+  { "partialdiff",                       494, nullptr },
+  { "angle",                             768, nullptr },
+  { "arrowdblleft",                      987, nullptr },
+  { "braceleft",                         480, nullptr },
+  { "parenrightex",                      384, nullptr },
+  { "Rfraktur",                          795, nullptr },
+  { "Zeta",                              611, nullptr },
+  { "braceex",                           494, nullptr },
+  { "arrowdblup",                        603, nullptr },
+  { "arrowdown",                         603, nullptr },
+  { "Ifraktur",                          686, nullptr },
+  { "degree",                            400, nullptr },
+  { "Iota",                              333, nullptr },
+  { "perpendicular",                     658, nullptr },
+  { "radical",                           549, nullptr },
+  { "asteriskmath",                      500, nullptr },
+  { "percent",                           833, nullptr },
+  { "zeta",                              494, nullptr },
+  { "six",                               500, nullptr },
+  { "two",                               500, nullptr },
+  { "weierstrass",                       987, nullptr },
+  { "summation",                         713, nullptr },
+  { "bracketrighttp",                    384, nullptr },
+  { "carriagereturn",                    658, nullptr },
+  { "suchthat",                          439, nullptr },
+  { "arrowvertex",                       603, nullptr },
+  { "Delta",                             612, nullptr },
+  { "iota",                              329, nullptr },
+  { "arrowhorizex",                     1000, nullptr },
+  { "bracketrightex",                    384, nullptr },
+  { "bracketright",                      333, nullptr },
+  { "ampersand",                         778, nullptr },
+  { "plus",                              549, nullptr },
+  { "proportional",                      713, nullptr },
+  { "delta",                             494, nullptr },
+  { "copyrightserif",                    790, nullptr },
+  { "bracerightmid",                     494, nullptr },
+  { "arrowleft",                         987, nullptr },
+  { "second",                            411, nullptr },
+  { "arrowdblboth",                     1042, nullptr },
+  { "florin",                            500, nullptr },
+  { "Psi",                               795, nullptr },
+  { "bracerightbt",                      494, nullptr },
+  { "bracketleftbt",                     384, nullptr },
+  { "seven",                             500, nullptr },
+  { "braceleftmid",                      494, nullptr },
+  { "notequal",                          549, nullptr },
+  { "psi",                               686, nullptr },
+  { "equivalence",                       549, nullptr },
+  { "universal",                         713, nullptr },
+  { "arrowdblright",                     987, nullptr },
+  { "braceright",                        480, nullptr },
+  { "reflexsubset",                      713, nullptr },
+  { "Xi",                                645, nullptr },
+  { "theta1",                            631, nullptr },
+  { "logicalnot",                        713, nullptr },
+  { "Kappa",                             722, nullptr },
+  { "similar",                           549, nullptr },
+  { "bar",                               200, nullptr },
+  { "fraction",                          167, nullptr },
+  { "less",                              549, nullptr },
+  { "registersans",                      790, nullptr },
+  { "omega1",                            713, nullptr },
+  { "exclam",                            333, nullptr },
+  { "Upsilon1",                          620, nullptr },
+  { "bracerighttp",                      494, nullptr },
+  { "xi",                                493, nullptr },
+  { "period",                            250, nullptr },
+  { "Alpha",                             722, nullptr },
+  { "arrowright",                        987, nullptr },
+  { "greater",                           549, nullptr },
+  { "bracketlefttp",                     384, nullptr },
+  { "kappa",                             549, nullptr },
+  { "gradient",                          713, nullptr },
+  { "integral",                          274, nullptr },
+  { "arrowboth",                        1042, nullptr },
+  { "Beta",                              667, nullptr }
 };
 
 static BuiltinFontWidth timesBoldWidthsTab[] = {
-  { "Ntilde",                            722, NULL },
-  { "rcaron",                            444, NULL },
-  { "kcommaaccent",                      556, NULL },
-  { "Ncommaaccent",                      722, NULL },
-  { "Zacute",                            667, NULL },
-  { "comma",                             250, NULL },
-  { "cedilla",                           333, NULL },
-  { "plusminus",                         570, NULL },
-  { "circumflex",                        333, NULL },
-  { "dotaccent",                         333, NULL },
-  { "edotaccent",                        444, NULL },
-  { "asciitilde",                        520, NULL },
-  { "colon",                             333, NULL },
-  { "onehalf",                           750, NULL },
-  { "dollar",                            500, NULL },
-  { "Lcaron",                            667, NULL },
-  { "ntilde",                            556, NULL },
-  { "Aogonek",                           722, NULL },
-  { "ncommaaccent",                      556, NULL },
-  { "minus",                             570, NULL },
-  { "Iogonek",                           389, NULL },
-  { "zacute",                            444, NULL },
-  { "yen",                               500, NULL },
-  { "space",                             250, NULL },
-  { "Omacron",                           778, NULL },
-  { "questiondown",                      500, NULL },
-  { "emdash",                           1000, NULL },
-  { "Agrave",                            722, NULL },
-  { "three",                             500, NULL },
-  { "numbersign",                        500, NULL },
-  { "lcaron",                            394, NULL },
-  { "A",                                 722, NULL },
-  { "B",                                 667, NULL },
-  { "C",                                 722, NULL },
-  { "aogonek",                           500, NULL },
-  { "D",                                 722, NULL },
-  { "E",                                 667, NULL },
-  { "onequarter",                        750, NULL },
-  { "F",                                 611, NULL },
-  { "G",                                 778, NULL },
-  { "H",                                 778, NULL },
-  { "I",                                 389, NULL },
-  { "J",                                 500, NULL },
-  { "K",                                 778, NULL },
-  { "iogonek",                           278, NULL },
-  { "backslash",                         278, NULL },
-  { "L",                                 667, NULL },
-  { "periodcentered",                    250, NULL },
-  { "M",                                 944, NULL },
-  { "N",                                 722, NULL },
-  { "omacron",                           500, NULL },
-  { "Tcommaaccent",                      667, NULL },
-  { "O",                                 778, NULL },
-  { "P",                                 611, NULL },
-  { "Q",                                 778, NULL },
-  { "Uhungarumlaut",                     722, NULL },
-  { "R",                                 722, NULL },
-  { "Aacute",                            722, NULL },
-  { "caron",                             333, NULL },
-  { "S",                                 556, NULL },
-  { "T",                                 667, NULL },
-  { "U",                                 722, NULL },
-  { "agrave",                            500, NULL },
-  { "V",                                 722, NULL },
-  { "W",                                1000, NULL },
-  { "X",                                 722, NULL },
-  { "question",                          500, NULL },
-  { "equal",                             570, NULL },
-  { "Y",                                 722, NULL },
-  { "Z",                                 667, NULL },
-  { "four",                              500, NULL },
-  { "a",                                 500, NULL },
-  { "Gcommaaccent",                      778, NULL },
-  { "b",                                 556, NULL },
-  { "c",                                 444, NULL },
-  { "d",                                 556, NULL },
-  { "e",                                 444, NULL },
-  { "f",                                 333, NULL },
-  { "g",                                 500, NULL },
-  { "bullet",                            350, NULL },
-  { "h",                                 556, NULL },
-  { "i",                                 278, NULL },
-  { "Oslash",                            778, NULL },
-  { "dagger",                            500, NULL },
-  { "j",                                 333, NULL },
-  { "k",                                 556, NULL },
-  { "l",                                 278, NULL },
-  { "m",                                 833, NULL },
-  { "n",                                 556, NULL },
-  { "tcommaaccent",                      333, NULL },
-  { "o",                                 500, NULL },
-  { "ordfeminine",                       300, NULL },
-  { "ring",                              333, NULL },
-  { "p",                                 556, NULL },
-  { "q",                                 556, NULL },
-  { "uhungarumlaut",                     556, NULL },
-  { "r",                                 444, NULL },
-  { "twosuperior",                       300, NULL },
-  { "aacute",                            500, NULL },
-  { "s",                                 389, NULL },
-  { "OE",                               1000, NULL },
-  { "t",                                 333, NULL },
-  { "divide",                            570, NULL },
-  { "u",                                 556, NULL },
-  { "Ccaron",                            722, NULL },
-  { "v",                                 500, NULL },
-  { "w",                                 722, NULL },
-  { "x",                                 500, NULL },
-  { "y",                                 500, NULL },
-  { "z",                                 444, NULL },
-  { "Gbreve",                            778, NULL },
-  { "commaaccent",                       250, NULL },
-  { "hungarumlaut",                      333, NULL },
-  { "Idotaccent",                        389, NULL },
-  { "Nacute",                            722, NULL },
-  { "quotedbl",                          555, NULL },
-  { "gcommaaccent",                      500, NULL },
-  { "mu",                                556, NULL },
-  { "greaterequal",                      549, NULL },
-  { "Scaron",                            556, NULL },
-  { "Lslash",                            667, NULL },
-  { "semicolon",                         333, NULL },
-  { "oslash",                            500, NULL },
-  { "lessequal",                         549, NULL },
-  { "lozenge",                           494, NULL },
-  { "parenright",                        333, NULL },
-  { "ccaron",                            444, NULL },
-  { "Ecircumflex",                       667, NULL },
-  { "gbreve",                            500, NULL },
-  { "trademark",                        1000, NULL },
-  { "daggerdbl",                         500, NULL },
-  { "nacute",                            556, NULL },
-  { "macron",                            333, NULL },
-  { "Otilde",                            778, NULL },
-  { "Emacron",                           667, NULL },
-  { "ellipsis",                         1000, NULL },
-  { "scaron",                            389, NULL },
-  { "AE",                               1000, NULL },
-  { "Ucircumflex",                       722, NULL },
-  { "lslash",                            278, NULL },
-  { "quotedblleft",                      500, NULL },
-  { "guilsinglright",                    333, NULL },
-  { "hyphen",                            333, NULL },
-  { "quotesingle",                       278, NULL },
-  { "eight",                             500, NULL },
-  { "exclamdown",                        333, NULL },
-  { "endash",                            500, NULL },
-  { "oe",                                722, NULL },
-  { "Abreve",                            722, NULL },
-  { "Umacron",                           722, NULL },
-  { "ecircumflex",                       444, NULL },
-  { "Adieresis",                         722, NULL },
-  { "copyright",                         747, NULL },
-  { "Egrave",                            667, NULL },
-  { "slash",                             278, NULL },
-  { "Edieresis",                         667, NULL },
-  { "otilde",                            500, NULL },
-  { "Idieresis",                         389, NULL },
-  { "parenleft",                         333, NULL },
-  { "one",                               500, NULL },
-  { "emacron",                           444, NULL },
-  { "Odieresis",                         778, NULL },
-  { "ucircumflex",                       556, NULL },
-  { "bracketleft",                       333, NULL },
-  { "Ugrave",                            722, NULL },
-  { "quoteright",                        333, NULL },
-  { "Udieresis",                         722, NULL },
-  { "perthousand",                      1000, NULL },
-  { "Ydieresis",                         722, NULL },
-  { "umacron",                           556, NULL },
-  { "abreve",                            500, NULL },
-  { "Eacute",                            667, NULL },
-  { "adieresis",                         500, NULL },
-  { "egrave",                            444, NULL },
-  { "edieresis",                         444, NULL },
-  { "idieresis",                         278, NULL },
-  { "Eth",                               722, NULL },
-  { "ae",                                722, NULL },
-  { "asterisk",                          500, NULL },
-  { "odieresis",                         500, NULL },
-  { "Uacute",                            722, NULL },
-  { "ugrave",                            556, NULL },
-  { "nine",                              500, NULL },
-  { "five",                              500, NULL },
-  { "udieresis",                         556, NULL },
-  { "Zcaron",                            667, NULL },
-  { "Scommaaccent",                      556, NULL },
-  { "threequarters",                     750, NULL },
-  { "guillemotright",                    500, NULL },
-  { "Ccedilla",                          722, NULL },
-  { "ydieresis",                         500, NULL },
-  { "tilde",                             333, NULL },
-  { "at",                                930, NULL },
-  { "eacute",                            444, NULL },
-  { "underscore",                        500, NULL },
-  { "Euro",                              500, NULL },
-  { "Dcroat",                            722, NULL },
-  { "multiply",                          570, NULL },
-  { "zero",                              500, NULL },
-  { "eth",                               500, NULL },
-  { "Scedilla",                          556, NULL },
-  { "Ograve",                            778, NULL },
-  { "Racute",                            722, NULL },
-  { "partialdiff",                       494, NULL },
-  { "uacute",                            556, NULL },
-  { "braceleft",                         394, NULL },
-  { "Thorn",                             611, NULL },
-  { "zcaron",                            444, NULL },
-  { "scommaaccent",                      389, NULL },
-  { "ccedilla",                          444, NULL },
-  { "Dcaron",                            722, NULL },
-  { "dcroat",                            556, NULL },
-  { "Ocircumflex",                       778, NULL },
-  { "Oacute",                            778, NULL },
-  { "scedilla",                          389, NULL },
-  { "ogonek",                            333, NULL },
-  { "ograve",                            500, NULL },
-  { "racute",                            444, NULL },
-  { "Tcaron",                            667, NULL },
-  { "Eogonek",                           667, NULL },
-  { "thorn",                             556, NULL },
-  { "degree",                            400, NULL },
-  { "registered",                        747, NULL },
-  { "radical",                           549, NULL },
-  { "Aring",                             722, NULL },
-  { "percent",                          1000, NULL },
-  { "six",                               500, NULL },
-  { "paragraph",                         540, NULL },
-  { "dcaron",                            672, NULL },
-  { "Uogonek",                           722, NULL },
-  { "two",                               500, NULL },
-  { "summation",                         600, NULL },
-  { "Igrave",                            389, NULL },
-  { "Lacute",                            667, NULL },
-  { "ocircumflex",                       500, NULL },
-  { "oacute",                            500, NULL },
-  { "Uring",                             722, NULL },
-  { "Lcommaaccent",                      667, NULL },
-  { "tcaron",                            416, NULL },
-  { "eogonek",                           444, NULL },
-  { "Delta",                             612, NULL },
-  { "Ohungarumlaut",                     778, NULL },
-  { "asciicircum",                       581, NULL },
-  { "aring",                             500, NULL },
-  { "grave",                             333, NULL },
-  { "uogonek",                           556, NULL },
-  { "bracketright",                      333, NULL },
-  { "Iacute",                            389, NULL },
-  { "ampersand",                         833, NULL },
-  { "igrave",                            278, NULL },
-  { "lacute",                            278, NULL },
-  { "Ncaron",                            722, NULL },
-  { "plus",                              570, NULL },
-  { "uring",                             556, NULL },
-  { "quotesinglbase",                    333, NULL },
-  { "lcommaaccent",                      278, NULL },
-  { "Yacute",                            722, NULL },
-  { "ohungarumlaut",                     500, NULL },
-  { "threesuperior",                     300, NULL },
-  { "acute",                             333, NULL },
-  { "section",                           500, NULL },
-  { "dieresis",                          333, NULL },
-  { "iacute",                            278, NULL },
-  { "quotedblbase",                      500, NULL },
-  { "ncaron",                            556, NULL },
-  { "florin",                            500, NULL },
-  { "yacute",                            500, NULL },
-  { "Rcommaaccent",                      722, NULL },
-  { "fi",                                556, NULL },
-  { "fl",                                556, NULL },
-  { "Acircumflex",                       722, NULL },
-  { "Cacute",                            722, NULL },
-  { "Icircumflex",                       389, NULL },
-  { "guillemotleft",                     500, NULL },
-  { "germandbls",                        556, NULL },
-  { "Amacron",                           722, NULL },
-  { "seven",                             500, NULL },
-  { "Sacute",                            556, NULL },
-  { "ordmasculine",                      330, NULL },
-  { "dotlessi",                          278, NULL },
-  { "sterling",                          500, NULL },
-  { "notequal",                          549, NULL },
-  { "Imacron",                           389, NULL },
-  { "rcommaaccent",                      444, NULL },
-  { "Zdotaccent",                        667, NULL },
-  { "acircumflex",                       500, NULL },
-  { "cacute",                            444, NULL },
-  { "Ecaron",                            667, NULL },
-  { "icircumflex",                       278, NULL },
-  { "braceright",                        394, NULL },
-  { "quotedblright",                     500, NULL },
-  { "amacron",                           500, NULL },
-  { "sacute",                            389, NULL },
-  { "imacron",                           278, NULL },
-  { "cent",                              500, NULL },
-  { "currency",                          500, NULL },
-  { "logicalnot",                        570, NULL },
-  { "zdotaccent",                        444, NULL },
-  { "Atilde",                            722, NULL },
-  { "breve",                             333, NULL },
-  { "bar",                               220, NULL },
-  { "fraction",                          167, NULL },
-  { "less",                              570, NULL },
-  { "ecaron",                            444, NULL },
-  { "guilsinglleft",                     333, NULL },
-  { "exclam",                            333, NULL },
-  { "period",                            250, NULL },
-  { "Rcaron",                            722, NULL },
-  { "Kcommaaccent",                      778, NULL },
-  { "greater",                           570, NULL },
-  { "atilde",                            500, NULL },
-  { "brokenbar",                         220, NULL },
-  { "quoteleft",                         333, NULL },
-  { "Edotaccent",                        667, NULL },
-  { "onesuperior",                       300, NULL }
+  { "Ntilde",                            722, nullptr },
+  { "rcaron",                            444, nullptr },
+  { "kcommaaccent",                      556, nullptr },
+  { "Ncommaaccent",                      722, nullptr },
+  { "Zacute",                            667, nullptr },
+  { "comma",                             250, nullptr },
+  { "cedilla",                           333, nullptr },
+  { "plusminus",                         570, nullptr },
+  { "circumflex",                        333, nullptr },
+  { "dotaccent",                         333, nullptr },
+  { "edotaccent",                        444, nullptr },
+  { "asciitilde",                        520, nullptr },
+  { "colon",                             333, nullptr },
+  { "onehalf",                           750, nullptr },
+  { "dollar",                            500, nullptr },
+  { "Lcaron",                            667, nullptr },
+  { "ntilde",                            556, nullptr },
+  { "Aogonek",                           722, nullptr },
+  { "ncommaaccent",                      556, nullptr },
+  { "minus",                             570, nullptr },
+  { "Iogonek",                           389, nullptr },
+  { "zacute",                            444, nullptr },
+  { "yen",                               500, nullptr },
+  { "space",                             250, nullptr },
+  { "Omacron",                           778, nullptr },
+  { "questiondown",                      500, nullptr },
+  { "emdash",                           1000, nullptr },
+  { "Agrave",                            722, nullptr },
+  { "three",                             500, nullptr },
+  { "numbersign",                        500, nullptr },
+  { "lcaron",                            394, nullptr },
+  { "A",                                 722, nullptr },
+  { "B",                                 667, nullptr },
+  { "C",                                 722, nullptr },
+  { "aogonek",                           500, nullptr },
+  { "D",                                 722, nullptr },
+  { "E",                                 667, nullptr },
+  { "onequarter",                        750, nullptr },
+  { "F",                                 611, nullptr },
+  { "G",                                 778, nullptr },
+  { "H",                                 778, nullptr },
+  { "I",                                 389, nullptr },
+  { "J",                                 500, nullptr },
+  { "K",                                 778, nullptr },
+  { "iogonek",                           278, nullptr },
+  { "backslash",                         278, nullptr },
+  { "L",                                 667, nullptr },
+  { "periodcentered",                    250, nullptr },
+  { "M",                                 944, nullptr },
+  { "N",                                 722, nullptr },
+  { "omacron",                           500, nullptr },
+  { "Tcommaaccent",                      667, nullptr },
+  { "O",                                 778, nullptr },
+  { "P",                                 611, nullptr },
+  { "Q",                                 778, nullptr },
+  { "Uhungarumlaut",                     722, nullptr },
+  { "R",                                 722, nullptr },
+  { "Aacute",                            722, nullptr },
+  { "caron",                             333, nullptr },
+  { "S",                                 556, nullptr },
+  { "T",                                 667, nullptr },
+  { "U",                                 722, nullptr },
+  { "agrave",                            500, nullptr },
+  { "V",                                 722, nullptr },
+  { "W",                                1000, nullptr },
+  { "X",                                 722, nullptr },
+  { "question",                          500, nullptr },
+  { "equal",                             570, nullptr },
+  { "Y",                                 722, nullptr },
+  { "Z",                                 667, nullptr },
+  { "four",                              500, nullptr },
+  { "a",                                 500, nullptr },
+  { "Gcommaaccent",                      778, nullptr },
+  { "b",                                 556, nullptr },
+  { "c",                                 444, nullptr },
+  { "d",                                 556, nullptr },
+  { "e",                                 444, nullptr },
+  { "f",                                 333, nullptr },
+  { "g",                                 500, nullptr },
+  { "bullet",                            350, nullptr },
+  { "h",                                 556, nullptr },
+  { "i",                                 278, nullptr },
+  { "Oslash",                            778, nullptr },
+  { "dagger",                            500, nullptr },
+  { "j",                                 333, nullptr },
+  { "k",                                 556, nullptr },
+  { "l",                                 278, nullptr },
+  { "m",                                 833, nullptr },
+  { "n",                                 556, nullptr },
+  { "tcommaaccent",                      333, nullptr },
+  { "o",                                 500, nullptr },
+  { "ordfeminine",                       300, nullptr },
+  { "ring",                              333, nullptr },
+  { "p",                                 556, nullptr },
+  { "q",                                 556, nullptr },
+  { "uhungarumlaut",                     556, nullptr },
+  { "r",                                 444, nullptr },
+  { "twosuperior",                       300, nullptr },
+  { "aacute",                            500, nullptr },
+  { "s",                                 389, nullptr },
+  { "OE",                               1000, nullptr },
+  { "t",                                 333, nullptr },
+  { "divide",                            570, nullptr },
+  { "u",                                 556, nullptr },
+  { "Ccaron",                            722, nullptr },
+  { "v",                                 500, nullptr },
+  { "w",                                 722, nullptr },
+  { "x",                                 500, nullptr },
+  { "y",                                 500, nullptr },
+  { "z",                                 444, nullptr },
+  { "Gbreve",                            778, nullptr },
+  { "commaaccent",                       250, nullptr },
+  { "hungarumlaut",                      333, nullptr },
+  { "Idotaccent",                        389, nullptr },
+  { "Nacute",                            722, nullptr },
+  { "quotedbl",                          555, nullptr },
+  { "gcommaaccent",                      500, nullptr },
+  { "mu",                                556, nullptr },
+  { "greaterequal",                      549, nullptr },
+  { "Scaron",                            556, nullptr },
+  { "Lslash",                            667, nullptr },
+  { "semicolon",                         333, nullptr },
+  { "oslash",                            500, nullptr },
+  { "lessequal",                         549, nullptr },
+  { "lozenge",                           494, nullptr },
+  { "parenright",                        333, nullptr },
+  { "ccaron",                            444, nullptr },
+  { "Ecircumflex",                       667, nullptr },
+  { "gbreve",                            500, nullptr },
+  { "trademark",                        1000, nullptr },
+  { "daggerdbl",                         500, nullptr },
+  { "nacute",                            556, nullptr },
+  { "macron",                            333, nullptr },
+  { "Otilde",                            778, nullptr },
+  { "Emacron",                           667, nullptr },
+  { "ellipsis",                         1000, nullptr },
+  { "scaron",                            389, nullptr },
+  { "AE",                               1000, nullptr },
+  { "Ucircumflex",                       722, nullptr },
+  { "lslash",                            278, nullptr },
+  { "quotedblleft",                      500, nullptr },
+  { "guilsinglright",                    333, nullptr },
+  { "hyphen",                            333, nullptr },
+  { "quotesingle",                       278, nullptr },
+  { "eight",                             500, nullptr },
+  { "exclamdown",                        333, nullptr },
+  { "endash",                            500, nullptr },
+  { "oe",                                722, nullptr },
+  { "Abreve",                            722, nullptr },
+  { "Umacron",                           722, nullptr },
+  { "ecircumflex",                       444, nullptr },
+  { "Adieresis",                         722, nullptr },
+  { "copyright",                         747, nullptr },
+  { "Egrave",                            667, nullptr },
+  { "slash",                             278, nullptr },
+  { "Edieresis",                         667, nullptr },
+  { "otilde",                            500, nullptr },
+  { "Idieresis",                         389, nullptr },
+  { "parenleft",                         333, nullptr },
+  { "one",                               500, nullptr },
+  { "emacron",                           444, nullptr },
+  { "Odieresis",                         778, nullptr },
+  { "ucircumflex",                       556, nullptr },
+  { "bracketleft",                       333, nullptr },
+  { "Ugrave",                            722, nullptr },
+  { "quoteright",                        333, nullptr },
+  { "Udieresis",                         722, nullptr },
+  { "perthousand",                      1000, nullptr },
+  { "Ydieresis",                         722, nullptr },
+  { "umacron",                           556, nullptr },
+  { "abreve",                            500, nullptr },
+  { "Eacute",                            667, nullptr },
+  { "adieresis",                         500, nullptr },
+  { "egrave",                            444, nullptr },
+  { "edieresis",                         444, nullptr },
+  { "idieresis",                         278, nullptr },
+  { "Eth",                               722, nullptr },
+  { "ae",                                722, nullptr },
+  { "asterisk",                          500, nullptr },
+  { "odieresis",                         500, nullptr },
+  { "Uacute",                            722, nullptr },
+  { "ugrave",                            556, nullptr },
+  { "nine",                              500, nullptr },
+  { "five",                              500, nullptr },
+  { "udieresis",                         556, nullptr },
+  { "Zcaron",                            667, nullptr },
+  { "Scommaaccent",                      556, nullptr },
+  { "threequarters",                     750, nullptr },
+  { "guillemotright",                    500, nullptr },
+  { "Ccedilla",                          722, nullptr },
+  { "ydieresis",                         500, nullptr },
+  { "tilde",                             333, nullptr },
+  { "at",                                930, nullptr },
+  { "eacute",                            444, nullptr },
+  { "underscore",                        500, nullptr },
+  { "Euro",                              500, nullptr },
+  { "Dcroat",                            722, nullptr },
+  { "multiply",                          570, nullptr },
+  { "zero",                              500, nullptr },
+  { "eth",                               500, nullptr },
+  { "Scedilla",                          556, nullptr },
+  { "Ograve",                            778, nullptr },
+  { "Racute",                            722, nullptr },
+  { "partialdiff",                       494, nullptr },
+  { "uacute",                            556, nullptr },
+  { "braceleft",                         394, nullptr },
+  { "Thorn",                             611, nullptr },
+  { "zcaron",                            444, nullptr },
+  { "scommaaccent",                      389, nullptr },
+  { "ccedilla",                          444, nullptr },
+  { "Dcaron",                            722, nullptr },
+  { "dcroat",                            556, nullptr },
+  { "Ocircumflex",                       778, nullptr },
+  { "Oacute",                            778, nullptr },
+  { "scedilla",                          389, nullptr },
+  { "ogonek",                            333, nullptr },
+  { "ograve",                            500, nullptr },
+  { "racute",                            444, nullptr },
+  { "Tcaron",                            667, nullptr },
+  { "Eogonek",                           667, nullptr },
+  { "thorn",                             556, nullptr },
+  { "degree",                            400, nullptr },
+  { "registered",                        747, nullptr },
+  { "radical",                           549, nullptr },
+  { "Aring",                             722, nullptr },
+  { "percent",                          1000, nullptr },
+  { "six",                               500, nullptr },
+  { "paragraph",                         540, nullptr },
+  { "dcaron",                            672, nullptr },
+  { "Uogonek",                           722, nullptr },
+  { "two",                               500, nullptr },
+  { "summation",                         600, nullptr },
+  { "Igrave",                            389, nullptr },
+  { "Lacute",                            667, nullptr },
+  { "ocircumflex",                       500, nullptr },
+  { "oacute",                            500, nullptr },
+  { "Uring",                             722, nullptr },
+  { "Lcommaaccent",                      667, nullptr },
+  { "tcaron",                            416, nullptr },
+  { "eogonek",                           444, nullptr },
+  { "Delta",                             612, nullptr },
+  { "Ohungarumlaut",                     778, nullptr },
+  { "asciicircum",                       581, nullptr },
+  { "aring",                             500, nullptr },
+  { "grave",                             333, nullptr },
+  { "uogonek",                           556, nullptr },
+  { "bracketright",                      333, nullptr },
+  { "Iacute",                            389, nullptr },
+  { "ampersand",                         833, nullptr },
+  { "igrave",                            278, nullptr },
+  { "lacute",                            278, nullptr },
+  { "Ncaron",                            722, nullptr },
+  { "plus",                              570, nullptr },
+  { "uring",                             556, nullptr },
+  { "quotesinglbase",                    333, nullptr },
+  { "lcommaaccent",                      278, nullptr },
+  { "Yacute",                            722, nullptr },
+  { "ohungarumlaut",                     500, nullptr },
+  { "threesuperior",                     300, nullptr },
+  { "acute",                             333, nullptr },
+  { "section",                           500, nullptr },
+  { "dieresis",                          333, nullptr },
+  { "iacute",                            278, nullptr },
+  { "quotedblbase",                      500, nullptr },
+  { "ncaron",                            556, nullptr },
+  { "florin",                            500, nullptr },
+  { "yacute",                            500, nullptr },
+  { "Rcommaaccent",                      722, nullptr },
+  { "fi",                                556, nullptr },
+  { "fl",                                556, nullptr },
+  { "Acircumflex",                       722, nullptr },
+  { "Cacute",                            722, nullptr },
+  { "Icircumflex",                       389, nullptr },
+  { "guillemotleft",                     500, nullptr },
+  { "germandbls",                        556, nullptr },
+  { "Amacron",                           722, nullptr },
+  { "seven",                             500, nullptr },
+  { "Sacute",                            556, nullptr },
+  { "ordmasculine",                      330, nullptr },
+  { "dotlessi",                          278, nullptr },
+  { "sterling",                          500, nullptr },
+  { "notequal",                          549, nullptr },
+  { "Imacron",                           389, nullptr },
+  { "rcommaaccent",                      444, nullptr },
+  { "Zdotaccent",                        667, nullptr },
+  { "acircumflex",                       500, nullptr },
+  { "cacute",                            444, nullptr },
+  { "Ecaron",                            667, nullptr },
+  { "icircumflex",                       278, nullptr },
+  { "braceright",                        394, nullptr },
+  { "quotedblright",                     500, nullptr },
+  { "amacron",                           500, nullptr },
+  { "sacute",                            389, nullptr },
+  { "imacron",                           278, nullptr },
+  { "cent",                              500, nullptr },
+  { "currency",                          500, nullptr },
+  { "logicalnot",                        570, nullptr },
+  { "zdotaccent",                        444, nullptr },
+  { "Atilde",                            722, nullptr },
+  { "breve",                             333, nullptr },
+  { "bar",                               220, nullptr },
+  { "fraction",                          167, nullptr },
+  { "less",                              570, nullptr },
+  { "ecaron",                            444, nullptr },
+  { "guilsinglleft",                     333, nullptr },
+  { "exclam",                            333, nullptr },
+  { "period",                            250, nullptr },
+  { "Rcaron",                            722, nullptr },
+  { "Kcommaaccent",                      778, nullptr },
+  { "greater",                           570, nullptr },
+  { "atilde",                            500, nullptr },
+  { "brokenbar",                         220, nullptr },
+  { "quoteleft",                         333, nullptr },
+  { "Edotaccent",                        667, nullptr },
+  { "onesuperior",                       300, nullptr }
 };
 
 static BuiltinFontWidth timesBoldItalicWidthsTab[] = {
-  { "Ntilde",                            722, NULL },
-  { "rcaron",                            389, NULL },
-  { "kcommaaccent",                      500, NULL },
-  { "Ncommaaccent",                      722, NULL },
-  { "Zacute",                            611, NULL },
-  { "comma",                             250, NULL },
-  { "cedilla",                           333, NULL },
-  { "plusminus",                         570, NULL },
-  { "circumflex",                        333, NULL },
-  { "dotaccent",                         333, NULL },
-  { "edotaccent",                        444, NULL },
-  { "asciitilde",                        570, NULL },
-  { "colon",                             333, NULL },
-  { "onehalf",                           750, NULL },
-  { "dollar",                            500, NULL },
-  { "Lcaron",                            611, NULL },
-  { "ntilde",                            556, NULL },
-  { "Aogonek",                           667, NULL },
-  { "ncommaaccent",                      556, NULL },
-  { "minus",                             606, NULL },
-  { "Iogonek",                           389, NULL },
-  { "zacute",                            389, NULL },
-  { "yen",                               500, NULL },
-  { "space",                             250, NULL },
-  { "Omacron",                           722, NULL },
-  { "questiondown",                      500, NULL },
-  { "emdash",                           1000, NULL },
-  { "Agrave",                            667, NULL },
-  { "three",                             500, NULL },
-  { "numbersign",                        500, NULL },
-  { "lcaron",                            382, NULL },
-  { "A",                                 667, NULL },
-  { "B",                                 667, NULL },
-  { "C",                                 667, NULL },
-  { "aogonek",                           500, NULL },
-  { "D",                                 722, NULL },
-  { "E",                                 667, NULL },
-  { "onequarter",                        750, NULL },
-  { "F",                                 667, NULL },
-  { "G",                                 722, NULL },
-  { "H",                                 778, NULL },
-  { "I",                                 389, NULL },
-  { "J",                                 500, NULL },
-  { "K",                                 667, NULL },
-  { "iogonek",                           278, NULL },
-  { "backslash",                         278, NULL },
-  { "L",                                 611, NULL },
-  { "periodcentered",                    250, NULL },
-  { "M",                                 889, NULL },
-  { "N",                                 722, NULL },
-  { "omacron",                           500, NULL },
-  { "Tcommaaccent",                      611, NULL },
-  { "O",                                 722, NULL },
-  { "P",                                 611, NULL },
-  { "Q",                                 722, NULL },
-  { "Uhungarumlaut",                     722, NULL },
-  { "R",                                 667, NULL },
-  { "Aacute",                            667, NULL },
-  { "caron",                             333, NULL },
-  { "S",                                 556, NULL },
-  { "T",                                 611, NULL },
-  { "U",                                 722, NULL },
-  { "agrave",                            500, NULL },
-  { "V",                                 667, NULL },
-  { "W",                                 889, NULL },
-  { "X",                                 667, NULL },
-  { "question",                          500, NULL },
-  { "equal",                             570, NULL },
-  { "Y",                                 611, NULL },
-  { "Z",                                 611, NULL },
-  { "four",                              500, NULL },
-  { "a",                                 500, NULL },
-  { "Gcommaaccent",                      722, NULL },
-  { "b",                                 500, NULL },
-  { "c",                                 444, NULL },
-  { "d",                                 500, NULL },
-  { "e",                                 444, NULL },
-  { "f",                                 333, NULL },
-  { "g",                                 500, NULL },
-  { "bullet",                            350, NULL },
-  { "h",                                 556, NULL },
-  { "i",                                 278, NULL },
-  { "Oslash",                            722, NULL },
-  { "dagger",                            500, NULL },
-  { "j",                                 278, NULL },
-  { "k",                                 500, NULL },
-  { "l",                                 278, NULL },
-  { "m",                                 778, NULL },
-  { "n",                                 556, NULL },
-  { "tcommaaccent",                      278, NULL },
-  { "o",                                 500, NULL },
-  { "ordfeminine",                       266, NULL },
-  { "ring",                              333, NULL },
-  { "p",                                 500, NULL },
-  { "q",                                 500, NULL },
-  { "uhungarumlaut",                     556, NULL },
-  { "r",                                 389, NULL },
-  { "twosuperior",                       300, NULL },
-  { "aacute",                            500, NULL },
-  { "s",                                 389, NULL },
-  { "OE",                                944, NULL },
-  { "t",                                 278, NULL },
-  { "divide",                            570, NULL },
-  { "u",                                 556, NULL },
-  { "Ccaron",                            667, NULL },
-  { "v",                                 444, NULL },
-  { "w",                                 667, NULL },
-  { "x",                                 500, NULL },
-  { "y",                                 444, NULL },
-  { "z",                                 389, NULL },
-  { "Gbreve",                            722, NULL },
-  { "commaaccent",                       250, NULL },
-  { "hungarumlaut",                      333, NULL },
-  { "Idotaccent",                        389, NULL },
-  { "Nacute",                            722, NULL },
-  { "quotedbl",                          555, NULL },
-  { "gcommaaccent",                      500, NULL },
-  { "mu",                                576, NULL },
-  { "greaterequal",                      549, NULL },
-  { "Scaron",                            556, NULL },
-  { "Lslash",                            611, NULL },
-  { "semicolon",                         333, NULL },
-  { "oslash",                            500, NULL },
-  { "lessequal",                         549, NULL },
-  { "lozenge",                           494, NULL },
-  { "parenright",                        333, NULL },
-  { "ccaron",                            444, NULL },
-  { "Ecircumflex",                       667, NULL },
-  { "gbreve",                            500, NULL },
-  { "trademark",                        1000, NULL },
-  { "daggerdbl",                         500, NULL },
-  { "nacute",                            556, NULL },
-  { "macron",                            333, NULL },
-  { "Otilde",                            722, NULL },
-  { "Emacron",                           667, NULL },
-  { "ellipsis",                         1000, NULL },
-  { "scaron",                            389, NULL },
-  { "AE",                                944, NULL },
-  { "Ucircumflex",                       722, NULL },
-  { "lslash",                            278, NULL },
-  { "quotedblleft",                      500, NULL },
-  { "guilsinglright",                    333, NULL },
-  { "hyphen",                            333, NULL },
-  { "quotesingle",                       278, NULL },
-  { "eight",                             500, NULL },
-  { "exclamdown",                        389, NULL },
-  { "endash",                            500, NULL },
-  { "oe",                                722, NULL },
-  { "Abreve",                            667, NULL },
-  { "Umacron",                           722, NULL },
-  { "ecircumflex",                       444, NULL },
-  { "Adieresis",                         667, NULL },
-  { "copyright",                         747, NULL },
-  { "Egrave",                            667, NULL },
-  { "slash",                             278, NULL },
-  { "Edieresis",                         667, NULL },
-  { "otilde",                            500, NULL },
-  { "Idieresis",                         389, NULL },
-  { "parenleft",                         333, NULL },
-  { "one",                               500, NULL },
-  { "emacron",                           444, NULL },
-  { "Odieresis",                         722, NULL },
-  { "ucircumflex",                       556, NULL },
-  { "bracketleft",                       333, NULL },
-  { "Ugrave",                            722, NULL },
-  { "quoteright",                        333, NULL },
-  { "Udieresis",                         722, NULL },
-  { "perthousand",                      1000, NULL },
-  { "Ydieresis",                         611, NULL },
-  { "umacron",                           556, NULL },
-  { "abreve",                            500, NULL },
-  { "Eacute",                            667, NULL },
-  { "adieresis",                         500, NULL },
-  { "egrave",                            444, NULL },
-  { "edieresis",                         444, NULL },
-  { "idieresis",                         278, NULL },
-  { "Eth",                               722, NULL },
-  { "ae",                                722, NULL },
-  { "asterisk",                          500, NULL },
-  { "odieresis",                         500, NULL },
-  { "Uacute",                            722, NULL },
-  { "ugrave",                            556, NULL },
-  { "nine",                              500, NULL },
-  { "five",                              500, NULL },
-  { "udieresis",                         556, NULL },
-  { "Zcaron",                            611, NULL },
-  { "Scommaaccent",                      556, NULL },
-  { "threequarters",                     750, NULL },
-  { "guillemotright",                    500, NULL },
-  { "Ccedilla",                          667, NULL },
-  { "ydieresis",                         444, NULL },
-  { "tilde",                             333, NULL },
-  { "at",                                832, NULL },
-  { "eacute",                            444, NULL },
-  { "underscore",                        500, NULL },
-  { "Euro",                              500, NULL },
-  { "Dcroat",                            722, NULL },
-  { "multiply",                          570, NULL },
-  { "zero",                              500, NULL },
-  { "eth",                               500, NULL },
-  { "Scedilla",                          556, NULL },
-  { "Ograve",                            722, NULL },
-  { "Racute",                            667, NULL },
-  { "partialdiff",                       494, NULL },
-  { "uacute",                            556, NULL },
-  { "braceleft",                         348, NULL },
-  { "Thorn",                             611, NULL },
-  { "zcaron",                            389, NULL },
-  { "scommaaccent",                      389, NULL },
-  { "ccedilla",                          444, NULL },
-  { "Dcaron",                            722, NULL },
-  { "dcroat",                            500, NULL },
-  { "Ocircumflex",                       722, NULL },
-  { "Oacute",                            722, NULL },
-  { "scedilla",                          389, NULL },
-  { "ogonek",                            333, NULL },
-  { "ograve",                            500, NULL },
-  { "racute",                            389, NULL },
-  { "Tcaron",                            611, NULL },
-  { "Eogonek",                           667, NULL },
-  { "thorn",                             500, NULL },
-  { "degree",                            400, NULL },
-  { "registered",                        747, NULL },
-  { "radical",                           549, NULL },
-  { "Aring",                             667, NULL },
-  { "percent",                           833, NULL },
-  { "six",                               500, NULL },
-  { "paragraph",                         500, NULL },
-  { "dcaron",                            608, NULL },
-  { "Uogonek",                           722, NULL },
-  { "two",                               500, NULL },
-  { "summation",                         600, NULL },
-  { "Igrave",                            389, NULL },
-  { "Lacute",                            611, NULL },
-  { "ocircumflex",                       500, NULL },
-  { "oacute",                            500, NULL },
-  { "Uring",                             722, NULL },
-  { "Lcommaaccent",                      611, NULL },
-  { "tcaron",                            366, NULL },
-  { "eogonek",                           444, NULL },
-  { "Delta",                             612, NULL },
-  { "Ohungarumlaut",                     722, NULL },
-  { "asciicircum",                       570, NULL },
-  { "aring",                             500, NULL },
-  { "grave",                             333, NULL },
-  { "uogonek",                           556, NULL },
-  { "bracketright",                      333, NULL },
-  { "Iacute",                            389, NULL },
-  { "ampersand",                         778, NULL },
-  { "igrave",                            278, NULL },
-  { "lacute",                            278, NULL },
-  { "Ncaron",                            722, NULL },
-  { "plus",                              570, NULL },
-  { "uring",                             556, NULL },
-  { "quotesinglbase",                    333, NULL },
-  { "lcommaaccent",                      278, NULL },
-  { "Yacute",                            611, NULL },
-  { "ohungarumlaut",                     500, NULL },
-  { "threesuperior",                     300, NULL },
-  { "acute",                             333, NULL },
-  { "section",                           500, NULL },
-  { "dieresis",                          333, NULL },
-  { "iacute",                            278, NULL },
-  { "quotedblbase",                      500, NULL },
-  { "ncaron",                            556, NULL },
-  { "florin",                            500, NULL },
-  { "yacute",                            444, NULL },
-  { "Rcommaaccent",                      667, NULL },
-  { "fi",                                556, NULL },
-  { "fl",                                556, NULL },
-  { "Acircumflex",                       667, NULL },
-  { "Cacute",                            667, NULL },
-  { "Icircumflex",                       389, NULL },
-  { "guillemotleft",                     500, NULL },
-  { "germandbls",                        500, NULL },
-  { "Amacron",                           667, NULL },
-  { "seven",                             500, NULL },
-  { "Sacute",                            556, NULL },
-  { "ordmasculine",                      300, NULL },
-  { "dotlessi",                          278, NULL },
-  { "sterling",                          500, NULL },
-  { "notequal",                          549, NULL },
-  { "Imacron",                           389, NULL },
-  { "rcommaaccent",                      389, NULL },
-  { "Zdotaccent",                        611, NULL },
-  { "acircumflex",                       500, NULL },
-  { "cacute",                            444, NULL },
-  { "Ecaron",                            667, NULL },
-  { "icircumflex",                       278, NULL },
-  { "braceright",                        348, NULL },
-  { "quotedblright",                     500, NULL },
-  { "amacron",                           500, NULL },
-  { "sacute",                            389, NULL },
-  { "imacron",                           278, NULL },
-  { "cent",                              500, NULL },
-  { "currency",                          500, NULL },
-  { "logicalnot",                        606, NULL },
-  { "zdotaccent",                        389, NULL },
-  { "Atilde",                            667, NULL },
-  { "breve",                             333, NULL },
-  { "bar",                               220, NULL },
-  { "fraction",                          167, NULL },
-  { "less",                              570, NULL },
-  { "ecaron",                            444, NULL },
-  { "guilsinglleft",                     333, NULL },
-  { "exclam",                            389, NULL },
-  { "period",                            250, NULL },
-  { "Rcaron",                            667, NULL },
-  { "Kcommaaccent",                      667, NULL },
-  { "greater",                           570, NULL },
-  { "atilde",                            500, NULL },
-  { "brokenbar",                         220, NULL },
-  { "quoteleft",                         333, NULL },
-  { "Edotaccent",                        667, NULL },
-  { "onesuperior",                       300, NULL }
+  { "Ntilde",                            722, nullptr },
+  { "rcaron",                            389, nullptr },
+  { "kcommaaccent",                      500, nullptr },
+  { "Ncommaaccent",                      722, nullptr },
+  { "Zacute",                            611, nullptr },
+  { "comma",                             250, nullptr },
+  { "cedilla",                           333, nullptr },
+  { "plusminus",                         570, nullptr },
+  { "circumflex",                        333, nullptr },
+  { "dotaccent",                         333, nullptr },
+  { "edotaccent",                        444, nullptr },
+  { "asciitilde",                        570, nullptr },
+  { "colon",                             333, nullptr },
+  { "onehalf",                           750, nullptr },
+  { "dollar",                            500, nullptr },
+  { "Lcaron",                            611, nullptr },
+  { "ntilde",                            556, nullptr },
+  { "Aogonek",                           667, nullptr },
+  { "ncommaaccent",                      556, nullptr },
+  { "minus",                             606, nullptr },
+  { "Iogonek",                           389, nullptr },
+  { "zacute",                            389, nullptr },
+  { "yen",                               500, nullptr },
+  { "space",                             250, nullptr },
+  { "Omacron",                           722, nullptr },
+  { "questiondown",                      500, nullptr },
+  { "emdash",                           1000, nullptr },
+  { "Agrave",                            667, nullptr },
+  { "three",                             500, nullptr },
+  { "numbersign",                        500, nullptr },
+  { "lcaron",                            382, nullptr },
+  { "A",                                 667, nullptr },
+  { "B",                                 667, nullptr },
+  { "C",                                 667, nullptr },
+  { "aogonek",                           500, nullptr },
+  { "D",                                 722, nullptr },
+  { "E",                                 667, nullptr },
+  { "onequarter",                        750, nullptr },
+  { "F",                                 667, nullptr },
+  { "G",                                 722, nullptr },
+  { "H",                                 778, nullptr },
+  { "I",                                 389, nullptr },
+  { "J",                                 500, nullptr },
+  { "K",                                 667, nullptr },
+  { "iogonek",                           278, nullptr },
+  { "backslash",                         278, nullptr },
+  { "L",                                 611, nullptr },
+  { "periodcentered",                    250, nullptr },
+  { "M",                                 889, nullptr },
+  { "N",                                 722, nullptr },
+  { "omacron",                           500, nullptr },
+  { "Tcommaaccent",                      611, nullptr },
+  { "O",                                 722, nullptr },
+  { "P",                                 611, nullptr },
+  { "Q",                                 722, nullptr },
+  { "Uhungarumlaut",                     722, nullptr },
+  { "R",                                 667, nullptr },
+  { "Aacute",                            667, nullptr },
+  { "caron",                             333, nullptr },
+  { "S",                                 556, nullptr },
+  { "T",                                 611, nullptr },
+  { "U",                                 722, nullptr },
+  { "agrave",                            500, nullptr },
+  { "V",                                 667, nullptr },
+  { "W",                                 889, nullptr },
+  { "X",                                 667, nullptr },
+  { "question",                          500, nullptr },
+  { "equal",                             570, nullptr },
+  { "Y",                                 611, nullptr },
+  { "Z",                                 611, nullptr },
+  { "four",                              500, nullptr },
+  { "a",                                 500, nullptr },
+  { "Gcommaaccent",                      722, nullptr },
+  { "b",                                 500, nullptr },
+  { "c",                                 444, nullptr },
+  { "d",                                 500, nullptr },
+  { "e",                                 444, nullptr },
+  { "f",                                 333, nullptr },
+  { "g",                                 500, nullptr },
+  { "bullet",                            350, nullptr },
+  { "h",                                 556, nullptr },
+  { "i",                                 278, nullptr },
+  { "Oslash",                            722, nullptr },
+  { "dagger",                            500, nullptr },
+  { "j",                                 278, nullptr },
+  { "k",                                 500, nullptr },
+  { "l",                                 278, nullptr },
+  { "m",                                 778, nullptr },
+  { "n",                                 556, nullptr },
+  { "tcommaaccent",                      278, nullptr },
+  { "o",                                 500, nullptr },
+  { "ordfeminine",                       266, nullptr },
+  { "ring",                              333, nullptr },
+  { "p",                                 500, nullptr },
+  { "q",                                 500, nullptr },
+  { "uhungarumlaut",                     556, nullptr },
+  { "r",                                 389, nullptr },
+  { "twosuperior",                       300, nullptr },
+  { "aacute",                            500, nullptr },
+  { "s",                                 389, nullptr },
+  { "OE",                                944, nullptr },
+  { "t",                                 278, nullptr },
+  { "divide",                            570, nullptr },
+  { "u",                                 556, nullptr },
+  { "Ccaron",                            667, nullptr },
+  { "v",                                 444, nullptr },
+  { "w",                                 667, nullptr },
+  { "x",                                 500, nullptr },
+  { "y",                                 444, nullptr },
+  { "z",                                 389, nullptr },
+  { "Gbreve",                            722, nullptr },
+  { "commaaccent",                       250, nullptr },
+  { "hungarumlaut",                      333, nullptr },
+  { "Idotaccent",                        389, nullptr },
+  { "Nacute",                            722, nullptr },
+  { "quotedbl",                          555, nullptr },
+  { "gcommaaccent",                      500, nullptr },
+  { "mu",                                576, nullptr },
+  { "greaterequal",                      549, nullptr },
+  { "Scaron",                            556, nullptr },
+  { "Lslash",                            611, nullptr },
+  { "semicolon",                         333, nullptr },
+  { "oslash",                            500, nullptr },
+  { "lessequal",                         549, nullptr },
+  { "lozenge",                           494, nullptr },
+  { "parenright",                        333, nullptr },
+  { "ccaron",                            444, nullptr },
+  { "Ecircumflex",                       667, nullptr },
+  { "gbreve",                            500, nullptr },
+  { "trademark",                        1000, nullptr },
+  { "daggerdbl",                         500, nullptr },
+  { "nacute",                            556, nullptr },
+  { "macron",                            333, nullptr },
+  { "Otilde",                            722, nullptr },
+  { "Emacron",                           667, nullptr },
+  { "ellipsis",                         1000, nullptr },
+  { "scaron",                            389, nullptr },
+  { "AE",                                944, nullptr },
+  { "Ucircumflex",                       722, nullptr },
+  { "lslash",                            278, nullptr },
+  { "quotedblleft",                      500, nullptr },
+  { "guilsinglright",                    333, nullptr },
+  { "hyphen",                            333, nullptr },
+  { "quotesingle",                       278, nullptr },
+  { "eight",                             500, nullptr },
+  { "exclamdown",                        389, nullptr },
+  { "endash",                            500, nullptr },
+  { "oe",                                722, nullptr },
+  { "Abreve",                            667, nullptr },
+  { "Umacron",                           722, nullptr },
+  { "ecircumflex",                       444, nullptr },
+  { "Adieresis",                         667, nullptr },
+  { "copyright",                         747, nullptr },
+  { "Egrave",                            667, nullptr },
+  { "slash",                             278, nullptr },
+  { "Edieresis",                         667, nullptr },
+  { "otilde",                            500, nullptr },
+  { "Idieresis",                         389, nullptr },
+  { "parenleft",                         333, nullptr },
+  { "one",                               500, nullptr },
+  { "emacron",                           444, nullptr },
+  { "Odieresis",                         722, nullptr },
+  { "ucircumflex",                       556, nullptr },
+  { "bracketleft",                       333, nullptr },
+  { "Ugrave",                            722, nullptr },
+  { "quoteright",                        333, nullptr },
+  { "Udieresis",                         722, nullptr },
+  { "perthousand",                      1000, nullptr },
+  { "Ydieresis",                         611, nullptr },
+  { "umacron",                           556, nullptr },
+  { "abreve",                            500, nullptr },
+  { "Eacute",                            667, nullptr },
+  { "adieresis",                         500, nullptr },
+  { "egrave",                            444, nullptr },
+  { "edieresis",                         444, nullptr },
+  { "idieresis",                         278, nullptr },
+  { "Eth",                               722, nullptr },
+  { "ae",                                722, nullptr },
+  { "asterisk",                          500, nullptr },
+  { "odieresis",                         500, nullptr },
+  { "Uacute",                            722, nullptr },
+  { "ugrave",                            556, nullptr },
+  { "nine",                              500, nullptr },
+  { "five",                              500, nullptr },
+  { "udieresis",                         556, nullptr },
+  { "Zcaron",                            611, nullptr },
+  { "Scommaaccent",                      556, nullptr },
+  { "threequarters",                     750, nullptr },
+  { "guillemotright",                    500, nullptr },
+  { "Ccedilla",                          667, nullptr },
+  { "ydieresis",                         444, nullptr },
+  { "tilde",                             333, nullptr },
+  { "at",                                832, nullptr },
+  { "eacute",                            444, nullptr },
+  { "underscore",                        500, nullptr },
+  { "Euro",                              500, nullptr },
+  { "Dcroat",                            722, nullptr },
+  { "multiply",                          570, nullptr },
+  { "zero",                              500, nullptr },
+  { "eth",                               500, nullptr },
+  { "Scedilla",                          556, nullptr },
+  { "Ograve",                            722, nullptr },
+  { "Racute",                            667, nullptr },
+  { "partialdiff",                       494, nullptr },
+  { "uacute",                            556, nullptr },
+  { "braceleft",                         348, nullptr },
+  { "Thorn",                             611, nullptr },
+  { "zcaron",                            389, nullptr },
+  { "scommaaccent",                      389, nullptr },
+  { "ccedilla",                          444, nullptr },
+  { "Dcaron",                            722, nullptr },
+  { "dcroat",                            500, nullptr },
+  { "Ocircumflex",                       722, nullptr },
+  { "Oacute",                            722, nullptr },
+  { "scedilla",                          389, nullptr },
+  { "ogonek",                            333, nullptr },
+  { "ograve",                            500, nullptr },
+  { "racute",                            389, nullptr },
+  { "Tcaron",                            611, nullptr },
+  { "Eogonek",                           667, nullptr },
+  { "thorn",                             500, nullptr },
+  { "degree",                            400, nullptr },
+  { "registered",                        747, nullptr },
+  { "radical",                           549, nullptr },
+  { "Aring",                             667, nullptr },
+  { "percent",                           833, nullptr },
+  { "six",                               500, nullptr },
+  { "paragraph",                         500, nullptr },
+  { "dcaron",                            608, nullptr },
+  { "Uogonek",                           722, nullptr },
+  { "two",                               500, nullptr },
+  { "summation",                         600, nullptr },
+  { "Igrave",                            389, nullptr },
+  { "Lacute",                            611, nullptr },
+  { "ocircumflex",                       500, nullptr },
+  { "oacute",                            500, nullptr },
+  { "Uring",                             722, nullptr },
+  { "Lcommaaccent",                      611, nullptr },
+  { "tcaron",                            366, nullptr },
+  { "eogonek",                           444, nullptr },
+  { "Delta",                             612, nullptr },
+  { "Ohungarumlaut",                     722, nullptr },
+  { "asciicircum",                       570, nullptr },
+  { "aring",                             500, nullptr },
+  { "grave",                             333, nullptr },
+  { "uogonek",                           556, nullptr },
+  { "bracketright",                      333, nullptr },
+  { "Iacute",                            389, nullptr },
+  { "ampersand",                         778, nullptr },
+  { "igrave",                            278, nullptr },
+  { "lacute",                            278, nullptr },
+  { "Ncaron",                            722, nullptr },
+  { "plus",                              570, nullptr },
+  { "uring",                             556, nullptr },
+  { "quotesinglbase",                    333, nullptr },
+  { "lcommaaccent",                      278, nullptr },
+  { "Yacute",                            611, nullptr },
+  { "ohungarumlaut",                     500, nullptr },
+  { "threesuperior",                     300, nullptr },
+  { "acute",                             333, nullptr },
+  { "section",                           500, nullptr },
+  { "dieresis",                          333, nullptr },
+  { "iacute",                            278, nullptr },
+  { "quotedblbase",                      500, nullptr },
+  { "ncaron",                            556, nullptr },
+  { "florin",                            500, nullptr },
+  { "yacute",                            444, nullptr },
+  { "Rcommaaccent",                      667, nullptr },
+  { "fi",                                556, nullptr },
+  { "fl",                                556, nullptr },
+  { "Acircumflex",                       667, nullptr },
+  { "Cacute",                            667, nullptr },
+  { "Icircumflex",                       389, nullptr },
+  { "guillemotleft",                     500, nullptr },
+  { "germandbls",                        500, nullptr },
+  { "Amacron",                           667, nullptr },
+  { "seven",                             500, nullptr },
+  { "Sacute",                            556, nullptr },
+  { "ordmasculine",                      300, nullptr },
+  { "dotlessi",                          278, nullptr },
+  { "sterling",                          500, nullptr },
+  { "notequal",                          549, nullptr },
+  { "Imacron",                           389, nullptr },
+  { "rcommaaccent",                      389, nullptr },
+  { "Zdotaccent",                        611, nullptr },
+  { "acircumflex",                       500, nullptr },
+  { "cacute",                            444, nullptr },
+  { "Ecaron",                            667, nullptr },
+  { "icircumflex",                       278, nullptr },
+  { "braceright",                        348, nullptr },
+  { "quotedblright",                     500, nullptr },
+  { "amacron",                           500, nullptr },
+  { "sacute",                            389, nullptr },
+  { "imacron",                           278, nullptr },
+  { "cent",                              500, nullptr },
+  { "currency",                          500, nullptr },
+  { "logicalnot",                        606, nullptr },
+  { "zdotaccent",                        389, nullptr },
+  { "Atilde",                            667, nullptr },
+  { "breve",                             333, nullptr },
+  { "bar",                               220, nullptr },
+  { "fraction",                          167, nullptr },
+  { "less",                              570, nullptr },
+  { "ecaron",                            444, nullptr },
+  { "guilsinglleft",                     333, nullptr },
+  { "exclam",                            389, nullptr },
+  { "period",                            250, nullptr },
+  { "Rcaron",                            667, nullptr },
+  { "Kcommaaccent",                      667, nullptr },
+  { "greater",                           570, nullptr },
+  { "atilde",                            500, nullptr },
+  { "brokenbar",                         220, nullptr },
+  { "quoteleft",                         333, nullptr },
+  { "Edotaccent",                        667, nullptr },
+  { "onesuperior",                       300, nullptr }
 };
 
 static BuiltinFontWidth timesItalicWidthsTab[] = {
-  { "Ntilde",                            667, NULL },
-  { "rcaron",                            389, NULL },
-  { "kcommaaccent",                      444, NULL },
-  { "Ncommaaccent",                      667, NULL },
-  { "Zacute",                            556, NULL },
-  { "comma",                             250, NULL },
-  { "cedilla",                           333, NULL },
-  { "plusminus",                         675, NULL },
-  { "circumflex",                        333, NULL },
-  { "dotaccent",                         333, NULL },
-  { "edotaccent",                        444, NULL },
-  { "asciitilde",                        541, NULL },
-  { "colon",                             333, NULL },
-  { "onehalf",                           750, NULL },
-  { "dollar",                            500, NULL },
-  { "Lcaron",                            611, NULL },
-  { "ntilde",                            500, NULL },
-  { "Aogonek",                           611, NULL },
-  { "ncommaaccent",                      500, NULL },
-  { "minus",                             675, NULL },
-  { "Iogonek",                           333, NULL },
-  { "zacute",                            389, NULL },
-  { "yen",                               500, NULL },
-  { "space",                             250, NULL },
-  { "Omacron",                           722, NULL },
-  { "questiondown",                      500, NULL },
-  { "emdash",                            889, NULL },
-  { "Agrave",                            611, NULL },
-  { "three",                             500, NULL },
-  { "numbersign",                        500, NULL },
-  { "lcaron",                            300, NULL },
-  { "A",                                 611, NULL },
-  { "B",                                 611, NULL },
-  { "C",                                 667, NULL },
-  { "aogonek",                           500, NULL },
-  { "D",                                 722, NULL },
-  { "E",                                 611, NULL },
-  { "onequarter",                        750, NULL },
-  { "F",                                 611, NULL },
-  { "G",                                 722, NULL },
-  { "H",                                 722, NULL },
-  { "I",                                 333, NULL },
-  { "J",                                 444, NULL },
-  { "K",                                 667, NULL },
-  { "iogonek",                           278, NULL },
-  { "backslash",                         278, NULL },
-  { "L",                                 556, NULL },
-  { "periodcentered",                    250, NULL },
-  { "M",                                 833, NULL },
-  { "N",                                 667, NULL },
-  { "omacron",                           500, NULL },
-  { "Tcommaaccent",                      556, NULL },
-  { "O",                                 722, NULL },
-  { "P",                                 611, NULL },
-  { "Q",                                 722, NULL },
-  { "Uhungarumlaut",                     722, NULL },
-  { "R",                                 611, NULL },
-  { "Aacute",                            611, NULL },
-  { "caron",                             333, NULL },
-  { "S",                                 500, NULL },
-  { "T",                                 556, NULL },
-  { "U",                                 722, NULL },
-  { "agrave",                            500, NULL },
-  { "V",                                 611, NULL },
-  { "W",                                 833, NULL },
-  { "X",                                 611, NULL },
-  { "question",                          500, NULL },
-  { "equal",                             675, NULL },
-  { "Y",                                 556, NULL },
-  { "Z",                                 556, NULL },
-  { "four",                              500, NULL },
-  { "a",                                 500, NULL },
-  { "Gcommaaccent",                      722, NULL },
-  { "b",                                 500, NULL },
-  { "c",                                 444, NULL },
-  { "d",                                 500, NULL },
-  { "e",                                 444, NULL },
-  { "f",                                 278, NULL },
-  { "g",                                 500, NULL },
-  { "bullet",                            350, NULL },
-  { "h",                                 500, NULL },
-  { "i",                                 278, NULL },
-  { "Oslash",                            722, NULL },
-  { "dagger",                            500, NULL },
-  { "j",                                 278, NULL },
-  { "k",                                 444, NULL },
-  { "l",                                 278, NULL },
-  { "m",                                 722, NULL },
-  { "n",                                 500, NULL },
-  { "tcommaaccent",                      278, NULL },
-  { "o",                                 500, NULL },
-  { "ordfeminine",                       276, NULL },
-  { "ring",                              333, NULL },
-  { "p",                                 500, NULL },
-  { "q",                                 500, NULL },
-  { "uhungarumlaut",                     500, NULL },
-  { "r",                                 389, NULL },
-  { "twosuperior",                       300, NULL },
-  { "aacute",                            500, NULL },
-  { "s",                                 389, NULL },
-  { "OE",                                944, NULL },
-  { "t",                                 278, NULL },
-  { "divide",                            675, NULL },
-  { "u",                                 500, NULL },
-  { "Ccaron",                            667, NULL },
-  { "v",                                 444, NULL },
-  { "w",                                 667, NULL },
-  { "x",                                 444, NULL },
-  { "y",                                 444, NULL },
-  { "z",                                 389, NULL },
-  { "Gbreve",                            722, NULL },
-  { "commaaccent",                       250, NULL },
-  { "hungarumlaut",                      333, NULL },
-  { "Idotaccent",                        333, NULL },
-  { "Nacute",                            667, NULL },
-  { "quotedbl",                          420, NULL },
-  { "gcommaaccent",                      500, NULL },
-  { "mu",                                500, NULL },
-  { "greaterequal",                      549, NULL },
-  { "Scaron",                            500, NULL },
-  { "Lslash",                            556, NULL },
-  { "semicolon",                         333, NULL },
-  { "oslash",                            500, NULL },
-  { "lessequal",                         549, NULL },
-  { "lozenge",                           471, NULL },
-  { "parenright",                        333, NULL },
-  { "ccaron",                            444, NULL },
-  { "Ecircumflex",                       611, NULL },
-  { "gbreve",                            500, NULL },
-  { "trademark",                         980, NULL },
-  { "daggerdbl",                         500, NULL },
-  { "nacute",                            500, NULL },
-  { "macron",                            333, NULL },
-  { "Otilde",                            722, NULL },
-  { "Emacron",                           611, NULL },
-  { "ellipsis",                          889, NULL },
-  { "scaron",                            389, NULL },
-  { "AE",                                889, NULL },
-  { "Ucircumflex",                       722, NULL },
-  { "lslash",                            278, NULL },
-  { "quotedblleft",                      556, NULL },
-  { "guilsinglright",                    333, NULL },
-  { "hyphen",                            333, NULL },
-  { "quotesingle",                       214, NULL },
-  { "eight",                             500, NULL },
-  { "exclamdown",                        389, NULL },
-  { "endash",                            500, NULL },
-  { "oe",                                667, NULL },
-  { "Abreve",                            611, NULL },
-  { "Umacron",                           722, NULL },
-  { "ecircumflex",                       444, NULL },
-  { "Adieresis",                         611, NULL },
-  { "copyright",                         760, NULL },
-  { "Egrave",                            611, NULL },
-  { "slash",                             278, NULL },
-  { "Edieresis",                         611, NULL },
-  { "otilde",                            500, NULL },
-  { "Idieresis",                         333, NULL },
-  { "parenleft",                         333, NULL },
-  { "one",                               500, NULL },
-  { "emacron",                           444, NULL },
-  { "Odieresis",                         722, NULL },
-  { "ucircumflex",                       500, NULL },
-  { "bracketleft",                       389, NULL },
-  { "Ugrave",                            722, NULL },
-  { "quoteright",                        333, NULL },
-  { "Udieresis",                         722, NULL },
-  { "perthousand",                      1000, NULL },
-  { "Ydieresis",                         556, NULL },
-  { "umacron",                           500, NULL },
-  { "abreve",                            500, NULL },
-  { "Eacute",                            611, NULL },
-  { "adieresis",                         500, NULL },
-  { "egrave",                            444, NULL },
-  { "edieresis",                         444, NULL },
-  { "idieresis",                         278, NULL },
-  { "Eth",                               722, NULL },
-  { "ae",                                667, NULL },
-  { "asterisk",                          500, NULL },
-  { "odieresis",                         500, NULL },
-  { "Uacute",                            722, NULL },
-  { "ugrave",                            500, NULL },
-  { "nine",                              500, NULL },
-  { "five",                              500, NULL },
-  { "udieresis",                         500, NULL },
-  { "Zcaron",                            556, NULL },
-  { "Scommaaccent",                      500, NULL },
-  { "threequarters",                     750, NULL },
-  { "guillemotright",                    500, NULL },
-  { "Ccedilla",                          667, NULL },
-  { "ydieresis",                         444, NULL },
-  { "tilde",                             333, NULL },
-  { "at",                                920, NULL },
-  { "eacute",                            444, NULL },
-  { "underscore",                        500, NULL },
-  { "Euro",                              500, NULL },
-  { "Dcroat",                            722, NULL },
-  { "multiply",                          675, NULL },
-  { "zero",                              500, NULL },
-  { "eth",                               500, NULL },
-  { "Scedilla",                          500, NULL },
-  { "Ograve",                            722, NULL },
-  { "Racute",                            611, NULL },
-  { "partialdiff",                       476, NULL },
-  { "uacute",                            500, NULL },
-  { "braceleft",                         400, NULL },
-  { "Thorn",                             611, NULL },
-  { "zcaron",                            389, NULL },
-  { "scommaaccent",                      389, NULL },
-  { "ccedilla",                          444, NULL },
-  { "Dcaron",                            722, NULL },
-  { "dcroat",                            500, NULL },
-  { "Ocircumflex",                       722, NULL },
-  { "Oacute",                            722, NULL },
-  { "scedilla",                          389, NULL },
-  { "ogonek",                            333, NULL },
-  { "ograve",                            500, NULL },
-  { "racute",                            389, NULL },
-  { "Tcaron",                            556, NULL },
-  { "Eogonek",                           611, NULL },
-  { "thorn",                             500, NULL },
-  { "degree",                            400, NULL },
-  { "registered",                        760, NULL },
-  { "radical",                           453, NULL },
-  { "Aring",                             611, NULL },
-  { "percent",                           833, NULL },
-  { "six",                               500, NULL },
-  { "paragraph",                         523, NULL },
-  { "dcaron",                            544, NULL },
-  { "Uogonek",                           722, NULL },
-  { "two",                               500, NULL },
-  { "summation",                         600, NULL },
-  { "Igrave",                            333, NULL },
-  { "Lacute",                            556, NULL },
-  { "ocircumflex",                       500, NULL },
-  { "oacute",                            500, NULL },
-  { "Uring",                             722, NULL },
-  { "Lcommaaccent",                      556, NULL },
-  { "tcaron",                            300, NULL },
-  { "eogonek",                           444, NULL },
-  { "Delta",                             612, NULL },
-  { "Ohungarumlaut",                     722, NULL },
-  { "asciicircum",                       422, NULL },
-  { "aring",                             500, NULL },
-  { "grave",                             333, NULL },
-  { "uogonek",                           500, NULL },
-  { "bracketright",                      389, NULL },
-  { "Iacute",                            333, NULL },
-  { "ampersand",                         778, NULL },
-  { "igrave",                            278, NULL },
-  { "lacute",                            278, NULL },
-  { "Ncaron",                            667, NULL },
-  { "plus",                              675, NULL },
-  { "uring",                             500, NULL },
-  { "quotesinglbase",                    333, NULL },
-  { "lcommaaccent",                      278, NULL },
-  { "Yacute",                            556, NULL },
-  { "ohungarumlaut",                     500, NULL },
-  { "threesuperior",                     300, NULL },
-  { "acute",                             333, NULL },
-  { "section",                           500, NULL },
-  { "dieresis",                          333, NULL },
-  { "iacute",                            278, NULL },
-  { "quotedblbase",                      556, NULL },
-  { "ncaron",                            500, NULL },
-  { "florin",                            500, NULL },
-  { "yacute",                            444, NULL },
-  { "Rcommaaccent",                      611, NULL },
-  { "fi",                                500, NULL },
-  { "fl",                                500, NULL },
-  { "Acircumflex",                       611, NULL },
-  { "Cacute",                            667, NULL },
-  { "Icircumflex",                       333, NULL },
-  { "guillemotleft",                     500, NULL },
-  { "germandbls",                        500, NULL },
-  { "Amacron",                           611, NULL },
-  { "seven",                             500, NULL },
-  { "Sacute",                            500, NULL },
-  { "ordmasculine",                      310, NULL },
-  { "dotlessi",                          278, NULL },
-  { "sterling",                          500, NULL },
-  { "notequal",                          549, NULL },
-  { "Imacron",                           333, NULL },
-  { "rcommaaccent",                      389, NULL },
-  { "Zdotaccent",                        556, NULL },
-  { "acircumflex",                       500, NULL },
-  { "cacute",                            444, NULL },
-  { "Ecaron",                            611, NULL },
-  { "icircumflex",                       278, NULL },
-  { "braceright",                        400, NULL },
-  { "quotedblright",                     556, NULL },
-  { "amacron",                           500, NULL },
-  { "sacute",                            389, NULL },
-  { "imacron",                           278, NULL },
-  { "cent",                              500, NULL },
-  { "currency",                          500, NULL },
-  { "logicalnot",                        675, NULL },
-  { "zdotaccent",                        389, NULL },
-  { "Atilde",                            611, NULL },
-  { "breve",                             333, NULL },
-  { "bar",                               275, NULL },
-  { "fraction",                          167, NULL },
-  { "less",                              675, NULL },
-  { "ecaron",                            444, NULL },
-  { "guilsinglleft",                     333, NULL },
-  { "exclam",                            333, NULL },
-  { "period",                            250, NULL },
-  { "Rcaron",                            611, NULL },
-  { "Kcommaaccent",                      667, NULL },
-  { "greater",                           675, NULL },
-  { "atilde",                            500, NULL },
-  { "brokenbar",                         275, NULL },
-  { "quoteleft",                         333, NULL },
-  { "Edotaccent",                        611, NULL },
-  { "onesuperior",                       300, NULL }
+  { "Ntilde",                            667, nullptr },
+  { "rcaron",                            389, nullptr },
+  { "kcommaaccent",                      444, nullptr },
+  { "Ncommaaccent",                      667, nullptr },
+  { "Zacute",                            556, nullptr },
+  { "comma",                             250, nullptr },
+  { "cedilla",                           333, nullptr },
+  { "plusminus",                         675, nullptr },
+  { "circumflex",                        333, nullptr },
+  { "dotaccent",                         333, nullptr },
+  { "edotaccent",                        444, nullptr },
+  { "asciitilde",                        541, nullptr },
+  { "colon",                             333, nullptr },
+  { "onehalf",                           750, nullptr },
+  { "dollar",                            500, nullptr },
+  { "Lcaron",                            611, nullptr },
+  { "ntilde",                            500, nullptr },
+  { "Aogonek",                           611, nullptr },
+  { "ncommaaccent",                      500, nullptr },
+  { "minus",                             675, nullptr },
+  { "Iogonek",                           333, nullptr },
+  { "zacute",                            389, nullptr },
+  { "yen",                               500, nullptr },
+  { "space",                             250, nullptr },
+  { "Omacron",                           722, nullptr },
+  { "questiondown",                      500, nullptr },
+  { "emdash",                            889, nullptr },
+  { "Agrave",                            611, nullptr },
+  { "three",                             500, nullptr },
+  { "numbersign",                        500, nullptr },
+  { "lcaron",                            300, nullptr },
+  { "A",                                 611, nullptr },
+  { "B",                                 611, nullptr },
+  { "C",                                 667, nullptr },
+  { "aogonek",                           500, nullptr },
+  { "D",                                 722, nullptr },
+  { "E",                                 611, nullptr },
+  { "onequarter",                        750, nullptr },
+  { "F",                                 611, nullptr },
+  { "G",                                 722, nullptr },
+  { "H",                                 722, nullptr },
+  { "I",                                 333, nullptr },
+  { "J",                                 444, nullptr },
+  { "K",                                 667, nullptr },
+  { "iogonek",                           278, nullptr },
+  { "backslash",                         278, nullptr },
+  { "L",                                 556, nullptr },
+  { "periodcentered",                    250, nullptr },
+  { "M",                                 833, nullptr },
+  { "N",                                 667, nullptr },
+  { "omacron",                           500, nullptr },
+  { "Tcommaaccent",                      556, nullptr },
+  { "O",                                 722, nullptr },
+  { "P",                                 611, nullptr },
+  { "Q",                                 722, nullptr },
+  { "Uhungarumlaut",                     722, nullptr },
+  { "R",                                 611, nullptr },
+  { "Aacute",                            611, nullptr },
+  { "caron",                             333, nullptr },
+  { "S",                                 500, nullptr },
+  { "T",                                 556, nullptr },
+  { "U",                                 722, nullptr },
+  { "agrave",                            500, nullptr },
+  { "V",                                 611, nullptr },
+  { "W",                                 833, nullptr },
+  { "X",                                 611, nullptr },
+  { "question",                          500, nullptr },
+  { "equal",                             675, nullptr },
+  { "Y",                                 556, nullptr },
+  { "Z",                                 556, nullptr },
+  { "four",                              500, nullptr },
+  { "a",                                 500, nullptr },
+  { "Gcommaaccent",                      722, nullptr },
+  { "b",                                 500, nullptr },
+  { "c",                                 444, nullptr },
+  { "d",                                 500, nullptr },
+  { "e",                                 444, nullptr },
+  { "f",                                 278, nullptr },
+  { "g",                                 500, nullptr },
+  { "bullet",                            350, nullptr },
+  { "h",                                 500, nullptr },
+  { "i",                                 278, nullptr },
+  { "Oslash",                            722, nullptr },
+  { "dagger",                            500, nullptr },
+  { "j",                                 278, nullptr },
+  { "k",                                 444, nullptr },
+  { "l",                                 278, nullptr },
+  { "m",                                 722, nullptr },
+  { "n",                                 500, nullptr },
+  { "tcommaaccent",                      278, nullptr },
+  { "o",                                 500, nullptr },
+  { "ordfeminine",                       276, nullptr },
+  { "ring",                              333, nullptr },
+  { "p",                                 500, nullptr },
+  { "q",                                 500, nullptr },
+  { "uhungarumlaut",                     500, nullptr },
+  { "r",                                 389, nullptr },
+  { "twosuperior",                       300, nullptr },
+  { "aacute",                            500, nullptr },
+  { "s",                                 389, nullptr },
+  { "OE",                                944, nullptr },
+  { "t",                                 278, nullptr },
+  { "divide",                            675, nullptr },
+  { "u",                                 500, nullptr },
+  { "Ccaron",                            667, nullptr },
+  { "v",                                 444, nullptr },
+  { "w",                                 667, nullptr },
+  { "x",                                 444, nullptr },
+  { "y",                                 444, nullptr },
+  { "z",                                 389, nullptr },
+  { "Gbreve",                            722, nullptr },
+  { "commaaccent",                       250, nullptr },
+  { "hungarumlaut",                      333, nullptr },
+  { "Idotaccent",                        333, nullptr },
+  { "Nacute",                            667, nullptr },
+  { "quotedbl",                          420, nullptr },
+  { "gcommaaccent",                      500, nullptr },
+  { "mu",                                500, nullptr },
+  { "greaterequal",                      549, nullptr },
+  { "Scaron",                            500, nullptr },
+  { "Lslash",                            556, nullptr },
+  { "semicolon",                         333, nullptr },
+  { "oslash",                            500, nullptr },
+  { "lessequal",                         549, nullptr },
+  { "lozenge",                           471, nullptr },
+  { "parenright",                        333, nullptr },
+  { "ccaron",                            444, nullptr },
+  { "Ecircumflex",                       611, nullptr },
+  { "gbreve",                            500, nullptr },
+  { "trademark",                         980, nullptr },
+  { "daggerdbl",                         500, nullptr },
+  { "nacute",                            500, nullptr },
+  { "macron",                            333, nullptr },
+  { "Otilde",                            722, nullptr },
+  { "Emacron",                           611, nullptr },
+  { "ellipsis",                          889, nullptr },
+  { "scaron",                            389, nullptr },
+  { "AE",                                889, nullptr },
+  { "Ucircumflex",                       722, nullptr },
+  { "lslash",                            278, nullptr },
+  { "quotedblleft",                      556, nullptr },
+  { "guilsinglright",                    333, nullptr },
+  { "hyphen",                            333, nullptr },
+  { "quotesingle",                       214, nullptr },
+  { "eight",                             500, nullptr },
+  { "exclamdown",                        389, nullptr },
+  { "endash",                            500, nullptr },
+  { "oe",                                667, nullptr },
+  { "Abreve",                            611, nullptr },
+  { "Umacron",                           722, nullptr },
+  { "ecircumflex",                       444, nullptr },
+  { "Adieresis",                         611, nullptr },
+  { "copyright",                         760, nullptr },
+  { "Egrave",                            611, nullptr },
+  { "slash",                             278, nullptr },
+  { "Edieresis",                         611, nullptr },
+  { "otilde",                            500, nullptr },
+  { "Idieresis",                         333, nullptr },
+  { "parenleft",                         333, nullptr },
+  { "one",                               500, nullptr },
+  { "emacron",                           444, nullptr },
+  { "Odieresis",                         722, nullptr },
+  { "ucircumflex",                       500, nullptr },
+  { "bracketleft",                       389, nullptr },
+  { "Ugrave",                            722, nullptr },
+  { "quoteright",                        333, nullptr },
+  { "Udieresis",                         722, nullptr },
+  { "perthousand",                      1000, nullptr },
+  { "Ydieresis",                         556, nullptr },
+  { "umacron",                           500, nullptr },
+  { "abreve",                            500, nullptr },
+  { "Eacute",                            611, nullptr },
+  { "adieresis",                         500, nullptr },
+  { "egrave",                            444, nullptr },
+  { "edieresis",                         444, nullptr },
+  { "idieresis",                         278, nullptr },
+  { "Eth",                               722, nullptr },
+  { "ae",                                667, nullptr },
+  { "asterisk",                          500, nullptr },
+  { "odieresis",                         500, nullptr },
+  { "Uacute",                            722, nullptr },
+  { "ugrave",                            500, nullptr },
+  { "nine",                              500, nullptr },
+  { "five",                              500, nullptr },
+  { "udieresis",                         500, nullptr },
+  { "Zcaron",                            556, nullptr },
+  { "Scommaaccent",                      500, nullptr },
+  { "threequarters",                     750, nullptr },
+  { "guillemotright",                    500, nullptr },
+  { "Ccedilla",                          667, nullptr },
+  { "ydieresis",                         444, nullptr },
+  { "tilde",                             333, nullptr },
+  { "at",                                920, nullptr },
+  { "eacute",                            444, nullptr },
+  { "underscore",                        500, nullptr },
+  { "Euro",                              500, nullptr },
+  { "Dcroat",                            722, nullptr },
+  { "multiply",                          675, nullptr },
+  { "zero",                              500, nullptr },
+  { "eth",                               500, nullptr },
+  { "Scedilla",                          500, nullptr },
+  { "Ograve",                            722, nullptr },
+  { "Racute",                            611, nullptr },
+  { "partialdiff",                       476, nullptr },
+  { "uacute",                            500, nullptr },
+  { "braceleft",                         400, nullptr },
+  { "Thorn",                             611, nullptr },
+  { "zcaron",                            389, nullptr },
+  { "scommaaccent",                      389, nullptr },
+  { "ccedilla",                          444, nullptr },
+  { "Dcaron",                            722, nullptr },
+  { "dcroat",                            500, nullptr },
+  { "Ocircumflex",                       722, nullptr },
+  { "Oacute",                            722, nullptr },
+  { "scedilla",                          389, nullptr },
+  { "ogonek",                            333, nullptr },
+  { "ograve",                            500, nullptr },
+  { "racute",                            389, nullptr },
+  { "Tcaron",                            556, nullptr },
+  { "Eogonek",                           611, nullptr },
+  { "thorn",                             500, nullptr },
+  { "degree",                            400, nullptr },
+  { "registered",                        760, nullptr },
+  { "radical",                           453, nullptr },
+  { "Aring",                             611, nullptr },
+  { "percent",                           833, nullptr },
+  { "six",                               500, nullptr },
+  { "paragraph",                         523, nullptr },
+  { "dcaron",                            544, nullptr },
+  { "Uogonek",                           722, nullptr },
+  { "two",                               500, nullptr },
+  { "summation",                         600, nullptr },
+  { "Igrave",                            333, nullptr },
+  { "Lacute",                            556, nullptr },
+  { "ocircumflex",                       500, nullptr },
+  { "oacute",                            500, nullptr },
+  { "Uring",                             722, nullptr },
+  { "Lcommaaccent",                      556, nullptr },
+  { "tcaron",                            300, nullptr },
+  { "eogonek",                           444, nullptr },
+  { "Delta",                             612, nullptr },
+  { "Ohungarumlaut",                     722, nullptr },
+  { "asciicircum",                       422, nullptr },
+  { "aring",                             500, nullptr },
+  { "grave",                             333, nullptr },
+  { "uogonek",                           500, nullptr },
+  { "bracketright",                      389, nullptr },
+  { "Iacute",                            333, nullptr },
+  { "ampersand",                         778, nullptr },
+  { "igrave",                            278, nullptr },
+  { "lacute",                            278, nullptr },
+  { "Ncaron",                            667, nullptr },
+  { "plus",                              675, nullptr },
+  { "uring",                             500, nullptr },
+  { "quotesinglbase",                    333, nullptr },
+  { "lcommaaccent",                      278, nullptr },
+  { "Yacute",                            556, nullptr },
+  { "ohungarumlaut",                     500, nullptr },
+  { "threesuperior",                     300, nullptr },
+  { "acute",                             333, nullptr },
+  { "section",                           500, nullptr },
+  { "dieresis",                          333, nullptr },
+  { "iacute",                            278, nullptr },
+  { "quotedblbase",                      556, nullptr },
+  { "ncaron",                            500, nullptr },
+  { "florin",                            500, nullptr },
+  { "yacute",                            444, nullptr },
+  { "Rcommaaccent",                      611, nullptr },
+  { "fi",                                500, nullptr },
+  { "fl",                                500, nullptr },
+  { "Acircumflex",                       611, nullptr },
+  { "Cacute",                            667, nullptr },
+  { "Icircumflex",                       333, nullptr },
+  { "guillemotleft",                     500, nullptr },
+  { "germandbls",                        500, nullptr },
+  { "Amacron",                           611, nullptr },
+  { "seven",                             500, nullptr },
+  { "Sacute",                            500, nullptr },
+  { "ordmasculine",                      310, nullptr },
+  { "dotlessi",                          278, nullptr },
+  { "sterling",                          500, nullptr },
+  { "notequal",                          549, nullptr },
+  { "Imacron",                           333, nullptr },
+  { "rcommaaccent",                      389, nullptr },
+  { "Zdotaccent",                        556, nullptr },
+  { "acircumflex",                       500, nullptr },
+  { "cacute",                            444, nullptr },
+  { "Ecaron",                            611, nullptr },
+  { "icircumflex",                       278, nullptr },
+  { "braceright",                        400, nullptr },
+  { "quotedblright",                     556, nullptr },
+  { "amacron",                           500, nullptr },
+  { "sacute",                            389, nullptr },
+  { "imacron",                           278, nullptr },
+  { "cent",                              500, nullptr },
+  { "currency",                          500, nullptr },
+  { "logicalnot",                        675, nullptr },
+  { "zdotaccent",                        389, nullptr },
+  { "Atilde",                            611, nullptr },
+  { "breve",                             333, nullptr },
+  { "bar",                               275, nullptr },
+  { "fraction",                          167, nullptr },
+  { "less",                              675, nullptr },
+  { "ecaron",                            444, nullptr },
+  { "guilsinglleft",                     333, nullptr },
+  { "exclam",                            333, nullptr },
+  { "period",                            250, nullptr },
+  { "Rcaron",                            611, nullptr },
+  { "Kcommaaccent",                      667, nullptr },
+  { "greater",                           675, nullptr },
+  { "atilde",                            500, nullptr },
+  { "brokenbar",                         275, nullptr },
+  { "quoteleft",                         333, nullptr },
+  { "Edotaccent",                        611, nullptr },
+  { "onesuperior",                       300, nullptr }
 };
 
 static BuiltinFontWidth timesRomanWidthsTab[] = {
-  { "Ntilde",                            722, NULL },
-  { "rcaron",                            333, NULL },
-  { "kcommaaccent",                      500, NULL },
-  { "Ncommaaccent",                      722, NULL },
-  { "Zacute",                            611, NULL },
-  { "comma",                             250, NULL },
-  { "cedilla",                           333, NULL },
-  { "plusminus",                         564, NULL },
-  { "circumflex",                        333, NULL },
-  { "dotaccent",                         333, NULL },
-  { "edotaccent",                        444, NULL },
-  { "asciitilde",                        541, NULL },
-  { "colon",                             278, NULL },
-  { "onehalf",                           750, NULL },
-  { "dollar",                            500, NULL },
-  { "Lcaron",                            611, NULL },
-  { "ntilde",                            500, NULL },
-  { "Aogonek",                           722, NULL },
-  { "ncommaaccent",                      500, NULL },
-  { "minus",                             564, NULL },
-  { "Iogonek",                           333, NULL },
-  { "zacute",                            444, NULL },
-  { "yen",                               500, NULL },
-  { "space",                             250, NULL },
-  { "Omacron",                           722, NULL },
-  { "questiondown",                      444, NULL },
-  { "emdash",                           1000, NULL },
-  { "Agrave",                            722, NULL },
-  { "three",                             500, NULL },
-  { "numbersign",                        500, NULL },
-  { "lcaron",                            344, NULL },
-  { "A",                                 722, NULL },
-  { "B",                                 667, NULL },
-  { "C",                                 667, NULL },
-  { "aogonek",                           444, NULL },
-  { "D",                                 722, NULL },
-  { "E",                                 611, NULL },
-  { "onequarter",                        750, NULL },
-  { "F",                                 556, NULL },
-  { "G",                                 722, NULL },
-  { "H",                                 722, NULL },
-  { "I",                                 333, NULL },
-  { "J",                                 389, NULL },
-  { "K",                                 722, NULL },
-  { "iogonek",                           278, NULL },
-  { "backslash",                         278, NULL },
-  { "L",                                 611, NULL },
-  { "periodcentered",                    250, NULL },
-  { "M",                                 889, NULL },
-  { "N",                                 722, NULL },
-  { "omacron",                           500, NULL },
-  { "Tcommaaccent",                      611, NULL },
-  { "O",                                 722, NULL },
-  { "P",                                 556, NULL },
-  { "Q",                                 722, NULL },
-  { "Uhungarumlaut",                     722, NULL },
-  { "R",                                 667, NULL },
-  { "Aacute",                            722, NULL },
-  { "caron",                             333, NULL },
-  { "S",                                 556, NULL },
-  { "T",                                 611, NULL },
-  { "U",                                 722, NULL },
-  { "agrave",                            444, NULL },
-  { "V",                                 722, NULL },
-  { "W",                                 944, NULL },
-  { "X",                                 722, NULL },
-  { "question",                          444, NULL },
-  { "equal",                             564, NULL },
-  { "Y",                                 722, NULL },
-  { "Z",                                 611, NULL },
-  { "four",                              500, NULL },
-  { "a",                                 444, NULL },
-  { "Gcommaaccent",                      722, NULL },
-  { "b",                                 500, NULL },
-  { "c",                                 444, NULL },
-  { "d",                                 500, NULL },
-  { "e",                                 444, NULL },
-  { "f",                                 333, NULL },
-  { "g",                                 500, NULL },
-  { "bullet",                            350, NULL },
-  { "h",                                 500, NULL },
-  { "i",                                 278, NULL },
-  { "Oslash",                            722, NULL },
-  { "dagger",                            500, NULL },
-  { "j",                                 278, NULL },
-  { "k",                                 500, NULL },
-  { "l",                                 278, NULL },
-  { "m",                                 778, NULL },
-  { "n",                                 500, NULL },
-  { "tcommaaccent",                      278, NULL },
-  { "o",                                 500, NULL },
-  { "ordfeminine",                       276, NULL },
-  { "ring",                              333, NULL },
-  { "p",                                 500, NULL },
-  { "q",                                 500, NULL },
-  { "uhungarumlaut",                     500, NULL },
-  { "r",                                 333, NULL },
-  { "twosuperior",                       300, NULL },
-  { "aacute",                            444, NULL },
-  { "s",                                 389, NULL },
-  { "OE",                                889, NULL },
-  { "t",                                 278, NULL },
-  { "divide",                            564, NULL },
-  { "u",                                 500, NULL },
-  { "Ccaron",                            667, NULL },
-  { "v",                                 500, NULL },
-  { "w",                                 722, NULL },
-  { "x",                                 500, NULL },
-  { "y",                                 500, NULL },
-  { "z",                                 444, NULL },
-  { "Gbreve",                            722, NULL },
-  { "commaaccent",                       250, NULL },
-  { "hungarumlaut",                      333, NULL },
-  { "Idotaccent",                        333, NULL },
-  { "Nacute",                            722, NULL },
-  { "quotedbl",                          408, NULL },
-  { "gcommaaccent",                      500, NULL },
-  { "mu",                                500, NULL },
-  { "greaterequal",                      549, NULL },
-  { "Scaron",                            556, NULL },
-  { "Lslash",                            611, NULL },
-  { "semicolon",                         278, NULL },
-  { "oslash",                            500, NULL },
-  { "lessequal",                         549, NULL },
-  { "lozenge",                           471, NULL },
-  { "parenright",                        333, NULL },
-  { "ccaron",                            444, NULL },
-  { "Ecircumflex",                       611, NULL },
-  { "gbreve",                            500, NULL },
-  { "trademark",                         980, NULL },
-  { "daggerdbl",                         500, NULL },
-  { "nacute",                            500, NULL },
-  { "macron",                            333, NULL },
-  { "Otilde",                            722, NULL },
-  { "Emacron",                           611, NULL },
-  { "ellipsis",                         1000, NULL },
-  { "scaron",                            389, NULL },
-  { "AE",                                889, NULL },
-  { "Ucircumflex",                       722, NULL },
-  { "lslash",                            278, NULL },
-  { "quotedblleft",                      444, NULL },
-  { "guilsinglright",                    333, NULL },
-  { "hyphen",                            333, NULL },
-  { "quotesingle",                       180, NULL },
-  { "eight",                             500, NULL },
-  { "exclamdown",                        333, NULL },
-  { "endash",                            500, NULL },
-  { "oe",                                722, NULL },
-  { "Abreve",                            722, NULL },
-  { "Umacron",                           722, NULL },
-  { "ecircumflex",                       444, NULL },
-  { "Adieresis",                         722, NULL },
-  { "copyright",                         760, NULL },
-  { "Egrave",                            611, NULL },
-  { "slash",                             278, NULL },
-  { "Edieresis",                         611, NULL },
-  { "otilde",                            500, NULL },
-  { "Idieresis",                         333, NULL },
-  { "parenleft",                         333, NULL },
-  { "one",                               500, NULL },
-  { "emacron",                           444, NULL },
-  { "Odieresis",                         722, NULL },
-  { "ucircumflex",                       500, NULL },
-  { "bracketleft",                       333, NULL },
-  { "Ugrave",                            722, NULL },
-  { "quoteright",                        333, NULL },
-  { "Udieresis",                         722, NULL },
-  { "perthousand",                      1000, NULL },
-  { "Ydieresis",                         722, NULL },
-  { "umacron",                           500, NULL },
-  { "abreve",                            444, NULL },
-  { "Eacute",                            611, NULL },
-  { "adieresis",                         444, NULL },
-  { "egrave",                            444, NULL },
-  { "edieresis",                         444, NULL },
-  { "idieresis",                         278, NULL },
-  { "Eth",                               722, NULL },
-  { "ae",                                667, NULL },
-  { "asterisk",                          500, NULL },
-  { "odieresis",                         500, NULL },
-  { "Uacute",                            722, NULL },
-  { "ugrave",                            500, NULL },
-  { "nine",                              500, NULL },
-  { "five",                              500, NULL },
-  { "udieresis",                         500, NULL },
-  { "Zcaron",                            611, NULL },
-  { "Scommaaccent",                      556, NULL },
-  { "threequarters",                     750, NULL },
-  { "guillemotright",                    500, NULL },
-  { "Ccedilla",                          667, NULL },
-  { "ydieresis",                         500, NULL },
-  { "tilde",                             333, NULL },
-  { "at",                                921, NULL },
-  { "eacute",                            444, NULL },
-  { "underscore",                        500, NULL },
-  { "Euro",                              500, NULL },
-  { "Dcroat",                            722, NULL },
-  { "multiply",                          564, NULL },
-  { "zero",                              500, NULL },
-  { "eth",                               500, NULL },
-  { "Scedilla",                          556, NULL },
-  { "Ograve",                            722, NULL },
-  { "Racute",                            667, NULL },
-  { "partialdiff",                       476, NULL },
-  { "uacute",                            500, NULL },
-  { "braceleft",                         480, NULL },
-  { "Thorn",                             556, NULL },
-  { "zcaron",                            444, NULL },
-  { "scommaaccent",                      389, NULL },
-  { "ccedilla",                          444, NULL },
-  { "Dcaron",                            722, NULL },
-  { "dcroat",                            500, NULL },
-  { "Ocircumflex",                       722, NULL },
-  { "Oacute",                            722, NULL },
-  { "scedilla",                          389, NULL },
-  { "ogonek",                            333, NULL },
-  { "ograve",                            500, NULL },
-  { "racute",                            333, NULL },
-  { "Tcaron",                            611, NULL },
-  { "Eogonek",                           611, NULL },
-  { "thorn",                             500, NULL },
-  { "degree",                            400, NULL },
-  { "registered",                        760, NULL },
-  { "radical",                           453, NULL },
-  { "Aring",                             722, NULL },
-  { "percent",                           833, NULL },
-  { "six",                               500, NULL },
-  { "paragraph",                         453, NULL },
-  { "dcaron",                            588, NULL },
-  { "Uogonek",                           722, NULL },
-  { "two",                               500, NULL },
-  { "summation",                         600, NULL },
-  { "Igrave",                            333, NULL },
-  { "Lacute",                            611, NULL },
-  { "ocircumflex",                       500, NULL },
-  { "oacute",                            500, NULL },
-  { "Uring",                             722, NULL },
-  { "Lcommaaccent",                      611, NULL },
-  { "tcaron",                            326, NULL },
-  { "eogonek",                           444, NULL },
-  { "Delta",                             612, NULL },
-  { "Ohungarumlaut",                     722, NULL },
-  { "asciicircum",                       469, NULL },
-  { "aring",                             444, NULL },
-  { "grave",                             333, NULL },
-  { "uogonek",                           500, NULL },
-  { "bracketright",                      333, NULL },
-  { "Iacute",                            333, NULL },
-  { "ampersand",                         778, NULL },
-  { "igrave",                            278, NULL },
-  { "lacute",                            278, NULL },
-  { "Ncaron",                            722, NULL },
-  { "plus",                              564, NULL },
-  { "uring",                             500, NULL },
-  { "quotesinglbase",                    333, NULL },
-  { "lcommaaccent",                      278, NULL },
-  { "Yacute",                            722, NULL },
-  { "ohungarumlaut",                     500, NULL },
-  { "threesuperior",                     300, NULL },
-  { "acute",                             333, NULL },
-  { "section",                           500, NULL },
-  { "dieresis",                          333, NULL },
-  { "iacute",                            278, NULL },
-  { "quotedblbase",                      444, NULL },
-  { "ncaron",                            500, NULL },
-  { "florin",                            500, NULL },
-  { "yacute",                            500, NULL },
-  { "Rcommaaccent",                      667, NULL },
-  { "fi",                                556, NULL },
-  { "fl",                                556, NULL },
-  { "Acircumflex",                       722, NULL },
-  { "Cacute",                            667, NULL },
-  { "Icircumflex",                       333, NULL },
-  { "guillemotleft",                     500, NULL },
-  { "germandbls",                        500, NULL },
-  { "Amacron",                           722, NULL },
-  { "seven",                             500, NULL },
-  { "Sacute",                            556, NULL },
-  { "ordmasculine",                      310, NULL },
-  { "dotlessi",                          278, NULL },
-  { "sterling",                          500, NULL },
-  { "notequal",                          549, NULL },
-  { "Imacron",                           333, NULL },
-  { "rcommaaccent",                      333, NULL },
-  { "Zdotaccent",                        611, NULL },
-  { "acircumflex",                       444, NULL },
-  { "cacute",                            444, NULL },
-  { "Ecaron",                            611, NULL },
-  { "icircumflex",                       278, NULL },
-  { "braceright",                        480, NULL },
-  { "quotedblright",                     444, NULL },
-  { "amacron",                           444, NULL },
-  { "sacute",                            389, NULL },
-  { "imacron",                           278, NULL },
-  { "cent",                              500, NULL },
-  { "currency",                          500, NULL },
-  { "logicalnot",                        564, NULL },
-  { "zdotaccent",                        444, NULL },
-  { "Atilde",                            722, NULL },
-  { "breve",                             333, NULL },
-  { "bar",                               200, NULL },
-  { "fraction",                          167, NULL },
-  { "less",                              564, NULL },
-  { "ecaron",                            444, NULL },
-  { "guilsinglleft",                     333, NULL },
-  { "exclam",                            333, NULL },
-  { "period",                            250, NULL },
-  { "Rcaron",                            667, NULL },
-  { "Kcommaaccent",                      722, NULL },
-  { "greater",                           564, NULL },
-  { "atilde",                            444, NULL },
-  { "brokenbar",                         200, NULL },
-  { "quoteleft",                         333, NULL },
-  { "Edotaccent",                        611, NULL },
-  { "onesuperior",                       300, NULL }
+  { "Ntilde",                            722, nullptr },
+  { "rcaron",                            333, nullptr },
+  { "kcommaaccent",                      500, nullptr },
+  { "Ncommaaccent",                      722, nullptr },
+  { "Zacute",                            611, nullptr },
+  { "comma",                             250, nullptr },
+  { "cedilla",                           333, nullptr },
+  { "plusminus",                         564, nullptr },
+  { "circumflex",                        333, nullptr },
+  { "dotaccent",                         333, nullptr },
+  { "edotaccent",                        444, nullptr },
+  { "asciitilde",                        541, nullptr },
+  { "colon",                             278, nullptr },
+  { "onehalf",                           750, nullptr },
+  { "dollar",                            500, nullptr },
+  { "Lcaron",                            611, nullptr },
+  { "ntilde",                            500, nullptr },
+  { "Aogonek",                           722, nullptr },
+  { "ncommaaccent",                      500, nullptr },
+  { "minus",                             564, nullptr },
+  { "Iogonek",                           333, nullptr },
+  { "zacute",                            444, nullptr },
+  { "yen",                               500, nullptr },
+  { "space",                             250, nullptr },
+  { "Omacron",                           722, nullptr },
+  { "questiondown",                      444, nullptr },
+  { "emdash",                           1000, nullptr },
+  { "Agrave",                            722, nullptr },
+  { "three",                             500, nullptr },
+  { "numbersign",                        500, nullptr },
+  { "lcaron",                            344, nullptr },
+  { "A",                                 722, nullptr },
+  { "B",                                 667, nullptr },
+  { "C",                                 667, nullptr },
+  { "aogonek",                           444, nullptr },
+  { "D",                                 722, nullptr },
+  { "E",                                 611, nullptr },
+  { "onequarter",                        750, nullptr },
+  { "F",                                 556, nullptr },
+  { "G",                                 722, nullptr },
+  { "H",                                 722, nullptr },
+  { "I",                                 333, nullptr },
+  { "J",                                 389, nullptr },
+  { "K",                                 722, nullptr },
+  { "iogonek",                           278, nullptr },
+  { "backslash",                         278, nullptr },
+  { "L",                                 611, nullptr },
+  { "periodcentered",                    250, nullptr },
+  { "M",                                 889, nullptr },
+  { "N",                                 722, nullptr },
+  { "omacron",                           500, nullptr },
+  { "Tcommaaccent",                      611, nullptr },
+  { "O",                                 722, nullptr },
+  { "P",                                 556, nullptr },
+  { "Q",                                 722, nullptr },
+  { "Uhungarumlaut",                     722, nullptr },
+  { "R",                                 667, nullptr },
+  { "Aacute",                            722, nullptr },
+  { "caron",                             333, nullptr },
+  { "S",                                 556, nullptr },
+  { "T",                                 611, nullptr },
+  { "U",                                 722, nullptr },
+  { "agrave",                            444, nullptr },
+  { "V",                                 722, nullptr },
+  { "W",                                 944, nullptr },
+  { "X",                                 722, nullptr },
+  { "question",                          444, nullptr },
+  { "equal",                             564, nullptr },
+  { "Y",                                 722, nullptr },
+  { "Z",                                 611, nullptr },
+  { "four",                              500, nullptr },
+  { "a",                                 444, nullptr },
+  { "Gcommaaccent",                      722, nullptr },
+  { "b",                                 500, nullptr },
+  { "c",                                 444, nullptr },
+  { "d",                                 500, nullptr },
+  { "e",                                 444, nullptr },
+  { "f",                                 333, nullptr },
+  { "g",                                 500, nullptr },
+  { "bullet",                            350, nullptr },
+  { "h",                                 500, nullptr },
+  { "i",                                 278, nullptr },
+  { "Oslash",                            722, nullptr },
+  { "dagger",                            500, nullptr },
+  { "j",                                 278, nullptr },
+  { "k",                                 500, nullptr },
+  { "l",                                 278, nullptr },
+  { "m",                                 778, nullptr },
+  { "n",                                 500, nullptr },
+  { "tcommaaccent",                      278, nullptr },
+  { "o",                                 500, nullptr },
+  { "ordfeminine",                       276, nullptr },
+  { "ring",                              333, nullptr },
+  { "p",                                 500, nullptr },
+  { "q",                                 500, nullptr },
+  { "uhungarumlaut",                     500, nullptr },
+  { "r",                                 333, nullptr },
+  { "twosuperior",                       300, nullptr },
+  { "aacute",                            444, nullptr },
+  { "s",                                 389, nullptr },
+  { "OE",                                889, nullptr },
+  { "t",                                 278, nullptr },
+  { "divide",                            564, nullptr },
+  { "u",                                 500, nullptr },
+  { "Ccaron",                            667, nullptr },
+  { "v",                                 500, nullptr },
+  { "w",                                 722, nullptr },
+  { "x",                                 500, nullptr },
+  { "y",                                 500, nullptr },
+  { "z",                                 444, nullptr },
+  { "Gbreve",                            722, nullptr },
+  { "commaaccent",                       250, nullptr },
+  { "hungarumlaut",                      333, nullptr },
+  { "Idotaccent",                        333, nullptr },
+  { "Nacute",                            722, nullptr },
+  { "quotedbl",                          408, nullptr },
+  { "gcommaaccent",                      500, nullptr },
+  { "mu",                                500, nullptr },
+  { "greaterequal",                      549, nullptr },
+  { "Scaron",                            556, nullptr },
+  { "Lslash",                            611, nullptr },
+  { "semicolon",                         278, nullptr },
+  { "oslash",                            500, nullptr },
+  { "lessequal",                         549, nullptr },
+  { "lozenge",                           471, nullptr },
+  { "parenright",                        333, nullptr },
+  { "ccaron",                            444, nullptr },
+  { "Ecircumflex",                       611, nullptr },
+  { "gbreve",                            500, nullptr },
+  { "trademark",                         980, nullptr },
+  { "daggerdbl",                         500, nullptr },
+  { "nacute",                            500, nullptr },
+  { "macron",                            333, nullptr },
+  { "Otilde",                            722, nullptr },
+  { "Emacron",                           611, nullptr },
+  { "ellipsis",                         1000, nullptr },
+  { "scaron",                            389, nullptr },
+  { "AE",                                889, nullptr },
+  { "Ucircumflex",                       722, nullptr },
+  { "lslash",                            278, nullptr },
+  { "quotedblleft",                      444, nullptr },
+  { "guilsinglright",                    333, nullptr },
+  { "hyphen",                            333, nullptr },
+  { "quotesingle",                       180, nullptr },
+  { "eight",                             500, nullptr },
+  { "exclamdown",                        333, nullptr },
+  { "endash",                            500, nullptr },
+  { "oe",                                722, nullptr },
+  { "Abreve",                            722, nullptr },
+  { "Umacron",                           722, nullptr },
+  { "ecircumflex",                       444, nullptr },
+  { "Adieresis",                         722, nullptr },
+  { "copyright",                         760, nullptr },
+  { "Egrave",                            611, nullptr },
+  { "slash",                             278, nullptr },
+  { "Edieresis",                         611, nullptr },
+  { "otilde",                            500, nullptr },
+  { "Idieresis",                         333, nullptr },
+  { "parenleft",                         333, nullptr },
+  { "one",                               500, nullptr },
+  { "emacron",                           444, nullptr },
+  { "Odieresis",                         722, nullptr },
+  { "ucircumflex",                       500, nullptr },
+  { "bracketleft",                       333, nullptr },
+  { "Ugrave",                            722, nullptr },
+  { "quoteright",                        333, nullptr },
+  { "Udieresis",                         722, nullptr },
+  { "perthousand",                      1000, nullptr },
+  { "Ydieresis",                         722, nullptr },
+  { "umacron",                           500, nullptr },
+  { "abreve",                            444, nullptr },
+  { "Eacute",                            611, nullptr },
+  { "adieresis",                         444, nullptr },
+  { "egrave",                            444, nullptr },
+  { "edieresis",                         444, nullptr },
+  { "idieresis",                         278, nullptr },
+  { "Eth",                               722, nullptr },
+  { "ae",                                667, nullptr },
+  { "asterisk",                          500, nullptr },
+  { "odieresis",                         500, nullptr },
+  { "Uacute",                            722, nullptr },
+  { "ugrave",                            500, nullptr },
+  { "nine",                              500, nullptr },
+  { "five",                              500, nullptr },
+  { "udieresis",                         500, nullptr },
+  { "Zcaron",                            611, nullptr },
+  { "Scommaaccent",                      556, nullptr },
+  { "threequarters",                     750, nullptr },
+  { "guillemotright",                    500, nullptr },
+  { "Ccedilla",                          667, nullptr },
+  { "ydieresis",                         500, nullptr },
+  { "tilde",                             333, nullptr },
+  { "at",                                921, nullptr },
+  { "eacute",                            444, nullptr },
+  { "underscore",                        500, nullptr },
+  { "Euro",                              500, nullptr },
+  { "Dcroat",                            722, nullptr },
+  { "multiply",                          564, nullptr },
+  { "zero",                              500, nullptr },
+  { "eth",                               500, nullptr },
+  { "Scedilla",                          556, nullptr },
+  { "Ograve",                            722, nullptr },
+  { "Racute",                            667, nullptr },
+  { "partialdiff",                       476, nullptr },
+  { "uacute",                            500, nullptr },
+  { "braceleft",                         480, nullptr },
+  { "Thorn",                             556, nullptr },
+  { "zcaron",                            444, nullptr },
+  { "scommaaccent",                      389, nullptr },
+  { "ccedilla",                          444, nullptr },
+  { "Dcaron",                            722, nullptr },
+  { "dcroat",                            500, nullptr },
+  { "Ocircumflex",                       722, nullptr },
+  { "Oacute",                            722, nullptr },
+  { "scedilla",                          389, nullptr },
+  { "ogonek",                            333, nullptr },
+  { "ograve",                            500, nullptr },
+  { "racute",                            333, nullptr },
+  { "Tcaron",                            611, nullptr },
+  { "Eogonek",                           611, nullptr },
+  { "thorn",                             500, nullptr },
+  { "degree",                            400, nullptr },
+  { "registered",                        760, nullptr },
+  { "radical",                           453, nullptr },
+  { "Aring",                             722, nullptr },
+  { "percent",                           833, nullptr },
+  { "six",                               500, nullptr },
+  { "paragraph",                         453, nullptr },
+  { "dcaron",                            588, nullptr },
+  { "Uogonek",                           722, nullptr },
+  { "two",                               500, nullptr },
+  { "summation",                         600, nullptr },
+  { "Igrave",                            333, nullptr },
+  { "Lacute",                            611, nullptr },
+  { "ocircumflex",                       500, nullptr },
+  { "oacute",                            500, nullptr },
+  { "Uring",                             722, nullptr },
+  { "Lcommaaccent",                      611, nullptr },
+  { "tcaron",                            326, nullptr },
+  { "eogonek",                           444, nullptr },
+  { "Delta",                             612, nullptr },
+  { "Ohungarumlaut",                     722, nullptr },
+  { "asciicircum",                       469, nullptr },
+  { "aring",                             444, nullptr },
+  { "grave",                             333, nullptr },
+  { "uogonek",                           500, nullptr },
+  { "bracketright",                      333, nullptr },
+  { "Iacute",                            333, nullptr },
+  { "ampersand",                         778, nullptr },
+  { "igrave",                            278, nullptr },
+  { "lacute",                            278, nullptr },
+  { "Ncaron",                            722, nullptr },
+  { "plus",                              564, nullptr },
+  { "uring",                             500, nullptr },
+  { "quotesinglbase",                    333, nullptr },
+  { "lcommaaccent",                      278, nullptr },
+  { "Yacute",                            722, nullptr },
+  { "ohungarumlaut",                     500, nullptr },
+  { "threesuperior",                     300, nullptr },
+  { "acute",                             333, nullptr },
+  { "section",                           500, nullptr },
+  { "dieresis",                          333, nullptr },
+  { "iacute",                            278, nullptr },
+  { "quotedblbase",                      444, nullptr },
+  { "ncaron",                            500, nullptr },
+  { "florin",                            500, nullptr },
+  { "yacute",                            500, nullptr },
+  { "Rcommaaccent",                      667, nullptr },
+  { "fi",                                556, nullptr },
+  { "fl",                                556, nullptr },
+  { "Acircumflex",                       722, nullptr },
+  { "Cacute",                            667, nullptr },
+  { "Icircumflex",                       333, nullptr },
+  { "guillemotleft",                     500, nullptr },
+  { "germandbls",                        500, nullptr },
+  { "Amacron",                           722, nullptr },
+  { "seven",                             500, nullptr },
+  { "Sacute",                            556, nullptr },
+  { "ordmasculine",                      310, nullptr },
+  { "dotlessi",                          278, nullptr },
+  { "sterling",                          500, nullptr },
+  { "notequal",                          549, nullptr },
+  { "Imacron",                           333, nullptr },
+  { "rcommaaccent",                      333, nullptr },
+  { "Zdotaccent",                        611, nullptr },
+  { "acircumflex",                       444, nullptr },
+  { "cacute",                            444, nullptr },
+  { "Ecaron",                            611, nullptr },
+  { "icircumflex",                       278, nullptr },
+  { "braceright",                        480, nullptr },
+  { "quotedblright",                     444, nullptr },
+  { "amacron",                           444, nullptr },
+  { "sacute",                            389, nullptr },
+  { "imacron",                           278, nullptr },
+  { "cent",                              500, nullptr },
+  { "currency",                          500, nullptr },
+  { "logicalnot",                        564, nullptr },
+  { "zdotaccent",                        444, nullptr },
+  { "Atilde",                            722, nullptr },
+  { "breve",                             333, nullptr },
+  { "bar",                               200, nullptr },
+  { "fraction",                          167, nullptr },
+  { "less",                              564, nullptr },
+  { "ecaron",                            444, nullptr },
+  { "guilsinglleft",                     333, nullptr },
+  { "exclam",                            333, nullptr },
+  { "period",                            250, nullptr },
+  { "Rcaron",                            667, nullptr },
+  { "Kcommaaccent",                      722, nullptr },
+  { "greater",                           564, nullptr },
+  { "atilde",                            444, nullptr },
+  { "brokenbar",                         200, nullptr },
+  { "quoteleft",                         333, nullptr },
+  { "Edotaccent",                        611, nullptr },
+  { "onesuperior",                       300, nullptr }
 };
 
 static BuiltinFontWidth zapfDingbatsWidthsTab[] = {
-  { "a81",                               438, NULL },
-  { "a82",                               138, NULL },
-  { "a83",                               277, NULL },
-  { "a84",                               415, NULL },
-  { "a85",                               509, NULL },
-  { "a86",                               410, NULL },
-  { "a87",                               234, NULL },
-  { "a88",                               234, NULL },
-  { "a89",                               390, NULL },
-  { "a140",                              788, NULL },
-  { "a141",                              788, NULL },
-  { "a142",                              788, NULL },
-  { "a143",                              788, NULL },
-  { "a144",                              788, NULL },
-  { "a145",                              788, NULL },
-  { "a146",                              788, NULL },
-  { "a147",                              788, NULL },
-  { "a148",                              788, NULL },
-  { "a149",                              788, NULL },
-  { "a90",                               390, NULL },
-  { "a91",                               276, NULL },
-  { "a92",                               276, NULL },
-  { "space",                             278, NULL },
-  { "a93",                               317, NULL },
-  { "a94",                               317, NULL },
-  { "a95",                               334, NULL },
-  { "a96",                               334, NULL },
-  { "a97",                               392, NULL },
-  { "a98",                               392, NULL },
-  { "a99",                               668, NULL },
-  { "a150",                              788, NULL },
-  { "a151",                              788, NULL },
-  { "a152",                              788, NULL },
-  { "a153",                              788, NULL },
-  { "a154",                              788, NULL },
-  { "a155",                              788, NULL },
-  { "a156",                              788, NULL },
-  { "a157",                              788, NULL },
-  { "a158",                              788, NULL },
-  { "a159",                              788, NULL },
-  { "a160",                              894, NULL },
-  { "a161",                              838, NULL },
-  { "a162",                              924, NULL },
-  { "a163",                             1016, NULL },
-  { "a164",                              458, NULL },
-  { "a165",                              924, NULL },
-  { "a166",                              918, NULL },
-  { "a167",                              927, NULL },
-  { "a168",                              928, NULL },
-  { "a169",                              928, NULL },
-  { "a170",                              834, NULL },
-  { "a171",                              873, NULL },
-  { "a172",                              828, NULL },
-  { "a173",                              924, NULL },
-  { "a174",                              917, NULL },
-  { "a175",                              930, NULL },
-  { "a176",                              931, NULL },
-  { "a177",                              463, NULL },
-  { "a178",                              883, NULL },
-  { "a179",                              836, NULL },
-  { "a180",                              867, NULL },
-  { "a181",                              696, NULL },
-  { "a182",                              874, NULL },
-  { "a183",                              760, NULL },
-  { "a184",                              946, NULL },
-  { "a185",                              865, NULL },
-  { "a186",                              967, NULL },
-  { "a187",                              831, NULL },
-  { "a188",                              873, NULL },
-  { "a189",                              927, NULL },
-  { "a1",                                974, NULL },
-  { "a2",                                961, NULL },
-  { "a3",                                980, NULL },
-  { "a4",                                719, NULL },
-  { "a5",                                789, NULL },
-  { "a6",                                494, NULL },
-  { "a7",                                552, NULL },
-  { "a8",                                537, NULL },
-  { "a9",                                577, NULL },
-  { "a190",                              970, NULL },
-  { "a191",                              918, NULL },
-  { "a192",                              748, NULL },
-  { "a193",                              836, NULL },
-  { "a194",                              771, NULL },
-  { "a195",                              888, NULL },
-  { "a196",                              748, NULL },
-  { "a197",                              771, NULL },
-  { "a198",                              888, NULL },
-  { "a199",                              867, NULL },
-  { "a10",                               692, NULL },
-  { "a11",                               960, NULL },
-  { "a12",                               939, NULL },
-  { "a13",                               549, NULL },
-  { "a14",                               855, NULL },
-  { "a15",                               911, NULL },
-  { "a16",                               933, NULL },
-  { "a17",                               945, NULL },
-  { "a18",                               974, NULL },
-  { "a19",                               755, NULL },
-  { "a20",                               846, NULL },
-  { "a21",                               762, NULL },
-  { "a22",                               761, NULL },
-  { "a23",                               571, NULL },
-  { "a24",                               677, NULL },
-  { "a25",                               763, NULL },
-  { "a26",                               760, NULL },
-  { "a27",                               759, NULL },
-  { "a28",                               754, NULL },
-  { "a29",                               786, NULL },
-  { "a30",                               788, NULL },
-  { "a31",                               788, NULL },
-  { "a32",                               790, NULL },
-  { "a33",                               793, NULL },
-  { "a34",                               794, NULL },
-  { "a35",                               816, NULL },
-  { "a36",                               823, NULL },
-  { "a37",                               789, NULL },
-  { "a38",                               841, NULL },
-  { "a39",                               823, NULL },
-  { "a40",                               833, NULL },
-  { "a41",                               816, NULL },
-  { "a42",                               831, NULL },
-  { "a43",                               923, NULL },
-  { "a44",                               744, NULL },
-  { "a45",                               723, NULL },
-  { "a46",                               749, NULL },
-  { "a47",                               790, NULL },
-  { "a48",                               792, NULL },
-  { "a49",                               695, NULL },
-  { "a100",                              668, NULL },
-  { "a101",                              732, NULL },
-  { "a102",                              544, NULL },
-  { "a103",                              544, NULL },
-  { "a104",                              910, NULL },
-  { "a105",                              911, NULL },
-  { "a106",                              667, NULL },
-  { "a107",                              760, NULL },
-  { "a108",                              760, NULL },
-  { "a109",                              626, NULL },
-  { "a50",                               776, NULL },
-  { "a51",                               768, NULL },
-  { "a52",                               792, NULL },
-  { "a53",                               759, NULL },
-  { "a54",                               707, NULL },
-  { "a55",                               708, NULL },
-  { "a56",                               682, NULL },
-  { "a57",                               701, NULL },
-  { "a58",                               826, NULL },
-  { "a59",                               815, NULL },
-  { "a110",                              694, NULL },
-  { "a111",                              595, NULL },
-  { "a112",                              776, NULL },
-  { "a117",                              690, NULL },
-  { "a118",                              791, NULL },
-  { "a119",                              790, NULL },
-  { "a60",                               789, NULL },
-  { "a61",                               789, NULL },
-  { "a62",                               707, NULL },
-  { "a63",                               687, NULL },
-  { "a64",                               696, NULL },
-  { "a65",                               689, NULL },
-  { "a66",                               786, NULL },
-  { "a67",                               787, NULL },
-  { "a68",                               713, NULL },
-  { "a69",                               791, NULL },
-  { "a200",                              696, NULL },
-  { "a201",                              874, NULL },
-  { "a120",                              788, NULL },
-  { "a121",                              788, NULL },
-  { "a202",                              974, NULL },
-  { "a122",                              788, NULL },
-  { "a203",                              762, NULL },
-  { "a123",                              788, NULL },
-  { "a204",                              759, NULL },
-  { "a124",                              788, NULL },
-  { "a205",                              509, NULL },
-  { "a125",                              788, NULL },
-  { "a206",                              410, NULL },
-  { "a126",                              788, NULL },
-  { "a127",                              788, NULL },
-  { "a128",                              788, NULL },
-  { "a129",                              788, NULL },
-  { "a70",                               785, NULL },
-  { "a71",                               791, NULL },
-  { "a72",                               873, NULL },
-  { "a73",                               761, NULL },
-  { "a74",                               762, NULL },
-  { "a75",                               759, NULL },
-  { "a76",                               892, NULL },
-  { "a77",                               892, NULL },
-  { "a78",                               788, NULL },
-  { "a79",                               784, NULL },
-  { "a130",                              788, NULL },
-  { "a131",                              788, NULL },
-  { "a132",                              788, NULL },
-  { "a133",                              788, NULL },
-  { "a134",                              788, NULL },
-  { "a135",                              788, NULL },
-  { "a136",                              788, NULL },
-  { "a137",                              788, NULL },
-  { "a138",                              788, NULL },
-  { "a139",                              788, NULL }
+  { "a81",                               438, nullptr },
+  { "a82",                               138, nullptr },
+  { "a83",                               277, nullptr },
+  { "a84",                               415, nullptr },
+  { "a85",                               509, nullptr },
+  { "a86",                               410, nullptr },
+  { "a87",                               234, nullptr },
+  { "a88",                               234, nullptr },
+  { "a89",                               390, nullptr },
+  { "a140",                              788, nullptr },
+  { "a141",                              788, nullptr },
+  { "a142",                              788, nullptr },
+  { "a143",                              788, nullptr },
+  { "a144",                              788, nullptr },
+  { "a145",                              788, nullptr },
+  { "a146",                              788, nullptr },
+  { "a147",                              788, nullptr },
+  { "a148",                              788, nullptr },
+  { "a149",                              788, nullptr },
+  { "a90",                               390, nullptr },
+  { "a91",                               276, nullptr },
+  { "a92",                               276, nullptr },
+  { "space",                             278, nullptr },
+  { "a93",                               317, nullptr },
+  { "a94",                               317, nullptr },
+  { "a95",                               334, nullptr },
+  { "a96",                               334, nullptr },
+  { "a97",                               392, nullptr },
+  { "a98",                               392, nullptr },
+  { "a99",                               668, nullptr },
+  { "a150",                              788, nullptr },
+  { "a151",                              788, nullptr },
+  { "a152",                              788, nullptr },
+  { "a153",                              788, nullptr },
+  { "a154",                              788, nullptr },
+  { "a155",                              788, nullptr },
+  { "a156",                              788, nullptr },
+  { "a157",                              788, nullptr },
+  { "a158",                              788, nullptr },
+  { "a159",                              788, nullptr },
+  { "a160",                              894, nullptr },
+  { "a161",                              838, nullptr },
+  { "a162",                              924, nullptr },
+  { "a163",                             1016, nullptr },
+  { "a164",                              458, nullptr },
+  { "a165",                              924, nullptr },
+  { "a166",                              918, nullptr },
+  { "a167",                              927, nullptr },
+  { "a168",                              928, nullptr },
+  { "a169",                              928, nullptr },
+  { "a170",                              834, nullptr },
+  { "a171",                              873, nullptr },
+  { "a172",                              828, nullptr },
+  { "a173",                              924, nullptr },
+  { "a174",                              917, nullptr },
+  { "a175",                              930, nullptr },
+  { "a176",                              931, nullptr },
+  { "a177",                              463, nullptr },
+  { "a178",                              883, nullptr },
+  { "a179",                              836, nullptr },
+  { "a180",                              867, nullptr },
+  { "a181",                              696, nullptr },
+  { "a182",                              874, nullptr },
+  { "a183",                              760, nullptr },
+  { "a184",                              946, nullptr },
+  { "a185",                              865, nullptr },
+  { "a186",                              967, nullptr },
+  { "a187",                              831, nullptr },
+  { "a188",                              873, nullptr },
+  { "a189",                              927, nullptr },
+  { "a1",                                974, nullptr },
+  { "a2",                                961, nullptr },
+  { "a3",                                980, nullptr },
+  { "a4",                                719, nullptr },
+  { "a5",                                789, nullptr },
+  { "a6",                                494, nullptr },
+  { "a7",                                552, nullptr },
+  { "a8",                                537, nullptr },
+  { "a9",                                577, nullptr },
+  { "a190",                              970, nullptr },
+  { "a191",                              918, nullptr },
+  { "a192",                              748, nullptr },
+  { "a193",                              836, nullptr },
+  { "a194",                              771, nullptr },
+  { "a195",                              888, nullptr },
+  { "a196",                              748, nullptr },
+  { "a197",                              771, nullptr },
+  { "a198",                              888, nullptr },
+  { "a199",                              867, nullptr },
+  { "a10",                               692, nullptr },
+  { "a11",                               960, nullptr },
+  { "a12",                               939, nullptr },
+  { "a13",                               549, nullptr },
+  { "a14",                               855, nullptr },
+  { "a15",                               911, nullptr },
+  { "a16",                               933, nullptr },
+  { "a17",                               945, nullptr },
+  { "a18",                               974, nullptr },
+  { "a19",                               755, nullptr },
+  { "a20",                               846, nullptr },
+  { "a21",                               762, nullptr },
+  { "a22",                               761, nullptr },
+  { "a23",                               571, nullptr },
+  { "a24",                               677, nullptr },
+  { "a25",                               763, nullptr },
+  { "a26",                               760, nullptr },
+  { "a27",                               759, nullptr },
+  { "a28",                               754, nullptr },
+  { "a29",                               786, nullptr },
+  { "a30",                               788, nullptr },
+  { "a31",                               788, nullptr },
+  { "a32",                               790, nullptr },
+  { "a33",                               793, nullptr },
+  { "a34",                               794, nullptr },
+  { "a35",                               816, nullptr },
+  { "a36",                               823, nullptr },
+  { "a37",                               789, nullptr },
+  { "a38",                               841, nullptr },
+  { "a39",                               823, nullptr },
+  { "a40",                               833, nullptr },
+  { "a41",                               816, nullptr },
+  { "a42",                               831, nullptr },
+  { "a43",                               923, nullptr },
+  { "a44",                               744, nullptr },
+  { "a45",                               723, nullptr },
+  { "a46",                               749, nullptr },
+  { "a47",                               790, nullptr },
+  { "a48",                               792, nullptr },
+  { "a49",                               695, nullptr },
+  { "a100",                              668, nullptr },
+  { "a101",                              732, nullptr },
+  { "a102",                              544, nullptr },
+  { "a103",                              544, nullptr },
+  { "a104",                              910, nullptr },
+  { "a105",                              911, nullptr },
+  { "a106",                              667, nullptr },
+  { "a107",                              760, nullptr },
+  { "a108",                              760, nullptr },
+  { "a109",                              626, nullptr },
+  { "a50",                               776, nullptr },
+  { "a51",                               768, nullptr },
+  { "a52",                               792, nullptr },
+  { "a53",                               759, nullptr },
+  { "a54",                               707, nullptr },
+  { "a55",                               708, nullptr },
+  { "a56",                               682, nullptr },
+  { "a57",                               701, nullptr },
+  { "a58",                               826, nullptr },
+  { "a59",                               815, nullptr },
+  { "a110",                              694, nullptr },
+  { "a111",                              595, nullptr },
+  { "a112",                              776, nullptr },
+  { "a117",                              690, nullptr },
+  { "a118",                              791, nullptr },
+  { "a119",                              790, nullptr },
+  { "a60",                               789, nullptr },
+  { "a61",                               789, nullptr },
+  { "a62",                               707, nullptr },
+  { "a63",                               687, nullptr },
+  { "a64",                               696, nullptr },
+  { "a65",                               689, nullptr },
+  { "a66",                               786, nullptr },
+  { "a67",                               787, nullptr },
+  { "a68",                               713, nullptr },
+  { "a69",                               791, nullptr },
+  { "a200",                              696, nullptr },
+  { "a201",                              874, nullptr },
+  { "a120",                              788, nullptr },
+  { "a121",                              788, nullptr },
+  { "a202",                              974, nullptr },
+  { "a122",                              788, nullptr },
+  { "a203",                              762, nullptr },
+  { "a123",                              788, nullptr },
+  { "a204",                              759, nullptr },
+  { "a124",                              788, nullptr },
+  { "a205",                              509, nullptr },
+  { "a125",                              788, nullptr },
+  { "a206",                              410, nullptr },
+  { "a126",                              788, nullptr },
+  { "a127",                              788, nullptr },
+  { "a128",                              788, nullptr },
+  { "a129",                              788, nullptr },
+  { "a70",                               785, nullptr },
+  { "a71",                               791, nullptr },
+  { "a72",                               873, nullptr },
+  { "a73",                               761, nullptr },
+  { "a74",                               762, nullptr },
+  { "a75",                               759, nullptr },
+  { "a76",                               892, nullptr },
+  { "a77",                               892, nullptr },
+  { "a78",                               788, nullptr },
+  { "a79",                               784, nullptr },
+  { "a130",                              788, nullptr },
+  { "a131",                              788, nullptr },
+  { "a132",                              788, nullptr },
+  { "a133",                              788, nullptr },
+  { "a134",                              788, nullptr },
+  { "a135",                              788, nullptr },
+  { "a136",                              788, nullptr },
+  { "a137",                              788, nullptr },
+  { "a138",                              788, nullptr },
+  { "a139",                              788, nullptr }
 };
 
 BuiltinFont builtinFonts[] = {
-  { "Courier",               standardEncoding,            629, -157, { -23, -250,  715,  805}, NULL },
-  { "Courier-Bold",          standardEncoding,            629, -157, {-113, -250,  749,  801}, NULL },
-  { "Courier-BoldOblique",   standardEncoding,            629, -157, { -57, -250,  869,  801}, NULL },
-  { "Courier-Oblique",       standardEncoding,            629, -157, { -27, -250,  849,  805}, NULL },
-  { "Helvetica",             standardEncoding,            718, -207, {-166, -225, 1000,  931}, NULL },
-  { "Helvetica-Bold",        standardEncoding,            718, -207, {-170, -228, 1003,  962}, NULL },
-  { "Helvetica-BoldOblique", standardEncoding,            718, -207, {-174, -228, 1114,  962}, NULL },
-  { "Helvetica-Oblique",     standardEncoding,            718, -207, {-170, -225, 1116,  931}, NULL },
-  { "Symbol",                symbolEncoding,             1010, -293, {-180, -293, 1090, 1010}, NULL },
-  { "Times-Bold",            standardEncoding,            683, -217, {-168, -218, 1000,  935}, NULL },
-  { "Times-BoldItalic",      standardEncoding,            683, -217, {-200, -218,  996,  921}, NULL },
-  { "Times-Italic",          standardEncoding,            683, -217, {-169, -217, 1010,  883}, NULL },
-  { "Times-Roman",           standardEncoding,            683, -217, {-168, -218, 1000,  898}, NULL },
-  { "ZapfDingbats",          zapfDingbatsEncoding,        820, -143, {  -1, -143,  981,  820}, NULL }
+  { "Courier",               standardEncoding,            629, -157, { -23, -250,  715,  805}, nullptr },
+  { "Courier-Bold",          standardEncoding,            629, -157, {-113, -250,  749,  801}, nullptr },
+  { "Courier-BoldOblique",   standardEncoding,            629, -157, { -57, -250,  869,  801}, nullptr },
+  { "Courier-Oblique",       standardEncoding,            629, -157, { -27, -250,  849,  805}, nullptr },
+  { "Helvetica",             standardEncoding,            718, -207, {-166, -225, 1000,  931}, nullptr },
+  { "Helvetica-Bold",        standardEncoding,            718, -207, {-170, -228, 1003,  962}, nullptr },
+  { "Helvetica-BoldOblique", standardEncoding,            718, -207, {-174, -228, 1114,  962}, nullptr },
+  { "Helvetica-Oblique",     standardEncoding,            718, -207, {-170, -225, 1116,  931}, nullptr },
+  { "Symbol",                symbolEncoding,             1010, -293, {-180, -293, 1090, 1010}, nullptr },
+  { "Times-Bold",            standardEncoding,            683, -217, {-168, -218, 1000,  935}, nullptr },
+  { "Times-BoldItalic",      standardEncoding,            683, -217, {-200, -218,  996,  921}, nullptr },
+  { "Times-Italic",          standardEncoding,            683, -217, {-169, -217, 1010,  883}, nullptr },
+  { "Times-Roman",           standardEncoding,            683, -217, {-168, -218, 1000,  898}, nullptr },
+  { "ZapfDingbats",          zapfDingbatsEncoding,        820, -143, {  -1, -143,  981,  820}, nullptr }
 };
 
 BuiltinFont *builtinFontSubst[] = {

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/CMap.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/CMap.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/CMap.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -77,12 +77,12 @@
     }
     delete cMapNameA;
   } else if (obj->isStream()) {
-    if (!(cMap = CMap::parse(NULL, collectionA, obj->getStream()))) {
+    if (!(cMap = CMap::parse(nullptr, collectionA, obj->getStream()))) {
       error(errSyntaxError, -1, "Invalid CMap in Type 0 font");
     }
   } else {
     error(errSyntaxError, -1, "Invalid Encoding in Type 0 font");
-    return NULL;
+    return nullptr;
   }
   return cMap;
 }
@@ -105,7 +105,7 @@
     error(errSyntaxError, -1,
 	  "Couldn't find '{0:t}' CMap file for '{1:t}' collection",
 	  cMapNameA, collectionA);
-    return NULL;
+    return nullptr;
   }
 
   cMap = new CMap(collectionA->copy(), cMapNameA->copy());
@@ -117,7 +117,7 @@
 }
 
 CMap *CMap::parse(CMapCache *cache, GooString *collectionA, Stream *str) {
-  CMap *cMap = new CMap(collectionA->copy(), NULL);
+  CMap *cMap = new CMap(collectionA->copy(), nullptr);
   Object obj1 = str->getDict()->lookup("UseCMap");
   if (!obj1.isNull()) {
     cMap->useCMap(cache, &obj1);
@@ -131,7 +131,7 @@
 
 CMap *CMap::parse(CMapCache *cache, GooString *collectionA,
 		  GooString *cMapNameA, Stream *stream) {
-  FILE *f = NULL;
+  FILE *f = nullptr;
   CMap *cmap;
   PSTokenizer *pst;
   char tok1[256], tok2[256], tok3[256];
@@ -154,7 +154,7 @@
 
       error(errSyntaxError, -1, "Couldn't find '{0:t}' CMap file for '{1:t}' collection",
 	    cMapNameA, collectionA);
-      return NULL;
+      return nullptr;
     }
     pst = new PSTokenizer(&getCharFromFile, f);
   }
@@ -323,7 +323,7 @@
   cMapName = cMapNameA;
   isIdent = gTrue;
   wMode = wModeA;
-  vector = NULL;
+  vector = nullptr;
   refCnt = 1;
 #ifdef MULTITHREADED
   gInitMutex(&mutex);
@@ -340,7 +340,7 @@
   // GlobalParams::getCMap() in order to acqure the lock need to use
   // GlobalParams::getCMap
   if (cache) {
-    subCMap = cache->getCMap(collection, useNameStr, NULL);
+    subCMap = cache->getCMap(collection, useNameStr, nullptr);
   } else {
     subCMap = globalParams->getCMap(collection, useNameStr);
   }
@@ -511,7 +511,7 @@
  Guint *rmap, Guint rmapSize, Guint ncand) {
   int i;
 
-  if (vec == 0) return;
+  if (vec == nullptr) return;
   for (i = 0;i < 256;i++) {
     if (vec[i].isVector) {
       setReverseMapVector((startCode+i) << 8,
@@ -547,7 +547,7 @@
   int i;
 
   for (i = 0; i < cMapCacheSize; ++i) {
-    cache[i] = NULL;
+    cache[i] = nullptr;
   }
 }
 
@@ -591,5 +591,5 @@
     cmap->incRefCnt();
     return cmap;
   }
-  return NULL;
+  return nullptr;
 }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/CMap.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/CMap.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/CMap.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -14,7 +14,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2008 Koji Otani <sho at bbr.jp>
-// Copyright (C) 2009 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2009, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2012, 2017 Adrian Johnson <ajohnson at redneon.com>
 //
 // To see a description of the changes please see the Changelog file that
@@ -71,6 +71,9 @@
 
   ~CMap();
 
+  CMap(const CMap &) = delete;
+  CMap& operator=(const CMap &) = delete;
+
   void incRefCnt();
   void decRefCnt();
 
@@ -129,6 +132,9 @@
   CMapCache();
   ~CMapCache();
 
+  CMapCache(const CMapCache &) = delete;
+  CMapCache& operator=(const CMapCache &) = delete;
+
   // Get the <cMapName> CMap for the specified character collection.
   // Increments its reference count; there will be one reference for
   // the cache plus one for the caller of this function.

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/CachedFile.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/CachedFile.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/CachedFile.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -6,7 +6,7 @@
 //
 // Copyright 2009 Stefan Thomas <thomas at eload24.com>
 // Copyright 2010, 2011 Hib Eris <hib at hiberis.nl>
-// Copyright 2010 Albert Astals Cid <aacid at kde.org>
+// Copyright 2010, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2013 Julien Nabet <serval2412 at yahoo.fr>
 //
 //========================================================================
@@ -172,12 +172,12 @@
   return bytes;
 }
 
-int CachedFile::cache(size_t offset, size_t length)
+int CachedFile::cache(size_t rangeOffset, size_t rangeLength)
 {
   std::vector<ByteRange> r;
   ByteRange range;
-  range.offset = offset;
-  range.length = length;
+  range.offset = rangeOffset;
+  range.length = rangeLength;
   r.push_back(range);
   return cache(r);
 }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/CachedFile.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/CachedFile.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/CachedFile.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -8,7 +8,7 @@
 //
 // Copyright 2009 Stefan Thomas <thomas at eload24.com>
 // Copyright 2010 Hib Eris <hib at hiberis.nl>
-// Copyright 2010 Albert Astals Cid <aacid at kde.org>
+// Copyright 2010, 2018 Albert Astals Cid <aacid at kde.org>
 //
 //========================================================================
 
@@ -47,6 +47,9 @@
 
   CachedFile(CachedFileLoader *cacheLoader, GooString *uri);
 
+  CachedFile(const CachedFile &) = delete;
+  CachedFile& operator=(const CachedFile &) = delete;
+
   Guint getLength() { return length; }
   long int tell();
   int seek(long int offset, int origin);
@@ -127,8 +130,12 @@
 
 public:
 
+  CachedFileLoader() = default;
   virtual ~CachedFileLoader() {};
 
+  CachedFileLoader(const CachedFileLoader &) = delete;
+  CachedFileLoader& operator=(const CachedFileLoader &) = delete;
+
   // Initializes the file load.
   // Returns the length of the file.
   // The caller is responsible for deleting uri and cachedFile.

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -17,7 +17,7 @@
 // Copyright (C) 2005-2007 Jeff Muizelaar <jeff at infidigm.net>
 // Copyright (C) 2005, 2006 Kristian Høgsberg <krh at redhat.com>
 // Copyright (C) 2005 Martin Kretzschmar <martink at gnome.org>
-// Copyright (C) 2005, 2009, 2012, 2013, 2015, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2009, 2012, 2013, 2015, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2006, 2007, 2010, 2011 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2007 Koji Otani <sho at bbr.jp>
 // Copyright (C) 2008, 2009 Chris Wilson <chris at chris-wilson.co.uk>
@@ -70,17 +70,17 @@
 // CairoFont
 //------------------------------------------------------------------------
 
-CairoFont::CairoFont(Ref ref,
-		     cairo_font_face_t *cairo_font_face,
-		     int *codeToGID,
-		     Guint codeToGIDLen,
-		     GBool substitute,
-		     GBool printing) : ref(ref),
-				       cairo_font_face(cairo_font_face),
-				       codeToGID(codeToGID),
-				       codeToGIDLen(codeToGIDLen),
-				       substitute(substitute),
-				       printing(printing)      { }
+CairoFont::CairoFont(Ref refA,
+		     cairo_font_face_t *cairo_font_faceA,
+		     int *codeToGIDA,
+		     Guint codeToGIDLenA,
+		     GBool substituteA,
+		     GBool printingA) : ref(refA),
+				       cairo_font_face(cairo_font_faceA),
+				       codeToGID(codeToGIDA),
+				       codeToGIDLen(codeToGIDLenA),
+				       substitute(substituteA),
+				       printing(printingA)      { }
 
 CairoFont::~CairoFont() {
   cairo_font_face_destroy (cairo_font_face);
@@ -181,7 +181,7 @@
   FT_Face face;
   cairo_font_face_t *font_face;
 
-  if (font_data == NULL) {
+  if (font_data == nullptr) {
     if (FT_New_Face (lib, filename, 0, &face))
       return gFalse;
   } else {
@@ -287,7 +287,7 @@
 
   tmpl.fd = -1;
 
-  if (font_data == NULL) {
+  if (font_data == nullptr) {
     /* if we fail to mmap the file, just pass it to FreeType instead */
     tmpl.fd = open (filename, O_RDONLY);
     if (tmpl.fd == -1)
@@ -298,7 +298,7 @@
       return _ft_new_face_uncached (lib, filename, font_data, font_data_len, face_out, font_face_out);
     }
 
-    tmpl.bytes = (unsigned char *) mmap (NULL, st.st_size,
+    tmpl.bytes = (unsigned char *) mmap (nullptr, st.st_size,
 					 PROT_READ, MAP_PRIVATE,
 					 tmpl.fd, 0);
     if (tmpl.bytes == MAP_FAILED) {
@@ -352,7 +352,7 @@
 
   l = (struct _ft_face_data *) gmallocn (1, sizeof (struct _ft_face_data));
   *l = tmpl;
-  l->prev = NULL;
+  l->prev = nullptr;
   l->next = _ft_open_faces;
   if (_ft_open_faces)
     _ft_open_faces->prev = l;
@@ -379,15 +379,15 @@
 #define _ft_new_face _ft_new_face_uncached
 #endif
 
-CairoFreeTypeFont::CairoFreeTypeFont(Ref ref,
-				     cairo_font_face_t *cairo_font_face,
-				     int *codeToGID,
-				     Guint codeToGIDLen,
-				     GBool substitute) : CairoFont(ref,
-								   cairo_font_face,
-								   codeToGID,
-								   codeToGIDLen,
-								   substitute,
+CairoFreeTypeFont::CairoFreeTypeFont(Ref refA,
+				     cairo_font_face_t *cairo_font_faceA,
+				     int *codeToGIDA,
+				     Guint codeToGIDLenA,
+				     GBool substituteA) : CairoFont(refA,
+								   cairo_font_faceA,
+								   codeToGIDA,
+								   codeToGIDLenA,
+								   substituteA,
 								   gTrue) { }
 
 CairoFreeTypeFont::~CairoFreeTypeFont() { }
@@ -394,7 +394,6 @@
 
 CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref,
 					     FT_Library lib, GBool useCIDs) {
-  Object refObj, strObj;
   GooString *fileName;
   char *fileNameC;
   char *font_data;
@@ -413,12 +412,12 @@
   int *codeToGID;
   Guint codeToGIDLen;
   
-  codeToGID = NULL;
+  codeToGID = nullptr;
   codeToGIDLen = 0;
-  font_data = NULL;
+  font_data = nullptr;
   font_data_len = 0;
-  fileName = NULL;
-  fileNameC = NULL;
+  fileName = nullptr;
+  fileNameC = nullptr;
 
   GBool substitute = gFalse;
   
@@ -425,7 +424,7 @@
   ref = *gfxFont->getID();
   fontType = gfxFont->getType();
 
-  if (!(fontLoc = gfxFont->locateFont(xref, NULL))) {
+  if (!(fontLoc = gfxFont->locateFont(xref, nullptr))) {
     error(errSyntaxError, -1, "Couldn't find a font for '{0:s}'",
     	gfxFont->getName() ? gfxFont->getName()->getCString()
 	                       : "(unnamed)");
@@ -435,7 +434,7 @@
   // embedded font
   if (fontLoc->locType == gfxFontLocEmbedded) {
     font_data = gfxFont->readEmbFontFile(xref, &font_data_len);
-    if (NULL == font_data)
+    if (nullptr == font_data)
       goto err2;
 
   // external font
@@ -445,7 +444,7 @@
     substitute = gTrue;
   }
 
-  if (fileName != NULL) {
+  if (fileName != nullptr) {
     fileNameC = fileName->getCString();
   }
 
@@ -482,7 +481,7 @@
     break;
   case fontCIDType2:
   case fontCIDType2OT:
-    codeToGID = NULL;
+    codeToGID = nullptr;
     n = 0;
     if (((GfxCIDFont *)gfxFont)->getCIDToGID()) {
       n = ((GfxCIDFont *)gfxFont)->getCIDToGIDLen();
@@ -492,7 +491,7 @@
 		n * sizeof(int));
       }
     } else {
-      if (font_data != NULL) {
+      if (font_data != nullptr) {
         ff = FoFiTrueType::make(font_data, font_data_len);
       } else {
         ff = FoFiTrueType::load(fileNameC);
@@ -506,7 +505,7 @@
     /* Fall through */
   case fontTrueType:
   case fontTrueTypeOT:
-    if (font_data != NULL) {
+    if (font_data != nullptr) {
       ff = FoFiTrueType::make(font_data, font_data_len);
     } else {
       ff = FoFiTrueType::load(fileNameC);
@@ -530,12 +529,12 @@
   case fontCIDType0:
   case fontCIDType0C:
 
-    codeToGID = NULL;
+    codeToGID = nullptr;
     codeToGIDLen = 0;
 
     if (!useCIDs)
     {
-      if (font_data != NULL) {
+      if (font_data != nullptr) {
         ff1c = FoFiType1C::make(font_data, font_data_len);
       } else {
         ff1c = FoFiType1C::load(fileNameC);
@@ -553,7 +552,7 @@
     break;
 
   case fontCIDType0COT:
-    codeToGID = NULL;
+    codeToGID = nullptr;
     n = 0;
     if (((GfxCIDFont *)gfxFont)->getCIDToGID()) {
       n = ((GfxCIDFont *)gfxFont)->getCIDToGIDLen();
@@ -567,7 +566,7 @@
 
     if (!codeToGID) {
       if (!useCIDs) {
-	if (font_data != NULL) {
+	if (font_data != nullptr) {
 	  ff = FoFiTrueType::make(font_data, font_data_len);
 	} else {
 	  ff = FoFiTrueType::load(fileNameC);
@@ -604,7 +603,7 @@
   gfree (codeToGID);
   gfree (font_data);
   fprintf (stderr, "some font thing failed\n");
-  return NULL;
+  return nullptr;
 }
 
 //------------------------------------------------------------------------
@@ -704,7 +703,7 @@
   box.y1 = mat[1];
   box.x2 = mat[2];
   box.y2 = mat[3];
-  gfx = new Gfx(info->doc, output_dev, resDict, &box, NULL);
+  gfx = new Gfx(info->doc, output_dev, resDict, &box, nullptr);
   output_dev->startDoc(info->doc, info->fontEngine);
   output_dev->startPage (1, gfx->getState(), gfx->getXRef());
   output_dev->setInType3Char(gTrue);
@@ -736,7 +735,6 @@
 CairoType3Font *CairoType3Font::create(GfxFont *gfxFont, PDFDoc *doc,
 				       CairoFontEngine *fontEngine,
 				       GBool printing, XRef *xref) {
-  Object refObj, strObj;
   type3_font_info_t *info;
   cairo_font_face_t *font_face;
   Ref ref;
@@ -779,18 +777,18 @@
   return new CairoType3Font(ref, doc, font_face, codeToGID, codeToGIDLen, printing, xref);
 }
 
-CairoType3Font::CairoType3Font(Ref ref,
-			       PDFDoc *doc,
-			       cairo_font_face_t *cairo_font_face,
-			       int *codeToGID,
-			       Guint codeToGIDLen,
-			       GBool printing, XRef *xref) : CairoFont(ref,
-							   cairo_font_face,
-							   codeToGID,
-							   codeToGIDLen,
+CairoType3Font::CairoType3Font(Ref refA,
+			       PDFDoc *docA,
+			       cairo_font_face_t *cairo_font_faceA,
+			       int *codeToGIDA,
+			       Guint codeToGIDLenA,
+			       GBool printingA, XRef *xref) : CairoFont(refA,
+							   cairo_font_faceA,
+							   codeToGIDA,
+							   codeToGIDLenA,
 							   gFalse,
-							   printing),
-						 doc(doc) { }
+							   printingA),
+						 doc(docA) { }
 
 CairoType3Font::~CairoType3Font() { }
 
@@ -809,7 +807,7 @@
 
   lib = libA;
   for (i = 0; i < cairoFontCacheSize; ++i) {
-    fontCache[i] = NULL;
+    fontCache[i] = nullptr;
   }
   
   FT_Int major, minor, patch;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -15,7 +15,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2005, 2006 Kristian Høgsberg <krh at redhat.com>
-// Copyright (C) 2005 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2006, 2007 Jeff Muizelaar <jeff at infidigm.net>
 // Copyright (C) 2006, 2010 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2008, 2017 Adrian Johnson <ajohnson at redneon.com>
@@ -51,6 +51,8 @@
 	    GBool substitute,
 	    GBool printing);
   virtual ~CairoFont();
+  CairoFont(const CairoFont &) = delete;
+  CairoFont& operator=(const CairoFont &other) = delete;
 
   virtual GBool matches(Ref &other, GBool printing);
   cairo_font_face_t *getFontFace(void);
@@ -114,6 +116,8 @@
   // Create a font engine.
   CairoFontEngine(FT_Library libA);
   ~CairoFontEngine();
+  CairoFontEngine(const CairoFontEngine &) = delete;
+  CairoFontEngine& operator=(const CairoFontEngine &other) = delete;
 
   CairoFont *getFont(GfxFont *gfxFont, PDFDoc *doc, GBool printing, XRef *xref);
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -16,9 +16,9 @@
 //
 // Copyright (C) 2005-2008 Jeff Muizelaar <jeff at infidigm.net>
 // Copyright (C) 2005, 2006 Kristian Høgsberg <krh at redhat.com>
-// Copyright (C) 2005, 2009, 2012, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2009, 2012, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2005 Nickolay V. Shmyrev <nshmyrev at yandex.ru>
-// Copyright (C) 2006-2011, 2013, 2014, 2017 Carlos Garcia Campos <carlosgc at gnome.org>
+// Copyright (C) 2006-2011, 2013, 2014, 2017, 2018 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2008 Carl Worth <cworth at cworth.org>
 // Copyright (C) 2008-2017 Adrian Johnson <ajohnson at redneon.com>
 // Copyright (C) 2008 Michael Vrable <mvrable at cs.ucsd.edu>
@@ -69,6 +69,11 @@
 
 // #define LOG_CAIRO
 
+// To limit memory usage and improve performance when printing, limit
+// cairo images to this size. 8192 is sufficient for an A2 sized
+// 300ppi image.
+#define MAX_PRINT_IMAGE_SIZE 8192
+
 #ifdef LOG_CAIRO
 #define LOG(x) (x)
 #else
@@ -91,7 +96,7 @@
 //------------------------------------------------------------------------
 
 CairoImage::CairoImage (double x1, double y1, double x2, double y2) {
-  this->image = NULL;
+  this->image = nullptr;
   this->x1 = x1;
   this->y1 = y1;
   this->x2 = x2;
@@ -123,7 +128,7 @@
 GBool CairoOutputDev::ft_lib_initialized = gFalse;
 
 CairoOutputDev::CairoOutputDev() {
-  doc = NULL;
+  doc = nullptr;
 
   if (!ft_lib_initialized) {
     FT_Init_FreeType(&ft_lib);
@@ -130,19 +135,19 @@
     ft_lib_initialized = gTrue;
   }
 
-  fontEngine = NULL;
+  fontEngine = nullptr;
   fontEngine_owner = gFalse;
-  glyphs = NULL;
-  fill_pattern = NULL;
+  glyphs = nullptr;
+  fill_pattern = nullptr;
   fill_color.r = fill_color.g = fill_color.b = 0;
-  stroke_pattern = NULL;
+  stroke_pattern = nullptr;
   stroke_color.r = stroke_color.g = stroke_color.b = 0;
   stroke_opacity = 1.0;
   fill_opacity = 1.0;
-  textClipPath = NULL;
-  strokePathClip = NULL;
-  cairo = NULL;
-  currentFont = NULL;
+  textClipPath = nullptr;
+  strokePathClip = nullptr;
+  cairo = nullptr;
+  currentFont = nullptr;
 #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 14, 0)
   prescaleImages = gFalse;
 #else
@@ -156,16 +161,16 @@
   text_matrix_valid = gTrue;
   antialias = CAIRO_ANTIALIAS_DEFAULT;
 
-  groupColorSpaceStack = NULL;
-  maskStack = NULL;
-  group = NULL;
-  mask = NULL;
-  shape = NULL;
-  cairo_shape = NULL;
+  groupColorSpaceStack = nullptr;
+  maskStack = nullptr;
+  group = nullptr;
+  mask = nullptr;
+  shape = nullptr;
+  cairo_shape = nullptr;
   knockoutCount = 0;
 
-  text = NULL;
-  actualText = NULL;
+  text = nullptr;
+  actualText = nullptr;
 
   // the SA parameter supposedly defaults to false, but Acrobat
   // apparently hardwires it to true
@@ -172,7 +177,7 @@
   stroke_adjust = gTrue;
   align_stroke_coords = gFalse;
   adjusted_stroke_width = gFalse;
-  xref = NULL;
+  xref = nullptr;
 }
 
 CairoOutputDev::~CairoOutputDev() {
@@ -198,7 +203,7 @@
 
 void CairoOutputDev::setCairo(cairo_t *cairo)
 {
-  if (this->cairo != NULL) {
+  if (this->cairo != nullptr) {
     cairo_status_t status = cairo_status (this->cairo);
     if (status) {
       error(errInternal, -1, "cairo context error: {0:s}\n", cairo_status_to_string(status));
@@ -206,7 +211,7 @@
     cairo_destroy (this->cairo);
     assert(!cairo_shape);
   }
-  if (cairo != NULL) {
+  if (cairo != nullptr) {
     this->cairo = cairo_reference (cairo);
 	/* save the initial matrix so that we can use it for type3 fonts. */
 	//XXX: is this sufficient? could we miss changes to the matrix somehow?
@@ -213,8 +218,8 @@
 	cairo_get_matrix(cairo, &orig_matrix);
 	setContextAntialias(cairo, antialias);
   } else {
-    this->cairo = NULL;
-    this->cairo_shape = NULL;
+    this->cairo = nullptr;
+    this->cairo_shape = nullptr;
   }
 }
 
@@ -229,8 +234,8 @@
     this->text->incRefCnt();
     actualText = new ActualText(text);
   } else {
-    this->text = NULL;
-    actualText = NULL;
+    this->text = nullptr;
+    actualText = nullptr;
   }
 }
 
@@ -281,7 +286,7 @@
 
   if (text)
     text->startPage(state);
-  if (xrefA != NULL) {
+  if (xrefA != nullptr) {
     xref = xrefA;
   }
 }
@@ -340,7 +345,7 @@
     if (strokePathClip->dashes)
       gfree (strokePathClip->dashes);
     gfree (strokePathClip);
-    strokePathClip = NULL;
+    strokePathClip = nullptr;
   }
 }
 
@@ -950,11 +955,11 @@
   cairo_translate (cairo, -box.x1, -box.y1);
 
   strokePathTmp = strokePathClip;
-  strokePathClip = NULL;
+  strokePathClip = nullptr;
   adjusted_stroke_width_tmp = adjusted_stroke_width;
   maskTmp = mask;
-  mask = NULL;
-  gfx = new Gfx(doc, this, resDict, &box, NULL, NULL, NULL, gfxA->getXRef());
+  mask = nullptr;
+  gfx = new Gfx(doc, this, resDict, &box, nullptr, nullptr, nullptr, gfxA->getXRef());
   if (paintType == 2)
     inUncoloredPattern = gTrue;
   gfx->display(str);
@@ -1351,7 +1356,7 @@
     strokePathClip->dashes = (double*) gmallocn (sizeof(double), strokePathClip->dash_count);
     cairo_get_dash (cairo, strokePathClip->dashes, &strokePathClip->dash_offset);
   } else {
-    strokePathClip->dashes = NULL;
+    strokePathClip->dashes = nullptr;
   }
   strokePathClip->cap = cairo_get_line_cap (cairo);
   strokePathClip->join = cairo_get_line_join (cairo);
@@ -1503,12 +1508,12 @@
 
 finish:
   gfree (glyphs);
-  glyphs = NULL;
+  glyphs = nullptr;
   if (use_show_text_glyphs) {
     gfree (clusters);
-    clusters = NULL;
+    clusters = nullptr;
     gfree (utf8);
-    utf8 = NULL;
+    utf8 = nullptr;
   }
 }
 
@@ -1579,7 +1584,7 @@
       cairo_clip (cairo_shape);
     }
     cairo_path_destroy (textClipPath);
-    textClipPath = NULL;
+    textClipPath = nullptr;
   }
 }
 
@@ -1611,7 +1616,7 @@
 cairo_surface_t *cairo_surface_create_similar_clip (cairo_t *cairo, cairo_content_t content)
 {
   cairo_pattern_t *pattern;
-  cairo_surface_t *surface = NULL;
+  cairo_surface_t *surface = nullptr;
 
   cairo_push_group_with_content (cairo, content);
   pattern = cairo_pop_group (cairo);
@@ -1723,7 +1728,7 @@
       cairo_paint_with_alpha (cairo, fill_opacity);
     }
     cairo_pattern_destroy(mask);
-    mask = NULL;
+    mask = nullptr;
   }
 
   if (shape) {
@@ -1733,7 +1738,7 @@
       cairo_set_source_rgb (cairo_shape, 0, 0, 0);
     }
     cairo_pattern_destroy (shape);
-    shape = NULL;
+    shape = nullptr;
   }
 
   popTransparencyGroup();
@@ -1881,7 +1886,7 @@
       /* we don't need to track the shape anymore because
        * we are not above any knockout groups */
       cairo_destroy(cairo_shape);
-      cairo_shape = NULL;
+      cairo_shape = nullptr;
     }
   }
   groupColorSpaceStack = css->next;
@@ -1892,7 +1897,7 @@
 void CairoOutputDev::clearSoftMask(GfxState * /*state*/) {
   if (mask)
     cairo_pattern_destroy(mask);
-  mask = NULL;
+  mask = nullptr;
 }
 
 /* Taken from cairo/doc/tutorial/src/singular.c */
@@ -1965,7 +1970,7 @@
 				    GBool interpolate)
 {
   if (interpolate)
-    return CAIRO_FILTER_BEST;
+    return CAIRO_FILTER_GOOD;
 
   int orig_width = cairo_image_surface_get_width (image);
   int orig_height = cairo_image_surface_get_height (image);
@@ -1985,7 +1990,7 @@
   if (scaled_width / orig_width >= 4 || scaled_height / orig_height >= 4)
 	  return CAIRO_FILTER_NEAREST;
 
-  return CAIRO_FILTER_BEST;
+  return CAIRO_FILTER_GOOD;
 }
 
 void CairoOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
@@ -2453,7 +2458,7 @@
    * cairo doesn't yet do minifaction filtering causing scaled down
    * images with CAIRO_FILTER_NEAREST to look really bad */
   cairo_pattern_set_filter (pattern,
-			    interpolate ? CAIRO_FILTER_BEST : CAIRO_FILTER_FAST);
+			    interpolate ? CAIRO_FILTER_GOOD : CAIRO_FILTER_FAST);
 
   if (state->getFillColorSpace()->getMode() == csPattern) {
     cairo_matrix_init_translate (&matrix, 0, scaledHeight);
@@ -2761,7 +2766,7 @@
 
   cairo_surface_mark_dirty (image);
 
-  setMimeData(state, str, ref, colorMap, image);
+  setMimeData(state, str, ref, colorMap, image, height);
 
   pattern = cairo_pattern_create_for_surface (image);
   cairo_surface_destroy (image);
@@ -2915,7 +2920,7 @@
   if (!globalsStr->isStream())
     return gTrue;
 
-  if (setMimeIdFromRef(image, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, NULL,
+  if (setMimeIdFromRef(image, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, nullptr,
                        jb2Str->getGlobalsStreamRef()))
     return gFalse;
 
@@ -2935,8 +2940,38 @@
 }
 #endif
 
+#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 15, 10)
+GBool CairoOutputDev::setMimeDataForCCITTParams(Stream  *str,
+						cairo_surface_t *image, int height)
+{
+  CCITTFaxStream *ccittStr = static_cast<CCITTFaxStream *>(str);
+
+  GooString params;
+  params.appendf("Columns={0:d}", ccittStr->getColumns());
+  params.appendf(" Rows={0:d}", height);
+  params.appendf(" K={0:d}", ccittStr->getEncoding());
+  params.appendf(" EndOfLine={0:d}", ccittStr->getEndOfLine() ? 1 : 0);
+  params.appendf(" EncodedByteAlign={0:d}", ccittStr->getEncodedByteAlign() ? 1 : 0);
+  params.appendf(" EndOfBlock={0:d}", ccittStr->getEndOfBlock() ? 1 : 0);
+  params.appendf(" BlackIs1={0:d}", ccittStr->getBlackIs1() ? 1 : 0);
+  params.appendf(" DamagedRowsBeforeError={0:d}", ccittStr->getDamagedRowsBeforeError());
+
+  char *p = strdup(params.getCString());
+  if (cairo_surface_set_mime_data (image, CAIRO_MIME_TYPE_CCITT_FAX_PARAMS,
+                                   (const unsigned char*)p,
+                                   params.getLength(),
+                                   gfree, (void*)p))
+  {
+    gfree (p);
+    return gFalse;
+  }
+
+  return gTrue;
+}
+#endif
+
 void CairoOutputDev::setMimeData(GfxState *state, Stream *str, Object *ref,
-				 GfxImageColorMap *colorMap, cairo_surface_t *image)
+				 GfxImageColorMap *colorMap, cairo_surface_t *image, int height)
 {
   char *strBuffer;
   int len;
@@ -2960,12 +2995,17 @@
       mime_type = CAIRO_MIME_TYPE_JBIG2;
       break;
 #endif
+#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 15, 10)
+    case strCCITTFax:
+      mime_type = CAIRO_MIME_TYPE_CCITT_FAX;
+      break;
+#endif
     default:
       return;
   }
 
   obj = str->getDict()->lookup("ColorSpace");
-  colorSpace = GfxColorSpace::parse(NULL, &obj, this, state);
+  colorSpace = GfxColorSpace::parse(nullptr, &obj, this, state);
 
   // colorspace in stream dict may be different from colorspace in jpx
   // data
@@ -3002,6 +3042,11 @@
     return;
 #endif
 
+#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 15, 10)
+  if (strKind == strCCITTFax && !setMimeDataForCCITTParams(str, image, height))
+    return;
+#endif
+
   if (getStreamData (str->getNextStream(), &strBuffer, &len)) {
     cairo_status_t status = CAIRO_STATUS_SUCCESS;
 
@@ -3039,10 +3084,10 @@
                                   GBool printing,
                                   GfxImageColorMap *colorMapA,
                                   int *maskColorsA) {
-    cairo_surface_t *image = NULL;
+    cairo_surface_t *image = nullptr;
     int i;
 
-    lookup = NULL;
+    lookup = nullptr;
     colorMap = colorMapA;
     maskColors = maskColorsA;
     width = widthA;
@@ -3085,7 +3130,22 @@
     bool needsCustomDownscaling = true;
 #endif
 
-    if (!needsCustomDownscaling || printing || scaledWidth >= width || scaledHeight >= height) {
+    if (printing) {
+      if (width > MAX_PRINT_IMAGE_SIZE || height > MAX_PRINT_IMAGE_SIZE) {
+	if (width > height) {
+	  scaledWidth = MAX_PRINT_IMAGE_SIZE;
+	  scaledHeight = MAX_PRINT_IMAGE_SIZE * (double)height/width;
+	} else {
+	  scaledHeight = MAX_PRINT_IMAGE_SIZE;
+	  scaledWidth = MAX_PRINT_IMAGE_SIZE * (double)width/height;
+	}
+	needsCustomDownscaling = true;
+      } else {
+	needsCustomDownscaling = false;
+      }
+    }
+
+    if (!needsCustomDownscaling || scaledWidth >= width || scaledHeight >= height) {
       // No downscaling. Create cairo image containing the source image data.
       unsigned char *buffer;
       ptrdiff_t stride;
@@ -3133,7 +3193,6 @@
   }
 
   void getRow(int row_num, uint32_t *row_data) override {
-    int i;
     Guchar *pix;
 
     if (row_num <= current_row)
@@ -3144,7 +3203,7 @@
       current_row++;
     }
 
-    if (unlikely(pix == NULL)) {
+    if (unlikely(pix == nullptr)) {
       memset(row_data, 0, width*4);
       if (!imageError) {
 	error(errInternal, -1, "Bad image stream");
@@ -3154,7 +3213,7 @@
       Guchar *p = pix;
       GfxRGB rgb;
 
-      for (i = 0; i < width; i++) {
+      for (int i = 0; i < width; i++) {
         rgb = lookup[*p];
         row_data[i] =
           ((int) colToByte(rgb.r) << 16) |
@@ -3199,7 +3258,7 @@
   cairo_matrix_t matrix;
   int width, height;
   int scaledWidth, scaledHeight;
-  cairo_filter_t filter = CAIRO_FILTER_BEST;
+  cairo_filter_t filter = CAIRO_FILTER_GOOD;
   RescaleDrawImage rescale;
 
   LOG (printf ("drawImage %dx%d\n", widthA, heightA));
@@ -3215,8 +3274,17 @@
   if (width == widthA && height == heightA)
     filter = getFilterForSurface (image, interpolate);
 
-  if (!inlineImg) /* don't read stream twice if it is an inline image */
-    setMimeData(state, str, ref, colorMap, image);
+  if (!inlineImg) { /* don't read stream twice if it is an inline image */
+    // cairo 1.15.10 allows mime image data to have different size to cairo image
+    // mime image size will be scaled to same size as cairo image
+#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 15, 10)
+    bool requireSameSize = false;
+#else
+    bool requireSameSize = true;
+#endif
+    if (!requireSameSize || (width == widthA && height == heightA))
+      setMimeData(state, str, ref, colorMap, image, heightA);
+  }
 
   pattern = cairo_pattern_create_for_surface (image);
   cairo_surface_destroy (image);
@@ -3241,7 +3309,7 @@
   } else if (mask) {
     maskPattern = cairo_pattern_reference (mask);
   } else {
-    maskPattern = NULL;
+    maskPattern = nullptr;
   }
 
   cairo_save (cairo);
@@ -3286,11 +3354,11 @@
 
 CairoImageOutputDev::CairoImageOutputDev()
 {
-  images = NULL;
+  images = nullptr;
   numImages = 0;
   size = 0;
-  imgDrawCbk = NULL;
-  imgDrawCbkData = NULL;
+  imgDrawCbk = nullptr;
+  imgDrawCbkData = nullptr;
 }
 
 CairoImageOutputDev::~CairoImageOutputDev()
@@ -3363,7 +3431,7 @@
     CairoOutputDev::drawImageMask(state, ref, str, width, height, invert, interpolate, inlineImg);
     image->setImage (surface);
 
-    setCairo (NULL);
+    setCairo (nullptr);
     cairo_surface_destroy (surface);
     cairo_destroy (cr);
   }
@@ -3396,7 +3464,7 @@
     }
     image->setImage (surface);
 
-    setCairo (NULL);
+    setCairo (nullptr);
     cairo_surface_destroy (surface);
     cairo_destroy (cr);
   }
@@ -3426,7 +3494,7 @@
     CairoOutputDev::drawImage(state, ref, str, width, height, colorMap, interpolate, maskColors, inlineImg);
     image->setImage (surface);
     
-    setCairo (NULL);
+    setCairo (nullptr);
     cairo_surface_destroy (surface);
     cairo_destroy (cr);
   }
@@ -3462,7 +3530,7 @@
 					maskStr, maskWidth, maskHeight, maskColorMap, maskInterpolate);
     image->setImage (surface);
     
-    setCairo (NULL);
+    setCairo (nullptr);
     cairo_surface_destroy (surface);
     cairo_destroy (cr);
   }
@@ -3497,7 +3565,7 @@
 				    maskStr, maskWidth, maskHeight, maskInvert, maskInterpolate);
     image->setImage (surface);
     
-    setCairo (NULL);
+    setCairo (nullptr);
     cairo_surface_destroy (surface);
     cairo_destroy (cr);
   }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -18,11 +18,12 @@
 // Copyright (C) 2005, 2006 Kristian Høgsberg <krh at redhat.com>
 // Copyright (C) 2005 Nickolay V. Shmyrev <nshmyrev at yandex.ru>
 // Copyright (C) 2006-2011, 2013 Carlos Garcia Campos <carlosgc at gnome.org>
-// Copyright (C) 2008, 2009, 2011-2016 Adrian Johnson <ajohnson at redneon.com>
+// Copyright (C) 2008, 2009, 2011-2017 Adrian Johnson <ajohnson at redneon.com>
 // Copyright (C) 2008 Michael Vrable <mvrable at cs.ucsd.edu>
 // Copyright (C) 2010-2013 Thomas Freitag <Thomas.Freitag at alfa.de>
 // Copyright (C) 2015 Suzuki Toshiya <mpsuzuki at hiroshima-u.ac.jp>
 // Copyright (C) 2016 Jason Crain <jason at aquaticape.us>
+// Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -63,6 +64,9 @@
   // Destructor.
   ~CairoImage ();
 
+  CairoImage(const CairoImage &) = delete;
+  CairoImage& operator=(const CairoImage &) = delete;
+
   // Set the image cairo surface
   void setImage (cairo_surface_t *image);
   
@@ -265,10 +269,10 @@
   
   void setCairo (cairo_t *cr);
   void setTextPage (TextPage *text);
-  void setPrinting (GBool printing) { this->printing = printing; needFontUpdate = gTrue; }
+  void setPrinting (GBool printingA) { printing = printingA; needFontUpdate = gTrue; }
   void setAntialias(cairo_antialias_t antialias);
 
-  void setInType3Char(GBool inType3Char) { this->inType3Char = inType3Char; }
+  void setInType3Char(GBool inType3CharA) { inType3Char = inType3CharA; }
   void getType3GlyphWidth (double *wx, double *wy) { *wx = t3_glyph_wx; *wy = t3_glyph_wy; }
   GBool hasType3GlyphBBox () { return t3_glyph_has_bbox; }
   double *getType3GlyphBBox () { return t3_glyph_bbox; }
@@ -283,12 +287,15 @@
 				     GBool interpolate);
   GBool getStreamData (Stream *str, char **buffer, int *length);
   void setMimeData(GfxState *state, Stream *str, Object *ref,
-		   GfxImageColorMap *colorMap, cairo_surface_t *image);
+		   GfxImageColorMap *colorMap, cairo_surface_t *image, int height);
   void fillToStrokePathClip(GfxState *state);
   void alignStrokeCoords(GfxSubpath *subpath, int i, double *x, double *y);
 #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 14, 0)
   GBool setMimeDataForJBIG2Globals (Stream *str, cairo_surface_t *image);
 #endif
+#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 15, 10)
+  GBool setMimeDataForCCITTParams(Stream  *str, cairo_surface_t *image, int height);
+#endif
   static void setContextAntialias(cairo_t *cr, cairo_antialias_t antialias);
 
   GfxRGB fill_color, stroke_color;
@@ -328,7 +335,6 @@
   GBool printing;
   GBool use_show_text_glyphs;
   GBool text_matrix_valid;
-  cairo_surface_t *surface;
   cairo_glyph_t *glyphs;
   int glyphCount;
   cairo_text_cluster_t *clusters;
@@ -352,7 +358,6 @@
   cairo_pattern_t *shape;
   cairo_pattern_t *mask;
   cairo_matrix_t mask_matrix;
-  cairo_surface_t *cairo_shape_surface;
   cairo_t *cairo_shape;
   int knockoutCount;
   struct ColorSpaceStack {

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -271,9 +271,9 @@
   int dest_y;
   int src_y = 0;
   uint32_t *scanline;
-  int *x_coverage = NULL;
-  int *y_coverage = NULL;
-  uint32_t *temp_buf = NULL;
+  int *x_coverage = nullptr;
+  int *y_coverage = nullptr;
+  uint32_t *temp_buf = nullptr;
   GBool retval = gFalse;
   unsigned int *dest;
   int dst_stride;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -30,6 +30,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2012 Adrian Johnson <ajohnson at redneon.com>
+// Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -48,6 +49,9 @@
   CairoRescaleBox() {};
   virtual ~CairoRescaleBox() {};
 
+  CairoRescaleBox(const CairoRescaleBox &) = delete;
+  CairoRescaleBox& operator=(const CairoRescaleBox &) = delete;
+
   virtual GBool downScaleImage(unsigned orig_width, unsigned orig_height,
                                signed scaled_width, signed scaled_height,
                                unsigned short int start_column, unsigned short int start_row,

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Catalog.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Catalog.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Catalog.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -80,26 +80,26 @@
   ok = gTrue;
   doc = docA;
   xref = doc->getXRef();
-  pages = NULL;
-  pageRefs = NULL;
+  pages = nullptr;
+  pageRefs = nullptr;
   numPages = -1;
   pagesSize = 0;
-  baseURI = NULL;
-  pageLabelInfo = NULL;
-  form = NULL;
-  optContent = NULL;
+  baseURI = nullptr;
+  pageLabelInfo = nullptr;
+  form = nullptr;
+  optContent = nullptr;
   pageMode = pageModeNull;
   pageLayout = pageLayoutNull;
-  destNameTree = NULL;
-  embeddedFileNameTree = NULL;
-  jsNameTree = NULL;
-  viewerPrefs = NULL;
-  structTreeRoot = NULL;
+  destNameTree = nullptr;
+  embeddedFileNameTree = nullptr;
+  jsNameTree = nullptr;
+  viewerPrefs = nullptr;
+  structTreeRoot = nullptr;
 
-  pagesList = NULL;
-  pagesRefList = NULL;
-  attrsList = NULL;
-  kidsIdxList = NULL;
+  pagesList = nullptr;
+  pagesRefList = nullptr;
+  attrsList = nullptr;
+  kidsIdxList = nullptr;
   lastCachedPage = 0;
   markInfo = markInfoNull;
 
@@ -127,7 +127,7 @@
     optContent = new OCGs(&optContentProps, xref);
     if (!optContent->isOk ()) {
       delete optContent;
-      optContent = NULL;
+      optContent = nullptr;
     }
   }
 
@@ -202,13 +202,13 @@
 
 Page *Catalog::getPage(int i)
 {
-  if (i < 1) return NULL;
+  if (i < 1) return nullptr;
 
   catalogLocker();
   if (i > lastCachedPage) {
      GBool cached = cachePageTree(i);
      if ( cached == gFalse) {
-       return NULL;
+       return nullptr;
      }
   }
   return pages[i-1];
@@ -216,13 +216,13 @@
 
 Ref *Catalog::getPageRef(int i)
 {
-  if (i < 1) return NULL;
+  if (i < 1) return nullptr;
 
   catalogLocker();
   if (i > lastCachedPage) {
      GBool cached = cachePageTree(i);
      if ( cached == gFalse) {
-       return NULL;
+       return nullptr;
      }
   }
   return &pageRefs[i-1];
@@ -230,7 +230,7 @@
 
 GBool Catalog::cachePageTree(int page)
 {
-  if (pagesList == NULL) {
+  if (pagesList == nullptr) {
 
     Ref pagesRef;
 
@@ -262,19 +262,19 @@
     pagesSize = getNumPages();
     pages = (Page **)gmallocn_checkoverflow(pagesSize, sizeof(Page *));
     pageRefs = (Ref *)gmallocn_checkoverflow(pagesSize, sizeof(Ref));
-    if (pages == NULL || pageRefs == NULL ) {
+    if (pages == nullptr || pageRefs == nullptr ) {
       error(errSyntaxError, -1, "Cannot allocate page cache");
       pagesSize = 0;
       return gFalse;
     }
     for (int i = 0; i < pagesSize; ++i) {
-      pages[i] = NULL;
+      pages[i] = nullptr;
       pageRefs[i].num = -1;
       pageRefs[i].gen = -1;
     }
 
     attrsList = new std::vector<PageAttrs *>();
-    attrsList->push_back(new PageAttrs(NULL, obj.getDict()));
+    attrsList->push_back(new PageAttrs(nullptr, obj.getDict()));
     pagesList = new std::vector<Object>();
     pagesList->push_back(std::move(obj));
     pagesRefList = new std::vector<Ref>();
@@ -343,6 +343,7 @@
 
       if (lastCachedPage >= numPages) {
         error(errSyntaxError, -1, "Page count in top-level pages object is incorrect");
+        delete p;
         return gFalse;
       }
 
@@ -375,7 +376,7 @@
 
   for (i = 0; i < getNumPages(); ++i) {
     Ref *ref = getPageRef(i+1);
-    if (ref != NULL && ref->num == num && ref->gen == gen)
+    if (ref != nullptr && ref->num == num && ref->gen == gen)
       return i + 1;
   }
   return 0;
@@ -409,7 +410,7 @@
   }
   if (dest && !dest->isOk()) {
     delete dest;
-    dest = NULL;
+    dest = nullptr;
   }
 
   return dest;
@@ -432,7 +433,7 @@
 
   obj= getDests();
   if (!obj->isDict()) {
-    return NULL;
+    return nullptr;
   }
   return obj->dictGetKey(i);
 }
@@ -441,7 +442,7 @@
 {
   Object *obj = getDests();
   if (!obj->isDict()) {
-    return NULL;
+    return nullptr;
   }
   Object obj1 = obj->dictGetVal(i);
   return createLinkDest(&obj1);
@@ -461,10 +462,9 @@
 
 FileSpec *Catalog::embeddedFile(int i)
 {
-    Object efDict;
     catalogLocker();
     Object *obj = getEmbeddedFileNameTree()->getValue(i);
-    FileSpec *embeddedFile = 0;
+    FileSpec *embeddedFile = nullptr;
     if (obj->isRef()) {
       Object fsDict = obj->fetch(xref);
       embeddedFile = new FileSpec(&fsDict);
@@ -580,7 +580,7 @@
 {
   size = 0;
   length = 0;
-  entries = NULL;
+  entries = nullptr;
 }
 
 NameTree::~NameTree()
@@ -690,7 +690,7 @@
 
   entry = (Entry **) bsearch(name, entries,
 			     length, sizeof(Entry *), Entry::cmp);
-  if (entry != NULL) {
+  if (entry != nullptr) {
     return (*entry)->value.fetch(xref);
   } else {
     error(errSyntaxError, -1, "failed to look up ({0:s})", name->getCString());
@@ -712,7 +712,7 @@
     if (index < length) {
 	return &entries[index]->name;
     } else {
-	return NULL;
+	return nullptr;
     }
 }
 
@@ -721,7 +721,7 @@
   char *end;
 
   PageLabelInfo *pli = getPageLabelInfo();
-  if (pli != NULL) {
+  if (pli != nullptr) {
     if (!pli->labelToIndex(label, index))
       return gFalse;
   } else {
@@ -744,7 +744,7 @@
     return gFalse;
 
   PageLabelInfo *pli = getPageLabelInfo();
-  if (pli != NULL) {
+  if (pli != nullptr) {
     return pli->indexToLabel(index, label);
   } else {
     snprintf(buffer, sizeof (buffer), "%d", index + 1);
@@ -784,7 +784,7 @@
 	Dict *pageDict = pagesDict.getDict();
 	if (pageRootRef.isRef()) {
 	  const Ref pageRef = pageRootRef.getRef();
-	  Page *p = new Page(doc, 1, &pagesDict, pageRef, new PageAttrs(NULL, pageDict), form);
+	  Page *p = new Page(doc, 1, &pagesDict, pageRef, new PageAttrs(nullptr, pageDict), form);
 	  if (p->isOk()) {
 	    pages = (Page **)gmallocn(1, sizeof(Page *));
 	    pageRefs = (Ref *)gmallocn(1, sizeof(Ref));
@@ -853,7 +853,7 @@
     Object catalog = xref->getCatalog();
     if (!catalog.isDict()) {
       error(errSyntaxError, -1, "Catalog object is wrong type ({0:s})", catalog.getTypeName());
-      return NULL;
+      return nullptr;
     }
 
     Object root = catalog.dictLookup("StructTreeRoot");
@@ -1051,7 +1051,7 @@
                        type == actionSaveDocumentStart ?   "WS" :
                        type == actionSaveDocumentFinish ?  "DS" :
                        type == actionPrintDocumentStart ?  "WP" :
-                       type == actionPrintDocumentFinish ? "DP" : NULL);
+                       type == actionPrintDocumentFinish ? "DP" : nullptr);
 
     Object actionObject = additionalActionsObject.dictLookup(key);
     if (actionObject.isDict())

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Catalog.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Catalog.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Catalog.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -14,7 +14,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2005 Kristian Høgsberg <krh at redhat.com>
-// Copyright (C) 2005, 2007, 2009-2011, 2013, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2007, 2009-2011, 2013, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2005 Jonathan Blandford <jrb at redhat.com>
 // Copyright (C) 2005, 2006, 2008 Brad Hards <bradh at frogmouth.net>
 // Copyright (C) 2007 Julien Rebetez <julienr at svn.gnome.org>
@@ -68,6 +68,10 @@
 public:
   NameTree();
   ~NameTree();
+
+  NameTree(const NameTree &) = delete;
+  NameTree& operator=(const NameTree &) = delete;
+
   void init(XRef *xref, Object *tree);
   Object lookup(GooString *name);
   int numEntries() { return length; };
@@ -110,6 +114,9 @@
   // Destructor.
   ~Catalog();
 
+  Catalog(const Catalog &) = delete;
+  Catalog& operator=(const Catalog &) = delete;
+
   // Is catalog valid?
   GBool isOk() { return ok; }
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -137,7 +137,7 @@
   if (!(f = openFile(fileName->getCString(), "r"))) {
     error(errIO, -1, "Couldn't open cidToUnicode file '{0:t}'",
 	  fileName);
-    return NULL;
+    return nullptr;
   }
 
   size = 32768;
@@ -161,7 +161,7 @@
   fclose(f);
 
   ctu = new CharCodeToUnicode(collection->copy(), mapA, mapLenA, gTrue,
-			      NULL, 0, 0);
+			      nullptr, 0, 0);
   gfree(mapA);
   return ctu;
 }
@@ -185,7 +185,7 @@
     gfree(uBuf);
     error(errIO, -1, "Couldn't open unicodeToUnicode file '{0:t}'",
 	  fileName);
-    return NULL;
+    return nullptr;
   }
 
   size = 4096;
@@ -192,7 +192,7 @@
   mapA = (Unicode *)gmallocn(size, sizeof(Unicode));
   memset(mapA, 0, size * sizeof(Unicode));
   len = 0;
-  sMapA = NULL;
+  sMapA = nullptr;
   sMapSizeA = sMapLenA = 0;
 
   line = 0;
@@ -205,7 +205,7 @@
       continue;
     }
     n = 0;
-    while ((tok = strtok_r(NULL, " \t\r\n", &tokptr))) {
+    while ((tok = strtok_r(nullptr, " \t\r\n", &tokptr))) {
       if (n >= uBufSize)
       {
         uBufSize += 8;
@@ -262,7 +262,7 @@
 }
 
 CharCodeToUnicode *CharCodeToUnicode::make8BitToUnicode(Unicode *toUnicode) {
-  return new CharCodeToUnicode(NULL, toUnicode, 256, gTrue, NULL, 0, 0);
+  return new CharCodeToUnicode(nullptr, toUnicode, 256, gTrue, nullptr, 0, 0);
 }
 
 CharCodeToUnicode *CharCodeToUnicode::parseCMap(GooString *buf, int nBits) {
@@ -269,7 +269,7 @@
   CharCodeToUnicode *ctu;
   char *p;
 
-  ctu = new CharCodeToUnicode(NULL);
+  ctu = new CharCodeToUnicode(nullptr);
   p = buf->getCString();
   ctu->parseCMap1(&getCharFromString, &p, nBits);
   return ctu;
@@ -280,7 +280,7 @@
   CharCodeToUnicode *ctu;
   FILE *f;
 
-  ctu = new CharCodeToUnicode(NULL);
+  ctu = new CharCodeToUnicode(nullptr);
   if ((f = globalParams->findToUnicodeFile(fileName))) {
     ctu->parseCMap1(&getCharFromFile, f, nBits);
     fclose(f);
@@ -479,10 +479,10 @@
 }
 
 CharCodeToUnicode::CharCodeToUnicode() {
-  tag = NULL;
-  map = NULL;
+  tag = nullptr;
+  map = nullptr;
   mapLen = 0;
-  sMap = NULL;
+  sMap = nullptr;
   sMapLen = sMapSize = 0;
   refCnt = 1;
   isIdentity = gFalse;
@@ -500,7 +500,7 @@
   for (i = 0; i < mapLen; ++i) {
     map[i] = 0;
   }
-  sMap = NULL;
+  sMap = nullptr;
   sMapLen = sMapSize = 0;
   refCnt = 1;
   isIdentity = gFalse;
@@ -681,7 +681,7 @@
   size = sizeA;
   cache = (CharCodeToUnicode **)gmallocn(size, sizeof(CharCodeToUnicode *));
   for (i = 0; i < size; ++i) {
-    cache[i] = NULL;
+    cache[i] = nullptr;
   }
 }
 
@@ -715,7 +715,7 @@
       return ctu;
     }
   }
-  return NULL;
+  return nullptr;
 }
 
 void CharCodeToUnicodeCache::add(CharCodeToUnicode *ctu) {

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -17,7 +17,7 @@
 //
 // Copyright (C) 2007 Julien Rebetez <julienr at svn.gnome.org>
 // Copyright (C) 2007 Koji Otani <sho at bbr.jp>
-// Copyright (C) 2008, 2011, 2012 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2008, 2011, 2012, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2017 Adrian Johnson <ajohnson at redneon.com>
 //
 // To see a description of the changes please see the Changelog file that
@@ -78,6 +78,9 @@
 
   ~CharCodeToUnicode();
 
+  CharCodeToUnicode(const CharCodeToUnicode &) = delete;
+  CharCodeToUnicode& operator=(const CharCodeToUnicode &) = delete;
+
   void incRefCnt();
   void decRefCnt();
 
@@ -130,6 +133,9 @@
   CharCodeToUnicodeCache(int sizeA);
   ~CharCodeToUnicodeCache();
 
+  CharCodeToUnicodeCache(const CharCodeToUnicodeCache &) = delete;
+  CharCodeToUnicodeCache& operator=(const CharCodeToUnicodeCache &) = delete;
+
   // Get the CharCodeToUnicode object for <tag>.  Increments its
   // reference count; there will be one reference for the cache plus
   // one for the caller of this function.  Returns NULL on failure.

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/CurlCachedFile.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/CurlCachedFile.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/CurlCachedFile.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -20,9 +20,9 @@
 
 CurlCachedFileLoader::CurlCachedFileLoader()
 {
-  url = NULL;
-  cachedFile = NULL;
-  curl = NULL;
+  url = nullptr;
+  cachedFile = nullptr;
+  curl = nullptr;
 }
 
 CurlCachedFileLoader::~CurlCachedFileLoader() {

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -64,7 +64,7 @@
 DCTStream::DCTStream(Stream *strA, int colorXformA, Dict *dict, int recursion) :
   FilterStream(strA) {
   colorXform = colorXformA;
-  if (dict != NULL) {
+  if (dict != nullptr) {
     Object obj = dict->lookup("Width", recursion);
     err.width = (obj.isInt() && obj.getInt() <= JPEG_MAX_DIMENSION) ? obj.getInt() : 0;
     obj = dict->lookup("Height", recursion);
@@ -100,11 +100,11 @@
   src.pub.resync_to_restart = jpeg_resync_to_restart;
   src.pub.term_source = str_term_source;
   src.pub.bytes_in_buffer = 0;
-  src.pub.next_input_byte = NULL;
+  src.pub.next_input_byte = nullptr;
   src.str = str;
   src.index = 0;
-  current = NULL;
-  limit = NULL;
+  current = nullptr;
+  limit = nullptr;
   
   cinfo.err = &err.pub;
   if (!setjmp(err.setjmp_buffer)) {
@@ -111,7 +111,7 @@
     jpeg_create_decompress(&cinfo);
     cinfo.src = (jpeg_source_mgr *)&src;
   }
-  row_buffer = NULL;
+  row_buffer = nullptr;
 }
 
 void DCTStream::reset() {
@@ -241,7 +241,7 @@
 }
 
 int DCTStream::lookChar() {
-  if (unlikely(current == NULL)) {
+  if (unlikely(current == nullptr)) {
     return EOF;
   }
   return *current;
@@ -251,10 +251,10 @@
   GooString *s;
 
   if (psLevel < 2) {
-    return NULL;
+    return nullptr;
   }
   if (!(s = str->getPSFilter(psLevel, indent))) {
-    return NULL;
+    return nullptr;
   }
   s->append(indent)->append("<< >> /DCTDecode filter\n");
   return s;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/DateInfo.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/DateInfo.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/DateInfo.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -32,7 +32,7 @@
 /* See PDF Reference 1.3, Section 3.8.2 for PDF Date representation */
 GBool parseDateString(const char *dateString, int *year, int *month, int *day, int *hour, int *minute, int *second, char *tz, int *tzHour, int *tzMinute)
 {
-    if ( dateString == NULL ) return gFalse;
+    if ( dateString == nullptr ) return gFalse;
     if ( strlen(dateString) < 2 ) return gFalse;
 
     if ( dateString[0] == 'D' && dateString[1] == ':' )
@@ -82,7 +82,7 @@
   char s[5];
   struct tm *gt;
   size_t len;
-  time_t timep = timet ? *timet : time(NULL);
+  time_t timep = timet ? *timet : time(nullptr);
   struct tm t;
 
   gt = gmtime_r (&timep, &t);

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Decrypt.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Decrypt.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Decrypt.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -14,7 +14,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2008 Julien Rebetez <julien at fhtagn.net>
-// Copyright (C) 2008, 2010, 2016, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2008, 2010, 2016-2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2009 Matthias Franz <matthias at ktug.or.kr>
 // Copyright (C) 2009 David Benjamin <davidben at mit.edu>
 // Copyright (C) 2012 Fabio D'Urso <fabiodurso at hotmail.it>
@@ -143,7 +143,7 @@
       if(encRevision == 6) {
 	// test contains the initial SHA-256 hash input K.
 	// user key is not used in checking user password.
-	revision6Hash(userPassword, test, NULL);
+	revision6Hash(userPassword, test, nullptr);
       }
       if (!memcmp(test, userKey->getCString(), 32)) {
 
@@ -154,7 +154,7 @@
 	if(encRevision == 6) {
 	  //test contains the initial SHA-256 hash input K.
 	  //user key is not used in computing intermediate user key.
-	  revision6Hash(userPassword, test, NULL);
+	  revision6Hash(userPassword, test, nullptr);
 	}
 	aes256KeyExpansion(&state, test, 32, gTrue);
 	for (i = 0; i < 16; ++i) {
@@ -1454,7 +1454,7 @@
 // SHA-512 hash (see FIPS 180-4)
 //------------------------------------------------------------------------
 // SHA 384 and SHA 512 use the same sequence of eighty constant 64 bit words.
-static const uint64_t K[80] = {
+static const uint64_t shaK[80] = {
   0x428a2f98d728ae22ull, 0x7137449123ef65cdull, 0xb5c0fbcfec4d3b2full, 0xe9b5dba58189dbbcull, 0x3956c25bf348b538ull,
   0x59f111f1b605d019ull, 0x923f82a4af194f9bull, 0xab1c5ed5da6d8118ull, 0xd807aa98a3030242ull, 0x12835b0145706fbeull,
   0x243185be4ee4b28cull, 0x550c7dc3d5ffb4e2ull, 0x72be5d74f27b896full, 0x80deb1fe3b1696b1ull, 0x9bdc06a725c71235ull,
@@ -1531,7 +1531,7 @@
 
   // 3.
   for (t = 0; t < 80; ++t) {
-    T1 = h + sha512Sigma1(e) + sha512Ch(e,f,g) + K[t] + W[t];
+    T1 = h + sha512Sigma1(e) + sha512Ch(e,f,g) + shaK[t] + W[t];
     T2 = sha512Sigma0(a) + sha512Maj(a,b,c);
     h = g;
     g = f;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Dict.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Dict.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Dict.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -78,7 +78,7 @@
 
 Dict::Dict(XRef *xrefA) {
   xref = xrefA;
-  entries = NULL;
+  entries = nullptr;
   size = length = 0;
   ref = 1;
   sorted = gFalse;
@@ -185,11 +185,11 @@
         return &entries[i];
     }
   }
-  return NULL;
+  return nullptr;
 }
 
 GBool Dict::hasKey(const char *key) const {
-  return find(key) != NULL;
+  return find(key) != nullptr;
 }
 
 void Dict::remove(const char *key) {
@@ -270,7 +270,7 @@
 {
   GBool success = gFalse;
   Object obj1 = lookup ((char *) key);
-  if (obj1.isNull () && alt_key != NULL) {
+  if (obj1.isNull () && alt_key != nullptr) {
     obj1.free ();
     obj1 = lookup ((char *) alt_key);
   }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Dict.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Dict.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Dict.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -16,7 +16,7 @@
 // Copyright (C) 2005 Kristian Høgsberg <krh at redhat.com>
 // Copyright (C) 2006 Krzysztof Kowalczyk <kkowalczyk at gmail.com>
 // Copyright (C) 2007-2008 Julien Rebetez <julienr at svn.gnome.org>
-// Copyright (C) 2010, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2010, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2010 Paweł Wiejacha <pawel.wiejacha at gmail.com>
 // Copyright (C) 2013 Thomas Freitag <Thomas.Freitag at alfa.de>
 // Copyright (C) 2017 Adrian Johnson <ajohnson at redneon.com>
@@ -57,6 +57,9 @@
   // Destructor.
   ~Dict();
 
+  Dict(const Dict &) = delete;
+  Dict& operator=(const Dict &) = delete;
+
   // Get number of entries.
   int getLength() const { return length; }
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Error.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Error.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Error.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -50,8 +50,8 @@
 };
 
 static void (*errorCbk)(void *data, ErrorCategory category,
-			Goffset pos, char *msg) = NULL;
-static void *errorCbkData = NULL;
+			Goffset pos, char *msg) = nullptr;
+static void *errorCbkData = nullptr;
 
 void setErrorCallback(void (*cbk)(void *data, ErrorCategory category,
 				  Goffset pos, char *msg),

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/ErrorCodes.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/ErrorCodes.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/ErrorCodes.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -6,6 +6,20 @@
 //
 //========================================================================
 
+//========================================================================
+//
+// Modified under the Poppler project - http://poppler.freedesktop.org
+//
+// All changes made under the Poppler project to this file are licensed
+// under GPL version 2 or later
+//
+// Copyright (C) 2017 Albert Astals Cid <aacid at kde.org>
+//
+// To see a description of the changes please see the Changelog file that
+// came with your tarball or type make ChangeLog if you are building from git
+//
+//========================================================================
+
 #ifndef ERRORCODES_H
 #define ERRORCODES_H
 
@@ -33,4 +47,6 @@
 
 #define errFileIO          10   // file I/O error
 
+#define errFileChangedSinceOpen 11   // file has changed since opening and save can't be done
+
 #endif

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/FileSpec.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/FileSpec.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/FileSpec.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -30,10 +30,10 @@
 EmbFile::EmbFile(Object *efStream)
 {
   m_size = -1;
-  m_createDate = NULL;
-  m_modDate = NULL;
-  m_checksum = NULL;
-  m_mimetype = NULL;
+  m_createDate = nullptr;
+  m_modDate = nullptr;
+  m_checksum = nullptr;
+  m_mimetype = nullptr;
 
   m_objStr = efStream->copy();
 
@@ -102,10 +102,10 @@
 FileSpec::FileSpec(Object *fileSpecA)
 {
   ok = gTrue;
-  fileName = NULL;
-  platformFileName = NULL;
-  embFile = NULL;
-  desc = NULL;
+  fileName = nullptr;
+  platformFileName = nullptr;
+  embFile = nullptr;
+  desc = nullptr;
   fileSpec = fileSpecA->copy();
 
   Object obj1 = getFileSpecName(fileSpecA);
@@ -146,7 +146,7 @@
 EmbFile *FileSpec::getEmbeddedFile()
 {
   if(!ok)
-    return NULL;
+    return nullptr;
 
   if (embFile)
     return embFile;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/FileSpec.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/FileSpec.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/FileSpec.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -6,7 +6,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2008 Carlos Garcia Campos <carlosgc at gnome.org>
-// Copyright (C) 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2017, 2018 Albert Astals Cid <aacid at kde.org>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -27,6 +27,9 @@
   EmbFile(Object *efStream);
   ~EmbFile();
 
+  EmbFile(const EmbFile &) = delete;
+  EmbFile& operator=(const EmbFile &) = delete;
+
   int size() { return m_size; }
   GooString *modDate() { return m_modDate; }
   GooString *createDate() { return m_createDate; }
@@ -53,6 +56,9 @@
   FileSpec(Object *fileSpec);
   ~FileSpec();
 
+  FileSpec(const FileSpec &) = delete;
+  FileSpec& operator=(const FileSpec &) = delete;
+
   GBool isOk() { return ok; }
 
   GooString *getFileName() const { return fileName; }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/FontEncodingTables.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/FontEncodingTables.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/FontEncodingTables.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -11,38 +11,38 @@
 #include "FontEncodingTables.h"
 
 const char *macRomanEncoding[256] = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "space",
   "exclam",
   "quotedbl",
@@ -138,7 +138,7 @@
   "bar",
   "braceright",
   "asciitilde",
-  NULL,
+  nullptr,
   "Adieresis",
   "Aring",
   "Ccedilla",
@@ -270,38 +270,38 @@
 };
 
 const char *macExpertEncoding[256] = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "space",
   "exclamsmall",
   "Hungarumlautsmall",
@@ -330,17 +330,17 @@
   "nineoldstyle",
   "colon",
   "semicolon",
-  NULL,
+  nullptr,
   "threequartersemdash",
-  NULL,
+  nullptr,
   "questionsmall",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "Ethsmall",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "onequarter",
   "onehalf",
   "threequarters",
@@ -350,12 +350,12 @@
   "seveneighths",
   "onethird",
   "twothirds",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "ff",
   "fi",
   "fl",
@@ -362,7 +362,7 @@
   "ffi",
   "ffl",
   "parenleftinferior",
-  NULL,
+  nullptr,
   "parenrightinferior",
   "Circumflexsmall",
   "hypheninferior",
@@ -397,14 +397,14 @@
   "onefitted",
   "rupiah",
   "Tildesmall",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "asuperior",
   "centsuperior",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "Aacutesmall",
   "Agravesmall",
   "Acircumflexsmall",
@@ -430,7 +430,7 @@
   "Ugravesmall",
   "Ucircumflexsmall",
   "Udieresissmall",
-  NULL,
+  nullptr,
   "eightsuperior",
   "fourinferior",
   "threeinferior",
@@ -438,25 +438,25 @@
   "eightinferior",
   "seveninferior",
   "Scaronsmall",
-  NULL,
+  nullptr,
   "centinferior",
   "twoinferior",
-  NULL,
+  nullptr,
   "Dieresissmall",
-  NULL,
+  nullptr,
   "Caronsmall",
   "osuperior",
   "fiveinferior",
-  NULL,
+  nullptr,
   "commainferior",
   "periodinferior",
   "Yacutesmall",
-  NULL,
+  nullptr,
   "dollarinferior",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "Thornsmall",
-  NULL,
+  nullptr,
   "nineinferior",
   "zeroinferior",
   "Zcaronsmall",
@@ -465,29 +465,29 @@
   "questiondownsmall",
   "oneinferior",
   "Lslashsmall",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "Cedillasmall",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "OEsmall",
   "figuredash",
   "hyphensuperior",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "exclamdownsmall",
-  NULL,
+  nullptr,
   "Ydieresissmall",
-  NULL,
+  nullptr,
   "onesuperior",
   "twosuperior",
   "threesuperior",
@@ -497,20 +497,20 @@
   "sevensuperior",
   "ninesuperior",
   "zerosuperior",
-  NULL,
+  nullptr,
   "esuperior",
   "rsuperior",
   "tsuperior",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "isuperior",
   "ssuperior",
   "dsuperior",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "lsuperior",
   "Ogoneksmall",
   "Brevesmall",
@@ -522,45 +522,45 @@
   "periodsuperior",
   "Dotaccentsmall",
   "Ringsmall",
-  NULL,
-  NULL,
-  NULL,
-  NULL
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr
 };
 
 const char *winAnsiEncoding[256] = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "space",
   "exclam",
   "quotedbl",
@@ -788,38 +788,38 @@
 };
 
 const char *standardEncoding[256] = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "space",
   "exclam",
   "quotedbl",
@@ -915,40 +915,40 @@
   "bar",
   "braceright",
   "asciitilde",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "exclamdown",
   "cent",
   "sterling",
@@ -964,12 +964,12 @@
   "guilsinglright",
   "fi",
   "fl",
-  NULL,
+  nullptr,
   "endash",
   "dagger",
   "daggerdbl",
   "periodcentered",
-  NULL,
+  nullptr,
   "paragraph",
   "bullet",
   "quotesinglbase",
@@ -978,9 +978,9 @@
   "guillemotright",
   "ellipsis",
   "perthousand",
-  NULL,
+  nullptr,
   "questiondown",
-  NULL,
+  nullptr,
   "grave",
   "acute",
   "circumflex",
@@ -989,100 +989,100 @@
   "breve",
   "dotaccent",
   "dieresis",
-  NULL,
+  nullptr,
   "ring",
   "cedilla",
-  NULL,
+  nullptr,
   "hungarumlaut",
   "ogonek",
   "caron",
   "emdash",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "AE",
-  NULL,
+  nullptr,
   "ordfeminine",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "Lslash",
   "Oslash",
   "OE",
   "ordmasculine",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "ae",
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
   "dotlessi",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "lslash",
   "oslash",
   "oe",
   "germandbls",
-  NULL,
-  NULL,
-  NULL,
-  NULL
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr
 };
 
 const char *expertEncoding[256] = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "space",
   "exclamsmall",
   "Hungarumlautsmall",
-  NULL,
+  nullptr,
   "dollaroldstyle",
   "dollarsuperior",
   "ampersandsmall",
@@ -1111,28 +1111,28 @@
   "threequartersemdash",
   "periodsuperior",
   "questionsmall",
-  NULL,
+  nullptr,
   "asuperior",
   "bsuperior",
   "centsuperior",
   "dsuperior",
   "esuperior",
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
   "isuperior",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "lsuperior",
   "msuperior",
   "nsuperior",
   "osuperior",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "rsuperior",
   "ssuperior",
   "tsuperior",
-  NULL,
+  nullptr,
   "ff",
   "fi",
   "fl",
@@ -1139,7 +1139,7 @@
   "ffi",
   "ffl",
   "parenleftinferior",
-  NULL,
+  nullptr,
   "parenrightinferior",
   "Circumflexsmall",
   "hyphensuperior",
@@ -1174,67 +1174,67 @@
   "onefitted",
   "rupiah",
   "Tildesmall",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "exclamdownsmall",
   "centoldstyle",
   "Lslashsmall",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "Scaronsmall",
   "Zcaronsmall",
   "Dieresissmall",
   "Brevesmall",
   "Caronsmall",
-  NULL,
+  nullptr,
   "Dotaccentsmall",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "Macronsmall",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "figuredash",
   "hypheninferior",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "Ogoneksmall",
   "Ringsmall",
   "Cedillasmall",
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
   "onequarter",
   "onehalf",
   "threequarters",
@@ -1245,8 +1245,8 @@
   "seveneighths",
   "onethird",
   "twothirds",
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   "zerosuperior",
   "onesuperior",
   "twosuperior",
@@ -1306,38 +1306,38 @@
 };
 
 const char *symbolEncoding[256] = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "space",
   "exclam",
   "universal",
@@ -1433,40 +1433,40 @@
   "bar",
   "braceright",
   "similar",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "Upsilon1",
   "minute",
   "lessequal",
@@ -1546,7 +1546,7 @@
   "braceleftmid",
   "braceleftbt",
   "braceex",
-  NULL,
+  nullptr,
   "angleright",
   "integral",
   "integraltp",
@@ -1561,42 +1561,42 @@
   "bracerighttp",
   "bracerightmid",
   "bracerightbt",
-  NULL
+  nullptr
 };
 
 const char *zapfDingbatsEncoding[256] = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "space",
   "a1",
   "a2",
@@ -1692,40 +1692,40 @@
   "a98",
   "a99",
   "a100",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   "a101",
   "a102",
   "a103",
@@ -1805,7 +1805,7 @@
   "a181",
   "a200",
   "a182",
-  NULL,
+  nullptr,
   "a201",
   "a183",
   "a184",
@@ -1820,5 +1820,5 @@
   "a189",
   "a190",
   "a191",
-  NULL
+  nullptr
 };

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/FontInfo.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/FontInfo.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/FontInfo.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -3,7 +3,7 @@
 // FontInfo.cc
 //
 // Copyright (C) 2005, 2006 Kristian Høgsberg <krh at redhat.com>
-// Copyright (C) 2005-2008, 2010, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005-2008, 2010, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2005 Brad Hards <bradh at frogmouth.net>
 // Copyright (C) 2006 Kouhei Sutou <kou at cozmixng.org>
 // Copyright (C) 2009 Pino Toscano <pino at kde.org>
@@ -57,7 +57,7 @@
   int lastPage;
 
   if (currentPage > doc->getNumPages()) {
-    return NULL;
+    return nullptr;
   }
  
   result = new GooList();
@@ -92,21 +92,20 @@
 }
 
 void FontInfoScanner::scanFonts(XRef *xrefA, Dict *resDict, GooList *fontsList) {
-  Ref r;
   GfxFontDict *gfxFontDict;
   GfxFont *font;
 
   // scan the fonts in this resource dictionary
-  gfxFontDict = NULL;
+  gfxFontDict = nullptr;
   Object obj1 = resDict->lookupNF("Font");
   if (obj1.isRef()) {
     Object obj2 = obj1.fetch(xrefA);
     if (obj2.isDict()) {
-      r = obj1.getRef();
+      Ref r = obj1.getRef();
       gfxFontDict = new GfxFontDict(xrefA, &r, obj2.getDict());
     }
   } else if (obj1.isDict()) {
-    gfxFontDict = new GfxFontDict(xrefA, NULL, obj1.getDict());
+    gfxFontDict = new GfxFontDict(xrefA, nullptr, obj1.getDict());
   }
   if (gfxFontDict) {
     for (int i = 0; i < gfxFontDict->getNumFonts(); ++i) {
@@ -160,10 +159,10 @@
 
   // font name
   origName = font->getName();
-  if (origName != NULL) {
+  if (origName != nullptr) {
     name = font->getName()->copy();
   } else {
-    name = NULL;
+    name = nullptr;
   }
 
   // font type
@@ -176,8 +175,8 @@
     emb = font->getEmbeddedFontID(&embRef);
   }
 
-  file = NULL;
-  substituteName = NULL;
+  file = nullptr;
+  substituteName = nullptr;
   if (!emb)
   {
     SysFontType dummy;
@@ -211,10 +210,10 @@
 }
 
 FontInfo::FontInfo(FontInfo& f) {
-  name = f.name ? f.name->copy() : NULL;
-  file = f.file ? f.file->copy() : NULL;
-  encoding = f.encoding ? f.encoding->copy() : NULL;
-  substituteName = f.substituteName ? f.substituteName->copy() : NULL;
+  name = f.name ? f.name->copy() : nullptr;
+  file = f.file ? f.file->copy() : nullptr;
+  encoding = f.encoding ? f.encoding->copy() : nullptr;
+  substituteName = f.substituteName ? f.substituteName->copy() : nullptr;
   type = f.type;
   emb = f.emb;
   subset = f.subset;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/FontInfo.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/FontInfo.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/FontInfo.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -3,7 +3,7 @@
 // FontInfo.h
 //
 // Copyright (C) 2005 Kristian Høgsberg <krh at redhat.com>
-// Copyright (C) 2005-2008, 2010, 2011 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005-2008, 2010, 2011, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2005 Brad Hards <bradh at frogmouth.net>
 // Copyright (C) 2009 Pino Toscano <pino at kde.org>
 // Copyright (C) 2012 Adrian Johnson <ajohnson at redneon.com>
@@ -56,6 +56,8 @@
   // Destructor.
   ~FontInfo();
 
+  FontInfo& operator=(const FontInfo &) = delete;
+
   GooString *getName()      { return name; };
   GooString *getSubstituteName() { return substituteName; };
   GooString *getFile()      { return file; };

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Form.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Form.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Form.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -94,7 +94,7 @@
   obj = aobj->copy();
   type = formUndef;
   field = fieldA;
-  widget = NULL;
+  widget = nullptr;
 }
 
 FormWidget::~FormWidget()
@@ -168,11 +168,11 @@
 }
 
 LinkAction *FormWidget::getActivationAction() {
-  return widget ? widget->getAction() : NULL;
+  return widget ? widget->getAction() : nullptr;
 }
 
 LinkAction *FormWidget::getAdditionalAction(Annot::FormAdditionalActionsType type) {
-  return widget ? widget->getFormAdditionalAction(type) : NULL;
+  return widget ? widget->getFormAdditionalAction(type) : nullptr;
 }
 
 FormWidgetButton::FormWidgetButton (PDFDoc *docA, Object *aobj, unsigned num, Ref ref, FormField *p) :
@@ -179,7 +179,7 @@
 	FormWidget(docA, aobj, num, ref, p)
 {
   type = formButton;
-  onStr = NULL;
+  onStr = nullptr;
 
   // Find the name of the ON state in the AP dictionnary
   // The reference say the Off state, if it existe, _must_ be stored in the AP dict under the name /Off
@@ -205,7 +205,7 @@
 
   // 12.7.4.2.3 Check Boxes
   //  Yes should be used as the name for the on state
-  return parent()->getButtonType() == formButtonCheck ? (char *)"Yes" : NULL;
+  return parent()->getButtonType() == formButtonCheck ? (char *)"Yes" : nullptr;
 }
 
 FormWidgetButton::~FormWidgetButton ()
@@ -376,7 +376,7 @@
 {
   if (!hasEdit()) {
     error(errInternal, -1, "FormFieldChoice::getEditChoice called on a non-editable choice\n");
-    return NULL;
+    return nullptr;
   }
   return parent()->getEditChoice();
 }
@@ -618,12 +618,12 @@
   type = ty;
   parent = parentA;
   numChildren = 0;
-  children = NULL;
+  children = nullptr;
   terminal = false;
-  widgets = NULL;
+  widgets = nullptr;
   readOnly = false;
-  defaultAppearance = NULL;
-  fullyQualifiedName = NULL;
+  defaultAppearance = nullptr;
+  fullyQualifiedName = nullptr;
   quadding = quaddingLeftJustified;
   hasQuadding = gFalse;
 
@@ -715,7 +715,7 @@
   if (obj1.isString()) {
     partialName = obj1.getString()->copy();
   } else {
-    partialName = NULL;
+    partialName = nullptr;
   }
 
   obj1 = dict->lookup("TU");
@@ -722,7 +722,7 @@
   if (obj1.isString()) {
     alternateUiName = obj1.getString()->copy();
   } else {
-    alternateUiName = NULL;
+    alternateUiName = nullptr;
   }
 
   obj1 = dict->lookup("TM");
@@ -729,7 +729,7 @@
   if(obj1.isString()) {
     mappingName = obj1.getString()->copy();
   } else {
-    mappingName = NULL;
+    mappingName = nullptr;
   }
 }
 
@@ -841,7 +841,7 @@
       if(result) return result;
     }
   }
-  return NULL;
+  return nullptr;
 }
 
 GooString* FormField::getFullyQualifiedName() {
@@ -948,7 +948,7 @@
   Dict* dict = obj.getDict();
   active_child = -1;
   noAllOff = false;
-  siblings = NULL;
+  siblings = nullptr;
   numSiblings = 0;
   appearanceState.setToNull();
 
@@ -1011,7 +1011,7 @@
   if (!terminal) {
     for(int i=0; i<numChildren; i++) {
       FormFieldButton *child = dynamic_cast<FormFieldButton*>(children[i]);
-      if (child != NULL) {
+      if (child != nullptr) {
         // Fill the siblings of this node childs
         child->setNumSiblings(numChildren-1);
         for(int j=0, counter=0; j<numChildren; j++) {
@@ -1116,7 +1116,7 @@
 {
   Dict* dict = obj.getDict();
   Object obj1;
-  content = NULL;
+  content = nullptr;
   multiline = password = fileSelect = doNotSpellCheck = doNotScroll = comb = richText = false;
   maxLen = 0;
 
@@ -1169,7 +1169,7 @@
 
 GooString* FormFieldText::getContentCopy ()
 {
-  if (!content) return NULL;
+  if (!content) return nullptr;
   return new GooString(content);
 }
 
@@ -1176,7 +1176,7 @@
 void FormFieldText::setContentCopy (GooString* new_content)
 {
   delete content;
-  content = NULL;
+  content = nullptr;
 
   if (new_content) {
     content = new_content->copy();
@@ -1286,8 +1286,8 @@
   : FormField(docA, aobj, ref, parent, usedParents, formChoice)
 {
   numChoices = 0;
-  choices = NULL;
-  editedChoice = NULL;
+  choices = nullptr;
+  editedChoice = nullptr;
   topIdx = 0;
 
   Dict* dict = obj.getDict();
@@ -1433,7 +1433,7 @@
 #endif
 
 void FormFieldChoice::updateSelection() {
-  Object objV, obj1;
+  Object objV;
   Object objI(objNull);
 
   if (edit && editedChoice) {
@@ -1501,7 +1501,7 @@
 
 void FormFieldChoice::deselectAll () {
   delete editedChoice;
-  editedChoice = NULL;
+  editedChoice = nullptr;
 
   unselectAll();
   updateSelection();
@@ -1510,7 +1510,7 @@
 void FormFieldChoice::toggle (int i)
 {
   delete editedChoice;
-  editedChoice = NULL;
+  editedChoice = nullptr;
 
   choices[i].selected = !choices[i].selected;
   updateSelection();
@@ -1519,7 +1519,7 @@
 void FormFieldChoice::select (int i)
 {
   delete editedChoice;
-  editedChoice = NULL;
+  editedChoice = nullptr;
 
   if (!multiselect)
     unselectAll();
@@ -1531,7 +1531,7 @@
 void FormFieldChoice::setEditChoice (GooString* new_content)
 {
   delete editedChoice;
-  editedChoice = NULL;
+  editedChoice = nullptr;
 
   unselectAll();
 
@@ -1570,7 +1570,7 @@
       return choices[i].optionName;
   }
 
-  return NULL;
+  return nullptr;
 }
 
 //------------------------------------------------------------------------
@@ -1581,7 +1581,7 @@
     signature_type(adbe_pkcs7_detached),
     signature(nullptr), signature_info(nullptr)
 {
-  signature = NULL;
+  signature = nullptr;
 
   signature_info = new SignatureInfo();
   parseInfo();
@@ -1677,7 +1677,7 @@
     return signature_info;
   }
 
-  if (signature == NULL) {
+  if (signature == nullptr) {
     error(errSyntaxError, 0, "Invalid or missing Signature string");
     return signature_info;
   }
@@ -1766,10 +1766,10 @@
   
   size = 0;
   numFields = 0;
-  rootFields = NULL;
+  rootFields = nullptr;
   quadding = quaddingLeftJustified;
-  defaultAppearance = NULL;
-  defaultResources = NULL;
+  defaultAppearance = nullptr;
+  defaultResources = nullptr;
 
   obj1 = acroForm->dictLookup("NeedAppearances");
   needAppearances = (obj1.isBool() && obj1.getBool());
@@ -1787,7 +1787,7 @@
     // At a minimum, this dictionary shall contain a Font entry
     obj1 = resDict.dictLookup("Font");
     if (obj1.isDict())
-      defaultResources = new GfxResources(xref, resDict.getDict(), NULL);
+      defaultResources = new GfxResources(xref, resDict.getDict(), nullptr);
   }
   if (!defaultResources) {
     resDict.setToNull();
@@ -1815,7 +1815,7 @@
       }
 
       std::set<int> usedParents;
-      rootFields[numFields++] = createFieldFromDict (&obj2, doc, oref.getRef(), NULL, &usedParents);
+      rootFields[numFields++] = createFieldFromDict (&obj2, doc, oref.getRef(), nullptr, &usedParents);
 
     }
   } else {
@@ -1918,7 +1918,7 @@
     FormWidget *result = rootFields[i]->findWidgetByRef(aref);
     if(result) return result;
   }
-  return NULL;
+  return nullptr;
 }
 
 //------------------------------------------------------------------------
@@ -1928,7 +1928,7 @@
 FormPageWidgets::FormPageWidgets (Annots *annots, unsigned int page, Form *form)
 {
   numWidgets = 0;
-  widgets = NULL;
+  widgets = nullptr;
 
   if (annots && annots->getNumAnnots() > 0 && form) {
     size = annots->getNumAnnots();

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Form.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Form.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Form.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -6,7 +6,7 @@
 //
 // Copyright 2006 Julien Rebetez <julienr at svn.gnome.org>
 // Copyright 2007, 2008, 2011 Carlos Garcia Campos <carlosgc at gnome.org>
-// Copyright 2007-2010, 2012, 2015-2017 Albert Astals Cid <aacid at kde.org>
+// Copyright 2007-2010, 2012, 2015-2018 Albert Astals Cid <aacid at kde.org>
 // Copyright 2010 Mark Riedesel <mark at klowner.com>
 // Copyright 2011 Pino Toscano <pino at kde.org>
 // Copyright 2012 Fabio D'Urso <fabiodurso at hotmail.it>
@@ -29,6 +29,8 @@
 #include "Object.h"
 #include "Annot.h"
 
+#include <time.h>
+
 #include <set>
 #include <vector>
 #include <ctime>
@@ -564,6 +566,9 @@
 
   ~Form();
 
+  Form(const Form &) = delete;
+  Form& operator=(const Form &) = delete;
+
   // Look up an inheritable field dictionary entry.
   static Object fieldLookup(Dict *field, const char *key);
   
@@ -612,6 +617,9 @@
   FormPageWidgets (Annots* annots, unsigned int page, Form *form);
   ~FormPageWidgets();
   
+  FormPageWidgets(const FormPageWidgets &) = delete;
+  FormPageWidgets& operator=(const FormPageWidgets &) = delete;
+
   int getNumWidgets() const { return numWidgets; }
   FormWidget* getWidget(int i) const { return widgets[i]; }
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Function.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Function.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Function.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -76,7 +76,7 @@
     return new IdentityFunction();
   } else {
     error(errSyntaxError, -1, "Expected function dictionary or stream");
-    return NULL;
+    return nullptr;
   }
 
   Object obj1 = dict->lookup("FunctionType");
@@ -96,11 +96,11 @@
     func = new PostScriptFunction(funcObj, dict);
   } else {
     error(errSyntaxError, -1, "Unimplemented function type ({0:d})", funcType);
-    return NULL;
+    return nullptr;
   }
   if (!func->isOk()) {
     delete func;
-    return NULL;
+    return nullptr;
   }
 
   return func;
@@ -222,9 +222,9 @@
   double in[funcMaxInputs];
   int i, j, t, bit, idx;
 
-  idxOffset = NULL;
-  samples = NULL;
-  sBuf = NULL;
+  idxOffset = nullptr;
+  samples = nullptr;
+  sBuf = nullptr;
   ok = gFalse;
 
   //----- initialize the generic stuff
@@ -651,10 +651,10 @@
   int i;
 
   ok = gFalse;
-  funcs = NULL;
-  bounds = NULL;
-  encode = NULL;
-  scale = NULL;
+  funcs = nullptr;
+  bounds = nullptr;
+  encode = nullptr;
+  scale = nullptr;
 
   //----- initialize the generic stuff
   if (!init(dict)) {
@@ -677,7 +677,7 @@
   encode = (double *)gmallocn(2 * k, sizeof(double));
   scale = (double *)gmallocn(k, sizeof(double));
   for (i = 0; i < k; ++i) {
-    funcs[i] = NULL;
+    funcs[i] = nullptr;
   }
   for (i = 0; i < k; ++i) {
     std::set<int> usedParentsAux = *usedParents;
@@ -1131,8 +1131,8 @@
   double in[funcMaxInputs];
   int i;
 
-  code = NULL;
-  codeString = NULL;
+  code = nullptr;
+  codeString = nullptr;
   codeSize = 0;
   ok = gFalse;
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Function.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Function.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Function.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -13,7 +13,7 @@
 // All changes made under the Poppler project to this file are licensed
 // under GPL version 2 or later
 //
-// Copyright (C) 2009, 2010 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2009, 2010, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2010 Christian Feuersänger <cfeuersaenger at googlemail.com>
 // Copyright (C) 2011 Andrea Canciani <ranma42 at gmail.com>
 // Copyright (C) 2012 Thomas Freitag <Thomas.Freitag at alfa.de>
@@ -56,6 +56,9 @@
 
   virtual ~Function();
 
+  Function(const Function &) = delete;
+  Function& operator=(const Function &other) = delete;
+
   // Construct a function.  Returns NULL if unsuccessful.
   static Function *parse(Object *funcObj);
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Gfx.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Gfx.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Gfx.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -14,7 +14,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2005 Jonathan Blandford <jrb at redhat.com>
-// Copyright (C) 2005-2013, 2015-2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005-2013, 2015-2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2006 Thorkild Stray <thorkild at ifi.uio.no>
 // Copyright (C) 2006 Kristian Høgsberg <krh at redhat.com>
 // Copyright (C) 2006-2011 Carlos Garcia Campos <carlosgc at gnome.org>
@@ -38,6 +38,7 @@
 // Copyright (C) 2012, 2013 Fabio D'Urso <fabiodurso at hotmail.it>
 // Copyright (C) 2012 Lu Wang <coolwanglu at gmail.com>
 // Copyright (C) 2014 Jason Crain <jason at aquaticape.us>
+// Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, <info at kdab.com>. Work sponsored by the LiMux project of the city of Munich
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -326,7 +327,7 @@
 
     // build font dictionary
     Dict *resDict = resDictA->copy(xref);
-    fonts = NULL;
+    fonts = nullptr;
     obj1 = resDict->lookupNF("Font");
     if (obj1.isRef()) {
       obj2 = obj1.fetch(xref);
@@ -335,7 +336,7 @@
 	fonts = new GfxFontDict(xref, &r, obj2.getDict());
       }
     } else if (obj1.isDict()) {
-      fonts = new GfxFontDict(xref, NULL, obj1.getDict());
+      fonts = new GfxFontDict(xref, nullptr, obj1.getDict());
     }
 
     // get XObject dictionary
@@ -358,7 +359,7 @@
 
     delete resDict;
   } else {
-    fonts = NULL;
+    fonts = nullptr;
     xObjDict.setToNull();
     colorSpaceDict.setToNull();
     patternDict.setToNull();
@@ -385,7 +386,7 @@
     }
   }
   error(errSyntaxError, -1, "Unknown font tag '{0:s}'", name);
-  return NULL;
+  return nullptr;
 }
 
 Object GfxResources::lookupXObject(char *name) {
@@ -464,7 +465,7 @@
     }
   }
   error(errSyntaxError, -1, "Unknown pattern '{0:s}'", name);
-  return NULL;
+  return nullptr;
 }
 
 GfxShading *GfxResources::lookupShading(char *name, OutputDev *out, GfxState *state) {
@@ -481,7 +482,7 @@
     }
   }
   error(errSyntaxError, -1, "ExtGState '{0:s}' is unknown", name);
-  return NULL;
+  return nullptr;
 }
 
 Object GfxResources::lookupGState(char *name) {
@@ -529,16 +530,16 @@
   int i;
 
   doc = docA;
-  xref = (xrefA == NULL) ? doc->getXRef() : xrefA;
+  xref = (xrefA == nullptr) ? doc->getXRef() : xrefA;
   catalog = doc->getCatalog();
   subPage = gFalse;
   printCommands = globalParams->getPrintCommands();
   profileCommands = globalParams->getProfileCommands();
-  mcStack = NULL;
-  parser = NULL;
+  mcStack = nullptr;
+  parser = nullptr;
 
   // start the resource stack
-  res = new GfxResources(xref, resDict, NULL);
+  res = new GfxResources(xref, resDict, nullptr);
 
   // initialize
   out = outA;
@@ -556,7 +557,7 @@
   }
   formDepth = 0;
   ocState = gTrue;
-  parser = NULL;
+  parser = nullptr;
   abortCheckCbk = abortCheckCbkA;
   abortCheckCbkData = abortCheckCbkDataA;
 
@@ -584,16 +585,16 @@
   int i;
 
   doc = docA;
-  xref = (xrefA == NULL) ? doc->getXRef() : xrefA;
+  xref = (xrefA == nullptr) ? doc->getXRef() : xrefA;
   catalog = doc->getCatalog();
   subPage = gTrue;
   printCommands = globalParams->getPrintCommands();
   profileCommands = globalParams->getProfileCommands();
-  mcStack = NULL;
-  parser = NULL;
+  mcStack = nullptr;
+  parser = nullptr;
 
   // start the resource stack
-  res = new GfxResources(xref, resDict, NULL);
+  res = new GfxResources(xref, resDict, nullptr);
 
   // initialize
   out = outA;
@@ -608,7 +609,7 @@
   }
   formDepth = 0;
   ocState = gTrue;
-  parser = NULL;
+  parser = nullptr;
   abortCheckCbk = abortCheckCbkA;
   abortCheckCbkData = abortCheckCbkDataA;
 
@@ -645,7 +646,7 @@
                 int length = 0;
                 Guchar *profBuf = iccStream->toUnsignedChars(&length, 65536, 65536);
                 cmsHPROFILE hp = cmsOpenProfileFromMem(profBuf,length);
-                if (hp == 0) {
+                if (hp == nullptr) {
                   error(errSyntaxWarning, -1, "read ICCBased color space profile error");
                 } else {
                   state->setDisplayProfile(hp);
@@ -698,7 +699,7 @@
   parser = new Parser(xref, new Lexer(xref, obj), gFalse);
   go(topLevel);
   delete parser;
-  parser = NULL;
+  parser = nullptr;
 }
 
 void Gfx::go(GBool topLevel) {
@@ -747,7 +748,7 @@
 
 	  cmd_g = new GooString (obj.getCmd());
 	  data_p = (ProfileData *)hash->lookup (cmd_g);
-	  if (data_p == NULL) {
+	  if (data_p == nullptr) {
 	    data_p = new ProfileData();
 	    hash->add (cmd_g, data_p);
 	  }
@@ -764,6 +765,7 @@
       if (++updateLevel >= 20000) {
 	out->dump();
 	updateLevel = 0;
+	lastAbortCheck = 0;
       }
 
       // did the command throw an exception
@@ -891,7 +893,7 @@
       a = b = m;
   }
   if (cmp != 0)
-    return NULL;
+    return nullptr;
   return &opTab[a];
 }
 
@@ -945,7 +947,7 @@
   a = args[0].getArray();
   length = a->getLength();
   if (length == 0) {
-    dash = NULL;
+    dash = nullptr;
   } else {
     dash = (double *)gmallocn(length, sizeof(double));
     for (i = 0; i < length; ++i) {
@@ -1113,7 +1115,7 @@
   }
   if (obj2.isName("Default") ||
       obj2.isName("Identity")) {
-    funcs[0] = funcs[1] = funcs[2] = funcs[3] = NULL;
+    funcs[0] = funcs[1] = funcs[2] = funcs[3] = nullptr;
     state->setTransfer(funcs);
     out->updateTransfer(state);
   } else if (obj2.isArray() && obj2.arrayGetLength() == 4) {
@@ -1130,7 +1132,7 @@
     }
   } else if (obj2.isName() || obj2.isDict() || obj2.isStream()) {
     if ((funcs[0] = Function::parse(&obj2))) {
-      funcs[1] = funcs[2] = funcs[3] = NULL;
+      funcs[1] = funcs[2] = funcs[3] = nullptr;
       state->setTransfer(funcs);
       out->updateTransfer(state);
     }
@@ -1164,21 +1166,21 @@
       } else { // "Luminosity"
 	alpha = gFalse;
       }
-      funcs[0] = NULL;
+      funcs[0] = nullptr;
       obj3 = obj2.dictLookup("TR");
       if (!obj3.isNull()) {
 	if (obj3.isName("Default") ||
 	    obj3.isName("Identity")) {
-	  funcs[0] = NULL;
+	  funcs[0] = nullptr;
 	} else {
 	  funcs[0] = Function::parse(&obj3);
-	  if (funcs[0] == NULL ||
+	  if (funcs[0] == nullptr ||
 	    funcs[0]->getInputSize() != 1 ||
 	    funcs[0]->getOutputSize() != 1) {
 	      error(errSyntaxError, getPos(),
 		  "Invalid transfer function in soft mask in ExtGState");
 	      delete funcs[0];
-	      funcs[0] = NULL;
+	      funcs[0] = nullptr;
 	  }
 	}
       }
@@ -1198,7 +1200,7 @@
       if (obj3.isStream()) {
 	Object obj4 = obj3.streamGetDict()->lookup("Group");
 	if (obj4.isDict()) {
-	  blendingColorSpace = NULL;
+	  blendingColorSpace = nullptr;
 	  isolated = knockout = gFalse;
 	  Object obj5 = obj4.dictLookup("CS");
 	  if (!obj5.isNull()) {
@@ -1350,7 +1352,7 @@
 
   // get resources
   obj1 = dict->lookup("Resources");
-  resDict = obj1.isDict() ? obj1.getDict() : (Dict *)NULL;
+  resDict = obj1.isDict() ? obj1.getDict() : (Dict *)nullptr;
 
   // draw it
   ++formDepth;
@@ -1374,14 +1376,14 @@
 
 void Gfx::opSetFillGray(Object args[], int numArgs) {
   GfxColor color;
-  GfxColorSpace *colorSpace = NULL;
+  GfxColorSpace *colorSpace = nullptr;
 
-  state->setFillPattern(NULL);
+  state->setFillPattern(nullptr);
   Object obj = res->lookupColorSpace("DefaultGray");
   if (!obj.isNull()) {
     colorSpace = GfxColorSpace::parse(res, &obj, out, state);
   }
-  if (colorSpace == NULL) {
+  if (colorSpace == nullptr) {
     colorSpace = new GfxDeviceGrayColorSpace();
   }
   state->setFillColorSpace(colorSpace);
@@ -1393,14 +1395,14 @@
 
 void Gfx::opSetStrokeGray(Object args[], int numArgs) {
   GfxColor color;
-  GfxColorSpace *colorSpace = NULL;
+  GfxColorSpace *colorSpace = nullptr;
 
-  state->setStrokePattern(NULL);
+  state->setStrokePattern(nullptr);
   Object obj = res->lookupColorSpace("DefaultGray");
   if (!obj.isNull()) {
     colorSpace = GfxColorSpace::parse(res, &obj, out, state);
   }
-  if (colorSpace == NULL) {
+  if (colorSpace == nullptr) {
     colorSpace = new GfxDeviceGrayColorSpace();
   }
   state->setStrokeColorSpace(colorSpace);
@@ -1412,7 +1414,7 @@
 
 void Gfx::opSetFillCMYKColor(Object args[], int numArgs) {
   GfxColor color;
-  GfxColorSpace *colorSpace = NULL;
+  GfxColorSpace *colorSpace = nullptr;
   int i;
 
   Object obj = res->lookupColorSpace("DefaultCMYK");
@@ -1419,10 +1421,10 @@
   if (!obj.isNull()) {
     colorSpace = GfxColorSpace::parse(res, &obj, out, state);
   }
-  if (colorSpace == NULL) {
+  if (colorSpace == nullptr) {
     colorSpace = new GfxDeviceCMYKColorSpace();
   }
-  state->setFillPattern(NULL);
+  state->setFillPattern(nullptr);
   state->setFillColorSpace(colorSpace);
   out->updateFillColorSpace(state);
   for (i = 0; i < 4; ++i) {
@@ -1434,15 +1436,15 @@
 
 void Gfx::opSetStrokeCMYKColor(Object args[], int numArgs) {
   GfxColor color;
-  GfxColorSpace *colorSpace = NULL;
+  GfxColorSpace *colorSpace = nullptr;
   int i;
 
-  state->setStrokePattern(NULL);
+  state->setStrokePattern(nullptr);
   Object obj = res->lookupColorSpace("DefaultCMYK");
   if (!obj.isNull()) {
     colorSpace = GfxColorSpace::parse(res, &obj, out, state);
   }
-  if (colorSpace == NULL) {
+  if (colorSpace == nullptr) {
     colorSpace = new GfxDeviceCMYKColorSpace();
   }
   state->setStrokeColorSpace(colorSpace);
@@ -1455,16 +1457,16 @@
 }
 
 void Gfx::opSetFillRGBColor(Object args[], int numArgs) {
-  GfxColorSpace *colorSpace = NULL;
+  GfxColorSpace *colorSpace = nullptr;
   GfxColor color;
   int i;
 
-  state->setFillPattern(NULL);
+  state->setFillPattern(nullptr);
   Object obj = res->lookupColorSpace("DefaultRGB");
   if (!obj.isNull()) {
     colorSpace = GfxColorSpace::parse(res, &obj, out, state);
   }
-  if (colorSpace == NULL) {
+  if (colorSpace == nullptr) {
     colorSpace = new GfxDeviceRGBColorSpace();
   }
   state->setFillColorSpace(colorSpace);
@@ -1477,16 +1479,16 @@
 }
 
 void Gfx::opSetStrokeRGBColor(Object args[], int numArgs) {
-  GfxColorSpace *colorSpace = NULL;
+  GfxColorSpace *colorSpace = nullptr;
   GfxColor color;
   int i;
 
-  state->setStrokePattern(NULL);
+  state->setStrokePattern(nullptr);
   Object obj = res->lookupColorSpace("DefaultRGB");
   if (!obj.isNull()) {
     colorSpace = GfxColorSpace::parse(res, &obj, out, state);
   }
-  if (colorSpace == NULL) {
+  if (colorSpace == nullptr) {
     colorSpace = new GfxDeviceRGBColorSpace();
   }
   state->setStrokeColorSpace(colorSpace);
@@ -1509,7 +1511,7 @@
     colorSpace = GfxColorSpace::parse(res, &obj, out, state);
   }
   if (colorSpace) {
-    state->setFillPattern(NULL);
+    state->setFillPattern(nullptr);
     state->setFillColorSpace(colorSpace);
     out->updateFillColorSpace(state);
     colorSpace->getDefaultColor(&color);
@@ -1524,7 +1526,7 @@
   GfxColorSpace *colorSpace;
   GfxColor color;
 
-  state->setStrokePattern(NULL);
+  state->setStrokePattern(nullptr);
   Object obj = res->lookupColorSpace(args[0].getName());
   if (obj.isNull()) {
     colorSpace = GfxColorSpace::parse(res, &args[0], out, state);
@@ -1550,7 +1552,7 @@
     error(errSyntaxError, getPos(), "Incorrect number of arguments in 'sc' command");
     return;
   }
-  state->setFillPattern(NULL);
+  state->setFillPattern(nullptr);
   for (i = 0; i < numArgs; ++i) {
     color.c[i] = dblToCol(args[i].getNum());
   }
@@ -1566,7 +1568,7 @@
     error(errSyntaxError, getPos(), "Incorrect number of arguments in 'SC' command");
     return;
   }
-  state->setStrokePattern(NULL);
+  state->setStrokePattern(nullptr);
   for (i = 0; i < numArgs; ++i) {
     color.c[i] = dblToCol(args[i].getNum());
   }
@@ -1609,7 +1611,7 @@
       error(errSyntaxError, getPos(), "Incorrect number of arguments in 'scn' command");
       return;
     }
-    state->setFillPattern(NULL);
+    state->setFillPattern(nullptr);
     for (i = 0; i < numArgs && i < gfxColorMaxComps; ++i) {
       if (args[i].isNum()) {
 	color.c[i] = dblToCol(args[i].getNum());
@@ -1660,7 +1662,7 @@
       error(errSyntaxError, getPos(), "Incorrect number of arguments in 'SCN' command");
       return;
     }
-    state->setStrokePattern(NULL);
+    state->setStrokePattern(nullptr);
     for (i = 0; i < numArgs && i < gfxColorMaxComps; ++i) {
       if (args[i].isNum()) {
 	color.c[i] = dblToCol(args[i].getNum());
@@ -2097,8 +2099,8 @@
   // set underlying color space (for uncolored tiling patterns); set
   // various other parameters (stroke color, line width) to match
   // Adobe's behavior
-  state->setFillPattern(NULL);
-  state->setStrokePattern(NULL);
+  state->setFillPattern(nullptr);
+  state->setStrokePattern(nullptr);
   if (tPat->getPaintType() == 2 && (cs = patCS->getUnder())) {
     state->setFillColorSpace(cs->copy());
     out->updateFillColorSpace(state);
@@ -3663,7 +3665,7 @@
   if (!(font = res->lookupFont(args[0].getName()))) {
     // unsetting the font (drawing no text) is better than using the
     // previous one and drawing random glyphs from it
-    state->setFont(NULL, args[1].getNum());
+    state->setFont(nullptr, args[1].getNum());
     fontChanged = gTrue;
     return;
   }
@@ -3873,7 +3875,7 @@
   int wMode;
   double riseX, riseY;
   CharCode code;
-  Unicode *u = NULL;
+  Unicode *u = nullptr;
   double x, y, dx, dy, dx2, dy2, curX, curY, tdx, tdy, ddx, ddy;
   double originX, originY, tOriginX, tOriginY;
   double x0, y0, x1, y1;
@@ -4184,7 +4186,7 @@
   } else if (obj2.isName("PS")) {
     Object obj3 = obj1.streamGetDict()->lookup("Level1");
     out->psXObject(obj1.getStream(),
-		   obj3.isStream() ? obj3.getStream() : (Stream *)NULL);
+		   obj3.isStream() ? obj3.getStream() : (Stream *)nullptr);
   } else if (obj2.isName()) {
     error(errSyntaxError, getPos(), "Unknown XObject subtype '{0:s}'", obj2.getName());
   } else {
@@ -4349,11 +4351,11 @@
       }
     }
     if (!obj1.isNull()) {
-      char *tempIntent = NULL;
+      char *tempIntent = nullptr;
       Object objIntent = dict->lookup("Intent");
       if (objIntent.isName()) {
         tempIntent = state->getRenderingIntent();
-        if (tempIntent != NULL) {
+        if (tempIntent != nullptr) {
           tempIntent = strdup(tempIntent);
         }
         state->setRenderingIntent(objIntent.getName());
@@ -4385,7 +4387,7 @@
         colorSpace = GfxColorSpace::parse(res, &objCS, out, state);
       }
     } else {
-      colorSpace = NULL;
+      colorSpace = nullptr;
     }
     if (!colorSpace) {
       goto err1;
@@ -4401,7 +4403,7 @@
 
     // get the mask
     haveColorKeyMask = haveExplicitMask = haveSoftMask = gFalse;
-    maskStr = NULL; // make gcc happy
+    maskStr = nullptr; // make gcc happy
     maskWidth = maskHeight = 0; // make gcc happy
     maskInvert = gFalse; // make gcc happy
     std::unique_ptr<GfxImageColorMap> maskColorMap;
@@ -4456,7 +4458,7 @@
 	  obj1 = std::move(obj2);
 	}
       }
-      maskColorSpace = GfxColorSpace::parse(NULL, &obj1, out, state);
+      maskColorSpace = GfxColorSpace::parse(nullptr, &obj1, out, state);
       if (!maskColorSpace || maskColorSpace->getMode() != csDeviceGray) {
 	goto err1;
       }
@@ -4587,7 +4589,7 @@
 			     maskStr, maskWidth, maskHeight, maskInvert, maskInterpolate);
       } else {
 	out->drawImage(state, ref, str, width, height, &colorMap, interpolate,
-		       haveColorKeyMask ? maskColors : (int *)NULL, inlineImg);
+		       haveColorKeyMask ? maskColors : (int *)nullptr, inlineImg);
       }
     }
   }
@@ -4609,7 +4611,7 @@
   GBool transpGroup = gFalse;
   double opac;
 
-  if (resDict == NULL)
+  if (resDict == nullptr)
     return gFalse;
   pushResources(resDict);
   Object extGStates = resDict->lookup("ExtGState");
@@ -4730,11 +4732,11 @@
 
   // get resources
   Object resObj = dict->lookup("Resources");
-  resDict = resObj.isDict() ? resObj.getDict() : (Dict *)NULL;
+  resDict = resObj.isDict() ? resObj.getDict() : (Dict *)nullptr;
 
   // check for a transparency group
   transpGroup = isolated = knockout = gFalse;
-  blendingColorSpace = NULL;
+  blendingColorSpace = nullptr;
   obj1 = dict->lookup("Group");
   if (obj1.isDict()) {
     Object obj2 = obj1.dictLookup("S");
@@ -4890,7 +4892,7 @@
 
   // display the image
   if (str) {
-    doImage(NULL, str, gTrue);
+    doImage(nullptr, str, gTrue);
   
     // skip 'EI' tag
     c1 = str->getUndecodedStream()->getChar();
@@ -4926,7 +4928,7 @@
   }
   if (obj.isEOF()) {
     error(errSyntaxError, getPos(), "End of file in inline image");
-    return NULL;
+    return nullptr;
   }
 
   // make stream
@@ -4934,7 +4936,7 @@
     str = new EmbedStream(parser->getStream(), std::move(dict), gFalse, 0, gTrue);
     str = str->addFilters(str->getDict());
   } else {
-    str = NULL;
+    str = nullptr;
   }
 
   return str;
@@ -5023,19 +5025,20 @@
   char* name0 = args[0].getName();
   if ( strncmp( name0, "OC", 2) == 0 && contentConfig) {
     if ( numArgs >= 2 ) {
-      if (!args[1].isName()) {
+      if (args[1].isName()) {
+        char* name1 = args[1].getName();
+        MarkedContentStack *mc = mcStack;
+        mc->kind = gfxMCOptionalContent;
+        Object markedContent = res->lookupMarkedContentNF( name1 );
+        if (!markedContent.isNull()) {
+          bool visible = contentConfig->optContentIsVisible(&markedContent);
+          mc->ocSuppressed = !(visible);
+        } else {
+          error(errSyntaxError, getPos(), "DID NOT find {0:s}", name1);
+        }
+      } else {
 	error(errSyntaxError, getPos(), "Unexpected MC Type: {0:d}", args[1].getType());
       }
-      char* name1 = args[1].getName();
-      MarkedContentStack *mc = mcStack;
-      mc->kind = gfxMCOptionalContent;
-      Object markedContent = res->lookupMarkedContentNF( name1 );
-      if (!markedContent.isNull()) {
-        bool visible = contentConfig->optContentIsVisible(&markedContent);
-        mc->ocSuppressed = !(visible);
-      } else {
-	error(errSyntaxError, getPos(), "DID NOT find {0:s}", name1);
-      }
     } else {
       error(errSyntaxError, getPos(), "insufficient arguments for Marked Content");
     }
@@ -5060,7 +5063,7 @@
   if (numArgs == 2 && args[1].isDict()) {
     out->beginMarkedContent(args[0].getName(), args[1].getDict());
   } else if(numArgs == 1) {
-    out->beginMarkedContent(args[0].getName(), NULL);
+    out->beginMarkedContent(args[0].getName(), nullptr);
   }
 }
 
@@ -5105,7 +5108,7 @@
 //------------------------------------------------------------------------
 
 struct GfxStackStateSaver {
-  GfxStackStateSaver(Gfx *gfx) : gfx(gfx) {
+  GfxStackStateSaver(Gfx *gfxA) : gfx(gfxA) {
     gfx->saveState();
   }
 
@@ -5113,6 +5116,9 @@
     gfx->restoreState();
   }
 
+  GfxStackStateSaver(const GfxStackStateSaver &) = delete;
+  GfxStackStateSaver& operator=(const GfxStackStateSaver &) = delete;
+
   Gfx * const gfx;
 };
 
@@ -5271,7 +5277,7 @@
 
     // get the resources
     Object resObj = dict->lookup("Resources");
-    resDict = resObj.isDict() ? resObj.getDict() : (Dict *)NULL;
+    resDict = resObj.isDict() ? resObj.getDict() : (Dict *)nullptr;
 
     // draw it
     drawForm(str, resDict, m, bbox);
@@ -5280,7 +5286,7 @@
   // draw the border
   if (border && border->getWidth() > 0) {
     if (state->getStrokeColorSpace()->getMode() != csDeviceRGB) {
-      state->setStrokePattern(NULL);
+      state->setStrokePattern(nullptr);
       state->setStrokeColorSpace(new GfxDeviceRGBColorSpace());
       out->updateStrokeColorSpace(state);
     }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Gfx.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Gfx.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Gfx.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -17,7 +17,7 @@
 // Copyright (C) 2007 Iñigo Martínez <inigomartinez at gmail.com>
 // Copyright (C) 2008 Brad Hards <bradh at kde.org>
 // Copyright (C) 2008, 2010 Carlos Garcia Campos <carlosgc at gnome.org>
-// Copyright (C) 2009-2013, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2009-2013, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2009, 2010, 2012, 2013 Thomas Freitag <Thomas.Freitag at alfa.de>
 // Copyright (C) 2010 David Benjamin <davidben at mit.edu>
 // Copyright (C) 2010 Christian Feuersänger <cfeuersaenger at googlemail.com>
@@ -112,6 +112,9 @@
   GfxResources(XRef *xref, Dict *resDict, GfxResources *nextA);
   ~GfxResources();
 
+  GfxResources(const GfxResources &) = delete;
+  GfxResources& operator=(const GfxResources &other) = delete;
+
   GfxFont *lookupFont(char *name);
   Object lookupXObject(char *name);
   Object lookupXObjectNF(char *name);
@@ -161,6 +164,9 @@
 #endif
   ~Gfx();
 
+  Gfx(const Gfx &) = delete;
+  Gfx& operator=(const Gfx &other) = delete;
+
   XRef *getXRef() { return xref; }
 
   // Interpret a stream or array of streams.

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/GfxFont.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/GfxFont.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/GfxFont.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -13,7 +13,7 @@
 // All changes made under the Poppler project to this file are licensed
 // under GPL version 2 or later
 //
-// Copyright (C) 2005, 2006, 2008-2010, 2012, 2014, 2015, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2006, 2008-2010, 2012, 2014, 2015, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2005, 2006 Kristian Høgsberg <krh at redhat.com>
 // Copyright (C) 2006 Takashi Iwai <tiwai at suse.de>
 // Copyright (C) 2007 Julien Rebetez <julienr at svn.gnome.org>
@@ -30,7 +30,7 @@
 // Copyright (C) 2012 Yi Yang <ahyangyi at gmail.com>
 // Copyright (C) 2012 Suzuki Toshiya <mpsuzuki at hiroshima-u.ac.jp>
 // Copyright (C) 2012, 2017 Thomas Freitag <Thomas.Freitag at alfa.de>
-// Copyright (C) 2013-2016 Jason Crain <jason at aquaticape.us>
+// Copyright (C) 2013-2016, 2018 Jason Crain <jason at aquaticape.us>
 // Copyright (C) 2014 Olly Betts <olly at survex.com>
 //
 // To see a description of the changes please see the Changelog file that
@@ -186,9 +186,9 @@
 //------------------------------------------------------------------------
 
 GfxFontLoc::GfxFontLoc() {
-  path = NULL;
+  path = nullptr;
   fontNum = 0;
-  encoding = NULL;
+  encoding = nullptr;
   substIdx = -1;
 }
 
@@ -212,7 +212,7 @@
   GfxFont *font;
 
   // get base font name
-  nameA = NULL;
+  nameA = nullptr;
   Object obj1 = fontDict->lookup("BaseFont");
   if (obj1.isName()) {
     nameA = new GooString(obj1.getName());
@@ -222,7 +222,7 @@
   typeA = getFontType(xref, fontDict, &embFontIDA);
 
   // create the font object
-  font = NULL;
+  font = nullptr;
   if (typeA < fontCIDType0) {
     font = new Gfx8BitFont(xref, tagA, idA, nameA, typeA, embFontIDA,
 			   fontDict);
@@ -242,8 +242,8 @@
   name = nameA;
   type = typeA;
   embFontID = embFontIDA;
-  embFontName = NULL;
-  family = NULL;
+  embFontName = nullptr;
+  family = nullptr;
   stretch = StretchNotDefined;
   weight = WeightNotDefined;
   refCnt = 1;
@@ -480,7 +480,7 @@
     if (obj2.isName()) {
       embFontName = new GooString(obj2.getName());
     }
-    if (embFontName == NULL) {
+    if (embFontName == nullptr) {
       // get name with typo
       obj2 = obj1.dictLookup("Fontname");
       if (obj2.isName()) {
@@ -575,7 +575,7 @@
 
   Object obj1 = fontDict->lookup("ToUnicode");
   if (!obj1.isStream()) {
-    return NULL;
+    return nullptr;
   }
   buf = new GooString();
   obj1.getStream()->fillGooString(buf);
@@ -598,7 +598,7 @@
   GBool embed;
 
   if (type == fontType3) {
-    return NULL;
+    return nullptr;
   }
 
   //----- embedded font
@@ -753,11 +753,11 @@
     }
 
     // failed to find a substitute font
-    return NULL;
+    return nullptr;
   }
 
   // failed to find a substitute font
-  return NULL;
+  return nullptr;
 }
 
 GfxFontLoc *GfxFont::locateBase14Font(GooString *base14Name) {
@@ -765,7 +765,7 @@
 
   path = globalParams->findFontFile(base14Name);
   if (!path) {
-    return NULL;
+    return nullptr;
   }
   return getExternalFont(path, gFalse);
 }
@@ -807,7 +807,7 @@
       (cid ? (fontType < fontCIDType0)
            : (fontType >= fontCIDType0))) {
     delete path;
-    return NULL;
+    return nullptr;
   }
   fontLoc = new GfxFontLoc();
   fontLoc->locType = gfxFontLocExternal;
@@ -826,7 +826,7 @@
     error(errSyntaxError, -1, "Embedded font file is not a stream");
     embFontID.num = -1;
     *len = 0;
-    return NULL;
+    return nullptr;
   }
   str = obj2.getStream();
 
@@ -849,7 +849,7 @@
   { "ff", "f_f" },
   { "ffi", "f_f_i" },
   { "ffl", "f_f_l" },
-  { 0,    0 }
+  { nullptr,    nullptr }
 };
 
 const char *GfxFont::getAlternateName(const char *name) {
@@ -860,7 +860,7 @@
     }
     map++;
   }
-  return 0;
+  return nullptr;
 }
 
 //------------------------------------------------------------------------
@@ -933,7 +933,7 @@
 	numeric = gFalse;
     } else if (obj.isName()) {
       // All character names must sucessfully parse.
-      if (!parseNumericName(obj.getName(), hex, NULL))
+      if (!parseNumericName(obj.getName(), hex, nullptr))
 	numeric = gFalse;
     } else {
       numeric = gFalse;
@@ -968,11 +968,11 @@
   int n, i, a, b, m;
 
   refCnt = 1;
-  ctu = NULL;
+  ctu = nullptr;
 
   // do font name substitution for various aliases of the Base 14 font
   // names
-  base14 = NULL;
+  base14 = nullptr;
   if (name) {
     name2 = name->copy();
     i = 0;
@@ -1001,7 +1001,7 @@
   }
 
   // is it a built-in font?
-  builtinFont = NULL;
+  builtinFont = nullptr;
   if (base14) {
     for (i = 0; i < nBuiltinFonts; ++i) {
       if (!strcmp(base14->base14Name, builtinFonts[i].name)) {
@@ -1092,7 +1092,7 @@
   // check FontDict for base encoding
   hasEncoding = gFalse;
   usesMacRomanEnc = gFalse;
-  baseEnc = NULL;
+  baseEnc = nullptr;
   baseEncFromFontFile = gFalse;
   obj1 = fontDict->lookup("Encoding");
   if (obj1.isDict()) {
@@ -1123,9 +1123,9 @@
   // check embedded font file for base encoding
   // (only for Type 1 fonts - trying to get an encoding out of a
   // TrueType font is a losing proposition)
-  ffT1 = NULL;
-  ffT1C = NULL;
-  buf = NULL;
+  ffT1 = nullptr;
+  ffT1C = nullptr;
+  buf = nullptr;
   if (type == fontType1 && embFontID.num >= 0) {
     if ((buf = readEmbFontFile(xref, &len))) {
       if ((ffT1 = FoFiType1::make(buf, len))) {
@@ -1288,7 +1288,7 @@
   // block (eg "fi", "ffi") to normal form
   for (code = 0; code < 256; ++code) {
     if (unicodeIsAlphabeticPresentationForm(toUnicode[code])) {
-      Unicode *normalized = unicodeNormalizeNFKC(&toUnicode[code], 1, &len, NULL);
+      Unicode *normalized = unicodeNormalizeNFKC(&toUnicode[code], 1, &len, nullptr);
       if (len > 1)
         ctu->setMapping((CharCode)code, normalized, len);
       gfree(normalized);
@@ -1458,7 +1458,7 @@
     char *var_part = strchr(charName, '.');
     if (var_part == charName) {
       return 0;	// .notdef or similar
-    } else if (var_part != NULL) {
+    } else if (var_part != nullptr) {
       // parse names of the form 7.oldstyle, P.swash, s.sc, etc.
       char *main_part = gstrndup(charName, var_part - charName);
       GBool namesRecurse = gTrue, variantsRecurse = gFalse;
@@ -1696,7 +1696,7 @@
 }
 
 Dict *Gfx8BitFont::getCharProcs() {
-  return charProcs.isDict() ? charProcs.getDict() : (Dict *)NULL;
+  return charProcs.isDict() ? charProcs.getDict() : (Dict *)nullptr;
 }
 
 Object Gfx8BitFont::getCharProc(int code) {
@@ -1716,7 +1716,7 @@
 }
 
 Dict *Gfx8BitFont::getResources() {
-  return resources.isDict() ? resources.getDict() : (Dict *)NULL;
+  return resources.isDict() ? resources.getDict() : (Dict *)nullptr;
 }
 
 //------------------------------------------------------------------------
@@ -1748,24 +1748,24 @@
   CharCode c;
   Unicode *uBuf;
   int c1, c2;
-  int excepsSize, i, j, k, n;
+  int excepsSize, j, k, n;
 
   refCnt = 1;
   ascent = 0.95;
   descent = -0.35;
   fontBBox[0] = fontBBox[1] = fontBBox[2] = fontBBox[3] = 0;
-  collection = NULL;
-  cMap = NULL;
-  ctu = NULL;
+  collection = nullptr;
+  cMap = nullptr;
+  ctu = nullptr;
   ctuUsesCharCode = gTrue;
   widths.defWidth = 1.0;
   widths.defHeight = -1.0;
   widths.defVY = 0.880;
-  widths.exceps = NULL;
+  widths.exceps = nullptr;
   widths.nExceps = 0;
-  widths.excepsV = NULL;
+  widths.excepsV = nullptr;
   widths.nExcepsV = 0;
-  cidToGID = NULL;
+  cidToGID = nullptr;
   cidToGIDLen = 0;
 
   // get the descendant font
@@ -1801,7 +1801,7 @@
   collection = obj2.getString()->copy()->append('-')->append(obj3.getString());
 
   // look for a ToUnicode CMap
-  if (!(ctu = readToUnicodeCMap(fontDict, 16, NULL))) {
+  if (!(ctu = readToUnicodeCMap(fontDict, 16, nullptr))) {
     ctuUsesCharCode = gFalse;
 
     // use an identity mapping for the "Adobe-Identity" and
@@ -1862,7 +1862,7 @@
     error(errSyntaxError, -1, "Missing Encoding entry in Type 0 font");
     return;
   }
-  if (!(cMap = CMap::parse(NULL, collection, &obj1))) {
+  if (!(cMap = CMap::parse(nullptr, collection, &obj1))) {
     return;
   }
   if (cMap->getCMapName()) {
@@ -1876,7 +1876,7 @@
     obj1 = desFontDict->lookup("CIDToGIDMap");
     if (obj1.isStream()) {
       cidToGIDLen = 0;
-      i = 64;
+      int i = 64;
       cidToGID = (int *)gmallocn(i, sizeof(int));
       obj1.streamReset();
       while ((c1 = obj1.streamGetChar()) != EOF &&
@@ -1904,7 +1904,7 @@
   obj1 = desFontDict->lookup("W");
   if (obj1.isArray()) {
     excepsSize = 0;
-    i = 0;
+    int i = 0;
     while (i + 1 < obj1.arrayGetLength()) {
       obj2 = obj1.arrayGet(i);
       obj3 = obj1.arrayGet(i + 1);
@@ -1973,7 +1973,7 @@
   obj1 = desFontDict->lookup("W2");
   if (obj1.isArray()) {
     excepsSize = 0;
-    i = 0;
+    int i = 0;
     while (i + 1 < obj1.arrayGetLength()) {
       obj2 = obj1.arrayGet(i);
       obj3 = obj1.arrayGet(i+ 1);
@@ -2055,7 +2055,7 @@
 			    Unicode **u, int *uLen,
 			    double *dx, double *dy, double *ox, double *oy) {
   CID cid;
-  CharCode c;
+  CharCode dummy;
   double w, h, vx, vy;
   int n, a, b, m;
 
@@ -2066,7 +2066,7 @@
     return 1;
   }
 
-  *code = (CharCode)(cid = cMap->getCID(s, len, &c, &n));
+  *code = (CharCode)(cid = cMap->getCID(s, len, &dummy, &n));
   if (ctu) {
     if (hasToUnicode) {
       int i = 0, c = 0;
@@ -2133,7 +2133,7 @@
 }
 
 GooString *GfxCIDFont::getCollection() {
-  return cMap ? cMap->getCollection() : (GooString *)NULL;
+  return cMap ? cMap->getCollection() : (GooString *)nullptr;
 }
 
 int GfxCIDFont::mapCodeToGID(FoFiTrueType *ff, int cmapi,
@@ -2159,7 +2159,7 @@
     "UniCNS-UCS2-V",
     "UniCNS-UTF32-H",
     "UniCNS-UCS2-H",
-    0
+    nullptr
   };
   static const char *adobe_gb1_cmaps[] = {
     "UniGB-UTF32-V",
@@ -2166,7 +2166,7 @@
     "UniGB-UCS2-V",
     "UniGB-UTF32-H",
     "UniGB-UCS2-H",
-    0
+    nullptr
   };
   static const char *adobe_japan1_cmaps[] = {
     "UniJIS-UTF32-V",
@@ -2173,7 +2173,7 @@
     "UniJIS-UCS2-V",
     "UniJIS-UTF32-H",
     "UniJIS-UCS2-H",
-    0
+    nullptr
   };
   static const char *adobe_japan2_cmaps[] = {
     "UniHojo-UTF32-V",
@@ -2180,7 +2180,7 @@
     "UniHojo-UCS2-V",
     "UniHojo-UTF32-H",
     "UniHojo-UCS2-H",
-    0
+    nullptr
   };
   static const char *adobe_korea1_cmaps[] = {
     "UniKS-UTF32-V",
@@ -2187,7 +2187,7 @@
     "UniKS-UCS2-V",
     "UniKS-UTF32-H",
     "UniKS-UCS2-H",
-    0
+    nullptr
   };
   static struct CMapListEntry {
     const char *collection;
@@ -2226,12 +2226,12 @@
       "Adobe-Korea1-UCS2",
       adobe_korea1_cmaps,
     },
-    {0, 0, 0, 0}
+    {nullptr, nullptr, nullptr, nullptr, nullptr}
   };
-  Unicode *humap = 0;
-  Unicode *vumap = 0;
-  Unicode *tumap = 0;
-  int *codeToGID = 0;
+  Unicode *humap = nullptr;
+  Unicode *vumap = nullptr;
+  Unicode *tumap = nullptr;
+  int *codeToGID = nullptr;
   unsigned long n;
   int i;
   unsigned long code;
@@ -2244,8 +2244,8 @@
   Ref embID;
 
   *mapsizep = 0;
-  if (!ctu || !getCollection()) return NULL;
-  if (getCollection()->cmp("Adobe-Identity") == 0) return NULL;
+  if (!ctu || !getCollection()) return nullptr;
+  if (getCollection()->cmp("Adobe-Identity") == 0) return nullptr;
   if (getEmbeddedFontID(&embID)) {
    /* if this font is embedded font, 
     * CIDToGIDMap should be embedded in PDF file
@@ -2273,10 +2273,10 @@
     }
   }
   if (cmap < 0)
-    return NULL;
+    return nullptr;
 
   wmode = getWMode();
-  for (lp = CMapList;lp->collection != 0;lp++) {
+  for (lp = CMapList;lp->collection != nullptr;lp++) {
     if (strcmp(lp->collection,getCollection()->getCString()) == 0) {
       break;
     }
@@ -2285,11 +2285,11 @@
   tumap = new Unicode[n];
   humap = new Unicode[n*N_UCS_CANDIDATES];
   memset(humap,0,sizeof(Unicode)*n*N_UCS_CANDIDATES);
-  if (lp->collection != 0) {
+  if (lp->collection != nullptr) {
     CharCodeToUnicode *tctu;
     GooString tname(lp->toUnicodeMap);
 
-    if ((tctu = CharCodeToUnicode::parseCMapFromFile(&tname,16)) != 0) {
+    if ((tctu = CharCodeToUnicode::parseCMapFromFile(&tname,16)) != nullptr) {
       CharCode cid;
       for (cid = 0;cid < n ;cid++) {
 	int len;
@@ -2307,11 +2307,11 @@
     }
     vumap = new Unicode[n];
     memset(vumap,0,sizeof(Unicode)*n);
-    for (cmapName = lp->CMaps;*cmapName != 0;cmapName++) {
+    for (cmapName = lp->CMaps;*cmapName != nullptr;cmapName++) {
       GooString cname(*cmapName);
 
       if ((cMap = globalParams->getCMap(getCollection(),&cname))
-	   != 0) {
+	   != nullptr) {
 	    if (cMap->getWMode()) {
 		cMap->setReverseMap(vumap,n,1);
 	    } else {
@@ -2324,7 +2324,7 @@
   } else {
     error(errSyntaxError, -1, "Unknown character collection {0:t}\n",
       getCollection());
-    if ((ctu = getToUnicode()) != 0) {
+    if ((ctu = getToUnicode()) != nullptr) {
       CharCode cid;
       for (cid = 0;cid < n ;cid++) {
 	Unicode *ucode;
@@ -2348,17 +2348,17 @@
 
     unicode = 0;
     gid = 0;
-    if (humap != 0) {
+    if (humap != nullptr) {
       for (i = 0;i < N_UCS_CANDIDATES
 	&& gid == 0 && (unicode = humap[code*N_UCS_CANDIDATES+i]) != 0;i++) {
 	gid = mapCodeToGID(ff,cmap,unicode,gFalse);
       }
     }
-    if (gid == 0 && vumap != 0) {
+    if (gid == 0 && vumap != nullptr) {
       unicode = vumap[code];
       if (unicode != 0) {
 	gid = mapCodeToGID(ff,cmap,unicode,gTrue);
-	if (gid == 0 && tumap != 0) {
+	if (gid == 0 && tumap != nullptr) {
 	  if ((unicode = tumap[code]) != 0) {
 	    gid = mapCodeToGID(ff,cmap,unicode,gTrue);
 	  }
@@ -2365,7 +2365,7 @@
 	}
       }
     }
-    if (gid == 0 && tumap != 0) {
+    if (gid == 0 && tumap != nullptr) {
       if ((unicode = tumap[code]) != 0) {
 	gid = mapCodeToGID(ff,cmap,unicode,gFalse);
       }
@@ -2374,7 +2374,7 @@
       /* special handling space characters */
       const unsigned long *p;
 
-      if (humap != 0) unicode = humap[code];
+      if (humap != nullptr) unicode = humap[code];
       if (unicode != 0) {
 	/* check if code is space character , so map code to 0x0020 */
 	for (p = spaces;*p != 0;p++) {
@@ -2389,9 +2389,9 @@
     codeToGID[code] = gid;
   }
   *mapsizep = n;
-  if (humap != 0) delete[] humap;
-  if (tumap != 0) delete[] tumap;
-  if (vumap != 0) delete[] vumap;
+  if (humap != nullptr) delete[] humap;
+  if (tumap != nullptr) delete[] tumap;
+  if (vumap != nullptr) delete[] vumap;
   return codeToGID;
 }
 
@@ -2443,16 +2443,16 @@
     if (obj2.isDict()) {
       if (obj1.isRef()) {
 	r = obj1.getRef();
+      } else if (fontDictRef) {
+	// legal generation numbers are five digits, so we use a
+	// 6-digit number here
+	r.gen = 100000 + fontDictRef->num;
+	r.num = i;
       } else {
-	// no indirect reference for this font, so invent a unique one
-	// (legal generation numbers are five digits, so any 6-digit
-	// number would be safe)
-	r.num = i;
-	if (fontDictRef) {
-	  r.gen = 100000 + fontDictRef->num;
-	} else {
-	  r.gen = 999999;
-	}
+	// no indirect reference for this font, or for the containing
+	// font dict, so hash the font and use that
+	r.gen = 100000;
+	r.num = hashFontObject(&obj2);
       }
       fonts[i] = GfxFont::makeFont(xref, fontDict->getKey(i),
 				   r, obj2.getDict());
@@ -2462,11 +2462,11 @@
 	// we can tell the difference between a missing font
 	// and a font that is just !isOk()
 	fonts[i]->decRefCnt();
-	fonts[i] = NULL;
+	fonts[i] = nullptr;
       }
     } else {
       error(errSyntaxError, -1, "font resource is not a dictionary");
-      fonts[i] = NULL;
+      fonts[i] = nullptr;
     }
   }
 }
@@ -2490,5 +2490,112 @@
       return fonts[i];
     }
   }
-  return NULL;
+  return nullptr;
 }
+
+// FNV-1a hash
+class FNVHash {
+public:
+
+  FNVHash() {
+    h = 2166136261U;
+  }
+
+  void hash(char c) {
+    h ^= c & 0xff;
+    h *= 16777619;
+  }
+
+  void hash(char *p, int n) {
+    int i;
+    for (i = 0; i < n; ++i) {
+      hash(p[i]);
+    }
+  }
+
+  int get31() {
+    return (h ^ (h >> 31)) & 0x7fffffff;
+  }
+
+private:
+
+  Guint h;
+};
+
+int GfxFontDict::hashFontObject(Object *obj) {
+  FNVHash h;
+
+  hashFontObject1(obj, &h);
+  return h.get31();
+}
+
+void GfxFontDict::hashFontObject1(Object *obj, FNVHash *h) {
+  Object obj2;
+  GooString *s;
+  char *p;
+  double r;
+  int n, i;
+
+  switch (obj->getType()) {
+  case objBool:
+    h->hash('b');
+    h->hash(obj->getBool() ? 1 : 0);
+    break;
+  case objInt:
+    h->hash('i');
+    n = obj->getInt();
+    h->hash((char *)&n, sizeof(int));
+    break;
+  case objReal:
+    h->hash('r');
+    r = obj->getReal();
+    h->hash((char *)&r, sizeof(double));
+    break;
+  case objString:
+    h->hash('s');
+    s = obj->getString();
+    h->hash(s->getCString(), s->getLength());
+    break;
+  case objName:
+    h->hash('n');
+    p = obj->getName();
+    h->hash(p, (int)strlen(p));
+    break;
+  case objNull:
+    h->hash('z');
+    break;
+  case objArray:
+    h->hash('a');
+    n = obj->arrayGetLength();
+    h->hash((char *)&n, sizeof(int));
+    for (i = 0; i < n; ++i) {
+      obj2 = obj->arrayGetNF(i);
+      hashFontObject1(&obj2, h);
+    }
+    break;
+  case objDict:
+    h->hash('d');
+    n = obj->dictGetLength();
+    h->hash((char *)&n, sizeof(int));
+    for (i = 0; i < n; ++i) {
+      p = obj->dictGetKey(i);
+      h->hash(p, (int)strlen(p));
+      obj2 = obj->dictGetValNF(i);
+      hashFontObject1(&obj2, h);
+    }
+    break;
+  case objStream:
+    // this should never happen - streams must be indirect refs
+    break;
+  case objRef:
+    h->hash('f');
+    n = obj->getRefNum();
+    h->hash((char *)&n, sizeof(int));
+    n = obj->getRefGen();
+    h->hash((char *)&n, sizeof(int));
+    break;
+  default:
+    h->hash('u');
+    break;
+  }
+}

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/GfxFont.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/GfxFont.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/GfxFont.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -13,7 +13,7 @@
 // All changes made under the Poppler project to this file are licensed
 // under GPL version 2 or later
 //
-// Copyright (C) 2005, 2008, 2015, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2008, 2015, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2006 Takashi Iwai <tiwai at suse.de>
 // Copyright (C) 2006 Kristian Høgsberg <krh at redhat.com>
 // Copyright (C) 2007 Julien Rebetez <julienr at svn.gnome.org>
@@ -21,7 +21,7 @@
 // Copyright (C) 2007 Koji Otani <sho at bbr.jp>
 // Copyright (C) 2011 Axel Strübing <axel.struebing at freenet.de>
 // Copyright (C) 2011, 2012, 2014 Adrian Johnson <ajohnson at redneon.com>
-// Copyright (C) 2015 Jason Crain <jason at aquaticape.us>
+// Copyright (C) 2015, 2018 Jason Crain <jason at aquaticape.us>
 // Copyright (C) 2015 Thomas Freitag <Thomas.Freitag at alfa.de>
 //
 // To see a description of the changes please see the Changelog file that
@@ -48,6 +48,7 @@
 class PSOutputDev;
 struct GfxFontCIDWidths;
 struct Base14FontMapEntry;
+class FNVHash;
 
 //------------------------------------------------------------------------
 // GfxFontType
@@ -114,6 +115,9 @@
   GfxFontLoc();
   ~GfxFontLoc();
 
+  GfxFontLoc(const GfxFontLoc &) = delete;
+  GfxFontLoc& operator=(const GfxFontLoc &) = delete;
+
   GfxFontLocType locType;
   GfxFontType fontType;
   Ref embFontID;		// embedded stream obj ID
@@ -176,6 +180,9 @@
   GfxFont(const char *tagA, Ref idA, GooString *nameA,
 	  GfxFontType typeA, Ref embFontIDA);
 
+  GfxFont(const GfxFont &) = delete;
+  GfxFont& operator=(const GfxFont &other) = delete;
+
   GBool isOk() { return ok; }
 
   void incRefCnt();
@@ -440,6 +447,9 @@
   // Destructor.
   ~GfxFontDict();
 
+  GfxFontDict(const GfxFontDict &) = delete;
+  GfxFontDict& operator=(const GfxFontDict &) = delete;
+
   // Get the specified font.
   GfxFont *lookup(char *tag);
 
@@ -449,6 +459,9 @@
 
 private:
 
+  int hashFontObject(Object *obj);
+  void hashFontObject1(Object *obj, FNVHash *h);
+
   GfxFont **fonts;		// list of fonts
   int numFonts;			// number of fonts
 };

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/GfxState.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/GfxState.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/GfxState.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -16,7 +16,7 @@
 // Copyright (C) 2005 Kristian Høgsberg <krh at redhat.com>
 // Copyright (C) 2006, 2007 Jeff Muizelaar <jeff at infidigm.net>
 // Copyright (C) 2006, 2010 Carlos Garcia Campos <carlosgc at gnome.org>
-// Copyright (C) 2006-2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2006-2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2009, 2012 Koji Otani <sho at bbr.jp>
 // Copyright (C) 2009, 2011-2016 Thomas Freitag <Thomas.Freitag at alfa.de>
 // Copyright (C) 2009 Christian Persch <chpe at gnome.org>
@@ -210,11 +210,11 @@
   return --refCount;
 }
 
-static cmsHPROFILE RGBProfile = NULL;
-static GooString *displayProfileName = NULL; // display profile file Name
-static cmsHPROFILE displayProfile = NULL; // display profile
+static cmsHPROFILE RGBProfile = nullptr;
+static GooString *displayProfileName = nullptr; // display profile file Name
+static cmsHPROFILE displayProfile = nullptr; // display profile
 static unsigned int displayPixelType = 0;
-static GfxColorTransform *XYZ2DisplayTransform = NULL;
+static GfxColorTransform *XYZ2DisplayTransform = nullptr;
 
 // convert color space signature to cmsColor type 
 static unsigned int getCMSColorSpaceType(cmsColorSpaceSignature cs);
@@ -223,7 +223,7 @@
 
 void GfxColorSpace::setDisplayProfile(void *displayProfileA) {
   displayProfile = displayProfileA;
-  if (displayProfile != NULL) {
+  if (displayProfile != nullptr) {
     cmsHTRANSFORM transform;
     unsigned int nChannels;
 
@@ -235,7 +235,7 @@
 	   displayProfile,
 	   COLORSPACE_SH(displayPixelType) |
 	     CHANNELS_SH(nChannels) | BYTES_SH(1),
-	  INTENT_RELATIVE_COLORIMETRIC,LCMS_FLAGS)) == 0) {
+	  INTENT_RELATIVE_COLORIMETRIC,LCMS_FLAGS)) == nullptr) {
       error(errSyntaxWarning, -1, "Can't create Lab transform");
     } else {
       XYZ2DisplayTransform = new GfxColorTransform(transform, INTENT_RELATIVE_COLORIMETRIC, PT_XYZ, displayPixelType);
@@ -264,7 +264,7 @@
 
 GfxColorSpace::GfxColorSpace() {
   overprintMask = 0x0f;
-  mapping = NULL;
+  mapping = nullptr;
 }
 
 GfxColorSpace::~GfxColorSpace() {
@@ -276,46 +276,46 @@
 
   if (recursion > colorSpaceRecursionLimit) {
     error(errSyntaxError, -1, "Loop detected in color space objects");
-    return NULL;
+    return nullptr;
   }
 
-  cs = NULL;
+  cs = nullptr;
   if (csObj->isName()) {
     if (csObj->isName("DeviceGray") || csObj->isName("G")) {
-      if (res != NULL) {
+      if (res != nullptr) {
         Object objCS = res->lookupColorSpace("DefaultGray");
         if (objCS.isNull()) {
           cs = new GfxDeviceGrayColorSpace();
         } else {
-          cs = GfxColorSpace::parse(NULL, &objCS, out, state);
+          cs = GfxColorSpace::parse(nullptr, &objCS, out, state);
         }
       } else {
         cs = new GfxDeviceGrayColorSpace();
       }
     } else if (csObj->isName("DeviceRGB") || csObj->isName("RGB")) {
-      if (res != NULL) {
+      if (res != nullptr) {
         Object objCS = res->lookupColorSpace("DefaultRGB");
         if (objCS.isNull()) {
           cs = new GfxDeviceRGBColorSpace();
         } else {
-          cs = GfxColorSpace::parse(NULL, &objCS, out, state);
+          cs = GfxColorSpace::parse(nullptr, &objCS, out, state);
         }
       } else {
         cs = new GfxDeviceRGBColorSpace();
       }
     } else if (csObj->isName("DeviceCMYK") || csObj->isName("CMYK")) {
-      if (res != NULL) {
+      if (res != nullptr) {
         Object objCS = res->lookupColorSpace("DefaultCMYK");
         if (objCS.isNull()) {
           cs = new GfxDeviceCMYKColorSpace();
         } else {
-          cs = GfxColorSpace::parse(NULL, &objCS, out, state);
+          cs = GfxColorSpace::parse(nullptr, &objCS, out, state);
         }
       } else {
         cs = new GfxDeviceCMYKColorSpace();
       }
     } else if (csObj->isName("Pattern")) {
-      cs = new GfxPatternColorSpace(NULL);
+      cs = new GfxPatternColorSpace(nullptr);
     } else {
       error(errSyntaxWarning, -1, "Bad color space '{0:s}'", csObj->getName());
     }
@@ -322,34 +322,34 @@
   } else if (csObj->isArray() && csObj->arrayGetLength() > 0) {
     obj1 = csObj->arrayGet(0);
     if (obj1.isName("DeviceGray") || obj1.isName("G")) {
-      if (res != NULL) {
+      if (res != nullptr) {
         Object objCS = res->lookupColorSpace("DefaultGray");
         if (objCS.isNull()) {
           cs = new GfxDeviceGrayColorSpace();
         } else {
-          cs = GfxColorSpace::parse(NULL, &objCS, out, state);
+          cs = GfxColorSpace::parse(nullptr, &objCS, out, state);
         }
       } else {
         cs = new GfxDeviceGrayColorSpace();
       }
     } else if (obj1.isName("DeviceRGB") || obj1.isName("RGB")) {
-      if (res != NULL) {
+      if (res != nullptr) {
         Object objCS = res->lookupColorSpace("DefaultRGB");
         if (objCS.isNull()) {
           cs = new GfxDeviceRGBColorSpace();
         } else {
-          cs = GfxColorSpace::parse(NULL, &objCS, out, state);
+          cs = GfxColorSpace::parse(nullptr, &objCS, out, state);
         }
       } else {
         cs = new GfxDeviceRGBColorSpace();
       }
     } else if (obj1.isName("DeviceCMYK") || obj1.isName("CMYK")) {
-      if (res != NULL) {
+      if (res != nullptr) {
         Object objCS = res->lookupColorSpace("DefaultCMYK");
         if (objCS.isNull()) {
           cs = new GfxDeviceCMYKColorSpace();
         } else {
-          cs = GfxColorSpace::parse(NULL, &objCS, out, state);
+          cs = GfxColorSpace::parse(nullptr, &objCS, out, state);
         }
       } else {
         cs = new GfxDeviceCMYKColorSpace();
@@ -376,34 +376,34 @@
   } else if (csObj->isDict()) {
     obj1 = csObj->dictLookup("ColorSpace");
     if (obj1.isName("DeviceGray")) {
-      if (res != NULL) {
+      if (res != nullptr) {
         Object objCS = res->lookupColorSpace("DefaultGray");
         if (objCS.isNull()) {
           cs = new GfxDeviceGrayColorSpace();
         } else {
-          cs = GfxColorSpace::parse(NULL, &objCS, out, state);
+          cs = GfxColorSpace::parse(nullptr, &objCS, out, state);
         }
       } else {
         cs = new GfxDeviceGrayColorSpace();
       }
     } else if (obj1.isName("DeviceRGB")) {
-      if (res != NULL) {
+      if (res != nullptr) {
         Object objCS = res->lookupColorSpace("DefaultRGB");
         if (objCS.isNull()) {
           cs = new GfxDeviceRGBColorSpace();
         } else {
-          cs = GfxColorSpace::parse(NULL, &objCS, out, state);
+          cs = GfxColorSpace::parse(nullptr, &objCS, out, state);
         }
       } else {
         cs = new GfxDeviceRGBColorSpace();
       }
     } else if (obj1.isName("DeviceCMYK")) {
-      if (res != NULL) {
+      if (res != nullptr) {
         Object objCS = res->lookupColorSpace("DefaultCMYK");
         if (objCS.isNull()) {
           cs = new GfxDeviceCMYKColorSpace();
         } else {
-          cs = GfxColorSpace::parse(NULL, &objCS, out, state);
+          cs = GfxColorSpace::parse(nullptr, &objCS, out, state);
         }
       } else {
         cs = new GfxDeviceCMYKColorSpace();
@@ -442,13 +442,13 @@
 #ifdef USE_CMS
 cmsHPROFILE loadColorProfile(const char *fileName)
 {
-  cmsHPROFILE hp = NULL;
+  cmsHPROFILE hp = nullptr;
   FILE *fp;
 
   if (fileName[0] == '/') {
     // full path
     // check if open the file
-    if ((fp = fopen(fileName,"r")) != NULL) {
+    if ((fp = fopen(fileName,"r")) != nullptr) {
       fclose(fp);
       hp = cmsOpenProfileFromFile(fileName,"r");
     }
@@ -458,7 +458,7 @@
   GooString *path = new GooString(GLOBAL_COLOR_PROFILE_DIR);
   path->append(fileName);
   // check if open the file
-  if ((fp = fopen(path->getCString(),"r")) != NULL) {
+  if ((fp = fopen(path->getCString(),"r")) != nullptr) {
     fclose(fp);
     hp = cmsOpenProfileFromFile(path->getCString(),"r");
   }
@@ -484,9 +484,9 @@
   // set error handlor
   cmsSetLogErrorHandler(CMSError);
 
-  if (displayProfile == NULL) {
+  if (displayProfile == nullptr) {
     // load display profile if it was not already loaded.
-    if (displayProfileName == NULL) {
+    if (displayProfileName == nullptr) {
       displayProfile = loadColorProfile("display.icc");
     } else if (displayProfileName->getLength() > 0) {
       displayProfile = loadColorProfile(displayProfileName->getCString());
@@ -494,12 +494,12 @@
   }
   // load RGB profile
   RGBProfile = loadColorProfile("RGB.icc");
-  if (RGBProfile == NULL) {
+  if (RGBProfile == nullptr) {
     /* use built in sRGB profile */
     RGBProfile = cmsCreate_sRGBProfile();
   }
   // create transforms
-  if (displayProfile != NULL) {
+  if (displayProfile != nullptr) {
     displayPixelType = getCMSColorSpaceType(cmsGetColorSpace(displayProfile));
     nChannels = getCMSNChannels(cmsGetColorSpace(displayProfile));
     // create transform from XYZ
@@ -508,7 +508,7 @@
 	   displayProfile,
 	   COLORSPACE_SH(displayPixelType) |
 	     CHANNELS_SH(nChannels) | BYTES_SH(1),
-	  INTENT_RELATIVE_COLORIMETRIC,LCMS_FLAGS)) == 0) {
+	  INTENT_RELATIVE_COLORIMETRIC,LCMS_FLAGS)) == nullptr) {
       error(errSyntaxWarning, -1, "Can't create Lab transform");
     } else {
       XYZ2DisplayTransform = new GfxColorTransform(transform, INTENT_RELATIVE_COLORIMETRIC, PT_XYZ, displayPixelType);
@@ -734,7 +734,7 @@
 
 GfxCalGrayColorSpace::~GfxCalGrayColorSpace() {
 #ifdef USE_CMS
-  if (transform != NULL) {
+  if (transform != nullptr) {
     if (transform->unref() == 0) delete transform;
   }
 #endif
@@ -756,7 +756,7 @@
   cs->kb = kb;
 #ifdef USE_CMS
   cs->transform = transform;
-  if (transform != NULL) transform->ref();
+  if (transform != nullptr) transform->ref();
 #endif
   return cs;
 }
@@ -776,7 +776,7 @@
   obj1 = arr->get(1);
   if (!obj1.isDict()) {
     error(errSyntaxWarning, -1, "Bad CalGray color space");
-    return NULL;
+    return nullptr;
   }
   cs = new GfxCalGrayColorSpace();
   obj2 = obj1.dictLookup("WhitePoint");
@@ -818,8 +818,8 @@
 		xyzrgb[2][1] * cs->whiteY +
 		xyzrgb[2][2] * cs->whiteZ);
 #ifdef USE_CMS
-  cs->transform = (state != NULL) ? state->getXYZ2DisplayTransform() : XYZ2DisplayTransform;
-  if (cs->transform != NULL) cs->transform->ref();
+  cs->transform = (state != nullptr) ? state->getXYZ2DisplayTransform() : XYZ2DisplayTransform;
+  if (cs->transform != nullptr) cs->transform->ref();
 #endif
   return cs;
 }
@@ -839,7 +839,7 @@
   GfxRGB rgb;
 
 #ifdef USE_CMS
-  if (transform != NULL && transform->getTransformPixelType() == PT_GRAY) {
+  if (transform != nullptr && transform->getTransformPixelType() == PT_GRAY) {
     Guchar out[gfxColorMaxComps];
     double in[gfxColorMaxComps];
     double X, Y, Z;
@@ -865,7 +865,7 @@
 
   getXYZ(color,&X,&Y,&Z);
 #ifdef USE_CMS
-  if (transform != NULL && transform->getTransformPixelType() == PT_RGB) {
+  if (transform != nullptr && transform->getTransformPixelType() == PT_RGB) {
     Guchar out[gfxColorMaxComps];
     double in[gfxColorMaxComps];
     
@@ -896,7 +896,7 @@
   GfxColorComp c, m, y, k;
 
 #ifdef USE_CMS
-  if (transform != NULL && transform->getTransformPixelType() == PT_CMYK) {
+  if (transform != nullptr && transform->getTransformPixelType() == PT_CMYK) {
     double in[gfxColorMaxComps];
     Guchar out[gfxColorMaxComps];
     double X, Y, Z;
@@ -1105,7 +1105,7 @@
 
 GfxCalRGBColorSpace::~GfxCalRGBColorSpace() {
 #ifdef USE_CMS
-  if (transform != NULL) {
+  if (transform != nullptr) {
     if (transform->unref() == 0) delete transform;
   }
 #endif
@@ -1133,7 +1133,7 @@
   }
 #ifdef USE_CMS
   cs->transform = transform;
-  if (transform != NULL) transform->ref();
+  if (transform != nullptr) transform->ref();
 #endif
   return cs;
 }
@@ -1146,7 +1146,7 @@
   obj1 = arr->get(1);
   if (!obj1.isDict()) {
     error(errSyntaxWarning, -1, "Bad CalRGB color space");
-    return NULL;
+    return nullptr;
   }
   cs = new GfxCalRGBColorSpace();
   obj2 = obj1.dictLookup("WhitePoint");
@@ -1205,8 +1205,8 @@
 		xyzrgb[2][2] * cs->whiteZ);
 
 #ifdef USE_CMS
-  cs->transform = (state != NULL) ? state->getXYZ2DisplayTransform() : XYZ2DisplayTransform;
-  if (cs->transform != NULL) cs->transform->ref();
+  cs->transform = (state != nullptr) ? state->getXYZ2DisplayTransform() : XYZ2DisplayTransform;
+  if (cs->transform != nullptr) cs->transform->ref();
 #endif
   return cs;
 }
@@ -1228,7 +1228,7 @@
   GfxRGB rgb;
 
 #ifdef USE_CMS
-  if (transform != NULL && transform->getTransformPixelType() == PT_GRAY) {
+  if (transform != nullptr && transform->getTransformPixelType() == PT_GRAY) {
     Guchar out[gfxColorMaxComps];
     double in[gfxColorMaxComps];
     double X, Y, Z;
@@ -1254,7 +1254,7 @@
 
   getXYZ(color,&X,&Y,&Z);
 #ifdef USE_CMS
-  if (transform != NULL && transform->getTransformPixelType() == PT_RGB) {
+  if (transform != nullptr && transform->getTransformPixelType() == PT_RGB) {
     Guchar out[gfxColorMaxComps];
     double in[gfxColorMaxComps];
     
@@ -1282,7 +1282,7 @@
   GfxColorComp c, m, y, k;
 
 #ifdef USE_CMS
-  if (transform != NULL && transform->getTransformPixelType() == PT_CMYK) {
+  if (transform != nullptr && transform->getTransformPixelType() == PT_CMYK) {
     double in[gfxColorMaxComps];
     Guchar out[gfxColorMaxComps];
     double X, Y, Z;
@@ -1479,7 +1479,7 @@
 
 GfxLabColorSpace::~GfxLabColorSpace() {
 #ifdef USE_CMS
-  if (transform != NULL) {
+  if (transform != nullptr) {
     if (transform->unref() == 0) delete transform;
   }
 #endif
@@ -1504,7 +1504,7 @@
   cs->kb = kb;
 #ifdef USE_CMS
   cs->transform = transform;
-  if (transform != NULL) transform->ref();
+  if (transform != nullptr) transform->ref();
 #endif
   return cs;
 }
@@ -1516,7 +1516,7 @@
   obj1 = arr->get(1);
   if (!obj1.isDict()) {
     error(errSyntaxWarning, -1, "Bad Lab color space");
-    return NULL;
+    return nullptr;
   }
   cs = new GfxLabColorSpace();
   bool ok = true;
@@ -1570,8 +1570,8 @@
 		xyzrgb[2][2] * cs->whiteZ);
 
 #ifdef USE_CMS
-  cs->transform = (state != NULL) ? state->getXYZ2DisplayTransform() : XYZ2DisplayTransform;
-  if (cs->transform != NULL) cs->transform->ref();
+  cs->transform = (state != nullptr) ? state->getXYZ2DisplayTransform() : XYZ2DisplayTransform;
+  if (cs->transform != nullptr) cs->transform->ref();
 #endif
   return cs;
 }
@@ -1580,7 +1580,7 @@
   GfxRGB rgb;
 
 #ifdef USE_CMS
-  if (transform != NULL && transform->getTransformPixelType() == PT_GRAY) {
+  if (transform != nullptr && transform->getTransformPixelType() == PT_GRAY) {
     Guchar out[gfxColorMaxComps];
     double in[gfxColorMaxComps];
     
@@ -1628,11 +1628,10 @@
 
 void GfxLabColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) {
   double X, Y, Z;
-  double r, g, b;
 
   getXYZ(color, &X, &Y, &Z);
 #ifdef USE_CMS
-  if (transform != NULL && transform->getTransformPixelType() == PT_RGB) {
+  if (transform != nullptr && transform->getTransformPixelType() == PT_RGB) {
     Guchar out[gfxColorMaxComps];
     double in[gfxColorMaxComps];
     
@@ -1644,7 +1643,7 @@
     rgb->g = byteToCol(out[1]);
     rgb->b = byteToCol(out[2]);
     return;
-  } else if (transform != NULL && transform->getTransformPixelType() == PT_CMYK) {
+  } else if (transform != nullptr && transform->getTransformPixelType() == PT_CMYK) {
     Guchar out[gfxColorMaxComps];
     double in[gfxColorMaxComps];
     double c, m, y, k, c1, m1, y1, k1, r, g, b;
@@ -1672,9 +1671,9 @@
   Y *= whiteY;
   Z *= whiteZ;
   // convert XYZ to RGB, including gamut mapping and gamma correction
-  r = xyzrgb[0][0] * X + xyzrgb[0][1] * Y + xyzrgb[0][2] * Z;
-  g = xyzrgb[1][0] * X + xyzrgb[1][1] * Y + xyzrgb[1][2] * Z;
-  b = xyzrgb[2][0] * X + xyzrgb[2][1] * Y + xyzrgb[2][2] * Z;
+  const double r = xyzrgb[0][0] * X + xyzrgb[0][1] * Y + xyzrgb[0][2] * Z;
+  const double g = xyzrgb[1][0] * X + xyzrgb[1][1] * Y + xyzrgb[1][2] * Z;
+  const double b = xyzrgb[2][0] * X + xyzrgb[2][1] * Y + xyzrgb[2][2] * Z;
   rgb->r = dblToCol(sqrt(clip01(r * kr)));
   rgb->g = dblToCol(sqrt(clip01(g * kg)));
   rgb->b = dblToCol(sqrt(clip01(b * kb)));
@@ -1685,7 +1684,7 @@
   GfxColorComp c, m, y, k;
 
 #ifdef USE_CMS
-  if (transform != NULL && transform->getTransformPixelType() == PT_CMYK) {
+  if (transform != nullptr && transform->getTransformPixelType() == PT_CMYK) {
     double in[gfxColorMaxComps];
     Guchar out[gfxColorMaxComps];
     
@@ -1798,8 +1797,8 @@
   rangeMin[0] = rangeMin[1] = rangeMin[2] = rangeMin[3] = 0;
   rangeMax[0] = rangeMax[1] = rangeMax[2] = rangeMax[3] = 1;
 #ifdef USE_CMS
-  transform = NULL;
-  lineTransform = NULL;
+  transform = nullptr;
+  lineTransform = nullptr;
 #endif
 }
 
@@ -1806,10 +1805,10 @@
 GfxICCBasedColorSpace::~GfxICCBasedColorSpace() {
   delete alt;
 #ifdef USE_CMS
-  if (transform != NULL) {
+  if (transform != nullptr) {
     if (transform->unref() == 0) delete transform;
   }
-  if (lineTransform != NULL) {
+  if (lineTransform != nullptr) {
     if (lineTransform->unref() == 0) delete lineTransform;
   }
 #endif
@@ -1826,9 +1825,9 @@
   }
 #ifdef USE_CMS
   cs->transform = transform;
-  if (transform != NULL) transform->ref();
+  if (transform != nullptr) transform->ref();
   cs->lineTransform = lineTransform;
-  if (lineTransform != NULL) lineTransform->ref();
+  if (lineTransform != nullptr) lineTransform->ref();
 #endif
   return cs;
 }
@@ -1844,7 +1843,7 @@
 
   if (arr->getLength() < 2) {
     error(errSyntaxError, -1, "Bad ICCBased color space");
-    return NULL;
+    return nullptr;
   }
   obj1 = arr->getNF(1);
   if (obj1.isRef()) {
@@ -1858,14 +1857,14 @@
   if (out && iccProfileStreamA.num > 0) {
     GfxICCBasedColorSpaceKey k(iccProfileStreamA.num, iccProfileStreamA.gen);
     GfxICCBasedColorSpaceItem *item = static_cast<GfxICCBasedColorSpaceItem *>(out->getIccColorSpaceCache()->lookup(k));
-    if (item != NULL)
+    if (item != nullptr)
     {
       cs = static_cast<GfxICCBasedColorSpace*>(item->cs->copy());
       int transformIntent = cs->getIntent();
       int cmsIntent = INTENT_RELATIVE_COLORIMETRIC;
-      if (state != NULL) {
+      if (state != nullptr) {
         const char *intent = state->getRenderingIntent();
-        if (intent != NULL) {
+        if (intent != nullptr) {
           if (strcmp(intent, "AbsoluteColorimetric") == 0) {
             cmsIntent = INTENT_ABSOLUTE_COLORIMETRIC;
           } else if (strcmp(intent, "Saturation") == 0) {
@@ -1885,7 +1884,7 @@
   obj1 = arr->get(1);
   if (!obj1.isStream()) {
     error(errSyntaxWarning, -1, "Bad ICCBased color space (stream)");
-    return NULL;
+    return nullptr;
   }
   dict = obj1.streamGetDict();
   obj2 = dict->lookup("N");
@@ -1902,7 +1901,7 @@
   }
   obj2 = dict->lookup("Alternate");
   if (obj2.isNull() ||
-      !(altA = GfxColorSpace::parse(NULL, &obj2, out, state, recursion + 1))) {
+      !(altA = GfxColorSpace::parse(nullptr, &obj2, out, state, recursion + 1))) {
     switch (nCompsA) {
     case 1:
       altA = new GfxDeviceGrayColorSpace();
@@ -1915,13 +1914,13 @@
       break;
     default:
       error(errSyntaxWarning, -1, "Bad ICCBased color space - invalid N");
-      return NULL;
+      return nullptr;
     }
   }
   if (altA->getNComps() != nCompsA) {
       error(errSyntaxWarning, -1, "Bad ICCBased color space - N doesn't match alt color space");
       delete altA;
-      return NULL;
+      return nullptr;
   }
   cs = new GfxICCBasedColorSpace(nCompsA, altA, &iccProfileStreamA);
   obj2 = dict->lookup("Range");
@@ -1946,12 +1945,12 @@
   profBuf = iccStream->toUnsignedChars(&length, 65536, 65536);
   cmsHPROFILE hp = cmsOpenProfileFromMem(profBuf,length);
   gfree(profBuf);
-  if (hp == 0) {
+  if (hp == nullptr) {
     error(errSyntaxWarning, -1, "read ICCBased color space profile error");
   } else {
-    cmsHPROFILE dhp = (state != NULL && state->getDisplayProfile() != NULL) ? state->getDisplayProfile() : displayProfile;
-    if (dhp == NULL) {
-      if (unlikely(RGBProfile == NULL)) {
+    cmsHPROFILE dhp = (state != nullptr && state->getDisplayProfile() != nullptr) ? state->getDisplayProfile() : displayProfile;
+    if (dhp == nullptr) {
+      if (unlikely(RGBProfile == nullptr)) {
         GfxColorSpace::setupColorProfiles();
       }
       dhp = RGBProfile;
@@ -1962,9 +1961,9 @@
     cmsHTRANSFORM transform;
 
     int cmsIntent = INTENT_RELATIVE_COLORIMETRIC;
-    if (state != NULL) {
+    if (state != nullptr) {
       const char *intent = state->getRenderingIntent();
-      if (intent != NULL) {
+      if (intent != nullptr) {
         if (strcmp(intent, "AbsoluteColorimetric") == 0) {
           cmsIntent = INTENT_ABSOLUTE_COLORIMETRIC;
         } else if (strcmp(intent, "Saturation") == 0) {
@@ -1979,9 +1978,9 @@
 	   dhp,
 	   COLORSPACE_SH(dcst) |
 	     CHANNELS_SH(dNChannels) | BYTES_SH(1),
-	   cmsIntent, LCMS_FLAGS)) == 0) {
+	   cmsIntent, LCMS_FLAGS)) == nullptr) {
       error(errSyntaxWarning, -1, "Can't create transform");
-      cs->transform = NULL;
+      cs->transform = nullptr;
     } else {
       cs->transform = new GfxColorTransform(transform, cmsIntent, cst, dcst);
     }
@@ -1989,9 +1988,9 @@
        // create line transform only when the display is RGB type color space 
       if ((transform = cmsCreateTransform(hp,
 	    CHANNELS_SH(nCompsA) | BYTES_SH(1),dhp,
-	    (dcst == PT_RGB) ? TYPE_RGB_8 : TYPE_CMYK_8, cmsIntent, LCMS_FLAGS)) == 0) {
+	    (dcst == PT_RGB) ? TYPE_RGB_8 : TYPE_CMYK_8, cmsIntent, LCMS_FLAGS)) == nullptr) {
 	error(errSyntaxWarning, -1, "Can't create transform");
-	cs->lineTransform = NULL;
+	cs->lineTransform = nullptr;
       } else {
 	cs->lineTransform = new GfxColorTransform(transform, cmsIntent, cst, dcst);
       }
@@ -2010,7 +2009,7 @@
 
 void GfxICCBasedColorSpace::getGray(GfxColor *color, GfxGray *gray) {
 #ifdef USE_CMS
-  if (transform != 0 && transform->getTransformPixelType() == PT_GRAY) {
+  if (transform != nullptr && transform->getTransformPixelType() == PT_GRAY) {
     Guchar in[gfxColorMaxComps];
     Guchar out[gfxColorMaxComps];
     
@@ -2059,7 +2058,7 @@
 
 void GfxICCBasedColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) {
 #ifdef USE_CMS
-  if (transform != 0 && transform->getTransformPixelType() == PT_RGB) {
+  if (transform != nullptr && transform->getTransformPixelType() == PT_RGB) {
     Guchar in[gfxColorMaxComps];
     Guchar out[gfxColorMaxComps];
     
@@ -2098,7 +2097,7 @@
       unsigned int value = (out[0] << 16) + (out[1] << 8) + out[2];
       cmsCache.insert(std::pair<unsigned int, unsigned int>(key, value));
     }
-  } else if (transform != NULL && transform->getTransformPixelType() == PT_CMYK) {
+  } else if (transform != nullptr && transform->getTransformPixelType() == PT_CMYK) {
     Guchar in[gfxColorMaxComps];
     Guchar out[gfxColorMaxComps];
     double c, m, y, k, c1, m1, y1, k1, r, g, b;
@@ -2158,7 +2157,7 @@
 void GfxICCBasedColorSpace::getRGBLine(Guchar *in, unsigned int *out,
 				       int length) {
 #ifdef USE_CMS
-  if (lineTransform != 0 && lineTransform->getTransformPixelType() == PT_RGB) {
+  if (lineTransform != nullptr && lineTransform->getTransformPixelType() == PT_RGB) {
     Guchar* tmp = (Guchar *)gmallocn(3 * length, sizeof(Guchar));
     lineTransform->doTransform(in, tmp, length);
     for (int i = 0; i < length; ++i) {
@@ -2176,7 +2175,7 @@
 
 void GfxICCBasedColorSpace::getRGBLine(Guchar *in, Guchar *out, int length) {
 #ifdef USE_CMS
-  if (lineTransform != 0 && lineTransform->getTransformPixelType() == PT_RGB) {
+  if (lineTransform != nullptr && lineTransform->getTransformPixelType() == PT_RGB) {
     Guchar* tmp = (Guchar *)gmallocn(3 * length, sizeof(Guchar));
     lineTransform->doTransform(in, tmp, length);
     Guchar *current = tmp;
@@ -2186,7 +2185,7 @@
         *out++ = *current++;
     }
     gfree(tmp);
-  } else if (lineTransform != NULL && lineTransform->getTransformPixelType() == PT_CMYK) {
+  } else if (lineTransform != nullptr && lineTransform->getTransformPixelType() == PT_CMYK) {
     Guchar* tmp = (Guchar *)gmallocn(4 * length, sizeof(Guchar));
     lineTransform->doTransform(in, tmp, length);
     Guchar *current = tmp;
@@ -2216,7 +2215,7 @@
 
 void GfxICCBasedColorSpace::getRGBXLine(Guchar *in, Guchar *out, int length) {
 #ifdef USE_CMS
-  if (lineTransform != 0 && lineTransform->getTransformPixelType() == PT_RGB) {
+  if (lineTransform != nullptr && lineTransform->getTransformPixelType() == PT_RGB) {
     Guchar* tmp = (Guchar *)gmallocn(3 * length, sizeof(Guchar));
     lineTransform->doTransform(in, tmp, length);
     Guchar *current = tmp;
@@ -2237,9 +2236,9 @@
 
 void GfxICCBasedColorSpace::getCMYKLine(Guchar *in, Guchar *out, int length) {
 #ifdef USE_CMS
-  if (lineTransform != NULL && lineTransform->getTransformPixelType() == PT_CMYK) {
+  if (lineTransform != nullptr && lineTransform->getTransformPixelType() == PT_CMYK) {
     transform->doTransform(in,out,length);
-  } else if (lineTransform != NULL && nComps != 4) {
+  } else if (lineTransform != nullptr && nComps != 4) {
     GfxColorComp c, m, y, k;
     Guchar* tmp = (Guchar *)gmallocn(3 * length, sizeof(Guchar));
     getRGBLine(in, tmp, length);
@@ -2271,7 +2270,7 @@
 
 void GfxICCBasedColorSpace::getDeviceNLine(Guchar *in, Guchar *out, int length) {
 #ifdef USE_CMS
-  if (lineTransform != NULL && lineTransform->getTransformPixelType() == PT_CMYK) {
+  if (lineTransform != nullptr && lineTransform->getTransformPixelType() == PT_CMYK) {
     Guchar* tmp = (Guchar *)gmallocn(4 * length, sizeof(Guchar));
     transform->doTransform(in,tmp,length);
     Guchar *p = tmp;
@@ -2282,7 +2281,7 @@
         *out++ = 0;
     }
     gfree(tmp);
-  } else if (lineTransform != NULL && nComps != 4) {
+  } else if (lineTransform != nullptr && nComps != 4) {
     GfxColorComp c, m, y, k;
     Guchar* tmp = (Guchar *)gmallocn(3 * length, sizeof(Guchar));
     getRGBLine(in, tmp, length);
@@ -2317,7 +2316,7 @@
 
 void GfxICCBasedColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) {
 #ifdef USE_CMS
-  if (transform != NULL && transform->getTransformPixelType() == PT_CMYK) {
+  if (transform != nullptr && transform->getTransformPixelType() == PT_CMYK) {
     Guchar in[gfxColorMaxComps];
     Guchar out[gfxColorMaxComps];
     
@@ -2358,7 +2357,7 @@
       unsigned int value = (out[0] << 24) + (out[1] << 16) + (out[2] << 8) + out[3];
       cmsCache.insert(std::pair<unsigned int, unsigned int>(key, value));
     }
-  } else if (nComps != 4 && transform != NULL && transform->getTransformPixelType() == PT_RGB) {
+  } else if (nComps != 4 && transform != nullptr && transform->getTransformPixelType() == PT_RGB) {
     GfxRGB rgb;
     GfxColorComp c, m, y, k;
 
@@ -2387,7 +2386,7 @@
 
 GBool GfxICCBasedColorSpace::useGetRGBLine() {
 #ifdef USE_CMS
-  return lineTransform != NULL || alt->useGetRGBLine();
+  return lineTransform != nullptr || alt->useGetRGBLine();
 #else
   return alt->useGetRGBLine();
 #endif
@@ -2395,7 +2394,7 @@
 
 GBool GfxICCBasedColorSpace::useGetCMYKLine() {
 #ifdef USE_CMS
-  return lineTransform != NULL || alt->useGetCMYKLine();
+  return lineTransform != nullptr || alt->useGetCMYKLine();
 #else
   return alt->useGetCMYKLine();
 #endif
@@ -2403,7 +2402,7 @@
 
 GBool GfxICCBasedColorSpace::useGetDeviceNLine() {
 #ifdef USE_CMS
-  return lineTransform != NULL || alt->useGetDeviceNLine();
+  return lineTransform != nullptr || alt->useGetDeviceNLine();
 #else
   return alt->useGetDeviceNLine();
 #endif
@@ -2722,13 +2721,13 @@
   delete name;
   delete alt;
   delete func;
-  if (mapping != NULL)
+  if (mapping != nullptr)
     gfree(mapping);
 }
 
 GfxColorSpace *GfxSeparationColorSpace::copy() {
-  int *mappingA = NULL;
-  if (mapping != NULL) {
+  int *mappingA = nullptr;
+  if (mapping != nullptr) {
     mappingA = (int *) gmalloc(sizeof(int));
     *mappingA = *mapping;
   }
@@ -2857,7 +2856,7 @@
 void GfxSeparationColorSpace::getDeviceN(GfxColor *color, GfxColor *deviceN) {
   for (int i = 0; i < gfxColorMaxComps; i++)
     deviceN->c[i] = 0;
-  if (mapping == NULL || mapping[0] == -1) {
+  if (mapping == nullptr || mapping[0] == -1) {
     GfxCMYK cmyk;
 
     getCMYK(color, &cmyk);
@@ -2900,7 +2899,7 @@
             error(errSyntaxWarning, -1,
               "Different functions found for '{0:t}', convert immediately", name);
             gfree(mapping);
-            mapping = NULL;
+            mapping = nullptr;
             return;
           }
           *mapping = i+4;
@@ -2913,7 +2912,7 @@
         error(errSyntaxWarning, -1,
 	        "Too many ({0:d}) spots, convert '{1:t}' immediately", maxSepComps, name);
         gfree(mapping);
-        mapping = NULL;
+        mapping = nullptr;
         return;
       }
       *mapping = separationList->getLength() + 4;
@@ -2940,7 +2939,7 @@
   sepsCS = sepsCSA;
   nonMarking = gTrue;
   overprintMask = 0;
-  mapping = NULL;
+  mapping = nullptr;
   for (i = 0; i < nComps; ++i) {
     names[i] = namesA[i];
     if (names[i]->cmp("None")) {
@@ -2993,22 +2992,22 @@
   delete alt;
   delete func;
   deleteGooList(sepsCS, GfxSeparationColorSpace);
-  if (mapping != NULL)
+  if (mapping != nullptr)
     gfree(mapping);
 }
 
 GfxColorSpace *GfxDeviceNColorSpace::copy() {
   int i;
-  int *mappingA = NULL;
+  int *mappingA = nullptr;
 
   GooList *sepsCSA = new GooList(sepsCS->getLength());
   for (i = 0; i < sepsCS->getLength(); i++) {
     GfxSeparationColorSpace *scs = (GfxSeparationColorSpace *) sepsCS->get(i);
-    if (likely(scs != NULL)) {
+    if (likely(scs != nullptr)) {
       sepsCSA->append(scs->copy());
     }
   }
-  if (mapping != NULL) {
+  if (mapping != nullptr) {
     mappingA = (int *)gmalloc(sizeof(int) * nComps);
     for (i = 0; i < nComps; i++)
       mappingA[i] = mapping[i];
@@ -3092,7 +3091,7 @@
   }
  err1:
   delete separationList;
-  return NULL;
+  return nullptr;
 }
 
 void GfxDeviceNColorSpace::getGray(GfxColor *color, GfxGray *gray) {
@@ -3143,7 +3142,7 @@
 void GfxDeviceNColorSpace::getDeviceN(GfxColor *color, GfxColor *deviceN) {
   for (int i = 0; i < gfxColorMaxComps; i++)
     deviceN->c[i] = 0;
-  if (mapping == NULL) {
+  if (mapping == nullptr) {
     GfxCMYK cmyk;
 
     getCMYK(color, &cmyk);
@@ -3189,7 +3188,7 @@
     } else {
       Guint startOverprintMask = 0x10;
       GBool found = gFalse;
-      Function *sepFunc = NULL;
+      Function *sepFunc = nullptr;
       if (nComps == 1)
         sepFunc = func;
       else {
@@ -3204,11 +3203,11 @@
       for (int j = 0; j < separationList->getLength(); j++) {
         GfxSeparationColorSpace *sepCS = (GfxSeparationColorSpace *)separationList->get(j);
         if (!sepCS->getName()->cmp(names[i])) {
-          if (sepFunc != NULL && sepCS->getFunc()->hasDifferentResultSet(sepFunc)) {
+          if (sepFunc != nullptr && sepCS->getFunc()->hasDifferentResultSet(sepFunc)) {
             error(errSyntaxWarning, -1,
               "Different functions found for '{0:t}', convert immediately", names[i]);
             gfree(mapping);
-            mapping = NULL;
+            mapping = nullptr;
             overprintMask = 0xffffffff;
             return;
           }
@@ -3224,7 +3223,7 @@
           error(errSyntaxWarning, -1,
             "Too many ({0:d}) spots, convert '{1:t}' immediately", maxSepComps, names[i]);
           gfree(mapping);
-          mapping = NULL;
+          mapping = nullptr;
           overprintMask = 0xffffffff;
           return;
         }
@@ -3244,7 +3243,7 @@
           if(!found) {
             error(errSyntaxWarning, -1, "DeviceN has no suitable colorant");
             gfree(mapping);
-            mapping = NULL;
+            mapping = nullptr;
             overprintMask = 0xffffffff;
             return;
           }
@@ -3271,7 +3270,7 @@
 
 GfxColorSpace *GfxPatternColorSpace::copy() {
   return new GfxPatternColorSpace(under ? under->copy() :
-				          (GfxColorSpace *)NULL);
+				          (GfxColorSpace *)nullptr);
 }
 
 GfxColorSpace *GfxPatternColorSpace::parse(GfxResources *res, Array *arr, OutputDev *out, GfxState *state, int recursion) {
@@ -3281,14 +3280,14 @@
 
   if (arr->getLength() != 1 && arr->getLength() != 2) {
     error(errSyntaxWarning, -1, "Bad Pattern color space");
-    return NULL;
+    return nullptr;
   }
-  underA = NULL;
+  underA = nullptr;
   if (arr->getLength() == 2) {
     obj1 = arr->get(1);
     if (!(underA = GfxColorSpace::parse(res, &obj1, out, state, recursion + 1))) {
       error(errSyntaxWarning, -1, "Bad Pattern color space (underlying color space)");
-      return NULL;
+      return nullptr;
     }
   }
   cs = new GfxPatternColorSpace(underA);
@@ -3343,7 +3342,7 @@
   } else {
     return nullptr;
   }
-  pattern = NULL;
+  pattern = nullptr;
   if (obj1.isInt() && obj1.getInt() == 1) {
     pattern = GfxTilingPattern::parse(obj, patternRefNum);
   } else if (obj1.isInt() && obj1.getInt() == 2) {
@@ -3366,7 +3365,7 @@
   int i;
 
   if (!patObj->isStream()) {
-    return NULL;
+    return nullptr;
   }
   dict = patObj->streamGetDict();
 
@@ -3474,7 +3473,7 @@
   int i;
 
   if (!patObj->isDict()) {
-    return NULL;
+    return nullptr;
   }
   dict = patObj->getDict();
 
@@ -3481,7 +3480,7 @@
   obj1 = dict->lookup("Shading");
   shadingA = GfxShading::parse(res, &obj1, out, state);
   if (!shadingA) {
-    return NULL;
+    return nullptr;
   }
 
   matrixA[0] = 1; matrixA[1] = 0;
@@ -3525,7 +3524,7 @@
 
 GfxShading::GfxShading(int typeA) {
   type = typeA;
-  colorSpace = NULL;
+  colorSpace = nullptr;
 }
 
 GfxShading::GfxShading(GfxShading *shading) {
@@ -3561,13 +3560,13 @@
   } else if (obj->isStream()) {
     dict = obj->streamGetDict();
   } else {
-    return NULL;
+    return nullptr;
   }
 
   obj1 = dict->lookup("ShadingType");
   if (!obj1.isInt()) {
     error(errSyntaxWarning, -1, "Invalid ShadingType in shading dictionary");
-    return NULL;
+    return nullptr;
   }
   typeA = obj1.getInt();
 
@@ -3621,7 +3620,7 @@
   return shading;
 
  err1:
-  return NULL;
+  return nullptr;
 }
 
 GBool GfxShading::init(GfxResources *res, Dict *dict, OutputDev *out, GfxState *state) {
@@ -3742,11 +3741,17 @@
   x1A = y1A = 1;
   obj1 = dict->lookup("Domain");
   if (obj1.isArray() && obj1.arrayGetLength() == 4) {
+    bool decodeOk = true;
     Object obj2;
-    x0A = (obj2 = obj1.arrayGet(0), obj2.getNum());
-    x1A = (obj2 = obj1.arrayGet(1), obj2.getNum());
-    y0A = (obj2 = obj1.arrayGet(2), obj2.getNum());
-    y1A = (obj2 = obj1.arrayGet(3), obj2.getNum());
+    x0A = (obj2 = obj1.arrayGet(0), obj2.getNum(&decodeOk));
+    x1A = (obj2 = obj1.arrayGet(1), obj2.getNum(&decodeOk));
+    y0A = (obj2 = obj1.arrayGet(2), obj2.getNum(&decodeOk));
+    y1A = (obj2 = obj1.arrayGet(3), obj2.getNum(&decodeOk));
+
+    if (!decodeOk) {
+      error(errSyntaxWarning, -1, "Invalid Domain array in function shading dictionary");
+      return nullptr;
+    }
   }
 
   matrixA[0] = 1; matrixA[1] = 0;
@@ -3754,13 +3759,19 @@
   matrixA[4] = 0; matrixA[5] = 0;
   obj1 = dict->lookup("Matrix");
   if (obj1.isArray() && obj1.arrayGetLength() == 6) {
+    bool decodeOk = true;
     Object obj2;
-    matrixA[0] = (obj2 = obj1.arrayGet(0), obj2.getNum());
-    matrixA[1] = (obj2 = obj1.arrayGet(1), obj2.getNum());
-    matrixA[2] = (obj2 = obj1.arrayGet(2), obj2.getNum());
-    matrixA[3] = (obj2 = obj1.arrayGet(3), obj2.getNum());
-    matrixA[4] = (obj2 = obj1.arrayGet(4), obj2.getNum());
-    matrixA[5] = (obj2 = obj1.arrayGet(5), obj2.getNum());
+    matrixA[0] = (obj2 = obj1.arrayGet(0), obj2.getNum(&decodeOk));
+    matrixA[1] = (obj2 = obj1.arrayGet(1), obj2.getNum(&decodeOk));
+    matrixA[2] = (obj2 = obj1.arrayGet(2), obj2.getNum(&decodeOk));
+    matrixA[3] = (obj2 = obj1.arrayGet(3), obj2.getNum(&decodeOk));
+    matrixA[4] = (obj2 = obj1.arrayGet(4), obj2.getNum(&decodeOk));
+    matrixA[5] = (obj2 = obj1.arrayGet(5), obj2.getNum(&decodeOk));
+
+    if (!decodeOk) {
+      error(errSyntaxWarning, -1, "Invalid Matrix array in function shading dictionary");
+      return nullptr;
+    }
   }
 
   obj1 = dict->lookup("Function");
@@ -3787,7 +3798,7 @@
 				   funcsA, nFuncsA);
   if (!shading->init(res, dict, out, state)) {
     delete shading;
-    return NULL;
+    return nullptr;
   }
   return shading;
 }
@@ -3838,9 +3849,9 @@
 
   cacheSize = 0;
   lastMatch = 0;
-  cacheBounds = NULL;
-  cacheCoeff = NULL;
-  cacheValues = NULL;
+  cacheBounds = nullptr;
+  cacheCoeff = nullptr;
+  cacheValues = nullptr;
 }
 
 GfxUnivariateShading::GfxUnivariateShading(GfxUnivariateShading *shading):
@@ -3859,9 +3870,9 @@
 
   cacheSize = 0;
   lastMatch = 0;
-  cacheBounds = NULL;
-  cacheCoeff = NULL;
-  cacheValues = NULL;
+  cacheBounds = nullptr;
+  cacheCoeff = nullptr;
+  cacheValues = nullptr;
 }
 
 GfxUnivariateShading::~GfxUnivariateShading() {
@@ -3876,7 +3887,6 @@
 
 void GfxUnivariateShading::getColor(double t, GfxColor *color) {
   double out[gfxColorMaxComps];
-  int i;
 
   // NB: there can be one function with n outputs or n functions with
   // one output each (where n = number of color components)
@@ -3906,14 +3916,14 @@
     u = cacheValues + lastMatch * nComps;
     l = u - nComps;
 
-    for (i = 0; i < nComps; ++i) {
+    for (int i = 0; i < nComps; ++i) {
       out[i] = ix * l[i] + x * u[i];
     }
   } else {
-    for (i = 0; i < nComps; ++i) {
+    for (int i = 0; i < nComps; ++i) {
       out[i] = 0;
     }
-    for (i = 0; i < nFuncs; ++i) {
+    for (int i = 0; i < nFuncs; ++i) {
       if (funcs[i]->getInputSize() != 1) {
         error(errSyntaxWarning, -1, "Invalid shading function (input != 1)");
         break;
@@ -3922,7 +3932,7 @@
     }
   }
 
-  for (i = 0; i < nComps; ++i) {
+  for (int i = 0; i < nComps; ++i) {
     color->c[i] = dblToCol(out[i]);
   }
 }
@@ -3934,7 +3944,7 @@
   int i, j, nComps, maxSize;
 
   gfree (cacheBounds);
-  cacheBounds = NULL;
+  cacheBounds = nullptr;
   cacheSize = 0;
 
   if (unlikely(nFuncs < 1))
@@ -4240,12 +4250,13 @@
   obj1 = dict->lookup("Coords");
   if (obj1.isArray() && obj1.arrayGetLength() == 6) {
     Object obj2;
-    x0A = (obj2 = obj1.arrayGet(0), obj2.getNum());
-    y0A = (obj2 = obj1.arrayGet(1), obj2.getNum());
-    r0A = (obj2 = obj1.arrayGet(2), obj2.getNum());
-    x1A = (obj2 = obj1.arrayGet(3), obj2.getNum());
-    y1A = (obj2 = obj1.arrayGet(4), obj2.getNum());
-    r1A = (obj2 = obj1.arrayGet(5), obj2.getNum());
+    bool dummy; // just so that we can use the getNum that returns 0 on obj2 not being a num instead of aborting
+    x0A = (obj2 = obj1.arrayGet(0), obj2.getNum(&dummy));
+    y0A = (obj2 = obj1.arrayGet(1), obj2.getNum(&dummy));
+    r0A = (obj2 = obj1.arrayGet(2), obj2.getNum(&dummy));
+    x1A = (obj2 = obj1.arrayGet(3), obj2.getNum(&dummy));
+    y1A = (obj2 = obj1.arrayGet(4), obj2.getNum(&dummy));
+    r1A = (obj2 = obj1.arrayGet(5), obj2.getNum(&dummy));
   } else {
     error(errSyntaxWarning, -1, "Missing or invalid Coords in shading dictionary");
     return nullptr;
@@ -4256,8 +4267,8 @@
   obj1 = dict->lookup("Domain");
   if (obj1.isArray() && obj1.arrayGetLength() == 2) {
     Object obj2;
-    t0A = (obj2 = obj1.arrayGet(0), obj2.getNum());
-    t1A = (obj2 = obj1.arrayGet(1), obj2.getNum());
+    t0A = (obj2 = obj1.arrayGet(0), obj2.isNum() ? obj2.getNum() : 0);
+    t1A = (obj2 = obj1.arrayGet(1), obj2.isNum() ? obj2.getNum() : 1);
   }
 
   obj1 = dict->lookup("Function");
@@ -4284,8 +4295,8 @@
   obj1 = dict->lookup("Extend");
   if (obj1.isArray() && obj1.arrayGetLength() == 2) {
     Object obj2;
-    extend0A = (obj2 = obj1.arrayGet(0), obj2.getBool());
-    extend1A = (obj2 = obj1.arrayGet(1), obj2.getBool());
+    extend0A = (obj2 = obj1.arrayGet(0), obj2.isBool() ? obj2.getBool() : gFalse);
+    extend1A = (obj2 = obj1.arrayGet(1), obj2.isBool() ? obj2.getBool() : gFalse);
   }
 
   shading = new GfxRadialShading(x0A, y0A, r0A, x1A, y1A, r1A, t0A, t1A,
@@ -4292,7 +4303,7 @@
 				 funcsA, nFuncsA, extend0A, extend1A);
   if (!shading->init(res, dict, out, state)) {
     delete shading;
-    return NULL;
+    return nullptr;
   }
   return shading;
 }
@@ -4619,6 +4630,8 @@
 
   GfxShadingBitBuf(Stream *strA);
   ~GfxShadingBitBuf();
+  GfxShadingBitBuf(const GfxShadingBitBuf &) = delete;
+  GfxShadingBitBuf& operator=(const GfxShadingBitBuf &) = delete;
   GBool getBits(int n, Guint *val);
   void flushBits();
 
@@ -4784,18 +4797,24 @@
   obj1 = dict->lookup("Decode");
   if (obj1.isArray() && obj1.arrayGetLength() >= 6) {
     Object obj2;
-    xMin = (obj2 = obj1.arrayGet(0), obj2.getNum());
-    xMax = (obj2 = obj1.arrayGet(1), obj2.getNum());
+    bool decodeOk = true;
+    xMin = (obj2 = obj1.arrayGet(0), obj2.getNum(&decodeOk));
+    xMax = (obj2 = obj1.arrayGet(1), obj2.getNum(&decodeOk));
     xMul = (xMax - xMin) / (pow(2.0, coordBits) - 1);
-    yMin = (obj2 = obj1.arrayGet(2), obj2.getNum());
-    yMax = (obj2 = obj1.arrayGet(3), obj2.getNum());
+    yMin = (obj2 = obj1.arrayGet(2), obj2.getNum(&decodeOk));
+    yMax = (obj2 = obj1.arrayGet(3), obj2.getNum(&decodeOk));
     yMul = (yMax - yMin) / (pow(2.0, coordBits) - 1);
     for (i = 0; 5 + 2*i < obj1.arrayGetLength() && i < gfxColorMaxComps; ++i) {
-      cMin[i] = (obj2 = obj1.arrayGet(4 + 2*i), obj2.getNum());
-      cMax[i] = (obj2 = obj1.arrayGet(5 + 2*i), obj2.getNum());
+      cMin[i] = (obj2 = obj1.arrayGet(4 + 2*i), obj2.getNum(&decodeOk));
+      cMax[i] = (obj2 = obj1.arrayGet(5 + 2*i), obj2.getNum(&decodeOk));
       cMul[i] = (cMax[i] - cMin[i]) / (double)((1 << compBits) - 1);
     }
     nComps = i;
+
+    if (!decodeOk) {
+      error(errSyntaxWarning, -1, "Missing or invalid Decode array in shading dictionary");
+      return nullptr;
+    }
   } else {
     error(errSyntaxWarning, -1, "Missing or invalid Decode array in shading dictionary");
     return nullptr;
@@ -4826,8 +4845,8 @@
   }
 
   nVerticesA = nTrianglesA = 0;
-  verticesA = NULL;
-  trianglesA = NULL;
+  verticesA = nullptr;
+  trianglesA = nullptr;
   vertSize = triSize = 0;
   state = 0;
   flag = 0; // make gcc happy
@@ -4919,7 +4938,7 @@
 					  funcsA, nFuncsA);
   if (!shading->init(res, dict, out, gfxState)) {
     delete shading;
-    return NULL;
+    return nullptr;
   }
   return shading;
 }
@@ -5157,7 +5176,7 @@
   }
 
   nPatchesA = 0;
-  patchesA = NULL;
+  patchesA = nullptr;
   patchesSize = 0;
   bitBuf = new GfxShadingBitBuf(str);
   while (1) {
@@ -5640,10 +5659,10 @@
 
   // initialize
   for (k = 0; k < gfxColorMaxComps; ++k) {
-    lookup[k] = NULL;
-    lookup2[k] = NULL;
+    lookup[k] = nullptr;
+    lookup2[k] = nullptr;
   }
-  byte_lookup = NULL;
+  byte_lookup = nullptr;
 
   // get decode map
   if (decode->isNull()) {
@@ -5689,7 +5708,7 @@
   // Optimization: for Indexed and Separation color spaces (which have
   // only one component), we pre-compute a second lookup table with
   // color values
-  colorSpace2 = NULL;
+  colorSpace2 = nullptr;
   nComps2 = 0;
   useByteLookup = gFalse;
   switch (colorSpace->getMode()) {
@@ -5786,9 +5805,9 @@
   nComps2 = colorMap->nComps2;
   useMatte = colorMap->useMatte;
   matteColor = colorMap->matteColor;
-  colorSpace2 = NULL;
+  colorSpace2 = nullptr;
   for (k = 0; k < gfxColorMaxComps; ++k) {
-    lookup[k] = NULL;
+    lookup[k] = nullptr;
   }
   n = 1 << bits;
   if (colorSpace->getMode() == csIndexed) {
@@ -6090,7 +6109,6 @@
 }
 
 void GfxImageColorMap::getDeviceNLine(Guchar *in, Guchar *out, int length) {
-  int i, j;
   Guchar *inp, *tmp_line;
 
   if (!useDeviceNLine()) {
@@ -6097,7 +6115,7 @@
     GfxColor deviceN;
 
     inp = in;
-    for (i = 0; i < length; i++) {
+    for (int i = 0; i < length; i++) {
       getDeviceN (inp, &deviceN);
       for (int j = 0; j < SPOT_NCOMPS+4; j++)
         *out++ = deviceN.c[j];
@@ -6110,8 +6128,8 @@
   case csIndexed:
   case csSeparation:
     tmp_line = (Guchar *) gmallocn (length, nComps2);
-    for (i = 0; i < length; i++) {
-      for (j = 0; j < nComps2; j++) {
+    for (int i = 0; i < length; i++) {
+      for (int j = 0; j < nComps2; j++) {
 	tmp_line[i * nComps2 + j] = byte_lookup[in[i] * nComps2 + j];
       }
     }
@@ -6121,8 +6139,8 @@
 
   default:
     inp = in;
-    for (j = 0; j < length; j++)
-      for (i = 0; i < nComps; i++) {
+    for (int j = 0; j < length; j++)
+      for (int i = 0; i < nComps; i++) {
 	*inp = byte_lookup[*inp * nComps + i];
 	inp++;
       }
@@ -6375,12 +6393,12 @@
 //------------------------------------------------------------------------
 //
 //------------------------------------------------------------------------
-GfxState::ReusablePathIterator::ReusablePathIterator(GfxPath *path)
- : path(path),
+GfxState::ReusablePathIterator::ReusablePathIterator(GfxPath *pathA)
+ : path(pathA),
    subPathOff(0),
    coordOff(0),
    numCoords(0),
-   curSubPath(NULL)
+   curSubPath(nullptr)
 {
   if( path->getNumSubpaths() ) {
     curSubPath = path->getSubpath(subPathOff);
@@ -6471,8 +6489,8 @@
   strokeColorSpace = new GfxDeviceGrayColorSpace();
   fillColor.c[0] = 0;
   strokeColor.c[0] = 0;
-  fillPattern = NULL;
-  strokePattern = NULL;
+  fillPattern = nullptr;
+  strokePattern = nullptr;
   blendMode = gfxBlendNormal;
   fillOpacity = 1;
   strokeOpacity = 1;
@@ -6479,10 +6497,10 @@
   fillOverprint = gFalse;
   strokeOverprint = gFalse;
   overprintMode = 0;
-  transfer[0] = transfer[1] = transfer[2] = transfer[3] = NULL;
+  transfer[0] = transfer[1] = transfer[2] = transfer[3] = nullptr;
 
   lineWidth = 1;
-  lineDash = NULL;
+  lineDash = nullptr;
   lineDashLength = 0;
   lineDashStart = 0;
   flatness = 1;
@@ -6493,7 +6511,7 @@
   alphaIsShape = gFalse;
   textKnockout = gFalse;
 
-  font = NULL;
+  font = nullptr;
   fontSize = 0;
   textMat[0] = 1; textMat[1] = 0;
   textMat[2] = 0; textMat[3] = 1;
@@ -6516,14 +6534,14 @@
 
   renderingIntent[0] = 0;
 
-  saved = NULL;
+  saved = nullptr;
 #ifdef USE_CMS
   GfxColorSpace::setupColorProfiles();
-  XYZ2DisplayTransformRelCol = NULL;
-  XYZ2DisplayTransformAbsCol = NULL;
-  XYZ2DisplayTransformSat = NULL;
-  XYZ2DisplayTransformPerc = NULL;
-  localDisplayProfile = NULL;
+  XYZ2DisplayTransformRelCol = nullptr;
+  XYZ2DisplayTransformAbsCol = nullptr;
+  XYZ2DisplayTransformSat = nullptr;
+  XYZ2DisplayTransformPerc = nullptr;
+  localDisplayProfile = nullptr;
   displayProfileRef = 0;
 #endif
 }
@@ -6573,7 +6591,7 @@
     if (XYZ2DisplayTransformPerc->unref() == 0)
       delete XYZ2DisplayTransformPerc;
   }
-  if (--displayProfileRef == 0 && localDisplayProfile != NULL) {
+  if (--displayProfileRef == 0 && localDisplayProfile != nullptr) {
     cmsCloseProfile(localDisplayProfile);
   }
 #endif
@@ -6611,7 +6629,7 @@
   if (copyPath) {
     path = state->path->copy();
   }
-  saved = NULL;
+  saved = nullptr;
 #ifdef USE_CMS
   if (XYZ2DisplayTransformRelCol) {
     XYZ2DisplayTransformRelCol->ref();
@@ -6633,11 +6651,11 @@
 
 #ifdef USE_CMS
 void GfxState::setDisplayProfile(cmsHPROFILE localDisplayProfileA) {
-  if (localDisplayProfile != NULL) {
+  if (localDisplayProfile != nullptr) {
     cmsCloseProfile(localDisplayProfile);
   }
   localDisplayProfile = localDisplayProfileA;
-  if (localDisplayProfileA != NULL) {
+  if (localDisplayProfileA != nullptr) {
     cmsHTRANSFORM transform;
     unsigned int nChannels;
     unsigned int localDisplayPixelType;
@@ -6651,7 +6669,7 @@
 	   localDisplayProfile,
 	   COLORSPACE_SH(localDisplayPixelType) |
 	     CHANNELS_SH(nChannels) | BYTES_SH(1),
-	  INTENT_RELATIVE_COLORIMETRIC,LCMS_FLAGS)) == 0) {
+	  INTENT_RELATIVE_COLORIMETRIC,LCMS_FLAGS)) == nullptr) {
       error(errSyntaxWarning, -1, "Can't create Lab transform");
     } else {
       XYZ2DisplayTransformRelCol = new GfxColorTransform(transform, INTENT_RELATIVE_COLORIMETRIC, PT_XYZ, localDisplayPixelType);
@@ -6660,7 +6678,7 @@
 	   localDisplayProfile,
 	   COLORSPACE_SH(localDisplayPixelType) |
 	     CHANNELS_SH(nChannels) | BYTES_SH(1),
-	  INTENT_ABSOLUTE_COLORIMETRIC,LCMS_FLAGS)) == 0) {
+	  INTENT_ABSOLUTE_COLORIMETRIC,LCMS_FLAGS)) == nullptr) {
       error(errSyntaxWarning, -1, "Can't create Lab transform");
     } else {
       XYZ2DisplayTransformAbsCol = new GfxColorTransform(transform, INTENT_ABSOLUTE_COLORIMETRIC, PT_XYZ, localDisplayPixelType);
@@ -6669,7 +6687,7 @@
 	   localDisplayProfile,
 	   COLORSPACE_SH(localDisplayPixelType) |
 	     CHANNELS_SH(nChannels) | BYTES_SH(1),
-	  INTENT_SATURATION,LCMS_FLAGS)) == 0) {
+	  INTENT_SATURATION,LCMS_FLAGS)) == nullptr) {
       error(errSyntaxWarning, -1, "Can't create Lab transform");
     } else {
       XYZ2DisplayTransformSat = new GfxColorTransform(transform, INTENT_SATURATION, PT_XYZ, localDisplayPixelType);
@@ -6678,7 +6696,7 @@
 	   localDisplayProfile,
 	   COLORSPACE_SH(localDisplayPixelType) |
 	     CHANNELS_SH(nChannels) | BYTES_SH(1),
-	  INTENT_PERCEPTUAL,LCMS_FLAGS)) == 0) {
+	  INTENT_PERCEPTUAL,LCMS_FLAGS)) == nullptr) {
       error(errSyntaxWarning, -1, "Can't create Lab transform");
     } else {
       XYZ2DisplayTransformPerc = new GfxColorTransform(transform, INTENT_PERCEPTUAL, PT_XYZ, localDisplayPixelType);
@@ -6698,7 +6716,7 @@
   } else if (strcmp(renderingIntent, "Perceptual") == 0) {
     transform = XYZ2DisplayTransformPerc;
   }
-  if (transform == NULL) {
+  if (transform == nullptr) {
     transform = XYZ2DisplayTransform;
   }
   return transform;
@@ -7084,8 +7102,8 @@
     oldState->lineX = lineX;
     oldState->lineY = lineY;
 
-    path = NULL;
-    saved = NULL;
+    path = nullptr;
+    saved = nullptr;
     delete this;
 
   } else {

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/GfxState.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/GfxState.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/GfxState.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -17,7 +17,7 @@
 // Copyright (C) 2006, 2007 Jeff Muizelaar <jeff at infidigm.net>
 // Copyright (C) 2006 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2009 Koji Otani <sho at bbr.jp>
-// Copyright (C) 2009-2011, 2013, 2016, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2009-2011, 2013, 2016-2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2010 Christian Feuersänger <cfeuersaenger at googlemail.com>
 // Copyright (C) 2011 Andrea Canciani <ranma42 at gmail.com>
 // Copyright (C) 2011-2014, 2016 Thomas Freitag <Thomas.Freitag at alfa.de>
@@ -196,6 +196,8 @@
   // transformA should be a cmsHTRANSFORM
   GfxColorTransform(void *transformA, int cmsIntent, unsigned int inputPixelType, unsigned int transformPixelType);
   ~GfxColorTransform();
+  GfxColorTransform(const GfxColorTransform &) = delete;
+  GfxColorTransform& operator=(const GfxColorTransform &) = delete;
   int getIntent() { return cmsIntent; }
   int getInputPixelType() { return inputPixelType; }
   int getTransformPixelType() { return transformPixelType; }
@@ -215,6 +217,10 @@
 
   GfxColorSpace();
   virtual ~GfxColorSpace();
+
+  GfxColorSpace(const GfxColorSpace &) = delete;
+  GfxColorSpace& operator=(const GfxColorSpace &other) = delete;
+
   virtual GfxColorSpace *copy() = 0;
   virtual GfxColorSpaceMode getMode() = 0;
 
@@ -766,6 +772,9 @@
   GfxPattern(int typeA, int patternRefNumA);
   virtual ~GfxPattern();
 
+  GfxPattern(const GfxPattern &) = delete;
+  GfxPattern& operator=(const GfxPattern &other) = delete;
+
   static GfxPattern *parse(GfxResources *res, Object *obj, OutputDev *out, GfxState *state, int patternRefNum);
 
   virtual GfxPattern *copy() = 0;
@@ -852,6 +861,9 @@
   GfxShading(GfxShading *shading);
   virtual ~GfxShading();
 
+  GfxShading(const GfxShading &) = delete;
+  GfxShading& operator=(const GfxShading &other) = delete;
+
   static GfxShading *parse(GfxResources *res, Object *obj, OutputDev *out, GfxState *state);
 
   virtual GfxShading *copy() = 0;
@@ -1175,6 +1187,9 @@
   // Destructor.
   ~GfxImageColorMap();
 
+  GfxImageColorMap(const GfxImageColorMap &) = delete;
+  GfxImageColorMap& operator=(const GfxImageColorMap &) = delete;
+
   // Return a copy of this color map.
   GfxImageColorMap *copy() { return new GfxImageColorMap(this); }
 
@@ -1248,6 +1263,9 @@
   // Destructor.
   ~GfxSubpath();
 
+  GfxSubpath(const GfxSubpath &) = delete;
+  GfxSubpath& operator=(const GfxSubpath &) = delete;
+
   // Copy.
   GfxSubpath *copy() { return new GfxSubpath(this); }
 
@@ -1299,6 +1317,9 @@
   // Destructor.
   ~GfxPath();
 
+  GfxPath(const GfxPath &) = delete;
+  GfxPath& operator=(const GfxPath &) = delete;
+
   // Copy.
   GfxPath *copy()
     { return new GfxPath(justMoved, firstX, firstY, subpaths, n, size); }
@@ -1419,6 +1440,9 @@
   // Destructor.
   ~GfxState();
 
+  GfxState(const GfxState &) = delete;
+  GfxState& operator=(const GfxState &) = delete;
+
   // Copy.
   GfxState *copy(GBool copyPath = gFalse)
     { return new GfxState(this, copyPath); }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -15,7 +15,7 @@
 //
 // Copyright (C) 2005 Martin Kretzschmar <martink at gnome.org>
 // Copyright (C) 2005, 2006 Kristian Høgsberg <krh at redhat.com>
-// Copyright (C) 2005, 2007-2010, 2012, 2015, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2007-2010, 2012, 2015, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2005 Jonathan Blandford <jrb at redhat.com>
 // Copyright (C) 2006, 2007 Jeff Muizelaar <jeff at infidigm.net>
 // Copyright (C) 2006 Takashi Iwai <tiwai at suse.de>
@@ -127,7 +127,7 @@
 
 //------------------------------------------------------------------------
 
-GlobalParams *globalParams = NULL;
+GlobalParams *globalParams = nullptr;
 
 #if defined(ENABLE_RELOCATABLE) && defined(_WIN32)
 
@@ -210,6 +210,8 @@
   SysFontInfo(GooString *nameA, GBool boldA, GBool italicA, GBool obliqueA, GBool fixedWidthA,
 	      GooString *pathA, SysFontType typeA, int fontNumA, GooString *substituteNameA);
   ~SysFontInfo();
+  SysFontInfo(const SysFontInfo &) = delete;
+  SysFontInfo& operator=(const SysFontInfo&) = delete;
   GBool match(SysFontInfo *fi);
   GBool match(GooString *nameA, GBool boldA, GBool italicA, GBool obliqueA, GBool fixedWidthA);
   GBool match(GooString *nameA, GBool boldA, GBool italicA);
@@ -258,6 +260,8 @@
 
   SysFontList();
   ~SysFontList();
+  SysFontList(const SysFontList &) = delete;
+  SysFontList& operator=(const SysFontList &) = delete;
   SysFontInfo *find(GooString *name, GBool isFixedWidth, GBool exact);
 
 #ifdef _WIN32
@@ -363,13 +367,13 @@
   }
 
   // search for the font
-  fi = NULL;
+  fi = nullptr;
   for (i = 0; i < fonts->getLength(); ++i) {
     fi = (SysFontInfo *)fonts->get(i);
     if (fi->match(name2, bold, italic, oblique, fixedWidth)) {
       break;
     }
-    fi = NULL;
+    fi = nullptr;
   }
   if (!fi && !exact && bold) {
     // try ignoring the bold flag
@@ -378,7 +382,7 @@
       if (fi->match(name2, gFalse, italic)) {
 	break;
       }
-      fi = NULL;
+      fi = nullptr;
     }
   }
   if (!fi && !exact && (bold || italic)) {
@@ -388,7 +392,7 @@
       if (fi->match(name2, gFalse, gFalse)) {
 	break;
       }
-      fi = NULL;
+      fi = nullptr;
     }
   }
 
@@ -648,7 +652,7 @@
   
   snprintf(dataPathBuffer, bufSize, "%s/nameToUnicode", dataRoot);
   dir = new GDir(dataPathBuffer, gTrue);
-  while (entry = dir->getNextEntry(), entry != NULL) {
+  while (entry = dir->getNextEntry(), entry != nullptr) {
     if (!entry->isDir()) {
       parseNameToUnicode(entry->getFullPath());
     }
@@ -658,7 +662,7 @@
 
   snprintf(dataPathBuffer, bufSize, "%s/cidToUnicode", dataRoot);
   dir = new GDir(dataPathBuffer, gFalse);
-  while (entry = dir->getNextEntry(), entry != NULL) {
+  while (entry = dir->getNextEntry(), entry != nullptr) {
     addCIDToUnicode(entry->getName(), entry->getFullPath());
     delete entry;
   }
@@ -666,7 +670,7 @@
 
   snprintf(dataPathBuffer, bufSize, "%s/unicodeMap", dataRoot);
   dir = new GDir(dataPathBuffer, gFalse);
-  while (entry = dir->getNextEntry(), entry != NULL) {
+  while (entry = dir->getNextEntry(), entry != nullptr) {
     addUnicodeMap(entry->getName(), entry->getFullPath());
     delete entry;
   }
@@ -674,7 +678,7 @@
 
   snprintf(dataPathBuffer, bufSize, "%s/cMap", dataRoot);
   dir = new GDir(dataPathBuffer, gFalse);
-  while (entry = dir->getNextEntry(), entry != NULL) {
+  while (entry = dir->getNextEntry(), entry != nullptr) {
     addCMapDir(entry->getName(), entry->getFullPath());
     toUnicodeDirs->append(entry->getFullPath()->copy());
     delete entry;
@@ -700,7 +704,7 @@
   line = 1;
   while (getLine(buf, sizeof(buf), f)) {
     tok1 = strtok_r(buf, " \t\r\n", &tokptr);
-    tok2 = strtok_r(NULL, " \t\r\n", &tokptr);
+    tok2 = strtok_r(nullptr, " \t\r\n", &tokptr);
     if (tok1 && tok2) {
       sscanf(tok1, "%x", &u);
       nameToUnicodeText->add(tok2, u);
@@ -842,7 +846,7 @@
   if ((fileName = (GooString *)unicodeMaps->lookup(encodingName))) {
     f = openFile(fileName->getCString(), "r");
   } else {
-    f = NULL;
+    f = nullptr;
   }
   unlockGlobalParams;
   return f;
@@ -858,7 +862,7 @@
   lockGlobalParams;
   if (!(list = (GooList *)cMapDirs->lookup(collection))) {
     unlockGlobalParams;
-    return NULL;
+    return nullptr;
   }
   for (i = 0; i < list->getLength(); ++i) {
     dir = (GooString *)list->get(i);
@@ -871,7 +875,7 @@
     }
   }
   unlockGlobalParams;
-  return NULL;
+  return nullptr;
 }
 
 FILE *GlobalParams::findToUnicodeFile(GooString *name) {
@@ -891,7 +895,7 @@
     }
   }
   unlockGlobalParams;
-  return NULL;
+  return nullptr;
 }
 
 #ifdef WITH_FONTCONFIGURATION_FONTCONFIG
@@ -899,12 +903,12 @@
 {
   const char *match;
 
-  if (name == NULL)
+  if (name == nullptr)
     return gFalse;
 
   match = strstr(name, modifier);
   if (match) {
-    if (*start == NULL || match < *start)
+    if (*start == nullptr || match < *start)
       *start = match;
     return gTrue;
   }
@@ -961,10 +965,10 @@
   FcPattern *p;
 
   // this is all heuristics will be overwritten if font had proper info
-  name = (base14Name == NULL) ? font->getName()->getCString() : base14Name->getCString();
+  name = (base14Name == nullptr) ? font->getName()->getCString() : base14Name->getCString();
   
   modifiers = strchr (name, ',');
-  if (modifiers == NULL)
+  if (modifiers == nullptr)
     modifiers = strchr (name, '-');
   
   // remove the - from the names, for some reason, Fontconfig does not
@@ -973,7 +977,7 @@
   for (int i = 0; i < len; i++)
     name[i] = (name[i] == '-' ? ' ' : name[i]);
 
-  start = NULL;
+  start = nullptr;
   findModifier(modifiers, "Regular", &start);
   findModifier(modifiers, "Roman", &start);
   
@@ -1052,7 +1056,7 @@
   
   const char *lang = getFontLang(font);
   
-  p = FcPatternBuild(NULL,
+  p = FcPatternBuild(nullptr,
                     FC_FAMILY, FcTypeString, family,
                     FC_LANG, FcTypeString, lang,
                     NULL);
@@ -1070,7 +1074,7 @@
 GooString *GlobalParams::findFontFile(GooString *fontName) {
   GooString *path;
 
-  setupBaseFonts(NULL);
+  setupBaseFonts(nullptr);
   lockGlobalParams;
   if ((path = (GooString *)fontFiles->lookup(fontName))) {
     path = path->copy();
@@ -1078,7 +1082,7 @@
     return path;
   }
   unlockGlobalParams;
-  return NULL;
+  return nullptr;
 }
 
 /* if you can't or don't want to use Fontconfig, you need to implement
@@ -1093,18 +1097,18 @@
   SysFontType type;
   int fontNum;
   
-  return findSystemFontFile(font, &type, &fontNum, NULL, base14Name);
+  return findSystemFontFile(font, &type, &fontNum, nullptr, base14Name);
 }
 
 GooString *GlobalParams::findSystemFontFile(GfxFont *font,
 					  SysFontType *type,
 					  int *fontNum, GooString *substituteFontName, GooString *base14Name) {
-  SysFontInfo *fi = NULL;
-  FcPattern *p=0;
-  GooString *path = NULL;
+  SysFontInfo *fi = nullptr;
+  FcPattern *p=nullptr;
+  GooString *path = nullptr;
   GooString *fontName = font->getName();
   GooString substituteName;
-  if (!fontName) return NULL;
+  if (!fontName) return nullptr;
   lockGlobalParams;
 
   if ((fi = sysFonts->find(fontName, font->isFixedWidth(), gTrue))) {
@@ -1118,14 +1122,14 @@
     FcResult res;
     FcFontSet *set;
     int i;
-    FcLangSet *lb = NULL;
+    FcLangSet *lb = nullptr;
     p = buildFcPattern(font, base14Name);
 
     if (!p)
       goto fin;
-    FcConfigSubstitute(NULL, p, FcMatchPattern);
+    FcConfigSubstitute(nullptr, p, FcMatchPattern);
     FcDefaultSubstitute(p);
-    set = FcFontSort(NULL, p, FcFalse, NULL, &res);
+    set = FcFontSort(nullptr, p, FcFalse, nullptr, &res);
     if (!set)
       goto fin;
 
@@ -1141,7 +1145,7 @@
       first: fonts support the language
       second: all fonts (fall back)
     */
-    while (fi == NULL)
+    while (fi == nullptr)
     {
       for (i = 0; i < set->nfont; ++i)
       {
@@ -1148,7 +1152,7 @@
 	res = FcPatternGetString(set->fonts[i], FC_FILE, 0, &s);
 	if (res != FcResultMatch || !s)
 	  continue;
-	if (lb != NULL) {
+	if (lb != nullptr) {
 	  FcLangSet *l;
 	  res = FcPatternGetLangSet(set->fonts[i], FC_LANG, 0, &l);
 	  if (res != FcResultMatch || !FcLangSetContains(l,lb)) {
@@ -1233,9 +1237,9 @@
 	  continue;
 	break;
       }
-      if (lb != NULL) {
+      if (lb != nullptr) {
         FcLangSetDestroy(lb);
-        lb = NULL;
+        lb = nullptr;
       } else {
         /* scan all fonts of the list */
         break;
@@ -1243,7 +1247,7 @@
     }
     FcFontSetDestroy(set);
   }
-  if (path == NULL && (fi = sysFonts->find(fontName, font->isFixedWidth(), gFalse))) {
+  if (path == nullptr && (fi = sysFonts->find(fontName, font->isFixedWidth(), gFalse))) {
     path = fi->path->copy();
     *type = fi->type;
     *fontNum = fi->fontNum;
@@ -1467,7 +1471,7 @@
   lockGlobalParams;
   GooHashIter *iter;
   unicodeToUnicodes->startIter(&iter);
-  GooString *fileName = NULL;
+  GooString *fileName = nullptr;
   GooString *fontPattern;
   void *val;
   while (!fileName && unicodeToUnicodes->getNext(&iter, &fontPattern, &val)) {
@@ -1476,7 +1480,7 @@
       fileName = (GooString*)val;
     }
   }
-  CharCodeToUnicode *ctu = NULL;
+  CharCodeToUnicode *ctu = nullptr;
   if (fileName) {
     ctu = unicodeToUnicodeCache->getCharCodeToUnicode(fileName);
     if (!ctu) {
@@ -1666,7 +1670,7 @@
   (void)name;
 #endif
 
-  return NULL;
+  return nullptr;
 }
 
 #ifdef ENABLE_PLUGINS

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -13,7 +13,7 @@
 // All changes made under the Poppler project to this file are licensed
 // under GPL version 2 or later
 //
-// Copyright (C) 2005, 2007-2010, 2012, 2015, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2007-2010, 2012, 2015, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2005 Jonathan Blandford <jrb at redhat.com>
 // Copyright (C) 2006 Takashi Iwai <tiwai at suse.de>
 // Copyright (C) 2006 Kristian Høgsberg <krh at redhat.com>
@@ -108,6 +108,9 @@
 
   ~GlobalParams();
 
+  GlobalParams(const GlobalParams &) = delete;
+  GlobalParams& operator=(const GlobalParams &) = delete;
+
   void setupBaseFonts(char *dir);
 
   //----- accessors

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/GlobalParamsWin.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/GlobalParamsWin.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/GlobalParamsWin.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -9,7 +9,7 @@
    // Copyright (C) 2013 Adam Reichold <adamreichold at myopera.com>
    // Copyright (C) 2013 Dmytro Morgun <lztoad at gmail.com>
    // Copyright (C) 2017 Christoph Cullmann <cullmann at kde.org>
-   // Copyright (C) 2017 Albert Astals Cid <aacid at kde.org>
+   // Copyright (C) 2017, 2018 Albert Astals Cid <aacid at kde.org>
 
 TODO: instead of a fixed mapping defined in displayFontTab, it could
 scan the whole fonts directory, parse TTF files and build font
@@ -103,78 +103,78 @@
 
     // those seem to be frequently accessed by PDF files and I kind of guess
     // which font file do the refer to
-    {"Palatino", NULL, "pala.ttf", gTrue},
-    {"Palatino-Roman", NULL, "pala.ttf", gTrue},
-    {"Palatino-Bold", NULL, "palab.ttf", gTrue},
-    {"Palatino-Italic", NULL, "palai.ttf", gTrue},
-    {"Palatino,Italic", NULL, "palai.ttf", gTrue},
-    {"Palatino-BoldItalic", NULL, "palabi.ttf", gTrue},
+    {"Palatino", nullptr, "pala.ttf", gTrue},
+    {"Palatino-Roman", nullptr, "pala.ttf", gTrue},
+    {"Palatino-Bold", nullptr, "palab.ttf", gTrue},
+    {"Palatino-Italic", nullptr, "palai.ttf", gTrue},
+    {"Palatino,Italic", nullptr, "palai.ttf", gTrue},
+    {"Palatino-BoldItalic", nullptr, "palabi.ttf", gTrue},
 
-    {"ArialBlack",        NULL, "arialbd.ttf", gTrue},
+    {"ArialBlack",        nullptr, "arialbd.ttf", gTrue},
 
-    {"ArialNarrow", NULL, "arialn.ttf", gTrue},
-    {"ArialNarrow,Bold", NULL, "arialnb.ttf", gTrue},
-    {"ArialNarrow,Italic", NULL, "arialni.ttf", gTrue},
-    {"ArialNarrow,BoldItalic", NULL, "arialnbi.ttf", gTrue},
-    {"ArialNarrow-Bold", NULL, "arialnb.ttf", gTrue},
-    {"ArialNarrow-Italic", NULL, "arialni.ttf", gTrue},
-    {"ArialNarrow-BoldItalic", NULL, "arialnbi.ttf", gTrue},
+    {"ArialNarrow", nullptr, "arialn.ttf", gTrue},
+    {"ArialNarrow,Bold", nullptr, "arialnb.ttf", gTrue},
+    {"ArialNarrow,Italic", nullptr, "arialni.ttf", gTrue},
+    {"ArialNarrow,BoldItalic", nullptr, "arialnbi.ttf", gTrue},
+    {"ArialNarrow-Bold", nullptr, "arialnb.ttf", gTrue},
+    {"ArialNarrow-Italic", nullptr, "arialni.ttf", gTrue},
+    {"ArialNarrow-BoldItalic", nullptr, "arialnbi.ttf", gTrue},
 
-    {"HelveticaNarrow", NULL, "arialn.ttf", gTrue},
-    {"HelveticaNarrow,Bold", NULL, "arialnb.ttf", gTrue},
-    {"HelveticaNarrow,Italic", NULL, "arialni.ttf", gTrue},
-    {"HelveticaNarrow,BoldItalic", NULL, "arialnbi.ttf", gTrue},
-    {"HelveticaNarrow-Bold", NULL, "arialnb.ttf", gTrue},
-    {"HelveticaNarrow-Italic", NULL, "arialni.ttf", gTrue},
-    {"HelveticaNarrow-BoldItalic", NULL, "arialnbi.ttf", gTrue},
+    {"HelveticaNarrow", nullptr, "arialn.ttf", gTrue},
+    {"HelveticaNarrow,Bold", nullptr, "arialnb.ttf", gTrue},
+    {"HelveticaNarrow,Italic", nullptr, "arialni.ttf", gTrue},
+    {"HelveticaNarrow,BoldItalic", nullptr, "arialnbi.ttf", gTrue},
+    {"HelveticaNarrow-Bold", nullptr, "arialnb.ttf", gTrue},
+    {"HelveticaNarrow-Italic", nullptr, "arialni.ttf", gTrue},
+    {"HelveticaNarrow-BoldItalic", nullptr, "arialnbi.ttf", gTrue},
 
-    {"BookAntiqua", NULL, "bkant.ttf", gTrue},
-    {"BookAntiqua,Bold", NULL, "bkant.ttf", gTrue},
-    {"BookAntiqua,Italic", NULL, "bkant.ttf", gTrue},
-    {"BookAntiqua,BoldItalic", NULL, "bkant.ttf", gTrue},
-    {"BookAntiqua-Bold", NULL, "bkant.ttf", gTrue},
-    {"BookAntiqua-Italic", NULL, "bkant.ttf", gTrue},
-    {"BookAntiqua-BoldItalic", NULL, "bkant.ttf", gTrue},
+    {"BookAntiqua", nullptr, "bkant.ttf", gTrue},
+    {"BookAntiqua,Bold", nullptr, "bkant.ttf", gTrue},
+    {"BookAntiqua,Italic", nullptr, "bkant.ttf", gTrue},
+    {"BookAntiqua,BoldItalic", nullptr, "bkant.ttf", gTrue},
+    {"BookAntiqua-Bold", nullptr, "bkant.ttf", gTrue},
+    {"BookAntiqua-Italic", nullptr, "bkant.ttf", gTrue},
+    {"BookAntiqua-BoldItalic", nullptr, "bkant.ttf", gTrue},
 
-    {"Verdana", NULL, "verdana.ttf", gTrue},
-    {"Verdana,Bold", NULL, "verdanab.ttf", gTrue},
-    {"Verdana,Italic", NULL, "verdanai.ttf", gTrue},
-    {"Verdana,BoldItalic", NULL, "verdanaz.ttf", gTrue},
-    {"Verdana-Bold", NULL, "verdanab.ttf", gTrue},
-    {"Verdana-Italic", NULL, "verdanai.ttf", gTrue},
-    {"Verdana-BoldItalic", NULL, "verdanaz.ttf", gTrue},
+    {"Verdana", nullptr, "verdana.ttf", gTrue},
+    {"Verdana,Bold", nullptr, "verdanab.ttf", gTrue},
+    {"Verdana,Italic", nullptr, "verdanai.ttf", gTrue},
+    {"Verdana,BoldItalic", nullptr, "verdanaz.ttf", gTrue},
+    {"Verdana-Bold", nullptr, "verdanab.ttf", gTrue},
+    {"Verdana-Italic", nullptr, "verdanai.ttf", gTrue},
+    {"Verdana-BoldItalic", nullptr, "verdanaz.ttf", gTrue},
 
-    {"Tahoma", NULL, "tahoma.ttf", gTrue},
-    {"Tahoma,Bold", NULL, "tahomabd.ttf", gTrue},
-    {"Tahoma,Italic", NULL, "tahoma.ttf", gTrue},
-    {"Tahoma,BoldItalic", NULL, "tahomabd.ttf", gTrue},
-    {"Tahoma-Bold", NULL, "tahomabd.ttf", gTrue},
-    {"Tahoma-Italic", NULL, "tahoma.ttf", gTrue},
-    {"Tahoma-BoldItalic", NULL, "tahomabd.ttf", gTrue},
+    {"Tahoma", nullptr, "tahoma.ttf", gTrue},
+    {"Tahoma,Bold", nullptr, "tahomabd.ttf", gTrue},
+    {"Tahoma,Italic", nullptr, "tahoma.ttf", gTrue},
+    {"Tahoma,BoldItalic", nullptr, "tahomabd.ttf", gTrue},
+    {"Tahoma-Bold", nullptr, "tahomabd.ttf", gTrue},
+    {"Tahoma-Italic", nullptr, "tahoma.ttf", gTrue},
+    {"Tahoma-BoldItalic", nullptr, "tahomabd.ttf", gTrue},
 
-    {"CCRIKH+Verdana", NULL, "verdana.ttf", gTrue},
-    {"CCRIKH+Verdana,Bold", NULL, "verdanab.ttf", gTrue},
-    {"CCRIKH+Verdana,Italic", NULL, "verdanai.ttf", gTrue},
-    {"CCRIKH+Verdana,BoldItalic", NULL, "verdanaz.ttf", gTrue},
-    {"CCRIKH+Verdana-Bold", NULL, "verdanab.ttf", gTrue},
-    {"CCRIKH+Verdana-Italic", NULL, "verdanai.ttf", gTrue},
-    {"CCRIKH+Verdana-BoldItalic", NULL, "verdanaz.ttf", gTrue},
+    {"CCRIKH+Verdana", nullptr, "verdana.ttf", gTrue},
+    {"CCRIKH+Verdana,Bold", nullptr, "verdanab.ttf", gTrue},
+    {"CCRIKH+Verdana,Italic", nullptr, "verdanai.ttf", gTrue},
+    {"CCRIKH+Verdana,BoldItalic", nullptr, "verdanaz.ttf", gTrue},
+    {"CCRIKH+Verdana-Bold", nullptr, "verdanab.ttf", gTrue},
+    {"CCRIKH+Verdana-Italic", nullptr, "verdanai.ttf", gTrue},
+    {"CCRIKH+Verdana-BoldItalic", nullptr, "verdanaz.ttf", gTrue},
 
-    {"Georgia", NULL, "georgia.ttf", gTrue},
-    {"Georgia,Bold", NULL, "georgiab.ttf", gTrue},
-    {"Georgia,Italic", NULL, "georgiai.ttf", gTrue},
-    {"Georgia,BoldItalic", NULL, "georgiaz.ttf", gTrue},
-    {"Georgia-Bold", NULL, "georgiab.ttf", gTrue},
-    {"Georgia-Italic", NULL, "georgiai.ttf", gTrue},
-    {"Georgia-BoldItalic", NULL, "georgiaz.ttf", gTrue},
+    {"Georgia", nullptr, "georgia.ttf", gTrue},
+    {"Georgia,Bold", nullptr, "georgiab.ttf", gTrue},
+    {"Georgia,Italic", nullptr, "georgiai.ttf", gTrue},
+    {"Georgia,BoldItalic", nullptr, "georgiaz.ttf", gTrue},
+    {"Georgia-Bold", nullptr, "georgiab.ttf", gTrue},
+    {"Georgia-Italic", nullptr, "georgiai.ttf", gTrue},
+    {"Georgia-BoldItalic", nullptr, "georgiaz.ttf", gTrue},
 
     // fallback for Adobe CID fonts:
-    {"MingLiU", NULL, "mingliu.ttf", gFalse},
-    {"SimSun", NULL, "simsun.ttf", gFalse},
-    {"MS-Mincho", NULL, "msmincho.ttf", gFalse},
-    {"Batang", NULL, "batang.ttf", gFalse},
-    {"ArialUnicode", NULL, "arialuni.ttf", gTrue},
-    {NULL}
+    {"MingLiU", nullptr, "mingliu.ttf", gFalse},
+    {"SimSun", nullptr, "simsun.ttf", gFalse},
+    {"MS-Mincho", nullptr, "msmincho.ttf", gFalse},
+    {"Batang", nullptr, "batang.ttf", gFalse},
+    {"ArialUnicode", nullptr, "arialuni.ttf", gTrue},
+    { }
 };
 
 #define FONTS_SUBDIR "\\fonts"
@@ -200,7 +200,7 @@
         SHGetFolderPathFunc = (HRESULT (__stdcall *)(HWND, int, HANDLE, DWORD, LPSTR))
                               GetProcAddress(hLib, "SHGetFolderPathA");
         if (SHGetFolderPathFunc)
-            (*SHGetFolderPathFunc)(NULL, CSIDL_FONTS, NULL, SHGFP_TYPE_CURRENT, winFontDir);
+            (*SHGetFolderPathFunc)(nullptr, CSIDL_FONTS, nullptr, SHGFP_TYPE_CURRENT, winFontDir);
 
         if (!winFontDir[0]) {
             // Try an older function
@@ -207,7 +207,7 @@
             SHGetSpecialFolderPathFunc = (BOOL (__stdcall *)(HWND, LPSTR, int, BOOL))
                                           GetProcAddress(hLib, "SHGetSpecialFolderPathA");
             if (SHGetSpecialFolderPathFunc)
-                (*SHGetSpecialFolderPathFunc)(NULL, winFontDir, CSIDL_FONTS, FALSE);
+                (*SHGetSpecialFolderPathFunc)(nullptr, winFontDir, CSIDL_FONTS, FALSE);
         }
         FreeLibrary(hLib);
     }
@@ -220,7 +220,7 @@
         SHGetFolderPathFunc = (HRESULT (__stdcall *)(HWND, int, HANDLE, DWORD, LPSTR))
                               GetProcAddress(hLib, "SHGetFolderPathA");
         if (SHGetFolderPathFunc)
-            (*SHGetFolderPathFunc)(NULL, CSIDL_FONTS, NULL, SHGFP_TYPE_CURRENT, winFontDir);
+            (*SHGetFolderPathFunc)(nullptr, CSIDL_FONTS, nullptr, SHGFP_TYPE_CURRENT, winFontDir);
         FreeLibrary(hLib);
     }
     if (winFontDir[0])
@@ -268,7 +268,7 @@
     while (1) {
       valNameLen = sizeof(valName) - 1;
       dataLen = sizeof(data) - 1;
-      if (RegEnumValueA(regKey, idx, valName, &valNameLen, NULL,
+      if (RegEnumValueA(regKey, idx, valName, &valNameLen, nullptr,
 		       &type, (LPBYTE)data, &dataLen) != ERROR_SUCCESS) {
 	break;
       }
@@ -411,7 +411,7 @@
 void GlobalParams::setupBaseFonts(char * dir)
 {
     const char *dataRoot = popplerDataDir ? popplerDataDir : POPPLER_DATADIR;
-    GooString *fileName = NULL;
+    GooString *fileName = nullptr;
     GooFile *file;
 
     if (baseFontsInitialized)
@@ -462,10 +462,10 @@
     // try to open file
     file = GooFile::open(fileName);
 
-    if (file != NULL) {
+    if (file != nullptr) {
       Parser *parser;
-      parser = new Parser(NULL,
-	      new Lexer(NULL,
+      parser = new Parser(nullptr,
+	      new Lexer(nullptr,
 	      new FileStream(file, 0, gFalse, file->size(), Object(objNull))),
 	      gTrue);
       Object obj1 = parser->getObj();
@@ -501,7 +501,7 @@
                                       const char *origName)
 {
     assert(origName);
-    if (!origName) return NULL;
+    if (!origName) return nullptr;
     GooString *name2 = new GooString(origName);
     int n = strlen(origName);
     // remove trailing "-Identity-H"
@@ -515,7 +515,7 @@
       n -= 11;
     }
     GooString *substName = (GooString *)substFiles->lookup(name2);
-    if (substName != NULL) {
+    if (substName != nullptr) {
       delete name2;
       return substName->getCString();
     }
@@ -525,7 +525,7 @@
     if (font->isCIDFont()) {
       GooString *collection = ((GfxCIDFont *)font)->getCollection();
 
-      const char* name3 = NULL;
+      const char* name3 = nullptr;
       if ( !collection->cmp("Adobe-CNS1") )
         name3 = DEFAULT_CID_FONT_AC1_MSWIN;
       else if ( !collection->cmp("Adobe-GB1") )
@@ -552,11 +552,11 @@
 					  int *fontNum, GooString *substituteFontName,
                                           GooString *base14Name) {
   SysFontInfo *fi;
-  GooString *path = NULL;
+  GooString *path = nullptr;
   GooString *fontName = font->getName();
-  if (!fontName) return NULL;
+  if (!fontName) return nullptr;
   lockGlobalParams;
-  setupBaseFonts(NULL);
+  setupBaseFonts(nullptr);
 
   // TODO: base14Name should be changed?
   // In the system using FontConfig, findSystemFontFile() uses
@@ -572,7 +572,7 @@
     GooString *substFontName = new GooString(findSubstituteName(font, fontFiles,
                                                                 substFiles,
                                                                 fontName->getCString()));
-    GooString *path2 = NULL;
+    GooString *path2 = nullptr;
     error(errSyntaxError, -1, "Couldn't find a font for '{0:t}', subst is '{1:t}'", fontName, substFontName);
     if ((path2 = (GooString *)fontFiles->lookup(substFontName))) {
       path = new GooString(path2);

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Hints.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Hints.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Hints.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -141,11 +141,11 @@
   memset(numSharedObject, 0, nPages * sizeof(Guint));
   memset(pageObjectNum, 0, nPages * sizeof(int));
 
-  groupLength = NULL;
-  groupOffset = NULL;
-  groupHasSignature = NULL;
-  groupNumObjects = NULL;
-  groupXRefOffset = NULL;
+  groupLength = nullptr;
+  groupOffset = nullptr;
+  groupHasSignature = nullptr;
+  groupNumObjects = nullptr;
+  groupXRefOffset = nullptr;
 
   ok = gTrue;
   readTables(str, linearization, xref, secHdlr);
@@ -209,7 +209,7 @@
      (num = obj.getInt(), obj = parser->getObj(), obj.isInt()) &&
      (gen = obj.getInt(), obj = parser->getObj(), obj.isCmd("obj")) &&
      (obj = parser->getObj(gFalse,
-         secHdlr ? secHdlr->getFileKey() : (Guchar *)NULL,
+         secHdlr ? secHdlr->getFileKey() : (Guchar *)nullptr,
          secHdlr ? secHdlr->getEncAlgorithm() : cryptRC4,
          secHdlr ? secHdlr->getFileKeyLength() : 0,
          num, gen, 0, gTrue), obj.isStream())) {
@@ -217,7 +217,7 @@
     Dict *hintsDict = obj.streamGetDict();
 
     int sharedStreamOffset = 0;
-    if (hintsDict->lookupInt("S", NULL, &sharedStreamOffset) &&
+    if (hintsDict->lookupInt("S", nullptr, &sharedStreamOffset) &&
         sharedStreamOffset > 0) {
 
         hintsStream->reset();
@@ -307,7 +307,7 @@
   sbr.resetInputBits(); // reset on byte boundary. Not in specs!
   numSharedObject[0] = sbr.readBits(nBitsNumShared);
   numSharedObject[0] = 0; // Do not trust the read value to be 0.
-  sharedObjectId[0] = NULL;
+  sharedObjectId[0] = nullptr;
   for (int i = 1; i < nPages && !sbr.atEOF(); i++) {
     numSharedObject[i] = sbr.readBits(nBitsNumShared);
     if (numSharedObject[i] >= INT_MAX / (int)sizeof(Guint)) {
@@ -457,7 +457,7 @@
 
 std::vector<ByteRange>* Hints::getPageRanges(int page)
 {
-  if ((page < 1) || (page > nPages)) return NULL;
+  if ((page < 1) || (page > nPages)) return nullptr;
 
   int idx;
   if (page-1 > pageFirst)

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Hints.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Hints.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Hints.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -5,7 +5,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright 2010 Hib Eris <hib at hiberis.nl>
-// Copyright 2010, 2013, 2016 Albert Astals Cid <aacid at kde.org>
+// Copyright 2010, 2013, 2016, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright 2013 Adrian Johnson <ajohnson at redneon.com>
 //
 //========================================================================
@@ -33,6 +33,9 @@
   Hints(BaseStream *str, Linearization *linearization, XRef *xref, SecurityHandler *secHdlr);
   ~Hints();
 
+  Hints(const Hints &) = delete;
+  Hints& operator=(const Hints &) = delete;
+
   GBool isOk() const;
 
   int getPageObjectNum(int page);

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -88,7 +88,7 @@
 };
 
 JArithmeticDecoder::JArithmeticDecoder() {
-  str = NULL;
+  str = nullptr;
   dataLen = 0;
   limitStream = gFalse;
   nBytesRead = 0;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -8,6 +8,20 @@
 //
 //========================================================================
 
+//========================================================================
+//
+// Modified under the Poppler project - http://poppler.freedesktop.org
+//
+// All changes made under the Poppler project to this file are licensed
+// under GPL version 2 or later
+//
+// Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
+//
+// To see a description of the changes please see the Changelog file that
+// came with your tarball or type make ChangeLog if you are building from git
+//
+//========================================================================
+
 #ifndef JARITHMETICDECODER_H
 #define JARITHMETICDECODER_H
 
@@ -28,6 +42,8 @@
 
   JArithmeticDecoderStats(int contextSizeA);
   ~JArithmeticDecoderStats();
+  JArithmeticDecoderStats(const JArithmeticDecoderStats &) = delete;
+  JArithmeticDecoderStats& operator=(const JArithmeticDecoderStats &) = delete;
   JArithmeticDecoderStats *copy();
   void reset();
   int getContextSize() { return contextSize; }
@@ -51,6 +67,8 @@
 
   JArithmeticDecoder();
   ~JArithmeticDecoder();
+  JArithmeticDecoder(const JArithmeticDecoder &) = delete;
+  JArithmeticDecoder& operator=(const JArithmeticDecoder &) = delete;
 
   void setStream(Stream *strA)
     { str = strA; dataLen = 0; limitStream = gFalse; }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/JBIG2Stream.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/JBIG2Stream.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/JBIG2Stream.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -15,7 +15,7 @@
 //
 // Copyright (C) 2006 Raj Kumar <rkumar at archive.org>
 // Copyright (C) 2006 Paul Walmsley <paul at booyaka.com>
-// Copyright (C) 2006-2010, 2012, 2014-2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2006-2010, 2012, 2014-2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2009 David Benjamin <davidben at mit.edu>
 // Copyright (C) 2011 Edward Jiang <ejiang at google.com>
 // Copyright (C) 2012 William Bader <williambader at hotmail.com>
@@ -339,7 +339,7 @@
 };
 
 JBIG2HuffmanDecoder::JBIG2HuffmanDecoder() {
-  str = NULL;
+  str = nullptr;
   reset();
 }
 
@@ -482,7 +482,7 @@
 };
 
 JBIG2MMRDecoder::JBIG2MMRDecoder() {
-  str = NULL;
+  str = nullptr;
   reset();
 }
 
@@ -651,6 +651,8 @@
 
   JBIG2Segment(Guint segNumA) { segNum = segNumA; }
   virtual ~JBIG2Segment() {}
+  JBIG2Segment(const JBIG2Segment &) = delete;
+  JBIG2Segment& operator=(const JBIG2Segment &) = delete;
   void setSegNum(Guint segNumA) { segNum = segNumA; }
   Guint getSegNum() { return segNum; }
   virtual JBIG2SegmentType getType() = 0;
@@ -697,7 +699,7 @@
   void combine(JBIG2Bitmap *bitmap, int x, int y, Guint combOp);
   Guchar *getDataPtr() { return data; }
   int getDataSize() { return h * line; }
-  GBool isOk() { return data != NULL; }
+  GBool isOk() { return data != nullptr; }
 
 private:
 
@@ -716,12 +718,12 @@
 
   if (w <= 0 || h <= 0 || line <= 0 || h >= (INT_MAX - 1) / line) {
     error(errSyntaxError, -1, "invalid width/height");
-    data = NULL;
+    data = nullptr;
     return;
   }
   // need to allocate one extra guard byte for use in combine()
   data = (Guchar *)gmalloc_checkoverflow(h * line + 1);
-  if (data != NULL) {
+  if (data != nullptr) {
     data[h * line] = 0;
   }
 }
@@ -729,10 +731,10 @@
 JBIG2Bitmap::JBIG2Bitmap(Guint segNumA, JBIG2Bitmap *bitmap):
   JBIG2Segment(segNumA)
 {
-  if (unlikely(bitmap == NULL)) {
+  if (unlikely(bitmap == nullptr)) {
     error(errSyntaxError, -1, "NULL bitmap in JBIG2Bitmap");
     w = h = line = 0;
-    data = NULL;
+    data = nullptr;
     return;
   }
 
@@ -742,7 +744,7 @@
 
   if (w <= 0 || h <= 0 || line <= 0 || h >= (INT_MAX - 1) / line) {
     error(errSyntaxError, -1, "invalid width/height");
-    data = NULL;
+    data = nullptr;
     return;
   }
   // need to allocate one extra guard byte for use in combine()
@@ -776,7 +778,7 @@
     }
   } else {
     delete slice;
-    slice = NULL;
+    slice = nullptr;
   }
   return slice;
 }
@@ -785,7 +787,7 @@
   if (newH <= h || line <= 0 || newH >= (INT_MAX - 1) / line) {
     error(errSyntaxError, -1, "invalid width/height");
     gfree(data);
-    data = NULL;
+    data = nullptr;
     return;
   }
   // need to allocate one extra guard byte for use in combine()
@@ -809,7 +811,7 @@
 
 inline void JBIG2Bitmap::getPixelPtr(int x, int y, JBIG2BitmapPtr *ptr) {
   if (y < 0 || y >= h || x >= w) {
-    ptr->p = NULL;
+    ptr->p = nullptr;
     ptr->shift = 0; // make gcc happy
     ptr->x = 0; // make gcc happy
   } else if (x < 0) {
@@ -834,7 +836,7 @@
   } else {
     pix = (*ptr->p >> ptr->shift) & 1;
     if (++ptr->x == w) {
-      ptr->p = NULL;
+      ptr->p = nullptr;
     } else if (ptr->shift == 0) {
       ++ptr->p;
       ptr->shift = 7;
@@ -1055,7 +1057,7 @@
   Guint getSize() { return size; }
   void setBitmap(Guint idx, JBIG2Bitmap *bitmap) { bitmaps[idx] = bitmap; }
   JBIG2Bitmap *getBitmap(Guint idx) { return bitmaps[idx]; }
-  GBool isOk() { return bitmaps != NULL; }
+  GBool isOk() { return bitmaps != nullptr; }
   void setGenericRegionStats(JArithmeticDecoderStats *stats)
     { genericRegionStats = stats; }
   void setRefinementRegionStats(JArithmeticDecoderStats *stats)
@@ -1082,10 +1084,10 @@
   bitmaps = (JBIG2Bitmap **)gmallocn_checkoverflow(size, sizeof(JBIG2Bitmap *));
   if (!bitmaps) size = 0;
   for (i = 0; i < size; ++i) {
-    bitmaps[i] = NULL;
+    bitmaps[i] = nullptr;
   }
-  genericRegionStats = NULL;
-  refinementRegionStats = NULL;
+  genericRegionStats = nullptr;
+  refinementRegionStats = nullptr;
 }
 
 JBIG2SymbolDict::~JBIG2SymbolDict() {
@@ -1115,7 +1117,7 @@
   JBIG2SegmentType getType() override { return jbig2SegPatternDict; }
   Guint getSize() { return size; }
   void setBitmap(Guint idx, JBIG2Bitmap *bitmap) { if (likely(idx < size)) bitmaps[idx] = bitmap; }
-  JBIG2Bitmap *getBitmap(Guint idx) { return (idx < size) ? bitmaps[idx] : NULL; }
+  JBIG2Bitmap *getBitmap(Guint idx) { return (idx < size) ? bitmaps[idx] : nullptr; }
 
 private:
 
@@ -1178,7 +1180,7 @@
 JBIG2Stream::JBIG2Stream(Stream *strA, Object *globalsStreamA, Object *globalsStreamRefA):
   FilterStream(strA)
 {
-  pageBitmap = NULL;
+  pageBitmap = nullptr;
 
   arithDecoder = new JArithmeticDecoder();
   genericRegionStats = new JArithmeticDecoderStats(1 << 1);
@@ -1206,9 +1208,9 @@
       globalsStreamRef = globalsStreamRefA->getRef();
   }
 
-  segments = globalSegments = NULL;
-  curStr = NULL;
-  dataPtr = dataEnd = NULL;
+  segments = globalSegments = nullptr;
+  curStr = nullptr;
+  dataPtr = dataEnd = nullptr;
 }
 
 JBIG2Stream::~JBIG2Stream() {
@@ -1262,7 +1264,7 @@
     dataPtr = pageBitmap->getDataPtr();
     dataEnd = dataPtr + pageBitmap->getDataSize();
   } else {
-    dataPtr = dataEnd = NULL;
+    dataPtr = dataEnd = nullptr;
   }
 }
 
@@ -1269,17 +1271,17 @@
 void JBIG2Stream::close() {
   if (pageBitmap) {
     delete pageBitmap;
-    pageBitmap = NULL;
+    pageBitmap = nullptr;
   }
   if (segments) {
     deleteGooList(segments, JBIG2Segment);
-    segments = NULL;
+    segments = nullptr;
   }
   if (globalSegments) {
     deleteGooList(globalSegments, JBIG2Segment);
-    globalSegments = NULL;
+    globalSegments = nullptr;
   }
-  dataPtr = dataEnd = NULL;
+  dataPtr = dataEnd = nullptr;
   FilterStream::close();
 }
 
@@ -1298,7 +1300,7 @@
 }
 
 Goffset JBIG2Stream::getPos() {
-  if (pageBitmap == NULL) {
+  if (pageBitmap == nullptr) {
     return 0;
   }
   return dataPtr - pageBitmap->getDataPtr();
@@ -1322,7 +1324,7 @@
 }
 
 GooString *JBIG2Stream::getPSFilter(int psLevel, const char *indent) {
-  return NULL;
+  return nullptr;
 }
 
 GBool JBIG2Stream::isBinary(GBool last) {
@@ -1335,7 +1337,6 @@
   Guint *refSegs;
   Goffset segDataPos;
   int c1, c2, c3;
-  Guint i;
 
   while (readULong(&segNum)) {
 
@@ -1358,7 +1359,7 @@
       }
       refFlags = (refFlags << 24) | (c1 << 16) | (c2 << 8) | c3;
       nRefSegs = refFlags & 0x1fffffff;
-      for (i = 0; i < (nRefSegs + 9) >> 3; ++i) {
+      for (Guint i = 0; i < (nRefSegs + 9) >> 3; ++i) {
 	if ((c1 = curStr->getChar()) == EOF) {
 	  goto eofError1;
 	}
@@ -1368,19 +1369,19 @@
     // referred-to segment numbers
     refSegs = (Guint *)gmallocn(nRefSegs, sizeof(Guint));
     if (segNum <= 256) {
-      for (i = 0; i < nRefSegs; ++i) {
+      for (Guint i = 0; i < nRefSegs; ++i) {
 	if (!readUByte(&refSegs[i])) {
 	  goto eofError2;
 	}
       }
     } else if (segNum <= 65536) {
-      for (i = 0; i < nRefSegs; ++i) {
+      for (Guint i = 0; i < nRefSegs; ++i) {
 	if (!readUWord(&refSegs[i])) {
 	  goto eofError2;
 	}
       }
     } else {
-      for (i = 0; i < nRefSegs; ++i) {
+      for (Guint i = 0; i < nRefSegs; ++i) {
 	if (!readULong(&refSegs[i])) {
 	  goto eofError2;
 	}
@@ -1482,7 +1483,7 @@
       break;
     default:
       error(errSyntaxError, curStr->getPos(), "Unknown segment type in JBIG2 stream");
-      for (i = 0; i < segLength; ++i) {
+      for (Guint i = 0; i < segLength; ++i) {
 	if ((c1 = curStr->getChar()) == EOF) {
 	  goto eofError2;
 	}
@@ -1567,7 +1568,7 @@
   Guint i, j, k;
   Guchar *p;
 
-  symWidths = NULL;
+  symWidths = nullptr;
 
   // symbol dictionary flags
   if (!readUWord(&flags)) {
@@ -1674,13 +1675,13 @@
     goto eofError;
   }
   for (i = 0; i < numInputSyms + numNewSyms; ++i) {
-    bitmaps[i] = NULL;
+    bitmaps[i] = nullptr;
   }
   k = 0;
-  inputSymbolDict = NULL;
+  inputSymbolDict = nullptr;
   for (i = 0; i < nRefSegs; ++i) {
     seg = findSegment(refSegs[i]);
-    if (seg != NULL && seg->getType() == jbig2SegSymbolDict) {
+    if (seg != nullptr && seg->getType() == jbig2SegSymbolDict) {
       inputSymbolDict = (JBIG2SymbolDict *)seg;
       for (j = 0; j < inputSymbolDict->getSize(); ++j) {
 	bitmaps[k++] = inputSymbolDict->getBitmap(j);
@@ -1689,8 +1690,8 @@
   }
 
   // get the Huffman tables
-  huffDHTable = huffDWTable = NULL; // make gcc happy
-  huffBMSizeTable = huffAggInstTable = NULL; // make gcc happy
+  huffDHTable = huffDWTable = nullptr; // make gcc happy
+  huffBMSizeTable = huffAggInstTable = nullptr; // make gcc happy
   i = 0;
   if (huff) {
     if (huffDH == 0) {
@@ -1743,7 +1744,7 @@
     if (contextUsed && inputSymbolDict) {
       resetGenericStats(sdTemplate, inputSymbolDict->getGenericRegionStats());
     } else {
-      resetGenericStats(sdTemplate, NULL);
+      resetGenericStats(sdTemplate, nullptr);
     }
     resetIntStats(symCodeLen);
     arithDecoder->start();
@@ -1755,7 +1756,7 @@
       resetRefinementStats(sdrTemplate,
 			   inputSymbolDict->getRefinementRegionStats());
     } else {
-      resetRefinementStats(sdrTemplate, NULL);
+      resetRefinementStats(sdrTemplate, nullptr);
     }
   }
 
@@ -1850,7 +1851,7 @@
 	    goto syntaxError;
 	  }
 	  refBitmap = bitmaps[symID];
-	  if (unlikely(refBitmap == NULL)) {
+	  if (unlikely(refBitmap == nullptr)) {
 	    error(errSyntaxError, curStr->getPos(), "Invalid ref bitmap for symbol ID {0:ud} in JBIG2 symbol dictionary", symID);
 	    goto syntaxError;
 	  }
@@ -1863,7 +1864,7 @@
 	} else {
 	  bitmaps[numInputSyms + i] =
 	      readTextRegion(huff, gTrue, symWidth, symHeight,
-			     refAggNum, 0, numInputSyms + i, NULL,
+			     refAggNum, 0, numInputSyms + i, nullptr,
 			     symCodeLen, bitmaps, 0, 0, 0, 1, 0,
 			     huffTableF, huffTableH, huffTableK, huffTableO,
 			     huffTableO, huffTableO, huffTableO, huffTableA,
@@ -1874,7 +1875,7 @@
       } else {
 	bitmaps[numInputSyms + i] =
 	    readGenericBitmap(gFalse, symWidth, symHeight,
-			      sdTemplate, gFalse, gFalse, NULL,
+			      sdTemplate, gFalse, gFalse, nullptr,
 			      sdATX, sdATY, 0);
       }
 
@@ -1889,7 +1890,7 @@
 	collBitmap = new JBIG2Bitmap(0, totalWidth, symHeight);
 	bmSize = symHeight * ((totalWidth + 7) >> 3);
 	p = collBitmap->getDataPtr();
-	if (unlikely(p == NULL)) {
+	if (unlikely(p == nullptr)) {
 	  delete collBitmap;
 	  goto syntaxError;
 	}
@@ -1901,10 +1902,10 @@
 	}
       } else {
 	collBitmap = readGenericBitmap(gTrue, totalWidth, symHeight,
-				       0, gFalse, gFalse, NULL, NULL, NULL,
+				       0, gFalse, gFalse, nullptr, nullptr, nullptr,
 				       bmSize);
       }
-      if (likely(collBitmap != NULL)) {
+      if (likely(collBitmap != nullptr)) {
 	x = 0;
 	for (; j < i; ++j) {
 	  bitmaps[numInputSyms + j] =
@@ -1938,7 +1939,7 @@
     if (i + run > numInputSyms + numNewSyms ||
 	(ex && j + run > numExSyms)) {
       error(errSyntaxError, curStr->getPos(), "Too many exported symbols in JBIG2 symbol dictionary");
-      for ( ; j < numExSyms; ++j) symbolDict->setBitmap(j, NULL);
+      for ( ; j < numExSyms; ++j) symbolDict->setBitmap(j, nullptr);
       delete symbolDict;
       goto syntaxError;
     }
@@ -1953,7 +1954,7 @@
   }
   if (j != numExSyms) {
     error(errSyntaxError, curStr->getPos(), "Too few symbols in JBIG2 symbol dictionary");
-    for ( ; j < numExSyms; ++j) symbolDict->setBitmap(j, NULL);
+    for ( ; j < numExSyms; ++j) symbolDict->setBitmap(j, nullptr);
     delete symbolDict;
     goto syntaxError;
   }
@@ -2117,9 +2118,9 @@
   }
 
   // get the Huffman tables
-  huffFSTable = huffDSTable = huffDTTable = NULL; // make gcc happy
-  huffRDWTable = huffRDHTable = NULL; // make gcc happy
-  huffRDXTable = huffRDYTable = huffRSizeTable = NULL; // make gcc happy
+  huffFSTable = huffDSTable = huffDTTable = nullptr; // make gcc happy
+  huffRDWTable = huffRDHTable = nullptr; // make gcc happy
+  huffRDXTable = huffRDYTable = huffRSizeTable = nullptr; // make gcc happy
   i = 0;
   if (huff) {
     if (huffFS == 0) {
@@ -2258,12 +2259,12 @@
 
   // set up the arithmetic decoder
   } else {
-    symCodeTab = NULL;
+    symCodeTab = nullptr;
     resetIntStats(symCodeLen);
     arithDecoder->start();
   }
   if (refine) {
-    resetRefinementStats(templ, NULL);
+    resetRefinementStats(templ, nullptr);
   }
 
   bitmap = readTextRegion(huff, refine, w, h, numInstances,
@@ -2344,7 +2345,7 @@
   bitmap = new JBIG2Bitmap(0, w, h);
   if (!bitmap->isOk()) {
     delete bitmap;
-    return NULL;
+    return nullptr;
   }
   if (defPixel) {
     bitmap->clearToOne();
@@ -2413,12 +2414,12 @@
 	if (unlikely(numInstances - inst > 0x800)) {
 	  // don't loop too often with damaged JBIg2 streams
 	  delete bitmap;
-	  return NULL;
+	  return nullptr;
 	}
       } else {
 
 	// get the symbol bitmap
-	symbolBitmap = NULL;
+	symbolBitmap = nullptr;
 	if (refine) {
 	  if (huff) {
 	    ri = (int)huffDecoder->readBit();
@@ -2472,7 +2473,7 @@
 	      delete symbolBitmap;
 	    }
 	    delete bitmap;
-	    return NULL;
+	    return nullptr;
 	  }
 	  bh = symbolBitmap->getHeight() - 1;
 	  if (transposed) {
@@ -2482,7 +2483,7 @@
 	        delete symbolBitmap;
 	      }
 	      delete bitmap;
-	      return NULL;
+	      return nullptr;
 	    }
 	    switch (refCorner) {
 	    case 0: // bottom left
@@ -2508,7 +2509,7 @@
 		  delete symbolBitmap;
 		}
 		delete bitmap;
-		return NULL;
+		return nullptr;
 	      }
 	      bitmap->combine(symbolBitmap, s, tt - bh, combOp);
 	      break;
@@ -2519,7 +2520,7 @@
 		  delete symbolBitmap;
 		}
 		delete bitmap;
-		return NULL;
+		return nullptr;
 	      }
 	      bitmap->combine(symbolBitmap, s, tt, combOp);
 	      break;
@@ -2530,7 +2531,7 @@
 		  delete symbolBitmap;
 		}
 		delete bitmap;
-		return NULL;
+		return nullptr;
 	      }
 	      bitmap->combine(symbolBitmap, s, tt - bh, combOp);
 	      break;
@@ -2541,7 +2542,7 @@
 		  delete symbolBitmap;
 		}
 		delete bitmap;
-		return NULL;
+		return nullptr;
 	      }
 	      bitmap->combine(symbolBitmap, s, tt, combOp);
 	      break;
@@ -2554,7 +2555,7 @@
 	} else {
 	  // NULL symbolBitmap only happens on error
 	  delete bitmap;
-	  return NULL;
+	  return nullptr;
 	}
       }
 
@@ -2597,7 +2598,7 @@
 
   // set up the arithmetic decoder
   if (!mmr) {
-    resetGenericStats(templ, NULL);
+    resetGenericStats(templ, nullptr);
     arithDecoder->start();
   }
 
@@ -2607,7 +2608,7 @@
   atx[2] =  2;             aty[2] = -2;
   atx[3] = -2;             aty[3] = -2;
   bitmap = readGenericBitmap(mmr, (grayMax + 1) * patternW, patternH,
-			     templ, gFalse, gFalse, NULL,
+			     templ, gFalse, gFalse, nullptr,
 			     atx, aty, length - 7);
 
   if (!bitmap)
@@ -2688,7 +2689,7 @@
     return;
   }
   seg = findSegment(refSegs[0]);
-  if (seg == NULL || seg->getType() != jbig2SegPatternDict) {
+  if (seg == nullptr || seg->getType() != jbig2SegPatternDict) {
     error(errSyntaxError, curStr->getPos(), "Bad symbol dictionary reference in JBIG2 halftone segment");
     return;
   }
@@ -2707,7 +2708,7 @@
     }
   }
   patternBitmap = patternDict->getBitmap(0);
-  if (unlikely(patternBitmap == NULL)) {
+  if (unlikely(patternBitmap == nullptr)) {
     error(errSyntaxError, curStr->getPos(), "Bad pattern bitmap");
     return;
   }
@@ -2716,7 +2717,7 @@
 
   // set up the arithmetic decoder
   if (!mmr) {
-    resetGenericStats(templ, NULL);
+    resetGenericStats(templ, nullptr);
     arithDecoder->start();
   }
 
@@ -2729,7 +2730,7 @@
   }
 
   // compute the skip bitmap
-  skipBitmap = NULL;
+  skipBitmap = nullptr;
   if (enableSkip) {
     skipBitmap = new JBIG2Bitmap(0, gridW, gridH);
     skipBitmap->clearToZero();
@@ -2774,7 +2775,7 @@
     for (n = 0; n < gridW; ++n) {
       if (!(enableSkip && skipBitmap->getPixel(n, m))) {
 	patternBitmap = patternDict->getBitmap(grayImg[i]);
-	if (unlikely(patternBitmap == NULL)) {
+	if (unlikely(patternBitmap == nullptr)) {
 	  delete skipBitmap;
 	  delete bitmap;
 	  gfree(grayImg);
@@ -2859,13 +2860,13 @@
 
   // set up the arithmetic decoder
   if (!mmr) {
-    resetGenericStats(templ, NULL);
+    resetGenericStats(templ, nullptr);
     arithDecoder->start();
   }
 
   // read the bitmap
   bitmap = readGenericBitmap(mmr, w, h, templ, tpgdOn, gFalse,
-			     NULL, atx, aty, mmr ? length - 18 : 0);
+			     nullptr, atx, aty, mmr ? length - 18 : 0);
   if (!bitmap)
     return;
 
@@ -2953,7 +2954,7 @@
   bitmap = new JBIG2Bitmap(0, w, h);
   if (!bitmap->isOk()) {
     delete bitmap;
-    return NULL;
+    return nullptr;
   }
   bitmap->clearToZero();
 
@@ -2965,7 +2966,7 @@
     if (w > INT_MAX - 2) {
       error(errSyntaxError, curStr->getPos(), "Bad width in JBIG2 generic bitmap");
       delete bitmap;
-      return NULL;
+      return nullptr;
     }
     // 0 <= codingLine[0] < codingLine[1] < ... < codingLine[n] = w
     // ---> max codingLine size = w + 1
@@ -3224,11 +3225,11 @@
 	    p0 = bitmap->getDataPtr() + (y - 2) * bitmap->getLineSize();
 	    buf0 = *p0++ << 8;
 	  } else {
-	    p0 = NULL;
+	    p0 = nullptr;
 	    buf0 = 0;
 	  }
 	} else {
-	  p1 = p0 = NULL;
+	  p1 = p0 = nullptr;
 	  buf1 = buf0 = 0;
 	}
 
@@ -3241,7 +3242,7 @@
 	    atP0 = bitmap->getDataPtr() + (y + aty[0]) * bitmap->getLineSize();
 	    atBuf0 = *atP0++ << 8;
 	  } else {
-	    atP0 = NULL;
+	    atP0 = nullptr;
 	    atBuf0 = 0;
 	  }
 	  atShift0 = 15 - atx[0];
@@ -3249,7 +3250,7 @@
 	    atP1 = bitmap->getDataPtr() + (y + aty[1]) * bitmap->getLineSize();
 	    atBuf1 = *atP1++ << 8;
 	  } else {
-	    atP1 = NULL;
+	    atP1 = nullptr;
 	    atBuf1 = 0;
 	  }
 	  atShift1 = 15 - atx[1];
@@ -3257,7 +3258,7 @@
 	    atP2 = bitmap->getDataPtr() + (y + aty[2]) * bitmap->getLineSize();
 	    atBuf2 = *atP2++ << 8;
 	  } else {
-	    atP2 = NULL;
+	    atP2 = nullptr;
 	    atBuf2 = 0;
 	  }
 	  atShift2 = 15 - atx[2];
@@ -3265,7 +3266,7 @@
 	    atP3 = bitmap->getDataPtr() + (y + aty[3]) * bitmap->getLineSize();
 	    atBuf3 = *atP3++ << 8;
 	  } else {
-	    atP3 = NULL;
+	    atP3 = nullptr;
 	    atBuf3 = 0;
 	  }
 	  atShift3 = 15 - atx[3];
@@ -3393,11 +3394,11 @@
 	    p0 = bitmap->getDataPtr() + (y - 2) * bitmap->getLineSize();
 	    buf0 = *p0++ << 8;
 	  } else {
-	    p0 = NULL;
+	    p0 = nullptr;
 	    buf0 = 0;
 	  }
 	} else {
-	  p1 = p0 = NULL;
+	  p1 = p0 = nullptr;
 	  buf1 = buf0 = 0;
 	}
 
@@ -3408,7 +3409,7 @@
 	    atP0 = bitmap->getDataPtr() + atY * bitmap->getLineSize();
 	    atBuf0 = *atP0++ << 8;
 	  } else {
-	    atP0 = NULL;
+	    atP0 = nullptr;
 	    atBuf0 = 0;
 	  }
 	  atShift0 = 15 - atx[0];
@@ -3509,11 +3510,11 @@
 	    p0 = bitmap->getDataPtr() + (y - 2) * bitmap->getLineSize();
 	    buf0 = *p0++ << 8;
 	  } else {
-	    p0 = NULL;
+	    p0 = nullptr;
 	    buf0 = 0;
 	  }
 	} else {
-	  p1 = p0 = NULL;
+	  p1 = p0 = nullptr;
 	  buf1 = buf0 = 0;
 	}
 
@@ -3524,7 +3525,7 @@
 	    atP0 = bitmap->getDataPtr() + atY * bitmap->getLineSize();
 	    atBuf0 = *atP0++ << 8;
 	  } else {
-	    atP0 = NULL;
+	    atP0 = nullptr;
 	    atBuf0 = 0;
 	  }
 	  atShift0 = 15 - atx[0];
@@ -3622,7 +3623,7 @@
 	  p1 = bitmap->getDataPtr() + (y - 1) * bitmap->getLineSize();
 	  buf1 = *p1++ << 8;
 	} else {
-	  p1 = NULL;
+	  p1 = nullptr;
 	  buf1 = 0;
 	}
 
@@ -3633,7 +3634,7 @@
 	    atP0 = bitmap->getDataPtr() + atY * bitmap->getLineSize();
 	    atBuf0 = *atP0++ << 8;
 	  } else {
-	    atP0 = NULL;
+	    atP0 = nullptr;
 	    atBuf0 = 0;
 	  }
 	  atShift0 = 15 - atx[0];
@@ -3765,7 +3766,7 @@
   }
   if (nRefSegs == 1) {
     seg = findSegment(refSegs[0]);
-    if (seg == NULL || seg->getType() != jbig2SegBitmap) {
+    if (seg == nullptr || seg->getType() != jbig2SegBitmap) {
       error(errSyntaxError, curStr->getPos(), "Bad bitmap reference in JBIG2 generic refinement segment");
       return;
     }
@@ -3775,7 +3776,7 @@
   }
 
   // set up the arithmetic decoder
-  resetRefinementStats(templ, NULL);
+  resetRefinementStats(templ, nullptr);
   arithDecoder->start();
 
   // read
@@ -3818,16 +3819,16 @@
   JBIG2Bitmap *bitmap;
   GBool ltp;
   Guint ltpCX, cx, cx0, cx2, cx3, cx4, tpgrCX0, tpgrCX1, tpgrCX2;
-  JBIG2BitmapPtr cxPtr0 = {0};
-  JBIG2BitmapPtr cxPtr1 = {0};
-  JBIG2BitmapPtr cxPtr2 = {0};
-  JBIG2BitmapPtr cxPtr3 = {0};
-  JBIG2BitmapPtr cxPtr4 = {0};
-  JBIG2BitmapPtr cxPtr5 = {0};
-  JBIG2BitmapPtr cxPtr6 = {0};
-  JBIG2BitmapPtr tpgrCXPtr0 = {0};
-  JBIG2BitmapPtr tpgrCXPtr1 = {0};
-  JBIG2BitmapPtr tpgrCXPtr2 = {0};
+  JBIG2BitmapPtr cxPtr0 = {nullptr, 0, 0};
+  JBIG2BitmapPtr cxPtr1 = {nullptr, 0, 0};
+  JBIG2BitmapPtr cxPtr2 = {nullptr, 0, 0};
+  JBIG2BitmapPtr cxPtr3 = {nullptr, 0, 0};
+  JBIG2BitmapPtr cxPtr4 = {nullptr, 0, 0};
+  JBIG2BitmapPtr cxPtr5 = {nullptr, 0, 0};
+  JBIG2BitmapPtr cxPtr6 = {nullptr, 0, 0};
+  JBIG2BitmapPtr tpgrCXPtr0 = {nullptr, 0, 0};
+  JBIG2BitmapPtr tpgrCXPtr1 = {nullptr, 0, 0};
+  JBIG2BitmapPtr tpgrCXPtr2 = {nullptr, 0, 0};
   int x, y, pix;
 
   if (!refBitmap) {
@@ -3838,7 +3839,7 @@
   if (!bitmap->isOk())
   {
     delete bitmap;
-    return NULL;
+    return nullptr;
   }
   bitmap->clearToZero();
 
@@ -3881,7 +3882,7 @@
 	tpgrCX2 = (tpgrCX2 << 1) | refBitmap->nextPixel(&tpgrCXPtr2);
 	tpgrCX2 = (tpgrCX2 << 1) | refBitmap->nextPixel(&tpgrCXPtr2);
       } else {
-	tpgrCXPtr0.p = tpgrCXPtr1.p = tpgrCXPtr2.p = NULL; // make gcc happy
+	tpgrCXPtr0.p = tpgrCXPtr1.p = tpgrCXPtr2.p = nullptr; // make gcc happy
 	tpgrCXPtr0.shift = tpgrCXPtr1.shift = tpgrCXPtr2.shift = 0;
 	tpgrCXPtr0.x = tpgrCXPtr1.x = tpgrCXPtr2.x = 0;
       }
@@ -3956,7 +3957,7 @@
 	tpgrCX2 = (tpgrCX2 << 1) | refBitmap->nextPixel(&tpgrCXPtr2);
 	tpgrCX2 = (tpgrCX2 << 1) | refBitmap->nextPixel(&tpgrCXPtr2);
       } else {
-	tpgrCXPtr0.p = tpgrCXPtr1.p = tpgrCXPtr2.p = NULL; // make gcc happy
+	tpgrCXPtr0.p = tpgrCXPtr1.p = tpgrCXPtr2.p = nullptr; // make gcc happy
 	tpgrCXPtr0.shift = tpgrCXPtr1.shift = tpgrCXPtr2.shift = 0;
 	tpgrCXPtr0.x = tpgrCXPtr1.x = tpgrCXPtr2.x = 0;
       }
@@ -4026,7 +4027,7 @@
 
   if (!pageBitmap->isOk()) {
     delete pageBitmap;
-    pageBitmap = NULL;
+    pageBitmap = nullptr;
     return;
   }
   
@@ -4156,7 +4157,7 @@
       return seg;
     }
   }
-  return NULL;
+  return nullptr;
 }
 
 void JBIG2Stream::discardSegment(Guint segNum) {

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/JPEG2000Stream.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/JPEG2000Stream.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/JPEG2000Stream.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -78,7 +78,7 @@
 JPXStream::JPXStream(Stream *strA) : FilterStream(strA) {
   priv = new JPXStreamPrivate;
   priv->inited = gFalse;
-  priv->image = NULL;
+  priv->image = nullptr;
   priv->npixels = 0;
   priv->ncomps = 0;
   priv->indexed = gFalse;
@@ -96,9 +96,9 @@
 }
 
 void JPXStream::close() {
-  if (priv->image != NULL) {
+  if (priv->image != nullptr) {
     opj_image_destroy(priv->image);
-    priv->image = NULL;
+    priv->image = nullptr;
     priv->npixels = 0;
   }
 }
@@ -131,7 +131,7 @@
 }
 
 GooString *JPXStream::getPSFilter(int psLevel, const char *indent) {
-  return NULL;
+  return nullptr;
 }
 
 GBool JPXStream::isBinary(GBool last) {
@@ -250,7 +250,7 @@
     priv->ncomps = priv->image->numcomps;
     if (alpha == 1 && priv->smaskInData == 0) priv->ncomps--;
     for (int component = 0; component < priv->ncomps; component++) {
-      if (priv->image->comps[component].data == NULL) {
+      if (priv->image->comps[component].data == nullptr) {
         close();
         break;
       }
@@ -289,7 +289,7 @@
   stream = opj_stream_default_create(OPJ_TRUE);
 
 #if OPENJPEG_VERSION >= OPENJPEG_VERSION_ENCODE(2, 1, 0)
-  opj_stream_set_user_data (stream, &jpxData, NULL);
+  opj_stream_set_user_data (stream, &jpxData, nullptr);
 #else
   opj_stream_set_user_data (stream, &jpxData);
 #endif
@@ -310,14 +310,14 @@
 
   /* Get the decoder handle of the format */
   decoder = opj_create_decompress(format);
-  if (decoder == NULL) {
+  if (decoder == nullptr) {
     error(errSyntaxWarning, -1, "Unable to create decoder");
     goto error;
   }
 
   /* Catch events using our callbacks */
-  opj_set_warning_handler(decoder, libopenjpeg_warning_callback, NULL);
-  opj_set_error_handler(decoder, libopenjpeg_error_callback, NULL);
+  opj_set_warning_handler(decoder, libopenjpeg_warning_callback, nullptr);
+  opj_set_error_handler(decoder, libopenjpeg_error_callback, nullptr);
 
   /* Setup the decoder decoding parameters */
   if (!opj_setup_decoder(decoder, &parameters)) {
@@ -326,7 +326,7 @@
   }
 
   /* Decode the stream and fill the image structure */
-  image = NULL;
+  image = nullptr;
   if (!opj_read_header(stream, decoder, &image)) {
     error(errSyntaxWarning, -1, "Unable to read header");
     goto error;
@@ -348,7 +348,7 @@
   opj_destroy_codec(decoder);
   opj_stream_destroy(stream);
 
-  if (image != NULL)
+  if (image != nullptr)
     return;
 
 error:

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Lexer.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Lexer.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Lexer.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -13,7 +13,7 @@
 // All changes made under the Poppler project to this file are licensed
 // under GPL version 2 or later
 //
-// Copyright (C) 2006-2010, 2012-2014, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2006-2010, 2012-2014, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2006 Krzysztof Kowalczyk <kkowalczyk at gmail.com>
 // Copyright (C) 2010 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2012, 2013 Adrian Johnson <ajohnson at redneon.com>
@@ -86,7 +86,6 @@
   xref = xrefA;
 
   if (obj->isStream()) {
-    Object obj2;
     streams = new Array(xref);
     freeArray = gTrue;
     streams->add(obj->copy());
@@ -97,12 +96,14 @@
   strPtr = 0;
   if (streams->getLength() > 0) {
     curStr = streams->get(strPtr);
-    curStr.streamReset();
+    if (curStr.isStream()) {
+      curStr.streamReset();
+    }
   }
 }
 
 Lexer::~Lexer() {
-  if (!curStr.isNone()) {
+  if (curStr.isStream()) {
     curStr.streamClose();
   }
   if (freeArray) {
@@ -120,7 +121,7 @@
   }
 
   c = EOF;
-  while (!curStr.isNone() && (c = curStr.streamGetChar()) == EOF) {
+  while (curStr.isStream() && (c = curStr.streamGetChar()) == EOF) {
     if (comesFromLook == gTrue) {
       return EOF;
     } else {
@@ -128,8 +129,10 @@
       curStr = Object();
       ++strPtr;
       if (strPtr < streams->getLength()) {
-        curStr = streams->get(strPtr);
-        curStr.streamReset();
+	curStr = streams->get(strPtr);
+	if (curStr.isStream()) {
+	  curStr.streamReset();
+	}
       }
     }
   }
@@ -279,7 +282,7 @@
     n = 0;
     numParen = 1;
     done = gFalse;
-    s = NULL;
+    s = nullptr;
     do {
       c2 = EOF;
       switch (c = getChar()) {
@@ -376,7 +379,7 @@
 	  n = 0;
 	  
 	  // we are growing see if the document is not malformed and we are growing too much
-	  if (objNum > 0 && xref != NULL)
+	  if (objNum > 0 && xref != nullptr)
 	  {
 	    int newObjNum = xref->getNumEntry(curStr.streamGetPos());
 	    if (newObjNum != objNum)
@@ -407,7 +410,7 @@
   case '/':
     p = tokBuf;
     n = 0;
-    s = NULL;
+    s = nullptr;
     while ((c = lookChar()) != EOF && !specialChars[c]) {
       getChar();
       if (c == '#') {
@@ -483,7 +486,7 @@
       p = tokBuf;
       m = n = 0;
       c2 = 0;
-      s = NULL;
+      s = nullptr;
       while (1) {
 	c = getChar();
 	if (c == '>') {

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Lexer.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Lexer.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Lexer.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -13,7 +13,7 @@
 // All changes made under the Poppler project to this file are licensed
 // under GPL version 2 or later
 //
-// Copyright (C) 2006, 2007, 2010, 2013, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2006, 2007, 2010, 2013, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2006 Krzysztof Kowalczyk <kkowalczyk at gmail.com>
 // Copyright (C) 2013 Adrian Johnson <ajohnson at redneon.com>
 // Copyright (C) 2013 Thomas Freitag <Thomas.Freitag at alfa.de>
@@ -55,6 +55,9 @@
   // Destructor.
   ~Lexer();
 
+  Lexer(const Lexer &) = delete;
+  Lexer& operator=(const Lexer &) = delete;
+
   // Get the next object from the input stream.
   Object getObj(int objNum = -1);
   Object getObj(const char *cmdA, int objNum);

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Linearization.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Linearization.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Linearization.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -23,8 +23,8 @@
   Parser *parser;
 
   str->reset();
-  parser = new Parser(NULL,
-      new Lexer(NULL, str->makeSubStream(str->getStart(), gFalse, 0, Object(objNull))),
+  parser = new Parser(nullptr,
+      new Lexer(nullptr, str->makeSubStream(str->getStart(), gFalse, 0, Object(objNull))),
       gFalse);
   Object obj1 = parser->getObj();
   Object obj2 = parser->getObj();
@@ -48,7 +48,7 @@
   if (!linDict.isDict()) return 0;
 
   int length;
-  if (linDict.getDict()->lookupInt("L", NULL, &length) &&
+  if (linDict.getDict()->lookupInt("L", nullptr, &length) &&
       length > 0) {
     return length;
   } else {
@@ -139,7 +139,7 @@
 {
   int objectNumberFirst = 0;
   if (linDict.isDict() &&
-      linDict.getDict()->lookupInt("O", NULL, &objectNumberFirst) &&
+      linDict.getDict()->lookupInt("O", nullptr, &objectNumberFirst) &&
       objectNumberFirst > 0) {
     return objectNumberFirst;
   } else {
@@ -152,7 +152,7 @@
 {
   int pageEndFirst = 0;
   if (linDict.isDict() &&
-      linDict.getDict()->lookupInt("E", NULL, &pageEndFirst) &&
+      linDict.getDict()->lookupInt("E", nullptr, &pageEndFirst) &&
       pageEndFirst > 0) {
     return pageEndFirst;
   } else {
@@ -165,7 +165,7 @@
 {
   int numPages = 0;
   if (linDict.isDict() &&
-      linDict.getDict()->lookupInt("N", NULL, &numPages) &&
+      linDict.getDict()->lookupInt("N", nullptr, &numPages) &&
       numPages > 0) {
     return numPages;
   } else {
@@ -178,7 +178,7 @@
 {
   int mainXRefEntriesOffset = 0;
   if (linDict.isDict() &&
-      linDict.getDict()->lookupInt("T", NULL, &mainXRefEntriesOffset) &&
+      linDict.getDict()->lookupInt("T", nullptr, &mainXRefEntriesOffset) &&
       mainXRefEntriesOffset > 0) {
     return mainXRefEntriesOffset;
   } else {
@@ -192,7 +192,7 @@
   int pageFirst = 0; // Optional, defaults to 0.
 
   if (linDict.isDict()) {
-    linDict.getDict()->lookupInt("P", NULL, &pageFirst);
+    linDict.getDict()->lookupInt("P", nullptr, &pageFirst);
   }
 
   if ((pageFirst < 0) || (pageFirst >= getNumPages())) {

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Link.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Link.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Link.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -57,7 +57,7 @@
   action = new LinkGoTo(obj);
   if (!action->isOk()) {
     delete action;
-    return NULL;
+    return nullptr;
   }
   return action;
 }
@@ -68,7 +68,7 @@
   if (!obj->isDict()) {
       error(errSyntaxWarning, -1, "parseAction: Bad annotation action for URI '{0:s}'",
             baseURI ? baseURI->getCString() : "NULL");
-      return NULL;
+      return nullptr;
   }
 
   Object obj2 = obj->dictLookup("S");
@@ -127,12 +127,12 @@
   } else {
     error(errSyntaxWarning, -1, "parseAction: Unknown annotation action object: URI = '{0:s}'",
           baseURI ? baseURI->getCString() : "NULL");
-    action = NULL;
+    action = nullptr;
   }
 
   if (action && !action->isOk()) {
     delete action;
-    return NULL;
+    return nullptr;
   }
   return action;
 }
@@ -362,8 +362,8 @@
 //------------------------------------------------------------------------
 
 LinkGoTo::LinkGoTo(Object *destObj) {
-  dest = NULL;
-  namedDest = NULL;
+  dest = nullptr;
+  namedDest = nullptr;
 
   // named destination
   if (destObj->isName()) {
@@ -376,7 +376,7 @@
     dest = new LinkDest(destObj->getArray());
     if (!dest->isOk()) {
       delete dest;
-      dest = NULL;
+      dest = nullptr;
     }
 
   // error
@@ -397,9 +397,9 @@
 //------------------------------------------------------------------------
 
 LinkGoToR::LinkGoToR(Object *fileSpecObj, Object *destObj) {
-  fileName = NULL;
-  dest = NULL;
-  namedDest = NULL;
+  fileName = nullptr;
+  dest = nullptr;
+  namedDest = nullptr;
 
   // get file name
   Object obj1 = getFileSpecNameForPlatform (fileSpecObj);
@@ -418,7 +418,7 @@
     dest = new LinkDest(destObj->getArray());
     if (!dest->isOk()) {
       delete dest;
-      dest = NULL;
+      dest = nullptr;
     }
 
   // error
@@ -443,8 +443,8 @@
 
 LinkLaunch::LinkLaunch(Object *actionObj) {
 
-  fileName = NULL;
-  params = NULL;
+  fileName = nullptr;
+  params = nullptr;
 
   if (actionObj->isDict()) {
     Object obj1 = actionObj->dictLookup("F");
@@ -494,7 +494,7 @@
   int n;
   char c;
 
-  uri = NULL;
+  uri = nullptr;
   if (uriObj->isString()) {
     uri2 = uriObj->getString();
     n = (int)strcspn(uri2->getCString(), "/:");
@@ -539,7 +539,7 @@
 //------------------------------------------------------------------------
 
 LinkNamed::LinkNamed(Object *nameObj) {
-  name = NULL;
+  name = nullptr;
   if (nameObj->isName()) {
     name = new GooString(nameObj->getName());
   }
@@ -557,7 +557,7 @@
 
 LinkMovie::LinkMovie(Object *obj) {
   annotRef.num = -1;
-  annotTitle = NULL;
+  annotTitle = nullptr;
 
   Object tmp = obj->dictLookupNF("Annotation");
   if (tmp.isRef()) {
@@ -569,7 +569,7 @@
     annotTitle = tmp.getString()->copy();
   }
 
-  if ((annotTitle == NULL) && (annotRef.num == -1)) {
+  if ((annotTitle == nullptr) && (annotRef.num == -1)) {
     error(errSyntaxError, -1,
 	  "Movie action is missing both the Annot and T keys");
   }
@@ -608,7 +608,7 @@
   sync = gFalse;
   repeat = gFalse;
   mix = gFalse;
-  sound = NULL;
+  sound = nullptr;
   if (soundObj->isDict())
   {
     // volume
@@ -647,8 +647,8 @@
 
 LinkRendition::LinkRendition(Object *obj) {
   operation = NoRendition;
-  media = NULL;
-  js = NULL;
+  media = nullptr;
+  js = nullptr;
   int operationCode = -1;
 
   if (obj->isDict()) {
@@ -671,8 +671,6 @@
       if (!js && (operationCode < 0 || operationCode > 4)) {
         error(errSyntaxWarning, -1, "Invalid Rendition Action: unrecognized operation valued: {0:d}", operationCode);
       } else {
-        Object obj1;
-
         // retrieve rendition object
         renditionObj = obj->dictLookup("R");
         if (renditionObj.isDict()) {
@@ -723,7 +721,7 @@
 //------------------------------------------------------------------------
 
 LinkJavaScript::LinkJavaScript(Object *jsObj) {
-  js = NULL;
+  js = nullptr;
 
   if (jsObj->isString()) {
     js = new GooString(jsObj->getString());
@@ -750,7 +748,7 @@
 
   Object obj1 = obj->dictLookup("State");
   if (obj1.isArray()) {
-    StateList *stList = NULL;
+    StateList *stList = nullptr;
 
     for (int i = 0; i < obj1.arrayGetLength(); ++i) {
       Object obj2 = obj1.arrayGetNF(i);
@@ -770,7 +768,7 @@
 	} else {
 	  error(errSyntaxWarning, -1, "Invalid name '{0:s}' in OCG Action state array", name);
 	  delete stList;
-	  stList = NULL;
+	  stList = nullptr;
 	}
       } else if (obj2.isRef()) {
         if (stList) {
@@ -792,7 +790,7 @@
   } else {
     error(errSyntaxWarning, -1, "Invalid OCGState action");
     delete stateList;
-    stateList = NULL;
+    stateList = nullptr;
   }
 
   obj1 = obj->dictLookup("PreserveRB");
@@ -831,7 +829,7 @@
   int size;
   int i;
 
-  links = NULL;
+  links = nullptr;
   size = 0;
   numLinks = 0;
 
@@ -870,7 +868,7 @@
       return links[i]->getAction();
     }
   }
-  return NULL;
+  return nullptr;
 }
 
 GBool Links::onLink(double x, double y) const {

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Link.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Link.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Link.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -17,6 +17,7 @@
 // Copyright (C) 2008 Hugo Mercier <hmercier31 at gmail.com>
 // Copyright (C) 2010, 2011 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2012 Tobias Koening <tobias.koenig at kdab.com>
+// Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -62,6 +63,10 @@
 class LinkAction {
 public:
 
+  LinkAction() = default;
+  LinkAction(const LinkAction &) = delete;
+  LinkAction& operator=(const LinkAction &other) = delete;
+
   // Destructor.
   virtual ~LinkAction() {}
 
@@ -429,8 +434,10 @@
 
   enum State { On, Off, Toggle};
   struct StateList {
-    StateList() { list = NULL; }
+    StateList() { list = nullptr; }
     ~StateList();
+    StateList(const StateList &) = delete;
+    StateList& operator=(const StateList &) = delete;
     State st;
     GooList *list;
   };
@@ -481,6 +488,9 @@
   // Destructor.
   ~Links();
 
+  Links(const Links &) = delete;
+  Links& operator=(const Links &) = delete;
+
   // Iterate through list of links.
   int getNumLinks() const { return numLinks; }
   AnnotLink *getLink(int i) const { return links[i]; }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -18,12 +18,12 @@
 
 
 MarkedContentOutputDev::MarkedContentOutputDev(int mcidA):
-  currentFont(NULL),
-  currentText(NULL),
+  currentFont(nullptr),
+  currentText(nullptr),
   mcid(mcidA),
   pageWidth(0.0),
   pageHeight(0.0),
-  unicodeMap(NULL)
+  unicodeMap(nullptr)
 {
   currentColor.r = currentColor.g = currentColor.b = 0;
 }
@@ -48,7 +48,7 @@
                                  currentFont,
                                  currentColor));
   }
-  currentText = NULL;
+  currentText = nullptr;
 }
 
 
@@ -73,7 +73,7 @@
 {
   int id = -1;
   if (properties)
-    properties->lookupInt("MCID", NULL, &id);
+    properties->lookupInt("MCID", nullptr, &id);
 
   if (id == -1)
     return;
@@ -102,9 +102,9 @@
     return gFalse;
 
   if (!currentFont)
-    return font != NULL && font->isOk();
+    return font != nullptr && font->isOk();
 
-  if (font == NULL)
+  if (font == nullptr)
     return gTrue;
 
   // Two non-null valid fonts are the same if they point to the same Ref
@@ -154,11 +154,11 @@
     currentColor = color;
 
   if (fontChange) {
-    if (currentFont != NULL) {
+    if (currentFont != nullptr) {
       currentFont->decRefCnt();
-      currentFont = NULL;
+      currentFont = nullptr;
     }
-    if (state->getFont() != NULL) {
+    if (state->getFont() != nullptr) {
       currentFont = state->getFont();
       currentFont->incRefCnt();
     }
@@ -197,7 +197,7 @@
       char buf[8];
       int n = unicodeMap->mapUnicode(u[i], buf, sizeof(buf));
       if (n > 0) {
-        if (currentText == NULL)
+        if (currentText == nullptr)
           currentText = new GooString();
         currentText->append(buf, n);
       }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -5,6 +5,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright 2013 Igalia S.L.
+// Copyright 2018 Albert Astals Cid <aacid at kde.org>
 //
 //========================================================================
 
@@ -72,6 +73,9 @@
         font->decRefCnt();
       delete text;
     }
+
+    Data(const Data &) = delete;
+    Data& operator=(const Data &) = delete;
   };
 
   Data *data;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Movie.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Movie.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Movie.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -173,7 +173,7 @@
 }
 
 void Movie::parseMovie (Object *movieDict) {
-  fileName = NULL;
+  fileName = nullptr;
   rotationAngle = 0;
   width = -1;
   height = -1;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Movie.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Movie.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Movie.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -5,7 +5,7 @@
 //---------------------------------------------------------------------------------
 // Hugo Mercier <hmercier31[at]gmail.com> (c) 2008
 // Carlos Garcia Campos <carlosgc at gnome.org> (c) 2010
-// Albert Astals Cid <aacid at kde.org> (c) 2017
+// Albert Astals Cid <aacid at kde.org> (c) 2017, 2018
 //
 // This program is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -74,6 +74,7 @@
   Movie(Object *objMovie);
   Movie(const Movie &movie);
   ~Movie();
+  Movie& operator=(const Movie &) = delete;
 
   GBool isOk() { return ok; }
   MovieActivationParameters* getActivationParameters() { return &MA; }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -32,7 +32,7 @@
   len = 0;
   tab = (NameToCharCodeEntry *)gmallocn(size, sizeof(NameToCharCodeEntry));
   for (i = 0; i < size; ++i) {
-    tab[i].name = NULL;
+    tab[i].name = nullptr;
   }
 }
 
@@ -58,7 +58,7 @@
     size = 2*size + 1;
     tab = (NameToCharCodeEntry *)gmallocn(size, sizeof(NameToCharCodeEntry));
     for (h = 0; h < size; ++h) {
-      tab[h].name = NULL;
+      tab[h].name = nullptr;
     }
     for (i = 0; i < oldSize; ++i) {
       if (oldTab[i].name) {

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -6,6 +6,20 @@
 //
 //========================================================================
 
+//========================================================================
+//
+// Modified under the Poppler project - http://poppler.freedesktop.org
+//
+// All changes made under the Poppler project to this file are licensed
+// under GPL version 2 or later
+//
+// Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
+//
+// To see a description of the changes please see the Changelog file that
+// came with your tarball or type make ChangeLog if you are building from git
+//
+//========================================================================
+
 #ifndef NAMETOCHARCODE_H
 #define NAMETOCHARCODE_H
 
@@ -25,6 +39,9 @@
   NameToCharCode();
   ~NameToCharCode();
 
+  NameToCharCode(const NameToCharCode &) = delete;
+  NameToCharCode& operator=(const NameToCharCode &) = delete;
+
   void add(const char *name, CharCode c);
   CharCode lookup(const char *name);
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/NameToUnicodeTable.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/NameToUnicodeTable.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/NameToUnicodeTable.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -4274,7 +4274,7 @@
   {0x007c, "|"},
   {0x007d, "}"},
   {0x007e, "~"},
-  { 0, NULL }
+  { 0, nullptr }
 };
 
 // map ZapfDingbats names to Unicode
@@ -4480,5 +4480,5 @@
   {0x275c, "a98"},
   {0x275d, "a99"},
   {0x2720, "a9"},
-  { 0, NULL }
+  { 0, nullptr }
 };

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Object.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Object.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Object.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -19,7 +19,7 @@
 // Copyright (C) 2009 Jakub Wilk <jwilk at jwilk.net>
 // Copyright (C) 2012 Fabio D'Urso <fabiodurso at hotmail.it>
 // Copyright (C) 2013 Thomas Freitag <Thomas.Freitag at alfa.de>
-// Copyright (C) 2013, 2017 Adrian Johnson <ajohnson at redneon.com>
+// Copyright (C) 2013, 2017, 2018 Adrian Johnson <ajohnson at redneon.com>
 // Copyright (C) 2013 Adrian Perez de Castro <aperez at igalia.com>
 // Copyright (C) 2016 Jakub Alba <jakubalba at gmail.com>
 //
@@ -86,6 +86,14 @@
   int gen;			// generation number
 };
 
+struct RefCompare {
+  bool operator() (const Ref& lhs, const Ref& rhs) const {
+    if (lhs.num != rhs.num)
+      return lhs.num < rhs.num;
+    return lhs.gen < rhs.gen;
+  }
+};
+
 //------------------------------------------------------------------------
 // object types
 //------------------------------------------------------------------------
@@ -137,7 +145,7 @@
 class Object {
 public:
   // clear the anonymous union as best we can -- clear at least a pointer
-  void zeroUnion() { this->cString = NULL; }
+  void zeroUnion() { this->cString = nullptr; }
 
   // Default constructor.
   Object():
@@ -232,7 +240,7 @@
   // After takeString() the only method that should be called for the object is free()
   // because the object it's not expected to have a NULL string.
   GooString *takeString() {
-    OBJECT_TYPE_CHECK(objString); GooString *s = string; string = NULL; return s; }
+    OBJECT_TYPE_CHECK(objString); GooString *s = string; string = nullptr; return s; }
   char *getName() const { OBJECT_TYPE_CHECK(objName); return cString; }
   Array *getArray() const { OBJECT_TYPE_CHECK(objArray); return array; }
   Dict *getDict() const { OBJECT_TYPE_CHECK(objDict); return dict; }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -41,7 +41,7 @@
   // we need to parse the dictionary here, and build optionalContentGroups
   ok = gTrue;
   optionalContentGroups = new GooList();
-  display = NULL;
+  display = nullptr;
 
   Object ocgList = ocgObject->dictLookup("OCGs");
   if (!ocgList.isArray()) {
@@ -141,7 +141,7 @@
 OptionalContentGroup* OCGs::findOcgByRef( const Ref &ref)
 {
   //TODO: make this more efficient
-  OptionalContentGroup *ocg = NULL;
+  OptionalContentGroup *ocg = nullptr;
   for (int i=0; i < optionalContentGroups->getLength(); ++i) {
     ocg = (OptionalContentGroup*)optionalContentGroups->get(i);
     if ( (ocg->getRef().num == ref.num) && (ocg->getRef().gen == ref.gen) ) {
@@ -150,7 +150,7 @@
   }
 
   // not found
-  return NULL;
+  return nullptr;
 }
 
 OCDisplayNode *OCGs::getDisplayRoot()
@@ -331,7 +331,7 @@
 
 //------------------------------------------------------------------------
 
-OptionalContentGroup::OptionalContentGroup(Dict *ocgDict) : m_name(NULL)
+OptionalContentGroup::OptionalContentGroup(Dict *ocgDict) : m_name(nullptr)
 {
   Object ocgName = ocgDict->lookup("Name");
   if (!ocgName.isString()) {
@@ -404,7 +404,7 @@
 
   if (recursion > displayNodeRecursionLimit) {
     error(errSyntaxError, -1, "Loop detected in optional content order");
-    return NULL;
+    return nullptr;
   }
   if (obj->isRef()) {
     if ((ocgA = oc->findOcgByRef(obj->getRef()))) {
@@ -413,7 +413,7 @@
   }
   Object obj2 = obj->fetch(xref);
   if (!obj2.isArray()) {
-    return NULL;
+    return nullptr;
   }
   i = 0;
   if (obj2.arrayGetLength() >= 1) {
@@ -442,21 +442,21 @@
 }
 
 OCDisplayNode::OCDisplayNode() {
-  name = NULL;
-  ocg = NULL;
-  children = NULL;
+  name = nullptr;
+  ocg = nullptr;
+  children = nullptr;
 }
 
 OCDisplayNode::OCDisplayNode(GooString *nameA) {
   name = new GooString(nameA);
-  ocg = NULL;
-  children = NULL;
+  ocg = nullptr;
+  children = nullptr;
 }
 
 OCDisplayNode::OCDisplayNode(OptionalContentGroup *ocgA) {
-  name = (ocgA->getName()) ? ocgA->getName()->copy() : NULL;
+  name = (ocgA->getName()) ? ocgA->getName()->copy() : nullptr;
   ocg = ocgA;
-  children = NULL;
+  children = nullptr;
 }
 
 void OCDisplayNode::addChild(OCDisplayNode *child) {
@@ -478,7 +478,7 @@
   GooList *childrenA;
 
   childrenA = children;
-  children = NULL;
+  children = nullptr;
   return childrenA;
 }
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -4,7 +4,7 @@
 //
 // Copyright 2007 Brad Hards <bradh at kde.org>
 // Copyright 2008 Carlos Garcia Campos <carlosgc at gnome.org>
-// Copyright 2013 Albert Astals Cid <aacid at kde.org>
+// Copyright 2013, 2018 Albert Astals Cid <aacid at kde.org>
 //
 // Released under the GPL (version 2, or later, at your option)
 //
@@ -35,6 +35,9 @@
   OCGs(Object *ocgObject, XRef *xref);
   ~OCGs();
 
+  OCGs(const OCGs &) = delete;
+  OCGs& operator=(const OCGs &) = delete;
+
   // Is OCGS valid?
   GBool isOk() { return ok; }
   
@@ -90,6 +93,9 @@
 
   ~OptionalContentGroup();
 
+  OptionalContentGroup(const OptionalContentGroup &) = delete;
+  OptionalContentGroup& operator=(const OptionalContentGroup &) = delete;
+
   GooString* getName() const;
 
   Ref getRef() const;
@@ -118,6 +124,9 @@
   OCDisplayNode();
   ~OCDisplayNode();
 
+  OCDisplayNode(const OCDisplayNode &) = delete;
+  OCDisplayNode& operator=(const OCDisplayNode &) = delete;
+
   GooString *getName() { return name; }
   OptionalContentGroup *getOCG() { return ocg; }
   int getNumChildren();

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Outline.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Outline.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Outline.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -47,7 +47,7 @@
     return;
   }
   Object first = outlineObj->dictLookupNF("First");
-  items = OutlineItem::readItemList(&first, xref);
+  items = OutlineItem::readItemList(nullptr, &first, xref);
 }
 
 Outline::~Outline() {
@@ -58,13 +58,15 @@
 
 //------------------------------------------------------------------------
 
-OutlineItem::OutlineItem(Dict *dict, XRef *xrefA) {
+OutlineItem::OutlineItem(Dict *dict, int refNumA, OutlineItem *parentA, XRef *xrefA) {
   Object obj1;
 
+  refNum = refNumA;
+  parent = parentA;
   xref = xrefA;
-  title = NULL;
-  action = NULL;
-  kids = NULL;
+  title = nullptr;
+  action = nullptr;
+  kids = nullptr;
 
 
   obj1 = dict->lookup("Title");
@@ -108,21 +110,22 @@
   }
 }
 
-GooList *OutlineItem::readItemList(Object *firstItemRef, XRef *xrefA) {
-  GooList *items;
-  char* alreadyRead;
-  OutlineItem *item;
-  Object *p;
+GooList *OutlineItem::readItemList(OutlineItem *parent, Object *firstItemRef, XRef *xrefA) {
+  GooList *items = new GooList();
 
-  items = new GooList();
-
-  alreadyRead = (char *)gmalloc(xrefA->getNumObjects());
+  char* alreadyRead = (char *)gmalloc(xrefA->getNumObjects());
   memset(alreadyRead, 0, xrefA->getNumObjects());
 
-  p = firstItemRef;
+  OutlineItem *parentO = parent;
+  while (parentO) {
+    alreadyRead[parentO->refNum] = 1;
+    parentO = parentO->parent;
+  }
+
+  Object *p = firstItemRef;
   while (p->isRef() && 
 	 (p->getRefNum() >= 0) && 
-         (p->getRefNum() < xrefA->getNumObjects()) && 
+         (p->getRefNum() < xrefA->getNumObjects()) &&
          !alreadyRead[p->getRefNum()]) {
     Object obj = p->fetch(xrefA);
     if (!obj.isDict()) {
@@ -129,7 +132,7 @@
       break;
     }
     alreadyRead[p->getRefNum()] = 1;
-    item = new OutlineItem(obj.getDict(), xrefA);
+    OutlineItem *item = new OutlineItem(obj.getDict(), p->getRefNum(), parent, xrefA);
     items->append(item);
     p = &item->nextRef;
   }
@@ -138,7 +141,7 @@
 
   if (!items->getLength()) {
     delete items;
-    items = NULL;
+    items = nullptr;
   }
 
   return items;
@@ -146,7 +149,7 @@
 
 void OutlineItem::open() {
   if (!kids) {
-    kids = readItemList(&firstRef, xref);
+    kids = readItemList(this, &firstRef, xref);
   }
 }
 
@@ -153,6 +156,6 @@
 void OutlineItem::close() {
   if (kids) {
     deleteGooList(kids, OutlineItem);
-    kids = NULL;
+    kids = nullptr;
   }
 }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Outline.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Outline.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Outline.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -14,7 +14,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2005 Marco Pesenti Gritti <mpg at redhat.com>
-// Copyright (C) 2016 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2016, 2018 Albert Astals Cid <aacid at kde.org>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -44,6 +44,9 @@
   Outline(Object *outlineObj, XRef *xref);
   ~Outline();
 
+  Outline(const Outline &) = delete;
+  Outline& operator=(const Outline &) = delete;
+
   GooList *getItems() { return items; }
 
 private:
@@ -57,11 +60,14 @@
 class OutlineItem {
 public:
 
-  OutlineItem(Dict *dict, XRef *xrefA);
+  OutlineItem(Dict *dict, int refNumA, OutlineItem *parentA, XRef *xrefA);
   ~OutlineItem();
 
-  static GooList *readItemList(Object *firstItemRef, XRef *xrefA);
+  OutlineItem(const OutlineItem &) = delete;
+  OutlineItem& operator=(const OutlineItem &) = delete;
 
+  static GooList *readItemList(OutlineItem *parent, Object *firstItemRef, XRef *xrefA);
+
   void open();
   void close();
 
@@ -74,6 +80,8 @@
 
 private:
 
+  int refNum;
+  OutlineItem *parent;
   XRef *xref;
   Unicode *title;
   int titleLen;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/OutputDev.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/OutputDev.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/OutputDev.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -143,7 +143,7 @@
 				int maskWidth, int maskHeight,
 				GBool maskInvert,
 				GBool maskInterpolate) {
-  drawImage(state, ref, str, width, height, colorMap, interpolate, NULL, gFalse);
+  drawImage(state, ref, str, width, height, colorMap, interpolate, nullptr, gFalse);
 }
 
 void OutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str,
@@ -154,7 +154,7 @@
 				    int maskWidth, int maskHeight,
 				    GfxImageColorMap *maskColorMap,
 				    GBool maskInterpolate) {
-  drawImage(state, ref, str, width, height, colorMap, interpolate, NULL, gFalse);
+  drawImage(state, ref, str, width, height, colorMap, interpolate, nullptr, gFalse);
 }
 
 void OutputDev::endMarkedContent(GfxState *state) {
@@ -188,7 +188,7 @@
 GooHash *OutputDev::endProfile() {
   GooHash *profile = profileHash;
 
-  profileHash = NULL;
+  profileHash = nullptr;
 
   return profile;
 }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/OutputDev.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/OutputDev.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/OutputDev.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -79,7 +79,7 @@
  : iccColorSpaceCache(5)
 #endif
   {
-      profileHash = NULL;
+      profileHash = nullptr;
   }
 
   // Destructor.

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -14,7 +14,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2005, 2006, 2008 Brad Hards <bradh at frogmouth.net>
-// Copyright (C) 2005, 2007-2009, 2011-2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2007-2009, 2011-2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2008 Julien Rebetez <julienr at svn.gnome.org>
 // Copyright (C) 2008, 2010 Pino Toscano <pino at kde.org>
 // Copyright (C) 2008, 2010, 2011 Carlos Garcia Campos <carlosgc at gnome.org>
@@ -36,6 +36,8 @@
 // Copyright (C) 2015 André Esser <bepandre at hotmail.com>
 // Copyright (C) 2016 Jakub Alba <jakubalba at gmail.com>
 // Copyright (C) 2017 Jean Ghali <jghali at libertysurf.fr>
+// Copyright (C) 2017 Fredrik Fornwall <fredrik at fornwall.net>
+// Copyright (C) 2018 Ben Timby <btimby at gmail.com>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -115,19 +117,19 @@
 #endif
   ok = gFalse;
   errCode = errNone;
-  fileName = NULL;
-  file = NULL;
-  str = NULL;
-  xref = NULL;
-  linearization = NULL;
-  catalog = NULL;
-  hints = NULL;
+  fileName = nullptr;
+  file = nullptr;
+  str = nullptr;
+  xref = nullptr;
+  linearization = nullptr;
+  catalog = nullptr;
+  hints = nullptr;
 #ifndef DISABLE_OUTLINE
-  outline = NULL;
+  outline = nullptr;
 #endif
   startXRefPos = -1;
-  secHdlr = NULL;
-  pageCache = NULL;
+  secHdlr = nullptr;
+  pageCache = nullptr;
 }
 
 PDFDoc::PDFDoc()
@@ -162,7 +164,7 @@
 #else
    file = GooFile::open(fileName);
 #endif
-  if (file == NULL) {
+  if (file == nullptr) {
     // fopen() has failed.
     // Keep a copy of the errno returned by fopen so that it can be 
     // referred to later.
@@ -238,7 +240,7 @@
     fileNameU[n] = L'\0';
 #endif
   } else {
-    fileName = NULL;
+    fileName = nullptr;
 #ifdef _WIN32
     fileNameU = NULL;
 #endif
@@ -249,6 +251,13 @@
 
 GBool PDFDoc::setup(GooString *ownerPassword, GooString *userPassword) {
   pdfdocLocker();
+
+  if (str->getLength() <= 0)
+  {
+    error(errSyntaxError, -1, "Document stream is empty");
+    return gFalse;
+  }
+
   str->setPos(0, -1);
   if (str->getPos() < 0)
   {
@@ -296,7 +305,7 @@
       // try one more time to contruct the Catalog, maybe the problem is damaged XRef 
       delete catalog;
       delete xref;
-      xref = new XRef(str, 0, 0, NULL, true);
+      xref = new XRef(str, 0, 0, nullptr, true);
       catalog = new Catalog(this);
     }
 
@@ -400,11 +409,16 @@
   char *p;
   char *tokptr;
   int i;
+  int c;
 
   pdfMajorVersion = 0;
   pdfMinorVersion = 0;
   for (i = 0; i < headerSearchSize; ++i) {
-    hdrBuf[i] = str->getChar();
+    if ((c = str->getChar()) == EOF) {
+      error(errSyntaxWarning, -1, "EOF while reading header (continuing anyway)");
+      return;
+    }
+    hdrBuf[i] = c;
   }
   hdrBuf[headerSearchSize] = '\0';
   for (i = 0; i < headerSearchSize - 5; ++i) {
@@ -463,7 +477,7 @@
 std::vector<FormWidgetSignature*> PDFDoc::getSignatureWidgets()
 {
   int num_pages = getNumPages();
-  FormPageWidgets *page_widgets = NULL;
+  FormPageWidgets *page_widgets = nullptr;
   std::vector<FormWidgetSignature*> widget_vector;
 
   for (int i = 1; i <= num_pages; i++) {
@@ -470,7 +484,7 @@
     Page *p = getCatalog()->getPage(i);
     if (p) {
       page_widgets = p->getFormWidgets();
-      for (int j = 0; page_widgets != NULL && j < page_widgets->getNumWidgets(); j++) {
+      for (int j = 0; page_widgets != nullptr && j < page_widgets->getNumWidgets(); j++) {
 	if (page_widgets->getWidget(j)->getType() == formSignature) {
 	    widget_vector.push_back(static_cast<FormWidgetSignature*>(page_widgets->getWidget(j)));
 	}
@@ -536,7 +550,7 @@
 Links *PDFDoc::getLinks(int page) {
   Page *p = getPage(page);
   if (!p) {
-    return new Links (NULL);
+    return new Links (nullptr);
   }
   return p->getLinks();
 }
@@ -556,7 +570,7 @@
 }
 
 GBool PDFDoc::checkLinearization() {
-  if (linearization == NULL)
+  if (linearization == nullptr)
     return gFalse;
   if (linearizationState == 1)
     return gTrue;
@@ -645,7 +659,7 @@
 GooString *PDFDoc::getDocInfoStringEntry(const char *key) {
   Object infoObj = getDocInfo();
   if (!infoObj.isDict()) {
-      return NULL;
+      return nullptr;
   }
 
   Object entryObj = infoObj.dictLookup(key);
@@ -655,7 +669,7 @@
   if (entryObj.isString()) {
     result = entryObj.takeString();
   } else {
-    result = NULL;
+    result = nullptr;
   }
 
   return result;
@@ -730,6 +744,11 @@
   FILE *f;
   OutStream *outStr;
   XRef *yRef, *countRef;
+
+  if (file && file->modificationTimeChangedSinceOpen())
+    return errFileChangedSinceOpen;
+
+
   int rootNum = getXRef()->getNumObjects() + 1;
 
   // Make sure that special flags are set, because we are going to read
@@ -745,7 +764,7 @@
     error(errInternal, -1, "Illegal pageNo: {0:d}({1:d})", pageNo, getNumPages() );
     return errOpenFile;
   }
-  PDFRectangle *cropBox = NULL;
+  PDFRectangle *cropBox = nullptr;
   if (getCatalog()->getPage(pageNo)->isCropped()) {
     cropBox = getCatalog()->getPage(pageNo)->getCropBox();
   }
@@ -764,7 +783,7 @@
 
   yRef = new XRef(getXRef()->getTrailerDict());
 
-  if (secHdlr != NULL && !secHdlr->isUnencrypted()) {
+  if (secHdlr != nullptr && !secHdlr->isUnencrypted()) {
     yRef->setEncryption(secHdlr->getPermissionFlags(), 
       secHdlr->getOwnerPasswordOk(), fileKey, keyLength, secHdlr->getEncVersion(), secHdlr->getEncRevision(), encAlgorithm);
   }
@@ -835,7 +854,7 @@
       if (j > 0) outStr->printf(" ");
       Object value = catDict->getValNF(j);
       outStr->printf("/%s ", key);
-      writeObject(&value, outStr, getXRef(), 0, NULL, cryptRC4, 0, 0, 0);
+      writeObject(&value, outStr, getXRef(), 0, nullptr, cryptRC4, 0, 0, 0);
     }
   }
   outStr->printf(">>\nendobj\n");
@@ -845,7 +864,7 @@
   outStr->printf("<< /Type /Pages /Kids [ %d 0 R ] /Count 1 ", rootNum + 2);
   if (resourcesObj.isDict()) {
     outStr->printf("/Resources ");
-    writeObject(&resourcesObj, outStr, getXRef(), 0, NULL, cryptRC4, 0, 0, 0);
+    writeObject(&resourcesObj, outStr, getXRef(), 0, nullptr, cryptRC4, 0, 0, 0);
   }
   outStr->printf(">>\n");
   outStr->printf("endobj\n");
@@ -861,7 +880,7 @@
       outStr->printf("/Parent %d 0 R", rootNum + 1);
     } else {
       outStr->printf("/%s ", key);
-      writeObject(&value, outStr, getXRef(), 0, NULL, cryptRC4, 0, 0, 0);
+      writeObject(&value, outStr, getXRef(), 0, nullptr, cryptRC4, 0, 0, 0);
     }
   }
   outStr->printf(" >>\nendobj\n");
@@ -901,6 +920,9 @@
 }
 
 int PDFDoc::saveAs(OutStream *outStr, PDFWriteMode mode) {
+  if (file && file->modificationTimeChangedSinceOpen())
+    return errFileChangedSinceOpen;
+
   if (!xref->isModified() && mode == writeStandard) {
     // simply copy the original file
     saveWithoutChangesAs (outStr);
@@ -934,6 +956,9 @@
 
 int PDFDoc::saveWithoutChangesAs(OutStream *outStr) {
   int c;
+
+  if (file && file->modificationTimeChangedSinceOpen())
+    return errFileChangedSinceOpen;
   
   BaseStream *copyStr = str->copy();
   copyStr->reset();
@@ -997,7 +1022,7 @@
 
   Goffset uxrefOffset = outStr->getPos();
   int numobjects = xref->getNumObjects();
-  const char *fileNameA = fileName ? fileName->getCString() : NULL;
+  const char *fileNameA = fileName ? fileName->getCString() : nullptr;
   Ref rootRef, uxrefStreamRef;
   rootRef.num = getXRef()->getRootNum();
   rootRef.gen = getXRef()->getRootGen();
@@ -1059,7 +1084,7 @@
       Goffset offset = writeObjectHeader(&ref, outStr);
       // Write unencrypted objects in unencrypted form
       if (xref->getEntry(i)->getFlag(XRefEntry::Unencrypted)) {
-        writeObject(&obj1, outStr, NULL, cryptRC4, 0, 0, 0);
+        writeObject(&obj1, outStr, nullptr, cryptRC4, 0, 0, 0);
       } else {
         writeObject(&obj1, outStr, fileKey, encAlgorithm, keyLength, ref.num, ref.gen);
       }
@@ -1157,7 +1182,7 @@
                           CryptAlgorithm encAlgorithm, int keyLength, int objNum, int objGen)
 {
   // Encrypt string if encryption is enabled
-  GooString *sEnc = NULL;
+  GooString *sEnc = nullptr;
   if (fileKey) {
     EncryptStream *enc = new EncryptStream(new MemStream(s->getCString(), 0, s->getLength(), Object(objNull)),
                                            fileKey, encAlgorithm, keyLength, objNum, objGen);
@@ -1272,7 +1297,7 @@
           //we write the stream unencoded => TODO: write stream encoder
 
           // Encrypt stream
-          EncryptStream *encStream = NULL;
+          EncryptStream *encStream = nullptr;
           GBool removeFilter = gTrue;
           if (stream->getKind() == strWeird && fileKey) {
             Object filter = stream->getDict()->lookup("Filter");
@@ -1298,7 +1323,7 @@
             } else {
               removeFilter = gFalse;
             }
-          } else if (fileKey != NULL) { // Encrypt stream
+          } else if (fileKey != nullptr) { // Encrypt stream
             encStream = new EncryptStream(stream, fileKey, encAlgorithm, keyLength, objNum, objGen);
             encStream->setAutoDelete(gFalse);
             stream = encStream;
@@ -1378,7 +1403,7 @@
   // - values of entry in information dictionnary
   GooString message;
   char buffer[256];
-  sprintf(buffer, "%i", (int)time(NULL));
+  sprintf(buffer, "%i", (int)time(nullptr));
   message.append(buffer);
 
   if (fileName)
@@ -1455,7 +1480,7 @@
 {
   uxref->writeTableToFile( outStr, writeAllEntries );
   outStr->printf( "trailer\r\n");
-  writeDictionnary(trailerDict.getDict(), outStr, xRef, 0, NULL, cryptRC4, 0, 0, 0, nullptr);
+  writeDictionnary(trailerDict.getDict(), outStr, xRef, 0, nullptr, cryptRC4, 0, 0, 0, nullptr);
   outStr->printf( "\r\nstartxref\r\n");
   outStr->printf( "%lli\r\n", uxrefOffset);
   outStr->printf( "%%%%EOF\r\n");
@@ -1472,7 +1497,7 @@
   MemStream *mStream = new MemStream( stmData.getCString(), 0, stmData.getLength(), std::move(trailerDict) );
   writeObjectHeader(uxrefStreamRef, outStr);
   Object obj1(static_cast<Stream*>(mStream));
-  writeObject(&obj1, outStr, xRef, 0, NULL, cryptRC4, 0, 0, 0);
+  writeObject(&obj1, outStr, xRef, 0, nullptr, cryptRC4, 0, 0, 0);
   writeObjectFooter(outStr);
 
   outStr->printf( "startxref\r\n");
@@ -1483,7 +1508,7 @@
 void PDFDoc::writeXRefTableTrailer(Goffset uxrefOffset, XRef *uxref, GBool writeAllEntries,
                                    int uxrefSize, OutStream* outStr, GBool incrUpdate)
 {
-  const char *fileNameA = fileName ? fileName->getCString() : NULL;
+  const char *fileNameA = fileName ? fileName->getCString() : nullptr;
   // file size (doesn't include the trailer)
   unsigned int fileSize = 0;
   int c;
@@ -1503,7 +1528,7 @@
 void PDFDoc::writeHeader(OutStream *outStr, int major, int minor)
 {
    outStr->printf("%%PDF-%d.%d\n", major, minor);
-   outStr->printf("%%\xE2\xE3\xCF\xD3\n");
+   outStr->printf("%%%c%c%c%c\n", 0xE2, 0xE3, 0xCF, 0xD3);
 }
 
 void PDFDoc::markDictionnary (Dict* dict, XRef * xRef, XRef *countRef, Guint numOffset, int oldRefNum, int newRefNum, std::set<Dict*> *alreadyMarkedDicts)
@@ -1522,7 +1547,6 @@
     alreadyMarkedDicts->insert(dict);
   }
 
-  Object obj1;
   for (int i=0; i<dict->getLength(); i++) {
     const char *key = dict->getKey(i);
     if (strcmp(key, "Annots") != 0) {
@@ -1614,7 +1638,7 @@
   Object mediaBoxObject(mediaBoxArray);
   Object trimBoxObject = mediaBoxObject.copy();
   pageDict->add(copyString("MediaBox"), std::move(mediaBoxObject));
-  if (cropBox != NULL) {
+  if (cropBox != nullptr) {
     Array *cropBoxArray = new Array(getXRef());
     cropBoxArray->add(Object(cropBox->x1));
     cropBoxArray->add(Object(cropBox->y1));
@@ -1673,8 +1697,8 @@
               } else {
                 Object page  = getXRef()->fetch(obj2.getRef().num, obj2.getRef().gen);
                 if (page.isDict()) {
-                  Dict *dict = page.getDict();
-                  Object pagetype = dict->lookup("Type");
+                  Dict *pageDict = page.getDict();
+                  Object pagetype = pageDict->lookup("Type");
                   if (!pagetype.isName() || strcmp(pagetype.getName(), "Page") != 0) {
                     continue;
                   }
@@ -1789,9 +1813,9 @@
       Object obj = getXRef()->fetch(ref.num - numOffset, ref.gen);
       Goffset offset = writeObjectHeader(&ref, outStr);
       if (combine) {
-        writeObject(&obj, outStr, getXRef(), numOffset, NULL, cryptRC4, 0, 0, 0);
+        writeObject(&obj, outStr, getXRef(), numOffset, nullptr, cryptRC4, 0, 0, 0);
       } else if (xRef->getEntry(n)->getFlag(XRefEntry::Unencrypted)) {
-        writeObject(&obj, outStr, NULL, cryptRC4, 0, 0, 0);
+        writeObject(&obj, outStr, nullptr, cryptRC4, 0, 0, 0);
       } else {
         writeObject(&obj, outStr, fileKey, encAlgorithm, keyLength, ref.num, ref.gen);
       }
@@ -1938,13 +1962,13 @@
   pageRef.num = getHints()->getPageObjectNum(page);
   if (!pageRef.num) {
     error(errSyntaxWarning, -1, "Failed to get object num from hint tables for page {0:d}", page);
-    return NULL;
+    return nullptr;
   }
 
   // check for bogus ref - this can happen in corrupted PDF files
   if (pageRef.num < 0 || pageRef.num >= xref->getNumObjects()) {
     error(errSyntaxWarning, -1, "Invalid object num ({0:d}) for page {1:d}", pageRef.num, page);
-    return NULL;
+    return nullptr;
   }
 
   pageRef.gen = xref->getEntry(pageRef.num)->gen;
@@ -1951,17 +1975,17 @@
   Object obj = xref->fetch(pageRef.num, pageRef.gen);
   if (!obj.isDict("Page")) {
     error(errSyntaxWarning, -1, "Object ({0:d} {1:d}) is not a pageDict", pageRef.num, pageRef.gen);
-    return NULL;
+    return nullptr;
   }
   Dict *pageDict = obj.getDict();
 
   return new Page(this, page, &obj, pageRef,
-               new PageAttrs(NULL, pageDict), catalog->getForm());
+               new PageAttrs(nullptr, pageDict), catalog->getForm());
 }
 
 Page *PDFDoc::getPage(int page)
 {
-  if ((page < 1) || page > getNumPages()) return NULL;
+  if ((page < 1) || page > getNumPages()) return nullptr;
 
   if (isLinearized() && checkLinearization()) {
     pdfdocLocker();
@@ -1968,7 +1992,7 @@
     if (!pageCache) {
       pageCache = (Page **) gmallocn(getNumPages(), sizeof(Page *));
       for (int i = 0; i < getNumPages(); i++) {
-        pageCache[i] = NULL;
+        pageCache[i] = nullptr;
       }
     }
     if (!pageCache[page-1]) {

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -14,7 +14,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2005, 2006, 2008 Brad Hards <bradh at frogmouth.net>
-// Copyright (C) 2005, 2009, 2014, 2015, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2009, 2014, 2015, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2008 Julien Rebetez <julienr at svn.gnome.org>
 // Copyright (C) 2008 Pino Toscano <pino at kde.org>
 // Copyright (C) 2008 Carlos Garcia Campos <carlosgc at gnome.org>
@@ -92,6 +92,9 @@
 	 GooString *userPassword = NULL, void *guiDataA = NULL);
   ~PDFDoc();
 
+  PDFDoc(const PDFDoc &) = delete;
+  PDFDoc& operator=(const PDFDoc &) = delete;
+
   static PDFDoc *ErrorPDFDoc(int errorCode, GooString *fileNameA = NULL);
 
   // Was PDF document successfully opened?

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDocBuilder.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDocBuilder.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDocBuilder.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -5,7 +5,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright 2010 Hib Eris <hib at hiberis.nl>
-// Copyright 2010 Albert Astals Cid <aacid at kde.org>
+// Copyright 2010, 2018 Albert Astals Cid <aacid at kde.org>
 //
 //========================================================================
 
@@ -26,8 +26,12 @@
 
 public:
 
-  virtual ~PDFDocBuilder() {};
+  PDFDocBuilder() = default;
+  virtual ~PDFDocBuilder() = default;
 
+  PDFDocBuilder(const PDFDocBuilder &) = delete;
+  PDFDocBuilder& operator=(const PDFDocBuilder &) = delete;
+
   // Builds a new PDFDoc. Returns a PDFDoc. You should check this PDFDoc
   // with PDFDoc::isOk() for failures.
   // The caller is responsible for deleting ownerPassword, userPassWord and guiData.

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDocFactory.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDocFactory.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/PDFDocFactory.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -5,7 +5,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright 2010 Hib Eris <hib at hiberis.nl>
-// Copyright 2010 Albert Astals Cid <aacid at kde.org>
+// Copyright 2010, 2018 Albert Astals Cid <aacid at kde.org>
 //
 //========================================================================
 
@@ -37,6 +37,9 @@
   PDFDocFactory(GooList *pdfDocBuilders = NULL);
   ~PDFDocFactory();
 
+  PDFDocFactory(const PDFDocFactory &) = delete;
+  PDFDocFactory& operator=(const PDFDocFactory &) = delete;
+
   // Create a PDFDoc. Returns a PDFDoc. You should check this PDFDoc
   // with PDFDoc::isOk() for failures.
   // The caller is responsible for deleting ownerPassword, userPassWord and guiData.

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -15,7 +15,7 @@
 //
 // Copyright (C) 2005 Martin Kretzschmar <martink at gnome.org>
 // Copyright (C) 2005, 2006 Kristian Høgsberg <krh at redhat.com>
-// Copyright (C) 2006-2009, 2011-2013, 2015-2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2006-2009, 2011-2013, 2015-2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2006 Jeff Muizelaar <jeff at infidigm.net>
 // Copyright (C) 2007, 2008 Brad Hards <bradh at kde.org>
 // Copyright (C) 2008, 2009 Koji Otani <sho at bbr.jp>
@@ -830,7 +830,7 @@
   "} def",
   "~123sn",
   "end",
-  NULL
+  nullptr
 };
 
 static const char *cmapProlog[] = {
@@ -875,7 +875,7 @@
   "  currentdict CMapName exch /CMap defineresource pop",
   "end",
   "end",
-  NULL
+  nullptr
 };
 
 //------------------------------------------------------------------------
@@ -946,6 +946,9 @@
 		   double yA, double kA, GooString *nameA);
   ~PSOutCustomColor();
 
+  PSOutCustomColor(const PSOutCustomColor &) = delete;
+  PSOutCustomColor& operator=(const PSOutCustomColor &) = delete;
+
   double c, m, y, k;
   GooString *name;
   PSOutCustomColor *next;
@@ -958,7 +961,7 @@
   y = yA;
   k = kA;
   name = nameA;
-  next = NULL;
+  next = nullptr;
 }
 
 PSOutCustomColor::~PSOutCustomColor() {
@@ -976,6 +979,8 @@
 struct PSOutPaperSize {
   PSOutPaperSize(GooString *nameA, int wA, int hA) { name = nameA; w = wA; h = hA; }
   ~PSOutPaperSize() { delete name; }
+  PSOutPaperSize(const PSOutPaperSize &) = delete;
+  PSOutPaperSize& operator=(const PSOutPaperSize &) = delete;
   GooString *name;
   int w, h;
 };
@@ -996,7 +1001,7 @@
     { return (bufIdx >= bufSize && !fillBuf()) ? EOF : buf[bufIdx++]; }
   int lookChar() override
     { return (bufIdx >= bufSize && !fillBuf()) ? EOF : buf[bufIdx]; }
-  GooString *getPSFilter(int psLevel, const char *indent) override { return NULL; }
+  GooString *getPSFilter(int psLevel, const char *indent) override { return nullptr; }
   GBool isBinary(GBool last = gTrue) override { return gTrue; }
   GBool isEncoder() override { return gTrue; }
 
@@ -1020,7 +1025,7 @@
   width = widthA;
   height = heightA;
   colorMap = colorMapA;
-  imgStr = NULL;
+  imgStr = nullptr;
   pixelIdx = 0;
   bufIdx = gfxColorMaxComps;
   bufSize = ((GfxDeviceNColorSpace *)colorMap->getColorSpace())->
@@ -1094,28 +1099,28 @@
   FILE *f;
   PSFileType fileTypeA;
 
-  underlayCbk = NULL;
-  underlayCbkData = NULL;
-  overlayCbk = NULL;
-  overlayCbkData = NULL;
+  underlayCbk = nullptr;
+  underlayCbkData = nullptr;
+  overlayCbk = nullptr;
+  overlayCbkData = nullptr;
   customCodeCbk = customCodeCbkA;
   customCodeCbkData = customCodeCbkDataA;
 
-  fontIDs = NULL;
+  fontIDs = nullptr;
   fontNames = new GooHash(gTrue);
   fontMaxValidGlyph = new GooHash(gTrue);
-  t1FontNames = NULL;
-  font8Info = NULL;
-  font16Enc = NULL;
-  imgIDs = NULL;
-  formIDs = NULL;
-  paperSizes = NULL;
-  embFontList = NULL;
-  customColors = NULL;
+  t1FontNames = nullptr;
+  font8Info = nullptr;
+  font16Enc = nullptr;
+  imgIDs = nullptr;
+  formIDs = nullptr;
+  paperSizes = nullptr;
+  embFontList = nullptr;
+  customColors = nullptr;
   haveTextClip = gFalse;
-  t3String = NULL;
+  t3String = nullptr;
   forceRasterize = forceRasterizeA;
-  psTitle = NULL;
+  psTitle = nullptr;
 
   // open file or pipe
   if (!strcmp(fileName, "-")) {
@@ -1163,28 +1168,28 @@
 			 GBool manualCtrlA,
 			 PSOutCustomCodeCbk customCodeCbkA,
 			 void *customCodeCbkDataA) {
-  underlayCbk = NULL;
-  underlayCbkData = NULL;
-  overlayCbk = NULL;
-  overlayCbkData = NULL;
+  underlayCbk = nullptr;
+  underlayCbkData = nullptr;
+  overlayCbk = nullptr;
+  overlayCbkData = nullptr;
   customCodeCbk = customCodeCbkA;
   customCodeCbkData = customCodeCbkDataA;
 
-  fontIDs = NULL;
+  fontIDs = nullptr;
   fontNames = new GooHash(gTrue);
   fontMaxValidGlyph = new GooHash(gTrue);
-  t1FontNames = NULL;
-  font8Info = NULL;
-  font16Enc = NULL;
-  imgIDs = NULL;
-  formIDs = NULL;
-  paperSizes = NULL;
-  embFontList = NULL;
-  customColors = NULL;
+  t1FontNames = nullptr;
+  font8Info = nullptr;
+  font16Enc = nullptr;
+  imgIDs = nullptr;
+  formIDs = nullptr;
+  paperSizes = nullptr;
+  embFontList = nullptr;
+  customColors = nullptr;
   haveTextClip = gFalse;
-  t3String = NULL;
+  t3String = nullptr;
   forceRasterize = forceRasterizeA;
-  psTitle = NULL;
+  psTitle = nullptr;
 
   init(outputFuncA, outputStreamA, psGeneric, psTitleA,
        doc, pages, modeA,
@@ -1217,7 +1222,7 @@
     { "Folio",     612,  936 },
     { "Quarto",    610,  780 },
     { "10x14",     720, 1008 },
-    { NULL,          0,    0 }
+    { nullptr,          0,    0 }
 };
 
 /* PLRM specifies a tolerance of 5 points when matching page sizes */
@@ -1266,7 +1271,7 @@
   outputFunc = outputFuncA;
   outputStream = outputStreamA;
   fileType = fileTypeA;
-  psTitle = (psTitleA? strdup(psTitleA): NULL);
+  psTitle = (psTitleA? strdup(psTitleA): nullptr);
   doc = docA;
   level = globalParams->getPSLevel();
   pages = pagesA;
@@ -1281,7 +1286,7 @@
   imgURY = imgURYA;
   manualCtrl = manualCtrlA;
 
-  xref = NULL;
+  xref = nullptr;
 
   processColors = 0;
   inType3Char = gFalse;
@@ -1333,7 +1338,7 @@
   for (size_t pgi = 0; pgi < pages.size(); ++pgi) {
     const int pg = pages[pgi];
     page = catalog->getPage(pg);
-    if (page == NULL)
+    if (page == nullptr)
       paperMatch = gFalse;
     if (!paperMatch) {
       w = paperWidth;
@@ -1368,7 +1373,7 @@
     }
     if (i == paperSizes->getLength()) {
       const StandardMedia *media = standardMedia;
-      GooString *name = NULL;
+      GooString *name = nullptr;
       while (media->name) {
         if (pageDimensionEqual(w, media->width) && pageDimensionEqual(h, media->height)) {
           name = new GooString(media->name);
@@ -1872,7 +1877,7 @@
       gfxFontDict = new GfxFontDict(xref, &r, obj2.getDict());
     }
   } else if (obj1.isDict()) {
-    gfxFontDict = new GfxFontDict(xref, NULL, obj1.getDict());
+    gfxFontDict = new GfxFontDict(xref, nullptr, obj1.getDict());
   }
   if (gfxFontDict) {
     for (i = 0; i < gfxFontDict->getNumFonts(); ++i) {
@@ -1911,7 +1916,7 @@
   }
   fontIDs[fontIDLen++] = *font->getID();
 
-  psName = NULL;
+  psName = nullptr;
   xs = ys = 1;
   subst = gFalse;
 
@@ -1921,7 +1926,7 @@
     setupType3Font(font, psName, parentResDict);
   } else {
     fontLoc = font->locateFont(xref, this);
-    if (fontLoc != NULL) {
+    if (fontLoc != nullptr) {
       switch (fontLoc->locType) {
       case gfxFontLocEmbedded:
 	switch (fontLoc->fontType) {
@@ -2011,7 +2016,7 @@
 					       sizeof(PSFont16Enc));
 	}
 	font16Enc[font16EncLen].fontID = *font->getID();
-	font16Enc[font16EncLen].enc = NULL;
+	font16Enc[font16EncLen].enc = nullptr;
 	++font16EncLen;
       } else {
 	error(errSyntaxError, -1,
@@ -2063,7 +2068,7 @@
 	error(errSyntaxError, -1,
 	      "Couldn't find Unicode map for 16-bit font encoding '{0:t}'",
 	      fontLoc->encoding);
-	font16Enc[font16EncLen].enc = NULL;
+	font16Enc[font16EncLen].enc = nullptr;
       }
       ++font16EncLen;
     }
@@ -2402,7 +2407,7 @@
   // convert it to a Type 1 font
   if ((fontBuf = font->readEmbFontFile(xref, &fontLen))) {
     if ((ffT1C = FoFiType1C::make(fontBuf, fontLen))) {
-      ffT1C->convertToType1(psName->getCString(), NULL, gTrue,
+      ffT1C->convertToType1(psName->getCString(), nullptr, gTrue,
 			    outputFunc, outputStream);
       delete ffT1C;
     }
@@ -2448,7 +2453,7 @@
   if ((fontBuf = font->readEmbFontFile(xref, &fontLen))) {
     if ((ffTT = FoFiTrueType::make(fontBuf, fontLen))) {
       if (ffTT->isOpenTypeCFF()) {
-	ffTT->convertToType1(psName->getCString(), NULL, gTrue,
+	ffTT->convertToType1(psName->getCString(), nullptr, gTrue,
 			     outputFunc, outputStream);
       }
       delete ffTT;
@@ -2480,7 +2485,7 @@
       ffTT->convertToType42(psName->getCString(),
 			    ((Gfx8BitFont *)font)->getHasEncoding()
 			      ? ((Gfx8BitFont *)font)->getEncoding()
-			      : (char **)NULL,
+			      : (char **)nullptr,
 			    codeToGID, outputFunc, outputStream);
       if (codeToGID) {
 	if (font8InfoLen >= font8InfoSize) {
@@ -2519,7 +2524,7 @@
     ffTT->convertToType42(psName->getCString(),
 			  ((Gfx8BitFont *)font)->getHasEncoding()
 			    ? ((Gfx8BitFont *)font)->getEncoding()
-			    : (char **)NULL,
+			    : (char **)nullptr,
 			  codeToGID, outputFunc, outputStream);
     if (codeToGID) {
       if (font8InfoLen >= font8InfoSize) {
@@ -2567,7 +2572,7 @@
 
     // check for embedding permission
     if (ffTT->getEmbeddingRights() >= 1) {
-      codeToGID = NULL;
+      codeToGID = nullptr;
       codeToGIDLen = 0;
       if (((GfxCIDFont *)font)->getCIDToGID()) {
 	codeToGIDLen = ((GfxCIDFont *)font)->getCIDToGIDLen();
@@ -2649,11 +2654,11 @@
     if ((ffT1C = FoFiType1C::make(fontBuf, fontLen))) {
       if (globalParams->getPSLevel() >= psLevel3) {
 	// Level 3: use a CID font
-	ffT1C->convertToCIDType0(psName->getCString(), NULL, 0,
+	ffT1C->convertToCIDType0(psName->getCString(), nullptr, 0,
 				 outputFunc, outputStream);
       } else {
 	// otherwise: use a non-CID composite font
-	ffT1C->convertToType0(psName->getCString(), NULL, 0,
+	ffT1C->convertToType0(psName->getCString(), nullptr, 0,
 			      outputFunc, outputStream);
       }
       delete ffT1C;
@@ -2818,7 +2823,7 @@
     box.y1 = m[1];
     box.x2 = m[2];
     box.y2 = m[3];
-    gfx = new Gfx(doc, this, resDict, &box, NULL);
+    gfx = new Gfx(doc, this, resDict, &box, nullptr);
     inType3Char = gTrue;
     for (i = 0; i < charProcs->getLength(); ++i) {
       t3FillColorOnly = gFalse;
@@ -2841,7 +2846,7 @@
 	(*outputFunc)(outputStream, t3String->getCString(),
 		      t3String->getLength());
 	delete t3String;
-	t3String = NULL;
+	t3String = nullptr;
       }
       if (t3NeedsRestore) {
 	(*outputFunc)(outputStream, "Q\n", 2);
@@ -3191,7 +3196,7 @@
 
   // get resources
   Object resObj = dict->lookup("Resources");
-  resDict = resObj.isDict() ? resObj.getDict() : (Dict *)NULL;
+  resDict = resObj.isDict() ? resObj.getDict() : (Dict *)nullptr;
 
   writePSFmt("/f_{0:d}_{1:d} {{\n", id.num, id.gen);
   writePS("q\n");
@@ -3746,7 +3751,7 @@
     (*underlayCbk)(this, underlayCbkData);
   }
   if (overlayCbk) {
-    saveState(NULL);
+    saveState(nullptr);
   }
 
   xScale = yScale = 1;
@@ -3960,7 +3965,7 @@
 
 void PSOutputDev::endPage() {
   if (overlayCbk) {
-    restoreState(NULL);
+    restoreState(nullptr);
     (*overlayCbk)(this, overlayCbkData);
   }
 
@@ -4411,7 +4416,7 @@
   box.y1 = bbox[1];
   box.x2 = bbox[2];
   box.y2 = bbox[3];
-  gfx = new Gfx(doc, this, resDict, &box, NULL);
+  gfx = new Gfx(doc, this, resDict, &box, nullptr);
   writePS("/x {\n");
   if (paintType == 2) {
     writePSFmt("{0:.6g} 0 {1:.6g} {2:.6g} {3:.6g} {4:.6g} setcachedevice\n",
@@ -4484,7 +4489,7 @@
   box.y1 = bbox[1];
   box.x2 = bbox[2];
   box.y2 = bbox[3];
-  gfx = new Gfx(doc, this, resDict, &box, NULL);
+  gfx = new Gfx(doc, this, resDict, &box, nullptr);
   inType3Char = gTrue;
   if (paintType == 2) {
     inUncoloredPattern = gTrue;
@@ -4529,7 +4534,7 @@
     box.y1 = bbox[1];
     box.x2 = bbox[2];
     box.y2 = bbox[3];
-    gfx = new Gfx(doc, this, resDict, &box, NULL, NULL, NULL, gfxA->getXRef());
+    gfx = new Gfx(doc, this, resDict, &box, nullptr, nullptr, nullptr, gfxA->getXRef());
     writePSFmt("[{0:.6g} {1:.6g} {2:.6g} {3:.6g} {4:.6g} {5:.6g}] cm\n", mat[0], mat[1], mat[2], mat[3], tx, ty);
     inType3Char = gTrue;
     gfx->display(str);
@@ -5042,8 +5047,8 @@
   wMode = font->getWMode();
 
   // check for a subtitute 16-bit font
-  uMap = NULL;
-  codeToGID = NULL;
+  uMap = nullptr;
+  codeToGID = nullptr;
   if (font->isCIDFont()) {
     for (i = 0; i < font16EncLen; ++i) {
       if (font->getID()->num == font16Enc[i].fontID.num &&
@@ -5185,18 +5190,18 @@
   switch (level) {
     case psLevel1:
     case psLevel1Sep:
-      doImageL1(ref, NULL, invert, inlineImg, str, width, height, len,
-                NULL, NULL, 0, 0, gFalse);
+      doImageL1(ref, nullptr, invert, inlineImg, str, width, height, len,
+                nullptr, nullptr, 0, 0, gFalse);
     break;
     case psLevel2:
     case psLevel2Sep:
-      doImageL2(ref, NULL, invert, inlineImg, str, width, height, len,
-                NULL, NULL, 0, 0, gFalse);
+      doImageL2(ref, nullptr, invert, inlineImg, str, width, height, len,
+                nullptr, nullptr, 0, 0, gFalse);
     break;
     case psLevel3:
     case psLevel3Sep:
-      doImageL3(ref, NULL, invert, inlineImg, str, width, height, len,
-                NULL, NULL, 0, 0, gFalse);
+      doImageL3(ref, nullptr, invert, inlineImg, str, width, height, len,
+                nullptr, nullptr, 0, 0, gFalse);
     break;
   }
 }
@@ -5225,22 +5230,22 @@
   switch (level) {
   case psLevel1:
     doImageL1(ref, colorMap, gFalse, inlineImg, str,
-	     width, height, len, maskColors, NULL, 0, 0, gFalse);
+	     width, height, len, maskColors, nullptr, 0, 0, gFalse);
     break;
   case psLevel1Sep:
     //~ handle indexed, separation, ... color spaces
     doImageL1Sep(ref, colorMap, gFalse, inlineImg, str,
-	     width, height, len, maskColors, NULL, 0, 0, gFalse);
+	     width, height, len, maskColors, nullptr, 0, 0, gFalse);
     break;
   case psLevel2:
   case psLevel2Sep:
     doImageL2(ref, colorMap, gFalse, inlineImg, str,
-	      width, height, len, maskColors, NULL, 0, 0, gFalse);
+	      width, height, len, maskColors, nullptr, 0, 0, gFalse);
     break;
   case psLevel3:
   case psLevel3Sep:
     doImageL3(ref, colorMap, gFalse, inlineImg, str,
-	      width, height, len, maskColors, NULL, 0, 0, gFalse);
+	      width, height, len, maskColors, nullptr, 0, 0, gFalse);
     break;
   }
   t3Cacheable = gFalse;
@@ -5260,22 +5265,22 @@
   switch (level) {
   case psLevel1:
     doImageL1(ref, colorMap, gFalse, gFalse, str, width, height, len,
-	      NULL, maskStr, maskWidth, maskHeight, maskInvert);    
+	      nullptr, maskStr, maskWidth, maskHeight, maskInvert);    
     break;
   case psLevel1Sep:
     //~ handle indexed, separation, ... color spaces
     doImageL1Sep(ref, colorMap, gFalse, gFalse, str, width, height, len,
-	      NULL, maskStr, maskWidth, maskHeight, maskInvert);    
+	      nullptr, maskStr, maskWidth, maskHeight, maskInvert);    
     break;
   case psLevel2:
   case psLevel2Sep:
     doImageL2(ref, colorMap, gFalse, gFalse, str, width, height, len,
-	      NULL, maskStr, maskWidth, maskHeight, maskInvert);
+	      nullptr, maskStr, maskWidth, maskHeight, maskInvert);
     break;
   case psLevel3:
   case psLevel3Sep:
     doImageL3(ref, colorMap, gFalse, gFalse, str, width, height, len,
-	      NULL, maskStr, maskWidth, maskHeight, maskInvert);
+	      nullptr, maskStr, maskWidth, maskHeight, maskInvert);
     break;
   }
   t3Cacheable = gFalse;
@@ -5988,7 +5993,7 @@
   // filters
   if ((mode == psModeForm || inType3Char || preloadImagesForms) &&
       uncompressPreloadedImages) {
-    s = NULL;
+    s = nullptr;
     useLZW = useRLE = gFalse;
     useCompressed = gFalse;
     useASCII = gFalse;
@@ -6162,7 +6167,7 @@
 
   useFlate = useLZW = useRLE = useASCII = useCompressed = gFalse;
   maskUseFlate = maskUseLZW = maskUseRLE = maskUseASCII = maskUseCompressed = gFalse;
-  maskFilters = NULL; // make gcc happy
+  maskFilters = nullptr; // make gcc happy
 
   // explicit masking
   if (maskStr) {
@@ -6170,7 +6175,7 @@
     // mask data source
     if ((mode == psModeForm || inType3Char || preloadImagesForms) &&
       uncompressPreloadedImages) {
-      s = NULL;
+      s = nullptr;
     } else {
       s = maskStr->getPSFilter(3, "  ");
       if (!s) {
@@ -6409,7 +6414,7 @@
 
   if ((mode == psModeForm || inType3Char || preloadImagesForms) &&
       uncompressPreloadedImages) {
-    s = NULL;
+    s = nullptr;
   } else {
     s = str->getPSFilter(level < psLevel2 ? 1 : level < psLevel3 ? 2 : 3,
 			 "    ");
@@ -6720,7 +6725,7 @@
       if (((GfxDeviceNColorSpace *)baseCS)->getAlt()->getMode() == csLab) {
 	labCS = (GfxLabColorSpace *)((GfxDeviceNColorSpace *)baseCS)->getAlt();
       } else {
-	labCS = NULL;
+	labCS = nullptr;
       }
       numAltComps = ((GfxDeviceNColorSpace *)baseCS)->getAlt()->getNComps();
       p = lookup;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -433,7 +433,7 @@
   void writePSFmt(const char *fmt, ...);
   void writePSString(GooString *s);
   void writePSName(const char *s);
-  GooString *filterPSLabel(GooString *label, GBool *needParens=0);
+  GooString *filterPSLabel(GooString *label, GBool *needParens=nullptr);
   void writePSTextLine(GooString *s);
 
   PSLevel level;		// PostScript level (1, 2, separation)

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/PSTokenizer.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/PSTokenizer.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/PSTokenizer.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -15,6 +15,7 @@
 //
 // Copyright (C) 2006 Scott Turner <scotty1024 at mac.com>
 // Copyright (C) 2008 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2017 Vincent Le Garrec <legarrec.vincent at gmail.com>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -84,7 +85,7 @@
       }
     } else if (c == '%') {
       comment = gTrue;
-    } else if (specialChars[c] != 1) {
+    } else if (specialChars[static_cast<unsigned char>(c)] != 1) {
       break;
     }
   }
@@ -113,7 +114,7 @@
   } else if (c == '<') {
     while ((c = lookChar()) != EOF) {
       consumeChar();
-      if (i < size && specialChars[c] != 1) {
+      if (i < size && specialChars[static_cast<unsigned char>(c)] != 1) {
 	buf[i++] = c;
       }
       if (c == '>') {
@@ -121,7 +122,7 @@
       }
     }
   } else if (c != '[' && c != ']') {
-    while ((c = lookChar()) != EOF && !specialChars[c]) {
+    while ((c = lookChar()) != EOF && !specialChars[static_cast<unsigned char>(c)]) {
       consumeChar();
       if (i < size) {
 	buf[i++] = c;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Page.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Page.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Page.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -257,7 +257,7 @@
   xref = doc->getXRef();
   num = numA;
   duration = -1;
-  annots = NULL;
+  annots = nullptr;
 
   pageObj = pageDict->copy();
   pageRef = pageRefA;
@@ -345,7 +345,7 @@
 Dict *Page::getResourceDictCopy(XRef *xrefA) { 
   pageLocker();
   Dict *dict = attrs->getResourceDict();
-  return dict ? dict->copy(xrefA) : NULL;
+  return dict ? dict->copy(xrefA) : nullptr;
 }
 
 void Page::replaceXRef(XRef *xrefA) {
@@ -517,7 +517,7 @@
     crop = (box == *cropBox) && out->needClipToCropBox();
   }
   gfx = new Gfx(doc, out, num, attrs->getResourceDict(),
-		hDPI, vDPI, &box, crop ? cropBox : (PDFRectangle *)NULL,
+		hDPI, vDPI, &box, crop ? cropBox : (PDFRectangle *)nullptr,
 		rotate, abortCheckCbk, abortCheckCbkData, xrefA);
 
   return gfx;
@@ -641,7 +641,7 @@
   if (obj1.isNull ()) {
     obj1 = dict->lookup ("CS");
   }
-  colorSpace = GfxColorSpace::parse(NULL, &obj1, NULL, NULL);
+  colorSpace = GfxColorSpace::parse(nullptr, &obj1, nullptr, nullptr);
   if (!colorSpace) {
     fprintf (stderr, "Error: Cannot parse color space\n");
     goto fail1;
@@ -794,7 +794,7 @@
   Object additionalActionsObject = actions.fetch(doc->getXRef());
   if (additionalActionsObject.isDict()) {
     const char *key = (type == actionOpenPage ?  "O" :
-                       type == actionClosePage ? "C" : NULL);
+                       type == actionClosePage ? "C" : nullptr);
 
     Object actionObject = additionalActionsObject.dictLookup(key);
     if (actionObject.isDict())

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Page.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Page.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Page.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -20,7 +20,7 @@
 // Copyright (C) 2007 Julien Rebetez <julienr at svn.gnome.org>
 // Copyright (C) 2008 Iñigo Martínez <inigomartinez at gmail.com>
 // Copyright (C) 2012 Fabio D'Urso <fabiodurso at hotmail.it>
-// Copyright (C) 2012, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2012, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2013 Thomas Freitag <Thomas.Freitag at alfa.de>
 // Copyright (C) 2013, 2017 Adrian Johnson <ajohnson at redneon.com>
 //
@@ -148,6 +148,9 @@
   // Destructor.
   ~Page();
 
+  Page(const Page &) = delete;
+  Page& operator=(const Page &) = delete;
+
   // Is page valid?
   GBool isOk() { return ok; }
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -166,7 +166,7 @@
   GooString number_string;
 
   base = 0;
-  interval = NULL;
+  interval = nullptr;
   for (i = 0; i < intervals.getLength(); i++) {
     interval = (Interval *) intervals.get(i);
     if (base <= index && index < base + interval->length)

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -3,7 +3,7 @@
 // This file is under the GPLv2 or later license
 //
 // Copyright (C) 2005-2006 Kristian Høgsberg <krh at redhat.com>
-// Copyright (C) 2005 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2018 Albert Astals Cid <aacid at kde.org>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -25,6 +25,8 @@
 public:
   PageLabelInfo(Object *tree, int numPages);
   ~PageLabelInfo();
+  PageLabelInfo(const PageLabelInfo &) = delete;
+  PageLabelInfo& operator=(const PageLabelInfo &) = delete;
   GBool labelToIndex(GooString *label, int *index);
   GBool indexToLabel(int index, GooString *label);
 
@@ -35,6 +37,8 @@
   struct Interval {
     Interval(Object *dict, int baseA);
     ~Interval();
+    Interval(const Interval &) = delete;
+    Interval& operator=(const Interval &) = delete;
     GooString *prefix;
     enum NumberStyle {
       None,

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Parser.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Parser.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Parser.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -60,7 +60,7 @@
 
 Object Parser::getObj(int recursion)
 {
-  return getObj(gFalse, NULL, cryptRC4, 0, 0, 0, recursion);
+  return getObj(gFalse, nullptr, cryptRC4, 0, 0, 0, recursion);
 }
 
 Object Parser::getObj(GBool simpleOnly,
@@ -89,10 +89,11 @@
   if (!simpleOnly && buf1.isCmd("[")) {
     shift();
     obj = Object(new Array(xref));
-    while (!buf1.isCmd("]") && !buf1.isEOF()) {
+    while (!buf1.isCmd("]") && !buf1.isEOF() && recursion + 1 < recursionLimit) {
       Object obj2 = getObj(gFalse, fileKey, encAlgorithm, keyLength, objNum, objGen, recursion + 1);
       obj.arrayAdd(std::move(obj2));
     }
+    if (recursion + 1 >= recursionLimit && strict) goto err;
     if (buf1.isEOF()) {
       error(errSyntaxError, getPos(), "End of file inside array");
       if (strict) goto err;
@@ -198,7 +199,7 @@
   // get stream start position
   lexer->skipToNextLine();
   if (!(str = lexer->getStream())) {
-    return NULL;
+    return nullptr;
   }
   pos = str->getPos();
 
@@ -210,7 +211,7 @@
     length = obj.getInt64();
   } else {
     error(errSyntaxError, getPos(), "Bad 'Length' attribute in stream");
-    if (strict) return NULL;
+    if (strict) return nullptr;
     length = 0;
   }
 
@@ -222,7 +223,7 @@
   // in badly damaged PDF files, we can run off the end of the input
   // stream immediately after the "stream" token
   if (!lexer->getStream()) {
-    return NULL;
+    return nullptr;
   }
   baseStr = lexer->getStream()->getBaseStream();
 
@@ -241,7 +242,7 @@
     shift();
   } else {
     error(errSyntaxError, getPos(), "Missing 'endstream' or incorrect stream length");
-    if (strict) return NULL;
+    if (strict) return nullptr;
     if (xref && lexer->getStream()) {
       // shift until we find the proper endstream or we change to another object or reach eof
       length = lexer->getPos() - pos;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Parser.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Parser.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Parser.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -13,7 +13,7 @@
 // All changes made under the Poppler project to this file are licensed
 // under GPL version 2 or later
 //
-// Copyright (C) 2006, 2010, 2013, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2006, 2010, 2013, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2012 Hib Eris <hib at hiberis.nl>
 // Copyright (C) 2013 Adrian Johnson <ajohnson at redneon.com>
 // Copyright (C) 2013 Thomas Freitag <Thomas.Freitag at alfa.de>
@@ -45,6 +45,9 @@
   // Destructor.
   ~Parser();
 
+  Parser(const Parser &) = delete;
+  Parser& operator=(const Parser &) = delete;
+
   // Get the next object from the input stream.  If <simpleOnly> is
   // true, do not parse compound objects (arrays, dictionaries, or
   // streams).

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -43,7 +43,7 @@
 PopplerCacheItem *PopplerCache::lookup(const PopplerCacheKey &key)
 {
   if (lastValidCacheIndex < 0)
-    return 0;
+    return nullptr;
 
   if (*keys[0] == key) {
     return items[0];
@@ -63,7 +63,7 @@
       return itemHit;
     }
   }
-  return 0;
+  return nullptr;
 }
 
 void PopplerCache::put(PopplerCacheKey *key, PopplerCacheItem *item)

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -5,7 +5,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright (C) 2009 Koji Otani <sho at bbr.jp>
-// Copyright (C) 2009, 2010, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2009, 2010, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2010 Carlos Garcia Campos <carlosgc at gnome.org>
 //
 //========================================================================
@@ -18,14 +18,22 @@
 class PopplerCacheItem
 {
   public:
+   PopplerCacheItem() = default;
    virtual ~PopplerCacheItem();
+
+   PopplerCacheItem(const PopplerCacheItem &) = delete;
+   PopplerCacheItem& operator=(const PopplerCacheItem &other) = delete;
 };
 
 class PopplerCacheKey
 {
   public:
+    PopplerCacheKey() = default;
     virtual ~PopplerCacheKey();
     virtual bool operator==(const PopplerCacheKey &key) const = 0;
+
+    PopplerCacheKey(const PopplerCacheKey &) = delete;
+    PopplerCacheKey& operator=(const PopplerCacheKey &other) = delete;
 };
 
 class PopplerCache
@@ -34,6 +42,9 @@
     PopplerCache(int cacheSizeA);
     ~PopplerCache();
     
+    PopplerCache(const PopplerCache &) = delete;
+    PopplerCache& operator=(const PopplerCache &other) = delete;
+
     /* The item returned is owned by the cache */
     PopplerCacheItem *lookup(const PopplerCacheKey &key);
     
@@ -53,8 +64,6 @@
     PopplerCacheKey *key(int index);
   
   private:
-    PopplerCache(const PopplerCache &cache); // not allowed
-  
     PopplerCacheKey **keys;
     PopplerCacheItem **items;
     int lastValidCacheIndex;
@@ -67,6 +76,9 @@
     PopplerObjectCache (int cacheSizeA, XRef *xrefA);
     ~PopplerObjectCache();
 
+    PopplerObjectCache(const PopplerObjectCache &) = delete;
+    PopplerObjectCache& operator=(const PopplerObjectCache &other) = delete;
+
     Object *put(const Ref &ref);
     Object lookup(const Ref &ref);
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Rendition.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Rendition.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Rendition.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -254,8 +254,8 @@
   GBool hasClip = gFalse;
 
   ok = gTrue;
-  fileName = NULL;
-  contentType = NULL;
+  fileName = nullptr;
+  contentType = nullptr;
   isEmbedded = gFalse;
 
   //

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Rendition.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Rendition.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Rendition.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -5,7 +5,7 @@
 //---------------------------------------------------------------------------------
 // Hugo Mercier <hmercier31[at]gmail.com> (c) 2008
 // Carlos Garcia Campos <carlosgc at gnome.org> (c) 2010
-// Albert Astals Cid <aacid at kde.org> (C) 2017
+// Albert Astals Cid <aacid at kde.org> (C) 2017, 2018
 //
 // This program is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -121,6 +121,7 @@
   MediaRendition(Object *obj);
   MediaRendition(const MediaRendition &other);
   ~MediaRendition();
+  MediaRendition& operator=(const MediaRendition &) = delete;
 
   GBool isOk () { return ok; }
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -13,7 +13,7 @@
 // All changes made under the Poppler project to this file are licensed
 // under GPL version 2 or later
 //
-// Copyright (C) 2010, 2012, 2015, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2010, 2012, 2015, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2013 Adrian Johnson <ajohnson at redneon.com>
 // Copyright (C) 2014 Fabio D'Urso <fabiodurso at hotmail.it>
 // Copyright (C) 2016 Alok Anand <alok4nand at gmail.com>
@@ -62,7 +62,7 @@
 #endif
       error(errSyntaxError, -1, "Couldn't find the '{0:s}' security handler",
 	    filterObj.getName());
-      secHdlr = NULL;
+      secHdlr = nullptr;
 #ifdef ENABLE_PLUGINS
     }
 #endif
@@ -69,7 +69,7 @@
   } else {
     error(errSyntaxError, -1,
 	  "Missing or invalid 'Filter' entry in encryption dictionary");
-    secHdlr = NULL;
+    secHdlr = nullptr;
   }
   return secHdlr;
 }
@@ -90,7 +90,7 @@
   if (ownerPassword || userPassword) {
     authData = makeAuthData(ownerPassword, userPassword);
   } else {
-    authData = NULL;
+    authData = nullptr;
   }
   ok = authorize(authData);
   if (authData) {
@@ -137,6 +137,9 @@
     }
   }
 
+  StandardAuthData(const StandardAuthData &) = delete;
+  StandardAuthData& operator=(const StandardAuthData &) = delete;
+
   GooString *ownerPassword;
   GooString *userPassword;
 };
@@ -146,11 +149,11 @@
   SecurityHandler(docA)
 {
   ok = gFalse;
-  fileID = NULL;
-  ownerKey = NULL;
-  userKey = NULL;
-  ownerEnc = NULL;
-  userEnc = NULL;
+  fileID = nullptr;
+  ownerKey = nullptr;
+  userKey = nullptr;
+  ownerEnc = nullptr;
+  userEnc = nullptr;
   fileKeyLength = 0;
 
   Object versionObj = encryptDictA->dictLookup("V");
@@ -318,13 +321,13 @@
 void *StandardSecurityHandler::makeAuthData(GooString *ownerPassword,
 					    GooString *userPassword) {
   return new StandardAuthData(ownerPassword ? ownerPassword->copy()
-			                    : (GooString *)NULL,
+			                    : (GooString *)nullptr,
 			      userPassword ? userPassword->copy()
-			                   : (GooString *)NULL);
+			                   : (GooString *)nullptr);
 }
 
 void *StandardSecurityHandler::getAuthData() {
-  return NULL;
+  return nullptr;
 }
 
 void StandardSecurityHandler::freeAuthData(void *authData) {
@@ -341,8 +344,8 @@
     ownerPassword = ((StandardAuthData *)authData)->ownerPassword;
     userPassword = ((StandardAuthData *)authData)->userPassword;
   } else {
-    ownerPassword = NULL;
-    userPassword = NULL;
+    ownerPassword = nullptr;
+    userPassword = nullptr;
   }
   if (!Decrypt::makeFileKey(encVersion, encRevision, fileKeyLength,
 			    ownerKey, userKey, ownerEnc, userEnc,

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -13,7 +13,7 @@
 // All changes made under the Poppler project to this file are licensed
 // under GPL version 2 or later
 //
-// Copyright (C) 2012 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2012, 2018 Albert Astals Cid <aacid at kde.org>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -48,6 +48,9 @@
   SecurityHandler(PDFDoc *docA);
   virtual ~SecurityHandler();
 
+  SecurityHandler(const SecurityHandler &) = delete;
+  SecurityHandler& operator=(const SecurityHandler &) = delete;
+
   // Returns true if the file is actually unencrypted.
   virtual GBool isUnencrypted() { return gFalse; }
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/SignatureHandler.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/SignatureHandler.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/SignatureHandler.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -42,7 +42,7 @@
 char *SignatureHandler::getSignerName()
 {
   if (!CMSSignerInfo)
-      return NULL;
+      return nullptr;
 
   CERTCertificate *cert = NSS_CMSSignerInfo_GetSigningCertificate(CMSSignerInfo, CERT_GetDefaultCertDB());
   return CERT_GetCommonName(&cert->subject);
@@ -81,7 +81,7 @@
 
 GooString *SignatureHandler::getDefaultFirefoxCertDB_Linux()
 {
-  GooString * finalPath = NULL;
+  GooString * finalPath = nullptr;
   DIR *toSearchIn;
   struct dirent *subFolder;
 
@@ -88,24 +88,24 @@
   GooString * homePath = new GooString(getenv("HOME"));
   homePath = homePath->append("/.mozilla/firefox/");
 
-  if ((toSearchIn = opendir(homePath->getCString())) == NULL) {
+  if ((toSearchIn = opendir(homePath->getCString())) == nullptr) {
     error(errInternal, 0, "couldn't find default Firefox Folder");
     delete homePath;
-    return NULL;
+    return nullptr;
   }
   do {
-    if ((subFolder = readdir(toSearchIn)) != NULL) {
-      if (strstr(subFolder->d_name, "default") != NULL) {
+    if ((subFolder = readdir(toSearchIn)) != nullptr) {
+      if (strstr(subFolder->d_name, "default") != nullptr) {
 	finalPath = homePath->append(subFolder->d_name);
 	closedir(toSearchIn);
 	return finalPath;
       }
     }
-  } while (subFolder != NULL);
+  } while (subFolder != nullptr);
 
   closedir(toSearchIn);
   delete homePath;
-  return NULL;
+  return nullptr;
 }
 
 /**
@@ -114,7 +114,7 @@
 void SignatureHandler::init_nss() 
 {
   GooString *certDBPath = getDefaultFirefoxCertDB_Linux();
-  if (certDBPath == NULL) {
+  if (certDBPath == nullptr) {
     NSS_Init("sql:/etc/pki/nssdb");
   } else {
     NSS_Init(certDBPath->getCString());
@@ -127,11 +127,11 @@
 
 
 SignatureHandler::SignatureHandler(unsigned char *p7, int p7_length)
- : hash_context(NULL),
-   CMSMessage(NULL),
-   CMSSignedData(NULL),
-   CMSSignerInfo(NULL),
-   temp_certs(NULL)
+ : hash_context(nullptr),
+   CMSMessage(nullptr),
+   CMSSignedData(nullptr),
+   CMSSignerInfo(nullptr),
+   temp_certs(nullptr)
 {
   init_nss();
   CMSitem.data = p7;
@@ -183,11 +183,11 @@
 NSSCMSMessage *SignatureHandler::CMS_MessageCreate(SECItem * cms_item)
 {
   if (cms_item->data){
-    return NSS_CMSMessage_CreateFromDER(cms_item, NULL, NULL /* Content callback */
-                        , NULL, NULL /*Password callback*/
-                        , NULL, NULL /*Decrypt callback*/);
+    return NSS_CMSMessage_CreateFromDER(cms_item, nullptr, nullptr /* Content callback */
+                        , nullptr, nullptr /*Password callback*/
+                        , nullptr, nullptr /*Decrypt callback*/);
   } else {
-    return NULL;
+    return nullptr;
   }
 }
 
@@ -195,19 +195,19 @@
 {
   if (!NSS_CMSMessage_IsSigned(cms_msg)) {
     error(errInternal, 0, "Input couldn't be parsed as a CMS signature");
-    return NULL;
+    return nullptr;
   }
 
   NSSCMSContentInfo *cinfo = NSS_CMSMessage_ContentLevel(cms_msg, 0);
   if (!cinfo) {
     error(errInternal, 0, "Error in NSS_CMSMessage_ContentLevel");
-    return NULL;
+    return nullptr;
   }
 
   NSSCMSSignedData *signedData = (NSSCMSSignedData*) NSS_CMSContentInfo_GetContent(cinfo);
   if (!signedData) {
     error(errInternal, 0, "CError in NSS_CMSContentInfo_GetContent()");
-    return NULL;
+    return nullptr;
   }
 
   if (signedData->rawCerts)
@@ -220,12 +220,12 @@
     memset(signedData->tempCerts, 0, (i+1) * sizeof(CERTCertificate *));
     // store the adresses of these temporary certificates for future release
     for (i = 0; signedData->rawCerts[i]; ++i)
-      signedData->tempCerts[i] = CERT_NewTempCertificate(CERT_GetDefaultCertDB(), signedData->rawCerts[i], NULL, 0, 0);
+      signedData->tempCerts[i] = CERT_NewTempCertificate(CERT_GetDefaultCertDB(), signedData->rawCerts[i], nullptr, 0, 0);
 
     temp_certs = signedData->tempCerts;
     return signedData;
   } else {
-    return NULL;
+    return nullptr;
   }
 }
 
@@ -234,7 +234,7 @@
   NSSCMSSignerInfo *signerInfo = NSS_CMSSignedData_GetSignerInfo(cms_sig_data, 0);
   if (!signerInfo) {
     printf("Error in NSS_CMSSignedData_GetSignerInfo()\n");
-    return NULL;
+    return nullptr;
   } else {
     return signerInfo;
   }
@@ -242,7 +242,7 @@
 
 NSSCMSVerificationStatus SignatureHandler::validateSignature()
 {
-  unsigned char *digest_buffer = NULL;
+  unsigned char *digest_buffer = nullptr;
 
   if (!CMSSignedData)
     return NSSCMSVS_MalformedSignature;
@@ -256,11 +256,11 @@
   digest.data = digest_buffer;
   digest.len = hash_length;
 
-  if ((NSS_CMSSignerInfo_GetSigningCertificate(CMSSignerInfo, CERT_GetDefaultCertDB())) == NULL)
+  if ((NSS_CMSSignerInfo_GetSigningCertificate(CMSSignerInfo, CERT_GetDefaultCertDB())) == nullptr)
     CMSSignerInfo->verificationStatus = NSSCMSVS_SigningCertNotFound;
 
   SECItem * content_info_data = CMSSignedData->contentInfo.content.data;
-  if (content_info_data != NULL && content_info_data->data != NULL)
+  if (content_info_data != nullptr && content_info_data->data != nullptr)
   {
     /*
       This means it's not a detached type signature
@@ -279,7 +279,7 @@
     }
 
   }
-  else if (NSS_CMSSignerInfo_Verify(CMSSignerInfo, &digest, NULL) != SECSuccess)
+  else if (NSS_CMSSignerInfo_Verify(CMSSignerInfo, &digest, nullptr) != SECSuccess)
   {
 
     PORT_Free(digest_buffer);
@@ -300,7 +300,7 @@
   if (!CMSSignerInfo)
     return (SECErrorCodes) -1; //error code to avoid matching error codes defined in SECErrorCodes
 
-  if ((cert = NSS_CMSSignerInfo_GetSigningCertificate(CMSSignerInfo, CERT_GetDefaultCertDB())) == NULL)
+  if ((cert = NSS_CMSSignerInfo_GetSigningCertificate(CMSSignerInfo, CERT_GetDefaultCertDB())) == nullptr)
     CMSSignerInfo->verificationStatus = NSSCMSVS_SigningCertNotFound;
 
   PRTime vTime = 0; // time in microseconds since the epoch, special value 0 means now
@@ -313,7 +313,7 @@
   inParams[1].value.scalar.time = vTime;
   inParams[2].type = cert_pi_end;
 
-  CERT_PKIXVerifyCert(cert, certificateUsageEmailSigner, inParams, NULL,
+  CERT_PKIXVerifyCert(cert, certificateUsageEmailSigner, inParams, nullptr,
                 CMSSignerInfo->cmsg->pwfn_arg);
 
   retVal = (SECErrorCodes) PORT_GetError();

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Sound.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Sound.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Sound.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -27,17 +27,17 @@
 {
   // let's try to see if this Object is a Sound, according to the PDF specs
   // (section 9.2)
-  Stream *str = NULL;
+  Stream *str = nullptr;
   // the Object must be a Stream
   if (obj->isStream()) {
     str = obj->getStream();
   } else {
-    return NULL;
+    return nullptr;
   }
   // the Stream must have a Dict
   Dict *dict = str->getDict();
-  if (dict == NULL)
-    return NULL;
+  if (dict == nullptr)
+    return nullptr;
   // the Dict must have the 'R' key of type num
   Object tmp = dict->lookup("R");
   if (tmp.isNum()) {
@@ -51,7 +51,7 @@
 {
   streamObj = obj->copy();
 
-  fileName = NULL;
+  fileName = nullptr;
   samplingRate = 0.0;
   channels = 1;
   bitsPerSample = 8;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Sound.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Sound.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Sound.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -1,6 +1,6 @@
 /* Sound.h - an object that holds the sound structure
  * Copyright (C) 2006-2007, Pino Toscano <pino at kde.org>
- * Copyright (C) 2017, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2017, 2018, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -47,6 +47,9 @@
   // Destructor
   ~Sound();
 
+  Sound(const Sound &) = delete;
+  Sound& operator=(const Sound &) = delete;
+
   Object *getObject() { return &streamObj; }
   Stream *getStream();
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -15,7 +15,7 @@
 //
 // Copyright (C) 2005 Takashi Iwai <tiwai at suse.de>
 // Copyright (C) 2006 Stefan Schweizer <genstef at gentoo.org>
-// Copyright (C) 2006-2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2006-2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2006 Krzysztof Kowalczyk <kkowalczyk at gmail.com>
 // Copyright (C) 2006 Scott Turner <scotty1024 at mac.com>
 // Copyright (C) 2007 Koji Otani <sho at bbr.jp>
@@ -197,15 +197,10 @@
 // SplashGouraudPattern
 //------------------------------------------------------------------------
 SplashGouraudPattern::SplashGouraudPattern(GBool bDirectColorTranslationA,
-                                           GfxState *stateA, GfxGouraudTriangleShading *shadingA, SplashColorMode modeA) {
-  SplashColor defaultColor;
-  GfxColor srcColor;
+                                           GfxState *stateA, GfxGouraudTriangleShading *shadingA) {
   state = stateA;
   shading = shadingA;
-  mode = modeA;
   bDirectColorTranslation = bDirectColorTranslationA;
-  shadingA->getColorSpace()->getDefaultColor(&srcColor);
-  convertGfxColor(defaultColor, mode, shadingA->getColorSpace(), &srcColor);
   gfxMode = shadingA->getColorSpace()->getMode();
 }
 
@@ -1176,7 +1171,7 @@
 
 // NB: This must match the GfxBlendMode enum defined in GfxState.h.
 static const SplashBlendFunc splashOutBlendFuncs[] = {
-  NULL,
+  nullptr,
   &splashOutBlendMultiply,
   &splashOutBlendScreen,
   &splashOutBlendOverlay,
@@ -1232,6 +1227,8 @@
 	      int glyphXA, int glyphYA, int glyphWA, int glyphHA,
 	      GBool aa, GBool validBBoxA);
   ~T3FontCache();
+  T3FontCache(const T3FontCache &) = delete;
+  T3FontCache& operator=(const T3FontCache &) = delete;
   GBool matches(Ref *idA, double m11A, double m12A,
 		double m21A, double m22A)
     { return fontID.num == idA->num && fontID.gen == idA->gen &&
@@ -1289,9 +1286,9 @@
               "       This could teoretically result in wrong rendering,\n"
               "       but most probably the document is bogus.\n"
               "       Please report a bug if you think the rendering may be wrong because of this.");
-    cacheData = NULL;
+    cacheData = nullptr;
   }
-  if (cacheData != NULL)
+  if (cacheData != nullptr)
   {
     cacheTags = (T3FontCacheTag *)gmallocn(cacheSets * cacheAssoc,
 					 sizeof(T3FontCacheTag));
@@ -1301,7 +1298,7 @@
   }
   else
   {
-    cacheTags = NULL;
+    cacheTags = nullptr;
   }
 }
 
@@ -1376,7 +1373,7 @@
   enableSlightHinting = gFalse;
   setupScreenParams(72.0, 72.0);
   reverseVideo = reverseVideoA;
-  if (paperColorA != NULL) {
+  if (paperColorA != nullptr) {
     splashColorCopy(paperColor, paperColorA);
   } else {
     splashClearColor(paperColor);
@@ -1383,9 +1380,9 @@
   }
   skipHorizText = gFalse;
   skipRotatedText = gFalse;
-  keepAlphaChannel = paperColorA == NULL;
+  keepAlphaChannel = paperColorA == nullptr;
 
-  doc = NULL;
+  doc = nullptr;
 
   bitmap = new SplashBitmap(1, 1, bitmapRowPad, colorMode,
 			    colorMode != splashModeMono1, bitmapTopDown);
@@ -1394,17 +1391,17 @@
   splash->setThinLineMode(thinLineMode);
   splash->clear(paperColor, 0);
 
-  fontEngine = NULL;
+  fontEngine = nullptr;
 
   nT3Fonts = 0;
-  t3GlyphStack = NULL;
+  t3GlyphStack = nullptr;
 
-  font = NULL;
+  font = nullptr;
   needFontUpdate = gFalse;
-  textClipPath = NULL;
-  transpGroupStack = NULL;
+  textClipPath = nullptr;
+  transpGroupStack = nullptr;
   nestCount = 0;
-  xref = NULL;
+  xref = nullptr;
 }
 
 void SplashOutputDev::setupScreenParams(double hDPI, double vDPI) {
@@ -1492,12 +1489,12 @@
   if (splash) {
     thinLineMode = splash->getThinLineMode();
     delete splash;
-    splash = NULL;
+    splash = nullptr;
   }
   if (!bitmap || w != bitmap->getWidth() || h != bitmap->getHeight()) {
     if (bitmap) {
       delete bitmap;
-      bitmap = NULL;
+      bitmap = nullptr;
     }
     bitmap = new SplashBitmap(w, h, bitmapRowPad, colorMode,
 			      colorMode != splashModeMono1, bitmapTopDown);
@@ -1547,7 +1544,7 @@
   splash->setFillPattern(new SplashSolidColor(color));
   splash->setLineCap(splashLineCapButt);
   splash->setLineJoin(splashLineJoinMiter);
-  splash->setLineDash(NULL, 0, 0);
+  splash->setLineDash(nullptr, 0, 0);
   splash->setMiterLimit(10);
   splash->setFlatness(1);
   // the SA parameter supposedly defaults to false, but Acrobat
@@ -1907,7 +1904,7 @@
 
 void SplashOutputDev::updateFillOpacity(GfxState *state) {
   splash->setFillAlpha((SplashCoord)state->getFillOpacity());
-  if (transpGroupStack != NULL && (SplashCoord)state->getFillOpacity() < transpGroupStack->knockoutOpacity) {
+  if (transpGroupStack != nullptr && (SplashCoord)state->getFillOpacity() < transpGroupStack->knockoutOpacity) {
     transpGroupStack->knockoutOpacity = (SplashCoord)state->getFillOpacity();
   }
 }
@@ -1914,7 +1911,7 @@
 
 void SplashOutputDev::updateStrokeOpacity(GfxState *state) {
   splash->setStrokeAlpha((SplashCoord)state->getStrokeOpacity());
-  if (transpGroupStack != NULL && (SplashCoord)state->getStrokeOpacity() < transpGroupStack->knockoutOpacity) {
+  if (transpGroupStack != nullptr && (SplashCoord)state->getStrokeOpacity() < transpGroupStack->knockoutOpacity) {
     transpGroupStack->knockoutOpacity = (SplashCoord)state->getStrokeOpacity();
   }
 }
@@ -1992,11 +1989,10 @@
   GfxFont *gfxFont;
   GfxFontLoc *fontLoc;
   GfxFontType fontType;
-  SplashOutFontFileID *id = NULL;
+  SplashOutFontFileID *id = nullptr;
   SplashFontFile *fontFile;
-  SplashFontSrc *fontsrc = NULL;
+  SplashFontSrc *fontsrc = nullptr;
   FoFiTrueType *ff;
-  Object refObj, strObj;
   GooString *fileName;
   char *tmpBuf;
   int tmpBufLen;
@@ -2010,10 +2006,10 @@
   GBool doAdjustFontMatrix = gFalse;
 
   needFontUpdate = gFalse;
-  font = NULL;
-  fileName = NULL;
-  tmpBuf = NULL;
-  fontLoc = NULL;
+  font = nullptr;
+  fileName = nullptr;
+  tmpBuf = nullptr;
+  fontLoc = nullptr;
 
   if (!(gfxFont = state->getFont())) {
     goto err1;
@@ -2034,7 +2030,7 @@
 reload:
   delete id;
   delete fontLoc;
-  fontLoc = NULL;
+  fontLoc = nullptr;
   if (fontsrc && !fontsrc->isFile) {
       fontsrc->unref();
       fontsrc = nullptr;
@@ -2046,7 +2042,7 @@
 
   } else {
 
-    if (!(fontLoc = gfxFont->locateFont((xref) ? xref : doc->getXRef(), NULL))) {
+    if (!(fontLoc = gfxFont->locateFont((xref) ? xref : doc->getXRef(), nullptr))) {
       error(errSyntaxError, -1, "Couldn't find a font for '{0:s}'",
 	    gfxFont->getName() ? gfxFont->getName()->getCString()
 	                       : "(unnamed)");
@@ -2133,7 +2129,7 @@
 	  }
 	}
       } else {
-	codeToGID = NULL;
+	codeToGID = nullptr;
 	n = 0;
       }
       if (!(fontFile = fontEngine->loadTrueTypeFont(
@@ -2166,7 +2162,7 @@
 	memcpy(codeToGID, ((GfxCIDFont *)gfxFont)->getCIDToGID(),
 	       n * sizeof(int));
       } else {
-	codeToGID = NULL;
+	codeToGID = nullptr;
 	n = 0;
       }
       if (!(fontFile = fontEngine->loadOpenTypeCFFFont(
@@ -2182,7 +2178,7 @@
       break;
     case fontCIDType2:
     case fontCIDType2OT:
-      codeToGID = NULL;
+      codeToGID = nullptr;
       n = 0;
       if (((GfxCIDFont *)gfxFont)->getCIDToGID()) {
 	n = ((GfxCIDFont *)gfxFont)->getCIDToGIDLen();
@@ -2430,7 +2426,7 @@
              !state->getStrokeColorSpace()->isNonMarking();
   doClip = render & 4;
 
-  path = NULL;
+  path = nullptr;
   SplashCoord lineWidth = splash->getLineWidth();
   if (doStroke && lineWidth == 0.0)
     splash->setLineWidth(1 / state->getVDPI());
@@ -2487,7 +2483,7 @@
 	textClipPath->append(path);
       } else {
 	textClipPath = path;
-	path = NULL;
+	path = nullptr;
       }
     }
   }
@@ -2551,7 +2547,7 @@
       // create new entry in the font cache
       if (nT3Fonts == splashOutT3FontCacheSize) {
 	t3gs = t3GlyphStack;
-	while (t3gs != NULL) {
+	while (t3gs != nullptr) {
 	  if (t3gs->cache == t3FontCache[nT3Fonts - 1]) {
 	    error(errSyntaxWarning, -1, "t3FontCache reaches limit but font still on stack in SplashOutputDev::beginType3Char");
 	    return gTrue;
@@ -2626,7 +2622,7 @@
   // is the glyph in the cache?
   i = (code & (t3Font->cacheSets - 1)) * t3Font->cacheAssoc;
   for (j = 0; j < t3Font->cacheAssoc; ++j) {
-    if (t3Font->cacheTags != NULL) {
+    if (t3Font->cacheTags != nullptr) {
       if ((t3Font->cacheTags[i+j].mru & 0x8000) &&
 	t3Font->cacheTags[i+j].code == code) {
         drawType3Glyph(state, t3Font, &t3Font->cacheTags[i+j],
@@ -2642,8 +2638,8 @@
   t3GlyphStack = t3gs;
   t3GlyphStack->code = code;
   t3GlyphStack->cache = t3Font;
-  t3GlyphStack->cacheTag = NULL;
-  t3GlyphStack->cacheData = NULL;
+  t3GlyphStack->cacheTag = nullptr;
+  t3GlyphStack->cacheData = nullptr;
   t3GlyphStack->haveDx = gFalse;
   t3GlyphStack->doNotCache = gFalse;
 
@@ -2700,17 +2696,17 @@
     return;
   }
 
-  if (unlikely(t3GlyphStack == NULL)) {
+  if (unlikely(t3GlyphStack == nullptr)) {
     error(errSyntaxWarning, -1, "t3GlyphStack was null in SplashOutputDev::type3D1");
     return;
   }
 
-  if (unlikely(t3GlyphStack->origBitmap != NULL)) {
+  if (unlikely(t3GlyphStack->origBitmap != nullptr)) {
     error(errSyntaxWarning, -1, "t3GlyphStack origBitmap was not null in SplashOutputDev::type3D1");
     return;
   }
 
-  if (unlikely(t3GlyphStack->origSplash != NULL)) {
+  if (unlikely(t3GlyphStack->origSplash != nullptr)) {
     error(errSyntaxWarning, -1, "t3GlyphStack origSplash was not null in SplashOutputDev::type3D1");
     return;
   }
@@ -2765,7 +2761,7 @@
     return;
   }
 
-  if (t3Font->cacheTags == NULL)
+  if (t3Font->cacheTags == nullptr)
     return;
 
   // allocate a cache entry
@@ -2840,7 +2836,7 @@
   if (textClipPath) {
     splash->clipToPath(textClipPath, gFalse);
     delete textClipPath;
-    textClipPath = NULL;
+    textClipPath = nullptr;
   }
 }
 
@@ -2900,7 +2896,7 @@
   imgMaskData.height = height;
   imgMaskData.y = 0;
 
-  splash->fillImageMask(&imageMaskSrc, &imgMaskData, width, height, mat, t3GlyphStack != NULL);
+  splash->fillImageMask(&imageMaskSrc, &imgMaskData, width, height, mat, t3GlyphStack != nullptr);
   if (inlineImg) {
     while (imgMaskData.y < height) {
       imgMaskData.imgStr->getLine();
@@ -2933,7 +2929,7 @@
     if (!std::isfinite(ctm[i])) return;
   }
   
-  beginTransparencyGroup(state, bbox, NULL, gFalse, gFalse, gFalse);
+  beginTransparencyGroup(state, bbox, nullptr, gFalse, gFalse, gFalse);
   baseMatrix[4] -= transpGroupStack->tx;
   baseMatrix[5] -= transpGroupStack->ty;
 
@@ -2957,7 +2953,7 @@
   maskSplash->clear(maskColor);
   maskColor[0] = 0xff;
   maskSplash->setFillPattern(new SplashSolidColor(maskColor));
-  maskSplash->fillImageMask(&imageMaskSrc, &imgMaskData,  width, height, mat, t3GlyphStack != NULL);
+  maskSplash->fillImageMask(&imageMaskSrc, &imgMaskData,  width, height, mat, t3GlyphStack != nullptr);
   delete maskSplash;
   delete imgMaskData.imgStr;
   str->close();
@@ -2969,7 +2965,7 @@
   /* transfer mask to alpha channel! */
   // memcpy(maskBitmap->getAlphaPtr(), maskBitmap->getDataPtr(), bitmap->getRowSize() * bitmap->getHeight());
   // memset(maskBitmap->getDataPtr(), 0, bitmap->getRowSize() * bitmap->getHeight());
-  if (transpGroupStack->softmask != NULL) {
+  if (transpGroupStack->softmask != nullptr) {
     Guchar *dest = bitmap->getAlphaPtr();
     Guchar *src = transpGroupStack->softmask->getDataPtr();
     for (int c= 0; c < transpGroupStack->softmask->getRowSize() * transpGroupStack->softmask->getHeight(); c++) {
@@ -2976,7 +2972,7 @@
       dest[c] = src[c];
     }
     delete transpGroupStack->softmask;
-    transpGroupStack->softmask = NULL;
+    transpGroupStack->softmask = nullptr;
   }
   endTransparencyGroup(state);
   baseMatrix[4] += transpGroupStack->tx;
@@ -3005,13 +3001,13 @@
     switch (imgData->colorMode) {
     case splashModeMono1:
     case splashModeMono8:
-      if (colorSpace->getAlt() != NULL && colorSpace->getAlt()->getMode() == csDeviceGray)
+      if (colorSpace->getAlt() != nullptr && colorSpace->getAlt()->getMode() == csDeviceGray)
         return gTrue;
       break;
     case splashModeXBGR8:
     case splashModeRGB8:
     case splashModeBGR8:
-      if (colorSpace->getAlt() != NULL && colorSpace->getAlt()->getMode() == csDeviceRGB)
+      if (colorSpace->getAlt() != nullptr && colorSpace->getAlt()->getMode() == csDeviceRGB)
         return gTrue;
       break;
 #ifdef SPLASH_CMYK
@@ -3175,7 +3171,7 @@
     }
   }
 
-  if (imgData->maskStr != NULL && (p = imgData->maskStr->getLine()) != NULL) {
+  if (imgData->maskStr != nullptr && (p = imgData->maskStr->getLine()) != nullptr) {
     int destComps = splashColorModeNComps[imgData->colorMode];
     int convComps = (imgData->colorMode == splashModeXBGR8) ? 3 : destComps;
     imgData->maskColorMap->getGrayLine(p, p, imgData->width);
@@ -3238,7 +3234,7 @@
   int nComps = imgData->colorMap->getNumPixelComps();
 
   Guchar *colorLine = (Guchar *) gmalloc(nComps * bitmap->getWidth());
-  Guchar *rgbxLine = (imgData->colorMode == splashModeXBGR8) ? (Guchar *) gmalloc(3 * bitmap->getWidth()) : NULL;
+  Guchar *rgbxLine = (imgData->colorMode == splashModeXBGR8) ? (Guchar *) gmalloc(3 * bitmap->getWidth()) : nullptr;
   for (int i = 0; i < bitmap->getHeight(); i++) {
     Guchar *p = bitmap->getDataPtr() + i * bitmap->getRowSize();
     switch (imgData->colorMode) {
@@ -3278,7 +3274,7 @@
     }
   }
   gfree(colorLine);
-  if (rgbxLine != NULL) 
+  if (rgbxLine != nullptr) 
     gfree(rgbxLine);
 }
 #endif
@@ -3435,7 +3431,7 @@
         }
       }
     }
-    if (alphaLine != NULL) {
+    if (alphaLine != nullptr) {
       SplashColorPtr aq = alphaLine;
       SplashColorPtr p;
       const int n = imgData->bitmap->getWidth() - 1;
@@ -3467,7 +3463,7 @@
         dest += splashColorModeNComps[imgData->colorMode];
       }
     }
-    if (alphaLine != NULL) {
+    if (alphaLine != nullptr) {
       const int y = (imgData->y == imgData->bitmap->getHeight() - 1 && imgData->y > 50) ? imgData->y - 1 : imgData->y;
       SplashColorPtr aq = alphaLine;
       SplashColorPtr p;
@@ -3525,13 +3521,13 @@
   imgData.colorMode = colorMode;
   imgData.width = width;
   imgData.height = height;
-  imgData.maskStr = NULL;
-  imgData.maskColorMap = NULL;
+  imgData.maskStr = nullptr;
+  imgData.maskColorMap = nullptr;
   imgData.y = 0;
 
   // special case for one-channel (monochrome/gray/separation) images:
   // build a lookup table here
-  imgData.lookup = NULL;
+  imgData.lookup = nullptr;
   if (colorMap->getNumPixelComps() == 1) {
     n = 1 << colorMap->getBits();
     switch (colorMode) {
@@ -3606,7 +3602,7 @@
 		   state->getOverprintMode(), NULL, grayIndexed);
 #else		   
   setOverprintMask(colorMap->getColorSpace(), state->getFillOverprint(),
-		   state->getOverprintMode(), NULL);
+		   state->getOverprintMode(), nullptr);
 #endif		   
 
   if (colorMode == splashModeMono1) {
@@ -3616,7 +3612,7 @@
   }
 #ifdef USE_CMS
   src = maskColors ? &alphaImageSrc : useIccImageSrc(&imgData) ? &iccImageSrc : &imageSrc;
-  tf = maskColors == NULL && useIccImageSrc(&imgData) ? &iccTransform : NULL;
+  tf = maskColors == nullptr && useIccImageSrc(&imgData) ? &iccTransform : nullptr;
 #else
   src = maskColors ? &alphaImageSrc : &imageSrc;
   tf = NULL;
@@ -3763,7 +3759,6 @@
 				      int maskHeight, GBool maskInvert,
 				      GBool maskInterpolate) {
   GfxImageColorMap *maskColorMap;
-  Object decodeLow, decodeHigh;
   double *ctm;
   SplashCoord mat[6];
   SplashOutMaskedImageData imgData;
@@ -3785,7 +3780,7 @@
   colorMap->getColorSpace()->createMapping(bitmap->getSeparationList(), SPOT_NCOMPS);
 #endif
   setOverprintMask(colorMap->getColorSpace(), state->getFillOverprint(),
-		   state->getOverprintMode(), NULL);
+		   state->getOverprintMode(), nullptr);
 
   // If the mask is higher resolution than the image, use
   // drawSoftMaskedImage() instead.
@@ -3860,7 +3855,7 @@
 
     // special case for one-channel (monochrome/gray/separation) images:
     // build a lookup table here
-    imgData.lookup = NULL;
+    imgData.lookup = nullptr;
     if (colorMap->getNumPixelComps() == 1) {
       n = 1 << colorMap->getBits();
       switch (colorMode) {
@@ -3925,7 +3920,7 @@
     } else {
       srcMode = colorMode;
     }
-    splash->drawImage(&maskedImageSrc, NULL, &imgData, srcMode, gTrue,
+    splash->drawImage(&maskedImageSrc, nullptr, &imgData, srcMode, gTrue,
 		      width, height, mat, interpolate);
     delete maskBitmap;
     gfree(imgData.lookup);
@@ -3963,7 +3958,7 @@
   colorMap->getColorSpace()->createMapping(bitmap->getSeparationList(), SPOT_NCOMPS);
 #endif
   setOverprintMask(colorMap->getColorSpace(), state->getFillOverprint(),
-		   state->getOverprintMode(), NULL);
+		   state->getOverprintMode(), nullptr);
 
   ctm = state->getCTM();
   for (i = 0; i < 6; ++i) {
@@ -3978,7 +3973,7 @@
 
   //----- set up the soft mask
 
-  if (maskColorMap->getMatteColor() != NULL) {
+  if (maskColorMap->getMatteColor() != nullptr) {
     Guchar *data = (Guchar *) gmalloc(maskWidth * maskHeight);
     maskStr->reset();
     maskStr->doGetChars(maskWidth * maskHeight, data);
@@ -3991,13 +3986,13 @@
 				       maskColorMap->getBits());
   imgMaskData.imgStr->reset();
   imgMaskData.colorMap = maskColorMap;
-  imgMaskData.maskColors = NULL;
+  imgMaskData.maskColors = nullptr;
   imgMaskData.colorMode = splashModeMono8;
   imgMaskData.width = maskWidth;
   imgMaskData.height = maskHeight;
   imgMaskData.y = 0;
-  imgMaskData.maskStr = NULL;
-  imgMaskData.maskColorMap = NULL;
+  imgMaskData.maskStr = nullptr;
+  imgMaskData.maskColorMap = nullptr;
   n = 1 << maskColorMap->getBits();
   imgMaskData.lookup = (SplashColorPtr)gmalloc(n);
   for (i = 0; i < n; ++i) {
@@ -4010,10 +4005,10 @@
   maskSplash = new Splash(maskBitmap, vectorAntialias);
   maskColor[0] = 0;
   maskSplash->clear(maskColor);
-  maskSplash->drawImage(&imageSrc, NULL, &imgMaskData, splashModeMono8, gFalse,
+  maskSplash->drawImage(&imageSrc, nullptr, &imgMaskData, splashModeMono8, gFalse,
 			maskWidth, maskHeight, mat, maskInterpolate);
   delete imgMaskData.imgStr;
-  if (maskColorMap->getMatteColor() == NULL) {
+  if (maskColorMap->getMatteColor() == nullptr) {
     maskStr->close();
   }
   gfree(imgMaskData.lookup);
@@ -4027,13 +4022,13 @@
 				   colorMap->getBits());
   imgData.imgStr->reset();
   imgData.colorMap = colorMap;
-  imgData.maskColors = NULL;
+  imgData.maskColors = nullptr;
   imgData.colorMode = colorMode;
   imgData.width = width;
   imgData.height = height;
-  imgData.maskStr = NULL;
-  imgData.maskColorMap = NULL;
-  if (maskColorMap->getMatteColor() != NULL) {
+  imgData.maskStr = nullptr;
+  imgData.maskColorMap = nullptr;
+  if (maskColorMap->getMatteColor() != nullptr) {
     getMatteColor(colorMode, colorMap, maskColorMap->getMatteColor(), imgData.matteColor);
     imgData.maskColorMap = maskColorMap;
     imgData.maskStr = new ImageStream(maskStr, maskWidth,
@@ -4045,7 +4040,7 @@
 
   // special case for one-channel (monochrome/gray/separation) images:
   // build a lookup table here
-  imgData.lookup = NULL;
+  imgData.lookup = nullptr;
   if (colorMap->getNumPixelComps() == 1) {
     n = 1 << colorMap->getBits();
     switch (colorMode) {
@@ -4110,12 +4105,12 @@
   } else {
     srcMode = colorMode;
   }
-  splash->drawImage(&imageSrc, NULL, &imgData, srcMode, gFalse, width, height, mat, interpolate);
-  splash->setSoftMask(NULL);
+  splash->drawImage(&imageSrc, nullptr, &imgData, srcMode, gFalse, width, height, mat, interpolate);
+  splash->setSoftMask(nullptr);
   gfree(imgData.lookup);
   delete imgData.maskStr;
   delete imgData.imgStr;
-  if (maskColorMap->getMatteColor() != NULL) {
+  if (maskColorMap->getMatteColor() != nullptr) {
     maskStr->close();
     delete maskStr;
   }
@@ -4127,10 +4122,10 @@
     state->getStrokeOpacity() != 1 ||
     state->getAlphaIsShape() ||
     state->getBlendMode() != gfxBlendNormal ||
-    splash->getSoftMask() != NULL ||
+    splash->getSoftMask() != nullptr ||
     knockout) 
     return gTrue;
-  return transpGroupStack != NULL && transpGroupStack->shape != NULL;
+  return transpGroupStack != nullptr && transpGroupStack->shape != nullptr;
 }
 
 void SplashOutputDev::beginTransparencyGroup(GfxState *state, double *bbox,
@@ -4208,12 +4203,12 @@
 
   // push a new stack entry
   transpGroup = new SplashTransparencyGroup();
-  transpGroup->softmask = NULL;
+  transpGroup->softmask = nullptr;
   transpGroup->tx = tx;
   transpGroup->ty = ty;
   transpGroup->blendingColorSpace = blendingColorSpace;
   transpGroup->isolated = isolated;
-  transpGroup->shape = (knockout && !isolated) ? SplashBitmap::copy(bitmap) : NULL;
+  transpGroup->shape = (knockout && !isolated) ? SplashBitmap::copy(bitmap) : nullptr;
   transpGroup->knockout = (knockout && isolated);
   transpGroup->knockoutOpacity = 1.0;
   transpGroup->next = transpGroupStack;
@@ -4259,7 +4254,7 @@
   }
   splash = new Splash(bitmap, vectorAntialias,
 		      transpGroup->origSplash->getScreen());
-  if (transpGroup->next != NULL && transpGroup->next->knockout) {
+  if (transpGroup->next != nullptr && transpGroup->next->knockout) {
     fontEngine->setAA(gFalse);
   }
   splash->setThinLineMode(transpGroup->origSplash->getThinLineMode());
@@ -4279,11 +4274,11 @@
     splash->clear(color, 0);
   } else {
     SplashBitmap *shape = (knockout) ? transpGroup->shape :
-                                       (transpGroup->next != NULL && transpGroup->next->shape != NULL) ? transpGroup->next->shape : transpGroup->origBitmap;
+                                       (transpGroup->next != nullptr && transpGroup->next->shape != nullptr) ? transpGroup->next->shape : transpGroup->origBitmap;
     int shapeTx = (knockout) ? tx :
-      (transpGroup->next != NULL && transpGroup->next->shape != NULL) ? transpGroup->next->tx + tx : tx;
+      (transpGroup->next != nullptr && transpGroup->next->shape != nullptr) ? transpGroup->next->tx + tx : tx;
     int shapeTy = (knockout) ? ty :
-      (transpGroup->next != NULL && transpGroup->next->shape != NULL) ? transpGroup->next->ty + ty : ty;
+      (transpGroup->next != nullptr && transpGroup->next->shape != nullptr) ? transpGroup->next->ty + ty : ty;
     splash->blitTransparent(transpGroup->origBitmap, tx, ty, 0, 0, w, h);
     splash->setInNonIsolatedGroup(shape, shapeTx, shapeTy);
   }
@@ -4318,14 +4313,14 @@
   // paint the transparency group onto the parent bitmap
   // - the clip path was set in the parent's state)
   if (tx < bitmap->getWidth() && ty < bitmap->getHeight()) {
-    SplashCoord knockoutOpacity = (transpGroupStack->next != NULL) ? transpGroupStack->next->knockoutOpacity
+    SplashCoord knockoutOpacity = (transpGroupStack->next != nullptr) ? transpGroupStack->next->knockoutOpacity
                                                                    : transpGroupStack->knockoutOpacity;
     splash->setOverprintMask(0xffffffff, gFalse);
     splash->composite(tBitmap, 0, 0, tx, ty,
       tBitmap->getWidth(), tBitmap->getHeight(),
-      gFalse, !isolated, transpGroupStack->next != NULL && transpGroupStack->next->knockout, knockoutOpacity);
+      gFalse, !isolated, transpGroupStack->next != nullptr && transpGroupStack->next->knockout, knockoutOpacity);
     fontEngine->setAA(transpGroupStack->fontAA);
-    if (transpGroupStack->next != NULL && transpGroupStack->next->shape != NULL) {
+    if (transpGroupStack->next != nullptr && transpGroupStack->next->shape != nullptr) {
       transpGroupStack->next->knockout = gTrue;
     }
   }
@@ -4333,7 +4328,7 @@
   // pop the stack
   transpGroup = transpGroupStack;
   transpGroupStack = transpGroup->next;
-  if (transpGroupStack != NULL && transpGroup->knockoutOpacity < transpGroupStack->knockoutOpacity) {
+  if (transpGroupStack != nullptr && transpGroup->knockoutOpacity < transpGroupStack->knockoutOpacity) {
     transpGroupStack->knockoutOpacity = transpGroup->knockoutOpacity;
   }
   delete transpGroup->shape;
@@ -4483,7 +4478,7 @@
 }
 
 void SplashOutputDev::clearSoftMask(GfxState *state) {
-  splash->setSoftMask(NULL);
+  splash->setSoftMask(nullptr);
 }
 
 void SplashOutputDev::setPaperColor(SplashColorPtr paperColorA) {
@@ -4657,7 +4652,7 @@
 
   bitmap = new SplashBitmap(surface_width, surface_height, 1,
                             (paintType == 1) ? colorMode : splashModeMono8, gTrue);
-  if (bitmap->getDataPtr() == NULL) {
+  if (bitmap->getDataPtr() == nullptr) {
     SplashBitmap *tBitmap = bitmap;
     bitmap = formerBitmap;
     delete tBitmap;
@@ -4681,7 +4676,7 @@
 
   box.x1 = bbox[0]; box.y1 = bbox[1];
   box.x2 = bbox[2]; box.y2 = bbox[3];
-  gfx = new Gfx(doc, this, resDict, &box, NULL, NULL, NULL, gfxA->getXRef());
+  gfx = new Gfx(doc, this, resDict, &box, nullptr, nullptr, nullptr, gfxA->getXRef());
   // set pattern transformation matrix
   gfx->getState()->setCTM(m1.m[0], m1.m[1], m1.m[2], m1.m[3], m1.m[4], m1.m[5]);
   updateCTM(gfx->getState(), m1.m[0], m1.m[1], m1.m[2], m1.m[3], m1.m[4], m1.m[5]);
@@ -4728,7 +4723,7 @@
     }
     retValue = gTrue;
   } else {
-    retValue = splash->drawImage(&tilingBitmapSrc, NULL, &imgData, colorMode, gTrue, result_width, result_height, matc, gFalse, gTrue) == splashOk;
+    retValue = splash->drawImage(&tilingBitmapSrc, nullptr, &imgData, colorMode, gTrue, result_width, result_height, matc, gFalse, gTrue) == splashOk;
   }
   delete tBitmap;
   delete gfx;
@@ -4754,7 +4749,7 @@
   }
   // restore vector antialias because we support it here
   if (shading->isParameterized()) {
-    SplashGouraudColor *splashShading = new SplashGouraudPattern(bDirectColorTranslation, state, shading, colorMode);
+    SplashGouraudColor *splashShading = new SplashGouraudPattern(bDirectColorTranslation, state, shading);
     GBool vaa = getVectorAntialias();
     GBool retVal = gFalse;
     setVectorAntialias(gTrue);
@@ -4821,7 +4816,7 @@
   pattern->getShading()->getColorSpace()->createMapping(bitmap->getSeparationList(), SPOT_NCOMPS);
 #endif
   setOverprintMask(pattern->getShading()->getColorSpace(), state->getFillOverprint(),
-		   state->getOverprintMode(), NULL);
+		   state->getOverprintMode(), nullptr);
   retVal = (splash->shadedFill(path, pattern->getShading()->getHasBBox(), pattern) == splashOk);
   state->clearPath();
   setVectorAntialias(vaa);
@@ -4886,7 +4881,7 @@
   pattern->getShading()->getColorSpace()->createMapping(bitmap->getSeparationList(), SPOT_NCOMPS);
 #endif
   setOverprintMask(pattern->getShading()->getColorSpace(), state->getFillOverprint(),
-		   state->getOverprintMode(), NULL);
+		   state->getOverprintMode(), nullptr);
   retVal = (splash->shadedFill(path, pattern->getShading()->getHasBBox(), pattern) == splashOk);
   state->clearPath();
   setVectorAntialias(vaa);

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -20,7 +20,7 @@
 // Copyright (C) 2011 Andreas Hartmetz <ahartmetz at gmail.com>
 // Copyright (C) 2011 Andrea Canciani <ranma42 at gmail.com>
 // Copyright (C) 2011, 2017 Adrian Johnson <ajohnson at redneon.com>
-// Copyright (C) 2012, 2015 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2012, 2015, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2015, 2016 William Bader <williambader at hotmail.com>
 //
 // To see a description of the changes please see the Changelog file that
@@ -135,9 +135,9 @@
 class SplashGouraudPattern: public SplashGouraudColor {
 public:
 
-  SplashGouraudPattern(GBool bDirectColorTranslation, GfxState *state, GfxGouraudTriangleShading *shading, SplashColorMode mode);
+  SplashGouraudPattern(GBool bDirectColorTranslation, GfxState *state, GfxGouraudTriangleShading *shading);
 
-  SplashPattern *copy() override { return new SplashGouraudPattern(bDirectColorTranslation, state, shading, mode); }
+  SplashPattern *copy() override { return new SplashGouraudPattern(bDirectColorTranslation, state, shading); }
 
   ~SplashGouraudPattern();
 
@@ -154,7 +154,7 @@
    void getTriangle(int i, double *x0, double *y0, double *color0,
                             double *x1, double *y1, double *color1,
                             double *x2, double *y2, double *color2) override
-  { return shading->getTriangle(i, x0, y0, color0, x1, y1, color1, x2, y2, color2); }
+  { shading->getTriangle(i, x0, y0, color0, x1, y1, color1, x2, y2, color2); }
 
   void getParameterizedColor(double t, SplashColorMode mode, SplashColorPtr c) override;
 
@@ -162,7 +162,6 @@
   GfxGouraudTriangleShading *shading;
   GfxState *state;
   GBool bDirectColorTranslation;
-  SplashColorMode mode;
   GfxColorSpaceMode gfxMode;
 };
 
@@ -466,7 +465,6 @@
 
   SplashTransparencyGroup *	// transparency group stack
     transpGroupStack;
-  SplashBitmap *maskBitmap; // for image masks in pattern colorspace
   int nestCount;
 };
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/StdinCachedFile.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/StdinCachedFile.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/StdinCachedFile.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -29,7 +29,7 @@
   setmode(fileno(stdin), O_BINARY);
 #endif
 
-  CachedFileWriter writer = CachedFileWriter (cachedFile, NULL);
+  CachedFileWriter writer = CachedFileWriter (cachedFile, nullptr);
   do {
     read = fread(buf, 1, CachedFileChunkSize, stdin);
     (writer.write) (buf, CachedFileChunkSize);

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/StdinPDFDocBuilder.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/StdinPDFDocBuilder.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/StdinPDFDocBuilder.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -23,7 +23,7 @@
 StdinPDFDocBuilder::buildPDFDoc(const GooString &uri, GooString *ownerPassword,
                                     GooString *userPassword, void *guiDataA)
 {
-  CachedFile *cachedFile = new CachedFile(new StdinCacheLoader(), NULL);
+  CachedFile *cachedFile = new CachedFile(new StdinCacheLoader(), nullptr);
   return new PDFDoc(new CachedFileStream(cachedFile, 0, gFalse,
                                          cachedFile->getLength(), Object(objNull)),
                     ownerPassword, userPassword);

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Stream.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Stream.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Stream.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -27,7 +27,7 @@
 // Copyright (C) 2012 Oliver Sander <sander at mi.fu-berlin.de>
 // Copyright (C) 2012 Fabio D'Urso <fabiodurso at hotmail.it>
 // Copyright (C) 2012 Even Rouault <even.rouault at mines-paris.org>
-// Copyright (C) 2013, 2017 Adrian Johnson <ajohnson at redneon.com>
+// Copyright (C) 2013, 2017, 2018 Adrian Johnson <ajohnson at redneon.com>
 // Copyright (C) 2013 Adam Reichold <adamreichold at myopera.com>
 // Copyright (C) 2013 Pino Toscano <pino at kde.org>
 // Copyright (C) 2015 Suzuki Toshiya <mpsuzuki at hiroshima-u.ac.jp>
@@ -150,7 +150,7 @@
   int c;
 
   if (lookChar() == EOF || size < 0)
-    return NULL;
+    return nullptr;
   for (i = 0; i < size - 1; ++i) {
     c = getChar();
     if (c == EOF || c == '\n')
@@ -214,7 +214,7 @@
   int bits;
   int early;
   int encoding;
-  GBool endOfLine, byteAlign, endOfBlock, black;
+  GBool endOfLine, byteAlign, endOfBlock, black, damagedRowsBeforeError;
   int columns, rows;
   Object globals, obj;
 
@@ -256,7 +256,8 @@
     rows = 0;
     endOfBlock = gTrue;
     black = gFalse;
-    if (params->isDict()) {
+    damagedRowsBeforeError = 0;
+  if (params->isDict()) {
       obj = params->dictLookup("K", recursion);
       if (obj.isInt()) {
 	encoding = obj.getInt();
@@ -285,9 +286,13 @@
       if (obj.isBool()) {
 	black = obj.getBool();
       }
+      obj = params->dictLookup("DamagedRowsBeforeError", recursion);
+      if (obj.isInt()) {
+	damagedRowsBeforeError = obj.getInt();
+      }
     }
     str = new CCITTFaxStream(str, encoding, endOfLine, byteAlign,
-			     columns, rows, endOfBlock, black);
+			     columns, rows, endOfBlock, black, damagedRowsBeforeError);
   } else if (!strcmp(name, "DCTDecode") || !strcmp(name, "DCT")) {
 #ifdef HAVE_DCT_DECODER
     int colorXform = -1;
@@ -500,8 +505,8 @@
   int i;
   Guchar *p;
   
-  if (unlikely(inputLine == NULL)) {
-      return NULL;
+  if (unlikely(inputLine == nullptr)) {
+      return nullptr;
   }
  
   int readChars = str->doGetChars(inputLineSize, inputLine);
@@ -563,7 +568,7 @@
   width = widthA;
   nComps = nCompsA;
   nBits = nBitsA;
-  predLine = NULL;
+  predLine = nullptr;
   ok = gFalse;
 
   nVals = width * nComps;
@@ -1056,13 +1061,13 @@
 
 BaseStream *EmbedStream::copy() {
   error(errInternal, -1, "Called copy() on EmbedStream");
-  return NULL;
+  return nullptr;
 }
 
 Stream *EmbedStream::makeSubStream(Goffset start, GBool limitedA,
 				   Goffset lengthA, Object &&dictA) {
   error(errInternal, -1, "Called makeSubStream() on EmbedStream");
-  return NULL;
+  return nullptr;
 }
 
 void EmbedStream::rewind() {
@@ -1132,7 +1137,7 @@
     len = bufLen - bufPos;
     if (nChars > len)
       nChars = len;
-    memcpy(buffer, bufData, len);
+    memcpy(buffer, bufData, nChars);
     return len;
   } else {
     if (limited && length < nChars) {
@@ -1245,10 +1250,10 @@
   GooString *s;
 
   if (psLevel < 2) {
-    return NULL;
+    return nullptr;
   }
   if (!(s = str->getPSFilter(psLevel, indent))) {
-    return NULL;
+    return nullptr;
   }
   s->append(indent)->append("/ASCIIHexDecode filter\n");
   return s;
@@ -1326,10 +1331,10 @@
   GooString *s;
 
   if (psLevel < 2) {
-    return NULL;
+    return nullptr;
   }
   if (!(s = str->getPSFilter(psLevel, indent))) {
-    return NULL;
+    return nullptr;
   }
   s->append(indent)->append("/ASCII85Decode filter\n");
   return s;
@@ -1350,10 +1355,10 @@
     pred = new StreamPredictor(this, predictor, columns, colors, bits);
     if (!pred->isOk()) {
       delete pred;
-      pred = NULL;
+      pred = nullptr;
     }
   } else {
-    pred = NULL;
+    pred = nullptr;
   }
   early = earlyA;
   eof = gFalse;
@@ -1534,10 +1539,10 @@
   GooString *s;
 
   if (psLevel < 2 || pred) {
-    return NULL;
+    return nullptr;
   }
   if (!(s = str->getPSFilter(psLevel, indent))) {
-    return NULL;
+    return nullptr;
   }
   s->append(indent)->append("<< ");
   if (!early) {
@@ -1596,10 +1601,10 @@
   GooString *s;
 
   if (psLevel < 2) {
-    return NULL;
+    return nullptr;
   }
   if (!(s = str->getPSFilter(psLevel, indent))) {
-    return NULL;
+    return nullptr;
   }
   s->append(indent)->append("/RunLengthDecode filter\n");
   return s;
@@ -1641,12 +1646,13 @@
 
 CCITTFaxStream::CCITTFaxStream(Stream *strA, int encodingA, GBool endOfLineA,
 			       GBool byteAlignA, int columnsA, int rowsA,
-			       GBool endOfBlockA, GBool blackA):
+			       GBool endOfBlockA, GBool blackA, int damagedRowsBeforeErrorA):
     FilterStream(strA) {
   encoding = encodingA;
   endOfLine = endOfLineA;
   byteAlign = byteAlignA;
   columns = columnsA;
+  damagedRowsBeforeError = damagedRowsBeforeErrorA;
   if (columns < 1) {
     columns = 1;
   } else if (columns > INT_MAX - 2) {
@@ -1662,7 +1668,7 @@
   codingLine = (int *)gmallocn_checkoverflow(columns + 1, sizeof(int));
   refLine = (int *)gmallocn_checkoverflow(columns + 2, sizeof(int));
 
-  if (codingLine != NULL && refLine != NULL) {
+  if (codingLine != nullptr && refLine != nullptr) {
     eof = gFalse;
     codingLine[0] = columns;
   } else {
@@ -1706,7 +1712,7 @@
 
   ccittReset(gFalse);
 
-  if (codingLine != NULL && refLine != NULL) {
+  if (codingLine != nullptr && refLine != nullptr) {
     eof = gFalse;
     codingLine[0] = columns;
   } else {
@@ -2407,10 +2413,10 @@
   char s1[50];
 
   if (psLevel < 2) {
-    return NULL;
+    return nullptr;
   }
   if (!(s = str->getPSFilter(psLevel, indent))) {
-    return NULL;
+    return nullptr;
   }
   s->append(indent)->append("<< ");
   if (encoding != 0) {
@@ -4567,13 +4573,13 @@
     pred = new StreamPredictor(this, predictor, columns, colors, bits);
     if (!pred->isOk()) {
       delete pred;
-      pred = NULL;
+      pred = nullptr;
     }
   } else {
-    pred = NULL;
+    pred = nullptr;
   }
-  litCodeTab.codes = NULL;
-  distCodeTab.codes = NULL;
+  litCodeTab.codes = nullptr;
+  distCodeTab.codes = nullptr;
   memset(buf, 0, flateWindow);
 }
 
@@ -4685,10 +4691,10 @@
   GooString *s;
 
   if (psLevel < 3 || pred) {
-    return NULL;
+    return nullptr;
   }
   if (!(s = str->getPSFilter(psLevel, indent))) {
-    return NULL;
+    return nullptr;
   }
   s->append(indent)->append("<< >> /FlateDecode filter\n");
   return s;
@@ -4772,11 +4778,11 @@
   if (litCodeTab.codes != fixedLitCodeTab.codes) {
     gfree(litCodeTab.codes);
   }
-  litCodeTab.codes = NULL;
+  litCodeTab.codes = nullptr;
   if (distCodeTab.codes != fixedDistCodeTab.codes) {
     gfree(distCodeTab.codes);
   }
-  distCodeTab.codes = NULL;
+  distCodeTab.codes = nullptr;
 
   // read block header
   blockHdr = getCodeWord(3);
@@ -4846,7 +4852,7 @@
   int len, repeat, code;
   int i;
 
-  codeLenCodeTab.codes = NULL;
+  codeLenCodeTab.codes = nullptr;
 
   // read lengths
   if ((numLitCodes = getCodeWord(5)) == EOF) {
@@ -5387,8 +5393,8 @@
   // initialize code table
   for (i = 0; i < 256; ++i) {
     table[i].byte = i;
-    table[i].next = NULL;
-    table[i].children = NULL;
+    table[i].next = nullptr;
+    table[i].children = nullptr;
   }
   nextSeq = 258;
   codeLen = 9;
@@ -5472,11 +5478,11 @@
 
   // update the table
   table[nextSeq].byte = seqLen < inBufLen ? inBuf[seqLen] : 0;
-  table[nextSeq].children = NULL;
+  table[nextSeq].children = nullptr;
   if (table[code].children) {
     table[nextSeq].next = table[code].children;
   } else {
-    table[nextSeq].next = NULL;
+    table[nextSeq].next = nullptr;
   }
   table[code].children = table + nextSeq;
   ++nextSeq;
@@ -5493,8 +5499,8 @@
       outBuf = (outBuf << 12) | 256;
       outBufLen += 12;
       for (i = 0; i < 256; ++i) {
-	table[i].next = NULL;
-	table[i].children = NULL;
+	table[i].next = nullptr;
+	table[i].children = nullptr;
       }
       nextSeq = 258;
       codeLen = 9;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/Stream.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/Stream.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/Stream.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -15,7 +15,7 @@
 //
 // Copyright (C) 2005 Jeff Muizelaar <jeff at infidigm.net>
 // Copyright (C) 2008 Julien Rebetez <julien at fhtagn.net>
-// Copyright (C) 2008, 2010, 2011, 2016, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2008, 2010, 2011, 2016-2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2009 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2009 Stefan Thomas <thomas at eload24.com>
 // Copyright (C) 2010 Hib Eris <hib at hiberis.nl>
@@ -105,6 +105,9 @@
   // Destructor.
   virtual ~Stream();
 
+  Stream(const Stream &) = delete;
+  Stream& operator=(const Stream &other) = delete;
+
   // Get kind of stream.
   virtual StreamKind getKind() = 0;
 
@@ -257,6 +260,9 @@
   // Desctructor.
   virtual ~OutStream ();
 
+  OutStream(const OutStream &) = delete;
+  OutStream& operator=(const OutStream &other) = delete;
+
   // Close the stream
   virtual void close() = 0;
 
@@ -368,6 +374,9 @@
 
   ~ImageStream();
 
+  ImageStream(const ImageStream &) = delete;
+  ImageStream& operator=(const ImageStream &other) = delete;
+
   // Reset the stream.
   void reset();
 
@@ -412,6 +421,9 @@
 
   ~StreamPredictor();
 
+  StreamPredictor(const StreamPredictor &) = delete;
+  StreamPredictor& operator=(const StreamPredictor &) = delete;
+
   GBool isOk() { return ok; }
 
   int lookChar();
@@ -794,7 +806,7 @@
 
   CCITTFaxStream(Stream *strA, int encodingA, GBool endOfLineA,
 		 GBool byteAlignA, int columnsA, int rowsA,
-		 GBool endOfBlockA, GBool blackA);
+		 GBool endOfBlockA, GBool blackA, int damagedRowsBeforeErrorA);
   ~CCITTFaxStream();
   StreamKind getKind() override { return strCCITTFax; }
   void reset() override;
@@ -808,8 +820,11 @@
 
   int getEncoding() { return encoding; }
   GBool getEndOfLine() { return endOfLine; }
+  GBool getEncodedByteAlign() { return byteAlign; }
+  GBool getEndOfBlock() { return endOfBlock; }
   int getColumns() { return columns; }
   GBool getBlackIs1() { return black; }
+  int getDamagedRowsBeforeError() { return damagedRowsBeforeError; }
 
 private:
 
@@ -821,6 +836,7 @@
   int rows;			// 'Rows' parameter
   GBool endOfBlock;		// 'EndOfBlock' parameter
   GBool black;			// 'BlackIs1' parameter
+  int damagedRowsBeforeError;   // 'DamagedRowsBeforeError' parameter
   GBool eof;			// true if at eof
   GBool nextLine2D;		// true if next line uses 2D encoding
   int row;			// current row

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/StructElement.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/StructElement.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/StructElement.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -6,8 +6,9 @@
 //
 // Copyright 2013, 2014 Igalia S.L.
 // Copyright 2014 Luigi Scarso <luigi.scarso at gmail.com>
-// Copyright 2014, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright 2014, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright 2015 Dmytro Morgun <lztoad at gmail.com>
+// Copyright 2018 Adrian Johnson <ajohnson at redneon.com>
 //
 //========================================================================
 
@@ -267,7 +268,7 @@
 
 
 #define ATTR_LIST_END \
-  { Attribute::Unknown, NULL, NULL, gFalse, NULL }
+  { Attribute::Unknown, nullptr, nullptr, gFalse, nullptr }
 
 #define ATTR_WITH_DEFAULT(name, inherit, check, defval) \
   { Attribute::name,           \
@@ -279,7 +280,7 @@
 #define ATTR(name, inherit, check) \
   { Attribute::name,           \
     #name,                     \
-    NULL,                      \
+    nullptr,                   \
     inherit,                   \
     check }
 
@@ -382,24 +383,24 @@
   attributeMapCommonPrintField,
   attributeMapCommonTable,
   attributeMapCommonTableCell,
-  NULL,
+  nullptr,
 };
 
 static const AttributeMapEntry *attributeMapShared[] = {
   attributeMapCommonShared,
-  NULL,
+  nullptr,
 };
 
 static const AttributeMapEntry *attributeMapBlock[] = {
   attributeMapCommonShared,
   attributeMapCommonBlock,
-  NULL,
+  nullptr,
 };
 
 static const AttributeMapEntry *attributeMapInline[] = {
   attributeMapCommonShared,
   attributeMapCommonInline,
-  NULL,
+  nullptr,
 };
 
 static const AttributeMapEntry *attributeMapTableCell[] = {
@@ -407,7 +408,7 @@
   attributeMapCommonBlock,
   attributeMapCommonTable,
   attributeMapCommonTableCell,
-  NULL,
+  nullptr,
 };
 
 static const AttributeMapEntry *attributeMapRubyText[] = {
@@ -414,7 +415,7 @@
   attributeMapCommonShared,
   attributeMapCommonInline,
   attributeMapCommonRubyText,
-  NULL,
+  nullptr,
 };
 
 static const AttributeMapEntry *attributeMapColumns[] = {
@@ -421,13 +422,13 @@
   attributeMapCommonShared,
   attributeMapCommonInline,
   attributeMapCommonColumns,
-  NULL,
+  nullptr,
 };
 
 static const AttributeMapEntry *attributeMapList[] = {
   attributeMapCommonShared,
   attributeMapCommonList,
-  NULL,
+  nullptr,
 };
 
 static const AttributeMapEntry *attributeMapTable[] = {
@@ -434,7 +435,7 @@
   attributeMapCommonShared,
   attributeMapCommonBlock,
   attributeMapCommonTable,
-  NULL,
+  nullptr,
 };
 
 static const AttributeMapEntry *attributeMapIllustration[] = {
@@ -444,7 +445,7 @@
   attributeMapCommonShared,
   attributeMapCommonBlock,
   attributeMapCommonInline,
-  NULL,
+  nullptr,
 };
 
 // Table mapping owners of attributes to their names.
@@ -571,7 +572,7 @@
     }
     entryList++;
   }
-  return NULL;
+  return nullptr;
 }
 
 static inline const AttributeMapEntry *
@@ -588,7 +589,7 @@
     }
     entryList++;
   }
-  return NULL;
+  return nullptr;
 }
 
 static inline const OwnerMapEntry *getOwnerMapEntry(Attribute::Owner owner)
@@ -597,7 +598,7 @@
     if (owner == ownerMap[i].owner)
       return &ownerMap[i];
   }
-  return NULL;
+  return nullptr;
 }
 
 static inline const OwnerMapEntry *getOwnerMapEntry(const char *name)
@@ -606,7 +607,7 @@
     if (strcmp(name, ownerMap[i].name) == 0)
       return &ownerMap[i];
   }
-  return NULL;
+  return nullptr;
 }
 
 static const char *ownerToName(Attribute::Owner owner)
@@ -627,7 +628,7 @@
     if (type == typeMap[i].type)
       return &typeMap[i];
   }
-  return NULL;
+  return nullptr;
 }
 
 static inline const TypeMapEntry *getTypeMapEntry(const char *name)
@@ -636,7 +637,7 @@
     if (strcmp(name, typeMap[i].name) == 0)
       return &typeMap[i];
   }
-  return NULL;
+  return nullptr;
 }
 
 static const char *typeToName(StructElement::Type type)
@@ -668,20 +669,20 @@
   name(nameA, nameLenA),
   value(),
   hidden(gFalse),
-  formatted(NULL)
+  formatted(nullptr)
 {
   assert(valueA);
   value = valueA->copy();
 }
 
-Attribute::Attribute(Type type, Object *valueA):
-  type(type),
+Attribute::Attribute(Type typeA, Object *valueA):
+  type(typeA),
   owner(UserProperties), // TODO: Determine corresponding owner from Type
   revision(0),
   name(),
   value(),
   hidden(gFalse),
-  formatted(NULL)
+  formatted(nullptr)
 {
   assert(valueA);
 
@@ -716,7 +717,7 @@
 Object *Attribute::getDefaultValue(Attribute::Type type)
 {
   const AttributeMapEntry *entry = getAttributeMapEntry(attributeMapAll, type);
-  return entry ? const_cast<Object*>(entry->defval) : NULL;
+  return entry ? const_cast<Object*>(entry->defval) : nullptr;
 }
 
 void Attribute::setFormattedValue(const char *formattedA)
@@ -728,7 +729,7 @@
       formatted = new GooString(formattedA);
   } else {
     delete formatted;
-    formatted = NULL;
+    formatted = nullptr;
   }
 }
 
@@ -816,12 +817,12 @@
 //------------------------------------------------------------------------
 
 StructElement::StructData::StructData():
-  altText(0),
-  actualText(0),
-  id(0),
-  title(0),
-  expandedAbbr(0),
-  language(0),
+  altText(nullptr),
+  actualText(nullptr),
+  id(nullptr),
+  title(nullptr),
+  expandedAbbr(nullptr),
+  language(nullptr),
   revision(0)
 {
 }
@@ -930,9 +931,9 @@
     return parent->findAttribute(attributeType, inherit, attributeOwner);
 
   if (attributeType == Attribute::Unknown || attributeType == Attribute::UserProperty)
-    return NULL;
+    return nullptr;
 
-  const Attribute *result = NULL;
+  const Attribute *result = nullptr;
 
   if (attributeOwner == Attribute::UnknownOwner) {
     // Search for the attribute, no matter who the owner is
@@ -967,7 +968,7 @@
       return parent->findAttribute(attributeType, inherit, attributeOwner);
   }
 
-  return NULL;
+  return nullptr;
 }
 
 GooString* StructElement::appendSubTreeText(GooString *string, GBool recursive) const
@@ -986,7 +987,7 @@
   }
 
   if (!recursive)
-    return NULL;
+    return nullptr;
 
   // Do a depth-first traversal, to get elements in logical order
   if (!string)
@@ -1065,7 +1066,7 @@
 
   // Type name may not be standard, resolve through RoleMap first.
   if (treeRoot->getRoleMap()) {
-    type = roleMapResolve(treeRoot->getRoleMap(), obj.getName(), NULL);
+    type = roleMapResolve(treeRoot->getRoleMap(), obj.getName(), nullptr);
   }
 
   // Resolving through RoleMap may leave type as Unknown, e.g. for types
@@ -1188,7 +1189,7 @@
   assert(childObj);
   assert(ref);
 
-  StructElement *child = NULL;
+  StructElement *child = nullptr;
 
   if (childObj->isInt()) {
     child = new StructElement(childObj->getInt(), treeRoot, this);
@@ -1198,9 +1199,9 @@
      *      page will be always scanned when calling StructElement::getText().
      */
     Object mcidObj = childObj->dictLookup("MCID");
-    if (mcidObj.isInt()) {
+    if (!mcidObj.isInt()) {
       error(errSyntaxError, -1, "MCID object is wrong type ({0:s})", mcidObj.getTypeName());
-      return NULL;
+      return nullptr;
     }
 
     child = new StructElement(mcidObj.getInt(), treeRoot, this);
@@ -1246,7 +1247,7 @@
         treeRoot->parentTreeAdd(ref->getRef(), child);
     } else {
       delete child;
-      child = NULL;
+      child = nullptr;
     }
   }
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/StructElement.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/StructElement.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/StructElement.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -6,7 +6,7 @@
 //
 // Copyright 2013, 2014 Igalia S.L.
 // Copyright 2014 Luigi Scarso <luigi.scarso at gmail.com>
-// Copyright 2014 Albert Astals Cid <aacid at kde.org>
+// Copyright 2014, 2018 Albert Astals Cid <aacid at kde.org>
 //
 //========================================================================
 
@@ -169,8 +169,8 @@
   StructTreeRoot *getStructTreeRoot() { return treeRoot; }
 
   // Optional element identifier.
-  const GooString *getID() const { return isContent() ? NULL : s->id; }
-  GooString *getID() { return isContent() ? NULL : s->id; }
+  const GooString *getID() const { return isContent() ? nullptr : s->id; }
+  GooString *getID() { return isContent() ? nullptr : s->id; }
 
   // Optional ISO language name, e.g. en_US
   GooString *getLanguage() {
@@ -187,16 +187,16 @@
   void setRevision(Guint revision) { if (isContent()) s->revision = revision; }
 
   // Optional element title, in human-readable form.
-  const GooString *getTitle() const { return isContent() ? NULL : s->title; }
-  GooString *getTitle() { return isContent() ? NULL : s->title; }
+  const GooString *getTitle() const { return isContent() ? nullptr : s->title; }
+  GooString *getTitle() { return isContent() ? nullptr : s->title; }
 
   // Optional element expanded abbreviation text.
-  const GooString *getExpandedAbbr() const { return isContent() ? NULL : s->expandedAbbr; }
-  GooString *getExpandedAbbr() { return isContent() ? NULL : s->expandedAbbr; }
+  const GooString *getExpandedAbbr() const { return isContent() ? nullptr : s->expandedAbbr; }
+  GooString *getExpandedAbbr() { return isContent() ? nullptr : s->expandedAbbr; }
 
   unsigned getNumChildren() const { return isContent() ? 0 : s->elements.size(); }
-  const StructElement *getChild(int i) const { return isContent() ? NULL : s->elements.at(i); }
-  StructElement *getChild(int i) { return isContent() ? NULL : s->elements.at(i); }
+  const StructElement *getChild(int i) const { return isContent() ? nullptr : s->elements.at(i); }
+  StructElement *getChild(int i) { return isContent() ? nullptr : s->elements.at(i); }
 
   void appendChild(StructElement *element) {
     if (!isContent() && element && element->isOk()) {
@@ -205,8 +205,8 @@
   }
 
   unsigned getNumAttributes() const { return isContent() ? 0 : s->attributes.size(); }
-  const Attribute *getAttribute(int i) const { return isContent() ? NULL : s->attributes.at(i); }
-  Attribute *getAttribute(int i) { return isContent() ? NULL : s->attributes.at(i); }
+  const Attribute *getAttribute(int i) const { return isContent() ? nullptr : s->attributes.at(i); }
+  Attribute *getAttribute(int i) { return isContent() ? nullptr : s->attributes.at(i); }
 
   void appendAttribute(Attribute *attribute) {
     if (!isContent() && attribute) {
@@ -217,11 +217,11 @@
   const Attribute* findAttribute(Attribute::Type attributeType, GBool inherit = gFalse,
                                  Attribute::Owner owner = Attribute::UnknownOwner) const;
 
-  const GooString *getAltText() const { return isContent() ? NULL : s->altText; }
-  GooString *getAltText() { return isContent() ? NULL : s->altText; }
+  const GooString *getAltText() const { return isContent() ? nullptr : s->altText; }
+  GooString *getAltText() { return isContent() ? nullptr : s->altText; }
 
-  const GooString *getActualText() const { return isContent() ? NULL : s->actualText; }
-  GooString *getActualText() { return isContent() ? NULL : s->actualText; }
+  const GooString *getActualText() const { return isContent() ? nullptr : s->actualText; }
+  GooString *getActualText() { return isContent() ? nullptr : s->actualText; }
 
   // Content text referenced by the element:
   //
@@ -237,7 +237,7 @@
   // A new string is returned, and the ownership passed to the caller.
   //
   GooString *getText(GBool recursive = gTrue) const {
-    return appendSubTreeText(NULL, recursive);
+    return appendSubTreeText(nullptr, recursive);
   }
 
   const TextSpanArray getTextSpans() const {
@@ -270,6 +270,9 @@
 
     StructData();
     ~StructData();
+
+    StructData(const StructData &) = delete;
+    StructData& operator=(const StructData &) = delete;
   };
 
   // Data in content elements (MCID, MCR)

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -7,8 +7,8 @@
 // Copyright 2013, 2014 Igalia S.L.
 // Copyright 2014 Fabio D'Urso <fabiodurso at hotmail.it>
 // Copyright 2017 Jan-Erik S <janerik234678 at gmail.com>
-// Copyright 2017 Albert Astals Cid <aacid at kde.org>
-// Copyright 2017 Adrian Johnson <ajohnson at redneon.com>
+// Copyright 2017, 2018 Albert Astals Cid <aacid at kde.org>
+// Copyright 2017, 2018 Adrian Johnson <ajohnson at redneon.com>
 //
 //========================================================================
 
@@ -53,52 +53,9 @@
   // corresponsing structure element. Here only the references are
   // loaded into the array, the pointers to the StructElements will
   // be filled-in later when parsing them.
-  Object obj = root->lookup("ParentTree");
-  if (obj.isDict()) {
-    Object nums = obj.dictLookup("Nums");
-    if (nums.isArray()) {
-      if (nums.arrayGetLength() % 2 == 0) {
-        parentTree.resize(nums.arrayGetLength() / 2);
-        // Index numbers in even positions, references in odd ones
-        for (int i = 0; i < nums.arrayGetLength(); i += 2) {
-          Object index = nums.arrayGet(i);
-
-          if (!index.isInt()) {
-            error(errSyntaxError, -1, "Nums item at position {0:d} is wrong type ({1:s})", i, index.getTypeName());
-            continue;
-          }
-          const int idx = index.getInt();
-          if (idx < 0 || idx >= (int)parentTree.size()) {
-            error(errSyntaxError, -1, "Nums item at position {0:d} is invalid value ({1:d}): [0..{2:d}]", i, idx, parentTree.size() - 1);
-            continue;
-          }
-
-          Object value = nums.arrayGetNF(i + 1);
-          if (value.isRef()) {
-            parentTree[idx].resize(1);
-            parentTree[idx][0].ref = value.getRef();
-          } else {
-	    value = nums.arrayGet(i + 1);
-	    if (value.isArray()) {
-	      parentTree[idx].resize(value.arrayGetLength());
-	      for (int j = 0; j < value.arrayGetLength(); j++) {
-		Object itemvalue = value.arrayGetNF(j);
-		if (itemvalue.isRef())
-		  parentTree[idx][j].ref = itemvalue.getRef();
-		else
-		  error(errSyntaxError, -1, "Nums array item at position {0:d}/{1:d} is invalid type ({2:s})", i, j, itemvalue.getTypeName());
-	      }
-	    } else {
-	      error(errSyntaxError, -1, "Nums item at position {0:d} is wrong type ({1:s})", i + 1, value.getTypeName());
-	    }
-	  }
-        }
-      } else {
-        error(errSyntaxError, -1, "Nums array length is not a even ({0:d})", nums.arrayGetLength());
-      }
-    } else {
-      error(errSyntaxError, -1, "Nums object is wrong type ({0:s})", nums.getTypeName());
-    }
+  const Object parentTreeObj = root->lookup("ParentTree");
+  if (parentTreeObj.isDict()) {
+    parseNumberTreeNode(parentTreeObj.getDict());
   }
 
   std::set<int> seenElements;
@@ -117,7 +74,7 @@
       }
       Object obj = kids.arrayGet(i);
       if (obj.isDict()) {
-        StructElement *child = new StructElement(obj.getDict(), this, NULL, seenElements);
+        StructElement *child = new StructElement(obj.getDict(), this, nullptr, seenElements);
         if (child->isOk()) {
           if (marked && !(child->getType() == StructElement::Document ||
                           child->getType() == StructElement::Part ||
@@ -138,10 +95,7 @@
       }
     }
   } else if (kids.isDict()) {
-    if (marked) {
-      error(errSyntaxWarning, -1, "K has a child of wrong type for a tagged PDF ({0:s})", kids.getTypeName());
-    }
-    StructElement *child = new StructElement(kids.getDict(), this, NULL, seenElements);
+    StructElement *child = new StructElement(kids.getDict(), this, nullptr, seenElements);
     if (child->isOk()) {
       appendChild(child);
       Object ref = root->lookupNF("K");
@@ -154,14 +108,80 @@
   } else if (!kids.isNull()) {
     error(errSyntaxWarning, -1, "K in StructTreeRoot is wrong type ({0:s})", kids.getTypeName());
   }
+
+  // refToParentMap is only used during parsing. Ensure all memory used by it is freed.
+  std::multimap<Ref, Parent*, RefCompare>().swap(refToParentMap);
 }
 
-void StructTreeRoot::parentTreeAdd(const Ref &objectRef, StructElement *element)
+void StructTreeRoot::parseNumberTreeNode(Dict *node)
 {
-  for (std::vector< std::vector<Parent> >::iterator i = parentTree.begin(); i != parentTree.end(); ++i) {
-    for (std::vector<Parent>::iterator j = i->begin(); j != i->end(); ++j) {
-      if (j->ref.num == objectRef.num && j->ref.gen == objectRef.gen)
-        j->element = element;
+  Object kids = node->lookup("Kids");
+  if (kids.isArray()) {
+    for (int i = 0; i < kids.arrayGetLength(); i++) {
+      Object obj = kids.arrayGet(i);
+      if (obj.isDict()) {
+	parseNumberTreeNode(obj.getDict());
+      } else {
+	error(errSyntaxError, -1, "Kids item at position {0:d} is wrong type ({1:s})", i, obj.getTypeName());
+      }
     }
+    return;
+  } else if (!kids.isNull()) {
+    error(errSyntaxError, -1, "Kids object is wrong type ({0:s})", kids.getTypeName());
   }
+
+  Object nums = node->lookup("Nums");
+  if (nums.isArray()) {
+    if (nums.arrayGetLength() % 2 == 0) {
+      // keys in even positions, references in odd ones
+      for (int i = 0; i < nums.arrayGetLength(); i += 2) {
+	Object key = nums.arrayGet(i);
+
+	if (!key.isInt()) {
+	  error(errSyntaxError, -1, "Nums item at position {0:d} is wrong type ({1:s})", i, key.getTypeName());
+	  continue;
+	}
+	int keyVal = key.getInt();
+	std::vector<Parent>& vec = parentTree[keyVal];
+
+	Object value = nums.arrayGet(i + 1);
+	if (value.isArray()) {
+	  vec.resize(value.arrayGetLength());
+	  memset(vec.data(), 0, vec.size()*sizeof(Parent*));
+	  for (int j = 0; j < value.arrayGetLength(); j++) {
+	    Object itemvalue = value.arrayGetNF(j);
+	    if (itemvalue.isRef()) {
+	      Ref ref = itemvalue.getRef();
+	      vec[j].ref = ref;
+	      refToParentMap.insert(std::pair<Ref, Parent*>(ref, &vec[j]));
+	    } else if (!itemvalue.isNull()) {
+	      error(errSyntaxError, -1, "Nums array item at position {0:d}/{1:d} is invalid type ({2:s})", i, j, itemvalue.getTypeName());
+	    }
+	  }
+	} else {
+	  value = nums.arrayGetNF(i + 1);
+	  if (value.isRef()) {
+	    Ref ref = value.getRef();
+	    vec.resize(1);
+	    vec[0].ref = ref;
+	    refToParentMap.insert(std::pair<Ref, Parent*>(ref, &vec[0]));
+	  } else {
+	    error(errSyntaxError, -1, "Nums item at position {0:d} is wrong type ({1:s})", i + 1, value.getTypeName());
+	  }
+	}
+      }
+    } else {
+      error(errSyntaxError, -1, "Nums array length is not a even ({0:d})", nums.arrayGetLength());
+    }
+  } else {
+    error(errSyntaxError, -1, "Nums object is wrong type ({0:s})", nums.getTypeName());
+  }
 }
+
+
+void StructTreeRoot::parentTreeAdd(const Ref &objectRef, StructElement *element)
+{
+  auto range = refToParentMap.equal_range(objectRef);
+  for (auto it = range.first; it !=range.second; ++it)
+    it->second->element = element;
+}

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -5,6 +5,8 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright 2013, 2014 Igalia S.L.
+// Copyright 2018 Albert Astals Cid <aacid at kde.org>
+// Copyright 2018 Adrian Johnson <ajohnson at redneon.com>
 //
 //========================================================================
 
@@ -18,6 +20,7 @@
 #include "goo/gtypes.h"
 #include "Object.h"
 #include "StructElement.h"
+#include <map>
 #include <vector>
 
 class Dict;
@@ -30,6 +33,9 @@
   StructTreeRoot(PDFDoc *docA, Dict *rootDict);
   ~StructTreeRoot();
 
+  StructTreeRoot& operator=(const StructTreeRoot &) = delete;
+  StructTreeRoot(const StructTreeRoot &) = delete;
+
   PDFDoc *getDoc() { return doc; }
   Dict *getRoleMap() { return roleMap.isDict() ? roleMap.getDict() : NULL; }
   Dict *getClassMap() { return classMap.isDict() ? classMap.getDict() : NULL; }
@@ -43,9 +49,12 @@
     }
   }
 
-  const StructElement *findParentElement(unsigned index) const {
-    if (index < parentTree.size() && parentTree[index].size() == 1) {
-      return parentTree[index][0].element;
+  const StructElement *findParentElement(int key, unsigned mcid = 0) const {
+    auto it = parentTree.find(key);
+    if (it != parentTree.end()) {
+      if (mcid < it->second.size()) {
+	return it->second[mcid].element;
+      }
     }
     return NULL;
   }
@@ -59,11 +68,9 @@
     Ref            ref;
     StructElement *element;
 
-    Parent(): element(NULL) { ref.num = ref.gen = -1; }
-    Parent(const Parent &p): element(p.element) {
-      ref.num = p.ref.num;
-      ref.gen = p.ref.gen;
-    }
+    Parent(): element(nullptr) { ref.num = ref.gen = -1; }
+    Parent(const Parent &p) = default;
+    Parent& operator=(const Parent &) = default;
     ~Parent() {}
   };
 
@@ -71,9 +78,11 @@
   Object roleMap;
   Object classMap;
   ElemPtrArray elements;
-  std::vector< std::vector<Parent> > parentTree;
+  std::map<int, std::vector<Parent> > parentTree;
+  std::multimap<Ref, Parent*, RefCompare> refToParentMap;
 
   void parse(Dict *rootDict);
+  void parseNumberTreeNode(Dict *node);
   void parentTreeAdd(const Ref &objectRef, StructElement *element);
 
   friend class StructElement;

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -20,7 +20,7 @@
 // Copyright (C) 2006 Jeff Muizelaar <jeff at infidigm.net>
 // Copyright (C) 2007, 2008, 2012, 2017 Adrian Johnson <ajohnson at redneon.com>
 // Copyright (C) 2008 Koji Otani <sho at bbr.jp>
-// Copyright (C) 2008, 2010-2012, 2014-2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2008, 2010-2012, 2014-2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2008 Pino Toscano <pino at kde.org>
 // Copyright (C) 2008, 2010 Hib Eris <hib at hiberis.nl>
 // Copyright (C) 2009 Ross Moore <ross at maths.mq.edu.au>
@@ -30,7 +30,7 @@
 // Copyright (C) 2010 Suzuki Toshiya <mpsuzuki at hiroshima-u.ac.jp>
 // Copyright (C) 2011 Sam Liao <phyomh at gmail.com>
 // Copyright (C) 2012 Horst Prote <prote at fmi.uni-stuttgart.de>
-// Copyright (C) 2012, 2013-2017 Jason Crain <jason at aquaticape.us>
+// Copyright (C) 2012, 2013-2018 Jason Crain <jason at aquaticape.us>
 // Copyright (C) 2012 Peter Breitenlohner <peb at mppmu.mpg.de>
 // Copyright (C) 2013 José Aliste <jaliste at src.gnome.org>
 // Copyright (C) 2013 Thomas Freitag <Thomas.Freitag at alfa.de>
@@ -308,7 +308,7 @@
     gfxFont->incRefCnt();
 #ifdef TEXTOUT_WORD_LIST
   fontName = (gfxFont && gfxFont->getName()) ? gfxFont->getName()->copy()
-                                             : (GooString *)NULL;
+                                             : (GooString *)nullptr;
   flags = gfxFont ? gfxFont->getFlags() : 0;
 #endif
 }
@@ -350,15 +350,15 @@
 TextWord::TextWord(GfxState *state, int rotA, double fontSizeA) {
   rot = rotA;
   fontSize = fontSizeA;
-  text = NULL;
-  charcode = NULL;
-  edge = NULL;
-  charPos = NULL;
-  font = NULL;
-  textMat = NULL;
+  text = nullptr;
+  charcode = nullptr;
+  edge = nullptr;
+  charPos = nullptr;
+  font = nullptr;
+  textMat = nullptr;
   len = size = 0;
   spaceAfter = gFalse;
-  next = NULL;
+  next = nullptr;
 
 #ifdef TEXTOUT_WORD_LIST
   GfxRGB rgb;
@@ -374,7 +374,7 @@
 #endif
 
   underlined = gFalse;
-  link = NULL;
+  link = nullptr;
 }
 
 TextWord::~TextWord() {
@@ -852,8 +852,8 @@
 TextPool::TextPool() {
   minBaseIdx = 0;
   maxBaseIdx = -1;
-  pool = NULL;
-  cursor = NULL;
+  pool = nullptr;
+  cursor = nullptr;
   cursorBaseIdx = -1;
 }
 
@@ -901,7 +901,7 @@
     pool = (TextWord **)gmallocn(maxBaseIdx - minBaseIdx + 1,
 				 sizeof(TextWord *));
     for (baseIdx = minBaseIdx; baseIdx <= maxBaseIdx; ++baseIdx) {
-      pool[baseIdx - minBaseIdx] = NULL;
+      pool[baseIdx - minBaseIdx] = nullptr;
     }
   } else if (wordBaseIdx < minBaseIdx) {
     newMinBaseIdx = wordBaseIdx - 128;
@@ -908,7 +908,7 @@
     newPool = (TextWord **)gmallocn(maxBaseIdx - newMinBaseIdx + 1,
 				    sizeof(TextWord *));
     for (baseIdx = newMinBaseIdx; baseIdx < minBaseIdx; ++baseIdx) {
-      newPool[baseIdx - newMinBaseIdx] = NULL;
+      newPool[baseIdx - newMinBaseIdx] = nullptr;
     }
     memcpy(&newPool[minBaseIdx - newMinBaseIdx], pool,
 	   (maxBaseIdx - minBaseIdx + 1) * sizeof(TextWord *));
@@ -920,7 +920,7 @@
     pool = (TextWord **)greallocn(pool, newMaxBaseIdx - minBaseIdx + 1,
 				  sizeof(TextWord *));
     for (baseIdx = maxBaseIdx + 1; baseIdx <= newMaxBaseIdx; ++baseIdx) {
-      pool[baseIdx - minBaseIdx] = NULL;
+      pool[baseIdx - minBaseIdx] = nullptr;
     }
     maxBaseIdx = newMaxBaseIdx;
   }
@@ -931,7 +931,7 @@
     w0 = cursor;
     w1 = cursor->next;
   } else {
-    w0 = NULL;
+    w0 = nullptr;
     w1 = pool[wordBaseIdx - minBaseIdx];
   }
   for (; w1 && word->primaryCmp(w1) > 0; w0 = w1, w1 = w1->next) ;
@@ -953,19 +953,19 @@
   blk = blkA;
   rot = rotA;
   base = baseA;
-  words = lastWord = NULL;
-  text = NULL;
-  edge = NULL;
-  col = NULL;
+  words = lastWord = nullptr;
+  text = nullptr;
+  edge = nullptr;
+  col = nullptr;
   len = 0;
   convertedLen = 0;
   hyphenated = gFalse;
-  next = NULL;
+  next = nullptr;
   xMin = yMin = 0;
   xMax = yMax = -1;
-  normalized = NULL;
+  normalized = nullptr;
   normalized_len = 0;
-  normalized_idx = NULL;
+  normalized_idx = nullptr;
 }
 
 TextLine::~TextLine() {
@@ -1499,10 +1499,10 @@
   priMin = 0;
   priMax = page->pageWidth;
   pool = new TextPool();
-  lines = NULL;
-  curLine = NULL;
-  next = NULL;
-  stackNext = NULL;
+  lines = nullptr;
+  curLine = nullptr;
+  next = nullptr;
+  stackNext = nullptr;
   tableId = -1;
   tableEnd = gFalse;
 }
@@ -1561,13 +1561,13 @@
       secDelta = dupMaxSecDelta * word0->fontSize;
       maxBaseIdx = pool->getBaseIdx(word0->base + secDelta);
       found = gFalse;
-      word1 = word2 = NULL; // make gcc happy
+      word1 = word2 = nullptr; // make gcc happy
       for (idx1 = idx0; idx1 <= maxBaseIdx; ++idx1) {
 	if (idx1 == idx0) {
 	  word1 = word0;
 	  word2 = word0->next;
 	} else {
-	  word1 = NULL;
+	  word1 = nullptr;
 	  word2 = pool->getPool(idx1);
 	}
 	for (; word2; word1 = word2, word2 = word2->next) {
@@ -1613,7 +1613,7 @@
   }
 
   // build the lines
-  curLine = NULL;
+  curLine = nullptr;
   poolMinBaseIdx = pool->minBaseIdx;
   charCount = 0;
   nLines = 0;
@@ -1645,7 +1645,7 @@
     // create a new line
     word0 = pool->getPool(startBaseIdx);
     pool->setPool(startBaseIdx, word0->next);
-    word0->next = NULL;
+    word0->next = nullptr;
     line = new TextLine(this, word0->rot, word0->base);
     line->addWord(word0);
     lastWord = word0;
@@ -1664,12 +1664,12 @@
       // find the left-most word whose baseline is in the range for
       // this line
       bestWordBaseIdx = 0;
-      bestWord0 = bestWord1 = NULL;
+      bestWord0 = bestWord1 = nullptr;
       overlap = gFalse;
       for (baseIdx = minBaseIdx;
 	   !overlap && baseIdx <= maxBaseIdx;
 	   ++baseIdx) {
-	for (word0 = NULL, word1 = pool->getPool(baseIdx);
+	for (word0 = nullptr, word1 = pool->getPool(baseIdx);
 	     word1;
 	     word0 = word1, word1 = word1->next) {
 	  if (word1->base >= minBase &&
@@ -1700,7 +1700,7 @@
       } else {
 	pool->setPool(bestWordBaseIdx, bestWord1->next);
       }
-      bestWord1->next = NULL;
+      bestWord1->next = nullptr;
       line->addWord(bestWord1);
       lastWord = bestWord1;
     }
@@ -1710,7 +1710,7 @@
       line0 = curLine;
       line1 = curLine->next;
     } else {
-      line0 = NULL;
+      line0 = nullptr;
       line1 = lines;
     }
     for (;
@@ -2174,7 +2174,7 @@
 			       GBool* visited) {
   const int blockCacheSize = 4;
   TextBlock *blockCache[blockCacheSize];
-  std::fill(blockCache, blockCache + blockCacheSize, (TextBlock*)NULL);
+  std::fill(blockCache, blockCache + blockCacheSize, (TextBlock*)nullptr);
   return visitDepthFirst(blkList, pos1, sorted, sortPos, visited, blockCache,
 			 blockCacheSize);
 }
@@ -2192,7 +2192,7 @@
   priMin = blk->priMin;
   priMax = blk->priMax;
   blocks = lastBlk = blk;
-  next = NULL;
+  next = nullptr;
 }
 
 TextFlow::~TextFlow() {
@@ -2326,7 +2326,7 @@
 
 TextWord *TextWordList::get(int idx) {
   if (idx < 0 || idx >= words->getLength()) {
-    return NULL;
+    return nullptr;
   }
   return (TextWord *)words->get(idx);
 }
@@ -2342,9 +2342,9 @@
 
   refCnt = 1;
   rawOrder = rawOrderA;
-  curWord = NULL;
+  curWord = nullptr;
   charPos = 0;
-  curFont = NULL;
+  curFont = nullptr;
   curFontSize = 0;
   nest = 0;
   nTinyChars = 0;
@@ -2354,10 +2354,10 @@
       pools[rot] = new TextPool();
     }
   }
-  flows = NULL;
-  blocks = NULL;
-  rawWords = NULL;
-  rawLastWord = NULL;
+  flows = nullptr;
+  blocks = nullptr;
+  rawWords = nullptr;
+  rawLastWord = nullptr;
   fonts = new GooList();
   lastFindXMin = lastFindYMin = 0;
   haveLastFind = gFalse;
@@ -2412,7 +2412,7 @@
 
   if (curWord) {
     delete curWord;
-    curWord = NULL;
+    curWord = nullptr;
   }
   if (rawOrder) {
     while (rawWords) {
@@ -2435,9 +2435,9 @@
   deleteGooList(underlines, TextUnderline);
   deleteGooList(links, TextLink);
 
-  curWord = NULL;
+  curWord = nullptr;
   charPos = 0;
-  curFont = NULL;
+  curFont = nullptr;
   curFontSize = 0;
   nest = 0;
   nTinyChars = 0;
@@ -2446,10 +2446,10 @@
       pools[rot] = new TextPool();
     }
   }
-  flows = NULL;
-  blocks = NULL;
-  rawWords = NULL;
-  rawLastWord = NULL;
+  flows = nullptr;
+  blocks = nullptr;
+  rawWords = nullptr;
+  rawLastWord = nullptr;
   fonts = new GooList();
   underlines = new GooList();
   links = new GooList();
@@ -2464,13 +2464,13 @@
   int i;
 
   // get the font info object
-  curFont = NULL;
+  curFont = nullptr;
   for (i = 0; i < fonts->getLength(); ++i) {
     curFont = (TextFontInfo *)fonts->get(i);
     if (curFont->matches(state)) {
       break;
     }
-    curFont = NULL;
+    curFont = nullptr;
   }
   if (!curFont) {
     curFont = new TextFontInfo(state);
@@ -2618,6 +2618,8 @@
   }
 
   state->getFontTransMat(&mat.m[0], &mat.m[1], &mat.m[2], &mat.m[3]);
+  mat.m[0] *= state->getHorizScaling();
+  mat.m[1] *= state->getHorizScaling();
   mat.m[4] = x1;
   mat.m[5] = y1;
 
@@ -2724,7 +2726,7 @@
 
   if (curWord) {
     addWord(curWord);
-    curWord = NULL;
+    curWord = nullptr;
   }
 }
 
@@ -2781,8 +2783,8 @@
   }
 
   uMap = globalParams->getTextEncoding();
-  blkList = NULL;
-  lastBlk = NULL;
+  blkList = nullptr;
+  lastBlk = nullptr;
   nBlocks = 0;
   primaryRot = 0;
 
@@ -2989,7 +2991,7 @@
       // create a new block
       word0 = pool->getPool(startBaseIdx);
       pool->setPool(startBaseIdx, word0->next);
-      word0->next = NULL;
+      word0->next = nullptr;
       blk = new TextBlock(this, rot);
       blk->addWord(word0);
 
@@ -3010,7 +3012,7 @@
 	for (baseIdx = pool->getBaseIdx(minBase);
 	     baseIdx >= pool->getBaseIdx(minBase - lineSpace);
 	     --baseIdx) {
-	  word0 = NULL;
+	  word0 = nullptr;
 	  word1 = pool->getPool(baseIdx);
 	  while (word1) {
 	    if (word1->base < minBase &&
@@ -3027,7 +3029,7 @@
 		pool->setPool(baseIdx, word1->next);
 	      }
 	      word1 = word1->next;
-	      word2->next = NULL;
+	      word2->next = nullptr;
 	      blk->addWord(word2);
 	      found = gTrue;
 	      newMinBase = word2->base;
@@ -3045,7 +3047,7 @@
 	for (baseIdx = pool->getBaseIdx(maxBase);
 	     baseIdx <= pool->getBaseIdx(maxBase + lineSpace);
 	     ++baseIdx) {
-	  word0 = NULL;
+	  word0 = nullptr;
 	  word1 = pool->getPool(baseIdx);
 	  while (word1) {
 	    if (word1->base > maxBase &&
@@ -3062,7 +3064,7 @@
 		pool->setPool(baseIdx, word1->next);
 	      }
 	      word1 = word1->next;
-	      word2->next = NULL;
+	      word2->next = nullptr;
 	      blk->addWord(word2);
 	      found = gTrue;
 	      newMaxBase = word2->base;
@@ -3079,7 +3081,7 @@
 	for (baseIdx = pool->getBaseIdx(minBase - intraLineSpace);
 	     baseIdx <= pool->getBaseIdx(maxBase + intraLineSpace);
 	     ++baseIdx) {
-	  word0 = NULL;
+	  word0 = nullptr;
 	  word1 = pool->getPool(baseIdx);
 	  while (word1) {
 	    if (word1->base >= minBase - intraLineSpace &&
@@ -3098,7 +3100,7 @@
 		pool->setPool(baseIdx, word1->next);
 	      }
 	      word1 = word1->next;
-	      word2->next = NULL;
+	      word2->next = nullptr;
 	      blk->addWord(word2);
 	      found = gTrue;
 	    } else {
@@ -3142,7 +3144,7 @@
 	  for (baseIdx = pool->getBaseIdx(minBase - intraLineSpace);
 	       baseIdx <= pool->getBaseIdx(maxBase + intraLineSpace);
 	       ++baseIdx) {
-	    word0 = NULL;
+	    word0 = nullptr;
 	    word1 = pool->getPool(baseIdx);
 	    while (word1) {
 	      if (word1->base >= minBase - intraLineSpace &&
@@ -3161,7 +3163,7 @@
 		  pool->setPool(baseIdx, word1->next);
 		}
 		word1 = word1->next;
-		word2->next = NULL;
+		word2->next = nullptr;
 		blk->addWord(word2);
 		if (word2->base < minBase) {
 		  minBase = word2->base;
@@ -3206,7 +3208,7 @@
 	  for (baseIdx = pool->getBaseIdx(minBase - intraLineSpace);
 	       baseIdx <= pool->getBaseIdx(maxBase + intraLineSpace);
 	       ++baseIdx) {
-	    word0 = NULL;
+	    word0 = nullptr;
 	    word1 = pool->getPool(baseIdx);
 	    while (word1) {
 	      if (word1->base >= minBase - intraLineSpace &&
@@ -3225,7 +3227,7 @@
 		  pool->setPool(baseIdx, word1->next);
 		}
 		word1 = word1->next;
-		word2->next = NULL;
+		word2->next = nullptr;
 		blk->addWord(word2);
 		if (word2->base < minBase) {
 		  minBase = word2->base;
@@ -3358,7 +3360,9 @@
     for (blk = blkList, i = 0; blk; blk = blk->next, ++i) {
       blocks[i] = blk;
     }
-    qsort(blocks, nBlocks, sizeof(TextBlock *), &TextBlock::cmpXYPrimaryRot);
+    if (blocks) {
+      qsort(blocks, nBlocks, sizeof(TextBlock *), &TextBlock::cmpXYPrimaryRot);
+    }
 
     // column assignment
     for (i = 0; i < nBlocks; ++i) {
@@ -3479,7 +3483,7 @@
   double xCentre1, yCentre1, xCentre2, yCentre2;
   double xCentre3, yCentre3, xCentre4, yCentre4;
   double deltaX, deltaY;
-  TextBlock *fblk2 = NULL, *fblk3 = NULL, *fblk4 = NULL;
+  TextBlock *fblk2 = nullptr, *fblk3 = nullptr, *fblk4 = nullptr;
 
   for (blk1 = blkList; blk1; blk1 = blk1->next) {
     blk1->ExMin = blk1->xMin;
@@ -3492,9 +3496,9 @@
     bxMin1 = DBL_MAX;
     byMin1 = DBL_MAX;
 
-    fblk2 = NULL;
-    fblk3 = NULL;
-    fblk4 = NULL;
+    fblk2 = nullptr;
+    fblk3 = nullptr;
+    fblk4 = nullptr;
 
     /*  find fblk2, fblk3 and fblk4 so that
      *  fblk2 is on the right of blk1 and overlap with blk1 in y axis
@@ -3531,9 +3535,9 @@
      *  fblk2 can not overlap with fblk3 in x and y
      *  fblk4 has to overlap with fblk3 in y and with fblk2 in x
      */
-    if (fblk2 != NULL &&
-        fblk3 != NULL &&
-        fblk4 != NULL) {
+    if (fblk2 != nullptr &&
+        fblk3 != nullptr &&
+        fblk4 != nullptr) {
       if (((fblk3->xMin <= fblk4->xMax && fblk3->xMax >= fblk4->xMin) ||
            (fblk2->yMin <= fblk4->yMax && fblk2->yMax >= fblk4->yMin) ||
            (fblk2->xMin <= fblk3->xMax && fblk2->xMax >= fblk3->xMin) ||
@@ -3540,16 +3544,16 @@
            (fblk2->yMin <= fblk3->yMax && fblk2->yMax >= fblk3->yMin)) ||
           !(fblk4->xMin <= fblk2->xMax && fblk4->xMax >= fblk2->xMin &&
             fblk4->yMin <= fblk3->yMax && fblk4->yMax >= fblk3->yMin)) {
-        fblk2 = NULL;
-        fblk3 = NULL;
-        fblk4 = NULL;
+        fblk2 = nullptr;
+        fblk3 = nullptr;
+        fblk4 = nullptr;
       }
     }
 
     // if we found any then look whether they form a table
-    if (fblk2 != NULL &&
-        fblk3 != NULL &&
-        fblk4 != NULL) {
+    if (fblk2 != nullptr &&
+        fblk3 != nullptr &&
+        fblk4 != nullptr) {
       tableId = -1;
       correspondenceX = 0;
       correspondenceY = 0;
@@ -3772,13 +3776,13 @@
     flows = flows->next;
     delete flow;
   }
-  flow = NULL;
-  flows = lastFlow = NULL;
+  flow = nullptr;
+  flows = lastFlow = nullptr;
   // assume blocks are already in reading order,
   // and construct flows accordingly.
   for (i = 0; i < nBlocks; i++) {
     blk = blocks[i];
-    blk->next = NULL;
+    blk->next = nullptr;
     if (flow) {
       blk1 = blocks[i - 1];
       blkSpace = maxBlockSpacing * blk1->lines->words->fontSize;
@@ -3854,10 +3858,10 @@
 
   // handle right-to-left text
   reordered = (Unicode*)gmallocn(len, sizeof(Unicode));
-  reorderText(s, len, NULL, primaryLR, NULL, reordered);
+  reorderText(s, len, nullptr, primaryLR, nullptr, reordered);
 
   // normalize the search string
-  s2 = unicodeNormalizeNFKC(reordered, len, &len, NULL);
+  s2 = unicodeNormalizeNFKC(reordered, len, &len, nullptr);
 
   // convert the search string to uppercase
   if (!caseSensitive) {
@@ -3866,7 +3870,7 @@
     }
   }
 
-  txt = NULL;
+  txt = nullptr;
   txtSize = 0;
 
   xStart = yStart = xStop = yStop = 0;
@@ -4301,6 +4305,8 @@
 public:
   TextSelectionVisitor (TextPage *page);
   virtual ~TextSelectionVisitor () { }
+  TextSelectionVisitor(const TextSelectionVisitor &) = delete;
+  TextSelectionVisitor& operator=(const TextSelectionVisitor &) = delete;
   virtual void visitBlock (TextBlock *block,
 			   TextLine *begin,
 			   TextLine *end,
@@ -4366,8 +4372,8 @@
   nLines = 0;
 
   tableId = -1;
-  currentBlock = NULL;
-  words = NULL;
+  currentBlock = nullptr;
+  words = nullptr;
 }
 
 TextSelectionDumper::~TextSelectionDumper()
@@ -4394,7 +4400,7 @@
     lines[nLines++] = words;
   else if (words)
     delete words;
-  words = NULL;
+  words = nullptr;
 }
 
 void TextSelectionDumper::visitLine (TextLine *line,
@@ -4412,7 +4418,7 @@
     finishLine();
 
     tableId = -1;
-    currentBlock = NULL;
+    currentBlock = nullptr;
   }
 
   if (frag.line->blk->tableId >= 0) { // a table
@@ -4485,10 +4491,10 @@
 
   *nLinesOut = nLines;
   if (nLines == 0)
-    return NULL;
+    return nullptr;
 
   nLines = 0;
-  lines = NULL;
+  lines = nullptr;
 
   return returnValue;
 }
@@ -4600,7 +4606,7 @@
   state->getCTM(&ctm);
   ctm.invertTo(&ictm);
 
-  out->startPage(0, state, NULL);
+  out->startPage(0, state, nullptr);
   out->setDefaultCTM (state->getCTM());
 
   state->setFillColorSpace(new GfxDeviceRGBColorSpace());
@@ -4696,7 +4702,7 @@
           continue;
 
 	out->drawChar(state, sel->word->textMat[i].m[4], sel->word->textMat[i].m[5], 0, 0, 0, 0,
-		      sel->word->charcode[i], 1, NULL, 0);
+		      sel->word->charcode[i], 1, nullptr, 0);
       }
       out->endString(state);
       delete string;
@@ -4740,18 +4746,18 @@
   int i, edge_begin, edge_end;
   PDFRectangle child_selection;
 
-  begin = NULL;
-  end = NULL;
-  current = NULL;
-  for (p = words; p != NULL; p = p->next) {
+  begin = nullptr;
+  end = nullptr;
+  current = nullptr;
+  for (p = words; p != nullptr; p = p->next) {
     if (blk->page->primaryLR) {
       if ((selection->x1 < p->xMax) ||
 	  (selection->x2 < p->xMax))
-        if (begin == NULL) 
+        if (begin == nullptr) 
 	  begin = p;
 
       if (((selection->x1 > p->xMin) ||
-	   (selection->x2 > p->xMin)) && (begin != NULL)) {
+	   (selection->x2 > p->xMin)) && (begin != nullptr)) {
         end = p->next;
         current = p;
       }
@@ -4758,11 +4764,11 @@
     } else {
       if ((selection->x1 > p->xMin) ||
 	  (selection->x2 > p->xMin))
-        if (begin == NULL) 
+        if (begin == nullptr) 
 	  begin = p;
 
       if (((selection->x1 < p->xMax) ||
-	   (selection->x2 < p->xMax)) && (begin != NULL)) {
+	   (selection->x2 < p->xMax)) && (begin != nullptr)) {
         end = p->next;
         current = p;
       }
@@ -4829,7 +4835,7 @@
 	best_line[i] = this->lines;
 	best_count[i] = 1;
       } else {
-	best_line[i] = NULL;
+	best_line[i] = nullptr;
 	best_count[i] = 0;
       }
     } else {
@@ -4838,7 +4844,7 @@
 	best_line[i] = this->lines;
 	best_count[i] = 1;
       } else {
-	best_line[i] = NULL;
+	best_line[i] = nullptr;
 	best_count[i] = 0;
       }
     }
@@ -4941,8 +4947,8 @@
   yMax = 0.0;
 
   for (i = 0; i < 2; i++) {
-    best_block[i] = NULL;
-    best_flow[i] = NULL;
+    best_block[i] = nullptr;
+    best_flow[i] = nullptr;
     best_count[i] = 0;
     best_d[i] = 0;
   }
@@ -5455,7 +5461,7 @@
 int TextPage::dumpFragment(Unicode *text, int len, UnicodeMap *uMap,
 			   GooString *s) {
   if (uMap->isUnicode()) {
-    return reorderText(text, len, uMap, primaryLR, s, NULL);
+    return reorderText(text, len, uMap, primaryLR, s, nullptr);
   } else {
     int nCols = 0;
 
@@ -5484,7 +5490,7 @@
 ActualText::ActualText(TextPage *out) {
   out->incRefCnt();
   text = out;
-  actualText = NULL;
+  actualText = nullptr;
   actualTextNBytes = 0;
 }
 
@@ -5524,7 +5530,7 @@
   // extents of all the glyphs inside the span
 
   if (actualTextNBytes) {
-    Unicode *uni = NULL;
+    Unicode *uni = nullptr;
     int length;
 
     // now that we have the position info for all of the text inside
@@ -5538,7 +5544,7 @@
   }
 
   delete actualText;
-  actualText = NULL;
+  actualText = nullptr;
   actualTextNBytes = 0;
 }
 
@@ -5553,7 +5559,7 @@
 TextOutputDev::TextOutputDev(char *fileName, GBool physLayoutA,
 			     double fixedPitchA, GBool rawOrderA,
 			     GBool append) {
-  text = NULL;
+  text = nullptr;
   physLayout = physLayoutA;
   fixedPitch = physLayout ? fixedPitchA : 0;
   rawOrder = rawOrderA;
@@ -5574,12 +5580,12 @@
     } else {
       error(errIO, -1, "Couldn't open text file '{0:s}'", fileName);
       ok = gFalse;
-      actualText = NULL;
+      actualText = nullptr;
       return;
     }
     outputFunc = &TextOutputDev_outputToFile;
   } else {
-    outputStream = NULL;
+    outputStream = nullptr;
   }
 
   // set up text object

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -17,7 +17,7 @@
 // Copyright (C) 2006 Ed Catmur <ed at catmur.co.uk>
 // Copyright (C) 2007, 2008, 2011, 2013 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2007, 2017 Adrian Johnson <ajohnson at redneon.com>
-// Copyright (C) 2008, 2010, 2015, 2016 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2008, 2010, 2015, 2016, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2010 Brian Ewins <brian.ewins at gmail.com>
 // Copyright (C) 2012, 2013, 2015, 2016 Jason Crain <jason at aquaticape.us>
 // Copyright (C) 2013 Thomas Freitag <Thomas.Freitag at alfa.de>
@@ -79,6 +79,9 @@
   TextFontInfo(GfxState *state);
   ~TextFontInfo();
 
+  TextFontInfo(const TextFontInfo &) = delete;
+  TextFontInfo& operator=(const TextFontInfo &) = delete;
+
   GBool matches(GfxState *state);
   GBool matches(TextFontInfo *fontInfo);
 
@@ -129,6 +132,9 @@
   // Destructor.
   ~TextWord();
 
+  TextWord(const TextWord &) = delete;
+  TextWord& operator=(const TextWord &) = delete;
+
   // Add a character to the word.
   void addChar(GfxState *state, TextFontInfo *fontA, double x, double y,
 	       double dx, double dy, int charPosA, int charLen,
@@ -244,6 +250,9 @@
   TextPool();
   ~TextPool();
 
+  TextPool(const TextPool &) = delete;
+  TextPool& operator=(const TextPool &) = delete;
+
   TextWord *getPool(int baseIdx) { return pool[baseIdx - minBaseIdx]; }
   void setPool(int baseIdx, TextWord *p) { pool[baseIdx - minBaseIdx] = p; }
 
@@ -276,6 +285,9 @@
   TextLine(TextBlock *blkA, int rotA, double baseA);
   ~TextLine();
 
+  TextLine(const TextLine &) = delete;
+  TextLine& operator=(const TextLine &) = delete;
+
   void addWord(TextWord *word);
 
   // Return the distance along the primary axis between <this> and
@@ -353,6 +365,9 @@
   TextBlock(TextPage *pageA, int rotA);
   ~TextBlock();
 
+  TextBlock(const TextBlock &) = delete;
+  TextBlock& operator=(const TextBlock &) = delete;
+
   void addWord(TextWord *word);
 
   void coalesce(UnicodeMap *uMap, double fixedPitch);
@@ -442,6 +457,9 @@
   TextFlow(TextPage *pageA, TextBlock *blk);
   ~TextFlow();
 
+  TextFlow(const TextFlow &) = delete;
+  TextFlow& operator=(const TextFlow &) = delete;
+
   // Add a block to the end of this flow.
   void addBlock(TextBlock *blk);
 
@@ -488,6 +506,9 @@
 
   ~TextWordList();
 
+  TextWordList(const TextWordList &) = delete;
+  TextWordList& operator=(const TextWordList &) = delete;
+
   // Return the number of words on the list.
   int getLength();
 
@@ -503,8 +524,8 @@
 
 class TextWordSelection {
 public:
-  TextWordSelection(TextWord *word, int begin, int end)
-    : word(word), begin(begin), end(end)
+  TextWordSelection(TextWord *wordA, int beginA, int endA)
+    : word(wordA), begin(beginA), end(endA)
   {
   }
 
@@ -531,6 +552,9 @@
   // Constructor.
   TextPage(GBool rawOrderA);
 
+  TextPage(const TextPage &) = delete;
+  TextPage& operator=(const TextPage &) = delete;
+
   void incRefCnt();
   void decRefCnt();
 
@@ -702,6 +726,9 @@
   ActualText(TextPage *out);
   ~ActualText();
 
+  ActualText(const ActualText &) = delete;
+  ActualText& operator=(const ActualText &) = delete;
+
   void addChar(GfxState *state, double x, double y,
 	       double dx, double dy,
 	       CharCode c, int nBytes, Unicode *u, int uLen);

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/UTF.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/UTF.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/UTF.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -16,7 +16,7 @@
 // Copyright (C) 2008 Koji Otani <sho at bbr.jp>
 // Copyright (C) 2012, 2017 Adrian Johnson <ajohnson at redneon.com>
 // Copyright (C) 2012 Hib Eris <hib at hiberis.nl>
-// Copyright (C) 2016 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2016, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2016 Jason Crain <jason at aquaticape.us>
 //
 // To see a description of the changes please see the Changelog file that
@@ -52,7 +52,7 @@
     }
     len++;
   }
-  if (ucs4 == NULL)
+  if (ucs4 == nullptr)
     return len;
 
   u = (Unicode*)gmallocn(len, sizeof(Unicode));
@@ -94,7 +94,7 @@
   len = textStr->getLength();
   s = textStr->getCString();
   if (len == 0) {
-    *ucs4 = 0;
+    *ucs4 = nullptr;
     return 0;
   }
 
@@ -109,7 +109,7 @@
       len = UTF16toUCS4(utf16, len, &u);
       delete[] utf16;
     } else {
-      u = NULL;
+      u = nullptr;
     }
   } else {
     u = (Unicode*)gmallocn(len, sizeof(Unicode));
@@ -331,7 +331,7 @@
 // UTF-8 (excluding terminating NULL).
 int utf16CountUtf8Bytes(const uint16_t *utf16)
 {
-    uint32_t codepoint;
+    uint32_t codepoint = 0;
     uint32_t state = 0;
     int count = 0;
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -67,7 +67,7 @@
     error(errSyntaxError, -1,
 	  "Couldn't find unicodeMap file for the '{0:t}' encoding",
 	  encodingNameA);
-    return NULL;
+    return nullptr;
   }
 
   map = new UnicodeMap(encodingNameA->copy());
@@ -79,8 +79,8 @@
   line = 1;
   while (getLine(buf, sizeof(buf), f)) {
     if ((tok1 = strtok_r(buf, " \t\r\n", &tokptr)) &&
-	(tok2 = strtok_r(NULL, " \t\r\n", &tokptr))) {
-      if (!(tok3 = strtok_r(NULL, " \t\r\n", &tokptr))) {
+	(tok2 = strtok_r(nullptr, " \t\r\n", &tokptr))) {
+      if (!(tok3 = strtok_r(nullptr, " \t\r\n", &tokptr))) {
 	tok3 = tok2;
 	tok2 = tok1;
       }
@@ -134,9 +134,9 @@
   encodingName = encodingNameA;
   unicodeOut = gFalse;
   kind = unicodeMapUser;
-  ranges = NULL;
+  ranges = nullptr;
   len = 0;
-  eMaps = NULL;
+  eMaps = nullptr;
   eMapsLen = 0;
   refCnt = 1;
 #ifdef MULTITHREADED
@@ -151,7 +151,7 @@
   kind = unicodeMapResident;
   ranges = rangesA;
   len = lenA;
-  eMaps = NULL;
+  eMaps = nullptr;
   eMapsLen = 0;
   refCnt = 1;
 #ifdef MULTITHREADED
@@ -165,7 +165,7 @@
   unicodeOut = unicodeOutA;
   kind = unicodeMapFunc;
   func = funcA;
-  eMaps = NULL;
+  eMaps = nullptr;
   eMapsLen = 0;
   refCnt = 1;
 #ifdef MULTITHREADED
@@ -268,7 +268,7 @@
   int i;
 
   for (i = 0; i < unicodeMapCacheSize; ++i) {
-    cache[i] = NULL;
+    cache[i] = nullptr;
   }
 }
 
@@ -312,5 +312,5 @@
     map->incRefCnt();
     return map;
   }
-  return NULL;
+  return nullptr;
 }

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -16,6 +16,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2017 Adrian Johnson <ajohnson at redneon.com>
+// Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -76,6 +77,9 @@
 
   ~UnicodeMap();
 
+  UnicodeMap(const UnicodeMap &) = delete;
+  UnicodeMap& operator=(const UnicodeMap &) = delete;
+
   void incRefCnt();
   void decRefCnt();
 
@@ -123,6 +127,9 @@
   UnicodeMapCache();
   ~UnicodeMapCache();
 
+  UnicodeMapCache(const UnicodeMapCache &) = delete;
+  UnicodeMapCache& operator=(const UnicodeMapCache &) = delete;
+
   // Get the UnicodeMap for <encodingName>.  Increments its reference
   // count; there will be one reference for the cache plus one for the
   // caller of this function.  Returns NULL on failure.

Added: trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.cc	                        (rev 0)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -0,0 +1,88 @@
+//========================================================================
+//
+// UnicodeMapFuncs.cc
+//
+// Copyright 2001-2003 Glyph & Cog, LLC
+//
+//========================================================================
+
+//========================================================================
+//
+// Modified under the Poppler project - http://poppler.freedesktop.org
+//
+// All changes made under the Poppler project to this file are licensed
+// under GPL version 2 or later
+//
+// Copyright (C) 2008 Koji Otani <sho at bbr.jp>
+// Copyright (C) 2017 Adrian Johnson <ajohnson at redneon.com>
+// Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
+//
+// To see a description of the changes please see the Changelog file that
+// came with your tarball or type make ChangeLog if you are building from git
+//
+//========================================================================
+
+#include "UnicodeMapFuncs.h"
+
+int mapUTF8(Unicode u, char *buf, int bufSize) {
+  if (u <= 0x0000007f) {
+    if (bufSize < 1) {
+      return 0;
+    }
+    buf[0] = (char)u;
+    return 1;
+  } else if (u <= 0x000007ff) {
+    if (bufSize < 2) {
+      return 0;
+    }
+    buf[0] = (char)(0xc0 + (u >> 6));
+    buf[1] = (char)(0x80 + (u & 0x3f));
+    return 2;
+  } else if (u <= 0x0000ffff) {
+    if (bufSize < 3) {
+      return 0;
+    }
+    buf[0] = (char)(0xe0 + (u >> 12));
+    buf[1] = (char)(0x80 + ((u >> 6) & 0x3f));
+    buf[2] = (char)(0x80 + (u & 0x3f));
+    return 3;
+  } else if (u <= 0x0010ffff) {
+    if (bufSize < 4) {
+      return 0;
+    }
+    buf[0] = (char)(0xf0 + (u >> 18));
+    buf[1] = (char)(0x80 + ((u >> 12) & 0x3f));
+    buf[2] = (char)(0x80 + ((u >> 6) & 0x3f));
+    buf[3] = (char)(0x80 + (u & 0x3f));
+    return 4;
+  } else {
+    return 0;
+  }
+}
+
+int mapUTF16(Unicode u, char *buf, int bufSize) {
+  if (u <= 0xffff) {
+    if (bufSize < 2) {
+      return 0;
+    }
+    buf[0] = (char)((u >> 8) & 0xff);
+    buf[1] = (char)(u & 0xff);
+    return 2;
+  } else if (u < 0x110000) {
+    Unicode uu;
+
+    /* using surrogate pair */
+    if (bufSize < 4) {
+      return 0;
+    }
+    uu = ((u - 0x10000) >> 10) + 0xd800;
+    buf[0] = (char)((uu >> 8) & 0xff);
+    buf[1] = (char)(uu & 0xff);
+    uu = (u & 0x3ff)+0xdc00;
+    buf[2] = (char)((uu >> 8) & 0xff);
+    buf[3] = (char)(uu & 0xff);
+    return 4;
+  } else {
+    return 0;
+  }
+}

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -15,6 +15,7 @@
 //
 // Copyright (C) 2008 Koji Otani <sho at bbr.jp>
 // Copyright (C) 2017 Adrian Johnson <ajohnson at redneon.com>
+// Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -21,65 +22,8 @@
 //
 //========================================================================
 
-static int mapUTF8(Unicode u, char *buf, int bufSize) {
-  if (u <= 0x0000007f) {
-    if (bufSize < 1) {
-      return 0;
-    }
-    buf[0] = (char)u;
-    return 1;
-  } else if (u <= 0x000007ff) {
-    if (bufSize < 2) {
-      return 0;
-    }
-    buf[0] = (char)(0xc0 + (u >> 6));
-    buf[1] = (char)(0x80 + (u & 0x3f));
-    return 2;
-  } else if (u <= 0x0000ffff) {
-    if (bufSize < 3) {
-      return 0;
-    }
-    buf[0] = (char)(0xe0 + (u >> 12));
-    buf[1] = (char)(0x80 + ((u >> 6) & 0x3f));
-    buf[2] = (char)(0x80 + (u & 0x3f));
-    return 3;
-  } else if (u <= 0x0010ffff) {
-    if (bufSize < 4) {
-      return 0;
-    }
-    buf[0] = (char)(0xf0 + (u >> 18));
-    buf[1] = (char)(0x80 + ((u >> 12) & 0x3f));
-    buf[2] = (char)(0x80 + ((u >> 6) & 0x3f));
-    buf[3] = (char)(0x80 + (u & 0x3f));
-    return 4;
-  } else {
-    return 0;
-  }
-}
+#include "UTF.h"
 
-static int mapUTF16(Unicode u, char *buf, int bufSize) {
-  if (u <= 0xffff) {
-    if (bufSize < 2) {
-      return 0;
-    }
-    buf[0] = (char)((u >> 8) & 0xff);
-    buf[1] = (char)(u & 0xff);
-    return 2;
-  } else if (u < 0x110000) {
-    Unicode uu;
+int mapUTF8(Unicode u, char *buf, int bufSize);
 
-    /* using surrogate pair */
-    if (bufSize < 4) {
-      return 0;
-    }
-    uu = ((u - 0x10000) >> 10) + 0xd800;
-    buf[0] = (char)((uu >> 8) & 0xff);
-    buf[1] = (char)(uu & 0xff);
-    uu = (u & 0x3ff)+0xdc00;
-    buf[2] = (char)((uu >> 8) & 0xff);
-    buf[3] = (char)(uu & 0xff);
-    return 4;
-  } else {
-    return 0;
-  }
-}
+int mapUTF16(Unicode u, char *buf, int bufSize);

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeTypeTable.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeTypeTable.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/UnicodeTypeTable.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -40,7 +40,7 @@
 
 static const UnicodeMapTableEntry typeTable[256] = {
   { "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN###NNNNN################NNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#N####NNNNLNNNNN####NLNNN#LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLL", 'X' },
-  { NULL, 'L' },
+  { nullptr, 'L' },
   { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLNNNNNNNNNNNNNNLLNNNNNNNNNNNNNNLLLLLNNNNNNNNNLNNNNNNNNNNNNNNNNN", 'X' },
   { "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLNNNNNNNNNNNLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLL", 'X' },
   { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' },
@@ -47,7 +47,7 @@
   { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRNRNNRNRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR", 'X' },
   { "RRRR#########RNNNNNNNNRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRNNNNNNNNNNNNNN####################RRRNRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRNNNNNNNRNNNNNNNRRNNNNNNNRR##########RRRRRR", 'X' },
   { "RRRRRRRRRRRRRRNNRNRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRNNNNNNNNNNNNNNNNNNNNNNNNNNNRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRNNNNNNNNNNNRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 'X' },
-  { NULL, 'N' },
+  { nullptr, 'N' },
   { "NNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNLLLLNNNNNNNNLLLLNLLLNNNNLLLLLLLLLLLLLNNLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNLLLLNNNNLLLLLLLLNLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLL##LLLLLLLNNNNN", 'X' },
   { "NNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNLLLLNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNLLLLNNNNNNNNLLLLNLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLL##NNNNNNNNNNNNNN", 'X' },
   { "NNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNLLNLNNNLLLLLLLLLNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNN#NLLLLL", 'X' },
@@ -56,20 +56,20 @@
   { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLNNNNNNN#####LLLLLLLNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLNNNNNNNNNLLLLLLLLLLNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' },
   { "LLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLLLLLLLLLLLLLLLNLNLNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNLNNNNNLNNLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' },
   { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNLNNNNNNLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
   { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' },
   { "LLLLLLLLLLLLLLLLLLNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNLLLLLLLLNLLNNNNNNNNNNNLLLLLLL#LNLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNN", 'X' },
   { "NNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' },
   { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLNNNNNLLLLLLNLLLLLLNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 'X' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
   { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLNNNLLLLLLLLLLLNNNLLLLLLLLLLLLNNNNLLLLLLLLLLLLLNNNLLLLLLLLLLLLLNNN", 'X' },
   { "NNNNNNNNNNNNNNLRNNNNNNNNNNNNNNNNNNNNNNNNNNLRNLRN#####NNNNNNNNNNNNNNN#NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#L##########NNNL############NNN###################################NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 'X' },
   { "NNLNNNNLNNLLLLLLLLLLNLNNNLLLLLNNNNNNLNLNLNLLLL#LLLNLLLLLLLNNLLLLNNNNNLLLLLNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 'X' },
@@ -76,222 +76,222 @@
   { "NNNNNNNNNNNNNNNNNN##NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 'X' },
   { "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 'X' },
   { "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN####################LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNN", 'X' },
-  { NULL, 'N' },
-  { NULL, 'N' },
-  { NULL, 'N' },
-  { NULL, 'L' },
-  { NULL, 'N' },
-  { NULL, 'N' },
-  { NULL, 'N' },
-  { NULL, 'N' },
-  { NULL, 'N' },
-  { NULL, 'N' },
-  { NULL, 'N' },
+  { nullptr, 'N' },
+  { nullptr, 'N' },
+  { nullptr, 'N' },
+  { nullptr, 'L' },
+  { nullptr, 'N' },
+  { nullptr, 'N' },
+  { nullptr, 'N' },
+  { nullptr, 'N' },
+  { nullptr, 'N' },
+  { nullptr, 'N' },
+  { nullptr, 'N' },
   { "NNNNNLLLNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLNNNNNNNLLLLLNNLLLLLNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLLL", 'X' },
-  { NULL, 'L' },
+  { nullptr, 'L' },
   { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNLLLLLLLLLLLLNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' },
   { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN", 'X' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
   { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 'X' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
   { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
-  { NULL, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
+  { nullptr, 'L' },
   { "LLLLLLLLLLLLLLLLLLLLLLLLRRRRRRNRRRRRRRRRR#RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR", 'X' },
-  { NULL, 'R' },
+  { nullptr, 'R' },
   { "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRNNRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRNNN", 'X' },
   { "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#N#NN#NNNNNNNNN#NN##NNNNN##NRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRNNN", 'X' },
   { "NNN###NNNNN################NNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#####NNN##NNNNNNNNNNNNNNNNNNNNNNNLL", 'X' }
@@ -678,255 +678,255 @@
   &caseTable03,
   &caseTable04,
   &caseTable05,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   &caseTable1e,
   &caseTable1f,
-  NULL,
+  nullptr,
   &caseTable21,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
   &caseTable24,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
+  nullptr,
   &caseTableff
 };
 
@@ -1143,13 +1143,13 @@
 			      int *out_len, int **indices,
 			      GBool reverseRTL) {
   Unicode *out;
-  int i, o, *classes, *idx = NULL;
+  int i, o, *classes, *idx = nullptr;
 
   for (i = 0, o = 0; i < len; ++i) {
     if (HANGUL_IS_L(in[i]) || HANGUL_IS_SYLLABLE(in[i])) {
       o += 1;
     } else
-      o += decomp_compat(in[i], NULL);
+      o += decomp_compat(in[i], nullptr);
   }
   
   out = (Unicode *) gmallocn(o, sizeof(Unicode));

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/XRef.cc
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/XRef.cc	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/XRef.cc	2018-03-18 21:59:37 UTC (rev 47014)
@@ -15,7 +15,7 @@
 //
 // Copyright (C) 2005 Dan Sheridan <dan.sheridan at postman.org.uk>
 // Copyright (C) 2005 Brad Hards <bradh at frogmouth.net>
-// Copyright (C) 2006, 2008, 2010, 2012-2014, 2016, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2006, 2008, 2010, 2012-2014, 2016-2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2007-2008 Julien Rebetez <julienr at svn.gnome.org>
 // Copyright (C) 2007 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2009, 2010 Ilya Gorenbein <igorenbein at finjan.com>
@@ -95,6 +95,9 @@
 
   ~ObjectStream();
 
+  ObjectStream(const ObjectStream &) = delete;
+  ObjectStream& operator=(const ObjectStream &) = delete;
+
   // Return the object number of this object stream.
   int getObjStrNum() { return objStrNum; }
 
@@ -152,8 +155,8 @@
 
   objStrNum = objStrNumA;
   nObjects = 0;
-  objs = NULL;
-  objNums = NULL;
+  objs = nullptr;
+  objNums = nullptr;
   ok = gFalse;
 
   objStr = xref->fetch(objStrNum, 0, recursion);
@@ -267,11 +270,11 @@
 #endif
   ok = gTrue;
   errCode = errNone;
-  entries = NULL;
+  entries = nullptr;
   capacity = 0;
   size = 0;
   modified = gFalse;
-  streamEnds = NULL;
+  streamEnds = nullptr;
   streamEndsLen = 0;
   objStrs = new PopplerCache(5);
   mainXRefEntriesOffset = 0;
@@ -326,7 +329,7 @@
     // read the xref table
     } else {
       std::vector<Goffset> followedXRefStm;
-      readXRef(&prevXRefOffset, &followedXRefStm, NULL);
+      readXRef(&prevXRefOffset, &followedXRefStm, nullptr);
 
       // if there was a problem with the xref table,
       // try to reconstruct it
@@ -418,7 +421,7 @@
   if (xref->reserve(size) == 0) {
     error(errSyntaxError, -1, "unable to allocate {0:d} entries", size);
     delete xref;
-    return NULL;
+    return nullptr;
   }
   xref->size = size;
   for (int i = 0; i < size; ++i) {
@@ -452,7 +455,7 @@
     }
 
     void *p = greallocn_checkoverflow(entries, realNewSize, sizeof(XRefEntry));
-    if (p == NULL) {
+    if (p == nullptr) {
       return 0;
     }
 
@@ -507,8 +510,8 @@
   GBool more;
 
   // start up a parser, parse one token
-  parser = new Parser(NULL,
-	     new Lexer(NULL,
+  parser = new Parser(nullptr,
+	     new Lexer(nullptr,
 	       str->makeSubStream(start + *pos, gFalse, 0, Object(objNull))),
 	     gTrue);
   obj = parser->getObj(gTrue);
@@ -555,7 +558,7 @@
   GBool more;
   Object obj, obj2;
   Goffset pos2;
-  int first, n, i;
+  int first, n;
 
   while (1) {
     obj = parser->getObj(gTrue);
@@ -580,7 +583,7 @@
         goto err0;
       }
     }
-    for (i = first; i < first + n; ++i) {
+    for (int i = first; i < first + n; ++i) {
       obj = parser->getObj(gTrue);
       if (obj.isInt()) {
 	entry.offset = obj.getInt();
@@ -624,6 +627,7 @@
 	  entries[0].obj = std::move(entries[1].obj);
 
 	  entries[1].offset = -1;
+	  entries[1].obj.setToNull();
 	}
       }
     }
@@ -866,7 +870,7 @@
   int streamEndsSize;
   char *p;
   GBool gotRoot;
-  char* token = NULL;
+  char* token = nullptr;
   bool oneCycle = true;
   int offset = 0;
 
@@ -874,7 +878,7 @@
   gfree(entries);
   capacity = 0;
   size = 0;
-  entries = NULL;
+  entries = nullptr;
 
   gotRoot = gFalse;
   streamEndsLen = streamEndsSize = 0;
@@ -909,8 +913,8 @@
 
       // got trailer dictionary
       if (!strncmp(p, "trailer", 7)) {
-        parser = new Parser(NULL,
-		 new Lexer(NULL,
+        parser = new Parser(nullptr,
+		 new Lexer(nullptr,
 		   str->makeSubStream(pos + 7, gFalse, 0, Object(objNull))),
 		 gFalse);
         Object newTrailerDict = parser->getObj();
@@ -1047,7 +1051,7 @@
     *keyLengthA = keyLength;
   } else {
     // null encryption parameters
-    *fileKeyA = NULL;
+    *fileKeyA = nullptr;
     *encAlgorithmA = cryptRC4;
     *keyLengthA = 0;
   }
@@ -1167,7 +1171,7 @@
       delete parser;
       goto err;
     }
-    Object obj = parser->getObj(gFalse, (encrypted && !e->getFlag(XRefEntry::Unencrypted)) ? fileKey : NULL,
+    Object obj = parser->getObj(gFalse, (encrypted && !e->getFlag(XRefEntry::Unencrypted)) ? fileKey : nullptr,
 		   encAlgorithm, keyLength, num, gen, recursion);
     delete parser;
     return obj;
@@ -1186,7 +1190,7 @@
       goto err;
     }
 
-    ObjectStream *objStr = NULL;
+    ObjectStream *objStr = nullptr;
     ObjectStreamKey key(e->offset);
     PopplerCacheItem *item = objStrs->lookup(key);
     if (item) {
@@ -1198,7 +1202,7 @@
       objStr = new ObjectStream(this, e->offset, recursion + 1);
       if (!objStr->isOk()) {
 	delete objStr;
-	objStr = NULL;
+	objStr = nullptr;
 	goto err;
       } else {
 	// XRef could be reconstructed in constructor of ObjectStream:
@@ -1534,7 +1538,7 @@
   if (unlikely(entry == nullptr))
     return gFalse;
 
-  Parser parser(NULL, new Lexer(NULL,
+  Parser parser(nullptr, new Lexer(nullptr,
      str->makeSubStream(offset, gFalse, 20, Object(objNull))), gTrue);
 
   Object obj1, obj2, obj3;
@@ -1575,7 +1579,7 @@
     }
     if (followed) {
       error(errSyntaxError, -1, "Circular XRef");
-      if (!(ok = constructXRef(NULL))) {
+      if (!(ok = constructXRef(nullptr))) {
         errCode = errDamaged;
       }
       break;
@@ -1718,7 +1722,6 @@
   }
 
   // Mark objects referred from the Encrypt dict as Unencrypted
-  Object obj = trailerDict.dictLookupNF("Encrypt");
   markUnencrypted();
 }
 

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/XRef.h
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/XRef.h	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/XRef.h	2018-03-18 21:59:37 UTC (rev 47014)
@@ -14,7 +14,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2005 Brad Hards <bradh at frogmouth.net>
-// Copyright (C) 2006, 2008, 2010-2013, 2017 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2006, 2008, 2010-2013, 2017, 2018 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2007-2008 Julien Rebetez <julienr at svn.gnome.org>
 // Copyright (C) 2007 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2010 Ilya Gorenbein <igorenbein at finjan.com>
@@ -104,6 +104,9 @@
   // Destructor.
   ~XRef();
 
+  XRef(const XRef &) = delete;
+  XRef& operator=(const XRef &) = delete;
+
   // Copy xref but with new base stream!
   XRef *copy();
 
@@ -253,9 +256,13 @@
 
   class XRefWriter {
   public:
+    XRefWriter() = default;
     virtual void startSection(int first, int count) = 0;
     virtual void writeEntry(Goffset offset, int gen, XRefEntryType type) = 0;
     virtual ~XRefWriter() {};
+
+    XRefWriter(const XRefWriter &) = delete;
+    XRefWriter& operator=(const XRefWriter &other) = delete;
   };
 
   // XRefWriter subclass that writes a XRef table

Modified: trunk/Build/source/libs/poppler/poppler-src/poppler/poppler-config.h.cmake
===================================================================
--- trunk/Build/source/libs/poppler/poppler-src/poppler/poppler-config.h.cmake	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/poppler-src/poppler/poppler-config.h.cmake	2018-03-18 21:59:37 UTC (rev 47014)
@@ -129,7 +129,7 @@
 //------------------------------------------------------------------------
 
 // copyright notice
-#define popplerCopyright "Copyright 2005-2017 The Poppler Developers - http://poppler.freedesktop.org"
+#define popplerCopyright "Copyright 2005-2018 The Poppler Developers - http://poppler.freedesktop.org"
 #define xpdfCopyright "Copyright 1996-2011 Glyph & Cog, LLC"
 
 //------------------------------------------------------------------------

Modified: trunk/Build/source/libs/poppler/version.ac
===================================================================
--- trunk/Build/source/libs/poppler/version.ac	2018-03-18 21:59:15 UTC (rev 47013)
+++ trunk/Build/source/libs/poppler/version.ac	2018-03-18 21:59:37 UTC (rev 47014)
@@ -9,4 +9,4 @@
 dnl --------------------------------------------------------
 dnl
 dnl  m4-include this file to define the current poppler version
-m4_define([poppler_version], [0.62.0])
+m4_define([poppler_version], [0.63.0])



More information about the tex-live-commits mailing list