diff --git a/app/core/src/main/resources/type3/library/fonts/cm/cmbx10.ttf b/app/core/src/main/resources/type3/library/fonts/cm/cmbx10.ttf new file mode 100644 index 000000000..2c7198e5d Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/cm/cmbx10.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/cm/cmmi10.ttf b/app/core/src/main/resources/type3/library/fonts/cm/cmmi10.ttf index fd9d30ced..bd30a3f97 100644 Binary files a/app/core/src/main/resources/type3/library/fonts/cm/cmmi10.ttf and b/app/core/src/main/resources/type3/library/fonts/cm/cmmi10.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/cm/cmr10.ttf b/app/core/src/main/resources/type3/library/fonts/cm/cmr10.ttf index 8bc44966a..1c3fff0a6 100644 Binary files a/app/core/src/main/resources/type3/library/fonts/cm/cmr10.ttf and b/app/core/src/main/resources/type3/library/fonts/cm/cmr10.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/cm/cmss10.ttf b/app/core/src/main/resources/type3/library/fonts/cm/cmss10.ttf new file mode 100644 index 000000000..d7513c86a Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/cm/cmss10.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/cm/cmti10.ttf b/app/core/src/main/resources/type3/library/fonts/cm/cmti10.ttf new file mode 100644 index 000000000..993d5c029 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/cm/cmti10.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/cm/cmtt10.ttf b/app/core/src/main/resources/type3/library/fonts/cm/cmtt10.ttf new file mode 100644 index 000000000..1651877db Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/cm/cmtt10.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-Bold.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-Bold.ttf index 426812b9b..6d65fa7dc 100644 Binary files a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-Bold.ttf and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-Bold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-BoldOblique.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-BoldOblique.ttf new file mode 100644 index 000000000..753f2d80b Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-BoldOblique.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-ExtraLight.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-ExtraLight.ttf new file mode 100644 index 000000000..b09f32d7d Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-ExtraLight.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-Oblique.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-Oblique.ttf index a99a14c8d..999bac771 100644 Binary files a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-Oblique.ttf and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-Oblique.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans.ttf index fb0bd945a..e5f7eecce 100644 Binary files a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans.ttf and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansCondensed-Bold.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansCondensed-Bold.ttf new file mode 100644 index 000000000..22987c62d Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansCondensed-Bold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansCondensed-BoldOblique.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansCondensed-BoldOblique.ttf new file mode 100644 index 000000000..f5fa0ca26 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansCondensed-BoldOblique.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansCondensed-Oblique.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansCondensed-Oblique.ttf new file mode 100644 index 000000000..7fde90789 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansCondensed-Oblique.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansCondensed.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansCondensed.ttf new file mode 100644 index 000000000..3259bc21a Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansCondensed.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansMono-Bold.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansMono-Bold.ttf new file mode 100644 index 000000000..8184ced8c Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansMono-Bold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf new file mode 100644 index 000000000..754dca732 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansMono-Oblique.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansMono-Oblique.ttf new file mode 100644 index 000000000..4c858d401 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansMono-Oblique.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansMono.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansMono.ttf index 538ee2723..f5786022f 100644 Binary files a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansMono.ttf and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansMono.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerif-Bold.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerif-Bold.ttf new file mode 100644 index 000000000..3bb755fa1 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerif-Bold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerif-BoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerif-BoldItalic.ttf new file mode 100644 index 000000000..a36dd4b70 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerif-BoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerif-Italic.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerif-Italic.ttf new file mode 100644 index 000000000..805daf222 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerif-Italic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerif.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerif.ttf new file mode 100644 index 000000000..0b803d206 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerif.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerifCondensed-Bold.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerifCondensed-Bold.ttf new file mode 100644 index 000000000..222bf134b Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerifCondensed-Bold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerifCondensed-BoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerifCondensed-BoldItalic.ttf new file mode 100644 index 000000000..e44663695 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerifCondensed-BoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerifCondensed-Italic.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerifCondensed-Italic.ttf new file mode 100644 index 000000000..c529df31b Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerifCondensed-Italic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerifCondensed.ttf b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerifCondensed.ttf new file mode 100644 index 000000000..d3959b322 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSerifCondensed.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/liberation/LiberationMono-Bold.ttf b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationMono-Bold.ttf new file mode 100644 index 000000000..2e46737ac Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationMono-Bold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/liberation/LiberationMono-BoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationMono-BoldItalic.ttf new file mode 100644 index 000000000..d1f46d7cd Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationMono-BoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/liberation/LiberationMono-Italic.ttf b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationMono-Italic.ttf new file mode 100644 index 000000000..954c39436 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationMono-Italic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/liberation/LiberationMono-Regular.ttf b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationMono-Regular.ttf new file mode 100644 index 000000000..e774859cb Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationMono-Regular.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSans-Bold.ttf b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSans-Bold.ttf new file mode 100644 index 000000000..dc5d57f15 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSans-Bold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSans-BoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSans-BoldItalic.ttf new file mode 100644 index 000000000..158488a12 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSans-BoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSans-Italic.ttf b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSans-Italic.ttf new file mode 100644 index 000000000..25970d9d5 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSans-Italic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSans-Regular.ttf b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSans-Regular.ttf new file mode 100644 index 000000000..e6339859d Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSans-Regular.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSerif-Bold.ttf b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSerif-Bold.ttf new file mode 100644 index 000000000..3c7c55b57 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSerif-Bold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSerif-BoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSerif-BoldItalic.ttf new file mode 100644 index 000000000..6b35d9f7c Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSerif-BoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSerif-Italic.ttf b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSerif-Italic.ttf new file mode 100644 index 000000000..54d516481 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSerif-Italic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSerif-Regular.ttf b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSerif-Regular.ttf new file mode 100644 index 000000000..5e5550c0a Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/liberation/LiberationSerif-Regular.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Black.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Black.ttf new file mode 100644 index 000000000..0974247d7 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Black.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-BlackItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-BlackItalic.ttf new file mode 100644 index 000000000..5bea657fc Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-BlackItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Bold.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Bold.ttf new file mode 100644 index 000000000..21fbbcc6d Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Bold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-BoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-BoldItalic.ttf new file mode 100644 index 000000000..8faac05c2 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-BoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Condensed.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Condensed.ttf new file mode 100644 index 000000000..a55d3fcfb Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Condensed.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedBlack.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedBlack.ttf new file mode 100644 index 000000000..fa2163405 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedBlack.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedBlackItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedBlackItalic.ttf new file mode 100644 index 000000000..4f4e6d1e9 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedBlackItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedBold.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedBold.ttf new file mode 100644 index 000000000..4912d87fc Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedBold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedBoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedBoldItalic.ttf new file mode 100644 index 000000000..57c3b4309 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedBoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedExtraBold.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedExtraBold.ttf new file mode 100644 index 000000000..4acd19d2e Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedExtraBold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedExtraBoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedExtraBoldItalic.ttf new file mode 100644 index 000000000..addcb56f5 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedExtraBoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedExtraLight.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedExtraLight.ttf new file mode 100644 index 000000000..54082b208 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedExtraLight.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedExtraLightItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedExtraLightItalic.ttf new file mode 100644 index 000000000..87a0624e0 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedExtraLightItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedItalic.ttf new file mode 100644 index 000000000..8a6de5cad Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedLight.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedLight.ttf new file mode 100644 index 000000000..02e817c70 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedLight.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedLightItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedLightItalic.ttf new file mode 100644 index 000000000..67f99d148 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedLightItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedMedium.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedMedium.ttf new file mode 100644 index 000000000..515cef661 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedMedium.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedMediumItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedMediumItalic.ttf new file mode 100644 index 000000000..195210538 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedMediumItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedSemiBold.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedSemiBold.ttf new file mode 100644 index 000000000..9ce5f3b07 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedSemiBold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedSemiBoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedSemiBoldItalic.ttf new file mode 100644 index 000000000..f4c36bf2b Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedSemiBoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedThin.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedThin.ttf new file mode 100644 index 000000000..6c754b6d2 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedThin.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedThinItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedThinItalic.ttf new file mode 100644 index 000000000..73f005a3e Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-CondensedThinItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraBold.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraBold.ttf new file mode 100644 index 000000000..e69de29bb diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraBoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraBoldItalic.ttf new file mode 100644 index 000000000..3f48694e5 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraBoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensed.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensed.ttf new file mode 100644 index 000000000..a15499b25 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensed.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedBlack.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedBlack.ttf new file mode 100644 index 000000000..3ecae1b52 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedBlack.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedBlackItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedBlackItalic.ttf new file mode 100644 index 000000000..7558fcf6f Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedBlackItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedBold.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedBold.ttf new file mode 100644 index 000000000..e575ce586 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedBold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedBoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedBoldItalic.ttf new file mode 100644 index 000000000..7cbadb4b5 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedBoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedExtraBold.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedExtraBold.ttf new file mode 100644 index 000000000..ec244607e Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedExtraBold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedExtraBoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedExtraBoldItalic.ttf new file mode 100644 index 000000000..2bb7179cc Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedExtraBoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedExtraLight.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedExtraLight.ttf new file mode 100644 index 000000000..3568d8755 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedExtraLight.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedExtraLightItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedExtraLightItalic.ttf new file mode 100644 index 000000000..23a3207e5 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedExtraLightItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedItalic.ttf new file mode 100644 index 000000000..33f9e1a64 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedLight.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedLight.ttf new file mode 100644 index 000000000..4cdf575cc Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedLight.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedLightItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedLightItalic.ttf new file mode 100644 index 000000000..09c998752 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedLightItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedMedium.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedMedium.ttf new file mode 100644 index 000000000..0a4d4c480 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedMedium.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedMediumItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedMediumItalic.ttf new file mode 100644 index 000000000..4c572c9c3 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedMediumItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedSemiBold.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedSemiBold.ttf new file mode 100644 index 000000000..8ef21c4b9 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedSemiBold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedSemiBoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedSemiBoldItalic.ttf new file mode 100644 index 000000000..0b5770301 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedSemiBoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedThin.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedThin.ttf new file mode 100644 index 000000000..5d4d0e483 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedThin.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedThinItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedThinItalic.ttf new file mode 100644 index 000000000..5d8c0bec8 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraCondensedThinItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraLight.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraLight.ttf new file mode 100644 index 000000000..8aaf9ba7a Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraLight.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraLightItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraLightItalic.ttf new file mode 100644 index 000000000..d324a6424 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ExtraLightItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Italic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Italic.ttf new file mode 100644 index 000000000..76c5e1a7c Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Italic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Italic[wdth,wght].ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Italic[wdth,wght].ttf new file mode 100644 index 000000000..deb23b6bc Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Italic[wdth,wght].ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Italic[wght].ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Italic[wght].ttf new file mode 100644 index 000000000..a77768fcc Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Italic[wght].ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Light.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Light.ttf new file mode 100644 index 000000000..d56d2444e Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Light.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-LightItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-LightItalic.ttf new file mode 100644 index 000000000..5a5338f96 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-LightItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Medium.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Medium.ttf new file mode 100644 index 000000000..831f8f015 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Medium.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-MediumItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-MediumItalic.ttf new file mode 100644 index 000000000..6f207f78e Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-MediumItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Regular.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Regular.ttf new file mode 100644 index 000000000..546cd8976 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Regular.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiBold.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiBold.ttf new file mode 100644 index 000000000..611bbd50c Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiBold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiBoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiBoldItalic.ttf new file mode 100644 index 000000000..8cd12e2ee Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiBoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensed.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensed.ttf new file mode 100644 index 000000000..c12b84be0 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensed.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedBlack.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedBlack.ttf new file mode 100644 index 000000000..283eab70e Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedBlack.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedBlackItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedBlackItalic.ttf new file mode 100644 index 000000000..a3ccf73ed Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedBlackItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedBold.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedBold.ttf new file mode 100644 index 000000000..9995d5bab Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedBold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedBoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedBoldItalic.ttf new file mode 100644 index 000000000..e8c2a6838 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedBoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedExtraBold.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedExtraBold.ttf new file mode 100644 index 000000000..0c7b6c330 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedExtraBold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedExtraBoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedExtraBoldItalic.ttf new file mode 100644 index 000000000..2d0ad283f Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedExtraBoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedExtraLight.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedExtraLight.ttf new file mode 100644 index 000000000..c6630c5f7 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedExtraLight.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedExtraLightItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedExtraLightItalic.ttf new file mode 100644 index 000000000..828cd48be Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedExtraLightItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedItalic.ttf new file mode 100644 index 000000000..8ab05404c Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedLight.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedLight.ttf new file mode 100644 index 000000000..4ad428541 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedLight.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedLightItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedLightItalic.ttf new file mode 100644 index 000000000..975c4ef2f Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedLightItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedMedium.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedMedium.ttf new file mode 100644 index 000000000..57cb29cb0 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedMedium.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedMediumItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedMediumItalic.ttf new file mode 100644 index 000000000..cc4423af3 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedMediumItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedSemiBold.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedSemiBold.ttf new file mode 100644 index 000000000..f790ede20 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedSemiBold.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedSemiBoldItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedSemiBoldItalic.ttf new file mode 100644 index 000000000..c81e35733 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedSemiBoldItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedThin.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedThin.ttf new file mode 100644 index 000000000..21dcf9c27 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedThin.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedThinItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedThinItalic.ttf new file mode 100644 index 000000000..1cd1f5d25 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-SemiCondensedThinItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Thin.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Thin.ttf new file mode 100644 index 000000000..c4ba58e4f Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-Thin.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ThinItalic.ttf b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ThinItalic.ttf new file mode 100644 index 000000000..43f1becdd Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/noto/NotoSans-ThinItalic.ttf differ diff --git a/app/core/src/main/resources/type3/library/fonts/stix/STIXTwoMath-Regular.otf b/app/core/src/main/resources/type3/library/fonts/stix/STIXTwoMath-Regular.otf new file mode 100644 index 000000000..29aa3b941 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/stix/STIXTwoMath-Regular.otf differ diff --git a/app/core/src/main/resources/type3/library/fonts/stix/STIXTwoText-Bold.otf b/app/core/src/main/resources/type3/library/fonts/stix/STIXTwoText-Bold.otf new file mode 100644 index 000000000..e617a6419 Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/stix/STIXTwoText-Bold.otf differ diff --git a/app/core/src/main/resources/type3/library/fonts/stix/STIXTwoText-Italic.otf b/app/core/src/main/resources/type3/library/fonts/stix/STIXTwoText-Italic.otf new file mode 100644 index 000000000..19599296e Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/stix/STIXTwoText-Italic.otf differ diff --git a/app/core/src/main/resources/type3/library/fonts/stix/STIXTwoText-Regular.otf b/app/core/src/main/resources/type3/library/fonts/stix/STIXTwoText-Regular.otf new file mode 100644 index 000000000..630bf714c Binary files /dev/null and b/app/core/src/main/resources/type3/library/fonts/stix/STIXTwoText-Regular.otf differ diff --git a/app/core/src/main/resources/type3/library/index.json b/app/core/src/main/resources/type3/library/index.json index d457da323..b3a83d431 100644 --- a/app/core/src/main/resources/type3/library/index.json +++ b/app/core/src/main/resources/type3/library/index.json @@ -4,10 +4,7 @@ "label": "DejaVu Sans", "aliases": [ "DejaVuSans", - "BMQQDV+DejaVuSans", - "DejaVuSansDisplay", - "dejavusans", - "dejavusansdisplay" + "dejavusans" ], "program": { "resource": "type3/library/fonts/dejavu/DejaVuSans.ttf", @@ -173,7 +170,6 @@ "label": "DejaVu Sans Bold", "aliases": [ "DejaVuSans-Bold", - "EVICAO+DejaVuSans-Bold", "dejavusans-bold" ], "program": { @@ -249,6 +245,297 @@ 120 ] }, + { + "id": "dejavu-sans-boldoblique", + "label": "DejaVu Sans Bold Oblique", + "aliases": [ + "DejaVuSans-BoldOblique", + "dejavusans-boldoblique" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSans-BoldOblique.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSans-BoldOblique.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSans-BoldOblique.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "dejavu-sans-condensed", + "label": "DejaVu Sans Condensed", + "aliases": [ + "DejaVuSansCondensed", + "dejavusanscondensed" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSansCondensed.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSansCondensed.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSansCondensed.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "dejavu-sans-condensed-bold", + "label": "DejaVu Sans Condensed Bold", + "aliases": [ + "DejaVuSansCondensed-Bold" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSansCondensed-Bold.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSansCondensed-Bold.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSansCondensed-Bold.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "dejavu-sans-condensed-oblique", + "label": "DejaVu Sans Condensed Oblique", + "aliases": [ + "DejaVuSansCondensed-Oblique" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSansCondensed-Oblique.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSansCondensed-Oblique.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSansCondensed-Oblique.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "dejavu-sans-condensed-boldoblique", + "label": "DejaVu Sans Condensed Bold Oblique", + "aliases": [ + "DejaVuSansCondensed-BoldOblique" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSansCondensed-BoldOblique.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSansCondensed-BoldOblique.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSansCondensed-BoldOblique.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "dejavu-serif-regular", + "label": "DejaVu Serif", + "aliases": [ + "DejaVuSerif", + "dejavuserif" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSerif.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerif.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerif.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "dejavu-serif-bold", + "label": "DejaVu Serif Bold", + "aliases": [ + "DejaVuSerif-Bold", + "dejavuserif-bold" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSerif-Bold.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerif-Bold.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerif-Bold.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "dejavu-serif-italic", + "label": "DejaVu Serif Italic", + "aliases": [ + "DejaVuSerif-Italic", + "dejavuserif-italic" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSerif-Italic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerif-Italic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerif-Italic.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "dejavu-serif-bolditalic", + "label": "DejaVu Serif Bold Italic", + "aliases": [ + "DejaVuSerif-BoldItalic" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSerif-BoldItalic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerif-BoldItalic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerif-BoldItalic.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "dejavu-serif-condensed", + "label": "DejaVu Serif Condensed", + "aliases": [ + "DejaVuSerifCondensed" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSerifCondensed.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerifCondensed.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerifCondensed.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "dejavu-serif-condensed-bold", + "label": "DejaVu Serif Condensed Bold", + "aliases": [ + "DejaVuSerifCondensed-Bold" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSerifCondensed-Bold.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerifCondensed-Bold.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerifCondensed-Bold.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "dejavu-serif-condensed-italic", + "label": "DejaVu Serif Condensed Italic", + "aliases": [ + "DejaVuSerifCondensed-Italic" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSerifCondensed-Italic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerifCondensed-Italic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerifCondensed-Italic.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "dejavu-serif-condensed-bolditalic", + "label": "DejaVu Serif Condensed Bold Italic", + "aliases": [ + "DejaVuSerifCondensed-BoldItalic" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSerifCondensed-BoldItalic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerifCondensed-BoldItalic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSerifCondensed-BoldItalic.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, { "id": "dejavu-sans-mono", "label": "DejaVu Sans Mono", @@ -305,6 +592,342 @@ 121 ] }, + { + "id": "dejavu-sans-mono-bold", + "label": "DejaVu Sans Mono Bold", + "aliases": [ + "DejaVuSansMono-Bold" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSansMono-Bold.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSansMono-Bold.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSansMono-Bold.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "dejavu-sans-mono-oblique", + "label": "DejaVu Sans Mono Oblique", + "aliases": [ + "DejaVuSansMono-Oblique" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSansMono-Oblique.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSansMono-Oblique.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSansMono-Oblique.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "dejavu-sans-mono-boldoblique", + "label": "DejaVu Sans Mono Bold Oblique", + "aliases": [ + "DejaVuSansMono-BoldOblique" + ], + "program": { + "resource": "type3/library/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "liberation-sans-regular", + "label": "Liberation Sans", + "aliases": [ + "LiberationSans", + "liberationsans" + ], + "program": { + "resource": "type3/library/fonts/liberation/LiberationSans-Regular.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/liberation/LiberationSans-Regular.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/liberation/LiberationSans-Regular.ttf", + "format": "ttf" + }, + "source": "Liberation Fonts 2.1.5", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "liberation-sans-bold", + "label": "Liberation Sans Bold", + "aliases": [ + "LiberationSans-Bold", + "liberationsans-bold" + ], + "program": { + "resource": "type3/library/fonts/liberation/LiberationSans-Bold.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/liberation/LiberationSans-Bold.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/liberation/LiberationSans-Bold.ttf", + "format": "ttf" + }, + "source": "Liberation Fonts 2.1.5", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "liberation-sans-italic", + "label": "Liberation Sans Italic", + "aliases": [ + "LiberationSans-Italic" + ], + "program": { + "resource": "type3/library/fonts/liberation/LiberationSans-Italic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/liberation/LiberationSans-Italic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/liberation/LiberationSans-Italic.ttf", + "format": "ttf" + }, + "source": "Liberation Fonts 2.1.5", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "liberation-sans-bolditalic", + "label": "Liberation Sans Bold Italic", + "aliases": [ + "LiberationSans-BoldItalic" + ], + "program": { + "resource": "type3/library/fonts/liberation/LiberationSans-BoldItalic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/liberation/LiberationSans-BoldItalic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/liberation/LiberationSans-BoldItalic.ttf", + "format": "ttf" + }, + "source": "Liberation Fonts 2.1.5", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "liberation-serif-regular", + "label": "Liberation Serif", + "aliases": [ + "LiberationSerif", + "liberationserif" + ], + "program": { + "resource": "type3/library/fonts/liberation/LiberationSerif-Regular.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/liberation/LiberationSerif-Regular.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/liberation/LiberationSerif-Regular.ttf", + "format": "ttf" + }, + "source": "Liberation Fonts 2.1.5", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "liberation-serif-bold", + "label": "Liberation Serif Bold", + "aliases": [ + "LiberationSerif-Bold", + "liberationserif-bold" + ], + "program": { + "resource": "type3/library/fonts/liberation/LiberationSerif-Bold.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/liberation/LiberationSerif-Bold.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/liberation/LiberationSerif-Bold.ttf", + "format": "ttf" + }, + "source": "Liberation Fonts 2.1.5", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "liberation-serif-italic", + "label": "Liberation Serif Italic", + "aliases": [ + "LiberationSerif-Italic" + ], + "program": { + "resource": "type3/library/fonts/liberation/LiberationSerif-Italic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/liberation/LiberationSerif-Italic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/liberation/LiberationSerif-Italic.ttf", + "format": "ttf" + }, + "source": "Liberation Fonts 2.1.5", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "liberation-serif-bolditalic", + "label": "Liberation Serif Bold Italic", + "aliases": [ + "LiberationSerif-BoldItalic" + ], + "program": { + "resource": "type3/library/fonts/liberation/LiberationSerif-BoldItalic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/liberation/LiberationSerif-BoldItalic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/liberation/LiberationSerif-BoldItalic.ttf", + "format": "ttf" + }, + "source": "Liberation Fonts 2.1.5", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "liberation-mono-regular", + "label": "Liberation Mono", + "aliases": [ + "LiberationMono", + "liberationmono" + ], + "program": { + "resource": "type3/library/fonts/liberation/LiberationMono-Regular.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/liberation/LiberationMono-Regular.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/liberation/LiberationMono-Regular.ttf", + "format": "ttf" + }, + "source": "Liberation Fonts 2.1.5", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "liberation-mono-bold", + "label": "Liberation Mono Bold", + "aliases": [ + "LiberationMono-Bold", + "liberationmono-bold" + ], + "program": { + "resource": "type3/library/fonts/liberation/LiberationMono-Bold.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/liberation/LiberationMono-Bold.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/liberation/LiberationMono-Bold.ttf", + "format": "ttf" + }, + "source": "Liberation Fonts 2.1.5", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "liberation-mono-italic", + "label": "Liberation Mono Italic", + "aliases": [ + "LiberationMono-Italic" + ], + "program": { + "resource": "type3/library/fonts/liberation/LiberationMono-Italic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/liberation/LiberationMono-Italic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/liberation/LiberationMono-Italic.ttf", + "format": "ttf" + }, + "source": "Liberation Fonts 2.1.5", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "liberation-mono-bolditalic", + "label": "Liberation Mono Bold Italic", + "aliases": [ + "LiberationMono-BoldItalic" + ], + "program": { + "resource": "type3/library/fonts/liberation/LiberationMono-BoldItalic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/liberation/LiberationMono-BoldItalic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/liberation/LiberationMono-BoldItalic.ttf", + "format": "ttf" + }, + "source": "Liberation Fonts 2.1.5", + "signatures": [], + "glyphCoverage": [] + }, { "id": "cmr10", "label": "Computer Modern Roman 10pt", @@ -312,9 +935,6 @@ "cmr10", "Cmr10" ], - "signatures": [ - "sha256:5b535a05c982fb8ff029dfbedd5e9d28c1c4379ebac259d207f65606a94e5b15" - ], "program": { "resource": "type3/library/fonts/cm/cmr10.ttf", "format": "ttf" @@ -327,12 +947,15 @@ "resource": "type3/library/fonts/cm/cmr10.ttf", "format": "ttf" }, + "source": "Computer Modern (LaTeX)", + "signatures": [ + "sha256:5b535a05c982fb8ff029dfbedd5e9d28c1c4379ebac259d207f65606a94e5b15" + ], "glyphCoverage": [ 48, 49, 53 - ], - "source": "type3/samples/01_Matplotlib.pdf" + ] }, { "id": "cmmi10", @@ -341,9 +964,6 @@ "cmmi10", "Cmmi10" ], - "signatures": [ - "sha256:6c72170517812e39f970746f53a2ae08dafbbe7374c20bcb4d5a60adc49cb77b" - ], "program": { "resource": "type3/library/fonts/cm/cmmi10.ttf", "format": "ttf" @@ -356,11 +976,14 @@ "resource": "type3/library/fonts/cm/cmmi10.ttf", "format": "ttf" }, + "source": "Computer Modern (LaTeX)", + "signatures": [ + "sha256:6c72170517812e39f970746f53a2ae08dafbbe7374c20bcb4d5a60adc49cb77b" + ], "glyphCoverage": [ 100, 120 - ], - "source": "type3/samples/01_Matplotlib.pdf" + ] }, { "id": "cmsy10", @@ -369,10 +992,6 @@ "cmsy10", "Cmsy10" ], - "signatures": [ - "sha256:1324cd8127143ef9023616b7911c570db3b1eb35758cdc9258ec16c0f4587775", - "sha256:2832e219b2db3bacf0d5a147d4b74ad5226fdf7562c395ef3fb12937633e037d" - ], "program": { "resource": "type3/library/fonts/cm/cmsy10.ttf", "format": "ttf" @@ -385,21 +1004,91 @@ "resource": "type3/library/fonts/cm/cmsy10.ttf", "format": "ttf" }, + "source": "Computer Modern (LaTeX)", + "signatures": [ + "sha256:1324cd8127143ef9023616b7911c570db3b1eb35758cdc9258ec16c0f4587775", + "sha256:2832e219b2db3bacf0d5a147d4b74ad5226fdf7562c395ef3fb12937633e037d" + ], "glyphCoverage": [ 48, 8734 + ] + }, + { + "id": "cmbx10", + "label": "Computer Modern Bold Extended 10pt", + "aliases": [ + "cmbx10", + "Cmbx10" ], - "source": "type3/samples/01_Matplotlib.pdf" + "program": { + "resource": "type3/library/fonts/cm/cmbx10.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/cm/cmbx10.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/cm/cmbx10.ttf", + "format": "ttf" + }, + "source": "Computer Modern (LaTeX)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "cmti10", + "label": "Computer Modern Text Italic 10pt", + "aliases": [ + "cmti10", + "Cmti10" + ], + "program": { + "resource": "type3/library/fonts/cm/cmti10.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/cm/cmti10.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/cm/cmti10.ttf", + "format": "ttf" + }, + "source": "Computer Modern (LaTeX)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "cmtt10", + "label": "Computer Modern Typewriter 10pt", + "aliases": [ + "cmtt10", + "Cmtt10" + ], + "program": { + "resource": "type3/library/fonts/cm/cmtt10.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/cm/cmtt10.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/cm/cmtt10.ttf", + "format": "ttf" + }, + "source": "Computer Modern (LaTeX)", + "signatures": [], + "glyphCoverage": [] }, { "id": "stix-size-three", "label": "STIX Size Three Symbols", "aliases": [ - "stixsizethreesym-regular", - "STIXSizeThreeSym-Regular" - ], - "signatures": [ - "sha256:33d0ab9d9d72c1aed1edfc9b815dd6a2d618cbbe9084309c7f2de0f3df3073d7" + "STIXSizeThreeSym-Regular", + "stixsizethreesym-regular" ], "program": { "resource": "type3/library/fonts/stix/STIXSizeThreeSym-Regular.otf", @@ -413,23 +1102,511 @@ "resource": "type3/library/fonts/stix/STIXSizeThreeSym-Regular.otf", "format": "otf" }, + "source": "STIX Fonts 2.0", + "signatures": [ + "sha256:33d0ab9d9d72c1aed1edfc9b815dd6a2d618cbbe9084309c7f2de0f3df3073d7" + ], "glyphCoverage": [ 91, 93 + ] + }, + { + "id": "stix-two-text-regular", + "label": "STIX Two Text", + "aliases": [ + "STIXTwoText-Regular", + "stixtwotext" ], - "source": "type3/samples/01_Matplotlib.pdf" + "program": { + "resource": "type3/library/fonts/stix/STIXTwoText-Regular.otf", + "format": "otf" + }, + "webProgram": { + "resource": "type3/library/fonts/stix/STIXTwoText-Regular.otf", + "format": "otf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/stix/STIXTwoText-Regular.otf", + "format": "otf" + }, + "source": "STIX Fonts 2.0", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "stix-two-text-bold", + "label": "STIX Two Text Bold", + "aliases": [ + "STIXTwoText-Bold", + "stixtwotext-bold" + ], + "program": { + "resource": "type3/library/fonts/stix/STIXTwoText-Bold.otf", + "format": "otf" + }, + "webProgram": { + "resource": "type3/library/fonts/stix/STIXTwoText-Bold.otf", + "format": "otf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/stix/STIXTwoText-Bold.otf", + "format": "otf" + }, + "source": "STIX Fonts 2.0", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "stix-two-text-italic", + "label": "STIX Two Text Italic", + "aliases": [ + "STIXTwoText-Italic" + ], + "program": { + "resource": "type3/library/fonts/stix/STIXTwoText-Italic.otf", + "format": "otf" + }, + "webProgram": { + "resource": "type3/library/fonts/stix/STIXTwoText-Italic.otf", + "format": "otf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/stix/STIXTwoText-Italic.otf", + "format": "otf" + }, + "source": "STIX Fonts 2.0", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "stix-two-math", + "label": "STIX Two Math", + "aliases": [ + "STIXTwoMath-Regular", + "stixtwomath" + ], + "program": { + "resource": "type3/library/fonts/stix/STIXTwoMath-Regular.otf", + "format": "otf" + }, + "webProgram": { + "resource": "type3/library/fonts/stix/STIXTwoMath-Regular.otf", + "format": "otf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/stix/STIXTwoMath-Regular.otf", + "format": "otf" + }, + "source": "STIX Fonts 2.0", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-thin", + "label": "Noto Sans Thin", + "aliases": [ + "NotoSans-Thin" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-Thin.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-Thin.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-Thin.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-extralight", + "label": "Noto Sans ExtraLight", + "aliases": [ + "NotoSans-ExtraLight" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-ExtraLight.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-ExtraLight.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-ExtraLight.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-light", + "label": "Noto Sans Light", + "aliases": [ + "NotoSans-Light" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-Light.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-Light.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-Light.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-regular", + "label": "Noto Sans", + "aliases": [ + "NotoSans", + "NotoSans-Regular", + "notosans" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-Regular.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-Regular.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-Regular.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-medium", + "label": "Noto Sans Medium", + "aliases": [ + "NotoSans-Medium" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-Medium.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-Medium.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-Medium.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-semibold", + "label": "Noto Sans SemiBold", + "aliases": [ + "NotoSans-SemiBold" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-SemiBold.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-SemiBold.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-SemiBold.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-bold", + "label": "Noto Sans Bold", + "aliases": [ + "NotoSans-Bold", + "notosans-bold" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-Bold.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-Bold.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-Bold.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-extrabold", + "label": "Noto Sans ExtraBold", + "aliases": [ + "NotoSans-ExtraBold" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-ExtraBold.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-ExtraBold.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-ExtraBold.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-black", + "label": "Noto Sans Black", + "aliases": [ + "NotoSans-Black" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-Black.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-Black.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-Black.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-thin-italic", + "label": "Noto Sans Thin Italic", + "aliases": [ + "NotoSans-ThinItalic" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-ThinItalic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-ThinItalic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-ThinItalic.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-extralight-italic", + "label": "Noto Sans ExtraLight Italic", + "aliases": [ + "NotoSans-ExtraLightItalic" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-ExtraLightItalic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-ExtraLightItalic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-ExtraLightItalic.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-light-italic", + "label": "Noto Sans Light Italic", + "aliases": [ + "NotoSans-LightItalic" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-LightItalic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-LightItalic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-LightItalic.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-italic", + "label": "Noto Sans Italic", + "aliases": [ + "NotoSans-Italic" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-Italic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-Italic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-Italic.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-medium-italic", + "label": "Noto Sans Medium Italic", + "aliases": [ + "NotoSans-MediumItalic" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-MediumItalic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-MediumItalic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-MediumItalic.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-semibold-italic", + "label": "Noto Sans SemiBold Italic", + "aliases": [ + "NotoSans-SemiBoldItalic" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-SemiBoldItalic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-SemiBoldItalic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-SemiBoldItalic.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-bold-italic", + "label": "Noto Sans Bold Italic", + "aliases": [ + "NotoSans-BoldItalic" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-BoldItalic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-BoldItalic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-BoldItalic.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-extrabold-italic", + "label": "Noto Sans ExtraBold Italic", + "aliases": [ + "NotoSans-ExtraBoldItalic" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-ExtraBoldItalic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-ExtraBoldItalic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-ExtraBoldItalic.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] + }, + { + "id": "noto-sans-black-italic", + "label": "Noto Sans Black Italic", + "aliases": [ + "NotoSans-BlackItalic" + ], + "program": { + "resource": "type3/library/fonts/noto/NotoSans-BlackItalic.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/noto/NotoSans-BlackItalic.ttf", + "format": "ttf" + }, + "pdfProgram": { + "resource": "type3/library/fonts/noto/NotoSans-BlackItalic.ttf", + "format": "ttf" + }, + "source": "Noto Sans (Google Fonts)", + "signatures": [], + "glyphCoverage": [] }, { "id": "sourcecodepro-regular", "label": "Source Code Pro", "aliases": [ "SourceCodePro-Regular", - "sourcecodepro-regular", - "NVMZUP+SourceCodePro-Regular" - ], - "signatures": [ - "sha256:96ba693001b2ab224ad5b5a7464cecd4d33e68f30fb23f78a8473dbb031ce246", - "sha256:72fca14e9e44fc41b0cdb1c6a088f0b07f882f9f04c51a0145f43cf8b285c5b6" + "sourcecodepro-regular" ], "program": { "resource": "type3/library/fonts/scp/SauceCodeProNerdFont-Regular.ttf", @@ -443,6 +1620,11 @@ "resource": "type3/library/fonts/scp/SauceCodeProNerdFont-Regular.ttf", "format": "ttf" }, + "source": "Sauce Code Pro Nerd Font", + "signatures": [ + "sha256:96ba693001b2ab224ad5b5a7464cecd4d33e68f30fb23f78a8473dbb031ce246", + "sha256:72fca14e9e44fc41b0cdb1c6a088f0b07f882f9f04c51a0145f43cf8b285c5b6" + ], "glyphCoverage": [ 46, 48, @@ -456,7 +1638,6 @@ 56, 57, 67 - ], - "source": "type3/samples/04_handout-intermediate.pdf" + ] } -] +] \ No newline at end of file diff --git a/docs/pdf_json_type3_library_management.md b/docs/pdf_json_type3_library_management.md new file mode 100644 index 000000000..56e13b055 --- /dev/null +++ b/docs/pdf_json_type3_library_management.md @@ -0,0 +1,660 @@ +# Type3 Font Library Management Guide + +## Overview + +This guide explains how to add new fonts to the Type3 font library, including: +1. Finding Type3 fonts in PDFs +2. Extracting and analyzing Type3 fonts +3. Adding pre-converted TTF/OTF fonts to the library +4. Importing fonts with example PDFs + +--- + +## Two Approaches to Adding Fonts + +### Approach 1: Import Existing TTF/OTF Files + +**When to use:** You already have a TTF/OTF file that matches a Type3 font you encounter. + +**Example:** You find a PDF with a Type3 font that's actually DejaVu Sans, and you have the official DejaVu Sans TTF file. + +### Approach 2: Extract from Type3 PDFs + +**When to use:** The Type3 font is unique to a PDF (no standard equivalent exists). + +**Example:** Custom corporate fonts, specialized scientific notation, or generated fonts. + +--- + +## Approach 1: Import Existing TTF/OTF Files + +This is the **recommended approach** when possible, as it gives you the full font with proper Unicode mappings. + +### Step 1: Find the Type3 Font Signature + +Use the signature tool to analyze a PDF containing the Type3 font: + +```bash +./gradlew :proprietary:type3SignatureTool \ + --args="--pdf examples/matplotlib_chart.pdf --output matplotlib_fonts.json --pretty" +``` + +**Output (`matplotlib_fonts.json`):** +```json +{ + "fonts": [ + { + "fontId": "F1", + "pageNumber": 1, + "baseName": "BMQQDV+DejaVuSans", + "subtype": "Type3", + "signature": "sha256:2be58b6ef1e29a83b8634d70b9e32c37a15dea2e608894439ef7224c35b77f5d", + "glyphCount": 50, + "glyphs": [ + { + "charCode": 65, + "glyphName": "A", + "unicode": 65, + "advanceWidth": 684, + "bbox": [0, 0, 684, 729] + } + ] + } + ] +} +``` + +**Key information:** +- `signature`: Unique fingerprint of this font +- `baseName`: Font name in the PDF (often subset like "BMQQDV+DejaVuSans") +- `glyphs`: Character codes and Unicode mappings + +### Step 2: Obtain the Matching TTF/OTF File + +**Sources:** +1. **System fonts:** Check if the font is already installed + - Windows: `C:\Windows\Fonts\` + - Linux: `/usr/share/fonts/` + - macOS: `/Library/Fonts/` + +2. **Official font websites:** + - [DejaVu Fonts](https://dejavu-fonts.github.io/) + - [Computer Modern Unicode](https://www.fontsquirrel.com/fonts/computer-modern) + - [STIX Fonts](https://www.stixfonts.org/) + - [Google Fonts](https://fonts.google.com/) + +3. **Font foundries:** If it's a commercial font, you'll need a license + +**Example - Getting DejaVu Sans:** +```bash +# Download from official source +wget https://github.com/dejavu-fonts/dejavu-fonts/releases/download/version_2_37/dejavu-fonts-ttf-2.37.tar.bz2 + +# Extract +tar xjf dejavu-fonts-ttf-2.37.tar.bz2 + +# Copy the needed font +cp dejavu-fonts-ttf-2.37/ttf/DejaVuSans.ttf app/core/src/main/resources/type3/library/fonts/dejavu/ +``` + +### Step 3: Add Entry to Library Index + +Edit `app/core/src/main/resources/type3/library/index.json`: + +```json +[ + { + "id": "dejavu-sans-regular", + "label": "DejaVu Sans", + "aliases": [ + "DejaVuSans", + "BMQQDV+DejaVuSans", + "DejaVuSansDisplay", + "dejavusans" + ], + "signatures": [ + "sha256:2be58b6ef1e29a83b8634d70b9e32c37a15dea2e608894439ef7224c35b77f5d" + ], + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSans.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSans.ttf", + "format": "ttf" + }, + "glyphCoverage": [32, 33, 65, 66, 67, 68, 69, ...], + "source": "DejaVu Fonts 2.37" + } +] +``` + +**Field descriptions:** + +| Field | Required | Description | Example | +|-------|----------|-------------|---------| +| `id` | ✅ | Unique identifier (lowercase, hyphenated) | `"dejavu-sans-bold"` | +| `label` | ✅ | Human-readable name | `"DejaVu Sans Bold"` | +| `aliases` | ✅ | Font name variations to match | `["DejaVuSans-Bold", "EVICAO+DejaVuSans-Bold"]` | +| `signatures` | ✅ | SHA256 hashes from signature tool | `["sha256:a1b2c3..."]` | +| `pdfProgram` | ✅ | Font file for PDF embedding | See below | +| `webProgram` | ⚠️ | Font file for browser preview (can be same as pdfProgram) | See below | +| `glyphCoverage` | ❌ | Unicode code points covered (optional) | `[65, 66, 67]` | +| `source` | ❌ | Attribution/version info (optional) | `"DejaVu Fonts 2.37"` | + +**Program format:** +```json +"pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSans.ttf", + "format": "ttf" +} +``` +- `resource`: Path relative to classpath root (or absolute file:// path) +- `format`: `"ttf"` or `"otf"` + +### Step 4: Add to Catalogue (Optional) + +Edit `app/core/src/main/resources/type3/catalogue.json`: + +```json +{ + "fonts": [ + { + "name": "DejaVuSans", + "source": "Matplotlib PDFs", + "variants": ["Regular", "Bold", "Oblique"], + "status": "complete" + } + ] +} +``` + +### Step 5: Test the Font + +1. **Rebuild the application:** + ```bash + ./gradlew clean build + ``` + +2. **Convert a PDF with the Type3 font:** + ```bash + curl -X POST http://localhost:8080/api/v1/convert/pdf/to-json \ + -F file=@test.pdf \ + -o output.json + ``` + +3. **Check the JSON output:** + ```bash + # Look for conversionCandidates + cat output.json | jq '.fonts[] | select(.baseName | contains("DejaVu"))' + ``` + +4. **Expected output:** + ```json + { + "id": "F1", + "baseName": "BMQQDV+DejaVuSans", + "subtype": "Type3", + "conversionCandidates": [ + { + "strategyId": "type3-library", + "status": "SUCCESS", + "message": "Matched DejaVu Sans via alias:dejavusans", + "pdfProgram": "T1RUTwAJAIAAAwAQQ0ZGIHHwJ9o...", + "pdfProgramFormat": "ttf" + } + ] + } + ``` + +5. **Test round-trip conversion:** + ```bash + # Convert back to PDF + curl -X POST http://localhost:8080/api/v1/convert/json/to-pdf \ + -F file=@output.json \ + -o roundtrip.pdf + + # Verify text renders correctly + pdftotext roundtrip.pdf - | head + ``` + +--- + +## Approach 2: Extract from Type3 PDFs + +When no standard TTF/OTF exists, you can convert the Type3 font itself. + +⚠️ **Note:** This produces a synthetic font that may not be perfect. Use Approach 1 whenever possible. + +### Step 1: Extract Type3 Metadata + +Same as Approach 1 - use the signature tool: + +```bash +./gradlew :proprietary:type3SignatureTool \ + --args="--pdf custom_font.pdf --output custom_font_analysis.json --pretty" +``` + +### Step 2: Convert Type3 to TTF Using Python Script + +Use the included conversion script: + +```bash +# Install fontTools if not already installed +pip install fonttools + +# Convert the Type3 font +python scripts/type3_to_cff.py \ + --input custom_font_analysis.json \ + --output-cff custom_font.otf \ + --output-ttf custom_font.ttf \ + --font-name "CustomFont" \ + --family-name "Custom Font Family" +``` + +**Script options:** +- `--input`: JSON file from signature tool +- `--output-cff`: OpenType-CFF output (best for PDF) +- `--output-ttf`: TrueType output (best for web) +- `--font-name`: PostScript name (no spaces) +- `--family-name`: Human-readable name + +### Step 3: Copy Font to Library + +```bash +# Create directory for custom fonts +mkdir -p app/core/src/main/resources/type3/library/fonts/custom/ + +# Copy the converted fonts +cp custom_font.otf app/core/src/main/resources/type3/library/fonts/custom/ +cp custom_font.ttf app/core/src/main/resources/type3/library/fonts/custom/ +``` + +### Step 4: Add to Library Index + +Same as Approach 1, but note the synthetic nature: + +```json +{ + "id": "custom-font-regular", + "label": "Custom Font", + "aliases": ["CustomFont", "ABCDEF+CustomFont"], + "signatures": ["sha256:extracted-from-json"], + "pdfProgram": { + "resource": "type3/library/fonts/custom/custom_font.otf", + "format": "otf" + }, + "webProgram": { + "resource": "type3/library/fonts/custom/custom_font.ttf", + "format": "ttf" + }, + "source": "Converted from custom_font.pdf", + "glyphCoverage": [65, 66, 67, 68, 69] +} +``` + +### Step 5: Quality Check + +Type3 → TTF conversion may have issues: + +1. **Check glyph rendering:** + - Open the TTF in a font viewer (FontForge, FontDrop) + - Verify all glyphs look correct + +2. **Check metrics:** + - Compare advance widths to original + - Verify bounding boxes + +3. **Test in PDF:** + - Create a test document using the font + - Verify it renders the same as the original PDF + +--- + +## Adding Fonts with Example PDFs + +### Scenario: You Want to Support Matplotlib PDFs + +Matplotlib uses DejaVu Sans fonts but embeds them as Type3 fonts with subset names. + +### Step 1: Collect Example PDFs + +```bash +# Create a samples directory +mkdir -p samples/matplotlib/ + +# Download or copy example PDFs +cp ~/Downloads/matplotlib_chart.pdf samples/matplotlib/01_chart.pdf +cp ~/Downloads/matplotlib_plot.pdf samples/matplotlib/02_plot.pdf +``` + +### Step 2: Batch Analyze Fonts + +```bash +# Analyze all samples +for pdf in samples/matplotlib/*.pdf; do + basename=$(basename "$pdf" .pdf) + ./gradlew :proprietary:type3SignatureTool \ + --args="--pdf $pdf --output analysis_${basename}.json --pretty" +done +``` + +### Step 3: Identify Common Fonts + +Use the summarize script to see what fonts appear: + +```bash +python scripts/summarize_type3_signatures.py \ + --signatures-dir . \ + --output summary.md +``` + +**Output (`summary.md`):** +```markdown +# Type3 Font Signature Inventory + +## Fonts by Signature + +### sha256:2be58b6ef1e... +- **Alias:** DejaVuSans, BMQQDV+DejaVuSans +- **Seen in:** 01_chart.pdf, 02_plot.pdf +- **Status:** ✅ In library (dejavu-sans-regular) + +### sha256:a1b2c3d4e5f6... +- **Alias:** DejaVuSans-Bold, EVICAO+DejaVuSans-Bold +- **Seen in:** 01_chart.pdf +- **Status:** ❌ Missing from library +``` + +### Step 4: Add Missing Fonts + +For each missing font: + +1. **Download the standard version:** + ```bash + # DejaVu Sans Bold + wget https://github.com/dejavu-fonts/dejavu-fonts/releases/download/version_2_37/dejavu-fonts-ttf-2.37.tar.bz2 + tar xjf dejavu-fonts-ttf-2.37.tar.bz2 + cp dejavu-fonts-ttf-2.37/ttf/DejaVuSans-Bold.ttf \ + app/core/src/main/resources/type3/library/fonts/dejavu/ + ``` + +2. **Add to index.json:** + ```json + { + "id": "dejavu-sans-bold", + "label": "DejaVu Sans Bold", + "aliases": [ + "DejaVuSans-Bold", + "EVICAO+DejaVuSans-Bold", + "dejavusans-bold" + ], + "signatures": [ + "sha256:a1b2c3d4e5f6..." + ], + "pdfProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSans-Bold.ttf", + "format": "ttf" + }, + "webProgram": { + "resource": "type3/library/fonts/dejavu/DejaVuSans-Bold.ttf", + "format": "ttf" + }, + "source": "DejaVu Fonts 2.37" + } + ``` + +### Step 5: Update Library Automatically + +Use the update script to sync signatures: + +```bash +python scripts/update_type3_library.py \ + --signatures-dir . \ + --apply +``` + +This script: +- Reads all `analysis_*.json` files +- Matches them to library entries by alias +- Updates signatures and glyph coverage +- Writes back to `index.json` + +### Step 6: Verify Coverage + +Test with all your example PDFs: + +```bash +for pdf in samples/matplotlib/*.pdf; do + echo "Testing $pdf..." + curl -X POST http://localhost:8080/api/v1/convert/pdf/to-json \ + -F file=@"$pdf" \ + -o test_output.json + + # Check for successful matches + matches=$(cat test_output.json | jq '[.fonts[].conversionCandidates[] | select(.status == "SUCCESS")] | length') + total=$(cat test_output.json | jq '.fonts | length') + echo " Matched $matches of $total fonts" +done +``` + +--- + +## Common Fonts to Add + +### Matplotlib (Python plotting library) + +**Fonts used:** DejaVu Sans family + +```bash +# Download DejaVu fonts +wget https://github.com/dejavu-fonts/dejavu-fonts/releases/download/version_2_37/dejavu-fonts-ttf-2.37.tar.bz2 +tar xjf dejavu-fonts-ttf-2.37.tar.bz2 + +# Copy needed variants +cp dejavu-fonts-ttf-2.37/ttf/DejaVuSans.ttf \ + app/core/src/main/resources/type3/library/fonts/dejavu/ +cp dejavu-fonts-ttf-2.37/ttf/DejaVuSans-Bold.ttf \ + app/core/src/main/resources/type3/library/fonts/dejavu/ +cp dejavu-fonts-ttf-2.37/ttf/DejaVuSans-Oblique.ttf \ + app/core/src/main/resources/type3/library/fonts/dejavu/ +cp dejavu-fonts-ttf-2.37/ttf/DejaVuSansMono.ttf \ + app/core/src/main/resources/type3/library/fonts/dejavu/ +``` + +### LaTeX Documents + +**Fonts used:** Computer Modern family + +```bash +# Download Computer Modern Unicode +wget https://downloads.sourceforge.net/project/cm-unicode/cm-unicode/0.7.0/cm-unicode-0.7.0-ttf.tar.xz +tar xJf cm-unicode-0.7.0-ttf.tar.xz + +# Copy common variants +cp cm-unicode-0.7.0/cmunrm.ttf \ + app/core/src/main/resources/type3/library/fonts/cm/cmr10.ttf +cp cm-unicode-0.7.0/cmunti.ttf \ + app/core/src/main/resources/type3/library/fonts/cm/cmmi10.ttf +cp cm-unicode-0.7.0/cmunsy.ttf \ + app/core/src/main/resources/type3/library/fonts/cm/cmsy10.ttf +``` + +### Scientific Documents + +**Fonts used:** STIX fonts + +```bash +# Download STIX +wget https://github.com/stipub/stixfonts/raw/master/fonts/static_otf/STIXTwoText-Regular.otf + +# Copy to library +cp STIXTwoText-Regular.otf \ + app/core/src/main/resources/type3/library/fonts/stix/ +``` + +--- + +## Troubleshooting + +### Signature Doesn't Match + +**Problem:** You added a font but PDFs still don't match. + +**Causes:** +1. **Different font version:** The Type3 font in the PDF uses a different version +2. **Subset differences:** Subset fonts may have different signatures +3. **Alias mismatch:** Font name in PDF doesn't match any alias + +**Solutions:** + +1. **Check the PDF's font name:** + ```bash + pdffonts sample.pdf + ``` + Output shows: `BMQQDV+DejaVuSans` + +2. **Add the subset name as an alias:** + ```json + "aliases": [ + "DejaVuSans", + "BMQQDV+DejaVuSans", // Add this + "dejavusans" + ] + ``` + +3. **Add multiple signatures:** + ```json + "signatures": [ + "sha256:original-signature", + "sha256:subset-signature" // Add from your PDF + ] + ``` + +### Font Renders Incorrectly + +**Problem:** Text appears but glyphs look wrong. + +**Causes:** +1. **Wrong font file:** You matched a different font +2. **Glyph coverage mismatch:** Font doesn't have all the glyphs +3. **Encoding issues:** Character codes don't match + +**Solutions:** + +1. **Verify it's the right font:** + - Open both the Type3 PDF and your TTF in a font viewer + - Compare glyph shapes visually + +2. **Check glyph coverage:** + ```bash + # Extract glyphs from Type3 + ./gradlew :proprietary:type3SignatureTool \ + --args="--pdf sample.pdf --output analysis.json" + + # Compare to font file + ttfdump -t cmap your_font.ttf | grep "glyphID" + ``` + +3. **Use a more complete font version:** + - Get the full font (not a subset) + - Ensure all Unicode ranges are covered + +### Missing Glyphs + +**Problem:** Some characters don't render. + +**Cause:** The TTF/OTF file doesn't have all the glyphs that the Type3 font had. + +**Solution:** You need a more complete font, or must use Approach 2 to convert the Type3 font itself. + +--- + +## Library Maintenance Scripts + +### `type3SignatureTool` + +**Purpose:** Analyze Type3 fonts in a PDF + +```bash +./gradlew :proprietary:type3SignatureTool \ + --args="--pdf INPUT.pdf --output OUTPUT.json [--pretty]" +``` + +### `summarize_type3_signatures.py` + +**Purpose:** Create an inventory of fonts across multiple PDFs + +```bash +python scripts/summarize_type3_signatures.py \ + --signatures-dir path/to/jsons/ \ + --output inventory.md +``` + +### `update_type3_library.py` + +**Purpose:** Sync signature JSON files with library index + +```bash +# Dry run (show what would change) +python scripts/update_type3_library.py \ + --signatures-dir analysis/ + +# Apply changes +python scripts/update_type3_library.py \ + --signatures-dir analysis/ \ + --apply +``` + +### `type3_to_cff.py` + +**Purpose:** Convert Type3 glyph JSON to TTF/OTF + +```bash +python scripts/type3_to_cff.py \ + --input type3_data.json \ + --output-cff font.otf \ + --output-ttf font.ttf \ + --font-name MyFont \ + --family-name "My Font Family" +``` + +--- + +## Best Practices + +1. **Always prefer official fonts** (Approach 1) over synthesized ones (Approach 2) +2. **Use multiple signatures** for fonts that appear in different PDFs with different subset names +3. **Test with real PDFs** before considering a font "done" +4. **Document the source** in the `source` field for attribution and versioning +5. **Keep example PDFs** for each font in case you need to debug later +6. **Version the library** - commit `index.json` changes with clear descriptions + +--- + +## File Size Considerations + +### Font File Sizes + +Typical sizes: +- **DejaVu Sans:** ~750KB per variant +- **Computer Modern:** ~200-400KB per variant +- **STIX Math:** ~500KB-1MB per variant + +### Library Size Management + +Current library: **~3MB** (10 fonts) + +To keep the library manageable: +1. **Only include common fonts** (used in >5% of PDFs you process) +2. **Don't include every variant** (e.g., skip "Ultra Light" if rarely used) +3. **Consider subsetting** for languages you don't support +4. **Use OTF/CFF over TTF** when possible (better compression for PDF) + +--- + +## Related Documentation + +- [PDF JSON Type3 Font System](pdf_json_type3_fonts.md) - Technical architecture +- [PDF Text Edit Flow](pdf_text_edit_flow.md) - Overall editing workflow +- [Type3 Fallback Plan](type3_fallback_plan.md) - Original design document