diff --git a/CMakeLists.txt b/CMakeLists.txt index b013fdf..251677c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,8 +59,9 @@ ADD_EXECUTABLE(stgen3 util.cpp darkhttpd.c duktape/src/duktape.c markdown.cpp target_include_directories(stgen3 PRIVATE include duktape/src lib/mtex2MML/src itexToMML/itex-src - lib/lasem/src lib/cpp-base64) + lib/lasem/src lib/cpp-base64 lib/gtkmathview-0.8.0/insdir/include ) +target_include_directories(stgen3 PRIVATE /usr/include/libxml2) # Horrible Horrible headers for lasem target_include_directories(stgen3 PRIVATE ${GLIB_INCLUDE_DIRS} /usr/include/cairo /usr/include/gdk-pixbuf-2.0 /usr/include/pango-1.0 /usr/include/harfbuzz/) @@ -73,11 +74,23 @@ add_custom_command( add_definitions(${GLIB_CFLAGS_OTHER}) + +target_link_libraries(stgen3 PRIVATE ${CMAKE_SOURCE_DIR}/lib/gtkmathview-0.8.0/insdir/lib/libmathmlsvg.a) +target_link_libraries(stgen3 PRIVATE ${CMAKE_SOURCE_DIR}/lib/gtkmathview-0.8.0/insdir/lib/libmathmlsvg.a) +target_link_libraries(stgen3 PRIVATE ${CMAKE_SOURCE_DIR}/lib/gtkmathview-0.8.0/insdir/lib/libmathview_frontend_libxml2.a) +target_link_libraries(stgen3 PRIVATE ${CMAKE_SOURCE_DIR}/lib/gtkmathview-0.8.0/insdir/lib/libmathview_backend_svg.a) +target_link_libraries(stgen3 PRIVATE ${CMAKE_SOURCE_DIR}/lib/gtkmathview-0.8.0/insdir/lib/libmathview.a) + +target_link_libraries(stgen3 PRIVATE tinyxml2) +target_link_libraries(stgen3 PRIVATE xml2) + + + target_link_libraries(stgen3 PRIVATE ${CMAKE_SOURCE_DIR}/MultiMarkdown/build/libMultiMarkdown.a) target_link_libraries(stgen3 PRIVATE ${CMAKE_SOURCE_DIR}/itexToMML/itex-src/libitex2MML.a) target_link_libraries(stgen3 PRIVATE ${CMAKE_SOURCE_DIR}/lib/mtex2MML/build/libmtex2MML.a) target_link_libraries(stgen3 PRIVATE tinyxml2) -target_link_libraries(stgen3 PRIVATE lexbor ) +target_link_libraries(stgen3 PRIVATE lexbor) target_link_libraries(stgen3 PRIVATE ${CMAKE_SOURCE_DIR}/lib/src-highlite/build/b/lib/libsource-highlight.a) target_link_libraries(stgen3 PRIVATE boost_regex) target_link_libraries(stgen3 PRIVATE diff --git a/SimpleSvg.hh b/SimpleSvg.hh new file mode 100644 index 0000000..e4d44bd --- /dev/null +++ b/SimpleSvg.hh @@ -0,0 +1,78 @@ + +#include +#include +#include +#include +#include +#include +#include +#include + +typedef libxml2_MathView MathView; + +class SimpleSVG { + + double width = 21; + double height = 29.7; + Length::Unit unitId = Length::CM_UNIT; + double xMargin = 2; + double yMargin = 2; + double fontSize = DEFAULT_FONT_SIZE; + char* configPath = 0; + + SmartPtr logger; + SmartPtr view; + + struct Pair { + const std::string key; + const std::string val; + }; + + std::vector defaultConfiguration { + {"math-engine-configuration/version", "0.8.0"}, + {"svg-backend/null-shaper/enabled", "true"}, + {"svg-backend/null-shaper/priority", "0"}, + {"svg-backend/space-shaper/enabled", "true"}, + {"svg-backend/space-shaper/priority", "1"}, + {"svg-backend/type1-computer-modern-shaper/enabled", "false"}, + {"svg-backend/type1-computer-modern-shaper/priority", "1"}, + {"svg-backend/ttf-computer-modern-shaper/enabled", "true"}, + {"svg-backend/ttf-computer-modern-shaper/priority", "1"}, + {"svg-backend/ttf-computer-modern-shaper/post-shaping", "always"}, + {"fonts/computer-modern/font-name", "cmr10"}, + {"fonts/computer-modern/font-name", "cmmi10"}, + {"fonts/computer-modern/font-name", "cmex10"}, + {"fonts/computer-modern/font-name", "cmex10"}, + + {"fonts/computer-modern/font-name", "cmr10"}, + {"fonts/computer-modern/font-name", "cmb10"}, + {"fonts/computer-modern/font-name", "cmbx10"}, + {"fonts/computer-modern/font-name", "cmbxti10"}, + {"fonts/computer-modern/font-name", "cmti10"}, + {"fonts/computer-modern/font-name", "cmss10"}, + {"fonts/computer-modern/font-name", "cmssi10"}, + {"fonts/computer-modern/font-name", "cmssbx10"}, + {"fonts/computer-modern/font-name", "cmtt10"}, + {"fonts/computer-modern/font-name", "cmsy10"}, + {"fonts/computer-modern/font-name", "cmbsy10"}, + {"fonts/computer-modern/font-name", "cmmi10"}, + {"fonts/computer-modern/font-name", "cmex10"}, + {"fonts/computer-modern/font-name", "msam10"}, + {"fonts/computer-modern/font-name", "msbm10"}, + {"fonts/computer-modern/font-name", "cmmib10"} + }; + + + public: + + SimpleSVG(); + + std::string + process_mathml(const std::string &buffer) ; + + std::vector + process_mathml(const std::vector &mathmlsrcbufs) ; + + +}; + diff --git a/main.cpp b/main.cpp index e86853d..e817b80 100644 --- a/main.cpp +++ b/main.cpp @@ -67,6 +67,7 @@ They are provided by the lyx-fonts package in fedora, and the ttf-lyx package in #include "itex2MML.h" #include "mtex2MML.h" +#include "SimpleSvg.hh" namespace lex { extern "C" { @@ -508,6 +509,7 @@ class builder { std::unordered_map last_build; gnu_highlighter shl {}; imtex::Imtex imtx {}; + SimpleSVG mathRenderer{} ; const std::set apply_templates_exts {"md","html", "txt", "markdown", "xml", "atom", "rss"}; diff --git a/notes/math.md b/notes/math.md index efaa290..3dfbaa3 100644 --- a/notes/math.md +++ b/notes/math.md @@ -33,3 +33,5 @@ curl -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmex10.ttf \ ``` source: https://github.com/gjtorikian/mathematical + +azip of all t3 fonts: https://mirror.aarnet.edu.au/pub/CTAN/fonts/cm/ps-type3.zip