agent-markdown-pdf 0.2.1__tar.gz → 0.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/PKG-INFO +19 -31
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/README.md +18 -30
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/agent_markdown_pdf.egg-info/PKG-INFO +19 -31
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/core/doctor.py +38 -16
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/core/fonts.py +21 -2
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/skills/SKILL.md +6 -2
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/pyproject.toml +1 -1
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/tests/test_core.py +69 -4
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/LICENSE +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/agent_markdown_pdf.egg-info/SOURCES.txt +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/agent_markdown_pdf.egg-info/dependency_links.txt +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/agent_markdown_pdf.egg-info/entry_points.txt +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/agent_markdown_pdf.egg-info/requires.txt +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/agent_markdown_pdf.egg-info/top_level.txt +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/__init__.py +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/__main__.py +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/api.py +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/core/__init__.py +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/core/html.py +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/core/inline.py +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/core/katex.py +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/core/markdown.py +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/core/mermaid.py +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/core/obsidian.py +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/core/pdf.py +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/mdtopdf_cli.py +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/themes/default.css +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/LICENSE +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/contrib/mhchem.min.js +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Main-Bold.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Main-Italic.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Main-Regular.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Math-Italic.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Script-Regular.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/katex.min.css +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/katex.min.js +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/setup.cfg +0 -0
- {agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/tests/test_full_e2e.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-markdown-pdf
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: Agent-friendly Markdown-to-PDF CLI with HTML preview and JSON diagnostics
|
|
5
5
|
Author: rainp
|
|
6
6
|
License-Expression: MIT
|
|
@@ -326,28 +326,25 @@ and macOS package managers usually provide them through system packages.
|
|
|
326
326
|
The default theme uses a PDFium-safe Latin-first font stack. Latin fonts are
|
|
327
327
|
listed before CJK fonts so ASCII digits, dates, versions, and page numbers are
|
|
328
328
|
not embedded into CJK font subsets that some Chrome/PDFium renderers handle
|
|
329
|
-
poorly. Chinese text still falls back to the CJK side of the stack
|
|
330
|
-
`Microsoft YaHei` is the first preferred CJK font. If it is missing, the theme
|
|
331
|
-
falls back to `PingFang SC`, `Noto Sans SC`, `Noto Sans CJK SC`,
|
|
332
|
-
`Source Han Sans SC`, and other available CJK fonts.
|
|
329
|
+
poorly. Chinese text still falls back to the CJK side of the stack.
|
|
333
330
|
|
|
334
|
-
For Linux containers or agent sandboxes,
|
|
335
|
-
|
|
331
|
+
For Linux containers or agent sandboxes, use open fonts that can be installed
|
|
332
|
+
from the distribution package manager. The recommended baseline is:
|
|
336
333
|
|
|
337
334
|
```shell
|
|
338
335
|
sudo apt-get install -y --no-install-recommends \
|
|
339
336
|
fontconfig \
|
|
340
|
-
fonts-noto-cjk \
|
|
341
337
|
fonts-liberation \
|
|
342
|
-
fonts-dejavu-core
|
|
338
|
+
fonts-dejavu-core \
|
|
339
|
+
fonts-noto-cjk \
|
|
340
|
+
fonts-stix
|
|
343
341
|
fc-cache -f
|
|
344
342
|
```
|
|
345
343
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
Chinese fallback; the Latin-first order is still kept for PDFium-safe digits.
|
|
344
|
+
With that setup, Linux output uses `Liberation Sans` / `DejaVu Sans` for Latin
|
|
345
|
+
text and digits, `Noto Sans CJK SC` for Chinese, and STIX for math fallback.
|
|
346
|
+
Microsoft YaHei and Segoe UI Emoji are not Linux runtime requirements and are
|
|
347
|
+
not installed or distributed by `mdtopdf`.
|
|
351
348
|
|
|
352
349
|
Code blocks prefer `Cascadia Mono` / `Cascadia Code`, then `Consolas`,
|
|
353
350
|
`Noto Sans Mono CJK SC`, `Liberation Mono`, and `DejaVu Sans Mono`. On Debian,
|
|
@@ -355,20 +352,10 @@ Code blocks prefer `Cascadia Mono` / `Cascadia Code`, then `Consolas`,
|
|
|
355
352
|
Cascadia Code yourself or let the theme fall back to the installed monospace
|
|
356
353
|
fonts.
|
|
357
354
|
|
|
358
|
-
Emoji are rendered through the system emoji font.
|
|
359
|
-
`
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
`Apple Color Emoji`, `Noto Emoji`, `Noto Color Emoji`, and other installed emoji
|
|
363
|
-
fonts. Whether the final PDF keeps color emoji still depends on WeasyPrint,
|
|
364
|
-
Pango/Cairo, and the PDF viewer.
|
|
365
|
-
|
|
366
|
-
Optional fallback fonts:
|
|
367
|
-
|
|
368
|
-
```shell
|
|
369
|
-
sudo apt-get install -y --no-install-recommends fonts-noto-color-emoji fonts-stix
|
|
370
|
-
fc-cache -f
|
|
371
|
-
```
|
|
355
|
+
Emoji are rendered through the system emoji font. On Linux, prefer monochrome
|
|
356
|
+
`Noto Emoji` for stable PDF layout. `Noto Color Emoji` is easier to install from
|
|
357
|
+
many distro package managers and is safe to use as a fallback, but color emoji
|
|
358
|
+
often render too small or misaligned in WeasyPrint/Pango/Cairo/PDFium output.
|
|
372
359
|
|
|
373
360
|
On Windows, install the native libraries separately. A common MSYS2 setup is:
|
|
374
361
|
|
|
@@ -419,6 +406,7 @@ MIT. Bundled KaTeX assets are also distributed under the MIT license; see
|
|
|
419
406
|
|
|
420
407
|
`mdtopdf` does not bundle CJK body fonts, emoji fonts, or proprietary system
|
|
421
408
|
fonts. The default theme references local system fonts such as Segoe UI,
|
|
422
|
-
Microsoft YaHei, PingFang SC, Segoe UI Emoji, Noto
|
|
423
|
-
Cascadia Code, and Consolas, but those font files come from
|
|
424
|
-
system or runtime environment.
|
|
409
|
+
Microsoft YaHei, PingFang SC, Segoe UI Emoji, Noto Sans CJK SC,
|
|
410
|
+
Noto Emoji, Noto Color Emoji, Cascadia Code, and Consolas, but those font files come from
|
|
411
|
+
the user's operating system or runtime environment. Public Linux images should
|
|
412
|
+
prefer the open-font baseline above.
|
|
@@ -285,28 +285,25 @@ and macOS package managers usually provide them through system packages.
|
|
|
285
285
|
The default theme uses a PDFium-safe Latin-first font stack. Latin fonts are
|
|
286
286
|
listed before CJK fonts so ASCII digits, dates, versions, and page numbers are
|
|
287
287
|
not embedded into CJK font subsets that some Chrome/PDFium renderers handle
|
|
288
|
-
poorly. Chinese text still falls back to the CJK side of the stack
|
|
289
|
-
`Microsoft YaHei` is the first preferred CJK font. If it is missing, the theme
|
|
290
|
-
falls back to `PingFang SC`, `Noto Sans SC`, `Noto Sans CJK SC`,
|
|
291
|
-
`Source Han Sans SC`, and other available CJK fonts.
|
|
288
|
+
poorly. Chinese text still falls back to the CJK side of the stack.
|
|
292
289
|
|
|
293
|
-
For Linux containers or agent sandboxes,
|
|
294
|
-
|
|
290
|
+
For Linux containers or agent sandboxes, use open fonts that can be installed
|
|
291
|
+
from the distribution package manager. The recommended baseline is:
|
|
295
292
|
|
|
296
293
|
```shell
|
|
297
294
|
sudo apt-get install -y --no-install-recommends \
|
|
298
295
|
fontconfig \
|
|
299
|
-
fonts-noto-cjk \
|
|
300
296
|
fonts-liberation \
|
|
301
|
-
fonts-dejavu-core
|
|
297
|
+
fonts-dejavu-core \
|
|
298
|
+
fonts-noto-cjk \
|
|
299
|
+
fonts-stix
|
|
302
300
|
fc-cache -f
|
|
303
301
|
```
|
|
304
302
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
Chinese fallback; the Latin-first order is still kept for PDFium-safe digits.
|
|
303
|
+
With that setup, Linux output uses `Liberation Sans` / `DejaVu Sans` for Latin
|
|
304
|
+
text and digits, `Noto Sans CJK SC` for Chinese, and STIX for math fallback.
|
|
305
|
+
Microsoft YaHei and Segoe UI Emoji are not Linux runtime requirements and are
|
|
306
|
+
not installed or distributed by `mdtopdf`.
|
|
310
307
|
|
|
311
308
|
Code blocks prefer `Cascadia Mono` / `Cascadia Code`, then `Consolas`,
|
|
312
309
|
`Noto Sans Mono CJK SC`, `Liberation Mono`, and `DejaVu Sans Mono`. On Debian,
|
|
@@ -314,20 +311,10 @@ Code blocks prefer `Cascadia Mono` / `Cascadia Code`, then `Consolas`,
|
|
|
314
311
|
Cascadia Code yourself or let the theme fall back to the installed monospace
|
|
315
312
|
fonts.
|
|
316
313
|
|
|
317
|
-
Emoji are rendered through the system emoji font.
|
|
318
|
-
`
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
`Apple Color Emoji`, `Noto Emoji`, `Noto Color Emoji`, and other installed emoji
|
|
322
|
-
fonts. Whether the final PDF keeps color emoji still depends on WeasyPrint,
|
|
323
|
-
Pango/Cairo, and the PDF viewer.
|
|
324
|
-
|
|
325
|
-
Optional fallback fonts:
|
|
326
|
-
|
|
327
|
-
```shell
|
|
328
|
-
sudo apt-get install -y --no-install-recommends fonts-noto-color-emoji fonts-stix
|
|
329
|
-
fc-cache -f
|
|
330
|
-
```
|
|
314
|
+
Emoji are rendered through the system emoji font. On Linux, prefer monochrome
|
|
315
|
+
`Noto Emoji` for stable PDF layout. `Noto Color Emoji` is easier to install from
|
|
316
|
+
many distro package managers and is safe to use as a fallback, but color emoji
|
|
317
|
+
often render too small or misaligned in WeasyPrint/Pango/Cairo/PDFium output.
|
|
331
318
|
|
|
332
319
|
On Windows, install the native libraries separately. A common MSYS2 setup is:
|
|
333
320
|
|
|
@@ -378,6 +365,7 @@ MIT. Bundled KaTeX assets are also distributed under the MIT license; see
|
|
|
378
365
|
|
|
379
366
|
`mdtopdf` does not bundle CJK body fonts, emoji fonts, or proprietary system
|
|
380
367
|
fonts. The default theme references local system fonts such as Segoe UI,
|
|
381
|
-
Microsoft YaHei, PingFang SC, Segoe UI Emoji, Noto
|
|
382
|
-
Cascadia Code, and Consolas, but those font files come from
|
|
383
|
-
system or runtime environment.
|
|
368
|
+
Microsoft YaHei, PingFang SC, Segoe UI Emoji, Noto Sans CJK SC,
|
|
369
|
+
Noto Emoji, Noto Color Emoji, Cascadia Code, and Consolas, but those font files come from
|
|
370
|
+
the user's operating system or runtime environment. Public Linux images should
|
|
371
|
+
prefer the open-font baseline above.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-markdown-pdf
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: Agent-friendly Markdown-to-PDF CLI with HTML preview and JSON diagnostics
|
|
5
5
|
Author: rainp
|
|
6
6
|
License-Expression: MIT
|
|
@@ -326,28 +326,25 @@ and macOS package managers usually provide them through system packages.
|
|
|
326
326
|
The default theme uses a PDFium-safe Latin-first font stack. Latin fonts are
|
|
327
327
|
listed before CJK fonts so ASCII digits, dates, versions, and page numbers are
|
|
328
328
|
not embedded into CJK font subsets that some Chrome/PDFium renderers handle
|
|
329
|
-
poorly. Chinese text still falls back to the CJK side of the stack
|
|
330
|
-
`Microsoft YaHei` is the first preferred CJK font. If it is missing, the theme
|
|
331
|
-
falls back to `PingFang SC`, `Noto Sans SC`, `Noto Sans CJK SC`,
|
|
332
|
-
`Source Han Sans SC`, and other available CJK fonts.
|
|
329
|
+
poorly. Chinese text still falls back to the CJK side of the stack.
|
|
333
330
|
|
|
334
|
-
For Linux containers or agent sandboxes,
|
|
335
|
-
|
|
331
|
+
For Linux containers or agent sandboxes, use open fonts that can be installed
|
|
332
|
+
from the distribution package manager. The recommended baseline is:
|
|
336
333
|
|
|
337
334
|
```shell
|
|
338
335
|
sudo apt-get install -y --no-install-recommends \
|
|
339
336
|
fontconfig \
|
|
340
|
-
fonts-noto-cjk \
|
|
341
337
|
fonts-liberation \
|
|
342
|
-
fonts-dejavu-core
|
|
338
|
+
fonts-dejavu-core \
|
|
339
|
+
fonts-noto-cjk \
|
|
340
|
+
fonts-stix
|
|
343
341
|
fc-cache -f
|
|
344
342
|
```
|
|
345
343
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
Chinese fallback; the Latin-first order is still kept for PDFium-safe digits.
|
|
344
|
+
With that setup, Linux output uses `Liberation Sans` / `DejaVu Sans` for Latin
|
|
345
|
+
text and digits, `Noto Sans CJK SC` for Chinese, and STIX for math fallback.
|
|
346
|
+
Microsoft YaHei and Segoe UI Emoji are not Linux runtime requirements and are
|
|
347
|
+
not installed or distributed by `mdtopdf`.
|
|
351
348
|
|
|
352
349
|
Code blocks prefer `Cascadia Mono` / `Cascadia Code`, then `Consolas`,
|
|
353
350
|
`Noto Sans Mono CJK SC`, `Liberation Mono`, and `DejaVu Sans Mono`. On Debian,
|
|
@@ -355,20 +352,10 @@ Code blocks prefer `Cascadia Mono` / `Cascadia Code`, then `Consolas`,
|
|
|
355
352
|
Cascadia Code yourself or let the theme fall back to the installed monospace
|
|
356
353
|
fonts.
|
|
357
354
|
|
|
358
|
-
Emoji are rendered through the system emoji font.
|
|
359
|
-
`
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
`Apple Color Emoji`, `Noto Emoji`, `Noto Color Emoji`, and other installed emoji
|
|
363
|
-
fonts. Whether the final PDF keeps color emoji still depends on WeasyPrint,
|
|
364
|
-
Pango/Cairo, and the PDF viewer.
|
|
365
|
-
|
|
366
|
-
Optional fallback fonts:
|
|
367
|
-
|
|
368
|
-
```shell
|
|
369
|
-
sudo apt-get install -y --no-install-recommends fonts-noto-color-emoji fonts-stix
|
|
370
|
-
fc-cache -f
|
|
371
|
-
```
|
|
355
|
+
Emoji are rendered through the system emoji font. On Linux, prefer monochrome
|
|
356
|
+
`Noto Emoji` for stable PDF layout. `Noto Color Emoji` is easier to install from
|
|
357
|
+
many distro package managers and is safe to use as a fallback, but color emoji
|
|
358
|
+
often render too small or misaligned in WeasyPrint/Pango/Cairo/PDFium output.
|
|
372
359
|
|
|
373
360
|
On Windows, install the native libraries separately. A common MSYS2 setup is:
|
|
374
361
|
|
|
@@ -419,6 +406,7 @@ MIT. Bundled KaTeX assets are also distributed under the MIT license; see
|
|
|
419
406
|
|
|
420
407
|
`mdtopdf` does not bundle CJK body fonts, emoji fonts, or proprietary system
|
|
421
408
|
fonts. The default theme references local system fonts such as Segoe UI,
|
|
422
|
-
Microsoft YaHei, PingFang SC, Segoe UI Emoji, Noto
|
|
423
|
-
Cascadia Code, and Consolas, but those font files come from
|
|
424
|
-
system or runtime environment.
|
|
409
|
+
Microsoft YaHei, PingFang SC, Segoe UI Emoji, Noto Sans CJK SC,
|
|
410
|
+
Noto Emoji, Noto Color Emoji, Cascadia Code, and Consolas, but those font files come from
|
|
411
|
+
the user's operating system or runtime environment. Public Linux images should
|
|
412
|
+
prefer the open-font baseline above.
|
|
@@ -52,10 +52,11 @@ def run_doctor() -> dict[str, Any]:
|
|
|
52
52
|
|
|
53
53
|
add_weasyprint_dll_directories()
|
|
54
54
|
|
|
55
|
+
platform_system = platform.system()
|
|
55
56
|
result: dict[str, Any] = {
|
|
56
57
|
"ok": False,
|
|
57
58
|
"platform": {
|
|
58
|
-
"system":
|
|
59
|
+
"system": platform_system,
|
|
59
60
|
"release": platform.release(),
|
|
60
61
|
"machine": platform.machine(),
|
|
61
62
|
},
|
|
@@ -69,7 +70,7 @@ def run_doctor() -> dict[str, Any]:
|
|
|
69
70
|
"packages": {},
|
|
70
71
|
"tools": {},
|
|
71
72
|
"native_libraries": _inspect_native_libraries(),
|
|
72
|
-
"fonts": _inspect_fonts(),
|
|
73
|
+
"fonts": _inspect_fonts(platform_system),
|
|
73
74
|
"recommendations": [],
|
|
74
75
|
}
|
|
75
76
|
|
|
@@ -211,8 +212,8 @@ def _env_dll_directories() -> list[str]:
|
|
|
211
212
|
return [part.strip() for part in raw.split(os.pathsep) if part.strip()]
|
|
212
213
|
|
|
213
214
|
|
|
214
|
-
def _inspect_fonts() -> dict[str, Any]:
|
|
215
|
-
return inspect_recommended_font_groups()
|
|
215
|
+
def _inspect_fonts(platform_system: str | None = None) -> dict[str, Any]:
|
|
216
|
+
return inspect_recommended_font_groups(platform_system)
|
|
216
217
|
|
|
217
218
|
|
|
218
219
|
def _inspect_fontconfig() -> dict[str, Any]:
|
|
@@ -283,15 +284,15 @@ def _recommendations(result: dict[str, Any]) -> list[str]:
|
|
|
283
284
|
"On Debian or Ubuntu, use: sudo apt-get install fonts-liberation fonts-dejavu-core"
|
|
284
285
|
)
|
|
285
286
|
if font_groups.get("cjk_sans") and not font_groups["cjk_sans"].get("ok"):
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
287
|
+
if is_linux:
|
|
288
|
+
recommendations.append(
|
|
289
|
+
"Install Noto CJK for Chinese text on Linux: sudo apt-get install fonts-noto-cjk"
|
|
290
|
+
)
|
|
291
|
+
else:
|
|
292
|
+
recommendations.append(
|
|
293
|
+
"Install or enable a CJK sans font for Chinese text, such as Microsoft YaHei, "
|
|
294
|
+
"PingFang SC, Noto Sans CJK SC, or Source Han Sans SC."
|
|
295
|
+
)
|
|
295
296
|
if font_groups.get("monospace") and not font_groups["monospace"].get("ok"):
|
|
296
297
|
recommendations.append(
|
|
297
298
|
"Install a monospace font for code blocks. On Debian or Ubuntu, use: "
|
|
@@ -314,11 +315,32 @@ def _recommendations(result: dict[str, Any]) -> list[str]:
|
|
|
314
315
|
"Optional: install STIX fonts for math fallback, for example: sudo apt-get install fonts-stix"
|
|
315
316
|
)
|
|
316
317
|
if font_groups.get("emoji") and not font_groups["emoji"].get("ok"):
|
|
318
|
+
if is_linux:
|
|
319
|
+
recommendations.append(
|
|
320
|
+
"Provide a monochrome emoji font such as Noto Emoji for stable PDF output on Linux. "
|
|
321
|
+
"Noto Color Emoji is widely packaged, but PDF viewers can render color emoji too small "
|
|
322
|
+
"or misaligned."
|
|
323
|
+
)
|
|
324
|
+
else:
|
|
325
|
+
recommendations.append(
|
|
326
|
+
"Install or enable a system emoji font such as Segoe UI Emoji, Apple Color Emoji, "
|
|
327
|
+
"Noto Color Emoji, or Twemoji Mozilla."
|
|
328
|
+
)
|
|
329
|
+
elif (
|
|
330
|
+
is_linux
|
|
331
|
+
and font_groups.get("emoji")
|
|
332
|
+
and "Noto Emoji" in font_groups["emoji"].get("missing", [])
|
|
333
|
+
and "Noto Color Emoji" in font_groups["emoji"].get("found", [])
|
|
334
|
+
):
|
|
317
335
|
recommendations.append(
|
|
318
|
-
"
|
|
319
|
-
"
|
|
336
|
+
"Noto Color Emoji was found. It provides glyph coverage, but color emoji can render too small "
|
|
337
|
+
"or misaligned in WeasyPrint/PDFium output. Prefer monochrome Noto Emoji if emoji layout matters."
|
|
320
338
|
)
|
|
321
|
-
elif
|
|
339
|
+
elif (
|
|
340
|
+
not is_linux
|
|
341
|
+
and font_groups.get("emoji")
|
|
342
|
+
and "Segoe UI Emoji" in font_groups["emoji"].get("missing", [])
|
|
343
|
+
):
|
|
322
344
|
recommendations.append(
|
|
323
345
|
"Optional: provide Segoe UI Emoji if you want the default theme's preferred emoji glyphs. "
|
|
324
346
|
"Existing emoji fallback fonts will still be used."
|
|
@@ -91,6 +91,14 @@ RECOMMENDED_FONT_GROUPS = {
|
|
|
91
91
|
),
|
|
92
92
|
},
|
|
93
93
|
}
|
|
94
|
+
PLATFORM_PREFERRED_FONT_GROUPS = {
|
|
95
|
+
"Linux": {
|
|
96
|
+
"latin_sans": ("Liberation Sans", "DejaVu Sans"),
|
|
97
|
+
"cjk_sans": ("Noto Sans CJK SC", "Noto Sans SC"),
|
|
98
|
+
"math": ("STIXGeneral", "STIX Two Math"),
|
|
99
|
+
"emoji": ("Noto Emoji",),
|
|
100
|
+
},
|
|
101
|
+
}
|
|
94
102
|
CJK_CAPABLE_FONT_FAMILIES = (
|
|
95
103
|
"Noto Sans SC",
|
|
96
104
|
"Noto Sans CJK SC",
|
|
@@ -136,7 +144,7 @@ def match_font_name(family: str, available: set[str]) -> str | None:
|
|
|
136
144
|
return None
|
|
137
145
|
|
|
138
146
|
|
|
139
|
-
def inspect_recommended_font_groups() -> dict[str, Any]:
|
|
147
|
+
def inspect_recommended_font_groups(platform_system: str | None = None) -> dict[str, Any]:
|
|
140
148
|
result: dict[str, Any] = {
|
|
141
149
|
"ok": False,
|
|
142
150
|
"backend": "matplotlib.font_manager",
|
|
@@ -153,7 +161,7 @@ def inspect_recommended_font_groups() -> dict[str, Any]:
|
|
|
153
161
|
fontconfig_emoji = _fontconfig_emoji_match()
|
|
154
162
|
for group_name, group in RECOMMENDED_FONT_GROUPS.items():
|
|
155
163
|
recommended = list(group["families"])
|
|
156
|
-
preferred = list(
|
|
164
|
+
preferred = list(_preferred_families(group_name, group, platform_system))
|
|
157
165
|
found = []
|
|
158
166
|
for family in recommended:
|
|
159
167
|
match = match_font_name(family, available)
|
|
@@ -180,6 +188,17 @@ def inspect_recommended_font_groups() -> dict[str, Any]:
|
|
|
180
188
|
return result
|
|
181
189
|
|
|
182
190
|
|
|
191
|
+
def _preferred_families(
|
|
192
|
+
group_name: str,
|
|
193
|
+
group: dict[str, Any],
|
|
194
|
+
platform_system: str | None,
|
|
195
|
+
) -> tuple[str, ...]:
|
|
196
|
+
platform_preferred = PLATFORM_PREFERRED_FONT_GROUPS.get(platform_system or "", {})
|
|
197
|
+
if isinstance(platform_preferred, dict) and group_name in platform_preferred:
|
|
198
|
+
return platform_preferred[group_name]
|
|
199
|
+
return group.get("preferred", group["families"][:1])
|
|
200
|
+
|
|
201
|
+
|
|
183
202
|
def inspect_css_font_usage(css: str, *, document_text: str | None = None) -> dict[str, Any]:
|
|
184
203
|
result: dict[str, Any] = {
|
|
185
204
|
"ok": True,
|
|
@@ -75,15 +75,19 @@ apt-get install -y --no-install-recommends \
|
|
|
75
75
|
shared-mime-info \
|
|
76
76
|
fonts-liberation \
|
|
77
77
|
fonts-dejavu-core \
|
|
78
|
-
fonts-noto-cjk
|
|
78
|
+
fonts-noto-cjk \
|
|
79
|
+
fonts-stix
|
|
79
80
|
fc-cache -f
|
|
80
81
|
```
|
|
81
82
|
|
|
83
|
+
For emoji-heavy documents on Linux, prefer a monochrome emoji font such as
|
|
84
|
+
Noto Emoji. `fonts-noto-color-emoji` is a fallback, but it can render too small
|
|
85
|
+
or misaligned in PDF viewers.
|
|
86
|
+
|
|
82
87
|
Install optional support only when needed:
|
|
83
88
|
|
|
84
89
|
```shell
|
|
85
90
|
npm install -g @mermaid-js/mermaid-cli
|
|
86
|
-
apt-get install -y --no-install-recommends fonts-stix fonts-noto-color-emoji
|
|
87
91
|
```
|
|
88
92
|
|
|
89
93
|
Use Cascadia Code for closer default code-block styling when available:
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "agent-markdown-pdf"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.2"
|
|
8
8
|
description = "Agent-friendly Markdown-to-PDF CLI with HTML preview and JSON diagnostics"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -1191,7 +1191,7 @@ def test_doctor_font_groups_match_default_theme_font_fallbacks(monkeypatch):
|
|
|
1191
1191
|
lambda: {"ok": False, "families": [], "file": None, "error": "not found"},
|
|
1192
1192
|
)
|
|
1193
1193
|
|
|
1194
|
-
result = doctor._inspect_fonts()
|
|
1194
|
+
result = doctor._inspect_fonts("Windows")
|
|
1195
1195
|
|
|
1196
1196
|
assert result["ok"] is True
|
|
1197
1197
|
assert result["groups"]["latin_sans"]["found"] == ["Arial"]
|
|
@@ -1206,7 +1206,37 @@ def test_doctor_font_groups_match_default_theme_font_fallbacks(monkeypatch):
|
|
|
1206
1206
|
assert result["groups"]["emoji"]["found"] == ["Segoe UI Emoji"]
|
|
1207
1207
|
|
|
1208
1208
|
|
|
1209
|
-
def
|
|
1209
|
+
def test_doctor_linux_font_groups_prefer_open_font_baseline(monkeypatch):
|
|
1210
|
+
monkeypatch.setattr(
|
|
1211
|
+
fonts_core,
|
|
1212
|
+
"available_font_names",
|
|
1213
|
+
lambda: {
|
|
1214
|
+
"Liberation Sans",
|
|
1215
|
+
"DejaVu Sans",
|
|
1216
|
+
"Noto Sans CJK SC",
|
|
1217
|
+
"Cascadia Mono",
|
|
1218
|
+
"STIXGeneral",
|
|
1219
|
+
"Noto Emoji",
|
|
1220
|
+
"Noto Color Emoji",
|
|
1221
|
+
},
|
|
1222
|
+
)
|
|
1223
|
+
monkeypatch.setattr(
|
|
1224
|
+
fonts_core,
|
|
1225
|
+
"_fontconfig_emoji_match",
|
|
1226
|
+
lambda: {"ok": True, "families": ["Noto Color Emoji"], "file": None, "error": None},
|
|
1227
|
+
)
|
|
1228
|
+
|
|
1229
|
+
result = doctor._inspect_fonts("Linux")
|
|
1230
|
+
|
|
1231
|
+
assert result["groups"]["latin_sans"]["preferred"] == ["Liberation Sans", "DejaVu Sans"]
|
|
1232
|
+
assert result["groups"]["cjk_sans"]["preferred"] == ["Noto Sans CJK SC", "Noto Sans SC"]
|
|
1233
|
+
assert result["groups"]["emoji"]["preferred"] == ["Noto Emoji"]
|
|
1234
|
+
assert result["groups"]["latin_sans"]["preferred_found"] is True
|
|
1235
|
+
assert result["groups"]["cjk_sans"]["preferred_found"] is True
|
|
1236
|
+
assert result["groups"]["emoji"]["preferred_found"] is True
|
|
1237
|
+
|
|
1238
|
+
|
|
1239
|
+
def test_doctor_linux_accepts_open_font_baseline_without_microsoft_recommendations():
|
|
1210
1240
|
result = {
|
|
1211
1241
|
"ok": True,
|
|
1212
1242
|
"platform": {"system": "Linux"},
|
|
@@ -1238,15 +1268,17 @@ def test_doctor_linux_recommends_windows_like_preferred_fonts():
|
|
|
1238
1268
|
"missing": ["Cascadia Mono", "Cascadia Code"],
|
|
1239
1269
|
},
|
|
1240
1270
|
"math": {"ok": True, "found": ["STIXGeneral"], "missing": ["Cambria Math"]},
|
|
1241
|
-
"emoji": {"ok": True, "found": ["Noto Color Emoji"], "missing": ["Segoe UI Emoji"]},
|
|
1271
|
+
"emoji": {"ok": True, "found": ["Noto Color Emoji"], "missing": ["Segoe UI Emoji", "Noto Emoji"]},
|
|
1242
1272
|
}
|
|
1243
1273
|
},
|
|
1244
1274
|
}
|
|
1245
1275
|
|
|
1246
1276
|
recommendations = doctor._recommendations(result)
|
|
1247
1277
|
|
|
1248
|
-
assert any("Microsoft YaHei" in item
|
|
1278
|
+
assert not any("Microsoft YaHei" in item for item in recommendations)
|
|
1279
|
+
assert not any("Segoe UI Emoji" in item for item in recommendations)
|
|
1249
1280
|
assert any("Cascadia Code" in item and "code blocks" in item for item in recommendations)
|
|
1281
|
+
assert any("Noto Color Emoji" in item and "Noto Emoji" in item for item in recommendations)
|
|
1250
1282
|
|
|
1251
1283
|
|
|
1252
1284
|
def test_doctor_linux_recommends_fontconfig_when_missing():
|
|
@@ -1309,6 +1341,39 @@ def test_doctor_recommends_latin_fonts_when_missing():
|
|
|
1309
1341
|
assert any("Latin sans" in item and "digits" in item for item in recommendations)
|
|
1310
1342
|
|
|
1311
1343
|
|
|
1344
|
+
def test_doctor_linux_recommends_noto_fonts_when_cjk_or_emoji_missing():
|
|
1345
|
+
result = {
|
|
1346
|
+
"ok": True,
|
|
1347
|
+
"platform": {"system": "Linux"},
|
|
1348
|
+
"packages": {
|
|
1349
|
+
"weasyprint": {"ok": True},
|
|
1350
|
+
"mini-racer": {"ok": True},
|
|
1351
|
+
"latex2mathml": {"ok": True},
|
|
1352
|
+
"matplotlib": {"ok": True},
|
|
1353
|
+
},
|
|
1354
|
+
"tools": {
|
|
1355
|
+
"mermaid": {"ok": True},
|
|
1356
|
+
"fontconfig": {"ok": True},
|
|
1357
|
+
},
|
|
1358
|
+
"fonts": {
|
|
1359
|
+
"groups": {
|
|
1360
|
+
"latin_sans": {"ok": True, "found": ["Liberation Sans"], "missing": []},
|
|
1361
|
+
"cjk_sans": {"ok": False, "found": [], "missing": ["Noto Sans CJK SC"]},
|
|
1362
|
+
"monospace": {"ok": True, "found": ["Cascadia Code"], "missing": []},
|
|
1363
|
+
"math": {"ok": True, "found": ["STIXGeneral"], "missing": []},
|
|
1364
|
+
"emoji": {"ok": False, "found": [], "missing": ["Noto Emoji"]},
|
|
1365
|
+
}
|
|
1366
|
+
},
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1369
|
+
recommendations = doctor._recommendations(result)
|
|
1370
|
+
|
|
1371
|
+
assert any("fonts-noto-cjk" in item for item in recommendations)
|
|
1372
|
+
assert any("Noto Emoji" in item and "monochrome" in item for item in recommendations)
|
|
1373
|
+
assert not any("Microsoft YaHei" in item for item in recommendations)
|
|
1374
|
+
assert not any("Segoe UI Emoji" in item for item in recommendations)
|
|
1375
|
+
|
|
1376
|
+
|
|
1312
1377
|
def test_doctor_reports_missing_mini_racer(monkeypatch):
|
|
1313
1378
|
real_import = importlib.import_module
|
|
1314
1379
|
|
|
File without changes
|
{agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/agent_markdown_pdf.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/agent_markdown_pdf.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/agent_markdown_pdf.egg-info/requires.txt
RENAMED
|
File without changes
|
{agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/agent_markdown_pdf.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/katex.min.css
RENAMED
|
File without changes
|
{agent_markdown_pdf-0.2.1 → agent_markdown_pdf-0.2.2}/mdtopdf/vendor/katex/dist/katex.min.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|