asciidoctor-pdf 1.5.0.beta.2 → 1.5.0.beta.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.adoc +41 -0
- data/README.adoc +233 -18
- data/asciidoctor-pdf.gemspec +5 -2
- data/data/fonts/ABOUT-mplus1mn-subset +2 -0
- data/data/fonts/ABOUT-mplus1p-subset +1 -0
- data/data/fonts/ABOUT-notoserif-subset +1 -0
- data/data/fonts/mplus1mn-bold-ascii.ttf +0 -0
- data/data/fonts/mplus1mn-bold-subset.ttf +0 -0
- data/data/fonts/mplus1mn-bold_italic-ascii.ttf +0 -0
- data/data/fonts/mplus1mn-bold_italic-subset.ttf +0 -0
- data/data/fonts/mplus1mn-italic-ascii.ttf +0 -0
- data/data/fonts/mplus1mn-italic-subset.ttf +0 -0
- data/data/fonts/mplus1mn-regular-ascii-conums.ttf +0 -0
- data/data/fonts/mplus1mn-regular-subset.ttf +0 -0
- data/data/fonts/mplus1p-regular-fallback.ttf +0 -0
- data/data/fonts/notoserif-bold-subset.ttf +0 -0
- data/data/fonts/notoserif-bold_italic-subset.ttf +0 -0
- data/data/fonts/notoserif-italic-subset.ttf +0 -0
- data/data/fonts/notoserif-regular-subset.ttf +0 -0
- data/data/themes/base-theme.yml +5 -2
- data/data/themes/default-theme.yml +5 -1
- data/docs/theming-guide.adoc +176 -53
- data/lib/asciidoctor-pdf/converter.rb +342 -238
- data/lib/asciidoctor-pdf/formatted_text/inline_image_arranger.rb +1 -1
- data/lib/asciidoctor-pdf/formatted_text/parser.rb +16 -4
- data/lib/asciidoctor-pdf/formatted_text/parser.treetop +1 -1
- data/lib/asciidoctor-pdf/formatted_text/transform.rb +22 -6
- data/lib/asciidoctor-pdf/implicit_header_processor.rb +1 -1
- data/lib/asciidoctor-pdf/prawn_ext/extensions.rb +3 -3
- data/lib/asciidoctor-pdf/prawn_ext/images.rb +3 -3
- data/lib/asciidoctor-pdf/sanitizer.rb +1 -1
- data/lib/asciidoctor-pdf/theme_loader.rb +54 -31
- data/lib/asciidoctor-pdf/version.rb +1 -1
- metadata +47 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a069bf48fbe99050934610c30657128be8730eb5efcfc05cb63501374e904fbd
|
4
|
+
data.tar.gz: b2975922d3e8da6f7da239285fab79d285ec1a57b3870af130aa248c01475445
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 005bb7e4b493d6adae9b3fef48b94caeacea1a84e47ae5209c0562a5d9ba10131a71cba011b35f1f09de57850ccea7fe5456d1d59906f0a76d2a3a63e70f4c7f
|
7
|
+
data.tar.gz: ea0f6d4a02d5ef32e4fb467e8793e1b4da458391eca2f678d0dbc1e9a52c22987843b1ebf6260d41cb4ae27780f6cde686a2c64bda24817ac83e978a8050a83c
|
data/CHANGELOG.adoc
CHANGED
@@ -5,6 +5,47 @@
|
|
5
5
|
This document provides a high-level view of the changes to the {project-name} by release.
|
6
6
|
For a detailed view of what has changed, refer to the {uri-repo}/commits/master[commit history] on GitHub.
|
7
7
|
|
8
|
+
== 1.5.0.beta.3 (2019-08-30) - @mojavelinux
|
9
|
+
|
10
|
+
* allow multiple font dirs to be specified using the pdf-fontsdir attribute (#80)
|
11
|
+
* fill and stroke bounds of example across all pages (#362)
|
12
|
+
* allow page background color and background image to be used simultaneously (#1186)
|
13
|
+
* allow theme to specifiy initial zoom (#305)
|
14
|
+
* strip surrounding whitespace from text in normal table cells
|
15
|
+
* allow attribute references to be used in image paths in theme (#588)
|
16
|
+
* resolve variables in font catalog in theme file
|
17
|
+
* honor the cellbgcolor attribute defined in a table cell to set the cell background color (#234) (*mch*)
|
18
|
+
* add the .notdef glyph to the bundled fonts (a box which is used as the default glyph if the font is missing a character) (#1194)
|
19
|
+
* don't drop headings if base font family is not set in theme
|
20
|
+
* don't crash if heading margins are not set in theme
|
21
|
+
* don't rely on base_line_height_length theme key in converter (should be internal to theme)
|
22
|
+
* set fallback value for base (root) font size
|
23
|
+
* reduce min font size in base theme
|
24
|
+
* allow theme to configure the minimum height required after a section title for it to stay on same page (#1210)
|
25
|
+
* convert hyphen to underscore in theme key for admonition icon type (#1217)
|
26
|
+
* always resolve images in running content relative to themesdir (instead of document) (#1183)
|
27
|
+
* fix placement of toc in article when doctitle is not set (#1240)
|
28
|
+
* honor text alignment role on abstract paragraph(s)
|
29
|
+
* don't insert blank page at start of document if media=prepress and document does not have a cover (#1181)
|
30
|
+
* insert blank page after cover if media=prepress (#1181)
|
31
|
+
* add support for stretch role on table (as preferred alias for spread) (#1225)
|
32
|
+
* include revremark on title page if specified (#1198)
|
33
|
+
* allow theme to configure border around block image (#767)
|
34
|
+
* align first block of list item with marker if primary text is blank (#1196)
|
35
|
+
* apply correct margin to list item if primary text is blank (#1196)
|
36
|
+
* allow page break before and after part and before chapter to be configured by theme (#74)
|
37
|
+
* allow page number of PDF to import to be specified using `page` attribute on image macro (#1202)
|
38
|
+
* use value of theme key heading-margin-page-top as top margin for heading if cursor is at top of page (#576)
|
39
|
+
* resolve icon image relative to docdir instead of current working directory
|
40
|
+
* allow theme to style mark element; add default styles to built-in themes (#1226)
|
41
|
+
* if value of scripts attribute is cjk, break lines between any two CJK characters (except punctuation) (#1206)
|
42
|
+
* add support for role to font-based icon (to change font color) (#349)
|
43
|
+
* use fallback size for admonition icon
|
44
|
+
* allow attribute reference in running content to be escaped using a backslash
|
45
|
+
* allow theme to configure text background and border on a phrase with a custom role (#1223)
|
46
|
+
* fix crash if source-highlighter attribute is defined outside the header (#1231)
|
47
|
+
* fix crash when aligning line numbers of source highlighted with Pygments (#1233)
|
48
|
+
|
8
49
|
== 1.5.0.beta.2 (2019-07-30) - @mojavelinux
|
9
50
|
|
10
51
|
* only apply title page background image to the title page (#1144)
|
data/README.adoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= Asciidoctor PDF: A native PDF converter for AsciiDoc
|
2
2
|
Dan Allen <https://github.com/mojavelinux[@mojavelinux]>; Sarah White <https://github.com/graphitefriction[@graphitefriction]>
|
3
|
-
v1.5.0.beta.
|
3
|
+
v1.5.0.beta.3, 2019-08-30
|
4
4
|
// Settings:
|
5
5
|
:experimental:
|
6
6
|
:idprefix:
|
@@ -24,7 +24,7 @@ endif::[]
|
|
24
24
|
:project-name: Asciidoctor PDF
|
25
25
|
:project-handle: asciidoctor-pdf
|
26
26
|
// Variables:
|
27
|
-
:release-version: 1.5.0.beta.
|
27
|
+
:release-version: 1.5.0.beta.3
|
28
28
|
// URIs:
|
29
29
|
:uri-asciidoctor: http://asciidoctor.org
|
30
30
|
:uri-gem: http://rubygems.org/gems/asciidoctor-pdf
|
@@ -58,11 +58,6 @@ _No more middleman._ +
|
|
58
58
|
_No more DocBook toolchain._ +
|
59
59
|
It's AsciiDoc straight to PDF!
|
60
60
|
|
61
|
-
[caption=Status]
|
62
|
-
CAUTION: {project-name} is currently _alpha_ software.
|
63
|
-
While the converter handles most AsciiDoc content, there's still work needed to fill in gaps where conversion is incomplete, incorrect or not implemented.
|
64
|
-
See the milestone v1.5.0 in the {uri-project-issues}[issue tracker] for details.
|
65
|
-
|
66
61
|
toc::[]
|
67
62
|
|
68
63
|
== Prawn, the Majestic PDF Generator
|
@@ -148,9 +143,11 @@ ifndef::env-site[You can also <<development,run the code from source>> if you wa
|
|
148
143
|
|
149
144
|
=== Install the Published Gem
|
150
145
|
|
151
|
-
{project-name} is published as a pre-release
|
152
|
-
|
153
|
-
|
146
|
+
{project-name} is published to RubyGems.org as a pre-release.
|
147
|
+
Since it's in pre-release, you have to specify the `--pre` flag when installing using the `gem` command.
|
148
|
+
|
149
|
+
To install {project-name}, first make sure you have satisfied the <<Prerequisites,prerequisites>>.
|
150
|
+
Then, install the gem from RubyGems.org using the following command:
|
154
151
|
|
155
152
|
$ gem install asciidoctor-pdf --pre
|
156
153
|
|
@@ -329,17 +326,19 @@ To find a complete list of available icons, consult the https://github.com/jesse
|
|
329
326
|
|
330
327
|
== Image Paths
|
331
328
|
|
332
|
-
Relative images paths are resolved relative to the value of the `imagesdir` attribute at the time the converter
|
329
|
+
Relative images paths in the document are resolved relative to the value of the `imagesdir` attribute (at the time the converter runs).
|
333
330
|
This is effectively the same as how the built-in HTML converter works when the `data-uri` attribute is set.
|
334
331
|
The `imagesdir` is blank by default, which means relative images paths are resolved relative to the input document.
|
332
|
+
Relative images paths in the theme are resolved relative to the value of the `pdf-themesdir` attribute (which defaults to the directory of the theme file).
|
333
|
+
The `imagesdir` attribute is not used when resolving an image path in the theme file.
|
335
334
|
Absolute image paths are used as is.
|
336
335
|
|
337
336
|
If the image is an SVG, and the SVG includes a nested raster image (PNG or JPG) with a relative path, that path is resolved relative to the directory that contains the SVG.
|
338
337
|
|
339
|
-
The converter will refuse to
|
338
|
+
The converter will refuse to embed an image if the target is a URI (including image references in an SVG) unless the `allow-uri-read` attribute is enabled via the CLI or API.
|
340
339
|
|
341
|
-
If
|
342
|
-
|
340
|
+
If you use a linked image in an SVG, the width and height of that image must be specified.
|
341
|
+
Otherwise, the SVG library will fail to process it.
|
343
342
|
|
344
343
|
=== Asciidoctor Diagram Integration
|
345
344
|
|
@@ -358,7 +357,7 @@ Keep in mind that this strategy may introduce other side effects you'll have to
|
|
358
357
|
Since PDF is a fixed-width canvas, you almost always need to specify a width to get the image to fit properly on the page.
|
359
358
|
There are five ways to specify the width of an image, listed here in order of precedence:
|
360
359
|
|
361
|
-
[cols="1s,
|
360
|
+
[cols="1s,3"]
|
362
361
|
|===
|
363
362
|
|Attribute{nbsp}Name | Description
|
364
363
|
|
@@ -385,7 +384,7 @@ If the width exceeds the content area width, the image is scaled down to the con
|
|
385
384
|
|If you don't specify one of the aforementioned width settings, the intrinsic width of the image is used (the px value is multiplied by 75% to convert to pt, assuming canvas is 96 dpi) unless the width exceeds the content area width, in which case the image is scaled down to the content area width.
|
386
385
|
|===
|
387
386
|
|
388
|
-
The image is always sized according to the explicit or intrinsic width
|
387
|
+
The image is always sized according to the explicit or intrinsic width, then its height is scaled proportionally.
|
389
388
|
The height of the image is ignored by the PDF converter unless the height of the image exceeds the content height of the page.
|
390
389
|
In this case, the image is scaled down to fit on a single page.
|
391
390
|
|
@@ -442,6 +441,72 @@ Once the resolved height exceeds this amount, the height of the line is increase
|
|
442
441
|
In this case, the surrounding text will be aligned to the bottom of the image.
|
443
442
|
If the image height exceeds the height of the page, the image will be scaled down to fit on a single page (this may cause the image to advance to the subsequent page).
|
444
443
|
|
444
|
+
=== Background Image Sizing
|
445
|
+
|
446
|
+
In addition to the width-related attributes previously covered, background images can be sized relative to the page using the `fit` attribute of the image macro.
|
447
|
+
The `fit` attribute works similarly to the `object-fit` property in CSS.
|
448
|
+
It's value must be specified as a single keyword, chosen from the table below.
|
449
|
+
The starting size of the image is determined by the explicit width, if specified, or the implicit width.
|
450
|
+
The height is always derived from with width, respecting the implicit aspect ratio of the image.
|
451
|
+
The available space for a background image (i.e., the canvas) is the page.
|
452
|
+
|
453
|
+
[cols="1s,3"]
|
454
|
+
|===
|
455
|
+
| Value | Purpose
|
456
|
+
|
457
|
+
| contain
|
458
|
+
| The image is scaled up or down while retaining its aspect ratio to fit within the available space.
|
459
|
+
|
460
|
+
| cover
|
461
|
+
| The image is scaled up or down while retaining its aspect ratio so the image completely covers the available space, even if it means the image must be clipped in one direction.
|
462
|
+
|
463
|
+
| scale-down
|
464
|
+
| The image is scaled down while retaining its aspect ratio to fit within the available space.
|
465
|
+
If the image already fits, it is not scaled.
|
466
|
+
|
467
|
+
| none
|
468
|
+
| The image is not scaled.
|
469
|
+
|===
|
470
|
+
|
471
|
+
The `fit` attribute is often combined with the `position` attribute, covered next, to control the placement of the image on the canvas.
|
472
|
+
|
473
|
+
== Background Image Positioning
|
474
|
+
|
475
|
+
In addition to scaling, background images for cover pages, content pages, and the title page support positioning via the `position` attribute.
|
476
|
+
The `position` attribute accepts a syntax similar to the `background-position` property in CSS, except only the keyword positions are supported.
|
477
|
+
The position consists of two values, the vertical position and the horizontal position (e.g., `top center`).
|
478
|
+
If only one value is specified (e.g., `top`), the other value is assumed to be `center`.
|
479
|
+
If the `position` attribute is not specified, the value is assumed to be `center center` (i.e., the image is centered on the page).
|
480
|
+
|
481
|
+
The following table provides a list of the vertical and horizontal positioning keywords that are supported.
|
482
|
+
You can use any combination of these keywords to position the image.
|
483
|
+
|
484
|
+
|===
|
485
|
+
| Vertical Positions | Horizontal Positions
|
486
|
+
|
487
|
+
| top +
|
488
|
+
center +
|
489
|
+
bottom
|
490
|
+
|
491
|
+
| left +
|
492
|
+
center +
|
493
|
+
right
|
494
|
+
|===
|
495
|
+
|
496
|
+
Here's an example of how to place a background image at the top center of every page:
|
497
|
+
|
498
|
+
----
|
499
|
+
:page-background-image: image:bg.png[pdfwidth=50%,position=top]
|
500
|
+
----
|
501
|
+
|
502
|
+
Here's how to move it to the bottom right:
|
503
|
+
|
504
|
+
----
|
505
|
+
:page-background-image: image:bg.png[pdfwidth=50%,position=bottom right]
|
506
|
+
----
|
507
|
+
|
508
|
+
If an image dimension matches the height or width of the page, the positioning keyword for that axis has no effect.
|
509
|
+
|
445
510
|
== Fonts in SVG Images
|
446
511
|
|
447
512
|
Asciidoctor PDF uses {uri-prawn-svg}[prawn-svg] to embed SVGs in the PDF document, including SVGs generated by Asciidoctor Diagram.
|
@@ -500,6 +565,123 @@ Please refer to the {uri-prawn-gmagick}[README for prawn-gmagick] to learn how t
|
|
500
565
|
Once this gem is installed, Asciidoctor automatically switches over to it to handle embedding of all images.
|
501
566
|
In addition to support for more additional image file formats, this gem also speeds up image processing considerably, so we highly recommend using it if you can.
|
502
567
|
|
568
|
+
== Importing PDF Pages
|
569
|
+
|
570
|
+
In addition to using a PDF page for the front or back cover, you can also insert a PDF page at an arbitrary location.
|
571
|
+
This technique is useful to include pages that have complex layouts and graphics prepared in a specialized design program (such as Inkscape), which would otherwise not be achievable using this converter.
|
572
|
+
One such example is an insert such as an advertisement or visual interlude.
|
573
|
+
|
574
|
+
To import the first page from a PDF file, use the block image macro with the PDF filename as the image target.
|
575
|
+
|
576
|
+
[source,asciidoc]
|
577
|
+
----
|
578
|
+
image::custom-page.pdf[]
|
579
|
+
----
|
580
|
+
|
581
|
+
By default, this macro will import the first page of the PDF.
|
582
|
+
To import a different page, specify it as a 1-based index using the `page` attribute.
|
583
|
+
|
584
|
+
[source,asciidoc]
|
585
|
+
----
|
586
|
+
image::custom-page.pdf[page=2]
|
587
|
+
----
|
588
|
+
|
589
|
+
To import multiple pages, you'll need to use multiple image macros, each specifying the page number to import.
|
590
|
+
|
591
|
+
CAUTION: An image macro that imports a PDF page should never be nested inside a delimited block or table.
|
592
|
+
It should be a direct descendant of the document or a section.
|
593
|
+
Otherwise, the behavior is unspecified.
|
594
|
+
|
595
|
+
The converter will insert the page from the PDF as a dedicated page that matches the size and layout of the page being imported (no matter where the block image occurs).
|
596
|
+
Therefore, there's no need to put a manual page break (i.e., `<<<`) around the image macro.
|
597
|
+
|
598
|
+
To see a practical example of how to use this feature, refer to the blog post https://fromplantoprototype.com/blog/2019/08/07/importing-pdf-pages-in-asciidoctor-pdf/[Importing PDF Pages in asciidoctor-pdf].
|
599
|
+
|
600
|
+
== Crafting Interdocument Xrefs
|
601
|
+
|
602
|
+
This converter produces a single PDF file, which means content from multiple source documents get colocated into the same output file.
|
603
|
+
That means references between documents must necessarily become internal references.
|
604
|
+
These interdocument cross references (i.e., xrefs) will only successfully make that transition if you structure your document in accordance with the rules.
|
605
|
+
|
606
|
+
Those rules are as follows:
|
607
|
+
|
608
|
+
. The path segment of the interdocument xref must match the project-relative path of the included document
|
609
|
+
. The reference must include the ID of the target element
|
610
|
+
|
611
|
+
For instance, if your primary document contains the following include:
|
612
|
+
|
613
|
+
[source,asciidoc]
|
614
|
+
----
|
615
|
+
\include::chapters/chapter-1.adoc[]
|
616
|
+
----
|
617
|
+
|
618
|
+
Then an interdocument xref to an anchor in that chapter must be expressed as:
|
619
|
+
|
620
|
+
[source,asciidoc]
|
621
|
+
----
|
622
|
+
<<chapters/chapter-1.adoc#_anchor_name,Destination in Chapter 1>>
|
623
|
+
----
|
624
|
+
|
625
|
+
This rule holds regardless of which document the xref is located in.
|
626
|
+
|
627
|
+
To resolve the interdocument xref, the converter first checks if the target matches the `docname` attribute.
|
628
|
+
It then looks to see if the target matches one of the included files.
|
629
|
+
(In both cases, it ignores the file extension).
|
630
|
+
If Asciidoctor cannot resolve the target of an interdocument xref, it simply makes a link (like the HTML converter).
|
631
|
+
|
632
|
+
Let's consider a complete example.
|
633
|
+
Assume you are converting the following book document at the root of the project:
|
634
|
+
|
635
|
+
[source,asciidoc]
|
636
|
+
----
|
637
|
+
= Book Title
|
638
|
+
:doctype: book
|
639
|
+
|
640
|
+
\include::chapters/chapter-1.adoc[]
|
641
|
+
|
642
|
+
\include::chapters/chapter-2.adoc[]
|
643
|
+
----
|
644
|
+
|
645
|
+
Where the contents of chapter 1 is as follows:
|
646
|
+
|
647
|
+
[source,asciidoc]
|
648
|
+
----
|
649
|
+
== Chapter 1
|
650
|
+
|
651
|
+
We cover a little bit here.
|
652
|
+
The rest you can find in <<chapters/chapter-2.adoc#_chapter_2,Chapter 2>>.
|
653
|
+
----
|
654
|
+
|
655
|
+
And the contents of chapter 2 is as follows:
|
656
|
+
|
657
|
+
[source,asciidoc]
|
658
|
+
----
|
659
|
+
== Chapter 2
|
660
|
+
|
661
|
+
Prepare to be educated.
|
662
|
+
This chapter has it all!
|
663
|
+
|
664
|
+
To begin, jump to <<chapters/chapter-2/first-steps.adoc#_first_steps,first steps>>.
|
665
|
+
|
666
|
+
<<<
|
667
|
+
|
668
|
+
\include::chapter-2/first-steps.adoc[]
|
669
|
+
----
|
670
|
+
|
671
|
+
And, finally, the contents of the nested include is as follows:
|
672
|
+
|
673
|
+
[source,asciidoc]
|
674
|
+
----
|
675
|
+
=== First Steps
|
676
|
+
|
677
|
+
Let's start small.
|
678
|
+
----
|
679
|
+
|
680
|
+
You'll find when you run this example that all the interdocument xrefs become internal references in the PDF.
|
681
|
+
|
682
|
+
The reason both the path and anchor are required (even when liking to the top of a chapter) is so the interdocument xref works independent of the converter.
|
683
|
+
In other words, it encodes the complete information about the reference so the converter can sort out where the target is in all circumstances.
|
684
|
+
|
503
685
|
== STEM Support
|
504
686
|
|
505
687
|
Unlike the built-in HTML converter, Asciidoctor PDF does not provide native support for STEM blocks and inline macros (i.e., asciimath and latexmath).
|
@@ -590,10 +772,11 @@ Therefore, the long lines are forced to wrap.
|
|
590
772
|
Wrapped lines can make the verbatim blocks hard to read or even cause confusion.
|
591
773
|
|
592
774
|
To help address this problem, Asciidoctor PDF provides the `autofit` option on all verbatim (i.e., literal, listing and source) blocks to attempt to fit the text within the available width.
|
593
|
-
When the `autofit` option is enabled, Asciidoctor PDF will decrease the font size until the longest line fits without wrapping.
|
775
|
+
When the `autofit` option is enabled, Asciidoctor PDF will decrease the font size (as much as it can) until the longest line fits without wrapping.
|
594
776
|
|
595
|
-
CAUTION: The
|
777
|
+
CAUTION: The converter will not shrink the font size beyond the value of the `base_font_size_min` key specified in the PDF theme.
|
596
778
|
If that threshold is reached, lines may still wrap.
|
779
|
+
To allow `autofit` to handle all cases, set `base_font_size_min` to `0` in your theme.
|
597
780
|
|
598
781
|
Here's an example of the autofit option enabled on a source block:
|
599
782
|
|
@@ -895,6 +1078,38 @@ To switch back to master, just type:
|
|
895
1078
|
|
896
1079
|
$ git checkout master
|
897
1080
|
|
1081
|
+
=== Generate Code Coverage Report
|
1082
|
+
|
1083
|
+
To generate a code coverage report when running tests using simplecov, set the `COVERAGE` environment variable as follows when running the tests:
|
1084
|
+
|
1085
|
+
$ COVERAGE=true bundle exec rake spec
|
1086
|
+
|
1087
|
+
You'll see a total coverage score as well as a link to the HTML report in the output.
|
1088
|
+
The HTML report helps you understand which lines and branches were missed, if any.
|
1089
|
+
|
1090
|
+
Despite being fast, the downside of using simplecov is that it misses code branches.
|
1091
|
+
You can use deep-cover instead of simplecov to generate a more thorough report.
|
1092
|
+
To do so, set the `COVERAGE` environment variable to `deep` when running the tests:
|
1093
|
+
|
1094
|
+
$ COVERAGE=deep bundle exec rake spec
|
1095
|
+
|
1096
|
+
You'll see a total coverage score, a detailed coverage report, and a link to HTML report in the output.
|
1097
|
+
The HTML report helps you understand which lines and branches were missed, if any.
|
1098
|
+
|
1099
|
+
////
|
1100
|
+
As an alternative to deep cover's native HTML reporter, you can also use istanbul / nyc.
|
1101
|
+
First, you'll need to have the `nyc` command available on your system:
|
1102
|
+
|
1103
|
+
$ npm install -g nyc
|
1104
|
+
|
1105
|
+
Next, in addition to the `COVERAGE` environment variable, also set the `DEEP_COVER_REPORTER` environment variable as follows when running the tests:
|
1106
|
+
|
1107
|
+
$ COVERAGE=deep DEEP_COVER_REPORTER=istanbul bundle exec rake spec
|
1108
|
+
|
1109
|
+
You'll see a total coverage score, a detailed coverage report, and a link to HTML report in the output.
|
1110
|
+
The HTML report helps you understand which lines and branches were missed, if any.
|
1111
|
+
////
|
1112
|
+
|
898
1113
|
[[resources,Links]]
|
899
1114
|
== Resources
|
900
1115
|
|
data/asciidoctor-pdf.gemspec
CHANGED
@@ -48,9 +48,12 @@ Gem::Specification.new do |s|
|
|
48
48
|
s.add_runtime_dependency 'treetop', '~> 1.5.0'
|
49
49
|
|
50
50
|
s.add_development_dependency 'rake', '~> 12.3.0'
|
51
|
-
|
52
|
-
s.add_development_dependency '
|
51
|
+
s.add_development_dependency 'deep-cover-core', '~> 0.7.0'
|
52
|
+
s.add_development_dependency 'simplecov', '~> 0.17.0'
|
53
53
|
s.add_development_dependency 'rspec', '~> 3.8.0'
|
54
54
|
s.add_development_dependency 'pdf-inspector', '~> 1.3.0'
|
55
|
+
# Asciidoctor PDF supports Rouge >= 2 (verified in CI build using 2.0.0)
|
56
|
+
s.add_development_dependency 'rouge', '~> 3.6.0'
|
57
|
+
s.add_development_dependency 'coderay', '~> 1.1.0'
|
55
58
|
s.add_development_dependency 'chunky_png', '~> 1.3.0'
|
56
59
|
end
|
@@ -7,6 +7,7 @@ The following changes were made using fontforge to produce mplus1mn-*-ascii.ttf
|
|
7
7
|
** Basic Latin (U+0020–U+007e)
|
8
8
|
** Enclosed Numbers (U+2460–U+2473, U+2776–U+277f, U+24eb–U+24f4) (M+ 1mn Regular only)
|
9
9
|
** Box Drawing Symbols (U+2500–U+257f)
|
10
|
+
** .notdef glyph
|
10
11
|
* Subsetted to include (subset variant):
|
11
12
|
** Non-visible Characters (U+00a0)
|
12
13
|
** Basic Latin (U+0020–U+007e)
|
@@ -17,6 +18,7 @@ The following changes were made using fontforge to produce mplus1mn-*-ascii.ttf
|
|
17
18
|
** Assorted Symbols (U+20ac)
|
18
19
|
** Enclosed Numbers (U+2460–U+2473, U+2776–U+277f, U+24eb–U+24f4) (mplus1mn-regular only)
|
19
20
|
** Box Drawing Symbols (U+2500–U+257f)
|
21
|
+
** .notdef glyph
|
20
22
|
* Added BOM (U+feff) and line feed (U+000a) characters (from blank)
|
21
23
|
* Generated old-style kern table (neither Apple or OpenType) (required to make kerning work in Prawn) (flags: 0x90)
|
22
24
|
* Removed Truetype instructions (information not used by Prawn) (flags: 0x08)
|
@@ -17,6 +17,7 @@ The following changes were made using fontforge to produce mplus1p-regular-fallb
|
|
17
17
|
** General Punctuation (U+2000–U203a)
|
18
18
|
** Geometric Shapes (U+25a0–U25ff)
|
19
19
|
** Assorted Symbols (U+20ac, U+2122, U+21d0–U+21d5, U+2190–U+2195, U+2610–U+2611, U+2713)
|
20
|
+
** .notdef glyph
|
20
21
|
* Added BOM (U+feff), hair space (U+200a), zero-width space (U+200b) and line feed (U+000a) characters (from blank)
|
21
22
|
* Manually added non-breaking hyphen (U+2011) from hyphen (U+002d)
|
22
23
|
* Generated old-style kern table (neither Apple or OpenType) (required to make kerning work in Prawn) (flags: 0x90)
|
@@ -17,6 +17,7 @@ The following changes were made using fontforge to produce the notoserif-*-subse
|
|
17
17
|
** General Punctuation (U+2000–U203a)
|
18
18
|
** Geometric Shapes (U+25a0–U25ff)
|
19
19
|
** Assorted Symbols (U+20ac, U+2122, U+21d0, U+21d2, U+2190, U+2192)
|
20
|
+
** .notdef glyph
|
20
21
|
* Imported ballot boxes from Font Awesome (U+2610, U+2611) (Noto Serif Regular only)
|
21
22
|
* Added line feed character (U+000a)
|
22
23
|
* Generated old-style kern table (neither Apple or OpenType) (required to make kerning work in Prawn) (flags: 0x90)
|
Binary file
|
Binary file
|
Binary file
|