Showing preview only (9,205K chars total). Download the full file or copy to clipboard to get everything.
Repository: mgieseki/dvisvgm
Branch: master
Commit: 2c377ec09d0c
Files: 622
Total size: 8.7 MB
Directory structure:
gitextract_wt4otd8u/
├── AUTHORS
├── COPYING
├── INSTALL
├── Makefile.am
├── NEWS
├── README
├── README.md
├── configure.ac
├── doc/
│ ├── Makefile.am
│ ├── conf-dblatex-man.xsl
│ ├── conf-dblatex-pdf.xsl
│ ├── dvisvgm.txt.in
│ ├── generate-dvisvgm-sty.xsl
│ ├── tweak-db-article.xsl
│ ├── tweak-db-refentry.xsl
│ ├── tweak-dblatex-pdf.xsl
│ └── tweak-dblatex-tex.py
├── libs/
│ ├── Makefile.am
│ ├── boost/
│ │ ├── LICENSE.txt
│ │ ├── Makefile.am
│ │ ├── boost-vectorstream.hpp
│ │ └── vectorstream.hpp
│ ├── brotli/
│ │ ├── LICENSE
│ │ ├── Makefile.am
│ │ ├── common/
│ │ │ ├── constants.c
│ │ │ ├── constants.h
│ │ │ ├── context.c
│ │ │ ├── context.h
│ │ │ ├── dictionary.c
│ │ │ ├── dictionary.h
│ │ │ ├── dictionary_inc.h
│ │ │ ├── platform.c
│ │ │ ├── platform.h
│ │ │ ├── shared_dictionary_internal.h
│ │ │ ├── static_init.h
│ │ │ ├── transform.c
│ │ │ ├── transform.h
│ │ │ └── version.h
│ │ ├── enc/
│ │ │ ├── backward_references.c
│ │ │ ├── backward_references.h
│ │ │ ├── backward_references_hq.c
│ │ │ ├── backward_references_hq.h
│ │ │ ├── backward_references_inc.h
│ │ │ ├── bit_cost.c
│ │ │ ├── bit_cost.h
│ │ │ ├── bit_cost_inc.h
│ │ │ ├── block_encoder_inc.h
│ │ │ ├── block_splitter.c
│ │ │ ├── block_splitter.h
│ │ │ ├── block_splitter_inc.h
│ │ │ ├── brotli_bit_stream.c
│ │ │ ├── brotli_bit_stream.h
│ │ │ ├── cluster.c
│ │ │ ├── cluster.h
│ │ │ ├── cluster_inc.h
│ │ │ ├── command.c
│ │ │ ├── command.h
│ │ │ ├── compound_dictionary.c
│ │ │ ├── compound_dictionary.h
│ │ │ ├── compress_fragment.c
│ │ │ ├── compress_fragment.h
│ │ │ ├── compress_fragment_two_pass.c
│ │ │ ├── compress_fragment_two_pass.h
│ │ │ ├── dictionary_hash.c
│ │ │ ├── dictionary_hash.h
│ │ │ ├── dictionary_hash_inc.h
│ │ │ ├── encode.c
│ │ │ ├── encoder_dict.c
│ │ │ ├── encoder_dict.h
│ │ │ ├── entropy_encode.c
│ │ │ ├── entropy_encode.h
│ │ │ ├── entropy_encode_static.h
│ │ │ ├── fast_log.c
│ │ │ ├── fast_log.h
│ │ │ ├── find_match_length.h
│ │ │ ├── hash.h
│ │ │ ├── hash_base.h
│ │ │ ├── hash_composite_inc.h
│ │ │ ├── hash_forgetful_chain_inc.h
│ │ │ ├── hash_longest_match64_inc.h
│ │ │ ├── hash_longest_match64_simd_inc.h
│ │ │ ├── hash_longest_match_inc.h
│ │ │ ├── hash_longest_match_quickly_inc.h
│ │ │ ├── hash_longest_match_simd_inc.h
│ │ │ ├── hash_rolling_inc.h
│ │ │ ├── hash_to_binary_tree_inc.h
│ │ │ ├── histogram.c
│ │ │ ├── histogram.h
│ │ │ ├── histogram_inc.h
│ │ │ ├── literal_cost.c
│ │ │ ├── literal_cost.h
│ │ │ ├── matching_tag_mask.h
│ │ │ ├── memory.c
│ │ │ ├── memory.h
│ │ │ ├── metablock.c
│ │ │ ├── metablock.h
│ │ │ ├── metablock_inc.h
│ │ │ ├── params.h
│ │ │ ├── prefix.h
│ │ │ ├── quality.h
│ │ │ ├── ringbuffer.h
│ │ │ ├── state.h
│ │ │ ├── static_dict.c
│ │ │ ├── static_dict.h
│ │ │ ├── static_dict_lut.c
│ │ │ ├── static_dict_lut.h
│ │ │ ├── static_dict_lut_inc.h
│ │ │ ├── static_init.c
│ │ │ ├── static_init.h
│ │ │ ├── utf8_util.c
│ │ │ ├── utf8_util.h
│ │ │ └── write_bits.h
│ │ └── include/
│ │ └── brotli/
│ │ ├── decode.h
│ │ ├── encode.h
│ │ ├── port.h
│ │ ├── shared_dictionary.h
│ │ └── types.h
│ ├── clipper/
│ │ ├── License.txt
│ │ ├── Makefile.am
│ │ ├── clipper.cpp
│ │ └── clipper.hpp
│ ├── defs.am
│ ├── md5/
│ │ ├── Makefile.am
│ │ ├── md5.c
│ │ └── md5.h
│ ├── potrace/
│ │ ├── Makefile.am
│ │ ├── auxiliary.h
│ │ ├── bitmap.h
│ │ ├── config.h
│ │ ├── curve.c
│ │ ├── curve.h
│ │ ├── decompose.c
│ │ ├── decompose.h
│ │ ├── lists.h
│ │ ├── potracelib.c
│ │ ├── potracelib.h
│ │ ├── progress.h
│ │ ├── trace.c
│ │ └── trace.h
│ ├── variant/
│ │ ├── LICENSE.md
│ │ ├── Makefile.am
│ │ └── include/
│ │ └── mpark/
│ │ └── variant.hpp
│ ├── woff2/
│ │ ├── LICENSE
│ │ ├── Makefile.am
│ │ ├── include/
│ │ │ └── woff2/
│ │ │ ├── decode.h
│ │ │ ├── encode.h
│ │ │ ├── output.h
│ │ │ └── version.h
│ │ └── src/
│ │ ├── buffer.h
│ │ ├── font.cc
│ │ ├── font.h
│ │ ├── glyph.cc
│ │ ├── glyph.h
│ │ ├── normalize.cc
│ │ ├── normalize.h
│ │ ├── port.h
│ │ ├── round.h
│ │ ├── store_bytes.h
│ │ ├── table_tags.cc
│ │ ├── table_tags.h
│ │ ├── transform.cc
│ │ ├── transform.h
│ │ ├── variable_length.cc
│ │ ├── variable_length.h
│ │ ├── woff2_common.cc
│ │ ├── woff2_common.h
│ │ ├── woff2_enc.cc
│ │ └── woff2_out.cc
│ └── xxHash/
│ ├── LICENSE
│ ├── Makefile.am
│ ├── xxh3.h
│ ├── xxhash.c
│ └── xxhash.h
├── m4/
│ ├── ax_ac_append_to_file.m4
│ ├── ax_ac_print_to_file.m4
│ ├── ax_add_am_macro_static.m4
│ ├── ax_am_macros_static.m4
│ ├── ax_check_compile_flag.m4
│ ├── ax_code_coverage.m4
│ ├── ax_cxx_compile_stdcxx.m4
│ ├── ax_file_escapes.m4
│ └── ax_gcc_builtin.m4
├── src/
│ ├── AGLTable.hpp
│ ├── BasicDVIReader.cpp
│ ├── BasicDVIReader.hpp
│ ├── Bezier.cpp
│ ├── Bezier.hpp
│ ├── BgColorSpecialHandler.cpp
│ ├── BgColorSpecialHandler.hpp
│ ├── Bitmap.cpp
│ ├── Bitmap.hpp
│ ├── BoundingBox.cpp
│ ├── BoundingBox.hpp
│ ├── CLCommandLine.cpp
│ ├── CLCommandLine.hpp
│ ├── CLOption.hpp
│ ├── CMap.cpp
│ ├── CMap.hpp
│ ├── CMapManager.cpp
│ ├── CMapManager.hpp
│ ├── CMapReader.cpp
│ ├── CMapReader.hpp
│ ├── Calculator.cpp
│ ├── Calculator.hpp
│ ├── CharMapID.cpp
│ ├── CharMapID.hpp
│ ├── Character.hpp
│ ├── Color.cpp
│ ├── Color.hpp
│ ├── ColorSpecialHandler.cpp
│ ├── ColorSpecialHandler.hpp
│ ├── DLLoader.cpp
│ ├── DLLoader.hpp
│ ├── DVIActions.hpp
│ ├── DVIReader.cpp
│ ├── DVIReader.hpp
│ ├── DVIToSVG.cpp
│ ├── DVIToSVG.hpp
│ ├── DVIToSVGActions.cpp
│ ├── DVIToSVGActions.hpp
│ ├── Directory.cpp
│ ├── Directory.hpp
│ ├── Doxyfile
│ ├── DvisvgmSpecialHandler.cpp
│ ├── DvisvgmSpecialHandler.hpp
│ ├── EPSFile.cpp
│ ├── EPSFile.hpp
│ ├── EPSToSVG.hpp
│ ├── EllipticalArc.cpp
│ ├── EllipticalArc.hpp
│ ├── EmSpecialHandler.cpp
│ ├── EmSpecialHandler.hpp
│ ├── EncFile.cpp
│ ├── EncFile.hpp
│ ├── FileFinder.cpp
│ ├── FileFinder.hpp
│ ├── FilePath.cpp
│ ├── FilePath.hpp
│ ├── FileSystem.cpp
│ ├── FileSystem.hpp
│ ├── FixWord.hpp
│ ├── Font.cpp
│ ├── Font.hpp
│ ├── FontCache.cpp
│ ├── FontCache.hpp
│ ├── FontEncoding.cpp
│ ├── FontEncoding.hpp
│ ├── FontEngine.cpp
│ ├── FontEngine.hpp
│ ├── FontManager.cpp
│ ├── FontManager.hpp
│ ├── FontMap.cpp
│ ├── FontMap.hpp
│ ├── FontMetrics.cpp
│ ├── FontMetrics.hpp
│ ├── FontStyle.hpp
│ ├── FontWriter.cpp
│ ├── FontWriter.hpp
│ ├── GFGlyphTracer.cpp
│ ├── GFGlyphTracer.hpp
│ ├── GFReader.cpp
│ ├── GFReader.hpp
│ ├── GFTracer.cpp
│ ├── GFTracer.hpp
│ ├── Ghostscript.cpp
│ ├── Ghostscript.hpp
│ ├── Glyph.hpp
│ ├── GlyphTracerMessages.hpp
│ ├── GraphicsPath.hpp
│ ├── GraphicsPathParser.hpp
│ ├── HashFunction.cpp
│ ├── HashFunction.hpp
│ ├── HtmlSpecialHandler.cpp
│ ├── HtmlSpecialHandler.hpp
│ ├── HyperlinkManager.cpp
│ ├── HyperlinkManager.hpp
│ ├── ImageToSVG.cpp
│ ├── ImageToSVG.hpp
│ ├── InputBuffer.cpp
│ ├── InputBuffer.hpp
│ ├── InputReader.cpp
│ ├── InputReader.hpp
│ ├── JFM.cpp
│ ├── JFM.hpp
│ ├── Length.cpp
│ ├── Length.hpp
│ ├── MD5HashFunction.hpp
│ ├── Makefile.am
│ ├── MapLine.cpp
│ ├── MapLine.hpp
│ ├── Matrix.cpp
│ ├── Matrix.hpp
│ ├── Message.cpp
│ ├── Message.hpp
│ ├── MessageException.hpp
│ ├── MetafontWrapper.cpp
│ ├── MetafontWrapper.hpp
│ ├── MiKTeXCom.cpp
│ ├── MiKTeXCom.hpp
│ ├── NoPsSpecialHandler.cpp
│ ├── NoPsSpecialHandler.hpp
│ ├── NumericRanges.hpp
│ ├── OFM.cpp
│ ├── OFM.hpp
│ ├── Opacity.cpp
│ ├── Opacity.hpp
│ ├── PDFHandler.cpp
│ ├── PDFHandler.hpp
│ ├── PDFParser.cpp
│ ├── PDFParser.hpp
│ ├── PDFToSVG.cpp
│ ├── PDFToSVG.hpp
│ ├── PSInterpreter.cpp
│ ├── PSInterpreter.hpp
│ ├── PSPattern.cpp
│ ├── PSPattern.hpp
│ ├── PSPreviewHandler.cpp
│ ├── PSPreviewHandler.hpp
│ ├── PageRanges.cpp
│ ├── PageRanges.hpp
│ ├── PageSize.cpp
│ ├── PageSize.hpp
│ ├── Pair.hpp
│ ├── PapersizeSpecialHandler.cpp
│ ├── PapersizeSpecialHandler.hpp
│ ├── PathClipper.cpp
│ ├── PathClipper.hpp
│ ├── PdfSpecialHandler.cpp
│ ├── PdfSpecialHandler.hpp
│ ├── PreScanDVIReader.cpp
│ ├── PreScanDVIReader.hpp
│ ├── Process.cpp
│ ├── Process.hpp
│ ├── PsSpecialHandler.cpp
│ ├── PsSpecialHandler.hpp
│ ├── PsSpecialHandlerProxy.cpp
│ ├── PsSpecialHandlerProxy.hpp
│ ├── RangeMap.cpp
│ ├── RangeMap.hpp
│ ├── SVGCharHandler.cpp
│ ├── SVGCharHandler.hpp
│ ├── SVGCharHandlerFactory.cpp
│ ├── SVGCharHandlerFactory.hpp
│ ├── SVGCharPathHandler.cpp
│ ├── SVGCharPathHandler.hpp
│ ├── SVGCharTspanTextHandler.cpp
│ ├── SVGCharTspanTextHandler.hpp
│ ├── SVGElement.cpp
│ ├── SVGElement.hpp
│ ├── SVGOutput.cpp
│ ├── SVGOutput.hpp
│ ├── SVGSingleCharTextHandler.cpp
│ ├── SVGSingleCharTextHandler.hpp
│ ├── SVGTree.cpp
│ ├── SVGTree.hpp
│ ├── ShadingPatch.cpp
│ ├── ShadingPatch.hpp
│ ├── SignalHandler.cpp
│ ├── SignalHandler.hpp
│ ├── SourceInput.cpp
│ ├── SourceInput.hpp
│ ├── SpecialActions.cpp
│ ├── SpecialActions.hpp
│ ├── SpecialHandler.hpp
│ ├── SpecialManager.cpp
│ ├── SpecialManager.hpp
│ ├── StreamReader.cpp
│ ├── StreamReader.hpp
│ ├── StreamWriter.cpp
│ ├── StreamWriter.hpp
│ ├── Subfont.cpp
│ ├── Subfont.hpp
│ ├── System.cpp
│ ├── System.hpp
│ ├── TFM.cpp
│ ├── TFM.hpp
│ ├── TensorProductPatch.cpp
│ ├── TensorProductPatch.hpp
│ ├── Terminal.cpp
│ ├── Terminal.hpp
│ ├── ToUnicodeMap.cpp
│ ├── ToUnicodeMap.hpp
│ ├── TpicSpecialHandler.cpp
│ ├── TpicSpecialHandler.hpp
│ ├── TriangularPatch.cpp
│ ├── TriangularPatch.hpp
│ ├── Unicode.cpp
│ ├── Unicode.hpp
│ ├── VFActions.hpp
│ ├── VFReader.cpp
│ ├── VFReader.hpp
│ ├── VectorIterator.hpp
│ ├── XMLDocument.cpp
│ ├── XMLDocument.hpp
│ ├── XMLNode.cpp
│ ├── XMLNode.hpp
│ ├── XMLParser.cpp
│ ├── XMLParser.hpp
│ ├── XMLString.cpp
│ ├── XMLString.hpp
│ ├── XXHashFunction.hpp
│ ├── ZLibOutputStream.hpp
│ ├── algorithm.hpp
│ ├── dvisvgm.cpp
│ ├── fonts/
│ │ ├── Base14Fonts.cpp
│ │ ├── Base14Fonts.hpp
│ │ ├── Dingbats.cff.cpp
│ │ ├── Makefile.am
│ │ ├── NimbusMonoPS-Bold.cff.cpp
│ │ ├── NimbusMonoPS-BoldItalic.cff.cpp
│ │ ├── NimbusMonoPS-Italic.cff.cpp
│ │ ├── NimbusMonoPS-Regular.cff.cpp
│ │ ├── NimbusRoman-Bold.cff.cpp
│ │ ├── NimbusRoman-BoldItalic.cff.cpp
│ │ ├── NimbusRoman-Italic.cff.cpp
│ │ ├── NimbusRoman-Regular.cff.cpp
│ │ ├── NimbusSans-Bold.cff.cpp
│ │ ├── NimbusSans-BoldItalic.cff.cpp
│ │ ├── NimbusSans-Italic.cff.cpp
│ │ ├── NimbusSans-Regular.cff.cpp
│ │ └── StandardSymbolsPS.cff.cpp
│ ├── iapi.h
│ ├── ierrors.h
│ ├── macros.hpp
│ ├── opt2cpp.py
│ ├── optimizer/
│ │ ├── AttributeExtractor.cpp
│ │ ├── AttributeExtractor.hpp
│ │ ├── ClipPathReassigner.cpp
│ │ ├── ClipPathReassigner.hpp
│ │ ├── DependencyGraph.hpp
│ │ ├── GroupCollapser.cpp
│ │ ├── GroupCollapser.hpp
│ │ ├── Makefile.am
│ │ ├── OptimizerModule.hpp
│ │ ├── RedundantElementRemover.cpp
│ │ ├── RedundantElementRemover.hpp
│ │ ├── SVGOptimizer.cpp
│ │ ├── SVGOptimizer.hpp
│ │ ├── TextSimplifier.cpp
│ │ ├── TextSimplifier.hpp
│ │ ├── TransformSimplifier.cpp
│ │ ├── TransformSimplifier.hpp
│ │ ├── WSNodeRemover.cpp
│ │ └── WSNodeRemover.hpp
│ ├── options.dtd
│ ├── options.xml
│ ├── psdefs.cpp
│ ├── ttf/
│ │ ├── CmapTable.cpp
│ │ ├── CmapTable.hpp
│ │ ├── GlyfTable.cpp
│ │ ├── GlyfTable.hpp
│ │ ├── HeadTable.cpp
│ │ ├── HeadTable.hpp
│ │ ├── HheaTable.cpp
│ │ ├── HheaTable.hpp
│ │ ├── HmtxTable.cpp
│ │ ├── HmtxTable.hpp
│ │ ├── LocaTable.hpp
│ │ ├── Makefile.am
│ │ ├── MaxpTable.cpp
│ │ ├── MaxpTable.hpp
│ │ ├── NameTable.cpp
│ │ ├── NameTable.hpp
│ │ ├── OS2Table.cpp
│ │ ├── OS2Table.hpp
│ │ ├── PostTable.cpp
│ │ ├── PostTable.hpp
│ │ ├── TTFAutohint.cpp
│ │ ├── TTFAutohint.hpp
│ │ ├── TTFTable.cpp
│ │ ├── TTFTable.hpp
│ │ ├── TTFWriter.cpp
│ │ ├── TTFWriter.hpp
│ │ ├── VheaTable.cpp
│ │ ├── VheaTable.hpp
│ │ ├── VmtxTable.cpp
│ │ └── VmtxTable.hpp
│ ├── utility.cpp
│ ├── utility.hpp
│ ├── version.hpp
│ ├── version.hpp.in
│ └── windows.hpp
├── tests/
│ ├── BezierTest.cpp
│ ├── BitmapTest.cpp
│ ├── BoundingBoxTest.cpp
│ ├── CMapManagerTest.cpp
│ ├── CMapReaderTest.cpp
│ ├── CMapTest.cpp
│ ├── CalculatorTest.cpp
│ ├── ColorSpecialTest.cpp
│ ├── ColorTest.cpp
│ ├── CommandLineTest.cpp
│ ├── DVIReaderTest.cpp
│ ├── DependencyGraphTest.cpp
│ ├── DirectoryTest.cpp
│ ├── DvisvgmSpecialTest.cpp
│ ├── EllipticalArcTest.cpp
│ ├── EmSpecialTest.cpp
│ ├── FileFinderTest.cpp
│ ├── FilePathTest.cpp
│ ├── FileSystemTest.cpp
│ ├── FontCacheTest.cpp
│ ├── FontManagerTest.cpp
│ ├── FontMapTest.cpp
│ ├── GFGlyphTracerTest.cpp
│ ├── GFReaderTest.cpp
│ ├── GhostscriptTest.cpp
│ ├── GraphicsPathParserTest.cpp
│ ├── GraphicsPathTest.cpp
│ ├── HashFunctionTest.cpp
│ ├── JFMReaderTest.cpp
│ ├── LengthTest.cpp
│ ├── Makefile.am
│ ├── MapLineTest.cpp
│ ├── MatrixTest.cpp
│ ├── MessageExceptionTest.cpp
│ ├── NumericRangesTest.cpp
│ ├── OFMReaderTest.cpp
│ ├── PDFParserTest.cpp
│ ├── PSInterpreterTest.cpp
│ ├── PageRagesTest.cpp
│ ├── PageSizeTest.cpp
│ ├── PairTest.cpp
│ ├── PapersizeSpecialTest.cpp
│ ├── RangeMapTest.cpp
│ ├── SVGOutputTest.cpp
│ ├── ShadingPatchTest.cpp
│ ├── SpecialManagerTest.cpp
│ ├── SplittedCharInputBufferTest.cpp
│ ├── StreamInputBufferTest.cpp
│ ├── StreamReaderTest.cpp
│ ├── StreamWriterTest.cpp
│ ├── StringMatcherTest.cpp
│ ├── SubfontTest.cpp
│ ├── TFMReaderTest.cpp
│ ├── TensorProductPatchTest.cpp
│ ├── ToUnicodeMapTest.cpp
│ ├── TpicSpecialTest.cpp
│ ├── TriangularPatchTest.cpp
│ ├── UnicodeTest.cpp
│ ├── UtilityTest.cpp
│ ├── VectorIteratorTest.cpp
│ ├── XMLNodeTest.cpp
│ ├── XMLStringTest.cpp
│ ├── check-conv
│ ├── create-makefile
│ ├── data/
│ │ ├── Makefile.am
│ │ ├── cidjmgr0-h.tfm
│ │ ├── cmr10.600gf
│ │ ├── cmr10.pfb
│ │ ├── cmr10.tfm
│ │ ├── lmmono12-regular.otf
│ │ ├── omarab.ofm
│ │ ├── ot1.cmap
│ │ ├── sample.sfd
│ │ └── upjf-g.ofm
│ ├── genhashcheck.py
│ ├── gtest/
│ │ ├── LICENSE
│ │ ├── include/
│ │ │ └── gtest/
│ │ │ ├── gtest-assertion-result.h
│ │ │ ├── gtest-death-test.h
│ │ │ ├── gtest-matchers.h
│ │ │ ├── gtest-message.h
│ │ │ ├── gtest-param-test.h
│ │ │ ├── gtest-printers.h
│ │ │ ├── gtest-spi.h
│ │ │ ├── gtest-test-part.h
│ │ │ ├── gtest-typed-test.h
│ │ │ ├── gtest.h
│ │ │ ├── gtest_pred_impl.h
│ │ │ ├── gtest_prod.h
│ │ │ └── internal/
│ │ │ ├── custom/
│ │ │ │ ├── gtest-port.h
│ │ │ │ ├── gtest-printers.h
│ │ │ │ └── gtest.h
│ │ │ ├── gtest-death-test-internal.h
│ │ │ ├── gtest-filepath.h
│ │ │ ├── gtest-internal.h
│ │ │ ├── gtest-linked_ptr.h
│ │ │ ├── gtest-param-util-generated.h
│ │ │ ├── gtest-param-util.h
│ │ │ ├── gtest-port-arch.h
│ │ │ ├── gtest-port.h
│ │ │ ├── gtest-string.h
│ │ │ ├── gtest-tuple.h
│ │ │ └── gtest-type-util.h
│ │ └── src/
│ │ ├── gtest-all.cc
│ │ ├── gtest-assertion-result.cc
│ │ ├── gtest-death-test.cc
│ │ ├── gtest-filepath.cc
│ │ ├── gtest-internal-inl.h
│ │ ├── gtest-matchers.cc
│ │ ├── gtest-port.cc
│ │ ├── gtest-printers.cc
│ │ ├── gtest-test-part.cc
│ │ ├── gtest-typed-test.cc
│ │ ├── gtest.cc
│ │ └── gtest_main.cc
│ └── normalize.xsl
└── vc/
├── README
├── brotli/
│ ├── brotli.vcxproj
│ └── brotli.vcxproj.filters
├── clipper/
│ ├── clipper.vcxproj
│ └── clipper.vcxproj.filters
├── config.h
├── dvisvgm.rc
├── dvisvgm.vcxproj
├── dvisvgm.vcxproj.filters
├── freetype/
│ ├── freetype.vcxproj
│ └── freetype.vcxproj.filters
├── md5/
│ ├── md5.vcxproj
│ └── md5.vcxproj.filters
├── miktex-com/
│ ├── miktex-com.vcxproj
│ ├── miktex-com.vcxproj.filters
│ ├── miktex-session.idl
│ └── miktexidl.idl
├── potrace/
│ ├── libpotrace.vcxproj
│ └── libpotrace.vcxproj.filters
├── woff2/
│ ├── woff2.vcxproj
│ └── woff2.vcxproj.filters
├── xxHash/
│ ├── xxhash.vcxproj
│ └── xxhash.vcxproj.filters
└── zlib/
├── zlib.vcxproj
└── zlib.vcxproj.filters
================================================
FILE CONTENTS
================================================
================================================
FILE: AUTHORS
================================================
Martin Gieseking <martin.gieseking@uos.de>
author of dvisvgm
Yann Collet
libs/xxHash/xxhash.*
https://github.com/Cyan4973/xxHash
Google Inc.
libs/brotli/*
libs/woff2/*
https://github.com/google/brotli
https://github.com/google/woff2
Angus Johnson
libs/clipper/clipper.*
https://sourceforge.net/projects/polyclipping/
Michael Park
libs/variant/include/mpark/*
https://github.com/mpark/variant
Alexander Peslyak
libs/md5/*
Peter Selinger
libs/potrace/*
https://potrace.sourceforge.net
================================================
FILE: COPYING
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
================================================
FILE: INSTALL
================================================
Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
==================
These are generic installation instructions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. (Caching is
disabled by default to prevent problems with accidental use of stale
cache files.)
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
`configure' by a program called `autoconf'. You only need
`configure.ac' if you want to change it or regenerate `configure' using
a newer version of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package.
4. Type `make install' to install the programs and any data files and
documentation.
5. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. Run `./configure --help'
for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
If you have to use a `make' that does not support the `VPATH'
variable, you have to compile the package for one architecture at a
time in the source code directory. After you have installed the
package for one architecture, use `make distclean' before reconfiguring
for another architecture.
Installation Names
==================
By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PATH'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PATH', the package will use
PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=PATH' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Specifying the System Type
==========================
There may be some features `configure' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
_same_ architectures, `configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM
where SYSTEM can have one of these forms:
OS KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the `--target=TYPE' option to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
will cause the specified gcc to be used as the C compiler (unless it is
overridden in the site shell script).
`configure' Invocation
======================
`configure' recognizes the following options to control how it
operates.
`--help'
`-h'
Print a summary of the options to `configure', and exit.
`--version'
`-V'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
`--config-cache'
`-C'
Alias for `--cache-file=config.cache'.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.
================================================
FILE: Makefile.am
================================================
## This file is part of dvisvgm
## Copyright (C) 2005-2025 Martin Gieseking <martin.gieseking@uos.de>
##
## Process this file with automake.
include $(top_srcdir)/aminclude_static.am
AUTOMAKE_OPTIONS = foreign
EXTRA_DIST = COPYING
SUBDIRS = libs src
if !TEXLIVE_BUILD
SUBDIRS += tests doc
endif
ACLOCAL_AMFLAGS = -I m4
if USE_BUNDLED_LIBS
AM_DISTCHECK_CONFIGURE_FLAGS = --enable-bundled-libs
endif
if CODE_COVERAGE_ENABLED
lcov_dir=$(top_builddir)/lcov
lcov_file=$(lcov_dir)/lcov.info
lcov-report:
@mkdir -p $(lcov_dir)
lcov --capture --directory . --no-external -o $(lcov_file)
genhtml --title "dvisvgm" --num-spaces 2 --legend -o $(lcov_dir) $(lcov_file)
lcov-clean:
@rm -rf $(lcov_dir)
@find . -name "*.gcda" -exec rm {} \;
lcov --zerocounters --directory .
coverage: lcov-clean check lcov-report
endif
================================================
FILE: NEWS
================================================
dvisvgm-3.6 (2025-12-08)
- removed the restriction to process PDF-1.x files only (GH issue #291)
- option --page: added evaluation of %P which expands to the maximum page
number. Also, %(expr) is supported to evaluate arithmetic expressions,
like %(P-1)
- option --page: page numbers greater than the maximum page number are no
longer replaced by the maximum page number but ignored
- PDF handler: extended computation of opacity values (GH issue #292)
- fixed lookup of character code 0 in character maps (GH issue #294)
- fixed height and depth values shown when processing data created by
the 'preview' package
- updated bundled brotli library to version 1.2.0
- some code improvements
dvisvgm-3.5 (2025-05-23)
- fonts are now embedded in deterministic order (GH issue #288)
- different glyphs are now always assigned to different Unicode code points
to prevent collisions (GH issue #287)
- fixed font-related segmentation faults caused by malformed DVI files
(GH issue #289)
- fixed a regression that led to incorrect results produced by the
SVG optimizer
- DVI error messages now also mention the byte position where the
error occurred in the DVI file
- simplified the evaluation of PostScript operators
- many code refactorings and improvements
dvisvgm-3.4.4 (2025-03-06)
- extended computation of Unicode points by looking for known glyph names
- added some common glyph names not yet covered by the AGL table
- added warning shown if unsupported PDF specials have been ignored
- some additions to the manual page
- several code improvements
dvisvgm-3.4.3 (2025-01-04)
- fixed index error in PS operator "colorimage" (GH issue #279)
- updated bundled xxHash library to version 0.8.3
- minor changes to the manual page
dvisvgm-3.4.2 (2024-11-14)
- fixed evaluation of Unicode data when converting PDF files (GH issue #276)
- fixed horizontal character positioning in the PDF handler (GH issue #276)
- fixed drawing of single-colored tensor product patches
- use static creation and modification dates in TTF/WOFF fonts generated by
dvisvgm in order to prevent varying SVG output for unchanged input files
(GH issue #120)
- small improvements of the manual page
dvisvgm-3.4.1 (2024-09-16)
- show number of page being processed when converting PDF files
- added missing #include required as of GCC 15 (GH issue #273)
dvisvgm-3.4 (2024-07-24)
- option --embed-bitmaps is now also applied to images included with special
dvisvgm:img
- added macro {?cmyk(c,m,y,k)} to allow for directly specifying CMYK colors
in literal SVG fragments
- extended dvips color specials to distinguish between fill and stroke colors
- added color special "color set" to replace the current color without pushing
a new value onto the color stack
- added macros {?fillcolor} and {?strokecolor} to retrieve the current fill and
stroke color, respectively. Former macro {?color} equals {?fillcolor} and is
still available too
- replaced millimeter units with big point (bp) units in the message showing
the extent of generated SVG file
- fixed the detection of MIME types depending of file name suffixes
- several small code improvements
dvisvgm-3.3 (2024-04-10)
- added file dvisvgm.map to the default font map files being looked up
- added evaluation of #include and #includefirst present in font map files
- changed conversion of CMYK colors to RGB so that the resulting colors are
now similar to those created by Ghostscript and several PDF viewers
- fixed invalid bounding boxes assigned when converting multiple DVI pages
(GH issue #268)
- fixed computation of internal Coons tensor points
- updated bundled Google Test to version 1.12.1
dvisvgm-3.2.2 (2024-03-07)
- fixed the extraction of bitmaps from PS/EPS files that no longer worked
since Ghostscript 10.02.1 due to the removal of GS-specific operators
(GH issue #264)
- minor automake updates required for TeX Live builds
dvisvgm-3.2.1 (2024-02-29)
- delayed loading of Ghostscript library to speed up the conversion of
DVI files without PS specials (GH issue #262)
- some improvements required for TeX Live builds
(patches by Karl Berry, GH issues #259, #260)
- added more details to some DVI warning messages
- added some further information to the manual page
dvisvgm-3.2 (2024-01-11)
- PDF handler: fixed a rounding issue that could lead to slightly bigger
text extents (GH issue #256)
- added macros {?pageno}, {?svgfile}, and {?svgpath} to the dvisvgm special
commands
- added separate verbosity flag 8 for user messages printed by special
dvisvgm:message
- added command-line option --message to allow for printing user messages
after writing an SVG file (GH issue #258)
- applied upstream patch regarding undefined type punning to the bundled
woff2 library
- few improvements of the manual page
dvisvgm-3.1.2 (2023-10-12)
- improved evaluation of graphic extents created by the 'preview' package
(GH issue #246)
- fixed computation of character boxes when using --exact-bbox (GH issue #248)
- fixed memory error in optimizer module (GH issue #250)
- updated bundled brotli library to version 1.1.0
dvisvgm-3.1.1 (2023-08-29)
- added evaluation of optional dash prefixes to command-line option --optimize
to exclude selected optimizer modules
- fixed invalid removal of clipping paths referenced in 'defs' section
- fixed automatic calls of optimizer module 'remove-clippaths'
- suppress Ghostscript warning about deprecated option -dNEWPDF (GH issue #245)
- updated bundled xxHash library to version 0.8.2
- few fixes in the manual page
dvisvgm-3.1 (2023-07-06)
- added command-line option --currentcolor to replace a given color with
CSS variable 'currentColor' (GH issue #214)
- added special dvisvgm:currentcolor to replace the currently active color
with CSS variable 'currentColor' (GH issue #214)
- added special 'dvisvgm:message' to print given texts to the console
- added support for Omega Font Metric (OFM) files
- added fallback mechanism for missing characters in OFM-based virtual fonts
proposed by Takuji Tanaka (GH issue #241)
- fixed handling of whitespace in PDF file paths (GH issue #233)
- fixed vertical placement of "vertical fonts" in horizontal mode
(GH issue #235)
- fixed parsing of floating point numbers occurred with libc++ (GH issue #240)
- fixed potential segmentation faults triggered by missing font files
(GH issue #241)
- fixed GLIBCXX assertion error in new PDF handler (GH issue #242)
- improved handling of font subset prefixes in new, mutool-based PDF handler
(GH issue #242)
- several minor code improvements
dvisvgm-3.0.4 (2023-03-10)
- fixed issue that could prevent reading the output of subprocesses
(GH issue #232)
- removed optional dependency on libcrypto (OpenSSL) because the MD5 functions
have been deprecated (always using the bundled MD5 function now)
- added TeX Live conditionals to the build system (patch by Karl Berry)
- small code and manual page improvements
dvisvgm-3.0.3 (2023-02-21)
- fixed resetting of character contexts (GH issue #227)
- added missing #includes required for GCC 13
dvisvgm-3.0.2 (2023-01-30)
- fixed computation of font sizes in new PDF handler (GH issue #220)
- fixed viewBox coordinates determined by new PDF handler (GH issue #223)
- improved detection of font names used in PDF files (GH issue #224)
- minor code improvements
dvisvgm-3.0.1 (2023-01-10)
- added support for the 64-bit GS library in TeX Live
(patch sent by Akira Kakuto)
- MacTeX: explicitly lookup libgs in /usr/local/lib (GH issue #197)
- fixed character spacing when processing XDV glyph arrays (GH issue #198)
- fixed invalid removal of non-redundant clipPath elements (GH issue #203)
- fixed computation of the graphics extents printed to the console when using
the preview package (GH issue #209)
- several improvements of the autotool scripts (thanks to Sam James)
- improved processing of fonts when using the new PDF handler
dvisvgm-3.0 (2022-10-16)
- added a new PDF handler based on mutool to keep the PDF functionality
available which can no longer be realized with Ghostscript 10.1.0 due to
the replacement of its PostScript-based PDF interpreter
- replaced the bundled minimal Fontforge library (ff-woff) with a dedicated,
newly implemented library for embedding TTF/WOFF data into the SVG files
- added option --embed-bitmaps to embed bitmaps into the generated SVG files
instead of referencing the external files
- extended option --tmpdir to optionally suppress the creation of uniquely
named subfolders
- added filters :even and :odd to option --page to limit the given page ranges
to even and odd page numbers respectively
- fixed the call of ttfautohint to prevent potential memory errors
dvisvgm-2.14 (2022-08-12)
- added processing of SVG path elements inserted by "raw" specials in order to
treat them similar to generated ones
- added support for native font references lacking a file name suffix
- improved lookup of native fonts
- improved the removal of redundant SVG group elements
- fixed conversion of empty glyphs to TTF/WOFF
- updated bundled WOFF2 library
dvisvgm-2.13.4 (2022-04-20)
- fixed the size of bounding boxes applied when converting multiple pages
(GH issue #182)
- try to enable old PDF interpreter when using Ghostscript >= 9.56.0
(dvisvgm does not work with Ghostscript's new PDF interpreter)
dvisvgm-2.13.3 (2022-02-27)
- added SVG optimizer module 'reassign-clippaths' that searches for duplicate
clipPath elements, removes them, and updates the clip-path references
- replaced method to clip embedded EPS/PDF graphics that usually results in
faster rendering of the affected SVG sections
- fixed a regression regarding transformations of embedded EPS/PDF graphics
dvisvgm-2.13.2 (2022-02-23)
- improved clipping of embedded EPS/PDF graphics (GH issue #176)
dvisvgm-2.13.1 (2022-01-26)
- added evaluation of expression {?(...)} to special dvisvgm:rawdef
- fixed regression regarding positioning of PDF graphics (GH issue #174)
- fixed some build issues
dvisvgm-2.13 (2022-01-20)
- allow for conversion of multiple EPS files given on the command-line
- added variables n and N to option --output representing the current file
number and total number of files given on the command-line, respectively
- fixed selection of hash algorithm
- improved computation of glyph height and depth
- extended several paragraphs of the manual page with more detailed information
- SVG optimizer: simplify transform attributes also when collapsing groups
- updated bundled xxHash library to version 0.8.1
- updated bundled gtest to version 1.11
dvisvgm-2.12 (2021-08-16)
- added transparency support of SVG elements created outside the PS handler
(GH issue #148)
- fixed spacing issue caused by unexpected newline characters in SVG output
- fixed PS error occurred when defining (yet unsupported) PS shading patterns
- fixed issue in color handling of PS tiling patterns (GH issue #158)
- fixed displaced graphics occurred if PDF MediaBox is not located at the origin
- fixed handling of root directories of file paths
- improved handling of drive letters (Windows only)
- several code refactorings and improvements
dvisvgm-2.11.1 (2021-01-21)
- fixed possible ambiguity of GID to charcode mappings (GH issue #147)
- refactored representation of token objects in calculator class
- few minor code and test improvements
dvisvgm-2.11 (2020-11-28)
- added fallback mechanism for JFM-based virtual fonts proposed
by Takuji Tanaka (GH issue #144)
- improved detection of proper CMap files for current encoding
- fixed processing of Unicode surrogates present in CMap files
- fixed handling of pdf:mapline and pdf:mapfile specials
dvisvgm-2.10.1 (2020-09-22)
- added support for new Ghostscript transparency operators
.setfillconstantalpha and .setstrokeconstantalpha
- added support for new Ghostscript versioning scheme introduced with GS 9.53.0
- added few additional information to the manual page
- updated bundled brotli library to version 1.0.9
dvisvgm-2.10 (2020-08-12)
- added evaluation of LuaTeX native font definitions
- added computation of of italic correction for fake slanted glyphs
- dvisvgm now creates dedicated temporary folders for each call of
the program to prevent file collisions between different processes
- added evaluation of internal GS operators '.fillstroke' and '.eofillstroke'
introduced with GS 9.52 to implement PDF operators 'B' and 'B*'
(GH issue #139)
- fixed and improved optimization of nested group elements
- fixed optimization of 'scale' transformation
- fixed optimization of 'transform' attributes applied to images clipping paths
- fixed processing of PS operator 'eoclip'
- fixed processing of clipping path intersections with different
fill rule properties
- fixed processing of {?(...)} expressions (GH issue #136)
- fixed error message about unmatched closing tags in XML parser
- updated bundled FreeType library to version 2.10.2
- updated bundled xxHash library to version 0.8
dvisvgm-2.9.1 (2020-03-21)
- added macro {?(expr)} to enable the evaluation of math expressions in
raw SVG fragments (GH #130)
- multiplication operator "*" preceding an opening parentheses can now be
omitted in math expressions
- fixed the evaluation of transformation command "scale(c)" which is now
correctly treated as "scale(c, c)" (GH #131)
- minor layout optimizations of the PDF manual page
dvisvgm-2.9 (2020-03-13)
- added processing of PS operators 'image' and 'colorimage' to embed bitmaps
present in PS/PDF data into the generated SVG
- added command-line option --bitmap-format to set the format used to embed
bitmaps present in EPS/PDF files
- added fallback method to retrieve the resolution of GF files if stdout
of the Metafont subprocess can't be read through a pipe (GH #129)
- fixed broken conversion of PS tiling patterns
- fixed the functionality of PS operators 'xshow', 'yshow', and 'xyshow' for
multibyte characters
- fixed a PS error triggered by unsupported shading types < 4
- prevent negative 'height' and 'width' attributes created by optimizer
module 'simplify-transform'
- fixed potential segfault caused by deep recursion in huge SVG trees
- look for Ghostscript library name 'libgs.dylib.N' additionally to
'libgs.N.dylib' (Mac only)
- ensure that 'make install' installs the bundled manual page if it can't be
rebuilt due to missing build tools
- updated bundled xxHash library to version 0.7.3
dvisvgm-2.8.2 (2019-12-07)
- if available, call 'mf-nowin' instead of 'mf' to process Metafont files
(GH #121)
- fixed handling of null device in PS operator 'restore' (GH #122)
- fixed PS error triggered by backslashes in file paths (GH #123)
- fixed build issue related to GCC on Solaris 11
- some code cleanup
dvisvgm-2.8.1 (2019-11-14)
- added SVG optimizer module 'simplify-text'
- added support for PS operator 'nulldevice'
- copy absolute paths from special 'psfile' unchanged to the SVG file
- some code refactorings
dvisvgm-2.8 (2019-10-25)
- added support for JPEG, PNG, PDF, and SVG files to special 'psfile'
- added support for Ghostscript 9.50
- added support for elliptical arc segments in graphics paths
- added support for CMap operator 'begincidchar' (patch by Akira Kakuto)
- added support for experimental 128-bit XXH3 hashes
- extended optimizer module 'simplify-transform' to incorporate translation and
scaling components into positional and size attributes
- replaced CRC32 checksums used in cache files with XXH32 hashes
- updated potrace to version 1.16
- updated xxHash to version 0.7.2
- updated gtest to 1.10
- lots of code refactorings
dvisvgm-2.7.4 (2019-07-28)
- fixed memory issue occurred when calling Metafont
- fixed rounding issue in color conversion (GH #116)
- changed location of cache files from ~/.dvisvgm/cache to
$XDG_CACHE_HOME/dvisvgm which usually expands to ~/.cache/dvisvgm (GH #112)
- some minor refactorings
dvisvgm-2.7.3 (2019-07-12)
- fixed randomly missing glyph paths referenced by 'use' elements (GH #110)
- minor update of the man page
- some code refactorings
dvisvgm-2.7.2 (2019-06-07)
- adapted PostScript handler to incompatible changes introduced with
Ghostscript 9.27 (removal of GS_PDF_ProcSet and pdfdict)
dvisvgm-2.7.1 (2019-05-20)
- fixed a bug in PS operator 'setmatrix' (GH #106)
- fixed build issue reported on MacPorts
(https://trac.macports.org/ticket/58347)
- added source files required to access the MIKTeX session object
(required due to deprecation of the MiKTeX SDK)
dvisvgm-2.7 (2019-04-13)
- added option --optimize to perform several optimizations on the
generated SVG files (current optimizer modules: collapse-groups,
group-attributes, remove-clippath, simplify-transform) (GH #97)
- dvisvgm's "raw" specials are now parsed and converted to proper XML nodes
- several improvements to SVG graphics path descriptions:
* omit redundant spaces and leading zeros
* omit line commands representing zero-length lines
* improved detection of reflected control points in Bézier curve sequences
- added evaluation of PS operators xshow, yshow, and xyshow
- added evaluation of psfile/pdffile attribute 'clip' to clip the
drawing region to the bounding box of the image being processed (GH #104)
- added specials 'dvisvgm:bbox lock' and 'dvisvgm:bbox unlock' to disable and
enable updating the bounding box of the current page (GH #105)
- added optional modifier 'transform' to dvisvgm:bbox specials to allow for
applying the current transformation to the bounding box
- added macro '{?matrix}' to dvisvgm's 'raw' specials that expands to the
current transformation matrix
- renamed option --exact to --exact-bbox (backward compatible change)
- updated the bundled xxHash library to version 0.7.0
- lots of code refactorings
dvisvgm-2.6.3 (2019-03-09)
- create short RGB hex values for color attributes if possible
- fixed rejection of paper formats, like A4, by option --bbox
- fixed incomplete adaption of vertical orientation when processing
EPS/PDF files
- fixed handling of backslashes in EPS/PDF file paths (Windows only)
- updated bundled Google Test library to version 1.8.1
- some code refactorings and improvements of the build system
dvisvgm-2.6.2 (2019-01-23)
- fixed scaling of line properties in PS operator 'grestore'
- fixed handling of PS operators 'charpath' and 'show' which may
call each other internally
- improved processing of PS operator 'clippath'
- prevent visible side-effects of PS operator 'stringwidth'
- updated bundled brotli library to version 1.0.7
- some modifications of the build system to simplify maintenance in TeX Live
dvisvgm-2.6.1 (2018-10-12)
- added configuration option --disable-manpage to prevent generating
the manual page (GH issue #93)
- if configuration option --disable-bundled-libs is given and some of the
required system libraries are missing, the corresponding bundled library
is used as a fallback (GH issue #94)
- updated bundled brotli library to version 1.0.6
- fixed build issue occurred with GCC 4.8
dvisvgm-2.6 (2018-09-08)
- added option --page-hashes that allows for skipping the conversion of
a page if its content hasn't changed
- relaxed plausibility check of total page count stated in the postamble
(this value overflows if the DVI file contains more than 65535 pages)
- added validity checks for bop (begin of page) offsets present in the
bop and post commands
- some refactorings and minor improvements
dvisvgm-2.5 (2018-08-08)
- added multi-page support (option --page) to PDF mode (option --pdf)
- added evaluation of transformation options in PDF mode
- added support for all length units to option --transform
- TeX Live Win32: look for Ghostscript DLL in the TL folders as well
(thanks to Akira Kakuto for sending the patch)
- potrace has been added again to the bundled third-party libraries
- instead of linking the bundled libraries brotli, potrace, woff2, and
xxhash, the configure script now looks for the corresponding system
libraries by default
- added option --enable-bundled-libs to the configure script to build and
statically link the bundled libraries
- some refactorings
dvisvgm-2.4.2 (2018-07-18)
- fixed height and depth values computed when using the preview package
- removed additional borders from the bounding boxes of hyperlinked areas
- prevent warnings if special "psfile" is called with argument "/dev/null"
(e.g. option "psfixbb" of the preview package adds such specials)
- "make install" no longer fails if the manpage can't be built
dvisvgm-2.4.1 (2018-07-07)
- fixed handling of delay parameter of option --progress
- updated brotli library to version 1.0.5
- updated woff2 library to version 1.0.2
- updated URLs in manual page
- several minor code refactorings
dvisvgm-2.4 (2018-05-03)
- added special 'pdffile' similar to 'psfile' to embed PDF graphics
- added option --pdf to convert single-page PDF documents to SVG
- reassigned short option -P from --progress to --pdf
- added option --stdin to receive input from stdin
- option --stdout can now be combined with option --zip
- added processing of GS operators '.setshapealpha' and '.setblendmode'
- fixed outer transformations applied to psfile specials
- fixed computation of bounding boxes triggered by psfile specials
- several code refactorings
dvisvgm-2.3.5 (2018-03-23)
- added evaluation of PS operator 'setpagedevice' in psfile specials
- fixed evaluation of dvips color names
- fixed warning printed when using Ghostscript 9.23
dvisvgm-2.3.4 (2018-03-14)
- fixed error message printed when adding a single '-' on the command-line
- added missing data file that lead to failing tests (GH bug #87)
- updated brotli library to version 1.0.3
- some code refactorings
dvisvgm-2.3.3 (2018-02-20)
- fixed wrong behavior when requiring both default mapfiles and
pdf:mapline or pdf:mapfile specials
- fixed an exception thrown in case of unavailable fonts
dvisvgm-2.3.2 (2018-02-08)
- prevent the creation of redundant tspan elements
- added support for new JFM format (patch by Hironobu Yamashita)
- fixed build error occurred if GS development files were missing
- fixed a potential memory issue regarding option --cache
dvisvgm-2.3.1 (2018-01-12)
- fixed the width of characters slanted by a mapfile entry (GH bug #82)
- if ttfautohint fails for a font, dvisvgm now uses the unhinted font and
prints a corresponding warning message
- some code cleanup
dvisvgm-2.3 (2017-12-28)
- added experimental support for ttfautohint
- updated xxHash to version 0.6.4
- added configuration option to set location of libkpathsea (GH bug #71)
- some improvements of the build system
dvisvgm-2.2.3 (2017-12-12)
- updated the bundled brotli library to version 1.0.2
- fixed a potential memory issue
- some code and test improvements
dvisvgm-2.2.2 (2017-11-17)
- fixed memory issue regarding font maps (GH bug #79)
- avoid scientific notation of floating point numbers
- minor code improvements
dvisvgm-2.2.1 (2017-11-13)
- fixed portability issue when building the manpage (GH bug #72)
- fixed incomplete computation of PS line width (GH bug #77)
- further code refactorings
dvisvgm-2.2 (2017-10-19)
- added evaluation of pdf:pagesize specials
- added evaluation of PDF hyperlink specials
- try to load Ghostscript dylib on Mac systems (patch by Toby Fleming, GH bug #66)
- improved TPIC special handler, added evaluation of 'tx' special
- length values in dvisvgm specials now accept unit specifiers
- added pdftex.map to default mapfiles
- fixed potential infinite loop after starting subprocesses (GH bug #68)
- files included with psfile are now also searched in the texmf tree if not
present in the current working directory (GH bug #69)
- fixed transformation issue in computation of psfile position (GH bug #70)
- updated bundled brotli, woff2, and xxhash libraries
- several code refactorings and improvements
dvisvgm-2.1.3 (2017-02-20)
- fixed build failures of libfontforge on Solaris 10
- increased code portablity
dvisvgm-2.1.2 (2017-02-12)
- bundled the googletest sources to simplify building and executing the tests
- fixed a couple of issues related to LLVM's libc++
(thanks to Mojca Miklavec and Rasmus Larsen for their help to isolate the problems)
- fixed some potential memory leaks
- removed 'restrict' keyword from xxHash sources to avoid C++ compilation errors
(https://github.com/Cyan4973/xxHash/issues/88)
dvisvgm-2.1.1 (2017-02-07)
- don't rerun Metafont for missing fonts
- fixed build failure on OS X (GH bug #65)
- several minor code improvements and test enhancements
dvisvgm-2.1 (2017-01-19)
- added option --tmpdir to explicitly set temp folder
- temporary files are no longer created in the current working directory by
default but in the system's temp folder (GH bug #63)
- added warning/error messages if temporary files could not be written
- fixed collision of Unicode points in AGL table (GH bug #64)
- retain letter case of filenames even if not significant (Windows only)
- code refactorings and cleanup
dvisvgm-2.0.4 (2016-11-16)
- bundled reduced FontForge library (ff-woff) with the sources
- minor fixes in manpage and --help texts
- few code improvements
dvisvgm-2.0.3 (2016-09-27)
- fixed a regression in the character positioning of virtual fonts
- fixed positioning of rules
dvisvgm-2.0.2 (2016-09-19)
- fixed computation of the character depths of native fonts
- fixed a regression in the computation of DVI positions (GH bug #61)
dvisvgm-2.0.1 (2016-09-03)
- added optional argument parameter "autohint" to option --font-format in order
to create autohinted TTF, WOFF, or WOFF2 fonts
dvisvgm-2.0 (2016-08-29)
- added option --font-format to select the data format of embedded fonts
(currently supported formats: SVG, TTF, WOFF, WOFF2)
- switched the code base from C++03 to C++11
- reimplemented the command-line parser and the CommandLine class generator
- major refactorings of several parts of the code
dvisvgm-1.16 (2016-07-04)
- added support for XDV version 7 introduced by XeTeX 0.99995
- added optional processing of papersize specials
- added support for length units cc, dd, and sp
- fixed unit conversion in computation of bounding boxes
- fixed propagation of resolution value to the glyph vectorizer
- fixed transformation of background rectangle
- prevent processing of corrupted GF files
- major refactorings of the DVI reader and the SVG backend
dvisvgm-1.15.1 (2016-04-19)
- added explicit encoding attribute to the XML declaration again (GH bug #54)
- added support for AGL character names of the form 'uFOO' and 'uniFOO'
- fixed parsing of transformation parameters given on the command-line
- minor code and test improvements
dvisvgm-1.15 (2016-02-27)
- added option --comments to add additional information to the SVG file
- fixed a clipping bug in the PostScript handler
- some code improvements and refactorings
- moved test data files to a separate folder
dvisvgm-1.14.2 (2016-01-20)
- fixed handling of background color specials (now they affect all succeeding pages until the next change)
- fixed a potential memory issue caused by accessing an invalid iterator
- updated xxHash to version 0.5.0
- added xxHash to the output of --version=1
- minor additions to the manpage
- added test case to validate the hash values used in Unicode.cpp
dvisvgm-1.14.1 (2016-01-05)
- fixed an issue in the PostScript handler that could lead to invalid SVG files
if multiple DVI pages were converted
- added checks for invalid GF files to prevent undefined behavior
dvisvgm-1.14 (2015-12-28)
- added evaluation of PSTricks specials 'pst:' and 'PST:'
- the bounding box data created by the preview package is now adapted to create a tight box by default
- added option --bbox=preview to apply the unmodified bounding box data created by the preview package
- improved lookup of files located in the current working directory
- fixed a memory issue related to graphics paths
- improved extraction of kapathsea version number
- minor code and test improvements
dvisvgm-1.13 (2015-12-08)
- added evaluation of PS operators 'ashow', 'awidthshow', and 'widthshow' (GH bug #49)
- improved conversion of fonts referenced by PS code to graphics paths
- redundant 'moveto' commands are now removed from paths
- fixed issue concerning evaluation of PS operator 'setcolor'
- fixed output of PS error messages
- updated bundled xxHash library to revision 42
- minor code refactorings and cleanup
dvisvgm-1.12 (2015-11-18)
- added option --colornames to replace RGB values by SVG color names
- fixed resolving of character codes for fonts without supported chracater maps
- fixed a memory issue that could occur when calling Metafont
dvisvgm-1.11 (2015-09-21)
- improved mapping of unknown characters to Unicode
- improved handling of text elements in conjunction with \specials (patch by Till Tantau)
- fixed an issue that could lead to (invalid) U+0000 codepoints
- prevent creating invalid XML by quoting xlink:title attributes properly
- documentation: updated links to new website address
dvisvgm-1.10 (2015-07-15)
- added support for the new XDV format 6 created by XeTeX 0.99992
- improved mapping of PostScript character names to Unicode points
dvisvgm-1.9.2 (2015-04-08)
- avoid retracing of fonts if option --no-fonts and --trace-all=y are given
- skip tracer messages if no glyphs have been traced
- extended the build system to generate code coverage reports
- improved some tests of the test suite
- some general code refactorings and improvements
dvisvgm-1.9.1 (2015-02-28)
- extended --output pattern syntax by arithmetic expressions and width specifiers
- improved formatting of manpage
- fixed Clang build issue (patch by Peter Breitenlohner)
- fixed a build issue occurred with old MinGW compilers
- code cleanup and refactorings
dvisvgm-1.9 (2014-12-29)
- added partial implementation of PostScript operator 'shfill' to create color
gradient fills (supported shading types: free-form triangular, lattice-form
triangular, Coons, and tensor-product patch meshes)
- added options --grad-segments, --grad-overlap, and --grad-simplify to control
the approximation of color gradients
- added option --no-merge to create separate text elements for each character
(patch by Khaled Hosny)
- added a simple progress counter to the EPS to SVG converter
- added opt2cpp.py as a free replacement for my non-free opt2cpp.xsl script
(thanks to Khaled Hosny for the implementation and for providing it for free)
- added lookup of Ghostscript library in the Windows registry
- fixed validity check of DVI files
- fixed interaction of color specials and PostScript color operators
- several code refactorings and improvements
dvisvgm-1.8.1 (2014-08-29)
- unreferenced clipPath elements are now removed from the SVG files
- fixed side-effects caused by unexpected bop/eop operators in
PS specials (LP bug #1350688)
- few improvements to configure.ac (patches by Khaled Hosny)
- removed redundant code
dvisvgm-1.8 (2014-07-29)
- added option --clipjoin which tells dvisvgm to compute intersections
of clipping paths itself and not to delegate this task to the SVG renderer
- added option --relative to create relative rather than absolute path commands
- added evaluation of PS operator 'clippath' which copies the current clipping
path into the graphics path
- fixed PS operator 'show' to prevent the creation of unintended path overlays
- fixed memory leak in class FontEngine (patch by Khaled Hosny)
- fixed unintended throwing of a DVIException when dvisvgm is called with
option --list-specials
- Cygwin builds of dvisvgm now look for the proper filename of the Ghostscript DLL
dvisvgm-1.7 (2014-06-18)
- all DVI files are pre-processed now to allow the implementation of
advanced features that rely on data not available on the pages being
converted
- added support for internal hyperref links across pages
- added \special command dvisvgm:rawdef to insert raw SVG fragments to
the <defs> section
- added the new \special commands dvisvgm:rawset, dvisvgm:endrawset, and
dvisvgm:rawput to assign and access a sequence of SVG fragments via an
identifier (LP feature request #1215878)
- removed redundant <missing-glyph> elements from SVG files
- fixed support of external fonts containing characters not mapped by the
embedded unicode tables (LP bug #1276689)
- fixed incorrect extent values shown in conjunction with the preview package
- many refactorings and code improvements
dvisvgm-1.6 (2014-04-22)
- added option --zoom to "visually" scale the generated SVG graphics while
preserving the original size and position values of the graphic objects
- extended argument syntax of option --linkmark to allow to select the
box/line color
- changed default link marker from 'line' to 'box'
- changed link markers to be only split on line breaks while extended in all
other cases
- if libgs is not directly linked to the binary, dvisvgm now looks for
libgs.so.X instead of libgs.so (supported GS ABIs: X = 7, 8, 9)
- removed time stamp and machine triplet from generated SVG files
- some code improvements and refactorings
dvisvgm-1.5.3 (2014-04-11)
- improved positioning of PostScript graphics
- fixed positioning of DVI rules/rectangles
- switched internal computations from TeX points (pt) to PostScript points (bp)
dvisvgm-1.5.2 (2014-01-10)
- fixed handling of global font colors and color specials
- several code improvements
dvisvgm-1.5.1 (2013-10-29)
- fixed processing of bounding box data created by the preview package
- fixed processing of font definitions across DVI pages
- fixed compilation issues occurred if processing of PS specials is disabled
- don't print the logical page number if it's equal to the physical one
- some minor code improvements
dvisvgm-1.5 (2013-09-02)
- added support for DVI format 3 as created by pTeX in vertical/tate mode
- added support for DVI format 5 (XDV) as created by XeTeX
- replaced numeric entity references by corresponding UTF-8 characters in
generated SVG files
- added px unit to font-size attributes as used in the stylesheet section
to ensure correct computation of font sizes (LP bug #1215857)
- various code refactorings
dvisvgm-1.4 (2013-08-02)
- added basic support for CMap files and CID-based fonts
- added character mapping from CIDs to char codes based on the encoding tables of a non-CID font
- added support for OTF fonts
- added evaluation of bounding box data generated by the preview package
- extended option --linkmark to mark hyperlinked areas with an arbitrary background color
- PS handler: improved evaluation of PS header specials
- PS handler: improved evaluation of operator 'show'
- removed DOCTYPE declaration from generated SVG files
- removed encoding attribute from xml declaration (replaces ISO-8859-1 with UTF-8)
- various code improvements and refactorings
dvisvgm-1.3 (2013-05-13)
- added support for hyperref specials
- added command-line option --linkmarker to select the way how to mark hyperlinked areas
- dvisvgm builds for MiKTeX now try to access the Ghostscript DLL provided by MiKTeX so that
it's no longer necessary to install Ghostscript separately
- improved the handling of TFM files to avoid failures in case of malformed files
- added evaluation of Japanese Font Metric (JFM) files
- the bundled potrace library has been removed from the source tarball as it's easy to build
the latest releases from the original sources available at http://potrace.sourceforge.net
- several code refactorings
dvisvgm-1.2.2 (2013-04-26)
- fixed a bug that prevented the lookup of fontmap files
- avoid throwing an exception but print a warning message if MiKTeX is not available
- print a warning message if PostScript specials are found but ignored
- added information about "dvisvgm -E" to the --help text and to the manpage
- various code refactorings and cleanups
dvisvgm-1.2.1 (2013-04-09)
- updated bundled potrace library to version 1.11
- avoid building bundled potracelib if system library is present (patch by Alexis Ballier)
- allow background color specials to create white background rectangles
- code refactorings and cleanup
dvisvgm-1.2 (2013-03-01)
- PostScript handler: added support of tiling patterns
- PostScript handler: added support for EPS files with binary headers/footers
- added option --eps to directly convert EPS files to SVG
- added option --precision to select the number of decimal places used in the generated SVG files
- added an optional argument to --help to choose a display variant
- fixed the text alignment of the --help output
- improved handling of PostScript operator "show"
- choose the correct output location if the input file argument contains path specifiers (Windows only)
dvisvgm-1.1 (2013-01-22)
- added evaluation of pdf:mapline and pdf:mapfile specials
- added evaluation of subfont file definitions (.sfd files)
- added support for TTC (TrueType collection) fonts
- added evaluation of font style parameters given in a font map definition
- renamed option --map-file to --fontmap
- the new option --fontmap allows multiple mapfile arguments and optional mode specifiers
- if a PostScript error occurs, dvisvgm prints an error message together with the
PS operand stack, as generated by Ghostscript
- if font checksums don't match, dvisvgm prints a warning now
- avoid throwing exceptions if referenced encoding files are not available
- added support for 64bit Windows builds
- removed compilation error when using a C++11 compiler (patch by Peter Breitenlohner)
- some code refactorings and improvements
dvisvgm-1.0.12 (2012-09-27)
- print a message if the processing of PostScript specials is disabled
- the resulting SVG is now scaled to bp ("big point" units) properly
- added the evaluation of PS operators rectclip, rectfill, and rectstroke
- ignore dvips operator bop if present in a PS special
- fixed processing of special strings that contain newline characters
dvisvgm-1.0.11 (2012-03-09)
- added Ghostscript to library list printed by --version=yes
- fixed a bug in the number parser that could lead to displaced objects (SF bug #3471097)
- corrected the computation of bounding boxes of DVI rules (lp bug #948713)
- improved code compatibility to make dvisvgm compile with clang++ (patch by Vladimir Lomov)
- fixed formatting issues in the manual page
- updated information about bug reporting (tracker moved to Launchpad)
dvisvgm-1.0.10 (2011-12-18)
- introduced environment variable DVISVGM_COLORS to allow user-defined message colors
- fixed linking issue concerning libfreetype
- fixed potential clashes of character IDs
dvisvgm-1.0.9 (2011-10-13)
- fixed segfault occurred in TeX Live Win32 caused by mf.exe being unavailable
(thanks to Akira Kakuto for tracking down the issue)
- updated bundled potrace library to version 1.10
- some minor code improvements
dvisvgm-1.0.8 (2011-05-31)
- PS handler: added evaluation of PS operators save, restore, and grestoreall
- PS handler: fixed potential segfault caused by invisible zero-length paths
- fixed computation of current drawing position influenced by PS and DVI actions
- don't stop Metafont conversions on errors any longer in order to convert
buggy MF fonts properly
dvisvgm-1.0.7 (2011-05-06)
- improved overall handling of PS specials
- fixed broken PS special subset 'ps::'
- fixed scaling of PS line properties (width, dash distance, etc.)
- fixed semantics of TPIC special 'ip' (doesn't draw polygon outlines any longer)
dvisvgm-1.0.6 (2011-04-21)
- fixed segfault occurred if a (malformed) DVI file calls set_char/put_char
without preceding font definition
- added CTRL-C handler
- MiKTeX support updated to version 2.9
- some code refactorings
dvisvgm-1.0.5 (2011-03-01)
- added optional integer argument to option -n to disable generation of <use> elements
- added missing unit to width/height attributes of svg root element (SF bug #3185773)
- added integrity check to font cache files
- updated bundled potrace library to version 1.9
- fixed a couple of minor issues
dvisvgm-1.0.4 (2010-12-18)
- added missing line width/dash pattern scaling to PS handler
- fixed scaling issue in PS positioning
- fixed compilation issue related to FreeType 2.4.0
dvisvgm-1.0.3 (2010-08-06)
- applied some more portability patches for TeX Live
- fixed a potential memory issue
- fixed a transformation issue regarding special 'psfile' (SF bug #3037372)
dvisvgm-1.0.2 (2010-06-22)
- applied latest TeX Live portability patches sent by Peter Breitenlohner and Karl Berry
- fixed a potrace name clash occurred on Mac OS X Tiger
- fixed putchar() name clash occurred on Solaris
- fixed a couple of conversion warnings
- updated the test suite
dvisvgm-1.0.1 (2010-06-11)
- fixed a memory issue in the PS handler that could lead to a segfault (SF bug #3013392)
- fixed a recursion issue in the PS handler
- suppress ANSI color code when terminating
dvisvgm-1.0 (2010-06-08)
- conversion of multiple pages (must be enabled explicitly, see option --pages)
- added transparency support to the PS handler
- improved conversion results of the PS handler
- added support for computation of local bounding boxes
- optional colorization of dvisvgm messages (option --color)
- improved progress indicator (option --progress)
- a couple of improvements of the build system
dvisvgm-0.9.1 (2010-04-23)
- CSS style definitions omit unnecessary fonts now
- SVG validity was broken when using font elements
- fixed two memory issues that could lead to segfaults
dvisvgm-0.9 (2010-03-25)
- added option --exact and corresponding algorithms to compute the exact
bounding boxes of characters
- added option --keep that prevents deleting temporary font files
- extended option --trace-all by an optional boolean argument controlling
the re-tracing of glyphs
- fixed bug in evaluation of embedded PS headers
- several code refactorings
dvisvgm-0.8.8 (2010-02-02)
- added option --libgs and evaluation of environment variable LIBGS
to overwrite the expected file name of the GS shared library
(only available if dvisvgm isn't linked against libgs and GS support
isn't completely disabled)
- option --bbox can now be used to enlarge the minimal bounding box by
a given amount
- fixed bug in evaluation of option --page
- applied patches sent by Peter Breitenlohner to prepare the integration of
dvisvgm into TeX Live
- some code refactorings
dvisvgm-0.8.7 (2009-11-09)
- fixed a bounding box issue concerning italic corrections
- PS handler: zero-length paths are now drawn as dots
- PS handler: fixed a path positioning issue
- PS handler: colors set by color specials are now considered properly
- added macro {?nl} to be used with special dvisvgm:raw
dvisvgm-0.8.6 (2009-10-13)
- renamed command-line option --bbox-format to --bbox
- option --bbox can now be used to set an arbitrary bounding box
- added the two special variants "dvisvgm:bbox abs" and "dvisvgm:bbox fix"
- PS clipping path sequences and intersections are now handled correctly
- fixed a PS bounding box bug
- fixed a couple of PS positioning issues reported by John Bowman
- fixed a bit shift overflow in the font tracer occurred on 64-bit systems
dvisvgm-0.8.5 (2009-10-01)
- added an optional depth parameter to special dvisvgm:raw
- updated the man page
- added LGPL license text needed for the gzstream wrapper classes
dvisvgm-0.8.4 (2009-09-17)
- improved the command-line parser to be more POSIX-compliant
- added a simple progress indicator for time-consuming special operations
- option --cache prints more information about the cached fonts
- fixed a clipping bug in the PostScript handler
(thanks to John Bowman for also providing a patch for this issue)
- fixed a bug in computation of the PS bounding box
- fixed a memory bug in the GF tracer module
dvisvgm-0.8.3 (2009-08-28)
- added basic evaluation of the PostScript "show" operator
(handles PSTricks Type 3 fonts properly now)
- improved checks for Ghostscript and potrace library in configure script
- external Ghostscript and potrace development files are used if available
- PostScript header/prologue files are now loaded regardless of converted page
- replaced command-line option variant --cache=? by --cache
dvisvgm-0.8.2 (2009-08-24)
- changed license of dvisvgm to GPL version 3 or later
- replaced getopt-based command-line parser by own implementation
in order to simplify future internationalizations
- fixed memory bug in fontmap reader
dvisvgm-0.8.1 (2009-08-02)
- added evaluation of more psfile parameters
- fixed computation of bounding box in psfile special
- fixed compilation errors and a conversion bug occurred on x64 systems
dvisvgm-0.8 (2009-07-27)
- experimental evaluation of PostScript specials has been added (requires
a recent version of the Ghostscript shared library libgs.so or gsdll32.dll)
- several code improvements and refactorings
- fixed compilation bug occurred when using GCC 4.4.x
dvisvgm-0.7.3 (2009-04-24)
- fixed bug in font map reader that could cause a segmentation fault
- fixed bug in creation of shorthand path drawing commands
- fixed bug in TPIC special handler
dvisvgm-0.7.2 (2009-04-02)
- font caching has been added (speeds up embedding of bitmap fonts)
- added option --trace-all that enables tracing of all glyphs of all
bitmap fonts used in the current DVI file. Even glyphs that are currently
not needed are considered. This avoids multiple calls of Metafont for the
same fonts. In combination with the new caching functionality this can
drastically increase the speed of successive dvisvgm calls.
- if option --no-fonts is used, all glyph sizes are now computed correctly
- use shorthand path commands in SVG fonts if possible
dvisvgm-0.7.1 (2009-03-09)
- evaluation of a subset of emTeX specials has been added
- specials for embedding of raw SVG snippets have been added
- evaluation of TPIC specials has been added
- added background color support
- added option -n, --no-fonts that replaces fonts by paths
(enables applications w/o SVG font support to render dvisvgm's output properly)
- moved defs to top of SVG file to make Firefox's SVG renderer happy
- fixed bug in color handler
dvisvgm-0.7 (2009-02-16)
- basic support for evaluation of specials has been added
- evaluation of color specials has been added
- renamed command-line option -S to --no-specials and inverted previous behavior
- selected special sets can be disabled by optional arguments to --no-specials
(currently only color specials)
- added option --no-style (see manpage for further details)
- added optional '+' flag to option --map-file (see manpage for further details)
- fixed \magnificaton bug (dvi magnification factor is now applied properly)
- fixed buggy call of maketfm/makemf in Windows/MiKTeX version
- fixed buggy evaluation of command-line argument -m/--map-file
- several internal code improvements
dvisvgm-0.6.1 (2009-01-29)
- added support for dvips map files
- removed dependency on dvipdfm's map file (now ps2pk.map, psfonts.map or dvipdfm.map is used by default)
- fixed compilation bug #2535497
- some internal refactorings
dvisvgm-0.6 (2009-01-23)
- added support for varying font encodings
- updated MiKTeX support using its COM interface
- fixed incomplete handling of nested virtual fonts
- fixed a font handling bug that could cause segmentation faults
- fixed bug in matrix transformation code
- updated bundled potrace library to version 1.8
dvisvgm-0.5 (2007-03-26)
- redesigned and improved font handling
- added support for virtual fonts
- evaluation of dvipdfm's map file to find font files with differing
names (e.g. cork-lmr10 => lmr10)
- automatic invocation of mktexmf etc. in case of missing font files (tfm, mf)
- command-line option -m has been renamed to -M
- added command-line options -m/--map-file and -n/--no-mktexmf
- memory bug in StreamCounter class has been fixed
- added sources of Peter Selinger's potrace library (part of potrace, https://potrace.sourceforge.net)
to simplify the build process
dvisvgm-0.4.3 (2007-01-03)
- problem with changed freetype API (freetype version >= 2.2.1) has been fixed
- updated MiKTeX support to version 2.5
- minor code improvements
- some unit tests based on CxxTest (http://cxxtest.sourceforge.net) have been added
dvisvgm-0.4.2 (2005-09-22)
- added SVG transformation options
- some bugfixes in command line frontend and TFM handling
- code refactorings to improve modularity and extensibility
dvisvgm-0.4.1 (2005-09-02)
- added option -b to specify the bounding box
- added a manual page
dvisvgm-0.4 (2005-08-24)
- Added a glyph tracing module that vectorizes Metafont's bitmap output
if no corresponding Type 1 font file is available.
dvisvgm-0.3 (2005-08-10)
- Initial public release with basic conversion functionality.
================================================
FILE: README
================================================
dvisvgm -- A DVI to SVG converter
DESCRIPTION
dvisvgm is a utility for TeX/LaTeX users. It converts DVI, EPS, and
PDF files to the XML-based scalable vector graphics format SVG.
DEPENDENCIES
dvisvgm relies on the following free libraries:
* Clipper (https://www.angusj.com/delphi/clipper/documentation/Docs/Overview/_Body.htm)
To compute the intersections of two curved paths, dvisvgm flattens the paths
to polygons, intersects them using Clipper, and reconstructs the curves
afterwards.
* FreeType 2 (https://freetype.org)
This library is used to extract the glyph outlines from vector fonts
(PFB, OTF, TTF).
* Ghostscript (https://www.ghostscript.com)
The PostScript special handler requires the Ghostscript shared library
libgs.so.N (Linux) or gsdll32.dll/gsdll64.dll (Windows) to be installed.
If the configure script finds the corresponding Ghostscript development
files on the system, it directly links against libgs.so.N, where N is the
library's ABI version. Otherwise, the library is looked up during runtime,
and the PostScript support is enabled only if the shared library can be
found. Due to incompatible changes of the Ghostscript API, dvisvgm requires
Ghostscript 8.31 or later.
* kpathsea (https://tug.org/kpathsea)
This library is part of the Web2C package and is usually installed in
conjunction with a TeX distribution. kpathsea provides functions for
searching files in the large texmf tree. Please ensure that you use the
kpathsea version coming with or matching your TeX system.
* potracelib (https://potrace.sourceforge.net)
Peter Selinger's bitmap tracing library is utilized to vectorize Metafont's
bitmap output. A recent version is also part of the dvisvgm sources.
* ttfautohint (https://www.freetype.org/ttfautohint)
dvisvgm can optionally be built with ttfautohint support to allow for
autohinting the generated TrueType, WOFF, and WOFF2 fonts. Since this is
still an experimental feature, ttfautohint support is disabled by default.
The development files required for Windows can be found at
https://github.com/mgieseki/ttfautohint-dll.
* woff2 and brotli (https://github.com/google/woff2)
These Google libraries are bundled with the dvisvgm sources. They are used
to create WOFF2 from TrueType fonts.
* xxHash (https://github.com/Cyan4973/xxHash)
The xxHash library provides a fast hash algorithm. dvisvgm uses it to
create unique integer values from PostScript character names in order to
store them in a compact way together with their Unicode points. A recent
version of xxHash is bundled with the dvisvgm sources.
* zlib (https://www.zlib.net)
This library is required to create compressed SVGZ files.
BUILDING DVISVGM FROM SOURCE
dvisvgm is written in C++11 (ISO C++ standard 2011) and requires an appropriate
compiler, like GCC 4.9, Clang 3.3, or any later version. The configure script
checks for the availability of C++11 support and adds the proper compiler
options if necessary.
Quick installation info:
* ensure that the development packages of all libraries, listed above,
are installed
* type "autoreconf -fi" if "configure" is not present in the dvisvgm
root folder
* either type "./configure" if you don't want to use the bundled libraries
brotli, potrace, woff2, and xxHash but link against the corresponding
system libraries,
or type "./configure --enable-bundled-libs" in order to build and
statically link the bundled libraries.
* type "make"
* type "make install" as root (or "sudo make install")
For generic configuration instructions see the file INSTALL.
The configure script should recognize all necessary parameters.
If a library is installed but not detected, specify its location
as commandline parameter of configure, e.g.
./configure --with-freetype=/usr/local/freetype
(all available options can be displayed with ./configure --help)
The tracer module calls Metafont in case of lacking TFM or PFB files
via a system call. Please ensure that Metafont is installed and
reachable through the system's search path.
If you don't like compiling the sources yourself, you can
download pre-compiled executables for Windows and MiKTeX
from the project website instead (see below).
USAGE
Information about the command-line interface and the available options can be
found in the manual page.
ADDITIONAL INFORMATION
This package is available from CTAN (dviware/dvisvgm) and can be downloaded
from the project website as well:
https://dvisvgm.de
Here you can find the sources, pre-compiled binaries and further additional
information about the converter and related topics.
If you've found a bug, please let me know. You can either send me an email or
preferably use the bug tracker at GitHub (https://github.com/mgieseki/dvisvgm).
COPYRIGHT
Copyright (C) 2005-2025 Martin Gieseking <martin.gieseking@uos.de>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
Public License for more details.
See file COPYING for details.
================================================
FILE: README.md
================================================
_dvisvgm_ – A fast DVI to SVG converter
=============================================
[](https://github.com/mgieseki/dvisvgm/actions/workflows/c-cpp.yml)
[](https://ci.appveyor.com/project/mgieseki/dvisvgm/branch/master)
[](https://copr.fedorainfracloud.org/coprs/mgieseki/dvisvgm/package/dvisvgm)
[](https://scan.coverity.com/projects/1099)
[](https://www.gnu.org/licenses/gpl-3.0.en.html)
[](https://github.com/mgieseki/dvisvgm/releases)
Description
-----------
_dvisvgm_ is a utility for TeX/LaTeX users. It converts
[DVI](https://en.wikipedia.org/wiki/Device_independent_file_format),
[EPS](https://en.wikipedia.org/wiki/Encapsulated_PostScript), and
[PDF](https://en.wikipedia.org/wiki/PDF) files to the
XML-based scalable vector graphics format [SVG](https://www.w3.org/TR/SVG).
The latest releases support standard DVI files (version 2) as well as DVI output
created by [pTeX](https://ctan.org/pkg/ptex) in vertical mode (version 3),
and [XeTeX](https://xetex.sourceforge.net) (versions 5 to 7, also known as XDV).
To get an impression of the conversion results, have a look at the
[examples](https://dvisvgm.de/Examples) created with _dvisvgm_.
Short overview of the main features:
* Complete font support including [virtual fonts](https://texfaq.org/FAQ-virtualfonts), evaluation of [font encodings](https://texfaq.org/FAQ-whatenc), CMap files, sub-font definitions and font maps.
* Glyph outlines of all required fonts are embedded into the generated SVG files.
* The font data can be embedded in SVG, TrueType, WOFF, or WOFF2 format.
* Glyph outlines of fonts that are not available in a vector format are generated on-the-fly by vectorizing [METAFONT](https://en.wikipedia.org/wiki/Metafont)'s bitmap output.
* _dvisvgm_ allows to replace [font elements](https://www.w3.org/TR/SVG/fonts.html) by [paths](https://www.w3.org/TR/SVG/paths.html) so that applications without SVG font support are enabled to render dvisvgm's output properly.
* Computes tight bounding boxes for the generated graphics, but supports common paper formats and arbitrary user-defined sizes as well.
* Option `--eps` allows to convert [EPS](https://en.wikipedia.org/wiki/Encapsulated_PostScript) files to SVG.
* Option `--pdf` allows to convert [PDF](https://en.wikipedia.org/wiki/PDF) documents to SVG.
* [Intersections of clipping paths](https://dvisvgm.de/Clipping) can be computed directly instead of delegating this task to the SVG renderer which increases the compatibility of the generated SVG files.
* Approximates PostScript [color gradient fills](https://dvisvgm.de/Gradients) not directly supported by SVG 1.1.
* The generated SVG structure and data can be improved with the built-in [SVG optimizer](https://dvisvgm.de/Manpage/#opt-optimize).
* Optionally creates compressed [SVGZ](https://en.wikipedia.org/wiki/Scalable_Vector_Graphics#Compression) files.
* Provides options for applying page transformations, like translation, rotation, scaling, and skewing.
* Evaluates several [specials](https://texfaq.org/FAQ-specials) including color, emTeX, tpic, hyperref/HyperTeX, papersize, PDF hyperlink and mapfile, as well as PostScript specials.
* The converter was successfully tested on various Linux ([TeX Live](https://www.tug.org/texlive)) and Windows ([MiKTeX](https://www.miktex.org), TeX Live) systems.
* _dvisvgm_ has been added to [TeX Live](https://www.tug.org/texlive), [MiKTeX](https://www.miktex.org), and [MacPorts](https://www.macports.org). It is therefore available for a wide range of operating systems.
Usage
-----
For detailed information about the command-line interface and all available
options of _dvisvgm_, see the [manual page](https://dvisvgm.de/Manpage).
Dependencies
------------
_dvisvgm_ relies on the following free libraries:
* [Clipper](https://www.angusj.com/delphi/clipper/documentation/Docs/Overview/_Body.htm)
To compute the intersection of two curved paths, _dvisvgm_ flattens the paths to
polygons, intersects them using a slightly modified version of Clipper, and reconstructs
the curves afterwards. A slightly modified version of Clipper is bundled with the sources.
* [FreeType 2](https://freetype.org)
This library is used to extract the glyph outlines from vector fonts (PFB, OTF, TTF).
* [Ghostscript](https://www.ghostscript.com)
The PostScript special handler requires the Ghostscript shared library `libgs.so.N` (Linux)
or `gsdll32.dll`/`gsdll64.dll` (Windows) to be installed. If the configure script
finds the corresponding Ghostscript development files on the system, it
directly links against `libgs.so.N`, where _N_ is the library's ABI version.
Otherwise, the library is looked up during runtime, and the PostScript support is
enabled only if the shared library can be found. Due to incompatible changes of the
Ghostscript API, _dvisvgm_ requires Ghostscript 8.31 or later.
* [Kpathsea](https://tug.org/kpathsea)
This library is part of the Web2C package and is usually installed in
conjunction with a TeX distribution. Kpathsea provides functions for searching
files in the large `texmf` tree. Please ensure that you use the kpathsea version
coming with or matching your TeX system.
* [potracelib](https://potrace.sourceforge.net)
Peter Selinger's bitmap tracing library is utilized to vectorize Metafont's
bitmap output. It's also bundled with the _dvisvgm_ sources.
* [ttfautohint](https://www.freetype.org/ttfautohint)
_dvisvgm_ can optionally be built with ttfautohint support to allow for autohinting the
generated TrueType, WOFF, and WOFF2 fonts. Since this is still an experimental feature,
ttfautohint support is disabled by default. To enable it, run `configure` with option
`--with-ttfautohint`.
* [woff2](https://github.com/google/woff2) and [brotli](https://github.com/google/brotli)
These Google libraries are bundled with the _dvisvgm_ sources. They are used
to create WOFF2 files from TrueType fonts.
* [xxHash](https://github.com/Cyan4973/xxHash)
The xxHash library provides a fast hash algorithm. _dvisvgm_ uses it to create
unique integer values from PostScript character names in order to store them in
a compact way together with their Unicode points. A recent version of xxHash is
bundled with the _dvisvgm_ sources.
* [zlib](https://www.zlib.net)
This library is required to create compressed [SVGZ](https://en.wikipedia.org/wiki/Scalable_Vector_Graphics#Compression) files.
Building dvisvgm from source
----------------------------
_dvisvgm_ is written in C++11 ([ISO C++ standard 2011](https://www.iso.org/standard/83626.html))
and requires an appropriate compiler, like [GCC](https://gcc.gnu.org) 4.9, [Clang](https://clang.llvm.org) 3.3,
or any later version. The configure script checks for the availability of C++11 support and
adds the proper compiler options if necessary.
Quick installation info:
* ensure that the development packages of all libraries, listed above, are installed
* type `autoreconf -fi` if `configure` is not present in the _dvisvgm_ root folder
* either type `./configure` if you don't want to use the bundled libraries _brotli_, _potrace_, _woff2_, and _xxHash_ but link
against the corresponding system libraries,
* or type `./configure --enable-bundled-libs` in order to build and statically link the bundled libraries.
* type `make`
* type `make install` as root (or `sudo make install`)
For generic configuration instructions see the file INSTALL.
The configure script should recognize all necessary parameters.
If a library is installed but not detected, specify its location
as command-line parameter of configure, e.g.
`./configure --with-freetype=/usr/local/freetype`
(all available options can be displayed with `./configure --help`)
The tracer module calls Metafont in case of lacking TFM or PFB files
via a system call. Please ensure that Metafont is installed and
reachable through the system's search path.
If you don't like compiling the sources yourself, you can download
pre-compiled binaries for Windows and MiKTeX from the
[project website](https://dvisvgm.de) instead.
Additional Information
----------------------
This package is available from [CTAN](https://ctan.org/pkg/dvisvgm), and can be
downloaded from the [project website](https://dvisvgm.de) as well. There you find
the sources, [pre-compiled binaries](https://dvisvgm.de/Downloads), the
[manual page](https://dvisvgm.de/Manpage), [FAQs](https://dvisvgm.de/FAQ) and further
information about the converter and related topics.
If you've found a bug, please let me know. You can either send me an email or
preferably use the [bug tracker at GitHub](https://github.com/mgieseki/dvisvgm/issues).
Copyright
---------
Copyright © 2005–2025 [Martin Gieseking](mailto:martin.gieseking@uos.de)
This program is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the [GNU General Public License](https://www.gnu.org/licenses/gpl-3.0.en.html) for more
details.
================================================
FILE: configure.ac
================================================
# This file is part of dvisvgm
# Copyright (C) 2005-2025 Martin Gieseking <martin.gieseking@uos.de>
#
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT([dvisvgm],[3.6],[martin.gieseking@uos.de])
DATE="October 2025"
AC_CONFIG_SRCDIR(src)
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
AC_CANONICAL_HOST
AM_INIT_AUTOMAKE([subdir-objects dist-xz])
AM_CONDITIONAL([TEXLIVE_BUILD], [test "x$enable_texlive_build" = xyes])
AH_TEMPLATE([HOST_SYSTEM], [The machine triplet of the host system])
AC_DEFINE_UNQUOTED([HOST_SYSTEM], ["$host"])
# Checks for programs.
AC_PROG_CC
AC_PROG_CXX
AX_CXX_COMPILE_STDCXX([11])
AM_PROG_AR
LT_INIT
AC_LANG(C)
AX_CHECK_COMPILE_FLAG([-Wmismatched-tags -Wno-mismatched-tags], [CXXFLAGS="$CXXFLAGS -Wno-mismatched-tags"])
AC_CHECK_HEADERS([sys/time.h sys/timeb.h xlocale.h])
AC_HEADER_TIOCGWINSZ
CPPFLAGS_SAVE="$CPPFLAGS"
CFLAGS_SAVE="$CFLAGS"
LDFLAGS_SAVE="$LDFLAGS"
# Check availability and usability of the kpathsea library
AC_ARG_VAR(KPSE_CFLAGS, [C/C++ compiler flags for the kpathsea library])
AC_ARG_VAR(KPSE_LIBS, [linker flags for the kpathsea library])
AC_ARG_VAR(KPSE_LIBS, [])
AC_ARG_WITH([kpathsea],
[AS_HELP_STRING([--with-kpathsea=prefix], [set location of kpathsea library])],
[with_kpathsea="$withval"],
[with_kpathsea=yes])
AS_IF([test "x$with_kpathsea" != "xyes"],
[KPSE_CFLAGS="-I$with_kpathsea/include" KPSE_LIBS="-L$with_kpathsea/lib"]
[CPPFLAGS="$CPPFLAGS $KPSE_CFLAGS" CFLAGS="$CFLAGS $KPSE_CFLAGS" LDFLAGS="$LDFLAGS $KPSE_LIBS"])
AC_CHECK_HEADER([kpathsea/kpathsea.h],,
[AC_MSG_ERROR([please install the kpathsea development package])])
AC_CHECK_LIB([kpathsea], [kpse_find_file],,
[AC_MSG_ERROR([libkpathsea not found, please install the corresponding package first])])
AC_MSG_CHECKING([kpathsea version])
AC_RUN_IFELSE([AC_LANG_SOURCE([#include <stdio.h>
#include <stdlib.h>
#include <kpathsea/kpathsea.h>
int main() {
FILE *f;
f = fopen("kpseversion", "w");
if(!f) exit(1);
fprintf(f, "%s\n", KPSEVERSION);
fclose(f);
exit(0);
}])],
[kpseversion=`cat kpseversion|sed 's/kpathsea version //'`], [kpseversion=], [kpseversion=unknown])
AC_MSG_RESULT("$kpseversion")
rm -f kpseversion
AS_IF([test -z "$kpseversion"],
[AC_MSG_ERROR([Could not compile a simple kpathsea program -- check your installation])])
AC_SUBST(KPSE_CFLAGS)
AC_SUBST(KPSE_LIBS)
# Check how to link Ghostscript
have_libgs=yes
AC_CHECK_HEADER([ghostscript/iapi.h],
[AC_CHECK_LIB(gs, gsapi_revision,, [have_libgs=no])],
[have_libgs=no])
AS_IF([test "x$have_libgs" = "xno"],
# Ghostscript not found, check for dlopen
[AC_CHECK_LIB(dl, dlopen,,
[AC_DEFINE(DISABLE_GS, 1, [Set to 1 if PostScript support should be disabled])]
[AC_MSG_WARN(PostScript support disabled)])])
# Check for pkg-config
PKG_PROG_PKG_CONFIG
# Check for libraries.
PKG_CHECK_MODULES([FREETYPE], [freetype2])
AC_ARG_ENABLE([woff],
[AS_HELP_STRING([--disable-woff], [Disable WOFF support @<:@default=no@:>@])],
[],
[enable_woff=yes])
AM_CONDITIONAL([ENABLE_WOFF], [test "x$enable_woff" = "xyes"])
AC_ARG_WITH([ttfautohint],
[AS_HELP_STRING([--with-ttfautohint@<:@=prefix@:>@], [enable ttfautohint support (disabled by default)])],
[with_ttfautohint="$withval"],
[with_ttfautohint=no])
# Add option to enable linking of bundled libraries (brotli, potrace, woff2, xxhash).
AC_ARG_ENABLE([bundled-libs],
[AS_HELP_STRING([--enable-bundled-libs], [use bundled libraries instead of the system ones @<:@default=no@:>@])])
AM_CONDITIONAL([USE_BUNDLED_LIBS], [test "x$enable_bundled_libs" = "xyes"])
# If option --enable-bundled-libs is not given, look for system libraries of brotli, potrace, woff2, and xxhash.
AS_IF([test "x$enable_bundled_libs" != "xyes"],
[AC_CHECK_HEADER(potracelib.h,
[AC_SEARCH_LIBS(potrace_trace, [potrace], [have_potrace=yes])])]
[AC_CHECK_HEADER([xxhash.h],
[AC_SEARCH_LIBS(XXH32, [xxhash], [have_xxhash=yes])])]
[AS_IF([test "x$enable_woff" = "xyes"],
[PKG_CHECK_MODULES(BROTLI, [libbrotlienc], [have_brotli=yes])]
[PKG_CHECK_MODULES(WOFF2, [libwoff2enc], [have_woff2=yes])])])
AM_CONDITIONAL(HAVE_POTRACE, [test "x$have_potrace" = "xyes"])
AM_CONDITIONAL(HAVE_BROTLI, [test "x$have_brotli" = "xyes"])
AM_CONDITIONAL(HAVE_WOFF2, [test "x$have_woff2" = "xyes"])
AM_CONDITIONAL(HAVE_XXHASH, [test "x$have_xxhash" = "xyes"])
# Dummy required for TL build sections in automake files
AM_CONDITIONAL(WIN32, false)
AS_IF([test "x$enable_woff" != "xyes"],
[AC_DEFINE([DISABLE_WOFF], 1, [Define if WOFF support is disabled])],
[AS_IF([test "x$with_ttfautohint" != "xno"],
[AS_IF([test "x$with_ttfautohint" = "xyes"],
# --with-ttfautohint without path => check via pkg-config
[PKG_CHECK_MODULES([TTFAUTOHINT], [ttfautohint],,
[AC_MSG_ERROR([can't locate ttfautohint, use "--with-ttfautohint=path" to specify its location])])],
# --with-ttfautohint=/path/ttfautohint given
[TTFAUTOHINT_CFLAGS="-I$with_ttfautohint/include"]
[TTFAUTOHINT_LIBS="-L$with_ttfautohint/lib"])]
[CPPFLAGS="$CPPFLAGS $TTFAUTOHINT_CFLAGS" CFLAGS="$CFLAGS $TTFAUTOHINT_CFLAGS" LDFLAGS="$LDFLAGS $TTFAUTOHINT_LIBS"]
[AC_CHECK_HEADERS([ttfautohint.h],, [AC_MSG_WARN([ttfautohint.h not found])])]
[AC_CHECK_LIB([ttfautohint], [TTF_autohint],,
[AC_MSG_WARN([no working ttfautohint library found])]
[AC_CHECK_LIB(dl, dlopen,
[AC_MSG_NOTICE([enabled dynamic loading of ttfautohint])],
[AC_MSG_WARN([disabled ttfautohint support])])])]
[AC_SUBST(TTFAUTOHINT_CFLAGS) AC_SUBST(TTFAUTOHINT_LIBS)])])
AC_CHECK_LIB(z, gzopen)
# Check for header files.
AC_HEADER_DIRENT
AC_CHECK_HEADERS_ONCE([libintl.h stdlib.h string.h strings.h unistd.h])
# Check for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_TYPE_SIZE_T
AC_STRUCT_TM
# Check for library functions.
AC_FUNC_STAT
AC_CHECK_FUNCS_ONCE([ftime gettimeofday sigaction umask uselocale])
AX_GCC_BUILTIN(__builtin_clz)
# add options for selection of "optional" library locations
# currently these libraries are mandatory; the --with-foo options
# are used to specify the locations explicitly
AC_ARG_WITH(zlib,
[AS_HELP_STRING([--with-zlib=DIR], [set location of the zlib library])],
[AS_IF([test "x$withval" != "xno"],
[AS_IF([test "x$withval" != "xyes"], [ZLIB_DIR=$withval])]
[AS_IF([test -n "$ZLIB_DIR"],
[ZLIB_CFLAGS="-I$ZLIB_DIR -I$ZLIB_DIR/include"]
[ZLIB_LIBS="-L$ZLIB_DIR/lib" -lz])])])
AC_SUBST([ZLIB_CFLAGS])
AC_SUBST([ZLIB_LIBS])
# Check if the kpathsea headers are C++ safe
AC_MSG_CHECKING([if the kpathsea headers are C++ safe])
AC_LANG_PUSH([C++])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <kpathsea/kpathsea.h>]],
[[printf("%s\n", concat("one", "two"))]])],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_DEFINE([KPSE_CXX_UNSAFE], 1,
[Define to 1 if the kpathsea headers are not C++ safe.])])
AC_LANG_POP([C++])
CPPFLAGS="$CPPFLAGS_SAVE"
CFLAGS="$CFLAGS_SAVE"
LDFLAGS="$LDFLAGS_SAVE"
AC_ARG_ENABLE([manpage],
[AS_HELP_STRING([--disable-manpage], [disable generation of manual page @<:@default=no@:>@])])
AS_IF([test "x$enable_manpage" != "xno"],[
enable_manpage="no"
# Check for utilities required to build the manpage
AC_CHECK_PROG(ASCIIDOC, asciidoc, yes)
AS_IF([test "x$ASCIIDOC" = "xyes"], [
AC_CHECK_PROG(XMLTO, xmlto, yes)
AS_IF([test "x$XMLTO" = "xyes"], [
AC_CHECK_PROG(XSLTPROC, xsltproc, yes)
AS_IF([test "x$XSLTPROC" = "xyes"],[enable_manpage="yes"])])])])
AS_IF([test "x$enable_manpage" != "xyes"],
AC_MSG_NOTICE([generation of manual page has been disabled]))
AM_CONDITIONAL([BUILD_MANPAGE], [test "x$enable_manpage" = "xyes"])
AX_CODE_COVERAGE
AS_IF([ test "$enable_code_coverage" = "yes" ], [
# disable optimization
changequote({,})
CFLAGS=`echo $CFLAGS | sed 's/-O[1-9s]//g'`
CXXFLAGS=`echo $CXXFLAGS | sed 's/-O[1-9s]//g'`
changequote([,])
])
AC_SUBST([dvisvgm_srcdir], ['$(top_srcdir)'])
AC_SUBST(DATE)
AC_SUBST(AM_CPPFLAGS)
AC_SUBST(AM_LDFLAGS)
AC_CONFIG_FILES([
Makefile
libs/Makefile
libs/boost/Makefile
libs/brotli/Makefile
libs/clipper/Makefile
libs/md5/Makefile
libs/potrace/Makefile
libs/variant/Makefile
libs/woff2/Makefile
libs/xxHash/Makefile
src/Makefile
src/version.hpp
src/fonts/Makefile
src/optimizer/Makefile
src/ttf/Makefile
tests/Makefile
tests/data/Makefile
doc/Makefile])
AC_OUTPUT
================================================
FILE: doc/Makefile.am
================================================
## This file is part of dvisvgm
## Copyright (C) 2005-2025 Martin Gieseking <martin.gieseking@uos.de>
##
## Process this file with automake.
# Don't try to install the manpage file if it can't be built due to missing utilities.
# However, the distribution tarball should always contain a recent manpage. We ensure
# this by adding a dist-hook rule below.
man_MANS = dvisvgm.1
EXTRA_DIST = $(man_MANS) \
conf-dblatex-man.xsl \
conf-dblatex-pdf.xsl \
dvisvgm.txt.in \
generate-dvisvgm-sty.xsl \
tweak-dblatex-pdf.xsl \
tweak-dblatex-tex.py \
tweak-db-refentry.xsl
if BUILD_MANPAGE
CONF_DBLATEX_MAN = $(dvisvgm_srcdir)/doc/conf-dblatex-man.xsl
CONF_DBLATEX_PDF = $(dvisvgm_srcdir)/doc/conf-dblatex-pdf.xsl
TWEAK_DBLATEX_PDF = $(dvisvgm_srcdir)/doc/tweak-dblatex-pdf.xsl
TWEAK_DBLATEX_TEX = $(dvisvgm_srcdir)/doc/tweak-dblatex-tex.py
TWEAK_DB_ARTICLE = $(dvisvgm_srcdir)/doc/tweak-db-article.xsl
TWEAK_DB_REFENTRY = $(dvisvgm_srcdir)/doc/tweak-db-refentry.xsl
GEN_DBLATEX_STY = $(dvisvgm_srcdir)/doc/generate-dvisvgm-sty.xsl
DB_VARS = man.endnotes.list.enabled=0 man.endnotes.are.numbered=0 man.authors.section.enabled=0
dvisvgm.1: dvisvgm-man.xml $(CONF_DBLATEX_MAN)
xmlto -m $(CONF_DBLATEX_MAN) $(addprefix --stringparam , $(DB_VARS)) man $<
dvisvgm.pdf: dvisvgm-man.xml dvisvgm.sty $(CONF_DBLATEX_PDF) $(TWEAK_DBLATEX_PDF) $(TWEAK_DBLATEX_TEX)
mv $< $<.tmp
xsltproc -o $< $(TWEAK_DBLATEX_PDF) $<.tmp
dblatex -bxetex --texstyle=./dvisvgm.sty -p $(CONF_DBLATEX_PDF) -r plugin:$(basename $(TWEAK_DBLATEX_TEX)) $<
mv $<.tmp $<
mv $(basename $<).pdf $@
dvi-pdf: dvisvgm.dvi
dvipdfm $<
rm -f $<
dvisvgm.dvi: dvisvgm.1
groff -Tdvi -mandoc ./$< >$@
dvisvgm.html: dvisvgm-man.xml db2html.xsl
xsltproc -o $@ db2html.xsl $<
dvisvgm.md: dvisvgm-man.xml db2md.xsl
xsltproc -o $@ db2md.xsl $<
dvisvgm.epub: dvisvgm-article.xml
a2x -darticle -fepub -L --icons --icons-dir=. $<
mv $(basename $<).epub $@
.SECONDARY: dvisvgm-article.xml dvisvgm-man.xml dvisvgm.sty
dvisvgm-man.xml: dvisvgm.txt $(TWEAK_DB_REFENTRY)
asciidoc -a icons -a 'iconsdir=.' -a badges -a 'revnumber=@VERSION@' --unsafe -bdocbook -dmanpage -o $@.tmp $<
xsltproc -o $@ $(TWEAK_DB_REFENTRY) $@.tmp
rm $@.tmp
dvisvgm-article.xml: dvisvgm.txt $(TWEAK_DB_ARTICLE)
asciidoc -a icons -a 'iconsdir=.' -a badges -a 'revnumber=@VERSION@' --unsafe -bdocbook -darticle -o $@.tmp $<
xsltproc -o $@ $(TWEAK_DB_ARTICLE) $@.tmp
rm $@.tmp
sed -i "s/{VERSION}/@VERSION@/" $@
dvisvgm.sty: dvisvgm-man.xml $(GEN_DBLATEX_STY)
xsltproc -o dvisvgm.sty $(GEN_DBLATEX_STY) $<
.NOTPARALLEL:
dvisvgm.txt: dvisvgm.txt.in ../configure.ac
sed -e 's/@VERSION[@]/@VERSION@/g' -e 's/@PACKAGE_BUGREPORT[@]/@PACKAGE_BUGREPORT@/g' $< >$@
if [ $< -nt ../configure.ac ]; \
then touch -r $< $@; \
else touch -r ../configure.ac $@; \
fi
epub: dvisvgm.epub
html: dvisvgm.html
man: dvisvgm.1
md: dvisvgm.md
pdf: dvisvgm.pdf
endif
clean:
rm -f dvisvgm.pdf dvisvgm.html dvisvgm.md dvisvgm-man.xml dvisvgm-article.xml dvisvgm.txt dvisvgm.sty dvisvgm.dvi dvisvgm.epub
distclean-local:
rm -f dvisvgm.pdf dvisvgm.html dvisvgm.md dvisvgm-man.xml dvisvgm-article.xml dvisvgm.txt dvisvgm.sty dvisvgm.dvi dvisvgm.epub dvisvgm.1
if !BUILD_MANPAGE
# Ensure that distribution tarballs always contain a recent manpage, i.e.
# let "make dist" and "make distcheck" fail if dvisvgm.1 can't be built.
dist-hook:
@echo "----------------------------------------------------------------"; \
echo "manpage file dvisvgm.1 could not be built because one or more of"; \
echo "the following utilities are missing: asciidoc, xmlto, xsltproc "; \
echo "----------------------------------------------------------------"; \
false;
endif
================================================
FILE: doc/conf-dblatex-man.xsl
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!-- This file is part of dvisvgm -->
<!-- Copyright (C) 2015-2025 Martin Gieseking <martin.gieseking@uos.de> -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- output monospaced text in bold -->
<xsl:template match="literal">
<xsl:text>\fB</xsl:text>
<xsl:apply-templates/>
<xsl:text>\fR</xsl:text>
</xsl:template>
<!-- append URL to hyperlinked text pointing to external targets -->
<xsl:template match="ulink[not(contains(., '://')) and not(contains(@url, 'mailto:'))]">
<xsl:apply-templates/>
<xsl:text> (\m[blue]</xsl:text>
<xsl:value-of select="@url"/>
<xsl:text>\m[])</xsl:text>
</xsl:template>
<!-- expand width of last table column up to the line end -->
<xsl:template match="cell" mode="table.format">
<xsl:apply-imports/>
<xsl:if test="not(following-sibling::cell) or following-sibling::cell[1]/@row != @row">
<xsl:text>x</xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
================================================
FILE: doc/conf-dblatex-pdf.xsl
================================================
<?xml version='1.0' encoding="iso-8859-1"?>
<!-- This file is part of dvisvgm -->
<!-- Copyright (C) 2015-2025 Martin Gieseking <martin.gieseking@uos.de> -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="xetex.font">
<xsl:text>\setmainfont{Source Serif 4} </xsl:text>
<xsl:text>\setsansfont{Source Sans 3} </xsl:text>
<xsl:text>\setmonofont[Scale=0.9]{Source Code Pro Medium} </xsl:text>
</xsl:param>
<xsl:param name="doc.toc.show">0</xsl:param>
<xsl:param name="refentry.numbered">0</xsl:param>
<xsl:param name="figure.caution">caution</xsl:param>
<xsl:param name="figure.note">note</xsl:param>
<xsl:param name="literal.layout.options"/>
<xsl:param name="table.default.tabstyle">tabular</xsl:param>
<xsl:param name="table.in.float">0</xsl:param>
<xsl:param name="term.breakline">1</xsl:param>
<xsl:param name="literal.layout.options">
<xsl:text>basicstyle=\ttfamily\small,backgroundcolor=\color[gray]{0.9},columns=fullflexible,frame=single</xsl:text>
</xsl:param>
<!-- ensure processing of refmiscinfo elements -->
<xsl:template match="refentry">
<xsl:apply-templates select="refmeta/refmiscinfo"/>
<xsl:apply-imports/>
</xsl:template>
<!-- put refmiscinfo data into the TeX file -->
<xsl:template match="refmiscinfo[@class]">
<xsl:value-of select="concat('\def\refmiscinfo', @class, '{', ., '} ')"/>
</xsl:template>
<!-- output TOC before synopsis section -->
<xsl:template match="refsynopsisdiv">
<xsl:text>\tableofcontents </xsl:text>
<xsl:call-template name="makeheading">
<xsl:with-param name="level">2</xsl:with-param>
<xsl:with-param name="num">1</xsl:with-param>
</xsl:call-template>
<xsl:apply-templates/>
</xsl:template>
<!-- force non-star \subsection commands -->
<xsl:template match="refsect1">
<xsl:call-template name="makeheading">
<xsl:with-param name="level">2</xsl:with-param>
<xsl:with-param name="num">1</xsl:with-param>
</xsl:call-template>
<xsl:apply-templates/>
</xsl:template>
<!-- add named list items (e.g. command-line options, specials) to PDF bookmarks -->
<xsl:template match="refsect1/variablelist/varlistentry/term[emphasis]">
<xsl:text>\phantomsection\pdfbookmark[3]{</xsl:text>
<xsl:choose>
<xsl:when test="contains(emphasis, '--')">
<xsl:value-of select="substring-after(emphasis, '--')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="emphasis"/>
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="concat('}{', generate-id(emphasis), '} ')"/>
<xsl:apply-imports/>
</xsl:template>
</xsl:stylesheet>
================================================
FILE: doc/dvisvgm.txt.in
================================================
//////////////////////////////////////////////////////////////////////////
// This file is part of dvisvgm -- a fast DVI to SVG converter //
// Copyright (C) 2005-2025 Martin Gieseking <martin.gieseking@uos.de> //
// //
// This program is free software; you can redistribute it and/or //
// modify it under the terms of the GNU General Public License as //
// published by the Free Software Foundation; either version 3 of //
// the License, or (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, but //
// WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program; if not, see <http://www.gnu.org/licenses/>. //
//////////////////////////////////////////////////////////////////////////
dvisvgm(1)
==========
Martin Gieseking <@PACKAGE_BUGREPORT@>
:man source: dvisvgm
:man version: @VERSION@
:man manual: dvisvgm Manual
:revdate: 2025-10-28 09:58 +0100
Name
----
dvisvgm - converts DVI, EPS, and PDF files to the XML-based SVG format
Synopsis
--------
*dvisvgm* ['options'] 'file'[.dvi]
*dvisvgm* --eps ['options'] 'file1'[.eps] 'file2'[.eps] ...
*dvisvgm* --pdf ['options'] 'file'[.pdf]
Description
-----------
The command-line utility *dvisvgm* converts DVI files, as generated by TeX/LaTeX, to the
XML-based scalable vector graphics format SVG. It supports the classic DVI version 2 as
well as version 3 (created by pTeX in vertical mode), and the XeTeX versions 5 to 7 which are
also known as XDV. Besides the basic DVI commands, dvisvgm also evaluates many so-called
'specials' which heavily extend the capabilities of the plain DVI format. For a more detailed
overview, see section <<specials,*Supported Specials*>> below.
Since the current SVG standard 1.1 doesn't specify multi-page graphics, dvisvgm creates
separate SVG files for each DVI page. Because of compatibility reasons, only the first page
is converted by default. In order to select a different page or arbitrary page sequences,
use option *-p* which is described below.
SVG is a vector-based graphics format and therefore dvisvgm tries to convert the glyph outlines
of all fonts referenced in a DVI page section to scalable path descriptions. The fastest way
to achieve this is to extract the path information from vector-based font files available in
PFB, TTF, or OTF format. If dvisvgm is able to find such a file, it extracts all necessary
outline information about the glyphs from it.
However, TeX's former main source for font descriptions is Metafont, which produces bitmap output
in terms of GF files. That's why not all obtainable TeX fonts are available in a scalable format.
In these cases, dvisvgm tries to vectorize Metafont's output by tracing the glyph bitmaps.
The results are not as perfect as most (manually optimized) PFB or OTF counterparts, but are
nonetheless really nice in most cases.
When running dvisvgm without option *--no-fonts*, it creates 'font' elements (+<font>+...+</font>+)
to embed the font data into the SVG files. Unfortunately, only few SVG renderers support these
elements. Most web browsers and vector graphics applications don't evaluate them properly so
that the text components of the resulting graphics might look strange. In order to create more
compatible SVG files, command-line option *--no-fonts* can be given to replace the font elements
by plain graphics paths. Most web browsers (but only few external SVG renderers) also support
WOFF and WOFF2 fonts that can be used instead of the default SVG fonts. Option *--font-format*
offers the functionality to change the format applied to the fonts being embedded. This, however,
only works when converting DVI files. Text present in PDF and PostScript files is always
converted to path elements.
Options
-------
dvisvgm provides a POSIX-compliant command-line interface with short and long option names.
They may be given before and/or after the name of the file to be converted. Also, the order of
specifying the options is not significant, i.e. you can add them in any order without changing
dvisvgm's behavior. Certain options accept or require additional parameters which are directly
appended to or separated by whitespace from a short option (e.g. +-v0+ or +-v 0+). Long options
require an additional equals sign (+=+) between option name and argument but without any surrounding
whitespace (e.g. +--verbosity=0+). Multiple short options that don't expect further parameters can
be combined after a single dash (e.g. +-ejs+ rather than +-e -j -s+).
Long option names may also be shortened by omitting trailing characters as long as the shortened
name is still unambiguous. For example, option +--exact-bbox+ can be shortened to +--exact+,
+--exa+, or +--ex+. In case of ambiguous abbreviations, dvisvgm prints an error message together
with all matching option names.
*-b, --bbox*='fmt'::
Sets the bounding box of the generated SVG graphic to the specified format. This option only affects
the conversion of DVI files. SVG documents generated from PDF and PostScript always inherit the
bounding boxes of the input files.
+
Parameter 'fmt' takes either one of the format specifiers listed below, or a sequence of four comma-
or whitespace-separated length values 'x1', 'y1', 'x2' and 'y2'. The latter define the absolute
coordinates of two diagonal corners of the bounding box. Each length value consists of a floating
point number and an optional length unit (pt, bp, cm, mm, in, pc, dd, cc, or sp). If the unit is
omitted, TeX points (pt) are assumed.
+
It's also possible to give only one length value 'l'. In this case, the minimal bounding box
is computed and enlarged by adding (-'l',-'l') to the upper left and ('l','l') to the lower
right corner.
+
Additionally, dvisvgm also supports the following format specifiers:
*International DIN/ISO paper sizes*;;
A__n__, B__n__, C__n__, D__n__, where 'n' is a non-negative integer, e.g. A4 or a4 for DIN/ISO A4
format (210mm × 297mm).
*North American paper sizes*;;
invoice, executive, legal, letter, ledger
*Special bounding box sizes*;;
[horizontal]
*dvi* ::: page size stored in the DVI file
*min* ::: computes the minimal/tightest bounding box
*none* ::: no bounding box is assigned
*papersize* ::: box sizes specified by 'papersize' specials present in the DVI file
*preview* ::: bounding box data computed by the preview package (if present in the DVI file)
//
*Page orientation*;;
The default page orientation for DIN/ISO and American paper sizes is 'portrait',
i.e. 'width' < 'height'. Appending *-landscape* or simply *-l* to the format
string switches to 'landscape' mode ('width' > 'height'). For symmetry reasons you can
also explicitly add *-portrait* or *-p* to indicate the default portrait format.
Note that these suffixes are part of the size string and not separate options. Thus,
they must directly follow the size specifier without additional blanks.
Furthermore, the orientation suffixes can't be used with *dvi*, *min*, and *none*.
+
[NOTE]
Option *-b, --bbox* only affects the bounding box and does not transform the page content.
Hence, if you choose a landscape format, the page won't be rotated.
+
//
//
*-B, --bitmap-format*='fmt'::
This option sets the image format used to embed bitmaps that are extracted from PostScript or PDF data.
By default, dvisvgm embeds all bitmaps as JPEG images because it's the most compact of the two formats
supported by SVG. To select the alternative lossless PNG format, *--bitmap-format=png* can be used.
There are some more format variants dvisvgm currently supports even though +jpeg+ and +png+ should be
sufficient in most cases. The following list gives an overview of the known format names which
correspond to names of Ghostscript output devices.
+
--
[horizontal]
*none* ::: disable processing of bitmap images
*jpeg* ::: color JPEG format
*jpeggray* ::: grayscale JPEG format
*png* ::: grayscale or 24-bit color PNG format depending on current color space
*pnggray* ::: grayscale PNG format
*pngmono* ::: black-and-white PNG format
*pngmonod* ::: dithered black-and-white PNG format
*png16* ::: 4-bit color PNG format
*png256* ::: 8-bit color PNG format
*png16m* ::: 24-bit color PNG format
--
+
Since the collection of supported output devices can vary among local Ghostscript installations,
not all formats may be available in some environments. dvisvgm quits with a PostScript error message
if the selected output format requires a locally unsupported output device.
+
The two JPEG format specifiers accept an optional parameter to set the IJG quality level
which must directly follow the format specifier separated by a colon, e.g. *--bitmap-format=jpeg:50*.
The quality value is an integer between 0 and 100. Higher values result in better image quality but
lower compression rates and therefore larger files. The default quality level is 75 which is applied
if no quality parameter is given or if it's set to 0.
*-C, --cache*[='dir']::
To speed up the conversion process of bitmap fonts, dvisvgm saves intermediate conversion
information in cache files. By default, these files are stored in +$XDG_CACHE_HOME/dvisvgm/+
or +$HOME/.cache/dvisvgm+ if +XDG_CACHE_HOME+ is not set.
If you prefer a different location, use option *--cache* to overwrite the default. Furthermore,
it is also possible to disable the font caching mechanism completely with option *--cache=none*.
If argument 'dir' is omitted, dvisvgm prints the path of the default cache directory together
with further information about the stored fonts. Additionally, outdated and corrupted cache files
are removed.
*-j, --clipjoin*::
This option tells dvisvgm to compute all intersections of clipping paths itself rather than
delegating this task to the SVG renderer. The resulting SVG files are more portable because
some SVG viewers don't support intersecting clipping paths which are defined by 'clipPath'
elements containing a 'clip-path' attribute.
*--color*::
Enables colorization of messages printed during the conversion process. The colors can be
customized via environment variable *DVISVGM_COLORS*. See the <<environment, Environment section>>
below for further information.
*--colornames*::
By default, dvisvgm exclusively uses RGB values of the form '#RRGGBB' or '#RGB' to represent
colors in the SVG file. The latter is a short form for colors whose RGB components each
consist of two identical hex digits, e.g. +#123+ equals +#112233+.
According to the SVG standard, it's also possible to use color names (like +black+ and +darkblue+)
for a limited number of https://www.w3.org/TR/SVG11/types.html#ColorKeywords[predefined colors].
In order to apply these color names rather than their RGB values, call dvisvgm with option
*--colornames*. All colors without an SVG color name will still be represented by RGB values.
*--comments*::
Adds comments with further information about selected data to the SVG file. Currently, only
font elements and font CSS rules related to native fonts are annotated.
*--currentcolor*[='color']::
This option tells dvisvgm to replace the specified color with CSS variable `currentColor` which
holds the current foreground color set by CSS property `color`. This way an application or website
can change the color via CSS without the need to modify the SVG code.
+
The optional argument of `--currentcolor` specifies the RGB color value to be replaced and must
be given as either https://www.w3.org/TR/css-color/#typedef-hex-color[six or three digit hex color value]
preceded by character `#`, e.g. `#0000ff` or `#00f` for blue. If the optional argument is omitted, black
is assumed.
*--embed-bitmaps*::
Embeds the contents of bitmap files into the generated SVG files instead of adding file references.
Because of the base64-encoded data, the SVG files are usually much bigger but at the same time
more portable because they don't rely on external bitmap files.
+
This option only affects bitmaps referenced in DVI/XDV files, e.g. by +\includegraphics+ or
special command +dvisvgm:img+ (see below). Bitmaps present in PostScript or PDF files are always
embedded. Also see option *bitmap-format*.
*-E, --eps*::
If this option is given, dvisvgm does not expect a DVI but a single or multiple EPS input files,
and tries to convert them to SVG. In order to do so, a single 'psfile' special command is created
and forwarded to the PostScript special handler.
This option is only available if dvisvgm was built with PostScript support enabled, and requires
Ghostscript to be available. See option *--libgs* for further information.
*-e, --exact-bbox*::
This option tells dvisvgm to compute the precise bounding box of each character. By default,
the values stored in a font's TFM file are used to determine a glyph's extent. As these values are
intended to implement optimal character placements and are not designed to represent the exact
dimensions, they don't necessarily correspond with the bounds of the visual glyphs. Thus, width
and/or height of some glyphs may be larger (or smaller) than the respective TFM values. As a result,
this can lead to clipped characters at the bounds of the SVG graphics. With option *--exact-bbox*
given, dvisvgm analyzes the actual shape of each character and derives a usually tight bounding box.
+
This option only affects the processing of DVI files. When converting EPS or PDF files, the bounding
box information stored in these files are used to derive the SVG bounding box.
*-f, --font-format*='format'::
Selects the file format used to embed font data into the generated SVG output when converting DVI
or PDF files. The latter require the new mutool-based PDF handler introduced with dvisvgm 3.0 (also
see option *--pdf*). Option *--font-format* has no effect when converting PDF or PostScript files
using Ghostscript. Text fragments present in these files are then always converted to path elements.
+
Following formats are supported: +SVG+ (that's the default), +TTF+ (TrueType), +WOFF+, and +WOFF2+
(Web Open Font Format version 1 and 2).
By default, dvisvgm creates unhinted fonts that might look bad on low-resolution devices. In order to
improve the display quality, the generated TrueType, WOFF, or WOFF2 fonts can be autohinted. The
autohinter is enabled by appending +,autohint+ or +,ah+ to the font format,
e.g. +--font-format=woff,autohint+ or +--fwoff,ah+. This functionality requires the
https://freetype.org/ttfautohint[ttfautohint library]. If it's not available or can't be found,
dvisvgm issues a corresponding warning message.
+
Option *--font-format* is only available if dvisvgm was built with WOFF support enabled.
*-m, --fontmap*='filenames'::
Loads and evaluates a single font map file or a sequence of font map files. These files are required
to resolve font file names and encodings. dvisvgm does not provide its own map files but tries to read
available ones coming with dvips or dvipdfm. If option *--fontmap* is omitted, dvisvgm looks for the
default map files 'dvisvgm.map', 'ps2pk.map', 'pdftex.map', 'dvipdfm.map', and 'psfonts.map' (in this order).
Otherwise, the files given as option arguments are evaluated in the given order. Multiple filenames
must be separated by commas without leading and/or trailing whitespace.
+
By default, redefined mappings do not replace previous ones. However, each filename can be preceded by
an optional mode specifier (*+*, *-*, or *=*) to change this behavior:
+mapfile;;
Only those entries in the given map file that don't redefine a font mapping are applied, i.e.
fonts already mapped keep untouched. That's also the default mode if no mode specifier is given.
-mapfile;;
Ensures that none of the font mappings defined in the given map file are used, i.e. previously
defined mappings for the specified fonts are removed.
=mapfile;;
All mappings defined in the map file are applied. Previously defined settings for the same fonts
are replaced.
+
If the first filename in the filename sequence is preceded by a mode specifier, dvisvgm loads the
default font map (see above) and applies the other map files afterwards. Otherwise, none of default
map files will be loaded automatically.
+
Examples: +--fontmap=myfile1.map,+myfile2.map+ loads 'myfile1.map' followed by 'myfile2.map' where all
redefinitions of `myfile2.map` are ignored.
+--fontmap==myfile1.map,-myfile2.map+ loads the default map file followed by 'myfile1.map' and 'myfile2.map'
where all redefinitions of 'myfile1.map' replace previous entries. Afterwards, all definitions for the fonts
given in 'myfile2.map' are removed from the font map tree.
+
For further information about the map file formats and the mode specifiers, see the manuals of
https://tug.org/texinfohtml/dvips.html[dvips] and https://ctan.org/tex-archive/dviware/dvipdfm[dvipdfm].
+
dvisvgm supports both the 'dvips' and the 'dvipdfm' map file formats. It extends both variants by two
include statements that allow for loading other map files inside a map file. The syntax is as follows:
+
[listing]
----------------------------------------------
#include [<modechar>] <filename|filepath>
#includefirst [<modechar>] <filename|filepath>
----------------------------------------------
+
They must be placed on a separate line and start at the first column of that line. Otherwise, they are ignored.
While the first variant always tries to include the specified file, +#includefirst+ is only executed once, i.e.
once a file was successfully included by this statement, all subsequent +#includefirst+ lines are skipped.
This can be used to include one of several alternative files, whereby the first one found is loaded and all
others are ignored.
+
The optional parameter '<modechar>' (which can be +pass:[+]+, +-+, or +=+) determines how to integrate the data
read from the included file into the already present mapping data. They work the same way as the mode
specifiers described above. If '<modechar>' parameter is omitted, it defaults to +pass:[+]+.
+
The following filename or file path specifies the file to include. In case of plain filenames (without path
indicators), the files are looked up using the TeX file search functionality, i.e. files in the TeX directory
tree can easily be added. Relative paths are relative to the location of the file containing the +#include+
statement. Path components must be separated by forward slashes (+/+), also on Windows systems.
+
Examples: +#include pdftex.map+ looks for _pdftex.map_ in the current working directory and in the
TeX directory tree. +#include ./pdftex.map+, on the other hand, looks for _pdftex.map_ only in the
directory where the including file is located.
*--grad-overlap*::
Tells dvisvgm to create overlapping grid segments when approximating color gradient fills (also see
option *--grad-segments* below). By default, adjacent segments don't overlap but only touch each other
like separate tiles. However, this alignment can lead to visible gaps between the segments
because the background color usually influences the color at the boundary of the segments if the
SVG renderer uses anti-aliasing to create smooth contours.
One way to avoid this and to create seamlessly touching color regions is to enlarge the segments so
that they extend into the area of their right and bottom neighbors. Since the latter are drawn on top
of the overlapping parts, the visible size of all segments keeps unchanged. Just the former gaps
disappear as the background is now completely covered by the correct colors.
Currently, dvisvgm computes the overlapping segments separately for each patch of the mesh (a patch mesh
may consist of multiple patches of the same type). Therefore, there still might be visible gaps
at the seam of two adjacent patches.
*--grad-segments*='number'::
Determines the maximum number of segments per column and row used to approximate gradient color fills.
Since SVG 1.1 only supports a small subset of the shading algorithms available in PostScript,
dvisvgm approximates some of them by subdividing the area to be filled into smaller, monochromatic
segments. Each of these segments gets the average color of the region it covers. Thus, increasing the
number of segments leads to smaller monochromatic areas and therefore a better approximation of the
actual color gradient. As a drawback, more segments imply bigger SVG files because every segment is
represented by a separate path element.
+
Currently, dvisvgm supports free- and lattice-form triangular patch meshes as well as Coons and
tensor-product patch meshes. They are approximated by subdividing the area of each patch into a
__n__×__n__ grid of smaller segments. The maximum number of segments per column and row can be
changed with option *--grad-segments*.
*--grad-simplify*='delta'::
If the size of the segments created to approximate gradient color fills falls below the given delta
value, dvisvgm reduces their level of detail. For example, Bézier curves are replaced by straight
lines, and triangular segments are combined to tetragons. For a small 'delta', these simplifications
are usually not noticeable but reduce the size of the generated SVG files significantly.
*-h, --help*[='mode']::
Prints a short summary of all available command-line options. The optional 'mode' parameter is
an integer value between 0 and 2. It selects the display variant of the help text. Mode 0
lists all options divided into categories with section headers. This is also the default if
dvisvgm is called without parameters. Mode 1 lists all options ordered by the short option names,
while mode 2 sorts the lines by the long option names.
+
A values in brackets after the description text indicate the default parameter of the option. They
are applied if an option with a mandatory parameter is not used or if an optional parameter is omitted.
For example, option *--bbox* requires a size parameter which defaults to +min+ if *--bbox* is not
used. Option *--zip*, which isn't applied by default, accepts an optional compression level parameter.
If it's omitted, the stated default value 9 is used.
*--keep*::
Disables the removal of temporary files as created by Metafont (usually .gf, .tfm, and .log files) or
the TrueType/WOFF module.
*--libgs*='path'::
This option is only available if the Ghostscript library is not directly linked to dvisvgm and if
PostScript support was not completely disabled during compilation. In this case, dvisvgm tries
to load the shared GS library dynamically during runtime. By default, it expects the library's name
to be +libgs.so.X+ (on Unix-like systems, where +X+ is the ABI version of the library) or
+gsdll32.dll+/+gsdll64.dll+ (Windows). If dvisvgm doesn't find the library, option *--libgs* can be
used to specify the correct path and filename, e.g. +--libgs=/usr/local/lib/libgs.so.9+ or
+--libgs=\gs\gs9.25\bin\gsdll64.dll+.
+
Alternatively, it's also possible to assign the path to environment variable *LIBGS*, e.g.
+export LIBGS=/usr/local/lib/libgs.so.9+ or +set LIBGS=\gs\gs9.25\bin\gsdll63.dll+. *LIBGS* has
less precedence than the command-line option, i.e. dvisvgm ignores variable *LIBGS* if *--libgs*
is given.
*-L, --linkmark*='style'::
Selects the method how to mark hyperlinked areas. The 'style' argument can take one of the values
'none', 'box', and 'line', where 'box' is the default, i.e. a rectangle is drawn around
the linked region if option *--linkmark* is omitted. Style argument 'line' just draws the lower edge of
the bounding rectangle, and 'none' tells dvisvgm not to add any visible objects to hyperlinks.
The lines and boxes get the current text color selected. In order to apply a different, constant color,
a colon followed by a color specifier can be appended to the style string. A 'color specifier' is either
a hexadecimal RGB value of the form '#RRGGBB', or a
https://en.wikibooks.org/wiki/LaTeX/Colors#The_68_standard_colors_known_to_dvips[dvips color name].
+
Moreover, argument 'style' can take a single color specifier to highlight the linked region by
a frameless box filled with that color. An optional second color specifier separated by a colon
selects the frame color.
+
Examples: +box:red+ or +box:#ff0000+ draws red boxes around the linked areas. +yellow:blue+ creates
yellow filled rectangles with blue frames.
*-l, --list-specials*::
Prints a list of registered special handlers and exits. Each handler processes a set of special
statements belonging to the same category. In most cases, these categories are identified by the
prefix of the special statements which is usually a leading string followed by a colon or a blank,
e.g. 'color' or 'ps'. The listed handler names, however, don't need to match these prefixes, e.g.
if there is no common prefix or if functionality is split into separate handlers in order to allow
them to be disabled separately using option *--no-specials*. All special statements not covered by
one of the special handlers are silently ignored.
*-M, --mag*='factor'::
Sets the magnification factor applied in conjunction with Metafont calls prior tracing the glyphs.
The larger this value, the better the tracing results. Nevertheless, large magnification values
can cause Metafont arithmetic errors due to number overflows. So, use this option with care.
The default setting usually produces nice results.
*--message*='text'::
Prints a given message to the console after an SVG file has been written. Argument 'text' may consist
of static text as well as the macros listed below in the description of special command +dvisvgm:raw+.
For example, +--message="page {?pageno} written to {?svgfile}"+ prints the message with the macros
expanded after the conversion of each page of a DVI or PDF file or after processing an EPS file.
+
The output of option *--message* is not affected by a specified verbosity level, i.e. dvisvgm prints
the text even with +--verbosity=0+.
*--no-merge*::
Puts every single character in a separate 'text' element with corresponding 'x' and 'y' attributes.
By default, new 'text' or 'tspan' elements are only created if a string starts at a location that
differs from the regular position defined by the characters' advance values.
*--no-mktexmf*::
Suppresses the generation of missing font files. If dvisvgm can't find a font file
through the kpathsea lookup mechanism, it calls the external tools 'mktextfm' or 'mktexmf'.
This option disables these calls.
*-n, --no-fonts*[='variant']::
If this option is given, dvisvgm doesn't create SVG 'font' elements but uses 'paths' instead. The
resulting SVG files tend to be larger but are concurrently more compatible with most applications that
don't support SVG fonts. The optional argument 'variant' selects the method how to substitute fonts
by paths. Variant 0 creates 'path' and 'use' elements in order to avoid lengthy duplicates.
Variant 1 creates 'path' elements only.
Option *--no-fonts* implies *--no-styles*.
*-c, --scale*='sx'[,'sy']::
Scales the page content horizontally by 'sx' and vertically by 'sy'. This option is equivalent
to *-TS*'sx','sy'.
*-S, --no-specials*[='names']::
Disable processing of special commands embedded in the DVI file. If no further parameter is given,
all specials are ignored. To disable a selected set of specials, an optional comma-separated list
of names can be appended to this option. A 'name' is the unique identifier referencing the intended
special handler as listed by option *--list-specials*.
*--no-styles*::
By default, dvisvgm creates CSS styles and class attributes to reference fonts. This variant is
more compact than adding the complete font information to each text element over and over again.
However, if you prefer direct font references, the default behavior can be disabled with
option *--no-styles*.
*-O, --optimize*[='modules']::
Applies several optimizations on the generated SVG tree to reduce the file size. The optimizations
are performed by running separate optimizer modules specified by optional argument 'modules'.
It may consist of a single module name or a comma-separated list of several module names.
The corresponding modules are executed one by one in the given order and thus transform the
XML tree gradually.
A leading hyphen (+-+) can be used to exclude a module from processing. For example
+-Oall,-collapse-groups+ performs all optimizations except +collapse-groups+. If the first
module name in the list starts with a hyphen, dvisvgm automatically inserts +all+ at the
beginning, i.e. +-O-collapse-groups+ is identical to +-Oall,-collapse-groups+.
+
The following list describes the currently available optimizer modules.
*list*;;
Lists all available optimizer modules and exits.
*none*;;
If this argument is given, dvisvgm doesn't apply any optimization. *none* can't be combined
with other module names.
*all*;;
Performs all optimizations listed below. This is also the default if option *--optimize* is
used without any arguments. The modules are executed in a predefined order that usually leads
to the best results. *all* must be the only or the first entry in the list of module names.
*collapse-groups*;;
Combines nested group elements (+<g>+...+</g>+) that contain only a single attribute each. If possible,
the group attributes are moved to the outermost element of the processed subtree. This module also
unwraps group elements that have no attributes at all.
*group-attributes*;;
Creates groups (+<g>+...+</g>+) for common attributes around adjacent elements. Each attribute is
moved to a separate group so that multiple common attributes lead to nested groups. They can be
combined by applying optimizer module 'collapse-groups' afterwards. The algorithm only takes
inheritable properties, such as +fill+ or +stroke-width+, into account and only removes them from
an element if none of the other attributes, like +id+, prevents this.
*reassign-clippaths*;;
Collects all +clipPath+ elements that differ only by their IDs. Afterwards, the duplicates are
removed so that only one remains. All +clip-path+ attributes referencing one of the duplicates
are updated accordingly.
*remove-clippaths*;;
Removes all redundant 'clipPath' elements. This optimization was already present in former versions
of dvisvgm and was always applied by default. This behavior is retained, i.e. dvisvgm executes
this module even if option *--optimize* is not given. You can use argument 'none' to prevent that.
*simplify-text*;;
If a +text+ element only contains whitespace nodes and +tspan+ elements, all common inheritable
attributes of the latter are moved to the enclosing text element. All +tspan+ elements without
further attributes are unwrapped, i.e. the +tspan+ tags are removed.
*simplify-transform*;;
Tries to shorten all 'transform' attributes. This module combines the transformation commands of
each attribute and decomposes the resulting transformation matrix into a sequence of basic
transformations, i.e. translation, scaling, rotation, and skewing. If this sequence is shorter
than the equivalent 'matrix' expression, it's assigned to the attribute. Otherwise, the matrix
expression is used.
*-o, --output*='pattern'::
Sets the pattern that determines the names of the generated SVG files, optionally including the file
path. The required parameter 'pattern' may consist of an arbitrary sequence of characters which make
up the filenames or file paths relative to the current working directory. With the exception of the
following mentioned variables and expressions, all characters are treated as static parts of the
filenames/folders and are therefore identical for all pages processed during a run of dvisvgm.
The strings +%f+, +%p+, +%P+, +%n+, +%N+, +%hd+, +%ho+, and +%hc+ are variables that can be used as
part of the pattern. +%f+ expands to the base name of the DVI file, i.e. the filename without suffix,
+%p+ is the current page number, and +%P+ the total number of pages in the DVI file. The variables
+%n+ and +%N+ expand to the number of the current file being converted (starting at 1) and the total
number of files given, respectively.
+
An optional number (0-9) specified directly after the percent sign of a variable holding a numeric
value denotes the minimal number of digits to be created. If a particular value consists of less
digits, the number is padded with leading zeros.
Example: +%3p+ enforces 3 digits for the current page number (001, 002, etc.). Without an explicit
width specifier, +%p+ gets the same number of digits as +%P+.
+
If you need more control over the numbering, you can use arithmetic expressions as part of the pattern.
The syntax is +%(+'expr'+)+ where 'expr' may contain additions, subtractions, multiplications, and
integer divisions with common precedence. The variables *p* and *P* contain the current page number
and the total number of pages, respectively. For example, +--output="%f-%(p-1)"+ creates filenames
where the numbering starts with 0 rather than 1.
+
The variables +%hX+ contain different hash values computed from the DVI page data and the options
given on the command-line. +%hd+ and +%hc+ are only set if option *--page-hashes* is present.
Otherwise, they are empty. For further information, see the description of option *--page-hashes*
below.
+
The default pattern is +%f-%p.svg+ if the DVI file consists of more than one page, and
+%f.svg+ otherwise. That means, a DVI file 'foo.dvi' is converted to 'foo.svg' if 'foo.dvi'
is a single-page document. Otherwise, multiple SVG files 'foo-01.svg', 'foo-02.svg', etc. are
produced. In Windows environments, the percent sign indicates dereferenced environment
variables, and must therefore be protected by a second percent sign, e.g. +--output=%%f-%%p+.
*-p, --page*='ranges'::
This option selects the pages to be processed. Parameter 'ranges' consists of a comma-separated
list of single page numbers and/or page ranges. A page range is a pair of numbers separated by
a hyphen, e.g. 5-12. Thus, a page sequence might look like this: 2-4,6,9-12,15. It doesn't matter
if a page is given more than once or if page ranges overlap. dvisvgm always extracts the page
numbers in ascending order and converts them only once.
+
In order to stay compatible with previous versions, the default page sequence is +1+. dvisvgm
therefore converts only the first page and not the whole document if option *--page* is omitted.
Usually, page ranges consist of two numbers denoting the first and last page to be converted.
If the conversion should start at page 1, or if it should continue up to the last DVI page, the
first or second range number can be omitted, respectively. Example: +--page=-10+ converts all
pages up to page 10, +--page=10-+ converts all pages starting with page 10.
Please consider that the page values don't refer to the page numbers printed on the
corresponding page. Instead, the physical page count is expected, where the first page always
gets number 1.
+
To select the last page, expression +%P+ can be used instead of an explicit page number. It's
replaced by the number of the last page. For example, +--page=1,%P+ converts the first and the
last page of the document.
+
Additionally, arithmetic expressions of the form +%(+'expr'+)+ in place of numbers are valid too.
The resulting values are always rounded down to the nearest integer. See option *--output* for
more information about the syntax and the supported arithmetic operators.
Example: +--page=%(P-2)-+ converts the last three pages.
+
At the end of the range sequence an optional filter specifier can be appended in order to remove
certain page numbers from the sequence. Currently, the two filters +:even+ and +:odd+ are supported
which restrict the preceding values to even and odd numbers, respectively. For example,
+--page=1-11,20:even+ is equivalent to +--page=2,4,6,8,10,20+.
*-H, --page-hashes*[='params']::
If this option is given, dvisvgm computes hash values of all pages to be processed. As long as the
page contents don't change, the hash value of that page stays the same. This property can be used
to determine whether a DVI page must be converted again or can be skipped in consecutive runs of
dvisvgm. This is done by propagating the hash value to variable +%hd+ which can be accessed in
the output pattern (see option *--output*). By default, dvisvgm changes the output pattern to
+%f-%hd+ if option *--page-hashes* is given. As a result, all SVG file names contain the hash
value instead of the page number. When calling dvisvgm again with option *--page-hashes* with the
same output pattern, it checks the existence of the SVG file to be created and skips the conversion
if it's already present. This also applies for consecutive calls of dvisvgm with different
command-line parameters. If you want to force another conversion of a DVI file that hasn't changed,
you must remove the corresponding SVG files beforehand or add the parameter +replace+ (see below).
If you manually set the output pattern to not contain a hash value, the conversion won't be skipped.
+
Alternatively, the output pattern may contain the variables +%ho+ and +%hc+. +%ho+ expands to a
32-bit hash representing the given command-line options that affect the generated SVG output, like
*--no-fonts* and *--precision*. Different combinations of options and parameters lead to different
hashes. Thus pattern +%f-%hd-%ho+ creates filenames that change depending on the DVI data and
the given command-line options. Variable +%hc+ provides a combined hash computed from the DVI data
and the command-line options. It has the same length as +%hd+.
+
Since the page number isn't part of the file name by default, different DVI pages with identical
contents get the same file name. Therefore, only the first one is converted while the others are
skipped. To create separate files for each page, you can add the page number to the output pattern,
e.g. +--output="%f-%p-%hc"+.
+
By default, dvisvgm uses the fast XXH64 hash algorithm to compute the values provided through +%hd+ and
+%hc+. 64-bit hashes should be sufficient for most documents with an average size of pages. Alternatively,
XXH32 and MD5 can be used as well. The desired algorithm is specified by argument 'params' of option
*--page-hashes*. It takes one of the strings +MD5+, +XXH32+, and +XXH64+, where the names can be given
in lower case too, like +--page-hashes=md5+. Since version 0.7.1, xxHash provides an experimental 128-bit
hash function whose algorithm has been stabilized as of version 0.8. When using a version prior to 0.8,
the 128-bit hash values can vary depending on the used xxHash version. If the corresponding API is
available, dvisvgm supports the new hash function, and option *--page-hashes* additionally accepts the
algorithm specifier +XXH128+.
+
Finally, option *--page-hashes* can take a second argument that must be separated by a comma.
Currently, only the two parameters 'list' and 'replace' are evaluated, e.g. +--page-hashes=md5,list+
or +--page-hashes=replace+. When 'list' is present, dvisvgm doesn't perform any conversion but just
lists the hash values +%hd+ and +%hc+ of the pages specified by option *--page*. Parameter 'replace'
forces dvisvgm to convert a DVI page even if a file with the target name already exists.
*-P, --pdf*::
If this option is given, dvisvgm does not expect a DVI but a PDF input file, and tries to convert
it to SVG. Similar to the conversion of DVI files, only the first page is processed by default.
Option *--page* can be used to select different pages, page ranges, and/or page sequences.
+
If a Ghostscript version < 10.01.0 is found, dvisvgm uses Ghostscript to process the PDF file. In
this case, the conversion is realized by creating a single 'pdffile' special command which is
forwarded to dvisvgm's PostScript special handler. Therefore, this option is only available if
dvisvgm was built with PostScript support enabled, and requires Ghostscript to be accessible.
See option *--libgs* for further information.
+
As of Ghostscript 10.01.0, this will no longer work due to the introduction of a new PDF interpreter.
Therefore, an alternative conversion module based on _mutool_, a utility which is part of the
https://mupdf.com[MuPDF] package, has been introduced. It's automatically invoked if Ghostscript
can't be used and if a working +mutool+ executable is present in a directory which is part of the
system's search path.
+
Alternatively, environment variable +DVISVGM_PDF_PROC+ can be used to select the PDF processor.
The currently supported values are +gs+ and +mutool+.
*-d, --precision*='digits'::
Specifies the maximum number of decimal places applied to floating-point attribute values.
All attribute values written to the generated SVG file(s) are rounded accordingly. The
parameter 'digits' accepts integer values from 0 to 6, where 0 enables the automatic selection
of significant decimal places. This is also the default value if dvisvgm is called without
option *--precision*.
*--progress*[='delay']::
Enables a simple progress indicator shown when time-consuming operations like PostScript specials
are processed. The indicator doesn't appear before the given delay (in seconds) has elapsed.
The default delay value is 0.5 seconds.
*-r, --rotate*='angle'::
Rotates the page content clockwise by 'angle' degrees around the page center.
This option is equivalent to *-TR*'angle'.
*-R, --relative*::
SVG allows you to define graphics paths by a sequence of absolute and/or relative path commands,
i.e. each command expects either absolute coordinates or coordinates relative to the
current drawing position. By default, dvisvgm creates paths made up of absolute commands.
If option *--relative* is given, relative commands are created instead. This slightly reduces
the size of the SVG files in most cases.
*--stdin*::
Tells dvisvgm to read the DVI or EPS input data from *stdin* instead from a file. Alternatively
to option *--stdin*, a single dash (-) can be given. The default name of the generated SVG file
is 'stdin.svg' which can be changed with option *--output*.
*-s, --stdout*::
Don't write the SVG output to a file but redirect it to *stdout*.
*--tmpdir*[='path']::
In some cases, dvisvgm needs to create temporary files to work properly. These files go to the
system's temporary folder by default, e.g. +/tmp+ on Linux systems. Option *--tmpdir* can be used
to specify a different location. Please note that dvisvgm does not create this folder if it doesn't
exist. Therefore, you must ensure that it's actually present before running dvisvgm.
+
In order to prevent colliding files caused by parallel calls of dvisvgm, the program doesn't write
the files directly in the specified directory but furthermore creates a uniquely named subfolder in
there, where the temporary files will be placed. This can be prevented by appending +//+ or +\\+
(on Windows) to the specified directory name. For example, +--tmpdir=.//+ creates the temporary files
directly in the current working directory, while +--tmpdir=.+ places them in a dedicated subfolder of
the current working directory.
+
If the optional parameter 'path' of option *--tmpdir* is omitted, dvisvgm prints the location of the
system's temp folder and exits.
*-a, --trace-all*=['retrace']::
This option forces dvisvgm to vectorize not only the glyphs actually required to render the
SVG file correctly – which is the default –, but processes all glyphs of all fonts referenced in
the DVI file. Because dvisvgm stores the tracing results in a font cache, all following conversions
of these fonts will speed up significantly.
The boolean option 'retrace' determines how to handle glyphs already stored in the cache.
By default, these glyphs are skipped. Setting argument 'retrace' to 'yes' or 'true' forces dvisvgm
to retrace the corresponding bitmaps again.
+
[NOTE]
This option only takes effect if font caching is active. Therefore, *--trace-all* cannot be
combined with option *--cache=none*.
+
*-T, --transform*='commands'::
Applies a sequence of transformations to the SVG content. Each transformation is described
by a 'command' beginning with a capital letter followed by a list of comma-separated
parameters. Following transformation commands are supported:
*T* 'tx'[,'ty'];;
Translates (moves/shifts) the page in direction of vector ('tx','ty'). If 'ty' is omitted,
'ty'=0 is assumed.
The expected unit length of 'tx' and 'ty' are TeX points (1pt = 1/72.27in). However, there
are several constants defined to simplify the unit conversion (see below).
*S* 'sx'[,'sy'];;
Scales the page horizontally by 'sx' and vertically by 'sy'. If 'sy' is omitted,
'sy'='sx' is assumed.
*R* 'angle'[,'x','y'];;
Rotates the page clockwise by 'angle' degrees around point ('x','y'). If the optional
arguments 'x' and 'y' are omitted, the page will be rotated around its center depending on
the chosen page format. When option *-bnone* is given, the rotation center is origin (0,0).
*KX* 'angle';;
Skews the page along the 'x'-axis by 'angle' degrees. Argument 'angle' can take any value
except 90+180__k__, where 'k' is an integer.
*KY* 'angle';;
Skews the page along the 'y'-axis by 'angle' degrees. Argument 'angle' can take any value
except 90+180__k__, where 'k' is an integer.
*FH* ['y'];;
Mirrors (flips) the page at the horizontal line through point (0,'y'). Omitting the optional argument
leads to 'y'='h'/2, where 'h' denotes the page height (see <<constants,'pre-defined constants'>> below).
*FV* ['x'];;
Mirrors (flips) the page at the vertical line through point ('x',0). Omitting the optional argument
leads to 'x'='w'/2, where 'w' denotes the page width (see <<constants,'pre-defined constants'>> below).
*M* 'm1',...,'m6';;
Applies a transformation described by the 3×3 matrix
\(('m1','m2','m3'),('m4','m5','m6'),(0,0,1)), where the inner triples denote
the rows.
+
[NOTE]
=================================================================================================
All transformation commands of option *-T, --transform* are applied in the order of their appearance.
Multiple commands can optionally be separated by spaces. In this case the whole transformation string
has to be enclosed in double quotes to keep them together. All parameters are expressions of floating
point type. You can either give plain numbers or arithmetic terms combined by the operators *+* (addition),
*-* (subtraction), *** (multiplication), */* (division) or *%* (modulo) with common associativity and
precedence rules. Parentheses may be used as well.
[[constants]]
Additionally, some pre-defined constants are provided:
[horizontal]
*ux*:: horizontal position of upper left page corner in TeX point units
*uy*:: vertical position of upper left page corner in TeX point units
*h*:: page height in TeX point units (0 in case of *-bnone*)
*w*:: page width in TeX point units (0 in case of *-bnone*)
Furthermore, you can use the 9 length constants +pt+, +bp+, +cm+, +mm+, +in+, +pc+, +dd+, +cc+,
and +sp+, e.g. +2cm+ or +1.6in+. Thus, option +-TT1in,0R45+ moves the page content 1 inch to
the right and rotates it by 45 degrees around the page center afterwards.
For single transformations, there are also the short-hand options *-c*, *-t* and *-r* available.
In contrast to the *--transform* commands, the order of these options is not significant, so
that it's not possible to describe transformation sequences with them.
=================================================================================================
+
//
//
*-t, --translate*='tx'[,'ty']::
Translates (moves) the page content in direction of vector ('tx','ty'). This option is
equivalent to *-TT*'tx','ty'.
*-v, --verbosity*='level'::
Controls the type of messages printed during a dvisvgm run:
[horizontal]
*0*;; no message output at all
*1*;; error messages only
*2*;; warning messages only
*4*;; informational messages only
*8*;; user messages only (e.g. created by special +dvisvgm:message+)
+
[NOTE]
By adding these values you can combine the categories. The default level is 15, i.e. all
messages are printed.
+
*-V, --version*[='extended']::
Prints the version of dvisvgm and exits. If the optional argument is set to 'yes', the
version numbers of the linked libraries are printed as well.
*-z, --zip*[='level']::
Creates a compressed SVG file with suffix .svgz. The optional argument specifies the compression
level. Valid values are in the range of 1 to 9 (default value is 9). Larger values cause better
compression results but may take slightly more computation time.
*-Z, --zoom*='factor'::
Multiplies the values of the 'width' and 'height' attributes of the SVG root element by argument 'factor'
while the coordinate system of the graphic content is retained. As a result, most SVG viewers zoom the
graphics accordingly. If a negative zoom factor is given, the 'width' and 'height' attributes are omitted.
[[specials]]
Supported Specials
------------------
dvisvgm supports several 'special commands' that enrich the DVI command set with additional instructions
for features, like color, graphics, and hyperlinks. The term 'special command', or just 'special', originates
from the TeX command +\special{...}+ which does almost nothing. TeX only forwards the argument of this command
to the DVI file using the corresponding 'xxx' opcode, thus delegating its execution to the DVI driver. The
driver can then decide to either process or ignore it, depending on the supported statements. The parameter
of TeX's +\special+ command is given in curly braces and may consist of an arbitrary character sequence
representing the actual instruction, for example +color Red+.
It might be worth mentioning that specials are only evaluated when processing DVI files. PS/EPS and PDF
don't know anything about the concept of specials and therefore don't provide means to represent them.
In order to evaluate the special commands, dvisvgm implements several dedicated handlers. Each handler is
responsible for all special statements belonging to the same command set, i.e. commands usually –
but not necessarily – beginning with a common prefix. For example, all PDF specials start with the
prefix +pdf:+, while the TPIC special set consists of 13 different commands without common identifier. The
PDF specials are processed by dvisvgm's 'pdf' handler, the TPIC ones by the 'tpic' handler. To get a list of
the actually provided special handlers, use option *--list-specials* (see above). The following list gives an
overview of the special sets currently supported. The names of the handlers can also be used to disable the
processing of individual sets of specials. For further information on this, see option *--no-specials*.
*bgcolor*::
Special statements for changing the background/page color. Currently, dvisvgm only supports the +background+
statement as specified in the https://tug.org/texinfohtml/dvips.html#Color-specifications[dvips manual].
Since SVG 1.1 doesn't support background colors, dvisvgm inserts a rectangle of the chosen color into the
generated SVG document. This rectangle always gets the same size as the selected or computed bounding box.
This background color command is part of the color special set but is handled separately in order to let
the user turn it off.
*color*::
Statements of this command set provide instructions to change the text/paint color. For an overview of the
exact syntax, see the documentation of dvips, for instance.
+
dvisvgm extends the dvips syntax of the color specials by two optional modifiers to enable the differentiation
between fill and stroke colors, i.e. colors used to fill enclosed areas and to draw lines, respectively.
If one of the color specifiers, like a color name or a color model followed by a sequence of color components,
is preceded by +fill+ or +stroke+, only the corresponding color is changed. Without these modifiers both colors
are affected. Example: +color push fill rgb 1 0 1+ pushes a new color pair onto the color stack whereby the fill
color is set to magenta and the stroke color retains its current value.
+color push rgb 1 0 1+ pushes a color pair with both colors set to magenta.
+
Additionally, the new special *color set* is introduced. Its syntax is the same as the one of *color push*
including the optional +fill+ and +stroke+ modifiers. Instead of pushing a new color pair it modifies the
topmost one on the stack. If the color stack is empty, the default (black) fill/stroke color is changed.
*dvisvgm*::
The following list gives a brief overview of dvisvgm's own set of currently supported specials.
*dvisvgm:raw* 'text':::
Adds an arbitrary sequence of XML nodes to the page section of the SVG document. dvisvgm checks syntax and
proper nesting of the inserted elements but does not perform any validation, thus the user has to ensure
that the resulting SVG is still valid. Opening and closing tags may be distributed among different 'raw'
specials. The tags themselves can also be split but must be continued with the immediately following 'raw'
special. Both syntactically incorrect and wrongly nested tags lead to error messages.
+
Parameter 'text' may also contain the expressions *{?x}*, *{?y}*, *{?color}*, *{?fillcolor}*, *{?strokecolor}*,
*{?matrix}*, *{?pageno}*, *{?svgfile}*, and *{?svgpath}* that respectively expand to the current 'x' and 'y'
coordinate, an RGB hex string of the current active fill and stroke color, the current transformation matrix,
the current page number, and the relative and absolute path of the SVG file being created. *{?color}* expands
to the same string as *{?fillcolor}* and is still available for compatibility with older dvisvgm versions that
didn't distinguish between fill and stroke colors (see information about color specials below).
+
As SVG doesn't support CMYK colors, for example in +fill+ and +stroke+ attributes, dvisvgm provides macro
*{?cmyk(_c_,_m_,_y_,_k_)}* to create an RGB hex string from a CMYK color. It can be used instead of
a combination of color/PostScript specials and color macros to directly insert a CMYK color value.
+
Character sequence *{?nl}* expands to a newline character. Finally, constructions of the form *{?(_expr_)}*
enable the evaluation of mathematical expressions which may consist of basic arithmetic operations including
modulo. As above, the variables 'x' and 'y' represent the current coordinates.
Invalid operations, like divisions by zero, lead to an error message on the console.
Example: +{?(-10*(x+2y)-5)}+ is a valid expression and expands to the corresponding numeric string.
*dvisvgm:rawdef* 'text':::
This command is similar to *dvisvgm:raw*, but puts the XML nodes into the <defs> section of the SVG document
currently being generated.
*dvisvgm:rawset* 'name' ... *dvisvgm:endrawset*:::
This pair of specials marks the begin and end of a definition of a named raw SVG fragment. All *dvisvgm:raw*
and *dvisvgm:rawdef* specials enclosed by *dvisvgm:rawset* and *dvisvgm:endrawset* are not evaluated
immediately but stored together under the given 'name' for later use. Once defined, the named fragment can be
referenced throughout the DVI file by *dvisvgm:rawput* (see below).
The two commands *dvisvgm:rawset* and *dvisvgm:endrawset* must not be nested, i.e. each call of *dvisvgm:rawset*
has to be followed by a corresponding call of *dvisvgm:endrawset* before another *dvisvgm:rawset* may occur.
Also, the identifier 'name' must be unique throughout the DVI file. Using *dvisvgm:rawset* multiple times
together with the same 'name' leads to warning messages.
*dvisvgm:rawput* 'name':::
Inserts raw SVG fragments previously stored under the given 'name'. dvisvgm distinguishes between fragments
that were specified with *dvisvgm:raw* or *dvisvgm:rawdef*, and handles them differently: It inserts all
*dvisvgm:raw* parts every time *dvisvgm:rawput* is called, whereas the *dvisvgm:rawdef* portions go to the
<defs> section of the current SVG document only once.
*dvisvgm:img* 'width' 'height' 'file':::
Creates an +image+ element using the current graphic position, transformation matrix, the specified extents,
and the given filename. This special command also updates the bounding box of the resulting SVG to entirely
enclose the transformed image. The image itself is positioned such that the lower left corner of the
untransformed image lies at the current graphic position. The length 'width' and 'height' specify the extents
of the untransformed image. For a list of supported length units see option *--bbox*. Plain numbers without an
appended unit specifier imply TeX points (1in = 72.27pt).
+
Parameter 'file' can be a plain filename or a relative or absolute path of a file. By default, dvisvgm just
creates links referencing the image file so that the SVG renderer will evaluate the filename or path relative
to the location of the generated SVG file. If option *--embed-bitmaps* is given, JPEG and PNG images are
embedded into the SVG document. As this requires base64-encoding of the image data, the resulting SVG files
can become quite big.
*dvisvgm:bbox* lock:::
Locks the bounding box of the current page and prevents it from further updating, i.e. graphics elements added
after calling this special are not taken into account in determining the extent of the bounding box.
*dvisvgm:bbox* unlock:::
Unlocks the previously locked bounding box of the current page so that it gets updated again when adding
graphics elements to the page.
*dvisvgm:bbox* n[ew] 'name':::
Defines or resets a local bounding box called 'name'. The name may consist of letters and digits.
While processing a DVI page, dvisvgm continuously updates the (global) bounding box of the current page in order to
determine the minimal rectangle containing all visible page components (characters, images, drawing elements etc.)
Additionally to the global bounding box, the user can request an arbitrary number of named local bounding boxes.
Once defined, these boxes are updated together with the global bounding box starting with the first character that
follows the definition. Thus, the local boxes can be used to compute the extent of parts of the page. This is useful
for scenarios where the generated SVG file is post-processed.
+
In conjunction with special *dvisvgm:raw*, the macro *{?bbox 'name'}* expands to the four values 'x', 'y', 'w', and 'h'
(separated by spaces) specifying the coordinates of the upper left corner, width, and height of the local box 'name'.
If box 'name' wasn't previously defined, all four values equal to zero.
*dvisvgm:bbox* 'width' 'height' ['depth'] [+transform+]:::
Updates the bounding box of the current page by embedding a virtual rectangle ('x', 'y', 'width', 'height')
where the lower left corner is located at the current DVI drawing position ('x','y'). If the optional parameter 'depth'
is specified, dvisvgm embeds a second rectangle ('x', 'y', 'width', -__depth__). The lengths 'width', 'height', and
'depth' can be given together with a unit specifier (see option *--bbox*) or as plain floating point numbers.
In the latter case, TeX point units are assumed (1in = 72.27pt). Depending on size and position of the virtual rectangle,
this command either enlarges the overall bounding box or leaves it as is. So, it's not possible to reduce its extent.
+
This special is supposed to be used together with *dvisvgm:raw* in order to update the viewport of the page properly.
By default, the box extents are assigned unchanged and, in particular, are not altered by transformation commands.
In order to apply the current transformation matrix, the optional modifier +transform+ can be added at the end of
the special statement.
*dvisvgm:bbox* a[bs] 'x1' 'y1' 'x2' 'y2' [+transform+]:::
This variant of the bbox special updates the bounding box by embedding a virtual rectangle ('x1','y1','x2','y2').
The points ('x1','y1') and ('x2','y2') denote the absolute coordinates of two diagonal corners of the rectangle.
As with the relative special variant described above, the optional modifier +transform+ allows for applying the
current transformation matrix to the bounding box.
*dvisvgm:bbox* f[ix] 'x1' 'y1' 'x2' 'y2' [+transform+]:::
This variant of the bbox special assigns an absolute (final) bounding box to the resulting SVG. After executing
this command, dvisvgm doesn't further alter the bounding box coordinates, except this special is called again later.
The points ('x1','y1') and ('x2','y2') denote the absolute coordinates of two diagonal corners of the rectangle.
As with the relative special variant described above, the optional modifier +transform+ allows for applying the
current transformation matrix to the bounding box.
+
The following TeX fragment adds two raw SVG elements to the output and updates the bounding box accordingly:
+
[source,tex]
-------------------------------------------------------------------------------------
\special{dvisvgm:raw <circle cx='{?x}' cy='{?y}' r='10' stroke='black' fill='red'/>}%
\special{dvisvgm:bbox 10bp 10bp 10bp transform}%
\special{dvisvgm:bbox -10bp 10bp 10bp transform}
\special{dvisvgm:raw <path d='M50 200 L10 250 H100 Z' stroke='black' fill='blue'/>}%
\special{dvisvgm:bbox abs 10bp 200bp 100bp 250bp transform}
-------------------------------------------------------------------------------------
*dvisvgm:currentcolor* [on|off]:::
This special works similar to option `--currentcolor` but doesn't require an explicit color argument. Instead,
it takes the currently active color and replaces it with `currentColor`. Therefore, the result depends on both the
placement of the special and the preceding color changes. Argument `on` – which activates the 'currentColor'
functionality – can be omitted. When called with argument `off`, the functionality is deactivated again.
*dvisvgm:message* 'msg':::
Prints the given text 'msg' to the console. Besides static text it may also contain the macros +{?...}+ mentioned
in the description of *dvisvgm:raw*. The messages created by this special can be suppressed with option
*--verbosity* (see above).
*em*::
These specials were introduced with the 'emTeX' distribution by Eberhard Mattes. They provide line drawing
statements, instructions for embedding MSP, PCX, and BMP image files, as well as two PCL commands.
dvisvgm supports only the line drawing statements and ignores all other em specials silently.
A description of the command syntax can be found in the DVI driver documentation coming with
https://ctan.org/pkg/emtex[emTeX].
*html*::
The hyperref specification defines several variants on how to mark hyperlinked areas in a DVI file. dvisvgm
supports the plain HyperTeX special constructs as created with hyperref package option 'hypertex'.
By default, all linked areas of the document are marked by a rectangle. Option *--linkmark* allows you to change
this behavior. See above for further details. Information on syntax and semantics of the HyperTeX specials can be
found in the https://ctan.org/pkg/hyperref[hyperref manual].
*papersize*::
The 'papersize' special, which is an extension introduced by dvips, can be used to specify the widths and
heights of the pages in the DVI file. It affects the page it appears on as well as all following pages until
another papersize special is found. If there is more than one papersize special present on a page, dvisvgm
applies the last one. However, in order to stay compatible with previous versions of dvisvgm that did not
evaluate these specials, their processing must be explicitly enabled by adding option *--bbox=papersize* on
the command-line. Otherwise, dvisvgm ignores them and computes tight bounding boxes.
*pdf*::
pdfTeX and dvipdfmx introduced several special commands related to the generation of PDF files. Currently,
only 'pdf:mapfile', 'pdf:mapline', 'pdf:pagesize', and PDF hyperlink specials are supported by dvisvgm.
The latter are the PDF pendants to the HTML HyperTeX specials. They are generated by the hyperref package in
PDF mode, for example.
If a DVI page contains unsupported PDF specials, dvisvgm prints a warning message showing the number of
ignored special commands.
+
'pdf:pagesize' is similar to the 'papersize' special (see above) which specifies the size of the current
and all following pages. In order to actually apply the extents to the generated SVG files,
option *--bbox=papersize* must be given.
+
'pdf:mapfile' and 'pdf:mapline' allow for modifying the font map tree while processing the DVI file.
They are used by CTeX, for example. dvisvgm supports both, the dvips and dvipdfm font map format. For further
information on the command syntax and semantics, see the documentation of +\pdfmapfile+ in the
https://ctan.org/pkg/pdftex[pdfTeX user manual].
*ps*::
The famous DVI driver https://www.tug.org/texinfohtml/dvips.html['dvips'] introduced its own set of specials
in order to embed PostScript code into DVI files, which greatly improves the capabilities of DVI documents.
One aim of dvisvgm is to completely evaluate all PostScript fragments and to convert as many of them as possible
to SVG. In contrast to dvips, dvisvgm uses floating point arithmetic to compute the precise position of each
graphic element, i.e. it doesn't round the coordinates. Therefore, the relative locations of the graphic elements
may slightly differ from those computed by dvips.
+
Since PostScript is a rather complex language, dvisvgm does not implement its own PostScript interpreter
but relies on https://ghostscript.com[Ghostscript] instead. If the Ghostscript library was not linked to the
dvisvgm binary, it is looked up and loaded dynamically during runtime. In this case, dvisvgm looks for
'libgs.so.X' on Unix-like systems (supported ABI versions: 7,8,9), for 'libgs.X.dylib' on macOS, and for
'gsdll32.dll' or 'gsdll64.dll' on Windows. You can override the default file names with environment variable
*LIBGS* or the command-line option *--libgs*. The library must be reachable through the ld search path (\*nix)
or the PATH environment variable (Windows). Alternatively, the absolute file path can be specified. If the library
cannot be found, dvisvgm disables the processing of PostScript specials and prints a warning message.
Use option *--list-specials* to check whether PostScript support is available, i.e. entry 'ps' is present.
+
The PostScript handler also recognizes and evaluates bounding box data generated by the
https://ctan.org/pkg/preview[preview package] with option 'tightpage'. If such data is present in the DVI file
and if dvisvgm is called with option *--bbox=preview*, dvisvgm sets the width and total height of the SVG file to
the values derived from the preview data. Additionally, it prints a message showing the width, height,
and depth of the box in TeX point units to the console. Especially, the depth value can be read by a post-processor
to vertically align the SVG graphics with the baseline of surrounding text in HTML or XSL-FO documents, for example.
Please note that SVG bounding boxes are defined by a width and (total) height. In contrast to TeX, SVG provides
no means to differentiate between height and depth, i.e. the vertical extents above and below the baseline,
respectively. Therefore, it is generally not possible to retrieve the depth value from the SVG file itself.
+
If you call dvisvgm with option *--bbox=min* (the default) and preview data is present in the DVI file, dvisvgm
doesn't apply the preview extents but computes a bounding box that tightly encloses the page contents. The height,
depth and width values written to console are adapted accordingly.
*tpic*::
The TPIC special set defines instructions for drawing simple geometric objects. Some LaTeX packages, like
eepic and tplot, use these specials to describe graphics.
Examples
--------
+dvisvgm file+::
Converts the first page of 'file.dvi' to 'file.svg'.
+dvisvgm -p1-5 file+::
Converts the first five pages of 'file.dvi' to 'file-1.svg',...,'file-5.svg'.
+dvisvgm -p1- file+::
Converts all pages of 'file.dvi' to separate SVG files.
+dvisvgm -p1,3 -O file+::
Converts the first and third page of 'file.dvi' to optimized SVG files.
+dvisvgm - < file.dvi+::
Converts the first page of 'file.dvi' to 'stdin.svg' where the contents of 'file.dvi' is read from *stdin*.
+dvisvgm -z file+::
Converts the first page of 'file.dvi' to 'file.svgz' with default compression level 9.
+dvisvgm -p5 -z3 -ba4-l -o newfile file+::
Converts the fifth page of 'file.dvi' to 'newfile.svgz' with compression level 3. The bounding box is set to DIN/ISO A4 in landscape format.
+dvisvgm --transform="R20,w/3,2h/5 T1cm,1cm S2,3" file+::
Converts the first page of 'file.dvi' to 'file.svg' where three transformations are applied.
[[environment]]
Environment
-----------
dvisvgm uses the *kpathsea* library for locating the files that it opens.
Hence, the environment variables described in the library's documentation influence the converter.
If dvisvgm was linked without the Ghostscript library, and if PostScript support has not been disabled,
the shared Ghostscript library is looked up during runtime via dlopen(). The environment variable *LIBGS*
can be used to specify path and file name of the library.
The pre-compiled Windows versions of dvisvgm require a working installation of MiKTeX 2.9 or above.
dvisvgm does not work together with the portable edition of MiKTeX because it relies on MiKTeX's COM
interface that is only accessible in a local installation.
To enable the evaluation of PostScript specials, the original Ghostscript DLL 'gsdll32.dll' must be present
and reachable through the search path. 64-bit Windows builds require the 64-bit Ghostscript DLL 'gsdll64.dll'.
Both DLLs come with the corresponding Ghostscript installers available from https://ghostscript.com.
The environment variable *DVISVGM_COLORS* specifies the colors used to highlight various parts of dvisvgm's
message output. It is only evaluated if option *--color* is given. The value of *DVISVGM_COLORS* is a list of
colon-separated entries of the form 'gg'='BF', where 'gg' denotes one of the color group indicators listed
below, and 'BF' are two hexadecimal digits specifying the background (first digit) and foreground/text color
(second digit). The color values are defined as follows: 0=black, 1=red, 2=green, 3=yellow, 4=blue,
5=magenta, 6=cyan, 7=gray, 8=bright red, 9=bright green, A=bright yellow, B=bright blue, C=bright magenta,
D=bright cyan, E=bright gray, F=white. Depending on the terminal, the colors may differ. Rather than changing
both the text and background color, it's also possible to change only one of them: An asterisk (*) in
place of a hexadecimal digit indicates the default text or background color of the terminal.
All malformed entries in the list are silently ignored.
[horizontal]
*er*:: error messages
*wn*:: warning messages
*pn*:: messages about page numbers
*ps*:: page size messages
*fw*:: information about the files written
*sm*:: state messages
*tr*:: messages of the glyph tracer
*pi*:: progress indicator
*Example:* +er=01:pi=\*5+ sets the colors of error messages (+er+) to red (+1+) on black (+0+), and those
of progress indicators (+pi+) to cyan (+5+) on default background (+*+).
Variable *DVISVGM_PDF_PROC* allows you to select the desired PDF processor. dvisvgm requires either
Ghostscript (version < 10.01.0) or mutool to process PDF files. IF *DVISVGM_PDF_PROC* is not set, dvisvgm
tries to detect the available processors. See option *--pdf* for further information. To select a
specific PDF processor, you can set *DVISVGM_PDF_PROC* to +gs+ or +mutool+ which forces the use of
Ghostscript and mutool respectively.
Files
-----
The location of the following files is determined by the kpathsea library.
To check the actual kpathsea configuration you can use the *kpsewhich* utility.
[horizontal]
**.enc*:: Font encoding files
**.fgd*:: Font glyph data files (cache files created by dvisvgm)
**.map*:: Font map files
**.mf*:: Metafont input files
**.pfb*:: PostScript Type 1 font files
**.pro*:: PostScript header/prologue files
**.tfm*:: TeX font metric files
**.ttf*:: TrueType font files
**.vf*:: Virtual font files
See also
--------
*tex(1), mf(1), mktexmf(1), grodvi(1), potrace(1)*, and the *kpathsea library* info documentation.
Resources
---------
Project home page::: https://dvisvgm.de
Code repository::
gitextract_wt4otd8u/
├── AUTHORS
├── COPYING
├── INSTALL
├── Makefile.am
├── NEWS
├── README
├── README.md
├── configure.ac
├── doc/
│ ├── Makefile.am
│ ├── conf-dblatex-man.xsl
│ ├── conf-dblatex-pdf.xsl
│ ├── dvisvgm.txt.in
│ ├── generate-dvisvgm-sty.xsl
│ ├── tweak-db-article.xsl
│ ├── tweak-db-refentry.xsl
│ ├── tweak-dblatex-pdf.xsl
│ └── tweak-dblatex-tex.py
├── libs/
│ ├── Makefile.am
│ ├── boost/
│ │ ├── LICENSE.txt
│ │ ├── Makefile.am
│ │ ├── boost-vectorstream.hpp
│ │ └── vectorstream.hpp
│ ├── brotli/
│ │ ├── LICENSE
│ │ ├── Makefile.am
│ │ ├── common/
│ │ │ ├── constants.c
│ │ │ ├── constants.h
│ │ │ ├── context.c
│ │ │ ├── context.h
│ │ │ ├── dictionary.c
│ │ │ ├── dictionary.h
│ │ │ ├── dictionary_inc.h
│ │ │ ├── platform.c
│ │ │ ├── platform.h
│ │ │ ├── shared_dictionary_internal.h
│ │ │ ├── static_init.h
│ │ │ ├── transform.c
│ │ │ ├── transform.h
│ │ │ └── version.h
│ │ ├── enc/
│ │ │ ├── backward_references.c
│ │ │ ├── backward_references.h
│ │ │ ├── backward_references_hq.c
│ │ │ ├── backward_references_hq.h
│ │ │ ├── backward_references_inc.h
│ │ │ ├── bit_cost.c
│ │ │ ├── bit_cost.h
│ │ │ ├── bit_cost_inc.h
│ │ │ ├── block_encoder_inc.h
│ │ │ ├── block_splitter.c
│ │ │ ├── block_splitter.h
│ │ │ ├── block_splitter_inc.h
│ │ │ ├── brotli_bit_stream.c
│ │ │ ├── brotli_bit_stream.h
│ │ │ ├── cluster.c
│ │ │ ├── cluster.h
│ │ │ ├── cluster_inc.h
│ │ │ ├── command.c
│ │ │ ├── command.h
│ │ │ ├── compound_dictionary.c
│ │ │ ├── compound_dictionary.h
│ │ │ ├── compress_fragment.c
│ │ │ ├── compress_fragment.h
│ │ │ ├── compress_fragment_two_pass.c
│ │ │ ├── compress_fragment_two_pass.h
│ │ │ ├── dictionary_hash.c
│ │ │ ├── dictionary_hash.h
│ │ │ ├── dictionary_hash_inc.h
│ │ │ ├── encode.c
│ │ │ ├── encoder_dict.c
│ │ │ ├── encoder_dict.h
│ │ │ ├── entropy_encode.c
│ │ │ ├── entropy_encode.h
│ │ │ ├── entropy_encode_static.h
│ │ │ ├── fast_log.c
│ │ │ ├── fast_log.h
│ │ │ ├── find_match_length.h
│ │ │ ├── hash.h
│ │ │ ├── hash_base.h
│ │ │ ├── hash_composite_inc.h
│ │ │ ├── hash_forgetful_chain_inc.h
│ │ │ ├── hash_longest_match64_inc.h
│ │ │ ├── hash_longest_match64_simd_inc.h
│ │ │ ├── hash_longest_match_inc.h
│ │ │ ├── hash_longest_match_quickly_inc.h
│ │ │ ├── hash_longest_match_simd_inc.h
│ │ │ ├── hash_rolling_inc.h
│ │ │ ├── hash_to_binary_tree_inc.h
│ │ │ ├── histogram.c
│ │ │ ├── histogram.h
│ │ │ ├── histogram_inc.h
│ │ │ ├── literal_cost.c
│ │ │ ├── literal_cost.h
│ │ │ ├── matching_tag_mask.h
│ │ │ ├── memory.c
│ │ │ ├── memory.h
│ │ │ ├── metablock.c
│ │ │ ├── metablock.h
│ │ │ ├── metablock_inc.h
│ │ │ ├── params.h
│ │ │ ├── prefix.h
│ │ │ ├── quality.h
│ │ │ ├── ringbuffer.h
│ │ │ ├── state.h
│ │ │ ├── static_dict.c
│ │ │ ├── static_dict.h
│ │ │ ├── static_dict_lut.c
│ │ │ ├── static_dict_lut.h
│ │ │ ├── static_dict_lut_inc.h
│ │ │ ├── static_init.c
│ │ │ ├── static_init.h
│ │ │ ├── utf8_util.c
│ │ │ ├── utf8_util.h
│ │ │ └── write_bits.h
│ │ └── include/
│ │ └── brotli/
│ │ ├── decode.h
│ │ ├── encode.h
│ │ ├── port.h
│ │ ├── shared_dictionary.h
│ │ └── types.h
│ ├── clipper/
│ │ ├── License.txt
│ │ ├── Makefile.am
│ │ ├── clipper.cpp
│ │ └── clipper.hpp
│ ├── defs.am
│ ├── md5/
│ │ ├── Makefile.am
│ │ ├── md5.c
│ │ └── md5.h
│ ├── potrace/
│ │ ├── Makefile.am
│ │ ├── auxiliary.h
│ │ ├── bitmap.h
│ │ ├── config.h
│ │ ├── curve.c
│ │ ├── curve.h
│ │ ├── decompose.c
│ │ ├── decompose.h
│ │ ├── lists.h
│ │ ├── potracelib.c
│ │ ├── potracelib.h
│ │ ├── progress.h
│ │ ├── trace.c
│ │ └── trace.h
│ ├── variant/
│ │ ├── LICENSE.md
│ │ ├── Makefile.am
│ │ └── include/
│ │ └── mpark/
│ │ └── variant.hpp
│ ├── woff2/
│ │ ├── LICENSE
│ │ ├── Makefile.am
│ │ ├── include/
│ │ │ └── woff2/
│ │ │ ├── decode.h
│ │ │ ├── encode.h
│ │ │ ├── output.h
│ │ │ └── version.h
│ │ └── src/
│ │ ├── buffer.h
│ │ ├── font.cc
│ │ ├── font.h
│ │ ├── glyph.cc
│ │ ├── glyph.h
│ │ ├── normalize.cc
│ │ ├── normalize.h
│ │ ├── port.h
│ │ ├── round.h
│ │ ├── store_bytes.h
│ │ ├── table_tags.cc
│ │ ├── table_tags.h
│ │ ├── transform.cc
│ │ ├── transform.h
│ │ ├── variable_length.cc
│ │ ├── variable_length.h
│ │ ├── woff2_common.cc
│ │ ├── woff2_common.h
│ │ ├── woff2_enc.cc
│ │ └── woff2_out.cc
│ └── xxHash/
│ ├── LICENSE
│ ├── Makefile.am
│ ├── xxh3.h
│ ├── xxhash.c
│ └── xxhash.h
├── m4/
│ ├── ax_ac_append_to_file.m4
│ ├── ax_ac_print_to_file.m4
│ ├── ax_add_am_macro_static.m4
│ ├── ax_am_macros_static.m4
│ ├── ax_check_compile_flag.m4
│ ├── ax_code_coverage.m4
│ ├── ax_cxx_compile_stdcxx.m4
│ ├── ax_file_escapes.m4
│ └── ax_gcc_builtin.m4
├── src/
│ ├── AGLTable.hpp
│ ├── BasicDVIReader.cpp
│ ├── BasicDVIReader.hpp
│ ├── Bezier.cpp
│ ├── Bezier.hpp
│ ├── BgColorSpecialHandler.cpp
│ ├── BgColorSpecialHandler.hpp
│ ├── Bitmap.cpp
│ ├── Bitmap.hpp
│ ├── BoundingBox.cpp
│ ├── BoundingBox.hpp
│ ├── CLCommandLine.cpp
│ ├── CLCommandLine.hpp
│ ├── CLOption.hpp
│ ├── CMap.cpp
│ ├── CMap.hpp
│ ├── CMapManager.cpp
│ ├── CMapManager.hpp
│ ├── CMapReader.cpp
│ ├── CMapReader.hpp
│ ├── Calculator.cpp
│ ├── Calculator.hpp
│ ├── CharMapID.cpp
│ ├── CharMapID.hpp
│ ├── Character.hpp
│ ├── Color.cpp
│ ├── Color.hpp
│ ├── ColorSpecialHandler.cpp
│ ├── ColorSpecialHandler.hpp
│ ├── DLLoader.cpp
│ ├── DLLoader.hpp
│ ├── DVIActions.hpp
│ ├── DVIReader.cpp
│ ├── DVIReader.hpp
│ ├── DVIToSVG.cpp
│ ├── DVIToSVG.hpp
│ ├── DVIToSVGActions.cpp
│ ├── DVIToSVGActions.hpp
│ ├── Directory.cpp
│ ├── Directory.hpp
│ ├── Doxyfile
│ ├── DvisvgmSpecialHandler.cpp
│ ├── DvisvgmSpecialHandler.hpp
│ ├── EPSFile.cpp
│ ├── EPSFile.hpp
│ ├── EPSToSVG.hpp
│ ├── EllipticalArc.cpp
│ ├── EllipticalArc.hpp
│ ├── EmSpecialHandler.cpp
│ ├── EmSpecialHandler.hpp
│ ├── EncFile.cpp
│ ├── EncFile.hpp
│ ├── FileFinder.cpp
│ ├── FileFinder.hpp
│ ├── FilePath.cpp
│ ├── FilePath.hpp
│ ├── FileSystem.cpp
│ ├── FileSystem.hpp
│ ├── FixWord.hpp
│ ├── Font.cpp
│ ├── Font.hpp
│ ├── FontCache.cpp
│ ├── FontCache.hpp
│ ├── FontEncoding.cpp
│ ├── FontEncoding.hpp
│ ├── FontEngine.cpp
│ ├── FontEngine.hpp
│ ├── FontManager.cpp
│ ├── FontManager.hpp
│ ├── FontMap.cpp
│ ├── FontMap.hpp
│ ├── FontMetrics.cpp
│ ├── FontMetrics.hpp
│ ├── FontStyle.hpp
│ ├── FontWriter.cpp
│ ├── FontWriter.hpp
│ ├── GFGlyphTracer.cpp
│ ├── GFGlyphTracer.hpp
│ ├── GFReader.cpp
│ ├── GFReader.hpp
│ ├── GFTracer.cpp
│ ├── GFTracer.hpp
│ ├── Ghostscript.cpp
│ ├── Ghostscript.hpp
│ ├── Glyph.hpp
│ ├── GlyphTracerMessages.hpp
│ ├── GraphicsPath.hpp
│ ├── GraphicsPathParser.hpp
│ ├── HashFunction.cpp
│ ├── HashFunction.hpp
│ ├── HtmlSpecialHandler.cpp
│ ├── HtmlSpecialHandler.hpp
│ ├── HyperlinkManager.cpp
│ ├── HyperlinkManager.hpp
│ ├── ImageToSVG.cpp
│ ├── ImageToSVG.hpp
│ ├── InputBuffer.cpp
│ ├── InputBuffer.hpp
│ ├── InputReader.cpp
│ ├── InputReader.hpp
│ ├── JFM.cpp
│ ├── JFM.hpp
│ ├── Length.cpp
│ ├── Length.hpp
│ ├── MD5HashFunction.hpp
│ ├── Makefile.am
│ ├── MapLine.cpp
│ ├── MapLine.hpp
│ ├── Matrix.cpp
│ ├── Matrix.hpp
│ ├── Message.cpp
│ ├── Message.hpp
│ ├── MessageException.hpp
│ ├── MetafontWrapper.cpp
│ ├── MetafontWrapper.hpp
│ ├── MiKTeXCom.cpp
│ ├── MiKTeXCom.hpp
│ ├── NoPsSpecialHandler.cpp
│ ├── NoPsSpecialHandler.hpp
│ ├── NumericRanges.hpp
│ ├── OFM.cpp
│ ├── OFM.hpp
│ ├── Opacity.cpp
│ ├── Opacity.hpp
│ ├── PDFHandler.cpp
│ ├── PDFHandler.hpp
│ ├── PDFParser.cpp
│ ├── PDFParser.hpp
│ ├── PDFToSVG.cpp
│ ├── PDFToSVG.hpp
│ ├── PSInterpreter.cpp
│ ├── PSInterpreter.hpp
│ ├── PSPattern.cpp
│ ├── PSPattern.hpp
│ ├── PSPreviewHandler.cpp
│ ├── PSPreviewHandler.hpp
│ ├── PageRanges.cpp
│ ├── PageRanges.hpp
│ ├── PageSize.cpp
│ ├── PageSize.hpp
│ ├── Pair.hpp
│ ├── PapersizeSpecialHandler.cpp
│ ├── PapersizeSpecialHandler.hpp
│ ├── PathClipper.cpp
│ ├── PathClipper.hpp
│ ├── PdfSpecialHandler.cpp
│ ├── PdfSpecialHandler.hpp
│ ├── PreScanDVIReader.cpp
│ ├── PreScanDVIReader.hpp
│ ├── Process.cpp
│ ├── Process.hpp
│ ├── PsSpecialHandler.cpp
│ ├── PsSpecialHandler.hpp
│ ├── PsSpecialHandlerProxy.cpp
│ ├── PsSpecialHandlerProxy.hpp
│ ├── RangeMap.cpp
│ ├── RangeMap.hpp
│ ├── SVGCharHandler.cpp
│ ├── SVGCharHandler.hpp
│ ├── SVGCharHandlerFactory.cpp
│ ├── SVGCharHandlerFactory.hpp
│ ├── SVGCharPathHandler.cpp
│ ├── SVGCharPathHandler.hpp
│ ├── SVGCharTspanTextHandler.cpp
│ ├── SVGCharTspanTextHandler.hpp
│ ├── SVGElement.cpp
│ ├── SVGElement.hpp
│ ├── SVGOutput.cpp
│ ├── SVGOutput.hpp
│ ├── SVGSingleCharTextHandler.cpp
│ ├── SVGSingleCharTextHandler.hpp
│ ├── SVGTree.cpp
│ ├── SVGTree.hpp
│ ├── ShadingPatch.cpp
│ ├── ShadingPatch.hpp
│ ├── SignalHandler.cpp
│ ├── SignalHandler.hpp
│ ├── SourceInput.cpp
│ ├── SourceInput.hpp
│ ├── SpecialActions.cpp
│ ├── SpecialActions.hpp
│ ├── SpecialHandler.hpp
│ ├── SpecialManager.cpp
│ ├── SpecialManager.hpp
│ ├── StreamReader.cpp
│ ├── StreamReader.hpp
│ ├── StreamWriter.cpp
│ ├── StreamWriter.hpp
│ ├── Subfont.cpp
│ ├── Subfont.hpp
│ ├── System.cpp
│ ├── System.hpp
│ ├── TFM.cpp
│ ├── TFM.hpp
│ ├── TensorProductPatch.cpp
│ ├── TensorProductPatch.hpp
│ ├── Terminal.cpp
│ ├── Terminal.hpp
│ ├── ToUnicodeMap.cpp
│ ├── ToUnicodeMap.hpp
│ ├── TpicSpecialHandler.cpp
│ ├── TpicSpecialHandler.hpp
│ ├── TriangularPatch.cpp
│ ├── TriangularPatch.hpp
│ ├── Unicode.cpp
│ ├── Unicode.hpp
│ ├── VFActions.hpp
│ ├── VFReader.cpp
│ ├── VFReader.hpp
│ ├── VectorIterator.hpp
│ ├── XMLDocument.cpp
│ ├── XMLDocument.hpp
│ ├── XMLNode.cpp
│ ├── XMLNode.hpp
│ ├── XMLParser.cpp
│ ├── XMLParser.hpp
│ ├── XMLString.cpp
│ ├── XMLString.hpp
│ ├── XXHashFunction.hpp
│ ├── ZLibOutputStream.hpp
│ ├── algorithm.hpp
│ ├── dvisvgm.cpp
│ ├── fonts/
│ │ ├── Base14Fonts.cpp
│ │ ├── Base14Fonts.hpp
│ │ ├── Dingbats.cff.cpp
│ │ ├── Makefile.am
│ │ ├── NimbusMonoPS-Bold.cff.cpp
│ │ ├── NimbusMonoPS-BoldItalic.cff.cpp
│ │ ├── NimbusMonoPS-Italic.cff.cpp
│ │ ├── NimbusMonoPS-Regular.cff.cpp
│ │ ├── NimbusRoman-Bold.cff.cpp
│ │ ├── NimbusRoman-BoldItalic.cff.cpp
│ │ ├── NimbusRoman-Italic.cff.cpp
│ │ ├── NimbusRoman-Regular.cff.cpp
│ │ ├── NimbusSans-Bold.cff.cpp
│ │ ├── NimbusSans-BoldItalic.cff.cpp
│ │ ├── NimbusSans-Italic.cff.cpp
│ │ ├── NimbusSans-Regular.cff.cpp
│ │ └── StandardSymbolsPS.cff.cpp
│ ├── iapi.h
│ ├── ierrors.h
│ ├── macros.hpp
│ ├── opt2cpp.py
│ ├── optimizer/
│ │ ├── AttributeExtractor.cpp
│ │ ├── AttributeExtractor.hpp
│ │ ├── ClipPathReassigner.cpp
│ │ ├── ClipPathReassigner.hpp
│ │ ├── DependencyGraph.hpp
│ │ ├── GroupCollapser.cpp
│ │ ├── GroupCollapser.hpp
│ │ ├── Makefile.am
│ │ ├── OptimizerModule.hpp
│ │ ├── RedundantElementRemover.cpp
│ │ ├── RedundantElementRemover.hpp
│ │ ├── SVGOptimizer.cpp
│ │ ├── SVGOptimizer.hpp
│ │ ├── TextSimplifier.cpp
│ │ ├── TextSimplifier.hpp
│ │ ├── TransformSimplifier.cpp
│ │ ├── TransformSimplifier.hpp
│ │ ├── WSNodeRemover.cpp
│ │ └── WSNodeRemover.hpp
│ ├── options.dtd
│ ├── options.xml
│ ├── psdefs.cpp
│ ├── ttf/
│ │ ├── CmapTable.cpp
│ │ ├── CmapTable.hpp
│ │ ├── GlyfTable.cpp
│ │ ├── GlyfTable.hpp
│ │ ├── HeadTable.cpp
│ │ ├── HeadTable.hpp
│ │ ├── HheaTable.cpp
│ │ ├── HheaTable.hpp
│ │ ├── HmtxTable.cpp
│ │ ├── HmtxTable.hpp
│ │ ├── LocaTable.hpp
│ │ ├── Makefile.am
│ │ ├── MaxpTable.cpp
│ │ ├── MaxpTable.hpp
│ │ ├── NameTable.cpp
│ │ ├── NameTable.hpp
│ │ ├── OS2Table.cpp
│ │ ├── OS2Table.hpp
│ │ ├── PostTable.cpp
│ │ ├── PostTable.hpp
│ │ ├── TTFAutohint.cpp
│ │ ├── TTFAutohint.hpp
│ │ ├── TTFTable.cpp
│ │ ├── TTFTable.hpp
│ │ ├── TTFWriter.cpp
│ │ ├── TTFWriter.hpp
│ │ ├── VheaTable.cpp
│ │ ├── VheaTable.hpp
│ │ ├── VmtxTable.cpp
│ │ └── VmtxTable.hpp
│ ├── utility.cpp
│ ├── utility.hpp
│ ├── version.hpp
│ ├── version.hpp.in
│ └── windows.hpp
├── tests/
│ ├── BezierTest.cpp
│ ├── BitmapTest.cpp
│ ├── BoundingBoxTest.cpp
│ ├── CMapManagerTest.cpp
│ ├── CMapReaderTest.cpp
│ ├── CMapTest.cpp
│ ├── CalculatorTest.cpp
│ ├── ColorSpecialTest.cpp
│ ├── ColorTest.cpp
│ ├── CommandLineTest.cpp
│ ├── DVIReaderTest.cpp
│ ├── DependencyGraphTest.cpp
│ ├── DirectoryTest.cpp
│ ├── DvisvgmSpecialTest.cpp
│ ├── EllipticalArcTest.cpp
│ ├── EmSpecialTest.cpp
│ ├── FileFinderTest.cpp
│ ├── FilePathTest.cpp
│ ├── FileSystemTest.cpp
│ ├── FontCacheTest.cpp
│ ├── FontManagerTest.cpp
│ ├── FontMapTest.cpp
│ ├── GFGlyphTracerTest.cpp
│ ├── GFReaderTest.cpp
│ ├── GhostscriptTest.cpp
│ ├── GraphicsPathParserTest.cpp
│ ├── GraphicsPathTest.cpp
│ ├── HashFunctionTest.cpp
│ ├── JFMReaderTest.cpp
│ ├── LengthTest.cpp
│ ├── Makefile.am
│ ├── MapLineTest.cpp
│ ├── MatrixTest.cpp
│ ├── MessageExceptionTest.cpp
│ ├── NumericRangesTest.cpp
│ ├── OFMReaderTest.cpp
│ ├── PDFParserTest.cpp
│ ├── PSInterpreterTest.cpp
│ ├── PageRagesTest.cpp
│ ├── PageSizeTest.cpp
│ ├── PairTest.cpp
│ ├── PapersizeSpecialTest.cpp
│ ├── RangeMapTest.cpp
│ ├── SVGOutputTest.cpp
│ ├── ShadingPatchTest.cpp
│ ├── SpecialManagerTest.cpp
│ ├── SplittedCharInputBufferTest.cpp
│ ├── StreamInputBufferTest.cpp
│ ├── StreamReaderTest.cpp
│ ├── StreamWriterTest.cpp
│ ├── StringMatcherTest.cpp
│ ├── SubfontTest.cpp
│ ├── TFMReaderTest.cpp
│ ├── TensorProductPatchTest.cpp
│ ├── ToUnicodeMapTest.cpp
│ ├── TpicSpecialTest.cpp
│ ├── TriangularPatchTest.cpp
│ ├── UnicodeTest.cpp
│ ├── UtilityTest.cpp
│ ├── VectorIteratorTest.cpp
│ ├── XMLNodeTest.cpp
│ ├── XMLStringTest.cpp
│ ├── check-conv
│ ├── create-makefile
│ ├── data/
│ │ ├── Makefile.am
│ │ ├── cidjmgr0-h.tfm
│ │ ├── cmr10.600gf
│ │ ├── cmr10.pfb
│ │ ├── cmr10.tfm
│ │ ├── lmmono12-regular.otf
│ │ ├── omarab.ofm
│ │ ├── ot1.cmap
│ │ ├── sample.sfd
│ │ └── upjf-g.ofm
│ ├── genhashcheck.py
│ ├── gtest/
│ │ ├── LICENSE
│ │ ├── include/
│ │ │ └── gtest/
│ │ │ ├── gtest-assertion-result.h
│ │ │ ├── gtest-death-test.h
│ │ │ ├── gtest-matchers.h
│ │ │ ├── gtest-message.h
│ │ │ ├── gtest-param-test.h
│ │ │ ├── gtest-printers.h
│ │ │ ├── gtest-spi.h
│ │ │ ├── gtest-test-part.h
│ │ │ ├── gtest-typed-test.h
│ │ │ ├── gtest.h
│ │ │ ├── gtest_pred_impl.h
│ │ │ ├── gtest_prod.h
│ │ │ └── internal/
│ │ │ ├── custom/
│ │ │ │ ├── gtest-port.h
│ │ │ │ ├── gtest-printers.h
│ │ │ │ └── gtest.h
│ │ │ ├── gtest-death-test-internal.h
│ │ │ ├── gtest-filepath.h
│ │ │ ├── gtest-internal.h
│ │ │ ├── gtest-linked_ptr.h
│ │ │ ├── gtest-param-util-generated.h
│ │ │ ├── gtest-param-util.h
│ │ │ ├── gtest-port-arch.h
│ │ │ ├── gtest-port.h
│ │ │ ├── gtest-string.h
│ │ │ ├── gtest-tuple.h
│ │ │ └── gtest-type-util.h
│ │ └── src/
│ │ ├── gtest-all.cc
│ │ ├── gtest-assertion-result.cc
│ │ ├── gtest-death-test.cc
│ │ ├── gtest-filepath.cc
│ │ ├── gtest-internal-inl.h
│ │ ├── gtest-matchers.cc
│ │ ├── gtest-port.cc
│ │ ├── gtest-printers.cc
│ │ ├── gtest-test-part.cc
│ │ ├── gtest-typed-test.cc
│ │ ├── gtest.cc
│ │ └── gtest_main.cc
│ └── normalize.xsl
└── vc/
├── README
├── brotli/
│ ├── brotli.vcxproj
│ └── brotli.vcxproj.filters
├── clipper/
│ ├── clipper.vcxproj
│ └── clipper.vcxproj.filters
├── config.h
├── dvisvgm.rc
├── dvisvgm.vcxproj
├── dvisvgm.vcxproj.filters
├── freetype/
│ ├── freetype.vcxproj
│ └── freetype.vcxproj.filters
├── md5/
│ ├── md5.vcxproj
│ └── md5.vcxproj.filters
├── miktex-com/
│ ├── miktex-com.vcxproj
│ ├── miktex-com.vcxproj.filters
│ ├── miktex-session.idl
│ └── miktexidl.idl
├── potrace/
│ ├── libpotrace.vcxproj
│ └── libpotrace.vcxproj.filters
├── woff2/
│ ├── woff2.vcxproj
│ └── woff2.vcxproj.filters
├── xxHash/
│ ├── xxhash.vcxproj
│ └── xxhash.vcxproj.filters
└── zlib/
├── zlib.vcxproj
└── zlib.vcxproj.filters
Showing preview only (888K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4990 symbols across 449 files)
FILE: doc/tweak-dblatex-tex.py
function main (line 4) | def main (latex_file, stdout):
FILE: libs/boost/boost-vectorstream.hpp
type boost (line 51) | namespace boost { namespace interprocess {
type interprocess (line 51) | namespace interprocess {
class basic_vectorbuf (line 59) | class basic_vectorbuf
method basic_vectorbuf (line 81) | explicit basic_vectorbuf(std::ios_base::openmode mode
method basic_vectorbuf (line 89) | explicit basic_vectorbuf(const VectorParameter ¶m,
method swap_vector (line 100) | void swap_vector(vector_type &vect)
method vector_type (line 119) | const vector_type &vector() const
method reserve (line 144) | void reserve(typename vector_type::size_type size)
method clear (line 161) | void clear()
method initialize_pointers (line 169) | void initialize_pointers()
method int_type (line 209) | virtual int_type underflow() BOOST_OVERRIDE
method int_type (line 224) | virtual int_type pbackfail(int_type c = CharTraits::eof()) BOOST_O...
method int_type (line 249) | virtual int_type overflow(int_type c = CharTraits::eof()) BOOST_OV...
method pos_type (line 282) | virtual pos_type seekoff(off_type off, std::ios_base::seekdir dir,
method pos_type (line 351) | virtual pos_type seekpos(pos_type pos, std::ios_base::openmode mode
class basic_ivectorstream (line 367) | class basic_ivectorstream
method vectorbuf_t (line 388) | vectorbuf_t & get_buf() { return *this; }
method vectorbuf_t (line 389) | const vectorbuf_t & get_buf() const{ return *this; }
method basic_ivectorstream (line 396) | basic_ivectorstream(std::ios_base::openmode mode = std::ios_base::in)
method basic_ivectorstream (line 406) | basic_ivectorstream(const VectorParameter ¶m,
method swap_vector (line 423) | void swap_vector(vector_type &vect)
method vector_type (line 428) | const vector_type &vector() const
method reserve (line 434) | void reserve(typename vector_type::size_type size)
method clear (line 439) | void clear()
class basic_ovectorstream (line 448) | class basic_ovectorstream
method vectorbuf_t (line 469) | vectorbuf_t & get_buf() { return *this; }
method vectorbuf_t (line 470) | const vectorbuf_t & get_buf()const { return *this; }
method basic_ovectorstream (line 476) | basic_ovectorstream(std::ios_base::openmode mode = std::ios_base::...
method basic_ovectorstream (line 486) | basic_ovectorstream(const VectorParameter ¶m,
method swap_vector (line 503) | void swap_vector(vector_type &vect)
method vector_type (line 508) | const vector_type &vector() const
method reserve (line 514) | void reserve(typename vector_type::size_type size)
class basic_vectorstream (line 523) | class basic_vectorstream
method vectorbuf_t (line 544) | vectorbuf_t & get_buf() { return *this; }
method vectorbuf_t (line 545) | const vectorbuf_t & get_buf() const{ return *this; }
method basic_vectorstream (line 551) | basic_vectorstream(std::ios_base::openmode mode
method basic_vectorstream (line 562) | basic_vectorstream(const VectorParameter ¶m, std::ios_base::op...
method swap_vector (line 578) | void swap_vector(vector_type &vect)
method vector_type (line 583) | const vector_type &vector() const
method reserve (line 589) | void reserve(typename vector_type::size_type size)
method clear (line 594) | void clear()
FILE: libs/brotli/common/constants.h
type BrotliDistanceCodeLimit (line 103) | typedef struct BrotliDistanceCodeLimit {
function BROTLI_UNUSED_FUNCTION (line 125) | BROTLI_UNUSED_FUNCTION BrotliDistanceCodeLimit BrotliCalculateDistanceCo...
type BrotliPrefixCodeRange (line 189) | typedef struct {
FILE: libs/brotli/common/context.h
type ContextType (line 93) | typedef enum ContextType {
FILE: libs/brotli/common/dictionary.c
function BrotliDictionary (line 48) | const BrotliDictionary* BrotliGetDictionary(void) {
function BrotliSetDictionaryData (line 52) | void BrotliSetDictionaryData(const uint8_t* data) {
FILE: libs/brotli/common/dictionary.h
type BrotliDictionary (line 18) | typedef struct BrotliDictionary {
FILE: libs/brotli/common/platform.c
function BrotliDefaultFreeFunc (line 16) | void BrotliDefaultFreeFunc(void* opaque, void* address) {
FILE: libs/brotli/common/platform.h
type BrotliPackedValue (line 290) | typedef union BrotliPackedValue {
function BROTLI_INLINE (line 297) | static BROTLI_INLINE uint16_t BrotliUnalignedRead16(const void* p) {
function BROTLI_INLINE (line 301) | static BROTLI_INLINE uint32_t BrotliUnalignedRead32(const void* p) {
function BROTLI_INLINE (line 305) | static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) {
function BROTLI_INLINE (line 309) | static BROTLI_INLINE size_t BrotliUnalignedReadSizeT(const void* p) {
function BROTLI_INLINE (line 313) | static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) {
function BROTLI_INLINE (line 320) | static BROTLI_INLINE uint16_t BrotliUnalignedRead16(const void* p) {
function BROTLI_INLINE (line 325) | static BROTLI_INLINE uint32_t BrotliUnalignedRead32(const void* p) {
function BROTLI_INLINE (line 330) | static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) {
function BROTLI_INLINE (line 335) | static BROTLI_INLINE size_t BrotliUnalignedReadSizeT(const void* p) {
function BROTLI_INLINE (line 340) | static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) {
function BROTLI_INLINE (line 379) | static BROTLI_INLINE uint16_t BROTLI_UNALIGNED_LOAD16LE(const void* p) {
function BROTLI_INLINE (line 383) | static BROTLI_INLINE uint32_t BROTLI_UNALIGNED_LOAD32LE(const void* p) {
function BROTLI_INLINE (line 387) | static BROTLI_INLINE uint64_t BROTLI_UNALIGNED_LOAD64LE(const void* p) {
function BROTLI_INLINE (line 391) | static BROTLI_INLINE void BROTLI_UNALIGNED_STORE64LE(void* p, uint64_t v) {
function BROTLI_INLINE (line 397) | static BROTLI_INLINE uint16_t BROTLI_UNALIGNED_LOAD16LE(const void* p) {
function BROTLI_INLINE (line 401) | static BROTLI_INLINE uint32_t BROTLI_UNALIGNED_LOAD32LE(const void* p) {
function BROTLI_INLINE (line 409) | static BROTLI_INLINE uint64_t BROTLI_UNALIGNED_LOAD64LE(const void* p) {
function BROTLI_INLINE (line 421) | static BROTLI_INLINE void BROTLI_UNALIGNED_STORE64LE(void* p, uint64_t v) {
function BROTLI_INLINE (line 434) | static BROTLI_INLINE void* BROTLI_UNALIGNED_LOAD_PTR(const void* p) {
function BROTLI_INLINE (line 440) | static BROTLI_INLINE void BROTLI_UNALIGNED_STORE_PTR(void* p, const void...
function BROTLI_INLINE (line 477) | static BROTLI_INLINE void BrotliDump(const char* f, int l, const char* f...
function BROTLI_INLINE (line 493) | static BROTLI_INLINE brotli_reg_t BrotliRBit(brotli_reg_t input) {
function BROTLI_INLINE (line 503) | static BROTLI_INLINE void BrotliRBit(void) { /* Should break build if us...
function BROTLI_INLINE (line 535) | static BROTLI_INLINE uint32_t BrotliBsf64Msvc(uint64_t x) {
function BROTLI_INLINE (line 549) | static BROTLI_INLINE uint32_t BrotliBsr32Msvc(uint32_t x) {
function BROTLI_INLINE (line 564) | static BROTLI_INLINE uint16_t BrotliRotateRight16(uint16_t const value,
function BROTLI_INLINE (line 569) | static BROTLI_INLINE uint32_t BrotliRotateRight32(uint32_t const value,
function BROTLI_INLINE (line 574) | static BROTLI_INLINE uint64_t BrotliRotateRight64(uint64_t const value,
function BROTLI_UNUSED_FUNCTION (line 580) | BROTLI_UNUSED_FUNCTION void BrotliSuppressUnusedFunctions(void) {
FILE: libs/brotli/common/shared_dictionary_internal.h
type BrotliSharedDictionaryStruct (line 22) | struct BrotliSharedDictionaryStruct {
type BrotliSharedDictionaryInternal (line 68) | typedef struct BrotliSharedDictionaryStruct BrotliSharedDictionaryInternal;
FILE: libs/brotli/common/transform.c
function BrotliTransforms (line 175) | const BrotliTransforms* BrotliGetTransforms(void) {
function ToUpperCase (line 179) | static int ToUpperCase(uint8_t* p) {
function Shift (line 196) | static int Shift(uint8_t* word, int word_len, uint16_t parameter) {
function BrotliTransformDictionaryWord (line 238) | int BrotliTransformDictionaryWord(uint8_t* dst, const uint8_t* word, int...
FILE: libs/brotli/common/transform.h
type BrotliWordTransformType (line 17) | enum BrotliWordTransformType {
type BrotliTransforms (line 46) | typedef struct BrotliTransforms {
FILE: libs/brotli/enc/backward_references.c
function BROTLI_INLINE (line 25) | static BROTLI_INLINE size_t ComputeDistanceCode(size_t distance,
function BrotliCreateBackwardReferences (line 181) | void BrotliCreateBackwardReferences(size_t num_bytes,
FILE: libs/brotli/enc/backward_references_hq.c
function BrotliInitZopfliNodes (line 42) | void BrotliInitZopfliNodes(ZopfliNode* array, size_t length) {
function BROTLI_INLINE (line 52) | static BROTLI_INLINE uint32_t ZopfliNodeCopyLength(const ZopfliNode* sel...
function BROTLI_INLINE (line 56) | static BROTLI_INLINE uint32_t ZopfliNodeLengthCode(const ZopfliNode* sel...
function BROTLI_INLINE (line 61) | static BROTLI_INLINE uint32_t ZopfliNodeCopyDistance(const ZopfliNode* s...
function BROTLI_INLINE (line 65) | static BROTLI_INLINE uint32_t ZopfliNodeDistanceCode(const ZopfliNode* s...
function BROTLI_INLINE (line 72) | static BROTLI_INLINE uint32_t ZopfliNodeCommandLength(const ZopfliNode* ...
type ZopfliCostModelArena (line 77) | typedef struct ZopfliCostModelArena {
type ZopfliCostModel (line 85) | typedef struct ZopfliCostModel {
function InitZopfliCostModel (line 102) | static void InitZopfliCostModel(
function CleanupZopfliCostModel (line 112) | static void CleanupZopfliCostModel(MemoryManager* m, ZopfliCostModel* se...
function SetCost (line 117) | static void SetCost(const uint32_t* histogram, size_t histogram_size,
function ZopfliCostModelSetFromCommands (line 149) | static void ZopfliCostModelSetFromCommands(ZopfliCostModel* self,
function ZopfliCostModelSetFromLiteralCosts (line 209) | static void ZopfliCostModelSetFromLiteralCosts(ZopfliCostModel* self,
function BROTLI_INLINE (line 237) | static BROTLI_INLINE float ZopfliCostModelGetCommandCost(
function BROTLI_INLINE (line 242) | static BROTLI_INLINE float ZopfliCostModelGetDistanceCost(
function BROTLI_INLINE (line 247) | static BROTLI_INLINE float ZopfliCostModelGetLiteralCosts(
function BROTLI_INLINE (line 252) | static BROTLI_INLINE float ZopfliCostModelGetMinCostCmd(
function BROTLI_INLINE (line 260) | static BROTLI_INLINE void UpdateZopfliNode(ZopfliNode* nodes, size_t pos,
type PosData (line 271) | typedef struct PosData {
type StartPosQueue (line 279) | typedef struct StartPosQueue {
function BROTLI_INLINE (line 284) | static BROTLI_INLINE void InitStartPosQueue(StartPosQueue* self) {
function StartPosQueueSize (line 288) | static size_t StartPosQueueSize(const StartPosQueue* self) {
function StartPosQueuePush (line 292) | static void StartPosQueuePush(StartPosQueue* self, const PosData* posdat...
function PosData (line 308) | static const PosData* StartPosQueueAt(const StartPosQueue* self, size_t ...
function ComputeMinimumCopyLength (line 314) | static size_t ComputeMinimumCopyLength(const float start_cost,
function ComputeDistanceShortcut (line 341) | static uint32_t ComputeDistanceShortcut(const size_t block_start,
function ComputeDistanceCache (line 372) | static void ComputeDistanceCache(const size_t pos,
function EvaluateNode (line 393) | static void EvaluateNode(
function UpdateNodes (line 414) | static size_t UpdateNodes(
function ComputeShortestPathFromNodes (line 587) | static size_t ComputeShortestPathFromNodes(size_t num_bytes,
function BrotliZopfliCreateCommands (line 604) | void BrotliZopfliCreateCommands(const size_t num_bytes,
function ZopfliIterate (line 649) | static size_t ZopfliIterate(size_t num_bytes, size_t position,
function MergeMatches (line 689) | static void MergeMatches(BackwardMatch* dst,
function BrotliZopfliComputeShortestPath (line 707) | size_t BrotliZopfliComputeShortestPath(MemoryManager* m, size_t num_bytes,
function BrotliCreateZopfliBackwardReferences (line 797) | void BrotliCreateZopfliBackwardReferences(MemoryManager* m, size_t num_b...
function BrotliCreateHqZopfliBackwardReferences (line 814) | void BrotliCreateHqZopfliBackwardReferences(MemoryManager* m, size_t num...
FILE: libs/brotli/enc/backward_references_hq.h
type ZopfliNode (line 37) | typedef struct ZopfliNode {
FILE: libs/brotli/enc/backward_references_inc.h
function BROTLI_NOINLINE (line 10) | static BROTLI_NOINLINE void EXPORT_FN(CreateBackwardReferences)(
FILE: libs/brotli/enc/bit_cost.c
function BrotliBitsEntropy (line 18) | double BrotliBitsEntropy(const uint32_t* population, size_t size) {
FILE: libs/brotli/enc/block_splitter.c
function CountLiterals (line 39) | static size_t CountLiterals(const Command* cmds, const size_t num_comman...
function CopyLiteralsToByteArray (line 49) | static void CopyLiteralsToByteArray(const Command* cmds,
function BROTLI_INLINE (line 75) | static BROTLI_INLINE uint32_t MyRand(uint32_t* seed) {
function BROTLI_INLINE (line 81) | static BROTLI_INLINE double BitCost(size_t count) {
function BrotliInitBlockSplit (line 107) | void BrotliInitBlockSplit(BlockSplit* self) {
function BrotliDestroyBlockSplit (line 116) | void BrotliDestroyBlockSplit(MemoryManager* m, BlockSplit* self) {
function BrotliSplitBlock (line 123) | void BrotliSplitBlock(MemoryManager* m,
function BrotliCountLiteralsForTest (line 200) | size_t BrotliCountLiteralsForTest(const Command* cmds, size_t num_comman...
function BrotliCopyLiteralsToByteArrayForTest (line 205) | void BrotliCopyLiteralsToByteArrayForTest(const Command* cmds,
FILE: libs/brotli/enc/block_splitter.h
type BlockSplit (line 20) | typedef struct BlockSplit {
FILE: libs/brotli/enc/brotli_bit_stream.c
function BROTLI_INLINE (line 34) | static BROTLI_INLINE uint32_t BlockLengthPrefixCode(uint32_t len) {
function BROTLI_INLINE (line 41) | static BROTLI_INLINE void GetBlockLengthPrefixCode(uint32_t len, size_t*...
type BlockTypeCodeCalculator (line 48) | typedef struct BlockTypeCodeCalculator {
function InitBlockTypeCodeCalculator (line 53) | static void InitBlockTypeCodeCalculator(BlockTypeCodeCalculator* self) {
function BROTLI_INLINE (line 58) | static BROTLI_INLINE size_t NextBlockTypeCode(
function BrotliEncodeMlen (line 70) | static void BrotliEncodeMlen(size_t length, uint64_t* bits,
function BROTLI_INLINE (line 82) | static BROTLI_INLINE void StoreCommandExtra(
type BlockSplitCode (line 97) | typedef struct BlockSplitCode {
function StoreVarLenUint8 (line 106) | static void StoreVarLenUint8(size_t n, size_t* storage_ix, uint8_t* stor...
function StoreCompressedMetaBlockHeader (line 120) | static void StoreCompressedMetaBlockHeader(BROTLI_BOOL is_final_block,
function BrotliStoreUncompressedMetaBlockHeader (line 148) | static void BrotliStoreUncompressedMetaBlockHeader(size_t length,
function BrotliStoreHuffmanTreeOfHuffmanTreeToBitMask (line 165) | static void BrotliStoreHuffmanTreeOfHuffmanTreeToBitMask(
function BrotliStoreHuffmanTreeToBitMask (line 220) | static void BrotliStoreHuffmanTreeToBitMask(
function StoreSimpleHuffmanTree (line 242) | static void StoreSimpleHuffmanTree(const uint8_t* depths,
function BrotliStoreHuffmanTree (line 283) | void BrotliStoreHuffmanTree(const uint8_t* depths, size_t num,
function BuildAndStoreHuffmanTree (line 349) | static void BuildAndStoreHuffmanTree(const uint32_t* histogram,
function BROTLI_INLINE (line 399) | static BROTLI_INLINE BROTLI_BOOL SortHuffmanTree(
function BrotliBuildAndStoreHuffmanTreeFast (line 404) | void BrotliBuildAndStoreHuffmanTreeFast(HuffmanTree* tree,
function IndexOf (line 575) | static size_t IndexOf(const uint8_t* v, size_t v_size, uint8_t value) {
function MoveToFront (line 583) | static void MoveToFront(uint8_t* v, size_t index) {
function MoveToFrontTransform (line 592) | static void MoveToFrontTransform(const uint32_t* BROTLI_RESTRICT v_in,
function RunLengthCodeZeros (line 626) | static void RunLengthCodeZeros(const size_t in_size,
type EncodeContextMapArena (line 677) | typedef struct EncodeContextMapArena {
function EncodeContextMap (line 683) | static void EncodeContextMap(MemoryManager* m,
function BROTLI_INLINE (line 737) | static BROTLI_INLINE void StoreBlockSwitch(BlockSplitCode* code,
function BuildAndStoreBlockSplitCode (line 760) | static void BuildAndStoreBlockSplitCode(const uint8_t* types,
function StoreTrivialContextMap (line 794) | static void StoreTrivialContextMap(EncodeContextMapArena* arena,
type BlockEncoder (line 833) | typedef struct BlockEncoder {
function InitBlockEncoder (line 847) | static void InitBlockEncoder(BlockEncoder* self, size_t histogram_length,
function CleanupBlockEncoder (line 863) | static void CleanupBlockEncoder(MemoryManager* m, BlockEncoder* self) {
function BuildAndStoreBlockSwitchEntropyCodes (line 870) | static void BuildAndStoreBlockSwitchEntropyCodes(BlockEncoder* self,
function StoreSymbol (line 879) | static void StoreSymbol(BlockEncoder* self, size_t symbol, size_t* stora...
function StoreSymbolWithContext (line 900) | static void StoreSymbolWithContext(BlockEncoder* self, size_t symbol,
function JumpToByteBoundary (line 935) | static void JumpToByteBoundary(size_t* storage_ix, uint8_t* storage) {
type StoreMetablockArena (line 940) | typedef struct StoreMetablockArena {
function BrotliStoreMetaBlock (line 947) | void BrotliStoreMetaBlock(MemoryManager* m,
function BuildHistograms (line 1088) | static void BuildHistograms(const uint8_t* input,
function StoreDataWithHuffmanCodes (line 1113) | static void StoreDataWithHuffmanCodes(const uint8_t* input,
type MetablockArena (line 1154) | typedef struct MetablockArena {
function BrotliStoreMetaBlockTrivial (line 1168) | void BrotliStoreMetaBlockTrivial(MemoryManager* m,
function BrotliStoreMetaBlockFast (line 1212) | void BrotliStoreMetaBlockFast(MemoryManager* m,
function BrotliStoreUncompressedMetaBlock (line 1293) | void BrotliStoreUncompressedMetaBlock(BROTLI_BOOL is_final_block,
function BrotliGetBlockLengthPrefixCodeForTest (line 1329) | void BrotliGetBlockLengthPrefixCodeForTest(uint32_t len, size_t* code,
FILE: libs/brotli/enc/cluster.c
function BROTLI_INLINE (line 21) | static BROTLI_INLINE BROTLI_BOOL HistogramPairIsLess(
function BROTLI_INLINE (line 30) | static BROTLI_INLINE double ClusterCostDiff(size_t size_a, size_t size_b) {
FILE: libs/brotli/enc/cluster.h
type HistogramPair (line 20) | typedef struct HistogramPair {
FILE: libs/brotli/enc/cluster_inc.h
function BROTLI_INTERNAL (line 14) | BROTLI_INTERNAL void FN(BrotliCompareAndPushToQueue)(
function BROTLI_INTERNAL (line 70) | BROTLI_INTERNAL size_t FN(BrotliHistogramCombine)(HistogramType* out,
function BROTLI_INTERNAL (line 158) | BROTLI_INTERNAL double FN(BrotliHistogramBitCostDistance)(
function BROTLI_INTERNAL (line 174) | BROTLI_INTERNAL void FN(BrotliHistogramRemap)(const HistogramType* in,
function BROTLI_INTERNAL (line 213) | BROTLI_INTERNAL size_t FN(BrotliHistogramReindex)(MemoryManager* m,
function BROTLI_INTERNAL (line 251) | BROTLI_INTERNAL void FN(BrotliClusterHistograms)(
FILE: libs/brotli/enc/command.h
function BROTLI_INLINE (line 31) | static BROTLI_INLINE uint16_t GetInsertLengthCode(size_t insertlen) {
function BROTLI_INLINE (line 48) | static BROTLI_INLINE uint16_t GetCopyLengthCode(size_t copylen) {
function BROTLI_INLINE (line 61) | static BROTLI_INLINE uint16_t CombineLengthCodes(
function BROTLI_INLINE (line 82) | static BROTLI_INLINE void GetLengthCode(size_t insertlen, size_t copylen,
function BROTLI_INLINE (line 90) | static BROTLI_INLINE uint32_t GetInsertBase(uint16_t inscode) {
function BROTLI_INLINE (line 94) | static BROTLI_INLINE uint32_t GetInsertExtra(uint16_t inscode) {
function BROTLI_INLINE (line 98) | static BROTLI_INLINE uint32_t GetCopyBase(uint16_t copycode) {
function BROTLI_INLINE (line 102) | static BROTLI_INLINE uint32_t GetCopyExtra(uint16_t copycode) {
type Command (line 106) | typedef struct Command {
function BROTLI_INLINE (line 119) | static BROTLI_INLINE void InitCommand(Command* self,
function BROTLI_INLINE (line 137) | static BROTLI_INLINE void InitInsertCommand(Command* self, size_t insert...
function BROTLI_INLINE (line 145) | static BROTLI_INLINE uint32_t CommandRestoreDistanceCode(
function BROTLI_INLINE (line 166) | static BROTLI_INLINE uint32_t CommandDistanceContext(const Command* self) {
function BROTLI_INLINE (line 175) | static BROTLI_INLINE uint32_t CommandCopyLen(const Command* self) {
function BROTLI_INLINE (line 179) | static BROTLI_INLINE uint32_t CommandCopyLenCode(const Command* self) {
FILE: libs/brotli/enc/compound_dictionary.c
function PreparedDictionary (line 13) | static PreparedDictionary* CreatePreparedDictionaryWithParams(MemoryMana...
function PreparedDictionary (line 151) | PreparedDictionary* CreatePreparedDictionary(MemoryManager* m,
function DestroyPreparedDictionary (line 168) | void DestroyPreparedDictionary(MemoryManager* m,
function BROTLI_BOOL (line 174) | BROTLI_BOOL AttachPreparedDictionary(
FILE: libs/brotli/enc/compound_dictionary.h
type PreparedDictionary (line 30) | typedef struct PreparedDictionary {
type CompoundDictionary (line 54) | typedef struct CompoundDictionary {
FILE: libs/brotli/enc/compress_fragment.c
function BROTLI_INLINE (line 32) | static BROTLI_INLINE uint32_t Hash(const uint8_t* p, size_t shift) {
function BROTLI_INLINE (line 37) | static BROTLI_INLINE uint32_t HashBytesAtOffset(
function BROTLI_INLINE (line 47) | static BROTLI_INLINE BROTLI_BOOL IsMatch(const uint8_t* p1, const uint8_...
function BuildAndStoreLiteralPrefixCode (line 61) | static size_t BuildAndStoreLiteralPrefixCode(BrotliOnePassArena* s,
function BuildAndStoreCommandPrefixCode (line 117) | static void BuildAndStoreCommandPrefixCode(BrotliOnePassArena* s,
function BROTLI_INLINE (line 170) | static BROTLI_INLINE void EmitInsertLen(size_t insertlen,
function BROTLI_INLINE (line 202) | static BROTLI_INLINE void EmitLongInsertLen(size_t insertlen,
function BROTLI_INLINE (line 219) | static BROTLI_INLINE void EmitCopyLen(size_t copylen,
function BROTLI_INLINE (line 251) | static BROTLI_INLINE void EmitCopyLenLastDistance(size_t copylen,
function BROTLI_INLINE (line 294) | static BROTLI_INLINE void EmitDistance(size_t distance,
function BROTLI_INLINE (line 309) | static BROTLI_INLINE void EmitLiterals(const uint8_t* input, const size_...
function BrotliStoreMetaBlockHeader (line 321) | static void BrotliStoreMetaBlockHeader(
function UpdateBits (line 338) | static void UpdateBits(size_t n_bits, uint32_t bits, size_t pos,
function RewindBitPosition (line 357) | static void RewindBitPosition(const size_t new_storage_ix,
function BROTLI_BOOL (line 365) | static BROTLI_BOOL ShouldMergeBlock(BrotliOnePassArena* s,
function BROTLI_INLINE (line 387) | static BROTLI_INLINE BROTLI_BOOL ShouldUseUncompressedMode(
function EmitUncompressedMetaBlock (line 398) | static void EmitUncompressedMetaBlock(const uint8_t* begin, const uint8_...
function BROTLI_INLINE (line 419) | static BROTLI_INLINE void BrotliCompressFragmentFastImpl(
function BrotliCompressFragmentFast (line 747) | void BrotliCompressFragmentFast(
FILE: libs/brotli/enc/compress_fragment.h
type BrotliOnePassArena (line 23) | typedef struct BrotliOnePassArena {
FILE: libs/brotli/enc/compress_fragment_two_pass.c
function BROTLI_INLINE (line 31) | static BROTLI_INLINE uint32_t Hash(const uint8_t* p,
function BROTLI_INLINE (line 38) | static BROTLI_INLINE uint32_t HashBytesAtOffset(uint64_t v, size_t offset,
function BROTLI_INLINE (line 47) | static BROTLI_INLINE BROTLI_BOOL IsMatch(const uint8_t* p1, const uint8_...
function BuildAndStoreCommandPrefixCode (line 58) | static void BuildAndStoreCommandPrefixCode(BrotliTwoPassArena* s,
function BROTLI_INLINE (line 107) | static BROTLI_INLINE void EmitInsertLen(
function BROTLI_INLINE (line 137) | static BROTLI_INLINE void EmitCopyLen(size_t copylen, uint32_t** command...
function BROTLI_INLINE (line 160) | static BROTLI_INLINE void EmitCopyLenLastDistance(
function BROTLI_INLINE (line 199) | static BROTLI_INLINE void EmitDistance(uint32_t distance, uint32_t** com...
function BrotliStoreMetaBlockHeader (line 211) | static void BrotliStoreMetaBlockHeader(
function BROTLI_INLINE (line 228) | static BROTLI_INLINE void CreateCommands(const uint8_t* input,
function StoreCommands (line 458) | static void StoreCommands(BrotliTwoPassArena* s,
function BROTLI_BOOL (line 526) | static BROTLI_BOOL ShouldCompress(BrotliTwoPassArena* s,
function RewindBitPosition (line 543) | static void RewindBitPosition(const size_t new_storage_ix,
function EmitUncompressedMetaBlock (line 551) | static void EmitUncompressedMetaBlock(const uint8_t* input, size_t input...
function BROTLI_INLINE (line 560) | static BROTLI_INLINE void BrotliCompressFragmentTwoPassImpl(
function BrotliCompressFragmentTwoPass (line 612) | void BrotliCompressFragmentTwoPass(
FILE: libs/brotli/enc/compress_fragment_two_pass.h
type BrotliTwoPassArena (line 27) | typedef struct BrotliTwoPassArena {
FILE: libs/brotli/enc/dictionary_hash.c
function BROTLI_BOOL (line 24) | BROTLI_BOOL BROTLI_COLD BrotliEncoderInitDictionaryHash(
FILE: libs/brotli/enc/encode.c
function InputBlockSize (line 45) | static size_t InputBlockSize(BrotliEncoderState* s) {
function UnprocessedInputSize (line 49) | static uint64_t UnprocessedInputSize(BrotliEncoderState* s) {
function RemainingInputBlockSize (line 53) | static size_t RemainingInputBlockSize(BrotliEncoderState* s) {
function BROTLI_BOOL (line 60) | BROTLI_BOOL BrotliEncoderSetParameter(
function WrapPosition (line 114) | static uint32_t WrapPosition(uint64_t position) {
function HashTableSize (line 135) | static size_t HashTableSize(size_t max_table_size, size_t input_size) {
function EncodeWindowBits (line 178) | static void EncodeWindowBits(int lgwin, BROTLI_BOOL large_window,
function InitCommandPrefixCodes (line 202) | static void InitCommandPrefixCodes(BrotliOnePassArena* s) {
function EstimateEntropy (line 245) | static double EstimateEntropy(const uint32_t* population, size_t size) {
function ChooseContextMap (line 264) | static void ChooseContextMap(int quality,
function BROTLI_BOOL (line 328) | static BROTLI_BOOL ShouldUseComplexStaticContextMap(const uint8_t* input,
function DecideOverLiteralContextModeling (line 410) | static void DecideOverLiteralContextModeling(const uint8_t* input,
function BROTLI_BOOL (line 443) | static BROTLI_BOOL ShouldCompress(
function ContextType (line 472) | static ContextType ChooseContextMode(const BrotliEncoderParams* params,
function WriteMetaBlockInternal (line 484) | static void WriteMetaBlockInternal(MemoryManager* m,
function ChooseDistanceParams (line 598) | static void ChooseDistanceParams(BrotliEncoderParams* params) {
function BROTLI_BOOL (line 624) | static BROTLI_BOOL EnsureInitialized(BrotliEncoderState* s) {
function BrotliEncoderInitParams (line 680) | static void BrotliEncoderInitParams(BrotliEncoderParams* params) {
function BrotliEncoderCleanupParams (line 698) | static void BrotliEncoderCleanupParams(MemoryManager* m,
function BrotliEncoderInitState (line 718) | static void BrotliEncoderInitState(BrotliEncoderState* s) {
function BrotliEncoderState (line 761) | BrotliEncoderState* BrotliEncoderCreateInstance(
function BrotliEncoderCleanupState (line 779) | static void BrotliEncoderCleanupState(BrotliEncoderState* s) {
function BrotliEncoderDestroyInstance (line 802) | void BrotliEncoderDestroyInstance(BrotliEncoderState* state) {
function CopyInputToRingBuffer (line 818) | static void CopyInputToRingBuffer(BrotliEncoderState* s,
function BROTLI_BOOL (line 875) | static BROTLI_BOOL UpdateLastProcessedPos(BrotliEncoderState* s) {
function ExtendLastCommand (line 882) | static void ExtendLastCommand(BrotliEncoderState* s, uint32_t* bytes,
function BROTLI_BOOL (line 962) | static BROTLI_BOOL EncodeData(
function WriteMetadataHeader (line 1202) | static size_t WriteMetadataHeader(
function BrotliEncoderMaxCompressedSize (line 1226) | size_t BrotliEncoderMaxCompressedSize(size_t input_size) {
function MakeUncompressedStream (line 1239) | static size_t MakeUncompressedStream(
function BROTLI_BOOL (line 1271) | BROTLI_BOOL BrotliEncoderCompress(
function InjectBytePaddingBlock (line 1331) | static void InjectBytePaddingBlock(BrotliEncoderState* s) {
function SetTotalOut (line 1355) | static void SetTotalOut(BrotliEncoderState* s, size_t* total_out) {
function BROTLI_BOOL (line 1368) | static BROTLI_BOOL InjectFlushOrPushOutput(BrotliEncoderState* s,
function CheckFlushComplete (line 1392) | static void CheckFlushComplete(BrotliEncoderState* s) {
function BROTLI_BOOL (line 1400) | static BROTLI_BOOL BrotliEncoderCompressStreamFast(
function BROTLI_BOOL (line 1524) | static BROTLI_BOOL ProcessMetadata(
function UpdateSizeHint (line 1594) | static void UpdateSizeHint(BrotliEncoderState* s, size_t available_in) {
function BROTLI_BOOL (line 1609) | BROTLI_BOOL BrotliEncoderCompressStream(
function BROTLI_BOOL (line 1699) | BROTLI_BOOL BrotliEncoderIsFinished(BrotliEncoderState* s) {
function BROTLI_BOOL (line 1704) | BROTLI_BOOL BrotliEncoderHasMoreOutput(BrotliEncoderState* s) {
function BrotliEncoderVersion (line 1727) | uint32_t BrotliEncoderVersion(void) {
function BrotliEncoderPreparedDictionary (line 1731) | BrotliEncoderPreparedDictionary* BrotliEncoderPrepareDictionary(
function BrotliEncoderDestroyPreparedDictionary (line 1777) | void BROTLI_COLD BrotliEncoderDestroyPreparedDictionary(
function BROTLI_BOOL (line 1803) | BROTLI_BOOL BROTLI_COLD BrotliEncoderAttachPreparedDictionary(
function BrotliEncoderEstimatePeakMemoryUsage (line 1861) | size_t BROTLI_COLD BrotliEncoderEstimatePeakMemoryUsage(int quality, int...
function BrotliEncoderGetPreparedDictionarySize (line 1929) | size_t BROTLI_COLD BrotliEncoderGetPreparedDictionarySize(
function BrotliMakeUncompressedStreamForTest (line 2013) | size_t BrotliMakeUncompressedStreamForTest(
FILE: libs/brotli/enc/encoder_dict.c
function BrotliTrieInit (line 30) | static void BrotliTrieInit(BrotliTrie* trie) {
function BrotliTrieFree (line 42) | static void BrotliTrieFree(MemoryManager* m, BrotliTrie* trie) {
function InitEncoderDictionary (line 47) | static void InitEncoderDictionary(BrotliEncoderDictionary* dict) {
function BrotliDestroyEncoderDictionary (line 72) | static void BrotliDestroyEncoderDictionary(MemoryManager* m,
function Hash (line 84) | static uint32_t Hash(const uint8_t* data, int bits) {
function TransformedDictionaryWord (line 96) | static void TransformedDictionaryWord(uint32_t word_idx, int len, int tr...
function DictWord (line 106) | static DictWord MakeDictWord(uint8_t len, uint8_t transform, uint16_t id...
function BrotliTrieAlloc (line 114) | static uint32_t BrotliTrieAlloc(MemoryManager* m, size_t num, BrotliTrie...
function BROTLI_BOOL (line 145) | static BROTLI_BOOL BrotliTrieNodeAdd(MemoryManager* m, uint8_t len,
function BROTLI_BOOL (line 188) | static BROTLI_BOOL BrotliTrieAdd(MemoryManager* m, uint8_t len, uint32_t...
function BrotliTrieNode (line 193) | const BrotliTrieNode* BrotliTrieSub(const BrotliTrie* trie,
function BrotliTrieNode (line 206) | static const BrotliTrieNode* BrotliTrieFind(const BrotliTrie* trie,
function BROTLI_BOOL (line 217) | static BROTLI_BOOL BuildDictionaryLut(MemoryManager* m,
function BuildDictionaryHashTable (line 367) | static void BuildDictionaryHashTable(uint16_t* hash_table_words,
function BROTLI_BOOL (line 395) | static BROTLI_BOOL GenerateWordsHeavy(MemoryManager* m,
function ComputeCutoffTransforms (line 422) | static void ComputeCutoffTransforms(
function BROTLI_BOOL (line 446) | static BROTLI_BOOL ComputeDictionary(MemoryManager* m, int quality,
function BrotliInitSharedEncoderDictionary (line 489) | void BrotliInitSharedEncoderDictionary(SharedEncoderDictionary* dict) {
function BROTLI_BOOL (line 511) | static BROTLI_BOOL InitCustomSharedEncoderDictionary(
function BROTLI_BOOL (line 576) | BROTLI_BOOL BrotliInitCustomSharedEncoderDictionary(
function BrotliCleanupSharedEncoderDictionary (line 596) | void BrotliCleanupSharedEncoderDictionary(MemoryManager* m,
function ManagedDictionary (line 613) | ManagedDictionary* BrotliCreateManagedDictionary(
function BrotliDestroyManagedDictionary (line 627) | void BrotliDestroyManagedDictionary(ManagedDictionary* dictionary) {
function BrotliInitEncoderDictionaryForTest (line 635) | void BrotliInitEncoderDictionaryForTest(BrotliEncoderDictionary* d) {
FILE: libs/brotli/enc/encoder_dict.h
type BrotliTrieNode (line 38) | typedef struct BrotliTrieNode {
type BrotliTrie (line 46) | typedef struct BrotliTrie {
type BrotliEncoderDictionary (line 59) | typedef struct BrotliEncoderDictionary {
type ContextualEncoderDictionary (line 95) | typedef struct ContextualEncoderDictionary {
type SharedEncoderDictionary (line 108) | typedef struct SharedEncoderDictionary {
type ManagedDictionary (line 123) | typedef struct ManagedDictionary {
FILE: libs/brotli/enc/entropy_encode.c
function BROTLI_BOOL (line 20) | BROTLI_BOOL BrotliSetDepth(
function BROTLI_INLINE (line 45) | static BROTLI_INLINE BROTLI_BOOL SortHuffmanTree(
function BrotliCreateHuffmanTree (line 68) | void BrotliCreateHuffmanTree(const uint32_t* data,
function Reverse (line 149) | static void Reverse(uint8_t* v, size_t start, size_t end) {
function BrotliWriteHuffmanTreeRepetitions (line 160) | static void BrotliWriteHuffmanTreeRepetitions(
function BrotliWriteHuffmanTreeRepetitionsZeros (line 205) | static void BrotliWriteHuffmanTreeRepetitionsZeros(
function BrotliOptimizeHuffmanCountsForRle (line 241) | void BrotliOptimizeHuffmanCountsForRle(size_t length, uint32_t* counts,
function DecideOverRleUse (line 372) | static void DecideOverRleUse(const uint8_t* depth, const size_t length,
function BrotliWriteHuffmanTree (line 402) | void BrotliWriteHuffmanTree(const uint8_t* depth,
function BrotliReverseBits (line 454) | static uint16_t BrotliReverseBits(size_t num_bits, uint16_t bits) {
FILE: libs/brotli/enc/entropy_encode.h
type HuffmanTree (line 19) | typedef struct HuffmanTree {
function BROTLI_INLINE (line 25) | static BROTLI_INLINE void InitHuffmanTree(HuffmanTree* self, uint32_t co...
type BROTLI_BOOL (line 80) | typedef BROTLI_BOOL (*HuffmanTreeComparator)(
function BROTLI_INLINE (line 82) | static BROTLI_INLINE void SortHuffmanTreeItems(HuffmanTree* items,
FILE: libs/brotli/enc/entropy_encode_static.h
function BROTLI_INLINE (line 86) | static BROTLI_INLINE void StoreStaticCodeLengthCode(
function BROTLI_INLINE (line 524) | static BROTLI_INLINE void StoreStaticCommandHuffmanTree(
function BROTLI_INLINE (line 538) | static BROTLI_INLINE void StoreStaticDistanceHuffmanTree(
FILE: libs/brotli/enc/fast_log.h
function BROTLI_INLINE (line 20) | static BROTLI_INLINE uint32_t Log2FloorNonZero(size_t n) {
function BROTLI_INLINE (line 51) | static BROTLI_INLINE double FastLog2(size_t v) {
FILE: libs/brotli/enc/find_match_length.h
function BROTLI_INLINE (line 20) | static BROTLI_INLINE size_t FindMatchLengthWithLimit(const uint8_t* s1,
function BROTLI_INLINE (line 42) | static BROTLI_INLINE size_t FindMatchLengthWithLimit(const uint8_t* s1,
FILE: libs/brotli/enc/hash.h
type HasherCommon (line 31) | typedef struct {
type HasherSearchResult (line 65) | typedef struct HasherSearchResult {
function BROTLI_INLINE (line 72) | static BROTLI_INLINE void PrepareDistanceCache(
function BROTLI_INLINE (line 115) | static BROTLI_INLINE score_t BackwardReferenceScore(
function BROTLI_INLINE (line 121) | static BROTLI_INLINE score_t BackwardReferenceScoreUsingLastDistance(
function BROTLI_INLINE (line 127) | static BROTLI_INLINE score_t BackwardReferencePenaltyUsingLastDistance(
function BROTLI_INLINE (line 132) | static BROTLI_INLINE BROTLI_BOOL TestStaticDictionaryItem(
function BROTLI_INLINE (line 171) | static BROTLI_INLINE void SearchInStaticDictionary(
type BackwardMatch (line 196) | typedef struct BackwardMatch {
function BROTLI_INLINE (line 201) | static BROTLI_INLINE void InitBackwardMatch(BackwardMatch* self,
function BROTLI_INLINE (line 207) | static BROTLI_INLINE void InitDictionaryBackwardMatch(BackwardMatch* self,
function BROTLI_INLINE (line 214) | static BROTLI_INLINE size_t BackwardMatchLength(const BackwardMatch* sel...
function BROTLI_INLINE (line 218) | static BROTLI_INLINE size_t BackwardMatchLengthCode(const BackwardMatch*...
type Hasher (line 393) | typedef struct {
function BROTLI_INLINE (line 405) | static BROTLI_INLINE void HasherInit(Hasher* hasher) {
function BROTLI_INLINE (line 413) | static BROTLI_INLINE void DestroyHasher(MemoryManager* m, Hasher* hasher) {
function BROTLI_INLINE (line 420) | static BROTLI_INLINE void HasherReset(Hasher* hasher) {
function BROTLI_INLINE (line 424) | static BROTLI_INLINE void HasherSize(const BrotliEncoderParams* params,
function BROTLI_INLINE (line 438) | static BROTLI_INLINE void HasherSetup(MemoryManager* m, Hasher* hasher,
function BROTLI_INLINE (line 486) | static BROTLI_INLINE void InitOrStitchToPreviousBlock(
function BROTLI_INLINE (line 507) | static BROTLI_INLINE void FindCompoundDictionaryMatch(
function BROTLI_INLINE (line 620) | static BROTLI_INLINE size_t FindAllCompoundDictionaryMatches(
function BROTLI_INLINE (line 691) | static BROTLI_INLINE void LookupCompoundDictionaryMatch(
function BROTLI_INLINE (line 708) | static BROTLI_INLINE size_t LookupAllCompoundDictionaryMatches(
FILE: libs/brotli/enc/hash_base.h
function BROTLI_INLINE (line 24) | static BROTLI_INLINE uint32_t Hash14(const uint8_t* data) {
function BROTLI_INLINE (line 31) | static BROTLI_INLINE uint32_t Hash15(const uint8_t* data) {
FILE: libs/brotli/enc/hash_composite_inc.h
function BROTLI_INLINE (line 18) | static BROTLI_INLINE size_t FN(HashTypeLength)(void) {
function BROTLI_INLINE (line 24) | static BROTLI_INLINE size_t FN(StoreLookahead)(void) {
type HashComposite (line 30) | typedef struct HashComposite {
function BROTLI_INLINE (line 78) | static BROTLI_INLINE void FN(HashMemAllocInBytes)(
function BROTLI_INLINE (line 94) | static BROTLI_INLINE void FN(Store)(HashComposite* BROTLI_RESTRICT self,
function BROTLI_INLINE (line 100) | static BROTLI_INLINE void FN(StoreRange)(
function BROTLI_INLINE (line 108) | static BROTLI_INLINE void FN(StitchToPreviousBlock)(
function BROTLI_INLINE (line 118) | static BROTLI_INLINE void FN(PrepareDistanceCache)(
function BROTLI_INLINE (line 124) | static BROTLI_INLINE void FN(FindLongestMatch)(
FILE: libs/brotli/enc/hash_forgetful_chain_inc.h
function BROTLI_INLINE (line 27) | static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 4; }
function BROTLI_INLINE (line 28) | static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 4; }
function BROTLI_INLINE (line 31) | static BROTLI_INLINE size_t FN(HashBytes)(const uint8_t* BROTLI_RESTRICT...
type FN (line 38) | struct FN
type FN (line 43) | struct FN
type HashForgetfulChain (line 47) | typedef struct HashForgetfulChain {
function BROTLI_INLINE (line 120) | static BROTLI_INLINE void FN(HashMemAllocInBytes)(
function BROTLI_INLINE (line 133) | static BROTLI_INLINE void FN(Store)(HashForgetfulChain* BROTLI_RESTRICT ...
function BROTLI_INLINE (line 151) | static BROTLI_INLINE void FN(StoreRange)(
function BROTLI_INLINE (line 161) | static BROTLI_INLINE void FN(StitchToPreviousBlock)(
function BROTLI_INLINE (line 175) | static BROTLI_INLINE void FN(PrepareDistanceCache)(
function BROTLI_INLINE (line 193) | static BROTLI_INLINE void FN(FindLongestMatch)(
FILE: libs/brotli/enc/hash_longest_match64_inc.h
function BROTLI_INLINE (line 19) | static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 8; }
function BROTLI_INLINE (line 20) | static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 8; }
function BROTLI_INLINE (line 23) | static BROTLI_INLINE size_t FN(HashBytes)(const uint8_t* BROTLI_RESTRICT...
type HashLongestMatch (line 31) | typedef struct HashLongestMatch {
function BROTLI_INLINE (line 92) | static BROTLI_INLINE void FN(HashMemAllocInBytes)(
function BROTLI_INLINE (line 105) | static BROTLI_INLINE void FN(Store)(
function BROTLI_INLINE (line 117) | static BROTLI_INLINE void FN(StoreRange)(HashLongestMatch* BROTLI_RESTRI...
function BROTLI_INLINE (line 126) | static BROTLI_INLINE void FN(StitchToPreviousBlock)(
function BROTLI_INLINE (line 140) | static BROTLI_INLINE void FN(PrepareDistanceCache)(
function BROTLI_INLINE (line 157) | static BROTLI_INLINE void FN(FindLongestMatch)(
FILE: libs/brotli/enc/hash_longest_match64_simd_inc.h
function BROTLI_INLINE (line 22) | static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 8; }
function BROTLI_INLINE (line 23) | static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 8; }
function BROTLI_INLINE (line 26) | static BROTLI_INLINE size_t FN(HashBytes)(const uint8_t* BROTLI_RESTRICT...
type HashLongestMatch (line 34) | typedef struct HashLongestMatch {
function BROTLI_INLINE (line 100) | static BROTLI_INLINE void FN(HashMemAllocInBytes)(
function BROTLI_INLINE (line 114) | static BROTLI_INLINE void FN(Store)(
function BROTLI_INLINE (line 130) | static BROTLI_INLINE void FN(StoreRange)(HashLongestMatch* BROTLI_RESTRI...
function BROTLI_INLINE (line 139) | static BROTLI_INLINE void FN(StitchToPreviousBlock)(
function BROTLI_INLINE (line 153) | static BROTLI_INLINE void FN(PrepareDistanceCache)(
function BROTLI_INLINE (line 170) | static BROTLI_INLINE void FN(FindLongestMatch)(
FILE: libs/brotli/enc/hash_longest_match_inc.h
function BROTLI_INLINE (line 19) | static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 4; }
function BROTLI_INLINE (line 20) | static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 4; }
type HashLongestMatch (line 31) | typedef struct HashLongestMatch {
function BROTLI_INLINE (line 91) | static BROTLI_INLINE void FN(HashMemAllocInBytes)(
function BROTLI_INLINE (line 104) | static BROTLI_INLINE void FN(Store)(
function BROTLI_INLINE (line 116) | static BROTLI_INLINE void FN(StoreRange)(HashLongestMatch* BROTLI_RESTRI...
function BROTLI_INLINE (line 125) | static BROTLI_INLINE void FN(StitchToPreviousBlock)(
function BROTLI_INLINE (line 139) | static BROTLI_INLINE void FN(PrepareDistanceCache)(
function BROTLI_INLINE (line 156) | static BROTLI_INLINE void FN(FindLongestMatch)(
FILE: libs/brotli/enc/hash_longest_match_quickly_inc.h
function BROTLI_INLINE (line 19) | static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 8; }
function BROTLI_INLINE (line 20) | static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 8; }
type HashLongestMatchQuickly (line 37) | typedef struct HashLongestMatchQuickly {
function BROTLI_INLINE (line 83) | static BROTLI_INLINE void FN(HashMemAllocInBytes)(
function BROTLI_INLINE (line 95) | static BROTLI_INLINE void FN(Store)(
function BROTLI_INLINE (line 108) | static BROTLI_INLINE void FN(StoreRange)(
function BROTLI_INLINE (line 118) | static BROTLI_INLINE void FN(StitchToPreviousBlock)(
function BROTLI_INLINE (line 132) | static BROTLI_INLINE void FN(PrepareDistanceCache)(
function BROTLI_INLINE (line 147) | static BROTLI_INLINE void FN(FindLongestMatch)(
FILE: libs/brotli/enc/hash_longest_match_simd_inc.h
function BROTLI_INLINE (line 15) | static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 4; }
function BROTLI_INLINE (line 16) | static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 4; }
type HashLongestMatch (line 25) | typedef struct HashLongestMatch {
function BROTLI_INLINE (line 80) | static BROTLI_INLINE void FN(HashMemAllocInBytes)(
function BROTLI_INLINE (line 93) | static BROTLI_INLINE void FN(Store)(
function BROTLI_INLINE (line 108) | static BROTLI_INLINE void FN(StoreRange)(HashLongestMatch* BROTLI_RESTRI...
function BROTLI_INLINE (line 116) | static BROTLI_INLINE void FN(StitchToPreviousBlock)(
function BROTLI_INLINE (line 129) | static BROTLI_INLINE void FN(PrepareDistanceCache)(
function BROTLI_INLINE (line 144) | static BROTLI_INLINE void FN(FindLongestMatch)(
FILE: libs/brotli/enc/hash_rolling_inc.h
function BROTLI_INLINE (line 23) | static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 4; }
function BROTLI_INLINE (line 24) | static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 4; }
type HashRolling (line 44) | typedef struct HashRolling {
function BROTLI_INLINE (line 91) | static BROTLI_INLINE void FN(HashMemAllocInBytes)(
function BROTLI_INLINE (line 100) | static BROTLI_INLINE void FN(Store)(HashRolling* BROTLI_RESTRICT self,
function BROTLI_INLINE (line 108) | static BROTLI_INLINE void FN(StoreRange)(HashRolling* BROTLI_RESTRICT self,
function BROTLI_INLINE (line 118) | static BROTLI_INLINE void FN(StitchToPreviousBlock)(
function BROTLI_INLINE (line 143) | static BROTLI_INLINE void FN(PrepareDistanceCache)(
function BROTLI_INLINE (line 150) | static BROTLI_INLINE void FN(FindLongestMatch)(
FILE: libs/brotli/enc/hash_to_binary_tree_inc.h
function BROTLI_INLINE (line 22) | static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 4; }
function BROTLI_INLINE (line 23) | static BROTLI_INLINE size_t FN(StoreLookahead)(void) {
type HashToBinaryTree (line 34) | typedef struct HashToBinaryTree {
function BROTLI_INLINE (line 81) | static BROTLI_INLINE void FN(HashMemAllocInBytes)(
function BROTLI_INLINE (line 92) | static BROTLI_INLINE size_t FN(LeftChildIndex)(
function BROTLI_INLINE (line 98) | static BROTLI_INLINE size_t FN(RightChildIndex)(
function BROTLI_INLINE (line 202) | static BROTLI_INLINE size_t FN(FindAllMatches)(
function BROTLI_INLINE (line 271) | static BROTLI_INLINE void FN(Store)(HashToBinaryTree* BROTLI_RESTRICT self,
function BROTLI_INLINE (line 280) | static BROTLI_INLINE void FN(StoreRange)(HashToBinaryTree* BROTLI_RESTRI...
function BROTLI_INLINE (line 298) | static BROTLI_INLINE void FN(StitchToPreviousBlock)(
FILE: libs/brotli/enc/histogram.c
type BlockSplitIterator (line 20) | typedef struct BlockSplitIterator {
function InitBlockSplitIterator (line 27) | static void InitBlockSplitIterator(BlockSplitIterator* self,
function BlockSplitIteratorNext (line 35) | static void BlockSplitIteratorNext(BlockSplitIterator* self) {
function BrotliBuildHistogramsWithContext (line 44) | void BrotliBuildHistogramsWithContext(
FILE: libs/brotli/enc/histogram_inc.h
type FN (line 12) | struct FN
function BROTLI_INLINE (line 18) | static BROTLI_INLINE void FN(HistogramClear)(FN(Histogram)* self) {
function BROTLI_INLINE (line 24) | static BROTLI_INLINE void FN(ClearHistograms)(
function BROTLI_INLINE (line 30) | static BROTLI_INLINE void FN(HistogramAdd)(FN(Histogram)* self, size_t v...
function BROTLI_INLINE (line 35) | static BROTLI_INLINE void FN(HistogramAddVector)(FN(Histogram)* self,
function BROTLI_INLINE (line 42) | static BROTLI_INLINE void FN(HistogramAddHistogram)(FN(Histogram)* self,
function BROTLI_INLINE (line 51) | static BROTLI_INLINE size_t FN(HistogramDataSize)(void) { return DATA_SI...
FILE: libs/brotli/enc/literal_cost.c
function UTF8Position (line 20) | static size_t UTF8Position(size_t last, size_t c, size_t clamp) {
function DecideMultiByteStatsLevel (line 35) | static size_t DecideMultiByteStatsLevel(size_t pos, size_t len, size_t m...
function EstimateBitCostsForLiteralsUTF8 (line 55) | static void EstimateBitCostsForLiteralsUTF8(size_t pos, size_t len, size...
function BrotliEstimateBitCostsForLiterals (line 129) | void BrotliEstimateBitCostsForLiterals(size_t pos, size_t len, size_t mask,
FILE: libs/brotli/enc/matching_tag_mask.h
function BROTLI_INLINE (line 16) | static BROTLI_INLINE uint64_t GetMatchingTagMask(
FILE: libs/brotli/enc/memory.c
function BrotliInitMemoryManager (line 26) | void BrotliInitMemoryManager(
function BrotliFree (line 54) | void BrotliFree(MemoryManager* m, void* p) {
function BrotliWipeOutMemoryManager (line 58) | void BrotliWipeOutMemoryManager(MemoryManager* m) {
function SortPointers (line 64) | static void SortPointers(void** items, const size_t n) {
function Annihilate (line 83) | static size_t Annihilate(void** a, size_t a_len, void** b, size_t b_len) {
function CollectGarbagePointers (line 105) | static void CollectGarbagePointers(MemoryManager* m) {
function BrotliFree (line 146) | void BrotliFree(MemoryManager* m, void* p) {
function BrotliWipeOutMemoryManager (line 153) | void BrotliWipeOutMemoryManager(MemoryManager* m) {
function BrotliBootstrapFree (line 175) | void BrotliBootstrapFree(void* address, MemoryManager* m) {
FILE: libs/brotli/enc/memory.h
type MemoryManager (line 33) | typedef struct MemoryManager {
FILE: libs/brotli/enc/metablock.c
function BrotliInitDistanceParams (line 29) | void BrotliInitDistanceParams(BrotliDistanceParams* dist_params,
function RecomputeDistancePrefixes (line 58) | static void RecomputeDistancePrefixes(Command* cmds,
function BROTLI_BOOL (line 82) | static BROTLI_BOOL ComputeDistanceCost(const Command* cmds,
function BrotliBuildMetaBlock (line 126) | void BrotliBuildMetaBlock(MemoryManager* m,
type ContextBlockSplitter (line 303) | typedef struct ContextBlockSplitter {
function InitContextBlockSplitter (line 336) | static void InitContextBlockSplitter(
function ContextBlockSplitterFinishBlock (line 383) | static void ContextBlockSplitterFinishBlock(
function ContextBlockSplitterAddSymbol (line 505) | static void ContextBlockSplitterAddSymbol(
function MapStaticContexts (line 517) | static void MapStaticContexts(MemoryManager* m,
type GreedyMetablockArena (line 539) | typedef struct GreedyMetablockArena {
function BROTLI_INLINE (line 548) | static BROTLI_INLINE void BrotliBuildMetaBlockGreedyInternal(
function BrotliBuildMetaBlockGreedy (line 627) | void BrotliBuildMetaBlockGreedy(MemoryManager* m,
function BrotliOptimizeHistograms (line 653) | void BrotliOptimizeHistograms(uint32_t num_distance_codes,
FILE: libs/brotli/enc/metablock.h
type MetaBlockSplit (line 27) | typedef struct MetaBlockSplit {
function BROTLI_INLINE (line 43) | static BROTLI_INLINE void InitMetaBlockSplit(MetaBlockSplit* mb) {
function BROTLI_INLINE (line 59) | static BROTLI_INLINE void DestroyMetaBlockSplit(
FILE: libs/brotli/enc/metablock_inc.h
type FN (line 14) | struct FN
FILE: libs/brotli/enc/params.h
type BrotliHasherParams (line 15) | typedef struct BrotliHasherParams {
type BrotliDistanceParams (line 22) | typedef struct BrotliDistanceParams {
type BrotliEncoderParams (line 31) | typedef struct BrotliEncoderParams {
FILE: libs/brotli/enc/prefix.h
function BROTLI_INLINE (line 23) | static BROTLI_INLINE void PrefixEncodeCopyDistance(size_t distance_code,
FILE: libs/brotli/enc/quality.h
function BROTLI_INLINE (line 36) | static BROTLI_INLINE size_t MaxHashTableSize(int quality) {
function BROTLI_INLINE (line 47) | static BROTLI_INLINE size_t MaxZopfliLen(const BrotliEncoderParams* para...
function BROTLI_INLINE (line 54) | static BROTLI_INLINE size_t MaxZopfliCandidates(
function BROTLI_INLINE (line 59) | static BROTLI_INLINE void SanitizeParams(BrotliEncoderParams* params) {
function BROTLI_INLINE (line 75) | static BROTLI_INLINE int ComputeLgBlock(const BrotliEncoderParams* param...
function BROTLI_INLINE (line 99) | static BROTLI_INLINE int ComputeRbBits(const BrotliEncoderParams* params) {
function BROTLI_INLINE (line 103) | static BROTLI_INLINE size_t MaxMetablockSize(
function BROTLI_INLINE (line 116) | static BROTLI_INLINE size_t LiteralSpreeLengthForSparseSearch(
function BROTLI_INLINE (line 156) | static BROTLI_INLINE void ChooseHasher(const BrotliEncoderParams* params,
FILE: libs/brotli/enc/ringbuffer.h
type RingBuffer (line 30) | typedef struct RingBuffer {
function BROTLI_INLINE (line 47) | static BROTLI_INLINE void RingBufferInit(RingBuffer* rb) {
function BROTLI_INLINE (line 54) | static BROTLI_INLINE void RingBufferSetup(
function BROTLI_INLINE (line 64) | static BROTLI_INLINE void RingBufferFree(MemoryManager* m, RingBuffer* r...
function BROTLI_INLINE (line 70) | static BROTLI_INLINE void RingBufferInitBuffer(
function BROTLI_INLINE (line 91) | static BROTLI_INLINE void RingBufferWriteTail(
function BROTLI_INLINE (line 103) | static BROTLI_INLINE void RingBufferWrite(
FILE: libs/brotli/enc/state.h
type BrotliEncoderStreamState (line 22) | typedef enum BrotliEncoderStreamState {
type BrotliEncoderFlintState (line 36) | typedef enum BrotliEncoderFlintState {
type BrotliEncoderStateStruct (line 44) | typedef struct BrotliEncoderStateStruct {
type BrotliEncoderStateInternal (line 101) | typedef struct BrotliEncoderStateStruct BrotliEncoderStateInternal;
FILE: libs/brotli/enc/static_dict.c
function BROTLI_INLINE (line 20) | static BROTLI_INLINE void AddMatch(size_t distance, size_t len, size_t l...
function BROTLI_INLINE (line 26) | static BROTLI_INLINE size_t DictMatchLength(const BrotliDictionary* dict...
function BROTLI_INLINE (line 36) | static BROTLI_INLINE BROTLI_BOOL IsMatch(const BrotliDictionary* diction...
function BROTLI_BOOL (line 72) | static BROTLI_BOOL BrotliFindAllStaticDictionaryMatchesFor(
function BROTLI_BOOL (line 497) | BROTLI_BOOL BrotliFindAllStaticDictionaryMatches(
FILE: libs/brotli/enc/static_dict_lut.c
function BROTLI_BOOL (line 27) | static BROTLI_BOOL BROTLI_COLD DoBrotliEncoderInitStaticDictionaryLut(
function BROTLI_BOOL (line 194) | BROTLI_BOOL BrotliEncoderInitStaticDictionaryLut(
FILE: libs/brotli/enc/static_dict_lut.h
type DictWord (line 20) | typedef struct DictWord {
FILE: libs/brotli/enc/static_init.c
function BROTLI_BOOL (line 23) | static BROTLI_BOOL DoBrotliEncoderStaticInit(void) {
function BrotliEncoderStaticInitEarly (line 37) | static __attribute__((constructor)) void BrotliEncoderStaticInitEarly(vo...
function BrotliEncoderLazyStaticInitInner (line 42) | void BrotliEncoderLazyStaticInitInner(void) {
function BROTLI_BOOL (line 47) | BROTLI_BOOL BrotliEncoderEnsureStaticInit(void) {
FILE: libs/brotli/enc/utf8_util.c
function BrotliParseAsUTF8 (line 17) | static size_t BrotliParseAsUTF8(
function BROTLI_BOOL (line 68) | BROTLI_BOOL BrotliIsMostlyUTF8(
FILE: libs/brotli/enc/write_bits.h
function BROTLI_INLINE (line 33) | static BROTLI_INLINE void BrotliWriteBits(size_t n_bits,
function BROTLI_INLINE (line 75) | static BROTLI_INLINE void BrotliWriteBitsPrepareStorage(
FILE: libs/brotli/include/brotli/decode.h
type BrotliDecoderState (line 29) | typedef struct BrotliDecoderStateStruct BrotliDecoderState;
type BrotliDecoderResult (line 35) | typedef enum {
type BrotliDecoderParameter (line 133) | typedef enum BrotliDecoderParameter {
FILE: libs/brotli/include/brotli/encode.h
type BrotliEncoderMode (line 46) | typedef enum BrotliEncoderMode {
type BrotliEncoderOperation (line 68) | typedef enum BrotliEncoderOperation {
type BrotliEncoderParameter (line 135) | typedef enum BrotliEncoderParameter {
type BrotliEncoderState (line 230) | typedef struct BrotliEncoderStateStruct BrotliEncoderState;
type BrotliEncoderPreparedDictionary (line 275) | typedef struct BrotliEncoderPreparedDictionaryStruct
FILE: libs/brotli/include/brotli/shared_dictionary.h
type BrotliSharedDictionary (line 30) | typedef struct BrotliSharedDictionaryStruct BrotliSharedDictionary;
type BrotliSharedDictionaryType (line 35) | typedef enum BrotliSharedDictionaryType {
FILE: libs/brotli/include/brotli/types.h
type __int8 (line 18) | typedef __int8 int8_t;
type __int16 (line 20) | typedef __int16 int16_t;
type __int32 (line 22) | typedef __int32 int32_t;
type __int64 (line 25) | typedef __int64 int64_t;
FILE: libs/clipper/clipper.cpp
type ClipperLib (line 51) | namespace ClipperLib {
type Direction (line 57) | enum Direction { dRightToLeft, dLeftToRight }
type TEdge (line 66) | struct TEdge {
type IntersectNode (line 87) | struct IntersectNode {
type LocalMinimum (line 93) | struct LocalMinimum {
type OutPt (line 99) | struct OutPt
type OutRec (line 101) | struct OutRec {
type OutPt (line 111) | struct OutPt {
type Join (line 118) | struct Join {
type LocMinSorter (line 124) | struct LocMinSorter
function cInt (line 135) | inline cInt Round(double val)
function cInt (line 142) | inline cInt Abs(cInt val)
function PolyNode (line 160) | PolyNode* PolyTree::GetFirst() const
function PolyNode (line 201) | PolyNode* PolyNode::GetNext() const
function PolyNode (line 210) | PolyNode* PolyNode::GetNextSiblingUp() const
class Int128 (line 250) | class Int128
method Int128 (line 256) | Int128(long64 _lo = 0)
method Int128 (line 263) | Int128(const Int128 &val): lo(val.lo), hi(val.hi){}
method Int128 (line 265) | Int128(const long64& _hi, const ulong64& _lo): lo(_lo), hi(_hi){}
method Int128 (line 267) | Int128& operator = (const long64 &val)
method Int128 (line 302) | Int128& operator += (const Int128 &rhs)
method Int128 (line 310) | Int128 operator + (const Int128 &rhs) const
method Int128 (line 317) | Int128& operator -= (const Int128 &rhs)
method Int128 (line 323) | Int128 operator - (const Int128 &rhs) const
method Int128 (line 330) | Int128 operator-() const //unary negation
function Int128 (line 353) | Int128 Int128Mul (long64 lhs, long64 rhs)
method Int128 (line 256) | Int128(long64 _lo = 0)
method Int128 (line 263) | Int128(const Int128 &val): lo(val.lo), hi(val.hi){}
method Int128 (line 265) | Int128(const long64& _hi, const ulong64& _lo): lo(_lo), hi(_hi){}
method Int128 (line 267) | Int128& operator = (const long64 &val)
method Int128 (line 302) | Int128& operator += (const Int128 &rhs)
method Int128 (line 310) | Int128 operator + (const Int128 &rhs) const
method Int128 (line 317) | Int128& operator -= (const Int128 &rhs)
method Int128 (line 323) | Int128 operator - (const Int128 &rhs) const
method Int128 (line 330) | Int128 operator-() const //unary negation
function Orientation (line 384) | bool Orientation(const Path &poly)
function Area (line 390) | double Area(const Path &poly)
function Area (line 405) | double Area(const OutRec &outRec)
function PointIsVertex (line 418) | bool PointIsVertex(const IntPoint &Pt, OutPt *pp)
function PointInPolygon (line 431) | int PointInPolygon (const IntPoint &pt, const Path &path)
function PointInPolygon (line 477) | int PointInPolygon (const IntPoint &pt, OutPt *op)
function Poly2ContainsPoly1 (line 519) | bool Poly2ContainsPoly1(OutPt *OutPt1, OutPt *OutPt2)
function SlopesEqual (line 534) | bool SlopesEqual(const TEdge &e1, const TEdge &e2, bool UseFullInt64Ra...
function SlopesEqual (line 545) | bool SlopesEqual(const IntPoint pt1, const IntPoint pt2,
function SlopesEqual (line 557) | bool SlopesEqual(const IntPoint pt1, const IntPoint pt2,
function IsHorizontal (line 569) | inline bool IsHorizontal(TEdge &e)
function GetDx (line 575) | inline double GetDx(const IntPoint pt1, const IntPoint pt2)
function SetDx (line 582) | inline void SetDx(TEdge &e)
function SwapSides (line 592) | inline void SwapSides(TEdge &Edge1, TEdge &Edge2)
function SwapPolyIndexes (line 600) | inline void SwapPolyIndexes(TEdge &Edge1, TEdge &Edge2)
function cInt (line 608) | inline cInt TopX(TEdge &edge, const cInt currentY)
function IntersectPoint (line 615) | void IntersectPoint(TEdge &Edge1, TEdge &Edge2, IntPoint &ip)
function ReversePolyPtLinks (line 685) | void ReversePolyPtLinks(OutPt *pp)
function DisposeOutPts (line 699) | void DisposeOutPts(OutPt*& pp)
function InitEdge (line 712) | inline void InitEdge(TEdge* e, TEdge* eNext, TEdge* ePrev, const IntPo...
function InitEdge2 (line 722) | void InitEdge2(TEdge& e, PolyType Pt)
function TEdge (line 738) | TEdge* RemoveEdge(TEdge* e)
function ReverseHorizontal (line 749) | inline void ReverseHorizontal(TEdge &e)
function SwapPoints (line 761) | void SwapPoints(IntPoint &pt1, IntPoint &pt2)
function GetOverlapSegment (line 769) | bool GetOverlapSegment(IntPoint pt1a, IntPoint pt1b, IntPoint pt2a,
function FirstIsBottomPt (line 791) | bool FirstIsBottomPt(const OutPt* btmPt1, const OutPt* btmPt2)
function OutPt (line 810) | OutPt* GetBottomPt(OutPt *pp)
function Pt2IsBetweenPt1AndPt3 (line 848) | bool Pt2IsBetweenPt1AndPt3(const IntPoint pt1,
function HorzSegmentsOverlap (line 860) | bool HorzSegmentsOverlap(cInt seg1a, cInt seg1b, cInt seg2a, cInt seg2b)
function RangeTest (line 884) | void RangeTest(const IntPoint& Pt, bool& useFullRange)
function TEdge (line 899) | TEdge* FindNextLocMin(TEdge* E)
function TEdge (line 916) | TEdge* ClipperBase::ProcessBound(TEdge* E, bool NextIsForward)
function IntRect (line 1291) | IntRect ClipperBase::GetBounds()
function cInt (line 1487) | cInt Clipper::PopScanbeam()
function OutPt (line 1723) | OutPt* Clipper::AddLocalMinPoly(TEdge *e1, TEdge *e2, const IntPoint &Pt)
function OutRec (line 2196) | OutRec* GetLowermostRec(OutRec *outRec1, OutRec *outRec2)
function Param1RightOfParam2 (line 2216) | bool Param1RightOfParam2(OutRec* outRec1, OutRec* outRec2)
function OutRec (line 2227) | OutRec* Clipper::GetOutRec(int Idx)
function OutRec (line 2335) | OutRec* Clipper::CreateOutRec()
function OutPt (line 2350) | OutPt* Clipper::AddOutPt(TEdge *e, const IntPoint &pt)
function IsMinima (line 2401) | inline bool IsMinima(TEdge *e)
function IsMaxima (line 2407) | inline bool IsMaxima(TEdge *e, const cInt Y)
function IsIntermediate (line 2413) | inline bool IsIntermediate(TEdge *e, const cInt Y)
function TEdge (line 2419) | TEdge *GetMaximaPair(TEdge *e)
function TEdge (line 2528) | TEdge* GetNextInAEL(TEdge *e, Direction dir)
function GetHorzDirection (line 2534) | void GetHorzDirection(TEdge& HorzEdge, Direction& Dir, cInt& Left, cIn...
function IntersectListSort (line 2797) | bool IntersectListSort(IntersectNode* node1, IntersectNode* node2)
function EdgesAdjacent (line 2803) | inline bool EdgesAdjacent(const IntersectNode &inode)
function PointCount (line 3025) | int PointCount(OutPt *Pts)
function SwapIntersectNodes (line 3106) | void SwapIntersectNodes(IntersectNode &int1, IntersectNode &int2)
function E2InsertsBeforeE1 (line 3119) | inline bool E2InsertsBeforeE1(TEdge &e1, TEdge &e2)
function GetOverlap (line 3131) | bool GetOverlap(const cInt a1, const cInt a2, const cInt b1, const cIn...
function UpdateOutPtIdxs (line 3148) | inline void UpdateOutPtIdxs(OutRec& outrec)
function OutPt (line 3189) | OutPt* DupOutPt(OutPt* outPt, bool InsertAfter)
function JoinHorz (line 3212) | bool JoinHorz(OutPt* op1, OutPt* op1b, OutPt* op2, OutPt* op2b,
function OutRec (line 3458) | static OutRec* ParseFirstLeft(OutRec* FirstLeft)
function DoublePoint (line 3598) | DoublePoint GetUnitNormal(const IntPoint &pt1, const IntPoint &pt2)
function ReversePath (line 4112) | void ReversePath(Path& p)
function ReversePaths (line 4118) | void ReversePaths(Paths& p)
function SimplifyPolygon (line 4125) | void SimplifyPolygon(const Path &in_poly, Paths &out_polys, PolyFillTy...
function SimplifyPolygons (line 4134) | void SimplifyPolygons(const Paths &in_polys, Paths &out_polys, PolyFil...
function SimplifyPolygons (line 4143) | void SimplifyPolygons(Paths &polys, PolyFillType fillType)
function DistanceSqrd (line 4149) | inline double DistanceSqrd(const IntPoint& pt1, const IntPoint& pt2)
function DistanceFromLineSqrd (line 4157) | double DistanceFromLineSqrd(
function SlopesNearCollinear (line 4174) | bool SlopesNearCollinear(const IntPoint& pt1,
function PointsAreClose (line 4201) | bool PointsAreClose(IntPoint pt1, IntPoint pt2, double distSqrd)
function OutPt (line 4209) | OutPt* ExcludeOp(OutPt* op)
function CleanPolygon (line 4219) | void CleanPolygon(const Path& in_poly, Path& out_poly, double distance)
function CleanPolygon (line 4279) | void CleanPolygon(Path& poly, double distance)
function CleanPolygons (line 4285) | void CleanPolygons(const Paths& in_polys, Paths& out_polys, double dis...
function CleanPolygons (line 4292) | void CleanPolygons(Paths& polys, double distance)
function Minkowski (line 4298) | void Minkowski(const Path& poly, const Path& path,
function MinkowskiSum (line 4342) | void MinkowskiSum(const Path& pattern, const Path& path, Paths& soluti...
function TranslatePath (line 4351) | void TranslatePath(const Path& input, Path& output, IntPoint delta)
function MinkowskiSum (line 4360) | void MinkowskiSum(const Path& pattern, const Paths& paths, Paths& solu...
function MinkowskiDiff (line 4379) | void MinkowskiDiff(const Path& poly1, const Path& poly2, Paths& solution)
type NodeType (line 4388) | enum NodeType {ntAny, ntOpen, ntClosed}
function AddPolyNodeToPaths (line 4390) | void AddPolyNodeToPaths(const PolyNode& polynode, NodeType nodetype, P...
function PolyTreeToPaths (line 4403) | void PolyTreeToPaths(const PolyTree& polytree, Paths& paths)
function ClosedPathsFromPolyTree (line 4411) | void ClosedPathsFromPolyTree(const PolyTree& polytree, Paths& paths)
function OpenPathsFromPolyTree (line 4419) | void OpenPathsFromPolyTree(PolyTree& polytree, Paths& paths)
FILE: libs/clipper/clipper.hpp
type ClipperLib (line 62) | namespace ClipperLib {
type ClipType (line 64) | enum ClipType { ctIntersection, ctUnion, ctDifference, ctXor }
type PolyType (line 65) | enum PolyType { ptSubject, ptClip }
type PolyFillType (line 70) | enum PolyFillType { pftEvenOdd, pftNonZero, pftPositive, pftNegative }
type ZLabel (line 72) | struct ZLabel {
method ZLabel (line 73) | ZLabel () : id(0), t(0) {}
method ZLabel (line 74) | ZLabel (int32_t ii) : id(ii), t(0) {}
method ZLabel (line 75) | ZLabel (int32_t ii, double tt) : id(ii), t(tt) {}
type ZType (line 85) | struct ZType {
method ZType (line 86) | ZType (uint64_t v) : label1(v >> 32), label2(v & 0xffffffff) {}
method ZType (line 87) | ZType (int32_t id1, int32_t id2) : label1(id1), label2(id2) {}
method ZType (line 88) | ZType (const ZLabel &l1, const ZLabel &l2) : label1(l1), label2(l2) {}
method ZLabel (line 89) | const ZLabel& minLabel () const {return (label1.id < label2.id) ? la...
method ZLabel (line 90) | const ZLabel& maxLabel () const {return (label1.id > label2.id) ? la...
method ZLabel (line 92) | const ZLabel& otherLabel (const ZLabel &l) const {
type IntPoint (line 118) | struct IntPoint {
method IntPoint (line 123) | IntPoint(cInt x = 0, cInt y = 0, ZType z = 0): X(x), Y(y), Z(z) {}
method IntPoint (line 125) | IntPoint(cInt x = 0, cInt y = 0): X(x), Y(y) {}
function Path (line 142) | inline Path& operator <<(Path& poly, const IntPoint& p) {poly.push_bac...
function Paths (line 143) | inline Paths& operator <<(Paths& polys, const Path& p) {polys.push_bac...
type DoublePoint (line 149) | struct DoublePoint
method DoublePoint (line 153) | DoublePoint(double x = 0, double y = 0) : X(x), Y(y) {}
method DoublePoint (line 154) | DoublePoint(IntPoint ip) : X((double)ip.X), Y((double)ip.Y) {}
type InitOptions (line 162) | enum InitOptions {ioReverseSolution = 1, ioStrictlySimple = 2, ioPrese...
type JoinType (line 163) | enum JoinType {jtSquare, jtRound, jtMiter}
type EndType (line 164) | enum EndType {etClosedPolygon, etClosedLine, etOpenButt, etOpenSquare,...
class PolyNode (line 166) | class PolyNode
class PolyNode (line 169) | class PolyNode
class PolyTree (line 192) | class PolyTree: public PolyNode
type IntRect (line 228) | struct IntRect { cInt left; cInt top; cInt right; cInt bottom; }
type EdgeSide (line 231) | enum EdgeSide { esLeft = 1, esRight = 2}
type TEdge (line 234) | struct TEdge
type IntersectNode (line 235) | struct IntersectNode
type LocalMinimum (line 236) | struct LocalMinimum
type Scanbeam (line 237) | struct Scanbeam
type OutPt (line 238) | struct OutPt
type OutRec (line 239) | struct OutRec
type Join (line 240) | struct Join
class ClipperBase (line 252) | class ClipperBase
method PreserveCollinear (line 261) | bool PreserveCollinear() {return m_PreserveCollinear;}
method PreserveCollinear (line 262) | void PreserveCollinear(bool value) {m_PreserveCollinear = value;}
class Clipper (line 284) | class Clipper : public virtual ClipperBase
method ReverseSolution (line 297) | bool ReverseSolution() {return m_ReverseOutput;}
method ReverseSolution (line 298) | void ReverseSolution(bool value) {m_ReverseOutput = value;}
method StrictlySimple (line 299) | bool StrictlySimple() {return m_StrictSimple;}
method StrictlySimple (line 300) | void StrictlySimple(bool value) {m_StrictSimple = value;}
class ClipperOffset (line 383) | class ClipperOffset
class clipperException (line 414) | class clipperException : public std::exception
method clipperException (line 417) | clipperException(const char* description): m_descr(description) {}
FILE: libs/md5/md5.c
function MD5_Init (line 207) | void MD5_Init(MD5_CTX *ctx)
function MD5_Update (line 218) | void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size)
function MD5_Final (line 258) | void MD5_Final(unsigned char *result, MD5_CTX *ctx)
FILE: libs/md5/md5.h
type MD5_u32plus (line 34) | typedef unsigned int MD5_u32plus;
type MD5_CTX (line 36) | typedef struct {
FILE: libs/potrace/auxiliary.h
type point_s (line 22) | struct point_s {
type point_t (line 26) | typedef struct point_s point_t;
type potrace_dpoint_t (line 28) | typedef potrace_dpoint_t dpoint_t;
function dpoint_t (line 31) | static inline dpoint_t dpoint(point_t p) {
function dpoint_t (line 39) | static inline dpoint_t interval(double lambda, dpoint_t a, dpoint_t b) {
function mod (line 58) | static inline int mod(int a, int n) {
function floordiv (line 62) | static inline int floordiv(int a, int n) {
FILE: libs/potrace/bitmap.h
function getsize (line 51) | static inline ptrdiff_t getsize(int dy, int h) {
function bm_size (line 72) | static inline ptrdiff_t bm_size(const potrace_bitmap_t *bm) {
function potrace_word (line 80) | static inline potrace_word *bm_base(const potrace_bitmap_t *bm) {
function bm_free (line 91) | static inline void bm_free(potrace_bitmap_t *bm) {
function potrace_bitmap_t (line 100) | static inline potrace_bitmap_t *bm_new(int w, int h) {
function bm_clear (line 131) | static inline void bm_clear(potrace_bitmap_t *bm, int c) {
function potrace_bitmap_t (line 140) | static inline potrace_bitmap_t *bm_dup(const potrace_bitmap_t *bm) {
function bm_invert (line 154) | static inline void bm_invert(potrace_bitmap_t *bm) {
function bm_flip (line 174) | static inline void bm_flip(potrace_bitmap_t *bm) {
function bm_resize (line 191) | static inline int bm_resize(potrace_bitmap_t *bm, int h) {
FILE: libs/potrace/curve.c
function path_t (line 25) | path_t *path_new(void) {
function privcurve_free_members (line 43) | static void privcurve_free_members(privcurve_t *curve) {
function path_free (line 53) | void path_free(path_t *p) {
function pathlist_free (line 70) | void pathlist_free(path_t *plist) {
type dpoint_t (line 81) | typedef dpoint_t dpoint3_t[3];
function privcurve_init (line 85) | int privcurve_init(privcurve_t *curve, int n) {
function privcurve_to_curve (line 107) | void privcurve_to_curve(privcurve_t *pc, potrace_curve_t *c) {
FILE: libs/potrace/curve.h
type privcurve_s (line 18) | struct privcurve_s {
type privcurve_t (line 32) | typedef struct privcurve_s privcurve_t;
type sums_s (line 34) | struct sums_s {
type sums_t (line 41) | typedef struct sums_s sums_t;
type potrace_privpath_s (line 48) | struct potrace_privpath_s {
type potrace_privpath_t (line 64) | typedef struct potrace_privpath_s potrace_privpath_t;
type potrace_privpath_t (line 67) | typedef potrace_privpath_t privpath_t;
type potrace_path_t (line 68) | typedef potrace_path_t path_t;
FILE: libs/potrace/decompose.c
function detrand (line 27) | static inline int detrand(int x, int y) {
function bm_clearexcess (line 56) | static void bm_clearexcess(potrace_bitmap_t *bm) {
type bbox_s (line 68) | struct bbox_s {
type bbox_t (line 71) | typedef struct bbox_s bbox_t;
function clear_bm_with_bbox (line 75) | static void clear_bm_with_bbox(potrace_bitmap_t *bm, bbox_t *bbox) {
function majority (line 92) | static int majority(potrace_bitmap_t *bm, int x, int y) {
function xor_to_ref (line 117) | static void xor_to_ref(potrace_bitmap_t *bm, int x, int y, int xa) {
function xor_path (line 146) | static void xor_path(potrace_bitmap_t *bm, path_t *p) {
function setbbox_path (line 170) | static void setbbox_path(bbox_t *bbox, path_t *p) {
function path_t (line 204) | static path_t *findpath(potrace_bitmap_t *bm, int x0, int y0, int sign, ...
function pathlist_to_tree (line 309) | static void pathlist_to_tree(path_t *plist, potrace_bitmap_t *bm) {
function findnext (line 431) | static int findnext(potrace_bitmap_t *bm, int *xp, int *yp) {
function bm_to_pathlist (line 461) | int bm_to_pathlist(const potrace_bitmap_t *bm, path_t **plistp, const po...
FILE: libs/potrace/potracelib.c
function potrace_param_t (line 35) | potrace_param_t *potrace_param_default(void) {
function potrace_state_t (line 52) | potrace_state_t *potrace_trace(const potrace_param_t *param, const potra...
function potrace_state_free (line 102) | void potrace_state_free(potrace_state_t *st) {
function potrace_param_free (line 108) | void potrace_param_free(potrace_param_t *p) {
FILE: libs/potrace/potracelib.h
type potrace_progress_s (line 28) | struct potrace_progress_s {
type potrace_progress_t (line 34) | typedef struct potrace_progress_s potrace_progress_t;
type potrace_param_s (line 37) | struct potrace_param_s {
type potrace_param_t (line 45) | typedef struct potrace_param_s potrace_param_t;
type potrace_word (line 51) | typedef unsigned long potrace_word;
type potrace_bitmap_s (line 57) | struct potrace_bitmap_s {
type potrace_bitmap_t (line 62) | typedef struct potrace_bitmap_s potrace_bitmap_t;
type potrace_dpoint_s (line 68) | struct potrace_dpoint_s {
type potrace_dpoint_t (line 71) | typedef struct potrace_dpoint_s potrace_dpoint_t;
type potrace_curve_s (line 78) | struct potrace_curve_s {
type potrace_curve_t (line 84) | typedef struct potrace_curve_s potrace_curve_t;
type potrace_path_s (line 87) | struct potrace_path_s {
type potrace_path_t (line 99) | typedef struct potrace_path_s potrace_path_t;
type potrace_state_s (line 107) | struct potrace_state_s {
type potrace_state_t (line 113) | typedef struct potrace_state_s potrace_state_t;
FILE: libs/potrace/progress.h
type progress_s (line 15) | struct progress_s {
type progress_t (line 23) | typedef struct progress_s progress_t;
function progress_update (line 28) | static inline void progress_update(double d, progress_t *prog) {
function progress_subrange_start (line 43) | static inline void progress_subrange_start(double a, double b, const pro...
function progress_subrange_end (line 68) | static inline void progress_subrange_end(progress_t *prog, progress_t *s...
FILE: libs/potrace/trace.c
function point_t (line 36) | static inline point_t dorth_infty(dpoint_t p0, dpoint_t p2) {
function dpara (line 46) | static inline double dpara(dpoint_t p0, dpoint_t p1, dpoint_t p2) {
function ddenom (line 59) | static inline double ddenom(dpoint_t p0, dpoint_t p2) {
function cyclic (line 66) | static inline int cyclic(int a, int b, int c) {
function pointslope (line 76) | static void pointslope(privpath_t *pp, int i, int j, dpoint_t *ctr, dpoi...
function quadform (line 149) | static inline double quadform(quadform_t Q, dpoint_t w) {
function xprod (line 168) | static inline int xprod(point_t p1, point_t p2) {
function cprod (line 173) | static inline double cprod(dpoint_t p0, dpoint_t p1, dpoint_t p2, dpoint...
function iprod (line 185) | static inline double iprod(dpoint_t p0, dpoint_t p1, dpoint_t p2) {
function iprod1 (line 197) | static inline double iprod1(dpoint_t p0, dpoint_t p1, dpoint_t p2, dpoin...
function ddist (line 209) | static inline double ddist(dpoint_t p, dpoint_t q) {
function dpoint_t (line 214) | static inline dpoint_t bezier(double t, dpoint_t p0, dpoint_t p1, dpoint...
function tangent (line 231) | static double tangent(dpoint_t p0, dpoint_t p1, dpoint_t p2, dpoint_t p3...
function calc_sums (line 268) | static int calc_sums(privpath_t *pp) {
function calc_lon (line 325) | static int calc_lon(privpath_t *pp) {
function penalty3 (line 478) | static double penalty3(privpath_t *pp, int i, int j) {
function bestpolygon (line 530) | static int bestpolygon(privpath_t *pp)
function adjust_vertices (line 645) | static int adjust_vertices(privpath_t *pp) {
function reverse (line 845) | static void reverse(privcurve_t *curve) {
function smooth (line 858) | static void smooth(privcurve_t *curve, double alphamax) {
type opti_s (line 911) | struct opti_s {
type opti_t (line 917) | typedef struct opti_s opti_t;
function opti_penalty (line 922) | static int opti_penalty(privpath_t *pp, int i, int j, opti_t *res, doubl...
function opticurve (line 1063) | static int opticurve(privpath_t *pp, double opttolerance) {
function process_path (line 1206) | int process_path(path_t *plist, const potrace_param_t *param, progress_t...
FILE: libs/variant/include/mpark/variant.hpp
type mpark (line 315) | namespace mpark {
type in_place_t (line 317) | struct in_place_t { explicit in_place_t() = default; }
method in_place_t (line 317) | explicit in_place_t() = default;
type in_place_index_t (line 320) | struct in_place_index_t { explicit in_place_index_t() = default; }
method in_place_index_t (line 320) | explicit in_place_index_t() = default;
type in_place_type_t (line 323) | struct in_place_type_t { explicit in_place_type_t() = default; }
method in_place_type_t (line 323) | explicit in_place_type_t() = default;
type identity (line 359) | struct identity { using type = T; }
type array (line 363) | struct array {
method T (line 364) | constexpr const T &operator[](std::size_t index) const {
function T (line 390) | inline constexpr T &&forward(remove_reference_t<T> &t) noexcept {
function T (line 395) | inline constexpr T &&forward(remove_reference_t<T> &&t) noexcept {
type integer_sequence (line 413) | struct integer_sequence {
method size (line 415) | static constexpr std::size_t size() noexcept { return sizeof...(Is); }
type make_index_sequence_concat (line 422) | struct make_index_sequence_concat
type make_index_sequence_concat<index_sequence<Lhs...>,
index_sequence<Rhs...>> (line 425) | struct make_index_sequence_concat<index_sequence<Lhs...>,
type make_index_sequence_impl (line 430) | struct make_index_sequence_impl
type make_index_sequence_impl (line 436) | struct make_index_sequence_impl
type make_index_sequence_impl<0> (line 441) | struct make_index_sequence_impl<0> : identity<index_sequence<>> {}
type make_index_sequence_impl<1> (line 444) | struct make_index_sequence_impl<1> : identity<index_sequence<0>> {}
type greater_equal (line 504) | struct greater_equal {
type voider (line 519) | struct voider : identity<void> {}
type detail (line 524) | namespace detail {
type swappable (line 525) | namespace swappable {
type is_swappable (line 530) | struct is_swappable {
type is_nothrow_swappable (line 545) | struct is_nothrow_swappable {
type is_nothrow_swappable<false, T> (line 551) | struct is_nothrow_swappable<false, T> : std::false_type {}
type is_reference_wrapper (line 566) | struct is_reference_wrapper : std::false_type {}
type is_reference_wrapper<std::reference_wrapper<T>> (line 569) | struct is_reference_wrapper<std::reference_wrapper<T>>
type Invoke (line 573) | struct Invoke
type Invoke<false /* pmo */, 0 /* is_base_of */> (line 597) | struct Invoke<false /* pmo */, 0 /* is_base_of */> {
type Invoke<false /* pmo */, 1 /* is_reference_wrapper */> (line 604) | struct Invoke<false /* pmo */, 1 /* is_reference_wrapper */> {
method detail (line 611) | struct Invoke<false /* pmo */, 2 /* otherwise */> {
method namespace (line 667) | namespace detail {
method namespace (line 694) | namespace detail {
method T (line 735) | inline constexpr T *addressof(T &arg) noexcept {
method namespace (line 739) | namespace detail {
method T (line 772) | inline constexpr T *addressof(T &arg) noexcept {
type indexed_type (line 795) | struct indexed_type : size_constant<I> { using type = T; }
type type_pack_element_impl (line 806) | struct type_pack_element_impl {
type set (line 809) | struct set
type is_trivially_copy_constructible (line 837) | struct is_trivially_copy_constructible
type is_trivially_move_constructible (line 842) | struct is_trivially_move_constructible : bool_constant<__is_trivial(T)...
type is_trivially_copy_assignable (line 845) | struct is_trivially_copy_assignable
type is_trivially_move_assignable (line 850) | struct is_trivially_move_assignable : bool_constant<__is_trivial(T)> {}
type dependent_type (line 854) | struct dependent_type : T {}
type push_back (line 857) | struct push_back
type set<index_sequence<Is...>> (line 812) | struct set<index_sequence<Is...>> : indexed_type<Is, Ts>... {}
type push_back<index_sequence<Is...>, J> (line 863) | struct push_back<index_sequence<Is...>, J> {
class bad_variant_access (line 907) | class bad_variant_access : public std::exception {
function throw_bad_variant_access (line 912) | [[noreturn]] inline void throw_bad_variant_access() {
class variant (line 922) | class variant
type visitor (line 1561) | struct visitor {
method does_not_handle (line 1563) | inline static constexpr bool does_not_handle() {
type visit_exhaustiveness_check (line 1569) | struct visit_exhaustiveness_check {
type value_visitor (line 1580) | struct value_visitor {
method alt (line 1641) | inline explicit constexpr alt(in_place_t, Args &&... args)
method MPARK_VARIANT_RECURSIVE_UNION (line 1691) | MPARK_VARIANT_RECURSIVE_UNION(Trait::Available,
class base (line 1701) | class base {
method base (line 1703) | inline explicit constexpr base(valueless_t tag) noexcept
method base (line 1707) | inline explicit constexpr base(in_place_index_t<I>, Args &&... args)
method valueless_by_exception (line 1711) | inline constexpr bool valueless_by_exception() const noexcept {
method index (line 1715) | inline constexpr std::size_t index() const noexcept {
method base (line 1722) | inline constexpr base &as_base(base &b) { return b; }
method base (line 1723) | inline constexpr const base &as_base(const base &b) { return b; }
method base (line 1724) | inline constexpr base &&as_base(base &&b) { return lib::move(b); }
method base (line 1725) | inline constexpr const base &&as_base(const base &&b) { return lib::...
method data_t (line 1727) | inline constexpr data_t &data(base &b) { return b.data_; }
method data_t (line 1728) | inline constexpr const data_t &data(const base &b) { return b.data_; }
method data_t (line 1729) | inline constexpr data_t &&data(base &&b) { return lib::move(b).data_; }
method data_t (line 1730) | inline constexpr const data_t &&data(const base &&b) { return lib::m...
method size (line 1732) | inline static constexpr std::size_t size() { return sizeof...(Ts); }
type dtor (line 1741) | struct dtor {
class destructor (line 1763) | class destructor
method MPARK_VARIANT_DESTRUCTOR (line 1785) | MPARK_VARIANT_DESTRUCTOR(
method MPARK_VARIANT_DESTRUCTOR (line 1792) | MPARK_VARIANT_DESTRUCTOR(
method destroy (line 1795) | inline void destroy() noexcept {
class constructor (line 1810) | class constructor : public destructor<Traits> {
type ctor (line 1819) | struct ctor {
method T (line 1829) | inline static T &construct_alt(alt<I, T> &a, Args &&... args) {
method generic_construct (line 1836) | inline static void generic_construct(constructor &lhs, Rhs &&rhs) {
class move_constructor (line 1858) | class move_constructor
method MPARK_VARIANT_MOVE_CONSTRUCTOR (line 1877) | MPARK_VARIANT_MOVE_CONSTRUCTOR(
method MPARK_VARIANT_MOVE_CONSTRUCTOR (line 1881) | MPARK_VARIANT_MOVE_CONSTRUCTOR(
method MPARK_VARIANT_MOVE_CONSTRUCTOR (line 1889) | MPARK_VARIANT_MOVE_CONSTRUCTOR(
class copy_constructor (line 1896) | class copy_constructor
method MPARK_VARIANT_COPY_CONSTRUCTOR (line 1915) | MPARK_VARIANT_COPY_CONSTRUCTOR(
method MPARK_VARIANT_COPY_CONSTRUCTOR (line 1919) | MPARK_VARIANT_COPY_CONSTRUCTOR(
method MPARK_VARIANT_COPY_CONSTRUCTOR (line 1926) | MPARK_VARIANT_COPY_CONSTRUCTOR(
class assignment (line 1933) | class assignment : public copy_constructor<Traits> {
method emplace (line 1941) | inline /* auto & */ auto emplace(Args &&... args)
type assigner (line 1954) | struct assigner {
method assign_alt (line 1964) | inline void assign_alt(alt<I, T> &a, Arg &&arg) {
method generic_assign (line 1992) | inline void generic_assign(That &&that) {
class move_assignment (line 2016) | class move_assignment
method MPARK_VARIANT_MOVE_ASSIGNMENT (line 2039) | MPARK_VARIANT_MOVE_ASSIGNMENT(
class copy_assignment (line 2056) | class copy_assignment
method MPARK_VARIANT_COPY_ASSIGNMENT (line 2079) | MPARK_VARIANT_COPY_ASSIGNMENT(
class impl (line 2093) | class impl : public copy_assignment<traits<Ts...>> {
method assign (line 2101) | inline void assign(Arg &&arg) {
method swap (line 2106) | inline void swap(impl &that) {
type swapper (line 2151) | struct swapper {
method move_nothrow (line 2160) | inline constexpr bool move_nothrow() const {
type overload_leaf (line 2171) | struct overload_leaf {
type overload_impl (line 2177) | struct overload_impl {
type impl (line 2180) | struct impl
type is_in_place_index (line 2196) | struct is_in_place_index : std::false_type {}
type is_in_place_index<in_place_index_t<I>> (line 2199) | struct is_in_place_index<in_place_index_t<I>> : std::true_type {}
type is_in_place_type (line 2202) | struct is_in_place_type : std::false_type {}
type is_in_place_type<in_place_type_t<T>> (line 2205) | struct is_in_place_type<in_place_type_t<T>> : std::true_type {}
method variant (line 2227) | inline constexpr variant() noexcept(
method variant (line 2231) | variant(const variant &) = default;
method variant (line 2232) | variant(variant &&) = default;
method variant (line 2243) | inline constexpr variant(Arg &&arg) noexcept(
method variant (line 2252) | inline explicit constexpr variant(
method variant (line 2267) | inline explicit constexpr variant(
method variant (line 2282) | inline explicit constexpr variant(
method variant (line 2297) | inline explicit constexpr variant(
method variant (line 2309) | variant &operator=(const variant &) = default;
method variant (line 2310) | variant &operator=(variant &&) = default;
method variant (line 2320) | inline variant &operator=(Arg &&arg) noexcept(
method T (line 2332) | inline T &emplace(Args &&... args) {
method T (line 2345) | inline T &emplace(std::initializer_list<Up> il, Args &&... args) {
method T (line 2354) | inline T &emplace(Args &&... args) {
method T (line 2367) | inline T &emplace(std::initializer_list<Up> il, Args &&... args) {
method valueless_by_exception (line 2371) | inline constexpr bool valueless_by_exception() const noexcept {
method index (line 2375) | inline constexpr std::size_t index() const noexcept {
method swap (line 2387) | inline void swap(variant &that) noexcept(
type variant_size (line 925) | struct variant_size
type variant_size<const T> (line 933) | struct variant_size<const T> : variant_size<T> {}
type variant_size<volatile T> (line 936) | struct variant_size<volatile T> : variant_size<T> {}
type variant_size<const volatile T> (line 939) | struct variant_size<const volatile T> : variant_size<T> {}
type variant_size<variant<Ts...>> (line 942) | struct variant_size<variant<Ts...>> : lib::size_constant<sizeof...(Ts)> {}
type variant_alternative (line 945) | struct variant_alternative
type variant_alternative<I, const T> (line 951) | struct variant_alternative<I, const T>
type variant_alternative<I, volatile T> (line 955) | struct variant_alternative<I, volatile T>
type variant_alternative<I, const volatile T> (line 959) | struct variant_alternative<I, const volatile T>
type variant_alternative<I, variant<Ts...>> (line 963) | struct variant_alternative<I, variant<Ts...>> {
function find_index (line 978) | inline constexpr std::size_t find_index() {
function find_index_impl (line 994) | inline constexpr std::size_t find_index_impl(std::size_t result,
function find_index_impl (line 1000) | inline constexpr std::size_t find_index_impl(std::size_t result,
function find_index (line 1010) | inline constexpr std::size_t find_index() {
type find_index_checked_impl (line 1024) | struct find_index_checked_impl : lib::size_constant<I> {
type valueless_t (line 1032) | struct valueless_t {}
type Trait (line 1034) | enum class Trait { TriviallyAvailable, Available, Unavailable }
function Trait (line 1039) | inline constexpr Trait trait() {
function Trait (line 1048) | inline constexpr Trait common_trait(Traits... traits_) {
function Trait (line 1060) | inline constexpr Trait common_trait_impl(Trait result) { return result; }
function Trait (line 1063) | inline constexpr Trait common_trait_impl(Trait result,
function Trait (line 1072) | inline constexpr Trait common_trait(Traits... ts) {
type traits (line 1078) | struct traits {
type base (line 1141) | struct base {
type variant (line 1153) | struct variant {
type visitor (line 1561) | struct visitor {
method does_not_handle (line 1563) | inline static constexpr bool does_not_handle() {
type visit_exhaustiveness_check (line 1569) | struct visit_exhaustiveness_check {
type value_visitor (line 1580) | struct value_visitor {
method alt (line 1641) | inline explicit constexpr alt(in_place_t, Args &&... args)
method MPARK_VARIANT_RECURSIVE_UNION (line 1691) | MPARK_VARIANT_RECURSIVE_UNION(Trait::Available,
class base (line 1701) | class base {
method base (line 1703) | inline explicit constexpr base(valueless_t tag) noexcept
method base (line 1707) | inline explicit constexpr base(in_place_index_t<I>, Args &&... args)
method valueless_by_exception (line 1711) | inline constexpr bool valueless_by_exception() const noexcept {
method index (line 1715) | inline constexpr std::size_t index() const noexcept {
method base (line 1722) | inline constexpr base &as_base(base &b) { return b; }
method base (line 1723) | inline constexpr const base &as_base(const base &b) { return b; }
method base (line 1724) | inline constexpr base &&as_base(base &&b) { return lib::move(b); }
method base (line 1725) | inline constexpr const base &&as_base(const base &&b) { return lib::...
method data_t (line 1727) | inline constexpr data_t &data(base &b) { return b.data_; }
method data_t (line 1728) | inline constexpr const data_t &data(const base &b) { return b.data_; }
method data_t (line 1729) | inline constexpr data_t &&data(base &&b) { return lib::move(b).data_; }
method data_t (line 1730) | inline constexpr const data_t &&data(const base &&b) { return lib::m...
method size (line 1732) | inline static constexpr std::size_t size() { return sizeof...(Ts); }
type dtor (line 1741) | struct dtor {
class destructor (line 1763) | class destructor
method MPARK_VARIANT_DESTRUCTOR (line 1785) | MPARK_VARIANT_DESTRUCTOR(
method MPARK_VARIANT_DESTRUCTOR (line 1792) | MPARK_VARIANT_DESTRUCTOR(
method destroy (line 1795) | inline void destroy() noexcept {
class constructor (line 1810) | class constructor : public destructor<Traits> {
type ctor (line 1819) | struct ctor {
method T (line 1829) | inline static T &construct_alt(alt<I, T> &a, Args &&... args) {
method generic_construct (line 1836) | inline static void generic_construct(constructor &lhs, Rhs &&rhs) {
class move_constructor (line 1858) | class move_constructor
method MPARK_VARIANT_MOVE_CONSTRUCTOR (line 1877) | MPARK_VARIANT_MOVE_CONSTRUCTOR(
method MPARK_VARIANT_MOVE_CONSTRUCTOR (line 1881) | MPARK_VARIANT_MOVE_CONSTRUCTOR(
method MPARK_VARIANT_MOVE_CONSTRUCTOR (line 1889) | MPARK_VARIANT_MOVE_CONSTRUCTOR(
class copy_constructor (line 1896) | class copy_constructor
method MPARK_VARIANT_COPY_CONSTRUCTOR (line 1915) | MPARK_VARIANT_COPY_CONSTRUCTOR(
method MPARK_VARIANT_COPY_CONSTRUCTOR (line 1919) | MPARK_VARIANT_COPY_CONSTRUCTOR(
method MPARK_VARIANT_COPY_CONSTRUCTOR (line 1926) | MPARK_VARIANT_COPY_CONSTRUCTOR(
class assignment (line 1933) | class assignment : public copy_constructor<Traits> {
method emplace (line 1941) | inline /* auto & */ auto emplace(Args &&... args)
type assigner (line 1954) | struct assigner {
method assign_alt (line 1964) | inline void assign_alt(alt<I, T> &a, Arg &&arg) {
method generic_assign (line 1992) | inline void generic_assign(That &&that) {
class move_assignment (line 2016) | class move_assignment
method MPARK_VARIANT_MOVE_ASSIGNMENT (line 2039) | MPARK_VARIANT_MOVE_ASSIGNMENT(
class copy_assignment (line 2056) | class copy_assignment
method MPARK_VARIANT_COPY_ASSIGNMENT (line 2079) | MPARK_VARIANT_COPY_ASSIGNMENT(
class impl (line 2093) | class impl : public copy_assignment<traits<Ts...>> {
method assign (line 2101) | inline void assign(Arg &&arg) {
method swap (line 2106) | inline void swap(impl &that) {
type swapper (line 2151) | struct swapper {
method move_nothrow (line 2160) | inline constexpr bool move_nothrow() const {
type overload_leaf (line 2171) | struct overload_leaf {
type overload_impl (line 2177) | struct overload_impl {
type impl (line 2180) | struct impl
type is_in_place_index (line 2196) | struct is_in_place_index : std::false_type {}
type is_in_place_index<in_place_index_t<I>> (line 2199) | struct is_in_place_index<in_place_index_t<I>> : std::true_type {}
type is_in_place_type (line 2202) | struct is_in_place_type : std::false_type {}
type is_in_place_type<in_place_type_t<T>> (line 2205) | struct is_in_place_type<in_place_type_t<T>> : std::true_type {}
method variant (line 2227) | inline constexpr variant() noexcept(
method variant (line 2231) | variant(const variant &) = default;
method variant (line 2232) | variant(variant &&) = default;
method variant (line 2243) | inline constexpr variant(Arg &&arg) noexcept(
method variant (line 2252) | inline explicit constexpr variant(
method variant (line 2267) | inline explicit constexpr variant(
method variant (line 2282) | inline explicit constexpr variant(
method variant (line 2297) | inline explicit constexpr variant(
method variant (line 2309) | variant &operator=(const variant &) = default;
method variant (line 2310) | variant &operator=(variant &&) = default;
method variant (line 2320) | inline variant &operator=(Arg &&arg) noexcept(
method T (line 2332) | inline T &emplace(Args &&... args) {
method T (line 2345) | inline T &emplace(std::initializer_list<Up> il, Args &&... args) {
method T (line 2354) | inline T &emplace(Args &&... args) {
method T (line 2367) | inline T &emplace(std::initializer_list<Up> il, Args &&... args) {
method valueless_by_exception (line 2371) | inline constexpr bool valueless_by_exception() const noexcept {
method index (line 2375) | inline constexpr std::size_t index() const noexcept {
method swap (line 2387) | inline void swap(variant &that) noexcept(
type expected (line 1174) | struct expected {
method but_got (line 1176) | inline static constexpr bool but_got() {
type dispatcher (line 1196) | struct dispatcher
type dispatcher<false, R, ITs...> (line 1199) | struct dispatcher<false, R, ITs...> {
method MPARK_ALWAYS_INLINE (line 1201) | MPARK_ALWAYS_INLINE static constexpr R dispatch(
method MPARK_ALWAYS_INLINE (line 1207) | MPARK_ALWAYS_INLINE static constexpr R dispatch_case(F &&, Vs &&...) {
method MPARK_ALWAYS_INLINE (line 1212) | MPARK_ALWAYS_INLINE static constexpr R dispatch_at(std::size_t,
type dispatcher<true, R, ITs...> (line 1220) | struct dispatcher<true, R, ITs...> {
method MPARK_ALWAYS_INLINE (line 1222) | MPARK_ALWAYS_INLINE static constexpr R dispatch(
method MPARK_ALWAYS_INLINE (line 1236) | MPARK_ALWAYS_INLINE static constexpr R dispatch(
method MPARK_ALWAYS_INLINE (line 1296) | MPARK_ALWAYS_INLINE static constexpr R dispatch_case(F &&f,
method MPARK_ALWAYS_INLINE (line 1308) | MPARK_ALWAYS_INLINE static constexpr R dispatch_at(std::size_t index,
function T (line 1365) | inline static constexpr const T &at(const T &elem) noexcept {
function make_farray (line 1376) | inline static constexpr lib::array<lib::decay_t<F>, sizeof...(Fs) + 1>
function dispatch (line 1385) | inline static constexpr dispatch_result_t<F, Vs...> dispatch(
function impl (line 1398) | inline static constexpr auto impl(lib::index_sequence<Is...>) {
function impl (line 1403) | inline static constexpr auto impl(Is,
type impl (line 1410) | struct impl
type impl<Is, lib::index_sequence<Js...>, Ls...> (line 1419) | struct impl<Is, lib::index_sequence<Js...>, Ls...> {
function make_fmatrix (line 1429) | inline static constexpr auto make_fmatrix() {
function AUTO_RETURN (line 1437) | AUTO_RETURN(
type make_fdiagonal_impl (line 1444) | struct make_fdiagonal_impl {
method dispatch (line 1446) | inline static constexpr dispatch_result_t<F, Vs...> dispatch(
method make_fdiagonal (line 1463) | inline static constexpr auto make_fdiagonal()
type fmatrix (line 1481) | struct fmatrix {
type fdiagonal (line 1493) | struct fdiagonal {
type alt (line 1502) | struct alt {
type variant (line 1558) | struct variant {
type visitor (line 1561) | struct visitor {
method does_not_handle (line 1563) | inline static constexpr bool does_not_handle() {
type visit_exhaustiveness_check (line 1569) | struct visit_exhaustiveness_check {
type value_visitor (line 1580) | struct value_visitor {
method alt (line 1641) | inline explicit constexpr alt(in_place_t, Args &&... args)
method MPARK_VARIANT_RECURSIVE_UNION (line 1691) | MPARK_VARIANT_RECURSIVE_UNION(Trait::Available,
class base (line 1701) | class base {
method base (line 1703) | inline explicit constexpr base(valueless_t tag) noexcept
method base (line 1707) | inline explicit constexpr base(in_place_index_t<I>, Args &&... args)
method valueless_by_exception (line 1711) | inline constexpr bool valueless_by_exception() const noexcept {
method index (line 1715) | inline constexpr std::size_t index() const noexcept {
method base (line 1722) | inline constexpr base &as_base(base &b) { return b; }
method base (line 1723) | inline constexpr const base &as_base(const base &b) { return b; }
method base (line 1724) | inline constexpr base &&as_base(base &&b) { return lib::move(b); }
method base (line 1725) | inline constexpr const base &&as_base(const base &&b) { return lib::...
method data_t (line 1727) | inline constexpr data_t &data(base &b) { return b.data_; }
method data_t (line 1728) | inline constexpr const data_t &data(const base &b) { return b.data_; }
method data_t (line 1729) | inline constexpr data_t &&data(base &&b) { return lib::move(b).data_; }
method data_t (line 1730) | inline constexpr const data_t &&data(const base &&b) { return lib::m...
method size (line 1732) | inline static constexpr std::size_t size() { return sizeof...(Ts); }
type dtor (line 1741) | struct dtor {
class destructor (line 1763) | class destructor
method MPARK_VARIANT_DESTRUCTOR (line 1785) | MPARK_VARIANT_DESTRUCTOR(
method MPARK_VARIANT_DESTRUCTOR (line 1792) | MPARK_VARIANT_DESTRUCTOR(
method destroy (line 1795) | inline void destroy() noexcept {
class constructor (line 1810) | class constructor : public destructor<Traits> {
type ctor (line 1819) | struct ctor {
method T (line 1829) | inline static T &construct_alt(alt<I, T> &a, Args &&... args) {
method generic_construct (line 1836) | inline static void generic_construct(constructor &lhs, Rhs &&rhs) {
class move_constructor (line 1858) | class move_constructor
method MPARK_VARIANT_MOVE_CONSTRUCTOR (line 1877) | MPARK_VARIANT_MOVE_CONSTRUCTOR(
method MPARK_VARIANT_MOVE_CONSTRUCTOR (line 1881) | MPARK_VARIANT_MOVE_CONSTRUCTOR(
method MPARK_VARIANT_MOVE_CONSTRUCTOR (line 1889) | MPARK_VARIANT_MOVE_CONSTRUCTOR(
class copy_constructor (line 1896) | class copy_constructor
method MPARK_VARIANT_COPY_CONSTRUCTOR (line 1915) | MPARK_VARIANT_COPY_CONSTRUCTOR(
method MPARK_VARIANT_COPY_CONSTRUCTOR (line 1919) | MPARK_VARIANT_COPY_CONSTRUCTOR(
method MPARK_VARIANT_COPY_CONSTRUCTOR (line 1926) | MPARK_VARIANT_COPY_CONSTRUCTOR(
class assignment (line 1933) | class assignment : public copy_constructor<Traits> {
method emplace (line 1941) | inline /* auto & */ auto emplace(Args &&... args)
type assigner (line 1954) | struct assigner {
method assign_alt (line 1964) | inline void assign_alt(alt<I, T> &a, Arg &&arg) {
method generic_assign (line 1992) | inline void generic_assign(That &&that) {
class move_assignment (line 2016) | class move_assignment
method MPARK_VARIANT_MOVE_ASSIGNMENT (line 2039) | MPARK_VARIANT_MOVE_ASSIGNMENT(
class copy_assignment (line 2056) | class copy_assignment
method MPARK_VARIANT_COPY_ASSIGNMENT (line 2079) | MPARK_VARIANT_COPY_ASSIGNMENT(
class impl (line 2093) | class impl : public copy_assignment<traits<Ts...>> {
method assign (line 2101) | inline void assign(Arg &&arg) {
method swap (line 2106) | inline void swap(impl &that) {
type swapper (line 2151) | struct swapper {
method move_nothrow (line 2160) | inline constexpr bool move_nothrow() const {
type overload_leaf (line 2171) | struct overload_leaf {
type overload_impl (line 2177) | struct overload_impl {
type impl (line 2180) | struct impl
type is_in_place_index (line 2196) | struct is_in_place_index : std::false_type {}
type is_in_place_index<in_place_index_t<I>> (line 2199) | struct is_in_place_index<in_place_index_t<I>> : std::true_type {}
type is_in_place_type (line 2202) | struct is_in_place_type : std::false_type {}
type is_in_place_type<in_place_type_t<T>> (line 2205) | struct is_in_place_type<in_place_type_t<T>> : std::true_type {}
method variant (line 2227) | inline constexpr variant() noexcept(
method variant (line 2231) | variant(const variant &) = default;
method variant (line 2232) | variant(variant &&) = default;
method variant (line 2243) | inline constexpr variant(Arg &&arg) noexcept(
method variant (line 2252) | inline explicit constexpr variant(
method variant (line 2267) | inline explicit constexpr variant(
method variant (line 2282) | inline explicit constexpr variant(
method variant (line 2297) | inline explicit constexpr variant(
method variant (line 2309) | variant &operator=(const variant &) = default;
method variant (line 2310) | variant &operator=(variant &&) = default;
method variant (line 2320) | inline variant &operator=(Arg &&arg) noexcept(
method T (line 2332) | inline T &emplace(Args &&... args) {
method T (line 2345) | inline T &emplace(std::initializer_list<Up> il, Args &&... args) {
method T (line 2354) | inline T &emplace(Args &&... args) {
method T (line 2367) | inline T &emplace(std::initializer_list<Up> il, Args &&... args) {
method valueless_by_exception (line 2371) | inline constexpr bool valueless_by_exception() const noexcept {
method index (line 2375) | inline constexpr std::size_t index() const noexcept {
method swap (line 2387) | inline void swap(variant &that) noexcept(
type impl<lib::index_sequence<Is...>> (line 2183) | struct impl<lib::index_sequence<Is...>> : overload_leaf<Is, Ts>... {}
class variant (line 2210) | class variant {
type visitor (line 1561) | struct visitor {
method does_not_handle (line 1563) | inline static constexpr bool does_not_handle() {
type visit_exhaustiveness_check (line 1569) | struct visit_exhaustiveness_check {
type value_visitor (line 1580) | struct value_visitor {
method alt (line 1641) | inline explicit constexpr alt(in_place_t, Args &&... args)
method MPARK_VARIANT_RECURSIVE_UNION (line 1691) | MPARK_VARIANT_RECURSIVE_UNION(Trait::Available,
class base (line 1701) | class base {
method base (line 1703) | inline explicit constexpr base(valueless_t tag) noexcept
method base (line 1707) | inline explicit constexpr base(in_place_index_t<I>, Args &&... args)
method valueless_by_exception (line 1711) | inline constexpr bool valueless_by_exception() const noexcept {
method index (line 1715) | inline constexpr std::size_t index() const noexcept {
method base (line 1722) | inline constexpr base &as_base(base &b) { return b; }
method base (line 1723) | inline constexpr const base &as_base(const base &b) { return b; }
method base (line 1724) | inline constexpr base &&as_base(base &&b) { return lib::move(b); }
method base (line 1725) | inline constexpr const base &&as_base(const base &&b) { return lib::...
method data_t (line 1727) | inline constexpr data_t &data(base &b) { return b.data_; }
method data_t (line 1728) | inline constexpr const data_t &data(const base &b) { return b.data_; }
method data_t (line 1729) | inline constexpr data_t &&data(base &&b) { return lib::move(b).data_; }
method data_t (line 1730) | inline constexpr const data_t &&data(const base &&b) { return lib::m...
method size (line 1732) | inline static constexpr std::size_t size() { return sizeof...(Ts); }
type dtor (line 1741) | struct dtor {
class destructor (line 1763) | class destructor
method MPARK_VARIANT_DESTRUCTOR (line 1785) | MPARK_VARIANT_DESTRUCTOR(
method MPARK_VARIANT_DESTRUCTOR (line 1792) | MPARK_VARIANT_DESTRUCTOR(
method destroy (line 1795) | inline void destroy() noexcept {
class constructor (line 1810) | class constructor : public destructor<Traits> {
type ctor (line 1819) | struct ctor {
method T (line 1829) | inline static T &construct_alt(alt<I, T> &a, Args &&... args) {
method generic_construct (line 1836) | inline static void generic_construct(constructor &lhs, Rhs &&rhs) {
class move_constructor (line 1858) | class move_constructor
method MPARK_VARIANT_MOVE_CONSTRUCTOR (line 1877) | MPARK_VARIANT_MOVE_CONSTRUCTOR(
method MPARK_VARIANT_MOVE_CONSTRUCTOR (line 1881) | MPARK_VARIANT_MOVE_CONSTRUCTOR(
method MPARK_VARIANT_MOVE_CONSTRUCTOR (line 1889) | MPARK_VARIANT_MOVE_CONSTRUCTOR(
class copy_constructor (line 1896) | class copy_constructor
method MPARK_VARIANT_COPY_CONSTRUCTOR (line 1915) | MPARK_VARIANT_COPY_CONSTRUCTOR(
method MPARK_VARIANT_COPY_CONSTRUCTOR (line 1919) | MPARK_VARIANT_COPY_CONSTRUCTOR(
method MPARK_VARIANT_COPY_CONSTRUCTOR (line 1926) | MPARK_VARIANT_COPY_CONSTRUCTOR(
class assignment (line 1933) | class assignment : public copy_constructor<Traits> {
method emplace (line 1941) | inline /* auto & */ auto emplace(Args &&... args)
type assigner (line 1954) | struct assigner {
method assign_alt (line 1964) | inline void assign_alt(alt<I, T> &a, Arg &&arg) {
method generic_assign (line 1992) | inline void generic_assign(That &&that) {
class move_assignment (line 2016) | class move_assignment
method MPARK_VARIANT_MOVE_ASSIGNMENT (line 2039) | MPARK_VARIANT_MOVE_ASSIGNMENT(
class copy_assignment (line 2056) | class copy_assignment
method MPARK_VARIANT_COPY_ASSIGNMENT (line 2079) | MPARK_VARIANT_COPY_ASSIGNMENT(
class impl (line 2093) | class impl : public copy_assignment<traits<Ts...>> {
method assign (line 2101) | inline void assign(Arg &&arg) {
method swap (line 2106) | inline void swap(impl &that) {
type swapper (line 2151) | struct swapper {
method move_nothrow (line 2160) | inline constexpr bool move_nothrow() const {
type overload_leaf (line 2171) | struct overload_leaf {
type overload_impl (line 2177) | struct overload_impl {
type impl (line 2180) | struct impl
type is_in_place_index (line 2196) | struct is_in_place_index : std::false_type {}
type is_in_place_index<in_place_index_t<I>> (line 2199) | struct is_in_place_index<in_place_index_t<I>> : std::true_type {}
type is_in_place_type (line 2202) | struct is_in_place_type : std::false_type {}
type is_in_place_type<in_place_type_t<T>> (line 2205) | struct is_in_place_type<in_place_type_t<T>> : std::true_type {}
method variant (line 2227) | inline constexpr variant() noexcept(
method variant (line 2231) | variant(const variant &) = default;
method variant (line 2232) | variant(variant &&) = default;
method variant (line 2243) | inline constexpr variant(Arg &&arg) noexcept(
method variant (line 2252) | inline explicit constexpr variant(
method variant (line 2267) | inline explicit constexpr variant(
method variant (line 2282) | inline explicit constexpr variant(
method variant (line 2297) | inline explicit constexpr variant(
method variant (line 2309) | variant &operator=(const variant &) = default;
method variant (line 2310) | variant &operator=(variant &&) = default;
method variant (line 2320) | inline variant &operator=(Arg &&arg) noexcept(
method T (line 2332) | inline T &emplace(Args &&... args) {
method T (line 2345) | inline T &emplace(std::initializer_list<Up> il, Args &&... args) {
method T (line 2354) | inline T &emplace(Args &&... args) {
method T (line 2367) | inline T &emplace(std::initializer_list<Up> il, Args &&... args) {
method valueless_by_exception (line 2371) | inline constexpr bool valueless_by_exception() const noexcept {
method index (line 2375) | inline constexpr std::size_t index() const noexcept {
method swap (line 2387) | inline void swap(variant &that) noexcept(
function holds_alternative (line 2401) | inline constexpr bool holds_alternative(const variant<Ts...> &v) noexcept {
function holds_alternative (line 2406) | inline constexpr bool holds_alternative(const variant<Ts...> &v) noexcept {
function namespace (line 2410) | namespace detail {
function namespace (line 2752) | namespace std {
FILE: libs/woff2/include/woff2/decode.h
function namespace (line 16) | namespace woff2 {
FILE: libs/woff2/include/woff2/encode.h
function namespace (line 16) | namespace woff2 {
FILE: libs/woff2/include/woff2/output.h
function namespace (line 18) | namespace woff2 {
FILE: libs/woff2/include/woff2/version.h
function namespace (line 4) | namespace woff2 {
FILE: libs/woff2/src/buffer.h
type __int64 (line 21) | typedef __int64 int64_t;
function namespace (line 37) | namespace woff2 {
FILE: libs/woff2/src/font.cc
type woff2 (line 19) | namespace woff2 {
function ReadTrueTypeFont (line 58) | bool ReadTrueTypeFont(Buffer* file, const uint8_t* data, size_t len,
function ReadCollectionFont (line 109) | bool ReadCollectionFont(Buffer* file, const uint8_t* data, size_t len,
function ReadTrueTypeCollection (line 135) | bool ReadTrueTypeCollection(Buffer* file, const uint8_t* data, size_t ...
function ReadFont (line 168) | bool ReadFont(const uint8_t* data, size_t len, Font* font) {
function ReadFontCollection (line 181) | bool ReadFontCollection(const uint8_t* data, size_t len,
function FontFileSize (line 198) | size_t FontFileSize(const Font& font) {
function FontCollectionFileSize (line 209) | size_t FontCollectionFileSize(const FontCollection& font_collection) {
function WriteFont (line 218) | bool WriteFont(const Font& font, uint8_t* dst, size_t dst_size) {
function WriteTableRecord (line 223) | bool WriteTableRecord(const Font::Table* table, size_t* offset, uint8_...
function WriteTable (line 238) | bool WriteTable(const Font::Table& table, size_t* offset, uint8_t* dst,
function WriteFont (line 261) | bool WriteFont(const Font& font, size_t* offset, uint8_t* dst,
function WriteFontCollection (line 284) | bool WriteFontCollection(const FontCollection& font_collection, uint8_...
function NumGlyphs (line 322) | int NumGlyphs(const Font& font) {
function IndexFormat (line 336) | int IndexFormat(const Font& font) {
function GetGlyphData (line 348) | bool GetGlyphData(const Font& font, int glyph_index,
function RemoveDigitalSignature (line 390) | bool RemoveDigitalSignature(Font* font) {
FILE: libs/woff2/src/font.h
function namespace (line 18) | namespace woff2 {
FILE: libs/woff2/src/glyph.cc
type woff2 (line 16) | namespace woff2 {
function ReadCompositeGlyphData (line 32) | bool ReadCompositeGlyphData(Buffer* buffer, Glyph* glyph) {
function ReadGlyph (line 66) | bool ReadGlyph(const uint8_t* data, size_t len, Glyph* glyph) {
function StoreBbox (line 220) | void StoreBbox(const Glyph& glyph, size_t* offset, uint8_t* dst) {
function StoreInstructions (line 227) | void StoreInstructions(const Glyph& glyph, size_t* offset, uint8_t* ds...
function StoreEndPtsOfContours (line 232) | bool StoreEndPtsOfContours(const Glyph& glyph, size_t* offset, uint8_t...
function StorePoints (line 245) | bool StorePoints(const Glyph& glyph, size_t* offset,
function StoreGlyph (line 345) | bool StoreGlyph(const Glyph& glyph, uint8_t* dst, size_t* dst_size) {
FILE: libs/woff2/src/glyph.h
function namespace (line 19) | namespace woff2 {
FILE: libs/woff2/src/normalize.cc
type woff2 (line 23) | namespace woff2 {
function StoreLoca (line 27) | void StoreLoca(int index_fmt, uint32_t value, size_t* offset, uint8_t*...
function WriteNormalizedLoca (line 39) | bool WriteNormalizedLoca(int index_fmt, int num_glyphs, Font* font) {
function MakeEditableBuffer (line 88) | bool MakeEditableBuffer(Font* font, int tableTag) {
function NormalizeGlyphs (line 109) | bool NormalizeGlyphs(Font* font) {
function NormalizeOffsets (line 166) | bool NormalizeOffsets(Font* font) {
function ComputeHeaderChecksum (line 178) | uint32_t ComputeHeaderChecksum(const Font& font) {
function FixChecksums (line 200) | bool FixChecksums(Font* font) {
function MarkTransformed (line 233) | bool MarkTransformed(Font* font) {
function NormalizeWithoutFixingChecksums (line 253) | bool NormalizeWithoutFixingChecksums(Font* font) {
function NormalizeFont (line 261) | bool NormalizeFont(Font* font) {
function NormalizeFontCollection (line 266) | bool NormalizeFontCollection(FontCollection* font_collection) {
FILE: libs/woff2/src/normalize.h
function namespace (line 14) | namespace woff2 {
FILE: libs/woff2/src/port.h
function namespace (line 14) | namespace woff2 {
FILE: libs/woff2/src/round.h
function namespace (line 14) | namespace woff2 {
FILE: libs/woff2/src/store_bytes.h
function namespace (line 19) | namespace woff2 {
FILE: libs/woff2/src/table_tags.cc
type woff2 (line 11) | namespace woff2 {
FILE: libs/woff2/src/table_tags.h
function namespace (line 14) | namespace woff2 {
FILE: libs/woff2/src/transform.cc
type woff2 (line 19) | namespace woff2 {
function WriteBytes (line 27) | void WriteBytes(std::vector<uint8_t>* out, const uint8_t* data, size_t...
function WriteBytes (line 34) | void WriteBytes(std::vector<uint8_t>* out, const std::vector<uint8_t>&...
function WriteUShort (line 40) | void WriteUShort(std::vector<uint8_t>* out, int value) {
function WriteLong (line 45) | void WriteLong(std::vector<uint8_t>* out, int value) {
class GlyfEncoder (line 54) | class GlyfEncoder {
method GlyfEncoder (line 56) | explicit GlyfEncoder(int num_glyphs)
method Encode (line 61) | bool Encode(int glyph_id, const Glyph& glyph) {
method GetTransformedGlyfBytes (line 72) | void GetTransformedGlyfBytes(std::vector<uint8_t>* result) {
method WriteInstructions (line 100) | void WriteInstructions(const Glyph& glyph) {
method ShouldWriteSimpleGlyphBbox (line 106) | bool ShouldWriteSimpleGlyphBbox(const Glyph& glyph) {
method WriteSimpleGlyph (line 136) | void WriteSimpleGlyph(int glyph_id, const Glyph& glyph) {
method WriteCompositeGlyph (line 168) | void WriteCompositeGlyph(int glyph_id, const Glyph& glyph) {
method WriteBbox (line 179) | void WriteBbox(int glyph_id, const Glyph& glyph) {
method WriteTriplet (line 187) | void WriteTriplet(bool on_curve, int x, int y) {
method EnsureOverlapBitmap (line 228) | void EnsureOverlapBitmap() {
function TransformGlyfAndLocaTables (line 248) | bool TransformGlyfAndLocaTables(Font* font) {
function TransformHmtxTable (line 305) | bool TransformHmtxTable(Font* font) {
FILE: libs/woff2/src/transform.h
function namespace (line 14) | namespace woff2 {
FILE: libs/woff2/src/variable_length.cc
type woff2 (line 11) | namespace woff2 {
function Size255UShort (line 13) | size_t Size255UShort(uint16_t value) {
function Write255UShort (line 25) | void Write255UShort(std::vector<uint8_t>* out, int value) {
function Store255UShort (line 41) | void Store255UShort(int val, size_t* offset, uint8_t* dst) {
function Read255UShort (line 50) | bool Read255UShort(Buffer* buf, unsigned int* value) {
function ReadBase128 (line 86) | bool ReadBase128(Buffer* buf, uint32_t* value) {
function Base128Size (line 111) | size_t Base128Size(size_t n) {
function StoreBase128 (line 117) | void StoreBase128(size_t len, size_t* offset, uint8_t* dst) {
FILE: libs/woff2/src/variable_length.h
function namespace (line 16) | namespace woff2 {
FILE: libs/woff2/src/woff2_common.cc
type woff2 (line 15) | namespace woff2 {
function ComputeULongSum (line 18) | uint32_t ComputeULongSum(const uint8_t* buf, size_t size) {
function CollectionHeaderSize (line 38) | size_t CollectionHeaderSize(uint32_t header_version, uint32_t num_font...
FILE: libs/woff2/src/woff2_common.h
function namespace (line 17) | namespace woff2 {
FILE: libs/woff2/src/woff2_enc.cc
type woff2 (line 29) | namespace woff2 {
function Compress (line 37) | bool Compress(const uint8_t* data, const size_t len, uint8_t* result,
function Woff2Compress (line 48) | bool Woff2Compress(const uint8_t* data, const size_t len,
function TextCompress (line 55) | bool TextCompress(const uint8_t* data, const size_t len,
function KnownTableIndex (line 62) | int KnownTableIndex(uint32_t tag) {
function StoreTableEntry (line 69) | void StoreTableEntry(const Table& table, size_t* offset, uint8_t* dst) {
function TableEntrySize (line 84) | size_t TableEntrySize(const Table& table) {
function ComputeWoff2Length (line 94) | size_t ComputeWoff2Length(const FontCollection& font_collection,
function ComputeUncompressedLength (line 135) | size_t ComputeUncompressedLength(const Font& font) {
function ComputeUncompressedLength (line 147) | size_t ComputeUncompressedLength(const FontCollection& font_collection) {
function ComputeTotalTransformLength (line 159) | size_t ComputeTotalTransformLength(const Font& font) {
function MaxWOFF2CompressedSize (line 177) | size_t MaxWOFF2CompressedSize(const uint8_t* data, size_t length) {
function MaxWOFF2CompressedSize (line 181) | size_t MaxWOFF2CompressedSize(const uint8_t* data, size_t length,
function CompressedBufferSize (line 190) | uint32_t CompressedBufferSize(uint32_t original_size) {
function TransformFontCollection (line 194) | bool TransformFontCollection(FontCollection* font_collection) {
function ConvertTTFToWOFF2 (line 207) | bool ConvertTTFToWOFF2(const uint8_t *data, size_t length,
function ConvertTTFToWOFF2 (line 214) | bool ConvertTTFToWOFF2(const uint8_t *data, size_t length,
FILE: libs/woff2/src/woff2_out.cc
type woff2 (line 11) | namespace woff2 {
FILE: libs/xxHash/xxhash.h
type XXH_errorcode (line 572) | typedef enum {
type XXH32_hash_t (line 587) | typedef uint32_t XXH32_hash_t;
type XXH32_hash_t (line 597) | typedef uint32_t XXH32_hash_t;
type XXH32_hash_t (line 602) | typedef unsigned int XXH32_hash_t;
type XXH32_hash_t (line 604) | typedef unsigned long XXH32_hash_t;
type XXH32_state_t (line 653) | typedef struct XXH32_state_s XXH32_state_t;
type XXH32_canonical_t (line 754) | typedef struct {
type XXH64_hash_t (line 866) | typedef uint64_t XXH64_hash_t;
type XXH64_hash_t (line 875) | typedef uint64_t XXH64_hash_t;
type XXH64_hash_t (line 880) | typedef unsigned long XXH64_hash_t;
type XXH64_hash_t (line 883) | typedef unsigned long long XXH64_hash_t;
type XXH64_state_t (line 927) | typedef struct XXH64_state_s XXH64_state_t;
type XXH64_canonical_t (line 1028) | typedef struct { unsigned char digest[sizeof(XXH64_hash_t)]; } XXH64_can...
type XXH3_state_t (line 1243) | typedef struct XXH3_state_s XXH3_state_t;
type XXH128_hash_t (line 1382) | typedef struct {
type XXH128_canonical_t (line 1605) | typedef struct { unsigned char digest[sizeof(XXH128_hash_t)]; } XXH128_c...
type XXH32_state_s (line 1672) | struct XXH32_state_s {
type XXH64_state_s (line 1696) | struct XXH64_state_s {
type XXH3_state_s (line 1770) | struct XXH3_state_s {
function XXH_CONSTF (line 2369) | static XXH_CONSTF void* XXH_malloc(size_t s) { (void)s; return NULL; }
function XXH_free (line 2370) | static void XXH_free(void* p) { (void)p; }
function XXH_MALLOCF (line 2384) | static XXH_MALLOCF void* XXH_malloc(size_t s) { return malloc(s); }
function XXH_free (line 2390) | static void XXH_free(void* p) { free(p); }
type xxh_u8 (line 2550) | typedef uint8_t xxh_u8;
type xxh_u8 (line 2552) | typedef unsigned char xxh_u8;
type XXH32_hash_t (line 2554) | typedef XXH32_hash_t xxh_u32;
function xxh_u32 (line 2626) | static xxh_u32 XXH_read32(const void* memPtr) { return *(const xxh_u32*)...
type unalign (line 2638) | typedef union { xxh_u32 u32; } __attribute__((__packed__)) unalign;
function xxh_u32 (line 2640) | static xxh_u32 XXH_read32(const void* ptr)
function xxh_u32 (line 2652) | static xxh_u32 XXH_read32(const void* memPtr)
function XXH_isLittleEndian (line 2699) | static int XXH_isLittleEndian(void)
function xxh_u32 (line 2813) | static xxh_u32 XXH_swap32 (xxh_u32 x)
type XXH_alignment (line 2831) | typedef enum {
function XXH_FORCE_INLINE (line 2843) | XXH_FORCE_INLINE xxh_u32 XXH_readLE32(const void* memPtr)
function XXH_FORCE_INLINE (line 2852) | XXH_FORCE_INLINE xxh_u32 XXH_readBE32(const void* memPtr)
function XXH_FORCE_INLINE (line 2862) | XXH_FORCE_INLINE xxh_u32 XXH_readLE32(const void* ptr)
function xxh_u32 (line 2867) | static xxh_u32 XXH_readBE32(const void* ptr)
function XXH_FORCE_INLINE (line 2873) | XXH_FORCE_INLINE xxh_u32
function XXH_versionNumber (line 2888) | XXH_PUBLIC_API unsigned XXH_versionNumber (void) { return XXH_VERSION_NU...
function xxh_u32 (line 2928) | static xxh_u32 XXH32_round(xxh_u32 acc, xxh_u32 input)
function xxh_u32 (line 2985) | static xxh_u32 XXH32_avalanche(xxh_u32 hash)
function XXH_FORCE_INLINE (line 3001) | XXH_FORCE_INLINE void
function XXH_FORCE_INLINE (line 3017) | XXH_FORCE_INLINE const xxh_u8 *
function xxh_u32 (line 3044) | xxh_u32
function XXH_PUREF (line 3067) | static XXH_PUREF xxh_u32
function xxh_u32 (line 3156) | xxh_u32
function XXH_PUBLIC_API (line 3180) | XXH_PUBLIC_API XXH32_hash_t XXH32 (const void* input, size_t len, XXH32_...
function XXH_PUBLIC_API (line 3203) | XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void)
function XXH_PUBLIC_API (line 3208) | XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr)
function XXH_PUBLIC_API (line 3215) | XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* dstState, const XXH32...
function XXH_PUBLIC_API (line 3221) | XXH_PUBLIC_API XXH_errorcode XXH32_reset(XXH32_state_t* statePtr, XXH32_...
function XXH_PUBLIC_API (line 3231) | XXH_PUBLIC_API XXH_errorcode
function XXH_PUBLIC_API (line 3278) | XXH_PUBLIC_API XXH32_hash_t XXH32_digest(const XXH32_state_t* state)
function XXH_PUBLIC_API (line 3297) | XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH3...
function XXH_PUBLIC_API (line 3304) | XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonica...
type XXH64_hash_t (line 3322) | typedef XXH64_hash_t xxh_u64;
function xxh_u64 (line 3336) | static xxh_u64 XXH_read64(const void* memPtr)
type unalign64 (line 3351) | typedef union { xxh_u32 u32; xxh_u64 u64; } __attribute__((__packed__)) ...
function xxh_u64 (line 3353) | static xxh_u64 XXH_read64(const void* ptr)
function xxh_u64 (line 3365) | static xxh_u64 XXH_read64(const void* memPtr)
function xxh_u64 (line 3379) | static xxh_u64 XXH_swap64(xxh_u64 x)
function XXH_FORCE_INLINE (line 3396) | XXH_FORCE_INLINE xxh_u64 XXH_readLE64(const void* memPtr)
function XXH_FORCE_INLINE (line 3409) | XXH_FORCE_INLINE xxh_u64 XXH_readBE64(const void* memPtr)
function XXH_FORCE_INLINE (line 3423) | XXH_FORCE_INLINE xxh_u64 XXH_readLE64(const void* ptr)
function xxh_u64 (line 3428) | static xxh_u64 XXH_readBE64(const void* ptr)
function XXH_FORCE_INLINE (line 3434) | XXH_FORCE_INLINE xxh_u64
function xxh_u64 (line 3469) | static xxh_u64 XXH64_round(xxh_u64 acc, xxh_u64 input)
function xxh_u64 (line 3494) | static xxh_u64 XXH64_mergeRound(xxh_u64 acc, xxh_u64 val)
function xxh_u64 (line 3503) | static xxh_u64 XXH64_avalanche(xxh_u64 hash)
function XXH_FORCE_INLINE (line 3520) | XXH_FORCE_INLINE void
function XXH_FORCE_INLINE (line 3536) | XXH_FORCE_INLINE const xxh_u8 *
function xxh_u64 (line 3572) | xxh_u64
function xxh_u64 (line 3610) | xxh_u64
function xxh_u64 (line 3654) | xxh_u64
function XXH_PUBLIC_API (line 3678) | XXH_PUBLIC_API XXH64_hash_t XXH64 (XXH_NOESCAPE const void* input, size_...
function XXH_PUBLIC_API (line 3700) | XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void)
function XXH_PUBLIC_API (line 3705) | XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr)
function XXH_PUBLIC_API (line 3712) | XXH_PUBLIC_API void XXH64_copyState(XXH_NOESCAPE XXH64_state_t* dstState...
function XXH_PUBLIC_API (line 3718) | XXH_PUBLIC_API XXH_errorcode XXH64_reset(XXH_NOESCAPE XXH64_state_t* sta...
function XXH_PUBLIC_API (line 3727) | XXH_PUBLIC_API XXH_errorcode
function XXH_PUBLIC_API (line 3773) | XXH_PUBLIC_API XXH64_hash_t XXH64_digest(XXH_NOESCAPE const XXH64_state_...
function XXH_PUBLIC_API (line 3792) | XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH_NOESCAPE XXH64_canonical...
function XXH_PUBLIC_API (line 3800) | XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(XXH_NOESCAPE const X...
type uint64x2_t (line 4090) | typedef uint64x2_t xxh_aliasing_uint64x2_t
function XXH_FORCE_INLINE (line 4106) | XXH_FORCE_INLINE uint64x2_t XXH_vld1q_u64(void const* ptr) /* silence -W...
function XXH_FORCE_INLINE (line 4111) | XXH_FORCE_INLINE uint64x2_t XXH_vld1q_u64(void const* ptr)
function XXH_FORCE_INLINE (line 4126) | XXH_FORCE_INLINE uint64x2_t
function XXH_FORCE_INLINE (line 4133) | XXH_FORCE_INLINE uint64x2_t
function XXH_FORCE_INLINE (line 4141) | XXH_FORCE_INLINE uint64x2_t
function XXH_FORCE_INLINE (line 4148) | XXH_FORCE_INLINE uint64x2_t
type xxh_u64x2 (line 4239) | typedef __vector unsigned long long xxh_u64x2;
type xxh_u8x16 (line 4240) | typedef __vector unsigned char xxh_u8x16;
type xxh_u32x4 (line 4241) | typedef __vector unsigned xxh_u32x4;
type xxh_u64x2 (line 4246) | typedef xxh_u64x2 xxh_aliasing_u64x2
function XXH_FORCE_INLINE (line 4267) | XXH_FORCE_INLINE xxh_u64x2 XXH_vec_revb(xxh_u64x2 val)
function XXH_FORCE_INLINE (line 4279) | XXH_FORCE_INLINE xxh_u64x2 XXH_vec_loadu(const void *ptr)
function XXH_FORCE_INLINE (line 4307) | XXH_FORCE_INLINE xxh_u64x2 XXH_vec_mulo(xxh_u32x4 a, xxh_u32x4 b)
function XXH_FORCE_INLINE (line 4313) | XXH_FORCE_INLINE xxh_u64x2 XXH_vec_mule(xxh_u32x4 a, xxh_u32x4 b)
function XXH_FORCE_INLINE (line 4404) | XXH_FORCE_INLINE xxh_u64
function XXH128_hash_t (line 4431) | static XXH128_hash_t
function xxh_u64 (line 4565) | static xxh_u64
function xxh_u64 (line 4573) | xxh_u64 XXH_xorshift64(xxh_u64 v64, int shift)
function XXH64_hash_t (line 4583) | static XXH64_hash_t XXH3_avalanche(xxh_u64 h64)
function XXH64_hash_t (line 4596) | static XXH64_hash_t XXH3_rrmxmx(xxh_u64 h64, xxh_u64 len)
function XXH64_hash_t (line 4640) | XXH64_hash_t
function XXH64_hash_t (line 4662) | XXH64_hash_t
function XXH64_hash_t (line 4678) | XXH64_hash_t
function XXH64_hash_t (line 4695) | XXH64_hash_t
function XXH_FORCE_INLINE (line 4732) | XXH_FORCE_INLINE xxh_u64 XXH3_mix16B(const xxh_u8* XXH_RESTRICT input,
function XXH64_hash_t (line 4765) | XXH64_hash_t
function XXH64_hash_t (line 4801) | XXH64_hash_t
function XXH_FORCE_INLINE (line 4913) | XXH_FORCE_INLINE void XXH_writeLE64(void* dst, xxh_u64 v64)
type xxh_i64 (line 4927) | typedef int64_t xxh_i64;
type xxh_i64 (line 4930) | typedef long long xxh_i64;
function XXH3_accumulate_512_avx512 (line 4964) | void
function XXH_FORCE_INLINE (line 4991) | XXH_FORCE_INLINE XXH_TARGET_AVX512 XXH3_ACCUMULATE_TEMPLATE(avx512)
function XXH3_initCustomSecret_avx512 (line 5037) | void
function XXH3_accumulate_512_avx2 (line 5067) | void
function XXH_FORCE_INLINE (line 5100) | XXH_FORCE_INLINE XXH_TARGET_AVX2 XXH3_ACCUMULATE_TEMPLATE(avx2)
function XXH3_initCustomSecret_avx2 (line 5131) | void XXH3_initCustomSecret_avx2(void* XXH_RESTRICT customSecret, xxh_u64...
function XXH3_accumulate_512_sse2 (line 5173) | void
function XXH_FORCE_INLINE (line 5207) | XXH_FORCE_INLINE XXH_TARGET_SSE2 XXH3_ACCUMULATE_TEMPLATE(sse2)
function XXH3_initCustomSecret_sse2 (line 5238) | void XXH3_initCustomSecret_sse2(void* XXH_RESTRICT customSecret, xxh_u64...
function XXH_FORCE_INLINE (line 5308) | XXH_FORCE_INLINE void
function XXH_FORCE_INLINE (line 5434) | XXH_FORCE_INLINE XXH3_ACCUMULATE_TEMPLATE(neon)
function XXH_FORCE_INLINE (line 5495) | XXH_FORCE_INLINE void
function XXH_FORCE_INLINE (line 5529) | XXH_FORCE_INLINE XXH3_ACCUMULATE_TEMPLATE(vsx)
function XXH_FORCE_INLINE (line 5565) | XXH_FORCE_INLINE void
function XXH_FORCE_INLINE (line 5605) | XXH_FORCE_INLINE void
function XXH_FORCE_INLINE (line 5675) | XXH_FORCE_INLINE void
function XXH_FORCE_INLINE (line 5706) | XXH_FORCE_INLINE XXH3_ACCUMULATE_TEMPLATE(lsx)
function XXH_FORCE_INLINE (line 5754) | XXH_FORCE_INLINE xxh_u64
function XXH_FORCE_INLINE (line 5763) | XXH_FORCE_INLINE xxh_u64
function XXH_FORCE_INLINE (line 5777) | XXH_FORCE_INLINE void
function XXH_FORCE_INLINE (line 5800) | XXH_FORCE_INLINE void
function XXH_FORCE_INLINE (line 5817) | XXH_FORCE_INLINE XXH3_ACCUMULATE_TEMPLATE(scalar)
function XXH_FORCE_INLINE (line 5849) | XXH_FORCE_INLINE void
function XXH_FORCE_INLINE (line 5858) | XXH_FORCE_INLINE void
function XXH_FORCE_INLINE (line 5987) | XXH_FORCE_INLINE void
function XXH_FORCE_INLINE (line 6020) | XXH_FORCE_INLINE xxh_u64
function XXH_PUREF (line 6028) | static XXH_PUREF XXH64_hash_t
function XXH_PUREF (line 6058) | static XXH_PUREF XXH64_hash_t
function XXH_FORCE_INLINE (line 6067) | XXH_FORCE_INLINE XXH64_hash_t
function XXH3_WITH_SECRET_INLINE (line 6090) | XXH3_WITH_SECRET_INLINE XXH64_hash_t
function XXH64_hash_t (line 6104) | XXH64_hash_t
function XXH_FORCE_INLINE (line 6123) | XXH_FORCE_INLINE XXH64_hash_t
function XXH_NO_INLINE (line 6146) | XXH_NO_INLINE XXH64_hash_t
type XXH64_hash_t (line 6156) | typedef XXH64_hash_t (*XXH3_hashLong64_f)(const void* XXH_RESTRICT, size_t,
function XXH_FORCE_INLINE (line 6159) | XXH_FORCE_INLINE XXH64_hash_t
function XXH_PUBLIC_API (line 6185) | XXH_PUBLIC_API XXH64_hash_t XXH3_64bits(XXH_NOESCAPE const void* input, ...
function XXH_PUBLIC_API (line 6191) | XXH_PUBLIC_API XXH64_hash_t
function XXH_PUBLIC_API (line 6198) | XXH_PUBLIC_API XXH64_hash_t
function XXH_PUBLIC_API (line 6204) | XXH_PUBLIC_API XXH64_hash_t
function XXH_MALLOCF (line 6238) | static XXH_MALLOCF void* XXH_alignedMalloc(size_t s, size_t align)
function XXH_alignedFree (line 6269) | static void XXH_alignedFree(void* p)
function XXH_PUBLIC_API (line 6291) | XXH_PUBLIC_API XXH3_state_t* XXH3_createState(void)
function XXH_PUBLIC_API (line 6311) | XXH_PUBLIC_API XXH_errorcode XXH3_freeState(XXH3_state_t* statePtr)
function XXH_PUBLIC_API (line 6318) | XXH_PUBLIC_API void
function XXH3_reset_internal (line 6324) | static void
function XXH_PUBLIC_API (line 6352) | XXH_PUBLIC_API XXH_errorcode
function XXH_PUBLIC_API (line 6361) | XXH_PUBLIC_API XXH_errorcode
function XXH_PUBLIC_API (line 6372) | XXH_PUBLIC_API XXH_errorcode
function XXH_PUBLIC_API (line 6384) | XXH_PUBLIC_API XXH_errorcode
function XXH_FORCE_INLINE (line 6412) | XXH_FORCE_INLINE const xxh_u8 *
function XXH_PUBLIC_API (line 6536) | XXH_PUBLIC_API XXH_errorcode
function XXH_FORCE_INLINE (line 6544) | XXH_FORCE_INLINE void
function XXH_PUBLIC_API (line 6582) | XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_digest (XXH_NOESCAPE const XXH3_...
function XXH128_hash_t (line 6616) | XXH128_hash_t
function XXH128_hash_t (line 6645) | XXH128_hash_t
function XXH128_hash_t (line 6672) | XXH128_hash_t
function XXH128_hash_t (line 6747) | XXH128_hash_t
function XXH_FORCE_INLINE (line 6766) | XXH_FORCE_INLINE XXH128_hash_t
function XXH128_hash_t (line 6778) | XXH128_hash_t
function XXH128_hash_t (line 6822) | XXH128_hash_t
function XXH_PUREF (line 6880) | static XXH_PUREF XXH128_hash_t
function XXH_FORCE_INLINE (line 6891) | XXH_FORCE_INLINE XXH128_hash_t
function XXH128_hash_t (line 6910) | XXH128_hash_t
function XXH3_WITH_SECRET_INLINE (line 6927) | XXH3_WITH_SECRET_INLINE XXH128_hash_t
function XXH_FORCE_INLINE (line 6937) | XXH_FORCE_INLINE XXH128_hash_t
function XXH_NO_INLINE (line 6958) | XXH_NO_INLINE XXH128_hash_t
type XXH128_hash_t (line 6967) | typedef XXH128_hash_t (*XXH3_hashLong128_f)(const void* XXH_RESTRICT, si...
function XXH_FORCE_INLINE (line 6970) | XXH_FORCE_INLINE XXH128_hash_t
function XXH_PUBLIC_API (line 6995) | XXH_PUBLIC_API XXH128_hash_t XXH3_128bits(XXH_NOESCAPE const void* input...
function XXH_PUBLIC_API (line 7003) | XXH_PUBLIC_API XXH128_hash_t
function XXH_PUBLIC_API (line 7012) | XXH_PUBLIC_API XXH128_hash_t
function XXH_PUBLIC_API (line 7021) | XXH_PUBLIC_API XXH128_hash_t
function XXH_PUBLIC_API (line 7030) | XXH_PUBLIC_API XXH128_hash_t
function XXH_PUBLIC_API (line 7045) | XXH_PUBLIC_API XXH_errorcode
function XXH_PUBLIC_API (line 7052) | XXH_PUBLIC_API XXH_errorcode
function XXH_PUBLIC_API (line 7059) | XXH_PUBLIC_API XXH_errorcode
function XXH_PUBLIC_API (line 7066) | XXH_PUBLIC_API XXH_errorcode
function XXH_PUBLIC_API (line 7073) | XXH_PUBLIC_API XXH_errorcode
function XXH_PUBLIC_API (line 7080) | XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_digest (XXH_NOESCAPE const XXH...
function XXH_PUBLIC_API (line 7102) | XXH_PUBLIC_API int XXH128_isEqual(XXH128_hash_t h1, XXH128_hash_t h2)
function XXH_PUBLIC_API (line 7113) | XXH_PUBLIC_API int XXH128_cmp(XXH_NOESCAPE const void* h128_1, XXH_NOESC...
function XXH_PUBLIC_API (line 7126) | XXH_PUBLIC_API void
function XXH_PUBLIC_API (line 7139) | XXH_PUBLIC_API XXH128_hash_t
function XXH_FORCE_INLINE (line 7156) | XXH_FORCE_INLINE void XXH3_combine16(void* dst, XXH128_hash_t h128)
function XXH_PUBLIC_API (line 7163) | XXH_PUBLIC_API XXH_errorcode
function XXH_PUBLIC_API (line 7208) | XXH_PUBLIC_API void
FILE: src/AGLTable.hpp
type HashCodepointPair (line 30) | struct HashCodepointPair {
FILE: src/BasicDVIReader.cpp
type DVICommand (line 42) | struct DVICommand {
FILE: src/BasicDVIReader.hpp
type DVIException (line 30) | struct DVIException : MessageException {
method DVIException (line 31) | explicit DVIException (const std::string &msg) : MessageException(msg) {}
type DVIPrematureEOFException (line 35) | struct DVIPrematureEOFException : DVIException {
method DVIPrematureEOFException (line 36) | explicit DVIPrematureEOFException () : DVIException("premature end of ...
class BasicDVIReader (line 47) | class BasicDVIReader : public StreamReader {
type DVIVersion (line 50) | enum DVIVersion {DVI_NONE=0, DVI_STANDARD=2, DVI_PTEX=3, DVI_XDV5=5, D...
method getXPos (line 58) | virtual double getXPos () const {return 0;}
method getYPos (line 59) | virtual double getYPos () const {return 0;}
method finishLine (line 60) | virtual void finishLine () {}
method translateToX (line 61) | virtual void translateToX (double x) {}
method translateToY (line 62) | virtual void translateToY (double y) {}
method stackDepth (line 63) | virtual int stackDepth () const {return 0;}
method Matrix (line 64) | virtual Matrix getPageTransformation () const {return Matrix(1);}
method currentPageNumber (line 65) | virtual unsigned currentPageNumber () const {return 0;}
method DVIVersion (line 70) | DVIVersion getDVIVersion () const {return _dviVersion;}
FILE: src/Bezier.cpp
function DPair (line 47) | DPair QuadBezier::valueAt (double t) const {
function DPair (line 54) | DPair QuadBezier::derivativeAt (double t) const {
function DPair (line 127) | DPair CubicBezier::valueAt (double t) const {
function DPair (line 134) | DPair CubicBezier::blossomValue (double u, double v, double w) const {
function signed_area (line 202) | static inline double signed_area (const DPair &p1, const DPair &p2, cons...
function dot_prod (line 207) | static inline double dot_prod (const DPair &p1, const DPair &p2) {
function between (line 214) | static bool between (const DPair &p1, const DPair &p2, const DPair &p3, ...
function near (line 226) | static inline bool near (const DPair &p1, const DPair &p2, double delta) {
function QuadBezier (line 271) | QuadBezier CubicBezier::midpointApproximation () const {
function solve_quadratic_equation (line 343) | static bool solve_quadratic_equation (double a, double b, double c, doub...
function BoundingBox (line 363) | BoundingBox CubicBezier::getBBox () const {
function CubicBezier (line 390) | CubicBezier& CubicBezier::transform (const Matrix &matrix) {
FILE: src/Bezier.hpp
class Matrix (line 28) | class Matrix
class QuadBezier (line 30) | class QuadBezier {
method DPair (line 35) | const DPair& point (int i) const {return _points[i];}
class CubicBezier (line 45) | class CubicBezier {
method DPair (line 60) | const DPair& point (int i) const {return _points[i];}
FILE: src/BgColorSpecialHandler.hpp
class BgColorSpecialHandler (line 29) | class BgColorSpecialHandler : public SpecialHandler {
FILE: src/Bitmap.cpp
class BBoxCallback (line 88) | class BBoxCallback : public Bitmap::Callback {
method minx (line 90) | int minx () const {return _minx;}
method miny (line 91) | int miny () const {return _miny;}
method maxx (line 92) | int maxx () const {return _maxx;}
method maxy (line 93) | int maxy () const {return _maxy;}
method empty (line 94) | bool empty () const {return !_changed;}
method pixel (line 96) | void pixel (int x, int y, bool set, const Bitmap&) override {
method finish (line 106) | void finish () override {
function ostream (line 143) | ostream& Bitmap::write (ostream &os) const {
FILE: src/Bitmap.hpp
class Bitmap (line 29) | class Bitmap {
type Callback (line 31) | struct Callback {
method pixel (line 33) | virtual void pixel (int x, int y, bool set, Bitmap &bm) {}
method pixel (line 34) | virtual void pixel (int x, int y, bool set, const Bitmap &bm) {}
method finish (line 35) | virtual void finish () {}
method Bitmap (line 39) | Bitmap () =default;
method height (line 44) | int height () const {return _rows;}
method width (line 45) | int width () const {return _cols;}
method xshift (line 46) | int xshift () const {return _xshift;}
method yshift (line 47) | int yshift () const {return _yshift;}
method bytesPerRow (line 48) | int bytesPerRow () const {return _bpr;}
method empty (line 49) | bool empty () const {return (!_rows && !_cols) || _b...
FILE: src/BoundingBox.cpp
function almost_equal (line 208) | static inline bool almost_equal (double v1, double v2) {
function string (line 248) | string BoundingBox::svgViewBoxString () const {
function ostream (line 255) | ostream& BoundingBox::write (ostream &os) const {
FILE: src/BoundingBox.hpp
class Matrix (line 33) | class Matrix
class XMLElement (line 34) | class XMLElement
type BoundingBoxException (line 37) | struct BoundingBoxException : MessageException {
method BoundingBoxException (line 38) | explicit BoundingBoxException (const std::string &msg) : MessageExcept...
class BoundingBox (line 42) | class BoundingBox {
method embed (line 53) | void embed (const DPair &p) {embed(p.x(), p.y());}
method embed (line 59) | void embed (const Pair<T> &p) {embed(p.x(), p.y());}
method minX (line 63) | double minX () const {return _ulx;}
method minY (line 64) | double minY () const {return _uly;}
method maxX (line 65) | double maxX () const {return _lrx;}
method maxY (line 66) | double maxY () const {return _lry;}
method width (line 67) | double width () const {return _lrx-_ulx;}
method height (line 68) | double height () const {return _lry-_uly;}
method valid (line 69) | bool valid() const {return _valid;}
method locked (line 70) | bool locked() const {return _locked;}
method lock (line 71) | void lock () {_locked = true;}
method unlock (line 72) | void unlock () {_locked = false;}
method invalidate (line 73) | void invalidate () {_valid = false;}
FILE: src/CLCommandLine.cpp
function error (line 61) | static void error (const Option &option, bool shortname, const string &m...
function type_error (line 73) | static void type_error (const Option &option, bool shortname) {
function Option (line 171) | Option* CommandLine::lookupOption (char optchar) const {
FILE: src/CLCommandLine.hpp
type CL (line 32) | namespace CL {
class CommandLine (line 34) | class CommandLine {
method addFilename (line 40) | void addFilename (const std::string &fname) {_files.emplace_back(fna...
method singleDashGiven (line 41) | bool singleDashGiven () const {return _singleDashParsed;}
type CommandLineException (line 62) | struct CommandLineException : MessageException {
method CommandLineException (line 63) | explicit CommandLineException (const std::string &msg) : MessageExce...
FILE: src/CLOption.hpp
type CL (line 28) | namespace CL {
class Option (line 30) | class Option {
type ArgMode (line 33) | enum class ArgMode {NONE, OPTIONAL, REQUIRED}
method Option (line 36) | Option (const char *longname, char shortname, const char *summary)
method typeString (line 40) | virtual std::string typeString () const {return "";}
method ArgMode (line 41) | virtual ArgMode argMode () const {return ArgMode::NONE;}
method given (line 42) | virtual bool given () const {return _given;}
method shortName (line 43) | virtual char shortName () const {return _shortName;}
method longName (line 44) | virtual std::string longName () const {return _longName;}
method summary (line 45) | virtual std::string summary () const {return _summary;}
method argName (line 46) | virtual std::string argName () const {return "";}
method valueString (line 47) | virtual std::string valueString () const {return "";}
method helpline (line 49) | virtual std::string helpline () const {
method parse (line 74) | virtual bool parse (std::istream &is, bool longopt) {
method parseValue (line 84) | virtual bool parseValue (std::istream &is) {
method given (line 88) | bool given (bool val) {return _given = val;}
function T (line 108) | T parseValue (std::istream &is) {
function parseValue (line 115) | inline std::string parseValue (std::istream &is) {
class TypedOption (line 124) | class TypedOption : public Option {
method TypedOption (line 126) | TypedOption (const char *longName, char shortName, const char *argNa...
method TypedOption (line 129) | TypedOption (const char *longName, char shortName, const char *argNa...
method T (line 132) | T value () const {return _value;}
method typeString (line 133) | std::string typeString () const override {return CL::typeString<T>();}
method argName (line 134) | std::string argName() const override {return _argName ? _argName...
method valueString (line 136) | std::string valueString () const override {
method ArgMode (line 142) | ArgMode argMode () const override {return mode;}
method parseValue (line 145) | bool parseValue (std::istream &is) override {
class TypedOption<bool, mode> (line 159) | class TypedOption<bool, mode> : public Option {
method TypedOption (line 161) | TypedOption (const char *longName, char shortName, const char *argNa...
method TypedOption (line 164) | TypedOption (const char *longName, char shortName, const char *argNa...
method value (line 167) | bool value () const {return _value;}
method valueString (line 168) | std::string valueString () const override {return _value ? "yes" : "...
method ArgMode (line 169) | ArgMode argMode () const override {return mode;}
method typeString (line 170) | std::string typeString () const override {return CL::typeString<bool...
method argName (line 171) | std::string argName() const override {return _argName ? _argName...
method parseValue (line 174) | bool parseValue (std::istream &is) override {
FILE: src/CMap.cpp
function FontEncoding (line 36) | const FontEncoding* CMap::findCompatibleBaseFontMap (const PhysicalFont ...
function string (line 59) | string SegmentedCMap::getROString() const {
FILE: src/CMap.hpp
type CMap (line 31) | struct CMap : NamedFontEncoding {
method mapsToCharIndex (line 39) | bool mapsToCharIndex () const override {return mapsToCID();}
method Character (line 41) | Character decode (uint32_t c) const override {
type IdentityCMap (line 49) | struct IdentityCMap : CMap {
method cid (line 50) | uint32_t cid (uint32_t c) const override {return c;}
method bfcode (line 51) | uint32_t bfcode (uint32_t cid) const override {return 0;}
method getROString (line 52) | std::string getROString () const override {return "Adobe-Identity";}
method mapsToCID (line 53) | bool mapsToCID() const override {return true;}
type IdentityHCMap (line 57) | struct IdentityHCMap : IdentityCMap {
method vertical (line 58) | bool vertical () const override {return false;}
type IdentityVCMap (line 63) | struct IdentityVCMap : IdentityCMap {
method vertical (line 64) | bool vertical () const override {return true;}
type UnicodeCMap (line 69) | struct UnicodeCMap : CMap {
method vertical (line 70) | bool vertical () const override {return false;}
method mapsToCID (line 72) | bool mapsToCID () const override {return false;}
method cid (line 74) | uint32_t cid (uint32_t c) const override {return c;}
method bfcode (line 75) | uint32_t bfcode (uint32_t cid) const override {return cid;}
method getROString (line 76) | std::string getROString () const override {return "";}
method mapsToUnicode (line 77) | bool mapsToUnicode () const override {return true;}
class SegmentedCMap (line 81) | class SegmentedCMap : public CMap {
method SegmentedCMap (line 85) | explicit SegmentedCMap (std::string fname) : _filename(std::move(fname...
method vertical (line 92) | bool vertical () const override {return _vertical;}
method mapsToCID (line 93) | bool mapsToCID () const override {return _mapsToCID;}
method numCIDRanges (line 94) | size_t numCIDRanges () const {return _cidranges.numRanges();}
method numBFRanges (line 95) | size_t numBFRanges () const {return _bfranges.numRanges();}
FILE: src/CMapManager.cpp
function CMapManager (line 33) | CMapManager& CMapManager::instance () {
function CMap (line 40) | CMap* CMapManager::lookup (const string &name) {
function CMap (line 95) | const CMap* CMapManager::findCompatibleBaseFontMap (const PhysicalFont *...
FILE: src/CMapManager.hpp
type CMap (line 30) | struct CMap
type FontEncoding (line 31) | struct FontEncoding
class FontEncodingPair (line 32) | class FontEncodingPair
class PhysicalFont (line 33) | class PhysicalFont
class CMapManager (line 35) | class CMapManager
method CMapManager (line 43) | CMapManager () : _level(0) {}
FILE: src/CMapReader.cpp
type Operator (line 84) | struct Operator {
function parse_hexentry (line 143) | static uint32_t parse_hexentry (InputReader &ir) {
FILE: src/CMapReader.hpp
type CMap (line 32) | struct CMap
class InputReader (line 33) | class InputReader
class CMapReader (line 35) | class CMapReader {
class Token (line 36) | class Token {
type Type (line 38) | enum class Type {UNKNOWN, END, DELIM, NUMBER, STRING, NAME, OPERATOR}
method Type (line 43) | Type type () const {return _type;}
method numvalue (line 45) | double numvalue () const {return std::atof(_value.c_str(...
method Token (line 57) | Token popToken () {Token t=_tokens.back(); _tokens.pop_back(); return t;}
type Type (line 38) | enum class Type {UNKNOWN, END, DELIM, NUMBER, STRING, NAME, OPERATOR}
method Type (line 43) | Type type () const {return _type;}
method numvalue (line 45) | double numvalue () const {return std::atof(_value.c_str(...
type CMapReaderException (line 75) | struct CMapReaderException : MessageException {
method CMapReaderException (line 76) | explicit CMapReaderException (const std::string &msg) : MessageExcepti...
FILE: src/Calculator.hpp
type CalculatorException (line 30) | struct CalculatorException : MessageException {
method CalculatorException (line 31) | explicit CalculatorException (const std::string &msg) : MessageExcepti...
class Calculator (line 34) | class Calculator {
method setVariable (line 38) | void setVariable (const std::string &name, double value) {_variables[n...
FILE: src/CharMapID.hpp
type CharMapID (line 27) | struct CharMapID {
method CharMapID (line 28) | CharMapID () noexcept =default;
method CharMapID (line 29) | CharMapID (uint8_t plf_id, uint8_t enc_id) noexcept : platform_id(plf_...
method valid (line 39) | bool valid () const {return platform_id != 0 && encoding_id != 0;}
FILE: src/Character.hpp
class Character (line 26) | class Character {
type Type (line 28) | enum Type {CHRCODE, INDEX, NAME}
method Character (line 29) | explicit Character (const char *name) : _type(NAME), _name(name) {}
method Character (line 30) | Character (Type type, uint32_t val) : _type(type), _number(val) {}
method Character (line 31) | Character (Type type, const Character &c) : _type(type), _number(c.typ...
method Type (line 32) | Type type () const {return _type;}
method number (line 34) | uint32_t number () const {return _number;}
FILE: src/Color.cpp
function double_to_byte (line 40) | inline uint8_t double_to_byte (double v) {
function read_doubles (line 48) | static valarray<double> read_doubles (istream &is, int n) {
type ColorConstant (line 146) | struct ColorConstant {
function Color (line 282) | Color Color::operator *= (double c) {
function string (line 300) | string Color::rgbString () const {
function string (line 324) | string Color::svgColorString (bool rgbonly) const {
function cube (line 677) | inline double cube (double x) {return x*x*x;}
type Cmyk2RgbTable (line 793) | struct Cmyk2RgbTable {
function interpolate_cmyk2rgb (line 814) | static uint32_t interpolate_cmyk2rgb (const valarray<double> &cmyk) {
function get_byte (line 834) | inline uint32_t get_byte (uint32_t value, int n) {
FILE: src/Color.hpp
class Color (line 34) | class Color {
type ColorSpace (line 40) | enum class ColorSpace {GRAY, RGB, CMYK, LAB, TRANSPARENT}
method Color (line 43) | Color () noexcept =default;
method Color (line 44) | explicit Color (uint32_t rgb) noexcept : _value(rgb) {}
method Color (line 45) | Color (uint32_t value, ColorSpace cs) : _value(value), _cspace(cs) {}
method Color (line 46) | Color (uint8_t r, uint8_t g, uint8_t b) noexcept {setRGB(r,g,b);}
method Color (line 47) | Color (double r, double g, double b) noexcept {setRGB(r,g,b);}
method Color (line 48) | explicit Color (const std::valarray<double> &rgb) noexcept {setRGB(rgb);}
method Color (line 56) | Color operator * (double c) const {return Color(*this) *=...
method isTransparent (line 57) | bool isTransparent () const {return _cspace == Colo...
method setRGB (line 60) | void setRGB (const std::valarray<double> &rgb) {setRGB(rgb[0], rgb[1],...
method setGray (line 63) | void setGray (uint8_t g) {setRGB(g,g,g);}
method setGray (line 64) | void setGray (double g) {setRGB(g,g,g);}
method setGray (line 65) | void setGray (const std::valarray<double> &gray) {setRGB(gray[0], gray...
method svgColorString (line 86) | std::string svgColorString () const {return svgColorString(SUPPRESS_CO...
FILE: src/ColorSpecialHandler.cpp
function read_double (line 31) | static double read_double (istream &is) {
function read_doubles (line 45) | static void read_doubles (istream &is, vector<double> &vec) {
function Color (line 60) | Color ColorSpecialHandler::readColor (const string &model, istream &is) {
function Color (line 89) | Color ColorSpecialHandler::readColor (istream &is) {
function Color (line 135) | static Color read_color_and_type (istream &is, char &type) {
FILE: src/ColorSpecialHandler.hpp
class ColorSpecialHandler (line 31) | class ColorSpecialHandler : public SpecialHandler {
type ColorPair (line 33) | struct ColorPair {
method stackSize (line 46) | size_t stackSize () const {return _colorStack.size();}
FILE: src/DLLoader.hpp
class DLLoader (line 33) | class DLLoader {
method DLLoader (line 35) | DLLoader () =delete;
method DLLoader (line 37) | DLLoader (DLLoader &&loader) =default;
method loaded (line 39) | bool loaded () const {return _handle != nullptr;}
function T (line 59) | T DLLoader::loadSymbol (const char *name) const {
FILE: src/DVIActions.hpp
class BoundingBox (line 28) | class BoundingBox
class Font (line 29) | class Font
type DVIActions (line 31) | struct DVIActions {
method reset (line 33) | virtual void reset () {}
method setChar (line 34) | virtual void setChar (double x, double y, unsigned c, bool vertical, c...
method setRule (line 35) | virtual void setRule (double x, double y, double height, double width) {}
method setTextOrientation (line 36) | virtual void setTextOrientation (bool vertical) {}
method moveToX (line 37) | virtual void moveToX (double x, bool forceSVGMove) {}
method moveToY (line 38) | virtual void moveToY (double y, bool forceSVGMove) {}
method setFont (line 39) | virtual void setFont (int num, const Font &font) {}
method special (line 40) | virtual void special (const std::string &s, double dvi2bp, bool prepro...
method beginPage (line 41) | virtual void beginPage (unsigned pageno, const std::vector<int32_t> &c...
method endPage (line 42) | virtual void endPage (unsigned pageno) {}
method progress (line 44) | virtual void progress (size_t current, size_t total, const char *id=nu...
FILE: src/DVIReader.cpp
function parse_font_attribs (line 449) | static map<string,string> parse_font_attribs (const string &str) {
function Font (line 468) | const Font* DVIReader::defineFont (uint32_t fontnum, const string &name,...
function string_width (line 612) | static double string_width (const vector<uint16_t> &glyphs, const Font *...
FILE: src/DVIReader.hpp
class Font (line 33) | class Font
class FontStyle (line 34) | class FontStyle
class HashFunction (line 35) | class HashFunction
class NativeFont (line 36) | class NativeFont
class VirtualFont (line 37) | class VirtualFont
class DVIReader (line 39) | class DVIReader : public BasicDVIReader, public VFActions {
type WritingMode (line 41) | enum class WritingMode {LR=0, TB=1, BT=3}
type SetFontMode (line 42) | enum class SetFontMode {SF_SHORT, SF_LONG, VF_ENTER, VF_LEAVE}
type MoveMode (line 43) | enum class MoveMode {SETCHAR, CHANGEPOS}
type DVIState (line 45) | struct DVIState {
method reset (line 49) | void reset () {h = v = x = w = y = z = 0.0; d=WritingMode::LR;}
method getXPos (line 56) | double getXPos () const override {return _dviState.h;}
method getYPos (line 57) | double getYPos () const override {return _dviState.v;}
method stackDepth (line 58) | int stackDepth () const override {return _stateStack.size();}
method currentPageNumber (line 59) | unsigned currentPageNumber () const override {return _currPageNum;}
method numberOfPages (line 60) | unsigned numberOfPages () const {return _bopOffsets.empty...
method numberOfPageBytes (line 63) | size_t numberOfPageBytes (int n) const {return _bopOffsets.size() > 1 ...
method DVIState (line 71) | const DVIState& dviState() const {return _dviState;}
method reset (line 49) | void reset () {h = v = x = w = y = z = 0.0; d=WritingMode::LR;}
method dvi2bp (line 72) | double dvi2bp () const {return _dvi2bp;}
method inPage (line 73) | bool inPage () const {return _inPage;}
method dviPre (line 84) | virtual void dviPre (uint8_t id, uint32_t numer, uint32_t denom, uint3...
method dviPost (line 85) | virtual void dviPost (uint16_t stdepth, uint16_t pages, uint32_t pw, u...
method dviPostPost (line 86) | virtual void dviPostPost (uint8_t id, uint32_t postOffset) {}
method dviBop (line 87) | virtual void dviBop (const std::vector<int32_t> &c, int32_t prevBopOff...
method dviEop (line 88) | virtual void dviEop () {}
method dviSetChar0 (line 89) | virtual void dviSetChar0 (uint32_t c, const Font *font) {}
method dviSetChar (line 90) | virtual void dviSetChar (uint32_t c, const Font *font) {}
method dviPutChar (line 91) | virtual void dviPutChar (uint32_t c, const Font *font) {}
method dviSetRule (line 92) | virtual void dviSetRule (double h, double w) {}
method dviPutRule (line 93) | virtual void dviPutRule (double h, double w) {}
method dviNop (line 94) | virtual void dviNop () {}
method dviPush (line 95) | virtual void dviPush () {}
method dviPop (line 96) | virtual void dviPop () {}
method dviRight (line 97) | virtual void dviRight (double dx) {}
method dviDown (line 98) | virtual void dviDown (double dy) {}
method dviX0 (line 99) | virtual void dviX0 () {}
method dviY0 (line 100) | virtual void dviY0 () {}
method dviW0 (line 101) | virtual void dviW0 () {}
method dviZ0 (line 102) | virtual void dviZ0 () {}
method dviX (line 103) | virtual void dviX (double x) {}
method dviY (line 104) | virtual void dviY (double y) {}
method dviW (line 105) | virtual void dviW (double w) {}
method dviZ (line 106) | virtual void dviZ (double z) {}
method dviFontDef (line 107) | virtual void dviFontDef (uint32_t fontnum, uint32_t checksum, const Fo...
method dviFontNum (line 108) | virtual void dviFontNum (uint32_t fontnum, SetFontMode mode, const Fon...
method dviDir (line 109) | virtual void dviDir (WritingMode dir) {}
method dviXXX (line 110) | virtual void dviXXX (const std::string &str) {}
method dviXPic (line 111) | virtual void dviXPic (uint8_t box, const std::vector<int32_t> &matrix,...
method dviXFontDef (line 112) | virtual void dviXFontDef (uint32_t fontnum, const NativeFont *font) {}
method dviXGlyphArray (line 113) | virtual void dviXGlyphArray (std::vector<double> &dx, std::vector<doub...
method dviXGlyphString (line 114) | virtual void dviXGlyphString (std::vector<double> &dx, std::vector<uin...
method dviXTextAndGlyphs (line 115) | virtual void dviXTextAndGlyphs (std::vector<double> &dx, std::vector<d...
FILE: src/DVIToSVG.cpp
function create_hash_function (line 144) | static unique_ptr<HashFunction> create_hash_function (const string &algo) {
function Matrix (line 316) | Matrix DVIToSVG::getPageTransformation () const {
function collect_chars (line 337) | static void collect_chars (unordered_map<const Font*, set<int>> &fontmap) {
function extract_prefixes (line 385) | static vector<string> extract_prefixes (const string &ignorelist) {
function FilePath (line 431) | FilePath DVIToSVG::getSVGFilePath (unsigned pageno) const {
FILE: src/DVIToSVG.hpp
type DVIActions (line 31) | struct DVIActions
type SVGOutputBase (line 32) | struct SVGOutputBase
class HashFunction (line 33) | class HashFunction
class DVIToSVG (line 35) | class DVIToSVG : public DVIReader {
class HashSettings (line 37) | class HashSettings {
type Parameter (line 39) | enum Parameter {P_LIST, P_REPLACE}
method setOptionHash (line 41) | void setOptionHash (const std::string &optHash) {_optHash = optHash;}
method isSet (line 44) | bool isSet (Parameter param) {return _params.find(param) != _params....
method DVIToSVG (line 54) | DVIToSVG (const DVIToSVG&) =delete;
method setPageSize (line 56) | void setPageSize (const std::string &format) {_bboxFormatStrin...
method setPageTransformation (line 57) | void setPageTransformation (const std::string &cmds) {_transCmds = cmds;}
method setUserMessage (line 58) | void setUserMessage (const std::string &msg) {_userMessage = m...
method translateToX (line 60) | void translateToX (double x) override {_tx = x-dviState().h-_tx;}
method translateToY (line 61) | void translateToY (double y) override {_ty = y-dviState().v-_ty;}
method getXPos (line 62) | double getXPos() const override {return dviState().h+_tx;}
method getYPos (line 63) | double getYPos() const override {return dviState().v+_ty;}
method finishLine (line 64) | void finishLine () override {_prevYPos = std::numeric_limits...
FILE: src/DVIToSVGActions.cpp
function FilePath (line 62) | FilePath DVIToSVGActions::getSVGFilePath (unsigned pageno) const {
function string (line 70) | string DVIToSVGActions::getBBoxFormatString () const {
function BoundingBox (line 264) | BoundingBox& DVIToSVGActions::bbox (const string& name, bool reset) {
function digits (line 289) | static int digits (int n) {
FILE: src/DVIToSVGActions.hpp
class DVIToSVG (line 34) | class DVIToSVG
class FileFinder (line 35) | class FileFinder
class Font (line 36) | class Font
class XMLNode (line 37) | class XMLNode
class DVIToSVGActions (line 39) | class DVIToSVGActions : public DVIActions, public SpecialActions {
method DVIToSVGActions (line 43) | DVIToSVGActions (DVIToSVG &dvisvg, SVGTree &svg) : _svg(svg), _dviread...
method setFillColor (line 48) | void setFillColor (const Color &color) override {_svg.setFillC...
method setStrokeColor (line 49) | void setStrokeColor (const Color &color) override {_svg.setStrok...
method setMatrix (line 50) | void setMatrix (const Matrix &m) override {_svg.setMatri...
method setOpacity (line 51) | void setOpacity (const Opacity &opacity) override {_svg.setOpaci...
method Opacity (line 52) | const Opacity& getOpacity () const override {return _svg.g...
method Matrix (line 53) | const Matrix& getMatrix () const override {return _svg.g...
method Matrix (line 54) | Matrix getPageTransformation () const override {return _dvire...
method Color (line 55) | Color getFillColor () const override {return _svg.g...
method Color (line 56) | Color getStrokeColor () const override {return _svg.g...
method getDVIStackDepth (line 57) | int getDVIStackDepth () const override {return _dvire...
method getCurrentPageNumber (line 58) | unsigned getCurrentPageNumber () const override {return _dvire...
method setTextOrientation (line 59) | void setTextOrientation (bool vertical) override {_svg.setVerti...
method getX (line 68) | double getX() const override {return _dvireader->getXPos();}
method getY (line 69) | double getY() const override {return _dvireader->getYPos();}
method setX (line 70) | void setX (double x) override {_dvireader->translateToX(x); _svg.setX(...
method setY (line 71) | void setY (double y) override {_dvireader->translateToY(y); _svg.setY(...
method finishLine (line 72) | void finishLine () override {_dvireader->finishLine();}
method lockOutput (line 73) | void lockOutput () override {_outputLocked = true;}
method unlockOutput (line 74) | void unlockOutput () override {_outputLocked = false;}
method outputLocked (line 75) | bool outputLocked () const override {return _outputLocked;}
method SVGTree (line 76) | const SVGTree& svgTree () const override {return _svg;}
method BoundingBox (line 77) | BoundingBox& bbox () override {return _bbox;}
method setDVIReader (line 83) | void setDVIReader (BasicDVIReader &r) {_dvireader = &r;}
FILE: src/Directory.cpp
type stat (line 101) | struct stat
FILE: src/Directory.hpp
class Directory (line 31) | class Directory {
type EntryType (line 33) | enum EntryType {ET_FILE, ET_DIR, ET_FILE_OR_DIR}
type dirent (line 51) | struct dirent
FILE: src/DvisvgmSpecialHandler.cpp
function XMLElement (line 51) | XMLElement* SVGParser::openElement (const std::string &tag) {
function XMLElement (line 76) | XMLElement* SVGParser::finishPushContext (unique_ptr<XMLElement> elem) {
function XMLElement (line 89) | XMLElement* SVGParser::createElementPtr (std::string name) const {
type Command (line 101) | struct Command {
type Command (line 177) | struct Command {
function update_bbox (line 274) | static void update_bbox (Length w, Length h, Length d, bool transform, S...
function Length (line 289) | static Length read_length (InputReader &ir) {
function string (line 362) | inline string filename_suffix (const string &fname) {
FILE: src/DvisvgmSpecialHandler.hpp
class InputReader (line 31) | class InputReader
class SpecialActions (line 32) | class SpecialActions
class SVGElement (line 33) | class SVGElement
class SVGTree (line 34) | class SVGTree
class XMLElement (line 35) | class XMLElement
class XMLNode (line 36) | class XMLNode
class SVGParser (line 46) | class SVGParser : public XMLParser {
method SVGParser (line 52) | SVGParser () : XMLParser() {}
class DvisvgmSpecialHandler (line 70) | class DvisvgmSpecialHandler : public SpecialHandler {
FILE: src/EPSFile.cpp
function getUInt32 (line 33) | static uint32_t getUInt32 (istream &is) {
function getline (line 43) | static size_t getline (istream &is, char *line, size_t n) {
function istream (line 80) | istream& EPSFile::istream () const {
function BoundingBox (line 89) | BoundingBox EPSFile::bbox () const {
FILE: src/EPSFile.hpp
class EPSFile (line 29) | class EPSFile {
method hasValidHeader (line 33) | bool hasValidHeader () const {return _headerValid;}
method pslength (line 35) | uint32_t pslength () const {return _pslength;}
FILE: src/EPSToSVG.hpp
class PsSpecialHandler (line 27) | class PsSpecialHandler
class EPSToSVG (line 29) | class EPSToSVG : public ImageToSVG {
method EPSToSVG (line 31) | EPSToSVG (const std::string &fname, SVGOutputBase &out) : ImageToSVG(f...
method isSinglePageFormat (line 32) | bool isSinglePageFormat() const override {return true;}
method totalPageCount (line 33) | int totalPageCount() const override {return 1;}
method imageFormat (line 36) | std::string imageFormat () const override {return "EPS";}
method imageIsValid (line 37) | bool imageIsValid () const override {return EPSFile(filename()).hasVal...
method BoundingBox (line 38) | BoundingBox imageBBox () const override {return EPSFile(filename()).bb...
method psSpecialCmd (line 39) | std::string psSpecialCmd () const override {return "psfile=";}
FILE: src/EllipticalArc.cpp
function angle (line 82) | static inline double angle (const DPair &p) {
function CubicBezier (line 159) | static CubicBezier approx_unit_arc (double phi, double delta) {
function is_angle_between (line 207) | static inline bool is_angle_between (double t, double angle1, double ang...
function BoundingBox (line 215) | BoundingBox EllipticalArc::getBBox () const {
FILE: src/EllipticalArc.hpp
class EllipticalArc (line 28) | class EllipticalArc {
type CenterParams (line 30) | struct CenterParams {
method rx (line 40) | double rx () const {return _rx;}
method ry (line 41) | double ry () const {return _ry;}
method largeArc (line 42) | bool largeArc () const {return _largeArc;}
method sweepPositive (line 43) | bool sweepPositive () const {return _sweepPositive;}
method rotationAngle (line 44) | double rotationAngle () const {return _rotationAngle;}
method DPair (line 45) | DPair startPoint () const {return _startPoint;}
method DPair (line 46) | DPair endPoint () const {return _endPoint;}
method isStraightLine (line 47) | bool isStraightLine () const {return _rx < 1e-7 || _ry < 1e-7;}
FILE: src/EmSpecialHandler.cpp
function DPair (line 43) | static DPair cut_vector (char cuttype, const DPair &linedir, double line...
function create_line (line 76) | static void create_line (const DPair &p1, const DPair &p2, char c1, char...
function read_length (line 126) | static double read_length (InputReader &in) {
type Command (line 157) | struct Command {
FILE: src/EmSpecialHandler.hpp
class InputReader (line 29) | class InputReader
class SpecialActions (line 30) | class SpecialActions
class EmSpecialHandler (line 32) | class EmSpecialHandler : public SpecialHandler {
type Line (line 33) | struct Line {
method Line (line 34) | Line (int pp1, int pp2, char cc1, char cc2, double w) : p1(pp1), p2(...
FILE: src/EncFile.cpp
function string (line 98) | static string read_entry (InputReader &in) {
function valid_name_char (line 119) | static bool valid_name_char (int c) {
FILE: src/EncFile.hpp
class EncFile (line 31) | class EncFile : public NamedFontEncoding {
method size (line 36) | int size () const {return _table.size();}
method Character (line 39) | Character decode (uint32_t c) const override {return Character(charNam...
method mapsToCharIndex (line 40) | bool mapsToCharIndex () const override {return false;}
FILE: src/FileFinder.cpp
function FileFinder (line 76) | FileFinder& FileFinder::instance () {
FILE: src/FileFinder.hpp
class MiKTeXCom (line 28) | class MiKTeXCom
class FileFinder (line 30) | class FileFinder {
FILE: src/FilePath.cpp
function string (line 31) | static string& single_slashes (string &str) {
function drive_letter (line 41) | static char drive_letter (const string &path) {
function strip_drive_letter (line 50) | static char strip_drive_letter (string &path) {
function string (line 165) | string FilePath::suffix () const {
function string (line 195) | string FilePath::basename () const {
function string (line 209) | string FilePath::absolute (bool with_filename) const {
function string (line 232) | string FilePath::relative (string reldir, bool with_filename) const {
function string (line 275) | string FilePath::relative (const FilePath &filepath, bool with_filename)...
function string (line 283) | string FilePath::shorterAbsoluteOrRelative (string reldir, bool with_fil...
FILE: src/FilePath.hpp
class FilePath (line 28) | class FilePath {
class Directory (line 29) | class Directory {
method Directory (line 31) | explicit Directory (std::string dir) : _dirstr(std::move(dir)) {}
method Directory (line 32) | explicit Directory (std::string &&dir) : _dirstr(std::move(dir)) {}
type PathType (line 42) | enum PathType {PT_DIR, PT_FILE}
method FilePath (line 45) | FilePath () =default;
method FilePath (line 46) | explicit FilePath (const std::string &path) {set(path);}
method FilePath (line 47) | FilePath (const std::string &path, PathType type) : FilePath(path, typ...
method depth (line 59) | size_t depth () const {return _dirs.size();}
method isFile (line 60) | bool isFile () const {return !_fname.empty();}
method empty (line 61) | bool empty () const {return _dirs.empty() && _fna...
method filename (line 63) | void filename (const std::string &fname) {_fname = fname;}
FILE: src/FileSystem.cpp
function s_mkdir (line 62) | static bool s_mkdir (const string &dirname) {
function s_rmdir (line 75) | static bool inline s_rmdir (const string &dirname) {
type stat (line 124) | struct stat
function string (line 130) | string FileSystem::ensureForwardSlashes (string path) {
function string (line 138) | string FileSystem::ensureSystemSlashes (string path) {
function string (line 147) | string FileSystem::getcwd () {
function string (line 165) | string FileSystem::getcwd (char drive) {
type passwd (line 209) | struct passwd
function string (line 220) | string FileSystem::tmpdir (bool inplace) {
type dirent (line 296) | struct dirent
type stat (line 325) | struct stat
type stat (line 340) | struct stat
type stat (line 355) | struct stat
type dirent (line 381) | struct dirent
FILE: src/FileSystem.hpp
class FileSystem (line 28) | class FileSystem {
class TemporaryDirectory (line 29) | class TemporaryDirectory {
method TemporaryDirectory (line 33) | TemporaryDirectory (TemporaryDirectory &&tmpdir) =default;
method TemporaryDirectory (line 35) | TemporaryDirectory& operator = (TemporaryDirectory &&tmpdir) =default;
method TemporaryDirectory (line 39) | TemporaryDirectory () =default;
method FileSystem (line 70) | FileSystem () =default;
FILE: src/FixWord.hpp
class FixWord (line 26) | class FixWord {
method FixWord (line 28) | FixWord () =default;
method FixWord (line 29) | FixWord (int32_t fw) : _value(fw) {}
FILE: src/Font.cpp
function FontEncoding (line 48) | const FontEncoding* Font::encoding () const {
function FontMetrics (line 110) | const FontMetrics* TFMFont::getMetrics () const {
function Character (line 218) | Character PhysicalFont::decodeChar (uint32_t c) const {
function string (line 270) | string PhysicalFont::glyphName (int c) const {
function FontEncoding (line 503) | const FontEncoding* PhysicalFontImpl::encoding () const {
function FontStyle (line 564) | const FontStyle* PhysicalFontImpl::style () const {
function string (line 584) | string NativeFont::uniqueName (const string &path, const FontStyle &styl...
function string (line 600) | string NativeFont::name () const {
function Character (line 683) | Character NativeFontImpl::decodeChar (uint32_t c) const {
FILE: src/Font.hpp
type FontStyle (line 45) | struct FontStyle
type GlyphMetrics (line 47) | struct GlyphMetrics {
method GlyphMetrics (line 48) | GlyphMetrics () : wl(0), wr(0), h(0), d(0) {}
method GlyphMetrics (line 49) | GlyphMetrics (double wwl, double wwr, double hh, double dd) : wl(wwl),...
type FontVisitor (line 53) | struct FontVisitor
method visited (line 423) | virtual void visited (const PhysicalFont *font) {}
method visited (line 424) | virtual void visited (const VirtualFont *font) {}
method visited (line 425) | virtual void visited (const NativeFont *font) {visited(static_cast<con...
method visited (line 426) | virtual void visited (PhysicalFont *font) {}
method visited (line 427) | virtual void visited (VirtualFont *font) {}
method visited (line 428) | virtual void visited (NativeFont *font) {visited(static_cast<PhysicalF...
class Font (line 56) | class Font {
method scaleFactor (line 64) | virtual double scaleFactor () const {return scaledSize()/designSiz...
method tidy (line 76) | virtual void tidy () const {}
method findAndAssignBaseFontMap (line 77) | virtual bool findAndAssignBaseFontMap () {return true;}
method verticalLayout (line 78) | virtual bool verticalLayout () const {return getMetrics() != nullp...
method verifyChecksums (line 79) | virtual bool verifyChecksums () const {return true;}
method fontIndex (line 80) | virtual int fontIndex () const {return 0;}
method FontStyle (line 81) | virtual const FontStyle* style () const {return nullptr;}
method Color (line 82) | virtual Color color () const {return Color::BLACK;}
class EmptyFont (line 92) | class EmptyFont : public Font {
method EmptyFont (line 94) | explicit EmptyFont (std::string name) : _fontname(std::move(name)) {}
method clone (line 95) | std::unique_ptr<Font> clone (double ds, double sc) const override {re...
method Font (line 96) | const Font* uniqueFont () const override {return this;}
method name (line 97) | std::string name () const override {return _fontname;}
method designSize (line 98) | double designSize () const override {return 10;}
method scaledSize (line 99) | double scaledSize () const override {return 10;}
method charWidth (line 100) | double charWidth (int c) const override {return 9.164;}
method charHeight (line 101) | double charHeight (int c) const override {return 6.833;}
method charDepth (line 102) | double charDepth (int c) const override {return 0;}
method italicCorr (line 103) | double italicCorr (int c) const override {return 0;}
method FontMetrics (line 104) | const FontMetrics* getMetrics () const override {return nullptr;}
method getGlyph (line 106) | bool getGlyph (int c, Glyph &glyph, GFGlyphTracer::Callback*) const ov...
method visit (line 107) | void visit (FontVisitor &visitor) override {}
method visit (line 108) | void visit (FontVisitor &visitor) const override {}
class PhysicalFont (line 116) | class PhysicalFont : public virtual Font {
type Type (line 118) | enum class Type {MF, OTF, PFB, TTC, TTF, UNKNOWN}
method setCharMapID (line 140) | virtual void setCharMapID (const CharMapID &id) {}
class VirtualFont (line 162) | class VirtualFont : public virtual Font {
method getGlyph (line 170) | bool getGlyph (int c, Glyph &glyph, GFGlyphTracer::Callback*) const ov...
class TFMFont (line 179) | class TFMFont : public virtual Font {
method name (line 183) | std::string name () const override {return _fontname;}
method designSize (line 184) | double designSize () const override {return _dsize;}
method scaledSize (line 185) | double scaledSize () const override {return _ssize;}
class PhysicalFontRef (line 201) | class PhysicalFontRef : public PhysicalFont {
method clone (line 204) | std::unique_ptr<Font> clone (double ds, double sc) const override {
method Font (line 208) | const Font* uniqueFont () const override {return _pf;}
method name (line 209) | std::string name () const override {return _pf->name...
method designSize (line 210) | double designSize () const override {return _dsize;}
method scaledSize (line 211) | double scaledSize () const override {return _ssize;}
method charWidth (line 212) | double charWidth (int c) const override {return _pf->char...
method charDepth (line 213) | double charDepth (int c) const override {return _pf->char...
method charHeight (line 214) | double charHeight (int c) const override {return _pf->char...
method italicCorr (line 215) | double italicCorr (int c) const override {return _pf->ital...
method FontMetrics (line 216) | const FontMetrics* getMetrics () const override {return _pf->getM...
method Type (line 217) | Type type () const override {return _pf->type...
method unicode (line 218) | uint32_t unicode (uint32_t c) const override {return _pf->unic...
method fontIndex (line 219) | int fontIndex () const override {return _pf->font...
method FontStyle (line 220) | const FontStyle* style () const override {return _pf->styl...
method FontEncoding (line 222) | const FontEncoding* encoding () const override {return _pf->enco...
method CharMapID (line 223) | CharMapID getCharMapID () const override {return _pf->getC...
method collectCharMapIDs (line 224) | int collectCharMapIDs (std::vector<CharMapID> &charmapIDs) const overr...
method PhysicalFontRef (line 227) | PhysicalFontRef (const PhysicalFont *font, double ds, double ss) : _pf...
method PhysicalFontRef (line 228) | PhysicalFontRef (const PhysicalFontRef &ref, double ds, double ss) : _...
class PhysicalFontImpl (line 237) | class PhysicalFontImpl : public PhysicalFont, public TFMFont {
method clone (line 242) | std::unique_ptr<Font> clone (double ds, double ss) const override {
method Font (line 246) | const Font* uniqueFont () const override {return this;}
method Type (line 247) | Type type () const override {return _filetype;}
method fontIndex (line 248) | int fontIndex() const override {return _fontIndex;}
method CharMapID (line 254) | CharMapID getCharMapID () const override {return _charmapID;}
class NativeFont (line 268) | class NativeFont : public PhysicalFont {
method NativeFont (line 274) | const NativeFont* uniqueFont () const override {return this;}
method designSize (line 275) | double designSize () const override {return _ptsize;}
method scaledSize (line 276) | double scaledSize () const override {return _ptsize;}
method FontMetrics (line 283) | const FontMetrics* getMetrics () const override {return nullptr;}
method FontStyle (line 284) | const FontStyle* style () const override {return &_style;}
method Color (line 285) | Color color () const override {return _color;}
method NativeFont (line 293) | NativeFont (double ptsize, const FontStyle &style, Color color) : _pts...
class NativeFontRef (line 304) | class NativeFontRef : public NativeFont {
method clone (line 307) | std::unique_ptr<NativeFont> clone (double ptsize, const FontStyle &sty...
method clone (line 311) | std::unique_ptr<Font> clone (double ds, double sc) const override {
method NativeFont (line 315) | const NativeFont* uniqueFont () const override {return _nfont;}
method fontIndex (line 317) | int fontIndex () const override {return _nfont->font...
method Character (line 318) | Character decodeChar (uint32_t c) const override {return _nfont->deco...
method unicode (line 319) | uint32_t unicode (uint32_t c) const override {return _nfont->unic...
method CharMapID (line 320) | CharMapID getCharMapID () const override {return _nfont->getC...
method verticalLayout (line 321) | bool verticalLayout() const override {return _nfont->vert...
method name (line 322) | std::string name () const override {return _nfont->name...
method mapCharToUnicode (line 324) | void mapCharToUnicode (uint32_t c, uint32_t codepoint) override {
method NativeFontRef (line 329) | NativeFontRef (const NativeFont *nfont, double ptsize, const FontStyle...
class NativeFontImpl (line 337) | class NativeFontImpl : public NativeFont {
method NativeFontImpl (line 339) | NativeFontImpl (std::string fname, int fontIndex, double ptsize, const...
method clone (line 344) | std::unique_ptr<NativeFont> clone (double ptsize, const FontStyle &sty...
method clone (line 348) | std::unique_ptr<Font> clone (double ds, double sc) const override {
method fontIndex (line 353) | int fontIndex () const override {return _fontIndex;}
method name (line 354) | std::string name () const override {return _name.empty(...
method CharMapID (line 356) | CharMapID getCharMapID () const override {return CharMapID::N...
class VirtualFontRef (line 370) | class VirtualFontRef : public VirtualFont {
method clone (line 373) | std::unique_ptr<Font> clone (double ds, double ss) const override {
method Font (line 377) | const Font* uniqueFont () const override {return _vf;}
method name (line 378) | std::string name () const override {return _vf->name();}
method DVIVector (line 379) | const DVIVector* getDVI (int c) const override {return _vf->getDVI(...
method designSize (line 380) | double designSize () const override {return _dsize;}
method scaledSize (line 381) | double scaledSize () const override {return _ssize;}
method charWidth (line 382) | double charWidth (int c) const override {return _vf->charWid...
method charDepth (line 383) | double charDepth (int c) const override {return _vf->charDep...
method charHeight (line 384) | double charHeight (int c) const override {return _vf->charHei...
method italicCorr (line 385) | double italicCorr (int c) const override {return _vf->italicC...
method FontMetrics (line 386) | const FontMetrics* getMetrics () const override {return _vf->getMetr...
method VirtualFontRef (line 390) | VirtualFontRef (const VirtualFont *font, double ds, double ss) : _vf(f...
method VirtualFontRef (line 391) | VirtualFontRef (const VirtualFontRef &ref, double ds, double ss) : _vf...
method assignChar (line 392) | void assignChar (uint32_t c, DVIVector dvi) override {}
class VirtualFontImpl (line 401) | class VirtualFontImpl : public VirtualFont, public TFMFont {
method clone (line 404) | std::unique_ptr<Font> clone (double ds, double ss) const override {
method Font (line 408) | const Font* uniqueFont () const override {return this;}
type FontVisitor (line 421) | struct FontVisitor {
method visited (line 423) | virtual void visited (const PhysicalFont *font) {}
method visited (line 424) | virtual void visited (const VirtualFont *font) {}
method visited (line 425) | virtual void visited (const NativeFont *font) {visited(static_cast<con...
method visited (line 426) | virtual void visited (PhysicalFont *font) {}
method visited (line 427) | virtual void visited (VirtualFont *font) {}
method visited (line 428) | virtual void visited (NativeFont *font) {visited(static_cast<PhysicalF...
function C (line 437) | C font_cast (typename util::set_const_of<Font>::by<typename std::remove_...
type FontException (line 448) | struct FontException : MessageException {
method FontException (line 449) | explicit FontException (const std::string &msg) : MessageException(msg...
FILE: src/FontCache.cpp
function Pair32 (line 37) | static Pair32 read_pair (int bytes, StreamReader &sr) {
function Glyph (line 63) | const Glyph* FontCache::getGlyph (int c) const {
function max_number_of_bytes (line 94) | static int max_number_of_bytes (int32_t value) {
function max_int_size (line 104) | static int max_int_size () {
function max_int_size (line 109) | static int max_int_size (const Glyph::Point &p1, const Args& ...args) {
type WriteActions (line 115) | struct WriteActions : Glyph::IterationActions {
method WriteActions (line 116) | WriteActions (StreamWriter &sw, HashFunction &hashfunc) : _sw(sw), _ha...
method moveto (line 119) | void moveto (const Point &p) override {write('M', p);}
method lineto (line 120) | void lineto (const Point &p) override {write('L', p);}
method quadto (line 121) | void quadto (const Point &p1, const Point &p2) override {write('Q', p1...
method cubicto (line 122) | void cubicto (const Point &p1, const Point &p2, const Point &p3) overr...
method closepath (line 123) | void closepath () override {write('Z');}
method write (line 126) | void write (char cmd, Args ...args) {
method writeParams (line 133) | static void writeParams (int bytesPerValue) {}
method writeParams (line 136) | void writeParams (int bytesPerValue, const Point &p, const Args& ...ar...
FILE: src/FontCache.hpp
class FontCache (line 30) | class FontCache {
type FontInfo (line 32) | struct FontInfo {
FILE: src/FontEncoding.cpp
function FontEncoding (line 33) | FontEncoding* FontEncoding::encoding (const string &encname) {
function Character (line 55) | Character FontEncodingPair::decode (uint32_t c) const {
function FontEncoding (line 84) | const FontEncoding* FontEncodingPair::findCompatibleBaseFontMap (const P...
FILE: src/FontEncoding.hpp
type CharMapID (line 28) | struct CharMapID
class PhysicalFont (line 29) | class PhysicalFont
type FontEncoding (line 31) | struct FontEncoding {
method mapsToUnicode (line 35) | virtual bool mapsToUnicode () const {return false;}
method FontEncoding (line 36) | virtual const FontEncoding* findCompatibleBaseFontMap (const PhysicalF...
type NamedFontEncoding (line 41) | struct NamedFontEncoding : FontEncoding {
class FontEncodingPair (line 47) | class FontEncodingPair : public FontEncoding {
method FontEncodingPair (line 49) | explicit FontEncodingPair (const FontEncoding *enc1) : _enc1(enc1), _e...
method FontEncodingPair (line 50) | FontEncodingPair (const FontEncoding *enc1, const FontEncoding *enc2) ...
method FontEncoding (line 55) | const FontEncoding* enc1 () const {return _enc1;}
method FontEncoding (line 56) | const FontEncoding* enc2 () const {return _enc2;}
FILE: src/FontEngine.cpp
function FT_Fixed (line 42) | static inline FT_Fixed to_16dot16 (double val) {
function FT_Fixed (line 48) | static inline FT_Fixed to_16dot16 (int val) {
function FontEngine (line 71) | FontEngine& FontEngine::instance () {
function string (line 77) | string FontEngine::version () {
function RangeMap (line 159) | RangeMap FontEngine::buildGidToUnicodeMap () const {
function RangeMap (line 217) | static RangeMap build_charcode_to_gid_map (FT_Face face, set<uint32_t> &...
function RangeMap (line 237) | static RangeMap build_gid_to_unicode_map (FT_Face face, set<uint32_t> &g...
function string (line 338) | string FontEngine::getPSName (const string &fname) const {
function string (line 460) | string FontEngine::getGlyphName (const Character &c) const {
function CharMapID (line 497) | CharMapID FontEngine::setUnicodeCharMap () const {
function CharMapID (line 504) | CharMapID FontEngine::setCustomCharMap () const {
function moveto (line 520) | static int moveto (FTVectorPtr to, void *user) {
function lineto (line 527) | static int lineto (FTVectorPtr to, void *user) {
function quadto (line 534) | static int quadto (FTVectorPtr control, FTVectorPtr to, void *user) {
function cubicto (line 541) | static int cubicto (FTVectorPtr control1, FTVectorPtr control2, FTVector...
function trace_outline (line 557) | static bool trace_outline (FT_Face face, const Font *font, int index, Gl...
FILE: src/FontEngine.hpp
class Font (line 37) | class Font
class FontEngine (line 41) | class FontEngine {
method Font (line 48) | const Font* currentFont () const {return _currentFont;}
FILE: src/FontManager.cpp
function FontManager (line 40) | FontManager& FontManager::instance () {
function Font (line 122) | Font* FontManager::vfFirstFont (const VirtualFont *vf) const {
function Font (line 131) | Font* FontManager::getFont (int n) const {
function Font (line 137) | Font* FontManager::getFont (const string &name) const {
function Font (line 145) | Font* FontManager::getFont (const string &name, double ptsize) {
function Font (line 153) | Font* FontManager::getFontById (int id) const {
function VirtualFont (line 173) | const VirtualFont* FontManager::getVF () const {
function create_font (line 178) | static unique_ptr<Font> create_font (const string &filename, const strin...
function ostream (line 410) | ostream& FontManager::write (ostream &os, Font *font, int level) {
FILE: src/FontManager.hpp
class FileFinder (line 36) | class FileFinder
class Font (line 37) | class Font
class VirtualFont (line 38) | class VirtualFont
class FontManager (line 45) | class FontManager {
method CharMap (line 79) | CharMap& getUsedChars () {return _usedChars;}
method FontSet (line 80) | FontSet& getUsedFonts () {return _usedFonts;}
method FontManager (line 84) | FontManager () =default;
FILE: src/FontMap.cpp
function FontMap (line 40) | FontMap& FontMap::instance() {
function ostream (line 317) | ostream& FontMap::write (ostream &os) const {
FILE: src/FontMap.hpp
class FilePath (line 33) | class FilePath
type FontEncoding (line 34) | struct FontEncoding
class Subfont (line 35) | class Subfont
class FontMap (line 37) | class FontMap {
type Entry (line 39) | struct Entry {
method Entry (line 41) | Entry (const Entry &entry) =delete;
method Entry (line 42) | Entry (Entry &&entry) =default;
method Entry (line 43) | Entry& operator = (Entry &&entry) =default;
type Mode (line 53) | enum class Mode {APPEND, REMOVE, REPLACE}
type FirstIncludeMode (line 54) | enum class FirstIncludeMode {OFF, ACTIVE, DONE}
method FontMap (line 72) | FontMap () =default;
class FontMapException (line 81) | class FontMapException : public MapLineException {
type Cause (line 83) | enum class Cause {UNSPECIFIED, FILE_ACCESS_ERROR}
method FontMapException (line 85) | FontMapException (const std::string &msg, Cause cause) : MapLineExcept...
method FontMapException (line 86) | explicit FontMapException (const std::string &msg) : FontMapException(...
method Cause (line 87) | Cause cause () const {return _cause;}
FILE: src/FontMetrics.cpp
function read_uint16 (line 31) | static inline uint16_t read_uint16 (istream &is) {
FILE: src/FontMetrics.hpp
type FontMetrics (line 30) | struct FontMetrics {
method read (line 32) | virtual void read (std::istream &is) {}
method isJFM (line 48) | virtual bool isJFM () const {return false;}
method isOFM (line 49) | virtual bool isOFM () const {return false;}
type NullFontMetrics (line 54) | struct NullFontMetrics : FontMetrics {
method getDesignSize (line 55) | double getDesignSize () const override {return 1;}
method getCharWidth (line 56) | double getCharWidth (int c) const override {return 0;}
method getCharHeight (line 57) | double getCharHeight (int c) const override {return 0;}
method getCharDepth (line 58) | double getCharDepth (int c) const override {return 0;}
method getItalicCorr (line 59) | double getItalicCorr (int c) const override {return 0;}
method getSpace (line 60) | double getSpace () const override {return 0;}
method getSpaceStretch (line 61) | double getSpaceStretch () const override {return 0;}
method getSpaceShrink (line 62) | double getSpaceShrink () const override {return 0;}
method getQuad (line 63) | double getQuad () const override {return 0;}
method getAscent (line 64) | double getAscent () const override {return 0;}
method getDescent (line 65) | double getDescent () const override {return 0;}
method verticalLayout (line 66) | bool verticalLayout () const override {return false;}
method getChecksum (line 67) | uint32_t getChecksum () const override {return 0;}
method firstChar (line 68) | uint32_t firstChar () const override {return 0;}
method lastChar (line 69) | uint32_t lastChar () const override {return 0;}
type FontMetricException (line 73) | struct FontMetricException : MessageException {
method FontMetricException (line 74) | explicit FontMetricException (const std::string &msg) : MessageExcepti...
FILE: src/FontStyle.hpp
type FontStyle (line 24) | struct FontStyle {
method FontStyle (line 25) | FontStyle () =default;
method FontStyle (line 26) | FontStyle (float b, float e, float s) : bold(b), extend(e), slant(s) {}
FILE: src/FontWriter.cpp
function string (line 135) | string FontWriter::createFontFile (FontFormat format, const set<int> &ch...
FILE: src/FontWriter.hpp
class PhysicalFont (line 31) | class PhysicalFont
class FontWriter (line 33) | class FontWriter {
type FontFormat (line 35) | enum class FontFormat {UNKNOWN, SVG, TTF, WOFF, WOFF2}
method FontWriter (line 39) | explicit FontWriter (const PhysicalFont &font) : _font(font) {}
type FontFormatInfo (line 46) | struct FontFormatInfo {
type FontWriterException (line 61) | struct FontWriterException : MessageException {
method FontWriterException (line 62) | explicit FontWriterException (const std::string &msg) : MessageExcepti...
FILE: src/GFGlyphTracer.hpp
class GFGlyphTracer (line 29) | class GFGlyphTracer : public GFTracer {
type Callback (line 31) | struct Callback {
method setFont (line 33) | virtual void setFont (const std::string &fontname) {}
method beginChar (line 34) | virtual void beginChar (uint8_t c) {}
method endChar (line 35) | virtual void endChar (uint8_t c) {}
Copy disabled (too large)
Download .json
Condensed preview — 622 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,052K chars).
[
{
"path": "AUTHORS",
"chars": 504,
"preview": "Martin Gieseking <martin.gieseking@uos.de>\n\tauthor of dvisvgm\n\nYann Collet\n\tlibs/xxHash/xxhash.*\n\thttps://github.com/Cya"
},
{
"path": "COPYING",
"chars": 35147,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "INSTALL",
"chars": 9236,
"preview": "Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software\nFoundation, Inc.\n\n This file is free documentation; t"
},
{
"path": "Makefile.am",
"chars": 819,
"preview": "## This file is part of dvisvgm\n## Copyright (C) 2005-2025 Martin Gieseking <martin.gieseking@uos.de>\n##\n## Process this"
},
{
"path": "NEWS",
"chars": 48755,
"preview": "dvisvgm-3.6 (2025-12-08)\n- removed the restriction to process PDF-1.x files only (GH issue #291)\n- option --page: added "
},
{
"path": "README",
"chars": 5488,
"preview": "dvisvgm -- A DVI to SVG converter\n\nDESCRIPTION\n\n dvisvgm is a utility for TeX/LaTeX users. It converts DVI, EPS, and\n PD"
},
{
"path": "README.md",
"chars": 9818,
"preview": "_dvisvgm_ – A fast DVI to SVG converter\n=============================================\n[ 2005-2025 Martin Gieseking <martin.gieseking@uos.de>\n#\n# Process this fil"
},
{
"path": "doc/Makefile.am",
"chars": 3692,
"preview": "## This file is part of dvisvgm\n## Copyright (C) 2005-2025 Martin Gieseking <martin.gieseking@uos.de>\n##\n## Process this"
},
{
"path": "doc/conf-dblatex-man.xsl",
"chars": 1031,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- This file is part of dvisvgm -->\n<!-- Copyright (C) 2015-2025 Martin Gieseki"
},
{
"path": "doc/conf-dblatex-pdf.xsl",
"chars": 2718,
"preview": "<?xml version='1.0' encoding=\"iso-8859-1\"?>\n<!-- This file is part of dvisvgm -->\n<!-- Copyright (C) 2015-2025 Martin Gi"
},
{
"path": "doc/dvisvgm.txt.in",
"chars": 73392,
"preview": "//////////////////////////////////////////////////////////////////////////\n// This file is part of dvisvgm -- a fast DVI"
},
{
"path": "doc/generate-dvisvgm-sty.xsl",
"chars": 840,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">\n "
},
{
"path": "doc/tweak-db-article.xsl",
"chars": 1046,
"preview": "<?xml version=\"1.0\"?>\n<!-- This file is part of dvisvgm -->\n<!-- Copyright (C) 2015-2025 Martin Gieseking <martin.giesek"
},
{
"path": "doc/tweak-db-refentry.xsl",
"chars": 1783,
"preview": "<?xml version=\"1.0\"?>\n<!-- This file is part of dvisvgm -->\n<!-- Copyright (C) 2015-2025 Martin Gieseking <martin.giesek"
},
{
"path": "doc/tweak-dblatex-pdf.xsl",
"chars": 1078,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- This file is part of dvisvgm -->\n<!-- Copyright (C) 2015-2025 Martin Gieseki"
},
{
"path": "doc/tweak-dblatex-tex.py",
"chars": 717,
"preview": "import re\nimport os\n\ndef main (latex_file, stdout):\n latex_file_old = latex_file+\"-old\"\n os.rename(latex_file, lat"
},
{
"path": "libs/Makefile.am",
"chars": 275,
"preview": "## This file is part of dvisvgm\n## Copyright (C) 2005-2025 Martin Gieseking <martin.gieseking@uos.de>\n##\n## Process this"
},
{
"path": "libs/boost/LICENSE.txt",
"chars": 1338,
"preview": "Boost Software License - Version 1.0 - August 17th, 2003\n\nPermission is hereby granted, free of charge, to any person or"
},
{
"path": "libs/boost/Makefile.am",
"chars": 89,
"preview": "noinst_HEADERS = \\\n\tboost-vectorstream.hpp \\\n\tvectorstream.hpp\n\nEXTRA_DIST = LICENSE.txt\n"
},
{
"path": "libs/boost/boost-vectorstream.hpp",
"chars": 25572,
"preview": "//////////////////////////////////////////////////////////////////////////////\n//\n// (C) Copyright Ion Gaztanaga 2005-20"
},
{
"path": "libs/boost/vectorstream.hpp",
"chars": 479,
"preview": "#pragma once\n\n#ifndef BOOST_OVERRIDE\n#define BOOST_OVERRIDE override\n#endif\n\n#ifndef BOOST_ASSERT\n#define BOOST_ASSERT(e"
},
{
"path": "libs/brotli/LICENSE",
"chars": 1084,
"preview": "Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.\n\nPermission is hereby granted, free of charge, to any person "
},
{
"path": "libs/brotli/Makefile.am",
"chars": 2423,
"preview": "if !HAVE_BROTLI\nnoinst_LIBRARIES = libbrotli.a\nlibbrotli_a_SOURCES = \\\n\tcommon/constants.c \\\n\tcommon/constants.h \\\n\tcomm"
},
{
"path": "libs/brotli/common/constants.c",
"chars": 619,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/common/constants.h",
"chars": 7977,
"preview": "/* Copyright 2016 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/common/context.c",
"chars": 7983,
"preview": "#include \"context.h\"\n\n#include \"platform.h\"\n\n/* Common context lookup table for all context modes. */\nconst BROTLI_MODEL"
},
{
"path": "libs/brotli/common/context.h",
"chars": 4637,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/common/dictionary.c",
"chars": 1558,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/common/dictionary.h",
"chars": 1922,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/common/dictionary_inc.h",
"chars": 470432,
"preview": "static const BROTLI_MODEL(\"small\") uint8_t kBrotliDictionaryData[] = {\n116,105,109,101,100,111,119,110,108,105,102,101,1"
},
{
"path": "libs/brotli/common/platform.c",
"chars": 465,
"preview": "/* Copyright 2016 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/common/platform.h",
"chars": 23753,
"preview": "/* Copyright 2016 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/common/shared_dictionary_internal.h",
"chars": 2409,
"preview": "/* Copyright 2017 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/common/static_init.h",
"chars": 1996,
"preview": "/* Copyright 2025 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/common/transform.c",
"chars": 10787,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/common/transform.h",
"chars": 3180,
"preview": "/* transforms is a part of ABI, but not API.\n\n It means that there are some functions that are supposed to be in \"comm"
},
{
"path": "libs/brotli/common/version.h",
"chars": 1723,
"preview": "/* Copyright 2016 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/backward_references.c",
"chars": 6277,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/backward_references.h",
"chars": 1206,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/backward_references_hq.c",
"chars": 36736,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/backward_references_hq.h",
"chars": 3773,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/backward_references_inc.h",
"chars": 8181,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/bit_cost.c",
"chars": 1427,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/bit_cost.h",
"chars": 896,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/bit_cost_inc.h",
"chars": 4115,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/block_encoder_inc.h",
"chars": 1137,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2014 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/block_splitter.c",
"chars": 7330,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/block_splitter.h",
"chars": 1626,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/block_splitter_inc.h",
"chars": 18879,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/brotli_bit_stream.c",
"chars": 50915,
"preview": "/* Copyright 2014 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/brotli_bit_stream.h",
"chars": 3338,
"preview": "/* Copyright 2014 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/cluster.c",
"chars": 1458,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/cluster.h",
"chars": 997,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/cluster_inc.h",
"chars": 11826,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/command.c",
"chars": 1025,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/command.h",
"chars": 6937,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/compound_dictionary.c",
"chars": 6651,
"preview": "/* Copyright 2017 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/compound_dictionary.h",
"chars": 2433,
"preview": "/* Copyright 2017 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/compress_fragment.c",
"chars": 32875,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/compress_fragment.h",
"chars": 3571,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/compress_fragment_two_pass.c",
"chars": 26806,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/compress_fragment_two_pass.h",
"chars": 2852,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/dictionary_hash.c",
"chars": 7932,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/dictionary_hash.h",
"chars": 1532,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/dictionary_hash_inc.h",
"chars": 146714,
"preview": "const BROTLI_MODEL(\"small\")\nuint16_t kStaticDictionaryHashWords[BROTLI_ENC_NUM_HASH_BUCKETS] = {\n1002,0,0,0,0,0,0,0,0,68"
},
{
"path": "libs/brotli/enc/encode.c",
"chars": 78417,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/encoder_dict.c",
"chars": 23378,
"preview": "/* Copyright 2017 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/encoder_dict.h",
"chars": 5020,
"preview": "/* Copyright 2017 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/entropy_encode.c",
"chars": 14568,
"preview": "/* Copyright 2010 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/entropy_encode.h",
"chars": 4055,
"preview": "/* Copyright 2010 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/entropy_encode_static.h",
"chars": 33144,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/fast_log.c",
"chars": 6046,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/fast_log.h",
"chars": 1645,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/find_match_length.h",
"chars": 2167,
"preview": "/* Copyright 2010 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/hash.h",
"chars": 24296,
"preview": "/* Copyright 2010 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/hash_base.h",
"chars": 1370,
"preview": "/* Copyright 2025 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/hash_composite_inc.h",
"chars": 5097,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2018 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/hash_forgetful_chain_inc.h",
"chars": 11317,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2016 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/hash_longest_match64_inc.h",
"chars": 10655,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2010 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/hash_longest_match64_simd_inc.h",
"chars": 11835,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2010 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/hash_longest_match_inc.h",
"chars": 10589,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2010 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/hash_longest_match_quickly_inc.h",
"chars": 9481,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2010 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/hash_longest_match_simd_inc.h",
"chars": 11759,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2010 Google Inc. All Rights Reserved.\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/hash_rolling_inc.h",
"chars": 7226,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2018 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/hash_to_binary_tree_inc.h",
"chars": 13081,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2016 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/histogram.c",
"chars": 3261,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/histogram.h",
"chars": 1813,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/histogram_inc.h",
"chars": 1401,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/literal_cost.c",
"chars": 5877,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/literal_cost.h",
"chars": 889,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/matching_tag_mask.h",
"chars": 2343,
"preview": "#ifndef THIRD_PARTY_BROTLI_ENC_MATCHING_TAG_MASK_H_\n#define THIRD_PARTY_BROTLI_ENC_MATCHING_TAG_MASK_H_\n\n#include \"../co"
},
{
"path": "libs/brotli/enc/memory.c",
"chars": 5522,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/memory.h",
"chars": 4296,
"preview": "/* Copyright 2016 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/metablock.c",
"chars": 26696,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/metablock.h",
"chars": 4023,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/metablock_inc.h",
"chars": 7636,
"preview": "/* NOLINT(build/header_guard) */\n/* Copyright 2015 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n "
},
{
"path": "libs/brotli/enc/params.h",
"chars": 1168,
"preview": "/* Copyright 2017 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/prefix.h",
"chars": 1942,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/quality.h",
"chars": 7864,
"preview": "/* Copyright 2016 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/ringbuffer.h",
"chars": 5967,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/state.h",
"chars": 3078,
"preview": "/* Copyright 2022 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/static_dict.c",
"chars": 20877,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/static_dict.h",
"chars": 1215,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/static_dict_lut.c",
"chars": 7420,
"preview": "/* Copyright 2025 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/static_dict_lut.h",
"chars": 1588,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/static_dict_lut_inc.h",
"chars": 468804,
"preview": "const BROTLI_MODEL(\"small\")\nuint16_t kStaticDictionaryBuckets[BROTLI_ENC_STATIC_DICT_LUT_NUM_BUCKETS] = {\n1,0,0,0,0,0,0,"
},
{
"path": "libs/brotli/enc/static_init.c",
"chars": 1780,
"preview": "/* Copyright 2025 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/static_init.h",
"chars": 840,
"preview": "/* Copyright 2025 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/utf8_util.c",
"chars": 2275,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/utf8_util.h",
"chars": 878,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/enc/write_bits.h",
"chars": 2835,
"preview": "/* Copyright 2010 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/include/brotli/decode.h",
"chars": 16913,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/include/brotli/encode.h",
"chars": 20068,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/include/brotli/port.h",
"chars": 11439,
"preview": "/* Copyright 2016 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/include/brotli/shared_dictionary.h",
"chars": 3535,
"preview": "/* Copyright 2017 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/brotli/include/brotli/types.h",
"chars": 2651,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/clipper/License.txt",
"chars": 1374,
"preview": "Boost Software License - Version 1.0 - August 17th, 2003\nhttp://www.boost.org/LICENSE_1_0.txt\n\nPermission is hereby gran"
},
{
"path": "libs/clipper/Makefile.am",
"chars": 179,
"preview": "noinst_LIBRARIES = libclipper.a\nlibclipper_a_SOURCES = clipper.cpp clipper.hpp\nEXTRA_DIST = License.txt\n\nAM_CXXFLAGS = -"
},
{
"path": "libs/clipper/clipper.cpp",
"chars": 132205,
"preview": "/*******************************************************************************\n* "
},
{
"path": "libs/clipper/clipper.hpp",
"chars": 15879,
"preview": "/*******************************************************************************\n* "
},
{
"path": "libs/defs.am",
"chars": 664,
"preview": "## This file is part of dvisvgm\n## Copyright (C) 2005-2025 Martin Gieseking <martin.gieseking@uos.de>\n\nif !HAVE_BROTLI\nB"
},
{
"path": "libs/md5/Makefile.am",
"chars": 123,
"preview": "noinst_LIBRARIES = libmd5.a\n\nlibmd5_a_SOURCES = md5.c md5.h\nAM_CXXFLAGS = -Wall\n\nmd5.c: md5.h\n\nCLEANFILES = *.gcda *.gcn"
},
{
"path": "libs/md5/md5.c",
"chars": 8743,
"preview": "/*\n * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc.\n * MD5 Message-Digest Algorithm (RFC 1"
},
{
"path": "libs/md5/md5.h",
"chars": 1426,
"preview": "/*\n * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc.\n * MD5 Message-Digest Algorithm (RFC 1"
},
{
"path": "libs/potrace/Makefile.am",
"chars": 308,
"preview": "if !HAVE_POTRACE\nnoinst_LIBRARIES = libpotrace.a\nlibpotrace_a_SOURCES = \\\n\tauxiliary.h \\\n\tbitmap.h \\\n\tconfig.h \\\n\tcurve."
},
{
"path": "libs/potrace/auxiliary.h",
"chars": 2146,
"preview": "/* Copyright (C) 2001-2019 Peter Selinger.\n This file is part of Potrace. It is free software and it is covered\n by "
},
{
"path": "libs/potrace/bitmap.h",
"chars": 6450,
"preview": "/* Copyright (C) 2001-2019 Peter Selinger.\n This file is part of Potrace. It is free software and it is covered\n by "
},
{
"path": "libs/potrace/config.h",
"chars": 90,
"preview": "#ifndef CONFIG_H\n#define CONFIG_H\n#define VERSION \"1.16\"\n#define HAVE_INTTYPES_H 1\n#endif\n"
},
{
"path": "libs/potrace/curve.c",
"chars": 2693,
"preview": "/* Copyright (C) 2001-2019 Peter Selinger.\n This file is part of Potrace. It is free software and it is covered\n by "
},
{
"path": "libs/potrace/curve.h",
"chars": 2782,
"preview": "/* Copyright (C) 2001-2019 Peter Selinger.\n This file is part of Potrace. It is free software and it is covered\n by "
},
{
"path": "libs/potrace/decompose.c",
"chars": 14605,
"preview": "/* Copyright (C) 2001-2019 Peter Selinger.\n This file is part of Potrace. It is free software and it is covered\n by "
},
{
"path": "libs/potrace/decompose.h",
"chars": 442,
"preview": "/* Copyright (C) 2001-2019 Peter Selinger.\n This file is part of Potrace. It is free software and it is covered\n by "
},
{
"path": "libs/potrace/lists.h",
"chars": 11118,
"preview": "/* Copyright (C) 2001-2019 Peter Selinger.\n This file is part of Potrace. It is free software and it is covered\n by "
},
{
"path": "libs/potrace/potracelib.c",
"chars": 3122,
"preview": "/* Copyright (C) 2001-2019 Peter Selinger.\n This file is part of Potrace. It is free software and it is covered\n by "
},
{
"path": "libs/potrace/potracelib.h",
"chars": 4573,
"preview": "/* Copyright (C) 2001-2019 Peter Selinger.\n This file is part of Potrace. It is free software and it is covered\n by "
},
{
"path": "libs/potrace/progress.h",
"chars": 2654,
"preview": "/* Copyright (C) 2001-2019 Peter Selinger.\n This file is part of Potrace. It is free software and it is covered\n by "
},
{
"path": "libs/potrace/trace.c",
"chars": 32392,
"preview": "/* Copyright (C) 2001-2019 Peter Selinger.\n This file is part of Potrace. It is free software and it is covered\n by "
},
{
"path": "libs/potrace/trace.h",
"chars": 397,
"preview": "/* Copyright (C) 2001-2019 Peter Selinger.\n This file is part of Potrace. It is free software and it is covered\n by "
},
{
"path": "libs/variant/LICENSE.md",
"chars": 1338,
"preview": "Boost Software License - Version 1.0 - August 17th, 2003\n\nPermission is hereby granted, free of charge, to any person or"
},
{
"path": "libs/variant/Makefile.am",
"chars": 71,
"preview": "noinst_HEADERS = \\\n\tinclude/mpark/variant.hpp\n\nEXTRA_DIST = LICENSE.md\n"
},
{
"path": "libs/variant/include/mpark/variant.hpp",
"chars": 102582,
"preview": "// MPark.Variant\n//\n// Copyright Michael Park, 2015-2017\n//\n// Distributed under the Boost Software License, Version 1.0"
},
{
"path": "libs/woff2/LICENSE",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "libs/woff2/Makefile.am",
"chars": 679,
"preview": "if !HAVE_WOFF2\nnoinst_LIBRARIES = libwoff2.a\nlibwoff2_a_SOURCES = \\\n\tinclude/woff2/decode.h \\\n\tinclude/woff2/encode.h \\\n"
},
{
"path": "libs/woff2/include/woff2/decode.h",
"chars": 1171,
"preview": "/* Copyright 2014 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/include/woff2/encode.h",
"chars": 1434,
"preview": "/* Copyright 2014 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/include/woff2/output.h",
"chars": 2323,
"preview": "/* Copyright 2016 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/include/woff2/version.h",
"chars": 131,
"preview": "#ifndef WOFF2_WOFF2_VERSION_H_\n#define WOFF2_WOFF2_VERSION_H_\n\nnamespace woff2 {\nconstexpr const int version = 0x010002;"
},
{
"path": "libs/woff2/src/buffer.h",
"chars": 4185,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/font.cc",
"chars": 12155,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/font.h",
"chars": 3509,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/glyph.cc",
"chars": 11642,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/glyph.h",
"chars": 1875,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/normalize.cc",
"chars": 9004,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/normalize.h",
"chars": 1301,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/port.h",
"chars": 1674,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/round.h",
"chars": 587,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/store_bytes.h",
"chars": 1338,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/table_tags.cc",
"chars": 2558,
"preview": "/* Copyright 2014 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/table_tags.h",
"chars": 807,
"preview": "/* Copyright 2014 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/transform.cc",
"chars": 13696,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/transform.h",
"chars": 768,
"preview": "/* Copyright 2014 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/variable_length.cc",
"chars": 3176,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/variable_length.h",
"chars": 811,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/woff2_common.cc",
"chars": 1233,
"preview": "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/woff2_common.h",
"chars": 1439,
"preview": "/* Copyright 2014 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/woff2_enc.cc",
"chars": 15414,
"preview": "/* Copyright 2014 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/woff2/src/woff2_out.cc",
"chars": 1543,
"preview": "/* Copyright 2014 Google Inc. All Rights Reserved.\n\n Distributed under MIT license.\n See file LICENSE for detail or "
},
{
"path": "libs/xxHash/LICENSE",
"chars": 1314,
"preview": "xxHash Library\nCopyright (c) 2012-2014, Yann Collet\nAll rights reserved.\n\nRedistribution and use in source and binary fo"
},
{
"path": "libs/xxHash/Makefile.am",
"chars": 178,
"preview": "if !HAVE_XXHASH\nnoinst_LIBRARIES = libxxhash.a\n\nlibxxhash_a_SOURCES = xxhash.c xxhash.h xxh3.h\nAM_CXXFLAGS = -Wall\n\nxxha"
},
{
"path": "libs/xxHash/xxh3.h",
"chars": 2394,
"preview": "/*\n * xxHash - Extremely Fast Hash algorithm\n * Development source file for `xxh3`\n * Copyright (C) 2019-2021 Yann Colle"
},
{
"path": "libs/xxHash/xxhash.c",
"chars": 1855,
"preview": "/*\n * xxHash - Extremely Fast Hash algorithm\n * Copyright (C) 2012-2023 Yann Collet\n *\n * BSD 2-Clause License (https://"
},
{
"path": "libs/xxHash/xxhash.h",
"chars": 268319,
"preview": "/*\n * xxHash - Extremely Fast Hash algorithm\n * Header File\n * Copyright (C) 2012-2023 Yann Collet\n *\n * BSD 2-Clause Li"
},
{
"path": "m4/ax_ac_append_to_file.m4",
"chars": 914,
"preview": "# ===========================================================================\n# https://www.gnu.org/software/autoconf-"
},
{
"path": "m4/ax_ac_print_to_file.m4",
"chars": 905,
"preview": "# ===========================================================================\n# https://www.gnu.org/software/autoconf-"
},
{
"path": "m4/ax_add_am_macro_static.m4",
"chars": 853,
"preview": "# ===========================================================================\n# https://www.gnu.org/software/autoconf-a"
},
{
"path": "m4/ax_am_macros_static.m4",
"chars": 1109,
"preview": "# ===========================================================================\n# https://www.gnu.org/software/autoconf-"
},
{
"path": "m4/ax_check_compile_flag.m4",
"chars": 2104,
"preview": "# ===========================================================================\n# https://www.gnu.org/software/autoconf-a"
},
{
"path": "m4/ax_code_coverage.m4",
"chars": 12174,
"preview": "# ===========================================================================\n# https://www.gnu.org/software/autocon"
},
{
"path": "m4/ax_cxx_compile_stdcxx.m4",
"chars": 21125,
"preview": "# ===========================================================================\n# https://www.gnu.org/software/autoconf-a"
},
{
"path": "m4/ax_file_escapes.m4",
"chars": 763,
"preview": "# ===========================================================================\n# https://www.gnu.org/software/autocon"
},
{
"path": "m4/ax_gcc_builtin.m4",
"chars": 5862,
"preview": "# ===========================================================================\n# https://www.gnu.org/software/autoco"
},
{
"path": "src/AGLTable.hpp",
"chars": 158706,
"preview": "/*************************************************************************\n** AGLTable.hpp "
},
{
"path": "src/BasicDVIReader.cpp",
"chars": 15949,
"preview": "/*************************************************************************\n** BasicDVIReader.cpp "
},
{
"path": "src/BasicDVIReader.hpp",
"chars": 5317,
"preview": "/*************************************************************************\n** BasicDVIReader.hpp "
},
{
"path": "src/Bezier.cpp",
"chars": 14649,
"preview": "/*************************************************************************\n** Bezier.cpp "
},
{
"path": "src/Bezier.hpp",
"chars": 3376,
"preview": "/*************************************************************************\n** Bezier.hpp "
},
{
"path": "src/BgColorSpecialHandler.cpp",
"chars": 3148,
"preview": "/*************************************************************************\n** BgColorSpecialHandler.cpp "
},
{
"path": "src/BgColorSpecialHandler.hpp",
"chars": 2290,
"preview": "/*************************************************************************\n** BgColorSpecialHandler.hpp "
},
{
"path": "src/Bitmap.cpp",
"chars": 4889,
"preview": "/*************************************************************************\n** Bitmap.cpp "
},
{
"path": "src/Bitmap.hpp",
"chars": 4185,
"preview": "/*************************************************************************\n** Bitmap.hpp "
},
{
"path": "src/BoundingBox.cpp",
"chars": 8209,
"preview": "/*************************************************************************\n** BoundingBox.cpp "
},
{
"path": "src/BoundingBox.hpp",
"chars": 3970,
"preview": "/*************************************************************************\n** BoundingBox.hpp "
},
{
"path": "src/CLCommandLine.cpp",
"chars": 8263,
"preview": "/*************************************************************************\n** CLCommandLine.cpp "
},
{
"path": "src/CLCommandLine.hpp",
"chars": 2896,
"preview": "/*************************************************************************\n** CLCommandLine.hpp "
},
{
"path": "src/CLOption.hpp",
"chars": 6535,
"preview": "/*************************************************************************\n** CLOption.hpp "
},
{
"path": "src/CMap.cpp",
"chars": 3525,
"preview": "/*************************************************************************\n** CMap.cpp "
},
{
"path": "src/CMap.hpp",
"chars": 4438,
"preview": "/*************************************************************************\n** CMap.hpp "
},
{
"path": "src/CMapManager.cpp",
"chars": 5299,
"preview": "/*************************************************************************\n** CMapManager.cpp "
},
{
"path": "src/CMapManager.hpp",
"chars": 2221,
"preview": "/*************************************************************************\n** CMapManager.hpp "
}
]
// ... and 422 more files (download for full content)
About this extraction
This page contains the full source code of the mgieseki/dvisvgm GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 622 files (8.7 MB), approximately 2.3M tokens, and a symbol index with 4990 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.