Dear Bastian,

the symbols in the graph style show one possibility to draw paths. You can make 
a function that returns a path at a certain position (not tested):

    from pyx import *

    def symbol(x, y, size):
        return path.path(path.moveto(x, y), path.lineto(x+size, y+size))

    c = canvas.canvas()
    c.stroke(symbol(0, 0, 1))
    c.writePDFfile()

There are other solutions as well (like returning a canvas). It just depends on 
what needs to be drawn (whether it can be returned as a path or not for 
example). But that way you'll always need to rebuilt the symbols using PyX 
paths.

However, when you discuss music symbols, you might want to check existing 
fonts. MusixTeX for example provides a set of fonts. You will most probably 
have it on your machine already, as it is contained in many LaTeX 
distributions. Just check whether you can find a font like musix11.pfb on your 
system (of find it online somewhere). You can than use this font by the 
following code (just update the position of the pdf file):

    from pyx import *
    from pyx import bbox, font
    from pyx.font import t1file, metric
    
    n = 
'/usr/local/texlive/2008/texmf-dist/fonts/type1/public/musixtex/musix11.pfb'
    
    class noMetric(metric.metric):
    
        def __init__(self, t1font):
            self.t1font = t1font
            self.t1font._data2decode()
            self.glyphinfocache = {}
    
        def getglyphinfo(self, glyphname):
            if glyphname not in self.glyphinfocache:
                self.glyphinfocache[glyphname] = 
self.t1font.getglyphinfo(glyphname)
            return self.glyphinfocache[glyphname]
    
        def width_ds(self, glyphnames):
            return sum(self.getglyphinfo(glyphname)[0]
                       for glyphname in glyphnames)
    
        def width_pt(self, glyphnames, size_pt):
            return sum(self.getglyphinfo(glyphname)[4]
                       for glyphname in glyphnames)*size_pt/1000.0
    
        def height_pt(self, glyphnames, size_pt):
            return sum(self.getglyphinfo(glyphname)[5]
                       for glyphname in glyphnames)*size_pt/1000.0
    
        def depth_pt(self, glyphnames, size_pt):
            return sum(self.getglyphinfo(glyphname)[3]
                       for glyphname in glyphnames)*size_pt/1000.0
    
        def writePDFfontinfo(self, file):
            self.t1font.writePDFfontinfo(file)
    
    
    c = canvas.canvas()
    t1 = t1file.from_PFB_filename(n)
    f = font.T1font(t1, noMetric(t1))
    for x in range(16):
        for y in range(16):
            i = x+16*y
            c.stroke(path.rect_pt(-25+50*x, -25-50*y, 50, 50))
            c.text_pt(50*x, 15-50*y, str(i), [text.halign.center])
            c.insert(f.text_pt(x*50, -y*50, 'a', 10, decoding={'a': 
t1.glyphlist[i]}))
    c.writePDFfile()

Unfortunately there is no AFM file available for this font, but I quickly 
created a "noMetric" replacement to grab the information from the pdf file 
itself. I'll probably fix this in PyX itself by some other workaround, but for 
the moment this should be fine to show you what you could do instead by reusing 
some existing font.

Best,


André


Am 16.06.2011 um 11:04 schrieb R. Bastian:

> Bonjour,
> 
> I try to include music symbols in PyX.
> The symbols were writtent originally by Daniel Taupin and later
> transformed by Matti Koskinen (bitmap -> PS) and Bill Schottstaedt (-> Lisp).
> 
> In 'style.py' are the functions _squaresymbol & others written as 
> pseudo-PostScript,
> with 'change...' functions.
> In 'path.py' are the functions rlineto, rcurveto, ... which are usefull to
> translate the PostScript code to Python ("et retour" :-).
> 
> The model of my PS code is always:
> x y scale symbol 
> % symbol = bemol | diese | becarre | viertel | halbe | kopf | wkopf ...
> 
> Is there a convenient way to use this symbols in PyX ?
> 
> 
> -- 
> René Bastian
> www.pythoneon.org
> www.musiques-rb.org
> 
> ------------------------------------------------------------------------------
> EditLive Enterprise is the world's most technically advanced content
> authoring tool. Experience the power of Track Changes, Inline Image
> Editing and ensure content is compliant with Accessibility Checking.
> http://p.sf.net/sfu/ephox-dev2dev
> _______________________________________________
> PyX-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/pyx-user

-- 
by  _ _      _    Dr. André Wobst, Amselweg 22, 85716 Unterschleißheim
   / \ \    / )   [email protected], http://www.wobsta.de/
  / _ \ \/\/ /    PyX - High quality PostScript and PDF figures
 (_/ \_)_/\_/     with Python & TeX: visit http://pyx.sourceforge.net/

Attachment: smime.p7s
Description: S/MIME cryptographic signature

------------------------------------------------------------------------------
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
_______________________________________________
PyX-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyx-user

Reply via email to