diff --git a/CMakeLists.txt b/CMakeLists.txt
index 39700f3..7b9a208 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,7 +17,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb")
-add_executable(pdftohtmlEX src/pdftohtmlEX.cc src/HTMLRenderer.cc src/HTMLRenderer.h src/BackgroundRenderer.cc src/BackgroundRenderer.h src/Consts.h)
+add_executable(pdftohtmlEX src/pdftohtmlEX.cc src/HTMLRenderer.cc src/HTMLRenderer.h src/BackgroundRenderer.cc src/BackgroundRenderer.h src/Consts.h src/Consts.cc src/util.h)
target_link_libraries(pdftohtmlEX poppler boost_program_options)
diff --git a/src/Consts.cc b/src/Consts.cc
new file mode 100644
index 0000000..87ee1cf
--- /dev/null
+++ b/src/Consts.cc
@@ -0,0 +1,85 @@
+/*
+ * Constants
+ *
+ * by WangLu
+ * 2012.08.10
+ */
+
+#include "Consts.h"
+
+const double EPS = 1e-6;
+
+const char * HTML_HEAD = "\n\
+
\
+\
+\
+\
+";
+
+const char * HTML_TAIL = "
";
+
+const std::map BASE_14_FONT_CSS_FONT_MAP({\
+ { "Courier", "Courier,monospace" },\
+ { "Helvetica", "Helvetica,Arial,\"Nimbus Sans L\",sans-serif" },\
+ { "Times", "Times,\"Time New Roman\",\"Nimbus Roman No9 L\",serif" },\
+ { "Symbol", "Symbol,\"Standard Symbols L\"" },\
+ { "ZapfDingbats", "ZapfDingbats,\"Dingbats\"" },\
+});
+
+const double id_matrix[6] = {1.0, 0.0, 0.0, 1.0, 0.0, 0.0};
+
+const std::map GB_ENCODED_FONT_NAME_MAP({\
+ {"\xCB\xCE\xCC\xE5", "SimSun"},\
+ {"\xBA\xDA\xCC\xE5", "SimHei"},\
+ {"\xBF\xAC\xCC\xE5_GB2312", "SimKai"},\
+ {"\xB7\xC2\xCB\xCE_GB2312", "SimFang"},\
+ {"\xC1\xA5\xCA\xE9", "SimLi"},\
+});
diff --git a/src/Consts.h b/src/Consts.h
index e39b67e..23fdc4c 100644
--- a/src/Consts.h
+++ b/src/Consts.h
@@ -9,72 +9,17 @@
#define CONSTS_H__
#include
#include