[racket] text/font not rendering symbol fonts on WinXP

From: Neil Toronto (neil.toronto at gmail.com)
Date: Fri Nov 23 21:23:21 EST 2012

To submit a PR, in DrRacket, click on the Help menu, choose "Submit Bug 
Report...", fill out the form, then click "Submit". It may help Robby 
and/or Matthew figure out what the problem is if you do this on one of 
the computers that doesn't render the chants properly.

BTW, as a musician, I think your project is pretty awesome. :D

My pie-in-the-sky dream is that someday, someone will port LilyPond to 
Racket, because its abstraction mechanisms could be better. I'd love to 
try programmatically generating music (with constraints or some other 
kind of guidance), engraving it, and then playing it.

Anyway, good luck!

Neil ⊥

On 11/23/2012 05:39 PM, Robby Findler wrote:
> You could submit a PR. I'm the maintainer of the image library and the
> maintainer of the lower-level libraries that it depends on (which seem
> to be the ones where there might be a hope of finding a fix) also
> reads these messages.
> Robby
> On Fri, Nov 23, 2012 at 6:37 PM, Clement Erik Ferguson
> <clementraphael at gmail.com> wrote:
>> Thank you for the suggestion, but that didn't work on XP or Ubuntu. Should I
>> submit the issue to Racket's github? I'm new to programming and don't know
>> what the protocol is for things like this...
>> On Fri, Nov 23, 2012 at 4:32 PM, Robby Findler <robby at eecs.northwestern.edu>
>> wrote:
>>> Oh, I see. I'm sorry I don't know what is going wrong. Different
>>> versions of cairo/pango could be relevant, possibly.
>>> I doubt it is going to matter, but if you change the expression on
>>> line 932 in collects/mrlib/image-core.rkt:
>>>             (send dc draw-text (text-string np-atomic-shape)
>>>                   (real-part p)
>>>                   (imag-part p)
>>>                   #f 0 θ)
>>> by turning the #f into a #t, does that change anything?
>>> Robby
>>> On Fri, Nov 23, 2012 at 2:55 PM, Clement Erik Ferguson
>>> <clementraphael at gmail.com> wrote:
>>>> I'm sorry, I don't think I've explained the problem I'm having clearly.
>>>> I have fonts that I'm using that map latin characters to neumes for
>>>> byzantine chant music. So pressing "1" gives me a particular musical
>>>> symbol,
>>>> and "a" gives me another symbol. I am trying to use text/font to render
>>>> those symbols, so I call it with a "1" but I'm getting a "1" instead of
>>>> the
>>>> musical symbol on certain platforms. This method works fine on Ubuntu
>>>> 12.04
>>>> 32bit and a Debian system that another user tested it on (I'm not sure
>>>> of
>>>> the version info), but it isn't working on Windows XP and on Ubuntu
>>>> 12.10
>>>> 64bit.
>>>> If you go to https://github.com/muraiki/byzscribe and scroll down to the
>>>> picture, you can see what the output should look like. On platforms
>>>> where it
>>>> doesn't work, instead of getting the musical symbols I simply get the
>>>> textual string that should map to those symbols, such as 01a.
>>>> You can download the font package, which includes a PDF with a character
>>>> table, from here:
>>>> http://www.stanthonysmonastery.org/music/ByzMusicFonts.zip
>>>> The character table is EZ-CharacterTables.pdf
>>>> The other symbol fonts that I've tried work in the same way, although
>>>> instead of musical symbols they have other things like snowflakes and
>>>> shapes. Those aren't the fonts that I need to use, but I wanted to make
>>>> sure
>>>> that the problem didn't lie in the byzantine chant fonts. On platforms
>>>> where
>>>> the byzantine chant fonts don't work as expected, no other symbol fonts
>>>> work, either.
>>>> I'm sorry if this is a bit confusing. Thank you for your help!
>>>> On Fri, Nov 23, 2012 at 3:38 PM, Robby Findler
>>>> <robby at eecs.northwestern.edu>
>>>> wrote:
>>>>> If you want to use, say, α, then you need an actual α in the string,
>>>>> not
>>>>> an "a".
>>>>> I don't know how the dingbats work, but certainly that's how it works
>>>>> for characters that are in the unicode character set.
>>>>> (You can type those characters by using their LaTeX equivalents and
>>>>> then hitting control-\ or alt-\ (depending on the platform).)
>>>>> Robby
>>>>> On Fri, Nov 23, 2012 at 2:02 PM, Clement Erik Ferguson
>>>>> <clementraphael at gmail.com> wrote:
>>>>>> Now I'm experiencing the same problem in Ubuntu 12.10. No symbol
>>>>>> fonts
>>>>>> render when using text/font; I only get the latin text equivalent. I
>>>>>> tried
>>>>>> this using the Dingbats font built into Ubuntu along with custom
>>>>>> symbol
>>>>>> fonts I had downloaded. Both Dingbats and the other symbol fonts I
>>>>>> downloaded work fine in other programs.
>>>>>> The system where this did work correctly was an Ubuntu 12.04 machine
>>>>>> (running under a VM). The Ubuntu 12.10 machine I'm using now is a
>>>>>> fresh
>>>>>> OS
>>>>>> installation using the 64-bit binary downloaded from the Racket site.
>>>>>> Is anyone else using Ubuntu 12.10? Can you try running the following
>>>>>> code?
>>>>>> (require 2htdp/image)
>>>>>> (text/font "test" FONT-SIZE "black" "Dingbats" 'symbol 'normal
>>>>>> 'normal
>>>>>> #f)
>>>>>> This should render some triangles and a snowflake, not "test".
>>>>>> Thanks!
>>>>>> On Wed, Nov 21, 2012 at 1:54 PM, Robby Findler
>>>>>> <robby at eecs.northwestern.edu>
>>>>>> wrote:
>>>>>>> The text/font function ultimately just calls find-or-create-font
>>>>>>> with
>>>>>>> the font details and then draw-string on the dc<%> with the string,
>>>>>>> so
>>>>>>> I guess that this is either a problem at that level of the Racket
>>>>>>> GUI
>>>>>>> system, or something that is just different about how Windows works
>>>>>>> from other platforms. (Sorry I don't know the right answer here.)
>>>>>>> Robby
>>>>>>> On Wed, Nov 21, 2012 at 12:29 PM, Clement Erik Ferguson
>>>>>>> <clementraphael at gmail.com> wrote:
>>>>>>>> Hi all,
>>>>>>>> I'm a newcomer to Racket and I ran into a problem with the
>>>>>>>> text/font
>>>>>>>> function in 2htdp/image. stamourv on #racket helped me diagnose
>>>>>>>> this,
>>>>>>>> and it
>>>>>>>> seems to be a problem confined to Windows XP. When using text/font
>>>>>>>> with
>>>>>>>> a
>>>>>>>> symbol font like Wingdings or Symbol (standard symbol fonts
>>>>>>>> included
>>>>>>>> with
>>>>>>>> Windows) the character is not rendered. Instead, I get whatever
>>>>>>>> the
>>>>>>>> equivalent Roman character would be.
>>>>>>>> For instance:
>>>>>>>> (define testingfont
>>>>>>>>    (text/font "012abc" 36 "black"
>>>>>>>>               "Wingdings" 'default 'normal 'normal #f))
>>>>>>>> If I then type testingfont into the interactions window, instead
>>>>>>>> of
>>>>>>>> rendering a series of symbols I get the input string 012abc
>>>>>>>> instead.
>>>>>>>> I
>>>>>>>> also
>>>>>>>> tried using 'symbol instead of 'default. We tried the same code on
>>>>>>>> Debian
>>>>>>>> (stamourv) and Ubuntu (me) and it worked fine on those platforms.
>>>>>>>> I'm running Windows XP 32-bit, and I am using Racket 5.3.1.
>>>>>>>> Thanks!
>>>>>>>> ____________________
>>>>>>>>    Racket Users list:
>>>>>>>>    http://lists.racket-lang.org/users
> ____________________
>    Racket Users list:
>    http://lists.racket-lang.org/users

Posted on the users mailing list.