Commit 0fdbf3bc authored by Kan-Ru Chen's avatar Kan-Ru Chen

New upstream version 1.12.0+ds1

parent 4844d430
...@@ -27,14 +27,11 @@ cscope.* ...@@ -27,14 +27,11 @@ cscope.*
*.xps *.xps
*.epub *.epub
*.fb2 *.fb2
*.xhtml
*.css
*.svg *.svg
*.pam *.pam
*.pbm *.pbm
*.pgm *.pgm
*.ppm *.ppm
*.png
*.jpg *.jpg
*.jpeg *.jpeg
*.pcl *.pcl
......
...@@ -13,15 +13,18 @@ ...@@ -13,15 +13,18 @@
[submodule "thirdparty/jpeg"] [submodule "thirdparty/jpeg"]
path = thirdparty/libjpeg path = thirdparty/libjpeg
url = ../thirdparty-libjpeg.git url = ../thirdparty-libjpeg.git
[submodule "thirdparty/lcms2"]
path = thirdparty/lcms2
url = ../thirdparty-lcms2.git
[submodule "thirdparty/openjpeg"] [submodule "thirdparty/openjpeg"]
path = thirdparty/openjpeg path = thirdparty/openjpeg
url = ../thirdparty-openjpeg.git url = ../thirdparty-openjpeg.git
[submodule "thirdparty/zlib"] [submodule "thirdparty/zlib"]
path = thirdparty/zlib path = thirdparty/zlib
url = ../thirdparty-zlib.git url = ../thirdparty-zlib.git
[submodule "thirdparty/glfw"]
path = thirdparty/glfw
url = ../thirdparty-glfw.git
[submodule "thirdparty/curl"] [submodule "thirdparty/curl"]
path = thirdparty/curl path = thirdparty/curl
url = ../thirdparty-curl.git url = ../thirdparty-curl.git
[submodule "thirdparty/freeglut"]
path = thirdparty/freeglut
url = ../thirdparty-freeglut.git
List of changes in MuPDF 1.12.0
* New Android SDK:
New git repositories for the SDK projects:
* mupdf-android-fitz.git has the JNI bindings in a library.
* mupdf-android-viewer.git has the viewer as an activity in a library.
* mupdf-android-viewer-mini.git has the minimalist viewer as an activity in a library.
Binary packages in our Maven repository at http://maven.ghostscript.com:
* com.artifex.mupdf:fitz:1.12.+
* com.artifex.mupdf:viewer:1.12.+
* com.artifex.mupdf:mini:1.12.+
* Color management:
* LCMS2 library for color management.
* CMYK rendering with overprint simulation.
* Spot color rendering.
* Transparency rendering fixes.
* Structured text output improvements:
* Reworked structured text API.
* Faster text searching.
* Highlight and copy text by selecting lines instead of by area.
* New semantic XHTML output format.
* New layout preserving HTML output format.
* Features and improvements:
* Improved non-AA rendering with new scan converter.
* Improved LARGEFILE support.
* Improved TIFF support.
* Improved documentation.
* PCLm output.
* PSD output.
* New "mutool trace" tool.
* New "mutool sign" tool (work in progress).
* Text redaction (work in progress).
* Lots of bug fixes.
List of changes in MuPDF 1.11 List of changes in MuPDF 1.11
* This is primarily a bug fix release. * This is primarily a bug fix release.
......
This diff is collapsed.
...@@ -8,8 +8,7 @@ OS := $(OS:Darwin=MACOS) ...@@ -8,8 +8,7 @@ OS := $(OS:Darwin=MACOS)
HAVE_LIBDL ?= yes HAVE_LIBDL ?= yes
CFLAGS += -Wall -Wdeclaration-after-statement
CFLAGS += -Wall
ifeq (,$(findstring -fembed-bitcode,$(XCFLAGS))) ifeq (,$(findstring -fembed-bitcode,$(XCFLAGS)))
# clang does not support these in combination with -fembed-bitcode # clang does not support these in combination with -fembed-bitcode
...@@ -35,8 +34,11 @@ else ifeq "$(build)" "valgrind" ...@@ -35,8 +34,11 @@ else ifeq "$(build)" "valgrind"
CFLAGS += -pipe -O2 -DNDEBUG -DPACIFY_VALGRIND -fno-omit-frame-pointer CFLAGS += -pipe -O2 -DNDEBUG -DPACIFY_VALGRIND -fno-omit-frame-pointer
LDFLAGS += $(LDREMOVEUNREACH) -Wl,-s LDFLAGS += $(LDREMOVEUNREACH) -Wl,-s
else ifeq "$(build)" "sanitize" else ifeq "$(build)" "sanitize"
CFLAGS += -pipe -g -fsanitize=address -fno-omit-frame-pointer CFLAGS += -pipe -g -fno-omit-frame-pointer -fsanitize=address
LDFLAGS += -fsanitize=address LDFLAGS += -g -fsanitize=address
else ifeq "$(build)" "sanitize-release"
CFLAGS += -pipe -O2 -DNDEBUG -fno-omit-frame-pointer -fsanitize=address
LDFLAGS += $(LDREMOVEUNREACH) -Wl,-s -fsanitize=address
else ifeq "$(build)" "profile" else ifeq "$(build)" "profile"
CFLAGS += -pipe -O2 -DNDEBUG -pg CFLAGS += -pipe -O2 -DNDEBUG -pg
LDFLAGS += -pg LDFLAGS += -pg
...@@ -60,10 +62,6 @@ else ...@@ -60,10 +62,6 @@ else
$(error unknown build setting: '$(build)') $(error unknown build setting: '$(build)')
endif endif
ifeq "$(largefile)" "yes"
CFLAGS += -DFZ_LARGEFILE
endif
# Windows (MINGW) build doesn't use system libraries. # Windows (MINGW) build doesn't use system libraries.
ifeq "$(OS)" "MINGW" ifeq "$(OS)" "MINGW"
...@@ -79,35 +77,14 @@ else ifeq "$(OS)" "MACOS" ...@@ -79,35 +77,14 @@ else ifeq "$(OS)" "MACOS"
HAVE_X11 ?= no HAVE_X11 ?= no
HAVE_PTHREAD := yes HAVE_GLUT ?= yes
SYS_PTHREAD_CFLAGS := SYS_GLUT_CFLAGS := -Wno-deprecated-declarations
SYS_PTHREAD_LIBS := -lpthread SYS_GLUT_LIBS := -framework GLUT -framework OpenGL
# Mac OS X deprecated libcrypto, so the default is to not include it.
HAVE_LIBCRYTO := no
SYS_LIBCRYPTO_CFLAGS :=
SYS_LIBCRYPTO_LIBS :=
ifeq "$(HAVE_LIBCRYPTO)" "yes"
SYS_LIBCRYPTO_CFLAGS := -DHAVE_LIBCRYPTO
SYS_LIBCRYPTO_LIBS := -lcrypto
endif
SYS_CURL_DEPS := -lpthread
SYS_X11_CFLAGS := -I/usr/X11R6/include
SYS_X11_LIBS := -L/usr/X11R6/lib -lX11 -lXext
SYS_FREETYPE_CFLAGS := $(shell freetype-config --cflags) CC = xcrun cc
SYS_FREETYPE_LIBS := $(shell freetype-config --libs) AR = xcrun ar
SYS_OPENJPEG_LIBS := -lopenjpeg LD = xcrun ld
SYS_JBIG2DEC_LIBS := -ljbig2dec RANLIB_CMD = xcrun ranlib $@
SYS_LIBJPEG_LIBS := -ljpeg
SYS_ZLIB_LIBS := -lz
CC := xcrun cc
AR := xcrun ar
LD := xcrun ld
RANLIB_CMD := xcrun ranlib $@
# Linux uses pkg-config for system libraries. # Linux uses pkg-config for system libraries.
else ifeq "$(OS)" "Linux" else ifeq "$(OS)" "Linux"
...@@ -116,6 +93,10 @@ HAVE_PTHREAD := yes ...@@ -116,6 +93,10 @@ HAVE_PTHREAD := yes
SYS_PTHREAD_CFLAGS := SYS_PTHREAD_CFLAGS :=
SYS_PTHREAD_LIBS := -lpthread SYS_PTHREAD_LIBS := -lpthread
HAVE_GLUT := yes
SYS_GLUT_CFLAGS :=
SYS_GLUT_LIBS := -lglut -lGL
ifeq "$(shell pkg-config --exists 'libcrypto <= 1.0.1t' && echo yes)" "yes" ifeq "$(shell pkg-config --exists 'libcrypto <= 1.0.1t' && echo yes)" "yes"
HAVE_LIBCRYPTO := yes HAVE_LIBCRYPTO := yes
SYS_LIBCRYPTO_CFLAGS := -DHAVE_LIBCRYPTO $(shell pkg-config --cflags libcrypto) SYS_LIBCRYPTO_CFLAGS := -DHAVE_LIBCRYPTO $(shell pkg-config --cflags libcrypto)
...@@ -277,5 +258,5 @@ endif ...@@ -277,5 +258,5 @@ endif
# TODO: If crosscompiling, why not just call "make libs" instead of this exception? # TODO: If crosscompiling, why not just call "make libs" instead of this exception?
ifeq "$(CROSSCOMPILE)" "yes" ifeq "$(CROSSCOMPILE)" "yes"
HAVE_X11 ?= no HAVE_X11 ?= no
HAVE_GLFW ?= no HAVE_GLUT ?= no
endif endif
...@@ -10,6 +10,7 @@ FREETYPE_DIR := thirdparty/freetype ...@@ -10,6 +10,7 @@ FREETYPE_DIR := thirdparty/freetype
HARFBUZZ_DIR := thirdparty/harfbuzz HARFBUZZ_DIR := thirdparty/harfbuzz
JBIG2DEC_DIR := thirdparty/jbig2dec JBIG2DEC_DIR := thirdparty/jbig2dec
JPEGXR_DIR := thirdparty/jpegxr JPEGXR_DIR := thirdparty/jpegxr
LCMS2_DIR := thirdparty/lcms2
LIBJPEG_DIR := thirdparty/libjpeg LIBJPEG_DIR := thirdparty/libjpeg
LURATECH_DIR := thirdparty/luratech LURATECH_DIR := thirdparty/luratech
MUJS_DIR := thirdparty/mujs MUJS_DIR := thirdparty/mujs
...@@ -17,7 +18,7 @@ OPENJPEG_DIR := thirdparty/openjpeg/src/lib/openjp2 ...@@ -17,7 +18,7 @@ OPENJPEG_DIR := thirdparty/openjpeg/src/lib/openjp2
ZLIB_DIR := thirdparty/zlib ZLIB_DIR := thirdparty/zlib
CURL_DIR := thirdparty/curl CURL_DIR := thirdparty/curl
GLFW_DIR := thirdparty/glfw GLUT_DIR := thirdparty/freeglut
# --- MuJS --- # --- MuJS ---
...@@ -164,8 +165,8 @@ $(HARFBUZZ_OUT): ...@@ -164,8 +165,8 @@ $(HARFBUZZ_OUT):
$(MKDIR_CMD) $(MKDIR_CMD)
$(HARFBUZZ_OUT)/%.o: $(HARFBUZZ_DIR)/src/%.cc | $(HARFBUZZ_OUT) $(HARFBUZZ_OUT)/%.o: $(HARFBUZZ_DIR)/src/%.cc | $(HARFBUZZ_OUT)
$(CC_CMD) -DHAVE_OT -DHAVE_UCDN -DHB_NO_MT $(FREETYPE_CFLAGS) \ $(CC_CMD) -DHAVE_OT -DHAVE_UCDN -DHB_NO_MT $(FREETYPE_CFLAGS) \
-Dhb_malloc_impl=hb_malloc -Dhb_calloc_impl=hb_calloc \ -Dhb_malloc_impl=fz_hb_malloc -Dhb_calloc_impl=fz_hb_calloc \
-Dhb_free_impl=hb_free -Dhb_realloc_impl=hb_realloc \ -Dhb_free_impl=fz_hb_free -Dhb_realloc_impl=fz_hb_realloc \
-fno-rtti -fno-exceptions -fvisibility-inlines-hidden --std=c++0x -fno-rtti -fno-exceptions -fvisibility-inlines-hidden --std=c++0x
HARFBUZZ_CFLAGS := -I$(HARFBUZZ_DIR)/src HARFBUZZ_CFLAGS := -I$(HARFBUZZ_DIR)/src
...@@ -532,6 +533,51 @@ ZLIB_CFLAGS := $(SYS_ZLIB_CFLAGS) ...@@ -532,6 +533,51 @@ ZLIB_CFLAGS := $(SYS_ZLIB_CFLAGS)
ZLIB_LIBS := $(SYS_ZLIB_LIBS) ZLIB_LIBS := $(SYS_ZLIB_LIBS)
endif endif
# --- LCMS2 ---
ifneq "$(wildcard $(LCMS2_DIR)/INSTALL)" ""
LCMS2_OUT := $(OUT)/lcms2
LCMS2_SRC := \
cmsalpha.c \
cmscam02.c \
cmscgats.c \
cmscnvrt.c \
cmserr.c \
cmsgamma.c \
cmsgmt.c \
cmshalf.c \
cmsintrp.c \
cmsio0.c \
cmsio1.c \
cmslut.c \
cmsmd5.c \
cmsmtrx.c \
cmsnamed.c \
cmsopt.c \
cmspack.c \
cmspcs.c \
cmsplugin.c \
cmsps2.c \
cmssamp.c \
cmssm.c \
cmstypes.c \
cmsvirt.c \
cmswtpnt.c \
cmsxform.c \
LCMS2_OBJ := $(addprefix $(LCMS2_OUT)/, $(LCMS2_SRC:%.c=%.o))
$(LCMS2_OUT):
$(MKDIR_CMD)
$(LCMS2_OUT)/%.o: $(LCMS2_DIR)/src/%.c | $(LCMS2_OUT)
$(CC_CMD) -I$(LCMS2_DIR)/include
LCMS2_CFLAGS := -I$(LCMS2_DIR)/include
else
LCMS2_CFLAGS := -DNO_ICC
endif
# --- cURL --- # --- cURL ---
ifneq "$(wildcard $(CURL_DIR)/README)" "" ifneq "$(wildcard $(CURL_DIR)/README)" ""
...@@ -612,93 +658,84 @@ CURL_CFLAGS := $(SYS_CURL_CFLAGS) ...@@ -612,93 +658,84 @@ CURL_CFLAGS := $(SYS_CURL_CFLAGS)
CURL_LIBS := $(SYS_CURL_LIBS) CURL_LIBS := $(SYS_CURL_LIBS)
endif endif
# --- GLFW --- # --- FreeGLUT ---
ifneq "$(wildcard $(GLFW_DIR)/README.md)" "" ifneq "$(wildcard $(GLUT_DIR)/README)" ""
GLFW_LIB := $(OUT)/libglfw.a
GLFW_OUT := $(OUT)/thirdparty/glfw
ifeq "$(OS)" "MACOS" ifeq "$(OS)" "MACOS"
GLUT_CFLAGS := $(SYS_GLUT_CFLAGS)
GLFW_SRC := \ GLUT_LIBS := $(SYS_GLUT_LIBS)
cocoa_time.c \
cocoa_init.m \
cocoa_monitor.m \
cocoa_window.m \
context.c \
init.c \
input.c \
iokit_joystick.m \
mach_time.m \
monitor.c \
nsgl_context.m \
posix_tls.c \
vulkan.c \
window.c
$(GLFW_OUT)/%.o: $(GLFW_DIR)/src/%.m | $(GLFW_OUT)
$(CC_CMD) -D_GLFW_COCOA -D_GLFW_USE_MENUBAR -D_GLFW_USE_RETINA -Wno-deprecated-declarations
$(GLFW_OUT)/%.o: $(GLFW_DIR)/src/%.c | $(GLFW_OUT)
$(CC_CMD) -D_GLFW_COCOA -D_GLFW_USE_MENUBAR -D_GLFW_USE_RETINA
GLFW_OBJ := $(addprefix $(GLFW_OUT)/, $(GLFW_SRC))
GLFW_OBJ := $(GLFW_OBJ:%.c=%.o)
GLFW_OBJ := $(GLFW_OBJ:%.m=%.o)
$(GLFW_LIB): $(GLFW_OBJ)
GLFW_LIBS := -framework OpenGL -framework IOKit -framework CoreVideo -framework Cocoa
else else
GLFW_SRC := \ HAVE_GLUT := yes
context.c \
egl_context.c \ GLUT_LIB := $(OUT)/libfreeglut.a
glx_context.c \ GLUT_OUT := $(OUT)/thirdparty/freeglut
init.c \ GLUT_SRC := \
input.c \ fg_callbacks.c \
linux_joystick.c \ fg_cursor.c \
monitor.c \ fg_display.c \
posix_time.c \ fg_ext.c \
posix_tls.c \ fg_font.c \
vulkan.c \ fg_font_data.c \
window.c \ fg_gamemode.c \
x11_init.c \ fg_geometry.c \
x11_monitor.c \ fg_gl2.c \
x11_window.c \ fg_init.c \
xkb_unicode.c fg_input_devices.c \
fg_joystick.c \
$(GLFW_OUT)/%.o: $(GLFW_DIR)/src/%.c | $(GLFW_OUT) fg_main.c \
$(CC_CMD) -D_GLFW_X11 fg_menu.c \
$(GLFW_LIB): $(addprefix $(GLFW_OUT)/, $(GLFW_SRC:%.c=%.o)) fg_misc.c \
GLFW_LIBS := -lGL -ldl -lX11 -lXcursor -lXrandr -lXinerama -lpthread fg_overlay.c \
fg_spaceball.c \
endif fg_state.c \
fg_stroke_mono_roman.c \
GLFW_CFLAGS := -I$(GLFW_DIR)/include fg_stroke_roman.c \
$(GLFW_OUT): fg_structure.c \
fg_teapot.c \
fg_videoresize.c \
fg_window.c
GLUT_X11_SRC := \
fg_cursor_x11.c \
fg_display_x11_glx.c \
fg_ext_x11.c \
fg_gamemode_x11.c \
fg_glutfont_definitions_x11.c \
fg_init_x11.c \
fg_input_devices_x11.c \
fg_joystick_x11.c \
fg_main_x11.c \
fg_menu_x11.c \
fg_spaceball_x11.c \
fg_state_x11.c \
fg_state_x11_glx.c \
fg_structure_x11.c \
fg_window_x11.c \
fg_window_x11_glx.c \
fg_xinput_x11.c
GLUT_OBJ := $(addprefix $(GLUT_OUT)/, $(GLUT_SRC:%.c=%.o))
GLUT_OBJ += $(addprefix $(GLUT_OUT)/, $(GLUT_X11_SRC:%.c=%.o))
$(GLUT_LIB): $(GLUT_OBJ)
$(GLUT_OUT):
$(MKDIR_CMD) $(MKDIR_CMD)
$(GLUT_OUT)/%.o: $(GLUT_DIR)/src/%.c | $(GLUT_OUT)
$(CC_CMD) -I$(GLUT_DIR)/include -I$(GLUT_DIR)/src -Wno-unused-function -Wno-unused-const-variable \
-DHAVE_UNISTD_H -DHAVE_STDINT_H -DHAVE_X11_EXTENSIONS_XRANDR_H
$(GLUT_OUT)/%.o: $(GLUT_DIR)/src/x11/%.c | $(GLUT_OUT)
$(CC_CMD) -I$(GLUT_DIR)/include -I$(GLUT_DIR)/src -Wno-unused-function \
-DHAVE_UNISTD_H -DHAVE_STDINT_H -DHAVE_X11_EXTENSIONS_XRANDR_H
GLUT_CFLAGS := -I$(GLUT_DIR)/include
GLUT_LIBS := -lGL -lX11 -lXrandr
GLFW_SRC_UNUSED := \ endif
mir_init.c \ else
mir_monitor.c \ GLUT_CFLAGS := $(SYS_GLUT_CFLAGS)
mir_window.c \ GLUT_LIBS := $(SYS_GLUT_LIBS)
wgl_context.c \
win32_init.c \
win32_joystick.c \
win32_monitor.c \
win32_time.c \
win32_tls.c \
win32_window.c \
wl_init.c \
wl_monitor.c \
wl_window.c \
HAVE_GLFW := yes
else ifeq "$(HAVE_GLFW)" "yes"
GLFW_CFLAGS := $(SYS_GLFW_CFLAGS)
GLFW_LIBS := $(SYS_GLFW_LIBS)
endif endif
# --- X11 --- # --- X11 ---
...@@ -717,7 +754,9 @@ endif ...@@ -717,7 +754,9 @@ endif
# --- pthread --- # --- pthread ---
#ifeq "$(HAVE_PTHREAD)" "yes" ifneq "$(threading)" "no"
PTHREAD_CFLAGS := $(SYS_PTHREAD_CFLAGS) ifeq "$(HAVE_PTHREAD)" "yes"
PTHREAD_LIBS := $(SYS_PTHREAD_LIBS) THREADING_CFLAGS := $(SYS_PTHREAD_CFLAGS) -DHAVE_PTHREAD
#endif THREADING_LIBS := $(SYS_PTHREAD_LIBS)
endif
endif
ABOUT ABOUT
MuPDF is a lightweight PDF, XPS, EPUB and CBZ viewer and parser/rendering MuPDF is a lightweight open source software framework for viewing and converting
library. PDF, XPS, and E-book documents.
The renderer in MuPDF is tailored for high quality anti-aliased graphics. It See the documentation in docs/index.html for an overview.
renders text with metrics and spacing accurate to within fractions of a pixel
for the highest fidelity in reproducing the look of a printed page on screen.
MuPDF is also small, fast, and yet complete. We support PDF 1.7 with Build instructions can be found in docs/building.html.
transparency, encryption, hyperlinks, annotations, search and many other bells
and whistles. MuPDF can also read XPS documents (OpenXPS / ECMA-388),
EPUB and CBZ (Comic Book archive) files.
MuPDF is written to be both modular and portable; the example applications
are merely thin layers on top of the functionality offered by the library,
so custom viewers can be easily built for a wide range of platforms. Example
viewer applications are supplied for Windows, Linux, MacOS, iOS and Android.
MuPDF is deliberately designed to be threading library agnostic, while still
supporting multi-threaded operation. In the absence of a thread library
it will run single-threaded, but by adding one significant benefits in
rendering speed on multi-core platforms can be obtained.
Interactive features such as form filling, javascript and transitions
are in development and partially supported by the Android application.
LICENSE LICENSE
...@@ -44,46 +26,13 @@ with this program. If not, see <http://www.gnu.org/licenses/>. ...@@ -44,46 +26,13 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
For commercial licensing, including our "Indie Dev" friendly options, For commercial licensing, including our "Indie Dev" friendly options,
please contact sales@artifex.com. please contact sales@artifex.com.
COMPILING
If you are compiling from source you will need several third party libraries:
freetype2, jbig2dec, libjpeg, openjpeg, and zlib. These libraries are contained
in the source archive. If you are using git, they are included as git
submodules.
You will also need the X11 headers and libraries if you're building on Linux.
These can typically be found in the xorg-dev package. Alternatively, if you
only want the command line tools, you can build with HAVE_X11=no.
The new OpenGL-based viewer also needs OpenGL headers and libraries. If you're
building on Linux, install the mesa-common-dev and libgl1-mesa-dev packages.
You'll also need several X11 development packages: xorg-dev, libxcursor-dev,
libxrandr-dev, and libxinerama-dev. To skip building the OpenGL viewer, build
with HAVE_GLFW=no.
DOWNLOAD
The latest development source is available directly from the git repository:
git clone --recursive git://git.ghostscript.com/mupdf.git
In the mupdf directory, update the third party libraries:
git submodule update --init
INSTALLING (UNIX)
Typing "make prefix=/usr/local install" will install the binaries, man-pages,
static libraries and header files on your system.
REPORTING BUGS AND PROBLEMS REPORTING BUGS AND PROBLEMS
The MuPDF developers hang out on IRC in the #ghostscript channel on The MuPDF developers hang out on IRC in the #mupdf channel on irc.freenode.net.
irc.freenode.net.
Report bugs on the ghostscript bugzilla, with MuPDF as the selected component. Report bugs on the ghostscript bugzilla, with MuPDF as the selected component.
http://bugs.ghostscript.com/ http://bugs.ghostscript.com/
If you are reporting a problem with PDF parsing, please include the problematic If you are reporting a problem with a specific file, please include the file as
file as an attachment. an attachment.
<!DOCTYPE html>
<html>
<head>
<title>MuPDF Android SDK</title>
<link rel="stylesheet" href="style.css" type="text/css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {counter-reset: h2}
h2 {counter-reset: h3}
h3 {counter-reset: h4}
h4 {counter-reset: h5}
h5 {counter-reset: h6}
h2:before {counter-increment: h2; content: counter(h2) ". "}
h3:before {counter-increment: h3; content: counter(h2) "." counter(h3) ". "}
h4:before {counter-increment: h4; content: counter(h2) "." counter(h3) "." counter(h4) ". "}
h5:before {counter-increment: h5; content: counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) ". "}
h6:before {counter-increment: h6; content: counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) "." counter(h6) ". "}
</style>
</head>
<body>
<header>
<h1>MuPDF Android SDK</h1>
</header>
<nav>
<a href="http://mupdf.com/index.html">About</a>
<a href="http://mupdf.com/news.html">News</a>
<a href="index.html">Documentation</a>