MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Problem with Rasterize[] on Strings

  • To: mathgroup at smc.vnet.net
  • Subject: [mg95139] Re: Problem with Rasterize[] on Strings
  • From: dh <dh at metrohm.com>
  • Date: Wed, 7 Jan 2009 04:13:43 -0500 (EST)
  • References: <gjsgbg$k2s$1@smc.vnet.net>


Hi Nathan,

mathematica does not know the size of the picture you want. From the manula:

"If no explicit size or resolution option settings are given, 

Rasterize[g,\[Ellipsis]] will rasterize g at the size and resolution it 

would normally be displayed in a notebook."

If you specify the ImageSize no wrapping will happen. E.g:

s2 = Style["A medium length string", FontSize -> 100,

    FontFamily -> "Times"];



Rasterize[s2, ImageResolution -> 300, ImageSize -> {800, 100}]



hope this helps, Daniel



Nathan Myhrvold wrote:

> I am trying to use Rasterize[] on strings, and I am running into some

> strange behavior.

> 

> This line works fine

> 

> s1 = Style["A medium length string", FontSize-> 10, FontFamily ->

> "Times"];

> 

> Rasterize[s1,  ImageResolution -> 100]

> 

> However, as I increase either the font size, or the image resolution,

> the text will wrap into two or more lines:

> 

> s2 = Style["A medium length string", FontSize-> 100, FontFamily ->

> "Times"];

> 

> Rasterize[s2,  ImageResolution -> 300]

> 

> The strange thing is that this depends on the window size!  If you make

> the window very narrow (or have a low resolution screen) then it will

> start wrapping sooner that it will with.  So depending on your monitor

> and graphics card, and what size window you use, you can find a

> combination that will wrap.

> 

> So if I stretch a Mathematica window across my dual-monitor set up, I

> can take the string s2 up to ImageResolution-> 192 before it wraps.

> With a small window it wraps at ImageResolution-> 90.

> 

> I think what is going on here is that the Mathematica front end is doing

> the rasterizing and it first lays out the string for the window.    If

> it needs to wrap, then it formats the string into two lines before it

> rasterizes.  The weird part is that the decision to format depends on

> the resolution even though the display does not.

> 

> So, even if s2 above displays correctly, and even if the result of

> Rasterize[s2,ImageResolution->300]  is displayed correctly (at 100 point

> font size) the intermediate calculation of whether there is enough space

> to rasterize somehow is done depending on window size.  I think this is

> a rather serious bug,  because it defeats the purpose of using

> ImageResolution higher than screen resolution.   Note that the same

> occurs for RasterSize->num   when num is bigger than your window, it

> wraps.

> 

> My question is this - how can I avoid this word wrapping?  There must be

> some way to do this!

> 

> One approach I have tried is to use Graphics inside Rasterize, i.e.

> 

> Rasterize[Graphics[Text[s2,{0,0},{-1,0}],ImageSize->{All, 200}] ,

> ImageResolution -> 300]

> 

> This has a couple problems:

> 

> -        I get lots of padding on both sides of the text.  I can't seem

> to control it with ImagePadding-> 0, PlotRangePadding-> 0

> 

> -        Yet if I don't make ImageSize very large, I have my string cut

> off.

> 

> Perhaps I am not making the right incantations to Graphics[] to get this

> to work properly.

> 

> Here is an additional question.  I am using Rasterize because I need to

> send documents to computers that don't have the same fonts I have.

> Normally I would use a PDF file.  However Mathematica does not seem to

> support the font embedding feature of PDF files.   If there was a way to

> enable font embedding do that I wouldn't need to Rasterize the text.

> 

> Nathan

> 

> This message and any attachments, may contain confidential and/or

> legally privileged information.  If you are not the intended recipient

> of the message by the original sender, please destroy it.   Message and

> attachments copyright (c) 2008, all rights reserved.  Any unauthorized

> dissemination, distribution or copying is strictly forbidden

> 




  • Prev by Date: Re: generalization of Bernoulli numbers to Pascal types
  • Next by Date: Re: Front end tokens and window maximization
  • Previous by thread: Re: Problem with Rasterize[] on Strings
  • Next by thread: loading autosaved package using Needs[]