]> git.donarmstrong.com Git - lilypond.git/commitdiff
Implement option -dstrokeadjust in order to get stroked stems and strokeadjustment
authorDavid Kastrup <dak@gnu.org>
Tue, 23 Apr 2013 14:49:19 +0000 (16:49 +0200)
committerDavid Kastrup <dak@gnu.org>
Sat, 7 Dec 2013 11:48:17 +0000 (12:48 +0100)
This makes the stroke drawing primitives for long rounded rectangles
dependent on the setting of currentstrokeadjust.  As a result,
low-resolution bitmap devices (up to 150 dpi or so) will get stroke
adjustment applied automatically.  The option needs to get invoked
explicitly to get stroke adjustment for PDF, giving a large file size
increase and markedly better previews on a number of PDF previewers.

ps/music-drawing-routines.ps
scm/framework-ps.scm
scm/lily.scm

index 121897a0218682dbb339f76beeb6eea6156e596a..03df7c03cb7735e5f8f4746983e19384cb85ea19 100644 (file)
@@ -138,51 +138,58 @@ bind def
            0 setlinecap
        }
        { % full shape
-           currentlinewidth 2 div
-           0 0 2 index 180 270 arc
-           2 index 0 2 index 270 360 arc
-           3 copy 0 90 arc
-           0 2 index 3 -1 roll 90 180 arc
-           closepath
-           2 copy 2 mul gt
-           { % horizontal
-               2 copy add currentlinewidth add 10 add % large enough
-               0 1 index neg moveto
-               2 index 1 index neg lineto
-               2 index 1 index lineto
-               0 exch lineto closepath
-               gsave clip newpath
-               0 1 index 2 div moveto
-               currentlinewidth add setlinewidth
-               0 rlineto
-               2 setlinecap
-               stroke
-               grestore
-           }
-           {
-               2 copy exch 2 mul gt
-               { % vertical
+           currentstrokeadjust {
+               currentlinewidth 2 div
+               0 0 2 index 180 270 arc
+               2 index 0 2 index 270 360 arc
+               3 copy 0 90 arc
+               0 2 index 3 -1 roll 90 180 arc
+               closepath
+               2 copy 2 mul gt
+               { % horizontal
                    2 copy add currentlinewidth add 10 add % large enough
-                   dup neg 0 moveto
-                   dup 0 lineto
-                   dup 2 index lineto
-                   neg 1 index lineto closepath
+                   0 1 index neg moveto
+                   2 index 1 index neg lineto
+                   2 index 1 index lineto
+                   0 exch lineto closepath
                    gsave clip newpath
-                   1 index 2 div 0 moveto
-                   exch currentlinewidth add setlinewidth
-                   0 exch rlineto
+                   0 1 index 2 div moveto
+                   currentlinewidth add setlinewidth
+                   0 rlineto
                    2 setlinecap
                    stroke
                    grestore
                }
                {
-                   pop pop
-                   fill
+                   2 copy exch 2 mul gt
+                   { % vertical
+                       2 copy add currentlinewidth add 10 add % large enough
+                       dup neg 0 moveto
+                       dup 0 lineto
+                       dup 2 index lineto
+                       neg 1 index lineto closepath
+                       gsave clip newpath
+                       1 index 2 div 0 moveto
+                       exch currentlinewidth add setlinewidth
+                       0 exch rlineto
+                       2 setlinecap
+                       stroke
+                       grestore
+                   }
+                   {
+                       pop pop
+                       fill
+                   }
+                   ifelse
                }
                ifelse
+               newpath
+           }
+           {
+               1 setlinejoin
+               0 0 4 2 roll 4 copy rectstroke rectfill
            }
            ifelse
-           newpath
        }
        ifelse
     }
index 2e9db9f852dc91ce556ecf8df61cd0e94dcc4a8b..bb7dc555049e566cfe047bf1911a0a3164636bed 100644 (file)
@@ -84,7 +84,9 @@
    "/output-scale "
    (number->string (ly:output-def-lookup layout 'output-scale)) " def\n"
    (output-entry "page-height" 'paper-height)
-   (output-entry "page-width" 'paper-width)))
+   (output-entry "page-width" 'paper-width)
+   (if (ly:get-option 'strokeadjust) "true setstrokeadjust\n" "")
+   ))
 
 (define (dump-page outputter page page-number page-count landscape?)
   (ly:outputter-dump-string
index 1d69355e72a567cdf9d48cd58da2ffc081e94445..86054217b85d9ef6f6f0133f5de5ee428bf37ffd 100644 (file)
@@ -330,6 +330,12 @@ floating point exceptions.")
      #t
      "Don't use directories from input files while
 constructing output file names.")
+    (strokeadjust
+     #f
+     "Set the PostScript strokeadjust operator explicitly.
+This employs different drawing primitives, resulting in
+large PDF file size increases but often markedly better
+PDF previews.")
     (svg-woff
      #f
      "Use woff font files in SVG backend.")