asciidoctor-pdf 2.3.24 → 2.3.25

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 274287402a150ddf26c07f844b1d07cad1e43a7d5174c06c24837564b1da1965
4
- data.tar.gz: d6039b200512a3e2e3bafe40ec8cb0673694920ebf118fb29b8954e0d0f27d3e
3
+ metadata.gz: 6d3d3298e3d9c986a74fd881afef3849962ab116bfb821d3dc0ae5aa119cdda7
4
+ data.tar.gz: 322b16750318c051ada5b847aa1abe9ef77259f04976f37f74c956011d025ee9
5
5
  SHA512:
6
- metadata.gz: 030d61aacae9e4327b059bd99690ace9b4d136be54da1ce4715695186e9526589ab43b8d9bf689093c57bd572e4668d09b9b5ac41c5b42b9c48db97d9722335e
7
- data.tar.gz: af263cfd0d458918f28e9b4ab4a5f79d404e5645fd95e060d055d24429fd7057422886e580c5def7e906a48a1f760f877284dcdfb48ff425e32af37aae5637ee
6
+ metadata.gz: 2ad59d7144d4585635e3e2c69fee235ea5f0ab592edf79b2092dfbd2f4078f2f3762c963f3d5a2dda22ded28e31eb4868fe2cc78477bb8abce83dae827e0a482
7
+ data.tar.gz: cb719b82e3c3a9111d9b3ceb64f21481b8bdd35499e452a6dcb0c10dfc3c2ca52db116ea3cc2999ec83984141a87ed04379e9fa1723abaab2f8f39a17a1271ca
data/CHANGELOG.adoc CHANGED
@@ -5,6 +5,32 @@
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 {url-repo}/commits/main[commit history] on GitHub.
7
7
 
8
+ == 2.3.25 (2026-08-31) - @mojavelinux
9
+
10
+ Enhancements::
11
+
12
+ * add the ballot X glyphs (U+2717 and U+2718) to the code and fallback fonts (#2652)
13
+
14
+ Improvements::
15
+
16
+ * suppress warning if glyph for LF cannot be found in fallback font as it's unlike to impact rendering
17
+
18
+ Bug Fixes::
19
+
20
+ * properly encode all non-ASCII IDs when creating and referencing destinations in PDF (#2646) (*@sandraLbdvTW*)
21
+ * don't crash when creating toc for article with only an abstract section (#2649)
22
+ * use empty value for preface in running content if `preface-title` attribute is explicitly unset (#2644)
23
+ * don't allow `admonition-label-min-width` key to be less than required space to fit admonition icon
24
+ * correctly map all icons from FontAwesome 4 (#2373)
25
+ * don't include children of section with empty title in TOC
26
+ * don't include children of section with empty title in outline
27
+ * when checking whether an attribute is unspecified, consider attributes that are soft set/unset from API/CLI (#2654)
28
+ * restore original require after loading treetop
29
+
30
+ === Details
31
+
32
+ {url-repo}/releases/tag/v2.3.25[git tag] | {url-repo}/compare/v2.3.24\...v2.3.25[full diff]
33
+
8
34
  == 2.3.24 (2025-11-15) - @mojavelinux
9
35
 
10
36
  Improvements::
@@ -1696,7 +1722,7 @@ Bug Fixes::
1696
1722
  * Allow font properties to be set per element in running content (#454)
1697
1723
  * Prevent the SVG from modifying the document font (#494)
1698
1724
  * Implement decorative border for multipage quote and verse blocks (#270, #557, #558)
1699
- * Encode anchors in hex that contain characters outside of ASCII range (#481, #301)
1725
+ * Encode anchors in hex that contain characters outside of ASCII range (#481, #308)
1700
1726
  * Size the line number gutter correctly (accounting for width of largest line number) (#402)
1701
1727
  * Allow theme to specify default value for pdfwidth attribute on image and document in README (#455)
1702
1728
  * Fix front matter page numbering by adding page labels for all front matter pages in outline (#458)
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
- v2.3.24, 2025-11-15
3
+ v2.3.25, 2026-08-31
4
4
  // Settings:
5
5
  :experimental:
6
6
  :idprefix:
@@ -15,7 +15,7 @@ The following changes were made using fontforge to produce mplus1mn-*-ascii.ttf
15
15
  ** Latin Extended-A (U+0100–U+017f)
16
16
  ** Greek Alphabet (U+0391–U+03c9)
17
17
  ** Cyrillic (U+0400–U+04ff)
18
- ** Assorted Symbols (U+20ac, U+2713–U+2714)
18
+ ** Assorted Symbols (U+20ac, U+2713–U+2714, U+2717–U+2718)
19
19
  ** Enclosed Numbers (U+2460–U+2473, U+2776–U+277f, U+24eb–U+24f4) (mplus1mn-regular only)
20
20
  ** Box Drawing Symbols (U+2500–U+257f)
21
21
  ** .notdef glyph
@@ -17,7 +17,7 @@ The following changes were made using fontforge to produce mplus1p-regular-fallb
17
17
  ** Mathematical Operators (U+2200–U+22ff, U+2116)
18
18
  ** General Punctuation (U+2000–U203a)
19
19
  ** Geometric Shapes (U+25a0–U25ff)
20
- ** Assorted Symbols (U+20ac, U+2122, U+21d0–U+21d5, U+2190–U+2195, U+2610–U+2611, U+2713–U+2714)
20
+ ** Assorted Symbols (U+20ac, U+2122, U+21d0–U+21d5, U+2190–U+2195, U+2610–U+2611, U+2713–U+2714, U+2717–U+2718)
21
21
  ** Latin Small Capital Letters (U+1D00, U+0299, U+1D04, U+1D05, U+1D07, U+A730, U+0262, U+029C, U+026A, U+1D0A, U+1D0B, U+029F, U+1D0D, U+0274, U+1D0F, U+1D18, U+A7AF (missing), U+0280, U+A731, U+1D1B, U+1D1C, U+1D20, U+1D21, U+028F, U+1D22)
22
22
  ** .notdef glyph
23
23
  * Added BOM (U+feff), hair space (U+200a), zero-width space (U+200b) and line feed (U+000a) characters (from blank)
@@ -0,0 +1,786 @@
1
+ fa-500px: fab-500px
2
+ fa-address-book: fas-address-book
3
+ fa-address-book-o: far-address-book
4
+ fa-address-card: fas-address-card
5
+ fa-address-card-o: far-address-card
6
+ fa-adjust: fas-adjust
7
+ fa-adn: fab-adn
8
+ fa-align-center: fas-align-center
9
+ fa-align-justify: fas-align-justify
10
+ fa-align-left: fas-align-left
11
+ fa-align-right: fas-align-right
12
+ fa-amazon: fab-amazon
13
+ fa-ambulance: fas-ambulance
14
+ fa-american-sign-language-interpreting: fas-american-sign-language-interpreting
15
+ fa-anchor: fas-anchor
16
+ fa-android: fab-android
17
+ fa-angellist: fab-angellist
18
+ fa-angle-double-down: fas-angle-double-down
19
+ fa-angle-double-left: fas-angle-double-left
20
+ fa-angle-double-right: fas-angle-double-right
21
+ fa-angle-double-up: fas-angle-double-up
22
+ fa-angle-down: fas-angle-down
23
+ fa-angle-left: fas-angle-left
24
+ fa-angle-right: fas-angle-right
25
+ fa-angle-up: fas-angle-up
26
+ fa-apple: fab-apple
27
+ fa-archive: fas-archive
28
+ fa-area-chart: fas-chart-area
29
+ fa-arrow-circle-down: fas-arrow-circle-down
30
+ fa-arrow-circle-left: fas-arrow-circle-left
31
+ fa-arrow-circle-o-down: far-arrow-alt-circle-down
32
+ fa-arrow-circle-o-left: far-arrow-alt-circle-left
33
+ fa-arrow-circle-o-right: far-arrow-alt-circle-right
34
+ fa-arrow-circle-o-up: far-arrow-alt-circle-up
35
+ fa-arrow-circle-right: fas-arrow-circle-right
36
+ fa-arrow-circle-up: fas-arrow-circle-up
37
+ fa-arrow-down: fas-arrow-down
38
+ fa-arrow-left: fas-arrow-left
39
+ fa-arrow-right: fas-arrow-right
40
+ fa-arrow-up: fas-arrow-up
41
+ fa-arrows: fas-arrows-alt
42
+ fa-arrows-alt: fas-expand-arrows-alt
43
+ fa-arrows-h: fas-arrows-alt-h
44
+ fa-arrows-v: fas-arrows-alt-v
45
+ fa-asl-interpreting: fas-american-sign-language-interpreting
46
+ fa-assistive-listening-systems: fas-assistive-listening-systems
47
+ fa-asterisk: fas-asterisk
48
+ fa-at: fas-at
49
+ fa-audio-description: fas-audio-description
50
+ fa-automobile: fas-car
51
+ fa-backward: fas-backward
52
+ fa-balance-scale: fas-balance-scale
53
+ fa-ban: fas-ban
54
+ fa-bandcamp: fab-bandcamp
55
+ fa-bank: fas-university
56
+ fa-bar-chart: far-chart-bar
57
+ fa-bar-chart-o: far-chart-bar
58
+ fa-barcode: fas-barcode
59
+ fa-bars: fas-bars
60
+ fa-bath: fas-bath
61
+ fa-bathtub: fas-bath
62
+ fa-battery: fas-battery-full
63
+ fa-battery-0: fas-battery-empty
64
+ fa-battery-1: fas-battery-quarter
65
+ fa-battery-2: fas-battery-half
66
+ fa-battery-3: fas-battery-three-quarters
67
+ fa-battery-4: fas-battery-full
68
+ fa-battery-empty: fas-battery-empty
69
+ fa-battery-full: fas-battery-full
70
+ fa-battery-half: fas-battery-half
71
+ fa-battery-quarter: fas-battery-quarter
72
+ fa-battery-three-quarters: fas-battery-three-quarters
73
+ fa-bed: fas-bed
74
+ fa-beer: fas-beer
75
+ fa-behance: fab-behance
76
+ fa-behance-square: fab-behance-square
77
+ fa-bell: fas-bell
78
+ fa-bell-o: far-bell
79
+ fa-bell-slash: fas-bell-slash
80
+ fa-bell-slash-o: far-bell-slash
81
+ fa-bicycle: fas-bicycle
82
+ fa-binoculars: fas-binoculars
83
+ fa-birthday-cake: fas-birthday-cake
84
+ fa-bitbucket: fab-bitbucket
85
+ fa-bitbucket-square: fab-bitbucket
86
+ fa-bitcoin: fab-bitcoin
87
+ fa-black-tie: fab-black-tie
88
+ fa-blind: fas-blind
89
+ fa-bluetooth: fab-bluetooth
90
+ fa-bluetooth-b: fab-bluetooth-b
91
+ fa-bold: fas-bold
92
+ fa-bolt: fas-bolt
93
+ fa-bomb: fas-bomb
94
+ fa-book: fas-book
95
+ fa-bookmark: fas-bookmark
96
+ fa-bookmark-o: far-bookmark
97
+ fa-braille: fas-braille
98
+ fa-briefcase: fas-briefcase
99
+ fa-btc: fab-btc
100
+ fa-bug: fas-bug
101
+ fa-building: fas-building
102
+ fa-building-o: far-building
103
+ fa-bullhorn: fas-bullhorn
104
+ fa-bullseye: fas-bullseye
105
+ fa-bus: fas-bus
106
+ fa-buysellads: fab-buysellads
107
+ fa-cab: fas-taxi
108
+ fa-calculator: fas-calculator
109
+ fa-calendar: fas-calendar-alt
110
+ fa-calendar-check-o: far-calendar-check
111
+ fa-calendar-minus-o: far-calendar-minus
112
+ fa-calendar-o: far-calendar
113
+ fa-calendar-plus-o: far-calendar-plus
114
+ fa-calendar-times-o: far-calendar-times
115
+ fa-camera: fas-camera
116
+ fa-camera-retro: fas-camera-retro
117
+ fa-car: fas-car
118
+ fa-caret-down: fas-caret-down
119
+ fa-caret-left: fas-caret-left
120
+ fa-caret-right: fas-caret-right
121
+ fa-caret-square-o-down: far-caret-square-down
122
+ fa-caret-square-o-left: far-caret-square-left
123
+ fa-caret-square-o-right: far-caret-square-right
124
+ fa-caret-square-o-up: far-caret-square-up
125
+ fa-caret-up: fas-caret-up
126
+ fa-cart-arrow-down: fas-cart-arrow-down
127
+ fa-cart-plus: fas-cart-plus
128
+ fa-cc: far-closed-captioning
129
+ fa-cc-amex: fab-cc-amex
130
+ fa-cc-diners-club: fab-cc-diners-club
131
+ fa-cc-discover: fab-cc-discover
132
+ fa-cc-jcb: fab-cc-jcb
133
+ fa-cc-mastercard: fab-cc-mastercard
134
+ fa-cc-paypal: fab-cc-paypal
135
+ fa-cc-stripe: fab-cc-stripe
136
+ fa-cc-visa: fab-cc-visa
137
+ fa-certificate: fas-certificate
138
+ fa-chain: fas-link
139
+ fa-chain-broken: fas-unlink
140
+ fa-check: fas-check
141
+ fa-check-circle: fas-check-circle
142
+ fa-check-circle-o: far-check-circle
143
+ fa-check-square: fas-check-square
144
+ fa-check-square-o: far-check-square
145
+ fa-chevron-circle-down: fas-chevron-circle-down
146
+ fa-chevron-circle-left: fas-chevron-circle-left
147
+ fa-chevron-circle-right: fas-chevron-circle-right
148
+ fa-chevron-circle-up: fas-chevron-circle-up
149
+ fa-chevron-down: fas-chevron-down
150
+ fa-chevron-left: fas-chevron-left
151
+ fa-chevron-right: fas-chevron-right
152
+ fa-chevron-up: fas-chevron-up
153
+ fa-child: fas-child
154
+ fa-chrome: fab-chrome
155
+ fa-circle: fas-circle
156
+ fa-circle-o: far-circle
157
+ fa-circle-o-notch: fas-circle-notch
158
+ fa-circle-thin: far-circle
159
+ fa-clipboard: far-clipboard
160
+ fa-clock-o: far-clock
161
+ fa-clone: far-clone
162
+ fa-close: fas-times
163
+ fa-cloud: fas-cloud
164
+ fa-cloud-download: fas-cloud-download-alt
165
+ fa-cloud-upload: fas-cloud-upload-alt
166
+ fa-cny: fas-yen-sign
167
+ fa-code: fas-code
168
+ fa-code-fork: fas-code-branch
169
+ fa-codepen: fab-codepen
170
+ fa-codiepie: fab-codiepie
171
+ fa-coffee: fas-coffee
172
+ fa-cog: fas-cog
173
+ fa-cogs: fas-cogs
174
+ fa-columns: fas-columns
175
+ fa-comment: fas-comment
176
+ fa-comment-o: far-comment
177
+ fa-commenting: fas-comment-alt
178
+ fa-commenting-o: far-comment-dots
179
+ fa-comments: fas-comments
180
+ fa-comments-o: far-comments
181
+ fa-compass: far-compass
182
+ fa-compress: fas-compress
183
+ fa-connectdevelop: fab-connectdevelop
184
+ fa-contao: fab-contao
185
+ fa-copy: fas-copy
186
+ fa-copyright: far-copyright
187
+ fa-creative-commons: fab-creative-commons
188
+ fa-credit-card: far-credit-card
189
+ fa-credit-card-alt: fas-credit-card
190
+ fa-crop: fas-crop
191
+ fa-crosshairs: fas-crosshairs
192
+ fa-css3: fab-css3
193
+ fa-cube: fas-cube
194
+ fa-cubes: fas-cubes
195
+ fa-cut: fas-cut
196
+ fa-cutlery: fas-utensils
197
+ fa-dashboard: fas-tachometer-alt
198
+ fa-dashcube: fab-dashcube
199
+ fa-database: fas-database
200
+ fa-deaf: fas-deaf
201
+ fa-deafness: fas-deaf
202
+ fa-dedent: fas-outdent
203
+ fa-delicious: fab-delicious
204
+ fa-desktop: fas-desktop
205
+ fa-deviantart: fab-deviantart
206
+ fa-diamond: far-gem
207
+ fa-digg: fab-digg
208
+ fa-dollar: fas-dollar-sign
209
+ fa-dot-circle-o: far-dot-circle
210
+ fa-download: fas-download
211
+ fa-dribbble: fab-dribbble
212
+ fa-drivers-license: fas-id-card
213
+ fa-drivers-license-o: far-id-card
214
+ fa-dropbox: fab-dropbox
215
+ fa-drupal: fab-drupal
216
+ fa-edge: fab-edge
217
+ fa-edit: fas-edit
218
+ fa-eercast: fab-sellcast
219
+ fa-eject: fas-eject
220
+ fa-ellipsis-h: fas-ellipsis-h
221
+ fa-ellipsis-v: fas-ellipsis-v
222
+ fa-empire: fab-empire
223
+ fa-envelope: fas-envelope
224
+ fa-envelope-o: far-envelope
225
+ fa-envelope-open: fas-envelope-open
226
+ fa-envelope-open-o: far-envelope-open
227
+ fa-envelope-square: fas-envelope-square
228
+ fa-envira: fab-envira
229
+ fa-eraser: fas-eraser
230
+ fa-etsy: fab-etsy
231
+ fa-eur: fas-euro-sign
232
+ fa-euro: fas-euro-sign
233
+ fa-exchange: fas-exchange-alt
234
+ fa-exclamation: fas-exclamation
235
+ fa-exclamation-circle: fas-exclamation-circle
236
+ fa-exclamation-triangle: fas-exclamation-triangle
237
+ fa-expand: fas-expand
238
+ fa-expeditedssl: fab-expeditedssl
239
+ fa-external-link: fas-external-link-alt
240
+ fa-external-link-square: fas-external-link-square-alt
241
+ fa-eye: fas-eye
242
+ fa-eye-slash: far-eye-slash
243
+ fa-eyedropper: fas-eye-dropper
244
+ fa-fa: fab-font-awesome
245
+ fa-facebook: fab-facebook-f
246
+ fa-facebook-f: fab-facebook-f
247
+ fa-facebook-official: fab-facebook
248
+ fa-facebook-square: fab-facebook-square
249
+ fa-fast-backward: fas-fast-backward
250
+ fa-fast-forward: fas-fast-forward
251
+ fa-fax: fas-fax
252
+ fa-feed: fas-rss
253
+ fa-female: fas-female
254
+ fa-fighter-jet: fas-fighter-jet
255
+ fa-file: fas-file
256
+ fa-file-archive-o: far-file-archive
257
+ fa-file-audio-o: far-file-audio
258
+ fa-file-code-o: far-file-code
259
+ fa-file-excel-o: far-file-excel
260
+ fa-file-image-o: far-file-image
261
+ fa-file-movie-o: far-file-video
262
+ fa-file-o: far-file
263
+ fa-file-pdf-o: far-file-pdf
264
+ fa-file-photo-o: far-file-image
265
+ fa-file-picture-o: far-file-image
266
+ fa-file-powerpoint-o: far-file-powerpoint
267
+ fa-file-sound-o: far-file-audio
268
+ fa-file-text: fas-file-alt
269
+ fa-file-text-o: far-file-alt
270
+ fa-file-video-o: far-file-video
271
+ fa-file-word-o: far-file-word
272
+ fa-file-zip-o: far-file-archive
273
+ fa-files-o: far-copy
274
+ fa-film: fas-film
275
+ fa-filter: fas-filter
276
+ fa-fire: fas-fire
277
+ fa-fire-extinguisher: fas-fire-extinguisher
278
+ fa-firefox: fab-firefox
279
+ fa-first-order: fab-first-order
280
+ fa-flag: fas-flag
281
+ fa-flag-checkered: fas-flag-checkered
282
+ fa-flag-o: far-flag
283
+ fa-flash: fas-bolt
284
+ fa-flask: fas-flask
285
+ fa-flickr: fab-flickr
286
+ fa-floppy-o: far-save
287
+ fa-folder: fas-folder
288
+ fa-folder-o: far-folder
289
+ fa-folder-open: fas-folder-open
290
+ fa-folder-open-o: far-folder-open
291
+ fa-font: fas-font
292
+ fa-font-awesome: fab-font-awesome
293
+ fa-fonticons: fab-fonticons
294
+ fa-fort-awesome: fab-fort-awesome
295
+ fa-forumbee: fab-forumbee
296
+ fa-forward: fas-forward
297
+ fa-foursquare: fab-foursquare
298
+ fa-free-code-camp: fab-free-code-camp
299
+ fa-frown-o: far-frown
300
+ fa-futbol-o: far-futbol
301
+ fa-gamepad: fas-gamepad
302
+ fa-gavel: fas-gavel
303
+ fa-gbp: fas-pound-sign
304
+ fa-ge: fab-empire
305
+ fa-gear: fas-cog
306
+ fa-gears: fas-cogs
307
+ fa-genderless: fas-genderless
308
+ fa-get-pocket: fab-get-pocket
309
+ fa-gg: fab-gg
310
+ fa-gg-circle: fab-gg-circle
311
+ fa-gift: fas-gift
312
+ fa-git: fab-git
313
+ fa-git-square: fab-git-square
314
+ fa-github: fab-github
315
+ fa-github-alt: fab-github-alt
316
+ fa-github-square: fab-github-square
317
+ fa-gitlab: fab-gitlab
318
+ fa-gittip: fab-gratipay
319
+ fa-glass: fas-glass-martini
320
+ fa-glide: fab-glide
321
+ fa-glide-g: fab-glide-g
322
+ fa-globe: fas-globe
323
+ fa-google: fab-google
324
+ fa-google-plus: fab-google-plus-g
325
+ fa-google-plus-circle: fab-google-plus
326
+ fa-google-plus-official: fab-google-plus
327
+ fa-google-plus-square: fab-google-plus-square
328
+ fa-google-wallet: fab-google-wallet
329
+ fa-graduation-cap: fas-graduation-cap
330
+ fa-gratipay: fab-gratipay
331
+ fa-grav: fab-grav
332
+ fa-group: fas-users
333
+ fa-h-square: fas-h-square
334
+ fa-hacker-news: fab-hacker-news
335
+ fa-hand-grab-o: far-hand-rock
336
+ fa-hand-lizard-o: far-hand-lizard
337
+ fa-hand-o-down: far-hand-point-down
338
+ fa-hand-o-left: far-hand-point-left
339
+ fa-hand-o-right: far-hand-point-right
340
+ fa-hand-o-up: far-hand-point-up
341
+ fa-hand-paper-o: far-hand-paper
342
+ fa-hand-peace-o: far-hand-peace
343
+ fa-hand-pointer-o: far-hand-pointer
344
+ fa-hand-rock-o: far-hand-rock
345
+ fa-hand-scissors-o: far-hand-scissors
346
+ fa-hand-spock-o: far-hand-spock
347
+ fa-hand-stop-o: far-hand-paper
348
+ fa-handshake-o: far-handshake
349
+ fa-hard-of-hearing: fas-deaf
350
+ fa-hashtag: fas-hashtag
351
+ fa-hdd-o: far-hdd
352
+ fa-header: fas-heading
353
+ fa-headphones: fas-headphones
354
+ fa-heart: fas-heart
355
+ fa-heart-o: far-heart
356
+ fa-heartbeat: fas-heartbeat
357
+ fa-history: fas-history
358
+ fa-home: fas-home
359
+ fa-hospital-o: far-hospital
360
+ fa-hotel: fas-bed
361
+ fa-hourglass: fas-hourglass
362
+ fa-hourglass-1: fas-hourglass-start
363
+ fa-hourglass-2: fas-hourglass-half
364
+ fa-hourglass-3: fas-hourglass-end
365
+ fa-hourglass-end: fas-hourglass-end
366
+ fa-hourglass-half: fas-hourglass-half
367
+ fa-hourglass-o: far-hourglass
368
+ fa-hourglass-start: fas-hourglass-start
369
+ fa-houzz: fab-houzz
370
+ fa-html5: fab-html5
371
+ fa-i-cursor: fas-i-cursor
372
+ fa-id-badge: far-id-badge
373
+ fa-id-card: fas-id-card
374
+ fa-id-card-o: far-id-card
375
+ fa-ils: fas-shekel-sign
376
+ fa-image: fas-image
377
+ fa-imdb: fab-imdb
378
+ fa-inbox: fas-inbox
379
+ fa-indent: fas-indent
380
+ fa-industry: fas-industry
381
+ fa-info: fas-info
382
+ fa-info-circle: fas-info-circle
383
+ fa-inr: fas-rupee-sign
384
+ fa-instagram: fab-instagram
385
+ fa-institution: fas-university
386
+ fa-internet-explorer: fab-internet-explorer
387
+ fa-intersex: fas-transgender
388
+ fa-ioxhost: fab-ioxhost
389
+ fa-italic: fas-italic
390
+ fa-joomla: fab-joomla
391
+ fa-jpy: fas-yen-sign
392
+ fa-jsfiddle: fab-jsfiddle
393
+ fa-key: fas-key
394
+ fa-keyboard-o: far-keyboard
395
+ fa-krw: fas-won-sign
396
+ fa-language: fas-language
397
+ fa-laptop: fas-laptop
398
+ fa-lastfm: fab-lastfm
399
+ fa-lastfm-square: fab-lastfm-square
400
+ fa-leaf: fas-leaf
401
+ fa-leanpub: fab-leanpub
402
+ fa-legal: fas-gavel
403
+ fa-lemon-o: far-lemon
404
+ fa-level-down: fas-level-down-alt
405
+ fa-level-up: fas-level-up-alt
406
+ fa-life-bouy: fas-life-ring
407
+ fa-life-buoy: fas-life-ring
408
+ fa-life-ring: far-life-ring
409
+ fa-life-saver: fas-life-ring
410
+ fa-lightbulb-o: far-lightbulb
411
+ fa-line-chart: fas-chart-line
412
+ fa-link: fas-link
413
+ fa-linkedin: fab-linkedin-in
414
+ fa-linkedin-square: fab-linkedin
415
+ fa-linode: fab-linode
416
+ fa-linux: fab-linux
417
+ fa-list: fas-list
418
+ fa-list-alt: far-list-alt
419
+ fa-list-ol: fas-list-ol
420
+ fa-list-ul: fas-list-ul
421
+ fa-location-arrow: fas-location-arrow
422
+ fa-lock: fas-lock
423
+ fa-long-arrow-down: fas-long-arrow-alt-down
424
+ fa-long-arrow-left: fas-long-arrow-alt-left
425
+ fa-long-arrow-right: fas-long-arrow-alt-right
426
+ fa-long-arrow-up: fas-long-arrow-alt-up
427
+ fa-low-vision: fas-low-vision
428
+ fa-magic: fas-magic
429
+ fa-magnet: fas-magnet
430
+ fa-mail-forward: fas-share
431
+ fa-mail-reply: fas-reply
432
+ fa-mail-reply-all: fas-reply-all
433
+ fa-male: fas-male
434
+ fa-map: fas-map
435
+ fa-map-marker: fas-map-marker-alt
436
+ fa-map-o: far-map
437
+ fa-map-pin: fas-map-pin
438
+ fa-map-signs: fas-map-signs
439
+ fa-mars: fas-mars
440
+ fa-mars-double: fas-mars-double
441
+ fa-mars-stroke: fas-mars-stroke
442
+ fa-mars-stroke-h: fas-mars-stroke-h
443
+ fa-mars-stroke-v: fas-mars-stroke-v
444
+ fa-maxcdn: fab-maxcdn
445
+ fa-meanpath: fab-font-awesome
446
+ fa-medium: fab-medium
447
+ fa-medkit: fas-medkit
448
+ fa-meetup: fab-meetup
449
+ fa-meh-o: far-meh
450
+ fa-mercury: fas-mercury
451
+ fa-microchip: fas-microchip
452
+ fa-microphone: fas-microphone
453
+ fa-microphone-slash: fas-microphone-slash
454
+ fa-minus: fas-minus
455
+ fa-minus-circle: fas-minus-circle
456
+ fa-minus-square: fas-minus-square
457
+ fa-minus-square-o: far-minus-square
458
+ fa-mixcloud: fab-mixcloud
459
+ fa-mobile: fas-mobile-alt
460
+ fa-mobile-phone: fas-mobile
461
+ fa-modx: fab-modx
462
+ fa-money: far-money-bill-alt
463
+ fa-moon-o: far-moon
464
+ fa-mortar-board: fas-graduation-cap
465
+ fa-motorcycle: fas-motorcycle
466
+ fa-mouse-pointer: fas-mouse-pointer
467
+ fa-music: fas-music
468
+ fa-navicon: fas-bars
469
+ fa-neuter: fas-neuter
470
+ fa-newspaper-o: far-newspaper
471
+ fa-object-group: far-object-group
472
+ fa-object-ungroup: far-object-ungroup
473
+ fa-odnoklassniki: fab-odnoklassniki
474
+ fa-odnoklassniki-square: fab-odnoklassniki-square
475
+ fa-opencart: fab-opencart
476
+ fa-openid: fab-openid
477
+ fa-opera: fab-opera
478
+ fa-optin-monster: fab-optin-monster
479
+ fa-outdent: fas-outdent
480
+ fa-pagelines: fab-pagelines
481
+ fa-paint-brush: fas-paint-brush
482
+ fa-paper-plane: fas-paper-plane
483
+ fa-paper-plane-o: far-paper-plane
484
+ fa-paperclip: fas-paperclip
485
+ fa-paragraph: fas-paragraph
486
+ fa-paste: fas-paste
487
+ fa-pause: fas-pause
488
+ fa-pause-circle: fas-pause-circle
489
+ fa-pause-circle-o: far-pause-circle
490
+ fa-paw: fas-paw
491
+ fa-paypal: fab-paypal
492
+ fa-pencil: fas-pencil-alt
493
+ fa-pencil-square: fas-pen-square
494
+ fa-pencil-square-o: far-edit
495
+ fa-percent: fas-percent
496
+ fa-phone: fas-phone
497
+ fa-phone-square: fas-phone-square
498
+ fa-photo: far-image
499
+ fa-picture-o: far-image
500
+ fa-pie-chart: fas-chart-pie
501
+ fa-pied-piper: fab-pied-piper
502
+ fa-pied-piper-alt: fab-pied-piper-alt
503
+ fa-pied-piper-pp: fab-pied-piper-pp
504
+ fa-pinterest: fab-pinterest
505
+ fa-pinterest-p: fab-pinterest-p
506
+ fa-pinterest-square: fab-pinterest-square
507
+ fa-plane: fas-plane
508
+ fa-play: fas-play
509
+ fa-play-circle: fas-play-circle
510
+ fa-play-circle-o: far-play-circle
511
+ fa-plug: fas-plug
512
+ fa-plus: fas-plus
513
+ fa-plus-circle: fas-plus-circle
514
+ fa-plus-square: fas-plus-square
515
+ fa-plus-square-o: far-plus-square
516
+ fa-podcast: fas-podcast
517
+ fa-power-off: fas-power-off
518
+ fa-print: fas-print
519
+ fa-product-hunt: fab-product-hunt
520
+ fa-puzzle-piece: fas-puzzle-piece
521
+ fa-qq: fab-qq
522
+ fa-qrcode: fas-qrcode
523
+ fa-question: fas-question
524
+ fa-question-circle: fas-question-circle
525
+ fa-question-circle-o: far-question-circle
526
+ fa-quora: fab-quora
527
+ fa-quote-left: fas-quote-left
528
+ fa-quote-right: fas-quote-right
529
+ fa-ra: fab-rebel
530
+ fa-random: fas-random
531
+ fa-ravelry: fab-ravelry
532
+ fa-rebel: fab-rebel
533
+ fa-recycle: fas-recycle
534
+ fa-reddit: fab-reddit
535
+ fa-reddit-alien: fab-reddit-alien
536
+ fa-reddit-square: fab-reddit-square
537
+ fa-refresh: fas-sync
538
+ fa-registered: far-registered
539
+ fa-remove: fas-times
540
+ fa-renren: fab-renren
541
+ fa-reorder: fas-bars
542
+ fa-repeat: fas-redo
543
+ fa-reply: fas-reply
544
+ fa-reply-all: fas-reply-all
545
+ fa-resistance: fab-rebel
546
+ fa-retweet: fas-retweet
547
+ fa-rmb: fas-yen-sign
548
+ fa-road: fas-road
549
+ fa-rocket: fas-rocket
550
+ fa-rotate-left: fas-undo
551
+ fa-rotate-right: fas-redo
552
+ fa-rouble: fas-ruble-sign
553
+ fa-rss: fas-rss
554
+ fa-rss-square: fas-rss-square
555
+ fa-rub: fas-ruble-sign
556
+ fa-ruble: fas-ruble-sign
557
+ fa-rupee: fas-rupee-sign
558
+ fa-s15: fas-bath
559
+ fa-safari: fab-safari
560
+ fa-save: fas-save
561
+ fa-scissors: fas-cut
562
+ fa-scribd: fab-scribd
563
+ fa-search: fas-search
564
+ fa-search-minus: fas-search-minus
565
+ fa-search-plus: fas-search-plus
566
+ fa-sellsy: fab-sellsy
567
+ fa-send: fas-paper-plane
568
+ fa-send-o: far-paper-plane
569
+ fa-server: fas-server
570
+ fa-share: fas-share
571
+ fa-share-alt: fas-share-alt
572
+ fa-share-alt-square: fas-share-alt-square
573
+ fa-share-square: fas-share-square
574
+ fa-share-square-o: far-share-square
575
+ fa-shekel: fas-shekel-sign
576
+ fa-sheqel: fas-shekel-sign
577
+ fa-shield: fas-shield-alt
578
+ fa-ship: fas-ship
579
+ fa-shirtsinbulk: fab-shirtsinbulk
580
+ fa-shopping-bag: fas-shopping-bag
581
+ fa-shopping-basket: fas-shopping-basket
582
+ fa-shopping-cart: fas-shopping-cart
583
+ fa-shower: fas-shower
584
+ fa-sign-in: fas-sign-in-alt
585
+ fa-sign-language: fas-sign-language
586
+ fa-sign-out: fas-sign-out-alt
587
+ fa-signal: fas-signal
588
+ fa-signing: fas-sign-language
589
+ fa-simplybuilt: fab-simplybuilt
590
+ fa-sitemap: fas-sitemap
591
+ fa-skyatlas: fab-skyatlas
592
+ fa-skype: fab-skype
593
+ fa-slack: fab-slack
594
+ fa-sliders: fas-sliders-h
595
+ fa-slideshare: fab-slideshare
596
+ fa-smile-o: far-smile
597
+ fa-snapchat: fab-snapchat
598
+ fa-snapchat-ghost: fab-snapchat-ghost
599
+ fa-snapchat-square: fab-snapchat-square
600
+ fa-snowflake-o: far-snowflake
601
+ fa-soccer-ball-o: far-futbol
602
+ fa-sort: fas-sort
603
+ fa-sort-alpha-asc: fas-sort-alpha-down
604
+ fa-sort-alpha-desc: fas-sort-alpha-up
605
+ fa-sort-amount-asc: fas-sort-amount-down
606
+ fa-sort-amount-desc: fas-sort-amount-up
607
+ fa-sort-asc: fas-sort-up
608
+ fa-sort-desc: fas-sort-down
609
+ fa-sort-down: fas-sort-down
610
+ fa-sort-numeric-asc: fas-sort-numeric-down
611
+ fa-sort-numeric-desc: fas-sort-numeric-up
612
+ fa-sort-up: fas-sort-up
613
+ fa-soundcloud: fab-soundcloud
614
+ fa-space-shuttle: fas-space-shuttle
615
+ fa-spinner: fas-spinner
616
+ fa-spoon: fas-utensil-spoon
617
+ fa-spotify: fab-spotify
618
+ fa-square: fas-square
619
+ fa-square-o: far-square
620
+ fa-stack-exchange: fab-stack-exchange
621
+ fa-stack-overflow: fab-stack-overflow
622
+ fa-star: fas-star
623
+ fa-star-half: fas-star-half
624
+ fa-star-half-empty: fas-star-half
625
+ fa-star-half-full: fas-star-half
626
+ fa-star-half-o: far-star-half
627
+ fa-star-o: far-star
628
+ fa-steam: fab-steam
629
+ fa-steam-square: fab-steam-square
630
+ fa-step-backward: fas-step-backward
631
+ fa-step-forward: fas-step-forward
632
+ fa-stethoscope: fas-stethoscope
633
+ fa-sticky-note: fas-sticky-note
634
+ fa-sticky-note-o: far-sticky-note
635
+ fa-stop: fas-stop
636
+ fa-stop-circle: fas-stop-circle
637
+ fa-stop-circle-o: far-stop-circle
638
+ fa-street-view: fas-street-view
639
+ fa-strikethrough: fas-strikethrough
640
+ fa-stumbleupon: fab-stumbleupon
641
+ fa-stumbleupon-circle: fab-stumbleupon-circle
642
+ fa-subscript: fas-subscript
643
+ fa-subway: fas-subway
644
+ fa-suitcase: fas-suitcase
645
+ fa-sun-o: far-sun
646
+ fa-superpowers: fab-superpowers
647
+ fa-superscript: fas-superscript
648
+ fa-support: far-life-ring
649
+ fa-table: fas-table
650
+ fa-tablet: fas-tablet-alt
651
+ fa-tachometer: fas-tachometer-alt
652
+ fa-tag: fas-tag
653
+ fa-tags: fas-tags
654
+ fa-tasks: fas-tasks
655
+ fa-taxi: fas-taxi
656
+ fa-telegram: fab-telegram
657
+ fa-television: fas-tv
658
+ fa-tencent-weibo: fab-tencent-weibo
659
+ fa-terminal: fas-terminal
660
+ fa-text-height: fas-text-height
661
+ fa-text-width: fas-text-width
662
+ fa-th: fas-th
663
+ fa-th-large: fas-th-large
664
+ fa-th-list: fas-th-list
665
+ fa-themeisle: fab-themeisle
666
+ fa-thermometer: fas-thermometer
667
+ fa-thermometer-0: fas-thermometer-empty
668
+ fa-thermometer-1: fas-thermometer-quarter
669
+ fa-thermometer-2: fas-thermometer-half
670
+ fa-thermometer-3: fas-thermometer-three-quarters
671
+ fa-thermometer-4: fas-thermometer-full
672
+ fa-thermometer-empty: fas-thermometer-empty
673
+ fa-thermometer-full: fas-thermometer-full
674
+ fa-thermometer-half: fas-thermometer-half
675
+ fa-thermometer-quarter: fas-thermometer-quarter
676
+ fa-thermometer-three-quarters: fas-thermometer-three-quarters
677
+ fa-thumb-tack: fas-thumbtack
678
+ fa-thumbs-down: fas-thumbs-down
679
+ fa-thumbs-o-down: far-thumbs-down
680
+ fa-thumbs-o-up: far-thumbs-up
681
+ fa-thumbs-up: fas-thumbs-up
682
+ fa-ticket: fas-ticket-alt
683
+ fa-times: fas-times
684
+ fa-times-circle: fas-times-circle
685
+ fa-times-circle-o: far-times-circle
686
+ fa-times-rectangle: fas-window-close
687
+ fa-times-rectangle-o: far-window-close
688
+ fa-tint: fas-tint
689
+ fa-toggle-down: far-caret-square-down
690
+ fa-toggle-left: far-caret-square-left
691
+ fa-toggle-off: fas-toggle-off
692
+ fa-toggle-on: fas-toggle-on
693
+ fa-toggle-right: far-caret-square-right
694
+ fa-toggle-up: far-caret-square-up
695
+ fa-trademark: fas-trademark
696
+ fa-train: fas-train
697
+ fa-transgender: fas-transgender
698
+ fa-transgender-alt: fas-transgender-alt
699
+ fa-trash: fas-trash-alt
700
+ fa-trash-o: far-trash-alt
701
+ fa-tree: fas-tree
702
+ fa-trello: fab-trello
703
+ fa-tripadvisor: fab-tripadvisor
704
+ fa-trophy: fas-trophy
705
+ fa-truck: fas-truck
706
+ fa-try: fas-lira-sign
707
+ fa-tty: fas-tty
708
+ fa-tumblr: fab-tumblr
709
+ fa-tumblr-square: fab-tumblr-square
710
+ fa-turkish-lira: fas-lira-sign
711
+ fa-tv: fas-tv
712
+ fa-twitch: fab-twitch
713
+ fa-twitter: fab-twitter
714
+ fa-twitter-square: fab-twitter-square
715
+ fa-umbrella: fas-umbrella
716
+ fa-underline: fas-underline
717
+ fa-undo: fas-undo
718
+ fa-universal-access: fas-universal-access
719
+ fa-university: fas-university
720
+ fa-unlink: fas-unlink
721
+ fa-unlock: fas-unlock
722
+ fa-unlock-alt: fas-unlock-alt
723
+ fa-unsorted: fas-sort
724
+ fa-upload: fas-upload
725
+ fa-usb: fab-usb
726
+ fa-usd: fas-dollar-sign
727
+ fa-user: fas-user
728
+ fa-user-circle: fas-user-circle
729
+ fa-user-circle-o: far-user-circle
730
+ fa-user-md: fas-user-md
731
+ fa-user-o: far-user
732
+ fa-user-plus: fas-user-plus
733
+ fa-user-secret: fas-user-secret
734
+ fa-user-times: fas-user-times
735
+ fa-users: fas-users
736
+ fa-vcard: fas-address-card
737
+ fa-vcard-o: far-address-card
738
+ fa-venus: fas-venus
739
+ fa-venus-double: fas-venus-double
740
+ fa-venus-mars: fas-venus-mars
741
+ fa-viacoin: fab-viacoin
742
+ fa-viadeo: fab-viadeo
743
+ fa-viadeo-square: fab-viadeo-square
744
+ fa-video-camera: fas-video
745
+ fa-vimeo: fab-vimeo-v
746
+ fa-vimeo-square: fab-vimeo-square
747
+ fa-vine: fab-vine
748
+ fa-vk: fab-vk
749
+ fa-volume-control-phone: fas-phone-volume
750
+ fa-volume-down: fas-volume-down
751
+ fa-volume-off: fas-volume-off
752
+ fa-volume-up: fas-volume-up
753
+ fa-warning: fas-exclamation-triangle
754
+ fa-wechat: fab-weixin
755
+ fa-weibo: fab-weibo
756
+ fa-weixin: fab-weixin
757
+ fa-whatsapp: fab-whatsapp
758
+ fa-wheelchair: fas-wheelchair
759
+ fa-wheelchair-alt: fab-accessible-icon
760
+ fa-wifi: fas-wifi
761
+ fa-wikipedia-w: fab-wikipedia-w
762
+ fa-window-close: fas-window-close
763
+ fa-window-close-o: far-window-close
764
+ fa-window-maximize: far-window-maximize
765
+ fa-window-minimize: fas-window-minimize
766
+ fa-window-restore: far-window-restore
767
+ fa-windows: fab-windows
768
+ fa-won: fas-won-sign
769
+ fa-wordpress: fab-wordpress
770
+ fa-wpbeginner: fab-wpbeginner
771
+ fa-wpexplorer: fab-wpexplorer
772
+ fa-wpforms: fab-wpforms
773
+ fa-wrench: fas-wrench
774
+ fa-xing: fab-xing
775
+ fa-xing-square: fab-xing-square
776
+ fa-y-combinator: fab-y-combinator
777
+ fa-y-combinator-square: fab-hacker-news
778
+ fa-yahoo: fab-yahoo
779
+ fa-yc: fab-y-combinator
780
+ fa-yc-square: fab-hacker-news
781
+ fa-yelp: fab-yelp
782
+ fa-yen: fas-yen-sign
783
+ fa-yoast: fab-yoast
784
+ fa-youtube: fab-youtube
785
+ fa-youtube-play: fab-youtube
786
+ fa-youtube-square: fab-youtube-square
Binary file
Binary file
Binary file
@@ -188,6 +188,12 @@ module Asciidoctor
188
188
  font @theme.base_font_family, size: @root_font_size, style: @theme.base_font_style
189
189
  end
190
190
 
191
+ # HACK: demote abstract section to styled open block to hide from TOC
192
+ if doctype == 'article' && (first_section = doc.sections[0]) && first_section.sectname === 'abstract'
193
+ first_section.context = :open
194
+ first_section.style = 'abstract'
195
+ end
196
+
191
197
  unless title_as_page
192
198
  body_start_page_number = page_number
193
199
  theme_font :heading, level: 1 do
@@ -634,11 +640,8 @@ module Asciidoctor
634
640
  end
635
641
 
636
642
  def convert_section sect, _opts = {}
637
- if (sectname = sect.sectname) == 'abstract'
638
- # HACK: cheat a bit to hide this section from TOC; TOC should filter these sections
639
- sect.context = :open
640
- return convert_abstract sect
641
- elsif (index_section = sectname == 'index') && @index.empty?
643
+ sectname = sect.sectname
644
+ if (index_section = sectname == 'index') && @index.empty?
642
645
  # override numbered_title to hide entry from TOC
643
646
  sect.define_singleton_method :numbered_title, ->(*) { '' }
644
647
  return
@@ -673,7 +676,7 @@ module Asciidoctor
673
676
  # QUESTION: should we just assign the section this generated id?
674
677
  # NOTE: section must have pdf-anchor in order to be listed in the TOC
675
678
  sect.set_attr 'pdf-anchor', (sect_anchor = derive_anchor_from_id sect.id, %(#{start_pgnum}-#{y.ceil}))
676
- add_dest_for_block sect, id: sect_anchor, y: (at_page_top? ? page_height : nil)
679
+ add_dest_for_block sect, anchor: sect_anchor, y: (at_page_top? ? page_height : nil)
677
680
  theme_font :heading, level: hlevel do
678
681
  if part
679
682
  ink_part_title sect, title, hopts
@@ -932,8 +935,8 @@ module Asciidoctor
932
935
  if !(has_icon = node.attr? 'icon') && (doc.attr 'icons') == 'font'
933
936
  icons = 'font'
934
937
  icon_data = admonition_icon_data type.to_sym
935
- icon_size = icon_data[:size] || 24
936
- label_width = label_min_width || (icon_size * 1.5)
938
+ label_width = (icon_size = icon_data[:size] || 24) * 1.5
939
+ label_width = label_min_width if label_min_width && label_min_width > label_width
937
940
  elsif (icon_path = has_icon || !(icon_path = (@theme[%(admonition_icon_#{type})] || {})[:image]) ?
938
941
  (get_icon_image_path node, type) :
939
942
  (ThemeLoader.resolve_theme_asset (apply_subs_discretely doc, icon_path, subs: [:attributes], imagesdir: @themesdir), @themesdir)) &&
@@ -2487,7 +2490,7 @@ module Asciidoctor
2487
2490
  target = node.target
2488
2491
  case node.type
2489
2492
  when :link
2490
- anchor = node.id ? %(<a id="#{node.id}">#{DummyText}</a>) : ''
2493
+ anchor = node.id ? %(<a id="#{derive_anchor_from_id node.id}">#{DummyText}</a>) : ''
2491
2494
  attrs = []
2492
2495
  if (role = node.role)
2493
2496
  attrs << %( class="#{role}")
@@ -2522,7 +2525,7 @@ module Asciidoctor
2522
2525
  text = text.gsub DropAnchorRx, ''
2523
2526
  end
2524
2527
  if ref.inline? && ref.type == :bibref && !scratch? && (@bibref_refs.add? refid)
2525
- anchor = %(<a id="_bibref_ref_#{refid}">#{DummyText}</a>)
2528
+ anchor = %(<a id="#{derive_anchor_from_id "_bibref_ref_#{refid}"}">#{DummyText}</a>)
2526
2529
  end
2527
2530
  @resolving_xref = nil
2528
2531
  end
@@ -2532,14 +2535,14 @@ module Asciidoctor
2532
2535
  end
2533
2536
  when :ref
2534
2537
  # NOTE: destination is created inside callback registered by FormattedTextTransform#build_fragment
2535
- %(<a id="#{node.id}">#{DummyText}</a>)
2538
+ %(<a id="#{derive_anchor_from_id node.id}">#{DummyText}</a>)
2536
2539
  when :bibref
2537
2540
  id = node.id
2538
2541
  # NOTE: technically node.text should be node.reftext, but subs have already been applied to text
2539
2542
  reftext = (reftext = node.reftext) ? %([#{reftext}]) : %([#{id}])
2540
- reftext = %(<a anchor="_bibref_ref_#{id}">#{reftext}</a>) if @bibref_refs.include? id
2543
+ reftext = %(<a anchor="#{derive_anchor_from_id "_bibref_ref_#{id}"}">#{reftext}</a>) if @bibref_refs.include? id
2541
2544
  # NOTE: destination is created inside callback registered by FormattedTextTransform#build_fragment
2542
- %(<a id="#{id}">#{DummyText}</a>#{reftext})
2545
+ %(<a id="#{derive_anchor_from_id id}">#{DummyText}</a>#{reftext})
2543
2546
  else
2544
2547
  log :warn, %(unknown anchor type: #{node.type.inspect})
2545
2548
  nil
@@ -2782,7 +2785,7 @@ module Asciidoctor
2782
2785
  end
2783
2786
 
2784
2787
  # NOTE: destination is created inside callback registered by FormattedTextTransform#build_fragment
2785
- node.id ? %(<a id="#{node.id}">#{DummyText}</a>#{quoted_text}) : quoted_text
2788
+ node.id ? %(<a id="#{derive_anchor_from_id node.id}">#{DummyText}</a>#{quoted_text}) : quoted_text
2786
2789
  end
2787
2790
 
2788
2791
  # If an id is provided or the node passed as the first argument has an id,
@@ -2795,8 +2798,8 @@ module Asciidoctor
2795
2798
  # experience. If the current x position is at or inside the left margin, set
2796
2799
  # the x position equal to 0 (left edge of page) to improve the navigation
2797
2800
  # experience.
2798
- def add_dest_for_block node, id: nil, y: nil
2799
- if !scratch? && (id ||= node.id)
2801
+ def add_dest_for_block node, anchor: nil, id: nil, y: nil
2802
+ if !scratch? && (anchor || ((id ||= node.id) && (anchor = derive_anchor_from_id id)))
2800
2803
  dest_x = bounds.absolute_left.truncate 4
2801
2804
  # QUESTION: when content is aligned to left margin, should we keep precise x value or just use 0?
2802
2805
  dest_x = 0 if dest_x <= page_margin_left
@@ -2806,7 +2809,7 @@ module Asciidoctor
2806
2809
  end
2807
2810
  # TODO: find a way to store only the ref of the destination; look it up when we need it
2808
2811
  node.set_attr 'pdf-destination', (node_dest = (dest_xyz dest_x, dest_y))
2809
- add_dest id, node_dest
2812
+ add_dest anchor, node_dest
2810
2813
  end
2811
2814
  nil
2812
2815
  end
@@ -2835,7 +2838,7 @@ module Asciidoctor
2835
2838
  pagenum_labels[n] = { P: (::PDF::Core::LiteralString.new (i + 1).to_s) }
2836
2839
  end
2837
2840
 
2838
- unless toc_page_nums.none? || (toc_title = doc.attr 'toc-title').nil_or_empty?
2841
+ unless toc_page_nums.none? || (toc_title = doc.attr 'toc-title').nil_or_empty? || doc.sections.empty?
2839
2842
  toc_section = insert_toc_section doc, toc_title, toc_page_nums
2840
2843
  end
2841
2844
 
@@ -2864,6 +2867,7 @@ module Asciidoctor
2864
2867
  next if (num_levels_for_sect = (sect.attr 'outlinelevels', num_levels).to_i) < (level = sect.level) ||
2865
2868
  ((sect.option? 'notitle') && sect == sect.document.last_child && sect.empty?)
2866
2869
  sect_title = sanitize sect.numbered_title formal: true
2870
+ next if sect_title.empty?
2867
2871
  sect_destination = sect.attr 'pdf-destination'
2868
2872
  if level < num_levels_for_sect && sect.sections?
2869
2873
  outline.section sect_title, destination: sect_destination, closed: expand_levels < 1 do
@@ -3655,7 +3659,7 @@ module Asciidoctor
3655
3659
  end
3656
3660
  toc_page_nums = nil if toc_page_nums.end == pgnum
3657
3661
  elsif last_chap == :pre
3658
- chapters_by_page[pgnum] = pgnum < body_start_page_number ? doc.doctitle : (doc.attr 'preface-title', 'Preface')
3662
+ chapters_by_page[pgnum] = pgnum < body_start_page_number ? doc.doctitle : (doc.attr 'preface-title', (doc.attr_unspecified? 'preface-title') ? 'Preface' : '')
3659
3663
  sections_by_page[pgnum] = last_sect
3660
3664
  else
3661
3665
  chapters_by_page[pgnum] = last_chap
@@ -3990,9 +3994,9 @@ module Asciidoctor
3990
3994
  entries.each do |entry|
3991
3995
  next if (num_levels_for_entry = (entry.attr 'toclevels', num_levels).to_i) < (entry_level = entry.level + 1).pred ||
3992
3996
  ((entry.option? 'notitle') && entry == entry.document.last_child && entry.empty?)
3997
+ entry_title = entry.context == :section ? entry.numbered_title : (entry.title? ? entry.title : (entry.xreftext 'basic'))
3998
+ next if entry_title.empty?
3993
3999
  theme_font :toc, level: entry_level do
3994
- entry_title = entry.context == :section ? entry.numbered_title : (entry.title? ? entry.title : (entry.xreftext 'basic'))
3995
- next if entry_title.empty?
3996
4000
  entry_title = entry_title.gsub DropAnchorRx, '' if entry_title.include? '<a'
3997
4001
  entry_title = transform_text entry_title, @text_transform if @text_transform
3998
4002
  pgnum_label_placeholder_width = rendered_width_of_string '0' * @toc_max_pagenum_digits
@@ -4948,7 +4952,7 @@ module Asciidoctor
4948
4952
  def derive_anchor_from_id value, default_value = nil
4949
4953
  if value
4950
4954
  value.ascii_only? ? value : %(0x#{::PDF::Core.string_to_hex value})
4951
- else
4955
+ elsif default_value
4952
4956
  %(__anchor-#{default_value})
4953
4957
  end
4954
4958
  end
@@ -26,6 +26,20 @@ class Asciidoctor::Document
26
26
 
27
27
  # Internal: Returns whether the specified attribute has never been set and is not locked.
28
28
  def attr_unspecified? name
29
- !((attribute_locked? name) || (@attributes_modified.include? name))
29
+ if (attribute_locked? name) || (@attributes_modified.include? name)
30
+ false
31
+ else
32
+ @options[:attributes].each_pair.none? do |k, v|
33
+ if k == name
34
+ true
35
+ elsif v == '@'
36
+ k == %(!#{name}) || k == %(#{name}!)
37
+ elsif k.end_with? '@'
38
+ (k = k.chop) == name || k == %(!#{name}) || k == %(#{name}!)
39
+ else
40
+ false
41
+ end
42
+ end
43
+ end
30
44
  end
31
45
  end
@@ -2,10 +2,6 @@
2
2
 
3
3
  Prawn::Font::AFM.instance_variable_set :@hide_m17n_warning, true
4
4
 
5
- require 'prawn/icon'
6
-
7
- Prawn::Icon::Compatibility.prepend (Module.new { def warning *_args; end })
8
-
9
5
  module Asciidoctor
10
6
  module Prawn
11
7
  module Extensions
@@ -322,7 +318,7 @@ module Asciidoctor
322
318
  if name
323
319
  options = { size: options } if ::Numeric === options
324
320
  if IconSets.include? name
325
- ::Prawn::Icon::FontData.load self, name
321
+ icon_font_data name
326
322
  options = options.reject {|k| k == :style } if options.key? :style
327
323
  end
328
324
  end
@@ -404,14 +400,6 @@ module Asciidoctor
404
400
  string == PlaceholderChar ? @character_spacing : super
405
401
  end
406
402
 
407
- def icon_font_data family
408
- ::Prawn::Icon::FontData.load self, family
409
- end
410
-
411
- def resolve_legacy_icon_name name
412
- ::Prawn::Icon::Compatibility::SHIMS[%(fa-#{name})]
413
- end
414
-
415
403
  def calc_line_metrics line_height, font = self.font, font_size = self.font_size
416
404
  line_height_length = line_height * font_size
417
405
  leading = line_height_length - font_size
@@ -67,7 +67,7 @@ Prawn::Text::Formatted::Box.prepend (Module.new do
67
67
  if doc.font.glyph_present? char
68
68
  current_font
69
69
  elsif fallback_fonts_to_check.empty?
70
- if logger.info? && !doc.scratch?
70
+ if logger.info? && !doc.scratch? && char != ?\u000a
71
71
  fonts_checked = [original_font].concat @fallback_fonts
72
72
  missing_chars = (doc.instance_variable_defined? :@missing_chars) ?
73
73
  (doc.instance_variable_get :@missing_chars) : (doc.instance_variable_set :@missing_chars, {})
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Prawn::Icon::Interface
4
+ def icon_font_data family
5
+ ::Prawn::Icon::FontData.load self, family
6
+ end
7
+
8
+ def resolve_legacy_icon_name name
9
+ ::Prawn::Icon::Legacy.mapping[%(fa-#{name})]
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Prawn::Icon::Legacy
4
+ FontsDir = ::File.absolute_path %(#{__dir__}/../../../../../data/fonts)
5
+ MappingDataPath = ::File.join FontsDir, 'fa-legacy-mapping.yml'
6
+ class << self
7
+ def mapping
8
+ @mapping ||= YAML.load_file MappingDataPath
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'prawn/icon'
4
+ Prawn::Icon::Compatibility.prepend (Module.new { def warning *_args; end })
5
+ require_relative 'prawn-icon/legacy'
6
+ require_relative 'prawn-icon/interface'
@@ -5,5 +5,6 @@ require_relative 'ext/asciidoctor'
5
5
  require_relative 'ext/pdf-core'
6
6
  require_relative 'ext/prawn'
7
7
  require_relative 'ext/prawn-gmagick'
8
+ require_relative 'ext/prawn-icon'
8
9
  require_relative 'ext/prawn-svg'
9
10
  require_relative 'ext/prawn-table'
@@ -1,6 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'treetop'
4
+ module Kernel
5
+ alias require polyglot_original_require
6
+ end if defined? polyglot_original_require
4
7
  require_relative 'formatted_text/parser'
5
8
  require_relative 'formatted_text/transform'
6
9
  require_relative 'formatted_text/formatter'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Asciidoctor
4
4
  module PDF
5
- VERSION = '2.3.24'
5
+ VERSION = '2.3.25'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asciidoctor-pdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.24
4
+ version: 2.3.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Allen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-11-15 00:00:00.000000000 Z
12
+ date: 2026-08-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: asciidoctor
@@ -231,6 +231,7 @@ files:
231
231
  - data/fonts/ABOUT-notoserif-subset
232
232
  - data/fonts/LICENSE-mplus
233
233
  - data/fonts/LICENSE-noto
234
+ - data/fonts/fa-legacy-mapping.yml
234
235
  - data/fonts/mplus1mn-bold-subset.ttf
235
236
  - data/fonts/mplus1mn-bold_italic-subset.ttf
236
237
  - data/fonts/mplus1mn-italic-subset.ttf
@@ -273,6 +274,9 @@ files:
273
274
  - lib/asciidoctor/pdf/ext/pdf-core.rb
274
275
  - lib/asciidoctor/pdf/ext/pdf-core/page.rb
275
276
  - lib/asciidoctor/pdf/ext/prawn-gmagick.rb
277
+ - lib/asciidoctor/pdf/ext/prawn-icon.rb
278
+ - lib/asciidoctor/pdf/ext/prawn-icon/interface.rb
279
+ - lib/asciidoctor/pdf/ext/prawn-icon/legacy.rb
276
280
  - lib/asciidoctor/pdf/ext/prawn-svg.rb
277
281
  - lib/asciidoctor/pdf/ext/prawn-svg/calculators/document_sizing.rb
278
282
  - lib/asciidoctor/pdf/ext/prawn-svg/elements/image.rb