From e915e1aa7daef5d8e484225ecd8a527173560bee Mon Sep 17 00:00:00 2001
From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
Date: Sun, 9 Nov 2025 12:43:33 +0000
Subject: [PATCH] tpye3 text edit init
---
.gitignore | 14 +
.../src/main/resources/settings.yml.template | 4 +
.../src/main/resources/type3/catalogue.json | 592 +
.../type3/library/fonts/cm/cmmi10.ttf | 25 +
.../type3/library/fonts/cm/cmr10.ttf | Bin 0 -> 26348 bytes
.../type3/library/fonts/cm/cmsy10.ttf | Bin 0 -> 29396 bytes
.../library/fonts/dejavu/DejaVuSans-Bold.ttf | Bin 0 -> 708920 bytes
.../fonts/dejavu/DejaVuSans-Oblique.ttf | Bin 0 -> 637648 bytes
.../type3/library/fonts/dejavu/DejaVuSans.ttf | Bin 0 -> 759720 bytes
.../library/fonts/dejavu/DejaVuSansMono.ttf | Bin 0 -> 343140 bytes
.../scp/SauceCodeProNerdFont-Regular.ttf | 1882 +++
.../fonts/stix/STIXSizeThreeSym-Regular.otf | 2055 +++
.../main/resources/type3/library/index.json | 462 +
app/proprietary/build.gradle | 8 +
.../software/SPDF/model/json/PdfJsonFont.java | 8 +
.../json/PdfJsonFontConversionCandidate.java | 69 +
.../json/PdfJsonFontConversionStatus.java | 9 +
.../model/json/PdfJsonFontType3Glyph.java | 27 +
.../SPDF/model/json/PdfJsonTextElement.java | 1 +
.../service/PdfJsonConversionService.java | 1225 +-
.../service/PdfJsonFallbackFontService.java | 12 +-
.../pdfjson/type3/Type3ConversionRequest.java | 17 +
.../type3/Type3ConversionStrategy.java | 32 +
.../type3/Type3FontConversionService.java | 133 +
.../type3/Type3FontSignatureCalculator.java | 218 +
.../pdfjson/type3/Type3GlyphContext.java | 38 +
.../pdfjson/type3/Type3GlyphExtractor.java | 126 +
.../pdfjson/type3/Type3GraphicsEngine.java | 164 +
.../pdfjson/type3/Type3LibraryStrategy.java | 113 +
.../type3/library/Type3FontLibrary.java | 299 +
.../type3/library/Type3FontLibraryEntry.java | 30 +
.../type3/library/Type3FontLibraryMatch.java | 12 +
.../library/Type3FontLibraryPayload.java | 13 +
.../type3/model/Type3GlyphOutline.java | 25 +
.../type3/tool/Type3SignatureTool.java | 299 +
docs/pdf_json_type3_fonts.md | 443 +
docs/pdf_text_edit_flow.md | 50 +
docs/type3/harvest_report.json | 13216 ++++++++++++++++
docs/type3/signature_inventory.md | 191 +
docs/type3_fallback_plan.md | 150 +
.../tools/pdfJsonEditor/pdfJsonEditorTypes.ts | 1 +
.../tools/pdfJsonEditor/pdfJsonEditorUtils.ts | 10 +
scripts/download_pdf_collection.py | 583 +
scripts/download_pdf_samples.py | 195 +
scripts/harvest_type3_fonts.py | 245 +
scripts/index_type3_catalogue.py | 75 +
scripts/summarize_type3_signatures.py | 97 +
scripts/type3_to_cff.py | 481 +
scripts/update_type3_library.py | 243 +
49 files changed, 23741 insertions(+), 151 deletions(-)
create mode 100644 app/core/src/main/resources/type3/catalogue.json
create mode 100644 app/core/src/main/resources/type3/library/fonts/cm/cmmi10.ttf
create mode 100644 app/core/src/main/resources/type3/library/fonts/cm/cmr10.ttf
create mode 100644 app/core/src/main/resources/type3/library/fonts/cm/cmsy10.ttf
create mode 100644 app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-Bold.ttf
create mode 100644 app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans-Oblique.ttf
create mode 100644 app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSans.ttf
create mode 100644 app/core/src/main/resources/type3/library/fonts/dejavu/DejaVuSansMono.ttf
create mode 100644 app/core/src/main/resources/type3/library/fonts/scp/SauceCodeProNerdFont-Regular.ttf
create mode 100644 app/core/src/main/resources/type3/library/fonts/stix/STIXSizeThreeSym-Regular.otf
create mode 100644 app/core/src/main/resources/type3/library/index.json
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontConversionCandidate.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontConversionStatus.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontType3Glyph.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3ConversionRequest.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3ConversionStrategy.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3FontConversionService.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3FontSignatureCalculator.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GlyphContext.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GlyphExtractor.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GraphicsEngine.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3LibraryStrategy.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibrary.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryEntry.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryMatch.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryPayload.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/model/Type3GlyphOutline.java
create mode 100644 app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/tool/Type3SignatureTool.java
create mode 100644 docs/pdf_json_type3_fonts.md
create mode 100644 docs/pdf_text_edit_flow.md
create mode 100644 docs/type3/harvest_report.json
create mode 100644 docs/type3/signature_inventory.md
create mode 100644 docs/type3_fallback_plan.md
create mode 100644 scripts/download_pdf_collection.py
create mode 100644 scripts/download_pdf_samples.py
create mode 100644 scripts/harvest_type3_fonts.py
create mode 100644 scripts/index_type3_catalogue.py
create mode 100644 scripts/summarize_type3_signatures.py
create mode 100644 scripts/type3_to_cff.py
create mode 100644 scripts/update_type3_library.py
diff --git a/.gitignore b/.gitignore
index b339d7ff69..8c0402ad55 100644
--- a/.gitignore
+++ b/.gitignore
@@ -210,3 +210,17 @@ node_modules/
test_batch.json
*.backup.*.json
frontend/public/locales/*/translation.backup*.json
+
+# Development/build artifacts
+.gradle-cache/
+scripts/pdf-collection/
+**/tmp/
+*.backup
+
+# Type3 development data
+docs/type3/signatures/
+
+
+# Type3 sample PDFs (development only)
+**/type3/samples/
+
diff --git a/app/core/src/main/resources/settings.yml.template b/app/core/src/main/resources/settings.yml.template
index c7e86a6e08..cf117e649d 100644
--- a/app/core/src/main/resources/settings.yml.template
+++ b/app/core/src/main/resources/settings.yml.template
@@ -183,6 +183,10 @@ stirling:
python-command: /opt/venv/bin/python3 # Python interpreter path
python-script: /scripts/convert_cff_to_ttf.py # Path to font wrapping script
fontforge-command: fontforge # Override if FontForge is installed under a different name/path
+ type3:
+ library:
+ enabled: true # Match common Type3 fonts against the built-in library of converted programs
+ index: classpath:/type3/library/index.json # Override to point at a custom index.json (supports http:, file:, classpath:)
ui:
appNameNavbar: '' # name displayed on the navigation bar
diff --git a/app/core/src/main/resources/type3/catalogue.json b/app/core/src/main/resources/type3/catalogue.json
new file mode 100644
index 0000000000..4aca2f414d
--- /dev/null
+++ b/app/core/src/main/resources/type3/catalogue.json
@@ -0,0 +1,592 @@
+[
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "1867"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "1888"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "2029"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "2069"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "2089"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "2116"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSansMono",
+ "encoding": "2174"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans-Oblique",
+ "encoding": "2192"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "2209"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "Cmsy10",
+ "encoding": "2228"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "STIXSizeThreeSym-Regular",
+ "encoding": "2233"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSansDisplay",
+ "encoding": "2239"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "4403"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "4438"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "4519"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "4685"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "4733"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "4782"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "4813"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "4834"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSansMono",
+ "encoding": "4878"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "4906"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "4929"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "4971"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5001"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5030"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5052"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5083"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5116"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5143"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5175"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5207"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5243"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "Cmr10",
+ "encoding": "5263"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "Cmex10",
+ "encoding": "5270"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "Cmsy10",
+ "encoding": "5275"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "Cmmi10",
+ "encoding": "5280"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5295"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans-Oblique",
+ "encoding": "5313"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSansDisplay",
+ "encoding": "5319"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5334"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5370"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5399"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5427"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5459"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5486"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5513"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5554"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5601"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5647"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5694"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5732"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5771"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5803"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5861"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5904"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5924"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "5951"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "6084"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "6445"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "7195"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "7409"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "7474"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "7708"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "7747"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "7885"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "9029"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "9617"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "10460"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "11445"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans-Bold",
+ "encoding": "11486"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "11497"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "11543"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "12280"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "12301"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "12350"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "12372"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "12395"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "12416"
+ },
+ {
+ "source": "01_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "13324"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "3214"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "3251"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "7190"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "9937"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "10792"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "10852"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "14712"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "18396"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "18719"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans-Bold",
+ "encoding": "18741"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "18778"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "18804"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "20974"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "20993"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "21093"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "21117"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "21141"
+ },
+ {
+ "source": "02_Matplotlib.pdf",
+ "fontName": "DejaVuSans",
+ "encoding": "21174"
+ },
+ {
+ "source": "03_handout-beginner.pdf",
+ "fontName": "BMQQDV+DejaVuSans",
+ "encoding": "17"
+ },
+ {
+ "source": "03_handout-beginner.pdf",
+ "fontName": "EVICAO+DejaVuSans-Bold",
+ "encoding": "133"
+ },
+ {
+ "source": "03_handout-beginner.pdf",
+ "fontName": "BMQQDV+DejaVuSans",
+ "encoding": "152"
+ },
+ {
+ "source": "04_handout-intermediate.pdf",
+ "fontName": "BMQQDV+DejaVuSans",
+ "encoding": "13"
+ },
+ {
+ "source": "04_handout-intermediate.pdf",
+ "fontName": "BMQQDV+DejaVuSans",
+ "encoding": "85"
+ },
+ {
+ "source": "04_handout-intermediate.pdf",
+ "fontName": "BMQQDV+DejaVuSans",
+ "encoding": "104"
+ },
+ {
+ "source": "04_handout-intermediate.pdf",
+ "fontName": "BMQQDV+DejaVuSans",
+ "encoding": "121"
+ },
+ {
+ "source": "04_handout-intermediate.pdf",
+ "fontName": "BMQQDV+DejaVuSans",
+ "encoding": "135"
+ },
+ {
+ "source": "04_handout-intermediate.pdf",
+ "fontName": "BMQQDV+DejaVuSans",
+ "encoding": "159"
+ },
+ {
+ "source": "04_handout-intermediate.pdf",
+ "fontName": "BMQQDV+DejaVuSans",
+ "encoding": "179"
+ },
+ {
+ "source": "04_handout-intermediate.pdf",
+ "fontName": "BMQQDV+DejaVuSans",
+ "encoding": "198"
+ },
+ {
+ "source": "04_handout-intermediate.pdf",
+ "fontName": "NVMZUP+SourceCodePro-Regular",
+ "encoding": "208"
+ },
+ {
+ "source": "04_handout-intermediate.pdf",
+ "fontName": "BMQQDV+DejaVuSans",
+ "encoding": "231"
+ },
+ {
+ "source": "04_handout-intermediate.pdf",
+ "fontName": "NVMZUP+SourceCodePro-Regular",
+ "encoding": "241"
+ },
+ {
+ "source": "07_matplotlib.pdf",
+ "fontName": "SauceCodePowerline-Bold",
+ "encoding": "22"
+ },
+ {
+ "source": "07_matplotlib.pdf",
+ "fontName": "SauceCodePowerline-Regular",
+ "encoding": "47"
+ },
+ {
+ "source": "07_matplotlib.pdf",
+ "fontName": "SauceCodePowerline-Regular",
+ "encoding": "65"
+ },
+ {
+ "source": "07_matplotlib.pdf",
+ "fontName": "SauceCodePowerline-Bold",
+ "encoding": "110"
+ },
+ {
+ "source": "08_matplotlib.pdf",
+ "fontName": "F36",
+ "encoding": "12"
+ },
+ {
+ "source": "08_matplotlib.pdf",
+ "fontName": "F59",
+ "encoding": "42"
+ }
+]
\ No newline at end of file
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
new file mode 100644
index 0000000000..fd9d30ced7
--- /dev/null
+++ b/app/core/src/main/resources/type3/library/fonts/cm/cmmi10.ttf
@@ -0,0 +1,25 @@
+
+
+
+ Index of /sites/ctan.org/fonts/cm/ps-type1/bakoma
+
+
+Index of /sites/ctan.org/fonts/cm/ps-type1/bakoma
+
Name Last modified Size Description
Parent Directory -
+
BaKoMa-AMS.Fonts 2005-06-15 21:10 9.0K
+
BaKoMa-CM.Fonts 2005-06-15 21:09 9.4K
+
LICENCE 2005-06-15 22:56 1.4K
+
README.news 2005-06-15 23:25 959
+
afm/ 2009-06-30 22:43 -
+
bkm-art.ps.gz 1995-01-23 11:12 110K
+
etc/ 2009-06-30 22:43 -
+
mac/ 2009-06-30 22:43 -
+
mrf/ 2009-06-30 22:43 -
+
otf/ 2009-06-30 22:43 -
+
patched-pfb/ 2009-06-30 22:43 -
+
pfb/ 2009-06-30 22:43 -
+
pfm/ 2009-06-30 22:43 -
+
tfm/ 2009-06-30 22:43 -
+
ttf/ 2009-06-30 22:43 -
+
+
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
new file mode 100644
index 0000000000000000000000000000000000000000..8bc44966a84421629220f03a87d1cf479733d2aa
GIT binary patch
literal 26348
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
literal 0
HcmV?d00001
diff --git a/app/core/src/main/resources/type3/library/fonts/cm/cmsy10.ttf b/app/core/src/main/resources/type3/library/fonts/cm/cmsy10.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..45d8421a5b118b1f49132337f80fb7730521483a
GIT binary patch
literal 29396
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