Branch Coverage

blib/lib/ChordPro/Output/PDF.pm
Criterion Covered Total %
branch 256 850 30.1


line true false branch
42 0 8 unless $sb->{'songs'}[0]{'body'}
48 0 8 if $main::options->{'verbose'}
51 0 8 if $regtest
55 24 8 unless defined $v and $v ne ""
75 0 8 if ($ps->{'even-odd-pages'} and not $page % 2)
85 10 14 if ($ps->{'pagealign-songs'} and not $page % 2)
112 0 0 $main::config->{'toc'}{'order'} eq 'alpha' ? :
115 0 24 unless $main::options->{'toc'} // @book > 1
118 96 0 if exists $ctl->{$_}
121 8 16 if $ctl->{'omit'}
152 0 16 if $first_song_aligned
155 12 0 if ($ps->{'even-odd-pages'} and $page % 2 and not $first_song_aligned)
163 3 5 if ($ps->{'front-matter'})
166 0 3 unless $matter
176 3 0 if $ps->{'even-odd-pages'} and not $page % 2
183 3 5 if ($ps->{'back-matter'})
185 0 3 unless $matter
188 0 3 if $ps->{'even-odd-pages'} and $page % 2
200 3 5 if $pages_of{'front'}
202 8 0 if $pages_of{'toc'}
204 8 0 if $pages_of{'songbook'}
206 3 5 if $pages_of{'back'}
212 0 8 if $main::options->{'verbose'}
215 8 0 if $main::options->{'csv'}
217 0 8 if $verbose
228 0 8 unless open my $fd, ">:utf8", &encode_utf8($csv)
232 0 8 if $main::config->{'debug'}{'csv'} or $main::options->{'verbose'}
241 328 0 unless ref $v eq "ARRAY"
242 0 328 unless defined $v and defined $v->[0]
244 328 0 unless $v =~ /[$sep"\n\r]/s
251 9 24 if (@_ == 1)
255 5 28 $pages > 1 ? :
264 33 264 if $_->{'omit'}
276 8 64 if $_->{'omit'}
283 3 5 unless ($ctl->{'songsonly'})
288 3 0 if $pages_of->{'front'}
293 3 0 if $pages_of->{'toc'}
297 0 8 if $main::config->{'debug'}{'csv'}
308 3 5 unless ($ctl->{'songsonly'})
313 3 0 if $pages_of->{'back'}
317 0 8 if $main::config->{'debug'}{'csv'} or $main::options->{'verbose'}
340 0 40 unless ($s->{'body'})
341 0 0 unless $s->{'source'}{'embedding'}
342 0 0 unless $s->{'source'}{'embedding'} eq "pdf"
348 0 0 if ($s->{'meta'}{'title'}[0] eq $s->{'source'}{'file'} and $p->{'Title'})
377 0 40 if $structured
382 0 40 if ($main::config->{'instrument'}{'type'} eq 'keyboard') { }
393 0 40 if defined $s->{'settings'}{'diagrampos'}
410 320 0 unless $_
414 0 0 if (m[/]) { }
0 0 elsif (is_corefont($_)) { }
423 0 0 unless $pr->init_font($item)
426 320 0 unless $_
430 0 40 if $fail
432 0 40 if ($ps->{'labels'}{'comment'}) { }
40 0 elsif ($ps->{'labels'}{'width'} eq 'auto') { }
436 0 40 if ($s->{'labels'} and @{$s->{'labels'};}) { }
443 0 0 if $t > $longest
469 0 40 if $main::options->{'even-pages-number-left'}
470 0 40 if $main::options->{'odd-pages-number-left'}
473 40 0 if (defined $st and not $ps->{'titles-directive-ignore'})
479 0 0 unless defined $ps->{'formats'}{$class}{$_}
480 0 0 unless (ref $ps->{'formats'}{$class}{$_} eq "ARRAY")
484 0 0 unless (ref $ps->{'formats'}{$class}{$_}[0] eq "ARRAY")
496 0 40 if ($st eq "left")
499 0 40 if ($st eq "right")
506 0 0 if ($value =~ /^(.+)\%$/) { }
522 42 0 if ($ps->{'columns'} <= 1)
525 0 42 if $main::config->{'debug'}{'spacing'}
534 0 0 if $col < $ps->{'columns'} - 1
537 0 0 if $main::config->{'debug'}{'spacing'}
551 16 26 $opts->{'prepend'} ? :
558 32 10 if ($ps->{'even-odd-pages'})
562 5 27 if $ps->{'even-odd-pages'} < 0
568 34 8 if ($rightpage) { }
592 16 26 $opts->{'roman'} ? :
597 24 18 if ($thispage == 1) { }
16 2 elsif ($thispage == $startpage) { }
608 0 42 if ($bgpdf)
610 0 0 if ($bgpdf =~ /^(.+):(\d+)$/)
614 0 0 if (-s -r $fn) { }
615 0 0 if $ps->{'even-odd-pages'} and not $rightpage
627 0 42 if $ps->{'head-first-only'} and $class == 2
629 0 42 if ($spreadimage)
647 144 0 if $vsp >= 0 and $y - $vsp >= $ps->{'_bottommargin'}
649 0 0 if (++$col >= $ps->{'columns'})
659 0 40 if $lyrics_only or not $dctl->{'show'}
662 24 16 if not defined $chords and $s->{'chords'}
664 24 16 if ($chords)
666 48 0 if (my $i = $s->{'chordsinfo'}{$_}) { }
667 48 0 if $i->has_diagram
674 16 24 unless @chords
678 8 16 if ($thispage == 1) { }
16 0 elsif ($thispage == $startpage) { }
687 0 24 if ($show eq 'right' and $class <= 1) { }
0 24 elsif ($show eq 'top' and $class <= 1) { }
24 0 elsif ($show eq 'bottom' and $class <= 1 and $col == 0) { }
0 0 elsif ($show eq 'below') { }
709 0 0 unless @chords
725 0 0 unless $h > 0
733 0 0 unless @chords
750 0 24 unless $h > 0
763 0 24 if $main::config->{'debug'}{'spacing'}
766 24 48 unless @chords
772 0 24 if $main::config->{'debug'}{'spacing'}
785 0 0 if $main::config->{'debug'}{'spacing'}
788 0 0 unless @chords
794 0 0 if $main::config->{'debug'}{'spacing'}
804 0 160 @$redo ? :
805 0 160 if ($elt->{'type'} eq 'image' and $elt->{'opts'}{'spread'}) { }
0 160 elsif ($elt->{'type'} eq 'delegate' and $elt->{'subtype'} eq 'image' and $elt->{'data'}[0] =~ /\bspread=\d+\b$/) { }
807 0 0 if ($spreadimage) { }
811 0 0 if $main::config->{'debug'}{'images'}
820 0 0 if ($spreadimage) { }
825 0 0 if $main::config->{'debug'}{'images'}
828 0 0 unless eval "require $pkg"
846 0 24 if $source->{'file'} and $main::options->{'debug'}
859 0 160 if ($elt->{'type'} eq "newpage")
864 0 160 if ($elt->{'type'} eq "colb")
869 40 120 if ($elt->{'type'} ne "set" and not $did++)
871 40 0 unless $dctl->{'show'} eq "below"
872 0 40 if $ps->{'showlayout'} or $main::config->{'debug'}{'spacing'}
875 40 120 if ($elt->{'type'} eq "empty")
878 0 40 if $s->{'structure'} eq "structured"
879 24 16 if $vsp_ignorefirst
880 0 16 if $main::config->{'debug'}{'spacing'}
883 0 16 if $main::config->{'debug'}{'spacing'}
887 120 0 unless ($elt->{'type'} =~ /^(?:control|set|ignore)$/)
891 0 48 if ($elt->{'type'} eq "songline" or $elt->{'type'} eq "tabline" or $elt->{'type'} =~ /^comment(?:_box|_italic)?$/)
895 0 72 if ($elt->{'context'} ne $curctx)
903 72 0 if ($type eq 'songline') { }
0 0 elsif ($type =~ /^comment/) { }
0 0 elsif ($type eq 'tabline') { }
915 72 0 if ($elt->{'type'} eq "songline" and not $elt->{'indent'})
917 0 72 if (@$e > 1)
927 0 72 if $main::config->{'debug'}{'spacing'}
933 0 72 if ($elt->{'context'} eq "chorus")
936 0 0 if ($style->{'bar'}{'offset'} and $style->{'bar'}{'width'})
945 0 0 unless $main::config->{'settings'}{'choruslabels'}
949 0 72 if ($elt->{'type'} =~ /^comment/ and not $elt->{'indent'})
952 0 0 if ($elt->{'chords'})
998 0 72 if $main::config->{'debug'}{'spacing'}
1000 0 72 if $r
1004 0 48 if ($elt->{'type'} eq "chorus")
1008 0 0 if ($e->{'type'} eq 'songline') { }
0 0 elsif ($e->{'type'} eq 'empty') { }
1025 0 48 if ($elt->{'type'} eq "verse")
1028 0 0 if ($e->{'type'} eq 'songline') { }
0 0 elsif ($e->{'type'} eq 'empty') { }
1045 0 48 if ($elt->{'type'} eq "gridline")
1047 0 0 if $lyrics_only or not $ps->{'grids'}{'show'}
1051 0 0 if $main::config->{'debug'}{'spacing'}
1063 0 0 if $main::config->{'debug'}{'spacing'}
1072 0 0 if $main::config->{'debug'}{'spacing'}
1077 0 48 if ($elt->{'type'} eq "tab")
1082 0 0 unless $e->{'type'} eq "tabline"
1089 0 48 if ($elt->{'type'} eq "tabline")
1093 0 0 if $main::config->{'debug'}{'spacing'}
1098 0 0 if $main::config->{'debug'}{'spacing'}
1103 0 48 if ($elt->{'type'} eq "delegate")
1104 0 0 if ($elt->{'subtype'} =~ /^image(?:-(\w+))?$/)
1108 0 0 unless eval "require $pkg"
1112 0 0 if ($ps->{'columns'} > 1) { }
1121 0 0 unless $res
1128 0 48 if ($elt->{'type'} eq "image")
1136 0 0 if $main::config->{'debug'}{'spacing'}
1143 0 0 unless ($vsp =~ /^\d/)
1152 0 0 if $main::config->{'debug'}{'spacing'}
1157 0 48 if ($elt->{'type'} eq "svg")
1165 0 0 if $main::config->{'debug'}{'images'} or not @$o
1166 0 0 unless (@$o)
1190 0 0 if $main::config->{'debug'}{'images'}
1197 0 48 if ($elt->{'type'} eq "xform")
1203 0 0 if $main::config->{'debug'}{'spacing'}
1209 0 0 if $main::config->{'debug'}{'spacing'}
1214 0 48 if ($elt->{'type'} eq "rechorus")
1216 0 0 unless ($t->{'type'} =~ /^comment(?:_italic|_box)?$/)
1220 0 0 if ($t->{'quote'} and $elt->{'chorus'}) { }
0 0 elsif ($elt->{'chorus'} and $elt->{'chorus'}[0]{'type'} eq 'set' and $elt->{'chorus'}[0]{'name'} eq 'label') { }
0 0 elsif ($t->{'tag'} and $t->{'type'} =~ /^comment(?:_(?:box|italic))?/) { }
1227 0 0 if ($main::config->{'settings'}{'choruslabels'}) { }
1234 0 0 if $ps->{'chorus'}{'recall'}{'tag'} ne ""
1249 0 0 if ($ps->{'chorus'}{'recall'}{'choruslike'})
1258 0 0 if ($ps->{'chorus'}{'recall'}{'choruslike'})
1265 48 0 if ($elt->{'type'} eq "tocline")
1268 0 48 if $main::config->{'debug'}{'spacing'}
1273 0 48 if $main::config->{'debug'}{'spacing'}
1277 0 0 if ($elt->{'type'} eq "diagrams")
1282 0 0 if ($elt->{'type'} eq "control")
1283 0 0 if ($elt->{'name'} =~ /^(text|chord|grid|toc|tab)-size$/) { }
0 0 elsif ($elt->{'name'} =~ /^(text|chord|grid|toc|tab)-font$/) { }
0 0 elsif ($elt->{'name'} =~ /^(text|chord|grid|toc|tab)-color$/) { }
1284 0 0 if (defined $elt->{'value'}) { }
1295 0 0 if (defined $elt->{'value'}) { }
1298 0 0 if ($fn =~ m[/] or $fn =~ /\.(ttf|otf)$/i) { }
0 0 elsif (is_corefont($fn)) { }
1326 0 0 if (defined $elt->{'value'}) { }
1338 0 0 if ($elt->{'type'} eq "set")
1339 0 0 if ($elt->{'name'} eq 'lyrics-only') { }
0 0 elsif ($elt->{'name'} eq 'gridparams') { }
0 0 elsif ($elt->{'name'} eq 'label') { }
0 0 elsif ($elt->{'name'} eq 'context') { }
0 0 elsif ($elt->{'name'} =~ /^pdf\.(.+)/) { }
1341 0 0 unless $lyrics_only > 1
1348 0 0 if ($v[1]) { }
1355 0 0 if $v[2]
1356 0 0 if $v[3]
1358 0 0 if ($ps->{'labels'}{'comment'} and $v[4] ne "")
1368 0 0 if ($ps->{'labels'}{'comment'} and $elt->{'value'} ne "")
1393 0 0 if ($elt->{'type'} eq "ignore")
1403 0 40 if ($dctl->{'show'} eq "below")
1410 2 3 if $ps->{'pagealign-songs'} > 1 and $pages % 2 and $opts->{'songindex'} < $opts->{'numsongs'}
1425 32 10 if ($ps->{'even-odd-pages'})
1429 5 27 if $ps->{'even-odd-pages'} < 0
1435 34 8 if ($rightpage) { }
1459 16 26 $opts->{'roman'} ? :
1463 24 18 if ($thispage == 1) { }
16 2 elsif ($thispage == $startpage) { }
1474 42 0 if ($ps->{'headspace'})
1476 0 42 if $main::config->{'debug'}{'meta'}
1483 42 0 if ($ps->{'footspace'})
1506 144 0 if $label eq "" or $ps->{'_indent'} == 0
1513 0 0 if ($align eq 'right') { }
0 0 elsif ($align =~ /^cent(?:er|re)$/) { }
1541 2 290 if (@stack)
1547 3 302 if ($a =~ m[^<\s*/\s*(\w+)(.*)>$]) { }
6 296 elsif ($a =~ /^<\s*(\w+)(.*)>$/) { }
1551 3 0 if (@stack) { }
1552 3 0 if ($stack[-1] =~ /^<\s*$k\b/) { }
1573 2 290 if (@stack)
1580 0 146 if (@stack)
1637 0 72 if ($type =~ /^comment/)
1641 0 0 if $opts{'indent'}
1642 0 0 if $elt->{'indent'}
1645 0 0 if ($elt->{'chords'})
1649 0 0 if ($chord eq '') { }
1659 0 0 $ex ne '' ? :
1663 0 72 if ($type eq "tabline")
1666 0 0 if $opts{'indent'}
1680 0 72 if ($lyrics_only or $suppress_empty_chordsline and not has_visible_chords($elt))
1685 0 0 if $opts{'indent'}
1686 0 0 if $elt->{'indent'}
1691 0 0 $ex ne '' ? :
1694 0 72 if ($chordscol or $inlinechords) { }
0 72 elsif ($chordsunder) { }
1695 0 0 if $ytext > $ychord
1711 0 72 if $elt->{'indent'}
1714 0 72 if $chordscol
1715 0 72 if ($chordsx < 0)
1718 0 72 if $opts{'indent'}
1721 0 72 if ($inlinechords)
1722 0 0 unless $inlinechords =~ /%[cs]/
1733 0 144 if ($chordscol and $chord ne '') { }
1735 0 0 if ($chordscapo)
1746 0 0 if $phrase eq ""
1749 0 0 if defined $pre
1752 0 0 unless defined $rest
1769 144 0 if ($chord ne "")
1772 0 144 if ($chord->info->is_annotation) { }
0 144 elsif ($inlinechords) { }
1774 0 0 if $inlinechords
1786 0 144 if ($inlinechords) { }
1791 0 144 if ($phrase =~ /^\s+$/) { }
1798 0 144 if ($xt0 > $xt1) { }
1800 0 0 if ($i < $n and not demarkup($phrase) =~ /\s$/ and not demarkup($phrases[$i + 1]) =~ /^\s/ and my $marker = $ps->{'split-marker'})
1810 0 0 unless UNIVERSAL::isa($marker, "ARRAY")
1816 0 0 if $marker->[2]
1821 0 0 unless $m
1826 0 0 unless $m
1829 0 0 if ($w)
1834 0 0 if $xt0 > $x
1845 0 72 if @chords
1853 0 0 if exists $_[0]{'class'}
1868 0 0 unless $fonts->{'grid'}
1882 0 0 unless is_bar($elt->{'tokens'}[$i])
1891 0 0 if ($margin->[0])
1893 0 0 if ($elt->{'margin'})
1895 0 0 if ($t->{'chords'})
1912 0 0 if ($prevvoltastart and @tokens and $tokens[0]{'class'} eq "bar" and $tokens[0]{'align'})
1923 0 0 if ($token->{'class'} eq "bar")
1925 0 0 if ($voltastart)
1937 0 0 if $t eq "{"
1938 0 0 if $t eq "}"
1939 0 0 if $t eq "}{"
1943 0 0 if $i > $firstbar
1944 0 0 if $i == $lastbar
1946 0 0 if ($t eq '|') { }
0 0 elsif ($t eq '||') { }
0 0 elsif ($t eq '|:') { }
0 0 elsif ($t eq ':|') { }
0 0 elsif ($t eq ':|:') { }
0 0 elsif ($t eq '|.') { }
0 0 elsif ($t eq ' %') { }
1947 0 0 if ($token->{'volta'}) { }
1948 0 0 if ($align)
1987 0 0 if ($token->{'class'} eq "repeat2")
2001 0 0 if $needcell
2005 0 0 if ($token->{'class'} eq 'chord' or $token->{'class'} eq 'chords') { }
0 0 elsif (exists $token->{'chord'}) { }
0 0 elsif ($token->{'class'} eq 'slash') { }
0 0 elsif ($token->{'class'} eq 'space') { }
0 0 elsif ($token->{'class'} eq 'repeat1') { }
2009 0 0 if $t eq ""
2018 0 0 unless $token->{'class'} eq "chord"
2021 0 0 unless $token eq "."
2043 0 0 if ($x > $ps->{'papersize'}[0])
2050 0 0 if ($margin->[1] and $elt->{'comment'})
2052 0 0 if ($t->{'chords'})
2170 0 0 if ($elt->{'uri'} =~ /^id=(.+)/) { }
0 0 elsif ($elt->{'uri'} =~ /^chord:(.*)/) { }
0 0 elsif (not -s $elt->{'uri'}) { }
2172 0 0 unless (exists $ChordPro::Output::PDF::assets->{$id})
2173 0 0 unless (exists $main::config->{'assets'}{$id})
2177 0 0 if ($a->{'src'} and not $a->{'data'})
2180 0 0 unless ($fd)
2186 0 0 if ($info->{'error'})
2197 0 0 if ($main::config->{'debug'}{'images'})
2204 0 0 unless ($ChordPro::Output::PDF::assets->{$id}{'data'})
2217 0 0 if $main::config->{'debug'}{'images'}
2219 0 0 unless ($img)
2226 0 0 if ($ps->{'columns'} > 1) { }
2236 0 0 if ($opts->{'width'} and $opts->{'width'} =~ /^(\d+(?:\.\d+)?)\%$/)
2239 0 0 if ($opts->{'height'} and $opts->{'height'} =~ /^(\d+(?:\.\d+)?)\%$/)
2246 0 0 if (defined $opts->{'scale'}) { }
2250 0 0 if ($w > $pw)
2253 0 0 if ($h * $scale > $ph)
2257 0 0 if $main::config->{'debug'}{'images'}
2260 0 0 if ($opts->{'center'})
2262 0 0 if $main::config->{'debug'}{'images'}
2266 0 0 if (defined(my $tag = $i_tag // $opts->{'label'}))
2282 0 0 if ($_ox =~ /^([-+]?[\d.]+)\%$/)
2285 0 0 if ($_oy =~ /^([-+]?[\d.]+)\%$/)
2292 0 0 if ($anchor eq 'column') { }
0 0 elsif ($anchor eq 'page') { }
0 0 elsif ($anchor eq 'paper') { }
2312 0 0 if defined $ox
2313 0 0 if defined $oy
2314 0 0 if (ref $img eq 'placeholder') { }
2319 0 0 if $main::config->{'debug'}{'images'}
2329 0 0 if $main::config->{'debug'}{'images'}
2333 0 0 if $main::config->{'debug'}{'images'}
2335 0 0 if ($anchor eq "float")
2347 0 0 if ($elt->{'uri'} =~ /^id=(.+)/) { }
0 0 elsif (not -s $elt->{'uri'}) { }
2349 0 0 unless exists $ChordPro::Output::PDF::assets->{$1}
2355 0 0 if $main::config->{'debug'}{'images'}
2357 0 0 unless ($img)
2369 0 0 if (defined $opts->{'scale'}) { }
2373 0 0 if ($w > $pw)
2376 0 0 if ($h * $scale > $ph)
2380 0 0 if $main::config->{'debug'}{'images'}
2383 0 0 if ($opts->{'center'})
2385 0 0 if $main::config->{'debug'}{'images'}
2388 0 0 if (defined(my $tag = $i_tag // $opts->{'label'}))
2395 0 0 if $main::config->{'debug'}{'images'}
2397 0 0 if $main::config->{'debug'}{'images'}
2415 48 0 unless ($vsp)
2430 144 0 if ($elt->{'chords'})
2432 288 0 if defined $_
2442 0 0 if $elt->{'phrases'}
2451 0 72 if ($elt->{'type'} =~ /^comment/)
2455 0 72 if ($elt->{'type'} eq "tabline")
2465 0 72 if $lyrics_only or $chordscol
2467 0 72 if $suppress_empty_chordsline and not has_visible_chords($elt)
2470 0 72 if $suppress_empty_lyricsline and not join("", @{$elt->{'phrases'};}) =~ /\S/
2472 0 72 if ($inlinechords) { }
2473 0 0 if $csp > $vsp
2524 0 40 if (ref $cols eq "ARRAY")
2528 40 0 if ($cols) { }
2539 0 40 if (@cols)
2543 0 0 if (not $_ or $_ eq '*') { }
0 0 elsif (/^(\d+)%$/) { }
2553 0 0 if $stars
2556 0 0 if (not $_ or $_ eq '*') { }
2568 40 0 unless $cols > 1
2634 0 0 if $chordscol
2640 0 0 unless $off[$i]
2649 0 0 if ($ps->{'_indent'})
2654 0 0 if ($ps->{'_indent'})
2666 0 11 if ($ENV{'CHORDPRO_PDF_API'})
2670 0 11 if ($lib) { }
2671 0 0 unless (eval "require $lib")
2675 0 0 if $verbose
2679 0 11 unless eval "require $_"
2681 0 11 if $verbose
2685 0 11 unless $pdfapi
2705 16 0 unless $_
2706 0 0 if (m[/]) { }
2710 0 0 unless is_corefont($_)
2716 0 16 if $_
2721 0 8 if $_
2724 8 0 unless $_
2729 8 0 unless defined $_
2735 8 0 unless defined $_
2739 8 0 unless defined $_
2744 0 8 if ($main::options->{'chord-grid-size'})
2753 8 0 unless (eval { do { $pdf->{'papersize'}[0] } })
2757 0 8 unless exists $ps{lc $pdf->{'papersize'}}
2765 88 288 if /^(?:background|frame)$/
2795 48 126 unless exists $ps->{'formats'}{$classes[$i]}{$type}
2806 0 126 unless $fmt
2807 126 0 if (@$fmt == 3 and ref $fmt->[0] ne "ARRAY")
2818 0 126 if (@$fmt % 3)
2823 24 102 unless $rightpage
2826 5 121 if ($fmt[0])
2828 5 0 if ($t ne "")
2829 5 0 unless $havefont++
2835 80 46 if ($fmt[1])
2837 40 40 if ($t ne "")
2838 40 0 unless $havefont++
2844 15 111 if ($fmt[2])
2846 15 0 if ($t ne "")
2847 13 2 unless $havefont++
2875 72 72 if (@rchords)
2879 0 72 if ($c =~ /^\*(.+)/) { }
2887 0 72 if ($w > $m - $x)
2893 144 0 if ($ex eq "")
2902 0 144 if ($w > $m - $x and @rchords > 1) { }
2913 0 144 if ($ex ne "")
2914 0 0 if ($rphrases[-1] =~ /[[:alpha:]]$/ and $ex =~ /^[[:alpha:]]/ and $chord ne "")
2924 0 0 if @$res > 1
2930 0 72 if @$res > 1
2936 0 0 unless length $text
2983 0 0 unless $main::config->{'debug'}{'fonts'}
2986 0 0 if $verbose